Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
The wiki has recently moved; please report any issues in Discord. Pardon the dust.
Final Fantasy VI/ROM map/Assembly C31
< Final Fantasy VI | ROM map
Jump to navigation
Jump to search
This is a sub-page of Final Fantasy VI/ROM map.
C3/0FF6 unknow
C3/0FF6: A62D LDX $2D C3/0FF8: BDC935 LDA $35C9,X C3/0FFB: D035 BNE $1032 C3/0FFD: BDCA37 LDA $37CA,X C3/1000: 9DC935 STA $35C9,X C3/1003: BDC936 LDA $36C9,X C3/1006: 85E2 STA $E2 C3/1008: BDCA36 LDA $36CA,X C3/100B: 85E5 STA $E5 C3/100D: C220 REP #$20 (16 bit memory/accum.) C3/100F: BDC933 LDA $33C9,X C3/1012: 85E0 STA $E0 C3/1014: BD4934 LDA $3449,X C3/1017: 85E3 STA $E3 C3/1019: BD4933 LDA $3349,X C3/101C: 85F1 STA $F1 C3/101E: 203710 JSR $1037 C3/1021: E220 SEP #$20 (8 bit memory/accum.) C3/1023: AE2D00 LDX $002D C3/1026: BD4933 LDA $3349,X C3/1029: F005 BEQ $1030 C3/102B: DE4933 DEC $3349,X C3/102E: D002 BNE $1032 C3/1030: 18 CLC (this queue can be removed) C3/1031: 60 RTS C3/1032: DEC935 DEC $35C9,X C3/1035: 38 SEC (not done yet with this queue) C3/1036: 60 RTS
C3/1037 unknow
C3/1037: A21000 LDX #$0010 C3/103A: A400 LDY $00 C3/103C: B7E0 LDA [$E0],Y C3/103E: 85E7 STA $E7 C3/1040: B7E3 LDA [$E3],Y C3/1042: 85E9 STA $E9 C3/1044: 205110 JSR $1051 C3/1047: A5E7 LDA $E7 C3/1049: 97E0 STA [$E0],Y C3/104B: C8 INY C3/104C: C8 INY C3/104D: CA DEX C3/104E: D0EC BNE $103C C3/1050: 60 RTS
C3/1051 unknow
C3/1051: A5E7 LDA $E7 C3/1053: 291F00 AND #$001F C3/1056: 85EB STA $EB C3/1058: A5E9 LDA $E9 C3/105A: 291F00 AND #$001F C3/105D: 38 SEC C3/105E: E5EB SBC $EB C3/1060: F00C BEQ $106E C3/1062: 9008 BCC $106C C3/1064: C5F1 CMP $F1 C3/1066: 9006 BCC $106E C3/1068: E6EB INC $EB C3/106A: 8002 BRA $106E C3/106C: C6EB DEC $EB C3/106E: A5E7 LDA $E7 C3/1070: 29E003 AND #$03E0 C3/1073: 85ED STA $ED C3/1075: A5E9 LDA $E9 C3/1077: 29E003 AND #$03E0 C3/107A: 38 SEC C3/107B: E5ED SBC $ED C3/107D: F01C BEQ $109B C3/107F: 9012 BCC $1093 C3/1081: 0A ASL A C3/1082: 0A ASL A C3/1083: 0A ASL A C3/1084: EB XBA C3/1085: C5F1 CMP $F1 C3/1087: 9012 BCC $109B C3/1089: 18 CLC C3/108A: A5ED LDA $ED C3/108C: 692000 ADC #$0020 C3/108F: 85ED STA $ED C3/1091: 8008 BRA $109B C3/1093: A5ED LDA $ED C3/1095: 38 SEC C3/1096: E92000 SBC #$0020 C3/1099: 85ED STA $ED C3/109B: A5E7 LDA $E7 C3/109D: 29007C AND #$7C00 C3/10A0: 85EF STA $EF C3/10A2: A5E9 LDA $E9 C3/10A4: 29007C AND #$7C00 C3/10A7: 38 SEC C3/10A8: E5EF SBC $EF C3/10AA: F01F BEQ $10CB C3/10AC: 9015 BCC $10C3 C3/10AE: E220 SEP #$20 C3/10B0: EB XBA C3/10B1: 4A LSR A C3/10B2: 4A LSR A C3/10B3: C220 REP #$20 (16 bit memory/accum.) C3/10B5: C5F1 CMP $F1 C3/10B7: 9012 BCC $10CB C3/10B9: 18 CLC C3/10BA: A5EF LDA $EF C3/10BC: 690004 ADC #$0400 C3/10BF: 85EF STA $EF C3/10C1: 8008 BRA $10CB C3/10C3: A5EF LDA $EF C3/10C5: 38 SEC C3/10C6: E90004 SBC #$0400 C3/10C9: 85EF STA $EF C3/10CB: A5EB LDA $EB C3/10CD: 05ED ORA $ED C3/10CF: 05EF ORA $EF C3/10D1: 85E7 STA $E7 C3/10D3: 60 RTS
C3/10D4 data
C3/10D4: 0000 C3/10D6: FF7F C3/10D8: FF7F C3/10DA: FF7F C3/10DC: FF7F C3/10DE: FF7F C3/10E0: FF7F C3/10E2: FF7F C3/10E4: FF7F C3/10E6: FF7F C3/10E8: FF7F C3/10EA: FF7F C3/10EC: FF7F C3/10EE: FF7F C3/10F0: FF7F C3/10F2: FF7F
C3/10F4 data
Data, loaded from C3/D15C via C3/0F8E We need a table for a bunch of zeroes? C3/10F4: 0000 C3/10F6: 0000 C3/10F8: 0000 C3/10FA: 0000 C3/10FC: 0000 C3/10FE: 0000 C3/1100: 0000 C3/1102: 0000 C3/1104: 0000 C3/1106: 0000 C3/1108: 0000 C3/110A: 0000 C3/110C: 0000 C3/110E: 0000 C3/1110: 0000 C3/1112: 0000
C3/1114 unknow
C3/1114: A600 LDX $00 C3/1116: 862D STX $2D (set queue position to 0) C3/1118: 862F STX $2F C3/111A: C220 REP #$20 (16 bit memory/accum.) C3/111C: 204E11 JSR $114E C3/111F: E210 SEP #$10 (8 bit index registers) C3/1121: A27E LDX #$7E C3/1123: DA PHX C3/1124: AB PLB (set bank to 7E) C3/1125: A200 LDX #$00 C3/1127: 9E4932 STZ $3249,X (zero this jump address) C3/112A: 9E4936 STZ $3649,X (zero this jump entry) C3/112D: 9EC935 STZ $35C9,X (zero this pointer to OAM) C3/1130: 9E4937 STZ $3749,X C3/1133: 9EC933 STZ $33C9,X C3/1136: 9E4934 STZ $3449,X C3/1139: 9EC934 STZ $34C9,X C3/113C: 9E4935 STZ $3549,X C3/113F: E8 INX C3/1140: E8 INX C3/1141: E080 CPX #$80 (have we done the whole "stack" yet?) C3/1143: D0E2 BNE $1127 (branch if not) C3/1145: A200 LDX #$00 C3/1147: DA PHX C3/1148: AB PLB (set bank to 0) C3/1149: E220 SEP #$20 (8 bit memory/accum.) C3/114B: C210 REP #$10 (16 bit index registers) C3/114D: 60 RTS
C3/114E clean out all oam data
C3/114E: A600 LDX $00 C3/1150: A901E0 LDA #$E001 C3/1152: 9D0003 STA $0300,X C3/1155: E8 INX C3/1157: E8 INX C3/1158: A90100 LDA #$0001 (TDC then INC A...) C3/115A: 9D0003 STA $0300,X C3/115E: E8 INX C3/115F: E8 INX C3/1160: E00002 CPX #$0200 C3/1163: D0EB BNE $1150 C3/1165: A400 LDY $00 C3/1167: 98 TYA C3/1168: 990005 STA $0500,Y C3/116B: C8 INY C3/116C: C8 INY C3/116D: C02000 CPY #$0020 C3/1170: D0F6 BNE $1168 C3/1172: 60 RTS
C3/1173 queue up routines for oam purposes
Coming in: 8-bit A holds position in queue to execute? 16-bit Y holds address in bank C3 to execute C3/1173: AA TAX C3/1174: A97E LDA #$7E C3/1176: 48 PHA C3/1177: AB PLB C3/1178: 8A TXA C3/1179: 208B11 JSR $118B (set the jump address) C3/117C: E220 SEP #$20 (8 bit memory/accum.) C3/117E: A900 LDA #$00 C3/1180: 48 PHA C3/1181: AB PLB C3/1182: A52D LDA $2D C3/1184: 9F4A377E STA $7E374A,X C3/1188: E62F INC $2F C3/118A: 60 RTS
C3/118B unknow
C3/118B: EB XBA C3/118C: A900 LDA #$00 C3/118E: EB XBA C3/118F: 0A ASL A C3/1190: 0A ASL A C3/1191: 0A ASL A C3/1192: 0A ASL A C3/1193: C220 REP #$20 (16 bit memory/accum.) C3/1195: AA TAX C3/1196: BD4932 LDA $3249,X (load this jump address) C3/1199: D005 BNE $11A0 (branch if one exists) C3/119B: 98 TYA C3/119C: 9D4932 STA $3249,X (otherwise save the jump address here) C3/119F: 60 RTS
C3/11A0 unknow
C3/11A0: E8 INX C3/11A1: E8 INX C3/11A2: E08000 CPX #$0080 (have we run through the whole "stack?") C3/11A5: D0EF BNE $1196 (branch if not) C3/11A7: CA DEX C3/11A8: CA DEX C3/11A9: 98 TYA C3/11AA: 9D4932 STA $3249,X C3/11AD: 80FE BRA $11AD (Changing this to 80 ED unfreezes Novalia Spirit's Shop bug) C3/11AF: 60 RTS
C3/11B0 execute the entire oam queue
C3/11B0: 8B PHB C3/11B1: A97E LDA #$7E C3/11B3: 48 PHA C3/11B4: AB PLB C3/11B5: A20003 LDX #$0300 C3/11B8: 860E STX $0E C3/11BA: A20005 LDX #$0500 C3/11BD: 8610 STX $10 C3/11BF: A903 LDA #$03 C3/11C1: 8533 STA $33 (LDX #$0003...) C3/11C3: 6434 STZ $34 (STX $34?) C3/11C5: A28000 LDX #$0080 C3/11C8: 8631 STX $31 C3/11CA: A600 LDX $00 C3/11CC: C220 REP #$20 (16 bit memory/accum.) C3/11CE: BD4932 LDA $3249,X (jump address) C3/11D1: F022 BEQ $11F5 (branch if none) C3/11D3: 862D STX $2D (save X's position for now) C3/11D5: DA PHX C3/11D6: 852B STA $2B (save the jump address) C3/11D8: E220 SEP #$20 (8 bit memory/accum.) C3/11DA: 7B TDC C3/11DB: BD4936 LDA $3649,X (jump entry) C3/11DE: 0A ASL A (double it, since we're executing a jump table most of the time) C3/11DF: 200312 JSR $1203 C3/11E2: C220 REP #$20 (16 bit memory/accum.) C3/11E4: FA PLX C3/11E5: B00E BCS $11F5 C3/11E7: 9E4932 STZ $3249,X (zero this jump address) C3/11EA: 9E4936 STZ $3649,X (zero this jump entry) C3/11ED: 9EC935 STZ $35C9,X (zero this pointer to OAM) C3/11F0: 9E4937 STZ $3749,X C3/11F3: C62F DEC $2F C3/11F5: E8 INX C3/11F6: E8 INX C3/11F7: E08000 CPX #$0080 (have we run through the whole "stack" yet?) C3/11FA: D0D2 BNE $11CE (branch if not) C3/11FC: 203813 JSR $1338 C3/11FF: E220 SEP #$20 (8 bit memory/accum.) C3/1201: AB PLB C3/1202: 60 RTS
C3/1203: 6C2B00 JMP ($002B) (execute whatever is queued up)
C3/1206 unknow
C3/1206: 7B TDC C3/1207: 9DC936 STA $36C9,X C3/120A: C220 REP #$20 (16 bit memory/accum.) C3/120C: BDC932 LDA $32C9,X (load pointer to OAM data) C3/120F: 85EB STA $EB C3/1211: E220 SEP #$20 (8 bit memory/accum.) C3/1213: BDCA35 LDA $35CA,X (load bank pointer to OAM data) C3/1216: 85ED STA $ED C3/1218: A00200 LDY #$0002 C3/121B: B7EB LDA [$EB],Y C3/121D: 9DCA36 STA $36CA,X C3/1220: 60 RTS
C3/1221 unknow
C3/1221: 202712 JSR $1227 (prep the sprites?) C3/1224: 4C7312 JMP $1273 (draw the sprites, also BRA fool!)
C3/1227 unknow
C3/1227: A62D LDX $2D C3/1229: A400 LDY $00 C3/122B: C220 REP #$20 (16 bit memory/accum.) C3/122D: BDC932 LDA $32C9,X (load pointer to OAM data) C3/1230: 85EB STA $EB C3/1232: E220 SEP #$20 (8 bit memory/accum.) C3/1234: BDCA35 LDA $35CA,X (load bank pointer to OAM data) C3/1237: 85ED STA $ED C3/1239: BDCA36 LDA $36CA,X C3/123C: C9FE CMP #$FE C3/123E: F022 BEQ $1262 C3/1240: C9FF CMP #$FF C3/1242: D008 BNE $124C C3/1244: 9EC936 STZ $36C9,X C3/1247: 206312 JSR $1263 C3/124A: 80ED BRA $1239 C3/124C: BDCA36 LDA $36CA,X C3/124F: D00E BNE $125F C3/1251: BDC936 LDA $36C9,X C3/1254: 18 CLC C3/1255: 6903 ADC #$03 C3/1257: 9DC936 STA $36C9,X C3/125A: 206312 JSR $1263 C3/125D: 80DA BRA $1239 C3/125F: DECA36 DEC $36CA,X C3/1262: 60 RTS
C3/1263 unknow
C3/1263: E210 SEP #$10 (8 bit index registers) C3/1265: BDC936 LDA $36C9,X C3/1268: A8 TAY C3/1269: C8 INY C3/126A: C8 INY C3/126B: B7EB LDA [$EB],Y C3/126D: 9DCA36 STA $36CA,X C3/1270: C210 REP #$10 (16 bit index registers) C3/1272: 60 RTS
C3/1273 unknow
C3/1273: E210 SEP #$10 (8 bit index registers) C3/1275: BDC936 LDA $36C9,X C3/1278: A8 TAY C3/1279: C220 REP #$20 (16 bit memory/accum.) C3/127B: B7EB LDA [$EB],Y C3/127D: 85E7 STA $E7 C3/127F: C8 INY C3/1280: C8 INY C3/1281: E220 SEP #$20 (8 bit memory/accum.) C3/1283: BDCA35 LDA $35CA,X (load bank pointer to OAM data) C3/1286: 85E9 STA $E9 C3/1288: C210 REP #$10 (16 bit index registers) C3/128A: A400 LDY $00 C3/128C: A531 LDA $31 C3/128E: F06B BEQ $12FB C3/1290: B7E7 LDA [$E7],Y C3/1292: 85E6 STA $E6 C3/1294: F065 BEQ $12FB C3/1296: C8 INY C3/1297: B7E7 LDA [$E7],Y C3/1299: 85E0 STA $E0 C3/129B: 1013 BPL $12B0 C3/129D: 7B TDC C3/129E: A533 LDA $33 C3/12A0: AA TAX C3/12A1: BF3413C3 LDA $C31334,X C3/12A5: 18 CLC C3/12A6: 6534 ADC $34 C3/12A8: 8534 STA $34 C3/12AA: 9210 STA ($10) C3/12AC: A62D LDX $2D C3/12AE: 8004 BRA $12B4 C3/12B0: A534 LDA $34 C3/12B2: 9210 STA ($10) C3/12B4: A5E0 LDA $E0 C3/12B6: 297F AND #$7F C3/12B8: 85E0 STA $E0 C3/12BA: BD4A36 LDA $364A,X C3/12BD: 8901 BIT #$01 C3/12BF: F00D BEQ $12CE C3/12C1: 64E1 STZ $E1 C3/12C3: C220 REP #$20 (16 bit memory/accum.) C3/12C5: A5E0 LDA $E0 C3/12C7: 38 SEC C3/12C8: E535 SBC $35 C3/12CA: 85E0 STA $E0 C3/12CC: E220 SEP #$20 (8 bit memory/accum.) C3/12CE: 20FC12 JSR $12FC C3/12D1: C633 DEC $33 C3/12D3: 100A BPL $12DF C3/12D5: A903 LDA #$03 C3/12D7: 8533 STA $33 C3/12D9: 6434 STZ $34 C3/12DB: C220 REP #$20 (16 bit memory/accum.) C3/12DD: E610 INC $10 C3/12DF: C220 REP #$20 (16 bit memory/accum.) C3/12E1: A5E0 LDA $E0 C3/12E3: 920E STA ($0E) C3/12E5: E60E INC $0E C3/12E7: E60E INC $0E C3/12E9: A5E2 LDA $E2 C3/12EB: 920E STA ($0E) C3/12ED: E60E INC $0E C3/12EF: E60E INC $0E C3/12F1: E220 SEP #$20 (8 bit memory/accum.) C3/12F3: C631 DEC $31 C3/12F5: F004 BEQ $12FB C3/12F7: C6E6 DEC $E6 C3/12F9: D09C BNE $1297 C3/12FB: 60 RTS
C3/12FC unknow
C3/12FC: A5E0 LDA $E0 C3/12FE: 18 CLC C3/12FF: 7DCA33 ADC $33CA,X C3/1302: 85E0 STA $E0 C3/1304: C8 INY C3/1305: B7E7 LDA [$E7],Y C3/1307: 18 CLC C3/1308: 7D4A34 ADC $344A,X C3/130B: 85E1 STA $E1 C3/130D: C8 INY C3/130E: B7E7 LDA [$E7],Y C3/1310: 85E2 STA $E2 C3/1312: C8 INY C3/1313: BD4A36 LDA $364A,X C3/1316: 8902 BIT #$02 C3/1318: F006 BEQ $1320 C3/131A: B7E7 LDA [$E7],Y C3/131C: 0940 ORA #$40 C3/131E: 8002 BRA $1322 C3/1320: B7E7 LDA [$E7],Y C3/1322: 85E3 STA $E3 C3/1324: BD4937 LDA $3749,X C3/1327: F009 BEQ $1332 C3/1329: A5E3 LDA $E3 C3/132B: 29F1 AND #$F1 C3/132D: 1D4937 ORA $3749,X C3/1330: 85E3 STA $E3 C3/1332: C8 INY C3/1333: 60 RTS
C3/1334 data
Data: accessed from above (C3/12A1) C3/1334: 8020 C3/1336: 0802
C3/1338 unknow
C3/1338: A434 LDY $34 C3/133A: F010 BEQ $134C C3/133C: A2FC01 LDX #$01FC C3/133F: A901E0 LDA #$E001 C3/1342: 9D0003 STA $0300,X C3/1345: CA DEX C3/1346: CA DEX C3/1347: CA DEX C3/1348: CA DEX C3/1349: 88 DEY C3/134A: D0F6 BNE $1342 C3/134C: 60 RTS
C3/134D unknow
C3/134D: 206813 JSR $1368 (trigger NMI) C3/1350: A546 LDA $46 C3/1352: 8920 BIT #$20 C3/1354: F003 BEQ $1359 C3/1356: 200581 JSR $8105 C3/1359: 226EA4C3 JSL $C3A46E (get Joypad status 1) C3/135D: A520 LDA $20 C3/135F: F006 BEQ $1367 C3/1361: 7B TDC C3/1362: A8 TAY C3/1363: 8408 STY $08 C3/1365: 840A STY $0A C3/1367: 60 RTS
C3/1368 unknow
C3/1368: A981 LDA #$81 C3/136A: 8D0042 STA $4200 C3/136D: 8524 STA $24 C3/136F: 58 CLI C3/1370: A524 LDA $24 C3/1372: D0FC BNE $1370 (wait for NMI to finish before proceeding) C3/1374: 78 SEI C3/1375: A544 LDA $44 C3/1377: 8D0021 STA $2100 C3/137A: A543 LDA $43 C3/137C: 8D0C42 STA $420C (turn on all enabled channels of HDMA) C3/137F: A5B5 LDA $B5 C3/1381: 8D0621 STA $2106 (and now it's mosaic!) C3/1384: 64AE STZ $AE C3/1386: 60 RTS
C3/1387 nmi interrupt
C3/1387: 08 PHP (from 00/1500, set at C3/00CB) C3/1388: C230 REP #$30 C3/138A: 48 PHA C3/138B: DA PHX C3/138C: 5A PHY C3/138D: 8B PHB C3/138E: 0B PHD C3/138F: E220 SEP #$20 (8 bit memory/accum.) C3/1391: AD1042 LDA $4210 C3/1394: A900 LDA #$00 C3/1396: 48 PHA C3/1397: AB PLB C3/1398: A20000 LDX #$0000 (LDX $00?) C3/139B: DA PHX C3/139C: 2B PLD C3/139D: A524 LDA $24 C3/139F: F010 BEQ $13B1 C3/13A1: 201214 JSR $1412 (execute a bunch of DMA) C3/13A4: C220 REP #$20 (16 bit memory/accum.) C3/13A6: E6CF INC $CF C3/13A8: E220 SEP #$20 (8 bit memory/accum.) C3/13AA: A420 LDY $20 C3/13AC: F003 BEQ $13B1 C3/13AE: 88 DEY C3/13AF: 8420 STY $20 C3/13B1: 221500C0 JSL $C00015 C3/13B5: 22C813C3 JSL $C313C8 (get the game time played) C3/13B9: E623 INC $23 C3/13BB: 7B TDC C3/13BC: 8524 STA $24 (STZ $24?) C3/13BE: C230 REP #$30 (16 bit memory, accum., X, and Y registers) C3/13C0: 2B PLD C3/13C1: AB PLB C3/13C2: 7A PLY C3/13C3: FA PLX C3/13C4: 68 PLA C3/13C5: 28 PLP C3/13C6: 40 RTI C3/13C7: 40 RTI (IRQ jumps here, from 00/1504, set at C3/00D1)
C3/13C8 unknow
C3/13C8: AD1E02 LDA $021E (Load frame count) C3/13CB: C93C CMP #$3C (Is it 60?) C3/13CD: F002 BEQ $13D1 (If so, branch to below "carry out" into seconds) C3/13CF: 802B BRA $13FC (Otherwise, branch directly to overflow checks) C3/13D1: 9C1E02 STZ $021E (Set frames to 0) C3/13D4: AD1D02 LDA $021D (Load seconds) C3/13D7: C93B CMP #$3B (Is it 59?) C3/13D9: F005 BEQ $13E0 (If so, branch to below "carry out" into minutes) C3/13DB: EE1D02 INC $021D (Increment seconds) C3/13DE: 801C BRA $13FC (Branch to overflow checks) C3/13E0: 9C1D02 STZ $021D (Set seconds to 0) C3/13E3: AD1C02 LDA $021C (Load minutes) C3/13E6: C93B CMP #$3B (Is it 59?) C3/13E8: F005 BEQ $13EF (If so, branch to below "carry out" into hours) C3/13EA: EE1C02 INC $021C (Increment minutes) C3/13ED: 800D BRA $13FC (Branch to overflow checks) C3/13EF: 9C1C02 STZ $021C (Set minutes to 0) C3/13F2: AD1B02 LDA $021B (Load hours) C3/13F5: C963 CMP #$63 (Is it 99?) C3/13F7: F003 BEQ $13FC (If so, branch to overflow checks) C3/13F9: EE1B02 INC $021B (Increment hours) C3/13FC: AD1B02 LDA $021B (Load hours) C3/13FF: C963 CMP #$63 (Is it 99 now?) C3/1401: D00A BNE $140D (If not, branch to frame increment; hours haven't overflowed) C3/1403: AD1C02 LDA $021C (Otherwise, check minutes) C3/1406: C93B CMP #$3B (Is it 59?) C3/1408: D003 BNE $140D (If not, branch to frame increment; minutes haven't overflowed) C3/140A: 9C1D02 STZ $021D (Set seconds to 0) C3/140D: EE1E02 INC $021E (Increment frames) C3/1410: 7B TDC C3/1411: 6B RTL
C3/1412 unknow
C3/1412: 9C0C42 STZ $420C (turn off HDMA) C3/1415: 9C0B42 STZ $420B (turn off DMA) C3/1418: A535 LDA $35 C3/141A: 8D0D21 STA $210D C3/141D: A536 LDA $36 C3/141F: 8D0D21 STA $210D C3/1422: A537 LDA $37 C3/1424: 8D0E21 STA $210E C3/1427: A538 LDA $38 C3/1429: 8D0E21 STA $210E C3/142C: A539 LDA $39 C3/142E: 8D0F21 STA $210F C3/1431: A53A LDA $3A C3/1433: 8D0F21 STA $210F C3/1436: A53B LDA $3B C3/1438: 8D1021 STA $2110 C3/143B: A53C LDA $3C C3/143D: 8D1021 STA $2110 C3/1440: A53D LDA $3D C3/1442: 8D1121 STA $2111 C3/1445: A53E LDA $3E C3/1447: 8D1121 STA $2111 C3/144A: A53F LDA $3F C3/144C: 8D1221 STA $2112 C3/144F: A540 LDA $40 C3/1451: 8D1221 STA $2112 C3/1454: 2063D2 JSR $D263 C3/1457: 206314 JSR $1463 C3/145A: 20D214 JSR $14D2 C3/145D: 208814 JSR $1488 C3/1460: 4CAC14 JMP $14AC (BRA fool!)
C3/1463 dma routine 1
C3/1463: A600 LDX $00 (X = #$0000) C3/1465: 8E0221 STX $2102 C3/1468: 8A TXA (A = #$0000) C3/1469: 8D0443 STA $4304 (starting bank, $00) C3/146C: A902 LDA #$02 C3/146E: 8D0043 STA $4300 (set transfer method to...?) C3/1471: A904 LDA #$04 C3/1473: 8D0143 STA $4301 (register address becomes $2104) C3/1476: A00003 LDY #$0300 C3/1479: 8C0243 STY $4302 (starting location, 00/0300, OAM!) C3/147C: A02002 LDY #$0220 C3/147F: 8C0543 STY $4305 (amount to transfer) C3/1482: A901 LDA #$01 C3/1484: 8D0B42 STA $420B (turn on channel 0 of DMA) C3/1487: 60 RTS
C3/1488 dma routine 3
C3/1488: A414 LDY $14 C3/148A: 8C1621 STY $2116 C3/148D: A901 LDA #$01 C3/148F: 8D0043 STA $4300 (set transfer method to...?) C3/1492: A918 LDA #$18 C3/1494: 8D0143 STA $4301 (register address becomes $2118) C3/1497: A416 LDY $16 C3/1499: 8C0243 STY $4302 (starting location) C3/149C: A518 LDA $18 C3/149E: 8D0443 STA $4304 (starting bank) C3/14A1: A412 LDY $12 C3/14A3: 8C0543 STY $4305 (amount to transfer) C3/14A6: A901 LDA #$01 C3/14A8: 8D0B42 STA $420B (turn on channel 0 of DMA) C3/14AB: 60 RTS
C3/14AC dma routine 4
C3/14AC: A41B LDY $1B C3/14AE: F021 BEQ $14D1 C3/14B0: 8C1621 STY $2116 C3/14B3: A901 LDA #$01 C3/14B5: 8D0043 STA $4300 (set transfer method to...?) C3/14B8: A918 LDA #$18 C3/14BA: 8D0143 STA $4301 (register address becomes $2118) C3/14BD: A41D LDY $1D C3/14BF: 8C0243 STY $4302 (starting location) C3/14C2: A51F LDA $1F C3/14C4: 8D0443 STA $4304 (starting bank) C3/14C7: A419 LDY $19 C3/14C9: 8C0543 STY $4305 (amount to transfer) C3/14CC: A901 LDA #$01 C3/14CE: 8D0B42 STA $420B (turn on channel 0 of DMA) C3/14D1: 60 RTS
C3/14D2 dma routine 2
C3/14D2: A545 LDA $45 C3/14D4: 8901 BIT #$01 C3/14D6: F025 BEQ $14FD C3/14D8: A500 LDA $00 C3/14DA: 8D2121 STA $2121 C3/14DD: A902 LDA #$02 C3/14DF: 8D0043 STA $4300 (set transfer method to...?) C3/14E2: A922 LDA #$22 C3/14E4: 8D0143 STA $4301 (register address becomes $2122) C3/14E7: A04930 LDY #$3049 C3/14EA: 8C0243 STY $4302 (starting location) C3/14ED: A97E LDA #$7E C3/14EF: 8D0443 STA $4304 (starting bank, 7E/3049, palettes?) C3/14F2: A00002 LDY #$0200 C3/14F5: 8C0543 STY $4305 (amount to transfer) C3/14F8: A901 LDA #$01 C3/14FA: 8D0B42 STA $420B (turn on channel 0 of DMA) C3/14FD: 60 RTS
C3/14FE unknow
C3/14FE: AD1F02 LDA $021F (from C0/C4F0) C3/1501: F011 BEQ $1514 C3/1503: 206615 JSR $1566 (Load everything from SRAM) C3/1506: 20D119 JSR $19D1 (Calculate SRAM checksum) C3/1509: 20EB19 JSR $19EB (determine if save file exists) C3/150C: F006 BEQ $1514 (branch if not) C3/150E: 209515 JSR $1595 C3/1511: 7B TDC C3/1512: 8004 BRA $1518 C3/1514: E220 SEP #$20 (8 bit memory/accum.) C3/1516: A9FF LDA #$FF C3/1518: 8D0502 STA $0205 C3/151B: 7B TDC C3/151C: 6B RTL
C3/151D store everything to sram
C3/151D: 2903 AND #$03 C3/151F: 8FF07F30 STA $307FF0 C3/1523: 8D2402 STA $0224 C3/1526: 48 PHA (save current save slot) C3/1527: AC1B02 LDY $021B C3/152A: 8C6318 STY $1863 (save current time, lower two bytes) C3/152D: AD1D02 LDA $021D C3/1530: 8D6518 STA $1865 (save current time, upper byte) C3/1533: 208615 JSR $1586 C3/1536: 20D119 JSR $19D1 (Calculate SRAM checksum) C3/1539: A4E7 LDY $E7 (load checksum) C3/153B: 8CFE1F STY $1FFE (save it) C3/153E: 7B TDC C3/153F: 68 PLA (get current save slot) C3/1540: 0A ASL A C3/1541: AA TAX C3/1542: C220 REP #$20 (16 bit memory/accum.) C3/1544: BF5E15C3 LDA $C3155E,X C3/1548: AA TAX C3/1549: E220 SEP #$20 (8 bit memory/accum.) C3/154B: A400 LDY $00 C3/154D: B90016 LDA $1600,Y (current working RAM) C3/1550: 9F006030 STA $306000,X (save to SRAM) C3/1554: E8 INX C3/1555: C8 INY C3/1556: C0000A CPY #$0A00 (have we done all bytes for this save slot?) C3/1559: D0F2 BNE $154D (branch if not) C3/155B: 4C8370 JMP $7083 (write SRAM markers)
C3/155E data
Data: Different Slots start at different offsets in the SRAM C3/155E: 0000 (New game) C3/1560: 0000 (Slot 1) C3/1562: 000A (Slot 2) C3/1564: 0014 (Slot 3)
C3/1566 load everything from sram
C3/1566: EB XBA C3/1567: A500 LDA $00 C3/1569: EB XBA C3/156A: 0A ASL A C3/156B: AA TAX C3/156C: C220 REP #$20 (16 bit memory/accum.) C3/156E: BF5E15C3 LDA $C3155E,X C3/1572: AA TAX C3/1573: E220 SEP #$20 (8 bit memory/accum.) C3/1575: A400 LDY $00 C3/1577: BF006030 LDA $306000,X C3/157B: 990016 STA $1600,Y C3/157E: E8 INX C3/157F: C8 INY C3/1580: C0000A CPY #$0A00 C3/1583: D0F2 BNE $1577 C3/1585: 60 RTS
C3/1586 unknow
C3/1586: 7B TDC C3/1587: AA TAX C3/1588: BD8811 LDA $1188,X C3/158B: 9DA81F STA $1FA8,X C3/158E: E8 INX C3/158F: E01800 CPX #$0018 C3/1592: D0F4 BNE $1588 C3/1594: 60 RTS
C3/1595 unknow
C3/1595: 7B TDC C3/1596: AA TAX C3/1597: BDA81F LDA $1FA8,X C3/159A: 9D8811 STA $1188,X C3/159D: E8 INX C3/159E: E01800 CPX #$0018 C3/15A1: D0F4 BNE $1597 C3/15A3: 60 RTS
C3/15A4 unknow
C3/15A4: A0B315 LDY #$15B3 (get save screen hotspot data) C3/15A7: 4CFE05 JMP $05FE
C3/15AA unknow
C3/15AA: 202D07 JSR $072D C3/15AD: A0CE15 LDY #$15CE (get finger positioning for save screen) C3/15B0: 4C4006 JMP $0640
C3/15B3 data: save screen hotspots
C3/15B3: 80 00 00 01 03
C3/15B8 unknow
C3/15B8: A0C715 LDY #$15C7 (get load screen hotspot data) C3/15BB: 4CFE05 JMP $05FE
C3/15BE unknow
C3/15BE: 202D07 JSR $072D C3/15C1: A0CC15 LDY #$15CC (get finger positioning for load screen) C3/15C4: 4C4006 JMP $0640
C3/15C7 data: load screen hotspots
C3/15C7: 80 00 00 01 04
C3/15CC data: finger positions in save/load screen
C3/15CC: 081C (X/Y position of finger in "new game" slot) C3/15CE: 083C (X/Y position of finger in slot 1) C3/15D0: 0874 (X/Y position of finger in slot 2) C3/15D2: 08AC (X/Y position of finger in slot 3)
C3/15D4 unknow
C3/15D4: A0E315 LDY #$15E3 C3/15D7: 4CFE05 JMP $05FE
C3/15DA unknow
C3/15DA: 202D07 JSR $072D C3/15DD: A0E815 LDY #$15E8 C3/15E0: 4C4006 JMP $0640
C3/15E3 data: confirm save/load hotspots
C3/15E3: 80 00 00 01 02
C3/15E8 data: finger positioning for confirming save/load
C3/15E8: BF44 C3/15EA: BF54
C3/15EC unknow
C3/15EC: 20286A JSR $6A28 C3/15EF: 203216 JSR $1632 (get all 3 save files, display as needed) C3/15F2: 20873A JSR $3A87 C3/15F5: A09C18 LDY #$189C C3/15F8: 204103 JSR $0341 (draw new game window) C3/15FB: A920 LDA #$20 C3/15FD: 8529 STA $29 (set text color to white) C3/15FF: A0781A LDY #$1A78 C3/1602: 20F902 JSR $02F9 (display "Save") C3/1605: 4C9018 JMP $1890
C3/1608 unknow
C3/1608: 20286A JSR $6A28 C3/160B: 9C4E1D STZ $1D4E C3/160E: 20BC6B JSR $6BBC C3/1611: 20873A JSR $3A87 (determine new game window background) C3/1614: A09C18 LDY #$189C C3/1617: 204103 JSR $0341 (draw the "New game" window) C3/161A: AD4E1D LDA $1D4E (load saved bits) C3/161D: 2970 AND #$70 (keep cursor memory, sound mono, and gauge off) C3/161F: 8D4E1D STA $1D4E C3/1622: 203216 JSR $1632 (get all 3 save files, display as needed) C3/1625: A920 LDA #$20 C3/1627: 8529 STA $29 (set text color to white) C3/1629: A07F1A LDY #$1A7F C3/162C: 20F902 JSR $02F9 (display "New game") C3/162F: 4C9018 JMP $1890
C3/1632 unknow
C3/1632: 20606C JSR $6C60 C3/1635: A920 LDA #$20 C3/1637: 1443 TRB $43 (eventually disable channel 5 of HDMA) C3/1639: A00200 LDY #$0002 C3/163C: 8437 STY $37 C3/163E: AC551D LDY $1D55 (load font palette) C3/1641: 84E7 STY $E7 (save it for now) C3/1643: A0FF7F LDY #$7FFF C3/1646: 8C551D STY $1D55 C3/1649: 20993F JSR $3F99 C3/164C: A4E7 LDY $E7 C3/164E: 8C551D STY $1D55 C3/1651: A901 LDA #$01 C3/1653: 221DCAD4 JSL $D4CA1D (do gradient effect for save slot window 1, 2, and 3) C3/1657: 20156A JSR $6A15 C3/165A: 203C6A JSR $6A3C C3/165D: 20466A JSR $6A46 C3/1660: 20AC18 JSR $18AC (backup new game data) C3/1663: A901 LDA #$01 C3/1665: 8566 STA $66 (save slot 1) C3/1667: 206615 JSR $1566 (load this slots contents) C3/166A: 201569 JSR $6915 C3/166D: 20D119 JSR $19D1 (Calculate SRAM checksum) C3/1670: 20EB19 JSR $19EB (determine if save file exists) C3/1673: 8491 STY $91 (save result) C3/1675: F00B BEQ $1682 (branch if save file 1 is empty) C3/1677: 20616F JSR $6F61 C3/167A: 201D17 JSR $171D C3/167D: 20F53A JSR $3AF5 C3/1680: 8013 BRA $1695 (save file 1 exists) C3/1682: 20C118 JSR $18C1 (restore new game data) C3/1685: 20616F JSR $6F61 C3/1688: A920 LDA #$20 C3/168A: 8529 STA $29 (set text color to white) C3/168C: A0241A LDY #$1A24 C3/168F: 20F902 JSR $02F9 (display save file 1's "Empty") C3/1692: 20F53A JSR $3AF5 C3/1695: A902 LDA #$02 C3/1697: 8566 STA $66 (save slot 2) C3/1699: 206615 JSR $1566 (load this slots contents) C3/169C: 201569 JSR $6915 C3/169F: 20D119 JSR $19D1 (Calculate SRAM checksum) C3/16A2: 20EB19 JSR $19EB (determine if save file exists) C3/16A5: 8493 STY $93 (save result) C3/16A7: F00B BEQ $16B4 (branch if save file 2 is empty) C3/16A9: 20B86F JSR $6FB8 C3/16AC: 20CA17 JSR $17CA C3/16AF: 20093B JSR $3B09 C3/16B2: 8013 BRA $16C7 (save file 2 exists) C3/16B4: 20C118 JSR $18C1 (restore new game data) C3/16B7: 20B86F JSR $6FB8 C3/16BA: A920 LDA #$20 C3/16BC: 8529 STA $29 (set text color to white) C3/16BE: A02C1A LDY #$1A2C C3/16C1: 20F902 JSR $02F9 (display save file 2's "Empty") C3/16C4: 20093B JSR $3B09 C3/16C7: A903 LDA #$03 C3/16C9: 8566 STA $66 (save slot 3) C3/16CB: 206615 JSR $1566 (load this slots contents) C3/16CE: 201569 JSR $6915 C3/16D1: 20D119 JSR $19D1 (Calculate SRAM checksum) C3/16D4: 20EB19 JSR $19EB (determine if save file exists) C3/16D7: 8495 STY $95 (save result) C3/16D9: F00B BEQ $16E6 (branch if save file 3 is empty) C3/16DB: 20DC6F JSR $6FDC C3/16DE: 202D18 JSR $182D C3/16E1: 201D3B JSR $3B1D C3/16E4: 8013 BRA $16F9 (save file 3 exists) C3/16E6: 20C118 JSR $18C1 (restore new game data) C3/16E9: 20DC6F JSR $6FDC C3/16EC: A920 LDA #$20 C3/16EE: 8529 STA $29 (set text color to white) C3/16F0: A0341A LDY #$1A34 C3/16F3: 20F902 JSR $02F9 (display save file 3's "Empty") C3/16F6: 201D3B JSR $3B1D C3/16F9: 20C118 JSR $18C1 (restore new game data) C3/16FC: 20A13A JSR $3AA1 (determine save file 1 window background) C3/16FF: A0A018 LDY #$18A0 C3/1702: 204103 JSR $0341 (draw save file 1 window) C3/1705: 20BD3A JSR $3ABD (determine save file 2 window background) C3/1708: A0A418 LDY #$18A4 C3/170B: 204103 JSR $0341 (draw save file 2 window) C3/170E: 20D93A JSR $3AD9 (determine save file 3 window background) C3/1711: A0A818 LDY #$18A8 C3/1714: 204103 JSR $0341 (draw save file 3 window) C3/1717: A0001C LDY #$1C00 C3/171A: 4C2603 JMP $0326
C3/171D unknow
C3/171D: A920 LDA #$20 C3/171F: 8529 STA $29 (set text color to white) C3/1721: A0511A LDY #$1A51 C3/1724: 20F902 JSR $02F9 (display save file 1's ":") C3/1727: AD6318 LDA $1863 C3/172A: 20E004 JSR $04E0 C3/172D: A20D7B LDX #$7B0D C3/1730: 20B604 JSR $04B6 (display save file 1's hours) C3/1733: AD6418 LDA $1864 C3/1736: 20F904 JSR $04F9 C3/1739: A2137B LDX #$7B13 C3/173C: 20B604 JSR $04B6 (display save file 1's minutes) C3/173F: 204D17 JSR $174D C3/1742: A92C LDA #$2C C3/1744: 8529 STA $29 (set text color to blue) C3/1746: A03C1A LDY #$1A3C C3/1749: 20F902 JSR $02F9 (display save file 1's "Time") C3/174C: 60 RTS
C3/174D unknow
C3/174D: 7B TDC C3/174E: AA TAX C3/174F: B569 LDA $69,X C3/1751: 3029 BMI $177C C3/1753: 20BE17 JSR $17BE C3/1756: A92C LDA #$2C C3/1758: 8529 STA $29 (set text color to blue) C3/175A: A05D1A LDY #$1A5D C3/175D: 20F902 JSR $02F9 (display save file 1's "LV") C3/1760: A920 LDA #$20 C3/1762: 8529 STA $29 (set text color to white) C3/1764: A06C1A LDY #$1A6C C3/1767: 20F902 JSR $02F9 (display save file 1's "/") C3/176A: A04F3A LDY #$3A4F C3/176D: 5A PHY (save file 1's lead character name position) C3/176E: A2FD7A LDX #$7AFD C3/1771: DA PHX (save file 1's max HP position) C3/1772: A2F37A LDX #$7AF3 C3/1775: DA PHX (save file 1's current HP position) C3/1776: A2817A LDX #$7A81 C3/1779: DA PHX (save file 1's level position) C3/177A: 8003 BRA $177F C3/177C: E8 INX C3/177D: 80D0 BRA $174F
C3/177F unknow
C3/177F: A667 LDX $67 C3/1781: BD0800 LDA $0008,X (level) C3/1784: 20E004 JSR $04E0 C3/1787: FA PLX C3/1788: 20B604 JSR $04B6 (display level) C3/178B: A467 LDY $67 C3/178D: 209A2B JSR $2B9A C3/1790: B90900 LDA $0009,Y (current HP, high byte) C3/1793: 85F3 STA $F3 C3/1795: B90A00 LDA $000A,Y (current HP, low byte) C3/1798: 85F4 STA $F4 C3/179A: 202E05 JSR $052E (convert HP to digits) C3/179D: FA PLX C3/179E: 209004 JSR $0490 (display HP) C3/17A1: A667 LDX $67 C3/17A3: BD0B00 LDA $000B,X (maximum HP, high byte) C3/17A6: 85F3 STA $F3 C3/17A8: BD0C00 LDA $000C,X (maximum HP, low byte) C3/17AB: 85F4 STA $F4 C3/17AD: 20650D JSR $0D65 C3/17B0: 20920D JSR $0D92 C3/17B3: 202E05 JSR $052E (convert HP to digits) C3/17B6: FA PLX C3/17B7: 209004 JSR $0490 (display HP) C3/17BA: 7A PLY C3/17BB: 4CCF34 JMP $34CF
C3/17BE unknow
C3/17BE: C220 REP #$20 (16 bit memory/accum.) C3/17C0: 8A TXA C3/17C1: 0A ASL A C3/17C2: AA TAX C3/17C3: B56D LDA $6D,X C3/17C5: 8567 STA $67 C3/17C7: E220 SEP #$20 (8 bit memory/accum.) C3/17C9: 60 RTS
C3/17CA unknow
C3/17CA: A920 LDA #$20 C3/17CC: 8529 STA $29 (set text color to white) C3/17CE: A0551A LDY #$1A55 C3/17D1: 20F902 JSR $02F9 (display save file 2's ":") C3/17D4: AD6318 LDA $1863 C3/17D7: 20E004 JSR $04E0 C3/17DA: A2CD7C LDX #$7CCD C3/17DD: 20B604 JSR $04B6 (display save file 2's hours) C3/17E0: AD6418 LDA $1864 C3/17E3: 20F904 JSR $04F9 C3/17E6: A2D37C LDX #$7CD3 C3/17E9: 20B604 JSR $04B6 (display save file 2's minutes) C3/17EC: 20FA17 JSR $17FA C3/17EF: A92C LDA #$2C C3/17F1: 8529 STA $29 (set text color to blue) C3/17F3: A0431A LDY #$1A43 C3/17F6: 20F902 JSR $02F9 (display save file 2's "Time") C3/17F9: 60 RTS
C3/17FA unknow
C3/17FA: 7B TDC C3/17FB: AA TAX C3/17FC: B569 LDA $69,X C3/17FE: 302A BMI $182A C3/1800: 20BE17 JSR $17BE C3/1803: A92C LDA #$2C C3/1805: 8529 STA $29 (set text color to blue) C3/1807: A0621A LDY #$1A62 C3/180A: 20F902 JSR $02F9 (display save file 2's "LV") C3/180D: A920 LDA #$20 C3/180F: 8529 STA $29 (set text color to white) C3/1811: A0701A LDY #$1A70 C3/1814: 20F902 JSR $02F9 (display save file 2's "/") C3/1817: A00F3C LDY #$3C0F C3/181A: 5A PHY (save file 2's lead character name position) C3/181B: A2BD7C LDX #$7CBD C3/181E: DA PHX (save file 2's max HP position) C3/181F: A2B37C LDX #$7CB3 C3/1822: DA PHX (save file 2's current HP position) C3/1823: A2417C LDX #$7C41 C3/1826: DA PHX (save file 2's level position) C3/1827: 4C7F17 JMP $177F
C3/182A unknow
C3/182A: E8 INX C3/182B: 80CF BRA $17FC C3/182D: A920 LDA #$20 C3/182F: 8529 STA $29 (set text color to white) C3/1831: A0591A LDY #$1A59 C3/1834: 20F902 JSR $02F9 (display save file 3's ":") C3/1837: AD6318 LDA $1863 C3/183A: 20E004 JSR $04E0 C3/183D: A28D7E LDX #$7E8D C3/1840: 20B604 JSR $04B6 (display save file 3's hours) C3/1843: AD6418 LDA $1864 C3/1846: 20F904 JSR $04F9 C3/1849: A2937E LDX #$7E93 C3/184C: 20B604 JSR $04B6 (display save file 3's minutes) C3/184F: 205D18 JSR $185D C3/1852: A92C LDA #$2C C3/1854: 8529 STA $29 (set text color to blue) C3/1856: A04A1A LDY #$1A4A C3/1859: 20F902 JSR $02F9 (display save file 3's "Time") C3/185C: 60 RTS
C3/185D unknow
C3/185D: 7B TDC C3/185E: AA TAX C3/185F: B569 LDA $69,X C3/1861: 302A BMI $188D C3/1863: 20BE17 JSR $17BE C3/1866: A92C LDA #$2C C3/1868: 8529 STA $29 (set text color to blue) C3/186A: A0671A LDY #$1A67 C3/186D: 20F902 JSR $02F9 (display save file 3's "LV") C3/1870: A920 LDA #$20 C3/1872: 8529 STA $29 (set text color to white) C3/1874: A0741A LDY #$1A74 C3/1877: 20F902 JSR $02F9 (display save file 3's "/") C3/187A: A0CF3D LDY #$3DCF C3/187D: 5A PHY (save file 3's lead character name position) C3/187E: A27D7E LDX #$7E7D C3/1881: DA PHX (save file 3's max HP position) C3/1882: A2737E LDX #$7E73 C3/1885: DA PHX (save file 3's current HP position) C3/1886: A2017E LDX #$7E01 C3/1889: DA PHX (save file 3's level position) C3/188A: 4C7F17 JMP $177F C3/188D: E8 INX C3/188E: 80CF BRA $185F
C3/1890 unknow
C3/1890: 20280E JSR $0E28 C3/1893: 20520E JSR $0E52 C3/1896: 206E0E JSR $0E6E C3/1899: 4C7C0E JMP $0E7C
C3/189C data: window sizes for save/load screen
C3/189C: CB581C02 ("New game" window) C3/18A0: CB591C05 (save file 1 window) C3/18A4: 8B5B1C05 (save file 2 window) C3/18A8: 4B5D1C05 (save file 3 window)
C3/18AC unknow
C3/18AC: A08DAC LDY #$AC8D C3/18AF: 8C8121 STY $2181 C3/18B2: A600 LDX $00 C3/18B4: BD0016 LDA $1600,X C3/18B7: 8D8021 STA $2180 C3/18BA: E8 INX C3/18BB: E0000A CPX #$0A00 C3/18BE: D0F4 BNE $18B4 C3/18C0: 60 RTS
C3/18C1 unknow
C3/18C1: A600 LDX $00 C3/18C3: BF8DAC7E LDA $7EAC8D,X C3/18C7: 9D0016 STA $1600,X C3/18CA: E8 INX C3/18CB: E0000A CPX #$0A00 C3/18CE: D0F3 BNE $18C3 C3/18D0: 60 RTS
C3/18D1 unknow
C3/18D1: A902 LDA #$02 (from C3/1CF5, C3/1D63, C3/ADDE) C3/18D3: 8D5043 STA $4350 C3/18D6: A912 LDA #$12 C3/18D8: 8D5143 STA $4351 (register address becomes $2112) C3/18DB: A0F018 LDY #$18F0 C3/18DE: 8C5243 STY $4352 (set address) C3/18E1: A9C3 LDA #$C3 C3/18E3: 8D5443 STA $4354 (set bank, C3/18F0) C3/18E6: A9C3 LDA #$C3 C3/18E8: 8D5743 STA $4357 C3/18EB: A920 LDA #$20 C3/18ED: 0443 TSB $43 (eventually enable channel channel 5 of HDMA) C3/18EF: 60 RTS
C3/18F0 hdma transfer table
C3/18F0: 200000 (32 scanlines, 0 pixel shift) C3/18F3: 0C0400 (12 scanlines, 4 pixel shift) C3/18F6: 0C0800 (12 scanlines, 8 pixel shift) C3/18F9: 08C8FF (8 scanlines, ?? pixel shift) C3/18FC: 500000 (80 scanlines, 0 pixel shift) C3/18FF: 580000 (88 scanlines, 0 pixel shift, 232 scanlines total) C3/1902: 00 (end)
C3/1903 unknow
C3/1903: A600 LDX $00 C3/1905: BF71AA7E LDA $7EAA71,X C3/1909: 306C BMI $1977 C3/190B: DA PHX C3/190C: DA PHX C3/190D: A903 LDA #$03 C3/190F: A0C719 LDY #$19C7 C3/1912: 207311 JSR $1173 (put C3/19C7 in the queue) C3/1915: 9B TXY C3/1916: FA PLX C3/1917: 8B PHB C3/1918: A97E LDA #$7E C3/191A: 48 PHA C3/191B: AB PLB C3/191C: A566 LDA $66 (load finger's position) C3/191E: F011 BEQ $1931 (branch if on "New Game") C3/1920: C901 CMP #$01 C3/1922: F01F BEQ $1943 (branch if on slot 1) C3/1924: C902 CMP #$02 C3/1926: F012 BEQ $193A (branch if on slot 2) C3/1928: BFBB19C3 LDA $C319BB,X (set slot 3's sprites to "enabled") C3/192C: 994937 STA $3749,Y C3/192F: 8019 BRA $194A C3/1931: BF9719C3 LDA $C31997,X (set all slot's sprites to "disabled") C3/1935: 994937 STA $3749,Y C3/1938: 8010 BRA $194A C3/193A: BFAF19C3 LDA $C319AF,X (set slot 2's sprites to "enabled") C3/193E: 994937 STA $3749,Y C3/1941: 8007 BRA $194A C3/1943: BFA319C3 LDA $C319A3,X (set slot 1's sprites to "enabled") C3/1947: 994937 STA $3749,Y C3/194A: A9D8 LDA #$D8 C3/194C: 99CA35 STA $35CA,Y (save bank pointer to OAM data) C3/194F: 7B TDC C3/1950: 99CB33 STA $33CB,Y C3/1953: 994B34 STA $344B,Y C3/1956: BF7F19C3 LDA $C3197F,X (get horizontal sprite positions) C3/195A: 99CA33 STA $33CA,Y C3/195D: BF8B19C3 LDA $C3198B,X (get vertical sprite positions) C3/1961: 994A34 STA $344A,Y C3/1964: BF71AA7E LDA $7EAA71,X C3/1968: C220 REP #$20 (16 bit memory/accum.) C3/196A: 0A ASL A C3/196B: AA TAX C3/196C: BF17E9D8 LDA $D8E917,X (determine which sprites to load?) C3/1970: 99C932 STA $32C9,Y (save as pointer to OAM data) C3/1973: E220 SEP #$20 (8 bit memory/accum.) C3/1975: AB PLB C3/1976: FA PLX C3/1977: E8 INX C3/1978: E00C00 CPX #$000C (have we done all 12 sprites?) C3/197B: D088 BNE $1905 (branch if not) C3/197D: 38 SEC C3/197E: 60 RTS
C3/197F data: sprite positions for the three save files
C3/197F: 50688098 (X position for sprites in save slot 1) C3/1983: 50688098 (X position for sprites in save slot 2) C3/1987: 50688098 (X position for sprites in save slot 3) C3/198B: 40404040 (Y position for sprites in save slot 1) C3/198F: 78787878 (Y position for sprites in save slot 2) C3/1993: B0B0B0B0 (Y position for sprites in save slot 3)
C3/1997 data: enable/disable sprite palettes at load game screen
C3/1997: 02020202 (disable all three slot's sprites) C3/199B: 02020202 C3/199F: 02020202 C3/19A3: 00000000 (enable slot 1's sprites) C3/19A7: 02020202 C3/19AB: 02020202 C3/19AF: 02020202 (enable slot 2's sprites) C3/19B3: 00000000 C3/19B7: 02020202 C3/19BB: 02020202 (enable slot 3's sprites) C3/19BF: 02020202 C3/19C3: 00000000
C3/19C7 unknow
C3/19C7: A62D LDX $2D C3/19C9: 200612 JSR $1206 C3/19CC: 202112 JSR $1221 (draw the sprites!) C3/19CF: 18 CLC (this queue can be removed) C3/19D0: 60 RTS
C3/19D1 calculate sram checksum
C3/19D1: 64E7 STZ $E7 C3/19D3: 64E8 STZ $E8 C3/19D5: A600 LDX $00 C3/19D7: 18 CLC C3/19D8: BD0016 LDA $1600,X C3/19DB: 65E7 ADC $E7 C3/19DD: 85E7 STA $E7 C3/19DF: 7B TDC C3/19E0: 65E8 ADC $E8 C3/19E2: 85E8 STA $E8 C3/19E4: E8 INX C3/19E5: E0FE09 CPX #$09FE C3/19E8: D0EE BNE $19D8 C3/19EA: 60 RTS
C3/19EB determinate if save file exists
C3/19EB: C220 REP #$20 (16 bit memory/accum.) C3/19ED: A5E7 LDA $E7 (load calculated checksum) C3/19EF: CDFE1F CMP $1FFE (does it match this file's checksum?) C3/19F2: D002 BNE $19F6 (they don't match, save file was tampered with or corrupt) C3/19F4: 8001 BRA $19F7 (they do match, everything's ok) C3/19F6: 7B TDC C3/19F7: A8 TAY C3/19F8: E220 SEP #$20 (8 bit memory/accum.) C3/19FA: 60 RTS
C3/19FB unknow
DP $26 is #$53 C3/19FB: 204F30 JSR $304F C3/19FE: A00800 LDY #$0008 C3/1A01: 8420 STY $20 C3/1A03: A954 LDA #$54 C3/1A05: 8526 STA $26 (execute at C3/1A19) C3/1A07: 4C0319 JMP $1903
C3/1A0A unknow
DP $26 is #$52 C3/1A0A: 205630 JSR $3056 C3/1A0D: A00800 LDY #$0008 C3/1A10: 8420 STY $20 C3/1A12: A954 LDA #$54 C3/1A14: 8526 STA $26 (execute at C3/1A19) C3/1A16: 4C0319 JMP $1903
C3/1A19 unknow
DP $26 is #$54 C3/1A19: A420 LDY $20 (from C3/0283, the massive jump table; $26 = #$54) C3/1A1B: D004 BNE $1A21 C3/1A1D: A527 LDA $27 (load the queue to execute) C3/1A1F: 8526 STA $26 (transfer it to be executed next) C3/1A21: 4C0319 JMP $1903
C3/1A24 unknow
C3/1A24: 4F7A84A6A9ADB200 (position of and word "Empty") C3/1A2C: 0F7C84A6A9ADB200 (position of and word "Empty") C3/1A34: CF7D84A6A9ADB200 (position of and word "Empty") C3/1A3C: CF7A93A2A69E00 (position of and word "Time") C3/1A45: 8F7C93A2A69E00 (position of and word "Time") C3/1A4A: 4F7E93A2A69E00 (position of and word "Time") C3/1A51: 117BC100 (position of and word ":") C3/1A55: D17CC100 (position of and word ":") C3/1A59: 917EC100 (position of and word ":") C3/1A5D: 7B7A8B9500 (position of and word "LV") C3/1A62: 3B7C8B9500 (position of and word "LV") C3/1A67: FB7D8B9500 (position of and word "LV") C3/1A6C: FB7AC000 (position of and word "/") C3/1A70: BB7CC000 (position of and word "/") C3/1A74: 7B7EC000 (position of and word "/") C3/1A78: 6779929AAF9E00 (position of and word "Save") C3/1A7F: 63798D9EB0FF869AA69E00 (position of and word "New Game")
DP $26 is #$04 - initiate the main menu C3/1A8A: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1A8D: 20A81B JSR $1BA8 C3/1A90: 20890F JSR $0F89 C3/1A93: 206B3A JSR $3A6B C3/1A96: A904 LDA #$04 C3/1A98: 0443 TSB $43 (eventually enable channel 2 of HDMA) C3/1A9A: 20890F JSR $0F89 C3/1A9D: 200469 JSR $6904 C3/1AA0: A903 LDA #$03 C3/1AA2: 8D0721 STA $2107 C3/1AA5: A943 LDA #$43 C3/1AA7: 8D0921 STA $2109 C3/1AAA: A9C0 LDA #$C0 C3/1AAC: 1443 TRB $43 (eventually disable channels 6 and 7 of HDMA) C3/1AAE: A902 LDA #$02 C3/1AB0: 8546 STA $46 C3/1AB2: 20F530 JSR $30F5 C3/1AB5: A900 LDA #$00 C3/1AB7: A0422F LDY #$2F42 C3/1ABA: 207311 JSR $1173 (put C3/2F42 in the queue) C3/1ABD: 20B007 JSR $07B0 (finger OAM initiating) C3/1AC0: 204E35 JSR $354E C3/1AC3: A00200 LDY #$0002 C3/1AC6: 8437 STY $37 C3/1AC8: 20A336 JSR $36A3 C3/1ACB: A905 LDA #$05 C3/1ACD: 8527 STA $27 (sustain main menu, queue up to execute at C3/1D4A) C3/1ACF: A901 LDA #$01 C3/1AD1: 8526 STA $26 (transition process) C3/1AD3: 4C4135 JMP $3541
C3/1AD6: 20E21A JSR $1AE2 C3/1AD9: 20FE1A JSR $1AFE C3/1ADC: 200E1B JSR $1B0E C3/1ADF: 4C2E1B JMP $1B2E
C3/1AE2 unknow
C3/1AE2: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1AE5: 20991B JSR $1B99 C3/1AE8: 200469 JSR $6904 C3/1AEB: 644A STZ $4A C3/1AED: 6449 STZ $49 C3/1AEF: A9F5 LDA #$F5 C3/1AF1: 855C STA $5C (set item screen's maximum scroll range) C3/1AF3: A90A LDA #$0A C3/1AF5: 855A STA $5A C3/1AF7: A901 LDA #$01 C3/1AF9: 855B STA $5B C3/1AFB: 4C1C7D JMP $7D1C
C3/1AFE unknow
C3/1AFE: AD4E1D LDA $1D4E (load some config stuff) C3/1B01: 2940 AND #$40 (cursor on memory set?) C3/1B03: F003 BEQ $1B08 (branch if not) C3/1B05: 20AC0D JSR $0DAC C3/1B08: 20257D JSR $7D25 C3/1B0B: 4CA37D JMP $7DA3
C3/1B0E unknow
C3/1B0E: 202B7E JSR $7E2B C3/1B11: 20B007 JSR $07B0 (finger OAM initiating) C3/1B14: 201F09 JSR $091F (set arrow's initial position) C3/1B17: C220 REP #$20 (16 bit memory/accum.) C3/1B19: A97000 LDA #$0070 C3/1B1C: 9F4A357E STA $7E354A,X C3/1B20: A95800 LDA #$0058 C3/1B23: 9FCA347E STA $7E34CA,X C3/1B27: E220 SEP #$20 (8 bit memory/accum.) C3/1B29: A901 LDA #$01 C3/1B2B: 8526 STA $26 (transition process) C3/1B2D: 60 RTS
C3/1B2E unknow
C3/1B2E: A908 LDA #$08 C3/1B30: 8527 STA $27 (queue up to execute at C3/1EF7) C3/1B32: 4C4135 JMP $3541
C3/1B35 unknow
C3/1B35: 20E21A JSR $1AE2 (from C3/02C9, the massive jump table; $26 = #$77) C3/1B38: A58E LDA $8E C3/1B3A: 854D STA $4D C3/1B3C: A48E LDY $8E C3/1B3E: 844F STY $4F C3/1B40: A590 LDA $90 C3/1B42: 854A STA $4A C3/1B44: A54A LDA $4A (...really?) C3/1B46: 85E0 STA $E0 C3/1B48: A550 LDA $50 C3/1B4A: 38 SEC C3/1B4B: E5E0 SBC $E0 C3/1B4D: 854E STA $4E C3/1B4F: 20257D JSR $7D25 C3/1B52: 20A37D JSR $7DA3 C3/1B55: 200E1B JSR $1B0E C3/1B58: 4C2E1B JMP $1B2E
C3/1B5B: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1B5E: 7B TDC C3/1B5F: A528 LDA $28 C3/1B61: AA TAX C3/1B62: B569 LDA $69,X C3/1B64: 220600C2 JSL $C20006 (equipment set/check) C3/1B68: 20A81B JSR $1BA8 C3/1B6B: 20086A JSR $6A08 C3/1B6E: 644A STZ $4A C3/1B70: 6449 STZ $49 C3/1B72: 20BC4D JSR $4DBC C3/1B75: 20804C JSR $4C80 C3/1B78: 20504B JSR $4B50 C3/1B7B: AD4E1D LDA $1D4E (various saved things in config screen) C3/1B7E: 2940 AND #$40 (Re-equip set to empty?) C3/1B80: F003 BEQ $1B85 (branch if not) C3/1B82: 20FF0D JSR $0DFF C3/1B85: 20594B JSR $4B59 C3/1B88: 20B007 JSR $07B0 (finger OAM initiating) C3/1B8B: 20991B JSR $1B99 C3/1B8E: A901 LDA #$01 C3/1B90: 8526 STA $26 (transition process) C3/1B92: A90A LDA #$0A C3/1B94: 8527 STA $27 (queue up to execute at C3/1FF4) C3/1B96: 4C4135 JMP $3541
C3/1B99 unknow
C3/1B99: 2096A7 JSR $A796 C3/1B9C: 2091A9 JSR $A991 C3/1B9F: A900 LDA #$00 C3/1BA1: A00EA8 LDY #$A80E C3/1BA4: 207311 JSR $1173 (put C3/A80E in the queue) C3/1BA7: 60 RTS
C3/1BA8 unknow
C3/1BA8: 201569 JSR $6915 C3/1BAB: 20826E JSR $6E82 C3/1BAE: 20096C JSR $6C09 C3/1BB1: A905 LDA #$05 C3/1BB3: 0445 TSB $45 C3/1BB5: 4CD214 JMP $14D2
C3/1BB8: 20BD1B JSR $1BBD C3/1BBB: 801A BRA $1BD7
C3/1BBD unknow
C3/1BBD: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1BC0: 20086A JSR $6A08 C3/1BC3: A906 LDA #$06 C3/1BC5: 0446 TSB $46 C3/1BC7: 644A STZ $4A C3/1BC9: 6449 STZ $49 C3/1BCB: 20B694 JSR $94B6 C3/1BCE: 20508E JSR $8E50 C3/1BD1: 20598E JSR $8E59 C3/1BD4: 4CB007 JMP $07B0 (finger OAM initiating)
C3/1BD7 unknow
C3/1BD7: 203290 JSR $9032 C3/1BDA: A901 LDA #$01 C3/1BDC: 8526 STA $26 (transition process) C3/1BDE: A936 LDA #$36 C3/1BE0: 8527 STA $27 (queue up to execute at C3/9621) C3/1BE2: 4C4135 JMP $3541
C3/1BE5 unknow
DP $26 is #$7E C3/1BE5: 20011C JSR $1C01 (from C3/02D7) C3/1BE8: 204F96 JSR $964F C3/1BEB: 200A1C JSR $1C0A C3/1BEE: A955 LDA #$55 (queue up to execute at C3/9884) C3/1BF0: 4C151C JMP $1C15 (BRA would work here)
C3/1BF3 unknow
DP $26 is #$7F C3/1BF3: 20011C JSR $1C01 (from C3/02D9) C3/1BF6: 205696 JSR $9656 C3/1BF9: 200A1C JSR $1C0A C3/1BFC: A956 LDA #$56 (queue up to execute at C3/98CF) C3/1BFE: 4C151C JMP $1C15 (BRA would work here)
C3/1C01 unknow
C3/1C01: 20BD1B JSR $1BBD C3/1C04: 203290 JSR $9032 C3/1C07: 4C1496 JMP $9614
C3/1C0A unknow
C3/1C0A: 206C8E JSR $8E6C C3/1C0D: 20758E JSR $8E75 C3/1C10: A901 LDA #$01 C3/1C12: 8526 STA $26 (transition process) C3/1C14: 60 RTS
C3/1C15 unknow
C3/1C15: 8527 STA $27 C3/1C17: 4C4135 JMP $3541
C3/1C1A reequip is set to optimum
DP $26 is #$6D - "Reequip" is set to Optimum in config; called when relics change equipment C3/1C1A: 20BD1B JSR $1BBD (from C3/02B5) C3/1C1D: 20F096 JSR $96F0 (Optimum command - fully equips standard equipment) C3/1C20: A902 LDA #$02 C3/1C22: 8525 STA $25 C3/1C24: 80B1 BRA $1BD7
C3/1C26 reequip is set to empty
DP $26 is #$6E - "Reequip" is set to Empty in config; called when relics change equipment C3/1C26: 20BD1B JSR $1BBD (from C3/02B7) C3/1C29: 20A896 JSR $96A8 (Empty command - removes standard equipment) C3/1C2C: A902 LDA #$02 C3/1C2E: 8525 STA $25 C3/1C30: 80A5 BRA $1BD7
C3/1C32 initiate screen that display equipment for all characters
C3/1C32: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1C35: 209794 JSR $9497 (get DMA transfer initiated) C3/1C38: 20ED8E JSR $8EED C3/1C3B: A901 LDA #$01 C3/1C3D: 8526 STA $26 (transition process) C3/1C3F: A939 LDA #$39 C3/1C41: 8527 STA $27 (queue up to execute at C3/2966) C3/1C43: 4C4135 JMP $3541
C3/1C46 initiate the status screen
C3/1C46: 202F35 JSR $352F (from C3/01F1, turns off DMA and HDMA transfers, turns the screen off) C3/1C49: 200B62 JSR $620B (do a DMA transfer) C3/1C4C: 20055D JSR $5D05 (put status screen in VRAM?) C3/1C4F: 205D1C JSR $1C5D C3/1C52: A901 LDA #$01 C3/1C54: 8526 STA $26 (transition process) C3/1C56: A90C LDA #$0C C3/1C58: 8527 STA $27 (queue up to execute at C3/21F5) C3/1C5A: 4C4135 JMP $3541
C3/1C5D unknow
C3/1C5D: 7B TDC C3/1C5E: A528 LDA $28 C3/1C60: 0A ASL A C3/1C61: AA TAX C3/1C62: B46D LDY $6D,X C3/1C64: B90000 LDA $0000,Y (load character ID) C3/1C67: C90C CMP #$0C (Is this Gogo?) C3/1C69: D00D BNE $1C78 (branch if not) C3/1C6B: 20FF36 JSR $36FF (get hotspot data) C3/1C6E: 200837 JSR $3708 (set finger positioning) C3/1C71: A906 LDA #$06 C3/1C73: 0446 TSB $46 C3/1C75: 4CB007 JMP $07B0 (finger OAM initiating) C3/1C78: A906 LDA #$06 C3/1C7A: 1446 TRB $46 C3/1C7C: 60 RTS
C3/1C7D initiate the config screen
C3/1C7D: 202F35 JSR $352F (fade out screen, disable H/DMA, from C3/01F5) C3/1C80: 644A STZ $4A C3/1C82: 204C3A JSR $3A4C (do a DMA transfer) C3/1C85: 209E38 JSR $389E (draw the config screen) C3/1C88: 205838 JSR $3858 (get hotspot data for config screen 1) C3/1C8B: A55F LDA $5F C3/1C8D: 854E STA $4E C3/1C8F: 206138 JSR $3861 (get finger positioning data for config screen 1) C3/1C92: 20B007 JSR $07B0 (finger OAM initiating) C3/1C95: A901 LDA #$01 C3/1C97: 8526 STA $26 (transition process) C3/1C99: A90E LDA #$0E C3/1C9B: 8527 STA $27 (queue up to execute at C3/22C5) C3/1C9D: 4C4135 JMP $3541
C3/1CA0: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1CA3: A00200 LDY #$0002 C3/1CA6: 8437 STY $37 C3/1CA8: 20A336 JSR $36A3 (do an HDMA transfer) C3/1CAB: A9E3 LDA #$E3 C3/1CAD: 1443 TRB $43 (eventually disable channels 0, 1, 5-7 of HDMA) C3/1CAF: 20EC15 JSR $15EC (draw save screen and get data of the three save files) C3/1CB2: 20C76C JSR $6CC7 (get character sprite palettes) C3/1CB5: 20846C JSR $6C84 (palette of finger) C3/1CB8: 20A415 JSR $15A4 (hotspot data for save screen) C3/1CBB: A491 LDY $91 C3/1CBD: D008 BNE $1CC7 C3/1CBF: A493 LDY $93 C3/1CC1: D004 BNE $1CC7 C3/1CC3: A495 LDY $95 C3/1CC5: F006 BEQ $1CCD C3/1CC7: AD2402 LDA $0224 C3/1CCA: 3A DEC A C3/1CCB: 854E STA $4E C3/1CCD: 20AD15 JSR $15AD (finger positioning for save screen) C3/1CD0: 20B007 JSR $07B0 (finger OAM initiating) C3/1CD3: A54B LDA $4B C3/1CD5: 1A INC A C3/1CD6: 8566 STA $66 C3/1CD8: A952 LDA #$52 C3/1CDA: 8526 STA $26 (execute at C3/1A0A) C3/1CDC: A914 LDA #$14 C3/1CDE: 8527 STA $27 (queue up to execute at C3/2540) C3/1CE0: 4C4135 JMP $3541
C3/1CE3 initiate "erasing data" screen
C3/1CE3: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1CE6: 201569 JSR $6915 C3/1CE9: 202831 JSR $3128 C3/1CEC: 20D415 JSR $15D4 (hotspot data for confirming save) C3/1CEF: 20DD15 JSR $15DD (finger positioning for confirming save) C3/1CF2: 20B007 JSR $07B0 (finger OAM initiating) C3/1CF5: 20D118 JSR $18D1 C3/1CF8: A916 LDA #$16 C3/1CFA: 8527 STA $27 (queue up to execute at C3/259D) C3/1CFC: A901 LDA #$01 C3/1CFE: 8526 STA $26 (transition process to above) C3/1D00: 4C4135 JMP $3541
C3/1D03 initiate sram loading screen
C3/1D03: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1D06: A00200 LDY #$0002 C3/1D09: 8437 STY $37 C3/1D0B: 20A336 JSR $36A3 (do an HDMA transfer) C3/1D0E: A9E3 LDA #$E3 C3/1D10: 1443 TRB $43 (eventually disable channels 0, 1, 5-7 of HDMA) C3/1D12: A400 LDY $00 C3/1D14: 8435 STY $35 C3/1D16: 8439 STY $39 C3/1D18: 843D STY $3D C3/1D1A: A902 LDA #$02 C3/1D1C: 8546 STA $46 C3/1D1E: 200816 JSR $1608 (draw all windows, get screen filled with data) C3/1D21: 20C76C JSR $6CC7 (get character sprite palettes) C3/1D24: 20846C JSR $6C84 (palette of finger) C3/1D27: 20B815 JSR $15B8 (load screen's hotspot data) C3/1D2A: A491 LDY $91 C3/1D2C: D008 BNE $1D36 C3/1D2E: A493 LDY $93 C3/1D30: D004 BNE $1D36 C3/1D32: A495 LDY $95 C3/1D34: F006 BEQ $1D3C C3/1D36: AFF07F30 LDA $307FF0 C3/1D3A: 854E STA $4E C3/1D3C: 20C115 JSR $15C1 (finger positioning data) C3/1D3F: 20B007 JSR $07B0 (finger OAM initiating) C3/1D42: A54B LDA $4B C3/1D44: 8566 STA $66 C3/1D46: A921 LDA #$21 C3/1D48: 8527 STA $27 (queue up to execute at C3/29C2) C3/1D4A: A952 LDA #$52 C3/1D4C: 8526 STA $26 (execute at C3/1A0A) C3/1D4E: 4C4135 JMP $3541
C3/1D51 initiate "This data?" screen
C3/1D51: 202F35 JSR $352F (fade out screen, disable H/DMA) C3/1D54: 201569 JSR $6915 C3/1D57: 204C31 JSR $314C C3/1D5A: 20D415 JSR $15D4 (confirm save/load hotspots) C3/1D5D: 20DD15 JSR $15DD (confirm save/load finger positioning data) C3/1D60: 20B007 JSR $07B0 (finger OAM initiating) C3/1D63: 20D118 JSR $18D1 C3/1D66: A923 LDA #$23 C3/1D68: 8527 STA $27 (queue up to execute at C3/2A2A) C3/1D6A: A901 LDA #$01 C3/1D6C: 8526 STA $26 (transition process to above) C3/1D6E: 4C4135 JMP $3541
C3/1D71 general fade out
C3/1D71: 204F30 JSR $304F C3/1D74: A00800 LDY #$0008 C3/1D77: 8420 STY $20 C3/1D79: A902 LDA #$02 C3/1D7B: 8526 STA $26 (execute at C3/1D8B) C3/1D7D: 60 RTS
C3/1D7E general fade out
C3/1D7E: 205630 JSR $3056 C3/1D81: A00800 LDY #$0008 C3/1D84: 8420 STY $20 C3/1D86: A902 LDA #$02 C3/1D88: 8526 STA $26 (execute at C3/1D8B) C3/1D8A: 60 RTS
C3/1D8B unknow
DP $26 is #$02, transfers $27 to $26 C3/1D8B: A420 LDY $20 C3/1D8D: D004 BNE $1D93 C3/1D8F: A527 LDA $27 (load queued) C3/1D91: 8526 STA $26 (transfer it to execute) C3/1D93: 60 RTS
C3/1D94 unknow
DP $26, value of #$03 C3/1D94: A900 LDA #$00 C3/1D96: A0422F LDY #$2F42 C3/1D99: 207311 JSR $1173 (put C3/2F42 in the queue) C3/1D9C: 20B007 JSR $07B0 (finger OAM initiating) C3/1D9F: A905 LDA #$05 C3/1DA1: 8526 STA $26 (execute at C3/1DA4) C3/1DA3: 60 RTS
C3/1DA4: 204835 JSR $3548 C3/1DA7: A508 LDA $08 C3/1DA9: 8980 BIT #$80 (did you press A?) C3/1DAB: F003 BEQ $1DB0 (branch if not, BPL...) C3/1DAD: 4C622E JMP $2E62 C3/1DB0: A509 LDA $09 C3/1DB2: 8902 BIT #$02 C3/1DB4: F006 BEQ $1DBC C3/1DB6: 20A30E JSR $0EA3 C3/1DB9: 4CC62E JMP $2EC6
C3/1DBC unknow
C3/1DBC: A509 LDA $09 (A already holds the contents of $09) C3/1DBE: 8980 BIT #$80 (did you press B?) C3/1DC0: F00F BEQ $1DD1 (branch if not, BPL...) C3/1DC2: 9C0502 STZ $0205 C3/1DC5: 20A90E JSR $0EA9 C3/1DC8: 20D21D JSR $1DD2 C3/1DCB: A9FF LDA #$FF C3/1DCD: 8527 STA $27 (exit the menu) C3/1DCF: 6426 STZ $26 (fade out) C3/1DD1: 60 RTS
C3/1DD2 unknow
C3/1DD2: 9CDF11 STZ $11DF C3/1DD5: A600 LDX $00 C3/1DD7: B569 LDA $69,X C3/1DD9: 3006 BMI $1DE1 C3/1DDB: DA PHX C3/1DDC: 220600C2 JSL $C20006 (equipment check function) C3/1DE0: FA PLX C3/1DE1: E8 INX C3/1DE2: E00400 CPX #$0004 C3/1DE5: D0F0 BNE $1DD7 C3/1DE7: 60 RTS
C3/1DE8 unknow
DP $26 is #$06 C3/1DE8: 204835 JSR $3548 C3/1DEB: A509 LDA $09 C3/1DED: 8980 BIT #$80 (did you press B?) C3/1DEF: F00C BEQ $1DFD (branch if not, BPL...) C3/1DF1: 20A90E JSR $0EA9 C3/1DF4: A905 LDA #$05 C3/1DF6: 1446 TRB $46 C3/1DF8: A903 LDA #$03 C3/1DFA: 8526 STA $26 (execute at C3/1D94) C3/1DFC: 60 RTS
C3/1DFD unknow
C3/1DFD: A509 LDA $09 (A already holds the contents of $09) C3/1DFF: 8902 BIT #$02 (did you press left?) C3/1E01: F01C BEQ $1E1F (branch if not) C3/1E03: A525 LDA $25 C3/1E05: C902 CMP #$02 C3/1E07: F004 BEQ $1E0D C3/1E09: C903 CMP #$03 C3/1E0B: D012 BNE $1E1F C3/1E0D: 20A30E JSR $0EA3 C3/1E10: A906 LDA #$06 C3/1E12: 1446 TRB $46 C3/1E14: A937 LDA #$37 C3/1E16: 8526 STA $26 (execute at C3/1EB5) C3/1E18: A54E LDA $4E C3/1E1A: 855E STA $5E C3/1E1C: 4C9F08 JMP $089F
C3/1E1F unknow
C3/1E1F: A508 LDA $08 C3/1E21: 8980 BIT #$80 (did you press A?) C3/1E23: F007 BEQ $1E2C (branch if not, BPL... and branch backwards!) C3/1E25: A54B LDA $4B C3/1E27: 8528 STA $28 C3/1E29: 4C2D1E JMP $1E2D (BRA would work here) C3/1E2C: 60 RTS (this RTS doesn't need to be here, good ol compilers :P)
C3/1E2D unknow
C3/1E2D: 204E1E JSR $1E4E C3/1E30: B010 BCS $1E42 C3/1E32: 7B TDC C3/1E33: A525 LDA $25 C3/1E35: AA TAX C3/1E36: BF491EC3 LDA $C31E49,X C3/1E3A: 8527 STA $27 (queue up an exit, C3/5B1B, C3/1BB8, C3/9E4B, or the status screen at C3/1C46) C3/1E3C: 6426 STZ $26 (fade out) C3/1E3E: 20B20E JSR $0EB2 (makes the click sound) C3/1E41: 60 RTS
C3/1E42 buzzer effect unknow
C3/1E42: 20C00E JSR $0EC0 (makes the buzzer sound) C3/1E45: 205D30 JSR $305D (mosaic effect) C3/1E48: 60 RTS
C3/1E49 data
C3/1E49: FF C3/1E4A: 09 C3/1E4B: 35 C3/1E4C: 58 C3/1E4D: 0B
C3/1E4E determine if a character can be equipped
C3/1E4E: 7B TDC C3/1E4F: A525 LDA $25 C3/1E51: C901 CMP #$01 C3/1E53: F034 BEQ $1E89 C3/1E55: C902 CMP #$02 C3/1E57: F006 BEQ $1E5F C3/1E59: C903 CMP #$03 C3/1E5B: F017 BEQ $1E74 C3/1E5D: 8054 BRA $1EB3
C3/1E5F check standard equipment for character
C3/1E5F: 7B TDC (upper 8 bits of A are already 0...) C3/1E60: A528 LDA $28 C3/1E62: 0A ASL A C3/1E63: AA TAX C3/1E64: C220 REP #$20 (16 bit memory/accum.) C3/1E66: B56D LDA $6D,X C3/1E68: E220 SEP #$20 (8 bit memory/accum.) C3/1E6A: AA TAX C3/1E6B: BD0000 LDA $0000,X C3/1E6E: C90D CMP #$0D (Umaro or higher?) (NOTE: NOP these two out to let anyone be equippable) C3/1E70: B03F BCS $1EB1 C3/1E72: 8028 BRA $1E9C
C3/1E74 check relic equipment for character
C3/1E74: 7B TDC (upper 8 bits of A are already 0...) C3/1E75: A528 LDA $28 C3/1E77: 0A ASL A C3/1E78: AA TAX C3/1E79: C220 REP #$20 (16 bit memory/accum.) C3/1E7B: B56D LDA $6D,X C3/1E7D: E220 SEP #$20 (8 bit memory/accum.) C3/1E7F: AA TAX C3/1E80: BD0000 LDA $0000,X C3/1E83: C90E CMP #$0E (Leo or higher?) C3/1E85: B02A BCS $1EB1 C3/1E87: 8013 BRA $1E9C
C3/1E89 check esper equipment for character
C3/1E89: 203D4D JSR $4D3D (enable and disable skills) C3/1E8C: A924 LDA #$24 C3/1E8E: A600 LDX $00 C3/1E90: D579 CMP $79,X C3/1E92: D008 BNE $1E9C C3/1E94: E8 INX C3/1E95: E00700 CPX #$0007 C3/1E98: D0F6 BNE $1E90 C3/1E9A: 8015 BRA $1EB1
C3/1E9C check status ineligibility
C3/1E9C: 7B TDC C3/1E9D: A528 LDA $28 C3/1E9F: 0A ASL A C3/1EA0: AA TAX C3/1EA1: C220 REP #$20 (16 bit memory/accum.) C3/1EA3: B56D LDA $6D,X C3/1EA5: E220 SEP #$20 (8 bit memory/accum.) C3/1EA7: AA TAX C3/1EA8: BD1400 LDA $0014,X (status byte 1) C3/1EAB: 29C2 AND #$C2 (Check Death, Zombie, Stone) C3/1EAD: D002 BNE $1EB1 (branch if any are set) C3/1EAF: 8002 BRA $1EB3 C3/1EB1: 38 SEC C3/1EB2: 60 RTS C3/1EB3: 18 CLC C3/1EB4: 60 RTS
C3/1EB5 unknow
C3/1EB5: 204835 JSR $3548 C3/1EB8: A509 LDA $09 C3/1EBA: 8980 BIT #$80 (did you press B?) C3/1EBC: D006 BNE $1EC4 (branch if so, BMI...) C3/1EBE: A509 LDA $09 (A already holds the contents of $09) C3/1EC0: 8901 BIT #$01 (did you press right? LSR A...) C3/1EC2: F021 BEQ $1EE5 (branch if not, BCC...) C3/1EC4: 20A90E JSR $0EA9 C3/1EC7: 20982F JSR $2F98 C3/1ECA: 20B007 JSR $07B0 (finger OAM initiating) C3/1ECD: A900 LDA #$00 C3/1ECF: A0C02F LDY #$2FC0 C3/1ED2: 207311 JSR $1173 (put C3/2FC0 in the queue) C3/1ED5: 20B011 JSR $11B0 (execute everything in OAM queue) C3/1ED8: A55E LDA $5E C3/1EDA: 854E STA $4E C3/1EDC: A906 LDA #$06 C3/1EDE: 8526 STA $26 (execute at C3/1DE8) C3/1EE0: A908 LDA #$08 C3/1EE2: 1446 TRB $46 C3/1EE4: 60 RTS
C3/1EE5 unknow
C3/1EE5: A508 LDA $08 C3/1EE7: 8980 BIT #$80 (did you press A?) C3/1EE9: F00A BEQ $1EF5 (branch if not, BPL...) C3/1EEB: 20B20E JSR $0EB2 (makes the click sound) C3/1EEE: 6426 STZ $26 (fade out) C3/1EF0: A938 LDA #$38 C3/1EF2: 8527 STA $27 (queue up to execute at C3/1C32) C3/1EF4: 60 RTS C3/1EF5: 60 RTS C3/1EF6: 60 RTS
C3/1EF7: A910 LDA #$10 C3/1EF9: 1445 TRB $45 C3/1EFB: 7B TDC C3/1EFC: 852A STA $2A C3/1EFE: 20FD0E JSR $0EFD C3/1F01: 20641F JSR $1F64 C3/1F04: B0F0 BCS $1EF6 C3/1F06: 20227D JSR $7D22 C3/1F09: 20F182 JSR $82F1 C3/1F0C: A509 LDA $09 C3/1F0E: 8980 BIT #$80 (did you press B?) C3/1F10: F029 BEQ $1F3B (branch if not, BPL...) C3/1F12: 20A90E JSR $0EA9 C3/1F15: A44F LDY $4F C3/1F17: 8C2F02 STY $022F C3/1F1A: A54A LDA $4A C3/1F1C: 8D3102 STA $0231 C3/1F1F: 20807D JSR $7D80 C3/1F22: AD4E1D LDA $1D4E (various things set in the config screen) C3/1F25: 2940 AND #$40 (cursor memory set?) C3/1F27: F005 BEQ $1F2E (branch if not) C3/1F29: AC3402 LDY $0234 C3/1F2C: 844D STY $4D C3/1F2E: 20867D JSR $7D86 C3/1F31: A917 LDA #$17 C3/1F33: 8526 STA $26 (execute at C3/25F4) C3/1F35: 208583 JSR $8385 C3/1F38: 4C390F JMP $0F39
C3/1F3B unknow
C3/1F3B: A508 LDA $08 C3/1F3D: 8980 BIT #$80 (did you press A?) C3/1F3F: F00E BEQ $1F4F (branch if not, BPL...) C3/1F41: 20B20E JSR $0EB2 (makes the click sound) C3/1F44: A54B LDA $4B C3/1F46: 8528 STA $28 C3/1F48: A919 LDA #$19 C3/1F4A: 8526 STA $26 (execute at C3/2779) C3/1F4C: 4C212F JMP $2F21 C3/1F4F: 60 RTS
C3/1F50 unknow
C3/1F50: 6450 STZ $50 C3/1F52: 644E STZ $4E C3/1F54: 38 SEC C3/1F55: 60 RTS
C3/1F56 unknow
C3/1F56: A554 LDA $54 C3/1F58: 3A DEC A C3/1F59: 854E STA $4E C3/1F5B: 18 CLC C3/1F5C: 654A ADC $4A C3/1F5E: 8550 STA $50 C3/1F60: 38 SEC C3/1F61: 60 RTS C3/1F62: 18 CLC C3/1F63: 60 RTS
C3/1F64 scroll through pages in a scrolling screen
C3/1F64: A520 LDA $20 C3/1F66: D0FA BNE $1F62 C3/1F68: A50A LDA $0A C3/1F6A: 8910 BIT #$10 C3/1F6C: F025 BEQ $1F93 C3/1F6E: A54A LDA $4A C3/1F70: C55C CMP $5C C3/1F72: F0E2 BEQ $1F56 C3/1F74: A55C LDA $5C C3/1F76: 38 SEC C3/1F77: E54A SBC $4A C3/1F79: C55A CMP $5A C3/1F7B: B002 BCS $1F7F C3/1F7D: 8002 BRA $1F81 C3/1F7F: A55A LDA $5A C3/1F81: 85E0 STA $E0 C3/1F83: A54A LDA $4A C3/1F85: 18 CLC C3/1F86: 65E0 ADC $E0 C3/1F88: 854A STA $4A C3/1F8A: A550 LDA $50 C3/1F8C: 18 CLC C3/1F8D: 65E0 ADC $E0 C3/1F8F: 8550 STA $50 C3/1F91: 8024 BRA $1FB7 C3/1F93: A50A LDA $0A C3/1F95: 8920 BIT #$20 C3/1F97: F0C9 BEQ $1F62 C3/1F99: A54A LDA $4A C3/1F9B: F0B3 BEQ $1F50 C3/1F9D: C55A CMP $5A C3/1F9F: B004 BCS $1FA5 C3/1FA1: A54A LDA $4A C3/1FA3: 8002 BRA $1FA7 C3/1FA5: A55A LDA $5A C3/1FA7: 85E0 STA $E0 C3/1FA9: A54A LDA $4A C3/1FAB: 38 SEC C3/1FAC: E5E0 SBC $E0 C3/1FAE: 854A STA $4A C3/1FB0: A550 LDA $50 C3/1FB2: 38 SEC C3/1FB3: E5E0 SBC $E0 C3/1FB5: 8550 STA $50 C3/1FB7: 20A30E JSR $0EA3 C3/1FBA: 7B TDC C3/1FBB: A52A LDA $2A C3/1FBD: 0A ASL A C3/1FBE: AA TAX C3/1FBF: FCC41F JSR ($1FC4,X) C3/1FC2: 38 SEC C3/1FC3: 60 RTS
C3/1F64 unknow
C3/1FC4: D01F C3/1FC6: D61F C3/1FC8: DC1F C3/1FCA: E21F C3/1FCC: E81F C3/1FCE: EE1F
C3/1FD0 unknow
C3/1FD0: 20957E JSR $7E95 C3/1FD3: 4C887F JMP $7F88 C3/1FD6: 202D4E JSR $4E2D C3/1FD9: 4C874F JMP $4F87 C3/1FDC: 202D4E JSR $4E2D C3/1FDF: 4C3C52 JMP $523C C3/1FE2: 202D4E JSR $4E2D C3/1FE5: 4CA753 JMP $53A7 C3/1FE8: 202D4E JSR $4E2D C3/1FEB: 4C6C54 JMP $546C C3/1FEE: 202095 JSR $9520 C3/1FF1: 4CAC9C JMP $9CAC
C3/1FF4: A910 LDA #$10 C3/1FF6: 0445 TSB $45 C3/1FF8: A9C0 LDA #$C0 C3/1FFA: 1446 TRB $46 C3/1FFC: 20564B JSR $4B56 C3/1FFF: A509 LDA $09 C3/2001: 8980 BIT #$80 (did you press B?) C3/2003: F00A BEQ $200F (branch if not, BPL...) C3/2005: 20A90E JSR $0EA9 C3/2008: A904 LDA #$04 C3/200A: 8527 STA $27 (init the main menu, queue up to execute at C3/1A8A) C3/200C: 6426 STZ $26 (fade out) C3/200E: 60 RTS