Refactor Overlords documentation for improved clarity and formatting

- Updated the table formatting for better readability in the Overlords.md file.
- Ensured consistent alignment of columns in the jump table and WRAM description sections.
- Enhanced descriptions for clarity regarding overlord types and their respective data storage.
This commit is contained in:
scawful
2025-10-03 16:07:42 -04:00
parent 26d35364af
commit 84fa424871

View File

@@ -33,7 +33,7 @@ The core logic for the Overlord system resides in **Bank $09** of the vanilla RO
The jump table at `$09B7A8` is the key to customizing overlords. It contains pointers to the code for each of the 26 (1A) possible overlord types. The jump table at `$09B7A8` is the key to customizing overlords. It contains pointers to the code for each of the 26 (1A) possible overlord types.
| Address | Vanilla Label | Oracle of Secrets Usage | | Address | Vanilla Label | Oracle of Secrets Usage |
|---|---|---| |---------------|------------------------------|----------------------------------------------|
| `$09B7A8` | `Overlord01_PositionTarget` | Unused | | `$09B7A8` | `Overlord01_PositionTarget` | Unused |
| `$09B7AA` | `Overlord02_FullRoomCannons` | Unused | | `$09B7AA` | `Overlord02_FullRoomCannons` | Unused |
| `$09B7AC` | `Overlord03_VerticalCannon` | Unused | | `$09B7AC` | `Overlord03_VerticalCannon` | Unused |
@@ -48,14 +48,14 @@ The jump table at `$09B7A8` is the key to customizing overlords. It contains poi
Each of the five active overlords has its data stored in a series of arrays in WRAM, indexed by the overlord slot (0-4). Each of the five active overlords has its data stored in a series of arrays in WRAM, indexed by the overlord slot (0-4).
| Address | Description | | Address | Description |
|---|---| |-----------|-----------------------------------------------------------------------------------------------------------------------------------|
| `$0F90,X` | **Overlord Type:** The ID (1-26) that determines which logic to run via the jump table. | `$0F90,X` | **Overlord Type:** The ID (1-26) that determines which logic to run via the jump table. |
| `$0FA0,X` | **Overlord State/Action:** The current state of the overlord's internal state machine, similar to `SprAction` for normal sprites. | `$0FA0,X` | **Overlord State/Action:** The current state of the overlord's internal state machine, similar to `SprAction` for normal sprites. |
| `$0FB0,X` | **Overlord Timer A:** A general-purpose timer. | `$0FB0,X` | **Overlord Timer A:** A general-purpose timer. |
| `$0FC0,X` | **Overlord Timer B:** A second general-purpose timer. | `$0FC0,X` | **Overlord Timer B:** A second general-purpose timer. |
| `$0FD0,X` | **Overlord Timer C:** A third general-purpose timer. | `$0FD0,X` | **Overlord Timer C:** A third general-purpose timer. |
| `$0B08,X` | X-Coordinate (and other properties, loaded from room data). | `$0B08,X` | X-Coordinate (and other properties, loaded from room data). |
| `$0B10,X` | Y-Coordinate (and other properties, loaded from room data). | `$0B10,X` | Y-Coordinate (and other properties, loaded from room data). |
When a room is loaded, the `Underworld_LoadSingleOverlord` (`$09C35A`) or `Overworld_LoadSingleOverlord` (`$09C779`) routines read the overlord data defined in the level editor and populate these WRAM slots. When a room is loaded, the `Underworld_LoadSingleOverlord` (`$09C35A`) or `Overworld_LoadSingleOverlord` (`$09C779`) routines read the overlord data defined in the level editor and populate these WRAM slots.