If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Final Fantasy VI/ROM map/Assembly C30: Difference between revisions
< Final Fantasy VI | ROM map
Jump to navigation
Jump to search
(assembly C30) |
m (Xkeeper moved page Final Fantasy VI:ROM map/Assembly C30 to Final Fantasy VI/ROM map/Assembly C30: normalize subpages and titles) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{subpage|game=Final Fantasy VI:ROM map}} | |||
==C3/0000 jump table== | |||
C3/0000: 4C1B00 JMP $001B (open main menu; from C0/C6F9, EE/03EB) | C3/0000: 4C1B00 JMP $001B (open main menu; from C0/C6F9, EE/03EB) | ||
C3/0003: 4C45A4 JMP $A445 | C3/0003: 4C45A4 JMP $A445 | ||
C3/0006: 4C24A4 JMP $A424 (timer resetting for input decoding; from C0/0053) | C3/0006: 4C24A4 JMP $A424 (timer resetting for input decoding; from C0/0053) | ||
C3/0009: 4C7AA4 JMP $A47A (decode joypad status register 1; from C0/056D, EE/0139, EE/03A6, EE/04FF) | C3/0009: 4C7AA4 JMP $A47A (decode joypad status register 1; from C0/056D, EE/0139, EE/03A6, EE/04FF) | ||
C3/000C: 4CC813 JMP $13C8 (adjust in-game time; from C0/024F, EE/A51E, EE/A73D, EE/A966) | C3/000C: 4CC813 JMP $13C8 (adjust in-game time; from C0/024F, EE/A51E, EE/A73D, EE/A966) | ||
C3/000F: 4CFE14 JMP $14FE (from C0/C4F0) | C3/000F: 4CFE14 JMP $14FE (from C0/C4F0) | ||
C3/0012: 4C1CC5 JMP $C51C (event command BA; from C0/BA3C) | C3/0012: 4C1CC5 JMP $C51C (event command BA; from C0/BA3C) | ||
C3/0015: 4CD296 JMP $96D2 (empties and fully equips a character; from C0/C6BC) | C3/0015: 4CD296 JMP $96D2 (empties and fully equips a character; from C0/C6BC) | ||
C3/0018: 4C7FD5 JMP $D57F (from EE/8ED8) | C3/0018: 4C7FD5 JMP $D57F (from EE/8ED8) | ||
==C3/001B main menu loop== | |||
C3/001B: C210 REP #$10 (16 bit index registers) | C3/001B: C210 REP #$10 (16 bit index registers) | ||
C3/001D: E220 SEP #$20 (8 bit memory/accum.) | C3/001D: E220 SEP #$20 (8 bit memory/accum.) | ||
Line 65: | Line 58: | ||
C3/0088: AC0602 LDY $0206 | C3/0088: AC0602 LDY $0206 | ||
C3/008B: 8C0102 STY $0201 | C3/008B: 8C0102 STY $0201 | ||
C3/008E: 220000C3 JSL $C30000 | C3/008E: 220000C3 JSL $C30000 this makes it a recursive call | ||
C3/0092: AD0F02 LDA $020F | C3/0092: AD0F02 LDA $020F | ||
C3/0095: 8D0102 STA $0201 | C3/0095: 8D0102 STA $0201 | ||
C3/0098: 9C0002 STZ $0200 | C3/0098: 9C0002 STZ $0200 | ||
C3/009B: 4C1B00 JMP $001B | C3/009B: 4C1B00 JMP $001B | ||
==C3/009E unknow== | |||
C3/009E: A906 LDA #$06 | C3/009E: A906 LDA #$06 | ||
C3/00A0: 8D0002 STA $0200 (BRA $007F...) | C3/00A0: 8D0002 STA $0200 (BRA $007F...) | ||
Line 83: | Line 76: | ||
C3/00BC: 4C1B00 JMP $001B | C3/00BC: 4C1B00 JMP $001B | ||
C3/00BF: 6B RTL | C3/00BF: 6B RTL | ||
==C3/00C0 unknow== | |||
C3/00C0: A95C LDA #$5C | C3/00C0: A95C LDA #$5C | ||
C3/00C2: 8D0015 STA $1500 | C3/00C2: 8D0015 STA $1500 | ||
Line 95: | Line 88: | ||
C3/00D9: 8D0715 STA $1507 | C3/00D9: 8D0715 STA $1507 | ||
C3/00DC: 60 RTS | C3/00DC: 60 RTS | ||
==C3/00E6 unknow== | |||
C3/00DD: 7B TDC | C3/00DD: 7B TDC | ||
C3/00DE: AD0002 LDA $0200 | C3/00DE: AD0002 LDA $0200 | ||
Line 101: | Line 94: | ||
C3/00E2: AA TAX | C3/00E2: AA TAX | ||
C3/00E3: 7CE600 JMP ($00E6,X) | C3/00E3: 7CE600 JMP ($00E6,X) | ||
==C3/00E6 pointers: related to event commands calls== | |||
C3/00E6: 1A01 (pressed X/menu, initiate the menu) | C3/00E6: 1A01 (pressed X/menu, initiate the menu) | ||
C3/00E8: B301 (used a Rename Card, or event command $98) | C3/00E8: B301 (used a Rename Card, or event command $98) | ||
Line 112: | Line 104: | ||
C3/00F4: 5201 (colliseum item selection) | C3/00F4: 5201 (colliseum item selection) | ||
C3/00F6: 6601 (party select screen for final battle sequence) | C3/00F6: 6601 (party select screen for final battle sequence) | ||
==C3/00F8 unknow== | |||
C3/00F8: 20FA68 JSR $68FA | C3/00F8: 20FA68 JSR $68FA | ||
C3/00FB: 201569 JSR $6915 | C3/00FB: 201569 JSR $6915 | ||
Line 124: | Line 116: | ||
C3/0114: 20876A JSR $6A87 (load font and menu graphics) | C3/0114: 20876A JSR $6A87 (load font and menu graphics) | ||
C3/0117: 4C873A JMP $3A87 | C3/0117: 4C873A JMP $3A87 | ||
==C3/011A init main menu== | |||
$0200 is #$00, initiate the main menu | $0200 is #$00, initiate the main menu | ||
C3/011A: A904 LDA #$04 | C3/011A: A904 LDA #$04 | ||
C3/011C: 8526 STA $26 (execute at C3/1A8A) | C3/011C: 8526 STA $26 (execute at C3/1A8A) | ||
C3/011E: 4CBA01 JMP $01BA (could use BRL instead) | C3/011E: 4CBA01 JMP $01BA (could use BRL instead) | ||
==C3/0121 invoke shop== | |||
$0200 is #$03, invoke a shop | $0200 is #$03, invoke a shop | ||
C3/0121: 20993F JSR $3F99 | C3/0121: 20993F JSR $3F99 | ||
Line 135: | Line 127: | ||
C3/0126: 8526 STA $26 (execute at C3/B466) | C3/0126: 8526 STA $26 (execute at C3/B466) | ||
C3/0128: 4CBA01 JMP $01BA (could use BRL instead) | C3/0128: 4CBA01 JMP $01BA (could use BRL instead) | ||
==C3/012B invoke party selection== | |||
$0200 is #$04, invoke party selection screen with number of groups | $0200 is #$04, invoke party selection screen with number of groups | ||
C3/012B: 20993F JSR $3F99 | C3/012B: 20993F JSR $3F99 | ||
Line 147: | Line 139: | ||
C3/013A: 848E STY $8E | C3/013A: 848E STY $8E | ||
C3/013C: 60 RTS | C3/013C: 60 RTS | ||
==C3/013D unknow== | |||
$0200 is #$05 | $0200 is #$05 | ||
C3/013D: 20993F JSR $3F99 | C3/013D: 20993F JSR $3F99 | ||
Line 154: | Line 146: | ||
C3/0145: 8526 STA $26 (execute at C3/7AE5) | C3/0145: 8526 STA $26 (execute at C3/7AE5) | ||
C3/0147: 8071 BRA $01BA | C3/0147: 8071 BRA $01BA | ||
==C3/0149 unknow== | |||
$0200 is #$06 | $0200 is #$06 | ||
C3/0149: 20993F JSR $3F99 | C3/0149: 20993F JSR $3F99 | ||
Line 160: | Line 152: | ||
C3/014E: 8526 STA $26 (execute at C3/B437) | C3/014E: 8526 STA $26 (execute at C3/B437) | ||
C3/0150: 8068 BRA $01BA | C3/0150: 8068 BRA $01BA | ||
==C3/0152 invoke Colosseum== | |||
$0200 is #$07, invoke colliseum item selection screen | $0200 is #$07, invoke colliseum item selection screen | ||
C3/0152: 20993F JSR $3F99 | C3/0152: 20993F JSR $3F99 | ||
Line 171: | Line 163: | ||
C3/0162: 8526 STA $26 (execute at C3/ACAA) | C3/0162: 8526 STA $26 (execute at C3/ACAA) | ||
C3/0164: 8054 BRA $01BA | C3/0164: 8054 BRA $01BA | ||
==C3/0166 invoke party selection for final battle== | |||
$0200 is #$08, invoke party select screen for the final battle | $0200 is #$08, invoke party select screen for the final battle | ||
C3/0166: 20993F JSR $3F99 | C3/0166: 20993F JSR $3F99 | ||
Line 177: | Line 169: | ||
C3/016B: 8526 STA $26 (execute at C3/A9F8, init final battle setup screen) | C3/016B: 8526 STA $26 (execute at C3/A9F8, init final battle setup screen) | ||
C3/016D: 804B BRA $01BA | C3/016D: 804B BRA $01BA | ||
==C3/016F unknow== | |||
$0200 is #$02, used when the loading screen is called | $0200 is #$02, used when the loading screen is called | ||
C3/016F: AFF17F30 LDA $307FF1 | C3/016F: AFF17F30 LDA $307FF1 | ||
Line 206: | Line 198: | ||
C3/01AE: 9C0502 STZ $0205 | C3/01AE: 9C0502 STZ $0205 | ||
C3/01B1: 8007 BRA $01BA | C3/01B1: 8007 BRA $01BA | ||
==C3/01B3 rename card code== | |||
$0200 is #$01, used a Rename Card or event command $98 | $0200 is #$01, used a Rename Card or event command $98 | ||
C3/01B3: 20993F JSR $3F99 | C3/01B3: 20993F JSR $3F99 | ||
C3/01B6: A95D LDA #$5D | C3/01B6: A95D LDA #$5D | ||
C3/01B8: 8526 STA $26 (execute at C3/652D) | C3/01B8: 8526 STA $26 (execute at C3/652D) | ||
==C3/01BA menu loop code== | |||
The menu loop code. Execute code based on the value of $26 | The menu loop code. Execute code based on the value of $26 | ||
C3/01BA: 201214 JSR $1412 (from C3/011E, C3/0128, C3/0135) | C3/01BA: 201214 JSR $1412 (from C3/011E, C3/0128, C3/0135) | ||
Line 229: | Line 221: | ||
C3/01D8: 6443 STZ $43 (eventually disable all 8 channels of HDMA) | C3/01D8: 6443 STZ $43 (eventually disable all 8 channels of HDMA) | ||
C3/01DA: 60 RTS | C3/01DA: 60 RTS | ||
==C3/01DB pointers: menu system== | |||
$26's jump table. The entire backbone of the menu system is here. | $26's jump table. The entire backbone of the menu system is here. | ||
C3/01DB: 711D (#$00, fade out) | C3/01DB: 711D (#$00, fade out) | ||
Line 359: | Line 351: | ||
C3/02D7: E51B (#$7E, switching characters in the equip menu while selecting a body slot to fill) | 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/02D9: F31B (#$7F, switching characters in the equip menu while selecting a body slot to empty) | ||
==C3/02DB unknow== | |||
C3/02DB: A5B4 LDA $B4 | C3/02DB: A5B4 LDA $B4 | ||
C3/02DD: D019 BNE $02F8 | C3/02DD: D019 BNE $02F8 | ||
Line 374: | Line 366: | ||
C3/02F6: 85B4 STA $B4 | C3/02F6: 85B4 STA $B4 | ||
C3/02F8: 60 RTS | C3/02F8: 60 RTS | ||
==C3/7FD9 main text drawing== | |||
Coming in: | Coming in: | ||
16 bit Y holds location in rom | 16 bit Y holds location in rom | ||
Line 406: | Line 397: | ||
C3/0323: 80ED BRA $0312 (loop and keep grabbing letters) | C3/0323: 80ED BRA $0312 (loop and keep grabbing letters) | ||
C3/0325: 60 RTS | C3/0325: 60 RTS | ||
==C3/0326 unknow== | |||
((Deleted function C3/0326 from FF6j goes here)) | ((Deleted function C3/0326 from FF6j goes here)) | ||
C3/0326: 84E7 STY $E7 (from C3/171A, C3/3A9E, C3/3ABA, C3/3AD6, C3/3AF2) | C3/0326: 84E7 STY $E7 (from C3/171A, C3/3A9E, C3/3ABA, C3/3AD6, C3/3AF2) | ||
Line 421: | Line 412: | ||
C3/033E: E220 SEP #$20 (8 bit memory/accum.) | C3/033E: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0340: 60 RTS | C3/0340: 60 RTS | ||
==C3/0341 draw a window== | |||
Draw a window, 4 sides. 16-bit Y holds the location in C3 of where | Draw a window, 4 sides. 16-bit Y holds the location in C3 of where | ||
the window data is. The first two bytes are the starting location | the window data is. The first two bytes are the starting location | ||
Line 454: | Line 445: | ||
C3/0372: E220 SEP #$20 (8 bit memory/accum.) | C3/0372: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0374: 60 RTS | C3/0374: 60 RTS | ||
==C3/0375 unknow== | |||
C3/0375: 20A303 JSR $03A3 | C3/0375: 20A303 JSR $03A3 | ||
C3/0378: A600 LDX $00 | C3/0378: A600 LDX $00 | ||
Line 475: | Line 466: | ||
C3/0396: D0E7 BNE $037F | C3/0396: D0E7 BNE $037F | ||
C3/0398: 4CBB03 JMP $03BB | C3/0398: 4CBB03 JMP $03BB | ||
==C3/039B pointers== | |||
C3/039B: D103 | C3/039B: D103 | ||
C3/039D: DB03 | C3/039D: DB03 | ||
C3/039F: E803 | C3/039F: E803 | ||
C3/03A1: F503 | C3/03A1: F503 | ||
==C3/03A3 unknow== | |||
C3/03A3: A400 LDY $00 | C3/03A3: A400 LDY $00 | ||
C3/03A5: 200804 JSR $0408 | C3/03A5: 200804 JSR $0408 | ||
Line 491: | Line 481: | ||
C3/03B7: 86E0 STX $E0 | C3/03B7: 86E0 STX $E0 | ||
C3/03B9: 806D BRA $0428 | C3/03B9: 806D BRA $0428 | ||
==C3/03BB unknow== | |||
C3/03BB: 200804 JSR $0408 | C3/03BB: 200804 JSR $0408 | ||
C3/03BE: AF4D9F7E LDA $7E9F4D | C3/03BE: AF4D9F7E LDA $7E9F4D | ||
Line 500: | Line 490: | ||
C3/03CD: 86E0 STX $E0 | C3/03CD: 86E0 STX $E0 | ||
C3/03CF: 8057 BRA $0428 | C3/03CF: 8057 BRA $0428 | ||
==C3/03D1 unknow== | |||
C3/03D1: 200204 JSR $0402 (from C3/039B) | C3/03D1: 200204 JSR $0402 (from C3/039B) | ||
C3/03D4: 200E04 JSR $040E | C3/03D4: 200E04 JSR $040E | ||
C3/03D7: 64E0 STZ $E0 | C3/03D7: 64E0 STZ $E0 | ||
C3/03D9: 804D BRA $0428 | C3/03D9: 804D BRA $0428 | ||
==C3/03DB unknow== | |||
C3/03DB: 200204 JSR $0402 (from C3/039D) | C3/03DB: 200204 JSR $0402 (from C3/039D) | ||
C3/03DE: 201B04 JSR $041B | C3/03DE: 201B04 JSR $041B | ||
Line 511: | Line 501: | ||
C3/03E4: 86E0 STX $E0 | C3/03E4: 86E0 STX $E0 | ||
C3/03E6: 8040 BRA $0428 | C3/03E6: 8040 BRA $0428 | ||
==C3/03E8 unknow== | |||
C3/03E8: 200204 JSR $0402 (from C3/039F) | C3/03E8: 200204 JSR $0402 (from C3/039F) | ||
C3/03EB: 200E04 JSR $040E | C3/03EB: 200E04 JSR $040E | ||
Line 517: | Line 507: | ||
C3/03F1: 86E0 STX $E0 | C3/03F1: 86E0 STX $E0 | ||
C3/03F3: 8033 BRA $0428 | C3/03F3: 8033 BRA $0428 | ||
==C3/03F5 unknow== | |||
C3/03F5: 200204 JSR $0402 (from C3/03A1) | C3/03F5: 200204 JSR $0402 (from C3/03A1) | ||
C3/03F8: 201B04 JSR $041B | C3/03F8: 201B04 JSR $041B | ||
Line 523: | Line 513: | ||
C3/03FE: 86E0 STX $E0 | C3/03FE: 86E0 STX $E0 | ||
C3/0400: 8026 BRA $0428 | C3/0400: 8026 BRA $0428 | ||
==C3/0402 unknow== | |||
C3/0402: A20300 LDX #$0003 | C3/0402: A20300 LDX #$0003 | ||
C3/0405: 86F5 STX $F5 | C3/0405: 86F5 STX $F5 | ||
C3/0407: 60 RTS | C3/0407: 60 RTS | ||
==C3/0408 unknow== | |||
C3/0408: A20100 LDX #$0001 (from C3/03A5, C3/03BB) | C3/0408: A20100 LDX #$0001 (from C3/03A5, C3/03BB) | ||
C3/040B: 86F5 STX $F5 | C3/040B: 86F5 STX $F5 | ||
C3/040D: 60 RTS | C3/040D: 60 RTS | ||
==C3/040E unknow== | |||
C3/040E: AF419F7E LDA $7E9F41 (from C3/03D4, C3/03EB) | C3/040E: AF419F7E LDA $7E9F41 (from C3/03D4, C3/03EB) | ||
C3/0412: 85E3 STA $E3 | C3/0412: 85E3 STA $E3 | ||
Line 537: | Line 527: | ||
C3/0418: 85E5 STA $E5 | C3/0418: 85E5 STA $E5 | ||
C3/041A: 60 RTS | C3/041A: 60 RTS | ||
==C3/041B unknow== | |||
C3/041B: AF459F7E LDA $7E9F45 (from C3/03DE, C3/03F8) | C3/041B: AF459F7E LDA $7E9F45 (from C3/03DE, C3/03F8) | ||
C3/041F: 85E3 STA $E3 | C3/041F: 85E3 STA $E3 | ||
Line 543: | Line 533: | ||
C3/0425: 85E5 STA $E5 | C3/0425: 85E5 STA $E5 | ||
C3/0427: 60 RTS | C3/0427: 60 RTS | ||
==C3/0428 unknow== | |||
C3/0428: A600 LDX $00 (from C3/03B9, C3/03CF, C3/03D9, C3/03E6, C3/03F3, C3/0400) | C3/0428: A600 LDX $00 (from C3/03B9, C3/03CF, C3/03D9, C3/03E6, C3/03F3, C3/0400) | ||
C3/042A: A5E3 LDA $E3 | C3/042A: A5E3 LDA $E3 | ||
Line 568: | Line 558: | ||
C3/044B: 97EB STA [$EB],Y | C3/044B: 97EB STA [$EB],Y | ||
C3/044D: 60 RTS | C3/044D: 60 RTS | ||
==C3/044E data== | |||
C3/044E: 8001 | C3/044E: 8001 | ||
C3/0450: 8101 | C3/0450: 8101 | ||
Line 598: | Line 587: | ||
C3/0482: 9801 | C3/0482: 9801 | ||
C3/0484: 9B01 | C3/0484: 9B01 | ||
==C3/0486 buffer-clipping functions== | |||
Following are several buffer-clipping functions. | Following are several buffer-clipping functions. | ||
I believe they basically print from the first position | I believe they basically print from the first position | ||
Line 650: | Line 639: | ||
C3/04DD: D0F1 BNE $04D0 | C3/04DD: D0F1 BNE $04D0 | ||
C3/04DF: 60 RTS | C3/04DF: 60 RTS | ||
==C3/04E0 unknow== | |||
This calls the function below here, then any leading zeros | This calls the function below here, then any leading zeros | ||
are converted to spaces. A zero in the third position | are converted to spaces. A zero in the third position | ||
Line 666: | Line 655: | ||
C3/04F6: D0F0 BNE $04E8 | C3/04F6: D0F0 BNE $04E8 | ||
C3/04F8: 60 RTS | C3/04F8: 60 RTS | ||
==C3/04F9 convert number for display: 3 digits== | |||
Takes a number from A (which is put into $E0 internally) | Takes a number from A (which is put into $E0 internally) | ||
and converts it into a number up to 3 digits in decimal text. | and converts it into a number up to 3 digits in decimal text. | ||
Line 697: | Line 686: | ||
C3/0528: D0D8 BNE $0502 | C3/0528: D0D8 BNE $0502 | ||
C3/052A: 60 RTS | C3/052A: 60 RTS | ||
==C3/052B unknow== | |||
Data (for decimal place-values) | Data (for decimal place-values) | ||
C3/052B: 64 (100) | C3/052B: 64 (100) | ||
C3/052C: 0A (10) | C3/052C: 0A (10) | ||
C3/052D: 01 (1) | C3/052D: 01 (1) | ||
==C3/052E convert number for display: 5 digits== | |||
Takes a number from $F3 and $F4 (or 16-bit $F3 if you prefer to | Takes a number from $F3 and $F4 (or 16-bit $F3 if you prefer to | ||
say that) and converts it to a number up to 5 digits in decimal | say that) and converts it to a number up to 5 digits in decimal | ||
Line 746: | Line 735: | ||
C3/0575: D0F0 BNE $0567 | C3/0575: D0F0 BNE $0567 | ||
C3/0577: 60 RTS | C3/0577: 60 RTS | ||
==C3/0578 data== | |||
C3/0578: 1027 (10000) | C3/0578: 1027 (10000) | ||
C3/057A: E803 (1000) | C3/057A: E803 (1000) | ||
Line 753: | Line 741: | ||
C3/057E: 0A00 (10) | C3/057E: 0A00 (10) | ||
C3/0580: 0100 (1) | C3/0580: 0100 (1) | ||
==C3/0582 unknow== | |||
C3/0582: 64F4 STZ $F4 | C3/0582: 64F4 STZ $F4 | ||
C3/0584: A908 LDA #$08 | C3/0584: A908 LDA #$08 | ||
Line 799: | Line 787: | ||
C3/05DB: D0F0 BNE $05CD | C3/05DB: D0F0 BNE $05CD | ||
C3/05DD: 60 RTS | C3/05DD: 60 RTS | ||
==C3/05DE data== | |||
In case this wasn't obvious from the others, here ya go: | In case this wasn't obvious from the others, here ya go: | ||
C3/05DE: 8096 (10000000) | C3/05DE: 8096 (10000000) | ||
Line 818: | Line 806: | ||
C3/05FA: 0000 | C3/05FA: 0000 | ||
C3/05FC: 0000 | C3/05FC: 0000 | ||
==C3/05FE hotspot loading function== | |||
C3/05FE: A9C3 LDA #$C3 | C3/05FE: A9C3 LDA #$C3 | ||
C3/0600: 85ED STA $ED | C3/0600: 85ED STA $ED | ||
Line 838: | Line 825: | ||
C3/061B: E220 SEP #$20 (8 bit memory/accum.) | C3/061B: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/061D: 60 RTS | C3/061D: 60 RTS | ||
==C3/061E unknow== | |||
C3/061E: 7B TDC (set A to 0) | C3/061E: 7B TDC (set A to 0) | ||
C3/061F: A8 TAY (set Y to 0) | C3/061F: A8 TAY (set Y to 0) | ||
Line 851: | Line 838: | ||
C3/062D: D0F1 BNE $0620 | C3/062D: D0F1 BNE $0620 | ||
C3/062F: 60 RTS | C3/062F: 60 RTS | ||
==C3/0630 unknow== | |||
C3/0630: 84E7 STY $E7 | C3/0630: 84E7 STY $E7 | ||
C3/0632: A9C3 LDA #$C3 | C3/0632: A9C3 LDA #$C3 | ||
C3/0634: 85E9 STA $E9 | C3/0634: 85E9 STA $E9 | ||
C3/0636: 60 RTS | C3/0636: 60 RTS | ||
==C3/0637 unknow== | |||
C3/0637: 203006 JSR $0630 | C3/0637: 203006 JSR $0630 | ||
C3/063A: 205006 JSR $0650 | C3/063A: 205006 JSR $0650 | ||
C3/063D: 4CC506 JMP $06C5 | C3/063D: 4CC506 JMP $06C5 | ||
==C3/0640 finger positioning decoder== | |||
Finger positioning decoding function! | Finger positioning decoding function! | ||
C3/0640: 203006 JSR $0630 | C3/0640: 203006 JSR $0630 | ||
C3/0643: 207706 JSR $0677 | C3/0643: 207706 JSR $0677 | ||
C3/0646: 807D BRA $06C5 | C3/0646: 807D BRA $06C5 | ||
==C3/0648 unknow== | |||
C3/0648: 203006 JSR $0630 | C3/0648: 203006 JSR $0630 | ||
C3/064B: 209E06 JSR $069E | C3/064B: 209E06 JSR $069E | ||
C3/064E: 8075 BRA $06C5 | C3/064E: 8075 BRA $06C5 | ||
==C3/0650 unknow== | |||
C3/0650: 8B PHB | C3/0650: 8B PHB | ||
C3/0651: A900 LDA #$00 | C3/0651: A900 LDA #$00 | ||
Line 889: | Line 876: | ||
C3/0675: AB PLB | C3/0675: AB PLB | ||
C3/0676: 60 RTS | C3/0676: 60 RTS | ||
==C3/0677 unknow== | |||
C3/0677: 8B PHB | C3/0677: 8B PHB | ||
C3/0678: A900 LDA #$00 | C3/0678: A900 LDA #$00 | ||
Line 909: | Line 896: | ||
C3/069C: AB PLB | C3/069C: AB PLB | ||
C3/069D: 60 RTS | C3/069D: 60 RTS | ||
==C3/069E unknow== | |||
C3/069E: 8B PHB | C3/069E: 8B PHB | ||
C3/069F: A900 LDA #$00 | C3/069F: A900 LDA #$00 | ||
Line 929: | Line 916: | ||
C3/06C3: AB PLB | C3/06C3: AB PLB | ||
C3/06C4: 60 RTS | C3/06C4: 60 RTS | ||
==C3/06C5 unknow== | |||
C3/06C5: 8B PHB | C3/06C5: 8B PHB | ||
C3/06C6: A900 LDA #$00 | C3/06C6: A900 LDA #$00 | ||
Line 987: | Line 974: | ||
C3/072B: AB PLB | C3/072B: AB PLB | ||
C3/072C: 60 RTS | C3/072C: 60 RTS | ||
==C3/072D move and update finger position== | |||
Used by finger positioning data, determine current position | Used by finger positioning data, determine current position | ||
and move to a new position based on direction pressed | and move to a new position based on direction pressed | ||
Line 1,056: | Line 1,043: | ||
C3/07AC: 20A30E JSR $0EA3 | C3/07AC: 20A30E JSR $0EA3 | ||
C3/07AF: 60 RTS | C3/07AF: 60 RTS | ||
==C3/07B0 OAM initial routine== | |||
OAM initiating routine for hotspots | OAM initiating routine for hotspots | ||
C3/07B0: A901 LDA #$01 | C3/07B0: A901 LDA #$01 | ||
Line 1,064: | Line 1,051: | ||
C3/07B8: AA TAX | C3/07B8: AA TAX | ||
C3/07B9: 7CBC07 JMP ($07BC,X) | C3/07B9: 7CBC07 JMP ($07BC,X) | ||
==C3/07BC data== | |||
C3/07BC: C007 | C3/07BC: C007 | ||
C3/07BE: DC07 | C3/07BE: DC07 | ||
==C3/07C0 unknow== | |||
C3/07C0: A62D LDX $2D | C3/07C0: A62D LDX $2D | ||
C3/07C3: C220 REP #$20 | C3/07C3: C220 REP #$20 | ||
Line 1,098: | Line 1,085: | ||
C3/07FD: 18 CLC (flag that this queue can be removed) | C3/07FD: 18 CLC (flag that this queue can be removed) | ||
C3/07FE: 60 RTS | C3/07FE: 60 RTS | ||
==C3/07FF unknow== | |||
C3/07FF: AA TAX | C3/07FF: AA TAX | ||
C3/0800: 7C0308 JMP ($0803,X) | C3/0800: 7C0308 JMP ($0803,X) | ||
==C3/0803 pointers== | |||
C3/0803: 0B08 | C3/0803: 0B08 | ||
C3/0805: 2B08 | C3/0805: 2B08 | ||
C3/0807: 0B08 | C3/0807: 0B08 | ||
C3/0809: 6708 | C3/0809: 6708 | ||
==C3/080B unknow== | |||
C3/080B: A62D LDX $2D (from C3/0803, C3/0807) | C3/080B: A62D LDX $2D (from C3/0803, C3/0807) | ||
C3/080D: A901 LDA #$01 | C3/080D: A901 LDA #$01 | ||
Line 1,153: | Line 1,140: | ||
C3/0865: 18 CLC | C3/0865: 18 CLC | ||
C3/0866: 60 RTS | C3/0866: 60 RTS | ||
==C3/0867 unknow== | |||
C3/0867: A546 LDA $46 (from C3/0809) | C3/0867: A546 LDA $46 (from C3/0809) | ||
C3/0869: 8901 BIT #$01 | C3/0869: 8901 BIT #$01 | ||
Line 1,172: | Line 1,159: | ||
C3/088B: 38 SEC | C3/088B: 38 SEC | ||
C3/088C: 60 RTS | C3/088C: 60 RTS | ||
==C3/088D oam data: finger== | |||
C3/088D: 90 08 | |||
C3/088D: | |||
C3/088F: FE (???) | C3/088F: FE (???) | ||
C3/0890: 01 (one set of data) | C3/0890: 01 (one set of data) | ||
C3/0891: 80 00 00 3E (position 80,0, 0 is ?, finger) | |||
C3/0891: | |||
C3/0895: 00 (no data) | C3/0895: 00 (no data) | ||
==C3/0896 blink effect for finger== | |||
Cycle to create blinking effect for finger | Cycle to create blinking effect for finger | ||
C3/0896: 9008 | C3/0896: 9008 | ||
Line 1,191: | Line 1,173: | ||
C3/089C: 9008 | C3/089C: 9008 | ||
C3/089E: FF | C3/089E: FF | ||
==C3/089F unknow== | |||
C3/089F: 7B TDC | C3/089F: 7B TDC | ||
C3/08A0: AA TAX | C3/08A0: AA TAX | ||
Line 1,220: | Line 1,202: | ||
C3/08CE: D0D1 BNE $08A1 | C3/08CE: D0D1 BNE $08A1 | ||
C3/08D0: 60 RTS | C3/08D0: 60 RTS | ||
==C3/08D1 unknow== | |||
C3/08D1: AA TAX | C3/08D1: AA TAX | ||
C3/08D2: 7CD508 JMP ($08D5,X) | C3/08D2: 7CD508 JMP ($08D5,X) | ||
==C3/08D5 pointers== | |||
C3/08D5: D908 | C3/08D5: D908 | ||
C3/08D7: F908 | C3/08D7: F908 | ||
==C3/08D9 unknow== | |||
C3/08D9: A62D LDX $2D | C3/08D9: A62D LDX $2D | ||
C3/08DB: A908 LDA #$08 | C3/08DB: A908 LDA #$08 | ||
Line 1,250: | Line 1,232: | ||
C3/0906: 18 CLC (this queue can be removed) | C3/0906: 18 CLC (this queue can be removed) | ||
C3/0907: 60 RTS | C3/0907: 60 RTS | ||
==C3/0908 unknow== | |||
C3/0908: A9C0 LDA #$C0 | C3/0908: A9C0 LDA #$C0 | ||
C3/090A: 0446 TSB $46 | C3/090A: 0446 TSB $46 | ||
Line 1,263: | Line 1,245: | ||
C3/091C: 1446 TRB $46 | C3/091C: 1446 TRB $46 | ||
C3/091E: 60 RTS | C3/091E: 60 RTS | ||
==C3/091F unknow== | |||
C3/091F: A903 LDA #$03 (from C3/1B14, C3/20B5, C3/2132, C3/2170, C3/21A8, C3/265A, C3/591E, C3/89DE, C3/BC05) | C3/091F: A903 LDA #$03 (from C3/1B14, C3/20B5, C3/2132, C3/2170, C3/21A8, C3/265A, C3/591E, C3/89DE, C3/BC05) | ||
C3/0921: A04709 LDY #$0947 | C3/0921: A04709 LDY #$0947 | ||
Line 1,272: | Line 1,254: | ||
C3/0930: E220 SEP #$20 (8 bit memory/accum.) | C3/0930: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0932: 60 RTS | C3/0932: 60 RTS | ||
==C3/0933 unknow== | |||
C3/0933: A903 LDA #$03 (only from C3/9B0F) | C3/0933: A903 LDA #$03 (only from C3/9B0F) | ||
C3/0935: A04709 LDY #$0947 | C3/0935: A04709 LDY #$0947 | ||
Line 1,281: | Line 1,263: | ||
C3/0944: E220 SEP #$20 (8 bit memory/accum.) | C3/0944: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0946: 60 RTS | C3/0946: 60 RTS | ||
==C3/0947 unknow== | |||
C3/0947: AA TAX | C3/0947: AA TAX | ||
C3/0948: 7C4B09 JMP ($094B,X) | C3/0948: 7C4B09 JMP ($094B,X) | ||
==C3/094B pointers== | |||
C3/094B: 4F09 | C3/094B: 4F09 | ||
C3/094D: 6A09 | C3/094D: 6A09 | ||
==C3/094F unknow== | |||
C3/094F: A62D LDX $2D | C3/094F: A62D LDX $2D | ||
C3/0951: C220 REP #$20 (16 bit memory/accum.) | C3/0951: C220 REP #$20 (16 bit memory/accum.) | ||
Line 1,351: | Line 1,333: | ||
C3/09D9: 18 CLC (this queue can be removed) | C3/09D9: 18 CLC (this queue can be removed) | ||
C3/09DA: 60 RTS | C3/09DA: 60 RTS | ||
==C3/09DB pointers: oam arrow cycle== | |||
C3/09DB: E309 | C3/09DB: E309 | ||
C3/09DD: EC09 | C3/09DD: EC09 | ||
C3/09DF: F509 | C3/09DF: F509 | ||
C3/09E1: E309 | C3/09E1: E309 | ||
==C3/09E3 oam related== | |||
OAM format: pointer, timer, pointer, timer, pointer, end | OAM format: pointer, timer, pointer, timer, pointer, end | ||
C3/09E3: FE09 | C3/09E3: FE09 | ||
Line 1,379: | Line 1,360: | ||
C3/09FB: FE09 | C3/09FB: FE09 | ||
C3/09FD: FF | C3/09FD: FF | ||
==C3/09FE oam arrow position== | |||
Data: OAM arrow position....GENERAL PURPOSE! format is X Y state sprite, X and Y are relative to starting and current positions | Data: OAM arrow position....GENERAL PURPOSE! format is X Y state sprite, X and Y are relative to starting and current positions | ||
C3/09FE: 02 (no idea...) | C3/09FE: 02 (no idea...) | ||
Line 1,400: | Line 1,381: | ||
C3/0A1A: 0000023E (upper arrow) (position 0,0, disabled, arrow pointing up) | C3/0A1A: 0000023E (upper arrow) (position 0,0, disabled, arrow pointing up) | ||
C3/0A1E: 000812BE (lower arrow) (position 0,8, enabled, arrow pointing down) | C3/0A1E: 000812BE (lower arrow) (position 0,8, enabled, arrow pointing down) | ||
==C3/0A22 unknow== | |||
C3/0A22: A903 LDA #$03 | C3/0A22: A903 LDA #$03 | ||
C3/0A24: A0120B LDY #$0B12 | C3/0A24: A0120B LDY #$0B12 | ||
Line 1,421: | Line 1,402: | ||
C3/0A49: AB PLB | C3/0A49: AB PLB | ||
C3/0A4A: 60 RTS | C3/0A4A: 60 RTS | ||
==C3/0A4B unknow== | |||
C3/0A4B: A903 LDA #$03 | C3/0A4B: A903 LDA #$03 | ||
C3/0A4D: A0120B LDY #$0B12 | C3/0A4D: A0120B LDY #$0B12 | ||
Line 1,442: | Line 1,423: | ||
C3/0A74: AB PLB | C3/0A74: AB PLB | ||
C3/0A75: 60 RTS | C3/0A75: 60 RTS | ||
==C3/0A76 unknow== | |||
C3/0A76: A903 LDA #$03 | C3/0A76: A903 LDA #$03 | ||
C3/0A78: A0120B LDY #$0B12 | C3/0A78: A0120B LDY #$0B12 | ||
Line 1,463: | Line 1,444: | ||
C3/0A9F: AB PLB | C3/0A9F: AB PLB | ||
C3/0AA0: 60 RTS | C3/0AA0: 60 RTS | ||
==C3/0AA1 unknow== | |||
C3/0AA1: A903 LDA #$03 | C3/0AA1: A903 LDA #$03 | ||
C3/0AA3: A0120B LDY #$0B12 | C3/0AA3: A0120B LDY #$0B12 | ||
Line 1,484: | Line 1,465: | ||
C3/0ACA: AB PLB | C3/0ACA: AB PLB | ||
C3/0ACB: 60 RTS | C3/0ACB: 60 RTS | ||
==C3/0ACC unknow== | |||
C3/0ACC: DA PHX | C3/0ACC: DA PHX | ||
C3/0ACD: DA PHX ( | C3/0ACD: DA PHX (should this be PHY? Y isn't touched at all, but still) | ||
C3/0ACE: BB TYX | C3/0ACE: BB TYX | ||
C3/0ACF: B575 LDA $75,X | C3/0ACF: B575 LDA $75,X | ||
Line 1,502: | Line 1,483: | ||
C3/0AE7: FA PLX (no stack mismatch, but something has to have bugged... Kejardon claims this to be intentional) | C3/0AE7: FA PLX (no stack mismatch, but something has to have bugged... Kejardon claims this to be intentional) | ||
C3/0AE8: 60 RTS | C3/0AE8: 60 RTS | ||
==C3/0AE9 data== | |||
C3/0AE9: 8C0B | C3/0AE9: 8C0B | ||
C3/0AEB: C40B | C3/0AEB: C40B | ||
C3/0AED: FC0B | C3/0AED: FC0B | ||
C3/0AEF: 340C | C3/0AEF: 340C | ||
==C3/0AF1 unknow== | |||
C3/0AF1: DA PHX | C3/0AF1: DA PHX | ||
C3/0AF2: BB TYX | C3/0AF2: BB TYX | ||
Line 1,525: | Line 1,506: | ||
C3/0B0F: E220 SEP #$20 (8 bit memory/accum.) | C3/0B0F: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0B11: 60 RTS | C3/0B11: 60 RTS | ||
==C3/0B12 unknow== | |||
C3/0B12: AA TAX | C3/0B12: AA TAX | ||
C3/0B13: 7C160B JMP ($0B16,X) | C3/0B13: 7C160B JMP ($0B16,X) | ||
==C3/0B16 pointers== | |||
C3/0B16: 200B | C3/0B16: 200B | ||
C3/0B18: 2A0B | C3/0B18: 2A0B | ||
Line 1,534: | Line 1,515: | ||
C3/0B1C: 4C0B | C3/0B1C: 4C0B | ||
C3/0B1E: 5E0B | C3/0B1E: 5E0B | ||
==C3/0B20 unknow== | |||
C3/0B20: A62D LDX $2D | C3/0B20: A62D LDX $2D | ||
C3/0B22: FE4936 INC $3649,X (execute the next entry in this queue's jump table) | C3/0B22: FE4936 INC $3649,X (execute the next entry in this queue's jump table) | ||
Line 1,548: | Line 1,529: | ||
C3/0B36: 18 CLC (this queue can be removed) | C3/0B36: 18 CLC (this queue can be removed) | ||
C3/0B37: 60 RTS | C3/0B37: 60 RTS | ||
==C3/0B38 unknow== | |||
C3/0B38: A62D LDX $2D | C3/0B38: A62D LDX $2D | ||
C3/0B3A: C220 REP #$20 (16 bit memory/accum.) | C3/0B3A: C220 REP #$20 (16 bit memory/accum.) | ||
Line 1,579: | Line 1,560: | ||
C3/0B7E: 38 SEC (not done yet with this queue) | C3/0B7E: 38 SEC (not done yet with this queue) | ||
C3/0B7F: 60 RTS | C3/0B7F: 60 RTS | ||
==C3/0B80 unknow== | |||
C3/0B80: E220 SEP #$20 (8 bit memory/accum.) | C3/0B80: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0B82: A901 LDA #$01 | C3/0B82: A901 LDA #$01 | ||
Line 1,586: | Line 1,567: | ||
C3/0B8A: 38 SEC (not done yet with this queue) | C3/0B8A: 38 SEC (not done yet with this queue) | ||
C3/0B8B: 60 RTS | C3/0B8B: 60 RTS | ||
==C3/0B8C oam data== | |||
C3/0B8C: 8F0B | C3/0B8C: 8F0B | ||
Line 1,593: | Line 1,573: | ||
C3/0B8F: 0D (13 sets of data) | C3/0B8F: 0D (13 sets of data) | ||
C3/0B90: 80006020 (position 80,00, 60 is ?, 20 is ?) | C3/0B90: 80006020 (position 80,00, 60 is ?, 20 is ?) | ||
C3/0B94: 90006220 (position 90,00, 62 is ?, 20 is ?) | C3/0B94: 90006220 (position 90,00, 62 is ?, 20 is ?) | ||
Line 1,609: | Line 1,588: | ||
C3/0BC4: C70B | C3/0BC4: C70B | ||
C3/0BC6: FE (...) | C3/0BC6: FE (...) | ||
C3/0BC7: 0D (13 sets of data) | C3/0BC7: 0D (13 sets of data) | ||
Line 1,629: | Line 1,606: | ||
C3/0BFC: FF0B | C3/0BFC: FF0B | ||
C3/0BFE: FE (...) | C3/0BFE: FE (...) | ||
C3/0BFF: 0D (13 sets of data) | C3/0BFF: 0D (13 sets of data) | ||
Line 1,649: | Line 1,624: | ||
C3/0C34: 370C | C3/0C34: 370C | ||
C3/0C36: FE (...) | C3/0C36: FE (...) | ||
C3/0C37: 0D (13 sets of data) | C3/0C37: 0D (13 sets of data) | ||
Line 1,667: | Line 1,640: | ||
C3/0C64: 1020CF26 | C3/0C64: 1020CF26 | ||
C3/0C68: 1820D826 | C3/0C68: 1820D826 | ||
==C3/0C6C display character level, HP and MP== | |||
This same function is used for main menu, skills screen, | This same function is used for main menu, skills screen, | ||
status screen, equipment, relics, or save screen | status screen, equipment, relics, or save screen | ||
Line 1,722: | Line 1,694: | ||
C3/0CE9: A00600 LDY #$0006 | C3/0CE9: A00600 LDY #$0006 | ||
C3/0CEC: 4C210D JMP $0D21 (BRA fool!) | C3/0CEC: 4C210D JMP $0D21 (BRA fool!) | ||
==C3/0CEF unknow== | |||
C3/0CEF: A28B9E LDX #$9E8B | C3/0CEF: A28B9E LDX #$9E8B | ||
C3/0CF2: 8E8121 STX $2181 | C3/0CF2: 8E8121 STX $2181 | ||
Line 1,744: | Line 1,716: | ||
C3/0D1D: 20FF02 JSR $02FF (JMP fool!) | C3/0D1D: 20FF02 JSR $02FF (JMP fool!) | ||
C3/0D20: 60 RTS | C3/0D20: 60 RTS | ||
==C3/0D21 unknow== | |||
C3/0D21: C220 REP #$20 (16 bit memory/accum.) | C3/0D21: C220 REP #$20 (16 bit memory/accum.) | ||
C3/0D23: B7EF LDA [$EF],Y | C3/0D23: B7EF LDA [$EF],Y | ||
Line 1,750: | Line 1,722: | ||
C3/0D26: E220 SEP #$20 (8 bit memory/accum.) | C3/0D26: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0D28: 4C9004 JMP $0490 | C3/0D28: 4C9004 JMP $0490 | ||
==C3/0D2B check if character knows magic== | |||
C3/0D2B: AD691A LDA $1A69 (from C3/0CB7) | C3/0D2B: AD691A LDA $1A69 (from C3/0CB7) | ||
C3/0D2E: 0D6A1A ORA $1A6A | C3/0D2E: 0D6A1A ORA $1A6A | ||
Line 1,782: | Line 1,753: | ||
C3/0D63: 38 SEC (flag MP as ok to display) | C3/0D63: 38 SEC (flag MP as ok to display) | ||
C3/0D64: 60 RTS | C3/0D64: 60 RTS | ||
==C3/0D65 adjust HP and MP based on equipment== | |||
This is called by both HP and MP to adjust their values based on boosting equipment | This is called by both HP and MP to adjust their values based on boosting equipment | ||
C3/0D65: C220 REP #$20 (16 bit memory/accum.) | C3/0D65: C220 REP #$20 (16 bit memory/accum.) | ||
Line 1,798: | Line 1,769: | ||
C3/0D79: A5E7 LDA $E7 (load our non-boosted HP/MP) | C3/0D79: A5E7 LDA $E7 (load our non-boosted HP/MP) | ||
C3/0D7B: 7C7E0D JMP ($0D7E,X) | C3/0D7B: 7C7E0D JMP ($0D7E,X) | ||
==C3/0D7E pointers: HP and MP boosts== | |||
C3/0D7E: 860D (no HP/MP boost) | C3/0D7E: 860D (no HP/MP boost) | ||
C3/0D80: 880D (25% HP/MP boost) | C3/0D80: 880D (25% HP/MP boost) | ||
C3/0D82: 890D (50% HP/MP boost) | C3/0D82: 890D (50% HP/MP boost) | ||
C3/0D84: 870D (12.5% HP/MP boost) | C3/0D84: 870D (12.5% HP/MP boost) | ||
==C3/0D86 HP and MP boosts== | |||
C3/0D86: 7B TDC | C3/0D86: 7B TDC | ||
C3/0D87: 4A LSR A | C3/0D87: 4A LSR A | ||
Line 1,813: | Line 1,784: | ||
C3/0D8F: E220 SEP #$20 (8 bit memory/accum.) | C3/0D8F: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0D91: 60 RTS | C3/0D91: 60 RTS | ||
==C3/0D92 trim HP if HP above 9999== | |||
C3/0D92: A6F3 LDX $F3 | C3/0D92: A6F3 LDX $F3 | ||
C3/0D94: E01027 CPX #$2710 | C3/0D94: E01027 CPX #$2710 | ||
Line 1,821: | Line 1,791: | ||
C3/0D9C: 86F3 STX $F3 | C3/0D9C: 86F3 STX $F3 | ||
C3/0D9E: 60 RTS | C3/0D9E: 60 RTS | ||
==C3/0D9F trim MP if MP above 999== | |||
C3/0D9F: A6F3 LDX $F3 | C3/0D9F: A6F3 LDX $F3 | ||
C3/0DA1: E0E803 CPX #$03E8 | C3/0DA1: E0E803 CPX #$03E8 | ||
Line 1,829: | Line 1,798: | ||
C3/0DA9: 86F3 STX $F3 | C3/0DA9: 86F3 STX $F3 | ||
C3/0DAB: 60 RTS | C3/0DAB: 60 RTS | ||
==C3/0DAC unknow== | |||
C3/0DAC: AC2F02 LDY $022F | C3/0DAC: AC2F02 LDY $022F | ||
C3/0DAF: 844F STY $4F | C3/0DAF: 844F STY $4F | ||
Line 1,836: | Line 1,805: | ||
C3/0DB5: AD3102 LDA $0231 | C3/0DB5: AD3102 LDA $0231 | ||
C3/0DB8: 8064 BRA $0E1E | C3/0DB8: 8064 BRA $0E1E | ||
==C3/0DBA unknow== | |||
C3/0DBA: 7B TDC | C3/0DBA: 7B TDC | ||
C3/0DBB: A54B LDA $4B | C3/0DBB: A54B LDA $4B | ||
Line 1,870: | Line 1,839: | ||
C3/0DFB: 994602 STA $0246,Y | C3/0DFB: 994602 STA $0246,Y | ||
C3/0DFE: 60 RTS | C3/0DFE: 60 RTS | ||
==C3/0DFF unknow== | |||
C3/0DFF: 7B TDC | C3/0DFF: 7B TDC | ||
C3/0E00: A528 LDA $28 | C3/0E00: A528 LDA $28 | ||
Line 1,878: | Line 1,847: | ||
C3/0E07: 844D STY $4D | C3/0E07: 844D STY $4D | ||
C3/0E09: 60 RTS | C3/0E09: 60 RTS | ||
==C3/0E0A unknow== | |||
C3/0E0A: 7B TDC | C3/0E0A: 7B TDC | ||
C3/0E0B: A528 LDA $28 | C3/0E0B: A528 LDA $28 | ||
Line 1,896: | Line 1,865: | ||
C3/0E25: 854E STA $4E | C3/0E25: 854E STA $4E | ||
C3/0E27: 60 RTS | C3/0E27: 60 RTS | ||
==C3/0E28 unknow== | |||
C3/0E28: A00000 LDY #$0000 | C3/0E28: A00000 LDY #$0000 | ||
C3/0E2B: 8C1621 STY $2116 | C3/0E2B: 8C1621 STY $2116 | ||
C3/0E2E: A04938 LDY #$3849 | C3/0E2E: A04938 LDY #$3849 | ||
C3/0E31: 8C0243 STY $4302 (set address, 7E/3849) | C3/0E31: 8C0243 STY $4302 (set address, 7E/3849) | ||
C3/0E34: 8052 BRA $0E88 (BRA $0E85...) | C3/0E34: 8052 BRA $0E88 (BRA $0E85...) | ||
C3/0E36: A00004 LDY #$0400 (from C3/674F, C3/7E04, C3/8F13, C3/90E4, C3/AB46, C3/AD6B) | C3/0E36: A00004 LDY #$0400 (from C3/674F, C3/7E04, C3/8F13, C3/90E4, C3/AB46, C3/AD6B) | ||
C3/0E39: 8C1621 STY $2116 | C3/0E39: 8C1621 STY $2116 | ||
Line 1,907: | Line 1,877: | ||
C3/0E3F: 8C0243 STY $4302 (set address, 7E/4049) | C3/0E3F: 8C0243 STY $4302 (set address, 7E/4049) | ||
C3/0E42: 8044 BRA $0E88 (BRA $0E85...) | C3/0E42: 8044 BRA $0E88 (BRA $0E85...) | ||
C3/0E44: A00008 LDY #$0800 (from C3/6752, C3/B933) | C3/0E44: A00008 LDY #$0800 (from C3/6752, C3/B933) | ||
C3/0E47: 8C1621 STY $2116 | C3/0E47: 8C1621 STY $2116 | ||
Line 1,912: | Line 1,883: | ||
C3/0E4D: 8C0243 STY $4302 (set address, 7E/4849) | C3/0E4D: 8C0243 STY $4302 (set address, 7E/4849) | ||
C3/0E50: 8036 BRA $0E88 (BRA $0E85...) | C3/0E50: 8036 BRA $0E88 (BRA $0E85...) | ||
C3/0E52: A00010 LDY #$1000 | |||
C3/0E52: A00010 LDY #$1000 | |||
C3/0E55: 8C1621 STY $2116 | C3/0E55: 8C1621 STY $2116 | ||
C3/0E58: A04958 LDY #$5849 | C3/0E58: A04958 LDY #$5849 | ||
C3/0E5B: 8C0243 STY $4302 (set address, 7E/5849) | C3/0E5B: 8C0243 STY $4302 (set address, 7E/5849) | ||
C3/0E5E: 8028 BRA $0E88 (BRA $0E85...) | C3/0E5E: 8028 BRA $0E88 (BRA $0E85...) | ||
C3/0E60: A00018 LDY #$1800 (from C3/B92A) | C3/0E60: A00018 LDY #$1800 (from C3/B92A) | ||
C3/0E63: 8C1621 STY $2116 | C3/0E63: 8C1621 STY $2116 | ||
Line 1,922: | Line 1,895: | ||
C3/0E69: 8C0243 STY $4302 (set address, 7E/6849) | C3/0E69: 8C0243 STY $4302 (set address, 7E/6849) | ||
C3/0E6C: 801A BRA $0E88 (BRA $0E85...) | C3/0E6C: 801A BRA $0E88 (BRA $0E85...) | ||
C3/0E6E: A00040 LDY #$4000 | |||
C3/0E6E: A00040 LDY #$4000 | |||
C3/0E71: 8C1621 STY $2116 | C3/0E71: 8C1621 STY $2116 | ||
C3/0E74: A04978 LDY #$7849 | C3/0E74: A04978 LDY #$7849 | ||
C3/0E77: 8C0243 STY $4302 (set address, 7E/7849) | C3/0E77: 8C0243 STY $4302 (set address, 7E/7849) | ||
C3/0E7A: 800C BRA $0E88 (BRA $0E85...) | C3/0E7A: 800C BRA $0E88 (BRA $0E85...) | ||
C3/0E7C: A00048 LDY #$4800 (from C3/1899, C3/31A5, C3/5D80, C3/7E0A, C3/AD5C, C3/B94B) | C3/0E7C: A00048 LDY #$4800 (from C3/1899, C3/31A5, C3/5D80, C3/7E0A, C3/AD5C, C3/B94B) | ||
C3/0E7F: 8C1621 STY $2116 | C3/0E7F: 8C1621 STY $2116 | ||
Line 1,942: | Line 1,917: | ||
C3/0E9F: 8D0B42 STA $420B (turn on channel 0 of DMA) | C3/0E9F: 8D0B42 STA $420B (turn on channel 0 of DMA) | ||
C3/0EA2: 60 RTS | C3/0EA2: 60 RTS | ||
==C3/0EA3 unknow== | |||
C3/0EA3: A5AE LDA $AE | C3/0EA3: A5AE LDA $AE | ||
C3/0EA5: C921 CMP #$21 | C3/0EA5: C921 CMP #$21 | ||
Line 1,950: | Line 1,925: | ||
C3/0EAD: 8F402100 STA $002140 (here if you can move and have moved, output sound and trigger no more sound) | C3/0EAD: 8F402100 STA $002140 (here if you can move and have moved, output sound and trigger no more sound) | ||
C3/0EB1: 60 RTS | C3/0EB1: 60 RTS | ||
==C3/0EB2 click sound== | |||
C3/0EB2: A920 LDA #$20 (20 is the familiar "click" sound) | C3/0EB2: A920 LDA #$20 (20 is the familiar "click" sound) | ||
C3/0EB4: 8F402100 STA $002140 | C3/0EB4: 8F402100 STA $002140 | ||
C3/0EB8: 60 RTS | C3/0EB8: 60 RTS | ||
==C3/0EB9 healing sound== | |||
C3/0EB9: A923 LDA #$23 (23 is the "heal" sound, like when you use a potion) | C3/0EB9: A923 LDA #$23 (23 is the "heal" sound, like when you use a potion) | ||
C3/0EBB: 8F402100 STA $002140 | C3/0EBB: 8F402100 STA $002140 | ||
C3/0EBF: 60 RTS | C3/0EBF: 60 RTS | ||
==C3/0EC0 buzzer sound== | |||
Makes the Buzzer Sound | Makes the Buzzer Sound | ||
C3/0EC0: A922 LDA #$22 (22 is the "buzz" sound, as in "No, you can't do that") | C3/0EC0: A922 LDA #$22 (22 is the "buzz" sound, as in "No, you can't do that") | ||
C3/0EC2: 8F402100 STA $002140 | C3/0EC2: 8F402100 STA $002140 | ||
C3/0EC6: 60 RTS | C3/0EC6: 60 RTS | ||
==C3/0EC7 shift sound== | |||
Makes the Shift Sound | Makes the Shift Sound | ||
C3/0EC7: A924 LDA #$24 (24 is the "shift" sound, deleting letters while naming a character) | C3/0EC7: A924 LDA #$24 (24 is the "shift" sound, deleting letters while naming a character) | ||
C3/0EC9: 8F402100 STA $002140 | C3/0EC9: 8F402100 STA $002140 | ||
C3/0ECD: 60 RTS | C3/0ECD: 60 RTS | ||
==C3/0ECE cha-ching sound== | |||
Makes the Cha-ching Sound (I'm guessing) | Makes the Cha-ching Sound (I'm guessing) | ||
C3/0ECE: A9BF LDA #$BF | C3/0ECE: A9BF LDA #$BF | ||
Line 1,980: | Line 1,953: | ||
C3/0EE0: 220400C5 JSL $C50004 | C3/0EE0: 220400C5 JSL $C50004 | ||
C3/0EE4: 60 RTS | C3/0EE4: 60 RTS | ||
==C3/0EE5 true sound== | |||
Makes the "Trueeeeeeee" Sound | Makes the "Trueeeeeeee" Sound | ||
C3/0EE5: A9C5 LDA #$C5 | C3/0EE5: A9C5 LDA #$C5 | ||
C3/0EE7: 80E7 BRA $0ED0 | C3/0EE7: 80E7 BRA $0ED0 | ||
==C3/0EE9 unknow== | |||
C3/0EE9: A00000 LDY #$0000 | C3/0EE9: A00000 LDY #$0000 | ||
C3/0EEC: 8414 STY $14 | C3/0EEC: 8414 STY $14 | ||
Line 1,994: | Line 1,967: | ||
C3/0EFA: 8412 STY $12 | C3/0EFA: 8412 STY $12 | ||
C3/0EFC: 60 RTS | C3/0EFC: 60 RTS | ||
==C3/0EFD unknow== | |||
C3/0EFD: A00000 LDY #$0000 | C3/0EFD: A00000 LDY #$0000 | ||
C3/0F00: 8414 STY $14 | C3/0F00: 8414 STY $14 | ||
Line 2,004: | Line 1,977: | ||
C3/0F0E: 8412 STY $12 | C3/0F0E: 8412 STY $12 | ||
C3/0F10: 60 RTS | C3/0F10: 60 RTS | ||
==C3/0F11 unknow== | |||
C3/0F11: A00004 LDY #$0400 | C3/0F11: A00004 LDY #$0400 | ||
C3/0F14: 8414 STY $14 | C3/0F14: 8414 STY $14 | ||
Line 2,014: | Line 1,987: | ||
C3/0F22: 8412 STY $12 | C3/0F22: 8412 STY $12 | ||
C3/0F24: 60 RTS | C3/0F24: 60 RTS | ||
==C3/0F25 unknow== | |||
C3/0F25: A00040 LDY #$4000 | C3/0F25: A00040 LDY #$4000 | ||
C3/0F28: 8414 STY $14 | C3/0F28: 8414 STY $14 | ||
Line 2,024: | Line 1,997: | ||
C3/0F36: 8412 STY $12 | C3/0F36: 8412 STY $12 | ||
C3/0F38: 60 RTS | C3/0F38: 60 RTS | ||
==C3/0F39 unknow== | |||
C3/0F39: A00040 LDY #$4000 | C3/0F39: A00040 LDY #$4000 | ||
C3/0F3C: 8414 STY $14 | C3/0F3C: 8414 STY $14 | ||
Line 2,034: | Line 2,007: | ||
C3/0F4A: 8412 STY $12 | C3/0F4A: 8412 STY $12 | ||
C3/0F4C: 60 RTS | C3/0F4C: 60 RTS | ||
==C3/0F4D unknow== | |||
C3/0F4D: A00044 LDY #$4400 | C3/0F4D: A00044 LDY #$4400 | ||
C3/0F50: 8414 STY $14 | C3/0F50: 8414 STY $14 | ||
Line 2,044: | Line 2,017: | ||
C3/0F5E: 8412 STY $12 | C3/0F5E: 8412 STY $12 | ||
C3/0F60: 60 RTS | C3/0F60: 60 RTS | ||
==C3/0F61 unknow== | |||
C3/0F61: A00040 LDY #$4000 | C3/0F61: A00040 LDY #$4000 | ||
C3/0F64: 841B STY $1B | C3/0F64: 841B STY $1B | ||
Line 2,054: | Line 2,027: | ||
C3/0F72: 8419 STY $19 | C3/0F72: 8419 STY $19 | ||
C3/0F74: 60 RTS | C3/0F74: 60 RTS | ||
==C3/0F75 unknow== | |||
C3/0F75: A00044 LDY #$4400 | C3/0F75: A00044 LDY #$4400 | ||
C3/0F78: 841B STY $1B | C3/0F78: 841B STY $1B | ||
Line 2,064: | Line 2,037: | ||
C3/0F86: 8419 STY $19 | C3/0F86: 8419 STY $19 | ||
C3/0F88: 60 RTS | C3/0F88: 60 RTS | ||
==C3/0F89 unknow== | |||
C3/0F89: 641B STZ $1B | C3/0F89: 641B STZ $1B | ||
C3/0F8B: 641C STZ $1C | C3/0F8B: 641C STZ $1C | ||
C3/0F8D: 60 RTS | C3/0F8D: 60 RTS | ||
==C3/0F8E copy function== | |||
Copy a block of 32 bytes | Copy a block of 32 bytes | ||
Coming in: | Coming in: | ||
Line 2,089: | Line 2,062: | ||
C3/0FA7: E220 SEP #$20 (8 bit memory/accum.) | C3/0FA7: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0FA9: 60 RTS | C3/0FA9: 60 RTS | ||
==C3/0FAA unknow== | |||
C3/0FAA: 48 PHA | C3/0FAA: 48 PHA | ||
C3/0FAB: 84E7 STY $E7 | C3/0FAB: 84E7 STY $E7 | ||
Line 2,111: | Line 2,084: | ||
C3/0FDA: E220 SEP #$20 (8 bit memory/accum.) | C3/0FDA: E220 SEP #$20 (8 bit memory/accum.) | ||
C3/0FDC: 60 RTS | C3/0FDC: 60 RTS | ||
==C3/0FDD jump table== | |||
C3/0FDD: AA TAX | C3/0FDD: AA TAX | ||
C3/0FDE: 7CE10F JMP ($0FE1,X) | C3/0FDE: 7CE10F JMP ($0FE1,X) | ||
Line 2,117: | Line 2,090: | ||
C3/0FE1: E50F | C3/0FE1: E50F | ||
C3/0FE3: F60F | C3/0FE3: F60F | ||
==C3/0FE5 unknow== | |||
C3/0FE5: A62D LDX $2D | C3/0FE5: A62D LDX $2D | ||
C3/0FE7: A91F LDA #$1F | C3/0FE7: A91F LDA #$1F |
Latest revision as of 02:41, 24 January 2024
This is a sub-page of Final Fantasy VI/ROM map.
C3/0000 jump table
C3/0000: 4C1B00 JMP $001B (open main menu; from C0/C6F9, EE/03EB) C3/0003: 4C45A4 JMP $A445 C3/0006: 4C24A4 JMP $A424 (timer resetting for input decoding; from C0/0053) C3/0009: 4C7AA4 JMP $A47A (decode joypad status register 1; from C0/056D, EE/0139, EE/03A6, EE/04FF) C3/000C: 4CC813 JMP $13C8 (adjust in-game time; from C0/024F, EE/A51E, EE/A73D, EE/A966) C3/000F: 4CFE14 JMP $14FE (from C0/C4F0) C3/0012: 4C1CC5 JMP $C51C (event command BA; from C0/BA3C) C3/0015: 4CD296 JMP $96D2 (empties and fully equips a character; from C0/C6BC) C3/0018: 4C7FD5 JMP $D57F (from EE/8ED8)
C3/001B: C210 REP #$10 (16 bit index registers) C3/001D: E220 SEP #$20 (8 bit memory/accum.) C3/001F: A900 LDA #$00 C3/0021: 48 PHA C3/0022: AB PLB (make the data bank reg. hold #$00) C3/0023: A20000 LDX #$0000 C3/0026: DA PHX C3/0027: 2B PLD (make the direct page reg. hold #$0000) C3/0028: A20000 LDX #$0000 (X still holds this) C3/002B: 8600 STX $00 ($00 should already hold this) C3/002D: A97E LDA #$7E C3/002F: 8D8321 STA $2183 C3/0032: 20C000 JSR $00C0 C3/0035: AD0002 LDA $0200 C3/0038: C902 CMP #$02 C3/003A: D003 BNE $003F C3/003C: 209B70 JSR $709B (set defaults for a new game) C3/003F: 20F800 JSR $00F8 C3/0042: 20DD00 JSR $00DD (based on $0200's value, jump to different spots in the menu) C3/0045: 2224A4C3 JSL $C3A424 (timer resetting for input decoding) C3/0049: A98F LDA #$8F C3/004B: 8D0021 STA $2100 C3/004E: 9C0042 STZ $4200 (turn off NMI, auto joypad read, etc) C3/0051: 9C0B42 STZ $420B (turn off DMA) C3/0054: 9C0C42 STZ $420C (turn off HDMA) C3/0057: AD0002 LDA $0200 C3/005A: C902 CMP #$02 C3/005C: D011 BNE $006F C3/005E: AD0502 LDA $0205 C3/0061: 100C BPL $006F C3/0063: AD4E1D LDA $1D4E C3/0066: 2920 AND #$20 C3/0068: F005 BEQ $006F (Branch if stereo set) C3/006A: A9FF LDA #$FF C3/006C: 203F3E JSR $3E3F C3/006F: AD0002 LDA $0200 C3/0072: D04B BNE $00BF C3/0074: AD0502 LDA $0205 C3/0077: 1046 BPL $00BF (branch if we are exiting out of the main menu?) C3/0079: C9FE CMP #$FE C3/007B: D021 BNE $009E C3/007D: A901 LDA #$01 C3/007F: 8D0002 STA $0200 C3/0082: AD0102 LDA $0201 C3/0085: 8D0F02 STA $020F C3/0088: AC0602 LDY $0206 C3/008B: 8C0102 STY $0201 C3/008E: 220000C3 JSL $C30000 this makes it a recursive call C3/0092: AD0F02 LDA $020F C3/0095: 8D0102 STA $0201 C3/0098: 9C0002 STZ $0200 C3/009B: 4C1B00 JMP $001B
C3/009E unknow
C3/009E: A906 LDA #$06 C3/00A0: 8D0002 STA $0200 (BRA $007F...) C3/00A3: AD0102 LDA $0201 C3/00A6: 8D0F02 STA $020F C3/00A9: AD0602 LDA $0206 C3/00AC: 8D0102 STA $0201 C3/00AF: 220000C3 JSL $C30000 C3/00B3: AD0F02 LDA $020F C3/00B6: 8D0102 STA $0201 C3/00B9: 9C0002 STZ $0200 C3/00BC: 4C1B00 JMP $001B C3/00BF: 6B RTL
C3/00C0 unknow
C3/00C0: A95C LDA #$5C C3/00C2: 8D0015 STA $1500 C3/00C5: 8D0415 STA $1504 (set instruction to JML) C3/00C8: A28713 LDX #$1387 C3/00CB: 8E0115 STX $1501 (set NMI to C3/1387) C3/00CE: A2C713 LDX #$13C7 C3/00D1: 8E0515 STX $1505 (set IRQ to C3/13C7) C3/00D4: A9C3 LDA #$C3 C3/00D6: 8D0315 STA $1503 C3/00D9: 8D0715 STA $1507 C3/00DC: 60 RTS
C3/00E6 unknow
C3/00DD: 7B TDC C3/00DE: AD0002 LDA $0200 C3/00E1: 0A ASL A C3/00E2: AA TAX C3/00E3: 7CE600 JMP ($00E6,X)
C3/00E6: 1A01 (pressed X/menu, initiate the menu) C3/00E8: B301 (used a Rename Card, or event command $98) C3/00EA: 6F01 (calling the loading screen) C3/00EC: 2101 (invoke a shop) C3/00EE: 2B01 (party selection screen with number of groups) C3/00F0: 3D01 C3/00F2: 4901 C3/00F4: 5201 (colliseum item selection) C3/00F6: 6601 (party select screen for final battle sequence)
C3/00F8 unknow
C3/00F8: 20FA68 JSR $68FA C3/00FB: 201569 JSR $6915 C3/00FE: 20A969 JSR $69A9 C3/0101: 2248CDD4 JSL $D4CD48 C3/0105: 2224A4C3 JSL $C3A424 (timer resetting for input decoding) C3/0109: 7B TDC C3/010A: 221DCAD4 JSL $D4CA1D (do gradient 0 for the screen) C3/010E: 20DC69 JSR $69DC C3/0111: 201411 JSR $1114 (erase all onscreen sprites) C3/0114: 20876A JSR $6A87 (load font and menu graphics) C3/0117: 4C873A JMP $3A87
$0200 is #$00, initiate the main menu C3/011A: A904 LDA #$04 C3/011C: 8526 STA $26 (execute at C3/1A8A) C3/011E: 4CBA01 JMP $01BA (could use BRL instead)
C3/0121 invoke shop
$0200 is #$03, invoke a shop C3/0121: 20993F JSR $3F99 C3/0124: A924 LDA #$24 C3/0126: 8526 STA $26 (execute at C3/B466) C3/0128: 4CBA01 JMP $01BA (could use BRL instead)
C3/012B invoke party selection
$0200 is #$04, invoke party selection screen with number of groups C3/012B: 20993F JSR $3F99 C3/012E: 203801 JSR $0138 C3/0131: A92C LDA #$2C C3/0133: 8526 STA $26 (execute at C3/70E7) C3/0135: 4CBA01 JMP $01BA (could use BRL instead) C3/0138: 7B TDC C3/0139: A8 TAY C3/013A: 848E STY $8E C3/013C: 60 RTS
C3/013D unknow
$0200 is #$05 C3/013D: 20993F JSR $3F99 C3/0140: 203801 JSR $0138 C3/0143: A92F LDA #$2F C3/0145: 8526 STA $26 (execute at C3/7AE5) C3/0147: 8071 BRA $01BA
C3/0149 unknow
$0200 is #$06 C3/0149: 20993F JSR $3F99 C3/014C: A93F LDA #$3F C3/014E: 8526 STA $26 (execute at C3/B437) C3/0150: 8068 BRA $01BA
C3/0152 invoke Colosseum
$0200 is #$07, invoke colliseum item selection screen C3/0152: 20993F JSR $3F99 C3/0155: 6479 STZ $79 C3/0157: 647A STZ $7A C3/0159: 647B STZ $7B C3/015B: A9FF LDA #$FF C3/015D: 8D0502 STA $0205 (set item bet to nothing) C3/0160: A971 LDA #$71 C3/0162: 8526 STA $26 (execute at C3/ACAA) C3/0164: 8054 BRA $01BA
C3/0166 invoke party selection for final battle
$0200 is #$08, invoke party select screen for the final battle C3/0166: 20993F JSR $3F99 C3/0169: A973 LDA #$73 C3/016B: 8526 STA $26 (execute at C3/A9F8, init final battle setup screen) C3/016D: 804B BRA $01BA
C3/016F unknow
$0200 is #$02, used when the loading screen is called C3/016F: AFF17F30 LDA $307FF1 C3/0173: 1A INC A C3/0174: 8FF17F30 STA $307FF1 C3/0178: 2224A4C3 JSL $C3A424 (timer resetting for input decoding) C3/017C: 202370 JSR $7023 (make sure SRAM markers are intact) C3/017F: 901E BCC $019F (branch if not, which forces a new game) C3/0181: A901 LDA #$01 C3/0183: 8D0113 STA $1301 (set song as the Prelude) C3/0186: A910 LDA #$10 C3/0188: 8D0013 STA $1300 C3/018B: A980 LDA #$80 C3/018D: 8D0213 STA $1302 (normal volume) C3/0190: 220400C5 JSL $C50004 (play the Prelude) C3/0194: A9FF LDA #$FF C3/0196: 8D0502 STA $0205 C3/0199: A920 LDA #$20 C3/019B: 8526 STA $26 (execute at C3/1D03) C3/019D: 801B BRA $01BA C3/019F: 20212A JSR $2A21 C3/01A2: A901 LDA #$01 C3/01A4: 8D2402 STA $0224 C3/01A7: 9C1F02 STZ $021F C3/01AA: A9FF LDA #$FF C3/01AC: 8526 STA $26 (exit the menu) C3/01AE: 9C0502 STZ $0205 C3/01B1: 8007 BRA $01BA
C3/01B3 rename card code
$0200 is #$01, used a Rename Card or event command $98 C3/01B3: 20993F JSR $3F99 C3/01B6: A95D LDA #$5D C3/01B8: 8526 STA $26 (execute at C3/652D)
The menu loop code. Execute code based on the value of $26 C3/01BA: 201214 JSR $1412 (from C3/011E, C3/0128, C3/0135) C3/01BD: 7B TDC C3/01BE: A526 LDA $26 C3/01C0: C9FF CMP #$FF C3/01C2: F014 BEQ $01D8 C3/01C4: C220 REP #$20 (16 bit memory/accum.) C3/01C6: 0A ASL A C3/01C7: AA TAX C3/01C8: E220 SEP #$20 (8 bit memory/accum.) C3/01CA: FCDB01 JSR ($01DB,X) C3/01CD: 20B011 JSR $11B0 (execute everything in the OAM queue) C3/01D0: 204D13 JSR $134D C3/01D3: 20DB02 JSR $02DB (determine if we should exit the menu) C3/01D6: 80E5 BRA $01BD C3/01D8: 6443 STZ $43 (eventually disable all 8 channels of HDMA) C3/01DA: 60 RTS
$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 unknow
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
C3/7FD9 main text drawing
Coming in: 16 bit Y holds location in rom C3/7FD9 calls this after writes to $2180, but jumps to C3/02FF because of bad planning C3/02F9: 84E7 STY $E7 C3/02FB: A9C3 LDA #$C3 C3/02FD: 85E9 STA $E9 (C3/xxxx holds the string) C3/02FF: A600 LDX $00 C3/0301: 9B TXY C3/0302: C220 REP #$20 (16 bit memory/accum.) C3/0304: A7E7 LDA [$E7] (get the position, determine which BG layer it will go on) C3/0306: 85EB STA $EB (save it) C3/0308: E6E7 INC $E7 C3/030A: E6E7 INC $E7 (increment twice, now get the string) C3/030C: E220 SEP #$20 (8 bit memory/accum.) C3/030E: A97E LDA #$7E C3/0310: 85ED STA $ED C3/0312: B7E7 LDA [$E7],Y (load letter) C3/0314: F00F BEQ $0325 (branch if null terminator) C3/0316: 5A PHY (save our current position) C3/0317: 9B TXY (get position for tilemap) C3/0318: 97EB STA [$EB],Y (save it there) C3/031A: E8 INX C3/031B: 9B TXY (INY?) C3/031C: A529 LDA $29 (load text color) C3/031E: 97EB STA [$EB],Y (save it) C3/0320: E8 INX (increment tilemap position again) C3/0321: 7A PLY (get our current string position) C3/0322: C8 INY (...and add 1) C3/0323: 80ED BRA $0312 (loop and keep grabbing letters) C3/0325: 60 RTS
C3/0326 unknow
((Deleted function C3/0326 from FF6j goes here)) C3/0326: 84E7 STY $E7 (from C3/171A, C3/3A9E, C3/3ABA, C3/3AD6, C3/3AF2) C3/0328: A600 LDX $00 C3/032A: C220 REP #$20 (16 bit memory/accum.) C3/032C: BF4E04C3 LDA $C3044E,X C3/0330: 18 CLC C3/0331: 65E7 ADC $E7 C3/0333: 9F199F7E STA $7E9F19,X C3/0337: E8 INX C3/0338: E8 INX C3/0339: E03800 CPX #$0038 C3/033C: D0EE BNE $032C C3/033E: E220 SEP #$20 (8 bit memory/accum.) C3/0340: 60 RTS
C3/0341 draw a window
Draw a window, 4 sides. 16-bit Y holds the location in C3 of where the window data is. The first two bytes are the starting location onscreen of where to draw the window. The third byte is the width, and the fourth byte is the height. C3/0341: A9C3 LDA #$C3 (from many places, all in C3) C3/0343: 85E9 STA $E9 C3/0345: 84E7 STY $E7 (window data is at C3/xxxx) C3/0347: A600 LDX $00 C3/0349: 9B TXY C3/034A: C220 REP #$20 (16 bit memory/accum.) C3/034C: B7E7 LDA [$E7],Y (get position for tilemap) C3/034E: 85EB STA $EB (save it) C3/0350: C8 INY C3/0351: C8 INY C3/0352: B7E7 LDA [$E7],Y (get horizontal and vertical sizes) C3/0354: 85E0 STA $E0 (save vertical size) C3/0356: E220 SEP #$20 (8 bit memory/accum.) C3/0358: 85E2 STA $E2 (save horizontal size) C3/035A: A97E LDA #$7E C3/035C: 85ED STA $ED C3/035E: A600 LDX $00 (clear X) C3/0360: 9B TXY (and clear Y) C3/0361: E210 SEP #$10 (8 bit index registers) C3/0363: A6E0 LDX $E0 (get vertical size) C3/0365: A4E1 LDY $E1 (this should be holding the horizontal size) C3/0367: C210 REP #$10 (16 bit index registers) C3/0369: 86EF STX $EF C3/036B: 84F1 STY $F1 C3/036D: C220 REP #$20 (16 bit memory/accum.) C3/036F: 207503 JSR $0375 C3/0372: E220 SEP #$20 (8 bit memory/accum.) C3/0374: 60 RTS
C3/0375 unknow
C3/0375: 20A303 JSR $03A3 C3/0378: A600 LDX $00 C3/037A: A04000 LDY #$0040 C3/037D: 84F3 STY $F3 C3/037F: DA PHX C3/0380: 8A TXA C3/0381: 290300 AND #$0003 C3/0384: 0A ASL A C3/0385: AA TAX C3/0386: FC9B03 JSR ($039B,X) C3/0389: A5F3 LDA $F3 C3/038B: 18 CLC C3/038C: 694000 ADC #$0040 C3/038E: 85F3 STA $F3 C3/0390: A8 TAY C3/0392: FA PLX C3/0393: E8 INX C3/0394: E4F1 CPX $F1 C3/0396: D0E7 BNE $037F C3/0398: 4CBB03 JMP $03BB
C3/039B pointers
C3/039B: D103 C3/039D: DB03 C3/039F: E803 C3/03A1: F503
C3/03A3 unknow
C3/03A3: A400 LDY $00 C3/03A5: 200804 JSR $0408 C3/03A8: AF499F7E LDA $7E9F49 C3/03AC: 85E3 STA $E3 C3/03AE: AF4B9F7E LDA $7E9F4B C3/03B2: 85E5 STA $E5 C3/03B4: A22000 LDX #$0020 C3/03B7: 86E0 STX $E0 C3/03B9: 806D BRA $0428
C3/03BB unknow
C3/03BB: 200804 JSR $0408 C3/03BE: AF4D9F7E LDA $7E9F4D C3/03C2: 85E3 STA $E3 C3/03C4: AF4F9F7E LDA $7E9F4F C3/03C8: 85E5 STA $E5 C3/03CA: A22400 LDX #$0024 C3/03CD: 86E0 STX $E0 C3/03CF: 8057 BRA $0428
C3/03D1 unknow
C3/03D1: 200204 JSR $0402 (from C3/039B) C3/03D4: 200E04 JSR $040E C3/03D7: 64E0 STZ $E0 C3/03D9: 804D BRA $0428
C3/03DB unknow
C3/03DB: 200204 JSR $0402 (from C3/039D) C3/03DE: 201B04 JSR $041B C3/03E1: A20800 LDX #$0008 C3/03E4: 86E0 STX $E0 C3/03E6: 8040 BRA $0428
C3/03E8 unknow
C3/03E8: 200204 JSR $0402 (from C3/039F) C3/03EB: 200E04 JSR $040E C3/03EE: A21000 LDX #$0010 C3/03F1: 86E0 STX $E0 C3/03F3: 8033 BRA $0428
C3/03F5 unknow
C3/03F5: 200204 JSR $0402 (from C3/03A1) C3/03F8: 201B04 JSR $041B C3/03FB: A21800 LDX #$0018 C3/03FE: 86E0 STX $E0 C3/0400: 8026 BRA $0428
C3/0402 unknow
C3/0402: A20300 LDX #$0003 C3/0405: 86F5 STX $F5 C3/0407: 60 RTS
C3/0408 unknow
C3/0408: A20100 LDX #$0001 (from C3/03A5, C3/03BB) C3/040B: 86F5 STX $F5 C3/040D: 60 RTS
C3/040E unknow
C3/040E: AF419F7E LDA $7E9F41 (from C3/03D4, C3/03EB) C3/0412: 85E3 STA $E3 C3/0414: AF439F7E LDA $7E9F43 C3/0418: 85E5 STA $E5 C3/041A: 60 RTS
C3/041B unknow
C3/041B: AF459F7E LDA $7E9F45 (from C3/03DE, C3/03F8) C3/041F: 85E3 STA $E3 C3/0421: AF479F7E LDA $7E9F47 C3/0425: 85E5 STA $E5 C3/0427: 60 RTS
C3/0428 unknow
C3/0428: A600 LDX $00 (from C3/03B9, C3/03CF, C3/03D9, C3/03E6, C3/03F3, C3/0400) C3/042A: A5E3 LDA $E3 C3/042C: 97EB STA [$EB],Y C3/042E: C8 INY C3/042F: C8 INY C3/0430: DA PHX C3/0431: 8A TXA C3/0432: 25F5 AND $F5 C3/0434: 0A ASL A C3/0435: 18 CLC C3/0436: 65E0 ADC $E0 C3/0438: AA TAX C3/0439: BF199F7E LDA $7E9F19,X C3/043D: FA PLX C3/043E: E4EF CPX $EF C3/0440: F007 BEQ $0449 C3/0442: 97EB STA [$EB],Y C3/0444: C8 INY C3/0445: C8 INY C3/0446: E8 INX C3/0447: 80E7 BRA $0430 C3/0449: A5E5 LDA $E5 C3/044B: 97EB STA [$EB],Y C3/044D: 60 RTS
C3/044E data
C3/044E: 8001 C3/0450: 8101 C3/0452: 8201 C3/0454: 8301 C3/0456: 8401 C3/0458: 8501 C3/045A: 8601 C3/045C: 8701 C3/045E: 8801 C3/0460: 8901 C3/0462: 8A01 C3/0464: 8B01 C3/0466: 8C01 C3/0468: 8D01 C3/046A: 8E01 C3/046C: 8F01 C3/046E: 9101 C3/0470: 9201 C3/0472: 9901 C3/0474: 9A01 C3/0476: 9401 C3/0478: 9501 C3/047A: 9601 C3/047C: 9701 C3/047E: 9001 C3/0480: 9301 C3/0482: 9801 C3/0484: 9B01
C3/0486 buffer-clipping functions
Following are several buffer-clipping functions. I believe they basically print from the first position to the second one. C3/0486: A00500 LDY #$0005 (maximum of 5 digits) C3/0489: 84E0 STY $E0 C3/048B: A00200 LDY #$0002 (5 - 2 = 3 digits to display) C3/048E: 8037 BRA $04C7 C3/0490: A00500 LDY #$0005 (maximum of 5 digits) C3/0493: 84E0 STY $E0 C3/0495: A00100 LDY #$0001 (5 - 1 = 4 digits to display) C3/0498: 802D BRA $04C7 C3/049A: A00500 LDY #$0005 (maximum of 5 digits) C3/049D: 84E0 STY $E0 C3/049F: A400 LDY $00 (5 - 0 = 5 digits to display) C3/04A1: 8024 BRA $04C7 C3/04A3: A00800 LDY #$0008 (maximum of 8 digits) C3/04A6: 84E0 STY $E0 C3/04A8: A400 LDY $00 (8 - 0 = 8 digits to display) C3/04AA: 801B BRA $04C7 C3/04AC: A00800 LDY #$0008 (maximum of 8 digits) C3/04AF: 84E0 STY $E0 C3/04B1: A00100 LDY #$0001 (8 - 1 = 7 digits to display) C3/04B4: 8011 BRA $04C7 C3/04B6: A00300 LDY #$0003 (maximum of 3 digits) C3/04B9: 84E0 STY $E0 C3/04BB: A00100 LDY #$0001 (3 - 1 = 2 digits to display) C3/04BE: 8007 BRA $04C7 C3/04C0: A00300 LDY #$0003 (maximum of 3 digits) C3/04C3: 84E0 STY $E0 C3/04C5: A400 LDY $00 (3 - 0 = 3 digits to display, but why a variation of C3/0486?) C3/04C7: 86EB STX $EB C3/04C9: A97E LDA #$7E C3/04CB: 85ED STA $ED C3/04CD: BB TYX C3/04CE: A400 LDY $00 C3/04D0: B5F7 LDA $F7,X C3/04D2: 97EB STA [$EB],Y C3/04D4: C8 INY C3/04D5: A529 LDA $29 (get text color) C3/04D7: 97EB STA [$EB],Y C3/04D9: C8 INY C3/04DA: E8 INX C3/04DB: E4E0 CPX $E0 C3/04DD: D0F1 BNE $04D0 C3/04DF: 60 RTS
C3/04E0 unknow
This calls the function below here, then any leading zeros are converted to spaces. A zero in the third position (ones place) is not converted. C3/04E0: 20F904 JSR $04F9 C3/04E3: A400 LDY $00 C3/04E5: A20200 LDX #$0002 C3/04E8: B9F700 LDA $00F7,Y C3/04EB: C9B4 CMP #$B4 C3/04ED: D009 BNE $04F8 C3/04EF: A9FF LDA #$FF C3/04F1: 99F700 STA $00F7,Y C3/04F4: C8 INY C3/04F5: CA DEX C3/04F6: D0F0 BNE $04E8 C3/04F8: 60 RTS
C3/04F9 convert number for display: 3 digits
Takes a number from A (which is put into $E0 internally) and converts it into a number up to 3 digits in decimal text. The digits are stored to $F7, $F8, and $F9. C3/04F9: 85E0 STA $E0 C3/04FB: A903 LDA #$03 C3/04FD: 85E4 STA $E4 C3/04FF: A400 LDY $00 C3/0501: BB TYX C3/0502: 64E1 STZ $E1 C3/0504: BF2B05C3 LDA $C3052B,X C3/0508: E8 INX C3/0509: 85E3 STA $E3 C3/050B: A5E0 LDA $E0 C3/050D: 38 SEC C3/050E: E5E3 SBC $E3 C3/0510: 9006 BCC $0518 C3/0512: 85E0 STA $E0 C3/0514: E6E1 INC $E1 C3/0516: 80F3 BRA $050B C3/0518: 18 CLC C3/0519: 65ED ADC $ED C3/051B: 85F3 STA $F3 C3/051D: A5E1 LDA $E1 C3/051F: 18 CLC C3/0520: 69B4 ADC #$B4 C3/0522: 99F700 STA $00F7,Y C3/0525: C8 INY C3/0526: C6E4 DEC $E4 C3/0528: D0D8 BNE $0502 C3/052A: 60 RTS
C3/052B unknow
Data (for decimal place-values) C3/052B: 64 (100) C3/052C: 0A (10) C3/052D: 01 (1)
C3/052E convert number for display: 5 digits
Takes a number from $F3 and $F4 (or 16-bit $F3 if you prefer to say that) and converts it to a number up to 5 digits in decimal text. Unlike the above, it automatically changes leading zeros to spaces. This is stored to a buffer from $F7 to $FB. C3/052E: A905 LDA #$05 C3/0530: 85E0 STA $E0 C3/0532: A400 LDY $00 C3/0534: BB TYX C3/0535: C220 REP #$20 (16 bit memory/accum.) C3/0537: BF7805C3 LDA $C30578,X C3/053B: E8 INX C3/053C: E8 INX C3/053D: 85ED STA $ED C3/053F: 64EB STZ $EB C3/0541: 38 SEC C3/0542: A5F3 LDA $F3 C3/0544: E5ED SBC $ED C3/0546: 9006 BCC $054E C3/0548: 85F3 STA $F3 C3/054A: E6EB INC $EB C3/054C: 80F3 BRA $0541 C3/054E: 18 CLC C3/054F: 65ED ADC $ED C3/0551: 85F3 STA $F3 C3/0553: E220 SEP #$20 (8 bit memory/accum.) C3/0555: A5EB LDA $EB C3/0557: 18 CLC C3/0558: 69B4 ADC #$B4 C3/055A: 99F700 STA $00F7,Y C3/055D: C8 INY C3/055E: C6E0 DEC $E0 C3/0560: D0D3 BNE $0535 C3/0562: A400 LDY $00 C3/0564: A20400 LDX #$0004 (Only check the first 4 digits for 0) C3/0567: B9F700 LDA $00F7,Y C3/056A: C9B4 CMP #$B4 (That's text for "0") C3/056C: D009 BNE $0577 C3/056E: A9FF LDA #$FF (Change to a space) C3/0570: 99F700 STA $00F7,Y C3/0573: C8 INY C3/0574: CA DEX C3/0575: D0F0 BNE $0567 C3/0577: 60 RTS
C3/0578 data
C3/0578: 1027 (10000) C3/057A: E803 (1000) C3/057C: 6400 (100) C3/057E: 0A00 (10) C3/0580: 0100 (1)
C3/0582 unknow
C3/0582: 64F4 STZ $F4 C3/0584: A908 LDA #$08 C3/0586: 85E0 STA $E0 C3/0588: A400 LDY $00 C3/058A: BB TYX C3/058B: C220 REP #$20 (16 bit memory/accum.) C3/058D: 64EB STZ $EB C3/058F: 38 SEC C3/0590: A5F1 LDA $F1 C3/0592: FFDE05C3 SBC $C305DE,X C3/0596: 85F1 STA $F1 C3/0598: A5F3 LDA $F3 C3/059A: FFEE05C3 SBC $C305EE,X C3/059E: 85F3 STA $F3 C3/05A0: 9004 BCC $05A6 C3/05A2: E6EB INC $EB C3/05A4: 80E9 BRA $058F C3/05A6: A5F1 LDA $F1 C3/05A8: 18 CLC C3/05A9: 7FDE05C3 ADC $C305DE,X C3/05AD: 85F1 STA $F1 C3/05AF: A5F3 LDA $F3 C3/05B1: 7FEE05C3 ADC $C305EE,X C3/05B5: 85F3 STA $F3 C3/05B7: E220 SEP #$20 (8 bit memory/accum.) C3/05B9: A5EB LDA $EB C3/05BB: 18 CLC C3/05BC: 69B4 ADC #$B4 C3/05BE: 99F700 STA $00F7,Y C3/05C1: C8 INY C3/05C2: E8 INX C3/05C3: E8 INX C3/05C4: C6E0 DEC $E0 C3/05C6: D0C3 BNE $058B C3/05C8: A400 LDY $00 C3/05CA: A20700 LDX #$0007 C3/05CD: B9F700 LDA $00F7,Y C3/05D0: C9B4 CMP #$B4 C3/05D2: D009 BNE $05DD C3/05D4: A9FF LDA #$FF C3/05D6: 99F700 STA $00F7,Y C3/05D9: C8 INY C3/05DA: CA DEX C3/05DB: D0F0 BNE $05CD C3/05DD: 60 RTS
C3/05DE data
In case this wasn't obvious from the others, here ya go: C3/05DE: 8096 (10000000) C3/05E0: 4042 (1000000) C3/05E2: A086 (100000) C3/05E4: 1027 (10000) C3/05E6: E803 (1000) C3/05E8: 6400 (100) C3/05EA: 0A00 (10) C3/05EC: 0100 (1) C3/05EE: 9800 C3/05F1: 0F00 C3/05F3: 0100 C3/05F5: 0000 C3/05F7: 0000 C3/05F9: 0000 C3/05FA: 0000 C3/05FC: 0000
C3/05FE hotspot loading function
C3/05FE: A9C3 LDA #$C3 C3/0600: 85ED STA $ED C3/0602: 84EB STY $EB C3/0604: A400 LDY $00 C3/0606: B7EB LDA [$EB],Y C3/0608: 8559 STA $59 C3/060A: C8 INY C3/060B: C220 REP #$20 (16 bit memory/accum.) C3/060D: 6451 STZ $51 C3/060F: B7EB LDA [$EB],Y C3/0611: 854D STA $4D C3/0613: C8 INY C3/0614: C8 INY C3/0615: B7EB LDA [$EB],Y C3/0617: 8553 STA $53 C3/0619: 644F STZ $4F C3/061B: E220 SEP #$20 (8 bit memory/accum.) C3/061D: 60 RTS
C3/061E unknow
C3/061E: 7B TDC (set A to 0) C3/061F: A8 TAY (set Y to 0) C3/0620: 98 TYA C3/0621: 0A ASL A C3/0622: AA TAX C3/0623: B585 LDA $85,X C3/0625: D008 BNE $062F C3/0627: E64E INC $4E C3/0629: C8 INY C3/062A: C00400 CPY #$0004 C3/062D: D0F1 BNE $0620 C3/062F: 60 RTS
C3/0630 unknow
C3/0630: 84E7 STY $E7 C3/0632: A9C3 LDA #$C3 C3/0634: 85E9 STA $E9 C3/0636: 60 RTS
C3/0637 unknow
C3/0637: 203006 JSR $0630 C3/063A: 205006 JSR $0650 C3/063D: 4CC506 JMP $06C5
C3/0640 finger positioning decoder
Finger positioning decoding function! C3/0640: 203006 JSR $0630 C3/0643: 207706 JSR $0677 C3/0646: 807D BRA $06C5
C3/0648 unknow
C3/0648: 203006 JSR $0630 C3/064B: 209E06 JSR $069E C3/064E: 8075 BRA $06C5
C3/0650 unknow
C3/0650: 8B PHB C3/0651: A900 LDA #$00 C3/0653: 48 PHA C3/0654: AB PLB C3/0655: AF124200 LDA $004212 C3/0659: 2940 AND #$40 (are we in H-blank?) C3/065B: F0F8 BEQ $0655 (branch if not) C3/065D: A554 LDA $54 C3/065F: 8D1B21 STA $211B C3/0662: 9C1B21 STZ $211B C3/0665: A54D LDA $4D C3/0667: 8D1C21 STA $211C C3/066A: 8D1C21 STA $211C C3/066D: AD3421 LDA $2134 C3/0670: 18 CLC C3/0671: 654E ADC $4E C3/0673: 854B STA $4B C3/0675: AB PLB C3/0676: 60 RTS
C3/0677 unknow
C3/0677: 8B PHB C3/0678: A900 LDA #$00 C3/067A: 48 PHA C3/067B: AB PLB C3/067C: AF124200 LDA $004212 C3/0680: 2940 AND #$40 (are we in H-blank?) C3/0682: F0F8 BEQ $067C (branch if not) C3/0684: A553 LDA $53 C3/0686: 8D1B21 STA $211B C3/0689: 9C1B21 STZ $211B C3/068C: A54E LDA $4E C3/068E: 8D1C21 STA $211C C3/0691: 8D1C21 STA $211C C3/0694: AD3421 LDA $2134 C3/0697: 18 CLC C3/0698: 654D ADC $4D C3/069A: 854B STA $4B C3/069C: AB PLB C3/069D: 60 RTS
C3/069E unknow
C3/069E: 8B PHB C3/069F: A900 LDA #$00 C3/06A1: 48 PHA C3/06A2: AB PLB C3/06A3: AF124200 LDA $004212 C3/06A7: 2940 AND #$40 (are we in H-blank?) C3/06A9: F0F8 BEQ $06A3 (branch if not) C3/06AB: A553 LDA $53 C3/06AD: 8D1B21 STA $211B C3/06B0: 9C1B21 STZ $211B C3/06B3: A550 LDA $50 C3/06B5: 8D1C21 STA $211C C3/06B8: 8D1C21 STA $211C C3/06BB: AD3421 LDA $2134 C3/06BE: 18 CLC C3/06BF: 654F ADC $4F C3/06C1: 854B STA $4B C3/06C3: AB PLB C3/06C4: 60 RTS
C3/06C5 unknow
C3/06C5: 8B PHB C3/06C6: A900 LDA #$00 C3/06C8: 48 PHA C3/06C9: AB PLB C3/06CA: A553 LDA $53 C3/06CC: 3A DEC A C3/06CD: C54D CMP $4D C3/06CF: B00C BCS $06DD C3/06D1: A553 LDA $53 C3/06D3: 3A DEC A C3/06D4: 38 SEC C3/06D5: E551 SBC $51 C3/06D7: 85E0 STA $E0 C3/06D9: 85E2 STA $E2 C3/06DB: 8008 BRA $06E5 C3/06DD: A553 LDA $53 C3/06DF: 85E0 STA $E0 C3/06E1: A54D LDA $4D C3/06E3: 85E2 STA $E2 C3/06E5: A554 LDA $54 C3/06E7: 3A DEC A C3/06E8: C54E CMP $4E C3/06EA: B00A BCS $06F6 C3/06EC: A554 LDA $54 C3/06EE: 3A DEC A C3/06EF: 38 SEC C3/06F0: E552 SBC $52 C3/06F2: 85E1 STA $E1 C3/06F4: 8004 BRA $06FA C3/06F6: A54E LDA $4E C3/06F8: 85E1 STA $E1 C3/06FA: AF124200 LDA $004212 C3/06FE: 2940 AND #$40 (are we in H-blank?) C3/0700: F0F8 BEQ $06FA (branch if not) C3/0702: A5E0 LDA $E0 C3/0704: 8D1B21 STA $211B C3/0707: 9C1B21 STZ $211B C3/070A: A5E1 LDA $E1 C3/070C: 8D1C21 STA $211C C3/070F: 8D1C21 STA $211C C3/0712: AD3421 LDA $2134 C3/0715: 18 CLC C3/0716: 65E2 ADC $E2 C3/0718: 0A ASL A C3/0719: EB XBA C3/071A: A500 LDA $00 C3/071C: EB XBA C3/071D: A8 TAY C3/071E: B7E7 LDA [$E7],Y C3/0720: 8555 STA $55 C3/0722: 6456 STZ $56 C3/0724: C8 INY C3/0725: B7E7 LDA [$E7],Y C3/0727: 8557 STA $57 C3/0729: 6458 STZ $58 C3/072B: AB PLB C3/072C: 60 RTS
C3/072D move and update finger position
Used by finger positioning data, determine current position and move to a new position based on direction pressed C3/072D: A50B LDA $0B (from various) C3/072F: 8908 BIT #$08 (did you press up?) C3/0731: F01D BEQ $0750 (branch if not) C3/0733: A54E LDA $4E (byte 3 of hotspot data) C3/0735: D011 BNE $0748 (branch if not on position 0) C3/0737: A559 LDA $59 (byte 1 of hotspot data) C3/0739: 2901 AND #$01 (check lowest bit, if set it will allow left/right) C3/073B: D072 BNE $07AF C3/073D: A554 LDA $54 C3/073F: 3A DEC A C3/0740: 854E STA $4E (byte 3 of hotspot data) C3/0742: 20A30E JSR $0EA3 C3/0745: 4CAF07 JMP $07AF (BRA would save a byte) C3/0748: C64E DEC $4E C3/074A: 20A30E JSR $0EA3 C3/074D: 4CAF07 JMP $07AF (BRA would save a byte) C3/0750: A50B LDA $0B (A already holds the contents of $0B) C3/0752: 8904 BIT #$04 (did you press down?) C3/0754: F01D BEQ $0773 (branch if not) C3/0756: A554 LDA $54 (byte 5 of hotspot data) C3/0758: 3A DEC A C3/0759: C54E CMP $4E (byte 3 of hotspot data) C3/075B: D00E BNE $076B C3/075D: A559 LDA $59 (byte 1 of hotspot data) C3/075F: 2901 AND #$01 (check lowest bit, if set it will allow left/right) C3/0761: D04C BNE $07AF C3/0763: 644E STZ $4E C3/0765: 20A30E JSR $0EA3 C3/0768: 4CAF07 JMP $07AF (BRA would save a byte) C3/076B: E64E INC $4E (byte 3 of hotspot data) C3/076D: 20A30E JSR $0EA3 C3/0770: 4CAF07 JMP $07AF C3/0773: A50B LDA $0B (A already holds the contents of $0B) C3/0775: 8902 BIT #$02 (did you press left?) C3/0777: F019 BEQ $0792 (branch if not) C3/0779: A54D LDA $4D (bytes 2 and 3 of hotspot data) C3/077B: D00E BNE $078B C3/077D: A559 LDA $59 (byte 1 of hotspot data) C3/077F: 302E BMI $07AF (check highest bit, if set it will allow up/down) C3/0781: A553 LDA $53 (byte 4 of hotspot data) C3/0783: 3A DEC A C3/0784: 854D STA $4D (byte 2 of hotspot data) C3/0786: 20A30E JSR $0EA3 C3/0789: 8024 BRA $07AF C3/078B: C64D DEC $4D (byte 2 of hotspot data) C3/078D: 20A30E JSR $0EA3 C3/0790: 801D BRA $07AF C3/0792: A50B LDA $0B (A already holds the contents of $0B) C3/0794: 8901 BIT #$01 (did you press right?) C3/0796: F017 BEQ $07AF (branch if not) C3/0798: A553 LDA $53 (byte 4 of hotspot data) C3/079A: 3A DEC A C3/079B: C54D CMP $4D (byte 2 of hotspot data) C3/079D: D00B BNE $07AA C3/079F: A559 LDA $59 (byte 1 of hotspot data) C3/07A1: 300C BMI $07AF (check highest bit, if set it will allow up/down) C3/07A3: 644D STZ $4D (byte 2 of hotspot data) C3/07A5: 20A30E JSR $0EA3 C3/07A8: 8005 BRA $07AF C3/07AA: E64D INC $4D (byte 2 of hotspot data) C3/07AC: 20A30E JSR $0EA3 C3/07AF: 60 RTS
C3/07B0 OAM initial routine
OAM initiating routine for hotspots C3/07B0: A901 LDA #$01 C3/07B2: A0B807 LDY #$07B8 C3/07B5: 4C7311 JMP $1173 (put C3/07B8 in the queue) C3/07B8: AA TAX C3/07B9: 7CBC07 JMP ($07BC,X)
C3/07BC data
C3/07BC: C007 C3/07BE: DC07
C3/07C0 unknow
C3/07C0: A62D LDX $2D C3/07C3: C220 REP #$20 C3/07C4: A98D08 LDA #$088D C3/07C7: 9DC932 STA $32C9,X (save as pointer to OAM data) C3/07CA: E220 SEP #$20 (8 bit memory/accum.) C3/07CC: A9C3 LDA #$C3 C3/07CE: 9DCA35 STA $35CA,X (save bank pointer to OAM data) C3/07D1: 200612 JSR $1206 C3/07D4: FE4936 INC $3649,X (execute the next entry in this queue's jump table) C3/07D7: A901 LDA #$01 C3/07D9: 9D4A36 STA $364A,X C3/07DC: A546 LDA $46 C3/07DE: 2906 AND #$06 C3/07E0: F01B BEQ $07FD C3/07E2: A545 LDA $45 C3/07E4: 8904 BIT #$04 C3/07E6: F013 BEQ $07FB C3/07E8: A62D LDX $2D C3/07EA: C220 REP #$20 (16 bit memory/accum.) C3/07EC: A555 LDA $55 C3/07EE: 9DCA33 STA $33CA,X C3/07F1: A557 LDA $57 C3/07F3: 9D4A34 STA $344A,X C3/07F6: E220 SEP #$20 (8 bit memory/accum.) C3/07F8: 202112 JSR $1221 (draw the sprites!) C3/07FB: 38 SEC (not done with this queue yet) C3/07FC: 60 RTS C3/07FD: 18 CLC (flag that this queue can be removed) C3/07FE: 60 RTS
C3/07FF unknow
C3/07FF: AA TAX C3/0800: 7C0308 JMP ($0803,X)
C3/0803 pointers
C3/0803: 0B08 C3/0805: 2B08 C3/0807: 0B08 C3/0809: 6708
C3/080B unknow
C3/080B: A62D LDX $2D (from C3/0803, C3/0807) C3/080D: A901 LDA #$01 C3/080F: 0446 TSB $46 C3/0811: C220 REP #$20 (16 bit memory/accum.) C3/0813: A99608 LDA #$0896 C3/0816: 9DC932 STA $32C9,X (save as pointer to OAM data) C3/0819: E220 SEP #$20 (8 bit memory/accum.) C3/081B: A9C3 LDA #$C3 C3/081D: 9DCA35 STA $35CA,X (save bank pointer to OAM data) C3/0820: 200612 JSR $1206 C3/0823: A901 LDA #$01 C3/0825: 9D4A36 STA $364A,X C3/0828: FE4936 INC $3649,X (execute the next entry in this queue's jump table) C3/082B: A546 LDA $46 (from C3/0805) C3/082D: 8901 BIT #$01 C3/082F: F034 BEQ $0865 C3/0831: A62D LDX $2D C3/0833: C220 REP #$20 (16 bit memory/accum.) C3/0835: A541 LDA $41 C3/0837: 49FFFF EOR #$FFFF C3/083A: 1A INC A C3/083B: 18 CLC C3/083C: 7D4A34 ADC $344A,X C3/083F: 9D4A34 STA $344A,X C3/0842: E220 SEP #$20 (8 bit memory/accum.) C3/0844: A546 LDA $46 C3/0846: 29C0 AND #$C0 C3/0848: F016 BEQ $0860 C3/084A: A528 LDA $28 C3/084C: 85E1 STA $E1 C3/084E: 1A INC A C3/084F: 85E0 STA $E0 C3/0851: A54A LDA $4A C3/0853: 18 CLC C3/0854: 6909 ADC #$09 C3/0856: C5E1 CMP $E1 C3/0858: 9009 BCC $0863 C3/085A: A54A LDA $4A C3/085C: C5E0 CMP $E0 C3/085E: B003 BCS $0863 C3/0860: 202112 JSR $1221 (draw the sprites!) C3/0863: 38 SEC C3/0864: 60 RTS C3/0865: 18 CLC C3/0866: 60 RTS
C3/0867 unknow
C3/0867: A546 LDA $46 (from C3/0809) C3/0869: 8901 BIT #$01 C3/086B: F0F8 BEQ $0865 C3/086D: A62D LDX $2D C3/086F: C220 REP #$20 (16 bit memory/accum.) C3/0871: A597 LDA $97 C3/0873: 49FFFF EOR #$FFFF C3/0876: 1A INC A C3/0877: 18 CLC C3/0878: 7DCA33 ADC $33CA,X C3/087B: 9DCA33 STA $33CA,X C3/087E: E220 SEP #$20 (8 bit memory/accum.) C3/0880: BCCA33 LDY $33CA,X C3/0883: C00001 CPY #$0100 C3/0886: B003 BCS $088B C3/0888: 202112 JSR $1221 (draw the sprites!) C3/088B: 38 SEC C3/088C: 60 RTS
C3/088D oam data: finger
C3/088D: 90 08 C3/088F: FE (???) C3/0890: 01 (one set of data) C3/0891: 80 00 00 3E (position 80,0, 0 is ?, finger) C3/0895: 00 (no data)
C3/0896 blink effect for finger
Cycle to create blinking effect for finger C3/0896: 9008 C3/0898: 02 C3/0899: 9508 C3/089B: 02 C3/089C: 9008 C3/089E: FF
C3/089F unknow
C3/089F: 7B TDC C3/08A0: AA TAX C3/08A1: B585 LDA $85,X C3/08A3: F024 BEQ $08C9 C3/08A5: DA PHX C3/08A6: A901 LDA #$01 C3/08A8: A0D108 LDY #$08D1 C3/08AB: 207311 JSR $1173 (put C3/08D1 in the queue) C3/08AE: 9B TXY C3/08AF: FA PLX C3/08B0: A97E LDA #$7E C3/08B2: 48 PHA C3/08B3: AB PLB C3/08B4: B585 LDA $85,X C3/08B6: 99CA33 STA $33CA,Y C3/08B9: B586 LDA $86,X C3/08BB: 994A34 STA $344A,Y C3/08BE: 7B TDC C3/08BF: 99CB33 STA $33CB,Y C3/08C2: 994B34 STA $344B,Y C3/08C5: A900 LDA #$00 C3/08C7: 48 PHA C3/08C8: AB PLB C3/08C9: E8 INX C3/08CA: E8 INX C3/08CB: E00800 CPX #$0008 C3/08CE: D0D1 BNE $08A1 C3/08D0: 60 RTS
C3/08D1 unknow
C3/08D1: AA TAX C3/08D2: 7CD508 JMP ($08D5,X)
C3/08D5 pointers
C3/08D5: D908 C3/08D7: F908
C3/08D9 unknow
C3/08D9: A62D LDX $2D C3/08DB: A908 LDA #$08 C3/08DD: 0446 TSB $46 C3/08DF: C220 REP #$20 (16 bit memory/accum.) C3/08E1: A99608 LDA #$0896 C3/08E4: 9DC932 STA $32C9,X (save as pointer to OAM data) C3/08E7: E220 SEP #$20 (8 bit memory/accum.) C3/08E9: A9C3 LDA #$C3 C3/08EB: 9DCA35 STA $35CA,X (save bank pointer to OAM data) C3/08EE: 200612 JSR $1206 C3/08F1: FE4936 INC $3649,X (execute the next entry in this queue's jump table) C3/08F4: A901 LDA #$01 C3/08F6: 9D4A36 STA $364A,X C3/08F9: A546 LDA $46 C3/08FB: 8908 BIT #$08 C3/08FD: F007 BEQ $0906 C3/08FF: A62D LDX $2D C3/0901: 202112 JSR $1221 (draw the sprites!) C3/0904: 38 SEC (not done yet with this queue) C3/0905: 60 RTS C3/0906: 18 CLC (this queue can be removed) C3/0907: 60 RTS
C3/0908 unknow
C3/0908: A9C0 LDA #$C0 C3/090A: 0446 TSB $46 C3/090C: A54A LDA $4A C3/090E: D004 BNE $0914 C3/0910: A940 LDA #$40 C3/0912: 1446 TRB $46 C3/0914: A54A LDA $4A C3/0916: C55C CMP $5C C3/0918: D004 BNE $091E C3/091A: A980 LDA #$80 C3/091C: 1446 TRB $46 C3/091E: 60 RTS
C3/091F unknow
C3/091F: A903 LDA #$03 (from C3/1B14, C3/20B5, C3/2132, C3/2170, C3/21A8, C3/265A, C3/591E, C3/89DE, C3/BC05) C3/0921: A04709 LDY #$0947 C3/0924: 207311 JSR $1173 (put C3/0947 in the queue) C3/0927: C220 REP #$20 (16 bit memory/accum.) C3/0929: A9E800 LDA #$00E8 (arrow's initial position, E8 is X, 00 is Y) C3/092C: 9FCA337E STA $7E33CA,X C3/0930: E220 SEP #$20 (8 bit memory/accum.) C3/0932: 60 RTS
C3/0933 unknow
C3/0933: A903 LDA #$03 (only from C3/9B0F) C3/0935: A04709 LDY #$0947 C3/0938: 207311 JSR $1173 (put C3/0947 in the queue) C3/093B: C220 REP #$20 (16 bit memory/accum.) C3/093D: A97800 LDA #$0078 (arrow's initial position in equip screen, 78 is X, 00 is Y) C3/0940: 9FCA337E STA $7E33CA,X C3/0944: E220 SEP #$20 (8 bit memory/accum.) C3/0946: 60 RTS
C3/0947 unknow
C3/0947: AA TAX C3/0948: 7C4B09 JMP ($094B,X)
C3/094B pointers
C3/094B: 4F09 C3/094D: 6A09
C3/094F unknow
C3/094F: A62D LDX $2D C3/0951: C220 REP #$20 (16 bit memory/accum.) C3/0953: A9E309 LDA #$09E3 C3/0956: 9DC932 STA $32C9,X (save as pointer to OAM data) C3/0959: E220 SEP #$20 (8 bit memory/accum.) C3/095B: A9C3 LDA #$C3 C3/095D: 9DCA35 STA $35CA,X (save bank pointer to OAM data) C3/0960: FE4936 INC $3649,X (execute the next entry in this queue's jump table) C3/0963: 200612 JSR $1206 C3/0966: A9C0 LDA #$C0 C3/0968: 0446 TSB $46 C3/096A: A546 LDA $46 C3/096C: 29C0 AND #$C0 C3/096E: F069 BEQ $09D9 C3/0970: A62D LDX $2D C3/0972: 200809 JSR $0908 C3/0975: AF124200 LDA $004212 C3/0979: 2940 AND #$40 C3/097B: F0F8 BEQ $0975 C3/097D: BD4A35 LDA $354A,X C3/0980: 8F1B2100 STA $00211B C3/0984: BD4B35 LDA $354B,X C3/0987: 8F1B2100 STA $00211B C3/098B: A54A LDA $4A C3/098D: 8F1C2100 STA $00211C C3/0991: 8F1C2100 STA $00211C C3/0995: A54A LDA $4A C3/0997: 3011 BMI $09AA C3/0999: 7B TDC C3/099A: AF352100 LDA $002135 C3/099E: C221 REP #$21 C3/09A0: 7DCA34 ADC $34CA,X C3/09A3: 9D4A34 STA $344A,X C3/09A6: E220 SEP #$20 (8 bit memory/accum.) C3/09A8: 8013 BRA $09BD C3/09AA: 7B TDC C3/09AB: AF352100 LDA $002135 C3/09AF: C221 REP #$21 C3/09B1: 697000 ADC #$0070 C3/09B4: 18 CLC C3/09B5: 7DCA34 ADC $34CA,X C3/09B8: 9D4A34 STA $344A,X C3/09BB: E220 SEP #$20 (8 bit memory/accum.) C3/09BD: 7B TDC C3/09BE: A546 LDA $46 C3/09C0: 29C0 AND #$C0 C3/09C2: 4A LSR A C3/09C3: 4A LSR A C3/09C4: 4A LSR A C3/09C5: 4A LSR A C3/09C6: 4A LSR A C3/09C7: 9B TXY C3/09C8: AA TAX C3/09C9: C220 REP #$20 (16 bit memory/accum.) C3/09CB: BFDB09C3 LDA $C309DB,X C3/09CF: 99C932 STA $32C9,Y (save as pointer to OAM data) C3/09D2: E220 SEP #$20 (8 bit memory/accum.) C3/09D4: 202112 JSR $1221 (draw the sprites!) C3/09D7: 38 SEC (not done yet with this queue) C3/09D8: 60 RTS C3/09D9: 18 CLC (this queue can be removed) C3/09DA: 60 RTS
C3/09DB pointers: oam arrow cycle
C3/09DB: E309 C3/09DD: EC09 C3/09DF: F509 C3/09E1: E309
OAM format: pointer, timer, pointer, timer, pointer, end C3/09E3: FE09 C3/09E5: 10 C3/09E6: 070A C3/09E8: 10 C3/09E9: FE09 C3/09EB: FF C3/09EC: FE09 C3/09EE: 10 C3/09EF: 100A C3/09F1: 10 C3/09F2: FE09 C3/09F4: FF C3/09F5: FE09 C3/09F7: 10 C3/09F8: 190A C3/09FA: 10 C3/09FB: FE09 C3/09FD: FF
C3/09FE oam arrow position
Data: OAM arrow position....GENERAL PURPOSE! format is X Y state sprite, X and Y are relative to starting and current positions C3/09FE: 02 (no idea...) C3/09FF: 0000023E (upper arrow, 02 is not flashing) (position 0,0, disabled, arrow pointing up) C3/0A03: 000802BE (lower arrow, 02 is not flashing) (position 0,8, disabled, arrow pointing down) C3/0A07: 02 (no idea...) C3/0A08: 0000123E (upper arrow, 12 is flashing) (position 0,0, enabled, arrow pointing up) C3/0A0C: 000812BE (lower arrow, 12 is flashing) (position 0,8, enabled, arrow pointing down) C3/0A10: 02 (no idea...) C3/0A11: 0000123E (upper arrow) (position 0,0, enabled, arrow pointing up) C3/0A15: 000802BE (lower arrow) (position 0,8, disabled, arrow pointing down) C3/0A19: 02 (no idea...) C3/0A1A: 0000023E (upper arrow) (position 0,0, disabled, arrow pointing up) C3/0A1E: 000812BE (lower arrow) (position 0,8, enabled, arrow pointing down)
C3/0A22 unknow
C3/0A22: A903 LDA #$03 C3/0A24: A0120B LDY #$0B12 C3/0A27: 207311 JSR $1173 (put C3/0B12 in the queue) C3/0A2A: 8A TXA C3/0A2B: 8560 STA $60 C3/0A2D: 8B PHB C3/0A2E: A97E LDA #$7E C3/0A30: 48 PHA C3/0A31: AB PLB C3/0A32: A400 LDY $00 C3/0A34: 20F10A JSR $0AF1 C3/0A37: A400 LDY $00 C3/0A39: 20CC0A JSR $0ACC C3/0A3C: C220 REP #$20 (16 bit memory/accum.) C3/0A3E: A91500 LDA #$0015 C3/0A41: 9D4A34 STA $344A,X C3/0A44: E220 SEP #$20 (8 bit memory/accum.) C3/0A46: 200612 JSR $1206 C3/0A49: AB PLB C3/0A4A: 60 RTS
C3/0A4B unknow
C3/0A4B: A903 LDA #$03 C3/0A4D: A0120B LDY #$0B12 C3/0A50: 207311 JSR $1173 (put C3/0B12 in the queue) C3/0A53: 8A TXA C3/0A54: 8561 STA $61 C3/0A56: 8B PHB C3/0A57: A97E LDA #$7E C3/0A59: 48 PHA C3/0A5A: AB PLB C3/0A5B: A00100 LDY #$0001 C3/0A5E: 20F10A JSR $0AF1 C3/0A61: A00100 LDY #$0001 C3/0A64: 20CC0A JSR $0ACC C3/0A67: C220 REP #$20 (16 bit memory/accum.) C3/0A69: A94500 LDA #$0045 C3/0A6C: 9D4A34 STA $344A,X C3/0A6F: E220 SEP #$20 (8 bit memory/accum.) C3/0A71: 200612 JSR $1206 C3/0A74: AB PLB C3/0A75: 60 RTS
C3/0A76 unknow
C3/0A76: A903 LDA #$03 C3/0A78: A0120B LDY #$0B12 C3/0A7B: 207311 JSR $1173 (put C3/0B12 in the queue) C3/0A7E: 8A TXA C3/0A7F: 8562 STA $62 C3/0A81: 8B PHB C3/0A82: A97E LDA #$7E C3/0A84: 48 PHA C3/0A85: AB PLB C3/0A86: A00200 LDY #$0002 C3/0A89: 20F10A JSR $0AF1 C3/0A8C: A00200 LDY #$0002 C3/0A8F: 20CC0A JSR $0ACC C3/0A92: C220 REP #$20 (16 bit memory/accum.) C3/0A94: A97500 LDA #$0075 C3/0A97: 9D4A34 STA $344A,X C3/0A9A: E220 SEP #$20 (8 bit memory/accum.) C3/0A9C: 200612 JSR $1206 C3/0A9F: AB PLB C3/0AA0: 60 RTS
C3/0AA1 unknow
C3/0AA1: A903 LDA #$03 C3/0AA3: A0120B LDY #$0B12 C3/0AA6: 207311 JSR $1173 (put C3/0B12 in the queue) C3/0AA9: 8A TXA C3/0AAA: 8563 STA $63 C3/0AAC: 8B PHB C3/0AAD: A97E LDA #$7E C3/0AAF: 48 PHA C3/0AB0: AB PLB C3/0AB1: A00300 LDY #$0003 C3/0AB4: 20F10A JSR $0AF1 C3/0AB7: A00300 LDY #$0003 C3/0ABA: 20CC0A JSR $0ACC C3/0ABD: C220 REP #$20 (16 bit memory/accum.) C3/0ABF: A9A500 LDA #$00A5 C3/0AC2: 9D4A34 STA $344A,X C3/0AC5: E220 SEP #$20 (8 bit memory/accum.) C3/0AC7: 200612 JSR $1206 C3/0ACA: AB PLB C3/0ACB: 60 RTS
C3/0ACC unknow
C3/0ACC: DA PHX C3/0ACD: DA PHX (should this be PHY? Y isn't touched at all, but still) C3/0ACE: BB TYX C3/0ACF: B575 LDA $75,X C3/0AD1: 2918 AND #$18 C3/0AD3: 4A LSR A C3/0AD4: 4A LSR A C3/0AD5: AA TAX C3/0AD6: C220 REP #$20 (16 bit memory/accum.) C3/0AD8: BFE90AC3 LDA $C30AE9,X C3/0ADC: 7A PLY (Y is lost) C3/0ADD: 99C932 STA $32C9,Y (save as pointer to OAM data) C3/0AE0: E220 SEP #$20 (8 bit memory/accum.) C3/0AE2: A9C3 LDA #$C3 C3/0AE4: 99CA35 STA $35CA,Y (save bank pointer to OAM data) C3/0AE7: FA PLX (no stack mismatch, but something has to have bugged... Kejardon claims this to be intentional) C3/0AE8: 60 RTS
C3/0AE9 data
C3/0AE9: 8C0B C3/0AEB: C40B C3/0AED: FC0B C3/0AEF: 340C
C3/0AF1 unknow
C3/0AF1: DA PHX C3/0AF2: BB TYX C3/0AF3: A902 LDA #$02 C3/0AF5: 2445 BIT $45 C3/0AF7: D006 BNE $0AFF C3/0AF9: B575 LDA $75,X C3/0AFB: 8920 BIT #$20 C3/0AFD: F007 BEQ $0B06 C3/0AFF: C220 REP #$20 (16 bit memory/accum.) C3/0B01: A91A00 LDA #$001A C3/0B04: 8005 BRA $0B0B C3/0B06: C220 REP #$20 (16 bit memory/accum.) C3/0B08: A90E00 LDA #$000E C3/0B0B: FA PLX C3/0B0C: 9DCA33 STA $33CA,X C3/0B0F: E220 SEP #$20 (8 bit memory/accum.) C3/0B11: 60 RTS
C3/0B12 unknow
C3/0B12: AA TAX C3/0B13: 7C160B JMP ($0B16,X)
C3/0B16 pointers
C3/0B16: 200B C3/0B18: 2A0B C3/0B1A: 380B C3/0B1C: 4C0B C3/0B1E: 5E0B
C3/0B20 unknow
C3/0B20: A62D LDX $2D C3/0B22: FE4936 INC $3649,X (execute the next entry in this queue's jump table) C3/0B25: A901 LDA #$01 C3/0B27: 9D4A36 STA $364A,X C3/0B2A: A62D LDX $2D C3/0B2C: BDC935 LDA $35C9,X C3/0B2F: 3005 BMI $0B36 C3/0B31: 202112 JSR $1221 (draw the sprites!) C3/0B34: 38 SEC (not done yet with this queue) C3/0B35: 60 RTS C3/0B36: 18 CLC (this queue can be removed) C3/0B37: 60 RTS
C3/0B38 unknow
C3/0B38: A62D LDX $2D C3/0B3A: C220 REP #$20 (16 bit memory/accum.) C3/0B3C: A90100 LDA #$0001 C3/0B3F: 9DCA34 STA $34CA,X C3/0B42: A90C00 LDA #$000C C3/0B45: 9D4933 STA $3349,X C3/0B48: E220 SEP #$20 (8 bit memory/accum.) C3/0B4A: 8012 BRA $0B5E C3/0B4C: A62D LDX $2D C3/0B4E: C220 REP #$20 (16 bit memory/accum.) C3/0B50: A9FFFF LDA #$FFFF (TDC then DEC would do the same) C3/0B53: 9DCA34 STA $34CA,X C3/0B56: A90C00 LDA #$000C C3/0B59: 9D4933 STA $3349,X C3/0B5C: E220 SEP #$20 (8 bit memory/accum.) C3/0B5E: A62D LDX $2D C3/0B60: A904 LDA #$04 C3/0B62: 9D4936 STA $3649,X (execute the fifth entry in this queue's jump table) C3/0B65: C220 REP #$20 (16 bit memory/accum.) C3/0B67: BD4933 LDA $3349,X C3/0B6A: F014 BEQ $0B80 C3/0B6C: BDCA34 LDA $34CA,X C3/0B6F: 18 CLC C3/0B70: 7DCA33 ADC $33CA,X C3/0B73: 9DCA33 STA $33CA,X C3/0B76: DE4933 DEC $3349,X C3/0B79: E220 SEP #$20 (8 bit memory/accum.) C3/0B7B: 202112 JSR $1221 (draw the sprites!) C3/0B7E: 38 SEC (not done yet with this queue) C3/0B7F: 60 RTS
C3/0B80 unknow
C3/0B80: E220 SEP #$20 (8 bit memory/accum.) C3/0B82: A901 LDA #$01 C3/0B84: 9D4936 STA $3649,X (execute the second entry in this queue's jump table) C3/0B87: 202112 JSR $1221 (draw the sprites!) C3/0B8A: 38 SEC (not done yet with this queue) C3/0B8B: 60 RTS
C3/0B8C oam data
C3/0B8C: 8F0B C3/0B8E: FE (...) C3/0B8F: 0D (13 sets of data) C3/0B90: 80006020 (position 80,00, 60 is ?, 20 is ?) C3/0B94: 90006220 (position 90,00, 62 is ?, 20 is ?) C3/0B98: 80106420 (position 80,10, 64 is ?, 20 is ?) C3/0B9C: 90106620 (position 90,10, 66 is ?, 20 is ?) C3/0BA0: 20006820 (position 20,00, 68 is ?, 20 is ?) C3/0BA4: 20086920 (position 20,08, 69 is ?, 20 is ?) C3/0BA8: 20106A20 (position 20,10, 6A is ?, 20 is ?) C3/0BAC: 20186B20 (position 20,18, 6B is ?, 20 is ?) C3/0BB0: 20206C20 (position 20,20, 6C is ?, 20 is ?) C3/0BB4: 00206D20 (position 00,20, 6D is ?, 20 is ?) C3/0BB8: 08206E20 (position 08,20, 6E is ?, 20 is ?) C3/0BBC: 10206F20 (position 10,20, 6F is ?, 20 is ?) C3/0BC0: 18207820 (position 18,20, 78 is ?, 20 is ?) C3/0BC4: C70B C3/0BC6: FE (...) C3/0BC7: 0D (13 sets of data) C3/0BC8: 80008022 (position 80,00, 80 is ?, 22 is ?) C3/0BCC: 90008222 (position 90,00, 82 is ?, 22 is ?) C3/0BD0: 80108422 (position 80,10, 84 is ?, 22 is ?) C3/0BD4: 90108622 (position 90,10, 86 is ?, 22 is ?) C3/0BD8: 20008822 (position 20,00, 88 is ?, 22 is ?) C3/0BDC: 20088922 (position 20,08, 89 is ?, 22 is ?) C3/0BE0: 20108A22 (position 20,10, 8A is ?, 22 is ?) C3/0BE4: 20188B22 (position 20,18, 8B is ?, 22 is ?) C3/0BE8: 20208C22 (position 20,20, 8C is ?, 22 is ?) C3/0BEC: 00208D22 (position 00,20, 8D is ?, 22 is ?) C3/0BF0: 08208E22 (position 08,20, 8E is ?, 22 is ?) C3/0BF4: 10208F22 (position 10,20, 8F is ?, 22 is ?) C3/0BF8: 18209822 (position 18,20, 98 is ?, 22 is ?) C3/0BFC: FF0B C3/0BFE: FE (...) C3/0BFF: 0D (13 sets of data) C3/0C00: 8000A024 C3/0C04: 9000A224 C3/0C08: 8010A424 C3/0C0C: 9010A624 C3/0C10: 2000A824 C3/0C14: 2008A924 C3/0C18: 2010AA24 C3/0C1C: 2018AB24 C3/0C20: 2020AC24 C3/0C24: 0020AD24 C3/0C28: 0820AE24 C3/0C2C: 1020AF24 C3/0C30: 1820B824 C3/0C34: 370C C3/0C36: FE (...) C3/0C37: 0D (13 sets of data) C3/0C38: 8000C026 C3/0C3C: 9000C226 C3/0C40: 8010C426 C3/0C44: 9010C626 C3/0C48: 2000C826 C3/0C4C: 2008C926 C3/0C50: 2010CA26 C3/0C54: 2018CB26 C3/0C58: 2020CC26 C3/0C5C: 0020CD26 C3/0C60: 0820CE26 C3/0C64: 1020CF26 C3/0C68: 1820D826
C3/0C6C display character level, HP and MP
This same function is used for main menu, skills screen, status screen, equipment, relics, or save screen C3/0C6C: 86EF STX $EF (save position to look in rom) C3/0C6E: A9C3 LDA #$C3 C3/0C70: 85F1 STA $F1 (C3/xxxx holds the stats for this character) C3/0C72: A667 LDX $67 C3/0C74: BD0800 LDA $0008,X (Level) C3/0C77: 20E004 JSR $04E0 C3/0C7A: C220 REP #$20 C3/0C7C: A7EF LDA [$EF] (load stat position for tilemap) C3/0C7E: AA TAX C3/0C7F: E220 SEP #$20 C3/0C81: 20B604 JSR $04B6 C3/0C84: A667 LDX $67 C3/0C86: BD0B00 LDA $000B,X (maximum HP, high byte) C3/0C89: 85F3 STA $F3 C3/0C8B: BD0C00 LDA $000C,X (maximum HP, low byte) C3/0C8E: 85F4 STA $F4 C3/0C90: 20650D JSR $0D65 (boost HP according to equipment) C3/0C93: 20920D JSR $0D92 (truncate HP display to 9999) C3/0C96: 202E05 JSR $052E (convert to displayable digits) C3/0C99: A00400 LDY #$0004 C3/0C9C: 20210D JSR $0D21 C3/0C9F: A467 LDY $67 C3/0CA1: 209A2B JSR $2B9A C3/0CA4: B90900 LDA $0009,Y (current HP, high byte) C3/0CA7: 85F3 STA $F3 C3/0CA9: B90A00 LDA $000A,Y (current HP, low byte) C3/0CAC: 85F4 STA $F4 C3/0CAE: 202E05 JSR $052E (convert to displayable digits) C3/0CB1: A00200 LDY #$0002 C3/0CB4: 20210D JSR $0D21 C3/0CB7: 202B0D JSR $0D2B (check to see if this character knows magic) C3/0CBA: 9033 BCC $0CEF (branch if character doesn't know any magic) C3/0CBC: A667 LDX $67 C3/0CBE: BD0F00 LDA $000F,X (maximum MP, high byte) C3/0CC1: 85F3 STA $F3 C3/0CC3: BD1000 LDA $0010,X (maximum MP, low byte) C3/0CC6: 85F4 STA $F4 C3/0CC8: 20650D JSR $0D65 (boost MP according to equipment) C3/0CCB: 209F0D JSR $0D9F (truncate MP display to 999) C3/0CCE: 202E05 JSR $052E (convert to displayable digits) C3/0CD1: A00800 LDY #$0008 C3/0CD4: 20210D JSR $0D21 C3/0CD7: A467 LDY $67 C3/0CD9: 20BC2B JSR $2BBC C3/0CDC: B90D00 LDA $000D,Y (current MP, high byte) C3/0CDF: 85F3 STA $F3 C3/0CE1: B90E00 LDA $000E,Y (current MP, low byte) C3/0CE4: 85F4 STA $F4 C3/0CE6: 202E05 JSR $052E (convert to displayable digits) C3/0CE9: A00600 LDY #$0006 C3/0CEC: 4C210D JMP $0D21 (BRA fool!)
C3/0CEF unknow
C3/0CEF: A28B9E LDX #$9E8B C3/0CF2: 8E8121 STX $2181 C3/0CF5: C220 REP #$20 (16 bit memory/accum.) C3/0CF7: A00600 LDY #$0006 C3/0CFA: B7EF LDA [$EF],Y C3/0CFC: 38 SEC C3/0CFD: E90600 SBC #$0006 C3/0D00: 8F899E7E STA $7E9E89 C3/0D04: E220 SEP #$20 (8 bit memory/accum.) C3/0D06: A20C00 LDX #$000C C3/0D09: A9FF LDA #$FF C3/0D0B: 8D8021 STA $2180 C3/0D0E: CA DEX C3/0D0F: D0FA BNE $0D0B (draw 12 spaces) C3/0D11: 9C8021 STZ $2180 (end this string) C3/0D14: A0899E LDY #$9E89 (JMP $7FD9 fool!) C3/0D17: 84E7 STY $E7 C3/0D19: A97E LDA #$7E C3/0D1B: 85E9 STA $E9 C3/0D1D: 20FF02 JSR $02FF (JMP fool!) C3/0D20: 60 RTS
C3/0D21 unknow
C3/0D21: C220 REP #$20 (16 bit memory/accum.) C3/0D23: B7EF LDA [$EF],Y C3/0D25: AA TAX C3/0D26: E220 SEP #$20 (8 bit memory/accum.) C3/0D28: 4C9004 JMP $0490
C3/0D2B check if character knows magic
C3/0D2B: AD691A LDA $1A69 (from C3/0CB7) C3/0D2E: 0D6A1A ORA $1A6A C3/0D31: 0D6B1A ORA $1A6B C3/0D34: 0D6C1A ORA $1A6C C3/0D37: D02A BNE $0D63 (branch if you have at least one esper) C3/0D39: A667 LDX $67 C3/0D3B: 7B TDC C3/0D3C: BD0000 LDA $0000,X (character ID) C3/0D3F: C90C CMP #$0C C3/0D41: F020 BEQ $0D63 (Branch if it's Gogo) C3/0D43: B01C BCS $0D61 (Branch if it's Umaro or higher) C3/0D45: 8D0242 STA $4202 (we're here if character is below Gogo, and you have no espers) C3/0D48: A936 LDA #$36 C3/0D4A: 8D0342 STA $4203 (#$36 as multiplier) C3/0D4D: EA NOP C3/0D4E: EA NOP C3/0D4F: EA NOP C3/0D50: A03600 LDY #$0036 (TAY?) C3/0D53: AE1642 LDX $4216 (load character * spell total) C3/0D56: BD6E1A LDA $1A6E,X (load spell at X) C3/0D59: C9FF CMP #$FF (learned it?) C3/0D5B: F006 BEQ $0D63 (branch if so) C3/0D5D: E8 INX C3/0D5E: 88 DEY C3/0D5F: D0F5 BNE $0D56 (branch if we haven't checked every spell) C3/0D61: 18 CLC (used by C3/0C6C, says that this character doesn't know magic) C3/0D62: 60 RTS C3/0D63: 38 SEC (flag MP as ok to display) C3/0D64: 60 RTS
C3/0D65 adjust HP and MP based on equipment
This is called by both HP and MP to adjust their values based on boosting equipment C3/0D65: C220 REP #$20 (16 bit memory/accum.) C3/0D67: A5F3 LDA $F3 (load HP/MP) C3/0D69: 29FF3F AND #$3FFF (only keep the HP/MP) C3/0D6C: 85E7 STA $E7 (save it to a temp location) C3/0D6E: A5F3 LDA $F3 (load HP/MP again) C3/0D70: 2900C0 AND #$C000 (this time keep only the boosts) C3/0D73: 18 CLC (this is crucial) C3/0D74: 2A ROL A C3/0D75: 2A ROL A C3/0D76: 2A ROL A C3/0D77: 2A ROL A (transfer boosts to lower two bits) C3/0D78: AA TAX (index them) C3/0D79: A5E7 LDA $E7 (load our non-boosted HP/MP) C3/0D7B: 7C7E0D JMP ($0D7E,X)
C3/0D7E pointers: HP and MP boosts
C3/0D7E: 860D (no HP/MP boost) C3/0D80: 880D (25% HP/MP boost) C3/0D82: 890D (50% HP/MP boost) C3/0D84: 870D (12.5% HP/MP boost)
C3/0D86 HP and MP boosts
C3/0D86: 7B TDC C3/0D87: 4A LSR A C3/0D88: 4A LSR A C3/0D89: 4A LSR A C3/0D8A: 18 CLC C3/0D8B: 65E7 ADC $E7 (add in the non-boosted HP/MP) C3/0D8D: 85F3 STA $F3 (save new boosted HP/MP) C3/0D8F: E220 SEP #$20 (8 bit memory/accum.) C3/0D91: 60 RTS
C3/0D92 trim HP if HP above 9999
C3/0D92: A6F3 LDX $F3 C3/0D94: E01027 CPX #$2710 C3/0D97: 9005 BCC $0D9E C3/0D99: A20F27 LDX #$270F C3/0D9C: 86F3 STX $F3 C3/0D9E: 60 RTS
C3/0D9F trim MP if MP above 999
C3/0D9F: A6F3 LDX $F3 C3/0DA1: E0E803 CPX #$03E8 C3/0DA4: 9005 BCC $0DAB C3/0DA6: A2E703 LDX #$03E7 C3/0DA9: 86F3 STX $F3 C3/0DAB: 60 RTS
C3/0DAC unknow
C3/0DAC: AC2F02 LDY $022F C3/0DAF: 844F STY $4F C3/0DB1: A54F LDA $4F C3/0DB3: 854D STA $4D C3/0DB5: AD3102 LDA $0231 C3/0DB8: 8064 BRA $0E1E
C3/0DBA unknow
C3/0DBA: 7B TDC C3/0DBB: A54B LDA $4B C3/0DBD: 0A ASL A C3/0DBE: AA TAX C3/0DBF: A528 LDA $28 C3/0DC1: 0A ASL A C3/0DC2: A8 TAY C3/0DC3: C220 REP #$20 (16 bit memory/accum.) C3/0DC5: BD3602 LDA $0236,X C3/0DC8: 85E7 STA $E7 C3/0DCA: B93602 LDA $0236,Y C3/0DCD: 9D3602 STA $0236,X C3/0DD0: A5E7 LDA $E7 C3/0DD2: 993602 STA $0236,Y C3/0DD5: BD3E02 LDA $023E,X C3/0DD8: 85E7 STA $E7 C3/0DDA: B93E02 LDA $023E,Y C3/0DDD: 9D3E02 STA $023E,X C3/0DE0: A5E7 LDA $E7 C3/0DE2: 993E02 STA $023E,Y C3/0DE5: E220 SEP #$20 (8 bit memory/accum.) C3/0DE7: 7B TDC C3/0DE8: A54B LDA $4B C3/0DEA: AA TAX C3/0DEB: A528 LDA $28 C3/0DED: A8 TAY C3/0DEE: BD4602 LDA $0246,X C3/0DF1: 85E0 STA $E0 C3/0DF3: B94602 LDA $0246,Y C3/0DF6: 9D4602 STA $0246,X C3/0DF9: A5E0 LDA $E0 C3/0DFB: 994602 STA $0246,Y C3/0DFE: 60 RTS
C3/0DFF unknow
C3/0DFF: 7B TDC C3/0E00: A528 LDA $28 C3/0E02: 0A ASL A C3/0E03: AA TAX C3/0E04: BC3602 LDY $0236,X C3/0E07: 844D STY $4D C3/0E09: 60 RTS
C3/0E0A unknow
C3/0E0A: 7B TDC C3/0E0B: A528 LDA $28 C3/0E0D: 0A ASL A C3/0E0E: AA TAX C3/0E0F: BC3E02 LDY $023E,X C3/0E12: 844F STY $4F C3/0E14: A54F LDA $4F C3/0E16: 854D STA $4D C3/0E18: A528 LDA $28 C3/0E1A: AA TAX C3/0E1B: BD4602 LDA $0246,X C3/0E1E: 854A STA $4A C3/0E20: A550 LDA $50 C3/0E22: 38 SEC C3/0E23: E54A SBC $4A C3/0E25: 854E STA $4E C3/0E27: 60 RTS
C3/0E28 unknow
C3/0E28: A00000 LDY #$0000 C3/0E2B: 8C1621 STY $2116 C3/0E2E: A04938 LDY #$3849 C3/0E31: 8C0243 STY $4302 (set address, 7E/3849) C3/0E34: 8052 BRA $0E88 (BRA $0E85...)
C3/0E36: A00004 LDY #$0400 (from C3/674F, C3/7E04, C3/8F13, C3/90E4, C3/AB46, C3/AD6B) C3/0E39: 8C1621 STY $2116 C3/0E3C: A04940 LDY #$4049 C3/0E3F: 8C0243 STY $4302 (set address, 7E/4049) C3/0E42: 8044 BRA $0E88 (BRA $0E85...)
C3/0E44: A00008 LDY #$0800 (from C3/6752, C3/B933) C3/0E47: 8C1621 STY $2116 C3/0E4A: A04948 LDY #$4849 C3/0E4D: 8C0243 STY $4302 (set address, 7E/4849) C3/0E50: 8036 BRA $0E88 (BRA $0E85...)
C3/0E52: A00010 LDY #$1000 C3/0E55: 8C1621 STY $2116 C3/0E58: A04958 LDY #$5849 C3/0E5B: 8C0243 STY $4302 (set address, 7E/5849) C3/0E5E: 8028 BRA $0E88 (BRA $0E85...)
C3/0E60: A00018 LDY #$1800 (from C3/B92A) C3/0E63: 8C1621 STY $2116 C3/0E66: A04968 LDY #$6849 C3/0E69: 8C0243 STY $4302 (set address, 7E/6849) C3/0E6C: 801A BRA $0E88 (BRA $0E85...)
C3/0E6E: A00040 LDY #$4000 C3/0E71: 8C1621 STY $2116 C3/0E74: A04978 LDY #$7849 C3/0E77: 8C0243 STY $4302 (set address, 7E/7849) C3/0E7A: 800C BRA $0E88 (BRA $0E85...)
C3/0E7C: A00048 LDY #$4800 (from C3/1899, C3/31A5, C3/5D80, C3/7E0A, C3/AD5C, C3/B94B) C3/0E7F: 8C1621 STY $2116 C3/0E82: A04988 LDY #$8849 C3/0E85: 8C0243 STY $4302 (set address, 7E/8849) C3/0E88: A901 LDA #$01 C3/0E8A: 8D0043 STA $4300 C3/0E8D: A918 LDA #$18 C3/0E8F: 8D0143 STA $4301 (register address becomes $2118) C3/0E92: A97E LDA #$7E C3/0E94: 8D0443 STA $4304 (set bank) C3/0E97: A00010 LDY #$1000 C3/0E9A: 8C0543 STY $4305 (amount to transfer) C3/0E9D: A901 LDA #$01 C3/0E9F: 8D0B42 STA $420B (turn on channel 0 of DMA) C3/0EA2: 60 RTS
C3/0EA3 unknow
C3/0EA3: A5AE LDA $AE C3/0EA5: C921 CMP #$21 C3/0EA7: F008 BEQ $0EB1 (if $AE is already #$21, don't output any sound for moving the finger) C3/0EA9: A921 LDA #$21 C3/0EAB: 85AE STA $AE C3/0EAD: 8F402100 STA $002140 (here if you can move and have moved, output sound and trigger no more sound) C3/0EB1: 60 RTS
C3/0EB2 click sound
C3/0EB2: A920 LDA #$20 (20 is the familiar "click" sound) C3/0EB4: 8F402100 STA $002140 C3/0EB8: 60 RTS
C3/0EB9 healing sound
C3/0EB9: A923 LDA #$23 (23 is the "heal" sound, like when you use a potion) C3/0EBB: 8F402100 STA $002140 C3/0EBF: 60 RTS
C3/0EC0 buzzer sound
Makes the Buzzer Sound C3/0EC0: A922 LDA #$22 (22 is the "buzz" sound, as in "No, you can't do that") C3/0EC2: 8F402100 STA $002140 C3/0EC6: 60 RTS
C3/0EC7 shift sound
Makes the Shift Sound C3/0EC7: A924 LDA #$24 (24 is the "shift" sound, deleting letters while naming a character) C3/0EC9: 8F402100 STA $002140 C3/0ECD: 60 RTS
C3/0ECE cha-ching sound
Makes the Cha-ching Sound (I'm guessing) C3/0ECE: A9BF LDA #$BF C3/0ED0: 8F011300 STA $001301 C3/0ED4: A918 LDA #$18 C3/0ED6: 8F001300 STA $001300 C3/0EDA: A980 LDA #$80 C3/0EDC: 8F021300 STA $001302 C3/0EE0: 220400C5 JSL $C50004 C3/0EE4: 60 RTS
C3/0EE5 true sound
Makes the "Trueeeeeeee" Sound C3/0EE5: A9C5 LDA #$C5 C3/0EE7: 80E7 BRA $0ED0
C3/0EE9 unknow
C3/0EE9: A00000 LDY #$0000 C3/0EEC: 8414 STY $14 C3/0EEE: A04938 LDY #$3849 C3/0EF1: 8416 STY $16 C3/0EF3: A97E LDA #$7E C3/0EF5: 8518 STA $18 C3/0EF7: A00010 LDY #$1000 C3/0EFA: 8412 STY $12 C3/0EFC: 60 RTS
C3/0EFD unknow
C3/0EFD: A00000 LDY #$0000 C3/0F00: 8414 STY $14 C3/0F02: A04938 LDY #$3849 C3/0F05: 8416 STY $16 C3/0F07: A97E LDA #$7E C3/0F09: 8518 STA $18 C3/0F0B: A00008 LDY #$0800 C3/0F0E: 8412 STY $12 C3/0F10: 60 RTS
C3/0F11 unknow
C3/0F11: A00004 LDY #$0400 C3/0F14: 8414 STY $14 C3/0F16: A04940 LDY #$4049 C3/0F19: 8416 STY $16 C3/0F1B: A97E LDA #$7E C3/0F1D: 8518 STA $18 C3/0F1F: A00008 LDY #$0800 C3/0F22: 8412 STY $12 C3/0F24: 60 RTS
C3/0F25 unknow
C3/0F25: A00040 LDY #$4000 C3/0F28: 8414 STY $14 C3/0F2A: A04978 LDY #$7849 C3/0F2D: 8416 STY $16 C3/0F2F: A97E LDA #$7E C3/0F31: 8518 STA $18 C3/0F33: A00010 LDY #$1000 C3/0F36: 8412 STY $12 C3/0F38: 60 RTS
C3/0F39 unknow
C3/0F39: A00040 LDY #$4000 C3/0F3C: 8414 STY $14 C3/0F3E: A04978 LDY #$7849 C3/0F41: 8416 STY $16 C3/0F43: A97E LDA #$7E C3/0F45: 8518 STA $18 C3/0F47: A00008 LDY #$0800 C3/0F4A: 8412 STY $12 C3/0F4C: 60 RTS
C3/0F4D unknow
C3/0F4D: A00044 LDY #$4400 C3/0F50: 8414 STY $14 C3/0F52: A04980 LDY #$8049 C3/0F55: 8416 STY $16 C3/0F57: A97E LDA #$7E C3/0F59: 8518 STA $18 C3/0F5B: A00008 LDY #$0800 C3/0F5E: 8412 STY $12 C3/0F60: 60 RTS
C3/0F61 unknow
C3/0F61: A00040 LDY #$4000 C3/0F64: 841B STY $1B C3/0F66: A04978 LDY #$7849 C3/0F69: 841D STY $1D C3/0F6B: A97E LDA #$7E C3/0F6D: 851F STA $1F C3/0F6F: A00008 LDY #$0800 C3/0F72: 8419 STY $19 C3/0F74: 60 RTS
C3/0F75 unknow
C3/0F75: A00044 LDY #$4400 C3/0F78: 841B STY $1B C3/0F7A: A04980 LDY #$8049 C3/0F7D: 841D STY $1D C3/0F7F: A97E LDA #$7E C3/0F81: 851F STA $1F C3/0F83: A00008 LDY #$0800 C3/0F86: 8419 STY $19 C3/0F88: 60 RTS
C3/0F89 unknow
C3/0F89: 641B STZ $1B C3/0F8B: 641C STZ $1C C3/0F8D: 60 RTS
C3/0F8E copy function
Copy a block of 32 bytes Coming in: 8-bit A holds bank source 16-bit Y holds destination 16-bit X holds address source C3/0F8E: 85ED STA $ED (source bank) C3/0F90: 84E7 STY $E7 (destination address) C3/0F92: 86EB STX $EB (source address) C3/0F94: A97E LDA #$7E C3/0F96: 85E9 STA $E9 (destination bank) C3/0F98: A400 LDY $00 C3/0F9A: C220 REP #$20 (16 bit memory/accum.) C3/0F9C: B7EB LDA [$EB],Y C3/0F9E: 97E7 STA [$E7],Y C3/0FA0: C8 INY C3/0FA1: C8 INY C3/0FA2: C02000 CPY #$0020 C3/0FA5: D0F5 BNE $0F9C C3/0FA7: E220 SEP #$20 (8 bit memory/accum.) C3/0FA9: 60 RTS
C3/0FAA unknow
C3/0FAA: 48 PHA C3/0FAB: 84E7 STY $E7 C3/0FAD: 86EB STX $EB C3/0FAF: A97E LDA #$7E C3/0FB1: 85E9 STA $E9 C3/0FB3: A900 LDA #$00 C3/0FB5: A0DD0F LDY #$0FDD C3/0FB8: 207311 JSR $1173 (put C3/0FDD in the queue) C3/0FBB: 68 PLA C3/0FBC: 9FCA377E STA $7E37CA,X C3/0FC0: A5E9 LDA $E9 C3/0FC2: 9FC9367E STA $7E36C9,X C3/0FC6: A5ED LDA $ED C3/0FC8: 9FCA367E STA $7E36CA,X C3/0FCC: C220 REP #$20 (16 bit memory/accum.) C3/0FCE: A5E7 LDA $E7 C3/0FD0: 9FC9337E STA $7E33C9,X C3/0FD4: A5EB LDA $EB C3/0FD6: 9F49347E STA $7E3449,X C3/0FDA: E220 SEP #$20 (8 bit memory/accum.) C3/0FDC: 60 RTS
C3/0FDD jump table
C3/0FDD: AA TAX C3/0FDE: 7CE10F JMP ($0FE1,X) C3/0FE1: E50F C3/0FE3: F60F
C3/0FE5 unknow
C3/0FE5: A62D LDX $2D C3/0FE7: A91F LDA #$1F C3/0FE9: 9D4933 STA $3349,X C3/0FEC: A500 LDA $00 C3/0FEE: 9D4A33 STA $334A,X C3/0FF1: FE4936 INC $3649,X (execute the next entry in this queue's jump table) C3/0FF4: 38 SEC (not done yet with this queue) C3/0FF5: 60 RTS