Menu Hacking Document - Zeemis - 07-07-2011
This is a thread based on stuff I've found important enough to note. It's all relevant to hacking any part of the menu. This information is for those who know how to manipulate it. Most of the menu data follows a simple X and Y coordinate system, and most of this is copy and pasted from the C3 bank. I want to keep this organized for those who want a clean document dedicated to hacking the menu instead of siphoning through the banks for relevant data.
OAM = Object Attribute Memory
Remember to use the vertical scroll wheel to view all the data within the code window!
The entire backbone of the Menu SystemCode: $26's jump table. The entire backbone of the menu system is here.
C3/01DB: 711D (#$00, fade out)
C3/01DD: 7E1D (#$01, most, if not all screens call this as a transition to the next screen)
C3/01DF: 8B1D (#$02, both #$00 and #$01 call this to finish transition, then $27 is transfered to $26)
C3/01E1: 941D (#$03, )
C3/01E3: 8A1A (#$04, initiate the main menu)
C3/01E5: A41D (#$05, sustain the main menu)
C3/01E7: E81D (#$06, selecting one character in the main menu)
C3/01E9: D61A (#$07, inititate the item menu)
C3/01EB: F71E (#$08, sustain the item menu)
C3/01ED: 5B1B (#$09, initiate the skills menu)
C3/01EF: F41F (#$0A, sustain the skills menu)
C3/01F1: 461C (#$0B, initiate the status screen)
C3/01F3: F521 (#$0C, sustain the status screen)
C3/01F5: 7D1C (#$0D, initiate the config screen)
C3/01F7: C522 (#$0E, sustain the config screen)
C3/01F9: 0C24 (#$0F, browsing the order menu)
C3/01FB: 5324 (#$10, a character is selected in the order menu)
C3/01FD: A924 (#$11, switching characters in the order menu)
C3/01FF: 3725 (#$12, changing a character's row)
C3/0201: A01C (#$13, initiate the save screen)
C3/0203: 4025 (#$14, sustain the save screen)
C3/0205: E31C (#$15, inititate the "Erasing data. Okay?" menu)
C3/0207: 9D25 (#$16, sustain the "Erasing data. Okay?" menu)
C3/0209: F425 (#$17, "USE ARRANGE RARE")
C3/020B: 4127 (#$18, the rare item menu)
C3/020D: 7927 (#$19, an item is selected in the item menu)
C3/020F: E227 (#$1A, handle the preloading for Magic descriptions)
C3/0211: 8A28 (#$1B, handle the preloading for Lore descriptions)
C3/0213: AA28 (#$1C, the Dance menu)
C3/0215: BA28 (#$1D, the Rage menu)
C3/0217: D328 (#$1E, the Espers menu)
C3/0219: 9D25 (#$1F, )
C3/021B: 031D (#$20, initiate the SRAM load screen)
C3/021D: C229 (#$21, sustain the SRAM load screen)
C3/021F: 511D (#$22, initiate the "This data?" screen)
C3/0221: 2A2A (#$23, sustain the "This data?" screen)
C3/0223: 66B4 (#$24, initiate the shop menu)
C3/0225: 9BB4 (#$25, sustain the shop menu)
C3/0227: BDB4 (#$26, the buy menu)
C3/0229: 05B5 (#$27, deciding how many items to buy)
C3/022B: 0EB6 (#$28, bought an item, or can't buy any more)
C3/022D: 16B6 (#$29, the sell menu)
C3/022F: 76B6 (#$2A, deciding how many items to sell)
C3/0231: 52B7 (#$2B, sold an item)
C3/0233: E770 (#$2C, initiate the party selection screen)
C3/0235: 6871 (#$2D, sustain the party selection screen)
C3/0237: 0C72 (#$2E, selecting a character in the party selection screen)
C3/0239: E57A (#$2F, )
C3/023B: 257B (#$30, )
C3/023D: 257B (#$31, )
C3/023F: 257B (#$32, )
C3/0241: 7729 (#$33, handle the preloading for Blitz descriptions)
C3/0243: 3A29 (#$34, ??? selected an Esper that is equipped by someone else)
C3/0245: B81B (#$35, initiate the equip menu)
C3/0247: 2196 (#$36, sustain the equip menu)
C3/0249: B51E (#$37, selecting all characters in the main menu)
C3/024B: 321C (#$38, initiate the screen that displays the equipment of all members)
C3/024D: 6629 (#$39, sustain the screen that displays the equipment of all members)
C3/024F: 652A (#$3A, initiate the screen where you decide whom to use a spell on)
C3/0251: AE2A (#$3B, sustain the screen where you decide whom to use a spell on)
C3/0253: 1C2D (#$3C, returning to the magic list)
C3/0255: 782D (#$3D, selecting all characters with a spell)
C3/0257: 8E29 (#$3E, handle the preloading for SwdTech descriptions)
C3/0259: 37B4 (#$3F, initiate the SwdTech naming screen (unused in SNES version))
C3/025B: 37B4 (#$40, sustain the SwdTech naming screen (unused in SNES version))
C3/025D: 37B4 (#$41, browsing the list of characters for the SwdTech naming screen (unused in SNES version))
C3/025F: 1D63 (#$42, initiate the status screen for the party selection screen)
C3/0261: 3F63 (#$43, sustain the status screen for the party selection screen)
C3/0263: 1C7D (#$44, )
C3/0265: 1C7D (#$45, )
C3/0267: 1C7D (#$46, )
C3/0269: C242 (#$47, initiate the Arrange screen)
C3/026B: DF42 (#$48, sustain the Arrange screen)
C3/026D: AD46 (#$49, initiate the button menu (unused in SNES version))
C3/026F: AD46 (#$4A, sustain the button menu (unused in SNES version))
C3/0271: AD46 (#$4B, initiate the Controller menu)
C3/0273: CA46 (#$4C, sustain the Controller menu)
C3/0275: CE58 (#$4D, viewing an Esper's specifics)
C3/0277: 37B4 (#$4E, move to the second window of the SwdTech naming screen (unused in SNES version))
C3/0279: 37B4 (#$4F, move to the first window of the SwdTech naming screen (unused in SNES version))
C3/027B: 003A (#$50, move to the second window of the config menu)
C3/027D: 213A (#$51, move to the first window of the config menu)
C3/027F: 0A1A (#$52, )
C3/0281: FB19 (#$53, )
C3/0283: 191A (#$54, ??? exiting the save menu)
C3/0285: 8498 (#$55, selecting a body slot to fill)
C3/0287: CF98 (#$56, selecting a body slot to empty)
C3/0289: 0F99 (#$57, selecting an item to put in body slot)
C3/028B: 4B9E (#$58, initiate the relic menu)
C3/028D: B89E (#$59, "EQUIP REMOVE" in the relic menu)
C3/028F: FD9F (#$5A, selecting a relic slot to fill)
C3/0291: 97A0 (#$5B, selecting an item to put in relic slot)
C3/0293: 0AA1 (#$5C, selecting a relic slot to empty)
C3/0295: 2D65 (#$5D, initiate the character naming screen)
C3/0297: E689 (#$5E, viewing an item's statistics)
C3/0299: 6C65 (#$5F, sustain the character naming screen)
C3/029B: E865 (#$60, move to the second window of the character naming screen (unused in SNES version))
C3/029D: E865 (#$61, move to the first window of the character naming screen down (unused in SNES version))
C3/029F: 3843 (#$62, browsing the "Arrange" screen)
C3/02A1: 7643 (#$63, selecting a command in the "Arrange" screen)
C3/02A3: 8389 (#$64, viewing an item's specifics)
C3/02A5: E736 (#$65, shift the screen)
C3/02A7: FF79 (#$66, )
C3/02A9: F079 (#$67, )
C3/02AB: 0E7A (#$68, ??? related to party selection screen)
C3/02AD: 877A (#$69, ??? cannot exit party selection screen)
C3/02AF: A763 (#$6A, browsing the command list in Gogo's status screen)
C3/02B1: B422 (#$6B, )
C3/02B3: B19F (#$6C, notifications that modifications to relics have affected equipment)
C3/02B5: 1A1C (#$6D, automatically opening equip menu after changing relics)
C3/02B7: 261C (#$6E, removing all equipment, called only when relics alter equipment)
C3/02B9: 848A (#$6F, initiate the menu where you decide whom to use an item on)
C3/02BB: 968A (#$70, sustain the menu where you decide whom to use an item on)
C3/02BD: AAAC (#$71, initiate the main colosseum menu)
C3/02BF: DCAC (#$72, sustain the main colosseum menu)
C3/02C1: F8A9 (#$73, initiate screen for determining party order for final battle)
C3/02C3: 25AA (#$74, sustain screen for determining party order for final battle)
C3/02C5: B7AD (#$75, initiate the colosseum matchup screen)
C3/02C7: 0FAE (#$76, sustain the colosseum matchup screen)
C3/02C9: 351B (#$77, returning to the item list)
C3/02CB: 8AAD (#$78, jumps to data, dummy?)
C3/02CC: 7D9E (#$79, switching characters while selecting a relic slot to fill)
C3/02CF: 8B9E (#$7A, switching characters while selecting a relic slot to empty)
C3/02D1: 0000 (#$7B, a dummied entry)
C3/02D3: 0000 (#$7C, a dummied entry)
C3/02D5: 3171 (#$7D, returning to party selection screen from status screen)
C3/02D7: E51B (#$7E, switching characters in the equip menu while selecting a body slot to fill)
C3/02D9: F31B (#$7F, switching characters in the equip menu while selecting a body slot to empty)
C3/02DB: A5B4 LDA $B4
C3/02DD: D019 BNE $02F8
C3/02DF: AD8811 LDA $1188
C3/02E2: 8920 BIT #$20
C3/02E4: F012 BEQ $02F8
C3/02E6: AC8911 LDY $1189
C3/02E9: D00D BNE $02F8
C3/02EB: A9FF LDA #$FF
C3/02ED: 8527 STA $27 (exit the menu)
C3/02EF: 6426 STZ $26 (fade out, transition to above)
C3/02F1: A905 LDA #$05
C3/02F3: 8D0502 STA $0205
C3/02F6: 85B4 STA $B4
C3/02F8: 60 RTS
Position of Symbols, Words, etc.Code: C3/646F: CD7892AD9AADAEAC00 (position of and word "Status")
C3/6478: 6B3AC000 (position of and word "/")
C3/647C: AB3AC000 (position of and word "/")
C3/6480: 837FCD00 (position of and word "%")
C3/6484: 8388CD00 (position of and word "%")
C3/6488: 1D3A8B9500 (position of and word "LV")
C3/648D: 5D3A878F00 (position of and word "HP")
C3/6492: 9D3A8C8F00 (position of and word "MP")
C3/6497: CF7E95A2A0A8AB00 (position of and word "Vigor")
C3/649F: CF7F92AD9AA6A2A79A00 (position of and word "Stamina")
C3/64A9: 4F888C9AA0C58FB0AB00 (position of and word "Mag.Pwr")
C3/64B3: 697F84AF9A9D9EFFCD00 (position of and word "Evade%")
C3/64BD: 69888C81A5A89CA4CD00 (position of and word "MBlock%")
C3/64C7: DD7ED300 (position of and word "..")
C3/64CB: 5D7FD300 (position of and word "..")
C3/64CF: DD7FD300 (position of and word "..")
C3/64D3: 5D88D300 (position of and word "..")
C3/64D7: FB7ED300 (position of and word "..")
C3/64DB: 7B7FD300 (position of and word "..")
C3/64DF: 7B7ED300 (position of and word "..")
C3/64E3: FB7FD300 (position of and word "..")
C3/64E7: 7B88D300 (position of and word "..")
C3/64EB: 4F7F92A99E9E9D00 (position of and word "Speed")
C3/64F3: 697E819AADC58FB0AB00 (position of and word "Bat.Pwr")
C3/64FD: E97E839E9F9EA7AC9E00 (position of and word "Defense")
C3/6507: E97F8C9AA0C5839E9F00 (position of and word "Mag.Def")
C3/6511: 4D7C98A8AEABFF84B1A9C100 (position of and words "Your Exp:")
C3/651D: 4D7D85A8ABFFA59EAF9EA5FFAEA9C100 (position of and words "For level up:")
X position of characters in character select screen
Code: X position of characters in character select screen
C3/76CA: 18
C3/76CB: 34
C3/76CC: 50
C3/76CD: 6C
C3/76CE: 88
C3/76CF: A4
C3/76D0: C0
C3/76D1: DC
C3/76D2: 18
C3/76D3: 34
C3/76D4: 50
C3/76D5: 6C
C3/76D6: 88
C3/76D7: A4
C3/76D8: C0 (unless a character was put here during moving around, this is a blank spot)
C3/76D9: DC (unless a character was put here during moving around, this is a blank spot)
Y position of characters in character select screen
C3/76DA: 5C
C3/76DB: 5C
C3/76DC: 5C
C3/76DD: 5C
C3/76DE: 5C
C3/76DF: 5C
C3/76E0: 5C
C3/76E1: 5C
C3/76E2: 78
C3/76E3: 78
C3/76E4: 78
C3/76E5: 78
C3/76E6: 78
C3/76E7: 78
C3/76E8: 78 (unless a character was put here during moving around, this is a blank spot)
C3/76E9: 78 (unless a character was put here during moving around, this is a blank spot)
Finger positions in Save/Load Screen, etc.
Code: Data: finger positions in save/load screen
C3/15CC: 081C (X/Y position of finger in "new game" slot)
C3/15CE: 083C (X/Y position of finger in slot 1)
C3/15D0: 0874 (X/Y position of finger in slot 2)
C3/15D2: 08AC (X/Y position of finger in slot 3)
C3/15D4: A0E315 LDY #$15E3
C3/15D7: 4CFE05 JMP $05FE
C3/15DA: 202D07 JSR $072D
C3/15DD: A0E815 LDY #$15E8
C3/15E0: 4C4006 JMP $0640
Data: finger positioning for confirming save/load
C3/15E8: BF44
C3/15EA: BF54
RE: Menu Hacking Document - DjinnAndTonic - 07-08-2011
I don't suppose you found anything on how the Menu displays the PCs themselves? Specifically, how it assigns their palettes?
RE: Menu Hacking Document - SSJ Rick - 07-08-2011
thats what I want 2 know
|