From 298024544f24ce7141cdd958fed78563a84d2c00 Mon Sep 17 00:00:00 2001 From: Aetias Date: Fri, 12 Apr 2024 16:20:15 +0200 Subject: [PATCH] Update docs --- CONTRIBUTING.md | 6 +- docs/decompiling.md | 6 +- docs/inline_assembler.md | 4 +- docs/items.md | 156 ++++++--------------------------------- 4 files changed, 31 insertions(+), 141 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 24b454cc..428364a3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ - `asm/`: Non-decompiled assembly code - `ovXX/`: Code for overlay `XX` - `*.s`: Source file in assembly - - `include/*.inc`: External symbols imported by respective source file + - `*.inc`: External symbols imported by respective source file - `build/`: Build output - `arm9_linker_script.lcf`: Linker command file for ARM9 program, specifies the order to put code and data into the ROM - `arm9_objects.txt`: List of object files to pass to the linker @@ -30,10 +30,14 @@ - `src/`: Source C/C++ files - `tools/`: Tools for this project - `compress/`: Compresses code before it is put in the ROM + - `include/`: Common C code for multiple tools - `mwccarm/`: Compiler toolchain - `rom/`: Extracts and builds ROMs + - `gen_externs.py`: Generates `.inc` files, use `make gen_externs` to run it - `lcf.py`: Generates `arm9_linker_script.lcf` + - `m2ctx.py`: Generates context for decomp.me - `patch_mwcc.py`: Patches bugs in the toolchain + - `progress.py`: Computes decompilation progress - `requirements.txt`: Python libraries - `setup.py`: Sets up the project - `assets.txt`: The order of asset directories to put in the ROM diff --git a/docs/decompiling.md b/docs/decompiling.md index 74c3125e..34333d77 100644 --- a/docs/decompiling.md +++ b/docs/decompiling.md @@ -36,6 +36,6 @@ _0211bf50: .word data_ov09_0211f59c project. ## The Ghidra project -We use a shared Ghidra project to analyze the game and decompile functions. We can't give access to the Ghidra server just yet, -so come back here later for instructions on how to access it. - +We use a shared Ghidra project to analyze the game and decompile functions. To gain access to the project, install +[Ghidra version 10.2.3](https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_10.2.3_build) and request access +from @aetias on Discord. \ No newline at end of file diff --git a/docs/inline_assembler.md b/docs/inline_assembler.md index 80957121..a6489998 100644 --- a/docs/inline_assembler.md +++ b/docs/inline_assembler.md @@ -25,8 +25,8 @@ bx lr The built-in `ldconst` instruction will be replaced by an ARM load instruction and also append a pool constant to the function. ### Data sections -Directives such as `.section`, `.data` and `.bss` are not supported in the inline assembler. There might be a way to change -section with a `#pragma`, but there's no need to. Data should only be defined in standalone assembly or C/C++. +Directives such as `.section`, `.data` and `.bss` are not supported in the inline assembler. It's possible to change section +with a `#pragma`, but there's no need to. Data should only be defined in standalone assembly or C/C++. ### Comments Inline assembly is handled by the compiler, so comments must be in C/C++ format. This means using `//` and `/* */` instead of diff --git a/docs/items.md b/docs/items.md index e551c6f9..d4192f23 100644 --- a/docs/items.md +++ b/docs/items.md @@ -1,141 +1,27 @@ # Items This file documents what is known about items in the game. - [Item IDs](#item-ids) +- [Item flags](#item-flags) ## Item IDs -Might be inaccurate due to there being seemingly multiple IDs/enumerations for items. Feel free to contribute to this list! +See [Item.hpp](/include/Item/Item.hpp) for a list of known item IDs. Feel free to contribute to the list! - ID | Item --------|---------------- -`0x00` | Key -`0x01` | Key -`0x02` | Big Green Rupee -`0x03` | Oshus's Sword -`0x04` | Shield -`0x05` | --- -`0x06` | Yellow Force Gem -`0x07` | Bomb -`0x08` | Bow -`0x09` | Green Rupee -`0x0a` | Heart -`0x0b` | --- -`0x0c` | Boomerang -`0x0d` | Shovel -`0x0e` | Bombchu -`0x0f` | Boss Key -`0x10` | `rev` -`0x11` | --- -`0x12` | --- -`0x13` | Sea Chart -`0x14` | Sea Chart -`0x15` | Sea Chart -`0x16` | Sea Chart -`0x17` | --- -`0x18` | Blue Rupee -`0x19` | Red Rupee -`0x1a` | Big Red Rupee -`0x1b` | Gold Rupee -`0x1c` | Yellow Force Gem -`0x1d` | Red Force Gem -`0x1e` | Blue Force Gem -`0x1f` | Hammer -`0x20` | Grapple Hook -`0x21` | Square Crystal -`0x22` | Round Crystal -`0x23` | Triangle Crystal -`0x24` | `fp` -`0x25` | --- -`0x26` | Sun Key -`0x27` | --- -`0x28` | Quiver -`0x29` | Bomb Bag -`0x2a` | Bombchu Bag -`0x2b` | --- -`0x2c` | King's Key -`0x2d` | Power Gem -`0x2e` | Wisdom Gem -`0x2f` | Courage Gem -`0x30` | --- -`0x31` | --- -`0x32` | --- -`0x33` | --- -`0x34` | --- -`0x35` | --- -`0x36` | --- -`0x37` | --- -`0x38` | Ghost Key -`0x39` | `tic_tada` -`0x3a` | `tic_ohome` -`0x3b` | `tic_rare` -`0x3c` | `neckl` -`0x3d` | Salvage Arm -`0x3e` | --- -`0x3f` | Telescope -`0x40` | Notebook -`0x41` | Letter -`0x42` | Card -`0x43` | `marron` -`0x44` | Phantom Blade -`0x45` | --- -`0x46` | --- -`0x47` | --- -`0x48` | --- -`0x49` | --- -`0x4a` | --- -`0x4b` | --- -`0x4c` | --- -`0x4d` | --- -`0x4e` | --- -`0x4f` | --- -`0x50` | --- -`0x51` | --- -`0x52` | --- -`0x53` | --- -`0x54` | --- -`0x55` | --- -`0x56` | --- -`0x57` | --- -`0x58` | --- -`0x59` | --- -`0x5a` | --- -`0x5b` | --- -`0x5c` | --- -`0x5d` | --- -`0x5e` | --- -`0x5f` | --- -`0x60` | --- -`0x61` | --- -`0x62` | --- -`0x63` | --- -`0x64` | --- -`0x65` | --- -`0x66` | --- -`0x67` | --- -`0x68` | --- -`0x69` | --- -`0x6a` | --- -`0x6b` | --- -`0x6c` | --- -`0x6d` | --- -`0x6e` | --- -`0x6f` | --- -`0x70` | --- -`0x71` | --- -`0x72` | --- -`0x73` | --- -`0x74` | --- -`0x75` | --- -`0x76` | --- -`0x77` | --- -`0x78` | --- -`0x79` | --- -`0x7a` | --- -`0x7b` | --- -`0x7c` | --- -`0x7d` | --- -`0x7e` | --- -`0x7f` | --- -`0x80` | --- -`0x81` | --- -`0x82` | --- -`0x83` | --- +## Item flags +See [Item.hpp](/include/Item/Item.hpp) for a list of known item flags. Feel free to contribute to the list! + +The item flags are different from item IDs, as the flags are used as an index to the `mItemFlags` in the [`ItemManager`](/include/Item/ItemManager.hpp) +class. + +Interestingly, flags 0 through 10 are also the IDs of equipment items: + +0. Sword +1. Shield +2. Boomerang +3. Shovel +4. Bomb Bag +5. Bow +6. Grappling Hook +7. Bombchu Bag +8. Hammer +9. Potion A +10. Potion B