Add sprite analysis documentation for various bosses and mini-bosses
- Created detailed documentation for the Kydrog Boss sprite, outlining its phases, behaviors, and mechanics. - Added analysis for the Manhandla sprite, including its transformation into Big Chuchu and phase management. - Documented the Octoboss sprite, highlighting its unique mechanics and interactions with a "brother" Octoboss. - Provided an overview of the Twinrova boss sprite, detailing its transformation and phase-based attacks. - Included analysis for the Vampire Bat mini-boss, emphasizing its enhanced behavior compared to standard Keese. - Documented the Wolfos mini-boss, focusing on its integration into a mask quest and unique pacification mechanics.
This commit is contained in:
@@ -89,4 +89,39 @@ This section details the layout of the save file memory.
|
||||
| `$7EF349` | `DekuMask` | Flag indicating if the player has obtained the Deku Mask. |
|
||||
| `$7EF34D` | `RocsFeather` | Flag indicating if the player has obtained Roc's Feather. |
|
||||
| `$7EF352` | `StoneMask` | Flag indicating if the player has obtained the Stone Mask. |
|
||||
| `$7EF358` | `WolfMask` | Flag indicating if the player has obtained the Wolf Mask. |
|
||||
| `$7EF358` | `WolfMask` | Flag indicating if the player has obtained the Wolf Mask. |
|
||||
|
||||
## 3. Custom Code and Data Layout (ROM Banks)
|
||||
|
||||
This section details the allocation of custom code and data within the ROM banks, as defined by `org` directives in the project's assembly files. The order of `incsrc` directives in `Oracle_main.asm` is crucial for the final ROM layout.
|
||||
|
||||
| Bank (Hex) | Address Range (PC) | Purpose / Contents |
|
||||
|------------|--------------------|--------------------------------------------------------|
|
||||
| $20 | `$208000` - `$20FFFF` | Expanded Music |
|
||||
| $21-$27 | | ZScream Reserved |
|
||||
| $28 | `$288000` - `$28FFFF` | ZSCustomOverworld data and code |
|
||||
| $29-$2A | | ZScream Reserved |
|
||||
| $2B | `$2B8000` - `$2BFFFF` | Items |
|
||||
| $2C | `$2C8000` - `$2CFFFF` | Underworld/Dungeons |
|
||||
| $2D | `$2D8000` - `$2DFFFF` | Menu |
|
||||
| $2E | `$2E8000` - `$2EFFFF` | HUD |
|
||||
| $2F | `$2F8000` - `$2FFFFF` | Expanded Message Bank |
|
||||
| $30 | `$308000` - `$30FFFF` | Sprites |
|
||||
| $31 | `$318000` - `$31FFFF` | Sprites |
|
||||
| $32 | `$328000` - `$32FFFF` | Sprites |
|
||||
| $33 | `$338000` - `$33FFFF` | Moosh Form Gfx and Palette |
|
||||
| $34 | `$348000` - `$34FFFF` | Time System, Custom Overworld Overlays, Gfx |
|
||||
| $35 | `$358000` - `$35FFFF` | Deku Link Gfx and Palette |
|
||||
| $36 | `$368000` - `$36FFFF` | Zora Link Gfx and Palette |
|
||||
| $37 | `$378000` - `$37FFFF` | Bunny Link Gfx and Palette |
|
||||
| $38 | `$388000` - `$38FFFF` | Wolf Link Gfx and Palette |
|
||||
| $39 | `$398000` - `$39FFFF` | Minish Link Gfx |
|
||||
| $3A | `$3A8000` - `$3AFFFF` | Mask Routines, Custom Ancillae (Deku Bubble) |
|
||||
| $3B | `$3B8000` - `$3BFFFF` | GBC Link Gfx |
|
||||
| $3C | | Unused |
|
||||
| $3D | | ZS Tile16 |
|
||||
| $3E | | LW ZS Tile32 |
|
||||
| $3F | | DW ZS Tile32 |
|
||||
| $40 | `$408000` - `$40FFFF` | LW World Map |
|
||||
| $41 | `$418000` - `$41FFFF` | DW World Map |
|
||||
| Patches | Various | Targeted modifications within vanilla ROM addresses | `Core/patches.asm`, `Util/item_cheat.asm` |
|
||||
@@ -129,11 +129,11 @@ With ZSOW v3, the vanilla sprite loading hook (`Overworld_LoadSprites` at `$09C4
|
||||
|
||||
### Conclusion & Solution
|
||||
|
||||
This is an **unresolved conflict**. The original day/night sprite logic is not being called by ZSOW's custom sprite loading routine, preventing day/night-specific sprites from appearing.
|
||||
This is a **partially resolved conflict**. The integration of day/night logic into ZSOW's custom sprite loading routine now correctly switches the active sprite set based on the time of day. However, the corresponding sprite graphics are not being loaded, leading to incorrect visual representation of sprites.
|
||||
|
||||
**Status:**
|
||||
- An initial attempt was made to integrate the `CheckIfNight` logic into ZSOW's `LoadOverworldSprites_Interupt` routine.
|
||||
- This attempt introduced severe regressions, including game crashes (`BRK`) and build failures.
|
||||
- The changes have been **reverted** to restore stability.
|
||||
- As a result, the conflict remains, and a new solution is needed to make the two systems compatible.
|
||||
- The logic to determine day/night and adjust the `GameState` for sprite set loading has been successfully integrated into `ZSCustomOverworld.asm` (via `ZSO_CheckIfNight` called from `LoadOverworldSprites_Interupt`).
|
||||
- This resolves the issue of day/night-specific sprites *appearing* (i.e., the correct sprite data is now referenced).
|
||||
- **New Issue:** The sprite *graphics* (tilesets) are not being updated to match the new day/night sprite sets. This results in "gargoyle" sprites (graphical corruption) for sprites that change between day and night.
|
||||
- A new solution is needed to ensure the correct sprite graphics are loaded when the sprite set changes due to day/night transitions.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user