Add documentation

This commit is contained in:
Aetias
2023-12-27 13:26:42 +01:00
parent 7fb155ff77
commit f31bbc26fb
7 changed files with 422 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
# Actors
This file documents what is known about actors in the game.
- [Actor IDs](#actor-ids)
## Actor IDs
Many actors have a 4-character ID associated with it. This table shows all known IDs and their respective meanings or
translations. Feel free to contribute to this list!
> [!NOTE]
> These IDs will appear in memory in reverse order. This is because allocation IDs are often interpreted as 32-bit integers,
> and integers are stored in little-endian which effectively "reverses" the character order.
ID | Translation | Meaning
-------|-------------|---------
`NAVI` | Navi | Spirit of Courage (Ciela)
`FCNV` | Force Navi | Spirit of Power (Leaf)
`WSNV` | Wisdom Navi | Spirit of Wisdom (Neri)
+36
View File
@@ -0,0 +1,36 @@
# Inline assembler
- [Differences from standalone assembler](#differences-from-standalone-assembler)
## Differences from standalone assembler
Below is a list of differences between the inline assembler and the standalone disassembler. If something is missing, feel free
to contribute to the list!
- [Pool constants](#pool-constants)
- [Data sections](#data-sections)
- [Comments](#comments)
### Pool constants
There is no `.word` or other data directives in the inline assembler. Instead, use the built-in `dcd` instruction:
```asm
mov r0, [pc, #0]
bx lr
dcd 0x1234
```
This can also be written as:
```asm
lda 0x1234
bx lr
```
The built-in `lda` 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++.
### Comments
Inline assembly is handled by the compiler, so comments must be in C/C++ format. This means using `//` and `/* */` instead of
`#` or `;`.
Semicolons `;` instead mark the end of an instruction and are optional. You can use them to put multiple instructions on one
line, but we avoid doing it so that we can preserve as much similarity to standalone assembly as possible.
+141
View File
@@ -0,0 +1,141 @@
# Items
This file documents what is known about items in the game.
- [Item IDs](#item-ids)
## Item IDs
Might be inaccurate due to there being seemingly multiple IDs/enumerations for items. Feel free to contribute to this 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` | Circle 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` | ---
+15
View File
@@ -0,0 +1,15 @@
# Memory
This file documents what is known about memory management in the game.
- [Allocation IDs](#allocation-ids)
## Allocation IDs
Many heap-allocated objects have a 4-character ID associated with it. This table shows all known IDs and their respective
meanings or translations.
> [!NOTE]
> These IDs will appear in memory in reverse order. This is because allocation IDs are often interpreted as 32-bit integers,
> and integers are stored in little-endian which effectively "reverses" the character order.
ID | Translation | Meaning
-------|-------------|---------
`EXPH` | ? | SysObject
+67
View File
@@ -0,0 +1,67 @@
# Overlays
Below is a list of all the overlays and what we call them. Feel free to contribute to this list!
ID | Name
-----|----------------
`00` | ---
`01` | ---
`02` | ---
`03` | ---
`04` | ---
`05` | ---
`06` | ---
`07` | ---
`08` | ---
`09` | ---
`10` | ---
`11` | ---
`12` | ---
`13` | ---
`14` | ---
`15` | ---
`16` | ---
`17` | ---
`18` | ---
`19` | ---
`20` | ---
`21` | ---
`22` | ---
`23` | ---
`24` | ---
`25` | ---
`26` | ---
`27` | ---
`28` | ---
`29` | ---
`30` | ---
`31` | ---
`32` | ---
`33` | ---
`34` | ---
`35` | ---
`36` | ---
`37` | ---
`38` | ---
`39` | ---
`40` | ---
`41` | ---
`42` | ---
`43` | ---
`44` | ---
`45` | ---
`46` | ---
`47` | ---
`48` | ---
`49` | ---
`50` | ---
`51` | ---
`52` | ---
`53` | PlayerBoomerang
`54` | PlayerShovel
`55` | PlayerBomb
`56` | PlayerBow
`57` | PlayerRope
`58` | PlayerBombchu
`59` | PlayerHammer
`60` | ---
`61` | ---