How, tl;dr

Menu palette receives new routine based on the battle one that pipes in the Job colors.

How

Field value of the Job allows the Menu to load the correct Job outfit palette for the Wounded Wardrobe sprites! Using the work from weeks ago to finish up the beta version of this is a satisfying and unexpected twist. The project comes full circle with this… Maybe it proves that the more you experiment, the more you can learn to do?

<aside> πŸ“Œ

WW_v0.08_checkpoint.ips

</aside>

image.png

Full Breakdown by chief engineer Claude Code in orange!

Wounded Wardrobe v0.08 β€” Freespace Code Disassembly

Memory Map Context

SNES Address File Offset Contents
$E8:0000–$E8:527F $280000–$28527F WW wounded art: 110 blocks Γ— $C0 bytes (4bpp, 6 tiles each)
$E8:5280–$E8:5287 $285280–$285287 Padding (8 Γ— $00)
$E8:5288–$E8:52C3 $285288–$2852C3 Routine A: Battle slot-map (v0.05, 60 bytes)
$E8:52C4–$E8:52CF $2852C4–$2852CF Padding (12 Γ— $00)
$E8:52D0–$E8:52FD $2852D0–$2852FD Routine B: Menu KO hook (v0.06, 46 bytes)
$E8:52FE–$E8:52FF $2852FE–$2852FF Padding (2 Γ— $00)
$E8:5300–$E8:5331 $285300–$285331 Routine C: MVN bank dispatch (v0.07, 50 bytes)

Hook Sites (in game code banks)

These five patches in the original ROM redirect execution into the freespace:

Hook File Offset Bytes Effect
Battle sprite loader $012517 E2 20 22 88 52 E8 EA EA SEP #$20; JSL $E85288; NOPΓ—2
Phase-1 palette force $01B1C7 EA EA EA NOP out LDA #$15 (battle KO palette)
Menu KO tile loader $02D2BB 22 D0 52 E8 (EA Γ— 16) JSL $E852D0 + 16 NOPs
MVN bank dispatch $02D319 22 00 53 E8 80 21 EA JSL $E85300; BRA $D340; NOP
Menu palette force $02D47C EA EA NOP out LDA #$15 (menu KO palette)

Purpose: Compute (job Γ— 5 + hero) Γ— $C0 and store as the source pointer for the DMA that copies wounded tiles into VRAM.

Routine A β€” Battle Slot-Map ($E8:5288)