Update docs

This commit is contained in:
Aetias
2024-04-12 16:20:15 +02:00
parent b0cd453331
commit 298024544f
4 changed files with 31 additions and 141 deletions
+5 -1
View File
@@ -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
+3 -3
View File
@@ -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.
+2 -2
View File
@@ -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
+21 -135
View File
@@ -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