; +---------------------------------+ ; | Final Fantasy III Disassembly | ; | by everything8215@gmail.com | ; +---------------------------------+ ; this disassembly was made from the v1.0 Final Fantasy III (US) ROM ; ; changes made in the v1.1 ROM are marked with asterisks **** ; ; code labels were taken from the android port and are presumably the same ; as those used in the original source code ; -------------------------------------------[ Field: Main ]-------------------------------------------- C0/0000: 20 79 68 JSR $6879 ; load character graphics (world map) C0/0003: 6B RTL first_info: C0/0004: .DW $0003 ; starting map first_x: C0/0006: .DB $08 ; starting x position first_y: C0/0007: .DB $08 ; starting y position C0/0008: 4C 76 C1 JMP $C176 ; update random battles (world map) C0/000B: 4C 3F 4A JMP $4A3F ; update HP each step C0/000E: EA NOP C0/000F: EA NOP C0/0010: EA NOP C0/0011: EA NOP C0/0012: EA NOP C0/0013: EA NOP C0/0014: EA NOP C0/0015: 20 24 BB JSR $BB24 ; decrement timers C0/0018: 6B RTL ; [ Program Start ] reset: C0/0019: 78 SEI ; disable interrupts C0/001A: 18 CLC ; disable emulation mode C0/001B: FB XCE C0/001C: E2 20 SEP #$20 C0/001E: C2 10 REP #$10 C0/0020: A2 FF 15 LDX #$15FF ; set stack pointer C0/0023: 9A TXS C0/0024: A2 00 00 LDX #$0000 ; set direct page C0/0027: DA PHX C0/0028: 2B PLD C0/0029: 7B TDC ; set data bank C0/002A: 48 PHA C0/002B: AB PLB C0/002C: A9 01 LDA #$01 ; select fastROM C0/002E: 8D 0D 42 STA $420D C0/0031: 9C 0B 42 STZ $420B ; disable DMA & HDMA C0/0034: 9C 0C 42 STZ $420C C0/0037: A9 8F LDA #$8F ; screen off C0/0039: 8D 00 21 STA $2100 C0/003C: 9C 00 42 STZ $4200 ; disable NMI and IRQ C0/003F: 20 25 05 JSR $0525 C0/0042: A2 00 00 LDX #$0000 ; set $00 and $02 C0/0045: 86 00 STX $00 C0/0047: A2 FF FF LDX #$FFFF C0/004A: 86 02 STX $02 C0/004C: 20 73 05 JSR $0573 ; set up interrupt jump code C0/004F: 22 00 00 C5 JSL $C50000 ; init SPC C0/0053: 22 06 00 C3 JSL $C30006 ; init controller C0/0057: AF 06 00 C0 LDA $C00006 ; set starting position and map C0/005B: 8D C0 1F STA $1FC0 C0/005E: AF 07 00 C0 LDA $C00007 C0/0062: 8D C1 1F STA $1FC1 C0/0065: C2 20 REP #$20 C0/0067: AF 04 00 C0 LDA $C00004 C0/006B: 8D 64 1F STA $1F64 C0/006E: 7B TDC C0/006F: E2 20 SEP #$20 C0/0071: 9C 5A 11 STZ $115A ; unused C0/0074: 9C 59 11 STZ $1159 C0/0077: A9 40 LDA #$40 ; disable auto fade in when loading map C0/0079: 8D FA 11 STA $11FA C0/007C: 20 8D BD JSR $BD8D ; init SRAM C0/007F: 64 4A STZ $4A ; disable fade C0/0081: A9 01 LDA #$01 ; enable map load C0/0083: 85 84 STA $84 C0/0085: A5 4A LDA $4A ; branch if fading C0/0087: D0 21 BNE $00AA C0/0089: A5 84 LDA $84 ; branch if map is already loaded C0/008B: F0 1D BEQ $00AA C0/008D: C2 20 REP #$20 C0/008F: AD 64 1F LDA $1F64 ; map index C0/0092: 29 FF 03 AND #$03FF C0/0095: AA TAX C0/0096: 7B TDC C0/0097: E2 20 SEP #$20 C0/0099: E0 03 00 CPX #$0003 ; branch if not a 3d map C0/009C: B0 06 BCS $00A4 C0/009E: 20 97 03 JSR $0397 ; load world map C0/00A1: 4C 7F 00 JMP $007F C0/00A4: 20 BC BE JSR $BEBC ; load map C0/00A7: 20 86 03 JSR $0386 ; enable interrupts C0/00AA: 20 64 05 JSR $0564 ; wait for vblank C0/00AD: 20 A0 0E JSR $0EA0 ; update shake screen C0/00B0: 20 74 8D JSR $8D74 ; update palette animation C0/00B3: AC 03 08 LDY $0803 ; party object C0/00B6: C2 20 REP #$20 C0/00B8: B9 6D 08 LDA $086D,Y ; y position (in pixels) C0/00BB: 4A LSR ; convert to tiles C0/00BC: 4A LSR C0/00BD: 4A LSR C0/00BE: 4A LSR C0/00BF: E2 20 SEP #$20 C0/00C1: 85 B0 STA $B0 ; set party y position C0/00C3: C2 20 REP #$20 C0/00C5: B9 6A 08 LDA $086A,Y ; x position (in pixels) C0/00C8: 4A LSR ; convert to tiles C0/00C9: 4A LSR C0/00CA: 4A LSR C0/00CB: 4A LSR C0/00CC: E2 20 SEP #$20 C0/00CE: 85 AF STA $AF ; set party x position C0/00D0: 7B TDC C0/00D1: 20 F1 BB JSR $BBF1 ; check timer events C0/00D4: 20 6F BC JSR $BC6F ; check event triggers C0/00D7: 20 CC BB JSR $BBCC ; decrement timers C0/00DA: 20 5A 9A JSR $9A5A ; execute events C0/00DD: A5 4A LDA $4A ; loop if map is loading and fade out is complete C0/00DF: D0 04 BNE $00E5 C0/00E1: A5 84 LDA $84 C0/00E3: D0 A0 BNE $0085 C0/00E5: 20 A3 18 JSR $18A3 ; check entrance triggers C0/00E8: A5 4A LDA $4A ; loop if map is loading and fade out is complete C0/00EA: D0 04 BNE $00F0 C0/00EC: A5 84 LDA $84 C0/00EE: D0 95 BNE $0085 C0/00F0: 20 2D C3 JSR $C32D ; update random battles C0/00F3: AD F1 11 LDA $11F1 ; branch if not restoring a saved game C0/00F6: F0 15 BEQ $010D C0/00F8: 9C F1 11 STZ $11F1 ; disable restore saved game C0/00FB: A2 00 00 LDX #$0000 ; $CA0000 (no event) C0/00FE: 86 E5 STX $E5 C0/0100: A9 CA LDA #$CA C0/0102: 85 E7 STA $E7 C0/0104: 20 B3 C4 JSR $C4B3 ; load saved game C0/0107: 20 20 BD JSR $BD20 ; init character object data C0/010A: 4C 7F 00 JMP $007F ; loop C0/010D: A5 56 LDA $56 ; branch if battle not enabled C0/010F: F0 08 BEQ $0119 C0/0111: 64 56 STZ $56 ; disable battle C0/0113: 20 3E C1 JSR $C13E ; execute battle C0/0116: 4C 7F 00 JMP $007F ; loop C0/0119: 20 4C 81 JSR $814C ; update dialog text C0/011C: 20 81 30 JSR $3081 ; update dialog window C0/011F: 20 78 75 JSR $7578 ; update object actions C0/0122: 20 D0 2B JSR $2BD0 ; update scroll position C0/0125: 20 3C 57 JSR $573C ; update object positions C0/0128: 20 08 1F JSR $1F08 ; update bg1 map changes C0/012B: 20 C2 1F JSR $1FC2 ; update bg2 map changes C0/012E: 20 81 20 JSR $2081 ; update bg3 map changes C0/0131: 20 02 21 JSR $2102 ; update bg for scrolling C0/0134: 20 2D 5A JSR $5A2D ; update object sprite data C0/0137: 20 95 CC JSR $CC95 ; update overlay sprite data C0/013A: 20 26 6D JSR $6D26 ; update party switching C0/013D: 20 AC 73 JSR $73AC ; update party collisions C0/0140: 20 AF 06 JSR $06AF ; update flashlight C0/0143: 20 23 08 JSR $0823 ; update pyramid C0/0146: 20 BD 0B JSR $0BBD ; update spotlights C0/0149: 20 04 6A JSR $6A04 ; update timer sprite data C0/014C: A5 46 LDA $46 ; vblank counter C0/014E: D0 03 BNE $0153 C0/0150: 9C 32 06 STZ $0632 ; reset max vertical scanline position every 256 frames C0/0153: AD 37 21 LDA $2137 ; latch horizontal/vertical counter C0/0156: AD 3C 21 LDA $213C ; horizontal scanline position C0/0159: 8D 30 06 STA $0630 C0/015C: AD 3C 21 LDA $213C C0/015F: AD 3D 21 LDA $213D ; vertical scanline position C0/0162: 8D 31 06 STA $0631 C0/0165: AD 3D 21 LDA $213D C0/0168: AD 31 06 LDA $0631 ; calculate max vertical scanline position since last reset C0/016B: CD 32 06 CMP $0632 C0/016E: 90 03 BCC $0173 C0/0170: 8D 32 06 STA $0632 C0/0173: 20 D4 C5 JSR $C5D4 ; check main menu C0/0176: 4C 2B C6 JMP $C62B ; open main menu C0/0179: 4C 85 00 JMP $0085 ; end of main loop C0/017C: 20 74 03 JSR $0374 ; disable interrupts C0/017F: 4C 7F 00 JMP $007F ; [ Field NMI ] nmi: C0/0182: 08 PHP C0/0183: C2 30 REP #$30 C0/0185: 48 PHA C0/0186: DA PHX C0/0187: 5A PHY C0/0188: 8B PHB C0/0189: 0B PHD C0/018A: C2 10 REP #$10 C0/018C: E2 20 SEP #$20 C0/018E: A2 00 00 LDX #$0000 C0/0191: DA PHX C0/0192: 2B PLD C0/0193: 7B TDC C0/0194: 48 PHA C0/0195: AB PLB C0/0196: AD 10 42 LDA $4210 ; reset NMI flag register C0/0199: 9C 0B 42 STZ $420B ; disable DMA C0/019C: 9C 0C 42 STZ $420C C0/019F: A9 A1 LDA #$A1 ; enable NMI, vertical IRQ, and controller C0/01A1: 8D 00 42 STA $4200 C0/01A4: 20 5F 0F JSR $0F5F ; update screen brightness C0/01A7: 20 01 10 JSR $1001 ; copy color palettes to VRAM C0/01AA: 20 BF 0F JSR $0FBF ; copy sprite data to VRAM C0/01AD: 20 37 1E JSR $1E37 ; copy map changes to VRAM C0/01B0: AD 86 05 LDA $0586 ; bg1 horizontal scroll status C0/01B3: C9 02 CMP #$02 C0/01B5: D0 06 BNE $01BD ; branch if no update is needed C0/01B7: 20 78 2A JSR $2A78 ; update bg1 map data in VRAM (horizontal scroll) C0/01BA: 9C 86 05 STZ $0586 C0/01BD: AD 88 05 LDA $0588 ; bg2 horizontal scroll status C0/01C0: C9 02 CMP #$02 C0/01C2: D0 08 BNE $01CC C0/01C4: 20 FB 2A JSR $2AFB ; update bg2 map data in VRAM (horizontal scroll) C0/01C7: 9C 88 05 STZ $0588 C0/01CA: 80 1C BRA $01E8 C0/01CC: AD 85 05 LDA $0585 ; bg1 vertical scroll status C0/01CF: C9 02 CMP #$02 C0/01D1: D0 06 BNE $01D9 C0/01D3: 20 47 2A JSR $2A47 C0/01D6: 9C 85 05 STZ $0585 C0/01D9: AD 87 05 LDA $0587 ; bg2 vertical scroll status C0/01DC: C9 02 CMP #$02 C0/01DE: D0 08 BNE $01E8 C0/01E0: 20 CA 2A JSR $2ACA C0/01E3: 9C 87 05 STZ $0587 C0/01E6: 80 E4 BRA $01CC C0/01E8: AD 8A 05 LDA $058A ; bg3 horizontal scroll status C0/01EB: C9 02 CMP #$02 C0/01ED: D0 08 BNE $01F7 C0/01EF: 20 7E 2B JSR $2B7E C0/01F2: 9C 8A 05 STZ $058A C0/01F5: 80 0D BRA $0204 C0/01F7: AD 89 05 LDA $0589 ; bg3 vertical scroll status C0/01FA: C9 02 CMP #$02 C0/01FC: D0 06 BNE $0204 C0/01FE: 20 4D 2B JSR $2B4D C0/0201: 9C 89 05 STZ $0589 C0/0204: 20 7B 67 JSR $677B ; update object graphics in VRAM C0/0207: 20 3E 88 JSR $883E ; copy multiple choice indicator graphics to VRAM C0/020A: 20 03 86 JSR $8603 ; copy dialog text graphics to VRAM C0/020D: 20 B0 85 JSR $85B0 ; clear dialog text graphics region in VRAM C0/0210: A9 E0 LDA #$E0 ; clear fixed color add/sub register C0/0212: 8D 32 21 STA $2132 C0/0215: 9C 0B 42 STZ $420B ; disable DMA C0/0218: A9 43 LDA #$43 ; set up HDMA channel 0 C0/021A: 8D 00 43 STA $4300 C0/021D: A9 0F LDA #$0F C0/021F: 8D 01 43 STA $4301 C0/0222: A2 51 7C LDX #$7C51 C0/0225: 8E 02 43 STX $4302 C0/0228: A9 7E LDA #$7E C0/022A: 8D 04 43 STA $4304 C0/022D: 8D 07 43 STA $4307 C0/0230: AD 21 05 LDA $0521 ; wavy bg2 graphics C0/0233: 29 08 AND #$08 C0/0235: 4A LSR C0/0236: 4A LSR C0/0237: 4A LSR C0/0238: 09 FE ORA #$FE C0/023A: 8D 0C 42 STA $420C ; enable HDMA channels C0/023D: 20 B6 42 JSR $42B6 ; update BG scroll HDMA data (channel #4, #3, #0) C0/0240: 20 53 10 JSR $1053 ; update fixed color add/sub HDMA data C0/0243: 20 37 0E JSR $0E37 ; update mosaic HDMA data (channel #7) C0/0246: 20 9B 3B JSR $3B9B ; update window 2 position HDMA table (channel #5) C0/0249: 20 3C 06 JSR $063C ; update window mask settings C0/024C: 20 6D 05 JSR $056D ; update controller C0/024F: 22 0C 00 C3 JSL $C3000C ; update game time C0/0253: E6 46 INC $46 ; increment vblank counter C0/0255: E6 45 INC $45 ; increment frame counter C0/0257: E6 55 INC $55 ; disable vblank C0/0259: C2 30 REP #$30 C0/025B: 2B PLD C0/025C: AB PLB C0/025D: 7A PLY C0/025E: FA PLX C0/025F: 68 PLA C0/0260: 28 PLP C0/0261: 40 RTI ; [ Field IRQ ] ; called every frame at scanline 215 irq: C0/0262: 08 PHP C0/0263: C2 30 REP #$30 C0/0265: 48 PHA C0/0266: DA PHX C0/0267: 5A PHY C0/0268: 8B PHB C0/0269: 0B PHD C0/026A: C2 10 REP #$10 C0/026C: E2 20 SEP #$20 C0/026E: A2 00 00 LDX #$0000 C0/0271: DA PHX C0/0272: 2B PLD C0/0273: 7B TDC C0/0274: 48 PHA C0/0275: AB PLB C0/0276: AD 11 42 LDA $4211 ; reset IRQ flag register C0/0279: 10 15 BPL $0290 ; branch if vertical timer didn't end C0/027B: A9 81 LDA #$81 ; enable NMI and controller, disable IRQ C0/027D: 8D 00 42 STA $4200 C0/0280: 9C 0C 42 STZ $420C ; disable HDMA C0/0283: A5 45 LDA $45 ; frame counter C0/0285: 4A LSR C0/0286: B0 05 BCS $028D C0/0288: 20 3F 90 JSR $903F ; copy bg1/bg2 animation graphics to VRAM C0/028B: 80 03 BRA $0290 C0/028D: 20 78 91 JSR $9178 ; copy bg3 animation graphics to VRAM C0/0290: C2 30 REP #$30 C0/0292: 2B PLD C0/0293: AB PLB C0/0294: 7A PLY C0/0295: FA PLX C0/0296: 68 PLA C0/0297: 28 PLP C0/0298: 40 RTI ; [ Validate CheckSum (unused) ] C0/0299: A2 00 00 LDX #$0000 C0/029C: 86 1E STX $1E C0/029E: 86 2A STX $2A C0/02A0: A9 C0 LDA #$C0 C0/02A2: 85 2C STA $2C C0/02A4: A0 00 00 LDY #$0000 C0/02A7: B7 2A LDA [$2A],Y C0/02A9: 18 CLC C0/02AA: 65 1E ADC $1E C0/02AC: 85 1E STA $1E C0/02AE: 7B TDC C0/02AF: 65 1F ADC $1F C0/02B1: 85 1F STA $1F C0/02B3: C8 INY C0/02B4: D0 F1 BNE $02A7 C0/02B6: A5 2C LDA $2C C0/02B8: 1A INC C0/02B9: 85 2C STA $2C C0/02BB: C9 F0 CMP #$F0 C0/02BD: D0 E5 BNE $02A4 C0/02BF: AF DF FF C0 LDA $C0FFDF C0/02C3: C5 1F CMP $1F C0/02C5: D0 09 BNE $02D0 C0/02C7: AF DE FF C0 LDA $C0FFDE C0/02CB: C5 1E CMP $1E C0/02CD: D0 01 BNE $02D0 C0/02CF: 60 RTS C0/02D0: 4C D0 02 JMP $02D0 ; infinite loop ; [ Play Sound Effect ] ; A = sound effect index set_effect_no: C0/02D3: 8D 01 13 STA $1301 C0/02D6: A9 18 LDA #$18 C0/02D8: 8D 00 13 STA $1300 C0/02DB: A9 80 LDA #$80 C0/02DD: 8D 02 13 STA $1302 C0/02E0: 22 04 00 C5 JSL $C50004 ; spc command C0/02E4: 60 RTS ; [ Convert Hex to Decimal ] ; ++$22 = hex value to convert hex2dec: C0/02E5: DA PHX C0/02E6: 5A PHY C0/02E7: A6 00 LDX $00 C0/02E9: A0 00 00 LDY #$0000 C0/02EC: 64 25 STZ $25 C0/02EE: C2 20 REP #$20 C0/02F0: A5 22 LDA $22 C0/02F2: 38 SEC C0/02F3: FF 2E 03 C0 SBC $C0032E,X C0/02F7: 85 22 STA $22 C0/02F9: A5 24 LDA $24 C0/02FB: FF 3E 03 C0 SBC $C0033E,X C0/02FF: 85 24 STA $24 C0/0301: 90 04 BCC $0307 C0/0303: C8 INY C0/0304: 4C EE 02 JMP $02EE C0/0307: A5 22 LDA $22 C0/0309: 18 CLC C0/030A: 7F 2E 03 C0 ADC $C0032E,X C0/030E: 85 22 STA $22 C0/0310: A5 24 LDA $24 C0/0312: 7F 3E 03 C0 ADC $C0033E,X C0/0316: 85 24 STA $24 C0/0318: 7B TDC C0/0319: E2 20 SEP #$20 C0/031B: DA PHX C0/031C: 8A TXA C0/031D: 4A LSR C0/031E: AA TAX C0/031F: 98 TYA C0/0320: 9D 54 07 STA $0754,X C0/0323: FA PLX C0/0324: E8 INX C0/0325: E8 INX C0/0326: E0 10 00 CPX #$0010 C0/0329: D0 BE BNE $02E9 C0/032B: 7A PLY C0/032C: FA PLX C0/032D: 60 RTS ; hex to decimal conversion constants C0/032E: .DW !10000000d, !1000000d, !100000d, !10000d, !1000d, !100d, !10d, !1d C0/033E: .DW ^10000000d, ^1000000d, ^100000d, ^10000d, ^1000d, ^100d, ^10d, ^1d ; [ Play Default Song ] set_map_sound_no: C0/034E: AD B9 1E LDA $1EB9 C0/0351: 29 10 AND #$10 C0/0353: D0 0A BNE $035F C0/0355: AD 3C 05 LDA $053C C0/0358: F0 19 BEQ $0373 C0/035A: 8D 80 1F STA $1F80 C0/035D: 80 03 BRA $0362 C0/035F: AD 80 1F LDA $1F80 C0/0362: 8D 01 13 STA $1301 C0/0365: A9 10 LDA #$10 C0/0367: 8D 00 13 STA $1300 C0/036A: A9 FF LDA #$FF C0/036C: 8D 02 13 STA $1302 C0/036F: 22 04 00 C5 JSL $C50004 ; spc command C0/0373: 60 RTS ; [ Disable Interrupts ] blanking_start: C0/0374: 9C 0B 42 STZ $420B C0/0377: 9C 0C 42 STZ $420C C0/037A: A9 80 LDA #$80 C0/037C: 8D 00 21 STA $2100 C0/037F: A9 00 LDA #$00 C0/0381: 8D 00 42 STA $4200 C0/0384: 78 SEI C0/0385: 60 RTS ; [ Enable Interrupts ] blanking_end: C0/0386: AD 10 42 LDA $4210 C0/0389: 10 FB BPL $0386 C0/038B: A9 81 LDA #$81 C0/038D: 8D 00 42 STA $4200 C0/0390: A9 00 LDA #$00 C0/0392: 8D 00 21 STA $2100 C0/0395: 58 CLI C0/0396: 60 RTS ; [ Load World Map ] call_ogata_man: C0/0397: 9C 05 02 STZ $0205 C0/039A: 9C 0B 42 STZ $420B C0/039D: 9C 0C 42 STZ $420C C0/03A0: A9 8F LDA #$8F C0/03A2: 8D 00 21 STA $2100 C0/03A5: A9 00 LDA #$00 C0/03A7: 8D 00 42 STA $4200 C0/03AA: A6 E5 LDX $E5 C0/03AC: D0 0F BNE $03BD C0/03AE: A5 E7 LDA $E7 C0/03B0: C9 CA CMP #$CA C0/03B2: D0 09 BNE $03BD C0/03B4: 9C FD 11 STZ $11FD C0/03B7: 9C FE 11 STZ $11FE C0/03BA: 9C FF 11 STZ $11FF C0/03BD: 20 05 05 JSR $0505 ; save direct page C0/03C0: 20 91 70 JSR $7091 ; save character data C0/03C3: 20 21 6F JSR $6F21 ; save character palettes C0/03C6: 20 88 6E JSR $6E88 ; save map and position for character objects C0/03C9: AE 03 08 LDX $0803 C0/03CC: 8E A6 1F STX $1FA6 C0/03CF: AC 03 08 LDY $0803 C0/03D2: B9 79 08 LDA $0879,Y C0/03D5: 8D FB 11 STA $11FB C0/03D8: 8C 04 42 STY $4204 C0/03DB: A9 29 LDA #$29 C0/03DD: 8D 06 42 STA $4206 C0/03E0: EA NOP C0/03E1: EA NOP C0/03E2: EA NOP C0/03E3: EA NOP C0/03E4: EA NOP C0/03E5: EA NOP C0/03E6: EA NOP C0/03E7: AC 14 42 LDY $4214 C0/03EA: B9 70 1F LDA $1F70,Y C0/03ED: 4A LSR C0/03EE: 8D FC 11 STA $11FC C0/03F1: 48 PHA C0/03F2: DA PHX C0/03F3: 5A PHY C0/03F4: 0B PHD C0/03F5: 8B PHB C0/03F6: 08 PHP C0/03F7: 22 00 00 EE JSL $EE0000 ; world map C0/03FB: 28 PLP C0/03FC: AB PLB C0/03FD: 2B PLD C0/03FE: 7A PLY C0/03FF: FA PLX C0/0400: 68 PLA C0/0401: 78 SEI C0/0402: 9C 0B 42 STZ $420B C0/0405: 9C 0C 42 STZ $420C C0/0408: A9 8F LDA #$8F C0/040A: 8D 00 21 STA $2100 C0/040D: A9 00 LDA #$00 C0/040F: 8D 00 42 STA $4200 C0/0412: EB XBA C0/0413: 20 73 05 JSR $0573 ; set up interrupt jump code C0/0416: 20 15 05 JSR $0515 ; restore direct page C0/0419: 20 77 70 JSR $7077 ; restore character data C0/041C: 20 BF 6E JSR $6EBF ; restore map index for character objects C0/041F: AD 4E 1D LDA $1D4E C0/0422: 29 07 AND #$07 C0/0424: 8D 65 05 STA $0565 C0/0427: C2 20 REP #$20 C0/0429: AD 64 1F LDA $1F64 C0/042C: 85 1E STA $1E C0/042E: 29 FF 01 AND #$01FF C0/0431: 8D 64 1F STA $1F64 C0/0434: AD 66 1F LDA $1F66 C0/0437: 8D C0 1F STA $1FC0 C0/043A: 7B TDC C0/043B: E2 20 SEP #$20 C0/043D: A5 1F LDA $1F C0/043F: 29 30 AND #$30 C0/0441: 4A LSR C0/0442: 4A LSR C0/0443: 4A LSR C0/0444: 4A LSR C0/0445: 8D 43 07 STA $0743 C0/0448: A5 1F LDA $1F C0/044A: 29 08 AND #$08 C0/044C: 8D 45 07 STA $0745 C0/044F: AE FD 11 LDX $11FD C0/0452: 86 E5 STX $E5 C0/0454: AD FF 11 LDA $11FF C0/0457: 85 E7 STA $E7 C0/0459: C9 CA CMP #$CA C0/045B: D0 0E BNE $046B C0/045D: E0 00 00 CPX #$0000 C0/0460: D0 09 BNE $046B C0/0462: A6 00 LDX $00 C0/0464: 86 E8 STX $E8 C0/0466: A9 80 LDA #$80 C0/0468: 8D FA 11 STA $11FA C0/046B: 60 RTS ; [ Decompress ] ; ++$F3 = source address ; ++$F6 = destination address extract: C0/046C: 8B PHB C0/046D: C2 20 REP #$20 C0/046F: A7 F3 LDA [$F3] C0/0471: 85 FC STA $FC C0/0473: A5 F6 LDA $F6 C0/0475: 8F 81 21 00 STA $002181 C0/0479: E2 20 SEP #$20 C0/047B: A5 F8 LDA $F8 C0/047D: 29 01 AND #$01 C0/047F: 8F 83 21 00 STA $002183 C0/0483: A9 01 LDA #$01 C0/0485: 85 FE STA $FE C0/0487: A0 02 00 LDY #$0002 C0/048A: A9 7F LDA #$7F C0/048C: 48 PHA C0/048D: AB PLB C0/048E: A2 00 F8 LDX #$F800 C0/0491: 7B TDC C0/0492: 9D 00 00 STA $0000,X C0/0495: E8 INX C0/0496: D0 FA BNE $0492 C0/0498: A2 DE FF LDX #$FFDE C0/049B: C6 FE DEC $FE C0/049D: D0 09 BNE $04A8 C0/049F: A9 08 LDA #$08 C0/04A1: 85 FE STA $FE C0/04A3: B7 F3 LDA [$F3],Y C0/04A5: 85 FF STA $FF C0/04A7: C8 INY C0/04A8: 46 FF LSR $FF C0/04AA: 90 11 BCC $04BD C0/04AC: B7 F3 LDA [$F3],Y C0/04AE: 8F 80 21 00 STA $002180 C0/04B2: 9D 00 00 STA $0000,X C0/04B5: E8 INX C0/04B6: D0 37 BNE $04EF C0/04B8: A2 00 F8 LDX #$F800 C0/04BB: 80 32 BRA $04EF C0/04BD: B7 F3 LDA [$F3],Y C0/04BF: EB XBA C0/04C0: C8 INY C0/04C1: 84 F9 STY $F9 C0/04C3: B7 F3 LDA [$F3],Y C0/04C5: 4A LSR C0/04C6: 4A LSR C0/04C7: 4A LSR C0/04C8: 18 CLC C0/04C9: 69 03 ADC #$03 C0/04CB: 85 FB STA $FB C0/04CD: B7 F3 LDA [$F3],Y C0/04CF: 09 F8 ORA #$F8 C0/04D1: EB XBA C0/04D2: A8 TAY C0/04D3: B9 00 00 LDA $0000,Y C0/04D6: 8F 80 21 00 STA $002180 C0/04DA: 9D 00 00 STA $0000,X C0/04DD: E8 INX C0/04DE: D0 03 BNE $04E3 C0/04E0: A2 00 F8 LDX #$F800 C0/04E3: C8 INY C0/04E4: D0 03 BNE $04E9 C0/04E6: A0 00 F8 LDY #$F800 C0/04E9: C6 FB DEC $FB C0/04EB: D0 E6 BNE $04D3 C0/04ED: A4 F9 LDY $F9 C0/04EF: C8 INY C0/04F0: C4 FC CPY $FC C0/04F2: D0 A7 BNE $049B C0/04F4: 7B TDC C0/04F5: EB XBA C0/04F6: AB PLB C0/04F7: 6B RTL ; [ Clear Direct Page (unused) ] C0/04F8: A2 00 00 LDX #$0000 C0/04FB: 9E 00 00 STZ $0000,X C0/04FE: E8 INX C0/04FF: E0 00 01 CPX #$0100 C0/0502: D0 F7 BNE $04FB C0/0504: 60 RTS ; [ Save Direct Page ] push_zero_page: C0/0505: A2 00 00 LDX #$0000 C0/0508: BD 00 00 LDA $0000,X C0/050B: 9D 00 12 STA $1200,X C0/050E: E8 INX C0/050F: E0 00 01 CPX #$0100 C0/0512: D0 F4 BNE $0508 C0/0514: 60 RTS ; [ Restore Direct Page ] pop_zero_page: C0/0515: A2 00 00 LDX #$0000 C0/0518: BD 00 12 LDA $1200,X C0/051B: 9D 00 00 STA $0000,X C0/051E: E8 INX C0/051F: E0 00 01 CPX #$0100 C0/0522: D0 F4 BNE $0518 C0/0524: 60 RTS ; [ Clear $0000-$1200 ] clear_work: C0/0525: 7B TDC C0/0526: AA TAX C0/0527: 8E 81 21 STX $2181 C0/052A: 8D 83 21 STA $2183 C0/052D: A2 20 01 LDX #$0120 C0/0530: 8D 80 21 STA $2180 C0/0533: 8D 80 21 STA $2180 C0/0536: 8D 80 21 STA $2180 C0/0539: 8D 80 21 STA $2180 C0/053C: 8D 80 21 STA $2180 C0/053F: 8D 80 21 STA $2180 C0/0542: 8D 80 21 STA $2180 C0/0545: 8D 80 21 STA $2180 C0/0548: 8D 80 21 STA $2180 C0/054B: 8D 80 21 STA $2180 C0/054E: 8D 80 21 STA $2180 C0/0551: 8D 80 21 STA $2180 C0/0554: 8D 80 21 STA $2180 C0/0557: 8D 80 21 STA $2180 C0/055A: 8D 80 21 STA $2180 C0/055D: 8D 80 21 STA $2180 C0/0560: CA DEX C0/0561: D0 CD BNE $0530 C0/0563: 60 RTS ; [ Wait for VBlank ] wait_nmi: C0/0564: 64 55 STZ $55 C0/0566: A5 55 LDA $55 C0/0568: F0 FC BEQ $0566 C0/056A: 64 55 STZ $55 C0/056C: 60 RTS ; [ Update Controller ] joy_main: C0/056D: 22 09 00 C3 JSL $C30009 C0/0571: 7B TDC C0/0572: 60 RTS ; [ Set Up Interrupt Jump Code ] set_vector: C0/0573: A9 5C LDA #$5C C0/0575: 8D 00 15 STA $1500 C0/0578: 8D 04 15 STA $1504 C0/057B: A2 82 01 LDX #$0182 C0/057E: 8E 01 15 STX $1501 C0/0581: A9 C0 LDA #$C0 C0/0583: 8D 03 15 STA $1503 C0/0586: A2 62 02 LDX #$0262 C0/0589: 8E 05 15 STX $1505 C0/058C: A9 C0 LDA #$C0 C0/058E: 8D 07 15 STA $1507 C0/0591: 60 RTS ; [ Init PPU Hardware Registers ] init_ppu: C0/0592: A9 80 LDA #$80 C0/0594: 8D 00 21 STA $2100 C0/0597: A9 00 LDA #$00 C0/0599: 8D 00 42 STA $4200 C0/059C: 9C 0B 42 STZ $420B C0/059F: 9C 0C 42 STZ $420C C0/05A2: A9 03 LDA #$03 ; sprite graphics at $6000 (vram) C0/05A4: 09 60 ORA #$60 ; 16x16 and 32x32 sprites C0/05A6: 8D 01 21 STA $2101 C0/05A9: 9C 02 21 STZ $2102 C0/05AC: 9C 03 21 STZ $2103 C0/05AF: A9 09 LDA #$09 C0/05B1: 8D 05 21 STA $2105 C0/05B4: 9C 06 21 STZ $2106 C0/05B7: A9 48 LDA #$48 C0/05B9: 8D 07 21 STA $2107 C0/05BC: A9 50 LDA #$50 C0/05BE: 8D 08 21 STA $2108 C0/05C1: A9 58 LDA #$58 C0/05C3: 8D 09 21 STA $2109 C0/05C6: A9 00 LDA #$00 C0/05C8: 8D 0B 21 STA $210B C0/05CB: A9 03 LDA #$03 C0/05CD: 8D 0C 21 STA $210C C0/05D0: A9 80 LDA #$80 C0/05D2: 8D 15 21 STA $2115 C0/05D5: 8D 21 21 STA $2121 C0/05D8: A9 33 LDA #$33 C0/05DA: 8D 23 21 STA $2123 C0/05DD: A9 03 LDA #$03 C0/05DF: 8D 24 21 STA $2124 C0/05E2: A9 F3 LDA #$F3 C0/05E4: 8D 25 21 STA $2125 C0/05E7: A9 08 LDA #$08 C0/05E9: 8D 26 21 STA $2126 C0/05EC: A9 F7 LDA #$F7 C0/05EE: 8D 27 21 STA $2127 C0/05F1: A9 00 LDA #$00 C0/05F3: 8D 28 21 STA $2128 C0/05F6: A9 FF LDA #$FF C0/05F8: 8D 29 21 STA $2129 C0/05FB: A9 00 LDA #$00 C0/05FD: 8D 2A 21 STA $212A C0/0600: A9 00 LDA #$00 C0/0602: 8D 2B 21 STA $212B C0/0605: A9 17 LDA #$17 C0/0607: 8D 2E 21 STA $212E C0/060A: 9C 2F 21 STZ $212F C0/060D: A9 22 LDA #$22 C0/060F: 8D 30 21 STA $2130 C0/0612: A9 E0 LDA #$E0 C0/0614: 8D 32 21 STA $2132 C0/0617: A9 00 LDA #$00 C0/0619: 8D 33 21 STA $2133 C0/061C: A9 FF LDA #$FF C0/061E: 8D 01 42 STA $4201 C0/0621: 9C 07 42 STZ $4207 C0/0624: 9C 08 42 STZ $4208 C0/0627: A2 D7 00 LDX #$00D7 ; vertical timer set to scanline 215 C0/062A: 8E 09 42 STX $4209 C0/062D: 60 RTS ; [ Update Random Number ] rnd: C0/062E: DA PHX C0/062F: EE 6D 1F INC $1F6D C0/0632: AD 6D 1F LDA $1F6D C0/0635: AA TAX C0/0636: BF 00 FD C0 LDA $C0FD00,X C0/063A: FA PLX C0/063B: 60 RTS ; [ Update Window Mask Settings ] set_window_select: C0/063C: AD 7B 07 LDA $077B C0/063F: D0 0E BNE $064F C0/0641: AD 81 07 LDA $0781 C0/0644: D0 09 BNE $064F C0/0646: AD 21 05 LDA $0521 C0/0649: 29 20 AND #$20 C0/064B: D0 02 BNE $064F ; branch if spotlights are enabled C0/064D: 80 1E BRA $066D C0/064F: AD 26 05 LDA $0526 ; window mask C0/0652: 29 03 AND #$03 C0/0654: 0A ASL C0/0655: 0A ASL C0/0656: AA TAX C0/0657: BF 7D 06 C0 LDA $C0067D,X C0/065B: 8D 23 21 STA $2123 C0/065E: BF 7E 06 C0 LDA $C0067E,X C0/0662: 8D 24 21 STA $2124 C0/0665: BF 7F 06 C0 LDA $C0067F,X C0/0669: 8D 25 21 STA $2125 C0/066C: 60 RTS C0/066D: A9 33 LDA #$33 ; use default settings C0/066F: 8D 23 21 STA $2123 C0/0672: A9 03 LDA #$03 C0/0674: 8D 24 21 STA $2124 C0/0677: A9 F3 LDA #$F3 C0/0679: 8D 25 21 STA $2125 C0/067C: 60 RTS ; window mask settings window_select_tbl: C0/067D: .DB $33, $03, $F3, $00 C0/0681: .DB $B3, $03, $F3, $00 C0/0685: .DB $FF, $0F, $FF, $00 C0/0689: .DB $33, $0F, $F3, $00 ; [ Reset Window Mask HDMA Data ] naritaGraphic::clear_window_pos: C0/068D: EE 66 05 INC $0566 C0/0690: AD 66 05 LDA $0566 C0/0693: 4A LSR C0/0694: B0 08 BCS $069E C0/0696: A2 B3 8C LDX #$8CB3 C0/0699: 8E 81 21 STX $2181 C0/069C: 80 06 BRA $06A4 C0/069E: A2 53 8E LDX #$8E53 C0/06A1: 8E 81 21 STX $2181 C0/06A4: A9 7E LDA #$7E C0/06A6: 8D 83 21 STA $2183 C0/06A9: A9 D0 LDA #$D0 C0/06AB: 20 6E 0B JSR $0B6E ; set window 2 hdma lines to fully closed C0/06AE: 60 RTS ; [ Update Flashlight ] ; use Bresenham's circle algorithm (I think...) through 90 degrees to find the points of the flashlight circle naritaGraphic::calc_circle_window: C0/06AF: AD 7B 07 LDA $077B ; return if flashlight is not enabled C0/06B2: 30 01 BMI $06B5 C0/06B4: 60 RTS C0/06B5: 29 1F AND #$1F ; target flashlight size * 2 C0/06B7: 0A ASL C0/06B8: CD 7C 07 CMP $077C ; compare to current flashlight size C0/06BB: F0 10 BEQ $06CD C0/06BD: B0 08 BCS $06C7 C0/06BF: CE 7C 07 DEC $077C C0/06C2: CE 7C 07 DEC $077C C0/06C5: 80 06 BRA $06CD C0/06C7: EE 7C 07 INC $077C C0/06CA: EE 7C 07 INC $077C C0/06CD: AC 03 08 LDY $0803 ; party object C0/06D0: B9 6A 08 LDA $086A,Y ; x position C0/06D3: 38 SEC C0/06D4: E5 5C SBC $5C ; subtract bg1 scroll position to get position on screen C0/06D6: 18 CLC C0/06D7: 69 10 ADC #$10 ; add $10 C0/06D9: 8D 7D 07 STA $077D ; set flashlight x position C0/06DC: B9 6D 08 LDA $086D,Y ; y position C0/06DF: 38 SEC C0/06E0: E5 60 SBC $60 ; subtract bg1 scroll position to get position on screen C0/06E2: 38 SEC C0/06E3: E9 08 SBC #$08 ; subtract 8 C0/06E5: 8D 7E 07 STA $077E ; set flashlight y position C0/06E8: EE 66 05 INC $0566 ; window 2 frame counter C0/06EB: AD 66 05 LDA $0566 C0/06EE: 4A LSR C0/06EF: B0 08 BCS $06F9 C0/06F1: A2 B3 8C LDX #$8CB3 ; even frame C0/06F4: 8E 81 21 STX $2181 C0/06F7: 80 06 BRA $06FF C0/06F9: A2 53 8E LDX #$8E53 ; odd frame C0/06FC: 8E 81 21 STX $2181 C0/06FF: A9 7E LDA #$7E C0/0701: 8D 83 21 STA $2183 C0/0704: AD 7C 07 LDA $077C ; $1A = current flashlight radius (in pixels) C0/0707: 85 1A STA $1A C0/0709: D0 09 BNE $0714 C0/070B: A9 D0 LDA #$D0 ; radius zero, close window 2 in all lines C0/070D: 20 6E 0B JSR $0B6E C0/0710: 9C 7B 07 STZ $077B C0/0713: 60 RTS C0/0714: A2 00 01 LDX #$0100 ; $0100 / flashlight radius C0/0717: 8E 04 42 STX $4204 C0/071A: A5 1A LDA $1A C0/071C: 8D 06 42 STA $4206 C0/071F: EA NOP C0/0720: EA NOP C0/0721: EA NOP C0/0722: EA NOP C0/0723: EA NOP C0/0724: EA NOP C0/0725: EA NOP C0/0726: AD 14 42 LDA $4214 C0/0729: 8D 02 42 STA $4202 ; 1 / R C0/072C: A5 1A LDA $1A C0/072E: 85 27 STA $27 ; +$26: X = R + 0.5 C0/0730: A9 80 LDA #$80 C0/0732: 85 26 STA $26 C0/0734: 64 28 STZ $28 ; +$28: Y = 0 C0/0736: 64 29 STZ $29 C0/0738: E2 10 SEP #$10 C0/073A: C2 20 REP #$20 C0/073C: A6 29 LDX $29 C0/073E: 8E 03 42 STX $4203 C0/0741: A5 26 LDA $26 ; X -= Y / R C0/0743: 38 SEC C0/0744: ED 16 42 SBC $4216 C0/0747: 85 26 STA $26 C0/0749: 30 14 BMI $075F ; exit loop when X goes negative C0/074B: EB XBA C0/074C: 9F 00 7B 7E STA $7E7B00,X C0/0750: A4 27 LDY $27 ; Y += X / R C0/0752: 8C 03 42 STY $4203 C0/0755: A5 28 LDA $28 C0/0757: 18 CLC C0/0758: 6D 16 42 ADC $4216 C0/075B: 85 28 STA $28 C0/075D: 80 DD BRA $073C C0/075F: 7B TDC C0/0760: E2 20 SEP #$20 C0/0762: AD 7E 07 LDA $077E ; flashlight Y position C0/0765: 38 SEC C0/0766: E5 1A SBC $1A ; subtract radius C0/0768: 90 03 BCC $076D C0/076A: 20 6E 0B JSR $0B6E ; fully close lines above flashlight C0/076D: AC 7D 07 LDY $077D ; do the top half of the flashlight first C0/0770: A6 1A LDX $1A C0/0772: EC 7E 07 CPX $077E C0/0775: 90 03 BCC $077A C0/0777: AE 7E 07 LDX $077E C0/077A: CA DEX C0/077B: 98 TYA ; flashlight x position C0/077C: 38 SEC C0/077D: FF 00 7B 7E SBC $7E7B00,X ; subtract width C0/0781: B0 01 BCS $0784 C0/0783: 7B TDC ; min value is 0 C0/0784: 8D 80 21 STA $2180 ; set left side of window C0/0787: 98 TYA C0/0788: 18 CLC C0/0789: 7F 00 7B 7E ADC $7E7B00,X ; add width C0/078D: 90 02 BCC $0791 C0/078F: A9 FF LDA #$FF ; max value is $FF C0/0791: 8D 80 21 STA $2180 ; set right side of window C0/0794: CA DEX ; next line C0/0795: D0 E4 BNE $077B C0/0797: AC 7D 07 LDY $077D ; then do the bottom half of the flashlight C0/079A: A6 1A LDX $1A C0/079C: AD 7E 07 LDA $077E C0/079F: C9 D0 CMP #$D0 C0/07A1: B0 3C BCS $07DF C0/07A3: 18 CLC C0/07A4: 65 1A ADC $1A C0/07A6: C9 D0 CMP #$D0 C0/07A8: 90 07 BCC $07B1 C0/07AA: A9 D0 LDA #$D0 C0/07AC: 38 SEC C0/07AD: ED 7E 07 SBC $077E C0/07B0: AA TAX C0/07B1: 86 2A STX $2A C0/07B3: A6 00 LDX $00 C0/07B5: 98 TYA C0/07B6: 38 SEC C0/07B7: FF 00 7B 7E SBC $7E7B00,X C0/07BB: B0 01 BCS $07BE C0/07BD: 7B TDC C0/07BE: 8D 80 21 STA $2180 C0/07C1: 98 TYA C0/07C2: 18 CLC C0/07C3: 7F 00 7B 7E ADC $7E7B00,X C0/07C7: 90 02 BCC $07CB C0/07C9: A9 FF LDA #$FF C0/07CB: 8D 80 21 STA $2180 C0/07CE: E8 INX C0/07CF: E4 2A CPX $2A C0/07D1: D0 E2 BNE $07B5 C0/07D3: A9 D1 LDA #$D1 ; A = #$D1 - flashlight radius - flashlight y position C0/07D5: 38 SEC C0/07D6: E5 1A SBC $1A C0/07D8: 38 SEC C0/07D9: ED 7E 07 SBC $077E C0/07DC: 20 6E 0B JSR $0B6E ; close window 2 for all lines below flashlight C0/07DF: C2 10 REP #$10 C0/07E1: 60 RTS ; [ Sine ] ; A = $1A * sin($1B) naritaGraphic::sin: C0/07E2: A5 1A LDA $1A C0/07E4: 8D 02 42 STA $4202 C0/07E7: 4A LSR C0/07E8: 85 1A STA $1A C0/07EA: A5 1B LDA $1B C0/07EC: AA TAX C0/07ED: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table C0/07F1: 18 CLC C0/07F2: 69 80 ADC #$80 C0/07F4: 8D 03 42 STA $4203 C0/07F7: EA NOP C0/07F8: EA NOP C0/07F9: EA NOP C0/07FA: AD 17 42 LDA $4217 C0/07FD: 38 SEC C0/07FE: E5 1A SBC $1A C0/0800: 60 RTS ; [ Cosine ] ; A = $1A * cos($1B) naritaGraphic::cos: C0/0801: A5 1A LDA $1A C0/0803: 8D 02 42 STA $4202 C0/0806: 4A LSR C0/0807: 85 1A STA $1A C0/0809: A5 1B LDA $1B C0/080B: 18 CLC C0/080C: 69 40 ADC #$40 C0/080E: AA TAX C0/080F: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table C0/0813: 18 CLC C0/0814: 69 80 ADC #$80 C0/0816: 8D 03 42 STA $4203 C0/0819: EA NOP C0/081A: EA NOP C0/081B: EA NOP C0/081C: AD 17 42 LDA $4217 C0/081F: 38 SEC C0/0820: E5 1A SBC $1A C0/0822: 60 RTS ; [ Update Pyramid ] naritaGraphic::calc_pyramid_window: C0/0823: AD 81 07 LDA $0781 C0/0826: D0 01 BNE $0829 C0/0828: 60 RTS C0/0829: AC 7F 07 LDY $077F C0/082C: B9 6A 08 LDA $086A,Y C0/082F: 38 SEC C0/0830: E5 5C SBC $5C C0/0832: 18 CLC C0/0833: 69 10 ADC #$10 C0/0835: 8D 7D 07 STA $077D C0/0838: B9 6D 08 LDA $086D,Y C0/083B: 38 SEC C0/083C: E5 60 SBC $60 C0/083E: 8D 7E 07 STA $077E C0/0841: C2 21 REP #$21 C0/0843: AD 90 07 LDA $0790 C0/0846: 18 CLC C0/0847: 69 40 00 ADC #$0040 C0/084A: 8D 90 07 STA $0790 C0/084D: 7B TDC C0/084E: E2 20 SEP #$20 C0/0850: AD 90 07 LDA $0790 C0/0853: 29 C0 AND #$C0 C0/0855: 85 1B STA $1B C0/0857: AD 91 07 LDA $0791 C0/085A: 0A ASL C0/085B: 18 CLC C0/085C: 65 1B ADC $1B C0/085E: 85 1B STA $1B C0/0860: 64 1A STZ $1A C0/0862: 20 E2 07 JSR $07E2 C0/0865: 18 CLC C0/0866: 6D 7E 07 ADC $077E C0/0869: 38 SEC C0/086A: E9 30 SBC #$30 C0/086C: 8D 5D 07 STA $075D C0/086F: 64 1A STZ $1A C0/0871: 20 01 08 JSR $0801 C0/0874: 18 CLC C0/0875: 6D 7D 07 ADC $077D C0/0878: 8D 5C 07 STA $075C C0/087B: AD 90 07 LDA $0790 C0/087E: 29 C0 AND #$C0 C0/0880: 85 1B STA $1B C0/0882: AD 91 07 LDA $0791 C0/0885: 0A ASL C0/0886: 18 CLC C0/0887: 65 1B ADC $1B C0/0889: 38 SEC C0/088A: E9 20 SBC #$20 C0/088C: 85 1B STA $1B C0/088E: A9 20 LDA #$20 C0/0890: 85 1A STA $1A C0/0892: 20 E2 07 JSR $07E2 C0/0895: 18 CLC C0/0896: 6D 7E 07 ADC $077E C0/0899: 8D 5F 07 STA $075F C0/089C: A9 40 LDA #$40 C0/089E: 85 1A STA $1A C0/08A0: 20 01 08 JSR $0801 C0/08A3: 18 CLC C0/08A4: 6D 7D 07 ADC $077D C0/08A7: 8D 5E 07 STA $075E C0/08AA: AD 90 07 LDA $0790 C0/08AD: 29 C0 AND #$C0 C0/08AF: 85 1B STA $1B C0/08B1: AD 91 07 LDA $0791 C0/08B4: 0A ASL C0/08B5: 18 CLC C0/08B6: 65 1B ADC $1B C0/08B8: 18 CLC C0/08B9: 69 20 ADC #$20 C0/08BB: 85 1B STA $1B C0/08BD: A9 20 LDA #$20 C0/08BF: 85 1A STA $1A C0/08C1: 20 E2 07 JSR $07E2 C0/08C4: 18 CLC C0/08C5: 6D 7E 07 ADC $077E C0/08C8: 8D 61 07 STA $0761 C0/08CB: A9 40 LDA #$40 C0/08CD: 85 1A STA $1A C0/08CF: 20 01 08 JSR $0801 C0/08D2: 18 CLC C0/08D3: 6D 7D 07 ADC $077D C0/08D6: 8D 60 07 STA $0760 naritaGraphic::calc_triangle_window: C0/08D9: EE 66 05 INC $0566 C0/08DC: AD 66 05 LDA $0566 C0/08DF: 4A LSR C0/08E0: B0 08 BCS $08EA C0/08E2: A2 B3 8C LDX #$8CB3 C0/08E5: 8E 81 21 STX $2181 C0/08E8: 80 06 BRA $08F0 C0/08EA: A2 53 8E LDX #$8E53 C0/08ED: 8E 81 21 STX $2181 C0/08F0: A9 7E LDA #$7E C0/08F2: 8D 83 21 STA $2183 C0/08F5: AD 5D 07 LDA $075D C0/08F8: CD 5F 07 CMP $075F C0/08FB: 90 0C BCC $0909 C0/08FD: AE 5C 07 LDX $075C C0/0900: AC 5E 07 LDY $075E C0/0903: 8E 5E 07 STX $075E C0/0906: 8C 5C 07 STY $075C C0/0909: AD 5F 07 LDA $075F C0/090C: CD 61 07 CMP $0761 C0/090F: 90 0C BCC $091D C0/0911: AE 5E 07 LDX $075E C0/0914: AC 60 07 LDY $0760 C0/0917: 8E 60 07 STX $0760 C0/091A: 8C 5E 07 STY $075E C0/091D: AD 5D 07 LDA $075D C0/0920: CD 5F 07 CMP $075F C0/0923: 90 0C BCC $0931 C0/0925: AE 5C 07 LDX $075C C0/0928: AC 5E 07 LDY $075E C0/092B: 8E 5E 07 STX $075E C0/092E: 8C 5C 07 STY $075C C0/0931: AD 5D 07 LDA $075D C0/0934: CD 5F 07 CMP $075F C0/0937: D0 17 BNE $0950 C0/0939: AD 5C 07 LDA $075C C0/093C: CD 5E 07 CMP $075E C0/093F: 90 0C BCC $094D C0/0941: AE 5C 07 LDX $075C C0/0944: AC 5E 07 LDY $075E C0/0947: 8E 5E 07 STX $075E C0/094A: 8C 5C 07 STY $075C C0/094D: 4C 24 0A JMP $0A24 C0/0950: AD 5E 07 LDA $075E C0/0953: CD 60 07 CMP $0760 C0/0956: 90 0C BCC $0964 C0/0958: AE 5E 07 LDX $075E C0/095B: AC 60 07 LDY $0760 C0/095E: 8E 60 07 STX $0760 C0/0961: 8C 5E 07 STY $075E C0/0964: AD 5F 07 LDA $075F C0/0967: CD 61 07 CMP $0761 C0/096A: D0 03 BNE $096F C0/096C: 4C 78 0A JMP $0A78 C0/096F: AD 5D 07 LDA $075D C0/0972: 85 2C STA $2C C0/0974: AD 5F 07 LDA $075F C0/0977: 38 SEC C0/0978: ED 5D 07 SBC $075D C0/097B: 85 28 STA $28 C0/097D: AD 5E 07 LDA $075E C0/0980: 85 26 STA $26 C0/0982: AD 5C 07 LDA $075C C0/0985: 85 27 STA $27 C0/0987: 20 7F 0B JSR $0B7F C0/098A: 85 1A STA $1A C0/098C: 84 2A STY $2A C0/098E: AD 61 07 LDA $0761 C0/0991: 38 SEC C0/0992: ED 5D 07 SBC $075D C0/0995: 85 28 STA $28 C0/0997: AD 60 07 LDA $0760 C0/099A: 85 26 STA $26 C0/099C: AD 5C 07 LDA $075C C0/099F: 85 27 STA $27 C0/09A1: 20 7F 0B JSR $0B7F C0/09A4: 84 2D STY $2D C0/09A6: C5 1A CMP $1A C0/09A8: D0 1A BNE $09C4 C0/09AA: A4 2A LDY $2A C0/09AC: C4 2D CPY $2D C0/09AE: 90 14 BCC $09C4 C0/09B0: AE 5E 07 LDX $075E C0/09B3: AC 60 07 LDY $0760 C0/09B6: 8E 60 07 STX $0760 C0/09B9: 8C 5E 07 STY $075E C0/09BC: A6 2A LDX $2A C0/09BE: A4 2D LDY $2D C0/09C0: 86 2D STX $2D C0/09C2: 84 2A STY $2A C0/09C4: AD 61 07 LDA $0761 C0/09C7: 38 SEC C0/09C8: ED 5F 07 SBC $075F C0/09CB: 90 2A BCC $09F7 C0/09CD: 85 28 STA $28 C0/09CF: AD 60 07 LDA $0760 C0/09D2: 85 26 STA $26 C0/09D4: 38 SEC C0/09D5: AD 5E 07 LDA $075E C0/09D8: 85 27 STA $27 C0/09DA: 20 7F 0B JSR $0B7F C0/09DD: 84 30 STY $30 C0/09DF: AD 5F 07 LDA $075F C0/09E2: 85 32 STA $32 C0/09E4: AD 61 07 LDA $0761 C0/09E7: 85 2F STA $2F C0/09E9: AD 5C 07 LDA $075C C0/09EC: C2 20 REP #$20 C0/09EE: EB XBA C0/09EF: AA TAX C0/09F0: A8 TAY C0/09F1: 7B TDC C0/09F2: E2 20 SEP #$20 C0/09F4: 4C C2 0A JMP $0AC2 C0/09F7: 49 FF EOR #$FF C0/09F9: 1A INC C0/09FA: 85 28 STA $28 C0/09FC: AD 5E 07 LDA $075E C0/09FF: 85 26 STA $26 C0/0A01: 38 SEC C0/0A02: AD 60 07 LDA $0760 C0/0A05: 85 27 STA $27 C0/0A07: 20 7F 0B JSR $0B7F C0/0A0A: 84 30 STY $30 C0/0A0C: AD 61 07 LDA $0761 C0/0A0F: 85 32 STA $32 C0/0A11: AD 5F 07 LDA $075F C0/0A14: 85 2F STA $2F C0/0A16: AD 5C 07 LDA $075C C0/0A19: C2 20 REP #$20 C0/0A1B: EB XBA C0/0A1C: AA TAX C0/0A1D: A8 TAY C0/0A1E: 7B TDC C0/0A1F: E2 20 SEP #$20 C0/0A21: 4C 18 0B JMP $0B18 C0/0A24: AD 61 07 LDA $0761 C0/0A27: 38 SEC C0/0A28: ED 5D 07 SBC $075D C0/0A2B: 85 28 STA $28 C0/0A2D: AD 60 07 LDA $0760 C0/0A30: 85 26 STA $26 C0/0A32: AD 5C 07 LDA $075C C0/0A35: 85 27 STA $27 C0/0A37: 20 7F 0B JSR $0B7F C0/0A3A: 84 2A STY $2A C0/0A3C: AD 61 07 LDA $0761 C0/0A3F: 38 SEC C0/0A40: ED 5F 07 SBC $075F C0/0A43: 85 28 STA $28 C0/0A45: AD 60 07 LDA $0760 C0/0A48: 85 26 STA $26 C0/0A4A: AD 5E 07 LDA $075E C0/0A4D: 85 27 STA $27 C0/0A4F: 20 7F 0B JSR $0B7F C0/0A52: 84 2D STY $2D C0/0A54: AD 5D 07 LDA $075D C0/0A57: 85 2C STA $2C C0/0A59: AD 61 07 LDA $0761 C0/0A5C: 85 32 STA $32 C0/0A5E: 85 2F STA $2F C0/0A60: C2 20 REP #$20 C0/0A62: AD 5C 07 LDA $075C C0/0A65: 29 FF 00 AND #$00FF C0/0A68: EB XBA C0/0A69: AA TAX C0/0A6A: AD 5E 07 LDA $075E C0/0A6D: 29 FF 00 AND #$00FF C0/0A70: EB XBA C0/0A71: A8 TAY C0/0A72: 7B TDC C0/0A73: E2 20 SEP #$20 C0/0A75: 4C C2 0A JMP $0AC2 C0/0A78: AD 5F 07 LDA $075F C0/0A7B: 38 SEC C0/0A7C: ED 5D 07 SBC $075D C0/0A7F: 85 28 STA $28 C0/0A81: AD 5E 07 LDA $075E C0/0A84: 85 26 STA $26 C0/0A86: AD 5C 07 LDA $075C C0/0A89: 85 27 STA $27 C0/0A8B: 20 7F 0B JSR $0B7F C0/0A8E: 84 2A STY $2A C0/0A90: AD 61 07 LDA $0761 C0/0A93: 38 SEC C0/0A94: ED 5D 07 SBC $075D C0/0A97: 85 28 STA $28 C0/0A99: AD 60 07 LDA $0760 C0/0A9C: 85 26 STA $26 C0/0A9E: AD 5C 07 LDA $075C C0/0AA1: 85 27 STA $27 C0/0AA3: 20 7F 0B JSR $0B7F C0/0AA6: 84 2D STY $2D C0/0AA8: AD 5D 07 LDA $075D C0/0AAB: 85 2C STA $2C C0/0AAD: AD 61 07 LDA $0761 C0/0AB0: 85 2F STA $2F C0/0AB2: 85 32 STA $32 C0/0AB4: AD 5C 07 LDA $075C C0/0AB7: C2 20 REP #$20 C0/0AB9: EB XBA C0/0ABA: AA TAX C0/0ABB: A8 TAY C0/0ABC: 7B TDC C0/0ABD: E2 20 SEP #$20 C0/0ABF: 4C C2 0A JMP $0AC2 C0/0AC2: A5 2C LDA $2C C0/0AC4: 20 6E 0B JSR $0B6E C0/0AC7: A5 32 LDA $32 C0/0AC9: 38 SEC C0/0ACA: E5 2C SBC $2C C0/0ACC: F0 1D BEQ $0AEB C0/0ACE: 85 22 STA $22 C0/0AD0: 64 23 STZ $23 C0/0AD2: C2 21 REP #$21 C0/0AD4: 8A TXA C0/0AD5: 18 CLC C0/0AD6: 65 2A ADC $2A C0/0AD8: AA TAX C0/0AD9: 8D 7F 21 STA $217F C0/0ADC: 98 TYA C0/0ADD: 18 CLC C0/0ADE: 65 2D ADC $2D C0/0AE0: A8 TAY C0/0AE1: 8D 7F 21 STA $217F C0/0AE4: C6 22 DEC $22 C0/0AE6: D0 EC BNE $0AD4 C0/0AE8: 7B TDC C0/0AE9: E2 20 SEP #$20 C0/0AEB: A5 2F LDA $2F C0/0AED: 38 SEC C0/0AEE: E5 32 SBC $32 C0/0AF0: F0 1D BEQ $0B0F C0/0AF2: 85 22 STA $22 C0/0AF4: 64 23 STZ $23 C0/0AF6: C2 21 REP #$21 C0/0AF8: 8A TXA C0/0AF9: 18 CLC C0/0AFA: 65 30 ADC $30 C0/0AFC: AA TAX C0/0AFD: 8D 7F 21 STA $217F C0/0B00: 98 TYA C0/0B01: 18 CLC C0/0B02: 65 2D ADC $2D C0/0B04: A8 TAY C0/0B05: 8D 7F 21 STA $217F C0/0B08: C6 22 DEC $22 C0/0B0A: D0 EC BNE $0AF8 C0/0B0C: 7B TDC C0/0B0D: E2 20 SEP #$20 C0/0B0F: A9 D0 LDA #$D0 C0/0B11: 38 SEC C0/0B12: E5 2F SBC $2F C0/0B14: 20 6E 0B JSR $0B6E C0/0B17: 60 RTS C0/0B18: A5 2C LDA $2C C0/0B1A: 20 6E 0B JSR $0B6E C0/0B1D: A5 32 LDA $32 C0/0B1F: 38 SEC C0/0B20: E5 2C SBC $2C C0/0B22: F0 1D BEQ $0B41 C0/0B24: 85 22 STA $22 C0/0B26: 64 23 STZ $23 C0/0B28: C2 21 REP #$21 C0/0B2A: 8A TXA C0/0B2B: 18 CLC C0/0B2C: 65 2A ADC $2A C0/0B2E: AA TAX C0/0B2F: 8D 7F 21 STA $217F C0/0B32: 98 TYA C0/0B33: 18 CLC C0/0B34: 65 2D ADC $2D C0/0B36: A8 TAY C0/0B37: 8D 7F 21 STA $217F C0/0B3A: C6 22 DEC $22 C0/0B3C: D0 EC BNE $0B2A C0/0B3E: 7B TDC C0/0B3F: E2 20 SEP #$20 C0/0B41: A5 2F LDA $2F C0/0B43: 38 SEC C0/0B44: E5 32 SBC $32 C0/0B46: F0 1D BEQ $0B65 C0/0B48: 85 22 STA $22 C0/0B4A: 64 23 STZ $23 C0/0B4C: C2 21 REP #$21 C0/0B4E: 8A TXA C0/0B4F: 18 CLC C0/0B50: 65 2A ADC $2A C0/0B52: AA TAX C0/0B53: 8D 7F 21 STA $217F C0/0B56: 98 TYA C0/0B57: 18 CLC C0/0B58: 65 30 ADC $30 C0/0B5A: A8 TAY C0/0B5B: 8D 7F 21 STA $217F C0/0B5E: C6 22 DEC $22 C0/0B60: D0 EC BNE $0B4E C0/0B62: 7B TDC C0/0B63: E2 20 SEP #$20 C0/0B65: A9 D0 LDA #$D0 C0/0B67: 38 SEC C0/0B68: E5 2F SBC $2F C0/0B6A: 20 6E 0B JSR $0B6E C0/0B6D: 60 RTS ; [ Set Window 2 HDMA Lines to Fully Closed ] ; X = number of lines to set naritaGraphic::null_window_pos: C0/0B6E: DA PHX C0/0B6F: AA TAX C0/0B70: F0 0B BEQ $0B7D C0/0B72: A9 FF LDA #$FF ; left side if window = $FF C0/0B74: 8D 80 21 STA $2180 C0/0B77: 9C 80 21 STZ $2180 ; right side if window = $00 C0/0B7A: CA DEX ; left > right, so the window is empty C0/0B7B: D0 F7 BNE $0B74 C0/0B7D: FA PLX C0/0B7E: 60 RTS ; [ ] naritaGraphic::calc_line_a: C0/0B7F: A5 26 LDA $26 C0/0B81: 38 SEC C0/0B82: E5 27 SBC $27 C0/0B84: 90 15 BCC $0B9B C0/0B86: EB XBA C0/0B87: A8 TAY C0/0B88: 8C 04 42 STY $4204 C0/0B8B: A5 28 LDA $28 C0/0B8D: 8D 06 42 STA $4206 C0/0B90: 7B TDC C0/0B91: EA NOP C0/0B92: EA NOP C0/0B93: EA NOP C0/0B94: EA NOP C0/0B95: EA NOP C0/0B96: EA NOP C0/0B97: AC 14 42 LDY $4214 C0/0B9A: 60 RTS C0/0B9B: 49 FF EOR #$FF C0/0B9D: 1A INC C0/0B9E: EB XBA C0/0B9F: A8 TAY C0/0BA0: 8C 04 42 STY $4204 C0/0BA3: A5 28 LDA $28 C0/0BA5: 8D 06 42 STA $4206 C0/0BA8: 7B TDC C0/0BA9: EA NOP C0/0BAA: EA NOP C0/0BAB: EA NOP C0/0BAC: EA NOP C0/0BAD: EA NOP C0/0BAE: C2 20 REP #$20 C0/0BB0: AD 14 42 LDA $4214 C0/0BB3: 45 02 EOR $02 C0/0BB5: 1A INC C0/0BB6: A8 TAY C0/0BB7: 7B TDC C0/0BB8: E2 20 SEP #$20 C0/0BBA: A9 01 LDA #$01 C0/0BBC: 60 RTS ; [ Update Spotlights ] naritaGraphic::calc_line_window: C0/0BBD: AD 21 05 LDA $0521 C0/0BC0: 29 20 AND #$20 C0/0BC2: D0 01 BNE $0BC5 ; return if spotlights are not enabled C0/0BC4: 60 RTS C0/0BC5: EE 66 05 INC $0566 C0/0BC8: AD 66 05 LDA $0566 C0/0BCB: 4A LSR C0/0BCC: B0 08 BCS $0BD6 C0/0BCE: A2 B3 8C LDX #$8CB3 C0/0BD1: 8E 81 21 STX $2181 C0/0BD4: 80 06 BRA $0BDC C0/0BD6: A2 53 8E LDX #$8E53 C0/0BD9: 8E 81 21 STX $2181 C0/0BDC: A9 7E LDA #$7E C0/0BDE: 8D 83 21 STA $2183 C0/0BE1: 64 26 STZ $26 C0/0BE3: AD 90 07 LDA $0790 C0/0BE6: 4A LSR C0/0BE7: B0 2D BCS $0C16 C0/0BE9: C2 20 REP #$20 C0/0BEB: AD 83 07 LDA $0783 C0/0BEE: 18 CLC C0/0BEF: 69 32 00 ADC #$0032 C0/0BF2: 8D 83 07 STA $0783 C0/0BF5: 7B TDC C0/0BF6: E2 20 SEP #$20 C0/0BF8: AD 84 07 LDA $0784 C0/0BFB: AA TAX C0/0BFC: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table C0/0C00: 18 CLC C0/0C01: 69 80 ADC #$80 C0/0C03: 4A LSR C0/0C04: 85 27 STA $27 C0/0C06: C2 20 REP #$20 C0/0C08: EE 90 07 INC $0790 C0/0C0B: AD 90 07 LDA $0790 C0/0C0E: 4A LSR C0/0C0F: 29 FF 00 AND #$00FF C0/0C12: E2 20 SEP #$20 C0/0C14: 80 35 BRA $0C4B C0/0C16: C2 20 REP #$20 C0/0C18: AD 85 07 LDA $0785 C0/0C1B: 18 CLC C0/0C1C: 69 1E 00 ADC #$001E C0/0C1F: 8D 85 07 STA $0785 C0/0C22: 7B TDC C0/0C23: E2 20 SEP #$20 C0/0C25: AD 86 07 LDA $0786 C0/0C28: 18 CLC C0/0C29: 69 40 ADC #$40 C0/0C2B: AA TAX C0/0C2C: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table C0/0C30: 18 CLC C0/0C31: 69 80 ADC #$80 C0/0C33: 4A LSR C0/0C34: 18 CLC C0/0C35: 69 70 ADC #$70 C0/0C37: 85 27 STA $27 C0/0C39: C2 20 REP #$20 C0/0C3B: EE 90 07 INC $0790 C0/0C3E: AD 90 07 LDA $0790 C0/0C41: 4A LSR C0/0C42: 18 CLC C0/0C43: 69 40 00 ADC #$0040 C0/0C46: 29 FF 00 AND #$00FF C0/0C49: E2 20 SEP #$20 C0/0C4B: AA TAX C0/0C4C: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table C0/0C50: 30 14 BMI $0C66 C0/0C52: C2 20 REP #$20 C0/0C54: 0A ASL C0/0C55: 38 SEC C0/0C56: E9 18 00 SBC #$0018 C0/0C59: 85 20 STA $20 C0/0C5B: 18 CLC C0/0C5C: 69 30 00 ADC #$0030 C0/0C5F: 85 24 STA $24 C0/0C61: 7B TDC C0/0C62: E2 20 SEP #$20 C0/0C64: 80 1B BRA $0C81 C0/0C66: C2 20 REP #$20 C0/0C68: 45 02 EOR $02 C0/0C6A: 1A INC C0/0C6B: 0A ASL C0/0C6C: 45 02 EOR $02 C0/0C6E: 1A INC C0/0C6F: 09 00 FE ORA #$FE00 C0/0C72: 38 SEC C0/0C73: E9 18 00 SBC #$0018 C0/0C76: 85 20 STA $20 C0/0C78: 18 CLC C0/0C79: 69 30 00 ADC #$0030 C0/0C7C: 85 24 STA $24 C0/0C7E: 7B TDC C0/0C7F: E2 20 SEP #$20 C0/0C81: C2 21 REP #$21 C0/0C83: A5 26 LDA $26 C0/0C85: AA TAX C0/0C86: 69 00 0C ADC #$0C00 C0/0C89: A8 TAY C0/0C8A: 7B TDC C0/0C8B: E2 20 SEP #$20 C0/0C8D: A5 21 LDA $21 C0/0C8F: 30 02 BMI $0C93 C0/0C91: 80 08 BRA $0C9B C0/0C93: A5 25 LDA $25 C0/0C95: 30 02 BMI $0C99 C0/0C97: 80 3C BRA $0CD5 C0/0C99: 80 7C BRA $0D17 calc_line_sub2: C0/0C9B: A9 68 LDA #$68 C0/0C9D: 85 22 STA $22 C0/0C9F: 64 23 STZ $23 C0/0CA1: C2 21 REP #$21 C0/0CA3: 8A TXA C0/0CA4: 65 20 ADC $20 C0/0CA6: AA TAX C0/0CA7: B0 1A BCS $0CC3 C0/0CA9: 8D 7F 21 STA $217F C0/0CAC: 98 TYA C0/0CAD: 65 24 ADC $24 C0/0CAF: A8 TAY C0/0CB0: B0 19 BCS $0CCB C0/0CB2: 8D 7F 21 STA $217F C0/0CB5: 8E 7F 21 STX $217F C0/0CB8: 8C 7F 21 STY $217F C0/0CBB: C6 22 DEC $22 C0/0CBD: D0 E4 BNE $0CA3 C0/0CBF: 7B TDC C0/0CC0: E2 20 SEP #$20 C0/0CC2: 60 RTS C0/0CC3: A5 02 LDA $02 C0/0CC5: AA TAX C0/0CC6: 64 20 STZ $20 C0/0CC8: 18 CLC C0/0CC9: 80 DE BRA $0CA9 C0/0CCB: A5 02 LDA $02 C0/0CCD: A8 TAY C0/0CCE: 64 24 STZ $24 C0/0CD0: 64 25 STZ $25 C0/0CD2: 18 CLC C0/0CD3: 80 DD BRA $0CB2 C0/0CD5: A9 68 LDA #$68 C0/0CD7: 85 22 STA $22 C0/0CD9: 64 23 STZ $23 C0/0CDB: C2 20 REP #$20 C0/0CDD: A5 20 LDA $20 C0/0CDF: 45 02 EOR $02 C0/0CE1: 1A INC C0/0CE2: 85 20 STA $20 C0/0CE4: 8A TXA C0/0CE5: 38 SEC C0/0CE6: E5 20 SBC $20 C0/0CE8: AA TAX C0/0CE9: 90 1B BCC $0D06 C0/0CEB: 8D 7F 21 STA $217F C0/0CEE: 98 TYA C0/0CEF: 18 CLC C0/0CF0: 65 24 ADC $24 C0/0CF2: A8 TAY C0/0CF3: B0 18 BCS $0D0D C0/0CF5: 8D 7F 21 STA $217F C0/0CF8: 8E 7F 21 STX $217F C0/0CFB: 8C 7F 21 STY $217F C0/0CFE: C6 22 DEC $22 C0/0D00: D0 E2 BNE $0CE4 C0/0D02: 7B TDC C0/0D03: E2 20 SEP #$20 C0/0D05: 60 RTS C0/0D06: A6 00 LDX $00 C0/0D08: 86 20 STX $20 C0/0D0A: 7B TDC C0/0D0B: 80 DE BRA $0CEB C0/0D0D: A5 02 LDA $02 C0/0D0F: A8 TAY C0/0D10: 64 24 STZ $24 C0/0D12: 64 25 STZ $25 C0/0D14: 18 CLC C0/0D15: 80 DE BRA $0CF5 C0/0D17: A9 68 LDA #$68 C0/0D19: 85 22 STA $22 C0/0D1B: 64 23 STZ $23 C0/0D1D: C2 20 REP #$20 C0/0D1F: A5 20 LDA $20 C0/0D21: 45 02 EOR $02 C0/0D23: 1A INC C0/0D24: 85 20 STA $20 C0/0D26: A5 24 LDA $24 C0/0D28: 45 02 EOR $02 C0/0D2A: 1A INC C0/0D2B: 85 24 STA $24 C0/0D2D: 8A TXA C0/0D2E: 38 SEC C0/0D2F: E5 20 SBC $20 C0/0D31: AA TAX C0/0D32: 90 1B BCC $0D4F C0/0D34: 8D 7F 21 STA $217F C0/0D37: 98 TYA C0/0D38: 38 SEC C0/0D39: E5 24 SBC $24 C0/0D3B: A8 TAY C0/0D3C: 90 18 BCC $0D56 C0/0D3E: 8D 7F 21 STA $217F C0/0D41: 8E 7F 21 STX $217F C0/0D44: 8C 7F 21 STY $217F C0/0D47: C6 22 DEC $22 C0/0D49: D0 E2 BNE $0D2D C0/0D4B: 7B TDC C0/0D4C: E2 20 SEP #$20 C0/0D4E: 60 RTS C0/0D4F: A6 00 LDX $00 C0/0D51: 86 20 STX $20 C0/0D53: 7B TDC C0/0D54: 80 DE BRA $0D34 C0/0D56: A4 00 LDY $00 C0/0D58: 84 24 STY $24 C0/0D5A: 7B TDC C0/0D5B: 80 E1 BRA $0D3E C0/0D5D: A9 7E LDA #$7E C0/0D5F: 48 PHA C0/0D60: AB PLB C0/0D61: C2 20 REP #$20 C0/0D63: A4 00 LDY $00 C0/0D65: BB TYX C0/0D66: B9 08 7D LDA $7D08,Y C0/0D69: C9 53 87 CMP #$8753 C0/0D6C: D0 07 BNE $0D75 C0/0D6E: BF 8D 0D C0 LDA $C00D8D,X C0/0D72: 99 08 7D STA $7D08,Y C0/0D75: 8A TXA C0/0D76: 18 CLC C0/0D77: 69 02 00 ADC #$0002 C0/0D7A: 29 07 00 AND #$0007 C0/0D7D: AA TAX C0/0D7E: C8 INY C0/0D7F: C8 INY C0/0D80: C8 INY C0/0D81: C0 5A 00 CPY #$005A C0/0D84: D0 E0 BNE $0D66 C0/0D86: 7B TDC C0/0D87: E2 20 SEP #$20 C0/0D89: 7B TDC C0/0D8A: 48 PHA C0/0D8B: AB PLB C0/0D8C: 60 RTS C0/0D8D: .DW $8763, $8773, $8783, $8793 ; [ ] effect_color: C0/0D95: A9 20 LDA #$20 C0/0D97: 8D 52 07 STA $0752 C0/0D9A: A9 40 LDA #$40 C0/0D9C: 8D 53 07 STA $0753 C0/0D9F: A9 80 LDA #$80 C0/0DA1: 8D 02 42 STA $4202 ; multiplicand C0/0DA4: A2 63 87 LDX #$8763 C0/0DA7: 8E 81 21 STX $2181 C0/0DAA: A9 7E LDA #$7E C0/0DAC: 8D 83 21 STA $2183 C0/0DAF: AD 46 00 LDA $0046 ; frame counter C0/0DB2: 29 1F AND #$1F C0/0DB4: AA TAX C0/0DB5: 86 1E STX $1E C0/0DB7: AD 46 00 LDA $0046 ; frame counter C0/0DBA: 0A ASL C0/0DBB: 29 1F AND #$1F C0/0DBD: AA TAX C0/0DBE: 86 20 STX $20 C0/0DC0: A0 20 00 LDY #$0020 C0/0DC3: A6 1E LDX $1E C0/0DC5: BF F7 0D C0 LDA $C00DF7,X C0/0DC9: 8D 03 42 STA $4203 ; multiplier C0/0DCC: 8A TXA C0/0DCD: 1A INC C0/0DCE: 29 1F AND #$1F C0/0DD0: 85 1E STA $1E C0/0DD2: AD 17 42 LDA $4217 C0/0DD5: 0D 52 07 ORA $0752 C0/0DD8: 8D 80 21 STA $2180 C0/0DDB: A6 20 LDX $20 C0/0DDD: BF 17 0E C0 LDA $C00E17,X C0/0DE1: 8D 03 42 STA $4203 ; multiplier C0/0DE4: 8A TXA C0/0DE5: 1A INC C0/0DE6: 29 1F AND #$1F C0/0DE8: 85 20 STA $20 C0/0DEA: AD 17 42 LDA $4217 C0/0DED: 0D 53 07 ORA $0753 C0/0DF0: 8D 80 21 STA $2180 C0/0DF3: 88 DEY C0/0DF4: D0 CD BNE $0DC3 C0/0DF6: 60 RTS effect_color_tbl: C0/0DF7: .DB $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F C0/0E07: .DB $1F, $1E, $1D, $1C, $1B, $1A, $19, $18, $17, $16, $15, $14, $13, $12, $11, $10 C0/0E17: .DB $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F C0/0E27: .DB $0F, $0E, $0D, $0C, $0B, $0A, $09, $08, $07, $06, $05, $04, $03, $02, $01, $00 ; [ Update Mosaic HDMA Data ] mosaic: C0/0E37: AD F0 11 LDA $11F0 C0/0E3A: F0 25 BEQ $0E61 C0/0E3C: 1A INC C0/0E3D: C2 20 REP #$20 C0/0E3F: 0A ASL C0/0E40: 0A ASL C0/0E41: 0A ASL C0/0E42: 0A ASL C0/0E43: 85 10 STA $10 C0/0E45: AD 96 07 LDA $0796 C0/0E48: 38 SEC C0/0E49: E5 10 SBC $10 C0/0E4B: 8D 96 07 STA $0796 C0/0E4E: 10 06 BPL $0E56 C0/0E50: 9C 96 07 STZ $0796 C0/0E53: 9C F0 11 STZ $11F0 C0/0E56: 7B TDC C0/0E57: E2 20 SEP #$20 C0/0E59: AD 97 07 LDA $0797 C0/0E5C: AA TAX C0/0E5D: BF 82 0E C0 LDA $C00E82,X C0/0E61: 8F 33 82 7E STA $7E8233 C0/0E65: 8F 37 82 7E STA $7E8237 C0/0E69: 8F 3B 82 7E STA $7E823B C0/0E6D: 8F 3F 82 7E STA $7E823F C0/0E71: 8F 43 82 7E STA $7E8243 C0/0E75: 8F 47 82 7E STA $7E8247 C0/0E79: 8F 4B 82 7E STA $7E824B C0/0E7D: 8F 4F 82 7E STA $7E824F C0/0E81: 60 RTS mosaic_table: C0/0E82: .DB $0F, $1F, $2F, $3F, $4F, $5F, $6F, $7F, $8F, $9F, $AF, $BF, $CF, $DF, $EF C0/0E91: .DB $FF, $EF, $DF, $CF, $BF, $AF, $9F, $8F, $7F, $6F, $5F, $4F, $3F, $2F, $1F ; [ Update Shake Screen ] shake: C0/0EA0: A5 46 LDA $46 C0/0EA2: 4A LSR C0/0EA3: 90 23 BCC $0EC8 C0/0EA5: AD 4B 07 LDA $074B C0/0EA8: 8D 02 42 STA $4202 C0/0EAB: A9 C0 LDA #$C0 C0/0EAD: 8D 03 42 STA $4203 C0/0EB0: EA NOP C0/0EB1: EA NOP C0/0EB2: EA NOP C0/0EB3: AD 17 42 LDA $4217 C0/0EB6: 8D 4B 07 STA $074B C0/0EB9: A6 00 LDX $00 C0/0EBB: 8E 4C 07 STX $074C C0/0EBE: 8E 4E 07 STX $074E C0/0EC1: 8E 50 07 STX $0750 C0/0EC4: 8E 7F 00 STX $007F C0/0EC7: 60 RTS C0/0EC8: AD 4A 07 LDA $074A C0/0ECB: 29 03 AND #$03 C0/0ECD: 85 22 STA $22 C0/0ECF: F0 36 BEQ $0F07 C0/0ED1: AD 4A 07 LDA $074A C0/0ED4: 29 0C AND #$0C C0/0ED6: 4A LSR C0/0ED7: 4A LSR C0/0ED8: F0 0C BEQ $0EE6 C0/0EDA: AA TAX C0/0EDB: 20 2E 06 JSR $062E C0/0EDE: 3F 45 0F C0 AND $C00F45,X C0/0EE2: D0 23 BNE $0F07 C0/0EE4: 80 14 BRA $0EFA C0/0EE6: AD 4A 07 LDA $074A C0/0EE9: 29 FC AND #$FC C0/0EEB: 8D 4A 07 STA $074A C0/0EEE: A5 22 LDA $22 C0/0EF0: AA TAX C0/0EF1: BF 45 0F C0 LDA $C00F45,X C0/0EF5: 8D 4B 07 STA $074B C0/0EF8: 80 0D BRA $0F07 C0/0EFA: A5 22 LDA $22 C0/0EFC: AA TAX C0/0EFD: 20 2E 06 JSR $062E C0/0F00: 3F 45 0F C0 AND $C00F45,X C0/0F04: 8D 4B 07 STA $074B C0/0F07: 9C 4D 07 STZ $074D C0/0F0A: 9C 4F 07 STZ $074F C0/0F0D: 9C 51 07 STZ $0751 C0/0F10: 9C 80 00 STZ $0080 C0/0F13: AD 4A 07 LDA $074A C0/0F16: 29 10 AND #$10 C0/0F18: F0 06 BEQ $0F20 C0/0F1A: AD 4B 07 LDA $074B C0/0F1D: 8D 4C 07 STA $074C C0/0F20: AD 4A 07 LDA $074A C0/0F23: 29 20 AND #$20 C0/0F25: F0 06 BEQ $0F2D C0/0F27: AD 4B 07 LDA $074B C0/0F2A: 8D 4E 07 STA $074E C0/0F2D: AD 4A 07 LDA $074A C0/0F30: 29 40 AND #$40 C0/0F32: F0 06 BEQ $0F3A C0/0F34: AD 4B 07 LDA $074B C0/0F37: 8D 50 07 STA $0750 C0/0F3A: AD 4A 07 LDA $074A C0/0F3D: 10 05 BPL $0F44 C0/0F3F: AD 4B 07 LDA $074B C0/0F42: 85 7F STA $7F C0/0F44: 60 RTS ; screen shake data shake_and_tbl: C0/0F45: .DB $00, $03, $06, $0C shake_rnd_tbl: C0/0F49: .DB $00, $07, $0F, $1F ; [ Begin Fade In ] shake: C0/0F4D: A9 10 LDA #$10 C0/0F4F: 85 4A STA $4A C0/0F51: A9 10 LDA #$10 C0/0F53: 85 4C STA $4C C0/0F55: 60 RTS ; [ Begin Fade Out ] init_fade_out: C0/0F56: A9 90 LDA #$90 C0/0F58: 85 4A STA $4A C0/0F5A: A9 F0 LDA #$F0 C0/0F5C: 85 4C STA $4C C0/0F5E: 60 RTS ; [ Update Screen Brightness ] C0/0F5F: A5 4A LDA $4A C0/0F61: 30 13 BMI $0F76 C0/0F63: A5 4C LDA $4C C0/0F65: 29 F0 AND #$F0 C0/0F67: C9 F0 CMP #$F0 C0/0F69: F0 1E BEQ $0F89 C0/0F6B: A5 4A LDA $4A C0/0F6D: 29 1F AND #$1F C0/0F6F: 18 CLC C0/0F70: 65 4C ADC $4C C0/0F72: 85 4C STA $4C C0/0F74: 80 15 BRA $0F8B C0/0F76: A5 4C LDA $4C C0/0F78: F0 0F BEQ $0F89 C0/0F7A: A5 4A LDA $4A C0/0F7C: 29 1F AND #$1F C0/0F7E: 85 10 STA $10 C0/0F80: A5 4C LDA $4C C0/0F82: 38 SEC C0/0F83: E5 10 SBC $10 C0/0F85: 85 4C STA $4C C0/0F87: 80 02 BRA $0F8B C0/0F89: 64 4A STZ $4A C0/0F8B: A5 4C LDA $4C C0/0F8D: 4A LSR C0/0F8E: 4A LSR C0/0F8F: 4A LSR C0/0F90: 4A LSR C0/0F91: 8D 00 21 STA $2100 C0/0F94: 60 RTS ; [ Unused DMA ] ; +$2A = source address ; +$3B = VRAM destination address ; +$39 = size C0/0F95: 9C 15 21 STZ $2115 C0/0F98: 9C 0B 42 STZ $420B C0/0F9B: A9 41 LDA #$41 C0/0F9D: 8D 00 43 STA $4300 C0/0FA0: A9 18 LDA #$18 C0/0FA2: 8D 01 43 STA $4301 C0/0FA5: A5 2C LDA $2C C0/0FA7: 8D 04 43 STA $4304 C0/0FAA: A6 3B LDX $3B C0/0FAC: 8E 16 21 STX $2116 C0/0FAF: A6 2A LDX $2A C0/0FB1: 8E 02 43 STX $4302 C0/0FB4: A6 39 LDX $39 C0/0FB6: 8E 05 43 STX $4305 C0/0FB9: A9 01 LDA #$01 C0/0FBB: 8D 0B 42 STA $420B C0/0FBE: 60 RTS ; [ Copy Sprite Data to VRAM ] C0/0FBF: 9C 02 21 STZ $2102 C0/0FC2: 9C 0B 42 STZ $420B C0/0FC5: A9 40 LDA #$40 C0/0FC7: 8D 00 43 STA $4300 C0/0FCA: A9 04 LDA #$04 C0/0FCC: 8D 01 43 STA $4301 C0/0FCF: A2 00 03 LDX #$0300 C0/0FD2: 8E 02 43 STX $4302 C0/0FD5: A9 00 LDA #$00 C0/0FD7: 8D 04 43 STA $4304 C0/0FDA: 8D 07 43 STA $4307 C0/0FDD: A2 20 02 LDX #$0220 C0/0FE0: 8E 05 43 STX $4305 C0/0FE3: A9 01 LDA #$01 C0/0FE5: 8D 0B 42 STA $420B C0/0FE8: 60 RTS ; [ Init Sprite Data ] oam_buff_clear: C0/0FE9: A2 00 02 LDX #$0200 C0/0FEC: A9 F0 LDA #$F0 C0/0FEE: 9D FD 02 STA $02FD,X C0/0FF1: CA DEX C0/0FF2: CA DEX C0/0FF3: CA DEX C0/0FF4: CA DEX C0/0FF5: D0 F7 BNE $0FEE C0/0FF7: A2 20 00 LDX #$0020 C0/0FFA: 9E FF 04 STZ $04FF,X C0/0FFD: CA DEX C0/0FFE: D0 FA BNE $0FFA C0/1000: 60 RTS ; [ Copy Color Palettes to VRAM ] C0/1001: 9C 21 21 STZ $2121 C0/1004: 9C 0B 42 STZ $420B C0/1007: A9 42 LDA #$42 C0/1009: 8D 00 43 STA $4300 C0/100C: A9 22 LDA #$22 C0/100E: 8D 01 43 STA $4301 C0/1011: A2 00 74 LDX #$7400 C0/1014: 8E 02 43 STX $4302 C0/1017: A9 7E LDA #$7E C0/1019: 8D 04 43 STA $4304 C0/101C: 8D 07 43 STA $4307 C0/101F: A2 00 02 LDX #$0200 C0/1022: 8E 05 43 STX $4305 C0/1025: A9 01 LDA #$01 C0/1027: 8D 0B 42 STA $420B C0/102A: 60 RTS ; [ Begin Fixed Color Addition ] init_c_add: C0/102B: 48 PHA C0/102C: A5 4E LDA $4E ; save color add/sub settings C0/102E: 85 4F STA $4F C0/1030: A5 52 LDA $52 ; save subscreen designation C0/1032: 85 53 STA $53 C0/1034: 64 52 STZ $52 ; disable all layers in subscreen C0/1036: A9 07 LDA #$07 C0/1038: 85 4E STA $4E ; set color add/sub settings C0/103A: 68 PLA C0/103B: 80 10 BRA $104D ; [ Begin Fixed Color Subtraction ] init_c_sub: C0/103D: 48 PHA C0/103E: A5 4E LDA $4E C0/1040: 85 4F STA $4F C0/1042: A5 52 LDA $52 C0/1044: 85 53 STA $53 C0/1046: 64 52 STZ $52 C0/1048: A9 87 LDA #$87 C0/104A: 85 4E STA $4E C0/104C: 68 PLA init_c_addsub: C0/104D: 20 23 11 JSR $1123 C0/1050: 64 4D STZ $4D C0/1052: 60 RTS ; [ Update Fixed Color Add/Sub HDMA Data ] color_addsub: C0/1053: A5 4B LDA $4B C0/1055: 10 1B BPL $1072 ; branch if fading out C0/1057: 29 7F AND #$7F C0/1059: 18 CLC C0/105A: 65 4D ADC $4D ; add speed to current intensity C0/105C: 85 4D STA $4D C0/105E: A5 54 LDA $54 ; branch if not past target intensity C0/1060: 29 1F AND #$1F C0/1062: 0A ASL C0/1063: 0A ASL C0/1064: 0A ASL C0/1065: C5 4D CMP $4D C0/1067: B0 1E BCS $1087 C0/1069: A5 4D LDA $4D ; clear lower 3 bits (target intensity reached) C0/106B: 29 F8 AND #$F8 C0/106D: 85 4D STA $4D C0/106F: 4C 87 10 JMP $1087 C0/1072: A5 4D LDA $4D C0/1074: F0 07 BEQ $107D C0/1076: 38 SEC C0/1077: E5 4B SBC $4B ; subtract speed from current intensity C0/1079: 85 4D STA $4D C0/107B: 80 0A BRA $1087 C0/107D: A5 4F LDA $4F C0/107F: 85 4E STA $4E C0/1081: A5 53 LDA $53 C0/1083: 85 52 STA $52 C0/1085: 64 4B STZ $4B C0/1087: A5 4D LDA $4D ; color intensity C0/1089: 4A LSR C0/108A: 4A LSR C0/108B: 4A LSR C0/108C: 85 0E STA $0E C0/108E: F0 0A BEQ $109A ; branch if intensity is zero C0/1090: A5 54 LDA $54 C0/1092: 29 E0 AND #$E0 ; color components C0/1094: F0 04 BEQ $109A ; use white if there are no colors C0/1096: 05 0E ORA $0E C0/1098: 80 02 BRA $109C C0/109A: A9 E0 LDA #$E0 ; set to white C0/109C: 8F 53 87 7E STA $7E8753 ; set fixed color HDMA data ($2132) C0/10A0: 8F 55 87 7E STA $7E8755 C0/10A4: 8F 57 87 7E STA $7E8757 C0/10A8: 8F 59 87 7E STA $7E8759 C0/10AC: 8F 5B 87 7E STA $7E875B C0/10B0: 8F 5D 87 7E STA $7E875D C0/10B4: 8F 5F 87 7E STA $7E875F C0/10B8: 8F 61 87 7E STA $7E8761 C0/10BC: A5 4E LDA $4E ; fixed color add/sub settings ($2131) C0/10BE: 8F 64 8C 7E STA $7E8C64 C0/10C2: 8F 66 8C 7E STA $7E8C66 C0/10C6: 8F 68 8C 7E STA $7E8C68 C0/10CA: 8F 6A 8C 7E STA $7E8C6A C0/10CE: 8F 6C 8C 7E STA $7E8C6C C0/10D2: 8F 6E 8C 7E STA $7E8C6E C0/10D6: 8F 70 8C 7E STA $7E8C70 C0/10DA: 8F 72 8C 7E STA $7E8C72 C0/10DE: A5 50 LDA $50 ; color addition select ($2130) C0/10E0: 8F 63 8C 7E STA $7E8C63 C0/10E4: 8F 65 8C 7E STA $7E8C65 C0/10E8: 8F 67 8C 7E STA $7E8C67 C0/10EC: 8F 69 8C 7E STA $7E8C69 C0/10F0: 8F 6B 8C 7E STA $7E8C6B C0/10F4: 8F 6D 8C 7E STA $7E8C6D C0/10F8: 8F 6F 8C 7E STA $7E8C6F C0/10FC: 8F 71 8C 7E STA $7E8C71 C0/1100: A5 52 LDA $52 ; subscreen designation ($212D) C0/1102: 8F 64 81 7E STA $7E8164 C0/1106: 8F 66 81 7E STA $7E8166 C0/110A: 8F 68 81 7E STA $7E8168 C0/110E: 8F 6A 81 7E STA $7E816A C0/1112: 8F 6C 81 7E STA $7E816C C0/1116: 8F 6E 81 7E STA $7E816E C0/111A: 8F 70 81 7E STA $7E8170 C0/111E: 8F 72 81 7E STA $7E8172 C0/1122: 60 RTS ; [ Init Fixed Color Add/Sub ] ; A = bgrssiii ; b: affect blue ; g: affect green ; r: affect red ; s: speed ; i: intensity calc_fade_color: C0/1123: 48 PHA C0/1124: 48 PHA C0/1125: 29 E0 AND #$E0 ; colors affected C0/1127: 85 1A STA $1A C0/1129: 68 PLA C0/112A: 29 07 AND #$07 ; intensity C0/112C: 0A ASL C0/112D: 0A ASL C0/112E: 18 CLC C0/112F: 69 03 ADC #$03 C0/1131: 05 1A ORA $1A C0/1133: 85 54 STA $54 C0/1135: 68 PLA C0/1136: 29 18 AND #$18 ; speed C0/1138: 4A LSR C0/1139: 4A LSR C0/113A: 4A LSR C0/113B: AA TAX C0/113C: BF 43 11 C0 LDA $C01143,X C0/1140: 85 4B STA $4B C0/1142: 60 RTS ; fixed color speeds C0/1143: .DB $81, $82, $84, $84 ; [ BG Color Math $01: Increment Colors ] ; $1A = red color target ; $1B = blue color target ; +$20 = green color target bg_col_add: C0/1147: A9 7E LDA #$7E C0/1149: 48 PHA C0/114A: AB PLB C0/114B: E2 10 SEP #$10 C0/114D: A4 DF LDY $DF ; first color C0/114F: B9 00 74 LDA $7400,Y ; red component (active color palette) C0/1152: 29 1F AND #$1F C0/1154: C5 1A CMP $1A ; branch if greater than red constant C0/1156: B0 01 BCS $1159 C0/1158: 1A INC ; add 1 C0/1159: 85 1E STA $1E C0/115B: B9 01 74 LDA $7401,Y ; blue component C0/115E: 29 7C AND #$7C C0/1160: C5 1B CMP $1B ; branch if greater than blue constant C0/1162: B0 02 BCS $1166 C0/1164: 69 04 ADC #$04 ; add 1 C0/1166: 85 1F STA $1F C0/1168: C2 20 REP #$20 C0/116A: B9 00 74 LDA $7400,Y ; green component C0/116D: 29 E0 03 AND #$03E0 C0/1170: C5 20 CMP $20 C0/1172: B0 03 BCS $1177 C0/1174: 69 20 00 ADC #$0020 C0/1177: 05 1E ORA $1E ; +$1E = modified color C0/1179: 99 00 74 STA $7400,Y C0/117C: 7B TDC ; next color C0/117D: E2 20 SEP #$20 C0/117F: C8 INY C0/1180: C8 INY C0/1181: C4 E0 CPY $E0 ; end of color range C0/1183: D0 CA BNE $114F C0/1185: C2 10 REP #$10 C0/1187: 7B TDC C0/1188: 48 PHA C0/1189: AB PLB C0/118A: 60 RTS ; [ BG Color Math $03: Decrement Colors (restore to normal) ] bg_col_return_add: C0/118B: A9 7E LDA #$7E C0/118D: 48 PHA C0/118E: AB PLB C0/118F: E2 10 SEP #$10 C0/1191: A4 DF LDY $DF C0/1193: B9 00 72 LDA $7200,Y ; unmodified red component C0/1196: 29 1F AND #$1F C0/1198: 85 1A STA $1A C0/119A: B9 00 74 LDA $7400,Y ; active red component C0/119D: 29 1F AND #$1F C0/119F: C5 1A CMP $1A C0/11A1: F0 01 BEQ $11A4 C0/11A3: 3A DEC C0/11A4: 85 1E STA $1E C0/11A6: B9 01 72 LDA $7201,Y ; unmodified blue component C0/11A9: 29 7C AND #$7C C0/11AB: 85 1B STA $1B C0/11AD: B9 01 74 LDA $7401,Y ; active blue component C0/11B0: 29 7C AND #$7C C0/11B2: C5 1B CMP $1B C0/11B4: F0 02 BEQ $11B8 C0/11B6: E9 04 SBC #$04 C0/11B8: 85 1F STA $1F C0/11BA: C2 20 REP #$20 C0/11BC: B9 00 72 LDA $7200,Y ; unmodified green component C0/11BF: 29 E0 03 AND #$03E0 C0/11C2: 85 20 STA $20 C0/11C4: B9 00 74 LDA $7400,Y ; active green component C0/11C7: 29 E0 03 AND #$03E0 C0/11CA: C5 20 CMP $20 C0/11CC: F0 03 BEQ $11D1 C0/11CE: E9 20 00 SBC #$0020 C0/11D1: 05 1E ORA $1E C0/11D3: 99 00 74 STA $7400,Y C0/11D6: 7B TDC C0/11D7: E2 20 SEP #$20 C0/11D9: C8 INY C0/11DA: C8 INY C0/11DB: C4 E0 CPY $E0 C0/11DD: D0 B4 BNE $1193 C0/11DF: C2 10 REP #$10 C0/11E1: 7B TDC C0/11E2: 48 PHA C0/11E3: AB PLB C0/11E4: 60 RTS ; [ BG Color Math $04: Decrement Colors ] ; $1A = red color target ; $1B = blue color target ; +$20 = green color target bg_col_sub: C0/11E5: A9 7E LDA #$7E C0/11E7: 48 PHA C0/11E8: AB PLB C0/11E9: E2 10 SEP #$10 C0/11EB: A4 DF LDY $DF C0/11ED: B9 00 74 LDA $7400,Y C0/11F0: 29 1F AND #$1F C0/11F2: C5 1A CMP $1A C0/11F4: F0 03 BEQ $11F9 C0/11F6: 90 01 BCC $11F9 C0/11F8: 3A DEC C0/11F9: 85 1E STA $1E C0/11FB: B9 01 74 LDA $7401,Y C0/11FE: 29 7C AND #$7C C0/1200: C5 1B CMP $1B C0/1202: F0 04 BEQ $1208 C0/1204: 90 02 BCC $1208 C0/1206: E9 04 SBC #$04 C0/1208: 85 1F STA $1F C0/120A: C2 20 REP #$20 C0/120C: B9 00 74 LDA $7400,Y C0/120F: 29 E0 03 AND #$03E0 C0/1212: C5 20 CMP $20 C0/1214: F0 05 BEQ $121B C0/1216: 90 03 BCC $121B C0/1218: E9 20 00 SBC #$0020 C0/121B: 05 1E ORA $1E C0/121D: 99 00 74 STA $7400,Y C0/1220: 7B TDC C0/1221: E2 20 SEP #$20 C0/1223: C8 INY C0/1224: C8 INY C0/1225: C4 E0 CPY $E0 C0/1227: D0 C4 BNE $11ED C0/1229: C2 10 REP #$10 C0/122B: 7B TDC C0/122C: 48 PHA C0/122D: AB PLB C0/122E: 60 RTS ; [ BG Color Math $06: Increment Colors (restore to normal) ] bg_col_return_sub: C0/122F: A9 7E LDA #$7E C0/1231: 48 PHA C0/1232: AB PLB C0/1233: E2 10 SEP #$10 C0/1235: A4 DF LDY $DF C0/1237: B9 00 72 LDA $7200,Y C0/123A: 29 1F AND #$1F C0/123C: 85 1A STA $1A C0/123E: B9 00 74 LDA $7400,Y C0/1241: 29 1F AND #$1F C0/1243: C5 1A CMP $1A C0/1245: F0 01 BEQ $1248 C0/1247: 1A INC C0/1248: 85 1E STA $1E C0/124A: B9 01 72 LDA $7201,Y C0/124D: 29 7C AND #$7C C0/124F: 85 1B STA $1B C0/1251: B9 01 74 LDA $7401,Y C0/1254: 29 7C AND #$7C C0/1256: C5 1B CMP $1B C0/1258: F0 02 BEQ $125C C0/125A: 69 04 ADC #$04 C0/125C: 85 1F STA $1F C0/125E: C2 20 REP #$20 C0/1260: B9 00 72 LDA $7200,Y C0/1263: 29 E0 03 AND #$03E0 C0/1266: 85 20 STA $20 C0/1268: B9 00 74 LDA $7400,Y C0/126B: 29 E0 03 AND #$03E0 C0/126E: C5 20 CMP $20 C0/1270: F0 03 BEQ $1275 C0/1272: 69 20 00 ADC #$0020 C0/1275: 05 1E ORA $1E C0/1277: 99 00 74 STA $7400,Y C0/127A: 7B TDC C0/127B: E2 20 SEP #$20 C0/127D: C8 INY C0/127E: C8 INY C0/127F: C4 E0 CPY $E0 C0/1281: D0 B4 BNE $1237 C0/1283: C2 10 REP #$10 C0/1285: 7B TDC C0/1286: 48 PHA C0/1287: AB PLB C0/1288: 60 RTS ; [ BG Color Math $02: Add Color ] bg_col_add_flash: C0/1289: A9 1F LDA #$1F C0/128B: 85 1A STA $1A C0/128D: A9 7C LDA #$7C C0/128F: 85 1B STA $1B C0/1291: A2 E0 03 LDX #$03E0 C0/1294: 86 20 STX $20 C0/1296: A9 7E LDA #$7E C0/1298: 48 PHA C0/1299: AB PLB C0/129A: E2 10 SEP #$10 C0/129C: A4 DF LDY $DF C0/129E: B9 00 74 LDA $7400,Y C0/12A1: 29 1F AND #$1F C0/12A3: 18 CLC C0/12A4: 65 1A ADC $1A C0/12A6: C9 1F CMP #$1F C0/12A8: 90 02 BCC $12AC C0/12AA: A9 1F LDA #$1F C0/12AC: 85 1E STA $1E C0/12AE: B9 01 74 LDA $7401,Y C0/12B1: 29 7C AND #$7C C0/12B3: 18 CLC C0/12B4: 65 1B ADC $1B C0/12B6: C9 7C CMP #$7C C0/12B8: 90 02 BCC $12BC C0/12BA: A9 7C LDA #$7C C0/12BC: 85 1F STA $1F C0/12BE: C2 20 REP #$20 C0/12C0: B9 00 74 LDA $7400,Y C0/12C3: 29 E0 03 AND #$03E0 C0/12C6: 18 CLC C0/12C7: 65 20 ADC $20 C0/12C9: C9 E0 03 CMP #$03E0 C0/12CC: 90 03 BCC $12D1 C0/12CE: A9 E0 03 LDA #$03E0 C0/12D1: 05 1E ORA $1E C0/12D3: 99 00 74 STA $7400,Y C0/12D6: 7B TDC C0/12D7: E2 20 SEP #$20 C0/12D9: C8 INY C0/12DA: C8 INY C0/12DB: C4 E0 CPY $E0 C0/12DD: D0 BF BNE $129E C0/12DF: C2 10 REP #$10 C0/12E1: 7B TDC C0/12E2: 48 PHA C0/12E3: AB PLB C0/12E4: 60 RTS ; [ BG Color Math $05: Subtract Color ] bg_col_sub_flash: C0/12E5: A5 1A LDA $1A C0/12E7: 18 CLC C0/12E8: 69 04 ADC #$04 C0/12EA: 85 1A STA $1A C0/12EC: A5 1B LDA $1B C0/12EE: 18 CLC C0/12EF: 69 10 ADC #$10 C0/12F1: 85 1B STA $1B C0/12F3: C2 20 REP #$20 C0/12F5: A5 20 LDA $20 C0/12F7: 18 CLC C0/12F8: 69 80 00 ADC #$0080 C0/12FB: 85 20 STA $20 C0/12FD: 7B TDC C0/12FE: E2 20 SEP #$20 C0/1300: A9 7E LDA #$7E C0/1302: 48 PHA C0/1303: AB PLB C0/1304: E2 10 SEP #$10 C0/1306: A4 DF LDY $DF C0/1308: B9 00 74 LDA $7400,Y C0/130B: 29 1F AND #$1F C0/130D: 38 SEC C0/130E: E5 1A SBC $1A C0/1310: 10 01 BPL $1313 C0/1312: 7B TDC C0/1313: 85 1E STA $1E C0/1315: B9 01 74 LDA $7401,Y C0/1318: 29 7C AND #$7C C0/131A: 38 SEC C0/131B: E5 1B SBC $1B C0/131D: 10 01 BPL $1320 C0/131F: 7B TDC C0/1320: 85 1F STA $1F C0/1322: C2 20 REP #$20 C0/1324: B9 00 74 LDA $7400,Y C0/1327: 29 E0 03 AND #$03E0 C0/132A: 38 SEC C0/132B: E5 20 SBC $20 C0/132D: 10 01 BPL $1330 C0/132F: 7B TDC C0/1330: 05 1E ORA $1E C0/1332: 99 00 74 STA $7400,Y C0/1335: 7B TDC C0/1336: E2 20 SEP #$20 C0/1338: C8 INY C0/1339: C8 INY C0/133A: C4 E0 CPY $E0 C0/133C: D0 CA BNE $1308 C0/133E: C2 10 REP #$10 C0/1340: 7B TDC C0/1341: 48 PHA C0/1342: AB PLB C0/1343: 60 RTS ; [ BG Color Math $00/$07: Restore All Colors to Normal ] bg_col_return: C0/1344: A9 7E LDA #$7E C0/1346: 48 PHA C0/1347: AB PLB C0/1348: C2 20 REP #$20 C0/134A: E2 10 SEP #$10 C0/134C: A6 00 LDX $00 C0/134E: BD 00 72 LDA $7200,X ; copy unmodified palette to active palette C0/1351: 9D 00 74 STA $7400,X C0/1354: BD 02 72 LDA $7202,X C0/1357: 9D 02 74 STA $7402,X C0/135A: BD 04 72 LDA $7204,X C0/135D: 9D 04 74 STA $7404,X C0/1360: BD 06 72 LDA $7206,X C0/1363: 9D 06 74 STA $7406,X C0/1366: BD 08 72 LDA $7208,X C0/1369: 9D 08 74 STA $7408,X C0/136C: BD 0A 72 LDA $720A,X C0/136F: 9D 0A 74 STA $740A,X C0/1372: BD 0C 72 LDA $720C,X C0/1375: 9D 0C 74 STA $740C,X C0/1378: BD 0E 72 LDA $720E,X C0/137B: 9D 0E 74 STA $740E,X C0/137E: 8A TXA C0/137F: 18 CLC C0/1380: 69 10 00 ADC #$0010 C0/1383: AA TAX C0/1384: D0 C8 BNE $134E C0/1386: 7B TDC C0/1387: E2 20 SEP #$20 C0/1389: C2 10 REP #$10 C0/138B: 7B TDC C0/138C: 48 PHA C0/138D: AB PLB C0/138E: 60 RTS ; [ Object Color Math $01: Increment Colors ] ; $1A = ---rrrrr red color target ; $1B = -bbbbb-- blue color target ; +$20 = ------gg ggg----- green color target obj_col_add: C0/138F: A9 7E LDA #$7E C0/1391: 48 PHA C0/1392: AB PLB C0/1393: E2 10 SEP #$10 C0/1395: A4 DF LDY $DF C0/1397: B9 00 75 LDA $7500,Y C0/139A: 29 1F AND #$1F C0/139C: C5 1A CMP $1A C0/139E: B0 01 BCS $13A1 C0/13A0: 1A INC C0/13A1: 85 1E STA $1E C0/13A3: B9 01 75 LDA $7501,Y C0/13A6: 29 7C AND #$7C C0/13A8: C5 1B CMP $1B C0/13AA: B0 02 BCS $13AE C0/13AC: 69 04 ADC #$04 C0/13AE: 85 1F STA $1F C0/13B0: C2 20 REP #$20 C0/13B2: B9 00 75 LDA $7500,Y C0/13B5: 29 E0 03 AND #$03E0 C0/13B8: C5 20 CMP $20 C0/13BA: B0 03 BCS $13BF C0/13BC: 69 20 00 ADC #$0020 C0/13BF: 05 1E ORA $1E C0/13C1: 99 00 75 STA $7500,Y C0/13C4: 7B TDC C0/13C5: E2 20 SEP #$20 C0/13C7: C8 INY C0/13C8: C8 INY C0/13C9: C4 E0 CPY $E0 C0/13CB: D0 CA BNE $1397 C0/13CD: C2 10 REP #$10 C0/13CF: 7B TDC C0/13D0: 48 PHA C0/13D1: AB PLB C0/13D2: 60 RTS ; [ Object Color Math $03: Decrement Colors (back to normal) ] obj_col_return_add: C0/13D3: A9 7E LDA #$7E C0/13D5: 48 PHA C0/13D6: AB PLB C0/13D7: E2 10 SEP #$10 C0/13D9: A4 DF LDY $DF C0/13DB: B9 00 73 LDA $7300,Y C0/13DE: 29 1F AND #$1F C0/13E0: 85 1A STA $1A C0/13E2: B9 00 75 LDA $7500,Y C0/13E5: 29 1F AND #$1F C0/13E7: C5 1A CMP $1A C0/13E9: F0 01 BEQ $13EC C0/13EB: 3A DEC C0/13EC: 85 1E STA $1E C0/13EE: B9 01 73 LDA $7301,Y C0/13F1: 29 7C AND #$7C C0/13F3: 85 1B STA $1B C0/13F5: B9 01 75 LDA $7501,Y C0/13F8: 29 7C AND #$7C C0/13FA: C5 1B CMP $1B C0/13FC: F0 02 BEQ $1400 C0/13FE: E9 04 SBC #$04 C0/1400: 85 1F STA $1F C0/1402: C2 20 REP #$20 C0/1404: B9 00 73 LDA $7300,Y C0/1407: 29 E0 03 AND #$03E0 C0/140A: 85 20 STA $20 C0/140C: B9 00 75 LDA $7500,Y C0/140F: 29 E0 03 AND #$03E0 C0/1412: C5 20 CMP $20 C0/1414: F0 03 BEQ $1419 C0/1416: E9 20 00 SBC #$0020 C0/1419: 05 1E ORA $1E C0/141B: 99 00 75 STA $7500,Y C0/141E: 7B TDC C0/141F: E2 20 SEP #$20 C0/1421: C8 INY C0/1422: C8 INY C0/1423: C4 E0 CPY $E0 C0/1425: D0 B4 BNE $13DB C0/1427: C2 10 REP #$10 C0/1429: 7B TDC C0/142A: 48 PHA C0/142B: AB PLB C0/142C: 60 RTS ; [ Object Color Math $04: Decrement Colors ] ; $1A = red color target ; $1B = blue color target ; +$20 = green color target obj_col_sub: C0/142D: A9 7E LDA #$7E C0/142F: 48 PHA C0/1430: AB PLB C0/1431: E2 10 SEP #$10 C0/1433: A4 DF LDY $DF C0/1435: B9 00 75 LDA $7500,Y C0/1438: 29 1F AND #$1F C0/143A: C5 1A CMP $1A C0/143C: F0 03 BEQ $1441 C0/143E: 90 01 BCC $1441 C0/1440: 3A DEC C0/1441: 85 1E STA $1E C0/1443: B9 01 75 LDA $7501,Y C0/1446: 29 7C AND #$7C C0/1448: C5 1B CMP $1B C0/144A: F0 04 BEQ $1450 C0/144C: 90 02 BCC $1450 C0/144E: E9 04 SBC #$04 C0/1450: 85 1F STA $1F C0/1452: C2 20 REP #$20 C0/1454: B9 00 75 LDA $7500,Y C0/1457: 29 E0 03 AND #$03E0 C0/145A: C5 20 CMP $20 C0/145C: F0 05 BEQ $1463 C0/145E: 90 03 BCC $1463 C0/1460: E9 20 00 SBC #$0020 C0/1463: 05 1E ORA $1E C0/1465: 99 00 75 STA $7500,Y C0/1468: 7B TDC C0/1469: E2 20 SEP #$20 C0/146B: C8 INY C0/146C: C8 INY C0/146D: C4 E0 CPY $E0 C0/146F: D0 C4 BNE $1435 C0/1471: C2 10 REP #$10 C0/1473: 7B TDC C0/1474: 48 PHA C0/1475: AB PLB C0/1476: 60 RTS ; [ Object Color Math $06: Increment Colors (back to normal) ] obj_col_return_sub: C0/1477: A9 7E LDA #$7E C0/1479: 48 PHA C0/147A: AB PLB C0/147B: E2 10 SEP #$10 C0/147D: A4 DF LDY $DF C0/147F: B9 00 73 LDA $7300,Y C0/1482: 29 1F AND #$1F C0/1484: 85 1A STA $1A C0/1486: B9 00 75 LDA $7500,Y C0/1489: 29 1F AND #$1F C0/148B: C5 1A CMP $1A C0/148D: F0 01 BEQ $1490 C0/148F: 1A INC C0/1490: 85 1E STA $1E C0/1492: B9 01 73 LDA $7301,Y C0/1495: 29 7C AND #$7C C0/1497: 85 1B STA $1B C0/1499: B9 01 75 LDA $7501,Y C0/149C: 29 7C AND #$7C C0/149E: C5 1B CMP $1B C0/14A0: F0 02 BEQ $14A4 C0/14A2: 69 04 ADC #$04 C0/14A4: 85 1F STA $1F C0/14A6: C2 20 REP #$20 C0/14A8: B9 00 73 LDA $7300,Y C0/14AB: 29 E0 03 AND #$03E0 C0/14AE: 85 20 STA $20 C0/14B0: B9 00 75 LDA $7500,Y C0/14B3: 29 E0 03 AND #$03E0 C0/14B6: C5 20 CMP $20 C0/14B8: F0 03 BEQ $14BD C0/14BA: 69 20 00 ADC #$0020 C0/14BD: 05 1E ORA $1E C0/14BF: 99 00 75 STA $7500,Y C0/14C2: 7B TDC C0/14C3: E2 20 SEP #$20 C0/14C5: C8 INY C0/14C6: C8 INY C0/14C7: C4 E0 CPY $E0 C0/14C9: D0 B4 BNE $147F C0/14CB: C2 10 REP #$10 C0/14CD: 7B TDC C0/14CE: 48 PHA C0/14CF: AB PLB C0/14D0: 60 RTS ; [ Object Color Math $02: Add Colors (doesn't work) ] obj_col_add_flash: C0/14D1: A9 1F LDA #$1F C0/14D3: 85 1A STA $1A C0/14D5: A9 7C LDA #$7C C0/14D7: 85 1B STA $1B C0/14D9: A2 E0 03 LDX #$03E0 C0/14DC: 86 20 STX $20 C0/14DE: A9 7E LDA #$7E C0/14E0: 48 PHA C0/14E1: AB PLB C0/14E2: E2 10 SEP #$10 C0/14E4: A4 DF LDY $DF C0/14E6: B9 00 75 LDA $7500,Y C0/14E9: 29 1F AND #$1F C0/14EB: 18 CLC C0/14EC: 65 1A ADC $1A C0/14EE: C9 1F CMP #$1F C0/14F0: 90 02 BCC $14F4 C0/14F2: A9 1F LDA #$1F C0/14F4: 85 1E STA $1E C0/14F6: B9 01 75 LDA $7501,Y C0/14F9: 29 7C AND #$7C C0/14FB: 18 CLC C0/14FC: 65 1B ADC $1B C0/14FE: C9 7C CMP #$7C C0/1500: 90 02 BCC $1504 C0/1502: A9 7C LDA #$7C C0/1504: 85 1F STA $1F C0/1506: C2 20 REP #$20 C0/1508: B9 00 75 LDA $7500,Y C0/150B: 29 E0 03 AND #$03E0 C0/150E: 18 CLC C0/150F: 65 20 ADC $20 C0/1511: C9 E0 03 CMP #$03E0 C0/1514: 90 03 BCC $1519 C0/1516: A9 E0 03 LDA #$03E0 C0/1519: 05 1E ORA $1E C0/151B: 99 00 75 STA $7500,Y C0/151E: 7B TDC C0/151F: E2 20 SEP #$20 C0/1521: C8 INY C0/1522: C8 INY C0/1523: C4 E0 CPY $E0 C0/1525: D0 BF BNE $14E6 C0/1527: C2 10 REP #$10 C0/1529: 7B TDC C0/152A: 48 PHA C0/152B: AB PLB C0/152C: 60 RTS ; [ Object Color Math $05: Subtract Colors ] obj_col_sub_flash: C0/152D: A5 1A LDA $1A C0/152F: 18 CLC C0/1530: 69 04 ADC #$04 C0/1532: 85 1A STA $1A C0/1534: A5 1B LDA $1B C0/1536: 18 CLC C0/1537: 69 10 ADC #$10 C0/1539: 85 1B STA $1B C0/153B: C2 20 REP #$20 C0/153D: A5 20 LDA $20 C0/153F: 18 CLC C0/1540: 69 80 00 ADC #$0080 C0/1543: 85 20 STA $20 C0/1545: 7B TDC C0/1546: E2 20 SEP #$20 C0/1548: A9 7E LDA #$7E C0/154A: 48 PHA C0/154B: AB PLB C0/154C: E2 10 SEP #$10 C0/154E: A4 DF LDY $DF C0/1550: B9 00 75 LDA $7500,Y C0/1553: 29 1F AND #$1F C0/1555: 38 SEC C0/1556: E5 1A SBC $1A C0/1558: 10 01 BPL $155B C0/155A: 7B TDC C0/155B: 85 1E STA $1E C0/155D: B9 01 75 LDA $7501,Y C0/1560: 29 7C AND #$7C C0/1562: 38 SEC C0/1563: E5 1B SBC $1B C0/1565: 10 01 BPL $1568 C0/1567: 7B TDC C0/1568: 85 1F STA $1F C0/156A: C2 20 REP #$20 C0/156C: B9 00 75 LDA $7500,Y C0/156F: 29 E0 03 AND #$03E0 C0/1572: 38 SEC C0/1573: E5 20 SBC $20 C0/1575: 10 01 BPL $1578 C0/1577: 7B TDC C0/1578: 05 1E ORA $1E C0/157A: 99 00 75 STA $7500,Y C0/157D: 7B TDC C0/157E: E2 20 SEP #$20 C0/1580: C8 INY C0/1581: C8 INY C0/1582: C4 E0 CPY $E0 C0/1584: D0 CA BNE $1550 C0/1586: C2 10 REP #$10 C0/1588: 7B TDC C0/1589: 48 PHA C0/158A: AB PLB C0/158B: 60 RTS ; [ Object Color Math $00/$07: Restore All Colors to Normal ] obj_col_return: C0/158C: A9 7E LDA #$7E C0/158E: 48 PHA C0/158F: AB PLB C0/1590: C2 20 REP #$20 C0/1592: E2 10 SEP #$10 C0/1594: A6 00 LDX $00 C0/1596: BD 00 73 LDA $7300,X C0/1599: 9D 00 75 STA $7500,X C0/159C: BD 02 73 LDA $7302,X C0/159F: 9D 02 75 STA $7502,X C0/15A2: BD 04 73 LDA $7304,X C0/15A5: 9D 04 75 STA $7504,X C0/15A8: BD 06 73 LDA $7306,X C0/15AB: 9D 06 75 STA $7506,X C0/15AE: BD 08 73 LDA $7308,X C0/15B1: 9D 08 75 STA $7508,X C0/15B4: BD 0A 73 LDA $730A,X C0/15B7: 9D 0A 75 STA $750A,X C0/15BA: BD 0C 73 LDA $730C,X C0/15BD: 9D 0C 75 STA $750C,X C0/15C0: BD 0E 73 LDA $730E,X C0/15C3: 9D 0E 75 STA $750E,X C0/15C6: 8A TXA C0/15C7: 18 CLC C0/15C8: 69 10 00 ADC #$0010 C0/15CB: AA TAX C0/15CC: D0 C8 BNE $1596 C0/15CE: 7B TDC C0/15CF: E2 20 SEP #$20 C0/15D1: C2 10 REP #$10 C0/15D3: 7B TDC C0/15D4: 48 PHA C0/15D5: AB PLB C0/15D6: 60 RTS ; [ Load Treasure Chest Map Data ] open_treasure_box: C0/15D7: C2 20 REP #$20 C0/15D9: A5 82 LDA $82 C0/15DB: 0A ASL C0/15DC: AA TAX C0/15DD: BF F6 82 ED LDA $ED82F6,X C0/15E1: 85 1E STA $1E C0/15E3: BF F4 82 ED LDA $ED82F4,X C0/15E7: AA TAX C0/15E8: 7B TDC C0/15E9: E2 20 SEP #$20 C0/15EB: E4 1E CPX $1E C0/15ED: F0 48 BEQ $1637 C0/15EF: C2 20 REP #$20 C0/15F1: BF 34 86 ED LDA $ED8634,X C0/15F5: 85 2A STA $2A C0/15F7: BF 35 86 ED LDA $ED8635,X C0/15FB: 85 2B STA $2B C0/15FD: DA PHX C0/15FE: BF 36 86 ED LDA $ED8636,X C0/1602: 29 FF 01 AND #$01FF C0/1605: 4A LSR C0/1606: 4A LSR C0/1607: 4A LSR C0/1608: A8 TAY C0/1609: BF 36 86 ED LDA $ED8636,X C0/160D: 29 07 00 AND #$0007 C0/1610: AA TAX C0/1611: 7B TDC C0/1612: E2 20 SEP #$20 C0/1614: B9 40 1E LDA $1E40,Y C0/1617: 3F FC BA C0 AND $C0BAFC,X C0/161B: F0 10 BEQ $162D C0/161D: A6 2A LDX $2A C0/161F: BF 00 00 7F LDA $7F0000,X C0/1623: C9 13 CMP #$13 C0/1625: D0 06 BNE $162D C0/1627: A9 12 LDA #$12 C0/1629: 9F 00 00 7F STA $7F0000,X C0/162D: FA PLX C0/162E: E8 INX C0/162F: E8 INX C0/1630: E8 INX C0/1631: E8 INX C0/1632: E8 INX C0/1633: E4 1E CPX $1E C0/1635: D0 B8 BNE $15EF C0/1637: 60 RTS ; [ Load BG2/BG3 Color Add/Sub Data ] init_addsub: C0/1638: AD 40 05 LDA $0540 ; bg2/bg3 add/sub mode C0/163B: 0A ASL C0/163C: 18 CLC C0/163D: 6D 40 05 ADC $0540 C0/1640: AA TAX C0/1641: BF 00 FE C0 LDA $C0FE00,X ; color math designation ($2131) C0/1645: 85 4F STA $4F C0/1647: A9 22 LDA #$22 ; addition select ($2130) C0/1649: 85 50 STA $50 C0/164B: A5 4B LDA $4B ; fixed color fade C0/164D: D0 04 BNE $1653 C0/164F: A5 4F LDA $4F C0/1651: 85 4E STA $4E C0/1653: BF 01 FE C0 LDA $C0FE01,X ; main screen designation ($212C) C0/1657: 09 01 ORA #$01 ; bg1 always on C0/1659: 85 51 STA $51 C0/165B: BF 02 FE C0 LDA $C0FE02,X ; sub screen designation ($212D) C0/165F: 85 53 STA $53 C0/1661: 8D 2D 21 STA $212D C0/1664: A5 4B LDA $4B C0/1666: D0 04 BNE $166C C0/1668: A5 53 LDA $53 C0/166A: 85 52 STA $52 C0/166C: 60 RTS ; [ Load BG2/BG3 Scrolling Data ] init_scroll: C0/166D: AD 36 05 LDA $0536 ; bg2/bg3 scroll mode C0/1670: 0A ASL C0/1671: 0A ASL C0/1672: 0A ASL C0/1673: AA TAX C0/1674: BF 40 FE C0 LDA $C0FE40,X ; bg2 horizontal scroll speed C0/1678: 30 0E BMI $1688 C0/167A: C2 20 REP #$20 C0/167C: 0A ASL C0/167D: 0A ASL C0/167E: 0A ASL C0/167F: 0A ASL C0/1680: 8D 4B 05 STA $054B C0/1683: 7B TDC C0/1684: E2 20 SEP #$20 C0/1686: 80 12 BRA $169A C0/1688: 45 02 EOR $02 C0/168A: 1A INC C0/168B: C2 20 REP #$20 C0/168D: 0A ASL C0/168E: 0A ASL C0/168F: 0A ASL C0/1690: 0A ASL C0/1691: 45 02 EOR $02 C0/1693: 1A INC C0/1694: 8D 4B 05 STA $054B C0/1697: 7B TDC C0/1698: E2 20 SEP #$20 C0/169A: BF 41 FE C0 LDA $C0FE41,X ; bg2 vertical scroll speed C0/169E: 30 0E BMI $16AE C0/16A0: C2 20 REP #$20 C0/16A2: 0A ASL C0/16A3: 0A ASL C0/16A4: 0A ASL C0/16A5: 0A ASL C0/16A6: 8D 4D 05 STA $054D C0/16A9: 7B TDC C0/16AA: E2 20 SEP #$20 C0/16AC: 80 12 BRA $16C0 C0/16AE: 45 02 EOR $02 C0/16B0: 1A INC C0/16B1: C2 20 REP #$20 C0/16B3: 0A ASL C0/16B4: 0A ASL C0/16B5: 0A ASL C0/16B6: 0A ASL C0/16B7: 45 02 EOR $02 C0/16B9: 1A INC C0/16BA: 8D 4D 05 STA $054D C0/16BD: 7B TDC C0/16BE: E2 20 SEP #$20 C0/16C0: BF 42 FE C0 LDA $C0FE42,X ; bg3 horizontal scroll speed C0/16C4: 30 0E BMI $16D4 C0/16C6: C2 20 REP #$20 C0/16C8: 0A ASL C0/16C9: 0A ASL C0/16CA: 0A ASL C0/16CB: 0A ASL C0/16CC: 8D 4F 05 STA $054F C0/16CF: 7B TDC C0/16D0: E2 20 SEP #$20 C0/16D2: 80 12 BRA $16E6 C0/16D4: 45 02 EOR $02 C0/16D6: 1A INC C0/16D7: C2 20 REP #$20 C0/16D9: 0A ASL C0/16DA: 0A ASL C0/16DB: 0A ASL C0/16DC: 0A ASL C0/16DD: 45 02 EOR $02 C0/16DF: 1A INC C0/16E0: 8D 4F 05 STA $054F C0/16E3: 7B TDC C0/16E4: E2 20 SEP #$20 C0/16E6: BF 43 FE C0 LDA $C0FE43,X ; bg3 vertical scroll speed C0/16EA: 30 0E BMI $16FA C0/16EC: C2 20 REP #$20 C0/16EE: 0A ASL C0/16EF: 0A ASL C0/16F0: 0A ASL C0/16F1: 0A ASL C0/16F2: 8D 51 05 STA $0551 C0/16F5: 7B TDC C0/16F6: E2 20 SEP #$20 C0/16F8: 80 12 BRA $170C C0/16FA: 45 02 EOR $02 C0/16FC: 1A INC C0/16FD: C2 20 REP #$20 C0/16FF: 0A ASL C0/1700: 0A ASL C0/1701: 0A ASL C0/1702: 0A ASL C0/1703: 45 02 EOR $02 C0/1705: 1A INC C0/1706: 8D 51 05 STA $0551 C0/1709: 7B TDC C0/170A: E2 20 SEP #$20 C0/170C: BF 44 FE C0 LDA $C0FE44,X ; bg2 horizontal scroll multiplier C0/1710: 8D 53 05 STA $0553 C0/1713: BF 45 FE C0 LDA $C0FE45,X ; bg2 vertical scroll multiplier C0/1717: 8D 54 05 STA $0554 C0/171A: BF 46 FE C0 LDA $C0FE46,X ; bg3 horizontal scroll multiplier C0/171E: 8D 55 05 STA $0555 C0/1721: BF 47 FE C0 LDA $C0FE47,X ; bg3 vertical scroll multiplier C0/1725: 8D 56 05 STA $0556 C0/1728: 60 RTS ; [ Init Map Size ] init_map: C0/1729: A6 00 LDX $00 C0/172B: 86 5B STX $5B ; clear scroll position C0/172D: 86 5D STX $5D C0/172F: 86 5F STX $5F C0/1731: 86 61 STX $61 C0/1733: 86 63 STX $63 C0/1735: 86 65 STX $65 C0/1737: 86 67 STX $67 C0/1739: 86 69 STX $69 C0/173B: 86 6B STX $6B C0/173D: 86 6D STX $6D C0/173F: 86 6F STX $6F C0/1741: 86 71 STX $71 C0/1743: 86 73 STX $73 ; clear movement scroll speed C0/1745: 86 75 STX $75 C0/1747: 86 77 STX $77 C0/1749: 86 79 STX $79 C0/174B: 86 7B STX $7B C0/174D: 86 7D STX $7D C0/174F: 8E 47 05 STX $0547 ; clear event scroll speed C0/1752: 8E 49 05 STX $0549 C0/1755: 8E 4B 05 STX $054B C0/1758: 8E 4D 05 STX $054D C0/175B: 8E 4F 05 STX $054F C0/175E: 8E 51 05 STX $0551 C0/1761: 9C 86 05 STZ $0586 ; disable scrolling redraw C0/1764: 9C 85 05 STZ $0585 C0/1767: 9C 88 05 STZ $0588 C0/176A: 9C 87 05 STZ $0587 C0/176D: 9C 8A 05 STZ $058A C0/1770: 9C 89 05 STZ $0589 C0/1773: 20 E7 17 JSR $17E7 ; update BG clip data C0/1776: 20 7F 17 JSR $177F ; calculate min/max scroll positions C0/1779: 60 RTS ; map size masks map_size_mask_tbl: C0/177A: .DB $0F, $1F, $3F, $7F, $FF ; [ Calculate Min/Max Scroll Positions ] set_move_rect: C0/177F: AE C0 1F LDX $1FC0 C0/1782: 8E 66 1F STX $1F66 C0/1785: AE 3E 05 LDX $053E C0/1788: D0 10 BNE $179A C0/178A: 9C 2C 06 STZ $062C C0/178D: 9C 2E 06 STZ $062E C0/1790: A9 FF LDA #$FF C0/1792: 8D 2D 06 STA $062D C0/1795: 8D 2F 06 STA $062F C0/1798: 80 1C BRA $17B6 C0/179A: A9 08 LDA #$08 C0/179C: 8D 2C 06 STA $062C C0/179F: AD 3E 05 LDA $053E C0/17A2: 38 SEC C0/17A3: E9 07 SBC #$07 C0/17A5: 8D 2D 06 STA $062D C0/17A8: A9 07 LDA #$07 C0/17AA: 8D 2E 06 STA $062E C0/17AD: AD 3F 05 LDA $053F C0/17B0: 38 SEC C0/17B1: E9 07 SBC #$07 C0/17B3: 8D 2F 06 STA $062F C0/17B6: AD 2C 06 LDA $062C C0/17B9: CD 66 1F CMP $1F66 C0/17BC: 90 05 BCC $17C3 C0/17BE: 8D 66 1F STA $1F66 C0/17C1: 80 0B BRA $17CE C0/17C3: AD 2D 06 LDA $062D C0/17C6: CD 66 1F CMP $1F66 C0/17C9: B0 03 BCS $17CE C0/17CB: 8D 66 1F STA $1F66 C0/17CE: AD 2E 06 LDA $062E C0/17D1: CD 67 1F CMP $1F67 C0/17D4: 90 05 BCC $17DB C0/17D6: 8D 67 1F STA $1F67 C0/17D9: 80 0B BRA $17E6 C0/17DB: AD 2F 06 LDA $062F C0/17DE: CD 67 1F CMP $1F67 C0/17E1: B0 03 BCS $17E6 C0/17E3: 8D 67 1F STA $1F67 C0/17E6: 60 RTS ; [ Update BG Clip Data ] set_map_size_mask: C0/17E7: AD 37 05 LDA $0537 C0/17EA: 29 03 AND #$03 C0/17EC: AA TAX C0/17ED: BF 7A 17 C0 LDA $C0177A,X C0/17F1: 85 89 STA $89 C0/17F3: AD 37 05 LDA $0537 C0/17F6: 4A LSR C0/17F7: 4A LSR C0/17F8: 29 03 AND #$03 C0/17FA: AA TAX C0/17FB: BF 7A 17 C0 LDA $C0177A,X C0/17FF: 85 88 STA $88 C0/1801: AD 37 05 LDA $0537 C0/1804: 4A LSR C0/1805: 4A LSR C0/1806: 4A LSR C0/1807: 4A LSR C0/1808: 29 03 AND #$03 C0/180A: AA TAX C0/180B: BF 7A 17 C0 LDA $C0177A,X C0/180F: 85 87 STA $87 C0/1811: AD 37 05 LDA $0537 C0/1814: 4A LSR C0/1815: 4A LSR C0/1816: 4A LSR C0/1817: 4A LSR C0/1818: 4A LSR C0/1819: 4A LSR C0/181A: AA TAX C0/181B: BF 7A 17 C0 LDA $C0177A,X C0/181F: 85 86 STA $86 C0/1821: AD 38 05 LDA $0538 C0/1824: 4A LSR C0/1825: 4A LSR C0/1826: 4A LSR C0/1827: 4A LSR C0/1828: 29 03 AND #$03 C0/182A: AA TAX C0/182B: BF 7A 17 C0 LDA $C0177A,X C0/182F: 85 8B STA $8B C0/1831: AD 38 05 LDA $0538 C0/1834: 4A LSR C0/1835: 4A LSR C0/1836: 4A LSR C0/1837: 4A LSR C0/1838: 4A LSR C0/1839: 4A LSR C0/183A: AA TAX C0/183B: BF 7A 17 C0 LDA $C0177A,X C0/183F: 85 8A STA $8A C0/1841: AD 38 05 LDA $0538 C0/1844: 29 01 AND #$01 C0/1846: 8D 91 05 STA $0591 C0/1849: AD 38 05 LDA $0538 C0/184C: 4A LSR C0/184D: 29 01 AND #$01 C0/184F: 8D 92 05 STA $0592 C0/1852: AD 38 05 LDA $0538 C0/1855: 4A LSR C0/1856: 29 01 AND #$01 C0/1858: 8D 93 05 STA $0593 C0/185B: 60 RTS ; [ Copy Map Data to VRAM ] write_map: C0/185C: AD 42 05 LDA $0542 C0/185F: 38 SEC C0/1860: E9 0F SBC #$0F C0/1862: 8D 42 05 STA $0542 C0/1865: AD 44 05 LDA $0544 C0/1868: 38 SEC C0/1869: E9 0F SBC #$0F C0/186B: 8D 44 05 STA $0544 C0/186E: AD 46 05 LDA $0546 C0/1871: 38 SEC C0/1872: E9 0F SBC #$0F C0/1874: 8D 46 05 STA $0546 C0/1877: A9 10 LDA #$10 C0/1879: 48 PHA C0/187A: 20 5D 21 JSR $215D C0/187D: 20 47 2A JSR $2A47 C0/1880: 20 D8 22 JSR $22D8 C0/1883: 20 CA 2A JSR $2ACA C0/1886: 20 57 24 JSR $2457 C0/1889: 20 4D 2B JSR $2B4D C0/188C: EE 42 05 INC $0542 C0/188F: EE 44 05 INC $0544 C0/1892: EE 46 05 INC $0546 C0/1895: 68 PLA C0/1896: 3A DEC C0/1897: D0 E0 BNE $1879 C0/1899: CE 42 05 DEC $0542 C0/189C: CE 44 05 DEC $0544 C0/189F: CE 46 05 DEC $0546 C0/18A2: 60 RTS ; [ Check Entrance Triggers ] check_map_jump: C0/18A3: A5 84 LDA $84 ; return if a map is loading C0/18A5: D0 3C BNE $18E3 C0/18A7: A5 59 LDA $59 ; return if menu is opening C0/18A9: D0 38 BNE $18E3 C0/18AB: A5 85 LDA $85 ; return if entrance triggers are disabled C0/18AD: D0 34 BNE $18E3 C0/18AF: A5 56 LDA $56 ; return if entering battle C0/18B1: D0 30 BNE $18E3 C0/18B3: AC 03 08 LDY $0803 ; return if between tiles C0/18B6: B9 6A 08 LDA $086A,Y C0/18B9: 29 0F AND #$0F C0/18BB: D0 26 BNE $18E3 C0/18BD: B9 6D 08 LDA $086D,Y C0/18C0: 29 0F AND #$0F C0/18C2: D0 1F BNE $18E3 C0/18C4: A6 E5 LDX $E5 ; return if an event is running C0/18C6: E0 00 00 CPX #$0000 C0/18C9: D0 18 BNE $18E3 C0/18CB: A5 E7 LDA $E7 C0/18CD: C9 CA CMP #$CA C0/18CF: D0 12 BNE $18E3 C0/18D1: A5 B8 LDA $B8 ; branch if on a bridge tile C0/18D3: 29 04 AND #$04 C0/18D5: F0 06 BEQ $18DD C0/18D7: A5 B2 LDA $B2 ; return if party is not on upper z-level C0/18D9: C9 01 CMP #$01 C0/18DB: D0 06 BNE $18E3 C0/18DD: 20 E4 18 JSR $18E4 ; check long entrance triggers C0/18E0: 20 77 1A JSR $1A77 ; check short entrance triggers C0/18E3: 60 RTS ; [ Check Long Entrance Triggers ] check_map_jump_s: C0/18E4: C2 20 REP #$20 C0/18E6: A5 82 LDA $82 C0/18E8: 0A ASL C0/18E9: AA TAX C0/18EA: BF 82 F4 ED LDA $EDF482,X C0/18EE: 85 1E STA $1E C0/18F0: BF 80 F4 ED LDA $EDF480,X C0/18F4: AA TAX C0/18F5: C5 1E CMP $1E C0/18F7: D0 03 BNE $18FC C0/18F9: 4C 26 1A JMP $1A26 C0/18FC: 7B TDC C0/18FD: E2 20 SEP #$20 C0/18FF: 64 26 STZ $26 C0/1901: 64 28 STZ $28 C0/1903: BF 82 F4 ED LDA $EDF482,X C0/1907: 30 22 BMI $192B C0/1909: 85 1A STA $1A C0/190B: BF 81 F4 ED LDA $EDF481,X C0/190F: C5 B0 CMP $B0 C0/1911: D0 3A BNE $194D C0/1913: A5 AF LDA $AF C0/1915: 38 SEC C0/1916: FF 80 F4 ED SBC $EDF480,X C0/191A: 90 31 BCC $194D C0/191C: 85 26 STA $26 C0/191E: BF 80 F4 ED LDA $EDF480,X C0/1922: 18 CLC C0/1923: 65 1A ADC $1A C0/1925: C5 AF CMP $AF C0/1927: B0 33 BCS $195C C0/1929: 80 22 BRA $194D C0/192B: 29 7F AND #$7F C0/192D: 85 1A STA $1A C0/192F: BF 80 F4 ED LDA $EDF480,X C0/1933: C5 AF CMP $AF C0/1935: D0 16 BNE $194D C0/1937: A5 B0 LDA $B0 C0/1939: 38 SEC C0/193A: FF 81 F4 ED SBC $EDF481,X C0/193E: 90 0D BCC $194D C0/1940: 85 28 STA $28 C0/1942: BF 81 F4 ED LDA $EDF481,X C0/1946: 18 CLC C0/1947: 65 1A ADC $1A C0/1949: C5 B0 CMP $B0 C0/194B: B0 0F BCS $195C C0/194D: C2 21 REP #$21 C0/194F: 8A TXA C0/1950: 69 07 00 ADC #$0007 C0/1953: AA TAX C0/1954: 7B TDC C0/1955: E2 20 SEP #$20 C0/1957: E4 1E CPX $1E C0/1959: D0 A4 BNE $18FF C0/195B: 60 RTS C0/195C: A9 01 LDA #$01 C0/195E: 8D 8E 07 STA $078E C0/1961: C2 20 REP #$20 C0/1963: BF 83 F4 ED LDA $EDF483,X C0/1967: 29 00 02 AND #$0200 C0/196A: F0 03 BEQ $196F C0/196C: 20 2A 1A JSR $1A2A ; set parent map C0/196F: BF 83 F4 ED LDA $EDF483,X C0/1973: 29 FF 01 AND #$01FF C0/1976: C9 FF 01 CMP #$01FF C0/1979: F0 65 BEQ $19E0 C0/197B: BF 83 F4 ED LDA $EDF483,X C0/197F: 8D 64 1F STA $1F64 C0/1982: 29 FF 01 AND #$01FF C0/1985: C9 03 00 CMP #$0003 C0/1988: B0 15 BCS $199F ; branch if not a world map C0/198A: BF 85 F4 ED LDA $EDF485,X C0/198E: 8D 60 1F STA $1F60 C0/1991: 7B TDC C0/1992: E2 20 SEP #$20 C0/1994: A9 01 LDA #$01 C0/1996: 85 84 STA $84 C0/1998: 20 88 6E JSR $6E88 ; save map and position for character objects C0/199B: 20 56 0F JSR $0F56 ; begin fade out C0/199E: 60 RTS C0/199F: BF 85 F4 ED LDA $EDF485,X ; destination xy position C0/19A3: 8D C0 1F STA $1FC0 C0/19A6: 7B TDC C0/19A7: E2 20 SEP #$20 C0/19A9: BF 84 F4 ED LDA $EDF484,X ; facing direction C0/19AD: 29 30 AND #$30 C0/19AF: 4A LSR C0/19B0: 4A LSR C0/19B1: 4A LSR C0/19B2: 4A LSR C0/19B3: 8D 43 07 STA $0743 C0/19B6: BF 84 F4 ED LDA $EDF484,X ; show map name C0/19BA: 29 08 AND #$08 C0/19BC: 8D 45 07 STA $0745 C0/19BF: A9 01 LDA #$01 ; destination z-level (0 = upper, 1 = lower) C0/19C1: 8D 44 07 STA $0744 C0/19C4: BF 84 F4 ED LDA $EDF484,X C0/19C8: 29 04 AND #$04 C0/19CA: F0 04 BEQ $19D0 ; branch if upper z-layer C0/19CC: 4A LSR C0/19CD: 8D 44 07 STA $0744 C0/19D0: A9 01 LDA #$01 ; enable map load C0/19D2: 85 84 STA $84 C0/19D4: 20 88 6E JSR $6E88 ; save map and position for character objects C0/19D7: 20 56 0F JSR $0F56 ; begin fade out C0/19DA: A9 80 LDA #$80 C0/19DC: 8D FA 11 STA $11FA C0/19DF: 60 RTS C0/19E0: 20 46 1A JSR $1A46 ; restore parent map position C0/19E3: C2 20 REP #$20 C0/19E5: BF 83 F4 ED LDA $EDF483,X C0/19E9: 29 00 FE AND #$FE00 C0/19EC: 0D 69 1F ORA $1F69 C0/19EF: 8D 64 1F STA $1F64 C0/19F2: 7B TDC C0/19F3: E2 20 SEP #$20 C0/19F5: AE 69 1F LDX $1F69 C0/19F8: E0 03 00 CPX #$0003 C0/19FB: B0 11 BCS $1A0E ; branch if not a world map C0/19FD: AC 6B 1F LDY $1F6B C0/1A00: 8C 60 1F STY $1F60 C0/1A03: A9 01 LDA #$01 C0/1A05: 85 84 STA $84 C0/1A07: 20 88 6E JSR $6E88 ; save map and position for character objects C0/1A0A: 20 56 0F JSR $0F56 ; begin fade out C0/1A0D: 60 RTS C0/1A0E: AD 68 1F LDA $1F68 C0/1A11: 8D 43 07 STA $0743 C0/1A14: BF 84 F4 ED LDA $EDF484,X C0/1A18: 29 08 AND #$08 C0/1A1A: 8D 45 07 STA $0745 C0/1A1D: 20 56 0F JSR $0F56 ; begin fade out C0/1A20: A9 80 LDA #$80 C0/1A22: 8D FA 11 STA $11FA C0/1A25: 60 RTS C0/1A26: 7B TDC C0/1A27: E2 20 SEP #$20 C0/1A29: 60 RTS ; [ Set Parent Map ] C0/1A2A: C2 20 REP #$20 C0/1A2C: A5 82 LDA $82 C0/1A2E: 29 FF 01 AND #$01FF C0/1A31: 8D 69 1F STA $1F69 ; parent map C0/1A34: A5 AF LDA $AF C0/1A36: 8D 6B 1F STA $1F6B ; parent xy position C0/1A39: 7B TDC C0/1A3A: E2 20 SEP #$20 C0/1A3C: AC 03 08 LDY $0803 C0/1A3F: B9 7E 08 LDA $087E,Y C0/1A42: 8D D2 1F STA $1FD2 ; parent map facing direction C0/1A45: 60 RTS ; [ Restore Parent Map Position ] C0/1A46: DA PHX C0/1A47: 7B TDC C0/1A48: E2 20 SEP #$20 C0/1A4A: AD D2 1F LDA $1FD2 ; parent facing direction C0/1A4D: 29 03 AND #$03 C0/1A4F: 49 02 EOR #$02 ; invert C0/1A51: AA TAX C0/1A52: 49 80 EOR #$80 C0/1A54: 8D 68 1F STA $1F68 ; set facing direction C0/1A57: AD 6B 1F LDA $1F6B C0/1A5A: 18 CLC C0/1A5B: 7F 6F 1A C0 ADC $C01A6F,X ; x offset for parent facing direction C0/1A5F: 8D 6B 1F STA $1F6B C0/1A62: AD 6C 1F LDA $1F6C C0/1A65: 18 CLC C0/1A66: 7F 73 1A C0 ADC $C01A73,X ; y offset for parent facing direction C0/1A6A: 8D 6C 1F STA $1F6C C0/1A6D: FA PLX C0/1A6E: 60 RTS ; x offset for parent facing direction C0/1A6F: .DB $00, $01, $00, $FF ; y offset for parent facing direction C0/1A73: .DB $FF, $00, $01, $00 ; [ Check Short Entrance Triggers ] check_map_jump_n: C0/1A77: C2 20 REP #$20 C0/1A79: A5 82 LDA $82 C0/1A7B: 0A ASL C0/1A7C: AA TAX C0/1A7D: BF 02 BB DF LDA $DFBB02,X C0/1A81: 85 1E STA $1E C0/1A83: BF 00 BB DF LDA $DFBB00,X C0/1A87: AA TAX C0/1A88: C5 1E CMP $1E C0/1A8A: D0 03 BNE $1A8F C0/1A8C: 4C 77 1B JMP $1B77 C0/1A8F: BF 00 BB DF LDA $DFBB00,X ; check xy position C0/1A93: C5 AF CMP $AF C0/1A95: F0 0D BEQ $1AA4 C0/1A97: 8A TXA C0/1A98: 18 CLC C0/1A99: 69 06 00 ADC #$0006 C0/1A9C: AA TAX C0/1A9D: E4 1E CPX $1E C0/1A9F: D0 EE BNE $1A8F C0/1AA1: 4C 77 1B JMP $1B77 C0/1AA4: A9 01 00 LDA #$0001 C0/1AA7: 8D 8E 07 STA $078E C0/1AAA: BF 02 BB DF LDA $DFBB02,X C0/1AAE: 29 00 02 AND #$0200 C0/1AB1: F0 03 BEQ $1AB6 C0/1AB3: 20 2A 1A JSR $1A2A ; set parent map C0/1AB6: BF 02 BB DF LDA $DFBB02,X C0/1ABA: 29 FF 01 AND #$01FF C0/1ABD: C9 FF 01 CMP #$01FF C0/1AC0: F0 65 BEQ $1B27 C0/1AC2: BF 02 BB DF LDA $DFBB02,X C0/1AC6: 8D 64 1F STA $1F64 C0/1AC9: 29 FF 01 AND #$01FF C0/1ACC: C9 03 00 CMP #$0003 C0/1ACF: B0 15 BCS $1AE6 C0/1AD1: BF 04 BB DF LDA $DFBB04,X C0/1AD5: 8D 60 1F STA $1F60 C0/1AD8: 7B TDC C0/1AD9: E2 20 SEP #$20 C0/1ADB: A9 01 LDA #$01 C0/1ADD: 85 84 STA $84 C0/1ADF: 20 88 6E JSR $6E88 ; save map and position for character objects C0/1AE2: 20 56 0F JSR $0F56 ; begin fade out C0/1AE5: 60 RTS C0/1AE6: BF 04 BB DF LDA $DFBB04,X C0/1AEA: 8D C0 1F STA $1FC0 C0/1AED: 7B TDC C0/1AEE: E2 20 SEP #$20 C0/1AF0: BF 03 BB DF LDA $DFBB03,X ; facing direction C0/1AF4: 4A LSR C0/1AF5: 4A LSR C0/1AF6: 4A LSR C0/1AF7: 4A LSR C0/1AF8: 29 03 AND #$03 C0/1AFA: 8D 43 07 STA $0743 C0/1AFD: BF 03 BB DF LDA $DFBB03,X ; show map name C0/1B01: 29 08 AND #$08 C0/1B03: 8D 45 07 STA $0745 C0/1B06: A9 01 LDA #$01 ; destination z-level (0 = upper, 1 = lower) C0/1B08: 8D 44 07 STA $0744 C0/1B0B: BF 03 BB DF LDA $DFBB03,X C0/1B0F: 29 04 AND #$04 C0/1B11: F0 04 BEQ $1B17 C0/1B13: 4A LSR C0/1B14: 8D 44 07 STA $0744 C0/1B17: 20 56 0F JSR $0F56 ; begin fade out C0/1B1A: A9 80 LDA #$80 C0/1B1C: 8D FA 11 STA $11FA C0/1B1F: A9 01 LDA #$01 C0/1B21: 85 84 STA $84 C0/1B23: 20 88 6E JSR $6E88 ; save map and position for character objects C0/1B26: 60 RTS C0/1B27: 20 46 1A JSR $1A46 ; restore parent map position C0/1B2A: C2 20 REP #$20 C0/1B2C: BF 02 BB DF LDA $DFBB02,X C0/1B30: 29 00 FE AND #$FE00 C0/1B33: 0D 69 1F ORA $1F69 C0/1B36: 8D 64 1F STA $1F64 C0/1B39: 7B TDC C0/1B3A: E2 20 SEP #$20 C0/1B3C: AE 69 1F LDX $1F69 C0/1B3F: E0 03 00 CPX #$0003 C0/1B42: B0 0E BCS $1B52 C0/1B44: AC 6B 1F LDY $1F6B C0/1B47: 8C 60 1F STY $1F60 C0/1B4A: A9 01 LDA #$01 C0/1B4C: 85 84 STA $84 C0/1B4E: 20 56 0F JSR $0F56 ; begin fade out C0/1B51: 60 RTS C0/1B52: AD 68 1F LDA $1F68 C0/1B55: 8D 43 07 STA $0743 C0/1B58: AC 6B 1F LDY $1F6B C0/1B5B: 8C 66 1F STY $1F66 C0/1B5E: BF 03 BB DF LDA $DFBB03,X C0/1B62: 29 08 AND #$08 C0/1B64: 8D 45 07 STA $0745 C0/1B67: A9 80 LDA #$80 C0/1B69: 8D FA 11 STA $11FA C0/1B6C: A9 01 LDA #$01 C0/1B6E: 85 84 STA $84 C0/1B70: 20 56 0F JSR $0F56 ; begin fade out C0/1B73: 20 88 6E JSR $6E88 ; save map and position for character objects C0/1B76: 60 RTS C0/1B77: 7B TDC C0/1B78: E2 20 SEP #$20 C0/1B7A: 60 RTS ; [ Calculate BG Scroll Positions ] init_bg_pos: C0/1B7B: C2 20 REP #$20 C0/1B7D: AD 41 05 LDA $0541 ; bg1 scroll position C0/1B80: 29 FF 00 AND #$00FF C0/1B83: 38 SEC C0/1B84: E9 07 00 SBC #$0007 C0/1B87: 0A ASL C0/1B88: 0A ASL C0/1B89: 0A ASL C0/1B8A: 0A ASL C0/1B8B: 85 5C STA $5C C0/1B8D: AD 42 05 LDA $0542 C0/1B90: 29 FF 00 AND #$00FF C0/1B93: 38 SEC C0/1B94: E9 07 00 SBC #$0007 C0/1B97: 0A ASL C0/1B98: 0A ASL C0/1B99: 0A ASL C0/1B9A: 0A ASL C0/1B9B: 85 60 STA $60 C0/1B9D: 7B TDC C0/1B9E: E2 20 SEP #$20 C0/1BA0: AD 53 05 LDA $0553 C0/1BA3: 8D 02 42 STA $4202 C0/1BA6: AD 41 05 LDA $0541 C0/1BA9: 8D 03 42 STA $4203 C0/1BAC: A5 88 LDA $88 C0/1BAE: C2 20 REP #$20 C0/1BB0: 0A ASL C0/1BB1: 0A ASL C0/1BB2: 0A ASL C0/1BB3: 0A ASL C0/1BB4: 09 0F 00 ORA #$000F C0/1BB7: 85 1E STA $1E C0/1BB9: AD 32 05 LDA $0532 C0/1BBC: 29 FF 00 AND #$00FF C0/1BBF: 0A ASL C0/1BC0: 0A ASL C0/1BC1: 0A ASL C0/1BC2: 0A ASL C0/1BC3: 18 CLC C0/1BC4: 6D 16 42 ADC $4216 C0/1BC7: 85 20 STA $20 C0/1BC9: 4A LSR C0/1BCA: 4A LSR C0/1BCB: 4A LSR C0/1BCC: 4A LSR C0/1BCD: E2 20 SEP #$20 C0/1BCF: 25 88 AND $88 C0/1BD1: 8D 43 05 STA $0543 C0/1BD4: C2 20 REP #$20 C0/1BD6: A5 20 LDA $20 C0/1BD8: 38 SEC C0/1BD9: E9 70 00 SBC #$0070 C0/1BDC: 25 1E AND $1E C0/1BDE: 85 64 STA $64 C0/1BE0: 7B TDC C0/1BE1: E2 20 SEP #$20 C0/1BE3: AD 54 05 LDA $0554 C0/1BE6: 8D 02 42 STA $4202 C0/1BE9: AD 42 05 LDA $0542 C0/1BEC: 8D 03 42 STA $4203 C0/1BEF: A5 89 LDA $89 C0/1BF1: C2 20 REP #$20 C0/1BF3: 0A ASL C0/1BF4: 0A ASL C0/1BF5: 0A ASL C0/1BF6: 0A ASL C0/1BF7: 09 0F 00 ORA #$000F C0/1BFA: 85 1E STA $1E C0/1BFC: AD 33 05 LDA $0533 C0/1BFF: 29 FF 00 AND #$00FF C0/1C02: 0A ASL C0/1C03: 0A ASL C0/1C04: 0A ASL C0/1C05: 0A ASL C0/1C06: 18 CLC C0/1C07: 6D 16 42 ADC $4216 C0/1C0A: 85 20 STA $20 C0/1C0C: 4A LSR C0/1C0D: 4A LSR C0/1C0E: 4A LSR C0/1C0F: 4A LSR C0/1C10: E2 20 SEP #$20 C0/1C12: 25 89 AND $89 C0/1C14: 8D 44 05 STA $0544 C0/1C17: C2 20 REP #$20 C0/1C19: A5 20 LDA $20 C0/1C1B: 38 SEC C0/1C1C: E9 70 00 SBC #$0070 C0/1C1F: 25 1E AND $1E C0/1C21: 85 68 STA $68 C0/1C23: 7B TDC C0/1C24: E2 20 SEP #$20 C0/1C26: AD 55 05 LDA $0555 C0/1C29: 8D 02 42 STA $4202 C0/1C2C: AD 41 05 LDA $0541 C0/1C2F: 8D 03 42 STA $4203 C0/1C32: A5 8A LDA $8A C0/1C34: C2 20 REP #$20 C0/1C36: 0A ASL C0/1C37: 0A ASL C0/1C38: 0A ASL C0/1C39: 0A ASL C0/1C3A: 09 0F 00 ORA #$000F C0/1C3D: 85 1E STA $1E C0/1C3F: AD 34 05 LDA $0534 C0/1C42: 29 FF 00 AND #$00FF C0/1C45: 0A ASL C0/1C46: 0A ASL C0/1C47: 0A ASL C0/1C48: 0A ASL C0/1C49: 18 CLC C0/1C4A: 6D 16 42 ADC $4216 C0/1C4D: 85 20 STA $20 C0/1C4F: 4A LSR C0/1C50: 4A LSR C0/1C51: 4A LSR C0/1C52: 4A LSR C0/1C53: E2 20 SEP #$20 C0/1C55: 25 8A AND $8A C0/1C57: 8D 45 05 STA $0545 C0/1C5A: C2 20 REP #$20 C0/1C5C: A5 20 LDA $20 C0/1C5E: 38 SEC C0/1C5F: E9 70 00 SBC #$0070 C0/1C62: 25 1E AND $1E C0/1C64: 85 6C STA $6C C0/1C66: 7B TDC C0/1C67: E2 20 SEP #$20 C0/1C69: AD 56 05 LDA $0556 C0/1C6C: 8D 02 42 STA $4202 C0/1C6F: AD 42 05 LDA $0542 C0/1C72: 8D 03 42 STA $4203 C0/1C75: A5 8B LDA $8B C0/1C77: C2 20 REP #$20 C0/1C79: 0A ASL C0/1C7A: 0A ASL C0/1C7B: 0A ASL C0/1C7C: 0A ASL C0/1C7D: 09 0F 00 ORA #$000F C0/1C80: 85 1E STA $1E C0/1C82: AD 35 05 LDA $0535 C0/1C85: 29 FF 00 AND #$00FF C0/1C88: 0A ASL C0/1C89: 0A ASL C0/1C8A: 0A ASL C0/1C8B: 0A ASL C0/1C8C: 18 CLC C0/1C8D: 6D 16 42 ADC $4216 C0/1C90: 85 20 STA $20 C0/1C92: 4A LSR C0/1C93: 4A LSR C0/1C94: 4A LSR C0/1C95: 4A LSR C0/1C96: E2 20 SEP #$20 C0/1C98: 25 8B AND $8B C0/1C9A: 8D 46 05 STA $0546 C0/1C9D: C2 20 REP #$20 C0/1C9F: A5 20 LDA $20 C0/1CA1: 38 SEC C0/1CA2: E9 70 00 SBC #$0070 C0/1CA5: 25 1E AND $1E C0/1CA7: 85 70 STA $70 C0/1CA9: 7B TDC C0/1CAA: E2 20 SEP #$20 C0/1CAC: 60 RTS ; [ Load Map Properties ] C0/1CAD: C2 20 REP #$20 C0/1CAF: A5 82 LDA $82 ; map index C0/1CB1: 0A ASL ; multiply by 33 C0/1CB2: 0A ASL C0/1CB3: 0A ASL C0/1CB4: 0A ASL C0/1CB5: 0A ASL C0/1CB6: 18 CLC C0/1CB7: 65 82 ADC $82 C0/1CB9: AA TAX C0/1CBA: 7B TDC C0/1CBB: E2 20 SEP #$20 C0/1CBD: A4 00 LDY $00 C0/1CBF: BF 00 8F ED LDA $ED8F00,X ; map properties C0/1CC3: 99 20 05 STA $0520,Y C0/1CC6: E8 INX C0/1CC7: C8 INY C0/1CC8: C0 21 00 CPY #$0021 C0/1CCB: D0 F2 BNE $1CBF C0/1CCD: 60 RTS ; [ Load Tile Properties ] trans_spn_id: C0/1CCE: AD 24 05 LDA $0524 C0/1CD1: 0A ASL C0/1CD2: AA TAX C0/1CD3: C2 21 REP #$21 C0/1CD5: BF 10 CD D9 LDA $D9CD10,X C0/1CD9: 69 00 A8 ADC #$A800 C0/1CDC: 85 F3 STA $F3 C0/1CDE: 7B TDC C0/1CDF: E2 20 SEP #$20 C0/1CE1: A9 D9 LDA #$D9 C0/1CE3: 85 F5 STA $F5 C0/1CE5: A2 00 76 LDX #$7600 C0/1CE8: 86 F6 STX $F6 C0/1CEA: A9 7E LDA #$7E C0/1CEC: 85 F8 STA $F8 C0/1CEE: 22 6C 04 C0 JSL $C0046C ; decompress C0/1CF2: 60 RTS ; [ Copy BG1 Map to VRAM (top half) ] C0/1CF3: 9C 0B 42 STZ $420B C0/1CF6: A9 80 LDA #$80 C0/1CF8: 8D 15 21 STA $2115 C0/1CFB: A6 91 LDX $91 C0/1CFD: 8E 16 21 STX $2116 C0/1D00: A9 41 LDA #$41 C0/1D02: 8D 00 43 STA $4300 C0/1D05: A9 18 LDA #$18 C0/1D07: 8D 01 43 STA $4301 C0/1D0A: A2 C0 D9 LDX #$D9C0 C0/1D0D: 8E 02 43 STX $4302 C0/1D10: A9 7F LDA #$7F C0/1D12: 8D 04 43 STA $4304 C0/1D15: 8D 07 43 STA $4307 C0/1D18: A2 00 04 LDX #$0400 C0/1D1B: 8E 05 43 STX $4305 C0/1D1E: A9 01 LDA #$01 C0/1D20: 8D 0B 42 STA $420B C0/1D23: 60 RTS ; [ Copy BG1 Map to VRAM (bottom half) ] C0/1D24: 9C 0B 42 STZ $420B C0/1D27: A9 80 LDA #$80 C0/1D29: 8D 15 21 STA $2115 C0/1D2C: C2 20 REP #$20 C0/1D2E: AD 91 00 LDA $0091 C0/1D31: 18 CLC C0/1D32: 69 00 02 ADC #$0200 C0/1D35: 8D 16 21 STA $2116 C0/1D38: 7B TDC C0/1D39: E2 20 SEP #$20 C0/1D3B: A9 41 LDA #$41 C0/1D3D: 8D 00 43 STA $4300 C0/1D40: A9 18 LDA #$18 C0/1D42: 8D 01 43 STA $4301 C0/1D45: A2 C0 DD LDX #$DDC0 C0/1D48: 8E 02 43 STX $4302 C0/1D4B: A9 7F LDA #$7F C0/1D4D: 8D 04 43 STA $4304 C0/1D50: 8D 07 43 STA $4307 C0/1D53: A2 00 04 LDX #$0400 C0/1D56: 8E 05 43 STX $4305 C0/1D59: A9 01 LDA #$01 C0/1D5B: 8D 0B 42 STA $420B C0/1D5E: 60 RTS ; [ Copy BG2 Map to VRAM (top half) ] C0/1D5F: 9C 0B 42 STZ $420B C0/1D62: A9 80 LDA #$80 C0/1D64: 8D 15 21 STA $2115 C0/1D67: A6 97 LDX $97 C0/1D69: 8E 16 21 STX $2116 C0/1D6C: A9 41 LDA #$41 C0/1D6E: 8D 00 43 STA $4300 C0/1D71: A9 18 LDA #$18 C0/1D73: 8D 01 43 STA $4301 C0/1D76: A2 C0 E1 LDX #$E1C0 C0/1D79: 8E 02 43 STX $4302 C0/1D7C: A9 7F LDA #$7F C0/1D7E: 8D 04 43 STA $4304 C0/1D81: 8D 07 43 STA $4307 C0/1D84: A2 00 04 LDX #$0400 C0/1D87: 8E 05 43 STX $4305 C0/1D8A: A9 01 LDA #$01 C0/1D8C: 8D 0B 42 STA $420B C0/1D8F: 60 RTS ; [ Copy BG2 Map to VRAM (bottom half) ] C0/1D90: 9C 0B 42 STZ $420B C0/1D93: A9 80 LDA #$80 C0/1D95: 8D 15 21 STA $2115 C0/1D98: C2 20 REP #$20 C0/1D9A: AD 97 00 LDA $0097 C0/1D9D: 18 CLC C0/1D9E: 69 00 02 ADC #$0200 C0/1DA1: 8D 16 21 STA $2116 C0/1DA4: 7B TDC C0/1DA5: E2 20 SEP #$20 C0/1DA7: A9 41 LDA #$41 C0/1DA9: 8D 00 43 STA $4300 C0/1DAC: A9 18 LDA #$18 C0/1DAE: 8D 01 43 STA $4301 C0/1DB1: A2 C0 E5 LDX #$E5C0 C0/1DB4: 8E 02 43 STX $4302 C0/1DB7: A9 7F LDA #$7F C0/1DB9: 8D 04 43 STA $4304 C0/1DBC: 8D 07 43 STA $4307 C0/1DBF: A2 00 04 LDX #$0400 C0/1DC2: 8E 05 43 STX $4305 C0/1DC5: A9 01 LDA #$01 C0/1DC7: 8D 0B 42 STA $420B C0/1DCA: 60 RTS ; [ Copy BG3 Map to VRAM (top half) ] C0/1DCB: 9C 0B 42 STZ $420B C0/1DCE: A9 80 LDA #$80 C0/1DD0: 8D 15 21 STA $2115 C0/1DD3: A6 9D LDX $9D C0/1DD5: 8E 16 21 STX $2116 C0/1DD8: A9 41 LDA #$41 C0/1DDA: 8D 00 43 STA $4300 C0/1DDD: A9 18 LDA #$18 C0/1DDF: 8D 01 43 STA $4301 C0/1DE2: A2 C0 E9 LDX #$E9C0 C0/1DE5: 8E 02 43 STX $4302 C0/1DE8: A9 7F LDA #$7F C0/1DEA: 8D 04 43 STA $4304 C0/1DED: 8D 07 43 STA $4307 C0/1DF0: A2 00 04 LDX #$0400 C0/1DF3: 8E 05 43 STX $4305 C0/1DF6: A9 01 LDA #$01 C0/1DF8: 8D 0B 42 STA $420B C0/1DFB: 60 RTS ; [ Copy BG3 Map to VRAM (bottom half) ] C0/1DFC: 9C 0B 42 STZ $420B C0/1DFF: A9 80 LDA #$80 C0/1E01: 8D 15 21 STA $2115 C0/1E04: C2 20 REP #$20 C0/1E06: AD 9D 00 LDA $009D C0/1E09: 18 CLC C0/1E0A: 69 00 02 ADC #$0200 C0/1E0D: 8D 16 21 STA $2116 C0/1E10: 7B TDC C0/1E11: E2 20 SEP #$20 C0/1E13: A9 41 LDA #$41 C0/1E15: 8D 00 43 STA $4300 C0/1E18: A9 18 LDA #$18 C0/1E1A: 8D 01 43 STA $4301 C0/1E1D: A2 C0 ED LDX #$EDC0 C0/1E20: 8E 02 43 STX $4302 C0/1E23: A9 7F LDA #$7F C0/1E25: 8D 04 43 STA $4304 C0/1E28: 8D 07 43 STA $4307 C0/1E2B: A2 00 04 LDX #$0400 C0/1E2E: 8E 05 43 STX $4305 C0/1E31: A9 01 LDA #$01 C0/1E33: 8D 0B 42 STA $420B C0/1E36: 60 RTS ; [ Copy Map Changes to VRAM ] C0/1E37: AD 5A 05 LDA $055A ; bg1 map data update status C0/1E3A: F0 1D BEQ $1E59 ; skip if not 1 or 2 C0/1E3C: C9 03 CMP #$03 C0/1E3E: B0 19 BCS $1E59 C0/1E40: 3A DEC C0/1E41: D0 0E BNE $1E51 ; branch if 2 C0/1E43: 20 24 1D JSR $1D24 ; copy bg1 map to VRAM (top half) C0/1E46: A5 5A LDA $5A C0/1E48: 09 01 ORA #$01 ; enable bg1 map flip C0/1E4A: 85 5A STA $5A C0/1E4C: 9C 5A 05 STZ $055A C0/1E4F: 80 4A BRA $1E9B C0/1E51: 20 F3 1C JSR $1CF3 ; copy bg1 map to VRAM (bottom half) C0/1E54: CE 5A 05 DEC $055A C0/1E57: 80 42 BRA $1E9B C0/1E59: AD 5B 05 LDA $055B C0/1E5C: F0 1D BEQ $1E7B C0/1E5E: C9 03 CMP #$03 C0/1E60: B0 19 BCS $1E7B C0/1E62: 3A DEC C0/1E63: D0 0E BNE $1E73 C0/1E65: 20 90 1D JSR $1D90 C0/1E68: A5 5A LDA $5A C0/1E6A: 09 02 ORA #$02 C0/1E6C: 85 5A STA $5A C0/1E6E: 9C 5B 05 STZ $055B C0/1E71: 80 28 BRA $1E9B C0/1E73: 20 5F 1D JSR $1D5F C0/1E76: CE 5B 05 DEC $055B C0/1E79: 80 20 BRA $1E9B C0/1E7B: AD 5C 05 LDA $055C C0/1E7E: F0 1B BEQ $1E9B C0/1E80: C9 03 CMP #$03 C0/1E82: B0 17 BCS $1E9B C0/1E84: 3A DEC C0/1E85: D0 0E BNE $1E95 C0/1E87: 20 FC 1D JSR $1DFC C0/1E8A: A5 5A LDA $5A C0/1E8C: 09 04 ORA #$04 C0/1E8E: 85 5A STA $5A C0/1E90: 9C 5C 05 STZ $055C C0/1E93: 80 06 BRA $1E9B C0/1E95: 20 CB 1D JSR $1DCB C0/1E98: CE 5C 05 DEC $055C C0/1E9B: AD 5A 05 LDA $055A ; return if no maps need to be flipped C0/1E9E: 0D 5B 05 ORA $055B C0/1EA1: 0D 5C 05 ORA $055C C0/1EA4: D0 1D BNE $1EC3 C0/1EA6: A5 5A LDA $5A C0/1EA8: 29 01 AND #$01 C0/1EAA: F0 03 BEQ $1EAF C0/1EAC: 20 5E 3F JSR $3F5E ; flip bg1 map location C0/1EAF: A5 5A LDA $5A C0/1EB1: 29 02 AND #$02 C0/1EB3: F0 03 BEQ $1EB8 C0/1EB5: 20 7E 3F JSR $3F7E ; flip bg2 map location C0/1EB8: A5 5A LDA $5A C0/1EBA: 29 04 AND #$04 C0/1EBC: F0 03 BEQ $1EC1 C0/1EBE: 20 9E 3F JSR $3F9E ; flip bg3 map location C0/1EC1: 64 5A STZ $5A C0/1EC3: 60 RTS ; [ Change Map Data ] ; +$2A = pointer to map data ($0000 for bg1, $4000 for bg2, $8000 for bg3) ; +$8F = destination offset (+$7F0000) ; ++$8C = source pointer (source format: width [1 byte], height [1 byte], tile data [1 byte each]) rewrite_map: C0/1EC4: A9 7F LDA #$7F C0/1EC6: 85 2F STA $2F ; ++$2D = destination C0/1EC8: A5 8F LDA $8F C0/1ECA: 85 2A STA $2A C0/1ECC: A5 90 LDA $90 C0/1ECE: 18 CLC C0/1ECF: 65 2B ADC $2B C0/1ED1: 85 2B STA $2B C0/1ED3: 85 2E STA $2E C0/1ED5: A4 00 LDY $00 C0/1ED7: B7 8C LDA [$8C],Y ; +$26 = width C0/1ED9: 85 26 STA $26 C0/1EDB: 64 27 STZ $27 C0/1EDD: C8 INY C0/1EDE: B7 8C LDA [$8C],Y ; $28 = height C0/1EE0: 85 28 STA $28 C0/1EE2: 85 29 STA $29 C0/1EE4: C8 INY C0/1EE5: A6 26 LDX $26 ; copy tile data C0/1EE7: A5 2A LDA $2A C0/1EE9: 85 2D STA $2D C0/1EEB: B7 8C LDA [$8C],Y C0/1EED: 87 2D STA [$2D] C0/1EEF: C8 INY ; next tile C0/1EF0: E6 2D INC $2D C0/1EF2: CA DEX C0/1EF3: D0 F6 BNE $1EEB C0/1EF5: E6 2E INC $2E ; next row C0/1EF7: C6 29 DEC $29 C0/1EF9: D0 EA BNE $1EE5 C0/1EFB: C2 20 REP #$20 C0/1EFD: A5 2A LDA $2A C0/1EFF: 29 FF 3F AND #$3FFF C0/1F02: 85 2A STA $2A C0/1F04: 7B TDC C0/1F05: E2 20 SEP #$20 C0/1F07: 60 RTS ; [ Update BG1 Map Changes ] ; $1B = x tile counter (16 tiles per line) ; +$1E = pointer to bg1 map (+$7FD9C0) ; $20 = x start tile ; $28 = y tile counter (8 lines per frame) ; +$2A = pointer to bg1 map data (+$7F0000) rewrite_map1: C0/1F08: AD 5A 05 LDA $055A ; return unless waiting for update in RAM C0/1F0B: C9 05 CMP #$05 C0/1F0D: F0 04 BEQ $1F13 C0/1F0F: C9 03 CMP #$03 C0/1F11: B0 01 BCS $1F14 C0/1F13: 60 RTS C0/1F14: C9 04 CMP #$04 C0/1F16: D0 08 BNE $1F20 C0/1F18: AD 42 05 LDA $0542 ; bg1 map update status = 04: top half C0/1F1B: 38 SEC C0/1F1C: E9 07 SBC #$07 ; bg1 center (y - 7) C0/1F1E: 80 04 BRA $1F24 C0/1F20: AD 42 05 LDA $0542 ; bg1 map update status = 03: bottom half C0/1F23: 1A INC ; bg1 center (y + 1) C0/1F24: 25 87 AND $87 ; bg1 vertical clip C0/1F26: 85 2B STA $2B C0/1F28: AD 41 05 LDA $0541 C0/1F2B: 38 SEC C0/1F2C: E9 07 SBC #$07 ; bg1 center (x - 7) C0/1F2E: 25 86 AND $86 ; bg1 horizontal clip C0/1F30: 85 2A STA $2A C0/1F32: 85 20 STA $20 ; x start C0/1F34: AD 8C 05 LDA $058C ; flip map data in VRAM C0/1F37: 49 04 EOR #$04 C0/1F39: 85 92 STA $92 C0/1F3B: 64 91 STZ $91 C0/1F3D: 7B TDC C0/1F3E: E2 20 SEP #$20 C0/1F40: A5 2A LDA $2A ; C0/1F42: 29 0F AND #$0F C0/1F44: 0A ASL C0/1F45: 0A ASL C0/1F46: 85 1E STA $1E C0/1F48: 64 1F STZ $1F C0/1F4A: A5 2B LDA $2B C0/1F4C: 29 0F AND #$0F C0/1F4E: EB XBA C0/1F4F: C2 20 REP #$20 C0/1F51: 4A LSR C0/1F52: 05 1E ORA $1E C0/1F54: 85 1E STA $1E C0/1F56: 7B TDC C0/1F57: E2 20 SEP #$20 C0/1F59: A9 08 LDA #$08 ; set y tile counter to 8 C0/1F5B: 85 28 STA $28 C0/1F5D: A9 7F LDA #$7F C0/1F5F: 48 PHA C0/1F60: AB PLB C0/1F61: A9 10 LDA #$10 ; set x tile counter to 16 C0/1F63: 85 1B STA $1B C0/1F65: A4 1E LDY $1E C0/1F67: A5 20 LDA $20 C0/1F69: 85 2A STA $2A C0/1F6B: B2 2A LDA ($2A) ; get tile index C0/1F6D: C2 20 REP #$20 C0/1F6F: 0A ASL C0/1F70: AA TAX C0/1F71: BD 00 C0 LDA $C000,X ; copy bg1 tile formation to bg1 map C0/1F74: 99 C0 D9 STA $D9C0,Y C0/1F77: BD 00 C2 LDA $C200,X C0/1F7A: 99 C2 D9 STA $D9C2,Y C0/1F7D: BD 00 C4 LDA $C400,X C0/1F80: 99 00 DA STA $DA00,Y C0/1F83: BD 00 C6 LDA $C600,X C0/1F86: 99 02 DA STA $DA02,Y C0/1F89: 98 TYA C0/1F8A: 18 CLC C0/1F8B: 69 04 00 ADC #$0004 C0/1F8E: 29 BF FF AND #$FFBF C0/1F91: A8 TAY C0/1F92: 7B TDC C0/1F93: E2 20 SEP #$20 C0/1F95: A5 2A LDA $2A ; increment pointer to map data (x) C0/1F97: 1A INC C0/1F98: 25 86 AND $86 ; bg1 horizontal mask C0/1F9A: 85 2A STA $2A C0/1F9C: C6 1B DEC $1B ; decrement x tile counter C0/1F9E: D0 CB BNE $1F6B ; next tile C0/1FA0: A5 2B LDA $2B ; increment pointer to map data (y) C0/1FA2: 1A INC C0/1FA3: 25 87 AND $87 ; bg1 vertical mask C0/1FA5: 85 2B STA $2B C0/1FA7: C2 21 REP #$21 C0/1FA9: A5 1E LDA $1E ; increment pointer to map (y) C0/1FAB: 69 80 00 ADC #$0080 C0/1FAE: 29 FF 07 AND #$07FF C0/1FB1: 85 1E STA $1E C0/1FB3: 7B TDC C0/1FB4: E2 20 SEP #$20 C0/1FB6: C6 28 DEC $28 ; decrement y tile counter C0/1FB8: D0 A7 BNE $1F61 ; next line C0/1FBA: A9 00 LDA #$00 C0/1FBC: 48 PHA C0/1FBD: AB PLB C0/1FBE: CE 5A 05 DEC $055A ; decrement bg1 map update status C0/1FC1: 60 RTS ; [ Update BG2 Map Changes ] rewrite_map2: C0/1FC2: AD 5B 05 LDA $055B C0/1FC5: C9 05 CMP #$05 C0/1FC7: F0 04 BEQ $1FCD C0/1FC9: C9 03 CMP #$03 C0/1FCB: B0 01 BCS $1FCE C0/1FCD: 60 RTS C0/1FCE: C9 04 CMP #$04 C0/1FD0: D0 08 BNE $1FDA C0/1FD2: AD 44 05 LDA $0544 C0/1FD5: 38 SEC C0/1FD6: E9 07 SBC #$07 C0/1FD8: 80 04 BRA $1FDE C0/1FDA: AD 44 05 LDA $0544 C0/1FDD: 1A INC C0/1FDE: 25 89 AND $89 C0/1FE0: 18 CLC C0/1FE1: 69 40 ADC #$40 C0/1FE3: 85 2B STA $2B C0/1FE5: AD 43 05 LDA $0543 C0/1FE8: 38 SEC C0/1FE9: E9 07 SBC #$07 C0/1FEB: 25 88 AND $88 C0/1FED: 85 2A STA $2A C0/1FEF: 85 20 STA $20 C0/1FF1: AD 8E 05 LDA $058E C0/1FF4: 49 04 EOR #$04 C0/1FF6: 85 98 STA $98 C0/1FF8: 64 97 STZ $97 C0/1FFA: 7B TDC C0/1FFB: E2 20 SEP #$20 C0/1FFD: A5 2A LDA $2A C0/1FFF: 29 0F AND #$0F C0/2001: 0A ASL C0/2002: 0A ASL C0/2003: 85 1E STA $1E C0/2005: 64 1F STZ $1F C0/2007: A5 2B LDA $2B C0/2009: 29 0F AND #$0F C0/200B: EB XBA C0/200C: C2 20 REP #$20 C0/200E: 4A LSR C0/200F: 05 1E ORA $1E C0/2011: 85 1E STA $1E C0/2013: 7B TDC C0/2014: E2 20 SEP #$20 C0/2016: A9 08 LDA #$08 C0/2018: 85 28 STA $28 C0/201A: A9 7F LDA #$7F C0/201C: 48 PHA C0/201D: AB PLB C0/201E: A9 10 LDA #$10 C0/2020: 85 1B STA $1B C0/2022: A4 1E LDY $1E C0/2024: A5 20 LDA $20 C0/2026: 85 2A STA $2A C0/2028: B2 2A LDA ($2A) C0/202A: C2 20 REP #$20 C0/202C: 0A ASL C0/202D: AA TAX C0/202E: BD 00 C8 LDA $C800,X C0/2031: 99 C0 E1 STA $E1C0,Y C0/2034: BD 00 CA LDA $CA00,X C0/2037: 99 C2 E1 STA $E1C2,Y C0/203A: BD 00 CC LDA $CC00,X C0/203D: 99 00 E2 STA $E200,Y C0/2040: BD 00 CE LDA $CE00,X C0/2043: 99 02 E2 STA $E202,Y C0/2046: 98 TYA C0/2047: 18 CLC C0/2048: 69 04 00 ADC #$0004 C0/204B: 29 BF FF AND #$FFBF C0/204E: A8 TAY C0/204F: 7B TDC C0/2050: E2 20 SEP #$20 C0/2052: A5 2A LDA $2A C0/2054: 1A INC C0/2055: 25 88 AND $88 C0/2057: 85 2A STA $2A C0/2059: C6 1B DEC $1B C0/205B: D0 CB BNE $2028 C0/205D: A5 2B LDA $2B C0/205F: 1A INC C0/2060: 25 89 AND $89 C0/2062: 09 40 ORA #$40 C0/2064: 85 2B STA $2B C0/2066: C2 21 REP #$21 C0/2068: A5 1E LDA $1E C0/206A: 69 80 00 ADC #$0080 C0/206D: 29 FF 07 AND #$07FF C0/2070: 85 1E STA $1E C0/2072: 7B TDC C0/2073: E2 20 SEP #$20 C0/2075: C6 28 DEC $28 C0/2077: D0 A5 BNE $201E C0/2079: A9 00 LDA #$00 C0/207B: 48 PHA C0/207C: AB PLB C0/207D: CE 5B 05 DEC $055B C0/2080: 60 RTS ; [ Update BG3 Map Changes ] rewrite_map3: C0/2081: AD 5C 05 LDA $055C C0/2084: C9 05 CMP #$05 C0/2086: F0 04 BEQ $208C C0/2088: C9 03 CMP #$03 C0/208A: B0 01 BCS $208D C0/208C: 60 RTS C0/208D: C9 04 CMP #$04 C0/208F: D0 08 BNE $2099 C0/2091: AD 46 05 LDA $0546 C0/2094: 38 SEC C0/2095: E9 07 SBC #$07 C0/2097: 80 04 BRA $209D C0/2099: AD 46 05 LDA $0546 C0/209C: 1A INC C0/209D: 25 8B AND $8B C0/209F: 18 CLC C0/20A0: 85 2B STA $2B C0/20A2: AD 45 05 LDA $0545 C0/20A5: 38 SEC C0/20A6: E9 07 SBC #$07 C0/20A8: 25 8A AND $8A C0/20AA: 85 2A STA $2A C0/20AC: 85 24 STA $24 C0/20AE: AD 90 05 LDA $0590 C0/20B1: 49 04 EOR #$04 C0/20B3: 85 9E STA $9E C0/20B5: 64 9D STZ $9D C0/20B7: 7B TDC C0/20B8: E2 20 SEP #$20 C0/20BA: A5 2A LDA $2A C0/20BC: 29 0F AND #$0F C0/20BE: 0A ASL C0/20BF: 0A ASL C0/20C0: 85 1E STA $1E C0/20C2: 64 1F STZ $1F C0/20C4: A5 2B LDA $2B C0/20C6: 29 0F AND #$0F C0/20C8: EB XBA C0/20C9: C2 20 REP #$20 C0/20CB: 4A LSR C0/20CC: 05 1E ORA $1E C0/20CE: 85 1E STA $1E C0/20D0: 7B TDC C0/20D1: E2 20 SEP #$20 C0/20D3: A9 08 LDA #$08 C0/20D5: 85 28 STA $28 C0/20D7: A9 10 LDA #$10 C0/20D9: 85 1B STA $1B C0/20DB: A4 1E LDY $1E C0/20DD: A5 24 LDA $24 C0/20DF: 85 2A STA $2A C0/20E1: 20 9A 24 JSR $249A C0/20E4: A5 2B LDA $2B C0/20E6: 1A INC C0/20E7: 25 8B AND $8B C0/20E9: 85 2B STA $2B C0/20EB: C2 21 REP #$21 C0/20ED: A5 1E LDA $1E C0/20EF: 69 80 00 ADC #$0080 C0/20F2: 29 FF 07 AND #$07FF C0/20F5: 85 1E STA $1E C0/20F7: 7B TDC C0/20F8: E2 20 SEP #$20 C0/20FA: C6 28 DEC $28 C0/20FC: D0 D9 BNE $20D7 C0/20FE: CE 5C 05 DEC $055C C0/2101: 60 RTS ; [ Update BG for Scrolling ] C0/2102: AD 89 05 LDA $0589 ; bg3 vertical scroll C0/2105: C9 01 CMP #$01 C0/2107: D0 08 BNE $2111 C0/2109: 20 4E 24 JSR $244E C0/210C: EE 89 05 INC $0589 C0/210F: 80 0D BRA $211E C0/2111: AD 8A 05 LDA $058A ; bg3 horizontal scroll C0/2114: C9 01 CMP #$01 C0/2116: D0 06 BNE $211E C0/2118: 20 59 25 JSR $2559 C0/211B: EE 8A 05 INC $058A C0/211E: AD 86 05 LDA $0586 ; bg1 horizontal scroll C0/2121: C9 01 CMP #$01 C0/2123: D0 06 BNE $212B C0/2125: 20 10 22 JSR $2210 C0/2128: EE 86 05 INC $0586 C0/212B: AD 88 05 LDA $0588 ; bg2 horizontal scroll C0/212E: C9 01 CMP #$01 C0/2130: D0 07 BNE $2139 C0/2132: 20 8B 23 JSR $238B C0/2135: EE 88 05 INC $0588 C0/2138: 60 RTS C0/2139: AD 85 05 LDA $0585 ; bg1 vertical scroll C0/213C: C9 01 CMP #$01 C0/213E: D0 06 BNE $2146 C0/2140: 20 54 21 JSR $2154 C0/2143: EE 85 05 INC $0585 C0/2146: AD 87 05 LDA $0587 ; bg2 vertical scroll C0/2149: C9 01 CMP #$01 C0/214B: D0 06 BNE $2153 C0/214D: 20 CF 22 JSR $22CF C0/2150: EE 87 05 INC $0587 C0/2153: 60 RTS ; [ Update BG1 for Scrolling (vertical) ] C0/2154: C2 21 REP #$21 C0/2156: A5 75 LDA $75 C0/2158: 6D 49 05 ADC $0549 C0/215B: 30 0B BMI $2168 C0/215D: 7B TDC C0/215E: E2 20 SEP #$20 C0/2160: AD 42 05 LDA $0542 C0/2163: 18 CLC C0/2164: 69 08 ADC #$08 C0/2166: 80 09 BRA $2171 C0/2168: 7B TDC C0/2169: E2 20 SEP #$20 C0/216B: AD 42 05 LDA $0542 C0/216E: 38 SEC C0/216F: E9 07 SBC #$07 C0/2171: 25 87 AND $87 C0/2173: 18 CLC C0/2174: 69 00 ADC #$00 C0/2176: 85 2B STA $2B C0/2178: 29 0F AND #$0F C0/217A: C2 20 REP #$20 C0/217C: EB XBA C0/217D: 4A LSR C0/217E: 4A LSR C0/217F: 18 CLC C0/2180: 6D 8B 05 ADC $058B C0/2183: 85 91 STA $91 C0/2185: 7B TDC C0/2186: E2 20 SEP #$20 C0/2188: AD 41 05 LDA $0541 C0/218B: 38 SEC C0/218C: E9 07 SBC #$07 C0/218E: 25 86 AND $86 C0/2190: 85 2A STA $2A C0/2192: A5 2A LDA $2A C0/2194: 29 0F AND #$0F C0/2196: 0A ASL C0/2197: 0A ASL C0/2198: A8 TAY C0/2199: E2 10 SEP #$10 C0/219B: A9 10 LDA #$10 C0/219D: 85 1B STA $1B C0/219F: A9 7F LDA #$7F C0/21A1: 48 PHA C0/21A2: AB PLB C0/21A3: B2 2A LDA ($2A) C0/21A5: 30 32 BMI $21D9 C0/21A7: 0A ASL C0/21A8: AA TAX C0/21A9: C2 20 REP #$20 C0/21AB: BD 00 C0 LDA $C000,X C0/21AE: 99 C0 D9 STA $D9C0,Y C0/21B1: BD 00 C2 LDA $C200,X C0/21B4: 99 C2 D9 STA $D9C2,Y C0/21B7: BD 00 C4 LDA $C400,X C0/21BA: 99 00 DA STA $DA00,Y C0/21BD: BD 00 C6 LDA $C600,X C0/21C0: 99 02 DA STA $DA02,Y C0/21C3: 7B TDC C0/21C4: E2 21 SEP #$21 C0/21C6: 98 TYA C0/21C7: 69 03 ADC #$03 C0/21C9: 29 BF AND #$BF C0/21CB: A8 TAY C0/21CC: A5 2A LDA $2A C0/21CE: 1A INC C0/21CF: 25 86 AND $86 C0/21D1: 85 2A STA $2A C0/21D3: C6 1B DEC $1B C0/21D5: D0 CC BNE $21A3 C0/21D7: 80 30 BRA $2209 C0/21D9: 0A ASL C0/21DA: AA TAX C0/21DB: C2 20 REP #$20 C0/21DD: BD 00 C1 LDA $C100,X C0/21E0: 99 C0 D9 STA $D9C0,Y C0/21E3: BD 00 C3 LDA $C300,X C0/21E6: 99 C2 D9 STA $D9C2,Y C0/21E9: BD 00 C5 LDA $C500,X C0/21EC: 99 00 DA STA $DA00,Y C0/21EF: BD 00 C7 LDA $C700,X C0/21F2: 99 02 DA STA $DA02,Y C0/21F5: 7B TDC C0/21F6: E2 21 SEP #$21 C0/21F8: 98 TYA C0/21F9: 69 03 ADC #$03 C0/21FB: 29 BF AND #$BF C0/21FD: A8 TAY C0/21FE: A5 2A LDA $2A C0/2200: 1A INC C0/2201: 25 86 AND $86 C0/2203: 85 2A STA $2A C0/2205: C6 1B DEC $1B C0/2207: D0 9A BNE $21A3 C0/2209: A9 00 LDA #$00 C0/220B: 48 PHA C0/220C: AB PLB C0/220D: C2 10 REP #$10 C0/220F: 60 RTS ; [ Update BG1 for Scrolling (horizontal) ] C0/2210: C2 21 REP #$21 C0/2212: A5 73 LDA $73 C0/2214: 6D 47 05 ADC $0547 C0/2217: 30 0B BMI $2224 C0/2219: 7B TDC C0/221A: E2 20 SEP #$20 C0/221C: AD 41 05 LDA $0541 C0/221F: 18 CLC C0/2220: 69 08 ADC #$08 C0/2222: 80 09 BRA $222D C0/2224: 7B TDC C0/2225: E2 20 SEP #$20 C0/2227: AD 41 05 LDA $0541 C0/222A: 38 SEC C0/222B: E9 07 SBC #$07 C0/222D: 25 86 AND $86 C0/222F: 85 2A STA $2A C0/2231: AD 42 05 LDA $0542 C0/2234: 38 SEC C0/2235: E9 07 SBC #$07 C0/2237: 25 87 AND $87 C0/2239: 18 CLC C0/223A: 69 00 ADC #$00 C0/223C: 85 2B STA $2B C0/223E: 29 0F AND #$0F C0/2240: 0A ASL C0/2241: 0A ASL C0/2242: A8 TAY C0/2243: A6 2A LDX $2A C0/2245: 86 2D STX $2D C0/2247: E2 10 SEP #$10 C0/2249: A9 10 LDA #$10 C0/224B: 85 1B STA $1B C0/224D: A9 7F LDA #$7F C0/224F: 48 PHA C0/2250: AB PLB C0/2251: B2 2A LDA ($2A) C0/2253: 30 32 BMI $2287 C0/2255: 0A ASL C0/2256: AA TAX C0/2257: C2 20 REP #$20 C0/2259: BD 00 C0 LDA $C000,X C0/225C: 99 40 D8 STA $D840,Y C0/225F: BD 00 C4 LDA $C400,X C0/2262: 99 42 D8 STA $D842,Y C0/2265: BD 00 C2 LDA $C200,X C0/2268: 99 80 D8 STA $D880,Y C0/226B: BD 00 C6 LDA $C600,X C0/226E: 99 82 D8 STA $D882,Y C0/2271: 7B TDC C0/2272: E2 21 SEP #$21 C0/2274: 98 TYA C0/2275: 69 03 ADC #$03 C0/2277: 29 3F AND #$3F C0/2279: A8 TAY C0/227A: A5 2B LDA $2B C0/227C: 1A INC C0/227D: 25 87 AND $87 C0/227F: 85 2B STA $2B C0/2281: C6 1B DEC $1B C0/2283: D0 CC BNE $2251 C0/2285: 80 30 BRA $22B7 C0/2287: 0A ASL C0/2288: AA TAX C0/2289: C2 20 REP #$20 C0/228B: BD 00 C1 LDA $C100,X C0/228E: 99 40 D8 STA $D840,Y C0/2291: BD 00 C5 LDA $C500,X C0/2294: 99 42 D8 STA $D842,Y C0/2297: BD 00 C3 LDA $C300,X C0/229A: 99 80 D8 STA $D880,Y C0/229D: BD 00 C7 LDA $C700,X C0/22A0: 99 82 D8 STA $D882,Y C0/22A3: 7B TDC C0/22A4: E2 21 SEP #$21 C0/22A6: 98 TYA C0/22A7: 69 03 ADC #$03 C0/22A9: 29 3F AND #$3F C0/22AB: A8 TAY C0/22AC: A5 2B LDA $2B C0/22AE: 1A INC C0/22AF: 25 87 AND $87 C0/22B1: 85 2B STA $2B C0/22B3: C6 1B DEC $1B C0/22B5: D0 9A BNE $2251 C0/22B7: C2 10 REP #$10 C0/22B9: A9 00 LDA #$00 C0/22BB: 48 PHA C0/22BC: AB PLB C0/22BD: A5 2D LDA $2D C0/22BF: 29 0F AND #$0F C0/22C1: 0A ASL C0/22C2: 85 93 STA $93 C0/22C4: 1A INC C0/22C5: 85 95 STA $95 C0/22C7: AD 8C 05 LDA $058C C0/22CA: 85 94 STA $94 C0/22CC: 85 96 STA $96 C0/22CE: 60 RTS ; [ Update BG2 for Scrolling (vertical) ] C0/22CF: C2 21 REP #$21 C0/22D1: A5 79 LDA $79 C0/22D3: 6D 4D 05 ADC $054D C0/22D6: 30 0B BMI $22E3 C0/22D8: 7B TDC C0/22D9: E2 20 SEP #$20 C0/22DB: AD 44 05 LDA $0544 C0/22DE: 18 CLC C0/22DF: 69 08 ADC #$08 C0/22E1: 80 09 BRA $22EC C0/22E3: 7B TDC C0/22E4: E2 20 SEP #$20 C0/22E6: AD 44 05 LDA $0544 C0/22E9: 38 SEC C0/22EA: E9 07 SBC #$07 C0/22EC: 25 89 AND $89 C0/22EE: 18 CLC C0/22EF: 69 40 ADC #$40 C0/22F1: 85 2B STA $2B C0/22F3: 29 0F AND #$0F C0/22F5: C2 20 REP #$20 C0/22F7: EB XBA C0/22F8: 4A LSR C0/22F9: 4A LSR C0/22FA: 18 CLC C0/22FB: 6D 8D 05 ADC $058D C0/22FE: 85 97 STA $97 C0/2300: 7B TDC C0/2301: E2 20 SEP #$20 C0/2303: AD 43 05 LDA $0543 C0/2306: 38 SEC C0/2307: E9 07 SBC #$07 C0/2309: 25 88 AND $88 C0/230B: 85 2A STA $2A C0/230D: A5 2A LDA $2A C0/230F: 29 0F AND #$0F C0/2311: 0A ASL C0/2312: 0A ASL C0/2313: A8 TAY C0/2314: E2 10 SEP #$10 C0/2316: A9 10 LDA #$10 C0/2318: 85 1B STA $1B C0/231A: A9 7F LDA #$7F C0/231C: 48 PHA C0/231D: AB PLB C0/231E: B2 2A LDA ($2A) C0/2320: 30 32 BMI $2354 C0/2322: 0A ASL C0/2323: AA TAX C0/2324: C2 20 REP #$20 C0/2326: BD 00 C8 LDA $C800,X C0/2329: 99 C0 E1 STA $E1C0,Y C0/232C: BD 00 CA LDA $CA00,X C0/232F: 99 C2 E1 STA $E1C2,Y C0/2332: BD 00 CC LDA $CC00,X C0/2335: 99 00 E2 STA $E200,Y C0/2338: BD 00 CE LDA $CE00,X C0/233B: 99 02 E2 STA $E202,Y C0/233E: 7B TDC C0/233F: E2 21 SEP #$21 C0/2341: 98 TYA C0/2342: 69 03 ADC #$03 C0/2344: 29 BF AND #$BF C0/2346: A8 TAY C0/2347: A5 2A LDA $2A C0/2349: 1A INC C0/234A: 25 88 AND $88 C0/234C: 85 2A STA $2A C0/234E: C6 1B DEC $1B C0/2350: D0 CC BNE $231E C0/2352: 80 30 BRA $2384 C0/2354: 0A ASL C0/2355: AA TAX C0/2356: C2 20 REP #$20 C0/2358: BD 00 C9 LDA $C900,X C0/235B: 99 C0 E1 STA $E1C0,Y C0/235E: BD 00 CB LDA $CB00,X C0/2361: 99 C2 E1 STA $E1C2,Y C0/2364: BD 00 CD LDA $CD00,X C0/2367: 99 00 E2 STA $E200,Y C0/236A: BD 00 CF LDA $CF00,X C0/236D: 99 02 E2 STA $E202,Y C0/2370: 7B TDC C0/2371: E2 21 SEP #$21 C0/2373: 98 TYA C0/2374: 69 03 ADC #$03 C0/2376: 29 BF AND #$BF C0/2378: A8 TAY C0/2379: A5 2A LDA $2A C0/237B: 1A INC C0/237C: 25 88 AND $88 C0/237E: 85 2A STA $2A C0/2380: C6 1B DEC $1B C0/2382: D0 9A BNE $231E C0/2384: A9 00 LDA #$00 C0/2386: 48 PHA C0/2387: AB PLB C0/2388: C2 10 REP #$10 C0/238A: 60 RTS ; [ Update BG2 for Scrolling (horizontal) ] C0/238B: C2 21 REP #$21 C0/238D: A5 77 LDA $77 C0/238F: 6D 4B 05 ADC $054B C0/2392: 30 0B BMI $239F C0/2394: 7B TDC C0/2395: E2 20 SEP #$20 C0/2397: AD 43 05 LDA $0543 C0/239A: 18 CLC C0/239B: 69 08 ADC #$08 C0/239D: 80 09 BRA $23A8 C0/239F: 7B TDC C0/23A0: E2 20 SEP #$20 C0/23A2: AD 43 05 LDA $0543 C0/23A5: 38 SEC C0/23A6: E9 07 SBC #$07 C0/23A8: 25 88 AND $88 C0/23AA: 85 2A STA $2A C0/23AC: AD 44 05 LDA $0544 C0/23AF: 38 SEC C0/23B0: E9 07 SBC #$07 C0/23B2: 25 89 AND $89 C0/23B4: 18 CLC C0/23B5: 69 40 ADC #$40 C0/23B7: 85 2B STA $2B C0/23B9: 29 0F AND #$0F C0/23BB: 0A ASL C0/23BC: 0A ASL C0/23BD: A8 TAY C0/23BE: A6 2A LDX $2A C0/23C0: 86 2D STX $2D C0/23C2: E2 10 SEP #$10 C0/23C4: A9 10 LDA #$10 C0/23C6: 85 1B STA $1B C0/23C8: A9 7F LDA #$7F C0/23CA: 48 PHA C0/23CB: AB PLB C0/23CC: B2 2A LDA ($2A) C0/23CE: 30 34 BMI $2404 C0/23D0: 0A ASL C0/23D1: AA TAX C0/23D2: C2 20 REP #$20 C0/23D4: BD 00 C8 LDA $C800,X C0/23D7: 99 C0 D8 STA $D8C0,Y C0/23DA: BD 00 CC LDA $CC00,X C0/23DD: 99 C2 D8 STA $D8C2,Y C0/23E0: BD 00 CA LDA $CA00,X C0/23E3: 99 00 D9 STA $D900,Y C0/23E6: BD 00 CE LDA $CE00,X C0/23E9: 99 02 D9 STA $D902,Y C0/23EC: 7B TDC C0/23ED: E2 21 SEP #$21 C0/23EF: 98 TYA C0/23F0: 69 03 ADC #$03 C0/23F2: 29 3F AND #$3F C0/23F4: A8 TAY C0/23F5: A5 2B LDA $2B C0/23F7: 1A INC C0/23F8: 25 89 AND $89 C0/23FA: 09 40 ORA #$40 C0/23FC: 85 2B STA $2B C0/23FE: C6 1B DEC $1B C0/2400: D0 CA BNE $23CC C0/2402: 80 32 BRA $2436 C0/2404: 0A ASL C0/2405: AA TAX C0/2406: C2 20 REP #$20 C0/2408: BD 00 C9 LDA $C900,X C0/240B: 99 C0 D8 STA $D8C0,Y C0/240E: BD 00 CD LDA $CD00,X C0/2411: 99 C2 D8 STA $D8C2,Y C0/2414: BD 00 CB LDA $CB00,X C0/2417: 99 00 D9 STA $D900,Y C0/241A: BD 00 CF LDA $CF00,X C0/241D: 99 02 D9 STA $D902,Y C0/2420: 7B TDC C0/2421: E2 21 SEP #$21 C0/2423: 98 TYA C0/2424: 69 03 ADC #$03 C0/2426: 29 3F AND #$3F C0/2428: A8 TAY C0/2429: A5 2B LDA $2B C0/242B: 1A INC C0/242C: 25 89 AND $89 C0/242E: 09 40 ORA #$40 C0/2430: 85 2B STA $2B C0/2432: C6 1B DEC $1B C0/2434: D0 96 BNE $23CC C0/2436: C2 10 REP #$10 C0/2438: A9 00 LDA #$00 C0/243A: 48 PHA C0/243B: AB PLB C0/243C: A5 2D LDA $2D C0/243E: 29 0F AND #$0F C0/2440: 0A ASL C0/2441: 85 99 STA $99 C0/2443: 1A INC C0/2444: 85 9B STA $9B C0/2446: AD 8E 05 LDA $058E C0/2449: 85 9A STA $9A C0/244B: 85 9C STA $9C C0/244D: 60 RTS ; [ Update BG3 for Scrolling (vertical) ] C0/244E: C2 21 REP #$21 C0/2450: A5 7D LDA $7D C0/2452: 6D 51 05 ADC $0551 C0/2455: 30 0F BMI $2466 C0/2457: 7B TDC C0/2458: E2 20 SEP #$20 C0/245A: AD 46 05 LDA $0546 C0/245D: 18 CLC C0/245E: 69 08 ADC #$08 C0/2460: 25 8B AND $8B C0/2462: 85 2B STA $2B C0/2464: 80 0D BRA $2473 C0/2466: 7B TDC C0/2467: E2 20 SEP #$20 C0/2469: AD 46 05 LDA $0546 C0/246C: 38 SEC C0/246D: E9 07 SBC #$07 C0/246F: 25 8B AND $8B C0/2471: 85 2B STA $2B C0/2473: AD 45 05 LDA $0545 C0/2476: 38 SEC C0/2477: E9 07 SBC #$07 C0/2479: 25 8A AND $8A C0/247B: 85 2A STA $2A C0/247D: A5 2B LDA $2B C0/247F: 29 0F AND #$0F C0/2481: C2 20 REP #$20 C0/2483: EB XBA C0/2484: 4A LSR C0/2485: 4A LSR C0/2486: 18 CLC C0/2487: 6D 8F 05 ADC $058F C0/248A: 85 9D STA $9D C0/248C: 7B TDC C0/248D: E2 20 SEP #$20 C0/248F: A5 2A LDA $2A C0/2491: 29 0F AND #$0F C0/2493: 0A ASL C0/2494: 0A ASL C0/2495: A8 TAY C0/2496: 20 9A 24 JSR $249A C0/2499: 60 RTS ; [ Update Two Rows of BG3 Map Data ] ; common code for bg3 vertical scrolling and bg3 map changes ; +$2A = pointer to source bg3 map data (+$7F8000) ; Y = pointer to destination in bg3 map (+$7FE9C0) C0/249A: AD 22 05 LDA $0522 ; bg3 foreground C0/249D: 29 80 AND #$80 C0/249F: 4A LSR C0/24A0: 4A LSR C0/24A1: 85 36 STA $36 ; +$36 = tile flags C0/24A3: 64 37 STZ $37 C0/24A5: A6 2A LDX $2A C0/24A7: 86 2D STX $2D C0/24A9: A9 10 LDA #$10 C0/24AB: 85 1B STA $1B ; $1B = tile counter (16) C0/24AD: A9 7F LDA #$7F C0/24AF: 48 PHA C0/24B0: AB PLB C0/24B1: A6 2A LDX $2A C0/24B3: BD 00 80 LDA $8000,X C0/24B6: C2 20 REP #$20 C0/24B8: 85 20 STA $20 C0/24BA: 29 3F 00 AND #$003F ; tile index C0/24BD: AA TAX C0/24BE: A5 20 LDA $20 C0/24C0: 29 C0 00 AND #$00C0 ; x/y flip C0/24C3: 05 36 ORA $36 C0/24C5: 85 20 STA $20 ; $20 = tile flags (w/ x/y flip) C0/24C7: BD 00 D0 LDA $D000,X ; bg3 tile formation C0/24CA: 29 1C 00 AND #$001C ; palette C0/24CD: 05 20 ORA $20 C0/24CF: EB XBA C0/24D0: 85 22 STA $22 ; +$22 = tile flags (w/ palette) C0/24D2: 29 00 C0 AND #$C000 C0/24D5: C9 00 40 CMP #$4000 ; branch if horizontal flip only C0/24D8: F0 20 BEQ $24FA C0/24DA: C9 00 80 CMP #$8000 ; branch if vertical flip only C0/24DD: F0 31 BEQ $2510 C0/24DF: C9 00 C0 CMP #$C000 ; branch if horizontal and vertical flip C0/24E2: F0 42 BEQ $2526 C0/24E4: 8A TXA C0/24E5: 0A ASL C0/24E6: 0A ASL C0/24E7: 05 22 ORA $22 C0/24E9: 99 C0 E9 STA $E9C0,Y ; no flip C0/24EC: 1A INC C0/24ED: 99 C2 E9 STA $E9C2,Y C0/24F0: 1A INC C0/24F1: 99 00 EA STA $EA00,Y C0/24F4: 1A INC C0/24F5: 99 02 EA STA $EA02,Y C0/24F8: 80 40 BRA $253A C0/24FA: 8A TXA C0/24FB: 0A ASL C0/24FC: 0A ASL C0/24FD: 05 22 ORA $22 C0/24FF: 99 C2 E9 STA $E9C2,Y ; horizontal flip C0/2502: 1A INC C0/2503: 99 C0 E9 STA $E9C0,Y C0/2506: 1A INC C0/2507: 99 02 EA STA $EA02,Y C0/250A: 1A INC C0/250B: 99 00 EA STA $EA00,Y C0/250E: 80 2A BRA $253A C0/2510: 8A TXA C0/2511: 0A ASL C0/2512: 0A ASL C0/2513: 05 22 ORA $22 C0/2515: 99 00 EA STA $EA00,Y ; vertical flip C0/2518: 1A INC C0/2519: 99 02 EA STA $EA02,Y C0/251C: 1A INC C0/251D: 99 C0 E9 STA $E9C0,Y C0/2520: 1A INC C0/2521: 99 C2 E9 STA $E9C2,Y C0/2524: 80 14 BRA $253A C0/2526: 8A TXA C0/2527: 0A ASL C0/2528: 0A ASL C0/2529: 05 22 ORA $22 C0/252B: 99 02 EA STA $EA02,Y ; horizontal and vertical flip C0/252E: 1A INC C0/252F: 99 00 EA STA $EA00,Y C0/2532: 1A INC C0/2533: 99 C2 E9 STA $E9C2,Y C0/2536: 1A INC C0/2537: 99 C0 E9 STA $E9C0,Y C0/253A: 98 TYA ; next tile C0/253B: 1A INC C0/253C: 1A INC C0/253D: 1A INC C0/253E: 1A INC C0/253F: 29 BF FF AND #$FFBF ; C0/2542: A8 TAY C0/2543: 7B TDC C0/2544: E2 20 SEP #$20 C0/2546: A5 2A LDA $2A C0/2548: 1A INC C0/2549: 25 8A AND $8A C0/254B: 85 2A STA $2A C0/254D: C6 1B DEC $1B C0/254F: F0 03 BEQ $2554 C0/2551: 4C B1 24 JMP $24B1 C0/2554: A9 00 LDA #$00 C0/2556: 48 PHA C0/2557: AB PLB C0/2558: 60 RTS ; [ Update BG3 for Scrolling (horizontal) ] C0/2559: C2 21 REP #$21 C0/255B: A5 7B LDA $7B C0/255D: 6D 4F 05 ADC $054F C0/2560: 30 0F BMI $2571 C0/2562: 7B TDC C0/2563: E2 20 SEP #$20 C0/2565: AD 45 05 LDA $0545 C0/2568: 18 CLC C0/2569: 69 08 ADC #$08 C0/256B: 25 8A AND $8A C0/256D: 85 2A STA $2A C0/256F: 80 0D BRA $257E C0/2571: 7B TDC C0/2572: E2 20 SEP #$20 C0/2574: AD 45 05 LDA $0545 C0/2577: 38 SEC C0/2578: E9 07 SBC #$07 C0/257A: 25 8A AND $8A C0/257C: 85 2A STA $2A C0/257E: AD 46 05 LDA $0546 C0/2581: 38 SEC C0/2582: E9 07 SBC #$07 C0/2584: 25 8B AND $8B C0/2586: 85 2B STA $2B C0/2588: 29 0F AND #$0F C0/258A: 0A ASL C0/258B: 0A ASL C0/258C: A8 TAY C0/258D: AD 22 05 LDA $0522 C0/2590: 29 80 AND #$80 C0/2592: 4A LSR C0/2593: 4A LSR C0/2594: 85 36 STA $36 C0/2596: 64 37 STZ $37 C0/2598: A6 2A LDX $2A C0/259A: 86 2D STX $2D C0/259C: A9 10 LDA #$10 C0/259E: 85 1B STA $1B C0/25A0: A9 7F LDA #$7F C0/25A2: 48 PHA C0/25A3: AB PLB C0/25A4: A6 2A LDX $2A C0/25A6: BD 00 80 LDA $8000,X C0/25A9: C2 20 REP #$20 C0/25AB: 85 20 STA $20 C0/25AD: 29 3F 00 AND #$003F C0/25B0: AA TAX C0/25B1: A5 20 LDA $20 C0/25B3: 29 C0 00 AND #$00C0 C0/25B6: 05 36 ORA $36 C0/25B8: 85 20 STA $20 C0/25BA: BD 00 D0 LDA $D000,X C0/25BD: 29 1C 00 AND #$001C C0/25C0: 05 20 ORA $20 C0/25C2: EB XBA C0/25C3: 85 22 STA $22 C0/25C5: 29 00 C0 AND #$C000 C0/25C8: C9 00 40 CMP #$4000 C0/25CB: F0 20 BEQ $25ED C0/25CD: C9 00 80 CMP #$8000 C0/25D0: F0 31 BEQ $2603 C0/25D2: C9 00 C0 CMP #$C000 C0/25D5: F0 42 BEQ $2619 C0/25D7: 8A TXA C0/25D8: 0A ASL C0/25D9: 0A ASL C0/25DA: 05 22 ORA $22 C0/25DC: 99 40 D9 STA $D940,Y C0/25DF: 1A INC C0/25E0: 99 80 D9 STA $D980,Y C0/25E3: 1A INC C0/25E4: 99 42 D9 STA $D942,Y C0/25E7: 1A INC C0/25E8: 99 82 D9 STA $D982,Y C0/25EB: 80 40 BRA $262D C0/25ED: 8A TXA C0/25EE: 0A ASL C0/25EF: 0A ASL C0/25F0: 05 22 ORA $22 C0/25F2: 99 80 D9 STA $D980,Y C0/25F5: 1A INC C0/25F6: 99 40 D9 STA $D940,Y C0/25F9: 1A INC C0/25FA: 99 82 D9 STA $D982,Y C0/25FD: 1A INC C0/25FE: 99 42 D9 STA $D942,Y C0/2601: 80 2A BRA $262D C0/2603: 8A TXA C0/2604: 0A ASL C0/2605: 0A ASL C0/2606: 05 22 ORA $22 C0/2608: 99 42 D9 STA $D942,Y C0/260B: 1A INC C0/260C: 99 82 D9 STA $D982,Y C0/260F: 1A INC C0/2610: 99 40 D9 STA $D940,Y C0/2613: 1A INC C0/2614: 99 80 D9 STA $D980,Y C0/2617: 80 14 BRA $262D C0/2619: 8A TXA C0/261A: 0A ASL C0/261B: 0A ASL C0/261C: 05 22 ORA $22 C0/261E: 99 82 D9 STA $D982,Y C0/2621: 1A INC C0/2622: 99 42 D9 STA $D942,Y C0/2625: 1A INC C0/2626: 99 80 D9 STA $D980,Y C0/2629: 1A INC C0/262A: 99 40 D9 STA $D940,Y C0/262D: 7B TDC C0/262E: E2 20 SEP #$20 C0/2630: A5 2B LDA $2B C0/2632: 1A INC C0/2633: 25 8B AND $8B C0/2635: 85 2B STA $2B C0/2637: 98 TYA C0/2638: 1A INC C0/2639: 1A INC C0/263A: 1A INC C0/263B: 1A INC C0/263C: 29 3F AND #$3F C0/263E: A8 TAY C0/263F: C6 1B DEC $1B C0/2641: F0 03 BEQ $2646 C0/2643: 4C A4 25 JMP $25A4 C0/2646: A9 00 LDA #$00 C0/2648: 48 PHA C0/2649: AB PLB C0/264A: A5 2D LDA $2D C0/264C: 29 0F AND #$0F C0/264E: 0A ASL C0/264F: 85 9F STA $9F C0/2651: 1A INC C0/2652: 85 A1 STA $A1 C0/2654: AD 90 05 LDA $0590 C0/2657: 85 A0 STA $A0 C0/2659: 85 A2 STA $A2 C0/265B: 60 RTS ; [ Load Map Palette ] trans_map_col: C0/265C: AD 39 05 LDA $0539 C0/265F: C2 20 REP #$20 C0/2661: EB XBA C0/2662: AA TAX C0/2663: 7B TDC C0/2664: E2 20 SEP #$20 C0/2666: A9 7E LDA #$7E C0/2668: 48 PHA C0/2669: AB PLB C0/266A: A4 00 LDY $00 C0/266C: BF 80 C4 ED LDA $EDC480,X C0/2670: 99 00 72 STA $7200,Y C0/2673: 99 00 74 STA $7400,Y C0/2676: E8 INX C0/2677: C8 INY C0/2678: C0 00 01 CPY #$0100 C0/267B: D0 EF BNE $266C C0/267D: 9C 00 72 STZ $7200 C0/2680: 9C 01 72 STZ $7201 C0/2683: 9C 00 74 STZ $7400 C0/2686: 9C 01 74 STZ $7401 C0/2689: 7B TDC C0/268A: 48 PHA C0/268B: AB PLB C0/268C: 60 RTS ; [ Load BG1/BG2 Graphics ] ; each tileset copies $2000 bytes, but they overlap in VRAM, ; so only the first $1000 bytes is available for tilesets 2-4 trans_map_cgx: C0/268D: A0 00 00 LDY #$0000 ; first tileset, $2000 bytes -> VRAM $0000 C0/2690: AD 27 05 LDA $0527 C0/2693: 29 7F AND #$7F C0/2695: 20 D8 26 JSR $26D8 C0/2698: A0 00 10 LDY #$1000 ; second tileset, $1000 bytes -> VRAM $1000 C0/269B: C2 20 REP #$20 C0/269D: AD 27 05 LDA $0527 C0/26A0: 0A ASL C0/26A1: 29 00 7F AND #$7F00 C0/26A4: EB XBA C0/26A5: E2 20 SEP #$20 C0/26A7: 20 D8 26 JSR $26D8 C0/26AA: A0 00 18 LDY #$1800 ; third tileset, $1000 bytes -> VRAM $1800 C0/26AD: C2 20 REP #$20 C0/26AF: AD 28 05 LDA $0528 C0/26B2: 0A ASL C0/26B3: 0A ASL C0/26B4: 29 00 7F AND #$7F00 C0/26B7: EB XBA C0/26B8: E2 20 SEP #$20 C0/26BA: 85 1B STA $1B ; $1B = third tileset index C0/26BC: 20 D8 26 JSR $26D8 C0/26BF: A0 00 20 LDY #$2000 ; fourth tileset, $1000 bytes -> VRAM $2000 C0/26C2: C2 20 REP #$20 C0/26C4: AD 29 05 LDA $0529 C0/26C7: 0A ASL C0/26C8: 0A ASL C0/26C9: 0A ASL C0/26CA: 29 00 7F AND #$7F00 C0/26CD: EB XBA C0/26CE: E2 20 SEP #$20 C0/26D0: C5 1B CMP $1B ; skip tileset 4 if it's the same as tileset 3 C0/26D2: F0 03 BEQ $26D7 C0/26D4: 20 D8 26 JSR $26D8 C0/26D7: 60 RTS ; [ Copy BG1/BG2 Graphics to VRAM ] ; A = tileset index ; Y = VRAM destination address trans_map_cgx_sub: C0/26D8: 8C 16 21 STY $2116 C0/26DB: 85 1A STA $1A C0/26DD: 0A ASL C0/26DE: 18 CLC C0/26DF: 65 1A ADC $1A C0/26E1: AA TAX C0/26E2: 9C 0B 42 STZ $420B C0/26E5: A9 80 LDA #$80 C0/26E7: 8D 15 21 STA $2115 C0/26EA: A9 41 LDA #$41 C0/26EC: 8D 00 43 STA $4300 C0/26EF: A9 18 LDA #$18 C0/26F1: 8D 01 43 STA $4301 C0/26F4: C2 20 REP #$20 C0/26F6: BF 00 DA DF LDA $DFDA00,X ; ++$2A = pointer to tileset C0/26FA: 18 CLC C0/26FB: 69 00 DB ADC #$DB00 C0/26FE: 85 2A STA $2A C0/2700: 8D 02 43 STA $4302 C0/2703: E2 20 SEP #$20 C0/2705: BF 02 DA DF LDA $DFDA02,X C0/2709: 69 DF ADC #$DF C0/270B: 85 2C STA $2C C0/270D: 8D 04 43 STA $4304 C0/2710: 8D 07 43 STA $4307 C0/2713: C2 20 REP #$20 C0/2715: A5 2A LDA $2A C0/2717: F0 37 BEQ $2750 C0/2719: 7B TDC ; check if tileset spans two banks C0/271A: 38 SEC C0/271B: E5 2A SBC $2A C0/271D: C9 00 20 CMP #$2000 C0/2720: B0 2E BCS $2750 C0/2722: 8D 05 43 STA $4305 ; size in first bank C0/2725: 85 1E STA $1E C0/2727: A9 00 20 LDA #$2000 C0/272A: 38 SEC C0/272B: E5 1E SBC $1E ; +$1E = remainder of tileset in the next bank C0/272D: 85 1E STA $1E C0/272F: 7B TDC C0/2730: E2 20 SEP #$20 C0/2732: A9 01 LDA #$01 ; first bank DMA C0/2734: 8D 0B 42 STA $420B C0/2737: A5 2C LDA $2C ; increment bank C0/2739: 1A INC C0/273A: 8D 04 43 STA $4304 C0/273D: 8D 07 43 STA $4307 C0/2740: A6 00 LDX $00 C0/2742: 8E 02 43 STX $4302 C0/2745: A6 1E LDX $1E ; size is remainder of data C0/2747: 8E 05 43 STX $4305 C0/274A: A9 01 LDA #$01 ; second bank DMA C0/274C: 8D 0B 42 STA $420B C0/274F: 60 RTS C0/2750: 7B TDC ; no overflow, only need one DMA C0/2751: E2 20 SEP #$20 C0/2753: A2 00 20 LDX #$2000 ; full size $2000 C0/2756: 8E 05 43 STX $4305 C0/2759: A9 01 LDA #$01 C0/275B: 8D 0B 42 STA $420B C0/275E: 60 RTS ; [ Load BG3 Graphics ] trans_map_cgx3: C0/275F: C2 20 REP #$20 C0/2761: AD 2A 05 LDA $052A C0/2764: 4A LSR C0/2765: 4A LSR C0/2766: 4A LSR C0/2767: 4A LSR C0/2768: 29 3F 00 AND #$003F C0/276B: E2 20 SEP #$20 C0/276D: 85 1A STA $1A C0/276F: 0A ASL C0/2770: 18 CLC C0/2771: 65 1A ADC $1A C0/2773: AA TAX C0/2774: C2 21 REP #$21 C0/2776: BF 60 CD E6 LDA $E6CD60,X C0/277A: 69 80 87 ADC #$8780 C0/277D: 85 F3 STA $F3 C0/277F: 7B TDC C0/2780: E2 20 SEP #$20 C0/2782: A9 E6 LDA #$E6 C0/2784: 85 F5 STA $F5 C0/2786: A2 40 D0 LDX #$D040 C0/2789: 86 F6 STX $F6 C0/278B: A9 7F LDA #$7F C0/278D: 85 F8 STA $F8 C0/278F: 22 6C 04 C0 JSL $C0046C ; decompress C0/2793: A9 7F LDA #$7F C0/2795: 48 PHA C0/2796: AB PLB C0/2797: A6 00 LDX $00 C0/2799: BD 40 D0 LDA $D040,X C0/279C: 9D 00 D0 STA $D000,X C0/279F: E8 INX C0/27A0: E0 40 00 CPX #$0040 C0/27A3: D0 F4 BNE $2799 C0/27A5: 7B TDC C0/27A6: 48 PHA C0/27A7: AB PLB C0/27A8: 9C 0B 42 STZ $420B C0/27AB: A9 80 LDA #$80 C0/27AD: 8D 15 21 STA $2115 C0/27B0: A2 00 30 LDX #$3000 ; destination = $3000 (vram) C0/27B3: 8E 16 21 STX $2116 C0/27B6: A9 41 LDA #$41 C0/27B8: 8D 00 43 STA $4300 C0/27BB: A9 18 LDA #$18 C0/27BD: 8D 01 43 STA $4301 C0/27C0: A2 80 D0 LDX #$D080 ; source = $7FD080 C0/27C3: 8E 02 43 STX $4302 C0/27C6: A9 7F LDA #$7F C0/27C8: 8D 04 43 STA $4304 C0/27CB: 8D 07 43 STA $4307 C0/27CE: A2 00 10 LDX #$1000 ; size = $1000 C0/27D1: 8E 05 43 STX $4305 C0/27D4: A9 01 LDA #$01 C0/27D6: 8D 0B 42 STA $420B C0/27D9: 60 RTS ; [ Load Tile Formation ] trans_map_spn: C0/27DA: C2 20 REP #$20 C0/27DC: AD 2B 05 LDA $052B C0/27DF: 4A LSR C0/27E0: 4A LSR C0/27E1: 29 7F 00 AND #$007F C0/27E4: E2 20 SEP #$20 C0/27E6: 85 1A STA $1A C0/27E8: 0A ASL C0/27E9: 18 CLC C0/27EA: 65 1A ADC $1A C0/27EC: AA TAX C0/27ED: C2 21 REP #$21 C0/27EF: BF 00 BA DF LDA $DFBA00,X ; pointers to tilesets C0/27F3: 69 00 00 ADC #$0000 C0/27F6: 85 F3 STA $F3 C0/27F8: 7B TDC C0/27F9: E2 20 SEP #$20 C0/27FB: BF 02 BA DF LDA $DFBA02,X ; bank byte C0/27FF: 69 DE ADC #$DE C0/2801: 85 F5 STA $F5 C0/2803: A2 40 D0 LDX #$D040 C0/2806: 86 F6 STX $F6 C0/2808: A9 7F LDA #$7F C0/280A: 85 F8 STA $F8 C0/280C: 22 6C 04 C0 JSL $C0046C ; decompress C0/2810: A2 00 C0 LDX #$C000 C0/2813: 8E 81 21 STX $2181 C0/2816: A9 7F LDA #$7F C0/2818: 8D 83 21 STA $2183 C0/281B: A6 00 LDX $00 C0/281D: BF 40 D0 7F LDA $7FD040,X C0/2821: 8D 80 21 STA $2180 C0/2824: BF 40 D4 7F LDA $7FD440,X C0/2828: 8D 80 21 STA $2180 C0/282B: E8 INX C0/282C: E0 00 04 CPX #$0400 C0/282F: D0 EC BNE $281D C0/2831: AD 2C 05 LDA $052C C0/2834: 4A LSR C0/2835: 29 7F AND #$7F C0/2837: 85 1A STA $1A C0/2839: 0A ASL C0/283A: 18 CLC C0/283B: 65 1A ADC $1A C0/283D: AA TAX C0/283E: C2 21 REP #$21 C0/2840: BF 00 BA DF LDA $DFBA00,X C0/2844: 69 00 00 ADC #$0000 C0/2847: 85 F3 STA $F3 C0/2849: 7B TDC C0/284A: E2 20 SEP #$20 C0/284C: BF 02 BA DF LDA $DFBA02,X C0/2850: 69 DE ADC #$DE C0/2852: 85 F5 STA $F5 C0/2854: A2 40 D0 LDX #$D040 C0/2857: 86 F6 STX $F6 C0/2859: A9 7F LDA #$7F C0/285B: 85 F8 STA $F8 C0/285D: 22 6C 04 C0 JSL $C0046C ; decompress C0/2861: A2 00 C8 LDX #$C800 C0/2864: 8E 81 21 STX $2181 C0/2867: A9 7F LDA #$7F C0/2869: 8D 83 21 STA $2183 C0/286C: A6 00 LDX $00 C0/286E: BF 40 D0 7F LDA $7FD040,X C0/2872: 8D 80 21 STA $2180 C0/2875: BF 40 D4 7F LDA $7FD440,X C0/2879: 8D 80 21 STA $2180 C0/287C: E8 INX C0/287D: E0 00 04 CPX #$0400 C0/2880: D0 EC BNE $286E C0/2882: 60 RTS ; [ Load Map Data ] extract_map: C0/2883: C2 20 REP #$20 C0/2885: AD 2D 05 LDA $052D ; bg1 layout C0/2888: 29 FF 03 AND #$03FF C0/288B: 85 1E STA $1E C0/288D: 0A ASL C0/288E: 18 CLC C0/288F: 65 1E ADC $1E C0/2891: AA TAX C0/2892: BF 90 CD D9 LDA $D9CD90,X C0/2896: 18 CLC C0/2897: 69 B0 D1 ADC #$D1B0 C0/289A: 85 F3 STA $F3 C0/289C: 7B TDC C0/289D: E2 20 SEP #$20 C0/289F: BF 92 CD D9 LDA $D9CD92,X C0/28A3: 69 D9 ADC #$D9 C0/28A5: 85 F5 STA $F5 C0/28A7: E4 00 CPX $00 C0/28A9: F0 17 BEQ $28C2 ; branch if layout index is zero C0/28AB: A2 40 D0 LDX #$D040 C0/28AE: 86 F6 STX $F6 C0/28B0: A9 7F LDA #$7F C0/28B2: 85 F8 STA $F8 C0/28B4: 22 6C 04 C0 JSL $C0046C ; decompress C0/28B8: A2 00 00 LDX #$0000 C0/28BB: A5 86 LDA $86 C0/28BD: 20 80 29 JSR $2980 C0/28C0: 80 14 BRA $28D6 C0/28C2: A2 00 00 LDX #$0000 C0/28C5: 8E 81 21 STX $2181 C0/28C8: A9 7F LDA #$7F C0/28CA: 8D 83 21 STA $2183 C0/28CD: A2 00 40 LDX #$4000 C0/28D0: 9C 80 21 STZ $2180 C0/28D3: CA DEX C0/28D4: D0 FA BNE $28D0 C0/28D6: C2 20 REP #$20 C0/28D8: AD 2E 05 LDA $052E ; bg2 layout C0/28DB: 4A LSR C0/28DC: 29 FE 07 AND #$07FE C0/28DF: 85 1E STA $1E C0/28E1: 4A LSR C0/28E2: 18 CLC C0/28E3: 65 1E ADC $1E C0/28E5: AA TAX C0/28E6: BF 90 CD D9 LDA $D9CD90,X C0/28EA: 18 CLC C0/28EB: 69 B0 D1 ADC #$D1B0 C0/28EE: 85 F3 STA $F3 C0/28F0: 7B TDC C0/28F1: E2 20 SEP #$20 C0/28F3: BF 92 CD D9 LDA $D9CD92,X C0/28F7: 69 D9 ADC #$D9 C0/28F9: 85 F5 STA $F5 C0/28FB: E4 00 CPX $00 C0/28FD: F0 17 BEQ $2916 ; branch if layout index is zero C0/28FF: A2 40 D0 LDX #$D040 C0/2902: 86 F6 STX $F6 C0/2904: A9 7F LDA #$7F C0/2906: 85 F8 STA $F8 C0/2908: 22 6C 04 C0 JSL $C0046C ; decompress C0/290C: A2 00 40 LDX #$4000 C0/290F: A5 88 LDA $88 C0/2911: 20 80 29 JSR $2980 C0/2914: 80 14 BRA $292A C0/2916: A2 00 40 LDX #$4000 C0/2919: 8E 81 21 STX $2181 C0/291C: A9 7F LDA #$7F C0/291E: 8D 83 21 STA $2183 C0/2921: A2 00 40 LDX #$4000 C0/2924: 9C 80 21 STZ $2180 C0/2927: CA DEX C0/2928: D0 FA BNE $2924 C0/292A: C2 20 REP #$20 C0/292C: AD 2F 05 LDA $052F ; bg3 layout C0/292F: 4A LSR C0/2930: 4A LSR C0/2931: 4A LSR C0/2932: 29 FE 07 AND #$07FE C0/2935: 85 1E STA $1E C0/2937: 4A LSR C0/2938: 18 CLC C0/2939: 65 1E ADC $1E C0/293B: AA TAX C0/293C: BF 90 CD D9 LDA $D9CD90,X C0/2940: 18 CLC C0/2941: 69 B0 D1 ADC #$D1B0 C0/2944: 85 F3 STA $F3 C0/2946: 7B TDC C0/2947: E2 20 SEP #$20 C0/2949: BF 92 CD D9 LDA $D9CD92,X C0/294D: 69 D9 ADC #$D9 C0/294F: 85 F5 STA $F5 C0/2951: E4 00 CPX $00 C0/2953: F0 16 BEQ $296B ; branch if layout index is zero C0/2955: A2 40 D0 LDX #$D040 C0/2958: 86 F6 STX $F6 C0/295A: A9 7F LDA #$7F C0/295C: 85 F8 STA $F8 C0/295E: 22 6C 04 C0 JSL $C0046C ; decompress C0/2962: A2 00 80 LDX #$8000 C0/2965: A5 8A LDA $8A C0/2967: 20 80 29 JSR $2980 C0/296A: 60 RTS C0/296B: A2 00 80 LDX #$8000 C0/296E: 8E 81 21 STX $2181 C0/2971: A9 7F LDA #$7F C0/2973: 8D 83 21 STA $2183 C0/2976: A2 00 40 LDX #$4000 C0/2979: 9C 80 21 STZ $2180 C0/297C: CA DEX C0/297D: D0 FA BNE $2979 C0/297F: 60 RTS ; [ Copy BG Map Data to VRAM ] ; A = horizontal clip C0/2980: C9 0F CMP #$0F C0/2982: D0 03 BNE $2987 C0/2984: 4C F5 29 JMP $29F5 C0/2987: C9 1F CMP #$1F C0/2989: D0 03 BNE $298E C0/298B: 4C CC 29 JMP $29CC C0/298E: C9 3F CMP #$3F C0/2990: D0 03 BNE $2995 C0/2992: 4C A3 29 JMP $29A3 C0/2995: 4C 1E 2A JMP $2A1E C0/2998: A0 40 D0 LDY #$D040 C0/299B: 8C 81 21 STY $2181 C0/299E: A9 7F LDA #$7F C0/29A0: 8D 83 21 STA $2183 C0/29A3: A0 40 D0 LDY #$D040 C0/29A6: 8C 81 21 STY $2181 C0/29A9: A9 7F LDA #$7F C0/29AB: 8D 83 21 STA $2183 C0/29AE: 7B TDC C0/29AF: A0 40 00 LDY #$0040 C0/29B2: AD 80 21 LDA $2180 C0/29B5: 9F 00 00 7F STA $7F0000,X C0/29B9: E8 INX C0/29BA: 88 DEY C0/29BB: D0 F5 BNE $29B2 C0/29BD: C2 21 REP #$21 C0/29BF: 8A TXA C0/29C0: 69 C0 00 ADC #$00C0 C0/29C3: AA TAX C0/29C4: EB XBA C0/29C5: E2 20 SEP #$20 C0/29C7: 29 3F AND #$3F C0/29C9: D0 E3 BNE $29AE C0/29CB: 60 RTS C0/29CC: A0 40 D0 LDY #$D040 C0/29CF: 8C 81 21 STY $2181 C0/29D2: A9 7F LDA #$7F C0/29D4: 8D 83 21 STA $2183 C0/29D7: 7B TDC C0/29D8: A0 20 00 LDY #$0020 C0/29DB: AD 80 21 LDA $2180 C0/29DE: 9F 00 00 7F STA $7F0000,X C0/29E2: E8 INX C0/29E3: 88 DEY C0/29E4: D0 F5 BNE $29DB C0/29E6: C2 21 REP #$21 C0/29E8: 8A TXA C0/29E9: 69 E0 00 ADC #$00E0 C0/29EC: AA TAX C0/29ED: EB XBA C0/29EE: E2 20 SEP #$20 C0/29F0: 29 3F AND #$3F C0/29F2: D0 E3 BNE $29D7 C0/29F4: 60 RTS C0/29F5: A0 40 D0 LDY #$D040 C0/29F8: 8C 81 21 STY $2181 C0/29FB: A9 7F LDA #$7F C0/29FD: 8D 83 21 STA $2183 C0/2A00: 7B TDC C0/2A01: A0 10 00 LDY #$0010 C0/2A04: AD 80 21 LDA $2180 C0/2A07: 9F 00 00 7F STA $7F0000,X C0/2A0B: E8 INX C0/2A0C: 88 DEY C0/2A0D: D0 F5 BNE $2A04 C0/2A0F: C2 21 REP #$21 C0/2A11: 8A TXA C0/2A12: 69 F0 00 ADC #$00F0 C0/2A15: AA TAX C0/2A16: EB XBA C0/2A17: E2 20 SEP #$20 C0/2A19: 29 3F AND #$3F C0/2A1B: D0 E3 BNE $2A00 C0/2A1D: 60 RTS C0/2A1E: A0 40 D0 LDY #$D040 C0/2A21: 8C 81 21 STY $2181 C0/2A24: A9 7F LDA #$7F C0/2A26: 8D 83 21 STA $2183 C0/2A29: 7B TDC C0/2A2A: A0 80 00 LDY #$0080 C0/2A2D: AD 80 21 LDA $2180 C0/2A30: 9F 00 00 7F STA $7F0000,X C0/2A34: E8 INX C0/2A35: 88 DEY C0/2A36: D0 F5 BNE $2A2D C0/2A38: C2 21 REP #$21 C0/2A3A: 8A TXA C0/2A3B: 69 80 00 ADC #$0080 C0/2A3E: AA TAX C0/2A3F: EB XBA C0/2A40: E2 20 SEP #$20 C0/2A42: 29 3F AND #$3F C0/2A44: D0 E3 BNE $2A29 C0/2A46: 60 RTS ; [ Update BG1 Map Data in VRAM (vertical scroll) ] C0/2A47: 9C 0B 42 STZ $420B C0/2A4A: A9 80 LDA #$80 ; VRAM address increments horizontally C0/2A4C: 8D 15 21 STA $2115 C0/2A4F: A6 91 LDX $91 C0/2A51: 8E 16 21 STX $2116 C0/2A54: A9 41 LDA #$41 C0/2A56: 8D 00 43 STA $4300 C0/2A59: A9 18 LDA #$18 C0/2A5B: 8D 01 43 STA $4301 C0/2A5E: A2 C0 D9 LDX #$D9C0 C0/2A61: 8E 02 43 STX $4302 C0/2A64: A9 7F LDA #$7F C0/2A66: 8D 04 43 STA $4304 C0/2A69: 8D 07 43 STA $4307 C0/2A6C: A2 80 00 LDX #$0080 C0/2A6F: 8E 05 43 STX $4305 C0/2A72: A9 01 LDA #$01 C0/2A74: 8D 0B 42 STA $420B C0/2A77: 60 RTS ; [ Update BG1 Map Data in VRAM (horizontal scroll) ] C0/2A78: 9C 0B 42 STZ $420B C0/2A7B: A9 81 LDA #$81 ; VRAM address increments vertically C0/2A7D: 8D 15 21 STA $2115 C0/2A80: A9 18 LDA #$18 C0/2A82: 8D 01 43 STA $4301 C0/2A85: A9 41 LDA #$41 C0/2A87: 8D 00 43 STA $4300 C0/2A8A: A6 93 LDX $93 C0/2A8C: 8E 16 21 STX $2116 C0/2A8F: A2 40 D8 LDX #$D840 C0/2A92: 8E 02 43 STX $4302 C0/2A95: A9 7F LDA #$7F C0/2A97: 8D 04 43 STA $4304 C0/2A9A: 8D 07 43 STA $4307 C0/2A9D: A2 40 00 LDX #$0040 C0/2AA0: 8E 05 43 STX $4305 C0/2AA3: A9 01 LDA #$01 C0/2AA5: 8D 0B 42 STA $420B C0/2AA8: 9C 0B 42 STZ $420B C0/2AAB: A6 95 LDX $95 C0/2AAD: 8E 16 21 STX $2116 C0/2AB0: A2 80 D8 LDX #$D880 C0/2AB3: 8E 02 43 STX $4302 C0/2AB6: A9 7F LDA #$7F C0/2AB8: 8D 04 43 STA $4304 C0/2ABB: 8D 07 43 STA $4307 C0/2ABE: A2 40 00 LDX #$0040 C0/2AC1: 8E 05 43 STX $4305 C0/2AC4: A9 01 LDA #$01 C0/2AC6: 8D 0B 42 STA $420B C0/2AC9: 60 RTS ; [ Update BG2 Map Data in VRAM (vertical scroll) ] C0/2ACA: 9C 0B 42 STZ $420B C0/2ACD: A9 80 LDA #$80 C0/2ACF: 8D 15 21 STA $2115 C0/2AD2: A6 97 LDX $97 C0/2AD4: 8E 16 21 STX $2116 C0/2AD7: A9 41 LDA #$41 C0/2AD9: 8D 00 43 STA $4300 C0/2ADC: A9 18 LDA #$18 C0/2ADE: 8D 01 43 STA $4301 C0/2AE1: A2 C0 E1 LDX #$E1C0 C0/2AE4: 8E 02 43 STX $4302 C0/2AE7: A9 7F LDA #$7F C0/2AE9: 8D 04 43 STA $4304 C0/2AEC: 8D 07 43 STA $4307 C0/2AEF: A2 80 00 LDX #$0080 C0/2AF2: 8E 05 43 STX $4305 C0/2AF5: A9 01 LDA #$01 C0/2AF7: 8D 0B 42 STA $420B C0/2AFA: 60 RTS ; [ Update BG2 Map Data in VRAM (horizontal scroll) ] C0/2AFB: 9C 0B 42 STZ $420B C0/2AFE: A9 81 LDA #$81 C0/2B00: 8D 15 21 STA $2115 C0/2B03: A9 18 LDA #$18 C0/2B05: 8D 01 43 STA $4301 C0/2B08: A9 41 LDA #$41 C0/2B0A: 8D 00 43 STA $4300 C0/2B0D: A6 99 LDX $99 C0/2B0F: 8E 16 21 STX $2116 C0/2B12: A2 C0 D8 LDX #$D8C0 C0/2B15: 8E 02 43 STX $4302 C0/2B18: A9 7F LDA #$7F C0/2B1A: 8D 04 43 STA $4304 C0/2B1D: 8D 07 43 STA $4307 C0/2B20: A2 40 00 LDX #$0040 C0/2B23: 8E 05 43 STX $4305 C0/2B26: A9 01 LDA #$01 C0/2B28: 8D 0B 42 STA $420B C0/2B2B: 9C 0B 42 STZ $420B C0/2B2E: A6 9B LDX $9B C0/2B30: 8E 16 21 STX $2116 C0/2B33: A2 00 D9 LDX #$D900 C0/2B36: 8E 02 43 STX $4302 C0/2B39: A9 7F LDA #$7F C0/2B3B: 8D 04 43 STA $4304 C0/2B3E: 8D 07 43 STA $4307 C0/2B41: A2 40 00 LDX #$0040 C0/2B44: 8E 05 43 STX $4305 C0/2B47: A9 01 LDA #$01 C0/2B49: 8D 0B 42 STA $420B C0/2B4C: 60 RTS ; [ Update BG3 Map Data in VRAM (vertical scroll) ] C0/2B4D: 9C 0B 42 STZ $420B C0/2B50: A9 80 LDA #$80 C0/2B52: 8D 15 21 STA $2115 C0/2B55: A6 9D LDX $9D C0/2B57: 8E 16 21 STX $2116 C0/2B5A: A9 41 LDA #$41 C0/2B5C: 8D 00 43 STA $4300 C0/2B5F: A9 18 LDA #$18 C0/2B61: 8D 01 43 STA $4301 C0/2B64: A2 C0 E9 LDX #$E9C0 C0/2B67: 8E 02 43 STX $4302 C0/2B6A: A9 7F LDA #$7F C0/2B6C: 8D 04 43 STA $4304 C0/2B6F: 8D 07 43 STA $4307 C0/2B72: A2 80 00 LDX #$0080 C0/2B75: 8E 05 43 STX $4305 C0/2B78: A9 01 LDA #$01 C0/2B7A: 8D 0B 42 STA $420B C0/2B7D: 60 RTS ; [ Update BG3 Map Data in VRAM (horizontal scroll) ] C0/2B7E: 9C 0B 42 STZ $420B C0/2B81: A9 81 LDA #$81 C0/2B83: 8D 15 21 STA $2115 C0/2B86: A9 18 LDA #$18 C0/2B88: 8D 01 43 STA $4301 C0/2B8B: A9 41 LDA #$41 C0/2B8D: 8D 00 43 STA $4300 C0/2B90: A6 9F LDX $9F C0/2B92: 8E 16 21 STX $2116 C0/2B95: A2 40 D9 LDX #$D940 C0/2B98: 8E 02 43 STX $4302 C0/2B9B: A9 7F LDA #$7F C0/2B9D: 8D 04 43 STA $4304 C0/2BA0: 8D 07 43 STA $4307 C0/2BA3: A2 40 00 LDX #$0040 C0/2BA6: 8E 05 43 STX $4305 C0/2BA9: A9 01 LDA #$01 C0/2BAB: 8D 0B 42 STA $420B C0/2BAE: 9C 0B 42 STZ $420B C0/2BB1: A6 A1 LDX $A1 C0/2BB3: 8E 16 21 STX $2116 C0/2BB6: A2 80 D9 LDX #$D980 C0/2BB9: 8E 02 43 STX $4302 C0/2BBC: A9 7F LDA #$7F C0/2BBE: 8D 04 43 STA $4304 C0/2BC1: 8D 07 43 STA $4307 C0/2BC4: A2 40 00 LDX #$0040 C0/2BC7: 8E 05 43 STX $4305 C0/2BCA: A9 01 LDA #$01 C0/2BCC: 8D 0B 42 STA $420B C0/2BCF: 60 RTS ; [ Update Scroll Position ] calc_bg_pos: C0/2BD0: C2 20 REP #$20 C0/2BD2: E2 10 SEP #$10 C0/2BD4: A0 01 LDY #$01 C0/2BD6: A5 73 LDA $73 C0/2BD8: 18 CLC C0/2BD9: 6D 47 05 ADC $0547 C0/2BDC: 85 1E STA $1E C0/2BDE: F0 4E BEQ $2C2E C0/2BE0: 30 26 BMI $2C08 C0/2BE2: A5 5B LDA $5B C0/2BE4: 29 FF 0F AND #$0FFF C0/2BE7: 09 00 F0 ORA #$F000 C0/2BEA: 18 CLC C0/2BEB: 65 1E ADC $1E C0/2BED: 90 0A BCC $2BF9 C0/2BEF: 8C 86 05 STY $0586 C0/2BF2: AE 41 05 LDX $0541 C0/2BF5: E8 INX C0/2BF6: 8E 41 05 STX $0541 C0/2BF9: A5 5B LDA $5B C0/2BFB: 18 CLC C0/2BFC: 65 1E ADC $1E C0/2BFE: 85 5B STA $5B C0/2C00: A5 5D LDA $5D C0/2C02: 65 00 ADC $00 C0/2C04: 85 5D STA $5D C0/2C06: 80 26 BRA $2C2E C0/2C08: 45 02 EOR $02 C0/2C0A: 1A INC C0/2C0B: 85 1E STA $1E C0/2C0D: A5 5B LDA $5B C0/2C0F: 29 FF 0F AND #$0FFF C0/2C12: 38 SEC C0/2C13: E5 1E SBC $1E C0/2C15: B0 0A BCS $2C21 C0/2C17: 8C 86 05 STY $0586 C0/2C1A: AE 41 05 LDX $0541 C0/2C1D: CA DEX C0/2C1E: 8E 41 05 STX $0541 C0/2C21: A5 5B LDA $5B C0/2C23: 38 SEC C0/2C24: E5 1E SBC $1E C0/2C26: 85 5B STA $5B C0/2C28: A5 5D LDA $5D C0/2C2A: E5 00 SBC $00 C0/2C2C: 85 5D STA $5D C0/2C2E: A5 75 LDA $75 C0/2C30: 18 CLC C0/2C31: 6D 49 05 ADC $0549 C0/2C34: 85 1E STA $1E C0/2C36: 30 26 BMI $2C5E C0/2C38: A5 5F LDA $5F C0/2C3A: 29 FF 0F AND #$0FFF C0/2C3D: 09 00 F0 ORA #$F000 C0/2C40: 18 CLC C0/2C41: 65 1E ADC $1E C0/2C43: 90 0A BCC $2C4F C0/2C45: 8C 85 05 STY $0585 C0/2C48: AE 42 05 LDX $0542 C0/2C4B: E8 INX C0/2C4C: 8E 42 05 STX $0542 C0/2C4F: A5 5F LDA $5F C0/2C51: 18 CLC C0/2C52: 65 1E ADC $1E C0/2C54: 85 5F STA $5F C0/2C56: A5 61 LDA $61 C0/2C58: 65 00 ADC $00 C0/2C5A: 85 61 STA $61 C0/2C5C: 80 26 BRA $2C84 C0/2C5E: 45 02 EOR $02 C0/2C60: 1A INC C0/2C61: 85 1E STA $1E C0/2C63: A5 5F LDA $5F C0/2C65: 29 FF 0F AND #$0FFF C0/2C68: 38 SEC C0/2C69: E5 1E SBC $1E C0/2C6B: B0 0A BCS $2C77 C0/2C6D: 8C 85 05 STY $0585 C0/2C70: AE 42 05 LDX $0542 C0/2C73: CA DEX C0/2C74: 8E 42 05 STX $0542 C0/2C77: A5 5F LDA $5F C0/2C79: 38 SEC C0/2C7A: E5 1E SBC $1E C0/2C7C: 85 5F STA $5F C0/2C7E: A5 61 LDA $61 C0/2C80: E5 00 SBC $00 C0/2C82: 85 61 STA $61 C0/2C84: A5 77 LDA $77 C0/2C86: 18 CLC C0/2C87: 6D 4B 05 ADC $054B C0/2C8A: 85 1E STA $1E C0/2C8C: F0 4E BEQ $2CDC C0/2C8E: 30 26 BMI $2CB6 C0/2C90: A5 63 LDA $63 C0/2C92: 29 FF 0F AND #$0FFF C0/2C95: 09 00 F0 ORA #$F000 C0/2C98: 18 CLC C0/2C99: 65 1E ADC $1E C0/2C9B: 90 0A BCC $2CA7 C0/2C9D: 8C 88 05 STY $0588 C0/2CA0: AE 43 05 LDX $0543 C0/2CA3: E8 INX C0/2CA4: 8E 43 05 STX $0543 C0/2CA7: A5 63 LDA $63 C0/2CA9: 18 CLC C0/2CAA: 65 1E ADC $1E C0/2CAC: 85 63 STA $63 C0/2CAE: A5 65 LDA $65 C0/2CB0: 65 00 ADC $00 C0/2CB2: 85 65 STA $65 C0/2CB4: 80 26 BRA $2CDC C0/2CB6: 45 02 EOR $02 C0/2CB8: 1A INC C0/2CB9: 85 1E STA $1E C0/2CBB: A5 63 LDA $63 C0/2CBD: 29 FF 0F AND #$0FFF C0/2CC0: 38 SEC C0/2CC1: E5 1E SBC $1E C0/2CC3: B0 0A BCS $2CCF C0/2CC5: 8C 88 05 STY $0588 C0/2CC8: AE 43 05 LDX $0543 C0/2CCB: CA DEX C0/2CCC: 8E 43 05 STX $0543 C0/2CCF: A5 63 LDA $63 C0/2CD1: 38 SEC C0/2CD2: E5 1E SBC $1E C0/2CD4: 85 63 STA $63 C0/2CD6: A5 65 LDA $65 C0/2CD8: E5 00 SBC $00 C0/2CDA: 85 65 STA $65 C0/2CDC: A5 79 LDA $79 C0/2CDE: 18 CLC C0/2CDF: 6D 4D 05 ADC $054D C0/2CE2: 85 1E STA $1E C0/2CE4: 30 26 BMI $2D0C C0/2CE6: A5 67 LDA $67 C0/2CE8: 29 FF 0F AND #$0FFF C0/2CEB: 09 00 F0 ORA #$F000 C0/2CEE: 18 CLC C0/2CEF: 65 1E ADC $1E C0/2CF1: 90 0A BCC $2CFD C0/2CF3: 8C 87 05 STY $0587 C0/2CF6: AE 44 05 LDX $0544 C0/2CF9: E8 INX C0/2CFA: 8E 44 05 STX $0544 C0/2CFD: A5 67 LDA $67 C0/2CFF: 18 CLC C0/2D00: 65 1E ADC $1E C0/2D02: 85 67 STA $67 C0/2D04: A5 69 LDA $69 C0/2D06: 65 00 ADC $00 C0/2D08: 85 69 STA $69 C0/2D0A: 80 26 BRA $2D32 C0/2D0C: 45 02 EOR $02 C0/2D0E: 1A INC C0/2D0F: 85 1E STA $1E C0/2D11: A5 67 LDA $67 C0/2D13: 29 FF 0F AND #$0FFF C0/2D16: 38 SEC C0/2D17: E5 1E SBC $1E C0/2D19: B0 0A BCS $2D25 C0/2D1B: 8C 87 05 STY $0587 C0/2D1E: AE 44 05 LDX $0544 C0/2D21: CA DEX C0/2D22: 8E 44 05 STX $0544 C0/2D25: A5 67 LDA $67 C0/2D27: 38 SEC C0/2D28: E5 1E SBC $1E C0/2D2A: 85 67 STA $67 C0/2D2C: A5 69 LDA $69 C0/2D2E: E5 00 SBC $00 C0/2D30: 85 69 STA $69 C0/2D32: A5 7B LDA $7B C0/2D34: 18 CLC C0/2D35: 6D 4F 05 ADC $054F C0/2D38: 85 1E STA $1E C0/2D3A: F0 4E BEQ $2D8A C0/2D3C: 30 26 BMI $2D64 C0/2D3E: A5 6B LDA $6B C0/2D40: 29 FF 0F AND #$0FFF C0/2D43: 09 00 F0 ORA #$F000 C0/2D46: 18 CLC C0/2D47: 65 1E ADC $1E C0/2D49: 90 0A BCC $2D55 C0/2D4B: 8C 8A 05 STY $058A C0/2D4E: AE 45 05 LDX $0545 C0/2D51: E8 INX C0/2D52: 8E 45 05 STX $0545 C0/2D55: A5 6B LDA $6B C0/2D57: 18 CLC C0/2D58: 65 1E ADC $1E C0/2D5A: 85 6B STA $6B C0/2D5C: A5 6D LDA $6D C0/2D5E: 65 00 ADC $00 C0/2D60: 85 6D STA $6D C0/2D62: 80 26 BRA $2D8A C0/2D64: 45 02 EOR $02 C0/2D66: 1A INC C0/2D67: 85 1E STA $1E C0/2D69: A5 6B LDA $6B C0/2D6B: 29 FF 0F AND #$0FFF C0/2D6E: 38 SEC C0/2D6F: E5 1E SBC $1E C0/2D71: B0 0A BCS $2D7D C0/2D73: 8C 8A 05 STY $058A C0/2D76: AE 45 05 LDX $0545 C0/2D79: CA DEX C0/2D7A: 8E 45 05 STX $0545 C0/2D7D: A5 6B LDA $6B C0/2D7F: 38 SEC C0/2D80: E5 1E SBC $1E C0/2D82: 85 6B STA $6B C0/2D84: A5 6D LDA $6D C0/2D86: E5 00 SBC $00 C0/2D88: 85 6D STA $6D C0/2D8A: A5 7D LDA $7D C0/2D8C: 18 CLC C0/2D8D: 6D 51 05 ADC $0551 C0/2D90: 85 1E STA $1E C0/2D92: 30 26 BMI $2DBA C0/2D94: A5 6F LDA $6F C0/2D96: 29 FF 0F AND #$0FFF C0/2D99: 09 00 F0 ORA #$F000 C0/2D9C: 18 CLC C0/2D9D: 65 1E ADC $1E C0/2D9F: 90 0A BCC $2DAB C0/2DA1: 8C 89 05 STY $0589 C0/2DA4: AE 46 05 LDX $0546 C0/2DA7: E8 INX C0/2DA8: 8E 46 05 STX $0546 C0/2DAB: A5 6F LDA $6F C0/2DAD: 18 CLC C0/2DAE: 65 1E ADC $1E C0/2DB0: 85 6F STA $6F C0/2DB2: A5 71 LDA $71 C0/2DB4: 65 00 ADC $00 C0/2DB6: 85 71 STA $71 C0/2DB8: 80 26 BRA $2DE0 C0/2DBA: 45 02 EOR $02 C0/2DBC: 1A INC C0/2DBD: 85 1E STA $1E C0/2DBF: A5 6F LDA $6F C0/2DC1: 29 FF 0F AND #$0FFF C0/2DC4: 38 SEC C0/2DC5: E5 1E SBC $1E C0/2DC7: B0 0A BCS $2DD3 C0/2DC9: 8C 89 05 STY $0589 C0/2DCC: AE 46 05 LDX $0546 C0/2DCF: CA DEX C0/2DD0: 8E 46 05 STX $0546 C0/2DD3: A5 6F LDA $6F C0/2DD5: 38 SEC C0/2DD6: E5 1E SBC $1E C0/2DD8: 85 6F STA $6F C0/2DDA: A5 71 LDA $71 C0/2DDC: E5 00 SBC $00 C0/2DDE: 85 71 STA $71 C0/2DE0: C2 10 REP #$10 C0/2DE2: 7B TDC C0/2DE3: E2 20 SEP #$20 C0/2DE5: 60 RTS ; -------------------------------------------[ Field: HDMA ]-------------------------------------------- ; [ Copy Dialog Window Graphics to VRAM ] trans_window_cgx: C0/2DE6: A9 80 LDA #$80 C0/2DE8: 8D 15 21 STA $2115 ; destination = $2E00 (vram) C0/2DEB: A2 00 2E LDX #$2E00 C0/2DEE: 8E 16 21 STX $2116 C0/2DF1: A0 1C 00 LDY #$001C ; 28 tiles total C0/2DF4: AD 65 05 LDA $0565 ; wallpaper index C0/2DF7: 0A ASL C0/2DF8: AA TAX C0/2DF9: C2 20 REP #$20 C0/2DFB: BF 98 2E C0 LDA $C02E98,X ; pointer to wallpaper graphics C0/2DFF: AA TAX C0/2E00: BF 00 00 ED LDA $ED0000,X ; first 8 bytes of tile C0/2E04: 8D 18 21 STA $2118 C0/2E07: BF 02 00 ED LDA $ED0002,X C0/2E0B: 8D 18 21 STA $2118 C0/2E0E: BF 04 00 ED LDA $ED0004,X C0/2E12: 8D 18 21 STA $2118 C0/2E15: BF 06 00 ED LDA $ED0006,X C0/2E19: 8D 18 21 STA $2118 C0/2E1C: BF 08 00 ED LDA $ED0008,X C0/2E20: 8D 18 21 STA $2118 C0/2E23: BF 0A 00 ED LDA $ED000A,X C0/2E27: 8D 18 21 STA $2118 C0/2E2A: BF 0C 00 ED LDA $ED000C,X C0/2E2E: 8D 18 21 STA $2118 C0/2E31: BF 0E 00 ED LDA $ED000E,X C0/2E35: 8D 18 21 STA $2118 C0/2E38: BF 10 00 ED LDA $ED0010,X ; for the second 8 bytes, set the top bit of each bitplane C0/2E3C: 09 00 FF ORA #$FF00 C0/2E3F: 8D 18 21 STA $2118 C0/2E42: BF 12 00 ED LDA $ED0012,X C0/2E46: 09 00 FF ORA #$FF00 C0/2E49: 8D 18 21 STA $2118 C0/2E4C: BF 14 00 ED LDA $ED0014,X C0/2E50: 09 00 FF ORA #$FF00 C0/2E53: 8D 18 21 STA $2118 C0/2E56: BF 16 00 ED LDA $ED0016,X C0/2E5A: 09 00 FF ORA #$FF00 C0/2E5D: 8D 18 21 STA $2118 C0/2E60: BF 18 00 ED LDA $ED0018,X C0/2E64: 09 00 FF ORA #$FF00 C0/2E67: 8D 18 21 STA $2118 C0/2E6A: BF 1A 00 ED LDA $ED001A,X C0/2E6E: 09 00 FF ORA #$FF00 C0/2E71: 8D 18 21 STA $2118 C0/2E74: BF 1C 00 ED LDA $ED001C,X C0/2E78: 09 00 FF ORA #$FF00 C0/2E7B: 8D 18 21 STA $2118 C0/2E7E: BF 1E 00 ED LDA $ED001E,X C0/2E82: 09 00 FF ORA #$FF00 C0/2E85: 8D 18 21 STA $2118 C0/2E88: 8A TXA C0/2E89: 18 CLC C0/2E8A: 69 20 00 ADC #$0020 ; next tile C0/2E8D: AA TAX C0/2E8E: 88 DEY C0/2E8F: F0 03 BEQ $2E94 C0/2E91: 4C 00 2E JMP $2E00 C0/2E94: 7B TDC C0/2E95: E2 20 SEP #$20 C0/2E97: 60 RTS ; pointers to wallpaper graphics (+$ED0000) C0/2E98: .DW $0000, $0380, $0700, $0A80, $0E00, $1180, $1500, $1880 ; [ Open Map Name Dialog Window ] open_map_name_window: C0/2EA8: A9 7E LDA #$7E C0/2EAA: 48 PHA C0/2EAB: AB PLB C0/2EAC: C2 20 REP #$20 C0/2EAE: AD FA 7B LDA $7BFA ; save HDMA tables C0/2EB1: 8D D1 7E STA $7ED1 C0/2EB4: AD FD 7B LDA $7BFD C0/2EB7: 8D D4 7E STA $7ED4 C0/2EBA: AD 00 7C LDA $7C00 C0/2EBD: 8D D7 7E STA $7ED7 C0/2EC0: AD 03 7C LDA $7C03 C0/2EC3: 8D DA 7E STA $7EDA C0/2EC6: AD B0 7C LDA $7CB0 C0/2EC9: 8D 85 7F STA $7F85 C0/2ECC: AD B3 7C LDA $7CB3 C0/2ECF: 8D 88 7F STA $7F88 C0/2ED2: AD B6 7C LDA $7CB6 C0/2ED5: 8D 8B 7F STA $7F8B C0/2ED8: AD B9 7C LDA $7CB9 C0/2EDB: 8D 8E 7F STA $7F8E C0/2EDE: AD 66 7D LDA $7D66 C0/2EE1: 8D 39 80 STA $8039 C0/2EE4: AD 69 7D LDA $7D69 C0/2EE7: 8D 3C 80 STA $803C C0/2EEA: AD 6C 7D LDA $7D6C C0/2EED: 8D 3F 80 STA $803F C0/2EF0: AD 6F 7D LDA $7D6F C0/2EF3: 8D 42 80 STA $8042 C0/2EF6: AD 1C 7E LDA $7E1C C0/2EF9: 8D ED 80 STA $80ED C0/2EFC: AD 1F 7E LDA $7E1F C0/2EFF: 8D F0 80 STA $80F0 C0/2F02: AD 22 7E LDA $7E22 C0/2F05: 8D F3 80 STA $80F3 C0/2F08: AD 25 7E LDA $7E25 C0/2F0B: 8D F6 80 STA $80F6 C0/2F0E: AD 9F 7B LDA $7B9F C0/2F11: 8D 77 7E STA $7E77 C0/2F14: AD A2 7B LDA $7BA2 C0/2F17: 8D 7A 7E STA $7E7A C0/2F1A: AD A5 7B LDA $7BA5 C0/2F1D: 8D 7D 7E STA $7E7D C0/2F20: AD A8 7B LDA $7BA8 C0/2F23: 8D 80 7E STA $7E80 C0/2F26: AD 0B 7D LDA $7D0B C0/2F29: 8D DF 7F STA $7FDF C0/2F2C: AD 0E 7D LDA $7D0E C0/2F2F: 8D E2 7F STA $7FE2 C0/2F32: AD 11 7D LDA $7D11 C0/2F35: 8D E5 7F STA $7FE5 C0/2F38: AD 14 7D LDA $7D14 C0/2F3B: 8D E8 7F STA $7FE8 C0/2F3E: AD C1 7D LDA $7DC1 C0/2F41: 8D 93 80 STA $8093 C0/2F44: AD C4 7D LDA $7DC4 C0/2F47: 8D 96 80 STA $8096 C0/2F4A: AD C7 7D LDA $7DC7 C0/2F4D: 8D 99 80 STA $8099 C0/2F50: AD CA 7D LDA $7DCA C0/2F53: 8D 9C 80 STA $809C C0/2F56: A9 33 85 LDA #$8533 ; set bg1 scroll HDMA data C0/2F59: 8D FA 7B STA $7BFA C0/2F5C: 8D FD 7B STA $7BFD C0/2F5F: 8D 00 7C STA $7C00 C0/2F62: A9 53 85 LDA #$8553 C0/2F65: 8D 03 7C STA $7C03 C0/2F68: A9 73 85 LDA #$8573 ; set bg3 scroll HDMA data C0/2F6B: 8D B0 7C STA $7CB0 C0/2F6E: A9 83 85 LDA #$8583 C0/2F71: 8D B3 7C STA $7CB3 C0/2F74: A9 93 85 LDA #$8593 C0/2F77: 8D B6 7C STA $7CB6 C0/2F7A: A9 A3 85 LDA #$85A3 C0/2F7D: 8D B9 7C STA $7CB9 C0/2F80: A9 A3 8C LDA #$8CA3 ; set window 2 HDMA data C0/2F83: 8D 66 7D STA $7D66 C0/2F86: A9 A3 8C LDA #$8CA3 C0/2F89: 8D 69 7D STA $7D69 C0/2F8C: A9 A3 8C LDA #$8CA3 C0/2F8F: 8D 6C 7D STA $7D6C C0/2F92: A9 A3 8C LDA #$8CA3 C0/2F95: 8D 6F 7D STA $7D6F C0/2F98: A9 D3 8B LDA #$8BD3 ; set color add/sub settings HDMA data C0/2F9B: 8D 1C 7E STA $7E1C C0/2F9E: A9 E3 8B LDA #$8BE3 C0/2FA1: 8D 1F 7E STA $7E1F C0/2FA4: A9 F3 8B LDA #$8BF3 C0/2FA7: 8D 22 7E STA $7E22 C0/2FAA: A9 03 8C LDA #$8C03 C0/2FAD: 8D 25 7E STA $7E25 C0/2FB0: A9 B3 81 LDA #$81B3 ; set mosaic/bg location HDMA data C0/2FB3: 8D 9F 7B STA $7B9F C0/2FB6: 8D A2 7B STA $7BA2 C0/2FB9: 8D A5 7B STA $7BA5 C0/2FBC: 8D A8 7B STA $7BA8 C0/2FBF: A9 43 8A LDA #$8A43 ; set fixed color add/sub HDMA data C0/2FC2: 8D 0B 7D STA $7D0B C0/2FC5: A9 53 8A LDA #$8A53 C0/2FC8: 8D 0E 7D STA $7D0E C0/2FCB: A9 63 8A LDA #$8A63 C0/2FCE: 8D 11 7D STA $7D11 C0/2FD1: A9 73 8A LDA #$8A73 C0/2FD4: 8D 14 7D STA $7D14 C0/2FD7: A9 83 81 LDA #$8183 ; set main/sub screen designation HDMA data C0/2FDA: 8D C1 7D STA $7DC1 C0/2FDD: 8D C4 7D STA $7DC4 C0/2FE0: 8D C7 7D STA $7DC7 C0/2FE3: 8D CA 7D STA $7DCA C0/2FE6: 7B TDC C0/2FE7: E2 20 SEP #$20 C0/2FE9: 7B TDC C0/2FEA: 48 PHA C0/2FEB: AB PLB C0/2FEC: 60 RTS ; [ Close Map Name Dialog Window ] close_map_name_window: C0/2FED: AD 45 07 LDA $0745 ; return if map name dialog window is not open C0/2FF0: F0 4D BEQ $303F C0/2FF2: A9 7E LDA #$7E C0/2FF4: 48 PHA C0/2FF5: AB PLB C0/2FF6: A6 00 LDX $00 C0/2FF8: C2 20 REP #$20 C0/2FFA: BD D1 7E LDA $7ED1,X ; restore HDMA tables C0/2FFD: 9D FA 7B STA $7BFA,X C0/3000: BD 85 7F LDA $7F85,X C0/3003: 9D B0 7C STA $7CB0,X C0/3006: BD 39 80 LDA $8039,X C0/3009: 9D 66 7D STA $7D66,X C0/300C: BD ED 80 LDA $80ED,X C0/300F: 9D 1C 7E STA $7E1C,X C0/3012: BD 77 7E LDA $7E77,X C0/3015: 9D 9F 7B STA $7B9F,X C0/3018: BD DF 7F LDA $7FDF,X C0/301B: 9D 0B 7D STA $7D0B,X C0/301E: BD 93 80 LDA $8093,X C0/3021: 9D C1 7D STA $7DC1,X C0/3024: E8 INX C0/3025: E8 INX C0/3026: E8 INX C0/3027: E0 0C 00 CPX #$000C C0/302A: D0 CE BNE $2FFA C0/302C: 7B TDC C0/302D: E2 20 SEP #$20 C0/302F: 7B TDC C0/3030: 48 PHA C0/3031: AB PLB C0/3032: 9C 45 07 STZ $0745 ; map name dialog window closed C0/3035: 9C 67 05 STZ $0567 ; clear map name dialog counter C0/3038: 9C 68 05 STZ $0568 ; clear dialog flags C0/303B: A9 09 LDA #$09 ; dialog region = 9 C0/303D: 85 CC STA $CC C0/303F: 60 RTS ; [ unused ??? ] C0/3040: A9 7E LDA #$7E C0/3042: 48 PHA C0/3043: AB PLB C0/3044: A5 BC LDA $BC C0/3046: 0A ASL C0/3047: 18 CLC C0/3048: 65 BC ADC $BC C0/304A: AA TAX C0/304B: A0 08 00 LDY #$0008 C0/304E: C2 20 REP #$20 C0/3050: BD 9C 7B LDA $7B9C,X C0/3053: 9D 74 7E STA $7E74,X C0/3056: BD F7 7B LDA $7BF7,X C0/3059: 9D CE 7E STA $7ECE,X C0/305C: BD AD 7C LDA $7CAD,X C0/305F: 9D 82 7F STA $7F82,X C0/3062: BD 63 7D LDA $7D63,X C0/3065: 9D 36 80 STA $8036,X C0/3068: BD 08 7D LDA $7D08,X C0/306B: 9D DC 7F STA $7FDC,X C0/306E: BD 19 7E LDA $7E19,X C0/3071: 9D EA 80 STA $80EA,X C0/3074: E8 INX C0/3075: E8 INX C0/3076: E8 INX C0/3077: 88 DEY C0/3078: D0 D6 BNE $3050 C0/307A: 7B TDC C0/307B: E2 20 SEP #$20 C0/307D: 7B TDC C0/307E: 48 PHA C0/307F: AB PLB C0/3080: 60 RTS ; [ Update Dialog Window ] disp_mess_window: C0/3081: A5 BA LDA $BA C0/3083: D0 01 BNE $3086 C0/3085: 60 RTS C0/3086: A5 BC LDA $BC C0/3088: 0A ASL C0/3089: 18 CLC C0/308A: 65 BC ADC $BC C0/308C: AA TAX C0/308D: A5 BA LDA $BA C0/308F: 10 03 BPL $3094 C0/3091: 4C BA 31 JMP $31BA C0/3094: A5 BB LDA $BB C0/3096: C9 05 CMP #$05 C0/3098: F0 EB BEQ $3085 C0/309A: 0A ASL C0/309B: 85 1A STA $1A C0/309D: 0A ASL C0/309E: 0A ASL C0/309F: 0A ASL C0/30A0: 18 CLC C0/30A1: 65 1A ADC $1A C0/30A3: A8 TAY C0/30A4: AD 64 05 LDA $0564 C0/30A7: F0 03 BEQ $30AC C0/30A9: 4C 39 31 JMP $3139 ; [ Open Dialog Window ] C0/30AC: A9 C0 LDA #$C0 C0/30AE: 48 PHA C0/30AF: AB PLB C0/30B0: C2 20 REP #$20 C0/30B2: A9 09 00 LDA #$0009 C0/30B5: 85 1E STA $1E C0/30B7: B9 7A 32 LDA $327A,Y C0/30BA: F0 38 BEQ $30F4 C0/30BC: BF F7 7B 7E LDA $7E7BF7,X C0/30C0: 9F CE 7E 7E STA $7E7ECE,X C0/30C4: BF AD 7C 7E LDA $7E7CAD,X C0/30C8: 9F 82 7F 7E STA $7E7F82,X C0/30CC: BF 63 7D 7E LDA $7E7D63,X C0/30D0: 9F 36 80 7E STA $7E8036,X C0/30D4: BF 19 7E 7E LDA $7E7E19,X C0/30D8: 9F EA 80 7E STA $7E80EA,X C0/30DC: BF 9C 7B 7E LDA $7E7B9C,X C0/30E0: 9F 74 7E 7E STA $7E7E74,X C0/30E4: BF 08 7D 7E LDA $7E7D08,X C0/30E8: 9F DC 7F 7E STA $7E7FDC,X C0/30EC: BF BE 7D 7E LDA $7E7DBE,X C0/30F0: 9F 90 80 7E STA $7E8090,X C0/30F4: B9 D4 32 LDA $32D4,Y C0/30F7: F0 2E BEQ $3127 C0/30F9: 9F F7 7B 7E STA $7E7BF7,X C0/30FD: B9 2E 33 LDA $332E,Y C0/3100: 9F AD 7C 7E STA $7E7CAD,X C0/3104: B9 88 33 LDA $3388,Y C0/3107: 9F 63 7D 7E STA $7E7D63,X C0/310B: B9 E2 33 LDA $33E2,Y C0/310E: 9F 19 7E 7E STA $7E7E19,X C0/3112: B9 3C 34 LDA $343C,Y C0/3115: 9F 9C 7B 7E STA $7E7B9C,X C0/3119: B9 F0 34 LDA $34F0,Y C0/311C: 9F 08 7D 7E STA $7E7D08,X C0/3120: B9 4A 35 LDA $354A,Y C0/3123: 9F BE 7D 7E STA $7E7DBE,X C0/3127: C8 INY C0/3128: C8 INY C0/3129: E8 INX C0/312A: E8 INX C0/312B: E8 INX C0/312C: C6 1E DEC $1E C0/312E: D0 87 BNE $30B7 C0/3130: 7B TDC C0/3131: E2 20 SEP #$20 C0/3133: E6 BB INC $BB C0/3135: 7B TDC C0/3136: 48 PHA C0/3137: AB PLB C0/3138: 60 RTS ; [ Open Dialog Window (text only) ] C0/3139: A9 C0 LDA #$C0 C0/313B: 48 PHA C0/313C: AB PLB C0/313D: C2 20 REP #$20 C0/313F: A9 09 00 LDA #$0009 C0/3142: 85 1E STA $1E C0/3144: B9 7A 32 LDA $327A,Y C0/3147: F0 28 BEQ $3171 C0/3149: BF AD 7C 7E LDA $7E7CAD,X C0/314D: 9F 82 7F 7E STA $7E7F82,X C0/3151: BF 63 7D 7E LDA $7E7D63,X C0/3155: 9F 36 80 7E STA $7E8036,X C0/3159: BF 9C 7B 7E LDA $7E7B9C,X C0/315D: 9F 74 7E 7E STA $7E7E74,X C0/3161: BF 19 7E 7E LDA $7E7E19,X C0/3165: 9F EA 80 7E STA $7E80EA,X C0/3169: BF BE 7D 7E LDA $7E7DBE,X C0/316D: 9F 90 80 7E STA $7E8090,X C0/3171: B9 2E 33 LDA $332E,Y C0/3174: F0 32 BEQ $31A8 C0/3176: 9F AD 7C 7E STA $7E7CAD,X C0/317A: B9 88 33 LDA $3388,Y C0/317D: 9F 63 7D 7E STA $7E7D63,X C0/3181: B9 96 34 LDA $3496,Y C0/3184: 9F 9C 7B 7E STA $7E7B9C,X C0/3188: AF D8 1E 00 LDA $001ED8 C0/318C: 29 01 00 AND #$0001 C0/318F: D0 10 BNE $31A1 C0/3191: A9 73 8C LDA #$8C73 C0/3194: 9F 19 7E 7E STA $7E7E19,X C0/3198: B9 A4 35 LDA $35A4,Y C0/319B: 9F BE 7D 7E STA $7E7DBE,X C0/319F: 80 07 BRA $31A8 C0/31A1: A9 A3 81 LDA #$81A3 C0/31A4: 9F BE 7D 7E STA $7E7DBE,X C0/31A8: C8 INY C0/31A9: C8 INY C0/31AA: E8 INX C0/31AB: E8 INX C0/31AC: E8 INX C0/31AD: C6 1E DEC $1E C0/31AF: D0 93 BNE $3144 C0/31B1: 7B TDC C0/31B2: E2 20 SEP #$20 C0/31B4: E6 BB INC $BB C0/31B6: 7B TDC C0/31B7: 48 PHA C0/31B8: AB PLB C0/31B9: 60 RTS ; [ Close Dialog Window ] C0/31BA: A5 BB LDA $BB C0/31BC: D0 03 BNE $31C1 C0/31BE: 4C 77 32 JMP $3277 C0/31C1: C6 BB DEC $BB C0/31C3: A5 BB LDA $BB C0/31C5: 0A ASL C0/31C6: 85 1A STA $1A C0/31C8: 0A ASL C0/31C9: 0A ASL C0/31CA: 0A ASL C0/31CB: 18 CLC C0/31CC: 65 1A ADC $1A C0/31CE: A8 TAY C0/31CF: AD 64 05 LDA $0564 C0/31D2: F0 03 BEQ $31D7 C0/31D4: 4C 2F 32 JMP $322F C0/31D7: A9 C0 LDA #$C0 C0/31D9: 48 PHA C0/31DA: AB PLB C0/31DB: C2 20 REP #$20 C0/31DD: A9 09 00 LDA #$0009 C0/31E0: 85 1E STA $1E C0/31E2: B9 7A 32 LDA $327A,Y C0/31E5: F0 38 BEQ $321F C0/31E7: BF CE 7E 7E LDA $7E7ECE,X C0/31EB: 9F F7 7B 7E STA $7E7BF7,X C0/31EF: BF 82 7F 7E LDA $7E7F82,X C0/31F3: 9F AD 7C 7E STA $7E7CAD,X C0/31F7: BF 36 80 7E LDA $7E8036,X C0/31FB: 9F 63 7D 7E STA $7E7D63,X C0/31FF: BF EA 80 7E LDA $7E80EA,X C0/3203: 9F 19 7E 7E STA $7E7E19,X C0/3207: BF 74 7E 7E LDA $7E7E74,X C0/320B: 9F 9C 7B 7E STA $7E7B9C,X C0/320F: BF DC 7F 7E LDA $7E7FDC,X C0/3213: 9F 08 7D 7E STA $7E7D08,X C0/3217: BF 90 80 7E LDA $7E8090,X C0/321B: 9F BE 7D 7E STA $7E7DBE,X C0/321F: C8 INY C0/3220: C8 INY C0/3221: E8 INX C0/3222: E8 INX C0/3223: E8 INX C0/3224: C6 1E DEC $1E C0/3226: D0 BA BNE $31E2 C0/3228: 7B TDC C0/3229: E2 20 SEP #$20 C0/322B: 7B TDC C0/322C: 48 PHA C0/322D: AB PLB C0/322E: 60 RTS ; [ Close Dialog Window (text only) ] C0/322F: A9 C0 LDA #$C0 C0/3231: 48 PHA C0/3232: AB PLB C0/3233: C2 20 REP #$20 C0/3235: A9 09 00 LDA #$0009 C0/3238: 85 1E STA $1E C0/323A: B9 7A 32 LDA $327A,Y C0/323D: F0 28 BEQ $3267 C0/323F: BF 82 7F 7E LDA $7E7F82,X C0/3243: 9F AD 7C 7E STA $7E7CAD,X C0/3247: BF 36 80 7E LDA $7E8036,X C0/324B: 9F 63 7D 7E STA $7E7D63,X C0/324F: BF 74 7E 7E LDA $7E7E74,X C0/3253: 9F 9C 7B 7E STA $7E7B9C,X C0/3257: BF EA 80 7E LDA $7E80EA,X C0/325B: 9F 19 7E 7E STA $7E7E19,X C0/325F: BF 90 80 7E LDA $7E8090,X C0/3263: 9F BE 7D 7E STA $7E7DBE,X C0/3267: C8 INY C0/3268: C8 INY C0/3269: E8 INX C0/326A: E8 INX C0/326B: E8 INX C0/326C: C6 1E DEC $1E C0/326E: D0 CA BNE $323A C0/3270: 7B TDC C0/3271: E2 20 SEP #$20 C0/3273: 7B TDC C0/3274: 48 PHA C0/3275: AB PLB C0/3276: 60 RTS C0/3277: 64 BA STZ $BA C0/3279: 60 RTS ; dialog window strips added/removed each frame C0/327A: .DW $0000, $0000, $0000, $0000, $0001, $0000, $0000, $0000, $0000 C0/328C: .DW $0000, $0000, $0000, $0001, $0000, $0001, $0000, $0000, $0000 C0/329E: .DW $0000, $0000, $0001, $0000, $0000, $0000, $0001, $0000, $0000 C0/32B0: .DW $0000, $0001, $0000, $0000, $0000, $0000, $0000, $0001, $0000 C0/32C2: .DW $0001, $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0001 ; HDMA pointers for bg1 scroll (HDMA #4) C0/32D4: .DW $0000, $0000, $0000, $0000, $8513, $0000, $0000, $0000, $0000 C0/32E6: .DW $0000, $0000, $0000, $84B3, $84D3, $84F3, $0000, $0000, $0000 C0/32F8: .DW $0000, $0000, $8413, $8433, $8453, $8473, $8493, $0000, $0000 C0/330A: .DW $0000, $8333, $8353, $8373, $8393, $83B3, $83D3, $83F3, $0000 C0/331C: .DW $8313, $8313, $8313, $8313, $8313, $8313, $8313, $8313, $8313 ; HDMA pointers for bg3 scroll (HDMA #3) C0/332E: .DW $0000, $0000, $0000, $0000, $85F3, $0000, $0000, $0000, $0000 C0/3340: .DW $0000, $0000, $0000, $85F3, $85F3, $85F3, $0000, $0000, $0000 C0/3352: .DW $0000, $0000, $85F3, $85F3, $85F3, $85F3, $85F3, $0000, $0000 C0/3364: .DW $0000, $85F3, $85F3, $85F3, $85F3, $85F3, $85F3, $85F3, $0000 C0/3376: .DW $85F3, $8613, $8633, $8653, $8673, $8693, $86B3, $86D3, $86F3 ; HDMA pointers for window 2 position (HDMA #5) C0/3388: .DW $0000, $0000, $0000, $0000, $8CA3, $0000, $0000, $0000, $0000 C0/339A: .DW $0000, $0000, $0000, $8CA3, $8CA3, $8CA3, $0000, $0000, $0000 C0/33AC: .DW $0000, $0000, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $0000, $0000 C0/33BE: .DW $0000, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $0000 C0/33D0: .DW $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3, $8CA3 ; HDMA pointers for color add/sub settings (HDMA #1) C0/33E2: .DW $0000, $0000, $0000, $0000, $8C53, $0000, $0000, $0000, $0000 C0/33F4: .DW $0000, $0000, $0000, $8C23, $8C33, $8C43, $0000, $0000, $0000 C0/3406: .DW $0000, $0000, $8BD3, $8BE3, $8BF3, $8C03, $8C13, $0000, $0000 C0/3418: .DW $0000, $8B63, $8B73, $8B83, $8B93, $8BA3, $8BB3, $8BC3, $0000 C0/342A: .DW $8AD3, $8AE3, $8AF3, $8B03, $8B13, $8B23, $8B33, $8B43, $8B53 ; HDMA pointers for mosaic/bg location (HDMA #7) C0/343C: .DW $0000, $0000, $0000, $0000, $81B3, $0000, $0000, $0000, $0000 C0/344E: .DW $0000, $0000, $0000, $81B3, $81B3, $81B3, $0000, $0000, $0000 C0/3460: .DW $0000, $0000, $81B3, $81B3, $81B3, $81B3, $81B3, $0000, $0000 C0/3472: .DW $0000, $81B3, $81B3, $81B3, $81B3, $81B3, $81B3, $81B3, $0000 C0/3484: .DW $81B3, $81B3, $81B3, $81B3, $81B3, $81B3, $81B3, $81B3, $81B3 ; HDMA pointers for mosaic/bg location (HDMA #7) text only C0/3496: .DW $0000, $0000, $0000, $0000, $81D3, $0000, $0000, $0000, $0000 C0/34A8: .DW $0000, $0000, $0000, $81D3, $81D3, $81D3, $0000, $0000, $0000 C0/34BA: .DW $0000, $0000, $81D3, $81D3, $81D3, $81D3, $81D3, $0000, $0000 C0/34CC: .DW $0000, $81D3, $81D3, $81D3, $81D3, $81D3, $81D3, $81D3, $0000 C0/34DE: .DW $81D3, $81D3, $81D3, $81D3, $81D3, $81D3, $81D3, $81D3, $81D3 ; HDMA pointers for fixed color add/sub (HDMA #2) C0/34F0: .DW $0000, $0000, $0000, $0000, $8AC3, $0000, $0000, $0000, $0000 C0/3502: .DW $0000, $0000, $0000, $8A93, $8AA3, $8AB3, $0000, $0000, $0000 C0/3514: .DW $0000, $0000, $8A43, $8A53, $8A63, $8A73, $8A83, $0000, $0000 C0/3526: .DW $0000, $89D3, $89E3, $89F3, $8A03, $8A13, $8A23, $8A33, $0000 C0/3538: .DW $8943, $8953, $8963, $8973, $8983, $8993, $89A3, $89B3, $89C3 ; HDMA pointers for main/sub screen designation (HDMA #6) C0/354A: .DW $0000, $0000, $0000, $0000, $8183, $0000, $0000, $0000, $0000 C0/355C: .DW $0000, $0000, $0000, $8183, $8183, $8183, $0000, $0000, $0000 C0/356E: .DW $0000, $0000, $8183, $8183, $8183, $8183, $8183, $0000, $0000 C0/3580: .DW $0000, $8183, $8183, $8183, $8183, $8183, $8183, $8183, $0000 C0/3592: .DW $8183, $8183, $8183, $8183, $8183, $8183, $8183, $8183, $8183 ; HDMA pointers for main/sub screen designation (HDMA #6) text only C0/35A4: .DW $0000, $0000, $0000, $0000, $8193, $0000, $0000, $0000, $0000 C0/35B6: .DW $0000, $0000, $0000, $8193, $8193, $8193, $0000, $0000, $0000 C0/35C8: .DW $0000, $0000, $8193, $8193, $8193, $8193, $8193, $0000, $0000 C0/35DA: .DW $0000, $8193, $8193, $8193, $8193, $8193, $8193, $8193, $0000 C0/35EC: .DW $8193, $8193, $8193, $8193, $8193, $8193, $8193, $8193, $8193 ; [ Init Dialog Window ] init_mess_window: C0/35FE: 20 E6 2D JSR $2DE6 ; copy dialog window graphics to VRAM C0/3601: AD 65 05 LDA $0565 ; wallpaper index C0/3604: 8D 02 42 STA $4202 C0/3607: A9 0E LDA #$0E ; get pointer to wallpaper palette C0/3609: 8D 03 42 STA $4203 C0/360C: EA NOP C0/360D: EA NOP C0/360E: A6 00 LDX $00 C0/3610: AC 16 42 LDY $4216 C0/3613: B9 57 1D LDA $1D57,Y ; copy wallpaper palette to RAM C0/3616: 9F F2 72 7E STA $7E72F2,X C0/361A: 9F F2 74 7E STA $7E74F2,X C0/361E: E8 INX C0/361F: C8 INY C0/3620: E0 0E 00 CPX #$000E C0/3623: D0 EE BNE $3613 C0/3625: A9 80 LDA #$80 ; VRAM memory settings C0/3627: 8D 15 21 STA $2115 C0/362A: A2 20 40 LDX #$4020 ; VRAM destination = $4020 (dialog window at top of screen) C0/362D: 8E 16 21 STX $2116 C0/3630: A6 00 LDX $00 C0/3632: BF 01 37 C0 LDA $C03701,X ; low byte of bg data C0/3636: 8D 18 21 STA $2118 C0/3639: A9 3E LDA #$3E ; high byte of bg data (high priority, palette 7) C0/363B: 8D 19 21 STA $2119 C0/363E: E8 INX C0/363F: E0 20 01 CPX #$0120 C0/3642: D0 EE BNE $3632 C0/3644: A2 40 42 LDX #$4240 ; VRAM destination = $4240 (dialog window at bottom of screen) C0/3647: 8E 16 21 STX $2116 C0/364A: A6 00 LDX $00 C0/364C: BF 01 37 C0 LDA $C03701,X C0/3650: 8D 18 21 STA $2118 C0/3653: A9 3E LDA #$3E C0/3655: 8D 19 21 STA $2119 C0/3658: E8 INX C0/3659: E0 20 01 CPX #$0120 C0/365C: D0 EE BNE $364C C0/365E: A2 00 44 LDX #$4400 ; VRAM destination = $4400 C0/3661: 8E 16 21 STX $2116 C0/3664: A2 20 00 LDX #$0020 ; clear 1 line C0/3667: A9 FF LDA #$FF C0/3669: 8D 18 21 STA $2118 C0/366C: A9 21 LDA #$21 ; high byte of bg data (high priority, palette 0) C0/366E: 8D 19 21 STA $2119 C0/3671: CA DEX C0/3672: D0 F3 BNE $3667 C0/3674: 20 9B 36 JSR $369B ; load dialog text tile formation to VRAM (dialog window at top of screen) C0/3677: A2 20 01 LDX #$0120 ; clear 9 lines C0/367A: A9 FF LDA #$FF C0/367C: 8D 18 21 STA $2118 C0/367F: A9 21 LDA #$21 C0/3681: 8D 19 21 STA $2119 C0/3684: CA DEX C0/3685: D0 F3 BNE $367A C0/3687: 20 9B 36 JSR $369B ; load dialog text tile formation to VRAM (dialog window at bottom of screen) C0/368A: A2 20 00 LDX #$0020 ; clear 1 line C0/368D: A9 FF LDA #$FF C0/368F: 8D 18 21 STA $2118 C0/3692: A9 21 LDA #$21 C0/3694: 8D 19 21 STA $2119 C0/3697: CA DEX C0/3698: D0 F3 BNE $368D C0/369A: 60 RTS ; [ Load Dialog Text Tile Formation to VRAM ] trans_bg3_mess_scr: C0/369B: A4 00 LDY $00 C0/369D: A6 00 LDX $00 C0/369F: BF C1 36 C0 LDA $C036C1,X C0/36A3: 30 06 BMI $36AB C0/36A5: 98 TYA C0/36A6: 18 CLC C0/36A7: 7F C1 36 C0 ADC $C036C1,X ; tile index C0/36AB: 8D 18 21 STA $2118 C0/36AE: A9 21 LDA #$21 ; tile flags C0/36B0: 8D 19 21 STA $2119 C0/36B3: E8 INX C0/36B4: E0 40 00 CPX #$0040 C0/36B7: D0 E6 BNE $369F C0/36B9: 98 TYA C0/36BA: 18 CLC C0/36BB: 69 40 ADC #$40 C0/36BD: A8 TAY C0/36BE: D0 DD BNE $369D C0/36C0: 60 RTS ; dialog text tile formation (32x2, low byte only) mess_window_data: C0/36C1: .DB $FF, $FF, $00, $02, $04, $06, $08, $0A, $0C, $0E, $10, $12, $14, $16, $18, $1A C0/36D1: .DB $1C, $1E, $20, $22, $24, $26, $28, $2A, $2C, $2E, $30, $32, $34, $36, $FF, $FF C0/36E1: .DB $FF, $FF, $01, $03, $05, $07, $09, $0B, $0D, $0F, $11, $13, $15, $17, $19, $1B C0/36F1: .DB $1D, $1F, $21, $23, $25, $27, $29, $2B, $2D, $2F, $31, $33, $35, $37, $FF, $FF ; dialog window tile formation (32x9, low byte only, first and last tile on each line get masked) window_high_data: C0/3701: .DB $F0, $F0, $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2 C0/3711: .DB $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2, $F1, $F2, $F3, $F3 window_mid_data: C0/3721: .DB $F4, $F4, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1 C0/3731: .DB $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $F5, $F5 C0/3741: .DB $F6, $F6, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5 C0/3751: .DB $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $F7, $F7 C0/3761: .DB $F4, $F4, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9 C0/3771: .DB $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $F5, $F5 C0/3781: .DB $F6, $F6, $EC, $ED, $EE, $EF, $EC, $ED, $EE, $EF, $EC, $ED, $EE, $EF, $EC, $ED C0/3791: .DB $EE, $EF, $EC, $ED, $EE, $EF, $EC, $ED, $EE, $EF, $EC, $ED, $EE, $EF, $F7, $F7 C0/37A1: .DB $F4, $F4, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1 C0/37B1: .DB $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $E0, $E1, $E2, $E3, $F5, $F5 C0/37C1: .DB $F6, $F6, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5 C0/37D1: .DB $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $E4, $E5, $E6, $E7, $F7, $F7 C0/37E1: .DB $F4, $F4, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9 C0/37F1: .DB $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $E8, $E9, $EA, $EB, $F5, $F5 window_low_data: C0/3801: .DB $F8, $F8, $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA C0/3811: .DB $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA, $F9, $FA, $FB, $FB ; [ Init HDMA Data ] init_h_dma: C0/3821: A9 43 LDA #$43 ; channel #0: bg2 scroll ($210F & $2110) C0/3823: 8D 00 43 STA $4300 ; 2 address, write twice C0/3826: A9 0F LDA #$0F C0/3828: 8D 01 43 STA $4301 C0/382B: A2 51 7C LDX #$7C51 C0/382E: 8E 02 43 STX $4302 C0/3831: A9 7E LDA #$7E C0/3833: 8D 04 43 STA $4304 C0/3836: 8D 07 43 STA $4307 C0/3839: A9 44 LDA #$44 ; channel #7: mosaic & bg1-3 data location in VRAM ($2106, $2107, $2108, $2109) C0/383B: 8D 70 43 STA $4370 ; 4 address C0/383E: A9 06 LDA #$06 C0/3840: 8D 71 43 STA $4371 C0/3843: A2 9B 7B LDX #$7B9B C0/3846: 8E 72 43 STX $4372 C0/3849: A9 7E LDA #$7E C0/384B: 8D 74 43 STA $4374 C0/384E: 8D 77 43 STA $4377 C0/3851: A9 43 LDA #$43 ; channel #4: bg1 scroll ($210D & $210E) C0/3853: 8D 40 43 STA $4340 ; 2 address, write twice C0/3856: A9 0D LDA #$0D C0/3858: 8D 41 43 STA $4341 C0/385B: A2 F6 7B LDX #$7BF6 C0/385E: 8E 42 43 STX $4342 C0/3861: A9 7E LDA #$7E C0/3863: 8D 44 43 STA $4344 C0/3866: 8D 47 43 STA $4347 C0/3869: A9 43 LDA #$43 ; channel #3: bg3 scroll ($2111 & $2112) C0/386B: 8D 30 43 STA $4330 ; 2 address, write twice C0/386E: A9 11 LDA #$11 C0/3870: 8D 31 43 STA $4331 C0/3873: A2 AC 7C LDX #$7CAC C0/3876: 8E 32 43 STX $4332 C0/3879: A9 7E LDA #$7E C0/387B: 8D 34 43 STA $4334 C0/387E: 8D 37 43 STA $4337 C0/3881: A9 42 LDA #$42 ; channel #2: fixed color add/sub values ($2132) C0/3883: 8D 20 43 STA $4320 ; 1 address, write twice C0/3886: A9 32 LDA #$32 C0/3888: 8D 21 43 STA $4321 C0/388B: A2 07 7D LDX #$7D07 C0/388E: 8E 22 43 STX $4322 C0/3891: A9 7E LDA #$7E C0/3893: 8D 24 43 STA $4324 C0/3896: 8D 27 43 STA $4327 C0/3899: A9 41 LDA #$41 ; channel #5: window 2 position ($2128 & $2129) C0/389B: 8D 50 43 STA $4350 ; 2 address C0/389E: A9 28 LDA #$28 C0/38A0: 8D 51 43 STA $4351 C0/38A3: A2 62 7D LDX #$7D62 C0/38A6: 8E 52 43 STX $4352 C0/38A9: A9 7E LDA #$7E C0/38AB: 8D 54 43 STA $4354 C0/38AE: 8D 57 43 STA $4357 C0/38B1: A9 41 LDA #$41 ; channel #6: main/sub screen designation ($212C & $212D) C0/38B3: 8D 60 43 STA $4360 ; 2 address C0/38B6: A9 2C LDA #$2C C0/38B8: 8D 61 43 STA $4361 C0/38BB: A2 BD 7D LDX #$7DBD C0/38BE: 8E 62 43 STX $4362 C0/38C1: A9 7E LDA #$7E C0/38C3: 8D 64 43 STA $4364 C0/38C6: 8D 67 43 STA $4367 C0/38C9: A9 41 LDA #$41 ; channel #1: color add/sub settings ($2130 & $2131) C0/38CB: 8D 10 43 STA $4310 ; 2 address C0/38CE: A9 30 LDA #$30 C0/38D0: 8D 11 43 STA $4311 C0/38D3: A2 18 7E LDX #$7E18 C0/38D6: 8E 12 43 STX $4312 C0/38D9: A9 7E LDA #$7E C0/38DB: 8D 14 43 STA $4314 C0/38DE: 8D 17 43 STA $4317 C0/38E1: A9 7E LDA #$7E C0/38E3: 48 PHA C0/38E4: AB PLB C0/38E5: A6 00 LDX $00 ; set up HDMA tables C0/38E7: A9 88 LDA #$88 ; 27 strips @ 8 scanlines each C0/38E9: 9D 40 7B STA $7B40,X C0/38EC: 9D 9B 7B STA $7B9B,X C0/38EF: 9D F6 7B STA $7BF6,X C0/38F2: 9D 51 7C STA $7C51,X C0/38F5: 9D AC 7C STA $7CAC,X C0/38F8: 9D 07 7D STA $7D07,X C0/38FB: 9D 62 7D STA $7D62,X C0/38FE: 9D BD 7D STA $7DBD,X C0/3901: 9D 18 7E STA $7E18,X C0/3904: E8 INX C0/3905: E8 INX C0/3906: E8 INX C0/3907: E0 51 00 CPX #$0051 C0/390A: D0 DD BNE $38E9 C0/390C: A9 87 LDA #$87 ; 1 strip @ 7 scanlines C0/390E: 8D 40 7B STA $7B40 C0/3911: 8D 9B 7B STA $7B9B C0/3914: 8D F6 7B STA $7BF6 C0/3917: 8D 51 7C STA $7C51 C0/391A: 8D AC 7C STA $7CAC C0/391D: 8D 07 7D STA $7D07 C0/3920: 8D 62 7D STA $7D62 C0/3923: 8D BD 7D STA $7DBD C0/3926: 8D 18 7E STA $7E18 C0/3929: A9 80 LDA #$80 ; end of table (223 scanlines total) C0/392B: 9D 40 7B STA $7B40,X C0/392E: 9D 9B 7B STA $7B9B,X C0/3931: 9D F6 7B STA $7BF6,X C0/3934: 9D 51 7C STA $7C51,X C0/3937: 9D AC 7C STA $7CAC,X C0/393A: 9D 07 7D STA $7D07,X C0/393D: 9D 62 7D STA $7D62,X C0/3940: 9D BD 7D STA $7DBD,X C0/3943: 9D 18 7E STA $7E18,X C0/3946: 7B TDC C0/3947: 48 PHA C0/3948: AB PLB C0/3949: 20 6B 39 JSR $396B ; init unused HDMA table C0/394C: 20 32 40 JSR $4032 ; init bg1-3 scroll HDMA table and data (channel #4, #0, #3) C0/394F: 20 E7 3E JSR $3EE7 ; init mosaic/bg location HDMA table and data (channel #7) C0/3952: 20 9F 3D JSR $3D9F ; init color add/sub settings HDMA table (channel #1) C0/3955: 20 BC 3D JSR $3DBC ; init color add/sub settings HDMA data C0/3958: 20 9B 3B JSR $3B9B ; update window 2 position HDMA table (channel #5) C0/395B: 20 FF 3B JSR $3BFF ; init window 2 position HDMA data C0/395E: 20 05 3A JSR $3A05 ; init main/sub screen designation HDMA table (channel #6) C0/3961: 20 28 3A JSR $3A28 ; init main/sub screen designation HDMA data C0/3964: 20 33 3C JSR $3C33 ; init fixed color add/sub HDMA table (channel #2) C0/3967: 20 50 3C JSR $3C50 ; init fixed color add/sub HDMA data C0/396A: 60 RTS ; [ Init Unused HDMA Table ] init_font_color: C0/396B: A9 7E LDA #$7E C0/396D: 48 PHA C0/396E: AB PLB C0/396F: C2 20 REP #$20 C0/3971: A6 00 LDX $00 C0/3973: A9 43 81 LDA #$8143 C0/3976: 9D 41 7B STA $7B41,X C0/3979: E8 INX C0/397A: E8 INX C0/397B: E8 INX C0/397C: E0 51 00 CPX #$0051 C0/397F: D0 F2 BNE $3973 C0/3981: A6 00 LDX $00 C0/3983: BF 98 39 C0 LDA $C03998,X C0/3987: 9D 43 81 STA $8143,X C0/398A: E8 INX C0/398B: E8 INX C0/398C: E0 20 00 CPX #$0020 C0/398F: D0 F2 BNE $3983 C0/3991: 7B TDC C0/3992: E2 20 SEP #$20 C0/3994: 7B TDC C0/3995: 48 PHA C0/3996: AB PLB C0/3997: 60 RTS ; color palette for unused HDMA data normal_color_tbl: C0/3998: .DW $4210, $4A52, $5294, $5AD6, $6318, $6B5A, $739C, $7BDE ; [ Load Horizontal Fade Bars (from ending) ] C0/39A8: AD D8 1E LDA $1ED8 C0/39AB: 29 01 AND #$01 C0/39AD: F0 55 BEQ $3A04 C0/39AF: A9 7E LDA #$7E C0/39B1: 48 PHA C0/39B2: AB PLB C0/39B3: C2 20 REP #$20 C0/39B5: A9 03 89 LDA #$8903 C0/39B8: 8D 0B 7D STA $7D0B C0/39BB: A9 13 89 LDA #$8913 C0/39BE: 8D 0E 7D STA $7D0E C0/39C1: A9 23 89 LDA #$8923 C0/39C4: 8D 3B 7D STA $7D3B C0/39C7: A9 33 89 LDA #$8933 C0/39CA: 8D 3E 7D STA $7D3E C0/39CD: A9 93 8C LDA #$8C93 C0/39D0: 8D 1C 7E STA $7E1C C0/39D3: 8D 1F 7E STA $7E1F C0/39D6: 8D 4C 7E STA $7E4C C0/39D9: 8D 4F 7E STA $7E4F C0/39DC: A6 00 LDX $00 C0/39DE: A9 A3 81 LDA #$81A3 C0/39E1: 9D F7 7D STA $7DF7,X C0/39E4: A9 33 87 LDA #$8733 C0/39E7: 9D E6 7C STA $7CE6,X C0/39EA: A9 53 82 LDA #$8253 C0/39ED: 9D D5 7B STA $7BD5,X C0/39F0: A9 73 8C LDA #$8C73 C0/39F3: 9D 52 7E STA $7E52,X C0/39F6: E8 INX C0/39F7: E8 INX C0/39F8: E8 INX C0/39F9: E0 18 00 CPX #$0018 C0/39FC: D0 E0 BNE $39DE C0/39FE: 7B TDC C0/39FF: E2 20 SEP #$20 C0/3A01: 7B TDC C0/3A02: 48 PHA C0/3A03: AB PLB C0/3A04: 60 RTS ; [ Init Main/Sub Screen Designation HDMA Table ] init_tm_ts: C0/3A05: A9 7E LDA #$7E C0/3A07: 48 PHA C0/3A08: AB PLB C0/3A09: C2 20 REP #$20 C0/3A0B: A6 00 LDX $00 C0/3A0D: A9 63 81 LDA #$8163 C0/3A10: 9D BE 7D STA $7DBE,X C0/3A13: E8 INX C0/3A14: E8 INX C0/3A15: E8 INX C0/3A16: E0 51 00 CPX #$0051 C0/3A19: D0 F2 BNE $3A0D C0/3A1B: A9 73 81 LDA #$8173 C0/3A1E: 8D BE 7D STA $7DBE C0/3A21: 7B TDC C0/3A22: E2 20 SEP #$20 C0/3A24: 7B TDC C0/3A25: 48 PHA C0/3A26: AB PLB C0/3A27: 60 RTS ; [ Init Main/Sub Screen Designation HDMA Data ] set_tm_ts: C0/3A28: A2 73 81 LDX #$8173 C0/3A2B: 8E 81 21 STX $2181 C0/3A2E: A9 7E LDA #$7E C0/3A30: 8D 83 21 STA $2183 C0/3A33: 7B TDC C0/3A34: 8D 80 21 STA $2180 C0/3A37: 8D 80 21 STA $2180 C0/3A3A: 8D 80 21 STA $2180 C0/3A3D: 8D 80 21 STA $2180 C0/3A40: 8D 80 21 STA $2180 C0/3A43: 8D 80 21 STA $2180 C0/3A46: 8D 80 21 STA $2180 C0/3A49: 8D 80 21 STA $2180 C0/3A4C: 8D 80 21 STA $2180 C0/3A4F: 8D 80 21 STA $2180 C0/3A52: 8D 80 21 STA $2180 C0/3A55: 8D 80 21 STA $2180 C0/3A58: 8D 80 21 STA $2180 C0/3A5B: 8D 80 21 STA $2180 C0/3A5E: 8D 80 21 STA $2180 C0/3A61: 8D 80 21 STA $2180 C0/3A64: A2 83 81 LDX #$8183 C0/3A67: 8E 81 21 STX $2181 C0/3A6A: A9 7E LDA #$7E C0/3A6C: 8D 83 21 STA $2183 C0/3A6F: A9 05 LDA #$05 C0/3A71: 8D 80 21 STA $2180 C0/3A74: EB XBA C0/3A75: 8D 80 21 STA $2180 C0/3A78: EB XBA C0/3A79: 8D 80 21 STA $2180 C0/3A7C: EB XBA C0/3A7D: 8D 80 21 STA $2180 C0/3A80: EB XBA C0/3A81: 8D 80 21 STA $2180 C0/3A84: EB XBA C0/3A85: 8D 80 21 STA $2180 C0/3A88: EB XBA C0/3A89: 8D 80 21 STA $2180 C0/3A8C: EB XBA C0/3A8D: 8D 80 21 STA $2180 C0/3A90: EB XBA C0/3A91: 8D 80 21 STA $2180 C0/3A94: EB XBA C0/3A95: 8D 80 21 STA $2180 C0/3A98: EB XBA C0/3A99: 8D 80 21 STA $2180 C0/3A9C: EB XBA C0/3A9D: 8D 80 21 STA $2180 C0/3AA0: EB XBA C0/3AA1: 8D 80 21 STA $2180 C0/3AA4: EB XBA C0/3AA5: 8D 80 21 STA $2180 C0/3AA8: EB XBA C0/3AA9: 8D 80 21 STA $2180 C0/3AAC: EB XBA C0/3AAD: 8D 80 21 STA $2180 C0/3AB0: 7B TDC C0/3AB1: A2 93 81 LDX #$8193 C0/3AB4: 8E 81 21 STX $2181 C0/3AB7: A9 7E LDA #$7E C0/3AB9: 8D 83 21 STA $2183 C0/3ABC: A9 1F LDA #$1F C0/3ABE: 8D 80 21 STA $2180 C0/3AC1: EB XBA C0/3AC2: 8D 80 21 STA $2180 C0/3AC5: EB XBA C0/3AC6: 8D 80 21 STA $2180 C0/3AC9: EB XBA C0/3ACA: 8D 80 21 STA $2180 C0/3ACD: EB XBA C0/3ACE: 8D 80 21 STA $2180 C0/3AD1: EB XBA C0/3AD2: 8D 80 21 STA $2180 C0/3AD5: EB XBA C0/3AD6: 8D 80 21 STA $2180 C0/3AD9: EB XBA C0/3ADA: 8D 80 21 STA $2180 C0/3ADD: EB XBA C0/3ADE: 8D 80 21 STA $2180 C0/3AE1: EB XBA C0/3AE2: 8D 80 21 STA $2180 C0/3AE5: EB XBA C0/3AE6: 8D 80 21 STA $2180 C0/3AE9: EB XBA C0/3AEA: 8D 80 21 STA $2180 C0/3AED: EB XBA C0/3AEE: 8D 80 21 STA $2180 C0/3AF1: EB XBA C0/3AF2: 8D 80 21 STA $2180 C0/3AF5: EB XBA C0/3AF6: 8D 80 21 STA $2180 C0/3AF9: EB XBA C0/3AFA: 8D 80 21 STA $2180 C0/3AFD: 7B TDC C0/3AFE: A2 63 81 LDX #$8163 C0/3B01: 8E 81 21 STX $2181 C0/3B04: A9 7E LDA #$7E C0/3B06: 8D 83 21 STA $2183 C0/3B09: A5 51 LDA $51 C0/3B0B: 8D 80 21 STA $2180 C0/3B0E: EB XBA C0/3B0F: A5 52 LDA $52 C0/3B11: 8D 80 21 STA $2180 C0/3B14: EB XBA C0/3B15: 8D 80 21 STA $2180 C0/3B18: EB XBA C0/3B19: 8D 80 21 STA $2180 C0/3B1C: EB XBA C0/3B1D: 8D 80 21 STA $2180 C0/3B20: EB XBA C0/3B21: 8D 80 21 STA $2180 C0/3B24: EB XBA C0/3B25: 8D 80 21 STA $2180 C0/3B28: EB XBA C0/3B29: 8D 80 21 STA $2180 C0/3B2C: EB XBA C0/3B2D: 8D 80 21 STA $2180 C0/3B30: EB XBA C0/3B31: 8D 80 21 STA $2180 C0/3B34: EB XBA C0/3B35: 8D 80 21 STA $2180 C0/3B38: EB XBA C0/3B39: 8D 80 21 STA $2180 C0/3B3C: EB XBA C0/3B3D: 8D 80 21 STA $2180 C0/3B40: EB XBA C0/3B41: 8D 80 21 STA $2180 C0/3B44: EB XBA C0/3B45: 8D 80 21 STA $2180 C0/3B48: EB XBA C0/3B49: 8D 80 21 STA $2180 C0/3B4C: 7B TDC C0/3B4D: A2 A3 81 LDX #$81A3 C0/3B50: 8E 81 21 STX $2181 C0/3B53: A9 7E LDA #$7E C0/3B55: 8D 83 21 STA $2183 C0/3B58: A9 04 LDA #$04 C0/3B5A: 8D 80 21 STA $2180 C0/3B5D: EB XBA C0/3B5E: 8D 80 21 STA $2180 C0/3B61: EB XBA C0/3B62: 8D 80 21 STA $2180 C0/3B65: EB XBA C0/3B66: 8D 80 21 STA $2180 C0/3B69: EB XBA C0/3B6A: 8D 80 21 STA $2180 C0/3B6D: EB XBA C0/3B6E: 8D 80 21 STA $2180 C0/3B71: EB XBA C0/3B72: 8D 80 21 STA $2180 C0/3B75: EB XBA C0/3B76: 8D 80 21 STA $2180 C0/3B79: EB XBA C0/3B7A: 8D 80 21 STA $2180 C0/3B7D: EB XBA C0/3B7E: 8D 80 21 STA $2180 C0/3B81: EB XBA C0/3B82: 8D 80 21 STA $2180 C0/3B85: EB XBA C0/3B86: 8D 80 21 STA $2180 C0/3B89: EB XBA C0/3B8A: 8D 80 21 STA $2180 C0/3B8D: EB XBA C0/3B8E: 8D 80 21 STA $2180 C0/3B91: EB XBA C0/3B92: 8D 80 21 STA $2180 C0/3B95: EB XBA C0/3B96: 8D 80 21 STA $2180 C0/3B99: 7B TDC C0/3B9A: 60 RTS ; [ Update Window 2 Position HDMA Table ] set_window_pos_adrs: C0/3B9B: AD 66 05 LDA $0566 C0/3B9E: 4A LSR C0/3B9F: B0 2F BCS $3BD0 C0/3BA1: A9 7E LDA #$7E C0/3BA3: 48 PHA C0/3BA4: AB PLB C0/3BA5: C2 20 REP #$20 C0/3BA7: A6 00 LDX $00 C0/3BA9: A9 B3 8C LDA #$8CB3 C0/3BAC: BC 66 7D LDY $7D66,X C0/3BAF: C0 A3 8C CPY #$8CA3 C0/3BB2: F0 03 BEQ $3BB7 C0/3BB4: 9D 66 7D STA $7D66,X C0/3BB7: 18 CLC C0/3BB8: 69 10 00 ADC #$0010 C0/3BBB: E8 INX C0/3BBC: E8 INX C0/3BBD: E8 INX C0/3BBE: E0 4E 00 CPX #$004E C0/3BC1: D0 E9 BNE $3BAC C0/3BC3: A9 F3 8F LDA #$8FF3 C0/3BC6: 8D 63 7D STA $7D63 C0/3BC9: 7B TDC C0/3BCA: E2 20 SEP #$20 C0/3BCC: 7B TDC C0/3BCD: 48 PHA C0/3BCE: AB PLB C0/3BCF: 60 RTS C0/3BD0: A9 7E LDA #$7E C0/3BD2: 48 PHA C0/3BD3: AB PLB C0/3BD4: C2 20 REP #$20 C0/3BD6: A6 00 LDX $00 C0/3BD8: A9 53 8E LDA #$8E53 C0/3BDB: BC 66 7D LDY $7D66,X C0/3BDE: C0 A3 8C CPY #$8CA3 C0/3BE1: F0 03 BEQ $3BE6 C0/3BE3: 9D 66 7D STA $7D66,X C0/3BE6: 18 CLC C0/3BE7: 69 10 00 ADC #$0010 C0/3BEA: E8 INX C0/3BEB: E8 INX C0/3BEC: E8 INX C0/3BED: E0 4E 00 CPX #$004E C0/3BF0: D0 E9 BNE $3BDB C0/3BF2: A9 F3 8F LDA #$8FF3 C0/3BF5: 8D 63 7D STA $7D63 C0/3BF8: 7B TDC C0/3BF9: E2 20 SEP #$20 C0/3BFB: 7B TDC C0/3BFC: 48 PHA C0/3BFD: AB PLB C0/3BFE: 60 RTS ; [ Init Window 2 Position HDMA Data ] set_window_data: C0/3BFF: A9 7E LDA #$7E C0/3C01: 48 PHA C0/3C02: AB PLB C0/3C03: C2 20 REP #$20 C0/3C05: A6 00 LDX $00 C0/3C07: A9 FF 00 LDA #$00FF C0/3C0A: 9D F3 8F STA $8FF3,X C0/3C0D: A9 00 FF LDA #$FF00 C0/3C10: 9D A3 8C STA $8CA3,X C0/3C13: E8 INX C0/3C14: E8 INX C0/3C15: E0 10 00 CPX #$0010 C0/3C18: D0 ED BNE $3C07 C0/3C1A: A6 00 LDX $00 C0/3C1C: A9 00 FF LDA #$FF00 C0/3C1F: 9D B3 8C STA $8CB3,X C0/3C22: 9D 53 8E STA $8E53,X C0/3C25: E8 INX C0/3C26: E8 INX C0/3C27: E0 A0 01 CPX #$01A0 C0/3C2A: D0 F0 BNE $3C1C C0/3C2C: 7B TDC C0/3C2D: E2 20 SEP #$20 C0/3C2F: 7B TDC C0/3C30: 48 PHA C0/3C31: AB PLB C0/3C32: 60 RTS ; [ Init Fixed Color Add/Sub HDMA Table ] init_const_color: C0/3C33: A9 7E LDA #$7E C0/3C35: 48 PHA C0/3C36: AB PLB C0/3C37: C2 20 REP #$20 C0/3C39: A6 00 LDX $00 C0/3C3B: A9 53 87 LDA #$8753 C0/3C3E: 9D 08 7D STA $7D08,X C0/3C41: E8 INX C0/3C42: E8 INX C0/3C43: E8 INX C0/3C44: E0 51 00 CPX #$0051 C0/3C47: D0 F2 BNE $3C3B C0/3C49: 7B TDC C0/3C4A: E2 20 SEP #$20 C0/3C4C: 7B TDC C0/3C4D: 48 PHA C0/3C4E: AB PLB C0/3C4F: 60 RTS ; [ Init Fixed Color Add/Sub HDMA Data ] set_const_data: C0/3C50: A2 53 87 LDX #$8753 ; set WRAM address to $7E8753 C0/3C53: 8E 81 21 STX $2181 C0/3C56: A9 7E LDA #$7E C0/3C58: 8D 83 21 STA $2183 C0/3C5B: A6 00 LDX $00 C0/3C5D: A9 E0 LDA #$E0 ; set all 8 scanlines to black C0/3C5F: 8D 80 21 STA $2180 C0/3C62: A9 00 LDA #$00 C0/3C64: 8D 80 21 STA $2180 C0/3C67: E8 INX C0/3C68: E0 08 00 CPX #$0008 C0/3C6B: D0 F0 BNE $3C5D C0/3C6D: A2 43 89 LDX #$8943 ; set WRAM address to $7E8943 C0/3C70: 8E 81 21 STX $2181 C0/3C73: A9 7E LDA #$7E C0/3C75: 8D 83 21 STA $2183 C0/3C78: A6 00 LDX $00 C0/3C7A: BF D7 3C C0 LDA $C03CD7,X ; copy fixed color data for dialog window C0/3C7E: 8D 80 21 STA $2180 ; each byte gets copied twice C0/3C81: BF D7 3C C0 LDA $C03CD7,X C0/3C85: 8D 80 21 STA $2180 C0/3C88: E8 INX C0/3C89: E0 C8 00 CPX #$00C8 C0/3C8C: D0 EC BNE $3C7A C0/3C8E: A2 03 89 LDX #$8903 ; set WRAM address to $7E8903 C0/3C91: 8E 81 21 STX $2181 C0/3C94: A9 7E LDA #$7E C0/3C96: 8D 83 21 STA $2183 C0/3C99: A6 00 LDX $00 C0/3C9B: BF C7 3C C0 LDA $C03CC7,X ; copy fixed color data for horizontal fade bars (from ending) C0/3C9F: 8D 80 21 STA $2180 ; each byte gets copied twice C0/3CA2: 8D 80 21 STA $2180 C0/3CA5: E8 INX C0/3CA6: E0 10 00 CPX #$0010 C0/3CA9: D0 F0 BNE $3C9B C0/3CAB: A2 23 89 LDX #$8923 ; repeat in reverse order C0/3CAE: 8E 81 21 STX $2181 C0/3CB1: A9 7E LDA #$7E C0/3CB3: 8D 83 21 STA $2183 C0/3CB6: A2 10 00 LDX #$0010 C0/3CB9: BF C6 3C C0 LDA $C03CC6,X C0/3CBD: 8D 80 21 STA $2180 ; each byte gets copied twice C0/3CC0: 8D 80 21 STA $2180 C0/3CC3: CA DEX C0/3CC4: D0 F3 BNE $3CB9 C0/3CC6: 60 RTS ; fixed color data for horizontal fade bars, from ending fade_in_out_tbl: C0/3CC7: .DB $FC, $F8, $F4, $F0, $EE, $EC, $EA, $E9, $E8, $E7, $E6, $E5, $E4, $E3, $E2, $E1 ; fixed color data for dialog window gradient dma_const_color_tbl: C0/3CD7: .DB $E7, $E7, $E7, $E6, $E6, $E6, $E6, $E6 C0/3CDF: .DB $E5, $E5, $E5, $E5, $E5, $E4, $E4, $E4 C0/3CE7: .DB $E4, $E4, $E3, $E3, $E3, $E3, $E3, $E2 C0/3CEF: .DB $E2, $E2, $E2, $E2, $E1, $E1, $E1, $E1 C0/3CF7: .DB $E1, $E0, $E0, $E0, $E0, $E0, $E1, $E1 C0/3CFF: .DB $E1, $E1, $E1, $E2, $E2, $E2, $E2, $E2 C0/3D07: .DB $E3, $E3, $E3, $E3, $E3, $E4, $E4, $E4 C0/3D0F: .DB $E4, $E4, $E5, $E5, $E5, $E5, $E5, $E6 C0/3D17: .DB $E6, $E6, $E6, $E6, $E7, $E7, $E7, $E7 C0/3D1F: .DB $E7, $E7, $E6, $E6, $E6, $E6, $E5, $E5 C0/3D27: .DB $E5, $E5, $E4, $E4, $E4, $E4, $E3, $E3 C0/3D2F: .DB $E3, $E3, $E2, $E2, $E2, $E2, $E1, $E1 C0/3D37: .DB $E1, $E1, $E0, $E0, $E0, $E0, $E1, $E1 C0/3D3F: .DB $E1, $E1, $E2, $E2, $E2, $E2, $E3, $E3 C0/3D47: .DB $E3, $E3, $E4, $E4, $E4, $E4, $E5, $E5 C0/3D4F: .DB $E5, $E5, $E6, $E6, $E6, $E6, $E7, $E7 C0/3D57: .DB $E7, $E6, $E6, $E6, $E5, $E5, $E5, $E4 C0/3D5F: .DB $E4, $E4, $E3, $E3, $E3, $E2, $E2, $E2 C0/3D67: .DB $E1, $E1, $E1, $E0, $E0, $E0, $E1, $E1 C0/3D6F: .DB $E1, $E2, $E2, $E2, $E3, $E3, $E3, $E4 C0/3D77: .DB $E4, $E4, $E5, $E5, $E5, $E6, $E6, $E6 C0/3D7F: .DB $E6, $E5, $E5, $E4, $E4, $E3, $E3, $E2 C0/3D87: .DB $E2, $E1, $E1, $E0, $E0, $E1, $E1, $E2 C0/3D8F: .DB $E2, $E3, $E3, $E4, $E4, $E5, $E5, $E6 C0/3D97: .DB $E4, $E3, $E2, $E1, $E0, $E1, $E2, $E3 ; [ Init Color Add/Sub Settings HDMA Table ] init_addsub_local: C0/3D9F: A9 7E LDA #$7E C0/3DA1: 48 PHA C0/3DA2: AB PLB C0/3DA3: C2 20 REP #$20 C0/3DA5: A6 00 LDX $00 C0/3DA7: A9 63 8C LDA #$8C63 C0/3DAA: 9D 19 7E STA $7E19,X C0/3DAD: E8 INX C0/3DAE: E8 INX C0/3DAF: E8 INX C0/3DB0: E0 51 00 CPX #$0051 C0/3DB3: D0 F2 BNE $3DA7 C0/3DB5: 7B TDC C0/3DB6: E2 20 SEP #$20 C0/3DB8: 7B TDC C0/3DB9: 48 PHA C0/3DBA: AB PLB C0/3DBB: 60 RTS ; [ Init Color Add/Sub Settings HDMA Data ] set_addsub_data: C0/3DBC: A9 7E LDA #$7E C0/3DBE: 48 PHA C0/3DBF: AB PLB C0/3DC0: A6 00 LDX $00 C0/3DC2: A5 50 LDA $50 C0/3DC4: 9D 63 8C STA $8C63,X C0/3DC7: 9D 73 8C STA $8C73,X C0/3DCA: A5 4E LDA $4E C0/3DCC: 9D 64 8C STA $8C64,X C0/3DCF: 7B TDC C0/3DD0: 9D 74 8C STA $8C74,X C0/3DD3: A9 20 LDA #$20 C0/3DD5: 9D D3 8A STA $8AD3,X C0/3DD8: 9D E3 8A STA $8AE3,X C0/3DDB: 9D F3 8A STA $8AF3,X C0/3DDE: 9D 03 8B STA $8B03,X C0/3DE1: 9D 13 8B STA $8B13,X C0/3DE4: 9D 23 8B STA $8B23,X C0/3DE7: 9D 33 8B STA $8B33,X C0/3DEA: 9D 43 8B STA $8B43,X C0/3DED: 9D 53 8B STA $8B53,X C0/3DF0: 9D 63 8B STA $8B63,X C0/3DF3: 9D 73 8B STA $8B73,X C0/3DF6: 9D 83 8B STA $8B83,X C0/3DF9: 9D 93 8B STA $8B93,X C0/3DFC: 9D A3 8B STA $8BA3,X C0/3DFF: 9D B3 8B STA $8BB3,X C0/3E02: 9D C3 8B STA $8BC3,X C0/3E05: 9D D3 8B STA $8BD3,X C0/3E08: 9D E3 8B STA $8BE3,X C0/3E0B: 9D F3 8B STA $8BF3,X C0/3E0E: 9D 03 8C STA $8C03,X C0/3E11: 9D 13 8C STA $8C13,X C0/3E14: 9D 23 8C STA $8C23,X C0/3E17: 9D 33 8C STA $8C33,X C0/3E1A: 9D 43 8C STA $8C43,X C0/3E1D: 9D 53 8C STA $8C53,X C0/3E20: 9D 83 8C STA $8C83,X C0/3E23: 9D 93 8C STA $8C93,X C0/3E26: E8 INX C0/3E27: E8 INX C0/3E28: E0 10 00 CPX #$0010 C0/3E2B: D0 95 BNE $3DC2 C0/3E2D: A6 00 LDX $00 C0/3E2F: A9 01 LDA #$01 C0/3E31: 9D D4 8A STA $8AD4,X C0/3E34: 9D DC 8A STA $8ADC,X C0/3E37: 9D E4 8A STA $8AE4,X C0/3E3A: 9D EC 8A STA $8AEC,X C0/3E3D: 9D F4 8A STA $8AF4,X C0/3E40: 9D FC 8A STA $8AFC,X C0/3E43: 9D 04 8B STA $8B04,X C0/3E46: 9D 0C 8B STA $8B0C,X C0/3E49: 9D 14 8B STA $8B14,X C0/3E4C: 9D 64 8B STA $8B64,X C0/3E4F: 9D 6C 8B STA $8B6C,X C0/3E52: 9D 74 8B STA $8B74,X C0/3E55: 9D 7C 8B STA $8B7C,X C0/3E58: 9D 84 8B STA $8B84,X C0/3E5B: 9D 8C 8B STA $8B8C,X C0/3E5E: 9D 94 8B STA $8B94,X C0/3E61: 9D D4 8B STA $8BD4,X C0/3E64: 9D DC 8B STA $8BDC,X C0/3E67: 9D E4 8B STA $8BE4,X C0/3E6A: 9D EC 8B STA $8BEC,X C0/3E6D: 9D F4 8B STA $8BF4,X C0/3E70: 9D 24 8C STA $8C24,X C0/3E73: 9D 2C 8C STA $8C2C,X C0/3E76: 9D 34 8C STA $8C34,X C0/3E79: 9D 54 8C STA $8C54,X C0/3E7C: A9 1F LDA #$1F C0/3E7E: 9D 84 8C STA $8C84,X C0/3E81: 9D 8C 8C STA $8C8C,X C0/3E84: A9 81 LDA #$81 C0/3E86: 9D 1C 8B STA $8B1C,X C0/3E89: 9D 24 8B STA $8B24,X C0/3E8C: 9D 2C 8B STA $8B2C,X C0/3E8F: 9D 34 8B STA $8B34,X C0/3E92: 9D 3C 8B STA $8B3C,X C0/3E95: 9D 44 8B STA $8B44,X C0/3E98: 9D 4C 8B STA $8B4C,X C0/3E9B: 9D 54 8B STA $8B54,X C0/3E9E: 9D 5C 8B STA $8B5C,X C0/3EA1: 9D 9C 8B STA $8B9C,X C0/3EA4: 9D A4 8B STA $8BA4,X C0/3EA7: 9D AC 8B STA $8BAC,X C0/3EAA: 9D B4 8B STA $8BB4,X C0/3EAD: 9D BC 8B STA $8BBC,X C0/3EB0: 9D C4 8B STA $8BC4,X C0/3EB3: 9D CC 8B STA $8BCC,X C0/3EB6: 9D FC 8B STA $8BFC,X C0/3EB9: 9D 04 8C STA $8C04,X C0/3EBC: 9D 0C 8C STA $8C0C,X C0/3EBF: 9D 14 8C STA $8C14,X C0/3EC2: 9D 1C 8C STA $8C1C,X C0/3EC5: 9D 3C 8C STA $8C3C,X C0/3EC8: 9D 44 8C STA $8C44,X C0/3ECB: 9D 4C 8C STA $8C4C,X C0/3ECE: 9D 5C 8C STA $8C5C,X C0/3ED1: A9 9F LDA #$9F C0/3ED3: 9D 94 8C STA $8C94,X C0/3ED6: 9D 9C 8C STA $8C9C,X C0/3ED9: E8 INX C0/3EDA: E8 INX C0/3EDB: E0 08 00 CPX #$0008 C0/3EDE: F0 03 BEQ $3EE3 C0/3EE0: 4C 2F 3E JMP $3E2F C0/3EE3: 7B TDC C0/3EE4: 48 PHA C0/3EE5: AB PLB C0/3EE6: 60 RTS ; [ Init Mosaic/BG Location HDMA Table and Data ] init_scr_base: C0/3EE7: A6 00 LDX $00 C0/3EE9: A9 7E LDA #$7E C0/3EEB: 48 PHA C0/3EEC: AB PLB C0/3EED: C2 20 REP #$20 C0/3EEF: A9 33 82 LDA #$8233 C0/3EF2: 9D 9C 7B STA $7B9C,X C0/3EF5: E8 INX C0/3EF6: E8 INX C0/3EF7: E8 INX C0/3EF8: E0 51 00 CPX #$0051 C0/3EFB: D0 F2 BNE $3EEF C0/3EFD: 7B TDC C0/3EFE: E2 20 SEP #$20 C0/3F00: A6 00 LDX $00 C0/3F02: 7B TDC C0/3F03: 9D B3 81 STA $81B3,X C0/3F06: 9D D3 81 STA $81D3,X C0/3F09: 9D 13 82 STA $8213,X C0/3F0C: 9D 53 82 STA $8253,X C0/3F0F: A9 0F LDA #$0F C0/3F11: 9D F3 81 STA $81F3,X C0/3F14: 9D 33 82 STA $8233,X C0/3F17: A9 40 LDA #$40 C0/3F19: 9D B4 81 STA $81B4,X C0/3F1C: 9D F4 81 STA $81F4,X C0/3F1F: A9 48 LDA #$48 C0/3F21: 9D 14 82 STA $8214,X C0/3F24: 9D 34 82 STA $8234,X C0/3F27: 9D D4 81 STA $81D4,X C0/3F2A: 9D 54 82 STA $8254,X C0/3F2D: A9 50 LDA #$50 C0/3F2F: 9D D5 81 STA $81D5,X C0/3F32: 9D 15 82 STA $8215,X C0/3F35: 9D 35 82 STA $8235,X C0/3F38: 9D 55 82 STA $8255,X C0/3F3B: A9 44 LDA #$44 C0/3F3D: 9D B6 81 STA $81B6,X C0/3F40: 9D D6 81 STA $81D6,X C0/3F43: 9D F6 81 STA $81F6,X C0/3F46: 9D 56 82 STA $8256,X C0/3F49: A9 58 LDA #$58 C0/3F4B: 9D 16 82 STA $8216,X C0/3F4E: 9D 36 82 STA $8236,X C0/3F51: E8 INX C0/3F52: E8 INX C0/3F53: E8 INX C0/3F54: E8 INX C0/3F55: E0 20 00 CPX #$0020 C0/3F58: D0 A8 BNE $3F02 C0/3F5A: 7B TDC C0/3F5B: 48 PHA C0/3F5C: AB PLB C0/3F5D: 60 RTS ; [ Flip BG1 Map Location ] C0/3F5E: A6 00 LDX $00 C0/3F60: AD 8C 05 LDA $058C C0/3F63: 49 04 EOR #$04 C0/3F65: 8D 8C 05 STA $058C C0/3F68: 9F 14 82 7E STA $7E8214,X C0/3F6C: 9F 34 82 7E STA $7E8234,X C0/3F70: 9F D4 81 7E STA $7E81D4,X C0/3F74: E8 INX C0/3F75: E8 INX C0/3F76: E8 INX C0/3F77: E8 INX C0/3F78: E0 20 00 CPX #$0020 C0/3F7B: D0 EB BNE $3F68 C0/3F7D: 60 RTS ; [ Flip BG2 Map Location ] C0/3F7E: A6 00 LDX $00 C0/3F80: AD 8E 05 LDA $058E C0/3F83: 49 04 EOR #$04 C0/3F85: 8D 8E 05 STA $058E C0/3F88: 9F D5 81 7E STA $7E81D5,X C0/3F8C: 9F 15 82 7E STA $7E8215,X C0/3F90: 9F 35 82 7E STA $7E8235,X C0/3F94: E8 INX C0/3F95: E8 INX C0/3F96: E8 INX C0/3F97: E8 INX C0/3F98: E0 20 00 CPX #$0020 C0/3F9B: D0 EB BNE $3F88 C0/3F9D: 60 RTS ; [ Flip BG3 Map Location ] C0/3F9E: A6 00 LDX $00 C0/3FA0: AD 90 05 LDA $0590 C0/3FA3: 49 04 EOR #$04 C0/3FA5: 8D 90 05 STA $0590 C0/3FA8: 9F 16 82 7E STA $7E8216,X C0/3FAC: 9F 36 82 7E STA $7E8236,X C0/3FB0: E8 INX C0/3FB1: E8 INX C0/3FB2: E8 INX C0/3FB3: E8 INX C0/3FB4: E0 20 00 CPX #$0020 C0/3FB7: D0 EF BNE $3FA8 C0/3FB9: 60 RTS ; [ Flip All BG Map Locations (unused) ] C0/3FBA: AD 8C 05 LDA $058C C0/3FBD: 49 04 EOR #$04 C0/3FBF: 8D 8C 05 STA $058C C0/3FC2: AD 8E 05 LDA $058E C0/3FC5: 49 04 EOR #$04 C0/3FC7: 8D 8E 05 STA $058E C0/3FCA: AD 90 05 LDA $0590 C0/3FCD: 49 04 EOR #$04 C0/3FCF: 8D 90 05 STA $0590 C0/3FD2: A6 00 LDX $00 C0/3FD4: AD 8C 05 LDA $058C C0/3FD7: 9F 14 82 7E STA $7E8214,X C0/3FDB: 9F 34 82 7E STA $7E8234,X C0/3FDF: 9F D4 81 7E STA $7E81D4,X C0/3FE3: AD 8E 05 LDA $058E C0/3FE6: 9F D5 81 7E STA $7E81D5,X C0/3FEA: 9F 15 82 7E STA $7E8215,X C0/3FEE: 9F 35 82 7E STA $7E8235,X C0/3FF2: AD 90 05 LDA $0590 C0/3FF5: 9F 16 82 7E STA $7E8216,X C0/3FF9: 9F 36 82 7E STA $7E8236,X C0/3FFD: E8 INX C0/3FFE: E8 INX C0/3FFF: E8 INX C0/4000: E8 INX C0/4001: E0 20 00 CPX #$0020 C0/4004: D0 CE BNE $3FD4 C0/4006: 60 RTS ; [ Random BG3 Mosaic (unused) ] C0/4007: A9 7E LDA #$7E C0/4009: 48 PHA C0/400A: AB PLB C0/400B: A5 46 LDA $46 C0/400D: 0A ASL C0/400E: 0A ASL C0/400F: AA TAX C0/4010: A4 00 LDY $00 C0/4012: BF 00 FD C0 LDA $C0FD00,X ; random number table C0/4016: C9 C0 CMP #$C0 C0/4018: 90 06 BCC $4020 ; branch if less than 192 (3/4 chance) C0/401A: 29 30 AND #$30 ; set mosaic size (0..3) C0/401C: 09 04 ORA #$04 ; enable mosaic in bg3 C0/401E: 80 01 BRA $4021 C0/4020: 7B TDC C0/4021: 99 D3 81 STA $81D3,Y C0/4024: E8 INX C0/4025: C8 INY C0/4026: C8 INY C0/4027: C8 INY C0/4028: C8 INY C0/4029: C0 20 00 CPY #$0020 C0/402C: D0 E4 BNE $4012 C0/402E: 7B TDC C0/402F: 48 PHA C0/4030: AB PLB C0/4031: 60 RTS ; [ Init BG Scroll HDMA Table and Data ] init_bg123_pos: C0/4032: A9 7E LDA #$7E C0/4034: 48 PHA C0/4035: AB PLB C0/4036: C2 20 REP #$20 C0/4038: A6 00 LDX $00 C0/403A: A9 73 82 LDA #$8273 ; set HDMA tables C0/403D: 9D FA 7B STA $7BFA,X C0/4040: A9 93 82 LDA #$8293 C0/4043: 9D FD 7B STA $7BFD,X C0/4046: A9 B3 82 LDA #$82B3 C0/4049: 9D 55 7C STA $7C55,X C0/404C: A9 D3 82 LDA #$82D3 C0/404F: 9D 58 7C STA $7C58,X C0/4052: A9 F3 82 LDA #$82F3 C0/4055: 9D B0 7C STA $7CB0,X C0/4058: 9D B3 7C STA $7CB3,X C0/405B: E8 INX C0/405C: E8 INX C0/405D: E8 INX C0/405E: E8 INX C0/405F: E8 INX C0/4060: E8 INX C0/4061: E0 4E 00 CPX #$004E C0/4064: D0 D4 BNE $403A C0/4066: A6 00 LDX $00 ; bg1 scroll HDMA data for dialog window C0/4068: 7B TDC C0/4069: 9D 13 83 STA $8313,X ; clear horizontal scroll values C0/406C: E8 INX C0/406D: E8 INX C0/406E: E0 20 02 CPX #$0220 C0/4071: D0 F6 BNE $4069 C0/4073: A6 00 LDX $00 C0/4075: 9B TXY C0/4076: BF 36 42 C0 LDA $C04236,X C0/407A: 29 FF 00 AND #$00FF C0/407D: 99 35 83 STA $8335,Y ; set vertical scroll values C0/4080: C8 INY C0/4081: C8 INY C0/4082: C8 INY C0/4083: C8 INY C0/4084: E8 INX C0/4085: E0 80 00 CPX #$0080 C0/4088: D0 EC BNE $4076 C0/408A: A6 00 LDX $00 ; bg3 scroll HDMA data for dialog window C0/408C: 9B TXY C0/408D: 7B TDC C0/408E: 99 F3 85 STA $85F3,Y ; clear horizontal scroll values C0/4091: BF 16 41 C0 LDA $C04116,X C0/4095: 29 FF 00 AND #$00FF C0/4098: 99 F5 85 STA $85F5,Y ; set vertical scroll values C0/409B: E8 INX C0/409C: E8 INX C0/409D: C8 INY C0/409E: C8 INY C0/409F: C8 INY C0/40A0: C8 INY C0/40A1: C0 20 01 CPY #$0120 C0/40A4: D0 E7 BNE $408D C0/40A6: A6 00 LDX $00 ; bg3 scroll HDMA data for map name window C0/40A8: 9B TXY C0/40A9: 7B TDC C0/40AA: 99 73 85 STA $8573,Y ; clear horizontal scroll values C0/40AD: BF F2 41 C0 LDA $C041F2,X C0/40B1: 29 FF 00 AND #$00FF C0/40B4: 99 75 85 STA $8575,Y ; set vertical scroll values C0/40B7: E8 INX C0/40B8: E8 INX C0/40B9: C8 INY C0/40BA: C8 INY C0/40BB: C8 INY C0/40BC: C8 INY C0/40BD: C0 80 00 CPY #$0080 C0/40C0: D0 E7 BNE $40A9 C0/40C2: A6 00 LDX $00 ; bg1 scroll HDMA data for map name window C0/40C4: 7B TDC C0/40C5: 9D 33 85 STA $8533,X ; clear horizontal scroll values C0/40C8: E8 INX C0/40C9: E8 INX C0/40CA: E0 20 00 CPX #$0020 C0/40CD: D0 F6 BNE $40C5 C0/40CF: A6 00 LDX $00 C0/40D1: 7B TDC C0/40D2: 7B TDC C0/40D3: 9D 53 85 STA $8553,X C0/40D6: A9 28 00 LDA #$0028 C0/40D9: 9D 55 85 STA $8555,X ; set vertical scroll values to $28 C0/40DC: E8 INX C0/40DD: E8 INX C0/40DE: E8 INX C0/40DF: E8 INX C0/40E0: E0 20 00 CPX #$0020 C0/40E3: D0 ED BNE $40D2 C0/40E5: A6 00 LDX $00 ; bg3 scroll data (unused) C0/40E7: A9 B0 00 LDA #$00B0 C0/40EA: 9D 15 87 STA $8715,X C0/40ED: 7B TDC C0/40EE: 9D 13 87 STA $8713,X C0/40F1: E8 INX C0/40F2: E8 INX C0/40F3: E8 INX C0/40F4: E8 INX C0/40F5: E0 20 00 CPX #$0020 C0/40F8: D0 ED BNE $40E7 C0/40FA: A6 00 LDX $00 ; bg3 scroll data for horizontal fade bars (from ending) C0/40FC: A9 B8 00 LDA #$00B8 C0/40FF: 9D 35 87 STA $8735,X C0/4102: 7B TDC C0/4103: 9D 33 87 STA $8733,X C0/4106: E8 INX C0/4107: E8 INX C0/4108: E8 INX C0/4109: E8 INX C0/410A: E0 20 00 CPX #$0020 C0/410D: D0 ED BNE $40FC C0/410F: 7B TDC C0/4110: E2 20 SEP #$20 C0/4112: 7B TDC C0/4113: 48 PHA C0/4114: AB PLB C0/4115: 60 RTS ; bg3 vertical scroll values for dialog window bg3_mess_pos_tbl: C0/4116: .DW $FFFC, $FFFC, $FFFC, $FFFC, $FFFC, $FFFC, $FFFC, $FFFC C0/4126: .DW $FFFC, $FFFC, $FFFC, $FFFC, $FFFC, $FFFC, $FFFC, $FFFC C0/4136: .DW $FFFC, $FFFC, $FFFC, $FFFC, $FFFD, $FFFD, $FFFD, $FFFD C0/4146: .DW $FFFD, $FFFD, $FFFD, $FFFD, $FFFD, $FFFD, $FFFD, $FFFD C0/4156: .DW $FFFD, $FFFD, $FFFD, $FFFE, $FFFE, $FFFE, $FFFE, $FFFE C0/4166: .DW $FFFE, $FFFE, $FFFE, $FFFE, $FFFE, $FFFE, $FFFE, $FFFE C0/4176: .DW $FFFE, $FFFE, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF C0/4186: .DW $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF C0/4196: .DW $FFFF, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/41A6: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/41B6: .DW $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001 C0/41C6: .DW $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001 C0/41D6: .DW $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001 C0/41E6: .DW $0001, $0001, $0001, $0001, $0001, $0001 ; bg1 vertical scroll values for map name window bg3_map_name_pos_tbl: C0/41F2: .DW $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $FFFA C0/4202: .DW $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $FFFA C0/4212: .DW $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $FFFA, $0000, $0000 C0/4222: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/4232: .DW $0000, $0000 ; bg1 vertical scroll values for dialog window (compressed the window vertically while it's opening) bg1_mess_pos_tbl: C0/4236: .DB $F8, $F8, $F9, $F9, $F9, $F9, $FA, $FA C0/423E: .DB $FA, $FB, $FB, $FB, $FB, $FC, $FC, $FC C0/4246: .DB $FD, $FD, $FD, $FD, $FE, $FE, $FE, $FF C0/424E: .DB $FF, $FF, $FF, $00, $00, $01, $01, $01 C0/4256: .DB $01, $02, $02, $02, $03, $03, $03, $03 C0/425E: .DB $04, $04, $04, $05, $05, $05, $05, $06 C0/4266: .DB $06, $06, $07, $07, $07, $07, $08, $08 C0/426E: .DB $F0, $F1, $F2, $F2, $F3, $F4, $F5, $F6 C0/4276: .DB $F6, $F7, $F8, $F9, $FA, $FA, $FB, $FC C0/427E: .DB $FD, $FE, $FE, $FF, $01, $02, $02, $03 C0/4286: .DB $04, $05, $06, $06, $07, $08, $09, $0A C0/428E: .DB $0A, $0B, $0C, $0D, $0E, $0E, $0F, $10 C0/4296: .DB $E8, $EA, $EC, $EE, $F0, $F2, $F4, $F6 C0/429E: .DB $F8, $FA, $FC, $FE, $02, $04, $06, $08 C0/42A6: .DB $0A, $0C, $0E, $10, $12, $14, $16, $18 C0/42AE: .DB $E0, $E8, $F0, $F8, $08, $10, $18, $20 ; [ Update BG Scroll HDMA Data ] set_bg123_pos: C0/42B6: C2 20 REP #$20 C0/42B8: A5 64 LDA $64 C0/42BA: 38 SEC C0/42BB: E9 08 SBC #$0008 C0/42BE: E2 20 SEP #$20 C0/42C0: 8D 0F 21 STA $210F C0/42C3: EB XBA C0/42C4: 8D 0F 21 STA $210F C0/42C7: C2 20 REP #$20 C0/42C9: A5 68 LDA $68 C0/42CB: 18 CLC C0/42CC: 6D 4E 07 ADC $074E C0/42CF: E2 20 SEP #$20 C0/42D1: 8D 10 21 STA $2110 C0/42D4: EB XBA C0/42D5: 8D 10 21 STA $2110 C0/42D8: 7B TDC C0/42D9: A9 7E LDA #$7E C0/42DB: 48 PHA C0/42DC: AB PLB C0/42DD: C2 20 REP #$20 C0/42DF: A5 5C LDA $5C C0/42E1: 38 SEC C0/42E2: E9 08 00 SBC #$0008 C0/42E5: 8D 73 82 STA $8273 C0/42E8: 8D 77 82 STA $8277 C0/42EB: 8D 7B 82 STA $827B C0/42EE: 8D 7F 82 STA $827F C0/42F1: 8D 83 82 STA $8283 C0/42F4: 8D 87 82 STA $8287 C0/42F7: 8D 8B 82 STA $828B C0/42FA: 8D 8F 82 STA $828F C0/42FD: 8D 93 82 STA $8293 C0/4300: 8D 97 82 STA $8297 C0/4303: 8D 9B 82 STA $829B C0/4306: 8D 9F 82 STA $829F C0/4309: 8D A3 82 STA $82A3 C0/430C: 8D A7 82 STA $82A7 C0/430F: 8D AB 82 STA $82AB C0/4312: 8D AF 82 STA $82AF C0/4315: A5 64 LDA $64 C0/4317: 38 SEC C0/4318: E9 08 00 SBC #$0008 C0/431B: 8D B3 82 STA $82B3 C0/431E: 8D B7 82 STA $82B7 C0/4321: 8D BB 82 STA $82BB C0/4324: 8D BF 82 STA $82BF C0/4327: 8D C3 82 STA $82C3 C0/432A: 8D C7 82 STA $82C7 C0/432D: 8D CB 82 STA $82CB C0/4330: 8D CF 82 STA $82CF C0/4333: 8D D3 82 STA $82D3 C0/4336: 8D D7 82 STA $82D7 C0/4339: 8D DB 82 STA $82DB C0/433C: 8D DF 82 STA $82DF C0/433F: 8D E3 82 STA $82E3 C0/4342: 8D E7 82 STA $82E7 C0/4345: 8D EB 82 STA $82EB C0/4348: 8D EF 82 STA $82EF C0/434B: A5 6C LDA $6C C0/434D: 38 SEC C0/434E: E9 08 00 SBC #$0008 C0/4351: 8D F3 82 STA $82F3 C0/4354: 8D F7 82 STA $82F7 C0/4357: 8D FB 82 STA $82FB C0/435A: 8D FF 82 STA $82FF C0/435D: 8D 03 83 STA $8303 C0/4360: 8D 07 83 STA $8307 C0/4363: 8D 0B 83 STA $830B C0/4366: 8D 0F 83 STA $830F C0/4369: A5 60 LDA $60 C0/436B: 18 CLC C0/436C: 6D 4C 07 ADC $074C C0/436F: 8D 75 82 STA $8275 C0/4372: 8D 79 82 STA $8279 C0/4375: 8D 7D 82 STA $827D C0/4378: 8D 81 82 STA $8281 C0/437B: 8D 85 82 STA $8285 C0/437E: 8D 89 82 STA $8289 C0/4381: 8D 8D 82 STA $828D C0/4384: 8D 91 82 STA $8291 C0/4387: 8D 95 82 STA $8295 C0/438A: 8D 99 82 STA $8299 C0/438D: 8D 9D 82 STA $829D C0/4390: 8D A1 82 STA $82A1 C0/4393: 8D A5 82 STA $82A5 C0/4396: 8D A9 82 STA $82A9 C0/4399: 8D AD 82 STA $82AD C0/439C: 8D B1 82 STA $82B1 C0/439F: 7B TDC C0/43A0: E2 20 SEP #$20 C0/43A2: AD 21 05 LDA $0521 C0/43A5: 29 10 AND #$10 C0/43A7: D0 03 BNE $43AC C0/43A9: 4C 4A 44 JMP $444A C0/43AC: A5 46 LDA $46 C0/43AE: 4A LSR C0/43AF: 18 CLC C0/43B0: 65 60 ADC $60 C0/43B2: 29 0F AND #$0F C0/43B4: 0A ASL C0/43B5: AA TAX C0/43B6: C2 20 REP #$20 C0/43B8: A4 60 LDY $60 C0/43BA: 98 TYA C0/43BB: 18 CLC C0/43BC: 7F 67 45 C0 ADC $C04567,X C0/43C0: 8D 75 82 STA $8275 C0/43C3: 98 TYA C0/43C4: 18 CLC C0/43C5: 7F 69 45 C0 ADC $C04569,X C0/43C9: 8D 79 82 STA $8279 C0/43CC: 98 TYA C0/43CD: 18 CLC C0/43CE: 7F 6B 45 C0 ADC $C0456B,X C0/43D2: 8D 7D 82 STA $827D C0/43D5: 98 TYA C0/43D6: 18 CLC C0/43D7: 7F 6D 45 C0 ADC $C0456D,X C0/43DB: 8D 81 82 STA $8281 C0/43DE: 98 TYA C0/43DF: 18 CLC C0/43E0: 7F 6F 45 C0 ADC $C0456F,X C0/43E4: 8D 85 82 STA $8285 C0/43E7: 98 TYA C0/43E8: 18 CLC C0/43E9: 7F 71 45 C0 ADC $C04571,X C0/43ED: 8D 89 82 STA $8289 C0/43F0: 98 TYA C0/43F1: 18 CLC C0/43F2: 7F 73 45 C0 ADC $C04573,X C0/43F6: 8D 8D 82 STA $828D C0/43F9: 98 TYA C0/43FA: 18 CLC C0/43FB: 7F 75 45 C0 ADC $C04575,X C0/43FF: 8D 91 82 STA $8291 C0/4402: 98 TYA C0/4403: 18 CLC C0/4404: 7F 77 45 C0 ADC $C04577,X C0/4408: 8D 95 82 STA $8295 C0/440B: 98 TYA C0/440C: 18 CLC C0/440D: 7F 79 45 C0 ADC $C04579,X C0/4411: 8D 99 82 STA $8299 C0/4414: 98 TYA C0/4415: 18 CLC C0/4416: 7F 7B 45 C0 ADC $C0457B,X C0/441A: 8D 9D 82 STA $829D C0/441D: 98 TYA C0/441E: 18 CLC C0/441F: 7F 7D 45 C0 ADC $C0457D,X C0/4423: 8D A1 82 STA $82A1 C0/4426: 98 TYA C0/4427: 18 CLC C0/4428: 7F 7F 45 C0 ADC $C0457F,X C0/442C: 8D A5 82 STA $82A5 C0/442F: 98 TYA C0/4430: 18 CLC C0/4431: 7F 81 45 C0 ADC $C04581,X C0/4435: 8D A9 82 STA $82A9 C0/4438: 98 TYA C0/4439: 18 CLC C0/443A: 7F 83 45 C0 ADC $C04583,X C0/443E: 8D AD 82 STA $82AD C0/4441: 98 TYA C0/4442: 18 CLC C0/4443: 7F 85 45 C0 ADC $C04585,X C0/4447: 8D B1 82 STA $82B1 C0/444A: 7B TDC C0/444B: E2 20 SEP #$20 C0/444D: AD 21 05 LDA $0521 C0/4450: 29 08 AND #$08 C0/4452: D0 03 BNE $4457 C0/4454: 4C F8 44 JMP $44F8 C0/4457: A5 46 LDA $46 C0/4459: 4A LSR C0/445A: 18 CLC C0/445B: 65 68 ADC $68 C0/445D: 18 CLC C0/445E: 69 08 ADC #$08 C0/4460: 29 0F AND #$0F C0/4462: 0A ASL C0/4463: AA TAX C0/4464: C2 20 REP #$20 C0/4466: A4 68 LDY $68 C0/4468: 98 TYA C0/4469: 18 CLC C0/446A: 7F 67 45 C0 ADC $C04567,X C0/446E: 8D B5 82 STA $82B5 C0/4471: 98 TYA C0/4472: 18 CLC C0/4473: 7F 69 45 C0 ADC $C04569,X C0/4477: 8D B9 82 STA $82B9 C0/447A: 98 TYA C0/447B: 18 CLC C0/447C: 7F 6B 45 C0 ADC $C0456B,X C0/4480: 8D BD 82 STA $82BD C0/4483: 98 TYA C0/4484: 18 CLC C0/4485: 7F 6D 45 C0 ADC $C0456D,X C0/4489: 8D C1 82 STA $82C1 C0/448C: 98 TYA C0/448D: 18 CLC C0/448E: 7F 6F 45 C0 ADC $C0456F,X C0/4492: 8D C5 82 STA $82C5 C0/4495: 98 TYA C0/4496: 18 CLC C0/4497: 7F 71 45 C0 ADC $C04571,X C0/449B: 8D C9 82 STA $82C9 C0/449E: 98 TYA C0/449F: 18 CLC C0/44A0: 7F 73 45 C0 ADC $C04573,X C0/44A4: 8D CD 82 STA $82CD C0/44A7: 98 TYA C0/44A8: 18 CLC C0/44A9: 7F 75 45 C0 ADC $C04575,X C0/44AD: 8D D1 82 STA $82D1 C0/44B0: 98 TYA C0/44B1: 18 CLC C0/44B2: 7F 77 45 C0 ADC $C04577,X C0/44B6: 8D D5 82 STA $82D5 C0/44B9: 98 TYA C0/44BA: 18 CLC C0/44BB: 7F 79 45 C0 ADC $C04579,X C0/44BF: 8D D9 82 STA $82D9 C0/44C2: 98 TYA C0/44C3: 18 CLC C0/44C4: 7F 7B 45 C0 ADC $C0457B,X C0/44C8: 8D DD 82 STA $82DD C0/44CB: 98 TYA C0/44CC: 18 CLC C0/44CD: 7F 7D 45 C0 ADC $C0457D,X C0/44D1: 8D E1 82 STA $82E1 C0/44D4: 98 TYA C0/44D5: 18 CLC C0/44D6: 7F 7F 45 C0 ADC $C0457F,X C0/44DA: 8D E5 82 STA $82E5 C0/44DD: 98 TYA C0/44DE: 18 CLC C0/44DF: 7F 81 45 C0 ADC $C04581,X C0/44E3: 8D E9 82 STA $82E9 C0/44E6: 98 TYA C0/44E7: 18 CLC C0/44E8: 7F 83 45 C0 ADC $C04583,X C0/44EC: 8D ED 82 STA $82ED C0/44EF: 98 TYA C0/44F0: 18 CLC C0/44F1: 7F 85 45 C0 ADC $C04585,X C0/44F5: 8D F1 82 STA $82F1 C0/44F8: 7B TDC C0/44F9: E2 20 SEP #$20 C0/44FB: A5 46 LDA $46 C0/44FD: 4A LSR C0/44FE: 4A LSR C0/44FF: 4A LSR C0/4500: 18 CLC C0/4501: 65 70 ADC $70 C0/4503: 29 07 AND #$07 C0/4505: 0A ASL C0/4506: AA TAX C0/4507: AD 21 05 LDA $0521 C0/450A: 29 04 AND #$04 C0/450C: D0 03 BNE $4511 C0/450E: A2 20 00 LDX #$0020 C0/4511: C2 21 REP #$21 C0/4513: A5 70 LDA $70 C0/4515: 6D 50 07 ADC $0750 C0/4518: A8 TAY C0/4519: 18 CLC C0/451A: 7F E7 45 C0 ADC $C045E7,X C0/451E: 8D F5 82 STA $82F5 C0/4521: 98 TYA C0/4522: 18 CLC C0/4523: 7F E9 45 C0 ADC $C045E9,X C0/4527: 8D F9 82 STA $82F9 C0/452A: 98 TYA C0/452B: 18 CLC C0/452C: 7F EB 45 C0 ADC $C045EB,X C0/4530: 8D FD 82 STA $82FD C0/4533: 98 TYA C0/4534: 18 CLC C0/4535: 7F ED 45 C0 ADC $C045ED,X C0/4539: 8D 01 83 STA $8301 C0/453C: 98 TYA C0/453D: 18 CLC C0/453E: 7F EF 45 C0 ADC $C045EF,X C0/4542: 8D 05 83 STA $8305 C0/4545: 98 TYA C0/4546: 18 CLC C0/4547: 7F F1 45 C0 ADC $C045F1,X C0/454B: 8D 09 83 STA $8309 C0/454E: 98 TYA C0/454F: 18 CLC C0/4550: 7F F3 45 C0 ADC $C045F3,X C0/4554: 8D 0D 83 STA $830D C0/4557: 98 TYA C0/4558: 18 CLC C0/4559: 7F F5 45 C0 ADC $C045F5,X C0/455D: 8D 11 83 STA $8311 C0/4560: 7B TDC C0/4561: E2 20 SEP #$20 C0/4563: 7B TDC C0/4564: 48 PHA C0/4565: AB PLB C0/4566: 60 RTS C0/4567: .DW $0000, $0001, $0001, $0002, $0002, $0002, $0001, $0001 C0/4577: .DW $0000, $FFFF, $FFFF, $FFFE, $FFFE, $FFFE, $FFFF, $FFFF C0/4587: .DW $0000, $0001, $0001, $0002, $0002, $0002, $0001, $0001 C0/4597: .DW $0000, $FFFF, $FFFF, $FFFE, $FFFE, $FFFE, $FFFF, $FFFF C0/45A7: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/45B7: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/45C7: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/45D7: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/45E7: .DW $0000, $0001, $0001, $0001, $0000, $FFFF, $FFFF, $FFFF C0/45F7: .DW $0000, $0001, $0001, $0001, $0000, $FFFF, $FFFF, $FFFF C0/4607: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/4617: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; -------------------------------------------[ Field: Party ]------------------------------------------- ; [ Init Party Position ] C0/4627: AC 03 08 LDY $0803 C0/462A: AD C0 1F LDA $1FC0 ; party position C0/462D: C2 20 REP #$20 C0/462F: 0A ASL C0/4630: 0A ASL C0/4631: 0A ASL C0/4632: 0A ASL C0/4633: E2 20 SEP #$20 C0/4635: 99 6A 08 STA $086A,Y ; set party object x position C0/4638: EB XBA C0/4639: 99 6B 08 STA $086B,Y C0/463C: 7B TDC C0/463D: AD C1 1F LDA $1FC1 C0/4640: C2 20 REP #$20 C0/4642: 0A ASL C0/4643: 0A ASL C0/4644: 0A ASL C0/4645: 0A ASL C0/4646: E2 20 SEP #$20 C0/4648: 99 6D 08 STA $086D,Y ; set party object y position C0/464B: EB XBA C0/464C: 99 6E 08 STA $086E,Y C0/464F: 7B TDC C0/4650: 60 RTS ; [ Init Party Facing Direction ] init_my_work: C0/4651: AC 03 08 LDY $0803 ; pointer to party object data C0/4654: AD 43 07 LDA $0743 ; party facing direction C0/4657: 30 0E BMI $4667 C0/4659: 99 7F 08 STA $087F,Y ; set party object facing direction C0/465C: AA TAX C0/465D: BF 2D 58 C0 LDA $C0582D,X C0/4661: 99 76 08 STA $0876,Y ; set graphical action C0/4664: 99 77 08 STA $0877,Y C0/4667: 7B TDC C0/4668: 99 7E 08 STA $087E,Y ; clear movement direction C0/466B: 99 86 08 STA $0886,Y C0/466E: C2 20 REP #$20 C0/4670: 99 71 08 STA $0871,Y ; clear movement speed C0/4673: 99 73 08 STA $0873,Y C0/4676: E2 20 SEP #$20 C0/4678: A9 02 LDA #$02 ; set object speed to $02 C0/467A: 99 75 08 STA $0875,Y C0/467D: 60 RTS ; [ Init Party Z-Level ] init_my_priority: C0/467E: 20 44 50 JSR $5044 ; update adjacent tile properties C0/4681: AC 03 08 LDY $0803 ; pointer to party object data C0/4684: A5 B8 LDA $B8 ; branch if not on a bridge tile C0/4686: 29 04 AND #$04 C0/4688: F0 3B BEQ $46C5 ; bridge tile C0/468A: AD 44 07 LDA $0744 ; saved/destination z-level C0/468D: 85 B2 STA $B2 ; set party's current z-level C0/468F: C9 02 CMP #$02 C0/4691: F0 18 BEQ $46AB ; branch if party is on lower z-level ; bridge tile, party on upper z-level C0/4693: A2 F8 00 LDX #$00F8 ; set sprite data pointer (upper z-level) C0/4696: 86 B4 STX $B4 C0/4698: B9 80 08 LDA $0880,Y ; set top sprite priority to 3 (shown above bg priority 1) C0/469B: 09 30 ORA #$30 C0/469D: 99 80 08 STA $0880,Y C0/46A0: B9 81 08 LDA $0881,Y ; set bottom sprite priority to 2 (shown below bg priority 1) C0/46A3: 29 CF AND #$CF C0/46A5: 09 20 ORA #$20 C0/46A7: 99 81 08 STA $0881,Y C0/46AA: 60 RTS ; bridge tile, party on lower z-level C0/46AB: A2 B8 01 LDX #$01B8 ; set sprite data pointer (lower z-level) C0/46AE: 86 B4 STX $B4 C0/46B0: B9 80 08 LDA $0880,Y ; set top sprite priority to 2 (shown below bg priority 1) C0/46B3: 29 CF AND #$CF C0/46B5: 09 20 ORA #$20 C0/46B7: 99 80 08 STA $0880,Y C0/46BA: B9 81 08 LDA $0881,Y ; set bottom sprite priority to 2 (shown below bg priority 1) C0/46BD: 29 CF AND #$CF C0/46BF: 09 20 ORA #$20 C0/46C1: 99 81 08 STA $0881,Y C0/46C4: 60 RTS ; not a bridge tile C0/46C5: A5 B8 LDA $B8 ; tile z-level passability C0/46C7: 29 03 AND #$03 C0/46C9: 8D B2 00 STA $00B2 ; store as party z-level C0/46CC: B9 81 08 LDA $0881,Y ; set bottom sprite priority to 2 (shown below bg priority 1) C0/46CF: 29 CF AND #$CF C0/46D1: 09 20 ORA #$20 C0/46D3: 99 81 08 STA $0881,Y C0/46D6: A5 B8 LDA $B8 ; upper sprite priority C0/46D8: 29 08 AND #$08 C0/46DA: F0 04 BEQ $46E0 ; branch if upper sprite is not shown above bg priority 1) C0/46DC: A9 30 LDA #$30 C0/46DE: 80 02 BRA $46E2 C0/46E0: A9 20 LDA #$20 C0/46E2: 85 1A STA $1A C0/46E4: B9 80 08 LDA $0880,Y ; set top sprite priority to 2 or 3 C0/46E7: 29 CF AND #$CF C0/46E9: 05 1A ORA $1A C0/46EB: 99 80 08 STA $0880,Y C0/46EE: A2 F8 00 LDX #$00F8 ; set sprite data pointer (upper z-level) C0/46F1: 86 B4 STX $B4 C0/46F3: 60 RTS ; [ Check Adjacent NPC's ] check_talk: C0/46F4: A5 4C LDA $4C ; return if fading in/out C0/46F6: C9 F0 CMP #$F0 C0/46F8: D0 31 BNE $472B C0/46FA: A5 59 LDA $59 ; return if menu is opening C0/46FC: D0 2D BNE $472B C0/46FE: A5 84 LDA $84 ; return if map is loading C0/4700: D0 29 BNE $472B C0/4702: AC 03 08 LDY $0803 ; get party object number C0/4705: 8C 04 42 STY $4204 C0/4708: A9 29 LDA #$29 C0/470A: 8D 06 42 STA $4206 C0/470D: A6 E5 LDX $E5 ; return if an event is running C0/470F: E0 00 00 CPX #$0000 C0/4712: D0 17 BNE $472B C0/4714: A5 E7 LDA $E7 C0/4716: C9 CA CMP #$CA C0/4718: D0 11 BNE $472B C0/471A: B9 7C 08 LDA $087C,Y ; party object movement type C0/471D: 29 0F AND #$0F C0/471F: C9 02 CMP #$02 ; return if not user-controlled C0/4721: D0 08 BNE $472B C0/4723: A5 BA LDA $BA ; return if dialog window is open C0/4725: D0 04 BNE $472B C0/4727: A5 06 LDA $06 ; return if a button is not down C0/4729: 30 01 BMI $472C C0/472B: 60 RTS C0/472C: B9 7F 08 LDA $087F,Y ; party object facing direction C0/472F: 1A INC C0/4730: 20 03 7D JSR $7D03 ; get pointer to object map data in facing direction C0/4733: A6 1E LDX $1E C0/4735: BF 00 20 7E LDA $7E2000,X ; object that party is facing C0/4739: 30 53 BMI $478E ; branch if no object there C0/473B: 4A LSR C0/473C: CD 14 42 CMP $4214 C0/473F: F0 4D BEQ $478E ; branch if the party there is the party object (???) C0/4741: 0A ASL C0/4742: AA TAX C0/4743: BC 99 07 LDY $0799,X ; get pointer to target object data C0/4746: B9 7C 08 LDA $087C,Y C0/4749: 29 40 AND #$40 C0/474B: D0 DE BNE $472B ; return if the object activates on collision C0/474D: A5 B8 LDA $B8 C0/474F: 29 07 AND #$07 ; current tile z-level C0/4751: C9 01 CMP #$01 C0/4753: F0 1C BEQ $4771 ; branch if upper z-level, not a bridge tile C0/4755: C9 02 CMP #$02 C0/4757: F0 23 BEQ $477C ; branch if lower z-level, not a bridge tile C0/4759: C9 03 CMP #$03 C0/475B: F0 28 BEQ $4785 ; branch if upper & lower z-level, not a bridge tile ; bridge tile C0/475D: A5 B2 LDA $B2 ; party z-level C0/475F: D9 88 08 CMP $0888,Y C0/4762: F0 68 BEQ $47CC ; try to do event if target is on the same z-level as the party C0/4764: C9 01 CMP #$01 C0/4766: D0 26 BNE $478E ; no match if the party is not on the upper z-level C0/4768: B9 88 08 LDA $0888,Y ; try to do event if target is on a bridge tile C0/476B: 29 04 AND #$04 C0/476D: D0 5D BNE $47CC C0/476F: 80 1D BRA $478E ; upper z-level tile C0/4771: B9 88 08 LDA $0888,Y C0/4774: 29 07 AND #$07 C0/4776: C9 02 CMP #$02 C0/4778: F0 14 BEQ $478E ; try to do event only if target is upper z-level C0/477A: 80 50 BRA $47CC ; lower z-level tile C0/477C: B9 88 08 LDA $0888,Y C0/477F: 29 02 AND #$02 C0/4781: D0 49 BNE $47CC ; try to do event if target is not upper z-level C0/4783: 80 09 BRA $478E ; upper & lower z-level tile C0/4785: B9 88 08 LDA $0888,Y C0/4788: 29 04 AND #$04 C0/478A: D0 02 BNE $478E ; try to do event only if target is on a bridge tile C0/478C: 80 3E BRA $47CC ; no match, check for an NPC on the other side of a counter tile C0/478E: A6 1E LDX $1E C0/4790: BF 00 00 7F LDA $7F0000,X C0/4794: AA TAX C0/4795: BF 00 76 7E LDA $7E7600,X C0/4799: C9 F7 CMP #$F7 C0/479B: F0 8E BEQ $472B ; return of the adjacent tile is fully impassable C0/479D: 29 07 AND #$07 C0/479F: C9 07 CMP #$07 C0/47A1: D0 88 BNE $472B ; return if the adjacent tile is not a counter tile C0/47A3: B9 7F 08 LDA $087F,Y C0/47A6: AA TAX C0/47A7: A5 1E LDA $1E C0/47A9: 18 CLC C0/47AA: 7F 57 48 C0 ADC $C04857,X ; go one more tile in the facing direction C0/47AE: 25 86 AND $86 C0/47B0: 85 1E STA $1E C0/47B2: A5 1F LDA $1F C0/47B4: 18 CLC C0/47B5: 7F 5B 48 C0 ADC $C0485B,X C0/47B9: 25 87 AND $87 C0/47BB: 85 1F STA $1F C0/47BD: A6 1E LDX $1E C0/47BF: BF 00 20 7E LDA $7E2000,X ; return if there's no NPC there C0/47C3: 30 06 BMI $47CB C0/47C5: AA TAX C0/47C6: BC 99 07 LDY $0799,X ; if there's an NPC there, try to do event C0/47C9: 80 01 BRA $47CC C0/47CB: 60 RTS ; party and target match, try to do event C0/47CC: B9 7C 08 LDA $087C,Y ; branch if target object is already activated C0/47CF: 29 0F AND #$0F C0/47D1: C9 04 CMP #$04 C0/47D3: F0 F6 BEQ $47CB C0/47D5: 99 7D 08 STA $087D,Y ; save target object movement type C0/47D8: A4 DA LDY $DA ; pointer to party object data C0/47DA: B9 7F 08 LDA $087F,Y ; facing direction C0/47DD: 1A INC C0/47DE: 1A INC C0/47DF: 29 03 AND #$03 C0/47E1: 85 1A STA $1A ; $1A = opposite of party facing direction C0/47E3: BC 99 07 LDY $0799,X ; pointer to target object data C0/47E6: B9 7F 08 LDA $087F,Y ; facing direction C0/47E9: 0A ASL C0/47EA: 0A ASL C0/47EB: 0A ASL C0/47EC: 85 1B STA $1B C0/47EE: B9 68 08 LDA $0868,Y ; save old facing direction C0/47F1: 29 E7 AND #$E7 C0/47F3: 05 1B ORA $1B C0/47F5: 99 68 08 STA $0868,Y C0/47F8: B9 7C 08 LDA $087C,Y ; branch if object doesn't turn when activated C0/47FB: 29 20 AND #$20 C0/47FD: D0 0D BNE $480C C0/47FF: A5 1A LDA $1A C0/4801: 99 7F 08 STA $087F,Y ; set facing direction C0/4804: AA TAX C0/4805: BF 2D 58 C0 LDA $C0582D,X ; graphics position (standing still) C0/4809: 99 77 08 STA $0877,Y ; set graphics position C0/480C: B9 7C 08 LDA $087C,Y ; set movement type to activated C0/480F: 29 F0 AND #$F0 C0/4811: 09 04 ORA #$04 C0/4813: 99 7C 08 STA $087C,Y C0/4816: B9 89 08 LDA $0889,Y ; set event PC C0/4819: 85 E5 STA $E5 C0/481B: 8D F4 05 STA $05F4 C0/481E: B9 8A 08 LDA $088A,Y C0/4821: 85 E6 STA $E6 C0/4823: 8D F5 05 STA $05F5 C0/4826: B9 8B 08 LDA $088B,Y C0/4829: 18 CLC C0/482A: 69 CA ADC #$CA C0/482C: 85 E7 STA $E7 C0/482E: 8D F6 05 STA $05F6 C0/4831: A2 00 00 LDX #$0000 ; set event return address C0/4834: 8E 94 05 STX $0594 C0/4837: A9 CA LDA #$CA C0/4839: 8D 96 05 STA $0596 C0/483C: A9 01 LDA #$01 C0/483E: 8D C7 05 STA $05C7 C0/4841: A2 03 00 LDX #$0003 ; set event stack pointer C0/4844: 86 E8 STX $E8 C0/4846: A4 DA LDY $DA ; pointer to party object data C0/4848: B9 7C 08 LDA $087C,Y ; save movement type C0/484B: 99 7D 08 STA $087D,Y C0/484E: A9 04 LDA #$04 ; set movement type to activated C0/4850: 99 7C 08 STA $087C,Y C0/4853: 20 ED 2F JSR $2FED ; close map name dialog window C0/4856: 60 RTS C0/4857: .DB $00, $01, $00, $FF C0/485B: .DB $FF, $00, $01, $00 ; [ Do User-Controlled Object Movement ] my_direction: C0/485F: 20 44 50 JSR $5044 ; update adjacent tile properties C0/4862: A5 B8 LDA $B8 ; $B1 = tile z-level passability (unused) C0/4864: 29 03 AND #$03 C0/4866: 85 B1 STA $B1 C0/4868: 20 14 4F JSR $4F14 ; update party sprite priority (based on current tile) C0/486B: 20 9F 4F JSR $4F9F ; update party layer priority C0/486E: A4 DA LDY $DA ; pointer to current object data C0/4870: C2 20 REP #$20 C0/4872: 7B TDC C0/4873: 99 71 08 STA $0871,Y ; clear object movement speed C0/4876: 99 73 08 STA $0873,Y C0/4879: 85 73 STA $73 ; clear movement bg scroll speed C0/487B: 85 75 STA $75 C0/487D: 85 77 STA $77 C0/487F: 85 79 STA $79 C0/4881: 85 7B STA $7B C0/4883: 85 7D STA $7D C0/4885: E2 20 SEP #$20 C0/4887: B9 68 08 LDA $0868,Y ; enable walking animation C0/488A: 09 01 ORA #$01 C0/488C: 99 68 08 STA $0868,Y C0/488F: AD B9 1E LDA $1EB9 ; branch if user does not have control C0/4892: 30 28 BMI $48BC C0/4894: A5 84 LDA $84 ; branch if map is loading C0/4896: D0 24 BNE $48BC C0/4898: A5 59 LDA $59 ; branch if menu is opening C0/489A: D0 20 BNE $48BC C0/489C: AD 5E 05 LDA $055E ; branch if there are object collisions C0/489F: D0 1B BNE $48BC C0/48A1: AD 5A 05 LDA $055A ; branch if bg1 needs to be updated C0/48A4: F0 04 BEQ $48AA C0/48A6: C9 05 CMP #$05 C0/48A8: D0 12 BNE $48BC C0/48AA: AD 5B 05 LDA $055B ; branch if bg2 needs to be updated C0/48AD: F0 04 BEQ $48B3 C0/48AF: C9 05 CMP #$05 C0/48B1: D0 09 BNE $48BC C0/48B3: AD 5C 05 LDA $055C ; branch if bg3 needs to be updated C0/48B6: F0 07 BEQ $48BF C0/48B8: C9 05 CMP #$05 C0/48BA: F0 03 BEQ $48BF C0/48BC: 4C EF 49 JMP $49EF C0/48BF: A5 B8 LDA $B8 ; bottom tile, bottom sprite z-level C0/48C1: 29 04 AND #$04 C0/48C3: F0 06 BEQ $48CB ; branch if not a bridge tile C0/48C5: A5 B2 LDA $B2 C0/48C7: C9 02 CMP #$02 C0/48C9: F0 06 BEQ $48D1 ; branch if party is lower z-level C0/48CB: A5 B8 LDA $B8 C0/48CD: 29 C0 AND #$C0 C0/48CF: D0 03 BNE $48D4 ; branch if tile has diagonal movement C0/48D1: 4C 78 49 JMP $4978 ; diagonal movement C0/48D4: A5 07 LDA $07 C0/48D6: 29 01 AND #$01 C0/48D8: F0 30 BEQ $490A C0/48DA: A9 01 LDA #$01 C0/48DC: 99 7F 08 STA $087F,Y C0/48DF: A5 B8 LDA $B8 C0/48E1: 30 16 BMI $48F9 C0/48E3: A5 A8 LDA $A8 C0/48E5: AA TAX C0/48E6: BF 00 76 7E LDA $7E7600,X C0/48EA: C9 F7 CMP #$F7 C0/48EC: F0 08 BEQ $48F6 C0/48EE: 29 40 AND #$40 C0/48F0: F0 04 BEQ $48F6 C0/48F2: A9 05 LDA #$05 C0/48F4: 80 49 BRA $493F C0/48F6: 4C 78 49 JMP $4978 C0/48F9: A5 AE LDA $AE C0/48FB: AA TAX C0/48FC: BF 00 76 7E LDA $7E7600,X C0/4900: 10 76 BPL $4978 C0/4902: C9 F7 CMP #$F7 C0/4904: F0 72 BEQ $4978 C0/4906: A9 06 LDA #$06 C0/4908: 80 35 BRA $493F C0/490A: A5 07 LDA $07 C0/490C: 29 02 AND #$02 C0/490E: F0 68 BEQ $4978 C0/4910: A9 03 LDA #$03 C0/4912: 99 7F 08 STA $087F,Y C0/4915: A5 B8 LDA $B8 C0/4917: 10 15 BPL $492E C0/4919: A5 B8 LDA $B8 C0/491B: 10 79 BPL $4996 C0/491D: A5 A6 LDA $A6 C0/491F: AA TAX C0/4920: BF 00 76 7E LDA $7E7600,X C0/4924: 10 52 BPL $4978 C0/4926: C9 F7 CMP #$F7 C0/4928: F0 4E BEQ $4978 C0/492A: A9 08 LDA #$08 C0/492C: 80 11 BRA $493F C0/492E: A5 AC LDA $AC C0/4930: AA TAX C0/4931: BF 00 76 7E LDA $7E7600,X C0/4935: C9 F7 CMP #$F7 C0/4937: F0 3F BEQ $4978 C0/4939: 29 40 AND #$40 C0/493B: F0 3B BEQ $4978 C0/493D: A9 07 LDA #$07 C0/493F: 99 7E 08 STA $087E,Y C0/4942: 85 B3 STA $B3 C0/4944: A5 B8 LDA $B8 C0/4946: 29 04 AND #$04 C0/4948: D0 0A BNE $4954 C0/494A: A5 B8 LDA $B8 C0/494C: 29 03 AND #$03 C0/494E: C9 03 CMP #$03 C0/4950: F0 02 BEQ $4954 C0/4952: 85 B2 STA $B2 C0/4954: 20 2D 4F JSR $4F2D ; update party sprite priority (based on destination tile) C0/4957: 20 E6 4F JSR $4FE6 C0/495A: 20 77 7E JSR $7E77 ; update object movement speed C0/495D: 20 08 7E JSR $7E08 C0/4960: 64 85 STZ $85 C0/4962: A9 01 LDA #$01 ; one step C0/4964: 99 86 08 STA $0886,Y C0/4967: 20 A5 C8 JSR $C8A5 ; update overlay data C0/496A: 20 60 4B JSR $4B60 ; increment steps C0/496D: 20 EC 4A JSR $4AEC ; reset party event bits C0/4970: A9 01 LDA #$01 C0/4972: 85 57 STA $57 C0/4974: 9C 8E 07 STZ $078E C0/4977: 60 RTS ; not diagonal movement C0/4978: A5 07 LDA $07 C0/497A: 29 01 AND #$01 C0/497C: F0 18 BEQ $4996 ; branch if right button is not pressed C0/497E: A9 47 LDA #$47 ; set graphic position C0/4980: 99 77 08 STA $0877,Y C0/4983: A9 01 LDA #$01 ; set facing direction C0/4985: 99 7F 08 STA $087F,Y C0/4988: 20 51 4D JSR $4D51 ; open door C0/498B: D0 62 BNE $49EF ; branch if a door opened C0/498D: A9 02 LDA #$02 ; movement direction = 2 (right) C0/498F: 20 16 4E JSR $4E16 ; party takes a step C0/4992: F0 5B BEQ $49EF ; branch if movement not allowed C0/4994: 80 6D BRA $4A03 ; branch if movement allowed C0/4996: A5 07 LDA $07 C0/4998: 29 02 AND #$02 C0/499A: F0 18 BEQ $49B4 ; branch if left button is not pressed C0/499C: A9 07 LDA #$07 C0/499E: 99 77 08 STA $0877,Y C0/49A1: A9 03 LDA #$03 C0/49A3: 99 7F 08 STA $087F,Y C0/49A6: 20 51 4D JSR $4D51 ; open door C0/49A9: D0 44 BNE $49EF ; branch if a door opened C0/49AB: A9 04 LDA #$04 ; movement direction = 4 (left) C0/49AD: 20 16 4E JSR $4E16 ; party takes a step C0/49B0: F0 3D BEQ $49EF C0/49B2: 80 4F BRA $4A03 C0/49B4: A5 07 LDA $07 C0/49B6: 29 08 AND #$08 C0/49B8: F0 17 BEQ $49D1 ; branch if up button is not pressed C0/49BA: A9 04 LDA #$04 C0/49BC: 99 77 08 STA $0877,Y C0/49BF: 7B TDC C0/49C0: 99 7F 08 STA $087F,Y C0/49C3: 20 51 4D JSR $4D51 ; open door C0/49C6: D0 27 BNE $49EF ; branch if a door opened C0/49C8: A9 01 LDA #$01 ; movement direction = 1 (up) C0/49CA: 20 16 4E JSR $4E16 ; party takes a step C0/49CD: F0 20 BEQ $49EF C0/49CF: 80 32 BRA $4A03 C0/49D1: A5 07 LDA $07 C0/49D3: 29 04 AND #$04 C0/49D5: F0 18 BEQ $49EF ; branch if down button is not pressed C0/49D7: A9 01 LDA #$01 C0/49D9: 99 77 08 STA $0877,Y C0/49DC: A9 02 LDA #$02 C0/49DE: 99 7F 08 STA $087F,Y C0/49E1: 20 51 4D JSR $4D51 ; open door C0/49E4: D0 09 BNE $49EF ; branch if a door opened C0/49E6: A9 03 LDA #$03 ; movement direction = 3 (down) C0/49E8: 20 16 4E JSR $4E16 ; party takes a step C0/49EB: F0 02 BEQ $49EF C0/49ED: 80 14 BRA $4A03 ; party didn't move C0/49EF: AC 03 08 LDY $0803 C0/49F2: 7B TDC C0/49F3: 99 7E 08 STA $087E,Y ; no movement C0/49F6: 9C 86 08 STZ $0886 ; zero steps C0/49F9: 20 A5 C8 JSR $C8A5 ; update overlay data C0/49FC: 20 F4 46 JSR $46F4 ; check adjacent npc's C0/49FF: 20 83 4B JSR $4B83 ; check treasures C0/4A02: 60 RTS ; party moved C0/4A03: 20 60 4B JSR $4B60 ; increment steps C0/4A06: 22 3F 4A C0 JSL $C04A3F ; update hp each step C0/4A0A: AC 03 08 LDY $0803 C0/4A0D: 20 77 7E JSR $7E77 ; update object movement speed C0/4A10: 20 08 7E JSR $7E08 ; update movement scroll speed C0/4A13: 64 85 STZ $85 ; disable entrance triggers C0/4A15: A9 01 LDA #$01 ; take one step C0/4A17: 8D 86 08 STA $0886 C0/4A1A: 20 EC 4A JSR $4AEC ; reset party event bits C0/4A1D: AD B6 1E LDA $1EB6 ; clear tile event bit C0/4A20: 29 DF AND #$DF C0/4A22: 8D B6 1E STA $1EB6 C0/4A25: AD B7 1E LDA $1EB7 ; clear save point event bit C0/4A28: 29 7F AND #$7F C0/4A2A: 8D B7 1E STA $1EB7 C0/4A2D: 20 A5 C8 JSR $C8A5 ; update overlay data C0/4A30: 20 F4 46 JSR $46F4 ; check adjacent npc's C0/4A33: A9 01 LDA #$01 ; random battles enabled C0/4A35: 85 57 STA $57 C0/4A37: 9C 8E 07 STZ $078E ; party is not on a trigger C0/4A3A: 60 RTS C0/4A3B: .DB $10, $08, $04, $02 ; [ Update HP Each Step ] check_hp: C0/4A3F: 08 PHP C0/4A40: 7B TDC C0/4A41: E2 20 SEP #$20 C0/4A43: C2 10 REP #$10 C0/4A45: A6 1E LDX $1E C0/4A47: DA PHX C0/4A48: A6 20 LDX $20 C0/4A4A: DA PHX C0/4A4B: A6 22 LDX $22 C0/4A4D: DA PHX C0/4A4E: A6 24 LDX $24 C0/4A50: DA PHX C0/4A51: A6 00 LDX $00 C0/4A53: 9B TXY C0/4A54: BD 50 18 LDA $1850,X C0/4A57: 29 40 AND #$40 C0/4A59: F0 70 BEQ $4ACB C0/4A5B: BD 50 18 LDA $1850,X C0/4A5E: 29 07 AND #$07 C0/4A60: CD 6D 1A CMP $1A6D C0/4A63: D0 66 BNE $4ACB C0/4A65: B9 14 16 LDA $1614,Y C0/4A68: 29 C2 AND #$C2 C0/4A6A: D0 27 BNE $4A93 C0/4A6C: B9 23 16 LDA $1623,Y C0/4A6F: C9 E5 CMP #$E5 C0/4A71: F0 07 BEQ $4A7A C0/4A73: B9 24 16 LDA $1624,Y C0/4A76: C9 E5 CMP #$E5 C0/4A78: D0 19 BNE $4A93 C0/4A7A: 20 E8 AE JSR $AEE8 C0/4A7D: B9 1C 16 LDA $161C,Y C0/4A80: 4A LSR C0/4A81: 4A LSR C0/4A82: C2 21 REP #$21 C0/4A84: 79 09 16 ADC $1609,Y C0/4A87: C5 1E CMP $1E C0/4A89: 90 02 BCC $4A8D C0/4A8B: A5 1E LDA $1E C0/4A8D: 99 09 16 STA $1609,Y C0/4A90: 7B TDC C0/4A91: E2 20 SEP #$20 C0/4A93: B9 14 16 LDA $1614,Y C0/4A96: 29 04 AND #$04 C0/4A98: F0 31 BEQ $4ACB C0/4A9A: A9 0F LDA #$0F C0/4A9C: 8D F0 11 STA $11F0 C0/4A9F: C2 20 REP #$20 C0/4AA1: A9 00 0F LDA #$0F00 C0/4AA4: 8D 96 07 STA $0796 C0/4AA7: 7B TDC C0/4AA8: E2 20 SEP #$20 C0/4AAA: 20 E8 AE JSR $AEE8 C0/4AAD: C2 20 REP #$20 C0/4AAF: A5 1E LDA $1E C0/4AB1: 4A LSR C0/4AB2: 4A LSR C0/4AB3: 4A LSR C0/4AB4: 4A LSR C0/4AB5: 4A LSR C0/4AB6: 85 1E STA $1E C0/4AB8: B9 09 16 LDA $1609,Y C0/4ABB: 38 SEC C0/4ABC: E5 1E SBC $1E C0/4ABE: F0 02 BEQ $4AC2 C0/4AC0: B0 03 BCS $4AC5 C0/4AC2: A9 01 00 LDA #$0001 C0/4AC5: 99 09 16 STA $1609,Y C0/4AC8: 7B TDC C0/4AC9: E2 20 SEP #$20 C0/4ACB: C2 21 REP #$21 C0/4ACD: 98 TYA C0/4ACE: 69 25 00 ADC #$0025 C0/4AD1: A8 TAY C0/4AD2: 7B TDC C0/4AD3: E2 20 SEP #$20 C0/4AD5: E8 INX C0/4AD6: E0 10 00 CPX #$0010 C0/4AD9: F0 03 BEQ $4ADE C0/4ADB: 4C 54 4A JMP $4A54 C0/4ADE: FA PLX C0/4ADF: 86 24 STX $24 C0/4AE1: FA PLX C0/4AE2: 86 22 STX $22 C0/4AE4: FA PLX C0/4AE5: 86 20 STX $20 C0/4AE7: FA PLX C0/4AE8: 86 1E STX $1E C0/4AEA: 28 PLP C0/4AEB: 6B RTL ; [ Reset Party Event Bits ] check_party_flag: C0/4AEC: AD 6D 1A LDA $1A6D ; branch if not party 1 C0/4AEF: C9 01 CMP #$01 C0/4AF1: D0 22 BNE $4B15 ; party 1 C0/4AF3: AD D8 1E LDA $1ED8 C0/4AF6: 29 EF AND #$EF C0/4AF8: 8D D8 1E STA $1ED8 C0/4AFB: AD D8 1E LDA $1ED8 C0/4AFE: 29 DF AND #$DF C0/4B00: 8D D8 1E STA $1ED8 C0/4B03: AD D8 1E LDA $1ED8 C0/4B06: 29 BF AND #$BF C0/4B08: 8D D8 1E STA $1ED8 C0/4B0B: AD D8 1E LDA $1ED8 C0/4B0E: 29 7F AND #$7F C0/4B10: 8D D8 1E STA $1ED8 C0/4B13: 80 4A BRA $4B5F ; party 2 C0/4B15: C9 02 CMP #$02 ; branch if not party 2 C0/4B17: D0 22 BNE $4B3B C0/4B19: AD D9 1E LDA $1ED9 C0/4B1C: 29 FE AND #$FE C0/4B1E: 8D D9 1E STA $1ED9 C0/4B21: AD D9 1E LDA $1ED9 C0/4B24: 29 FD AND #$FD C0/4B26: 8D D9 1E STA $1ED9 C0/4B29: AD D9 1E LDA $1ED9 C0/4B2C: 29 FB AND #$FB C0/4B2E: 8D D9 1E STA $1ED9 C0/4B31: AD D9 1E LDA $1ED9 C0/4B34: 29 F7 AND #$F7 C0/4B36: 8D D9 1E STA $1ED9 C0/4B39: 80 24 BRA $4B5F ; party 3 C0/4B3B: C9 03 CMP #$03 ; return if not party 3 C0/4B3D: D0 20 BNE $4B5F C0/4B3F: AD D9 1E LDA $1ED9 C0/4B42: 29 EF AND #$EF C0/4B44: 8D D9 1E STA $1ED9 C0/4B47: AD D9 1E LDA $1ED9 C0/4B4A: 29 DF AND #$DF C0/4B4C: 8D D9 1E STA $1ED9 C0/4B4F: AD D9 1E LDA $1ED9 C0/4B52: 29 BF AND #$BF C0/4B54: 8D D9 1E STA $1ED9 C0/4B57: AD D9 1E LDA $1ED9 C0/4B5A: 29 7F AND #$7F C0/4B5C: 8D D9 1E STA $1ED9 C0/4B5F: 60 RTS ; [ Increment Steps ] inc_walk_counter: C0/4B60: AD 66 18 LDA $1866 ; 9999999 max steps C0/4B63: C9 7F CMP #$7F C0/4B65: D0 0E BNE $4B75 C0/4B67: AD 67 18 LDA $1867 C0/4B6A: C9 96 CMP #$96 C0/4B6C: D0 07 BNE $4B75 C0/4B6E: AD 68 18 LDA $1868 C0/4B71: C9 98 CMP #$98 C0/4B73: F0 0D BEQ $4B82 C0/4B75: EE 66 18 INC $1866 C0/4B78: D0 08 BNE $4B82 C0/4B7A: EE 67 18 INC $1867 C0/4B7D: D0 03 BNE $4B82 C0/4B7F: EE 68 18 INC $1868 C0/4B82: 60 RTS ; [ Check Treasures ] check_treasure: C0/4B83: A5 BA LDA $BA C0/4B85: D0 4C BNE $4BD3 C0/4B87: A5 59 LDA $59 C0/4B89: D0 48 BNE $4BD3 C0/4B8B: A5 84 LDA $84 C0/4B8D: D0 44 BNE $4BD3 C0/4B8F: A4 E5 LDY $E5 C0/4B91: C0 00 00 CPY #$0000 C0/4B94: D0 3D BNE $4BD3 C0/4B96: A5 E7 LDA $E7 C0/4B98: C9 CA CMP #$CA C0/4B9A: D0 37 BNE $4BD3 C0/4B9C: A5 B8 LDA $B8 C0/4B9E: 29 04 AND #$04 C0/4BA0: F0 06 BEQ $4BA8 C0/4BA2: A5 B2 LDA $B2 C0/4BA4: C9 02 CMP #$02 C0/4BA6: F0 2B BEQ $4BD3 C0/4BA8: A5 06 LDA $06 C0/4BAA: 10 27 BPL $4BD3 ; return if A button is not pressed C0/4BAC: AC 03 08 LDY $0803 C0/4BAF: B9 7F 08 LDA $087F,Y C0/4BB2: AA TAX C0/4BB3: B9 7A 08 LDA $087A,Y C0/4BB6: 18 CLC C0/4BB7: 7F 0F 4D C0 ADC $C04D0F,X C0/4BBB: 25 86 AND $86 C0/4BBD: 85 2A STA $2A C0/4BBF: B9 7B 08 LDA $087B,Y C0/4BC2: 18 CLC C0/4BC3: 7F 13 4D C0 ADC $C04D13,X C0/4BC7: 25 87 AND $87 C0/4BC9: 85 2B STA $2B C0/4BCB: A6 2A LDX $2A C0/4BCD: BF 00 20 7E LDA $7E2000,X C0/4BD1: 30 01 BMI $4BD4 C0/4BD3: 60 RTS C0/4BD4: C2 20 REP #$20 C0/4BD6: A5 82 LDA $82 C0/4BD8: 0A ASL C0/4BD9: AA TAX C0/4BDA: BF F6 82 ED LDA $ED82F6,X ; pointer to treasure data C0/4BDE: 85 1E STA $1E C0/4BE0: BF F4 82 ED LDA $ED82F4,X C0/4BE4: AA TAX C0/4BE5: 7B TDC C0/4BE6: E2 20 SEP #$20 C0/4BE8: E4 1E CPX $1E C0/4BEA: F0 E7 BEQ $4BD3 C0/4BEC: BF 34 86 ED LDA $ED8634,X ; x position C0/4BF0: C5 2A CMP $2A C0/4BF2: D0 08 BNE $4BFC C0/4BF4: BF 35 86 ED LDA $ED8635,X ; y position C0/4BF8: C5 2B CMP $2B C0/4BFA: F0 0A BEQ $4C06 C0/4BFC: E8 INX C0/4BFD: E8 INX C0/4BFE: E8 INX C0/4BFF: E8 INX C0/4C00: E8 INX C0/4C01: E4 1E CPX $1E C0/4C03: D0 E7 BNE $4BEC C0/4C05: 60 RTS C0/4C06: C2 20 REP #$20 C0/4C08: BF 38 86 ED LDA $ED8638,X ; treasure contents C0/4C0C: 85 1A STA $1A C0/4C0E: BF 36 86 ED LDA $ED8636,X ; treasure event bit and type C0/4C12: 85 1E STA $1E C0/4C14: 29 07 00 AND #$0007 C0/4C17: AA TAX C0/4C18: A5 1E LDA $1E C0/4C1A: 29 FF 01 AND #$01FF C0/4C1D: 4A LSR C0/4C1E: 4A LSR C0/4C1F: 4A LSR C0/4C20: A8 TAY C0/4C21: 7B TDC C0/4C22: E2 20 SEP #$20 C0/4C24: B9 40 1E LDA $1E40,Y C0/4C27: 3F FC BA C0 AND $C0BAFC,X C0/4C2B: D0 A6 BNE $4BD3 ; return if treasure has already been obtained C0/4C2D: B9 40 1E LDA $1E40,Y C0/4C30: 1F FC BA C0 ORA $C0BAFC,X C0/4C34: 99 40 1E STA $1E40,Y ; set treasure event bit C0/4C37: A5 1F LDA $1F C0/4C39: 10 45 BPL $4C80 ; branch if not gp ; gp C0/4C3B: A5 1A LDA $1A C0/4C3D: 8D 02 42 STA $4202 C0/4C40: A9 64 LDA #$64 ; multiply by 100 C0/4C42: 8D 03 42 STA $4203 C0/4C45: EA NOP C0/4C46: EA NOP C0/4C47: EA NOP C0/4C48: AC 16 42 LDY $4216 C0/4C4B: 84 22 STY $22 C0/4C4D: 64 24 STZ $24 C0/4C4F: C2 21 REP #$21 C0/4C51: 98 TYA C0/4C52: 6D 60 18 ADC $1860 ; add to gp C0/4C55: 8D 60 18 STA $1860 C0/4C58: 7B TDC C0/4C59: E2 20 SEP #$20 C0/4C5B: 6D 62 18 ADC $1862 C0/4C5E: 8D 62 18 STA $1862 C0/4C61: C9 98 CMP #$98 C0/4C63: 90 13 BCC $4C78 C0/4C65: AE 60 18 LDX $1860 C0/4C68: E0 7F 96 CPX #$967F C0/4C6B: 90 0B BCC $4C78 C0/4C6D: A2 7F 96 LDX #$967F ; max 9,999,999 gp C0/4C70: 8E 60 18 STX $1860 C0/4C73: A9 98 LDA #$98 C0/4C75: 8D 62 18 STA $1862 C0/4C78: 20 E5 02 JSR $02E5 C0/4C7B: A2 10 00 LDX #$0010 ; $CA0010 (chest with gp) C0/4C7E: 80 2C BRA $4CAC ; item C0/4C80: A5 1F LDA $1F C0/4C82: 29 40 AND #$40 C0/4C84: F0 0D BEQ $4C93 ; branch if not an item C0/4C86: A5 1A LDA $1A C0/4C88: 8D 83 05 STA $0583 C0/4C8B: 20 FC AC JSR $ACFC ; C0/4C8E: A2 08 00 LDX #$0008 ; $CA0008 (chest with item) C0/4C91: 80 19 BRA $4CAC ; monster C0/4C93: A5 1F LDA $1F C0/4C95: 29 20 AND #$20 C0/4C97: F0 0A BEQ $4CA3 ; branch if not a monster C0/4C99: A5 1A LDA $1A C0/4C9B: 8D 89 07 STA $0789 ; set monster-in-a-box formation C0/4C9E: A2 40 00 LDX #$0040 ; $CA0040 (chest with monster) C0/4CA1: 80 09 BRA $4CAC ; empty C0/4CA3: A5 1F LDA $1F C0/4CA5: 29 10 AND #$10 C0/4CA7: F0 00 BEQ $4CA9 ; <- this has no effect C0/4CA9: A2 14 00 LDX #$0014 ; $CA0014 (empty chest) C0/4CAC: 86 E5 STX $E5 ; set event pc C0/4CAE: 8E F4 05 STX $05F4 C0/4CB1: A9 CA LDA #$CA C0/4CB3: 85 E7 STA $E7 C0/4CB5: 8D F6 05 STA $05F6 C0/4CB8: A2 00 00 LDX #$0000 ; event return address = $CA0000 C0/4CBB: 8E 94 05 STX $0594 C0/4CBE: A9 CA LDA #$CA C0/4CC0: 8D 96 05 STA $0596 C0/4CC3: A9 01 LDA #$01 C0/4CC5: 8D C7 05 STA $05C7 C0/4CC8: A2 03 00 LDX #$0003 ; event stack pointer C0/4CCB: 86 E8 STX $E8 C0/4CCD: AC 03 08 LDY $0803 C0/4CD0: B9 7C 08 LDA $087C,Y ; C0/4CD3: 99 7D 08 STA $087D,Y C0/4CD6: A9 04 LDA #$04 C0/4CD8: 99 7C 08 STA $087C,Y C0/4CDB: 20 ED 2F JSR $2FED ; close map name dialog window C0/4CDE: A6 2A LDX $2A C0/4CE0: BF 00 00 7F LDA $7F0000,X ; bg1 tile C0/4CE4: C9 13 CMP #$13 C0/4CE6: D0 1E BNE $4D06 ; branch if not a closed treasure chest C0/4CE8: 86 8F STX $8F C0/4CEA: A2 0C 4D LDX #$4D0C C0/4CED: 86 8C STX $8C C0/4CEF: A9 C0 LDA #$C0 C0/4CF1: 85 8E STA $8E C0/4CF3: A2 00 00 LDX #$0000 C0/4CF6: 86 2A STX $2A C0/4CF8: A9 04 LDA #$04 C0/4CFA: 8D 5A 05 STA $055A C0/4CFD: 20 C4 1E JSR $1EC4 C0/4D00: A9 A6 LDA #$A6 ; sound effect $A6 (treasure chest) C0/4D02: 20 D3 02 JSR $02D3 C0/4D05: 60 RTS C0/4D06: A9 1B LDA #$1B ; sound effect $1B (pot/crate treasure) C0/4D08: 20 D3 02 JSR $02D3 C0/4D0B: 60 RTS ; treasure chest map data (1x1) C0/4D0C: .DB $01, $01 C0/4D0E: .DB $12 C0/4D0F: .DB $00, $01, $00, $FF C0/4D13: .DB $FF, $00, $01, $00 ; [ Load Door Map Data ] rewrite_opened_door: C0/4D17: A4 00 LDY $00 C0/4D19: CC 27 11 CPY $1127 C0/4D1C: F0 32 BEQ $4D50 C0/4D1E: 5A PHY C0/4D1F: BE 29 11 LDX $1129,Y C0/4D22: 86 8F STX $8F C0/4D24: BF 00 00 7F LDA $7F0000,X C0/4D28: C9 05 CMP #$05 C0/4D2A: D0 05 BNE $4D31 C0/4D2C: A2 06 4E LDX #$4E06 C0/4D2F: 80 0C BRA $4D3D C0/4D31: C9 07 CMP #$07 C0/4D33: D0 05 BNE $4D3A C0/4D35: A2 0A 4E LDX #$4E0A C0/4D38: 80 03 BRA $4D3D C0/4D3A: A2 0E 4E LDX #$4E0E C0/4D3D: 86 8C STX $8C C0/4D3F: A9 C0 LDA #$C0 C0/4D41: 85 8E STA $8E C0/4D43: A2 00 00 LDX #$0000 C0/4D46: 86 2A STX $2A C0/4D48: 20 C4 1E JSR $1EC4 C0/4D4B: 7A PLY C0/4D4C: C8 INY C0/4D4D: C8 INY C0/4D4E: 80 C9 BRA $4D19 C0/4D50: 60 RTS ; [ Open Door ] ; return value = 1 if a door opens, 0 if a door doesn't open check_door: C0/4D51: A5 B8 LDA $B8 ; return if tile is lower z-level C0/4D53: 29 04 AND #$04 C0/4D55: F0 09 BEQ $4D60 C0/4D57: A5 B2 LDA $B2 ; return if party is lower z-level C0/4D59: C9 02 CMP #$02 C0/4D5B: D0 03 BNE $4D60 C0/4D5D: 4C 04 4E JMP $4E04 C0/4D60: B9 7F 08 LDA $087F,Y ; facing direction C0/4D63: 4A LSR C0/4D64: B0 F7 BCS $4D5D ; return if not facing up or down C0/4D66: D0 0A BNE $4D72 ; branch if facing down C0/4D68: A5 B0 LDA $B0 ; door's y position is 2 tiles above party C0/4D6A: 3A DEC C0/4D6B: 3A DEC C0/4D6C: 85 90 STA $90 ; $90 = door's y position C0/4D6E: A5 A7 LDA $A7 ; tile above character C0/4D70: 80 06 BRA $4D78 C0/4D72: A5 B0 LDA $B0 ; door's y position is same as party C0/4D74: 85 90 STA $90 C0/4D76: A5 AD LDA $AD ; tile below character C0/4D78: C9 15 CMP #$15 C0/4D7A: D0 15 BNE $4D91 ; branch if not small door 1 C0/4D7C: AF 15 76 7E LDA $7E7615 ; small door 1 tile properties C0/4D80: C9 F7 CMP #$F7 C0/4D82: F0 D9 BEQ $4D5D ; return if impassable C0/4D84: 29 20 AND #$20 C0/4D86: F0 D5 BEQ $4D5D ; return if not a door tile C0/4D88: A5 AF LDA $AF ; door's x position is same as party C0/4D8A: 85 8F STA $8F ; $8F = door's x position C0/4D8C: A2 06 4E LDX #$4E06 ; bg data source = $C04E06 C0/4D8F: 80 31 BRA $4DC2 C0/4D91: C9 17 CMP #$17 C0/4D93: D0 15 BNE $4DAA ; branch if not small door 2 C0/4D95: AF 17 76 7E LDA $7E7617 C0/4D99: C9 F7 CMP #$F7 C0/4D9B: F0 67 BEQ $4E04 C0/4D9D: 29 20 AND #$20 C0/4D9F: F0 63 BEQ $4E04 C0/4DA1: A5 AF LDA $AF C0/4DA3: 85 8F STA $8F C0/4DA5: A2 0A 4E LDX #$4E0A C0/4DA8: 80 18 BRA $4DC2 C0/4DAA: C9 1C CMP #$1C C0/4DAC: D0 56 BNE $4E04 ; return if not big door C0/4DAE: AF 1C 76 7E LDA $7E761C C0/4DB2: C9 F7 CMP #$F7 C0/4DB4: F0 4E BEQ $4E04 C0/4DB6: 29 20 AND #$20 C0/4DB8: F0 4A BEQ $4E04 C0/4DBA: A5 AF LDA $AF C0/4DBC: 3A DEC C0/4DBD: 85 8F STA $8F C0/4DBF: A2 0E 4E LDX #$4E0E C0/4DC2: 86 8C STX $8C ; ++$8C = bg data source address C0/4DC4: A5 90 LDA $90 C0/4DC6: 1A INC C0/4DC7: EB XBA C0/4DC8: A5 AF LDA $AF C0/4DCA: AA TAX C0/4DCB: 7B TDC C0/4DCC: BF 00 20 7E LDA $7E2000,X ; return if there is an object on the door C0/4DD0: C9 FF CMP #$FF C0/4DD2: D0 30 BNE $4E04 C0/4DD4: C2 21 REP #$21 C0/4DD6: AE 27 11 LDX $1127 ; get open door count (x2) C0/4DD9: A5 8F LDA $8F C0/4DDB: 9D 29 11 STA $1129,X ; save door position C0/4DDE: E8 INX ; increment open door count C0/4DDF: E8 INX C0/4DE0: E0 30 00 CPX #$0030 C0/4DE3: B0 03 BCS $4DE8 ; maximum of 24 open doors C0/4DE5: 8E 27 11 STX $1127 C0/4DE8: 7B TDC C0/4DE9: E2 20 SEP #$20 C0/4DEB: A9 C0 LDA #$C0 ; bank byte of bg data address C0/4DED: 85 8E STA $8E C0/4DEF: A2 00 00 LDX #$0000 ; C0/4DF2: 86 2A STX $2A C0/4DF4: A9 04 LDA #$04 ; update bg1 (immediately) C0/4DF6: 8D 5A 05 STA $055A C0/4DF9: 20 C4 1E JSR $1EC4 ; C0/4DFC: A9 2C LDA #$2C ; play door sound effect C0/4DFE: 20 D3 02 JSR $02D3 C0/4E01: A9 01 LDA #$01 ; return (door opened) C0/4E03: 60 RTS C0/4E04: 7B TDC ; return (no door opened) C0/4E05: 60 RTS ; small door 1 map data (1x2) rewrite_door_data0: C0/4E06: .DB $01, $02 .DB $04 .DB $14 ; small door 2 map data (1x2) rewrite_door_data1: C0/4E0A: .DB $01, $02 .DB $06 .DB $16 ; big door map data (3x2) rewrite_door_data2: C0/4E0E: .DB $03, $02 .DB $08, $09, $0A .DB $18, $19, $1A ; [ Party Takes a Step ] ; A = facing direction (in) ; A = 1 if movement allowed, 0 if not (out) C0/4E16: 85 B3 STA $B3 ; set movement direction C0/4E18: AA TAX C0/4E19: BF 8D 4F C0 LDA $C04F8D,X ; get pointer to tile number C0/4E1D: AA TAX C0/4E1E: B5 A3 LDA $A3,X ; bg1 tile C0/4E20: AA TAX C0/4E21: AD B8 1E LDA $1EB8 ; branch if sprint shoes effect is disabled C0/4E24: 29 02 AND #$02 C0/4E26: D0 0B BNE $4E33 C0/4E28: AD DF 11 LDA $11DF ; branch if not wearing sprint shoes C0/4E2B: 29 20 AND #$20 C0/4E2D: F0 04 BEQ $4E33 C0/4E2F: A9 03 LDA #$03 ; object speed = 3 (sprint shoes) C0/4E31: 80 02 BRA $4E35 C0/4E33: A9 02 LDA #$02 ; object speed = 2 (normal) C0/4E35: 99 75 08 STA $0875,Y C0/4E38: A9 7E LDA #$7E C0/4E3A: 48 PHA C0/4E3B: AB PLB C0/4E3C: DA PHX C0/4E3D: A5 B3 LDA $B3 ; movement direction C0/4E3F: 3A DEC C0/4E40: AA TAX C0/4E41: BF 10 4F C0 LDA $C04F10,X ; get direction bit mask C0/4E45: 85 1A STA $1A C0/4E47: FA PLX C0/4E48: A5 B9 LDA $B9 ; directional passability of current tile C0/4E4A: 29 0F AND #$0F C0/4E4C: 25 1A AND $1A C0/4E4E: F0 48 BEQ $4E98 ; return if direction not allowed C0/4E50: BD 00 76 LDA $7600,X ; destination tile properties C0/4E53: 29 07 AND #$07 C0/4E55: C9 07 CMP #$07 C0/4E57: F0 3F BEQ $4E98 ; return if destination is a counter tile C0/4E59: A5 B8 LDA $B8 ; branch if current tile is not a bridge tile C0/4E5B: 29 04 AND #$04 C0/4E5D: F0 18 BEQ $4E77 ; bridge tile C0/4E5F: A5 B2 LDA $B2 C0/4E61: 29 01 AND #$01 C0/4E63: F0 09 BEQ $4E6E ; branch if party is on lower z-level ; bridge tile, party on upper z-level C0/4E65: BD 00 76 LDA $7600,X ; movement allowed unless destination tile is lower z-level C0/4E68: 29 02 AND #$02 C0/4E6A: D0 2C BNE $4E98 C0/4E6C: 80 2F BRA $4E9D ; bridge tile, party on lower z-level C0/4E6E: BD 00 76 LDA $7600,X ; movement allowed unless destination tile is upper z-level C0/4E71: 29 01 AND #$01 C0/4E73: D0 23 BNE $4E98 C0/4E75: 80 26 BRA $4E9D ; current tile is not a bridge tile C0/4E77: BD 00 76 LDA $7600,X ; destination tile z-level C0/4E7A: 29 03 AND #$03 C0/4E7C: C9 03 CMP #$03 C0/4E7E: F0 1D BEQ $4E9D ; movement always allowed if destination tile is upper & lower z-level C0/4E80: A5 B8 LDA $B8 C0/4E82: 29 03 AND #$03 C0/4E84: C9 03 CMP #$03 C0/4E86: F0 09 BEQ $4E91 ; branch if party is on upper & lower z-level C0/4E88: 49 03 EOR #$03 C0/4E8A: 3D 00 76 AND $7600,X ; movement allowed if party and destination z-level match C0/4E8D: D0 09 BNE $4E98 C0/4E8F: 80 0C BRA $4E9D C0/4E91: BD 00 76 LDA $7600,X ; party on upper & lower, movement allowed unless destination is a bridge tile C0/4E94: 29 04 AND #$04 C0/4E96: F0 05 BEQ $4E9D C0/4E98: 7B TDC C0/4E99: 48 PHA C0/4E9A: AB PLB C0/4E9B: 7B TDC ; A = 0 (no movement) C0/4E9C: 60 RTS ; movement allowed C0/4E9D: DA PHX C0/4E9E: A5 B3 LDA $B3 C0/4EA0: 20 03 7D JSR $7D03 ; get pointer to object map data in facing direction C0/4EA3: FA PLX C0/4EA4: A4 1E LDY $1E C0/4EA6: B9 00 20 LDA $2000,Y ; object map data at destination C0/4EA9: 30 19 BMI $4EC4 ; branch if there's no object there C0/4EAB: BD 00 76 LDA $7600,X C0/4EAE: 29 04 AND #$04 C0/4EB0: F0 E6 BEQ $4E98 ; movement not allowed unless destination tile is a bridge tile C0/4EB2: A5 B8 LDA $B8 C0/4EB4: 29 07 AND #$07 C0/4EB6: C9 01 CMP #$01 C0/4EB8: F0 DE BEQ $4E98 ; movement not allowed if current tile is upper z-level C0/4EBA: C9 02 CMP #$02 C0/4EBC: F0 06 BEQ $4EC4 ; movement allowed if current tile is lower z-level C0/4EBE: A5 B2 LDA $B2 C0/4EC0: C9 02 CMP #$02 C0/4EC2: D0 D4 BNE $4E98 ; movement not allowed if party is not on lower z-level C0/4EC4: BD 00 76 LDA $7600,X ; branch if destination tile is not a bridge tile C0/4EC7: 29 04 AND #$04 C0/4EC9: F0 06 BEQ $4ED1 C0/4ECB: A5 B2 LDA $B2 ; branch if party is on lower z-level (object map data doesn't get set if party is on bottom of a bridge tile) C0/4ECD: C9 02 CMP #$02 C0/4ECF: F0 1E BEQ $4EEF C0/4ED1: 7B TDC C0/4ED2: 48 PHA C0/4ED3: AB PLB C0/4ED4: AE 03 08 LDX $0803 ; get party object number C0/4ED7: 8E 04 42 STX $4204 C0/4EDA: A9 29 LDA #$29 C0/4EDC: 8D 06 42 STA $4206 C0/4EDF: EA NOP C0/4EE0: EA NOP C0/4EE1: EA NOP C0/4EE2: EA NOP C0/4EE3: A9 7E LDA #$7E C0/4EE5: 48 PHA C0/4EE6: AB PLB C0/4EE7: AF 14 42 00 LDA $004214 C0/4EEB: 0A ASL C0/4EEC: 99 00 20 STA $2000,Y ; set object map data C0/4EEF: A5 B8 LDA $B8 ; current tile z-level C0/4EF1: 29 07 AND #$07 C0/4EF3: C9 03 CMP #$03 C0/4EF5: B0 06 BCS $4EFD ; branch if a bridge tile (party retains previous z-level) C0/4EF7: A5 B8 LDA $B8 C0/4EF9: 29 03 AND #$03 ; set new party z-level C0/4EFB: 85 B2 STA $B2 C0/4EFD: 20 2D 4F JSR $4F2D ; update party sprite priority (based on destination tile) C0/4F00: 20 E6 4F JSR $4FE6 ; update party layer priority (based on destination tile) C0/4F03: 7B TDC C0/4F04: 48 PHA C0/4F05: AB PLB C0/4F06: A4 DA LDY $DA ; pointer to object data C0/4F08: A5 B3 LDA $B3 ; set movement direction C0/4F0A: 99 7E 08 STA $087E,Y C0/4F0D: A9 01 LDA #$01 ; A = 1 (movement allowed) C0/4F0F: 60 RTS C0/4F10: .DB $08, $01, $04, $02 ; [ Update Party Sprite Priority (based on current tile) ] chk_obj_no_after: C0/4F14: A6 B4 LDX $B4 ; pointer to party sprite data (+$0300) C0/4F16: E0 F8 00 CPX #$00F8 C0/4F19: F0 11 BEQ $4F2C ; return if party sprite is already lower z-level C0/4F1B: A5 B8 LDA $B8 ; return if current tile is a bridge tile C0/4F1D: 29 04 AND #$04 C0/4F1F: D0 0B BNE $4F2C C0/4F21: A5 B6 LDA $B6 ; return if upper tile is a bridge tile C0/4F23: 29 04 AND #$04 C0/4F25: D0 05 BNE $4F2C C0/4F27: A2 F8 00 LDX #$00F8 ; make party sprite lower z-level C0/4F2A: 86 B4 STX $B4 C0/4F2C: 60 RTS ; [ Update Party Sprite Priority (based on destination tile) ] C0/4F2D: A6 B4 LDX $B4 C0/4F2F: E0 B8 01 CPX #$01B8 ; return if sprite is already lower z-level C0/4F32: F0 46 BEQ $4F7A C0/4F34: A5 B3 LDA $B3 ; movement direction C0/4F36: AA TAX C0/4F37: BF 8D 4F C0 LDA $C04F8D,X ; tile in movement direction C0/4F3B: AA TAX C0/4F3C: B5 A3 LDA $A3,X C0/4F3E: AA TAX C0/4F3F: BF 00 76 7E LDA $7E7600,X ; tile properties C0/4F43: 85 1A STA $1A C0/4F45: 29 04 AND #$04 C0/4F47: F0 0D BEQ $4F56 ; branch if not a bridge tile ; destination tile is a bridge tile C0/4F49: A5 B2 LDA $B2 ; return if party is not on lower z-level C0/4F4B: C9 02 CMP #$02 C0/4F4D: D0 2B BNE $4F7A C0/4F4F: A2 B8 01 LDX #$01B8 ; set sprite to lower z-level priority C0/4F52: 86 B4 STX $B4 C0/4F54: 80 24 BRA $4F7A ; destination tile is not a bridge tile C0/4F56: A5 B3 LDA $B3 C0/4F58: AA TAX C0/4F59: BF 7B 4F C0 LDA $C04F7B,X ; destination tile for upper sprite C0/4F5D: AA TAX C0/4F5E: B5 A3 LDA $A3,X C0/4F60: AA TAX C0/4F61: BF 00 76 7E LDA $7E7600,X C0/4F65: C9 F7 CMP #$F7 ; return if impassable C0/4F67: F0 11 BEQ $4F7A C0/4F69: 29 04 AND #$04 C0/4F6B: F0 0D BEQ $4F7A ; return if not a bridge tile C0/4F6D: A5 B6 LDA $B6 C0/4F6F: 29 07 AND #$07 C0/4F71: C9 02 CMP #$02 C0/4F73: D0 05 BNE $4F7A ; return if current top sprite tile is not lower z-level only C0/4F75: A2 B8 01 LDX #$01B8 ; set sprite to lower z-level priority C0/4F78: 86 B4 STX $B4 C0/4F7A: 60 RTS ; pointers to upper sprite tiles in movement directions (+$A3) C0/4F7B: .DB $04, $01, $05, $07, $03, $02, $08, $06, $00 C0/4F84: .DB $04, $01, $02, $05, $08, $07, $06, $03, $00 ; pointers to tiles in movement directions (+$A3) C0/4F8D: .DB $07, $04, $08, $0A, $06, $05, $0B, $09, $03 C0/4F96: .DB $07, $04, $05, $08, $0B, $0A, $09, $06, $03 ; [ Update Party Layer Priority (based on current tile) ] chk_obj_prio_after: C0/4F9F: AC 03 08 LDY $0803 C0/4FA2: B9 68 08 LDA $0868,Y ; party layer priority C0/4FA5: 29 06 AND #$06 C0/4FA7: F0 03 BEQ $4FAC ; branch if default priority (based on tile properties) C0/4FA9: 4C 69 7C JMP $7C69 ; C0/4FAC: A5 B8 LDA $B8 C0/4FAE: 29 04 AND #$04 C0/4FB0: F0 10 BEQ $4FC2 ; branch if not on a bridge tile ; bridge tile C0/4FB2: A5 B2 LDA $B2 C0/4FB4: C9 01 CMP #$01 C0/4FB6: D0 2D BNE $4FE5 ; return if upper z-level C0/4FB8: B9 80 08 LDA $0880,Y ; upper sprite shown above bg priority 1 C0/4FBB: 09 30 ORA #$30 C0/4FBD: 99 80 08 STA $0880,Y C0/4FC0: 80 15 BRA $4FD7 ; not on a bridge tile C0/4FC2: B9 80 08 LDA $0880,Y C0/4FC5: 29 10 AND #$10 C0/4FC7: D0 0E BNE $4FD7 C0/4FC9: A5 B8 LDA $B8 C0/4FCB: 29 08 AND #$08 C0/4FCD: F0 08 BEQ $4FD7 ; branch if current tile is not priority for upper sprite C0/4FCF: B9 80 08 LDA $0880,Y ; upper sprite priority = 3 C0/4FD2: 09 30 ORA #$30 C0/4FD4: 99 80 08 STA $0880,Y C0/4FD7: A5 B8 LDA $B8 C0/4FD9: 29 10 AND #$10 C0/4FDB: F0 08 BEQ $4FE5 ; branch if current tile is not priority for lower sprite C0/4FDD: B9 81 08 LDA $0881,Y ; lower sprite priority = 3 C0/4FE0: 09 30 ORA #$30 C0/4FE2: 99 81 08 STA $0881,Y C0/4FE5: 60 RTS ; [ Update Party Layer Priority (based on destination tile) ] C0/4FE6: AC 03 08 LDY $0803 C0/4FE9: B9 68 08 LDA $0868,Y ; sprite layer priority C0/4FEC: 29 06 AND #$06 C0/4FEE: F0 03 BEQ $4FF3 C0/4FF0: 4C 69 7C JMP $7C69 C0/4FF3: A5 B3 LDA $B3 C0/4FF5: AA TAX C0/4FF6: BF 8D 4F C0 LDA $C04F8D,X C0/4FFA: AA TAX C0/4FFB: B5 A3 LDA $A3,X C0/4FFD: AA TAX C0/4FFE: BF 00 76 7E LDA $7E7600,X C0/5002: 29 04 AND #$04 C0/5004: F0 12 BEQ $5018 C0/5006: A5 B2 LDA $B2 C0/5008: C9 02 CMP #$02 C0/500A: D0 25 BNE $5031 C0/500C: B9 80 08 LDA $0880,Y C0/500F: 29 CF AND #$CF C0/5011: 09 20 ORA #$20 C0/5013: 99 80 08 STA $0880,Y C0/5016: 80 19 BRA $5031 C0/5018: B9 80 08 LDA $0880,Y C0/501B: 29 10 AND #$10 C0/501D: F0 12 BEQ $5031 C0/501F: BF 00 76 7E LDA $7E7600,X C0/5023: 29 08 AND #$08 C0/5025: D0 0A BNE $5031 C0/5027: B9 80 08 LDA $0880,Y C0/502A: 29 CF AND #$CF C0/502C: 09 20 ORA #$20 C0/502E: 99 80 08 STA $0880,Y C0/5031: BF 00 76 7E LDA $7E7600,X C0/5035: 29 10 AND #$10 C0/5037: D0 0A BNE $5043 C0/5039: B9 81 08 LDA $0881,Y C0/503C: 29 CF AND #$CF C0/503E: 09 20 ORA #$20 C0/5040: 99 81 08 STA $0881,Y C0/5043: 60 RTS ; [ Update Adjacent Tile Properties ] sense_around: C0/5044: AC 03 08 LDY $0803 C0/5047: C2 20 REP #$20 C0/5049: B9 6D 08 LDA $086D,Y C0/504C: 4A LSR C0/504D: 4A LSR C0/504E: 4A LSR C0/504F: 4A LSR C0/5050: E2 20 SEP #$20 C0/5052: 85 23 STA $23 C0/5054: 3A DEC C0/5055: 25 87 AND $87 C0/5057: 85 21 STA $21 C0/5059: 3A DEC C0/505A: 25 87 AND $87 C0/505C: 85 1F STA $1F C0/505E: A5 23 LDA $23 C0/5060: 1A INC C0/5061: 25 87 AND $87 C0/5063: 85 25 STA $25 C0/5065: 64 1E STZ $1E C0/5067: 64 20 STZ $20 C0/5069: 64 22 STZ $22 C0/506B: 64 24 STZ $24 C0/506D: C2 20 REP #$20 C0/506F: B9 6A 08 LDA $086A,Y C0/5072: 4A LSR C0/5073: 4A LSR C0/5074: 4A LSR C0/5075: 4A LSR C0/5076: 29 FF 00 AND #$00FF C0/5079: E2 20 SEP #$20 C0/507B: 3A DEC C0/507C: 25 86 AND $86 C0/507E: 85 1A STA $1A C0/5080: 1A INC C0/5081: 25 86 AND $86 C0/5083: 85 1B STA $1B C0/5085: 1A INC C0/5086: 25 86 AND $86 C0/5088: 85 1C STA $1C C0/508A: A9 7F LDA #$7F C0/508C: 48 PHA C0/508D: AB PLB C0/508E: 7B TDC C0/508F: AA TAX C0/5090: A8 TAY C0/5091: E2 10 SEP #$10 C0/5093: A4 1A LDY $1A C0/5095: B1 1E LDA ($1E),Y C0/5097: 85 A3 STA $A3 C0/5099: B1 20 LDA ($20),Y C0/509B: 85 A6 STA $A6 C0/509D: B1 22 LDA ($22),Y C0/509F: 85 A9 STA $A9 C0/50A1: B1 24 LDA ($24),Y C0/50A3: 85 AC STA $AC C0/50A5: A4 1B LDY $1B C0/50A7: B1 1E LDA ($1E),Y C0/50A9: 85 A4 STA $A4 C0/50AB: B1 20 LDA ($20),Y C0/50AD: 85 A7 STA $A7 C0/50AF: B1 22 LDA ($22),Y C0/50B1: 85 AA STA $AA C0/50B3: B1 24 LDA ($24),Y C0/50B5: 85 AD STA $AD C0/50B7: A4 1C LDY $1C C0/50B9: B1 1E LDA ($1E),Y C0/50BB: 85 A5 STA $A5 C0/50BD: B1 20 LDA ($20),Y C0/50BF: 85 A8 STA $A8 C0/50C1: B1 22 LDA ($22),Y C0/50C3: 85 AB STA $AB C0/50C5: B1 24 LDA ($24),Y C0/50C7: 85 AE STA $AE C0/50C9: A9 7E LDA #$7E C0/50CB: 48 PHA C0/50CC: AB PLB C0/50CD: A6 A7 LDX $A7 C0/50CF: BD 00 76 LDA $7600,X C0/50D2: 85 B6 STA $B6 C0/50D4: BD 00 77 LDA $7700,X C0/50D7: 85 B7 STA $B7 C0/50D9: A6 AA LDX $AA C0/50DB: BD 00 76 LDA $7600,X C0/50DE: 85 B8 STA $B8 C0/50E0: BD 00 77 LDA $7700,X C0/50E3: 85 B9 STA $B9 C0/50E5: C2 10 REP #$10 C0/50E7: 7B TDC C0/50E8: 48 PHA C0/50E9: AB PLB C0/50EA: 60 RTS ; ------------------------------------------[ Field: Objects ]------------------------------------------ ; [ Load Sprite Palettes ] C0/50EB: A6 00 LDX $00 C0/50ED: BF 00 80 E6 LDA $E68000,X C0/50F1: 9F 00 73 7E STA $7E7300,X C0/50F5: 9F 00 75 7E STA $7E7500,X C0/50F9: E8 INX C0/50FA: E0 00 01 CPX #$0100 C0/50FD: D0 EE BNE $50ED C0/50FF: 60 RTS C0/5100: .DB $00, $0C, $18, $24 ; [ Init Character Portrait (from ending) ] C0/5104: AF B8 1E 00 LDA $001EB8 ; return if portrait event bit is not set C0/5108: 29 40 AND #$40 C0/510A: D0 01 BNE $510D C0/510C: 60 RTS C0/510D: AD 95 07 LDA $0795 ; portrait index C0/5110: C2 20 REP #$20 C0/5112: EB XBA C0/5113: 4A LSR C0/5114: 4A LSR C0/5115: 4A LSR C0/5116: AA TAX C0/5117: 7B TDC C0/5118: E2 20 SEP #$20 C0/511A: A9 7E LDA #$7E C0/511C: 48 PHA C0/511D: AB PLB C0/511E: A4 00 LDY $00 C0/5120: BF 60 58 ED LDA $ED5860,X ; character portrait color palette C0/5124: 99 E0 75 STA $75E0,Y C0/5127: E8 INX C0/5128: C8 INY C0/5129: C0 20 00 CPY #$0020 C0/512C: D0 F2 BNE $5120 C0/512E: 7B TDC C0/512F: 48 PHA C0/5130: AB PLB C0/5131: 9C 0B 42 STZ $420B C0/5134: A2 00 70 LDX #$7000 ; clear VRAM $7000-$7800 C0/5137: 8E 16 21 STX $2116 C0/513A: A9 80 LDA #$80 C0/513C: 8D 15 21 STA $2115 C0/513F: A9 09 LDA #$09 C0/5141: 8D 00 43 STA $4300 C0/5144: A9 18 LDA #$18 C0/5146: 8D 01 43 STA $4301 C0/5149: A2 00 00 LDX #$0000 ; source = $00 (fixed address) C0/514C: 8E 02 43 STX $4302 C0/514F: A9 00 LDA #$00 C0/5151: 8D 04 43 STA $4304 C0/5154: 8D 07 43 STA $4307 C0/5157: A2 00 10 LDX #$1000 C0/515A: 8E 05 43 STX $4305 C0/515D: A9 01 LDA #$01 C0/515F: 8D 0B 42 STA $420B C0/5162: 9C 0B 42 STZ $420B C0/5165: A9 41 LDA #$41 C0/5167: 8D 00 43 STA $4300 C0/516A: AD 95 07 LDA $0795 ; portrait index C0/516D: 0A ASL C0/516E: AA TAX C0/516F: C2 21 REP #$21 C0/5171: BF BA 51 C0 LDA $C051BA,X ; pointer to portrait graphics C0/5175: 85 2A STA $2A C0/5177: 7B TDC C0/5178: E2 20 SEP #$20 C0/517A: A6 00 LDX $00 C0/517C: BF DA 51 C0 LDA $C051DA,X ; tile formation C0/5180: C2 21 REP #$21 C0/5182: EB XBA C0/5183: 4A LSR C0/5184: 4A LSR C0/5185: 4A LSR C0/5186: 18 CLC C0/5187: 65 2A ADC $2A C0/5189: 8D 02 43 STA $4302 C0/518C: 7B TDC C0/518D: E2 20 SEP #$20 C0/518F: A9 ED LDA #$ED C0/5191: 8D 04 43 STA $4304 C0/5194: A0 20 00 LDY #$0020 ; DMA one tile at a time C0/5197: 8C 05 43 STY $4305 C0/519A: BF F3 51 C0 LDA $C051F3,X ; VRAM destination C0/519E: C2 21 REP #$21 C0/51A0: 0A ASL C0/51A1: 0A ASL C0/51A2: 0A ASL C0/51A3: 0A ASL C0/51A4: 18 CLC C0/51A5: 69 00 70 ADC #$7000 C0/51A8: 8D 16 21 STA $2116 C0/51AB: 7B TDC C0/51AC: E2 20 SEP #$20 C0/51AE: A9 01 LDA #$01 C0/51B0: 8D 0B 42 STA $420B C0/51B3: E8 INX C0/51B4: E0 19 00 CPX #$0019 ; 5x5 = 25 tiles total C0/51B7: D0 C3 BNE $517C C0/51B9: 60 RTS ; pointers to character portrait graphics (+$ED0000, first 16 only) C0/51BA: .DW $1D00, $2020, $2340, $2660, $2980, $2CA0, $2FC0, $32E0 C0/51CA: .DW $3600, $3920, $3C40, $3F60, $4280, $45A0, $48C0, $4BE0 ; character portrait tile formation C0/51DA: .DB $00, $01, $02, $03, $08 C0/51DF: .DB $10, $11, $12, $13, $09 C0/51E4: .DB $04, $05, $06, $07, $0A C0/51E9: .DB $14, $15, $16, $17, $0B C0/51EE: .DB $0D, $0E, $0F, $18, $0C ; character portrait VRAM location C0/51F3: .DB $00, $01, $02, $03, $04 C0/51F8: .DB $10, $11, $12, $13, $14 C0/51FD: .DB $20, $21, $22, $23, $24 C0/5202: .DB $30, $31, $32, $33, $34 C0/5207: .DB $40, $41, $42, $43, $44 ; [ Init Character Object Sprite Priority ] C0/520C: A4 00 LDY $00 C0/520E: B9 68 08 LDA $0868,Y ; sprite priority/walking animation C0/5211: 29 F8 AND #$F8 ; enable walking animation C0/5213: 09 01 ORA #$01 C0/5215: 99 68 08 STA $0868,Y C0/5218: C2 21 REP #$21 ; loop through character objects only C0/521A: 98 TYA C0/521B: 69 29 00 ADC #$0029 C0/521E: A8 TAY C0/521F: 7B TDC C0/5220: E2 20 SEP #$20 C0/5222: C0 90 02 CPY #$0290 C0/5225: D0 E7 BNE $520E C0/5227: 60 RTS ; [ Init NPC Event Bits ] init_people_flag: C0/5228: A6 00 LDX $00 C0/522A: BF A0 E0 C0 LDA $C0E0A0,X C0/522E: 9D E0 1E STA $1EE0,X C0/5231: E8 INX C0/5232: E0 80 00 CPX #$0080 C0/5235: D0 F3 BNE $522A C0/5237: 60 RTS ; [ Init Object Map Data ] C0/5238: A4 00 LDY $00 ; loop through all objects C0/523A: 64 1B STZ $1B C0/523C: CC 03 08 CPY $0803 ; skip if this is the party object C0/523F: F0 2E BEQ $526F C0/5241: BE 8D 08 LDX $088D,Y ; skip if object is not on this map C0/5244: EC 82 00 CPX $0082 C0/5247: D0 26 BNE $526F C0/5249: B9 67 08 LDA $0867,Y ; skip if object is not visible C0/524C: 10 21 BPL $526F C0/524E: B9 7C 08 LDA $087C,Y ; skip if object scrolls with bg2 C0/5251: 30 1C BMI $526F C0/5253: B9 68 08 LDA $0868,Y ; skip if this is an NPC with special graphics C0/5256: 29 E0 AND #$E0 C0/5258: C9 80 CMP #$80 C0/525A: F0 13 BEQ $526F C0/525C: B9 8C 08 LDA $088C,Y ; skip if not normal sprite priority C0/525F: 29 C0 AND #$C0 C0/5261: D0 0C BNE $526F C0/5263: 20 E1 7C JSR $7CE1 ; update pointer to object map data C0/5266: BE 7A 08 LDX $087A,Y ; get pointer C0/5269: A5 1B LDA $1B C0/526B: 9F 00 20 7E STA $7E2000,X ; set object map data C0/526F: E6 1B INC $1B ; next object C0/5271: E6 1B INC $1B C0/5273: C2 21 REP #$21 C0/5275: 98 TYA C0/5276: 69 29 00 ADC #$0029 C0/5279: A8 TAY C0/527A: 7B TDC C0/527B: E2 20 SEP #$20 C0/527D: C0 B0 07 CPY #$07B0 C0/5280: D0 BA BNE $523C C0/5282: AC 03 08 LDY $0803 ; pointer to party object data C0/5285: 8C 04 42 STY $4204 C0/5288: A9 29 LDA #$29 ; divide by $29 to get object number C0/528A: 8D 06 42 STA $4206 C0/528D: A5 B8 LDA $B8 ; tile properties, branch if bottom sprite is lower z-level C0/528F: 29 04 AND #$04 C0/5291: F0 06 BEQ $5299 C0/5293: A5 B2 LDA $B2 ; return if party is on lower z-level C0/5295: C9 02 CMP #$02 C0/5297: F0 0E BEQ $52A7 C0/5299: 20 E1 7C JSR $7CE1 ; update pointer to object map data C0/529C: BE 7A 08 LDX $087A,Y ; get pointer C0/529F: AD 14 42 LDA $4214 ; get object number * 2 C0/52A2: 0A ASL C0/52A3: 9F 00 20 7E STA $7E2000,X ; set object map data C0/52A7: 60 RTS ; [ Load NPC Data ] init_people: C0/52A8: A6 00 LDX $00 C0/52AA: 9E F7 0A STZ $0AF7,X ; clear object data for NPC's $10-$28 C0/52AD: E8 INX C0/52AE: E0 D8 03 CPX #$03D8 C0/52B1: D0 F7 BNE $52AA C0/52B3: 9C 8F 07 STZ $078F ; clear number of active NPC's C0/52B6: C2 20 REP #$20 C0/52B8: A5 82 LDA $82 ; map index C0/52BA: 0A ASL C0/52BB: AA TAX C0/52BC: BF 12 1A C4 LDA $C41A12,X ; pointer to next map's NPC data C0/52C0: 85 1E STA $1E C0/52C2: BF 10 1A C4 LDA $C41A10,X ; pointer to this map's NPC data C0/52C6: AA TAX C0/52C7: 7B TDC C0/52C8: E2 20 SEP #$20 C0/52CA: A0 90 02 LDY #$0290 ; start at object $10 C0/52CD: E4 1E CPX $1E C0/52CF: D0 03 BNE $52D4 ; end loop after last npc C0/52D1: 4C 34 54 JMP $5434 C0/52D4: BF 10 1A C4 LDA $C41A10,X ; copy pointer to event script C0/52D8: 99 89 08 STA $0889,Y C0/52DB: BF 11 1A C4 LDA $C41A11,X C0/52DF: 99 8A 08 STA $088A,Y C0/52E2: BF 12 1A C4 LDA $C41A12,X C0/52E6: 29 03 AND #$03 C0/52E8: 99 8B 08 STA $088B,Y C0/52EB: BF 12 1A C4 LDA $C41A12,X ; copy color palette C0/52EF: 29 1C AND #$1C C0/52F1: 4A LSR C0/52F2: 99 80 08 STA $0880,Y C0/52F5: 99 81 08 STA $0881,Y C0/52F8: BF 12 1A C4 LDA $C41A12,X ; scroll with bg2 C0/52FC: 29 20 AND #$20 C0/52FE: 0A ASL C0/52FF: 0A ASL C0/5300: 99 7C 08 STA $087C,Y C0/5303: C2 20 REP #$20 C0/5305: BF 12 1A C4 LDA $C41A12,X ; event bit to enable this object C0/5309: 4A LSR C0/530A: 4A LSR C0/530B: 4A LSR C0/530C: 4A LSR C0/530D: 4A LSR C0/530E: 4A LSR C0/530F: E2 20 SEP #$20 C0/5311: DA PHX C0/5312: 5A PHY C0/5313: 20 C1 BA JSR $BAC1 ; get event bit (+$1EE0) C0/5316: 7A PLY C0/5317: FA PLX C0/5318: C9 00 CMP #$00 C0/531A: F0 02 BEQ $531E ; branch if NPC is not enabled C0/531C: A9 C0 LDA #$C0 ; enable and show NPC C0/531E: 99 67 08 STA $0867,Y C0/5321: BF 14 1A C4 LDA $C41A14,X ; NPC shown in/on vehicle (or special NPC graphics) C0/5325: 29 80 AND #$80 C0/5327: 99 68 08 STA $0868,Y C0/532A: C2 20 REP #$20 C0/532C: BF 14 1A C4 LDA $C41A14,X ; x position C0/5330: 29 7F 00 AND #$007F C0/5333: 0A ASL C0/5334: 0A ASL C0/5335: 0A ASL C0/5336: 0A ASL C0/5337: 99 6A 08 STA $086A,Y C0/533A: BF 15 1A C4 LDA $C41A15,X ; y position C0/533E: 29 3F 00 AND #$003F C0/5341: 0A ASL C0/5342: 0A ASL C0/5343: 0A ASL C0/5344: 0A ASL C0/5345: 99 6D 08 STA $086D,Y C0/5348: 7B TDC C0/5349: E2 20 SEP #$20 C0/534B: 99 69 08 STA $0869,Y ; clear LSB's of position C0/534E: 99 6C 08 STA $086C,Y C0/5351: 99 6F 08 STA $086F,Y ; clear jump y-offset C0/5354: 99 70 08 STA $0870,Y C0/5357: 99 87 08 STA $0887,Y ; clear jump counter C0/535A: BF 15 1A C4 LDA $C41A15,X ; object speed C0/535E: 29 C0 AND #$C0 C0/5360: 4A LSR C0/5361: 4A LSR C0/5362: 4A LSR C0/5363: 4A LSR C0/5364: 4A LSR C0/5365: 4A LSR C0/5366: 99 75 08 STA $0875,Y C0/5369: BF 16 1A C4 LDA $C41A16,X ; graphics index (also actor index) C0/536D: 99 78 08 STA $0878,Y C0/5370: 99 79 08 STA $0879,Y C0/5373: BF 17 1A C4 LDA $C41A17,X ; movement type C0/5377: 29 0F AND #$0F C0/5379: 19 7C 08 ORA $087C,Y C0/537C: 99 7C 08 STA $087C,Y C0/537F: BF 17 1A C4 LDA $C41A17,X ; sprite priority C0/5383: 29 30 AND #$30 C0/5385: 0A ASL C0/5386: 0A ASL C0/5387: 99 8C 08 STA $088C,Y C0/538A: BF 17 1A C4 LDA $C41A17,X ; vehicle index (or animation speed for special animation, which is unusable for special npc graphics) C0/538E: 29 C0 AND #$C0 C0/5390: 4A LSR C0/5391: 19 68 08 ORA $0868,Y C0/5394: 99 68 08 STA $0868,Y C0/5397: BF 18 1A C4 LDA $C41A18,X ; facing direction C0/539B: 29 03 AND #$03 C0/539D: 99 7F 08 STA $087F,Y C0/53A0: DA PHX C0/53A1: AA TAX C0/53A2: BF 2D 58 C0 LDA $C0582D,X ; graphic position for facing direction C0/53A6: 99 77 08 STA $0877,Y C0/53A9: 99 76 08 STA $0876,Y C0/53AC: FA PLX C0/53AD: BF 18 1A C4 LDA $C41A18,X ; turn when activated (or 32x32 sprite size for special graphics) C0/53B1: 29 04 AND #$04 C0/53B3: 0A ASL C0/53B4: 0A ASL C0/53B5: 0A ASL C0/53B6: 19 7C 08 ORA $087C,Y C0/53B9: 99 7C 08 STA $087C,Y C0/53BC: BF 18 1A C4 LDA $C41A18,X ; sprite layer priority C0/53C0: 29 18 AND #$18 C0/53C2: 4A LSR C0/53C3: 4A LSR C0/53C4: 85 1A STA $1A C0/53C6: B9 68 08 LDA $0868,Y C0/53C9: 29 F9 AND #$F9 C0/53CB: 05 1A ORA $1A C0/53CD: 99 68 08 STA $0868,Y C0/53D0: BF 18 1A C4 LDA $C41A18,X ; special animation offset C0/53D4: 29 E0 AND #$E0 C0/53D6: F0 1E BEQ $53F6 ; branch if no special animation C0/53D8: 4A LSR C0/53D9: 4A LSR C0/53DA: 4A LSR C0/53DB: 4A LSR C0/53DC: 4A LSR C0/53DD: 19 8C 08 ORA $088C,Y C0/53E0: 99 8C 08 STA $088C,Y C0/53E3: BF 18 1A C4 LDA $C41A18,X ; animated frame type C0/53E7: 29 03 AND #$03 C0/53E9: 0A ASL C0/53EA: 0A ASL C0/53EB: 0A ASL C0/53EC: 19 8C 08 ORA $088C,Y C0/53EF: 09 20 ORA #$20 ; enable animation C0/53F1: 99 8C 08 STA $088C,Y C0/53F4: 80 00 BRA $53F6 C0/53F6: C2 20 REP #$20 C0/53F8: A5 82 LDA $82 ; set map index C0/53FA: 99 8D 08 STA $088D,Y C0/53FD: 7B TDC C0/53FE: E2 20 SEP #$20 C0/5400: 7B TDC C0/5401: 99 7E 08 STA $087E,Y ; clear movement direction C0/5404: 99 86 08 STA $0886,Y ; clear number of steps to take C0/5407: 99 82 08 STA $0882,Y ; clear script wait counter C0/540A: B9 68 08 LDA $0868,Y ; enable walking animation C0/540D: 09 01 ORA #$01 C0/540F: 99 68 08 STA $0868,Y C0/5412: DA PHX C0/5413: 20 E1 7C JSR $7CE1 ; update pointer to object map data C0/5416: 20 17 56 JSR $5617 ; update object sprite priority C0/5419: FA PLX C0/541A: EE 8F 07 INC $078F ; increment number of active NPC's C0/541D: C2 21 REP #$21 C0/541F: 98 TYA ; next NPC C0/5420: 69 29 00 ADC #$0029 C0/5423: A8 TAY C0/5424: 8A TXA C0/5425: 18 CLC C0/5426: 69 09 00 ADC #$0009 C0/5429: AA TAX C0/542A: 7B TDC C0/542B: E2 20 SEP #$20 C0/542D: E4 1E CPX $1E C0/542F: F0 03 BEQ $5434 C0/5431: 4C D4 52 JMP $52D4 C0/5434: C0 B0 07 CPY #$07B0 ; disable and hide any remaining NPC's C0/5437: F0 17 BEQ $5450 C0/5439: B9 67 08 LDA $0867,Y C0/543C: 29 3F AND #$3F C0/543E: 99 67 08 STA $0867,Y C0/5441: C2 21 REP #$21 C0/5443: 98 TYA C0/5444: 69 29 00 ADC #$0029 C0/5447: A8 TAY C0/5448: 7B TDC C0/5449: E2 20 SEP #$20 C0/544B: C0 B0 07 CPY #$07B0 ; 32 NPC's total C0/544E: D0 E9 BNE $5439 C0/5450: 20 4A 71 JSR $714A ; update character objects C0/5453: 60 RTS ; [ Init Special NPC Graphics ] C0/5454: AD 8F 07 LDA $078F ; return if there are no active NPC's C0/5457: F0 24 BEQ $547D C0/5459: A0 90 02 LDY #$0290 ; start with NPC $10 C0/545C: 7B TDC C0/545D: 48 PHA C0/545E: B9 68 08 LDA $0868,Y ; skip if not special graphics C0/5461: 29 E0 AND #$E0 C0/5463: C9 80 CMP #$80 C0/5465: D0 05 BNE $546C C0/5467: 5A PHY C0/5468: 20 7E 54 JSR $547E ; init special NPC graphics C0/546B: 7A PLY C0/546C: C2 21 REP #$21 C0/546E: 98 TYA C0/546F: 69 29 00 ADC #$0029 ; loop through all active NPC's C0/5472: A8 TAY C0/5473: 7B TDC C0/5474: E2 20 SEP #$20 C0/5476: 68 PLA C0/5477: 1A INC C0/5478: CD 8F 07 CMP $078F C0/547B: D0 E0 BNE $545D C0/547D: 60 RTS ; [ Init Special Graphics for NPC ] ; Y = pointer to NPC object data C0/547E: B9 7C 08 LDA $087C,Y ; passability flag C0/5481: 09 10 ORA #$10 C0/5483: 99 7C 08 STA $087C,Y C0/5486: B9 79 08 LDA $0879,Y ; graphic index C0/5489: C2 20 REP #$20 C0/548B: 0A ASL C0/548C: AA TAX C0/548D: BF F2 D0 C0 LDA $C0D0F2,X ; ++$2A = pointer to graphics C0/5491: 85 2A STA $2A C0/5493: 7B TDC C0/5494: E2 20 SEP #$20 C0/5496: BF 3C D2 C0 LDA $C0D23C,X C0/549A: 85 2C STA $2C C0/549C: B9 89 08 LDA $0889,Y ; continuous animation flag C0/549F: 0A ASL C0/54A0: 7B TDC C0/54A1: 2A ROL C0/54A2: 85 1B STA $1B C0/54A4: B9 68 08 LDA $0868,Y ; copy to walking animation flag C0/54A7: 29 FE AND #$FE C0/54A9: 05 1B ORA $1B C0/54AB: 99 68 08 STA $0868,Y C0/54AE: B9 89 08 LDA $0889,Y ; +$3B = VRAM address C0/54B1: 29 7F AND #$7F C0/54B3: EB XBA C0/54B4: C2 20 REP #$20 C0/54B6: 4A LSR C0/54B7: 4A LSR C0/54B8: 4A LSR C0/54B9: 18 CLC C0/54BA: 69 00 70 ADC #$7000 C0/54BD: 85 3B STA $3B C0/54BF: 7B TDC C0/54C0: E2 20 SEP #$20 C0/54C2: B9 8C 08 LDA $088C,Y ; $1B = animated frame type C0/54C5: 29 18 AND #$18 C0/54C7: 4A LSR C0/54C8: 4A LSR C0/54C9: 4A LSR C0/54CA: 1A INC C0/54CB: 85 1B STA $1B C0/54CD: B9 7C 08 LDA $087C,Y ; 32x32 graphics flag C0/54D0: 29 20 AND #$20 C0/54D2: D0 5F BNE $5533 ; 16x16 graphics C0/54D4: A9 41 LDA #$41 C0/54D6: 8D 00 43 STA $4300 C0/54D9: A9 80 LDA #$80 C0/54DB: 8D 15 21 STA $2115 C0/54DE: A9 18 LDA #$18 C0/54E0: 8D 01 43 STA $4301 C0/54E3: A6 3B LDX $3B C0/54E5: 86 2D STX $2D C0/54E7: A0 02 00 LDY #$0002 ; copy 2 tiles C0/54EA: 9C 0B 42 STZ $420B C0/54ED: A6 2D LDX $2D C0/54EF: 8E 16 21 STX $2116 C0/54F2: A6 2A LDX $2A C0/54F4: 8E 02 43 STX $4302 C0/54F7: A5 2C LDA $2C C0/54F9: 8D 04 43 STA $4304 C0/54FC: A2 40 00 LDX #$0040 C0/54FF: 8E 05 43 STX $4305 C0/5502: A9 01 LDA #$01 C0/5504: 8D 0B 42 STA $420B C0/5507: C2 21 REP #$21 C0/5509: A5 2D LDA $2D C0/550B: 69 00 01 ADC #$0100 C0/550E: 85 2D STA $2D C0/5510: A5 2A LDA $2A C0/5512: 18 CLC C0/5513: 69 40 00 ADC #$0040 C0/5516: 85 2A STA $2A C0/5518: 7B TDC C0/5519: E2 20 SEP #$20 C0/551B: 65 2C ADC $2C C0/551D: 85 2C STA $2C C0/551F: 88 DEY C0/5520: D0 C8 BNE $54EA C0/5522: C2 21 REP #$21 C0/5524: A5 3B LDA $3B C0/5526: 69 20 00 ADC #$0020 C0/5529: 85 3B STA $3B C0/552B: 7B TDC C0/552C: E2 20 SEP #$20 C0/552E: C6 1B DEC $1B C0/5530: D0 B1 BNE $54E3 C0/5532: 60 RTS ; 32x32 graphics C0/5533: A9 41 LDA #$41 C0/5535: 8D 00 43 STA $4300 C0/5538: A9 80 LDA #$80 C0/553A: 8D 15 21 STA $2115 C0/553D: A9 18 LDA #$18 C0/553F: 8D 01 43 STA $4301 C0/5542: A6 3B LDX $3B C0/5544: 86 2D STX $2D C0/5546: A0 04 00 LDY #$0004 ; copy 4 tiles C0/5549: 9C 0B 42 STZ $420B C0/554C: A6 2D LDX $2D C0/554E: 8E 16 21 STX $2116 C0/5551: A6 2A LDX $2A C0/5553: 8E 02 43 STX $4302 C0/5556: A5 2C LDA $2C C0/5558: 8D 04 43 STA $4304 C0/555B: A2 80 00 LDX #$0080 ; $80 bytes each C0/555E: 8E 05 43 STX $4305 C0/5561: A9 01 LDA #$01 C0/5563: 8D 0B 42 STA $420B C0/5566: C2 21 REP #$21 C0/5568: A5 2D LDA $2D C0/556A: 69 00 01 ADC #$0100 C0/556D: 85 2D STA $2D C0/556F: A5 2A LDA $2A C0/5571: 18 CLC C0/5572: 69 80 00 ADC #$0080 C0/5575: 85 2A STA $2A C0/5577: 7B TDC C0/5578: E2 20 SEP #$20 C0/557A: 65 2C ADC $2C C0/557C: 85 2C STA $2C C0/557E: 88 DEY C0/557F: D0 C8 BNE $5549 C0/5581: C2 21 REP #$21 C0/5583: A5 3B LDA $3B C0/5585: 69 40 00 ADC #$0040 C0/5588: 85 3B STA $3B C0/558A: 7B TDC C0/558B: E2 20 SEP #$20 C0/558D: C6 1B DEC $1B C0/558F: D0 B1 BNE $5542 C0/5591: 60 RTS ; [ Add Object to Animation Queue ] ; Y = pointer to object data C0/5592: A6 00 LDX $00 C0/5594: C2 20 REP #$20 C0/5596: BD F7 10 LDA $10F7,X ; object animation queue C0/5599: C9 B0 07 CMP #$07B0 C0/559C: F0 07 BEQ $55A5 ; look for the next available slot C0/559E: E8 INX C0/559F: E8 INX C0/55A0: E0 2E 00 CPX #$002E C0/55A3: D0 F1 BNE $5596 C0/55A5: 98 TYA C0/55A6: 9D F7 10 STA $10F7,X ; add object to queue C0/55A9: 7B TDC C0/55AA: E2 20 SEP #$20 C0/55AC: 8A TXA C0/55AD: 99 8F 08 STA $088F,Y ; pointer to animation queue C0/55B0: 60 RTS ; [ Remove Object from Animation Queue ] ; Y = pointer to object data C0/55B1: B9 8F 08 LDA $088F,Y ; pointer to animation queue C0/55B4: AA TAX C0/55B5: C2 20 REP #$20 C0/55B7: A9 B0 07 LDA #$07B0 C0/55BA: 9D F7 10 STA $10F7,X ; no object C0/55BD: 7B TDC C0/55BE: E2 20 SEP #$20 C0/55C0: 60 RTS ; [ Init Object Animation ] C0/55C1: A4 00 LDY $00 C0/55C3: BB TYX C0/55C4: B9 67 08 LDA $0867,Y C0/55C7: 29 40 AND #$40 C0/55C9: F0 14 BEQ $55DF C0/55CB: C2 20 REP #$20 C0/55CD: 98 TYA C0/55CE: 9D F7 10 STA $10F7,X C0/55D1: 7B TDC C0/55D2: E2 20 SEP #$20 C0/55D4: 8A TXA C0/55D5: 99 8F 08 STA $088F,Y C0/55D8: E8 INX C0/55D9: E8 INX C0/55DA: E0 30 00 CPX #$0030 C0/55DD: F0 0F BEQ $55EE C0/55DF: C2 21 REP #$21 C0/55E1: 98 TYA C0/55E2: 69 29 00 ADC #$0029 C0/55E5: A8 TAY C0/55E6: 7B TDC C0/55E7: E2 20 SEP #$20 C0/55E9: C0 B0 07 CPY #$07B0 C0/55EC: D0 D6 BNE $55C4 C0/55EE: 60 RTS ; [ Clear Object Animation Queue ] clear_font_ptr: C0/55EF: C2 20 REP #$20 C0/55F1: 9C 48 00 STZ $0048 ; clear animation queue pointer C0/55F4: 9C 49 00 STZ $0049 C0/55F7: A6 00 LDX $00 C0/55F9: A9 B0 07 LDA #$07B0 C0/55FC: 9D F7 10 STA $10F7,X ; clear animation queue C0/55FF: E8 INX C0/5600: E8 INX C0/5601: E0 30 00 CPX #$0030 C0/5604: D0 F6 BNE $55FC C0/5606: 7B TDC C0/5607: E2 20 SEP #$20 C0/5609: 60 RTS ; [ Init Object Graphics ] init_obj: C0/560A: 20 6A 56 JSR $566A ; clear object map data C0/560D: 20 B1 56 JSR $56B1 ; clear sprite graphics in VRAM C0/5610: 20 7F 56 JSR $567F ; copy vehicle graphics to VRAM C0/5613: 20 EF 55 JSR $55EF ; clear object animation queue C0/5616: 60 RTS ; [ Update Object Sprite Priority ] C0/5617: B9 81 08 LDA $0881,Y ; lower sprite always shown behind priority 1 bg C0/561A: 29 CF AND #$CF C0/561C: 09 20 ORA #$20 C0/561E: 99 81 08 STA $0881,Y C0/5621: BE 7A 08 LDX $087A,Y ; pointer to map data C0/5624: BF 00 00 7F LDA $7F0000,X ; bg1 tile C0/5628: AA TAX C0/5629: BF 00 76 7E LDA $7E7600,X ; tile z-level properties C0/562D: 29 07 AND #$07 C0/562F: 99 88 08 STA $0888,Y ; set object z-level C0/5632: C9 01 CMP #$01 C0/5634: F0 13 BEQ $5649 ; branch if lower z-level C0/5636: C9 02 CMP #$02 C0/5638: F0 1A BEQ $5654 ; branch if upper z-level C0/563A: C9 03 CMP #$03 C0/563C: F0 21 BEQ $565F ; branch if transition tile C0/563E: B9 80 08 LDA $0880,Y ; upper sprite shown in front of priority 1 bg C0/5641: 29 CF AND #$CF C0/5643: 09 30 ORA #$30 C0/5645: 99 80 08 STA $0880,Y C0/5648: 60 RTS C0/5649: B9 80 08 LDA $0880,Y ; upper sprite shown behind priority 1 bg C0/564C: 29 CF AND #$CF C0/564E: 09 20 ORA #$20 C0/5650: 99 80 08 STA $0880,Y C0/5653: 60 RTS C0/5654: B9 80 08 LDA $0880,Y ; upper sprite shown behind priority 1 bg C0/5657: 29 CF AND #$CF C0/5659: 09 20 ORA #$20 C0/565B: 99 80 08 STA $0880,Y C0/565E: 60 RTS C0/565F: B9 80 08 LDA $0880,Y ; upper sprite shown behind priority 1 bg C0/5662: 29 CF AND #$CF C0/5664: 09 20 ORA #$20 C0/5666: 99 80 08 STA $0880,Y C0/5669: 60 RTS ; [ Clear Object Map Data ] obj_atr_clear: C0/566A: A2 00 20 LDX #$2000 ; clear $7E2000-$7E6000 C0/566D: 8E 81 21 STX $2181 C0/5670: 9C 83 21 STZ $2183 C0/5673: A2 00 40 LDX #$4000 C0/5676: A9 FF LDA #$FF C0/5678: 8D 80 21 STA $2180 C0/567B: CA DEX C0/567C: D0 FA BNE $5678 C0/567E: 60 RTS ; [ Copy Vehicle Graphics to VRAM ] trans_choko_cgx: C0/567F: 9C 0B 42 STZ $420B C0/5682: A9 80 LDA #$80 C0/5684: 8D 15 21 STA $2115 C0/5687: A2 00 72 LDX #$7200 ; VRAM destination = $7200 C0/568A: 8E 16 21 STX $2116 C0/568D: A9 41 LDA #$41 C0/568F: 8D 00 43 STA $4300 C0/5692: A9 18 LDA #$18 C0/5694: 8D 01 43 STA $4301 C0/5697: A2 00 30 LDX #$3000 ; source = $D83000 C0/569A: 8E 02 43 STX $4302 C0/569D: A9 D8 LDA #$D8 C0/569F: 8D 04 43 STA $4304 C0/56A2: 8D 07 43 STA $4307 C0/56A5: A2 00 1C LDX #$1C00 ; size = $1C00 C0/56A8: 8E 05 43 STX $4305 C0/56AB: A9 01 LDA #$01 C0/56AD: 8D 0B 42 STA $420B C0/56B0: 60 RTS ; [ Clear Sprite Graphics in VRAM ] obj_vram_clear: C0/56B1: 9C 81 00 STZ $0081 C0/56B4: A9 80 LDA #$80 C0/56B6: 8D 15 21 STA $2115 C0/56B9: A2 00 60 LDX #$6000 ; VRAM destination = $6000 (sprite graphics) C0/56BC: 8E 16 21 STX $2116 C0/56BF: A9 09 LDA #$09 ; fixed DMA source address C0/56C1: 8D 00 43 STA $4300 C0/56C4: A9 18 LDA #$18 C0/56C6: 8D 01 43 STA $4301 C0/56C9: A2 81 00 LDX #$0081 ; source address = $81 (dp) C0/56CC: 8E 02 43 STX $4302 C0/56CF: A9 00 LDA #$00 C0/56D1: 8D 04 43 STA $4304 C0/56D4: 8D 07 43 STA $4307 C0/56D7: A2 00 20 LDX #$2000 ; size = $2000 C0/56DA: 8E 05 43 STX $4305 C0/56DD: A9 01 LDA #$01 C0/56DF: 8D 0B 42 STA $420B C0/56E2: 60 RTS ; [ Init Sprite High Data ] make_x_over_data: C0/56E3: A9 7E LDA #$7E C0/56E5: 48 PHA C0/56E6: AB PLB C0/56E7: A4 00 LDY $00 C0/56E9: 7B TDC C0/56EA: A2 10 00 LDX #$0010 C0/56ED: 99 00 78 STA $7800,Y ; sprite high data pointers C0/56F0: C8 INY C0/56F1: CA DEX C0/56F2: D0 F9 BNE $56ED C0/56F4: 1A INC C0/56F5: C0 00 01 CPY #$0100 C0/56F8: D0 F0 BNE $56EA C0/56FA: A4 00 LDY $00 C0/56FC: A6 00 LDX $00 C0/56FE: BF 1C 57 C0 LDA $C0571C,X ; sprite high data inverse bit masks C0/5702: 99 00 79 STA $7900,Y C0/5705: BF 2C 57 C0 LDA $C0572C,X ; sprite high data bit masks C0/5709: 99 00 7A STA $7A00,Y C0/570C: C8 INY C0/570D: E8 INX C0/570E: E0 10 00 CPX #$0010 C0/5711: D0 EB BNE $56FE C0/5713: C0 00 01 CPY #$0100 C0/5716: D0 E4 BNE $56FC C0/5718: 7B TDC C0/5719: 48 PHA C0/571A: AB PLB C0/571B: 60 RTS ; sprite high data inverse bit masks x_over_and_data: C0/571C: .DB $FE, $FE, $FE, $FE, $FB, $FB, $FB, $FB, $EF, $EF, $EF, $EF, $BF, $BF, $BF, $BF ; sprite high data bit masks x_over_or_data: C0/572C: .DB $01, $01, $01, $01, $04, $04, $04, $04, $10, $10, $10, $10, $40, $40, $40, $40 ; [ Update Object Positions ] put_obj_atr: C0/573C: 64 DC STZ $DC ; start with object 0 C0/573E: A9 18 LDA #$18 ; update 24 objects C0/5740: 85 DE STA $DE C0/5742: A5 DC LDA $DC ; return if past the last active object C0/5744: C5 DD CMP $DD C0/5746: 90 03 BCC $574B C0/5748: 4C 01 58 JMP $5801 C0/574B: AA TAX C0/574C: C2 20 REP #$20 C0/574E: BD 03 08 LDA $0803,X ; get pointer to object data C0/5751: 85 DA STA $DA C0/5753: A8 TAY C0/5754: B9 71 08 LDA $0871,Y ; get horizontal movement speed C0/5757: 30 17 BMI $5770 C0/5759: B9 69 08 LDA $0869,Y ; moving right, add to horizontal position C0/575C: 18 CLC C0/575D: 79 71 08 ADC $0871,Y C0/5760: 99 69 08 STA $0869,Y C0/5763: E2 20 SEP #$20 C0/5765: 7B TDC C0/5766: 79 6B 08 ADC $086B,Y C0/5769: 99 6B 08 STA $086B,Y C0/576C: C2 20 REP #$20 C0/576E: 80 1C BRA $578C C0/5770: B9 71 08 LDA $0871,Y ; moving left, subtract from horizontal position C0/5773: 45 02 EOR $02 C0/5775: 85 1A STA $1A C0/5777: B9 69 08 LDA $0869,Y C0/577A: 18 CLC C0/577B: E5 1A SBC $1A C0/577D: 99 69 08 STA $0869,Y C0/5780: E2 20 SEP #$20 C0/5782: B9 6B 08 LDA $086B,Y C0/5785: E5 00 SBC $00 C0/5787: 99 6B 08 STA $086B,Y C0/578A: C2 20 REP #$20 C0/578C: B9 73 08 LDA $0873,Y ; get vertical movement speed C0/578F: 30 15 BMI $57A6 C0/5791: B9 6C 08 LDA $086C,Y ; moving down, add to vertical position C0/5794: 18 CLC C0/5795: 79 73 08 ADC $0873,Y C0/5798: 99 6C 08 STA $086C,Y C0/579B: E2 20 SEP #$20 C0/579D: 7B TDC C0/579E: 79 6E 08 ADC $086E,Y C0/57A1: 99 6E 08 STA $086E,Y C0/57A4: 80 1A BRA $57C0 C0/57A6: B9 73 08 LDA $0873,Y ; moving up, subtract from vertical position C0/57A9: 45 02 EOR $02 C0/57AB: 85 1A STA $1A C0/57AD: B9 6C 08 LDA $086C,Y C0/57B0: 18 CLC C0/57B1: E5 1A SBC $1A C0/57B3: 99 6C 08 STA $086C,Y C0/57B6: E2 20 SEP #$20 C0/57B8: B9 6E 08 LDA $086E,Y C0/57BB: E5 00 SBC $00 C0/57BD: 99 6E 08 STA $086E,Y C0/57C0: 7B TDC ; get jump position C0/57C1: E2 20 SEP #$20 C0/57C3: B9 87 08 LDA $0887,Y C0/57C6: 29 3F AND #$3F C0/57C8: F0 0C BEQ $57D6 ; skip if not jumping C0/57CA: B9 87 08 LDA $0887,Y ; decrement jump counter C0/57CD: AA TAX C0/57CE: 3A DEC C0/57CF: 99 87 08 STA $0887,Y C0/57D2: BF AD 59 C0 LDA $C059AD,X ; set y-offset C0/57D6: 99 6F 08 STA $086F,Y C0/57D9: 20 39 58 JSR $5839 ; update object graphics position C0/57DC: B9 69 08 LDA $0869,Y ; branch if object is between tiles C0/57DF: D0 20 BNE $5801 C0/57E1: B9 6A 08 LDA $086A,Y C0/57E4: 29 0F AND #$0F C0/57E6: D0 19 BNE $5801 C0/57E8: B9 6C 08 LDA $086C,Y C0/57EB: D0 14 BNE $5801 C0/57ED: B9 6D 08 LDA $086D,Y C0/57F0: 29 0F AND #$0F C0/57F2: D0 0D BNE $5801 C0/57F4: 7B TDC C0/57F5: 99 71 08 STA $0871,Y ; clear movement speed if object reached the next tile C0/57F8: 99 72 08 STA $0872,Y C0/57FB: 99 73 08 STA $0873,Y C0/57FE: 99 74 08 STA $0874,Y C0/5801: E6 DC INC $DC ; next object C0/5803: E6 DC INC $DC C0/5805: C6 DE DEC $DE C0/5807: F0 03 BEQ $580C C0/5809: 4C 42 57 JMP $5742 C0/580C: 60 RTS ; graphics positions for vehicle movement (chocobo/magitek only) C0/580D: .DB $04, $05, $04, $03, $6E, $6F, $6E, $6F, $01, $02, $01, $00, $2E, $2F, $2E, $2F ; graphics positions for character movement C0/581D: .DB $04, $05, $04, $03, $47, $48, $47, $46, $01, $02, $01, $00, $07, $08, $07, $06 ; graphics positions for standing still C0/582D: .DB $04, $47, $01, $07 ; graphics positions for special animation (animation offset) C0/5831: .DB $00, $00, $32, $28, $00, $00, $00, $00 ; [ Update Object Graphics Position ] naritaObj::set_obj_anima: C0/5839: B9 8C 08 LDA $088C,Y ; check for special object animation C0/583C: 29 20 AND #$20 C0/583E: F0 03 BEQ $5843 C0/5840: 4C E4 58 JMP $58E4 C0/5843: CC 03 08 CPY $0803 ; no special animation, check if this is the party object C0/5846: D0 0D BNE $5855 C0/5848: A5 B9 LDA $B9 ; tile properties C0/584A: C9 FF CMP #$FF C0/584C: F0 07 BEQ $5855 C0/584E: 29 40 AND #$40 ; force facing direction to be up if on a ladder tile C0/5850: F0 03 BEQ $5855 C0/5852: 7B TDC C0/5853: 80 03 BRA $5858 C0/5855: B9 7F 08 LDA $087F,Y ; facing direction C0/5858: 0A ASL C0/5859: 0A ASL C0/585A: 85 1A STA $1A C0/585C: B9 68 08 LDA $0868,Y ; vehicle C0/585F: 29 60 AND #$60 C0/5861: F0 03 BEQ $5866 C0/5863: 4C AD 58 JMP $58AD ; no vehicle C0/5866: B9 68 08 LDA $0868,Y C0/5869: 29 01 AND #$01 ; return if walking animation is disabled C0/586B: F0 3D BEQ $58AA C0/586D: A5 B8 LDA $B8 ; tile properties, diagonal movement C0/586F: 29 C0 AND #$C0 C0/5871: F0 0A BEQ $587D C0/5873: BE 71 08 LDX $0871,Y C0/5876: F0 12 BEQ $588A C0/5878: BE 73 08 LDX $0873,Y C0/587B: D0 1A BNE $5897 C0/587D: BE 71 08 LDX $0871,Y ; use horizontal direction to get frame C0/5880: F0 08 BEQ $588A C0/5882: B9 6A 08 LDA $086A,Y C0/5885: 4A LSR C0/5886: 4A LSR C0/5887: 4A LSR C0/5888: 80 13 BRA $589D C0/588A: BE 73 08 LDX $0873,Y ; use vertical direction C0/588D: F0 1B BEQ $58AA C0/588F: B9 6D 08 LDA $086D,Y C0/5892: 4A LSR C0/5893: 4A LSR C0/5894: 4A LSR C0/5895: 80 06 BRA $589D C0/5897: A5 46 LDA $46 ; diagonal, use vblank counter, but only divide by 4 (faster steps) C0/5899: 4A LSR C0/589A: 4A LSR C0/589B: 80 00 BRA $589D C0/589D: 29 03 AND #$03 ; combine frame and facing direction C0/589F: 18 CLC C0/58A0: 65 1A ADC $1A C0/58A2: AA TAX C0/58A3: BF 1D 58 C0 LDA $C0581D,X ; get graphics position C0/58A7: 99 77 08 STA $0877,Y C0/58AA: 4C 37 59 JMP $5937 ; chocobo or magitek C0/58AD: C9 60 CMP #$60 C0/58AF: F0 27 BEQ $58D8 C0/58B1: BE 71 08 LDX $0871,Y C0/58B4: F0 08 BEQ $58BE C0/58B6: B9 6A 08 LDA $086A,Y ; horizontal movement C0/58B9: 4A LSR C0/58BA: 4A LSR C0/58BB: 4A LSR C0/58BC: 80 0B BRA $58C9 C0/58BE: BE 73 08 LDX $0873,Y C0/58C1: F0 06 BEQ $58C9 C0/58C3: B9 6D 08 LDA $086D,Y ; vertical movement C0/58C6: 4A LSR C0/58C7: 4A LSR C0/58C8: 4A LSR C0/58C9: 29 03 AND #$03 ; combine frame and facing direction C0/58CB: 18 CLC C0/58CC: 65 1A ADC $1A C0/58CE: AA TAX C0/58CF: BF 0D 58 C0 LDA $C0580D,X ; get graphics position C0/58D3: 99 77 08 STA $0877,Y C0/58D6: 80 5F BRA $5937 ; raft C0/58D8: A5 1A LDA $1A C0/58DA: AA TAX C0/58DB: BF 1D 58 C0 LDA $C0581D,X C0/58DF: 99 77 08 STA $0877,Y C0/58E2: 80 53 BRA $5937 ; special animation C0/58E4: B9 68 08 LDA $0868,Y ; special animation speed (this will always be zero for special npc graphics) C0/58E7: 29 60 AND #$60 C0/58E9: 4A LSR C0/58EA: 4A LSR C0/58EB: 4A LSR C0/58EC: 4A LSR C0/58ED: 4A LSR C0/58EE: AA TAX C0/58EF: A5 45 LDA $45 ; frame counter C0/58F1: 4A LSR ; 0: update every 4 frames C0/58F2: 4A LSR ; 1: update every 8 frames C0/58F3: E0 00 00 CPX #$0000 ; 2: update every 16 frames C0/58F6: F0 04 BEQ $58FC ; 3: update every 32 frames C0/58F8: 4A LSR C0/58F9: CA DEX C0/58FA: 80 F7 BRA $58F3 C0/58FC: AA TAX C0/58FD: B9 8C 08 LDA $088C,Y ; number of animated frames C0/5900: 29 18 AND #$18 C0/5902: D0 04 BNE $5908 C0/5904: 64 1B STZ $1B ; 0: one frame C0/5906: 80 1F BRA $5927 C0/5908: C9 08 CMP #$08 C0/590A: D0 0B BNE $5917 C0/590C: 8A TXA C0/590D: 29 01 AND #$01 C0/590F: F0 02 BEQ $5913 C0/5911: A9 40 LDA #$40 C0/5913: 85 1B STA $1B ; 1: one frame, flips back and forth horizontally C0/5915: 80 10 BRA $5927 C0/5917: C9 10 CMP #$10 C0/5919: D0 07 BNE $5922 C0/591B: 8A TXA C0/591C: 29 01 AND #$01 C0/591E: 85 1B STA $1B ; 2: two frames C0/5920: 80 05 BRA $5927 C0/5922: 8A TXA C0/5923: 29 03 AND #$03 C0/5925: 85 1B STA $1B ; 3: 4 frames C0/5927: B9 8C 08 LDA $088C,Y ; graphic position offset C0/592A: 29 07 AND #$07 C0/592C: AA TAX C0/592D: BF 31 58 C0 LDA $C05831,X C0/5931: 18 CLC C0/5932: 65 1B ADC $1B C0/5934: 99 77 08 STA $0877,Y ; set next graphic position C0/5937: 60 RTS ; [ Update Party Sprite Data ] C0/5938: AC 03 08 LDY $0803 ; party object C0/593B: B9 68 08 LDA $0868,Y ; vehicle C0/593E: 29 60 AND #$60 C0/5940: D0 5C BNE $599E ; branch if in a vehicle C0/5942: B9 67 08 LDA $0867,Y C0/5945: 10 57 BPL $599E ; branch if not visible C0/5947: C2 20 REP #$20 C0/5949: A5 B4 LDA $B4 C0/594B: C9 F8 00 CMP #$00F8 C0/594E: D0 23 BNE $5973 ; branch if not normal priority ; party is normal priority C0/5950: AD DC 03 LDA $03DC ; copy party object's top sprite data to party sprite data (normal priority) C0/5953: 8D F8 03 STA $03F8 C0/5956: AD DE 03 LDA $03DE C0/5959: 8D FA 03 STA $03FA C0/595C: AD 9C 04 LDA $049C ; copy party object's top sprite data to party sprite data (low priority) C0/595F: 8D BC 04 STA $04BC C0/5962: AD 9E 04 LDA $049E C0/5965: 8D BE 04 STA $04BE C0/5968: A9 EF EF LDA #$EFEF ; hide low priority top sprite and normal priority bottom sprite C0/596B: 8D B8 04 STA $04B8 C0/596E: 8D FC 03 STA $03FC C0/5971: 80 21 BRA $5994 ; party is low priority C0/5973: AD DC 03 LDA $03DC ; copy party object's top sprite data to party sprite data (low priority) C0/5976: 8D B8 04 STA $04B8 C0/5979: AD DE 03 LDA $03DE C0/597C: 8D BA 04 STA $04BA C0/597F: AD 9C 04 LDA $049C ; copy party object's bottom sprite data to party sprite data (low priority) C0/5982: 8D BC 04 STA $04BC C0/5985: AD 9E 04 LDA $049E C0/5988: 8D BE 04 STA $04BE C0/598B: A9 EF EF LDA #$EFEF C0/598E: 8D F8 03 STA $03F8 ; hide normal priority party sprites C0/5991: 8D FC 03 STA $03FC C0/5994: 8D DC 03 STA $03DC ; hide normal priority object sprites for party C0/5997: 8D 9C 04 STA $049C C0/599A: 7B TDC C0/599B: E2 20 SEP #$20 C0/599D: 60 RTS C0/599E: A9 EF LDA #$EF C0/59A0: 8D B9 04 STA $04B9 ; hide low priority party sprites C0/59A3: 8D BD 04 STA $04BD C0/59A6: 8D F9 03 STA $03F9 ; hide normal priority party sprites C0/59A9: 8D FD 03 STA $03FD C0/59AC: 60 RTS ; y-offsets for objects jumping (low) C0/59AD: .DB $02, $04, $06, $08, $09, $0A, $0B, $0B, $0B, $0B, $0A, $09, $08, $06, $04, $02 C0/59BD: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/59CD: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/59DD: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; y-offsets for objects jumping (high) C0/59ED: .DB $05, $09, $0E, $11, $15, $18, $1B, $1E, $20, $22, $24, $26, $27, $28, $29, $29 C0/59FD: .DB $29, $29, $28, $27, $26, $24, $22, $20, $1E, $1B, $18, $15, $11, $0E, $09, $05 C0/5A0D: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/5A1D: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; [ Update Object Sprite Data ] C0/5A2D: A2 00 21 LDX #$2100 C0/5A30: DA PHX C0/5A31: 2B PLD C0/5A32: A2 00 03 LDX #$0300 ; clear $0300-$0520 C0/5A35: 86 81 STX $81 C0/5A37: 64 83 STZ $83 C0/5A39: A0 20 00 LDY #$0020 C0/5A3C: A9 EF LDA #$EF C0/5A3E: 85 80 STA $80 C0/5A40: 85 80 STA $80 C0/5A42: 85 80 STA $80 C0/5A44: 85 80 STA $80 C0/5A46: 85 80 STA $80 C0/5A48: 85 80 STA $80 C0/5A4A: 85 80 STA $80 C0/5A4C: 85 80 STA $80 C0/5A4E: 85 80 STA $80 C0/5A50: 85 80 STA $80 C0/5A52: 85 80 STA $80 C0/5A54: 85 80 STA $80 C0/5A56: 85 80 STA $80 C0/5A58: 85 80 STA $80 C0/5A5A: 85 80 STA $80 C0/5A5C: 85 80 STA $80 C0/5A5E: 88 DEY C0/5A5F: D0 DD BNE $5A3E C0/5A61: A2 00 05 LDX #$0500 C0/5A64: 86 81 STX $81 C0/5A66: 64 83 STZ $83 C0/5A68: 64 80 STZ $80 C0/5A6A: 64 80 STZ $80 C0/5A6C: 64 80 STZ $80 C0/5A6E: 64 80 STZ $80 C0/5A70: 64 80 STZ $80 C0/5A72: 64 80 STZ $80 C0/5A74: 64 80 STZ $80 C0/5A76: 64 80 STZ $80 C0/5A78: 64 80 STZ $80 C0/5A7A: 64 80 STZ $80 C0/5A7C: 64 80 STZ $80 C0/5A7E: 64 80 STZ $80 C0/5A80: 64 80 STZ $80 C0/5A82: 64 80 STZ $80 C0/5A84: 64 80 STZ $80 C0/5A86: 64 80 STZ $80 C0/5A88: 64 80 STZ $80 C0/5A8A: 64 80 STZ $80 C0/5A8C: 64 80 STZ $80 C0/5A8E: 64 80 STZ $80 C0/5A90: 64 80 STZ $80 C0/5A92: 64 80 STZ $80 C0/5A94: 64 80 STZ $80 C0/5A96: 64 80 STZ $80 C0/5A98: 64 80 STZ $80 C0/5A9A: 64 80 STZ $80 C0/5A9C: 64 80 STZ $80 C0/5A9E: 64 80 STZ $80 C0/5AA0: 64 80 STZ $80 C0/5AA2: 64 80 STZ $80 C0/5AA4: 64 80 STZ $80 C0/5AA6: 64 80 STZ $80 C0/5AA8: A2 00 00 LDX #$0000 C0/5AAB: DA PHX C0/5AAC: 2B PLD C0/5AAD: A9 7E LDA #$7E C0/5AAF: 48 PHA C0/5AB0: AB PLB C0/5AB1: A9 06 LDA #$06 ; update graphics for 6 sprites per frame C0/5AB3: 85 DE STA $DE C0/5AB5: A5 47 LDA $47 ; get first sprite to update this frame C0/5AB7: 29 03 AND #$03 C0/5AB9: AA TAX C0/5ABA: BF 77 67 C0 LDA $C06777,X C0/5ABE: 85 DC STA $DC C0/5AC0: A5 DC LDA $DC C0/5AC2: AA TAX C0/5AC3: BC F7 10 LDY $10F7,X ; pointer to object data C0/5AC6: C0 B0 07 CPY #$07B0 C0/5AC9: F0 06 BEQ $5AD1 ; branch if empty C0/5ACB: B9 77 08 LDA $0877,Y C0/5ACE: 99 76 08 STA $0876,Y ; set current graphic position C0/5AD1: E6 DC INC $DC ; next object C0/5AD3: E6 DC INC $DC C0/5AD5: C6 DE DEC $DE C0/5AD7: D0 E7 BNE $5AC0 C0/5AD9: A0 A0 00 LDY #$00A0 ; normal priority sprite data pointer C0/5ADC: 84 D4 STY $D4 C0/5ADE: A0 20 00 LDY #$0020 ; low and high priority sprite data pointer C0/5AE1: 84 D6 STY $D6 C0/5AE3: 84 D8 STY $D8 C0/5AE5: A9 18 LDA #$18 ; update all 24 objects every frame C0/5AE7: 85 DE STA $DE C0/5AE9: 64 DC STZ $DC ; current object C0/5AEB: A5 DC LDA $DC C0/5AED: C5 DD CMP $DD ; branch if less than total number of active objects C0/5AEF: 90 03 BCC $5AF4 C0/5AF1: 4C 34 5B JMP $5B34 C0/5AF4: AA TAX C0/5AF5: BD 03 08 LDA $0803,X ; pointer to object data C0/5AF8: 85 DA STA $DA C0/5AFA: BD 04 08 LDA $0804,X C0/5AFD: 85 DB STA $DB C0/5AFF: A4 DA LDY $DA C0/5B01: B9 67 08 LDA $0867,Y ; skip if object is not visible C0/5B04: 30 03 BMI $5B09 C0/5B06: 4C 34 5B JMP $5B34 C0/5B09: B9 68 08 LDA $0868,Y ; vehicle C0/5B0C: 29 E0 AND #$E0 C0/5B0E: C9 80 CMP #$80 C0/5B10: D0 03 BNE $5B15 ; branch if not special graphics C0/5B12: 4C F5 64 JMP $64F5 C0/5B15: B9 8C 08 LDA $088C,Y ; branch if object animation is enabled C0/5B18: 29 20 AND #$20 C0/5B1A: D0 6F BNE $5B8B C0/5B1C: B9 68 08 LDA $0868,Y ; branch if not in a vehicle C0/5B1F: 29 60 AND #$60 C0/5B21: F0 68 BEQ $5B8B C0/5B23: C9 20 CMP #$20 C0/5B25: D0 03 BNE $5B2A C0/5B27: 4C BA 60 JMP $60BA ; jump if chocobo C0/5B2A: C9 40 CMP #$40 C0/5B2C: D0 03 BNE $5B31 C0/5B2E: 4C 57 5D JMP $5D57 ; jump if magitek C0/5B31: 4C 36 5F JMP $5F36 ; jump if raft ; next object C0/5B34: 7B TDC C0/5B35: E2 20 SEP #$20 C0/5B37: E6 DC INC $DC C0/5B39: E6 DC INC $DC C0/5B3B: C6 DE DEC $DE C0/5B3D: F0 03 BEQ $5B42 ; branch if last object C0/5B3F: 4C EB 5A JMP $5AEB C0/5B42: 20 38 59 JSR $5938 ; update party sprite data C0/5B45: 7B TDC C0/5B46: 48 PHA C0/5B47: AB PLB C0/5B48: 60 RTS C0/5B49: .DB $FE, $FB, $EF, $BF C0/5B4D: .DB $01, $04, $10, $40 C0/5B51: .DW $0000, $00F6, $01EC, $02E2, $03D8 ; object sprite graphics locations in VRAM C0/5B5B: .DW $0000, $0004, $0008, $000C C0/5B53: .DW $0020, $0024, $0028, $002C C0/5B6B: .DW $0040, $0044, $0048, $004C C0/5B63: .DW $0060, $0064, $0068, $006C C0/5B7B: .DW $0080, $0084, $0088, $008C C0/5B73: .DW $00A0, $00A4, $00A8, $00AC ; [ Update Object Sprite Data (no vehicle) ] C0/5B8B: B9 7C 08 LDA $087C,Y ; branch if object scrolls with bg2 C0/5B8E: 30 30 BMI $5BC0 ; object scrolls with bg1 C0/5B90: C2 21 REP #$21 C0/5B92: B9 6D 08 LDA $086D,Y ; y position C0/5B95: E5 60 SBC $60 ; bg1 vertical scroll position C0/5B97: 38 SEC C0/5B98: E5 7F SBC $7F ; vertical offset for shake screen C0/5B9A: 38 SEC C0/5B9B: F9 6F 08 SBC $086F,Y ; y shift for jumping C0/5B9E: 85 24 STA $24 ; +$24 = y position on screen for bottom sprite C0/5BA0: 38 SEC C0/5BA1: E9 10 00 SBC #$0010 C0/5BA4: 85 22 STA $22 ; +$22 = y position on screen for top sprite C0/5BA6: 18 CLC C0/5BA7: 69 20 00 ADC #$0020 C0/5BAA: 85 26 STA $26 ; +$26 = y position on screen for tile below bottom sprite C0/5BAC: B9 6A 08 LDA $086A,Y ; x position C0/5BAF: 38 SEC C0/5BB0: E5 5C SBC $5C ; bg1 horizontal scroll position C0/5BB2: 18 CLC C0/5BB3: 69 08 00 ADC #$0008 ; add 8 C0/5BB6: 85 1E STA $1E ; +$1E = x position on screen C0/5BB8: 18 CLC C0/5BB9: 69 08 00 ADC #$0008 ; add 8 C0/5BBC: E2 20 SEP #$20 C0/5BBE: 80 2E BRA $5BEE ; object scrolls with bg2 C0/5BC0: C2 21 REP #$21 C0/5BC2: B9 6D 08 LDA $086D,Y C0/5BC5: E5 68 SBC $68 C0/5BC7: 38 SEC C0/5BC8: E5 7F SBC $7F C0/5BCA: 38 SEC C0/5BCB: F9 6F 08 SBC $086F,Y C0/5BCE: 85 24 STA $24 C0/5BD0: 38 SEC C0/5BD1: E9 10 00 SBC #$0010 C0/5BD4: 85 22 STA $22 C0/5BD6: 18 CLC C0/5BD7: 69 20 00 ADC #$0020 C0/5BDA: 85 26 STA $26 C0/5BDC: B9 6A 08 LDA $086A,Y C0/5BDF: 38 SEC C0/5BE0: E5 64 SBC $64 C0/5BE2: 18 CLC C0/5BE3: 69 08 00 ADC #$0008 C0/5BE6: 85 1E STA $1E C0/5BE8: 18 CLC C0/5BE9: 69 08 00 ADC #$0008 C0/5BEC: E2 20 SEP #$20 C0/5BEE: EB XBA ; return if sprite is off-screen to the right C0/5BEF: F0 03 BEQ $5BF4 C0/5BF1: 4C 34 5B JMP $5B34 C0/5BF4: A5 27 LDA $27 C0/5BF6: F0 03 BEQ $5BFB ; return if sprite is off-screen to the bottom C0/5BF8: 4C 34 5B JMP $5B34 C0/5BFB: 7B TDC C0/5BFC: B9 76 08 LDA $0876,Y ; graphics position C0/5BFF: AA TAX C0/5C00: BF 3A CD C0 LDA $C0CD3A,X ; horizontal flip flag (upper sprite) C0/5C04: 19 80 08 ORA $0880,Y C0/5C07: 85 1B STA $1B C0/5C09: BF BA CD C0 LDA $C0CDBA,X ; horizontal flip flag (lower sprite) C0/5C0D: 19 81 08 ORA $0881,Y C0/5C10: 85 1D STA $1D C0/5C12: B9 8F 08 LDA $088F,Y ; pointer to animation queue C0/5C15: AA TAX C0/5C16: BF 5B 5B C0 LDA $C05B5B,X ; object sprite graphics location in VRAM C0/5C1A: 85 1A STA $1A ; $1A = upper tile C0/5C1C: 1A INC C0/5C1D: 1A INC C0/5C1E: 85 1C STA $1C ; $1C = lower tile C0/5C20: B9 8C 08 LDA $088C,Y ; sprite order priority C0/5C23: 29 C0 AND #$C0 C0/5C25: F0 0A BEQ $5C31 ; branch if normal priority C0/5C27: C9 40 CMP #$40 C0/5C29: D0 03 BNE $5C2E C0/5C2B: 4C 93 5C JMP $5C93 ; jump if high priority C0/5C2E: 4C F5 5C JMP $5CF5 ; jump if low priority ; normal priority C0/5C31: C2 20 REP #$20 C0/5C33: A5 D4 LDA $D4 ; decrement normal priority sprite data pointer C0/5C35: 38 SEC C0/5C36: E9 04 00 SBC #$0004 C0/5C39: 85 D4 STA $D4 C0/5C3B: A8 TAY C0/5C3C: A5 1A LDA $1A C0/5C3E: 99 42 03 STA $0342,Y ; set sprite data C0/5C41: A5 1C LDA $1C C0/5C43: 99 02 04 STA $0402,Y C0/5C46: 7B TDC C0/5C47: E2 20 SEP #$20 C0/5C49: A5 1E LDA $1E C0/5C4B: 99 40 03 STA $0340,Y ; set x position C0/5C4E: 99 00 04 STA $0400,Y C0/5C51: A5 22 LDA $22 C0/5C53: 99 41 03 STA $0341,Y ; set y position C0/5C56: A5 24 LDA $24 C0/5C58: 99 01 04 STA $0401,Y C0/5C5B: B9 00 78 LDA $7800,Y ; get pointer to high sprite data C0/5C5E: AA TAX C0/5C5F: A5 1F LDA $1F ; branch if x position is > 255 C0/5C61: 4A LSR C0/5C62: B0 14 BCS $5C78 C0/5C64: BD 04 05 LDA $0504,X ; clear high bit of x position C0/5C67: 39 00 79 AND $7900,Y C0/5C6A: 9D 04 05 STA $0504,X C0/5C6D: BD 10 05 LDA $0510,X C0/5C70: 39 00 79 AND $7900,Y C0/5C73: 9D 10 05 STA $0510,X C0/5C76: 80 18 BRA $5C90 C0/5C78: BD 04 05 LDA $0504,X ; set high bit of x position C0/5C7B: 39 00 79 AND $7900,Y C0/5C7E: 19 00 7A ORA $7A00,Y C0/5C81: 9D 04 05 STA $0504,X C0/5C84: BD 10 05 LDA $0510,X C0/5C87: 39 00 79 AND $7900,Y C0/5C8A: 19 00 7A ORA $7A00,Y C0/5C8D: 9D 10 05 STA $0510,X C0/5C90: 4C 34 5B JMP $5B34 ; high priority C0/5C93: C2 20 REP #$20 C0/5C95: A5 D6 LDA $D6 C0/5C97: 38 SEC C0/5C98: E9 04 00 SBC #$0004 C0/5C9B: 85 D6 STA $D6 C0/5C9D: A8 TAY C0/5C9E: A5 1A LDA $1A C0/5CA0: 99 02 03 STA $0302,Y C0/5CA3: A5 1C LDA $1C C0/5CA5: 99 22 03 STA $0322,Y C0/5CA8: 7B TDC C0/5CA9: E2 20 SEP #$20 C0/5CAB: A5 1E LDA $1E C0/5CAD: 99 00 03 STA $0300,Y C0/5CB0: 99 20 03 STA $0320,Y C0/5CB3: A5 22 LDA $22 C0/5CB5: 99 01 03 STA $0301,Y C0/5CB8: A5 24 LDA $24 C0/5CBA: 99 21 03 STA $0321,Y C0/5CBD: B9 00 78 LDA $7800,Y C0/5CC0: AA TAX C0/5CC1: A5 1F LDA $1F C0/5CC3: 4A LSR C0/5CC4: B0 14 BCS $5CDA C0/5CC6: BD 00 05 LDA $0500,X C0/5CC9: 39 00 79 AND $7900,Y C0/5CCC: 9D 00 05 STA $0500,X C0/5CCF: BD 02 05 LDA $0502,X C0/5CD2: 39 00 79 AND $7900,Y C0/5CD5: 9D 02 05 STA $0502,X C0/5CD8: 80 18 BRA $5CF2 C0/5CDA: BD 00 05 LDA $0500,X C0/5CDD: 39 00 79 AND $7900,Y C0/5CE0: 19 00 7A ORA $7A00,Y C0/5CE3: 9D 00 05 STA $0500,X C0/5CE6: BD 02 05 LDA $0502,X C0/5CE9: 39 00 79 AND $7900,Y C0/5CEC: 19 00 7A ORA $7A00,Y C0/5CEF: 9D 02 05 STA $0502,X C0/5CF2: 4C 34 5B JMP $5B34 ; low priority C0/5CF5: C2 20 REP #$20 C0/5CF7: A5 D8 LDA $D8 C0/5CF9: 38 SEC C0/5CFA: E9 04 00 SBC #$0004 C0/5CFD: 85 D8 STA $D8 C0/5CFF: A8 TAY C0/5D00: A5 1A LDA $1A C0/5D02: 99 C2 04 STA $04C2,Y C0/5D05: A5 1C LDA $1C C0/5D07: 99 E2 04 STA $04E2,Y C0/5D0A: 7B TDC C0/5D0B: E2 20 SEP #$20 C0/5D0D: A5 1E LDA $1E C0/5D0F: 99 C0 04 STA $04C0,Y C0/5D12: 99 E0 04 STA $04E0,Y C0/5D15: A5 22 LDA $22 C0/5D17: 99 C1 04 STA $04C1,Y C0/5D1A: A5 24 LDA $24 C0/5D1C: 99 E1 04 STA $04E1,Y C0/5D1F: B9 00 78 LDA $7800,Y C0/5D22: AA TAX C0/5D23: A5 1F LDA $1F C0/5D25: 4A LSR C0/5D26: B0 14 BCS $5D3C C0/5D28: BD 1C 05 LDA $051C,X C0/5D2B: 39 00 79 AND $7900,Y C0/5D2E: 9D 1C 05 STA $051C,X C0/5D31: BD 1E 05 LDA $051E,X C0/5D34: 39 00 79 AND $7900,Y C0/5D37: 9D 1E 05 STA $051E,X C0/5D3A: 80 18 BRA $5D54 C0/5D3C: BD 1C 05 LDA $051C,X C0/5D3F: 39 00 79 AND $7900,Y C0/5D42: 19 00 7A ORA $7A00,Y C0/5D45: 9D 1C 05 STA $051C,X C0/5D48: BD 1E 05 LDA $051E,X C0/5D4B: 39 00 79 AND $7900,Y C0/5D4E: 19 00 7A ORA $7A00,Y C0/5D51: 9D 1E 05 STA $051E,X C0/5D54: 4C 34 5B JMP $5B34 ; [ Update Object Sprite Data (magitek) ] ; uses 3 top and 3 bottom sprites C0/5D57: B9 8F 08 LDA $088F,Y ; pointer to animation queue C0/5D5A: AA TAX C0/5D5B: BF 5B 5B C0 LDA $C05B5B,X ; sprite vram location (rider) C0/5D5F: 85 1A STA $1A C0/5D61: C2 20 REP #$20 C0/5D63: B9 6A 08 LDA $086A,Y ; x-position C0/5D66: 38 SEC C0/5D67: E5 5C SBC $5C ; bg1 h-scroll C0/5D69: 85 1E STA $1E ; $1E = left half x-position C0/5D6B: 18 CLC C0/5D6C: 69 10 00 ADC #$0010 C0/5D6F: 85 20 STA $20 ; $20 = right half x-position C0/5D71: B9 6D 08 LDA $086D,Y ; y-position C0/5D74: 18 CLC C0/5D75: E5 60 SBC $60 ; bg1 v-scroll C0/5D77: 38 SEC C0/5D78: E5 7F SBC $7F ; vertical offset for shake screen C0/5D7A: 38 SEC C0/5D7B: E9 08 00 SBC #$0008 C0/5D7E: 85 26 STA $26 C0/5D80: E9 10 00 SBC #$0010 C0/5D83: 85 24 STA $24 C0/5D85: E9 06 00 SBC #$0006 C0/5D88: 85 22 STA $22 C0/5D8A: 18 CLC C0/5D8B: 69 1E 00 ADC #$001E C0/5D8E: E2 20 SEP #$20 C0/5D90: EB XBA C0/5D91: F0 03 BEQ $5D96 ; branch if sprite is on screen C0/5D93: 4C 34 5B JMP $5B34 ; next object C0/5D96: 7B TDC C0/5D97: A4 1E LDY $1E C0/5D99: C0 20 01 CPY #$0120 C0/5D9C: 90 08 BCC $5DA6 C0/5D9E: C0 E0 FF CPY #$FFE0 C0/5DA1: B0 03 BCS $5DA6 C0/5DA3: 4C 34 5B JMP $5B34 ; next object C0/5DA6: C2 20 REP #$20 C0/5DA8: A5 D4 LDA $D4 ; pointer to normal priority sprite C0/5DAA: 38 SEC C0/5DAB: E9 0C 00 SBC #$000C ; use 3 sprites (3 top and 3 bottom) C0/5DAE: 85 D4 STA $D4 C0/5DB0: 7B TDC C0/5DB1: E2 20 SEP #$20 C0/5DB3: A4 D4 LDY $D4 C0/5DB5: C2 20 REP #$20 C0/5DB7: A5 1E LDA $1E ; left half + 8 to get rider x-position C0/5DB9: 18 CLC C0/5DBA: 69 08 00 ADC #$0008 C0/5DBD: 85 2A STA $2A C0/5DBF: 7B TDC C0/5DC0: E2 20 SEP #$20 C0/5DC2: A5 2A LDA $2A C0/5DC4: 99 40 03 STA $0340,Y ; x-position C0/5DC7: 20 21 67 JSR $6721 ; set/clear x-position MSB (top sprite) C0/5DCA: C8 INY C0/5DCB: C8 INY C0/5DCC: C8 INY C0/5DCD: C8 INY C0/5DCE: C2 20 REP #$20 C0/5DD0: A5 1E LDA $1E ; left half of vehicle (top) C0/5DD2: 85 2A STA $2A C0/5DD4: 7B TDC C0/5DD5: E2 20 SEP #$20 C0/5DD7: A5 2A LDA $2A C0/5DD9: 99 40 03 STA $0340,Y ; y-position C0/5DDC: 20 21 67 JSR $6721 ; set/clear x-position MSB (top sprite) C0/5DDF: C8 INY C0/5DE0: C8 INY C0/5DE1: C8 INY C0/5DE2: C8 INY C0/5DE3: C2 20 REP #$20 C0/5DE5: A5 20 LDA $20 ; right half of vehicle (top) C0/5DE7: 85 2A STA $2A C0/5DE9: 7B TDC C0/5DEA: E2 20 SEP #$20 C0/5DEC: A5 2A LDA $2A C0/5DEE: 99 40 03 STA $0340,Y C0/5DF1: 20 21 67 JSR $6721 ; set/clear x-position MSB (top sprite) C0/5DF4: A4 D4 LDY $D4 C0/5DF6: C2 20 REP #$20 C0/5DF8: A5 1E LDA $1E C0/5DFA: 85 2A STA $2A ; left half of vehicle (bottom) C0/5DFC: 7B TDC C0/5DFD: E2 20 SEP #$20 C0/5DFF: A5 2A LDA $2A C0/5E01: 99 00 04 STA $0400,Y C0/5E04: 20 4C 67 JSR $674C ; set/clear x-position MSB (bottom sprite) C0/5E07: C8 INY C0/5E08: C8 INY C0/5E09: C8 INY C0/5E0A: C8 INY C0/5E0B: C2 20 REP #$20 C0/5E0D: A5 20 LDA $20 C0/5E0F: 85 2A STA $2A ; right half of vehicle (bottom) C0/5E11: 7B TDC C0/5E12: E2 20 SEP #$20 C0/5E14: A5 2A LDA $2A C0/5E16: 99 00 04 STA $0400,Y C0/5E19: 20 4C 67 JSR $674C ; set/clear x-position MSB (bottom sprite) C0/5E1C: A4 D4 LDY $D4 C0/5E1E: A5 24 LDA $24 C0/5E20: 99 45 03 STA $0345,Y C0/5E23: 99 49 03 STA $0349,Y C0/5E26: A5 26 LDA $26 C0/5E28: 99 01 04 STA $0401,Y C0/5E2B: 99 05 04 STA $0405,Y C0/5E2E: A4 DA LDY $DA ; pointer to current object data C0/5E30: B9 7F 08 LDA $087F,Y ; facing direction C0/5E33: C9 01 CMP #$01 C0/5E35: F0 09 BEQ $5E40 ; branch if facing right C0/5E37: B9 81 08 LDA $0881,Y C0/5E3A: 29 0E AND #$0E C0/5E3C: 09 20 ORA #$20 C0/5E3E: 80 07 BRA $5E47 C0/5E40: B9 81 08 LDA $0881,Y C0/5E43: 29 0E AND #$0E C0/5E45: 09 60 ORA #$60 ; flip horizontally C0/5E47: A4 D4 LDY $D4 C0/5E49: 99 43 03 STA $0343,Y C0/5E4C: A5 1A LDA $1A C0/5E4E: 99 42 03 STA $0342,Y C0/5E51: A4 DA LDY $DA C0/5E53: B9 7F 08 LDA $087F,Y C0/5E56: 0A ASL C0/5E57: 0A ASL C0/5E58: 0A ASL C0/5E59: 85 1A STA $1A C0/5E5B: BE 71 08 LDX $0871,Y ; horizontal movement speed C0/5E5E: F0 05 BEQ $5E65 ; branch if not moving horizontally C0/5E60: B9 6A 08 LDA $086A,Y ; x-position C0/5E63: 80 03 BRA $5E68 C0/5E65: B9 6D 08 LDA $086D,Y ; y-position C0/5E68: 4A LSR C0/5E69: 4A LSR C0/5E6A: 85 1B STA $1B C0/5E6C: 29 06 AND #$06 C0/5E6E: 18 CLC C0/5E6F: 65 1A ADC $1A C0/5E71: AA TAX C0/5E72: A4 D4 LDY $D4 C0/5E74: A5 1B LDA $1B C0/5E76: 4A LSR C0/5E77: 29 01 AND #$01 C0/5E79: 18 CLC C0/5E7A: 65 22 ADC $22 C0/5E7C: 99 41 03 STA $0341,Y C0/5E7F: C2 20 REP #$20 C0/5E81: BF B6 5E C0 LDA $C05EB6,X C0/5E85: 99 46 03 STA $0346,Y C0/5E88: BF D6 5E C0 LDA $C05ED6,X C0/5E8C: 99 4A 03 STA $034A,Y C0/5E8F: BF F6 5E C0 LDA $C05EF6,X C0/5E93: 99 02 04 STA $0402,Y C0/5E96: BF 16 5F C0 LDA $C05F16,X C0/5E9A: 99 06 04 STA $0406,Y C0/5E9D: 7B TDC C0/5E9E: E2 20 SEP #$20 C0/5EA0: A9 EF LDA #$EF C0/5EA2: 99 09 04 STA $0409,Y C0/5EA5: A4 DA LDY $DA C0/5EA7: B9 68 08 LDA $0868,Y C0/5EAA: 30 07 BMI $5EB3 ; branch if rider is shown C0/5EAC: A4 D4 LDY $D4 C0/5EAE: A9 EF LDA #$EF C0/5EB0: 99 41 03 STA $0341,Y ; hide rider sprite C0/5EB3: 4C 34 5B JMP $5B34 ; magitek tile formation (top left) C0/5EB6: .DW $2FAC, $2FC0, $2FAC, $2FC4 C0/5EBE: .DW $6FCA, $6FE2, $6FCA, $6FEA C0/5EC6: .DW $2FA0, $2FA4, $2FA0, $2FA8 C0/5ECE: .DW $2FC8, $2FE0, $2FC8, $2FE8 ; magitek tile formation (top right) C0/5ED6: .DW $6FAC, $6FC4, $6FAC, $6FC0 C0/5EDE: .DW $6FC8, $6FE0, $6FC8, $6FE8 C0/5EE6: .DW $6FA0, $6FA8, $6FA0, $6FA4 C0/5EEE: .DW $2FCA, $2FE2, $2FCA, $2FEA ; magitek tile formation (bottom left) C0/5EF6: .DW $2FAE, $2FC2, $2FAE, $2FC6 C0/5EFE: .DW $6FCE, $6FE6, $6FCE, $6FEE C0/5F06: .DW $2FA2, $2FA6, $2FA2, $2FAA C0/5F0E: .DW $2FCC, $2FE4, $2FCC, $2FEC ; magitek tile formation (bottom right) C0/5F16: .DW $6FAE, $6FC6, $6FAE, $6FC2 C0/5F1E: .DW $6FCC, $6FE4, $6FCC, $6FEC C0/5F26: .DW $6FA2, $6FAA, $6FA2, $6FA6 C0/5F2E: .DW $2FCE, $2FE6, $2FCE, $2FEE ; [ Update Object Sprite Data (raft) ] ; uses 3 top and 3 bottom sprites C0/5F36: B9 8F 08 LDA $088F,Y C0/5F39: AA TAX C0/5F3A: BF 5B 5B C0 LDA $C05B5B,X C0/5F3E: 85 1A STA $1A C0/5F40: C2 20 REP #$20 C0/5F42: B9 6A 08 LDA $086A,Y C0/5F45: 38 SEC C0/5F46: E5 5C SBC $5C C0/5F48: 85 1E STA $1E C0/5F4A: 18 CLC C0/5F4B: 69 10 00 ADC #$0010 C0/5F4E: 85 20 STA $20 C0/5F50: B9 6D 08 LDA $086D,Y C0/5F53: 18 CLC C0/5F54: E5 60 SBC $60 C0/5F56: 38 SEC C0/5F57: E5 7F SBC $7F C0/5F59: 38 SEC C0/5F5A: E9 08 00 SBC #$0008 C0/5F5D: 85 26 STA $26 C0/5F5F: E9 10 00 SBC #$0010 C0/5F62: 85 24 STA $24 C0/5F64: E9 08 00 SBC #$0008 C0/5F67: 85 22 STA $22 C0/5F69: 18 CLC C0/5F6A: 69 1E 00 ADC #$001E C0/5F6D: E2 20 SEP #$20 C0/5F6F: EB XBA C0/5F70: F0 03 BEQ $5F75 C0/5F72: 4C 34 5B JMP $5B34 C0/5F75: 7B TDC C0/5F76: A4 1E LDY $1E C0/5F78: C0 20 01 CPY #$0120 C0/5F7B: 90 08 BCC $5F85 C0/5F7D: C0 E0 FF CPY #$FFE0 C0/5F80: B0 03 BCS $5F85 C0/5F82: 4C 34 5B JMP $5B34 C0/5F85: C2 20 REP #$20 C0/5F87: A5 D4 LDA $D4 C0/5F89: 38 SEC C0/5F8A: E9 0C 00 SBC #$000C C0/5F8D: 85 D4 STA $D4 C0/5F8F: 7B TDC C0/5F90: E2 20 SEP #$20 C0/5F92: A4 D4 LDY $D4 C0/5F94: C2 20 REP #$20 C0/5F96: A5 1E LDA $1E C0/5F98: 18 CLC C0/5F99: 69 08 00 ADC #$0008 C0/5F9C: 85 2A STA $2A C0/5F9E: 7B TDC C0/5F9F: E2 20 SEP #$20 C0/5FA1: A5 2A LDA $2A C0/5FA3: 99 40 03 STA $0340,Y C0/5FA6: 20 21 67 JSR $6721 C0/5FA9: C8 INY C0/5FAA: C8 INY C0/5FAB: C8 INY C0/5FAC: C8 INY C0/5FAD: C2 20 REP #$20 C0/5FAF: A5 1E LDA $1E C0/5FB1: 18 CLC C0/5FB2: 69 08 00 ADC #$0008 C0/5FB5: 85 2A STA $2A C0/5FB7: 7B TDC C0/5FB8: E2 20 SEP #$20 C0/5FBA: A5 2A LDA $2A C0/5FBC: 99 40 03 STA $0340,Y C0/5FBF: 20 21 67 JSR $6721 C0/5FC2: C8 INY C0/5FC3: C8 INY C0/5FC4: C8 INY C0/5FC5: C8 INY C0/5FC6: C2 20 REP #$20 C0/5FC8: A5 1E LDA $1E C0/5FCA: 85 2A STA $2A C0/5FCC: 7B TDC C0/5FCD: E2 20 SEP #$20 C0/5FCF: A5 2A LDA $2A C0/5FD1: 99 40 03 STA $0340,Y C0/5FD4: 20 21 67 JSR $6721 C0/5FD7: A4 D4 LDY $D4 C0/5FD9: C2 20 REP #$20 C0/5FDB: A5 20 LDA $20 C0/5FDD: 85 2A STA $2A C0/5FDF: 7B TDC C0/5FE0: E2 20 SEP #$20 C0/5FE2: A5 2A LDA $2A C0/5FE4: 99 00 04 STA $0400,Y C0/5FE7: 20 4C 67 JSR $674C C0/5FEA: C8 INY C0/5FEB: C8 INY C0/5FEC: C8 INY C0/5FED: C8 INY C0/5FEE: C2 20 REP #$20 C0/5FF0: A5 1E LDA $1E C0/5FF2: 85 2A STA $2A C0/5FF4: 7B TDC C0/5FF5: E2 20 SEP #$20 C0/5FF7: A5 2A LDA $2A C0/5FF9: 99 00 04 STA $0400,Y C0/5FFC: 20 4C 67 JSR $674C C0/5FFF: C8 INY C0/6000: C8 INY C0/6001: C8 INY C0/6002: C8 INY C0/6003: C2 20 REP #$20 C0/6005: A5 20 LDA $20 C0/6007: 85 2A STA $2A C0/6009: 7B TDC C0/600A: E2 20 SEP #$20 C0/600C: A5 2A LDA $2A C0/600E: 99 00 04 STA $0400,Y C0/6011: 20 4C 67 JSR $674C C0/6014: A4 D4 LDY $D4 C0/6016: A5 24 LDA $24 C0/6018: 99 49 03 STA $0349,Y C0/601B: 99 01 04 STA $0401,Y C0/601E: A5 26 LDA $26 C0/6020: 99 05 04 STA $0405,Y C0/6023: 99 09 04 STA $0409,Y C0/6026: A4 DA LDY $DA C0/6028: B9 7F 08 LDA $087F,Y C0/602B: C9 01 CMP #$01 C0/602D: F0 09 BEQ $6038 C0/602F: B9 81 08 LDA $0881,Y C0/6032: 29 0E AND #$0E C0/6034: 09 20 ORA #$20 C0/6036: 80 07 BRA $603F C0/6038: B9 81 08 LDA $0881,Y C0/603B: 29 0E AND #$0E C0/603D: 09 60 ORA #$60 C0/603F: A4 D4 LDY $D4 C0/6041: 99 43 03 STA $0343,Y C0/6044: 99 47 03 STA $0347,Y C0/6047: A5 1A LDA $1A C0/6049: 99 42 03 STA $0342,Y C0/604C: 1A INC C0/604D: 1A INC C0/604E: 99 46 03 STA $0346,Y C0/6051: A4 DA LDY $DA C0/6053: B9 7F 08 LDA $087F,Y C0/6056: 0A ASL C0/6057: AA TAX C0/6058: A4 D4 LDY $D4 C0/605A: A5 22 LDA $22 C0/605C: 99 41 03 STA $0341,Y C0/605F: 18 CLC C0/6060: 69 10 ADC #$10 C0/6062: 99 45 03 STA $0345,Y C0/6065: C2 20 REP #$20 C0/6067: BF 9A 60 C0 LDA $C0609A,X C0/606B: 99 4A 03 STA $034A,Y C0/606E: BF A2 60 C0 LDA $C060A2,X C0/6072: 99 02 04 STA $0402,Y C0/6075: BF AA 60 C0 LDA $C060AA,X C0/6079: 99 06 04 STA $0406,Y C0/607C: BF B2 60 C0 LDA $C060B2,X C0/6080: 99 0A 04 STA $040A,Y C0/6083: 7B TDC C0/6084: E2 20 SEP #$20 C0/6086: A4 DA LDY $DA C0/6088: B9 68 08 LDA $0868,Y C0/608B: 30 0A BMI $6097 C0/608D: A4 D4 LDY $D4 C0/608F: A9 EF LDA #$EF C0/6091: 99 41 03 STA $0341,Y C0/6094: 99 45 03 STA $0345,Y C0/6097: 4C 34 5B JMP $5B34 C0/609A: .DW $2F20, $2F28, $2F20, $2F28 C0/60A2: .DW $2F24, $2F2C, $2F24, $2F2C C0/60AA: .DW $2F22, $2F2A, $2F22, $2F2A C0/60B2: .DW $2F26, $2F2E, $2F26, $2F2E ; [ Update Object Sprite Data (chocobo) ] ; uses 3 top and 3 bottom sprites C0/60BA: B9 8F 08 LDA $088F,Y C0/60BD: AA TAX C0/60BE: BF 5B 5B C0 LDA $C05B5B,X C0/60C2: 85 1A STA $1A C0/60C4: 1A INC C0/60C5: 1A INC C0/60C6: 85 1C STA $1C C0/60C8: BE 71 08 LDX $0871,Y C0/60CB: F0 05 BEQ $60D2 C0/60CD: B9 6A 08 LDA $086A,Y C0/60D0: 80 03 BRA $60D5 C0/60D2: B9 6D 08 LDA $086D,Y C0/60D5: 4A LSR C0/60D6: 4A LSR C0/60D7: 29 06 AND #$06 C0/60D9: AA TAX C0/60DA: C2 20 REP #$20 C0/60DC: B9 6A 08 LDA $086A,Y C0/60DF: 38 SEC C0/60E0: E5 5C SBC $5C C0/60E2: 85 20 STA $20 C0/60E4: 18 CLC C0/60E5: 69 08 00 ADC #$0008 C0/60E8: 85 1E STA $1E C0/60EA: B9 6D 08 LDA $086D,Y C0/60ED: 18 CLC C0/60EE: E5 60 SBC $60 C0/60F0: 38 SEC C0/60F1: E5 7F SBC $7F C0/60F3: 38 SEC C0/60F4: E9 08 00 SBC #$0008 C0/60F7: 85 26 STA $26 C0/60F9: E9 10 00 SBC #$0010 C0/60FC: 85 24 STA $24 C0/60FE: E9 04 00 SBC #$0004 C0/6101: 85 22 STA $22 C0/6103: 18 CLC C0/6104: 69 1C 00 ADC #$001C C0/6107: E2 20 SEP #$20 C0/6109: EB XBA C0/610A: F0 03 BEQ $610F C0/610C: 4C 34 5B JMP $5B34 C0/610F: 7B TDC C0/6110: A4 1E LDY $1E C0/6112: C0 20 01 CPY #$0120 C0/6115: 90 08 BCC $611F C0/6117: C0 E0 FF CPY #$FFE0 C0/611A: B0 03 BCS $611F C0/611C: 4C 34 5B JMP $5B34 C0/611F: C2 20 REP #$20 C0/6121: A5 D4 LDA $D4 C0/6123: 38 SEC C0/6124: E9 0C 00 SBC #$000C C0/6127: 85 D4 STA $D4 C0/6129: 7B TDC C0/612A: E2 20 SEP #$20 C0/612C: A4 DA LDY $DA C0/612E: B9 7F 08 LDA $087F,Y ; facing direction C0/6131: F0 0F BEQ $6142 C0/6133: 3A DEC C0/6134: D0 03 BNE $6139 C0/6136: 4C F1 62 JMP $62F1 C0/6139: 3A DEC C0/613A: D0 03 BNE $613F C0/613C: 4C 18 62 JMP $6218 C0/613F: 4C ED 63 JMP $63ED ; chocobo facing up C0/6142: A4 1E LDY $1E C0/6144: 84 2A STY $2A C0/6146: A4 D4 LDY $D4 C0/6148: 20 4C 67 JSR $674C C0/614B: C8 INY C0/614C: C8 INY C0/614D: C8 INY C0/614E: C8 INY C0/614F: 20 21 67 JSR $6721 C0/6152: C8 INY C0/6153: C8 INY C0/6154: C8 INY C0/6155: C8 INY C0/6156: 20 21 67 JSR $6721 C0/6159: A4 D4 LDY $D4 C0/615B: C2 20 REP #$20 C0/615D: A5 1E LDA $1E C0/615F: 18 CLC C0/6160: 7F E0 61 C0 ADC $C061E0,X C0/6164: 85 2A STA $2A C0/6166: E2 20 SEP #$20 C0/6168: 99 40 03 STA $0340,Y C0/616B: 7B TDC C0/616C: 20 21 67 JSR $6721 C0/616F: A5 24 LDA $24 C0/6171: 18 CLC C0/6172: 7F E8 61 C0 ADC $C061E8,X C0/6176: 99 41 03 STA $0341,Y C0/6179: C2 20 REP #$20 C0/617B: BF F8 61 C0 LDA $C061F8,X C0/617F: 99 42 03 STA $0342,Y C0/6182: BF 08 62 C0 LDA $C06208,X C0/6186: 99 4A 03 STA $034A,Y C0/6189: BF 10 62 C0 LDA $C06210,X C0/618D: 99 02 04 STA $0402,Y C0/6190: 7B TDC C0/6191: E2 20 SEP #$20 C0/6193: A4 DA LDY $DA C0/6195: B9 81 08 LDA $0881,Y C0/6198: 29 0E AND #$0E C0/619A: 1F 01 62 C0 ORA $C06201,X C0/619E: A4 D4 LDY $D4 C0/61A0: 99 47 03 STA $0347,Y C0/61A3: A5 1A LDA $1A C0/61A5: 99 46 03 STA $0346,Y C0/61A8: A5 1E LDA $1E C0/61AA: 99 44 03 STA $0344,Y C0/61AD: 99 48 03 STA $0348,Y C0/61B0: 99 00 04 STA $0400,Y C0/61B3: A5 22 LDA $22 C0/61B5: 18 CLC C0/61B6: 7F F0 61 C0 ADC $C061F0,X C0/61BA: 99 45 03 STA $0345,Y C0/61BD: A5 24 LDA $24 C0/61BF: 99 49 03 STA $0349,Y C0/61C2: A5 26 LDA $26 C0/61C4: 99 01 04 STA $0401,Y C0/61C7: A9 EF LDA #$EF C0/61C9: 99 05 04 STA $0405,Y C0/61CC: 99 09 04 STA $0409,Y C0/61CF: A4 DA LDY $DA C0/61D1: B9 68 08 LDA $0868,Y C0/61D4: 30 07 BMI $61DD C0/61D6: A4 D4 LDY $D4 C0/61D8: A9 EF LDA #$EF C0/61DA: 99 45 03 STA $0345,Y C0/61DD: 4C CA 64 JMP $64CA C0/61E0: .DW $0000, $0001, $0000, $FFFF ; tail x-offset C0/61E8: .DW $0009, $000A, $0009, $000A ; tail y-offset C0/61F0: .DW $0000, $0001, $0000, $0001 ; body y-offset C0/61F8: .DW $2F4A, $6F4A, $2F4A, $6F4A ; tail tile C0/6200: .DW $2000, $2000, $2000, $2000 ; unused C0/6208: .DW $2F4C, $2F60, $2F4C, $6F60 ; body tile (top) C0/6210: .DW $2F4E, $2F62, $2F4E, $6F62 ; body tile (bottom) ; chocobo facing down C0/6218: A4 1E LDY $1E C0/621A: 84 2A STY $2A C0/621C: A4 D4 LDY $D4 C0/621E: 20 21 67 JSR $6721 C0/6221: 20 4C 67 JSR $674C C0/6224: C8 INY C0/6225: C8 INY C0/6226: C8 INY C0/6227: C8 INY C0/6228: 20 21 67 JSR $6721 C0/622B: C8 INY C0/622C: C8 INY C0/622D: C8 INY C0/622E: C8 INY C0/622F: 20 21 67 JSR $6721 C0/6232: A4 D4 LDY $D4 C0/6234: C2 20 REP #$20 C0/6236: A5 1E LDA $1E C0/6238: 18 CLC C0/6239: 7F B9 62 C0 ADC $C062B9,X C0/623D: 85 2A STA $2A C0/623F: E2 20 SEP #$20 C0/6241: 99 40 03 STA $0340,Y C0/6244: 7B TDC C0/6245: 20 21 67 JSR $6721 C0/6248: A5 24 LDA $24 C0/624A: 18 CLC C0/624B: 7F C1 62 C0 ADC $C062C1,X C0/624F: 99 41 03 STA $0341,Y C0/6252: C2 20 REP #$20 C0/6254: BF D1 62 C0 LDA $C062D1,X C0/6258: 99 42 03 STA $0342,Y C0/625B: BF E1 62 C0 LDA $C062E1,X C0/625F: 99 4A 03 STA $034A,Y C0/6262: BF E9 62 C0 LDA $C062E9,X C0/6266: 99 02 04 STA $0402,Y C0/6269: 7B TDC C0/626A: E2 20 SEP #$20 C0/626C: A4 DA LDY $DA C0/626E: B9 81 08 LDA $0881,Y C0/6271: 29 0E AND #$0E C0/6273: 1F DA 62 C0 ORA $C062DA,X C0/6277: A4 D4 LDY $D4 C0/6279: 99 47 03 STA $0347,Y C0/627C: A5 1A LDA $1A C0/627E: 99 46 03 STA $0346,Y C0/6281: A5 1E LDA $1E C0/6283: 99 44 03 STA $0344,Y C0/6286: 99 48 03 STA $0348,Y C0/6289: 99 00 04 STA $0400,Y C0/628C: A5 22 LDA $22 C0/628E: 18 CLC C0/628F: 7F C9 62 C0 ADC $C062C9,X C0/6293: 99 45 03 STA $0345,Y C0/6296: A5 24 LDA $24 C0/6298: 99 49 03 STA $0349,Y C0/629B: A5 26 LDA $26 C0/629D: 99 01 04 STA $0401,Y C0/62A0: A9 EF LDA #$EF C0/62A2: 99 05 04 STA $0405,Y C0/62A5: 99 09 04 STA $0409,Y C0/62A8: A4 DA LDY $DA C0/62AA: B9 68 08 LDA $0868,Y C0/62AD: 30 07 BMI $62B6 C0/62AF: A4 D4 LDY $D4 C0/62B1: A9 EF LDA #$EF C0/62B3: 99 45 03 STA $0345,Y C0/62B6: 4C CA 64 JMP $64CA C0/62B9: .DW $0000, $0001, $0000, $FFFF ; head x-offset C0/62C1: .DW $0007, $0008, $0007, $0008 ; head y-offset C0/62C9: .DW $FFFF, $0001, $FFFF, $0001 ; body y-offset C0/62D1: .DW $2F40, $2F40, $2F40, $2F40 ; head tile C0/62D9: .DW $2000, $2000, $2000, $2000 ; unused C0/62E1: .DW $2F42, $2F46, $2F42, $6F46 ; body tile (top) C0/62E9: .DW $2F44, $2F48, $2F44, $6F48 ; body tile (bottom) ; chocobo facing right C0/62F1: A4 D4 LDY $D4 C0/62F3: C2 20 REP #$20 C0/62F5: A5 1E LDA $1E C0/62F7: 38 SEC C0/62F8: E9 03 00 SBC #$0003 C0/62FB: 85 2A STA $2A C0/62FD: 7B TDC C0/62FE: E2 20 SEP #$20 C0/6300: A5 2A LDA $2A C0/6302: 99 40 03 STA $0340,Y C0/6305: 20 21 67 JSR $6721 C0/6308: C8 INY C0/6309: C8 INY C0/630A: C8 INY C0/630B: C8 INY C0/630C: 99 40 03 STA $0340,Y C0/630F: 20 21 67 JSR $6721 C0/6312: C8 INY C0/6313: C8 INY C0/6314: C8 INY C0/6315: C8 INY C0/6316: C2 20 REP #$20 C0/6318: A5 20 LDA $20 C0/631A: 18 CLC C0/631B: 69 10 00 ADC #$0010 C0/631E: 85 2A STA $2A C0/6320: 7B TDC C0/6321: E2 20 SEP #$20 C0/6323: A5 2A LDA $2A C0/6325: 99 40 03 STA $0340,Y C0/6328: 20 21 67 JSR $6721 C0/632B: A4 D4 LDY $D4 C0/632D: 99 00 04 STA $0400,Y C0/6330: 20 4C 67 JSR $674C C0/6333: C8 INY C0/6334: C8 INY C0/6335: C8 INY C0/6336: C8 INY C0/6337: C2 20 REP #$20 C0/6339: A5 20 LDA $20 C0/633B: 85 2A STA $2A C0/633D: 7B TDC C0/633E: E2 20 SEP #$20 C0/6340: A5 2A LDA $2A C0/6342: 99 00 04 STA $0400,Y C0/6345: 20 4C 67 JSR $674C C0/6348: C8 INY C0/6349: C8 INY C0/634A: C8 INY C0/634B: C8 INY C0/634C: 99 00 04 STA $0400,Y C0/634F: 20 4C 67 JSR $674C C0/6352: A4 D4 LDY $D4 C0/6354: A5 22 LDA $22 C0/6356: 18 CLC C0/6357: 7F C5 63 C0 ADC $C063C5,X C0/635B: 99 41 03 STA $0341,Y C0/635E: 18 CLC C0/635F: 69 10 ADC #$10 C0/6361: 99 45 03 STA $0345,Y C0/6364: A4 DA LDY $DA C0/6366: B9 81 08 LDA $0881,Y C0/6369: 29 0E AND #$0E C0/636B: 09 60 ORA #$60 C0/636D: A4 D4 LDY $D4 C0/636F: 99 43 03 STA $0343,Y C0/6372: 99 47 03 STA $0347,Y C0/6375: A5 1A LDA $1A C0/6377: 99 42 03 STA $0342,Y C0/637A: A5 1C LDA $1C C0/637C: 99 46 03 STA $0346,Y C0/637F: A5 24 LDA $24 C0/6381: 99 49 03 STA $0349,Y C0/6384: 99 09 04 STA $0409,Y C0/6387: 18 CLC C0/6388: 69 10 ADC #$10 C0/638A: 99 01 04 STA $0401,Y C0/638D: 99 05 04 STA $0405,Y C0/6390: C2 20 REP #$20 C0/6392: BF CD 63 C0 LDA $C063CD,X C0/6396: 99 4A 03 STA $034A,Y C0/6399: BF D5 63 C0 LDA $C063D5,X C0/639D: 99 0A 04 STA $040A,Y C0/63A0: BF DD 63 C0 LDA $C063DD,X C0/63A4: 99 02 04 STA $0402,Y C0/63A7: BF E5 63 C0 LDA $C063E5,X C0/63AB: 99 06 04 STA $0406,Y C0/63AE: 7B TDC C0/63AF: E2 20 SEP #$20 C0/63B1: A4 DA LDY $DA C0/63B3: B9 68 08 LDA $0868,Y C0/63B6: 30 0A BMI $63C2 C0/63B8: A4 D4 LDY $D4 C0/63BA: A9 EF LDA #$EF C0/63BC: 99 41 03 STA $0341,Y C0/63BF: 99 45 03 STA $0345,Y C0/63C2: 4C CA 64 JMP $64CA C0/63C5: .DW $0000, $FFFF, $0000, $FFFF ; y-offset C0/63CD: .DW $6F64, $6F6C, $6F64, $6F84 C0/63D5: .DW $6F68, $6F80, $6F68, $6F88 C0/63DD: .DW $6F66, $6F6E, $6F66, $6F86 C0/63E5: .DW $6F6A, $6F82, $6F6A, $6F8A ; chocobo facing left C0/63ED: A4 D4 LDY $D4 C0/63EF: C2 20 REP #$20 C0/63F1: A5 1E LDA $1E C0/63F3: 18 CLC C0/63F4: 69 03 00 ADC #$0003 C0/63F7: 85 2A STA $2A C0/63F9: 18 CLC C0/63FA: 69 08 00 ADC #$0008 C0/63FD: 7B TDC C0/63FE: E2 20 SEP #$20 C0/6400: A5 2A LDA $2A C0/6402: 99 40 03 STA $0340,Y C0/6405: 20 21 67 JSR $6721 C0/6408: C8 INY C0/6409: C8 INY C0/640A: C8 INY C0/640B: C8 INY C0/640C: 99 40 03 STA $0340,Y C0/640F: 20 21 67 JSR $6721 C0/6412: C8 INY C0/6413: C8 INY C0/6414: C8 INY C0/6415: C8 INY C0/6416: C2 20 REP #$20 C0/6418: A5 20 LDA $20 C0/641A: 18 CLC C0/641B: 69 10 00 ADC #$0010 C0/641E: 85 2A STA $2A C0/6420: 18 CLC C0/6421: 69 08 00 ADC #$0008 C0/6424: 7B TDC C0/6425: E2 20 SEP #$20 C0/6427: A5 2A LDA $2A C0/6429: 99 40 03 STA $0340,Y C0/642C: 20 21 67 JSR $6721 C0/642F: A4 D4 LDY $D4 C0/6431: 99 00 04 STA $0400,Y C0/6434: 20 4C 67 JSR $674C C0/6437: C8 INY C0/6438: C8 INY C0/6439: C8 INY C0/643A: C8 INY C0/643B: C2 20 REP #$20 C0/643D: A5 20 LDA $20 C0/643F: 85 2A STA $2A C0/6441: 18 CLC C0/6442: 69 08 00 ADC #$0008 C0/6445: 7B TDC C0/6446: E2 20 SEP #$20 C0/6448: A5 2A LDA $2A C0/644A: 99 00 04 STA $0400,Y C0/644D: 20 4C 67 JSR $674C C0/6450: C8 INY C0/6451: C8 INY C0/6452: C8 INY C0/6453: C8 INY C0/6454: 99 00 04 STA $0400,Y C0/6457: 20 4C 67 JSR $674C C0/645A: A4 D4 LDY $D4 C0/645C: A5 22 LDA $22 C0/645E: 18 CLC C0/645F: 7F C5 63 C0 ADC $C063C5,X C0/6463: 99 41 03 STA $0341,Y C0/6466: 18 CLC C0/6467: 69 10 ADC #$10 C0/6469: 99 45 03 STA $0345,Y C0/646C: A4 DA LDY $DA C0/646E: B9 81 08 LDA $0881,Y C0/6471: 29 0E AND #$0E C0/6473: 09 20 ORA #$20 C0/6475: A4 D4 LDY $D4 C0/6477: 99 43 03 STA $0343,Y C0/647A: 99 47 03 STA $0347,Y C0/647D: A5 1A LDA $1A C0/647F: 99 42 03 STA $0342,Y C0/6482: A5 1C LDA $1C C0/6484: 99 46 03 STA $0346,Y C0/6487: A5 24 LDA $24 C0/6489: 99 49 03 STA $0349,Y C0/648C: 99 09 04 STA $0409,Y C0/648F: 18 CLC C0/6490: 69 10 ADC #$10 C0/6492: 99 01 04 STA $0401,Y C0/6495: 99 05 04 STA $0405,Y C0/6498: C2 20 REP #$20 C0/649A: BF D5 64 C0 LDA $C064D5,X C0/649E: 99 4A 03 STA $034A,Y C0/64A1: BF CD 64 C0 LDA $C064CD,X C0/64A5: 99 0A 04 STA $040A,Y C0/64A8: BF E5 64 C0 LDA $C064E5,X C0/64AC: 99 02 04 STA $0402,Y C0/64AF: BF DD 64 C0 LDA $C064DD,X C0/64B3: 99 06 04 STA $0406,Y C0/64B6: 7B TDC C0/64B7: E2 20 SEP #$20 C0/64B9: A4 DA LDY $DA C0/64BB: B9 68 08 LDA $0868,Y C0/64BE: 30 0A BMI $64CA C0/64C0: A4 D4 LDY $D4 C0/64C2: A9 EF LDA #$EF C0/64C4: 99 41 03 STA $0341,Y C0/64C7: 99 45 03 STA $0345,Y C0/64CA: 4C 34 5B JMP $5B34 C0/64CD: .DW $2F64, $2F6C, $2F64, $2F84 C0/64D5: .DW $2F68, $2F80, $2F68, $2F88 C0/64DD: .DW $2F66, $2F6E, $2F66, $2F86 C0/64E5: .DW $2F6A, $2F82, $2F6A, $2F8A ; unused ??? C0/64ED: .DW $0000, $0010, $0020, $0030 ; [ Update Object Sprite Data (special graphics) ] C0/64F5: A6 00 LDX $00 C0/64F7: 86 24 STX $24 C0/64F9: 86 20 STX $20 C0/64FB: B9 7C 08 LDA $087C,Y ; check if object scrolls with bg2 C0/64FE: 85 1A STA $1A C0/6500: 5A PHY ; push object pointer so we can temporarily use a master object C0/6501: B9 8B 08 LDA $088B,Y ; branch if a master object is used C0/6504: 29 02 AND #$02 C0/6506: F0 28 BEQ $6530 ; w/ master object - shift sprite right (tiles) C0/6508: B9 8B 08 LDA $088B,Y C0/650B: 29 01 AND #$01 C0/650D: D0 0A BNE $6519 C0/650F: B9 8A 08 LDA $088A,Y C0/6512: 29 E0 AND #$E0 C0/6514: 4A LSR C0/6515: 85 20 STA $20 C0/6517: 80 08 BRA $6521 ; w/ master object - shift sprite down (tiles) C0/6519: B9 8A 08 LDA $088A,Y C0/651C: 29 E0 AND #$E0 C0/651E: 4A LSR C0/651F: 85 24 STA $24 C0/6521: B9 8A 08 LDA $088A,Y ; master object number C0/6524: 29 1F AND #$1F C0/6526: 18 CLC C0/6527: 69 10 ADC #$10 ; add $10 to get NPC number C0/6529: 0A ASL C0/652A: AA TAX C0/652B: BC 99 07 LDY $0799,X ; get pointer to master object data C0/652E: 80 1F BRA $654F ; shift sprite right (pixels * 2) C0/6530: B9 8B 08 LDA $088B,Y C0/6533: 29 01 AND #$01 C0/6535: D0 0D BNE $6544 C0/6537: B9 8A 08 LDA $088A,Y C0/653A: 29 E0 AND #$E0 C0/653C: 4A LSR C0/653D: 4A LSR C0/653E: 4A LSR C0/653F: 4A LSR C0/6540: 85 20 STA $20 C0/6542: 80 0B BRA $654F ; shift sprite down (pixels * 2) C0/6544: B9 8A 08 LDA $088A,Y C0/6547: 29 E0 AND #$E0 C0/6549: 4A LSR C0/654A: 4A LSR C0/654B: 4A LSR C0/654C: 4A LSR C0/654D: 85 24 STA $24 C0/654F: A5 1A LDA $1A C0/6551: 30 31 BMI $6584 ; branch if object scrolls with bg2 ; object scrolls with bg1 C0/6553: C2 21 REP #$21 C0/6555: B9 6D 08 LDA $086D,Y ; y position C0/6558: 65 24 ADC $24 ; add add y offset C0/655A: 18 CLC C0/655B: E5 60 SBC $60 ; subtract vertical scroll position C0/655D: 38 SEC C0/655E: E5 7F SBC $7F ; subtract shake screen offset C0/6560: 38 SEC C0/6561: F9 6F 08 SBC $086F,Y ; subtract jump offset C0/6564: 38 SEC C0/6565: E9 08 00 SBC #$0008 ; subtract 8 C0/6568: 85 22 STA $22 ; +$22 = top sprite y offset C0/656A: 18 CLC C0/656B: 69 20 00 ADC #$0020 C0/656E: 85 26 STA $26 ; +$26 = bottom sprite y offset C0/6570: B9 6A 08 LDA $086A,Y ; x position C0/6573: 38 SEC C0/6574: E5 5C SBC $5C ; subtract horizontal scroll position C0/6576: 18 CLC C0/6577: 65 20 ADC $20 ; add x offset C0/6579: 18 CLC C0/657A: 69 08 00 ADC #$0008 ; add 8 C0/657D: 85 1E STA $1E ; +$1E = sprite x position C0/657F: 7B TDC C0/6580: E2 20 SEP #$20 C0/6582: 80 2F BRA $65B3 ; object scrolls with bg2 C0/6584: C2 21 REP #$21 C0/6586: B9 6D 08 LDA $086D,Y C0/6589: 65 24 ADC $24 C0/658B: 18 CLC C0/658C: E5 68 SBC $68 C0/658E: 38 SEC C0/658F: E5 7F SBC $7F C0/6591: 38 SEC C0/6592: F9 6F 08 SBC $086F,Y C0/6595: 38 SEC C0/6596: E9 08 00 SBC #$0008 C0/6599: 85 22 STA $22 C0/659B: 18 CLC C0/659C: 69 20 00 ADC #$0020 C0/659F: 85 26 STA $26 C0/65A1: B9 6A 08 LDA $086A,Y C0/65A4: 38 SEC C0/65A5: E5 64 SBC $64 C0/65A7: 18 CLC C0/65A8: 65 20 ADC $20 C0/65AA: 18 CLC C0/65AB: 69 08 00 ADC #$0008 C0/65AE: 85 1E STA $1E C0/65B0: 7B TDC C0/65B1: E2 20 SEP #$20 C0/65B3: 7A PLY ; no longer using master object C0/65B4: A6 1E LDX $1E C0/65B6: E0 E0 FF CPX #$FFE0 ; return if sprite is off-screen C0/65B9: B0 08 BCS $65C3 C0/65BB: E0 00 01 CPX #$0100 C0/65BE: 90 03 BCC $65C3 C0/65C0: 4C 34 5B JMP $5B34 C0/65C3: A5 27 LDA $27 C0/65C5: F0 03 BEQ $65CA C0/65C7: 4C 34 5B JMP $5B34 C0/65CA: 7B TDC C0/65CB: B9 68 08 LDA $0868,Y ; continuous animation flag -> horizontal flip ??? C0/65CE: 29 01 AND #$01 C0/65D0: 4A LSR C0/65D1: 6A ROR C0/65D2: 6A ROR C0/65D3: 09 01 ORA #$01 C0/65D5: 19 80 08 ORA $0880,Y C0/65D8: 85 1B STA $1B C0/65DA: B9 68 08 LDA $0868,Y ; animation speed (this will always be 0) C0/65DD: 29 60 AND #$60 C0/65DF: 4A LSR C0/65E0: 4A LSR C0/65E1: 4A LSR C0/65E2: 4A LSR C0/65E3: 4A LSR C0/65E4: AA TAX C0/65E5: A5 45 LDA $45 ; frame counter / 4 C0/65E7: 4A LSR C0/65E8: 4A LSR C0/65E9: E0 00 00 CPX #$0000 ; divide by 2 (slower animation) for higher speed values C0/65EC: F0 04 BEQ $65F2 C0/65EE: 4A LSR C0/65EF: CA DEX C0/65F0: 80 F7 BRA $65E9 C0/65F2: 85 1A STA $1A ; $1A = frame counter >> (2 + speed) C0/65F4: B9 8C 08 LDA $088C,Y ; C0/65F7: 29 18 AND #$18 C0/65F9: 4A LSR C0/65FA: 4A LSR C0/65FB: 4A LSR C0/65FC: AA TAX C0/65FD: A5 1A LDA $1A C0/65FF: 3F 1D 67 C0 AND $C0671D,X ; number of frames mask C0/6603: 0A ASL C0/6604: 85 1A STA $1A ; $1A = frames mask * 2 C0/6606: B9 7C 08 LDA $087C,Y ; 32x32 sprite C0/6609: 29 20 AND #$20 C0/660B: F0 02 BEQ $660F C0/660D: 06 1A ASL $1A C0/660F: B9 89 08 LDA $0889,Y ; VRAM address C0/6612: 0A ASL C0/6613: 18 CLC C0/6614: 65 1A ADC $1A C0/6616: 85 1A STA $1A C0/6618: BB TYX C0/6619: B9 8C 08 LDA $088C,Y ; sprite order C0/661C: 29 C0 AND #$C0 C0/661E: F0 0A BEQ $662A ; branch if normal C0/6620: C9 40 CMP #$40 C0/6622: D0 03 BNE $6627 C0/6624: 4C 7B 66 JMP $667B ; jump if high C0/6627: 4C CC 66 JMP $66CC ; jump if low ; normal sprite priority C0/662A: C2 20 REP #$20 C0/662C: A5 D4 LDA $D4 ; use one sprite C0/662E: 38 SEC C0/662F: E9 04 00 SBC #$0004 C0/6632: 85 D4 STA $D4 C0/6634: A8 TAY C0/6635: A5 1A LDA $1A C0/6637: 99 42 03 STA $0342,Y C0/663A: 7B TDC C0/663B: E2 20 SEP #$20 C0/663D: BD 7C 08 LDA $087C,X ; branch if not a 32x32 sprite C0/6640: 29 20 AND #$20 C0/6642: F0 04 BEQ $6648 C0/6644: B9 00 7A LDA $7A00,Y ; sprite high data bit mask C0/6647: 0A ASL ; << 1 to get the large sprite flag C0/6648: 85 1C STA $1C C0/664A: A5 1E LDA $1E C0/664C: 99 40 03 STA $0340,Y ; set x position C0/664F: A5 22 LDA $22 C0/6651: 99 41 03 STA $0341,Y ; set y position C0/6654: B9 00 78 LDA $7800,Y ; pointer to high sprite data C0/6657: AA TAX C0/6658: A5 1F LDA $1F C0/665A: 4A LSR C0/665B: B0 0D BCS $666A ; branch if x > 255 C0/665D: BD 04 05 LDA $0504,X C0/6660: 39 00 79 AND $7900,Y ; clear high x position MSB C0/6663: 05 1C ORA $1C ; 32x32 flag C0/6665: 9D 04 05 STA $0504,X C0/6668: 80 0E BRA $6678 C0/666A: BD 04 05 LDA $0504,X C0/666D: 39 00 79 AND $7900,Y C0/6670: 19 00 7A ORA $7A00,Y ; set high x position MSB C0/6673: 05 1C ORA $1C ; 32x32 flag C0/6675: 9D 04 05 STA $0504,X C0/6678: 4C 34 5B JMP $5B34 ; high sprite priority C0/667B: C2 20 REP #$20 C0/667D: A5 D6 LDA $D6 ; use one sprite C0/667F: 38 SEC C0/6680: E9 04 00 SBC #$0004 C0/6683: 85 D6 STA $D6 C0/6685: A8 TAY C0/6686: A5 1A LDA $1A C0/6688: 99 02 03 STA $0302,Y C0/668B: 7B TDC C0/668C: E2 20 SEP #$20 C0/668E: BD 7C 08 LDA $087C,X C0/6691: 29 20 AND #$20 C0/6693: F0 04 BEQ $6699 C0/6695: B9 00 7A LDA $7A00,Y C0/6698: 0A ASL C0/6699: 85 1C STA $1C C0/669B: A5 1E LDA $1E C0/669D: 99 00 03 STA $0300,Y C0/66A0: A5 22 LDA $22 C0/66A2: 99 01 03 STA $0301,Y C0/66A5: B9 00 78 LDA $7800,Y C0/66A8: AA TAX C0/66A9: A5 1F LDA $1F C0/66AB: 4A LSR C0/66AC: B0 0D BCS $66BB C0/66AE: BD 00 05 LDA $0500,X C0/66B1: 39 00 79 AND $7900,Y C0/66B4: 05 1C ORA $1C C0/66B6: 9D 00 05 STA $0500,X C0/66B9: 80 0E BRA $66C9 C0/66BB: BD 00 05 LDA $0500,X C0/66BE: 39 00 79 AND $7900,Y C0/66C1: 19 00 7A ORA $7A00,Y C0/66C4: 05 1C ORA $1C C0/66C6: 9D 00 05 STA $0500,X C0/66C9: 4C 34 5B JMP $5B34 ; low sprite priority C0/66CC: C2 20 REP #$20 C0/66CE: A5 D8 LDA $D8 ; use one sprite C0/66D0: 38 SEC C0/66D1: E9 04 00 SBC #$0004 C0/66D4: 85 D8 STA $D8 C0/66D6: A8 TAY C0/66D7: A5 1A LDA $1A C0/66D9: 99 C2 04 STA $04C2,Y C0/66DC: 7B TDC C0/66DD: E2 20 SEP #$20 C0/66DF: BD 7C 08 LDA $087C,X C0/66E2: 29 20 AND #$20 C0/66E4: F0 04 BEQ $66EA C0/66E6: B9 00 7A LDA $7A00,Y C0/66E9: 0A ASL C0/66EA: 85 1C STA $1C C0/66EC: A5 1E LDA $1E C0/66EE: 99 C0 04 STA $04C0,Y C0/66F1: A5 22 LDA $22 C0/66F3: 99 C1 04 STA $04C1,Y C0/66F6: B9 00 78 LDA $7800,Y C0/66F9: AA TAX C0/66FA: A5 1F LDA $1F C0/66FC: 4A LSR C0/66FD: B0 0D BCS $670C C0/66FF: BD 1C 05 LDA $051C,X C0/6702: 39 00 79 AND $7900,Y C0/6705: 05 1C ORA $1C C0/6707: 9D 1C 05 STA $051C,X C0/670A: 80 0E BRA $671A C0/670C: BD 1C 05 LDA $051C,X C0/670F: 39 00 79 AND $7900,Y C0/6712: 19 00 7A ORA $7A00,Y C0/6715: 05 1C ORA $1C C0/6717: 9D 1C 05 STA $051C,X C0/671A: 4C 34 5B JMP $5B34 ; bit masks for number of animation frames (animated frame type) C0/671D: .DB $00, $00, $01, $03 ; [ Set/Clear Sprite X Position MSB (top sprite) ] ; $2B = 0 (clear) or 1 (set) C0/6721: 48 PHA C0/6722: DA PHX C0/6723: 5A PHY C0/6724: A5 2B LDA $2B C0/6726: 4A LSR C0/6727: B0 0F BCS $6738 C0/6729: B9 00 78 LDA $7800,Y C0/672C: AA TAX C0/672D: BD 04 05 LDA $0504,X C0/6730: 39 00 79 AND $7900,Y C0/6733: 9D 04 05 STA $0504,X C0/6736: 80 10 BRA $6748 C0/6738: B9 00 78 LDA $7800,Y C0/673B: AA TAX C0/673C: BD 04 05 LDA $0504,X C0/673F: 39 00 79 AND $7900,Y C0/6742: 19 00 7A ORA $7A00,Y C0/6745: 9D 04 05 STA $0504,X C0/6748: 7A PLY C0/6749: FA PLX C0/674A: 68 PLA C0/674B: 60 RTS ; [ Set/Clear Sprite X Position MSB (bottom sprite) ] ; $2B = 0 (clear) or 1 (set) C0/674C: 48 PHA C0/674D: DA PHX C0/674E: 5A PHY C0/674F: A5 2B LDA $2B C0/6751: 4A LSR C0/6752: B0 0F BCS $6763 C0/6754: B9 00 78 LDA $7800,Y C0/6757: AA TAX C0/6758: BD 10 05 LDA $0510,X C0/675B: 39 00 79 AND $7900,Y C0/675E: 9D 10 05 STA $0510,X C0/6761: 80 10 BRA $6773 C0/6763: B9 00 78 LDA $7800,Y C0/6766: AA TAX C0/6767: BD 10 05 LDA $0510,X C0/676A: 39 00 79 AND $7900,Y C0/676D: 19 00 7A ORA $7A00,Y C0/6770: 9D 10 05 STA $0510,X C0/6773: 7A PLY C0/6774: FA PLX C0/6775: 68 PLA C0/6776: 60 RTS ; first object to update each frame C0/6777: .DB $00, $0C, $18, $24 ; [ Update Object Graphics in VRAM ] ; only six objects get updated per frame ; called during NMI, takes four frames to fully update ; called four times in a row when a map loads naritaObj::trans_obj_font: C0/677B: 9C 0C 42 STZ $420C C0/677E: A9 41 LDA #$41 C0/6780: 8D 00 43 STA $4300 C0/6783: A9 80 LDA #$80 C0/6785: 8D 15 21 STA $2115 C0/6788: A9 18 LDA #$18 C0/678A: 8D 01 43 STA $4301 C0/678D: A5 47 LDA $47 C0/678F: 29 03 AND #$03 C0/6791: AA TAX C0/6792: BF 77 67 C0 LDA $C06777,X C0/6796: 85 48 STA $48 C0/6798: 64 49 STZ $49 C0/679A: 8A TXA C0/679B: 0A ASL C0/679C: AA TAX C0/679D: C2 20 REP #$20 C0/679F: BF 3C 69 C0 LDA $C0693C,X C0/67A3: 85 14 STA $14 C0/67A5: A9 06 00 LDA #$0006 C0/67A8: 85 18 STA $18 C0/67AA: 9C 0B 42 STZ $420B C0/67AD: A6 48 LDX $48 C0/67AF: BC F7 10 LDY $10F7,X C0/67B2: C0 B0 07 CPY #$07B0 C0/67B5: D0 03 BNE $67BA C0/67B7: 4C 66 68 JMP $6866 C0/67BA: B9 79 08 LDA $0879,Y C0/67BD: 29 FF 00 AND #$00FF C0/67C0: 0A ASL C0/67C1: AA TAX C0/67C2: BF F2 D0 C0 LDA $C0D0F2,X C0/67C6: 85 0E STA $0E C0/67C8: BF 3C D2 C0 LDA $C0D23C,X C0/67CC: 85 10 STA $10 C0/67CE: A6 14 LDX $14 C0/67D0: BF 44 69 C0 LDA $C06944,X C0/67D4: 8D 16 21 STA $2116 C0/67D7: 18 CLC C0/67D8: 69 00 01 ADC #$0100 C0/67DB: 85 16 STA $16 C0/67DD: B9 76 08 LDA $0876,Y C0/67E0: 29 3F 00 AND #$003F C0/67E3: 0A ASL C0/67E4: 0A ASL C0/67E5: 85 12 STA $12 C0/67E7: 0A ASL C0/67E8: 18 CLC C0/67E9: 65 12 ADC $12 C0/67EB: AA TAX C0/67EC: A0 01 00 LDY #$0001 C0/67EF: BF 3A CE C0 LDA $C0CE3A,X C0/67F3: 18 CLC C0/67F4: 65 0E ADC $0E C0/67F6: 8D 02 43 STA $4302 C0/67F9: 7B TDC C0/67FA: 65 10 ADC $10 C0/67FC: 8D 04 43 STA $4304 C0/67FF: 8C 0B 42 STY $420B C0/6802: BF 3C CE C0 LDA $C0CE3C,X C0/6806: 18 CLC C0/6807: 65 0E ADC $0E C0/6809: 8D 02 43 STA $4302 C0/680C: 7B TDC C0/680D: 65 10 ADC $10 C0/680F: 8D 04 43 STA $4304 C0/6812: 8C 0B 42 STY $420B C0/6815: BF 42 CE C0 LDA $C0CE42,X C0/6819: 18 CLC C0/681A: 65 0E ADC $0E C0/681C: 8D 02 43 STA $4302 C0/681F: 7B TDC C0/6820: 65 10 ADC $10 C0/6822: 8D 04 43 STA $4304 C0/6825: 8C 0B 42 STY $420B C0/6828: BF 44 CE C0 LDA $C0CE44,X C0/682C: 18 CLC C0/682D: 65 0E ADC $0E C0/682F: 8D 02 43 STA $4302 C0/6832: 7B TDC C0/6833: 65 10 ADC $10 C0/6835: 8D 04 43 STA $4304 C0/6838: 8C 0B 42 STY $420B C0/683B: A5 16 LDA $16 C0/683D: 8D 16 21 STA $2116 C0/6840: BF 3E CE C0 LDA $C0CE3E,X C0/6844: 18 CLC C0/6845: 65 0E ADC $0E C0/6847: 8D 02 43 STA $4302 C0/684A: 7B TDC C0/684B: 65 10 ADC $10 C0/684D: 8D 04 43 STA $4304 C0/6850: 8C 0B 42 STY $420B C0/6853: BF 40 CE C0 LDA $C0CE40,X C0/6857: 18 CLC C0/6858: 65 0E ADC $0E C0/685A: 8D 02 43 STA $4302 C0/685D: 7B TDC C0/685E: 65 10 ADC $10 C0/6860: 8D 04 43 STA $4304 C0/6863: 8C 0B 42 STY $420B C0/6866: E6 14 INC $14 C0/6868: E6 14 INC $14 C0/686A: E6 48 INC $48 C0/686C: E6 48 INC $48 C0/686E: C6 18 DEC $18 C0/6870: F0 03 BEQ $6875 C0/6872: 4C AA 67 JMP $67AA C0/6875: 7B TDC C0/6876: E2 20 SEP #$20 C0/6878: 60 RTS ; [ Load Character Graphics (world map) ] ogata_trans_obj_font: C0/6879: 9C 0C 42 STZ $420C C0/687C: 8E 16 21 STX $2116 C0/687F: C2 20 REP #$20 C0/6881: 29 3F 00 AND #$003F C0/6884: 0A ASL C0/6885: 0A ASL C0/6886: 85 12 STA $12 C0/6888: 0A ASL C0/6889: 18 CLC C0/688A: 65 12 ADC $12 C0/688C: 85 12 STA $12 C0/688E: AD FB 11 LDA $11FB C0/6891: 29 FF 00 AND #$00FF C0/6894: 0A ASL C0/6895: AA TAX C0/6896: BF F2 D0 C0 LDA $C0D0F2,X C0/689A: 85 0E STA $0E C0/689C: BF 3C D2 C0 LDA $C0D23C,X C0/68A0: 85 10 STA $10 C0/68A2: 7B TDC C0/68A3: E2 20 SEP #$20 C0/68A5: 9C 0B 42 STZ $420B C0/68A8: A9 41 LDA #$41 C0/68AA: 8D 00 43 STA $4300 C0/68AD: A9 80 LDA #$80 C0/68AF: 8D 15 21 STA $2115 C0/68B2: A9 18 LDA #$18 C0/68B4: 8D 01 43 STA $4301 C0/68B7: C2 20 REP #$20 C0/68B9: A6 12 LDX $12 C0/68BB: A0 01 00 LDY #$0001 C0/68BE: BF 3A CE C0 LDA $C0CE3A,X C0/68C2: 18 CLC C0/68C3: 65 0E ADC $0E C0/68C5: 8D 02 43 STA $4302 C0/68C8: 7B TDC C0/68C9: 65 10 ADC $10 C0/68CB: 8D 04 43 STA $4304 C0/68CE: 8C 0B 42 STY $420B C0/68D1: BF 3C CE C0 LDA $C0CE3C,X C0/68D5: 18 CLC C0/68D6: 65 0E ADC $0E C0/68D8: 8D 02 43 STA $4302 C0/68DB: 7B TDC C0/68DC: 65 10 ADC $10 C0/68DE: 8D 04 43 STA $4304 C0/68E1: 8C 0B 42 STY $420B C0/68E4: BF 3E CE C0 LDA $C0CE3E,X C0/68E8: 18 CLC C0/68E9: 65 0E ADC $0E C0/68EB: 8D 02 43 STA $4302 C0/68EE: 7B TDC C0/68EF: 65 10 ADC $10 C0/68F1: 8D 04 43 STA $4304 C0/68F4: 8C 0B 42 STY $420B C0/68F7: BF 40 CE C0 LDA $C0CE40,X C0/68FB: 18 CLC C0/68FC: 65 0E ADC $0E C0/68FE: 8D 02 43 STA $4302 C0/6901: 7B TDC C0/6902: 65 10 ADC $10 C0/6904: 8D 04 43 STA $4304 C0/6907: 8C 0B 42 STY $420B C0/690A: BF 42 CE C0 LDA $C0CE42,X C0/690E: 18 CLC C0/690F: 65 0E ADC $0E C0/6911: 8D 02 43 STA $4302 C0/6914: 7B TDC C0/6915: 65 10 ADC $10 C0/6917: 8D 04 43 STA $4304 C0/691A: 8C 0B 42 STY $420B C0/691D: BF 44 CE C0 LDA $C0CE44,X C0/6921: 18 CLC C0/6922: 65 0E ADC $0E C0/6924: 8D 02 43 STA $4302 C0/6927: 7B TDC C0/6928: 65 10 ADC $10 C0/692A: 8D 04 43 STA $4304 C0/692D: 8C 0B 42 STY $420B C0/6930: 7B TDC C0/6931: E2 20 SEP #$20 C0/6933: 60 RTS C0/6934: .DW $0000, $00F6, $01EC, $02E2 C0/693C: .DW $0000, $000C, $0018, $0024 C0/6944: .DW $6000, $6040, $6080, $60C0, $6200, $6240 C0/6950: .DW $6280, $62C0, $6400, $6440, $6480, $64C0 C0/695C: .DW $6600, $6640, $6680, $66C0, $6800, $6840 C0/6968: .DW $6880, $68C0, $6A00, $6A40, $6A80, $6AC0 ; [ Init Terra Outline Graphics (unused) ] C0/6974: A6 00 LDX $00 C0/6976: 8A TXA C0/6977: 9F 00 60 7E STA $7E6000,X C0/697B: E8 INX C0/697C: E0 00 6C CPX #$6C00 C0/697F: D0 F6 BNE $6977 C0/6981: A6 00 LDX $00 C0/6983: 86 1E STX $1E C0/6985: 86 22 STX $22 C0/6987: A2 00 60 LDX #$6000 C0/698A: 86 36 STX $36 C0/698C: A9 7E LDA #$7E C0/698E: 85 38 STA $38 C0/6990: A6 1E LDX $1E C0/6992: BF F2 D0 C0 LDA $C0D0F2,X C0/6996: 85 2A STA $2A C0/6998: 1A INC C0/6999: 85 2D STA $2D C0/699B: 18 CLC C0/699C: 69 0F ADC #$0F C0/699E: 85 30 STA $30 C0/69A0: 1A INC C0/69A1: 85 33 STA $33 C0/69A3: BF F3 D0 C0 LDA $C0D0F3,X C0/69A7: 85 2B STA $2B C0/69A9: 85 2E STA $2E C0/69AB: 85 31 STA $31 C0/69AD: 85 34 STA $34 C0/69AF: BF 3C D2 C0 LDA $C0D23C,X C0/69B3: 85 2C STA $2C C0/69B5: 85 2F STA $2F C0/69B7: 85 32 STA $32 C0/69B9: 85 35 STA $35 C0/69BB: A6 00 LDX $00 C0/69BD: 86 20 STX $20 C0/69BF: C2 20 REP #$20 C0/69C1: A6 20 LDX $20 C0/69C3: BF 46 CE C0 LDA $C0CE46,X C0/69C7: 85 24 STA $24 C0/69C9: 7B TDC C0/69CA: E2 20 SEP #$20 C0/69CC: A9 08 LDA #$08 C0/69CE: 85 1A STA $1A C0/69D0: A4 24 LDY $24 C0/69D2: B7 2D LDA [$2D],Y C0/69D4: 17 30 ORA [$30],Y C0/69D6: 17 33 ORA [$33],Y C0/69D8: 45 02 EOR $02 C0/69DA: 37 2A AND [$2A],Y C0/69DC: C8 INY C0/69DD: C8 INY C0/69DE: 84 24 STY $24 C0/69E0: A4 22 LDY $22 C0/69E2: 97 36 STA [$36],Y C0/69E4: C8 INY C0/69E5: C8 INY C0/69E6: 84 22 STY $22 C0/69E8: C6 1A DEC $1A C0/69EA: D0 E4 BNE $69D0 C0/69EC: C2 21 REP #$21 C0/69EE: A5 22 LDA $22 C0/69F0: 69 10 00 ADC #$0010 C0/69F3: 85 22 STA $22 C0/69F5: 7B TDC C0/69F6: E2 20 SEP #$20 C0/69F8: A6 20 LDX $20 C0/69FA: E8 INX C0/69FB: E8 INX C0/69FC: 86 20 STX $20 C0/69FE: E0 6C 00 CPX #$006C C0/6A01: D0 BC BNE $69BF C0/6A03: 60 RTS ; [ Update Timer Sprite Data ] disp_time: C0/6A04: AD 88 11 LDA $1188 ; return if timer is disabled C0/6A07: 29 40 AND #$40 C0/6A09: D0 01 BNE $6A0C C0/6A0B: 60 RTS C0/6A0C: AE 89 11 LDX $1189 ; timer value C0/6A0F: 8E 04 42 STX $4204 C0/6A12: A9 3C LDA #$3C ; divide by 60 to get seconds C0/6A14: 8D 06 42 STA $4206 C0/6A17: EA NOP C0/6A18: EA NOP C0/6A19: EA NOP C0/6A1A: EA NOP C0/6A1B: EA NOP C0/6A1C: EA NOP C0/6A1D: EA NOP C0/6A1E: AE 14 42 LDX $4214 C0/6A21: 8E 04 42 STX $4204 C0/6A24: A9 0A LDA #$0A ; divide by 10 to get 10 seconds C0/6A26: 8D 06 42 STA $4206 C0/6A29: EA NOP C0/6A2A: EA NOP C0/6A2B: EA NOP C0/6A2C: EA NOP C0/6A2D: EA NOP C0/6A2E: EA NOP C0/6A2F: EA NOP C0/6A30: AD 16 42 LDA $4216 C0/6A33: 85 1D STA $1D ; remainder is one's digit of seconds C0/6A35: AE 14 42 LDX $4214 C0/6A38: 8E 04 42 STX $4204 C0/6A3B: A9 06 LDA #$06 ; divide by 6 to get minutes C0/6A3D: 8D 06 42 STA $4206 C0/6A40: EA NOP C0/6A41: EA NOP C0/6A42: EA NOP C0/6A43: EA NOP C0/6A44: EA NOP C0/6A45: EA NOP C0/6A46: EA NOP C0/6A47: AD 16 42 LDA $4216 C0/6A4A: 85 1C STA $1C ; remainder is ten's digit of seconds C0/6A4C: AE 14 42 LDX $4214 C0/6A4F: 8E 04 42 STX $4204 C0/6A52: A9 0A LDA #$0A ; divide by 10 to get 10 minutes C0/6A54: 8D 06 42 STA $4206 C0/6A57: EA NOP C0/6A58: EA NOP C0/6A59: EA NOP C0/6A5A: EA NOP C0/6A5B: EA NOP C0/6A5C: EA NOP C0/6A5D: EA NOP C0/6A5E: AD 16 42 LDA $4216 C0/6A61: 85 1B STA $1B ; remainder is one's digit of minutes C0/6A63: AD 14 42 LDA $4214 C0/6A66: 85 1A STA $1A ; result is ten's digit of minutes C0/6A68: A9 CC LDA #$CC ; set sprite y coordinates C0/6A6A: 8D 0D 03 STA $030D C0/6A6D: 8D 11 03 STA $0311 C0/6A70: 8D 15 03 STA $0315 C0/6A73: 8D 19 03 STA $0319 C0/6A76: 8D 1D 03 STA $031D C0/6A79: A9 C8 LDA #$C8 ; set sprite x coordinates C0/6A7B: 8D 0C 03 STA $030C C0/6A7E: A9 D0 LDA #$D0 C0/6A80: 8D 10 03 STA $0310 C0/6A83: A9 D8 LDA #$D8 C0/6A85: 8D 1C 03 STA $031C C0/6A88: A9 E0 LDA #$E0 C0/6A8A: 8D 14 03 STA $0314 C0/6A8D: A9 E8 LDA #$E8 C0/6A8F: 8D 18 03 STA $0318 C0/6A92: A9 31 LDA #$31 ; set priority = 3, palette = 0, msb of graphics = 1 C0/6A94: 8D 0F 03 STA $030F C0/6A97: 8D 13 03 STA $0313 C0/6A9A: 8D 17 03 STA $0317 C0/6A9D: 8D 1B 03 STA $031B C0/6AA0: 8D 1F 03 STA $031F C0/6AA3: A9 84 LDA #$84 ; colon graphics C0/6AA5: 8D 1E 03 STA $031E C0/6AA8: A5 1A LDA $1A ; digit graphics C0/6AAA: AA TAX C0/6AAB: BF D1 6A C0 LDA $C06AD1,X C0/6AAF: 8D 0E 03 STA $030E C0/6AB2: A5 1B LDA $1B C0/6AB4: AA TAX C0/6AB5: BF D1 6A C0 LDA $C06AD1,X C0/6AB9: 8D 12 03 STA $0312 C0/6ABC: A5 1C LDA $1C C0/6ABE: AA TAX C0/6ABF: BF D1 6A C0 LDA $C06AD1,X C0/6AC3: 8D 16 03 STA $0316 C0/6AC6: A5 1D LDA $1D C0/6AC8: AA TAX C0/6AC9: BF D1 6A C0 LDA $C06AD1,X C0/6ACD: 8D 1A 03 STA $031A C0/6AD0: 60 RTS ; timer graphics pointers (+$0100, VRAM) C0/6AD1: .DB $60, $62, $64, $66, $68, $6A, $6C, $6E, $80, $82 ; [ Load Timer Graphics ] C0/6ADB: AD 21 05 LDA $0521 C0/6ADE: 30 01 BMI $6AE1 C0/6AE0: 60 RTS C0/6AE1: A9 80 LDA #$80 C0/6AE3: 8D 15 21 STA $2115 C0/6AE6: A2 00 76 LDX #$7600 C0/6AE9: 8E 16 21 STX $2116 C0/6AEC: A6 00 LDX $00 C0/6AEE: BF 00 8B C4 LDA $C48B00,X C0/6AF2: 5F 01 8B C4 EOR $C48B01,X C0/6AF6: 8D 18 21 STA $2118 C0/6AF9: BF 01 8B C4 LDA $C48B01,X C0/6AFD: 8D 19 21 STA $2119 C0/6B00: BF 02 8B C4 LDA $C48B02,X C0/6B04: 5F 03 8B C4 EOR $C48B03,X C0/6B08: 8D 18 21 STA $2118 C0/6B0B: BF 03 8B C4 LDA $C48B03,X C0/6B0F: 8D 19 21 STA $2119 C0/6B12: BF 04 8B C4 LDA $C48B04,X C0/6B16: 5F 05 8B C4 EOR $C48B05,X C0/6B1A: 8D 18 21 STA $2118 C0/6B1D: BF 05 8B C4 LDA $C48B05,X C0/6B21: 8D 19 21 STA $2119 C0/6B24: BF 06 8B C4 LDA $C48B06,X C0/6B28: 5F 07 8B C4 EOR $C48B07,X C0/6B2C: 8D 18 21 STA $2118 C0/6B2F: BF 07 8B C4 LDA $C48B07,X C0/6B33: 8D 19 21 STA $2119 C0/6B36: BF 08 8B C4 LDA $C48B08,X C0/6B3A: 5F 09 8B C4 EOR $C48B09,X C0/6B3E: 8D 18 21 STA $2118 C0/6B41: BF 09 8B C4 LDA $C48B09,X C0/6B45: 8D 19 21 STA $2119 C0/6B48: BF 0A 8B C4 LDA $C48B0A,X C0/6B4C: 5F 0B 8B C4 EOR $C48B0B,X C0/6B50: 8D 18 21 STA $2118 C0/6B53: BF 0B 8B C4 LDA $C48B0B,X C0/6B57: 8D 19 21 STA $2119 C0/6B5A: BF 0C 8B C4 LDA $C48B0C,X C0/6B5E: 5F 0D 8B C4 EOR $C48B0D,X C0/6B62: 8D 18 21 STA $2118 C0/6B65: BF 0D 8B C4 LDA $C48B0D,X C0/6B69: 8D 19 21 STA $2119 C0/6B6C: BF 0E 8B C4 LDA $C48B0E,X C0/6B70: 5F 0F 8B C4 EOR $C48B0F,X C0/6B74: 8D 18 21 STA $2118 C0/6B77: BF 0F 8B C4 LDA $C48B0F,X C0/6B7B: 8D 19 21 STA $2119 C0/6B7E: A0 18 00 LDY #$0018 C0/6B81: 9C 18 21 STZ $2118 C0/6B84: 9C 19 21 STZ $2119 C0/6B87: 88 DEY C0/6B88: D0 F7 BNE $6B81 C0/6B8A: C2 21 REP #$21 C0/6B8C: 8A TXA C0/6B8D: 69 10 00 ADC #$0010 C0/6B90: AA TAX C0/6B91: 7B TDC C0/6B92: E2 20 SEP #$20 C0/6B94: E0 80 00 CPX #$0080 C0/6B97: F0 03 BEQ $6B9C C0/6B99: 4C EE 6A JMP $6AEE C0/6B9C: A0 00 01 LDY #$0100 C0/6B9F: 9C 18 21 STZ $2118 C0/6BA2: 9C 19 21 STZ $2119 C0/6BA5: 88 DEY C0/6BA6: D0 F7 BNE $6B9F C0/6BA8: BF 00 8B C4 LDA $C48B00,X C0/6BAC: 5F 01 8B C4 EOR $C48B01,X C0/6BB0: 8D 18 21 STA $2118 C0/6BB3: BF 01 8B C4 LDA $C48B01,X C0/6BB7: 8D 19 21 STA $2119 C0/6BBA: BF 02 8B C4 LDA $C48B02,X C0/6BBE: 5F 03 8B C4 EOR $C48B03,X C0/6BC2: 8D 18 21 STA $2118 C0/6BC5: BF 03 8B C4 LDA $C48B03,X C0/6BC9: 8D 19 21 STA $2119 C0/6BCC: BF 04 8B C4 LDA $C48B04,X C0/6BD0: 5F 05 8B C4 EOR $C48B05,X C0/6BD4: 8D 18 21 STA $2118 C0/6BD7: BF 05 8B C4 LDA $C48B05,X C0/6BDB: 8D 19 21 STA $2119 C0/6BDE: BF 06 8B C4 LDA $C48B06,X C0/6BE2: 5F 07 8B C4 EOR $C48B07,X C0/6BE6: 8D 18 21 STA $2118 C0/6BE9: BF 07 8B C4 LDA $C48B07,X C0/6BED: 8D 19 21 STA $2119 C0/6BF0: BF 08 8B C4 LDA $C48B08,X C0/6BF4: 5F 09 8B C4 EOR $C48B09,X C0/6BF8: 8D 18 21 STA $2118 C0/6BFB: BF 09 8B C4 LDA $C48B09,X C0/6BFF: 8D 19 21 STA $2119 C0/6C02: BF 0A 8B C4 LDA $C48B0A,X C0/6C06: 5F 0B 8B C4 EOR $C48B0B,X C0/6C0A: 8D 18 21 STA $2118 C0/6C0D: BF 0B 8B C4 LDA $C48B0B,X C0/6C11: 8D 19 21 STA $2119 C0/6C14: BF 0C 8B C4 LDA $C48B0C,X C0/6C18: 5F 0D 8B C4 EOR $C48B0D,X C0/6C1C: 8D 18 21 STA $2118 C0/6C1F: BF 0D 8B C4 LDA $C48B0D,X C0/6C23: 8D 19 21 STA $2119 C0/6C26: BF 0E 8B C4 LDA $C48B0E,X C0/6C2A: 5F 0F 8B C4 EOR $C48B0F,X C0/6C2E: 8D 18 21 STA $2118 C0/6C31: BF 0F 8B C4 LDA $C48B0F,X C0/6C35: 8D 19 21 STA $2119 C0/6C38: A0 18 00 LDY #$0018 C0/6C3B: 9C 18 21 STZ $2118 C0/6C3E: 9C 19 21 STZ $2119 C0/6C41: 88 DEY C0/6C42: D0 F7 BNE $6C3B C0/6C44: C2 21 REP #$21 C0/6C46: 8A TXA C0/6C47: 69 10 00 ADC #$0010 C0/6C4A: AA TAX C0/6C4B: 7B TDC C0/6C4C: E2 20 SEP #$20 C0/6C4E: E0 A0 00 CPX #$00A0 C0/6C51: F0 03 BEQ $6C56 C0/6C53: 4C A8 6B JMP $6BA8 C0/6C56: AF D0 8B C4 LDA $C48BD0 C0/6C5A: 4F D1 8B C4 EOR $C48BD1 C0/6C5E: 8D 18 21 STA $2118 C0/6C61: AF D1 8B C4 LDA $C48BD1 C0/6C65: 8D 19 21 STA $2119 C0/6C68: AF D2 8B C4 LDA $C48BD2 C0/6C6C: 4F D3 8B C4 EOR $C48BD3 C0/6C70: 8D 18 21 STA $2118 C0/6C73: AF D3 8B C4 LDA $C48BD3 C0/6C77: 8D 19 21 STA $2119 C0/6C7A: AF D4 8B C4 LDA $C48BD4 C0/6C7E: 4F D5 8B C4 EOR $C48BD5 C0/6C82: 8D 18 21 STA $2118 C0/6C85: AF D5 8B C4 LDA $C48BD5 C0/6C89: 8D 19 21 STA $2119 C0/6C8C: AF D6 8B C4 LDA $C48BD6 C0/6C90: 4F D7 8B C4 EOR $C48BD7 C0/6C94: 8D 18 21 STA $2118 C0/6C97: AF D7 8B C4 LDA $C48BD7 C0/6C9B: 8D 19 21 STA $2119 C0/6C9E: AF D8 8B C4 LDA $C48BD8 C0/6CA2: 4F D9 8B C4 EOR $C48BD9 C0/6CA6: 8D 18 21 STA $2118 C0/6CA9: AF D9 8B C4 LDA $C48BD9 C0/6CAD: 8D 19 21 STA $2119 C0/6CB0: AF DA 8B C4 LDA $C48BDA C0/6CB4: 4F DB 8B C4 EOR $C48BDB C0/6CB8: 8D 18 21 STA $2118 C0/6CBB: AF DB 8B C4 LDA $C48BDB C0/6CBF: 8D 19 21 STA $2119 C0/6CC2: AF DC 8B C4 LDA $C48BDC C0/6CC6: 4F DD 8B C4 EOR $C48BDD C0/6CCA: 8D 18 21 STA $2118 C0/6CCD: AF DD 8B C4 LDA $C48BDD C0/6CD1: 8D 19 21 STA $2119 C0/6CD4: AF DE 8B C4 LDA $C48BDE C0/6CD8: 4F DF 8B C4 EOR $C48BDF C0/6CDC: 8D 18 21 STA $2118 C0/6CDF: AF DF 8B C4 LDA $C48BDF C0/6CE3: 8D 19 21 STA $2119 C0/6CE6: A0 A0 01 LDY #$01A0 C0/6CE9: 9C 18 21 STZ $2118 C0/6CEC: 9C 19 21 STZ $2119 C0/6CEF: 88 DEY C0/6CF0: D0 F7 BNE $6CE9 C0/6CF2: 60 RTS ; [ Update Party Equipment Effects ] check_ability: C0/6CF3: 9C DF 11 STZ $11DF ; clear equipment effects C0/6CF6: A4 00 LDY $00 C0/6CF8: 64 1B STZ $1B C0/6CFA: B9 67 08 LDA $0867,Y ; check if character is enabled C0/6CFD: 29 40 AND #$40 C0/6CFF: F0 13 BEQ $6D14 C0/6D01: B9 67 08 LDA $0867,Y ; check if character is in the current party C0/6D04: 29 07 AND #$07 C0/6D06: CD 6D 1A CMP $1A6D C0/6D09: D0 09 BNE $6D14 C0/6D0B: 5A PHY C0/6D0C: A5 1B LDA $1B C0/6D0E: 22 06 00 C2 JSL $C20006 ; update character battle stats C0/6D12: 7B TDC C0/6D13: 7A PLY C0/6D14: C2 21 REP #$21 C0/6D16: 98 TYA C0/6D17: 69 29 00 ADC #$0029 C0/6D1A: A8 TAY C0/6D1B: 7B TDC C0/6D1C: E2 20 SEP #$20 C0/6D1E: E6 1B INC $1B C0/6D20: C0 90 02 CPY #$0290 C0/6D23: D0 D5 BNE $6CFA C0/6D25: 60 RTS ; [ Update Party Switching ] change_active_party: C0/6D26: AD B9 1E LDA $1EB9 ; return if party switching is disabled C0/6D29: 29 40 AND #$40 C0/6D2B: F0 49 BEQ $6D76 C0/6D2D: AD 84 00 LDA $0084 ; return if map is loading C0/6D30: D0 44 BNE $6D76 C0/6D32: AD 5E 05 LDA $055E ; return if there was a party collision C0/6D35: D0 3F BNE $6D76 C0/6D37: A6 E5 LDX $E5 ; return if running an event C0/6D39: E0 00 00 CPX #$0000 C0/6D3C: D0 38 BNE $6D76 C0/6D3E: A5 E7 LDA $E7 C0/6D40: C9 CA CMP #$CA C0/6D42: D0 32 BNE $6D76 C0/6D44: AC 03 08 LDY $0803 ; party object C0/6D47: B9 69 08 LDA $0869,Y ; return if between tiles C0/6D4A: D0 2A BNE $6D76 C0/6D4C: B9 6A 08 LDA $086A,Y C0/6D4F: 29 0F AND #$0F C0/6D51: D0 23 BNE $6D76 C0/6D53: B9 6C 08 LDA $086C,Y C0/6D56: D0 1E BNE $6D76 C0/6D58: B9 6D 08 LDA $086D,Y C0/6D5B: 29 0F AND #$0F C0/6D5D: D0 17 BNE $6D76 C0/6D5F: A5 07 LDA $07 ; branch if y button is down C0/6D61: 29 40 AND #$40 C0/6D63: D0 07 BNE $6D6C C0/6D65: A9 01 LDA #$01 ; enable party switching and return C0/6D67: 8D 62 07 STA $0762 C0/6D6A: 80 0A BRA $6D76 C0/6D6C: AD 62 07 LDA $0762 ; y button down, check if party switching was enabled last frame C0/6D6F: F0 05 BEQ $6D76 C0/6D71: 9C 62 07 STZ $0762 ; if so, disable party switching and do the switch C0/6D74: 80 01 BRA $6D77 C0/6D76: 60 RTS ; [ Switch Parties ] change_active_party_sub: C0/6D77: AD 6D 1A LDA $1A6D ; party number C0/6D7A: A8 TAY C0/6D7B: A5 B2 LDA $B2 ; save party z-level C0/6D7D: 99 F3 1F STA $1FF3,Y C0/6D80: AD 6D 1A LDA $1A6D ; increment party number C0/6D83: 1A INC C0/6D84: C9 04 CMP #$04 C0/6D86: D0 02 BNE $6D8A C0/6D88: A9 01 LDA #$01 C0/6D8A: 8D 6D 1A STA $1A6D C0/6D8D: A9 20 LDA #$20 ; look for character in the new party with the highest battle order C0/6D8F: 85 1A STA $1A C0/6D91: A0 D9 07 LDY #$07D9 C0/6D94: 8C FB 07 STY $07FB C0/6D97: A4 00 LDY $00 C0/6D99: B9 67 08 LDA $0867,Y C0/6D9C: 29 40 AND #$40 C0/6D9E: C9 40 CMP #$40 C0/6DA0: D0 18 BNE $6DBA C0/6DA2: B9 67 08 LDA $0867,Y C0/6DA5: 29 07 AND #$07 C0/6DA7: CD 6D 1A CMP $1A6D C0/6DAA: D0 0E BNE $6DBA C0/6DAC: B9 67 08 LDA $0867,Y C0/6DAF: 29 18 AND #$18 C0/6DB1: C5 1A CMP $1A C0/6DB3: B0 05 BCS $6DBA C0/6DB5: 85 1A STA $1A C0/6DB7: 8C FB 07 STY $07FB ; make that character the showing character C0/6DBA: C2 21 REP #$21 C0/6DBC: 98 TYA C0/6DBD: 69 29 00 ADC #$0029 C0/6DC0: A8 TAY C0/6DC1: 7B TDC C0/6DC2: E2 20 SEP #$20 C0/6DC4: C0 90 02 CPY #$0290 C0/6DC7: D0 D0 BNE $6D99 C0/6DC9: AC FB 07 LDY $07FB ; if no characters were found, increment the party and try again C0/6DCC: C0 D9 07 CPY #$07D9 C0/6DCF: F0 A6 BEQ $6D77 C0/6DD1: AC FB 07 LDY $07FB ; if the new showing character was already the party object, return C0/6DD4: CC 03 08 CPY $0803 C0/6DD7: F0 6A BEQ $6E43 C0/6DD9: A2 D9 07 LDX #$07D9 ; clear party slot 1 through 3 C0/6DDC: 8E FD 07 STX $07FD C0/6DDF: 8E FF 07 STX $07FF C0/6DE2: 8E 01 08 STX $0801 C0/6DE5: AE 03 08 LDX $0803 ; copy movement type from the old party object to the new one C0/6DE8: BD 7C 08 LDA $087C,X C0/6DEB: 99 7C 08 STA $087C,Y C0/6DEE: 99 7D 08 STA $087D,Y C0/6DF1: A9 00 LDA #$00 ; clear the old party object movement type C0/6DF3: 9D 7C 08 STA $087C,X C0/6DF6: 9D 7D 08 STA $087D,X C0/6DF9: BD 7F 08 LDA $087F,X ; old party object facing direction C0/6DFC: 0A ASL C0/6DFD: 0A ASL C0/6DFE: 0A ASL C0/6DFF: 85 1A STA $1A C0/6E01: BD 68 08 LDA $0868,X ; set saved facing direction C0/6E04: 29 E7 AND #$E7 C0/6E06: 05 1A ORA $1A C0/6E08: 9D 68 08 STA $0868,X C0/6E0B: BE 8D 08 LDX $088D,Y ; branch if the new party is on a different map C0/6E0E: E4 82 CPX $82 C0/6E10: D0 32 BNE $6E44 C0/6E12: A9 01 LDA #$01 ; reload same map C0/6E14: 85 58 STA $58 C0/6E16: A9 80 LDA #$80 ; enable map startup event C0/6E18: 8D FA 11 STA $11FA C0/6E1B: B9 7A 08 LDA $087A,Y ; set party position C0/6E1E: 8D C0 1F STA $1FC0 C0/6E21: 8D 66 1F STA $1F66 C0/6E24: B9 7B 08 LDA $087B,Y C0/6E27: 8D C1 1F STA $1FC1 C0/6E2A: 8D 67 1F STA $1F67 C0/6E2D: 20 56 0F JSR $0F56 ; begin fade out C0/6E30: A9 01 LDA #$01 C0/6E32: 85 84 STA $84 C0/6E34: 20 88 6E JSR $6E88 ; save map and position for character objects C0/6E37: AD 6D 1A LDA $1A6D ; restore new party's z-level C0/6E3A: A8 TAY C0/6E3B: B9 F3 1F LDA $1FF3,Y C0/6E3E: 29 03 AND #$03 C0/6E40: 8D 44 07 STA $0744 C0/6E43: 60 RTS C0/6E44: A9 80 LDA #$80 ; enable map startup event C0/6E46: 8D FA 11 STA $11FA C0/6E49: C2 20 REP #$20 C0/6E4B: B9 8D 08 LDA $088D,Y ; set new map C0/6E4E: 8D 64 1F STA $1F64 C0/6E51: B9 6A 08 LDA $086A,Y ; set party position C0/6E54: 4A LSR C0/6E55: 4A LSR C0/6E56: 4A LSR C0/6E57: 4A LSR C0/6E58: E2 20 SEP #$20 C0/6E5A: 8D C0 1F STA $1FC0 C0/6E5D: C2 20 REP #$20 C0/6E5F: B9 6D 08 LDA $086D,Y C0/6E62: 4A LSR C0/6E63: 4A LSR C0/6E64: 4A LSR C0/6E65: 4A LSR C0/6E66: E2 20 SEP #$20 C0/6E68: 8D C1 1F STA $1FC1 C0/6E6B: 7B TDC C0/6E6C: 20 56 0F JSR $0F56 ; begin fade out C0/6E6F: A9 80 LDA #$80 ; don't update party facing direction C0/6E71: 8D 43 07 STA $0743 C0/6E74: A9 01 LDA #$01 ; enable map load C0/6E76: 85 84 STA $84 C0/6E78: 20 88 6E JSR $6E88 ; save map and position for character objects C0/6E7B: AD 6D 1A LDA $1A6D ; restore new party's z-level C0/6E7E: A8 TAY C0/6E7F: B9 F3 1F LDA $1FF3,Y C0/6E82: 29 03 AND #$03 C0/6E84: 8D 44 07 STA $0744 C0/6E87: 60 RTS ; [ Save Map and Position for Character Objects ] push_party_map_info_no: C0/6E88: A6 00 LDX $00 C0/6E8A: 9B TXY C0/6E8B: C2 21 REP #$21 C0/6E8D: BD 8D 08 LDA $088D,X C0/6E90: 99 81 1F STA $1F81,Y C0/6E93: BD 6A 08 LDA $086A,X C0/6E96: 4A LSR C0/6E97: 4A LSR C0/6E98: 4A LSR C0/6E99: 4A LSR C0/6E9A: E2 20 SEP #$20 C0/6E9C: 99 D3 1F STA $1FD3,Y C0/6E9F: C2 20 REP #$20 C0/6EA1: BD 6D 08 LDA $086D,X C0/6EA4: 4A LSR C0/6EA5: 4A LSR C0/6EA6: 4A LSR C0/6EA7: 4A LSR C0/6EA8: E2 20 SEP #$20 C0/6EAA: 99 D4 1F STA $1FD4,Y C0/6EAD: C2 21 REP #$21 C0/6EAF: 8A TXA C0/6EB0: 69 29 00 ADC #$0029 C0/6EB3: AA TAX C0/6EB4: 7B TDC C0/6EB5: E2 20 SEP #$20 C0/6EB7: C8 INY C0/6EB8: C8 INY C0/6EB9: C0 20 00 CPY #$0020 C0/6EBC: D0 CD BNE $6E8B C0/6EBE: 60 RTS ; [ Restore Map Index for Character Objects ] pop_party_map_info_no: C0/6EBF: A6 00 LDX $00 C0/6EC1: 9B TXY C0/6EC2: C2 21 REP #$21 C0/6EC4: B9 81 1F LDA $1F81,Y ; object map index C0/6EC7: 9D 8D 08 STA $088D,X C0/6ECA: 8A TXA C0/6ECB: 69 29 00 ADC #$0029 C0/6ECE: AA TAX C0/6ECF: 7B TDC C0/6ED0: E2 20 SEP #$20 C0/6ED2: C8 INY ; loop through 16 characters C0/6ED3: C8 INY C0/6ED4: C0 20 00 CPY #$0020 C0/6ED7: D0 E9 BNE $6EC2 C0/6ED9: 60 RTS ; [ Restore Character Positions ] pop_party_map_xy: C0/6EDA: A6 00 LDX $00 C0/6EDC: 9B TXY C0/6EDD: 7B TDC C0/6EDE: 9D 69 08 STA $0869,X C0/6EE1: 9D 6C 08 STA $086C,X C0/6EE4: BD 80 08 LDA $0880,X C0/6EE7: 09 20 ORA #$20 C0/6EE9: 9D 80 08 STA $0880,X C0/6EEC: BD 81 08 LDA $0881,X C0/6EEF: 09 20 ORA #$20 C0/6EF1: 9D 81 08 STA $0881,X C0/6EF4: C2 20 REP #$20 C0/6EF6: B9 D3 1F LDA $1FD3,Y C0/6EF9: 29 FF 00 AND #$00FF C0/6EFC: 0A ASL C0/6EFD: 0A ASL C0/6EFE: 0A ASL C0/6EFF: 0A ASL C0/6F00: 9D 6A 08 STA $086A,X C0/6F03: B9 D4 1F LDA $1FD4,Y C0/6F06: 29 FF 00 AND #$00FF C0/6F09: 0A ASL C0/6F0A: 0A ASL C0/6F0B: 0A ASL C0/6F0C: 0A ASL C0/6F0D: 9D 6D 08 STA $086D,X C0/6F10: 8A TXA C0/6F11: 18 CLC C0/6F12: 69 29 00 ADC #$0029 C0/6F15: AA TAX C0/6F16: 7B TDC C0/6F17: E2 20 SEP #$20 C0/6F19: C8 INY ; loop through 16 characters C0/6F1A: C8 INY C0/6F1B: C0 20 00 CPY #$0020 C0/6F1E: D0 BD BNE $6EDD C0/6F20: 60 RTS ; [ Save Character Palettes ] push_party_palette: C0/6F21: A6 00 LDX $00 C0/6F23: 9B TXY C0/6F24: BD 80 08 LDA $0880,X C0/6F27: 29 0E AND #$0E C0/6F29: 99 70 1F STA $1F70,Y C0/6F2C: C2 21 REP #$21 C0/6F2E: 8A TXA C0/6F2F: 69 29 00 ADC #$0029 C0/6F32: AA TAX C0/6F33: 7B TDC C0/6F34: E2 20 SEP #$20 C0/6F36: C8 INY C0/6F37: C0 10 00 CPY #$0010 C0/6F3A: D0 E8 BNE $6F24 C0/6F3C: 60 RTS ; [ Restore Character Palettes ] pop_party_palette: C0/6F3D: A6 00 LDX $00 C0/6F3F: 9B TXY C0/6F40: BD 80 08 LDA $0880,X ; restore character palettes C0/6F43: 29 F1 AND #$F1 C0/6F45: 19 70 1F ORA $1F70,Y C0/6F48: 9D 80 08 STA $0880,X C0/6F4B: BD 81 08 LDA $0881,X C0/6F4E: 29 F1 AND #$F1 C0/6F50: 19 70 1F ORA $1F70,Y C0/6F53: 9D 81 08 STA $0881,X C0/6F56: C2 21 REP #$21 C0/6F58: 8A TXA C0/6F59: 69 29 00 ADC #$0029 C0/6F5C: AA TAX C0/6F5D: 7B TDC C0/6F5E: E2 20 SEP #$20 C0/6F60: C8 INY C0/6F61: C0 10 00 CPY #$0010 C0/6F64: D0 DA BNE $6F40 C0/6F66: 60 RTS ; [ Init Party Object ] get_first_member: C0/6F67: AC 03 08 LDY $0803 C0/6F6A: 84 1E STY $1E C0/6F6C: BE 6A 08 LDX $086A,Y C0/6F6F: 86 26 STX $26 C0/6F71: BE 6D 08 LDX $086D,Y C0/6F74: 86 28 STX $28 C0/6F76: A9 20 LDA #$20 C0/6F78: 85 1A STA $1A C0/6F7A: A6 00 LDX $00 C0/6F7C: 9B TXY C0/6F7D: B9 50 18 LDA $1850,Y C0/6F80: 29 07 AND #$07 C0/6F82: CD 6D 1A CMP $1A6D C0/6F85: D0 32 BNE $6FB9 C0/6F87: C2 20 REP #$20 C0/6F89: A5 26 LDA $26 C0/6F8B: 9D 6A 08 STA $086A,X C0/6F8E: A5 28 LDA $28 C0/6F90: 9D 6D 08 STA $086D,X C0/6F93: BD 7A 08 LDA $087A,X C0/6F96: 85 20 STA $20 C0/6F98: 7B TDC C0/6F99: E2 20 SEP #$20 C0/6F9B: 9D 69 08 STA $0869,X C0/6F9E: 9D 6C 08 STA $086C,X C0/6FA1: DA PHX C0/6FA2: A6 20 LDX $20 C0/6FA4: A9 FF LDA #$FF C0/6FA6: 9F 00 20 7E STA $7E2000,X C0/6FAA: FA PLX C0/6FAB: B9 50 18 LDA $1850,Y C0/6FAE: 29 18 AND #$18 C0/6FB0: C5 1A CMP $1A C0/6FB2: B0 05 BCS $6FB9 C0/6FB4: 85 1A STA $1A C0/6FB6: 8E FB 07 STX $07FB C0/6FB9: C2 21 REP #$21 C0/6FBB: 8A TXA C0/6FBC: 69 29 00 ADC #$0029 C0/6FBF: AA TAX C0/6FC0: 7B TDC C0/6FC1: E2 20 SEP #$20 C0/6FC3: C8 INY C0/6FC4: C0 10 00 CPY #$0010 C0/6FC7: D0 B4 BNE $6F7D C0/6FC9: AE FB 07 LDX $07FB C0/6FCC: BD 67 08 LDA $0867,X C0/6FCF: 09 80 ORA #$80 C0/6FD1: 9D 67 08 STA $0867,X C0/6FD4: E4 1E CPX $1E C0/6FD6: D0 03 BNE $6FDB C0/6FD8: 4C 65 70 JMP $7065 C0/6FDB: A4 1E LDY $1E C0/6FDD: C2 20 REP #$20 C0/6FDF: B9 7A 08 LDA $087A,Y C0/6FE2: 9D 7A 08 STA $087A,X C0/6FE5: 7B TDC C0/6FE6: E2 20 SEP #$20 C0/6FE8: B9 80 08 LDA $0880,Y C0/6FEB: 29 30 AND #$30 C0/6FED: 85 1A STA $1A C0/6FEF: BD 80 08 LDA $0880,X C0/6FF2: 29 CF AND #$CF C0/6FF4: 05 1A ORA $1A C0/6FF6: 9D 80 08 STA $0880,X C0/6FF9: B9 81 08 LDA $0881,Y C0/6FFC: 29 30 AND #$30 C0/6FFE: 85 1A STA $1A C0/7000: BD 81 08 LDA $0881,X C0/7003: 29 CF AND #$CF C0/7005: 05 1A ORA $1A C0/7007: 9D 81 08 STA $0881,X C0/700A: B9 68 08 LDA $0868,Y C0/700D: 9D 68 08 STA $0868,X C0/7010: B9 7E 08 LDA $087E,Y C0/7013: 9D 7E 08 STA $087E,X C0/7016: B9 7F 08 LDA $087F,Y C0/7019: 9D 7F 08 STA $087F,X C0/701C: B9 77 08 LDA $0877,Y C0/701F: 9D 77 08 STA $0877,X C0/7022: B9 7C 08 LDA $087C,Y C0/7025: 9D 7C 08 STA $087C,X C0/7028: 9D 7D 08 STA $087D,X C0/702B: A9 00 LDA #$00 C0/702D: 99 7C 08 STA $087C,Y C0/7030: 99 7D 08 STA $087D,Y C0/7033: 8C 04 42 STY $4204 C0/7036: A9 29 LDA #$29 C0/7038: 8D 06 42 STA $4206 C0/703B: B9 67 08 LDA $0867,Y C0/703E: 29 7F AND #$7F C0/7040: 99 67 08 STA $0867,Y C0/7043: EA NOP C0/7044: EA NOP C0/7045: EA NOP C0/7046: AC 14 42 LDY $4214 C0/7049: 99 50 18 STA $1850,Y C0/704C: 8E 04 42 STX $4204 C0/704F: A9 29 LDA #$29 C0/7051: 8D 06 42 STA $4206 C0/7054: BD 67 08 LDA $0867,X C0/7057: 09 80 ORA #$80 C0/7059: 9D 67 08 STA $0867,X C0/705C: EA NOP C0/705D: EA NOP C0/705E: EA NOP C0/705F: AC 14 42 LDY $4214 C0/7062: 99 50 18 STA $1850,Y C0/7065: A0 D9 07 LDY #$07D9 C0/7068: 8C FD 07 STY $07FD C0/706B: 8C FF 07 STY $07FF C0/706E: 8C 01 08 STY $0801 C0/7071: A9 01 LDA #$01 C0/7073: 8D 98 07 STA $0798 C0/7076: 60 RTS ; [ Restore Character Data ] get_party_info: C0/7077: A6 00 LDX $00 C0/7079: 9B TXY C0/707A: B9 50 18 LDA $1850,Y ; visible, enabled, row, battle order, party C0/707D: 9D 67 08 STA $0867,X C0/7080: C2 21 REP #$21 C0/7082: 8A TXA C0/7083: 69 29 00 ADC #$0029 C0/7086: AA TAX C0/7087: 7B TDC C0/7088: E2 20 SEP #$20 C0/708A: C8 INY C0/708B: C0 10 00 CPY #$0010 ; loop through 16 characters C0/708E: D0 EA BNE $707A C0/7090: 60 RTS ; [ Save Character Data ] put_party_info: C0/7091: A6 00 LDX $00 C0/7093: 9B TXY C0/7094: BD 67 08 LDA $0867,X ; visible, enabled, row, party C0/7097: 29 E7 AND #$E7 C0/7099: 85 1A STA $1A C0/709B: B9 50 18 LDA $1850,Y ; battle order C0/709E: 29 18 AND #$18 C0/70A0: 05 1A ORA $1A C0/70A2: 99 50 18 STA $1850,Y C0/70A5: C2 21 REP #$21 C0/70A7: 8A TXA C0/70A8: 69 29 00 ADC #$0029 C0/70AB: AA TAX C0/70AC: 7B TDC C0/70AD: E2 20 SEP #$20 C0/70AF: C8 INY C0/70B0: C0 10 00 CPY #$0010 ; loop through 16 characters C0/70B3: D0 DF BNE $7094 C0/70B5: 60 RTS ; [ Calculate Object Data Pointers ] make_obj_work_adrs_tbl: C0/70B6: A9 29 LDA #$29 ; object data is 41 bytes each C0/70B8: 8D 02 42 STA $4202 C0/70BB: A6 00 LDX $00 C0/70BD: 8A TXA C0/70BE: 4A LSR C0/70BF: 8D 03 42 STA $4203 C0/70C2: EA NOP C0/70C3: EA NOP C0/70C4: EA NOP C0/70C5: C2 20 REP #$20 C0/70C7: AD 16 42 LDA $4216 C0/70CA: 9D 99 07 STA $0799,X ; store pointer C0/70CD: 7B TDC C0/70CE: E2 20 SEP #$20 C0/70D0: E8 INX C0/70D1: E8 INX C0/70D2: E0 62 00 CPX #$0062 ; $31 objects total C0/70D5: D0 E6 BNE $70BD C0/70D7: 60 RTS ; [ ] ; Y = pointer to object data check_first_work: C0/70D8: CC FB 07 CPY $07FB C0/70DB: D0 11 BNE $70EE ; branch if not party character 0 C0/70DD: A0 D9 07 LDY #$07D9 C0/70E0: 8C FB 07 STY $07FB ; clear all party character slots C0/70E3: 8C FD 07 STY $07FD C0/70E6: 8C FF 07 STY $07FF C0/70E9: 8C 01 08 STY $0801 C0/70EC: 80 2E BRA $711C C0/70EE: CC FD 07 CPY $07FD ; branch if not party character 1 C0/70F1: D0 0E BNE $7101 C0/70F3: A0 D9 07 LDY #$07D9 C0/70F6: 8C FD 07 STY $07FD ; clear party character slots 1-3 C0/70F9: 8C FF 07 STY $07FF C0/70FC: 8C 01 08 STY $0801 C0/70FF: 80 1B BRA $711C C0/7101: CC FF 07 CPY $07FF ; branch if not party character 2 C0/7104: D0 0B BNE $7111 C0/7106: A0 D9 07 LDY #$07D9 C0/7109: 8C FF 07 STY $07FF ; clear party character slots 2-3 C0/710C: 8C 01 08 STY $0801 C0/710F: 80 0B BRA $711C C0/7111: CC 01 08 CPY $0801 ; branch if not party character 3 C0/7114: D0 06 BNE $711C C0/7116: A0 D9 07 LDY #$07D9 C0/7119: 8C 01 08 STY $0801 ; clear party character slots 3 C0/711C: 60 RTS C0/711D: A4 00 LDY $00 C0/711F: B9 67 08 LDA $0867,Y C0/7122: 29 40 AND #$40 C0/7124: F0 14 BEQ $713A C0/7126: B9 67 08 LDA $0867,Y C0/7129: 29 07 AND #$07 C0/712B: CD 6D 1A CMP $1A6D C0/712E: D0 0A BNE $713A C0/7130: C2 20 REP #$20 C0/7132: A5 82 LDA $82 C0/7134: 99 8D 08 STA $088D,Y C0/7137: 7B TDC C0/7138: E2 20 SEP #$20 C0/713A: C2 21 REP #$21 C0/713C: 98 TYA C0/713D: 69 29 00 ADC #$0029 C0/7140: A8 TAY C0/7141: 7B TDC C0/7142: E2 20 SEP #$20 C0/7144: C0 90 02 CPY #$0290 C0/7147: D0 D6 BNE $711F C0/7149: 60 RTS ; [ Update Character Objects ] sort_obj_work: C0/714A: A2 03 08 LDX #$0803 C0/714D: 8E 81 21 STX $2181 C0/7150: A9 00 LDA #$00 C0/7152: 8D 83 21 STA $2183 C0/7155: 64 1B STZ $1B C0/7157: AC FB 07 LDY $07FB C0/715A: C0 D9 07 CPY #$07D9 C0/715D: F0 3B BEQ $719A C0/715F: B9 67 08 LDA $0867,Y C0/7162: 29 40 AND #$40 C0/7164: D0 12 BNE $7178 C0/7166: A0 D9 07 LDY #$07D9 C0/7169: 8C FB 07 STY $07FB C0/716C: 8C FD 07 STY $07FD C0/716F: 8C FF 07 STY $07FF C0/7172: 8C 01 08 STY $0801 C0/7175: 4C 4F 72 JMP $724F C0/7178: B9 67 08 LDA $0867,Y C0/717B: 29 07 AND #$07 C0/717D: CD 6D 1A CMP $1A6D C0/7180: D0 18 BNE $719A C0/7182: A5 82 LDA $82 C0/7184: 99 8D 08 STA $088D,Y C0/7187: A5 83 LDA $83 C0/7189: 99 8E 08 STA $088E,Y C0/718C: AD FB 07 LDA $07FB C0/718F: 8D 80 21 STA $2180 C0/7192: AD FC 07 LDA $07FC C0/7195: 8D 80 21 STA $2180 C0/7198: E6 1B INC $1B C0/719A: AC FD 07 LDY $07FD C0/719D: C0 D9 07 CPY #$07D9 C0/71A0: F0 38 BEQ $71DA C0/71A2: B9 67 08 LDA $0867,Y C0/71A5: 29 40 AND #$40 C0/71A7: D0 0F BNE $71B8 C0/71A9: A0 D9 07 LDY #$07D9 C0/71AC: 8C FD 07 STY $07FD C0/71AF: 8C FF 07 STY $07FF C0/71B2: 8C 01 08 STY $0801 C0/71B5: 4C 4F 72 JMP $724F C0/71B8: B9 67 08 LDA $0867,Y C0/71BB: 29 07 AND #$07 C0/71BD: CD 6D 1A CMP $1A6D C0/71C0: D0 18 BNE $71DA C0/71C2: A5 82 LDA $82 C0/71C4: 99 8D 08 STA $088D,Y C0/71C7: A5 83 LDA $83 C0/71C9: 99 8E 08 STA $088E,Y C0/71CC: AD FD 07 LDA $07FD C0/71CF: 8D 80 21 STA $2180 C0/71D2: AD FE 07 LDA $07FE C0/71D5: 8D 80 21 STA $2180 C0/71D8: E6 1B INC $1B C0/71DA: AC FF 07 LDY $07FF C0/71DD: C0 D9 07 CPY #$07D9 C0/71E0: F0 34 BEQ $7216 C0/71E2: B9 67 08 LDA $0867,Y C0/71E5: 29 40 AND #$40 C0/71E7: D0 0B BNE $71F4 C0/71E9: A0 D9 07 LDY #$07D9 C0/71EC: 8C FF 07 STY $07FF C0/71EF: 8C 01 08 STY $0801 C0/71F2: 80 5B BRA $724F C0/71F4: B9 67 08 LDA $0867,Y C0/71F7: 29 07 AND #$07 C0/71F9: CD 6D 1A CMP $1A6D C0/71FC: D0 18 BNE $7216 C0/71FE: A5 82 LDA $82 C0/7200: 99 8D 08 STA $088D,Y C0/7203: A5 83 LDA $83 C0/7205: 99 8E 08 STA $088E,Y C0/7208: AD FF 07 LDA $07FF C0/720B: 8D 80 21 STA $2180 C0/720E: AD 00 08 LDA $0800 C0/7211: 8D 80 21 STA $2180 C0/7214: E6 1B INC $1B C0/7216: AC 01 08 LDY $0801 C0/7219: C0 D9 07 CPY #$07D9 C0/721C: F0 31 BEQ $724F C0/721E: B9 67 08 LDA $0867,Y C0/7221: 29 40 AND #$40 C0/7223: D0 08 BNE $722D C0/7225: A0 D9 07 LDY #$07D9 C0/7228: 8C 01 08 STY $0801 C0/722B: 80 22 BRA $724F C0/722D: B9 67 08 LDA $0867,Y C0/7230: 29 07 AND #$07 C0/7232: CD 6D 1A CMP $1A6D C0/7235: D0 18 BNE $724F C0/7237: A5 82 LDA $82 C0/7239: 99 8D 08 STA $088D,Y C0/723C: A5 83 LDA $83 C0/723E: 99 8E 08 STA $088E,Y C0/7241: AD 01 08 LDA $0801 C0/7244: 8D 80 21 STA $2180 C0/7247: AD 02 08 LDA $0802 C0/724A: 8D 80 21 STA $2180 C0/724D: E6 1B INC $1B C0/724F: A6 00 LDX $00 C0/7251: BC 99 07 LDY $0799,X C0/7254: CC FB 07 CPY $07FB C0/7257: F0 3C BEQ $7295 C0/7259: CC FD 07 CPY $07FD C0/725C: F0 37 BEQ $7295 C0/725E: CC FF 07 CPY $07FF C0/7261: F0 32 BEQ $7295 C0/7263: CC 01 08 CPY $0801 C0/7266: F0 2D BEQ $7295 C0/7268: B9 67 08 LDA $0867,Y C0/726B: 29 40 AND #$40 C0/726D: F0 26 BEQ $7295 C0/726F: B9 67 08 LDA $0867,Y C0/7272: 29 07 AND #$07 C0/7274: CD 6D 1A CMP $1A6D C0/7277: D0 1C BNE $7295 C0/7279: A5 82 LDA $82 C0/727B: 99 8D 08 STA $088D,Y C0/727E: A5 83 LDA $83 C0/7280: 99 8E 08 STA $088E,Y C0/7283: BD 99 07 LDA $0799,X C0/7286: 8D 80 21 STA $2180 C0/7289: 85 1C STA $1C C0/728B: BD 9A 07 LDA $079A,X C0/728E: 8D 80 21 STA $2180 C0/7291: 85 1D STA $1D C0/7293: E6 1B INC $1B C0/7295: E8 INX C0/7296: E8 INX C0/7297: E0 20 00 CPX #$0020 C0/729A: D0 B5 BNE $7251 C0/729C: A9 B0 LDA #$B0 C0/729E: 8D 80 21 STA $2180 C0/72A1: A9 07 LDA #$07 C0/72A3: 8D 80 21 STA $2180 C0/72A6: E6 1B INC $1B C0/72A8: A6 00 LDX $00 C0/72AA: BC 99 07 LDY $0799,X C0/72AD: B9 67 08 LDA $0867,Y C0/72B0: 29 40 AND #$40 C0/72B2: F0 24 BEQ $72D8 C0/72B4: B9 67 08 LDA $0867,Y C0/72B7: 29 07 AND #$07 C0/72B9: F0 0F BEQ $72CA C0/72BB: CD 6D 1A CMP $1A6D C0/72BE: F0 18 BEQ $72D8 C0/72C0: DA PHX C0/72C1: BE 8D 08 LDX $088D,Y C0/72C4: 9B TXY C0/72C5: FA PLX C0/72C6: C4 82 CPY $82 C0/72C8: D0 0E BNE $72D8 C0/72CA: BD 99 07 LDA $0799,X C0/72CD: 8D 80 21 STA $2180 C0/72D0: BD 9A 07 LDA $079A,X C0/72D3: 8D 80 21 STA $2180 C0/72D6: E6 1B INC $1B C0/72D8: E8 INX C0/72D9: E8 INX C0/72DA: E0 20 00 CPX #$0020 C0/72DD: D0 CB BNE $72AA C0/72DF: A2 20 00 LDX #$0020 C0/72E2: BC 99 07 LDY $0799,X C0/72E5: B9 67 08 LDA $0867,Y C0/72E8: 29 40 AND #$40 C0/72EA: F0 0E BEQ $72FA C0/72EC: BD 99 07 LDA $0799,X C0/72EF: 8D 80 21 STA $2180 C0/72F2: BD 9A 07 LDA $079A,X C0/72F5: 8D 80 21 STA $2180 C0/72F8: E6 1B INC $1B C0/72FA: E8 INX C0/72FB: E8 INX C0/72FC: E0 60 00 CPX #$0060 C0/72FF: D0 E1 BNE $72E2 C0/7301: A5 1B LDA $1B C0/7303: 0A ASL C0/7304: 85 DD STA $DD C0/7306: 9C 98 07 STZ $0798 C0/7309: 60 RTS ; starting object to update each frame * 2 obj_work_ptr_tbl: C0/730A: .DB $00, $0C, $18, $24 ; [ Detect Object Collisions ] ; Y = pointer to object data auto_talk: C0/730E: A5 59 LDA $59 ; return if menu opening C0/7310: D0 22 BNE $7334 C0/7312: B9 7C 08 LDA $087C,Y ; return if object does not activate on collision C0/7315: 29 40 AND #$40 C0/7317: F0 1B BEQ $7334 C0/7319: A6 E5 LDX $E5 ; return if an event is running C0/731B: E0 00 00 CPX #$0000 C0/731E: D0 14 BNE $7334 C0/7320: A5 E7 LDA $E7 C0/7322: C9 CA CMP #$CA C0/7324: D0 0E BNE $7334 C0/7326: A5 84 LDA $84 ; return if a map is loading C0/7328: D0 0A BNE $7334 C0/732A: AD 5E 05 LDA $055E ; C0/732D: D0 05 BNE $7334 C0/732F: C0 90 02 CPY #$0290 ; return if the object is a character C0/7332: B0 01 BCS $7335 C0/7334: 60 RTS C0/7335: B9 7A 08 LDA $087A,Y ; pointer to object map data C0/7338: 85 1E STA $1E ; +$1E = tile above C0/733A: 85 22 STA $22 ; +$22 = tile below C0/733C: 1A INC C0/733D: 25 86 AND $86 C0/733F: 85 20 STA $20 ; +$20 = tile to the right C0/7341: A5 1E LDA $1E C0/7343: 3A DEC C0/7344: 25 86 AND $86 C0/7346: 85 24 STA $24 ; +$24 = tile to the left C0/7348: B9 7B 08 LDA $087B,Y C0/734B: 18 CLC C0/734C: 69 20 ADC #$20 C0/734E: 85 21 STA $21 C0/7350: 85 25 STA $25 C0/7352: B9 7B 08 LDA $087B,Y C0/7355: 3A DEC C0/7356: 25 87 AND $87 C0/7358: 18 CLC C0/7359: 69 20 ADC #$20 C0/735B: 85 1F STA $1F C0/735D: B9 7B 08 LDA $087B,Y C0/7360: 1A INC C0/7361: 25 87 AND $87 C0/7363: 18 CLC C0/7364: 69 20 ADC #$20 C0/7366: 85 23 STA $23 C0/7368: A9 7E LDA #$7E C0/736A: 48 PHA C0/736B: AB PLB C0/736C: 64 1B STZ $1B ; $1B = facing direction C0/736E: B2 1E LDA ($1E) ; check if the object came in contact with a character C0/7370: C9 20 CMP #$20 C0/7372: 90 1C BCC $7390 C0/7374: E6 1B INC $1B C0/7376: B2 20 LDA ($20) C0/7378: C9 20 CMP #$20 C0/737A: 90 14 BCC $7390 C0/737C: E6 1B INC $1B C0/737E: B2 22 LDA ($22) C0/7380: C9 20 CMP #$20 C0/7382: 90 0C BCC $7390 C0/7384: E6 1B INC $1B C0/7386: B2 24 LDA ($24) C0/7388: C9 20 CMP #$20 C0/738A: 90 04 BCC $7390 C0/738C: 7B TDC C0/738D: 48 PHA C0/738E: AB PLB C0/738F: 60 RTS C0/7390: 85 1A STA $1A C0/7392: 7B TDC C0/7393: 48 PHA C0/7394: AB PLB C0/7395: 8C 62 05 STY $0562 C0/7398: A5 1A LDA $1A C0/739A: AA TAX C0/739B: BC 99 07 LDY $0799,X C0/739E: 8C 60 05 STY $0560 C0/73A1: A5 1B LDA $1B C0/73A3: 8D 5F 05 STA $055F C0/73A6: A9 01 LDA #$01 C0/73A8: 8D 5E 05 STA $055E C0/73AB: 60 RTS ; [ Update Party Collisions ] auto_talk_scroll: C0/73AC: AD 5E 05 LDA $055E ; return if no collisions occurred C0/73AF: C9 01 CMP #$01 C0/73B1: D0 1B BNE $73CE C0/73B3: AC 03 08 LDY $0803 ; return if party is between tiles C0/73B6: B9 69 08 LDA $0869,Y C0/73B9: D0 13 BNE $73CE C0/73BB: B9 6A 08 LDA $086A,Y C0/73BE: 29 0F AND #$0F C0/73C0: D0 0C BNE $73CE C0/73C2: B9 6C 08 LDA $086C,Y C0/73C5: D0 07 BNE $73CE C0/73C7: B9 6D 08 LDA $086D,Y C0/73CA: 29 0F AND #$0F C0/73CC: F0 01 BEQ $73CF C0/73CE: 60 RTS C0/73CF: A9 02 LDA #$02 ; increment collision status C0/73D1: 8D 5E 05 STA $055E C0/73D4: AC 60 05 LDY $0560 ; collided object data pointer C0/73D7: C2 20 REP #$20 C0/73D9: B9 6A 08 LDA $086A,Y C0/73DC: 4A LSR C0/73DD: 4A LSR C0/73DE: 4A LSR C0/73DF: 4A LSR C0/73E0: 85 26 STA $26 ; +$26 = x position (in tiles) C0/73E2: B9 6D 08 LDA $086D,Y C0/73E5: 4A LSR C0/73E6: 4A LSR C0/73E7: 4A LSR C0/73E8: 4A LSR C0/73E9: 85 28 STA $28 ; +$28 = y position (in tiles) C0/73EB: 7B TDC C0/73EC: E2 20 SEP #$20 C0/73EE: 64 27 STZ $27 C0/73F0: 64 29 STZ $29 C0/73F2: A5 26 LDA $26 ; set destination horizontal scroll position C0/73F4: 8D 57 05 STA $0557 C0/73F7: 38 SEC C0/73F8: ED 41 05 SBC $0541 ; subtract current scroll position C0/73FB: 10 05 BPL $7402 C0/73FD: E6 27 INC $27 ; $27: 0 = scrolling right, 1 = scrolling left C0/73FF: 45 02 EOR $02 C0/7401: 1A INC C0/7402: 85 26 STA $26 ; $26 = horizontal scroll distance C0/7404: A5 28 LDA $28 ; set vertical horizontal scroll position C0/7406: 8D 58 05 STA $0558 C0/7409: 38 SEC C0/740A: ED 42 05 SBC $0542 ; subtract current scroll position C0/740D: 10 05 BPL $7414 C0/740F: E6 29 INC $29 ; $29: 0 = scrolling down, 1 = scrolling up C0/7411: 45 02 EOR $02 C0/7413: 1A INC C0/7414: 85 28 STA $28 ; $28 = vertical scroll distance C0/7416: C9 02 CMP #$02 C0/7418: B0 09 BCS $7423 ; branch if scrolling more that 2 tiles C0/741A: A5 26 LDA $26 C0/741C: C9 02 CMP #$02 C0/741E: B0 03 BCS $7423 C0/7420: 4C BB 74 JMP $74BB C0/7423: A5 28 LDA $28 C0/7425: C5 26 CMP $26 C0/7427: B0 24 BCS $744D ; branch if vertical scroll distance is greater than horizontal scroll distance C0/7429: C2 20 REP #$20 C0/742B: EB XBA C0/742C: 0A ASL C0/742D: 8D 04 42 STA $4204 C0/7430: 7B TDC C0/7431: E2 20 SEP #$20 C0/7433: A5 26 LDA $26 C0/7435: 8D 06 42 STA $4206 C0/7438: EA NOP C0/7439: EA NOP C0/743A: EA NOP C0/743B: EA NOP C0/743C: EA NOP C0/743D: EA NOP C0/743E: EA NOP C0/743F: AE 14 42 LDX $4214 C0/7442: 8E 49 05 STX $0549 C0/7445: A2 00 02 LDX #$0200 ; 4 pixels/frame in the horizontal direction C0/7448: 8E 47 05 STX $0547 C0/744B: 80 24 BRA $7471 C0/744D: A5 26 LDA $26 C0/744F: C2 20 REP #$20 C0/7451: EB XBA C0/7452: 0A ASL C0/7453: 8D 04 42 STA $4204 C0/7456: 7B TDC C0/7457: E2 20 SEP #$20 C0/7459: A5 28 LDA $28 C0/745B: 8D 06 42 STA $4206 C0/745E: EA NOP C0/745F: EA NOP C0/7460: EA NOP C0/7461: EA NOP C0/7462: EA NOP C0/7463: EA NOP C0/7464: EA NOP C0/7465: AE 14 42 LDX $4214 C0/7468: 8E 47 05 STX $0547 C0/746B: A2 00 02 LDX #$0200 ; 4 pixels/frame in the vertical direction C0/746E: 8E 49 05 STX $0549 C0/7471: A5 27 LDA $27 ; branch if scrolling right C0/7473: F0 0E BEQ $7483 C0/7475: C2 20 REP #$20 C0/7477: AD 47 05 LDA $0547 ; negate horizontal scroll speed C0/747A: 45 02 EOR $02 C0/747C: 1A INC C0/747D: 8D 47 05 STA $0547 C0/7480: 7B TDC C0/7481: E2 20 SEP #$20 C0/7483: A5 29 LDA $29 ; branch if scrolling up C0/7485: F0 0E BEQ $7495 C0/7487: C2 20 REP #$20 C0/7489: AD 49 05 LDA $0549 ; negate vertical scroll speed C0/748C: 45 02 EOR $02 C0/748E: 1A INC C0/748F: 8D 49 05 STA $0549 C0/7492: 7B TDC C0/7493: E2 20 SEP #$20 C0/7495: AE 47 05 LDX $0547 ; copy bg1 scroll speed to bg2 and bg3 C0/7498: 8E 4B 05 STX $054B C0/749B: 8E 4F 05 STX $054F C0/749E: AE 49 05 LDX $0549 C0/74A1: 8E 4D 05 STX $054D C0/74A4: 8E 51 05 STX $0551 C0/74A7: A6 00 LDX $00 ; clear scroll due to movement C0/74A9: 8E 73 00 STX $0073 C0/74AC: 8E 75 00 STX $0075 C0/74AF: 8E 77 00 STX $0077 C0/74B2: 8E 79 00 STX $0079 C0/74B5: 8E 7B 00 STX $007B C0/74B8: 8E 7D 00 STX $007D C0/74BB: B9 7F 08 LDA $087F,Y ; update facing direction C0/74BE: 0A ASL C0/74BF: 0A ASL C0/74C0: 0A ASL C0/74C1: 85 1A STA $1A C0/74C3: B9 68 08 LDA $0868,Y C0/74C6: 29 E7 AND #$E7 C0/74C8: 05 1A ORA $1A C0/74CA: 99 68 08 STA $0868,Y C0/74CD: AD 5F 05 LDA $055F ; get collision direction C0/74D0: 18 CLC C0/74D1: 69 02 ADC #$02 ; change left to right, up to down so character will face attacker C0/74D3: 29 03 AND #$03 C0/74D5: 99 7F 08 STA $087F,Y C0/74D8: AA TAX C0/74D9: BF 2D 58 C0 LDA $C0582D,X ; set graphic position based on facing direction C0/74DD: 99 77 08 STA $0877,Y C0/74E0: AD 6D 1A LDA $1A6D ; save default party C0/74E3: 8D 5D 05 STA $055D C0/74E6: B9 67 08 LDA $0867,Y ; set new party C0/74E9: 29 07 AND #$07 C0/74EB: 8D 6D 1A STA $1A6D C0/74EE: B9 7C 08 LDA $087C,Y ; set movement type to activated C0/74F1: 29 F0 AND #$F0 C0/74F3: 09 04 ORA #$04 C0/74F5: 99 7C 08 STA $087C,Y C0/74F8: 99 7D 08 STA $087D,Y C0/74FB: A0 D9 07 LDY #$07D9 ; clear character slot 1 through 3 object pointers C0/74FE: 8C FD 07 STY $07FD C0/7501: 8C FF 07 STY $07FF C0/7504: 8C 01 08 STY $0801 C0/7507: AC 62 05 LDY $0562 ; colliding NPC data pointer C0/750A: 7B TDC C0/750B: 99 82 08 STA $0882,Y ; clear queue counter C0/750E: AD 5F 05 LDA $055F ; set facing direction C0/7511: 99 7F 08 STA $087F,Y C0/7514: AA TAX C0/7515: BF 2D 58 C0 LDA $C0582D,X ; set graphic position based on facing direction C0/7519: 99 77 08 STA $0877,Y C0/751C: B9 7C 08 LDA $087C,Y ; save movement type C0/751F: 99 7D 08 STA $087D,Y C0/7522: 29 F0 AND #$F0 ; set movement type to activated C0/7524: 09 04 ORA #$04 C0/7526: 99 7C 08 STA $087C,Y C0/7529: B9 89 08 LDA $0889,Y ; set event PC C0/752C: 85 E5 STA $E5 C0/752E: 8D F4 05 STA $05F4 C0/7531: B9 8A 08 LDA $088A,Y C0/7534: 85 E6 STA $E6 C0/7536: 8D F5 05 STA $05F5 C0/7539: B9 8B 08 LDA $088B,Y C0/753C: 18 CLC C0/753D: 69 CA ADC #$CA C0/753F: 85 E7 STA $E7 C0/7541: 8D F6 05 STA $05F6 C0/7544: A2 00 00 LDX #$0000 ; set return address C0/7547: 8E 94 05 STX $0594 C0/754A: A9 CA LDA #$CA C0/754C: 8D 96 05 STA $0596 ; set loop count C0/754F: A9 01 LDA #$01 C0/7551: 8D C7 05 STA $05C7 ; set stack pointer C0/7554: A2 03 00 LDX #$0003 C0/7557: 86 E8 STX $E8 C0/7559: AC 03 08 LDY $0803 ; party object data pointer C0/755C: B9 7C 08 LDA $087C,Y ; save movement type C0/755F: 99 7D 08 STA $087D,Y C0/7562: 29 F0 AND #$F0 ; set movement type to activated C0/7564: 09 04 ORA #$04 C0/7566: 99 7C 08 STA $087C,Y C0/7569: A5 E1 LDA $E1 ; wait for scroll to finish before executing events C0/756B: 09 20 ORA #$20 C0/756D: 85 E1 STA $E1 C0/756F: A9 01 LDA #$01 ; wait for character objects to get updated C0/7571: 8D 98 07 STA $0798 C0/7574: 20 ED 2F JSR $2FED ; close map name dialog window C0/7577: 60 RTS ; [ Update Object Actions ] ; called once per frame and once by map loader obj_event: C0/7578: A5 47 LDA $47 ; only update 6 objects per frame C0/757A: 29 03 AND #$03 C0/757C: AA TAX C0/757D: BF 0A 73 C0 LDA $C0730A,X ; get first object (x2) C0/7581: 85 DC STA $DC C0/7583: A9 06 LDA #$06 C0/7585: 85 DE STA $DE C0/7587: 7B TDC ; start of loop C0/7588: E2 20 SEP #$20 C0/758A: A5 DC LDA $DC C0/758C: AA TAX C0/758D: BC 03 08 LDY $0803,X ; get pointer to object data C0/7590: 84 DA STY $DA C0/7592: C5 DD CMP $DD ; skip if greater than the current total number of objects C0/7594: 90 03 BCC $7599 C0/7596: 4C 56 76 JMP $7656 C0/7599: B9 69 08 LDA $0869,Y ; skip if this object is between tiles C0/759C: D0 F8 BNE $7596 C0/759E: B9 6A 08 LDA $086A,Y C0/75A1: 29 0F AND #$0F C0/75A3: D0 F1 BNE $7596 C0/75A5: B9 6C 08 LDA $086C,Y C0/75A8: D0 EC BNE $7596 C0/75AA: B9 6D 08 LDA $086D,Y C0/75AD: 29 0F AND #$0F C0/75AF: D0 E5 BNE $7596 C0/75B1: B9 7C 08 LDA $087C,Y ; branch if object scrolls with bg2 C0/75B4: 30 7E BMI $7634 C0/75B6: B9 68 08 LDA $0868,Y ; branch if object has special graphics C0/75B9: 29 E0 AND #$E0 C0/75BB: C9 80 CMP #$80 C0/75BD: F0 75 BEQ $7634 C0/75BF: B9 8C 08 LDA $088C,Y ; branch if not normal sprite priority C0/75C2: 29 C0 AND #$C0 C0/75C4: D0 6E BNE $7634 C0/75C6: C0 B0 07 CPY #$07B0 ; branch if this is the camera C0/75C9: F0 6F BEQ $763A C0/75CB: BE 7A 08 LDX $087A,Y ; pointer to map data (old) C0/75CE: 8C 04 42 STY $4204 C0/75D1: A9 29 LDA #$29 C0/75D3: 8D 06 42 STA $4206 C0/75D6: 48 PHA C0/75D7: 68 PLA C0/75D8: 48 PHA C0/75D9: 68 PLA C0/75DA: AD 14 42 LDA $4214 ; get object number C0/75DD: 0A ASL C0/75DE: DF 00 20 7E CMP $7E2000,X ; if this object is shown in map data, clear it for now C0/75E2: D0 06 BNE $75EA C0/75E4: A9 FF LDA #$FF C0/75E6: 9F 00 20 7E STA $7E2000,X C0/75EA: B9 67 08 LDA $0867,Y ; branch if object is visible C0/75ED: 10 4B BPL $763A C0/75EF: 20 E1 7C JSR $7CE1 ; update pointer to map data C0/75F2: BE 7A 08 LDX $087A,Y C0/75F5: BF 00 00 7F LDA $7F0000,X ; tile number C0/75F9: AA TAX C0/75FA: BF 00 76 7E LDA $7E7600,X ; tile properties C0/75FE: 29 03 AND #$03 C0/7600: 99 88 08 STA $0888,Y ; set z-level C0/7603: A5 DC LDA $DC ; current object C0/7605: D0 22 BNE $7629 ; branch if not object 0 (party) C0/7607: B9 7C 08 LDA $087C,Y ; branch if movement is not user-controlled C0/760A: 29 0F AND #$0F C0/760C: C9 02 CMP #$02 C0/760E: D0 19 BNE $7629 C0/7610: A5 B8 LDA $B8 ; branch if not on a bridge tile C0/7612: 29 04 AND #$04 C0/7614: F0 06 BEQ $761C C0/7616: A5 B2 LDA $B2 ; branch if object is not on lower z-level C0/7618: C9 02 CMP #$02 C0/761A: F0 0B BEQ $7627 C0/761C: BE 7A 08 LDX $087A,Y ; pointer to map data C0/761F: AD 14 42 LDA $4214 ; get object number C0/7622: 0A ASL C0/7623: 9F 00 20 7E STA $7E2000,X ; set object map data C0/7627: 80 11 BRA $763A C0/7629: BE 7A 08 LDX $087A,Y ; pointer to map data C0/762C: AD 14 42 LDA $4214 ; get object number C0/762F: 0A ASL C0/7630: 9F 00 20 7E STA $7E2000,X ; set object map data C0/7634: 20 2D 7C JSR $7C2D ; update object layer priority C0/7637: 20 0E 73 JSR $730E ; detect object collisions C0/763A: B9 7C 08 LDA $087C,Y ; movement type C0/763D: 29 0F AND #$0F C0/763F: 3A DEC C0/7640: D0 03 BNE $7645 C0/7642: 4C E9 76 JMP $76E9 ; jump if script-controlled C0/7645: 3A DEC C0/7646: D0 03 BNE $764B C0/7648: 4C DE 76 JMP $76DE ; jump if user-controlled C0/764B: 3A DEC C0/764C: F0 14 BEQ $7662 ; branch if random C0/764E: 3A DEC C0/764F: F0 16 BEQ $7667 ; branch if activated C0/7651: CC 03 08 CPY $0803 ; branch if current object is the party object C0/7654: F0 11 BEQ $7667 C0/7656: E6 DC INC $DC ; next object C0/7658: E6 DC INC $DC C0/765A: C6 DE DEC $DE C0/765C: F0 03 BEQ $7661 C0/765E: 4C 87 75 JMP $7587 C0/7661: 60 RTS ; random movement C0/7662: 20 B1 7B JSR $7BB1 ; do random object movement C0/7665: 80 EF BRA $7656 ; next object ; activated (movement) C0/7667: C2 20 REP #$20 C0/7669: 7B TDC C0/766A: 99 71 08 STA $0871,Y ; clear movement speed C0/766D: 99 73 08 STA $0873,Y C0/7670: E2 20 SEP #$20 C0/7672: A5 E5 LDA $E5 ; return if an event is running C0/7674: C9 00 CMP #$00 C0/7676: D0 63 BNE $76DB C0/7678: A5 E6 LDA $E6 C0/767A: C9 00 CMP #$00 C0/767C: D0 5D BNE $76DB C0/767E: A5 E7 LDA $E7 C0/7680: C9 CA CMP #$CA C0/7682: D0 57 BNE $76DB C0/7684: B9 7D 08 LDA $087D,Y C0/7687: CC 03 08 CPY $0803 C0/768A: D0 0E BNE $769A ; branch if not the party object C0/768C: B9 67 08 LDA $0867,Y C0/768F: 29 07 AND #$07 C0/7691: CD 6D 1A CMP $1A6D C0/7694: D0 04 BNE $769A ; branch if not the current party C0/7696: A9 02 LDA #$02 ; set movement type to user-controlled (return control to user after event is complete) C0/7698: 80 35 BRA $76CF C0/769A: B9 7D 08 LDA $087D,Y ; previous movement type C0/769D: 29 0F AND #$0F C0/769F: C9 02 CMP #$02 C0/76A1: D0 04 BNE $76A7 ; branch if not user-controlled C0/76A3: A9 00 LDA #$00 ; set movement type to none C0/76A5: 80 28 BRA $76CF C0/76A7: 85 1A STA $1A ; restore previous movement type C0/76A9: B9 7C 08 LDA $087C,Y C0/76AC: 29 F0 AND #$F0 C0/76AE: 05 1A ORA $1A C0/76B0: 99 7C 08 STA $087C,Y C0/76B3: B9 7C 08 LDA $087C,Y ; return if object activates on collision C0/76B6: 29 20 AND #$20 C0/76B8: D0 13 BNE $76CD C0/76BA: B9 68 08 LDA $0868,Y ; restore facing direction C0/76BD: 29 18 AND #$18 C0/76BF: 4A LSR C0/76C0: 4A LSR C0/76C1: 4A LSR C0/76C2: 99 7F 08 STA $087F,Y C0/76C5: AA TAX C0/76C6: BF 2D 58 C0 LDA $C0582D,X ; set graphics position C0/76CA: 99 77 08 STA $0877,Y C0/76CD: 80 87 BRA $7656 ; next object C0/76CF: 85 1A STA $1A ; set new movement type C0/76D1: B9 7C 08 LDA $087C,Y C0/76D4: 29 F0 AND #$F0 C0/76D6: 05 1A ORA $1A C0/76D8: 99 7C 08 STA $087C,Y C0/76DB: 4C 56 76 JMP $7656 ; next object ; user-controlled movement C0/76DE: AD B9 1E LDA $1EB9 ; return if user-control event bit is set C0/76E1: 30 03 BMI $76E6 C0/76E3: 20 5F 48 JSR $485F ; do user-controlled object movement C0/76E6: 4C 56 76 JMP $7656 ; next object ; script-controlled movement C0/76E9: B9 82 08 LDA $0882,Y ; decrement script wait counter C0/76EC: F0 0A BEQ $76F8 C0/76EE: 3A DEC C0/76EF: 99 82 08 STA $0882,Y C0/76F2: 4C 56 76 JMP $7656 ; next object C0/76F5: 4C 83 77 JMP $7783 C0/76F8: B9 86 08 LDA $0886,Y ; number of steps to take C0/76FB: F0 F8 BEQ $76F5 C0/76FD: B9 7E 08 LDA $087E,Y ; movement direction C0/7700: F0 F3 BEQ $76F5 ; do script-controlled movement C0/7702: C0 B0 07 CPY #$07B0 C0/7705: F0 62 BEQ $7769 C0/7707: 85 B3 STA $B3 C0/7709: C9 05 CMP #$05 C0/770B: B0 5C BCS $7769 C0/770D: 20 03 7D JSR $7D03 ; get pointer to object map data in facing direction C0/7710: A6 1E LDX $1E C0/7712: B9 7C 08 LDA $087C,Y C0/7715: 30 52 BMI $7769 C0/7717: 29 10 AND #$10 C0/7719: D0 21 BNE $773C C0/771B: BF 00 20 7E LDA $7E2000,X C0/771F: 30 1B BMI $773C C0/7721: C2 20 REP #$20 C0/7723: 7B TDC C0/7724: 99 71 08 STA $0871,Y C0/7727: 99 73 08 STA $0873,Y C0/772A: E2 20 SEP #$20 C0/772C: C0 B0 07 CPY #$07B0 C0/772F: F0 05 BEQ $7736 C0/7731: CC 03 08 CPY $0803 C0/7734: D0 03 BNE $7739 C0/7736: 20 08 7E JSR $7E08 C0/7739: 4C 56 76 JMP $7656 C0/773C: 8C 04 42 STY $4204 C0/773F: A9 29 LDA #$29 C0/7741: 8D 06 42 STA $4206 C0/7744: B9 7C 08 LDA $087C,Y C0/7747: 30 20 BMI $7769 C0/7749: B9 68 08 LDA $0868,Y C0/774C: 29 E0 AND #$E0 C0/774E: C9 80 CMP #$80 C0/7750: F0 17 BEQ $7769 C0/7752: B9 8C 08 LDA $088C,Y C0/7755: 29 C0 AND #$C0 C0/7757: D0 10 BNE $7769 C0/7759: AD 14 42 LDA $4214 C0/775C: 0A ASL C0/775D: 9F 00 20 7E STA $7E2000,X C0/7761: BF 00 00 7F LDA $7F0000,X C0/7765: AA TAX C0/7766: 20 A9 7C JSR $7CA9 C0/7769: 20 77 7E JSR $7E77 ; update object movement speed C0/776C: C0 B0 07 CPY #$07B0 C0/776F: F0 05 BEQ $7776 C0/7771: CC 03 08 CPY $0803 C0/7774: D0 03 BNE $7779 C0/7776: 20 08 7E JSR $7E08 C0/7779: B9 86 08 LDA $0886,Y C0/777C: 3A DEC C0/777D: 99 86 08 STA $0886,Y C0/7780: 4C 56 76 JMP $7656 ; do next command from object script C0/7783: C2 20 REP #$20 C0/7785: B9 83 08 LDA $0883,Y ; script pointer C0/7788: 85 2A STA $2A C0/778A: 7B TDC C0/778B: E2 20 SEP #$20 C0/778D: B9 85 08 LDA $0885,Y C0/7790: 85 2C STA $2C C0/7792: A7 2A LDA [$2A] ; script command C0/7794: 30 06 BMI $779C ; object command $00-$7F: set graphical position C0/7796: 99 77 08 STA $0877,Y C0/7799: 4C 01 78 JMP $7801 ; object command $80-$9F: horizontal/vertical movement C0/779C: C9 A0 CMP #$A0 C0/779E: 90 03 BCC $77A3 C0/77A0: 4C BF 77 JMP $77BF C0/77A3: 38 SEC C0/77A4: E9 80 SBC #$80 C0/77A6: 85 1A STA $1A C0/77A8: 29 03 AND #$03 C0/77AA: 99 7F 08 STA $087F,Y ; set facing direction C0/77AD: 1A INC C0/77AE: 99 7E 08 STA $087E,Y ; set movement direction C0/77B1: A5 1A LDA $1A C0/77B3: 4A LSR C0/77B4: 4A LSR C0/77B5: 1A INC C0/77B6: 99 86 08 STA $0886,Y ; set number of steps to take C0/77B9: 20 9A 7B JSR $7B9A ; increment object script pointer C0/77BC: 4C E9 76 JMP $76E9 ; do script-controlled movement ; object command $A0-$BF: diagonal movement C0/77BF: C9 B0 CMP #$B0 C0/77C1: B0 1E BCS $77E1 C0/77C3: 38 SEC C0/77C4: E9 9C SBC #$9C C0/77C6: 85 1A STA $1A C0/77C8: 1A INC C0/77C9: 99 7E 08 STA $087E,Y ; set movement direction C0/77CC: A5 1A LDA $1A C0/77CE: AA TAX C0/77CF: BF 54 7F C0 LDA $C07F54,X ; set facing direction C0/77D3: 99 7F 08 STA $087F,Y C0/77D6: A9 01 LDA #$01 C0/77D8: 99 86 08 STA $0886,Y ; take one step C0/77DB: 20 9A 7B JSR $7B9A ; increment object script pointer C0/77DE: 4C E9 76 JMP $76E9 ; do script-controlled movement ; object command $C0-$C5: set object speed C0/77E1: C9 C6 CMP #$C6 C0/77E3: B0 09 BCS $77EE C0/77E5: 38 SEC C0/77E6: E9 C0 SBC #$C0 C0/77E8: 99 75 08 STA $0875,Y ; set object speed C0/77EB: 4C 01 78 JMP $7801 ; object command $C6-$FF C0/77EE: 38 SEC C0/77EF: E9 C6 SBC #$C6 C0/77F1: 0A ASL C0/77F2: AA TAX C0/77F3: C2 20 REP #$20 C0/77F5: BF 07 78 C0 LDA $C07807,X C0/77F9: 85 2D STA $2D C0/77FB: 7B TDC C0/77FC: E2 20 SEP #$20 C0/77FE: 6C 2D 00 JMP ($002D) C0/7801: 20 9A 7B JSR $7B9A C0/7804: 4C E9 76 JMP $76E9 ; object command jump table C0/7807: .DW $787B, $7886, $7891, $7A05, $0000, $0000, $78AB, $78B7 C0/7817: .DW $78C4, $78D1, $78DE, $7928, $0000, $0000, $0000, $7A1E C0/7827: .DW $0000, $7A65, $0000, $0000, $0000, $0000, $7A94, $7A9C C0/7837: .DW $0000, $0000, $7AA4, $7969, $7983, $799D, $79B7, $79D1 C0/7847: .DW $79EB, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/7857: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C0/7867: .DW $0000, $0000, $0000, $7ACF, $7B0C, $7B19, $7B26, $7B4B C0/7877: .DW $0000, $7B70 ; [ Object Command $C6: Enable Walking Animation ] C0/787B: B9 68 08 LDA $0868,Y C0/787E: 09 01 ORA #$01 C0/7880: 99 68 08 STA $0868,Y C0/7883: 4C 01 78 JMP $7801 ; [ Object Command $C7: Disable Walking Animation ] C0/7886: B9 68 08 LDA $0868,Y C0/7889: 29 FE AND #$FE C0/788B: 99 68 08 STA $0868,Y C0/788E: 4C 01 78 JMP $7801 ; [ Object Command $C8: Set Sprite Layer Priority ] ; $EB = priority (0..3) C0/7891: A0 01 00 LDY #$0001 C0/7894: B7 2A LDA [$2A],Y C0/7896: 0A ASL C0/7897: 85 1A STA $1A C0/7899: A4 DA LDY $DA C0/789B: B9 68 08 LDA $0868,Y C0/789E: 29 F9 AND #$F9 C0/78A0: 05 1A ORA $1A C0/78A2: 99 68 08 STA $0868,Y C0/78A5: 20 9A 7B JSR $7B9A C0/78A8: 4C 01 78 JMP $7801 ; [ Object Command $CC: Turn Object Up ] C0/78AB: 7B TDC C0/78AC: 99 7F 08 STA $087F,Y C0/78AF: A9 04 LDA #$04 C0/78B1: 99 77 08 STA $0877,Y C0/78B4: 4C 01 78 JMP $7801 ; [ Object Command $CD: Turn Object Right ] C0/78B7: A9 01 LDA #$01 C0/78B9: 99 7F 08 STA $087F,Y C0/78BC: A9 47 LDA #$47 C0/78BE: 99 77 08 STA $0877,Y C0/78C1: 4C 01 78 JMP $7801 ; [ Object Command $CE: Turn Object Down ] C0/78C4: A9 02 LDA #$02 C0/78C6: 99 7F 08 STA $087F,Y C0/78C9: A9 01 LDA #$01 C0/78CB: 99 77 08 STA $0877,Y C0/78CE: 4C 01 78 JMP $7801 ; [ Object Command $CF: Turn Object Left ] C0/78D1: A9 03 LDA #$03 C0/78D3: 99 7F 08 STA $087F,Y C0/78D6: A9 07 LDA #$07 C0/78D8: 99 77 08 STA $0877,Y C0/78DB: 4C 01 78 JMP $7801 ; [ Object Command $D0: Show Object ] C0/78DE: B9 67 08 LDA $0867,Y ; return if object already visible C0/78E1: 30 41 BMI $7924 C0/78E3: 09 80 ORA #$80 C0/78E5: 99 67 08 STA $0867,Y ; make object visible C0/78E8: B9 68 08 LDA $0868,Y ; set sprite layer priority to default C0/78EB: 29 F9 AND #$F9 C0/78ED: 99 68 08 STA $0868,Y C0/78F0: B9 80 08 LDA $0880,Y ; both sprites shown below priority 1 bg C0/78F3: 29 CF AND #$CF C0/78F5: 09 20 ORA #$20 C0/78F7: 99 80 08 STA $0880,Y C0/78FA: B9 81 08 LDA $0881,Y C0/78FD: 29 CF AND #$CF C0/78FF: 09 20 ORA #$20 C0/7901: 99 81 08 STA $0881,Y C0/7904: 5A PHY C0/7905: 8C 04 42 STY $4204 ; get object number C0/7908: A9 29 LDA #$29 C0/790A: 8D 06 42 STA $4206 C0/790D: EA NOP C0/790E: EA NOP C0/790F: EA NOP C0/7910: EA NOP C0/7911: EA NOP C0/7912: EA NOP C0/7913: EA NOP C0/7914: AC 14 42 LDY $4214 C0/7917: C0 10 00 CPY #$0010 C0/791A: B0 08 BCS $7924 ; branch if not a character C0/791C: B9 50 18 LDA $1850,Y ; set character visible flag C0/791F: 09 80 ORA #$80 C0/7921: 99 50 18 STA $1850,Y C0/7924: 7A PLY C0/7925: 4C 01 78 JMP $7801 ; [ Object Command $D1: Hide Object ] C0/7928: B9 67 08 LDA $0867,Y C0/792B: 29 7F AND #$7F C0/792D: 99 67 08 STA $0867,Y C0/7930: 7B TDC C0/7931: 99 7D 08 STA $087D,Y C0/7934: B9 7C 08 LDA $087C,Y C0/7937: 29 F0 AND #$F0 C0/7939: 99 7C 08 STA $087C,Y C0/793C: BE 7A 08 LDX $087A,Y C0/793F: A9 FF LDA #$FF C0/7941: 9F 00 20 7E STA $7E2000,X C0/7945: 5A PHY C0/7946: 8C 04 42 STY $4204 C0/7949: A9 29 LDA #$29 C0/794B: 8D 06 42 STA $4206 C0/794E: EA NOP C0/794F: EA NOP C0/7950: EA NOP C0/7951: EA NOP C0/7952: EA NOP C0/7953: EA NOP C0/7954: EA NOP C0/7955: AC 14 42 LDY $4214 C0/7958: C0 10 00 CPY #$0010 C0/795B: B0 08 BCS $7965 C0/795D: B9 50 18 LDA $1850,Y C0/7960: 29 7F AND #$7F C0/7962: 99 50 18 STA $1850,Y C0/7965: 7A PLY C0/7966: 4C 01 78 JMP $7801 ; [ Object Command $E1: Set Event Bit (+$1E80) ] C0/7969: 5A PHY C0/796A: A0 01 00 LDY #$0001 C0/796D: B7 2A LDA [$2A],Y C0/796F: 20 ED BA JSR $BAED ; get bit pointer C0/7972: B9 80 1E LDA $1E80,Y C0/7975: 1F FC BA C0 ORA $C0BAFC,X C0/7979: 99 80 1E STA $1E80,Y C0/797C: 7A PLY C0/797D: 20 9A 7B JSR $7B9A C0/7980: 4C 01 78 JMP $7801 ; [ Object Command $E2: Set Event Bit (+$1EA0) ] C0/7983: 5A PHY C0/7984: A0 01 00 LDY #$0001 C0/7987: B7 2A LDA [$2A],Y C0/7989: 20 ED BA JSR $BAED ; get bit pointer C0/798C: B9 A0 1E LDA $1EA0,Y C0/798F: 1F FC BA C0 ORA $C0BAFC,X C0/7993: 99 A0 1E STA $1EA0,Y C0/7996: 7A PLY C0/7997: 20 9A 7B JSR $7B9A C0/799A: 4C 01 78 JMP $7801 ; [ Object Command $E3: Set Event Bit (+$1EC0) ] C0/799D: 5A PHY C0/799E: A0 01 00 LDY #$0001 C0/79A1: B7 2A LDA [$2A],Y C0/79A3: 20 ED BA JSR $BAED ; get bit pointer C0/79A6: B9 C0 1E LDA $1EC0,Y C0/79A9: 1F FC BA C0 ORA $C0BAFC,X C0/79AD: 99 C0 1E STA $1EC0,Y C0/79B0: 7A PLY C0/79B1: 20 9A 7B JSR $7B9A C0/79B4: 4C 01 78 JMP $7801 ; [ Object Command $E4: Clear Event Bit (+$1E80) ] C0/79B7: 5A PHY C0/79B8: A0 01 00 LDY #$0001 C0/79BB: B7 2A LDA [$2A],Y C0/79BD: 20 ED BA JSR $BAED ; get bit pointer C0/79C0: B9 80 1E LDA $1E80,Y C0/79C3: 3F 04 BB C0 AND $C0BB04,X C0/79C7: 99 80 1E STA $1E80,Y C0/79CA: 7A PLY C0/79CB: 20 9A 7B JSR $7B9A C0/79CE: 4C 01 78 JMP $7801 ; [ Object Command $E5: Clear Event Bit (+$1EA0) ] C0/79D1: 5A PHY C0/79D2: A0 01 00 LDY #$0001 C0/79D5: B7 2A LDA [$2A],Y C0/79D7: 20 ED BA JSR $BAED ; get bit pointer C0/79DA: B9 A0 1E LDA $1EA0,Y C0/79DD: 3F 04 BB C0 AND $C0BB04,X C0/79E1: 99 A0 1E STA $1EA0,Y C0/79E4: 7A PLY C0/79E5: 20 9A 7B JSR $7B9A C0/79E8: 4C 01 78 JMP $7801 ; [ Object Command $E6: Clear Event Bit (+$1EC0) ] C0/79EB: 5A PHY C0/79EC: A0 01 00 LDY #$0001 C0/79EF: B7 2A LDA [$2A],Y C0/79F1: 20 ED BA JSR $BAED ; get bit pointer C0/79F4: B9 C0 1E LDA $1EC0,Y C0/79F7: 3F 04 BB C0 AND $C0BB04,X C0/79FB: 99 C0 1E STA $1EC0,Y C0/79FE: 7A PLY C0/79FF: 20 9A 7B JSR $7B9A C0/7A02: 4C 01 78 JMP $7801 ; [ Object Command $C9: Set Vehicle ] ; $EB = vvv----- ; v = vehicle (0..7) C0/7A05: A0 01 00 LDY #$0001 C0/7A08: B7 2A LDA [$2A],Y C0/7A0A: 29 E0 AND #$E0 C0/7A0C: 85 1A STA $1A C0/7A0E: A4 DA LDY $DA C0/7A10: B9 68 08 LDA $0868,Y C0/7A13: 05 1A ORA $1A C0/7A15: 99 68 08 STA $0868,Y C0/7A18: 20 9A 7B JSR $7B9A C0/7A1B: 4C 01 78 JMP $7801 ; [ Object Command $D5: Set Position ] C0/7A1E: BE 7A 08 LDX $087A,Y C0/7A21: A9 FF LDA #$FF C0/7A23: 9F 00 20 7E STA $7E2000,X C0/7A27: A0 01 00 LDY #$0001 C0/7A2A: B7 2A LDA [$2A],Y C0/7A2C: C2 20 REP #$20 C0/7A2E: 0A ASL C0/7A2F: 0A ASL C0/7A30: 0A ASL C0/7A31: 0A ASL C0/7A32: 85 1E STA $1E C0/7A34: 7B TDC C0/7A35: E2 20 SEP #$20 C0/7A37: C8 INY C0/7A38: B7 2A LDA [$2A],Y C0/7A3A: A4 DA LDY $DA C0/7A3C: C2 20 REP #$20 C0/7A3E: 0A ASL C0/7A3F: 0A ASL C0/7A40: 0A ASL C0/7A41: 0A ASL C0/7A42: 99 6D 08 STA $086D,Y C0/7A45: A5 1E LDA $1E C0/7A47: 99 6A 08 STA $086A,Y C0/7A4A: E2 20 SEP #$20 C0/7A4C: 7B TDC C0/7A4D: 99 6C 08 STA $086C,Y C0/7A50: 99 69 08 STA $0869,Y C0/7A53: 20 E1 7C JSR $7CE1 ; update pointer to object map data C0/7A56: 20 17 56 JSR $5617 ; update object sprite priority C0/7A59: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7A5C: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7A5F: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7A62: 4C 56 76 JMP $7656 ; [ Object Command $D7: Scroll to Object ] C0/7A65: BE 7A 08 LDX $087A,Y C0/7A68: A9 FF LDA #$FF C0/7A6A: 9F 00 20 7E STA $7E2000,X ; clear object in map data C0/7A6E: C2 20 REP #$20 C0/7A70: AE 03 08 LDX $0803 C0/7A73: BD 6A 08 LDA $086A,X ; set party position C0/7A76: 99 6A 08 STA $086A,Y C0/7A79: BD 6D 08 LDA $086D,X C0/7A7C: 99 6D 08 STA $086D,Y C0/7A7F: 7B TDC C0/7A80: E2 20 SEP #$20 C0/7A82: 99 6C 08 STA $086C,Y ; clear low byte of object position C0/7A85: 99 69 08 STA $0869,Y C0/7A88: 20 E1 7C JSR $7CE1 ; update pointer to object map data C0/7A8B: 20 17 56 JSR $5617 ; update object sprite priority C0/7A8E: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7A91: 4C 56 76 JMP $7656 ; [ Object Command $DC: Jump (low) ] C0/7A94: A9 0F LDA #$0F C0/7A96: 99 87 08 STA $0887,Y C0/7A99: 4C 01 78 JMP $7801 ; [ Object Command $DD: Jump (high) ] C0/7A9C: A9 5F LDA #$5F C0/7A9E: 99 87 08 STA $0887,Y C0/7AA1: 4C 01 78 JMP $7801 ; [ Object Command $E0: Pause ] ; $EB: duration (frames * 4) ; times 4 because each object updates once per 4 frames C0/7AA4: C2 20 REP #$20 C0/7AA6: 7B TDC C0/7AA7: 99 71 08 STA $0871,Y ; clear movement speed C0/7AAA: 99 73 08 STA $0873,Y C0/7AAD: E2 20 SEP #$20 C0/7AAF: C0 B0 07 CPY #$07B0 C0/7AB2: F0 05 BEQ $7AB9 ; branch if camera C0/7AB4: CC 03 08 CPY $0803 C0/7AB7: D0 03 BNE $7ABC ; branch if not showing character C0/7AB9: 20 08 7E JSR $7E08 ; update movement scroll speed C0/7ABC: 5A PHY C0/7ABD: A0 01 00 LDY #$0001 C0/7AC0: B7 2A LDA [$2A],Y ; set pause duration C0/7AC2: 7A PLY C0/7AC3: 99 82 08 STA $0882,Y C0/7AC6: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7AC9: 20 9A 7B JSR $7B9A C0/7ACC: 4C 56 76 JMP $7656 ; next object ; [ Object Command $F9: Jump to Event Script ] C0/7ACF: AD 5E 05 LDA $055E C0/7AD2: D0 35 BNE $7B09 ; branch if a collision is already in progress C0/7AD4: A6 E5 LDX $E5 C0/7AD6: E0 00 00 CPX #$0000 C0/7AD9: D0 2E BNE $7B09 ; branch if an event is running C0/7ADB: A5 E7 LDA $E7 C0/7ADD: C9 CA CMP #$CA C0/7ADF: D0 28 BNE $7B09 C0/7AE1: 5A PHY C0/7AE2: A0 01 00 LDY #$0001 ; copy event address C0/7AE5: B7 2A LDA [$2A],Y C0/7AE7: 85 E5 STA $E5 C0/7AE9: C8 INY C0/7AEA: B7 2A LDA [$2A],Y C0/7AEC: 85 E6 STA $E6 C0/7AEE: C8 INY C0/7AEF: B7 2A LDA [$2A],Y C0/7AF1: 18 CLC C0/7AF2: 69 CA ADC #$CA C0/7AF4: 85 E7 STA $E7 C0/7AF6: A0 03 00 LDY #$0003 C0/7AF9: 8C E8 00 STY $00E8 ; set event stack pointer C0/7AFC: 7A PLY C0/7AFD: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7B00: 20 9A 7B JSR $7B9A C0/7B03: 20 9A 7B JSR $7B9A C0/7B06: 20 9A 7B JSR $7B9A C0/7B09: 4C 56 76 JMP $7656 ; next object ; [ Object Command $FA: Branch Backward (50% chance) ] C0/7B0C: 20 2E 06 JSR $062E ; update random number C0/7B0F: C9 80 CMP #$80 C0/7B11: B0 13 BCS $7B26 ; 1/2 chance to branch C0/7B13: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7B16: 4C 01 78 JMP $7801 ; [ Object Command $FB: Branch Forward (50% chance) ] C0/7B19: 20 2E 06 JSR $062E ; update random number C0/7B1C: C9 80 CMP #$80 C0/7B1E: B0 2B BCS $7B4B ; 1/2 chance to branch C0/7B20: 20 9A 7B JSR $7B9A ; increment object script pointer C0/7B23: 4C 01 78 JMP $7801 ; [ Object Command $FC: Branch Backward ] C0/7B26: A0 01 00 LDY #$0001 C0/7B29: B7 2A LDA [$2A],Y C0/7B2B: 85 1A STA $1A C0/7B2D: A4 DA LDY $DA C0/7B2F: B9 83 08 LDA $0883,Y C0/7B32: 38 SEC C0/7B33: E5 1A SBC $1A C0/7B35: 99 83 08 STA $0883,Y C0/7B38: B9 84 08 LDA $0884,Y C0/7B3B: E9 00 SBC #$00 C0/7B3D: 99 84 08 STA $0884,Y C0/7B40: B9 85 08 LDA $0885,Y C0/7B43: E9 00 SBC #$00 C0/7B45: 99 85 08 STA $0885,Y C0/7B48: 4C E9 76 JMP $76E9 ; [ Object Command $FD: Branch Forward ] C0/7B4B: A0 01 00 LDY #$0001 C0/7B4E: B7 2A LDA [$2A],Y C0/7B50: 85 1A STA $1A C0/7B52: A4 DA LDY $DA C0/7B54: B9 83 08 LDA $0883,Y C0/7B57: 18 CLC C0/7B58: 65 1A ADC $1A C0/7B5A: 99 83 08 STA $0883,Y C0/7B5D: B9 84 08 LDA $0884,Y C0/7B60: 69 00 ADC #$00 C0/7B62: 99 84 08 STA $0884,Y C0/7B65: B9 85 08 LDA $0885,Y C0/7B68: 69 00 ADC #$00 C0/7B6A: 99 85 08 STA $0885,Y C0/7B6D: 4C E9 76 JMP $76E9 ; [ Object Command $FF: End of Script ] C0/7B70: 7B TDC C0/7B71: 99 85 08 STA $0885,Y ; clear script pointer (bank byte) C0/7B74: B9 7C 08 LDA $087C,Y C0/7B77: 29 F0 AND #$F0 C0/7B79: 99 7C 08 STA $087C,Y ; clear movement type C0/7B7C: C2 20 REP #$20 C0/7B7E: 7B TDC C0/7B7F: 99 71 08 STA $0871,Y ; clear movement speed C0/7B82: 99 73 08 STA $0873,Y C0/7B85: 99 83 08 STA $0883,Y ; clear script pointer C0/7B88: E2 20 SEP #$20 C0/7B8A: C0 B0 07 CPY #$07B0 C0/7B8D: F0 05 BEQ $7B94 ; branch if camera C0/7B8F: CC 03 08 CPY $0803 C0/7B92: D0 03 BNE $7B97 ; branch if not showing character C0/7B94: 20 08 7E JSR $7E08 ; update movement scroll speed C0/7B97: 4C 56 76 JMP $7656 ; next object ; [ Increment Object Script Pointer ] C0/7B9A: C2 21 REP #$21 C0/7B9C: B9 83 08 LDA $0883,Y C0/7B9F: 69 01 00 ADC #$0001 C0/7BA2: 99 83 08 STA $0883,Y C0/7BA5: 7B TDC C0/7BA6: E2 20 SEP #$20 C0/7BA8: B9 85 08 LDA $0885,Y C0/7BAB: 69 00 ADC #$00 C0/7BAD: 99 85 08 STA $0885,Y C0/7BB0: 60 RTS ; [ Do Random Object Movement ] naritaObjEvent::randam_dir: C0/7BB1: 20 2E 06 JSR $062E ; update random number C0/7BB4: 29 03 AND #$03 ; movement direction = (1..4) C0/7BB6: 1A INC C0/7BB7: 85 B3 STA $B3 C0/7BB9: 20 03 7D JSR $7D03 ; get pointer to object map data in facing direction C0/7BBC: A6 1E LDX $1E C0/7BBE: BF 00 20 7E LDA $7E2000,X ; return if there's an object there C0/7BC2: 10 5B BPL $7C1F C0/7BC4: BF 00 00 7F LDA $7F0000,X ; bg1 tile C0/7BC8: AA TAX C0/7BC9: BF 00 77 7E LDA $7E7700,X ; branch if NPC can't randomly move here C0/7BCD: 10 50 BPL $7C1F C0/7BCF: B9 88 08 LDA $0888,Y ; object z-level C0/7BD2: 3A DEC C0/7BD3: D0 16 BNE $7BEB ; branch if not upper z-level ; object is upper z-level C0/7BD5: BF 00 76 7E LDA $7E7600,X ; tile z-level C0/7BD9: 29 07 AND #$07 C0/7BDB: C9 01 CMP #$01 C0/7BDD: F0 16 BEQ $7BF5 ; branch if tile is upper z-level C0/7BDF: BF 00 76 7E LDA $7E7600,X C0/7BE3: 29 07 AND #$07 C0/7BE5: C9 04 CMP #$04 C0/7BE7: F0 0C BEQ $7BF5 C0/7BE9: 80 34 BRA $7C1F ; return if a bridge tile ; object is lower z-level C0/7BEB: BF 00 76 7E LDA $7E7600,X ; tile z-level C0/7BEF: 29 07 AND #$07 C0/7BF1: C9 02 CMP #$02 C0/7BF3: D0 2A BNE $7C1F ; return if tile is not lower z-level C0/7BF5: 20 A9 7C JSR $7CA9 ; update object layer priority at destination tile C0/7BF8: 8C 04 42 STY $4204 C0/7BFB: A9 29 LDA #$29 C0/7BFD: 8D 06 42 STA $4206 C0/7C00: EA NOP C0/7C01: EA NOP C0/7C02: EA NOP C0/7C03: EA NOP C0/7C04: EA NOP C0/7C05: EA NOP C0/7C06: EA NOP C0/7C07: EA NOP C0/7C08: AD 14 42 LDA $4214 ; object number C0/7C0B: 0A ASL C0/7C0C: A6 1E LDX $1E C0/7C0E: 9F 00 20 7E STA $7E2000,X ; put object at new location in map data C0/7C12: A5 B3 LDA $B3 C0/7C14: 99 7E 08 STA $087E,Y ; set movement direction C0/7C17: 3A DEC C0/7C18: 99 7F 08 STA $087F,Y ; set facing direction C0/7C1B: 20 77 7E JSR $7E77 ; update object movement speed C0/7C1E: 60 RTS ; stop object and return C0/7C1F: 7B TDC C0/7C20: 99 71 08 STA $0871,Y C0/7C23: 99 72 08 STA $0872,Y C0/7C26: 99 73 08 STA $0873,Y C0/7C29: 99 74 08 STA $0874,Y C0/7C2C: 60 RTS ; [ Update Object Layer Priority (based on current tile) ] naritaObjEvent::obj_prio_after: C0/7C2D: B9 68 08 LDA $0868,Y ; sprite layer priority C0/7C30: 29 06 AND #$06 C0/7C32: D0 35 BNE $7C69 C0/7C34: BE 7A 08 LDX $087A,Y ; pointer to map data C0/7C37: BF 00 00 7F LDA $7F0000,X ; bg1 tile C0/7C3B: AA TAX C0/7C3C: BF 00 76 7E LDA $7E7600,X ; tile properties C0/7C40: C9 F7 CMP #$F7 C0/7C42: F0 50 BEQ $7C94 ; branch if tile is impassable C0/7C44: 29 04 AND #$04 C0/7C46: D0 4C BNE $7C94 ; branch if tile is a bridge tile C0/7C48: BF 00 76 7E LDA $7E7600,X C0/7C4C: 29 08 AND #$08 C0/7C4E: F0 08 BEQ $7C58 ; branch if top sprite isn't shown above priority 1 bg C0/7C50: B9 80 08 LDA $0880,Y ; top sprite shown above priority 1 bg C0/7C53: 09 30 ORA #$30 C0/7C55: 99 80 08 STA $0880,Y C0/7C58: BF 00 76 7E LDA $7E7600,X ; C0/7C5C: 29 10 AND #$10 C0/7C5E: F0 08 BEQ $7C68 C0/7C60: B9 81 08 LDA $0881,Y C0/7C63: 09 30 ORA #$30 C0/7C65: 99 81 08 STA $0881,Y C0/7C68: 60 RTS naritaObjEvent::set_fixed_prio: ; i think... C0/7C69: 4A LSR C0/7C6A: 3A DEC C0/7C6B: D0 13 BNE $7C80 ; branch if not priority 1 C0/7C6D: B9 80 08 LDA $0880,Y C0/7C70: 09 30 ORA #$30 C0/7C72: 99 80 08 STA $0880,Y C0/7C75: B9 81 08 LDA $0881,Y C0/7C78: 29 CF AND #$CF C0/7C7A: 09 20 ORA #$20 C0/7C7C: 99 81 08 STA $0881,Y C0/7C7F: 60 RTS C0/7C80: 3A DEC C0/7C81: D0 11 BNE $7C94 ; branch if not priority 2 C0/7C83: B9 80 08 LDA $0880,Y C0/7C86: 09 30 ORA #$30 C0/7C88: 99 80 08 STA $0880,Y C0/7C8B: B9 81 08 LDA $0881,Y C0/7C8E: 09 30 ORA #$30 C0/7C90: 99 81 08 STA $0881,Y C0/7C93: 60 RTS C0/7C94: B9 80 08 LDA $0880,Y C0/7C97: 29 CF AND #$CF C0/7C99: 09 20 ORA #$20 C0/7C9B: 99 80 08 STA $0880,Y C0/7C9E: B9 81 08 LDA $0881,Y C0/7CA1: 29 CF AND #$CF C0/7CA3: 09 20 ORA #$20 C0/7CA5: 99 81 08 STA $0881,Y C0/7CA8: 60 RTS ; [ Update Object Layer Priority (based on destination tile) ] ; X = bg1 tile index naritaObjEvent::obj_prio_before: C0/7CA9: B9 68 08 LDA $0868,Y ; object sprite layer priority C0/7CAC: 29 06 AND #$06 C0/7CAE: D0 B9 BNE $7C69 C0/7CB0: BF 00 76 7E LDA $7E7600,X C0/7CB4: C9 F7 CMP #$F7 C0/7CB6: F0 DC BEQ $7C94 C0/7CB8: 29 04 AND #$04 C0/7CBA: D0 D8 BNE $7C94 C0/7CBC: BF 00 76 7E LDA $7E7600,X C0/7CC0: 29 08 AND #$08 C0/7CC2: D0 0A BNE $7CCE C0/7CC4: B9 80 08 LDA $0880,Y C0/7CC7: 29 CF AND #$CF C0/7CC9: 09 20 ORA #$20 C0/7CCB: 99 80 08 STA $0880,Y C0/7CCE: BF 00 76 7E LDA $7E7600,X C0/7CD2: 29 10 AND #$10 C0/7CD4: D0 0A BNE $7CE0 C0/7CD6: B9 81 08 LDA $0881,Y C0/7CD9: 29 CF AND #$CF C0/7CDB: 09 20 ORA #$20 C0/7CDD: 99 81 08 STA $0881,Y C0/7CE0: 60 RTS ; [ Update Pointer to Object Map Data ] naritaObjEvent::calc_atr_adrs: C0/7CE1: C2 20 REP #$20 C0/7CE3: B9 6A 08 LDA $086A,Y ; x position C0/7CE6: 4A LSR C0/7CE7: 4A LSR C0/7CE8: 4A LSR C0/7CE9: 4A LSR C0/7CEA: E2 20 SEP #$20 C0/7CEC: 25 86 AND $86 ; bg1 x clip C0/7CEE: 99 7A 08 STA $087A,Y ; low byte of object map data pointer C0/7CF1: C2 20 REP #$20 C0/7CF3: B9 6D 08 LDA $086D,Y ; y position C0/7CF6: 4A LSR C0/7CF7: 4A LSR C0/7CF8: 4A LSR C0/7CF9: 4A LSR C0/7CFA: E2 20 SEP #$20 C0/7CFC: 25 87 AND $87 ; bg1 y clip C0/7CFE: 99 7B 08 STA $087B,Y ; high byte of object map data pointer C0/7D01: 7B TDC C0/7D02: 60 RTS ; [ Get Pointer to Object Map Data in Facing Direction ] ; A = facing direction + 1 ; +$1E = pointer to object map data in facing direction (out) C0/7D03: AA TAX C0/7D04: 20 E1 7C JSR $7CE1 ; update pointer to object map data C0/7D07: B9 7A 08 LDA $087A,Y C0/7D0A: 18 CLC C0/7D0B: 7F 20 7D C0 ADC $C07D20,X C0/7D0F: 25 86 AND $86 C0/7D11: 85 1E STA $1E C0/7D13: B9 7B 08 LDA $087B,Y C0/7D16: 18 CLC C0/7D17: 7F 25 7D C0 ADC $C07D25,X C0/7D1B: 25 87 AND $87 C0/7D1D: 85 1F STA $1F C0/7D1F: 60 RTS C0/7D20: .DB $00, $00, $01, $00, $FF C0/7D25: .DB $00, $FF, $00, $01, $00 ; [ Update BG2/BG3 Movement Scroll Speed ] naritaObjEvent::calc_bg23_vector: C0/7D2A: A6 73 LDX $73 ; bg1 h-scroll speed C0/7D2C: 30 32 BMI $7D60 ; branch if negative C0/7D2E: C2 20 REP #$20 C0/7D30: 8A TXA C0/7D31: 4A LSR C0/7D32: 4A LSR C0/7D33: 4A LSR C0/7D34: 4A LSR C0/7D35: E2 20 SEP #$20 C0/7D37: 8D 02 42 STA $4202 C0/7D3A: AD 53 05 LDA $0553 ; bg2 h-scroll multiplier C0/7D3D: 8D 03 42 STA $4203 C0/7D40: EA NOP C0/7D41: EA NOP C0/7D42: C2 20 REP #$20 C0/7D44: AD 16 42 LDA $4216 C0/7D47: 85 77 STA $77 ; set bg2 h-scroll speed C0/7D49: 7B TDC C0/7D4A: E2 20 SEP #$20 C0/7D4C: AD 55 05 LDA $0555 ; bg3 h-scroll multiplier C0/7D4F: 8D 03 42 STA $4203 C0/7D52: EA NOP C0/7D53: EA NOP C0/7D54: C2 20 REP #$20 C0/7D56: AD 16 42 LDA $4216 C0/7D59: 85 7B STA $7B ; set bg3 h-scroll speed C0/7D5B: 7B TDC C0/7D5C: E2 20 SEP #$20 C0/7D5E: 80 39 BRA $7D99 C0/7D60: C2 20 REP #$20 C0/7D62: 8A TXA C0/7D63: 45 02 EOR $02 C0/7D65: 1A INC C0/7D66: 4A LSR C0/7D67: 4A LSR C0/7D68: 4A LSR C0/7D69: 4A LSR C0/7D6A: E2 20 SEP #$20 C0/7D6C: 8D 02 42 STA $4202 C0/7D6F: AD 53 05 LDA $0553 C0/7D72: 8D 03 42 STA $4203 C0/7D75: EA NOP C0/7D76: EA NOP C0/7D77: C2 20 REP #$20 C0/7D79: AD 16 42 LDA $4216 C0/7D7C: 45 02 EOR $02 C0/7D7E: 1A INC C0/7D7F: 85 77 STA $77 C0/7D81: 7B TDC C0/7D82: E2 20 SEP #$20 C0/7D84: AD 55 05 LDA $0555 C0/7D87: 8D 03 42 STA $4203 C0/7D8A: EA NOP C0/7D8B: EA NOP C0/7D8C: C2 20 REP #$20 C0/7D8E: AD 16 42 LDA $4216 C0/7D91: 45 02 EOR $02 C0/7D93: 1A INC C0/7D94: 85 7B STA $7B C0/7D96: 7B TDC C0/7D97: E2 20 SEP #$20 C0/7D99: A6 75 LDX $75 ; bg1 v-scroll speed C0/7D9B: 30 31 BMI $7DCE ; branch if negative C0/7D9D: C2 20 REP #$20 C0/7D9F: 8A TXA C0/7DA0: 4A LSR C0/7DA1: 4A LSR C0/7DA2: 4A LSR C0/7DA3: 4A LSR C0/7DA4: E2 20 SEP #$20 C0/7DA6: 8D 02 42 STA $4202 C0/7DA9: AD 54 05 LDA $0554 C0/7DAC: 8D 03 42 STA $4203 C0/7DAF: EA NOP C0/7DB0: EA NOP C0/7DB1: C2 20 REP #$20 C0/7DB3: AD 16 42 LDA $4216 C0/7DB6: 85 79 STA $79 C0/7DB8: 7B TDC C0/7DB9: E2 20 SEP #$20 C0/7DBB: AD 56 05 LDA $0556 C0/7DBE: 8D 03 42 STA $4203 C0/7DC1: EA NOP C0/7DC2: EA NOP C0/7DC3: C2 20 REP #$20 C0/7DC5: AD 16 42 LDA $4216 C0/7DC8: 85 7D STA $7D C0/7DCA: 7B TDC C0/7DCB: E2 20 SEP #$20 C0/7DCD: 60 RTS C0/7DCE: C2 20 REP #$20 C0/7DD0: 8A TXA C0/7DD1: 45 02 EOR $02 C0/7DD3: 1A INC C0/7DD4: 4A LSR C0/7DD5: 4A LSR C0/7DD6: 4A LSR C0/7DD7: 4A LSR C0/7DD8: E2 20 SEP #$20 C0/7DDA: 8D 02 42 STA $4202 C0/7DDD: AD 54 05 LDA $0554 C0/7DE0: 8D 03 42 STA $4203 C0/7DE3: EA NOP C0/7DE4: EA NOP C0/7DE5: C2 20 REP #$20 C0/7DE7: AD 16 42 LDA $4216 C0/7DEA: 45 02 EOR $02 C0/7DEC: 1A INC C0/7DED: 85 79 STA $79 C0/7DEF: 7B TDC C0/7DF0: E2 20 SEP #$20 C0/7DF2: AD 56 05 LDA $0556 C0/7DF5: 8D 03 42 STA $4203 C0/7DF8: EA NOP C0/7DF9: EA NOP C0/7DFA: C2 20 REP #$20 C0/7DFC: AD 16 42 LDA $4216 C0/7DFF: 45 02 EOR $02 C0/7E01: 1A INC C0/7E02: 85 7D STA $7D C0/7E04: 7B TDC C0/7E05: E2 20 SEP #$20 C0/7E07: 60 RTS ; [ Update Movement Scroll Speed ] naritaObjEvent::calc_bg_vector: C0/7E08: AD 59 05 LDA $0559 ; branch if screen is not locked C0/7E0B: F0 13 BEQ $7E20 C0/7E0D: C0 B0 07 CPY #$07B0 ; return if not the camera C0/7E10: D0 0D BNE $7E1F C0/7E12: AE 21 10 LDX $1021 ; ($0871 + $07B0) C0/7E15: 86 73 STX $73 ; set horizontal scroll speed C0/7E17: AE 23 10 LDX $1023 ; ($0873 + $07B0) C0/7E1A: 86 75 STX $75 ; set vertical scroll speed C0/7E1C: 20 2A 7D JSR $7D2A C0/7E1F: 60 RTS C0/7E20: AC 03 08 LDY $0803 C0/7E23: AD 2D 06 LDA $062D ; max horizontal scroll position C0/7E26: C9 FF CMP #$FF C0/7E28: F0 12 BEQ $7E3C ; branch if no max C0/7E2A: A5 AF LDA $AF C0/7E2C: BE 71 08 LDX $0871,Y ; party horizontal scroll speed C0/7E2F: 10 01 BPL $7E32 C0/7E31: 3A DEC C0/7E32: CD 2C 06 CMP $062C ; branch if less than the minimum C0/7E35: 90 0C BCC $7E43 C0/7E37: CD 2D 06 CMP $062D ; branch if greater than the maximum C0/7E3A: B0 07 BCS $7E43 C0/7E3C: BE 71 08 LDX $0871,Y ; party horizontal movement speed C0/7E3F: 86 73 STX $73 ; set horizontal scroll speed C0/7E41: 80 08 BRA $7E4B C0/7E43: A6 00 LDX $00 C0/7E45: 86 73 STX $73 C0/7E47: 86 77 STX $77 C0/7E49: 86 7B STX $7B C0/7E4B: AD 2F 06 LDA $062F ; max vertical scroll position C0/7E4E: C9 FF CMP #$FF C0/7E50: F0 12 BEQ $7E64 ; branch if no max C0/7E52: A5 B0 LDA $B0 C0/7E54: BE 73 08 LDX $0873,Y C0/7E57: 10 01 BPL $7E5A C0/7E59: 3A DEC C0/7E5A: CD 2E 06 CMP $062E C0/7E5D: 90 0C BCC $7E6B C0/7E5F: CD 2F 06 CMP $062F C0/7E62: B0 07 BCS $7E6B C0/7E64: BE 73 08 LDX $0873,Y C0/7E67: 86 75 STX $75 C0/7E69: 80 08 BRA $7E73 C0/7E6B: A6 00 LDX $00 C0/7E6D: 86 75 STX $75 C0/7E6F: 86 79 STX $79 C0/7E71: 86 7D STX $7D C0/7E73: 20 2A 7D JSR $7D2A C0/7E76: 60 RTS ; [ Update Object Movement Speed ] naritaObjEvent::calc_vector: C0/7E77: B9 75 08 LDA $0875,Y ; object speed C0/7E7A: AA TAX C0/7E7B: BF CA 7E C0 LDA $C07ECA,X ; speed multiplier C0/7E7F: 85 1B STA $1B C0/7E81: B9 7E 08 LDA $087E,Y ; movement direction C0/7E84: 3A DEC C0/7E85: 0A ASL C0/7E86: AA TAX C0/7E87: BF D4 7E C0 LDA $C07ED4,X C0/7E8B: 8D 02 42 STA $4202 C0/7E8E: A5 1B LDA $1B C0/7E90: 8D 03 42 STA $4203 C0/7E93: EA NOP C0/7E94: EA NOP C0/7E95: EA NOP C0/7E96: C2 20 REP #$20 C0/7E98: AD 16 42 LDA $4216 C0/7E9B: 5F F4 7E C0 EOR $C07EF4,X C0/7E9F: 10 01 BPL $7EA2 C0/7EA1: 1A INC C0/7EA2: 99 71 08 STA $0871,Y C0/7EA5: 7B TDC C0/7EA6: E2 20 SEP #$20 C0/7EA8: BF 14 7F C0 LDA $C07F14,X C0/7EAC: 8D 02 42 STA $4202 C0/7EAF: A5 1B LDA $1B C0/7EB1: 8D 03 42 STA $4203 C0/7EB4: EA NOP C0/7EB5: EA NOP C0/7EB6: EA NOP C0/7EB7: C2 20 REP #$20 C0/7EB9: AD 16 42 LDA $4216 C0/7EBC: 5F 34 7F C0 EOR $C07F34,X C0/7EC0: 10 01 BPL $7EC3 C0/7EC2: 1A INC C0/7EC3: 99 73 08 STA $0873,Y C0/7EC6: 7B TDC C0/7EC7: E2 20 SEP #$20 C0/7EC9: 60 RTS ; object movement speed multipliers C0/7ECA: .DB $01, $02, $04, $08, $10, $20, $10, $08, $04, $02 ; horizontal movement speeds for each movement direction C0/7ED4: .DW $0000, $0040, $0000, $0040, $0040, $0040, $0040, $0040 C0/7EE4: .DW $0020, $0040, $0040, $0020, $0020, $0040, $0040, $0020 ; horizontal speed masks for each movement direction C0/7EF4: .DW $0000, $0000, $0000, $FFFF, $0000, $0000, $FFFF, $FFFF C0/7F04: .DW $0000, $0000, $0000, $0000, $FFFF, $FFFF, $FFFF, $FFFF ; vertical movement speeds for each movement direction C0/7F14: .DW $0040, $0000, $0040, $0000, $0040, $0040, $0040, $0040 C0/7F24: .DW $0040, $0020, $0020, $0040, $0040, $0020, $0020, $0040 ; vertical speed masks for each movement direction C0/7F34: .DW $FFFF, $0000, $0000, $0000, $FFFF, $0000, $0000, $FFFF C0/7F44: .DW $FFFF, $FFFF, $0000, $0000, $0000, $0000, $FFFF, $FFFF ; corresponding facing directions for each movement direction C0/7F54: .DB $00, $01, $02, $03, $01, $01, $03, $03, $00, $01, $01, $02, $02, $03, $03, $00 ; ----------------------------------------[ Field: Dialog Text ]---------------------------------------- ; [ Init Dialog Text ] init_message: C0/7F64: 9C 68 05 STZ $0568 ; dialog flags C0/7F67: 64 C5 STZ $C5 ; line number C0/7F69: 64 CC STZ $CC ; dialog window region C0/7F6B: 64 D3 STZ $D3 ; keypress state C0/7F6D: 64 C9 STZ $C9 ; dialog pointer C0/7F6F: 64 CA STZ $CA C0/7F71: A9 CD LDA #$CD C0/7F73: 85 CB STA $CB C0/7F75: 9C 6D 05 STZ $056D ; multiple choice selection is not changing C0/7F78: 9C 6E 05 STZ $056E ; clear current multiple choice selection C0/7F7B: 9C 6F 05 STZ $056F ; clear maximum multiple choice selection C0/7F7E: 9C 82 05 STZ $0582 ; disable multiple choice cursor update C0/7F81: 64 D0 STZ $D0 ; dialog index C0/7F83: 64 D1 STZ $D1 C0/7F85: A9 80 LDA #$80 ; text buffer is empty C0/7F87: 85 CF STA $CF C0/7F89: A6 00 LDX $00 ; set VRAM pointers to beginning of line 1 C0/7F8B: 86 C1 STX $C1 C0/7F8D: 86 C3 STX $C3 C0/7F8F: 8E 69 05 STX $0569 ; pause counter C0/7F92: 8E 6B 05 STX $056B ; keypress counter C0/7F95: A2 00 07 LDX #$0700 ; unused C0/7F98: 86 C6 STX $C6 C0/7F9A: A9 04 LDA #$04 ; current x position on dialog window C0/7F9C: 85 BF STA $BF C0/7F9E: 64 C0 STZ $C0 ; width of current word C0/7FA0: A9 E0 LDA #$E0 ; max x position on dialog window C0/7FA2: 85 C8 STA $C8 C0/7FA4: A2 03 90 LDX #$9003 ; clear current character graphics buffer C0/7FA7: 8E 81 21 STX $2181 C0/7FAA: A9 7E LDA #$7E C0/7FAC: 8D 83 21 STA $2183 C0/7FAF: A2 80 00 LDX #$0080 C0/7FB2: 9C 80 21 STZ $2180 C0/7FB5: CA DEX C0/7FB6: D0 FA BNE $7FB2 C0/7FB8: 20 A9 88 JSR $88A9 ; clear text graphics buffer C0/7FBB: 20 7E 85 JSR $857E ; clear all dialog text graphics in VRAM C0/7FBE: 60 RTS ; [ Update Pointer to Current Dialog Item ] set_message_adrs: C0/7FBF: A9 CD LDA #$CD ; bank byte C0/7FC1: 85 CB STA $CB C0/7FC3: C2 20 REP #$20 C0/7FC5: A5 D0 LDA $D0 ; dialog index C0/7FC7: 0A ASL C0/7FC8: AA TAX C0/7FC9: BF 02 E6 CC LDA $CCE602,X ; pointer to dialog item C0/7FCD: 85 C9 STA $C9 C0/7FCF: A5 D0 LDA $D0 ; dialog index C0/7FD1: CF 00 E6 CC CMP $CCE600 ; first dialog item in next bank C0/7FD5: 90 05 BCC $7FDC ; branch if less C0/7FD7: 7B TDC C0/7FD8: E2 20 SEP #$20 C0/7FDA: E6 CB INC $CB ; increment bank byte C0/7FDC: 7B TDC C0/7FDD: E2 20 SEP #$20 C0/7FDF: A9 01 LDA #$01 ; enable dialog display C0/7FE1: 8D 68 05 STA $0568 C0/7FE4: 60 RTS ; [ Display Map Name ] disp_map_name: C0/7FE5: 9C 67 05 STZ $0567 ; clear map name dialog counter C0/7FE8: AD B9 1E LDA $1EB9 C0/7FEB: 29 40 AND #$40 ; return if party switching is enabled C0/7FED: D0 05 BNE $7FF4 C0/7FEF: AD 45 07 LDA $0745 ; return if map name dialog is disabled C0/7FF2: D0 04 BNE $7FF8 C0/7FF4: 9C 45 07 STZ $0745 C0/7FF7: 60 RTS C0/7FF8: A9 64 LDA #$64 ; set counter to 100 frames C0/7FFA: 8D 67 05 STA $0567 C0/7FFD: A9 CE LDA #$CE ; get pointer to map name C0/7FFF: 85 CB STA $CB C0/8001: AD 20 05 LDA $0520 C0/8004: 0A ASL C0/8005: AA TAX C0/8006: C2 21 REP #$21 C0/8008: BF 00 84 E6 LDA $E68400,X C0/800C: 69 00 F1 ADC #$F100 C0/800F: 85 C9 STA $C9 C0/8011: 7B TDC C0/8012: E2 20 SEP #$20 C0/8014: 64 C0 STZ $C0 ; clear width of current word C0/8016: A4 00 LDY $00 C0/8018: B7 C9 LDA [$C9],Y ; get next character C0/801A: F0 0D BEQ $8029 ; branch if end of string C0/801C: AA TAX C0/801D: BF C0 8F C4 LDA $C48FC0,X ; get character width C0/8021: 18 CLC C0/8022: 65 C0 ADC $C0 ; add to width of current word C0/8024: 85 C0 STA $C0 C0/8026: C8 INY ; next character C0/8027: 80 EF BRA $8018 C0/8029: A9 E0 LDA #$E0 ; $BF = ($E0 - width) / 2 C0/802B: 38 SEC ; text centered in dialog window C0/802C: E5 C0 SBC $C0 C0/802E: 4A LSR C0/802F: 85 BF STA $BF C0/8031: A8 TAY ; $C1 = ($BF / 16) * 32 C0/8032: 8C 04 42 STY $4204 ; pointer to VRAM, rounded down to nearest tile C0/8035: A9 10 LDA #$10 C0/8037: 8D 06 42 STA $4206 C0/803A: EA NOP C0/803B: EA NOP C0/803C: EA NOP C0/803D: EA NOP C0/803E: EA NOP C0/803F: EA NOP C0/8040: EA NOP C0/8041: AD 14 42 LDA $4214 C0/8044: 8D 02 42 STA $4202 C0/8047: A9 20 LDA #$20 C0/8049: 8D 03 42 STA $4203 C0/804C: EA NOP C0/804D: EA NOP C0/804E: EA NOP C0/804F: AC 16 42 LDY $4216 C0/8052: 84 C1 STY $C1 C0/8054: 20 4D 82 JSR $824D ; update dialog text (one tile) C0/8057: 20 09 86 JSR $8609 ; copy dialog text graphics to VRAM C0/805A: AD 68 05 LDA $0568 ; branch until complete C0/805D: 10 F5 BPL $8054 C0/805F: 64 D3 STZ $D3 ; keypress state C0/8061: 64 CC STZ $CC ; text region (will not erase text) C0/8063: 20 A8 2E JSR $2EA8 ; open map name dialog window C0/8066: 60 RTS ; [ Calculate Width of Current Word ] ; $C0 = calculated width C0/8067: A5 CF LDA $CF ; save text buffer position C0/8069: 48 PHA C0/806A: A5 CB LDA $CB ; save pointer to current dialog character C0/806C: 48 PHA C0/806D: A6 C9 LDX $C9 C0/806F: DA PHX C0/8070: 64 C0 STZ $C0 ; width = 0 C0/8072: A4 00 LDY $00 C0/8074: B7 C9 LDA [$C9],Y ; load first letter C0/8076: 10 38 BPL $80B0 ; branch if not DTE C0/8078: 29 7F AND #$7F C0/807A: 0A ASL C0/807B: AA TAX C0/807C: A5 CF LDA $CF C0/807E: C9 80 CMP #$80 C0/8080: F0 06 BEQ $8088 C0/8082: A9 80 LDA #$80 C0/8084: 85 CF STA $CF C0/8086: 80 14 BRA $809C C0/8088: BF A0 DF C0 LDA $C0DFA0,X ; first DTE letter C0/808C: C9 7F CMP #$7F C0/808E: F0 42 BEQ $80D2 C0/8090: DA PHX C0/8091: AA TAX C0/8092: BF C0 8F C4 LDA $C48FC0,X ; width += letter width C0/8096: 18 CLC C0/8097: 65 C0 ADC $C0 C0/8099: 85 C0 STA $C0 C0/809B: FA PLX C0/809C: BF A1 DF C0 LDA $C0DFA1,X ; second DTE letter C0/80A0: C9 7F CMP #$7F C0/80A2: F0 2E BEQ $80D2 C0/80A4: AA TAX C0/80A5: BF C0 8F C4 LDA $C48FC0,X ; width += letter width C0/80A9: 18 CLC C0/80AA: 65 C0 ADC $C0 C0/80AC: 85 C0 STA $C0 C0/80AE: 80 16 BRA $80C6 C0/80B0: A4 00 LDY $00 C0/80B2: B7 C9 LDA [$C9],Y C0/80B4: C9 20 CMP #$20 C0/80B6: 90 24 BCC $80DC ; branch if a special letter C0/80B8: C9 7F CMP #$7F C0/80BA: F0 16 BEQ $80D2 ; return if a space C0/80BC: AA TAX C0/80BD: BF C0 8F C4 LDA $C48FC0,X ; width += character width C0/80C1: 18 CLC C0/80C2: 65 C0 ADC $C0 C0/80C4: 85 C0 STA $C0 C0/80C6: E6 C9 INC $C9 ; next character C0/80C8: D0 A8 BNE $8072 C0/80CA: E6 CA INC $CA C0/80CC: D0 A4 BNE $8072 C0/80CE: E6 CB INC $CB C0/80D0: 80 A0 BRA $8072 C0/80D2: FA PLX ; restore dialog pointer and text buffer position and return C0/80D3: 86 C9 STX $C9 C0/80D5: 68 PLA C0/80D6: 85 CB STA $CB C0/80D8: 68 PLA C0/80D9: 85 CF STA $CF C0/80DB: 60 RTS C0/80DC: C9 1A CMP #$1A ; branch if item name C0/80DE: F0 38 BEQ $8118 C0/80E0: C9 02 CMP #$02 ; return if end of message or new line C0/80E2: 90 EE BCC $80D2 C0/80E4: C9 10 CMP #$10 ; return if not a character name C0/80E6: B0 EA BCS $80D2 C0/80E8: 3A DEC ; decrement to get character index C0/80E9: 3A DEC C0/80EA: 8D 02 42 STA $4202 C0/80ED: A9 25 LDA #$25 ; get pointer to character data C0/80EF: 8D 03 42 STA $4203 C0/80F2: A5 CF LDA $CF ; return if text buffer is not empty C0/80F4: 10 DC BPL $80D2 C0/80F6: A9 06 LDA #$06 ; six letters C0/80F8: 85 1A STA $1A C0/80FA: AC 16 42 LDY $4216 C0/80FD: B9 02 16 LDA $1602,Y ; get letter C0/8100: C9 FF CMP #$FF C0/8102: F0 CE BEQ $80D2 ; return if no letter C0/8104: 38 SEC C0/8105: E9 60 SBC #$60 ; convert to dialog text C0/8107: AA TAX C0/8108: BF C0 8F C4 LDA $C48FC0,X ; width += letter width C0/810C: 18 CLC C0/810D: 65 C0 ADC $C0 C0/810F: 85 C0 STA $C0 C0/8111: C8 INY ; next letter C0/8112: C6 1A DEC $1A ; return after 6 letters C0/8114: D0 E7 BNE $80FD C0/8116: 80 BA BRA $80D2 C0/8118: AD 83 05 LDA $0583 ; item index C0/811B: 8D 02 42 STA $4202 C0/811E: A9 0D LDA #$0D ; get pointer to item name C0/8120: 8D 03 42 STA $4203 C0/8123: A5 CF LDA $CF ; return if text buffer is not empty C0/8125: 10 AB BPL $80D2 C0/8127: A9 0C LDA #$0C ; 12 letters C0/8129: 85 1A STA $1A C0/812B: AE 16 42 LDX $4216 C0/812E: 9B TXY C0/812F: BF 01 B3 D2 LDA $D2B301,X ; item name C0/8133: C9 FF CMP #$FF ; return if no letter C0/8135: F0 9B BEQ $80D2 C0/8137: 38 SEC C0/8138: E9 60 SBC #$60 ; convert to dialog text C0/813A: AA TAX C0/813B: BF C0 8F C4 LDA $C48FC0,X ; width += letter width C0/813F: 18 CLC C0/8140: 65 C0 ADC $C0 C0/8142: 85 C0 STA $C0 C0/8144: BB TYX C0/8145: E8 INX ; next letter C0/8146: C6 1A DEC $1A ; return after 12 letters C0/8148: D0 E4 BNE $812E C0/814A: 80 86 BRA $80D2 ; [ Update Dialog Text ] message: C0/814C: C2 20 REP #$20 C0/814E: A5 00 LDA $00 ; set font shadow color to black C0/8150: 8F 04 72 7E STA $7E7204 C0/8154: 8F 04 74 7E STA $7E7404 C0/8158: AD 55 1D LDA $1D55 ; set font color C0/815B: 8F 02 72 7E STA $7E7202 C0/815F: 8F 02 74 7E STA $7E7402 C0/8163: 8F 06 72 7E STA $7E7206 C0/8167: 8F 06 74 7E STA $7E7406 C0/816B: 7B TDC C0/816C: E2 20 SEP #$20 C0/816E: AD 67 05 LDA $0567 ; decrement counter for map name dialog window C0/8171: F0 08 BEQ $817B C0/8173: CE 67 05 DEC $0567 C0/8176: D0 03 BNE $817B C0/8178: 20 ED 2F JSR $2FED ; close map name dialog window C0/817B: AD 68 05 LDA $0568 ; dialog flags C0/817E: D0 01 BNE $8181 ; return if there's no dialog text C0/8180: 60 RTS C0/8181: AE 69 05 LDX $0569 ; decrement counter for dialog pause C0/8184: F0 05 BEQ $818B C0/8186: CA DEX C0/8187: 8E 69 05 STX $0569 C0/818A: 60 RTS C0/818B: AE 6B 05 LDX $056B ; keypress counter C0/818E: F0 1F BEQ $81AF C0/8190: C2 20 REP #$20 C0/8192: 8A TXA C0/8193: 29 FF 7F AND #$7FFF C0/8196: AA TAX C0/8197: 7B TDC C0/8198: E2 20 SEP #$20 C0/819A: E4 00 CPX $00 C0/819C: D0 0A BNE $81A8 C0/819E: 9C 6C 05 STZ $056C C0/81A1: 64 D3 STZ $D3 ; keypress state C0/81A3: 9C 6F 05 STZ $056F C0/81A6: 80 07 BRA $81AF C0/81A8: AE 6B 05 LDX $056B C0/81AB: CA DEX C0/81AC: 8E 6B 05 STX $056B C0/81AF: A5 D3 LDA $D3 ; branch if waiting for keypress C0/81B1: D0 03 BNE $81B6 C0/81B3: 4C 3B 82 JMP $823B C0/81B6: AD 6F 05 LDA $056F ; max multiple choice selection C0/81B9: C9 02 CMP #$02 C0/81BB: 90 62 BCC $821F ; branch if 1 or 0 C0/81BD: AD 6E 05 LDA $056E C0/81C0: 0A ASL C0/81C1: AA TAX C0/81C2: C2 20 REP #$20 C0/81C4: BD 70 05 LDA $0570,X ; set current cursor position (for erasing the indicator) C0/81C7: 85 C3 STA $C3 C0/81C9: 7B TDC C0/81CA: E2 20 SEP #$20 C0/81CC: A5 07 LDA $07 C0/81CE: 29 0F AND #$0F ; branch if direction button is down C0/81D0: D0 05 BNE $81D7 C0/81D2: 9C 6D 05 STZ $056D ; multiple choice selection is not changing C0/81D5: 80 32 BRA $8209 C0/81D7: AD 6D 05 LDA $056D ; branch if multiple choice selection is already changing C0/81DA: D0 43 BNE $821F C0/81DC: A5 07 LDA $07 C0/81DE: 29 0A AND #$0A ; branch if up and left are not pressed C0/81E0: F0 10 BEQ $81F2 C0/81E2: AD 6E 05 LDA $056E ; decrement multiple choice selection C0/81E5: 3A DEC C0/81E6: 30 21 BMI $8209 ; branch if less than zero (no change) C0/81E8: 8D 6E 05 STA $056E C0/81EB: A9 01 LDA #$01 ; multiple choice selection is changing C0/81ED: 8D 6D 05 STA $056D C0/81F0: 80 17 BRA $8209 C0/81F2: A5 07 LDA $07 C0/81F4: 29 05 AND #$05 ; branch if up and left are not pressed C0/81F6: F0 11 BEQ $8209 C0/81F8: AD 6E 05 LDA $056E ; increment multiple choice selection C0/81FB: 1A INC C0/81FC: CD 6F 05 CMP $056F ; branch if equal to max selection (no change) C0/81FF: F0 08 BEQ $8209 C0/8201: 8D 6E 05 STA $056E C0/8204: A9 01 LDA #$01 ; multiple choice selection is changing C0/8206: 8D 6D 05 STA $056D C0/8209: 20 9A 87 JSR $879A ; copy multiple choice indicator graphics to VRAM buffer C0/820C: AD 6E 05 LDA $056E ; current selection C0/820F: 0A ASL C0/8210: AA TAX C0/8211: C2 20 REP #$20 C0/8213: BD 70 05 LDA $0570,X ; position of multiple choice indicator C0/8216: 8D 80 05 STA $0580 ; set current C0/8219: 7B TDC C0/821A: E2 20 SEP #$20 C0/821C: EE 82 05 INC $0582 ; enable update C0/821F: A5 D3 LDA $D3 ; keypress state C0/8221: C9 01 CMP #$01 C0/8223: F0 08 BEQ $822D ; branch if waiting for keypress C0/8225: A5 06 LDA $06 ; A button C0/8227: 30 18 BMI $8241 ; decrement keypress and branch if not pressed C0/8229: C6 D3 DEC $D3 C0/822B: 80 14 BRA $8241 C0/822D: A5 06 LDA $06 ; return if A button not pressed C0/822F: 10 10 BPL $8241 C0/8231: C6 D3 DEC $D3 ; decrement keypress state C0/8233: 9C 6F 05 STZ $056F ; disable multiple choice C0/8236: 9C 6C 05 STZ $056C ; disable keypress timer C0/8239: 80 06 BRA $8241 ; return C0/823B: A5 CC LDA $CC ; decrement region to clear (getting ready for next page) C0/823D: F0 03 BEQ $8242 C0/823F: C6 CC DEC $CC C0/8241: 60 RTS C0/8242: AD 68 05 LDA $0568 ; dialog flags C0/8245: 10 06 BPL $824D ; branch if not done rendering text C0/8247: 85 BA STA $BA C0/8249: 9C 68 05 STZ $0568 C0/824C: 60 RTS C0/824D: 20 67 80 JSR $8067 ; calculate length of current word C0/8250: A5 BF LDA $BF ; add width to current x position C0/8252: 18 CLC C0/8253: 65 C0 ADC $C0 C0/8255: B0 04 BCS $825B ; branch if it overflowed C0/8257: C5 C8 CMP $C8 C0/8259: 90 04 BCC $825F ; branch if less than max width C0/825B: 20 1A 85 JSR $851A ; new line C0/825E: 60 RTS C0/825F: A5 CF LDA $CF ; branch if text buffer is empty C0/8261: 30 21 BMI $8284 C0/8263: A5 CF LDA $CF C0/8265: AA TAX C0/8266: BF 83 91 7E LDA $7E9183,X ; text buffer C0/826A: 85 CD STA $CD ; set next letter to display C0/826C: 64 CE STZ $CE C0/826E: BF 84 91 7E LDA $7E9184,X ; branch if next letter is the end of the string C0/8272: F0 06 BEQ $827A C0/8274: 20 D0 84 JSR $84D0 ; write letter to dialog window C0/8277: E6 CF INC $CF ; increment text buffer position and return C0/8279: 60 RTS C0/827A: A9 80 LDA #$80 ; empty dialog text buffer C0/827C: 85 CF STA $CF C0/827E: 20 D0 84 JSR $84D0 ; update dialog text graphics C0/8281: 4C 9D 82 JMP $829D ; increment dialog pointer by 1 C0/8284: A4 00 LDY $00 C0/8286: B7 C9 LDA [$C9],Y ; load current dialog letter C0/8288: 85 BD STA $BD C0/828A: C8 INY C0/828B: B7 C9 LDA [$C9],Y ; load next dialog letter C0/828D: 85 BE STA $BE C0/828F: A5 BD LDA $BD ; branch if current letter is DTE C0/8291: 30 07 BMI $829A C0/8293: C9 20 CMP #$20 ; branch if special letter C0/8295: 90 1E BCC $82B5 C0/8297: 4C 5A 84 JMP $845A C0/829A: 4C 66 84 JMP $8466 ; increment dialog pointer C0/829D: A9 01 LDA #$01 ; increment by 1 C0/829F: 80 02 BRA $82A3 C0/82A1: A9 02 LDA #$02 ; increment by 2 C0/82A3: 18 CLC C0/82A4: 65 C9 ADC $C9 C0/82A6: 85 C9 STA $C9 C0/82A8: A5 CA LDA $CA C0/82AA: 69 00 ADC #$00 C0/82AC: 85 CA STA $CA C0/82AE: A5 CB LDA $CB C0/82B0: 69 00 ADC #$00 C0/82B2: 85 CB STA $CB C0/82B4: 60 RTS ; special letter $00: end of message C0/82B5: C9 00 CMP #$00 C0/82B7: D0 09 BNE $82C2 C0/82B9: 20 54 85 JSR $8554 C0/82BC: A9 80 LDA #$80 C0/82BE: 8D 68 05 STA $0568 C0/82C1: 60 RTS ; special letter $01: new line C0/82C2: C9 01 CMP #$01 C0/82C4: D0 06 BNE $82CC C0/82C6: 20 1A 85 JSR $851A ; new line C0/82C9: 4C 9D 82 JMP $829D ; increment dialog pointer by 1 ; special letter $02-$0F: character name C0/82CC: C9 10 CMP #$10 C0/82CE: B0 32 BCS $8302 C0/82D0: 3A DEC C0/82D1: 3A DEC C0/82D2: 8D 02 42 STA $4202 C0/82D5: A9 25 LDA #$25 C0/82D7: 8D 03 42 STA $4203 C0/82DA: EA NOP C0/82DB: EA NOP C0/82DC: EA NOP C0/82DD: EA NOP C0/82DE: AC 16 42 LDY $4216 C0/82E1: A6 00 LDX $00 C0/82E3: B9 02 16 LDA $1602,Y C0/82E6: 38 SEC C0/82E7: E9 60 SBC #$60 C0/82E9: 9F 83 91 7E STA $7E9183,X C0/82ED: C9 9F CMP #$9F C0/82EF: F0 07 BEQ $82F8 C0/82F1: C8 INY C0/82F2: E8 INX C0/82F3: E0 06 00 CPX #$0006 C0/82F6: D0 EB BNE $82E3 C0/82F8: 7B TDC C0/82F9: 9F 83 91 7E STA $7E9183,X C0/82FD: 64 CF STZ $CF C0/82FF: 4C 63 82 JMP $8263 ; special letter $10: pause for 1 second C0/8302: C9 10 CMP #$10 C0/8304: D0 09 BNE $830F C0/8306: A2 3C 00 LDX #$003C ; 60 frames C0/8309: 8E 69 05 STX $0569 C0/830C: 4C 9D 82 JMP $829D ; increment dialog pointer by 1 ; special letter $11: pause for x/4 seconds C0/830F: C9 11 CMP #$11 C0/8311: D0 17 BNE $832A C0/8313: A5 BE LDA $BE C0/8315: 8D 02 42 STA $4202 C0/8318: A9 0F LDA #$0F ; divide by 15 C0/831A: 8D 03 42 STA $4203 C0/831D: EA NOP C0/831E: EA NOP C0/831F: EA NOP C0/8320: EA NOP C0/8321: AE 16 42 LDX $4216 C0/8324: 8E 69 05 STX $0569 C0/8327: 4C A1 82 JMP $82A1 ; increment dialog pointer by 2 ; special letter $12: wait for keypress C0/832A: C9 12 CMP #$12 C0/832C: D0 09 BNE $8337 C0/832E: A2 01 80 LDX #$8001 ; waiting for keypress, timer is 1 frame only C0/8331: 8E 6B 05 STX $056B C0/8334: 4C 9D 82 JMP $829D ; increment dialog pointer by 1 ; special letter $13: new page C0/8337: C9 13 CMP #$13 C0/8339: D0 06 BNE $8341 C0/833B: 20 54 85 JSR $8554 ; new page C0/833E: 4C 9D 82 JMP $829D ; increment dialog pointer by 1 ; special letter $14: tab (x spaces) C0/8341: C9 14 CMP #$14 C0/8343: D0 1D BNE $8362 C0/8345: A5 BE LDA $BE ; number of spaces C0/8347: 85 1E STA $1E C0/8349: 64 1F STZ $1F C0/834B: A6 00 LDX $00 C0/834D: A9 7F LDA #$7F ; space C0/834F: 9F 83 91 7E STA $7E9183,X C0/8353: E8 INX C0/8354: E4 1E CPX $1E C0/8356: D0 F7 BNE $834F C0/8358: 7B TDC ; end of string C0/8359: 9F 83 91 7E STA $7E9183,X C0/835D: 64 CF STZ $CF C0/835F: 4C 9D 82 JMP $829D ; increment dialog pointer by 1 ; special letter $15: multiple choice indicator C0/8362: C9 15 CMP #$15 C0/8364: D0 19 BNE $837F C0/8366: AD 6F 05 LDA $056F ; maximum multiple choice position found so far C0/8369: 0A ASL C0/836A: A8 TAY C0/836B: C2 20 REP #$20 C0/836D: A5 C1 LDA $C1 ; set current position as a new multiple choice position C0/836F: 99 70 05 STA $0570,Y C0/8372: 7B TDC C0/8373: E2 20 SEP #$20 C0/8375: A9 FF LDA #$FF ; wide space C0/8377: 85 BD STA $BD C0/8379: EE 6F 05 INC $056F ; increment number of multiple choice positions C0/837C: 4C 5A 84 JMP $845A ; process like a normal letter ; special letter $16: pause for x/4 seconds, then wait for keypress C0/837F: C9 16 CMP #$16 C0/8381: D0 21 BNE $83A4 C0/8383: A5 BE LDA $BE C0/8385: 8D 02 42 STA $4202 C0/8388: A9 0F LDA #$0F C0/838A: 8D 03 42 STA $4203 C0/838D: EA NOP C0/838E: EA NOP C0/838F: C2 20 REP #$20 C0/8391: AD 16 42 LDA $4216 C0/8394: 09 00 80 ORA #$8000 C0/8397: 8D 6B 05 STA $056B C0/839A: 7B TDC C0/839B: E2 20 SEP #$20 C0/839D: A9 01 LDA #$01 ; waiting for keypress C0/839F: 85 D3 STA $D3 C0/83A1: 4C A1 82 JMP $82A1 ; special letter $19: gold quantity C0/83A4: C9 19 CMP #$19 C0/83A6: D0 2B BNE $83D3 C0/83A8: 64 1A STZ $1A C0/83AA: A6 00 LDX $00 C0/83AC: 9B TXY C0/83AD: A5 1A LDA $1A C0/83AF: D0 07 BNE $83B8 C0/83B1: B9 55 07 LDA $0755,Y C0/83B4: F0 0D BEQ $83C3 C0/83B6: E6 1A INC $1A C0/83B8: B9 55 07 LDA $0755,Y C0/83BB: 18 CLC C0/83BC: 69 54 ADC #$54 C0/83BE: 9F 83 91 7E STA $7E9183,X C0/83C2: E8 INX C0/83C3: C8 INY C0/83C4: C0 07 00 CPY #$0007 C0/83C7: D0 E4 BNE $83AD C0/83C9: 7B TDC C0/83CA: 9F 83 91 7E STA $7E9183,X C0/83CE: 64 CF STZ $CF C0/83D0: 4C 63 82 JMP $8263 ; special letter $1A: item name C0/83D3: C9 1A CMP #$1A C0/83D5: D0 38 BNE $840F C0/83D7: AD 83 05 LDA $0583 C0/83DA: 8D 02 42 STA $4202 C0/83DD: A9 0D LDA #$0D C0/83DF: 8D 03 42 STA $4203 C0/83E2: EA NOP C0/83E3: EA NOP C0/83E4: EA NOP C0/83E5: AE 16 42 LDX $4216 C0/83E8: A4 00 LDY $00 C0/83EA: A9 7E LDA #$7E C0/83EC: 48 PHA C0/83ED: AB PLB C0/83EE: BF 01 B3 D2 LDA $D2B301,X ; load item name (ignore symbol) C0/83F2: 38 SEC C0/83F3: E9 60 SBC #$60 C0/83F5: 99 83 91 STA $9183,Y C0/83F8: C9 9F CMP #$9F C0/83FA: F0 07 BEQ $8403 C0/83FC: E8 INX C0/83FD: C8 INY C0/83FE: C0 0C 00 CPY #$000C C0/8401: D0 EB BNE $83EE C0/8403: 7B TDC C0/8404: 99 83 91 STA $9183,Y C0/8407: 7B TDC C0/8408: 48 PHA C0/8409: AB PLB C0/840A: 64 CF STZ $CF C0/840C: 4C 63 82 JMP $8263 ; special letter $1B: spell name C0/840F: C9 1B CMP #$1B C0/8411: D0 38 BNE $844B C0/8413: AD 84 05 LDA $0584 C0/8416: 8D 02 42 STA $4202 C0/8419: A9 04 LDA #$04 ; multiply by 4 (this is carried over from FF6j, it should be 7 for FF3us) C0/841B: 8D 03 42 STA $4203 C0/841E: EA NOP C0/841F: EA NOP C0/8420: EA NOP C0/8421: AE 16 42 LDX $4216 C0/8424: A4 00 LDY $00 C0/8426: A9 7E LDA #$7E C0/8428: 48 PHA C0/8429: AB PLB C0/842A: BF 68 F5 E6 LDA $E6F568,X ; load spell name (ignore symbol) C0/842E: 38 SEC ; subtract $60 to convert battle text to dialog text C0/842F: E9 60 SBC #$60 C0/8431: 99 83 91 STA $9183,Y ; store in buffer C0/8434: C9 9F CMP #$9F ; break if $FF was reached C0/8436: F0 07 BEQ $843F C0/8438: E8 INX C0/8439: C8 INY C0/843A: C0 04 00 CPY #$0004 ; copy up to 4 bytes (should be 7) C0/843D: D0 EB BNE $842A C0/843F: 7B TDC C0/8440: 99 83 91 STA $9183,Y ; store $00 in the last byte C0/8443: 7B TDC C0/8444: 48 PHA C0/8445: AB PLB C0/8446: 64 CF STZ $CF C0/8448: 4C 63 82 JMP $8263 ; special letter $1C-$1F: extra japanese characters (unused) C0/844B: 38 SEC C0/844C: E9 1B SBC #$1B C0/844E: 85 CE STA $CE C0/8450: A5 BE LDA $BE C0/8452: 85 CD STA $CD C0/8454: 20 D0 84 JSR $84D0 ; update dialog text graphics C0/8457: 4C A1 82 JMP $82A1 ; increment dialog pointer by 2 ; $20-$7F: normal letter C0/845A: A5 BD LDA $BD C0/845C: 85 CD STA $CD C0/845E: 64 CE STZ $CE C0/8460: 20 D0 84 JSR $84D0 ; update dialog text graphics C0/8463: 4C 9D 82 JMP $829D ; increment dialog pointer by 1 ; $80-$FF: DTE C0/8466: 29 7F AND #$7F C0/8468: 0A ASL C0/8469: A8 TAY C0/846A: A2 A0 DF LDX #$DFA0 ; pointer to DTE table C0/846D: 86 2A STX $2A C0/846F: A9 C0 LDA #$C0 C0/8471: 85 2C STA $2C C0/8473: B7 2A LDA [$2A],Y C0/8475: 8F 83 91 7E STA $7E9183 ; store first byte in text buffer C0/8479: C8 INY C0/847A: B7 2A LDA [$2A],Y C0/847C: 8F 84 91 7E STA $7E9184 ; store second byte in text buffer C0/8480: 7B TDC C0/8481: 8F 85 91 7E STA $7E9185 ; end of string C0/8485: 64 CF STZ $CF ; set text position to 0 C0/8487: 4C 63 82 JMP $8263 ; write both letters ; [ Load Dialog Font Widths ] C0/848A: A9 7E LDA #$7E ; set WRAM address C0/848C: 8D 83 21 STA $2183 C0/848F: A2 00 9E LDX #$9E00 C0/8492: 8E 81 21 STX $2181 C0/8495: A6 00 LDX $00 C0/8497: BF C0 8F C4 LDA $C48FC0,X ; copy widths for letters $00-$7F C0/849B: 8D 80 21 STA $2180 C0/849E: E8 INX C0/849F: E0 80 00 CPX #$0080 C0/84A2: D0 F3 BNE $8497 C0/84A4: A2 A0 DF LDX #$DFA0 ; set a pointer to the DTE table C0/84A7: 86 2A STX $2A C0/84A9: A9 C0 LDA #$C0 C0/84AB: 85 2C STA $2C C0/84AD: A6 00 LDX $00 C0/84AF: 9B TXY C0/84B0: 64 1A STZ $1A C0/84B2: B7 2A LDA [$2A],Y C0/84B4: AA TAX C0/84B5: BF C0 8F C4 LDA $C48FC0,X ; get the width of the first letter C0/84B9: 85 1A STA $1A C0/84BB: C8 INY C0/84BC: B7 2A LDA [$2A],Y C0/84BE: AA TAX C0/84BF: BF C0 8F C4 LDA $C48FC0,X ; add the width of the second letter C0/84C3: 18 CLC C0/84C4: 65 1A ADC $1A C0/84C6: 8D 80 21 STA $2180 ; store in WRAM C0/84C9: C8 INY C0/84CA: C0 00 01 CPY #$0100 C0/84CD: D0 E1 BNE $84B0 C0/84CF: 60 RTS ; [ Update Dialog Text Graphics ] C0/84D0: A6 CD LDX $CD ; letter number C0/84D2: BF C0 8F C4 LDA $C48FC0,X ; letter width C0/84D6: 18 CLC C0/84D7: 65 BF ADC $BF ; add to current x position C0/84D9: C5 C8 CMP $C8 C0/84DB: 90 04 BCC $84E1 ; branch if less than max position C0/84DD: 20 1A 85 JSR $851A ; new line C0/84E0: 60 RTS C0/84E1: 20 8A 89 JSR $898A ; load letter graphics C0/84E4: 20 D3 88 JSR $88D3 ; copy letter graphics to text graphics buffer C0/84E7: 20 42 86 JSR $8642 ; copy dialog text graphics to VRAM buffer C0/84EA: A6 C1 LDX $C1 ; set VRAM tile address C0/84EC: 86 C3 STX $C3 C0/84EE: E6 C5 INC $C5 ; text graphics needs to get copied C0/84F0: A6 CD LDX $CD ; letter index C0/84F2: A5 BF LDA $BF ; x position C0/84F4: 29 0F AND #$0F C0/84F6: 18 CLC C0/84F7: 7F C0 8F C4 ADC $C48FC0,X ; add letter width C0/84FB: 29 F0 AND #$F0 C0/84FD: F0 0F BEQ $850E ; branch if it hasn't reached the next tile C0/84FF: 20 67 89 JSR $8967 ; copy next tile to current tile C0/8502: C2 21 REP #$21 C0/8504: A5 C1 LDA $C1 ; increment tile VRAM pointer C0/8506: 69 20 00 ADC #$0020 C0/8509: 85 C1 STA $C1 C0/850B: 7B TDC C0/850C: E2 20 SEP #$20 C0/850E: A6 CD LDX $CD ; letter index C0/8510: A5 BF LDA $BF ; x position C0/8512: 18 CLC C0/8513: 7F C0 8F C4 ADC $C48FC0,X ; add letter width C0/8517: 85 BF STA $BF ; set new x position C0/8519: 60 RTS ; [ New Line ] C0/851A: A9 FF LDA #$FF ; new line ($00FF) C0/851C: 85 CD STA $CD C0/851E: 64 CE STZ $CE C0/8520: 20 8A 89 JSR $898A ; load letter graphics C0/8523: 20 D3 88 JSR $88D3 ; copy letter graphics to text graphics buffer C0/8526: 20 42 86 JSR $8642 ; copy dialog text graphics to VRAM buffer C0/8529: A9 04 LDA #$04 ; set x position back to the left (carriage return) C0/852B: 8D BF 00 STA $00BF C0/852E: C2 21 REP #$21 C0/8530: A5 C1 LDA $C1 ; set tile VRAM address C0/8532: 85 C3 STA $C3 C0/8534: 29 00 06 AND #$0600 ; set current VRAM position to the beginning of the next line C0/8537: 69 00 02 ADC #$0200 C0/853A: 29 FF 07 AND #$07FF C0/853D: 85 C1 STA $C1 C0/853F: 7B TDC C0/8540: E2 20 SEP #$20 C0/8542: E6 C5 INC $C5 ; text graphics needs to get copied C0/8544: 20 A9 88 JSR $88A9 C0/8547: A6 C1 LDX $C1 ; return unless end of page was reached (end of line 4) C0/8549: D0 08 BNE $8553 C0/854B: A9 09 LDA #$09 ; text fully displayed C0/854D: 85 CC STA $CC C0/854F: A9 02 LDA #$02 ; waiting for key release C0/8551: 85 D3 STA $D3 C0/8553: 60 RTS ; [ New Page ] C0/8554: A9 FF LDA #$FF ; new line ($00FF) C0/8556: 85 CD STA $CD C0/8558: 64 CE STZ $CE C0/855A: 20 8A 89 JSR $898A ; load letter graphics C0/855D: 20 D3 88 JSR $88D3 ; copy letter graphics to text graphics buffer C0/8560: 20 42 86 JSR $8642 ; copy dialog text graphics to VRAM buffer C0/8563: A9 04 LDA #$04 ; set x position back to the left (carriage return) C0/8565: 8D BF 00 STA $00BF C0/8568: A6 C1 LDX $C1 ; set tile VRAM address C0/856A: 86 C3 STX $C3 C0/856C: E6 C5 INC $C5 ; text graphics needs to get copied C0/856E: A6 00 LDX $00 C0/8570: 86 C1 STX $C1 ; set current VRAM position to the top of the page C0/8572: 20 A9 88 JSR $88A9 C0/8575: A9 09 LDA #$09 ; text fully displayed C0/8577: 85 CC STA $CC C0/8579: A9 02 LDA #$02 ; waiting for key release C0/857B: 85 D3 STA $D3 C0/857D: 60 RTS ; [ Clear All Dialog Text Graphics in VRAM ] C0/857E: 9C 0B 42 STZ $420B C0/8581: A2 00 38 LDX #$3800 C0/8584: 8E 16 21 STX $2116 C0/8587: A9 80 LDA #$80 C0/8589: 8D 15 21 STA $2115 C0/858C: A9 09 LDA #$09 C0/858E: 8D 00 43 STA $4300 C0/8591: A9 18 LDA #$18 C0/8593: 8D 01 43 STA $4301 C0/8596: A2 00 00 LDX #$0000 C0/8599: 8E 02 43 STX $4302 C0/859C: A9 00 LDA #$00 C0/859E: 8D 04 43 STA $4304 C0/85A1: 8D 07 43 STA $4307 C0/85A4: A2 00 10 LDX #$1000 ; clear $3800-$3FFF in VRAM C0/85A7: 8E 05 43 STX $4305 C0/85AA: A9 01 LDA #$01 C0/85AC: 8D 0B 42 STA $420B C0/85AF: 60 RTS ; [ Clear Dialog Text Graphics Region in VRAM ] C0/85B0: A5 CC LDA $CC ; current dialog text region to clear C0/85B2: F0 3E BEQ $85F2 C0/85B4: C9 09 CMP #$09 ; return if none C0/85B6: F0 3A BEQ $85F2 C0/85B8: 3A DEC C0/85B9: 0A ASL C0/85BA: AA TAX C0/85BB: C2 20 REP #$20 C0/85BD: BF F3 85 C0 LDA $C085F3,X ; set VRAM address C0/85C1: 8D 16 21 STA $2116 C0/85C4: 7B TDC C0/85C5: E2 20 SEP #$20 C0/85C7: 9C 0B 42 STZ $420B ; disable DMA C0/85CA: A9 80 LDA #$80 C0/85CC: 8D 15 21 STA $2115 ; clear $01C0 bytes (copy from $00) C0/85CF: A9 09 LDA #$09 C0/85D1: 8D 00 43 STA $4300 ; fixed address DMA to $2118 C0/85D4: A9 18 LDA #$18 C0/85D6: 8D 01 43 STA $4301 C0/85D9: A2 00 00 LDX #$0000 C0/85DC: 8E 02 43 STX $4302 C0/85DF: A9 00 LDA #$00 C0/85E1: 8D 04 43 STA $4304 C0/85E4: 8D 07 43 STA $4307 C0/85E7: A2 C0 01 LDX #$01C0 ; 7 tiles (32x32, 2bpp) C0/85EA: 8E 05 43 STX $4305 C0/85ED: A9 01 LDA #$01 C0/85EF: 8D 0B 42 STA $420B C0/85F2: 60 RTS ; pointers to dialog text regions in VRAM C0/85F3: .DW $3EE0, $3E00, $3CE0, $3C00, $3AE0, $3A00, $38E0, $3800 ; [ Copy Dialog Text Graphics to VRAM ] C0/8603: A5 C5 LDA $C5 ; return if there is no tile to be copied C0/8605: F0 3A BEQ $8641 C0/8607: 64 C5 STZ $C5 C0/8609: 9C 0B 42 STZ $420B C0/860C: A9 80 LDA #$80 ; VRAM control register C0/860E: 8D 15 21 STA $2115 C0/8611: C2 21 REP #$21 C0/8613: A5 C3 LDA $C3 ; VRAM destination C0/8615: 69 00 38 ADC #$3800 C0/8618: 8D 16 21 STA $2116 C0/861B: 7B TDC C0/861C: E2 20 SEP #$20 C0/861E: A9 41 LDA #$41 ; DMA control register C0/8620: 8D 00 43 STA $4300 C0/8623: A9 18 LDA #$18 ; DMA destination register C0/8625: 8D 01 43 STA $4301 C0/8628: A2 83 90 LDX #$9083 ; DMA source address C0/862B: 8E 02 43 STX $4302 C0/862E: A9 7E LDA #$7E C0/8630: 8D 04 43 STA $4304 C0/8633: 8D 07 43 STA $4307 C0/8636: A2 40 00 LDX #$0040 ; DMA size (four 2bpp tiles) C0/8639: 8E 05 43 STX $4305 C0/863C: A9 01 LDA #$01 C0/863E: 8D 0B 42 STA $420B C0/8641: 60 RTS ; [ Copy Dialog Text Graphics to VRAM Buffer ] ; copies one 16x16 tile per frame C0/8642: A9 7E LDA #$7E C0/8644: 48 PHA C0/8645: AB PLB C0/8646: 9C 83 90 STZ $9083 ; left two 8x8 tiles, top 4 rows of pixels are always blank C0/8649: 9C 84 90 STZ $9084 C0/864C: 9C 85 90 STZ $9085 C0/864F: 9C 86 90 STZ $9086 C0/8652: 9C 87 90 STZ $9087 C0/8655: 9C 88 90 STZ $9088 C0/8658: 9C 89 90 STZ $9089 C0/865B: 9C 8A 90 STZ $908A C0/865E: AD 04 91 LDA $9104 ; copy left half of tiles C0/8661: 8D 8B 90 STA $908B ; bp 1-2 C0/8664: AD 44 91 LDA $9144 C0/8667: 8D 8C 90 STA $908C ; bp 3-4 C0/866A: AD 06 91 LDA $9106 C0/866D: 8D 8D 90 STA $908D C0/8670: AD 46 91 LDA $9146 C0/8673: 8D 8E 90 STA $908E C0/8676: AD 08 91 LDA $9108 C0/8679: 8D 8F 90 STA $908F C0/867C: AD 48 91 LDA $9148 C0/867F: 8D 90 90 STA $9090 C0/8682: AD 0A 91 LDA $910A C0/8685: 8D 91 90 STA $9091 C0/8688: AD 4A 91 LDA $914A C0/868B: 8D 92 90 STA $9092 C0/868E: AD 0C 91 LDA $910C C0/8691: 8D 93 90 STA $9093 C0/8694: AD 4C 91 LDA $914C C0/8697: 8D 94 90 STA $9094 C0/869A: AD 0E 91 LDA $910E C0/869D: 8D 95 90 STA $9095 C0/86A0: AD 4E 91 LDA $914E C0/86A3: 8D 96 90 STA $9096 C0/86A6: AD 10 91 LDA $9110 C0/86A9: 8D 97 90 STA $9097 C0/86AC: AD 50 91 LDA $9150 C0/86AF: 8D 98 90 STA $9098 C0/86B2: AD 12 91 LDA $9112 C0/86B5: 8D 99 90 STA $9099 C0/86B8: AD 52 91 LDA $9152 C0/86BB: 8D 9A 90 STA $909A C0/86BE: AD 14 91 LDA $9114 C0/86C1: 8D 9B 90 STA $909B C0/86C4: AD 54 91 LDA $9154 C0/86C7: 8D 9C 90 STA $909C C0/86CA: AD 16 91 LDA $9116 C0/86CD: 8D 9D 90 STA $909D C0/86D0: AD 56 91 LDA $9156 C0/86D3: 8D 9E 90 STA $909E C0/86D6: AD 18 91 LDA $9118 C0/86D9: 8D 9F 90 STA $909F C0/86DC: AD 58 91 LDA $9158 C0/86DF: 8D A0 90 STA $90A0 C0/86E2: AD 1A 91 LDA $911A C0/86E5: 8D A1 90 STA $90A1 C0/86E8: AD 5A 91 LDA $915A C0/86EB: 8D A2 90 STA $90A2 C0/86EE: 9C A3 90 STZ $90A3 ; right two 8x8 tiles, top 4 rows of pixels are always blank C0/86F1: 9C A4 90 STZ $90A4 C0/86F4: 9C A5 90 STZ $90A5 C0/86F7: 9C A6 90 STZ $90A6 C0/86FA: 9C A7 90 STZ $90A7 C0/86FD: 9C A8 90 STZ $90A8 C0/8700: 9C A9 90 STZ $90A9 C0/8703: 9C AA 90 STZ $90AA C0/8706: AD 03 91 LDA $9103 ; copy right half of tiles C0/8709: 8D AB 90 STA $90AB C0/870C: AD 43 91 LDA $9143 C0/870F: 8D AC 90 STA $90AC C0/8712: AD 05 91 LDA $9105 C0/8715: 8D AD 90 STA $90AD C0/8718: AD 45 91 LDA $9145 C0/871B: 8D AE 90 STA $90AE C0/871E: AD 07 91 LDA $9107 C0/8721: 8D AF 90 STA $90AF C0/8724: AD 47 91 LDA $9147 C0/8727: 8D B0 90 STA $90B0 C0/872A: AD 09 91 LDA $9109 C0/872D: 8D B1 90 STA $90B1 C0/8730: AD 49 91 LDA $9149 C0/8733: 8D B2 90 STA $90B2 C0/8736: AD 0B 91 LDA $910B C0/8739: 8D B3 90 STA $90B3 C0/873C: AD 4B 91 LDA $914B C0/873F: 8D B4 90 STA $90B4 C0/8742: AD 0D 91 LDA $910D C0/8745: 8D B5 90 STA $90B5 C0/8748: AD 4D 91 LDA $914D C0/874B: 8D B6 90 STA $90B6 C0/874E: AD 0F 91 LDA $910F C0/8751: 8D B7 90 STA $90B7 C0/8754: AD 4F 91 LDA $914F C0/8757: 8D B8 90 STA $90B8 C0/875A: AD 11 91 LDA $9111 C0/875D: 8D B9 90 STA $90B9 C0/8760: AD 51 91 LDA $9151 C0/8763: 8D BA 90 STA $90BA C0/8766: AD 13 91 LDA $9113 C0/8769: 8D BB 90 STA $90BB C0/876C: AD 53 91 LDA $9153 C0/876F: 8D BC 90 STA $90BC C0/8772: AD 15 91 LDA $9115 C0/8775: 8D BD 90 STA $90BD C0/8778: AD 55 91 LDA $9155 C0/877B: 8D BE 90 STA $90BE C0/877E: AD 17 91 LDA $9117 C0/8781: 8D BF 90 STA $90BF C0/8784: AD 57 91 LDA $9157 C0/8787: 8D C0 90 STA $90C0 C0/878A: AD 19 91 LDA $9119 C0/878D: 8D C1 90 STA $90C1 C0/8790: AD 59 91 LDA $9159 C0/8793: 8D C2 90 STA $90C2 C0/8796: 7B TDC C0/8797: 48 PHA C0/8798: AB PLB C0/8799: 60 RTS ; [ Copy Multiple Choice Indicator Graphics to VRAM Buffer ] C0/879A: A2 83 90 LDX #$9083 C0/879D: 8E 81 21 STX $2181 C0/87A0: A9 7E LDA #$7E C0/87A2: 8D 83 21 STA $2183 C0/87A5: 9C 80 21 STZ $2180 C0/87A8: 9C 80 21 STZ $2180 C0/87AB: 9C 80 21 STZ $2180 C0/87AE: 9C 80 21 STZ $2180 C0/87B1: 9C 80 21 STZ $2180 C0/87B4: 9C 80 21 STZ $2180 C0/87B7: 9C 80 21 STZ $2180 C0/87BA: 9C 80 21 STZ $2180 C0/87BD: A6 00 LDX $00 C0/87BF: 9B TXY C0/87C0: BF 32 88 C0 LDA $C08832,X C0/87C4: 8D 80 21 STA $2180 C0/87C7: 4A LSR C0/87C8: 8D 80 21 STA $2180 C0/87CB: E8 INX C0/87CC: E0 0C 00 CPX #$000C C0/87CF: D0 EF BNE $87C0 C0/87D1: 9C 80 21 STZ $2180 C0/87D4: 9C 80 21 STZ $2180 C0/87D7: 9C 80 21 STZ $2180 C0/87DA: 9C 80 21 STZ $2180 C0/87DD: 9C 80 21 STZ $2180 C0/87E0: 9C 80 21 STZ $2180 C0/87E3: 9C 80 21 STZ $2180 C0/87E6: 9C 80 21 STZ $2180 C0/87E9: 9C 80 21 STZ $2180 C0/87EC: 9C 80 21 STZ $2180 C0/87EF: 9C 80 21 STZ $2180 C0/87F2: 9C 80 21 STZ $2180 C0/87F5: 9C 80 21 STZ $2180 C0/87F8: 9C 80 21 STZ $2180 C0/87FB: 9C 80 21 STZ $2180 C0/87FE: 9C 80 21 STZ $2180 C0/8801: 9C 80 21 STZ $2180 C0/8804: 9C 80 21 STZ $2180 C0/8807: 9C 80 21 STZ $2180 C0/880A: 9C 80 21 STZ $2180 C0/880D: 9C 80 21 STZ $2180 C0/8810: 9C 80 21 STZ $2180 C0/8813: 9C 80 21 STZ $2180 C0/8816: 9C 80 21 STZ $2180 C0/8819: 9C 80 21 STZ $2180 C0/881C: 9C 80 21 STZ $2180 C0/881F: 9C 80 21 STZ $2180 C0/8822: 9C 80 21 STZ $2180 C0/8825: 9C 80 21 STZ $2180 C0/8828: 9C 80 21 STZ $2180 C0/882B: 9C 80 21 STZ $2180 C0/882E: 9C 80 21 STZ $2180 C0/8831: 60 RTS ; multiple choice indicator graphics C0/8832: .DB $20, $30, $38, $3C, $3E, $3F, $3E, $3C, $38, $30, $20, $00 ; [ Copy Multiple Choice Indicator Graphics to VRAM ] C0/883E: AD 82 05 LDA $0582 C0/8841: F0 65 BEQ $88A8 C0/8843: 9C 82 05 STZ $0582 C0/8846: A9 80 LDA #$80 C0/8848: 8D 15 21 STA $2115 C0/884B: 9C 0B 42 STZ $420B C0/884E: C2 21 REP #$21 C0/8850: A5 C3 LDA $C3 ; old cursor position C0/8852: 69 00 38 ADC #$3800 C0/8855: 8D 16 21 STA $2116 C0/8858: 7B TDC C0/8859: E2 20 SEP #$20 C0/885B: A9 41 LDA #$41 C0/885D: 8D 00 43 STA $4300 C0/8860: A9 18 LDA #$18 C0/8862: 8D 01 43 STA $4301 C0/8865: A2 A3 90 LDX #$90A3 C0/8868: 8E 02 43 STX $4302 C0/886B: A9 7E LDA #$7E C0/886D: 8D 04 43 STA $4304 C0/8870: 8D 07 43 STA $4307 C0/8873: A2 20 00 LDX #$0020 C0/8876: 8E 05 43 STX $4305 C0/8879: A9 01 LDA #$01 C0/887B: 8D 0B 42 STA $420B C0/887E: 9C 0B 42 STZ $420B C0/8881: C2 21 REP #$21 C0/8883: AD 80 05 LDA $0580 ; multiple choice position C0/8886: 69 00 38 ADC #$3800 C0/8889: 8D 16 21 STA $2116 C0/888C: 7B TDC C0/888D: E2 20 SEP #$20 C0/888F: A2 83 90 LDX #$9083 C0/8892: 8E 02 43 STX $4302 C0/8895: A9 7E LDA #$7E C0/8897: 8D 04 43 STA $4304 C0/889A: 8D 07 43 STA $4307 C0/889D: A2 20 00 LDX #$0020 C0/88A0: 8E 05 43 STX $4305 C0/88A3: A9 01 LDA #$01 C0/88A5: 8D 0B 42 STA $420B C0/88A8: 60 RTS ; [ Clear Text Graphics Buffer ] C0/88A9: A9 7E LDA #$7E C0/88AB: 8D 83 21 STA $2183 C0/88AE: A2 03 91 LDX #$9103 ; clear $9103-$9182 C0/88B1: 8E 81 21 STX $2181 C0/88B4: A2 10 00 LDX #$0010 C0/88B7: 9C 80 21 STZ $2180 C0/88BA: 9C 80 21 STZ $2180 C0/88BD: 9C 80 21 STZ $2180 C0/88C0: 9C 80 21 STZ $2180 C0/88C3: 9C 80 21 STZ $2180 C0/88C6: 9C 80 21 STZ $2180 C0/88C9: 9C 80 21 STZ $2180 C0/88CC: 9C 80 21 STZ $2180 C0/88CF: CA DEX C0/88D0: D0 E5 BNE $88B7 C0/88D2: 60 RTS ; [ Copy Letter Graphics to Text Graphics Buffer ] C0/88D3: A9 7E LDA #$7E C0/88D5: 48 PHA C0/88D6: AB PLB C0/88D7: AD BF 00 LDA $00BF ; branch if on an even tile C0/88DA: 29 08 AND #$08 C0/88DC: F0 03 BEQ $88E1 C0/88DE: 4C 24 89 JMP $8924 C0/88E1: A6 00 LDX $00 C0/88E3: BD 04 91 LDA $9104,X ; copy left part of letter buffer to left part of tile C0/88E6: 1D 04 90 ORA $9004,X C0/88E9: 9D 04 91 STA $9104,X C0/88EC: BD 03 91 LDA $9103,X ; copy middle part of letter buffer to middle part of tile C0/88EF: 1D 03 90 ORA $9003,X C0/88F2: 9D 03 91 STA $9103,X C0/88F5: BD 24 91 LDA $9124,X ; copy right part of letter buffer to right part of tile C0/88F8: 1D 24 90 ORA $9024,X C0/88FB: 9D 24 91 STA $9124,X C0/88FE: BD 44 91 LDA $9144,X ; repeat for bpp 3-4 C0/8901: 1D 44 90 ORA $9044,X C0/8904: 9D 44 91 STA $9144,X C0/8907: BD 43 91 LDA $9143,X C0/890A: 1D 43 90 ORA $9043,X C0/890D: 9D 43 91 STA $9143,X C0/8910: BD 64 91 LDA $9164,X C0/8913: 1D 64 90 ORA $9064,X C0/8916: 9D 64 91 STA $9164,X C0/8919: E8 INX C0/891A: E8 INX C0/891B: E0 20 00 CPX #$0020 C0/891E: D0 C3 BNE $88E3 C0/8920: 7B TDC C0/8921: 48 PHA C0/8922: AB PLB C0/8923: 60 RTS C0/8924: A6 00 LDX $00 C0/8926: BD 03 91 LDA $9103,X ; copy left part of letter to middle part of tile C0/8929: 1D 04 90 ORA $9004,X C0/892C: 9D 03 91 STA $9103,X C0/892F: BD 24 91 LDA $9124,X ; copy middle part of letter to right part of tile C0/8932: 1D 03 90 ORA $9003,X C0/8935: 9D 24 91 STA $9124,X C0/8938: BD 23 91 LDA $9123,X ; copy right part of letter to far right part of tile C0/893B: 1D 24 90 ORA $9024,X C0/893E: 9D 23 91 STA $9123,X C0/8941: BD 43 91 LDA $9143,X ; repeat for bpp 3-4 C0/8944: 1D 44 90 ORA $9044,X C0/8947: 9D 43 91 STA $9143,X C0/894A: BD 64 91 LDA $9164,X C0/894D: 1D 43 90 ORA $9043,X C0/8950: 9D 64 91 STA $9164,X C0/8953: BD 63 91 LDA $9163,X C0/8956: 1D 64 90 ORA $9064,X C0/8959: 9D 63 91 STA $9163,X C0/895C: E8 INX C0/895D: E8 INX C0/895E: E0 20 00 CPX #$0020 C0/8961: D0 C3 BNE $8926 C0/8963: 7B TDC C0/8964: 48 PHA C0/8965: AB PLB C0/8966: 60 RTS ; [ Copy Next Tile to Current Tile ] C0/8967: A9 7E LDA #$7E C0/8969: 48 PHA C0/896A: AB PLB C0/896B: A6 00 LDX $00 C0/896D: BD 23 91 LDA $9123,X C0/8970: 9D 03 91 STA $9103,X C0/8973: BD 63 91 LDA $9163,X C0/8976: 9D 43 91 STA $9143,X C0/8979: 7B TDC C0/897A: 9D 23 91 STA $9123,X ; clear next tile C0/897D: 9D 63 91 STA $9163,X C0/8980: E8 INX C0/8981: E0 20 00 CPX #$0020 C0/8984: D0 E7 BNE $896D C0/8986: 7B TDC C0/8987: 48 PHA C0/8988: AB PLB C0/8989: 60 RTS ; [ Load Letter Graphics ] C0/898A: A9 7E LDA #$7E ; clear next letter graphics C0/898C: 8D 83 21 STA $2183 C0/898F: A2 23 90 LDX #$9023 C0/8992: 8E 81 21 STX $2181 C0/8995: 9C 80 21 STZ $2180 C0/8998: 9C 80 21 STZ $2180 C0/899B: 9C 80 21 STZ $2180 C0/899E: 9C 80 21 STZ $2180 C0/89A1: 9C 80 21 STZ $2180 C0/89A4: 9C 80 21 STZ $2180 C0/89A7: 9C 80 21 STZ $2180 C0/89AA: 9C 80 21 STZ $2180 C0/89AD: 9C 80 21 STZ $2180 C0/89B0: 9C 80 21 STZ $2180 C0/89B3: 9C 80 21 STZ $2180 C0/89B6: 9C 80 21 STZ $2180 C0/89B9: 9C 80 21 STZ $2180 C0/89BC: 9C 80 21 STZ $2180 C0/89BF: 9C 80 21 STZ $2180 C0/89C2: 9C 80 21 STZ $2180 C0/89C5: 9C 80 21 STZ $2180 C0/89C8: 9C 80 21 STZ $2180 C0/89CB: 9C 80 21 STZ $2180 C0/89CE: 9C 80 21 STZ $2180 C0/89D1: 9C 80 21 STZ $2180 C0/89D4: 9C 80 21 STZ $2180 C0/89D7: 9C 80 21 STZ $2180 C0/89DA: 9C 80 21 STZ $2180 C0/89DD: A2 63 90 LDX #$9063 C0/89E0: 8E 81 21 STX $2181 C0/89E3: 9C 80 21 STZ $2180 C0/89E6: 9C 80 21 STZ $2180 C0/89E9: 9C 80 21 STZ $2180 C0/89EC: 9C 80 21 STZ $2180 C0/89EF: 9C 80 21 STZ $2180 C0/89F2: 9C 80 21 STZ $2180 C0/89F5: 9C 80 21 STZ $2180 C0/89F8: 9C 80 21 STZ $2180 C0/89FB: 9C 80 21 STZ $2180 C0/89FE: 9C 80 21 STZ $2180 C0/8A01: 9C 80 21 STZ $2180 C0/8A04: 9C 80 21 STZ $2180 C0/8A07: 9C 80 21 STZ $2180 C0/8A0A: 9C 80 21 STZ $2180 C0/8A0D: 9C 80 21 STZ $2180 C0/8A10: 9C 80 21 STZ $2180 C0/8A13: 9C 80 21 STZ $2180 C0/8A16: 9C 80 21 STZ $2180 C0/8A19: 9C 80 21 STZ $2180 C0/8A1C: 9C 80 21 STZ $2180 C0/8A1F: 9C 80 21 STZ $2180 C0/8A22: 9C 80 21 STZ $2180 C0/8A25: 9C 80 21 STZ $2180 C0/8A28: 9C 80 21 STZ $2180 C0/8A2B: C2 20 REP #$20 C0/8A2D: A5 CD LDA $CD ; X = letter number * 22 C0/8A2F: 0A ASL C0/8A30: 85 1E STA $1E C0/8A32: 0A ASL C0/8A33: 85 20 STA $20 C0/8A35: 0A ASL C0/8A36: 0A ASL C0/8A37: 18 CLC C0/8A38: 65 1E ADC $1E C0/8A3A: 18 CLC C0/8A3B: 65 20 ADC $20 C0/8A3D: AA TAX C0/8A3E: 7B TDC C0/8A3F: E2 20 SEP #$20 C0/8A41: A9 7E LDA #$7E C0/8A43: 48 PHA C0/8A44: AB PLB C0/8A45: AD BF 00 LDA $00BF ; current x position of text C0/8A48: 29 07 AND #$07 ; get position within 8x8 tile C0/8A4A: C9 04 CMP #$04 C0/8A4C: D0 03 BNE $8A51 ; branch if not 4 (halfway through tile) C0/8A4E: 4C 23 8B JMP $8B23 C0/8A51: 90 03 BCC $8A56 ; branch if less than 4 C0/8A53: 4C 42 8B JMP $8B42 C0/8A56: 45 02 EOR $02 ; letter needs to shift left C0/8A58: 18 CLC C0/8A59: 69 05 ADC #$05 C0/8A5B: 85 1E STA $1E ; +$1E = 4 - X C0/8A5D: 64 1F STZ $1F C0/8A5F: C2 20 REP #$20 C0/8A61: A4 1E LDY $1E C0/8A63: BF 00 8E C4 LDA $C48E00,X ; letter graphics (first row of pixels) C0/8A67: 0A ASL ; shift left C0/8A68: 88 DEY C0/8A69: D0 FC BNE $8A67 C0/8A6B: 8D 03 90 STA $9003 ; move to buffer C0/8A6E: 4A LSR C0/8A6F: 8D 45 90 STA $9045 ; shadow C0/8A72: A4 1E LDY $1E C0/8A74: BF 02 8E C4 LDA $C48E02,X ; next line C0/8A78: 0A ASL C0/8A79: 88 DEY C0/8A7A: D0 FC BNE $8A78 C0/8A7C: 8D 05 90 STA $9005 C0/8A7F: 4A LSR C0/8A80: 8D 47 90 STA $9047 C0/8A83: A4 1E LDY $1E C0/8A85: BF 04 8E C4 LDA $C48E04,X C0/8A89: 0A ASL C0/8A8A: 88 DEY C0/8A8B: D0 FC BNE $8A89 C0/8A8D: 8D 07 90 STA $9007 C0/8A90: 4A LSR C0/8A91: 8D 49 90 STA $9049 C0/8A94: A4 1E LDY $1E C0/8A96: BF 06 8E C4 LDA $C48E06,X C0/8A9A: 0A ASL C0/8A9B: 88 DEY C0/8A9C: D0 FC BNE $8A9A C0/8A9E: 8D 09 90 STA $9009 C0/8AA1: 4A LSR C0/8AA2: 8D 4B 90 STA $904B C0/8AA5: A4 1E LDY $1E C0/8AA7: BF 08 8E C4 LDA $C48E08,X C0/8AAB: 0A ASL C0/8AAC: 88 DEY C0/8AAD: D0 FC BNE $8AAB C0/8AAF: 8D 0B 90 STA $900B C0/8AB2: 4A LSR C0/8AB3: 8D 4D 90 STA $904D C0/8AB6: A4 1E LDY $1E C0/8AB8: BF 0A 8E C4 LDA $C48E0A,X C0/8ABC: 0A ASL C0/8ABD: 88 DEY C0/8ABE: D0 FC BNE $8ABC C0/8AC0: 8D 0D 90 STA $900D C0/8AC3: 4A LSR C0/8AC4: 8D 4F 90 STA $904F C0/8AC7: A4 1E LDY $1E C0/8AC9: BF 0C 8E C4 LDA $C48E0C,X C0/8ACD: 0A ASL C0/8ACE: 88 DEY C0/8ACF: D0 FC BNE $8ACD C0/8AD1: 8D 0F 90 STA $900F C0/8AD4: 4A LSR C0/8AD5: 8D 51 90 STA $9051 C0/8AD8: A4 1E LDY $1E C0/8ADA: BF 0E 8E C4 LDA $C48E0E,X C0/8ADE: 0A ASL C0/8ADF: 88 DEY C0/8AE0: D0 FC BNE $8ADE C0/8AE2: 8D 11 90 STA $9011 C0/8AE5: 4A LSR C0/8AE6: 8D 53 90 STA $9053 C0/8AE9: A4 1E LDY $1E C0/8AEB: BF 10 8E C4 LDA $C48E10,X C0/8AEF: 0A ASL C0/8AF0: 88 DEY C0/8AF1: D0 FC BNE $8AEF C0/8AF3: 8D 13 90 STA $9013 C0/8AF6: 4A LSR C0/8AF7: 8D 55 90 STA $9055 C0/8AFA: A4 1E LDY $1E C0/8AFC: BF 12 8E C4 LDA $C48E12,X C0/8B00: 0A ASL C0/8B01: 88 DEY C0/8B02: D0 FC BNE $8B00 C0/8B04: 8D 15 90 STA $9015 C0/8B07: 4A LSR C0/8B08: 8D 57 90 STA $9057 C0/8B0B: A4 1E LDY $1E C0/8B0D: BF 14 8E C4 LDA $C48E14,X C0/8B11: 0A ASL C0/8B12: 88 DEY C0/8B13: D0 FC BNE $8B11 C0/8B15: 8D 17 90 STA $9017 C0/8B18: 4A LSR C0/8B19: 8D 59 90 STA $9059 C0/8B1C: 7B TDC C0/8B1D: E2 20 SEP #$20 C0/8B1F: 7B TDC C0/8B20: 48 PHA C0/8B21: AB PLB C0/8B22: 60 RTS C0/8B23: C2 20 REP #$20 ; letter doesn't need to shift C0/8B25: A4 00 LDY $00 C0/8B27: BF 00 8E C4 LDA $C48E00,X ; letter graphics C0/8B2B: 99 03 90 STA $9003,Y C0/8B2E: 4A LSR C0/8B2F: 99 45 90 STA $9045,Y ; shadow C0/8B32: E8 INX C0/8B33: E8 INX C0/8B34: C8 INY C0/8B35: C8 INY C0/8B36: C0 16 00 CPY #$0016 ; 22 bytes C0/8B39: D0 EC BNE $8B27 C0/8B3B: 7B TDC C0/8B3C: E2 20 SEP #$20 C0/8B3E: 7B TDC C0/8B3F: 48 PHA C0/8B40: AB PLB C0/8B41: 60 RTS C0/8B42: 38 SEC ; letter needs to shift right C0/8B43: E9 04 SBC #$04 C0/8B45: 85 1E STA $1E ; +$1E = X - 4 C0/8B47: 64 1F STZ $1F C0/8B49: C2 20 REP #$20 C0/8B4B: A4 1E LDY $1E C0/8B4D: BF 00 8E C4 LDA $C48E00,X ; letter graphics C0/8B51: 4A LSR C0/8B52: 6E 23 90 ROR $9023 C0/8B55: 88 DEY C0/8B56: D0 F9 BNE $8B51 C0/8B58: 8D 03 90 STA $9003 C0/8B5B: 4A LSR C0/8B5C: 8D 45 90 STA $9045 C0/8B5F: AD 23 90 LDA $9023 C0/8B62: 6A ROR C0/8B63: 8D 65 90 STA $9065 C0/8B66: A4 1E LDY $1E C0/8B68: BF 02 8E C4 LDA $C48E02,X C0/8B6C: 4A LSR C0/8B6D: 6E 25 90 ROR $9025 C0/8B70: 88 DEY C0/8B71: D0 F9 BNE $8B6C C0/8B73: 8D 05 90 STA $9005 C0/8B76: 4A LSR C0/8B77: 8D 47 90 STA $9047 C0/8B7A: AD 25 90 LDA $9025 C0/8B7D: 6A ROR C0/8B7E: 8D 67 90 STA $9067 C0/8B81: A4 1E LDY $1E C0/8B83: BF 04 8E C4 LDA $C48E04,X C0/8B87: 4A LSR C0/8B88: 6E 27 90 ROR $9027 C0/8B8B: 88 DEY C0/8B8C: D0 F9 BNE $8B87 C0/8B8E: 8D 07 90 STA $9007 C0/8B91: 4A LSR C0/8B92: 8D 49 90 STA $9049 C0/8B95: AD 27 90 LDA $9027 C0/8B98: 6A ROR C0/8B99: 8D 69 90 STA $9069 C0/8B9C: A4 1E LDY $1E C0/8B9E: BF 06 8E C4 LDA $C48E06,X C0/8BA2: 4A LSR C0/8BA3: 6E 29 90 ROR $9029 C0/8BA6: 88 DEY C0/8BA7: D0 F9 BNE $8BA2 C0/8BA9: 8D 09 90 STA $9009 C0/8BAC: 4A LSR C0/8BAD: 8D 4B 90 STA $904B C0/8BB0: AD 29 90 LDA $9029 C0/8BB3: 6A ROR C0/8BB4: 8D 6B 90 STA $906B C0/8BB7: A4 1E LDY $1E C0/8BB9: BF 08 8E C4 LDA $C48E08,X C0/8BBD: 4A LSR C0/8BBE: 6E 2B 90 ROR $902B C0/8BC1: 88 DEY C0/8BC2: D0 F9 BNE $8BBD C0/8BC4: 8D 0B 90 STA $900B C0/8BC7: 4A LSR C0/8BC8: 8D 4D 90 STA $904D C0/8BCB: AD 2B 90 LDA $902B C0/8BCE: 6A ROR C0/8BCF: 8D 6D 90 STA $906D C0/8BD2: A4 1E LDY $1E C0/8BD4: BF 0A 8E C4 LDA $C48E0A,X C0/8BD8: 4A LSR C0/8BD9: 6E 2D 90 ROR $902D C0/8BDC: 88 DEY C0/8BDD: D0 F9 BNE $8BD8 C0/8BDF: 8D 0D 90 STA $900D C0/8BE2: 4A LSR C0/8BE3: 8D 4F 90 STA $904F C0/8BE6: AD 2D 90 LDA $902D C0/8BE9: 6A ROR C0/8BEA: 8D 6F 90 STA $906F C0/8BED: A4 1E LDY $1E C0/8BEF: BF 0C 8E C4 LDA $C48E0C,X C0/8BF3: 4A LSR C0/8BF4: 6E 2F 90 ROR $902F C0/8BF7: 88 DEY C0/8BF8: D0 F9 BNE $8BF3 C0/8BFA: 8D 0F 90 STA $900F C0/8BFD: 4A LSR C0/8BFE: 8D 51 90 STA $9051 C0/8C01: AD 2F 90 LDA $902F C0/8C04: 6A ROR C0/8C05: 8D 71 90 STA $9071 C0/8C08: A4 1E LDY $1E C0/8C0A: BF 0E 8E C4 LDA $C48E0E,X C0/8C0E: 4A LSR C0/8C0F: 6E 31 90 ROR $9031 C0/8C12: 88 DEY C0/8C13: D0 F9 BNE $8C0E C0/8C15: 8D 11 90 STA $9011 C0/8C18: 4A LSR C0/8C19: 8D 53 90 STA $9053 C0/8C1C: AD 31 90 LDA $9031 C0/8C1F: 6A ROR C0/8C20: 8D 73 90 STA $9073 C0/8C23: A4 1E LDY $1E C0/8C25: BF 10 8E C4 LDA $C48E10,X C0/8C29: 4A LSR C0/8C2A: 6E 33 90 ROR $9033 C0/8C2D: 88 DEY C0/8C2E: D0 F9 BNE $8C29 C0/8C30: 8D 13 90 STA $9013 C0/8C33: 4A LSR C0/8C34: 8D 55 90 STA $9055 C0/8C37: AD 33 90 LDA $9033 C0/8C3A: 6A ROR C0/8C3B: 8D 75 90 STA $9075 C0/8C3E: A4 1E LDY $1E C0/8C40: BF 12 8E C4 LDA $C48E12,X C0/8C44: 4A LSR C0/8C45: 6E 35 90 ROR $9035 C0/8C48: 88 DEY C0/8C49: D0 F9 BNE $8C44 C0/8C4B: 8D 15 90 STA $9015 C0/8C4E: 4A LSR C0/8C4F: 8D 57 90 STA $9057 C0/8C52: AD 35 90 LDA $9035 C0/8C55: 6A ROR C0/8C56: 8D 77 90 STA $9077 C0/8C59: A4 1E LDY $1E C0/8C5B: BF 14 8E C4 LDA $C48E14,X C0/8C5F: 4A LSR C0/8C60: 6E 37 90 ROR $9037 C0/8C63: 88 DEY C0/8C64: D0 F9 BNE $8C5F C0/8C66: 8D 17 90 STA $9017 C0/8C69: 4A LSR C0/8C6A: 8D 59 90 STA $9059 C0/8C6D: AD 37 90 LDA $9037 C0/8C70: 6A ROR C0/8C71: 8D 79 90 STA $9079 C0/8C74: 7B TDC C0/8C75: E2 20 SEP #$20 C0/8C77: 7B TDC C0/8C78: 48 PHA C0/8C79: AB PLB C0/8C7A: 60 RTS ; pointers to unused dialog strings C0/8C7B: .DW $8CAB, $8CAE, $8CB3, $8CB6, $8CB9, $8CBE, $8CC1, $8CC4 C0/8C8B: .DW $8CC9, $8CCC, $8CD6, $8CDE, $8CE1, $8CE4, $8CE9, $8CF1 C0/8C9B: .DW $8CF4, $8CF9, $8CFE, $8D04, $8D08, $8D0B, $8D0F, $8D12 ; dialog strings carried over from FF6j (unused) C0/8CAB: .DB $C7, $C7, $00 C0/8CAE: .DB $1F, $F9, $1F, $F8, $00 C0/8CB3: .DB $BD, $85, $00 C0/8CB6: .DB $BD, $7F, $00 C0/8CB9: .DB $1E, $9F, $1E, $AF, $00 C0/8CBE: .DB $93, $8D, $00 C0/8CC1: .DB $77, $85, $00 C0/8CC4: .DB $1C, $00, $1D, $ED, $00 C0/8CC9: .DB $85, $8D, $00 C0/8CCC: .DB $1F, $2A, $1F, $78, $1F, $86, $1F, $A6, $D0, $00 C0/8CD6: .DB $1F, $70, $1F, $64, $1F, $00 C0/8CDE: .DB $6B, $A7, $00 C0/8CE1: .DB $73, $9B, $00 C0/8CE4: .DB $1E, $DA, $1C, $03, $00 C0/8CE9: .DB $1F, $20, $1F, $92, $1F, $B8, $D0, $00 C0/8CF1: .DB $B9, $3F, $00 C0/8CF4: .DB $1C, $04, $1E, $0D, $00 C0/8CF9: .DB $45, $33, $35, $AB, $00 C0/8CFE: .DB $1F, $76, $1F, $46, $D0, $00 C0/8D04: .DB $9B, $1D, $E6, $00 C0/8D08: .DB $37, $BF, $00 C0/8D0B: .DB $85, $6F, $AD, $00 C0/8D0F: .DB $3F, $D2, $00 C0/8D12: .DB $1E, $23, $1E, $01, $00 ; ---------------------------------------[ Field: BG Animation ]---------------------------------------- ; [ Init Palette Animation ] C0/8D17: AD 3A 05 LDA $053A C0/8D1A: D0 01 BNE $8D1D C0/8D1C: 60 RTS C0/8D1D: 3A DEC C0/8D1E: 8D 02 42 STA $4202 C0/8D21: A9 0C LDA #$0C C0/8D23: 8D 03 42 STA $4203 C0/8D26: EA NOP C0/8D27: EA NOP C0/8D28: EA NOP C0/8D29: AE 16 42 LDX $4216 C0/8D2C: A4 00 LDY $00 C0/8D2E: BF 25 98 C0 LDA $C09825,X ; palette animation data C0/8D32: 99 EA 10 STA $10EA,Y C0/8D35: BF 26 98 C0 LDA $C09826,X C0/8D39: 99 E8 10 STA $10E8,Y C0/8D3C: BF 27 98 C0 LDA $C09827,X C0/8D40: 99 EB 10 STA $10EB,Y C0/8D43: BF 28 98 C0 LDA $C09828,X C0/8D47: 99 EC 10 STA $10EC,Y C0/8D4A: BF 29 98 C0 LDA $C09829,X C0/8D4E: 99 ED 10 STA $10ED,Y C0/8D51: BF 2A 98 C0 LDA $C0982A,X C0/8D55: 99 EE 10 STA $10EE,Y C0/8D58: A9 00 LDA #$00 C0/8D5A: 99 E7 10 STA $10E7,Y C0/8D5D: 99 E9 10 STA $10E9,Y C0/8D60: C2 21 REP #$21 C0/8D62: 8A TXA C0/8D63: 69 06 00 ADC #$0006 C0/8D66: AA TAX C0/8D67: 7B TDC C0/8D68: E2 20 SEP #$20 C0/8D6A: 98 TYA C0/8D6B: 18 CLC C0/8D6C: 69 08 ADC #$08 C0/8D6E: A8 TAY C0/8D6F: C9 10 CMP #$10 C0/8D71: D0 BB BNE $8D2E C0/8D73: 60 RTS ; [ Update Palette Animation ] pal_anima: C0/8D74: AD 3A 05 LDA $053A ; palette animation index C0/8D77: F0 4E BEQ $8DC7 C0/8D79: A4 00 LDY $00 C0/8D7B: B9 EA 10 LDA $10EA,Y ; palette animation type C0/8D7E: 30 3B BMI $8DBB C0/8D80: 29 F0 AND #$F0 C0/8D82: 4A LSR C0/8D83: 4A LSR C0/8D84: 4A LSR C0/8D85: 4A LSR C0/8D86: D0 0A BNE $8D92 ; 0 (counter only) C0/8D88: 20 C8 8D JSR $8DC8 ; update palette animation counters C0/8D8B: C9 00 CMP #$00 C0/8D8D: D0 2C BNE $8DBB ; branch if no reset C0/8D8F: 4C BB 8D JMP $8DBB ; branch anyway C0/8D92: 3A DEC C0/8D93: D0 0D BNE $8DA2 ; 1 (cycle) C0/8D95: 20 C8 8D JSR $8DC8 ; update palette animation counters C0/8D98: C9 00 CMP #$00 C0/8D9A: D0 1F BNE $8DBB C0/8D9C: 20 A9 8E JSR $8EA9 ; update colors (cycle) C0/8D9F: 4C BB 8D JMP $8DBB ; 2 (ROM) C0/8DA2: 3A DEC C0/8DA3: D0 0B BNE $8DB0 C0/8DA5: 20 C8 8D JSR $8DC8 ; update palette animation counters C0/8DA8: 5A PHY C0/8DA9: 20 6B 8E JSR $8E6B ; update colors (ROM) C0/8DAC: 7A PLY C0/8DAD: 4C BB 8D JMP $8DBB C0/8DB0: 3A DEC C0/8DB1: D0 08 BNE $8DBB ; 3 (pulse) C0/8DB3: 20 C8 8D JSR $8DC8 ; update palette animation counters C0/8DB6: 5A PHY C0/8DB7: 20 04 8E JSR $8E04 ; update colors (subtract pulse) C0/8DBA: 7A PLY C0/8DBB: 98 TYA C0/8DBC: 18 CLC C0/8DBD: 69 08 ADC #$08 C0/8DBF: A8 TAY C0/8DC0: C9 10 CMP #$10 C0/8DC2: F0 03 BEQ $8DC7 C0/8DC4: 4C 7B 8D JMP $8D7B C0/8DC7: 60 RTS ; [ Update Palette Animation Counters ] C0/8DC8: B9 E7 10 LDA $10E7,Y ; increment frame counter C0/8DCB: 1A INC C0/8DCC: 99 E7 10 STA $10E7,Y C0/8DCF: D9 E8 10 CMP $10E8,Y C0/8DD2: D0 1B BNE $8DEF C0/8DD4: A9 00 LDA #$00 C0/8DD6: 99 E7 10 STA $10E7,Y C0/8DD9: B9 E9 10 LDA $10E9,Y ; increment color counter C0/8DDC: 1A INC C0/8DDD: 99 E9 10 STA $10E9,Y C0/8DE0: B9 EA 10 LDA $10EA,Y C0/8DE3: 29 0F AND #$0F C0/8DE5: D9 E9 10 CMP $10E9,Y C0/8DE8: D0 05 BNE $8DEF C0/8DEA: 7B TDC ; return 0 for reset C0/8DEB: 99 E9 10 STA $10E9,Y C0/8DEE: 60 RTS C0/8DEF: A9 01 LDA #$01 ; return 1 for no reset C0/8DF1: 60 RTS C0/8DF2: .DB $70, $80, $90, $A0, $B0, $C0, $D0, $E0, $F0 C0/8DFB: .DB $E0, $D0, $C0, $B0, $A0, $90, $80, $70, $60 ; [ ] C0/8E04: B9 E9 10 LDA $10E9,Y C0/8E07: AA TAX C0/8E08: BF F2 8D C0 LDA $C08DF2,X C0/8E0C: 8D 02 42 STA $4202 C0/8E0F: B9 EB 10 LDA $10EB,Y C0/8E12: AA TAX C0/8E13: B9 EC 10 LDA $10EC,Y C0/8E16: 1A INC C0/8E17: 1A INC C0/8E18: A8 TAY C0/8E19: BF 00 72 7E LDA $7E7200,X C0/8E1D: 29 1F AND #$1F C0/8E1F: 8D 03 42 STA $4203 C0/8E22: EA NOP C0/8E23: EA NOP C0/8E24: EA NOP C0/8E25: AD 17 42 LDA $4217 C0/8E28: 29 1F AND #$1F C0/8E2A: 85 1E STA $1E C0/8E2C: BF 01 72 7E LDA $7E7201,X C0/8E30: 29 7C AND #$7C C0/8E32: 8D 03 42 STA $4203 C0/8E35: EA NOP C0/8E36: EA NOP C0/8E37: EA NOP C0/8E38: AD 17 42 LDA $4217 C0/8E3B: 29 7C AND #$7C C0/8E3D: 85 1F STA $1F C0/8E3F: C2 20 REP #$20 C0/8E41: BF 00 72 7E LDA $7E7200,X C0/8E45: 29 E0 03 AND #$03E0 C0/8E48: 4A LSR C0/8E49: 4A LSR C0/8E4A: E2 20 SEP #$20 C0/8E4C: 8D 03 42 STA $4203 C0/8E4F: EA NOP C0/8E50: EA NOP C0/8E51: EA NOP C0/8E52: AD 17 42 LDA $4217 C0/8E55: 29 F8 AND #$F8 C0/8E57: C2 20 REP #$20 C0/8E59: 0A ASL C0/8E5A: 0A ASL C0/8E5B: 05 1E ORA $1E C0/8E5D: 9F 00 74 7E STA $7E7400,X C0/8E61: 7B TDC C0/8E62: E2 20 SEP #$20 C0/8E64: E8 INX C0/8E65: E8 INX C0/8E66: 88 DEY C0/8E67: 88 DEY C0/8E68: D0 AF BNE $8E19 C0/8E6A: 60 RTS ; [ ] pal_transfer: C0/8E6B: B9 EB 10 LDA $10EB,Y C0/8E6E: 18 CLC C0/8E6F: 69 00 ADC #$00 C0/8E71: 85 2A STA $2A C0/8E73: A9 74 LDA #$74 C0/8E75: 85 2B STA $2B C0/8E77: A9 7E LDA #$7E C0/8E79: 85 2C STA $2C C0/8E7B: B9 E9 10 LDA $10E9,Y C0/8E7E: C2 20 REP #$20 C0/8E80: 0A ASL C0/8E81: 0A ASL C0/8E82: 0A ASL C0/8E83: 0A ASL C0/8E84: 0A ASL C0/8E85: 18 CLC C0/8E86: 79 ED 10 ADC $10ED,Y ; ROM color offset C0/8E89: AA TAX C0/8E8A: 7B TDC C0/8E8B: E2 20 SEP #$20 C0/8E8D: B9 EC 10 LDA $10EC,Y C0/8E90: A8 TAY C0/8E91: C8 INY C0/8E92: C8 INY C0/8E93: C2 20 REP #$20 C0/8E95: BF 00 F2 E6 LDA $E6F200,X ; palette animation color palette C0/8E99: 87 2A STA [$2A] C0/8E9B: E6 2A INC $2A C0/8E9D: E6 2A INC $2A C0/8E9F: E8 INX C0/8EA0: E8 INX C0/8EA1: 88 DEY C0/8EA2: 88 DEY C0/8EA3: D0 F0 BNE $8E95 C0/8EA5: 7B TDC C0/8EA6: E2 20 SEP #$20 C0/8EA8: 60 RTS ; [ ] C0/8EA9: B9 EB 10 LDA $10EB,Y C0/8EAC: AA TAX C0/8EAD: 18 CLC C0/8EAE: 79 EC 10 ADC $10EC,Y C0/8EB1: 85 20 STA $20 C0/8EB3: 64 21 STZ $21 C0/8EB5: C2 20 REP #$20 C0/8EB7: BF 00 74 7E LDA $7E7400,X C0/8EBB: 85 1E STA $1E C0/8EBD: BF 02 74 7E LDA $7E7402,X C0/8EC1: 9F 00 74 7E STA $7E7400,X C0/8EC5: E8 INX C0/8EC6: E8 INX C0/8EC7: E4 20 CPX $20 C0/8EC9: D0 F2 BNE $8EBD C0/8ECB: A5 1E LDA $1E C0/8ECD: 9F 00 74 7E STA $7E7400,X C0/8ED1: 7B TDC C0/8ED2: E2 20 SEP #$20 C0/8ED4: 60 RTS ; [ Init BG Animation ] init_animation: C0/8ED5: 20 DC 8E JSR $8EDC ; init bg1/bg2 animation C0/8ED8: 20 B1 8F JSR $8FB1 ; init bg3 animation C0/8EDB: 60 RTS ; [ Init BG1/BG2 Animation ] init_bg12_anima: C0/8EDC: AD 3B 05 LDA $053B ; bg1/bg2 animation index C0/8EDF: 29 1F AND #$1F C0/8EE1: 0A ASL C0/8EE2: AA TAX C0/8EE3: C2 20 REP #$20 C0/8EE5: BF D5 91 C0 LDA $C091D5,X ; pointer to bg1/bg2 animation data C0/8EE9: AA TAX C0/8EEA: 7B TDC C0/8EEB: E2 20 SEP #$20 C0/8EED: A4 00 LDY $00 C0/8EEF: A9 E6 LDA #$E6 C0/8EF1: 99 6D 10 STA $106D,Y ; graphics bank = $E6 C0/8EF4: C2 21 REP #$21 C0/8EF6: 7B TDC C0/8EF7: 99 69 10 STA $1069,Y ; clear animation counter C0/8EFA: BF FF 91 C0 LDA $C091FF,X C0/8EFE: 99 6B 10 STA $106B,Y ; animation speed C0/8F01: BF 01 92 C0 LDA $C09201,X C0/8F05: 99 6E 10 STA $106E,Y ; frame 1 pointer C0/8F08: BF 03 92 C0 LDA $C09203,X C0/8F0C: 99 70 10 STA $1070,Y ; frame 2 pointer C0/8F0F: BF 05 92 C0 LDA $C09205,X C0/8F13: 99 72 10 STA $1072,Y ; frame 3 pointer C0/8F16: BF 07 92 C0 LDA $C09207,X C0/8F1A: 99 74 10 STA $1074,Y ; frame 4 pointer C0/8F1D: 8A TXA C0/8F1E: 69 0A 00 ADC #$000A ; next tile (8 tiles total) C0/8F21: AA TAX C0/8F22: 98 TYA C0/8F23: 69 0D 00 ADC #$000D C0/8F26: A8 TAY C0/8F27: 7B TDC C0/8F28: E2 20 SEP #$20 C0/8F2A: C0 68 00 CPY #$0068 C0/8F2D: D0 C0 BNE $8EEF C0/8F2F: A9 10 LDA #$10 ; $1A = tile counter (16 tiles, last 8 don't get animated) C0/8F31: 85 1A STA $1A C0/8F33: A0 00 9F LDY #$9F00 ; destination address = $7E9F00 C0/8F36: 8C 81 21 STY $2181 C0/8F39: A9 7E LDA #$7E C0/8F3B: 8D 83 21 STA $2183 C0/8F3E: AD 3B 05 LDA $053B ; bg1/bg2 animation index C0/8F41: 29 1F AND #$1F C0/8F43: 0A ASL C0/8F44: AA TAX C0/8F45: C2 20 REP #$20 C0/8F47: BF D5 91 C0 LDA $C091D5,X ; pointer to bg1/bg2 animation data C0/8F4B: A8 TAY C0/8F4C: 7B TDC C0/8F4D: E2 20 SEP #$20 C0/8F4F: BB TYX C0/8F50: C2 21 REP #$21 C0/8F52: BF 01 92 C0 LDA $C09201,X ; frame 1 pointer C0/8F56: AA TAX C0/8F57: 7B TDC C0/8F58: E2 20 SEP #$20 C0/8F5A: A9 80 LDA #$80 ; $1B = tile graphics counter (4 frames per tile, 32 bytes per frame) C0/8F5C: 85 1B STA $1B C0/8F5E: BF 00 00 E6 LDA $E60000,X ; copy tile graphics to RAM C0/8F62: 8D 80 21 STA $2180 C0/8F65: E8 INX C0/8F66: C6 1B DEC $1B C0/8F68: D0 F4 BNE $8F5E C0/8F6A: C2 20 REP #$20 C0/8F6C: 98 TYA C0/8F6D: 18 CLC C0/8F6E: 69 0A 00 ADC #$000A C0/8F71: A8 TAY C0/8F72: 7B TDC C0/8F73: E2 20 SEP #$20 C0/8F75: C6 1A DEC $1A C0/8F77: D0 D6 BNE $8F4F C0/8F79: 9C 0C 42 STZ $420C ; DMA graphics to VRAM C0/8F7C: 9C 0B 42 STZ $420B C0/8F7F: A9 80 LDA #$80 C0/8F81: 8D 15 21 STA $2115 C0/8F84: A2 00 28 LDX #$2800 ; destination = $2800 VRAM C0/8F87: 8E 16 21 STX $2116 C0/8F8A: A9 41 LDA #$41 C0/8F8C: 8D 00 43 STA $4300 C0/8F8F: A9 18 LDA #$18 C0/8F91: 8D 01 43 STA $4301 C0/8F94: A2 00 9F LDX #$9F00 ; source = $7E9F00 C0/8F97: 8E 02 43 STX $4302 C0/8F9A: A9 7E LDA #$7E C0/8F9C: 8D 04 43 STA $4304 C0/8F9F: 8D 07 43 STA $4307 C0/8FA2: A2 00 08 LDX #$0800 ; size = $0800 C0/8FA5: 8E 05 43 STX $4305 C0/8FA8: A9 01 LDA #$01 C0/8FAA: 8D 0B 42 STA $420B C0/8FAD: 9C 0B 42 STZ $420B C0/8FB0: 60 RTS ; [ Init BG3 Animation ] init_bg3_anima: C0/8FB1: AD 3B 05 LDA $053B ; bg3 animation index C0/8FB4: 29 E0 AND #$E0 C0/8FB6: 4A LSR C0/8FB7: 4A LSR C0/8FB8: 4A LSR C0/8FB9: 4A LSR C0/8FBA: 4A LSR C0/8FBB: D0 01 BNE $8FBE ; return if not valid C0/8FBD: 60 RTS C0/8FBE: 3A DEC C0/8FBF: A8 TAY C0/8FC0: 0A ASL C0/8FC1: AA TAX C0/8FC2: C2 20 REP #$20 C0/8FC4: BF 9F 97 C0 LDA $C0979F,X ; pointer to bg3 animation data C0/8FC8: AA TAX C0/8FC9: 7B TDC C0/8FCA: 8D D1 10 STA $10D1 ; clear animation counter C0/8FCD: BF AD 97 C0 LDA $C097AD,X C0/8FD1: 8D D3 10 STA $10D3 ; animation speed C0/8FD4: BF AF 97 C0 LDA $C097AF,X C0/8FD8: 8D D5 10 STA $10D5 ; size C0/8FDB: BF B1 97 C0 LDA $C097B1,X C0/8FDF: 8D D7 10 STA $10D7 ; frame 1 pointer C0/8FE2: BF B3 97 C0 LDA $C097B3,X C0/8FE6: 8D D9 10 STA $10D9 ; frame 2 pointer C0/8FE9: BF B5 97 C0 LDA $C097B5,X C0/8FED: 8D DB 10 STA $10DB ; frame 3 pointer C0/8FF0: BF B7 97 C0 LDA $C097B7,X C0/8FF4: 8D DD 10 STA $10DD ; frame 4 pointer C0/8FF7: BF B9 97 C0 LDA $C097B9,X C0/8FFB: 8D DF 10 STA $10DF ; frame 5 pointer C0/8FFE: BF BB 97 C0 LDA $C097BB,X C0/9002: 8D E1 10 STA $10E1 ; frame 6 pointer C0/9005: BF BD 97 C0 LDA $C097BD,X C0/9009: 8D E3 10 STA $10E3 ; frame 7 pointer C0/900C: BF BF 97 C0 LDA $C097BF,X C0/9010: 8D E5 10 STA $10E5 ; frame 8 pointer C0/9013: 7B TDC C0/9014: E2 20 SEP #$20 C0/9016: 98 TYA C0/9017: 85 1A STA $1A C0/9019: 0A ASL C0/901A: 18 CLC C0/901B: 65 1A ADC $1A C0/901D: AA TAX C0/901E: C2 21 REP #$21 C0/9020: BF A0 CD E6 LDA $E6CDA0,X ; pointer to bg3 animation graphics (+$E6CDC0) C0/9024: 18 CLC C0/9025: 69 C0 CD ADC #$CDC0 C0/9028: 85 F3 STA $F3 C0/902A: 7B TDC C0/902B: E2 20 SEP #$20 C0/902D: A9 E6 LDA #$E6 C0/902F: 85 F5 STA $F5 C0/9031: A2 00 BF LDX #$BF00 ; destination = $7EBF00 C0/9034: 86 F6 STX $F6 C0/9036: A9 7E LDA #$7E C0/9038: 85 F8 STA $F8 C0/903A: 22 6C 04 C0 JSL $C0046C ; decompress C0/903E: 60 RTS ; [ Copy BG1/BG2 Animation Graphics to VRAM ] ; called every other frame during IRQ (30Hz) C0/903F: AD 3B 05 LDA $053B C0/9042: D0 0C BNE $9050 C0/9044: A2 08 00 LDX #$0008 C0/9047: CA DEX C0/9048: D0 FD BNE $9047 C0/904A: A9 80 LDA #$80 C0/904C: 8D 00 21 STA $2100 C0/904F: 60 RTS C0/9050: 9C 0B 42 STZ $420B C0/9053: A9 80 LDA #$80 C0/9055: 8D 15 21 STA $2115 C0/9058: A2 00 28 LDX #$2800 C0/905B: 8E 16 21 STX $2116 C0/905E: A9 41 LDA #$41 C0/9060: 8D 00 43 STA $4300 C0/9063: A9 18 LDA #$18 C0/9065: 8D 01 43 STA $4301 C0/9068: A2 00 10 LDX #$1000 ; nonzero dp C0/906B: DA PHX C0/906C: 2B PLD C0/906D: E2 10 SEP #$10 C0/906F: C2 21 REP #$21 C0/9071: A0 01 LDY #$01 C0/9073: EA NOP C0/9074: EA NOP C0/9075: EA NOP C0/9076: EA NOP C0/9077: EA NOP C0/9078: A2 80 LDX #$80 C0/907A: 8E 00 21 STX $2100 C0/907D: A5 69 LDA $69 C0/907F: 18 CLC C0/9080: 65 6B ADC $6B C0/9082: 85 69 STA $69 C0/9084: 29 00 06 AND #$0600 C0/9087: EB XBA C0/9088: AA TAX C0/9089: B5 6E LDA $6E,X ; graphics pointer C0/908B: 8D 02 43 STA $4302 C0/908E: A6 6D LDX $6D ; graphics bank C0/9090: 8E 04 43 STX $4304 C0/9093: A2 80 LDX #$80 C0/9095: 8E 05 43 STX $4305 C0/9098: 8C 0B 42 STY $420B C0/909B: A5 76 LDA $76 C0/909D: 18 CLC C0/909E: 65 78 ADC $78 C0/90A0: 85 76 STA $76 C0/90A2: 29 00 06 AND #$0600 C0/90A5: EB XBA C0/90A6: AA TAX C0/90A7: B5 7B LDA $7B,X C0/90A9: 8D 02 43 STA $4302 C0/90AC: A6 7A LDX $7A C0/90AE: 8E 04 43 STX $4304 C0/90B1: A2 80 LDX #$80 C0/90B3: 8E 05 43 STX $4305 C0/90B6: 8C 0B 42 STY $420B C0/90B9: A5 83 LDA $83 C0/90BB: 18 CLC C0/90BC: 65 85 ADC $85 C0/90BE: 85 83 STA $83 C0/90C0: 29 00 06 AND #$0600 C0/90C3: EB XBA C0/90C4: AA TAX C0/90C5: B5 88 LDA $88,X C0/90C7: 8D 02 43 STA $4302 C0/90CA: A6 87 LDX $87 C0/90CC: 8E 04 43 STX $4304 C0/90CF: A2 80 LDX #$80 C0/90D1: 8E 05 43 STX $4305 C0/90D4: 8C 0B 42 STY $420B C0/90D7: A5 90 LDA $90 C0/90D9: 18 CLC C0/90DA: 65 92 ADC $92 C0/90DC: 85 90 STA $90 C0/90DE: 29 00 06 AND #$0600 C0/90E1: EB XBA C0/90E2: AA TAX C0/90E3: B5 95 LDA $95,X C0/90E5: 8D 02 43 STA $4302 C0/90E8: A6 94 LDX $94 C0/90EA: 8E 04 43 STX $4304 C0/90ED: A2 80 LDX #$80 C0/90EF: 8E 05 43 STX $4305 C0/90F2: 8C 0B 42 STY $420B C0/90F5: A5 9D LDA $9D C0/90F7: 18 CLC C0/90F8: 65 9F ADC $9F C0/90FA: 85 9D STA $9D C0/90FC: 29 00 06 AND #$0600 C0/90FF: EB XBA C0/9100: AA TAX C0/9101: B5 A2 LDA $A2,X C0/9103: 8D 02 43 STA $4302 C0/9106: A6 A1 LDX $A1 C0/9108: 8E 04 43 STX $4304 C0/910B: A2 80 LDX #$80 C0/910D: 8E 05 43 STX $4305 C0/9110: 8C 0B 42 STY $420B C0/9113: A5 AA LDA $AA C0/9115: 18 CLC C0/9116: 65 AC ADC $AC C0/9118: 85 AA STA $AA C0/911A: 29 00 06 AND #$0600 C0/911D: EB XBA C0/911E: AA TAX C0/911F: B5 AF LDA $AF,X C0/9121: 8D 02 43 STA $4302 C0/9124: A6 AE LDX $AE C0/9126: 8E 04 43 STX $4304 C0/9129: A2 80 LDX #$80 C0/912B: 8E 05 43 STX $4305 C0/912E: 8C 0B 42 STY $420B C0/9131: A5 B7 LDA $B7 C0/9133: 18 CLC C0/9134: 65 B9 ADC $B9 C0/9136: 85 B7 STA $B7 C0/9138: 29 00 06 AND #$0600 C0/913B: EB XBA C0/913C: AA TAX C0/913D: B5 BC LDA $BC,X C0/913F: 8D 02 43 STA $4302 C0/9142: A6 BB LDX $BB C0/9144: 8E 04 43 STX $4304 C0/9147: A2 80 LDX #$80 C0/9149: 8E 05 43 STX $4305 C0/914C: 8C 0B 42 STY $420B C0/914F: A5 C4 LDA $C4 C0/9151: 18 CLC C0/9152: 65 C6 ADC $C6 C0/9154: 85 C4 STA $C4 C0/9156: 29 00 06 AND #$0600 C0/9159: EB XBA C0/915A: AA TAX C0/915B: B5 C9 LDA $C9,X C0/915D: 8D 02 43 STA $4302 C0/9160: A6 C8 LDX $C8 C0/9162: 8E 04 43 STX $4304 C0/9165: A2 80 LDX #$80 C0/9167: 8E 05 43 STX $4305 C0/916A: 8C 0B 42 STY $420B C0/916D: E2 20 SEP #$20 C0/916F: C2 10 REP #$10 C0/9171: A2 00 00 LDX #$0000 C0/9174: DA PHX C0/9175: 2B PLD C0/9176: 7B TDC C0/9177: 60 RTS ; [ Copy BG3 Animation Graphics to VRAM ] ; called every other frame during IRQ (30Hz) C0/9178: 9C 0B 42 STZ $420B ; disable dma C0/917B: A9 80 LDA #$80 C0/917D: 8D 15 21 STA $2115 ; vram settings C0/9180: A2 00 30 LDX #$3000 C0/9183: 8E 16 21 STX $2116 ; destination = $3000 (vram) C0/9186: A9 41 LDA #$41 C0/9188: 8D 00 43 STA $4300 ; dma settings C0/918B: A9 18 LDA #$18 C0/918D: 8D 01 43 STA $4301 ; dma to $2118 (vram) C0/9190: A2 05 00 LDX #$0005 C0/9193: CA DEX C0/9194: D0 FD BNE $9193 ; wait C0/9196: A9 80 LDA #$80 C0/9198: 8D 00 21 STA $2100 ; screen off C0/919B: AD 3B 05 LDA $053B ; bg3 animation index C0/919E: 29 E0 AND #$E0 C0/91A0: F0 32 BEQ $91D4 ; return if bg3 animation is disabled C0/91A2: C2 21 REP #$21 C0/91A4: AD D5 10 LDA $10D5 ; size C0/91A7: 8D 05 43 STA $4305 C0/91AA: AD D1 10 LDA $10D1 ; add animation speed to animation counter C0/91AD: 6D D3 10 ADC $10D3 C0/91B0: 8D D1 10 STA $10D1 C0/91B3: 7B TDC C0/91B4: E2 20 SEP #$20 C0/91B6: AD D2 10 LDA $10D2 ; frame index C0/91B9: 29 0E AND #$0E C0/91BB: AA TAX C0/91BC: C2 21 REP #$21 C0/91BE: BD D7 10 LDA $10D7,X ; frame pointer C0/91C1: 69 00 BF ADC #$BF00 C0/91C4: 8D 02 43 STA $4302 C0/91C7: 7B TDC C0/91C8: E2 20 SEP #$20 C0/91CA: A9 7E LDA #$7E C0/91CC: 8D 04 43 STA $4304 C0/91CF: A9 01 LDA #$01 ; enable dma C0/91D1: 8D 0B 42 STA $420B C0/91D4: 60 RTS anima_info_ptr: C0/91D5: anima_info_data: C0/91FF: anima3_info_ptr: C0/979F: ... anima3_info_data: C0/97AD: ... ; -------------------------------------------[ Field: Events ]------------------------------------------ ; [ Init Event Engine ] init_event: C0/989D: A6 00 LDX $00 C0/989F: 86 E3 STX $E3 ; clear event pause counter C0/98A1: 86 E8 STX $E8 ; clear event stack C0/98A3: A2 00 00 LDX #$0000 ; $CA0000 (no event) C0/98A6: 86 E5 STX $E5 C0/98A8: A9 CA LDA #$CA C0/98AA: 85 E7 STA $E7 C0/98AC: A2 00 00 LDX #$0000 C0/98AF: 8E 94 05 STX $0594 C0/98B2: A9 CA LDA #$CA C0/98B4: 8D 96 05 STA $0596 C0/98B7: A9 01 LDA #$01 ; set event loop count C0/98B9: 8F C4 05 00 STA $0005C4 C0/98BD: A9 80 LDA #$80 ; object to wait for C0/98BF: 85 E2 STA $E2 C0/98C1: 64 E1 STZ $E1 ; event not waiting for anything C0/98C3: 60 RTS ; event command jump table (starts at $35) C0/98C4: .DW $9C44, $9C6F, $9C8F C0/98CA: .DW $9D0E, $9D16, $9D1E, $9D2E, $9D6D, $9E3C, $9E67, $9D3B C0/98DA: .DW $A07C, $A2FA, $A336, $9CA9, $9CCA, $9CE2, $9CEA, $9D03 C0/98EA: .DW $A475, $A4A6, $A4B0, $A4BC, $A591, $A578, $A4F9, $A5F3 C0/98FA: .DW $A5FD, $A640, $A686, $A6C5, $A784, $A795, $A7BA, $A7D0 C0/990A: .DW $A7E6, $A80A, $A817, $A826, $A82D, $A838, $A8CE, $A964 C0/991A: .DW $A9FA, $AA3D, $AACB, $AADB, $AAE9, $AB09, $B91A, $B91A C0/992A: .DW $B91A, $B91A, $AB47, $AB55, $AC0B, $B91A, $B91A, $B91A C0/993A: .DW $A881, $A917, $A9AD, $AC45, $AC62, $AC1F, $B91A, $9F32 C0/994A: .DW $9C7F, $A36A, $A42A, $A441, $A455, $A465, $A39A, $A03A C0/995A: .DW $ACF0, $AD2D, $A570, $B91A, $AD50, $AD7F, $ADB8, $ADD7 C0/996A: .DW $AE2D, $AE47, $AE61, $AE7B, $AF3E, $9FCE, $A54E, $AFF8 C0/997A: .DW $B002, $B23F, $B249, $B253, $B25D, $B267, $A7F0, $A7FD C0/998A: .DW $B00F, $B035, $B0B2, $B06D, $B08C, $B09C, $B91A, $B91A C0/999A: .DW $B0E0, $B10E, $B130, $B91A, $B91A, $B91A, $BA09, $BA14 C0/99AA: .DW $BA51, $B966, $B992, $B91B, $B95E, $BA69, $B9C5, $A503 C0/99BA: .DW $B138, $B145, $B1A1, $B1DF, $B21D, $B227, $B6D3, $B299 C0/99CA: .DW $B6AB, $B6BF, $BA31, $B9BE, $B16F, $B271, $B6F7, $B9E7 C0/99DA: .DW $B2C8, $B2C8, $B2C8, $B2C8, $B2C8, $B2C8, $B2C8, $B2C8 C0/99EA: .DW $B32D, $B32D, $B32D, $B32D, $B32D, $B32D, $B32D, $B32D C0/99FA: .DW $B593, $B5CF, $B5A7, $B5E3, $B5BB, $B5F7, $B60B, $B65B C0/9A0A: .DW $B61F, $B66F, $B633, $B683, $B647, $B697, $B40B, $B465 C0/9A1A: .DW $B513, $B51E, $B4B9, $B3B7, $B39E, $B91A, $B91A, $B394 C0/9A2A: .DW $B529, $B53C, $B556, $B571, $B91A, $B91A, $B91A, $B7AA C0/9A3A: .DW $B780, $B7D4, $B811, $B827, $B854, $B85E, $B889, $B8A1 C0/9A4A: .DW $B8AF, $B8BA, $B8C7, $B8D2, $B91A, $B8D2, $B8D7, $B91A ; [ Execute Events ] narita_event: C0/9A5A: E6 47 INC $47 C0/9A5C: A5 84 LDA $84 C0/9A5E: D0 0D BNE $9A6D C0/9A60: A5 58 LDA $58 C0/9A62: D0 06 BNE $9A6A C0/9A64: A5 47 LDA $47 C0/9A66: 29 03 AND #$03 C0/9A68: D0 03 BNE $9A6D C0/9A6A: 20 4A 71 JSR $714A ; update character objects C0/9A6D: A6 E3 LDX $E3 ; decrement event pause counter C0/9A6F: F0 04 BEQ $9A75 C0/9A71: CA DEX C0/9A72: 86 E3 STX $E3 C0/9A74: 60 RTS C0/9A75: AD 98 07 LDA $0798 ; C0/9A78: F0 01 BEQ $9A7B C0/9A7A: 60 RTS C0/9A7B: AD 5A 05 LDA $055A ; C0/9A7E: F0 04 BEQ $9A84 C0/9A80: C9 05 CMP #$05 C0/9A82: D0 F6 BNE $9A7A C0/9A84: AD 5B 05 LDA $055B C0/9A87: F0 04 BEQ $9A8D C0/9A89: C9 05 CMP #$05 C0/9A8B: D0 ED BNE $9A7A C0/9A8D: AD 5C 05 LDA $055C C0/9A90: F0 04 BEQ $9A96 C0/9A92: C9 05 CMP #$05 C0/9A94: D0 E4 BNE $9A7A C0/9A96: 20 81 BA JSR $BA81 ; C0/9A99: A5 E1 LDA $E1 C0/9A9B: 10 21 BPL $9ABE C0/9A9D: A5 E2 LDA $E2 C0/9A9F: 8D 02 42 STA $4202 C0/9AA2: A9 29 LDA #$29 C0/9AA4: 8D 03 42 STA $4203 C0/9AA7: EA NOP C0/9AA8: EA NOP C0/9AA9: EA NOP C0/9AAA: EA NOP C0/9AAB: AC 16 42 LDY $4216 C0/9AAE: B9 7C 08 LDA $087C,Y C0/9AB1: 29 0F AND #$0F C0/9AB3: F0 01 BEQ $9AB6 C0/9AB5: 60 RTS C0/9AB6: A5 E1 LDA $E1 C0/9AB8: 29 7F AND #$7F C0/9ABA: 85 E1 STA $E1 C0/9ABC: 80 5D BRA $9B1B C0/9ABE: A5 E1 LDA $E1 C0/9AC0: 29 40 AND #$40 C0/9AC2: F0 0C BEQ $9AD0 C0/9AC4: A5 4A LDA $4A C0/9AC6: F0 01 BEQ $9AC9 C0/9AC8: 60 RTS C0/9AC9: A5 E1 LDA $E1 C0/9ACB: 29 BF AND #$BF C0/9ACD: 85 E1 STA $E1 C0/9ACF: 60 RTS C0/9AD0: A5 E1 LDA $E1 C0/9AD2: 29 20 AND #$20 C0/9AD4: F0 45 BEQ $9B1B C0/9AD6: AD 41 05 LDA $0541 C0/9AD9: CD 57 05 CMP $0557 C0/9ADC: F0 0D BEQ $9AEB C0/9ADE: 1A INC C0/9ADF: CD 57 05 CMP $0557 C0/9AE2: F0 07 BEQ $9AEB C0/9AE4: 3A DEC C0/9AE5: 3A DEC C0/9AE6: CD 57 05 CMP $0557 C0/9AE9: D0 15 BNE $9B00 C0/9AEB: AD 42 05 LDA $0542 C0/9AEE: CD 58 05 CMP $0558 C0/9AF1: F0 0E BEQ $9B01 C0/9AF3: 1A INC C0/9AF4: CD 58 05 CMP $0558 C0/9AF7: F0 08 BEQ $9B01 C0/9AF9: 3A DEC C0/9AFA: 3A DEC C0/9AFB: CD 58 05 CMP $0558 C0/9AFE: F0 01 BEQ $9B01 C0/9B00: 60 RTS C0/9B01: A5 E1 LDA $E1 C0/9B03: 29 DF AND #$DF C0/9B05: 85 E1 STA $E1 C0/9B07: A6 00 LDX $00 C0/9B09: 8E 47 05 STX $0547 C0/9B0C: 8E 49 05 STX $0549 C0/9B0F: 8E 4B 05 STX $054B C0/9B12: 8E 4D 05 STX $054D C0/9B15: 8E 4F 05 STX $054F C0/9B18: 8E 51 05 STX $0551 C0/9B1B: A0 05 00 LDY #$0005 C0/9B1E: B7 E5 LDA [$E5],Y C0/9B20: 85 EF STA $EF C0/9B22: 88 DEY C0/9B23: B7 E5 LDA [$E5],Y C0/9B25: 85 EE STA $EE C0/9B27: 88 DEY C0/9B28: B7 E5 LDA [$E5],Y C0/9B2A: 85 ED STA $ED C0/9B2C: 88 DEY C0/9B2D: B7 E5 LDA [$E5],Y C0/9B2F: 85 EC STA $EC C0/9B31: 88 DEY C0/9B32: B7 E5 LDA [$E5],Y C0/9B34: 85 EB STA $EB C0/9B36: 88 DEY C0/9B37: B7 E5 LDA [$E5],Y C0/9B39: 85 EA STA $EA C0/9B3B: C9 31 CMP #$31 C0/9B3D: B0 03 BCS $9B42 C0/9B3F: 4C A5 9B JMP $9BA5 C0/9B42: C9 35 CMP #$35 C0/9B44: B0 03 BCS $9B49 C0/9B46: 4C 0B 9C JMP $9C0B ; [ Execute Event Command ] C0/9B49: 38 SEC C0/9B4A: E9 35 SBC #$35 C0/9B4C: C2 20 REP #$20 C0/9B4E: 0A ASL C0/9B4F: AA TAX C0/9B50: BF C4 98 C0 LDA $C098C4,X ; event command table C0/9B54: 85 2A STA $2A C0/9B56: 7B TDC C0/9B57: E2 20 SEP #$20 C0/9B59: 6C 2A 00 JMP ($002A) ; jump to event command code ; increment event pointer and continue C0/9B5C: 18 CLC ; increment event pointer C0/9B5D: 65 E5 ADC $E5 C0/9B5F: 85 E5 STA $E5 C0/9B61: A5 E6 LDA $E6 C0/9B63: 69 00 ADC #$00 C0/9B65: 85 E6 STA $E6 C0/9B67: A5 E7 LDA $E7 C0/9B69: 69 00 ADC #$00 C0/9B6B: 85 E7 STA $E7 C0/9B6D: 4C 6D 9A JMP $9A6D ; increment event pointer and return C0/9B70: 18 CLC C0/9B71: 65 E5 ADC $E5 C0/9B73: 85 E5 STA $E5 C0/9B75: A5 E6 LDA $E6 C0/9B77: 69 00 ADC #$00 C0/9B79: 85 E6 STA $E6 C0/9B7B: A5 E7 LDA $E7 C0/9B7D: 69 00 ADC #$00 C0/9B7F: 85 E7 STA $E7 C0/9B81: 60 RTS ; [ Push Event PC ] ; A = number of bytes to increment event PC by push_event: C0/9B82: A6 E8 LDX $E8 C0/9B84: 18 CLC C0/9B85: 65 E5 ADC $E5 ; Event PC += A C0/9B87: 85 E5 STA $E5 C0/9B89: 9D F4 05 STA $05F4,X C0/9B8C: A5 E6 LDA $E6 C0/9B8E: 69 00 ADC #$00 C0/9B90: 85 E6 STA $E6 C0/9B92: 9D F5 05 STA $05F5,X C0/9B95: A5 E7 LDA $E7 C0/9B97: 69 00 ADC #$00 C0/9B99: 85 E7 STA $E7 C0/9B9B: 9F F6 05 00 STA $0005F6,X C0/9B9F: E8 INX ; increment event stack pointer C0/9BA0: E8 INX C0/9BA1: E8 INX C0/9BA2: 86 E8 STX $E8 C0/9BA4: 60 RTS ; [ Begin Object Script ] ; A = object index C0/9BA5: 8D 02 42 STA $4202 C0/9BA8: A9 29 LDA #$29 C0/9BAA: 8D 03 42 STA $4203 C0/9BAD: EA NOP C0/9BAE: EA NOP C0/9BAF: EA NOP C0/9BB0: EA NOP C0/9BB1: AC 16 42 LDY $4216 C0/9BB4: B9 7C 08 LDA $087C,Y ; set movement type to script controlled C0/9BB7: 29 F0 AND #$F0 C0/9BB9: 09 01 ORA #$01 C0/9BBB: 99 7C 08 STA $087C,Y C0/9BBE: 7B TDC C0/9BBF: 99 86 08 STA $0886,Y ; clear number of steps to take C0/9BC2: A5 E5 LDA $E5 ; event PC C0/9BC4: 18 CLC C0/9BC5: 69 02 ADC #$02 C0/9BC7: 99 83 08 STA $0883,Y ; set object script pointer C0/9BCA: A5 E6 LDA $E6 C0/9BCC: 69 00 ADC #$00 C0/9BCE: 99 84 08 STA $0884,Y C0/9BD1: A5 E7 LDA $E7 C0/9BD3: 69 00 ADC #$00 C0/9BD5: 99 85 08 STA $0885,Y C0/9BD8: A5 EB LDA $EB ; branch if not waiting until complete C0/9BDA: 10 26 BPL $9C02 C0/9BDC: A5 EA LDA $EA ; get object number C0/9BDE: C9 31 CMP #$31 C0/9BE0: 90 1A BCC $9BFC C0/9BE2: 38 SEC C0/9BE3: E9 31 SBC #$31 C0/9BE5: 0A ASL C0/9BE6: A8 TAY C0/9BE7: BE 03 08 LDX $0803,Y C0/9BEA: 8E 04 42 STX $4204 C0/9BED: A9 29 LDA #$29 C0/9BEF: 8D 06 42 STA $4206 C0/9BF2: EA NOP C0/9BF3: EA NOP C0/9BF4: EA NOP C0/9BF5: EA NOP C0/9BF6: EA NOP C0/9BF7: EA NOP C0/9BF8: EA NOP C0/9BF9: AD 14 42 LDA $4214 C0/9BFC: 85 E2 STA $E2 ; set object to wait for C0/9BFE: A9 80 LDA #$80 ; waiting for object script C0/9C00: 85 E1 STA $E1 C0/9C02: A5 EB LDA $EB ; add object script length + 2 to event PC C0/9C04: 29 7F AND #$7F C0/9C06: 1A INC C0/9C07: 1A INC C0/9C08: 4C 5C 9B JMP $9B5C ; [ Begin Object Script (party character) ] ; A = object index C0/9C0B: 38 SEC C0/9C0C: E9 31 SBC #$31 C0/9C0E: 0A ASL C0/9C0F: AA TAX C0/9C10: BC 03 08 LDY $0803,X ; pointer to object data C0/9C13: C0 B0 07 CPY #$07B0 C0/9C16: F0 22 BEQ $9C3A ; branch if there's no character in that slot C0/9C18: B9 67 08 LDA $0867,Y ; character's party C0/9C1B: 29 07 AND #$07 C0/9C1D: CD 6D 1A CMP $1A6D ; branch if not in current party C0/9C20: D0 18 BNE $9C3A C0/9C22: 8C 04 42 STY $4204 C0/9C25: A9 29 LDA #$29 ; divide by $29 to get character index C0/9C27: 8D 06 42 STA $4206 C0/9C2A: EA NOP C0/9C2B: EA NOP C0/9C2C: EA NOP C0/9C2D: EA NOP C0/9C2E: EA NOP C0/9C2F: EA NOP C0/9C30: EA NOP C0/9C31: EA NOP C0/9C32: AD 14 42 LDA $4214 C0/9C35: 85 EA STA $EA C0/9C37: 4C B4 9B JMP $9BB4 C0/9C3A: A9 31 LDA #$31 ; use showing character C0/9C3C: 85 EA STA $EA C0/9C3E: A0 D9 07 LDY #$07D9 C0/9C41: 4C B4 9B JMP $9BB4 ; [ Event Command $35: Wait for Object ] ; $EB = object number C0/9C44: A5 EB LDA $EB C0/9C46: C9 31 CMP #$31 ; branch if not a party character C0/9C48: 90 1A BCC $9C64 C0/9C4A: 38 SEC C0/9C4B: E9 31 SBC #$31 C0/9C4D: 0A ASL C0/9C4E: A8 TAY C0/9C4F: BE 03 08 LDX $0803,Y ; get pointer to party character object data C0/9C52: 8E 04 42 STX $4204 C0/9C55: A9 29 LDA #$29 ; divide by $29 to get character number C0/9C57: 8D 06 42 STA $4206 C0/9C5A: EA NOP C0/9C5B: EA NOP C0/9C5C: EA NOP C0/9C5D: EA NOP C0/9C5E: EA NOP C0/9C5F: EA NOP C0/9C60: EA NOP C0/9C61: AD 14 42 LDA $4214 C0/9C64: 85 E2 STA $E2 ; object to wait for C0/9C66: A9 80 LDA #$80 C0/9C68: 85 E1 STA $E1 ; waiting for object C0/9C6A: A9 02 LDA #$02 C0/9C6C: 4C 5C 9B JMP $9B5C ; [ Event Command $36: Disable Object Passability ] ; $EB = object number C0/9C6F: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9C72: B9 7C 08 LDA $087C,Y C0/9C75: 29 EF AND #$EF C0/9C77: 99 7C 08 STA $087C,Y C0/9C7A: A9 02 LDA #$02 C0/9C7C: 4C 5C 9B JMP $9B5C ; [ Event Command $78: Enable Object Passability ] ; $EB = object number C0/9C7F: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9C82: B9 7C 08 LDA $087C,Y C0/9C85: 09 10 ORA #$10 C0/9C87: 99 7C 08 STA $087C,Y C0/9C8A: A9 02 LDA #$02 C0/9C8C: 4C 5C 9B JMP $9B5C ; [ Event Command $37: Set Object Graphics ] ; $EB = object number ; $EC = graphics index C0/9C8F: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9C92: A5 EC LDA $EC C0/9C94: 99 79 08 STA $0879,Y ; set object graphics index C0/9C97: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/9C9A: C0 50 02 CPY #$0250 C0/9C9D: B0 05 BCS $9CA4 ; branch if not a character C0/9C9F: A5 EC LDA $EC C0/9CA1: 99 01 16 STA $1601,Y ; set character graphics index C0/9CA4: A9 03 LDA #$03 C0/9CA6: 4C 5C 9B JMP $9B5C ; [ Event Command $43: Set Object Palette ] ; $EB = object number ; $EC = palette index C0/9CA9: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9CAC: A5 EC LDA $EC C0/9CAE: 0A ASL C0/9CAF: 85 1A STA $1A C0/9CB1: B9 80 08 LDA $0880,Y ; set palette (upper sprite) C0/9CB4: 29 F1 AND #$F1 C0/9CB6: 05 1A ORA $1A C0/9CB8: 99 80 08 STA $0880,Y C0/9CBB: B9 81 08 LDA $0881,Y ; set palette (lower sprite) C0/9CBE: 29 F1 AND #$F1 C0/9CC0: 05 1A ORA $1A C0/9CC2: 99 81 08 STA $0881,Y C0/9CC5: A9 03 LDA #$03 C0/9CC7: 4C 5C 9B JMP $9B5C ; [ Event Command $44: Set Object Vehicle ] ; $EB = object number ; $EC = svv----- ; s: character shown ; v: Vehicle Index (0 = no vehicle, 1 = chocobo, 2 = magitek, 3 = raft) C0/9CCA: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9CCD: A5 EC LDA $EC C0/9CCF: 29 E0 AND #$E0 C0/9CD1: 85 1A STA $1A C0/9CD3: B9 68 08 LDA $0868,Y C0/9CD6: 29 1F AND #$1F C0/9CD8: 05 1A ORA $1A C0/9CDA: 99 68 08 STA $0868,Y C0/9CDD: A9 03 LDA #$03 C0/9CDF: 4C 5C 9B JMP $9B5C ; [ Event Command $45: Wait for Character Objects to Update ] C0/9CE2: A9 01 LDA #$01 C0/9CE4: 8D 98 07 STA $0798 C0/9CE7: 4C 5C 9B JMP $9B5C ; [ Event Command $46: Set Current Party ] ; $EB = party number (0..7) C0/9CEA: A5 EB LDA $EB C0/9CEC: 8D 6D 1A STA $1A6D ; set party C0/9CEF: A0 D9 07 LDY #$07D9 C0/9CF2: 8C FB 07 STY $07FB ; clear party character object data pointers C0/9CF5: 8C FD 07 STY $07FD C0/9CF8: 8C FF 07 STY $07FF C0/9CFB: 8C 01 08 STY $0801 C0/9CFE: A9 02 LDA #$02 C0/9D00: 4C 5C 9B JMP $9B5C ; [ Event Command $47: Create Party Object ] C0/9D03: 20 67 6F JSR $6F67 ; init party object C0/9D06: 20 91 70 JSR $7091 ; save character data C0/9D09: A9 01 LDA #$01 C0/9D0B: 4C 5C 9B JMP $9B5C ; [ Event Command $38: Lock Screen ] C0/9D0E: A9 01 LDA #$01 C0/9D10: 8D 59 05 STA $0559 C0/9D13: 4C 5C 9B JMP $9B5C ; [ Event Command $39: Unlock Screen ] C0/9D16: 9C 59 05 STZ $0559 C0/9D19: A9 01 LDA #$01 C0/9D1B: 4C 5C 9B JMP $9B5C ; [ Event Command $3A: Make Party User-Controlled ] C0/9D1E: AC 03 08 LDY $0803 C0/9D21: A9 02 LDA #$02 C0/9D23: 99 7C 08 STA $087C,Y C0/9D26: 99 7D 08 STA $087D,Y C0/9D29: A9 01 LDA #$01 C0/9D2B: 4C 5C 9B JMP $9B5C ; [ Event Command $3B: Make Party Script-Controlled ] C0/9D2E: AC 03 08 LDY $0803 C0/9D31: A9 01 LDA #$01 C0/9D33: 99 7C 08 STA $087C,Y C0/9D36: A9 01 LDA #$01 C0/9D38: 4C 5C 9B JMP $9B5C ; [ Event Command $3F: Add Character to Party ] ; $EB = character number ; $EB = party number (0..7, 0 = remove from party) C0/9D3B: 20 77 70 JSR $7077 ; restore character data C0/9D3E: A5 EC LDA $EC C0/9D40: 20 A2 9E JSR $9EA2 ; get next available party slot C0/9D43: 05 EC ORA $EC C0/9D45: 85 1A STA $1A C0/9D47: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9D4A: B9 67 08 LDA $0867,Y C0/9D4D: 29 E0 AND #$E0 C0/9D4F: 05 1A ORA $1A C0/9D51: 99 67 08 STA $0867,Y ; set party and battle slot in object data C0/9D54: 85 1A STA $1A C0/9D56: 7B TDC C0/9D57: 99 7D 08 STA $087D,Y ; clear saved movement type C0/9D5A: 20 D8 70 JSR $70D8 ; C0/9D5D: A5 EB LDA $EB C0/9D5F: A8 TAY C0/9D60: A5 1A LDA $1A C0/9D62: 99 50 18 STA $1850,Y ; set party and battle slot in character data C0/9D65: 20 F3 6C JSR $6CF3 ; update party equipment effects C0/9D68: A9 03 LDA #$03 C0/9D6A: 4C 5C 9B JMP $9B5C ; [ Event Command $3C: Set Party Characters ] ; $EB = slot 0 character ; $EC = slot 1 character ($FF = empty slot) ; $ED = slot 2 character ($FF = empty slot) ; $EE = slot 3 character ($FF = empty slot) C0/9D6D: A0 D9 07 LDY #$07D9 C0/9D70: 8C FD 07 STY $07FD C0/9D73: 8C FF 07 STY $07FF C0/9D76: 8C 01 08 STY $0801 C0/9D79: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9D7C: 8C FB 07 STY $07FB C0/9D7F: A5 EC LDA $EC C0/9D81: 30 20 BMI $9DA3 C0/9D83: 85 EB STA $EB C0/9D85: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9D88: 8C FD 07 STY $07FD C0/9D8B: A5 ED LDA $ED C0/9D8D: 30 14 BMI $9DA3 C0/9D8F: 85 EB STA $EB C0/9D91: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9D94: 8C FF 07 STY $07FF C0/9D97: A5 EE LDA $EE C0/9D99: 30 08 BMI $9DA3 C0/9D9B: 85 EB STA $EB C0/9D9D: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9DA0: 8C 01 08 STY $0801 C0/9DA3: A9 01 LDA #$01 C0/9DA5: 8D 98 07 STA $0798 C0/9DA8: A9 05 LDA #$05 C0/9DAA: 4C 5C 9B JMP $9B5C ; [ Calculate Pointer to Character Data ] ; $EB = object number calc_party_work: C0/9DAD: A5 EB LDA $EB C0/9DAF: C9 31 CMP #$31 C0/9DB1: 90 2D BCC $9DE0 C0/9DB3: 38 SEC C0/9DB4: E9 31 SBC #$31 C0/9DB6: 0A ASL C0/9DB7: AA TAX C0/9DB8: BC 03 08 LDY $0803,X C0/9DBB: C0 B0 07 CPY #$07B0 C0/9DBE: F0 1E BEQ $9DDE C0/9DC0: B9 67 08 LDA $0867,Y C0/9DC3: 29 07 AND #$07 C0/9DC5: CD 6D 1A CMP $1A6D C0/9DC8: D0 14 BNE $9DDE C0/9DCA: 8C 04 42 STY $4204 C0/9DCD: A9 29 LDA #$29 C0/9DCF: 8D 06 42 STA $4206 C0/9DD2: EA NOP C0/9DD3: EA NOP C0/9DD4: EA NOP C0/9DD5: EA NOP C0/9DD6: EA NOP C0/9DD7: EA NOP C0/9DD8: EA NOP C0/9DD9: AD 14 42 LDA $4214 C0/9DDC: 80 02 BRA $9DE0 C0/9DDE: A9 11 LDA #$11 C0/9DE0: 8D 02 42 STA $4202 C0/9DE3: A9 25 LDA #$25 C0/9DE5: 8D 03 42 STA $4203 C0/9DE8: EA NOP C0/9DE9: EA NOP C0/9DEA: EA NOP C0/9DEB: EA NOP C0/9DEC: AC 16 42 LDY $4216 C0/9DEF: 60 RTS ; [ Calculate Pointer to Object Data ] ; $EB = object number calc_obj_work: C0/9DF0: A5 EB LDA $EB C0/9DF2: C9 31 CMP #$31 C0/9DF4: 90 35 BCC $9E2B C0/9DF6: 38 SEC C0/9DF7: E9 31 SBC #$31 C0/9DF9: 0A ASL C0/9DFA: AA TAX C0/9DFB: BC 03 08 LDY $0803,X C0/9DFE: C0 B0 07 CPY #$07B0 C0/9E01: F0 20 BEQ $9E23 C0/9E03: B9 67 08 LDA $0867,Y C0/9E06: 29 07 AND #$07 C0/9E08: CD 6D 1A CMP $1A6D C0/9E0B: D0 16 BNE $9E23 C0/9E0D: 8C 04 42 STY $4204 C0/9E10: A9 29 LDA #$29 C0/9E12: 8D 06 42 STA $4206 C0/9E15: EA NOP C0/9E16: EA NOP C0/9E17: EA NOP C0/9E18: EA NOP C0/9E19: EA NOP C0/9E1A: EA NOP C0/9E1B: EA NOP C0/9E1C: EA NOP C0/9E1D: AD 14 42 LDA $4214 C0/9E20: 85 EB STA $EB C0/9E22: 60 RTS C0/9E23: A0 D9 07 LDY #$07D9 C0/9E26: A9 31 LDA #$31 C0/9E28: 85 EB STA $EB C0/9E2A: 60 RTS C0/9E2B: A5 EB LDA $EB C0/9E2D: 8D 02 42 STA $4202 C0/9E30: A9 29 LDA #$29 C0/9E32: 8D 03 42 STA $4203 C0/9E35: EA NOP C0/9E36: EA NOP C0/9E37: EA NOP C0/9E38: AC 16 42 LDY $4216 C0/9E3B: 60 RTS ; [ Event Command $3D: Create Object ] ; $EB = object number C0/9E3C: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9E3F: B9 67 08 LDA $0867,Y ; return if object is already enabled C0/9E42: 29 40 AND #$40 C0/9E44: D0 1C BNE $9E62 C0/9E46: B9 67 08 LDA $0867,Y ; enable object, not visible C0/9E49: 29 3F AND #$3F C0/9E4B: 09 40 ORA #$40 C0/9E4D: 99 67 08 STA $0867,Y C0/9E50: 20 92 55 JSR $5592 ; add object to animation queue C0/9E53: A5 EB LDA $EB C0/9E55: C9 10 CMP #$10 C0/9E57: B0 09 BCS $9E62 ; return if not a character object C0/9E59: A8 TAY C0/9E5A: B9 50 18 LDA $1850,Y ; enable object in character data C0/9E5D: 09 40 ORA #$40 C0/9E5F: 99 50 18 STA $1850,Y C0/9E62: A9 02 LDA #$02 C0/9E64: 4C 5C 9B JMP $9B5C ; [ Event Command $3E: Delete Object ] ; $EB = object number C0/9E67: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/9E6A: B9 67 08 LDA $0867,Y ; return if object is already disabled C0/9E6D: 29 40 AND #$40 C0/9E6F: F0 2C BEQ $9E9D C0/9E71: B9 67 08 LDA $0867,Y ; disable object, not visible C0/9E74: 29 3F AND #$3F C0/9E76: 99 67 08 STA $0867,Y C0/9E79: 7B TDC C0/9E7A: 99 7D 08 STA $087D,Y ; clear saved movement type C0/9E7D: 20 B1 55 JSR $55B1 ; remove object from animation queue C0/9E80: 5A PHY C0/9E81: 20 D8 70 JSR $70D8 ; C0/9E84: 7A PLY C0/9E85: BE 7A 08 LDX $087A,Y ; pointer to object map data C0/9E88: A9 FF LDA #$FF C0/9E8A: 9F 00 20 7E STA $7E2000,X ; clear map data C0/9E8E: A5 EB LDA $EB C0/9E90: C9 10 CMP #$10 C0/9E92: B0 09 BCS $9E9D ; branch if not a character object C0/9E94: A8 TAY C0/9E95: B9 50 18 LDA $1850,Y ; disable object in character data C0/9E98: 29 3F AND #$3F C0/9E9A: 99 50 18 STA $1850,Y C0/9E9D: A9 02 LDA #$02 C0/9E9F: 4C 5C 9B JMP $9B5C ; [ Get Next Available Party Slot ] ; A = party number number (0..2) search_blank_member_no: C0/9EA2: 85 1A STA $1A C0/9EA4: C9 00 CMP #$00 C0/9EA6: F0 2C BEQ $9ED4 C0/9EA8: A4 00 LDY $00 C0/9EAA: B9 67 08 LDA $0867,Y ; branch if character is not enabled C0/9EAD: 29 40 AND #$40 C0/9EAF: F0 12 BEQ $9EC3 C0/9EB1: B9 67 08 LDA $0867,Y ; branch if character is not in that party C0/9EB4: 29 07 AND #$07 C0/9EB6: C5 1A CMP $1A C0/9EB8: D0 09 BNE $9EC3 C0/9EBA: B9 67 08 LDA $0867,Y C0/9EBD: 29 18 AND #$18 C0/9EBF: C9 00 CMP #$00 C0/9EC1: F0 12 BEQ $9ED5 C0/9EC3: C2 20 REP #$20 C0/9EC5: 98 TYA C0/9EC6: 18 CLC C0/9EC7: 69 29 00 ADC #$0029 C0/9ECA: A8 TAY C0/9ECB: 7B TDC C0/9ECC: E2 20 SEP #$20 C0/9ECE: C0 90 02 CPY #$0290 C0/9ED1: D0 D7 BNE $9EAA C0/9ED3: 7B TDC ; slot 0 C0/9ED4: 60 RTS C0/9ED5: A4 00 LDY $00 C0/9ED7: B9 67 08 LDA $0867,Y C0/9EDA: 29 40 AND #$40 C0/9EDC: F0 12 BEQ $9EF0 C0/9EDE: B9 67 08 LDA $0867,Y C0/9EE1: 29 07 AND #$07 C0/9EE3: C5 1A CMP $1A C0/9EE5: D0 09 BNE $9EF0 C0/9EE7: B9 67 08 LDA $0867,Y C0/9EEA: 29 18 AND #$18 C0/9EEC: C9 08 CMP #$08 C0/9EEE: F0 12 BEQ $9F02 C0/9EF0: C2 21 REP #$21 C0/9EF2: 98 TYA C0/9EF3: 69 29 00 ADC #$0029 C0/9EF6: A8 TAY C0/9EF7: 7B TDC C0/9EF8: E2 20 SEP #$20 C0/9EFA: C0 90 02 CPY #$0290 C0/9EFD: D0 D8 BNE $9ED7 C0/9EFF: A9 08 LDA #$08 ; slot 1 C0/9F01: 60 RTS C0/9F02: A4 00 LDY $00 C0/9F04: B9 67 08 LDA $0867,Y C0/9F07: 29 40 AND #$40 C0/9F09: F0 12 BEQ $9F1D C0/9F0B: B9 67 08 LDA $0867,Y C0/9F0E: 29 07 AND #$07 C0/9F10: C5 1A CMP $1A C0/9F12: D0 09 BNE $9F1D C0/9F14: B9 67 08 LDA $0867,Y C0/9F17: 29 18 AND #$18 C0/9F19: C9 10 CMP #$10 C0/9F1B: F0 12 BEQ $9F2F C0/9F1D: C2 21 REP #$21 C0/9F1F: 98 TYA C0/9F20: 69 29 00 ADC #$0029 C0/9F23: A8 TAY C0/9F24: 7B TDC C0/9F25: E2 20 SEP #$20 C0/9F27: C0 90 02 CPY #$0290 C0/9F2A: D0 D8 BNE $9F04 C0/9F2C: A9 10 LDA #$10 ; slot 2 C0/9F2E: 60 RTS C0/9F2F: A9 18 LDA #$18 ; slot 3 C0/9F31: 60 RTS ; [ Event Command $77: Normalize Character Level ] ; $EB = character number C0/9F32: 20 78 9F JSR $9F78 ; calculate average character level C0/9F35: 48 PHA C0/9F36: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/9F39: B9 08 16 LDA $1608,Y ; character level C0/9F3C: 3A DEC C0/9F3D: 85 20 STA $20 ; +$20 = previous level - 1 C0/9F3F: 64 21 STZ $21 C0/9F41: 68 PLA C0/9F42: D9 08 16 CMP $1608,Y C0/9F45: 90 29 BCC $9F70 ; branch if average is less than character level C0/9F47: 99 08 16 STA $1608,Y ; set character level to average C0/9F4A: 3A DEC C0/9F4B: 85 22 STA $22 ; +$22 = new level - 1 C0/9F4D: 64 23 STZ $23 C0/9F4F: 20 62 C5 JSR $C562 ; update character max HP C0/9F52: 20 9B C5 JSR $C59B ; update character max MP C0/9F55: B9 0B 16 LDA $160B,Y ; set HP to maximum C0/9F58: 99 09 16 STA $1609,Y C0/9F5B: B9 0C 16 LDA $160C,Y C0/9F5E: 99 0A 16 STA $160A,Y C0/9F61: B9 0F 16 LDA $160F,Y ; set MP to maximum C0/9F64: 99 0D 16 STA $160D,Y C0/9F67: B9 10 16 LDA $1610,Y C0/9F6A: 99 0E 16 STA $160E,Y C0/9F6D: 20 7F A1 JSR $A17F ; update character natural skills C0/9F70: 20 35 A2 JSR $A235 ; update character experience points C0/9F73: A9 02 LDA #$02 C0/9F75: 4C 5C 9B JMP $9B5C ; [ Calculate Average Character Level ] calc_level_average: C0/9F78: AE DE 1E LDX $1EDE ; +$20 = characters available C0/9F7B: 86 20 STX $20 C0/9F7D: A6 00 LDX $00 C0/9F7F: 9B TXY C0/9F80: 86 1E STX $1E ; +$1E = sum of available characters' levels C0/9F82: 64 1B STZ $1B ; $1B = number of active characters C0/9F84: C2 21 REP #$21 C0/9F86: 46 20 LSR $20 C0/9F88: 7B TDC C0/9F89: E2 20 SEP #$20 C0/9F8B: 90 10 BCC $9F9D C0/9F8D: A5 1E LDA $1E C0/9F8F: 18 CLC C0/9F90: 7D 08 16 ADC $1608,X ; character level C0/9F93: 85 1E STA $1E C0/9F95: A5 1F LDA $1F C0/9F97: 69 00 ADC #$00 C0/9F99: 85 1F STA $1F C0/9F9B: E6 1B INC $1B C0/9F9D: C8 INY ; next character C0/9F9E: C2 21 REP #$21 C0/9FA0: 8A TXA C0/9FA1: 69 25 00 ADC #$0025 C0/9FA4: AA TAX C0/9FA5: 7B TDC C0/9FA6: E2 20 SEP #$20 C0/9FA8: C0 0E 00 CPY #$000E C0/9FAB: D0 D7 BNE $9F84 C0/9FAD: A6 1E LDX $1E C0/9FAF: 8E 04 42 STX $4204 C0/9FB2: A5 1B LDA $1B C0/9FB4: F0 0F BEQ $9FC5 C0/9FB6: 8D 06 42 STA $4206 C0/9FB9: EA NOP C0/9FBA: EA NOP C0/9FBB: EA NOP C0/9FBC: EA NOP C0/9FBD: EA NOP C0/9FBE: EA NOP C0/9FBF: EA NOP C0/9FC0: AD 14 42 LDA $4214 C0/9FC3: 80 02 BRA $9FC7 C0/9FC5: A9 03 LDA #$03 ; minimum 3 C0/9FC7: C9 63 CMP #$63 C0/9FC9: 90 02 BCC $9FCD C0/9FCB: A9 63 LDA #$63 ; maximum 99 C0/9FCD: 60 RTS ; [ Event Command $8D: Remove Character Equipped Items/Esper ] C0/9FCE: A5 EB LDA $EB ; calculate pointer to character data C0/9FD0: 8D 02 42 STA $4202 C0/9FD3: A9 25 LDA #$25 C0/9FD5: 8D 03 42 STA $4203 C0/9FD8: EA NOP C0/9FD9: EA NOP C0/9FDA: A0 06 00 LDY #$0006 C0/9FDD: AE 16 42 LDX $4216 C0/9FE0: A9 FF LDA #$FF C0/9FE2: 9D 1E 16 STA $161E,X ; remove esper C0/9FE5: 5A PHY C0/9FE6: DA PHX C0/9FE7: BD 1F 16 LDA $161F,X ; item slot C0/9FEA: C9 FF CMP #$FF C0/9FEC: F0 3E BEQ $A02C ; branch if no item in this slot C0/9FEE: 85 1A STA $1A ; $1A = item number C0/9FF0: A9 FF LDA #$FF C0/9FF2: 9D 1F 16 STA $161F,X ; clear item slot C0/9FF5: A6 00 LDX $00 C0/9FF7: BD 69 18 LDA $1869,X ; look for item in inventory C0/9FFA: C5 1A CMP $1A C0/9FFC: F0 23 BEQ $A021 ; branch if found C0/9FFE: E8 INX C0/9FFF: E0 00 01 CPX #$0100 C0/A002: D0 F3 BNE $9FF7 C0/A004: A6 00 LDX $00 C0/A006: BD 69 18 LDA $1869,X ; look for next available item slot C0/A009: C9 FF CMP #$FF C0/A00B: F0 08 BEQ $A015 C0/A00D: E8 INX C0/A00E: E0 00 01 CPX #$0100 C0/A011: D0 F3 BNE $A006 C0/A013: 80 17 BRA $A02C ; branch if there are no available item slots C0/A015: A5 1A LDA $1A C0/A017: 9D 69 18 STA $1869,X ; set item number C0/A01A: A9 01 LDA #$01 C0/A01C: 9D 69 19 STA $1969,X ; item quantity = 1 C0/A01F: 80 0B BRA $A02C C0/A021: BD 69 19 LDA $1969,X ; branch if item quantity is 99 C0/A024: C9 63 CMP #$63 C0/A026: F0 04 BEQ $A02C C0/A028: 1A INC ; increment quantity C0/A029: 9D 69 19 STA $1969,X C0/A02C: FA PLX ; next item C0/A02D: 7A PLY C0/A02E: E8 INX C0/A02F: 88 DEY C0/A030: D0 B3 BNE $9FE5 C0/A032: 20 F3 6C JSR $6CF3 ; update party equipment effects C0/A035: A9 02 LDA #$02 C0/A037: 4C 5C 9B JMP $9B5C ; [ Event Command $7F: Set Character Name ] ; $EB = character number ; $EC = name index C0/A03A: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/A03D: A9 06 LDA #$06 ; calculate pointer to character name C0/A03F: 8D 02 42 STA $4202 C0/A042: A5 EC LDA $EC C0/A044: 8D 03 42 STA $4203 C0/A047: EA NOP C0/A048: EA NOP C0/A049: EA NOP C0/A04A: AE 16 42 LDX $4216 C0/A04D: BF C0 78 C4 LDA $C478C0,X ; copy character name (6 bytes) C0/A051: 99 02 16 STA $1602,Y C0/A054: BF C1 78 C4 LDA $C478C1,X C0/A058: 99 03 16 STA $1603,Y C0/A05B: BF C2 78 C4 LDA $C478C2,X C0/A05F: 99 04 16 STA $1604,Y C0/A062: BF C3 78 C4 LDA $C478C3,X C0/A066: 99 05 16 STA $1605,Y C0/A069: BF C4 78 C4 LDA $C478C4,X C0/A06D: 99 06 16 STA $1606,Y C0/A070: BF C5 78 C4 LDA $C478C5,X C0/A074: 99 07 16 STA $1607,Y C0/A077: A9 03 LDA #$03 C0/A079: 4C 5C 9B JMP $9B5C ; [ Event Command $40: Set Character Properties ] ; $EB = character number ; $EC = actor number C0/A07C: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/A07F: A9 16 LDA #$16 ; calculate pointer to actor properties C0/A081: 8D 02 42 STA $4202 C0/A084: A5 EC LDA $EC C0/A086: 8D 03 42 STA $4203 C0/A089: EA NOP C0/A08A: EA NOP C0/A08B: EA NOP C0/A08C: AE 16 42 LDX $4216 C0/A08F: BF A2 7C ED LDA $ED7CA2,X ; battle commands C0/A093: 99 16 16 STA $1616,Y C0/A096: BF A3 7C ED LDA $ED7CA3,X C0/A09A: 99 17 16 STA $1617,Y C0/A09D: BF A4 7C ED LDA $ED7CA4,X C0/A0A1: 99 18 16 STA $1618,Y C0/A0A4: BF A5 7C ED LDA $ED7CA5,X C0/A0A8: 99 19 16 STA $1619,Y C0/A0AB: BF A6 7C ED LDA $ED7CA6,X ; vigor C0/A0AF: 99 1A 16 STA $161A,Y C0/A0B2: BF A7 7C ED LDA $ED7CA7,X ; speed C0/A0B6: 99 1B 16 STA $161B,Y C0/A0B9: BF A8 7C ED LDA $ED7CA8,X ; stamina C0/A0BD: 99 1C 16 STA $161C,Y C0/A0C0: BF A9 7C ED LDA $ED7CA9,X ; mag. power C0/A0C4: 99 1D 16 STA $161D,Y C0/A0C7: A9 FF LDA #$FF ; clear esper C0/A0C9: 99 1E 16 STA $161E,Y C0/A0CC: BF AF 7C ED LDA $ED7CAF,X ; weapon C0/A0D0: 99 1F 16 STA $161F,Y C0/A0D3: BF B0 7C ED LDA $ED7CB0,X ; shield C0/A0D7: 99 20 16 STA $1620,Y C0/A0DA: BF B1 7C ED LDA $ED7CB1,X ; helmet C0/A0DE: 99 21 16 STA $1621,Y C0/A0E1: BF B2 7C ED LDA $ED7CB2,X ; armor C0/A0E5: 99 22 16 STA $1622,Y C0/A0E8: BF B3 7C ED LDA $ED7CB3,X ; relics C0/A0EC: 99 23 16 STA $1623,Y C0/A0EF: BF B4 7C ED LDA $ED7CB4,X C0/A0F3: 99 24 16 STA $1624,Y C0/A0F6: BF A0 7C ED LDA $ED7CA0,X ; max HP C0/A0FA: 99 0B 16 STA $160B,Y C0/A0FD: BF A1 7C ED LDA $ED7CA1,X ; max MP C0/A101: 99 0F 16 STA $160F,Y C0/A104: 7B TDC C0/A105: 99 0C 16 STA $160C,Y C0/A108: 99 10 16 STA $1610,Y C0/A10B: DA PHX C0/A10C: 5A PHY C0/A10D: A5 EC LDA $EC ; actor C0/A10F: 99 00 16 STA $1600,Y C0/A112: 20 78 9F JSR $9F78 ; calculate character average level C0/A115: 7A PLY C0/A116: FA PLX C0/A117: 99 08 16 STA $1608,Y ; set level C0/A11A: BF B5 7C ED LDA $ED7CB5,X ; level modifier C0/A11E: 29 0C AND #$0C C0/A120: 4A LSR C0/A121: 4A LSR C0/A122: AA TAX C0/A123: BF 28 A2 C0 LDA $C0A228,X ; add modifier C0/A127: 18 CLC C0/A128: 79 08 16 ADC $1608,Y C0/A12B: F0 02 BEQ $A12F C0/A12D: 10 02 BPL $A131 C0/A12F: A9 01 LDA #$01 ; minimum level = 1 C0/A131: C9 63 CMP #$63 ; maximum level = 99 C0/A133: 90 02 BCC $A137 C0/A135: A9 63 LDA #$63 C0/A137: 99 08 16 STA $1608,Y C0/A13A: 20 7E A2 JSR $A27E ; init character max HP C0/A13D: B9 0B 16 LDA $160B,Y ; set HP to max C0/A140: 99 09 16 STA $1609,Y C0/A143: B9 0C 16 LDA $160C,Y C0/A146: 99 0A 16 STA $160A,Y C0/A149: 20 BC A2 JSR $A2BC ; init character max MP C0/A14C: B9 0F 16 LDA $160F,Y ; set MP to max C0/A14F: 99 0D 16 STA $160D,Y C0/A152: B9 10 16 LDA $1610,Y C0/A155: 99 0E 16 STA $160E,Y C0/A158: 20 35 A2 JSR $A235 ; update character experience points C0/A15B: BB TYX C0/A15C: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/A15F: B9 7C 08 LDA $087C,Y ; set movement type to script-controlled C0/A162: 29 F0 AND #$F0 C0/A164: 09 01 ORA #$01 C0/A166: 99 7C 08 STA $087C,Y C0/A169: B9 68 08 LDA $0868,Y ; enable walking animation C0/A16C: 09 01 ORA #$01 C0/A16E: 99 68 08 STA $0868,Y C0/A171: A9 00 LDA #$00 ; clear object settings C0/A173: 99 67 08 STA $0867,Y C0/A176: 9B TXY C0/A177: 20 7F A1 JSR $A17F ; update character natural skills C0/A17A: A9 03 LDA #$03 C0/A17C: 4C 5C 9B JMP $9B5C ; [ Update Character Natural Skills ] ; Y = pointer to character data mainchara_learn: C0/A17F: B9 00 16 LDA $1600,Y ; actor index C0/A182: C9 00 CMP #$00 C0/A184: F0 10 BEQ $A196 ; branch if TERRA C0/A186: C9 06 CMP #$06 C0/A188: F0 2E BEQ $A1B8 ; branch if CELES C0/A18A: C9 02 CMP #$02 C0/A18C: F0 4C BEQ $A1DA ; branch if CYAN C0/A18E: C9 05 CMP #$05 C0/A190: D0 03 BNE $A195 ; return if not SABIN C0/A192: 4C 01 A2 JMP $A201 C0/A195: 60 RTS ; update TERRA's natural magic C0/A196: A6 00 LDX $00 C0/A198: BF C1 E3 EC LDA $ECE3C1,X ; level that the spell is learned C0/A19C: D9 08 16 CMP $1608,Y ; current level C0/A19F: F0 02 BEQ $A1A3 C0/A1A1: B0 F2 BCS $A195 ; return if greater than current level C0/A1A3: 5A PHY C0/A1A4: BF C0 E3 EC LDA $ECE3C0,X ; spell number C0/A1A8: A8 TAY C0/A1A9: A9 FF LDA #$FF C0/A1AB: 99 6E 1A STA $1A6E,Y ; learn spell C0/A1AE: 7A PLY C0/A1AF: E8 INX ; next natural spell (16 total) C0/A1B0: E8 INX C0/A1B1: E0 20 00 CPX #$0020 C0/A1B4: F0 DF BEQ $A195 C0/A1B6: 80 E0 BRA $A198 ; update CELES' natural magic C0/A1B8: A6 00 LDX $00 C0/A1BA: BF E1 E3 EC LDA $ECE3E1,X ; level that the spell is learned C0/A1BE: D9 08 16 CMP $1608,Y ; current level C0/A1C1: F0 02 BEQ $A1C5 C0/A1C3: B0 D0 BCS $A195 ; return if greater than current level C0/A1C5: 5A PHY C0/A1C6: BF E0 E3 EC LDA $ECE3E0,X ; spell number C0/A1CA: A8 TAY C0/A1CB: A9 FF LDA #$FF C0/A1CD: 99 B2 1B STA $1BB2,Y ; learn spell C0/A1D0: 7A PLY C0/A1D1: E8 INX ; next natural spell (16 total) C0/A1D2: E8 INX C0/A1D3: E0 20 00 CPX #$0020 C0/A1D6: F0 BD BEQ $A195 C0/A1D8: 80 E0 BRA $A1BA ; update CYAN's swdtech C0/A1DA: 64 1B STZ $1B C0/A1DC: A6 00 LDX $00 C0/A1DE: BF 90 F4 E6 LDA $E6F490,X C0/A1E2: D9 08 16 CMP $1608,Y C0/A1E5: F0 02 BEQ $A1E9 C0/A1E7: B0 0A BCS $A1F3 C0/A1E9: E6 1B INC $1B C0/A1EB: E8 INX C0/A1EC: E0 08 00 CPX #$0008 C0/A1EF: F0 02 BEQ $A1F3 C0/A1F1: 80 EB BRA $A1DE C0/A1F3: A5 1B LDA $1B C0/A1F5: AA TAX C0/A1F6: AD F7 1C LDA $1CF7 C0/A1F9: 1F 2C A2 C0 ORA $C0A22C,X C0/A1FD: 8D F7 1C STA $1CF7 C0/A200: 60 RTS ; update SABIN's blitz C0/A201: 64 1B STZ $1B C0/A203: A6 00 LDX $00 C0/A205: BF 98 F4 E6 LDA $E6F498,X C0/A209: D9 08 16 CMP $1608,Y C0/A20C: F0 02 BEQ $A210 C0/A20E: B0 0A BCS $A21A C0/A210: E6 1B INC $1B C0/A212: E8 INX C0/A213: E0 08 00 CPX #$0008 C0/A216: F0 02 BEQ $A21A C0/A218: 80 EB BRA $A205 C0/A21A: A5 1B LDA $1B C0/A21C: AA TAX C0/A21D: AD 28 1D LDA $1D28 C0/A220: 1F 2C A2 C0 ORA $C0A22C,X C0/A224: 8D 28 1D STA $1D28 C0/A227: 60 RTS ; character average level modifiers C0/A228: .DB $00, $02, $05, $FD ; swdtech/blitz learn flags C0/A22C: .DB $00, $01, $03, $07, $0F, $1F, $3F, $7F, $FF ; [ Update Character Experience Points ] ; Y = pointer to character data calc_mainchara_exp: C0/A235: B9 08 16 LDA $1608,Y ; $1B = current level C0/A238: 85 1B STA $1B C0/A23A: A6 00 LDX $00 C0/A23C: 86 2A STX $2A ; ++$2A = calculated experience points C0/A23E: 64 2C STZ $2C C0/A240: C6 1B DEC $1B C0/A242: F0 18 BEQ $A25C ; branch at current level C0/A244: C2 20 REP #$20 C0/A246: BF 20 82 ED LDA $ED8220,X ; add experience progression value C0/A24A: 18 CLC C0/A24B: 65 2A ADC $2A C0/A24D: 85 2A STA $2A C0/A24F: 7B TDC C0/A250: E2 20 SEP #$20 C0/A252: A5 2C LDA $2C C0/A254: 69 00 ADC #$00 C0/A256: 85 2C STA $2C C0/A258: E8 INX ; next level C0/A259: E8 INX C0/A25A: 80 E4 BRA $A240 C0/A25C: 06 2A ASL $2A ; ++$2A *= 8 C0/A25E: 26 2B ROL $2B C0/A260: 26 2C ROL $2C C0/A262: 06 2A ASL $2A C0/A264: 26 2B ROL $2B C0/A266: 26 2C ROL $2C C0/A268: 06 2A ASL $2A C0/A26A: 26 2B ROL $2B C0/A26C: 26 2C ROL $2C C0/A26E: A5 2A LDA $2A ; set character experience points C0/A270: 99 11 16 STA $1611,Y C0/A273: A5 2B LDA $2B C0/A275: 99 12 16 STA $1612,Y C0/A278: A5 2C LDA $2C C0/A27A: 99 13 16 STA $1613,Y C0/A27D: 60 RTS ; [ Init Character Max HP ] ; Y = pointer to character data calc_mainchara_hp: C0/A27E: A9 16 LDA #$16 C0/A280: 8D 02 42 STA $4202 C0/A283: B9 00 16 LDA $1600,Y C0/A286: 8D 03 42 STA $4203 C0/A289: B9 08 16 LDA $1608,Y C0/A28C: 85 1B STA $1B C0/A28E: 64 1F STZ $1F C0/A290: AE 16 42 LDX $4216 C0/A293: BF A0 7C ED LDA $ED7CA0,X ; starting HP C0/A297: 85 1E STA $1E C0/A299: A6 00 LDX $00 C0/A29B: C6 1B DEC $1B C0/A29D: F0 12 BEQ $A2B1 C0/A29F: BF A0 F4 E6 LDA $E6F4A0,X C0/A2A3: 18 CLC C0/A2A4: 65 1E ADC $1E C0/A2A6: 85 1E STA $1E C0/A2A8: A5 1F LDA $1F C0/A2AA: 69 00 ADC #$00 C0/A2AC: 85 1F STA $1F C0/A2AE: E8 INX C0/A2AF: 80 EA BRA $A29B C0/A2B1: C2 21 REP #$21 C0/A2B3: A5 1E LDA $1E C0/A2B5: 99 0B 16 STA $160B,Y C0/A2B8: 7B TDC C0/A2B9: E2 20 SEP #$20 C0/A2BB: 60 RTS ; [ Init Character Max MP ] ; Y = pointer to character data calc_mainchara_mp: C0/A2BC: A9 16 LDA #$16 C0/A2BE: 8D 02 42 STA $4202 C0/A2C1: B9 00 16 LDA $1600,Y C0/A2C4: 8D 03 42 STA $4203 C0/A2C7: B9 08 16 LDA $1608,Y C0/A2CA: 85 1B STA $1B C0/A2CC: 64 1F STZ $1F C0/A2CE: AE 16 42 LDX $4216 C0/A2D1: BF A1 7C ED LDA $ED7CA1,X ; starting MP C0/A2D5: 85 1E STA $1E C0/A2D7: A6 00 LDX $00 C0/A2D9: C6 1B DEC $1B C0/A2DB: F0 12 BEQ $A2EF C0/A2DD: BF 02 F5 E6 LDA $E6F502,X C0/A2E1: 18 CLC C0/A2E2: 65 1E ADC $1E C0/A2E4: 85 1E STA $1E C0/A2E6: A5 1F LDA $1F C0/A2E8: 69 00 ADC #$00 C0/A2EA: 85 1F STA $1F C0/A2EC: E8 INX C0/A2ED: 80 EA BRA $A2D9 C0/A2EF: C2 21 REP #$21 C0/A2F1: A5 1E LDA $1E C0/A2F3: 99 0F 16 STA $160F,Y C0/A2F6: 7B TDC C0/A2F7: E2 20 SEP #$20 C0/A2F9: 60 RTS ; [ Event Command $41: Show Object ] ; $EB = object number C0/A2FA: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/A2FD: B9 67 08 LDA $0867,Y C0/A300: 29 40 AND #$40 C0/A302: F0 2D BEQ $A331 ; return if object is not enabled C0/A304: B9 67 08 LDA $0867,Y ; return if object is already visible C0/A307: 30 28 BMI $A331 C0/A309: 09 80 ORA #$80 ; make object visible C0/A30B: 99 67 08 STA $0867,Y C0/A30E: B9 80 08 LDA $0880,Y ; set top sprite layer priority to 2 C0/A311: 29 CF AND #$CF C0/A313: 09 20 ORA #$20 C0/A315: 99 80 08 STA $0880,Y C0/A318: B9 81 08 LDA $0881,Y ; set bottom sprite layer priority to 2 C0/A31B: 29 CF AND #$CF C0/A31D: 09 20 ORA #$20 C0/A31F: 99 81 08 STA $0881,Y C0/A322: A5 EB LDA $EB ; return if not a character object C0/A324: C9 10 CMP #$10 C0/A326: B0 09 BCS $A331 C0/A328: A8 TAY C0/A329: B9 50 18 LDA $1850,Y ; set character object settings C0/A32C: 09 80 ORA #$80 C0/A32E: 99 50 18 STA $1850,Y C0/A331: A9 02 LDA #$02 C0/A333: 4C 5C 9B JMP $9B5C ; [ Event Command $42: Hide Object ] ; $EB = object number C0/A336: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/A339: B9 67 08 LDA $0867,Y C0/A33C: 29 7F AND #$7F C0/A33E: 99 67 08 STA $0867,Y C0/A341: 7B TDC C0/A342: 99 7D 08 STA $087D,Y C0/A345: BE 7A 08 LDX $087A,Y C0/A348: A9 FF LDA #$FF C0/A34A: 9F 00 20 7E STA $7E2000,X C0/A34E: B9 7C 08 LDA $087C,Y C0/A351: 29 F0 AND #$F0 C0/A353: 99 7C 08 STA $087C,Y C0/A356: A5 EB LDA $EB C0/A358: C9 10 CMP #$10 C0/A35A: B0 09 BCS $A365 C0/A35C: A8 TAY C0/A35D: B9 50 18 LDA $1850,Y C0/A360: 29 7F AND #$7F C0/A362: 99 50 18 STA $1850,Y C0/A365: A9 02 LDA #$02 C0/A367: 4C 5C 9B JMP $9B5C ; [ Event Command $79: Set Party's Map ] ; $EB = party number ; +$EC = map number C0/A36A: A4 00 LDY $00 C0/A36C: B9 67 08 LDA $0867,Y C0/A36F: 29 40 AND #$40 C0/A371: F0 13 BEQ $A386 C0/A373: B9 67 08 LDA $0867,Y C0/A376: 29 07 AND #$07 C0/A378: C5 EB CMP $EB C0/A37A: D0 0A BNE $A386 ; branch if character is not in that party C0/A37C: C2 20 REP #$20 C0/A37E: A5 EC LDA $EC C0/A380: 99 8D 08 STA $088D,Y ; set character object's map C0/A383: 7B TDC C0/A384: E2 20 SEP #$20 C0/A386: C2 21 REP #$21 ; next character C0/A388: 98 TYA C0/A389: 69 29 00 ADC #$0029 C0/A38C: A8 TAY C0/A38D: 7B TDC C0/A38E: E2 20 SEP #$20 C0/A390: C0 90 02 CPY #$0290 C0/A393: D0 D7 BNE $A36C C0/A395: A9 04 LDA #$04 C0/A397: 4C 5C 9B JMP $9B5C ; [ Event Command $7E: Move Current Party ] ; $EB = x position ; $EC = y position C0/A39A: C2 20 REP #$20 C0/A39C: A5 EB LDA $EB C0/A39E: 29 FF 00 AND #$00FF C0/A3A1: 0A ASL C0/A3A2: 0A ASL C0/A3A3: 0A ASL C0/A3A4: 0A ASL C0/A3A5: 85 26 STA $26 C0/A3A7: A5 EC LDA $EC C0/A3A9: 29 FF 00 AND #$00FF C0/A3AC: 0A ASL C0/A3AD: 0A ASL C0/A3AE: 0A ASL C0/A3AF: 0A ASL C0/A3B0: 85 28 STA $28 C0/A3B2: 7B TDC C0/A3B3: E2 20 SEP #$20 C0/A3B5: A4 00 LDY $00 C0/A3B7: 64 1B STZ $1B C0/A3B9: B9 67 08 LDA $0867,Y C0/A3BC: 29 40 AND #$40 C0/A3BE: F0 3A BEQ $A3FA C0/A3C0: B9 67 08 LDA $0867,Y C0/A3C3: 29 07 AND #$07 C0/A3C5: CD 6D 1A CMP $1A6D C0/A3C8: D0 30 BNE $A3FA C0/A3CA: BE 7A 08 LDX $087A,Y C0/A3CD: BF 00 20 7E LDA $7E2000,X C0/A3D1: C5 1B CMP $1B C0/A3D3: D0 06 BNE $A3DB C0/A3D5: A9 FF LDA #$FF C0/A3D7: 9F 00 20 7E STA $7E2000,X C0/A3DB: C2 20 REP #$20 C0/A3DD: A5 26 LDA $26 C0/A3DF: 99 6A 08 STA $086A,Y C0/A3E2: A5 28 LDA $28 C0/A3E4: 99 6D 08 STA $086D,Y C0/A3E7: 7B TDC C0/A3E8: E2 20 SEP #$20 C0/A3EA: 99 69 08 STA $0869,Y C0/A3ED: 99 6C 08 STA $086C,Y C0/A3F0: A5 EB LDA $EB C0/A3F2: 99 7A 08 STA $087A,Y C0/A3F5: A5 EC LDA $EC C0/A3F7: 99 7B 08 STA $087B,Y C0/A3FA: C2 21 REP #$21 ; next character C0/A3FC: 98 TYA C0/A3FD: 69 29 00 ADC #$0029 C0/A400: A8 TAY C0/A401: 7B TDC C0/A402: E2 20 SEP #$20 C0/A404: E6 1B INC $1B C0/A406: E6 1B INC $1B C0/A408: C0 90 02 CPY #$0290 C0/A40B: D0 AC BNE $A3B9 C0/A40D: A9 01 LDA #$01 ; re-load the same map C0/A40F: 85 58 STA $58 C0/A411: A5 EB LDA $EB ; set global map position C0/A413: 8D C0 1F STA $1FC0 C0/A416: 8D 66 1F STA $1F66 C0/A419: A5 EC LDA $EC C0/A41B: 8D C1 1F STA $1FC1 C0/A41E: 8D 67 1F STA $1F67 C0/A421: A9 01 LDA #$01 ; enable map load C0/A423: 85 84 STA $84 C0/A425: A9 03 LDA #$03 C0/A427: 4C 70 9B JMP $9B70 ; [ Event Command $7A: Set Object's Event Pointer ] ; $EB = object number ; ++$EC = event pointer C0/A42A: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/A42D: A5 EC LDA $EC C0/A42F: 99 89 08 STA $0889,Y ; set event pointer C0/A432: A5 ED LDA $ED C0/A434: 99 8A 08 STA $088A,Y C0/A437: A5 EE LDA $EE C0/A439: 99 8B 08 STA $088B,Y C0/A43C: A9 05 LDA #$05 C0/A43E: 4C 5C 9B JMP $9B5C ; [ Event Command $7B: Restore Default Party ] C0/A441: AD 5D 05 LDA $055D C0/A444: CD 6D 1A CMP $1A6D ; return if default party is already active C0/A447: F0 07 BEQ $A450 C0/A449: 3A DEC C0/A44A: 8D 6D 1A STA $1A6D ; set current party C0/A44D: 20 77 6D JSR $6D77 ; switch parties C0/A450: A9 01 LDA #$01 C0/A452: 4C 5C 9B JMP $9B5C ; [ Event Command $7C: Enable Collision Activation ] ; $EB = object number C0/A455: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/A458: B9 7C 08 LDA $087C,Y C0/A45B: 09 40 ORA #$40 C0/A45D: 99 7C 08 STA $087C,Y C0/A460: A9 02 LDA #$02 C0/A462: 4C 5C 9B JMP $9B5C ; [ Event Command $7D: Disable Collision Activation ] ; $EB = object number C0/A465: 20 F0 9D JSR $9DF0 ; calculate pointer to object data C0/A468: B9 7C 08 LDA $087C,Y C0/A46B: 29 BF AND #$BF C0/A46D: 99 7C 08 STA $087C,Y C0/A470: A9 02 LDA #$02 C0/A472: 4C 5C 9B JMP $9B5C ; [ Event Command $48: Display Dialog Message ] ; +$EB = bt-ddddd dddddddd ; b: show at bottom of screen ; t: show text only ; d: dialog message C0/A475: C2 20 REP #$20 C0/A477: A5 EB LDA $EB C0/A479: 29 FF 1F AND #$1FFF C0/A47C: 85 D0 STA $D0 ; dialog message number C0/A47E: 7B TDC C0/A47F: E2 20 SEP #$20 C0/A481: A5 EC LDA $EC ; branch if showing at bottom of screen C0/A483: 30 04 BMI $A489 C0/A485: A9 01 LDA #$01 C0/A487: 80 02 BRA $A48B C0/A489: A9 12 LDA #$12 C0/A48B: 85 BC STA $BC ; dialog window y position (1 or 12) C0/A48D: A5 EC LDA $EC C0/A48F: 29 40 AND #$40 C0/A491: 4A LSR C0/A492: 4A LSR C0/A493: 4A LSR C0/A494: 4A LSR C0/A495: 4A LSR C0/A496: 4A LSR C0/A497: 8D 64 05 STA $0564 ; text only C0/A49A: 20 BF 7F JSR $7FBF ; update pointer to current dialog item C0/A49D: A9 01 LDA #$01 C0/A49F: 85 BA STA $BA ; enable dialog window C0/A4A1: A9 03 LDA #$03 C0/A4A3: 4C 5C 9B JMP $9B5C ; [ Event Command $49: Wait for Dialog Window to Close ] C0/A4A6: A5 BA LDA $BA ; dialog window state C0/A4A8: F0 01 BEQ $A4AB C0/A4AA: 60 RTS C0/A4AB: A9 01 LDA #$01 C0/A4AD: 4C 5C 9B JMP $9B5C ; [ Event Command $4A: Wait for Dialog Keypress ] C0/A4B0: A5 D3 LDA $D3 ; dialog keypress state C0/A4B2: C9 01 CMP #$01 C0/A4B4: F0 01 BEQ $A4B7 C0/A4B6: 60 RTS C0/A4B7: A9 01 LDA #$01 C0/A4B9: 4C 5C 9B JMP $9B5C ; [ Event Command $4B: Display Dialog Message (wait for keypress) ] ; +$EB = bt-ddddd dddddddd ; b: show at bottom of screen ; t: show text only ; d: dialog message C0/A4BC: C2 20 REP #$20 C0/A4BE: A5 EB LDA $EB C0/A4C0: 29 FF 1F AND #$1FFF C0/A4C3: 85 D0 STA $D0 ; set dialog index C0/A4C5: 7B TDC C0/A4C6: E2 20 SEP #$20 C0/A4C8: A5 EC LDA $EC C0/A4CA: 30 04 BMI $A4D0 ; branch if showing dialog window at bottom of screen C0/A4CC: A9 01 LDA #$01 ; y = 1 (top of screen) C0/A4CE: 80 02 BRA $A4D2 C0/A4D0: A9 12 LDA #$12 ; y = 18 (bottom of screen) C0/A4D2: 85 BC STA $BC C0/A4D4: A5 EC LDA $EC ; text only flag C0/A4D6: 29 40 AND #$40 C0/A4D8: 4A LSR C0/A4D9: 4A LSR C0/A4DA: 4A LSR C0/A4DB: 4A LSR C0/A4DC: 4A LSR C0/A4DD: 4A LSR C0/A4DE: 8D 64 05 STA $0564 C0/A4E1: 20 BF 7F JSR $7FBF ; update pointer to current dialog item C0/A4E4: A9 01 LDA #$01 ; enable dialog window C0/A4E6: 85 BA STA $BA C0/A4E8: A9 01 LDA #$01 ; $CA0001 (wait for dialog keypress) C0/A4EA: 85 EB STA $EB C0/A4EC: A9 00 LDA #$00 C0/A4EE: 85 EC STA $EC C0/A4F0: A9 00 LDA #$00 C0/A4F2: 85 ED STA $ED C0/A4F4: A9 03 LDA #$03 ; return address is PC+3 C0/A4F6: 4C A3 B1 JMP $B1A3 ; jump to subroutine ; [ Event Command $4E: Initiate Random Battle ] C0/A4F9: E6 56 INC $56 ; enable battle C0/A4FB: 9C 8A 07 STZ $078A ; enable blur and sound C0/A4FE: A9 01 LDA #$01 C0/A500: 4C 70 9B JMP $9B70 ; [ Event Command $AF: Initiate Colosseum Battle ] C0/A503: AD 01 02 LDA $0201 C0/A506: D0 0D BNE $A515 C0/A508: A2 3F 02 LDX #$023F ; normal colosseum battle C0/A50B: AD D7 1E LDA $1ED7 C0/A50E: 29 F7 AND #$F7 C0/A510: 8D D7 1E STA $1ED7 C0/A513: 80 0B BRA $A520 C0/A515: A2 3E 02 LDX #$023E ; colosseum battle vs. SHADOW C0/A518: AD D7 1E LDA $1ED7 C0/A51B: 09 08 ORA #$08 C0/A51D: 8D D7 1E STA $1ED7 C0/A520: C2 20 REP #$20 C0/A522: 8A TXA C0/A523: 8F E0 11 00 STA $0011E0 C0/A527: A9 1C 00 LDA #$001C C0/A52A: 8F E2 11 00 STA $0011E2 ; set battle background to colosseum C0/A52E: 7B TDC C0/A52F: E2 20 SEP #$20 C0/A531: A9 C0 LDA #$C0 C0/A533: 8D FA 11 STA $11FA C0/A536: AD D7 1E LDA $1ED7 C0/A539: 29 10 AND #$10 C0/A53B: 4A LSR C0/A53C: 8F E4 11 00 STA $0011E4 C0/A540: A9 01 LDA #$01 C0/A542: 85 56 STA $56 C0/A544: A9 C0 LDA #$C0 C0/A546: 8D 8A 07 STA $078A C0/A549: A9 01 LDA #$01 C0/A54B: 4C 70 9B JMP $9B70 ; [ Event Command $8E: Initiate Monster-in-a-Box Battle ] C0/A54E: AD 89 07 LDA $0789 ; monster-in-a-box event battle group number C0/A551: 85 EB STA $EB C0/A553: A9 3F LDA #$3F ; default battle bg C0/A555: 85 EC STA $EC C0/A557: 20 A7 A5 JSR $A5A7 ; set event battle index C0/A55A: AE 41 05 LDX $0541 ; set scroll position C0/A55D: 8E 66 1F STX $1F66 C0/A560: AE AF 00 LDX $00AF ; set party position C0/A563: 8E C0 1F STX $1FC0 C0/A566: A9 C0 LDA #$C0 ; enable map startup event, disable auto fade-in C0/A568: 8D FA 11 STA $11FA C0/A56B: A9 01 LDA #$01 C0/A56D: 4C 70 9B JMP $9B70 ; [ Event Command $82: Reset Default Party ] C0/A570: A9 01 LDA #$01 C0/A572: 8D 5D 05 STA $055D C0/A575: 4C 5C 9B JMP $9B5C ; [ Event Command $4D: Initiate Battle ] ; $EB = event battle group ; $EC = bsgggggg ; b: disable blur ; s: disable sound effect ; g: battle bg ($3F = map default) C0/A578: 20 A7 A5 JSR $A5A7 ; set event battle index C0/A57B: AE 41 05 LDX $0541 ; set scroll position C0/A57E: 8E 66 1F STX $1F66 C0/A581: AE AF 00 LDX $00AF ; set party position C0/A584: 8E C0 1F STX $1FC0 C0/A587: A9 E0 LDA #$E0 ; enable map startup event, disable auto fade-in, don't update map size C0/A589: 8D FA 11 STA $11FA C0/A58C: A9 03 LDA #$03 C0/A58E: 4C 70 9B JMP $9B70 ; [ Event Command $4C: Initiate Battle (party collision) ] ; $EB = event battle group ; $EC = bsgggggg ; b: disable blur ; s: disable sound effect ; g: battle bg ($3F = map default) C0/A591: 20 A7 A5 JSR $A5A7 ; set event battle index C0/A594: AE 57 05 LDX $0557 ; set party position and scroll position to the collided party C0/A597: 8E 66 1F STX $1F66 C0/A59A: 8E C0 1F STX $1FC0 C0/A59D: A9 C0 LDA #$C0 ; enable map startup event, disable auto fade-in C0/A59F: 8D FA 11 STA $11FA C0/A5A2: A9 03 LDA #$03 C0/A5A4: 4C 70 9B JMP $9B70 ; [ Set Event Battle Index ] ; $EB = event battle group ; $EC = bsgggggg ; b: disable blur ; s: disable sound effect ; g: battle bg ($3F = map default) battle_sub: C0/A5A7: A5 EB LDA $EB ; event battle group C0/A5A9: C2 20 REP #$20 C0/A5AB: 0A ASL C0/A5AC: 0A ASL C0/A5AD: AA TAX C0/A5AE: 7B TDC C0/A5AF: E2 20 SEP #$20 C0/A5B1: 20 96 C4 JSR $C496 ; (0..255) C0/A5B4: C9 C0 CMP #$C0 C0/A5B6: 90 02 BCC $A5BA ; 3/4 chance to choose the first battle C0/A5B8: E8 INX ; 1/4 chance to choose the second battle C0/A5B9: E8 INX C0/A5BA: C2 20 REP #$20 C0/A5BC: BF 00 50 CF LDA $CF5000,X ; battle index C0/A5C0: 8F E0 11 00 STA $0011E0 C0/A5C4: 7B TDC C0/A5C5: E2 20 SEP #$20 C0/A5C7: A5 EC LDA $EC ; battle blur/sound flags C0/A5C9: 29 C0 AND #$C0 C0/A5CB: 8D 8A 07 STA $078A C0/A5CE: A5 EC LDA $EC ; battle bg C0/A5D0: 29 3F AND #$3F C0/A5D2: C9 3F CMP #$3F C0/A5D4: D0 05 BNE $A5DB C0/A5D6: AD 22 05 LDA $0522 ; map's default battle bg C0/A5D9: 29 7F AND #$7F C0/A5DB: 8F E2 11 00 STA $0011E2 ; set battle bg C0/A5DF: 7B TDC C0/A5E0: 8F E3 11 00 STA $0011E3 C0/A5E4: AD D7 1E LDA $1ED7 ; C0/A5E7: 29 10 AND #$10 C0/A5E9: 4A LSR C0/A5EA: 8F E4 11 00 STA $0011E4 C0/A5EE: A9 01 LDA #$01 ; enable battle C0/A5F0: 85 56 STA $56 C0/A5F2: 60 RTS ; [ Event Command $4F: Restore Saved Game ] C0/A5F3: A9 01 LDA #$01 ; enable restore saved game C0/A5F5: 8D F1 11 STA $11F1 C0/A5F8: A9 01 LDA #$01 C0/A5FA: 4C 70 9B JMP $9B70 ; [ Event Command $50: Modify BG Palettes ] ; $EB = mmmrgbii ; m: color math function ; 0 = restore all colors to normal ; 1 = increment color ; 2 = add color (doesn't work) ; 3 = decrement colors (restore to normal) ; 4 = decrement colors ; 5 = subtract color ; 6 = increment colors (restore to normal) ; 7 = restore all colors to normal ; r/g/b: affected colors ; i: target intensity for inc/dec, add/sub value for add/sub C0/A5FD: A9 08 LDA #$08 ; color range begin (skip font palette) C0/A5FF: 85 DF STA $DF C0/A601: A9 F0 LDA #$F0 ; color range end (skip dialog window palette) C0/A603: 85 E0 STA $E0 C0/A605: 20 0B A7 JSR $A70B ; init color math C0/A608: 3A DEC C0/A609: D0 05 BNE $A610 C0/A60B: 20 47 11 JSR $1147 C0/A60E: 80 2B BRA $A63B C0/A610: 3A DEC C0/A611: D0 05 BNE $A618 C0/A613: 20 89 12 JSR $1289 C0/A616: 80 23 BRA $A63B C0/A618: 3A DEC C0/A619: D0 05 BNE $A620 C0/A61B: 20 8B 11 JSR $118B C0/A61E: 80 1B BRA $A63B C0/A620: 3A DEC C0/A621: D0 05 BNE $A628 C0/A623: 20 E5 11 JSR $11E5 C0/A626: 80 13 BRA $A63B C0/A628: 3A DEC C0/A629: D0 05 BNE $A630 C0/A62B: 20 E5 12 JSR $12E5 C0/A62E: 80 0B BRA $A63B C0/A630: 3A DEC C0/A631: D0 05 BNE $A638 C0/A633: 20 2F 12 JSR $122F C0/A636: 80 03 BRA $A63B C0/A638: 20 44 13 JSR $1344 C0/A63B: A9 02 LDA #$02 C0/A63D: 4C 70 9B JMP $9B70 ; [ Event Command $51: Modify BG Palette Range ] ; $EB = mmmrgbii ; m: color math function ; 0 = restore all colors to normal ; 1 = increment color ; 2 = add color (doesn't work) ; 3 = decrement colors (restore to normal) ; 4 = decrement colors ; 5 = subtract color ; 6 = increment colors (restore to normal) ; 7 = restore all colors to normal ; r/g/b: affected colors ; i: target intensity for inc/dec, add/sub value for add/sub ; $EC = range start ; $ED = range end C0/A640: A5 EC LDA $EC C0/A642: 0A ASL C0/A643: 85 DF STA $DF C0/A645: A5 ED LDA $ED C0/A647: 1A INC C0/A648: 0A ASL C0/A649: 85 E0 STA $E0 C0/A64B: 20 0B A7 JSR $A70B C0/A64E: 3A DEC C0/A64F: D0 05 BNE $A656 C0/A651: 20 47 11 JSR $1147 C0/A654: 80 2B BRA $A681 C0/A656: 3A DEC C0/A657: D0 05 BNE $A65E C0/A659: 20 89 12 JSR $1289 C0/A65C: 80 23 BRA $A681 C0/A65E: 3A DEC C0/A65F: D0 05 BNE $A666 C0/A661: 20 8B 11 JSR $118B C0/A664: 80 1B BRA $A681 C0/A666: 3A DEC C0/A667: D0 05 BNE $A66E C0/A669: 20 E5 11 JSR $11E5 C0/A66C: 80 13 BRA $A681 C0/A66E: 3A DEC C0/A66F: D0 05 BNE $A676 C0/A671: 20 E5 12 JSR $12E5 C0/A674: 80 0B BRA $A681 C0/A676: 3A DEC C0/A677: D0 05 BNE $A67E C0/A679: 20 2F 12 JSR $122F C0/A67C: 80 03 BRA $A681 C0/A67E: 20 44 13 JSR $1344 C0/A681: A9 04 LDA #$04 C0/A683: 4C 70 9B JMP $9B70 ; [ Event Command $52: Modify Object Palettes ] ; $EB = mmmrgbii ; m: color math function ; 0 = restore all colors to normal ; 1 = increment color ; 2 = add color (doesn't work) ; 3 = decrement colors (restore to normal) ; 4 = decrement colors ; 5 = subtract color ; 6 = increment colors (restore to normal) ; 7 = restore all colors to normal ; r/g/b: affected colors ; i: target intensity for inc/dec, add/sub value for add/sub C0/A686: 64 DF STZ $DF C0/A688: 64 E0 STZ $E0 C0/A68A: 20 0B A7 JSR $A70B C0/A68D: 3A DEC C0/A68E: D0 05 BNE $A695 C0/A690: 20 8F 13 JSR $138F C0/A693: 80 2B BRA $A6C0 C0/A695: 3A DEC C0/A696: D0 05 BNE $A69D C0/A698: 20 D1 14 JSR $14D1 C0/A69B: 80 23 BRA $A6C0 C0/A69D: 3A DEC C0/A69E: D0 05 BNE $A6A5 C0/A6A0: 20 D3 13 JSR $13D3 C0/A6A3: 80 1B BRA $A6C0 C0/A6A5: 3A DEC C0/A6A6: D0 05 BNE $A6AD C0/A6A8: 20 2D 14 JSR $142D C0/A6AB: 80 13 BRA $A6C0 C0/A6AD: 3A DEC C0/A6AE: D0 05 BNE $A6B5 C0/A6B0: 20 2D 15 JSR $152D C0/A6B3: 80 0B BRA $A6C0 C0/A6B5: 3A DEC C0/A6B6: D0 05 BNE $A6BD C0/A6B8: 20 77 14 JSR $1477 C0/A6BB: 80 03 BRA $A6C0 C0/A6BD: 20 8C 15 JSR $158C C0/A6C0: A9 02 LDA #$02 C0/A6C2: 4C 70 9B JMP $9B70 ; [ Event Command $53: Modify Object Palette Range ] ; $EB = mmmrgbii ; m: color math function ; 0 = restore all colors to normal ; 1 = increment color ; 2 = add color (doesn't work) ; 3 = decrement colors (restore to normal) ; 4 = decrement colors ; 5 = subtract color ; 6 = increment colors (restore to normal) ; 7 = restore all colors to normal ; r/g/b: affected colors ; i: target intensity for inc/dec, add/sub value for add/sub ; $EC = range start ; $ED = range end C0/A6C5: A5 EC LDA $EC C0/A6C7: 0A ASL C0/A6C8: 85 DF STA $DF C0/A6CA: A5 ED LDA $ED C0/A6CC: 1A INC C0/A6CD: 0A ASL C0/A6CE: 85 E0 STA $E0 C0/A6D0: 20 0B A7 JSR $A70B C0/A6D3: 3A DEC C0/A6D4: D0 05 BNE $A6DB C0/A6D6: 20 8F 13 JSR $138F C0/A6D9: 80 2B BRA $A706 C0/A6DB: 3A DEC C0/A6DC: D0 05 BNE $A6E3 C0/A6DE: 20 D1 14 JSR $14D1 C0/A6E1: 80 23 BRA $A706 C0/A6E3: 3A DEC C0/A6E4: D0 05 BNE $A6EB C0/A6E6: 20 D3 13 JSR $13D3 C0/A6E9: 80 1B BRA $A706 C0/A6EB: 3A DEC C0/A6EC: D0 05 BNE $A6F3 C0/A6EE: 20 2D 14 JSR $142D C0/A6F1: 80 13 BRA $A706 C0/A6F3: 3A DEC C0/A6F4: D0 05 BNE $A6FB C0/A6F6: 20 2D 15 JSR $152D C0/A6F9: 80 0B BRA $A706 C0/A6FB: 3A DEC C0/A6FC: D0 05 BNE $A703 C0/A6FE: 20 77 14 JSR $1477 C0/A701: 80 03 BRA $A706 C0/A703: 20 8C 15 JSR $158C C0/A706: A9 04 LDA #$04 C0/A708: 4C 70 9B JMP $9B70 ; [ Init Color Math ] addsub_palette_sub: C0/A70B: 64 1A STZ $1A ; $1A = red color constant C0/A70D: 64 1B STZ $1B ; $1B = blue color constant C0/A70F: 64 20 STZ $20 ; +$20 = green color constant C0/A711: 64 21 STZ $21 C0/A713: A5 EB LDA $EB ; intensity C0/A715: 29 03 AND #$03 C0/A717: 0A ASL C0/A718: AA TAX C0/A719: A5 EB LDA $EB ; red C0/A71B: 29 10 AND #$10 C0/A71D: F0 06 BEQ $A725 C0/A71F: BF 6C A7 C0 LDA $C0A76C,X C0/A723: 85 1A STA $1A C0/A725: A5 EB LDA $EB ; blue C0/A727: 29 08 AND #$08 C0/A729: F0 0B BEQ $A736 C0/A72B: C2 20 REP #$20 C0/A72D: BF 7C A7 C0 LDA $C0A77C,X C0/A731: 85 20 STA $20 C0/A733: 7B TDC C0/A734: E2 20 SEP #$20 C0/A736: A5 EB LDA $EB ; green C0/A738: 29 04 AND #$04 C0/A73A: F0 06 BEQ $A742 C0/A73C: BF 74 A7 C0 LDA $C0A774,X C0/A740: 85 1B STA $1B C0/A742: A5 EB LDA $EB ; branch if adding color C0/A744: 10 1E BPL $A764 C0/A746: A5 1A LDA $1A C0/A748: 45 02 EOR $02 C0/A74A: 29 1F AND #$1F C0/A74C: 85 1A STA $1A C0/A74E: A5 1B LDA $1B C0/A750: 45 02 EOR $02 C0/A752: 29 7C AND #$7C C0/A754: 85 1B STA $1B C0/A756: C2 20 REP #$20 C0/A758: A5 20 LDA $20 C0/A75A: 45 02 EOR $02 C0/A75C: 29 E0 03 AND #$03E0 C0/A75F: 85 20 STA $20 C0/A761: 7B TDC C0/A762: E2 20 SEP #$20 C0/A764: A5 EB LDA $EB ; return color function C0/A766: 4A LSR C0/A767: 4A LSR C0/A768: 4A LSR C0/A769: 4A LSR C0/A76A: 4A LSR C0/A76B: 60 RTS ; red color intensities r_control_tbl: C0/A76C: .DW $0004, $0008, $0010, $001F ; blue color intensities b_control_tbl: C0/A774: .DW $0010, $0020, $0040, $007C ; green color intensities g_control_tbl: C0/A77C: .DW $0080, $0100, $0200, $03E0 ; [ Event Command $54: Disable Fixed Color Add/Sub ] C0/A784: 64 4D STZ $4D C0/A786: 64 4B STZ $4B C0/A788: A5 4F LDA $4F C0/A78A: 85 4E STA $4E C0/A78C: A5 53 LDA $53 C0/A78E: 85 52 STA $52 C0/A790: A9 01 LDA #$01 C0/A792: 4C 5C 9B JMP $9B5C ; [ Event Command $55: Flash Screen ] ; $EB = bgr----- ; b: affect blue ; g: affect green ; r: affect red C0/A795: A5 4D LDA $4D ; return if fixed color add/sub is already enabled C0/A797: D0 0A BNE $A7A3 C0/A799: A5 4E LDA $4E ; save color add/sub designation C0/A79B: 85 4F STA $4F C0/A79D: A5 52 LDA $52 ; save subscreen designation C0/A79F: 85 53 STA $53 C0/A7A1: 64 52 STZ $52 ; clear subscreen designation C0/A7A3: A9 07 LDA #$07 ; affect BG only C0/A7A5: 85 4E STA $4E C0/A7A7: A5 EB LDA $EB ; set color components C0/A7A9: 29 E0 AND #$E0 C0/A7AB: 85 54 STA $54 C0/A7AD: A9 F8 LDA #$F8 ; set starting intensity to full C0/A7AF: 85 4D STA $4D C0/A7B1: A9 08 LDA #$08 ; fixed color fading out, speed 8 C0/A7B3: 85 4B STA $4B C0/A7B5: A9 02 LDA #$02 C0/A7B7: 4C 5C 9B JMP $9B5C ; [ Event Command $56: Set Fixed Color Addition ] ; $EB = bgrssiii ; b: affect blue ; g: affect green ; r: affect red ; s: speed ; i: intensity C0/A7BA: A5 4D LDA $4D C0/A7BC: D0 07 BNE $A7C5 C0/A7BE: A5 EB LDA $EB C0/A7C0: 20 2B 10 JSR $102B C0/A7C3: 80 06 BRA $A7CB C0/A7C5: A5 4B LDA $4B C0/A7C7: 29 7F AND #$7F C0/A7C9: 85 4B STA $4B C0/A7CB: A9 02 LDA #$02 C0/A7CD: 4C 5C 9B JMP $9B5C ; [ Event Command $57: Set Fixed Color Subtraction ] ; $EB = bgrssiii ; b: affect blue ; g: affect green ; r: affect red ; s: speed ; i: intensity C0/A7D0: A5 4D LDA $4D C0/A7D2: D0 07 BNE $A7DB C0/A7D4: A5 EB LDA $EB C0/A7D6: 20 3D 10 JSR $103D C0/A7D9: 80 06 BRA $A7E1 C0/A7DB: A5 4B LDA $4B C0/A7DD: 29 7F AND #$7F C0/A7DF: 85 4B STA $4B C0/A7E1: A9 02 LDA #$02 C0/A7E3: 4C 5C 9B JMP $9B5C ; [ Event Command $58: Shake Screen ] ; $EB = o321ffaa ; o: shake obj layer ; 3: shake BG3 ; 2: shake BG2 ; 1: shake BG1 ; f: frequency ; a: amplitude C0/A7E6: A5 EB LDA $EB C0/A7E8: 8D 4A 07 STA $074A C0/A7EB: A9 02 LDA #$02 C0/A7ED: 4C 5C 9B JMP $9B5C ; [ Event Command $96: Fade In ] C0/A7F0: A9 10 LDA #$10 C0/A7F2: 85 4A STA $4A C0/A7F4: A9 10 LDA #$10 C0/A7F6: 85 4C STA $4C C0/A7F8: A9 01 LDA #$01 C0/A7FA: 4C 5C 9B JMP $9B5C ; [ Event Command $97: Fade Out ] C0/A7FD: A9 90 LDA #$90 C0/A7FF: 85 4A STA $4A C0/A801: A9 F0 LDA #$F0 C0/A803: 85 4C STA $4C C0/A805: A9 01 LDA #$01 C0/A807: 4C 5C 9B JMP $9B5C ; [ Event Command $59: Fade In ] ; $EB = speed (0..31) C0/A80A: A5 EB LDA $EB C0/A80C: 85 4A STA $4A C0/A80E: A9 10 LDA #$10 C0/A810: 85 4C STA $4C C0/A812: A9 02 LDA #$02 C0/A814: 4C 5C 9B JMP $9B5C ; [ Event Command $5A: Fade Out ] ; $EB = speed (0..31) C0/A817: A5 EB LDA $EB C0/A819: 09 80 ORA #$80 C0/A81B: 85 4A STA $4A C0/A81D: A9 F0 LDA #$F0 C0/A81F: 85 4C STA $4C C0/A821: A9 02 LDA #$02 C0/A823: 4C 5C 9B JMP $9B5C ; [ Event Command $5B: Stop Fade In/Out ] C0/A826: 64 4A STZ $4A C0/A828: A9 01 LDA #$01 C0/A82A: 4C 5C 9B JMP $9B5C ; [ Event Command $5C: Wait for Fade In/Out ] C0/A82D: A5 E1 LDA $E1 C0/A82F: 09 40 ORA #$40 C0/A831: 85 E1 STA $E1 C0/A833: A9 01 LDA #$01 C0/A835: 4C 5C 9B JMP $9B5C ; [ Event Command $5D: Scroll BG1 ] ; these are the ones where $FF -> $FFFF ; $EB = horizontal scroll speed ; $EC = vertical scroll speed C0/A838: A5 EB LDA $EB C0/A83A: 30 0E BMI $A84A C0/A83C: C2 20 REP #$20 C0/A83E: 0A ASL C0/A83F: 0A ASL C0/A840: 0A ASL C0/A841: 0A ASL C0/A842: 8D 47 05 STA $0547 C0/A845: 7B TDC C0/A846: E2 20 SEP #$20 C0/A848: 80 10 BRA $A85A C0/A84A: 45 02 EOR $02 C0/A84C: C2 20 REP #$20 C0/A84E: 0A ASL C0/A84F: 0A ASL C0/A850: 0A ASL C0/A851: 0A ASL C0/A852: 45 02 EOR $02 C0/A854: 8D 47 05 STA $0547 C0/A857: 7B TDC C0/A858: E2 20 SEP #$20 C0/A85A: A5 EC LDA $EC C0/A85C: 30 0E BMI $A86C C0/A85E: C2 20 REP #$20 C0/A860: 0A ASL C0/A861: 0A ASL C0/A862: 0A ASL C0/A863: 0A ASL C0/A864: 8D 49 05 STA $0549 C0/A867: 7B TDC C0/A868: E2 20 SEP #$20 C0/A86A: 80 10 BRA $A87C C0/A86C: 45 02 EOR $02 C0/A86E: C2 20 REP #$20 C0/A870: 0A ASL C0/A871: 0A ASL C0/A872: 0A ASL C0/A873: 0A ASL C0/A874: 45 02 EOR $02 C0/A876: 8D 49 05 STA $0549 C0/A879: 7B TDC C0/A87A: E2 20 SEP #$20 C0/A87C: A9 03 LDA #$03 C0/A87E: 4C 5C 9B JMP $9B5C ; [ Event Command $70: Scroll BG1 ] ; these are the ones where $FF -> $FFF0 ; $EB = horizontal scroll speed ; $EC = vertical scroll speed C0/A881: A5 EB LDA $EB C0/A883: 30 0E BMI $A893 C0/A885: C2 20 REP #$20 C0/A887: 0A ASL C0/A888: 0A ASL C0/A889: 0A ASL C0/A88A: 0A ASL C0/A88B: 8D 47 05 STA $0547 C0/A88E: 7B TDC C0/A88F: E2 20 SEP #$20 C0/A891: 80 12 BRA $A8A5 C0/A893: 45 02 EOR $02 C0/A895: 1A INC C0/A896: C2 20 REP #$20 C0/A898: 0A ASL C0/A899: 0A ASL C0/A89A: 0A ASL C0/A89B: 0A ASL C0/A89C: 45 02 EOR $02 C0/A89E: 1A INC C0/A89F: 8D 47 05 STA $0547 C0/A8A2: 7B TDC C0/A8A3: E2 20 SEP #$20 C0/A8A5: A5 EC LDA $EC C0/A8A7: 30 0E BMI $A8B7 C0/A8A9: C2 20 REP #$20 C0/A8AB: 0A ASL C0/A8AC: 0A ASL C0/A8AD: 0A ASL C0/A8AE: 0A ASL C0/A8AF: 8D 49 05 STA $0549 C0/A8B2: 7B TDC C0/A8B3: E2 20 SEP #$20 C0/A8B5: 80 12 BRA $A8C9 C0/A8B7: 45 02 EOR $02 C0/A8B9: 1A INC C0/A8BA: C2 20 REP #$20 C0/A8BC: 0A ASL C0/A8BD: 0A ASL C0/A8BE: 0A ASL C0/A8BF: 0A ASL C0/A8C0: 45 02 EOR $02 C0/A8C2: 1A INC C0/A8C3: 8D 49 05 STA $0549 C0/A8C6: 7B TDC C0/A8C7: E2 20 SEP #$20 C0/A8C9: A9 03 LDA #$03 C0/A8CB: 4C 5C 9B JMP $9B5C ; [ Event Command $5E: Scroll BG2 ] ; $EB = horizontal scroll speed ; $EC = vertical scroll speed C0/A8CE: A5 EB LDA $EB C0/A8D0: 30 0E BMI $A8E0 C0/A8D2: C2 20 REP #$20 C0/A8D4: 0A ASL C0/A8D5: 0A ASL C0/A8D6: 0A ASL C0/A8D7: 0A ASL C0/A8D8: 8D 4B 05 STA $054B C0/A8DB: 7B TDC C0/A8DC: E2 20 SEP #$20 C0/A8DE: 80 10 BRA $A8F0 C0/A8E0: 45 02 EOR $02 C0/A8E2: C2 20 REP #$20 C0/A8E4: 0A ASL C0/A8E5: 0A ASL C0/A8E6: 0A ASL C0/A8E7: 0A ASL C0/A8E8: 45 02 EOR $02 C0/A8EA: 8D 4B 05 STA $054B C0/A8ED: 7B TDC C0/A8EE: E2 20 SEP #$20 C0/A8F0: A5 EC LDA $EC C0/A8F2: 30 0E BMI $A902 C0/A8F4: C2 20 REP #$20 C0/A8F6: 0A ASL C0/A8F7: 0A ASL C0/A8F8: 0A ASL C0/A8F9: 0A ASL C0/A8FA: 8D 4D 05 STA $054D C0/A8FD: 7B TDC C0/A8FE: E2 20 SEP #$20 C0/A900: 80 10 BRA $A912 C0/A902: 45 02 EOR $02 C0/A904: C2 20 REP #$20 C0/A906: 0A ASL C0/A907: 0A ASL C0/A908: 0A ASL C0/A909: 0A ASL C0/A90A: 45 02 EOR $02 C0/A90C: 8D 4D 05 STA $054D C0/A90F: 7B TDC C0/A910: E2 20 SEP #$20 C0/A912: A9 03 LDA #$03 C0/A914: 4C 5C 9B JMP $9B5C ; [ Event Command $71: Scroll BG2 ] ; $EB = horizontal scroll speed ; $EC = vertical scroll speed C0/A917: A5 EB LDA $EB C0/A919: 30 0E BMI $A929 C0/A91B: C2 20 REP #$20 C0/A91D: 0A ASL C0/A91E: 0A ASL C0/A91F: 0A ASL C0/A920: 0A ASL C0/A921: 8D 4B 05 STA $054B C0/A924: 7B TDC C0/A925: E2 20 SEP #$20 C0/A927: 80 12 BRA $A93B C0/A929: 45 02 EOR $02 C0/A92B: 1A INC C0/A92C: C2 20 REP #$20 C0/A92E: 0A ASL C0/A92F: 0A ASL C0/A930: 0A ASL C0/A931: 0A ASL C0/A932: 45 02 EOR $02 C0/A934: 1A INC C0/A935: 8D 4B 05 STA $054B C0/A938: 7B TDC C0/A939: E2 20 SEP #$20 C0/A93B: A5 EC LDA $EC C0/A93D: 30 0E BMI $A94D C0/A93F: C2 20 REP #$20 C0/A941: 0A ASL C0/A942: 0A ASL C0/A943: 0A ASL C0/A944: 0A ASL C0/A945: 8D 4D 05 STA $054D C0/A948: 7B TDC C0/A949: E2 20 SEP #$20 C0/A94B: 80 12 BRA $A95F C0/A94D: 45 02 EOR $02 C0/A94F: 1A INC C0/A950: C2 20 REP #$20 C0/A952: 0A ASL C0/A953: 0A ASL C0/A954: 0A ASL C0/A955: 0A ASL C0/A956: 45 02 EOR $02 C0/A958: 1A INC C0/A959: 8D 4D 05 STA $054D C0/A95C: 7B TDC C0/A95D: E2 20 SEP #$20 C0/A95F: A9 03 LDA #$03 C0/A961: 4C 5C 9B JMP $9B5C ; [ Event Command $5F: Scroll BG3 ] ; $EB = horizontal scroll speed ; $EC = vertical scroll speed C0/A964: A5 EB LDA $EB C0/A966: 30 0E BMI $A976 C0/A968: C2 20 REP #$20 C0/A96A: 0A ASL C0/A96B: 0A ASL C0/A96C: 0A ASL C0/A96D: 0A ASL C0/A96E: 8D 4F 05 STA $054F C0/A971: 7B TDC C0/A972: E2 20 SEP #$20 C0/A974: 80 10 BRA $A986 C0/A976: 45 02 EOR $02 C0/A978: C2 20 REP #$20 C0/A97A: 0A ASL C0/A97B: 0A ASL C0/A97C: 0A ASL C0/A97D: 0A ASL C0/A97E: 45 02 EOR $02 C0/A980: 8D 4F 05 STA $054F C0/A983: 7B TDC C0/A984: E2 20 SEP #$20 C0/A986: A5 EC LDA $EC C0/A988: 30 0E BMI $A998 C0/A98A: C2 20 REP #$20 C0/A98C: 0A ASL C0/A98D: 0A ASL C0/A98E: 0A ASL C0/A98F: 0A ASL C0/A990: 8D 51 05 STA $0551 C0/A993: 7B TDC C0/A994: E2 20 SEP #$20 C0/A996: 80 10 BRA $A9A8 C0/A998: 45 02 EOR $02 C0/A99A: C2 20 REP #$20 C0/A99C: 0A ASL C0/A99D: 0A ASL C0/A99E: 0A ASL C0/A99F: 0A ASL C0/A9A0: 45 02 EOR $02 C0/A9A2: 8D 51 05 STA $0551 C0/A9A5: 7B TDC C0/A9A6: E2 20 SEP #$20 C0/A9A8: A9 03 LDA #$03 C0/A9AA: 4C 5C 9B JMP $9B5C ; [ Event Command $72: Scroll BG3 ] ; $EB = horizontal scroll speed ; $EC = vertical scroll speed C0/A9AD: A5 EB LDA $EB C0/A9AF: 30 0E BMI $A9BF C0/A9B1: C2 20 REP #$20 C0/A9B3: 0A ASL C0/A9B4: 0A ASL C0/A9B5: 0A ASL C0/A9B6: 0A ASL C0/A9B7: 8D 4F 05 STA $054F C0/A9BA: 7B TDC C0/A9BB: E2 20 SEP #$20 C0/A9BD: 80 12 BRA $A9D1 C0/A9BF: 45 02 EOR $02 C0/A9C1: 1A INC C0/A9C2: C2 20 REP #$20 C0/A9C4: 0A ASL C0/A9C5: 0A ASL C0/A9C6: 0A ASL C0/A9C7: 0A ASL C0/A9C8: 45 02 EOR $02 C0/A9CA: 1A INC C0/A9CB: 8D 4F 05 STA $054F C0/A9CE: 7B TDC C0/A9CF: E2 20 SEP #$20 C0/A9D1: A5 EC LDA $EC C0/A9D3: 30 0E BMI $A9E3 C0/A9D5: C2 20 REP #$20 C0/A9D7: 0A ASL C0/A9D8: 0A ASL C0/A9D9: 0A ASL C0/A9DA: 0A ASL C0/A9DB: 8D 51 05 STA $0551 C0/A9DE: 7B TDC C0/A9DF: E2 20 SEP #$20 C0/A9E1: 80 12 BRA $A9F5 C0/A9E3: 45 02 EOR $02 C0/A9E5: 1A INC C0/A9E6: C2 20 REP #$20 C0/A9E8: 0A ASL C0/A9E9: 0A ASL C0/A9EA: 0A ASL C0/A9EB: 0A ASL C0/A9EC: 45 02 EOR $02 C0/A9EE: 1A INC C0/A9EF: 8D 51 05 STA $0551 C0/A9F2: 7B TDC C0/A9F3: E2 20 SEP #$20 C0/A9F5: A9 03 LDA #$03 C0/A9F7: 4C 5C 9B JMP $9B5C ; [ Event Command $60: Change Palette ] ; $EB = VRAM palette (0..15) ; $EC = character palette (0..31) C0/A9FA: C2 20 REP #$20 C0/A9FC: A5 EB LDA $EB C0/A9FE: 29 FF 00 AND #$00FF C0/AA01: 0A ASL C0/AA02: 0A ASL C0/AA03: 0A ASL C0/AA04: 0A ASL C0/AA05: 0A ASL C0/AA06: A8 TAY C0/AA07: A5 EC LDA $EC C0/AA09: 29 FF 00 AND #$00FF C0/AA0C: 0A ASL C0/AA0D: 0A ASL C0/AA0E: 0A ASL C0/AA0F: 0A ASL C0/AA10: 0A ASL C0/AA11: AA TAX C0/AA12: 7B TDC C0/AA13: E2 20 SEP #$20 C0/AA15: A9 7E LDA #$7E C0/AA17: 48 PHA C0/AA18: AB PLB C0/AA19: C2 20 REP #$20 C0/AA1B: A9 10 00 LDA #$0010 C0/AA1E: 85 1E STA $1E C0/AA20: BF 00 80 E6 LDA $E68000,X C0/AA24: 99 00 72 STA $7200,Y C0/AA27: 99 00 74 STA $7400,Y C0/AA2A: E8 INX C0/AA2B: E8 INX C0/AA2C: C8 INY C0/AA2D: C8 INY C0/AA2E: C6 1E DEC $1E C0/AA30: D0 EE BNE $AA20 C0/AA32: 7B TDC C0/AA33: E2 20 SEP #$20 C0/AA35: 7B TDC C0/AA36: 48 PHA C0/AA37: AB PLB C0/AA38: A9 03 LDA #$03 C0/AA3A: 4C 5C 9B JMP $9B5C ; [ Event Command $61: Filter Colors ] ; $EB = filter number (0 = black, 1 = red, 2 = green, 3 = yellow, 4 = blue, 5 = magenta, 6 = cyan, 7 = white) ; $EC = color range begin ; $ED = color range end C0/AA3D: A5 EB LDA $EB C0/AA3F: 0A ASL C0/AA40: AA TAX C0/AA41: C2 20 REP #$20 C0/AA43: BF BB AA C0 LDA $C0AABB,X ; +$20 = color filter value C0/AA47: 85 20 STA $20 C0/AA49: 7B TDC C0/AA4A: E2 20 SEP #$20 C0/AA4C: A5 ED LDA $ED C0/AA4E: 1A INC C0/AA4F: 38 SEC C0/AA50: E5 EC SBC $EC C0/AA52: A8 TAY C0/AA53: A5 EC LDA $EC C0/AA55: C2 20 REP #$20 C0/AA57: 0A ASL C0/AA58: AA TAX C0/AA59: 7B TDC C0/AA5A: E2 20 SEP #$20 C0/AA5C: BF 00 72 7E LDA $7E7200,X ; red C0/AA60: 29 1F AND #$1F C0/AA62: 85 1E STA $1E C0/AA64: BF 01 72 7E LDA $7E7201,X ; green C0/AA68: 4A LSR C0/AA69: 4A LSR C0/AA6A: 29 1F AND #$1F C0/AA6C: 18 CLC C0/AA6D: 65 1E ADC $1E C0/AA6F: 85 1E STA $1E C0/AA71: 64 1F STZ $1F C0/AA73: C2 20 REP #$20 C0/AA75: BF 00 72 7E LDA $7E7200,X ; blue C0/AA79: 0A ASL C0/AA7A: 0A ASL C0/AA7B: 0A ASL C0/AA7C: EB XBA C0/AA7D: 29 1F 00 AND #$001F C0/AA80: 18 CLC C0/AA81: 65 1E ADC $1E ; average color components (R + G + B) / 3 C0/AA83: 8D 04 42 STA $4204 C0/AA86: E2 20 SEP #$20 C0/AA88: A9 03 LDA #$03 C0/AA8A: 8D 06 42 STA $4206 C0/AA8D: EA NOP C0/AA8E: EA NOP C0/AA8F: EA NOP C0/AA90: EA NOP C0/AA91: EA NOP C0/AA92: E8 INX C0/AA93: E8 INX C0/AA94: AD 14 42 LDA $4214 ; blue C0/AA97: 0A ASL C0/AA98: 0A ASL C0/AA99: EB XBA C0/AA9A: AD 14 42 LDA $4214 ; red C0/AA9D: C2 20 REP #$20 C0/AA9F: 85 1E STA $1E C0/AAA1: AD 14 42 LDA $4214 ; green C0/AAA4: EB XBA C0/AAA5: 4A LSR C0/AAA6: 4A LSR C0/AAA7: 4A LSR C0/AAA8: 05 1E ORA $1E C0/AAAA: 25 20 AND $20 ; filter C0/AAAC: 9F FE 73 7E STA $7E73FE,X ; set filtered color C0/AAB0: 7B TDC C0/AAB1: E2 20 SEP #$20 C0/AAB3: 88 DEY C0/AAB4: D0 A6 BNE $AA5C C0/AAB6: A9 04 LDA #$04 C0/AAB8: 4C 5C 9B JMP $9B5C ; color filter values C0/AABB: .DW $0000, $001F, $03E0, $03FF, $7C00, $7C1F, $7FE0, $7FFF ; [ Event Command $62: Mosaic Screen ] ; $EB = speed C0/AACB: A5 EB LDA $EB C0/AACD: 8D F0 11 STA $11F0 ; mosaic speed C0/AAD0: A2 00 1E LDX #$1E00 C0/AAD3: 8E 96 07 STX $0796 ; mosaic counter C0/AAD6: A9 02 LDA #$02 C0/AAD8: 4C 5C 9B JMP $9B5C ; [ Event Command $63: Enable Flashlight ] ; $EB = flashlight radius (0..31) C0/AADB: A5 EB LDA $EB C0/AADD: 29 1F AND #$1F C0/AADF: 09 80 ORA #$80 C0/AAE1: 8D 7B 07 STA $077B C0/AAE4: A9 02 LDA #$02 C0/AAE6: 4C 5C 9B JMP $9B5C ; [ Event Command $64: Set BG Animation Frame ] ; $EB = animation tile (0..7) ; $EC = frame (0..3) C0/AAE9: A5 EB LDA $EB C0/AAEB: 8D 02 42 STA $4202 C0/AAEE: A9 0D LDA #$0D C0/AAF0: 8D 03 42 STA $4203 C0/AAF3: EA NOP C0/AAF4: EA NOP C0/AAF5: EA NOP C0/AAF6: AE 16 42 LDX $4216 C0/AAF9: A5 EC LDA $EC C0/AAFB: 29 03 AND #$03 C0/AAFD: 0A ASL C0/AAFE: 9D 69 10 STA $1069,X C0/AB01: 9E 6A 10 STZ $106A,X C0/AB04: A9 03 LDA #$03 C0/AB06: 4C 5C 9B JMP $9B5C ; [ Event Command $65: Set BG Animation Speed ] ; $EB = animation tile (0..7) ; $EC = speed (signed) C0/AB09: A5 EB LDA $EB C0/AB0B: 8D 02 42 STA $4202 C0/AB0E: A9 0D LDA #$0D C0/AB10: 8D 03 42 STA $4203 C0/AB13: EA NOP C0/AB14: EA NOP C0/AB15: EA NOP C0/AB16: AE 16 42 LDX $4216 C0/AB19: A5 EC LDA $EC C0/AB1B: 29 7F AND #$7F C0/AB1D: C2 20 REP #$20 C0/AB1F: 0A ASL C0/AB20: 0A ASL C0/AB21: 0A ASL C0/AB22: 0A ASL C0/AB23: 85 1E STA $1E C0/AB25: 7B TDC C0/AB26: E2 20 SEP #$20 C0/AB28: A5 EC LDA $EC C0/AB2A: 10 0C BPL $AB38 C0/AB2C: C2 20 REP #$20 C0/AB2E: A5 1E LDA $1E C0/AB30: 45 02 EOR $02 C0/AB32: 1A INC C0/AB33: 85 1E STA $1E C0/AB35: 7B TDC C0/AB36: E2 20 SEP #$20 C0/AB38: C2 20 REP #$20 C0/AB3A: A5 1E LDA $1E C0/AB3C: 9D 6B 10 STA $106B,X C0/AB3F: 7B TDC C0/AB40: E2 20 SEP #$20 C0/AB42: A9 03 LDA #$03 C0/AB44: 4C 5C 9B JMP $9B5C ; [ Event Command $6A: Load Map (wait for fade out) ] ; +$EB = --ddnzpm mmmmmmmm ; d: facing direction ; n: show map name ; z: z-level ; p: set destination as parent map ; m: map number ($01FE = previous map, $01FF = parent map) ; $ED = x position ; $EE = y position ; $EF = efs---vv ; e: enable map startup event ; f: disable map fade in when loading ; s: don't update map size when loading map ; v: world map vehicle (0 = no vehicle, 1 = airship, 2 = chocobo) C0/AB47: 20 88 6E JSR $6E88 ; save map and position for character objects C0/AB4A: 20 56 0F JSR $0F56 ; begin fade out C0/AB4D: A5 E1 LDA $E1 C0/AB4F: 09 40 ORA #$40 ; wait for fade out C0/AB51: 85 E1 STA $E1 C0/AB53: 80 05 BRA $AB5A ; [ Event Command $6B: Load Map (no fade out) ] ; +$EB = --ddnzpm mmmmmmmm ; d: facing direction ; n: show map name ; z: z-level ; p: set destination as parent map ; m: map number ($01FE = previous map, $01FF = parent map) ; $ED = x position ; $EE = y position ; $EF = efs---vv ; e: enable map startup event ; f: disable map fade in when loading ; s: don't update map size when loading map ; v: world map vehicle (0 = no vehicle, 1 = airship, 2 = chocobo) C0/AB55: 20 88 6E JSR $6E88 ; save map and position for character objects C0/AB58: 64 4A STZ $4A C0/AB5A: A9 01 LDA #$01 ; enable map load C0/AB5C: 85 84 STA $84 C0/AB5E: A5 EF LDA $EF ; map startup flags C0/AB60: 8D FA 11 STA $11FA C0/AB63: C2 20 REP #$20 C0/AB65: A5 EB LDA $EB ; branch if not setting parent map C0/AB67: 29 00 02 AND #$0200 C0/AB6A: F0 0D BEQ $AB79 C0/AB6C: A5 EB LDA $EB ; set parent map C0/AB6E: 29 FF 01 AND #$01FF C0/AB71: 8D 69 1F STA $1F69 C0/AB74: A5 ED LDA $ED C0/AB76: 8D 6B 1F STA $1F6B C0/AB79: A5 EB LDA $EB ; map number C0/AB7B: 8D 64 1F STA $1F64 C0/AB7E: 29 FF 01 AND #$01FF C0/AB81: C9 FF 01 CMP #$01FF ; branch if loading parent map C0/AB84: F0 47 BEQ $ABCD C0/AB86: C9 FE 01 CMP #$01FE ; branch if loading previous map C0/AB89: F0 47 BEQ $ABD2 C0/AB8B: AA TAX C0/AB8C: 7B TDC C0/AB8D: E2 20 SEP #$20 C0/AB8F: E0 03 00 CPX #$0003 C0/AB92: B0 1B BCS $ABAF ; branch if not loading a 3d map C0/AB94: A6 ED LDX $ED C0/AB96: 8E 60 1F STX $1F60 ; set world map position C0/AB99: C2 21 REP #$21 C0/AB9B: A5 E5 LDA $E5 C0/AB9D: 69 06 00 ADC #$0006 C0/ABA0: 8D FD 11 STA $11FD ; set world map event pointer C0/ABA3: E2 20 SEP #$20 C0/ABA5: A5 E7 LDA $E7 C0/ABA7: 69 00 ADC #$00 C0/ABA9: 8D FF 11 STA $11FF C0/ABAC: 7B TDC C0/ABAD: 80 57 BRA $AC06 C0/ABAF: A5 ED LDA $ED ; set position C0/ABB1: 8D C0 1F STA $1FC0 C0/ABB4: A5 EE LDA $EE C0/ABB6: 8D C1 1F STA $1FC1 C0/ABB9: A5 EC LDA $EC ; set facing direction C0/ABBB: 29 30 AND #$30 C0/ABBD: 4A LSR C0/ABBE: 4A LSR C0/ABBF: 4A LSR C0/ABC0: 4A LSR C0/ABC1: 8D 43 07 STA $0743 C0/ABC4: A5 EC LDA $EC ; show map name C0/ABC6: 29 08 AND #$08 C0/ABC8: 8D 45 07 STA $0745 C0/ABCB: 80 39 BRA $AC06 C0/ABCD: 20 46 1A JSR $1A46 ; restore parent map position C0/ABD0: 80 09 BRA $ABDB C0/ABD2: 7B TDC C0/ABD3: E2 20 SEP #$20 C0/ABD5: AD D2 1F LDA $1FD2 C0/ABD8: 8D 68 1F STA $1F68 C0/ABDB: C2 20 REP #$20 C0/ABDD: A5 EB LDA $EB C0/ABDF: 29 00 FE AND #$FE00 C0/ABE2: 0D 69 1F ORA $1F69 C0/ABE5: 8D 64 1F STA $1F64 C0/ABE8: 29 FF 01 AND #$01FF C0/ABEB: C9 03 00 CMP #$0003 C0/ABEE: B0 0B BCS $ABFB C0/ABF0: AD 6B 1F LDA $1F6B C0/ABF3: 8D 60 1F STA $1F60 C0/ABF6: 7B TDC C0/ABF7: E2 20 SEP #$20 C0/ABF9: 80 9E BRA $AB99 C0/ABFB: AD 6B 1F LDA $1F6B C0/ABFE: 8D C0 1F STA $1FC0 C0/AC01: 7B TDC C0/AC02: E2 20 SEP #$20 C0/AC04: 80 B3 BRA $ABB9 C0/AC06: A9 06 LDA #$06 C0/AC08: 4C 70 9B JMP $9B70 ; [ Event Command $6C: Set Parent Map ] ; +$EB = --ddnzpm mmmmmmmm ; d: facing direction ; n: show map name ; z: z-level ; p: set destination as parent map ; m: map number ; $ED = x position ; $EE = y position ; $EF = parent map facing direction C0/AC0B: A4 EB LDY $EB C0/AC0D: 8C 69 1F STY $1F69 C0/AC10: A4 ED LDY $ED C0/AC12: 8C 6B 1F STY $1F6B C0/AC15: A5 EF LDA $EF C0/AC17: 8D D2 1F STA $1FD2 C0/AC1A: A9 06 LDA #$06 C0/AC1C: 4C 5C 9B JMP $9B5C ; [ Event Command $75: Update Map Data ] C0/AC1F: AD 5A 05 LDA $055A C0/AC22: C9 05 CMP #$05 C0/AC24: D0 04 BNE $AC2A C0/AC26: 3A DEC C0/AC27: 8D 5A 05 STA $055A C0/AC2A: AD 5B 05 LDA $055B C0/AC2D: C9 05 CMP #$05 C0/AC2F: D0 04 BNE $AC35 C0/AC31: 3A DEC C0/AC32: 8D 5B 05 STA $055B C0/AC35: AD 5C 05 LDA $055C C0/AC38: C9 05 CMP #$05 C0/AC3A: D0 04 BNE $AC40 C0/AC3C: 3A DEC C0/AC3D: 8D 5C 05 STA $055C C0/AC40: A9 01 LDA #$01 C0/AC42: 4C 70 9B JMP $9B70 ; [ Event Command $73: Change Map Data (update immediately) ] ; $EB = x position ; $EC = bbyyyyyy ; b: 0 = BG1, 1 = BG2, 2 = BG3 ; y: y position ; $ED = width ; $EE = height C0/AC45: A5 EC LDA $EC C0/AC47: 29 C0 AND #$C0 C0/AC49: D0 07 BNE $AC52 C0/AC4B: A9 04 LDA #$04 C0/AC4D: 8D 5A 05 STA $055A C0/AC50: 80 10 BRA $AC62 C0/AC52: C9 40 CMP #$40 C0/AC54: D0 07 BNE $AC5D C0/AC56: A9 04 LDA #$04 C0/AC58: 8D 5B 05 STA $055B C0/AC5B: 80 05 BRA $AC62 C0/AC5D: A9 04 LDA #$04 C0/AC5F: 8D 5C 05 STA $055C ; fall through ; [ Event Command $74: Change Map Data (no update) ] ; $EB = x position ; $EC = bbyyyyyy ; b: 0 = BG1, 1 = BG2, 2 = BG3 ; y: y position ; $ED = width ; $EE = height C0/AC62: A5 EC LDA $EC C0/AC64: 29 C0 AND #$C0 C0/AC66: D0 0E BNE $AC76 C0/AC68: AD 5A 05 LDA $055A C0/AC6B: C9 04 CMP #$04 C0/AC6D: F0 25 BEQ $AC94 C0/AC6F: A9 05 LDA #$05 C0/AC71: 8D 5A 05 STA $055A C0/AC74: 80 1E BRA $AC94 C0/AC76: C9 40 CMP #$40 C0/AC78: D0 0E BNE $AC88 C0/AC7A: AD 5B 05 LDA $055B C0/AC7D: C9 04 CMP #$04 C0/AC7F: F0 13 BEQ $AC94 C0/AC81: A9 05 LDA #$05 C0/AC83: 8D 5B 05 STA $055B C0/AC86: 80 0C BRA $AC94 C0/AC88: AD 5C 05 LDA $055C C0/AC8B: C9 04 CMP #$04 C0/AC8D: F0 05 BEQ $AC94 C0/AC8F: A9 05 LDA #$05 C0/AC91: 8D 5C 05 STA $055C C0/AC94: A5 EB LDA $EB C0/AC96: 85 8F STA $8F C0/AC98: A5 EC LDA $EC C0/AC9A: 29 3F AND #$3F C0/AC9C: 85 90 STA $90 C0/AC9E: C2 21 REP #$21 C0/ACA0: A5 E5 LDA $E5 C0/ACA2: 69 03 00 ADC #$0003 C0/ACA5: 85 8C STA $8C C0/ACA7: E2 20 SEP #$20 C0/ACA9: A5 E7 LDA $E7 C0/ACAB: 69 00 ADC #$00 C0/ACAD: 85 8E STA $8E C0/ACAF: A5 ED LDA $ED C0/ACB1: 8D 02 42 STA $4202 C0/ACB4: A5 EE LDA $EE C0/ACB6: 8D 03 42 STA $4203 C0/ACB9: EA NOP C0/ACBA: EA NOP C0/ACBB: C2 21 REP #$21 C0/ACBD: AD 16 42 LDA $4216 C0/ACC0: 69 02 00 ADC #$0002 C0/ACC3: 65 8C ADC $8C C0/ACC5: 85 E5 STA $E5 C0/ACC7: E2 20 SEP #$20 C0/ACC9: A5 8E LDA $8E C0/ACCB: 69 00 ADC #$00 C0/ACCD: 85 E7 STA $E7 C0/ACCF: 7B TDC C0/ACD0: A5 EC LDA $EC C0/ACD2: 29 C0 AND #$C0 C0/ACD4: D0 08 BNE $ACDE C0/ACD6: A2 00 00 LDX #$0000 C0/ACD9: 86 2A STX $2A C0/ACDB: 4C C4 1E JMP $1EC4 C0/ACDE: 30 08 BMI $ACE8 C0/ACE0: A2 00 40 LDX #$4000 C0/ACE3: 86 2A STX $2A C0/ACE5: 4C C4 1E JMP $1EC4 C0/ACE8: A2 00 80 LDX #$8000 C0/ACEB: 86 2A STX $2A C0/ACED: 4C C4 1E JMP $1EC4 ; [ Event Command $80: Give Item ] ; $EB = item number C0/ACF0: A5 EB LDA $EB C0/ACF2: 85 1A STA $1A C0/ACF4: 20 FC AC JSR $ACFC C0/ACF7: A9 02 LDA #$02 C0/ACF9: 4C 5C 9B JMP $9B5C ; [ Add Item to Inventory ] ; $1A = item number get_item_sub: C0/ACFC: A6 00 LDX $00 C0/ACFE: BD 69 18 LDA $1869,X ; look for item C0/AD01: C5 1A CMP $1A C0/AD03: F0 1D BEQ $AD22 ; branch if found C0/AD05: E8 INX C0/AD06: E0 00 01 CPX #$0100 C0/AD09: D0 F3 BNE $ACFE C0/AD0B: A6 00 LDX $00 ; look for first empty slot C0/AD0D: BD 69 18 LDA $1869,X C0/AD10: C9 FF CMP #$FF C0/AD12: F0 03 BEQ $AD17 C0/AD14: E8 INX C0/AD15: 80 F6 BRA $AD0D C0/AD17: A5 1A LDA $1A ; set item number C0/AD19: 9D 69 18 STA $1869,X C0/AD1C: A9 01 LDA #$01 ; quantity 1 C0/AD1E: 9D 69 19 STA $1969,X C0/AD21: 60 RTS C0/AD22: BD 69 19 LDA $1969,X C0/AD25: C9 63 CMP #$63 ; max quantity 99 C0/AD27: F0 03 BEQ $AD2C C0/AD29: FE 69 19 INC $1969,X ; add 1 to quantity C0/AD2C: 60 RTS ; [ Event Command $81: Take Item ] ; $EB = item number C0/AD2D: A6 00 LDX $00 C0/AD2F: BD 69 18 LDA $1869,X ; look for item C0/AD32: C5 EB CMP $EB C0/AD34: F0 08 BEQ $AD3E C0/AD36: E8 INX C0/AD37: E0 00 01 CPX #$0100 C0/AD3A: D0 F3 BNE $AD2F C0/AD3C: 80 0D BRA $AD4B ; return if not found C0/AD3E: DE 69 19 DEC $1969,X ; subtract 1 from quantity C0/AD41: BD 69 19 LDA $1969,X C0/AD44: D0 05 BNE $AD4B C0/AD46: A9 FF LDA #$FF ; set slot empty if there's none left C0/AD48: 9D 69 18 STA $1869,X C0/AD4B: A9 02 LDA #$02 C0/AD4D: 4C 5C 9B JMP $9B5C ; [ Event Command $84: Give GP ] ; +$EB = GP amount C0/AD50: C2 21 REP #$21 C0/AD52: AD 60 18 LDA $1860 ; add GP C0/AD55: 65 EB ADC $EB C0/AD57: 8D 60 18 STA $1860 C0/AD5A: 7B TDC C0/AD5B: E2 20 SEP #$20 C0/AD5D: 6D 62 18 ADC $1862 C0/AD60: 8D 62 18 STA $1862 C0/AD63: C9 98 CMP #$98 ; max GP 9999999 C0/AD65: 90 13 BCC $AD7A C0/AD67: AE 60 18 LDX $1860 C0/AD6A: E0 7F 96 CPX #$967F C0/AD6D: 90 0B BCC $AD7A C0/AD6F: A2 7F 96 LDX #$967F C0/AD72: 8E 60 18 STX $1860 C0/AD75: A9 98 LDA #$98 C0/AD77: 8D 62 18 STA $1862 C0/AD7A: A9 03 LDA #$03 C0/AD7C: 4C 5C 9B JMP $9B5C ; [ Event Command $85: Take GP ] ; +$EB = GP amount C0/AD7F: AD B7 1E LDA $1EB7 ; clear "not enough GP" flag C0/AD82: 29 BF AND #$BF C0/AD84: 8D B7 1E STA $1EB7 C0/AD87: C2 20 REP #$20 C0/AD89: AD 60 18 LDA $1860 ; subtract GP amount C0/AD8C: 38 SEC C0/AD8D: E5 EB SBC $EB C0/AD8F: 85 2A STA $2A C0/AD91: 7B TDC C0/AD92: E2 20 SEP #$20 C0/AD94: AD 62 18 LDA $1862 C0/AD97: E9 00 SBC #$00 C0/AD99: 85 2C STA $2C C0/AD9B: C9 A0 CMP #$A0 ; branch if total is still positive C0/AD9D: 90 0A BCC $ADA9 C0/AD9F: AD B7 1E LDA $1EB7 ; set "not enough GP" flag C0/ADA2: 09 40 ORA #$40 C0/ADA4: 8D B7 1E STA $1EB7 C0/ADA7: 80 0A BRA $ADB3 C0/ADA9: A6 2A LDX $2A ; set new GP amount C0/ADAB: 8E 60 18 STX $1860 C0/ADAE: A5 2C LDA $2C C0/ADB0: 8D 62 18 STA $1862 C0/ADB3: A9 03 LDA #$03 C0/ADB5: 4C 5C 9B JMP $9B5C ; [ Event Command $86: Give Esper ] ; $EB = esper number ($36..$50) C0/ADB8: A5 EB LDA $EB C0/ADBA: 38 SEC C0/ADBB: E9 36 SBC #$36 C0/ADBD: 85 EB STA $EB C0/ADBF: 29 07 AND #$07 C0/ADC1: AA TAX C0/ADC2: A5 EB LDA $EB C0/ADC4: 4A LSR C0/ADC5: 4A LSR C0/ADC6: 4A LSR C0/ADC7: A8 TAY C0/ADC8: B9 69 1A LDA $1A69,Y ; set the appropriate esper bit C0/ADCB: 1F FC BA C0 ORA $C0BAFC,X C0/ADCF: 99 69 1A STA $1A69,Y C0/ADD2: A9 02 LDA #$02 C0/ADD4: 4C 5C 9B JMP $9B5C ; [ Event Command $87: Take Esper ] ; $EB = esper number ($36..$50) C0/ADD7: A5 EB LDA $EB C0/ADD9: 38 SEC C0/ADDA: E9 36 SBC #$36 C0/ADDC: 85 EB STA $EB C0/ADDE: 20 ED BA JSR $BAED ; get bit pointer C0/ADE1: B9 69 1A LDA $1A69,Y C0/ADE4: 3F 04 BB C0 AND $C0BB04,X C0/ADE8: 99 69 1A STA $1A69,Y ; clear the appropriate esper bit C0/ADEB: A4 00 LDY $00 C0/ADED: B9 1E 16 LDA $161E,Y ; remove the esper if equipped on a character C0/ADF0: C5 EB CMP $EB C0/ADF2: D0 05 BNE $ADF9 C0/ADF4: A9 FF LDA #$FF C0/ADF6: 99 1E 16 STA $161E,Y C0/ADF9: C2 21 REP #$21 C0/ADFB: 98 TYA ; next character C0/ADFC: 69 25 00 ADC #$0025 C0/ADFF: A8 TAY C0/AE00: 7B TDC C0/AE01: E2 20 SEP #$20 C0/AE03: C0 50 02 CPY #$0250 C0/AE06: D0 E5 BNE $ADED C0/AE08: A9 02 LDA #$02 C0/AE0A: 4C 5C 9B JMP $9B5C ; [ Unused Event Command: Teach Spell ] ; $EB = character number (0..12) ; $EC = spell number (0..53) C0/AE0D: A5 EB LDA $EB C0/AE0F: 8D 02 42 STA $4202 C0/AE12: A9 36 LDA #$36 ; get pointer to character's spell data C0/AE14: 8D 03 42 STA $4203 C0/AE17: A5 EC LDA $EC C0/AE19: C2 21 REP #$21 C0/AE1B: EA NOP C0/AE1C: 6D 16 42 ADC $4216 C0/AE1F: AA TAX C0/AE20: 7B TDC C0/AE21: E2 20 SEP #$20 C0/AE23: A9 FF LDA #$FF C0/AE25: 9D 6E 1A STA $1A6E,X ; set spell learn % C0/AE28: A9 03 LDA #$03 C0/AE2A: 4C 5C 9B JMP $9B5C ; [ Event Command $88: Remove Status ] ; +$EB = status to clear (inverse bit mask) C0/AE2D: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/AE30: C0 50 02 CPY #$0250 C0/AE33: B0 0D BCS $AE42 ; return if not a character C0/AE35: C2 20 REP #$20 C0/AE37: B9 14 16 LDA $1614,Y ; clear status C0/AE3A: 25 EC AND $EC C0/AE3C: 99 14 16 STA $1614,Y C0/AE3F: 7B TDC C0/AE40: E2 20 SEP #$20 C0/AE42: A9 04 LDA #$04 C0/AE44: 4C 5C 9B JMP $9B5C ; [ Event Command $89: Set Status ] ; +$EB = status to set C0/AE47: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/AE4A: C0 50 02 CPY #$0250 C0/AE4D: B0 0D BCS $AE5C ; return if not a character C0/AE4F: C2 20 REP #$20 C0/AE51: B9 14 16 LDA $1614,Y ; set status C0/AE54: 05 EC ORA $EC C0/AE56: 99 14 16 STA $1614,Y C0/AE59: 7B TDC C0/AE5A: E2 20 SEP #$20 C0/AE5C: A9 04 LDA #$04 C0/AE5E: 4C 5C 9B JMP $9B5C ; [ Event Command $8A: Toggle Status ] ; +$EB = status to toggle C0/AE61: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/AE64: C0 50 02 CPY #$0250 C0/AE67: B0 0D BCS $AE76 ; return if not a character C0/AE69: C2 20 REP #$20 C0/AE6B: B9 14 16 LDA $1614,Y ; toggle status C0/AE6E: 45 EC EOR $EC C0/AE70: 99 14 16 STA $1614,Y C0/AE73: 7B TDC C0/AE74: E2 20 SEP #$20 C0/AE76: A9 04 LDA #$04 C0/AE78: 4C 5C 9B JMP $9B5C ; [ Event Command $8B: Add/Subtract HP ] ; $EB = character number ; $EC = shhhhhhh ($FF = set to max) ; s: 0 = add, 1 = subtract ; h: pointer to constant below (1, 2, 4, 8, 16, 32, 64, 128) C0/AE7B: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/AE7E: C0 50 02 CPY #$0250 C0/AE81: 90 03 BCC $AE86 ; return if not a character C0/AE83: 4C D3 AE JMP $AED3 C0/AE86: 20 E8 AE JSR $AEE8 ; calculate max hp w/ boost C0/AE89: A5 EC LDA $EC C0/AE8B: 29 7F AND #$7F C0/AE8D: C9 7F CMP #$7F C0/AE8F: F0 38 BEQ $AEC9 ; branch if setting to maximum C0/AE91: 0A ASL C0/AE92: AA TAX C0/AE93: A5 EC LDA $EC C0/AE95: 30 17 BMI $AEAE ; branch if subtracting hp C0/AE97: C2 21 REP #$21 C0/AE99: B9 09 16 LDA $1609,Y ; add constant C0/AE9C: 7F D8 AE C0 ADC $C0AED8,X C0/AEA0: C5 1E CMP $1E C0/AEA2: 90 02 BCC $AEA6 ; can't go higher than max C0/AEA4: A5 1E LDA $1E C0/AEA6: 99 09 16 STA $1609,Y C0/AEA9: 7B TDC C0/AEAA: E2 20 SEP #$20 C0/AEAC: 80 25 BRA $AED3 C0/AEAE: C2 20 REP #$20 C0/AEB0: B9 09 16 LDA $1609,Y ; subtract constant C0/AEB3: F0 0C BEQ $AEC1 C0/AEB5: 38 SEC C0/AEB6: FF D8 AE C0 SBC $C0AED8,X C0/AEBA: F0 02 BEQ $AEBE C0/AEBC: 10 03 BPL $AEC1 C0/AEBE: A9 01 00 LDA #$0001 ; can't go less than 1 C0/AEC1: 99 09 16 STA $1609,Y C0/AEC4: 7B TDC C0/AEC5: E2 20 SEP #$20 C0/AEC7: 80 0A BRA $AED3 C0/AEC9: C2 20 REP #$20 ; set hp to max C0/AECB: A5 1E LDA $1E C0/AECD: 99 09 16 STA $1609,Y C0/AED0: 7B TDC C0/AED1: E2 20 SEP #$20 C0/AED3: A9 03 LDA #$03 C0/AED5: 4C 5C 9B JMP $9B5C ; hp add/subtract constants hp_table: C0/AED8: .DW $0001, $0002, $0004, $0008, $0010, $0020, $0040, $0080 ; [ Calculate Max HP w/ Boost ] ; +$1E = max hp (out) calc_hp_max: C0/AEE8: DA PHX C0/AEE9: C2 20 REP #$20 C0/AEEB: B9 0B 16 LDA $160B,Y ; max hp (base) C0/AEEE: 29 FF 3F AND #$3FFF C0/AEF1: 85 1E STA $1E C0/AEF3: 4A LSR C0/AEF4: 85 20 STA $20 ; +$20 = 50% of max C0/AEF6: 4A LSR C0/AEF7: 85 22 STA $22 ; +$22 = 25% of max C0/AEF9: 4A LSR C0/AEFA: 85 24 STA $24 ; +$24 = 12.5% of max C0/AEFC: 7B TDC C0/AEFD: E2 20 SEP #$20 C0/AEFF: B9 0C 16 LDA $160C,Y C0/AF02: 29 C0 AND #$C0 ; branch if no boost C0/AF04: F0 2D BEQ $AF33 C0/AF06: C9 40 CMP #$40 ; branch if 25% boost C0/AF08: F0 1E BEQ $AF28 C0/AF0A: C9 80 CMP #$80 ; branch if 50% boost C0/AF0C: F0 0D BEQ $AF1B C0/AF0E: C2 21 REP #$21 C0/AF10: A5 1E LDA $1E ; add 12.5% C0/AF12: 65 24 ADC $24 C0/AF14: 85 1E STA $1E C0/AF16: 7B TDC C0/AF17: E2 20 SEP #$20 C0/AF19: 80 18 BRA $AF33 C0/AF1B: C2 21 REP #$21 C0/AF1D: A5 1E LDA $1E ; add 50% C0/AF1F: 65 20 ADC $20 C0/AF21: 85 1E STA $1E C0/AF23: 7B TDC C0/AF24: E2 20 SEP #$20 C0/AF26: 80 0B BRA $AF33 C0/AF28: C2 21 REP #$21 C0/AF2A: A5 1E LDA $1E ; add 25% C0/AF2C: 65 22 ADC $22 C0/AF2E: 85 1E STA $1E C0/AF30: 7B TDC C0/AF31: E2 20 SEP #$20 C0/AF33: A2 0F 27 LDX #$270F ; 9999 max C0/AF36: E4 1E CPX $1E C0/AF38: B0 02 BCS $AF3C C0/AF3A: 86 1E STX $1E C0/AF3C: FA PLX C0/AF3D: 60 RTS ; [ Event Command $8C: Add/Subtract MP ] ; $EB = character number ; $EC = smmmmmmm ($FF = set to max) ; s: 0 = add, 1 = subtract ; m: pointer to constant below (all 0) C0/AF3E: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/AF41: C0 50 02 CPY #$0250 C0/AF44: 90 03 BCC $AF49 C0/AF46: 4C 90 AF JMP $AF90 C0/AF49: 20 A3 AF JSR $AFA3 ; calculate max mp w/ boost C0/AF4C: A5 EC LDA $EC C0/AF4E: 29 7F AND #$7F C0/AF50: C9 7F CMP #$7F C0/AF52: F0 32 BEQ $AF86 C0/AF54: 0A ASL C0/AF55: AA TAX C0/AF56: A5 EC LDA $EC C0/AF58: 30 17 BMI $AF71 C0/AF5A: C2 21 REP #$21 C0/AF5C: B9 0D 16 LDA $160D,Y C0/AF5F: 7F 95 AF C0 ADC $C0AF95,X C0/AF63: C5 1E CMP $1E C0/AF65: 90 02 BCC $AF69 C0/AF67: A5 1E LDA $1E C0/AF69: 99 0D 16 STA $160D,Y C0/AF6C: 7B TDC C0/AF6D: E2 20 SEP #$20 C0/AF6F: 80 1F BRA $AF90 C0/AF71: C2 20 REP #$20 C0/AF73: B9 0D 16 LDA $160D,Y C0/AF76: 38 SEC C0/AF77: FF 95 AF C0 SBC $C0AF95,X C0/AF7B: 10 01 BPL $AF7E C0/AF7D: 7B TDC C0/AF7E: 99 0D 16 STA $160D,Y C0/AF81: 7B TDC C0/AF82: E2 20 SEP #$20 C0/AF84: 80 0A BRA $AF90 C0/AF86: C2 20 REP #$20 C0/AF88: A5 1E LDA $1E C0/AF8A: 99 0D 16 STA $160D,Y C0/AF8D: 7B TDC C0/AF8E: E2 20 SEP #$20 C0/AF90: A9 03 LDA #$03 C0/AF92: 4C 5C 9B JMP $9B5C ; mp add/subtract constants mp_table: C0/AF95: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; [ Calculate Max MP w/ Boost ] ; +$1E = max mp (out) calc_mp_max: C0/AFA3: DA PHX C0/AFA4: C2 20 REP #$20 C0/AFA6: B9 0F 16 LDA $160F,Y C0/AFA9: 29 FF 3F AND #$3FFF C0/AFAC: 85 1E STA $1E C0/AFAE: 4A LSR C0/AFAF: 85 20 STA $20 C0/AFB1: 4A LSR C0/AFB2: 85 22 STA $22 C0/AFB4: 4A LSR C0/AFB5: 85 24 STA $24 C0/AFB7: 7B TDC C0/AFB8: E2 20 SEP #$20 C0/AFBA: B9 10 16 LDA $1610,Y C0/AFBD: 29 C0 AND #$C0 C0/AFBF: F0 2C BEQ $AFED C0/AFC1: C9 40 CMP #$40 C0/AFC3: F0 1D BEQ $AFE2 C0/AFC5: C9 80 CMP #$80 C0/AFC7: F0 0C BEQ $AFD5 C0/AFC9: C2 21 REP #$21 C0/AFCB: A5 1E LDA $1E C0/AFCD: 65 24 ADC $24 C0/AFCF: 85 1E STA $1E C0/AFD1: E2 20 SEP #$20 C0/AFD3: 80 18 BRA $AFED C0/AFD5: C2 21 REP #$21 C0/AFD7: A5 1E LDA $1E C0/AFD9: 65 20 ADC $20 C0/AFDB: 85 1E STA $1E C0/AFDD: 7B TDC C0/AFDE: E2 20 SEP #$20 C0/AFE0: 80 0B BRA $AFED C0/AFE2: C2 21 REP #$21 C0/AFE4: A5 1E LDA $1E C0/AFE6: 65 22 ADC $22 C0/AFE8: 85 1E STA $1E C0/AFEA: 7B TDC C0/AFEB: E2 20 SEP #$20 C0/AFED: A2 E7 03 LDX #$03E7 ; 999 max C0/AFF0: E4 1E CPX $1E C0/AFF2: B0 02 BCS $AFF6 C0/AFF4: 86 1E STX $1E C0/AFF6: FA PLX C0/AFF7: 60 RTS ; [ Event Command $8F: Give All SwdTechs ] C0/AFF8: A9 FF LDA #$FF C0/AFFA: 8D F7 1C STA $1CF7 C0/AFFD: A9 01 LDA #$01 C0/AFFF: 4C 5C 9B JMP $9B5C ; [ Event Command $90: Give Bum Rush ] C0/B002: AD 28 1D LDA $1D28 C0/B005: 09 80 ORA #$80 C0/B007: 8D 28 1D STA $1D28 C0/B00A: A9 01 LDA #$01 C0/B00C: 4C 5C 9B JMP $9B5C ; [ Event Command $98: Name Change Menu ] ; $EB = character number C0/B00F: 20 AD 9D JSR $9DAD ; calculate pointer to character data C0/B012: C2 20 REP #$20 C0/B014: 98 TYA C0/B015: 18 CLC C0/B016: 69 00 16 ADC #$1600 C0/B019: 8D 01 02 STA $0201 ; +$0201 = absolute pointer to character data C0/B01C: 7B TDC C0/B01D: E2 20 SEP #$20 C0/B01F: A9 01 LDA #$01 C0/B021: 8D 00 02 STA $0200 ; $0200 = #$01 (name change menu) C0/B024: 20 CA C6 JSR $C6CA ; open menu C0/B027: A9 01 LDA #$01 C0/B029: 85 84 STA $84 ; enable map load C0/B02B: A9 E0 LDA #$E0 C0/B02D: 8D FA 11 STA $11FA ; map startup flags C0/B030: A9 02 LDA #$02 C0/B032: 4C 70 9B JMP $9B70 ; [ Event Command $99: Party Select Menu ] ; $EB = number of parties (MSB = clear parties, crashes if 0) ; +$EC = forced characters C0/B035: AC 03 08 LDY $0803 ; clear pointers to character object data C0/B038: 8C FB 07 STY $07FB C0/B03B: A0 D9 07 LDY #$07D9 C0/B03E: 8C FD 07 STY $07FD C0/B041: 8C FF 07 STY $07FF C0/B044: 8C 01 08 STY $0801 C0/B047: A5 EB LDA $EB C0/B049: 8D 01 02 STA $0201 ; $0201 = number of parties C0/B04C: A6 EC LDX $EC C0/B04E: 8E 02 02 STX $0202 ; +$0202 = forced characters C0/B051: A9 04 LDA #$04 C0/B053: 8D 00 02 STA $0200 ; $0200 = #$04 (party select) C0/B056: 20 CA C6 JSR $C6CA ; open menu C0/B059: 20 4A 71 JSR $714A ; update character objects C0/B05C: 20 67 6F JSR $6F67 ; init party object C0/B05F: A9 01 LDA #$01 C0/B061: 85 84 STA $84 ; enable map load C0/B063: A9 C0 LDA #$C0 C0/B065: 8D FA 11 STA $11FA ; map startup flags C0/B068: A9 04 LDA #$04 C0/B06A: 4C 70 9B JMP $9B70 ; [ Event Command $9B: Shop Menu ] ; $EB = shop number C0/B06D: A5 EB LDA $EB C0/B06F: 8D 01 02 STA $0201 ; $0201 = shop number C0/B072: AC 03 08 LDY $0803 C0/B075: B9 79 08 LDA $0879,Y C0/B078: 8D 02 02 STA $0202 ; $0202 = showing character graphic index C0/B07B: A9 03 LDA #$03 C0/B07D: 8D 00 02 STA $0200 ; $0200 = #$03 (shop) C0/B080: 20 CA C6 JSR $C6CA ; open menu C0/B083: A9 01 LDA #$01 C0/B085: 85 84 STA $84 ; enable map load C0/B087: A9 02 LDA #$02 C0/B089: 4C 70 9B JMP $9B70 ; [ Event Command $9C: Optimize Character's Equipment ] ; $EB = character number C0/B08C: A5 EB LDA $EB C0/B08E: 8D 01 02 STA $0201 ; $0201 = character number C0/B091: 20 B3 C6 JSR $C6B3 ; optimize character's equipment C0/B094: 20 F3 6C JSR $6CF3 ; update party equipment effects C0/B097: A9 02 LDA #$02 C0/B099: 4C 5C 9B JMP $9B5C ; [ Event Command $9D: Final Battle Menu ] C0/B09C: A9 08 LDA #$08 C0/B09E: 8D 00 02 STA $0200 ; $0200 = #$08 (final battle menu) C0/B0A1: 20 CA C6 JSR $C6CA ; open menu C0/B0A4: A9 01 LDA #$01 C0/B0A6: 85 84 STA $84 ; enable map load C0/B0A8: A9 E0 LDA #$E0 C0/B0AA: 8D FA 11 STA $11FA ; map startup flags C0/B0AD: A9 01 LDA #$01 C0/B0AF: 4C 70 9B JMP $9B70 ; [ Event Command $9A: Colosseum Menu ] C0/B0B2: A9 07 LDA #$07 C0/B0B4: 8D 00 02 STA $0200 ; $0200 = #$07 (colosseum menu) C0/B0B7: 20 CA C6 JSR $C6CA ; open menu C0/B0BA: AD 05 02 LDA $0205 C0/B0BD: C9 FF CMP #$FF C0/B0BF: F0 04 BEQ $B0C5 ; branch if no valid item was selected C0/B0C1: A9 40 LDA #$40 C0/B0C3: 80 01 BRA $B0C6 C0/B0C5: 7B TDC C0/B0C6: 85 1A STA $1A C0/B0C8: AD BD 1E LDA $1EBD ; set or clear event bit for valid colosseum item C0/B0CB: 29 BF AND #$BF C0/B0CD: 05 1A ORA $1A C0/B0CF: 8D BD 1E STA $1EBD C0/B0D2: A9 C0 LDA #$C0 C0/B0D4: 8D FA 11 STA $11FA ; map startup flags C0/B0D7: A9 01 LDA #$01 C0/B0D9: 85 84 STA $84 ; enable map load C0/B0DB: A9 01 LDA #$01 C0/B0DD: 4C 70 9B JMP $9B70 ; [ Event Command $A0: Set Timer ] ; +$EB = starting counter value (frames) ; ++$ED = pfrmxxee eeeeeeee eeeeeeee ; p: pause timer in menu and battle ; f: timer visible on field (timer 0 only) ; r: used if timer runs out during emperor's banquet ; m: timer visible in menu and battle (timer 0 only) ; x: timer number ; e: event pointer (+$CA0000) C0/B0E0: A5 EF LDA $EF ; timer number C0/B0E2: 29 0C AND #$0C C0/B0E4: 85 1A STA $1A C0/B0E6: 4A LSR C0/B0E7: 18 CLC C0/B0E8: 65 1A ADC $1A C0/B0EA: A8 TAY C0/B0EB: A5 EB LDA $EB ; set counter C0/B0ED: 99 89 11 STA $1189,Y C0/B0F0: A5 EC LDA $EC C0/B0F2: 99 8A 11 STA $118A,Y C0/B0F5: A5 ED LDA $ED ; set event pointer C0/B0F7: 99 8B 11 STA $118B,Y C0/B0FA: A5 EE LDA $EE C0/B0FC: 99 8C 11 STA $118C,Y C0/B0FF: A5 EF LDA $EF C0/B101: 99 88 11 STA $1188,Y ; set flags C0/B104: 29 03 AND #$03 C0/B106: 99 8D 11 STA $118D,Y ; bank byte of event pointer C0/B109: A9 06 LDA #$06 C0/B10B: 4C 5C 9B JMP $9B5C ; [ Event Command $A1: Reset Timer ] ; $EB = timer number C0/B10E: A5 EB LDA $EB C0/B110: 0A ASL C0/B111: 85 1A STA $1A C0/B113: 0A ASL C0/B114: 18 CLC C0/B115: 65 1A ADC $1A C0/B117: A8 TAY C0/B118: 7B TDC C0/B119: 99 88 11 STA $1188,Y C0/B11C: 99 89 11 STA $1189,Y C0/B11F: 99 8A 11 STA $118A,Y C0/B122: 99 8B 11 STA $118B,Y C0/B125: 99 8C 11 STA $118C,Y C0/B128: 99 8D 11 STA $118D,Y C0/B12B: A9 02 LDA #$02 C0/B12D: 4C 5C 9B JMP $9B5C ; [ Event Command $A2: Clear Overlay Tiles ] C0/B130: 20 2C CD JSR $CD2C ; clear overlay tiles C0/B133: A9 01 LDA #$01 C0/B135: 4C 5C 9B JMP $9B5C ; [ Event Command $B0: Loop Start ] ; $EB = loop count ($FF = loop until event bit clear, 0 = 256 loops) C0/B138: A9 02 LDA #$02 C0/B13A: 20 82 9B JSR $9B82 ; increment event PC by 2 and push to stack C0/B13D: A5 EB LDA $EB C0/B13F: 9D C4 05 STA $05C4,X ; set loop count C0/B142: 4C 6D 9A JMP $9A6D ; continue executing events ; [ Event Command $B1: Loop End ] C0/B145: A6 E8 LDX $E8 ; event stack pointer C0/B147: BD C4 05 LDA $05C4,X ; decrement loop count C0/B14A: 3A DEC C0/B14B: 9D C4 05 STA $05C4,X C0/B14E: F0 12 BEQ $B162 ; branch if done looping C0/B150: BD F1 05 LDA $05F1,X ; set event PC back to start of loop C0/B153: 85 E5 STA $E5 C0/B155: BD F2 05 LDA $05F2,X C0/B158: 85 E6 STA $E6 C0/B15A: BD F3 05 LDA $05F3,X C0/B15D: 85 E7 STA $E7 C0/B15F: 4C 6D 9A JMP $9A6D C0/B162: A6 E8 LDX $E8 ; decrement stack pointer C0/B164: CA DEX C0/B165: CA DEX C0/B166: CA DEX C0/B167: 86 E8 STX $E8 C0/B169: A9 01 LDA #$01 C0/B16B: 4C 5C 9B JMP $9B5C C0/B16E: 60 RTS ; [ Event Command $BC: Loop if Event Bit is Clear ] ; used to wait for keypress ; +$EB = event bit C0/B16F: A5 EC LDA $EC C0/B171: EB XBA C0/B172: A5 EB LDA $EB C0/B174: 20 ED BA JSR $BAED ; get bit pointer C0/B177: B9 80 1E LDA $1E80,Y C0/B17A: 3F FC BA C0 AND $C0BAFC,X C0/B17E: D0 14 BNE $B194 ; branch if set C0/B180: A6 E8 LDX $E8 ; set event PC back to start of loop C0/B182: BD F1 05 LDA $05F1,X C0/B185: 85 E5 STA $E5 C0/B187: BD F2 05 LDA $05F2,X C0/B18A: 85 E6 STA $E6 C0/B18C: BD F3 05 LDA $05F3,X C0/B18F: 85 E7 STA $E7 C0/B191: 4C 6D 9A JMP $9A6D C0/B194: A6 E8 LDX $E8 ; decrement stack pointer C0/B196: CA DEX C0/B197: CA DEX C0/B198: CA DEX C0/B199: 86 E8 STX $E8 C0/B19B: A9 03 LDA #$03 C0/B19D: 4C 5C 9B JMP $9B5C C0/B1A0: 60 RTS ; [ Event Command $B2: Jump to Subroutine ] ; ++$EB = Event Pointer C0/B1A1: A9 04 LDA #$04 ; A = event PC + 4 C0/B1A3: A6 E8 LDX $E8 C0/B1A5: 18 CLC C0/B1A6: 65 E5 ADC $E5 C0/B1A8: 9D 94 05 STA $0594,X ; set return address C0/B1AB: A5 E6 LDA $E6 C0/B1AD: 69 00 ADC #$00 C0/B1AF: 9D 95 05 STA $0595,X C0/B1B2: A5 E7 LDA $E7 C0/B1B4: 69 00 ADC #$00 C0/B1B6: 9D 96 05 STA $0596,X C0/B1B9: A5 EB LDA $EB ; set event PC C0/B1BB: 85 E5 STA $E5 C0/B1BD: 9D F4 05 STA $05F4,X C0/B1C0: A5 EC LDA $EC C0/B1C2: 85 E6 STA $E6 C0/B1C4: 9D F5 05 STA $05F5,X C0/B1C7: A5 ED LDA $ED C0/B1C9: 18 CLC C0/B1CA: 69 CA ADC #$CA C0/B1CC: 85 E7 STA $E7 C0/B1CE: 9F F6 05 00 STA $0005F6,X C0/B1D2: E8 INX C0/B1D3: E8 INX C0/B1D4: E8 INX C0/B1D5: 86 E8 STX $E8 ; increment stack pointer C0/B1D7: A9 01 LDA #$01 C0/B1D9: 9D C4 05 STA $05C4,X ; loop count (do subroutine once) C0/B1DC: 4C 6D 9A JMP $9A6D ; [ Event Command $B3: Jump to Subroutine Multiple Times ] ; $EB = Loop Count ; ++$EC = Event Pointer C0/B1DF: A6 E8 LDX $E8 ; A = event PC + 5 C0/B1E1: A5 E5 LDA $E5 C0/B1E3: 18 CLC C0/B1E4: 69 05 ADC #$05 C0/B1E6: 9D 94 05 STA $0594,X ; set return address C0/B1E9: A5 E6 LDA $E6 C0/B1EB: 69 00 ADC #$00 C0/B1ED: 9D 95 05 STA $0595,X C0/B1F0: A5 E7 LDA $E7 C0/B1F2: 69 00 ADC #$00 C0/B1F4: 9D 96 05 STA $0596,X C0/B1F7: A5 EC LDA $EC C0/B1F9: 85 E5 STA $E5 C0/B1FB: 9D F4 05 STA $05F4,X C0/B1FE: A5 ED LDA $ED C0/B200: 85 E6 STA $E6 C0/B202: 9D F5 05 STA $05F5,X C0/B205: A5 EE LDA $EE C0/B207: 18 CLC C0/B208: 69 CA ADC #$CA C0/B20A: 85 E7 STA $E7 C0/B20C: 9F F6 05 00 STA $0005F6,X C0/B210: E8 INX C0/B211: E8 INX C0/B212: E8 INX C0/B213: 86 E8 STX $E8 ; increment stack pointer C0/B215: A5 EB LDA $EB C0/B217: 9D C4 05 STA $05C4,X ; set loop count C0/B21A: 4C 6D 9A JMP $9A6D ; [ Event Command $B3: Pause (short) ] ; $EB = pause length (frames) C0/B21D: A5 EB LDA $EB C0/B21F: AA TAX C0/B220: 86 E3 STX $E3 C0/B222: A9 02 LDA #$02 C0/B224: 4C 5C 9B JMP $9B5C ; [ Event Command $B4: Pause (long) ] ; $EB = pause length (frames * 15) C0/B227: A5 EB LDA $EB C0/B229: 8D 02 42 STA $4202 C0/B22C: A9 0F LDA #$0F C0/B22E: 8D 03 42 STA $4203 C0/B231: EA NOP C0/B232: EA NOP C0/B233: EA NOP C0/B234: EA NOP C0/B235: AE 16 42 LDX $4216 C0/B238: 86 E3 STX $E3 C0/B23A: A9 02 LDA #$02 C0/B23C: 4C 5C 9B JMP $9B5C ; [ Event Command $91: Pause (15 frames) ] C0/B23F: A2 0F 00 LDX #$000F C0/B242: 86 E3 STX $E3 C0/B244: A9 01 LDA #$01 C0/B246: 4C 5C 9B JMP $9B5C ; [ Event Command $92: Pause (30 frames) ] C0/B249: A2 1E 00 LDX #$001E C0/B24C: 86 E3 STX $E3 C0/B24E: A9 01 LDA #$01 C0/B250: 4C 5C 9B JMP $9B5C ; [ Event Command $93: Pause (45 frames) ] C0/B253: A2 2D 00 LDX #$002D C0/B256: 86 E3 STX $E3 C0/B258: A9 01 LDA #$01 C0/B25A: 4C 5C 9B JMP $9B5C ; [ Event Command $94: Pause (60 frames) ] C0/B25D: A2 3C 00 LDX #$003C C0/B260: 86 E3 STX $E3 C0/B262: A9 01 LDA #$01 C0/B264: 4C 5C 9B JMP $9B5C ; [ Event Command $B4: Pause (120 frames) ] C0/B267: A2 78 00 LDX #$0078 C0/B26A: 86 E3 STX $E3 C0/B26C: A9 01 LDA #$01 C0/B26E: 4C 5C 9B JMP $9B5C ; [ Event Command $BD: Jump (50% chance) ] ; ++$EB = event pointer C0/B271: 20 2E 06 JSR $062E C0/B274: C9 80 CMP #$80 C0/B276: B0 13 BCS $B28B ; 1/2 chance to branch C0/B278: C2 21 REP #$21 C0/B27A: A5 E5 LDA $E5 C0/B27C: 69 04 00 ADC #$0004 ; increment event PC and continue C0/B27F: 85 E5 STA $E5 C0/B281: 7B TDC C0/B282: E2 20 SEP #$20 C0/B284: 65 E7 ADC $E7 C0/B286: 85 E7 STA $E7 C0/B288: 4C 6D 9A JMP $9A6D C0/B28B: A6 EB LDX $EB ; set new event PC C0/B28D: 86 E5 STX $E5 C0/B28F: A5 ED LDA $ED C0/B291: 18 CLC C0/B292: 69 CA ADC #$CA C0/B294: 85 E7 STA $E7 C0/B296: 4C 6D 9A JMP $9A6D ; [ Event Command $B7: Jump (battle flag conditional) ] ; $EB = battle flag (+$1DC9) ; ++$EC = event pointer C0/B299: A5 EB LDA $EB C0/B29B: 20 ED BA JSR $BAED ; get bit pointer C0/B29E: B9 C9 1D LDA $1DC9,Y C0/B2A1: 3F FC BA C0 AND $C0BAFC,X ; branch if bit is clear C0/B2A5: F0 13 BEQ $B2BA C0/B2A7: C2 21 REP #$21 C0/B2A9: A5 E5 LDA $E5 C0/B2AB: 69 05 00 ADC #$0005 ; increment event PC and continue C0/B2AE: 85 E5 STA $E5 C0/B2B0: 7B TDC C0/B2B1: E2 20 SEP #$20 C0/B2B3: 65 E7 ADC $E7 C0/B2B5: 85 E7 STA $E7 C0/B2B7: 4C 6D 9A JMP $9A6D C0/B2BA: A6 EC LDX $EC ; set new event PC C0/B2BC: 86 E5 STX $E5 C0/B2BE: A5 EE LDA $EE C0/B2C0: 18 CLC C0/B2C1: 69 CA ADC #$CA C0/B2C3: 85 E7 STA $E7 C0/B2C5: 4C 6D 9A JMP $9A6D ; [ Event Command $C0-$C7: Jump (event bit conditional, OR) ] ; +$EB = sbbbbbbb bbbbbbbb ; s: 1 = branch if set, 0 = branch if clear ; b: event bit ; C0 +t1 ++aa if(t1) jump; else continue; ; C1 +t1 +t2 ++aa if(t1 || t2) jump; else continue; ; C2 +t1 +t2 +t3 ++aa if(t1 || t2 || t3) jump; else continue; ; C3 +t1 +t2 +t3 +t4 ++aa if(t1 || t2 || t3 || t4) jump; else continue; ; C4 +t1 +t2 +t3 +t4 +t5 ++aa if(t1 || t2 || t3 || t4 || t5) jump; else continue; ; C5 +t1 +t2 +t3 +t4 +t5 +t6 ++aa if(t1 || t2 || t3 || t4 || t5 || t6) jump; else continue; ; C6 +t1 +t2 +t3 +t4 +t5 +t6 +t7 ++aa if(t1 || t2 || t3 || t4 || t5 || t6 || t7) jump; else continue; ; C7 +t1 +t2 +t3 +t4 +t5 +t6 +t7 +t8 ++aa if(t1 || t2 || t3 || t4 || t5 || t6 || t7 || t8) jump; else continue; C0/B2C8: A5 EA LDA $EA C0/B2CA: 38 SEC C0/B2CB: E9 BF SBC #$BF C0/B2CD: 0A ASL C0/B2CE: 1A INC C0/B2CF: A8 TAY ; +$20 = pointer to jump address C0/B2D0: 84 20 STY $20 C0/B2D2: A0 01 00 LDY #$0001 C0/B2D5: 84 1E STY $1E C0/B2D7: A4 1E LDY $1E C0/B2D9: C2 20 REP #$20 C0/B2DB: B7 E5 LDA [$E5],Y ; branch if testing if set C0/B2DD: 30 09 BMI $B2E8 C0/B2DF: E2 20 SEP #$20 C0/B2E1: 20 AB BA JSR $BAAB ; get event bit C0/B2E4: F0 2C BEQ $B312 ; branch if clear C0/B2E6: 80 0A BRA $B2F2 C0/B2E8: 29 FF 7F AND #$7FFF C0/B2EB: E2 20 SEP #$20 C0/B2ED: 20 AB BA JSR $BAAB ; get event bit C0/B2F0: D0 20 BNE $B312 ; branch if set C0/B2F2: A4 1E LDY $1E ; next bit C0/B2F4: C8 INY C0/B2F5: C8 INY C0/B2F6: 84 1E STY $1E C0/B2F8: C4 20 CPY $20 C0/B2FA: D0 DB BNE $B2D7 C0/B2FC: C8 INY C0/B2FD: C8 INY C0/B2FE: C8 INY C0/B2FF: C2 21 REP #$21 C0/B301: 98 TYA C0/B302: 65 E5 ADC $E5 ; increment event PC and continue C0/B304: 85 E5 STA $E5 C0/B306: E2 20 SEP #$20 C0/B308: A5 E7 LDA $E7 C0/B30A: 69 00 ADC #$00 C0/B30C: 85 E7 STA $E7 C0/B30E: 7B TDC C0/B30F: 4C 6D 9A JMP $9A6D C0/B312: A4 20 LDY $20 ; set new event PC C0/B314: C2 20 REP #$20 C0/B316: B7 E5 LDA [$E5],Y C0/B318: 85 2A STA $2A C0/B31A: 7B TDC C0/B31B: E2 20 SEP #$20 C0/B31D: C8 INY C0/B31E: C8 INY C0/B31F: B7 E5 LDA [$E5],Y C0/B321: 18 CLC C0/B322: 69 CA ADC #$CA C0/B324: 85 E7 STA $E7 C0/B326: A4 2A LDY $2A C0/B328: 84 E5 STY $E5 C0/B32A: 4C 6D 9A JMP $9A6D ; [ Event Command $C8-$CF: Jump (event bit conditional, AND) ] ; +$EB = sbbbbbbb bbbbbbbb ; s: 1 = branch if set, 0 = branch if clear ; b: event bit ; C0 +t1 ++aa if(t1) jump; else continue; ; C1 +t1 +t2 ++aa if(t1 && t2) jump; else continue; ; C2 +t1 +t2 +t3 ++aa if(t1 && t2 && t3) jump; else continue; ; C3 +t1 +t2 +t3 +t4 ++aa if(t1 && t2 && t3 && t4) jump; else continue; ; C4 +t1 +t2 +t3 +t4 +t5 ++aa if(t1 && t2 && t3 && t4 && t5) jump; else continue; ; C5 +t1 +t2 +t3 +t4 +t5 +t6 ++aa if(t1 && t2 && t3 && t4 && t5 && t6) jump; else continue; ; C6 +t1 +t2 +t3 +t4 +t5 +t6 +t7 ++aa if(t1 && t2 && t3 && t4 && t5 && t6 && t7) jump; else continue; ; C7 +t1 +t2 +t3 +t4 +t5 +t6 +t7 +t8 ++aa if(t1 && t2 && t3 && t4 && t5 && t6 && t7 && t8) jump; else continue; C0/B32D: A5 EA LDA $EA C0/B32F: 38 SEC C0/B330: E9 C7 SBC #$C7 C0/B332: 0A ASL C0/B333: 1A INC C0/B334: A8 TAY ; +$20 = pointer to jump address C0/B335: 84 20 STY $20 C0/B337: A0 01 00 LDY #$0001 C0/B33A: 84 1E STY $1E C0/B33C: A4 1E LDY $1E C0/B33E: C2 20 REP #$20 C0/B340: B7 E5 LDA [$E5],Y ; branch if testing if set C0/B342: 30 09 BMI $B34D C0/B344: E2 20 SEP #$20 C0/B346: 20 AB BA JSR $BAAB ; get event bit C0/B349: D0 31 BNE $B37C C0/B34B: 80 0A BRA $B357 C0/B34D: 29 FF 7F AND #$7FFF C0/B350: E2 20 SEP #$20 C0/B352: 20 AB BA JSR $BAAB ; get event bit C0/B355: F0 25 BEQ $B37C C0/B357: A4 1E LDY $1E C0/B359: C8 INY C0/B35A: C8 INY C0/B35B: 84 1E STY $1E C0/B35D: C4 20 CPY $20 C0/B35F: D0 DB BNE $B33C C0/B361: A4 20 LDY $20 ; set new event PC C0/B363: C2 20 REP #$20 C0/B365: B7 E5 LDA [$E5],Y C0/B367: 85 2A STA $2A C0/B369: 7B TDC C0/B36A: E2 20 SEP #$20 C0/B36C: C8 INY C0/B36D: C8 INY C0/B36E: B7 E5 LDA [$E5],Y C0/B370: 18 CLC C0/B371: 69 CA ADC #$CA C0/B373: 85 E7 STA $E7 C0/B375: A4 2A LDY $2A C0/B377: 84 E5 STY $E5 C0/B379: 4C 6D 9A JMP $9A6D C0/B37C: A4 20 LDY $20 ; increment event PC and continue C0/B37E: C8 INY C0/B37F: C8 INY C0/B380: C8 INY C0/B381: C2 21 REP #$21 C0/B383: 98 TYA C0/B384: 65 E5 ADC $E5 C0/B386: 85 E5 STA $E5 C0/B388: E2 20 SEP #$20 C0/B38A: A5 E7 LDA $E7 C0/B38C: 69 00 ADC #$00 C0/B38E: 85 E7 STA $E7 C0/B390: 7B TDC C0/B391: 4C 6D 9A JMP $9A6D ; [ Event Command $E7: Set Character Portrait ] ; $EB = character number C0/B394: A5 EB LDA $EB C0/B396: 8D 95 07 STA $0795 C0/B399: A9 02 LDA #$02 C0/B39B: 4C 5C 9B JMP $9B5C ; [ Event Command $E4: Get Active Party Number ] C0/B39E: 7B TDC C0/B39F: 8D B5 1E STA $1EB5 ; +$1EB4 = 1 << party number C0/B3A2: AD 6D 1A LDA $1A6D C0/B3A5: 1A INC C0/B3A6: AA TAX C0/B3A7: A9 01 LDA #$01 C0/B3A9: CA DEX C0/B3AA: F0 03 BEQ $B3AF C0/B3AC: 0A ASL C0/B3AD: 80 FA BRA $B3A9 C0/B3AF: 8D B4 1E STA $1EB4 C0/B3B2: A9 01 LDA #$01 C0/B3B4: 4C 5C 9B JMP $9B5C ; [ Event Command $E3: Get Characters in Any Party ] C0/B3B7: 7B TDC C0/B3B8: 8D B4 1E STA $1EB4 ; +$1EB4 = characters in any party C0/B3BB: 8D B5 1E STA $1EB5 C0/B3BE: A6 00 LDX $00 C0/B3C0: 9B TXY C0/B3C1: B9 67 08 LDA $0867,Y C0/B3C4: 29 07 AND #$07 C0/B3C6: F0 0A BEQ $B3D2 C0/B3C8: AD B4 1E LDA $1EB4 C0/B3CB: 1F FC BA C0 ORA $C0BAFC,X C0/B3CF: 8D B4 1E STA $1EB4 C0/B3D2: C2 21 REP #$21 C0/B3D4: 98 TYA C0/B3D5: 69 29 00 ADC #$0029 C0/B3D8: A8 TAY C0/B3D9: 7B TDC C0/B3DA: E2 20 SEP #$20 C0/B3DC: E8 INX C0/B3DD: E0 08 00 CPX #$0008 C0/B3E0: D0 DF BNE $B3C1 C0/B3E2: A6 00 LDX $00 C0/B3E4: 9B TXY C0/B3E5: B9 AF 09 LDA $09AF,Y C0/B3E8: 29 07 AND #$07 C0/B3EA: F0 0A BEQ $B3F6 C0/B3EC: AD B5 1E LDA $1EB5 C0/B3EF: 1F FC BA C0 ORA $C0BAFC,X C0/B3F3: 8D B5 1E STA $1EB5 C0/B3F6: C2 21 REP #$21 C0/B3F8: 98 TYA C0/B3F9: 69 29 00 ADC #$0029 C0/B3FC: A8 TAY C0/B3FD: 7B TDC C0/B3FE: E2 20 SEP #$20 C0/B400: E8 INX C0/B401: E0 08 00 CPX #$0008 C0/B404: D0 DF BNE $B3E5 C0/B406: A9 01 LDA #$01 C0/B408: 4C 5C 9B JMP $9B5C ; [ Event Command $DE: Get Characters in Active Party ] C0/B40B: 7B TDC C0/B40C: 8D B4 1E STA $1EB4 ; +$1EB4 = characters in the active party C0/B40F: 8D B5 1E STA $1EB5 C0/B412: A6 00 LDX $00 C0/B414: 9B TXY C0/B415: B9 67 08 LDA $0867,Y C0/B418: 29 07 AND #$07 C0/B41A: CD 6D 1A CMP $1A6D C0/B41D: D0 0A BNE $B429 C0/B41F: AD B4 1E LDA $1EB4 C0/B422: 1F FC BA C0 ORA $C0BAFC,X C0/B426: 8D B4 1E STA $1EB4 C0/B429: C2 21 REP #$21 C0/B42B: 98 TYA C0/B42C: 69 29 00 ADC #$0029 C0/B42F: A8 TAY C0/B430: 7B TDC C0/B431: E2 20 SEP #$20 C0/B433: E8 INX C0/B434: E0 08 00 CPX #$0008 C0/B437: D0 DC BNE $B415 C0/B439: A6 00 LDX $00 C0/B43B: 9B TXY C0/B43C: B9 AF 09 LDA $09AF,Y C0/B43F: 29 07 AND #$07 C0/B441: CD 6D 1A CMP $1A6D C0/B444: D0 0A BNE $B450 C0/B446: AD B5 1E LDA $1EB5 C0/B449: 1F FC BA C0 ORA $C0BAFC,X C0/B44D: 8D B5 1E STA $1EB5 C0/B450: C2 21 REP #$21 C0/B452: 98 TYA C0/B453: 69 29 00 ADC #$0029 C0/B456: A8 TAY C0/B457: 7B TDC C0/B458: E2 20 SEP #$20 C0/B45A: E8 INX C0/B45B: E0 08 00 CPX #$0008 C0/B45E: D0 DC BNE $B43C C0/B460: A9 01 LDA #$01 C0/B462: 4C 5C 9B JMP $9B5C ; [ Event Command $DF: Get Characters that are Enabled Objects ] C0/B465: 7B TDC C0/B466: 8D B4 1E STA $1EB4 C0/B469: 8D B5 1E STA $1EB5 C0/B46C: A6 00 LDX $00 C0/B46E: 9B TXY C0/B46F: B9 67 08 LDA $0867,Y C0/B472: 29 40 AND #$40 C0/B474: F0 0A BEQ $B480 C0/B476: AD B4 1E LDA $1EB4 C0/B479: 1F FC BA C0 ORA $C0BAFC,X C0/B47D: 8D B4 1E STA $1EB4 C0/B480: C2 21 REP #$21 C0/B482: 98 TYA C0/B483: 69 29 00 ADC #$0029 C0/B486: A8 TAY C0/B487: 7B TDC C0/B488: E2 20 SEP #$20 C0/B48A: E8 INX C0/B48B: E0 08 00 CPX #$0008 C0/B48E: D0 DF BNE $B46F C0/B490: A6 00 LDX $00 C0/B492: 9B TXY C0/B493: B9 AF 09 LDA $09AF,Y C0/B496: 29 40 AND #$40 C0/B498: F0 0A BEQ $B4A4 C0/B49A: AD B5 1E LDA $1EB5 C0/B49D: 1F FC BA C0 ORA $C0BAFC,X C0/B4A1: 8D B5 1E STA $1EB5 C0/B4A4: C2 21 REP #$21 C0/B4A6: 98 TYA C0/B4A7: 69 29 00 ADC #$0029 C0/B4AA: A8 TAY C0/B4AB: 7B TDC C0/B4AC: E2 20 SEP #$20 C0/B4AE: E8 INX C0/B4AF: E0 08 00 CPX #$0008 C0/B4B2: D0 DF BNE $B493 C0/B4B4: A9 01 LDA #$01 C0/B4B6: 4C 5C 9B JMP $9B5C ; [ Event Command $E2: Get Showing Character ] C0/B4B9: A9 20 LDA #$20 C0/B4BB: 85 1A STA $1A C0/B4BD: A4 00 LDY $00 C0/B4BF: BB TYX C0/B4C0: B9 50 18 LDA $1850,Y C0/B4C3: 29 07 AND #$07 C0/B4C5: CD 6D 1A CMP $1A6D C0/B4C8: D0 0D BNE $B4D7 C0/B4CA: B9 50 18 LDA $1850,Y C0/B4CD: 29 18 AND #$18 C0/B4CF: C5 1A CMP $1A C0/B4D1: B0 04 BCS $B4D7 C0/B4D3: 85 1A STA $1A C0/B4D5: 86 1E STX $1E C0/B4D7: E8 INX C0/B4D8: C8 INY C0/B4D9: C0 10 00 CPY #$0010 C0/B4DC: D0 E2 BNE $B4C0 C0/B4DE: C2 20 REP #$20 C0/B4E0: A5 1E LDA $1E C0/B4E2: 0A ASL C0/B4E3: AA TAX C0/B4E4: BF F3 B4 C0 LDA $C0B4F3,X C0/B4E8: 8D B4 1E STA $1EB4 C0/B4EB: 7B TDC C0/B4EC: E2 20 SEP #$20 C0/B4EE: A9 01 LDA #$01 C0/B4F0: 4C 5C 9B JMP $9B5C C0/B4F3: .DW $0001, $0002, $0004, $0008, $0010, $0020, $0040, $0080 C0/B503: .DW $0100, $0200, $0400, $0800, $1000, $2000, $4000, $8000 ; [ Event Command $E0: Get Initialized Characters ] C0/B513: AE DC 1E LDX $1EDC C0/B516: 8E B4 1E STX $1EB4 C0/B519: A9 01 LDA #$01 C0/B51B: 4C 5C 9B JMP $9B5C ; [ Event Command $E1: Get Available Characters ] C0/B51E: AE DE 1E LDX $1EDE C0/B521: 8E B4 1E STX $1EB4 C0/B524: A9 01 LDA #$01 C0/B526: 4C 5C 9B JMP $9B5C ; [ Event Command $E8: Set Event Variable ] ; $EB = event variable (+$1FC2) ; +$EC = value C0/B529: A5 EB LDA $EB C0/B52B: 0A ASL C0/B52C: A8 TAY C0/B52D: C2 20 REP #$20 C0/B52F: A5 EC LDA $EC C0/B531: 99 C2 1F STA $1FC2,Y C0/B534: 7B TDC C0/B535: E2 20 SEP #$20 C0/B537: A9 04 LDA #$04 C0/B539: 4C 5C 9B JMP $9B5C ; [ Event Command $E9: Add to Event Variable ] ; $EB = event variable (+$1FC2) ; +$EC = value to add C0/B53C: A5 EB LDA $EB C0/B53E: 0A ASL C0/B53F: A8 TAY C0/B540: C2 21 REP #$21 C0/B542: B9 C2 1F LDA $1FC2,Y C0/B545: 65 EC ADC $EC C0/B547: 90 02 BCC $B54B C0/B549: A5 02 LDA $02 C0/B54B: 99 C2 1F STA $1FC2,Y C0/B54E: 7B TDC C0/B54F: E2 20 SEP #$20 C0/B551: A9 04 LDA #$04 C0/B553: 4C 5C 9B JMP $9B5C ; [ Event Command $EA: Subtract from Event Variable ] ; $EB = event variable (+$1FC2) ; +$EC = value to subtract C0/B556: A5 EB LDA $EB C0/B558: 0A ASL C0/B559: A8 TAY C0/B55A: C2 20 REP #$20 C0/B55C: B9 C2 1F LDA $1FC2,Y C0/B55F: 38 SEC C0/B560: E5 EC SBC $EC C0/B562: B0 02 BCS $B566 C0/B564: A5 00 LDA $00 C0/B566: 99 C2 1F STA $1FC2,Y C0/B569: 7B TDC C0/B56A: E2 20 SEP #$20 C0/B56C: A9 04 LDA #$04 C0/B56E: 4C 5C 9B JMP $9B5C ; [ Event Command $EB: Compare Event Variable ] ; $EB = event variable (+$1FC2) ; +$EC = value to compare to C0/B571: A5 EB LDA $EB C0/B573: 0A ASL C0/B574: A8 TAY C0/B575: BE C2 1F LDX $1FC2,Y C0/B578: E4 EC CPX $EC C0/B57A: 90 06 BCC $B582 C0/B57C: F0 08 BEQ $B586 C0/B57E: A9 02 LDA #$02 ; if variable is greater than value, $1EB4 = $0002 C0/B580: 80 06 BRA $B588 C0/B582: A9 04 LDA #$04 ; if variable is less than value, $1EB4 = $0004 C0/B584: 80 02 BRA $B588 C0/B586: A9 01 LDA #$01 ; if variable is equal to value, $1EB4 = $0001 C0/B588: 8D B4 1E STA $1EB4 C0/B58B: 9C B5 1E STZ $1EB5 C0/B58E: A9 04 LDA #$04 C0/B590: 4C 5C 9B JMP $9B5C ; [ Event Command $D0: Set Event Bit ($0000-$00FF) ] ; $EB = event bit C0/B593: A5 EB LDA $EB C0/B595: 20 ED BA JSR $BAED ; get bit pointer C0/B598: B9 80 1E LDA $1E80,Y C0/B59B: 1F FC BA C0 ORA $C0BAFC,X C0/B59F: 99 80 1E STA $1E80,Y C0/B5A2: A9 02 LDA #$02 C0/B5A4: 4C 5C 9B JMP $9B5C ; [ Event Command $D2: Set Event Bit ($0100-$01FF) ] ; $EB = event bit C0/B5A7: A5 EB LDA $EB C0/B5A9: 20 ED BA JSR $BAED ; get bit pointer C0/B5AC: B9 A0 1E LDA $1EA0,Y C0/B5AF: 1F FC BA C0 ORA $C0BAFC,X C0/B5B3: 99 A0 1E STA $1EA0,Y C0/B5B6: A9 02 LDA #$02 C0/B5B8: 4C 5C 9B JMP $9B5C ; [ Event Command $D4: Set Event Bit ($0200-$02FF) ] ; $EB = event bit C0/B5BB: A5 EB LDA $EB C0/B5BD: 20 ED BA JSR $BAED ; get bit pointer C0/B5C0: B9 C0 1E LDA $1EC0,Y C0/B5C3: 1F FC BA C0 ORA $C0BAFC,X C0/B5C7: 99 C0 1E STA $1EC0,Y C0/B5CA: A9 02 LDA #$02 C0/B5CC: 4C 5C 9B JMP $9B5C ; [ Event Command $D1: Clear Event Bit ($0000-$00FF) ] ; $EB = event bit C0/B5CF: A5 EB LDA $EB C0/B5D1: 20 ED BA JSR $BAED ; get bit pointer C0/B5D4: B9 80 1E LDA $1E80,Y C0/B5D7: 3F 04 BB C0 AND $C0BB04,X C0/B5DB: 99 80 1E STA $1E80,Y C0/B5DE: A9 02 LDA #$02 C0/B5E0: 4C 5C 9B JMP $9B5C ; [ Event Command $D3: Clear Event Bit ($0100-$01FF) ] ; $EB = event bit C0/B5E3: A5 EB LDA $EB C0/B5E5: 20 ED BA JSR $BAED ; get bit pointer C0/B5E8: B9 A0 1E LDA $1EA0,Y C0/B5EB: 3F 04 BB C0 AND $C0BB04,X C0/B5EF: 99 A0 1E STA $1EA0,Y C0/B5F2: A9 02 LDA #$02 C0/B5F4: 4C 5C 9B JMP $9B5C ; [ Event Command $D5: Clear Event Bit ($0200-$02FF) ] ; $EB = event bit C0/B5F7: A5 EB LDA $EB C0/B5F9: 20 ED BA JSR $BAED ; get bit pointer C0/B5FC: B9 C0 1E LDA $1EC0,Y C0/B5FF: 3F 04 BB C0 AND $C0BB04,X C0/B603: 99 C0 1E STA $1EC0,Y C0/B606: A9 02 LDA #$02 C0/B608: 4C 5C 9B JMP $9B5C ; [ Event Command $D6: Set Event Bit ($0300-$03FF) ] ; $EB = event bit C0/B60B: A5 EB LDA $EB C0/B60D: 20 ED BA JSR $BAED ; get bit pointer C0/B610: B9 E0 1E LDA $1EE0,Y C0/B613: 1F FC BA C0 ORA $C0BAFC,X C0/B617: 99 E0 1E STA $1EE0,Y C0/B61A: A9 02 LDA #$02 C0/B61C: 4C 5C 9B JMP $9B5C ; [ Event Command $D8: Set Event Bit ($0400-$04FF) ] ; $EB = event bit C0/B61F: A5 EB LDA $EB C0/B621: 20 ED BA JSR $BAED ; get bit pointer C0/B624: B9 00 1F LDA $1F00,Y C0/B627: 1F FC BA C0 ORA $C0BAFC,X C0/B62B: 99 00 1F STA $1F00,Y C0/B62E: A9 02 LDA #$02 C0/B630: 4C 5C 9B JMP $9B5C ; [ Event Command $DA: Set Event Bit ($0500-$05FF) ] ; $EB = event bit C0/B633: A5 EB LDA $EB C0/B635: 20 ED BA JSR $BAED ; get bit pointer C0/B638: B9 20 1F LDA $1F20,Y C0/B63B: 1F FC BA C0 ORA $C0BAFC,X C0/B63F: 99 20 1F STA $1F20,Y C0/B642: A9 02 LDA #$02 C0/B644: 4C 5C 9B JMP $9B5C ; [ Event Command $DC: Set Event Bit ($0600-$06FF) ] ; $EB = event bit C0/B647: A5 EB LDA $EB C0/B649: 20 ED BA JSR $BAED ; get bit pointer C0/B64C: B9 40 1F LDA $1F40,Y C0/B64F: 1F FC BA C0 ORA $C0BAFC,X C0/B653: 99 40 1F STA $1F40,Y C0/B656: A9 02 LDA #$02 C0/B658: 4C 5C 9B JMP $9B5C ; [ Event Command $D7: Clear Event Bit ($0300-$03FF) ] ; $EB = event bit C0/B65B: A5 EB LDA $EB C0/B65D: 20 ED BA JSR $BAED ; get bit pointer C0/B660: B9 E0 1E LDA $1EE0,Y C0/B663: 3F 04 BB C0 AND $C0BB04,X C0/B667: 99 E0 1E STA $1EE0,Y C0/B66A: A9 02 LDA #$02 C0/B66C: 4C 5C 9B JMP $9B5C ; [ Event Command $D9: Clear Event Bit ($0400-$04FF) ] ; $EB = event bit C0/B66F: A5 EB LDA $EB C0/B671: 20 ED BA JSR $BAED ; get bit pointer C0/B674: B9 00 1F LDA $1F00,Y C0/B677: 3F 04 BB C0 AND $C0BB04,X C0/B67B: 99 00 1F STA $1F00,Y C0/B67E: A9 02 LDA #$02 C0/B680: 4C 5C 9B JMP $9B5C ; [ Event Command $DB: Clear Event Bit ($0500-$05FF) ] ; $EB = event bit C0/B683: A5 EB LDA $EB C0/B685: 20 ED BA JSR $BAED ; get bit pointer C0/B688: B9 20 1F LDA $1F20,Y C0/B68B: 3F 04 BB C0 AND $C0BB04,X C0/B68F: 99 20 1F STA $1F20,Y C0/B692: A9 02 LDA #$02 C0/B694: 4C 5C 9B JMP $9B5C ; [ Event Command $DD: Clear Event Bit ($0600-$06FF) ] ; $EB = event bit C0/B697: A5 EB LDA $EB C0/B699: 20 ED BA JSR $BAED ; get bit pointer C0/B69C: B9 40 1F LDA $1F40,Y C0/B69F: 3F 04 BB C0 AND $C0BB04,X C0/B6A3: 99 40 1F STA $1F40,Y C0/B6A6: A9 02 LDA #$02 C0/B6A8: 4C 5C 9B JMP $9B5C ; [ Event Command $B8: Set Battle Flag ] ; $EB = battle flag (+$1DC9) C0/B6AB: A5 EB LDA $EB C0/B6AD: 20 ED BA JSR $BAED ; get bit pointer C0/B6B0: B9 C9 1D LDA $1DC9,Y C0/B6B3: 1F FC BA C0 ORA $C0BAFC,X C0/B6B7: 99 C9 1D STA $1DC9,Y C0/B6BA: A9 02 LDA #$02 C0/B6BC: 4C 5C 9B JMP $9B5C ; [ Event Command $B9: Clear Battle Flag ] ; $EB = battle flag (+$1DC9) C0/B6BF: A5 EB LDA $EB C0/B6C1: 20 ED BA JSR $BAED ; get bit pointer C0/B6C4: B9 C9 1D LDA $1DC9,Y C0/B6C7: 3F 04 BB C0 AND $C0BB04,X C0/B6CB: 99 C9 1D STA $1DC9,Y C0/B6CE: A9 02 LDA #$02 C0/B6D0: 4C 5C 9B JMP $9B5C ; [ Event Command $B6: Jump Based on Dialog Selection ] ; B6 ++a1 ++a2 ... ; a1 = event pointer for first selection, etc. C0/B6D3: AD 6E 05 LDA $056E C0/B6D6: 0A ASL C0/B6D7: 38 SEC C0/B6D8: 6D 6E 05 ADC $056E C0/B6DB: A8 TAY C0/B6DC: B7 E5 LDA [$E5],Y ; set event pointer C0/B6DE: 85 1E STA $1E C0/B6E0: C8 INY C0/B6E1: B7 E5 LDA [$E5],Y C0/B6E3: 85 1F STA $1F C0/B6E5: C8 INY C0/B6E6: B7 E5 LDA [$E5],Y C0/B6E8: 18 CLC C0/B6E9: 69 CA ADC #$CA C0/B6EB: 85 E7 STA $E7 C0/B6ED: A4 1E LDY $1E C0/B6EF: 84 E5 STY $E5 C0/B6F1: 9C 6E 05 STZ $056E ; clear dialog selection C0/B6F4: 4C 6D 9A JMP $9A6D ; [ Event Command $BE: Jump to Subroutine Based on +$1EB4 ] ; $EB = number of bits to check ; ++$EC = bbbb--aa aaaaaaaa aaaaaaaa ; b = bit to check in +$1EB4 ; a = event pointer C0/B6F7: A5 EB LDA $EB C0/B6F9: 0A ASL C0/B6FA: 38 SEC C0/B6FB: 65 EB ADC $EB C0/B6FD: 1A INC C0/B6FE: 85 1E STA $1E C0/B700: 64 1F STZ $1F C0/B702: A0 02 00 LDY #$0002 C0/B705: B7 E5 LDA [$E5],Y C0/B707: 85 2A STA $2A C0/B709: C8 INY C0/B70A: B7 E5 LDA [$E5],Y C0/B70C: 85 2B STA $2B C0/B70E: C8 INY C0/B70F: B7 E5 LDA [$E5],Y C0/B711: 85 2C STA $2C C0/B713: C8 INY C0/B714: 4A LSR C0/B715: 4A LSR C0/B716: 4A LSR C0/B717: 4A LSR C0/B718: C2 21 REP #$21 C0/B71A: 69 A0 01 ADC #$01A0 C0/B71D: 5A PHY C0/B71E: 20 AB BA JSR $BAAB C0/B721: 7A PLY C0/B722: E2 20 SEP #$20 C0/B724: C9 00 CMP #$00 C0/B726: D0 18 BNE $B740 C0/B728: C4 1E CPY $1E C0/B72A: D0 D9 BNE $B705 C0/B72C: C2 21 REP #$21 C0/B72E: A5 E5 LDA $E5 C0/B730: 65 1E ADC $1E C0/B732: 85 E5 STA $E5 C0/B734: E2 20 SEP #$20 C0/B736: A5 E7 LDA $E7 C0/B738: 69 00 ADC #$00 C0/B73A: 85 E7 STA $E7 C0/B73C: 7B TDC C0/B73D: 4C 6D 9A JMP $9A6D C0/B740: A6 E8 LDX $E8 C0/B742: A5 1E LDA $1E C0/B744: 18 CLC C0/B745: 65 E5 ADC $E5 C0/B747: 9D 94 05 STA $0594,X C0/B74A: A5 E6 LDA $E6 C0/B74C: 65 1F ADC $1F C0/B74E: 9D 95 05 STA $0595,X C0/B751: A5 E7 LDA $E7 C0/B753: 69 00 ADC #$00 C0/B755: 9D 96 05 STA $0596,X C0/B758: A5 2A LDA $2A C0/B75A: 85 E5 STA $E5 C0/B75C: 9D F4 05 STA $05F4,X C0/B75F: A5 2B LDA $2B C0/B761: 85 E6 STA $E6 C0/B763: 9D F5 05 STA $05F5,X C0/B766: A5 2C LDA $2C C0/B768: 29 03 AND #$03 C0/B76A: 18 CLC C0/B76B: 69 CA ADC #$CA C0/B76D: 85 E7 STA $E7 C0/B76F: 9F F6 05 00 STA $0005F6,X C0/B773: E8 INX C0/B774: E8 INX C0/B775: E8 INX C0/B776: 86 E8 STX $E8 C0/B778: A9 01 LDA #$01 C0/B77A: 9D C4 05 STA $05C4,X C0/B77D: 4C 6D 9A JMP $9A6D ; [ Event Command $F0: Play Song ] ; $EB = psssssss ; p: 0 = normal start position, 1 = alternative start position ; s: song number C0/B780: A5 EB LDA $EB C0/B782: 29 7F AND #$7F C0/B784: 8D 01 13 STA $1301 C0/B787: 8D 80 1F STA $1F80 C0/B78A: A9 FF LDA #$FF ; volume = 100% C0/B78C: 8D 02 13 STA $1302 C0/B78F: A5 EB LDA $EB C0/B791: 10 04 BPL $B797 C0/B793: A9 14 LDA #$14 C0/B795: 80 02 BRA $B799 C0/B797: A9 10 LDA #$10 C0/B799: 8D 00 13 STA $1300 C0/B79C: 22 04 00 C5 JSL $C50004 ; spc command C0/B7A0: AD 10 42 LDA $4210 C0/B7A3: 10 FB BPL $B7A0 C0/B7A5: A9 02 LDA #$02 C0/B7A7: 4C 5C 9B JMP $9B5C ; [ Event Command $EF: Play Song (w/ volume) ] ; $EB = psssssss ; p: 0 = normal start position, 1 = alternative start position ; s: song number ; $EC = volume C0/B7AA: A5 EB LDA $EB C0/B7AC: 29 7F AND #$7F C0/B7AE: 8D 01 13 STA $1301 C0/B7B1: 8D 80 1F STA $1F80 C0/B7B4: A5 EC LDA $EC C0/B7B6: 8D 02 13 STA $1302 C0/B7B9: A5 EB LDA $EB C0/B7BB: 10 04 BPL $B7C1 C0/B7BD: A9 14 LDA #$14 C0/B7BF: 80 02 BRA $B7C3 C0/B7C1: A9 10 LDA #$10 C0/B7C3: 8D 00 13 STA $1300 C0/B7C6: 22 04 00 C5 JSL $C50004 ; spc command C0/B7CA: AD 10 42 LDA $4210 C0/B7CD: 10 FB BPL $B7CA C0/B7CF: A9 03 LDA #$03 C0/B7D1: 4C 5C 9B JMP $9B5C ; [ Event Command $F1: Fade Song In ] ; $EB = psssssss ; p: 0 = normal start position, 1 = alternative start position ; s: song number ; $EC = fade speed (SPC ticks) C0/B7D4: A5 EB LDA $EB C0/B7D6: 29 7F AND #$7F C0/B7D8: 8D 01 13 STA $1301 C0/B7DB: 8D 80 1F STA $1F80 C0/B7DE: A9 20 LDA #$20 C0/B7E0: 8D 02 13 STA $1302 C0/B7E3: A5 EB LDA $EB C0/B7E5: 10 04 BPL $B7EB C0/B7E7: A9 14 LDA #$14 C0/B7E9: 80 02 BRA $B7ED C0/B7EB: A9 10 LDA #$10 C0/B7ED: 8D 00 13 STA $1300 C0/B7F0: 22 04 00 C5 JSL $C50004 ; spc command C0/B7F4: A9 81 LDA #$81 C0/B7F6: 8D 00 13 STA $1300 C0/B7F9: A5 EC LDA $EC C0/B7FB: 8D 01 13 STA $1301 C0/B7FE: A9 FF LDA #$FF C0/B800: 8D 02 13 STA $1302 C0/B803: 22 04 00 C5 JSL $C50004 ; spc command C0/B807: AD 10 42 LDA $4210 C0/B80A: 10 FB BPL $B807 C0/B80C: A9 03 LDA #$03 C0/B80E: 4C 5C 9B JMP $9B5C ; [ Event Command $F2: Fade Song Out ] ; $EB = fade speed (SPC ticks) C0/B811: A9 81 LDA #$81 C0/B813: 8D 00 13 STA $1300 C0/B816: A5 EB LDA $EB C0/B818: 8D 01 13 STA $1301 C0/B81B: 9C 02 13 STZ $1302 C0/B81E: 22 04 00 C5 JSL $C50004 ; spc command C0/B822: A9 02 LDA #$02 C0/B824: 4C 5C 9B JMP $9B5C ; [ Event Command $F3: Fade In Previous Song ] ; $EB = fade speed (SPC ticks) C0/B827: A9 10 LDA #$10 C0/B829: 8D 00 13 STA $1300 C0/B82C: AD 09 13 LDA $1309 C0/B82F: 8D 01 13 STA $1301 C0/B832: 8D 80 1F STA $1F80 C0/B835: 9C 02 13 STZ $1302 C0/B838: 22 04 00 C5 JSL $C50004 ; spc command C0/B83C: A9 81 LDA #$81 C0/B83E: 8D 00 13 STA $1300 C0/B841: A5 EB LDA $EB C0/B843: 8D 01 13 STA $1301 C0/B846: A9 FF LDA #$FF C0/B848: 8D 02 13 STA $1302 C0/B84B: 22 04 00 C5 JSL $C50004 ; spc command C0/B84F: A9 02 LDA #$02 C0/B851: 4C 5C 9B JMP $9B5C ; [ Event Command $F4: Play Game Sound Effect ] ; $EB = sound effect C0/B854: A5 EB LDA $EB C0/B856: 20 D3 02 JSR $02D3 ; play game sound effect C0/B859: A9 02 LDA #$02 C0/B85B: 4C 5C 9B JMP $9B5C ; [ Event Command $F5: Play Game Sound Effect (with pan) ] ; $EB = sound effect ; $EC = pan ; $ED = pan speed C0/B85E: A9 18 LDA #$18 ; spc command $18 (play game sound effect) C0/B860: 8D 00 13 STA $1300 C0/B863: A5 EB LDA $EB ; sound effect index C0/B865: 8D 01 13 STA $1301 C0/B868: A9 80 LDA #$80 C0/B86A: 8D 02 13 STA $1302 C0/B86D: 22 04 00 C5 JSL $C50004 ; spc command C0/B871: A9 83 LDA #$83 ; spc command $83 (set sound effect pan w/ envelope) C0/B873: 8D 00 13 STA $1300 C0/B876: A5 EC LDA $EC C0/B878: 8D 01 13 STA $1301 C0/B87B: A5 ED LDA $ED C0/B87D: 8D 02 13 STA $1302 C0/B880: 22 04 00 C5 JSL $C50004 ; spc command C0/B884: A9 04 LDA #$04 C0/B886: 4C 5C 9B JMP $9B5C ; [ Event Command $F6: SPC Command ] ; $EB = command ; $EC = data byte 1 ; $ED = data byte 2 C0/B889: A5 EB LDA $EB C0/B88B: 8D 00 13 STA $1300 C0/B88E: A5 EC LDA $EC C0/B890: 8D 01 13 STA $1301 C0/B893: A5 ED LDA $ED C0/B895: 8D 02 13 STA $1302 C0/B898: 22 04 00 C5 JSL $C50004 ; spc command C0/B89C: A9 04 LDA #$04 C0/B89E: 4C 5C 9B JMP $9B5C ; [ Event Command $F7: Continue to Next Part of Song ] ; used on the phantom train to progress to the next part of the song ; could also be used by dancing mad, though that song is controlled by the battle program C0/B8A1: A9 89 LDA #$89 ; spc command $89 (continue to next part of song) C0/B8A3: 8D 00 13 STA $1300 C0/B8A6: 22 04 00 C5 JSL $C50004 ; spc command C0/B8AA: A9 01 LDA #$01 C0/B8AC: 4C 5C 9B JMP $9B5C ; [ Event Command $F8: Wait for SPC ] C0/B8AF: AD 42 21 LDA $2142 C0/B8B2: F0 01 BEQ $B8B5 C0/B8B4: 60 RTS C0/B8B5: A9 01 LDA #$01 C0/B8B7: 4C 5C 9B JMP $9B5C ; [ Event Command $F9: Wait for Song Position ] ; used during the opera scene and the ending to sync the music with the events ; $EB = song position C0/B8BA: A5 EB LDA $EB C0/B8BC: CD 41 21 CMP $2141 C0/B8BF: F0 01 BEQ $B8C2 C0/B8C1: 60 RTS C0/B8C2: A9 02 LDA #$02 C0/B8C4: 4C 5C 9B JMP $9B5C ; [ Event Command $FA: Wait for Song to End ] C0/B8C7: AD 43 21 LDA $2143 C0/B8CA: F0 01 BEQ $B8CD C0/B8CC: 60 RTS C0/B8CD: A9 01 LDA #$01 C0/B8CF: 4C 5C 9B JMP $9B5C ; [ Event Command $FB & $FD: No Effect ] ; $FB is in the event script a few places, usually right after a sound effect ; $FD is used by the map startup event C0/B8D2: A9 01 LDA #$01 C0/B8D4: 4C 70 9B JMP $9B70 ; [ Event Command $FE: Return ] C0/B8D7: A6 E8 LDX $E8 ; decrement event loop counter C0/B8D9: BD C4 05 LDA $05C4,X C0/B8DC: 3A DEC C0/B8DD: 9D C4 05 STA $05C4,X C0/B8E0: F0 12 BEQ $B8F4 ; branch if last loop C0/B8E2: BD F1 05 LDA $05F1,X ; set event PC to start of subroutine and continue C0/B8E5: 85 E5 STA $E5 C0/B8E7: BD F2 05 LDA $05F2,X C0/B8EA: 85 E6 STA $E6 C0/B8EC: BD F3 05 LDA $05F3,X C0/B8EF: 85 E7 STA $E7 C0/B8F1: 4C 6D 9A JMP $9A6D C0/B8F4: A6 E8 LDX $E8 ; decrement event stack pointer C0/B8F6: CA DEX C0/B8F7: CA DEX C0/B8F8: CA DEX C0/B8F9: 86 E8 STX $E8 C0/B8FB: BD 94 05 LDA $0594,X ; pop event PC C0/B8FE: 85 E5 STA $E5 C0/B900: BD 95 05 LDA $0595,X C0/B903: 85 E6 STA $E6 C0/B905: BD 96 05 LDA $0596,X C0/B908: 85 E7 STA $E7 C0/B90A: E4 00 CPX $00 C0/B90C: D0 09 BNE $B917 C0/B90E: AC 03 08 LDY $0803 ; if event stack gets back to the top, restore the party object movement type C0/B911: B9 7D 08 LDA $087D,Y C0/B914: 99 7C 08 STA $087C,Y C0/B917: 4C 6D 9A JMP $9A6D ; [ Misc. Unused Event Commands ] ; these will cause the game to lock up C0/B91A: 60 RTS ; [ Event Command $AB: Load Game ] C0/B91B: A9 02 LDA #$02 C0/B91D: 8D 00 02 STA $0200 ; $0200 = #$02 (load game) C0/B920: 20 CA C6 JSR $C6CA ; open menu C0/B923: AF F1 7F 30 LDA $307FF1 ; add 13 to random number seed C0/B927: 18 CLC C0/B928: 69 0D ADC #$0D C0/B92A: 8F F1 7F 30 STA $307FF1 C0/B92E: 8D 6D 1F STA $1F6D ; init random numbers C0/B931: 8D A1 1F STA $1FA1 C0/B934: 8D A2 1F STA $1FA2 C0/B937: 8D A4 1F STA $1FA4 C0/B93A: 8D A3 1F STA $1FA3 C0/B93D: 8D A5 1F STA $1FA5 C0/B940: AD 05 02 LDA $0205 ; set/clear event bit if there is at least one saved game C0/B943: 29 80 AND #$80 C0/B945: 85 1A STA $1A C0/B947: AD DF 1E LDA $1EDF C0/B94A: 29 7F AND #$7F C0/B94C: 05 1A ORA $1A C0/B94E: 8D DF 1E STA $1EDF C0/B951: 64 58 STZ $58 ; don't reload the same map C0/B953: 20 F3 6C JSR $6CF3 ; update party equipment effects C0/B956: 20 86 03 JSR $0386 ; enable interrupts C0/B959: A9 01 LDA #$01 C0/B95B: 4C 5C 9B JMP $9B5C ; [ Event Command $AC: Init Character Object Data ] C0/B95E: 20 20 BD JSR $BD20 ; init character object data C0/B961: A9 01 LDA #$01 C0/B963: 4C 5C 9B JMP $9B5C ; [ Event Command $A9: Show Title Screen ] C0/B966: 20 05 05 JSR $0505 ; save direct page C0/B969: 20 74 03 JSR $0374 ; disable interrupts C0/B96C: 22 03 68 C2 JSL $C26803 ; title screen C0/B970: 20 15 05 JSR $0515 ; restore direct page C0/B973: 20 74 03 JSR $0374 ; disable interrupts C0/B976: 20 73 05 JSR $0573 ; set up interrupt jump code C0/B979: AD 00 02 LDA $0200 C0/B97C: 29 80 AND #$80 C0/B97E: 85 1A STA $1A C0/B980: AD DF 1E LDA $1EDF ; set/clear event bit if there is at least one saved game C0/B983: 29 7F AND #$7F C0/B985: 05 1A ORA $1A C0/B987: 8D DF 1E STA $1EDF C0/B98A: 20 86 03 JSR $0386 ; enable interrupts C0/B98D: A9 01 LDA #$01 C0/B98F: 4C 5C 9B JMP $9B5C ; [ Event Command $AA: Magitek March Scene ] C0/B992: 20 05 05 JSR $0505 ; save direct page C0/B995: 20 74 03 JSR $0374 ; disable interrupts C0/B998: 22 00 68 C2 JSL $C26800 ; magitek march cutscene C0/B99C: 20 15 05 JSR $0515 ; restore direct page C0/B99F: 20 74 03 JSR $0374 ; disable interrupts C0/B9A2: 20 73 05 JSR $0573 ; set up interrupt jump code C0/B9A5: AD 00 02 LDA $0200 C0/B9A8: 29 80 AND #$80 C0/B9AA: 85 1A STA $1A C0/B9AC: AD DF 1E LDA $1EDF ; set/clear event bit if there is at least one saved game C0/B9AF: 29 7F AND #$7F C0/B9B1: 05 1A ORA $1A C0/B9B3: 8D DF 1E STA $1EDF C0/B9B6: 20 86 03 JSR $0386 ; enable interrupts C0/B9B9: A9 01 LDA #$01 C0/B9BB: 4C 5C 9B JMP $9B5C ; [ Event Command $BB: The End Cinematic ] C0/B9BE: 20 74 03 JSR $0374 ; disable interrupts C0/B9C1: 5C 00 F4 E5 JML $E5F400 ; the end cinematic ; [ Event Command $AE: Magitek Train Ride Scene ] C0/B9C5: 20 05 05 JSR $0505 ; save direct page C0/B9C8: 20 74 03 JSR $0374 ; disable interrupts C0/B9CB: 0B PHD C0/B9CC: 8B PHB C0/B9CD: 08 PHP C0/B9CE: 22 12 00 EE JSL $EE0012 ; magitek train ride C0/B9D2: 28 PLP C0/B9D3: AB PLB C0/B9D4: 2B PLD C0/B9D5: 7B TDC C0/B9D6: 20 15 05 JSR $0515 ; restore direct page C0/B9D9: 20 74 03 JSR $0374 ; disable interrupts C0/B9DC: 20 73 05 JSR $0573 ; set up interrupt jump code C0/B9DF: 20 86 03 JSR $0386 ; enable interrupts C0/B9E2: A9 01 LDA #$01 C0/B9E4: 4C 5C 9B JMP $9B5C ; [ Event Command $BF: Ending Airship Scene ] C0/B9E7: 20 05 05 JSR $0505 ; save direct page C0/B9EA: 20 74 03 JSR $0374 ; disable interrupts C0/B9ED: 0B PHD C0/B9EE: 8B PHB C0/B9EF: 08 PHP C0/B9F0: 22 15 00 EE JSL $EE0015 ; ending airship scene C0/B9F4: 28 PLP C0/B9F5: AB PLB C0/B9F6: 2B PLD C0/B9F7: 7B TDC C0/B9F8: 20 15 05 JSR $0515 ; restore direct page C0/B9FB: 20 74 03 JSR $0374 ; disable interrupts C0/B9FE: 20 73 05 JSR $0573 ; set up interrupt jump code C0/BA01: 20 86 03 JSR $0386 ; enable interrupts C0/BA04: A9 01 LDA #$01 C0/BA06: 4C 5C 9B JMP $9B5C ; [ Event Command $A6: Disable Pyramid ] C0/BA09: 9C 81 07 STZ $0781 ; disable pyramid C0/BA0C: 20 8D 06 JSR $068D ; reset window mask hdma data C0/BA0F: A9 01 LDA #$01 C0/BA11: 4C 5C 9B JMP $9B5C ; [ Event Command $A6: Enable Pyramid ] ; $EB = pyramid object C0/BA14: A9 01 LDA #$01 C0/BA16: 8D 81 07 STA $0781 ; enable pyramid C0/BA19: A5 EB LDA $EB C0/BA1B: 8D 02 42 STA $4202 C0/BA1E: A9 29 LDA #$29 C0/BA20: 8D 03 42 STA $4203 C0/BA23: EA NOP C0/BA24: EA NOP C0/BA25: EA NOP C0/BA26: AE 16 42 LDX $4216 C0/BA29: 8E 7F 07 STX $077F ; set pointer to pyramid object C0/BA2C: A9 02 LDA #$02 C0/BA2E: 4C 5C 9B JMP $9B5C ; [ Event Command $BA: Ending Cinematic ] C0/BA31: A5 EB LDA $EB ; $0201 = ending cinematic number C0/BA33: 8D 01 02 STA $0201 C0/BA36: 20 05 05 JSR $0505 ; save direct page C0/BA39: 20 74 03 JSR $0374 ; disable interrupts C0/BA3C: 22 12 00 C3 JSL $C30012 ; ending cinematic C0/BA40: 20 15 05 JSR $0515 ; restore direct page C0/BA43: 20 74 03 JSR $0374 ; disable interrupts C0/BA46: 20 73 05 JSR $0573 ; set up interrupt jump code C0/BA49: 20 86 03 JSR $0386 ; enable interrupts C0/BA4C: A9 02 LDA #$02 C0/BA4E: 4C 5C 9B JMP $9B5C ; [ Event Command $A8: Floating Island Cutscene ] C0/BA51: 20 05 05 JSR $0505 ; save direct page C0/BA54: 20 74 03 JSR $0374 ; disable interrupts C0/BA57: 22 06 68 C2 JSL $C26806 ; floating island cutscene C0/BA5B: 20 15 05 JSR $0515 ; restore direct page C0/BA5E: 20 74 03 JSR $0374 ; disable interrupts C0/BA61: 20 73 05 JSR $0573 ; set up interrupt jump code C0/BA64: A9 01 LDA #$01 C0/BA66: 4C 5C 9B JMP $9B5C ; [ Event Command $AD: World of Ruin Cutscene ] C0/BA69: 20 05 05 JSR $0505 ; save direct page C0/BA6C: 20 74 03 JSR $0374 ; disable interrupts C0/BA6F: 22 09 68 C2 JSL $C26809 ; world of ruin cutscene C0/BA73: 20 15 05 JSR $0515 ; restore direct page C0/BA76: 20 74 03 JSR $0374 ; disable interrupts C0/BA79: 20 73 05 JSR $0573 ; set up interrupt jump code C0/BA7C: A9 01 LDA #$01 C0/BA7E: 4C 5C 9B JMP $9B5C ; [ Update A Button and Facing Direction Event Bits ] check_system_flag: C0/BA81: AC 03 08 LDY $0803 C0/BA84: B9 7F 08 LDA $087F,Y ; party facing direction C0/BA87: AA TAX C0/BA88: AD B6 1E LDA $1EB6 C0/BA8B: 29 F0 AND #$F0 C0/BA8D: 1F FC BA C0 ORA $C0BAFC,X C0/BA91: 8D B6 1E STA $1EB6 C0/BA94: A5 06 LDA $06 ; branch if a button is not down C0/BA96: 10 0A BPL $BAA2 C0/BA98: AD B6 1E LDA $1EB6 C0/BA9B: 09 10 ORA #$10 C0/BA9D: 8D B6 1E STA $1EB6 C0/BAA0: 80 08 BRA $BAAA C0/BAA2: AD B6 1E LDA $1EB6 C0/BAA5: 29 EF AND #$EF C0/BAA7: 8D B6 1E STA $1EB6 C0/BAAA: 60 RTS ; [ Get Event Bit (+$1E80) ] check_scenario_flag0: C0/BAAB: 20 ED BA JSR $BAED ; get bit pointer C0/BAAE: B9 80 1E LDA $1E80,Y C0/BAB1: 3F FC BA C0 AND $C0BAFC,X C0/BAB5: 60 RTS ; [ Get Event Bit ($0100-$01FF) ] check_scenario_flag1: C0/BAB6: 20 ED BA JSR $BAED ; get bit pointer C0/BAB9: B9 A0 1E LDA $1EA0,Y C0/BABC: 3F FC BA C0 AND $C0BAFC,X C0/BAC0: 60 RTS ; [ Get Event Bit ($0300-$03FF) ] check_people_flag0: C0/BAC1: 20 ED BA JSR $BAED ; get bit pointer C0/BAC4: B9 E0 1E LDA $1EE0,Y C0/BAC7: 3F FC BA C0 AND $C0BAFC,X C0/BACB: 60 RTS ; [ Get Event Bit ($0400-$04FF) ] C0/BACC: 20 ED BA JSR $BAED ; get bit pointer C0/BACF: B9 00 1F LDA $1F00,Y C0/BAD2: 3F FC BA C0 AND $C0BAFC,X C0/BAD6: 60 RTS ; [ Get Event Bit ($0500-$05FF) ] C0/BAD7: 20 ED BA JSR $BAED ; get bit pointer C0/BADA: B9 20 1F LDA $1F20,Y C0/BADD: 3F FC BA C0 AND $C0BAFC,X C0/BAE1: 60 RTS ; [ Get Event Bit ($0600-$06FF) ] C0/BAE2: 20 ED BA JSR $BAED ; get bit pointer C0/BAE5: B9 40 1F LDA $1F40,Y C0/BAE8: 3F FC BA C0 AND $C0BAFC,X C0/BAEC: 60 RTS ; [ Get Bit Pointer ] ; A = bit number calc_flag_adrs: C0/BAED: C2 20 REP #$20 C0/BAEF: AA TAX C0/BAF0: 4A LSR C0/BAF1: 4A LSR C0/BAF2: 4A LSR C0/BAF3: A8 TAY ; Y = byte pointer C0/BAF4: 7B TDC C0/BAF5: E2 20 SEP #$20 C0/BAF7: 8A TXA C0/BAF8: 29 07 AND #$07 C0/BAFA: AA TAX ; X = bit mask pointer C0/BAFB: 60 RTS ; bit masks bit_on_tbl: C0/BAFC: .DB $01, $02, $04, $08, $10, $20, $40, $80 ; inverse bit masks C0/BB04: .DB $FE, $FD, $FB, $F7, $EF, $DF, $BF, $7F ; [ Clear Event Bits ] init_scenario_flag: C0/BB0C: A6 00 LDX $00 C0/BB0E: 9E 80 1E STZ $1E80,X C0/BB11: E8 INX C0/BB12: E0 60 00 CPX #$0060 C0/BB15: D0 F7 BNE $BB0E C0/BB17: 60 RTS ; [ Clear Treasure Bits ] init_treasure_flag: C0/BB18: A6 00 LDX $00 C0/BB1A: 9E 40 1E STZ $1E40,X C0/BB1D: E8 INX C0/BB1E: E0 30 00 CPX #$0030 C0/BB21: D0 F7 BNE $BB1A C0/BB23: 60 RTS ; [ Decrement Timers ] ; called from other banks dec_event_timer_menu_battle: C0/BB24: 48 PHA C0/BB25: DA PHX C0/BB26: 5A PHY C0/BB27: 8B PHB C0/BB28: 0B PHD C0/BB29: 08 PHP C0/BB2A: 7B TDC C0/BB2B: E2 20 SEP #$20 C0/BB2D: C2 10 REP #$10 C0/BB2F: 7B TDC C0/BB30: 48 PHA C0/BB31: AB PLB C0/BB32: AD D1 1D LDA $1DD1 C0/BB35: 29 9F AND #$9F C0/BB37: 8D D1 1D STA $1DD1 C0/BB3A: AD 88 11 LDA $1188 C0/BB3D: 29 10 AND #$10 C0/BB3F: F0 08 BEQ $BB49 C0/BB41: AD D1 1D LDA $1DD1 C0/BB44: 09 40 ORA #$40 C0/BB46: 8D D1 1D STA $1DD1 C0/BB49: AD 88 11 LDA $1188 C0/BB4C: 30 1A BMI $BB68 C0/BB4E: AE 89 11 LDX $1189 C0/BB51: F0 06 BEQ $BB59 C0/BB53: CA DEX C0/BB54: 8E 89 11 STX $1189 C0/BB57: 80 0F BRA $BB68 C0/BB59: AD 88 11 LDA $1188 ; used during emperor's banquet C0/BB5C: 29 20 AND #$20 C0/BB5E: F0 08 BEQ $BB68 C0/BB60: AD D1 1D LDA $1DD1 C0/BB63: 09 20 ORA #$20 C0/BB65: 8D D1 1D STA $1DD1 C0/BB68: AD 8E 11 LDA $118E C0/BB6B: 30 1A BMI $BB87 C0/BB6D: AE 8F 11 LDX $118F C0/BB70: F0 06 BEQ $BB78 C0/BB72: CA DEX C0/BB73: 8E 8F 11 STX $118F C0/BB76: 80 0F BRA $BB87 C0/BB78: AD 8E 11 LDA $118E C0/BB7B: 29 20 AND #$20 C0/BB7D: F0 08 BEQ $BB87 C0/BB7F: AD D1 1D LDA $1DD1 C0/BB82: 09 20 ORA #$20 C0/BB84: 8D D1 1D STA $1DD1 C0/BB87: AD 94 11 LDA $1194 C0/BB8A: 30 1A BMI $BBA6 C0/BB8C: AE 95 11 LDX $1195 C0/BB8F: F0 06 BEQ $BB97 C0/BB91: CA DEX C0/BB92: 8E 95 11 STX $1195 C0/BB95: 80 0F BRA $BBA6 C0/BB97: AD 94 11 LDA $1194 C0/BB9A: 29 20 AND #$20 C0/BB9C: F0 08 BEQ $BBA6 C0/BB9E: AD D1 1D LDA $1DD1 C0/BBA1: 09 20 ORA #$20 C0/BBA3: 8D D1 1D STA $1DD1 C0/BBA6: AD 9A 11 LDA $119A C0/BBA9: 30 1A BMI $BBC5 C0/BBAB: AE 9B 11 LDX $119B C0/BBAE: F0 06 BEQ $BBB6 C0/BBB0: CA DEX C0/BBB1: 8E 9B 11 STX $119B C0/BBB4: 80 0F BRA $BBC5 C0/BBB6: AD 9A 11 LDA $119A C0/BBB9: 29 20 AND #$20 C0/BBBB: F0 08 BEQ $BBC5 C0/BBBD: AD D1 1D LDA $1DD1 C0/BBC0: 09 20 ORA #$20 C0/BBC2: 8D D1 1D STA $1DD1 C0/BBC5: 28 PLP C0/BBC6: 2B PLD C0/BBC7: AB PLB C0/BBC8: 7A PLY C0/BBC9: FA PLX C0/BBCA: 68 PLA C0/BBCB: 60 RTS ; [ Decrement Timers ] dec_event_timer: C0/BBCC: AE 89 11 LDX $1189 C0/BBCF: F0 04 BEQ $BBD5 C0/BBD1: CA DEX C0/BBD2: 8E 89 11 STX $1189 C0/BBD5: AE 8F 11 LDX $118F C0/BBD8: F0 04 BEQ $BBDE C0/BBDA: CA DEX C0/BBDB: 8E 8F 11 STX $118F C0/BBDE: AE 95 11 LDX $1195 C0/BBE1: F0 04 BEQ $BBE7 C0/BBE3: CA DEX C0/BBE4: 8E 95 11 STX $1195 C0/BBE7: AE 9B 11 LDX $119B C0/BBEA: F0 04 BEQ $BBF0 C0/BBEC: CA DEX C0/BBED: 8E 9B 11 STX $119B C0/BBF0: 60 RTS ; [ Check Timer Events ] event_timer: C0/BBF1: A4 00 LDY $00 C0/BBF3: BE 89 11 LDX $1189,Y C0/BBF6: D0 6B BNE $BC63 C0/BBF8: BE 8B 11 LDX $118B,Y C0/BBFB: D0 05 BNE $BC02 C0/BBFD: B9 8D 11 LDA $118D,Y C0/BC00: F0 61 BEQ $BC63 C0/BC02: A6 E5 LDX $E5 C0/BC04: E0 00 00 CPX #$0000 C0/BC07: D0 5A BNE $BC63 C0/BC09: A5 E7 LDA $E7 C0/BC0B: C9 CA CMP #$CA C0/BC0D: D0 54 BNE $BC63 C0/BC0F: AE 03 08 LDX $0803 C0/BC12: BD 6A 08 LDA $086A,X C0/BC15: 29 0F AND #$0F C0/BC17: D0 4A BNE $BC63 C0/BC19: BD 6D 08 LDA $086D,X C0/BC1C: 29 0F AND #$0F C0/BC1E: D0 43 BNE $BC63 C0/BC20: BE 8B 11 LDX $118B,Y C0/BC23: 86 E5 STX $E5 C0/BC25: 8E F4 05 STX $05F4 C0/BC28: B9 8D 11 LDA $118D,Y C0/BC2B: 18 CLC C0/BC2C: 69 CA ADC #$CA C0/BC2E: 85 E7 STA $E7 C0/BC30: 8D F6 05 STA $05F6 C0/BC33: A2 00 00 LDX #$0000 C0/BC36: 8E 94 05 STX $0594 C0/BC39: A9 CA LDA #$CA C0/BC3B: 8D 96 05 STA $0596 C0/BC3E: A9 01 LDA #$01 C0/BC40: 8D C7 05 STA $05C7 C0/BC43: A2 03 00 LDX #$0003 C0/BC46: 86 E8 STX $E8 C0/BC48: A6 DA LDX $DA C0/BC4A: BD 7C 08 LDA $087C,X C0/BC4D: 9D 7D 08 STA $087D,X C0/BC50: A9 04 LDA #$04 C0/BC52: 9D 7C 08 STA $087C,X C0/BC55: 7B TDC C0/BC56: 99 8B 11 STA $118B,Y C0/BC59: 99 8C 11 STA $118C,Y C0/BC5C: 99 8D 11 STA $118D,Y C0/BC5F: 20 ED 2F JSR $2FED ; close map name dialog window C0/BC62: 60 RTS C0/BC63: C8 INY C0/BC64: C8 INY C0/BC65: C8 INY C0/BC66: C8 INY C0/BC67: C8 INY C0/BC68: C8 INY C0/BC69: C0 18 00 CPY #$0018 C0/BC6C: D0 85 BNE $BBF3 C0/BC6E: 60 RTS ; [ Check Event Triggers ] check_event_panel: C0/BC6F: A5 84 LDA $84 C0/BC71: D0 5C BNE $BCCF C0/BC73: A5 59 LDA $59 C0/BC75: D0 58 BNE $BCCF C0/BC77: AC 03 08 LDY $0803 C0/BC7A: B9 6A 08 LDA $086A,Y C0/BC7D: 29 0F AND #$0F C0/BC7F: D0 4E BNE $BCCF C0/BC81: B9 69 08 LDA $0869,Y C0/BC84: D0 49 BNE $BCCF C0/BC86: B9 6D 08 LDA $086D,Y C0/BC89: 29 0F AND #$0F C0/BC8B: D0 42 BNE $BCCF C0/BC8D: B9 6C 08 LDA $086C,Y C0/BC90: D0 3D BNE $BCCF C0/BC92: A6 E5 LDX $E5 C0/BC94: E0 00 00 CPX #$0000 C0/BC97: D0 36 BNE $BCCF C0/BC99: A5 E7 LDA $E7 C0/BC9B: C9 CA CMP #$CA C0/BC9D: D0 30 BNE $BCCF C0/BC9F: B9 7C 08 LDA $087C,Y C0/BCA2: 29 0F AND #$0F C0/BCA4: C9 02 CMP #$02 C0/BCA6: D0 27 BNE $BCCF C0/BCA8: C2 20 REP #$20 C0/BCAA: A5 82 LDA $82 C0/BCAC: 0A ASL C0/BCAD: AA TAX C0/BCAE: BF 02 00 C4 LDA $C40002,X C0/BCB2: 85 1E STA $1E C0/BCB4: BF 00 00 C4 LDA $C40000,X C0/BCB8: C5 1E CMP $1E C0/BCBA: F0 13 BEQ $BCCF C0/BCBC: AA TAX C0/BCBD: BF 00 00 C4 LDA $C40000,X C0/BCC1: C5 AF CMP $AF C0/BCC3: F0 0E BEQ $BCD3 C0/BCC5: 8A TXA C0/BCC6: 18 CLC C0/BCC7: 69 05 00 ADC #$0005 C0/BCCA: AA TAX C0/BCCB: E4 1E CPX $1E C0/BCCD: D0 EE BNE $BCBD C0/BCCF: 7B TDC C0/BCD0: E2 20 SEP #$20 C0/BCD2: 60 RTS C0/BCD3: BF 02 00 C4 LDA $C40002,X C0/BCD7: 85 E5 STA $E5 C0/BCD9: 8D F4 05 STA $05F4 C0/BCDC: 7B TDC C0/BCDD: 99 71 08 STA $0871,Y C0/BCE0: 99 73 08 STA $0873,Y C0/BCE3: E2 20 SEP #$20 C0/BCE5: 99 7E 08 STA $087E,Y C0/BCE8: A9 01 LDA #$01 C0/BCEA: 8D 8E 07 STA $078E C0/BCED: BF 04 00 C4 LDA $C40004,X C0/BCF1: 18 CLC C0/BCF2: 69 CA ADC #$CA C0/BCF4: 85 E7 STA $E7 C0/BCF6: 8D F6 05 STA $05F6 C0/BCF9: A2 00 00 LDX #$0000 C0/BCFC: 8E 94 05 STX $0594 C0/BCFF: A9 CA LDA #$CA C0/BD01: 8D 96 05 STA $0596 C0/BD04: A9 01 LDA #$01 C0/BD06: 8D C7 05 STA $05C7 C0/BD09: A2 03 00 LDX #$0003 C0/BD0C: 86 E8 STX $E8 C0/BD0E: B9 7C 08 LDA $087C,Y C0/BD11: 99 7D 08 STA $087D,Y C0/BD14: A9 04 LDA #$04 C0/BD16: 99 7C 08 STA $087C,Y C0/BD19: 20 08 7E JSR $7E08 C0/BD1C: 20 ED 2F JSR $2FED ; close map name dialog window C0/BD1F: 60 RTS ; -------------------------------------------[ Field: Misc. ]------------------------------------------- ; [ Init Character Object Data ] init_non_new_game: C0/BD20: 64 58 STZ $58 ; don't reload the same map C0/BD22: AC 03 08 LDY $0803 ; party object C0/BD25: A9 01 LDA #$01 ; enable walking animation C0/BD27: 99 68 08 STA $0868,Y C0/BD2A: 20 77 70 JSR $7077 ; restore character data C0/BD2D: A6 00 LDX $00 ; copy character data to character objects C0/BD2F: 9B TXY C0/BD30: B9 00 16 LDA $1600,Y ; actor C0/BD33: 9D 78 08 STA $0878,X C0/BD36: B9 01 16 LDA $1601,Y ; graphics C0/BD39: 9D 79 08 STA $0879,X C0/BD3C: 7B TDC C0/BD3D: 9D 7C 08 STA $087C,X ; clear movement type C0/BD40: 9D 7D 08 STA $087D,X C0/BD43: A9 01 LDA #$01 ; enable walking animation C0/BD45: 9D 68 08 STA $0868,X C0/BD48: C2 21 REP #$21 ; next character C0/BD4A: 8A TXA C0/BD4B: 69 29 00 ADC #$0029 C0/BD4E: AA TAX C0/BD4F: 98 TYA C0/BD50: 18 CLC C0/BD51: 69 25 00 ADC #$0025 C0/BD54: A8 TAY C0/BD55: 7B TDC C0/BD56: E2 20 SEP #$20 C0/BD58: C0 50 02 CPY #$0250 C0/BD5B: D0 D3 BNE $BD30 C0/BD5D: AE A6 1F LDX $1FA6 ; pointer to party object data C0/BD60: 8E FB 07 STX $07FB ; store in character object slot 0 C0/BD63: A9 02 LDA #$02 ; user-controlled C0/BD65: 9D 7C 08 STA $087C,X C0/BD68: AD 68 1F LDA $1F68 ; set facing direction C0/BD6B: 8D 43 07 STA $0743 C0/BD6E: 20 3D 6F JSR $6F3D ; restore character palettes C0/BD71: A0 D9 07 LDY #$07D9 C0/BD74: 8C FD 07 STY $07FD ; clear character object slot 1 through 3 C0/BD77: 8C FF 07 STY $07FF C0/BD7A: 8C 01 08 STY $0801 C0/BD7D: 20 4A 71 JSR $714A ; update character objects C0/BD80: 20 0C 52 JSR $520C ; init character object sprite priority C0/BD83: A9 80 LDA #$80 ; enable map startup event C0/BD85: 8D FA 11 STA $11FA C0/BD88: A9 01 LDA #$01 ; enable map load C0/BD8A: 85 84 STA $84 C0/BD8C: 60 RTS ; [ Init SRAM ] init_new_game: C0/BD8D: A6 00 LDX $00 ; clear character data C0/BD8F: 9E 00 16 STZ $1600,X C0/BD92: E8 INX C0/BD93: E0 50 02 CPX #$0250 C0/BD96: D0 F7 BNE $BD8F C0/BD98: A6 00 LDX $00 ; loop through character data C0/BD9A: A9 FF LDA #$FF C0/BD9C: 9D 00 16 STA $1600,X ; no actor in slot C0/BD9F: 9D 1E 16 STA $161E,X ; no esper C0/BDA2: C2 21 REP #$21 C0/BDA4: 8A TXA C0/BDA5: 69 25 00 ADC #$0025 C0/BDA8: AA TAX C0/BDA9: 7B TDC C0/BDAA: E2 20 SEP #$20 C0/BDAC: E0 50 02 CPX #$0250 C0/BDAF: D0 E9 BNE $BD9A C0/BDB1: A6 00 LDX $00 ; clear characters visible/enabled, battle order, party C0/BDB3: 9E 50 18 STZ $1850,X C0/BDB6: E8 INX C0/BDB7: E0 10 00 CPX #$0010 C0/BDBA: D0 F7 BNE $BDB3 C0/BDBC: A6 00 LDX $00 ; clear inventory C0/BDBE: A5 02 LDA $02 C0/BDC0: 9E 69 19 STZ $1969,X C0/BDC3: 9D 69 18 STA $1869,X C0/BDC6: E8 INX C0/BDC7: E0 00 01 CPX #$0100 C0/BDCA: D0 F4 BNE $BDC0 C0/BDCC: A6 00 LDX $00 ; clear character spells known C0/BDCE: 9E 6E 1A STZ $1A6E,X C0/BDD1: E8 INX C0/BDD2: E0 88 02 CPX #$0288 C0/BDD5: D0 F7 BNE $BDCE C0/BDD7: A6 00 LDX $00 ; clear character skill data C0/BDD9: 9E F6 1C STZ $1CF6,X C0/BDDC: E8 INX C0/BDDD: E0 57 00 CPX #$0057 C0/BDE0: D0 F7 BNE $BDD9 C0/BDE2: A6 00 LDX $00 ; load swdtech names C0/BDE4: BF 40 3C CF LDA $CF3C40,X C0/BDE8: 9D F8 1C STA $1CF8,X C0/BDEB: E8 INX C0/BDEC: E0 30 00 CPX #$0030 C0/BDEF: D0 F3 BNE $BDE4 C0/BDF1: 9C 69 1A STZ $1A69 ; clear espers C0/BDF4: 9C 6A 1A STZ $1A6A C0/BDF7: 9C 6B 1A STZ $1A6B C0/BDFA: 9C 6C 1A STZ $1A6C C0/BDFD: A6 00 LDX $00 ; clear event flags C0/BDFF: 9E C9 1D STZ $1DC9,X C0/BE02: E8 INX C0/BE03: E0 54 00 CPX #$0054 C0/BE06: D0 F7 BNE $BDFF C0/BE08: A6 00 LDX $00 ; load starting rages C0/BE0A: BF A0 7A C4 LDA $C47AA0,X C0/BE0E: 9D 2C 1D STA $1D2C,X C0/BE11: E8 INX C0/BE12: E0 20 00 CPX #$0020 C0/BE15: D0 F3 BNE $BE0A C0/BE17: AF 64 F5 E6 LDA $E6F564 ; load starting lores C0/BE1B: 8D 29 1D STA $1D29 C0/BE1E: AF 65 F5 E6 LDA $E6F565 C0/BE22: 8D 2A 1D STA $1D2A C0/BE25: AF 66 F5 E6 LDA $E6F566 C0/BE29: 8D 2B 1D STA $1D2B C0/BE2C: 9C 65 05 STZ $0565 ; set wallpaper index to 0 C0/BE2F: A2 FF 7F LDX #$7FFF ; set font color to white C0/BE32: 8E 55 1D STX $1D55 C0/BE35: A6 00 LDX $00 ; set window palette C0/BE37: BF 02 1C ED LDA $ED1C02,X C0/BE3B: 9D 57 1D STA $1D57,X C0/BE3E: E8 INX C0/BE3F: E0 0E 00 CPX #$000E C0/BE42: D0 F3 BNE $BE37 C0/BE44: A9 01 LDA #$01 ; set party z-levels to 1 C0/BE46: 8D F3 1F STA $1FF3 C0/BE49: 8D F4 1F STA $1FF4 C0/BE4C: 8D F5 1F STA $1FF5 C0/BE4F: 8D F6 1F STA $1FF6 C0/BE52: A6 00 LDX $00 ; clear timers C0/BE54: 8E 89 11 STX $1189 C0/BE57: 8E 8F 11 STX $118F C0/BE5A: 8E 95 11 STX $1195 C0/BE5D: 8E 9B 11 STX $119B C0/BE60: 8E 8B 11 STX $118B ; clear timer event pointers C0/BE63: 8E 91 11 STX $1191 C0/BE66: 8E 97 11 STX $1197 C0/BE69: 8E 9D 11 STX $119D C0/BE6C: 7B TDC C0/BE6D: 8D 8D 11 STA $118D C0/BE70: 8D 93 11 STA $1193 C0/BE73: 8D 99 11 STA $1199 C0/BE76: 8D 9F 11 STA $119F C0/BE79: 20 B6 70 JSR $70B6 ; calculate object data pointers C0/BE7C: 9C F1 11 STZ $11F1 ; disable restore saved game C0/BE7F: 20 9D 98 JSR $989D ; init event engine C0/BE82: 64 58 STZ $58 ; don't reload the same map C0/BE84: 9C 59 05 STZ $0559 ; don't lock screen C0/BE87: 20 0C BB JSR $BB0C ; clear event bits C0/BE8A: 20 28 52 JSR $5228 ; init event bits C0/BE8D: 20 18 BB JSR $BB18 ; clear treasure bits C0/BE90: A2 03 00 LDX #$0003 ; $CA0003 (game start) C0/BE93: 86 E5 STX $E5 C0/BE95: 8E F4 05 STX $05F4 C0/BE98: A9 CA LDA #$CA C0/BE9A: 85 E7 STA $E7 C0/BE9C: 8D F6 05 STA $05F6 ; set return address to $CA0000 C0/BE9F: A2 00 00 LDX #$0000 C0/BEA2: 8E 94 05 STX $0594 C0/BEA5: A9 CA LDA #$CA C0/BEA7: 8D 96 05 STA $0596 C0/BEAA: A9 01 LDA #$01 ; loop once C0/BEAC: 8D C7 05 STA $05C7 C0/BEAF: A2 03 00 LDX #$0003 ; set event stack C0/BEB2: 86 E8 STX $E8 C0/BEB4: A9 02 LDA #$02 ; party will be user-controlled after event C0/BEB6: 8D 7D 08 STA $087D C0/BEB9: 64 47 STZ $47 ; clear event counter C0/BEBB: 60 RTS ; [ Load Map ] init: C0/BEBC: 20 74 03 JSR $0374 ; disable interrupts C0/BEBF: 20 8A 84 JSR $848A ; load dialog font widths C0/BEC2: A5 58 LDA $58 ; branch if reloading the same map C0/BEC4: D0 32 BNE $BEF8 C0/BEC6: C2 20 REP #$20 C0/BEC8: AD 64 1F LDA $1F64 ; current map index C0/BECB: 29 FF 01 AND #$01FF ; clear startup flags C0/BECE: 8D 64 1F STA $1F64 C0/BED1: 85 82 STA $82 C0/BED3: 7B TDC C0/BED4: E2 20 SEP #$20 C0/BED6: 20 AD 1C JSR $1CAD ; load map properties C0/BED9: 64 47 STZ $47 ; clear event counter C0/BEDB: 9C 7B 07 STZ $077B ; disable flashlight C0/BEDE: A9 01 LDA #$01 ; enable entrance triggers C0/BEE0: 85 85 STA $85 C0/BEE2: A6 00 LDX $00 ; clear open doors C0/BEE4: 8E 27 11 STX $1127 C0/BEE7: 20 B6 70 JSR $70B6 ; calculate object data pointers C0/BEEA: 20 7F 17 JSR $177F ; calculate min/max scroll positions C0/BEED: A6 00 LDX $00 C0/BEEF: 8E 8C 07 STX $078C ; clear number of steps for random battles C0/BEF2: 9C 8B 07 STZ $078B ; clear number of random battles this map C0/BEF5: 20 DA 6E JSR $6EDA ; restore character positions C0/BEF8: 20 4A 71 JSR $714A ; update character objects C0/BEFB: 20 27 46 JSR $4627 ; init party position C0/BEFE: AD FA 11 LDA $11FA ; branch if map size update is disabled C0/BF01: 29 20 AND #$20 C0/BF03: D0 03 BNE $BF08 C0/BF05: 20 29 17 JSR $1729 ; init map size C0/BF08: AD 66 1F LDA $1F66 ; set scroll position C0/BF0B: 8D 41 05 STA $0541 C0/BF0E: AD 67 1F LDA $1F67 C0/BF11: 8D 42 05 STA $0542 C0/BF14: 20 6D 16 JSR $166D ; load bg2/bg3 scrolling data C0/BF17: A2 00 48 LDX #$4800 ; set bg data VRAM locations C0/BF1A: 8E 8B 05 STX $058B C0/BF1D: A2 00 50 LDX #$5000 C0/BF20: 8E 8D 05 STX $058D C0/BF23: A2 00 58 LDX #$5800 C0/BF26: 8E 8F 05 STX $058F C0/BF29: A6 E5 LDX $E5 ; branch if an event is running C0/BF2B: D0 09 BNE $BF36 C0/BF2D: A5 E7 LDA $E7 C0/BF2F: C9 CA CMP #$CA C0/BF31: D0 03 BNE $BF36 C0/BF33: 20 67 6F JSR $6F67 ; init party object C0/BF36: 64 84 STZ $84 ; disable map load C0/BF38: 64 57 STZ $57 ; disable random battle C0/BF3A: 64 56 STZ $56 ; disable battle C0/BF3C: 64 4C STZ $4C ; clear screen brightness C0/BF3E: 9C 5E 05 STZ $055E ; no object collisions C0/BF41: 9C 67 05 STZ $0567 ; clear map name dialog counter C0/BF44: 64 5A STZ $5A ; disable bg map flip C0/BF46: 9C 5A 05 STZ $055A ; disable bg map updates C0/BF49: 9C 5B 05 STZ $055B C0/BF4C: 9C 5C 05 STZ $055C C0/BF4F: 64 BB STZ $BB ; dialog window closed C0/BF51: 64 BA STZ $BA C0/BF53: A9 01 LDA #$01 ; wait for character objects to get updated C0/BF55: 8D 98 07 STA $0798 C0/BF58: 20 38 16 JSR $1638 ; load bg2/bg3 color add/sub Data C0/BF5B: 20 92 05 JSR $0592 ; init ppu hardware registers C0/BF5E: 20 8D 26 JSR $268D ; load bg1/bg2 graphics C0/BF61: 20 5F 27 JSR $275F ; load bg3 graphics C0/BF64: 20 5C 26 JSR $265C ; load map palette C0/BF67: 20 83 28 JSR $2883 ; load map data C0/BF6A: 20 D7 15 JSR $15D7 ; load treasure chest map data C0/BF6D: 20 17 4D JSR $4D17 ; load door map data C0/BF70: 20 DA 27 JSR $27DA ; load tile formation C0/BF73: 20 CE 1C JSR $1CCE ; load tile properties C0/BF76: 20 7B 1B JSR $1B7B ; calculate bg scroll positions C0/BF79: 20 5C 18 JSR $185C ; copy map data to VRAM C0/BF7C: 20 64 7F JSR $7F64 ; init dialog text C0/BF7F: 20 0A 56 JSR $560A ; init object graphics C0/BF82: 20 23 C7 JSR $C723 ; init sprite overlays C0/BF85: 20 FE 35 JSR $35FE ; init dialog window C0/BF88: 20 21 38 JSR $3821 ; init HDMA data C0/BF8B: 20 A8 39 JSR $39A8 ; load horizontal fade bars (from ending) C0/BF8E: 20 E9 0F JSR $0FE9 ; init sprite data C0/BF91: 20 EB 50 JSR $50EB ; load sprite palettes C0/BF94: 20 E3 56 JSR $56E3 ; init sprite high data C0/BF97: 20 D5 8E JSR $8ED5 ; init BG animation C0/BF9A: 20 17 8D JSR $8D17 ; init palette animation C0/BF9D: 20 F3 6C JSR $6CF3 ; update party equipment effects C0/BFA0: 20 B6 42 JSR $42B6 ; update bg scroll HDMA data C0/BFA3: 20 DB 6A JSR $6ADB ; load timer graphics C0/BFA6: AD B6 1E LDA $1EB6 ; enable object map data update C0/BFA9: 09 40 ORA #$40 C0/BFAB: 8D B6 1E STA $1EB6 C0/BFAE: A5 58 LDA $58 ; branch if re-loading the same map C0/BFB0: D0 14 BNE $BFC6 C0/BFB2: 9C BE 1E STZ $1EBE ; unused C0/BFB5: 9C BF 1E STZ $1EBF C0/BFB8: 20 A8 52 JSR $52A8 ; load NPC data C0/BFBB: 20 51 46 JSR $4651 ; init party facing direction C0/BFBE: AD B6 1E LDA $1EB6 ; disable object map data update C0/BFC1: 29 BF AND #$BF C0/BFC3: 8D B6 1E STA $1EB6 C0/BFC6: 20 C1 55 JSR $55C1 ; init object animation C0/BFC9: 20 54 54 JSR $5454 ; init special NPC graphics C0/BFCC: 20 04 51 JSR $5104 ; init character portrait (from ending) C0/BFCF: 20 38 52 JSR $5238 ; init object map data C0/BFD2: AD FA 11 LDA $11FA ; branch if map startup event is enabled C0/BFD5: 30 03 BMI $BFDA C0/BFD7: 4C A4 C0 JMP $C0A4 C0/BFDA: C2 20 REP #$20 C0/BFDC: AD 64 1F LDA $1F64 ; map index * 3 C0/BFDF: 29 FF 01 AND #$01FF C0/BFE2: 85 1E STA $1E C0/BFE4: 0A ASL C0/BFE5: 18 CLC C0/BFE6: 65 1E ADC $1E C0/BFE8: AA TAX C0/BFE9: 7B TDC C0/BFEA: E2 20 SEP #$20 C0/BFEC: A9 B2 LDA #$B2 ; set map startup event code C0/BFEE: 8D 24 06 STA $0624 ; $0624 B2 xxxxxx Jump to xxxxxx C0/BFF1: BF 00 FA D1 LDA $D1FA00,X ; pointer to map startup event C0/BFF5: 8D 25 06 STA $0625 C0/BFF8: 85 2A STA $2A C0/BFFA: BF 01 FA D1 LDA $D1FA01,X C0/BFFE: 8D 26 06 STA $0626 C0/C001: 85 2B STA $2B C0/C003: BF 02 FA D1 LDA $D1FA02,X C0/C007: 8D 27 06 STA $0627 C0/C00A: 18 CLC C0/C00B: 69 CA ADC #$CA C0/C00D: 85 2C STA $2C C0/C00F: A7 2A LDA [$2A] C0/C011: C9 FE CMP #$FE C0/C013: D0 03 BNE $C018 C0/C015: 4C A4 C0 JMP $C0A4 C0/C018: A9 D3 LDA #$D3 ; $0628 D3 CF Clear event bit $1EB9.7 (enable user control of character) C0/C01A: 8D 28 06 STA $0628 C0/C01D: A9 CF LDA #$CF C0/C01F: 8D 29 06 STA $0629 C0/C022: A9 FD LDA #$FD ; $062A FD Add 1 to event PC (does nothing) C0/C024: 8D 2A 06 STA $062A C0/C027: A9 FE LDA #$FE ; $062B FE Return C0/C029: 8D 2B 06 STA $062B C0/C02C: AD B9 1E LDA $1EB9 ; disable user control of character C0/C02F: 09 80 ORA #$80 C0/C031: 8D B9 1E STA $1EB9 C0/C034: A6 E8 LDX $E8 ; push current event address onto event stack C0/C036: A5 E5 LDA $E5 C0/C038: 9D 94 05 STA $0594,X C0/C03B: A5 E6 LDA $E6 C0/C03D: 9D 95 05 STA $0595,X C0/C040: A5 E7 LDA $E7 C0/C042: 9D 96 05 STA $0596,X C0/C045: A9 24 LDA #$24 ; set event PC to $000624 C0/C047: 85 E5 STA $E5 C0/C049: 9D F4 05 STA $05F4,X C0/C04C: A9 06 LDA #$06 C0/C04E: 85 E6 STA $E6 C0/C050: 9D F5 05 STA $05F5,X C0/C053: A9 00 LDA #$00 C0/C055: 85 E7 STA $E7 C0/C057: 9F F6 05 00 STA $0005F6,X C0/C05B: E8 INX C0/C05C: E8 INX C0/C05D: E8 INX C0/C05E: 86 E8 STX $E8 ; set event stack pointer C0/C060: A9 01 LDA #$01 ; do event one time C0/C062: 9D C4 05 STA $05C4,X C0/C065: AC 03 08 LDY $0803 C0/C068: B9 7C 08 LDA $087C,Y ; save party movement type C0/C06B: 99 7D 08 STA $087D,Y C0/C06E: 20 5A 9A JSR $9A5A ; execute events C0/C071: AD B9 1E LDA $1EB9 C0/C074: 10 14 BPL $C08A ; branch if user has control of character C0/C076: 20 78 75 JSR $7578 ; update object actions C0/C079: 20 3C 57 JSR $573C ; update object positions C0/C07C: 20 08 1F JSR $1F08 ; update BG1 map changes C0/C07F: 20 C2 1F JSR $1FC2 ; update BG2 map changes C0/C082: 20 81 20 JSR $2081 ; update BG3 map changes C0/C085: 20 37 1E JSR $1E37 ; update map changes in VRAM C0/C088: 80 E4 BRA $C06E C0/C08A: A7 E5 LDA [$E5] ; branch if current event opcode is return C0/C08C: C9 FE CMP #$FE C0/C08E: D0 14 BNE $C0A4 C0/C090: A6 E8 LDX $E8 C0/C092: CA DEX C0/C093: CA DEX C0/C094: CA DEX C0/C095: BC 94 05 LDY $0594,X ; branch unless there's an address on the event stack C0/C098: D0 0A BNE $C0A4 C0/C09A: BD 96 05 LDA $0596,X C0/C09D: C9 CA CMP #$CA C0/C09F: D0 03 BNE $C0A4 C0/C0A1: 20 5A 9A JSR $9A5A ; execute events C0/C0A4: AD FA 11 LDA $11FA ; branch if map fade in is disabled C0/C0A7: 29 40 AND #$40 C0/C0A9: D0 03 BNE $C0AE C0/C0AB: 20 4D 0F JSR $0F4D ; begin fade in C0/C0AE: 20 7E 46 JSR $467E ; init party z-level C0/C0B1: 20 A5 C8 JSR $C8A5 ; update overlay data C0/C0B4: 20 4E 03 JSR $034E ; play default song C0/C0B7: 9C FA 11 STZ $11FA ; clear map startup flags C0/C0BA: 64 58 STZ $58 ; don't reload the same map C0/C0BC: 20 E5 7F JSR $7FE5 ; display map name C0/C0BF: 64 DC STZ $DC C0/C0C1: A5 DC LDA $DC ; loop through all active objects C0/C0C3: C5 DD CMP $DD C0/C0C5: F0 13 BEQ $C0DA C0/C0C7: AA TAX C0/C0C8: BC 03 08 LDY $0803,X C0/C0CB: 20 39 58 JSR $5839 ; update object graphics position C0/C0CE: B9 77 08 LDA $0877,Y ; set current graphic positions C0/C0D1: 99 76 08 STA $0876,Y C0/C0D4: E6 DC INC $DC ; next object C0/C0D6: E6 DC INC $DC C0/C0D8: 80 E7 BRA $C0C1 C0/C0DA: 64 47 STZ $47 ; clear event counter C0/C0DC: 20 7B 67 JSR $677B ; update object 0-5 graphics in VRAM C0/C0DF: E6 47 INC $47 C0/C0E1: 20 7B 67 JSR $677B ; update object 6-11 graphics in VRAM C0/C0E4: E6 47 INC $47 C0/C0E6: 20 7B 67 JSR $677B ; update object 12-17 graphics in VRAM C0/C0E9: E6 47 INC $47 C0/C0EB: 20 7B 67 JSR $677B ; update object 18-23 graphics in VRAM C0/C0EE: 60 RTS ; -------------------------------------------[ Field: Battle ]------------------------------------------ ; [ Battle Blur/Sound ] battle_effect: C0/C0EF: AD 8A 07 LDA $078A ; branch if battle sound effect is disabled C0/C0F2: 29 40 AND #$40 C0/C0F4: D0 05 BNE $C0FB C0/C0F6: A9 C1 LDA #$C1 ; play battle sound effect C0/C0F8: 20 D3 02 JSR $02D3 C0/C0FB: AD 8A 07 LDA $078A ; return if battle blur is disabled C0/C0FE: 30 3D BMI $C13D C0/C100: 64 46 STZ $46 ; clear frame counter C0/C102: 20 64 05 JSR $0564 ; wait for vblank C0/C105: A5 46 LDA $46 C0/C107: C9 10 CMP #$10 C0/C109: B0 04 BCS $C10F C0/C10B: 29 07 AND #$07 ; increase mosaic size from 0 to 7 twice C0/C10D: 80 02 BRA $C111 C0/C10F: 29 0F AND #$0F ; then increase from 0 to 15 once C0/C111: 0A ASL C0/C112: 0A ASL C0/C113: 0A ASL C0/C114: 0A ASL C0/C115: 09 0F ORA #$0F ; enable mosaic on all BG layers C0/C117: 8F 33 82 7E STA $7E8233 ; store in screen mosaic HDMA table ($2106) C0/C11B: 8F 37 82 7E STA $7E8237 C0/C11F: 8F 3B 82 7E STA $7E823B C0/C123: 8F 3F 82 7E STA $7E823F C0/C127: 8F 43 82 7E STA $7E8243 C0/C12B: 8F 47 82 7E STA $7E8247 C0/C12F: 8F 4B 82 7E STA $7E824B C0/C133: 8F 4F 82 7E STA $7E824F C0/C137: A5 46 LDA $46 ; loop for $20 frames C0/C139: C9 20 CMP #$20 C0/C13B: D0 C5 BNE $C102 C0/C13D: 60 RTS ; [ Execute Battle ] call_battle: C0/C13E: 20 EF C0 JSR $C0EF ; battle blur/sound C0/C141: 20 74 03 JSR $0374 ; disable interrupts C0/C144: 20 05 05 JSR $0505 ; save direct page C0/C147: 20 91 70 JSR $7091 ; save character data C0/C14A: AE 03 08 LDX $0803 ; save pointer to party object data C0/C14D: 8E A6 1F STX $1FA6 C0/C150: BD 7F 08 LDA $087F,X ; save facing direction C0/C153: 8D 68 1F STA $1F68 C0/C156: A5 B2 LDA $B2 ; save z-level C0/C158: 8D 44 07 STA $0744 C0/C15B: 08 PHP C0/C15C: 8B PHB C0/C15D: 0B PHD C0/C15E: 22 00 00 C2 JSL $C20000 ; execute battle C0/C162: 2B PLD C0/C163: AB PLB C0/C164: 28 PLP C0/C165: 20 74 03 JSR $0374 ; disable interrupts C0/C168: 20 15 05 JSR $0515 ; restore direct page C0/C16B: 20 77 70 JSR $7077 ; restore character data C0/C16E: A9 01 LDA #$01 ; re-load the same map C0/C170: 85 58 STA $58 C0/C172: 20 73 05 JSR $0573 ; set up interrupt jump code C0/C175: 60 RTS ; [ Update Random Battles (world map) ] mainmap_encount: C0/C176: 7B TDC C0/C177: 20 15 05 JSR $0515 ; restore direct page C0/C17A: AD 64 1F LDA $1F64 ; map index C0/C17D: 0A ASL C0/C17E: 0A ASL C0/C17F: 0A ASL C0/C180: 85 1A STA $1A C0/C182: AD F9 11 LDA $11F9 ; battle bg index C0/C185: 29 07 AND #$07 C0/C187: 05 1A ORA $1A C0/C189: AA TAX C0/C18A: BF 7F C2 C0 LDA $C0C27F,X C0/C18E: 8F E2 11 00 STA $0011E2 C0/C192: 7B TDC C0/C193: 8F E3 11 00 STA $0011E3 C0/C197: 8A TXA C0/C198: 29 07 AND #$07 C0/C19A: AA TAX C0/C19B: BF 8F C2 C0 LDA $C0C28F,X C0/C19F: 85 22 STA $22 C0/C1A1: 64 23 STZ $23 C0/C1A3: BF 97 C2 C0 LDA $C0C297,X C0/C1A7: 85 20 STA $20 C0/C1A9: 64 21 STZ $21 C0/C1AB: AD 64 1F LDA $1F64 C0/C1AE: 85 1F STA $1F C0/C1B0: 64 1E STZ $1E C0/C1B2: AD 61 1F LDA $1F61 C0/C1B5: 29 E0 AND #$E0 C0/C1B7: 85 1E STA $1E C0/C1B9: AD 60 1F LDA $1F60 C0/C1BC: 4A LSR C0/C1BD: 4A LSR C0/C1BE: 4A LSR C0/C1BF: 29 1C AND #$1C C0/C1C1: 05 1E ORA $1E C0/C1C3: 85 1E STA $1E C0/C1C5: C2 20 REP #$20 C0/C1C7: A5 1E LDA $1E C0/C1C9: 05 20 ORA $20 C0/C1CB: AA TAX C0/C1CC: 7B TDC C0/C1CD: E2 20 SEP #$20 C0/C1CF: BF 00 54 CF LDA $CF5400,X C0/C1D3: 85 24 STA $24 C0/C1D5: C9 FF CMP #$FF C0/C1D7: D0 06 BNE $C1DF ; branch if not a veldt sector C0/C1D9: A9 0F LDA #$0F C0/C1DB: 8F E4 11 00 STA $0011E4 ; enable leap, continue current music, allow gau to join C0/C1DF: C2 20 REP #$20 C0/C1E1: A5 1E LDA $1E C0/C1E3: 4A LSR C0/C1E4: 4A LSR C0/C1E5: AA TAX C0/C1E6: 7B TDC C0/C1E7: E2 20 SEP #$20 C0/C1E9: BF 00 58 CF LDA $CF5800,X C0/C1ED: A4 22 LDY $22 C0/C1EF: F0 05 BEQ $C1F6 C0/C1F1: 4A LSR C0/C1F2: 4A LSR C0/C1F3: 88 DEY C0/C1F4: D0 FB BNE $C1F1 C0/C1F6: 29 03 AND #$03 C0/C1F8: C9 03 CMP #$03 C0/C1FA: F0 7C BEQ $C278 C0/C1FC: 85 1A STA $1A C0/C1FE: AD DF 11 LDA $11DF C0/C201: 29 03 AND #$03 C0/C203: 0A ASL C0/C204: 0A ASL C0/C205: 05 1A ORA $1A C0/C207: 0A ASL C0/C208: AA TAX C0/C209: BF 9F C2 C0 LDA $C0C29F,X C0/C20D: 1F A0 C2 C0 ORA $C0C2A0,X C0/C211: F0 65 BEQ $C278 C0/C213: C2 20 REP #$20 C0/C215: AD 6E 1F LDA $1F6E C0/C218: 18 CLC C0/C219: 7F 9F C2 C0 ADC $C0C29F,X C0/C21D: 90 03 BCC $C222 C0/C21F: A9 00 FF LDA #$FF00 C0/C222: 8D 6E 1F STA $1F6E C0/C225: 7B TDC C0/C226: E2 20 SEP #$20 C0/C228: 20 79 C4 JSR $C479 C0/C22B: CD 6F 1F CMP $1F6F C0/C22E: B0 48 BCS $C278 C0/C230: 9C 6E 1F STZ $1F6E C0/C233: 9C 6F 1F STZ $1F6F C0/C236: A5 24 LDA $24 C0/C238: C9 FF CMP #$FF C0/C23A: D0 03 BNE $C23F ; branch if not a veldt sector C0/C23C: 4C DF C2 JMP $C2DF C0/C23F: C2 20 REP #$20 C0/C241: 0A ASL C0/C242: 0A ASL C0/C243: 0A ASL C0/C244: AA TAX C0/C245: 7B TDC C0/C246: E2 20 SEP #$20 C0/C248: 20 96 C4 JSR $C496 C0/C24B: C9 50 CMP #$50 C0/C24D: 90 0E BCC $C25D C0/C24F: E8 INX C0/C250: E8 INX C0/C251: C9 A0 CMP #$A0 C0/C253: 90 08 BCC $C25D C0/C255: E8 INX C0/C256: E8 INX C0/C257: C9 F0 CMP #$F0 C0/C259: 90 02 BCC $C25D C0/C25B: E8 INX C0/C25C: E8 INX C0/C25D: C2 20 REP #$20 C0/C25F: BF 00 48 CF LDA $CF4800,X C0/C263: 8F E0 11 00 STA $0011E0 C0/C267: 7B TDC C0/C268: E2 20 SEP #$20 C0/C26A: AD D7 1E LDA $1ED7 C0/C26D: 29 10 AND #$10 C0/C26F: 4A LSR C0/C270: 8F E4 11 00 STA $0011E4 C0/C274: A9 01 LDA #$01 C0/C276: 80 01 BRA $C279 C0/C278: 7B TDC C0/C279: 48 PHA C0/C27A: 20 05 05 JSR $0505 ; save direct page C0/C27D: 68 PLA C0/C27E: 6B RTL ; world map battle bg's (8 per map) landscape_table: C0/C27F: .DB $00, $01, $02, $03, $04, $05, $06, $07 .DB $00, $01, $2F, $03, $05, $05, $06, $07 ; world map battle groups for each battle bg landscape_mask: C0/C28F: .DB $03, $02, $01, $02, $03, $00, $03, $03 scene_offset: C0/C297: .DB $00, $01, $02, $01, $00, $03, $00, $00 ; world map random battle rates (4 items [normal, charm bangle, moogle charm, unused], 8 bytes each [normal, low, high, none]) m_rate_add_tbl: C0/C29F: .DW $00C0, $0060, $0180, $0000, $0060, $0030, $00C0, $0000 C0/C2AF: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; normal map random battle rates (4 items [normal, charm bangle, moogle charm, unused], 8 bytes each [normal, low, high, very high]) s_rate_add_tbl: C0/C2BF: .DW $0070, $0040, $0160, $0200, $0038, $0020, $00B0, $0100 C0/C2CF: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; [ Select a Veldt Formation ] C0/C2DF: EE A5 1F INC $1FA5 C0/C2E2: AD A5 1F LDA $1FA5 C0/C2E5: 29 3F AND #$3F C0/C2E7: AA TAX C0/C2E8: BD DD 1D LDA $1DDD,X C0/C2EB: D0 07 BNE $C2F4 C0/C2ED: 8A TXA C0/C2EE: 1A INC C0/C2EF: 29 3F AND #$3F C0/C2F1: AA TAX C0/C2F2: 80 F4 BRA $C2E8 C0/C2F4: 85 1A STA $1A C0/C2F6: 8A TXA C0/C2F7: 8D A5 1F STA $1FA5 C0/C2FA: C2 20 REP #$20 C0/C2FC: 0A ASL C0/C2FD: 0A ASL C0/C2FE: 0A ASL C0/C2FF: 85 1E STA $1E C0/C301: 7B TDC C0/C302: E2 20 SEP #$20 C0/C304: 20 96 C4 JSR $C496 C0/C307: 29 07 AND #$07 C0/C309: AA TAX C0/C30A: A5 1A LDA $1A C0/C30C: 3F FC BA C0 AND $C0BAFC,X C0/C310: D0 07 BNE $C319 C0/C312: 8A TXA C0/C313: 1A INC C0/C314: 29 07 AND #$07 C0/C316: AA TAX C0/C317: 80 F1 BRA $C30A C0/C319: C2 21 REP #$21 C0/C31B: 8A TXA C0/C31C: 65 1E ADC $1E C0/C31E: 8F E0 11 00 STA $0011E0 C0/C322: 7B TDC C0/C323: E2 20 SEP #$20 C0/C325: 48 PHA C0/C326: 20 05 05 JSR $0505 ; save direct page C0/C329: 68 PLA C0/C32A: A9 01 LDA #$01 C0/C32C: 6B RTL ; [ Update Random Battles ] submap_encount: C0/C32D: A5 84 LDA $84 C0/C32F: D0 3A BNE $C36B C0/C331: AD 8E 07 LDA $078E C0/C334: D0 35 BNE $C36B C0/C336: AD B9 1E LDA $1EB9 C0/C339: 29 20 AND #$20 C0/C33B: D0 2E BNE $C36B C0/C33D: A6 E5 LDX $E5 C0/C33F: D0 2A BNE $C36B C0/C341: A5 E7 LDA $E7 C0/C343: C9 CA CMP #$CA C0/C345: D0 24 BNE $C36B C0/C347: AD 25 05 LDA $0525 C0/C34A: 10 1F BPL $C36B C0/C34C: AC 03 08 LDY $0803 C0/C34F: B9 69 08 LDA $0869,Y C0/C352: D0 17 BNE $C36B C0/C354: B9 6A 08 LDA $086A,Y C0/C357: 29 0F AND #$0F C0/C359: D0 10 BNE $C36B C0/C35B: B9 6C 08 LDA $086C,Y C0/C35E: D0 0B BNE $C36B C0/C360: B9 6D 08 LDA $086D,Y C0/C363: 29 0F AND #$0F C0/C365: D0 04 BNE $C36B C0/C367: A5 57 LDA $57 C0/C369: D0 01 BNE $C36C ; branch if random battle is enabled C0/C36B: 60 RTS C0/C36C: 64 57 STZ $57 ; disable random battle C0/C36E: AE 8C 07 LDX $078C ; increment number of steps on map C0/C371: E8 INX C0/C372: 8E 8C 07 STX $078C C0/C375: AD 82 00 LDA $0082 ; map index C0/C378: 29 03 AND #$03 C0/C37A: A8 TAY C0/C37B: C2 20 REP #$20 C0/C37D: AD 82 00 LDA $0082 C0/C380: 4A LSR C0/C381: 4A LSR C0/C382: AA TAX C0/C383: 7B TDC C0/C384: E2 20 SEP #$20 C0/C386: BF 80 58 CF LDA $CF5880,X ; probability data (2 bits per map) C0/C38A: C4 00 CPY $00 C0/C38C: F0 05 BEQ $C393 C0/C38E: 4A LSR C0/C38F: 4A LSR C0/C390: 88 DEY C0/C391: D0 FB BNE $C38E C0/C393: 29 03 AND #$03 C0/C395: 85 1A STA $1A C0/C397: AD DF 11 LDA $11DF ; moogle charm and charm bangle effect C0/C39A: 29 03 AND #$03 C0/C39C: 0A ASL C0/C39D: 0A ASL C0/C39E: 05 1A ORA $1A C0/C3A0: 0A ASL C0/C3A1: AA TAX C0/C3A2: BF BF C2 C0 LDA $C0C2BF,X C0/C3A6: 1F C0 C2 C0 ORA $C0C2C0,X C0/C3AA: D0 03 BNE $C3AF C0/C3AC: 4C 78 C4 JMP $C478 ; return if battle probability is zero (moogle charm) C0/C3AF: C2 21 REP #$21 C0/C3B1: AD 6E 1F LDA $1F6E ; random battle counter C0/C3B4: 7F BF C2 C0 ADC $C0C2BF,X ; add random battle rate (max #$FF00) C0/C3B8: 90 03 BCC $C3BD C0/C3BA: A9 00 FF LDA #$FF00 C0/C3BD: 8D 6E 1F STA $1F6E C0/C3C0: 7B TDC C0/C3C1: E2 20 SEP #$20 C0/C3C3: 20 79 C4 JSR $C479 ; update random number for random battle C0/C3C6: CD 6F 1F CMP $1F6F C0/C3C9: B0 A0 BCS $C36B ; return if greater than counter (no battle yet) C0/C3CB: 9C 6E 1F STZ $1F6E ; clear random battle counter C0/C3CE: 9C 6F 1F STZ $1F6F C0/C3D1: AE 82 00 LDX $0082 C0/C3D4: BF 00 56 CF LDA $CF5600,X ; get the map's battle group C0/C3D8: C2 20 REP #$20 C0/C3DA: 0A ASL C0/C3DB: 0A ASL C0/C3DC: 0A ASL C0/C3DD: AA TAX C0/C3DE: 7B TDC C0/C3DF: E2 20 SEP #$20 C0/C3E1: 20 96 C4 JSR $C496 ; update random number for battle group (5,5,5,1 chance for the 4 battles in the battle group) C0/C3E4: C9 50 CMP #$50 C0/C3E6: 90 0E BCC $C3F6 C0/C3E8: E8 INX C0/C3E9: E8 INX C0/C3EA: C9 A0 CMP #$A0 C0/C3EC: 90 08 BCC $C3F6 C0/C3EE: E8 INX C0/C3EF: E8 INX C0/C3F0: C9 F0 CMP #$F0 C0/C3F2: 90 02 BCC $C3F6 C0/C3F4: E8 INX C0/C3F5: E8 INX C0/C3F6: C2 20 REP #$20 C0/C3F8: BF 00 48 CF LDA $CF4800,X ; random battle groups (8 bytes each) C0/C3FC: 8F E0 11 00 STA $0011E0 C0/C400: 7B TDC C0/C401: E2 20 SEP #$20 C0/C403: AD 22 05 LDA $0522 ; battle bg C0/C406: 29 7F AND #$7F C0/C408: 8F E2 11 00 STA $0011E2 C0/C40C: 7B TDC C0/C40D: 8F E3 11 00 STA $0011E3 C0/C411: AE 41 05 LDX $0541 ; save bg1 scroll position C0/C414: 8E 66 1F STX $1F66 C0/C417: AE AF 00 LDX $00AF ; save party position C0/C41A: 8E C0 1F STX $1FC0 C0/C41D: AD D7 1E LDA $1ED7 ; C0/C420: 29 10 AND #$10 C0/C422: 4A LSR C0/C423: 8F E4 11 00 STA $0011E4 C0/C427: EE 8B 07 INC $078B ; increment number of random battles on this map C0/C42A: C2 20 REP #$20 C0/C42C: 7B TDC C0/C42D: 99 71 08 STA $0871,Y ; clear object 0 movement speed C0/C430: 99 73 08 STA $0873,Y C0/C433: 85 73 STA $73 ; clear bg scroll from movement C0/C435: 85 75 STA $75 C0/C437: 85 77 STA $77 C0/C439: 85 79 STA $79 C0/C43B: 85 7B STA $7B C0/C43D: 85 7D STA $7D C0/C43F: E2 20 SEP #$20 C0/C441: A2 18 00 LDX #$0018 ; $CA0018 (random battle) C0/C444: 86 E5 STX $E5 C0/C446: 8E F4 05 STX $05F4 C0/C449: A9 CA LDA #$CA C0/C44B: 85 E7 STA $E7 C0/C44D: 8D F6 05 STA $05F6 C0/C450: A2 00 00 LDX #$0000 C0/C453: 8E 94 05 STX $0594 C0/C456: A9 CA LDA #$CA C0/C458: 8D 96 05 STA $0596 C0/C45B: A9 01 LDA #$01 C0/C45D: 8D C7 05 STA $05C7 C0/C460: A2 03 00 LDX #$0003 C0/C463: 86 E8 STX $E8 C0/C465: AC 03 08 LDY $0803 C0/C468: B9 7C 08 LDA $087C,Y ; save party movement type C0/C46B: 99 7D 08 STA $087D,Y C0/C46E: A9 04 LDA #$04 ; movement type 4 (activated) C0/C470: 99 7C 08 STA $087C,Y C0/C473: A9 80 LDA #$80 C0/C475: 8D FA 11 STA $11FA ; enable map startup event C0/C478: 60 RTS ; [ Update Random Number for Random Battle ] C0/C479: DA PHX C0/C47A: EE A1 1F INC $1FA1 ; increment random number pointer C0/C47D: D0 09 BNE $C488 C0/C47F: AD A4 1F LDA $1FA4 C0/C482: 18 CLC C0/C483: 69 11 ADC #$11 ; add 17 to random number counter C0/C485: 8D A4 1F STA $1FA4 C0/C488: AD A1 1F LDA $1FA1 C0/C48B: AA TAX C0/C48C: BF 00 FD C0 LDA $C0FD00,X ; add random number to counter C0/C490: 18 CLC C0/C491: 6D A4 1F ADC $1FA4 C0/C494: FA PLX C0/C495: 60 RTS ; [ Update Random Number for Battle Group ] C0/C496: DA PHX C0/C497: EE A2 1F INC $1FA2 C0/C49A: D0 09 BNE $C4A5 C0/C49C: AD A3 1F LDA $1FA3 C0/C49F: 18 CLC C0/C4A0: 69 17 ADC #$17 C0/C4A2: 8D A3 1F STA $1FA3 C0/C4A5: AD A2 1F LDA $1FA2 C0/C4A8: AA TAX C0/C4A9: BF 00 FD C0 LDA $C0FD00,X C0/C4AD: 18 CLC C0/C4AE: 6D A3 1F ADC $1FA3 C0/C4B1: FA PLX C0/C4B2: 60 RTS ; --------------------------------------------[ Field: Menu ]------------------------------------------- ; [ Load Saved Game ] restart_game: C0/C4B3: A6 00 LDX $00 C0/C4B5: 9B TXY C0/C4B6: 7B TDC C0/C4B7: B9 00 16 LDA $1600,Y C0/C4BA: 9F C0 F1 7F STA $7FF1C0,X C0/C4BE: B9 08 16 LDA $1608,Y C0/C4C1: 9F D0 F1 7F STA $7FF1D0,X C0/C4C5: B9 11 16 LDA $1611,Y C0/C4C8: 9F E0 F1 7F STA $7FF1E0,X C0/C4CC: B9 12 16 LDA $1612,Y C0/C4CF: 9F F0 F1 7F STA $7FF1F0,X C0/C4D3: B9 13 16 LDA $1613,Y C0/C4D6: 9F 00 F2 7F STA $7FF200,X C0/C4DA: C2 21 REP #$21 C0/C4DC: 98 TYA C0/C4DD: 69 25 00 ADC #$0025 C0/C4E0: A8 TAY C0/C4E1: 7B TDC C0/C4E2: E2 20 SEP #$20 C0/C4E4: E8 INX C0/C4E5: E0 10 00 CPX #$0010 C0/C4E8: D0 CD BNE $C4B7 C0/C4EA: 20 05 05 JSR $0505 ; save direct page C0/C4ED: 8B PHB C0/C4EE: 0B PHD C0/C4EF: 08 PHP C0/C4F0: 22 0F 00 C3 JSL $C3000F ; load saved game C0/C4F4: 28 PLP C0/C4F5: 2B PLD C0/C4F6: AB PLB C0/C4F7: 20 15 05 JSR $0515 ; restore direct page C0/C4FA: 20 BF 6E JSR $6EBF ; restore map index for character objects C0/C4FD: 7B TDC C0/C4FE: AD 05 02 LDA $0205 C0/C501: F0 03 BEQ $C506 C0/C503: 4C 00 FF JMP $FF00 ; reset C0/C506: A6 00 LDX $00 C0/C508: 9B TXY C0/C509: B9 00 16 LDA $1600,Y C0/C50C: DF C0 F1 7F CMP $7FF1C0,X C0/C510: F0 03 BEQ $C515 C0/C512: 4C 4B C5 JMP $C54B C0/C515: DA PHX C0/C516: B9 08 16 LDA $1608,Y C0/C519: 3A DEC C0/C51A: 85 20 STA $20 C0/C51C: 64 21 STZ $21 C0/C51E: BF D0 F1 7F LDA $7FF1D0,X C0/C522: 99 08 16 STA $1608,Y C0/C525: 3A DEC C0/C526: 85 22 STA $22 C0/C528: 64 23 STZ $23 C0/C52A: 20 62 C5 JSR $C562 C0/C52D: 20 9B C5 JSR $C59B C0/C530: FA PLX C0/C531: BF E0 F1 7F LDA $7FF1E0,X C0/C535: 99 11 16 STA $1611,Y C0/C538: BF F0 F1 7F LDA $7FF1F0,X C0/C53C: 99 12 16 STA $1612,Y C0/C53F: BF 00 F2 7F LDA $7FF200,X C0/C543: 99 13 16 STA $1613,Y C0/C546: DA PHX C0/C547: 20 7F A1 JSR $A17F C0/C54A: FA PLX C0/C54B: C2 21 REP #$21 C0/C54D: 98 TYA C0/C54E: 69 25 00 ADC #$0025 C0/C551: A8 TAY C0/C552: 7B TDC C0/C553: E2 20 SEP #$20 C0/C555: E8 INX C0/C556: E0 10 00 CPX #$0010 C0/C559: F0 03 BEQ $C55E C0/C55B: 4C 09 C5 JMP $C509 C0/C55E: 20 F3 6C JSR $6CF3 ; update party equipment effects C0/C561: 60 RTS ; [ Update Character Max HP ] ; +$20 = previous level ; +$22 = new level recalc_hp: C0/C562: C2 20 REP #$20 C0/C564: B9 0B 16 LDA $160B,Y C0/C567: 29 FF 3F AND #$3FFF C0/C56A: 85 1E STA $1E ; +$1E = max HP C0/C56C: 7B TDC C0/C56D: E2 20 SEP #$20 C0/C56F: A6 20 LDX $20 C0/C571: E4 22 CPX $22 ; branch if not at target level C0/C573: F0 12 BEQ $C587 C0/C575: BF A0 F4 E6 LDA $E6F4A0,X ; HP progression value C0/C579: 18 CLC C0/C57A: 65 1E ADC $1E ; add to max HP C0/C57C: 85 1E STA $1E C0/C57E: A5 1F LDA $1F C0/C580: 69 00 ADC #$00 C0/C582: 85 1F STA $1F C0/C584: E8 INX C0/C585: 80 EA BRA $C571 C0/C587: A2 0F 27 LDX #$270F ; 9999 maximum C0/C58A: E4 1E CPX $1E C0/C58C: B0 02 BCS $C590 C0/C58E: 86 1E STX $1E C0/C590: C2 20 REP #$20 C0/C592: A5 1E LDA $1E C0/C594: 99 0B 16 STA $160B,Y ; set new max HP C0/C597: 7B TDC C0/C598: E2 20 SEP #$20 C0/C59A: 60 RTS ; [ Update Character Max MP ] ; +$20 = previous level ; +$22 = new level recalc_mp: C0/C59B: C2 20 REP #$20 C0/C59D: B9 0F 16 LDA $160F,Y C0/C5A0: 29 FF 3F AND #$3FFF C0/C5A3: 85 1E STA $1E ; +$1E = max MP C0/C5A5: 7B TDC C0/C5A6: E2 20 SEP #$20 C0/C5A8: A6 20 LDX $20 C0/C5AA: E4 22 CPX $22 ; branch if not at target level C0/C5AC: F0 12 BEQ $C5C0 C0/C5AE: BF 02 F5 E6 LDA $E6F502,X ; MP progression value C0/C5B2: 18 CLC C0/C5B3: 65 1E ADC $1E ; add to max MP C0/C5B5: 85 1E STA $1E C0/C5B7: A5 1F LDA $1F C0/C5B9: 69 00 ADC #$00 C0/C5BB: 85 1F STA $1F C0/C5BD: E8 INX C0/C5BE: 80 EA BRA $C5AA C0/C5C0: A2 E7 03 LDX #$03E7 ; 999 maximum C0/C5C3: E4 1E CPX $1E C0/C5C5: B0 02 BCS $C5C9 C0/C5C7: 86 1E STX $1E C0/C5C9: C2 20 REP #$20 C0/C5CB: A5 1E LDA $1E C0/C5CD: 99 0F 16 STA $160F,Y ; set new max MP C0/C5D0: 7B TDC C0/C5D1: E2 20 SEP #$20 C0/C5D3: 60 RTS ; [ Check Main Menu ] check_menu: C0/C5D4: A5 59 LDA $59 ; return if menu is already opening C0/C5D6: D0 52 BNE $C62A C0/C5D8: A5 06 LDA $06 ; return if X button not down C0/C5DA: 29 40 AND #$40 C0/C5DC: F0 4C BEQ $C62A C0/C5DE: A5 56 LDA $56 ; return if battle enabled C0/C5E0: D0 48 BNE $C62A C0/C5E2: A5 84 LDA $84 ; return map load enabled C0/C5E4: D0 44 BNE $C62A C0/C5E6: A5 4A LDA $4A ; return if fading in/out C0/C5E8: D0 40 BNE $C62A C0/C5EA: AD 5E 05 LDA $055E ; return if parties switching ??? C0/C5ED: D0 3B BNE $C62A C0/C5EF: A6 E5 LDX $E5 ; return if an event is running C0/C5F1: E0 00 00 CPX #$0000 C0/C5F4: D0 34 BNE $C62A C0/C5F6: A5 E7 LDA $E7 C0/C5F8: C9 CA CMP #$CA C0/C5FA: D0 2E BNE $C62A C0/C5FC: AC 03 08 LDY $0803 ; party object C0/C5FF: B9 7E 08 LDA $087E,Y ; return if moving C0/C602: D0 26 BNE $C62A C0/C604: B9 69 08 LDA $0869,Y ; return if between tiles C0/C607: D0 21 BNE $C62A C0/C609: B9 6A 08 LDA $086A,Y C0/C60C: 29 0F AND #$0F C0/C60E: D0 1A BNE $C62A C0/C610: B9 6C 08 LDA $086C,Y C0/C613: D0 15 BNE $C62A C0/C615: B9 6D 08 LDA $086D,Y C0/C618: 29 0F AND #$0F C0/C61A: D0 0E BNE $C62A C0/C61C: AD B8 1E LDA $1EB8 ; return if main menu is disabled C0/C61F: 29 04 AND #$04 C0/C621: D0 07 BNE $C62A C0/C623: A9 01 LDA #$01 ; open menu C0/C625: 85 59 STA $59 C0/C627: 20 56 0F JSR $0F56 ; begin fade out C0/C62A: 60 RTS ; [ Open Main Menu ] C0/C62B: A5 4A LDA $4A ; return if still fading out C0/C62D: D0 04 BNE $C633 C0/C62F: A5 59 LDA $59 ; return if not opening menu C0/C631: D0 03 BNE $C636 C0/C633: 4C 79 01 JMP $0179 C0/C636: 64 59 STZ $59 ; disable menu C0/C638: A9 00 LDA #$00 ; set menu mode to main menu C0/C63A: 8D 00 02 STA $0200 C0/C63D: AD B7 1E LDA $1EB7 ; on a save point C0/C640: 29 80 AND #$80 C0/C642: 85 1A STA $1A C0/C644: AD 21 05 LDA $0521 ; warp/x-zone enable C0/C647: 29 03 AND #$03 C0/C649: 05 1A ORA $1A C0/C64B: 8D 01 02 STA $0201 ; set menu flags C0/C64E: 20 CA C6 JSR $C6CA ; open menu C0/C651: AD 05 02 LDA $0205 C0/C654: C9 02 CMP #$02 C0/C656: F0 07 BEQ $C65F ; branch if a tent was used C0/C658: C9 03 CMP #$03 C0/C65A: F0 14 BEQ $C670 ; branch if warp/warp stone was used C0/C65C: 4C 7F 00 JMP $007F ; return to main code loop and fade in C0/C65F: A2 34 00 LDX #$0034 ; $CA0034 (tent) C0/C662: 86 E5 STX $E5 C0/C664: 8E F4 05 STX $05F4 C0/C667: A9 CA LDA #$CA C0/C669: 85 E7 STA $E7 C0/C66B: 8D F6 05 STA $05F6 C0/C66E: 80 0F BRA $C67F C0/C670: A2 39 00 LDX #$0039 ; $CA0039 (warp/warp stone) C0/C673: 86 E5 STX $E5 C0/C675: 8E F4 05 STX $05F4 C0/C678: A9 CA LDA #$CA C0/C67A: 85 E7 STA $E7 C0/C67C: 8D F6 05 STA $05F6 C0/C67F: AC 03 08 LDY $0803 ; party object C0/C682: B9 7C 08 LDA $087C,Y ; set movement type to talking/interacting C0/C685: 29 F0 AND #$F0 C0/C687: 09 04 ORA #$04 C0/C689: 99 7C 08 STA $087C,Y C0/C68C: A2 00 00 LDX #$0000 ; clear event stack C0/C68F: 8E 94 05 STX $0594 C0/C692: A9 CA LDA #$CA C0/C694: 8D 96 05 STA $0596 C0/C697: A9 01 LDA #$01 C0/C699: 8D C7 05 STA $05C7 C0/C69C: A2 03 00 LDX #$0003 C0/C69F: 86 E8 STX $E8 C0/C6A1: A4 DA LDY $DA ; current object C0/C6A3: B9 7C 08 LDA $087C,Y ; save movement type C0/C6A6: 99 7D 08 STA $087D,Y C0/C6A9: A9 04 LDA #$04 ; set movement type to talking/interacting C0/C6AB: 99 7C 08 STA $087C,Y C0/C6AE: 64 58 STZ $58 ; load new map C0/C6B0: 4C 7F 00 JMP $007F ; return to main code loop and fade in ; [ Optimize Character's Equipment ] best_equip: C0/C6B3: 20 91 70 JSR $7091 ; save character data C0/C6B6: 20 05 05 JSR $0505 ; save direct page C0/C6B9: 08 PHP C0/C6BA: 8B PHB C0/C6BB: 0B PHD C0/C6BC: 22 15 00 C3 JSL $C30015 ; optimize character equipment C0/C6C0: 2B PLD C0/C6C1: AB PLB C0/C6C2: 28 PLP C0/C6C3: 20 15 05 JSR $0515 ; restore direct page C0/C6C6: 20 77 70 JSR $7077 ; restore character data C0/C6C9: 60 RTS ; [ Open Menu ] call_menu: C0/C6CA: 20 74 03 JSR $0374 ; disable interrupts C0/C6CD: 20 91 70 JSR $7091 ; save character data C0/C6D0: 20 21 6F JSR $6F21 ; save character palettes C0/C6D3: 20 88 6E JSR $6E88 ; save map and position for character objects C0/C6D6: 20 05 05 JSR $0505 ; save direct page C0/C6D9: AE 41 05 LDX $0541 ; save scroll position C0/C6DC: 8E 66 1F STX $1F66 C0/C6DF: AE AF 00 LDX $00AF ; save party position C0/C6E2: 8E C0 1F STX $1FC0 C0/C6E5: AE 03 08 LDX $0803 ; save pointer to party object data C0/C6E8: 8E A6 1F STX $1FA6 C0/C6EB: BD 7F 08 LDA $087F,X ; save facing direction C0/C6EE: 8D 68 1F STA $1F68 C0/C6F1: A5 B2 LDA $B2 ; save z-level C0/C6F3: 8D 44 07 STA $0744 C0/C6F6: 08 PHP C0/C6F7: 8B PHB C0/C6F8: 0B PHD C0/C6F9: 22 00 00 C3 JSL $C30000 ; open menu C0/C6FD: 2B PLD C0/C6FE: AB PLB C0/C6FF: 28 PLP C0/C700: 20 74 03 JSR $0374 ; disable interrupts C0/C703: 20 15 05 JSR $0515 ; restore direct page C0/C706: 20 77 70 JSR $7077 ; restore character data C0/C709: 20 BF 6E JSR $6EBF ; restore map index for character objects C0/C70C: AD 4E 1D LDA $1D4E ; update wallpaper index C0/C70F: 29 07 AND #$07 C0/C711: 8D 65 05 STA $0565 C0/C714: A9 01 LDA #$01 ; reload the same map C0/C716: 85 58 STA $58 C0/C718: A9 80 LDA #$80 ; enable map startup event C0/C71A: 8D FA 11 STA $11FA C0/C71D: 20 73 05 JSR $0573 ; set up interrupt jump code C0/C720: 64 4C STZ $4C ; clear screen brightness C0/C722: 60 RTS ; --------------------------------------[ Field: Sprite Overlays ]-------------------------------------- ; [ Init Sprite Overlays ] init_obj_cover: C0/C723: 20 80 C8 JSR $C880 ; load sprite overlay data C0/C726: 20 2A C7 JSR $C72A ; load sprite overlay graphics C0/C729: 60 RTS ; [ Load Sprite Overlay Graphics ] trans_cover_cgx: C0/C72A: A9 80 LDA #$80 ; VRAM settings C0/C72C: 8D 15 21 STA $2115 C0/C72F: A2 00 C8 LDX #$C800 ; VRAM destination address C0/C732: 86 2D STX $2D C0/C734: A9 C0 LDA #$C0 ; C0/C800 (cover_vadrs_tbl) C0/C736: 85 2F STA $2F C0/C738: A4 00 LDY $00 C0/C73A: 5A PHY C0/C73B: B9 33 06 LDA $0633,Y ; overlay tile number (tiles are 8 bytes each) C0/C73E: C2 20 REP #$20 C0/C740: 0A ASL C0/C741: 0A ASL C0/C742: 0A ASL C0/C743: 18 CLC C0/C744: 69 A0 EE ADC #$EEA0 ; +$C0EEA0 C0/C747: 85 2A STA $2A ; ++$2A = source address C0/C749: 7B TDC C0/C74A: E2 20 SEP #$20 C0/C74C: A9 C0 LDA #$C0 C0/C74E: 85 2C STA $2C C0/C750: A4 00 LDY $00 C0/C752: C2 21 REP #$21 C0/C754: A7 2D LDA [$2D] ; set VRAM destination C0/C756: 8D 16 21 STA $2116 C0/C759: B7 2A LDA [$2A],Y ; pointer to graphics C0/C75B: AA TAX C0/C75C: 7B TDC C0/C75D: E2 20 SEP #$20 C0/C75F: BF A0 E2 C0 LDA $C0E2A0,X ; set low 8 bits only (convert 1bpp to 4bpp) C0/C763: 8D 18 21 STA $2118 C0/C766: 9C 19 21 STZ $2119 C0/C769: BF A1 E2 C0 LDA $C0E2A1,X C0/C76D: 8D 18 21 STA $2118 C0/C770: 9C 19 21 STZ $2119 C0/C773: BF A2 E2 C0 LDA $C0E2A2,X C0/C777: 8D 18 21 STA $2118 C0/C77A: 9C 19 21 STZ $2119 C0/C77D: BF A3 E2 C0 LDA $C0E2A3,X C0/C781: 8D 18 21 STA $2118 C0/C784: 9C 19 21 STZ $2119 C0/C787: BF A4 E2 C0 LDA $C0E2A4,X C0/C78B: 8D 18 21 STA $2118 C0/C78E: 9C 19 21 STZ $2119 C0/C791: BF A5 E2 C0 LDA $C0E2A5,X C0/C795: 8D 18 21 STA $2118 C0/C798: 9C 19 21 STZ $2119 C0/C79B: BF A6 E2 C0 LDA $C0E2A6,X C0/C79F: 8D 18 21 STA $2118 C0/C7A2: 9C 19 21 STZ $2119 C0/C7A5: BF A7 E2 C0 LDA $C0E2A7,X C0/C7A9: 8D 18 21 STA $2118 C0/C7AC: 9C 19 21 STZ $2119 C0/C7AF: 9C 18 21 STZ $2118 ; clear high 16 bits C0/C7B2: 9C 19 21 STZ $2119 C0/C7B5: 9C 18 21 STZ $2118 C0/C7B8: 9C 19 21 STZ $2119 C0/C7BB: 9C 18 21 STZ $2118 C0/C7BE: 9C 19 21 STZ $2119 C0/C7C1: 9C 18 21 STZ $2118 C0/C7C4: 9C 19 21 STZ $2119 C0/C7C7: 9C 18 21 STZ $2118 C0/C7CA: 9C 19 21 STZ $2119 C0/C7CD: 9C 18 21 STZ $2118 C0/C7D0: 9C 19 21 STZ $2119 C0/C7D3: 9C 18 21 STZ $2118 C0/C7D6: 9C 19 21 STZ $2119 C0/C7D9: 9C 18 21 STZ $2118 C0/C7DC: 9C 19 21 STZ $2119 C0/C7DF: C2 21 REP #$21 C0/C7E1: A5 2D LDA $2D ; next 8x8 tile C0/C7E3: 69 02 00 ADC #$0002 C0/C7E6: 85 2D STA $2D C0/C7E8: 7B TDC C0/C7E9: E2 20 SEP #$20 C0/C7EB: C8 INY C0/C7EC: C8 INY C0/C7ED: C0 08 00 CPY #$0008 C0/C7F0: F0 03 BEQ $C7F5 C0/C7F2: 4C 52 C7 JMP $C752 C0/C7F5: 7A PLY ; next 16x16 tile C0/C7F6: C8 INY C0/C7F7: C0 10 00 CPY #$0010 C0/C7FA: F0 03 BEQ $C7FF C0/C7FC: 4C 3A C7 JMP $C73A C0/C7FF: 60 RTS ; VRAM destination for overlay graphics (4 per 16x16 tile) C0/C800: .DW $6C00, $6C10, $6D00, $6D10 C0/C808: .DW $6C20, $6C30, $6D20, $6D30 C0/C810: .DW $6C40, $6C50, $6D40, $6D50 C0/C818: .DW $6C60, $6C70, $6D60, $6D70 C0/C820: .DW $6C80, $6C90, $6D80, $6D90 C0/C828: .DW $6CA0, $6CB0, $6DA0, $6DB0 C0/C830: .DW $6CC0, $6CD0, $6DC0, $6DD0 C0/C838: .DW $6CE0, $6CF0, $6DE0, $6DF0 C0/C840: .DW $6E00, $6E10, $6F00, $6F10 C0/C848: .DW $6E20, $6E30, $6F20, $6F30 C0/C850: .DW $6E40, $6E50, $6F40, $6F50 C0/C858: .DW $6E60, $6E70, $6F60, $6F70 C0/C860: .DW $6E80, $6E90, $6F80, $6F90 C0/C868: .DW $6EA0, $6EB0, $6FA0, $6FB0 C0/C870: .DW $6EC0, $6ED0, $6FC0, $6FD0 C0/C878: .DW $6EE0, $6EF0, $6FE0, $6FF0 ; [ Load Sprite Overlay Data ] extract_cover_id: C0/C880: AD 31 05 LDA $0531 ; overlay index C0/C883: 0A ASL C0/C884: AA TAX C0/C885: C2 21 REP #$21 C0/C887: BF A0 F4 C0 LDA $C0F4A0,X ; pointer to overlay data (+$C0F500) C0/C88B: 69 00 F5 ADC #$F500 C0/C88E: 85 F3 STA $F3 C0/C890: 7B TDC C0/C891: E2 20 SEP #$20 C0/C893: A9 C0 LDA #$C0 C0/C895: 85 F5 STA $F5 C0/C897: A2 33 06 LDX #$0633 ; destination address = $000633 C0/C89A: 86 F6 STX $F6 C0/C89C: A9 00 LDA #$00 C0/C89E: 85 F8 STA $F8 C0/C8A0: 22 6C 04 C0 JSL $C0046C ; decompress (16 + 256 bytes) C0/C8A4: 60 RTS ; [ Update Overlay Data ] set_obj_cover: C0/C8A5: AC 03 08 LDY $0803 C0/C8A8: B9 7C 08 LDA $087C,Y ; return if user doesn't have control of party C0/C8AB: 29 0F AND #$0F C0/C8AD: C9 02 CMP #$02 C0/C8AF: F0 01 BEQ $C8B2 C0/C8B1: 60 RTS C0/C8B2: C2 20 REP #$20 C0/C8B4: B9 6D 08 LDA $086D,Y ; get party xy position on screen C0/C8B7: 18 CLC C0/C8B8: E5 60 SBC $60 C0/C8BA: 85 28 STA $28 C0/C8BC: B9 6A 08 LDA $086A,Y C0/C8BF: 38 SEC C0/C8C0: E5 5C SBC $5C C0/C8C2: 18 CLC C0/C8C3: 69 08 00 ADC #$0008 C0/C8C6: 85 26 STA $26 C0/C8C8: 7B TDC C0/C8C9: E2 20 SEP #$20 C0/C8CB: A5 27 LDA $27 C0/C8CD: A5 29 LDA $29 C0/C8CF: A9 7E LDA #$7E ; set WRAM address to overlay data ($7E0763) C0/C8D1: 8D 83 21 STA $2183 C0/C8D4: A2 63 07 LDX #$0763 C0/C8D7: 8E 81 21 STX $2181 C0/C8DA: A5 B8 LDA $B8 ; branch if not on a stairs tile C0/C8DC: 29 C0 AND #$C0 C0/C8DE: F0 0C BEQ $C8EC C0/C8E0: A5 B8 LDA $B8 C0/C8E2: 29 04 AND #$04 C0/C8E4: F0 09 BEQ $C8EF C0/C8E6: A5 B2 LDA $B2 C0/C8E8: C9 01 CMP #$01 C0/C8EA: F0 00 BEQ $C8EC C0/C8EC: 4C 1A CA JMP $CA1A C0/C8EF: B9 7E 08 LDA $087E,Y C0/C8F2: F0 0A BEQ $C8FE C0/C8F4: C9 05 CMP #$05 C0/C8F6: B0 03 BCS $C8FB C0/C8F8: 4C 1A CA JMP $CA1A C0/C8FB: 38 SEC C0/C8FC: E9 04 SBC #$04 C0/C8FE: 85 1A STA $1A C0/C900: 0A ASL C0/C901: 0A ASL C0/C902: 0A ASL C0/C903: 18 CLC C0/C904: 65 1A ADC $1A C0/C906: 85 1A STA $1A C0/C908: AA TAX C0/C909: A5 26 LDA $26 C0/C90B: 18 CLC C0/C90C: 7F ED C9 C0 ADC $C0C9ED,X C0/C910: 8D 80 21 STA $2180 C0/C913: A5 28 LDA $28 C0/C915: 18 CLC C0/C916: 7F EE C9 C0 ADC $C0C9EE,X C0/C91A: 8D 80 21 STA $2180 C0/C91D: BF EF C9 C0 LDA $C0C9EF,X C0/C921: A8 TAY C0/C922: DA PHX C0/C923: B9 A3 00 LDA $00A3,Y C0/C926: AA TAX C0/C927: A8 TAY C0/C928: BF 00 76 7E LDA $7E7600,X C0/C92C: FA PLX C0/C92D: 29 04 AND #$04 C0/C92F: F0 05 BEQ $C936 C0/C931: A5 B2 LDA $B2 C0/C933: 3A DEC C0/C934: F0 0E BEQ $C944 C0/C936: B9 43 06 LDA $0643,Y C0/C939: C9 FF CMP #$FF C0/C93B: F0 07 BEQ $C944 C0/C93D: 29 3F AND #$3F C0/C93F: 18 CLC C0/C940: 69 C0 ADC #$C0 C0/C942: 80 01 BRA $C945 C0/C944: 7B TDC C0/C945: 8D 80 21 STA $2180 C0/C948: B9 43 06 LDA $0643,Y C0/C94B: 29 C0 AND #$C0 C0/C94D: 8D 80 21 STA $2180 C0/C950: A5 26 LDA $26 C0/C952: 18 CLC C0/C953: 7F F0 C9 C0 ADC $C0C9F0,X C0/C957: 8D 80 21 STA $2180 C0/C95A: A5 28 LDA $28 C0/C95C: 18 CLC C0/C95D: 7F F1 C9 C0 ADC $C0C9F1,X C0/C961: 8D 80 21 STA $2180 C0/C964: BF F2 C9 C0 LDA $C0C9F2,X C0/C968: A8 TAY C0/C969: DA PHX C0/C96A: B9 A3 00 LDA $00A3,Y C0/C96D: AA TAX C0/C96E: A8 TAY C0/C96F: BF 00 76 7E LDA $7E7600,X C0/C973: FA PLX C0/C974: 29 04 AND #$04 C0/C976: F0 05 BEQ $C97D C0/C978: A5 B2 LDA $B2 C0/C97A: 3A DEC C0/C97B: F0 0E BEQ $C98B C0/C97D: B9 43 06 LDA $0643,Y C0/C980: C9 FF CMP #$FF C0/C982: F0 07 BEQ $C98B C0/C984: 29 3F AND #$3F C0/C986: 18 CLC C0/C987: 69 C0 ADC #$C0 C0/C989: 80 01 BRA $C98C C0/C98B: 7B TDC C0/C98C: 8D 80 21 STA $2180 C0/C98F: B9 43 06 LDA $0643,Y C0/C992: 29 C0 AND #$C0 C0/C994: 8D 80 21 STA $2180 C0/C997: A5 26 LDA $26 C0/C999: 18 CLC C0/C99A: 7F F3 C9 C0 ADC $C0C9F3,X C0/C99E: 8D 80 21 STA $2180 C0/C9A1: A5 28 LDA $28 C0/C9A3: 18 CLC C0/C9A4: 7F F4 C9 C0 ADC $C0C9F4,X C0/C9A8: 8D 80 21 STA $2180 C0/C9AB: BF F5 C9 C0 LDA $C0C9F5,X C0/C9AF: A8 TAY C0/C9B0: DA PHX C0/C9B1: B9 A3 00 LDA $00A3,Y C0/C9B4: AA TAX C0/C9B5: A8 TAY C0/C9B6: BF 00 76 7E LDA $7E7600,X C0/C9BA: FA PLX C0/C9BB: 29 04 AND #$04 C0/C9BD: F0 05 BEQ $C9C4 C0/C9BF: A5 B2 LDA $B2 C0/C9C1: 3A DEC C0/C9C2: F0 0E BEQ $C9D2 C0/C9C4: B9 43 06 LDA $0643,Y C0/C9C7: C9 FF CMP #$FF C0/C9C9: F0 07 BEQ $C9D2 C0/C9CB: 29 3F AND #$3F C0/C9CD: 18 CLC C0/C9CE: 69 C0 ADC #$C0 C0/C9D0: 80 01 BRA $C9D3 C0/C9D2: 7B TDC C0/C9D3: 8D 80 21 STA $2180 C0/C9D6: B9 43 06 LDA $0643,Y C0/C9D9: 29 C0 AND #$C0 C0/C9DB: 8D 80 21 STA $2180 C0/C9DE: A9 EF LDA #$EF C0/C9E0: 8D 80 21 STA $2180 C0/C9E3: 8D 80 21 STA $2180 C0/C9E6: 8D 80 21 STA $2180 C0/C9E9: 8D 80 21 STA $2180 C0/C9EC: 60 RTS C0/C9ED: .DB $00, $00, $07, $10, $F0, $05, $10, $00, $08 C0/C9F6: .DB $10, $00, $05, $00, $10, $07, $10, $10, $08 C0/C9FF: .DB $00, $00, $07, $00, $10, $0A, $10, $10, $0B C0/CA08: .DB $10, $00, $07, $10, $10, $0A, $00, $10, $09 C0/CA11: .DB $10, $10, $07, $00, $00, $03, $00, $10, $06 ; not on a stairs tile C0/CA1A: A5 B8 LDA $B8 ; tile properties C0/CA1C: 29 04 AND #$04 C0/CA1E: F0 07 BEQ $CA27 ; branch if not a bridge tile C0/CA20: A5 B2 LDA $B2 C0/CA22: 3A DEC C0/CA23: F0 39 BEQ $CA5E ; branch if party is on upper z-level C0/CA25: 80 1B BRA $CA42 ; party is not on a bridge tile C0/CA27: A5 AA LDA $AA ; tile number C0/CA29: A8 TAY C0/CA2A: B9 43 06 LDA $0643,Y ; overlay tile formation C0/CA2D: C9 FF CMP #$FF C0/CA2F: F0 2D BEQ $CA5E ; branch if no overlay tile C0/CA31: 85 1A STA $1A C0/CA33: 29 3F AND #$3F ; tile index bits C0/CA35: 18 CLC C0/CA36: 69 C0 ADC #$C0 C0/CA38: 85 1B STA $1B C0/CA3A: A5 1A LDA $1A C0/CA3C: 29 C0 AND #$C0 ; vh flip bits (lower z-level) C0/CA3E: 85 1A STA $1A C0/CA40: 80 22 BRA $CA64 ; party is not on upper z-level C0/CA42: A5 AA LDA $AA ; tile number C0/CA44: A8 TAY C0/CA45: B9 43 06 LDA $0643,Y ; overlay tile formation C0/CA48: C9 FF CMP #$FF C0/CA4A: F0 12 BEQ $CA5E ; branch if no overlay tile C0/CA4C: 85 1A STA $1A C0/CA4E: 29 3F AND #$3F ; tile index bits C0/CA50: 18 CLC C0/CA51: 69 C0 ADC #$C0 C0/CA53: 85 1B STA $1B C0/CA55: A5 1A LDA $1A C0/CA57: 29 C0 AND #$C0 ; vh flip bits C0/CA59: 1A INC ; upper z-level C0/CA5A: 85 1A STA $1A C0/CA5C: 80 06 BRA $CA64 ; party is on upper z-level C0/CA5E: A9 01 LDA #$01 ; +$1A = #$0001 (no overlay tile) C0/CA60: 85 1A STA $1A C0/CA62: 64 1B STZ $1B C0/CA64: AD 74 00 LDA $0074 ; horizontal scroll speed C0/CA67: 10 07 BPL $CA70 C0/CA69: A5 26 LDA $26 ; tile x position C0/CA6B: 18 CLC C0/CA6C: 69 10 ADC #$10 C0/CA6E: 85 26 STA $26 C0/CA70: A5 26 LDA $26 C0/CA72: 8D 80 21 STA $2180 C0/CA75: AD 76 00 LDA $0076 ; vertical scroll speed C0/CA78: 10 07 BPL $CA81 C0/CA7A: A5 28 LDA $28 ; tile y position C0/CA7C: 18 CLC C0/CA7D: 69 10 ADC #$10 C0/CA7F: 85 28 STA $28 C0/CA81: A5 28 LDA $28 C0/CA83: 8D 80 21 STA $2180 C0/CA86: A5 1B LDA $1B ; tile index C0/CA88: 8D 80 21 STA $2180 C0/CA8B: A5 1A LDA $1A ; vh flip and priority C0/CA8D: 8D 80 21 STA $2180 C0/CA90: A5 B8 LDA $B8 ; C0/CA92: 29 04 AND #$04 C0/CA94: F0 07 BEQ $CA9D C0/CA96: A5 B2 LDA $B2 C0/CA98: 3A DEC C0/CA99: F0 68 BEQ $CB03 C0/CA9B: 80 4A BRA $CAE7 ; C0/CA9D: A5 B8 LDA $B8 ; tile z-level C0/CA9F: 29 03 AND #$03 C0/CAA1: C9 02 CMP #$02 C0/CAA3: F0 11 BEQ $CAB6 ; branch if lower C0/CAA5: C9 03 CMP #$03 C0/CAA7: F0 17 BEQ $CAC0 ; branch if transition C0/CAA9: A5 B6 LDA $B6 C0/CAAB: C9 F7 CMP #$F7 C0/CAAD: F0 1D BEQ $CACC C0/CAAF: 29 07 AND #$07 C0/CAB1: 3A DEC C0/CAB2: F0 18 BEQ $CACC C0/CAB4: 80 4D BRA $CB03 ; C0/CAB6: A5 B6 LDA $B6 ; top tile z-layer C0/CAB8: 29 07 AND #$07 C0/CABA: C9 01 CMP #$01 C0/CABC: F0 45 BEQ $CB03 ; branch if upper z-level C0/CABE: 80 0C BRA $CACC ; C0/CAC0: A5 B6 LDA $B6 C0/CAC2: C9 F7 CMP #$F7 C0/CAC4: F0 06 BEQ $CACC C0/CAC6: 29 02 AND #$02 C0/CAC8: D0 02 BNE $CACC C0/CACA: 80 37 BRA $CB03 ; C0/CACC: A5 A7 LDA $A7 C0/CACE: A8 TAY C0/CACF: B9 43 06 LDA $0643,Y C0/CAD2: C9 FF CMP #$FF C0/CAD4: F0 2D BEQ $CB03 C0/CAD6: 85 1A STA $1A C0/CAD8: 29 3F AND #$3F C0/CADA: 18 CLC C0/CADB: 69 C0 ADC #$C0 C0/CADD: 85 1B STA $1B C0/CADF: A5 1A LDA $1A C0/CAE1: 29 C0 AND #$C0 C0/CAE3: 85 1A STA $1A C0/CAE5: 80 22 BRA $CB09 ; C0/CAE7: A5 A7 LDA $A7 C0/CAE9: A8 TAY C0/CAEA: B9 43 06 LDA $0643,Y C0/CAED: C9 FF CMP #$FF C0/CAEF: F0 12 BEQ $CB03 C0/CAF1: 85 1A STA $1A C0/CAF3: 29 3F AND #$3F C0/CAF5: 18 CLC C0/CAF6: 69 C0 ADC #$C0 C0/CAF8: 85 1B STA $1B C0/CAFA: A5 1A LDA $1A C0/CAFC: 29 C0 AND #$C0 C0/CAFE: 1A INC C0/CAFF: 85 1A STA $1A C0/CB01: 80 06 BRA $CB09 ; no top overlay tile C0/CB03: A9 01 LDA #$01 C0/CB05: 85 1A STA $1A C0/CB07: 64 1B STZ $1B C0/CB09: A5 26 LDA $26 C0/CB0B: 8D 80 21 STA $2180 C0/CB0E: A5 28 LDA $28 C0/CB10: 38 SEC C0/CB11: E9 10 SBC #$10 C0/CB13: 8D 80 21 STA $2180 C0/CB16: A5 1B LDA $1B C0/CB18: 8D 80 21 STA $2180 C0/CB1B: A5 1A LDA $1A C0/CB1D: 8D 80 21 STA $2180 C0/CB20: AC 03 08 LDY $0803 C0/CB23: B9 7E 08 LDA $087E,Y C0/CB26: AA TAX C0/CB27: BF 73 CC C0 LDA $C0CC73,X C0/CB2B: AA TAX C0/CB2C: 86 2A STX $2A C0/CB2E: B9 7E 08 LDA $087E,Y C0/CB31: F0 61 BEQ $CB94 C0/CB33: BF 7F CC C0 LDA $C0CC7F,X C0/CB37: AA TAX C0/CB38: B5 A3 LDA $A3,X C0/CB3A: AA TAX C0/CB3B: BF 00 76 7E LDA $7E7600,X C0/CB3F: 85 1E STA $1E C0/CB41: 29 04 AND #$04 C0/CB43: F0 16 BEQ $CB5B C0/CB45: A5 B8 LDA $B8 C0/CB47: 29 04 AND #$04 C0/CB49: F0 07 BEQ $CB52 C0/CB4B: A5 B2 LDA $B2 C0/CB4D: 3A DEC C0/CB4E: F0 44 BEQ $CB94 C0/CB50: 80 29 BRA $CB7B C0/CB52: A5 B8 LDA $B8 C0/CB54: 29 03 AND #$03 C0/CB56: 3A DEC C0/CB57: F0 3B BEQ $CB94 C0/CB59: 80 20 BRA $CB7B ; C0/CB5B: A5 B8 LDA $B8 C0/CB5D: 29 04 AND #$04 C0/CB5F: 80 02 BRA $CB63 ; C0/CB61: 80 E8 BRA $CB4B ; C0/CB63: BD 43 06 LDA $0643,X C0/CB66: C9 FF CMP #$FF C0/CB68: F0 2A BEQ $CB94 C0/CB6A: 85 1A STA $1A C0/CB6C: 29 3F AND #$3F C0/CB6E: 18 CLC C0/CB6F: 69 C0 ADC #$C0 C0/CB71: 85 1B STA $1B C0/CB73: A5 1A LDA $1A C0/CB75: 29 C0 AND #$C0 C0/CB77: 85 1A STA $1A C0/CB79: 80 1F BRA $CB9A ; C0/CB7B: BD 43 06 LDA $0643,X C0/CB7E: C9 FF CMP #$FF C0/CB80: F0 12 BEQ $CB94 C0/CB82: 85 1A STA $1A C0/CB84: 29 3F AND #$3F C0/CB86: 18 CLC C0/CB87: 69 C0 ADC #$C0 C0/CB89: 85 1B STA $1B C0/CB8B: A5 1A LDA $1A C0/CB8D: 29 C0 AND #$C0 C0/CB8F: 1A INC C0/CB90: 85 1A STA $1A C0/CB92: 80 06 BRA $CB9A ; C0/CB94: A9 01 LDA #$01 C0/CB96: 85 1A STA $1A C0/CB98: 64 1B STZ $1B C0/CB9A: A6 2A LDX $2A C0/CB9C: A5 26 LDA $26 C0/CB9E: 18 CLC C0/CB9F: 7F 7D CC C0 ADC $C0CC7D,X C0/CBA3: 8D 80 21 STA $2180 C0/CBA6: A5 28 LDA $28 C0/CBA8: 18 CLC C0/CBA9: 7F 7E CC C0 ADC $C0CC7E,X C0/CBAD: 8D 80 21 STA $2180 C0/CBB0: A5 1B LDA $1B C0/CBB2: 8D 80 21 STA $2180 C0/CBB5: A5 1A LDA $1A C0/CBB7: 8D 80 21 STA $2180 C0/CBBA: AC 03 08 LDY $0803 C0/CBBD: B9 7E 08 LDA $087E,Y C0/CBC0: D0 03 BNE $CBC5 C0/CBC2: 4C 4C CC JMP $CC4C ; C0/CBC5: BF 82 CC C0 LDA $C0CC82,X C0/CBC9: AA TAX C0/CBCA: B5 A3 LDA $A3,X C0/CBCC: AA TAX C0/CBCD: A5 1E LDA $1E C0/CBCF: 29 04 AND #$04 C0/CBD1: F0 13 BEQ $CBE6 C0/CBD3: A5 B8 LDA $B8 C0/CBD5: 29 07 AND #$07 C0/CBD7: C9 01 CMP #$01 C0/CBD9: F0 71 BEQ $CC4C C0/CBDB: C9 02 CMP #$02 C0/CBDD: F0 54 BEQ $CC33 C0/CBDF: A5 B2 LDA $B2 C0/CBE1: 3A DEC C0/CBE2: F0 68 BEQ $CC4C C0/CBE4: 80 4D BRA $CC33 ; C0/CBE6: A5 1E LDA $1E C0/CBE8: 29 03 AND #$03 C0/CBEA: C9 02 CMP #$02 C0/CBEC: F0 13 BEQ $CC01 C0/CBEE: C9 03 CMP #$03 C0/CBF0: F0 1B BEQ $CC0D C0/CBF2: BF 00 76 7E LDA $7E7600,X C0/CBF6: C9 F7 CMP #$F7 C0/CBF8: F0 21 BEQ $CC1B C0/CBFA: 29 07 AND #$07 C0/CBFC: 3A DEC C0/CBFD: F0 1C BEQ $CC1B C0/CBFF: 80 4B BRA $CC4C ; C0/CC01: BF 00 76 7E LDA $7E7600,X C0/CC05: 29 07 AND #$07 C0/CC07: C9 01 CMP #$01 C0/CC09: F0 41 BEQ $CC4C C0/CC0B: 80 0E BRA $CC1B ; C0/CC0D: BF 00 76 7E LDA $7E7600,X C0/CC11: C9 F7 CMP #$F7 C0/CC13: F0 06 BEQ $CC1B C0/CC15: 29 02 AND #$02 C0/CC17: D0 02 BNE $CC1B C0/CC19: 80 31 BRA $CC4C ; C0/CC1B: BD 43 06 LDA $0643,X C0/CC1E: C9 FF CMP #$FF C0/CC20: F0 2A BEQ $CC4C C0/CC22: 85 1A STA $1A C0/CC24: 29 3F AND #$3F C0/CC26: 18 CLC C0/CC27: 69 C0 ADC #$C0 C0/CC29: 85 1B STA $1B C0/CC2B: A5 1A LDA $1A C0/CC2D: 29 C0 AND #$C0 C0/CC2F: 85 1A STA $1A C0/CC31: 80 1F BRA $CC52 ; C0/CC33: BD 43 06 LDA $0643,X C0/CC36: C9 FF CMP #$FF C0/CC38: F0 12 BEQ $CC4C C0/CC3A: 85 1A STA $1A C0/CC3C: 29 3F AND #$3F C0/CC3E: 18 CLC C0/CC3F: 69 C0 ADC #$C0 C0/CC41: 85 1B STA $1B C0/CC43: A5 1A LDA $1A C0/CC45: 29 C0 AND #$C0 C0/CC47: 1A INC C0/CC48: 85 1A STA $1A C0/CC4A: 80 06 BRA $CC52 ; C0/CC4C: A9 01 LDA #$01 C0/CC4E: 85 1A STA $1A C0/CC50: 64 1B STZ $1B C0/CC52: A6 2A LDX $2A C0/CC54: A5 26 LDA $26 C0/CC56: 18 CLC C0/CC57: 7F 80 CC C0 ADC $C0CC80,X C0/CC5B: 8D 80 21 STA $2180 C0/CC5E: A5 28 LDA $28 C0/CC60: 18 CLC C0/CC61: 7F 81 CC C0 ADC $C0CC81,X C0/CC65: 8D 80 21 STA $2180 C0/CC68: A5 1B LDA $1B C0/CC6A: 8D 80 21 STA $2180 C0/CC6D: A5 1A LDA $1A C0/CC6F: 8D 80 21 STA $2180 C0/CC72: 60 RTS C0/CC73: .DB $00, $00, $06, $0C, $12, $18, $1E, $24, $2A, $30 C0/CC7D: .DB $00, $F0, $04, $00, $E0, $01 C0/CC83: .DB $10, $00, $08, $10, $F0, $05 C0/CC89: .DB $00, $10, $0A, $00, $00, $07 C0/CC8F: .DB $F0, $00, $06, $F0, $F0, $03 ; [ Update Overlay Sprite Data ] move_obj_cover: C0/CC95: A6 00 LDX $00 C0/CC97: 9B TXY C0/CC98: A5 74 LDA $74 ; horizontal scroll speed C0/CC9A: F0 0C BEQ $CCA8 C0/CC9C: 30 0A BMI $CCA8 ; branch if not positive C0/CC9E: A5 5C LDA $5C ; horizontal scroll position C0/CCA0: 3A DEC C0/CCA1: 29 0F AND #$0F C0/CCA3: 1A INC C0/CCA4: 49 FF EOR #$FF C0/CCA6: 80 06 BRA $CCAE C0/CCA8: A5 5C LDA $5C C0/CCAA: 29 0F AND #$0F C0/CCAC: 49 FF EOR #$FF C0/CCAE: 38 SEC C0/CCAF: 7D 63 07 ADC $0763,X ; add overlay tile x position C0/CCB2: 85 1A STA $1A C0/CCB4: A5 76 LDA $76 ; vertical scroll speed C0/CCB6: F0 0C BEQ $CCC4 C0/CCB8: 30 0A BMI $CCC4 ; branch if not positive C0/CCBA: A5 60 LDA $60 ; vertical scroll position C0/CCBC: 3A DEC C0/CCBD: 29 0F AND #$0F C0/CCBF: 1A INC C0/CCC0: 49 FF EOR #$FF C0/CCC2: 80 06 BRA $CCCA C0/CCC4: A5 60 LDA $60 C0/CCC6: 29 0F AND #$0F C0/CCC8: 49 FF EOR #$FF C0/CCCA: 38 SEC C0/CCCB: 7D 64 07 ADC $0764,X ; add overlay tile y position C0/CCCE: 38 SEC C0/CCCF: E5 7F SBC $7F ; subtract shake screen offset C0/CCD1: 85 1B STA $1B C0/CCD3: BD 65 07 LDA $0765,X ; overlay tile number C0/CCD6: F0 43 BEQ $CD1B ; 0 = no tile C0/CCD8: BD 66 07 LDA $0766,X C0/CCDB: 29 01 AND #$01 C0/CCDD: D0 1F BNE $CCFE ; branch if lower z-level C0/CCDF: A5 1A LDA $1A ; set sprite data for upper z-level overlay sprite C0/CCE1: 99 E0 03 STA $03E0,Y C0/CCE4: A5 1B LDA $1B C0/CCE6: 99 E1 03 STA $03E1,Y C0/CCE9: BD 65 07 LDA $0765,X C0/CCEC: 99 E2 03 STA $03E2,Y C0/CCEF: BD 66 07 LDA $0766,X C0/CCF2: 29 CE AND #$CE C0/CCF4: 99 E3 03 STA $03E3,Y C0/CCF7: A9 EF LDA #$EF ; hide lower z-level overlay sprite C0/CCF9: 99 A1 04 STA $04A1,Y C0/CCFC: 80 1D BRA $CD1B C0/CCFE: A5 1A LDA $1A ; set sprite data for lower z-level overlay sprite C0/CD00: 99 A0 04 STA $04A0,Y C0/CD03: A5 1B LDA $1B C0/CD05: 99 A1 04 STA $04A1,Y C0/CD08: BD 65 07 LDA $0765,X C0/CD0B: 99 A2 04 STA $04A2,Y C0/CD0E: BD 66 07 LDA $0766,X C0/CD11: 29 CE AND #$CE C0/CD13: 99 A3 04 STA $04A3,Y C0/CD16: A9 EF LDA #$EF ; hide upper z-level overlay sprite C0/CD18: 99 E1 03 STA $03E1,Y C0/CD1B: C8 INY ; next tile C0/CD1C: C8 INY C0/CD1D: C8 INY C0/CD1E: C8 INY C0/CD1F: E8 INX C0/CD20: E8 INX C0/CD21: E8 INX C0/CD22: E8 INX C0/CD23: E0 10 00 CPX #$0010 C0/CD26: F0 03 BEQ $CD2B C0/CD28: 4C 98 CC JMP $CC98 C0/CD2B: 60 RTS ; [ Clear Overlay Tiles ] C0/CD2C: 7B TDC C0/CD2D: 8D 65 07 STA $0765 C0/CD30: 8D 69 07 STA $0769 C0/CD33: 8D 6D 07 STA $076D C0/CD36: 8D 71 07 STA $0771 C0/CD39: 60 RTS ; ----------------------------------------[ Field: Sprite Data ]---------------------------------------- ; horizontal flip flag for object graphics positions (upper sprite) C0/CD3A: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CD4A: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CD5A: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CD6A: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CD7A: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 C0/CD8A: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 C0/CD9A: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 C0/CDAA: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 ; horizontal flip flag for object graphics positions (lower sprite) C0/CDBA: .DB $00, $00, $40, $00, $00, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CDCA: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CDDA: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CDEA: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/CDFA: .DB $40, $40, $40, $00, $40, $00, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 C0/CE0A: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 C0/CE1A: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 C0/CE2A: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 ; object sprite tile formation OBJ_CHARACTER_TBL: C0/CE3A: .DW $0000, $0020, $0040, $0060, $0080, $00A0 ; $00 C0/CE46: .DW $0000, $0020, $00C0, $00E0, $0100, $0120 C0/CE52: .DW $0000, $0020, $0140, $0160, $0080, $00A0 C0/CE5E: .DW $0180, $01A0, $01C0, $01E0, $0200, $0220 C0/CE6A: .DW $0180, $01A0, $0240, $0260, $0280, $02A0 C0/CE76: .DW $0180, $01A0, $02C0, $02E0, $0200, $0220 C0/CE82: .DW $0300, $0320, $0340, $0360, $0380, $03A0 C0/CE8E: .DW $03C0, $03E0, $0400, $0420, $0440, $0460 C0/CE9A: .DW $0300, $0320, $0480, $04A0, $04C0, $04E0 ; $08 C0/CEA6: .DW $0700, $0720, $0740, $0760, $0780, $07A0 C0/CEB2: .DW $07C0, $07E0, $0800, $0820, $0840, $0860 C0/CEBE: .DW $0880, $08A0, $08C0, $08E0, $0900, $0920 C0/CECA: .DW $03C0, $03E0, $0500, $0520, $0540, $0560 C0/CED6: .DW $0300, $0320, $0580, $0360, $05A0, $03A0 C0/CEE2: .DW $0300, $05C0, $05E0, $0600, $0620, $0640 C0/CEEE: .DW $03C0, $0660, $0680, $06A0, $06C0, $06E0 C0/CEFA: .DW $0940, $0960, $0980, $09A0, $09C0, $09E0 ; $10 C0/CF06: .DW $0940, $0960, $0A00, $09A0, $09C0, $09E0 C0/CF12: .DW $0A20, $0A40, $0A60, $0A80, $0AA0, $0AC0 C0/CF1E: .DW $0000, $0020, $0BA0, $0BC0, $0100, $0120 C0/CF2A: .DW $0000, $0020, $00C0, $0BE0, $0100, $0120 C0/CF36: .DW $12C0, $03E0, $12E0, $0420, $0440, $0460 C0/CF42: .DW $0D40, $0D60, $0D80, $0DA0, $0DC0, $0DE0 C0/CF4E: .DW $0E00, $0E20, $0E40, $0E60, $0E80, $0EA0 C0/CF5A: .DW $0EC0, $0EE0, $0F00, $0F20, $0F40, $0F60 ; $18 C0/CF66: .DW $0D40, $0020, $0D80, $00E0, $0DC0, $0120 C0/CF72: .DW $1040, $0020, $1060, $00E0, $0DC0, $0120 C0/CF7E: .DW $0180, $0E20, $0240, $0E60, $0280, $0EA0 C0/CF8A: .DW $0180, $1080, $0240, $10A0, $0280, $0EA0 C0/CF96: .DW $0C00, $0C20, $0C40, $0C60, $0C80, $0CA0 C0/CFA2: .DW $0CC0, $0CE0, $0D00, $0D20, $0C80, $0CA0 C0/CFAE: .DW $0F80, $0FA0, $0FC0, $0FE0, $1000, $1020 C0/CFBA: .DW $10C0, $10E0, $1100, $1120, $0100, $0120 ; $20 C0/CFC6: .DW $1140, $1160, $1180, $11A0, $0280, $02A0 C0/CFD2: .DW $11C0, $11E0, $1200, $1220, $0440, $0460 C0/CFDE: .DW $1240, $1260, $1280, $12A0, $0100, $0120 C0/CFEA: .DW $1460, $1480, $1300, $1320, $1340, $1360 C0/CFF6: .DW $1460, $1480, $1380, $1320, $1340, $1360 C0/D002: .DW $13A0, $13C0, $13E0, $1400, $1420, $1440 C0/D00E: .DW $14A0, $14C0, $14E0, $1500, $1520, $1540 C0/D01A: .DW $0A20, $0A40, $0A60, $0A80, $0AA0, $0AC0 ; $28 (alt. knocked out) C0/D026: .DW $0620, $0640, $0660, $0680, $06A0, $06C0 ; $29 (misc. npc's: special) C0/D032: .DW $0500, $0020, $0520, $00E0, $0540, $0120 ; $2A (misc. npc's: waving 1) C0/D03E: .DW $0560, $0020, $0580, $00E0, $0540, $0120 ; $2B (misc. npc's: waving 1) C0/D04A: .DW $05A0, $05C0, $05E0, $0600, $0100, $0120 ; $2C (misc. npc's: head down, facing down) C0/D056: .DW $0500, $0520, $0540, $0560, $0580, $05A0 ; $2D (misc. npc's: special) C0/D062: .DW $1620, $1640, $1660, $1680, $15E0, $1600 ; $2E (riding 1) C0/D06E: .DW $1560, $1580, $15A0, $15C0, $15E0, $1600 ; $2F (riding 2) C0/D07A: .DW $00C0, $0020, $00E0, $0060, $0100, $00A0 ; $30 (ramuh: staff raised) C0/D086: .DW $0120, $0140, $0040, $0060, $0080, $00A0 ; $31 (ramuh: eyes closed) C0/D092: .DW $0000, $0000, $0020, $0040, $0060, $0080 ; $32 (special animation frame 1) C0/D09E: .DW $0000, $0000, $00A0, $00C0, $00E0, $0100 ; $33 (special animation frame 2) C0/D0AA: .DW $0000, $0000, $0120, $0140, $0160, $0180 ; $34 (special animation frame 3) C0/D0B6: .DW $0000, $0000, $01A0, $01C0, $01E0, $0200 ; $35 (special animation frame 4) C0/D0C2: .DW $05C0, $05E0, $0600, $0620, $0640, $0660 ; $36 (opera singing: mouth open) C0/D0CE: .DW $0680, $06A0, $06C0, $06E0, $0640, $0660 ; $37 (opera singing: mouth closed) C0/D0DA: .DW $0680, $06A0, $06C0, $06E0, $0640, $0660 ; $38 (opera singing: unused) C0/D0E6: .DW $0000, $0020, $0040, $0040, $0040, $0040 ; $39 (unused) ; pointers to object sprite graphics (lower 2 bytes) OBJ_CHAR_OFFSET_L: C0/D0F2: .DW $0000, $16A0, $2D40, $43E0, $5A80, $7120, $87C0, $9E60 C0/D102: .DW $B500, $CBA0, $E240, $F8E0, $0F80, $2620, $3CC0, $5360 C0/D112: .DW $6A00, $7F60, $94C0, $AA20, $BF80, $D4E0, $EA40, $F120 C0/D122: .DW $F800, $FEE0, $05C0, $0CC0, $13C0, $1AC0, $2080, $2640 C0/D132: .DW $2C00, $31C0, $3780, $3D40, $4300, $48C0, $4E80, $5440 C0/D142: .DW $5A00, $5FC0, $6580, $6B40, $7100, $76C0, $7C80, $8240 C0/D152: .DW $8800, $8DC0, $92C0, $97C0, $9CC0, $A1C0, $A6C0, $ABC0 C0/D162: .DW $B0C0, $B5C0, $BAC0, $BFC0, $C4C0, $C9C0, $CEC0, $D3C0 C0/D172: .DW $D520, $D660, $D720, $D7E0, $D8A0, $D960, $DA20, $DAE0 C0/D182: .DW $DBA0, $DC60, $DD20, $DDE0, $DEA0, $DF60, $E020, $E0E0 C0/D192: .DW $E1A0, $E260, $E320, $E3E0, $E4A0, $E560, $E620, $E6E0 C0/D1A2: .DW $E780, $E820, $E8C0, $E960, $EA00, $EAA0, $EB40, $EBE0 C0/D1B2: .DW $EC80, $ED20, $EDC0, $EE60, $EF00, $EFA0, $F040, $F160 C0/D1C2: .DW $F280, $F3A0, $F4C0, $F5E0, $F700, $F820, $F940, $FA60 C0/D1D2: .DW $FC80, $FEA0, $00C0, $02E0, $0500, $0580, $0600, $0680 C0/D1E2: .DW $0700, $0900, $0980, $0A00, $0A80, $0B00, $0B80, $0C00 C0/D1F2: .DW $0C80, $0D00, $0D80, $0E00, $0E80, $0F00, $1100, $1300 C0/D202: .DW $1380, $1400, $1480, $1500, $1580, $1600, $1680, $1700 C0/D212: .DW $1900, $1980, $1A00, $1A80, $1B00, $1D00, $1F00, $1F80 C0/D222: .DW $2000, $2100, $2300, $2500, $2700, $2900, $2B00, $2B80 C0/D232: .DW $2C00, $2C80, $2D00, $2E00, $2F00 ; pointers to object sprite graphics, tile size (upper 2 bytes) ; the high byte gets copied to dma reg $4305 and determines the number of bytes per tile OBJ_CHAR_OFFSET_H: C0/D23C: .DW $20D5, $20D5, $20D5, $20D5, $20D5, $20D5, $20D5, $20D5 C0/D24C: .DW $20D5, $20D5, $20D5, $20D5, $20D6, $20D6, $20D6, $20D6 C0/D25C: .DW $20D6, $20D6, $20D6, $20D6, $20D6, $20D6, $20D6, $20D6 C0/D26C: .DW $20D6, $20D6, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D27C: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D28C: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D29C: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D2AC: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D2BC: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D2CC: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D2DC: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D2EC: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D2FC: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D30C: .DW $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7, $20D7 C0/D31C: .DW $20D7, $20D7, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8 C0/D32C: .DW $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8 C0/D33C: .DW $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8 C0/D34C: .DW $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8 C0/D35C: .DW $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8 C0/D36C: .DW $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8, $20D8 C0/D37C: .DW $20D8, $20D8, $20D8, $20D8, $20D8 ; ----------------------------------------[ Field: Debug Mode ]----------------------------------------- ; tile numbers for digits 0-9 and A-F C0/D386: .DB $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $78, $79, $7A, $7B, $7C, $7D, $7E, $7F, $FF ; [ ] C0/D397: A6 E5 LDX $E5 C0/D399: E0 00 00 CPX #$0000 C0/D39C: D0 3F BNE $D3DD C0/D39E: A5 E7 LDA $E7 C0/D3A0: C9 CA CMP #$CA C0/D3A2: D0 39 BNE $D3DD ; return if an event is running C0/D3A4: AD 68 18 LDA $1868 C0/D3A7: C9 10 CMP #$10 C0/D3A9: 90 32 BCC $D3DD ; return if less than 16 steps C0/D3AB: A2 4A 00 LDX #$004A ; $CA004A (invalid event address) C0/D3AE: 86 E5 STX $E5 C0/D3B0: 8E F4 05 STX $05F4 C0/D3B3: A9 CA LDA #$CA C0/D3B5: 85 E7 STA $E7 C0/D3B7: 8D F6 05 STA $05F6 C0/D3BA: A2 00 00 LDX #$0000 C0/D3BD: 8E 94 05 STX $0594 ; event stack = $CA0000 C0/D3C0: A9 CA LDA #$CA C0/D3C2: 8D 96 05 STA $0596 C0/D3C5: A9 01 LDA #$01 C0/D3C7: 8D C7 05 STA $05C7 ; event loop count = 1 C0/D3CA: A2 03 00 LDX #$0003 C0/D3CD: 86 E8 STX $E8 ; stack event pointer C0/D3CF: AC 03 08 LDY $0803 ; party object C0/D3D2: B9 7C 08 LDA $087C,Y ; save movement type C0/D3D5: 99 7D 08 STA $087D,Y C0/D3D8: A9 04 LDA #$04 ; movement type 4 (activated) C0/D3DA: 99 7C 08 STA $087C,Y C0/D3DD: 60 RTS ; [ Load Text Graphics for Debug Mode ] C0/D3DE: 9C 0B 42 STZ $420B ; disable dma C0/D3E1: A9 80 LDA #$80 C0/D3E3: 8D 15 21 STA $2115 C0/D3E6: A9 18 LDA #$18 C0/D3E8: 8D 01 43 STA $4301 C0/D3EB: A9 41 LDA #$41 C0/D3ED: 8D 00 43 STA $4300 C0/D3F0: A2 C0 39 LDX #$39C0 ; destination = $39C0 (vram, bg3 dialog text graphics) C0/D3F3: 8E 16 21 STX $2116 C0/D3F6: A2 20 E1 LDX #$E120 ; source = $C0E120 (fixed width font graphics) C0/D3F9: 8E 02 43 STX $4302 C0/D3FC: A9 C0 LDA #$C0 C0/D3FE: 8D 04 43 STA $4304 C0/D401: 8D 07 43 STA $4307 C0/D404: A2 80 00 LDX #$0080 ; size = $0080 C0/D407: 8E 05 43 STX $4305 C0/D40A: A9 01 LDA #$01 ; enable dma C0/D40C: 8D 0B 42 STA $420B C0/D40F: A2 C0 3B LDX #$3BC0 ; destination = $3BC0 (vram, bg3 dialog text graphics) C0/D412: 8E 16 21 STX $2116 C0/D415: A2 A0 E1 LDX #$E1A0 ; source = $C0E1A0 (fixed width font graphics) C0/D418: 8E 02 43 STX $4302 C0/D41B: A9 C0 LDA #$C0 C0/D41D: 8D 04 43 STA $4304 C0/D420: 8D 07 43 STA $4307 C0/D423: A2 80 00 LDX #$0080 ; size = $0080 C0/D426: 8E 05 43 STX $4305 C0/D429: A9 01 LDA #$01 ; enable dma C0/D42B: 8D 0B 42 STA $420B C0/D42E: A2 C0 3D LDX #$3DC0 ; destination = $3DC0 (vram, bg3 dialog text graphics) C0/D431: 8E 16 21 STX $2116 C0/D434: A2 20 E2 LDX #$E220 ; source = $C0E220 (fixed width font graphics) C0/D437: 8E 02 43 STX $4302 C0/D43A: A9 C0 LDA #$C0 C0/D43C: 8D 04 43 STA $4304 C0/D43F: 8D 07 43 STA $4307 C0/D442: A2 80 00 LDX #$0080 ; size = $0080 C0/D445: 8E 05 43 STX $4305 C0/D448: A9 01 LDA #$01 C0/D44A: 8D 0B 42 STA $420B ; enable dma C0/D44D: 60 RTS C0/D44E: 60 RTS ; [ ] C0/D44F: AD 68 05 LDA $0568 C0/D452: D0 4A BNE $D49E ; return if dialog is being displayed C0/D454: A5 46 LDA $46 C0/D456: 29 07 AND #$07 C0/D458: D0 44 BNE $D49E ; return 7/8 frames C0/D45A: A5 05 LDA $05 C0/D45C: 29 10 AND #$10 C0/D45E: F0 09 BEQ $D469 ; branch if start button is not pressed C0/D460: AE D0 00 LDX $00D0 ; increment dialog index C0/D463: E8 INX C0/D464: 8E D0 00 STX $00D0 C0/D467: 80 0D BRA $D476 C0/D469: A5 05 LDA $05 C0/D46B: 29 20 AND #$20 C0/D46D: F0 2F BEQ $D49E ; branch if select button is not pressed C0/D46F: AE D0 00 LDX $00D0 ; decrement dialog index C0/D472: CA DEX C0/D473: 8E D0 00 STX $00D0 C0/D476: AE D0 00 LDX $00D0 C0/D479: 86 1E STX $1E C0/D47B: 20 29 D5 JSR $D529 ; display 16-bit value C0/D47E: AE 69 05 LDX $0569 ; counter for dialog pause C0/D481: 86 1E STX $1E C0/D483: 20 29 D5 JSR $D529 ; display 16-bit value C0/D486: AE 6B 05 LDX $056B ; counter for keypress C0/D489: 86 1E STX $1E C0/D48B: 20 29 D5 JSR $D529 ; display 16-bit value C0/D48E: A9 31 LDA #$31 ; 49 spaces C0/D490: 20 9F D4 JSR $D49F C0/D493: 20 BF 7F JSR $7FBF ; update pointer to current dialog item C0/D496: A9 01 LDA #$01 C0/D498: 85 BC STA $BC ; dialog window at top of screen C0/D49A: A9 01 LDA #$01 C0/D49C: 85 BA STA $BA ; enable dialog window C0/D49E: 60 RTS ; [ Display Spaces ] ; A: number of spaces C0/D49F: A8 TAY C0/D4A0: A9 FF LDA #$FF ; tile $01FF, palette 0, high priority C0/D4A2: 8D 80 21 STA $2180 C0/D4A5: A9 21 LDA #$21 C0/D4A7: 8D 80 21 STA $2180 C0/D4AA: 88 DEY C0/D4AB: D0 F3 BNE $D4A0 C0/D4AD: 60 RTS ; [ Display 8-Bit Binary Value (msb first) ] C0/D4AE: A9 FF LDA #$FF ; tile $01FF, palette 0, high priority C0/D4B0: 8D 80 21 STA $2180 C0/D4B3: A9 21 LDA #$21 C0/D4B5: 8D 80 21 STA $2180 C0/D4B8: A0 08 00 LDY #$0008 C0/D4BB: 7B TDC C0/D4BC: 06 1E ASL $1E C0/D4BE: 69 38 ADC #$38 C0/D4C0: 8D 80 21 STA $2180 C0/D4C3: A9 21 LDA #$21 C0/D4C5: 8D 80 21 STA $2180 C0/D4C8: 88 DEY C0/D4C9: D0 F0 BNE $D4BB C0/D4CB: 60 RTS ; [ Display 8-Bit Binary Value (lsb first) ] C0/D4CC: A9 FF LDA #$FF C0/D4CE: 8D 80 21 STA $2180 C0/D4D1: A9 21 LDA #$21 C0/D4D3: 8D 80 21 STA $2180 C0/D4D6: A0 08 00 LDY #$0008 C0/D4D9: 7B TDC C0/D4DA: 46 1E LSR $1E C0/D4DC: 69 38 ADC #$38 ; 0 or 1 C0/D4DE: 8D 80 21 STA $2180 C0/D4E1: A9 21 LDA #$21 C0/D4E3: 8D 80 21 STA $2180 C0/D4E6: 88 DEY C0/D4E7: D0 F0 BNE $D4D9 C0/D4E9: 60 RTS ; [ Display 4-Bit Value ] C0/D4EA: A5 1E LDA $1E C0/D4EC: AA TAX C0/D4ED: BF 86 D3 C0 LDA $C0D386,X C0/D4F1: 8D 80 21 STA $2180 C0/D4F4: A9 21 LDA #$21 C0/D4F6: 8D 80 21 STA $2180 C0/D4F9: 60 RTS ; [ Display 8-Bit Value ] ; $1E: value C0/D4FA: A9 FF LDA #$FF C0/D4FC: 8D 80 21 STA $2180 C0/D4FF: A9 21 LDA #$21 C0/D501: 8D 80 21 STA $2180 C0/D504: A5 1E LDA $1E C0/D506: 4A LSR C0/D507: 4A LSR C0/D508: 4A LSR C0/D509: 4A LSR C0/D50A: AA TAX C0/D50B: BF 86 D3 C0 LDA $C0D386,X C0/D50F: 8D 80 21 STA $2180 C0/D512: A9 21 LDA #$21 C0/D514: 8D 80 21 STA $2180 C0/D517: A5 1E LDA $1E C0/D519: 29 0F AND #$0F C0/D51B: AA TAX C0/D51C: BF 86 D3 C0 LDA $C0D386,X C0/D520: 8D 80 21 STA $2180 C0/D523: A9 21 LDA #$21 C0/D525: 8D 80 21 STA $2180 C0/D528: 60 RTS ; [ Display 16-Bit Value ] ; +$1E: value C0/D529: A9 FF LDA #$FF C0/D52B: 8D 80 21 STA $2180 C0/D52E: A9 21 LDA #$21 C0/D530: 8D 80 21 STA $2180 C0/D533: A5 1F LDA $1F C0/D535: 4A LSR C0/D536: 4A LSR C0/D537: 4A LSR C0/D538: 4A LSR C0/D539: AA TAX C0/D53A: BF 86 D3 C0 LDA $C0D386,X C0/D53E: 8D 80 21 STA $2180 C0/D541: A9 21 LDA #$21 C0/D543: 8D 80 21 STA $2180 C0/D546: A5 1F LDA $1F C0/D548: 29 0F AND #$0F C0/D54A: AA TAX C0/D54B: BF 86 D3 C0 LDA $C0D386,X C0/D54F: 8D 80 21 STA $2180 C0/D552: A9 21 LDA #$21 C0/D554: 8D 80 21 STA $2180 C0/D557: A5 1E LDA $1E C0/D559: 4A LSR C0/D55A: 4A LSR C0/D55B: 4A LSR C0/D55C: 4A LSR C0/D55D: AA TAX C0/D55E: BF 86 D3 C0 LDA $C0D386,X C0/D562: 8D 80 21 STA $2180 C0/D565: A9 21 LDA #$21 C0/D567: 8D 80 21 STA $2180 C0/D56A: A5 1E LDA $1E C0/D56C: 29 0F AND #$0F C0/D56E: AA TAX C0/D56F: BF 86 D3 C0 LDA $C0D386,X C0/D573: 8D 80 21 STA $2180 C0/D576: A9 21 LDA #$21 C0/D578: 8D 80 21 STA $2180 C0/D57B: 60 RTS ; [ Display Event Bit Value ] C0/D57C: A5 46 LDA $46 C0/D57E: 29 03 AND #$03 C0/D580: D0 2C BNE $D5AE ; branch 3/4 frames C0/D582: A5 05 LDA $05 C0/D584: 29 10 AND #$10 C0/D586: F0 11 BEQ $D599 ; branch if start button is not pressed C0/D588: C2 20 REP #$20 C0/D58A: AD 5B 11 LDA $115B ; display next 2 event bytes C0/D58D: 18 CLC C0/D58E: 69 10 00 ADC #$0010 C0/D591: 8D 5B 11 STA $115B C0/D594: 7B TDC C0/D595: E2 20 SEP #$20 C0/D597: 80 15 BRA $D5AE C0/D599: A5 05 LDA $05 C0/D59B: 29 20 AND #$20 C0/D59D: F0 0F BEQ $D5AE ; branch if select button is not pressed C0/D59F: C2 20 REP #$20 C0/D5A1: AD 5B 11 LDA $115B ; display previous 2 event bytes C0/D5A4: 38 SEC C0/D5A5: E9 10 00 SBC #$0010 C0/D5A8: 8D 5B 11 STA $115B C0/D5AB: 7B TDC C0/D5AC: E2 20 SEP #$20 C0/D5AE: A9 07 LDA #$07 C0/D5B0: 20 9F D4 JSR $D49F ; 7 spaces C0/D5B3: AE 5B 11 LDX $115B C0/D5B6: 86 1E STX $1E ; event bit address C0/D5B8: 20 29 D5 JSR $D529 ; display 16-bit value C0/D5BB: C2 20 REP #$20 C0/D5BD: AD 5B 11 LDA $115B C0/D5C0: 4A LSR C0/D5C1: 4A LSR C0/D5C2: 4A LSR C0/D5C3: AA TAX C0/D5C4: 7B TDC C0/D5C5: E2 20 SEP #$20 C0/D5C7: BD 80 1E LDA $1E80,X ; event bit C0/D5CA: 85 1E STA $1E C0/D5CC: 20 CC D4 JSR $D4CC C0/D5CF: BD 81 1E LDA $1E81,X C0/D5D2: 85 1E STA $1E C0/D5D4: 20 CC D4 JSR $D4CC C0/D5D7: A9 02 LDA #$02 C0/D5D9: 20 9F D4 JSR $D49F ; 2 spaces C0/D5DC: A9 07 LDA #$07 C0/D5DE: 20 9F D4 JSR $D49F ; 7 spaces C0/D5E1: C2 21 REP #$21 C0/D5E3: AD 5B 11 LDA $115B C0/D5E6: 69 10 00 ADC #$0010 C0/D5E9: 85 1E STA $1E C0/D5EB: 7B TDC C0/D5EC: E2 20 SEP #$20 C0/D5EE: 20 29 D5 JSR $D529 C0/D5F1: C2 20 REP #$20 C0/D5F3: AD 5B 11 LDA $115B C0/D5F6: 4A LSR C0/D5F7: 4A LSR C0/D5F8: 4A LSR C0/D5F9: AA TAX C0/D5FA: 7B TDC C0/D5FB: E2 20 SEP #$20 C0/D5FD: BD 82 1E LDA $1E82,X C0/D600: 85 1E STA $1E C0/D602: 20 CC D4 JSR $D4CC C0/D605: BD 83 1E LDA $1E83,X C0/D608: 85 1E STA $1E C0/D60A: 20 CC D4 JSR $D4CC C0/D60D: A9 02 LDA #$02 C0/D60F: 20 9F D4 JSR $D49F C0/D612: 60 RTS ; random number table RND_DATA: C0/FD00: ... ; map color math data init_addsub_tbl: C0/FE00: 00 17 00 .DB $00, $17, $00 ; 00: no color math C0/FE03: 44 17 13 .DB $44, $17, $13 ; 01: half addition (bg3) tritoch ice, torch flames, fire C0/FE06: 13 13 04 .DB $13, $13, $04 ; 02: full addition (bg1, bg2, sprites) C0/FE09: 02 13 04 .DB $02, $13, $04 ; 03: full addition (bg2) light beams in gogo's room C0/FE0C: 42 13 17 .DB $42, $13, $17 ; 04: half addition (bg2) town/village/cave water, waterfall C0/FE0F: 04 17 13 .DB $04, $17, $13 ; 05: full addition (bg3) narshe steam, mountain fog, mountain cave light beams C0/FE12: 41 17 16 .DB $41, $17, $16 ; 06: half addition (bg1) cyan's dream C0/FE15: 43 13 17 .DB $43, $13, $17 ; 07: half addition (bg1, bg2) beach water (raft) C0/FE18: 41 13 17 .DB $41, $13, $17 ; 08: half addition (bg1) river cave/darill's tomb/albrook water C0/FE1B: 81 13 04 .DB $81, $13, $04 ; 09: subtraction (bg1) C0/FE1E: 51 13 17 .DB $51, $13, $17 ; 0A: half addition (bg1, sprites) C0/FE21: 82 13 04 .DB $82, $13, $04 ; 0B: subtraction (bg2) C0/FE24: 60 13 14 .DB $60, $13, $14 ; 0C: half addition (back area) fanatics' tower/floating island fog C0/FE27: 83 13 04 .DB $83, $13, $04 ; 0D: subtraction (bg1, bg2) jidoor: floating island shadow C0/FE2A: 51 13 04 .DB $51, $13, $04 ; 0E: half addition (bg1, sprites) beach water (fish) C0/FE2D: 62 17 13 .DB $62, $17, $13 ; 0F: half addition (bg2, back area) darill's tomb torches C0/FE30: 84 13 04 .DB $84, $13, $04 ; 10: subtraction (bg3) C0/FE33: 86 15 02 .DB $86, $15, $02 ; 11: subtraction (bg2, bg3) burning building C0/FE36: 54 17 11 .DB $54, $17, $11 ; 12: half addition (bg3, sprites) ; -------------------------------------------[ SNES Header ]-------------------------------------------- ; [ Reset Code ] C0/FF00: 78 SEI C0/FF01: 18 CLC C0/FF02: FB XCE C0/FF03: 5C 19 00 C0 JML $C00019 ; [ NMI Code ] C0/FF10: 5C 00 15 00 JML $001500 ; [ IRQ Code ] C0/FF14: 5C 04 15 00 JML $001504 ; SNES header C0/FFB0: .DB "C3" C0/FFB2: .DB "F6 " C0/FFB6: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C0/FFC0: .DB "FINAL FANTASY 3 " C0/FFD5: .DB $31 C0/FFD6: .DB $02 C0/FFD7: .DB $0C C0/FFD8: .DB $03 C0/FFD9: .DB $01 C0/FFDA: .DB $33 C0/FFDB: .DB $00 C0/FFDC: .DW $A0CD C0/FFDE: .DW $5F32 ; NMI vector C0/FFEA: .DW $FF10 ; IRQ vector C0/FFEE: .DW $FF14 ; reset vector C0/FFFC: .DW $FF00 ; --------------------------------------[ Battle Graphics: Main ]--------------------------------------- ; [ Battle Graphics ] yoshii_main: C1/0000: 48 PHA C1/0001: 7B TDC C1/0002: 68 PLA C1/0003: 0A ASL C1/0004: AA TAX C1/0005: 7C 08 00 JMP ($0008,X) ; execute battle graphics command ; battle graphics command jump table C1/0008: .DW $01EC, $01FB, $0257, $024C, $9512, $01CC, $0197, $0170 C1/0018: .DW $0117, $00AF, $00AB, $0171, $002D, $0024 ; [ Battle Graphics Command $0D: Get Position in Menu Queue ] ; $10 = character number C1/0024: A5 10 LDA $10 C1/0026: 29 03 AND #$03 C1/0028: AA TAX C1/0029: BD 01 40 LDA $4001,X C1/002C: 6B RTL ; [ Battle Graphics Command $0C: Scroll BG for Final Battle ] last_init: C1/002D: AD B8 EC LDA $ECB8 C1/0030: C9 35 CMP #$35 C1/0032: D0 17 BNE $004B C1/0034: EE ED E9 INC $E9ED ; disable sound effects C1/0037: A9 81 LDA #$81 C1/0039: 8D 00 13 STA $1300 C1/003C: A9 80 LDA #$80 C1/003E: 8D 01 13 STA $1301 C1/0041: 9C 02 13 STZ $1302 C1/0044: 22 04 00 C5 JSL $C50004 ; spc command C1/0048: 9C ED E9 STZ $E9ED ; enable sound effects C1/004B: A9 80 LDA #$80 C1/004D: 8D 85 62 STA $6285 C1/0050: EE EF E9 INC $E9EF ; stop battle time C1/0053: EE 0F EC INC $EC0F ; disable pause C1/0056: EE 9A 62 INC $629A C1/0059: 20 05 01 JSR $0105 ; force close all battle menus C1/005C: 22 0D B6 C2 JSL $C2B60D C1/0060: 20 6B 92 JSR $926B C1/0063: 7B TDC C1/0064: 20 5E 92 JSR $925E C1/0067: 20 DC 91 JSR $91DC C1/006A: 7B TDC C1/006B: AA TAX C1/006C: 9E 78 61 STZ $6178,X C1/006F: E8 INX C1/0070: E0 BE 00 CPX #$00BE C1/0073: D0 F7 BNE $006C C1/0075: 6B RTL ; [ ] last_init2: C1/0076: 20 E0 0F JSR $0FE0 C1/0079: 20 B6 0F JSR $0FB6 C1/007C: 9C EF E9 STZ $E9EF ; start battle time C1/007F: 20 F3 0D JSR $0DF3 C1/0082: EE EF E9 INC $E9EF ; stop battle time C1/0085: 20 67 0E JSR $0E67 C1/0088: 20 1F 0F JSR $0F1F C1/008B: 20 01 4A JSR $4A01 C1/008E: 20 23 3D JSR $3D23 C1/0091: 20 4D 3E JSR $3E4D C1/0094: 20 8F 46 JSR $468F C1/0097: 20 01 4A JSR $4A01 C1/009A: 20 59 47 JSR $4759 C1/009D: EE BB 7B INC $7BBB ; enable battle menu update C1/00A0: 20 8F 0F JSR $0F8F ; check if characters can change equipment C1/00A3: 20 7C 95 JSR $957C ; update character/monster order priority C1/00A6: 22 52 B6 C2 JSL $C2B652 C1/00AA: 60 RTS ; [ Battle Graphics Command $0A: Update Inventory with Obtained Items ] C1/00AB: 20 45 44 JSR $4445 ; update inventory with obtained items C1/00AE: 6B RTL ; [ Battle Graphics Command $09: Fade Out & Terminate Battle ] C1/00AF: AD 4B 2F LDA $2F4B C1/00B2: 30 07 BMI $00BB C1/00B4: AD E4 11 LDA $11E4 C1/00B7: 29 08 AND #$08 C1/00B9: F0 05 BEQ $00C0 ; branch if not continuing current music C1/00BB: AD 84 62 LDA $6284 C1/00BE: F0 17 BEQ $00D7 C1/00C0: EE ED E9 INC $E9ED ; disable sound effects C1/00C3: A9 81 LDA #$81 C1/00C5: 8D 00 13 STA $1300 C1/00C8: A9 10 LDA #$10 C1/00CA: 8D 01 13 STA $1301 C1/00CD: 9C 02 13 STZ $1302 C1/00D0: 22 04 00 C5 JSL $C50004 ; spc command C1/00D4: 9C ED E9 STZ $E9ED ; enable sound effects C1/00D7: AD F9 E9 LDA $E9F9 C1/00DA: F0 0A BEQ $00E6 C1/00DC: A9 01 LDA #$01 C1/00DE: 20 B6 9B JSR $9BB6 ; wait 1 frame C1/00E1: CE F9 E9 DEC $E9F9 C1/00E4: D0 F6 BNE $00DC C1/00E6: 22 0D B6 C2 JSL $C2B60D C1/00EA: 7B TDC C1/00EB: 48 PHA C1/00EC: AB PLB C1/00ED: 9C 00 42 STZ $4200 C1/00F0: 9C 0B 42 STZ $420B C1/00F3: 9C 0C 42 STZ $420C C1/00F6: A9 80 LDA #$80 C1/00F8: 8D 00 21 STA $2100 C1/00FB: A9 6B LDA #$6B C1/00FD: 8D 00 15 STA $1500 C1/0100: 8D 04 15 STA $1504 C1/0103: 78 SEI C1/0104: 6B RTL ; [ Force Close All Battle Menus ] win_all_close_wait: C1/0105: A2 FF FF LDX #$FFFF ; close all battle menus C1/0108: 8E 01 40 STX $4001 C1/010B: 8E 03 40 STX $4003 C1/010E: 20 2A 02 JSR $022A ; wait for vblank C1/0111: AD CA 7B LDA $7BCA ; branch if menu is still open C1/0114: D0 EF BNE $0105 C1/0116: 60 RTS ; [ Battle Graphics Command $08: Victory Animation ] C1/0117: EE 0F EC INC $EC0F ; disable pause C1/011A: EE 9A 62 INC $629A C1/011D: 20 05 01 JSR $0105 ; force close all battle menus C1/0120: 22 97 01 C1 JSL $C10197 C1/0124: AD 49 2F LDA $2F49 C1/0127: 29 02 AND #$02 C1/0129: D0 3F BNE $016A ; return if fanfare is disabled C1/012B: 7B TDC C1/012C: AA TAX C1/012D: BF 6B 01 C1 LDA $C1016B,X ; copy to battle script command queue C1/0131: 9D 6E 2D STA $2D6E,X C1/0134: E8 INX C1/0135: E0 05 00 CPX #$0005 C1/0138: D0 F3 BNE $012D C1/013A: 20 2A 02 JSR $022A ; wait for vblank C1/013D: 20 2A 02 JSR $022A ; wait for vblank C1/0140: AD E4 11 LDA $11E4 C1/0143: 29 08 AND #$08 C1/0145: D0 1C BNE $0163 ; branch if continuing music from map C1/0147: EE ED E9 INC $E9ED ; disable sound effects C1/014A: EE 84 62 INC $6284 C1/014D: A9 10 LDA #$10 C1/014F: 8D 00 13 STA $1300 C1/0152: A9 2F LDA #$2F ; song $2F (fanfare) C1/0154: 8D 01 13 STA $1301 C1/0157: A9 FF LDA #$FF C1/0159: 8D 02 13 STA $1302 C1/015C: 22 04 00 C5 JSL $C50004 ; spc command C1/0160: 9C ED E9 STZ $E9ED ; enable sound effects C1/0163: EE 8D 62 INC $628D C1/0166: 22 12 95 C1 JSL $C19512 ; execute battle script C1/016A: 6B RTL ; battle script command $0F/01: execute battle event 1 (victory) C1/016B: .DB $0F, $01, $00, $00, $FF ; [ Battle Graphics Command $07: Nothing ] C1/0170: 6B RTL ; [ Battle Graphics Command $0B: ] C1/0171: AD CA 7B LDA $7BCA C1/0174: F0 10 BEQ $0186 C1/0176: A5 10 LDA $10 C1/0178: CD CA 62 CMP $62CA C1/017B: D0 09 BNE $0186 C1/017D: 20 59 47 JSR $4759 C1/0180: 20 AC 47 JSR $47AC C1/0183: EE BB 7B INC $7BBB ; enable menu window update C1/0186: 6B RTL ; [ ??? ] nor_tfr_long: C1/0187: 20 61 4A JSR $4A61 C1/018A: 20 59 47 JSR $4759 C1/018D: EE BB 7B INC $7BBB ; enable menu window update C1/0190: 20 2A 02 JSR $022A ; wait for vblank C1/0193: 20 BD 01 JSR $01BD ; copy monster name data from buffer C1/0196: 6B RTL ; [ Battle Graphics Command $06: Update Monster Names ] monster_name_chg: C1/0197: 7B TDC C1/0198: AA TAX C1/0199: BD 0D 20 LDA $200D,X ; compare monster name data to buffer C1/019C: DD FF EB CMP $EBFF,X C1/019F: D0 07 BNE $01A8 C1/01A1: E8 INX C1/01A2: E0 10 00 CPX #$0010 C1/01A5: D0 F2 BNE $0199 C1/01A7: 6B RTL C1/01A8: AD CA 7B LDA $7BCA ; branch if menu is open C1/01AB: D0 0F BNE $01BC C1/01AD: 20 61 4A JSR $4A61 ; C1/01B0: 20 59 47 JSR $4759 ; C1/01B3: EE BB 7B INC $7BBB ; enable battle menu update C1/01B6: 20 2A 02 JSR $022A ; wait for vblank C1/01B9: 20 BD 01 JSR $01BD ; copy monster name data from buffer C1/01BC: 6B RTL ; [ Copy Monster Name Data from Buffer ] copy_mon_name_work: C1/01BD: 7B TDC C1/01BE: AA TAX C1/01BF: BD 0D 20 LDA $200D,X C1/01C2: 9D FF EB STA $EBFF,X C1/01C5: E8 INX C1/01C6: E0 10 00 CPX #$0010 C1/01C9: D0 F4 BNE $01BF C1/01CB: 60 RTS ; [ Battle Graphics Command $05: Add Item Obtained in Battle ] C1/01CC: AD DA 64 LDA $64DA ; next available slot for item obtained in battle C1/01CF: 29 0F AND #$0F C1/01D1: 85 10 STA $10 C1/01D3: 0A ASL C1/01D4: 0A ASL C1/01D5: 18 CLC C1/01D6: 65 10 ADC $10 C1/01D8: AA TAX C1/01D9: 7B TDC C1/01DA: A8 TAY C1/01DB: B9 72 2E LDA $2E72,Y ; copy item data to items obtained in battle (5 bytes) C1/01DE: 9D 2D 60 STA $602D,X C1/01E1: E8 INX C1/01E2: C8 INY C1/01E3: C0 05 00 CPY #$0005 C1/01E6: D0 F3 BNE $01DB C1/01E8: EE DA 64 INC $64DA ; increment number of items obtained in battle C1/01EB: 6B RTL ; [ Battle Graphics Command $00: Init Battle Graphics ] C1/01EC: 22 D5 D3 C2 JSL $C2D3D5 ; init hardware registers C1/01F0: 20 2A 10 JSR $102A ; init battle graphics data C1/01F3: 22 FB 01 C1 JSL $C101FB ; wait for vblank C1/01F7: 20 7C 95 JSR $957C ; update character/monster order priority C1/01FA: 6B RTL ; [ Battle Graphics Command $01: Wait for VBlank ] wait_loop2: C1/01FB: DA PHX C1/01FC: 5A PHY C1/01FD: 20 24 1A JSR $1A24 ; wait for vblank C1/0200: 20 F3 0D JSR $0DF3 ; update hp/mp/status buffers (for graphics) C1/0203: 20 04 45 JSR $4504 ; update battle menu state C1/0206: 20 79 2F JSR $2F79 ; update character status change animations C1/0209: 20 CA 02 JSR $02CA ; update battle menu C1/020C: 20 BE 44 JSR $44BE ; update hp/mp/gauge graphics C1/020F: 22 53 BF C2 JSL $C2BF53 ; update condemned numeral graphics C1/0213: 20 E3 93 JSR $93E3 ; execute monster death animations C1/0216: 22 1A B4 C2 JSL $C2B41A ; update character/monster facing directions C1/021A: AD EF E9 LDA $E9EF C1/021D: D0 04 BNE $0223 ; branch if battle time is stopped C1/021F: 22 03 00 C2 JSL $C20003 ; update battle time C1/0223: 7A PLY C1/0224: FA PLX C1/0225: 6B RTL ; [ Wait for VBlank (long access) ] wait_loop_long: C1/0226: 20 2A 02 JSR $022A ; wait for vblank C1/0229: 6B RTL ; [ Wait for VBlank ] ; called from graphics bank wait_loop: C1/022A: DA PHX C1/022B: 5A PHY C1/022C: 20 24 1A JSR $1A24 ; wait for vblank C1/022F: 20 04 45 JSR $4504 ; update battle menu state C1/0232: 20 CA 02 JSR $02CA ; update battle menu C1/0235: 20 BE 44 JSR $44BE ; update hp/gauge graphics C1/0238: 22 53 BF C2 JSL $C2BF53 ; update condemned numeral graphics C1/023C: 22 1A B4 C2 JSL $C2B41A ; update character/monster facing directions C1/0240: AD EF E9 LDA $E9EF C1/0243: D0 04 BNE $0249 ; branch if battle time is stopped C1/0245: 22 03 00 C2 JSL $C20003 ; update battle time C1/0249: 7A PLY C1/024A: FA PLX C1/024B: 60 RTS ; [ Battle Graphics Command $03: Close Battle Menu ] ; $10 = character number C1/024C: A5 10 LDA $10 C1/024E: 29 03 AND #$03 C1/0250: AA TAX C1/0251: A9 FF LDA #$FF C1/0253: 9D 01 40 STA $4001,X C1/0256: 6B RTL ; [ Battle Graphics Command $02: Open Battle Menu ] ; $10 = m-----cc ; m: set if character is controlling a monster ; c: character number C1/0257: AD 8B 62 LDA $628B ; return if ??? C1/025A: D0 29 BNE $0285 C1/025C: A5 10 LDA $10 C1/025E: 0A ASL C1/025F: 2A ROL C1/0260: 29 01 AND #$01 C1/0262: 85 12 STA $12 C1/0264: A5 10 LDA $10 C1/0266: 29 03 AND #$03 C1/0268: AA TAX C1/0269: A5 12 LDA $12 C1/026B: 9D CC 62 STA $62CC,X ; character is controlling a monster C1/026E: BD 01 40 LDA $4001,X C1/0271: C9 FF CMP #$FF C1/0273: D0 10 BNE $0285 ; return if character is already in the menu queue C1/0275: 8A TXA C1/0276: 8D 00 40 STA $4000 C1/0279: 20 86 02 JSR $0286 ; update battle menu queue C1/027C: AD 00 40 LDA $4000 C1/027F: AA TAX C1/0280: A9 03 LDA #$03 C1/0282: 9D 01 40 STA $4001,X ; put character in the back of the menu queue C1/0285: 6B RTL ; [ Update Battle Menu Queue ] ; moves characters up to the frontmost empty slot in the queue key_no_sift: C1/0286: 7B TDC C1/0287: AA TAX C1/0288: 64 10 STZ $10 C1/028A: 64 12 STZ $12 C1/028C: 20 B2 02 JSR $02B2 ; update menu order slot (set to next available slot) C1/028F: 90 02 BCC $0293 ; branch if slot empty C1/0291: E6 12 INC $12 C1/0293: E6 10 INC $10 ; next slot C1/0295: A5 10 LDA $10 C1/0297: C9 05 CMP #$05 C1/0299: D0 F1 BNE $028C C1/029B: A5 12 LDA $12 ; first empty slot C1/029D: 85 10 STA $10 C1/029F: A5 10 LDA $10 C1/02A1: C9 05 CMP #$05 C1/02A3: F0 0C BEQ $02B1 C1/02A5: A9 FF LDA #$FF C1/02A7: 85 12 STA $12 C1/02A9: 20 B2 02 JSR $02B2 ; update menu order slot (set to $FF) C1/02AC: E6 10 INC $10 C1/02AE: 4C 9F 02 JMP $029F C1/02B1: 60 RTS ; [ Update Menu Order Slot ] ; $10 = position in menu order to find ; $12 = new menu order to set ; carry clear = slot was empty, carry set = slot was found one_key_buf_chg: C1/02B2: 7B TDC C1/02B3: AA TAX C1/02B4: BD 01 40 LDA $4001,X ; character position in menu queue C1/02B7: C5 10 CMP $10 C1/02B9: F0 08 BEQ $02C3 C1/02BB: E8 INX C1/02BC: E0 04 00 CPX #$0004 C1/02BF: D0 F3 BNE $02B4 C1/02C1: 18 CLC C1/02C2: 60 RTS C1/02C3: A5 12 LDA $12 C1/02C5: 9D 01 40 STA $4001,X C1/02C8: 38 SEC C1/02C9: 60 RTS ; [ Update Battle Menu ] ; called every frame after vblank auto_window_open: C1/02CA: 20 86 02 JSR $0286 ; update battle menu queue C1/02CD: 7B TDC C1/02CE: AA TAX C1/02CF: BD 01 40 LDA $4001,X ; character position in menu queue C1/02D2: F0 08 BEQ $02DC ; branch if at top of queue C1/02D4: E8 INX ; next character C1/02D5: E0 04 00 CPX #$0004 C1/02D8: D0 F5 BNE $02CF C1/02DA: 80 1D BRA $02F9 ; return if no character was at the top of the queue C1/02DC: AD F1 E9 LDA $E9F1 ; return if ??? C1/02DF: 0D F0 7B ORA $7BF0 C1/02E2: 0D 8B 62 ORA $628B C1/02E5: 0D CA 7B ORA $7BCA C1/02E8: 0D BB 7B ORA $7BBB C1/02EB: 0D CC 7B ORA $7BCC C1/02EE: D0 09 BNE $02F9 C1/02F0: 9C CB 7B STZ $7BCB ; C1/02F3: 8E CA 62 STX $62CA ; set active character C1/02F6: 20 A2 44 JSR $44A2 ; C1/02F9: 60 RTS ; [ Update HDMA #3 and #5 ] C1/02FA: AD 95 7B LDA $7B95 ; branch if HDMA #3 doesn't need to be updated C1/02FD: F0 29 BEQ $0328 C1/02FF: C9 01 CMP #$01 C1/0301: F0 05 BEQ $0308 ; branch if slot C1/0303: A2 0F 00 LDX #$000F C1/0306: 80 03 BRA $030B C1/0308: A2 23 00 LDX #$0023 C1/030B: 9C 95 7B STZ $7B95 ; disable HDMA #3 update C1/030E: 8B PHB C1/030F: A9 00 LDA #$00 C1/0311: 48 PHA C1/0312: AB PLB C1/0313: A8 TAY C1/0314: BF 68 D3 C2 LDA $C2D368,X C1/0318: 99 30 43 STA $4330,Y ; set HDMA #3 registers C1/031B: C8 INY C1/031C: E8 INX C1/031D: C0 05 00 CPY #$0005 C1/0320: D0 F2 BNE $0314 C1/0322: A9 7E LDA #$7E C1/0324: 8D 37 43 STA $4337 C1/0327: AB PLB C1/0328: AD 96 7B LDA $7B96 ; branch if HDMA #5 doesn't need to be updated C1/032B: F0 19 BEQ $0346 C1/032D: 9C 96 7B STZ $7B96 ; disable HDMA #5 update C1/0330: 7B TDC C1/0331: AA TAX C1/0332: BF 9A D3 C2 LDA $C2D39A,X C1/0336: 9F 50 43 00 STA $004350,X ; set HDMA #5 registers C1/033A: E8 INX C1/033B: E0 05 00 CPX #$0005 C1/033E: D0 F2 BNE $0332 C1/0340: A9 7E LDA #$7E C1/0342: 8F 57 43 00 STA $004357 C1/0346: 60 RTS ; [ Update HDMA #7 ] C1/0347: C2 20 REP #$20 C1/0349: AF 95 D3 C2 LDA $C2D395 ; set HDMA #7 registers C1/034D: 8F 70 43 00 STA $004370 C1/0351: AF 97 D3 C2 LDA $C2D397 C1/0355: 8F 72 43 00 STA $004372 C1/0359: 7B TDC C1/035A: E2 20 SEP #$20 C1/035C: AF 99 D3 C2 LDA $C2D399 C1/0360: 8F 74 43 00 STA $004374 C1/0364: A9 7E LDA #$7E C1/0366: 8F 77 43 00 STA $004377 C1/036A: AD EF 7B LDA $7BEF ; enable HDMA channel #7 C1/036D: 09 80 ORA #$80 C1/036F: 8D EF 7B STA $7BEF C1/0372: 60 RTS ; [ Update HDMA #6 ] C1/0373: AD 97 7B LDA $7B97 ; branch if HDMA #6 doesn't need to be updated C1/0376: F0 29 BEQ $03A1 C1/0378: C9 01 CMP #$01 C1/037A: F0 05 BEQ $0381 ; branch if slot C1/037C: A2 1E 00 LDX #$001E C1/037F: 80 03 BRA $0384 C1/0381: A2 28 00 LDX #$0028 C1/0384: 9C 97 7B STZ $7B97 ; disable HDMA #6 update C1/0387: 8B PHB C1/0388: A9 00 LDA #$00 C1/038A: 48 PHA C1/038B: AB PLB C1/038C: A8 TAY C1/038D: BF 68 D3 C2 LDA $C2D368,X C1/0391: 99 60 43 STA $4360,Y ; set HDMA #6 registers C1/0394: C8 INY C1/0395: E8 INX C1/0396: C0 05 00 CPY #$0005 C1/0399: D0 F2 BNE $038D C1/039B: A9 7E LDA #$7E C1/039D: 8D 67 43 STA $4367 C1/03A0: AB PLB C1/03A1: 60 RTS ; [ Init HDMA ] hdma_init: C1/03A2: 8B PHB C1/03A3: A9 00 LDA #$00 C1/03A5: 48 PHA C1/03A6: AB PLB C1/03A7: 7B TDC C1/03A8: AA TAX C1/03A9: A8 TAY C1/03AA: A9 05 LDA #$05 C1/03AC: 85 10 STA $10 C1/03AE: BF 68 D3 C2 LDA $C2D368,X C1/03B2: 99 00 43 STA $4300,Y C1/03B5: E8 INX C1/03B6: C8 INY C1/03B7: C6 10 DEC $10 C1/03B9: D0 F3 BNE $03AE C1/03BB: A9 7E LDA #$7E C1/03BD: 99 02 43 STA $4302,Y C1/03C0: 98 TYA C1/03C1: 18 CLC C1/03C2: 69 0B ADC #$0B C1/03C4: A8 TAY C1/03C5: E0 23 00 CPX #$0023 C1/03C8: D0 E0 BNE $03AA C1/03CA: AB PLB C1/03CB: A9 03 LDA #$03 ; C1/03CD: 8D 0C 80 STA $800C C1/03D0: A9 04 LDA #$04 C1/03D2: 8D 0D 80 STA $800D C1/03D5: A9 05 LDA #$05 C1/03D7: 8D 0E 80 STA $800E C1/03DA: 20 FB 03 JSR $03FB C1/03DD: A9 7F LDA #$7F ; enable HDMA channels #0 through #6 C1/03DF: 8D EF 7B STA $7BEF hdma_init2: C1/03E2: AD B8 EC LDA $ECB8 C1/03E5: C9 0F CMP #$0F C1/03E7: F0 0C BEQ $03F5 C1/03E9: C9 2C CMP #$2C C1/03EB: F0 08 BEQ $03F5 C1/03ED: C9 2E CMP #$2E C1/03EF: D0 09 BNE $03FA C1/03F1: A9 0B LDA #$0B C1/03F3: 80 02 BRA $03F7 C1/03F5: A9 0A LDA #$0A C1/03F7: 8D 0D 80 STA $800D C1/03FA: 60 RTS ; [ Update HDMA #0, #1, and #2 ] hdma_line_data_set: C1/03FB: AD 0C 80 LDA $800C C1/03FE: 30 19 BMI $0419 C1/0400: 09 80 ORA #$80 C1/0402: 8D 0C 80 STA $800C C1/0405: 29 7F AND #$7F C1/0407: 0A ASL C1/0408: AA TAX C1/0409: BF 50 D1 C2 LDA $C2D150,X C1/040D: 8F 02 43 00 STA $004302 C1/0411: BF 51 D1 C2 LDA $C2D151,X C1/0415: 8F 03 43 00 STA $004303 C1/0419: AD 0D 80 LDA $800D C1/041C: 30 19 BMI $0437 C1/041E: 09 80 ORA #$80 C1/0420: 8D 0D 80 STA $800D C1/0423: 29 7F AND #$7F C1/0425: 0A ASL C1/0426: AA TAX C1/0427: BF 50 D1 C2 LDA $C2D150,X C1/042B: 8F 12 43 00 STA $004312 C1/042F: BF 51 D1 C2 LDA $C2D151,X C1/0433: 8F 13 43 00 STA $004313 C1/0437: AD 0E 80 LDA $800E C1/043A: 30 1D BMI $0459 C1/043C: 09 80 ORA #$80 C1/043E: 8D 0E 80 STA $800E C1/0441: 18 CLC C1/0442: 6D 8A 7B ADC $7B8A C1/0445: 29 7F AND #$7F C1/0447: 0A ASL C1/0448: AA TAX C1/0449: BF 50 D1 C2 LDA $C2D150,X C1/044D: 8F 22 43 00 STA $004322 C1/0451: BF 51 D1 C2 LDA $C2D151,X C1/0455: 8F 23 43 00 STA $004323 C1/0459: AD EF 7B LDA $7BEF C1/045C: 8F 0C 42 00 STA $00420C C1/0460: 60 RTS C1/0461: .DW $9213, $9013, $9213, $9413 ; [ Load "Short" Menu Window Tile Data ] C1/0469: AD B8 64 LDA $64B8 ; return if window mode is not short C1/046C: F0 5B BEQ $04C9 C1/046E: AD B9 64 LDA $64B9 ; C1/0471: D0 05 BNE $0478 C1/0473: A9 08 LDA #$08 C1/0475: 8D B9 64 STA $64B9 C1/0478: A5 98 LDA $98 ; frame counter C1/047A: 29 07 AND #$07 C1/047C: 0A ASL C1/047D: AA TAX C1/047E: C2 20 REP #$20 C1/0480: BF A4 D2 C2 LDA $C2D2A4,X C1/0484: 8F 16 21 00 STA $002116 C1/0488: DA PHX C1/0489: AD B8 64 LDA $64B8 C1/048C: 29 FF 00 AND #$00FF C1/048F: 0A ASL C1/0490: AA TAX C1/0491: BF 61 04 C1 LDA $C10461,X C1/0495: FA PLX C1/0496: 18 CLC C1/0497: 7F B4 D2 C2 ADC $C2D2B4,X C1/049B: 8F 72 43 00 STA $004372 C1/049F: A9 40 00 LDA #$0040 C1/04A2: 8F 75 43 00 STA $004375 C1/04A6: 7B TDC C1/04A7: E2 20 SEP #$20 C1/04A9: A9 7E LDA #$7E C1/04AB: 8F 74 43 00 STA $004374 C1/04AF: A9 01 LDA #$01 C1/04B1: 8F 70 43 00 STA $004370 C1/04B5: A9 18 LDA #$18 C1/04B7: 8F 71 43 00 STA $004371 C1/04BB: A9 80 LDA #$80 C1/04BD: 8F 0B 42 00 STA $00420B C1/04C1: CE B9 64 DEC $64B9 C1/04C4: D0 03 BNE $04C9 C1/04C6: 9C B8 64 STZ $64B8 C1/04C9: 60 RTS ; [ Copy Menu Window Tile Data to VRAM ] C1/04CA: AD BB 7B LDA $7BBB ; return if menu window update is disabled C1/04CD: F0 3C BEQ $050B C1/04CF: EE 9B 62 INC $629B ; C1/04D2: AD AA 62 LDA $62AA ; branch if copying a special number of strips C1/04D5: D0 05 BNE $04DC C1/04D7: A9 08 LDA #$08 ; copy 8 strips (default) C1/04D9: 8D AA 62 STA $62AA C1/04DC: A5 98 LDA $98 ; frame counter C1/04DE: 29 07 AND #$07 C1/04E0: 0A ASL C1/04E1: AA TAX C1/04E2: C2 20 REP #$20 C1/04E4: AD BE 7B LDA $7BBE ; pointer to menu tile data in VRAM (bg2) C1/04E7: 18 CLC C1/04E8: 7F 94 D2 C2 ADC $C2D294,X ; add strip offset C1/04EC: A8 TAY C1/04ED: AD C0 7B LDA $7BC0 ; pointer to menu tile data buffer in RAM (bg2) C1/04F0: 18 CLC C1/04F1: 7F B4 D2 C2 ADC $C2D2B4,X ; add strip offset C1/04F5: AA TAX C1/04F6: A9 40 00 LDA #$0040 ; size = 32 tiles (8x8) C1/04F9: 85 36 STA $36 C1/04FB: 7B TDC C1/04FC: E2 20 SEP #$20 C1/04FE: A9 7E LDA #$7E C1/0500: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/0503: CE AA 62 DEC $62AA ; next strip C1/0506: D0 03 BNE $050B C1/0508: 9C BB 7B STZ $7BBB ; disable menu window update C1/050B: 60 RTS ; [ ] nmi_player_mp_set: C1/050C: 7B TDC C1/050D: AA TAX C1/050E: AD CA 62 LDA $62CA C1/0511: DD D6 64 CMP $64D6,X C1/0514: F0 08 BEQ $051E C1/0516: E8 INX C1/0517: E0 04 00 CPX #$0004 C1/051A: D0 F5 BNE $0511 C1/051C: 7B TDC C1/051D: AA TAX C1/051E: BF 64 D3 C2 LDA $C2D364,X C1/0522: AA TAX C1/0523: 7B TDC C1/0524: A8 TAY C1/0525: BD A5 5C LDA $5CA5,X C1/0528: C9 15 CMP #$15 C1/052A: F0 03 BEQ $052F C1/052C: 18 CLC C1/052D: 69 54 ADC #$54 C1/052F: 99 15 5D STA $5D15,Y C1/0532: C8 INY C1/0533: C8 INY C1/0534: E8 INX C1/0535: E8 INX C1/0536: C0 0E 00 CPY #$000E C1/0539: D0 EA BNE $0525 C1/053B: 64 40 STZ $40 C1/053D: 64 41 STZ $41 C1/053F: AD 78 61 LDA $6178 C1/0542: 38 SEC C1/0543: E9 64 SBC #$64 C1/0545: 90 04 BCC $054B C1/0547: E6 40 INC $40 C1/0549: 80 F7 BRA $0542 C1/054B: 18 CLC C1/054C: 69 64 ADC #$64 C1/054E: 38 SEC C1/054F: E9 0A SBC #$0A C1/0551: 90 04 BCC $0557 C1/0553: E6 41 INC $41 C1/0555: 80 F7 BRA $054E C1/0557: 18 CLC C1/0558: 69 12 ADC #$12 C1/055A: 8D 27 5D STA $5D27 C1/055D: A9 02 LDA #$02 C1/055F: 8D 28 5D STA $5D28 C1/0562: 8D 26 5D STA $5D26 C1/0565: 8D 24 5D STA $5D24 C1/0568: A5 41 LDA $41 C1/056A: 18 CLC C1/056B: 69 08 ADC #$08 C1/056D: 8D 25 5D STA $5D25 C1/0570: A5 40 LDA $40 C1/0572: 18 CLC C1/0573: 69 08 ADC #$08 C1/0575: 8D 23 5D STA $5D23 C1/0578: C9 08 CMP #$08 C1/057A: D0 08 BNE $0584 C1/057C: A9 FF LDA #$FF C1/057E: 8D 23 5D STA $5D23 C1/0581: 9C 24 5D STZ $5D24 C1/0584: A5 41 LDA $41 C1/0586: D0 08 BNE $0590 C1/0588: A9 FF LDA #$FF C1/058A: 8D 25 5D STA $5D25 C1/058D: 9C 26 5D STZ $5D26 C1/0590: 60 RTS ; pointers to bg1 tile data in VRAM (4 quadrants of bg1, ???, ???, 2 quadrants of bg3) C1/0591: .DW $0C00, $0C10, $0E00, $0E10, $2800, $2000, $5400, $5410 ; [ Copy Animation BG Tile Data to VRAM ] C1/05A1: AD 15 7B LDA $7B15 ; branch if bg1 animation tile data doesn't need to be updated C1/05A4: F0 3D BEQ $05E3 C1/05A6: 9C 15 7B STZ $7B15 ; validate bg1 animation tile data C1/05A9: AD A7 60 LDA $60A7 ; branch if bg1 animation is hidden C1/05AC: D0 1C BNE $05CA C1/05AE: AD C8 62 LDA $62C8 ; tile data quadrant C1/05B1: 0A ASL C1/05B2: AA TAX C1/05B3: C2 20 REP #$20 C1/05B5: BF 91 05 C1 LDA $C10591,X ; +$36 = pointer to tile data in VRAM C1/05B9: 85 36 STA $36 C1/05BB: 7B TDC C1/05BC: E2 20 SEP #$20 C1/05BE: 9C C8 62 STZ $62C8 ; clear quadrant (top-left) C1/05C1: AD 1C 7B LDA $7B1C ; pointer to animation tile data buffer C1/05C4: AE 1A 7B LDX $7B1A C1/05C7: 20 51 1A JSR $1A51 ; copy animation bg tile data to VRAM C1/05CA: C2 20 REP #$20 C1/05CC: AD 16 7B LDA $7B16 ; x position C1/05CF: 38 SEC C1/05D0: ED 1D 7B SBC $7B1D ; x offset C1/05D3: 8D B4 64 STA $64B4 ; bg1 horizontal scroll position C1/05D6: AD 18 7B LDA $7B18 ; y position C1/05D9: 38 SEC C1/05DA: ED 1F 7B SBC $7B1F ; y offset C1/05DD: 8D B6 64 STA $64B6 ; bg1 vertical scroll position C1/05E0: 7B TDC C1/05E1: E2 20 SEP #$20 C1/05E3: AD 21 7B LDA $7B21 ; branch if bg3 animation tile data doesn't need to be updated C1/05E6: F0 57 BEQ $063F C1/05E8: 9C 21 7B STZ $7B21 ; validate bg3 animation tile data C1/05EB: AD A8 60 LDA $60A8 ; branch if bg3 animation is hidden C1/05EE: D0 2D BNE $061D C1/05F0: AD C9 62 LDA $62C9 ; tile data quadrant C1/05F3: F0 17 BEQ $060C ; branch if top-left C1/05F5: C9 01 CMP #$01 C1/05F7: F0 0E BEQ $0607 ; branch if top-right C1/05F9: C9 02 CMP #$02 C1/05FB: F0 05 BEQ $0602 ; branch if bottom-left C1/05FD: A0 10 56 LDY #$5610 ; bottom-right C1/0600: 80 0D BRA $060F C1/0602: A0 00 56 LDY #$5600 ; bottom-left C1/0605: 80 08 BRA $060F C1/0607: A0 10 54 LDY #$5410 ; top-right C1/060A: 80 03 BRA $060F C1/060C: A0 00 54 LDY #$5400 ; top-left C1/060F: 9C C9 62 STZ $62C9 ; clear quadrant C1/0612: AD 28 7B LDA $7B28 ; pointer to tile data buffer C1/0615: AE 26 7B LDX $7B26 C1/0618: 84 36 STY $36 ; VRAM destination C1/061A: 20 51 1A JSR $1A51 ; copy animation bg tile data to VRAM C1/061D: AD 0E 80 LDA $800E ; bg3 scroll HDMA index C1/0620: 29 7F AND #$7F C1/0622: C9 05 CMP #$05 ; return if not 5 C1/0624: D0 19 BNE $063F C1/0626: C2 20 REP #$20 C1/0628: AD 22 7B LDA $7B22 ; x offset C1/062B: 38 SEC C1/062C: ED 29 7B SBC $7B29 ; subtract x position C1/062F: 8D F5 4A STA $4AF5 ; bg3 horizontal scroll position C1/0632: AD 24 7B LDA $7B24 ; y offset C1/0635: 38 SEC C1/0636: ED 2B 7B SBC $7B2B ; subtract y position C1/0639: 8D F7 4A STA $4AF7 ; bg3 vertical scroll position C1/063C: 7B TDC C1/063D: E2 20 SEP #$20 C1/063F: 60 RTS ; [ Copy Damage Numeral Graphics to VRAM ] C1/0640: AD 16 63 LDA $6316 ; return if damage numeral graphics update is disabled C1/0643: F0 13 BEQ $0658 C1/0645: 9C 16 63 STZ $6316 ; disable damage numeral graphics update C1/0648: A2 80 00 LDX #$0080 C1/064B: 86 36 STX $36 ; size = $0080 (4 8x8 tiles) C1/064D: A2 B3 60 LDX #$60B3 C1/0650: A9 7E LDA #$7E C1/0652: AC 17 63 LDY $6317 ; source = $7E60B3 (graphics buffer) C1/0655: 4C 2B 1A JMP $1A2B ; copy data to VRAM C1/0658: 60 RTS ; [ ] cur_poi_set: C1/0659: E2 10 SEP #$10 C1/065B: 9C 6B 7B STZ $7B6B C1/065E: 7B TDC C1/065F: AA TAX C1/0660: C2 20 REP #$20 C1/0662: BD 2F 81 LDA $812F,X C1/0665: 29 FF 00 AND #$00FF C1/0668: 0A ASL C1/0669: 0A ASL C1/066A: 0A ASL C1/066B: 4A LSR C1/066C: 18 CLC C1/066D: 7D C3 80 ADC $80C3,X C1/0670: 9D 0F 80 STA $800F,X C1/0673: BD 30 81 LDA $8130,X C1/0676: 29 FF 00 AND #$00FF C1/0679: 0A ASL C1/067A: 0A ASL C1/067B: 0A ASL C1/067C: 85 36 STA $36 C1/067E: 4A LSR C1/067F: 18 CLC C1/0680: 7D CF 80 ADC $80CF,X C1/0683: 9D 1B 80 STA $801B,X C1/0686: A5 36 LDA $36 C1/0688: 18 CLC C1/0689: 7D CF 80 ADC $80CF,X C1/068C: 38 SEC C1/068D: E9 08 00 SBC #$0008 C1/0690: 9D 27 80 STA $8027,X C1/0693: 18 CLC C1/0694: 7D 57 80 ADC $8057,X C1/0697: 9D 4B 80 STA $804B,X C1/069A: BD C3 80 LDA $80C3,X C1/069D: 38 SEC C1/069E: E9 08 00 SBC #$0008 C1/06A1: 18 CLC C1/06A2: 7D 7B 80 ADC $807B,X C1/06A5: 9D 63 80 STA $8063,X C1/06A8: BD 30 81 LDA $8130,X C1/06AB: 29 FF 00 AND #$00FF C1/06AE: 0A ASL C1/06AF: 0A ASL C1/06B0: 0A ASL C1/06B1: 4A LSR C1/06B2: 18 CLC C1/06B3: 7D CF 80 ADC $80CF,X C1/06B6: 9D 6F 80 STA $806F,X C1/06B9: E8 INX C1/06BA: E8 INX C1/06BB: E0 0C CPX #$0C C1/06BD: D0 A3 BNE $0662 C1/06BF: 7B TDC C1/06C0: AA TAX C1/06C1: A8 TAY C1/06C2: BD B7 61 LDA $61B7,X C1/06C5: 18 CLC C1/06C6: 7D C5 61 ADC $61C5,X C1/06C9: 18 CLC C1/06CA: 7D D4 61 ADC $61D4,X C1/06CD: 85 36 STA $36 C1/06CF: 38 SEC C1/06D0: E9 10 00 SBC #$0010 C1/06D3: 18 CLC C1/06D4: 79 9F 80 ADC $809F,Y C1/06D7: 99 87 80 STA $8087,Y C1/06DA: A5 36 LDA $36 C1/06DC: 18 CLC C1/06DD: 69 08 00 ADC #$0008 C1/06E0: 99 33 80 STA $8033,Y C1/06E3: BD B9 61 LDA $61B9,X C1/06E6: 18 CLC C1/06E7: 7D C7 61 ADC $61C7,X C1/06EA: 18 CLC C1/06EB: 69 08 00 ADC #$0008 C1/06EE: 99 93 80 STA $8093,Y C1/06F1: 99 3B 80 STA $803B,Y C1/06F4: 69 08 00 ADC #$0008 C1/06F7: 99 43 80 STA $8043,Y C1/06FA: 8A TXA C1/06FB: 18 CLC C1/06FC: 69 20 00 ADC #$0020 C1/06FF: AA TAX C1/0700: C8 INY C1/0701: C8 INY C1/0702: C0 08 CPY #$08 C1/0704: D0 BC BNE $06C2 C1/0706: 7B TDC C1/0707: E2 20 SEP #$20 C1/0709: C2 10 REP #$10 C1/070B: AD 47 2F LDA $2F47 C1/070E: 49 FF EOR #$FF C1/0710: 8D 93 61 STA $6193 C1/0713: AD 1D 20 LDA $201D C1/0716: 2D AC 61 AND $61AC C1/0719: 2D 47 2F AND $2F47 C1/071C: F0 70 BEQ $078E C1/071E: 20 0F 1A JSR $1A0F C1/0721: 0A ASL C1/0722: AA TAX C1/0723: AD 1F 20 LDA $201F C1/0726: C2 20 REP #$20 C1/0728: C9 01 00 CMP #$0001 C1/072B: D0 09 BNE $0736 C1/072D: BD 87 80 LDA $8087,X C1/0730: 38 SEC C1/0731: E9 20 00 SBC #$0020 C1/0734: 80 07 BRA $073D C1/0736: BD 87 80 LDA $8087,X C1/0739: 18 CLC C1/073A: 69 20 00 ADC #$0020 C1/073D: 8D 6D 80 STA $806D C1/0740: BD 93 80 LDA $8093,X C1/0743: 8D 79 80 STA $8079 C1/0746: BD 33 80 LDA $8033,X C1/0749: 8D 19 80 STA $8019 C1/074C: BD 3B 80 LDA $803B,X C1/074F: 8D 25 80 STA $8025 C1/0752: BD 43 80 LDA $8043,X C1/0755: 8D 31 80 STA $8031 C1/0758: BD 33 80 LDA $8033,X C1/075B: 38 SEC C1/075C: E9 0C 00 SBC #$000C C1/075F: 8D CD 80 STA $80CD C1/0762: BD 3B 80 LDA $803B,X C1/0765: 38 SEC C1/0766: E9 08 00 SBC #$0008 C1/0769: 8D D9 80 STA $80D9 C1/076C: A9 32 00 LDA #$0032 C1/076F: 8D 39 81 STA $8139 C1/0772: AD 1F 20 LDA $201F C1/0775: 29 01 00 AND #$0001 C1/0778: 49 01 00 EOR #$0001 C1/077B: 8D 85 80 STA $8085 C1/077E: 7B TDC C1/077F: E2 20 SEP #$20 C1/0781: A9 20 LDA #$20 C1/0783: 8D 95 61 STA $6195 C1/0786: 0D 79 7B ORA $7B79 C1/0789: 8D 79 7B STA $7B79 C1/078C: 80 03 BRA $0791 C1/078E: 9C 95 61 STZ $6195 C1/0791: A9 FF LDA #$FF C1/0793: 2D 1E 20 AND $201E C1/0796: 2D AB 61 AND $61AB C1/0799: 2D 46 2F AND $2F46 C1/079C: 0D 95 61 ORA $6195 C1/079F: 8D 92 00 STA $0092 C1/07A2: 60 RTS ; [ Clear Sprite Data ] ; does not clear cursor sprites oambuf_start_clr: C1/07A3: E2 10 SEP #$10 C1/07A5: 7B TDC C1/07A6: AA TAX C1/07A7: 9D 01 05 STA $0501,X C1/07AA: E8 INX C1/07AB: E0 1B CPX #$1B C1/07AD: D0 F8 BNE $07A7 C1/07AF: A9 80 LDA #$80 C1/07B1: 8D 1C 05 STA $051C C1/07B4: C2 20 REP #$20 C1/07B6: 7B TDC C1/07B7: AA TAX C1/07B8: A9 E0 E0 LDA #$E0E0 C1/07BB: 9D 20 03 STA $0320,X C1/07BE: 9D 54 03 STA $0354,X C1/07C1: 9D 88 03 STA $0388,X C1/07C4: 9D BC 03 STA $03BC,X C1/07C7: 9D F0 03 STA $03F0,X C1/07CA: 9D 24 04 STA $0424,X C1/07CD: 9D 58 04 STA $0458,X C1/07D0: 9D 8C 04 STA $048C,X C1/07D3: E8 INX C1/07D4: E8 INX C1/07D5: E8 INX C1/07D6: E8 INX C1/07D7: E0 34 CPX #$34 C1/07D9: D0 E0 BNE $07BB C1/07DB: 8D C0 04 STA $04C0 C1/07DE: 8D C4 04 STA $04C4 C1/07E1: 8D C8 04 STA $04C8 C1/07E4: 7B TDC C1/07E5: E2 20 SEP #$20 C1/07E7: C2 10 REP #$10 C1/07E9: 60 RTS ; [ ] line_copy: C1/07EA: AD 83 62 LDA $6283 ; wavy battle bg (desert) C1/07ED: AA TAX C1/07EE: 86 44 STX $44 C1/07F0: E2 10 SEP #$10 C1/07F2: C2 20 REP #$20 C1/07F4: AD 97 61 LDA $6197 C1/07F7: F0 25 BEQ $081E C1/07F9: 9C 97 61 STZ $6197 C1/07FC: 7B TDC C1/07FD: AA TAX C1/07FE: BD 21 9A LDA $9A21,X C1/0801: 9D 21 9F STA $9F21,X C1/0804: BD B9 9A LDA $9AB9,X C1/0807: 9D B9 9F STA $9FB9,X C1/080A: BD 51 9B LDA $9B51,X C1/080D: 9D 51 A0 STA $A051,X C1/0810: BD E9 9B LDA $9BE9,X C1/0813: 9D E9 A0 STA $A0E9,X C1/0816: E8 INX C1/0817: E8 INX C1/0818: E8 INX C1/0819: E8 INX C1/081A: E0 98 CPX #$98 C1/081C: D0 E0 BNE $07FE C1/081E: 64 34 STZ $34 C1/0820: 7B TDC C1/0821: E2 20 SEP #$20 C1/0823: AA TAX C1/0824: AD 0C 80 LDA $800C ; bg1 scroll hdma index C1/0827: 29 7F AND #$7F C1/0829: C9 06 CMP #$06 C1/082B: D0 04 BNE $0831 C1/082D: E6 34 INC $34 C1/082F: 80 08 BRA $0839 C1/0831: C9 08 CMP #$08 C1/0833: D0 04 BNE $0839 C1/0835: A9 80 LDA #$80 C1/0837: 85 35 STA $35 C1/0839: C2 20 REP #$20 C1/083B: AD B0 64 LDA $64B0 C1/083E: 85 36 STA $36 C1/0840: AD B2 64 LDA $64B2 C1/0843: 85 38 STA $38 C1/0845: AD 0C 80 LDA $800C C1/0848: 29 7F 00 AND #$007F C1/084B: F0 2B BEQ $0878 C1/084D: AD A9 62 LDA $62A9 C1/0850: 29 FF 00 AND #$00FF C1/0853: F0 12 BEQ $0867 C1/0855: AD B0 64 LDA $64B0 C1/0858: 85 3A STA $3A C1/085A: 8D F5 43 STA $43F5 C1/085D: AD B2 64 LDA $64B2 C1/0860: 85 3C STA $3C C1/0862: 8D F7 43 STA $43F7 C1/0865: 80 11 BRA $0878 C1/0867: AD B4 64 LDA $64B4 C1/086A: 85 3A STA $3A C1/086C: 8D F5 43 STA $43F5 C1/086F: AD B6 64 LDA $64B6 C1/0872: 3A DEC C1/0873: 85 3C STA $3C C1/0875: 8D F7 43 STA $43F7 C1/0878: AD C1 62 LDA $62C1 C1/087B: 29 FF 00 AND #$00FF C1/087E: F0 04 BEQ $0884 C1/0880: 64 36 STZ $36 C1/0882: 64 38 STZ $38 C1/0884: A5 34 LDA $34 C1/0886: 10 4A BPL $08D2 C1/0888: BD B0 63 LDA $63B0,X C1/088B: 18 CLC C1/088C: 65 3A ADC $3A C1/088E: 9D F5 43 STA $43F5,X C1/0891: BD B2 63 LDA $63B2,X C1/0894: 18 CLC C1/0895: 65 3C ADC $3C C1/0897: 9D F7 43 STA $43F7,X C1/089A: BD F0 63 LDA $63F0,X C1/089D: 18 CLC C1/089E: 65 3A ADC $3A C1/08A0: 9D 35 44 STA $4435,X C1/08A3: BD F2 63 LDA $63F2,X C1/08A6: 18 CLC C1/08A7: 65 3C ADC $3C C1/08A9: 9D 37 44 STA $4437,X C1/08AC: BD 30 64 LDA $6430,X C1/08AF: 18 CLC C1/08B0: 65 3A ADC $3A C1/08B2: 9D 75 44 STA $4475,X C1/08B5: BD 32 64 LDA $6432,X C1/08B8: 18 CLC C1/08B9: 65 3C ADC $3C C1/08BB: 9D 77 44 STA $4477,X C1/08BE: BD 70 64 LDA $6470,X C1/08C1: 18 CLC C1/08C2: 65 3A ADC $3A C1/08C4: 9D B5 44 STA $44B5,X C1/08C7: BD 72 64 LDA $6472,X C1/08CA: 18 CLC C1/08CB: 65 3C ADC $3C C1/08CD: 9D B7 44 STA $44B7,X C1/08D0: 80 26 BRA $08F8 C1/08D2: F0 24 BEQ $08F8 C1/08D4: BD B0 63 LDA $63B0,X C1/08D7: 18 CLC C1/08D8: 65 3A ADC $3A C1/08DA: 9D F5 43 STA $43F5,X C1/08DD: BD B2 63 LDA $63B2,X C1/08E0: 18 CLC C1/08E1: 65 3C ADC $3C C1/08E3: 9D F7 43 STA $43F7,X C1/08E6: BD F0 63 LDA $63F0,X C1/08E9: 18 CLC C1/08EA: 65 3A ADC $3A C1/08EC: 9D 35 44 STA $4435,X C1/08EF: BD F2 63 LDA $63F2,X C1/08F2: 18 CLC C1/08F3: 65 3C ADC $3C C1/08F5: 9D 37 44 STA $4437,X C1/08F8: A5 44 LDA $44 C1/08FA: D0 24 BNE $0920 C1/08FC: BD 30 63 LDA $6330,X C1/08FF: 18 CLC C1/0900: 65 36 ADC $36 C1/0902: 9D 75 47 STA $4775,X C1/0905: BD 32 63 LDA $6332,X C1/0908: 18 CLC C1/0909: 65 38 ADC $38 C1/090B: 9D 77 47 STA $4777,X C1/090E: BD 70 63 LDA $6370,X C1/0911: 18 CLC C1/0912: 65 36 ADC $36 C1/0914: 9D B5 47 STA $47B5,X C1/0917: BD 72 63 LDA $6372,X C1/091A: 18 CLC C1/091B: 65 38 ADC $38 C1/091D: 9D B7 47 STA $47B7,X C1/0920: E8 INX C1/0921: E8 INX C1/0922: E8 INX C1/0923: E8 INX C1/0924: E0 40 CPX #$40 C1/0926: F0 03 BEQ $092B C1/0928: 4C 84 08 JMP $0884 C1/092B: 7B TDC C1/092C: E2 20 SEP #$20 C1/092E: A8 TAY C1/092F: A5 0E LDA $0E C1/0931: 4A LSR C1/0932: 29 3E AND #$3E C1/0934: AA TAX C1/0935: A5 44 LDA $44 C1/0937: F0 5A BEQ $0993 C1/0939: AD B8 EC LDA $ECB8 C1/093C: C9 2E CMP #$2E C1/093E: F0 1D BEQ $095D C1/0940: C9 37 CMP #$37 C1/0942: D0 32 BNE $0976 C1/0944: C2 20 REP #$20 C1/0946: BD FF E7 LDA $E7FF,X C1/0949: 99 77 47 STA $4777,Y C1/094C: E8 INX C1/094D: E8 INX C1/094E: 8A TXA C1/094F: 29 3F 00 AND #$003F C1/0952: AA TAX C1/0953: C8 INY C1/0954: C8 INY C1/0955: C8 INY C1/0956: C8 INY C1/0957: C0 80 CPY #$80 C1/0959: D0 EB BNE $0946 C1/095B: 80 33 BRA $0990 C1/095D: C2 20 REP #$20 C1/095F: BD 3F E8 LDA $E83F,X C1/0962: 99 77 47 STA $4777,Y C1/0965: E8 INX C1/0966: E8 INX C1/0967: 8A TXA C1/0968: 29 3F 00 AND #$003F C1/096B: AA TAX C1/096C: C8 INY C1/096D: C8 INY C1/096E: C8 INY C1/096F: C8 INY C1/0970: C0 80 CPY #$80 C1/0972: D0 EB BNE $095F C1/0974: 80 1A BRA $0990 C1/0976: C2 20 REP #$20 C1/0978: BD FF E7 LDA $E7FF,X C1/097B: 99 75 47 STA $4775,Y C1/097E: 99 77 47 STA $4777,Y C1/0981: E8 INX C1/0982: E8 INX C1/0983: 8A TXA C1/0984: 29 3F 00 AND #$003F C1/0987: AA TAX C1/0988: C8 INY C1/0989: C8 INY C1/098A: C8 INY C1/098B: C8 INY C1/098C: C0 80 CPY #$80 C1/098E: D0 E8 BNE $0978 C1/0990: 7B TDC C1/0991: E2 20 SEP #$20 C1/0993: C2 10 REP #$10 C1/0995: 60 RTS ; [ Update Pause ] stop_key: C1/0996: AD AB 62 LDA $62AB C1/0999: F0 1B BEQ $09B6 ; branch if battle is not paused C1/099B: AD ED E9 LDA $E9ED C1/099E: D0 3A BNE $09DA ; branch if sound effects are disabled C1/09A0: A5 09 LDA $09 C1/09A2: C9 10 CMP #$10 C1/09A4: D0 34 BNE $09DA ; branch if start button is pressed C1/09A6: 9C AB 62 STZ $62AB ; unpause battle C1/09A9: 7B TDC ; 0 = unpause music C1/09AA: 8F 41 21 00 STA $002141 C1/09AE: A9 F5 LDA #$F5 ; spc command $F5 (pause/unpause music) C1/09B0: 8F 40 21 00 STA $002140 C1/09B4: 80 24 BRA $09DA C1/09B6: AD 8A 62 LDA $628A C1/09B9: D0 21 BNE $09DC ; branch if in flashback mode C1/09BB: AD ED E9 LDA $E9ED C1/09BE: D0 1C BNE $09DC ; branch if sound effects are disabled C1/09C0: AD 0F EC LDA $EC0F C1/09C3: D0 17 BNE $09DC ; branch if victory animation or background scrolling C1/09C5: A5 09 LDA $09 C1/09C7: C9 10 CMP #$10 C1/09C9: D0 11 BNE $09DC ; branch if start button is pressed C1/09CB: A9 01 LDA #$01 ; 1 = pause music C1/09CD: 8D AB 62 STA $62AB ; pause battle C1/09D0: 8F 41 21 00 STA $002141 C1/09D4: A9 F5 LDA #$F5 ; spc command $F5 (pause/unpause music) C1/09D6: 8F 40 21 00 STA $002140 C1/09DA: 38 SEC C1/09DB: 60 RTS C1/09DC: 18 CLC C1/09DD: 60 RTS ; [ ] C1/09DE: 0A ASL C1/09DF: AA TAX C1/09E0: C2 20 REP #$20 C1/09E2: BF C4 D2 C2 LDA $C2D2C4,X C1/09E6: 8D 72 43 STA $4372 C1/09E9: BF D4 D2 C2 LDA $C2D2D4,X C1/09ED: 8D 16 21 STA $2116 C1/09F0: A0 80 00 LDY #$0080 C1/09F3: 8C 75 43 STY $4375 C1/09F6: A9 80 00 LDA #$0080 C1/09F9: 8D 0B 42 STA $420B C1/09FC: BF CC D2 C2 LDA $C2D2CC,X C1/0A00: 8D 72 43 STA $4372 C1/0A03: BF DC D2 C2 LDA $C2D2DC,X C1/0A07: 8D 16 21 STA $2116 C1/0A0A: 8C 75 43 STY $4375 C1/0A0D: A9 80 00 LDA #$0080 C1/0A10: E2 20 SEP #$20 C1/0A12: 8D 0B 42 STA $420B C1/0A15: 60 RTS ; [ Update PPU ] C1/0A16: 7B TDC C1/0A17: 48 PHA C1/0A18: AB PLB C1/0A19: 8D 0C 42 STA $420C ; disable HDMA C1/0A1C: 8D 74 43 STA $4374 ; C1/0A1F: 8D 77 43 STA $4377 C1/0A22: A8 TAY C1/0A23: AD 3F 21 LDA $213F ; latch counters C1/0A26: A9 80 LDA #$80 C1/0A28: 8D 00 21 STA $2100 ; screen off C1/0A2B: 8C 02 21 STY $2102 ; clear sprite data address C1/0A2E: A2 00 04 LDX #$0400 C1/0A31: 8E 70 43 STX $4370 ; copy sprite data to PPU C1/0A34: A2 00 03 LDX #$0300 C1/0A37: 8E 72 43 STX $4372 C1/0A3A: A2 20 02 LDX #$0220 C1/0A3D: 8E 75 43 STX $4375 C1/0A40: A9 80 LDA #$80 C1/0A42: 8D 0B 42 STA $420B C1/0A45: 7B TDC C1/0A46: 8D 21 21 STA $2121 ; copy bg palettes to PPU (non battle-bg) C1/0A49: A2 02 22 LDX #$2202 C1/0A4C: 8E 70 43 STX $4370 C1/0A4F: A2 00 7E LDX #$7E00 C1/0A52: 8E 72 43 STX $4372 C1/0A55: A9 7E LDA #$7E C1/0A57: 8D 74 43 STA $4374 C1/0A5A: A2 A0 00 LDX #$00A0 C1/0A5D: 8E 75 43 STX $4375 C1/0A60: A9 80 LDA #$80 C1/0A62: 8D 0B 42 STA $420B C1/0A65: A2 11 EC LDX #$EC11 ; copy battle bg palettes to PPU C1/0A68: 8E 72 43 STX $4372 C1/0A6B: A9 7E LDA #$7E C1/0A6D: 8D 74 43 STA $4374 C1/0A70: A2 60 00 LDX #$0060 C1/0A73: 8E 75 43 STX $4375 C1/0A76: A9 80 LDA #$80 C1/0A78: 8D 0B 42 STA $420B C1/0A7B: A2 00 7F LDX #$7F00 ; copy sprite palettes to PPU C1/0A7E: 8E 72 43 STX $4372 C1/0A81: A9 7E LDA #$7E C1/0A83: 8D 74 43 STA $4374 C1/0A86: A2 00 01 LDX #$0100 C1/0A89: 8E 75 43 STX $4375 C1/0A8C: A9 80 LDA #$80 C1/0A8E: 8D 0B 42 STA $420B C1/0A91: A9 01 LDA #$01 ; C1/0A93: 8D 70 43 STA $4370 C1/0A96: A9 18 LDA #$18 C1/0A98: 8D 71 43 STA $4371 C1/0A9B: AF BD 62 7E LDA $7E62BD C1/0A9F: D0 4B BNE $0AEC C1/0AA1: A5 98 LDA $98 C1/0AA3: 29 1F AND #$1F C1/0AA5: 0A ASL C1/0AA6: AA TAX C1/0AA7: C2 20 REP #$20 C1/0AA9: A9 80 00 LDA #$0080 C1/0AAC: 8D 75 43 STA $4375 C1/0AAF: BF 24 D3 C2 LDA $C2D324,X C1/0AB3: 8D 16 21 STA $2116 C1/0AB6: BF E4 D2 C2 LDA $C2D2E4,X C1/0ABA: 8D 72 43 STA $4372 C1/0ABD: 7B TDC C1/0ABE: E2 20 SEP #$20 C1/0AC0: A9 7F LDA #$7F C1/0AC2: 8D 74 43 STA $4374 C1/0AC5: A9 80 LDA #$80 C1/0AC7: 8D 0B 42 STA $420B C1/0ACA: A5 98 LDA $98 C1/0ACC: 29 03 AND #$03 C1/0ACE: 85 36 STA $36 C1/0AD0: 20 DE 09 JSR $09DE C1/0AD3: AF BB 64 7E LDA $7E64BB C1/0AD7: D0 13 BNE $0AEC C1/0AD9: AF AD 7B 7E LDA $7E7BAD C1/0ADD: 30 0D BMI $0AEC C1/0ADF: C5 36 CMP $36 C1/0AE1: F0 03 BEQ $0AE6 C1/0AE3: 20 DE 09 JSR $09DE C1/0AE6: A9 FF LDA #$FF C1/0AE8: 8F AD 7B 7E STA $7E7BAD C1/0AEC: A2 40 00 LDX #$0040 C1/0AEF: 8E 75 43 STX $4375 C1/0AF2: A2 ED 5F LDX #$5FED C1/0AF5: 8E 72 43 STX $4372 C1/0AF8: A2 20 40 LDX #$4020 C1/0AFB: 8E 16 21 STX $2116 C1/0AFE: A9 7E LDA #$7E C1/0B00: 8D 74 43 STA $4374 C1/0B03: A9 80 LDA #$80 C1/0B05: 8D 0B 42 STA $420B C1/0B08: AF BB 64 7E LDA $7E64BB C1/0B0C: F0 64 BEQ $0B72 C1/0B0E: A9 D8 LDA #$D8 C1/0B10: 8D 74 43 STA $4374 C1/0B13: C2 20 REP #$20 C1/0B15: A0 80 00 LDY #$0080 C1/0B18: A2 80 00 LDX #$0080 C1/0B1B: AF BC 64 7E LDA $7E64BC C1/0B1F: 8D 72 43 STA $4372 C1/0B22: AF C4 64 7E LDA $7E64C4 C1/0B26: 8D 16 21 STA $2116 C1/0B29: 8C 75 43 STY $4375 C1/0B2C: 8E 0B 42 STX $420B C1/0B2F: AF BE 64 7E LDA $7E64BE C1/0B33: 8D 72 43 STA $4372 C1/0B36: AF C6 64 7E LDA $7E64C6 C1/0B3A: 8D 16 21 STA $2116 C1/0B3D: 8C 75 43 STY $4375 C1/0B40: 8E 0B 42 STX $420B C1/0B43: AF C0 64 7E LDA $7E64C0 C1/0B47: 8D 72 43 STA $4372 C1/0B4A: AF C8 64 7E LDA $7E64C8 C1/0B4E: 8D 16 21 STA $2116 C1/0B51: 8C 75 43 STY $4375 C1/0B54: 8E 0B 42 STX $420B C1/0B57: AF C2 64 7E LDA $7E64C2 C1/0B5B: 8D 72 43 STA $4372 C1/0B5E: AF CA 64 7E LDA $7E64CA C1/0B62: 8D 16 21 STA $2116 C1/0B65: 8C 75 43 STY $4375 C1/0B68: 8E 0B 42 STX $420B C1/0B6B: 7B TDC C1/0B6C: E2 20 SEP #$20 C1/0B6E: 8F BB 64 7E STA $7E64BB C1/0B72: 60 RTS ; [ Update Running/Fade In/Timers ] escape_set: C1/0B73: 9C 45 2F STZ $2F45 ; disable characters running animation C1/0B76: 22 A4 B8 C2 JSL $C2B8A4 ; update screen fade in C1/0B7A: AD 4B 2F LDA $2F4B ; can't run with L+R C1/0B7D: 29 01 AND #$01 C1/0B7F: 0D 9A 62 ORA $629A ; C1/0B82: 0D EF E9 ORA $E9EF ; battle time stopped C1/0B85: D0 0B BNE $0B92 ; C1/0B87: A5 0A LDA $0A ; L+R buttons pressed C1/0B89: 29 30 AND #$30 C1/0B8B: C9 30 CMP #$30 C1/0B8D: D0 03 BNE $0B92 C1/0B8F: EE 45 2F INC $2F45 ; enable characters running animation C1/0B92: A6 0E LDX $0E ; increment frame counter C1/0B94: E8 INX C1/0B95: 86 0E STX $0E C1/0B97: 22 25 B9 C2 JSL $C2B925 ; update timer tile data C1/0B9B: 64 47 STZ $47 ; clear waiting for vblank flag C1/0B9D: AD AB 62 LDA $62AB C1/0BA0: D0 04 BNE $0BA6 ; branch if battle is paused C1/0BA2: 22 15 00 C0 JSL $C00015 ; decrement timers C1/0BA6: 60 RTS ; [ Battle NMI ] nmi_battle: C1/0BA7: 08 PHP C1/0BA8: C2 30 REP #$30 C1/0BAA: 48 PHA C1/0BAB: DA PHX C1/0BAC: 5A PHY C1/0BAD: 8B PHB C1/0BAE: 0B PHD C1/0BAF: A2 00 00 LDX #$0000 C1/0BB2: DA PHX C1/0BB3: 2B PLD C1/0BB4: 7B TDC C1/0BB5: E2 20 SEP #$20 C1/0BB7: AF 10 42 00 LDA $004210 C1/0BBB: A5 46 LDA $46 ; return if NMI is in progress C1/0BBD: F0 03 BEQ $0BC2 C1/0BBF: 4C 42 0D JMP $0D42 C1/0BC2: E6 46 INC $46 ; NMI in progress C1/0BC4: 20 16 0A JSR $0A16 ; update PPU C1/0BC7: A9 7E LDA #$7E C1/0BC9: 48 PHA C1/0BCA: AB PLB C1/0BCB: 20 69 04 JSR $0469 ; load "short" menu window tile data C1/0BCE: 20 CA 04 JSR $04CA ; copy menu window tile data to VRAM C1/0BD1: 20 99 5D JSR $5D99 ; copy menu text tile data to VRAM C1/0BD4: 20 A1 05 JSR $05A1 ; copy animation bg tile data to VRAM C1/0BD7: 20 40 06 JSR $0640 ; copy damage numeral graphics to VRAM C1/0BDA: 20 6F 19 JSR $196F ; large data DMA to VRAM C1/0BDD: 22 8F A8 C2 JSL $C2A88F C1/0BE1: AD EF EC LDA $ECEF ; branch if timer 0 is disabled C1/0BE4: 29 40 AND #$40 C1/0BE6: F0 2F BEQ $0C17 C1/0BE8: C2 20 REP #$20 C1/0BEA: A9 E4 78 LDA #$78E4 ; VRAM $78E4 (timer tile data) C1/0BED: 8F 16 21 00 STA $002116 C1/0BF1: AD 90 62 LDA $6290 ; copy timer tile data to VRAM C1/0BF4: 8F 18 21 00 STA $002118 C1/0BF8: AD 92 62 LDA $6292 C1/0BFB: 8F 18 21 00 STA $002118 C1/0BFF: AD 94 62 LDA $6294 C1/0C02: 8F 18 21 00 STA $002118 C1/0C06: AD 96 62 LDA $6296 C1/0C09: 8F 18 21 00 STA $002118 C1/0C0D: AD 98 62 LDA $6298 C1/0C10: 8F 18 21 00 STA $002118 C1/0C14: 7B TDC C1/0C15: E2 20 SEP #$20 C1/0C17: 20 FA 02 JSR $02FA ; update HDMA #3 and #5 C1/0C1A: 20 73 03 JSR $0373 C1/0C1D: 20 47 03 JSR $0347 ; update HDMA #7 C1/0C20: 20 FB 03 JSR $03FB C1/0C23: AD C4 E9 LDA $E9C4 C1/0C26: 8F 1B 21 00 STA $00211B C1/0C2A: AD C5 E9 LDA $E9C5 C1/0C2D: 8F 1B 21 00 STA $00211B C1/0C31: AD C6 E9 LDA $E9C6 C1/0C34: 8F 1C 21 00 STA $00211C C1/0C38: AD C7 E9 LDA $E9C7 C1/0C3B: 8F 1C 21 00 STA $00211C C1/0C3F: AD C8 E9 LDA $E9C8 C1/0C42: 8F 1D 21 00 STA $00211D C1/0C46: AD C9 E9 LDA $E9C9 C1/0C49: 8F 1D 21 00 STA $00211D C1/0C4D: AD CA E9 LDA $E9CA C1/0C50: 8F 1E 21 00 STA $00211E C1/0C54: AD CB E9 LDA $E9CB C1/0C57: 8F 1E 21 00 STA $00211E C1/0C5B: AD CC E9 LDA $E9CC C1/0C5E: 8F 1F 21 00 STA $00211F C1/0C62: AD CD E9 LDA $E9CD C1/0C65: 8F 1F 21 00 STA $00211F C1/0C69: AD CE E9 LDA $E9CE C1/0C6C: 8F 20 21 00 STA $002120 C1/0C70: AD CF E9 LDA $E9CF C1/0C73: 8F 20 21 00 STA $002120 C1/0C77: C2 20 REP #$20 C1/0C79: A9 08 F7 LDA #$F708 C1/0C7C: 8F 26 21 00 STA $002126 C1/0C80: A9 FF 00 LDA #$00FF C1/0C83: 8F 28 21 00 STA $002128 C1/0C87: 7B TDC C1/0C88: E2 20 SEP #$20 C1/0C8A: AD AB 62 LDA $62AB C1/0C8D: F0 06 BEQ $0C95 ; branch if battle is not paused C1/0C8F: AD F9 E9 LDA $E9F9 ; screen brightness / 2 C1/0C92: 4A LSR C1/0C93: 80 03 BRA $0C98 C1/0C95: AD F9 E9 LDA $E9F9 ; screen brightness C1/0C98: D0 02 BNE $0C9C ; branch if 0 brightness C1/0C9A: 09 80 ORA #$80 ; screen off C1/0C9C: 8F 00 21 00 STA $002100 ; set screen brightness C1/0CA0: 20 EA 07 JSR $07EA ; C1/0CA3: 20 96 09 JSR $0996 ; update pause C1/0CA6: B0 5B BCS $0D03 ; branch if battle is paused C1/0CA8: AD CA 7B LDA $7BCA C1/0CAB: F0 0F BEQ $0CBC ; branch if menu is closed C1/0CAD: AE CA 62 LDX $62CA ; active character C1/0CB0: BD 01 40 LDA $4001,X ; character menu order C1/0CB3: C9 FF CMP #$FF C1/0CB5: D0 05 BNE $0CBC ; branch if menu is open C1/0CB7: A9 01 LDA #$01 C1/0CB9: 8D CB 7B STA $7BCB ; close menu C1/0CBC: 20 A3 07 JSR $07A3 ; clear sprite data C1/0CBF: A9 08 LDA #$08 ; next available sprite = 8 C1/0CC1: 85 71 STA $71 C1/0CC3: 20 CE B3 JSR $B3CE ; update roulette cursor C1/0CC6: 20 6C 27 JSR $276C ; update sprites C1/0CC9: 20 59 06 JSR $0659 ; update character/monster positions C1/0CCC: 20 40 B5 JSR $B540 ; update cursor sprites C1/0CCF: 20 A2 36 JSR $36A2 ; update character graphics C1/0CD2: 20 0C 05 JSR $050C ; C1/0CD5: AD BF 62 LDA $62BF ; branch if character color palettes are up to date C1/0CD8: D0 03 BNE $0CDD C1/0CDA: 20 D3 2D JSR $2DD3 ; update character color palettes C1/0CDD: 20 14 5B JSR $5B14 ; update menu windows C1/0CE0: 20 5C 5A JSR $5A5C ; update menu text C1/0CE3: AD 85 7B LDA $7B85 ; branch if menu doesn't open instantly C1/0CE6: F0 0C BEQ $0CF4 C1/0CE8: 20 14 5B JSR $5B14 ; update menu windows C1/0CEB: 20 5C 5A JSR $5A5C ; update menu text C1/0CEE: 20 14 5B JSR $5B14 ; update menu windows C1/0CF1: 20 5C 5A JSR $5A5C ; update menu text C1/0CF4: 20 24 55 JSR $5524 ; C1/0CF7: 20 00 18 JSR $1800 ; update sound effects C1/0CFA: 20 73 0B JSR $0B73 ; update running/fade in/timers C1/0CFD: 8B PHB C1/0CFE: 22 0C 00 C3 JSL $C3000C ; update game time C1/0D02: AB PLB C1/0D03: 7B TDC C1/0D04: C2 20 REP #$20 C1/0D06: AD 0E 00 LDA $000E ; frame counter C1/0D09: 29 0F 00 AND #$000F C1/0D0C: AA TAX C1/0D0D: AD 85 62 LDA $6285 ; branch if screen shaking is disabled C1/0D10: 29 FF 00 AND #$00FF C1/0D13: F0 1F BEQ $0D34 C1/0D15: C9 80 00 CMP #$0080 C1/0D18: F0 0D BEQ $0D27 ; branch if horizontal shaking only (final battle scrolling) C1/0D1A: BF 4C 0D C1 LDA $C10D4C,X ; vertical scroll position C1/0D1E: 29 FF 00 AND #$00FF C1/0D21: 09 00 FF ORA #$FF00 C1/0D24: 8D B2 64 STA $64B2 C1/0D27: BF 4B 0D C1 LDA $C10D4B,X ; horizontal scroll position C1/0D2B: 29 FF 00 AND #$00FF C1/0D2E: 09 00 FF ORA #$FF00 C1/0D31: 8D B0 64 STA $64B0 C1/0D34: 22 58 B2 C2 JSL $C2B258 ; update battle bg palette and scrolling C1/0D38: 7B TDC C1/0D39: E2 20 SEP #$20 C1/0D3B: 20 85 1B JSR $1B85 ; update controller C1/0D3E: E6 98 INC $98 ; increment frame counter C1/0D40: 64 46 STZ $46 ; NMI complete C1/0D42: C2 30 REP #$30 C1/0D44: 2B PLD C1/0D45: AB PLB C1/0D46: 7A PLY C1/0D47: FA PLX C1/0D48: 68 PLA C1/0D49: 28 PLP C1/0D4A: 40 RTI ; battle irq jumps here ; screen shaking data (horizontal then vertical) shake_tbl: C1/0D4B: .DB $FF, $FD, $FE, $FD, $FC, $FE, $FF, $FD, $FC, $FE, $FD, $FF, $FD, $FE, $FF, $FE, $FF ; [ Init Sine Wave Tables ] sin_tmp_buf_init: C1/0D5C: A2 BF E7 LDX #$E7BF C1/0D5F: 64 24 STZ $24 C1/0D61: 7B TDC C1/0D62: 20 7D 0D JSR $0D7D C1/0D65: A5 24 LDA $24 C1/0D67: 18 CLC C1/0D68: 69 02 ADC #$02 C1/0D6A: 85 24 STA $24 C1/0D6C: C2 20 REP #$20 C1/0D6E: 8A TXA C1/0D6F: 18 CLC C1/0D70: 69 40 00 ADC #$0040 C1/0D73: AA TAX C1/0D74: 7B TDC C1/0D75: E2 20 SEP #$20 C1/0D77: E0 BF E9 CPX #$E9BF C1/0D7A: D0 E5 BNE $0D61 C1/0D7C: 60 RTS ; [ Calculate Sine Wave Table ] ; +X = destination address (+$7E0000) ; $24 = wave amplitude sin_tmp_buf_set: C1/0D7D: A9 10 LDA #$10 C1/0D7F: 85 1A STA $1A C1/0D81: A9 40 LDA #$40 C1/0D83: 85 1C STA $1C C1/0D85: 64 1D STZ $1D C1/0D87: 64 22 STZ $22 C1/0D89: 80 06 BRA $0D91 sin_tmp_buf_set64: C1/0D8B: 48 PHA C1/0D8C: A9 01 LDA #$01 C1/0D8E: 85 22 STA $22 C1/0D90: 68 PLA sin_tmp_buf_set_main: C1/0D91: DA PHX C1/0D92: 85 16 STA $16 C1/0D94: 86 10 STX $10 C1/0D96: A9 7E LDA #$7E C1/0D98: 85 12 STA $12 C1/0D9A: 64 1B STZ $1B C1/0D9C: 8B PHB C1/0D9D: A9 00 LDA #$00 C1/0D9F: 48 PHA C1/0DA0: AB PLB C1/0DA1: 7B TDC C1/0DA2: A8 TAY C1/0DA3: A5 16 LDA $16 C1/0DA5: C2 20 REP #$20 C1/0DA7: 0A ASL C1/0DA8: 85 16 STA $16 C1/0DAA: A5 22 LDA $22 C1/0DAC: 29 01 00 AND #$0001 C1/0DAF: F0 22 BEQ $0DD3 ; C1/0DB1: E2 10 SEP #$10 C1/0DB3: 20 02 6C JSR $6C02 C1/0DB6: C2 10 REP #$10 C1/0DB8: 3A DEC C1/0DB9: 3A DEC C1/0DBA: 97 10 STA [$10],Y C1/0DBC: A5 16 LDA $16 C1/0DBE: 18 CLC C1/0DBF: 65 1A ADC $1A C1/0DC1: 85 16 STA $16 C1/0DC3: C8 INY C1/0DC4: C8 INY C1/0DC5: C8 INY C1/0DC6: C8 INY C1/0DC7: C4 1C CPY $1C C1/0DC9: D0 E6 BNE $0DB1 C1/0DCB: 7B TDC C1/0DCC: C2 10 REP #$10 C1/0DCE: E2 20 SEP #$20 C1/0DD0: AB PLB C1/0DD1: FA PLX C1/0DD2: 60 RTS ; C1/0DD3: E2 10 SEP #$10 C1/0DD5: 20 02 6C JSR $6C02 C1/0DD8: C2 10 REP #$10 C1/0DDA: 3A DEC C1/0DDB: 3A DEC C1/0DDC: 97 10 STA [$10],Y C1/0DDE: A5 16 LDA $16 C1/0DE0: 18 CLC C1/0DE1: 65 1A ADC $1A C1/0DE3: 85 16 STA $16 C1/0DE5: C8 INY C1/0DE6: C8 INY C1/0DE7: C4 1C CPY $1C C1/0DE9: D0 E8 BNE $0DD3 C1/0DEB: 7B TDC C1/0DEC: C2 10 REP #$10 C1/0DEE: E2 20 SEP #$20 C1/0DF0: AB PLB C1/0DF1: FA PLX C1/0DF2: 60 RTS ; [ Update HP/MP/Status Buffers (for graphics) ] copy_player_work: C1/0DF3: 7B TDC C1/0DF4: AA TAX C1/0DF5: CA DEX C1/0DF6: 86 10 STX $10 C1/0DF8: 86 12 STX $12 C1/0DFA: AD 8D 62 LDA $628D ; branch if victory fanfare is happening C1/0DFD: D0 0D BNE $0E0C C1/0DFF: AD EF E9 LDA $E9EF ; branch if battle time is not stopped C1/0E02: F0 08 BEQ $0E0C C1/0E04: E8 INX C1/0E05: 86 12 STX $12 ; mask all statuses except imp, clear, and magitek C1/0E07: A2 38 00 LDX #$0038 C1/0E0A: 86 10 STX $10 C1/0E0C: C2 20 REP #$20 C1/0E0E: 7B TDC C1/0E0F: AA TAX C1/0E10: A8 TAY C1/0E11: BD 78 2E LDA $2E78,X ; update hp/mp/status buffers C1/0E14: 99 B5 2E STA $2EB5,Y C1/0E17: BD 80 2E LDA $2E80,X C1/0E1A: 99 B7 2E STA $2EB7,Y C1/0E1D: BD 88 2E LDA $2E88,X C1/0E20: 99 B9 2E STA $2EB9,Y C1/0E23: BD 90 2E LDA $2E90,X C1/0E26: 99 BB 2E STA $2EBB,Y C1/0E29: BD 98 2E LDA $2E98,X C1/0E2C: 25 10 AND $10 C1/0E2E: 99 BD 2E STA $2EBD,Y C1/0E31: BD A0 2E LDA $2EA0,X C1/0E34: 25 12 AND $12 C1/0E36: 99 BF 2E STA $2EBF,Y C1/0E39: E8 INX ; next character C1/0E3A: E8 INX C1/0E3B: 98 TYA C1/0E3C: 18 CLC C1/0E3D: 69 20 00 ADC #$0020 C1/0E40: A8 TAY C1/0E41: E0 08 00 CPX #$0008 C1/0E44: D0 CB BNE $0E11 C1/0E46: 7B TDC C1/0E47: E2 20 SEP #$20 C1/0E49: 64 10 STZ $10 C1/0E4B: 7B TDC C1/0E4C: AA TAX C1/0E4D: BD A1 2E LDA $2EA1,X ; update characters with hidden status (sneezed, etc.) C1/0E50: 29 20 AND #$20 C1/0E52: 49 20 EOR #$20 C1/0E54: 4A LSR C1/0E55: 05 10 ORA $10 C1/0E57: 4A LSR C1/0E58: 85 10 STA $10 C1/0E5A: E8 INX C1/0E5B: E8 INX C1/0E5C: E0 08 00 CPX #$0008 C1/0E5F: D0 EC BNE $0E4D C1/0E61: A5 10 LDA $10 C1/0E63: 8D AD 61 STA $61AD C1/0E66: 60 RTS ; [ ] status_playcopy: C1/0E67: C2 20 REP #$20 C1/0E69: 7B TDC C1/0E6A: AA TAX C1/0E6B: BD BD 2E LDA $2EBD,X C1/0E6E: 9D C1 2E STA $2EC1,X C1/0E71: BD BF 2E LDA $2EBF,X C1/0E74: 9D C3 2E STA $2EC3,X C1/0E77: 8A TXA C1/0E78: 18 CLC C1/0E79: 69 20 00 ADC #$0020 C1/0E7C: AA TAX C1/0E7D: E0 80 00 CPX #$0080 C1/0E80: D0 E9 BNE $0E6B C1/0E82: 7B TDC C1/0E83: E2 20 SEP #$20 C1/0E85: 60 RTS ; [ Load Battle Data ] mon_data_get: C1/0E86: A2 0F 00 LDX #$000F ; battle data is 15 bytes each C1/0E89: 86 22 STX $22 C1/0E8B: AE E0 11 LDX $11E0 ; battle number C1/0E8E: 86 24 STX $24 C1/0E90: C2 20 REP #$20 C1/0E92: 20 F4 18 JSR $18F4 ; ++$26 = $22 * +$24 (pointer to battle data) C1/0E95: E2 20 SEP #$20 C1/0E97: A6 26 LDX $26 C1/0E99: BF 0E 62 CF LDA $CF620E,X ; $28 = top bit of monster numbers C1/0E9D: 85 28 STA $28 C1/0E9F: C2 20 REP #$20 C1/0EA1: BF 00 62 CF LDA $CF6200,X ; $10 = bg1 monsters (not set for any monsters) C1/0EA5: EB XBA C1/0EA6: 4A LSR C1/0EA7: 4A LSR C1/0EA8: 4A LSR C1/0EA9: 4A LSR C1/0EAA: 4A LSR C1/0EAB: 4A LSR C1/0EAC: 29 3F 00 AND #$003F C1/0EAF: 85 10 STA $10 C1/0EB1: 7B TDC C1/0EB2: E2 20 SEP #$20 C1/0EB4: BF 00 62 CF LDA $CF6200,X ; VRAM map index C1/0EB8: 4A LSR C1/0EB9: 4A LSR C1/0EBA: 4A LSR C1/0EBB: 4A LSR C1/0EBC: 8D 00 20 STA $2000 C1/0EBF: BF 01 62 CF LDA $CF6201,X ; monsters present C1/0EC3: 29 3F AND #$3F C1/0EC5: 8D AA 61 STA $61AA C1/0EC8: 7B TDC C1/0EC9: A8 TAY C1/0ECA: 46 28 LSR $28 C1/0ECC: 2A ROL C1/0ECD: 29 01 AND #$01 C1/0ECF: 85 2A STA $2A C1/0ED1: BF 08 62 CF LDA $CF6208,X ; x position C1/0ED5: 29 F0 AND #$F0 C1/0ED7: 4A LSR C1/0ED8: 99 C3 80 STA $80C3,Y C1/0EDB: 7B TDC C1/0EDC: 99 C4 80 STA $80C4,Y C1/0EDF: BF 08 62 CF LDA $CF6208,X ; y position C1/0EE3: 29 0F AND #$0F C1/0EE5: 0A ASL C1/0EE6: 0A ASL C1/0EE7: 0A ASL C1/0EE8: 99 CF 80 STA $80CF,Y C1/0EEB: 7B TDC C1/0EEC: 99 D0 80 STA $80D0,Y C1/0EEF: 46 10 LSR $10 C1/0EF1: 2A ROL C1/0EF2: 29 01 AND #$01 C1/0EF4: 99 F4 80 STA $80F4,Y ; bg1 monster (never used) C1/0EF7: C8 INY C1/0EF8: C8 INY C1/0EF9: E8 INX C1/0EFA: C0 0C 00 CPY #$000C C1/0EFD: D0 CB BNE $0ECA C1/0EFF: 60 RTS ; [ Clear BG1 Vertical Scroll HDMA Data (battlefield region) ] bg1_line_init: C1/0F00: C2 20 REP #$20 C1/0F02: 7B TDC C1/0F03: AA TAX C1/0F04: A9 FF FF LDA #$FFFF C1/0F07: 9D F7 43 STA $43F7,X C1/0F0A: E8 INX C1/0F0B: E8 INX C1/0F0C: E8 INX C1/0F0D: E8 INX C1/0F0E: E0 5C 02 CPX #$025C C1/0F11: D0 F4 BNE $0F07 C1/0F13: 7B TDC C1/0F14: E2 20 SEP #$20 C1/0F16: 60 RTS ; [ Init ??? ] line_init: C1/0F17: 22 F7 B6 C2 JSL $C2B6F7 C1/0F1B: 20 A5 46 JSR $46A5 C1/0F1E: 60 RTS ; [ ] set_mess_main_poi: C1/0F1F: A2 FF FF LDX #$FFFF C1/0F22: 8E D6 64 STX $64D6 C1/0F25: 8E D8 64 STX $64D8 C1/0F28: E8 INX C1/0F29: A8 TAY C1/0F2A: 64 10 STZ $10 C1/0F2C: 64 12 STZ $12 C1/0F2E: AD 47 2F LDA $2F47 ; characters acting as enemies C1/0F31: 49 FF EOR #$FF C1/0F33: 85 14 STA $14 C1/0F35: AD 92 61 LDA $6192 ; C1/0F38: 25 14 AND $14 C1/0F3A: 85 14 STA $14 C1/0F3C: BD AE 2E LDA $2EAE,X ; character graphics index C1/0F3F: C9 FF CMP #$FF C1/0F41: F0 12 BEQ $0F55 ; branch if no character character C1/0F43: A5 12 LDA $12 C1/0F45: 09 10 ORA #$10 ; activate character C1/0F47: 85 12 STA $12 C1/0F49: A5 14 LDA $14 C1/0F4B: 29 01 AND #$01 C1/0F4D: F0 06 BEQ $0F55 C1/0F4F: A5 10 LDA $10 C1/0F51: 99 D6 64 STA $64D6,Y C1/0F54: C8 INY C1/0F55: 46 14 LSR $14 ; next character C1/0F57: 46 12 LSR $12 C1/0F59: E6 10 INC $10 C1/0F5B: 8A TXA C1/0F5C: 18 CLC C1/0F5D: 69 20 ADC #$20 C1/0F5F: AA TAX C1/0F60: C9 80 CMP #$80 C1/0F62: D0 D8 BNE $0F3C C1/0F64: A5 12 LDA $12 C1/0F66: 8D 1D 20 STA $201D C1/0F69: 9C AC 61 STZ $61AC C1/0F6C: 9C AD 61 STZ $61AD C1/0F6F: AD 4A 2F LDA $2F4A ; character AI index C1/0F72: 85 22 STA $22 C1/0F74: A9 18 LDA #$18 C1/0F76: 85 24 STA $24 C1/0F78: 20 D9 18 JSR $18D9 ; multiply $22 * $24 C1/0F7B: A6 26 LDX $26 C1/0F7D: BF 00 FD D0 LDA $D0FD00,X ; character AI data C1/0F81: 29 01 AND #$01 C1/0F83: F0 09 BEQ $0F8E ; branch if character names are not hidden C1/0F85: A2 FF FF LDX #$FFFF C1/0F88: 8E D6 64 STX $64D6 ; hide character names C1/0F8B: 8E D8 64 STX $64D8 C1/0F8E: 60 RTS ; [ Check if Characters Can Change Equipment ] chr_equip_init: C1/0F8F: 7B TDC C1/0F90: A8 TAY C1/0F91: 98 TYA C1/0F92: 0A ASL C1/0F93: 0A ASL C1/0F94: 0A ASL C1/0F95: 0A ASL C1/0F96: 0A ASL C1/0F97: AA TAX C1/0F98: BD C6 2E LDA $2EC6,X ; actor number C1/0F9B: 85 22 STA $22 C1/0F9D: A9 16 LDA #$16 C1/0F9F: 85 24 STA $24 C1/0FA1: 20 D9 18 JSR $18D9 ; multiply $22 * $24 C1/0FA4: A6 26 LDX $26 C1/0FA6: BF B5 7C ED LDA $ED7CB5,X ; character can't change equipment during battle (from character initial properties) C1/0FAA: 29 10 AND #$10 C1/0FAC: 99 86 62 STA $6286,Y C1/0FAF: C8 INY ; next character C1/0FB0: C0 04 00 CPY #$0004 C1/0FB3: D0 DC BNE $0F91 C1/0FB5: 60 RTS ; [ ] player_work_init: C1/0FB6: A2 07 00 LDX #$0007 C1/0FB9: 9E AE 2E STZ $2EAE,X C1/0FBC: 9E CE 2E STZ $2ECE,X C1/0FBF: 9E EE 2E STZ $2EEE,X C1/0FC2: 9E 0E 2F STZ $2F0E,X C1/0FC5: E8 INX C1/0FC6: E0 16 00 CPX #$0016 C1/0FC9: D0 EE BNE $0FB9 C1/0FCB: AD 98 2E LDA $2E98 C1/0FCE: 0D 9A 2E ORA $2E9A C1/0FD1: 0D 9C 2E ORA $2E9C C1/0FD4: 0D 9E 2E ORA $2E9E C1/0FD7: 29 08 AND #$08 C1/0FD9: 4A LSR C1/0FDA: 4A LSR C1/0FDB: 4A LSR C1/0FDC: 8D BA 64 STA $64BA C1/0FDF: 60 RTS ; [ Init Character Graphics ] user_init_option: C1/0FE0: 7B TDC C1/0FE1: AA TAX C1/0FE2: 9E B6 61 STZ $61B6,X ; clear character graphics data C1/0FE5: E8 INX C1/0FE6: E0 80 00 CPX #$0080 C1/0FE9: D0 F7 BNE $0FE2 C1/0FEB: 9C EC E9 STZ $E9EC ; disable animation sound effect C1/0FEE: 9C ED E9 STZ $E9ED ; disable sound effects C1/0FF1: AD D1 1D LDA $1DD1 ; battle end event flags C1/0FF4: 8D EF EC STA $ECEF C1/0FF7: AD 4E 1D LDA $1D4E ; wallpaper C1/0FFA: 29 07 AND #$07 C1/0FFC: 8D 34 2F STA $2F34 C1/0FFF: 9C F1 E9 STZ $E9F1 ; C1/1002: A9 FF LDA #$FF C1/1004: 8D 46 2F STA $2F46 ; make all characters targettable C1/1007: 8D 91 61 STA $6191 ; C1/100A: 8D 0F EC STA $EC0F ; disable pause C1/100D: 22 43 BD C2 JSL $C2BD43 ; init character AI data C1/1011: 20 86 0E JSR $0E86 C1/1014: AD AA 61 LDA $61AA C1/1017: 8D 1E 20 STA $201E C1/101A: 8D 2F 2F STA $2F2F C1/101D: 8D AB 61 STA $61AB C1/1020: 7B TDC C1/1021: AA TAX C1/1022: CA DEX C1/1023: 8E B2 61 STX $61B2 C1/1026: 8E B4 61 STX $61B4 C1/1029: 60 RTS ; [ Init Battle Graphics Data ] user_init: C1/102A: 22 15 00 C0 JSL $C00015 ; decrement timers C1/102E: 7B TDC C1/102F: AA TAX C1/1030: A9 E0 LDA #$E0 C1/1032: 9D 00 03 STA $0300,X ; clear sprite data C1/1035: E8 INX C1/1036: E0 00 02 CPX #$0200 C1/1039: D0 F7 BNE $1032 C1/103B: 7B TDC C1/103C: AA TAX C1/103D: 9E 00 05 STZ $0500,X ; clear high sprite data C1/1040: E8 INX C1/1041: E0 20 00 CPX #$0020 C1/1044: D0 F7 BNE $103D C1/1046: A0 00 40 LDY #$4000 C1/1049: A2 00 20 LDX #$2000 C1/104C: 20 46 19 JSR $1946 ; clear VRAM $4000-$6000 C1/104F: A0 00 2C LDY #$2C00 C1/1052: A2 00 04 LDX #$0400 C1/1055: 20 46 19 JSR $1946 ; clear VRAM $2C00-$3000 C1/1058: C2 20 REP #$20 C1/105A: 7B TDC C1/105B: AA TAX C1/105C: 9F 00 A0 7F STA $7FA000,X ; clear character graphics buffer C1/1060: 9F 00 A1 7F STA $7FA100,X C1/1064: 9F 00 A2 7F STA $7FA200,X C1/1068: 9F 00 A3 7F STA $7FA300,X C1/106C: E8 INX C1/106D: E8 INX C1/106E: E0 00 01 CPX #$0100 C1/1071: D0 E9 BNE $105C C1/1073: E2 20 SEP #$20 C1/1075: AE E2 11 LDX $11E2 ; battle background C1/1078: 8E B8 EC STX $ECB8 C1/107B: A9 FF LDA #$FF ; disable NMI C1/107D: 85 46 STA $46 C1/107F: 9C EF E9 STZ $E9EF ; start battle time C1/1082: 20 E0 0F JSR $0FE0 ; init character graphics C1/1085: AD 44 2F LDA $2F44 ; invisible monsters C1/1088: 49 FF EOR #$FF C1/108A: 8D E6 E9 STA $E9E6 ; visible monsters C1/108D: 20 B6 0F JSR $0FB6 C1/1090: 20 F3 0D JSR $0DF3 C1/1093: 20 67 0E JSR $0E67 C1/1096: 20 1F 0F JSR $0F1F C1/1099: A9 FF LDA #$FF C1/109B: 8D AB 60 STA $60AB C1/109E: 85 55 STA $55 C1/10A0: A9 51 LDA #$51 C1/10A2: 85 57 STA $57 C1/10A4: 1A INC C1/10A5: 85 59 STA $59 C1/10A7: 7B TDC C1/10A8: AA TAX C1/10A9: A9 C8 LDA #$C8 C1/10AB: 9D CC 04 STA $04CC,X C1/10AE: A9 97 LDA #$97 C1/10B0: 9D CD 04 STA $04CD,X C1/10B3: 7B TDC C1/10B4: 9D CE 04 STA $04CE,X C1/10B7: 9D CF 04 STA $04CF,X C1/10BA: E8 INX C1/10BB: E8 INX C1/10BC: E8 INX C1/10BD: E8 INX C1/10BE: E0 24 00 CPX #$0024 C1/10C1: D0 E6 BNE $10A9 C1/10C3: A9 80 LDA #$80 C1/10C5: 8D 1C 05 STA $051C C1/10C8: A9 AA LDA #$AA C1/10CA: 8D 1D 05 STA $051D C1/10CD: 8D 1E 05 STA $051E C1/10D0: 9C 1F 05 STZ $051F C1/10D3: A2 00 68 LDX #$6800 ; clear menu bg1 tile data C1/10D6: A0 00 08 LDY #$0800 C1/10D9: 20 16 19 JSR $1916 C1/10DC: A2 00 70 LDX #$7000 ; clear menu bg2 tile data C1/10DF: A0 00 08 LDY #$0800 C1/10E2: 20 16 19 JSR $1916 C1/10E5: A2 00 0C LDX #$0C00 ; clear battlefield bg1 tile data C1/10E8: A0 00 04 LDY #$0400 C1/10EB: 20 1F 19 JSR $191F C1/10EE: A2 00 54 LDX #$5400 ; clear battlefield bg3 tile data C1/10F1: A0 00 04 LDY #$0400 C1/10F4: 20 A5 17 JSR $17A5 C1/10F7: A2 00 78 LDX #$7800 ; clear menu bg3 tile data C1/10FA: A0 00 08 LDY #$0800 C1/10FD: 20 A5 17 JSR $17A5 C1/1100: 20 0C 6D JSR $6D0C ; C1/1103: 7B TDC C1/1104: AA TAX C1/1105: BF 43 BF C2 LDA $C2BF43,X ; C1/1109: 9D D2 E9 STA $E9D2,X C1/110C: E8 INX C1/110D: E0 08 00 CPX #$0008 C1/1110: D0 F3 BNE $1105 C1/1112: 20 AF 1D JSR $1DAF ; load battle background C1/1115: 20 7C 25 JSR $257C ; load monster graphics C1/1118: 20 DD 22 JSR $22DD ; load monster palettes C1/111B: 20 72 3E JSR $3E72 ; init monster sprite data C1/111E: 20 88 15 JSR $1588 C1/1121: 20 D1 25 JSR $25D1 ; copy monster graphics to vram (immediately) C1/1124: 20 3F 40 JSR $403F C1/1127: 20 9C 52 JSR $529C ; init menu window tile data C1/112A: 20 17 0F JSR $0F17 C1/112D: 20 A2 03 JSR $03A2 C1/1130: 20 47 6B JSR $6B47 C1/1133: 20 6B 49 JSR $496B C1/1136: 20 8F 46 JSR $468F C1/1139: 20 01 4A JSR $4A01 C1/113C: 20 59 47 JSR $4759 C1/113F: EE BB 7B INC $7BBB C1/1142: 20 27 3D JSR $3D27 C1/1145: 20 4D 3E JSR $3E4D C1/1148: 20 17 B5 JSR $B517 ; init cursor sprites C1/114B: A2 00 E0 LDX #$E000 C1/114E: 86 F3 STX $F3 C1/1150: A9 D2 LDA #$D2 C1/1152: 85 F5 STA $F5 C1/1154: A2 00 A4 LDX #$A400 C1/1157: 86 F6 STX $F6 C1/1159: A9 7F LDA #$7F C1/115B: 85 F8 STA $F8 C1/115D: 22 6D FF C2 JSL $C2FF6D ; decompress C1/1161: A2 00 04 LDX #$0400 C1/1164: 86 36 STX $36 C1/1166: A2 00 B8 LDX #$B800 C1/1169: A9 7F LDA #$7F C1/116B: A0 00 2E LDY #$2E00 C1/116E: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/1171: A2 80 00 LDX #$0080 C1/1174: 86 36 STX $36 C1/1176: A2 AD 5F LDX #$5FAD C1/1179: A9 7E LDA #$7E C1/117B: A0 00 40 LDY #$4000 C1/117E: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/1181: 7B TDC C1/1182: AA TAX C1/1183: BD 1F 7A LDA $7A1F,X C1/1186: 9D 47 7A STA $7A47,X C1/1189: E8 INX C1/118A: E0 28 00 CPX #$0028 C1/118D: D0 F4 BNE $1183 C1/118F: A9 09 LDA #$09 C1/1191: 8D 6F 89 STA $896F C1/1194: A9 09 LDA #$09 C1/1196: 8D 73 89 STA $8973 C1/1199: A9 02 LDA #$02 C1/119B: 8D 77 89 STA $8977 C1/119E: 9C 70 89 STZ $8970 C1/11A1: 9C 74 89 STZ $8974 C1/11A4: 9C 78 89 STZ $8978 C1/11A7: A9 0C LDA #$0C C1/11A9: 8D 71 89 STA $8971 C1/11AC: A9 61 LDA #$61 C1/11AE: 8D 72 89 STA $8972 C1/11B1: A9 54 LDA #$54 C1/11B3: 8D 7B 89 STA $897B C1/11B6: 8D 7C 89 STA $897C C1/11B9: A9 69 LDA #$69 C1/11BB: 8D 75 89 STA $8975 C1/11BE: A9 6C LDA #$6C C1/11C0: 8D 79 89 STA $8979 C1/11C3: A9 71 LDA #$71 C1/11C5: 8D 76 89 STA $8976 C1/11C8: 8D 7A 89 STA $897A C1/11CB: A9 79 LDA #$79 C1/11CD: 8D 7F 89 STA $897F C1/11D0: 8D 80 89 STA $8980 C1/11D3: 8D 84 89 STA $8984 C1/11D6: A9 40 LDA #$40 C1/11D8: 8D 83 89 STA $8983 C1/11DB: A9 10 LDA #$10 C1/11DD: 8D 7D 89 STA $897D C1/11E0: 8D 7D 60 STA $607D C1/11E3: A9 55 LDA #$55 C1/11E5: 8D 7E 89 STA $897E C1/11E8: A9 17 LDA #$17 C1/11EA: 8D 8D 89 STA $898D C1/11ED: 8D 91 89 STA $8991 C1/11F0: 9C 89 89 STZ $8989 C1/11F3: 9C 8A 89 STZ $898A C1/11F6: 9C 8E 89 STZ $898E C1/11F9: 9C 92 89 STZ $8992 C1/11FC: A9 22 LDA #$22 C1/11FE: 8D 81 89 STA $8981 C1/1201: 8D 85 89 STA $8985 C1/1204: A9 55 LDA #$55 C1/1206: 8D 82 89 STA $8982 C1/1209: 8D 86 89 STA $8986 C1/120C: 7B TDC C1/120D: AA TAX C1/120E: C2 20 REP #$20 C1/1210: A9 97 FF LDA #$FF97 C1/1213: 9D 32 EA STA $EA32,X C1/1216: E8 INX C1/1217: E8 INX C1/1218: E0 C0 01 CPX #$01C0 C1/121B: D0 F6 BNE $1213 C1/121D: 7B TDC C1/121E: E2 20 SEP #$20 C1/1220: A9 80 LDA #$80 C1/1222: 8D F9 E9 STA $E9F9 C1/1225: 7B TDC C1/1226: AA TAX C1/1227: A9 08 LDA #$08 C1/1229: 9D 1F 9A STA $9A1F,X C1/122C: 9E 21 9A STZ $9A21,X C1/122F: A9 F7 LDA #$F7 C1/1231: 9D 20 9A STA $9A20,X C1/1234: 9D 22 9A STA $9A22,X C1/1237: E8 INX C1/1238: E8 INX C1/1239: E8 INX C1/123A: E8 INX C1/123B: E0 5C 02 CPX #$025C C1/123E: D0 E7 BNE $1227 C1/1240: 9E 1F 9A STZ $9A1F,X C1/1243: 9E 21 9A STZ $9A21,X C1/1246: A9 F7 LDA #$F7 C1/1248: 9D 20 9A STA $9A20,X C1/124B: 9D 22 9A STA $9A22,X C1/124E: E8 INX C1/124F: E8 INX C1/1250: E8 INX C1/1251: E8 INX C1/1252: E0 00 04 CPX #$0400 C1/1255: D0 E9 BNE $1240 C1/1257: C2 20 REP #$20 C1/1259: 8B PHB C1/125A: A9 5F 02 LDA #$025F C1/125D: A2 1F 9A LDX #$9A1F C1/1260: A0 1F 9F LDY #$9F1F C1/1263: 54 7E 7E MVN $7E,$7E C1/1266: AB PLB C1/1267: 7B TDC C1/1268: E2 20 SEP #$20 C1/126A: 7B TDC C1/126B: AA TAX C1/126C: A9 E0 LDA #$E0 C1/126E: 9D 96 89 STA $8996,X C1/1271: E8 INX C1/1272: E8 INX C1/1273: E8 INX C1/1274: E8 INX C1/1275: E0 5C 02 CPX #$025C C1/1278: D0 F4 BNE $126E C1/127A: 7B TDC C1/127B: AA TAX C1/127C: A9 E0 LDA #$E0 C1/127E: 85 10 STA $10 C1/1280: 64 1A STZ $1A C1/1282: A9 02 LDA #$02 C1/1284: 9D F0 8B STA $8BF0,X C1/1287: A9 82 LDA #$82 C1/1289: 9D F1 8B STA $8BF1,X C1/128C: A5 10 LDA $10 C1/128E: 9D F2 8B STA $8BF2,X C1/1291: E6 1A INC $1A C1/1293: A5 1A LDA $1A C1/1295: C9 03 CMP #$03 C1/1297: D0 0A BNE $12A3 C1/1299: 64 1A STZ $1A C1/129B: A5 10 LDA $10 C1/129D: C9 FF CMP #$FF C1/129F: F0 02 BEQ $12A3 C1/12A1: E6 10 INC $10 C1/12A3: E8 INX C1/12A4: E8 INX C1/12A5: E8 INX C1/12A6: E8 INX C1/12A7: E0 20 01 CPX #$0120 C1/12AA: D0 D6 BNE $1282 C1/12AC: 7B TDC C1/12AD: AA TAX C1/12AE: A8 TAY C1/12AF: BD F6 8B LDA $8BF6,X C1/12B2: 99 63 EB STA $EB63,Y C1/12B5: A9 82 LDA #$82 C1/12B7: 99 62 EB STA $EB62,Y C1/12BA: E8 INX C1/12BB: E8 INX C1/12BC: E8 INX C1/12BD: E8 INX C1/12BE: C8 INY C1/12BF: C8 INY C1/12C0: C0 90 00 CPY #$0090 C1/12C3: D0 EA BNE $12AF C1/12C5: A2 FF FF LDX #$FFFF C1/12C8: 8E 01 40 STX $4001 C1/12CB: 8E 03 40 STX $4003 C1/12CE: 7B TDC C1/12CF: AA TAX C1/12D0: 3A DEC C1/12D1: 9D 2D 60 STA $602D,X C1/12D4: E8 INX C1/12D5: E0 40 00 CPX #$0040 ; should be #$0050 *** bug *** C1/12D8: D0 F7 BNE $12D1 C1/12DA: 7B TDC C1/12DB: AA TAX C1/12DC: 3A DEC C1/12DD: 8D AD 7B STA $7BAD C1/12E0: 9D AE 2B STA $2BAE,X C1/12E3: E8 INX C1/12E4: E0 20 00 CPX #$0020 C1/12E7: D0 F7 BNE $12E0 C1/12E9: 7B TDC C1/12EA: AA TAX C1/12EB: 8E 30 2F STX $2F30 C1/12EE: 8E 32 2F STX $2F32 C1/12F1: 20 5C 0D JSR $0D5C C1/12F4: 20 F6 1F JSR $1FF6 ; clear bg tile data buffer ($02EE) C1/12F7: A2 C0 04 LDX #$04C0 C1/12FA: 86 36 STX $36 C1/12FC: A2 7F A9 LDX #$A97F C1/12FF: A9 7E LDA #$7E C1/1301: A0 00 0C LDY #$0C00 C1/1304: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/1307: A9 4C LDA #$4C C1/1309: 8D F7 E9 STA $E9F7 C1/130C: 9C F8 E9 STZ $E9F8 C1/130F: A9 01 LDA #$01 C1/1311: 8D F6 E9 STA $E9F6 C1/1314: A2 FF 21 LDX #$21FF C1/1317: 8E 90 62 STX $6290 C1/131A: 8E 92 62 STX $6292 C1/131D: 8E 94 62 STX $6294 C1/1320: 8E 96 62 STX $6296 C1/1323: 8E 98 62 STX $6298 C1/1326: 20 8F 0F JSR $0F8F ; check if characters can change equipment C1/1329: 20 7C 95 JSR $957C ; update character/monster order priority C1/132C: 20 59 06 JSR $0659 C1/132F: 22 52 B6 C2 JSL $C2B652 C1/1333: AE E0 11 LDX $11E0 C1/1336: E0 D7 01 CPX #$01D7 C1/1339: D0 0B BNE $1346 C1/133B: EE 82 62 INC $6282 C1/133E: 9C E6 E9 STZ $E9E6 C1/1341: 9C 1E 20 STZ $201E C1/1344: 80 24 BRA $136A C1/1346: E0 E5 01 CPX #$01E5 C1/1349: D0 1F BNE $136A ; branch if not battle $01E5 (terra vs. soldiers) C1/134B: A2 00 00 LDX #$0000 C1/134E: 86 18 STX $18 C1/1350: A2 00 02 LDX #$0200 C1/1353: 86 1A STX $1A C1/1355: 22 42 B4 C2 JSL $C2B442 ; filter palettes C1/1359: EE 8A 62 INC $628A ; enable flashback mode C1/135C: 7B TDC C1/135D: AA TAX C1/135E: BD 80 7F LDA $7F80,X ; copy unaltered character palettes C1/1361: 9D AD 81 STA $81AD,X C1/1364: E8 INX C1/1365: E0 80 00 CPX #$0080 C1/1368: D0 F4 BNE $135E C1/136A: A9 01 LDA #$01 C1/136C: 8D 0D 7B STA $7B0D ; 1 thread to update C1/136F: 8D 0E 7B STA $7B0E ; 1 monster thread C1/1372: 8D 0F 7B STA $7B0F ; 1 character thread C1/1375: 9C 67 7B STZ $7B67 C1/1378: 9C 6B 7B STZ $7B6B C1/137B: A9 17 LDA #$17 C1/137D: 8F 2C 21 00 STA $00212C C1/1381: 8F 2E 21 00 STA $00212E C1/1385: 64 46 STZ $46 ; enable NMI C1/1387: EE 97 61 INC $6197 C1/138A: 22 24 91 C1 JSL $C19124 C1/138E: C2 20 REP #$20 C1/1390: 22 58 B2 C2 JSL $C2B258 C1/1394: 7B TDC C1/1395: E2 20 SEP #$20 C1/1397: AD 1E 20 LDA $201E C1/139A: 48 PHA C1/139B: 9C 1E 20 STZ $201E C1/139E: AF 10 42 00 LDA $004210 C1/13A2: 10 FA BPL $139E C1/13A4: AF 10 42 00 LDA $004210 C1/13A8: 10 FA BPL $13A4 C1/13AA: A9 81 LDA #$81 C1/13AC: 8F 00 42 00 STA $004200 C1/13B0: 58 CLI C1/13B1: EE 8C 62 INC $628C C1/13B4: EE EF E9 INC $E9EF ; stop battle time C1/13B7: 7B TDC C1/13B8: AA TAX C1/13B9: BF 31 14 C1 LDA $C11431,X ; battle script for monster and character entrance C1/13BD: 9D 6E 2D STA $2D6E,X C1/13C0: E8 INX C1/13C1: E0 09 00 CPX #$0009 C1/13C4: D0 F3 BNE $13B9 C1/13C6: 68 PLA C1/13C7: 8D 71 2D STA $2D71 ; monsters shown (flags) C1/13CA: AD AB 61 LDA $61AB C1/13CD: 48 PHA C1/13CE: 9C AB 61 STZ $61AB C1/13D1: AD 48 2F LDA $2F48 ; monster entrance type C1/13D4: 29 0F AND #$0F C1/13D6: 8D 6F 2D STA $2D6F C1/13D9: AA TAX C1/13DA: BF 20 14 C1 LDA $C11420,X C1/13DE: F0 1C BEQ $13FC ; branch if monsters enter before characters C1/13E0: AE 6E 2D LDX $2D6E ; swap battle script commands C1/13E3: DA PHX C1/13E4: AE 70 2D LDX $2D70 C1/13E7: DA PHX C1/13E8: AE 72 2D LDX $2D72 C1/13EB: 8E 6E 2D STX $2D6E C1/13EE: AE 74 2D LDX $2D74 C1/13F1: 8E 70 2D STX $2D70 C1/13F4: FA PLX C1/13F5: 8E 74 2D STX $2D74 C1/13F8: FA PLX C1/13F9: 8E 72 2D STX $2D72 C1/13FC: 22 12 95 C1 JSL $C19512 ; execute battle script C1/1400: 68 PLA C1/1401: 8D AB 61 STA $61AB C1/1404: 20 2A 02 JSR $022A ; wait for vblank C1/1407: AD F6 E9 LDA $E9F6 C1/140A: D0 F8 BNE $1404 C1/140C: 7B TDC C1/140D: AA TAX C1/140E: 86 10 STX $10 C1/1410: 20 3C C2 JSR $C23C ; clear color add/sub data C1/1413: EE 96 7B INC $7B96 C1/1416: 9C EF E9 STZ $E9EF ; start battle time C1/1419: 9C 8C 62 STZ $628C C1/141C: 9C 0F EC STZ $EC0F ; enable pause C1/141F: 60 RTS ; set if characters enter before monsters (1 byte per monster entrance type) init_mode_type: C1/1420: .DB $00, $01, $00, $01, $01, $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; battle script commands (monster entrance and character entrance) start_anim_data: C1/1431: .DB $13, $00, $00, $00, $0F, $00, $00, $00, $FF ; battle type jump table for monster positions C1/143A: .DW $1481, $149A, $14D7, $1533 ; [ ??? ] key_group_clr: C1/1442: 7B TDC C1/1443: AA TAX C1/1444: 3A DEC C1/1445: 9D 86 7A STA $7A86,X ; C1/1448: E8 INX C1/1449: E0 18 00 CPX #$0018 C1/144C: D0 F7 BNE $1445 C1/144E: 7B TDC C1/144F: AA TAX C1/1450: 9E 7B 80 STZ $807B,X ; C1/1453: E8 INX C1/1454: E0 0C 00 CPX #$000C C1/1457: D0 F7 BNE $1450 C1/1459: 60 RTS ; [ ] set_mon_gr0: C1/145A: 7B TDC C1/145B: AA TAX C1/145C: 8A TXA C1/145D: 9D 86 7A STA $7A86,X C1/1460: E8 INX C1/1461: E0 06 00 CPX #$0006 C1/1464: D0 F6 BNE $145C C1/1466: 60 RTS ; [ ] C1/1467: 7B TDC C1/1468: AA TAX C1/1469: 8A TXA C1/146A: 9D 92 7A STA $7A92,X C1/146D: E8 INX C1/146E: E0 06 00 CPX #$0006 C1/1471: D0 F6 BNE $1469 C1/1473: 60 RTS ; [ ] set_play_gr1: C1/1474: 7B TDC C1/1475: AA TAX C1/1476: 8A TXA C1/1477: 9D 8C 7A STA $7A8C,X C1/147A: E8 INX C1/147B: E0 04 00 CPX #$0004 C1/147E: D0 F6 BNE $1476 C1/1480: 60 RTS ; 0: normal L_10_LL059: C1/1481: 20 5A 14 JSR $145A C1/1484: 20 74 14 JSR $1474 C1/1487: 7B TDC C1/1488: AA TAX C1/1489: BD 2F 81 LDA $812F,X ; monster width C1/148C: 0A ASL C1/148D: 0A ASL C1/148E: 0A ASL C1/148F: 9D 7B 80 STA $807B,X C1/1492: E8 INX C1/1493: E8 INX C1/1494: E0 0C 00 CPX #$000C C1/1497: D0 F0 BNE $1489 C1/1499: 60 RTS ; 1: back C1/149A: 20 67 14 JSR $1467 C1/149D: 20 74 14 JSR $1474 C1/14A0: 7B TDC C1/14A1: AA TAX C1/14A2: A9 20 LDA #$20 C1/14A4: 9D 9F 80 STA $809F,X C1/14A7: E8 INX C1/14A8: E8 INX C1/14A9: E0 08 00 CPX #$0008 C1/14AC: D0 F6 BNE $14A4 C1/14AE: 7B TDC C1/14AF: AA TAX C1/14B0: BD 2F 81 LDA $812F,X ; monster width C1/14B3: 0A ASL C1/14B4: 0A ASL C1/14B5: 0A ASL C1/14B6: 85 10 STA $10 C1/14B8: BD C3 80 LDA $80C3,X ; negate x position C1/14BB: 49 FF EOR #$FF C1/14BD: 1A INC C1/14BE: 38 SEC C1/14BF: E5 10 SBC $10 ; subtract width C1/14C1: 9D C3 80 STA $80C3,X C1/14C4: BD F3 80 LDA $80F3,X ; face left C1/14C7: 5D 7E 61 EOR $617E,X C1/14CA: 49 01 EOR #$01 C1/14CC: 9D F3 80 STA $80F3,X C1/14CF: E8 INX C1/14D0: E8 INX C1/14D1: E0 0C 00 CPX #$000C C1/14D4: D0 DA BNE $14B0 C1/14D6: 60 RTS ; 2: pincer C1/14D7: 20 74 14 JSR $1474 C1/14DA: 7B TDC C1/14DB: AA TAX C1/14DC: 64 10 STZ $10 C1/14DE: 64 12 STZ $12 C1/14E0: 64 16 STZ $16 C1/14E2: BD 2F 81 LDA $812F,X ; monster width C1/14E5: 0A ASL C1/14E6: 0A ASL C1/14E7: 0A ASL C1/14E8: 85 14 STA $14 C1/14EA: BD C3 80 LDA $80C3,X ; x position C1/14ED: 18 CLC C1/14EE: 65 14 ADC $14 C1/14F0: C9 68 CMP #$68 C1/14F2: 90 26 BCC $151A ; branch if on left side of screen C1/14F4: BD C3 80 LDA $80C3,X C1/14F7: 38 SEC C1/14F8: E9 40 SBC #$40 C1/14FA: 18 CLC C1/14FB: 65 14 ADC $14 C1/14FD: 49 FF EOR #$FF C1/14FF: 1A INC C1/1500: 9D C3 80 STA $80C3,X C1/1503: BD F3 80 LDA $80F3,X C1/1506: 5D 7E 61 EOR $617E,X C1/1509: 49 01 EOR #$01 C1/150B: 9D F3 80 STA $80F3,X C1/150E: A5 12 LDA $12 C1/1510: A8 TAY C1/1511: A5 16 LDA $16 C1/1513: 99 92 7A STA $7A92,Y C1/1516: E6 12 INC $12 C1/1518: 80 0F BRA $1529 C1/151A: A5 14 LDA $14 C1/151C: 9D 7B 80 STA $807B,X C1/151F: A5 10 LDA $10 C1/1521: A8 TAY C1/1522: A5 16 LDA $16 C1/1524: 99 86 7A STA $7A86,Y C1/1527: E6 10 INC $10 C1/1529: E6 16 INC $16 C1/152B: E8 INX C1/152C: E8 INX C1/152D: E0 0C 00 CPX #$000C C1/1530: D0 B0 BNE $14E2 C1/1532: 60 RTS ; 3: side C1/1533: 20 67 14 JSR $1467 C1/1536: 7B TDC C1/1537: 8D 98 7A STA $7A98 C1/153A: 1A INC C1/153B: 8D 99 7A STA $7A99 C1/153E: 1A INC C1/153F: 8D 8C 7A STA $7A8C C1/1542: 1A INC C1/1543: 8D 8D 7A STA $7A8D C1/1546: A9 20 LDA #$20 C1/1548: 8D A3 80 STA $80A3 C1/154B: 8D A5 80 STA $80A5 C1/154E: 7B TDC C1/154F: AA TAX C1/1550: BD 2F 81 LDA $812F,X ; monster width C1/1553: 0A ASL C1/1554: 0A ASL C1/1555: 0A ASL C1/1556: 85 12 STA $12 C1/1558: 4A LSR C1/1559: 85 10 STA $10 C1/155B: BD C3 80 LDA $80C3,X ; x position C1/155E: 18 CLC C1/155F: 69 30 ADC #$30 C1/1561: 9D C3 80 STA $80C3,X C1/1564: 18 CLC C1/1565: 65 10 ADC $10 C1/1567: 30 0D BMI $1576 ; branch if center x-coordinate of monster is greater than $7F C1/1569: BD F3 80 LDA $80F3,X ; flip monster horizontally C1/156C: 5D 7E 61 EOR $617E,X C1/156F: 49 01 EOR #$01 C1/1571: 9D F3 80 STA $80F3,X C1/1574: 80 05 BRA $157B C1/1576: A5 12 LDA $12 C1/1578: 9D 7B 80 STA $807B,X C1/157B: E8 INX C1/157C: E8 INX C1/157D: E0 0C 00 CPX #$000C C1/1580: D0 CE BNE $1550 C1/1582: 60 RTS C1/1583: 60 RTS ; y-offsets for monster vertical alignment (ceiling, ground, buried, floating, flying) C1/1584: .DB $00, $F8, $08, $D8 ; [ ??? ] monster_poi_set: C1/1588: 20 42 14 JSR $1442 C1/158B: 9C 79 7B STZ $7B79 C1/158E: 9C 7A 7B STZ $7B7A C1/1591: 9C 7B 7B STZ $7B7B C1/1594: 9C 7C 7B STZ $7B7C C1/1597: 7B TDC C1/1598: AA TAX C1/1599: 9E F3 80 STZ $80F3,X C1/159C: E8 INX C1/159D: E0 0C 00 CPX #$000C C1/15A0: D0 F7 BNE $1599 C1/15A2: AD 1F 20 LDA $201F ; battle type C1/15A5: 0A ASL C1/15A6: AA TAX C1/15A7: 20 04 16 JSR $1604 C1/15AA: 20 07 16 JSR $1607 C1/15AD: AD 79 7B LDA $7B79 C1/15B0: 8D AC 2E STA $2EAC C1/15B3: AD 7B 7B LDA $7B7B C1/15B6: 8D AD 2E STA $2EAD C1/15B9: AE E0 11 LDX $11E0 C1/15BC: E0 3F 02 CPX #$023F ; battle $023F (colosseum) C1/15BF: D0 42 BNE $1603 C1/15C1: AD 2F 81 LDA $812F ; width C1/15C4: 0A ASL C1/15C5: 0A ASL C1/15C6: 0A ASL C1/15C7: 85 10 STA $10 C1/15C9: AD 30 81 LDA $8130 ; height C1/15CC: 0A ASL C1/15CD: 0A ASL C1/15CE: 0A ASL C1/15CF: 85 12 STA $12 C1/15D1: A9 80 LDA #$80 C1/15D3: 38 SEC C1/15D4: E5 12 SBC $12 C1/15D6: AA TAX C1/15D7: 8E CF 80 STX $80CF ; top y position C1/15DA: AD 01 20 LDA $2001 ; monster index C1/15DD: AA TAX C1/15DE: BF 00 E8 EC LDA $ECE800,X ; monster vertical alignment C1/15E2: D0 05 BNE $15E9 C1/15E4: 9C CF 80 STZ $80CF ; align with top of screen (ceiling) C1/15E7: 80 0D BRA $15F6 C1/15E9: 3A DEC C1/15EA: AA TAX C1/15EB: AD CF 80 LDA $80CF C1/15EE: 18 CLC C1/15EF: 7F 84 15 C1 ADC $C11584,X ; add offset C1/15F3: 8D CF 80 STA $80CF ; top y position C1/15F6: A9 80 LDA #$80 C1/15F8: 38 SEC C1/15F9: E5 10 SBC $10 C1/15FB: 4A LSR C1/15FC: 18 CLC C1/15FD: 69 18 ADC #$18 C1/15FF: AA TAX C1/1600: 8E C3 80 STX $80C3 ; left x position C1/1603: 60 RTS ; [ ] L_10_LL059: C1/1604: 7C 3A 14 JMP ($143A,X) ; jump based on battle type ; [ ??? ] set_group_init: C1/1607: 7B TDC C1/1608: AA TAX C1/1609: 3A DEC C1/160A: 9D 9E 7A STA $7A9E,X C1/160D: E8 INX C1/160E: E0 30 00 CPX #$0030 C1/1611: D0 F7 BNE $160A C1/1613: 7B TDC C1/1614: AA TAX C1/1615: 85 10 STA $10 C1/1617: A9 03 LDA #$03 C1/1619: 85 12 STA $12 C1/161B: A5 10 LDA $10 C1/161D: 9D B6 7A STA $7AB6,X C1/1620: 9D C2 7A STA $7AC2,X C1/1623: A5 12 LDA $12 C1/1625: 9D BC 7A STA $7ABC,X C1/1628: 9D C8 7A STA $7AC8,X C1/162B: E6 10 INC $10 C1/162D: C6 12 DEC $12 C1/162F: E8 INX C1/1630: E0 04 00 CPX #$0004 C1/1633: D0 E6 BNE $161B C1/1635: 7B TDC C1/1636: AA TAX C1/1637: A8 TAY C1/1638: C2 20 REP #$20 C1/163A: BD C3 80 LDA $80C3,X C1/163D: 99 D0 7A STA $7AD0,Y C1/1640: E8 INX C1/1641: E8 INX C1/1642: C8 INY C1/1643: C8 INY C1/1644: C8 INY C1/1645: C8 INY C1/1646: E0 0C 00 CPX #$000C C1/1649: D0 EF BNE $163A C1/164B: 7B TDC C1/164C: E2 20 SEP #$20 C1/164E: 20 52 17 JSR $1752 C1/1651: 7B TDC C1/1652: AA TAX C1/1653: A8 TAY C1/1654: BD D2 7A LDA $7AD2,X C1/1657: 99 9E 7A STA $7A9E,Y C1/165A: C8 INY C1/165B: E8 INX C1/165C: E8 INX C1/165D: E8 INX C1/165E: E8 INX C1/165F: C0 06 00 CPY #$0006 C1/1662: D0 F0 BNE $1654 C1/1664: 7B TDC C1/1665: AA TAX C1/1666: A8 TAY C1/1667: C2 20 REP #$20 C1/1669: BD 2F 81 LDA $812F,X C1/166C: 29 FF 00 AND #$00FF C1/166F: 0A ASL C1/1670: 0A ASL C1/1671: 0A ASL C1/1672: 18 CLC C1/1673: 7D C3 80 ADC $80C3,X C1/1676: 99 D0 7A STA $7AD0,Y C1/1679: E8 INX C1/167A: E8 INX C1/167B: C8 INY C1/167C: C8 INY C1/167D: C8 INY C1/167E: C8 INY C1/167F: E0 0C 00 CPX #$000C C1/1682: D0 E5 BNE $1669 C1/1684: 7B TDC C1/1685: E2 20 SEP #$20 C1/1687: 20 52 17 JSR $1752 C1/168A: 7B TDC C1/168B: AA TAX C1/168C: A0 05 00 LDY #$0005 C1/168F: BD D2 7A LDA $7AD2,X C1/1692: 99 A4 7A STA $7AA4,Y C1/1695: 88 DEY C1/1696: E8 INX C1/1697: E8 INX C1/1698: E8 INX C1/1699: E8 INX C1/169A: E0 18 00 CPX #$0018 C1/169D: D0 F0 BNE $168F C1/169F: 7B TDC C1/16A0: AA TAX C1/16A1: A8 TAY C1/16A2: C2 20 REP #$20 C1/16A4: BD CF 80 LDA $80CF,X C1/16A7: 99 D0 7A STA $7AD0,Y C1/16AA: E8 INX C1/16AB: E8 INX C1/16AC: C8 INY C1/16AD: C8 INY C1/16AE: C8 INY C1/16AF: C8 INY C1/16B0: E0 0C 00 CPX #$000C C1/16B3: D0 EF BNE $16A4 C1/16B5: 7B TDC C1/16B6: E2 20 SEP #$20 C1/16B8: 20 52 17 JSR $1752 C1/16BB: 7B TDC C1/16BC: AA TAX C1/16BD: A8 TAY C1/16BE: BD D2 7A LDA $7AD2,X C1/16C1: 99 AA 7A STA $7AAA,Y C1/16C4: C8 INY C1/16C5: E8 INX C1/16C6: E8 INX C1/16C7: E8 INX C1/16C8: E8 INX C1/16C9: C0 06 00 CPY #$0006 C1/16CC: D0 F0 BNE $16BE C1/16CE: 7B TDC C1/16CF: AA TAX C1/16D0: A8 TAY C1/16D1: C2 20 REP #$20 C1/16D3: BD 30 81 LDA $8130,X C1/16D6: 29 FF 00 AND #$00FF C1/16D9: 0A ASL C1/16DA: 0A ASL C1/16DB: 0A ASL C1/16DC: 18 CLC C1/16DD: 7D CF 80 ADC $80CF,X C1/16E0: 99 D0 7A STA $7AD0,Y C1/16E3: E8 INX C1/16E4: E8 INX C1/16E5: C8 INY C1/16E6: C8 INY C1/16E7: C8 INY C1/16E8: C8 INY C1/16E9: E0 0C 00 CPX #$000C C1/16EC: D0 E5 BNE $16D3 C1/16EE: 7B TDC C1/16EF: E2 20 SEP #$20 C1/16F1: 20 52 17 JSR $1752 C1/16F4: 7B TDC C1/16F5: AA TAX C1/16F6: A0 05 00 LDY #$0005 C1/16F9: BD D2 7A LDA $7AD2,X C1/16FC: 99 B0 7A STA $7AB0,Y C1/16FF: 88 DEY C1/1700: E8 INX C1/1701: E8 INX C1/1702: E8 INX C1/1703: E8 INX C1/1704: E0 18 00 CPX #$0018 C1/1707: D0 F0 BNE $16F9 C1/1709: 7B TDC C1/170A: A8 TAY C1/170B: B9 86 7A LDA $7A86,Y C1/170E: 30 0B BMI $171B C1/1710: AA TAX C1/1711: BF 61 77 C1 LDA $C17761,X C1/1715: 0D 79 7B ORA $7B79 C1/1718: 8D 79 7B STA $7B79 C1/171B: B9 8C 7A LDA $7A8C,Y C1/171E: 30 0B BMI $172B C1/1720: AA TAX C1/1721: BF 61 77 C1 LDA $C17761,X C1/1725: 0D 7A 7B ORA $7B7A C1/1728: 8D 7A 7B STA $7B7A C1/172B: B9 92 7A LDA $7A92,Y C1/172E: 30 0B BMI $173B C1/1730: AA TAX C1/1731: BF 61 77 C1 LDA $C17761,X C1/1735: 0D 7B 7B ORA $7B7B C1/1738: 8D 7B 7B STA $7B7B C1/173B: B9 98 7A LDA $7A98,Y C1/173E: 30 0B BMI $174B C1/1740: AA TAX C1/1741: BF 61 77 C1 LDA $C17761,X C1/1745: 0D 7C 7B ORA $7B7C C1/1748: 8D 7C 7B STA $7B7C C1/174B: C8 INY C1/174C: C0 06 00 CPY #$0006 C1/174F: D0 BA BNE $170B C1/1751: 60 RTS C1/1752: C2 20 REP #$20 C1/1754: 7B TDC C1/1755: AA TAX C1/1756: 64 10 STZ $10 C1/1758: A5 10 LDA $10 C1/175A: 9D D2 7A STA $7AD2,X C1/175D: E6 10 INC $10 C1/175F: E8 INX C1/1760: E8 INX C1/1761: E8 INX C1/1762: E8 INX C1/1763: E0 18 00 CPX #$0018 C1/1766: D0 F0 BNE $1758 C1/1768: 7B TDC C1/1769: AA TAX C1/176A: 64 14 STZ $14 C1/176C: BD D0 7A LDA $7AD0,X C1/176F: DD D4 7A CMP $7AD4,X C1/1772: F0 20 BEQ $1794 C1/1774: 90 1E BCC $1794 C1/1776: E6 14 INC $14 C1/1778: BD D4 7A LDA $7AD4,X C1/177B: 48 PHA C1/177C: BD D0 7A LDA $7AD0,X C1/177F: 9D D4 7A STA $7AD4,X C1/1782: 68 PLA C1/1783: 9D D0 7A STA $7AD0,X C1/1786: BD D6 7A LDA $7AD6,X C1/1789: 48 PHA C1/178A: BD D2 7A LDA $7AD2,X C1/178D: 9D D6 7A STA $7AD6,X C1/1790: 68 PLA C1/1791: 9D D2 7A STA $7AD2,X C1/1794: E8 INX C1/1795: E8 INX C1/1796: E8 INX C1/1797: E8 INX C1/1798: E0 14 00 CPX #$0014 C1/179B: D0 CF BNE $176C C1/179D: A5 14 LDA $14 C1/179F: D0 C7 BNE $1768 C1/17A1: 7B TDC C1/17A2: E2 20 SEP #$20 C1/17A4: 60 RTS ; [ Clear BG Data in VRAM ] ; +X = destination (VRAM) ; +Y = size (words) C1/17A5: 8B PHB C1/17A6: A9 00 LDA #$00 C1/17A8: 48 PHA C1/17A9: AB PLB C1/17AA: 8E 16 21 STX $2116 C1/17AD: C2 20 REP #$20 C1/17AF: A9 EE 01 LDA #$01EE ; tile $01EE C1/17B2: 8D 18 21 STA $2118 C1/17B5: 88 DEY C1/17B6: D0 FA BNE $17B2 C1/17B8: 7B TDC C1/17B9: E2 20 SEP #$20 C1/17BB: AB PLB C1/17BC: 60 RTS ; [ Play Error Sound Effect ] sound_beep_set: C1/17BD: A9 22 LDA #$22 C1/17BF: 8F 40 21 00 STA $002140 C1/17C3: 64 95 STZ $95 C1/17C5: 60 RTS ; [ Play Cursor Sound Effect (move/cancel) ] sound_key_set: C1/17C6: A9 21 LDA #$21 C1/17C8: 8F 40 21 00 STA $002140 C1/17CC: 64 94 STZ $94 C1/17CE: 60 RTS ; [ Play Cursor Sound Effect (select) ] sound_key_a_set: C1/17CF: A9 20 LDA #$20 C1/17D1: 8F 40 21 00 STA $002140 C1/17D5: 64 96 STZ $96 C1/17D7: 60 RTS ; [ Play Character Active Sound Effect ] sound_window_set: C1/17D8: AD CA 62 LDA $62CA ; active character C1/17DB: 29 03 AND #$03 C1/17DD: AA TAX C1/17DE: BD 98 61 LDA $6198,X ; player controlling this character C1/17E1: 18 CLC C1/17E2: 69 28 ADC #$28 ; sound effect $28 for player 1, $29 for player 2 C1/17E4: 8F 40 21 00 STA $002140 C1/17E8: 64 93 STZ $93 C1/17EA: 60 RTS ; [ Play Animation Sound Effect (long access) ] effect_set_long: C1/17EB: 20 EF 17 JSR $17EF ; play animation sound effect C1/17EE: 6B RTL ; [ Play Animation Sound Effect ] ; A = sound effect number ; $10 = pan value effect_set: C1/17EF: 8D E9 E9 STA $E9E9 ; sound effect number C1/17F2: A5 10 LDA $10 C1/17F4: 8D EA E9 STA $E9EA ; pan value C1/17F7: A9 18 LDA #$18 C1/17F9: 8D E8 E9 STA $E9E8 ; SPC command $18 C1/17FC: EE EC E9 INC $E9EC ; enable animation sound effect C1/17FF: 60 RTS ; [ Update Sound Effects ] nmi_effect_set: C1/1800: AD ED E9 LDA $E9ED ; return if all sound effects are disabled C1/1803: D0 55 BNE $185A C1/1805: AD EC E9 LDA $E9EC ; branch if animation sound effect is not enabled C1/1808: F0 19 BEQ $1823 C1/180A: AD EA E9 LDA $E9EA ; play animation sound sound effect C1/180D: 8F 42 21 00 STA $002142 C1/1811: AD E9 E9 LDA $E9E9 C1/1814: 8F 41 21 00 STA $002141 C1/1818: AD E8 E9 LDA $E9E8 C1/181B: 8F 40 21 00 STA $002140 C1/181F: 9C EC E9 STZ $E9EC ; disable animation sound effect C1/1822: 60 RTS C1/1823: AD 81 62 LDA $6281 ; do SPC command $2C (ching sound effect ???) C1/1826: F0 0A BEQ $1832 C1/1828: A9 2C LDA #$2C C1/182A: 8F 40 21 00 STA $002140 C1/182E: 9C 81 62 STZ $6281 C1/1831: 60 RTS C1/1832: A5 93 LDA $93 ; character active sound effect C1/1834: F0 03 BEQ $1839 C1/1836: 4C D8 17 JMP $17D8 C1/1839: A5 94 LDA $94 ; cursor sound effect (move/cancel) C1/183B: F0 03 BEQ $1840 C1/183D: 4C C6 17 JMP $17C6 C1/1840: A5 95 LDA $95 ; error sound effect C1/1842: F0 03 BEQ $1847 C1/1844: 4C BD 17 JMP $17BD C1/1847: A5 96 LDA $96 ; cursor sound effect (select) C1/1849: F0 03 BEQ $184E C1/184B: 4C CF 17 JMP $17CF C1/184E: A5 97 LDA $97 ; go to next part of song (dancing mad) C1/1850: F0 08 BEQ $185A C1/1852: A9 89 LDA #$89 C1/1854: 8F 40 21 00 STA $002140 C1/1858: 64 97 STZ $97 C1/185A: 60 RTS ; [ Update Random Number ] get_rnd: C1/185B: DA PHX C1/185C: A5 72 LDA $72 C1/185E: AA TAX C1/185F: E6 72 INC $72 C1/1861: BF 00 FD C0 LDA $C0FD00,X C1/1865: FA PLX C1/1866: 60 RTS ; [ ++$30 = +$2E * $2C ] nmi_mul816: C1/1867: 64 30 STZ $30 C1/1869: 64 32 STZ $32 C1/186B: 64 34 STZ $34 C1/186D: A2 08 00 LDX #$0008 C1/1870: 46 2C LSR $2C C1/1872: 90 0D BCC $1881 C1/1874: A5 30 LDA $30 C1/1876: 18 CLC C1/1877: 65 2E ADC $2E C1/1879: 85 30 STA $30 C1/187B: A5 32 LDA $32 C1/187D: 65 34 ADC $34 C1/187F: 85 32 STA $32 C1/1881: 06 2E ASL $2E C1/1883: 26 34 ROL $34 C1/1885: CA DEX C1/1886: D0 E8 BNE $1870 C1/1888: 60 RTS ; [ +++$30 = +$2E * +$2C ] ; unused nmi_mul16: C1/1889: C2 20 REP #$20 C1/188B: 64 30 STZ $30 C1/188D: 64 32 STZ $32 C1/188F: 64 34 STZ $34 C1/1891: A2 10 00 LDX #$0010 C1/1894: 46 2C LSR $2C C1/1896: 90 0D BCC $18A5 C1/1898: A5 30 LDA $30 C1/189A: 18 CLC C1/189B: 65 2E ADC $2E C1/189D: 85 30 STA $30 C1/189F: A5 32 LDA $32 C1/18A1: 65 34 ADC $34 C1/18A3: 85 32 STA $32 C1/18A5: 06 2E ASL $2E C1/18A7: 26 34 ROL $34 C1/18A9: CA DEX C1/18AA: D0 E8 BNE $1894 C1/18AC: 7B TDC C1/18AD: E2 20 SEP #$20 C1/18AF: 60 RTS ; [ +$30 = $2E * $2C ] nmi_mul8: C1/18B0: A6 00 LDX $00 C1/18B2: 86 30 STX $30 C1/18B4: A2 08 00 LDX #$0008 C1/18B7: 66 2E ROR $2E C1/18B9: 90 07 BCC $18C2 C1/18BB: A5 2C LDA $2C C1/18BD: 18 CLC C1/18BE: 65 31 ADC $31 C1/18C0: 85 31 STA $31 C1/18C2: 66 31 ROR $31 C1/18C4: 66 30 ROR $30 C1/18C6: CA DEX C1/18C7: D0 EE BNE $18B7 C1/18C9: 60 RTS ; [ +$4216 = A * B ] mul8_s: C1/18CA: 8F 02 42 00 STA $004202 C1/18CE: EB XBA C1/18CF: 8F 03 42 00 STA $004203 C1/18D3: 7B TDC C1/18D4: 60 RTS ; [ +$26 = $22 * $24 (long access) ] mul8_long: C1/18D5: 20 D9 18 JSR $18D9 ; multiply $22 * $24 C1/18D8: 6B RTL ; [ +$26 = $22 * $24 ] mul8: C1/18D9: A5 22 LDA $22 C1/18DB: 8F 02 42 00 STA $004202 C1/18DF: A5 24 LDA $24 C1/18E1: 8F 03 42 00 STA $004203 C1/18E5: C2 20 REP #$20 C1/18E7: C2 20 REP #$20 C1/18E9: EA NOP C1/18EA: AF 16 42 00 LDA $004216 C1/18EE: 85 26 STA $26 ; +$26 = $22 * $24 C1/18F0: 7B TDC C1/18F1: E2 20 SEP #$20 C1/18F3: 60 RTS ; [ ++$26 = $22 * +$24 ] C1/18F4: 64 26 STZ $26 C1/18F6: 64 28 STZ $28 C1/18F8: 64 2A STZ $2A C1/18FA: A2 08 00 LDX #$0008 C1/18FD: 46 22 LSR $22 C1/18FF: 90 0D BCC $190E C1/1901: A5 26 LDA $26 C1/1903: 18 CLC C1/1904: 65 24 ADC $24 C1/1906: 85 26 STA $26 C1/1908: A5 28 LDA $28 C1/190A: 65 2A ADC $2A C1/190C: 85 28 STA $28 C1/190E: 06 24 ASL $24 C1/1910: 26 2A ROL $2A C1/1912: CA DEX C1/1913: D0 E8 BNE $18FD C1/1915: 60 RTS ; [ Clear BG Tile Data in VRAM ] ; +X = destination (VRAM) ; +Y = size (words) C1/1916: DA PHX C1/1917: A2 EE 00 LDX #$00EE ; tile $00EE C1/191A: 86 10 STX $10 C1/191C: FA PLX C1/191D: 80 10 BRA $192F C1/191F: DA PHX C1/1920: A2 EE 02 LDX #$02EE ; tile $02EE C1/1923: 86 10 STX $10 C1/1925: FA PLX C1/1926: 80 07 BRA $192F C1/1928: DA PHX C1/1929: A2 EE 01 LDX #$01EE ; tile $01EE C1/192C: 86 10 STX $10 C1/192E: FA PLX C1/192F: 8B PHB C1/1930: A9 00 LDA #$00 C1/1932: 48 PHA C1/1933: AB PLB C1/1934: 8E 16 21 STX $2116 C1/1937: C2 20 REP #$20 C1/1939: A5 10 LDA $10 C1/193B: 8D 18 21 STA $2118 C1/193E: 88 DEY C1/193F: D0 FA BNE $193B C1/1941: 7B TDC C1/1942: E2 20 SEP #$20 C1/1944: AB PLB C1/1945: 60 RTS ; [ Clear VRAM ] ; +Y = address ; +X = size (words) screen_clr_bg1_win: C1/1946: 8B PHB C1/1947: A9 00 LDA #$00 C1/1949: 48 PHA C1/194A: AB PLB C1/194B: 8C 16 21 STY $2116 C1/194E: 8E 75 43 STX $4375 C1/1951: A2 6D 19 LDX #$196D ; DMA source = $C1196D C1/1954: 8E 72 43 STX $4372 C1/1957: A9 09 LDA #$09 ; fixed address, 2 bytes LH C1/1959: 8D 70 43 STA $4370 C1/195C: A9 18 LDA #$18 C1/195E: 8D 71 43 STA $4371 ; DMA destination = $2118 C1/1961: A9 C1 LDA #$C1 C1/1963: 8D 74 43 STA $4374 C1/1966: A9 80 LDA #$80 C1/1968: 8D 0B 42 STA $420B C1/196B: AB PLB C1/196C: 60 RTS ; zero word for clearing VRAM C1/196D: .DW $0000 ; [ Large Data DMA to VRAM ] wait_tfr: C1/196F: AD 00 80 LDA $8000 ; branch if large data transfer is disabled C1/1972: F0 14 BEQ $1988 C1/1974: AE 06 80 LDX $8006 ; set size C1/1977: 86 36 STX $36 C1/1979: AE 01 80 LDX $8001 C1/197C: AC 04 80 LDY $8004 C1/197F: AD 03 80 LDA $8003 C1/1982: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/1985: 9C 00 80 STZ $8000 C1/1988: 60 RTS ; [ Init Large Data DMA to VRAM (long access) ] wait_dma_vram_tfr_long: C1/1989: 20 8D 19 JSR $198D C1/198C: 6B RTL ; [ Init Large Data DMA to VRAM (> 1kB) ] ; A = source bank ; +X = source address ; +Y = destination address (VRAM) ; +$10 = total size (data gets transferred in chunks, 1kB per frame) wait_dma_vram_tfr: C1/198D: DA PHX C1/198E: 5A PHY C1/198F: 48 PHA C1/1990: A6 10 LDX $10 C1/1992: DA PHX C1/1993: AD 00 80 LDA $8000 ; branch if large data DMA is not in use C1/1996: F0 05 BEQ $199D C1/1998: 20 2A 02 JSR $022A ; wait for vblank C1/199B: 80 F6 BRA $1993 ; loop C1/199D: FA PLX C1/199E: 8E 08 80 STX $8008 ; set DMA size C1/19A1: 68 PLA C1/19A2: 8D 03 80 STA $8003 ; set source bank C1/19A5: 7A PLY C1/19A6: 8C 04 80 STY $8004 ; set destination address C1/19A9: FA PLX C1/19AA: 8E 01 80 STX $8001 ; set source address C1/19AD: 9C 0A 80 STZ $800A ; last chunk C1/19B0: C2 20 REP #$20 C1/19B2: AD 08 80 LDA $8008 ; branch if size is <= $0400 (1kB) C1/19B5: C9 00 04 CMP #$0400 C1/19B8: F0 0A BEQ $19C4 C1/19BA: 90 08 BCC $19C4 C1/19BC: A9 00 04 LDA #$0400 ; partial size $0400 C1/19BF: 8D 06 80 STA $8006 C1/19C2: 80 06 BRA $19CA C1/19C4: 8D 06 80 STA $8006 ; transfer full size C1/19C7: EE 0A 80 INC $800A ; not last chunk C1/19CA: 7B TDC C1/19CB: E2 20 SEP #$20 C1/19CD: EE 00 80 INC $8000 ; enable DMA C1/19D0: 20 2A 02 JSR $022A ; wait for vblank C1/19D3: AD 00 80 LDA $8000 ; loop if DMA is still enabled C1/19D6: D0 F8 BNE $19D0 C1/19D8: C2 20 REP #$20 C1/19DA: AD 01 80 LDA $8001 ; add $0400 to source address C1/19DD: 18 CLC C1/19DE: 69 00 04 ADC #$0400 C1/19E1: 8D 01 80 STA $8001 C1/19E4: AD 04 80 LDA $8004 ; add $0200 to destination address C1/19E7: 18 CLC C1/19E8: 69 00 02 ADC #$0200 C1/19EB: 8D 04 80 STA $8004 C1/19EE: AD 08 80 LDA $8008 ; subtract $0400 from size C1/19F1: 38 SEC C1/19F2: E9 00 04 SBC #$0400 C1/19F5: 8D 08 80 STA $8008 C1/19F8: 7B TDC C1/19F9: E2 20 SEP #$20 C1/19FB: AD 0A 80 LDA $800A ; loop if not last chunk C1/19FE: F0 B0 BEQ $19B0 C1/1A00: 60 RTS ; bit masks num_bit_chg_tbl: attr_info_chg: C1/1A01: .DB $01, $02, $04, $08, $10, $20, $40, $80 ; [ Get Bit Mask ] ; A = bit number ; A = 1 << A (out) num_bit_chg: C1/1A09: AA TAX C1/1A0A: BF 01 1A C1 LDA $C11A01,X C1/1A0E: 60 RTS ; [ Get Bit Number ] ; returns the number of the first bit set in A (0 if no bits are set) bit_num_chg: C1/1A0F: A6 00 LDX $00 C1/1A11: 4A LSR C1/1A12: B0 08 BCS $1A1C C1/1A14: E8 INX C1/1A15: E0 08 00 CPX #$0008 C1/1A18: D0 F7 BNE $1A11 C1/1A1A: 7B TDC C1/1A1B: 60 RTS C1/1A1C: 8A TXA C1/1A1D: 29 07 AND #$07 C1/1A1F: 60 RTS ; [ Wait for VBlank (indirect access) ] C1/1A20: 20 24 1A JSR $1A24 ; wait for vblank C1/1A23: 60 RTS ; [ Wait for VBlank ] C1/1A24: E6 47 INC $47 ; increment vblank flag C1/1A26: A5 47 LDA $47 C1/1A28: D0 FC BNE $1A26 ; brach if not clear C1/1A2A: 60 RTS ; [ Copy Data to VRAM ] ; +Y = destination address (VRAM) ; +X = source address ; A = source bank ; +$36 = size nmi_dma_vram_tfr: C1/1A2B: 8B PHB C1/1A2C: 48 PHA C1/1A2D: A9 00 LDA #$00 C1/1A2F: 48 PHA C1/1A30: AB PLB C1/1A31: 68 PLA C1/1A32: 8C 16 21 STY $2116 C1/1A35: 8E 72 43 STX $4372 C1/1A38: 8D 74 43 STA $4374 C1/1A3B: A9 01 LDA #$01 C1/1A3D: 8D 70 43 STA $4370 C1/1A40: A9 18 LDA #$18 C1/1A42: 8D 71 43 STA $4371 C1/1A45: A6 36 LDX $36 C1/1A47: 8E 75 43 STX $4375 C1/1A4A: A9 80 LDA #$80 C1/1A4C: 8D 0B 42 STA $420B C1/1A4F: AB PLB C1/1A50: 60 RTS ; [ Copy Animation BG Tile Data to VRAM ] ; +X = source address ; A = source bank ; +$36 = VRAM destination address C1/1A51: 8B PHB C1/1A52: 48 PHA C1/1A53: A9 00 LDA #$00 C1/1A55: 48 PHA C1/1A56: AB PLB C1/1A57: 68 PLA C1/1A58: 8E 72 43 STX $4372 C1/1A5B: 8D 74 43 STA $4374 C1/1A5E: A9 01 LDA #$01 C1/1A60: 8D 70 43 STA $4370 C1/1A63: A9 18 LDA #$18 C1/1A65: 8D 71 43 STA $4371 C1/1A68: C2 20 REP #$20 C1/1A6A: E2 10 SEP #$10 C1/1A6C: A0 20 LDY #$20 ; 32 bytes per DMA C1/1A6E: A2 80 LDX #$80 C1/1A70: A9 10 00 LDA #$0010 ; DMA 16 times C1/1A73: 85 38 STA $38 C1/1A75: A5 36 LDA $36 C1/1A77: 8D 16 21 STA $2116 C1/1A7A: 8C 75 43 STY $4375 C1/1A7D: 8E 0B 42 STX $420B C1/1A80: 18 CLC C1/1A81: 69 20 00 ADC #$0020 C1/1A84: C6 38 DEC $38 C1/1A86: D0 EF BNE $1A77 C1/1A88: 7B TDC C1/1A89: E2 20 SEP #$20 C1/1A8B: C2 10 REP #$10 C1/1A8D: AB PLB C1/1A8E: 60 RTS ; [ Clear Leading Zeroes (4 digit number) ] z_cut: C1/1A8F: A6 00 LDX $00 C1/1A91: B5 69 LDA $69,X C1/1A93: 38 SEC C1/1A94: E5 68 SBC $68 C1/1A96: D0 0A BNE $1AA2 C1/1A98: A9 FF LDA #$FF C1/1A9A: 95 69 STA $69,X C1/1A9C: E8 INX C1/1A9D: E0 03 00 CPX #$0003 C1/1AA0: D0 EF BNE $1A91 C1/1AA2: 60 RTS ; hex->dec conversion constants decimal_chg_data: C1/1AA3: .DD $00989680, $000F4240, $000186A0, $00002710, $000003E8, $00000064, $0000000A ; [ Convert Hex to Decimal ] decimal_chg2: C1/1ABF: 7B TDC C1/1AC0: AA TAX C1/1AC1: 95 69 STA $69,X C1/1AC3: E8 INX C1/1AC4: E0 08 00 CPX #$0008 C1/1AC7: D0 F8 BNE $1AC1 C1/1AC9: A2 00 00 LDX #$0000 C1/1ACC: DA PHX C1/1ACD: 8A TXA C1/1ACE: 0A ASL C1/1ACF: 0A ASL C1/1AD0: AA TAX C1/1AD1: BF A3 1A C1 LDA $C11AA3,X C1/1AD5: 85 14 STA $14 C1/1AD7: BF A4 1A C1 LDA $C11AA4,X C1/1ADB: 85 15 STA $15 C1/1ADD: BF A5 1A C1 LDA $C11AA5,X C1/1AE1: 85 16 STA $16 C1/1AE3: 20 FC 1A JSR $1AFC ; C1/1AE6: FA PLX C1/1AE7: A5 18 LDA $18 C1/1AE9: 18 CLC C1/1AEA: 65 68 ADC $68 C1/1AEC: 95 69 STA $69,X C1/1AEE: E8 INX C1/1AEF: E0 07 00 CPX #$0007 C1/1AF2: D0 D8 BNE $1ACC C1/1AF4: A5 10 LDA $10 C1/1AF6: 18 CLC C1/1AF7: 65 68 ADC $68 C1/1AF9: 85 70 STA $70 C1/1AFB: 60 RTS ; [ ] ; unused one_sub: C1/1AFC: 64 18 STZ $18 C1/1AFE: A5 10 LDA $10 C1/1B00: 38 SEC C1/1B01: E5 14 SBC $14 C1/1B03: 85 10 STA $10 C1/1B05: A5 11 LDA $11 C1/1B07: E5 15 SBC $15 C1/1B09: 85 11 STA $11 C1/1B0B: A5 12 LDA $12 C1/1B0D: E5 16 SBC $16 C1/1B0F: 85 12 STA $12 C1/1B11: E6 18 INC $18 C1/1B13: B0 E9 BCS $1AFE C1/1B15: C6 18 DEC $18 C1/1B17: A5 10 LDA $10 C1/1B19: 18 CLC C1/1B1A: 65 14 ADC $14 C1/1B1C: 85 10 STA $10 C1/1B1E: A5 11 LDA $11 C1/1B20: 65 15 ADC $15 C1/1B22: 85 11 STA $11 C1/1B24: A5 12 LDA $12 C1/1B26: 65 16 ADC $16 C1/1B28: 85 12 STA $12 C1/1B2A: 60 RTS ; [ Convert Hex to Decimal ] ; +X = hex value to convert ; $68 = fixed value to add to each digit decimal_chg: C1/1B2B: C2 20 REP #$20 C1/1B2D: 64 22 STZ $22 C1/1B2F: 64 24 STZ $24 C1/1B31: 64 26 STZ $26 C1/1B33: 64 28 STZ $28 C1/1B35: 8A TXA C1/1B36: 38 SEC C1/1B37: E9 E8 03 SBC #$03E8 ; subtract 1000 C1/1B3A: 90 05 BCC $1B41 C1/1B3C: E6 22 INC $22 ; +$22 = thousands digit C1/1B3E: 4C 36 1B JMP $1B36 C1/1B41: 18 CLC C1/1B42: 69 E8 03 ADC #$03E8 C1/1B45: 38 SEC C1/1B46: E9 64 00 SBC #$0064 ; subtract 100 C1/1B49: 90 05 BCC $1B50 C1/1B4B: E6 24 INC $24 ; +$24 = hundreds digit C1/1B4D: 4C 45 1B JMP $1B45 C1/1B50: 18 CLC C1/1B51: 69 64 00 ADC #$0064 C1/1B54: 38 SEC C1/1B55: E9 0A 00 SBC #$000A ; subtract 10 C1/1B58: 90 05 BCC $1B5F C1/1B5A: E6 26 INC $26 ; +$26 = tens digit C1/1B5C: 4C 54 1B JMP $1B54 C1/1B5F: 18 CLC C1/1B60: 69 0A 00 ADC #$000A C1/1B63: 85 28 STA $28 ; +$28 = ones digit C1/1B65: 7B TDC C1/1B66: E2 20 SEP #$20 C1/1B68: A5 22 LDA $22 C1/1B6A: 18 CLC C1/1B6B: 65 68 ADC $68 C1/1B6D: 85 69 STA $69 C1/1B6F: A5 24 LDA $24 C1/1B71: 18 CLC C1/1B72: 65 68 ADC $68 C1/1B74: 85 6A STA $6A C1/1B76: A5 26 LDA $26 C1/1B78: 18 CLC C1/1B79: 65 68 ADC $68 C1/1B7B: 85 6B STA $6B C1/1B7D: A5 28 LDA $28 C1/1B7F: 18 CLC C1/1B80: 65 68 ADC $68 C1/1B82: 85 6C STA $6C C1/1B84: 60 RTS ; [ Update Controller ] get_pdl: C1/1B85: 8B PHB C1/1B86: 7B TDC C1/1B87: 48 PHA C1/1B88: AB PLB C1/1B89: AF CA 62 7E LDA $7E62CA ; active character C1/1B8D: 29 03 AND #$03 C1/1B8F: 8F 01 02 00 STA $000201 C1/1B93: 22 03 00 C3 JSL $C30003 ; update controller C1/1B97: AB PLB C1/1B98: A6 04 LDX $04 ; swap buttons pressed and buttons in repeat mode C1/1B9A: DA PHX C1/1B9B: A6 0A LDX $0A C1/1B9D: 86 04 STX $04 C1/1B9F: FA PLX C1/1BA0: 86 0A STX $0A C1/1BA2: 8E 68 62 STX $6268 C1/1BA5: C2 20 REP #$20 C1/1BA7: AD 66 62 LDA $6266 ; buttons pressed last frame C1/1BAA: 49 FF FF EOR #$FFFF ; invert C1/1BAD: 2D 68 62 AND $6268 ; new buttons C1/1BB0: 29 F0 F0 AND #$F0F0 ; mask direction buttons C1/1BB3: 8D 68 62 STA $6268 C1/1BB6: 8A TXA C1/1BB7: 29 0F 0F AND #$0F0F C1/1BBA: 0D 68 62 ORA $6268 C1/1BBD: 8D 68 62 STA $6268 C1/1BC0: 8E 66 62 STX $6266 C1/1BC3: 7B TDC C1/1BC4: E2 20 SEP #$20 C1/1BC6: 60 RTS ; [ Update Circle ] circle: C1/1BC7: 22 DD D8 C2 JSL $C2D8DD ; update circle C1/1BCB: 60 RTS ; [ Update Triangle ] triangle: C1/1BCC: 22 6D DA C2 JSL $C2DA6D C1/1BD0: 60 RTS ; ------------------------------------[ Battle Graphics: Battle BG ]------------------------------------ ; [ ] last_land_chg: C1/1BD1: 9C DF E9 STZ $E9DF C1/1BD4: 9C DE E9 STZ $E9DE C1/1BD7: EE DE E9 INC $E9DE C1/1BDA: 80 06 BRA $1BE2 ; [ ] wait_land_chg: C1/1BDC: 9C DF E9 STZ $E9DF wait_land_chg2: C1/1BDF: 9C DE E9 STZ $E9DE ; [ ] wait_land_chg_main: C1/1BE2: 9C DC E9 STZ $E9DC C1/1BE5: EE DC E9 INC $E9DC C1/1BE8: 9C DD E9 STZ $E9DD C1/1BEB: C9 FF CMP #$FF C1/1BED: D0 03 BNE $1BF2 C1/1BEF: 4C 77 1C JMP $1C77 C1/1BF2: 85 22 STA $22 C1/1BF4: A9 06 LDA #$06 C1/1BF6: 85 24 STA $24 C1/1BF8: 20 D9 18 JSR $18D9 ; multiply $22 * $24 C1/1BFB: A6 26 LDX $26 C1/1BFD: A0 00 10 LDY #$1000 C1/1C00: 20 F5 1C JSR $1CF5 ; copy battle bg graphics to VRAM C1/1C03: E8 INX C1/1C04: A0 00 18 LDY #$1800 C1/1C07: 20 F5 1C JSR $1CF5 ; copy battle bg graphics to VRAM C1/1C0A: E8 INX C1/1C0B: EE DD E9 INC $E9DD C1/1C0E: A0 00 48 LDY #$4800 C1/1C11: 20 F5 1C JSR $1CF5 ; copy battle bg graphics to VRAM C1/1C14: E8 INX C1/1C15: A0 00 60 LDY #$6000 C1/1C18: 20 7B 1C JSR $1C7B ; copy battle bg tile data to vram C1/1C1B: E8 INX C1/1C1C: AD DF E9 LDA $E9DF C1/1C1F: D0 0B BNE $1C2C C1/1C21: AD DE E9 LDA $E9DE C1/1C24: D0 06 BNE $1C2C C1/1C26: A0 00 64 LDY #$6400 C1/1C29: 20 7B 1C JSR $1C7B ; copy battle bg tile data to vram C1/1C2C: E8 INX C1/1C2D: BF 00 00 E7 LDA $E70000,X C1/1C31: 29 80 AND #$80 C1/1C33: 8D 83 62 STA $6283 ; wavy battle bg (desert) C1/1C36: BF 00 00 E7 LDA $E70000,X ; battle bg palette index C1/1C3A: 29 7F AND #$7F C1/1C3C: C2 20 REP #$20 C1/1C3E: 0A ASL C1/1C3F: 0A ASL C1/1C40: 0A ASL C1/1C41: 0A ASL C1/1C42: 0A ASL C1/1C43: 85 22 STA $22 C1/1C45: 0A ASL C1/1C46: 18 CLC C1/1C47: 65 22 ADC $22 C1/1C49: AA TAX C1/1C4A: 7B TDC C1/1C4B: E2 20 SEP #$20 C1/1C4D: A8 TAY C1/1C4E: AD DE E9 LDA $E9DE C1/1C51: F0 13 BEQ $1C66 C1/1C53: BF 50 01 E7 LDA $E70150,X C1/1C57: 99 60 7E STA $7E60,Y C1/1C5A: 99 60 7C STA $7C60,Y C1/1C5D: E8 INX C1/1C5E: C8 INY C1/1C5F: C0 40 00 CPY #$0040 C1/1C62: D0 EF BNE $1C53 C1/1C64: 80 11 BRA $1C77 C1/1C66: BF 50 01 E7 LDA $E70150,X C1/1C6A: 99 A0 7E STA $7EA0,Y C1/1C6D: 99 A0 7C STA $7CA0,Y C1/1C70: E8 INX C1/1C71: C8 INY C1/1C72: C0 60 00 CPY #$0060 C1/1C75: D0 EF BNE $1C66 C1/1C77: 20 E2 03 JSR $03E2 C1/1C7A: 60 RTS ; [ Copy Battle BG Tile Data to VRAM ] ; +X = pointer to battle bg data ; +Y = destination address (VRAM) decode_scr_tfr: C1/1C7B: DA PHX C1/1C7C: 5A PHY C1/1C7D: BF 00 00 E7 LDA $E70000,X ; battle bg ($FF = none) C1/1C81: C9 FF CMP #$FF C1/1C83: F0 6D BEQ $1CF2 C1/1C85: 0A ASL C1/1C86: AA TAX C1/1C87: BF 48 18 E7 LDA $E71848,X ; pointer to battle bg tile data C1/1C8B: 85 F3 STA $F3 C1/1C8D: BF 49 18 E7 LDA $E71849,X C1/1C91: 85 F4 STA $F4 C1/1C93: A9 E7 LDA #$E7 C1/1C95: 85 F5 STA $F5 C1/1C97: 20 2F 1E JSR $1E2F C1/1C9A: 5A PHY C1/1C9B: 22 6D FF C2 JSL $C2FF6D ; decompress C1/1C9F: 7A PLY C1/1CA0: AD DE E9 LDA $E9DE C1/1CA3: F0 2C BEQ $1CD1 C1/1CA5: 8B PHB C1/1CA6: A9 7F LDA #$7F C1/1CA8: 48 PHA C1/1CA9: AB PLB C1/1CAA: 7B TDC C1/1CAB: AA TAX C1/1CAC: BD 01 C4 LDA $C401,X C1/1CAF: 1A INC C1/1CB0: 1A INC C1/1CB1: 38 SEC C1/1CB2: E9 08 SBC #$08 C1/1CB4: 9D 01 C4 STA $C401,X C1/1CB7: E8 INX C1/1CB8: E8 INX C1/1CB9: E0 00 08 CPX #$0800 C1/1CBC: D0 EE BNE $1CAC C1/1CBE: AB PLB C1/1CBF: A2 C0 04 LDX #$04C0 C1/1CC2: 86 10 STX $10 C1/1CC4: A9 7F LDA #$7F C1/1CC6: A2 00 C4 LDX #$C400 C1/1CC9: A0 A0 65 LDY #$65A0 C1/1CCC: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/1CCF: 80 21 BRA $1CF2 C1/1CD1: AD DC E9 LDA $E9DC C1/1CD4: D0 0F BNE $1CE5 C1/1CD6: A2 00 08 LDX #$0800 C1/1CD9: 86 36 STX $36 C1/1CDB: A9 7F LDA #$7F C1/1CDD: A2 00 C4 LDX #$C400 C1/1CE0: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/1CE3: 80 0D BRA $1CF2 C1/1CE5: A2 00 08 LDX #$0800 C1/1CE8: 86 10 STX $10 C1/1CEA: A9 7F LDA #$7F C1/1CEC: A2 00 C4 LDX #$C400 C1/1CEF: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/1CF2: 7A PLY C1/1CF3: FA PLX C1/1CF4: 60 RTS ; [ Copy Battle BG Graphics to VRAM ] ; +X = pointer to battle bg data ; +Y = destination address (VRAM) decode_cgx_tfr: C1/1CF5: DA PHX C1/1CF6: 5A PHY C1/1CF7: BF 00 00 E7 LDA $E70000,X ; battle bg C1/1CFB: C9 FF CMP #$FF C1/1CFD: D0 03 BNE $1D02 C1/1CFF: 4C AC 1D JMP $1DAC C1/1D02: DA PHX C1/1D03: 29 7F AND #$7F C1/1D05: 85 F3 STA $F3 C1/1D07: 0A ASL C1/1D08: 18 CLC C1/1D09: 65 F3 ADC $F3 C1/1D0B: AA TAX C1/1D0C: BF 50 16 E7 LDA $E71650,X ; pointer to battle bg graphics C1/1D10: 85 F3 STA $F3 C1/1D12: BF 51 16 E7 LDA $E71651,X C1/1D16: 85 F4 STA $F4 C1/1D18: BF 52 16 E7 LDA $E71652,X C1/1D1C: 85 F5 STA $F5 C1/1D1E: C9 E7 CMP #$E7 C1/1D20: 90 02 BCC $1D24 ; branch if using map graphics (uncompressed) C1/1D22: 80 28 BRA $1D4C ; branch if using battle bg graphics (compressed) C1/1D24: 5A PHY C1/1D25: 8B PHB C1/1D26: A9 7F LDA #$7F C1/1D28: 48 PHA C1/1D29: AB PLB C1/1D2A: C2 20 REP #$20 C1/1D2C: 7B TDC C1/1D2D: A8 TAY C1/1D2E: B7 F3 LDA [$F3],Y C1/1D30: 99 00 C4 STA $C400,Y C1/1D33: C8 INY C1/1D34: C8 INY C1/1D35: C0 00 20 CPY #$2000 C1/1D38: D0 F4 BNE $1D2E C1/1D3A: 7B TDC C1/1D3B: E2 20 SEP #$20 C1/1D3D: AB PLB C1/1D3E: A9 7F LDA #$7F C1/1D40: 8D F4 E9 STA $E9F4 C1/1D43: A2 00 C4 LDX #$C400 C1/1D46: 8E F2 E9 STX $E9F2 C1/1D49: 7A PLY C1/1D4A: 80 14 BRA $1D60 C1/1D4C: A9 7F LDA #$7F C1/1D4E: 8D F4 E9 STA $E9F4 C1/1D51: A2 00 C4 LDX #$C400 C1/1D54: 8E F2 E9 STX $E9F2 C1/1D57: 20 2F 1E JSR $1E2F C1/1D5A: 5A PHY C1/1D5B: 22 6D FF C2 JSL $C2FF6D ; decompress C1/1D5F: 7A PLY C1/1D60: FA PLX C1/1D61: BF 00 00 E7 LDA $E70000,X C1/1D65: 30 05 BMI $1D6C C1/1D67: A2 00 10 LDX #$1000 C1/1D6A: 80 03 BRA $1D6F C1/1D6C: A2 00 20 LDX #$2000 C1/1D6F: AD DD E9 LDA $E9DD C1/1D72: F0 0B BEQ $1D7F C1/1D74: C2 20 REP #$20 C1/1D76: 8A TXA C1/1D77: 38 SEC C1/1D78: E9 20 00 SBC #$0020 C1/1D7B: AA TAX C1/1D7C: 7B TDC C1/1D7D: E2 20 SEP #$20 C1/1D7F: AD DC E9 LDA $E9DC C1/1D82: D0 0D BNE $1D91 C1/1D84: 86 36 STX $36 C1/1D86: AE F2 E9 LDX $E9F2 C1/1D89: AD F4 E9 LDA $E9F4 C1/1D8C: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/1D8F: 80 1B BRA $1DAC C1/1D91: 86 10 STX $10 C1/1D93: AD DE E9 LDA $E9DE C1/1D96: F0 0B BEQ $1DA3 C1/1D98: C2 20 REP #$20 C1/1D9A: 98 TYA C1/1D9B: 18 CLC C1/1D9C: 69 00 20 ADC #$2000 C1/1D9F: A8 TAY C1/1DA0: 7B TDC C1/1DA1: E2 20 SEP #$20 C1/1DA3: AE F2 E9 LDX $E9F2 C1/1DA6: AD F4 E9 LDA $E9F4 C1/1DA9: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/1DAC: 7A PLY C1/1DAD: FA PLX C1/1DAE: 60 RTS ; [ Load Battle Background ] land_data_set: C1/1DAF: 9C DC E9 STZ $E9DC C1/1DB2: 9C DD E9 STZ $E9DD C1/1DB5: 9C DE E9 STZ $E9DE C1/1DB8: AD B8 EC LDA $ECB8 ; battle bg index C1/1DBB: 85 22 STA $22 C1/1DBD: A9 06 LDA #$06 C1/1DBF: 85 24 STA $24 C1/1DC1: 20 D9 18 JSR $18D9 ; multiply by 6 to get pointer to battle bg data C1/1DC4: A6 26 LDX $26 C1/1DC6: A0 00 10 LDY #$1000 C1/1DC9: 20 F5 1C JSR $1CF5 C1/1DCC: E8 INX C1/1DCD: A0 00 18 LDY #$1800 C1/1DD0: 20 F5 1C JSR $1CF5 C1/1DD3: E8 INX C1/1DD4: A0 00 48 LDY #$4800 C1/1DD7: 20 F5 1C JSR $1CF5 C1/1DDA: E8 INX C1/1DDB: A0 00 60 LDY #$6000 C1/1DDE: 20 7B 1C JSR $1C7B C1/1DE1: E8 INX C1/1DE2: A0 00 64 LDY #$6400 C1/1DE5: 20 7B 1C JSR $1C7B C1/1DE8: E8 INX C1/1DE9: BF 00 00 E7 LDA $E70000,X ; wavy background (desert) C1/1DED: 29 80 AND #$80 C1/1DEF: 8D 83 62 STA $6283 C1/1DF2: BF 00 00 E7 LDA $E70000,X ; battle bg palette C1/1DF6: 29 7F AND #$7F C1/1DF8: C2 20 REP #$20 C1/1DFA: 0A ASL C1/1DFB: 0A ASL C1/1DFC: 0A ASL C1/1DFD: 0A ASL C1/1DFE: 0A ASL C1/1DFF: 85 22 STA $22 ; multiply by 32, then by 3 C1/1E01: 0A ASL C1/1E02: 18 CLC C1/1E03: 65 22 ADC $22 C1/1E05: AA TAX C1/1E06: 7B TDC C1/1E07: E2 20 SEP #$20 C1/1E09: A8 TAY C1/1E0A: BF 50 01 E7 LDA $E70150,X ; copy palette (48 colors) C1/1E0E: 99 A0 7E STA $7EA0,Y C1/1E11: E8 INX C1/1E12: C8 INY C1/1E13: C0 60 00 CPY #$0060 C1/1E16: D0 F2 BNE $1E0A C1/1E18: C2 20 REP #$20 C1/1E1A: A9 F0 57 LDA #$57F0 ; clear last 16 bytes of battlefield bg3 tile data C1/1E1D: 8F 16 21 00 STA $002116 C1/1E21: A2 10 00 LDX #$0010 C1/1E24: 7B TDC C1/1E25: 8F 18 21 00 STA $002118 C1/1E29: CA DEX C1/1E2A: D0 F9 BNE $1E25 C1/1E2C: E2 20 SEP #$20 C1/1E2E: 60 RTS ; [ ] set_tmp_buffer2_poi: C1/1E2F: A9 00 LDA #$00 ; $7FC400 (bg1 animation tile data buffer) C1/1E31: 85 F6 STA $F6 C1/1E33: A9 C4 LDA #$C4 C1/1E35: 85 F7 STA $F7 C1/1E37: A9 7F LDA #$7F C1/1E39: 85 F8 STA $F8 C1/1E3B: 60 RTS ; ---------------------------------------[ Battle Graphics: PPU ]--------------------------------------- ; [ Check BG1 Monsters ] ; $24 = bg1 monsters (out) get_mon_front_bit: C1/1E3C: 7B TDC C1/1E3D: AA TAX C1/1E3E: 64 24 STZ $24 C1/1E40: BD F4 80 LDA $80F4,X ; bg1 monster (from battle data) C1/1E43: 4A LSR C1/1E44: 05 24 ORA $24 C1/1E46: 6A ROR C1/1E47: 85 24 STA $24 C1/1E49: E8 INX ; next monster C1/1E4A: E8 INX C1/1E4B: E0 0C 00 CPX #$000C C1/1E4E: D0 F0 BNE $1E40 C1/1E50: 4A LSR C1/1E51: 4A LSR C1/1E52: 85 24 STA $24 C1/1E54: 60 RTS ; [ Clear BG1 Tile Data in VRAM (long access) ] mon_scr_clr_tfr_long: C1/1E55: 20 59 1E JSR $1E59 C1/1E58: 6B RTL ; [ Clear BG1 Tile Data in VRAM ] mon_scr_clr_tfr: C1/1E59: 20 F6 1F JSR $1FF6 ; clear bg tile data buffer ($02EE) C1/1E5C: 4C 26 1F JMP $1F26 ; copy bg1 tile data to VRAM ; [ Copy Monsters to BG1 (long access) ] target_mon_set_long: C1/1E5F: 20 63 1E JSR $1E63 C1/1E62: 6B RTL ; [ Copy Monsters to BG1 ] ; A: monsters affected target_mon_set: C1/1E63: 48 PHA C1/1E64: 20 00 0F JSR $0F00 ; clear bg1 vertical scroll HDMA data (battlefield region) C1/1E67: 20 F6 1F JSR $1FF6 ; clear bg tile data buffer ($02EE) C1/1E6A: 68 PLA ; **** added in rev 1 **** C1/----: 80 0E BRA $1E6B ; [ Copy BG1 Monsters to BG1 ] back_mon_set: C1/1E6D: 20 00 0F JSR $0F00 ; clear bg1 vertical scroll HDMA data (battlefield region) C1/----: 20 F6 1F JSR $1FF6 ; clear bg tile data buffer ($02EE) C1/----: 20 3C 1E JSR $1E3C ; check bg1 monsters C1/----: A5 24 LDA $24 C1/----: 2D 91 61 AND $6191 ; ************************ target_mon_set2: C1/1E6B: 2D 1E 20 AND $201E C1/1E6E: 2D AB 61 AND $61AB C1/1E71: 2D E6 E9 AND $E9E6 C1/1E74: 85 24 STA $24 C1/1E76: 4C 95 1E JMP $1E95 ; copy monster palettes & tile data to bg1 ; [ Copy BG1 Monsters to BG1 ] ; has no effect ; *** removed in rev 1 *** C1/1E79: 20 00 0F JSR $0F00 ; clear bg1 vertical scroll HDMA data (battlefield region) C1/1E7C: 20 F6 1F JSR $1FF6 ; clear bg tile data buffer ($02EE) C1/1E7F: 20 3C 1E JSR $1E3C ; check bg1 monsters C1/1E82: A5 24 LDA $24 C1/1E84: 2D 1E 20 AND $201E ; monsters shown C1/1E87: 2D AB 61 AND $61AB ; monsters shown C1/1E8A: 2D E6 E9 AND $E9E6 ; monsters that are visible (no clear status) C1/1E8D: 2D 91 61 AND $6191 ; C1/1E90: 85 24 STA $24 C1/1E92: 4C 95 1E JMP $1E95 ; copy monster palettes & tile data to bg1 ; ************************ ; [ Copy Monster Palettes and Tile Data to BG1 ] ; $24 = monsters affected mon_scr_set_main: C1/1E95: A5 24 LDA $24 C1/1E97: 85 22 STA $22 C1/1E99: 7B TDC C1/1E9A: AA TAX C1/1E9B: 64 10 STZ $10 C1/1E9D: 46 22 LSR $22 C1/1E9F: 90 29 BCC $1ECA ; branch if monster is not affected C1/1EA1: DA PHX C1/1EA2: A5 10 LDA $10 C1/1EA4: 9D FF 80 STA $80FF,X ; monster palette copied to animation palette C1/1EA7: 0A ASL C1/1EA8: 0A ASL C1/1EA9: 0A ASL C1/1EAA: 0A ASL C1/1EAB: 0A ASL C1/1EAC: A8 TAY C1/1EAD: BD DB 80 LDA $80DB,X ; monster palette C1/1EB0: 4A LSR C1/1EB1: 0A ASL C1/1EB2: 0A ASL C1/1EB3: 0A ASL C1/1EB4: 0A ASL C1/1EB5: 0A ASL C1/1EB6: AA TAX C1/1EB7: A9 20 LDA #$20 C1/1EB9: 85 12 STA $12 C1/1EBB: BD 00 7F LDA $7F00,X ; copy monster palette to animation palette C1/1EBE: 99 60 7E STA $7E60,Y C1/1EC1: E8 INX C1/1EC2: C8 INY C1/1EC3: C6 12 DEC $12 ; next color C1/1EC5: D0 F4 BNE $1EBB C1/1EC7: E6 10 INC $10 ; next palette C1/1EC9: FA PLX C1/1ECA: E8 INX ; next monster C1/1ECB: E8 INX C1/1ECC: E0 0C 00 CPX #$000C C1/1ECF: D0 CC BNE $1E9D C1/1ED1: 7B TDC C1/1ED2: AA TAX C1/1ED3: 46 24 LSR $24 C1/1ED5: 90 43 BCC $1F1A ; branch if monster is not affected C1/1ED7: BD C3 80 LDA $80C3,X ; $14 = monster x position (in 8x8 tiles) C1/1EDA: 4A LSR C1/1EDB: 4A LSR C1/1EDC: 4A LSR C1/1EDD: 85 14 STA $14 C1/1EDF: BD CF 80 LDA $80CF,X ; $16 = monster y position (in 8x8 tiles) C1/1EE2: 4A LSR C1/1EE3: 4A LSR C1/1EE4: 4A LSR C1/1EE5: 85 16 STA $16 C1/1EE7: BD 2F 81 LDA $812F,X ; $10 = monster width C1/1EEA: 85 10 STA $10 C1/1EEC: BD 30 81 LDA $8130,X ; $12 = monster height C1/1EEF: 85 12 STA $12 C1/1EF1: BD FF 80 LDA $80FF,X ; $22 = monster palette C1/1EF4: 18 CLC C1/1EF5: 69 03 ADC #$03 C1/1EF7: 0A ASL C1/1EF8: 0A ASL C1/1EF9: 85 22 STA $22 C1/1EFB: BD 00 81 LDA $8100,X ; C1/1EFE: 05 22 ORA $22 C1/1F00: 09 03 ORA #$03 C1/1F02: 85 19 STA $19 ; $19 = tile data C1/1F04: BF 74 C4 C2 LDA $C2C474,X ; +$26 = pointer to monster sprite data C1/1F08: 85 26 STA $26 C1/1F0A: BF 75 C4 C2 LDA $C2C475,X C1/1F0E: 85 27 STA $27 C1/1F10: A0 02 00 LDY #$0002 C1/1F13: B1 26 LDA ($26),Y ; $18 = tile number C1/1F15: 85 18 STA $18 C1/1F17: 20 83 1F JSR $1F83 ; copy monster tile data to bg1 C1/1F1A: E8 INX ; next monster C1/1F1B: E8 INX C1/1F1C: E0 0C 00 CPX #$000C C1/1F1F: D0 B2 BNE $1ED3 C1/1F21: 60 RTS ; [ Copy BG1 Tile Data to VRAM (long access) ] monster_screen_tfr_long: C1/1F22: 20 26 1F JSR $1F26 C1/1F25: 6B RTL ; [ Copy BG1 Tile Data to VRAM ] monster_screen_tfr: C1/1F26: A2 C0 04 LDX #$04C0 ; size = $04C0 C1/1F29: 86 10 STX $10 C1/1F2B: A2 7F A9 LDX #$A97F ; source = $7EA97F (bg tile data buffer) C1/1F2E: A9 7E LDA #$7E C1/1F30: A0 00 0C LDY #$0C00 ; destination = $0C00 (VRAM) C1/1F33: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ Calculate Pointer to Monster Tile Data Buffer ] ; +$1A = pointer to bg1 tile data buffer (out) get_mon_scr_poi: C1/1F36: DA PHX C1/1F37: A5 10 LDA $10 C1/1F39: 85 1E STA $1E C1/1F3B: A5 14 LDA $14 C1/1F3D: 18 CLC C1/1F3E: 65 10 ADC $10 C1/1F40: C9 20 CMP #$20 C1/1F42: 90 07 BCC $1F4B C1/1F44: A9 20 LDA #$20 C1/1F46: 38 SEC C1/1F47: E5 14 SBC $14 C1/1F49: 85 1E STA $1E C1/1F4B: A5 16 LDA $16 C1/1F4D: 18 CLC C1/1F4E: 65 12 ADC $12 C1/1F50: C9 13 CMP #$13 C1/1F52: 90 07 BCC $1F5B C1/1F54: A9 13 LDA #$13 C1/1F56: 38 SEC C1/1F57: E5 16 SBC $16 C1/1F59: 85 12 STA $12 C1/1F5B: 64 11 STZ $11 C1/1F5D: 64 13 STZ $13 C1/1F5F: 64 15 STZ $15 C1/1F61: 64 17 STZ $17 C1/1F63: 64 1F STZ $1F C1/1F65: 64 21 STZ $21 C1/1F67: C2 20 REP #$20 C1/1F69: A5 16 LDA $16 C1/1F6B: 0A ASL C1/1F6C: 0A ASL C1/1F6D: 0A ASL C1/1F6E: 0A ASL C1/1F6F: 0A ASL C1/1F70: 0A ASL C1/1F71: 06 14 ASL $14 C1/1F73: 18 CLC C1/1F74: 65 14 ADC $14 C1/1F76: 69 7F A9 ADC #$A97F C1/1F79: 85 1A STA $1A C1/1F7B: 06 10 ASL $10 C1/1F7D: 06 1E ASL $1E C1/1F7F: E2 20 SEP #$20 C1/1F81: FA PLX C1/1F82: 60 RTS ; [ Copy Monster Tile Data to BG1 ] one_mon_scr_set: C1/1F83: DA PHX C1/1F84: 20 36 1F JSR $1F36 ; calculate pointer to monster tile data buffer C1/1F87: BD F3 80 LDA $80F3,X C1/1F8A: 5D 7E 61 EOR $617E,X C1/1F8D: 29 01 AND #$01 C1/1F8F: D0 28 BNE $1FB9 ; branch if horizontally flipped ; not flipped C1/1F91: C2 20 REP #$20 C1/1F93: 7B TDC C1/1F94: A8 TAY C1/1F95: A5 18 LDA $18 C1/1F97: 91 1A STA ($1A),Y C1/1F99: 1A INC ; next tile C1/1F9A: C8 INY C1/1F9B: C8 INY C1/1F9C: C4 1E CPY $1E C1/1F9E: D0 F7 BNE $1F97 C1/1FA0: A5 18 LDA $18 ; next row of tiles C1/1FA2: 18 CLC C1/1FA3: 69 10 00 ADC #$0010 C1/1FA6: 85 18 STA $18 C1/1FA8: A5 1A LDA $1A C1/1FAA: 18 CLC C1/1FAB: 69 40 00 ADC #$0040 C1/1FAE: 85 1A STA $1A C1/1FB0: C6 12 DEC $12 C1/1FB2: D0 DF BNE $1F93 C1/1FB4: 7B TDC C1/1FB5: E2 20 SEP #$20 C1/1FB7: FA PLX C1/1FB8: 60 RTS ; horizontally flipped C1/1FB9: C2 20 REP #$20 C1/1FBB: A5 10 LDA $10 ; start at width - 1 C1/1FBD: 4A LSR C1/1FBE: 3A DEC C1/1FBF: 18 CLC C1/1FC0: 65 18 ADC $18 C1/1FC2: 09 00 40 ORA #$4000 ; horizontal flip C1/1FC5: 85 18 STA $18 C1/1FC7: 7B TDC C1/1FC8: A8 TAY C1/1FC9: A5 18 LDA $18 C1/1FCB: 91 1A STA ($1A),Y C1/1FCD: 3A DEC ; next tile (go left to right) C1/1FCE: C8 INY C1/1FCF: C8 INY C1/1FD0: C4 1E CPY $1E C1/1FD2: D0 F7 BNE $1FCB C1/1FD4: A5 18 LDA $18 ; next row of tiles C1/1FD6: 18 CLC C1/1FD7: 69 10 00 ADC #$0010 C1/1FDA: 85 18 STA $18 C1/1FDC: A5 1A LDA $1A C1/1FDE: 18 CLC C1/1FDF: 69 40 00 ADC #$0040 C1/1FE2: 85 1A STA $1A C1/1FE4: C6 12 DEC $12 C1/1FE6: D0 DF BNE $1FC7 C1/1FE8: 7B TDC C1/1FE9: E2 20 SEP #$20 C1/1FEB: FA PLX C1/1FEC: 60 RTS ; [ Clear BG Tile Data Buffer ($01EE) ] mon_screen_clr: bg3_screen_clr: C1/1FED: C2 20 REP #$20 C1/1FEF: 7B TDC C1/1FF0: AA TAX C1/1FF1: A9 EE 01 LDA #$01EE C1/1FF4: 80 07 BRA $1FFD ; [ Clear BG Tile Data Buffer ($02EE) ] mon_screen_clr_init: C1/1FF6: C2 20 REP #$20 C1/1FF8: 7B TDC C1/1FF9: AA TAX C1/1FFA: A9 EE 02 LDA #$02EE mon_screen_clr_main: C1/1FFD: 9D 7F A9 STA $A97F,X C1/2000: 9D 17 AA STA $AA17,X C1/2003: 9D AF AA STA $AAAF,X C1/2006: 9D 47 AB STA $AB47,X C1/2009: 9D DF AB STA $ABDF,X C1/200C: 9D 77 AC STA $AC77,X C1/200F: 9D 0F AD STA $AD0F,X C1/2012: 9D A7 AD STA $ADA7,X C1/2015: E8 INX C1/2016: E8 INX C1/2017: E0 98 00 CPX #$0098 C1/201A: D0 E1 BNE $1FFD C1/201C: 7B TDC C1/201D: E2 20 SEP #$20 C1/201F: 60 RTS ; [ Clear Monster Graphics Buffer ] mon_vram_image_clr: C1/2020: 7B TDC C1/2021: AA TAX C1/2022: 9D 3F AE STA $AE3F,X ; clear monster graphics buffer C1/2025: 9D 3F BE STA $BE3F,X C1/2028: E8 INX C1/2029: E0 00 10 CPX #$1000 C1/202C: D0 F4 BNE $2022 C1/202E: 60 RTS ; [ ] set_kapa_size: C1/202F: AD A7 81 LDA $81A7 C1/2032: 0A ASL C1/2033: A8 TAY C1/2034: C2 20 REP #$20 C1/2036: B9 2F 81 LDA $812F,Y C1/2039: 85 22 STA $22 C1/203B: 29 FF 00 AND #$00FF C1/203E: 0A ASL C1/203F: AA TAX C1/2040: BF 70 BB C2 LDA $C2BB70,X C1/2044: 85 26 STA $26 C1/2046: A5 23 LDA $23 C1/2048: 29 FF 00 AND #$00FF C1/204B: 0A ASL C1/204C: AA TAX C1/204D: BF 92 BB C2 LDA $C2BB92,X C1/2051: 18 CLC C1/2052: 65 26 ADC $26 C1/2054: 85 26 STA $26 C1/2056: 7B TDC C1/2057: E2 20 SEP #$20 C1/2059: 60 RTS ; [ Init Monster Graphics Loader ] ; A = monster slot get_graph_data: C1/205A: 8D A7 81 STA $81A7 ; monster slot C1/205D: 0A ASL C1/205E: AA TAX C1/205F: DA PHX C1/2060: C2 20 REP #$20 C1/2062: 64 26 STZ $26 C1/2064: BD 01 20 LDA $2001,X ; monster number C1/2067: 0A ASL C1/2068: 0A ASL C1/2069: 18 CLC C1/206A: 7D 01 20 ADC $2001,X ; multiply by 5 to get pointer to monster graphics data C1/206D: AA TAX C1/206E: BF 02 70 D2 LDA $D27002,X ; +$16 = monster palette number C1/2072: EB XBA ; bytes are stored backwards for some reason ... C1/2073: 29 FF 03 AND #$03FF C1/2076: 85 16 STA $16 C1/2078: 7B TDC C1/2079: E2 20 SEP #$20 C1/207B: AD A7 81 LDA $81A7 ; monster slot C1/207E: A8 TAY C1/207F: B9 C2 62 LDA $62C2,Y ; imp graphics C1/2082: F0 06 BEQ $208A ; branch if not imp C1/2084: 20 2F 20 JSR $202F ; C1/2087: A2 16 08 LDX #$0816 ; use monster $019E graphics data (imp) C1/208A: C2 20 REP #$20 C1/208C: BF 00 70 D2 LDA $D27000,X ; monster graphics index C1/2090: 29 FF 7F AND #$7FFF C1/2093: 8D A8 81 STA $81A8 ; set graphics pointer C1/2096: 7B TDC C1/2097: E2 20 SEP #$20 C1/2099: BF 01 70 D2 LDA $D27001,X ; 3bpp flag C1/209D: 29 80 AND #$80 C1/209F: 8D AC 81 STA $81AC C1/20A2: BF 02 70 D2 LDA $D27002,X ; large map flag C1/20A6: 4A LSR C1/20A7: 0D AC 81 ORA $81AC C1/20AA: 8D AC 81 STA $81AC C1/20AD: 4A LSR C1/20AE: 4A LSR C1/20AF: 4A LSR C1/20B0: 4A LSR C1/20B1: 4A LSR C1/20B2: 29 01 AND #$01 C1/20B4: 8D AB 81 STA $81AB C1/20B7: BF 04 70 D2 LDA $D27004,X ; graphic map number C1/20BB: 8D AA 81 STA $81AA C1/20BE: AD A7 81 LDA $81A7 ; monster slot C1/20C1: 0A ASL C1/20C2: 0A ASL C1/20C3: AA TAX C1/20C4: 86 10 STX $10 ; $10 = monster slot * 4 C1/20C6: A9 C2 LDA #$C2 C1/20C8: 85 14 STA $14 C1/20CA: AD 00 20 LDA $2000 ; VRAM map C1/20CD: 0A ASL C1/20CE: AA TAX C1/20CF: C2 20 REP #$20 C1/20D1: BF 1A D0 C2 LDA $C2D01A,X ; pointer to VRAM map data C1/20D5: 18 CLC C1/20D6: 65 10 ADC $10 ; add monster slot * 4 C1/20D8: 85 12 STA $12 C1/20DA: A7 12 LDA [$12] ; monster graphics buffer pointer C1/20DC: 18 CLC C1/20DD: 69 3F AE ADC #$AE3F C1/20E0: 65 26 ADC $26 C1/20E2: 85 61 STA $61 ; set pointer C1/20E4: E6 12 INC $12 C1/20E6: E6 12 INC $12 C1/20E8: A7 12 LDA [$12] ; graphics box size C1/20EA: 8D 56 82 STA $8256 C1/20ED: AD A8 81 LDA $81A8 ; graphics pointer * 8 C1/20F0: 0A ASL C1/20F1: 0A ASL C1/20F2: 0A ASL C1/20F3: 85 64 STA $64 C1/20F5: 9C 54 82 STZ $8254 ; C1/20F8: FA PLX C1/20F9: A5 16 LDA $16 ; palette number C1/20FB: 9D 17 81 STA $8117,X C1/20FE: 7B TDC C1/20FF: E2 20 SEP #$20 C1/2101: AD A9 81 LDA $81A9 ; high bits of graphics pointer C1/2104: 4A LSR C1/2105: 4A LSR C1/2106: 4A LSR C1/2107: 4A LSR C1/2108: 4A LSR C1/2109: 85 66 STA $66 ; set graphics pointer ; [ ] add_offset: C1/210B: A5 64 LDA $64 C1/210D: 18 CLC C1/210E: 69 00 ADC #$00 C1/2110: 85 64 STA $64 C1/2112: A5 65 LDA $65 C1/2114: 69 70 ADC #$70 C1/2116: 85 65 STA $65 C1/2118: A5 66 LDA $66 C1/211A: 69 E9 ADC #$E9 C1/211C: 85 66 STA $66 C1/211E: 60 RTS ; [ Load Monster Graphics Map ] one_bit_get_init: C1/211F: 20 5F 21 JSR $215F ; init monster graphics map C1/2122: AD 58 82 LDA $8258 ; monster slot C1/2125: AA TAX C1/2126: BD C2 62 LDA $62C2,X ; return if monster is an imp C1/2129: D0 33 BNE $215E C1/212B: AD 58 82 LDA $8258 ; monster slot C1/212E: 0A ASL C1/212F: AA TAX C1/2130: AD 51 82 LDA $8251 ; monster width C1/2133: 9D 2F 81 STA $812F,X C1/2136: AD 53 82 LDA $8253 ; monster height C1/2139: 9D 30 81 STA $8130,X C1/213C: DA PHX C1/213D: C2 20 REP #$20 C1/213F: BD 01 20 LDA $2001,X ; monster index C1/2142: C9 06 01 CMP #$0106 C1/2145: D0 08 BNE $214F ; branch if not ghost train C1/2147: 48 PHA C1/2148: A9 10 0E LDA #$0E10 C1/214B: 9D 2F 81 STA $812F,X ; width = $10, height = $0E C1/214E: 68 PLA C1/214F: AA TAX C1/2150: BF 00 36 CF LDA $CF3600,X ; y shift for sprite priority C1/2154: FA PLX C1/2155: 29 FF 00 AND #$00FF C1/2158: 9D 57 80 STA $8057,X C1/215B: 7B TDC C1/215C: E2 20 SEP #$20 C1/215E: 60 RTS ; [ Init Monster Graphics Map ] one_bit_get_init_main: C1/215F: 7B TDC C1/2160: AA TAX C1/2161: 9D 2D 82 STA $822D,X ; clear monster graphics map C1/2164: E8 INX C1/2165: E0 20 00 CPX #$0020 C1/2168: D0 F7 BNE $2161 C1/216A: AD AC 81 LDA $81AC ; large map flag C1/216D: 29 40 AND #$40 C1/216F: D0 24 BNE $2195 ; branch if large map ; small map (8x8) C1/2171: C2 20 REP #$20 C1/2173: AD AA 81 LDA $81AA ; map number C1/2176: 0A ASL C1/2177: 0A ASL C1/2178: 0A ASL C1/2179: 18 CLC C1/217A: 6F 20 A8 D2 ADC $D2A820 ; pointer to small maps C1/217E: AA TAX C1/217F: 7B TDC C1/2180: E2 20 SEP #$20 C1/2182: A4 00 LDY $00 C1/2184: BF 00 00 D2 LDA $D20000,X ; load map (8 bytes) C1/2188: 99 2D 82 STA $822D,Y C1/218B: C8 INY C1/218C: C8 INY C1/218D: E8 INX C1/218E: C0 10 00 CPY #$0010 C1/2191: D0 F1 BNE $2184 C1/2193: 80 23 BRA $21B8 ; large map (16x16) C1/2195: C2 20 REP #$20 C1/2197: AD AA 81 LDA $81AA ; map number C1/219A: 0A ASL C1/219B: 0A ASL C1/219C: 0A ASL C1/219D: 0A ASL C1/219E: 0A ASL C1/219F: 18 CLC C1/21A0: 6F 22 A8 D2 ADC $D2A822 ; pointer to large maps C1/21A4: AA TAX C1/21A5: 7B TDC C1/21A6: E2 20 SEP #$20 C1/21A8: A4 00 LDY $00 C1/21AA: BF 00 00 D2 LDA $D20000,X ; load map (32 bytes) C1/21AE: 99 2D 82 STA $822D,Y C1/21B1: C8 INY C1/21B2: E8 INX C1/21B3: C0 20 00 CPY #$0020 C1/21B6: D0 F2 BNE $21AA C1/21B8: A6 00 LDX $00 C1/21BA: C2 20 REP #$20 C1/21BC: 64 10 STZ $10 C1/21BE: BD 2D 82 LDA $822D,X ; one row of map bits C1/21C1: F0 0B BEQ $21CE ; branch if no bits are set C1/21C3: 05 10 ORA $10 C1/21C5: 85 10 STA $10 C1/21C7: E8 INX C1/21C8: E8 INX C1/21C9: E0 20 00 CPX #$0020 C1/21CC: D0 F0 BNE $21BE C1/21CE: A4 00 LDY $00 C1/21D0: A5 10 LDA $10 C1/21D2: EB XBA C1/21D3: 85 10 STA $10 C1/21D5: 06 10 ASL $10 C1/21D7: 90 02 BCC $21DB C1/21D9: 84 12 STY $12 C1/21DB: C8 INY C1/21DC: C0 10 00 CPY #$0010 C1/21DF: D0 F4 BNE $21D5 C1/21E1: 7B TDC C1/21E2: E2 20 SEP #$20 C1/21E4: 8A TXA C1/21E5: 4A LSR C1/21E6: CD 57 82 CMP $8257 C1/21E9: 90 03 BCC $21EE C1/21EB: AD 57 82 LDA $8257 C1/21EE: 8D 53 82 STA $8253 ; monster width C1/21F1: A5 12 LDA $12 C1/21F3: 1A INC C1/21F4: CD 56 82 CMP $8256 C1/21F7: 90 03 BCC $21FC C1/21F9: AD 56 82 LDA $8256 C1/21FC: 8D 51 82 STA $8251 ; monster height C1/21FF: 8D 52 82 STA $8252 C1/2202: 9C 4D 82 STZ $824D C1/2205: 9C 4E 82 STZ $824E C1/2208: 60 RTS ; [ ] one_bit_get: C1/2209: AD 4D 82 LDA $824D C1/220C: D0 1B BNE $2229 C1/220E: A9 10 LDA #$10 C1/2210: 8D 4D 82 STA $824D C1/2213: AD 4E 82 LDA $824E C1/2216: AA TAX C1/2217: BD 2D 82 LDA $822D,X C1/221A: 8D 50 82 STA $8250 C1/221D: BD 2E 82 LDA $822E,X C1/2220: 8D 4F 82 STA $824F C1/2223: EE 4E 82 INC $824E C1/2226: EE 4E 82 INC $824E C1/2229: CE 4D 82 DEC $824D C1/222C: 0E 4F 82 ASL $824F C1/222F: 2E 50 82 ROL $8250 C1/2232: 60 RTS ; [ ] set_one_mon_chr: C1/2233: 5A PHY C1/2234: C2 20 REP #$20 C1/2236: 98 TYA C1/2237: 18 CLC C1/2238: 65 61 ADC $61 C1/223A: 85 10 STA $10 C1/223C: 7B TDC C1/223D: E2 20 SEP #$20 C1/223F: AD AC 81 LDA $81AC C1/2242: 10 37 BPL $227B C1/2244: C2 20 REP #$20 C1/2246: AD 54 82 LDA $8254 C1/2249: A8 TAY C1/224A: 18 CLC C1/224B: 69 18 00 ADC #$0018 C1/224E: 8D 54 82 STA $8254 C1/2251: A9 08 00 LDA #$0008 C1/2254: 85 12 STA $12 C1/2256: B7 64 LDA [$64],Y C1/2258: 92 10 STA ($10) C1/225A: E6 10 INC $10 C1/225C: E6 10 INC $10 C1/225E: C8 INY C1/225F: C8 INY C1/2260: C6 12 DEC $12 C1/2262: D0 F2 BNE $2256 C1/2264: A9 08 00 LDA #$0008 C1/2267: 85 12 STA $12 C1/2269: B7 64 LDA [$64],Y C1/226B: 29 FF 00 AND #$00FF C1/226E: 92 10 STA ($10) C1/2270: E6 10 INC $10 C1/2272: E6 10 INC $10 C1/2274: C8 INY C1/2275: C6 12 DEC $12 C1/2277: D0 F0 BNE $2269 C1/2279: 80 20 BRA $229B C1/227B: C2 20 REP #$20 C1/227D: AD 54 82 LDA $8254 C1/2280: A8 TAY C1/2281: 18 CLC C1/2282: 69 20 00 ADC #$0020 C1/2285: 8D 54 82 STA $8254 C1/2288: A9 10 00 LDA #$0010 C1/228B: 85 12 STA $12 C1/228D: B7 64 LDA [$64],Y C1/228F: 92 10 STA ($10) C1/2291: E6 10 INC $10 C1/2293: E6 10 INC $10 C1/2295: C8 INY C1/2296: C8 INY C1/2297: C6 12 DEC $12 C1/2299: D0 F2 BNE $228D C1/229B: 68 PLA C1/229C: 18 CLC C1/229D: 69 20 00 ADC #$0020 C1/22A0: A8 TAY C1/22A1: 7B TDC C1/22A2: E2 20 SEP #$20 C1/22A4: 60 RTS ; [ Load Monster Graphics ] one_monster_chr_set: C1/22A5: A4 00 LDY $00 C1/22A7: 20 09 22 JSR $2209 C1/22AA: 90 05 BCC $22B1 C1/22AC: 20 33 22 JSR $2233 C1/22AF: 80 0B BRA $22BC C1/22B1: C2 20 REP #$20 C1/22B3: 98 TYA C1/22B4: 18 CLC C1/22B5: 69 20 00 ADC #$0020 C1/22B8: A8 TAY C1/22B9: 7B TDC C1/22BA: E2 20 SEP #$20 C1/22BC: CE 52 82 DEC $8252 C1/22BF: D0 E6 BNE $22A7 C1/22C1: 9C 4D 82 STZ $824D C1/22C4: AD 51 82 LDA $8251 C1/22C7: 8D 52 82 STA $8252 C1/22CA: C2 20 REP #$20 C1/22CC: A5 61 LDA $61 C1/22CE: 18 CLC C1/22CF: 69 00 02 ADC #$0200 C1/22D2: 85 61 STA $61 C1/22D4: 7B TDC C1/22D5: E2 20 SEP #$20 C1/22D7: CE 53 82 DEC $8253 C1/22DA: D0 C9 BNE $22A5 C1/22DC: 60 RTS ; [ Load Monster Palettes ] mon_color_set: C1/22DD: C2 20 REP #$20 C1/22DF: 64 10 STZ $10 C1/22E1: A6 00 LDX $00 C1/22E3: BD 17 81 LDA $8117,X ; monster palette C1/22E6: C9 FF FF CMP #$FFFF C1/22E9: F0 17 BEQ $2302 ; branch if no palette C1/22EB: A4 00 LDY $00 C1/22ED: D9 23 81 CMP $8123,Y ; compare to already loaded palettes C1/22F0: F0 10 BEQ $2302 ; branch if palette is already loaded C1/22F2: C8 INY C1/22F3: C8 INY C1/22F4: C0 0C 00 CPY #$000C C1/22F7: D0 F4 BNE $22ED C1/22F9: A4 10 LDY $10 C1/22FB: 99 23 81 STA $8123,Y ; add palette C1/22FE: C8 INY C1/22FF: C8 INY C1/2300: 84 10 STY $10 C1/2302: E8 INX ; next monster C1/2303: E8 INX C1/2304: E0 0C 00 CPX #$000C C1/2307: D0 DA BNE $22E3 C1/2309: A6 00 LDX $00 C1/230B: BD 17 81 LDA $8117,X ; monster palette C1/230E: A4 00 LDY $00 C1/2310: D9 23 81 CMP $8123,Y ; find which palette it is (should be 0, 1, or 2) C1/2313: F0 09 BEQ $231E C1/2315: C8 INY C1/2316: C8 INY C1/2317: C0 06 00 CPY #$0006 C1/231A: D0 F4 BNE $2310 C1/231C: A4 00 LDY $00 ; use palette 0 if not found C1/231E: 98 TYA C1/231F: 4A LSR C1/2320: 0A ASL C1/2321: 9D DB 80 STA $80DB,X ; set sprite data C1/2324: A9 31 00 LDA #$0031 C1/2327: 9D DC 80 STA $80DC,X C1/232A: A9 20 00 LDA #$0020 C1/232D: 9D 00 81 STA $8100,X ; C1/2330: E8 INX C1/2331: E8 INX C1/2332: E0 0C 00 CPX #$000C C1/2335: D0 D4 BNE $230B C1/2337: A9 00 7F LDA #$7F00 C1/233A: 85 10 STA $10 ; +$10 = pointer to palette buffer C1/233C: A4 00 LDY $00 C1/233E: B9 23 81 LDA $8123,Y ; palette index C1/2341: 0A ASL C1/2342: 0A ASL C1/2343: 0A ASL C1/2344: 0A ASL C1/2345: AA TAX C1/2346: 5A PHY C1/2347: A4 00 LDY $00 C1/2349: BF 20 78 D2 LDA $D27820,X ; monster palette C1/234D: 91 10 STA ($10),Y C1/234F: E8 INX C1/2350: E8 INX C1/2351: C8 INY C1/2352: C8 INY C1/2353: C0 20 00 CPY #$0020 C1/2356: D0 F1 BNE $2349 C1/2358: A5 10 LDA $10 ; next palette C1/235A: 18 CLC C1/235B: 69 20 00 ADC #$0020 C1/235E: 85 10 STA $10 C1/2360: 7A PLY C1/2361: C8 INY C1/2362: C8 INY C1/2363: C0 06 00 CPY #$0006 ; only 3 palettes will get loaded C1/2366: D0 D6 BNE $233E C1/2368: 7B TDC C1/2369: E2 20 SEP #$20 C1/236B: 60 RTS ; [ ] one_monster_chr_set_mode7: C1/236C: A0 00 C5 LDY #$C500 one_monster_chr_set_mode72: C1/236F: 84 14 STY $14 C1/2371: A9 7F LDA #$7F C1/2373: 85 16 STA $16 C1/2375: 64 18 STZ $18 C1/2377: 7B TDC C1/2378: AA TAX C1/2379: 86 1A STX $1A C1/237B: A4 00 LDY $00 C1/237D: 64 1C STZ $1C C1/237F: 20 09 22 JSR $2209 C1/2382: 90 15 BCC $2399 C1/2384: 20 33 22 JSR $2233 C1/2387: 5A PHY C1/2388: A4 1A LDY $1A C1/238A: A5 18 LDA $18 C1/238C: 97 14 STA [$14],Y C1/238E: C8 INY C1/238F: C8 INY C1/2390: 84 1A STY $1A C1/2392: E6 18 INC $18 C1/2394: E6 1C INC $1C C1/2396: 7A PLY C1/2397: 80 0C BRA $23A5 C1/2399: 5A PHY C1/239A: A4 1A LDY $1A C1/239C: A9 3F LDA #$3F C1/239E: 97 14 STA [$14],Y C1/23A0: C8 INY C1/23A1: C8 INY C1/23A2: 84 1A STY $1A C1/23A4: 7A PLY C1/23A5: CE 52 82 DEC $8252 C1/23A8: D0 D5 BNE $237F C1/23AA: 9C 4D 82 STZ $824D C1/23AD: AD 51 82 LDA $8251 C1/23B0: 8D 52 82 STA $8252 C1/23B3: A5 1C LDA $1C C1/23B5: C2 20 REP #$20 C1/23B7: 0A ASL C1/23B8: 0A ASL C1/23B9: 0A ASL C1/23BA: 0A ASL C1/23BB: 0A ASL C1/23BC: 85 1C STA $1C C1/23BE: A5 14 LDA $14 C1/23C0: 18 CLC C1/23C1: 69 00 01 ADC #$0100 C1/23C4: 85 14 STA $14 C1/23C6: A5 61 LDA $61 C1/23C8: 18 CLC C1/23C9: 65 1C ADC $1C C1/23CB: 85 61 STA $61 C1/23CD: 64 1A STZ $1A C1/23CF: 7B TDC C1/23D0: E2 20 SEP #$20 C1/23D2: CE 53 82 DEC $8253 C1/23D5: D0 A4 BNE $237B C1/23D7: 60 RTS ; [ ] get_mode7_poi: C1/23D8: 86 10 STX $10 C1/23DA: 20 20 20 JSR $2020 ; clear monster graphics buffer C1/23DD: 20 F5 24 JSR $24F5 C1/23E0: 4C E5 24 JMP $24E5 ; [ ] tfr_mode7: C1/23E3: A9 3F LDA #$3F C1/23E5: 85 14 STA $14 C1/23E7: A9 7E LDA #$7E C1/23E9: A2 3F AE LDX #$AE3F C1/23EC: 22 27 C0 C2 JSL $C2C027 C1/23F0: A2 00 20 LDX #$2000 C1/23F3: 86 10 STX $10 C1/23F5: A2 00 C4 LDX #$C400 C1/23F8: A0 00 00 LDY #$0000 C1/23FB: A9 7F LDA #$7F C1/23FD: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ ] summon_mode7_chr_set_long: C1/2400: 20 D8 23 JSR $23D8 C1/2403: 20 6C 23 JSR $236C C1/2406: 20 E3 23 JSR $23E3 C1/2409: 6B RTL ; [ ] jiha_bg_chr_set_long: C1/240A: 20 D8 23 JSR $23D8 C1/240D: A0 00 CA LDY #$CA00 C1/2410: 20 6F 23 JSR $236F C1/2413: 8B PHB C1/2414: A9 7F LDA #$7F C1/2416: 48 PHA C1/2417: AB PLB C1/2418: 7B TDC C1/2419: AA TAX C1/241A: BD 10 CA LDA $CA10,X C1/241D: 9D 00 CE STA $CE00,X C1/2420: A9 3F LDA #$3F C1/2422: 9D 10 CA STA $CA10,X C1/2425: BD 10 CB LDA $CB10,X C1/2428: 9D 00 CF STA $CF00,X C1/242B: A9 3F LDA #$3F C1/242D: 9D 10 CB STA $CB10,X C1/2430: BD 10 CC LDA $CC10,X C1/2433: 9D 00 D0 STA $D000,X C1/2436: A9 3F LDA #$3F C1/2438: 9D 10 CC STA $CC10,X C1/243B: BD 10 CD LDA $CD10,X C1/243E: 9D 00 D1 STA $D100,X C1/2441: A9 3F LDA #$3F C1/2443: 9D 10 CD STA $CD10,X C1/2446: E8 INX C1/2447: E8 INX C1/2448: E0 10 00 CPX #$0010 C1/244B: D0 CD BNE $241A C1/244D: AB PLB C1/244E: 20 E3 23 JSR $23E3 C1/2451: 6B RTL ; [ Load Esper Graphics (bg1, long access) ] summon_bg_chr_set_long: C1/2452: 20 56 24 JSR $2456 ; load esper graphics (bg1) *** JSR $2455 in rev 1 *** C1/2455: 6B RTL ; [ Load Esper Graphics (bg1) ] ; +X = graphics index summon_bg_chr_set: C1/2456: 20 97 24 JSR $2497 ; copy esper graphics to buffer ; **** added in rev 1 **** C1/----: A0 00 24 LDY #$2400 C1/----: A2 00 14 LDX #$1400 C1/----: 80 09 BRA $245C C1/2455: 20 83 24 JSR $2497 C1/----: A0 00 00 LDY #$0000 ; ************************ C1/2459: A2 00 18 LDX #$1800 ; size = $1800 C1/245C: 86 10 STX $10 C1/245E: A2 3F AE LDX #$AE3F ; source = $7EAE3F ; *** removed in rev 1 *** C1/2461: A0 00 00 LDY #$0000 ; destination = $0000 (VRAM) ; ************************ C1/2464: A9 7E LDA #$7E C1/2466: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ Load Crusader Graphics (bg1) ] ; small part only jiha_obj_chr_set_long: C1/2469: A2 8F 01 LDX #$018F C1/246C: 20 97 24 JSR $2497 ; copy esper graphics to buffer C1/246F: A2 00 08 LDX #$0800 ; size = $0800 C1/2472: 86 10 STX $10 C1/2474: A2 3F AE LDX #$AE3F ; source = $7EAE3F C1/2477: A0 00 20 LDY #$2000 ; destination = $2000 (VRAM) C1/247A: A9 7E LDA #$7E C1/247C: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/247F: 6B RTL ; [ Load Esper Graphics (sprite, long access) ] summon_obj_chr_set_long: C1/2480: 20 84 24 JSR $2484 ; load esper graphics (sprite) *** JSR $2456 in rev 1 *** C1/2483: 6B RTL ; [ Load Esper Graphics (sprite) ] ; +X = graphics index summon_obj_chr_set: ; *** removed in rev 1 *** C1/2484: 20 97 24 JSR $2497 ; copy esper graphics to buffer C1/2487: A2 00 14 LDX #$1400 ; size = $1400 C1/248A: 86 10 STX $10 C1/248C: A2 3F AE LDX #$AE3F ; source = $7EAE3F C1/248F: A0 00 24 LDY #$2400 ; destination = $2400 (VRAM) C1/2492: A9 7E LDA #$7E C1/2494: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; ************************ ; [ Copy Esper Graphics to Buffer ] ; also used for sketched monster graphics ; +X = graphics index get_summon_init: ; **** added in rev 1 **** C1/----: DA PHX ; ************************ C1/2497: 86 10 STX $10 C1/2499: 20 20 20 JSR $2020 ; clear monster graphics buffer C1/249C: 20 F5 24 JSR $24F5 ; load esper graphics C1/249F: 20 E5 24 JSR $24E5 ; load esper graphics map ; *** removed in rev 1 *** C1/24A2: 4C A5 22 JMP $22A5 ; load monster/esper graphics ; **** added in rev 1 **** C1/----: 20 A5 22 JSR $22A5 ; load monster/esper graphics C1/----: FA PLX C1/----: 60 RTS ; ************************ ; [ ] summon_obj_chr_set2_long: C1/24A5: 20 A9 24 JSR $24A9 C1/24A8: 6B RTL summon_obj_chr_set2: C1/24A9: 20 97 24 JSR $2497 ; copy esper graphics to buffer C1/24AC: 7B TDC C1/24AD: AA TAX C1/24AE: 48 PHA C1/24AF: C2 20 REP #$20 C1/24B1: A9 80 01 LDA #$0180 C1/24B4: 85 10 STA $10 C1/24B6: BF 73 D4 C2 LDA $C2D473,X C1/24BA: A8 TAY C1/24BB: BF 71 D4 C2 LDA $C2D471,X C1/24BF: AA TAX C1/24C0: 7B TDC C1/24C1: E2 20 SEP #$20 C1/24C3: A9 7E LDA #$7E C1/24C5: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/24C8: 68 PLA C1/24C9: 18 CLC C1/24CA: 69 04 ADC #$04 C1/24CC: C9 28 CMP #$28 C1/24CE: D0 DD BNE $24AD C1/24D0: 60 RTS ; [ ] skechi_mon_chr_set_long: C1/24D1: 20 97 24 JSR $2497 ; copy esper graphics to buffer ; **** added in rev 1 **** C1/----: E0 FF FF CPX #$FFFF C1/----: D0 03 BNE $24D4 C1/----: 20 20 20 JSR $2020 ; ************************ C1/24D4: A2 00 20 LDX #$2000 C1/24D7: 86 10 STX $10 C1/24D9: A2 3F AE LDX #$AE3F C1/24DC: A0 00 00 LDY #$0000 C1/24DF: A9 7E LDA #$7E C1/24E1: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/24E4: 6B RTL ; [ Load Esper Graphics Map ] one_bit_get_init2: C1/24E5: 20 5F 21 JSR $215F ; init monster graphics map C1/24E8: AD 51 82 LDA $8251 ; graphics width C1/24EB: 8D 6B 61 STA $616B C1/24EE: AD 53 82 LDA $8253 ; graphics height C1/24F1: 8D 6C 61 STA $616C C1/24F4: 60 RTS ; [ Load Esper Graphics ] get_graph_data2: C1/24F5: C2 20 REP #$20 C1/24F7: A5 10 LDA $10 ; **** added in rev 1 **** C1/----: C9 FF FF CMP #$FFFF C1/----: D0 01 BNE $24F9 C1/----: 7B TDC ; ************************ C1/24F9: 0A ASL C1/24FA: 0A ASL C1/24FB: 18 CLC C1/24FC: 65 10 ADC $10 C1/24FE: AA TAX C1/24FF: BF 02 70 D2 LDA $D27002,X ; pointer to esper palette C1/2503: EB XBA C1/2504: 29 FF 03 AND #$03FF C1/2507: 0A ASL C1/2508: 0A ASL C1/2509: 0A ASL C1/250A: 0A ASL C1/250B: 8D 69 61 STA $6169 ; pointer to esper palette C1/250E: BF 00 70 D2 LDA $D27000,X C1/2512: 29 FF 7F AND #$7FFF C1/2515: 8D A8 81 STA $81A8 C1/2518: 7B TDC C1/2519: E2 20 SEP #$20 C1/251B: BF 01 70 D2 LDA $D27001,X C1/251F: 29 80 AND #$80 C1/2521: 8D AC 81 STA $81AC C1/2524: BF 02 70 D2 LDA $D27002,X C1/2528: 4A LSR C1/2529: 0D AC 81 ORA $81AC C1/252C: 8D AC 81 STA $81AC C1/252F: 4A LSR C1/2530: 4A LSR C1/2531: 4A LSR C1/2532: 4A LSR C1/2533: 4A LSR C1/2534: 29 01 AND #$01 C1/2536: 8D AB 81 STA $81AB C1/2539: BF 04 70 D2 LDA $D27004,X C1/253D: 8D AA 81 STA $81AA C1/2540: A9 C2 LDA #$C2 C1/2542: 85 14 STA $14 C1/2544: A9 06 LDA #$06 C1/2546: 0A ASL C1/2547: AA TAX C1/2548: C2 20 REP #$20 C1/254A: BF 1A D0 C2 LDA $C2D01A,X C1/254E: 85 12 STA $12 C1/2550: A7 12 LDA [$12] C1/2552: 18 CLC C1/2553: 69 3F AE ADC #$AE3F C1/2556: 85 61 STA $61 C1/2558: E6 12 INC $12 C1/255A: E6 12 INC $12 C1/255C: A7 12 LDA [$12] C1/255E: 8D 56 82 STA $8256 C1/2561: AD A8 81 LDA $81A8 C1/2564: 0A ASL C1/2565: 0A ASL C1/2566: 0A ASL C1/2567: 85 64 STA $64 C1/2569: 9C 54 82 STZ $8254 C1/256C: 7B TDC C1/256D: E2 20 SEP #$20 C1/256F: AD A9 81 LDA $81A9 C1/2572: 4A LSR C1/2573: 4A LSR C1/2574: 4A LSR C1/2575: 4A LSR C1/2576: 4A LSR C1/2577: 85 66 STA $66 C1/2579: 4C 0B 21 JMP $210B ; [ Load Monster Graphics ] mon_chr_set: C1/257C: 20 20 20 JSR $2020 ; clear monster graphics buffer C1/257F: 7B TDC C1/2580: AA TAX C1/2581: A9 FF LDA #$FF C1/2583: 9D 17 81 STA $8117,X ; clear monster palettes, ???, and sizes C1/2586: 9D 23 81 STA $8123,X C1/2589: E8 INX C1/258A: E0 0C 00 CPX #$000C C1/258D: D0 F4 BNE $2583 C1/258F: 9C 58 82 STZ $8258 ; start with monster slot 0 C1/2592: AD 58 82 LDA $8258 ; monster slot C1/2595: 0A ASL C1/2596: AA TAX C1/2597: BD 02 20 LDA $2002,X ; monster number C1/259A: C9 FF CMP #$FF C1/259C: F0 14 BEQ $25B2 ; branch if no monster C1/259E: DA PHX C1/259F: DA PHX C1/25A0: AD 58 82 LDA $8258 ; monster slot C1/25A3: 20 5A 20 JSR $205A ; load monster graphics data C1/25A6: FA PLX C1/25A7: 20 1F 21 JSR $211F ; load monster graphics map C1/25AA: 20 A5 22 JSR $22A5 ; load monster graphics C1/25AD: FA PLX C1/25AE: 22 32 B5 C2 JSL $C2B532 ; load ghost train graphics C1/25B2: EE 58 82 INC $8258 ; next monster C1/25B5: AD 58 82 LDA $8258 C1/25B8: C9 06 CMP #$06 C1/25BA: D0 D6 BNE $2592 C1/25BC: 60 RTS ; [ Copy Monster Graphics to VRAM (long access) ] wait_mon_chr_tfr_long: C1/25BD: 20 C1 25 JSR $25C1 C1/25C0: 6B RTL ; [ Copy Monster Graphics to VRAM (at next vblank) ] wait_mon_chr_tfr: C1/25C1: A2 00 20 LDX #$2000 C1/25C4: 86 10 STX $10 C1/25C6: A2 3F AE LDX #$AE3F C1/25C9: A0 00 30 LDY #$3000 C1/25CC: A9 7E LDA #$7E C1/25CE: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ Copy Monster Graphics to VRAM (immediately) ] mon_chr_tfr: C1/25D1: A2 00 20 LDX #$2000 C1/25D4: 86 36 STX $36 C1/25D6: A2 3F AE LDX #$AE3F C1/25D9: A0 00 30 LDY #$3000 C1/25DC: A9 7E LDA #$7E C1/25DE: 4C 2B 1A JMP $1A2B ; copy data to VRAM ; [ Update Character/Monster Animation Sprite Data (back layer) ] back_magic_set: C1/25E1: AD D1 62 LDA $62D1 C1/25E4: F0 22 BEQ $2608 C1/25E6: 7B TDC C1/25E7: A8 TAY C1/25E8: A5 7B LDA $7B C1/25EA: D9 42 61 CMP $6142,Y C1/25ED: D0 12 BNE $2601 C1/25EF: 5A PHY C1/25F0: 98 TYA C1/25F1: 0A ASL C1/25F2: AA TAX C1/25F3: C2 20 REP #$20 C1/25F5: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/25F9: AA TAX C1/25FA: 7B TDC C1/25FB: E2 20 SEP #$20 C1/25FD: 20 08 26 JSR $2608 C1/2600: 7A PLY C1/2601: C8 INY C1/2602: C0 0A 00 CPY #$000A C1/2605: D0 E1 BNE $25E8 C1/2607: 60 RTS ; [ Update Animation Sprite Data (back layer) ] back_magic_set_main: C1/2608: AD AA 60 LDA $60AA C1/260B: F0 0A BEQ $2617 C1/260D: A5 0E LDA $0E C1/260F: 29 01 AND #$01 C1/2611: F0 04 BEQ $2617 C1/2613: A9 02 LDA #$02 C1/2615: 80 03 BRA $261A C1/2617: AD 0D 7B LDA $7B0D C1/261A: 30 25 BMI $2641 C1/261C: 29 0F AND #$0F C1/261E: 8D FC 7A STA $7AFC C1/2621: BD DE 64 LDA $64DE,X C1/2624: F0 0B BEQ $2631 C1/2626: BD E7 64 LDA $64E7,X C1/2629: F0 06 BEQ $2631 C1/262B: 20 AA 26 JSR $26AA ; update animation thread sprite data C1/262E: AE FA 7A LDX $7AFA C1/2631: C2 20 REP #$20 C1/2633: 8A TXA C1/2634: 18 CLC C1/2635: 69 10 00 ADC #$0010 C1/2638: AA TAX C1/2639: 7B TDC C1/263A: E2 20 SEP #$20 C1/263C: CE FC 7A DEC $7AFC C1/263F: D0 E0 BNE $2621 C1/2641: 60 RTS ; [ Update Character/Monster Animation Sprite Data (front layer) ] front_magic_set: C1/2642: AD D1 62 LDA $62D1 C1/2645: F0 22 BEQ $2669 C1/2647: 7B TDC C1/2648: A8 TAY C1/2649: A5 7B LDA $7B C1/264B: D9 42 61 CMP $6142,Y C1/264E: D0 12 BNE $2662 C1/2650: 5A PHY C1/2651: 98 TYA C1/2652: 0A ASL C1/2653: AA TAX C1/2654: C2 20 REP #$20 C1/2656: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/265A: AA TAX C1/265B: 7B TDC C1/265C: E2 20 SEP #$20 C1/265E: 20 69 26 JSR $2669 ; update animation sprite data C1/2661: 7A PLY C1/2662: C8 INY C1/2663: C0 0A 00 CPY #$000A C1/2666: D0 E1 BNE $2649 C1/2668: 60 RTS ; [ Update Animation Sprite Data (front layer) ] ; +X = pointer to thread data (+$6A2E) ; $7B0D = number of threads to update front_magic_set_main: C1/2669: AD AA 60 LDA $60AA C1/266C: F0 0A BEQ $2678 C1/266E: A5 0E LDA $0E C1/2670: 29 01 AND #$01 C1/2672: F0 04 BEQ $2678 C1/2674: A9 02 LDA #$02 C1/2676: 80 03 BRA $267B C1/2678: AD 0D 7B LDA $7B0D C1/267B: 30 2C BMI $26A9 C1/267D: 29 0F AND #$0F C1/267F: 8D FC 7A STA $7AFC C1/2682: BD DE 64 LDA $64DE,X ; skip if sprite is not active C1/2685: F0 12 BEQ $2699 C1/2687: BD 86 6F LDA $6F86,X ; skip if ??? C1/268A: 29 03 AND #$03 C1/268C: D0 0B BNE $2699 C1/268E: BD E7 64 LDA $64E7,X ; skip if shown behind characters/monsters C1/2691: D0 06 BNE $2699 C1/2693: 20 AA 26 JSR $26AA ; update animation thread sprite data C1/2696: AE FA 7A LDX $7AFA C1/2699: C2 20 REP #$20 ; next thread C1/269B: 8A TXA C1/269C: 18 CLC C1/269D: 69 10 00 ADC #$0010 C1/26A0: AA TAX C1/26A1: 7B TDC C1/26A2: E2 20 SEP #$20 C1/26A4: CE FC 7A DEC $7AFC C1/26A7: D0 D9 BNE $2682 C1/26A9: 60 RTS ; [ Update Animation Thread Sprite Data ] one_magic_obj_set: C1/26AA: 8E FA 7A STX $7AFA ; thread pointer C1/26AD: BD E4 64 LDA $64E4,X ; $3C = tile number C1/26B0: 85 3C STA $3C C1/26B2: C2 20 REP #$20 C1/26B4: BD DF 64 LDA $64DF,X ; +$36 = X offset C1/26B7: 85 36 STA $36 C1/26B9: BD E1 64 LDA $64E1,X ; +$38 = Y offset C1/26BC: 85 38 STA $38 C1/26BE: BD E5 64 LDA $64E5,X ; +$3A = sprite data C1/26C1: 85 3A STA $3A C1/26C3: BD E3 64 LDA $64E3,X ; frame number C1/26C6: 29 FF 00 AND #$00FF C1/26C9: 0A ASL C1/26CA: AA TAX C1/26CB: A5 3A LDA $3A C1/26CD: 29 40 00 AND #$0040 C1/26D0: F0 06 BEQ $26D8 C1/26D2: BF 24 C4 C2 LDA $C2C424,X ; pointer to frame data C1/26D6: 80 04 BRA $26DC C1/26D8: BF E4 C3 C2 LDA $C2C3E4,X C1/26DC: AA TAX C1/26DD: A5 71 LDA $71 ; next available sprite C1/26DF: 29 FF 00 AND #$00FF C1/26E2: 0A ASL C1/26E3: 0A ASL C1/26E4: A8 TAY C1/26E5: 7B TDC C1/26E6: E2 20 SEP #$20 C1/26E8: BD 00 00 LDA $0000,X ; frame data C1/26EB: C9 FF CMP #$FF C1/26ED: F0 7C BEQ $276B ; skip if 0 C1/26EF: 10 0C BPL $26FD ; branch if MSB clear C1/26F1: 18 CLC C1/26F2: 65 36 ADC $36 C1/26F4: 99 00 03 STA $0300,Y C1/26F7: A5 37 LDA $37 C1/26F9: 69 01 ADC #$01 C1/26FB: 80 0A BRA $2707 C1/26FD: 18 CLC C1/26FE: 65 36 ADC $36 ; add to x offset C1/2700: 99 00 03 STA $0300,Y C1/2703: A5 37 LDA $37 C1/2705: 69 00 ADC #$00 C1/2707: 29 01 AND #$01 C1/2709: F0 11 BEQ $271C C1/270B: 86 3E STX $3E C1/270D: B9 7F A1 LDA $A17F,Y C1/2710: AA TAX C1/2711: BD 00 05 LDA $0500,X ; set high sprite data C1/2714: 19 7F A7 ORA $A77F,Y C1/2717: 9D 00 05 STA $0500,X C1/271A: A6 3E LDX $3E ; add to y offset C1/271C: 18 CLC C1/271D: BD 01 00 LDA $0001,X C1/2720: 10 0B BPL $272D C1/2722: 65 38 ADC $38 C1/2724: 85 3E STA $3E C1/2726: A5 39 LDA $39 C1/2728: 69 01 ADC #$01 C1/272A: 4C 35 27 JMP $2735 C1/272D: 65 38 ADC $38 C1/272F: 85 3E STA $3E C1/2731: A5 39 LDA $39 C1/2733: 69 00 ADC #$00 C1/2735: 29 01 AND #$01 C1/2737: F0 09 BEQ $2742 C1/2739: A5 3E LDA $3E C1/273B: C9 E0 CMP #$E0 C1/273D: B0 0B BCS $274A ; branch if sprite is off-screen C1/273F: 4C 48 27 JMP $2748 C1/2742: A5 3E LDA $3E C1/2744: C9 97 CMP #$97 C1/2746: 90 02 BCC $274A C1/2748: A9 E0 LDA #$E0 C1/274A: 99 01 03 STA $0301,Y C1/274D: BD 02 00 LDA $0002,X ; tile number C1/2750: 18 CLC C1/2751: 65 3C ADC $3C C1/2753: 99 02 03 STA $0302,Y C1/2756: BD 03 00 LDA $0003,X C1/2759: 05 3B ORA $3B C1/275B: 99 03 03 STA $0303,Y C1/275E: E8 INX ; next sprite C1/275F: E8 INX C1/2760: E8 INX C1/2761: E8 INX C1/2762: C8 INY C1/2763: C8 INY C1/2764: C8 INY C1/2765: C8 INY C1/2766: E6 71 INC $71 ; increment next available sprite C1/2768: 4C E8 26 JMP $26E8 C1/276B: 60 RTS ; [ Update Sprites ] ; called directly from nmi all_obj_set: C1/276C: AD 1E 20 LDA $201E ; monsters shown C1/276F: 2D AB 61 AND $61AB ; C1/2772: 2D AB 60 AND $60AB C1/2775: 8D D1 88 STA $88D1 ; monsters with visible sprites C1/2778: 7B TDC C1/2779: AA TAX C1/277A: BD 1A 63 LDA $631A,X ; damage numeral C1/277D: 29 7F AND #$7F C1/277F: F0 29 BEQ $27AA ; branch if disabled C1/2781: BD 1E 63 LDA $631E,X ; damage numeral target C1/2784: C9 04 CMP #$04 C1/2786: 90 12 BCC $279A ; branch if a character C1/2788: 38 SEC C1/2789: E9 04 SBC #$04 C1/278B: DA PHX C1/278C: 20 09 1A JSR $1A09 ; get bit mask C1/278F: FA PLX C1/2790: 2D D1 88 AND $88D1 C1/2793: D0 15 BNE $27AA ; branch if monster sprite is visible C1/2795: 9E 1A 63 STZ $631A,X ; disable damage numeral C1/2798: 80 10 BRA $27AA C1/279A: DA PHX C1/279B: 20 09 1A JSR $1A09 ; get bit mask C1/279E: FA PLX C1/279F: 2D 1D 20 AND $201D ; branch if character is visible C1/27A2: 2D AC 61 AND $61AC C1/27A5: D0 03 BNE $27AA C1/27A7: 9E 1A 63 STZ $631A,X ; disable damage numeral C1/27AA: E8 INX C1/27AB: E0 04 00 CPX #$0004 C1/27AE: D0 CA BNE $277A C1/27B0: AD 67 7B LDA $7B67 ; hide bg1 monster sprites C1/27B3: 0A ASL C1/27B4: AA TAX C1/27B5: 7C B8 27 JMP ($27B8,X) C1/27B8: .DW $27BC, $27BF C1/27BC: 4C 97 28 JMP $2897 ; update sprite data C1/27BF: 4C 69 28 JMP $2869 ; update sprite data (except bg1 monsters) ; [ Update Monster Sprite Data ] obj_mon_oam_set: C1/27C2: AD D2 88 LDA $88D2 C1/27C5: 48 PHA C1/27C6: 85 7B STA $7B C1/27C8: 0A ASL C1/27C9: AA TAX C1/27CA: C2 20 REP #$20 C1/27CC: BF 93 CE C2 LDA $C2CE93,X ; pointer to monster animation thread data (+$7E64DE) C1/27D0: AA TAX C1/27D1: 7B TDC C1/27D2: E2 20 SEP #$20 C1/27D4: DA PHX C1/27D5: 20 42 26 JSR $2642 ; update character/monster animation sprite data C1/27D8: AD D2 88 LDA $88D2 C1/27DB: 20 2A 2B JSR $2B2A ; update damage numeral sprites C1/27DE: A5 71 LDA $71 C1/27E0: 8D 60 00 STA $0060 C1/27E3: AD D2 88 LDA $88D2 C1/27E6: 20 09 1A JSR $1A09 C1/27E9: 2D D1 88 AND $88D1 C1/27EC: 2D 1E 20 AND $201E C1/27EF: 2D AB 61 AND $61AB C1/27F2: 2D E6 E9 AND $E9E6 C1/27F5: 2D 91 61 AND $6191 C1/27F8: F0 64 BEQ $285E C1/27FA: 20 35 39 JSR $3935 C1/27FD: AD D2 88 LDA $88D2 C1/2800: 29 07 AND #$07 C1/2802: 20 09 1A JSR $1A09 C1/2805: 2D 9D 61 AND $619D C1/2808: F0 54 BEQ $285E C1/280A: AD D2 88 LDA $88D2 C1/280D: 29 07 AND #$07 C1/280F: 0A ASL C1/2810: AA TAX C1/2811: BD 30 81 LDA $8130,X C1/2814: C2 20 REP #$20 C1/2816: 0A ASL C1/2817: 0A ASL C1/2818: 0A ASL C1/2819: 85 36 STA $36 C1/281B: BD CF 80 LDA $80CF,X C1/281E: 48 PHA C1/281F: 18 CLC C1/2820: 65 36 ADC $36 C1/2822: 9D CF 80 STA $80CF,X C1/2825: 7B TDC C1/2826: E2 20 SEP #$20 C1/2828: BD DC 80 LDA $80DC,X C1/282B: 48 PHA C1/282C: BD F3 80 LDA $80F3,X C1/282F: 5D 7E 61 EOR $617E,X C1/2832: 48 PHA C1/2833: DA PHX C1/2834: BD F3 80 LDA $80F3,X C1/2837: 5D 7E 61 EOR $617E,X C1/283A: 09 02 ORA #$02 C1/283C: 9D F3 80 STA $80F3,X C1/283F: BD DC 80 LDA $80DC,X C1/2842: 29 CF AND #$CF C1/2844: 09 20 ORA #$20 C1/2846: 9D DC 80 STA $80DC,X C1/2849: 20 35 39 JSR $3935 C1/284C: FA PLX C1/284D: 68 PLA C1/284E: 9D F3 80 STA $80F3,X C1/2851: 68 PLA C1/2852: 9D DC 80 STA $80DC,X C1/2855: C2 20 REP #$20 C1/2857: 68 PLA C1/2858: 9D CF 80 STA $80CF,X C1/285B: 7B TDC C1/285C: E2 20 SEP #$20 C1/285E: AD 60 00 LDA $0060 C1/2861: 85 71 STA $71 C1/2863: FA PLX C1/2864: 20 E1 25 JSR $25E1 C1/2867: 68 PLA C1/2868: 60 RTS ; [ Update Sprite Data (except bg1 monsters) ] C1/2869: 20 7A 28 JSR $287A ; check bg1 monsters C1/286C: 49 FF EOR #$FF C1/286E: 2D 1E 20 AND $201E ; monsters shown C1/2871: 2D AB 61 AND $61AB ; monsters shown C1/2874: 8D D1 88 STA $88D1 C1/2877: 4C 97 28 JMP $2897 ; update sprite data ; [ Check BG1 Monsters ] get_mon_back_bit_nmi: C1/287A: 7B TDC C1/287B: AA TAX C1/287C: 9C D1 88 STZ $88D1 C1/287F: BD F4 80 LDA $80F4,X ; bg1 monster (from battle data) C1/2882: 4A LSR C1/2883: 0D D1 88 ORA $88D1 C1/2886: 6A ROR C1/2887: 8D D1 88 STA $88D1 C1/288A: E8 INX ; next monster C1/288B: E8 INX C1/288C: E0 0C 00 CPX #$000C C1/288F: D0 EE BNE $287F C1/2891: 4A LSR C1/2892: 4A LSR C1/2893: 8D D1 88 STA $88D1 C1/2896: 60 RTS ; [ Update Sprite Data ] pri_all_obj_set: C1/2897: AD 0C 7B LDA $7B0C ; branch if character/monster order priority data is valid C1/289A: F0 2E BEQ $28CA C1/289C: 9C 0C 7B STZ $7B0C ; validate character/monster order priority data C1/289F: 7B TDC C1/28A0: AA TAX C1/28A1: C2 20 REP #$20 C1/28A3: E2 10 SEP #$10 C1/28A5: BD 1F 7A LDA $7A1F,X ; copy character/monster order priority data from buffer C1/28A8: 9D 47 7A STA $7A47,X C1/28AB: BD 21 7A LDA $7A21,X C1/28AE: 9D 49 7A STA $7A49,X C1/28B1: BD 33 7A LDA $7A33,X C1/28B4: 9D 5B 7A STA $7A5B,X C1/28B7: BD 35 7A LDA $7A35,X C1/28BA: 9D 5D 7A STA $7A5D,X C1/28BD: E8 INX C1/28BE: E8 INX C1/28BF: E8 INX C1/28C0: E8 INX C1/28C1: E0 14 CPX #$14 C1/28C3: D0 E0 BNE $28A5 C1/28C5: 7B TDC C1/28C6: E2 20 SEP #$20 C1/28C8: C2 10 REP #$10 C1/28CA: 20 26 3A JSR $3A26 ; update character x positions C1/28CD: AD B0 62 LDA $62B0 ; branch if esper thread 1 sprites are shown below monsters/characters C1/28D0: D0 0B BNE $28DD C1/28D2: A9 01 LDA #$01 ; update 1 thread C1/28D4: 8D 0D 7B STA $7B0D C1/28D7: A2 20 05 LDX #$0520 ; esper thread 1 C1/28DA: 20 69 26 JSR $2669 ; update animation sprite data C1/28DD: A9 01 LDA #$01 ; update 1 thread C1/28DF: 8D 0D 7B STA $7B0D C1/28E2: A2 30 05 LDX #$0530 ; esper thread 2 C1/28E5: 20 69 26 JSR $2669 ; update animation sprite data C1/28E8: A9 01 LDA #$01 ; update 1 thread C1/28EA: 8D 0D 7B STA $7B0D C1/28ED: A2 40 05 LDX #$0540 ; esper thread 3 C1/28F0: 20 69 26 JSR $2669 ; update animation sprite data C1/28F3: 7B TDC C1/28F4: AA TAX C1/28F5: DA PHX C1/28F6: AD 0E 7B LDA $7B0E ; number of threads to update (monsters) C1/28F9: 8D 0D 7B STA $7B0D C1/28FC: BD 49 7A LDA $7A49,X ; character/monster number C1/28FF: C9 04 CMP #$04 C1/2901: 90 25 BCC $2928 ; branch if a character C1/2903: C9 0A CMP #$0A C1/2905: B0 54 BCS $295B ; skip if not a monster ; monster C1/2907: 38 SEC C1/2908: E9 04 SBC #$04 C1/290A: AA TAX C1/290B: 8D D2 88 STA $88D2 ; current monster C1/290E: BF 01 1A C1 LDA $C11A01,X ; bit mask C1/2912: 2D AF 62 AND $62AF C1/2915: D0 0C BNE $2923 C1/2917: BF 01 1A C1 LDA $C11A01,X ; bit mask C1/291B: 2D 1E 20 AND $201E C1/291E: 2D AB 61 AND $61AB C1/2921: F0 38 BEQ $295B ; skip if ??? C1/2923: 20 C2 27 JSR $27C2 ; update monster sprite data C1/2926: 80 33 BRA $295B ; character C1/2928: 09 80 ORA #$80 ; C1/292A: 85 7B STA $7B C1/292C: 29 03 AND #$03 C1/292E: 0A ASL C1/292F: AA TAX C1/2930: C2 20 REP #$20 C1/2932: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/2936: AA TAX C1/2937: 7B TDC C1/2938: E2 20 SEP #$20 C1/293A: AD 0F 7B LDA $7B0F ; number of threads to update (characters) C1/293D: 8D 0D 7B STA $7B0D C1/2940: DA PHX C1/2941: A5 7B LDA $7B C1/2943: 48 PHA C1/2944: 20 42 26 JSR $2642 ; update character/monster animation sprite data C1/2947: 68 PLA C1/2948: 20 7F 29 JSR $297F ; update character sprite data C1/294B: 29 7F AND #$7F C1/294D: CD 68 7B CMP $7B68 C1/2950: D0 03 BNE $2955 C1/2952: 20 92 2D JSR $2D92 ; C1/2955: FA PLX C1/2956: 48 PHA C1/2957: 20 E1 25 JSR $25E1 ; C1/295A: 68 PLA ; next character/monster C1/295B: FA PLX C1/295C: E8 INX C1/295D: E8 INX C1/295E: E8 INX C1/295F: E8 INX C1/2960: E0 28 00 CPX #$0028 C1/2963: D0 90 BNE $28F5 C1/2965: AD B0 62 LDA $62B0 ; branch if esper thread 1 sprites are shown above monsters/characters C1/2968: F0 0B BEQ $2975 C1/296A: A9 01 LDA #$01 C1/296C: 8D 0D 7B STA $7B0D C1/296F: A2 20 05 LDX #$0520 ; esper thread 1 C1/2972: 20 69 26 JSR $2669 ; update animation sprite data C1/2975: AD 68 7B LDA $7B68 ; C1/2978: 1A INC C1/2979: 29 03 AND #$03 C1/297B: 8D 68 7B STA $7B68 C1/297E: 60 RTS ; [ Update Character Sprite Data ] ; A = character number oneset_obj_set: C1/297F: 48 PHA C1/2980: 29 03 AND #$03 C1/2982: AA TAX C1/2983: DA PHX C1/2984: BF 01 1A C1 LDA $C11A01,X ; bit mask C1/2988: 85 2C STA $2C ; $2C = character bit mask C1/298A: FA PLX C1/298B: AD 1D 20 LDA $201D ; characters shown C1/298E: 2D AC 61 AND $61AC ; characters shown C1/2991: 25 2C AND $2C C1/2993: D0 03 BNE $2998 ; return if character is not shown C1/2995: 4C 25 2A JMP $2A25 C1/2998: BF 5B CF C2 LDA $C2CF5B,X ; pointer to character graphics data (+$7E2EAE) C1/299C: AA TAX C1/299D: BD AE 2E LDA $2EAE,X ; character graphics index C1/29A0: C9 FF CMP #$FF C1/29A2: F0 F1 BEQ $2995 ; return if invalid C1/29A4: BD C0 2E LDA $2EC0,X ; status 4 C1/29A7: 29 20 AND #$20 C1/29A9: D0 7A BNE $2A25 ; branch if hide status C1/29AB: 68 PLA C1/29AC: 20 2A 2B JSR $2B2A ; update damage numeral sprites C1/29AF: 85 36 STA $36 C1/29B1: AD BD 62 LDA $62BD ; return if characters are hidden for esper attack C1/29B4: D0 6E BNE $2A24 C1/29B6: A5 36 LDA $36 C1/29B8: 48 PHA C1/29B9: AD BA 64 LDA $64BA ; C1/29BC: D0 5A BNE $2A18 C1/29BE: 68 PLA C1/29BF: 20 A3 33 JSR $33A3 ; update character status sprites C1/29C2: 20 DB 34 JSR $34DB ; update character sprites C1/29C5: 48 PHA C1/29C6: 29 03 AND #$03 C1/29C8: 85 36 STA $36 C1/29CA: 20 09 1A JSR $1A09 ; get bit mask C1/29CD: 2D 9C 61 AND $619C C1/29D0: F0 3C BEQ $2A0E ; branch if vertical mirror image is enabled C1/29D2: A5 36 LDA $36 C1/29D4: 29 03 AND #$03 C1/29D6: AA TAX C1/29D7: BF 5B CF C2 LDA $C2CF5B,X ; pointer to character graphics data (+$7E2EAE) C1/29DB: AA TAX C1/29DC: C2 20 REP #$20 C1/29DE: BD B9 61 LDA $61B9,X ; add $18 to y position C1/29E1: 48 PHA C1/29E2: 18 CLC C1/29E3: 69 18 00 ADC #$0018 C1/29E6: 9D B9 61 STA $61B9,X C1/29E9: BD BD 61 LDA $61BD,X C1/29EC: 48 PHA C1/29ED: DA PHX C1/29EE: 7B TDC C1/29EF: E2 20 SEP #$20 C1/29F1: BD BD 61 LDA $61BD,X ; sprite priority C1/29F4: 29 CF AND #$CF C1/29F6: 09 A0 ORA #$A0 ; set vertical flip, priority = 2 C1/29F8: 9D BD 61 STA $61BD,X C1/29FB: A5 36 LDA $36 C1/29FD: 20 DB 34 JSR $34DB ; update character sprites (vertical mirror) C1/2A00: C2 20 REP #$20 C1/2A02: FA PLX C1/2A03: 68 PLA C1/2A04: 9D BD 61 STA $61BD,X C1/2A07: 68 PLA C1/2A08: 9D B9 61 STA $61B9,X C1/2A0B: 7B TDC C1/2A0C: E2 20 SEP #$20 C1/2A0E: 68 PLA C1/2A0F: 20 27 2A JSR $2A27 C1/2A12: 20 4A 2A JSR $2A4A ; update echo sprites C1/2A15: 4C 75 31 JMP $3175 ; update character shadow sprites C1/2A18: 68 PLA C1/2A19: 48 PHA C1/2A1A: 20 DB 34 JSR $34DB ; update character sprites C1/2A1D: 20 27 2A JSR $2A27 C1/2A20: 20 9F 32 JSR $329F C1/2A23: 68 PLA C1/2A24: 60 RTS C1/2A25: 68 PLA C1/2A26: 60 RTS ; [ ] set_deth_poi: C1/2A27: 48 PHA C1/2A28: 29 03 AND #$03 C1/2A2A: 0A ASL C1/2A2B: A8 TAY C1/2A2C: AA TAX C1/2A2D: AD DA E9 LDA $E9DA C1/2A30: 4A LSR C1/2A31: 29 08 AND #$08 C1/2A33: 85 36 STA $36 C1/2A35: 8A TXA C1/2A36: 18 CLC C1/2A37: 65 36 ADC $36 C1/2A39: AA TAX C1/2A3A: BF 43 BF C2 LDA $C2BF43,X C1/2A3E: 99 D2 E9 STA $E9D2,Y C1/2A41: BF 44 BF C2 LDA $C2BF44,X C1/2A45: 99 D3 E9 STA $E9D3,Y C1/2A48: 68 PLA C1/2A49: 60 RTS ; [ Update Echo Sprites ] ; A = current character bunsin_set: C1/2A4A: 48 PHA C1/2A4B: 29 03 AND #$03 C1/2A4D: CD D3 62 CMP $62D3 ; return if this is not the character with echo effect C1/2A50: D0 05 BNE $2A57 C1/2A52: AD D4 62 LDA $62D4 ; return if echo effect is disabled C1/2A55: D0 02 BNE $2A59 C1/2A57: 68 PLA C1/2A58: 60 RTS C1/2A59: A5 0E LDA $0E ; frame counter C1/2A5B: 2D D5 62 AND $62D5 ; frame delay C1/2A5E: D0 47 BNE $2AA7 C1/2A60: A2 38 00 LDX #$0038 C1/2A63: C2 20 REP #$20 C1/2A65: BD CE 62 LDA $62CE,X ; shift all sprites back 1 C1/2A68: 9D D6 62 STA $62D6,X C1/2A6B: BD D0 62 LDA $62D0,X C1/2A6E: 9D D8 62 STA $62D8,X C1/2A71: BD D2 62 LDA $62D2,X C1/2A74: 9D DA 62 STA $62DA,X C1/2A77: BD D4 62 LDA $62D4,X C1/2A7A: 9D DC 62 STA $62DC,X C1/2A7D: 8A TXA C1/2A7E: 38 SEC C1/2A7F: E9 08 00 SBC #$0008 C1/2A82: AA TAX C1/2A83: D0 E0 BNE $2A65 C1/2A85: A5 71 LDA $71 ; next available sprite C1/2A87: 29 FF 00 AND #$00FF C1/2A8A: 3A DEC ; previous sprite C1/2A8B: 3A DEC C1/2A8C: 0A ASL C1/2A8D: 0A ASL C1/2A8E: AA TAX C1/2A8F: BD 00 03 LDA $0300,X ; copy previous sprite data to echo sprite data (top and bottom) C1/2A92: 8D D6 62 STA $62D6 C1/2A95: BD 02 03 LDA $0302,X C1/2A98: 8D D8 62 STA $62D8 C1/2A9B: BD 04 03 LDA $0304,X C1/2A9E: 8D DA 62 STA $62DA C1/2AA1: BD 06 03 LDA $0306,X C1/2AA4: 8D DC 62 STA $62DC C1/2AA7: C2 20 REP #$20 C1/2AA9: A5 71 LDA $71 ; next available sprite C1/2AAB: 29 FF 00 AND #$00FF C1/2AAE: 0A ASL C1/2AAF: 0A ASL C1/2AB0: AA TAX C1/2AB1: A5 0E LDA $0E ; frame counter C1/2AB3: 29 01 00 AND #$0001 C1/2AB6: F0 05 BEQ $2ABD C1/2AB8: A0 08 00 LDY #$0008 C1/2ABB: 80 01 BRA $2ABE C1/2ABD: A8 TAY C1/2ABE: B9 D6 62 LDA $62D6,Y ; copy echo sprite data C1/2AC1: 9D 00 03 STA $0300,X C1/2AC4: B9 D8 62 LDA $62D8,Y C1/2AC7: 9D 02 03 STA $0302,X C1/2ACA: B9 DA 62 LDA $62DA,Y C1/2ACD: 9D 04 03 STA $0304,X C1/2AD0: B9 DC 62 LDA $62DC,Y C1/2AD3: 9D 06 03 STA $0306,X C1/2AD6: B9 E6 62 LDA $62E6,Y C1/2AD9: 9D 08 03 STA $0308,X C1/2ADC: B9 E8 62 LDA $62E8,Y C1/2ADF: 9D 0A 03 STA $030A,X C1/2AE2: B9 EA 62 LDA $62EA,Y C1/2AE5: 9D 0C 03 STA $030C,X C1/2AE8: B9 EC 62 LDA $62EC,Y C1/2AEB: 9D 0E 03 STA $030E,X C1/2AEE: B9 F6 62 LDA $62F6,Y C1/2AF1: 9D 10 03 STA $0310,X C1/2AF4: B9 F8 62 LDA $62F8,Y C1/2AF7: 9D 12 03 STA $0312,X C1/2AFA: B9 FA 62 LDA $62FA,Y C1/2AFD: 9D 14 03 STA $0314,X C1/2B00: B9 FC 62 LDA $62FC,Y C1/2B03: 9D 16 03 STA $0316,X C1/2B06: B9 06 63 LDA $6306,Y C1/2B09: 9D 18 03 STA $0318,X C1/2B0C: B9 08 63 LDA $6308,Y C1/2B0F: 9D 1A 03 STA $031A,X C1/2B12: B9 0A 63 LDA $630A,Y C1/2B15: 9D 1C 03 STA $031C,X C1/2B18: B9 0C 63 LDA $630C,Y C1/2B1B: 9D 1E 03 STA $031E,X C1/2B1E: 7B TDC C1/2B1F: E2 20 SEP #$20 C1/2B21: A5 71 LDA $71 ; increment next available sprite (8 sprites) C1/2B23: 18 CLC C1/2B24: 69 08 ADC #$08 C1/2B26: 85 71 STA $71 C1/2B28: 68 PLA C1/2B29: 60 RTS ; [ Update Damage Numeral Sprites ] one_damage_oam_set: C1/2B2A: 20 67 2C JSR $2C67 ; update damage numeral for target C1/2B2D: 48 PHA C1/2B2E: 85 3A STA $3A C1/2B30: AD 3E 7B LDA $7B3E ; branch if mass damage numerals are disabled C1/2B33: F0 1F BEQ $2B54 C1/2B35: 20 FC 2B JSR $2BFC ; C1/2B38: B0 11 BCS $2B4B C1/2B3A: A5 3A LDA $3A C1/2B3C: AA TAX C1/2B3D: BD 3F 7B LDA $7B3F,X ; branch if damage numeral is disabled C1/2B40: 29 7F AND #$7F C1/2B42: F0 07 BEQ $2B4B C1/2B44: BD 49 7B LDA $7B49,X ; damage numeral frame counter C1/2B47: C9 40 CMP #$40 C1/2B49: D0 0C BNE $2B57 ; branch after 64 frames (a little over 1 second) C1/2B4B: A5 3A LDA $3A C1/2B4D: AA TAX C1/2B4E: 9E 3F 7B STZ $7B3F,X ; disable damage numeral C1/2B51: 9E 49 7B STZ $7B49,X C1/2B54: 4C FA 2B JMP $2BFA C1/2B57: DA PHX C1/2B58: AA TAX C1/2B59: BF 93 CF C2 LDA $C2CF93,X ; $3C = y offset for bouncing damage numerals C1/2B5D: 85 3C STA $3C C1/2B5F: FA PLX C1/2B60: FE 49 7B INC $7B49,X ; increment frame counter C1/2B63: 64 41 STZ $41 C1/2B65: BD 53 7B LDA $7B53,X ; +$40 = x offset C1/2B68: 85 40 STA $40 C1/2B6A: 10 02 BPL $2B6E C1/2B6C: C6 41 DEC $41 C1/2B6E: C2 20 REP #$20 C1/2B70: A5 36 LDA $36 ; +$36 = x position C1/2B72: 38 SEC C1/2B73: E5 40 SBC $40 C1/2B75: 85 36 STA $36 C1/2B77: 7B TDC C1/2B78: E2 20 SEP #$20 C1/2B7A: A5 38 LDA $38 ; $38 = y position C1/2B7C: 38 SEC C1/2B7D: E5 3C SBC $3C C1/2B7F: 85 38 STA $38 C1/2B81: A5 71 LDA $71 ; next available sprite C1/2B83: C2 20 REP #$20 C1/2B85: 0A ASL C1/2B86: 0A ASL C1/2B87: A8 TAY C1/2B88: 7B TDC C1/2B89: E2 20 SEP #$20 C1/2B8B: A5 3A LDA $3A C1/2B8D: AA TAX C1/2B8E: BD 3F 7B LDA $7B3F,X C1/2B91: 29 80 AND #$80 C1/2B93: D0 04 BNE $2B99 C1/2B95: A9 38 LDA #$38 C1/2B97: 80 02 BRA $2B9B C1/2B99: A9 3A LDA #$3A C1/2B9B: 99 03 03 STA $0303,Y C1/2B9E: 99 07 03 STA $0307,Y C1/2BA1: A5 36 LDA $36 C1/2BA3: 99 00 03 STA $0300,Y C1/2BA6: A5 37 LDA $37 C1/2BA8: 29 01 AND #$01 C1/2BAA: F0 0F BEQ $2BBB C1/2BAC: DA PHX C1/2BAD: B9 7F A1 LDA $A17F,Y C1/2BB0: AA TAX C1/2BB1: BD 00 05 LDA $0500,X C1/2BB4: 19 7F A7 ORA $A77F,Y C1/2BB7: 9D 00 05 STA $0500,X C1/2BBA: FA PLX C1/2BBB: C2 20 REP #$20 C1/2BBD: A5 36 LDA $36 C1/2BBF: 18 CLC C1/2BC0: 69 10 00 ADC #$0010 C1/2BC3: 85 36 STA $36 C1/2BC5: 7B TDC C1/2BC6: E2 20 SEP #$20 C1/2BC8: A5 36 LDA $36 C1/2BCA: 99 04 03 STA $0304,Y C1/2BCD: A5 37 LDA $37 C1/2BCF: 29 01 AND #$01 C1/2BD1: F0 0F BEQ $2BE2 C1/2BD3: DA PHX C1/2BD4: B9 83 A1 LDA $A183,Y C1/2BD7: AA TAX C1/2BD8: BD 00 05 LDA $0500,X C1/2BDB: 19 83 A7 ORA $A783,Y C1/2BDE: 9D 00 05 STA $0500,X C1/2BE1: FA PLX C1/2BE2: A5 38 LDA $38 C1/2BE4: 99 01 03 STA $0301,Y C1/2BE7: 99 05 03 STA $0305,Y C1/2BEA: BF 98 E3 C2 LDA $C2E398,X C1/2BEE: 99 02 03 STA $0302,Y C1/2BF1: 1A INC C1/2BF2: 1A INC C1/2BF3: 99 06 03 STA $0306,Y C1/2BF6: E6 71 INC $71 ; increment next available sprite (2 sprites) C1/2BF8: E6 71 INC $71 C1/2BFA: 68 PLA C1/2BFB: 60 RTS ; [ ] get_damage_poi: C1/2BFC: A5 3A LDA $3A C1/2BFE: 10 2A BPL $2C2A C1/2C00: 29 03 AND #$03 C1/2C02: 85 3A STA $3A C1/2C04: 20 09 1A JSR $1A09 C1/2C07: 2D 1D 20 AND $201D C1/2C0A: 2D AC 61 AND $61AC C1/2C0D: D0 02 BNE $2C11 C1/2C0F: 38 SEC C1/2C10: 60 RTS C1/2C11: BD 10 7B LDA $7B10,X C1/2C14: 85 2C STA $2C C1/2C16: 8A TXA C1/2C17: 0A ASL C1/2C18: AA TAX C1/2C19: BD 43 80 LDA $8043,X C1/2C1C: 85 38 STA $38 C1/2C1E: BD 34 80 LDA $8034,X C1/2C21: 85 37 STA $37 C1/2C23: BD 33 80 LDA $8033,X C1/2C26: 85 36 STA $36 C1/2C28: 80 32 BRA $2C5C C1/2C2A: A5 3A LDA $3A C1/2C2C: 20 09 1A JSR $1A09 C1/2C2F: 2D 1E 20 AND $201E C1/2C32: 2D AB 61 AND $61AB C1/2C35: F0 27 BEQ $2C5E C1/2C37: 8A TXA C1/2C38: 0A ASL C1/2C39: AA TAX C1/2C3A: BD 27 80 LDA $8027,X C1/2C3D: 85 38 STA $38 C1/2C3F: BD 0F 80 LDA $800F,X C1/2C42: 85 36 STA $36 C1/2C44: BD 10 80 LDA $8010,X C1/2C47: 85 37 STA $37 C1/2C49: BD F3 80 LDA $80F3,X C1/2C4C: 5D 7E 61 EOR $617E,X C1/2C4F: 29 01 AND #$01 C1/2C51: 49 01 EOR #$01 C1/2C53: 85 2C STA $2C C1/2C55: A5 3A LDA $3A C1/2C57: 18 CLC C1/2C58: 69 04 ADC #$04 C1/2C5A: 85 3A STA $3A C1/2C5C: 18 CLC C1/2C5D: 60 RTS C1/2C5E: A5 3A LDA $3A C1/2C60: 18 CLC C1/2C61: 69 04 ADC #$04 C1/2C63: 85 3A STA $3A C1/2C65: 38 SEC C1/2C66: 60 RTS ; [ Update Damage Numeral for Target ] ; A = target one_damage_oam_set2: C1/2C67: 8D 41 61 STA $6141 ; current character/monster C1/2C6A: 85 3A STA $3A C1/2C6C: 20 FC 2B JSR $2BFC ; C1/2C6F: 90 20 BCC $2C91 C1/2C71: 7B TDC C1/2C72: AA TAX C1/2C73: BD 1A 63 LDA $631A,X ; damage numeral C1/2C76: 29 7F AND #$7F C1/2C78: F0 0D BEQ $2C87 ; branch if numeral is disabled C1/2C7A: BD 1E 63 LDA $631E,X ; numeral target C1/2C7D: C5 3A CMP $3A C1/2C7F: D0 06 BNE $2C87 ; branch if it doesn't match the current target C1/2C81: 9E 1A 63 STZ $631A,X ; disable damage numeral C1/2C84: 9E 22 63 STZ $6322,X C1/2C87: E8 INX C1/2C88: E0 04 00 CPX #$0004 C1/2C8B: D0 E6 BNE $2C73 C1/2C8D: AD 41 61 LDA $6141 C1/2C90: 60 RTS C1/2C91: 7B TDC C1/2C92: AA TAX C1/2C93: BD 1A 63 LDA $631A,X ; damage numeral C1/2C96: 29 7F AND #$7F C1/2C98: F0 1E BEQ $2CB8 ; branch if numeral is disabled C1/2C9A: BD 1E 63 LDA $631E,X ; numeral target C1/2C9D: C5 3A CMP $3A C1/2C9F: D0 17 BNE $2CB8 ; branch if it doesn't match the current target C1/2CA1: A5 3A LDA $3A C1/2CA3: 48 PHA C1/2CA4: DA PHX C1/2CA5: 86 3C STX $3C C1/2CA7: AD 41 61 LDA $6141 ; current character/monster C1/2CAA: 85 3A STA $3A C1/2CAC: 20 FC 2B JSR $2BFC ; C1/2CAF: A6 3C LDX $3C C1/2CB1: 20 C2 2C JSR $2CC2 ; update damage numeral sprite C1/2CB4: FA PLX C1/2CB5: 68 PLA C1/2CB6: 85 3A STA $3A C1/2CB8: E8 INX ; next numeral C1/2CB9: E0 04 00 CPX #$0004 C1/2CBC: D0 D5 BNE $2C93 C1/2CBE: AD 41 61 LDA $6141 C1/2CC1: 60 RTS ; [ Update Damage Numeral Sprite ] C1/2CC2: 48 PHA C1/2CC3: BD 22 63 LDA $6322,X ; damage numeral frame counter C1/2CC6: C9 40 CMP #$40 ; branch after 64 frames (a little over 1 second) C1/2CC8: D0 08 BNE $2CD2 C1/2CCA: 9E 1A 63 STZ $631A,X ; disable damage numeral C1/2CCD: 9E 22 63 STZ $6322,X C1/2CD0: 68 PLA C1/2CD1: 60 RTS C1/2CD2: DA PHX C1/2CD3: AA TAX C1/2CD4: BF 93 CF C2 LDA $C2CF93,X ; $3C = y offset for bouncing damage numerals C1/2CD8: 85 3C STA $3C C1/2CDA: FA PLX C1/2CDB: FE 22 63 INC $6322,X ; increment frame counter C1/2CDE: 64 41 STZ $41 C1/2CE0: BD 26 63 LDA $6326,X ; +$40 = x offset to center sprite C1/2CE3: 85 40 STA $40 C1/2CE5: 10 02 BPL $2CE9 C1/2CE7: C6 41 DEC $41 C1/2CE9: C2 20 REP #$20 C1/2CEB: A5 36 LDA $36 ; +$36 = x position C1/2CED: 38 SEC C1/2CEE: E5 40 SBC $40 C1/2CF0: 85 36 STA $36 C1/2CF2: 7B TDC C1/2CF3: E2 20 SEP #$20 C1/2CF5: A5 38 LDA $38 ; +$38 = y position C1/2CF7: 38 SEC C1/2CF8: E5 3C SBC $3C C1/2CFA: 85 38 STA $38 C1/2CFC: A5 3A LDA $3A ; target C1/2CFE: C9 04 CMP #$04 C1/2D00: 90 0C BCC $2D0E ; branch if a character C1/2D02: 38 SEC C1/2D03: E9 04 SBC #$04 C1/2D05: 0A ASL C1/2D06: A8 TAY C1/2D07: B9 E8 80 LDA $80E8,Y C1/2D0A: 85 3A STA $3A ; $3A = $80E8,Y (monster) C1/2D0C: 80 04 BRA $2D12 C1/2D0E: A9 FF LDA #$FF C1/2D10: 85 3A STA $3A ; $3A = #$FF (character) C1/2D12: A5 71 LDA $71 ; next available sprite C1/2D14: C2 20 REP #$20 C1/2D16: 0A ASL C1/2D17: 0A ASL C1/2D18: A8 TAY C1/2D19: 7B TDC C1/2D1A: E2 20 SEP #$20 C1/2D1C: BD 1A 63 LDA $631A,X ; branch if numeral is green C1/2D1F: 29 80 AND #$80 C1/2D21: D0 04 BNE $2D27 C1/2D23: A9 38 LDA #$38 ; use palette 4 (white numerals) C1/2D25: 80 02 BRA $2D29 C1/2D27: A9 3A LDA #$3A ; use palette 5 (green numerals) C1/2D29: 25 3A AND $3A C1/2D2B: 99 03 03 STA $0303,Y ; vhoopppm C1/2D2E: 99 07 03 STA $0307,Y C1/2D31: A5 36 LDA $36 C1/2D33: 99 00 03 STA $0300,Y ; x position C1/2D36: A5 37 LDA $37 C1/2D38: 29 01 AND #$01 C1/2D3A: F0 0F BEQ $2D4B ; branch if x position < $0100 C1/2D3C: DA PHX C1/2D3D: B9 7F A1 LDA $A17F,Y C1/2D40: AA TAX C1/2D41: BD 00 05 LDA $0500,X ; set sprite high data C1/2D44: 19 7F A7 ORA $A77F,Y C1/2D47: 9D 00 05 STA $0500,X C1/2D4A: FA PLX C1/2D4B: C2 20 REP #$20 C1/2D4D: A5 36 LDA $36 ; next tile, x += 16 C1/2D4F: 18 CLC C1/2D50: 69 10 00 ADC #$0010 C1/2D53: 85 36 STA $36 C1/2D55: 7B TDC C1/2D56: E2 20 SEP #$20 C1/2D58: A5 36 LDA $36 C1/2D5A: 99 04 03 STA $0304,Y ; x position C1/2D5D: A5 37 LDA $37 C1/2D5F: 29 01 AND #$01 C1/2D61: F0 0F BEQ $2D72 ; branch if x position < $0100 C1/2D63: DA PHX C1/2D64: B9 83 A1 LDA $A183,Y C1/2D67: AA TAX C1/2D68: BD 00 05 LDA $0500,X ; set sprite high data C1/2D6B: 19 83 A7 ORA $A783,Y C1/2D6E: 9D 00 05 STA $0500,X C1/2D71: FA PLX C1/2D72: A5 38 LDA $38 ; y position C1/2D74: C9 97 CMP #$97 C1/2D76: 90 02 BCC $2D7A ; hide sprite if y position < $97 C1/2D78: A9 E0 LDA #$E0 C1/2D7A: 99 01 03 STA $0301,Y C1/2D7D: 99 05 03 STA $0305,Y C1/2D80: BF 94 E3 C2 LDA $C2E394,X ; tile pointer for damage numeral sprite C1/2D84: 99 02 03 STA $0302,Y C1/2D87: 1A INC C1/2D88: 1A INC C1/2D89: 99 06 03 STA $0306,Y C1/2D8C: E6 71 INC $71 ; increment next available sprite C1/2D8E: E6 71 INC $71 C1/2D90: 68 PLA C1/2D91: 60 RTS ; [ ] bunsin_obj_set: C1/2D92: 48 PHA C1/2D93: AD 68 7B LDA $7B68 C1/2D96: AA TAX C1/2D97: DA PHX C1/2D98: BF 01 1A C1 LDA $C11A01,X C1/2D9C: 85 2C STA $2C C1/2D9E: FA PLX C1/2D9F: AD 1D 20 LDA $201D C1/2DA2: 2D AC 61 AND $61AC C1/2DA5: 25 2C AND $2C C1/2DA7: F0 28 BEQ $2DD1 C1/2DA9: BF 5B CF C2 LDA $C2CF5B,X ; pointer to character graphics data (+$7E2EAE) C1/2DAD: AA TAX C1/2DAE: BD AE 2E LDA $2EAE,X C1/2DB1: C9 FF CMP #$FF C1/2DB3: F0 1C BEQ $2DD1 C1/2DB5: BD C0 2E LDA $2EC0,X C1/2DB8: 29 20 AND #$20 C1/2DBA: D0 15 BNE $2DD1 C1/2DBC: BD C2 2E LDA $2EC2,X C1/2DBF: 29 04 AND #$04 C1/2DC1: F0 0E BEQ $2DD1 C1/2DC3: A9 01 LDA #$01 C1/2DC5: 8D 69 7B STA $7B69 C1/2DC8: AD 68 7B LDA $7B68 C1/2DCB: 20 DB 34 JSR $34DB ; update character sprites C1/2DCE: 9C 69 7B STZ $7B69 C1/2DD1: 68 PLA C1/2DD2: 60 RTS ; [ Update Character Color Palettes ] nmi_one_status_col_set: C1/2DD3: AD 98 00 LDA $0098 ; frame counter C1/2DD6: 1A INC C1/2DD7: 29 03 AND #$03 C1/2DD9: 0A ASL C1/2DDA: 0A ASL C1/2DDB: 0A ASL C1/2DDC: 0A ASL C1/2DDD: 0A ASL C1/2DDE: A8 TAY ; +Y = pointer to current character palette C1/2DDF: 5A PHY C1/2DE0: A2 18 00 LDX #$0018 C1/2DE3: B9 AD 81 LDA $81AD,Y ; copy unaltered character palette C1/2DE6: 99 80 7F STA $7F80,Y C1/2DE9: C8 INY C1/2DEA: CA DEX C1/2DEB: D0 F6 BNE $2DE3 C1/2DED: 7A PLY C1/2DEE: B9 CD 61 LDA $61CD,Y ; branch if not vanishing C1/2DF1: F0 12 BEQ $2E05 C1/2DF3: 3A DEC ; decrement vanish counter C1/2DF4: 3A DEC C1/2DF5: 99 CD 61 STA $61CD,Y C1/2DF8: D0 03 BNE $2DFD C1/2DFA: 9C 6A 7B STZ $7B6A ; vanish animation complete C1/2DFD: A9 05 LDA #$05 C1/2DFF: 20 B5 2E JSR $2EB5 ; update glowing border (vanish) C1/2E02: 4C B4 2E JMP $2EB4 C1/2E05: C2 20 REP #$20 C1/2E07: B9 C1 2E LDA $2EC1,Y ; +$36 = current status 1 & 2 C1/2E0A: 85 36 STA $36 C1/2E0C: B9 C3 2E LDA $2EC3,Y ; +$38 = current status 3 & 4 C1/2E0F: 85 38 STA $38 C1/2E11: 7B TDC C1/2E12: E2 20 SEP #$20 C1/2E14: A5 36 LDA $36 ; branch if character doesn't have petrify status C1/2E16: 29 40 AND #$40 C1/2E18: F0 13 BEQ $2E2D C1/2E1A: 7B TDC C1/2E1B: AA TAX C1/2E1C: BF EC CF C2 LDA $C2CFEC,X ; copy petrify palette C1/2E20: 99 82 7F STA $7F82,Y C1/2E23: C8 INY C1/2E24: E8 INX C1/2E25: E0 16 00 CPX #$0016 C1/2E28: D0 F2 BNE $2E1C C1/2E2A: 4C B4 2E JMP $2EB4 C1/2E2D: A5 39 LDA $39 ; branch if character doesn't have frozen status C1/2E2F: 29 02 AND #$02 C1/2E31: F0 12 BEQ $2E45 C1/2E33: 7B TDC C1/2E34: AA TAX C1/2E35: 5A PHY C1/2E36: BF 04 D0 C2 LDA $C2D004,X ; copy frozen palette C1/2E3A: 99 82 7F STA $7F82,Y C1/2E3D: C8 INY C1/2E3E: E8 INX C1/2E3F: E0 16 00 CPX #$0016 C1/2E42: D0 F2 BNE $2E36 C1/2E44: 7A PLY C1/2E45: A5 36 LDA $36 ; branch if character doesn't have poison status C1/2E47: 29 04 AND #$04 C1/2E49: F0 06 BEQ $2E51 C1/2E4B: 7B TDC C1/2E4C: 20 0D 2F JSR $2F0D ; update skin color (poison) C1/2E4F: 80 63 BRA $2EB4 C1/2E51: A5 36 LDA $36 ; branch if character doesn't have zombie status C1/2E53: 29 02 AND #$02 C1/2E55: F0 07 BEQ $2E5E C1/2E57: A9 01 LDA #$01 C1/2E59: 20 0D 2F JSR $2F0D ; update skin color (zombie) C1/2E5C: 80 56 BRA $2EB4 C1/2E5E: A5 37 LDA $37 ; branch if character doesn't have berserk status C1/2E60: 29 10 AND #$10 C1/2E62: F0 07 BEQ $2E6B C1/2E64: A9 02 LDA #$02 C1/2E66: 20 0D 2F JSR $2F0D ; update skin color (berserk) C1/2E69: 80 49 BRA $2EB4 C1/2E6B: A5 38 LDA $38 ; branch if character doesn't have reflect status C1/2E6D: 10 06 BPL $2E75 C1/2E6F: 7B TDC C1/2E70: 20 C3 2E JSR $2EC3 ; update glowing border (blue/reflect) C1/2E73: 80 3F BRA $2EB4 C1/2E75: 29 40 AND #$40 ; branch if character doesn't have safe status C1/2E77: F0 07 BEQ $2E80 C1/2E79: A9 01 LDA #$01 C1/2E7B: 20 C3 2E JSR $2EC3 ; update glowing border (yellow/safe) C1/2E7E: 80 34 BRA $2EB4 C1/2E80: A5 38 LDA $38 ; branch if character doesn't have shell status C1/2E82: 29 20 AND #$20 C1/2E84: F0 07 BEQ $2E8D C1/2E86: A9 02 LDA #$02 C1/2E88: 20 C3 2E JSR $2EC3 ; update glowing border (green/shell) C1/2E8B: 80 27 BRA $2EB4 C1/2E8D: A5 38 LDA $38 ; branch if character doesn't have stop status C1/2E8F: 29 10 AND #$10 C1/2E91: F0 07 BEQ $2E9A C1/2E93: A9 07 LDA #$07 C1/2E95: 20 C3 2E JSR $2EC3 ; update glowing border (pink/stop) C1/2E98: 80 1A BRA $2EB4 C1/2E9A: A5 38 LDA $38 ; branch if character doesn't have haste status C1/2E9C: 29 08 AND #$08 C1/2E9E: F0 07 BEQ $2EA7 C1/2EA0: A9 03 LDA #$03 C1/2EA2: 20 C3 2E JSR $2EC3 ; update glowing border (red/haste) C1/2EA5: 80 0D BRA $2EB4 C1/2EA7: A5 38 LDA $38 ; return if character doesn't have slow status C1/2EA9: 29 04 AND #$04 C1/2EAB: F0 07 BEQ $2EB4 C1/2EAD: A9 04 LDA #$04 C1/2EAF: 20 C3 2E JSR $2EC3 ; update glowing border (white/slow) C1/2EB2: 80 00 BRA $2EB4 C1/2EB4: 60 RTS ; [ Update Glowing Border (vanish) ] one_pal1_set2: C1/2EB5: 48 PHA C1/2EB6: B9 CD 61 LDA $61CD,Y C1/2EB9: 0A ASL C1/2EBA: 0A ASL C1/2EBB: 18 CLC C1/2EBC: 69 40 ADC #$40 C1/2EBE: 85 2C STA $2C C1/2EC0: 68 PLA C1/2EC1: 80 06 BRA $2EC9 ; [ Update Glowing Border ] ; A = border color ; 0: blue/reflect ; 1: yellow/safe ; 2: green/shell ; 3: red/haste ; 4: white/slow ; 5: white/vanish ; 6: red/unused ; 7: pink/stop one_pal1_set: C1/2EC3: 48 PHA C1/2EC4: A5 0E LDA $0E C1/2EC6: 85 2C STA $2C C1/2EC8: 68 PLA one_pal1_main: C1/2EC9: 48 PHA C1/2ECA: A5 2C LDA $2C C1/2ECC: 29 03 AND #$03 C1/2ECE: AA TAX C1/2ECF: BF AA E3 C2 LDA $C2E3AA,X C1/2ED3: 18 CLC C1/2ED4: 65 2C ADC $2C C1/2ED6: 85 36 STA $36 C1/2ED8: 29 40 AND #$40 C1/2EDA: F0 12 BEQ $2EEE C1/2EDC: A5 36 LDA $36 C1/2EDE: 29 3C AND #$3C C1/2EE0: 4A LSR C1/2EE1: 85 2C STA $2C C1/2EE3: A9 1F LDA #$1F C1/2EE5: 38 SEC C1/2EE6: E5 2C SBC $2C C1/2EE8: 85 2C STA $2C C1/2EEA: 64 2D STZ $2D C1/2EEC: 80 09 BRA $2EF7 C1/2EEE: A5 36 LDA $36 C1/2EF0: 29 3C AND #$3C C1/2EF2: 4A LSR C1/2EF3: 85 2C STA $2C C1/2EF5: 64 2D STZ $2D C1/2EF7: 68 PLA C1/2EF8: 0A ASL C1/2EF9: AA TAX C1/2EFA: C2 20 REP #$20 C1/2EFC: 20 E4 41 JSR $41E4 C1/2EFF: BF BA E3 C2 LDA $C2E3BA,X C1/2F03: 20 02 42 JSR $4202 C1/2F06: 99 82 7F STA $7F82,Y C1/2F09: 7B TDC C1/2F0A: E2 20 SEP #$20 C1/2F0C: 60 RTS ; [ Update Skin Color ] ; A = skin color ; 0: poison ; 1: zombie ; 2: berserk one_pal6_set: C1/2F0D: 0A ASL C1/2F0E: 0A ASL C1/2F0F: AA TAX C1/2F10: C2 20 REP #$20 C1/2F12: BF AE E3 C2 LDA $C2E3AE,X C1/2F16: 99 8C 7F STA $7F8C,Y C1/2F19: BF B0 E3 C2 LDA $C2E3B0,X C1/2F1D: 99 8E 7F STA $7F8E,Y C1/2F20: 7B TDC C1/2F21: E2 20 SEP #$20 C1/2F23: 60 RTS ; [ ] one_status_obj_set: C1/2F24: DA PHX C1/2F25: BD BE 2E LDA $2EBE,X C1/2F28: 85 10 STA $10 C1/2F2A: 10 04 BPL $2F30 C1/2F2C: A9 06 LDA #$06 C1/2F2E: 80 40 BRA $2F70 C1/2F30: A5 10 LDA $10 C1/2F32: 29 20 AND #$20 C1/2F34: F0 04 BEQ $2F3A C1/2F36: A9 02 LDA #$02 C1/2F38: 80 36 BRA $2F70 C1/2F3A: A5 10 LDA $10 C1/2F3C: 29 10 AND #$10 C1/2F3E: F0 04 BEQ $2F44 C1/2F40: A9 04 LDA #$04 C1/2F42: 80 2C BRA $2F70 C1/2F44: BD C0 2E LDA $2EC0,X C1/2F47: 29 01 AND #$01 C1/2F49: F0 04 BEQ $2F4F C1/2F4B: A9 04 LDA #$04 C1/2F4D: 80 21 BRA $2F70 C1/2F4F: BD BD 2E LDA $2EBD,X C1/2F52: 29 04 AND #$04 C1/2F54: F0 04 BEQ $2F5A C1/2F56: A9 01 LDA #$01 C1/2F58: 80 16 BRA $2F70 C1/2F5A: BD BD 2E LDA $2EBD,X C1/2F5D: 29 01 AND #$01 C1/2F5F: F0 04 BEQ $2F65 C1/2F61: A9 03 LDA #$03 C1/2F63: 80 0B BRA $2F70 C1/2F65: A5 10 LDA $10 C1/2F67: 29 08 AND #$08 C1/2F69: F0 04 BEQ $2F6F C1/2F6B: A9 05 LDA #$05 C1/2F6D: 80 01 BRA $2F70 C1/2F6F: 7B TDC C1/2F70: 9D CF 61 STA $61CF,X C1/2F73: FA PLX C1/2F74: 60 RTS ; [ Update Character Status Change Animations (long access) ] status_pat_tfr_long: C1/2F75: 20 79 2F JSR $2F79 ; update character status change animations C1/2F78: 6B RTL ; [ Update Character Status Change Animations ] ; morph/clear status_pat_tfr: C1/2F79: AD 78 7B LDA $7B78 ; character index for status change animations C1/2F7C: 29 03 AND #$03 C1/2F7E: A8 TAY C1/2F7F: 0A ASL C1/2F80: 0A ASL C1/2F81: 0A ASL C1/2F82: 0A ASL C1/2F83: 0A ASL C1/2F84: AA TAX C1/2F85: BD CD 61 LDA $61CD,X ; counter for vanish palette C1/2F88: F0 03 BEQ $2F8D C1/2F8A: 4C 4C 30 JMP $304C C1/2F8D: A9 01 LDA #$01 ; C1/2F8F: 9D CE 61 STA $61CE,X C1/2F92: AD 4B 2F LDA $2F4B ; branch if running is disabled (event battles) C1/2F95: 29 01 AND #$01 C1/2F97: D0 38 BNE $2FD1 C1/2F99: BD C0 2E LDA $2EC0,X ; branch if not morph status C1/2F9C: 29 08 AND #$08 C1/2F9E: F0 15 BEQ $2FB5 C1/2FA0: B9 6C 7B LDA $7B6C,Y ; character graphics index C1/2FA3: C9 12 CMP #$12 C1/2FA5: F0 3F BEQ $2FE6 ; branch if esper terra C1/2FA7: A9 12 LDA #$12 C1/2FA9: 99 6C 7B STA $7B6C,Y ; change graphics to esper terra C1/2FAC: 20 57 31 JSR $3157 ; update character graphics for status changes C1/2FAF: 7B TDC C1/2FB0: 99 70 7B STA $7B70,Y C1/2FB3: 80 31 BRA $2FE6 C1/2FB5: BD BD 2E LDA $2EBD,X C1/2FB8: 29 20 AND #$20 C1/2FBA: F0 15 BEQ $2FD1 C1/2FBC: B9 6C 7B LDA $7B6C,Y ; character graphics index C1/2FBF: C9 0F CMP #$0F C1/2FC1: F0 23 BEQ $2FE6 ; branch if imp C1/2FC3: A9 0F LDA #$0F C1/2FC5: 99 6C 7B STA $7B6C,Y ; change graphics to imp C1/2FC8: 20 57 31 JSR $3157 ; update character graphics for status changes C1/2FCB: 7B TDC C1/2FCC: 99 70 7B STA $7B70,Y C1/2FCF: 80 15 BRA $2FE6 C1/2FD1: B9 6C 7B LDA $7B6C,Y ; character graphics index C1/2FD4: DD AE 2E CMP $2EAE,X C1/2FD7: F0 0D BEQ $2FE6 ; branch if the same as buffer value C1/2FD9: BD AE 2E LDA $2EAE,X C1/2FDC: 99 6C 7B STA $7B6C,Y ; change graphics to buffer value C1/2FDF: 20 57 31 JSR $3157 ; update character graphics for status changes C1/2FE2: 7B TDC C1/2FE3: 99 70 7B STA $7B70,Y C1/2FE6: AD 4B 2F LDA $2F4B ; branch if running is disabled (event battles) C1/2FE9: 29 01 AND #$01 C1/2FEB: D0 26 BNE $3013 C1/2FED: BD BD 2E LDA $2EBD,X ; branch if not clear status C1/2FF0: 29 10 AND #$10 C1/2FF2: F0 1F BEQ $3013 C1/2FF4: B9 70 7B LDA $7B70,Y C1/2FF7: D0 39 BNE $3032 C1/2FF9: AD 6A 7B LDA $7B6A C1/2FFC: D0 34 BNE $3032 C1/2FFE: EE 6A 7B INC $7B6A C1/3001: 20 50 30 JSR $3050 C1/3004: 20 06 31 JSR $3106 C1/3007: A9 01 LDA #$01 C1/3009: 99 70 7B STA $7B70,Y C1/300C: A9 1E LDA #$1E C1/300E: 9D CD 61 STA $61CD,X C1/3011: 80 1F BRA $3032 C1/3013: B9 70 7B LDA $7B70,Y C1/3016: F0 1A BEQ $3032 C1/3018: AD 6A 7B LDA $7B6A C1/301B: D0 15 BNE $3032 C1/301D: EE 6A 7B INC $7B6A C1/3020: 20 50 30 JSR $3050 C1/3023: B9 6C 7B LDA $7B6C,Y C1/3026: 20 57 31 JSR $3157 ; update character graphics for status changes C1/3029: 7B TDC C1/302A: 99 70 7B STA $7B70,Y C1/302D: A9 1E LDA #$1E C1/302F: 9D CD 61 STA $61CD,X C1/3032: 9E CE 61 STZ $61CE,X ; C1/3035: 20 71 30 JSR $3071 C1/3038: 20 24 2F JSR $2F24 C1/303B: C2 20 REP #$20 C1/303D: BD BD 2E LDA $2EBD,X ; copy status to second graphics buffer C1/3040: 9D C1 2E STA $2EC1,X C1/3043: BD BF 2E LDA $2EBF,X C1/3046: 9D C3 2E STA $2EC3,X C1/3049: 7B TDC C1/304A: E2 20 SEP #$20 C1/304C: EE 78 7B INC $7B78 ; increment character number C1/304F: 60 RTS ; [ ] tfr_chr_tmp: C1/3050: 5A PHY C1/3051: DA PHX C1/3052: AD 78 7B LDA $7B78 C1/3055: 29 03 AND #$03 C1/3057: 0A ASL C1/3058: AA TAX C1/3059: 8B PHB C1/305A: C2 20 REP #$20 C1/305C: BF 22 E4 C2 LDA $C2E422,X C1/3060: AA TAX C1/3061: A0 00 80 LDY #$8000 C1/3064: A9 FF 1F LDA #$1FFF C1/3067: 54 7F 7F MVN $7F,$7F C1/306A: 7B TDC C1/306B: E2 20 SEP #$20 C1/306D: AB PLB C1/306E: FA PLX C1/306F: 7A PLY C1/3070: 60 RTS ; [ ] one_status_chr_set: C1/3071: DA PHX C1/3072: C2 20 REP #$20 C1/3074: BD BD 2E LDA $2EBD,X C1/3077: 85 10 STA $10 C1/3079: BD BF 2E LDA $2EBF,X C1/307C: 85 12 STA $12 C1/307E: 7B TDC C1/307F: E2 20 SEP #$20 C1/3081: A5 10 LDA $10 C1/3083: 10 04 BPL $3089 C1/3085: A9 01 LDA #$01 C1/3087: 80 35 BRA $30BE C1/3089: A5 11 LDA $11 C1/308B: 10 04 BPL $3091 C1/308D: A9 0A LDA #$0A C1/308F: 80 2D BRA $30BE C1/3091: 29 20 AND #$20 C1/3093: F0 04 BEQ $3099 C1/3095: A9 25 LDA #$25 C1/3097: 80 25 BRA $30BE C1/3099: A5 13 LDA $13 C1/309B: 29 10 AND #$10 C1/309D: F0 04 BEQ $30A3 C1/309F: A9 09 LDA #$09 C1/30A1: 80 1B BRA $30BE C1/30A3: A5 10 LDA $10 C1/30A5: 29 04 AND #$04 C1/30A7: F0 04 BEQ $30AD C1/30A9: A9 0A LDA #$0A C1/30AB: 80 11 BRA $30BE C1/30AD: A5 11 LDA $11 C1/30AF: 29 02 AND #$02 C1/30B1: F0 04 BEQ $30B7 C1/30B3: A9 0A LDA #$0A C1/30B5: 80 07 BRA $30BE C1/30B7: BD BB 61 LDA $61BB,X C1/30BA: D0 02 BNE $30BE C1/30BC: A9 06 LDA #$06 C1/30BE: 9D BF 61 STA $61BF,X C1/30C1: FA PLX C1/30C2: 60 RTS ; [ ] ; unused ??? C1/30C3: 5A PHY C1/30C4: DA PHX C1/30C5: 8B PHB C1/30C6: A9 7F LDA #$7F C1/30C8: 48 PHA C1/30C9: AB PLB C1/30CA: A2 00 80 LDX #$8000 C1/30CD: A0 00 01 LDY #$0100 C1/30D0: A9 08 LDA #$08 C1/30D2: 85 16 STA $16 C1/30D4: BD 01 00 LDA $0001,X C1/30D7: 1D 10 00 ORA $0010,X C1/30DA: 1D 11 00 ORA $0011,X C1/30DD: 49 FF EOR #$FF C1/30DF: 3D 00 00 AND $0000,X C1/30E2: 9D 00 00 STA $0000,X C1/30E5: 9E 01 00 STZ $0001,X C1/30E8: 9E 10 00 STZ $0010,X C1/30EB: 9E 11 00 STZ $0011,X C1/30EE: E8 INX C1/30EF: E8 INX C1/30F0: C6 16 DEC $16 C1/30F2: D0 E0 BNE $30D4 C1/30F4: C2 20 REP #$20 C1/30F6: 8A TXA C1/30F7: 18 CLC C1/30F8: 69 10 00 ADC #$0010 C1/30FB: AA TAX C1/30FC: 7B TDC C1/30FD: E2 20 SEP #$20 C1/30FF: 88 DEY C1/3100: D0 CE BNE $30D0 C1/3102: AB PLB C1/3103: FA PLX C1/3104: 7A PLY C1/3105: 60 RTS ; [ ] C1/3106: 5A PHY C1/3107: DA PHX C1/3108: AD 78 7B LDA $7B78 C1/310B: 29 03 AND #$03 C1/310D: 0A ASL C1/310E: AA TAX C1/310F: C2 20 REP #$20 C1/3111: BF 22 E4 C2 LDA $C2E422,X C1/3115: AA TAX C1/3116: 7B TDC C1/3117: E2 20 SEP #$20 C1/3119: 8B PHB C1/311A: A9 7F LDA #$7F C1/311C: 48 PHA C1/311D: AB PLB C1/311E: A0 00 01 LDY #$0100 C1/3121: A9 08 LDA #$08 C1/3123: 85 16 STA $16 C1/3125: BD 01 00 LDA $0001,X C1/3128: 1D 10 00 ORA $0010,X C1/312B: 1D 11 00 ORA $0011,X C1/312E: 49 FF EOR #$FF C1/3130: 3D 00 00 AND $0000,X C1/3133: 9D 00 00 STA $0000,X C1/3136: 9E 01 00 STZ $0001,X C1/3139: 9E 10 00 STZ $0010,X C1/313C: 9E 11 00 STZ $0011,X C1/313F: E8 INX C1/3140: E8 INX C1/3141: C6 16 DEC $16 C1/3143: D0 E0 BNE $3125 C1/3145: C2 20 REP #$20 C1/3147: 8A TXA C1/3148: 18 CLC C1/3149: 69 10 00 ADC #$0010 C1/314C: AA TAX C1/314D: 7B TDC C1/314E: E2 20 SEP #$20 C1/3150: 88 DEY C1/3151: D0 CE BNE $3121 C1/3153: AB PLB C1/3154: FA PLX C1/3155: 7A PLY C1/3156: 60 RTS ; [ Update Character Graphics for Status Changes ] one_poi_chr_set: C1/3157: 5A PHY C1/3158: DA PHX C1/3159: 48 PHA C1/315A: 98 TYA C1/315B: 85 10 STA $10 C1/315D: AD 78 7B LDA $7B78 ; character index C1/3160: 29 03 AND #$03 C1/3162: 0A ASL C1/3163: AA TAX C1/3164: C2 20 REP #$20 C1/3166: BF 22 E4 C2 LDA $C2E422,X ; pointer to character graphics buffer (+$7F0000) C1/316A: AA TAX C1/316B: 7B TDC C1/316C: E2 20 SEP #$20 C1/316E: 68 PLA C1/316F: 20 43 3D JSR $3D43 ; load character graphics/palette C1/3172: FA PLX C1/3173: 7A PLY C1/3174: 60 RTS ; [ Update Character Shadow Sprites ] shadow_set: C1/3175: 48 PHA C1/3176: 29 03 AND #$03 C1/3178: AA TAX C1/3179: BF 5B CF C2 LDA $C2CF5B,X ; pointer to character graphics data (+$7E2EAE) C1/317D: AA TAX C1/317E: 64 42 STZ $42 C1/3180: BD BD 61 LDA $61BD,X C1/3183: 85 43 STA $43 C1/3185: A5 71 LDA $71 C1/3187: C2 20 REP #$20 C1/3189: 0A ASL C1/318A: 0A ASL C1/318B: A8 TAY C1/318C: BD B7 61 LDA $61B7,X C1/318F: 18 CLC C1/3190: 7D C5 61 ADC $61C5,X C1/3193: 18 CLC C1/3194: 7D D4 61 ADC $61D4,X C1/3197: 85 36 STA $36 C1/3199: BD B9 61 LDA $61B9,X C1/319C: 18 CLC C1/319D: 69 10 00 ADC #$0010 C1/31A0: 7D C7 61 ADC $61C7,X C1/31A3: 85 38 STA $38 C1/31A5: A5 42 LDA $42 C1/31A7: 09 2C 0C ORA #$0C2C C1/31AA: 85 42 STA $42 C1/31AC: 7B TDC C1/31AD: E2 20 SEP #$20 C1/31AF: A5 36 LDA $36 C1/31B1: 99 00 03 STA $0300,Y C1/31B4: A5 37 LDA $37 C1/31B6: 29 01 AND #$01 C1/31B8: F0 0D BEQ $31C7 C1/31BA: B9 7F A1 LDA $A17F,Y C1/31BD: AA TAX C1/31BE: BD 00 05 LDA $0500,X C1/31C1: 19 7F A7 ORA $A77F,Y C1/31C4: 9D 00 05 STA $0500,X C1/31C7: A5 39 LDA $39 C1/31C9: 29 01 AND #$01 C1/31CB: F0 09 BEQ $31D6 C1/31CD: A5 38 LDA $38 C1/31CF: C9 E0 CMP #$E0 C1/31D1: B0 0B BCS $31DE C1/31D3: 4C DC 31 JMP $31DC C1/31D6: A5 38 LDA $38 C1/31D8: C9 97 CMP #$97 C1/31DA: 90 02 BCC $31DE C1/31DC: A9 97 LDA #$97 C1/31DE: 99 01 03 STA $0301,Y C1/31E1: C2 20 REP #$20 C1/31E3: A5 42 LDA $42 C1/31E5: 99 02 03 STA $0302,Y C1/31E8: 7B TDC C1/31E9: E2 20 SEP #$20 C1/31EB: E6 71 INC $71 C1/31ED: 68 PLA C1/31EE: 60 RTS ; [ ] ; A: armer_pat_set C1/31EF: 29 03 AND #$03 C1/31F1: 85 36 STA $36 C1/31F3: A5 0E LDA $0E ; frame counter C1/31F5: 29 03 AND #$03 C1/31F7: C5 36 CMP $36 C1/31F9: D0 6F BNE $326A C1/31FB: AA TAX C1/31FC: A8 TAY C1/31FD: AD EF E9 LDA $E9EF C1/3200: F0 07 BEQ $3209 ; branch if battle time is running C1/3202: A5 0E LDA $0E C1/3204: 4A LSR C1/3205: 4A LSR C1/3206: 4A LSR C1/3207: 80 04 BRA $320D C1/3209: A5 0E LDA $0E C1/320B: 4A LSR C1/320C: 4A LSR C1/320D: 29 03 AND #$03 C1/320F: 85 36 STA $36 C1/3211: BD CC 64 LDA $64CC,X C1/3214: 0A ASL C1/3215: 0A ASL C1/3216: 18 CLC C1/3217: 65 36 ADC $36 C1/3219: AA TAX C1/321A: BF 73 CF C2 LDA $C2CF73,X C1/321E: 0A ASL C1/321F: 0A ASL C1/3220: AA TAX C1/3221: C2 20 REP #$20 C1/3223: BF 5F CF C2 LDA $C2CF5F,X ; pointer to magitek armor graphics C1/3227: 8D BC 64 STA $64BC C1/322A: 18 CLC C1/322B: 69 80 00 ADC #$0080 C1/322E: 8D C0 64 STA $64C0 C1/3231: 18 CLC C1/3232: 69 80 01 ADC #$0180 C1/3235: 8D BE 64 STA $64BE C1/3238: 18 CLC C1/3239: 69 80 00 ADC #$0080 C1/323C: 8D C2 64 STA $64C2 C1/323F: A5 0E LDA $0E C1/3241: 29 03 00 AND #$0003 C1/3244: 0A ASL C1/3245: 0A ASL C1/3246: 0A ASL C1/3247: AA TAX C1/3248: BF 37 CF C2 LDA $C2CF37,X C1/324C: 8D C4 64 STA $64C4 C1/324F: BF 39 CF C2 LDA $C2CF39,X C1/3253: 8D C6 64 STA $64C6 C1/3256: BF 3B CF C2 LDA $C2CF3B,X C1/325A: 8D C8 64 STA $64C8 C1/325D: BF 3D CF C2 LDA $C2CF3D,X C1/3261: 8D CA 64 STA $64CA C1/3264: 7B TDC C1/3265: E2 20 SEP #$20 C1/3267: EE BB 64 INC $64BB C1/326A: 60 RTS set_armer_offset: C1/326B: DA PHX C1/326C: A5 0E LDA $0E C1/326E: 29 03 AND #$03 C1/3270: C5 32 CMP $32 C1/3272: D0 29 BNE $329D C1/3274: AA TAX C1/3275: A8 TAY C1/3276: A5 0E LDA $0E C1/3278: 4A LSR C1/3279: 4A LSR C1/327A: 85 36 STA $36 C1/327C: AD EF E9 LDA $E9EF ; branch if battle time is running C1/327F: F0 02 BEQ $3283 C1/3281: 46 36 LSR $36 C1/3283: A5 36 LDA $36 C1/3285: 29 03 AND #$03 C1/3287: 85 36 STA $36 C1/3289: BD CC 64 LDA $64CC,X C1/328C: 0A ASL C1/328D: 0A ASL C1/328E: 18 CLC C1/328F: 65 36 ADC $36 C1/3291: AA TAX C1/3292: BF 73 CF C2 LDA $C2CF73,X C1/3296: F0 02 BEQ $329A C1/3298: A9 01 LDA #$01 C1/329A: 99 D0 64 STA $64D0,Y C1/329D: FA PLX C1/329E: 60 RTS armer_obj_set: C1/329F: 48 PHA C1/32A0: 29 03 AND #$03 C1/32A2: 85 32 STA $32 C1/32A4: AA TAX C1/32A5: 20 6B 32 JSR $326B C1/32A8: BD D0 64 LDA $64D0,X C1/32AB: 85 3C STA $3C C1/32AD: BF 5B CF C2 LDA $C2CF5B,X ; pointer to character graphics data (+$7E2EAE) C1/32B1: AA TAX C1/32B2: 64 3A STZ $3A C1/32B4: BD C3 61 LDA $61C3,X ; current graphic action C1/32B7: C9 30 CMP #$30 C1/32B9: 90 04 BCC $32BF ; branch if not mirrored C1/32BB: A9 40 LDA #$40 C1/32BD: 85 3A STA $3A C1/32BF: BD BE 61 LDA $61BE,X C1/32C2: 29 C0 AND #$C0 C1/32C4: 45 3A EOR $3A C1/32C6: 1D BD 61 ORA $61BD,X C1/32C9: 29 F1 AND #$F1 C1/32CB: 0D D4 64 ORA $64D4 C1/32CE: 85 43 STA $43 C1/32D0: 64 42 STZ $42 C1/32D2: A5 71 LDA $71 C1/32D4: 3A DEC C1/32D5: 3A DEC C1/32D6: C2 20 REP #$20 C1/32D8: 0A ASL C1/32D9: 0A ASL C1/32DA: A8 TAY C1/32DB: 7B TDC C1/32DC: E2 20 SEP #$20 C1/32DE: B9 01 03 LDA $0301,Y C1/32E1: 18 CLC C1/32E2: 65 3C ADC $3C C1/32E4: 99 01 03 STA $0301,Y C1/32E7: B9 05 03 LDA $0305,Y C1/32EA: 18 CLC C1/32EB: 65 3C ADC $3C C1/32ED: 99 05 03 STA $0305,Y C1/32F0: A5 71 LDA $71 C1/32F2: C2 20 REP #$20 C1/32F4: 0A ASL C1/32F5: 0A ASL C1/32F6: A8 TAY C1/32F7: BD B7 61 LDA $61B7,X C1/32FA: 18 CLC C1/32FB: 7D C5 61 ADC $61C5,X C1/32FE: 18 CLC C1/32FF: 7D D4 61 ADC $61D4,X C1/3302: 85 36 STA $36 C1/3304: BD B9 61 LDA $61B9,X C1/3307: 18 CLC C1/3308: 7D C7 61 ADC $61C7,X C1/330B: 18 CLC C1/330C: 7D D2 61 ADC $61D2,X C1/330F: 85 38 STA $38 C1/3311: 7B TDC C1/3312: E2 20 SEP #$20 C1/3314: A5 32 LDA $32 C1/3316: 0A ASL C1/3317: 0A ASL C1/3318: AA TAX C1/3319: 18 CLC C1/331A: BF 83 CF C2 LDA $C2CF83,X C1/331E: 10 0C BPL $332C C1/3320: 65 36 ADC $36 C1/3322: 99 00 03 STA $0300,Y C1/3325: A5 37 LDA $37 C1/3327: 69 01 ADC #$01 C1/3329: 4C 35 33 JMP $3335 C1/332C: 65 36 ADC $36 C1/332E: 99 00 03 STA $0300,Y C1/3331: A5 37 LDA $37 C1/3333: 69 00 ADC #$00 C1/3335: 29 01 AND #$01 C1/3337: F0 13 BEQ $334C C1/3339: 86 3C STX $3C C1/333B: B9 7F A1 LDA $A17F,Y C1/333E: AA TAX C1/333F: BD 00 05 LDA $0500,X C1/3342: 19 7F A5 ORA $A57F,Y C1/3345: 9D 00 05 STA $0500,X C1/3348: A6 3C LDX $3C C1/334A: 80 11 BRA $335D C1/334C: 86 3C STX $3C C1/334E: B9 7F A1 LDA $A17F,Y C1/3351: AA TAX C1/3352: BD 00 05 LDA $0500,X C1/3355: 19 7F A3 ORA $A37F,Y C1/3358: 9D 00 05 STA $0500,X C1/335B: A6 3C LDX $3C C1/335D: 18 CLC C1/335E: BF 84 CF C2 LDA $C2CF84,X C1/3362: 10 0A BPL $336E C1/3364: 65 38 ADC $38 C1/3366: 85 3E STA $3E C1/3368: A5 39 LDA $39 C1/336A: 69 01 ADC #$01 C1/336C: 80 08 BRA $3376 C1/336E: 65 38 ADC $38 C1/3370: 85 3E STA $3E C1/3372: A5 39 LDA $39 C1/3374: 69 00 ADC #$00 C1/3376: 29 01 AND #$01 C1/3378: F0 09 BEQ $3383 C1/337A: A5 3E LDA $3E C1/337C: C9 E0 CMP #$E0 C1/337E: B0 0B BCS $338B C1/3380: 4C 89 33 JMP $3389 C1/3383: A5 3E LDA $3E C1/3385: C9 97 CMP #$97 C1/3387: 90 02 BCC $338B C1/3389: A9 97 LDA #$97 C1/338B: 99 01 03 STA $0301,Y C1/338E: C2 20 REP #$20 C1/3390: BF 85 CF C2 LDA $C2CF85,X C1/3394: 05 42 ORA $42 C1/3396: 99 02 03 STA $0302,Y C1/3399: 7B TDC C1/339A: E2 20 SEP #$20 C1/339C: E6 71 INC $71 C1/339E: 68 PLA C1/339F: 20 EF 31 JSR $31EF C1/33A2: 60 RTS ; [ Update Character Status Sprites ] status_obj_set: C1/33A3: 48 PHA C1/33A4: 29 03 AND #$03 C1/33A6: AA TAX C1/33A7: 64 42 STZ $42 C1/33A9: BF 5B CF C2 LDA $C2CF5B,X ; pointer to character graphics data (+$7E2EAE) C1/33AD: AA TAX C1/33AE: BD CF 61 LDA $61CF,X C1/33B1: D0 02 BNE $33B5 C1/33B3: 68 PLA C1/33B4: 60 RTS C1/33B5: 64 3A STZ $3A C1/33B7: BD C3 61 LDA $61C3,X C1/33BA: C9 30 CMP #$30 C1/33BC: 90 04 BCC $33C2 C1/33BE: A9 40 LDA #$40 C1/33C0: 85 3A STA $3A C1/33C2: BD C3 61 LDA $61C3,X ; current graphic action C1/33C5: C9 14 CMP #$14 C1/33C7: F0 09 BEQ $33D2 ; branch if kneeling C1/33C9: C9 44 CMP #$44 C1/33CB: F0 05 BEQ $33D2 ; branch if kneeling C1/33CD: 64 3C STZ $3C C1/33CF: 4C D6 33 JMP $33D6 C1/33D2: A9 1C LDA #$1C ; y-offset for kneeling character status sprite C1/33D4: 85 3C STA $3C C1/33D6: 64 32 STZ $32 C1/33D8: BD BE 61 LDA $61BE,X C1/33DB: 29 C0 AND #$C0 C1/33DD: 45 3A EOR $3A C1/33DF: 1D BD 61 ORA $61BD,X C1/33E2: 85 43 STA $43 C1/33E4: 29 40 AND #$40 C1/33E6: F0 05 BEQ $33ED C1/33E8: BD CF 61 LDA $61CF,X C1/33EB: 85 32 STA $32 C1/33ED: 20 A5 34 JSR $34A5 C1/33F0: A5 71 LDA $71 C1/33F2: C2 20 REP #$20 C1/33F4: 0A ASL C1/33F5: 0A ASL C1/33F6: A8 TAY C1/33F7: BD B7 61 LDA $61B7,X C1/33FA: 18 CLC C1/33FB: 7D C5 61 ADC $61C5,X C1/33FE: 18 CLC C1/33FF: 7D D4 61 ADC $61D4,X C1/3402: 85 36 STA $36 C1/3404: BD B9 61 LDA $61B9,X C1/3407: 18 CLC C1/3408: 7D C7 61 ADC $61C7,X C1/340B: 7D D2 61 ADC $61D2,X C1/340E: 65 38 ADC $38 C1/3410: 85 38 STA $38 C1/3412: DA PHX C1/3413: A5 32 LDA $32 C1/3415: 29 FF 00 AND #$00FF C1/3418: 0A ASL C1/3419: AA TAX C1/341A: BF CA E3 C2 LDA $C2E3CA,X ; x offsets for character status sprites C1/341E: 18 CLC C1/341F: 65 36 ADC $36 C1/3421: 85 36 STA $36 C1/3423: FA PLX C1/3424: 7B TDC C1/3425: E2 20 SEP #$20 C1/3427: BD CF 61 LDA $61CF,X C1/342A: 3A DEC C1/342B: 0A ASL C1/342C: 0A ASL C1/342D: 18 CLC C1/342E: 65 3C ADC $3C C1/3430: AA TAX C1/3431: 18 CLC C1/3432: BF DA E3 C2 LDA $C2E3DA,X ; x position for character status sprites C1/3436: 10 0C BPL $3444 C1/3438: 65 36 ADC $36 C1/343A: 99 00 03 STA $0300,Y C1/343D: A5 37 LDA $37 C1/343F: 69 01 ADC #$01 C1/3441: 4C 4D 34 JMP $344D C1/3444: 65 36 ADC $36 C1/3446: 99 00 03 STA $0300,Y C1/3449: A5 37 LDA $37 C1/344B: 69 00 ADC #$00 C1/344D: 29 01 AND #$01 C1/344F: F0 11 BEQ $3462 C1/3451: 86 3C STX $3C C1/3453: B9 7F A1 LDA $A17F,Y C1/3456: AA TAX C1/3457: BD 00 05 LDA $0500,X C1/345A: 19 7F A7 ORA $A77F,Y C1/345D: 9D 00 05 STA $0500,X C1/3460: A6 3C LDX $3C C1/3462: 18 CLC C1/3463: BF DB E3 C2 LDA $C2E3DB,X ; y position for character status sprites C1/3467: 10 0A BPL $3473 C1/3469: 65 38 ADC $38 C1/346B: 85 3E STA $3E C1/346D: A5 39 LDA $39 C1/346F: 69 01 ADC #$01 C1/3471: 80 08 BRA $347B C1/3473: 65 38 ADC $38 C1/3475: 85 3E STA $3E C1/3477: A5 39 LDA $39 C1/3479: 69 00 ADC #$00 C1/347B: 29 01 AND #$01 C1/347D: F0 09 BEQ $3488 C1/347F: A5 3E LDA $3E C1/3481: C9 E0 CMP #$E0 C1/3483: B0 0B BCS $3490 C1/3485: 4C 8E 34 JMP $348E C1/3488: A5 3E LDA $3E C1/348A: C9 97 CMP #$97 C1/348C: 90 02 BCC $3490 C1/348E: A9 97 LDA #$97 C1/3490: 99 01 03 STA $0301,Y C1/3493: C2 20 REP #$20 C1/3495: BF DC E3 C2 LDA $C2E3DC,X ; sprite data for character status sprites C1/3499: 05 42 ORA $42 C1/349B: 99 02 03 STA $0302,Y C1/349E: 7B TDC C1/349F: E2 20 SEP #$20 C1/34A1: E6 71 INC $71 C1/34A3: 68 PLA C1/34A4: 60 RTS ; [ ] get_yoffset: C1/34A5: 64 38 STZ $38 C1/34A7: 64 39 STZ $39 C1/34A9: AD BA 64 LDA $64BA C1/34AC: F0 08 BEQ $34B6 C1/34AE: DA PHX C1/34AF: A2 F4 FF LDX #$FFF4 C1/34B2: 86 38 STX $38 C1/34B4: FA PLX C1/34B5: 60 RTS C1/34B6: BD C4 2E LDA $2EC4,X C1/34B9: 10 1F BPL $34DA C1/34BB: BD D1 61 LDA $61D1,X C1/34BE: D0 1A BNE $34DA C1/34C0: BD C1 61 LDA $61C1,X C1/34C3: D0 15 BNE $34DA C1/34C5: DA PHX C1/34C6: BD C2 61 LDA $61C2,X C1/34C9: 29 38 AND #$38 C1/34CB: 4A LSR C1/34CC: 4A LSR C1/34CD: 4A LSR C1/34CE: AA TAX C1/34CF: A9 FF LDA #$FF C1/34D1: 85 39 STA $39 C1/34D3: BF A2 E3 C2 LDA $C2E3A2,X ; +$38 = y offset for float status C1/34D7: 85 38 STA $38 C1/34D9: FA PLX C1/34DA: 60 RTS ; [ Update Character Sprites ] player_one_oam_set: C1/34DB: 48 PHA C1/34DC: 29 03 AND #$03 C1/34DE: A8 TAY C1/34DF: AA TAX C1/34E0: BF 01 1A C1 LDA $C11A01,X C1/34E4: 85 36 STA $36 C1/34E6: BF 57 CF C2 LDA $C2CF57,X C1/34EA: 85 40 STA $40 C1/34EC: BF 5B CF C2 LDA $C2CF5B,X ; pointer to character graphics data (+$7E2EAE) C1/34F0: AA TAX C1/34F1: AD 69 7B LDA $7B69 C1/34F4: F0 03 BEQ $34F9 C1/34F6: DE C2 61 DEC $61C2,X C1/34F9: 64 44 STZ $44 C1/34FB: 64 45 STZ $45 C1/34FD: BD BC 61 LDA $61BC,X C1/3500: 1D BD 61 ORA $61BD,X C1/3503: 85 42 STA $42 C1/3505: AD 9A 62 LDA $629A C1/3508: D0 3F BNE $3549 C1/350A: AD B8 EC LDA $ECB8 C1/350D: C9 21 CMP #$21 C1/350F: F0 05 BEQ $3516 C1/3511: AD 45 2F LDA $2F45 C1/3514: F0 33 BEQ $3549 C1/3516: B9 A5 62 LDA $62A5,Y C1/3519: D0 2E BNE $3549 C1/351B: B9 A0 62 LDA $62A0,Y C1/351E: D0 29 BNE $3549 C1/3520: AD 47 2F LDA $2F47 C1/3523: 25 36 AND $36 C1/3525: D0 22 BNE $3549 C1/3527: BD C1 2E LDA $2EC1,X C1/352A: 29 C2 AND #$C2 C1/352C: D0 1B BNE $3549 C1/352E: BD C2 2E LDA $2EC2,X C1/3531: 29 80 AND #$80 C1/3533: D0 14 BNE $3549 C1/3535: BD C3 2E LDA $2EC3,X C1/3538: 29 10 AND #$10 C1/353A: D0 0D BNE $3549 C1/353C: BD C4 2E LDA $2EC4,X C1/353F: 29 08 AND #$08 C1/3541: D0 06 BNE $3549 C1/3543: A9 0C LDA #$0C C1/3545: 85 36 STA $36 C1/3547: 80 16 BRA $355F C1/3549: BD C1 61 LDA $61C1,X C1/354C: D0 47 BNE $3595 C1/354E: BD C0 61 LDA $61C0,X C1/3551: D0 03 BNE $3556 C1/3553: BD BF 61 LDA $61BF,X C1/3556: 0A ASL C1/3557: 0A ASL C1/3558: 85 36 STA $36 C1/355A: BD D0 61 LDA $61D0,X C1/355D: F0 05 BEQ $3564 C1/355F: BD C2 61 LDA $61C2,X C1/3562: 80 04 BRA $3568 C1/3564: BD C2 61 LDA $61C2,X C1/3567: 4A LSR C1/3568: 4A LSR C1/3569: 4A LSR C1/356A: 85 38 STA $38 C1/356C: AD BA 64 LDA $64BA C1/356F: F0 07 BEQ $3578 C1/3571: AD EF E9 LDA $E9EF ; branch if battle time is running C1/3574: F0 02 BEQ $3578 C1/3576: 46 38 LSR $38 C1/3578: A5 38 LDA $38 C1/357A: 29 03 AND #$03 C1/357C: 18 CLC C1/357D: 65 36 ADC $36 C1/357F: 9B TXY C1/3580: AA TAX C1/3581: BF A9 C6 C2 LDA $C2C6A9,X ; frames for animated graphic actions C1/3585: 85 36 STA $36 C1/3587: 29 1F AND #$1F C1/3589: C9 07 CMP #$07 C1/358B: D0 05 BNE $3592 C1/358D: A6 44 LDX $44 C1/358F: CA DEX C1/3590: 86 44 STX $44 C1/3592: BB TYX C1/3593: A5 36 LDA $36 C1/3595: 9D C3 61 STA $61C3,X ; set current graphic action C1/3598: 85 36 STA $36 C1/359A: 64 38 STZ $38 C1/359C: C9 30 CMP #$30 C1/359E: 90 09 BCC $35A9 C1/35A0: 38 SEC C1/35A1: E9 30 SBC #$30 C1/35A3: 85 36 STA $36 C1/35A5: A9 40 LDA #$40 C1/35A7: 85 38 STA $38 C1/35A9: 64 3A STZ $3A C1/35AB: A5 36 LDA $36 C1/35AD: D0 04 BNE $35B3 C1/35AF: A9 08 LDA #$08 C1/35B1: 85 3A STA $3A C1/35B3: BD BE 61 LDA $61BE,X C1/35B6: 29 C0 AND #$C0 C1/35B8: 45 38 EOR $38 C1/35BA: 05 42 ORA $42 C1/35BC: 85 42 STA $42 C1/35BE: 29 C0 AND #$C0 C1/35C0: 4A LSR C1/35C1: 4A LSR C1/35C2: 05 3A ORA $3A C1/35C4: 85 3A STA $3A C1/35C6: 8D DA E9 STA $E9DA C1/35C9: 64 36 STZ $36 C1/35CB: 64 37 STZ $37 C1/35CD: AD 69 7B LDA $7B69 C1/35D0: F0 10 BEQ $35E2 C1/35D2: A5 42 LDA $42 C1/35D4: 29 40 AND #$40 C1/35D6: F0 05 BEQ $35DD C1/35D8: A0 F8 FF LDY #$FFF8 C1/35DB: 80 03 BRA $35E0 C1/35DD: A0 08 00 LDY #$0008 C1/35E0: 84 36 STY $36 C1/35E2: 20 A5 34 JSR $34A5 C1/35E5: FE C2 61 INC $61C2,X C1/35E8: A5 71 LDA $71 C1/35EA: C2 20 REP #$20 C1/35EC: 0A ASL C1/35ED: 0A ASL C1/35EE: A8 TAY C1/35EF: BD B7 61 LDA $61B7,X C1/35F2: 18 CLC C1/35F3: 7D D4 61 ADC $61D4,X C1/35F6: 18 CLC C1/35F7: 7D C5 61 ADC $61C5,X C1/35FA: 18 CLC C1/35FB: 65 36 ADC $36 C1/35FD: 85 36 STA $36 C1/35FF: BD B9 61 LDA $61B9,X C1/3602: 18 CLC C1/3603: 7D C7 61 ADC $61C7,X C1/3606: 7D D2 61 ADC $61D2,X C1/3609: 65 38 ADC $38 C1/360B: 65 44 ADC $44 C1/360D: 85 38 STA $38 C1/360F: 7B TDC C1/3610: E2 20 SEP #$20 C1/3612: A5 3A LDA $3A C1/3614: AA TAX C1/3615: A9 02 LDA #$02 C1/3617: 85 41 STA $41 C1/3619: 18 CLC C1/361A: BF A3 CE C2 LDA $C2CEA3,X C1/361E: 10 0C BPL $362C C1/3620: 65 36 ADC $36 C1/3622: 99 00 03 STA $0300,Y C1/3625: A5 37 LDA $37 C1/3627: 69 01 ADC #$01 C1/3629: 4C 35 36 JMP $3635 C1/362C: 65 36 ADC $36 C1/362E: 99 00 03 STA $0300,Y C1/3631: A5 37 LDA $37 C1/3633: 69 00 ADC #$00 C1/3635: 29 01 AND #$01 C1/3637: F0 11 BEQ $364A C1/3639: 86 3C STX $3C C1/363B: B9 7F A1 LDA $A17F,Y C1/363E: AA TAX C1/363F: BD 00 05 LDA $0500,X C1/3642: 19 7F A7 ORA $A77F,Y C1/3645: 9D 00 05 STA $0500,X C1/3648: A6 3C LDX $3C C1/364A: C8 INY C1/364B: E8 INX C1/364C: 18 CLC C1/364D: BF A3 CE C2 LDA $C2CEA3,X C1/3651: 10 0B BPL $365E C1/3653: 65 38 ADC $38 C1/3655: 85 3E STA $3E C1/3657: A5 39 LDA $39 C1/3659: 69 01 ADC #$01 C1/365B: 4C 66 36 JMP $3666 C1/365E: 65 38 ADC $38 C1/3660: 85 3E STA $3E C1/3662: A5 39 LDA $39 C1/3664: 69 00 ADC #$00 C1/3666: 29 01 AND #$01 C1/3668: F0 09 BEQ $3673 C1/366A: A5 3E LDA $3E C1/366C: C9 E0 CMP #$E0 C1/366E: B0 0B BCS $367B C1/3670: 4C 79 36 JMP $3679 C1/3673: A5 3E LDA $3E C1/3675: C9 97 CMP #$97 C1/3677: 90 02 BCC $367B C1/3679: A9 97 LDA #$97 C1/367B: 99 00 03 STA $0300,Y C1/367E: C8 INY C1/367F: E8 INX C1/3680: BF A3 CE C2 LDA $C2CEA3,X C1/3684: 18 CLC C1/3685: 65 40 ADC $40 C1/3687: 99 00 03 STA $0300,Y C1/368A: C8 INY C1/368B: E8 INX C1/368C: BF A3 CE C2 LDA $C2CEA3,X C1/3690: 05 42 ORA $42 C1/3692: 99 00 03 STA $0300,Y C1/3695: C8 INY C1/3696: E8 INX C1/3697: E6 71 INC $71 C1/3699: C6 41 DEC $41 C1/369B: F0 03 BEQ $36A0 C1/369D: 4C 19 36 JMP $3619 C1/36A0: 68 PLA C1/36A1: 60 RTS ; [ Update Character Graphics ] all_pat_set: C1/36A2: 7B TDC C1/36A3: 64 2C STZ $2C C1/36A5: AA TAX C1/36A6: 48 PHA C1/36A7: BD CE 61 LDA $61CE,X C1/36AA: D0 2B BNE $36D7 C1/36AC: BD C2 61 LDA $61C2,X C1/36AF: 3A DEC C1/36B0: 29 07 AND #$07 C1/36B2: F0 08 BEQ $36BC C1/36B4: BD C3 61 LDA $61C3,X C1/36B7: DD C4 61 CMP $61C4,X C1/36BA: F0 1B BEQ $36D7 ; branch if character graphic action has not changed C1/36BC: BD C3 61 LDA $61C3,X C1/36BF: 9D C4 61 STA $61C4,X C1/36C2: C9 30 CMP #$30 C1/36C4: 90 03 BCC $36C9 C1/36C6: 38 SEC C1/36C7: E9 30 SBC #$30 C1/36C9: 85 37 STA $37 C1/36CB: BD CD 61 LDA $61CD,X C1/36CE: 85 3A STA $3A C1/36D0: 64 3B STZ $3B C1/36D2: A5 2C LDA $2C C1/36D4: 20 E2 36 JSR $36E2 C1/36D7: E6 2C INC $2C C1/36D9: 68 PLA C1/36DA: 18 CLC C1/36DB: 69 20 ADC #$20 C1/36DD: C9 80 CMP #$80 C1/36DF: D0 C4 BNE $36A5 C1/36E1: 60 RTS ; [ ] ; A: character slot ; $37: graphic action ; $3A: counter for vanish palette player_pat_chr_set: C1/36E2: 48 PHA C1/36E3: 85 3C STA $3C C1/36E5: A5 3A LDA $3A C1/36E7: D0 05 BNE $36EE ; branch if vanish palette counter is active C1/36E9: 20 47 37 JSR $3747 C1/36EC: 80 0A BRA $36F8 C1/36EE: 4A LSR C1/36EF: 4A LSR C1/36F0: 4A LSR C1/36F1: 29 03 AND #$03 C1/36F3: 0A ASL C1/36F4: AA TAX C1/36F5: FC 3F 37 JSR ($373F,X) C1/36F8: 68 PLA C1/36F9: 29 03 AND #$03 C1/36FB: AA TAX C1/36FC: BD 2A 20 LDA $202A,X ; condemned number C1/36FF: F0 3D BEQ $373E ; return if not visible C1/3701: 8A TXA C1/3702: 0A ASL C1/3703: AA TAX C1/3704: 8B PHB C1/3705: A9 7F LDA #$7F C1/3707: 48 PHA C1/3708: AB PLB C1/3709: C2 20 REP #$20 C1/370B: BF D2 E9 7E LDA $7EE9D2,X ; pointer to condemned numeral graphics C1/370F: A8 TAY C1/3710: BF 1A E4 C2 LDA $C2E41A,X ; pointer to character graphics buffer C1/3714: AA TAX C1/3715: A9 08 00 LDA #$0008 C1/3718: 85 3A STA $3A C1/371A: B9 00 00 LDA $0000,Y C1/371D: 9D 00 00 STA $0000,X C1/3720: B9 10 00 LDA $0010,Y C1/3723: 9D 10 00 STA $0010,X C1/3726: B9 20 00 LDA $0020,Y C1/3729: 9D 20 00 STA $0020,X C1/372C: B9 30 00 LDA $0030,Y C1/372F: 9D 30 00 STA $0030,X C1/3732: C8 INY C1/3733: C8 INY C1/3734: E8 INX C1/3735: E8 INX C1/3736: C6 3A DEC $3A C1/3738: D0 E0 BNE $371A C1/373A: 7B TDC C1/373B: E2 20 SEP #$20 C1/373D: AB PLB C1/373E: 60 RTS ; ??? jump table (one per character) super_jmp: C1/373F: .DW $379A, $37E7, $3834, $3881 ; [ ] normal_chr_set: C1/3747: A5 3C LDA $3C ; character slot C1/3749: 0A ASL C1/374A: AA TAX C1/374B: 8B PHB C1/374C: 64 36 STZ $36 C1/374E: C2 20 REP #$20 C1/3750: BF 1A E4 C2 LDA $C2E41A,X ; pointer to character graphics buffer C1/3754: 85 38 STA $38 C1/3756: A8 TAY C1/3757: BF 22 E4 C2 LDA $C2E422,X ; pointer to character sprite sheet buffer C1/375B: 18 CLC C1/375C: 65 36 ADC $36 C1/375E: AA TAX C1/375F: A9 3F 00 LDA #$003F C1/3762: 54 7F 7F MVN $7F,$7F C1/3765: A5 38 LDA $38 C1/3767: 18 CLC C1/3768: 69 00 02 ADC #$0200 C1/376B: A8 TAY C1/376C: A9 3F 00 LDA #$003F C1/376F: 54 7F 7F MVN $7F,$7F C1/3772: A5 38 LDA $38 C1/3774: 18 CLC C1/3775: 69 40 00 ADC #$0040 C1/3778: A8 TAY C1/3779: A9 3F 00 LDA #$003F C1/377C: 54 7F 7F MVN $7F,$7F C1/377F: AF BA 64 7E LDA $7E64BA C1/3783: 29 FF 00 AND #$00FF C1/3786: D0 0D BNE $3795 C1/3788: A5 38 LDA $38 C1/378A: 18 CLC C1/378B: 69 40 02 ADC #$0240 C1/378E: A8 TAY C1/378F: A9 3F 00 LDA #$003F C1/3792: 54 7F 7F MVN $7F,$7F C1/3795: 7B TDC C1/3796: E2 20 SEP #$20 C1/3798: AB PLB C1/3799: 60 RTS ; [ ] C1/379A: A5 3C LDA $3C C1/379C: 0A ASL C1/379D: AA TAX C1/379E: 8B PHB C1/379F: 64 36 STZ $36 C1/37A1: C2 20 REP #$20 C1/37A3: BF 12 E4 C2 LDA $C2E412,X C1/37A7: 85 3C STA $3C C1/37A9: BF 1A E4 C2 LDA $C2E41A,X ; pointer to character graphics buffer C1/37AD: 85 38 STA $38 C1/37AF: A8 TAY C1/37B0: BF 22 E4 C2 LDA $C2E422,X ; pointer to character sprite sheet buffer C1/37B4: 18 CLC C1/37B5: 65 36 ADC $36 C1/37B7: AA TAX C1/37B8: A9 3F 00 LDA #$003F C1/37BB: 54 7F 7F MVN $7F,$7F C1/37BE: A5 38 LDA $38 C1/37C0: 18 CLC C1/37C1: 69 00 02 ADC #$0200 C1/37C4: A8 TAY C1/37C5: A9 3F 00 LDA #$003F C1/37C8: 54 7F 7F MVN $7F,$7F C1/37CB: A5 38 LDA $38 C1/37CD: 18 CLC C1/37CE: 69 40 00 ADC #$0040 C1/37D1: A8 TAY C1/37D2: A9 3F 00 LDA #$003F C1/37D5: 54 7F 7F MVN $7F,$7F C1/37D8: A5 38 LDA $38 C1/37DA: 18 CLC C1/37DB: 69 40 02 ADC #$0240 C1/37DE: A8 TAY C1/37DF: 20 D2 38 JSR $38D2 C1/37E2: 7B TDC C1/37E3: E2 20 SEP #$20 C1/37E5: AB PLB C1/37E6: 60 RTS C1/37E7: A5 3C LDA $3C C1/37E9: 0A ASL C1/37EA: AA TAX C1/37EB: 8B PHB C1/37EC: 64 36 STZ $36 C1/37EE: C2 20 REP #$20 C1/37F0: BF 12 E4 C2 LDA $C2E412,X C1/37F4: 85 3C STA $3C C1/37F6: BF 1A E4 C2 LDA $C2E41A,X ; pointer to character graphics buffer C1/37FA: 85 38 STA $38 C1/37FC: A8 TAY C1/37FD: BF 22 E4 C2 LDA $C2E422,X ; pointer to character sprite sheet buffer C1/3801: 18 CLC C1/3802: 65 36 ADC $36 C1/3804: AA TAX C1/3805: A9 3F 00 LDA #$003F C1/3808: 54 7F 7F MVN $7F,$7F C1/380B: A5 38 LDA $38 C1/380D: 18 CLC C1/380E: 69 00 02 ADC #$0200 C1/3811: A8 TAY C1/3812: A9 3F 00 LDA #$003F C1/3815: 54 7F 7F MVN $7F,$7F C1/3818: A5 38 LDA $38 C1/381A: 18 CLC C1/381B: 69 40 00 ADC #$0040 C1/381E: A8 TAY C1/381F: 20 D2 38 JSR $38D2 C1/3822: A5 38 LDA $38 C1/3824: 18 CLC C1/3825: 69 40 02 ADC #$0240 C1/3828: A8 TAY C1/3829: A9 3F 00 LDA #$003F C1/382C: 54 7F 7F MVN $7F,$7F C1/382F: 7B TDC C1/3830: E2 20 SEP #$20 C1/3832: AB PLB C1/3833: 60 RTS C1/3834: A5 3C LDA $3C C1/3836: 0A ASL C1/3837: AA TAX C1/3838: 8B PHB C1/3839: 64 36 STZ $36 C1/383B: C2 20 REP #$20 C1/383D: BF 12 E4 C2 LDA $C2E412,X C1/3841: 85 3C STA $3C C1/3843: BF 1A E4 C2 LDA $C2E41A,X ; pointer to character graphics buffer C1/3847: 85 38 STA $38 C1/3849: A8 TAY C1/384A: BF 22 E4 C2 LDA $C2E422,X C1/384E: 18 CLC C1/384F: 65 36 ADC $36 C1/3851: AA TAX C1/3852: A9 3F 00 LDA #$003F C1/3855: 54 7F 7F MVN $7F,$7F C1/3858: A5 38 LDA $38 C1/385A: 18 CLC C1/385B: 69 00 02 ADC #$0200 C1/385E: A8 TAY C1/385F: 20 D2 38 JSR $38D2 C1/3862: A5 38 LDA $38 C1/3864: 18 CLC C1/3865: 69 40 00 ADC #$0040 C1/3868: A8 TAY C1/3869: A9 3F 00 LDA #$003F C1/386C: 54 7F 7F MVN $7F,$7F C1/386F: A5 38 LDA $38 C1/3871: 18 CLC C1/3872: 69 40 02 ADC #$0240 C1/3875: A8 TAY C1/3876: A9 3F 00 LDA #$003F C1/3879: 54 7F 7F MVN $7F,$7F C1/387C: 7B TDC C1/387D: E2 20 SEP #$20 C1/387F: AB PLB C1/3880: 60 RTS C1/3881: A5 3C LDA $3C C1/3883: 0A ASL C1/3884: AA TAX C1/3885: 8B PHB C1/3886: A9 7F LDA #$7F C1/3888: 48 PHA C1/3889: AB PLB C1/388A: 64 36 STZ $36 C1/388C: C2 20 REP #$20 C1/388E: BF 12 E4 C2 LDA $C2E412,X C1/3892: 85 3C STA $3C C1/3894: BF 1A E4 C2 LDA $C2E41A,X ; pointer to character graphics buffer C1/3898: 85 38 STA $38 C1/389A: A8 TAY C1/389B: BF 22 E4 C2 LDA $C2E422,X ; pointer to character sprite sheet buffer C1/389F: 18 CLC C1/38A0: 65 36 ADC $36 C1/38A2: AA TAX C1/38A3: 20 D2 38 JSR $38D2 C1/38A6: A5 38 LDA $38 C1/38A8: 18 CLC C1/38A9: 69 00 02 ADC #$0200 C1/38AC: A8 TAY C1/38AD: A9 3F 00 LDA #$003F C1/38B0: 54 7F 7F MVN $7F,$7F C1/38B3: A5 38 LDA $38 C1/38B5: 18 CLC C1/38B6: 69 40 00 ADC #$0040 C1/38B9: A8 TAY C1/38BA: A9 3F 00 LDA #$003F C1/38BD: 54 7F 7F MVN $7F,$7F C1/38C0: A5 38 LDA $38 C1/38C2: 18 CLC C1/38C3: 69 40 02 ADC #$0240 C1/38C6: A8 TAY C1/38C7: A9 3F 00 LDA #$003F C1/38CA: 54 7F 7F MVN $7F,$7F C1/38CD: 7B TDC C1/38CE: E2 20 SEP #$20 C1/38D0: AB PLB C1/38D1: 60 RTS ; [ ] super_level_tfr: C1/38D2: DA PHX C1/38D3: A5 3A LDA $3A C1/38D5: 29 07 00 AND #$0007 C1/38D8: 85 3A STA $3A C1/38DA: A9 08 00 LDA #$0008 C1/38DD: 38 SEC C1/38DE: E5 3A SBC $3A C1/38E0: 85 3E STA $3E C1/38E2: BD 00 00 LDA $0000,X C1/38E5: 99 00 00 STA $0000,Y C1/38E8: BD 10 00 LDA $0010,X C1/38EB: 99 10 00 STA $0010,Y C1/38EE: BD 20 00 LDA $0020,X C1/38F1: 99 20 00 STA $0020,Y C1/38F4: BD 30 00 LDA $0030,X C1/38F7: 99 30 00 STA $0030,Y C1/38FA: E8 INX C1/38FB: E8 INX C1/38FC: C8 INY C1/38FD: C8 INY C1/38FE: C6 3E DEC $3E C1/3900: D0 E0 BNE $38E2 C1/3902: A5 3A LDA $3A C1/3904: F0 25 BEQ $392B C1/3906: 8A TXA C1/3907: 18 CLC C1/3908: 65 3C ADC $3C C1/390A: AA TAX C1/390B: BD 00 00 LDA $0000,X C1/390E: 99 00 00 STA $0000,Y C1/3911: BD 10 00 LDA $0010,X C1/3914: 99 10 00 STA $0010,Y C1/3917: BD 20 00 LDA $0020,X C1/391A: 99 20 00 STA $0020,Y C1/391D: BD 30 00 LDA $0030,X C1/3920: 99 30 00 STA $0030,Y C1/3923: E8 INX C1/3924: E8 INX C1/3925: C8 INY C1/3926: C8 INY C1/3927: C6 3A DEC $3A C1/3929: D0 E0 BNE $390B C1/392B: 68 PLA C1/392C: 18 CLC C1/392D: 65 3C ADC $3C C1/392F: 18 CLC C1/3930: 69 40 00 ADC #$0040 C1/3933: AA TAX C1/3934: 60 RTS ; [ ] one_mon_obj_set: C1/3935: AD D2 88 LDA $88D2 C1/3938: A8 TAY C1/3939: 0A ASL C1/393A: AA TAX C1/393B: 86 2E STX $2E C1/393D: B9 B9 88 LDA $88B9,Y C1/3940: 85 2C STA $2C C1/3942: BD DB 80 LDA $80DB,X C1/3945: 1D DC 80 ORA $80DC,X C1/3948: 3D E8 80 AND $80E8,X C1/394B: 85 3D STA $3D C1/394D: 64 3C STZ $3C C1/394F: A9 C2 LDA #$C2 C1/3951: 85 38 STA $38 C1/3953: BD F3 80 LDA $80F3,X C1/3956: 5D 7E 61 EOR $617E,X C1/3959: 29 03 AND #$03 C1/395B: 0A ASL C1/395C: 0A ASL C1/395D: AA TAX C1/395E: C2 20 REP #$20 C1/3960: A5 3C LDA $3C C1/3962: 5F 64 C4 C2 EOR $C2C464,X C1/3966: 85 3C STA $3C C1/3968: BF 66 C4 C2 LDA $C2C466,X C1/396C: 85 36 STA $36 C1/396E: A4 2E LDY $2E C1/3970: BB TYX C1/3971: B7 36 LDA [$36],Y C1/3973: A8 TAY C1/3974: BD C3 80 LDA $80C3,X C1/3977: 85 38 STA $38 C1/3979: BD CF 80 LDA $80CF,X C1/397C: 85 3A STA $3A C1/397E: A5 60 LDA $60 C1/3980: 29 FF 00 AND #$00FF C1/3983: 0A ASL C1/3984: 0A ASL C1/3985: AA TAX C1/3986: 7B TDC C1/3987: E2 20 SEP #$20 C1/3989: 18 CLC C1/398A: B9 00 00 LDA $0000,Y C1/398D: 10 10 BPL $399F C1/398F: 65 38 ADC $38 C1/3991: 9D 00 03 STA $0300,X C1/3994: A5 39 LDA $39 C1/3996: 69 01 ADC #$01 C1/3998: 29 01 AND #$01 C1/399A: D0 24 BNE $39C0 C1/399C: 4C AC 39 JMP $39AC C1/399F: 65 38 ADC $38 C1/39A1: 9D 00 03 STA $0300,X C1/39A4: A5 39 LDA $39 C1/39A6: 69 00 ADC #$00 C1/39A8: 29 01 AND #$01 C1/39AA: D0 14 BNE $39C0 C1/39AC: 84 44 STY $44 C1/39AE: BD 7F A1 LDA $A17F,X C1/39B1: A8 TAY C1/39B2: B9 00 05 LDA $0500,Y C1/39B5: 1D 7F A3 ORA $A37F,X C1/39B8: 99 00 05 STA $0500,Y C1/39BB: A4 44 LDY $44 C1/39BD: 4C D1 39 JMP $39D1 C1/39C0: 84 44 STY $44 C1/39C2: BD 7F A1 LDA $A17F,X C1/39C5: A8 TAY C1/39C6: B9 00 05 LDA $0500,Y C1/39C9: 1D 7F A5 ORA $A57F,X C1/39CC: 99 00 05 STA $0500,Y C1/39CF: A4 44 LDY $44 C1/39D1: C8 INY C1/39D2: E8 INX C1/39D3: B9 00 00 LDA $0000,Y C1/39D6: 10 10 BPL $39E8 C1/39D8: 18 CLC C1/39D9: 65 3A ADC $3A C1/39DB: 85 3E STA $3E C1/39DD: A5 3B LDA $3B C1/39DF: 69 01 ADC #$01 C1/39E1: 29 01 AND #$01 C1/39E3: F0 19 BEQ $39FE C1/39E5: 4C F5 39 JMP $39F5 C1/39E8: 18 CLC C1/39E9: 65 3A ADC $3A C1/39EB: 85 3E STA $3E C1/39ED: A5 3B LDA $3B C1/39EF: 69 00 ADC #$00 C1/39F1: 29 01 AND #$01 C1/39F3: F0 09 BEQ $39FE C1/39F5: A5 3E LDA $3E C1/39F7: C9 E0 CMP #$E0 C1/39F9: B0 0B BCS $3A06 C1/39FB: 4C 04 3A JMP $3A04 C1/39FE: A5 3E LDA $3E C1/3A00: C9 97 CMP #$97 C1/3A02: 90 02 BCC $3A06 C1/3A04: A9 97 LDA #$97 C1/3A06: 9D 00 03 STA $0300,X C1/3A09: C8 INY C1/3A0A: E8 INX C1/3A0B: C2 20 REP #$20 C1/3A0D: B9 00 00 LDA $0000,Y C1/3A10: 05 3C ORA $3C C1/3A12: 9D 00 03 STA $0300,X C1/3A15: 7B TDC C1/3A16: E2 20 SEP #$20 C1/3A18: C8 INY C1/3A19: C8 INY C1/3A1A: E8 INX C1/3A1B: E8 INX C1/3A1C: E6 60 INC $60 C1/3A1E: C6 2C DEC $2C C1/3A20: F0 03 BEQ $3A25 C1/3A22: 4C 89 39 JMP $3989 C1/3A25: 60 RTS ; [ Update Character X Positions ] set_obj_x_poi: C1/3A26: AE C9 61 LDX $61C9 ; character 1 target xy angle C1/3A29: EC CB 61 CPX $61CB C1/3A2C: F0 10 BEQ $3A3E ; branch if equal to current xy angle C1/3A2E: 8E CB 61 STX $61CB ; +$36 = xy angle C1/3A31: 86 36 STX $36 C1/3A33: AD B9 61 LDA $61B9 ; $2C = y position C1/3A36: 85 2C STA $2C C1/3A38: 20 87 3A JSR $3A87 ; calculate character x position C1/3A3B: 8E B7 61 STX $61B7 ; x position C1/3A3E: AE E9 61 LDX $61E9 ; character 2 ... C1/3A41: EC EB 61 CPX $61EB C1/3A44: F0 10 BEQ $3A56 C1/3A46: 8E EB 61 STX $61EB C1/3A49: 86 36 STX $36 C1/3A4B: AD D9 61 LDA $61D9 C1/3A4E: 85 2C STA $2C C1/3A50: 20 87 3A JSR $3A87 C1/3A53: 8E D7 61 STX $61D7 C1/3A56: AE 09 62 LDX $6209 ; character 3 ... C1/3A59: EC 0B 62 CPX $620B C1/3A5C: F0 10 BEQ $3A6E C1/3A5E: 8E 0B 62 STX $620B C1/3A61: 86 36 STX $36 C1/3A63: AD F9 61 LDA $61F9 C1/3A66: 85 2C STA $2C C1/3A68: 20 87 3A JSR $3A87 C1/3A6B: 8E F7 61 STX $61F7 C1/3A6E: AE 29 62 LDX $6229 ; character 4 ... C1/3A71: EC 2B 62 CPX $622B C1/3A74: F0 10 BEQ $3A86 C1/3A76: 8E 2B 62 STX $622B C1/3A79: 86 36 STX $36 C1/3A7B: AD 19 62 LDA $6219 C1/3A7E: 85 2C STA $2C C1/3A80: 20 87 3A JSR $3A87 C1/3A83: 8E 17 62 STX $6217 C1/3A86: 60 RTS ; [ Calculate Character X Position ] ; +$36 = xy angle ($0100 = vertical, $0180 = 45 degrees to the right) ; $2C = y position ; +X = absolute x position (out) C1/3A87: 64 2D STZ $2D C1/3A89: A5 2C LDA $2C C1/3A8B: 18 CLC C1/3A8C: 69 68 ADC #$68 ; top of "character triangle" is $68 above top of screen C1/3A8E: 85 2C STA $2C C1/3A90: C2 20 REP #$20 C1/3A92: A5 36 LDA $36 C1/3A94: 29 FF 01 AND #$01FF C1/3A97: 38 SEC C1/3A98: E9 00 01 SBC #$0100 ; +$2E = xy angle battlefield center (-255..255) C1/3A9B: 85 2E STA $2E C1/3A9D: A5 2E LDA $2E C1/3A9F: 10 0F BPL $3AB0 ; branch if to the right of center C1/3AA1: 49 FF FF EOR #$FFFF C1/3AA4: 85 2E STA $2E C1/3AA6: 20 67 18 JSR $1867 C1/3AA9: A5 31 LDA $31 C1/3AAB: 49 FF FF EOR #$FFFF C1/3AAE: 80 05 BRA $3AB5 C1/3AB0: 20 67 18 JSR $1867 ; ++$30 = +$2E * $2C C1/3AB3: A5 31 LDA $31 C1/3AB5: 18 CLC C1/3AB6: 69 78 00 ADC #$0078 ; add $78 center to center x position on screen C1/3AB9: AA TAX C1/3ABA: 7B TDC C1/3ABB: E2 20 SEP #$20 C1/3ABD: 60 RTS ; [ Init Character Graphics Data ] player_init_start: C1/3ABE: AD B8 EC LDA $ECB8 ; battle bg C1/3AC1: C9 2C CMP #$2C C1/3AC3: D0 04 BNE $3AC9 ; branch if not $2C (magitek train car) C1/3AC5: A9 04 LDA #$04 C1/3AC7: 80 03 BRA $3ACC C1/3AC9: AD 1F 20 LDA $201F ; battle type C1/3ACC: 0A ASL C1/3ACD: 0A ASL C1/3ACE: AA TAX C1/3ACF: BF 03 CF C2 LDA $C2CF03,X ; character 1 y offset C1/3AD3: A8 TAY C1/3AD4: 8C B9 61 STY $61B9 C1/3AD7: BF 04 CF C2 LDA $C2CF04,X ; character 2 y offset C1/3ADB: A8 TAY C1/3ADC: 8C D9 61 STY $61D9 C1/3ADF: BF 05 CF C2 LDA $C2CF05,X ; character 3 y offset C1/3AE3: A8 TAY C1/3AE4: 8C F9 61 STY $61F9 C1/3AE7: BF 06 CF C2 LDA $C2CF06,X ; character 4 y offset C1/3AEB: A8 TAY C1/3AEC: 8C 19 62 STY $6219 C1/3AEF: BF 3E E4 C2 LDA $C2E43E,X ; character 1 h-flip C1/3AF3: 8D BE 61 STA $61BE C1/3AF6: BF 3F E4 C2 LDA $C2E43F,X ; character 2 h-flip C1/3AFA: 8D DE 61 STA $61DE C1/3AFD: BF 40 E4 C2 LDA $C2E440,X ; character 3 h-flip C1/3B01: 8D FE 61 STA $61FE C1/3B04: BF 41 E4 C2 LDA $C2E441,X ; character 4 h-flip C1/3B08: 8D 1E 62 STA $621E C1/3B0B: 22 A3 AF C2 JSL $C2AFA3 ; C1/3B0F: 64 10 STZ $10 C1/3B11: AD AE 2E LDA $2EAE ; character 1 graphics index C1/3B14: 8D 6C 7B STA $7B6C C1/3B17: A2 00 00 LDX #$0000 C1/3B1A: 20 43 3D JSR $3D43 ; load character graphics/palette C1/3B1D: A9 01 LDA #$01 C1/3B1F: 85 10 STA $10 C1/3B21: AD CE 2E LDA $2ECE ; character 2 graphics index C1/3B24: 8D 6D 7B STA $7B6D C1/3B27: A2 00 20 LDX #$2000 C1/3B2A: 20 43 3D JSR $3D43 ; load character graphics/palette C1/3B2D: A9 02 LDA #$02 C1/3B2F: 85 10 STA $10 C1/3B31: AD EE 2E LDA $2EEE ; character 3 graphics index C1/3B34: 8D 6E 7B STA $7B6E C1/3B37: A2 00 40 LDX #$4000 C1/3B3A: 20 43 3D JSR $3D43 ; load character graphics/palette C1/3B3D: A9 03 LDA #$03 C1/3B3F: 85 10 STA $10 C1/3B41: AD 0E 2F LDA $2F0E ; character 4 graphics index C1/3B44: 8D 6F 7B STA $7B6F C1/3B47: A2 00 60 LDX #$6000 C1/3B4A: 20 43 3D JSR $3D43 ; load character graphics/palette C1/3B4D: A9 D0 LDA #$D0 ; C1/3B4F: 85 1E STA $1E C1/3B51: AD 1F 20 LDA $201F ; battle type C1/3B54: 0A ASL C1/3B55: 0A ASL C1/3B56: AA TAX C1/3B57: BF 4E E4 C2 LDA $C2E44E,X ; character 1 hand swap C1/3B5B: 8D 10 7B STA $7B10 C1/3B5E: BF 4F E4 C2 LDA $C2E44F,X C1/3B62: 8D 11 7B STA $7B11 C1/3B65: BF 50 E4 C2 LDA $C2E450,X C1/3B69: 8D 12 7B STA $7B12 C1/3B6C: BF 51 E4 C2 LDA $C2E451,X C1/3B70: 8D 13 7B STA $7B13 C1/3B73: AD 1F 20 LDA $201F ; battle type C1/3B76: 0A ASL C1/3B77: 0A ASL C1/3B78: 0A ASL C1/3B79: AA TAX C1/3B7A: C2 20 REP #$20 C1/3B7C: BF 17 CF C2 LDA $C2CF17,X ; character 1 xy angle C1/3B80: 8D C9 61 STA $61C9 C1/3B83: 1A INC C1/3B84: 8D CB 61 STA $61CB C1/3B87: AD C5 2E LDA $2EC5 ; character 1 row (0 = front, 1 = back) C1/3B8A: 29 FF 00 AND #$00FF C1/3B8D: F0 14 BEQ $3BA3 ; branch if front row C1/3B8F: E2 20 SEP #$20 C1/3B91: A9 01 LDA #$01 C1/3B93: 8D C5 2E STA $2EC5 ; character 1 row C1/3B96: C2 20 REP #$20 C1/3B98: AD C9 61 LDA $61C9 C1/3B9B: 18 CLC C1/3B9C: 7F E3 CE C2 ADC $C2CEE3,X ; add back row xy angle C1/3BA0: 8D C9 61 STA $61C9 C1/3BA3: BF 19 CF C2 LDA $C2CF19,X ; character 2 x-offset C1/3BA7: 8D E9 61 STA $61E9 C1/3BAA: 1A INC C1/3BAB: 8D EB 61 STA $61EB C1/3BAE: AD E5 2E LDA $2EE5 ; character 2 row C1/3BB1: 29 FF 00 AND #$00FF C1/3BB4: F0 14 BEQ $3BCA C1/3BB6: E2 20 SEP #$20 C1/3BB8: A9 01 LDA #$01 C1/3BBA: 8D E5 2E STA $2EE5 C1/3BBD: C2 20 REP #$20 C1/3BBF: AD E9 61 LDA $61E9 C1/3BC2: 18 CLC C1/3BC3: 7F E5 CE C2 ADC $C2CEE5,X C1/3BC7: 8D E9 61 STA $61E9 C1/3BCA: BF 1B CF C2 LDA $C2CF1B,X ; character 3 x-offset C1/3BCE: 8D 09 62 STA $6209 C1/3BD1: 1A INC C1/3BD2: 8D 0B 62 STA $620B C1/3BD5: AD 05 2F LDA $2F05 C1/3BD8: 29 FF 00 AND #$00FF C1/3BDB: F0 14 BEQ $3BF1 C1/3BDD: E2 20 SEP #$20 C1/3BDF: A9 01 LDA #$01 C1/3BE1: 8D 05 2F STA $2F05 C1/3BE4: C2 20 REP #$20 C1/3BE6: AD 09 62 LDA $6209 C1/3BE9: 18 CLC C1/3BEA: 7F E7 CE C2 ADC $C2CEE7,X C1/3BEE: 8D 09 62 STA $6209 C1/3BF1: BF 1D CF C2 LDA $C2CF1D,X ; character 4 x-offset C1/3BF5: 8D 29 62 STA $6229 C1/3BF8: 1A INC C1/3BF9: 8D 2B 62 STA $622B C1/3BFC: AD 25 2F LDA $2F25 C1/3BFF: 29 FF 00 AND #$00FF C1/3C02: F0 14 BEQ $3C18 C1/3C04: E2 20 SEP #$20 C1/3C06: A9 01 LDA #$01 C1/3C08: 8D 25 2F STA $2F25 C1/3C0B: C2 20 REP #$20 C1/3C0D: AD 29 62 LDA $6229 C1/3C10: 18 CLC C1/3C11: 7F E9 CE C2 ADC $C2CEE9,X C1/3C15: 8D 29 62 STA $6229 C1/3C18: 9C D3 61 STZ $61D3 ; clear character y-offsets C1/3C1B: 9C F3 61 STZ $61F3 C1/3C1E: 9C 13 62 STZ $6213 C1/3C21: 9C 33 62 STZ $6233 C1/3C24: 7B TDC C1/3C25: E2 20 SEP #$20 C1/3C27: AE E0 11 LDX $11E0 ; battle index C1/3C2A: E0 3E 02 CPX #$023E C1/3C2D: F0 05 BEQ $3C34 ; branch if shadow at colosseum C1/3C2F: E0 3F 02 CPX #$023F C1/3C32: D0 06 BNE $3C3A ; branch if not colosseum C1/3C34: A0 68 00 LDY #$0068 C1/3C37: 8C B9 61 STY $61B9 ; character 1 y position C1/3C3A: 7B TDC C1/3C3B: AA TAX C1/3C3C: A8 TAY C1/3C3D: C2 20 REP #$20 C1/3C3F: BD 46 62 LDA $6246,X C1/3C42: C9 FF FF CMP #$FFFF C1/3C45: F0 0D BEQ $3C54 C1/3C47: 18 CLC C1/3C48: 69 80 00 ADC #$0080 C1/3C4B: 99 C9 61 STA $61C9,Y C1/3C4E: BD 48 62 LDA $6248,X C1/3C51: 99 B9 61 STA $61B9,Y C1/3C54: E8 INX ; next character C1/3C55: E8 INX C1/3C56: E8 INX C1/3C57: E8 INX C1/3C58: 98 TYA C1/3C59: 18 CLC C1/3C5A: 69 20 00 ADC #$0020 C1/3C5D: A8 TAY C1/3C5E: C0 80 00 CPY #$0080 C1/3C61: D0 DC BNE $3C3F C1/3C63: 7B TDC C1/3C64: E2 20 SEP #$20 C1/3C66: A9 08 LDA #$08 C1/3C68: 8D BC 61 STA $61BC ; character 1 palette C1/3C6B: A9 0A LDA #$0A C1/3C6D: 8D DC 61 STA $61DC ; character 2 palette C1/3C70: A9 0C LDA #$0C C1/3C72: 8D FC 61 STA $61FC ; character 3 palette C1/3C75: A9 0E LDA #$0E C1/3C77: 8D 1C 62 STA $621C ; character 4 palette C1/3C7A: A9 30 LDA #$30 C1/3C7C: 8D BD 61 STA $61BD ; sprite priority = 3 C1/3C7F: 8D DD 61 STA $61DD C1/3C82: 8D FD 61 STA $61FD C1/3C85: 8D 1D 62 STA $621D C1/3C88: A9 06 LDA #$06 ; tertiary graphics index = 6 C1/3C8A: 8D BF 61 STA $61BF C1/3C8D: 8D DF 61 STA $61DF C1/3C90: 8D FF 61 STA $61FF C1/3C93: 8D 1F 62 STA $621F C1/3C96: A6 00 LDX $00 ; primary & secondary graphics index = 0 C1/3C98: 8E C0 61 STX $61C0 C1/3C9B: 8E E0 61 STX $61E0 C1/3C9E: 8E 00 62 STX $6200 C1/3CA1: 8E 20 62 STX $6220 C1/3CA4: 7B TDC C1/3CA5: 8D 98 00 STA $0098 ; clear frame counter C1/3CA8: 8D C2 61 STA $61C2 ; character 1 graphic action counter = 0 C1/3CAB: 1A INC C1/3CAC: 1A INC C1/3CAD: 8D E2 61 STA $61E2 ; character 2 graphic action counter = 2 C1/3CB0: 1A INC C1/3CB1: 1A INC C1/3CB2: 8D 02 62 STA $6202 ; character 3 graphic action counter = 4 C1/3CB5: 1A INC C1/3CB6: 1A INC C1/3CB7: 8D 22 62 STA $6222 ; character 4 graphic action counter = 6 C1/3CBA: 7B TDC C1/3CBB: AA TAX C1/3CBC: A8 TAY C1/3CBD: BD AE 2E LDA $2EAE,X ; character graphics index C1/3CC0: C9 FF CMP #$FF C1/3CC2: F0 0D BEQ $3CD1 ; branch if no character C1/3CC4: C8 INY C1/3CC5: 8A TXA C1/3CC6: 18 CLC C1/3CC7: 69 20 ADC #$20 C1/3CC9: AA TAX C1/3CCA: E0 80 00 CPX #$0080 C1/3CCD: D0 EE BNE $3CBD C1/3CCF: 7B TDC C1/3CD0: A8 TAY C1/3CD1: BB TYX ; Y = first empty character slot (0 if no slots are empty) C1/3CD2: BF 5E E4 C2 LDA $C2E45E,X C1/3CD6: 8D D4 64 STA $64D4 ; magitek color palette C1/3CD9: 8A TXA C1/3CDA: 0A ASL C1/3CDB: 0A ASL C1/3CDC: 0A ASL C1/3CDD: 0A ASL C1/3CDE: 0A ASL C1/3CDF: A8 TAY C1/3CE0: AD BA 64 LDA $64BA ; branch if not magitek mode C1/3CE3: F0 16 BEQ $3CFB C1/3CE5: A9 18 LDA #$18 ; 12 colors C1/3CE7: 85 10 STA $10 C1/3CE9: 7B TDC C1/3CEA: AA TAX C1/3CEB: BF D4 CF C2 LDA $C2CFD4,X ; load magitek color palette C1/3CEF: 99 AD 81 STA $81AD,Y C1/3CF2: 99 80 7F STA $7F80,Y C1/3CF5: E8 INX C1/3CF6: C8 INY C1/3CF7: C6 10 DEC $10 C1/3CF9: D0 F0 BNE $3CEB C1/3CFB: AD 47 2F LDA $2F47 ; characters acting as enemies C1/3CFE: 85 10 STA $10 C1/3D00: 7B TDC C1/3D01: AA TAX C1/3D02: A8 TAY C1/3D03: 46 10 LSR $10 C1/3D05: 90 10 BCC $3D17 ; branch if character is not acting as an enemy C1/3D07: BD 10 7B LDA $7B10,X ; swap character hands C1/3D0A: 49 01 EOR #$01 C1/3D0C: 9D 10 7B STA $7B10,X C1/3D0F: B9 BE 61 LDA $61BE,Y ; h-flip character C1/3D12: 49 40 EOR #$40 C1/3D14: 99 BE 61 STA $61BE,Y C1/3D17: 98 TYA ; next character C1/3D18: 18 CLC C1/3D19: 69 20 ADC #$20 C1/3D1B: A8 TAY C1/3D1C: E8 INX C1/3D1D: E0 04 00 CPX #$0004 C1/3D20: D0 E1 BNE $3D03 C1/3D22: 60 RTS player_obj_rinit: C1/3D23: 20 BE 3A JSR $3ABE C1/3D26: 60 RTS ; [ ] player_obj_init: C1/3D27: 20 BE 3A JSR $3ABE C1/3D2A: 20 26 3A JSR $3A26 C1/3D2D: A9 04 LDA #$04 C1/3D2F: CE 98 00 DEC $0098 C1/3D32: 48 PHA C1/3D33: 20 D3 2D JSR $2DD3 C1/3D36: 20 79 2F JSR $2F79 ; update character status change animations C1/3D39: EE 98 00 INC $0098 C1/3D3C: E6 0E INC $0E C1/3D3E: 68 PLA C1/3D3F: 3A DEC C1/3D40: D0 F0 BNE $3D32 C1/3D42: 60 RTS ; [ Load Character Graphics/Palette ] ; A: character graphics index ; +X: pointer to graphics buffer(+$7F0000) one_obj_work_set: C1/3D43: C9 FF CMP #$FF C1/3D45: D0 01 BNE $3D48 ; return if not a valid character C1/3D47: 60 RTS C1/3D48: 85 14 STA $14 C1/3D4A: 86 1C STX $1C C1/3D4C: AA TAX C1/3D4D: A5 10 LDA $10 C1/3D4F: 48 PHA C1/3D50: 48 PHA C1/3D51: DA PHX C1/3D52: A6 1C LDX $1C C1/3D54: 86 1A STX $1A C1/3D56: A5 14 LDA $14 C1/3D58: 0A ASL C1/3D59: 18 CLC C1/3D5A: 65 14 ADC $14 C1/3D5C: AA TAX C1/3D5D: A9 C2 LDA #$C2 C1/3D5F: 85 16 STA $16 C1/3D61: 8B PHB C1/3D62: A9 7F LDA #$7F C1/3D64: 48 PHA C1/3D65: AB PLB C1/3D66: BF 45 CE C2 LDA $C2CE45,X ; pointer to sprite graphics C1/3D6A: 85 12 STA $12 C1/3D6C: C2 20 REP #$20 C1/3D6E: BF 43 CE C2 LDA $C2CE43,X C1/3D72: 85 10 STA $10 C1/3D74: A9 45 C7 LDA #$C745 ; pointers to tile graphics in buffer (+$7F0000) C1/3D77: 85 14 STA $14 C1/3D79: A6 1A LDX $1A C1/3D7B: A9 00 01 LDA #$0100 ; copy 256 tiles C1/3D7E: 85 1A STA $1A C1/3D80: A9 10 00 LDA #$0010 ; copy 16 words (one 8x8 tile) C1/3D83: 85 18 STA $18 C1/3D85: A7 14 LDA [$14] ; destination C1/3D87: C9 FF FF CMP #$FFFF C1/3D8A: D0 0C BNE $3D98 ; branch if there is a tile C1/3D8C: 7B TDC C1/3D8D: 9D 00 00 STA $0000,X ; clear graphics C1/3D90: E8 INX C1/3D91: E8 INX C1/3D92: C6 18 DEC $18 C1/3D94: D0 F7 BNE $3D8D C1/3D96: 80 0E BRA $3DA6 C1/3D98: A8 TAY C1/3D99: B7 10 LDA [$10],Y C1/3D9B: 9D 00 00 STA $0000,X ; copy graphics to buffer (one 8x8 tile) C1/3D9E: E8 INX C1/3D9F: E8 INX C1/3DA0: C8 INY C1/3DA1: C8 INY C1/3DA2: C6 18 DEC $18 C1/3DA4: D0 F3 BNE $3D99 C1/3DA6: E6 14 INC $14 ; next tile C1/3DA8: E6 14 INC $14 C1/3DAA: C6 1A DEC $1A C1/3DAC: D0 D2 BNE $3D80 C1/3DAE: 7B TDC C1/3DAF: E2 20 SEP #$20 C1/3DB1: A6 1C LDX $1C C1/3DB3: A9 40 LDA #$40 ; 64 tiles C1/3DB5: 85 12 STA $12 C1/3DB7: BD C0 03 LDA $03C0,X ; horizontally flip legs tiles C1/3DBA: 0A ASL C1/3DBB: 66 10 ROR $10 C1/3DBD: 0A ASL C1/3DBE: 66 10 ROR $10 C1/3DC0: 0A ASL C1/3DC1: 66 10 ROR $10 C1/3DC3: 0A ASL C1/3DC4: 66 10 ROR $10 C1/3DC6: 0A ASL C1/3DC7: 66 10 ROR $10 C1/3DC9: 0A ASL C1/3DCA: 66 10 ROR $10 C1/3DCC: 0A ASL C1/3DCD: 66 10 ROR $10 C1/3DCF: 0A ASL C1/3DD0: 66 10 ROR $10 C1/3DD2: A5 10 LDA $10 C1/3DD4: 9D C0 03 STA $03C0,X C1/3DD7: BD C0 10 LDA $10C0,X C1/3DDA: 0A ASL C1/3DDB: 66 10 ROR $10 C1/3DDD: 0A ASL C1/3DDE: 66 10 ROR $10 C1/3DE0: 0A ASL C1/3DE1: 66 10 ROR $10 C1/3DE3: 0A ASL C1/3DE4: 66 10 ROR $10 C1/3DE6: 0A ASL C1/3DE7: 66 10 ROR $10 C1/3DE9: 0A ASL C1/3DEA: 66 10 ROR $10 C1/3DEC: 0A ASL C1/3DED: 66 10 ROR $10 C1/3DEF: 0A ASL C1/3DF0: 66 10 ROR $10 C1/3DF2: A5 10 LDA $10 C1/3DF4: 9D C0 10 STA $10C0,X C1/3DF7: E8 INX C1/3DF8: C6 12 DEC $12 C1/3DFA: D0 BB BNE $3DB7 C1/3DFC: AB PLB C1/3DFD: FA PLX C1/3DFE: 68 PLA C1/3DFF: 0A ASL C1/3E00: 0A ASL C1/3E01: 0A ASL C1/3E02: 0A ASL C1/3E03: 0A ASL C1/3E04: DA PHX C1/3E05: AA TAX C1/3E06: BD AE 2E LDA $2EAE,X ; character graphics C1/3E09: C9 0E CMP #$0E C1/3E0B: D0 12 BNE $3E1F ; branch if not brown soldier C1/3E0D: BD C6 2E LDA $2EC6,X ; actor index C1/3E10: C9 01 CMP #$01 C1/3E12: D0 0B BNE $3E1F ; branch if not locke C1/3E14: AD A0 1E LDA $1EA0 C1/3E17: 29 08 AND #$08 C1/3E19: F0 04 BEQ $3E1F ; event bit for when locke is a green soldier C1/3E1B: FA PLX C1/3E1C: 7B TDC ; force palette 0 to get green soldier C1/3E1D: 80 05 BRA $3E24 C1/3E1F: FA PLX C1/3E20: BF 2B CE C2 LDA $C2CE2B,X ; palette index C1/3E24: C2 20 REP #$20 C1/3E26: 0A ASL C1/3E27: 0A ASL C1/3E28: 0A ASL C1/3E29: 0A ASL C1/3E2A: 0A ASL C1/3E2B: AA TAX C1/3E2C: 7B TDC C1/3E2D: E2 20 SEP #$20 C1/3E2F: 68 PLA C1/3E30: 0A ASL C1/3E31: 0A ASL C1/3E32: 0A ASL C1/3E33: 0A ASL C1/3E34: 0A ASL C1/3E35: A8 TAY C1/3E36: 5A PHY C1/3E37: A9 18 LDA #$18 C1/3E39: 85 10 STA $10 C1/3E3B: BF 00 63 ED LDA $ED6300,X ; copy character sprite color palette C1/3E3F: 99 AD 81 STA $81AD,Y C1/3E42: E8 INX C1/3E43: C8 INY C1/3E44: C6 10 DEC $10 C1/3E46: D0 F3 BNE $3E3B C1/3E48: FA PLX C1/3E49: FE C4 61 INC $61C4,X ; invalidate previous graphic action (forces buffer update) C1/3E4C: 60 RTS ; [ Load Status/Cursor Palettes ] set_status_color: C1/3E4D: 7B TDC C1/3E4E: AA TAX C1/3E4F: BF 89 C6 C2 LDA $C2C689,X C1/3E53: 9D 98 7F STA $7F98,X C1/3E56: BF 91 C6 C2 LDA $C2C691,X C1/3E5A: 9D B8 7F STA $7FB8,X C1/3E5D: BF 99 C6 C2 LDA $C2C699,X C1/3E61: 9D D8 7F STA $7FD8,X C1/3E64: BF A1 C6 C2 LDA $C2C6A1,X C1/3E68: 9D F8 7F STA $7FF8,X C1/3E6B: E8 INX C1/3E6C: E0 08 00 CPX #$0008 C1/3E6F: D0 DE BNE $3E4F C1/3E71: 60 RTS ; [ Init Monster Sprite Data ] v_mode_init: C1/3E72: A9 FF LDA #$FF C1/3E74: 7B TDC C1/3E75: AA TAX C1/3E76: 9D 59 82 STA $8259,X ; clear monster sprite data C1/3E79: 9D F1 83 STA $83F1,X C1/3E7C: 9D 89 85 STA $8589,X C1/3E7F: 9D 21 87 STA $8721,X C1/3E82: E8 INX C1/3E83: E0 98 01 CPX #$0198 C1/3E86: D0 EE BNE $3E76 C1/3E88: AD 00 20 LDA $2000 ; VRAM map index * 12 C1/3E8B: 85 22 STA $22 C1/3E8D: A9 0C LDA #$0C C1/3E8F: 85 24 STA $24 C1/3E91: 20 D9 18 JSR $18D9 ; multiply $22 * $24 C1/3E94: A5 26 LDA $26 C1/3E96: AA TAX C1/3E97: BF A4 C4 C2 LDA $C2C4A4,X ; ++$10 = pointer to monster VRAM map sprite data C1/3E9B: 85 10 STA $10 C1/3E9D: BF A5 C4 C2 LDA $C2C4A5,X C1/3EA1: 85 11 STA $11 C1/3EA3: A9 C2 LDA #$C2 C1/3EA5: 85 12 STA $12 C1/3EA7: A2 59 82 LDX #$8259 ; +$14 = pointer to monster sprite data C1/3EAA: 86 14 STX $14 C1/3EAC: A9 06 LDA #$06 ; $16 = monster counter C1/3EAE: 85 16 STA $16 C1/3EB0: C2 20 REP #$20 C1/3EB2: A7 10 LDA [$10] ; monster's x and y position in graphics buffer C1/3EB4: 85 18 STA $18 C1/3EB6: E6 10 INC $10 C1/3EB8: E6 10 INC $10 C1/3EBA: 7B TDC C1/3EBB: E2 20 SEP #$20 C1/3EBD: A4 00 LDY $00 C1/3EBF: A7 10 LDA [$10] ; sprite number C1/3EC1: 30 2C BMI $3EEF ; branch if at end of data C1/3EC3: 0A ASL C1/3EC4: 0A ASL C1/3EC5: AA TAX C1/3EC6: BF E7 B9 C2 LDA $C2B9E7,X ; sprite's x offset C1/3ECA: 38 SEC C1/3ECB: E5 18 SBC $18 C1/3ECD: 91 14 STA ($14),Y C1/3ECF: C8 INY C1/3ED0: BF E8 B9 C2 LDA $C2B9E8,X ; sprite's y offset C1/3ED4: 38 SEC C1/3ED5: E5 19 SBC $19 C1/3ED7: 91 14 STA ($14),Y C1/3ED9: C8 INY C1/3EDA: BF E9 B9 C2 LDA $C2B9E9,X ; sprite's tile pointer C1/3EDE: 91 14 STA ($14),Y C1/3EE0: C8 INY C1/3EE1: BF EA B9 C2 LDA $C2B9EA,X C1/3EE5: 91 14 STA ($14),Y C1/3EE7: C8 INY ; next sprite C1/3EE8: A6 10 LDX $10 C1/3EEA: E8 INX C1/3EEB: 86 10 STX $10 C1/3EED: 80 D0 BRA $3EBF C1/3EEF: 91 14 STA ($14),Y ; store end byte C1/3EF1: C2 20 REP #$20 C1/3EF3: E6 10 INC $10 ; next monster C1/3EF5: A5 14 LDA $14 C1/3EF7: 18 CLC C1/3EF8: 69 44 00 ADC #$0044 C1/3EFB: 85 14 STA $14 C1/3EFD: 7B TDC C1/3EFE: E2 20 SEP #$20 C1/3F00: C6 16 DEC $16 C1/3F02: D0 AC BNE $3EB0 C1/3F04: A6 00 LDX $00 C1/3F06: BD 59 82 LDA $8259,X ; copy first set of sprite data to other three sets C1/3F09: 9D F1 83 STA $83F1,X C1/3F0C: 9D 89 85 STA $8589,X C1/3F0F: 9D 21 87 STA $8721,X C1/3F12: E8 INX C1/3F13: E0 98 01 CPX #$0198 C1/3F16: D0 EE BNE $3F06 C1/3F18: 64 14 STZ $14 ; C1/3F1A: A9 01 LDA #$01 C1/3F1C: 85 12 STA $12 C1/3F1E: A6 00 LDX $00 C1/3F20: C6 12 DEC $12 C1/3F22: D0 12 BNE $3F36 C1/3F24: A9 11 LDA #$11 C1/3F26: 85 12 STA $12 C1/3F28: A5 14 LDA $14 C1/3F2A: 0A ASL C1/3F2B: A8 TAY C1/3F2C: B9 2F 81 LDA $812F,Y ; monster width C1/3F2F: 0A ASL ; convert to pixels C1/3F30: 0A ASL C1/3F31: 0A ASL C1/3F32: 85 10 STA $10 C1/3F34: E6 14 INC $14 C1/3F36: BD 59 82 LDA $8259,X ; sprite x position C1/3F39: C9 FF CMP #$FF C1/3F3B: F0 09 BEQ $3F46 ; branch if no sprite C1/3F3D: 49 FF EOR #$FF ; invert C1/3F3F: 1A INC C1/3F40: 38 SEC C1/3F41: E9 20 SBC #$20 ; subtract 32 C1/3F43: 18 CLC C1/3F44: 65 10 ADC $10 ; add width C1/3F46: 9D F1 83 STA $83F1,X ; set 1st and 3rd copy x position C1/3F49: 9D 21 87 STA $8721,X C1/3F4C: E8 INX ; next sprite C1/3F4D: E8 INX C1/3F4E: E8 INX C1/3F4F: E8 INX C1/3F50: E0 98 01 CPX #$0198 C1/3F53: D0 CB BNE $3F20 C1/3F55: 64 14 STZ $14 C1/3F57: A9 01 LDA #$01 C1/3F59: 85 12 STA $12 C1/3F5B: A6 00 LDX $00 C1/3F5D: C6 12 DEC $12 C1/3F5F: D0 12 BNE $3F73 C1/3F61: A9 11 LDA #$11 C1/3F63: 85 12 STA $12 C1/3F65: A5 14 LDA $14 C1/3F67: 0A ASL C1/3F68: A8 TAY C1/3F69: B9 30 81 LDA $8130,Y C1/3F6C: 0A ASL C1/3F6D: 0A ASL C1/3F6E: 0A ASL C1/3F6F: 85 10 STA $10 C1/3F71: E6 14 INC $14 C1/3F73: BD 5A 82 LDA $825A,X ; sprite y position C1/3F76: C9 FF CMP #$FF C1/3F78: F0 09 BEQ $3F83 ; branch if no sprite C1/3F7A: 49 FF EOR #$FF ; invert C1/3F7C: 1A INC C1/3F7D: 38 SEC C1/3F7E: E9 20 SBC #$20 ; subtract 32 C1/3F80: 18 CLC C1/3F81: 65 10 ADC $10 ; add width C1/3F83: 9D 8A 85 STA $858A,X ; set 2nd and 3rd copy y position C1/3F86: 9D 22 87 STA $8722,X C1/3F89: E8 INX ; next sprite C1/3F8A: E8 INX C1/3F8B: E8 INX C1/3F8C: E8 INX C1/3F8D: E0 98 01 CPX #$0198 C1/3F90: D0 CB BNE $3F5D C1/3F92: 7B TDC C1/3F93: A8 TAY C1/3F94: 98 TYA C1/3F95: 0A ASL C1/3F96: AA TAX C1/3F97: BF 74 C4 C2 LDA $C2C474,X C1/3F9B: 85 10 STA $10 C1/3F9D: BF 75 C4 C2 LDA $C2C475,X C1/3FA1: 85 11 STA $11 C1/3FA3: A9 11 LDA #$11 C1/3FA5: 85 12 STA $12 C1/3FA7: 7B TDC C1/3FA8: 99 B9 88 STA $88B9,Y C1/3FAB: B2 10 LDA ($10) C1/3FAD: C9 FF CMP #$FF C1/3FAF: F0 13 BEQ $3FC4 C1/3FB1: B9 B9 88 LDA $88B9,Y C1/3FB4: 1A INC C1/3FB5: 99 B9 88 STA $88B9,Y C1/3FB8: A6 10 LDX $10 C1/3FBA: E8 INX C1/3FBB: E8 INX C1/3FBC: E8 INX C1/3FBD: E8 INX C1/3FBE: 86 10 STX $10 C1/3FC0: C6 12 DEC $12 C1/3FC2: D0 E7 BNE $3FAB C1/3FC4: C8 INY C1/3FC5: C0 06 00 CPY #$0006 C1/3FC8: D0 CA BNE $3F94 C1/3FCA: 60 RTS ; --------------------------------------[ Battle Graphics: Menu ]--------------------------------------- C1/3FCB: .DB $B4, $B5, $B6, $B7, $B8, $B9, $BA, $BB, $BC, $BD, $8C, $87, $8F, $C0, $8D, $9E C1/3FDB: .DB $9D, $8C, $8F, $FF, $FF ; pointers to menu window graphics C1/3FE0: .DL $ED0000, $ED0380, $ED0700, $ED0A80, $ED0E00, $ED1180, $ED1500, $ED1880 ; pointers to menu window palettes C1/3FF8: .DL $001D57, $001D65, $001D73, $001D81, $001D8F, $001D9D, $001DAB, $001DB9 ; [ Get Pointer to Menu Window Graphics ] ; +X = pointer to menu window graphics (out) ; $12 = menu window graphics bank (out) get_window_poi: C1/4010: AD 34 2F LDA $2F34 ; menu window graphics index C1/4013: 29 07 AND #$07 C1/4015: 8D 34 2F STA $2F34 C1/4018: 0A ASL C1/4019: 18 CLC C1/401A: 6D 34 2F ADC $2F34 C1/401D: AA TAX C1/401E: BF E2 3F C1 LDA $C13FE2,X ; pointer to menu window graphics C1/4022: 85 12 STA $12 C1/4024: C2 20 REP #$20 C1/4026: BF E0 3F C1 LDA $C13FE0,X C1/402A: AA TAX C1/402B: 7B TDC C1/402C: E2 20 SEP #$20 C1/402E: A0 80 03 LDY #$0380 ; size = $0380 C1/4031: 84 10 STY $10 C1/4033: 60 RTS ; [ Copy Menu Window Graphics to VRAM ] C1/4034: 20 10 40 JSR $4010 ; get pointer to menu window graphics C1/4037: A0 00 0A LDY #$0A00 ; destination address = $0A00 C1/403A: A5 12 LDA $12 C1/403C: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ ] font_chr_tfr: C1/403F: 20 10 40 JSR $4010 ; get pointer to menu window graphics C1/4042: A4 10 LDY $10 C1/4044: 84 36 STY $36 ; size = $0380 C1/4046: A5 12 LDA $12 C1/4048: A0 00 42 LDY #$4200 ; destination address = $4200 C1/404B: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/404E: A2 00 08 LDX #$0800 C1/4051: 86 36 STX $36 ; size = $0800 C1/4053: A2 00 F0 LDX #$F000 ; source address = $D2F000 (slot window graphics) C1/4056: A0 00 44 LDY #$4400 ; destination address = $4400 C1/4059: A9 D2 LDA #$D2 C1/405B: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/405E: A2 00 10 LDX #$1000 C1/4061: 86 36 STX $36 ; size = $1000 C1/4063: A2 C0 7F LDX #$7FC0 ; source address = $C47FC0 (fixed-width font graphics) C1/4066: A0 00 58 LDY #$5800 ; destination address = $5800 C1/4069: A9 C4 LDA #$C4 C1/406B: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/406E: AD 34 2F LDA $2F34 ; menu window graphics index C1/4071: 29 07 AND #$07 C1/4073: 8D 34 2F STA $2F34 C1/4076: 0A ASL C1/4077: 18 CLC C1/4078: 6D 34 2F ADC $2F34 C1/407B: AA TAX C1/407C: BF FA 3F C1 LDA $C13FFA,X ; ++$36 = pointer to menu window palette C1/4080: 85 38 STA $38 C1/4082: C2 20 REP #$20 C1/4084: BF F8 3F C1 LDA $C13FF8,X C1/4088: 85 36 STA $36 C1/408A: 7B TDC C1/408B: AA TAX C1/408C: A8 TAY C1/408D: A9 08 00 LDA #$0008 ; C1/4090: 85 2C STA $2C C1/4092: 20 E4 41 JSR $41E4 C1/4095: B7 36 LDA [$36],Y C1/4097: 20 7E 41 JSR $417E C1/409A: 9D 42 7E STA $7E42,X C1/409D: C8 INY C1/409E: C8 INY C1/409F: E8 INX C1/40A0: E8 INX C1/40A1: E0 0E 00 CPX #$000E C1/40A4: D0 EF BNE $4095 C1/40A6: 7B TDC C1/40A7: AA TAX C1/40A8: BF C0 62 ED LDA $ED62C0,X C1/40AC: 9D 00 7E STA $7E00,X C1/40AF: BF D0 62 ED LDA $ED62D0,X C1/40B3: 9D 10 7E STA $7E10,X C1/40B6: E8 INX C1/40B7: E8 INX C1/40B8: E0 10 00 CPX #$0010 C1/40BB: D0 EB BNE $40A8 C1/40BD: AD 55 1D LDA $1D55 C1/40C0: 8D 06 7E STA $7E06 C1/40C3: 7B TDC C1/40C4: E2 20 SEP #$20 C1/40C6: A0 80 40 LDY #$4080 C1/40C9: 7B TDC C1/40CA: AA TAX C1/40CB: BF CB 3F C1 LDA $C13FCB,X C1/40CF: DA PHX C1/40D0: C2 20 REP #$20 C1/40D2: 0A ASL C1/40D3: 0A ASL C1/40D4: 0A ASL C1/40D5: 0A ASL C1/40D6: 18 CLC C1/40D7: 69 C0 7F ADC #$7FC0 C1/40DA: AA TAX C1/40DB: A9 10 00 LDA #$0010 C1/40DE: 85 36 STA $36 C1/40E0: 7B TDC C1/40E1: E2 20 SEP #$20 C1/40E3: A9 C4 LDA #$C4 C1/40E5: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/40E8: FA PLX C1/40E9: C2 20 REP #$20 C1/40EB: 98 TYA C1/40EC: 18 CLC C1/40ED: 69 10 00 ADC #$0010 C1/40F0: A8 TAY C1/40F1: 7B TDC C1/40F2: E2 20 SEP #$20 C1/40F4: E8 INX C1/40F5: E0 15 00 CPX #$0015 C1/40F8: D0 D1 BNE $40CB C1/40FA: 20 FE 40 JSR $40FE C1/40FD: 60 RTS ; [ ] bar_color_set: C1/40FE: 7B TDC C1/40FF: AA TAX C1/4100: BF E8 62 ED LDA $ED62E8,X C1/4104: 9D 28 7E STA $7E28,X C1/4107: E8 INX C1/4108: E0 18 00 CPX #$0018 C1/410B: D0 F3 BNE $4100 C1/410D: 60 RTS ; [ ] ; unused C1/410E: 7B TDC C1/410F: AA TAX C1/4110: BF 4E 41 C1 LDA $C1414E,X C1/4114: 9D 50 7E STA $7E50,X C1/4117: E8 INX C1/4118: E0 10 00 CPX #$0010 C1/411B: D0 F3 BNE $4110 C1/411D: 60 RTS ; [ ] gra_color_clr: C1/411E: 7B TDC C1/411F: AA TAX C1/4120: 9D 50 7E STA $7E50,X C1/4123: E8 INX C1/4124: E0 10 00 CPX #$0010 C1/4127: D0 F7 BNE $4120 C1/4129: 60 RTS ; [ ] ; unused C1/412A: 7B TDC C1/412B: AA TAX C1/412C: C2 20 REP #$20 C1/412E: BF 66 41 C1 LDA $C14166,X C1/4132: 49 FF FF EOR #$FFFF C1/4135: 9D 28 7E STA $7E28,X C1/4138: E8 INX C1/4139: E8 INX C1/413A: E0 18 00 CPX #$0018 C1/413D: D0 EF BNE $412E C1/413F: 7B TDC C1/4140: E2 20 SEP #$20 C1/4142: 60 RTS ; [ ] ; unused C1/4143: 7B TDC C1/4144: 9E 28 7E STZ $7E28,X C1/4147: E8 INX C1/4148: E0 18 00 CPX #$0018 C1/414B: D0 F7 BNE $4144 C1/414D: 60 RTS C1/414E: .DW $739C, $6318, $5294, $4210, $318C, $2108, $1084, $0000 C1/415E: .DW $0000, $7FE0, $7FE0, $7FE0 C1/4166: .DW $6F18, $4A10, $2928, $037F, $0254, $018E, $001F, $0016 C1/4176: .DW $7CC1, $6CE3, $7FFF, $0000 ; [ ] one_upcolor_set: C1/417E: 85 32 STA $32 C1/4180: 29 1F 00 AND #$001F C1/4183: 18 CLC C1/4184: 65 2C ADC $2C C1/4186: 85 34 STA $34 C1/4188: 29 E0 7F AND #$7FE0 C1/418B: D0 0B BNE $4198 C1/418D: A5 32 LDA $32 C1/418F: 29 E0 7F AND #$7FE0 C1/4192: 05 34 ORA $34 C1/4194: 85 32 STA $32 C1/4196: 80 07 BRA $419F C1/4198: A5 32 LDA $32 C1/419A: 09 1F 00 ORA #$001F C1/419D: 85 32 STA $32 C1/419F: A5 32 LDA $32 C1/41A1: 29 E0 03 AND #$03E0 C1/41A4: 18 CLC C1/41A5: 65 2E ADC $2E C1/41A7: 85 34 STA $34 C1/41A9: 29 1F 7C AND #$7C1F C1/41AC: D0 0B BNE $41B9 C1/41AE: A5 32 LDA $32 C1/41B0: 29 1F 7C AND #$7C1F C1/41B3: 05 34 ORA $34 C1/41B5: 85 32 STA $32 C1/41B7: 80 07 BRA $41C0 C1/41B9: A5 32 LDA $32 C1/41BB: 09 E0 03 ORA #$03E0 C1/41BE: 85 32 STA $32 C1/41C0: A5 32 LDA $32 C1/41C2: 29 00 7C AND #$7C00 C1/41C5: 18 CLC C1/41C6: 65 30 ADC $30 C1/41C8: 85 34 STA $34 C1/41CA: 29 FF 83 AND #$83FF C1/41CD: D0 0B BNE $41DA C1/41CF: A5 32 LDA $32 C1/41D1: 29 FF 03 AND #$03FF C1/41D4: 05 34 ORA $34 C1/41D6: 85 32 STA $32 C1/41D8: 80 07 BRA $41E1 C1/41DA: A5 32 LDA $32 C1/41DC: 09 00 7C ORA #$7C00 C1/41DF: 85 32 STA $32 C1/41E1: A5 32 LDA $32 C1/41E3: 60 RTS ; [ ] nmi_onecolor_init: C1/41E4: A5 2C LDA $2C C1/41E6: 0A ASL C1/41E7: 0A ASL C1/41E8: 0A ASL C1/41E9: 0A ASL C1/41EA: 0A ASL C1/41EB: 29 E0 03 AND #$03E0 C1/41EE: 85 2E STA $2E C1/41F0: 0A ASL C1/41F1: 0A ASL C1/41F2: 0A ASL C1/41F3: 0A ASL C1/41F4: 0A ASL C1/41F5: 29 00 7C AND #$7C00 C1/41F8: 85 30 STA $30 C1/41FA: A5 2C LDA $2C C1/41FC: 29 1F 00 AND #$001F C1/41FF: 85 2C STA $2C C1/4201: 60 RTS ; [ ] one_downcolor_set: C1/4202: 85 32 STA $32 C1/4204: 29 1F 00 AND #$001F C1/4207: 38 SEC C1/4208: E5 2C SBC $2C C1/420A: 85 34 STA $34 C1/420C: 29 E0 7F AND #$7FE0 C1/420F: D0 0B BNE $421C C1/4211: A5 32 LDA $32 C1/4213: 29 E0 7F AND #$7FE0 C1/4216: 05 34 ORA $34 C1/4218: 85 32 STA $32 C1/421A: 80 07 BRA $4223 C1/421C: A5 32 LDA $32 C1/421E: 29 E0 7F AND #$7FE0 C1/4221: 85 32 STA $32 C1/4223: A5 32 LDA $32 C1/4225: 29 E0 03 AND #$03E0 C1/4228: 38 SEC C1/4229: E5 2E SBC $2E C1/422B: 85 34 STA $34 C1/422D: 29 1F 7C AND #$7C1F C1/4230: D0 0B BNE $423D C1/4232: A5 32 LDA $32 C1/4234: 29 1F 7C AND #$7C1F C1/4237: 05 34 ORA $34 C1/4239: 85 32 STA $32 C1/423B: 80 07 BRA $4244 C1/423D: A5 32 LDA $32 C1/423F: 29 1F 7C AND #$7C1F C1/4242: 85 32 STA $32 C1/4244: A5 32 LDA $32 C1/4246: 29 00 7C AND #$7C00 C1/4249: 38 SEC C1/424A: E5 30 SBC $30 C1/424C: 85 34 STA $34 C1/424E: 29 FF 83 AND #$83FF C1/4251: D0 0B BNE $425E C1/4253: A5 32 LDA $32 C1/4255: 29 FF 03 AND #$03FF C1/4258: 05 34 ORA $34 C1/425A: 85 32 STA $32 C1/425C: 80 07 BRA $4265 C1/425E: A5 32 LDA $32 C1/4260: 29 FF 03 AND #$03FF C1/4263: 85 32 STA $32 C1/4265: A5 32 LDA $32 C1/4267: 60 RTS ; [ Battle Menu Cursor State $39: ] C1/4268: AD 83 7B LDA $7B83 C1/426B: 10 05 BPL $4272 C1/426D: A9 1C LDA #$1C C1/426F: 8D 83 7B STA $7B83 C1/4272: 20 86 42 JSR $4286 C1/4275: AD 83 7B LDA $7B83 C1/4278: 38 SEC C1/4279: E9 04 SBC #$04 C1/427B: 8D 83 7B STA $7B83 C1/427E: C9 FC CMP #$FC C1/4280: D0 03 BNE $4285 C1/4282: 4C 4A 5A JMP $5A4A C1/4285: 60 RTS C1/4286: 7B TDC C1/4287: AA TAX C1/4288: C2 20 REP #$20 C1/428A: AD 83 7B LDA $7B83 C1/428D: 85 2C STA $2C C1/428F: 20 E4 41 JSR $41E4 C1/4292: BF 66 41 C1 LDA $C14166,X C1/4296: 49 FF FF EOR #$FFFF C1/4299: 20 02 42 JSR $4202 C1/429C: 9D 28 7E STA $7E28,X C1/429F: E8 INX C1/42A0: E8 INX C1/42A1: E0 18 00 CPX #$0018 C1/42A4: D0 EC BNE $4292 C1/42A6: 7B TDC C1/42A7: AA TAX C1/42A8: AD 83 7B LDA $7B83 C1/42AB: 85 2C STA $2C C1/42AD: 20 E4 41 JSR $41E4 C1/42B0: BF 4E 41 C1 LDA $C1414E,X C1/42B4: 49 FF FF EOR #$FFFF C1/42B7: 20 02 42 JSR $4202 C1/42BA: 9D 50 7E STA $7E50,X C1/42BD: E8 INX C1/42BE: E8 INX C1/42BF: E0 10 00 CPX #$0010 C1/42C2: D0 EC BNE $42B0 C1/42C4: 7B TDC C1/42C5: E2 20 SEP #$20 C1/42C7: 60 RTS ; [ Battle Menu Cursor State $3A: ] C1/42C8: AD 83 7B LDA $7B83 C1/42CB: 10 03 BPL $42D0 C1/42CD: 9C 83 7B STZ $7B83 C1/42D0: 20 86 42 JSR $4286 C1/42D3: AD 83 7B LDA $7B83 C1/42D6: 18 CLC C1/42D7: 69 04 ADC #$04 C1/42D9: 8D 83 7B STA $7B83 C1/42DC: C9 20 CMP #$20 C1/42DE: D0 03 BNE $42E3 C1/42E0: 4C 4A 5A JMP $5A4A C1/42E3: 60 RTS ; [ ] window_mess_open_init: C1/42E4: 20 BB 5D JSR $5DBB C1/42E7: A2 00 58 LDX #$5800 C1/42EA: 8E BF E9 STX $E9BF C1/42ED: 20 9B 63 JSR $639B C1/42F0: A2 00 5A LDX #$5A00 C1/42F3: 8E BF E9 STX $E9BF C1/42F6: 20 9B 63 JSR $639B C1/42F9: A2 00 5C LDX #$5C00 C1/42FC: 8E BF E9 STX $E9BF C1/42FF: 20 9B 63 JSR $639B C1/4302: A2 00 5E LDX #$5E00 C1/4305: 8E BF E9 STX $E9BF C1/4308: 20 9B 63 JSR $639B C1/430B: 20 6D 43 JSR $436D C1/430E: 20 AC 99 JSR $99AC C1/4311: 60 RTS ; [ ] window_mess_open: C1/4312: A2 FF FF LDX #$FFFF C1/4315: 8E 01 40 STX $4001 C1/4318: 8E 03 40 STX $4003 C1/431B: AD CA 7B LDA $7BCA C1/431E: F0 05 BEQ $4325 C1/4320: 20 2A 02 JSR $022A ; wait for vblank C1/4323: 80 ED BRA $4312 C1/4325: AD D5 64 LDA $64D5 C1/4328: D0 20 BNE $434A C1/432A: 20 4B 43 JSR $434B C1/432D: EE D5 64 INC $64D5 C1/4330: A9 3B LDA #$3B C1/4332: 8D C3 7B STA $7BC3 C1/4335: A9 01 LDA #$01 C1/4337: 8D C2 7B STA $7BC2 C1/433A: AD F0 7B LDA $7BF0 C1/433D: 0D C2 7B ORA $7BC2 C1/4340: F0 05 BEQ $4347 C1/4342: 20 2A 02 JSR $022A ; wait for vblank C1/4345: 80 F3 BRA $433A C1/4347: 20 E4 42 JSR $42E4 C1/434A: 60 RTS w_mess_all_scr_clr: C1/434B: 20 4C 99 JSR $994C C1/434E: A0 00 7C LDY #$7C00 C1/4351: 20 AC 43 JSR $43AC C1/4354: A0 40 7C LDY #$7C40 C1/4357: 20 AC 43 JSR $43AC C1/435A: A0 80 7C LDY #$7C80 C1/435D: 20 AC 43 JSR $43AC C1/4360: A0 C0 7C LDY #$7CC0 C1/4363: 20 AC 43 JSR $43AC C1/4366: A0 00 7D LDY #$7D00 C1/4369: 20 AC 43 JSR $43AC C1/436C: 60 RTS w_mess_all_scr_set: C1/436D: 20 4C 99 JSR $994C C1/4370: A2 00 31 LDX #$3100 C1/4373: A0 00 7C LDY #$7C00 C1/4376: 20 95 43 JSR $4395 C1/4379: A2 40 31 LDX #$3140 C1/437C: A0 40 7C LDY #$7C40 C1/437F: 20 95 43 JSR $4395 C1/4382: A2 80 31 LDX #$3180 C1/4385: A0 80 7C LDY #$7C80 C1/4388: 20 95 43 JSR $4395 C1/438B: A2 C0 31 LDX #$31C0 C1/438E: A0 C0 7C LDY #$7CC0 C1/4391: 20 95 43 JSR $4395 C1/4394: 60 RTS one_w_mess_scr_set: C1/4395: C2 20 REP #$20 C1/4397: 8A TXA C1/4398: A6 00 LDX $00 C1/439A: 9D 45 E7 STA $E745,X C1/439D: 1A INC C1/439E: 9D 85 E7 STA $E785,X C1/43A1: 1A INC C1/43A2: E8 INX C1/43A3: E8 INX C1/43A4: E0 34 00 CPX #$0034 C1/43A7: D0 F1 BNE $439A C1/43A9: 7B TDC C1/43AA: E2 20 SEP #$20 C1/43AC: A2 80 00 LDX #$0080 C1/43AF: 86 10 STX $10 C1/43B1: A2 3F E7 LDX #$E73F C1/43B4: A9 7E LDA #$7E C1/43B6: 4C 8D 19 JMP $198D ; init large data DMA to VRAM C1/43B9: 20 4B 43 JSR $434B C1/43BC: A2 00 10 LDX #$1000 C1/43BF: 86 10 STX $10 C1/43C1: A2 C0 7F LDX #$7FC0 C1/43C4: A0 00 58 LDY #$5800 C1/43C7: A9 C4 LDA #$C4 C1/43C9: 4C 8D 19 JMP $198D ; init large data DMA to VRAM C1/43CC: AD D5 64 LDA $64D5 C1/43CF: F0 10 BEQ $43E1 C1/43D1: 20 B9 43 JSR $43B9 C1/43D4: A9 3C LDA #$3C C1/43D6: 8D C3 7B STA $7BC3 C1/43D9: A9 02 LDA #$02 C1/43DB: 8D C2 7B STA $7BC2 C1/43DE: 9C D5 64 STZ $64D5 C1/43E1: 60 RTS ; [ Battle Menu State $22: ] window_close: C1/43E2: AE CA 62 LDX $62CA C1/43E5: AD CC 7B LDA $7BCC C1/43E8: D0 04 BNE $43EE C1/43EA: A9 FF LDA #$FF C1/43EC: 80 38 BRA $4426 C1/43EE: C9 02 CMP #$02 C1/43F0: D0 32 BNE $4424 C1/43F2: 7B TDC C1/43F3: AA TAX C1/43F4: BD 01 40 LDA $4001,X C1/43F7: C9 FF CMP #$FF C1/43F9: F0 03 BEQ $43FE C1/43FB: FE 01 40 INC $4001,X C1/43FE: E8 INX C1/43FF: E0 04 00 CPX #$0004 C1/4402: D0 F0 BNE $43F4 C1/4404: 7B TDC C1/4405: AA TAX C1/4406: 64 10 STZ $10 C1/4408: 86 12 STX $12 C1/440A: BD 01 40 LDA $4001,X C1/440D: C9 FF CMP #$FF C1/440F: F0 08 BEQ $4419 C1/4411: C5 10 CMP $10 C1/4413: 90 04 BCC $4419 C1/4415: 85 10 STA $10 C1/4417: 86 12 STX $12 C1/4419: E8 INX C1/441A: E0 04 00 CPX #$0004 C1/441D: D0 EB BNE $440A C1/441F: A6 12 LDX $12 C1/4421: 7B TDC C1/4422: 80 02 BRA $4426 C1/4424: A9 04 LDA #$04 C1/4426: 85 14 STA $14 C1/4428: BD 01 40 LDA $4001,X C1/442B: C9 FF CMP #$FF C1/442D: F0 05 BEQ $4434 C1/442F: A5 14 LDA $14 C1/4431: 9D 01 40 STA $4001,X C1/4434: 9C 41 2F STZ $2F41 ; start battle time C1/4437: 9C CA 7B STZ $7BCA C1/443A: 9C CC 7B STZ $7BCC C1/443D: 20 E9 50 JSR $50E9 ; go to next menu state C1/4440: 22 97 01 C1 JSL $C10197 C1/4444: 60 RTS ; [ Update Inventory with Obtained Items ] set_item_add_data: C1/4445: AD DB 64 LDA $64DB C1/4448: 29 0F AND #$0F C1/444A: 85 10 STA $10 C1/444C: 0A ASL C1/444D: 0A ASL C1/444E: 18 CLC C1/444F: 65 10 ADC $10 C1/4451: A8 TAY C1/4452: 84 12 STY $12 C1/4454: B9 2D 60 LDA $602D,Y ; item index C1/4457: C9 FF CMP #$FF C1/4459: F0 46 BEQ $44A1 ; return if not valid C1/445B: A2 00 00 LDX #$0000 C1/445E: DD 86 26 CMP $2686,X ; find the item in the inventory C1/4461: F0 21 BEQ $4484 C1/4463: E8 INX C1/4464: E8 INX C1/4465: E8 INX C1/4466: E8 INX C1/4467: E8 INX C1/4468: E0 00 05 CPX #$0500 C1/446B: D0 F1 BNE $445E ; new item C1/446D: 20 D2 8C JSR $8CD2 C1/4470: B0 2F BCS $44A1 C1/4472: A9 05 LDA #$05 C1/4474: 85 10 STA $10 C1/4476: B9 2D 60 LDA $602D,Y ; copy obtained item to inventory C1/4479: 9D 86 26 STA $2686,X C1/447C: C8 INY C1/447D: E8 INX C1/447E: C6 10 DEC $10 C1/4480: D0 F4 BNE $4476 C1/4482: 80 10 BRA $4494 ; existing item C1/4484: B9 30 60 LDA $6030,Y ; item quantity C1/4487: 18 CLC C1/4488: 7D 89 26 ADC $2689,X ; add quantity to existing item slot (max 99) C1/448B: C9 64 CMP #$64 C1/448D: 90 02 BCC $4491 C1/448F: A9 63 LDA #$63 C1/4491: 9D 89 26 STA $2689,X C1/4494: A4 12 LDY $12 ; pointer to obtained items list C1/4496: A9 FF LDA #$FF C1/4498: 99 2D 60 STA $602D,Y ; clear obtained item C1/449B: EE DB 64 INC $64DB ; increment number of items added to inventory C1/449E: 4C 45 44 JMP $4445 ; next item C1/44A1: 60 RTS ; [ ] window_open: C1/44A2: A9 01 LDA #$01 C1/44A4: 8D 98 7B STA $7B98 C1/44A7: 20 45 44 JSR $4445 ; update inventory with obtained items C1/44AA: 20 59 47 JSR $4759 C1/44AD: A9 04 LDA #$04 C1/44AF: 8D C3 7B STA $7BC3 C1/44B2: A9 01 LDA #$01 C1/44B4: 8D C2 7B STA $7BC2 C1/44B7: EE BB 7B INC $7BBB ; enable menu window update C1/44BA: EE CA 7B INC $7BCA ; C1/44BD: 60 RTS ; [ Update HP/Gauge Graphics ] auto_name_chg: C1/44BE: AD 98 7B LDA $7B98 ; C1/44C1: 0D 9C 7B ORA $7B9C C1/44C4: D0 11 BNE $44D7 C1/44C6: AD 99 7B LDA $7B99 ; C1/44C9: 0A ASL C1/44CA: AA TAX C1/44CB: FC ED 44 JSR ($44ED,X) C1/44CE: AD 99 7B LDA $7B99 C1/44D1: 1A INC C1/44D2: 29 07 AND #$07 C1/44D4: 8D 99 7B STA $7B99 auto_name_chg2: C1/44D7: AD 9A 7B LDA $7B9A ; C1/44DA: 1A INC C1/44DB: 29 03 AND #$03 C1/44DD: 8D 9A 7B STA $7B9A C1/44E0: 0A ASL C1/44E1: AA TAX C1/44E2: 7C E5 44 JMP ($44E5,X) ; jump table for gauge updates (each character) C1/44E5: .DW $4ABC, $4ACA, $4ADB, $4AEC ; jump table for HP updates auto_name_chg_jmp_tbl: C1/44ED: .DW $4AFD, $4500, $4B04, $4500, $4B0D, $4500, $4B16, $44FD C1/44FD: 20 3E 4B JSR $4B3E C1/4500: EE 9C 7B INC $7B9C C1/4503: 60 RTS ; [ Update Battle Menu State ] main2jmp: C1/4504: AD BB 7B LDA $7BBB ; branch if battle menu update is disabled C1/4507: D0 0C BNE $4515 C1/4509: A6 00 LDX $00 C1/450B: 86 10 STX $10 C1/450D: AD F0 7B LDA $7BF0 ; battle menu state C1/4510: 0A ASL C1/4511: AA TAX C1/4512: 7C 17 45 JMP ($4517,X) C1/4515: 60 RTS ; [ Battle Menu State: No Effect ] C1/4516: 60 RTS ; battle menu state jump table C1/4517: .DW $4516, $50CE, $50DD, $4637, $4FF3, $466B, $50AD, $5088 C1/4527: .DW $50B6, $4FB7, $4FC4, $5098, $50B6, $4F9B, $4FA8, $4516 C1/4537: .DW $50E9, $5098, $50B6, $5088, $50B6, $5088, $50B6, $4F07 C1/4547: .DW $4F46, $4F18, $4F46, $5088, $50B6, $5088, $50B6, $50C8 C1/4557: .DW $5088, $50B6, $43E2, $4516, $4516, $4EDA, $4EF2, $503E C1/4567: .DW $5062, $5220, $5235, $45FE, $4571 ; [ Battle Menu State $2C: ] C1/4571: E6 10 INC $10 C1/4573: A9 1A LDA #$1A C1/4575: 18 CLC C1/4576: 6D BA EC ADC $ECBA C1/4579: 20 FB 50 JSR $50FB C1/457C: A9 0A LDA #$0A C1/457E: 20 65 51 JSR $5165 C1/4581: 20 8C 4F JSR $4F8C ; close menu window C1/4584: 4C F2 48 JMP $48F2 one_status_no_get: C1/4587: C2 20 REP #$20 C1/4589: BD BD 2E LDA $2EBD,X C1/458C: F0 11 BEQ $459F C1/458E: EB XBA C1/458F: A2 00 00 LDX #$0000 C1/4592: 0A ASL C1/4593: B0 06 BCS $459B C1/4595: E8 INX C1/4596: E0 10 00 CPX #$0010 C1/4599: D0 F7 BNE $4592 C1/459B: 8A TXA C1/459C: E2 20 SEP #$20 C1/459E: 60 RTS C1/459F: BD BF 2E LDA $2EBF,X C1/45A2: A2 10 00 LDX #$0010 C1/45A5: EB XBA C1/45A6: 0A ASL C1/45A7: B0 06 BCS $45AF C1/45A9: E8 INX C1/45AA: E0 1F 00 CPX #$001F C1/45AD: D0 F7 BNE $45A6 C1/45AF: 8A TXA C1/45B0: E2 20 SEP #$20 C1/45B2: 60 RTS C1/45B3: AA TAX C1/45B4: BD D6 64 LDA $64D6,X C1/45B7: 30 08 BMI $45C1 C1/45B9: 0A ASL C1/45BA: 0A ASL C1/45BB: 0A ASL C1/45BC: 0A ASL C1/45BD: 0A ASL C1/45BE: AA TAX C1/45BF: 38 SEC C1/45C0: 60 RTS C1/45C1: 18 CLC C1/45C2: 60 RTS status_buf_set: C1/45C3: A9 21 LDA #$21 C1/45C5: 20 5A 4E JSR $4E5A ; update menu text buffer C1/45C8: 7B TDC C1/45C9: 20 B3 45 JSR $45B3 C1/45CC: 90 2D BCC $45FB C1/45CE: 20 87 45 JSR $4587 C1/45D1: 8D D6 56 STA $56D6 C1/45D4: A9 01 LDA #$01 C1/45D6: 20 B3 45 JSR $45B3 C1/45D9: 90 20 BCC $45FB C1/45DB: 20 87 45 JSR $4587 C1/45DE: 8D D9 56 STA $56D9 C1/45E1: A9 02 LDA #$02 C1/45E3: 20 B3 45 JSR $45B3 C1/45E6: 90 13 BCC $45FB C1/45E8: 20 87 45 JSR $4587 C1/45EB: 8D DC 56 STA $56DC C1/45EE: A9 03 LDA #$03 C1/45F0: 20 B3 45 JSR $45B3 C1/45F3: 90 06 BCC $45FB C1/45F5: 20 87 45 JSR $4587 C1/45F8: 8D DF 56 STA $56DF C1/45FB: 4C B1 66 JMP $66B1 ; write menu text ; [ Battle Menu State $2B: ] disp_window_open: C1/45FE: A9 22 LDA #$22 C1/4600: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4603: 20 B1 66 JSR $66B1 ; write menu text C1/4606: 20 C3 45 JSR $45C3 C1/4609: A9 11 LDA #$11 C1/460B: 20 04 47 JSR $4704 ; update menu text C1/460E: 1A INC C1/460F: 20 04 47 JSR $4704 ; update menu text C1/4612: A9 02 LDA #$02 C1/4614: 20 04 47 JSR $4704 ; update menu text C1/4617: 1A INC C1/4618: 20 04 47 JSR $4704 ; update menu text C1/461B: A9 02 LDA #$02 C1/461D: A0 53 8D LDY #$8D53 C1/4620: 20 21 47 JSR $4721 ; update battle menu tile data (-> $7A00 vram) C1/4623: A9 01 LDA #$01 C1/4625: 8D 85 7B STA $7B85 C1/4628: 64 10 STZ $10 C1/462A: A9 19 LDA #$19 C1/462C: 20 FB 50 JSR $50FB C1/462F: A9 0A LDA #$0A C1/4631: 20 65 51 JSR $5165 C1/4634: 4C 77 4F JMP $4F77 ; [ Battle Menu State $03: ] command_window_open: C1/4637: AE CA 62 LDX $62CA C1/463A: BD CC 62 LDA $62CC,X C1/463D: D0 09 BNE $4648 C1/463F: AD 2E 2F LDA $2F2E C1/4642: F0 04 BEQ $4648 C1/4644: A9 16 LDA #$16 C1/4646: 80 02 BRA $464A C1/4648: A9 01 LDA #$01 C1/464A: 20 FB 50 JSR $50FB C1/464D: 7B TDC C1/464E: 20 65 51 JSR $5165 C1/4651: 20 AC 47 JSR $47AC C1/4654: 20 77 4F JSR $4F77 C1/4657: EE BB 7B INC $7BBB C1/465A: A9 01 LDA #$01 C1/465C: 8D F0 7B STA $7BF0 C1/465F: 8D 85 7B STA $7B85 C1/4662: EE DD 7B INC $7BDD C1/4665: EE D1 7B INC $7BD1 C1/4668: E6 93 INC $93 C1/466A: 60 RTS ; [ Battle Menu State $05: ] command_window_close: C1/466B: E6 10 INC $10 C1/466D: 7B TDC C1/466E: 20 FB 50 JSR $50FB C1/4671: 20 2B 4B JSR $4B2B ; get character's battle menu position C1/4674: A9 21 LDA #$21 C1/4676: 20 80 47 JSR $4780 C1/4679: 7B TDC C1/467A: 20 65 51 JSR $5165 C1/467D: EE EE 7B INC $7BEE C1/4680: A9 02 LDA #$02 C1/4682: 8D F0 7B STA $7BF0 C1/4685: 9C 85 7B STZ $7B85 C1/4688: EE DD 7B INC $7BDD C1/468B: EE D1 7B INC $7BD1 C1/468E: 60 RTS ; [ ] window_tfr_buf_clr: C1/468F: A0 EE 01 LDY #$01EE window_tfr_buf_clr2: C1/4692: C2 20 REP #$20 C1/4694: A6 00 LDX $00 C1/4696: 98 TYA C1/4697: 9D 55 58 STA $5855,X C1/469A: E8 INX C1/469B: E8 INX C1/469C: E0 80 02 CPX #$0280 C1/469F: D0 F6 BNE $4697 C1/46A1: 7B TDC C1/46A2: E2 20 SEP #$20 C1/46A4: 60 RTS ; [ ] scr_tmp_line_set: C1/46A5: A9 04 LDA #$04 C1/46A7: 8D FD 7A STA $7AFD C1/46AA: E2 10 SEP #$10 C1/46AC: C2 20 REP #$20 C1/46AE: 0B PHD C1/46AF: A9 00 01 LDA #$0100 ; nonzero dp C1/46B2: 48 PHA C1/46B3: 2B PLD C1/46B4: A2 00 LDX #$00 C1/46B6: BD 07 43 LDA $4307,X C1/46B9: 95 02 STA $02,X C1/46BB: 9D F7 51 STA $51F7,X C1/46BE: E8 INX C1/46BF: E8 INX C1/46C0: E8 INX C1/46C1: E8 INX C1/46C2: E0 C0 CPX #$C0 C1/46C4: D0 F0 BNE $46B6 C1/46C6: BD 07 43 LDA $4307,X C1/46C9: 95 02 STA $02,X C1/46CB: E8 INX C1/46CC: E8 INX C1/46CD: E8 INX C1/46CE: E8 INX C1/46CF: E0 F0 CPX #$F0 C1/46D1: D0 F3 BNE $46C6 C1/46D3: 2B PLD C1/46D4: 7B TDC C1/46D5: E2 20 SEP #$20 C1/46D7: C2 10 REP #$10 C1/46D9: 60 RTS ; [ Copy Menu Text ] ; +$10: source address ; +$12: destination address ; +$14: size ; +$16: number of lines box_data_copy: C1/46DA: E2 10 SEP #$10 C1/46DC: C2 20 REP #$20 C1/46DE: A6 16 LDX $16 C1/46E0: A4 00 LDY $00 C1/46E2: B1 10 LDA ($10),Y C1/46E4: 91 12 STA ($12),Y C1/46E6: C8 INY C1/46E7: C8 INY C1/46E8: C4 14 CPY $14 C1/46EA: D0 F6 BNE $46E2 C1/46EC: A5 10 LDA $10 C1/46EE: 18 CLC C1/46EF: 65 14 ADC $14 C1/46F1: 85 10 STA $10 C1/46F3: A5 12 LDA $12 C1/46F5: 18 CLC C1/46F6: 69 40 00 ADC #$0040 C1/46F9: 85 12 STA $12 C1/46FB: CA DEX C1/46FC: D0 E2 BNE $46E0 C1/46FE: 7B TDC C1/46FF: C2 10 REP #$10 C1/4701: E2 20 SEP #$20 C1/4703: 60 RTS ; [ Update Menu Text ] ; A = text region ; 0: monster names set_box_data: C1/4704: 48 PHA C1/4705: 0A ASL C1/4706: 0A ASL C1/4707: 0A ASL C1/4708: AA TAX C1/4709: A4 00 LDY $00 C1/470B: BF 9E DF C2 LDA $C2DF9E,X C1/470F: 99 10 00 STA $0010,Y C1/4712: E8 INX C1/4713: C8 INY C1/4714: C0 08 00 CPY #$0008 C1/4717: D0 F2 BNE $470B C1/4719: 20 DA 46 JSR $46DA C1/471C: 68 PLA C1/471D: 60 RTS ; [ Update Battle Menu Tile Data ] ; A: vram destination (0 = $7800, 1 = $7900, 2 = $7A00, 3 = $7C00) ; +Y: source address tfr_poi_set: C1/471E: A0 55 58 LDY #$5855 ; tile data pointer tfr_poi_set2: C1/4721: 5A PHY C1/4722: 48 PHA C1/4723: AD BB 7B LDA $7BBB C1/4726: F0 05 BEQ $472D ; branch if battle menu update is not pending C1/4728: 20 24 1A JSR $1A24 ; wait for vblank C1/472B: 80 F6 BRA $4723 C1/472D: 68 PLA C1/472E: 0A ASL C1/472F: 0A ASL C1/4730: AA TAX C1/4731: C2 20 REP #$20 C1/4733: BF 49 47 C1 LDA $C14749,X ; size ??? (unused) C1/4737: 8D BC 7B STA $7BBC C1/473A: BF 4B 47 C1 LDA $C1474B,X ; bg2 tile data destination (vram) C1/473E: 8D BE 7B STA $7BBE C1/4741: 7A PLY C1/4742: 8C C0 7B STY $7BC0 ; source address C1/4745: 7B TDC C1/4746: E2 20 SEP #$20 C1/4748: 60 RTS tfr_poi_tbl: C1/4749: .DW $0200, $7800, $0200, $7900, $0200, $7A00, $0280, $7C00 ; [ Update Monster Names ] normal_window_data_set: C1/4759: 7B TDC C1/475A: 20 04 47 JSR $4704 ; update menu text C1/475D: 1A INC C1/475E: 20 04 47 JSR $4704 ; update menu text C1/4761: 1A INC C1/4762: 20 04 47 JSR $4704 ; update menu text C1/4765: 1A INC C1/4766: 20 04 47 JSR $4704 ; update menu text C1/4769: 7B TDC C1/476A: 4C 1E 47 JMP $471E ; update battle menu tile data (-> $7800 vram) C1/476D: .DB $00, $1C, $38, $54 ; [ ] ; unused C1/4771: 7B TDC C1/4772: AA TAX C1/4773: A9 21 LDA #$21 C1/4775: 9D 96 5B STA $5B96,X C1/4778: E8 INX C1/4779: E8 INX C1/477A: E0 70 00 CPX #$0070 C1/477D: D0 F6 BNE $4775 C1/477F: 60 RTS ; [ ] player_name_buf_attr_set: C1/4780: 48 PHA C1/4781: DA PHX C1/4782: 7B TDC C1/4783: AA TAX C1/4784: A9 21 LDA #$21 C1/4786: 20 91 47 JSR $4791 C1/4789: E8 INX C1/478A: E0 04 00 CPX #$0004 C1/478D: D0 F5 BNE $4784 C1/478F: FA PLX C1/4790: 68 PLA L_10_LL041: C1/4791: DA PHX C1/4792: 48 PHA C1/4793: 8A TXA C1/4794: 29 03 AND #$03 C1/4796: AA TAX C1/4797: BF 6D 47 C1 LDA $C1476D,X C1/479B: AA TAX C1/479C: A9 0E LDA #$0E C1/479E: 85 12 STA $12 C1/47A0: 68 PLA C1/47A1: 9D 96 5B STA $5B96,X C1/47A4: E8 INX C1/47A5: E8 INX C1/47A6: C6 12 DEC $12 C1/47A8: D0 F7 BNE $47A1 C1/47AA: FA PLX C1/47AB: 60 RTS ; [ Draw Character Battle Commands ] command_window_data_set: C1/47AC: AE CA 62 LDX $62CA ; active character C1/47AF: BD CC 62 LDA $62CC,X C1/47B2: D0 3A BNE $47EE ; branch if controlling a monster C1/47B4: AD 2E 2F LDA $2F2E C1/47B7: F0 77 BEQ $4830 ; branch if window mode ; short mode C1/47B9: A9 1F LDA #$1F C1/47BB: 20 5A 4E JSR $4E5A ; update menu text buffer C1/47BE: AE CA 62 LDX $62CA C1/47C1: BF 5B 4B C1 LDA $C14B5B,X C1/47C5: AA TAX C1/47C6: 7B TDC C1/47C7: A8 TAY C1/47C8: BD 2E 20 LDA $202E,X C1/47CB: 99 DA 56 STA $56DA,Y C1/47CE: BD 2F 20 LDA $202F,X C1/47D1: 20 6B 4B JSR $4B6B C1/47D4: 19 D8 56 ORA $56D8,Y C1/47D7: 99 D8 56 STA $56D8,Y C1/47DA: E8 INX C1/47DB: E8 INX C1/47DC: E8 INX C1/47DD: 98 TYA C1/47DE: 18 CLC C1/47DF: 69 09 ADC #$09 C1/47E1: A8 TAY C1/47E2: C9 24 CMP #$24 C1/47E4: D0 E2 BNE $47C8 C1/47E6: 20 B1 66 JSR $66B1 ; write menu text C1/47E9: A9 01 LDA #$01 C1/47EB: 4C 1E 47 JMP $471E ; update battle menu tile data (-> $7900 vram) ; controlling a monster C1/47EE: 20 2B 4B JSR $4B2B ; get character's battle menu position C1/47F1: A9 29 LDA #$29 C1/47F3: 20 80 47 JSR $4780 C1/47F6: A9 01 LDA #$01 C1/47F8: 20 04 47 JSR $4704 ; update menu text C1/47FB: A9 20 LDA #$20 C1/47FD: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4800: AE CA 62 LDX $62CA C1/4803: BF 5B 4B C1 LDA $C14B5B,X C1/4807: AA TAX C1/4808: 7B TDC C1/4809: A8 TAY C1/480A: BD 5E 20 LDA $205E,X C1/480D: 99 D9 56 STA $56D9,Y C1/4810: BD 5F 20 LDA $205F,X C1/4813: 20 6B 4B JSR $4B6B C1/4816: 19 D7 56 ORA $56D7,Y C1/4819: 99 D7 56 STA $56D7,Y C1/481C: E8 INX C1/481D: E8 INX C1/481E: E8 INX C1/481F: 98 TYA C1/4820: 18 CLC C1/4821: 69 08 ADC #$08 C1/4823: A8 TAY C1/4824: C9 20 CMP #$20 C1/4826: D0 E2 BNE $480A C1/4828: 20 B1 66 JSR $66B1 ; write menu text C1/482B: A9 01 LDA #$01 C1/482D: 4C 1E 47 JMP $471E ; update battle menu tile data (-> $7900 vram) ; window mode C1/4830: 20 2B 4B JSR $4B2B ; get character's battle menu position C1/4833: A9 29 LDA #$29 C1/4835: 20 80 47 JSR $4780 C1/4838: A9 01 LDA #$01 C1/483A: 20 04 47 JSR $4704 ; update menu text C1/483D: A9 04 LDA #$04 C1/483F: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4842: AE CA 62 LDX $62CA C1/4845: BF 5B 4B C1 LDA $C14B5B,X ; pointer to battle command data C1/4849: AA TAX C1/484A: 7B TDC C1/484B: A8 TAY C1/484C: BD 2E 20 LDA $202E,X ; command C1/484F: 99 DA 56 STA $56DA,Y C1/4852: BD 2F 20 LDA $202F,X ; C1/4855: 20 6B 4B JSR $4B6B ; get enabled/disabled text color C1/4858: 19 D8 56 ORA $56D8,Y C1/485B: 99 D8 56 STA $56D8,Y C1/485E: E8 INX C1/485F: E8 INX C1/4860: E8 INX C1/4861: 98 TYA C1/4862: 18 CLC C1/4863: 69 08 ADC #$08 C1/4865: A8 TAY C1/4866: C9 20 CMP #$20 C1/4868: D0 E2 BNE $484C C1/486A: 20 B1 66 JSR $66B1 ; write menu text C1/486D: A9 01 LDA #$01 C1/486F: 4C 1E 47 JMP $471E ; update battle menu tile data (-> $7900 vram) ; [ Init BG Tile Data for SwdTech Numerals ] ken_window_data_set: C1/4872: AE CA 62 LDX $62CA ; active character C1/4875: A9 07 LDA #$07 C1/4877: 38 SEC C1/4878: ED 20 20 SBC $2020 ; number of known swdtechs C1/487B: AA TAX C1/487C: 7B TDC C1/487D: A8 TAY C1/487E: BF 60 A8 C2 LDA $C2A860,X ; palette data for swdtech menu C1/4882: 99 DA 5D STA $5DDA,Y C1/4885: E8 INX C1/4886: C8 INY C1/4887: C8 INY C1/4888: C0 10 00 CPY #$0010 C1/488B: D0 F1 BNE $487E C1/488D: A9 0C LDA #$0C C1/488F: 20 04 47 JSR $4704 ; update menu text C1/4892: A9 0D LDA #$0D C1/4894: 20 04 47 JSR $4704 ; update menu text C1/4897: A9 0E LDA #$0E C1/4899: 20 04 47 JSR $4704 ; update menu text C1/489C: A9 02 LDA #$02 C1/489E: A0 53 8D LDY #$8D53 C1/48A1: 4C 21 47 JMP $4721 ; update battle menu tile data (-> $7A00 vram) ; [ ] def_window_data_set: C1/48A4: A9 0C LDA #$0C C1/48A6: 20 04 47 JSR $4704 ; update menu text C1/48A9: A9 0D LDA #$0D C1/48AB: 20 04 47 JSR $4704 ; update menu text C1/48AE: AD 2E 2F LDA $2F2E C1/48B1: F0 04 BEQ $48B7 C1/48B3: A9 10 LDA #$10 C1/48B5: 80 09 BRA $48C0 C1/48B7: AE CA 62 LDX $62CA C1/48BA: BD 0F 89 LDA $890F,X C1/48BD: 18 CLC C1/48BE: 69 08 ADC #$08 C1/48C0: 20 04 47 JSR $4704 ; update menu text C1/48C3: A9 02 LDA #$02 C1/48C5: A0 53 8D LDY #$8D53 C1/48C8: 4C 21 47 JMP $4721 ; update battle menu tile data (-> $7A00 vram) C1/48CB: A9 0C LDA #$0C C1/48CD: 20 04 47 JSR $4704 ; update menu text C1/48D0: A9 0D LDA #$0D C1/48D2: 20 04 47 JSR $4704 ; update menu text C1/48D5: AD 2E 2F LDA $2F2E C1/48D8: F0 04 BEQ $48DE C1/48DA: A9 0F LDA #$0F C1/48DC: 80 09 BRA $48E7 C1/48DE: AE CA 62 LDX $62CA C1/48E1: BD 0F 89 LDA $890F,X C1/48E4: 18 CLC C1/48E5: 69 04 ADC #$04 C1/48E7: 20 04 47 JSR $4704 ; update menu text C1/48EA: A9 02 LDA #$02 C1/48EC: A0 53 8D LDY #$8D53 C1/48EF: 4C 21 47 JMP $4721 ; update battle menu tile data (-> $7A00 vram) ; [ ] tmp_buffer_copy: C1/48F2: 8B PHB C1/48F3: C2 20 REP #$20 C1/48F5: A2 55 58 LDX #$5855 C1/48F8: A0 53 8D LDY #$8D53 C1/48FB: A9 FF 01 LDA #$01FF C1/48FE: 54 7E 7E MVN $7E,$7E C1/4901: 7B TDC C1/4902: E2 20 SEP #$20 C1/4904: AB PLB C1/4905: 60 RTS ; [ ] C1/4906: 84 10 STY $10 C1/4908: C2 20 REP #$20 C1/490A: A9 10 00 LDA #$0010 C1/490D: 85 18 STA $18 C1/490F: BF 00 A8 C2 LDA $C2A800,X C1/4913: 0A ASL C1/4914: DA PHX C1/4915: AA TAX C1/4916: BF 5B 49 C1 LDA $C1495B,X C1/491A: 85 16 STA $16 C1/491C: FA PLX C1/491D: A9 02 00 LDA #$0002 C1/4920: 85 14 STA $14 C1/4922: A5 10 LDA $10 C1/4924: 8F 16 21 00 STA $002116 C1/4928: A5 16 LDA $16 C1/492A: 8F 18 21 00 STA $002118 C1/492E: 1A INC C1/492F: 8F 18 21 00 STA $002118 C1/4933: 1A INC C1/4934: 8F 18 21 00 STA $002118 C1/4938: 1A INC C1/4939: 8F 18 21 00 STA $002118 C1/493D: A5 10 LDA $10 C1/493F: 18 CLC C1/4940: 69 20 00 ADC #$0020 C1/4943: 85 10 STA $10 C1/4945: A5 16 LDA $16 C1/4947: 18 CLC C1/4948: 69 10 00 ADC #$0010 C1/494B: 85 16 STA $16 C1/494D: C6 14 DEC $14 C1/494F: D0 D1 BNE $4922 C1/4951: E8 INX C1/4952: E8 INX C1/4953: C6 18 DEC $18 C1/4955: D0 B8 BNE $490F C1/4957: 7B TDC C1/4958: E2 20 SEP #$20 C1/495A: 60 RTS C1/495B: .DW $0640, $0644, $0648, $064C, $0660, $0664, $0668, $066C ; [ ] bg1_window_init: C1/496B: A0 09 6C LDY #$6C09 C1/496E: A2 00 00 LDX #$0000 C1/4971: 20 06 49 JSR $4906 C1/4974: A0 0E 6C LDY #$6C0E C1/4977: A2 20 00 LDX #$0020 C1/497A: 20 06 49 JSR $4906 C1/497D: A0 13 6C LDY #$6C13 C1/4980: A2 40 00 LDX #$0040 C1/4983: 20 06 49 JSR $4906 C1/4986: A0 EE 00 LDY #$00EE C1/4989: 20 92 46 JSR $4692 C1/498C: 7B TDC C1/498D: AA TAX C1/498E: A8 TAY C1/498F: BF 37 4A C1 LDA $C14A37,X C1/4993: 99 83 58 STA $5883,Y C1/4996: BF 4C 4A C1 LDA $C14A4C,X C1/499A: 99 84 58 STA $5884,Y C1/499D: BF 3E 4A C1 LDA $C14A3E,X C1/49A1: 99 03 59 STA $5903,Y C1/49A4: BF 53 4A C1 LDA $C14A53,X C1/49A8: 99 04 59 STA $5904,Y C1/49AB: BF 45 4A C1 LDA $C14A45,X C1/49AF: 99 83 59 STA $5983,Y C1/49B2: BF 5A 4A C1 LDA $C14A5A,X C1/49B6: 99 84 59 STA $5984,Y C1/49B9: C8 INY C1/49BA: C8 INY C1/49BB: E8 INX C1/49BC: E0 07 00 CPX #$0007 C1/49BF: D0 CE BNE $498F C1/49C1: A2 80 01 LDX #$0180 C1/49C4: 86 36 STX $36 C1/49C6: A2 55 58 LDX #$5855 C1/49C9: A0 A0 6A LDY #$6AA0 C1/49CC: A9 7E LDA #$7E C1/49CE: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/49D1: 7B TDC C1/49D2: A8 TAY C1/49D3: B9 83 58 LDA $5883,Y C1/49D6: 99 15 5D STA $5D15,Y C1/49D9: B9 03 59 LDA $5903,Y C1/49DC: 99 23 5D STA $5D23,Y C1/49DF: C8 INY C1/49E0: C0 0E 00 CPY #$000E C1/49E3: D0 EE BNE $49D3 C1/49E5: 20 17 5A JSR $5A17 C1/49E8: A9 06 LDA #$06 C1/49EA: 20 5A 4E JSR $4E5A ; update menu text buffer C1/49ED: 20 B1 66 JSR $66B1 ; write menu text C1/49F0: A2 80 00 LDX #$0080 C1/49F3: 86 36 STX $36 C1/49F5: A2 4D 5E LDX #$5E4D C1/49F8: A9 7E LDA #$7E C1/49FA: A0 00 7E LDY #$7E00 C1/49FD: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/4A00: 60 RTS ; [ ] window_name_buf_init: C1/4A01: 20 61 4A JSR $4A61 C1/4A04: 20 8F 4A JSR $4A8F C1/4A07: 20 23 4B JSR $4B23 C1/4A0A: 20 4B 4B JSR $4B4B C1/4A0D: 20 68 4A JSR $4A68 C1/4A10: A9 1E LDA #$1E C1/4A12: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4A15: AE CA 62 LDX $62CA C1/4A18: A9 07 LDA #$07 C1/4A1A: 38 SEC C1/4A1B: ED 20 20 SBC $2020 C1/4A1E: AA TAX C1/4A1F: 7B TDC C1/4A20: A8 TAY C1/4A21: BF 60 A8 C2 LDA $C2A860,X ; palette data for swdtech menu C1/4A25: 99 D8 56 STA $56D8,Y C1/4A28: E8 INX C1/4A29: C8 INY C1/4A2A: C8 INY C1/4A2B: C8 INY C1/4A2C: C0 18 00 CPY #$0018 C1/4A2F: D0 F0 BNE $4A21 C1/4A31: 20 B1 66 JSR $66B1 ; write menu text C1/4A34: 4C 53 4B JMP $4B53 C1/4A37: .DB $08, $08, $08, $15, $08, $08, $08 C1/4A3E: .DB $08, $08, $08, $FF, $19, $1A, $FF C1/4A45: .DB $FF, $16, $17, $17, $18, $17, $18 C1/4A4C: .DB $02, $02, $02, $02, $02, $02, $02 C1/4A53: .DB $02, $02, $02, $00, $02, $02, $00 C1/4A5A: .DB $00, $02, $02, $02, $02, $02, $02 ; [ Update Monster Names ] monster_name_buf_set: C1/4A61: 7B TDC C1/4A62: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4A65: 4C B1 66 JMP $66B1 ; write menu text ; [ ] chg_name_buf_set: C1/4A68: 7B TDC C1/4A69: AA TAX C1/4A6A: C2 20 REP #$20 C1/4A6C: A9 FF 01 LDA #$01FF C1/4A6F: 9D 31 5D STA $5D31,X C1/4A72: 9D 77 5D STA $5D77,X C1/4A75: E8 INX C1/4A76: E8 INX C1/4A77: E0 46 00 CPX #$0046 C1/4A7A: D0 F3 BNE $4A6F C1/4A7C: 7B TDC C1/4A7D: E2 20 SEP #$20 C1/4A7F: A9 08 LDA #$08 C1/4A81: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4A84: 20 B1 66 JSR $66B1 ; write menu text C1/4A87: A9 09 LDA #$09 C1/4A89: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4A8C: 4C B1 66 JMP $66B1 ; write menu text ; [ ] player_name_buf_set: C1/4A8F: A9 01 LDA #$01 C1/4A91: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4A94: 4C B1 66 JMP $66B1 ; write menu text ; [ Update Gauge/Condemned Buffers ] ; A = character number ; A = 0 if not morphed, 4 if morphed (out) get_name_main_offset: C1/4A97: AA TAX C1/4A98: BD D6 64 LDA $64D6,X C1/4A9B: 30 1D BMI $4ABA ; return if character slot is empty C1/4A9D: 29 03 AND #$03 C1/4A9F: AA TAX C1/4AA0: BD 22 20 LDA $2022,X ; ATB gauge C1/4AA3: 9D 9E 61 STA $619E,X C1/4AA6: BD 26 20 LDA $2026,X ; morph gauge C1/4AA9: 9D A2 61 STA $61A2,X C1/4AAC: BD 2A 20 LDA $202A,X ; condemned number C1/4AAF: 9D A6 61 STA $61A6,X C1/4AB2: BD 26 20 LDA $2026,X ; branch if not morphed C1/4AB5: F0 03 BEQ $4ABA C1/4AB7: A9 04 LDA #$04 C1/4AB9: 60 RTS C1/4ABA: 7B TDC C1/4ABB: 60 RTS C1/4ABC: 7B TDC C1/4ABD: 20 97 4A JSR $4A97 ; update gauge/condemned buffers C1/4AC0: 18 CLC C1/4AC1: 69 12 ADC #$12 C1/4AC3: 20 1D 4B JSR $4B1D C1/4AC6: 9C 9B 7B STZ $7B9B C1/4AC9: 60 RTS C1/4ACA: A9 01 LDA #$01 C1/4ACC: 20 97 4A JSR $4A97 ; update gauge/condemned buffers C1/4ACF: 18 CLC C1/4AD0: 69 13 ADC #$13 C1/4AD2: 20 1D 4B JSR $4B1D C1/4AD5: A9 01 LDA #$01 C1/4AD7: 8D 9B 7B STA $7B9B C1/4ADA: 60 RTS C1/4ADB: A9 02 LDA #$02 C1/4ADD: 20 97 4A JSR $4A97 ; update gauge/condemned buffers C1/4AE0: 18 CLC C1/4AE1: 69 14 ADC #$14 C1/4AE3: 20 1D 4B JSR $4B1D C1/4AE6: A9 02 LDA #$02 C1/4AE8: 8D 9B 7B STA $7B9B C1/4AEB: 60 RTS C1/4AEC: A9 03 LDA #$03 C1/4AEE: 20 97 4A JSR $4A97 ; update gauge/condemned buffers C1/4AF1: 18 CLC C1/4AF2: 69 15 ADC #$15 C1/4AF4: 20 1D 4B JSR $4B1D C1/4AF7: A9 03 LDA #$03 C1/4AF9: 8D 9B 7B STA $7B9B C1/4AFC: 60 RTS C1/4AFD: 9C 9D 7B STZ $7B9D C1/4B00: A9 0E LDA #$0E C1/4B02: 80 19 BRA $4B1D C1/4B04: A9 01 LDA #$01 C1/4B06: 8D 9D 7B STA $7B9D C1/4B09: A9 0F LDA #$0F C1/4B0B: 80 10 BRA $4B1D C1/4B0D: A9 02 LDA #$02 C1/4B0F: 8D 9D 7B STA $7B9D C1/4B12: A9 10 LDA #$10 C1/4B14: 80 07 BRA $4B1D C1/4B16: A9 03 LDA #$03 C1/4B18: 8D 9D 7B STA $7B9D C1/4B1B: A9 11 LDA #$11 ; fall through player_name_main: C1/4B1D: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4B20: 4C B1 66 JMP $66B1 ; write menu text player_hp_name_buf_set: C1/4B23: A9 02 LDA #$02 C1/4B25: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4B28: 4C B1 66 JMP $66B1 ; write menu text ; [ Get Character's Battle Menu Position ] ; empty character slots are pushed to the bottom of the battle menu order ; for example, if slot 1 is empty, the battle menu order would be 2, 3, 4, empty get_player_name_poi: C1/4B2B: 7B TDC C1/4B2C: AA TAX C1/4B2D: AD CA 62 LDA $62CA ; character slot C1/4B30: DD D6 64 CMP $64D6,X C1/4B33: F0 08 BEQ $4B3D ; branch if C1/4B35: E8 INX C1/4B36: E0 04 00 CPX #$0004 C1/4B39: D0 F5 BNE $4B30 C1/4B3B: 7B TDC C1/4B3C: AA TAX C1/4B3D: 60 RTS ; [ ] one_player_mp_name_buf_set: C1/4B3E: 20 2B 4B JSR $4B2B ; get character's battle menu position C1/4B41: 8A TXA C1/4B42: 18 CLC C1/4B43: 69 0A ADC #$0A C1/4B45: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4B48: 4C B1 66 JMP $66B1 ; write menu text ; [ ] player_mp_name_buf_set: C1/4B4B: A9 07 LDA #$07 C1/4B4D: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4B50: 4C B1 66 JMP $66B1 ; write menu text ; [ ] player_hpmax_name_buf_set: C1/4B53: A9 03 LDA #$03 C1/4B55: 20 5A 4E JSR $4E5A ; update menu text buffer C1/4B58: 4C B1 66 JMP $66B1 ; write menu text ; pointers to character battle commands (+$202E) C1/4B5B: .DB $00, $0C, $18, $24 ; pointers to character spell/lore lists (+$208E) buf_magic_poi: C1/4B5F: .DW $0000, $013C, $0278, $03B4 ; pointers to character equipped weapon/shield data (+$7E2B86) buf_hand_poi: C1/4B67: .DB $00, $05, $0A, $0F ; [ Get Enabled/Disabled Text Color ] ; A: msb set = gray, msb clear = white get_attr_info: C1/4B6B: 29 80 AND #$80 ; "disabled" flag >> 5 C1/4B6D: 4A LSR C1/4B6E: 4A LSR C1/4B6F: 4A LSR C1/4B70: 4A LSR C1/4B71: 4A LSR C1/4B72: 60 RTS ; [ ] get_attr_info2: C1/4B73: 25 40 AND $40 C1/4B75: F0 03 BEQ $4B7A C1/4B77: A9 04 LDA #$04 C1/4B79: 60 RTS C1/4B7A: AD 0D 89 LDA $890D C1/4B7D: C9 FF CMP #$FF C1/4B7F: F0 28 BEQ $4BA9 C1/4B81: A5 2C LDA $2C C1/4B83: C9 FF CMP #$FF C1/4B85: F0 22 BEQ $4BA9 C1/4B87: AE CA 62 LDX $62CA C1/4B8A: BD 6E 2E LDA $2E6E,X C1/4B8D: F0 0F BEQ $4B9E C1/4B8F: AD 0E 89 LDA $890E C1/4B92: 29 08 AND #$08 C1/4B94: F0 13 BEQ $4BA9 C1/4B96: A5 2D LDA $2D C1/4B98: 29 08 AND #$08 C1/4B9A: D0 DB BNE $4B77 C1/4B9C: 80 0B BRA $4BA9 C1/4B9E: A5 2D LDA $2D C1/4BA0: 0D 0E 89 ORA $890E C1/4BA3: 29 18 AND #$18 C1/4BA5: C9 18 CMP #$18 C1/4BA7: D0 CE BNE $4B77 C1/4BA9: A9 08 LDA #$08 C1/4BAB: 60 RTS C1/4BAC: .DB $05, $02, $04, $21, $0E, $00, $FF, $FF, $04, $21, $0E, $00, $FF, $00 ; [ ] hand_line_mess_set: C1/4BBA: 7B TDC C1/4BBB: AA TAX C1/4BBC: BF AC 4B C1 LDA $C14BAC,X C1/4BC0: 9D 55 57 STA $5755,X C1/4BC3: E8 INX C1/4BC4: E0 13 00 CPX #$0013 C1/4BC7: D0 F3 BNE $4BBC C1/4BC9: AE CA 62 LDX $62CA C1/4BCC: BF 67 4B C1 LDA $C14B67,X C1/4BD0: A8 TAY C1/4BD1: BF 01 1A C1 LDA $C11A01,X C1/4BD5: 85 40 STA $40 C1/4BD7: B9 86 2B LDA $2B86,Y C1/4BDA: 8D 5A 57 STA $575A C1/4BDD: B9 9A 2B LDA $2B9A,Y C1/4BE0: 8D 60 57 STA $5760 C1/4BE3: 20 07 4E JSR $4E07 C1/4BE6: 4C AB 63 JMP $63AB item_win_data: C1/4BE9: .DB $05, $02, $04, $21, $0E, $00, $FF, $FF, $04, $21, $0E, $00, $FF, $00 ; 05 02 draw two spaces ; 04 21 change tile flags to $21 (white font color) ; 0E 00 draw item name ($00 gets replaced with item id) ; FF space ; FF space ; 04 21 change tile flags to $21 (white font color) ; 0E 00 draw item name ($00 gets replaced with item id) ; FF space ; 00 end of string ; [ ] machine_line_mess_set: C1/4BF7: 5A PHY C1/4BF8: C2 20 REP #$20 C1/4BFA: 0A ASL C1/4BFB: 85 40 STA $40 C1/4BFD: 0A ASL C1/4BFE: 18 CLC C1/4BFF: 65 40 ADC $40 C1/4C01: A8 TAY C1/4C02: 7B TDC C1/4C03: E2 20 SEP #$20 C1/4C05: AA TAX C1/4C06: BF E9 4B C1 LDA $C14BE9,X ; copy tools line string C1/4C0A: 9D 55 57 STA $5755,X C1/4C0D: E8 INX C1/4C0E: E0 13 00 CPX #$0013 C1/4C11: D0 F3 BNE $4C06 C1/4C13: B9 05 40 LDA $4005,Y C1/4C16: 8D 5A 57 STA $575A ; set 1st item id C1/4C19: B9 08 40 LDA $4008,Y C1/4C1C: 8D 60 57 STA $5760 ; set 2nd item id C1/4C1F: 20 07 4E JSR $4E07 C1/4C22: 20 AB 63 JSR $63AB C1/4C25: 7A PLY C1/4C26: 60 RTS ; [ ] throw_line_mess_set: C1/4C27: 5A PHY C1/4C28: C2 20 REP #$20 C1/4C2A: 85 40 STA $40 C1/4C2C: 0A ASL C1/4C2D: 18 CLC C1/4C2E: 65 40 ADC $40 C1/4C30: A8 TAY C1/4C31: 7B TDC C1/4C32: E2 20 SEP #$20 C1/4C34: AA TAX C1/4C35: BF 74 E0 C2 LDA $C2E074,X ; item in item list C1/4C39: 9D 55 57 STA $5755,X C1/4C3C: E8 INX C1/4C3D: E0 13 00 CPX #$0013 C1/4C40: D0 F3 BNE $4C35 C1/4C42: B9 05 40 LDA $4005,Y C1/4C45: C9 FF CMP #$FF C1/4C47: F0 08 BEQ $4C51 C1/4C49: B9 06 40 LDA $4006,Y C1/4C4C: 8D 5D 57 STA $575D C1/4C4F: D0 09 BNE $4C5A C1/4C51: 7B TDC C1/4C52: 8D 5D 57 STA $575D C1/4C55: A9 FF LDA #$FF C1/4C57: 8D 5B 57 STA $575B C1/4C5A: B9 05 40 LDA $4005,Y C1/4C5D: 8D 5A 57 STA $575A C1/4C60: 8D 61 57 STA $5761 C1/4C63: 20 07 4E JSR $4E07 C1/4C66: 20 AB 63 JSR $63AB C1/4C69: 7A PLY C1/4C6A: 60 RTS ; [ draw one row of inventory ] item_line_mess_set: C1/4C6B: 5A PHY C1/4C6C: C2 20 REP #$20 C1/4C6E: 85 40 STA $40 C1/4C70: 0A ASL C1/4C71: 0A ASL C1/4C72: 18 CLC C1/4C73: 65 40 ADC $40 C1/4C75: A8 TAY C1/4C76: 7B TDC C1/4C77: E2 20 SEP #$20 C1/4C79: AA TAX C1/4C7A: BF 74 E0 C2 LDA $C2E074,X ; item in item list C1/4C7E: 9D 55 57 STA $5755,X C1/4C81: E8 INX C1/4C82: E0 13 00 CPX #$0013 C1/4C85: D0 F3 BNE $4C7A C1/4C87: AE CA 62 LDX $62CA C1/4C8A: BF 01 1A C1 LDA $C11A01,X C1/4C8E: 85 40 STA $40 C1/4C90: B9 86 26 LDA $2686,Y C1/4C93: C9 FF CMP #$FF C1/4C95: F0 08 BEQ $4C9F C1/4C97: B9 89 26 LDA $2689,Y C1/4C9A: 8D 5D 57 STA $575D C1/4C9D: D0 09 BNE $4CA8 C1/4C9F: 7B TDC C1/4CA0: 8D 5D 57 STA $575D C1/4CA3: A9 FF LDA #$FF C1/4CA5: 8D 5B 57 STA $575B C1/4CA8: B9 86 26 LDA $2686,Y C1/4CAB: 8D 5A 57 STA $575A C1/4CAE: 8D 61 57 STA $5761 C1/4CB1: AD 0C 89 LDA $890C C1/4CB4: F0 18 BEQ $4CCE C1/4CB6: B9 86 26 LDA $2686,Y C1/4CB9: 85 2C STA $2C C1/4CBB: B9 87 26 LDA $2687,Y C1/4CBE: 85 2D STA $2D C1/4CC0: B9 8A 26 LDA $268A,Y C1/4CC3: 20 73 4B JSR $4B73 C1/4CC6: 0D 58 57 ORA $5758 C1/4CC9: 8D 58 57 STA $5758 C1/4CCC: 80 0C BRA $4CDA C1/4CCE: B9 87 26 LDA $2687,Y C1/4CD1: 20 6B 4B JSR $4B6B C1/4CD4: 0D 58 57 ORA $5758 C1/4CD7: 8D 58 57 STA $5758 C1/4CDA: 20 07 4E JSR $4E07 C1/4CDD: 20 AB 63 JSR $63AB C1/4CE0: 7A PLY C1/4CE1: 60 RTS ; [ ] riot_line_mess_set: C1/4CE2: 5A PHY C1/4CE3: 0A ASL C1/4CE4: A8 TAY C1/4CE5: 7B TDC C1/4CE6: AA TAX C1/4CE7: BF 67 E0 C2 LDA $C2E067,X C1/4CEB: 9D 55 57 STA $5755,X C1/4CEE: E8 INX C1/4CEF: E0 0D 00 CPX #$000D C1/4CF2: D0 F3 BNE $4CE7 C1/4CF4: B9 7E 25 LDA $257E,Y C1/4CF7: 8D 5A 57 STA $575A C1/4CFA: B9 7F 25 LDA $257F,Y C1/4CFD: 8D 60 57 STA $5760 C1/4D00: 20 07 4E JSR $4E07 C1/4D03: 20 AB 63 JSR $63AB C1/4D06: 7A PLY C1/4D07: 60 RTS ; [ ] dance_line_mess_set: C1/4D08: 5A PHY C1/4D09: 0A ASL C1/4D0A: A8 TAY C1/4D0B: 7B TDC C1/4D0C: AA TAX C1/4D0D: BF 5A E0 C2 LDA $C2E05A,X C1/4D11: 9D 55 57 STA $5755,X C1/4D14: E8 INX C1/4D15: E0 0D 00 CPX #$000D C1/4D18: D0 F3 BNE $4D0D C1/4D1A: B9 7E 26 LDA $267E,Y C1/4D1D: 8D 5A 57 STA $575A C1/4D20: B9 7F 26 LDA $267F,Y C1/4D23: 8D 60 57 STA $5760 C1/4D26: 20 07 4E JSR $4E07 C1/4D29: 20 AB 63 JSR $63AB C1/4D2C: 7A PLY C1/4D2D: 60 RTS ; [ ] madou_line_mess_set: C1/4D2E: 5A PHY C1/4D2F: 0A ASL C1/4D30: A8 TAY C1/4D31: 7B TDC C1/4D32: AA TAX C1/4D33: BF 4D E0 C2 LDA $C2E04D,X C1/4D37: 9D 55 57 STA $5755,X C1/4D3A: E8 INX C1/4D3B: E0 0D 00 CPX #$000D C1/4D3E: D0 F3 BNE $4D33 C1/4D40: 98 TYA C1/4D41: AA TAX C1/4D42: AD CA 62 LDA $62CA C1/4D45: 0A ASL C1/4D46: 0A ASL C1/4D47: 0A ASL C1/4D48: 0A ASL C1/4D49: 0A ASL C1/4D4A: A8 TAY C1/4D4B: B9 AE 2E LDA $2EAE,Y C1/4D4E: D0 10 BNE $4D60 C1/4D50: BF 0C 91 C1 LDA $C1910C,X C1/4D54: 8D 5A 57 STA $575A C1/4D57: BF 0D 91 C1 LDA $C1910D,X C1/4D5B: 8D 60 57 STA $5760 C1/4D5E: 80 0E BRA $4D6E C1/4D60: BF 14 91 C1 LDA $C19114,X C1/4D64: 8D 5A 57 STA $575A C1/4D67: BF 15 91 C1 LDA $C19115,X C1/4D6B: 8D 60 57 STA $5760 C1/4D6E: 20 07 4E JSR $4E07 C1/4D71: 20 AB 63 JSR $63AB C1/4D74: 7A PLY C1/4D75: 60 RTS ; [ ] learning_line_mess_set: C1/4D76: 5A PHY C1/4D77: 85 40 STA $40 C1/4D79: AD CA 62 LDA $62CA C1/4D7C: 0A ASL C1/4D7D: AA TAX C1/4D7E: A5 40 LDA $40 C1/4D80: C2 20 REP #$20 C1/4D82: 0A ASL C1/4D83: 0A ASL C1/4D84: 18 CLC C1/4D85: 7F 5F 4B C1 ADC $C14B5F,X C1/4D89: A8 TAY C1/4D8A: 7B TDC C1/4D8B: E2 20 SEP #$20 C1/4D8D: AA TAX C1/4D8E: BF 45 E0 C2 LDA $C2E045,X C1/4D92: 9D 55 57 STA $5755,X C1/4D95: E8 INX C1/4D96: E0 0E 00 CPX #$000E C1/4D99: D0 F3 BNE $4D8E C1/4D9B: B9 6A 21 LDA $216A,Y C1/4D9E: 8D 5B 57 STA $575B C1/4DA1: B9 6B 21 LDA $216B,Y C1/4DA4: 20 6B 4B JSR $4B6B C1/4DA7: 0D 59 57 ORA $5759 C1/4DAA: 8D 59 57 STA $5759 C1/4DAD: 20 07 4E JSR $4E07 C1/4DB0: 20 AB 63 JSR $63AB C1/4DB3: 7A PLY C1/4DB4: 60 RTS ; [ ] magic_line_mess_set: C1/4DB5: 5A PHY C1/4DB6: 0A ASL C1/4DB7: 85 40 STA $40 C1/4DB9: AD CA 62 LDA $62CA C1/4DBC: 0A ASL C1/4DBD: AA TAX C1/4DBE: A5 40 LDA $40 C1/4DC0: C2 20 REP #$20 C1/4DC2: 0A ASL C1/4DC3: 0A ASL C1/4DC4: 18 CLC C1/4DC5: 7F 5F 4B C1 ADC $C14B5F,X C1/4DC9: A8 TAY C1/4DCA: 7B TDC C1/4DCB: E2 20 SEP #$20 C1/4DCD: AA TAX C1/4DCE: BF 36 E0 C2 LDA $C2E036,X C1/4DD2: 9D 55 57 STA $5755,X C1/4DD5: E8 INX C1/4DD6: E0 10 00 CPX #$0010 C1/4DD9: D0 F3 BNE $4DCE C1/4DDB: B9 92 20 LDA $2092,Y C1/4DDE: 8D 5A 57 STA $575A C1/4DE1: B9 96 20 LDA $2096,Y C1/4DE4: 8D 60 57 STA $5760 C1/4DE7: B9 93 20 LDA $2093,Y C1/4DEA: 20 6B 4B JSR $4B6B C1/4DED: 0D 58 57 ORA $5758 C1/4DF0: 8D 58 57 STA $5758 C1/4DF3: B9 97 20 LDA $2097,Y C1/4DF6: 20 6B 4B JSR $4B6B C1/4DF9: 0D 5E 57 ORA $575E C1/4DFC: 8D 5E 57 STA $575E C1/4DFF: 20 07 4E JSR $4E07 C1/4E02: 20 AB 63 JSR $63AB C1/4E05: 7A PLY C1/4E06: 60 RTS ; [ ] set_nmi_mess_poi: C1/4E07: A2 55 57 LDX #$5755 C1/4E0A: 8E DD 88 STX $88DD C1/4E0D: A2 4D 5E LDX #$5E4D C1/4E10: 8E DF 88 STX $88DF C1/4E13: A9 20 LDA #$20 C1/4E15: 8D E1 88 STA $88E1 C1/4E18: A9 21 LDA #$21 C1/4E1A: 8D E2 88 STA $88E2 C1/4E1D: 60 RTS ; [ ] magic2_line_mess_set: C1/4E1E: 7B TDC C1/4E1F: AA TAX C1/4E20: BF 83 E0 C2 LDA $C2E083,X C1/4E24: 9D 55 57 STA $5755,X C1/4E27: E8 INX C1/4E28: E0 17 00 CPX #$0017 C1/4E2B: D0 F3 BNE $4E20 C1/4E2D: AD CA 62 LDA $62CA C1/4E30: 0A ASL C1/4E31: AA TAX C1/4E32: C2 20 REP #$20 C1/4E34: BF 5F 4B C1 LDA $C14B5F,X C1/4E38: AA TAX C1/4E39: 7B TDC C1/4E3A: E2 20 SEP #$20 C1/4E3C: BD 8E 20 LDA $208E,X C1/4E3F: 8D 61 57 STA $5761 C1/4E42: BD 91 20 LDA $2091,X C1/4E45: 8D 6A 57 STA $576A C1/4E48: BD 8F 20 LDA $208F,X C1/4E4B: 20 6B 4B JSR $4B6B C1/4E4E: 0D 5F 57 ORA $575F C1/4E51: 8D 5F 57 STA $575F C1/4E54: 20 07 4E JSR $4E07 C1/4E57: 4C AB 63 JMP $63AB ; [ Update Menu Text Buffer (BG3) ] ; A = text region ; $00: monster names ; $04: battle command names (window mode) ; $0E: character 1 morph gauge ; $0F: character 2 morph gauge ; $10: character 3 morph gauge ; $11: character 4 morph gauge ; $12: character 1 ATB gauge ; $13: character 2 ATB gauge ; $14: character 3 ATB gauge ; $15: character 4 ATB gauge ; $1F: battle command names (short mode) ; $20: battle command names (controlling a monster) mess_set_data: C1/4E5A: 48 PHA C1/4E5B: 0A ASL C1/4E5C: AA TAX C1/4E5D: A9 C2 LDA #$C2 C1/4E5F: 85 12 STA $12 C1/4E61: C2 20 REP #$20 C1/4E63: BF 9A E0 C2 LDA $C2E09A,X C1/4E67: 85 10 STA $10 C1/4E69: A4 00 LDY $00 C1/4E6B: B7 10 LDA [$10],Y C1/4E6D: 99 D5 56 STA $56D5,Y C1/4E70: C8 INY C1/4E71: C8 INY C1/4E72: C0 40 00 CPY #$0040 C1/4E75: D0 F4 BNE $4E6B C1/4E77: 7B TDC C1/4E78: E2 20 SEP #$20 C1/4E7A: 68 PLA C1/4E7B: 0A ASL C1/4E7C: 0A ASL C1/4E7D: AA TAX C1/4E7E: BF 12 DF C2 LDA $C2DF12,X C1/4E82: 8D D9 88 STA $88D9 C1/4E85: BF 13 DF C2 LDA $C2DF13,X C1/4E89: 8D DA 88 STA $88DA C1/4E8C: BF 14 DF C2 LDA $C2DF14,X C1/4E90: 8D DB 88 STA $88DB C1/4E93: A9 21 LDA #$21 C1/4E95: 8D DC 88 STA $88DC C1/4E98: A2 D5 56 LDX #$56D5 C1/4E9B: 8E D7 88 STX $88D7 C1/4E9E: 60 RTS ; [ ] get_chg_def_para: C1/4E9F: AD 2E 2F LDA $2F2E C1/4EA2: F0 0A BEQ $4EAE C1/4EA4: A9 17 LDA #$17 C1/4EA6: 20 FB 50 JSR $50FB C1/4EA9: A9 05 LDA #$05 C1/4EAB: 4C 65 51 JMP $5165 C1/4EAE: AE CA 62 LDX $62CA C1/4EB1: BD 0F 89 LDA $890F,X ; cursor position C1/4EB4: 48 PHA C1/4EB5: 18 CLC C1/4EB6: 69 0A ADC #$0A C1/4EB8: 20 FB 50 JSR $50FB C1/4EBB: 68 PLA C1/4EBC: 18 CLC C1/4EBD: 69 05 ADC #$05 C1/4EBF: 4C 65 51 JMP $5165 ; [ ] set_cgadd_sub: C1/4EC2: A6 00 LDX $00 C1/4EC4: 9D F1 8B STA $8BF1,X C1/4EC7: 9D 39 8C STA $8C39,X C1/4ECA: 9D 81 8C STA $8C81,X C1/4ECD: 9D C9 8C STA $8CC9,X C1/4ED0: E8 INX C1/4ED1: E8 INX C1/4ED2: E8 INX C1/4ED3: E8 INX C1/4ED4: E0 48 00 CPX #$0048 C1/4ED7: D0 EB BNE $4EC4 C1/4ED9: 60 RTS ; [ Battle Menu State $25: Open SwdTech Window ] ken_window_open: C1/4EDA: A9 83 LDA #$83 C1/4EDC: 20 C2 4E JSR $4EC2 C1/4EDF: A9 12 LDA #$12 C1/4EE1: 20 FB 50 JSR $50FB C1/4EE4: A9 09 LDA #$09 C1/4EE6: 20 65 51 JSR $5165 C1/4EE9: EE DB 7B INC $7BDB C1/4EEC: 20 72 48 JSR $4872 ; init bg tile data for swdtech numerals C1/4EEF: 4C 77 4F JMP $4F77 ; [ Battle Menu State $26: Close SwdTech Window ] ken_window_close: C1/4EF2: E6 10 INC $10 C1/4EF4: A9 13 LDA #$13 C1/4EF6: 20 FB 50 JSR $50FB C1/4EF9: EE DB 7B INC $7BDB C1/4EFC: A9 09 LDA #$09 C1/4EFE: 20 65 51 JSR $5165 C1/4F01: 20 8C 4F JSR $4F8C ; close menu window C1/4F04: 4C F2 48 JMP $48F2 ; [ Battle Menu State $17: Open Row Window ] chg_window_open: C1/4F07: A9 83 LDA #$83 C1/4F09: 20 C2 4E JSR $4EC2 C1/4F0C: 20 9F 4E JSR $4E9F C1/4F0F: 20 CB 48 JSR $48CB C1/4F12: EE DB 7B INC $7BDB C1/4F15: 4C 77 4F JMP $4F77 ; [ Battle Menu State $19: Open Def. Window ] def_window_open: C1/4F18: A9 83 LDA #$83 C1/4F1A: 20 C2 4E JSR $4EC2 C1/4F1D: 20 9F 4E JSR $4E9F C1/4F20: 20 A4 48 JSR $48A4 C1/4F23: AD 2E 2F LDA $2F2E C1/4F26: F0 04 BEQ $4F2C C1/4F28: A9 60 LDA #$60 C1/4F2A: 80 02 BRA $4F2E C1/4F2C: A9 30 LDA #$30 C1/4F2E: 85 10 STA $10 C1/4F30: 64 11 STZ $11 C1/4F32: C2 20 REP #$20 C1/4F34: AD D2 7B LDA $7BD2 C1/4F37: 38 SEC C1/4F38: E5 10 SBC $10 C1/4F3A: 8D D2 7B STA $7BD2 C1/4F3D: 7B TDC C1/4F3E: E2 20 SEP #$20 C1/4F40: EE DB 7B INC $7BDB C1/4F43: 4C 77 4F JMP $4F77 ; [ Battle Menu State $18/$1A: Close Row/Def. Window ] chg_window_close: def_window_close: C1/4F46: E6 10 INC $10 C1/4F48: A9 01 LDA #$01 C1/4F4A: 20 65 51 JSR $5165 C1/4F4D: AD 2E 2F LDA $2F2E C1/4F50: F0 08 BEQ $4F5A C1/4F52: A9 18 LDA #$18 C1/4F54: 20 FB 50 JSR $50FB C1/4F57: 7B TDC C1/4F58: 80 0E BRA $4F68 C1/4F5A: AE CA 62 LDX $62CA C1/4F5D: BD 0F 89 LDA $890F,X C1/4F60: 48 PHA C1/4F61: 18 CLC C1/4F62: 69 0E ADC #$0E C1/4F64: 20 FB 50 JSR $50FB C1/4F67: 68 PLA C1/4F68: 18 CLC C1/4F69: 69 05 ADC #$05 C1/4F6B: 20 65 51 JSR $5165 C1/4F6E: EE DB 7B INC $7BDB C1/4F71: 20 8C 4F JSR $4F8C ; close menu window C1/4F74: 4C F2 48 JMP $48F2 ; [ Open Menu Window ] set_open_flag: C1/4F77: EE BB 7B INC $7BBB C1/4F7A: A9 01 LDA #$01 C1/4F7C: 8D F0 7B STA $7BF0 C1/4F7F: 9C 85 7B STZ $7B85 C1/4F82: EE DD 7B INC $7BDD C1/4F85: EE D1 7B INC $7BD1 C1/4F88: 60 RTS ; [ Close Menu Window ] set_close_flag: C1/4F89: EE BB 7B INC $7BBB set_close_flag2: C1/4F8C: A9 02 LDA #$02 C1/4F8E: 8D F0 7B STA $7BF0 C1/4F91: 9C 85 7B STZ $7B85 C1/4F94: EE DD 7B INC $7BDD C1/4F97: EE D1 7B INC $7BD1 C1/4F9A: 60 RTS ; [ Battle Menu State $0D: Open Esper Window ] summon_window_open: C1/4F9B: A9 08 LDA #$08 C1/4F9D: 20 FB 50 JSR $50FB C1/4FA0: A9 03 LDA #$03 C1/4FA2: 20 65 51 JSR $5165 C1/4FA5: 4C 7A 4F JMP $4F7A ; open menu window ; [ Battle Menu State $0E: Close Esper Window ] summon_window_close: C1/4FA8: E6 10 INC $10 C1/4FAA: A9 09 LDA #$09 C1/4FAC: 20 FB 50 JSR $50FB C1/4FAF: A9 03 LDA #$03 C1/4FB1: 20 65 51 JSR $5165 C1/4FB4: 4C 8C 4F JMP $4F8C ; close menu window ; [ Battle Menu State $09: Open Weapon Change Window ] hand_window_open: C1/4FB7: A9 05 LDA #$05 C1/4FB9: 20 FB 50 JSR $50FB C1/4FBC: A9 04 LDA #$04 C1/4FBE: 20 65 51 JSR $5165 C1/4FC1: 4C 7A 4F JMP $4F7A ; open menu window ; [ Battle Menu State $0A: Close Weapon Change Window ] hand_window_close: C1/4FC4: E6 10 INC $10 C1/4FC6: A9 07 LDA #$07 C1/4FC8: 20 FB 50 JSR $50FB C1/4FCB: A9 04 LDA #$04 C1/4FCD: 20 65 51 JSR $5165 C1/4FD0: 4C 8C 4F JMP $4F8C ; close menu window ; [ Set BG1 Scroll HDMA Data ] ; +X = horizontal scroll position ; +Y = vertical scroll position throt_line_set: C1/4FD3: C2 20 REP #$20 C1/4FD5: 86 22 STX $22 C1/4FD7: 84 24 STY $24 C1/4FD9: A2 8C 02 LDX #$028C C1/4FDC: A5 22 LDA $22 C1/4FDE: 9D F5 43 STA $43F5,X C1/4FE1: A5 24 LDA $24 C1/4FE3: 9D F7 43 STA $43F7,X C1/4FE6: E8 INX C1/4FE7: E8 INX C1/4FE8: E8 INX C1/4FE9: E8 INX C1/4FEA: E0 4C 03 CPX #$034C ; copy for 211 scanlines C1/4FED: D0 ED BNE $4FDC C1/4FEF: 7B TDC C1/4FF0: E2 20 SEP #$20 C1/4FF2: 60 RTS ; [ Battle Menu State $04: Open Slot Window ] throt_window_open: C1/4FF3: 20 A5 46 JSR $46A5 C1/4FF6: A0 4C 00 LDY #$004C C1/4FF9: A2 00 01 LDX #$0100 C1/4FFC: 20 D3 4F JSR $4FD3 C1/4FFF: A9 02 LDA #$02 C1/5001: 20 FB 50 JSR $50FB C1/5004: A9 02 LDA #$02 C1/5006: 20 65 51 JSR $5165 C1/5009: 4C 7A 4F JMP $4F7A ; open menu window ; [ ] mess_window_open_scr_init: C1/500C: A9 04 LDA #$04 C1/500E: 8D FD 7A STA $7AFD C1/5011: E2 10 SEP #$10 C1/5013: C2 20 REP #$20 C1/5015: 0B PHD C1/5016: A9 00 01 LDA #$0100 ; nonzero dp C1/5019: 48 PHA C1/501A: 2B PLD C1/501B: A2 00 LDX #$00 C1/501D: A9 60 00 LDA #$0060 C1/5020: 95 02 STA $02,X C1/5022: 9D F7 51 STA $51F7,X C1/5025: E8 INX C1/5026: E8 INX C1/5027: E8 INX C1/5028: E8 INX C1/5029: E0 C0 CPX #$C0 C1/502B: D0 F3 BNE $5020 C1/502D: 95 02 STA $02,X C1/502F: E8 INX C1/5030: E8 INX C1/5031: E8 INX C1/5032: E8 INX C1/5033: E0 00 CPX #$00 C1/5035: D0 F6 BNE $502D C1/5037: 2B PLD C1/5038: 7B TDC C1/5039: E2 20 SEP #$20 C1/503B: C2 10 REP #$10 C1/503D: 60 RTS ; [ Battle Menu State $27: Open Dialog Window ] mess_window_open: C1/503E: 7B TDC C1/503F: AA TAX C1/5040: C2 20 REP #$20 C1/5042: BD 61 4D LDA $4D61,X C1/5045: 9D D5 52 STA $52D5,X C1/5048: E8 INX C1/5049: E8 INX C1/504A: E0 00 01 CPX #$0100 C1/504D: D0 F3 BNE $5042 C1/504F: 7B TDC C1/5050: E2 20 SEP #$20 C1/5052: 20 0C 50 JSR $500C C1/5055: A9 14 LDA #$14 C1/5057: 20 FB 50 JSR $50FB C1/505A: A9 02 LDA #$02 C1/505C: 20 65 51 JSR $5165 C1/505F: 4C 7A 4F JMP $4F7A ; open menu window ; [ Battle Menu State $28: Close Dialog Window ] mess_window_close: C1/5062: E6 10 INC $10 C1/5064: A9 15 LDA #$15 C1/5066: 20 FB 50 JSR $50FB C1/5069: 7B TDC C1/506A: AA TAX C1/506B: C2 20 REP #$20 C1/506D: BD D5 52 LDA $52D5,X C1/5070: 9D D5 51 STA $51D5,X C1/5073: E8 INX C1/5074: E8 INX C1/5075: E0 00 01 CPX #$0100 C1/5078: D0 F3 BNE $506D C1/507A: 7B TDC C1/507B: E2 20 SEP #$20 C1/507D: A9 02 LDA #$02 C1/507F: 20 65 51 JSR $5165 C1/5082: EE EE 7B INC $7BEE C1/5085: 4C 8C 4F JMP $4F8C ; close menu window ; [ Battle Menu State $07/$13/$15/$1B/$1D/$20: Open Item/Rage/Dance/Magitek/Throw/Tools Window ] item_window_open: riot_window_open: dance_window_open: madou_window_open: throw_window_open: machine_window_open: C1/5088: 20 A5 46 JSR $46A5 C1/508B: A9 03 LDA #$03 C1/508D: 20 FB 50 JSR $50FB C1/5090: A9 02 LDA #$02 C1/5092: 20 65 51 JSR $5165 C1/5095: 4C 7A 4F JMP $4F7A ; open menu window ; [ Battle Menu State $0B/$11: Open Magic/Lore Window ] magic_window_open: learning_window_open: C1/5098: A9 82 LDA #$82 C1/509A: 20 C2 4E JSR $4EC2 C1/509D: 20 A5 46 JSR $46A5 C1/50A0: A9 04 LDA #$04 C1/50A2: 20 FB 50 JSR $50FB C1/50A5: A9 02 LDA #$02 C1/50A7: 20 65 51 JSR $5165 C1/50AA: 4C 7A 4F JMP $4F7A ; open menu window ; [ Battle Menu State $06: ] throt_window_close: C1/50AD: 7B TDC C1/50AE: AA TAX C1/50AF: A8 TAY C1/50B0: 20 D3 4F JSR $4FD3 C1/50B3: 9C 92 89 STZ $8992 ; fall through ; [ Battle Menu State: Close Item/Magic/Lore/Rage/Dance/Magitek/Throw/Tools Window ] item_window_close: magic_window_close: C1/50B6: E6 10 INC $10 C1/50B8: A9 06 LDA #$06 C1/50BA: 20 FB 50 JSR $50FB C1/50BD: A9 02 LDA #$02 C1/50BF: 20 65 51 JSR $5165 C1/50C2: EE EE 7B INC $7BEE C1/50C5: 4C 8C 4F JMP $4F8C ; close menu window ; [ Battle Menu State $1F: ] C1/50C8: 20 F2 48 JSR $48F2 C1/50CB: 4C E9 50 JMP $50E9 ; go to next menu state ; [ Battle Menu State $01: Window Opening ] C1/50CE: AD D1 7B LDA $7BD1 C1/50D1: 0D DD 7B ORA $7BDD C1/50D4: D0 06 BNE $50DC C1/50D6: 9C 98 7B STZ $7B98 C1/50D9: 20 E9 50 JSR $50E9 ; go to next menu state C1/50DC: 60 RTS ; [ Battle Menu State $02: Window Closing ] C1/50DD: AD D1 7B LDA $7BD1 C1/50E0: 0D DD 7B ORA $7BDD C1/50E3: D0 03 BNE $50E8 C1/50E5: 20 E9 50 JSR $50E9 ; go to next menu state C1/50E8: 60 RTS ; [ Go To Next Menu State ] data_sift: C1/50E9: 7B TDC C1/50EA: AA TAX C1/50EB: 8D FF 7B STA $7BFF ; add state 0 to end of queue C1/50EE: BD F1 7B LDA $7BF1,X ; move all items in queue up one slot C1/50F1: 9D F0 7B STA $7BF0,X C1/50F4: E8 INX C1/50F5: E0 0F 00 CPX #$000F C1/50F8: D0 F4 BNE $50EE C1/50FA: 60 RTS ; [ Load Menu Window Position Data ] ; $10 = 0: window opening, 1: window closing ; A = window type ; $00 = no menu (open) ; $01 = command select (open) ; $02 = slot (open) ; $03 = item/rage/dance/magitek/throw/tools (open) ; $04 = magic/lore (open) ; $05 = weapon change (open) ; $06 = item/rage/dance/magitek/throw/tools/magic/lore/slot (close) ; $07 = weapon change (close) ; $08 = esper (open) ; $09 = esper (close) ; $0A = row/def, slot 1 (open) ; $0B = row/def, slot 2 (open) ; $0C = row/def, slot 3 (open) ; $0D = row/def, slot 4 (open) ; $0E = row/def, slot 1 (close) ; $0F = row/def, slot 2 (close) ; $10 = row/def, slot 3 (close) ; $11 = row/def, slot 4 (close) ; $12 = swdtech (open) ; $13 = swdtech (close) ; $14 = dialog (open) ; $15 = dialog (close) ; $16 = dialog (close, go to command select) ; $17 = row/def, short (open) ; $18 = row/def, short (close) ; $19 = character select (open) ; $1A = character select (close, go to item select) ; $1B = character select (open, go to magic select) window_open_data_set: C1/50FB: 0A ASL C1/50FC: 0A ASL C1/50FD: AA TAX C1/50FE: A5 10 LDA $10 C1/5100: F0 31 BEQ $5133 ; branch if menu is opening C1/5102: C2 20 REP #$20 C1/5104: BF A2 DE C2 LDA $C2DEA2,X C1/5108: 8D D2 7B STA $7BD2 ; menu window horizontal scroll position (pixels) C1/510B: BF A4 DE C2 LDA $C2DEA4,X C1/510F: 8D D4 7B STA $7BD4 ; menu window vertical scroll position (pixels) C1/5112: BF 34 DE C2 LDA $C2DE34,X C1/5116: 8D D6 7B STA $7BD6 ; menu window height (tiles) C1/5119: 0A ASL C1/511A: 0A ASL C1/511B: 0A ASL C1/511C: 0A ASL C1/511D: 0A ASL C1/511E: 18 CLC C1/511F: 7F 32 DE C2 ADC $C2DE32,X C1/5123: 38 SEC C1/5124: E9 10 00 SBC #$0010 C1/5127: 8D D7 7B STA $7BD7 ; menu window bottom (pixels) C1/512A: BF 32 DE C2 LDA $C2DE32,X C1/512E: 8D D9 7B STA $7BD9 ; menu window top (pixels) C1/5131: 80 2B BRA $515E C1/5133: C2 20 REP #$20 C1/5135: BF A2 DE C2 LDA $C2DEA2,X C1/5139: 8D D2 7B STA $7BD2 ; menu window horizontal scroll position (pixels) C1/513C: BF A4 DE C2 LDA $C2DEA4,X C1/5140: 8D D4 7B STA $7BD4 ; menu window vertical scroll position (pixels) C1/5143: BF 34 DE C2 LDA $C2DE34,X C1/5147: 8D D6 7B STA $7BD6 ; menu window height (tiles) C1/514A: 3A DEC C1/514B: 0A ASL C1/514C: 0A ASL C1/514D: 0A ASL C1/514E: 0A ASL C1/514F: 18 CLC C1/5150: 7F 32 DE C2 ADC $C2DE32,X C1/5154: 8D D7 7B STA $7BD7 ; menu window bottom (pixels) C1/5157: 18 CLC C1/5158: 69 10 00 ADC #$0010 C1/515B: 8D D9 7B STA $7BD9 ; menu window top (pixels) C1/515E: 9C DB 7B STZ $7BDB ; bg2 update C1/5161: 7B TDC C1/5162: E2 20 SEP #$20 C1/5164: 60 RTS ; [ Load Menu Text Position Data ] ; $10 = 0: window opening, 1: window closing ; A = text type ; $00 = command select ; $01 = ; $02 = magic/tools/dance/rage/lore/item/slot/dialog ; $03 = esper ; $04 = weapon change ; $05 = row/def, slot 1 ; $06 = row/def, slot 2 ; $07 = row/def, slot 3 ; $08 = row/def, slot 4 ; $09 = swdtech ; $0A = character select (item/magic) main_window_open_data_set: C1/5165: 0A ASL C1/5166: 0A ASL C1/5167: 0A ASL C1/5168: AA TAX C1/5169: 9C EB 7B STZ $7BEB C1/516C: A5 10 LDA $10 C1/516E: F0 3D BEQ $51AD ; branch if menu is opening C1/5170: C2 20 REP #$20 C1/5172: BF DA DD C2 LDA $C2DDDA,X C1/5176: 18 CLC C1/5177: 69 10 00 ADC #$0010 C1/517A: 8D E2 7B STA $7BE2 C1/517D: BF DC DD C2 LDA $C2DDDC,X C1/5181: 18 CLC C1/5182: 69 10 00 ADC #$0010 C1/5185: 8D E4 7B STA $7BE4 C1/5188: BF DE DD C2 LDA $C2DDDE,X C1/518C: 0A ASL C1/518D: 0A ASL C1/518E: 0A ASL C1/518F: 0A ASL C1/5190: 0A ASL C1/5191: 48 PHA C1/5192: 18 CLC C1/5193: 7F DA DD C2 ADC $C2DDDA,X C1/5197: 38 SEC C1/5198: E9 20 00 SBC #$0020 C1/519B: 8D DE 7B STA $7BDE C1/519E: 68 PLA C1/519F: 18 CLC C1/51A0: 7F DC DD C2 ADC $C2DDDC,X C1/51A4: 38 SEC C1/51A5: E9 20 00 SBC #$0020 C1/51A8: 8D E0 7B STA $7BE0 C1/51AB: 80 2B BRA $51D8 C1/51AD: C2 20 REP #$20 C1/51AF: BF DE DD C2 LDA $C2DDDE,X ; text height (tiles) C1/51B3: 3A DEC ; convert to pixels C1/51B4: 0A ASL C1/51B5: 0A ASL C1/51B6: 0A ASL C1/51B7: 0A ASL C1/51B8: 48 PHA C1/51B9: 18 CLC C1/51BA: 7F DA DD C2 ADC $C2DDDA,X ; add source address C1/51BE: 8D DE 7B STA $7BDE ; C1/51C1: 18 CLC C1/51C2: 69 10 00 ADC #$0010 C1/51C5: 8D E2 7B STA $7BE2 C1/51C8: 68 PLA C1/51C9: 18 CLC C1/51CA: 7F DC DD C2 ADC $C2DDDC,X C1/51CE: 8D E0 7B STA $7BE0 C1/51D1: 18 CLC C1/51D2: 69 10 00 ADC #$0010 C1/51D5: 8D E4 7B STA $7BE4 C1/51D8: BF DA DD C2 LDA $C2DDDA,X C1/51DC: 18 CLC C1/51DD: 69 10 00 ADC #$0010 C1/51E0: 8D E7 7B STA $7BE7 C1/51E3: BF DC DD C2 LDA $C2DDDC,X C1/51E7: 18 CLC C1/51E8: 69 10 00 ADC #$0010 C1/51EB: 8D E9 7B STA $7BE9 C1/51EE: BF DE DD C2 LDA $C2DDDE,X C1/51F2: 3A DEC C1/51F3: 0A ASL C1/51F4: 0A ASL C1/51F5: 0A ASL C1/51F6: 0A ASL C1/51F7: 0A ASL C1/51F8: 3A DEC C1/51F9: 8D EC 7B STA $7BEC C1/51FC: 7B TDC C1/51FD: E2 20 SEP #$20 C1/51FF: BF DE DD C2 LDA $C2DDDE,X C1/5203: 3A DEC C1/5204: 8D E6 7B STA $7BE6 C1/5207: 9C EE 7B STZ $7BEE C1/520A: 60 RTS ; [ Clear Menu Window Tile Data Buffer ] window_tmp_buf_clr: C1/520B: C2 20 REP #$20 C1/520D: A6 00 LDX $00 C1/520F: A9 FF 00 LDA #$00FF C1/5212: 9D 13 8D STA $8D13,X C1/5215: E8 INX C1/5216: E8 INX C1/5217: E0 00 03 CPX #$0300 C1/521A: D0 F3 BNE $520F C1/521C: 7B TDC C1/521D: E2 20 SEP #$20 C1/521F: 60 RTS ; [ Battle Menu State $29: ] C1/5220: AE CA 62 LDX $62CA ; active character C1/5223: BD CC 62 LDA $62CC,X ; branch if character is controlling a monster C1/5226: D0 15 BNE $523D C1/5228: AD 2E 2F LDA $2F2E ; command setting C1/522B: F0 08 BEQ $5235 ; branch if window C1/522D: A9 01 LDA #$01 C1/522F: 8D B8 64 STA $64B8 ; use short window C1/5232: 4C E9 50 JMP $50E9 ; go to next menu state ; [ Battle Menu State $2A: ] C1/5235: A9 02 LDA #$02 C1/5237: 8D B8 64 STA $64B8 ; use normal window C1/523A: 4C E9 50 JMP $50E9 ; go to next menu state C1/523D: A9 03 LDA #$03 C1/523F: 8D B8 64 STA $64B8 ; use control window C1/5242: 4C E9 50 JMP $50E9 ; go to next menu state ; [ Init Command Select Menu Window Tile Data ] set_short_frame: C1/5245: 7B TDC C1/5246: AA TAX C1/5247: C2 20 REP #$20 C1/5249: BD 13 8D LDA $8D13,X ; copy buffer to window mode tile data C1/524C: 9D 13 92 STA $9213,X C1/524F: E8 INX C1/5250: E8 INX C1/5251: E0 00 02 CPX #$0200 C1/5254: D0 F3 BNE $5249 C1/5256: E2 20 SEP #$20 C1/5258: 7B TDC C1/5259: 20 A0 53 JSR $53A0 ; load menu window tile data (monster name) C1/525C: A9 01 LDA #$01 C1/525E: 20 A0 53 JSR $53A0 ; load menu window tile data (character name/HP/gauge) C1/5261: A9 0E LDA #$0E C1/5263: 20 A0 53 JSR $53A0 ; load menu window tile data (RELM's "Command") C1/5266: 7B TDC C1/5267: AA TAX C1/5268: C2 20 REP #$20 C1/526A: BD 13 8D LDA $8D13,X ; copy buffer to RELM's "Command" mode tile data C1/526D: 9D 13 94 STA $9413,X C1/5270: E8 INX C1/5271: E8 INX C1/5272: E0 00 02 CPX #$0200 C1/5275: D0 F3 BNE $526A C1/5277: E2 20 SEP #$20 C1/5279: 7B TDC C1/527A: 20 A0 53 JSR $53A0 ; load menu window tile data (monster name) C1/527D: A9 01 LDA #$01 C1/527F: 20 A0 53 JSR $53A0 ; load menu window tile data (character name/HP/gauge) C1/5282: A9 0D LDA #$0D C1/5284: 20 A0 53 JSR $53A0 ; load menu window tile data (command, short mode) C1/5287: 7B TDC C1/5288: AA TAX C1/5289: C2 20 REP #$20 C1/528B: BD 13 8D LDA $8D13,X ; copy buffer to short mode tile data C1/528E: 9D 13 90 STA $9013,X C1/5291: E8 INX C1/5292: E8 INX C1/5293: E0 00 02 CPX #$0200 C1/5296: D0 F3 BNE $528B C1/5298: 7B TDC C1/5299: E2 20 SEP #$20 C1/529B: 60 RTS ; [ Init Menu Window Tile Data ] window_frame_init: C1/529C: 20 0B 52 JSR $520B ; clear menu window tile data buffer C1/529F: 7B TDC C1/52A0: 20 A0 53 JSR $53A0 ; load menu window tile data (monster name) C1/52A3: A9 01 LDA #$01 C1/52A5: 20 A0 53 JSR $53A0 ; load menu window tile data (character name/HP/gauge) C1/52A8: 7B TDC C1/52A9: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (closed menu) C1/52AC: A9 02 LDA #$02 C1/52AE: 20 A0 53 JSR $53A0 ; load menu window tile data (command, window mode) C1/52B1: 20 45 52 JSR $5245 ; init command select menu window tile data C1/52B4: A9 01 LDA #$01 C1/52B6: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (command select) C1/52B9: A9 03 LDA #$03 C1/52BB: 20 A0 53 JSR $53A0 ; load menu window tile data (slot) C1/52BE: 20 35 53 JSR $5335 ; init slot window tile data C1/52C1: A9 02 LDA #$02 C1/52C3: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (slot) C1/52C6: A9 04 LDA #$04 C1/52C8: 20 A0 53 JSR $53A0 ; load menu window tile data (item/dialog/etc.) C1/52CB: A9 03 LDA #$03 C1/52CD: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (item/dialog/etc.) C1/52D0: A9 07 LDA #$07 C1/52D2: 20 A0 53 JSR $53A0 ; load menu window tile data (magic/lore) C1/52D5: A9 05 LDA #$05 C1/52D7: 20 97 53 JSR $5397 ; load menu window tile data (magic/lore mp required, priority 0) C1/52DA: A9 04 LDA #$04 C1/52DC: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (magic/lore select) C1/52DF: A9 06 LDA #$06 C1/52E1: 20 A0 53 JSR $53A0 ; load menu window tile data (weapon select) C1/52E4: A9 05 LDA #$05 C1/52E6: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (weapon select) C1/52E9: A9 08 LDA #$08 C1/52EB: 20 A0 53 JSR $53A0 ; load menu window tile data (esper) C1/52EE: A9 06 LDA #$06 C1/52F0: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (esper) C1/52F3: 20 0B 52 JSR $520B ; clear menu window tile data buffer C1/52F6: A9 09 LDA #$09 C1/52F8: 20 A0 53 JSR $53A0 ; load menu window tile data (row/def.) C1/52FB: A9 07 LDA #$07 C1/52FD: 20 73 53 JSR $5373 ; copy menu window tile data to VRAM (row/def.) C1/5300: 20 0B 52 JSR $520B ; clear menu window tile data buffer C1/5303: A9 0A LDA #$0A C1/5305: 20 A0 53 JSR $53A0 ; load menu window tile data (swdtech) C1/5308: A9 08 LDA #$08 C1/530A: 4C 73 53 JMP $5373 ; copy menu window tile data to VRAM (swdtech) ; [ Init Slot Window Tile Data (one row) ] ; +X = tile data offset ; +A = tile data one_sp_frame_set: C1/530D: 9D 65 8D STA $8D65,X ; first slot C1/5310: 9D 6F 8D STA $8D6F,X ; second slot C1/5313: 9D 79 8D STA $8D79,X ; third slot C1/5316: 1A INC C1/5317: 9D 67 8D STA $8D67,X ; second tile C1/531A: 9D 71 8D STA $8D71,X C1/531D: 9D 7B 8D STA $8D7B,X C1/5320: 1A INC C1/5321: 9D 69 8D STA $8D69,X ; third tile C1/5324: 9D 73 8D STA $8D73,X C1/5327: 9D 7D 8D STA $8D7D,X C1/532A: 1A INC C1/532B: 9D 6B 8D STA $8D6B,X ; fourth tile C1/532E: 9D 75 8D STA $8D75,X C1/5331: 9D 7F 8D STA $8D7F,X C1/5334: 60 RTS ; [ Init Slot Window Tile Data ] sp_window_frame_set: C1/5335: 7B TDC C1/5336: AA TAX C1/5337: C2 20 REP #$20 C1/5339: A2 00 00 LDX #$0000 C1/533C: A9 68 2A LDA #$2A68 C1/533F: 20 0D 53 JSR $530D ; set slot window tile data (1st row) C1/5342: A2 40 00 LDX #$0040 C1/5345: A9 78 2A LDA #$2A78 C1/5348: 20 0D 53 JSR $530D ; set slot window tile data (2nd row) C1/534B: A2 80 00 LDX #$0080 C1/534E: A9 6C 2A LDA #$2A6C C1/5351: 20 0D 53 JSR $530D ; set slot window tile data (3rd row) C1/5354: A2 C0 00 LDX #$00C0 C1/5357: A9 7C 2A LDA #$2A7C C1/535A: 20 0D 53 JSR $530D ; set slot window tile data (4th row) C1/535D: A2 00 01 LDX #$0100 C1/5360: A9 78 AA LDA #$AA78 C1/5363: 20 0D 53 JSR $530D ; set slot window tile data (5th row) C1/5366: A2 40 01 LDX #$0140 C1/5369: A9 68 AA LDA #$AA68 C1/536C: 20 0D 53 JSR $530D ; set slot window tile data (6th row) C1/536F: 7B TDC C1/5370: E2 20 SEP #$20 C1/5372: 60 RTS ; [ Copy Menu Window Tile Data to VRAM ] ; A = window location in VRAM ; $00 = closed menu ; $01 = command select ; $02 = slot ; $03 = item/dialog/etc. ; $04 = magic/lore select ; $05 = weapon select ; $06 = esper ; $07 = row/def. (bg1) ; $08 = swdtech (bg1) one_frame_tfr: C1/5373: 0A ASL C1/5374: AA TAX C1/5375: C2 20 REP #$20 C1/5377: BF 8C DD C2 LDA $C2DD8C,X ; menu window tile data VRAM pointer C1/537B: A8 TAY C1/537C: 7B TDC C1/537D: E2 20 SEP #$20 C1/537F: A2 00 02 LDX #$0200 ; size = $0200 C1/5382: 86 36 STX $36 C1/5384: A2 13 8D LDX #$8D13 ; source = $7E8D13 C1/5387: A9 7E LDA #$7E C1/5389: 4C 2B 1A JMP $1A2B ; copy data to VRAM ; [ Load Menu Window Tile Data (???) ] ; A = window number (see below) window_frame_set3: C1/538C: 0A ASL C1/538D: 0A ASL C1/538E: AA TAX C1/538F: A9 80 LDA #$80 C1/5391: 85 7C STA $7C C1/5393: A9 28 LDA #$28 ; tiles are priority 1, palette 2, tile index +#$0000 C1/5395: 80 10 BRA $53A7 ; [ Load Menu Window Tile Data (priority 0) ] ; priority 0 allows bg1 text to be shown above bg2 ; A = window number (see below) window_frame_set2: C1/5397: 64 7C STZ $7C C1/5399: 0A ASL C1/539A: 0A ASL C1/539B: AA TAX C1/539C: A9 0A LDA #$0A ; tiles are priority 0, palette 2, tile index +#$0200 C1/539E: 80 07 BRA $53A7 ; [ Load Menu Window Tile Data ] ; A = window number ; $00 = monster name ; $01 = character name/HP/gauge ; $02 = command (window mode) ; $03 = slot window ; $04 = item/dialog/etc. ; $05 = magic/lore MP required ; $06 = weapon select ; $07 = magic/lore select ; $08 = esper ; $09 = row/def. (all positions) ; $0A = swdtech ; $0B = wide message (top of screen) ; $0C = narrow message (top of screen) ; $0D = command (short mode) ; $0E = command (RELM's "Command" ability) window_frame_set: C1/53A0: 64 7C STZ $7C C1/53A2: 0A ASL C1/53A3: 0A ASL C1/53A4: AA TAX C1/53A5: A9 2A LDA #$2A ; tiles are priority 1, palette 2, tile index +#$0200 window_frame_set_x: C1/53A7: 8D AE 7B STA $7BAE C1/53AA: A4 00 LDY $00 C1/53AC: BF 9E DD C2 LDA $C2DD9E,X ; menu window data C1/53B0: 99 D3 88 STA $88D3,Y C1/53B3: E8 INX C1/53B4: C8 INY C1/53B5: C0 04 00 CPY #$0004 C1/53B8: D0 F2 BNE $53AC C1/53BA: AE D5 88 LDX $88D5 C1/53BD: 86 10 STX $10 C1/53BF: 64 14 STZ $14 C1/53C1: AD D4 88 LDA $88D4 C1/53C4: 3A DEC C1/53C5: 3A DEC C1/53C6: 85 13 STA $13 C1/53C8: C2 20 REP #$20 C1/53CA: AF 10 55 C1 LDA $C15510 C1/53CE: 85 22 STA $22 C1/53D0: AF 12 55 C1 LDA $C15512 C1/53D4: 85 24 STA $24 C1/53D6: 7B TDC C1/53D7: E2 20 SEP #$20 C1/53D9: AD D3 88 LDA $88D3 C1/53DC: 85 12 STA $12 C1/53DE: 20 B8 54 JSR $54B8 C1/53E1: A9 40 LDA #$40 C1/53E3: 20 AD 54 JSR $54AD C1/53E6: A5 14 LDA $14 C1/53E8: 29 0F AND #$0F C1/53EA: AA TAX C1/53EB: C2 20 REP #$20 C1/53ED: BF 00 55 C1 LDA $C15500,X C1/53F1: 85 22 STA $22 C1/53F3: BF 02 55 C1 LDA $C15502,X C1/53F7: 85 24 STA $24 C1/53F9: 7B TDC C1/53FA: E2 20 SEP #$20 C1/53FC: AD D3 88 LDA $88D3 C1/53FF: 85 12 STA $12 C1/5401: 20 B8 54 JSR $54B8 C1/5404: A5 14 LDA $14 C1/5406: 18 CLC C1/5407: 69 04 ADC #$04 C1/5409: 85 14 STA $14 C1/540B: A9 40 LDA #$40 C1/540D: 20 AD 54 JSR $54AD C1/5410: C6 13 DEC $13 C1/5412: D0 D2 BNE $53E6 C1/5414: C2 20 REP #$20 C1/5416: AF 14 55 C1 LDA $C15514 C1/541A: 85 22 STA $22 C1/541C: AF 16 55 C1 LDA $C15516 C1/5420: 85 24 STA $24 C1/5422: 7B TDC C1/5423: E2 20 SEP #$20 C1/5425: AD D3 88 LDA $88D3 C1/5428: 85 12 STA $12 C1/542A: 20 B8 54 JSR $54B8 C1/542D: AE D5 88 LDX $88D5 C1/5430: 86 10 STX $10 C1/5432: AD D4 88 LDA $88D4 C1/5435: 85 12 STA $12 C1/5437: AF 1C 55 C1 LDA $C1551C C1/543B: 85 22 STA $22 C1/543D: AF 1D 55 C1 LDA $C1551D C1/5441: 85 23 STA $23 C1/5443: A4 00 LDY $00 C1/5445: 20 CE 54 JSR $54CE C1/5448: AE D5 88 LDX $88D5 C1/544B: 86 10 STX $10 C1/544D: AD D4 88 LDA $88D4 C1/5450: 85 12 STA $12 C1/5452: AF 20 55 C1 LDA $C15520 C1/5456: 85 22 STA $22 C1/5458: AF 21 55 C1 LDA $C15521 C1/545C: 85 23 STA $23 C1/545E: AD D3 88 LDA $88D3 C1/5461: 3A DEC C1/5462: 0A ASL C1/5463: A8 TAY C1/5464: 20 CE 54 JSR $54CE C1/5467: AE D5 88 LDX $88D5 C1/546A: 86 10 STX $10 C1/546C: A4 00 LDY $00 C1/546E: AF 18 55 C1 LDA $C15518 C1/5472: 20 F3 54 JSR $54F3 C1/5475: AD D3 88 LDA $88D3 C1/5478: 3A DEC C1/5479: 0A ASL C1/547A: A8 TAY C1/547B: AF 19 55 C1 LDA $C15519 C1/547F: 20 F3 54 JSR $54F3 C1/5482: AD D4 88 LDA $88D4 C1/5485: 3A DEC C1/5486: C2 20 REP #$20 C1/5488: 0A ASL C1/5489: 0A ASL C1/548A: 0A ASL C1/548B: 0A ASL C1/548C: 0A ASL C1/548D: 0A ASL C1/548E: 18 CLC C1/548F: 6D D5 88 ADC $88D5 C1/5492: 85 10 STA $10 C1/5494: 7B TDC C1/5495: A8 TAY C1/5496: E2 20 SEP #$20 C1/5498: AF 1A 55 C1 LDA $C1551A C1/549C: 20 F3 54 JSR $54F3 C1/549F: AD D3 88 LDA $88D3 C1/54A2: 3A DEC C1/54A3: 0A ASL C1/54A4: A8 TAY C1/54A5: AF 1B 55 C1 LDA $C1551B C1/54A9: 20 F3 54 JSR $54F3 C1/54AC: 60 RTS ; [ ] add_areg: C1/54AD: C2 20 REP #$20 C1/54AF: 18 CLC C1/54B0: 65 10 ADC $10 C1/54B2: 85 10 STA $10 C1/54B4: 7B TDC C1/54B5: E2 20 SEP #$20 C1/54B7: 60 RTS ; [ ] frame_one_line_set: C1/54B8: 7B TDC C1/54B9: AA TAX C1/54BA: A8 TAY C1/54BB: E2 10 SEP #$10 C1/54BD: B5 22 LDA $22,X C1/54BF: 20 F3 54 JSR $54F3 C1/54C2: 8A TXA C1/54C3: 1A INC C1/54C4: 29 03 AND #$03 C1/54C6: AA TAX C1/54C7: C6 12 DEC $12 C1/54C9: D0 F2 BNE $54BD C1/54CB: C2 10 REP #$10 C1/54CD: 60 RTS ; [ ] frame_one_line_set2: C1/54CE: 7B TDC C1/54CF: AA TAX C1/54D0: B5 22 LDA $22,X C1/54D2: 18 CLC C1/54D3: 65 7C ADC $7C C1/54D5: 91 10 STA ($10),Y C1/54D7: C8 INY C1/54D8: AD AE 7B LDA $7BAE C1/54DB: 91 10 STA ($10),Y C1/54DD: C8 INY C1/54DE: C2 20 REP #$20 C1/54E0: 98 TYA C1/54E1: 18 CLC C1/54E2: 69 3E 00 ADC #$003E C1/54E5: A8 TAY C1/54E6: 7B TDC C1/54E7: E2 20 SEP #$20 C1/54E9: 8A TXA C1/54EA: 1A INC C1/54EB: 29 01 AND #$01 C1/54ED: AA TAX C1/54EE: C6 12 DEC $12 C1/54F0: D0 DE BNE $54D0 C1/54F2: 60 RTS ; [ ] one_frame_chr_set: C1/54F3: 18 CLC C1/54F4: 65 7C ADC $7C C1/54F6: 91 10 STA ($10),Y C1/54F8: C8 INY C1/54F9: AD AE 7B LDA $7BAE C1/54FC: 91 10 STA ($10),Y C1/54FE: C8 INY C1/54FF: 60 RTS ; menu window tile numbers C1/5500: .DB $23, $20, $21, $22 .DB $27, $24, $25, $26 .DB $2B, $28, $29, $2A .DB $2F, $2C, $2D, $2E ; menu border tile numbers (top, bottom, corners, left side, right side) C1/5510: .DB $32, $31, $32, $31 .DB $3A, $39, $3A, $39 .DB $30, $33, $38, $3B .DB $36, $34, $36, $34 .DB $37, $35, $37, $35 ; [ Update Menu Cursor ] nmi2jmp: C1/5524: AD C2 7B LDA $7BC2 ; menu cursor state C1/5527: 0A ASL C1/5528: AA TAX C1/5529: 7C 2C 55 JMP ($552C,X) ; battle menu cursor state jump table C1/552C: .DW $5A40, $5A41, $5A4A, $5A40, $59D6, $7A92, $59AE, $56A0 C1/553C: .DW $7F08, $5769, $887D, $5645, $8D98, $57A0, $8145, $5685 C1/554C: .DW $565B, $5A40, $56F2, $5669, $56E9, $571F, $82B3, $5C91 C1/555C: .DW $5CF7, $58ED, $56FB, $8308, $5927, $5704, $84C6, $5958 C1/556C: .DW $570D, $85B4, $5631, $567C, $7E73, $563B, $5673, $7E05 C1/557C: .DW $5983, $5716, $8625, $5875, $56E0, $86B5, $58B1, $5697 C1/558C: .DW $879D, $8D3E, $55C9, $56D7, $56B5, $561B, $5628, $7D25 C1/559C: .DW $6D90, $4268, $42C8, $5755, $575F, $6FF8, $5B4C, $55B0 C1/55AC: .DW $55BA, $911C ; [ Battle Menu Cursor State $3F: ] nmi_dispwin_open: C1/55B0: A9 2B LDA #$2B C1/55B2: 8D F0 7B STA $7BF0 C1/55B5: A9 12 LDA #$12 C1/55B7: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $40: ] C1/55BA: A9 2C LDA #$2C C1/55BC: 8D F0 7B STA $7BF0 C1/55BF: AD BA EC LDA $ECBA C1/55C2: 0A ASL C1/55C3: 18 CLC C1/55C4: 69 02 ADC #$02 C1/55C6: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $32: ] C1/55C9: 7B TDC C1/55CA: AA TAX C1/55CB: A9 4C LDA #$4C C1/55CD: 9D FD 5F STA $5FFD,X C1/55D0: 9D 07 60 STA $6007,X C1/55D3: 9D 11 60 STA $6011,X C1/55D6: E8 INX C1/55D7: E8 INX C1/55D8: E0 08 00 CPX #$0008 C1/55DB: D0 F0 BNE $55CD C1/55DD: A9 01 LDA #$01 C1/55DF: 8D 95 7B STA $7B95 C1/55E2: 8D 97 7B STA $7B97 C1/55E5: 8D 8B 7B STA $7B8B C1/55E8: 8D 92 89 STA $8992 C1/55EB: A9 80 LDA #$80 C1/55ED: 8D 83 7B STA $7B83 C1/55F0: AD 0E 80 LDA $800E C1/55F3: 29 7F AND #$7F C1/55F5: 8D 0E 80 STA $800E C1/55F8: A9 0C LDA #$0C C1/55FA: 8D 8A 7B STA $7B8A C1/55FD: 9C 8F 7B STZ $7B8F C1/5600: 9C 90 7B STZ $7B90 C1/5603: 9C 91 7B STZ $7B91 C1/5606: 9C 8C 7B STZ $7B8C C1/5609: 9C 8D 7B STZ $7B8D C1/560C: 9C 8E 7B STZ $7B8E C1/560F: 9C 92 7B STZ $7B92 C1/5612: 9C 93 7B STZ $7B93 C1/5615: 9C 94 7B STZ $7B94 C1/5618: 4C 4A 5A JMP $5A4A ; [ Battle Menu Cursor State $35: ] C1/561B: 9C 82 7B STZ $7B82 C1/561E: A9 25 LDA #$25 C1/5620: 8D F0 7B STA $7BF0 C1/5623: A9 10 LDA #$10 C1/5625: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $36: Close SwdTech Menu ] nmi_kenwin_close: C1/5628: A9 26 LDA #$26 C1/562A: 8D F0 7B STA $7BF0 C1/562D: 7B TDC C1/562E: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $22: ] C1/5631: A9 17 LDA #$17 C1/5633: 8D F0 7B STA $7BF0 C1/5636: A9 0B LDA #$0B C1/5638: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $25: ] C1/563B: A9 19 LDA #$19 C1/563D: 8D F0 7B STA $7BF0 C1/5640: A9 0C LDA #$0C C1/5642: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $0B: ] nmi_handwin_open: C1/5645: 20 BA 4B JSR $4BBA C1/5648: A2 40 7E LDX #$7E40 C1/564B: 8E AA 7B STX $7BAA C1/564E: EE A9 7B INC $7BA9 C1/5651: A9 09 LDA #$09 C1/5653: 8D F0 7B STA $7BF0 C1/5656: A9 03 LDA #$03 C1/5658: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $10: ] C1/565B: 9C CB 7B STZ $7BCB C1/565E: A9 22 LDA #$22 C1/5660: 8D F0 7B STA $7BF0 C1/5663: A9 01 LDA #$01 C1/5665: 8D C2 7B STA $7BC2 C1/5668: 60 RTS ; [ Battle Menu Cursor State $13: close equip menu ] nmi_handwin_close: C1/5669: A9 0A LDA #$0A C1/566B: 8D F0 7B STA $7BF0 C1/566E: A9 08 LDA #$08 C1/5670: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $26: ] nmi_defwin_close: C1/5673: A9 1A LDA #$1A C1/5675: 8D F0 7B STA $7BF0 C1/5678: 7B TDC C1/5679: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $23: ] nmi_chgwin_close: C1/567C: A9 18 LDA #$18 C1/567E: 8D F0 7B STA $7BF0 C1/5681: 7B TDC C1/5682: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $0F: Close Menu ??? ] nmi_comwin_close: C1/5685: 9C 2F 63 STZ $632F C1/5688: A9 05 LDA #$05 C1/568A: 8D F0 7B STA $7BF0 C1/568D: A9 2A LDA #$2A C1/568F: 8D F1 7B STA $7BF1 C1/5692: A9 05 LDA #$05 C1/5694: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $2F: ] nmi_machinewin_close: C1/5697: A9 21 LDA #$21 C1/5699: 8D F0 7B STA $7BF0 C1/569C: 7B TDC C1/569D: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $07: ] C1/56A0: A9 80 LDA #$80 C1/56A2: 8D 83 7B STA $7B83 C1/56A5: A9 3A LDA #$3A C1/56A7: 8D C2 7B STA $7BC2 C1/56AA: A9 01 LDA #$01 C1/56AC: 8D C3 7B STA $7BC3 C1/56AF: A9 34 LDA #$34 C1/56B1: 8D C4 7B STA $7BC4 C1/56B4: 60 RTS ; [ Battle Menu Cursor State $34: ] C1/56B5: 20 FE 40 JSR $40FE C1/56B8: 20 1E 41 JSR $411E C1/56BB: A9 33 LDA #$33 C1/56BD: 8D C2 7B STA $7BC2 C1/56C0: A9 02 LDA #$02 C1/56C2: 8D 95 7B STA $7B95 C1/56C5: 8D 97 7B STA $7B97 C1/56C8: 9C 8B 7B STZ $7B8B C1/56CB: AD 0E 80 LDA $800E C1/56CE: 29 7F AND #$7F C1/56D0: 8D 0E 80 STA $800E C1/56D3: 9C 8A 7B STZ $7B8A C1/56D6: 60 RTS ; [ Battle Menu Cursor State $33: ] C1/56D7: A9 06 LDA #$06 C1/56D9: 8D F0 7B STA $7BF0 C1/56DC: 7B TDC C1/56DD: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $2C: ] nmi_throwwin_close: C1/56E0: A9 1E LDA #$1E C1/56E2: 8D F0 7B STA $7BF0 C1/56E5: 7B TDC C1/56E6: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $14: ] nmi_magicwin_close: C1/56E9: A9 0C LDA #$0C C1/56EB: 8D F0 7B STA $7BF0 C1/56EE: 7B TDC C1/56EF: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $12: ] nmi_itemwin_close: C1/56F2: A9 08 LDA #$08 C1/56F4: 8D F0 7B STA $7BF0 C1/56F7: 7B TDC C1/56F8: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $1A: ] nmi_learningwin_close: C1/56FB: A9 12 LDA #$12 C1/56FD: 8D F0 7B STA $7BF0 C1/5700: 7B TDC C1/5701: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $1D: ] nmi_riotwin_close: C1/5704: A9 14 LDA #$14 C1/5706: 8D F0 7B STA $7BF0 C1/5709: 7B TDC C1/570A: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $20: ] nmi_dancewin_close: C1/570D: A9 16 LDA #$16 C1/570F: 8D F0 7B STA $7BF0 C1/5712: 7B TDC C1/5713: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $29: ] nmi_madouwin_close: C1/5716: A9 1C LDA #$1C C1/5718: 8D F0 7B STA $7BF0 C1/571B: 7B TDC C1/571C: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $15: ] nmi_summonwin_close: C1/571F: A9 0E LDA #$0E C1/5721: 8D F0 7B STA $7BF0 C1/5724: A9 04 LDA #$04 C1/5726: 4C 2C 5A JMP $5A2C ; [ ] set_scr_vram_poi: C1/5729: AD A5 7B LDA $7BA5 C1/572C: 29 03 AND #$03 C1/572E: 0A ASL C1/572F: AA TAX C1/5730: BF 91 82 C1 LDA $C18291,X C1/5734: 8D AA 7B STA $7BAA C1/5737: BF 92 82 C1 LDA $C18292,X C1/573B: 8D AB 7B STA $7BAB C1/573E: EE A9 7B INC $7BA9 C1/5741: EE A6 7B INC $7BA6 C1/5744: EE A5 7B INC $7BA5 C1/5747: AD A5 7B LDA $7BA5 C1/574A: C9 84 CMP #$84 C1/574C: D0 05 BNE $5753 C1/574E: 9C A5 7B STZ $7BA5 C1/5751: 38 SEC C1/5752: 60 RTS C1/5753: 18 CLC C1/5754: 60 RTS ; [ Battle Menu Cursor State $3B: ] C1/5755: A9 27 LDA #$27 C1/5757: 8D F0 7B STA $7BF0 C1/575A: A9 11 LDA #$11 C1/575C: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $3C: ] C1/575F: A9 28 LDA #$28 C1/5761: 8D F0 7B STA $7BF0 C1/5764: A9 11 LDA #$11 C1/5766: 4C 2C 5A JMP $5A2C ; [ Battle Menu Cursor State $09: ] nmi_itemwin_open: C1/5769: 9C 02 7B STZ $7B02 C1/576C: 9C 0C 89 STZ $890C C1/576F: A9 09 LDA #$09 C1/5771: 8D C2 7B STA $7BC2 C1/5774: AD A5 7B LDA $7BA5 C1/5777: 30 11 BMI $578A C1/5779: 20 17 5A JSR $5A17 C1/577C: AE CA 62 LDX $62CA C1/577F: BD 47 89 LDA $8947,X C1/5782: 8D A6 7B STA $7BA6 C1/5785: A9 80 LDA #$80 C1/5787: 8D A5 7B STA $7BA5 C1/578A: AD A6 7B LDA $7BA6 C1/578D: 20 6B 4C JSR $4C6B C1/5790: 20 29 57 JSR $5729 C1/5793: 90 0A BCC $579F C1/5795: A9 07 LDA #$07 C1/5797: 8D F0 7B STA $7BF0 C1/579A: A9 02 LDA #$02 C1/579C: 4C 2C 5A JMP $5A2C C1/579F: 60 RTS ; [ Battle Menu Cursor State $0D: ] nmi_magicwin_open: C1/57A0: A9 0D LDA #$0D C1/57A2: 8D C2 7B STA $7BC2 C1/57A5: AD A5 7B LDA $7BA5 C1/57A8: 30 1A BMI $57C4 C1/57AA: 20 14 84 JSR $8414 C1/57AD: BD 95 20 LDA $2095,X C1/57B0: 8D 78 61 STA $6178 C1/57B3: 20 17 5A JSR $5A17 C1/57B6: AE CA 62 LDX $62CA C1/57B9: BD 13 89 LDA $8913,X C1/57BC: 8D A6 7B STA $7BA6 C1/57BF: A9 80 LDA #$80 C1/57C1: 8D A5 7B STA $7BA5 C1/57C4: AD A6 7B LDA $7BA6 C1/57C7: 20 B5 4D JSR $4DB5 C1/57CA: 20 29 57 JSR $5729 C1/57CD: 90 0A BCC $57D9 C1/57CF: A9 0B LDA #$0B C1/57D1: 8D F0 7B STA $7BF0 C1/57D4: A9 04 LDA #$04 C1/57D6: 4C 2C 5A JMP $5A2C C1/57D9: 60 RTS _window_jmp_tbl: C1/57DA: .DW $583A, $5850, $5856, $585C, $5882 C1/57E4: .DW $5836, $5850, $5856, $585C, $58BE ; [ generate item buffer by filtering inventory ] set_buf_item: C1/57EE: 86 36 STX $36 C1/57F0: AD A4 7B LDA $7BA4 C1/57F3: 85 38 STA $38 C1/57F5: AD A3 7B LDA $7BA3 C1/57F8: 85 39 STA $39 C1/57FA: AE 9F 7B LDX $7B9F C1/57FD: AC A1 7B LDY $7BA1 C1/5800: B9 87 26 LDA $2687,Y ; check item usage flags C1/5803: 25 38 AND $38 C1/5805: F0 15 BEQ $581C C1/5807: B9 86 26 LDA $2686,Y ; item id C1/580A: 9D 05 40 STA $4005,X C1/580D: B9 89 26 LDA $2689,Y ; item qty C1/5810: 9D 06 40 STA $4006,X C1/5813: B9 88 26 LDA $2688,Y ; item targeting flags C1/5816: 9D 07 40 STA $4007,X C1/5819: E8 INX C1/581A: E8 INX C1/581B: E8 INX C1/581C: E6 39 INC $39 ; next item C1/581E: C8 INY C1/581F: C8 INY C1/5820: C8 INY C1/5821: C8 INY C1/5822: C8 INY C1/5823: C4 36 CPY $36 C1/5825: D0 D9 BNE $5800 C1/5827: 8E 9F 7B STX $7B9F C1/582A: 8C A1 7B STY $7BA1 C1/582D: EE 9E 7B INC $7B9E C1/5830: A5 39 LDA $39 C1/5832: 8D A3 7B STA $7BA3 C1/5835: 60 RTS ; [ ] ; check items 0-63 C1/5836: A9 40 LDA #$40 ; tools flag C1/5838: 80 02 BRA $583C C1/583A: A9 20 LDA #$20 ; throw flag C1/583C: 8D A4 7B STA $7BA4 C1/583F: 7B TDC C1/5840: AA TAX C1/5841: 8E 9F 7B STX $7B9F ; reset item buffer C1/5844: 8E A1 7B STX $7BA1 C1/5847: 9C A3 7B STZ $7BA3 C1/584A: A2 40 01 LDX #$0140 C1/584D: 4C EE 57 JMP $57EE ; check items 64-127 C1/5850: A2 80 02 LDX #$0280 C1/5853: 4C EE 57 JMP $57EE ; check items 128-191 C1/5856: A2 C0 03 LDX #$03C0 C1/5859: 4C EE 57 JMP $57EE ; check items 192-255 C1/585C: A2 00 05 LDX #$0500 C1/585F: 20 EE 57 JSR $57EE C1/5862: A9 FF LDA #$FF C1/5864: E0 00 03 CPX #$0300 ; trim item buffer to 256 items C1/5867: F0 0B BEQ $5874 C1/5869: 9D 05 40 STA $4005,X C1/586C: 9E 06 40 STZ $4006,X C1/586F: E8 INX C1/5870: E8 INX C1/5871: E8 INX C1/5872: 80 F0 BRA $5864 C1/5874: 60 RTS ; [ Battle Menu Cursor State $2B: ] nmi_throwwin_open: C1/5875: A9 2B LDA #$2B C1/5877: 8D C2 7B STA $7BC2 C1/587A: AD 9E 7B LDA $7B9E C1/587D: 0A ASL C1/587E: AA TAX C1/587F: 7C DA 57 JMP ($57DA,X) C1/5882: AD A5 7B LDA $7BA5 C1/5885: 30 11 BMI $5898 C1/5887: 20 17 5A JSR $5A17 C1/588A: AE CA 62 LDX $62CA C1/588D: BD 53 89 LDA $8953,X C1/5890: 8D A6 7B STA $7BA6 C1/5893: A9 80 LDA #$80 C1/5895: 8D A5 7B STA $7BA5 C1/5898: AD A6 7B LDA $7BA6 C1/589B: 20 27 4C JSR $4C27 C1/589E: 20 29 57 JSR $5729 C1/58A1: 90 0D BCC $58B0 C1/58A3: 9C 9E 7B STZ $7B9E C1/58A6: A9 1D LDA #$1D C1/58A8: 8D F0 7B STA $7BF0 C1/58AB: A9 0E LDA #$0E C1/58AD: 4C 2C 5A JMP $5A2C C1/58B0: 60 RTS ; [ Battle Menu Cursor State $2E: ] nmi_machinewin_open: C1/58B1: A9 2E LDA #$2E C1/58B3: 8D C2 7B STA $7BC2 C1/58B6: AD 9E 7B LDA $7B9E C1/58B9: 0A ASL C1/58BA: AA TAX C1/58BB: 7C E4 57 JMP ($57E4,X) C1/58BE: AD A5 7B LDA $7BA5 C1/58C1: 30 11 BMI $58D4 C1/58C3: 20 17 5A JSR $5A17 C1/58C6: AE CA 62 LDX $62CA C1/58C9: BD 5F 89 LDA $895F,X C1/58CC: 8D A6 7B STA $7BA6 C1/58CF: A9 80 LDA #$80 C1/58D1: 8D A5 7B STA $7BA5 C1/58D4: AD A6 7B LDA $7BA6 C1/58D7: 20 F7 4B JSR $4BF7 C1/58DA: 20 29 57 JSR $5729 C1/58DD: 90 0D BCC $58EC C1/58DF: 9C 9E 7B STZ $7B9E C1/58E2: A9 20 LDA #$20 C1/58E4: 8D F0 7B STA $7BF0 C1/58E7: A9 0F LDA #$0F C1/58E9: 4C 2C 5A JMP $5A2C C1/58EC: 60 RTS ; [ Battle Menu Cursor State $19: ] nmi_learningwin_open: C1/58ED: A9 19 LDA #$19 C1/58EF: 8D C2 7B STA $7BC2 C1/58F2: AD A5 7B LDA $7BA5 C1/58F5: 30 1A BMI $5911 C1/58F7: 20 F7 83 JSR $83F7 C1/58FA: BD 6D 21 LDA $216D,X C1/58FD: 8D 78 61 STA $6178 C1/5900: 20 17 5A JSR $5A17 C1/5903: AE CA 62 LDX $62CA C1/5906: BD 1F 89 LDA $891F,X C1/5909: 8D A6 7B STA $7BA6 C1/590C: A9 80 LDA #$80 C1/590E: 8D A5 7B STA $7BA5 C1/5911: AD A6 7B LDA $7BA6 C1/5914: 20 76 4D JSR $4D76 C1/5917: 20 29 57 JSR $5729 C1/591A: 90 0A BCC $5926 C1/591C: A9 11 LDA #$11 C1/591E: 8D F0 7B STA $7BF0 C1/5921: A9 07 LDA #$07 C1/5923: 4C 2C 5A JMP $5A2C C1/5926: 60 RTS ; [ Battle Menu Cursor State $1C: ] nmi_riotwin_open: C1/5927: A9 1C LDA #$1C C1/5929: 8D C2 7B STA $7BC2 C1/592C: AD A5 7B LDA $7BA5 C1/592F: 30 11 BMI $5942 C1/5931: 20 17 5A JSR $5A17 C1/5934: AE CA 62 LDX $62CA C1/5937: BD 2B 89 LDA $892B,X C1/593A: 8D A6 7B STA $7BA6 C1/593D: A9 80 LDA #$80 C1/593F: 8D A5 7B STA $7BA5 C1/5942: AD A6 7B LDA $7BA6 C1/5945: 20 E2 4C JSR $4CE2 C1/5948: 20 29 57 JSR $5729 C1/594B: 90 0A BCC $5957 C1/594D: A9 13 LDA #$13 C1/594F: 8D F0 7B STA $7BF0 C1/5952: A9 09 LDA #$09 C1/5954: 4C 2C 5A JMP $5A2C C1/5957: 60 RTS ; [ Battle Menu Cursor State $1F: ] nmi_dancewin_open: C1/5958: A9 1F LDA #$1F C1/595A: 8D C2 7B STA $7BC2 C1/595D: AD A5 7B LDA $7BA5 C1/5960: 30 0B BMI $596D C1/5962: 20 17 5A JSR $5A17 C1/5965: 9C A6 7B STZ $7BA6 C1/5968: A9 80 LDA #$80 C1/596A: 8D A5 7B STA $7BA5 C1/596D: AD A6 7B LDA $7BA6 C1/5970: 20 08 4D JSR $4D08 C1/5973: 20 29 57 JSR $5729 C1/5976: 90 0A BCC $5982 C1/5978: A9 15 LDA #$15 C1/597A: 8D F0 7B STA $7BF0 C1/597D: A9 0A LDA #$0A C1/597F: 4C 2C 5A JMP $5A2C C1/5982: 60 RTS ; [ Battle Menu Cursor State $28: ] nmi_madouwin_open: C1/5983: A9 28 LDA #$28 C1/5985: 8D C2 7B STA $7BC2 C1/5988: AD A5 7B LDA $7BA5 C1/598B: 30 0B BMI $5998 C1/598D: 20 17 5A JSR $5A17 C1/5990: 9C A6 7B STZ $7BA6 C1/5993: A9 80 LDA #$80 C1/5995: 8D A5 7B STA $7BA5 C1/5998: AD A6 7B LDA $7BA6 C1/599B: 20 2E 4D JSR $4D2E C1/599E: 20 29 57 JSR $5729 C1/59A1: 90 0A BCC $59AD C1/59A3: A9 1B LDA #$1B C1/59A5: 8D F0 7B STA $7BF0 C1/59A8: A9 0D LDA #$0D C1/59AA: 4C 2C 5A JMP $5A2C C1/59AD: 60 RTS ; [ Battle Menu Cursor State $06: ] nmi_throtwin_open: C1/59AE: 20 1E 41 JSR $411E C1/59B1: A9 06 LDA #$06 C1/59B3: 8D C2 7B STA $7BC2 C1/59B6: AD A5 7B LDA $7BA5 C1/59B9: 30 0B BMI $59C6 C1/59BB: 20 17 5A JSR $5A17 C1/59BE: 9C A6 7B STZ $7BA6 C1/59C1: A9 80 LDA #$80 C1/59C3: 8D A5 7B STA $7BA5 C1/59C6: 20 29 57 JSR $5729 C1/59C9: 90 0A BCC $59D5 C1/59CB: A9 04 LDA #$04 C1/59CD: 8D F0 7B STA $7BF0 C1/59D0: A9 01 LDA #$01 C1/59D2: 4C 2C 5A JMP $5A2C C1/59D5: 60 RTS ; [ Battle Menu Cursor State $04: ] nmi_comwin_open: C1/59D6: AF 4E 1D 00 LDA $001D4E C1/59DA: 29 40 AND #$40 C1/59DC: D0 0B BNE $59E9 C1/59DE: 7B TDC C1/59DF: AA TAX C1/59E0: 9E 0F 89 STZ $890F,X C1/59E3: E8 INX C1/59E4: E0 5C 00 CPX #$005C C1/59E7: D0 F7 BNE $59E0 C1/59E9: A9 01 LDA #$01 C1/59EB: 8D 2F 63 STA $632F C1/59EE: A9 29 LDA #$29 C1/59F0: 8D F0 7B STA $7BF0 C1/59F3: A9 03 LDA #$03 C1/59F5: 8D F1 7B STA $7BF1 C1/59F8: A9 1F LDA #$1F C1/59FA: 8D F2 7B STA $7BF2 C1/59FD: 7B TDC C1/59FE: 4C 2C 5A JMP $5A2C ; [ ] nmi_summonwin_open: C1/5A01: 20 1E 4E JSR $4E1E C1/5A04: A2 80 7B LDX #$7B80 C1/5A07: 8E AA 7B STX $7BAA C1/5A0A: EE A9 7B INC $7BA9 C1/5A0D: A9 0D LDA #$0D C1/5A0F: 8D F0 7B STA $7BF0 C1/5A12: A9 06 LDA #$06 C1/5A14: 4C 2C 5A JMP $5A2C ; [ ] scr_line_tfr_buf_clr: C1/5A17: C2 20 REP #$20 C1/5A19: A6 00 LDX $00 C1/5A1B: A9 FF 01 LDA #$01FF C1/5A1E: 9D 4D 5E STA $5E4D,X C1/5A21: E8 INX C1/5A22: E8 INX C1/5A23: E0 80 00 CPX #$0080 C1/5A26: D0 F6 BNE $5A1E C1/5A28: 7B TDC C1/5A29: E2 20 SEP #$20 C1/5A2B: 60 RTS ; [ ] nmi2jmp_data_set: C1/5A2C: 0A ASL C1/5A2D: 0A ASL C1/5A2E: AA TAX C1/5A2F: A4 00 LDY $00 C1/5A31: BF 48 E3 C2 LDA $C2E348,X ; battle menu cursor state data C1/5A35: 99 C2 7B STA $7BC2,Y C1/5A38: E8 INX C1/5A39: C8 INY C1/5A3A: C0 04 00 CPY #$0004 C1/5A3D: D0 F2 BNE $5A31 C1/5A3F: 60 RTS ; [ Unused Battle Cursor Menu State ] C1/5A40: 60 RTS ; [ Battle Menu Cursor State $01: ] C1/5A41: AD F0 7B LDA $7BF0 C1/5A44: D0 03 BNE $5A49 C1/5A46: 4C 4A 5A JMP $5A4A C1/5A49: 60 RTS ; [ Battle Menu Cursor State $02: ] C1/5A4A: 7B TDC C1/5A4B: AA TAX C1/5A4C: 8D C9 7B STA $7BC9 C1/5A4F: BD C3 7B LDA $7BC3,X C1/5A52: 9D C2 7B STA $7BC2,X C1/5A55: E8 INX C1/5A56: E0 07 00 CPX #$0007 C1/5A59: D0 F4 BNE $5A4F C1/5A5B: 60 RTS ; [ Update Menu Text ] main_window_open: C1/5A5C: AD DD 7B LDA $7BDD C1/5A5F: F0 6F BEQ $5AD0 C1/5A61: AD BB 7B LDA $7BBB C1/5A64: D0 6A BNE $5AD0 C1/5A66: AD EE 7B LDA $7BEE C1/5A69: D0 62 BNE $5ACD C1/5A6B: AD EB 7B LDA $7BEB C1/5A6E: D0 11 BNE $5A81 C1/5A70: EE EB 7B INC $7BEB C1/5A73: C2 20 REP #$20 C1/5A75: AE E9 7B LDX $7BE9 C1/5A78: A0 D5 55 LDY #$55D5 C1/5A7B: AD EC 7B LDA $7BEC C1/5A7E: 54 7E 7E MVN $7E,$7E C1/5A81: C2 20 REP #$20 C1/5A83: AD DE 7B LDA $7BDE C1/5A86: AA TAX C1/5A87: 38 SEC C1/5A88: E9 10 00 SBC #$0010 C1/5A8B: 8D DE 7B STA $7BDE C1/5A8E: AD E0 7B LDA $7BE0 C1/5A91: A8 TAY C1/5A92: 38 SEC C1/5A93: E9 10 00 SBC #$0010 C1/5A96: 8D E0 7B STA $7BE0 C1/5A99: A9 0F 00 LDA #$000F C1/5A9C: 54 7E 7E MVN $7E,$7E C1/5A9F: AE E2 7B LDX $7BE2 C1/5AA2: AC E4 7B LDY $7BE4 C1/5AA5: A9 0F 00 LDA #$000F C1/5AA8: 54 7E 7E MVN $7E,$7E C1/5AAB: 8E E2 7B STX $7BE2 C1/5AAE: 8C E4 7B STY $7BE4 C1/5AB1: 7B TDC C1/5AB2: E2 20 SEP #$20 C1/5AB4: CE E6 7B DEC $7BE6 C1/5AB7: D0 14 BNE $5ACD C1/5AB9: 9C DD 7B STZ $7BDD C1/5ABC: C2 20 REP #$20 C1/5ABE: A2 D5 55 LDX #$55D5 C1/5AC1: AC E7 7B LDY $7BE7 C1/5AC4: AD EC 7B LDA $7BEC C1/5AC7: 54 7E 7E MVN $7E,$7E C1/5ACA: 7B TDC C1/5ACB: E2 20 SEP #$20 C1/5ACD: 9C EE 7B STZ $7BEE C1/5AD0: 60 RTS ; [ ] one_back_buffer_set: C1/5AD1: AD DB 7B LDA $7BDB C1/5AD4: D0 1F BNE $5AF5 C1/5AD6: AD D2 7B LDA $7BD2 C1/5AD9: 9D 75 47 STA $4775,X C1/5ADC: 9D 79 47 STA $4779,X C1/5ADF: 9D 7D 47 STA $477D,X C1/5AE2: 9D 81 47 STA $4781,X C1/5AE5: AD D4 7B LDA $7BD4 C1/5AE8: 9D 77 47 STA $4777,X C1/5AEB: 9D 7B 47 STA $477B,X C1/5AEE: 9D 7F 47 STA $477F,X C1/5AF1: 9D 83 47 STA $4783,X C1/5AF4: 60 RTS C1/5AF5: AD D2 7B LDA $7BD2 C1/5AF8: 9D F5 43 STA $43F5,X C1/5AFB: 9D F9 43 STA $43F9,X C1/5AFE: 9D FD 43 STA $43FD,X C1/5B01: 9D 01 44 STA $4401,X C1/5B04: AD D4 7B LDA $7BD4 C1/5B07: 9D F7 43 STA $43F7,X C1/5B0A: 9D FB 43 STA $43FB,X C1/5B0D: 9D FF 43 STA $43FF,X C1/5B10: 9D 03 44 STA $4403,X C1/5B13: 60 RTS ; [ Update Menu Windows ] back_window_open: C1/5B14: AD D1 7B LDA $7BD1 C1/5B17: F0 32 BEQ $5B4B C1/5B19: AD BB 7B LDA $7BBB C1/5B1C: D0 2D BNE $5B4B C1/5B1E: C2 20 REP #$20 C1/5B20: AE D7 7B LDX $7BD7 C1/5B23: 20 D1 5A JSR $5AD1 C1/5B26: AE D9 7B LDX $7BD9 C1/5B29: 20 D1 5A JSR $5AD1 C1/5B2C: AD D7 7B LDA $7BD7 C1/5B2F: 38 SEC C1/5B30: E9 10 00 SBC #$0010 C1/5B33: 8D D7 7B STA $7BD7 C1/5B36: AD D9 7B LDA $7BD9 C1/5B39: 18 CLC C1/5B3A: 69 10 00 ADC #$0010 C1/5B3D: 8D D9 7B STA $7BD9 C1/5B40: 7B TDC C1/5B41: E2 20 SEP #$20 C1/5B43: CE D6 7B DEC $7BD6 C1/5B46: D0 03 BNE $5B4B C1/5B48: 9C D1 7B STZ $7BD1 C1/5B4B: 60 RTS ; [ Battle Menu Cursor State $3E: ] C1/5B4C: AD AF 7B LDA $7BAF C1/5B4F: F0 11 BEQ $5B62 C1/5B51: AD A8 7B LDA $7BA8 C1/5B54: C9 01 CMP #$01 C1/5B56: F0 0A BEQ $5B62 C1/5B58: AE B1 7B LDX $7BB1 C1/5B5B: CA DEX C1/5B5C: CA DEX C1/5B5D: CA DEX C1/5B5E: CA DEX C1/5B5F: 8E B1 7B STX $7BB1 C1/5B62: E2 10 SEP #$10 C1/5B64: 7B TDC C1/5B65: AA TAX C1/5B66: C2 20 REP #$20 C1/5B68: A9 00 01 LDA #$0100 ; nonzero dp C1/5B6B: 48 PHA C1/5B6C: 2B PLD C1/5B6D: B5 02 LDA $02,X C1/5B6F: 8D FE 7A STA $7AFE C1/5B72: B5 12 LDA $12,X C1/5B74: 18 CLC C1/5B75: 69 04 00 ADC #$0004 C1/5B78: 95 02 STA $02,X C1/5B7A: 95 06 STA $06,X C1/5B7C: 95 0A STA $0A,X C1/5B7E: 95 0E STA $0E,X C1/5B80: 8A TXA C1/5B81: 18 CLC C1/5B82: 69 10 00 ADC #$0010 C1/5B85: AA TAX C1/5B86: E0 F0 CPX #$F0 C1/5B88: D0 E8 BNE $5B72 C1/5B8A: AD FE 7A LDA $7AFE C1/5B8D: 38 SEC C1/5B8E: E9 3C 00 SBC #$003C C1/5B91: 4C 5C 5D JMP $5D5C C1/5B94: CE A8 7B DEC $7BA8 C1/5B97: CE A8 7B DEC $7BA8 C1/5B9A: CE A8 7B DEC $7BA8 C1/5B9D: AD AF 7B LDA $7BAF C1/5BA0: F0 0C BEQ $5BAE C1/5BA2: C2 20 REP #$20 C1/5BA4: AD B1 7B LDA $7BB1 C1/5BA7: 18 CLC C1/5BA8: 69 08 00 ADC #$0008 C1/5BAB: 8D B1 7B STA $7BB1 C1/5BAE: E2 10 SEP #$10 C1/5BB0: A2 90 LDX #$90 C1/5BB2: C2 20 REP #$20 C1/5BB4: A9 00 01 LDA #$0100 ; nonzero dp C1/5BB7: 48 PHA C1/5BB8: 2B PLD C1/5BB9: B5 32 LDA $32,X C1/5BBB: 8D FE 7A STA $7AFE C1/5BBE: B5 02 LDA $02,X C1/5BC0: 38 SEC C1/5BC1: E9 0C 00 SBC #$000C C1/5BC4: 95 5E STA $5E,X C1/5BC6: 95 5A STA $5A,X C1/5BC8: 95 56 STA $56,X C1/5BCA: 95 52 STA $52,X C1/5BCC: 95 4E STA $4E,X C1/5BCE: 95 4A STA $4A,X C1/5BD0: 95 46 STA $46,X C1/5BD2: 95 42 STA $42,X C1/5BD4: 95 3E STA $3E,X C1/5BD6: 95 3A STA $3A,X C1/5BD8: 95 36 STA $36,X C1/5BDA: 95 32 STA $32,X C1/5BDC: 8A TXA C1/5BDD: 38 SEC C1/5BDE: E9 30 00 SBC #$0030 C1/5BE1: AA TAX C1/5BE2: E0 D0 CPX #$D0 C1/5BE4: D0 D8 BNE $5BBE C1/5BE6: A2 00 LDX #$00 C1/5BE8: AD FE 7A LDA $7AFE C1/5BEB: 18 CLC C1/5BEC: 69 30 00 ADC #$0030 C1/5BEF: 80 59 BRA $5C4A C1/5BF1: CE A8 7B DEC $7BA8 C1/5BF4: CE A8 7B DEC $7BA8 C1/5BF7: CE A8 7B DEC $7BA8 C1/5BFA: AD AF 7B LDA $7BAF C1/5BFD: F0 0C BEQ $5C0B C1/5BFF: C2 20 REP #$20 C1/5C01: AD B1 7B LDA $7BB1 C1/5C04: 38 SEC C1/5C05: E9 08 00 SBC #$0008 C1/5C08: 8D B1 7B STA $7BB1 C1/5C0B: E2 10 SEP #$10 C1/5C0D: 7B TDC C1/5C0E: AA TAX C1/5C0F: C2 20 REP #$20 C1/5C11: A9 00 01 LDA #$0100 ; nonzero dp C1/5C14: 48 PHA C1/5C15: 2B PLD C1/5C16: B5 02 LDA $02,X C1/5C18: 8D FE 7A STA $7AFE C1/5C1B: B5 32 LDA $32,X C1/5C1D: 18 CLC C1/5C1E: 69 0C 00 ADC #$000C C1/5C21: 95 02 STA $02,X C1/5C23: 95 06 STA $06,X C1/5C25: 95 0A STA $0A,X C1/5C27: 95 0E STA $0E,X C1/5C29: 95 12 STA $12,X C1/5C2B: 95 16 STA $16,X C1/5C2D: 95 1A STA $1A,X C1/5C2F: 95 1E STA $1E,X C1/5C31: 95 22 STA $22,X C1/5C33: 95 26 STA $26,X C1/5C35: 95 2A STA $2A,X C1/5C37: 95 2E STA $2E,X C1/5C39: 8A TXA C1/5C3A: 18 CLC C1/5C3B: 69 30 00 ADC #$0030 C1/5C3E: AA TAX C1/5C3F: E0 C0 CPX #$C0 C1/5C41: D0 D8 BNE $5C1B C1/5C43: AD FE 7A LDA $7AFE C1/5C46: 38 SEC C1/5C47: E9 30 00 SBC #$0030 C1/5C4A: 95 02 STA $02,X C1/5C4C: 95 06 STA $06,X C1/5C4E: 95 0A STA $0A,X C1/5C50: 95 0E STA $0E,X C1/5C52: 95 12 STA $12,X C1/5C54: 95 16 STA $16,X C1/5C56: 95 1A STA $1A,X C1/5C58: 95 1E STA $1E,X C1/5C5A: 95 22 STA $22,X C1/5C5C: 95 26 STA $26,X C1/5C5E: 95 2A STA $2A,X C1/5C60: 95 2E STA $2E,X C1/5C62: A2 00 LDX #$00 C1/5C64: B5 02 LDA $02,X C1/5C66: 9D 83 4D STA $4D83,X C1/5C69: B5 06 LDA $06,X C1/5C6B: 9D 87 4D STA $4D87,X C1/5C6E: B5 0A LDA $0A,X C1/5C70: 9D 8B 4D STA $4D8B,X C1/5C73: B5 0E LDA $0E,X C1/5C75: 9D 8F 4D STA $4D8F,X C1/5C78: 8A TXA C1/5C79: 18 CLC C1/5C7A: 69 10 00 ADC #$0010 C1/5C7D: AA TAX C1/5C7E: E0 C0 CPX #$C0 C1/5C80: D0 E2 BNE $5C64 C1/5C82: A9 00 00 LDA #$0000 C1/5C85: 48 PHA C1/5C86: 2B PLD C1/5C87: E2 20 SEP #$20 C1/5C89: C2 10 REP #$10 C1/5C8B: 20 4A 5A JSR $5A4A C1/5C8E: 4C 24 55 JMP $5524 ; [ Battle Menu Cursor State $17: ] C1/5C91: A5 06 LDA $06 C1/5C93: 29 10 AND #$10 C1/5C95: F0 18 BEQ $5CAF C1/5C97: AD A8 7B LDA $7BA8 C1/5C9A: C9 03 CMP #$03 C1/5C9C: D0 11 BNE $5CAF C1/5C9E: A5 0B LDA $0B C1/5CA0: 29 0F AND #$0F C1/5CA2: 85 36 STA $36 C1/5CA4: A5 05 LDA $05 C1/5CA6: 29 F0 AND #$F0 C1/5CA8: 05 36 ORA $36 C1/5CAA: 85 05 STA $05 C1/5CAC: 4C F1 5B JMP $5BF1 C1/5CAF: AD AF 7B LDA $7BAF C1/5CB2: F0 11 BEQ $5CC5 C1/5CB4: AD A8 7B LDA $7BA8 C1/5CB7: C9 01 CMP #$01 C1/5CB9: F0 0A BEQ $5CC5 C1/5CBB: AE B1 7B LDX $7BB1 C1/5CBE: CA DEX C1/5CBF: CA DEX C1/5CC0: CA DEX C1/5CC1: CA DEX C1/5CC2: 8E B1 7B STX $7BB1 C1/5CC5: E2 10 SEP #$10 C1/5CC7: 7B TDC C1/5CC8: AA TAX C1/5CC9: C2 20 REP #$20 C1/5CCB: A9 00 01 LDA #$0100 ; nonzero dp C1/5CCE: 48 PHA C1/5CCF: 2B PLD C1/5CD0: B5 02 LDA $02,X C1/5CD2: 8D FE 7A STA $7AFE C1/5CD5: B5 12 LDA $12,X C1/5CD7: 18 CLC C1/5CD8: 69 04 00 ADC #$0004 C1/5CDB: 95 02 STA $02,X C1/5CDD: 95 06 STA $06,X C1/5CDF: 95 0A STA $0A,X C1/5CE1: 95 0E STA $0E,X C1/5CE3: 8A TXA C1/5CE4: 18 CLC C1/5CE5: 69 10 00 ADC #$0010 C1/5CE8: AA TAX C1/5CE9: E0 E0 CPX #$E0 C1/5CEB: D0 E8 BNE $5CD5 C1/5CED: AD FE 7A LDA $7AFE C1/5CF0: 38 SEC C1/5CF1: E9 38 00 SBC #$0038 C1/5CF4: 4C 5C 5D JMP $5D5C ; [ Battle Menu Cursor State $18: ] C1/5CF7: A5 06 LDA $06 C1/5CF9: 29 10 AND #$10 C1/5CFB: F0 18 BEQ $5D15 C1/5CFD: AD A8 7B LDA $7BA8 C1/5D00: C9 03 CMP #$03 C1/5D02: D0 11 BNE $5D15 C1/5D04: A5 0B LDA $0B C1/5D06: 29 0F AND #$0F C1/5D08: 85 36 STA $36 C1/5D0A: A5 05 LDA $05 C1/5D0C: 29 F0 AND #$F0 C1/5D0E: 05 36 ORA $36 C1/5D10: 85 05 STA $05 C1/5D12: 4C 94 5B JMP $5B94 C1/5D15: AD AF 7B LDA $7BAF C1/5D18: F0 11 BEQ $5D2B C1/5D1A: AD A8 7B LDA $7BA8 C1/5D1D: C9 01 CMP #$01 C1/5D1F: F0 0A BEQ $5D2B C1/5D21: AE B1 7B LDX $7BB1 C1/5D24: E8 INX C1/5D25: E8 INX C1/5D26: E8 INX C1/5D27: E8 INX C1/5D28: 8E B1 7B STX $7BB1 C1/5D2B: E2 10 SEP #$10 C1/5D2D: A2 DC LDX #$DC C1/5D2F: C2 20 REP #$20 C1/5D31: A9 00 01 LDA #$0100 ; nonzero dp C1/5D34: 48 PHA C1/5D35: 2B PLD C1/5D36: B5 06 LDA $06,X C1/5D38: 8D FE 7A STA $7AFE C1/5D3B: B5 02 LDA $02,X C1/5D3D: 38 SEC C1/5D3E: E9 04 00 SBC #$0004 C1/5D41: 95 12 STA $12,X C1/5D43: 95 0E STA $0E,X C1/5D45: 95 0A STA $0A,X C1/5D47: 95 06 STA $06,X C1/5D49: 8A TXA C1/5D4A: 38 SEC C1/5D4B: E9 10 00 SBC #$0010 C1/5D4E: AA TAX C1/5D4F: E0 FC CPX #$FC C1/5D51: D0 E8 BNE $5D3B C1/5D53: A2 00 LDX #$00 C1/5D55: AD FE 7A LDA $7AFE C1/5D58: 18 CLC C1/5D59: 69 38 00 ADC #$0038 C1/5D5C: 95 0E STA $0E,X C1/5D5E: 95 0A STA $0A,X C1/5D60: 95 06 STA $06,X C1/5D62: 95 02 STA $02,X C1/5D64: A2 00 LDX #$00 C1/5D66: B5 02 LDA $02,X C1/5D68: 9D 83 4D STA $4D83,X C1/5D6B: B5 06 LDA $06,X C1/5D6D: 9D 87 4D STA $4D87,X C1/5D70: B5 0A LDA $0A,X C1/5D72: 9D 8B 4D STA $4D8B,X C1/5D75: B5 0E LDA $0E,X C1/5D77: 9D 8F 4D STA $4D8F,X C1/5D7A: 8A TXA C1/5D7B: 18 CLC C1/5D7C: 69 10 00 ADC #$0010 C1/5D7F: AA TAX C1/5D80: E0 C0 CPX #$C0 C1/5D82: D0 E2 BNE $5D66 C1/5D84: A9 00 00 LDA #$0000 C1/5D87: 48 PHA C1/5D88: 2B PLD C1/5D89: E2 20 SEP #$20 C1/5D8B: C2 10 REP #$10 C1/5D8D: CE A8 7B DEC $7BA8 C1/5D90: D0 06 BNE $5D98 C1/5D92: 20 4A 5A JSR $5A4A C1/5D95: 4C 24 55 JMP $5524 C1/5D98: 60 RTS ; [ Copy Menu Text Tile Data to VRAM ] C1/5D99: AD A9 7B LDA $7BA9 ; C1/5D9C: F0 13 BEQ $5DB1 C1/5D9E: A2 80 00 LDX #$0080 ; size = #$80 C1/5DA1: 86 36 STX $36 C1/5DA3: AC AA 7B LDY $7BAA ; VRAM destination C1/5DA6: A2 4D 5E LDX #$5E4D ; source = $7E5E4D C1/5DA9: A9 7E LDA #$7E C1/5DAB: 20 2B 1A JSR $1A2B ; copy data to VRAM C1/5DAE: 9C A9 7B STZ $7BA9 C1/5DB1: AD 85 62 LDA $6285 ; C1/5DB4: 30 04 BMI $5DBA C1/5DB6: 22 8A AB C2 JSL $C2AB8A C1/5DBA: 60 RTS mess_tfr_buf_clr: C1/5DBB: C2 20 REP #$20 C1/5DBD: 7B TDC C1/5DBE: AA TAX C1/5DBF: 9D 3F E3 STA $E33F,X C1/5DC2: 9D 3F E4 STA $E43F,X C1/5DC5: 9D 3F E5 STA $E53F,X C1/5DC8: 9D 3F E6 STA $E63F,X C1/5DCB: E8 INX C1/5DCC: E8 INX C1/5DCD: E0 00 01 CPX #$0100 C1/5DD0: D0 ED BNE $5DBF C1/5DD2: E2 20 SEP #$20 C1/5DD4: 60 RTS w_mess_set: C1/5DD5: 9C F5 E9 STZ $E9F5 C1/5DD8: 64 7A STZ $7A C1/5DDA: AE D7 88 LDX $88D7 C1/5DDD: 86 48 STX $48 C1/5DDF: AD D9 88 LDA $88D9 C1/5DE2: 85 4A STA $4A C1/5DE4: 64 4B STZ $4B C1/5DE6: A7 48 LDA [$48] C1/5DE8: F0 14 BEQ $5DFE C1/5DEA: C9 20 CMP #$20 C1/5DEC: 90 08 BCC $5DF6 C1/5DEE: 20 11 61 JSR $6111 C1/5DF1: 20 EC 66 JSR $66EC ; increment text pointer C1/5DF4: 80 F0 BRA $5DE6 C1/5DF6: 20 4F 5E JSR $5E4F C1/5DF9: 20 EC 66 JSR $66EC ; increment text pointer C1/5DFC: 80 E8 BRA $5DE6 C1/5DFE: 20 02 5E JSR $5E02 C1/5E01: 60 RTS ; [ ] C1/5E02: A6 48 LDX $48 C1/5E04: DA PHX C1/5E05: A6 4A LDX $4A C1/5E07: DA PHX C1/5E08: A5 7A LDA $7A C1/5E0A: 48 PHA C1/5E0B: 7B TDC C1/5E0C: 20 B6 9B JSR $9BB6 ; wait 0 frames C1/5E0F: 20 9B 63 JSR $639B ; C1/5E12: 68 PLA C1/5E13: 85 7A STA $7A C1/5E15: FA PLX C1/5E16: 86 4A STX $4A C1/5E18: FA PLX C1/5E19: 86 48 STX $48 C1/5E1B: 60 RTS C1/5E1C: A6 48 LDX $48 C1/5E1E: DA PHX C1/5E1F: A6 4A LDX $4A C1/5E21: DA PHX C1/5E22: A5 7A LDA $7A C1/5E24: 48 PHA C1/5E25: 20 2A 02 JSR $022A ; wait for vblank C1/5E28: 68 PLA C1/5E29: 85 7A STA $7A C1/5E2B: FA PLX C1/5E2C: 86 4A STX $4A C1/5E2E: FA PLX C1/5E2F: 86 48 STX $48 C1/5E31: 60 RTS C1/5E32: 85 22 STA $22 C1/5E34: A6 48 LDX $48 C1/5E36: DA PHX C1/5E37: A6 4A LDX $4A C1/5E39: DA PHX C1/5E3A: A5 7A LDA $7A C1/5E3C: 48 PHA C1/5E3D: A5 22 LDA $22 C1/5E3F: 20 B6 9B JSR $9BB6 C1/5E42: 20 9B 63 JSR $639B C1/5E45: 68 PLA C1/5E46: 85 7A STA $7A C1/5E48: FA PLX C1/5E49: 86 4A STX $4A C1/5E4B: FA PLX C1/5E4C: 86 48 STX $48 C1/5E4E: 60 RTS ; [ Write Message Text Special String ] C1/5E4F: 0A ASL C1/5E50: AA TAX C1/5E51: 7C 54 5E JMP ($5E54,X) ; dialog text special string jump table C1/5E54: .DW $6747, $608C, $5EAC, $6747, $607B, $5EA7, $5E9F, $5E94 C1/5E64: .DW $6747, $6747, $6747, $6747, $5F0C, $6747, $6043, $5FB3 C1/5E74: .DW $5F75, $5F7D, $5EE6, $5F6D, $5F65, $6747, $6747, $6747 C1/5E84: .DW $6747, $6747, $6747, $6747, $6111, $6111, $6111, $6111 ; [ Dialog Special String $07: Wait for Keypress ] C1/5E94: EE F5 E9 INC $E9F5 C1/5E97: 20 02 5E JSR $5E02 C1/5E9A: A5 04 LDA $04 C1/5E9C: 10 F6 BPL $5E94 C1/5E9E: 60 RTS ; [ Dialog Special String $06: Wait ] ; b0 = number of frames to wait C1/5E9F: 20 EC 66 JSR $66EC ; increment text pointer C1/5EA2: A7 48 LDA [$48] C1/5EA4: 4C 32 5E JMP $5E32 ; [ Dialog Special String $05: Wait 60 frames ] C1/5EA7: A9 3C LDA #$3C C1/5EA9: 4C 32 5E JMP $5E32 ; [ Dialog Special String $02: Character Name ] ; b0 = character name C1/5EAC: 20 EC 66 JSR $66EC ; increment text pointer C1/5EAF: A7 48 LDA [$48] C1/5EB1: 85 22 STA $22 C1/5EB3: 7B TDC C1/5EB4: AA TAX C1/5EB5: BF 00 16 00 LDA $001600,X C1/5EB9: C5 22 CMP $22 C1/5EBB: F0 12 BEQ $5ECF C1/5EBD: C2 20 REP #$20 C1/5EBF: 8A TXA C1/5EC0: 18 CLC C1/5EC1: 69 25 00 ADC #$0025 C1/5EC4: AA TAX C1/5EC5: 7B TDC C1/5EC6: E2 20 SEP #$20 C1/5EC8: E0 50 02 CPX #$0250 C1/5ECB: F0 18 BEQ $5EE5 C1/5ECD: 80 E6 BRA $5EB5 C1/5ECF: A9 06 LDA #$06 C1/5ED1: 8D 6D 61 STA $616D ; 6 letter string length C1/5ED4: BF 02 16 00 LDA $001602,X C1/5ED8: C9 FF CMP #$FF C1/5EDA: F0 09 BEQ $5EE5 C1/5EDC: 20 11 61 JSR $6111 C1/5EDF: E8 INX C1/5EE0: CE 6D 61 DEC $616D C1/5EE3: D0 EF BNE $5ED4 C1/5EE5: 60 RTS ; [ Dialog Special String $12: String from Variable ] ; b0: string type C1/5EE6: 20 EC 66 JSR $66EC ; increment text pointer C1/5EE9: A7 48 LDA [$48] C1/5EEB: 0A ASL C1/5EEC: AA TAX C1/5EED: 7C F0 5E JMP ($5EF0,X) ; jump table for string type C1/5EF0: .DW $5F40, $5F06, $5F00, $5F13 ; pointers to character names C1/5EF8: .DW $2EAE, $2ECE, $2EEE, $2F0E ; $02: attack name C1/5F00: AD 35 2F LDA $2F35 ; variable 0 C1/5F03: 4C B8 5F JMP $5FB8 ; write attack name ; $01: item name C1/5F06: AD 35 2F LDA $2F35 ; variable 0 C1/5F09: 4C 48 60 JMP $6048 ; write item name ; [ Dialog Special String $0C: Battle Command Name ] C1/5F0C: 20 EC 66 JSR $66EC ; increment text pointer C1/5F0F: A7 48 LDA [$48] C1/5F11: 80 03 BRA $5F16 ; $03: battle command name C1/5F13: AD 35 2F LDA $2F35 ; variable 0 C1/5F16: C9 FF CMP #$FF C1/5F18: D0 01 BNE $5F1B C1/5F1A: 60 RTS C1/5F1B: EB XBA C1/5F1C: A9 07 LDA #$07 C1/5F1E: 8D 6D 61 STA $616D C1/5F21: 20 CA 18 JSR $18CA C1/5F24: C2 20 REP #$20 C1/5F26: AF 16 42 00 LDA $004216 C1/5F2A: AA TAX C1/5F2B: 7B TDC C1/5F2C: E2 20 SEP #$20 C1/5F2E: BF A0 CE D8 LDA $D8CEA0,X ; battle command name C1/5F32: C9 FF CMP #$FF C1/5F34: F0 09 BEQ $5F3F C1/5F36: 20 11 61 JSR $6111 C1/5F39: E8 INX C1/5F3A: CE 6D 61 DEC $616D C1/5F3D: D0 EF BNE $5F2E C1/5F3F: 60 RTS ; $00: character name C1/5F40: AD 38 2F LDA $2F38 ; variable 1 C1/5F43: 0A ASL C1/5F44: AA TAX C1/5F45: C2 20 REP #$20 C1/5F47: BF F8 5E C1 LDA $C15EF8,X ; pointer to character name C1/5F4B: AA TAX C1/5F4C: 7B TDC C1/5F4D: E2 20 SEP #$20 C1/5F4F: A9 06 LDA #$06 C1/5F51: 8D 6D 61 STA $616D C1/5F54: BD 01 00 LDA $0001,X C1/5F57: C9 FF CMP #$FF C1/5F59: F0 09 BEQ $5F64 C1/5F5B: 20 11 61 JSR $6111 C1/5F5E: E8 INX C1/5F5F: CE 6D 61 DEC $616D C1/5F62: D0 F0 BNE $5F54 C1/5F64: 60 RTS ; [ Dialog Special String $14: Variable 3 ] C1/5F65: AE 3E 2F LDX $2F3E ; variable 3 C1/5F68: AD 40 2F LDA $2F40 C1/5F6B: 80 16 BRA $5F83 ; [ Dialog Special String $13: Variable 2 ] C1/5F6D: AE 3B 2F LDX $2F3B ; variable 2 C1/5F70: AD 3D 2F LDA $2F3D C1/5F73: 80 0E BRA $5F83 ; [ Dialog Special String $10: Variable 0 ] C1/5F75: AE 35 2F LDX $2F35 ; variable 0 C1/5F78: AD 37 2F LDA $2F37 C1/5F7B: 80 06 BRA $5F83 ; [ Dialog Special String $11: Variable 1 ] C1/5F7D: AE 38 2F LDX $2F38 ; variable 1 C1/5F80: AD 3A 2F LDA $2F3A C1/5F83: 86 10 STX $10 C1/5F85: 85 12 STA $12 C1/5F87: A9 B4 LDA #$B4 C1/5F89: 85 68 STA $68 C1/5F8B: 20 BF 1A JSR $1ABF C1/5F8E: 7B TDC C1/5F8F: AA TAX C1/5F90: B5 69 LDA $69,X C1/5F92: C9 B4 CMP #$B4 C1/5F94: D0 06 BNE $5F9C C1/5F96: E8 INX C1/5F97: E0 07 00 CPX #$0007 C1/5F9A: D0 F4 BNE $5F90 C1/5F9C: B5 69 LDA $69,X C1/5F9E: 20 11 61 JSR $6111 C1/5FA1: E8 INX C1/5FA2: E0 08 00 CPX #$0008 C1/5FA5: D0 F5 BNE $5F9C C1/5FA7: 60 RTS C1/5FA8: 48 PHA C1/5FA9: A9 FF LDA #$FF C1/5FAB: 20 11 61 JSR $6111 C1/5FAE: 68 PLA C1/5FAF: 3A DEC C1/5FB0: D0 F6 BNE $5FA8 C1/5FB2: 60 RTS ; [ Dialog Special String $0F: Attack Name ] C1/5FB3: 20 EC 66 JSR $66EC ; increment text pointer C1/5FB6: A7 48 LDA [$48] C1/5FB8: C9 FF CMP #$FF C1/5FBA: D0 01 BNE $5FBD C1/5FBC: 60 RTS C1/5FBD: C9 36 CMP #$36 C1/5FBF: 90 58 BCC $6019 ; branch if a spell C1/5FC1: C9 51 CMP #$51 C1/5FC3: 90 2A BCC $5FEF ; branch if an esper attack ; attack name C1/5FC5: 38 SEC C1/5FC6: E9 51 SBC #$51 C1/5FC8: EB XBA C1/5FC9: A9 0A LDA #$0A ; 10 letters C1/5FCB: 85 10 STA $10 C1/5FCD: 8D 6D 61 STA $616D C1/5FD0: 20 CA 18 JSR $18CA C1/5FD3: C2 20 REP #$20 C1/5FD5: AF 16 42 00 LDA $004216 C1/5FD9: AA TAX C1/5FDA: 7B TDC C1/5FDB: E2 20 SEP #$20 C1/5FDD: BF B9 F7 E6 LDA $E6F7B9,X ; attack names C1/5FE1: C9 FF CMP #$FF C1/5FE3: F0 09 BEQ $5FEE C1/5FE5: 20 11 61 JSR $6111 C1/5FE8: E8 INX C1/5FE9: CE 6D 61 DEC $616D C1/5FEC: D0 EF BNE $5FDD C1/5FEE: 60 RTS ; esper attack name C1/5FEF: 38 SEC C1/5FF0: E9 36 SBC #$36 C1/5FF2: EB XBA C1/5FF3: A9 08 LDA #$08 C1/5FF5: 85 10 STA $10 C1/5FF7: 8D 6D 61 STA $616D C1/5FFA: 20 CA 18 JSR $18CA C1/5FFD: C2 20 REP #$20 C1/5FFF: AF 16 42 00 LDA $004216 C1/6003: AA TAX C1/6004: 7B TDC C1/6005: E2 20 SEP #$20 C1/6007: BF E1 F6 E6 LDA $E6F6E1,X ; esper name C1/600B: C9 FF CMP #$FF C1/600D: F0 09 BEQ $6018 C1/600F: 20 11 61 JSR $6111 C1/6012: E8 INX C1/6013: CE 6D 61 DEC $616D C1/6016: D0 EF BNE $6007 C1/6018: 60 RTS ; spell name C1/6019: EB XBA C1/601A: A9 07 LDA #$07 ; 7 letters C1/601C: 85 10 STA $10 C1/601E: 8D 6D 61 STA $616D C1/6021: 20 CA 18 JSR $18CA C1/6024: C2 20 REP #$20 C1/6026: AF 16 42 00 LDA $004216 C1/602A: AA TAX C1/602B: 7B TDC C1/602C: E2 20 SEP #$20 C1/602E: CE 6D 61 DEC $616D ; skip symbol byte C1/6031: BF 68 F5 E6 LDA $E6F568,X ; spell name (skips symbol byte) C1/6035: C9 FF CMP #$FF C1/6037: F0 09 BEQ $6042 C1/6039: 20 11 61 JSR $6111 C1/603C: E8 INX C1/603D: CE 6D 61 DEC $616D C1/6040: D0 EF BNE $6031 C1/6042: 60 RTS ; [ Dialog Special String $0E: Item Name ] C1/6043: 20 EC 66 JSR $66EC ; increment text pointer C1/6046: A7 48 LDA [$48] C1/6048: C9 FF CMP #$FF C1/604A: D0 05 BNE $6051 C1/604C: A9 0D LDA #$0D C1/604E: 4C A8 5F JMP $5FA8 C1/6051: EB XBA C1/6052: A9 0D LDA #$0D C1/6054: 85 10 STA $10 C1/6056: 8D 6D 61 STA $616D C1/6059: 20 CA 18 JSR $18CA C1/605C: C2 20 REP #$20 C1/605E: AF 16 42 00 LDA $004216 C1/6062: AA TAX C1/6063: 7B TDC C1/6064: E2 20 SEP #$20 C1/6066: CE 6D 61 DEC $616D C1/6069: BF 01 B3 D2 LDA $D2B301,X ; item name C1/606D: C9 FF CMP #$FF C1/606F: F0 09 BEQ $607A C1/6071: 20 11 61 JSR $6111 C1/6074: E8 INX C1/6075: CE 6D 61 DEC $616D C1/6078: D0 EF BNE $6069 C1/607A: 60 RTS C1/607B: A5 4B LDA $4B C1/607D: 49 01 EOR #$01 C1/607F: 85 4B STA $4B C1/6081: 60 RTS C1/6082: .DW $5A00, $5C00, $5E00, $5800, $5800 ; [ Dialog Special String $01: New Line ] C1/608C: 64 7A STZ $7A C1/608E: AD C3 E9 LDA $E9C3 C1/6091: 10 45 BPL $60D8 C1/6093: 20 BB 5D JSR $5DBB C1/6096: AD C1 E9 LDA $E9C1 C1/6099: C9 04 CMP #$04 C1/609B: D0 03 BNE $60A0 C1/609D: 9C C1 E9 STZ $E9C1 C1/60A0: AD C1 E9 LDA $E9C1 C1/60A3: 29 03 AND #$03 C1/60A5: 0A ASL C1/60A6: AA TAX C1/60A7: C2 20 REP #$20 C1/60A9: BF 82 60 C1 LDA $C16082,X C1/60AD: 8D BF E9 STA $E9BF C1/60B0: 7B TDC C1/60B1: E2 20 SEP #$20 C1/60B3: EE C1 E9 INC $E9C1 C1/60B6: 20 02 5E JSR $5E02 C1/60B9: AD C2 E9 LDA $E9C2 C1/60BC: C9 02 CMP #$02 C1/60BE: D0 14 BNE $60D4 C1/60C0: A9 04 LDA #$04 C1/60C2: 8D A8 7B STA $7BA8 C1/60C5: A9 3E LDA #$3E C1/60C7: 8D C2 7B STA $7BC2 C1/60CA: AD C2 7B LDA $7BC2 C1/60CD: F0 08 BEQ $60D7 C1/60CF: 20 1C 5E JSR $5E1C C1/60D2: 80 F6 BRA $60CA C1/60D4: EE C2 E9 INC $E9C2 C1/60D7: 60 RTS C1/60D8: A9 10 LDA #$10 C1/60DA: 48 PHA C1/60DB: 7B TDC C1/60DC: AA TAX C1/60DD: C2 20 REP #$20 C1/60DF: A9 20 00 LDA #$0020 C1/60E2: 85 24 STA $24 C1/60E4: A9 0F 00 LDA #$000F C1/60E7: 85 22 STA $22 C1/60E9: BD 41 E3 LDA $E341,X C1/60EC: 9D 3F E3 STA $E33F,X C1/60EF: E8 INX C1/60F0: E8 INX C1/60F1: C6 22 DEC $22 C1/60F3: D0 F4 BNE $60E9 C1/60F5: 9E 3F E3 STZ $E33F,X C1/60F8: E8 INX C1/60F9: E8 INX C1/60FA: C6 24 DEC $24 C1/60FC: D0 E6 BNE $60E4 C1/60FE: 7B TDC C1/60FF: E2 20 SEP #$20 C1/6101: 20 02 5E JSR $5E02 C1/6104: 68 PLA C1/6105: 3A DEC C1/6106: D0 D2 BNE $60DA C1/6108: 60 RTS C1/6109: .DW $0004, $0003, $0002, $0001 C1/6111: 8D F0 EC STA $ECF0 C1/6114: 38 SEC C1/6115: E9 80 SBC #$80 C1/6117: 5A PHY C1/6118: DA PHX C1/6119: 85 22 STA $22 C1/611B: A9 16 LDA #$16 C1/611D: 85 24 STA $24 C1/611F: 20 D9 18 JSR $18D9 ; multiply $22 * $24 C1/6122: A5 4B LDA $4B C1/6124: F0 03 BEQ $6129 C1/6126: 4C 56 62 JMP $6256 C1/6129: A5 7A LDA $7A C1/612B: 29 F8 AND #$F8 C1/612D: C2 20 REP #$20 C1/612F: 0A ASL C1/6130: 0A ASL C1/6131: A8 TAY C1/6132: A9 0B 00 LDA #$000B C1/6135: 85 1C STA $1C C1/6137: A5 7A LDA $7A C1/6139: 29 04 00 AND #$0004 C1/613C: D0 03 BNE $6141 C1/613E: 4C C4 61 JMP $61C4 C1/6141: A5 7A LDA $7A C1/6143: 29 03 00 AND #$0003 C1/6146: 85 1A STA $1A C1/6148: A6 26 LDX $26 C1/614A: 64 12 STZ $12 C1/614C: A5 1A LDA $1A C1/614E: 85 18 STA $18 C1/6150: D0 06 BNE $6158 C1/6152: BF C0 90 C4 LDA $C490C0,X C1/6156: 80 0B BRA $6163 C1/6158: BF C0 90 C4 LDA $C490C0,X C1/615C: 4A LSR C1/615D: 66 12 ROR $12 C1/615F: C6 18 DEC $18 C1/6161: D0 F9 BNE $615C C1/6163: 85 22 STA $22 C1/6165: E2 20 SEP #$20 C1/6167: 19 67 E3 ORA $E367,Y C1/616A: 99 67 E3 STA $E367,Y C1/616D: A5 22 LDA $22 C1/616F: 19 68 E3 ORA $E368,Y C1/6172: 99 68 E3 STA $E368,Y C1/6175: EB XBA C1/6176: 19 47 E3 ORA $E347,Y C1/6179: 99 47 E3 STA $E347,Y C1/617C: A5 23 LDA $23 C1/617E: 19 48 E3 ORA $E348,Y C1/6181: 99 48 E3 STA $E348,Y C1/6184: A5 13 LDA $13 C1/6186: 19 87 E3 ORA $E387,Y C1/6189: 99 87 E3 STA $E387,Y C1/618C: A5 13 LDA $13 C1/618E: 19 88 E3 ORA $E388,Y C1/6191: 99 88 E3 STA $E388,Y C1/6194: C2 20 REP #$20 C1/6196: A5 22 LDA $22 C1/6198: 4A LSR C1/6199: 66 12 ROR $12 C1/619B: 85 22 STA $22 C1/619D: E2 20 SEP #$20 C1/619F: 19 69 E3 ORA $E369,Y C1/61A2: 99 69 E3 STA $E369,Y C1/61A5: EB XBA C1/61A6: 19 49 E3 ORA $E349,Y C1/61A9: 99 49 E3 STA $E349,Y C1/61AC: A5 13 LDA $13 C1/61AE: 19 89 E3 ORA $E389,Y C1/61B1: 99 89 E3 STA $E389,Y C1/61B4: C2 20 REP #$20 C1/61B6: C8 INY C1/61B7: C8 INY C1/61B8: E8 INX C1/61B9: E8 INX C1/61BA: C6 1C DEC $1C C1/61BC: F0 03 BEQ $61C1 C1/61BE: 4C 4A 61 JMP $614A C1/61C1: 4C 2E 62 JMP $622E C1/61C4: A5 7A LDA $7A C1/61C6: 29 03 00 AND #$0003 C1/61C9: 0A ASL C1/61CA: AA TAX C1/61CB: BF 09 61 C1 LDA $C16109,X C1/61CF: 85 1A STA $1A C1/61D1: A6 26 LDX $26 C1/61D3: A5 1A LDA $1A C1/61D5: 85 18 STA $18 C1/61D7: 64 12 STZ $12 C1/61D9: BF C0 90 C4 LDA $C490C0,X C1/61DD: 0A ASL C1/61DE: C6 18 DEC $18 C1/61E0: D0 FB BNE $61DD C1/61E2: 85 22 STA $22 C1/61E4: E2 20 SEP #$20 C1/61E6: 19 67 E3 ORA $E367,Y C1/61E9: 99 67 E3 STA $E367,Y C1/61EC: A5 22 LDA $22 C1/61EE: 19 68 E3 ORA $E368,Y C1/61F1: 99 68 E3 STA $E368,Y C1/61F4: A5 23 LDA $23 C1/61F6: 19 47 E3 ORA $E347,Y C1/61F9: 99 47 E3 STA $E347,Y C1/61FC: A5 23 LDA $23 C1/61FE: 19 48 E3 ORA $E348,Y C1/6201: 99 48 E3 STA $E348,Y C1/6204: C2 20 REP #$20 C1/6206: A5 22 LDA $22 C1/6208: 4A LSR C1/6209: 66 12 ROR $12 C1/620B: 85 22 STA $22 C1/620D: E2 20 SEP #$20 C1/620F: 19 69 E3 ORA $E369,Y C1/6212: 99 69 E3 STA $E369,Y C1/6215: EB XBA C1/6216: 19 49 E3 ORA $E349,Y C1/6219: 99 49 E3 STA $E349,Y C1/621C: A5 12 LDA $12 C1/621E: 19 89 E3 ORA $E389,Y C1/6221: 99 89 E3 STA $E389,Y C1/6224: C2 20 REP #$20 C1/6226: C8 INY C1/6227: C8 INY C1/6228: E8 INX C1/6229: E8 INX C1/622A: C6 1C DEC $1C C1/622C: D0 A5 BNE $61D3 C1/622E: 7B TDC C1/622F: E2 20 SEP #$20 C1/6231: DA PHX C1/6232: AD F0 EC LDA $ECF0 C1/6235: 38 SEC C1/6236: E9 60 SBC #$60 C1/6238: AA TAX C1/6239: BF C0 8F C4 LDA $C48FC0,X C1/623D: FA PLX C1/623E: 18 CLC C1/623F: 65 7A ADC $7A C1/6241: 85 7A STA $7A C1/6243: AD AC 62 LDA $62AC C1/6246: D0 03 BNE $624B C1/6248: 20 02 5E JSR $5E02 C1/624B: FA PLX C1/624C: 7A PLY C1/624D: 60 RTS C1/624E: .DB $00, $80, $C0, $E0, $F0, $F8, $FC, $FE C1/6256: A5 7A LDA $7A C1/6258: 29 07 AND #$07 C1/625A: AA TAX C1/625B: BF 4E 62 C1 LDA $C1624E,X C1/625F: 85 28 STA $28 C1/6261: A5 7A LDA $7A C1/6263: 29 F8 AND #$F8 C1/6265: C2 20 REP #$20 C1/6267: 0A ASL C1/6268: 0A ASL C1/6269: A8 TAY C1/626A: A9 0B 00 LDA #$000B C1/626D: 85 1C STA $1C C1/626F: A5 7A LDA $7A C1/6271: 29 04 00 AND #$0004 C1/6274: D0 03 BNE $6279 C1/6276: 4C 07 63 JMP $6307 C1/6279: A5 7A LDA $7A C1/627B: 29 03 00 AND #$0003 C1/627E: 85 1A STA $1A C1/6280: A6 26 LDX $26 C1/6282: 64 12 STZ $12 C1/6284: A5 1A LDA $1A C1/6286: 85 18 STA $18 C1/6288: D0 06 BNE $6290 C1/628A: BF C0 90 C4 LDA $C490C0,X ; variable-width font graphics C1/628E: 80 0B BRA $629B C1/6290: BF C0 90 C4 LDA $C490C0,X C1/6294: 4A LSR C1/6295: 66 12 ROR $12 C1/6297: C6 18 DEC $18 C1/6299: D0 F9 BNE $6294 C1/629B: 85 22 STA $22 C1/629D: E2 20 SEP #$20 C1/629F: 19 68 E3 ORA $E368,Y C1/62A2: 99 68 E3 STA $E368,Y C1/62A5: 39 67 E3 AND $E367,Y C1/62A8: 49 FF EOR #$FF C1/62AA: 39 67 E3 AND $E367,Y C1/62AD: 99 67 E3 STA $E367,Y C1/62B0: EB XBA C1/62B1: 19 48 E3 ORA $E348,Y C1/62B4: 99 48 E3 STA $E348,Y C1/62B7: 39 47 E3 AND $E347,Y C1/62BA: 49 FF EOR #$FF C1/62BC: 05 28 ORA $28 C1/62BE: 39 47 E3 AND $E347,Y C1/62C1: 99 47 E3 STA $E347,Y C1/62C4: A5 13 LDA $13 C1/62C6: 19 88 E3 ORA $E388,Y C1/62C9: 99 88 E3 STA $E388,Y C1/62CC: 39 87 E3 AND $E387,Y C1/62CF: 49 FF EOR #$FF C1/62D1: 39 87 E3 AND $E387,Y C1/62D4: 99 87 E3 STA $E387,Y C1/62D7: C2 20 REP #$20 C1/62D9: A5 22 LDA $22 C1/62DB: 4A LSR C1/62DC: 66 12 ROR $12 C1/62DE: 85 22 STA $22 C1/62E0: E2 20 SEP #$20 C1/62E2: 19 69 E3 ORA $E369,Y C1/62E5: 99 69 E3 STA $E369,Y C1/62E8: EB XBA C1/62E9: 19 49 E3 ORA $E349,Y C1/62EC: 99 49 E3 STA $E349,Y C1/62EF: A5 13 LDA $13 C1/62F1: 19 89 E3 ORA $E389,Y C1/62F4: 99 89 E3 STA $E389,Y C1/62F7: C2 20 REP #$20 C1/62F9: C8 INY C1/62FA: C8 INY C1/62FB: E8 INX C1/62FC: E8 INX C1/62FD: C6 1C DEC $1C C1/62FF: F0 03 BEQ $6304 C1/6301: 4C 82 62 JMP $6282 C1/6304: 4C 7B 63 JMP $637B C1/6307: A5 7A LDA $7A C1/6309: 29 03 00 AND #$0003 C1/630C: 0A ASL C1/630D: AA TAX C1/630E: BF 09 61 C1 LDA $C16109,X C1/6312: 85 1A STA $1A C1/6314: A6 26 LDX $26 C1/6316: A5 1A LDA $1A C1/6318: 85 18 STA $18 C1/631A: 64 12 STZ $12 C1/631C: BF C0 90 C4 LDA $C490C0,X ; variable-width font graphics C1/6320: 0A ASL C1/6321: C6 18 DEC $18 C1/6323: D0 FB BNE $6320 C1/6325: 85 22 STA $22 C1/6327: E2 20 SEP #$20 C1/6329: 19 68 E3 ORA $E368,Y C1/632C: 99 68 E3 STA $E368,Y C1/632F: 39 67 E3 AND $E367,Y C1/6332: 49 FF EOR #$FF C1/6334: 39 67 E3 AND $E367,Y C1/6337: 99 67 E3 STA $E367,Y C1/633A: EB XBA C1/633B: 19 48 E3 ORA $E348,Y C1/633E: 99 48 E3 STA $E348,Y C1/6341: 39 47 E3 AND $E347,Y C1/6344: 49 FF EOR #$FF C1/6346: 05 28 ORA $28 C1/6348: 39 47 E3 AND $E347,Y C1/634B: 99 47 E3 STA $E347,Y C1/634E: C2 20 REP #$20 C1/6350: A5 22 LDA $22 C1/6352: 4A LSR C1/6353: 66 12 ROR $12 C1/6355: 85 22 STA $22 C1/6357: E2 20 SEP #$20 C1/6359: 19 69 E3 ORA $E369,Y C1/635C: 99 69 E3 STA $E369,Y C1/635F: EB XBA C1/6360: 19 49 E3 ORA $E349,Y C1/6363: 99 49 E3 STA $E349,Y C1/6366: A5 13 LDA $13 C1/6368: 19 89 E3 ORA $E389,Y C1/636B: 99 89 E3 STA $E389,Y C1/636E: C2 20 REP #$20 C1/6370: C8 INY C1/6371: C8 INY C1/6372: E8 INX C1/6373: E8 INX C1/6374: C6 1C DEC $1C C1/6376: F0 03 BEQ $637B C1/6378: 4C 16 63 JMP $6316 C1/637B: 7B TDC C1/637C: E2 20 SEP #$20 C1/637E: DA PHX C1/637F: AD F0 EC LDA $ECF0 C1/6382: 38 SEC C1/6383: E9 60 SBC #$60 C1/6385: AA TAX C1/6386: BF C0 8F C4 LDA $C48FC0,X ; variable-width font letter widths C1/638A: FA PLX C1/638B: 18 CLC C1/638C: 65 7A ADC $7A C1/638E: 85 7A STA $7A C1/6390: AD AC 62 LDA $62AC C1/6393: D0 03 BNE $6398 C1/6395: 20 02 5E JSR $5E02 C1/6398: FA PLX C1/6399: 7A PLY C1/639A: 60 RTS ; [ ] w_mess_cgx_tfr: C1/639B: A2 00 04 LDX #$0400 ; size = $0400 C1/639E: 86 10 STX $10 C1/63A0: A2 3F E3 LDX #$E33F ; source = $7EE33F C1/63A3: A9 7E LDA #$7E C1/63A5: AC BF E9 LDY $E9BF ; destination (VRAM) C1/63A8: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ Write Menu List Text ] nmi_mess_set: C1/63AB: AD E2 88 LDA $88E2 C1/63AE: 85 56 STA $56 C1/63B0: 85 58 STA $58 C1/63B2: 85 5A STA $5A C1/63B4: EB XBA C1/63B5: 0E E1 88 ASL $88E1 C1/63B8: 64 2D STZ $2D C1/63BA: AE DD 88 LDX $88DD C1/63BD: 86 4F STX $4F C1/63BF: AE DF 88 LDX $88DF C1/63C2: 86 51 STX $51 C1/63C4: A5 51 LDA $51 C1/63C6: 18 CLC C1/63C7: 6D E1 88 ADC $88E1 C1/63CA: 85 53 STA $53 C1/63CC: A5 52 LDA $52 C1/63CE: 69 00 ADC #$00 C1/63D0: 85 54 STA $54 C1/63D2: A4 00 LDY $00 C1/63D4: B2 4F LDA ($4F) C1/63D6: F0 1C BEQ $63F4 C1/63D8: C9 20 CMP #$20 C1/63DA: 90 0C BCC $63E8 C1/63DC: 20 FE 63 JSR $63FE C1/63DF: E6 4F INC $4F C1/63E1: D0 F1 BNE $63D4 C1/63E3: E6 50 INC $50 C1/63E5: 4C D4 63 JMP $63D4 C1/63E8: 20 0B 64 JSR $640B C1/63EB: E6 4F INC $4F C1/63ED: D0 E5 BNE $63D4 C1/63EF: E6 50 INC $50 C1/63F1: 4C D4 63 JMP $63D4 C1/63F4: 7B TDC C1/63F5: EB XBA C1/63F6: 60 RTS ; [ ] C1/63F7: E6 4F INC $4F C1/63F9: D0 02 BNE $63FD C1/63FB: E6 50 INC $50 C1/63FD: 60 RTS ; [ draw one letter ] C1/63FE: C2 20 REP #$20 C1/6400: 91 53 STA ($53),Y ; tile id C1/6402: A5 55 LDA $55 C1/6404: 91 51 STA ($51),Y C1/6406: E2 20 SEP #$20 C1/6408: C8 INY C1/6409: C8 INY C1/640A: 60 RTS ; [ Write Menu List Text Special String ] C1/640B: 85 2C STA $2C C1/640D: 06 2C ASL $2C C1/640F: A6 2C LDX $2C C1/6411: 7C 14 64 JMP ($6414,X) ; menu list text special string jump table C1/6414: .DW $6747, $6748, $6494, $64C9, $64D1, $64DE, $64EF, $6747 C1/6424: .DW $6747, $6747, $6747, $6747, $6747, $6747, $6558, $6598 C1/6434: .DW $6747, $6585, $6517, $6747, $6747, $6747, $644A, $6600 C1/6444: .DW $6628, $6655, $667D C1/644A: 20 F7 63 JSR $63F7 C1/644D: 64 40 STZ $40 C1/644F: 64 41 STZ $41 C1/6451: B2 4F LDA ($4F) C1/6453: 38 SEC C1/6454: E9 64 SBC #$64 C1/6456: 90 04 BCC $645C C1/6458: E6 40 INC $40 C1/645A: 80 F7 BRA $6453 C1/645C: 18 CLC C1/645D: 69 64 ADC #$64 C1/645F: 38 SEC C1/6460: E9 0A SBC #$0A C1/6462: 90 04 BCC $6468 C1/6464: E6 41 INC $41 C1/6466: 80 F7 BRA $645F C1/6468: 18 CLC C1/6469: 69 0A ADC #$0A C1/646B: 48 PHA C1/646C: A5 40 LDA $40 C1/646E: D0 02 BNE $6472 C1/6470: A9 4B LDA #$4B C1/6472: 18 CLC C1/6473: 69 B4 ADC #$B4 C1/6475: 20 FE 63 JSR $63FE C1/6478: A5 41 LDA $41 C1/647A: 05 40 ORA $40 C1/647C: D0 07 BNE $6485 C1/647E: A9 FF LDA #$FF C1/6480: 20 FE 63 JSR $63FE C1/6483: 80 08 BRA $648D C1/6485: A5 41 LDA $41 C1/6487: 18 CLC C1/6488: 69 B4 ADC #$B4 C1/648A: 20 FE 63 JSR $63FE C1/648D: 68 PLA C1/648E: 18 CLC C1/648F: 69 B4 ADC #$B4 C1/6491: 4C FE 63 JMP $63FE ; [ Menu List Text Special String $02: Number ] C1/6494: 20 F7 63 JSR $63F7 C1/6497: 64 40 STZ $40 ; tens digit C1/6499: B2 4F LDA ($4F) C1/649B: 38 SEC C1/649C: E9 0A SBC #$0A C1/649E: 90 05 BCC $64A5 C1/64A0: E6 40 INC $40 C1/64A2: 4C 9B 64 JMP $649B C1/64A5: 18 CLC C1/64A6: 69 0A ADC #$0A C1/64A8: 85 41 STA $41 ; ones digit C1/64AA: A5 40 LDA $40 C1/64AC: D0 02 BNE $64B0 C1/64AE: A9 4B LDA #$4B ; $4B + $B4 = $FF " " C1/64B0: 18 CLC C1/64B1: 69 B4 ADC #$B4 ; $B4 "0" C1/64B3: 20 FE 63 JSR $63FE C1/64B6: A5 41 LDA $41 C1/64B8: 05 40 ORA $40 C1/64BA: D0 05 BNE $64C1 C1/64BC: A9 FF LDA #$FF C1/64BE: 4C FE 63 JMP $63FE C1/64C1: A5 41 LDA $41 C1/64C3: 18 CLC C1/64C4: 69 B4 ADC #$B4 C1/64C6: 4C FE 63 JMP $63FE C1/64C9: 20 F7 63 JSR $63F7 C1/64CC: B2 4F LDA ($4F) C1/64CE: 4C FE 63 JMP $63FE C1/64D1: 20 F7 63 JSR $63F7 C1/64D4: B2 4F LDA ($4F) C1/64D6: 85 56 STA $56 C1/64D8: 85 58 STA $58 C1/64DA: 85 5A STA $5A C1/64DC: EB XBA C1/64DD: 60 RTS C1/64DE: 20 F7 63 JSR $63F7 C1/64E1: B2 4F LDA ($4F) C1/64E3: 85 40 STA $40 C1/64E5: A9 FF LDA #$FF C1/64E7: 20 FE 63 JSR $63FE C1/64EA: C6 40 DEC $40 C1/64EC: D0 F7 BNE $64E5 C1/64EE: 60 RTS ; [ Menu List Text Special String $06: Magitek Attack Name ] C1/64EF: 20 F7 63 JSR $63F7 C1/64F2: B2 4F LDA ($4F) C1/64F4: C9 FF CMP #$FF C1/64F6: D0 05 BNE $64FD C1/64F8: A9 0A LDA #$0A C1/64FA: 4C A5 66 JMP $66A5 C1/64FD: 85 2C STA $2C C1/64FF: A9 0A LDA #$0A C1/6501: 85 2E STA $2E C1/6503: 85 40 STA $40 C1/6505: 20 B0 18 JSR $18B0 C1/6508: A6 30 LDX $30 C1/650A: BF AD F9 E6 LDA $E6F9AD,X ; magitek attack name C1/650E: 20 FE 63 JSR $63FE C1/6511: E8 INX C1/6512: C6 40 DEC $40 C1/6514: D0 F4 BNE $650A C1/6516: 60 RTS ; [ Menu List Text Special String $12: Item Type Name ] C1/6517: 20 F7 63 JSR $63F7 C1/651A: B2 4F LDA ($4F) C1/651C: C9 FF CMP #$FF C1/651E: D0 05 BNE $6525 C1/6520: A9 07 LDA #$07 C1/6522: 4C A5 66 JMP $66A5 C1/6525: 85 2C STA $2C C1/6527: A9 0D LDA #$0D C1/6529: 85 2E STA $2E C1/652B: 20 B0 18 JSR $18B0 C1/652E: A6 30 LDX $30 C1/6530: BF 00 B3 D2 LDA $D2B300,X ; item name C1/6534: C9 FF CMP #$FF C1/6536: F0 E8 BEQ $6520 C1/6538: 38 SEC C1/6539: E9 D8 SBC #$D8 C1/653B: 85 2C STA $2C C1/653D: A9 07 LDA #$07 C1/653F: 85 2E STA $2E C1/6541: 85 40 STA $40 C1/6543: 20 B0 18 JSR $18B0 C1/6546: A6 30 LDX $30 C1/6548: A5 56 LDA $56 C1/654A: EB XBA C1/654B: BF 00 6F D2 LDA $D26F00,X ; item type (symbol) name C1/654F: 20 FE 63 JSR $63FE C1/6552: E8 INX C1/6553: C6 40 DEC $40 C1/6555: D0 F4 BNE $654B C1/6557: 60 RTS ; [ Menu List Text Special String $0E: Item Name ] C1/6558: 20 F7 63 JSR $63F7 C1/655B: B2 4F LDA ($4F) C1/655D: C9 FF CMP #$FF C1/655F: D0 05 BNE $6566 C1/6561: A9 0D LDA #$0D C1/6563: 4C A5 66 JMP $66A5 C1/6566: 85 2C STA $2C C1/6568: A9 0D LDA #$0D C1/656A: 85 2E STA $2E C1/656C: 20 B0 18 JSR $18B0 C1/656F: A6 30 LDX $30 C1/6571: A5 56 LDA $56 C1/6573: EB XBA C1/6574: A9 0D LDA #$0D C1/6576: 85 40 STA $40 C1/6578: BF 00 B3 D2 LDA $D2B300,X ; item name C1/657C: 20 FE 63 JSR $63FE C1/657F: E8 INX C1/6580: C6 40 DEC $40 C1/6582: D0 F4 BNE $6578 C1/6584: 60 RTS C1/6585: 20 98 65 JSR $6598 C1/6588: B2 4F LDA ($4F) C1/658A: C9 FF CMP #$FF C1/658C: F0 05 BEQ $6593 C1/658E: C9 36 CMP #$36 C1/6590: 90 01 BCC $6593 C1/6592: 60 RTS C1/6593: A9 03 LDA #$03 C1/6595: 4C A5 66 JMP $66A5 ; [ Menu List Text Special String $0F: Attack Name ] C1/6598: 20 F7 63 JSR $63F7 C1/659B: B2 4F LDA ($4F) C1/659D: 85 2C STA $2C C1/659F: C9 FF CMP #$FF C1/65A1: D0 05 BNE $65A8 C1/65A3: A9 07 LDA #$07 C1/65A5: 4C A5 66 JMP $66A5 C1/65A8: C9 36 CMP #$36 C1/65AA: 90 3C BCC $65E8 C1/65AC: C9 51 CMP #$51 C1/65AE: 90 1C BCC $65CC C1/65B0: 38 SEC C1/65B1: E9 51 SBC #$51 C1/65B3: EB XBA C1/65B4: A9 0A LDA #$0A C1/65B6: 85 2E STA $2E C1/65B8: 85 40 STA $40 C1/65BA: 20 B0 18 JSR $18B0 C1/65BD: A6 30 LDX $30 C1/65BF: BF B9 F7 E6 LDA $E6F7B9,X ; attack name C1/65C3: 20 FE 63 JSR $63FE C1/65C6: E8 INX C1/65C7: C6 40 DEC $40 C1/65C9: D0 F4 BNE $65BF C1/65CB: 60 RTS C1/65CC: 38 SEC C1/65CD: E9 36 SBC #$36 C1/65CF: EB XBA C1/65D0: A9 08 LDA #$08 C1/65D2: 85 2E STA $2E C1/65D4: 85 40 STA $40 C1/65D6: 20 B0 18 JSR $18B0 C1/65D9: A6 30 LDX $30 C1/65DB: BF E1 F6 E6 LDA $E6F6E1,X ; esper name C1/65DF: 20 FE 63 JSR $63FE C1/65E2: E8 INX C1/65E3: C6 40 DEC $40 C1/65E5: D0 F4 BNE $65DB C1/65E7: 60 RTS C1/65E8: A9 07 LDA #$07 C1/65EA: 85 2E STA $2E C1/65EC: 85 40 STA $40 C1/65EE: 20 B0 18 JSR $18B0 C1/65F1: A6 30 LDX $30 C1/65F3: BF 67 F5 E6 LDA $E6F567,X ; spell name C1/65F7: 20 FE 63 JSR $63FE C1/65FA: E8 INX C1/65FB: C6 40 DEC $40 C1/65FD: D0 F4 BNE $65F3 C1/65FF: 60 RTS C1/6600: 20 F7 63 JSR $63F7 C1/6603: B2 4F LDA ($4F) C1/6605: 85 2C STA $2C C1/6607: C9 FF CMP #$FF C1/6609: D0 05 BNE $6610 C1/660B: A9 0C LDA #$0C C1/660D: 4C A5 66 JMP $66A5 C1/6610: A9 0C LDA #$0C C1/6612: 85 2E STA $2E C1/6614: 85 40 STA $40 C1/6616: 20 B0 18 JSR $18B0 C1/6619: A6 30 LDX $30 C1/661B: BF 9D FF E6 LDA $E6FF9D,X ; dance name C1/661F: 20 FE 63 JSR $63FE C1/6622: E8 INX C1/6623: C6 40 DEC $40 C1/6625: D0 F4 BNE $661B C1/6627: 60 RTS C1/6628: 20 F7 63 JSR $63F7 C1/662B: B2 4F LDA ($4F) C1/662D: 85 2C STA $2C C1/662F: C9 FF CMP #$FF C1/6631: D0 05 BNE $6638 C1/6633: A9 0B LDA #$0B C1/6635: 4C A5 66 JMP $66A5 C1/6638: A9 0A LDA #$0A C1/663A: 85 2E STA $2E C1/663C: 85 40 STA $40 C1/663E: 20 B0 18 JSR $18B0 C1/6641: A6 30 LDX $30 C1/6643: BF 50 C0 CF LDA $CFC050,X ; monster name C1/6647: 20 FE 63 JSR $63FE C1/664A: E8 INX C1/664B: C6 40 DEC $40 C1/664D: D0 F4 BNE $6643 C1/664F: A9 FF LDA #$FF C1/6651: 20 FE 63 JSR $63FE C1/6654: 60 RTS C1/6655: 20 F7 63 JSR $63F7 C1/6658: B2 4F LDA ($4F) C1/665A: 85 2C STA $2C C1/665C: C9 FF CMP #$FF C1/665E: D0 05 BNE $6665 C1/6660: A9 0A LDA #$0A C1/6662: 4C A5 66 JMP $66A5 C1/6665: A9 0A LDA #$0A C1/6667: 85 2E STA $2E C1/6669: 85 40 STA $40 C1/666B: 20 B0 18 JSR $18B0 C1/666E: A6 30 LDX $30 C1/6670: BF FD F9 E6 LDA $E6F9FD,X ; lore name C1/6674: 20 FE 63 JSR $63FE C1/6677: E8 INX C1/6678: C6 40 DEC $40 C1/667A: D0 F4 BNE $6670 C1/667C: 60 RTS C1/667D: 20 F7 63 JSR $63F7 C1/6680: B2 4F LDA ($4F) C1/6682: 85 2C STA $2C C1/6684: C9 FF CMP #$FF C1/6686: D0 05 BNE $668D C1/6688: A9 08 LDA #$08 C1/668A: 4C A5 66 JMP $66A5 C1/668D: A9 08 LDA #$08 C1/668F: 85 2E STA $2E C1/6691: 85 40 STA $40 C1/6693: 20 B0 18 JSR $18B0 C1/6696: A6 30 LDX $30 C1/6698: BF E1 F6 E6 LDA $E6F6E1,X ; esper name C1/669C: 20 FE 63 JSR $63FE C1/669F: E8 INX C1/66A0: C6 40 DEC $40 C1/66A2: D0 F4 BNE $6698 C1/66A4: 60 RTS C1/66A5: 85 40 STA $40 C1/66A7: A9 FF LDA #$FF C1/66A9: 20 FE 63 JSR $63FE C1/66AC: C6 40 DEC $40 C1/66AE: D0 F7 BNE $66A7 C1/66B0: 60 RTS ; [ Write Menu Text ] mess_set: C1/66B1: AD DC 88 LDA $88DC C1/66B4: 85 4E STA $4E C1/66B6: 0E DB 88 ASL $88DB C1/66B9: AE D7 88 LDX $88D7 C1/66BC: 86 48 STX $48 C1/66BE: AE D9 88 LDX $88D9 C1/66C1: 86 4A STX $4A C1/66C3: A5 4A LDA $4A C1/66C5: 18 CLC C1/66C6: 6D DB 88 ADC $88DB C1/66C9: 85 4C STA $4C C1/66CB: A5 4B LDA $4B C1/66CD: 69 00 ADC #$00 C1/66CF: 85 4D STA $4D C1/66D1: A4 00 LDY $00 C1/66D3: B2 48 LDA ($48) ; get next letter C1/66D5: F0 14 BEQ $66EB ; return if end of string C1/66D7: C9 20 CMP #$20 C1/66D9: 90 08 BCC $66E3 ; branch if special string C1/66DB: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/66DE: 20 EC 66 JSR $66EC ; increment text pointer C1/66E1: 80 F0 BRA $66D3 C1/66E3: 20 02 67 JSR $6702 ; write special string (menu text) C1/66E6: 20 EC 66 JSR $66EC ; increment text pointer C1/66E9: 80 E8 BRA $66D3 C1/66EB: 60 RTS ; [ Increment Text Pointer ] mess_pointer_inc: C1/66EC: E6 48 INC $48 C1/66EE: D0 02 BNE $66F2 C1/66F0: E6 49 INC $49 C1/66F2: 60 RTS ; [ Write Letter (menu text) ] ; A = letter ; +$4A = ; +$4C = ; $4E = one_mess_direct: one_mess_set: one_mess_direct_gage: C1/66F3: 91 4C STA ($4C),Y C1/66F5: A9 FF LDA #$FF C1/66F7: 91 4A STA ($4A),Y C1/66F9: C8 INY C1/66FA: A5 4E LDA $4E C1/66FC: 91 4C STA ($4C),Y C1/66FE: 91 4A STA ($4A),Y C1/6700: C8 INY C1/6701: 60 RTS ; [ Write Special String (menu text) ] print_code_chg: C1/6702: 0A ASL C1/6703: AA TAX C1/6704: 7C 07 67 JMP ($6707,X) ; menu text special string jump table C1/6707: .DW $6747, $6748, $675F, $6794, $679C, $67A4, $6747, $67B5 C1/6717: .DW $67B8, $67BC, $67C0, $6993, $69DA, $69DE, $6A82, $6AC2 C1/6727: .DW $6A0B, $6AAF, $6A38, $6747, $6747, $6747, $6747, $6747 C1/6737: .DW $6747, $6747, $6747, $6747, $6747, $6747, $6747, $6747 ; [ Unused Menu Text Special String ] C1/6747: 60 RTS ; [ Menu Text Special String $01: Next Line ] mess_ret: C1/6748: AD DB 88 LDA $88DB C1/674B: C2 20 REP #$20 C1/674D: 48 PHA C1/674E: 0A ASL C1/674F: 18 CLC C1/6750: 65 4A ADC $4A C1/6752: 85 4A STA $4A C1/6754: 68 PLA C1/6755: 18 CLC C1/6756: 65 4A ADC $4A C1/6758: 85 4C STA $4C C1/675A: 7B TDC C1/675B: A8 TAY C1/675C: E2 20 SEP #$20 C1/675E: 60 RTS ; [ Menu Text Special String $02: Character Name ] C1/675F: 20 EC 66 JSR $66EC ; increment text pointer C1/6762: 64 10 STZ $10 C1/6764: B2 48 LDA ($48) C1/6766: 38 SEC C1/6767: E9 0A SBC #$0A C1/6769: 90 05 BCC $6770 C1/676B: E6 10 INC $10 C1/676D: 4C 66 67 JMP $6766 C1/6770: 18 CLC C1/6771: 69 0A ADC #$0A C1/6773: 85 11 STA $11 C1/6775: A5 10 LDA $10 C1/6777: D0 02 BNE $677B C1/6779: A9 4B LDA #$4B C1/677B: 18 CLC C1/677C: 69 B4 ADC #$B4 C1/677E: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6781: A5 11 LDA $11 C1/6783: 05 10 ORA $10 C1/6785: D0 05 BNE $678C C1/6787: A9 FF LDA #$FF C1/6789: 4C F3 66 JMP $66F3 ; write letter (menu text) C1/678C: A5 11 LDA $11 C1/678E: 18 CLC C1/678F: 69 B4 ADC #$B4 C1/6791: 4C F3 66 JMP $66F3 ; write letter (menu text) ; [ Menu Text Special String $03: Normal Letter ] C1/6794: 20 EC 66 JSR $66EC ; increment text pointer C1/6797: B2 48 LDA ($48) C1/6799: 4C F3 66 JMP $66F3 ; write letter (menu text) ; [ Menu Text Special String $04: Set Tile Data ] C1/679C: 20 EC 66 JSR $66EC ; increment text pointer C1/679F: B2 48 LDA ($48) C1/67A1: 85 4E STA $4E C1/67A3: 60 RTS ; [ Menu Text Special String $05: Spaces ] ; b1 = number of spaces C1/67A4: 20 EC 66 JSR $66EC ; increment text pointer C1/67A7: B2 48 LDA ($48) C1/67A9: 85 10 STA $10 C1/67AB: A9 FF LDA #$FF C1/67AD: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/67B0: C6 10 DEC $10 C1/67B2: D0 F7 BNE $67AB C1/67B4: 60 RTS ; [ Menu Text Special String $07: Character 1 Info Text ] C1/67B5: 7B TDC C1/67B6: 80 0A BRA $67C2 ; [ Menu Text Special String $08: Character 2 Info Text ] C1/67B8: A9 01 LDA #$01 C1/67BA: 80 06 BRA $67C2 ; [ Menu Text Special String $09: Character 3 Info Text ] C1/67BC: A9 02 LDA #$02 C1/67BE: 80 02 BRA $67C2 ; [ Menu Text Special String $0A: Character 4 Info Text ] C1/67C0: A9 03 LDA #$03 ; fall through C1/67C2: AA TAX C1/67C3: BD D6 64 LDA $64D6,X C1/67C6: C9 FF CMP #$FF C1/67C8: F0 05 BEQ $67CF ; branch if character slot is empty C1/67CA: 0A ASL C1/67CB: AA TAX C1/67CC: 7C E3 67 JMP ($67E3,X) C1/67CF: 20 EC 66 JSR $66EC ; increment text pointer C1/67D2: B2 48 LDA ($48) ; info type C1/67D4: AA TAX C1/67D5: BF DC 67 C1 LDA $C167DC,X ; text length C1/67D9: 4C 25 68 JMP $6825 ; clear text ; character info text length (for clearing) C1/67DC: .DB $06, $04, $06, $03, $03, $06, $06 ; character info text jump table (for each character) C1/67E3: .DW $67EB, $67F2, $67F9, $6800 ; character 1 C1/67EB: A2 AE 2E LDX #$2EAE C1/67EE: A9 00 LDA #$00 C1/67F0: 80 13 BRA $6805 ; character 2 C1/67F2: A2 CE 2E LDX #$2ECE C1/67F5: A9 01 LDA #$01 C1/67F7: 80 0C BRA $6805 ; character 3 C1/67F9: A2 EE 2E LDX #$2EEE C1/67FC: A9 02 LDA #$02 C1/67FE: 80 05 BRA $6805 ; character 4 C1/6800: A2 0E 2F LDX #$2F0E C1/6803: A9 03 LDA #$03 ; fall through C1/6805: 85 18 STA $18 C1/6807: 86 10 STX $10 ; ++$10 = pointer to character graphics data C1/6809: A9 7E LDA #$7E C1/680B: 85 12 STA $12 C1/680D: 20 EC 66 JSR $66EC ; increment text pointer C1/6810: B2 48 LDA ($48) ; info type C1/6812: 0A ASL C1/6813: AA TAX C1/6814: 7C 17 68 JMP ($6817,X) ; character info text jump table (for each info type) C1/6817: .DW $682F, $6841, $6872, $68A7, $692C, $684E, $6846 ; clear text C1/6825: AA TAX C1/6826: A9 FF LDA #$FF C1/6828: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/682B: CA DEX C1/682C: D0 F8 BNE $6826 C1/682E: 60 RTS ; character info text $00: name C1/682F: A6 10 LDX $10 C1/6831: A9 06 LDA #$06 ; 6 letters C1/6833: 85 14 STA $14 C1/6835: BD 01 00 LDA $0001,X ; character name C1/6838: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/683B: E8 INX C1/683C: C6 14 DEC $14 C1/683E: D0 F5 BNE $6835 C1/6840: 60 RTS ; character info text $01: current hp C1/6841: A9 07 LDA #$07 ; $2EB5 (current hp) C1/6843: 4C 75 69 JMP $6975 ; write 4 digit number text ; character info text $06: condemned gauge C1/6846: A5 18 LDA $18 C1/6848: AA TAX C1/6849: BD A6 61 LDA $61A6,X ; condemned number C1/684C: 80 06 BRA $6854 ; write gauge text ; character info text $05: morph gauge C1/684E: A5 18 LDA $18 C1/6850: AA TAX C1/6851: BD A2 61 LDA $61A2,X ; morph gauge value ; fall through ; [ Write Gauge Text ] player_counter_main: C1/6854: 4A LSR C1/6855: 29 FC AND #$FC ; get pointer to appropriate gauge text C1/6857: AA TAX C1/6858: A9 F9 LDA #$F9 ; left end of gauge C1/685A: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/685D: A9 04 LDA #$04 ; 4 bytes of text C1/685F: 85 1A STA $1A C1/6861: BF AC 68 C1 LDA $C168AC,X ; gauge text C1/6865: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6868: E8 INX C1/6869: C6 1A DEC $1A C1/686B: D0 F4 BNE $6861 C1/686D: A9 FA LDA #$FA ; right end of gauge C1/686F: 4C F3 66 JMP $66F3 ; write letter (menu text) ; character info text $02: ATB gauge or max hp C1/6872: AD 21 20 LDA $2021 ; ATB gauge setting C1/6875: 29 01 AND #$01 C1/6877: F0 1F BEQ $6898 ; branch if off C1/6879: A5 4E LDA $4E C1/687B: 48 PHA C1/687C: A5 18 LDA $18 C1/687E: AA TAX C1/687F: BD 9E 61 LDA $619E,X ; ATB gauge C1/6882: C9 FF CMP #$FF C1/6884: D0 04 BNE $688A ; branch if not full C1/6886: A9 29 LDA #$29 ; palette 2 C1/6888: 80 02 BRA $688C C1/688A: A9 35 LDA #$35 ; palette 7 C1/688C: 85 4E STA $4E C1/688E: BD 9E 61 LDA $619E,X ; ATB gauge C1/6891: 20 54 68 JSR $6854 ; write gauge text C1/6894: 68 PLA C1/6895: 85 4E STA $4E C1/6897: 60 RTS C1/6898: A9 CE LDA #$CE ; '~' C1/689A: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/689D: A9 09 LDA #$09 ; $2EB7 (max hp) C1/689F: 20 75 69 JSR $6975 ; write 4 digit number text C1/68A2: A9 FF LDA #$FF C1/68A4: 4C F3 66 JMP $66F3 ; write letter (menu text) ; character info text $03: current mp C1/68A7: A9 0B LDA #$0B ; $2EB9 (current mp) C1/68A9: 4C 84 69 JMP $6984 ; write 3 digit number text ; ATB/morph gauge text C1/68AC: .DB $F1, $F0, $F0, $F0 .DB $F2, $F0, $F0, $F0 .DB $F3, $F0, $F0, $F0 .DB $F4, $F0, $F0, $F0 C1/68BC: .DB $F5, $F0, $F0, $F0 .DB $F6, $F0, $F0, $F0 .DB $F7, $F0, $F0, $F0 .DB $F8, $F0, $F0, $F0 C1/68CC: .DB $F8, $F1, $F0, $F0 .DB $F8, $F2, $F0, $F0 .DB $F8, $F3, $F0, $F0 .DB $F8, $F4, $F0, $F0 C1/68DC: .DB $F8, $F5, $F0, $F0 .DB $F8, $F6, $F0, $F0 .DB $F8, $F7, $F0, $F0 .DB $F8, $F8, $F0, $F0 C1/68EC: .DB $F8, $F8, $F1, $F0 .DB $F8, $F8, $F2, $F0 .DB $F8, $F8, $F3, $F0 .DB $F8, $F8, $F4, $F0 C1/68FC: .DB $F8, $F8, $F5, $F0 .DB $F8, $F8, $F6, $F0 .DB $F8, $F8, $F7, $F0 .DB $F8, $F8, $F8, $F0 C1/690C: .DB $F8, $F8, $F8, $F1 .DB $F8, $F8, $F8, $F2 .DB $F8, $F8, $F8, $F3 .DB $F8, $F8, $F8, $F4 C1/691C: .DB $F8, $F8, $F8, $F5 .DB $F8, $F8, $F8, $F6 .DB $F8, $F8, $F8, $F7 .DB $F8, $F8, $F8, $F8 ; character info text $04: max mp C1/692C: A9 0D LDA #$0D ; $2EBB (max mp) C1/692E: 4C 84 69 JMP $6984 ; write 3 digit number text ; [ Convert 4 Digit Number to Text ] num_chg: C1/6931: 5A PHY C1/6932: A8 TAY C1/6933: C2 20 REP #$20 C1/6935: B7 10 LDA [$10],Y C1/6937: AA TAX C1/6938: 7B TDC C1/6939: E2 20 SEP #$20 C1/693B: A9 B4 LDA #$B4 ; '0' C1/693D: 85 68 STA $68 C1/693F: 20 2B 1B JSR $1B2B ; convert hex to decimal C1/6942: 20 8F 1A JSR $1A8F ; clear leading zeroes C1/6945: A6 00 LDX $00 C1/6947: 7A PLY C1/6948: 60 RTS ; [ Convert 3 Digit Number to Text ] num_chg_a: C1/6949: 5A PHY C1/694A: A8 TAY C1/694B: C2 20 REP #$20 C1/694D: B7 10 LDA [$10],Y C1/694F: AA TAX C1/6950: 7B TDC C1/6951: E2 20 SEP #$20 C1/6953: A9 B4 LDA #$B4 ; '0' C1/6955: 85 68 STA $68 C1/6957: 20 2B 1B JSR $1B2B ; convert hex to decimal C1/695A: 20 61 69 JSR $6961 ; clear leading zeroes (3 digit number) C1/695D: A6 00 LDX $00 C1/695F: 7A PLY C1/6960: 60 RTS ; [ Clear Leading Zeroes (3 digit number) ] z_cut2: C1/6961: A6 00 LDX $00 C1/6963: B5 69 LDA $69,X ; digit text C1/6965: 38 SEC C1/6966: E5 68 SBC $68 C1/6968: D0 0A BNE $6974 ; return if digit is not zero C1/696A: A9 C8 LDA #$C8 ; ' ' (for bg1 text) C1/696C: 95 69 STA $69,X C1/696E: E8 INX ; next digit C1/696F: E0 03 00 CPX #$0003 C1/6972: D0 EF BNE $6963 C1/6974: 60 RTS ; [ Write 4 Digit Number Text ] num_chg4: C1/6975: 20 31 69 JSR $6931 C1/6978: B5 69 LDA $69,X C1/697A: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/697D: E8 INX C1/697E: E0 04 00 CPX #$0004 C1/6981: D0 F5 BNE $6978 C1/6983: 60 RTS ; [ Write 3 Digit Number Text ] num_chg3: C1/6984: 20 49 69 JSR $6949 C1/6987: B5 6A LDA $6A,X C1/6989: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/698C: E8 INX C1/698D: E0 03 00 CPX #$0003 C1/6990: D0 F5 BNE $6987 C1/6992: 60 RTS ; [ Menu Text Special String $0B: Monster Name ] C1/6993: 20 EC 66 JSR $66EC ; increment text pointer C1/6996: A9 0A LDA #$0A ; 10 letters C1/6998: 85 10 STA $10 C1/699A: B2 48 LDA ($48) C1/699C: 0A ASL C1/699D: AA TAX C1/699E: C2 20 REP #$20 C1/69A0: BD 0D 20 LDA $200D,X ; monster name (bank C2 manages this data) C1/69A3: C9 FF FF CMP #$FFFF C1/69A6: D0 10 BNE $69B8 C1/69A8: 7B TDC C1/69A9: E2 20 SEP #$20 C1/69AB: E6 10 INC $10 C1/69AD: A9 FF LDA #$FF C1/69AF: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/69B2: E8 INX C1/69B3: C6 10 DEC $10 C1/69B5: D0 F6 BNE $69AD C1/69B7: 60 RTS C1/69B8: C2 20 REP #$20 C1/69BA: 85 24 STA $24 C1/69BC: A9 0A 00 LDA #$000A ; 10 letters C1/69BF: 85 22 STA $22 C1/69C1: 20 F4 18 JSR $18F4 C1/69C4: 7B TDC C1/69C5: E2 20 SEP #$20 C1/69C7: A6 26 LDX $26 C1/69C9: BF 50 C0 CF LDA $CFC050,X ; monster name C1/69CD: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/69D0: E8 INX ; next letter C1/69D1: C6 10 DEC $10 C1/69D3: D0 F4 BNE $69C9 C1/69D5: A9 FF LDA #$FF ; space C1/69D7: 4C F3 66 JMP $66F3 ; write letter (menu text) ; [ Menu Text Special String $0C: Unused ] C1/69DA: 20 EC 66 JSR $66EC ; increment text pointer C1/69DD: 60 RTS ; [ Menu Text Special String $0D: Battle Command Name ] C1/69DE: 20 EC 66 JSR $66EC ; increment text pointer C1/69E1: B2 48 LDA ($48) C1/69E3: C9 FF CMP #$FF C1/69E5: D0 05 BNE $69EC ; branch if command slot is empty C1/69E7: A9 07 LDA #$07 C1/69E9: 4C 3B 6B JMP $6B3B C1/69EC: EB XBA C1/69ED: A9 07 LDA #$07 C1/69EF: 85 10 STA $10 C1/69F1: 20 CA 18 JSR $18CA ; +$4216 = A * B C1/69F4: C2 20 REP #$20 C1/69F6: AF 16 42 00 LDA $004216 C1/69FA: AA TAX C1/69FB: 7B TDC C1/69FC: E2 20 SEP #$20 C1/69FE: BF A0 CE D8 LDA $D8CEA0,X ; battle command name C1/6A02: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6A05: E8 INX C1/6A06: C6 10 DEC $10 C1/6A08: D0 F4 BNE $69FE C1/6A0A: 60 RTS ; [ Menu Text Special String $10: Status Name ] C1/6A0B: 20 EC 66 JSR $66EC ; increment text pointer C1/6A0E: B2 48 LDA ($48) C1/6A10: C9 FF CMP #$FF C1/6A12: D0 05 BNE $6A19 C1/6A14: A9 0A LDA #$0A C1/6A16: 4C 3B 6B JMP $6B3B C1/6A19: EB XBA C1/6A1A: A9 0A LDA #$0A C1/6A1C: 85 10 STA $10 C1/6A1E: 20 CA 18 JSR $18CA C1/6A21: C2 20 REP #$20 C1/6A23: AF 16 42 00 LDA $004216 C1/6A27: AA TAX C1/6A28: 7B TDC C1/6A29: E2 20 SEP #$20 C1/6A2B: BF E1 AD C2 LDA $C2ADE1,X ; status name C1/6A2F: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6A32: E8 INX C1/6A33: C6 10 DEC $10 C1/6A35: D0 F4 BNE $6A2B C1/6A37: 60 RTS ; [ Menu Text Special String $12: Item Symbol Name ] C1/6A38: 20 EC 66 JSR $66EC ; increment text pointer C1/6A3B: B2 48 LDA ($48) C1/6A3D: C9 FF CMP #$FF C1/6A3F: D0 05 BNE $6A46 C1/6A41: A9 07 LDA #$07 C1/6A43: 4C 3B 6B JMP $6B3B C1/6A46: EB XBA C1/6A47: A9 0D LDA #$0D ; get pointer to item name C1/6A49: 85 10 STA $10 C1/6A4B: 20 CA 18 JSR $18CA C1/6A4E: C2 20 REP #$20 C1/6A50: AF 16 42 00 LDA $004216 C1/6A54: AA TAX C1/6A55: 7B TDC C1/6A56: E2 20 SEP #$20 C1/6A58: BF 00 B3 D2 LDA $D2B300,X ; item name (first character) C1/6A5C: C9 FF CMP #$FF C1/6A5E: F0 E1 BEQ $6A41 ; branch if no symbol C1/6A60: 38 SEC C1/6A61: E9 D8 SBC #$D8 C1/6A63: EB XBA C1/6A64: A9 07 LDA #$07 C1/6A66: 85 10 STA $10 C1/6A68: 20 CA 18 JSR $18CA C1/6A6B: C2 20 REP #$20 C1/6A6D: AF 16 42 00 LDA $004216 C1/6A71: AA TAX C1/6A72: 7B TDC C1/6A73: E2 20 SEP #$20 C1/6A75: BF 00 6F D2 LDA $D26F00,X ; item symbol name C1/6A79: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6A7C: E8 INX C1/6A7D: C6 10 DEC $10 C1/6A7F: D0 F4 BNE $6A75 C1/6A81: 60 RTS ; [ Menu Text Special String $0E: Item Name ] C1/6A82: 20 EC 66 JSR $66EC ; increment text pointer C1/6A85: B2 48 LDA ($48) C1/6A87: C9 FF CMP #$FF C1/6A89: D0 05 BNE $6A90 C1/6A8B: A9 0D LDA #$0D C1/6A8D: 4C 3B 6B JMP $6B3B C1/6A90: EB XBA C1/6A91: A9 0D LDA #$0D C1/6A93: 85 10 STA $10 C1/6A95: 20 CA 18 JSR $18CA C1/6A98: C2 20 REP #$20 C1/6A9A: AF 16 42 00 LDA $004216 C1/6A9E: AA TAX C1/6A9F: 7B TDC C1/6AA0: E2 20 SEP #$20 C1/6AA2: BF 00 B3 D2 LDA $D2B300,X C1/6AA6: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6AA9: E8 INX C1/6AAA: C6 10 DEC $10 C1/6AAC: D0 F4 BNE $6AA2 C1/6AAE: 60 RTS ; [ Menu Text Special String $11: ] C1/6AAF: 20 C2 6A JSR $6AC2 C1/6AB2: B2 48 LDA ($48) C1/6AB4: C9 FF CMP #$FF C1/6AB6: F0 05 BEQ $6ABD C1/6AB8: C9 36 CMP #$36 C1/6ABA: 90 01 BCC $6ABD C1/6ABC: 60 RTS C1/6ABD: A9 03 LDA #$03 C1/6ABF: 4C 3B 6B JMP $6B3B ; [ Menu Text Special String $0F: Attack Name ] C1/6AC2: 20 EC 66 JSR $66EC ; increment text pointer C1/6AC5: B2 48 LDA ($48) C1/6AC7: C9 FF CMP #$FF C1/6AC9: D0 05 BNE $6AD0 C1/6ACB: A9 07 LDA #$07 C1/6ACD: 4C 3B 6B JMP $6B3B C1/6AD0: C9 36 CMP #$36 C1/6AD2: 90 48 BCC $6B1C ; branch if a spell C1/6AD4: C9 51 CMP #$51 C1/6AD6: 90 22 BCC $6AFA ; branch if an esper attack ; normal attack C1/6AD8: 38 SEC C1/6AD9: E9 51 SBC #$51 C1/6ADB: EB XBA C1/6ADC: A9 0A LDA #$0A C1/6ADE: 85 10 STA $10 C1/6AE0: 20 CA 18 JSR $18CA C1/6AE3: C2 20 REP #$20 C1/6AE5: AF 16 42 00 LDA $004216 C1/6AE9: AA TAX C1/6AEA: 7B TDC C1/6AEB: E2 20 SEP #$20 C1/6AED: BF B9 F7 E6 LDA $E6F7B9,X ; attack name C1/6AF1: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6AF4: E8 INX C1/6AF5: C6 10 DEC $10 C1/6AF7: D0 F4 BNE $6AED C1/6AF9: 60 RTS ; esper attack C1/6AFA: 38 SEC C1/6AFB: E9 36 SBC #$36 C1/6AFD: EB XBA C1/6AFE: A9 08 LDA #$08 C1/6B00: 85 10 STA $10 C1/6B02: 20 CA 18 JSR $18CA C1/6B05: C2 20 REP #$20 C1/6B07: AF 16 42 00 LDA $004216 C1/6B0B: AA TAX C1/6B0C: 7B TDC C1/6B0D: E2 20 SEP #$20 C1/6B0F: BF 75 F6 E6 LDA $E6F675,X ; esper attack name (bad pointer, carryover from ff6j?) C1/6B13: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6B16: E8 INX C1/6B17: C6 10 DEC $10 C1/6B19: D0 F4 BNE $6B0F C1/6B1B: 60 RTS ; spell C1/6B1C: EB XBA C1/6B1D: A9 07 LDA #$07 C1/6B1F: 85 10 STA $10 C1/6B21: 20 CA 18 JSR $18CA C1/6B24: C2 20 REP #$20 C1/6B26: AF 16 42 00 LDA $004216 C1/6B2A: AA TAX C1/6B2B: 7B TDC C1/6B2C: E2 20 SEP #$20 C1/6B2E: BF 67 F5 E6 LDA $E6F567,X ; spell name C1/6B32: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6B35: E8 INX C1/6B36: C6 10 DEC $10 C1/6B38: D0 F4 BNE $6B2E C1/6B3A: 60 RTS C1/6B3B: 85 1A STA $1A C1/6B3D: A9 FF LDA #$FF C1/6B3F: 20 F3 66 JSR $66F3 ; write letter (menu text) C1/6B42: C6 1A DEC $1A C1/6B44: D0 F7 BNE $6B3D C1/6B46: 60 RTS ; --------------------------------------[ Battle Graphics: Math ]--------------------------------------- ; [ Init ??? ] sin_init: C1/6B47: A4 00 LDY $00 C1/6B49: 7B TDC C1/6B4A: 99 6D 5F STA $5F6D,Y C1/6B4D: 99 8D 5F STA $5F8D,Y C1/6B50: 99 9D 5F STA $5F9D,Y C1/6B53: A9 40 LDA #$40 C1/6B55: 99 7D 5F STA $5F7D,Y C1/6B58: C8 INY C1/6B59: C0 10 00 CPY #$0010 C1/6B5C: D0 EB BNE $6B49 C1/6B5E: 60 RTS sin_p_add: C1/6B5F: 48 PHA C1/6B60: 18 CLC C1/6B61: 79 6D 5F ADC $5F6D,Y C1/6B64: 99 6D 5F STA $5F6D,Y C1/6B67: 68 PLA C1/6B68: 18 CLC C1/6B69: 79 7D 5F ADC $5F7D,Y C1/6B6C: 99 7D 5F STA $5F7D,Y C1/6B6F: 60 RTS r_add: C1/6B70: 48 PHA C1/6B71: 18 CLC C1/6B72: 79 8D 5F ADC $5F8D,Y C1/6B75: 99 8D 5F STA $5F8D,Y C1/6B78: 68 PLA C1/6B79: 18 CLC C1/6B7A: 79 9D 5F ADC $5F9D,Y C1/6B7D: 99 9D 5F STA $5F9D,Y C1/6B80: 60 RTS sin_data_get: C1/6B81: B9 8D 5F LDA $5F8D,Y C1/6B84: 0A ASL C1/6B85: 85 24 STA $24 C1/6B87: B9 6D 5F LDA $5F6D,Y C1/6B8A: 4C 99 6B JMP $6B99 cos_get: C1/6B8D: B9 9D 5F LDA $5F9D,Y C1/6B90: 0A ASL C1/6B91: 85 24 STA $24 C1/6B93: B9 7D 5F LDA $5F7D,Y C1/6B96: 4C 99 6B JMP $6B99 ; [ A = $24 * sin (A) ] sin_get: C1/6B99: AA TAX C1/6B9A: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table C1/6B9E: 10 1A BPL $6BBA C1/6BA0: 49 FF EOR #$FF C1/6BA2: 8F 02 42 00 STA $004202 C1/6BA6: A5 24 LDA $24 C1/6BA8: 8F 03 42 00 STA $004203 C1/6BAC: A9 FF LDA #$FF C1/6BAE: 85 67 STA $67 C1/6BB0: 85 67 STA $67 C1/6BB2: AF 17 42 00 LDA $004217 C1/6BB6: 49 FF EOR #$FF C1/6BB8: 1A INC C1/6BB9: 60 RTS C1/6BBA: 8F 02 42 00 STA $004202 C1/6BBE: A5 24 LDA $24 C1/6BC0: 8F 03 42 00 STA $004203 C1/6BC4: A9 00 LDA #$00 C1/6BC6: 85 67 STA $67 C1/6BC8: 85 67 STA $67 C1/6BCA: AF 17 42 00 LDA $004217 C1/6BCE: 60 RTS ; [ +++$26 = +$22 * $24 * 2 ] sin_mul: C1/6BCF: E2 30 SEP #$30 C1/6BD1: 8B PHB C1/6BD2: A9 00 LDA #$00 C1/6BD4: 48 PHA C1/6BD5: AB PLB C1/6BD6: A6 24 LDX $24 C1/6BD8: 8E 02 42 STX $4202 C1/6BDB: A5 22 LDA $22 C1/6BDD: 8D 03 42 STA $4203 C1/6BE0: C2 20 REP #$20 C1/6BE2: A4 23 LDY $23 C1/6BE4: EA NOP C1/6BE5: AD 16 42 LDA $4216 ; +$26 = $22 * $24 C1/6BE8: 8E 02 42 STX $4202 C1/6BEB: 8C 03 42 STY $4203 C1/6BEE: 85 26 STA $26 C1/6BF0: 64 28 STZ $28 C1/6BF2: C2 10 REP #$10 C1/6BF4: AD 16 42 LDA $4216 ; +A = $24 * $23 C1/6BF7: 18 CLC C1/6BF8: 65 27 ADC $27 C1/6BFA: 85 27 STA $27 C1/6BFC: 06 26 ASL $26 C1/6BFE: 26 28 ROL $28 C1/6C00: AB PLB C1/6C01: 60 RTS ; [ ] sin_data_get_w2: C1/6C02: C2 10 REP #$10 C1/6C04: A5 16 LDA $16 C1/6C06: 29 FF 01 AND #$01FF C1/6C09: AA TAX C1/6C0A: BF 6D FC C2 LDA $C2FC6D,X ; sin/cos table (16-bit) C1/6C0E: 10 2F BPL $6C3F C1/6C10: E2 10 SEP #$10 C1/6C12: 49 FF FF EOR #$FFFF C1/6C15: A6 24 LDX $24 C1/6C17: 8E 02 42 STX $4202 C1/6C1A: AA TAX C1/6C1B: 8E 03 42 STX $4203 C1/6C1E: 85 22 STA $22 C1/6C20: EB XBA C1/6C21: AA TAX C1/6C22: AD 16 42 LDA $4216 C1/6C25: 8E 03 42 STX $4203 C1/6C28: 85 26 STA $26 C1/6C2A: 64 28 STZ $28 C1/6C2C: 18 CLC C1/6C2D: AD 16 42 LDA $4216 C1/6C30: 65 27 ADC $27 C1/6C32: 85 27 STA $27 C1/6C34: 06 26 ASL $26 C1/6C36: 26 28 ROL $28 C1/6C38: A5 28 LDA $28 C1/6C3A: 49 FF FF EOR #$FFFF C1/6C3D: 1A INC C1/6C3E: 60 RTS C1/6C3F: E2 10 SEP #$10 C1/6C41: A6 24 LDX $24 C1/6C43: 8E 02 42 STX $4202 C1/6C46: AA TAX C1/6C47: 8E 03 42 STX $4203 C1/6C4A: 85 22 STA $22 C1/6C4C: EB XBA C1/6C4D: AA TAX C1/6C4E: AD 16 42 LDA $4216 C1/6C51: 8E 03 42 STX $4203 C1/6C54: 85 26 STA $26 C1/6C56: 64 28 STZ $28 C1/6C58: 18 CLC C1/6C59: AD 16 42 LDA $4216 C1/6C5C: 65 27 ADC $27 C1/6C5E: 85 27 STA $27 C1/6C60: 06 26 ASL $26 C1/6C62: 26 28 ROL $28 C1/6C64: A5 28 LDA $28 C1/6C66: 60 RTS ; [ +$28 = +$24 * sin (A) ] sin_data_get_w: C1/6C67: C2 20 REP #$20 C1/6C69: 29 FF 00 AND #$00FF C1/6C6C: 0A ASL C1/6C6D: AA TAX C1/6C6E: BF 6D FC C2 LDA $C2FC6D,X ; sin/cos table (16-bit) C1/6C72: 10 14 BPL $6C88 C1/6C74: 49 FF FF EOR #$FFFF C1/6C77: 85 22 STA $22 C1/6C79: 20 CF 6B JSR $6BCF C1/6C7C: A5 28 LDA $28 C1/6C7E: 49 FF FF EOR #$FFFF C1/6C81: 1A INC C1/6C82: 85 28 STA $28 C1/6C84: 7B TDC C1/6C85: E2 20 SEP #$20 C1/6C87: 60 RTS C1/6C88: 85 22 STA $22 C1/6C8A: 20 CF 6B JSR $6BCF C1/6C8D: 7B TDC C1/6C8E: E2 20 SEP #$20 C1/6C90: 60 RTS ; [ Calculate Hypotenuse & Angle ] ; $7D = x_1 ; $7E = y_1 ; $7F = x_2 ; $80 = y_2 ; $85 = angle (out) ; +$86 = hypotenuse length (out) ; +$88 = dx (out) ; +$8A = dy (out) vect_get: C1/6C91: A5 7D LDA $7D C1/6C93: 38 SEC C1/6C94: E5 7F SBC $7F C1/6C96: 85 81 STA $81 C1/6C98: A9 00 LDA #$00 C1/6C9A: E9 00 SBC #$00 C1/6C9C: 85 82 STA $82 C1/6C9E: A5 7E LDA $7E C1/6CA0: 38 SEC C1/6CA1: E5 80 SBC $80 C1/6CA3: 85 83 STA $83 C1/6CA5: A9 00 LDA #$00 C1/6CA7: E9 00 SBC #$00 C1/6CA9: 85 84 STA $84 C1/6CAB: A5 81 LDA $81 C1/6CAD: 45 82 EOR $82 C1/6CAF: 38 SEC C1/6CB0: E5 82 SBC $82 C1/6CB2: 85 88 STA $88 C1/6CB4: 64 89 STZ $89 C1/6CB6: A5 83 LDA $83 C1/6CB8: 45 84 EOR $84 C1/6CBA: 38 SEC C1/6CBB: E5 84 SBC $84 C1/6CBD: 85 8A STA $8A C1/6CBF: 64 8B STZ $8B C1/6CC1: C2 20 REP #$20 C1/6CC3: A5 88 LDA $88 C1/6CC5: 4A LSR C1/6CC6: 4A LSR C1/6CC7: 4A LSR C1/6CC8: 85 86 STA $86 C1/6CCA: A5 8A LDA $8A C1/6CCC: 29 F8 FF AND #$FFF8 C1/6CCF: 0A ASL C1/6CD0: 0A ASL C1/6CD1: 18 CLC C1/6CD2: 65 86 ADC $86 C1/6CD4: 85 8C STA $8C C1/6CD6: 0A ASL C1/6CD7: AA TAX C1/6CD8: BD 00 F8 LDA $F800,X C1/6CDB: 85 86 STA $86 C1/6CDD: 7B TDC C1/6CDE: E2 20 SEP #$20 C1/6CE0: A6 8C LDX $8C C1/6CE2: BF 45 C9 C2 LDA $C2C945,X C1/6CE6: 85 85 STA $85 C1/6CE8: A5 82 LDA $82 C1/6CEA: 30 14 BMI $6D00 C1/6CEC: A5 84 LDA $84 C1/6CEE: 30 08 BMI $6CF8 C1/6CF0: A9 80 LDA #$80 C1/6CF2: 18 CLC C1/6CF3: 65 85 ADC $85 C1/6CF5: 85 85 STA $85 C1/6CF7: 60 RTS C1/6CF8: A9 80 LDA #$80 C1/6CFA: 38 SEC C1/6CFB: E5 85 SBC $85 C1/6CFD: 85 85 STA $85 C1/6CFF: 60 RTS C1/6D00: A5 84 LDA $84 C1/6D02: 30 07 BMI $6D0B C1/6D04: A9 00 LDA #$00 C1/6D06: 38 SEC C1/6D07: E5 85 SBC $85 C1/6D09: 85 85 STA $85 C1/6D0B: 60 RTS ; [ Init ??? ] length_init: C1/6D0C: A2 45 CD LDX #$CD45 ; source = $C2CD45 C1/6D0F: 86 F3 STX $F3 C1/6D11: A9 C2 LDA #$C2 C1/6D13: 85 F5 STA $F5 C1/6D15: A2 00 A4 LDX #$A400 ; destination = $7FA400 C1/6D18: 86 F6 STX $F6 C1/6D1A: A9 7F LDA #$7F C1/6D1C: 85 F8 STA $F8 C1/6D1E: 22 6D FF C2 JSL $C2FF6D ; decompress C1/6D22: A2 00 F8 LDX #$F800 C1/6D25: 86 10 STX $10 C1/6D27: C2 20 REP #$20 C1/6D29: 7B TDC C1/6D2A: AA TAX C1/6D2B: 7B TDC C1/6D2C: 85 12 STA $12 C1/6D2E: A8 TAY C1/6D2F: BF 00 A4 7F LDA $7FA400,X C1/6D33: 29 FF 00 AND #$00FF C1/6D36: 18 CLC C1/6D37: 65 12 ADC $12 C1/6D39: 85 12 STA $12 C1/6D3B: 91 10 STA ($10),Y C1/6D3D: C8 INY C1/6D3E: C8 INY C1/6D3F: E8 INX C1/6D40: C0 40 00 CPY #$0040 C1/6D43: D0 EA BNE $6D2F C1/6D45: A5 10 LDA $10 C1/6D47: 18 CLC C1/6D48: 69 40 00 ADC #$0040 C1/6D4B: 85 10 STA $10 C1/6D4D: E0 00 04 CPX #$0400 C1/6D50: D0 D9 BNE $6D2B C1/6D52: 7B TDC C1/6D53: E2 20 SEP #$20 C1/6D55: 60 RTS ; -----------------------------------[ Battle Graphics: User Input ]------------------------------------ ; [ Get Pointer to Current Character Slot Data (battle menu) ] get_buf_input_poi: C1/6D56: AD 80 7B LDA $7B80 C1/6D59: 29 03 AND #$03 C1/6D5B: 0A ASL C1/6D5C: 0A ASL C1/6D5D: 0A ASL C1/6D5E: A8 TAY C1/6D5F: 60 RTS C1/6D60: .DB $01, $00, $FF, $FF, $FF, $00, $01, $FF, $01, $00, $01, $FF, $FF, $00, $01, $00 check_group_name: C1/6D70: 29 03 AND #$03 C1/6D72: 48 PHA C1/6D73: AA TAX C1/6D74: 29 01 AND #$01 C1/6D76: F0 0E BEQ $6D86 C1/6D78: AD 1D 20 LDA $201D C1/6D7B: 2D AC 61 AND $61AC C1/6D7E: 2D AD 61 AND $61AD C1/6D81: 2D 93 61 AND $6193 C1/6D84: 80 02 BRA $6D88 C1/6D86: A5 92 LDA $92 C1/6D88: F0 03 BEQ $6D8D C1/6D8A: 68 PLA C1/6D8B: 38 SEC C1/6D8C: 60 RTS C1/6D8D: 68 PLA C1/6D8E: 18 CLC C1/6D8F: 60 RTS ; [ Battle Menu Cursor State $38: Target Select ] key_target_main: C1/6D90: AD CB 7B LDA $7BCB C1/6D93: F0 03 BEQ $6D98 C1/6D95: 4C 57 6F JMP $6F57 C1/6D98: AD 84 7A LDA $7A84 C1/6D9B: 29 10 AND #$10 C1/6D9D: F0 03 BEQ $6DA2 C1/6D9F: 4C 25 6F JMP $6F25 C1/6DA2: AD 1D 20 LDA $201D C1/6DA5: 2D AC 61 AND $61AC C1/6DA8: 2D AD 61 AND $61AD C1/6DAB: 2D 93 61 AND $6193 C1/6DAE: 2D 7D 7B AND $7B7D C1/6DB1: D0 0A BNE $6DBD C1/6DB3: A5 92 LDA $92 C1/6DB5: 2D 7E 7B AND $7B7E C1/6DB8: D0 03 BNE $6DBD C1/6DBA: 4C 57 6F JMP $6F57 C1/6DBD: AD 84 7A LDA $7A84 C1/6DC0: 85 36 STA $36 C1/6DC2: 10 0D BPL $6DD1 C1/6DC4: AD B4 62 LDA $62B4 C1/6DC7: F0 0B BEQ $6DD4 C1/6DC9: CE B2 62 DEC $62B2 C1/6DCC: D0 6F BNE $6E3D C1/6DCE: 4C 25 6F JMP $6F25 C1/6DD1: 4C 40 6E JMP $6E40 C1/6DD4: AD B1 62 LDA $62B1 C1/6DD7: F0 1D BEQ $6DF6 C1/6DD9: A5 0E LDA $0E C1/6DDB: 29 07 AND #$07 C1/6DDD: D0 5E BNE $6E3D C1/6DDF: CE B2 62 DEC $62B2 C1/6DE2: D0 18 BNE $6DFC C1/6DE4: A9 01 LDA #$01 C1/6DE6: 8D B4 62 STA $62B4 C1/6DE9: A9 20 LDA #$20 C1/6DEB: 8D B2 62 STA $62B2 C1/6DEE: A9 01 LDA #$01 C1/6DF0: 8D 7F 7B STA $7B7F C1/6DF3: 4C 69 6F JMP $6F69 C1/6DF6: A5 0E LDA $0E C1/6DF8: 29 03 AND #$03 C1/6DFA: D0 41 BNE $6E3D C1/6DFC: E6 94 INC $94 C1/6DFE: EE B3 62 INC $62B3 C1/6E01: AD B3 62 LDA $62B3 C1/6E04: 29 08 AND #$08 C1/6E06: F0 21 BEQ $6E29 C1/6E08: AD B3 62 LDA $62B3 C1/6E0B: 29 07 AND #$07 C1/6E0D: AA TAX C1/6E0E: AD 1D 20 LDA $201D C1/6E11: 2D AC 61 AND $61AC C1/6E14: 2D AD 61 AND $61AD C1/6E17: 2D 93 61 AND $6193 C1/6E1A: 3F 01 1A C1 AND $C11A01,X C1/6E1E: F0 DC BEQ $6DFC C1/6E20: 8D 7D 7B STA $7B7D C1/6E23: 9C 7E 7B STZ $7B7E C1/6E26: 4C 05 6F JMP $6F05 C1/6E29: AD B3 62 LDA $62B3 C1/6E2C: 29 07 AND #$07 C1/6E2E: AA TAX C1/6E2F: BF 01 1A C1 LDA $C11A01,X C1/6E33: 25 92 AND $92 C1/6E35: F0 C5 BEQ $6DFC C1/6E37: 8D 7E 7B STA $7B7E C1/6E3A: 9C 7D 7B STZ $7B7D C1/6E3D: 4C 05 6F JMP $6F05 C1/6E40: A5 36 LDA $36 C1/6E42: 29 0D AND #$0D C1/6E44: C9 08 CMP #$08 C1/6E46: D0 3A BNE $6E82 C1/6E48: A5 05 LDA $05 C1/6E4A: 29 03 AND #$03 C1/6E4C: F0 34 BEQ $6E82 C1/6E4E: E6 94 INC $94 C1/6E50: A5 05 LDA $05 C1/6E52: 29 02 AND #$02 C1/6E54: D0 16 BNE $6E6C C1/6E56: AD CE 7A LDA $7ACE C1/6E59: 29 02 AND #$02 C1/6E5B: D0 25 BNE $6E82 C1/6E5D: AD CE 7A LDA $7ACE C1/6E60: 1A INC C1/6E61: 1A INC C1/6E62: 20 70 6D JSR $6D70 C1/6E65: 90 1B BCC $6E82 C1/6E67: 8D CE 7A STA $7ACE C1/6E6A: 80 2E BRA $6E9A C1/6E6C: AD CE 7A LDA $7ACE C1/6E6F: 29 02 AND #$02 C1/6E71: F0 0F BEQ $6E82 C1/6E73: AD CE 7A LDA $7ACE C1/6E76: 3A DEC C1/6E77: 3A DEC C1/6E78: 20 70 6D JSR $6D70 C1/6E7B: 90 05 BCC $6E82 C1/6E7D: 8D CE 7A STA $7ACE C1/6E80: 80 18 BRA $6E9A C1/6E82: A5 36 LDA $36 C1/6E84: 29 01 AND #$01 C1/6E86: F0 7D BEQ $6F05 C1/6E88: A5 04 LDA $04 C1/6E8A: 29 30 AND #$30 C1/6E8C: F0 45 BEQ $6ED3 C1/6E8E: C9 30 CMP #$30 C1/6E90: F0 41 BEQ $6ED3 C1/6E92: E6 94 INC $94 C1/6E94: A5 36 LDA $36 C1/6E96: 29 20 AND #$20 C1/6E98: F0 39 BEQ $6ED3 C1/6E9A: AD CE 7A LDA $7ACE C1/6E9D: 29 01 AND #$01 C1/6E9F: F0 1E BEQ $6EBF C1/6EA1: AD CE 7A LDA $7ACE C1/6EA4: AA TAX C1/6EA5: AD 1D 20 LDA $201D C1/6EA8: 2D AC 61 AND $61AC C1/6EAB: 2D AD 61 AND $61AD C1/6EAE: 2D 93 61 AND $6193 C1/6EB1: 3D 79 7B AND $7B79,X C1/6EB4: 8D 7D 7B STA $7B7D C1/6EB7: A9 01 LDA #$01 C1/6EB9: 8D 7F 7B STA $7B7F C1/6EBC: 4C 05 6F JMP $6F05 C1/6EBF: AD CE 7A LDA $7ACE C1/6EC2: AA TAX C1/6EC3: A5 92 LDA $92 C1/6EC5: 3D 79 7B AND $7B79,X C1/6EC8: 8D 7E 7B STA $7B7E C1/6ECB: A9 01 LDA #$01 C1/6ECD: 8D 7F 7B STA $7B7F C1/6ED0: 4C 05 6F JMP $6F05 C1/6ED3: A5 05 LDA $05 C1/6ED5: 29 0F AND #$0F C1/6ED7: F0 02 BEQ $6EDB C1/6ED9: E6 94 INC $94 C1/6EDB: A5 05 LDA $05 C1/6EDD: C9 08 CMP #$08 C1/6EDF: D0 06 BNE $6EE7 C1/6EE1: 20 84 73 JSR $7384 C1/6EE4: 4C 05 6F JMP $6F05 C1/6EE7: C9 04 CMP #$04 C1/6EE9: D0 06 BNE $6EF1 C1/6EEB: 20 D6 73 JSR $73D6 C1/6EEE: 4C 05 6F JMP $6F05 C1/6EF1: C9 02 CMP #$02 C1/6EF3: D0 06 BNE $6EFB C1/6EF5: 20 33 77 JSR $7733 C1/6EF8: 4C 05 6F JMP $6F05 C1/6EFB: C9 01 CMP #$01 C1/6EFD: D0 06 BNE $6F05 C1/6EFF: 20 4A 77 JSR $774A C1/6F02: 4C 05 6F JMP $6F05 C1/6F05: A5 04 LDA $04 C1/6F07: 10 43 BPL $6F4C C1/6F09: E6 96 INC $96 C1/6F0B: AD 84 7A LDA $7A84 C1/6F0E: 10 15 BPL $6F25 C1/6F10: AD B1 62 LDA $62B1 C1/6F13: D0 37 BNE $6F4C C1/6F15: EE B1 62 INC $62B1 C1/6F18: 20 5B 18 JSR $185B ; update random number C1/6F1B: 29 07 AND #$07 C1/6F1D: 18 CLC C1/6F1E: 69 08 ADC #$08 C1/6F20: 8D B2 62 STA $62B2 C1/6F23: 80 27 BRA $6F4C C1/6F25: 20 96 70 JSR $7096 C1/6F28: 9C 7D 7B STZ $7B7D C1/6F2B: 9C 7E 7B STZ $7B7E C1/6F2E: 9C 7F 7B STZ $7B7F C1/6F31: AD 83 7A LDA $7A83 C1/6F34: 8D C2 7B STA $7BC2 C1/6F37: AD E8 7A LDA $7AE8 C1/6F3A: F0 09 BEQ $6F45 C1/6F3C: AD E9 7A LDA $7AE9 C1/6F3F: D0 04 BNE $6F45 C1/6F41: EE E9 7A INC $7AE9 C1/6F44: 60 RTS C1/6F45: EE CB 7B INC $7BCB C1/6F48: EE 80 7B INC $7B80 C1/6F4B: 60 RTS C1/6F4C: A5 09 LDA $09 C1/6F4E: 10 19 BPL $6F69 C1/6F50: AD B1 62 LDA $62B1 C1/6F53: D0 14 BNE $6F69 C1/6F55: E6 96 INC $96 C1/6F57: 9C 7D 7B STZ $7B7D C1/6F5A: 9C 7E 7B STZ $7B7E C1/6F5D: 9C 7F 7B STZ $7B7F C1/6F60: AD 83 7A LDA $7A83 C1/6F63: 8D C2 7B STA $7BC2 C1/6F66: 9C E9 7A STZ $7AE9 C1/6F69: 60 RTS ; blitz button masks key_hisatsu_tbl: C1/6F6A: .DW $FFFF, $0080, $8000, $0040, $4000, $0020, $0010, $0600 C1/6F7A: .DW $0400, $0500, $0100, $0900, $0800, $0A00, $0200 ; pointers to blitz codes key_hisatsu_lvtbl_poi: C1/6F88: .DB $00, $0C, $18, $24, $30, $3C, $48, $54 ; [ Check Blitz Code ] check_his_level: C1/6F90: 64 36 STZ $36 ; current blitz index being checked C1/6F92: A5 36 LDA $36 C1/6F94: AA TAX C1/6F95: BF 88 6F C1 LDA $C16F88,X ; pointer to blitz code C1/6F99: AA TAX C1/6F9A: BF 4B 7A C4 LDA $C47A4B,X ; length of code C1/6F9E: 3A DEC C1/6F9F: 3A DEC C1/6FA0: C2 20 REP #$20 C1/6FA2: 85 38 STA $38 C1/6FA4: 7B TDC C1/6FA5: A8 TAY C1/6FA6: BF 40 7A C4 LDA $C47A40,X ; blitz codes C1/6FAA: 29 FF 00 AND #$00FF C1/6FAD: 0A ASL C1/6FAE: DA PHX C1/6FAF: AA TAX C1/6FB0: BF 6A 6F C1 LDA $C16F6A,X C1/6FB4: 99 1E EA STA $EA1E,Y C1/6FB7: FA PLX C1/6FB8: C8 INY C1/6FB9: C8 INY C1/6FBA: E8 INX C1/6FBB: C0 14 00 CPY #$0014 C1/6FBE: D0 E6 BNE $6FA6 C1/6FC0: 7B TDC C1/6FC1: A8 TAY C1/6FC2: B9 1E EA LDA $EA1E,Y C1/6FC5: 85 2C STA $2C C1/6FC7: B9 FE E9 LDA $E9FE,Y C1/6FCA: 25 2C AND $2C C1/6FCC: F0 1C BEQ $6FEA ; branch if button masks don't match C1/6FCE: C8 INY C1/6FCF: C8 INY C1/6FD0: C4 38 CPY $38 C1/6FD2: D0 EE BNE $6FC2 ; branch if this was not the last button C1/6FD4: B9 FC E9 LDA $E9FC,Y C1/6FD7: 29 80 00 AND #$0080 C1/6FDA: D0 08 BNE $6FE4 ; branch if the A button was not pressed C1/6FDC: B9 FE E9 LDA $E9FE,Y C1/6FDF: 29 80 00 AND #$0080 C1/6FE2: F0 06 BEQ $6FEA C1/6FE4: 7B TDC ; success, use this blitz code C1/6FE5: E2 20 SEP #$20 C1/6FE7: A5 36 LDA $36 C1/6FE9: 60 RTS C1/6FEA: 7B TDC ; next blitz code C1/6FEB: E2 20 SEP #$20 C1/6FED: E6 36 INC $36 C1/6FEF: A5 36 LDA $36 C1/6FF1: C9 08 CMP #$08 C1/6FF3: D0 9D BNE $6F92 C1/6FF5: A9 FF LDA #$FF ; no codes matched C1/6FF7: 60 RTS ; [ Battle Menu Cursor State $3D: Blitz ] key_hisatsu: C1/6FF8: AD CB 7B LDA $7BCB C1/6FFB: F0 03 BEQ $7000 C1/6FFD: 4C 83 70 JMP $7083 C1/7000: A6 0A LDX $0A C1/7002: F0 28 BEQ $702C ; branch if no buttons are pressed C1/7004: A6 0A LDX $0A C1/7006: EC E2 E9 CPX $E9E2 C1/7009: F0 29 BEQ $7034 ; branch if buttons didn't change from last frame C1/700B: A9 40 LDA #$40 C1/700D: 8D E4 E9 STA $E9E4 ; reset blitz code counter to 64 frames C1/7010: AD E1 E9 LDA $E9E1 C1/7013: 29 0F AND #$0F C1/7015: 0A ASL C1/7016: AA TAX C1/7017: EE E1 E9 INC $E9E1 ; increment blitz button input pointer C1/701A: C2 20 REP #$20 C1/701C: A5 0A LDA $0A C1/701E: 8D E2 E9 STA $E9E2 ; combine buttons pressed this frame and buttons pressed last frame C1/7021: 1D FE E9 ORA $E9FE,X C1/7024: 9D FE E9 STA $E9FE,X ; save button input C1/7027: 7B TDC C1/7028: E2 20 SEP #$20 C1/702A: 80 08 BRA $7034 C1/702C: 8E E2 E9 STX $E9E2 C1/702F: A9 01 LDA #$01 C1/7031: 8D E5 E9 STA $E9E5 C1/7034: CE E4 E9 DEC $E9E4 ; decrement blitz code counter C1/7037: D0 05 BNE $703E ; branch if it didn't expire C1/7039: 7B TDC C1/703A: AA TAX C1/703B: 8E FE E9 STX $E9FE ; clear the first button input to invalidate the entire combo C1/703E: AD 68 62 LDA $6268 C1/7041: 10 39 BPL $707C ; branch if A button is not pressed C1/7043: E6 96 INC $96 ; play cursor sound effect (select) C1/7045: 20 90 6F JSR $6F90 ; check blitz code C1/7048: 8D 68 61 STA $6168 C1/704B: 20 56 6D JSR $6D56 C1/704E: AD 68 61 LDA $6168 C1/7051: 99 B0 2B STA $2BB0,Y ; attack C1/7054: AD 7D 7B LDA $7B7D C1/7057: 99 B1 2B STA $2BB1,Y ; character targets C1/705A: AD 7E 7B LDA $7B7E C1/705D: 99 B2 2B STA $2BB2,Y ; monster targets C1/7060: AD CA 62 LDA $62CA C1/7063: 99 AE 2B STA $2BAE,Y ; character slot C1/7066: 9C 7D 7B STZ $7B7D C1/7069: 9C 7E 7B STZ $7B7E C1/706C: 9C 7F 7B STZ $7B7F C1/706F: AD 83 7A LDA $7A83 C1/7072: 8D C2 7B STA $7BC2 C1/7075: EE CB 7B INC $7BCB C1/7078: EE 80 7B INC $7B80 C1/707B: 60 RTS C1/707C: AD 69 62 LDA $6269 C1/707F: 10 14 BPL $7095 ; branch if B button is not pressed C1/7081: E6 96 INC $96 C1/7083: 9C 7D 7B STZ $7B7D C1/7086: 9C 7E 7B STZ $7B7E C1/7089: 9C 7F 7B STZ $7B7F C1/708C: AD 83 7A LDA $7A83 C1/708F: 8D C2 7B STA $7BC2 C1/7092: 9C E9 7A STZ $7AE9 C1/7095: 60 RTS ; [ ] set_target_data: C1/7096: 20 56 6D JSR $6D56 C1/7099: AD E9 7A LDA $7AE9 C1/709C: F0 35 BEQ $70D3 C1/709E: AD 85 7A LDA $7A85 C1/70A1: 99 B3 2B STA $2BB3,Y C1/70A4: AD 47 2F LDA $2F47 C1/70A7: F0 17 BEQ $70C0 C1/70A9: AD 7E 7B LDA $7B7E C1/70AC: 29 20 AND #$20 C1/70AE: F0 03 BEQ $70B3 C1/70B0: AD 47 2F LDA $2F47 C1/70B3: 0D 7D 7B ORA $7B7D C1/70B6: 99 B4 2B STA $2BB4,Y C1/70B9: AD 7E 7B LDA $7B7E C1/70BC: 29 1F AND #$1F C1/70BE: 80 09 BRA $70C9 C1/70C0: AD 7D 7B LDA $7B7D C1/70C3: 99 B4 2B STA $2BB4,Y C1/70C6: AD 7E 7B LDA $7B7E C1/70C9: 99 B5 2B STA $2BB5,Y C1/70CC: AD CA 62 LDA $62CA C1/70CF: 99 AE 2B STA $2BAE,Y C1/70D2: 60 RTS C1/70D3: AD 85 7A LDA $7A85 C1/70D6: 99 B0 2B STA $2BB0,Y C1/70D9: AD 47 2F LDA $2F47 C1/70DC: F0 17 BEQ $70F5 C1/70DE: AD 7E 7B LDA $7B7E C1/70E1: 29 20 AND #$20 C1/70E3: F0 03 BEQ $70E8 C1/70E5: AD 47 2F LDA $2F47 C1/70E8: 0D 7D 7B ORA $7B7D C1/70EB: 99 B1 2B STA $2BB1,Y C1/70EE: AD 7E 7B LDA $7B7E C1/70F1: 29 1F AND #$1F C1/70F3: 80 09 BRA $70FE C1/70F5: AD 7D 7B LDA $7B7D C1/70F8: 99 B1 2B STA $2BB1,Y C1/70FB: AD 7E 7B LDA $7B7E C1/70FE: 99 B2 2B STA $2BB2,Y C1/7101: AD E8 7A LDA $7AE8 C1/7104: D0 06 BNE $710C C1/7106: AD CA 62 LDA $62CA C1/7109: 99 AE 2B STA $2BAE,Y C1/710C: B9 AF 2B LDA $2BAF,Y C1/710F: C9 08 CMP #$08 C1/7111: F0 04 BEQ $7117 C1/7113: C9 01 CMP #$01 C1/7115: D0 1C BNE $7133 C1/7117: AD 1E 7A LDA $7A1E C1/711A: F0 4B BEQ $7167 C1/711C: 20 48 8E JSR $8E48 C1/711F: AC CA 62 LDY $62CA C1/7122: B9 4B 89 LDA $894B,Y C1/7125: 29 01 AND #$01 C1/7127: F0 1F BEQ $7148 C1/7129: BD 9D 2B LDA $2B9D,X C1/712C: C9 02 CMP #$02 C1/712E: 90 04 BCC $7134 C1/7130: DE 9D 2B DEC $2B9D,X C1/7133: 60 RTS C1/7134: A9 FF LDA #$FF C1/7136: 9D 9A 2B STA $2B9A,X C1/7139: A9 80 LDA #$80 C1/713B: 9D 9B 2B STA $2B9B,X C1/713E: 9E 9C 2B STZ $2B9C,X C1/7141: 9E 9D 2B STZ $2B9D,X C1/7144: 9E 9E 2B STZ $2B9E,X C1/7147: 60 RTS C1/7148: BD 89 2B LDA $2B89,X C1/714B: C9 02 CMP #$02 C1/714D: 90 04 BCC $7153 C1/714F: DE 89 2B DEC $2B89,X C1/7152: 60 RTS C1/7153: A9 FF LDA #$FF C1/7155: 9D 86 2B STA $2B86,X C1/7158: A9 80 LDA #$80 C1/715A: 9D 87 2B STA $2B87,X C1/715D: 9E 88 2B STZ $2B88,X C1/7160: 9E 89 2B STZ $2B89,X C1/7163: 9E 8A 2B STZ $2B8A,X C1/7166: 60 RTS C1/7167: 7B TDC C1/7168: AA TAX C1/7169: B9 B0 2B LDA $2BB0,Y C1/716C: DD 86 26 CMP $2686,X C1/716F: F0 0B BEQ $717C C1/7171: E8 INX C1/7172: E8 INX C1/7173: E8 INX C1/7174: E8 INX C1/7175: E8 INX C1/7176: E0 00 05 CPX #$0500 C1/7179: D0 F1 BNE $716C C1/717B: 60 RTS C1/717C: BD 89 26 LDA $2689,X C1/717F: C9 02 CMP #$02 C1/7181: 90 04 BCC $7187 C1/7183: DE 89 26 DEC $2689,X C1/7186: 60 RTS C1/7187: A9 FF LDA #$FF C1/7189: 9D 86 26 STA $2686,X C1/718C: A9 80 LDA #$80 C1/718E: 9D 87 26 STA $2687,X C1/7191: 9E 88 26 STZ $2688,X C1/7194: 9E 89 26 STZ $2689,X C1/7197: 9E 8A 26 STZ $268A,X C1/719A: 60 RTS ; [ ] get_caster_poi: C1/719B: A9 FF LDA #$FF C1/719D: 85 73 STA $73 C1/719F: 85 74 STA $74 C1/71A1: 85 75 STA $75 C1/71A3: 20 72 73 JSR $7372 C1/71A6: 0A ASL C1/71A7: AA TAX C1/71A8: C2 20 REP #$20 C1/71AA: BD 0F 80 LDA $800F,X C1/71AD: 4A LSR C1/71AE: 4A LSR C1/71AF: 4A LSR C1/71B0: 85 36 STA $36 C1/71B2: BD 1B 80 LDA $801B,X C1/71B5: 4A LSR C1/71B6: 4A LSR C1/71B7: 4A LSR C1/71B8: 85 38 STA $38 C1/71BA: 7B TDC C1/71BB: E2 20 SEP #$20 C1/71BD: 60 RTS ; [ ] get_target_poi: C1/71BE: AD CE 7A LDA $7ACE C1/71C1: AA TAX C1/71C2: BD 79 7B LDA $7B79,X C1/71C5: 48 PHA C1/71C6: 98 TYA C1/71C7: 18 CLC C1/71C8: 7F 67 77 C1 ADC $C17767,X C1/71CC: AA TAX C1/71CD: BD 86 7A LDA $7A86,X C1/71D0: AA TAX C1/71D1: 68 PLA C1/71D2: 25 92 AND $92 C1/71D4: 3F 61 77 C1 AND $C17761,X C1/71D8: F0 10 BEQ $71EA C1/71DA: AD CE 7A LDA $7ACE C1/71DD: AA TAX C1/71DE: 98 TYA C1/71DF: 18 CLC C1/71E0: 7F 67 77 C1 ADC $C17767,X C1/71E4: AA TAX C1/71E5: BD 86 7A LDA $7A86,X C1/71E8: 10 02 BPL $71EC C1/71EA: 18 CLC C1/71EB: 60 RTS C1/71EC: 0A ASL C1/71ED: AA TAX C1/71EE: C2 20 REP #$20 C1/71F0: BD 0F 80 LDA $800F,X C1/71F3: 4A LSR C1/71F4: 4A LSR C1/71F5: 4A LSR C1/71F6: 85 3A STA $3A C1/71F8: BD 1B 80 LDA $801B,X C1/71FB: 4A LSR C1/71FC: 4A LSR C1/71FD: 4A LSR C1/71FE: 85 3C STA $3C C1/7200: A5 3A LDA $3A C1/7202: 38 SEC C1/7203: E5 36 SBC $36 C1/7205: 85 3E STA $3E C1/7207: A5 3C LDA $3C C1/7209: 38 SEC C1/720A: E5 38 SBC $38 C1/720C: 85 40 STA $40 C1/720E: 7B TDC C1/720F: E2 20 SEP #$20 C1/7211: 38 SEC C1/7212: 60 RTS ; [ ] get_mon_length: C1/7213: C2 20 REP #$20 C1/7215: A5 3E LDA $3E C1/7217: 10 06 BPL $721F C1/7219: 49 FF FF EOR #$FFFF C1/721C: 1A INC C1/721D: 85 3E STA $3E C1/721F: A5 40 LDA $40 C1/7221: 10 06 BPL $7229 C1/7223: 49 FF FF EOR #$FFFF C1/7226: 1A INC C1/7227: 85 40 STA $40 C1/7229: 7B TDC C1/722A: E2 20 SEP #$20 C1/722C: A5 3E LDA $3E C1/722E: 85 2C STA $2C C1/7230: 85 2E STA $2E C1/7232: 20 B0 18 JSR $18B0 C1/7235: A6 30 LDX $30 C1/7237: DA PHX C1/7238: A5 40 LDA $40 C1/723A: 85 2C STA $2C C1/723C: 85 2E STA $2E C1/723E: 20 B0 18 JSR $18B0 C1/7241: C2 20 REP #$20 C1/7243: 68 PLA C1/7244: 18 CLC C1/7245: 65 30 ADC $30 C1/7247: C5 73 CMP $73 C1/7249: B0 09 BCS $7254 C1/724B: 85 73 STA $73 C1/724D: 7B TDC C1/724E: E2 20 SEP #$20 C1/7250: 98 TYA C1/7251: 85 75 STA $75 C1/7253: 60 RTS C1/7254: 7B TDC C1/7255: E2 20 SEP #$20 C1/7257: 60 RTS ; [ ] get_u_mon: C1/7258: 20 9B 71 JSR $719B C1/725B: 7B TDC C1/725C: A8 TAY C1/725D: 20 BE 71 JSR $71BE C1/7260: B0 0A BCS $726C C1/7262: 7B TDC C1/7263: E2 20 SEP #$20 C1/7265: C8 INY C1/7266: C0 06 00 CPY #$0006 C1/7269: D0 F2 BNE $725D C1/726B: 60 RTS C1/726C: C2 20 REP #$20 C1/726E: A5 40 LDA $40 C1/7270: 10 F0 BPL $7262 C1/7272: A5 3E LDA $3E C1/7274: 10 0A BPL $7280 C1/7276: A5 40 LDA $40 C1/7278: C5 3E CMP $3E C1/727A: F0 0D BEQ $7289 C1/727C: 90 0B BCC $7289 C1/727E: 80 E2 BRA $7262 C1/7280: A5 40 LDA $40 C1/7282: 18 CLC C1/7283: 65 3E ADC $3E C1/7285: F0 02 BEQ $7289 C1/7287: 10 D9 BPL $7262 C1/7289: 7B TDC C1/728A: E2 20 SEP #$20 C1/728C: 20 13 72 JSR $7213 C1/728F: 4C 62 72 JMP $7262 ; [ ] get_d_mon: C1/7292: 20 9B 71 JSR $719B C1/7295: 7B TDC C1/7296: A8 TAY C1/7297: 20 BE 71 JSR $71BE C1/729A: B0 0A BCS $72A6 C1/729C: 7B TDC C1/729D: E2 20 SEP #$20 C1/729F: C8 INY C1/72A0: C0 06 00 CPY #$0006 C1/72A3: D0 F2 BNE $7297 C1/72A5: 60 RTS C1/72A6: C2 20 REP #$20 C1/72A8: A5 40 LDA $40 C1/72AA: F0 F0 BEQ $729C C1/72AC: 30 EE BMI $729C C1/72AE: A5 3E LDA $3E C1/72B0: 30 0A BMI $72BC C1/72B2: A5 3E LDA $3E C1/72B4: C5 40 CMP $40 C1/72B6: 90 0D BCC $72C5 C1/72B8: F0 0B BEQ $72C5 C1/72BA: 80 E0 BRA $729C C1/72BC: A5 40 LDA $40 C1/72BE: 18 CLC C1/72BF: 65 3E ADC $3E C1/72C1: F0 02 BEQ $72C5 C1/72C3: 30 D7 BMI $729C C1/72C5: 7B TDC C1/72C6: E2 20 SEP #$20 C1/72C8: 20 13 72 JSR $7213 C1/72CB: 4C 9C 72 JMP $729C ; [ ] get_l_mon: C1/72CE: 20 9B 71 JSR $719B C1/72D1: 7B TDC C1/72D2: A8 TAY C1/72D3: 20 BE 71 JSR $71BE C1/72D6: B0 0A BCS $72E2 C1/72D8: 7B TDC C1/72D9: E2 20 SEP #$20 C1/72DB: C8 INY C1/72DC: C0 06 00 CPY #$0006 C1/72DF: D0 F2 BNE $72D3 C1/72E1: 60 RTS C1/72E2: C2 20 REP #$20 C1/72E4: A5 3E LDA $3E C1/72E6: 10 F0 BPL $72D8 C1/72E8: A5 40 LDA $40 C1/72EA: 10 0A BPL $72F6 C1/72EC: A5 3E LDA $3E C1/72EE: C5 40 CMP $40 C1/72F0: 90 0D BCC $72FF C1/72F2: F0 0B BEQ $72FF C1/72F4: 80 E2 BRA $72D8 C1/72F6: A5 40 LDA $40 C1/72F8: 18 CLC C1/72F9: 65 3E ADC $3E C1/72FB: F0 02 BEQ $72FF C1/72FD: 10 D9 BPL $72D8 C1/72FF: 7B TDC C1/7300: E2 20 SEP #$20 C1/7302: 20 13 72 JSR $7213 C1/7305: 4C D8 72 JMP $72D8 ; [ ] get_r_mon: C1/7308: 20 9B 71 JSR $719B C1/730B: 7B TDC C1/730C: A8 TAY C1/730D: 20 BE 71 JSR $71BE C1/7310: B0 0A BCS $731C C1/7312: 7B TDC C1/7313: E2 20 SEP #$20 C1/7315: C8 INY C1/7316: C0 06 00 CPY #$0006 C1/7319: D0 F2 BNE $730D C1/731B: 60 RTS C1/731C: C2 20 REP #$20 C1/731E: A5 3E LDA $3E C1/7320: F0 F0 BEQ $7312 C1/7322: 30 EE BMI $7312 C1/7324: A5 40 LDA $40 C1/7326: 30 0A BMI $7332 C1/7328: A5 40 LDA $40 C1/732A: C5 3E CMP $3E C1/732C: F0 0D BEQ $733B C1/732E: 90 0B BCC $733B C1/7330: 80 E0 BRA $7312 C1/7332: A5 40 LDA $40 C1/7334: 18 CLC C1/7335: 65 3E ADC $3E C1/7337: F0 02 BEQ $733B C1/7339: 30 D7 BMI $7312 C1/733B: 7B TDC C1/733C: E2 20 SEP #$20 C1/733E: 20 13 72 JSR $7213 C1/7341: 4C 12 73 JMP $7312 ; [ ] inc_group_poi_play: C1/7344: AD CF 7A LDA $7ACF C1/7347: 1A INC C1/7348: 29 03 AND #$03 C1/734A: 8D CF 7A STA $7ACF C1/734D: D0 0A BNE $7359 C1/734F: AD CE 7A LDA $7ACE C1/7352: 1A INC C1/7353: 1A INC C1/7354: 29 03 AND #$03 C1/7356: 8D CE 7A STA $7ACE C1/7359: 60 RTS ; [ ] dec_group_poi_play: C1/735A: AD CF 7A LDA $7ACF C1/735D: 3A DEC C1/735E: 29 03 AND #$03 C1/7360: 8D CF 7A STA $7ACF C1/7363: C9 03 CMP #$03 C1/7365: D0 0A BNE $7371 C1/7367: AD CE 7A LDA $7ACE C1/736A: 3A DEC C1/736B: 3A DEC C1/736C: 29 03 AND #$03 C1/736E: 8D CE 7A STA $7ACE C1/7371: 60 RTS ; [ ] get_no: C1/7372: AD CE 7A LDA $7ACE C1/7375: A8 TAY C1/7376: AA TAX C1/7377: BF 67 77 C1 LDA $C17767,X C1/737B: 18 CLC C1/737C: 6D CF 7A ADC $7ACF C1/737F: AA TAX C1/7380: BD 86 7A LDA $7A86,X C1/7383: 60 RTS ; [ ] key_target_up: C1/7384: AD CE 7A LDA $7ACE C1/7387: 29 01 AND #$01 C1/7389: F0 28 BEQ $73B3 C1/738B: 20 5A 73 JSR $735A C1/738E: 20 72 73 JSR $7372 C1/7391: 30 F8 BMI $738B C1/7393: AA TAX C1/7394: B9 79 7B LDA $7B79,Y C1/7397: 3F 61 77 C1 AND $C17761,X C1/739B: 2D 1D 20 AND $201D C1/739E: 2D AC 61 AND $61AC C1/73A1: 2D AD 61 AND $61AD C1/73A4: 2D 93 61 AND $6193 C1/73A7: F0 E2 BEQ $738B C1/73A9: 8D 7D 7B STA $7B7D C1/73AC: 9C 7E 7B STZ $7B7E C1/73AF: 9C 7F 7B STZ $7B7F C1/73B2: 60 RTS C1/73B3: 20 58 72 JSR $7258 C1/73B6: A5 75 LDA $75 C1/73B8: C9 FF CMP #$FF C1/73BA: F0 19 BEQ $73D5 C1/73BC: 8D CF 7A STA $7ACF C1/73BF: 20 72 73 JSR $7372 C1/73C2: AA TAX C1/73C3: B9 79 7B LDA $7B79,Y C1/73C6: 25 92 AND $92 C1/73C8: 3F 61 77 C1 AND $C17761,X C1/73CC: 8D 7E 7B STA $7B7E C1/73CF: 9C 7D 7B STZ $7B7D C1/73D2: 9C 7F 7B STZ $7B7F C1/73D5: 60 RTS ; [ ] key_target_down: C1/73D6: AD CE 7A LDA $7ACE C1/73D9: 29 01 AND #$01 C1/73DB: F0 28 BEQ $7405 C1/73DD: 20 44 73 JSR $7344 C1/73E0: 20 72 73 JSR $7372 C1/73E3: 30 F8 BMI $73DD C1/73E5: AA TAX C1/73E6: B9 79 7B LDA $7B79,Y C1/73E9: 3F 61 77 C1 AND $C17761,X C1/73ED: 2D 1D 20 AND $201D C1/73F0: 2D AC 61 AND $61AC C1/73F3: 2D AD 61 AND $61AD C1/73F6: 2D 93 61 AND $6193 C1/73F9: F0 E2 BEQ $73DD C1/73FB: 8D 7D 7B STA $7B7D C1/73FE: 9C 7E 7B STZ $7B7E C1/7401: 9C 7F 7B STZ $7B7F C1/7404: 60 RTS C1/7405: 20 92 72 JSR $7292 C1/7408: A5 75 LDA $75 C1/740A: C9 FF CMP #$FF C1/740C: F0 19 BEQ $7427 C1/740E: 8D CF 7A STA $7ACF C1/7411: 20 72 73 JSR $7372 C1/7414: AA TAX C1/7415: B9 79 7B LDA $7B79,Y C1/7418: 25 92 AND $92 C1/741A: 3F 61 77 C1 AND $C17761,X C1/741E: 8D 7E 7B STA $7B7E C1/7421: 9C 7D 7B STZ $7B7D C1/7424: 9C 7F 7B STZ $7B7F C1/7427: 60 RTS ; ??? jump table (1 per battle type) C1/7428: .DW $74BF, $74E9, $74BF, $74EA ; ??? jump table (1 per battle type) C1/7430: .DW $7438, $7439, $7439, $7463 ; 0: normal C1/7438: 60 RTS ; 1/2: back/side C1/7439: AD 84 7A LDA $7A84 C1/743C: 29 02 AND #$02 C1/743E: D0 1D BNE $745D C1/7440: AD 7B 7B LDA $7B7B C1/7443: 25 92 AND $92 C1/7445: F0 16 BEQ $745D C1/7447: EE CE 7A INC $7ACE C1/744A: 20 34 79 JSR $7934 C1/744D: 90 0E BCC $745D C1/744F: 8D 7E 7B STA $7B7E C1/7452: 9C 7D 7B STZ $7B7D C1/7455: 9C 7F 7B STZ $7B7F C1/7458: 8A TXA C1/7459: 8D CF 7A STA $7ACF C1/745C: 60 RTS C1/745D: A9 01 LDA #$01 C1/745F: 8D CE 7A STA $7ACE C1/7462: 60 RTS ; 3: pincer C1/7463: AD CE 7A LDA $7ACE C1/7466: C9 03 CMP #$03 C1/7468: F0 54 BEQ $74BE C1/746A: AD 84 7A LDA $7A84 C1/746D: 29 02 AND #$02 C1/746F: D0 1F BNE $7490 C1/7471: AD 7B 7B LDA $7B7B C1/7474: 25 92 AND $92 C1/7476: F0 18 BEQ $7490 C1/7478: A9 02 LDA #$02 C1/747A: 8D CE 7A STA $7ACE C1/747D: 20 34 79 JSR $7934 C1/7480: 90 37 BCC $74B9 C1/7482: 8D 7E 7B STA $7B7E C1/7485: 9C 7D 7B STZ $7B7D C1/7488: 9C 7F 7B STZ $7B7F C1/748B: 8A TXA C1/748C: 8D CF 7A STA $7ACF C1/748F: 60 RTS C1/7490: AD 7C 7B LDA $7B7C C1/7493: 2D 1D 20 AND $201D C1/7496: 2D AC 61 AND $61AC C1/7499: 2D AD 61 AND $61AD C1/749C: 2D 93 61 AND $6193 C1/749F: F0 18 BEQ $74B9 C1/74A1: A9 03 LDA #$03 C1/74A3: 8D CE 7A STA $7ACE C1/74A6: 20 58 79 JSR $7958 C1/74A9: 90 0E BCC $74B9 C1/74AB: 8D 7D 7B STA $7B7D C1/74AE: 9C 7E 7B STZ $7B7E C1/74B1: 9C 7F 7B STZ $7B7F C1/74B4: 8A TXA C1/74B5: 8D CF 7A STA $7ACF C1/74B8: 60 RTS C1/74B9: A9 01 LDA #$01 C1/74BB: 8D CE 7A STA $7ACE C1/74BE: 60 RTS ; 0/2: normal/side C1/74BF: AD 84 7A LDA $7A84 C1/74C2: 29 02 AND #$02 C1/74C4: D0 1D BNE $74E3 C1/74C6: AD 79 7B LDA $7B79 C1/74C9: 25 92 AND $92 C1/74CB: F0 16 BEQ $74E3 C1/74CD: CE CE 7A DEC $7ACE C1/74D0: 20 22 79 JSR $7922 C1/74D3: 90 0E BCC $74E3 C1/74D5: 8D 7E 7B STA $7B7E C1/74D8: 9C 7D 7B STZ $7B7D C1/74DB: 9C 7F 7B STZ $7B7F C1/74DE: 8A TXA C1/74DF: 8D CF 7A STA $7ACF C1/74E2: 60 RTS C1/74E3: A9 01 LDA #$01 C1/74E5: 8D CE 7A STA $7ACE C1/74E8: 60 RTS ; 1: back C1/74E9: 60 RTS ; 3: pincer C1/74EA: AD CE 7A LDA $7ACE C1/74ED: C9 01 CMP #$01 C1/74EF: F0 52 BEQ $7543 C1/74F1: AD 84 7A LDA $7A84 C1/74F4: 29 02 AND #$02 C1/74F6: D0 1D BNE $7515 C1/74F8: AD 7B 7B LDA $7B7B C1/74FB: 25 92 AND $92 C1/74FD: F0 16 BEQ $7515 C1/74FF: CE CE 7A DEC $7ACE C1/7502: 20 3A 79 JSR $793A C1/7505: 90 37 BCC $753E C1/7507: 8D 7E 7B STA $7B7E C1/750A: 9C 7D 7B STZ $7B7D C1/750D: 9C 7F 7B STZ $7B7F C1/7510: 8A TXA C1/7511: 8D CF 7A STA $7ACF C1/7514: 60 RTS C1/7515: AD 7A 7B LDA $7B7A C1/7518: 2D 1D 20 AND $201D C1/751B: 2D AC 61 AND $61AC C1/751E: 2D AD 61 AND $61AD C1/7521: 2D 93 61 AND $6193 C1/7524: F0 18 BEQ $753E C1/7526: A9 01 LDA #$01 C1/7528: 8D CE 7A STA $7ACE C1/752B: 20 40 79 JSR $7940 C1/752E: 90 0E BCC $753E C1/7530: 8D 7D 7B STA $7B7D C1/7533: 9C 7E 7B STZ $7B7E C1/7536: 9C 7F 7B STZ $7B7F C1/7539: 8A TXA C1/753A: 8D CF 7A STA $7ACF C1/753D: 60 RTS C1/753E: A9 03 LDA #$03 C1/7540: 8D CE 7A STA $7ACE C1/7543: 60 RTS ; ??? (1 per battle type) C1/7544: .DW $7666, $7669, $76A7, $76FE ; ??? (1 per battle type) C1/754C: .DW $75A3, $75A0, $75D8, $7631 get_r_mon_set: C1/7554: 20 08 73 JSR $7308 C1/7557: A5 75 LDA $75 C1/7559: C9 FF CMP #$FF C1/755B: F0 1B BEQ $7578 C1/755D: 8D CF 7A STA $7ACF C1/7560: 20 72 73 JSR $7372 C1/7563: AA TAX C1/7564: B9 79 7B LDA $7B79,Y C1/7567: 3F 61 77 C1 AND $C17761,X C1/756B: 25 92 AND $92 C1/756D: 8D 7E 7B STA $7B7E C1/7570: 9C 7D 7B STZ $7B7D C1/7573: 9C 7F 7B STZ $7B7F C1/7576: 38 SEC C1/7577: 60 RTS C1/7578: 18 CLC C1/7579: 60 RTS get_l_mon_set: C1/757A: 20 CE 72 JSR $72CE C1/757D: A5 75 LDA $75 C1/757F: C9 FF CMP #$FF C1/7581: F0 1B BEQ $759E C1/7583: 8D CF 7A STA $7ACF C1/7586: 20 72 73 JSR $7372 C1/7589: AA TAX C1/758A: B9 79 7B LDA $7B79,Y C1/758D: 3F 61 77 C1 AND $C17761,X C1/7591: 25 92 AND $92 C1/7593: 8D 7E 7B STA $7B7E C1/7596: 9C 7D 7B STZ $7B7D C1/7599: 9C 7F 7B STZ $7B7F C1/759C: 38 SEC C1/759D: 60 RTS C1/759E: 18 CLC C1/759F: 60 RTS C1/75A0: 4C 54 75 JMP $7554 C1/75A3: 20 54 75 JSR $7554 C1/75A6: B0 2F BCS $75D7 C1/75A8: AD 84 7A LDA $7A84 C1/75AB: 29 02 AND #$02 C1/75AD: D0 28 BNE $75D7 C1/75AF: AD 7A 7B LDA $7B7A C1/75B2: 2D 1D 20 AND $201D C1/75B5: 2D AC 61 AND $61AC C1/75B8: 2D AD 61 AND $61AD C1/75BB: 2D 93 61 AND $6193 C1/75BE: F0 17 BEQ $75D7 C1/75C0: 20 40 79 JSR $7940 C1/75C3: 90 12 BCC $75D7 C1/75C5: 8D 7D 7B STA $7B7D C1/75C8: 9C 7E 7B STZ $7B7E C1/75CB: 9C 7F 7B STZ $7B7F C1/75CE: A9 01 LDA #$01 C1/75D0: 8D CE 7A STA $7ACE C1/75D3: 8A TXA C1/75D4: 8D CF 7A STA $7ACF C1/75D7: 60 RTS C1/75D8: 20 54 75 JSR $7554 C1/75DB: B0 53 BCS $7630 C1/75DD: AD CE 7A LDA $7ACE C1/75E0: D0 4E BNE $7630 C1/75E2: AD 84 7A LDA $7A84 C1/75E5: 29 02 AND #$02 C1/75E7: D0 29 BNE $7612 C1/75E9: AD 7A 7B LDA $7B7A C1/75EC: 2D 1D 20 AND $201D C1/75EF: 2D AC 61 AND $61AC C1/75F2: 2D AD 61 AND $61AD C1/75F5: 2D 93 61 AND $6193 C1/75F8: F0 18 BEQ $7612 C1/75FA: 20 40 79 JSR $7940 C1/75FD: 90 13 BCC $7612 C1/75FF: 8D 7D 7B STA $7B7D C1/7602: 9C 7E 7B STZ $7B7E C1/7605: 9C 7F 7B STZ $7B7F C1/7608: A9 01 LDA #$01 C1/760A: 8D CE 7A STA $7ACE C1/760D: 8A TXA C1/760E: 8D CF 7A STA $7ACF C1/7611: 60 RTS C1/7612: AD 7B 7B LDA $7B7B C1/7615: 25 92 AND $92 C1/7617: F0 17 BEQ $7630 C1/7619: 20 34 79 JSR $7934 C1/761C: 90 12 BCC $7630 C1/761E: 8D 7E 7B STA $7B7E C1/7621: 9C 7D 7B STZ $7B7D C1/7624: 9C 7F 7B STZ $7B7F C1/7627: 8A TXA C1/7628: 8D CF 7A STA $7ACF C1/762B: A9 02 LDA #$02 C1/762D: 8D CE 7A STA $7ACE C1/7630: 60 RTS C1/7631: 20 54 75 JSR $7554 C1/7634: B0 2F BCS $7665 C1/7636: AD 84 7A LDA $7A84 C1/7639: 29 02 AND #$02 C1/763B: D0 28 BNE $7665 C1/763D: AD 7C 7B LDA $7B7C C1/7640: 2D 1D 20 AND $201D C1/7643: 2D AC 61 AND $61AC C1/7646: 2D AD 61 AND $61AD C1/7649: 2D 93 61 AND $6193 C1/764C: F0 17 BEQ $7665 C1/764E: 20 58 79 JSR $7958 C1/7651: 90 12 BCC $7665 C1/7653: 8D 7D 7B STA $7B7D C1/7656: 9C 7E 7B STZ $7B7E C1/7659: 9C 7F 7B STZ $7B7F C1/765C: A9 03 LDA #$03 C1/765E: 8D CE 7A STA $7ACE C1/7661: 8A TXA C1/7662: 8D CF 7A STA $7ACF C1/7665: 60 RTS C1/7666: 4C 7A 75 JMP $757A C1/7669: 20 7A 75 JSR $757A C1/766C: B0 33 BCS $76A1 C1/766E: AD 84 7A LDA $7A84 C1/7671: 29 02 AND #$02 C1/7673: D0 2C BNE $76A1 C1/7675: AD 7A 7B LDA $7B7A C1/7678: 2D 1D 20 AND $201D C1/767B: 2D AC 61 AND $61AC C1/767E: 2D AD 61 AND $61AD C1/7681: 2D 93 61 AND $6193 C1/7684: F0 1B BEQ $76A1 C1/7686: CE CE 7A DEC $7ACE C1/7689: 20 40 79 JSR $7940 C1/768C: 90 13 BCC $76A1 C1/768E: 8D 7D 7B STA $7B7D C1/7691: 9C 7E 7B STZ $7B7E C1/7694: 9C 7F 7B STZ $7B7F C1/7697: A9 01 LDA #$01 C1/7699: 8D CE 7A STA $7ACE C1/769C: 8A TXA C1/769D: 8D CF 7A STA $7ACF C1/76A0: 60 RTS C1/76A1: A9 02 LDA #$02 C1/76A3: 8D CE 7A STA $7ACE C1/76A6: 60 RTS C1/76A7: 20 7A 75 JSR $757A C1/76AA: B0 51 BCS $76FD C1/76AC: AD CE 7A LDA $7ACE C1/76AF: F0 4C BEQ $76FD C1/76B1: AD 84 7A LDA $7A84 C1/76B4: 29 02 AND #$02 C1/76B6: D0 29 BNE $76E1 C1/76B8: AD 7A 7B LDA $7B7A C1/76BB: 2D 1D 20 AND $201D C1/76BE: 2D AC 61 AND $61AC C1/76C1: 2D AD 61 AND $61AD C1/76C4: 2D 93 61 AND $6193 C1/76C7: F0 18 BEQ $76E1 C1/76C9: 20 40 79 JSR $7940 C1/76CC: 90 13 BCC $76E1 C1/76CE: 8D 7D 7B STA $7B7D C1/76D1: 9C 7E 7B STZ $7B7E C1/76D4: 9C 7F 7B STZ $7B7F C1/76D7: A9 01 LDA #$01 C1/76D9: 8D CE 7A STA $7ACE C1/76DC: 8A TXA C1/76DD: 8D CF 7A STA $7ACF C1/76E0: 60 RTS C1/76E1: AD 79 7B LDA $7B79 C1/76E4: 25 92 AND $92 C1/76E6: F0 15 BEQ $76FD C1/76E8: 20 22 79 JSR $7922 C1/76EB: 90 10 BCC $76FD C1/76ED: 8D 7E 7B STA $7B7E C1/76F0: 9C 7D 7B STZ $7B7D C1/76F3: 9C 7F 7B STZ $7B7F C1/76F6: 9C CE 7A STZ $7ACE C1/76F9: 8A TXA C1/76FA: 8D CF 7A STA $7ACF C1/76FD: 60 RTS C1/76FE: 20 7A 75 JSR $757A C1/7701: B0 2F BCS $7732 C1/7703: AD 84 7A LDA $7A84 C1/7706: 29 02 AND #$02 C1/7708: D0 28 BNE $7732 C1/770A: AD 7A 7B LDA $7B7A C1/770D: 2D 1D 20 AND $201D C1/7710: 2D AC 61 AND $61AC C1/7713: 2D AD 61 AND $61AD C1/7716: 2D 93 61 AND $6193 C1/7719: F0 17 BEQ $7732 C1/771B: 20 40 79 JSR $7940 C1/771E: 90 12 BCC $7732 C1/7720: 8D 7D 7B STA $7B7D C1/7723: 9C 7E 7B STZ $7B7E C1/7726: 9C 7F 7B STZ $7B7F C1/7729: A9 01 LDA #$01 C1/772B: 8D CE 7A STA $7ACE C1/772E: 8A TXA C1/772F: 8D CF 7A STA $7ACF C1/7732: 60 RTS ; [ ] key_target_left: C1/7733: AD CE 7A LDA $7ACE C1/7736: 29 01 AND #$01 C1/7738: F0 08 BEQ $7742 C1/773A: AD 1F 20 LDA $201F ; battle type C1/773D: 0A ASL C1/773E: AA TAX C1/773F: 7C 28 74 JMP ($7428,X) C1/7742: AD 1F 20 LDA $201F C1/7745: 0A ASL C1/7746: AA TAX C1/7747: 7C 44 75 JMP ($7544,X) ; [ ] key_target_right: C1/774A: AD CE 7A LDA $7ACE C1/774D: 29 01 AND #$01 C1/774F: F0 08 BEQ $7759 C1/7751: AD 1F 20 LDA $201F ; battle type C1/7754: 0A ASL C1/7755: AA TAX C1/7756: 7C 30 74 JMP ($7430,X) C1/7759: AD 1F 20 LDA $201F C1/775C: 0A ASL C1/775D: AA TAX C1/775E: 7C 4C 75 JMP ($754C,X) ; C1/7761: .DB $01, $02, $04, $08, $10, $20 ; C1/7767: .DB $00, $06, $0C, $12 C1/776B: A6 0A LDX $0A C1/776D: 8E E2 E9 STX $E9E2 C1/7770: A9 FF LDA #$FF C1/7772: 8D E4 E9 STA $E9E4 C1/7775: 9C E5 E9 STZ $E9E5 C1/7778: 7B TDC C1/7779: AA TAX C1/777A: 9E FE E9 STZ $E9FE,X C1/777D: E8 INX C1/777E: E0 20 00 CPX #$0020 C1/7781: D0 F7 BNE $777A C1/7783: 9C E1 E9 STZ $E9E1 C1/7786: 9C 68 61 STZ $6168 C1/7789: A9 02 LDA #$02 C1/778B: 8D 84 7A STA $7A84 C1/778E: A9 3D LDA #$3D C1/7790: 80 05 BRA $7797 C1/7792: 9C 41 2F STZ $2F41 ; start battle time key_target: C1/7795: A9 38 LDA #$38 key_target_2: C1/7797: 48 PHA C1/7798: EE 6B 7B INC $7B6B C1/779B: AD C2 7B LDA $7BC2 C1/779E: 8D 83 7A STA $7A83 C1/77A1: 9C 7D 7B STZ $7B7D C1/77A4: 9C 7E 7B STZ $7B7E C1/77A7: 9C 7F 7B STZ $7B7F C1/77AA: 9C CE 7A STZ $7ACE C1/77AD: 9C CF 7A STZ $7ACF C1/77B0: 9C B1 62 STZ $62B1 C1/77B3: 9C B2 62 STZ $62B2 C1/77B6: 9C B4 62 STZ $62B4 C1/77B9: AD 84 7A LDA $7A84 C1/77BC: 30 06 BMI $77C4 C1/77BE: 85 36 STA $36 C1/77C0: C9 02 CMP #$02 C1/77C2: D0 0D BNE $77D1 C1/77C4: AE CA 62 LDX $62CA C1/77C7: BF 61 77 C1 LDA $C17761,X C1/77CB: 8D 7D 7B STA $7B7D C1/77CE: 4C 01 79 JMP $7901 C1/77D1: A5 36 LDA $36 C1/77D3: 29 0C AND #$0C C1/77D5: C9 0C CMP #$0C C1/77D7: D0 26 BNE $77FF C1/77D9: A5 36 LDA $36 C1/77DB: 29 40 AND #$40 C1/77DD: F0 0B BEQ $77EA C1/77DF: A5 92 LDA $92 C1/77E1: 8D 7E 7B STA $7B7E C1/77E4: EE 7F 7B INC $7B7F C1/77E7: 4C 01 79 JMP $7901 C1/77EA: AD 1D 20 LDA $201D C1/77ED: 2D AC 61 AND $61AC C1/77F0: 2D AD 61 AND $61AD C1/77F3: 2D 93 61 AND $6193 C1/77F6: 8D 7D 7B STA $7B7D C1/77F9: EE 7F 7B INC $7B7F C1/77FC: 4C 01 79 JMP $7901 C1/77FF: C9 04 CMP #$04 C1/7801: D0 1A BNE $781D C1/7803: AD 1D 20 LDA $201D C1/7806: 2D AC 61 AND $61AC C1/7809: 2D AD 61 AND $61AD C1/780C: 2D 93 61 AND $6193 C1/780F: 8D 7D 7B STA $7B7D C1/7812: A5 92 LDA $92 C1/7814: 8D 7E 7B STA $7B7E C1/7817: EE 7F 7B INC $7B7F C1/781A: 4C 01 79 JMP $7901 C1/781D: A5 36 LDA $36 C1/781F: 29 0C AND #$0C C1/7821: C9 08 CMP #$08 C1/7823: D0 76 BNE $789B C1/7825: A5 36 LDA $36 C1/7827: 29 40 AND #$40 C1/7829: D0 4A BNE $7875 C1/782B: 7B TDC C1/782C: AA TAX C1/782D: AD CA 62 LDA $62CA C1/7830: DD 8C 7A CMP $7A8C,X C1/7833: F0 23 BEQ $7858 C1/7835: E8 INX C1/7836: E0 04 00 CPX #$0004 C1/7839: D0 F5 BNE $7830 C1/783B: AD 1D 20 LDA $201D C1/783E: 2D AC 61 AND $61AC C1/7841: 2D AD 61 AND $61AD C1/7844: 2D 93 61 AND $6193 C1/7847: 2D 7C 7B AND $7B7C C1/784A: 8D 7D 7B STA $7B7D C1/784D: EE 7F 7B INC $7B7F C1/7850: A9 03 LDA #$03 C1/7852: 8D CE 7A STA $7ACE C1/7855: 4C 01 79 JMP $7901 C1/7858: AD 1D 20 LDA $201D C1/785B: 2D AC 61 AND $61AC C1/785E: 2D AD 61 AND $61AD C1/7861: 2D 93 61 AND $6193 C1/7864: 2D 7A 7B AND $7B7A C1/7867: 8D 7D 7B STA $7B7D C1/786A: EE 7F 7B INC $7B7F C1/786D: A9 01 LDA #$01 C1/786F: 8D CE 7A STA $7ACE C1/7872: 4C 01 79 JMP $7901 C1/7875: A5 92 LDA $92 C1/7877: 2D 79 7B AND $7B79 C1/787A: F0 0C BEQ $7888 C1/787C: 8D 7E 7B STA $7B7E C1/787F: EE 7F 7B INC $7B7F C1/7882: 9C CE 7A STZ $7ACE C1/7885: 4C 01 79 JMP $7901 C1/7888: A5 92 LDA $92 C1/788A: 2D 7B 7B AND $7B7B C1/788D: 8D 7E 7B STA $7B7E C1/7890: EE 7F 7B INC $7B7F C1/7893: A9 02 LDA #$02 C1/7895: 8D CE 7A STA $7ACE C1/7898: 4C 01 79 JMP $7901 C1/789B: A5 36 LDA $36 C1/789D: 29 40 AND #$40 C1/789F: D0 3C BNE $78DD C1/78A1: 7B TDC C1/78A2: AA TAX C1/78A3: AD CA 62 LDA $62CA C1/78A6: DD 8C 7A CMP $7A8C,X C1/78A9: F0 1C BEQ $78C7 C1/78AB: E8 INX C1/78AC: E0 04 00 CPX #$0004 C1/78AF: D0 F5 BNE $78A6 C1/78B1: AE CA 62 LDX $62CA C1/78B4: BF 61 77 C1 LDA $C17761,X C1/78B8: 8D 7D 7B STA $7B7D C1/78BB: A9 03 LDA #$03 C1/78BD: 8D CE 7A STA $7ACE C1/78C0: 8A TXA C1/78C1: 8D CF 7A STA $7ACF C1/78C4: 4C 01 79 JMP $7901 C1/78C7: AE CA 62 LDX $62CA C1/78CA: BF 61 77 C1 LDA $C17761,X C1/78CE: 8D 7D 7B STA $7B7D C1/78D1: A9 01 LDA #$01 C1/78D3: 8D CE 7A STA $7ACE C1/78D6: 8A TXA C1/78D7: 8D CF 7A STA $7ACF C1/78DA: 4C 01 79 JMP $7901 C1/78DD: 20 22 79 JSR $7922 C1/78E0: B0 12 BCS $78F4 C1/78E2: 20 34 79 JSR $7934 C1/78E5: 8D 7E 7B STA $7B7E C1/78E8: A9 02 LDA #$02 C1/78EA: 8D CE 7A STA $7ACE C1/78ED: 8A TXA C1/78EE: 8D CF 7A STA $7ACF C1/78F1: 4C 01 79 JMP $7901 C1/78F4: 8D 7E 7B STA $7B7E C1/78F7: 9C CE 7A STZ $7ACE C1/78FA: 8A TXA C1/78FB: 8D CF 7A STA $7ACF C1/78FE: 4C 01 79 JMP $7901 C1/7901: AD 84 7A LDA $7A84 C1/7904: 29 10 AND #$10 C1/7906: F0 03 BEQ $790B C1/7908: 9C 7F 7B STZ $7B7F C1/790B: 68 PLA C1/790C: 8D C2 7B STA $7BC2 C1/790F: 60 RTS ; [ ] get_gr0_up_bit: C1/7910: A2 AA 7A LDX #$7AAA C1/7913: 4C 70 79 JMP $7970 get_gr0_down_bit: C1/7916: A2 B0 7A LDX #$7AB0 C1/7919: 4C 70 79 JMP $7970 get_gr0_left_bit: C1/791C: A2 9E 7A LDX #$7A9E C1/791F: 4C 70 79 JMP $7970 get_gr0_right_bit: C1/7922: A2 A4 7A LDX #$7AA4 C1/7925: 4C 70 79 JMP $7970 ; [ ] get_gr2_up_bit: C1/7928: A2 AA 7A LDX #$7AAA C1/792B: 4C 9C 79 JMP $799C get_gr2_down_bit: C1/792E: A2 B0 7A LDX #$7AB0 C1/7931: 4C 9C 79 JMP $799C get_gr2_left_bit: C1/7934: A2 9E 7A LDX #$7A9E C1/7937: 4C 9C 79 JMP $799C get_gr2_right_bit: C1/793A: A2 A4 7A LDX #$7AA4 C1/793D: 4C 9C 79 JMP $799C ; [ ] get_gr1_up_bit: C1/7940: A2 C2 7A LDX #$7AC2 C1/7943: 4C C8 79 JMP $79C8 get_gr1_down_bit: C1/7946: A2 C8 7A LDX #$7AC8 C1/7949: 4C C8 79 JMP $79C8 get_gr1_left_bit: C1/794C: A2 B6 7A LDX #$7AB6 C1/794F: 4C C8 79 JMP $79C8 get_gr1_right_bit: C1/7952: A2 B6 7A LDX #$7AB6 C1/7955: 4C C8 79 JMP $79C8 ; [ ] get_gr3_up_bit: C1/7958: A2 C2 7A LDX #$7AC2 C1/795B: 4C 00 7A JMP $7A00 get_gr3_down_bit: C1/795E: A2 C8 7A LDX #$7AC8 C1/7961: 4C 00 7A JMP $7A00 get_gr3_left_bit: C1/7964: A2 B6 7A LDX #$7AB6 C1/7967: 4C 00 7A JMP $7A00 get_gr3_right_bit: C1/796A: A2 B6 7A LDX #$7AB6 C1/796D: 4C 00 7A JMP $7A00 ; [ ] get_gr0: C1/7970: 86 3A STX $3A C1/7972: 7B TDC C1/7973: A8 TAY C1/7974: 7B TDC C1/7975: AA TAX C1/7976: B1 3A LDA ($3A),Y C1/7978: 30 0B BMI $7985 C1/797A: DD 86 7A CMP $7A86,X C1/797D: F0 0E BEQ $798D C1/797F: E8 INX C1/7980: E0 06 00 CPX #$0006 C1/7983: D0 F5 BNE $797A C1/7985: C8 INY C1/7986: C0 06 00 CPY #$0006 C1/7989: D0 E9 BNE $7974 C1/798B: 18 CLC C1/798C: 60 RTS C1/798D: 86 36 STX $36 C1/798F: AA TAX C1/7990: A5 92 LDA $92 C1/7992: 3F 61 77 C1 AND $C17761,X C1/7996: F0 E7 BEQ $797F C1/7998: A6 36 LDX $36 C1/799A: 38 SEC C1/799B: 60 RTS get_gr2: C1/799C: 86 3A STX $3A C1/799E: 7B TDC C1/799F: A8 TAY C1/79A0: 7B TDC C1/79A1: AA TAX C1/79A2: B1 3A LDA ($3A),Y C1/79A4: 30 0B BMI $79B1 C1/79A6: DD 92 7A CMP $7A92,X C1/79A9: F0 0E BEQ $79B9 C1/79AB: E8 INX C1/79AC: E0 06 00 CPX #$0006 C1/79AF: D0 F5 BNE $79A6 C1/79B1: C8 INY C1/79B2: C0 06 00 CPY #$0006 C1/79B5: D0 E9 BNE $79A0 C1/79B7: 18 CLC C1/79B8: 60 RTS C1/79B9: 86 36 STX $36 C1/79BB: AA TAX C1/79BC: A5 92 LDA $92 C1/79BE: 3F 61 77 C1 AND $C17761,X C1/79C2: F0 E7 BEQ $79AB C1/79C4: A6 36 LDX $36 C1/79C6: 38 SEC C1/79C7: 60 RTS get_gr1: C1/79C8: 86 3A STX $3A C1/79CA: 7B TDC C1/79CB: A8 TAY C1/79CC: 7B TDC C1/79CD: AA TAX C1/79CE: B1 3A LDA ($3A),Y C1/79D0: 30 0D BMI $79DF C1/79D2: DD 8C 7A CMP $7A8C,X C1/79D5: F0 10 BEQ $79E7 C1/79D7: 06 38 ASL $38 C1/79D9: E8 INX C1/79DA: E0 06 00 CPX #$0006 C1/79DD: D0 F3 BNE $79D2 C1/79DF: C8 INY C1/79E0: C0 06 00 CPY #$0006 C1/79E3: D0 E7 BNE $79CC C1/79E5: 18 CLC C1/79E6: 60 RTS C1/79E7: 86 36 STX $36 C1/79E9: AA TAX C1/79EA: AD 1D 20 LDA $201D C1/79ED: 2D AC 61 AND $61AC C1/79F0: 2D AD 61 AND $61AD C1/79F3: 2D 93 61 AND $6193 C1/79F6: 3F 61 77 C1 AND $C17761,X C1/79FA: F0 DB BEQ $79D7 C1/79FC: A6 36 LDX $36 C1/79FE: 38 SEC C1/79FF: 60 RTS get_gr3: C1/7A00: 86 3A STX $3A C1/7A02: 7B TDC C1/7A03: A8 TAY C1/7A04: 7B TDC C1/7A05: AA TAX C1/7A06: B1 3A LDA ($3A),Y C1/7A08: 30 0B BMI $7A15 C1/7A0A: DD 98 7A CMP $7A98,X C1/7A0D: F0 0E BEQ $7A1D C1/7A0F: E8 INX C1/7A10: E0 06 00 CPX #$0006 C1/7A13: D0 F5 BNE $7A0A C1/7A15: C8 INY C1/7A16: C0 06 00 CPY #$0006 C1/7A19: D0 E9 BNE $7A04 C1/7A1B: 18 CLC C1/7A1C: 60 RTS C1/7A1D: 86 36 STX $36 C1/7A1F: AA TAX C1/7A20: AD 1D 20 LDA $201D C1/7A23: 2D AC 61 AND $61AC C1/7A26: 2D AD 61 AND $61AD C1/7A29: 2D 93 61 AND $6193 C1/7A2C: 3F 61 77 C1 AND $C17761,X C1/7A30: F0 DD BEQ $7A0F C1/7A32: A6 36 LDX $36 C1/7A34: 38 SEC C1/7A35: 60 RTS C1/7A36: .DW $A008, $AC08, $B808, $C408 C1/7A3E: .DW $A010, $AC10, $B810, $C410, $A030, $AC10, $AC58, $B830 ; [ ] check_command: C1/7A4E: DA PHX C1/7A4F: BD 0F 89 LDA $890F,X C1/7A52: 29 03 AND #$03 C1/7A54: 9D 0F 89 STA $890F,X C1/7A57: 85 2C STA $2C C1/7A59: A9 03 LDA #$03 C1/7A5B: 85 2E STA $2E C1/7A5D: 20 B0 18 JSR $18B0 C1/7A60: 98 TYA C1/7A61: 18 CLC C1/7A62: 65 30 ADC $30 C1/7A64: AA TAX C1/7A65: BD 2F 20 LDA $202F,X C1/7A68: 30 03 BMI $7A6D C1/7A6A: FA PLX C1/7A6B: 18 CLC C1/7A6C: 60 RTS C1/7A6D: FA PLX C1/7A6E: 38 SEC C1/7A6F: 60 RTS ; [ ] check_command_mon: C1/7A70: DA PHX C1/7A71: BD 0F 89 LDA $890F,X C1/7A74: 29 03 AND #$03 C1/7A76: 9D 0F 89 STA $890F,X C1/7A79: 85 2C STA $2C C1/7A7B: A9 03 LDA #$03 C1/7A7D: 85 2E STA $2E C1/7A7F: 20 B0 18 JSR $18B0 C1/7A82: 98 TYA C1/7A83: 18 CLC C1/7A84: 65 30 ADC $30 C1/7A86: AA TAX C1/7A87: BD 5F 20 LDA $205F,X C1/7A8A: 30 03 BMI $7A8F C1/7A8C: FA PLX C1/7A8D: 18 CLC C1/7A8E: 60 RTS C1/7A8F: FA PLX C1/7A90: 38 SEC C1/7A91: 60 RTS ; [ Battle Menu Cursor State $05: Command Select ] key_command: C1/7A92: 9C 41 2F STZ $2F41 ; start battle time C1/7A95: 9C E3 88 STZ $88E3 C1/7A98: AD CB 7B LDA $7BCB C1/7A9B: F0 06 BEQ $7AA3 C1/7A9D: A9 0F LDA #$0F C1/7A9F: 8D C2 7B STA $7BC2 C1/7AA2: 60 RTS C1/7AA3: 9C E8 7A STZ $7AE8 C1/7AA6: 9C E9 7A STZ $7AE9 C1/7AA9: A5 04 LDA $04 C1/7AAB: C9 40 CMP #$40 C1/7AAD: D0 0B BNE $7ABA C1/7AAF: E6 94 INC $94 C1/7AB1: EE CB 7B INC $7BCB C1/7AB4: A9 01 LDA #$01 C1/7AB6: 8D CC 7B STA $7BCC C1/7AB9: 60 RTS C1/7ABA: A5 05 LDA $05 C1/7ABC: C9 40 CMP #$40 C1/7ABE: D0 0B BNE $7ACB C1/7AC0: E6 94 INC $94 C1/7AC2: EE CB 7B INC $7BCB C1/7AC5: A9 02 LDA #$02 C1/7AC7: 8D CC 7B STA $7BCC C1/7ACA: 60 RTS C1/7ACB: AD CA 62 LDA $62CA C1/7ACE: AA TAX C1/7ACF: BD CC 62 LDA $62CC,X C1/7AD2: D0 0B BNE $7ADF C1/7AD4: AD 2E 2F LDA $2F2E C1/7AD7: F0 03 BEQ $7ADC C1/7AD9: 4C E2 7A JMP $7AE2 C1/7ADC: 4C CE 7B JMP $7BCE C1/7ADF: 4C 3F 7C JMP $7C3F C1/7AE2: AE CA 62 LDX $62CA C1/7AE5: BF 5B 4B C1 LDA $C14B5B,X C1/7AE9: A8 TAY C1/7AEA: 20 4E 7A JSR $7A4E C1/7AED: 90 08 BCC $7AF7 C1/7AEF: FE 0F 89 INC $890F,X C1/7AF2: 20 4E 7A JSR $7A4E C1/7AF5: B0 F8 BCS $7AEF C1/7AF7: A5 05 LDA $05 C1/7AF9: 29 08 AND #$08 C1/7AFB: F0 1E BEQ $7B1B C1/7AFD: BD 0F 89 LDA $890F,X C1/7B00: 85 36 STA $36 C1/7B02: 7B TDC C1/7B03: 9D 0F 89 STA $890F,X C1/7B06: 20 4E 7A JSR $7A4E C1/7B09: 90 07 BCC $7B12 C1/7B0B: A5 36 LDA $36 C1/7B0D: 9D 0F 89 STA $890F,X C1/7B10: 80 09 BRA $7B1B C1/7B12: BD 0F 89 LDA $890F,X C1/7B15: C5 36 CMP $36 C1/7B17: F0 02 BEQ $7B1B C1/7B19: E6 94 INC $94 C1/7B1B: A5 05 LDA $05 C1/7B1D: 29 04 AND #$04 C1/7B1F: F0 1F BEQ $7B40 C1/7B21: BD 0F 89 LDA $890F,X C1/7B24: 85 36 STA $36 C1/7B26: A9 03 LDA #$03 C1/7B28: 9D 0F 89 STA $890F,X C1/7B2B: 20 4E 7A JSR $7A4E C1/7B2E: 90 07 BCC $7B37 C1/7B30: A5 36 LDA $36 C1/7B32: 9D 0F 89 STA $890F,X C1/7B35: 80 09 BRA $7B40 C1/7B37: BD 0F 89 LDA $890F,X C1/7B3A: C5 36 CMP $36 C1/7B3C: F0 02 BEQ $7B40 C1/7B3E: E6 94 INC $94 C1/7B40: A5 05 LDA $05 C1/7B42: 29 02 AND #$02 C1/7B44: F0 1F BEQ $7B65 C1/7B46: BD 0F 89 LDA $890F,X C1/7B49: 85 36 STA $36 C1/7B4B: A9 01 LDA #$01 C1/7B4D: 9D 0F 89 STA $890F,X C1/7B50: 20 4E 7A JSR $7A4E C1/7B53: 90 07 BCC $7B5C C1/7B55: A5 36 LDA $36 C1/7B57: 9D 0F 89 STA $890F,X C1/7B5A: 80 09 BRA $7B65 C1/7B5C: BD 0F 89 LDA $890F,X C1/7B5F: C5 36 CMP $36 C1/7B61: F0 02 BEQ $7B65 C1/7B63: E6 94 INC $94 C1/7B65: A5 05 LDA $05 C1/7B67: 29 01 AND #$01 C1/7B69: F0 1F BEQ $7B8A C1/7B6B: BD 0F 89 LDA $890F,X C1/7B6E: 85 36 STA $36 C1/7B70: A9 02 LDA #$02 C1/7B72: 9D 0F 89 STA $890F,X C1/7B75: 20 4E 7A JSR $7A4E C1/7B78: 90 07 BCC $7B81 C1/7B7A: A5 36 LDA $36 C1/7B7C: 9D 0F 89 STA $890F,X C1/7B7F: 80 09 BRA $7B8A C1/7B81: BD 0F 89 LDA $890F,X C1/7B84: C5 36 CMP $36 C1/7B86: F0 02 BEQ $7B8A C1/7B88: E6 94 INC $94 C1/7B8A: A5 04 LDA $04 C1/7B8C: 29 30 AND #$30 C1/7B8E: C9 20 CMP #$20 C1/7B90: D0 08 BNE $7B9A C1/7B92: E6 94 INC $94 C1/7B94: 20 A9 7C JSR $7CA9 C1/7B97: 4C 31 56 JMP $5631 C1/7B9A: C9 10 CMP #$10 C1/7B9C: D0 08 BNE $7BA6 C1/7B9E: E6 94 INC $94 C1/7BA0: 20 A9 7C JSR $7CA9 C1/7BA3: 4C 3B 56 JMP $563B C1/7BA6: A5 04 LDA $04 C1/7BA8: 10 08 BPL $7BB2 C1/7BAA: E6 96 INC $96 C1/7BAC: EE 41 2F INC $2F41 ; stop battle time C1/7BAF: 4C C8 7C JMP $7CC8 C1/7BB2: AE CA 62 LDX $62CA C1/7BB5: BD 0F 89 LDA $890F,X C1/7BB8: 0A ASL C1/7BB9: AA TAX C1/7BBA: BF 46 7A C1 LDA $C17A46,X C1/7BBE: 8D E4 88 STA $88E4 C1/7BC1: BF 47 7A C1 LDA $C17A47,X C1/7BC5: 8D E5 88 STA $88E5 C1/7BC8: A9 01 LDA #$01 C1/7BCA: 8D E3 88 STA $88E3 C1/7BCD: 60 RTS C1/7BCE: AE CA 62 LDX $62CA C1/7BD1: BF 5B 4B C1 LDA $C14B5B,X C1/7BD5: A8 TAY C1/7BD6: 20 4E 7A JSR $7A4E C1/7BD9: B0 18 BCS $7BF3 C1/7BDB: A5 05 LDA $05 C1/7BDD: 29 0C AND #$0C C1/7BDF: F0 1A BEQ $7BFB C1/7BE1: E6 94 INC $94 C1/7BE3: A5 05 LDA $05 C1/7BE5: 29 08 AND #$08 C1/7BE7: F0 0A BEQ $7BF3 C1/7BE9: DE 0F 89 DEC $890F,X C1/7BEC: 20 4E 7A JSR $7A4E C1/7BEF: B0 F8 BCS $7BE9 C1/7BF1: 80 08 BRA $7BFB C1/7BF3: FE 0F 89 INC $890F,X C1/7BF6: 20 4E 7A JSR $7A4E C1/7BF9: B0 F8 BCS $7BF3 C1/7BFB: A5 04 LDA $04 C1/7BFD: 10 08 BPL $7C07 C1/7BFF: E6 96 INC $96 C1/7C01: EE 41 2F INC $2F41 ; stop battle time C1/7C04: 4C C8 7C JMP $7CC8 C1/7C07: A5 05 LDA $05 C1/7C09: 29 0F AND #$0F C1/7C0B: C9 02 CMP #$02 C1/7C0D: D0 08 BNE $7C17 C1/7C0F: E6 94 INC $94 C1/7C11: 20 A9 7C JSR $7CA9 C1/7C14: 4C 31 56 JMP $5631 C1/7C17: C9 01 CMP #$01 C1/7C19: D0 08 BNE $7C23 C1/7C1B: E6 94 INC $94 C1/7C1D: 20 A9 7C JSR $7CA9 C1/7C20: 4C 3B 56 JMP $563B C1/7C23: AE CA 62 LDX $62CA C1/7C26: BD 0F 89 LDA $890F,X C1/7C29: 0A ASL C1/7C2A: AA TAX C1/7C2B: BF 3E 7A C1 LDA $C17A3E,X C1/7C2F: 8D E4 88 STA $88E4 C1/7C32: BF 3F 7A C1 LDA $C17A3F,X C1/7C36: 8D E5 88 STA $88E5 C1/7C39: A9 01 LDA #$01 C1/7C3B: 8D E3 88 STA $88E3 C1/7C3E: 60 RTS C1/7C3F: AE CA 62 LDX $62CA C1/7C42: BF 5B 4B C1 LDA $C14B5B,X C1/7C46: A8 TAY C1/7C47: 20 70 7A JSR $7A70 C1/7C4A: B0 18 BCS $7C64 C1/7C4C: A5 05 LDA $05 C1/7C4E: 29 0C AND #$0C C1/7C50: F0 1A BEQ $7C6C C1/7C52: E6 94 INC $94 C1/7C54: A5 05 LDA $05 C1/7C56: 29 08 AND #$08 C1/7C58: F0 0A BEQ $7C64 C1/7C5A: DE 0F 89 DEC $890F,X C1/7C5D: 20 70 7A JSR $7A70 C1/7C60: B0 F8 BCS $7C5A C1/7C62: 80 08 BRA $7C6C C1/7C64: FE 0F 89 INC $890F,X C1/7C67: 20 70 7A JSR $7A70 C1/7C6A: B0 F8 BCS $7C64 C1/7C6C: A5 04 LDA $04 C1/7C6E: 10 1C BPL $7C8C C1/7C70: E6 96 INC $96 C1/7C72: 20 AB 84 JSR $84AB C1/7C75: 20 A9 7C JSR $7CA9 C1/7C78: BD 60 20 LDA $2060,X C1/7C7B: 8D 84 7A STA $7A84 C1/7C7E: A9 0E LDA #$0E C1/7C80: 99 AF 2B STA $2BAF,Y C1/7C83: BD 5E 20 LDA $205E,X C1/7C86: 8D 85 7A STA $7A85 C1/7C89: 4C 95 77 JMP $7795 C1/7C8C: AE CA 62 LDX $62CA C1/7C8F: BD 0F 89 LDA $890F,X C1/7C92: 0A ASL C1/7C93: AA TAX C1/7C94: BF 36 7A C1 LDA $C17A36,X C1/7C98: 8D E4 88 STA $88E4 C1/7C9B: BF 37 7A C1 LDA $C17A37,X C1/7C9F: 8D E5 88 STA $88E5 C1/7CA2: A9 01 LDA #$01 C1/7CA4: 8D E3 88 STA $88E3 C1/7CA7: 60 RTS C1/7CA8: 60 RTS ; [ ] init_buf_input: C1/7CA9: 20 56 6D JSR $6D56 C1/7CAC: A9 FF LDA #$FF C1/7CAE: 8D 85 7A STA $7A85 C1/7CB1: 99 AF 2B STA $2BAF,Y C1/7CB4: 99 B0 2B STA $2BB0,Y C1/7CB7: 99 B3 2B STA $2BB3,Y C1/7CBA: 7B TDC C1/7CBB: 99 B1 2B STA $2BB1,Y C1/7CBE: 99 B2 2B STA $2BB2,Y C1/7CC1: 99 B4 2B STA $2BB4,Y C1/7CC4: 99 B5 2B STA $2BB5,Y C1/7CC7: 60 RTS ; [ ] command_jmp_set: C1/7CC8: 20 AB 84 JSR $84AB C1/7CCB: 20 A9 7C JSR $7CA9 C1/7CCE: BD 30 20 LDA $2030,X C1/7CD1: 8D 84 7A STA $7A84 C1/7CD4: BD 2E 20 LDA $202E,X C1/7CD7: 99 AF 2B STA $2BAF,Y C1/7CDA: 29 7F AND #$7F C1/7CDC: 0A ASL C1/7CDD: AA TAX C1/7CDE: 7C E9 7C JMP ($7CE9,X) C1/7CE1: A9 01 LDA #$01 C1/7CE3: 8D E8 7A STA $7AE8 C1/7CE6: 4C A0 57 JMP $57A0 C1/7CE9: .DW $7792, $5769, $57A0, $7795, $7795, $7795, $7795, $561B C1/7CF9: .DW $5875, $58B1, $776B, $7795, $58ED, $7795, $7795, $59AE C1/7D09: .DW $5927, $7795, $7795, $5958, $5631, $563B, $7795, $7CE1 C1/7D19: .DW $7795, $7795, $7795, $7795, $7795, $5983 ; [ Battle Menu Cursor State $37: SwdTech ] key_ken: C1/7D25: 9C 41 2F STZ $2F41 ; start battle time C1/7D28: 9C E3 88 STZ $88E3 C1/7D2B: AD CB 7B LDA $7BCB C1/7D2E: F0 05 BEQ $7D35 ; branch if menu is not closing C1/7D30: A9 36 LDA #$36 ; menu cursor state $36 (close swdtech menu) C1/7D32: 8D C2 7B STA $7BC2 C1/7D35: A5 04 LDA $04 C1/7D37: 10 1D BPL $7D56 ; branch if A button is not pressed C1/7D39: E6 96 INC $96 ; play cursor sound effect (select) C1/7D3B: 20 56 6D JSR $6D56 ; get pointer to current character slot data (battle menu) C1/7D3E: AD 82 7B LDA $7B82 ; swdtech bar counter / 32 C1/7D41: 4A LSR C1/7D42: 4A LSR C1/7D43: 4A LSR C1/7D44: 4A LSR C1/7D45: 4A LSR C1/7D46: 99 B0 2B STA $2BB0,Y ; attack index C1/7D49: AD CA 62 LDA $62CA C1/7D4C: 99 AE 2B STA $2BAE,Y ; character slot C1/7D4F: EE 80 7B INC $7B80 ; increment character slot C1/7D52: EE CB 7B INC $7BCB ; close menu C1/7D55: 60 RTS C1/7D56: A5 09 LDA $09 C1/7D58: 10 05 BPL $7D5F ; branch if B button is not pressed C1/7D5A: E6 96 INC $96 ; play cursor sound effect (select) C1/7D5C: 4C 28 56 JMP $5628 ; close swdtech menu C1/7D5F: AE CA 62 LDX $62CA ; active character C1/7D62: DA PHX C1/7D63: A9 07 LDA #$07 C1/7D65: 38 SEC C1/7D66: ED 20 20 SBC $2020 ; number of swdtechs known - 1 C1/7D69: AA TAX C1/7D6A: 7B TDC C1/7D6B: A8 TAY C1/7D6C: BF 60 A8 C2 LDA $C2A860,X ; palette data for swdtech menu C1/7D70: 99 DA 5D STA $5DDA,Y C1/7D73: E8 INX C1/7D74: C8 INY C1/7D75: C8 INY C1/7D76: C0 10 00 CPY #$0010 C1/7D79: D0 F1 BNE $7D6C C1/7D7B: FA PLX C1/7D7C: 7B TDC C1/7D7D: A8 TAY C1/7D7E: AD 20 20 LDA $2020 C1/7D81: 1A INC C1/7D82: 85 36 STA $36 C1/7D84: A5 0E LDA $0E ; frame counter C1/7D86: 29 03 AND #$03 C1/7D88: D0 03 BNE $7D8D ; branch every 4 frames C1/7D8A: EE 82 7B INC $7B82 ; increment swdtech bar counter C1/7D8D: AD 82 7B LDA $7B82 C1/7D90: 4A LSR C1/7D91: 4A LSR C1/7D92: 4A LSR C1/7D93: 4A LSR C1/7D94: 4A LSR C1/7D95: C5 36 CMP $36 C1/7D97: D0 04 BNE $7D9D ; branch if it hasn't reached the max value C1/7D99: 7B TDC C1/7D9A: 8D 82 7B STA $7B82 ; reset the swdtech bar counter C1/7D9D: 1A INC C1/7D9E: 85 36 STA $36 C1/7DA0: 7B TDC C1/7DA1: AA TAX C1/7DA2: A9 29 LDA #$29 C1/7DA4: 9D DA 5D STA $5DDA,X C1/7DA7: E8 INX C1/7DA8: E8 INX C1/7DA9: C6 36 DEC $36 C1/7DAB: D0 F7 BNE $7DA4 C1/7DAD: AD 82 7B LDA $7B82 C1/7DB0: 10 0D BPL $7DBF C1/7DB2: A9 F8 LDA #$F8 C1/7DB4: 20 ED 7D JSR $7DED C1/7DB7: AD 82 7B LDA $7B82 C1/7DBA: 20 CE 7D JSR $7DCE C1/7DBD: 80 0B BRA $7DCA C1/7DBF: AD 82 7B LDA $7B82 C1/7DC2: 20 CE 7D JSR $7DCE C1/7DC5: A9 F0 LDA #$F0 C1/7DC7: 20 ED 7D JSR $7DED C1/7DCA: EE 81 7B INC $7B81 C1/7DCD: 60 RTS ; [ Draw SwdTech Bar (section that is filling) ] sword_tbl_set: C1/7DCE: 29 7F AND #$7F C1/7DD0: 4A LSR C1/7DD1: 4A LSR C1/7DD2: 0A ASL C1/7DD3: 0A ASL C1/7DD4: AA TAX C1/7DD5: A9 04 LDA #$04 C1/7DD7: 85 36 STA $36 C1/7DD9: BF AC 68 C1 LDA $C168AC,X ; gauge text C1/7DDD: 99 73 7A STA $7A73,Y C1/7DE0: A9 35 LDA #$35 C1/7DE2: 99 74 7A STA $7A74,Y C1/7DE5: E8 INX C1/7DE6: C8 INY C1/7DE7: C8 INY C1/7DE8: C6 36 DEC $36 C1/7DEA: D0 ED BNE $7DD9 C1/7DEC: 60 RTS ; [ Draw SwdTech Bar (empty or full sections) ] ; A: value to repeat 4 times sword_data_set: C1/7DED: 85 36 STA $36 C1/7DEF: A9 04 LDA #$04 C1/7DF1: 85 38 STA $38 C1/7DF3: A5 36 LDA $36 C1/7DF5: 99 73 7A STA $7A73,Y C1/7DF8: A9 35 LDA #$35 C1/7DFA: 99 74 7A STA $7A74,Y C1/7DFD: E8 INX C1/7DFE: C8 INY C1/7DFF: C8 INY C1/7E00: C6 38 DEC $38 C1/7E02: D0 EF BNE $7DF3 C1/7E04: 60 RTS ; [ Battle Menu Cursor State $27: Def. ] key_def: C1/7E05: 9C E3 88 STZ $88E3 C1/7E08: AD CB 7B LDA $7BCB C1/7E0B: F0 06 BEQ $7E13 C1/7E0D: A9 26 LDA #$26 C1/7E0F: 8D C2 7B STA $7BC2 C1/7E12: 60 RTS C1/7E13: A5 04 LDA $04 C1/7E15: 10 17 BPL $7E2E ; branch if A button is not pressed C1/7E17: E6 94 INC $94 ; play cursor sound effect (select) C1/7E19: 20 56 6D JSR $6D56 ; get pointer to current character slot data (battle menu) C1/7E1C: A9 15 LDA #$15 ; command $15 (Def.) C1/7E1E: 99 AF 2B STA $2BAF,Y C1/7E21: AD CA 62 LDA $62CA ; character slot C1/7E24: 99 AE 2B STA $2BAE,Y C1/7E27: EE 80 7B INC $7B80 ; increment character slot C1/7E2A: EE CB 7B INC $7BCB ; close menu C1/7E2D: 60 RTS C1/7E2E: AD 2E 2F LDA $2F2E C1/7E31: F0 0A BEQ $7E3D C1/7E33: A5 06 LDA $06 C1/7E35: 29 30 AND #$30 C1/7E37: C9 10 CMP #$10 C1/7E39: D0 06 BNE $7E41 C1/7E3B: 80 0D BRA $7E4A C1/7E3D: A5 09 LDA $09 C1/7E3F: 10 05 BPL $7E46 ; branch if B button is not pressed C1/7E41: E6 94 INC $94 C1/7E43: 4C 73 56 JMP $5673 C1/7E46: C9 02 CMP #$02 C1/7E48: F0 F7 BEQ $7E41 C1/7E4A: AE CA 62 LDX $62CA ; character slot C1/7E4D: BD 0F 89 LDA $890F,X ; cursor position C1/7E50: 0A ASL C1/7E51: AA TAX C1/7E52: AD 2E 2F LDA $2F2E C1/7E55: F0 0C BEQ $7E63 C1/7E57: A9 70 LDA #$70 C1/7E59: 8D E4 88 STA $88E4 C1/7E5C: A9 A0 LDA #$A0 C1/7E5E: 8D E5 88 STA $88E5 C1/7E61: 80 0C BRA $7E6F C1/7E63: A9 38 LDA #$38 C1/7E65: 8D E4 88 STA $88E4 ; main cursor x position C1/7E68: BF 3F 7A C1 LDA $C17A3F,X C1/7E6C: 8D E5 88 STA $88E5 ; main cursor y position C1/7E6F: EE E3 88 INC $88E3 ; activate main cursor C1/7E72: 60 RTS ; [ Battle Menu Cursor State $24: Row ] key_chg: C1/7E73: 9C E3 88 STZ $88E3 C1/7E76: AD CB 7B LDA $7BCB C1/7E79: F0 06 BEQ $7E81 C1/7E7B: A9 23 LDA #$23 C1/7E7D: 8D C2 7B STA $7BC2 C1/7E80: 60 RTS C1/7E81: A5 04 LDA $04 C1/7E83: 10 17 BPL $7E9C C1/7E85: E6 94 INC $94 C1/7E87: 20 56 6D JSR $6D56 ; get pointer to current character slot data (battle menu) C1/7E8A: A9 14 LDA #$14 ; command $14 (row) C1/7E8C: 99 AF 2B STA $2BAF,Y C1/7E8F: AD CA 62 LDA $62CA C1/7E92: 99 AE 2B STA $2BAE,Y C1/7E95: EE 80 7B INC $7B80 C1/7E98: EE CB 7B INC $7BCB C1/7E9B: 60 RTS C1/7E9C: AD 2E 2F LDA $2F2E C1/7E9F: F0 0A BEQ $7EAB C1/7EA1: A5 06 LDA $06 C1/7EA3: 29 30 AND #$30 C1/7EA5: C9 20 CMP #$20 C1/7EA7: D0 06 BNE $7EAF C1/7EA9: 80 0D BRA $7EB8 C1/7EAB: A5 09 LDA $09 C1/7EAD: 10 05 BPL $7EB4 C1/7EAF: E6 94 INC $94 C1/7EB1: 4C 7C 56 JMP $567C C1/7EB4: C9 01 CMP #$01 C1/7EB6: F0 F7 BEQ $7EAF C1/7EB8: AE CA 62 LDX $62CA C1/7EBB: BD 0F 89 LDA $890F,X C1/7EBE: 0A ASL C1/7EBF: AA TAX C1/7EC0: AD 2E 2F LDA $2F2E C1/7EC3: F0 0C BEQ $7ED1 C1/7EC5: A9 10 LDA #$10 C1/7EC7: 8D E4 88 STA $88E4 C1/7ECA: A9 A0 LDA #$A0 C1/7ECC: 8D E5 88 STA $88E5 C1/7ECF: 80 0C BRA $7EDD C1/7ED1: A9 08 LDA #$08 C1/7ED3: 8D E4 88 STA $88E4 C1/7ED6: BF 3F 7A C1 LDA $C17A3F,X C1/7EDA: 8D E5 88 STA $88E5 C1/7EDD: EE E3 88 INC $88E3 C1/7EE0: 60 RTS throt_probability_tbl: C1/7EE1: .DB $1F, $03, $01, $01, $00, $00 get_throt_no: C1/7EE7: 4A LSR C1/7EE8: 4A LSR C1/7EE9: 4A LSR C1/7EEA: 4A LSR C1/7EEB: 0A ASL C1/7EEC: AA TAX C1/7EED: BF 00 A8 C2 LDA $C2A800,X C1/7EF1: 60 RTS get_throt_no2: C1/7EF2: 4A LSR C1/7EF3: 4A LSR C1/7EF4: 4A LSR C1/7EF5: 4A LSR C1/7EF6: 0A ASL C1/7EF7: AA TAX C1/7EF8: BF 20 A8 C2 LDA $C2A820,X C1/7EFC: 60 RTS get_throt_no3: C1/7EFD: 4A LSR C1/7EFE: 4A LSR C1/7EFF: 4A LSR C1/7F00: 4A LSR C1/7F01: 0A ASL C1/7F02: AA TAX C1/7F03: BF 40 A8 C2 LDA $C2A840,X C1/7F07: 60 RTS ; [ Battle Menu Cursor State $08: Slot ] key_throt: C1/7F08: 9C E3 88 STZ $88E3 C1/7F0B: AD CB 7B LDA $7BCB C1/7F0E: F0 06 BEQ $7F16 C1/7F10: A9 07 LDA #$07 C1/7F12: 8D C2 7B STA $7BC2 C1/7F15: 60 RTS C1/7F16: A5 04 LDA $04 C1/7F18: 10 53 BPL $7F6D ; branch if A button is not pressed C1/7F1A: E6 96 INC $96 ; play cursor sound effect (select) C1/7F1C: AD 92 7B LDA $7B92 C1/7F1F: D0 19 BNE $7F3A C1/7F21: AD 49 2F LDA $2F49 C1/7F24: 29 04 AND #$04 C1/7F26: F0 07 BEQ $7F2F ; branch if joker doom is enabled C1/7F28: 20 5B 18 JSR $185B ; update random number C1/7F2B: 09 3C ORA #$3C C1/7F2D: 80 03 BRA $7F32 C1/7F2F: 20 5B 18 JSR $185B ; update random number C1/7F32: 8D 79 61 STA $6179 C1/7F35: EE 92 7B INC $7B92 C1/7F38: 80 33 BRA $7F6D C1/7F3A: AD 93 7B LDA $7B93 C1/7F3D: D0 30 BNE $7F6F C1/7F3F: AD 8F 7B LDA $7B8F C1/7F42: D0 03 BNE $7F47 C1/7F44: 4C EC 7F JMP $7FEC C1/7F47: AD 8C 7B LDA $7B8C C1/7F4A: 20 E7 7E JSR $7EE7 C1/7F4D: 8D 7B 61 STA $617B C1/7F50: AA TAX C1/7F51: BF E1 7E C1 LDA $C17EE1,X C1/7F55: 85 36 STA $36 C1/7F57: AD 79 61 LDA $6179 C1/7F5A: 25 36 AND $36 C1/7F5C: D0 07 BNE $7F65 C1/7F5E: A9 04 LDA #$04 C1/7F60: 8D 7D 61 STA $617D C1/7F63: 80 05 BRA $7F6A C1/7F65: A9 FF LDA #$FF C1/7F67: 8D 7B 61 STA $617B C1/7F6A: EE 93 7B INC $7B93 C1/7F6D: 80 7D BRA $7FEC C1/7F6F: AD 94 7B LDA $7B94 C1/7F72: D0 42 BNE $7FB6 C1/7F74: AD 90 7B LDA $7B90 C1/7F77: F0 73 BEQ $7FEC C1/7F79: AD 8C 7B LDA $7B8C C1/7F7C: 20 E7 7E JSR $7EE7 C1/7F7F: 85 38 STA $38 C1/7F81: AD 8D 7B LDA $7B8D C1/7F84: 20 F2 7E JSR $7EF2 C1/7F87: 85 3A STA $3A C1/7F89: C5 38 CMP $38 C1/7F8B: D0 1F BNE $7FAC C1/7F8D: A5 38 LDA $38 C1/7F8F: AA TAX C1/7F90: BF E1 7E C1 LDA $C17EE1,X C1/7F94: 85 36 STA $36 C1/7F96: AD 79 61 LDA $6179 C1/7F99: 25 36 AND $36 C1/7F9B: D0 09 BNE $7FA6 C1/7F9D: A9 04 LDA #$04 C1/7F9F: 8D 7D 61 STA $617D C1/7FA2: A5 3A LDA $3A C1/7FA4: 80 08 BRA $7FAE C1/7FA6: A5 3A LDA $3A C1/7FA8: 09 80 ORA #$80 C1/7FAA: 80 02 BRA $7FAE C1/7FAC: A9 FF LDA #$FF C1/7FAE: 8D 7C 61 STA $617C C1/7FB1: EE 94 7B INC $7B94 C1/7FB4: 80 36 BRA $7FEC C1/7FB6: AD 91 7B LDA $7B91 C1/7FB9: F0 31 BEQ $7FEC C1/7FBB: AD 8C 7B LDA $7B8C C1/7FBE: 20 E7 7E JSR $7EE7 C1/7FC1: 85 36 STA $36 C1/7FC3: AD 8D 7B LDA $7B8D C1/7FC6: 20 F2 7E JSR $7EF2 C1/7FC9: 85 37 STA $37 C1/7FCB: AD 8E 7B LDA $7B8E C1/7FCE: 20 FD 7E JSR $7EFD C1/7FD1: 85 38 STA $38 C1/7FD3: 22 A3 B4 C2 JSL $C2B4A3 C1/7FD7: 48 PHA C1/7FD8: 20 56 6D JSR $6D56 ; get pointer to current character slot data (battle menu) C1/7FDB: 68 PLA C1/7FDC: 99 B0 2B STA $2BB0,Y ; attack C1/7FDF: AD CA 62 LDA $62CA C1/7FE2: 99 AE 2B STA $2BAE,Y ; character slot C1/7FE5: EE 80 7B INC $7B80 ; increment character slot C1/7FE8: EE CB 7B INC $7BCB ; close menu C1/7FEB: 60 RTS C1/7FEC: A5 09 LDA $09 C1/7FEE: 10 10 BPL $8000 ; branch if B button is not pressed C1/7FF0: AD 92 7B LDA $7B92 C1/7FF3: 0D 93 7B ORA $7B93 C1/7FF6: 0D 94 7B ORA $7B94 C1/7FF9: D0 05 BNE $8000 C1/7FFB: E6 96 INC $96 C1/7FFD: 4C A0 56 JMP $56A0 C1/8000: AD 8C 7B LDA $7B8C C1/8003: 18 CLC C1/8004: 69 4C ADC #$4C C1/8006: 8D FD 5F STA $5FFD C1/8009: 8D FF 5F STA $5FFF C1/800C: 8D 01 60 STA $6001 C1/800F: 8D 03 60 STA $6003 C1/8012: AD 8D 7B LDA $7B8D C1/8015: 18 CLC C1/8016: 69 4C ADC #$4C C1/8018: 8D 07 60 STA $6007 C1/801B: 8D 09 60 STA $6009 C1/801E: 8D 0B 60 STA $600B C1/8021: 8D 0D 60 STA $600D C1/8024: AD 8E 7B LDA $7B8E C1/8027: 18 CLC C1/8028: 69 4C ADC #$4C C1/802A: 8D 11 60 STA $6011 C1/802D: 8D 13 60 STA $6013 C1/8030: 8D 15 60 STA $6015 C1/8033: 8D 17 60 STA $6017 C1/8036: AD 8F 7B LDA $7B8F C1/8039: D0 18 BNE $8053 C1/803B: AD 8C 7B LDA $7B8C C1/803E: 38 SEC C1/803F: E9 04 SBC #$04 C1/8041: 8D 8C 7B STA $7B8C C1/8044: AD 92 7B LDA $7B92 C1/8047: F0 0A BEQ $8053 C1/8049: AD 8C 7B LDA $7B8C C1/804C: 29 0F AND #$0F C1/804E: D0 03 BNE $8053 C1/8050: EE 8F 7B INC $7B8F C1/8053: AD 90 7B LDA $7B90 C1/8056: D0 34 BNE $808C C1/8058: AD 8D 7B LDA $7B8D C1/805B: 38 SEC C1/805C: E9 04 SBC #$04 C1/805E: 8D 8D 7B STA $7B8D C1/8061: AD 93 7B LDA $7B93 C1/8064: F0 26 BEQ $808C C1/8066: AD 8D 7B LDA $7B8D C1/8069: 29 0F AND #$0F C1/806B: D0 1F BNE $808C C1/806D: AD 7B 61 LDA $617B C1/8070: C9 FF CMP #$FF C1/8072: F0 15 BEQ $8089 C1/8074: AD 8D 7B LDA $7B8D C1/8077: 20 F2 7E JSR $7EF2 C1/807A: CD 7B 61 CMP $617B C1/807D: F0 0A BEQ $8089 C1/807F: AD 7D 61 LDA $617D C1/8082: F0 05 BEQ $8089 C1/8084: CE 7D 61 DEC $617D C1/8087: 80 03 BRA $808C C1/8089: EE 90 7B INC $7B90 C1/808C: AD 91 7B LDA $7B91 C1/808F: D0 49 BNE $80DA C1/8091: AD 8E 7B LDA $7B8E C1/8094: 38 SEC C1/8095: E9 04 SBC #$04 C1/8097: 8D 8E 7B STA $7B8E C1/809A: AD 94 7B LDA $7B94 C1/809D: F0 3B BEQ $80DA C1/809F: AD 8E 7B LDA $7B8E C1/80A2: 29 0F AND #$0F C1/80A4: D0 34 BNE $80DA C1/80A6: AD 7C 61 LDA $617C C1/80A9: C9 FF CMP #$FF C1/80AB: F0 2A BEQ $80D7 C1/80AD: 29 80 AND #$80 C1/80AF: D0 15 BNE $80C6 C1/80B1: AD 8E 7B LDA $7B8E C1/80B4: 20 FD 7E JSR $7EFD C1/80B7: CD 7C 61 CMP $617C C1/80BA: F0 1B BEQ $80D7 C1/80BC: AD 7D 61 LDA $617D C1/80BF: F0 16 BEQ $80D7 C1/80C1: CE 7D 61 DEC $617D C1/80C4: 80 14 BRA $80DA C1/80C6: AD 8E 7B LDA $7B8E C1/80C9: 20 FD 7E JSR $7EFD C1/80CC: 85 36 STA $36 C1/80CE: AD 7C 61 LDA $617C C1/80D1: 29 7F AND #$7F C1/80D3: C5 36 CMP $36 C1/80D5: F0 03 BEQ $80DA C1/80D7: EE 91 7B INC $7B91 C1/80DA: 60 RTS ; [ ] get_scr_key_info: C1/80DB: A6 36 LDX $36 C1/80DD: 86 3A STX $3A C1/80DF: 64 3C STZ $3C C1/80E1: A5 05 LDA $05 C1/80E3: 29 0F AND #$0F C1/80E5: F0 5D BEQ $8144 ; return if no direction buttons pressed ; up C1/80E7: C9 08 CMP #$08 C1/80E9: D0 09 BNE $80F4 C1/80EB: A5 37 LDA $37 C1/80ED: F0 4F BEQ $813E C1/80EF: E6 94 INC $94 C1/80F1: C6 37 DEC $37 C1/80F3: 60 RTS ; down C1/80F4: C9 04 CMP #$04 C1/80F6: D0 0B BNE $8103 C1/80F8: A5 37 LDA $37 C1/80FA: C9 03 CMP #$03 C1/80FC: F0 43 BEQ $8141 C1/80FE: E6 94 INC $94 C1/8100: E6 37 INC $37 C1/8102: 60 RTS ; left C1/8103: C9 02 CMP #$02 C1/8105: D0 16 BNE $811D C1/8107: A5 36 LDA $36 C1/8109: D0 0D BNE $8118 C1/810B: A5 39 LDA $39 C1/810D: 85 36 STA $36 C1/810F: A5 37 LDA $37 C1/8111: F0 26 BEQ $8139 C1/8113: E6 94 INC $94 C1/8115: C6 37 DEC $37 C1/8117: 60 RTS C1/8118: E6 94 INC $94 C1/811A: C6 36 DEC $36 C1/811C: 60 RTS ; right C1/811D: C9 01 CMP #$01 C1/811F: D0 23 BNE $8144 C1/8121: A5 36 LDA $36 C1/8123: C5 39 CMP $39 C1/8125: D0 0D BNE $8134 C1/8127: 64 36 STZ $36 C1/8129: A5 37 LDA $37 C1/812B: C9 03 CMP #$03 C1/812D: F0 12 BEQ $8141 C1/812F: E6 94 INC $94 C1/8131: E6 37 INC $37 C1/8133: 60 RTS C1/8134: E6 94 INC $94 C1/8136: E6 36 INC $36 C1/8138: 60 RTS C1/8139: A9 BF LDA #$BF C1/813B: 85 3C STA $3C C1/813D: 60 RTS ; scroll up C1/813E: C6 3C DEC $3C C1/8140: 60 RTS ; scroll down C1/8141: E6 3C INC $3C C1/8143: 60 RTS C1/8144: 60 RTS ; [ Battle Menu Cursor State $0E: Spell Select ] key_magic: C1/8145: 9C EF 88 STZ $88EF C1/8148: 9C E3 88 STZ $88E3 C1/814B: AD CB 7B LDA $7BCB C1/814E: F0 06 BEQ $8156 C1/8150: A9 14 LDA #$14 C1/8152: 8D C2 7B STA $7BC2 C1/8155: 60 RTS C1/8156: AC CA 62 LDY $62CA C1/8159: B9 17 89 LDA $8917,Y C1/815C: 85 36 STA $36 C1/815E: B9 1B 89 LDA $891B,Y C1/8161: 85 37 STA $37 C1/8163: B9 13 89 LDA $8913,Y C1/8166: 85 38 STA $38 C1/8168: A9 01 LDA #$01 C1/816A: 85 39 STA $39 ; 2 columns C1/816C: 20 DB 80 JSR $80DB C1/816F: A5 3C LDA $3C C1/8171: F0 31 BEQ $81A4 C1/8173: 30 12 BMI $8187 C1/8175: B9 13 89 LDA $8913,Y C1/8178: C9 17 CMP #$17 C1/817A: F0 32 BEQ $81AE C1/817C: 1A INC C1/817D: 99 13 89 STA $8913,Y C1/8180: E6 94 INC $94 C1/8182: 20 28 82 JSR $8228 C1/8185: 80 1D BRA $81A4 C1/8187: B9 13 89 LDA $8913,Y C1/818A: D0 0F BNE $819B C1/818C: E6 94 INC $94 C1/818E: AD E8 7A LDA $7AE8 C1/8191: D0 11 BNE $81A4 C1/8193: 20 9B 82 JSR $829B C1/8196: B0 0C BCS $81A4 C1/8198: 4C 01 5A JMP $5A01 C1/819B: 3A DEC C1/819C: 99 13 89 STA $8913,Y C1/819F: E6 94 INC $94 C1/81A1: 20 46 82 JSR $8246 C1/81A4: A5 36 LDA $36 C1/81A6: 99 17 89 STA $8917,Y C1/81A9: A5 37 LDA $37 C1/81AB: 99 1B 89 STA $891B,Y C1/81AE: A5 04 LDA $04 C1/81B0: 10 3B BPL $81ED ; branch if A button is not pressed C1/81B2: 20 14 84 JSR $8414 C1/81B5: BD 93 20 LDA $2093,X C1/81B8: 30 31 BMI $81EB C1/81BA: E6 96 INC $96 C1/81BC: 20 56 6D JSR $6D56 C1/81BF: AD E8 7A LDA $7AE8 C1/81C2: F0 04 BEQ $81C8 ; branch if x-magic is not enabled C1/81C4: A9 17 LDA #$17 ; command $17 (x-magic) C1/81C6: 80 02 BRA $81CA C1/81C8: A9 02 LDA #$02 ; command $02 (magic) C1/81CA: 99 AF 2B STA $2BAF,Y C1/81CD: 20 14 84 JSR $8414 C1/81D0: BD 92 20 LDA $2092,X C1/81D3: 8D 85 7A STA $7A85 C1/81D6: A9 01 LDA #$01 ; curative menu type 1 (spell) C1/81D8: 8D BA EC STA $ECBA C1/81DB: BD 94 20 LDA $2094,X C1/81DE: 8D 84 7A STA $7A84 C1/81E1: 29 40 AND #$40 C1/81E3: D0 03 BNE $81E8 C1/81E5: 4C B0 55 JMP $55B0 C1/81E8: 4C 95 77 JMP $7795 C1/81EB: E6 95 INC $95 ; play error sound effect C1/81ED: A5 09 LDA $09 C1/81EF: 10 05 BPL $81F6 ; branch if B button is not pressed C1/81F1: E6 96 INC $96 C1/81F3: 4C E9 56 JMP $56E9 C1/81F6: 20 14 84 JSR $8414 C1/81F9: BD 95 20 LDA $2095,X C1/81FC: 8D 78 61 STA $6178 C1/81FF: A9 17 LDA #$17 C1/8201: 85 36 STA $36 C1/8203: A2 90 01 LDX #$0190 C1/8206: 86 2E STX $2E C1/8208: B9 13 89 LDA $8913,Y C1/820B: 20 8F 89 JSR $898F C1/820E: B9 17 89 LDA $8917,Y C1/8211: AA TAX C1/8212: BF 80 82 C1 LDA $C18280,X C1/8216: 8D E4 88 STA $88E4 C1/8219: B9 1B 89 LDA $891B,Y C1/821C: AA TAX C1/821D: BF 8D 82 C1 LDA $C1828D,X C1/8221: 8D E5 88 STA $88E5 C1/8224: EE E3 88 INC $88E3 C1/8227: 60 RTS ; [ ] magic_one_scr_down: C1/8228: 18 CLC C1/8229: 69 03 ADC #$03 C1/822B: 20 B5 4D JSR $4DB5 C1/822E: A9 17 LDA #$17 C1/8230: 8D C2 7B STA $7BC2 C1/8233: 20 69 82 JSR $8269 C1/8236: AD FD 7A LDA $7AFD C1/8239: C9 04 CMP #$04 C1/823B: F0 03 BEQ $8240 C1/823D: 1A INC C1/823E: 80 01 BRA $8241 C1/8240: 7B TDC C1/8241: 8D FD 7A STA $7AFD C1/8244: 80 18 BRA $825E magic_one_scr_up: C1/8246: 20 B5 4D JSR $4DB5 C1/8249: A9 18 LDA #$18 C1/824B: 8D C2 7B STA $7BC2 C1/824E: 20 69 82 JSR $8269 C1/8251: AD FD 7A LDA $7AFD C1/8254: F0 03 BEQ $8259 C1/8256: 3A DEC C1/8257: 80 02 BRA $825B C1/8259: A9 04 LDA #$04 C1/825B: 8D FD 7A STA $7AFD magic_one_scr: C1/825E: A9 03 LDA #$03 C1/8260: 8D A8 7B STA $7BA8 C1/8263: A9 0E LDA #$0E C1/8265: 8D C3 7B STA $7BC3 C1/8268: 60 RTS ; [ ] set_scr_line_tfr_poi: C1/8269: AD FD 7A LDA $7AFD C1/826C: 0A ASL C1/826D: AA TAX C1/826E: BF 91 82 C1 LDA $C18291,X ; vram destination C1/8272: 8D AA 7B STA $7BAA C1/8275: BF 92 82 C1 LDA $C18292,X C1/8279: 8D AB 7B STA $7BAB C1/827C: EE A9 7B INC $7BA9 C1/827F: 60 RTS C1/8280: .DB $08, $50, $70 ; equip menu sprite x positions C1/8283: .DB $00,$78 C1/8285: .DB $00,$78 C1/8287: .DB $10,$80 C1/8289: .DB $10,$78 C1/828B: .DB $08,$58 C1/828D: .DB $A4,$B0,$BC,$C8 scr_line_vram_poi: C1/8291: .DW $7C00, $7C40, $7C80, $7CC0, $7D00 ; [ ] check_summon: C1/829B: AD CA 62 LDA $62CA ; character slot C1/829E: 0A ASL C1/829F: AA TAX C1/82A0: C2 20 REP #$20 C1/82A2: BF 5F 4B C1 LDA $C14B5F,X ; pointer to spell/lore list C1/82A6: AA TAX C1/82A7: 7B TDC C1/82A8: E2 20 SEP #$20 C1/82AA: BD 8F 20 LDA $208F,X ; equipped esper C1/82AD: 30 02 BMI $82B1 C1/82AF: 18 CLC C1/82B0: 60 RTS C1/82B1: 38 SEC C1/82B2: 60 RTS ; [ Battle Menu Cursor State $16: Esper Select ] key_summon: C1/82B3: 9C E3 88 STZ $88E3 C1/82B6: AD CB 7B LDA $7BCB C1/82B9: F0 06 BEQ $82C1 C1/82BB: A9 15 LDA #$15 C1/82BD: 8D C2 7B STA $7BC2 C1/82C0: 60 RTS C1/82C1: A5 05 LDA $05 C1/82C3: 29 05 AND #$05 C1/82C5: F0 0F BEQ $82D6 ; branch if down or right is not pressed C1/82C7: E6 94 INC $94 C1/82C9: 29 01 AND #$01 C1/82CB: F0 06 BEQ $82D3 ; if right was pressed, reset the cursor x position C1/82CD: AE CA 62 LDX $62CA C1/82D0: 9E 17 89 STZ $8917,X C1/82D3: 4C 1F 57 JMP $571F C1/82D6: A5 04 LDA $04 C1/82D8: 10 20 BPL $82FA ; branch if A button is pressed C1/82DA: 20 9B 82 JSR $829B C1/82DD: B0 19 BCS $82F8 C1/82DF: E6 96 INC $96 C1/82E1: 20 56 6D JSR $6D56 C1/82E4: A9 19 LDA #$19 ; command $19 (summon) C1/82E6: 99 AF 2B STA $2BAF,Y C1/82E9: BD 8E 20 LDA $208E,X C1/82EC: 8D 85 7A STA $7A85 C1/82EF: BD 90 20 LDA $2090,X C1/82F2: 8D 84 7A STA $7A84 C1/82F5: 4C 95 77 JMP $7795 C1/82F8: E6 95 INC $95 ; play cursor sound effect (select) C1/82FA: A9 38 LDA #$38 ; set main cursor position C1/82FC: 8D E4 88 STA $88E4 C1/82FF: A9 A8 LDA #$A8 C1/8301: 8D E5 88 STA $88E5 C1/8304: EE E3 88 INC $88E3 ; activate main cursor C1/8307: 60 RTS ; [ Battle Menu Cursor State $1B: Lore Select ] key_learning: C1/8308: 9C E3 88 STZ $88E3 C1/830B: 9C EF 88 STZ $88EF C1/830E: AD CB 7B LDA $7BCB C1/8311: F0 06 BEQ $8319 C1/8313: A9 1A LDA #$1A C1/8315: 8D C2 7B STA $7BC2 C1/8318: 60 RTS C1/8319: AC CA 62 LDY $62CA C1/831C: 64 36 STZ $36 C1/831E: B9 27 89 LDA $8927,Y C1/8321: 85 37 STA $37 C1/8323: B9 1F 89 LDA $891F,Y C1/8326: 85 38 STA $38 C1/8328: 64 39 STZ $39 ; 1 column C1/832A: 20 DB 80 JSR $80DB C1/832D: A5 3C LDA $3C C1/832F: F0 22 BEQ $8353 C1/8331: 30 12 BMI $8345 C1/8333: B9 1F 89 LDA $891F,Y C1/8336: C9 14 CMP #$14 C1/8338: F0 23 BEQ $835D C1/833A: 1A INC C1/833B: 99 1F 89 STA $891F,Y C1/833E: E6 94 INC $94 C1/8340: 20 B6 83 JSR $83B6 C1/8343: 80 0E BRA $8353 C1/8345: B9 1F 89 LDA $891F,Y C1/8348: F0 13 BEQ $835D C1/834A: 3A DEC C1/834B: 99 1F 89 STA $891F,Y C1/834E: E6 94 INC $94 C1/8350: 20 D4 83 JSR $83D4 C1/8353: A5 36 LDA $36 C1/8355: 99 23 89 STA $8923,Y C1/8358: A5 37 LDA $37 C1/835A: 99 27 89 STA $8927,Y C1/835D: A5 04 LDA $04 C1/835F: 10 1B BPL $837C C1/8361: 20 F7 83 JSR $83F7 C1/8364: BD 6B 21 LDA $216B,X C1/8367: 30 11 BMI $837A C1/8369: E6 94 INC $94 C1/836B: BD 6A 21 LDA $216A,X C1/836E: 8D 85 7A STA $7A85 C1/8371: BD 6C 21 LDA $216C,X C1/8374: 8D 84 7A STA $7A84 C1/8377: 4C 95 77 JMP $7795 C1/837A: E6 95 INC $95 C1/837C: A5 09 LDA $09 C1/837E: 10 06 BPL $8386 C1/8380: E6 96 INC $96 C1/8382: 20 FB 56 JSR $56FB C1/8385: 60 RTS C1/8386: 20 F7 83 JSR $83F7 C1/8389: BD 6D 21 LDA $216D,X C1/838C: 8D 78 61 STA $6178 C1/838F: A9 08 LDA #$08 C1/8391: 85 36 STA $36 C1/8393: A2 CD 01 LDX #$01CD C1/8396: 86 2E STX $2E C1/8398: B9 1F 89 LDA $891F,Y C1/839B: 20 8F 89 JSR $898F C1/839E: 7B TDC C1/839F: AA TAX C1/83A0: BF 8B 82 C1 LDA $C1828B,X C1/83A4: 8D E4 88 STA $88E4 C1/83A7: B9 27 89 LDA $8927,Y C1/83AA: AA TAX C1/83AB: BF 8D 82 C1 LDA $C1828D,X C1/83AF: 8D E5 88 STA $88E5 C1/83B2: EE E3 88 INC $88E3 C1/83B5: 60 RTS ; [ ] learning_one_scr_down: C1/83B6: 18 CLC C1/83B7: 69 03 ADC #$03 C1/83B9: 20 76 4D JSR $4D76 C1/83BC: A9 17 LDA #$17 C1/83BE: 8D C2 7B STA $7BC2 C1/83C1: 20 69 82 JSR $8269 C1/83C4: AD FD 7A LDA $7AFD C1/83C7: C9 04 CMP #$04 C1/83C9: F0 03 BEQ $83CE C1/83CB: 1A INC C1/83CC: 80 01 BRA $83CF C1/83CE: 7B TDC C1/83CF: 8D FD 7A STA $7AFD C1/83D2: 80 18 BRA $83EC learning_one_scr_up: C1/83D4: 20 76 4D JSR $4D76 C1/83D7: A9 18 LDA #$18 C1/83D9: 8D C2 7B STA $7BC2 C1/83DC: 20 69 82 JSR $8269 C1/83DF: AD FD 7A LDA $7AFD C1/83E2: F0 03 BEQ $83E7 C1/83E4: 3A DEC C1/83E5: 80 02 BRA $83E9 C1/83E7: A9 04 LDA #$04 C1/83E9: 8D FD 7A STA $7AFD learning_one_scr: C1/83EC: A9 03 LDA #$03 C1/83EE: 8D A8 7B STA $7BA8 C1/83F1: A9 1B LDA #$1B C1/83F3: 8D C3 7B STA $7BC3 C1/83F6: 60 RTS ; [ ] get_learning_poi: C1/83F7: 5A PHY C1/83F8: AD CA 62 LDA $62CA C1/83FB: A8 TAY C1/83FC: 0A ASL C1/83FD: AA TAX C1/83FE: B9 1F 89 LDA $891F,Y C1/8401: 18 CLC C1/8402: 79 27 89 ADC $8927,Y C1/8405: C2 20 REP #$20 C1/8407: 0A ASL C1/8408: 0A ASL C1/8409: 18 CLC C1/840A: 7F 5F 4B C1 ADC $C14B5F,X C1/840E: AA TAX C1/840F: 7B TDC C1/8410: E2 20 SEP #$20 C1/8412: 7A PLY C1/8413: 60 RTS ; [ ] get_magic_poi: C1/8414: 5A PHY C1/8415: AD CA 62 LDA $62CA C1/8418: A8 TAY C1/8419: 0A ASL C1/841A: AA TAX C1/841B: B9 13 89 LDA $8913,Y C1/841E: 18 CLC C1/841F: 79 1B 89 ADC $891B,Y C1/8422: 85 40 STA $40 C1/8424: 0A ASL C1/8425: 18 CLC C1/8426: 79 17 89 ADC $8917,Y C1/8429: C2 20 REP #$20 C1/842B: 0A ASL C1/842C: 0A ASL C1/842D: 18 CLC C1/842E: 7F 5F 4B C1 ADC $C14B5F,X C1/8432: AA TAX C1/8433: 7B TDC C1/8434: E2 20 SEP #$20 C1/8436: 7A PLY C1/8437: 60 RTS ; [ ] get_riot_poi: C1/8438: AE CA 62 LDX $62CA C1/843B: BD 2F 89 LDA $892F,X C1/843E: 85 40 STA $40 C1/8440: 64 41 STZ $41 C1/8442: BD 2B 89 LDA $892B,X C1/8445: 18 CLC C1/8446: 7D 33 89 ADC $8933,X C1/8449: C2 20 REP #$20 C1/844B: 0A ASL C1/844C: 18 CLC C1/844D: 65 40 ADC $40 C1/844F: AA TAX C1/8450: 7B TDC C1/8451: E2 20 SEP #$20 C1/8453: 60 RTS ; [ ] get_throw_poi: C1/8454: 5A PHY C1/8455: AD CA 62 LDA $62CA C1/8458: A8 TAY C1/8459: 0A ASL C1/845A: AA TAX C1/845B: B9 53 89 LDA $8953,Y C1/845E: 18 CLC C1/845F: 79 5B 89 ADC $895B,Y C1/8462: C2 20 REP #$20 C1/8464: 85 40 STA $40 C1/8466: 0A ASL C1/8467: 18 CLC C1/8468: 65 40 ADC $40 C1/846A: AA TAX C1/846B: 7B TDC C1/846C: E2 20 SEP #$20 C1/846E: 7A PLY C1/846F: 60 RTS ; [ ] get_machine_poi: C1/8470: 5A PHY C1/8471: AD CA 62 LDA $62CA C1/8474: A8 TAY C1/8475: 0A ASL C1/8476: AA TAX C1/8477: B9 5F 89 LDA $895F,Y ; scroll position C1/847A: 18 CLC C1/847B: 79 67 89 ADC $8967,Y ; y position C1/847E: 0A ASL C1/847F: 18 CLC C1/8480: 79 63 89 ADC $8963,Y ; x position C1/8483: C2 20 REP #$20 C1/8485: 85 40 STA $40 ; multiply by 3 C1/8487: 0A ASL C1/8488: 18 CLC C1/8489: 65 40 ADC $40 C1/848B: AA TAX C1/848C: 7B TDC C1/848D: E2 20 SEP #$20 C1/848F: 7A PLY C1/8490: 60 RTS ; [ ] get_madou_poi: C1/8491: AE CA 62 LDX $62CA C1/8494: BD 43 89 LDA $8943,X C1/8497: 0A ASL C1/8498: 18 CLC C1/8499: 7D 3F 89 ADC $893F,X C1/849C: AA TAX C1/849D: 60 RTS C1/849E: AE CA 62 LDX $62CA C1/84A1: BD 3B 89 LDA $893B,X C1/84A4: 0A ASL C1/84A5: 18 CLC C1/84A6: 7D 37 89 ADC $8937,X C1/84A9: AA TAX C1/84AA: 60 RTS ; [ ] get_command_poi: C1/84AB: AE CA 62 LDX $62CA C1/84AE: BD 0F 89 LDA $890F,X C1/84B1: 85 2C STA $2C C1/84B3: A9 03 LDA #$03 C1/84B5: 85 2E STA $2E C1/84B7: 20 B0 18 JSR $18B0 C1/84BA: AE CA 62 LDX $62CA C1/84BD: BF 5B 4B C1 LDA $C14B5B,X C1/84C1: 18 CLC C1/84C2: 65 30 ADC $30 C1/84C4: AA TAX C1/84C5: 60 RTS ; [ Battle Menu Cursor State $1E: Rage ] key_riot: C1/84C6: 9C E3 88 STZ $88E3 C1/84C9: 9C EF 88 STZ $88EF C1/84CC: AD CB 7B LDA $7BCB C1/84CF: F0 06 BEQ $84D7 C1/84D1: A9 1D LDA #$1D C1/84D3: 8D C2 7B STA $7BC2 C1/84D6: 60 RTS C1/84D7: AC CA 62 LDY $62CA C1/84DA: B9 2F 89 LDA $892F,Y C1/84DD: 85 36 STA $36 C1/84DF: B9 33 89 LDA $8933,Y C1/84E2: 85 37 STA $37 C1/84E4: B9 2B 89 LDA $892B,Y C1/84E7: 85 38 STA $38 C1/84E9: A9 01 LDA #$01 C1/84EB: 85 39 STA $39 ; 2 columns C1/84ED: 20 DB 80 JSR $80DB C1/84F0: A5 3C LDA $3C C1/84F2: F0 22 BEQ $8516 C1/84F4: 30 12 BMI $8508 C1/84F6: B9 2B 89 LDA $892B,Y C1/84F9: C9 7C CMP #$7C C1/84FB: F0 23 BEQ $8520 C1/84FD: 1A INC C1/84FE: 99 2B 89 STA $892B,Y C1/8501: E6 94 INC $94 C1/8503: 20 73 85 JSR $8573 C1/8506: 80 0E BRA $8516 C1/8508: B9 2B 89 LDA $892B,Y C1/850B: F0 13 BEQ $8520 C1/850D: 3A DEC C1/850E: 99 2B 89 STA $892B,Y C1/8511: E6 94 INC $94 C1/8513: 20 91 85 JSR $8591 C1/8516: A5 36 LDA $36 C1/8518: 99 2F 89 STA $892F,Y C1/851B: A5 37 LDA $37 C1/851D: 99 33 89 STA $8933,Y C1/8520: A5 09 LDA $09 C1/8522: 10 06 BPL $852A C1/8524: E6 96 INC $96 C1/8526: 20 04 57 JSR $5704 C1/8529: 60 RTS C1/852A: A5 04 LDA $04 C1/852C: 10 1C BPL $854A C1/852E: 20 38 84 JSR $8438 C1/8531: BD 7E 25 LDA $257E,X C1/8534: C9 FF CMP #$FF C1/8536: F0 10 BEQ $8548 C1/8538: E6 96 INC $96 C1/853A: BD 7E 25 LDA $257E,X C1/853D: 8D 85 7A STA $7A85 C1/8540: A9 02 LDA #$02 C1/8542: 8D 84 7A STA $7A84 C1/8545: 4C 95 77 JMP $7795 C1/8548: E6 95 INC $95 C1/854A: A9 7C LDA #$7C C1/854C: 85 36 STA $36 C1/854E: A2 4B 00 LDX #$004B C1/8551: 86 2E STX $2E C1/8553: B9 2B 89 LDA $892B,Y C1/8556: 20 8F 89 JSR $898F C1/8559: B9 2F 89 LDA $892F,Y C1/855C: AA TAX C1/855D: BF 89 82 C1 LDA $C18289,X C1/8561: 8D E4 88 STA $88E4 C1/8564: B9 33 89 LDA $8933,Y C1/8567: AA TAX C1/8568: BF 8D 82 C1 LDA $C1828D,X C1/856C: 8D E5 88 STA $88E5 C1/856F: EE E3 88 INC $88E3 C1/8572: 60 RTS ; [ ] riot_one_scr_down: C1/8573: 18 CLC C1/8574: 69 03 ADC #$03 C1/8576: 20 E2 4C JSR $4CE2 C1/8579: A9 17 LDA #$17 C1/857B: 8D C2 7B STA $7BC2 C1/857E: 20 69 82 JSR $8269 C1/8581: AD FD 7A LDA $7AFD C1/8584: C9 04 CMP #$04 C1/8586: F0 03 BEQ $858B C1/8588: 1A INC C1/8589: 80 01 BRA $858C C1/858B: 7B TDC C1/858C: 8D FD 7A STA $7AFD C1/858F: 80 18 BRA $85A9 riot_one_scr_up: C1/8591: 20 E2 4C JSR $4CE2 C1/8594: A9 18 LDA #$18 C1/8596: 8D C2 7B STA $7BC2 C1/8599: 20 69 82 JSR $8269 C1/859C: AD FD 7A LDA $7AFD C1/859F: F0 03 BEQ $85A4 C1/85A1: 3A DEC C1/85A2: 80 02 BRA $85A6 C1/85A4: A9 04 LDA #$04 C1/85A6: 8D FD 7A STA $7AFD riot_one_scr: C1/85A9: A9 03 LDA #$03 C1/85AB: 8D A8 7B STA $7BA8 C1/85AE: A9 1E LDA #$1E C1/85B0: 8D C3 7B STA $7BC3 C1/85B3: 60 RTS ; [ Battle Menu Cursor State $21: Dance ] key_dance: C1/85B4: 9C E3 88 STZ $88E3 C1/85B7: AD CB 7B LDA $7BCB C1/85BA: F0 06 BEQ $85C2 C1/85BC: A9 20 LDA #$20 C1/85BE: 8D C2 7B STA $7BC2 C1/85C1: 60 RTS C1/85C2: AC CA 62 LDY $62CA C1/85C5: B9 37 89 LDA $8937,Y C1/85C8: 85 36 STA $36 C1/85CA: B9 3B 89 LDA $893B,Y C1/85CD: 85 37 STA $37 C1/85CF: 64 38 STZ $38 C1/85D1: A9 01 LDA #$01 C1/85D3: 85 39 STA $39 ; 2 columns C1/85D5: 20 DB 80 JSR $80DB C1/85D8: A5 3C LDA $3C C1/85DA: D0 0A BNE $85E6 C1/85DC: A5 36 LDA $36 C1/85DE: 99 37 89 STA $8937,Y C1/85E1: A5 37 LDA $37 C1/85E3: 99 3B 89 STA $893B,Y C1/85E6: A5 09 LDA $09 C1/85E8: 10 06 BPL $85F0 C1/85EA: E6 96 INC $96 C1/85EC: 20 0D 57 JSR $570D C1/85EF: 60 RTS C1/85F0: A5 04 LDA $04 C1/85F2: 10 17 BPL $860B C1/85F4: 20 9E 84 JSR $849E C1/85F7: BD 7E 26 LDA $267E,X C1/85FA: 30 0D BMI $8609 C1/85FC: E6 96 INC $96 C1/85FE: 8D 85 7A STA $7A85 C1/8601: A9 02 LDA #$02 C1/8603: 8D 84 7A STA $7A84 C1/8606: 4C 95 77 JMP $7795 C1/8609: E6 95 INC $95 C1/860B: B9 37 89 LDA $8937,Y C1/860E: AA TAX C1/860F: BF 87 82 C1 LDA $C18287,X C1/8613: 8D E4 88 STA $88E4 C1/8616: B9 3B 89 LDA $893B,Y C1/8619: AA TAX C1/861A: BF 8D 82 C1 LDA $C1828D,X C1/861E: 8D E5 88 STA $88E5 C1/8621: EE E3 88 INC $88E3 C1/8624: 60 RTS ; [ Battle Menu Cursor State $2A: ] key_madou: C1/8625: 9C E3 88 STZ $88E3 C1/8628: AD CB 7B LDA $7BCB C1/862B: F0 06 BEQ $8633 C1/862D: A9 29 LDA #$29 C1/862F: 8D C2 7B STA $7BC2 C1/8632: 60 RTS C1/8633: AC CA 62 LDY $62CA C1/8636: B9 3F 89 LDA $893F,Y C1/8639: 85 36 STA $36 C1/863B: B9 43 89 LDA $8943,Y C1/863E: 85 37 STA $37 C1/8640: 64 38 STZ $38 C1/8642: A9 01 LDA #$01 C1/8644: 85 39 STA $39 ; 2 columns C1/8646: 20 DB 80 JSR $80DB C1/8649: A5 3C LDA $3C C1/864B: D0 0A BNE $8657 C1/864D: A5 36 LDA $36 C1/864F: 99 3F 89 STA $893F,Y C1/8652: A5 37 LDA $37 C1/8654: 99 43 89 STA $8943,Y C1/8657: A5 09 LDA $09 C1/8659: 10 06 BPL $8661 C1/865B: E6 96 INC $96 C1/865D: 20 16 57 JSR $5716 C1/8660: 60 RTS C1/8661: 84 36 STY $36 C1/8663: A5 04 LDA $04 C1/8665: 10 32 BPL $8699 C1/8667: 20 91 84 JSR $8491 C1/866A: AD CA 62 LDA $62CA C1/866D: 0A ASL C1/866E: 0A ASL C1/866F: 0A ASL C1/8670: 0A ASL C1/8671: 0A ASL C1/8672: A8 TAY C1/8673: B9 AE 2E LDA $2EAE,Y C1/8676: D0 08 BNE $8680 C1/8678: BF 0C 91 C1 LDA $C1910C,X C1/867C: 30 19 BMI $8697 C1/867E: 80 06 BRA $8686 C1/8680: BF 14 91 C1 LDA $C19114,X C1/8684: 30 11 BMI $8697 C1/8686: E6 96 INC $96 C1/8688: 8D 85 7A STA $7A85 C1/868B: A4 36 LDY $36 C1/868D: BF 04 91 C1 LDA $C19104,X C1/8691: 8D 84 7A STA $7A84 C1/8694: 4C 95 77 JMP $7795 C1/8697: E6 95 INC $95 C1/8699: A4 36 LDY $36 C1/869B: B9 3F 89 LDA $893F,Y C1/869E: AA TAX C1/869F: BF 89 82 C1 LDA $C18289,X C1/86A3: 8D E4 88 STA $88E4 C1/86A6: B9 43 89 LDA $8943,Y C1/86A9: AA TAX C1/86AA: BF 8D 82 C1 LDA $C1828D,X C1/86AE: 8D E5 88 STA $88E5 C1/86B1: EE E3 88 INC $88E3 C1/86B4: 60 RTS ; [ Battle Menu Cursor State $2D: Throw (item select) ] key_throw: C1/86B5: 9C E3 88 STZ $88E3 C1/86B8: 9C EF 88 STZ $88EF C1/86BB: AD CB 7B LDA $7BCB C1/86BE: F0 06 BEQ $86C6 C1/86C0: A9 2C LDA #$2C C1/86C2: 8D C2 7B STA $7BC2 C1/86C5: 60 RTS C1/86C6: AC CA 62 LDY $62CA C1/86C9: 64 36 STZ $36 C1/86CB: B9 5B 89 LDA $895B,Y C1/86CE: 85 37 STA $37 C1/86D0: B9 53 89 LDA $8953,Y C1/86D3: 85 38 STA $38 C1/86D5: 7B TDC C1/86D6: 85 39 STA $39 ; 1 column C1/86D8: 20 DB 80 JSR $80DB C1/86DB: A5 3C LDA $3C C1/86DD: F0 22 BEQ $8701 C1/86DF: 30 12 BMI $86F3 C1/86E1: B9 53 89 LDA $8953,Y C1/86E4: C9 FB CMP #$FB ; max scroll position C1/86E6: F0 23 BEQ $870B C1/86E8: 1A INC C1/86E9: 99 53 89 STA $8953,Y C1/86EC: E6 94 INC $94 C1/86EE: 20 5C 87 JSR $875C C1/86F1: 80 0E BRA $8701 C1/86F3: B9 53 89 LDA $8953,Y C1/86F6: F0 13 BEQ $870B C1/86F8: 3A DEC C1/86F9: 99 53 89 STA $8953,Y C1/86FC: E6 94 INC $94 C1/86FE: 20 7A 87 JSR $877A C1/8701: A5 36 LDA $36 C1/8703: 99 57 89 STA $8957,Y C1/8706: A5 37 LDA $37 C1/8708: 99 5B 89 STA $895B,Y C1/870B: A5 04 LDA $04 C1/870D: 10 1C BPL $872B C1/870F: E6 96 INC $96 C1/8711: 20 54 84 JSR $8454 C1/8714: BD 05 40 LDA $4005,X C1/8717: C9 FF CMP #$FF C1/8719: D0 04 BNE $871F C1/871B: E6 95 INC $95 C1/871D: 80 0C BRA $872B C1/871F: 8D 85 7A STA $7A85 C1/8722: BD 07 40 LDA $4007,X C1/8725: 8D 84 7A STA $7A84 C1/8728: 4C 95 77 JMP $7795 C1/872B: A5 09 LDA $09 C1/872D: 10 06 BPL $8735 C1/872F: E6 96 INC $96 C1/8731: 20 E0 56 JSR $56E0 C1/8734: 60 RTS C1/8735: A9 FB LDA #$FB C1/8737: 85 36 STA $36 C1/8739: A2 25 00 LDX #$0025 C1/873C: 86 2E STX $2E C1/873E: B9 53 89 LDA $8953,Y C1/8741: 20 8F 89 JSR $898F C1/8744: 7B TDC C1/8745: AA TAX C1/8746: BF 87 82 C1 LDA $C18287,X C1/874A: 8D E4 88 STA $88E4 C1/874D: B9 5B 89 LDA $895B,Y C1/8750: AA TAX C1/8751: BF 8D 82 C1 LDA $C1828D,X C1/8755: 8D E5 88 STA $88E5 C1/8758: EE E3 88 INC $88E3 C1/875B: 60 RTS ; [ ] throw_one_scr_down: C1/875C: 18 CLC C1/875D: 69 03 ADC #$03 C1/875F: 20 27 4C JSR $4C27 C1/8762: A9 17 LDA #$17 C1/8764: 8D C2 7B STA $7BC2 C1/8767: 20 69 82 JSR $8269 C1/876A: AD FD 7A LDA $7AFD C1/876D: C9 04 CMP #$04 C1/876F: F0 03 BEQ $8774 C1/8771: 1A INC C1/8772: 80 01 BRA $8775 C1/8774: 7B TDC C1/8775: 8D FD 7A STA $7AFD C1/8778: 80 18 BRA $8792 throw_one_scr_up: C1/877A: 20 27 4C JSR $4C27 C1/877D: A9 18 LDA #$18 C1/877F: 8D C2 7B STA $7BC2 C1/8782: 20 69 82 JSR $8269 C1/8785: AD FD 7A LDA $7AFD C1/8788: F0 03 BEQ $878D C1/878A: 3A DEC C1/878B: 80 02 BRA $878F C1/878D: A9 04 LDA #$04 C1/878F: 8D FD 7A STA $7AFD throw_one_scr: C1/8792: A9 03 LDA #$03 C1/8794: 8D A8 7B STA $7BA8 C1/8797: A9 2D LDA #$2D C1/8799: 8D C3 7B STA $7BC3 C1/879C: 60 RTS ; [ Battle Menu Cursor State $30: Tools Select ] key_machine: C1/879D: 9C E3 88 STZ $88E3 C1/87A0: 9C EF 88 STZ $88EF C1/87A3: AD CB 7B LDA $7BCB C1/87A6: F0 06 BEQ $87AE ; branch if not forcing menu to close C1/87A8: A9 2F LDA #$2F C1/87AA: 8D C2 7B STA $7BC2 C1/87AD: 60 RTS C1/87AE: AC CA 62 LDY $62CA C1/87B1: B9 63 89 LDA $8963,Y C1/87B4: 85 36 STA $36 C1/87B6: B9 67 89 LDA $8967,Y C1/87B9: 85 37 STA $37 C1/87BB: B9 5F 89 LDA $895F,Y C1/87BE: 85 38 STA $38 C1/87C0: A9 01 LDA #$01 C1/87C2: 85 39 STA $39 ; 2 columns C1/87C4: 20 DB 80 JSR $80DB C1/87C7: A5 3C LDA $3C C1/87C9: F0 20 BEQ $87EB C1/87CB: 30 10 BMI $87DD ; scroll down C1/87CD: B9 5F 89 LDA $895F,Y C1/87D0: F0 23 BEQ $87F5 ; max scroll position is zero C1/87D2: 1A INC C1/87D3: 99 5F 89 STA $895F,Y C1/87D6: E6 94 INC $94 ; play cursor sound effect C1/87D8: 20 3C 88 JSR $883C C1/87DB: 80 0E BRA $87EB ; scroll up C1/87DD: B9 5F 89 LDA $895F,Y C1/87E0: F0 13 BEQ $87F5 ; min scroll position is zero C1/87E2: 3A DEC C1/87E3: 99 5F 89 STA $895F,Y C1/87E6: E6 94 INC $94 ; play cursor sound effect C1/87E8: 20 5A 88 JSR $885A ; no scroll C1/87EB: A5 36 LDA $36 C1/87ED: 99 63 89 STA $8963,Y C1/87F0: A5 37 LDA $37 C1/87F2: 99 67 89 STA $8967,Y ; A button C1/87F5: A5 04 LDA $04 C1/87F7: 10 1F BPL $8818 C1/87F9: E6 96 INC $96 C1/87FB: 20 70 84 JSR $8470 C1/87FE: BD 05 40 LDA $4005,X ; item id C1/8801: C9 FF CMP #$FF C1/8803: D0 04 BNE $8809 ; branch if valid C1/8805: E6 95 INC $95 C1/8807: 80 0F BRA $8818 C1/8809: BD 05 40 LDA $4005,X C1/880C: 8D 85 7A STA $7A85 ; set item being used C1/880F: BD 07 40 LDA $4007,X C1/8812: 8D 84 7A STA $7A84 C1/8815: 4C 95 77 JMP $7795 ; B button C1/8818: A5 09 LDA $09 C1/881A: 10 06 BPL $8822 C1/881C: E6 96 INC $96 C1/881E: 20 97 56 JSR $5697 C1/8821: 60 RTS C1/8822: B9 63 89 LDA $8963,Y C1/8825: AA TAX C1/8826: BF 85 82 C1 LDA $C18285,X C1/882A: 8D E4 88 STA $88E4 C1/882D: B9 67 89 LDA $8967,Y C1/8830: AA TAX C1/8831: BF 8D 82 C1 LDA $C1828D,X C1/8835: 8D E5 88 STA $88E5 C1/8838: EE E3 88 INC $88E3 C1/883B: 60 RTS ; [ ] machine_one_scr_down: C1/883C: 18 CLC C1/883D: 69 03 ADC #$03 C1/883F: 20 F7 4B JSR $4BF7 C1/8842: A9 17 LDA #$17 C1/8844: 8D C2 7B STA $7BC2 C1/8847: 20 69 82 JSR $8269 C1/884A: AD FD 7A LDA $7AFD C1/884D: C9 04 CMP #$04 C1/884F: F0 03 BEQ $8854 C1/8851: 1A INC C1/8852: 80 01 BRA $8855 C1/8854: 7B TDC C1/8855: 8D FD 7A STA $7AFD C1/8858: 80 18 BRA $8872 machine_one_scr_up: C1/885A: 20 F7 4B JSR $4BF7 C1/885D: A9 18 LDA #$18 C1/885F: 8D C2 7B STA $7BC2 C1/8862: 20 69 82 JSR $8269 C1/8865: AD FD 7A LDA $7AFD C1/8868: F0 03 BEQ $886D C1/886A: 3A DEC C1/886B: 80 02 BRA $886F C1/886D: A9 04 LDA #$04 C1/886F: 8D FD 7A STA $7AFD machine_one_scr: C1/8872: A9 03 LDA #$03 C1/8874: 8D A8 7B STA $7BA8 C1/8877: A9 30 LDA #$30 C1/8879: 8D C3 7B STA $7BC3 C1/887C: 60 RTS ; [ Battle Menu Cursor State $0A: Item Select ] key_item: C1/887D: 9C E3 88 STZ $88E3 C1/8880: 9C EF 88 STZ $88EF C1/8883: AD CB 7B LDA $7BCB C1/8886: F0 0F BEQ $8897 C1/8888: 9C AF 7B STZ $7BAF C1/888B: 9C B5 7B STZ $7BB5 C1/888E: 9C 02 7B STZ $7B02 C1/8891: A9 12 LDA #$12 C1/8893: 8D C2 7B STA $7BC2 C1/8896: 60 RTS C1/8897: A2 A4 00 LDX #$00A4 C1/889A: 8E B3 7B STX $7BB3 C1/889D: AC CA 62 LDY $62CA C1/88A0: 7B TDC C1/88A1: 99 4B 89 STA $894B,Y C1/88A4: 85 36 STA $36 C1/88A6: B9 4F 89 LDA $894F,Y C1/88A9: 85 37 STA $37 C1/88AB: B9 47 89 LDA $8947,Y C1/88AE: 85 38 STA $38 C1/88B0: 64 39 STZ $39 ; 1 column C1/88B2: 20 DB 80 JSR $80DB C1/88B5: A5 3C LDA $3C C1/88B7: F0 42 BEQ $88FB C1/88B9: 30 12 BMI $88CD C1/88BB: B9 47 89 LDA $8947,Y C1/88BE: C9 FB CMP #$FB C1/88C0: F0 43 BEQ $8905 C1/88C2: 1A INC C1/88C3: 99 47 89 STA $8947,Y C1/88C6: E6 94 INC $94 C1/88C8: 20 E9 8C JSR $8CE9 C1/88CB: 80 2E BRA $88FB C1/88CD: B9 47 89 LDA $8947,Y C1/88D0: D0 20 BNE $88F2 C1/88D2: A5 3C LDA $3C C1/88D4: 29 40 AND #$40 C1/88D6: D0 04 BNE $88DC C1/88D8: 7B TDC C1/88D9: 99 4B 89 STA $894B,Y C1/88DC: AD 02 7B LDA $7B02 C1/88DF: F0 05 BEQ $88E6 C1/88E1: AD 00 7B LDA $7B00 C1/88E4: F0 1F BEQ $8905 C1/88E6: A2 C8 00 LDX #$00C8 C1/88E9: 8E B3 7B STX $7BB3 C1/88EC: E6 94 INC $94 C1/88EE: 20 45 56 JSR $5645 C1/88F1: 60 RTS C1/88F2: 3A DEC C1/88F3: 99 47 89 STA $8947,Y C1/88F6: E6 94 INC $94 C1/88F8: 20 11 8D JSR $8D11 C1/88FB: A5 36 LDA $36 C1/88FD: 99 4B 89 STA $894B,Y C1/8900: A5 37 LDA $37 C1/8902: 99 4F 89 STA $894F,Y C1/8905: AD A8 7B LDA $7BA8 C1/8908: D0 59 BNE $8963 C1/890A: A5 04 LDA $04 C1/890C: 10 2D BPL $893B C1/890E: 20 24 8A JSR $8A24 C1/8911: 90 50 BCC $8963 C1/8913: 9C AF 7B STZ $7BAF C1/8916: 9C B5 7B STZ $7BB5 C1/8919: 9C 02 7B STZ $7B02 C1/891C: 20 BE 89 JSR $89BE C1/891F: BD 86 26 LDA $2686,X C1/8922: 8D 85 7A STA $7A85 C1/8925: BD 88 26 LDA $2688,X C1/8928: 8D 84 7A STA $7A84 C1/892B: 9C 1E 7A STZ $7A1E C1/892E: 9C BA EC STZ $ECBA C1/8931: 29 40 AND #$40 C1/8933: D0 03 BNE $8938 C1/8935: 4C B0 55 JMP $55B0 C1/8938: 4C 95 77 JMP $7795 C1/893B: A5 09 LDA $09 C1/893D: 10 24 BPL $8963 C1/893F: E6 96 INC $96 C1/8941: 9C AF 7B STZ $7BAF C1/8944: 9C B5 7B STZ $7BB5 C1/8947: AD 02 7B LDA $7B02 C1/894A: D0 09 BNE $8955 C1/894C: 9C AF 7B STZ $7BAF C1/894F: 9C B5 7B STZ $7BB5 C1/8952: 4C F2 56 JMP $56F2 C1/8955: 9C 02 7B STZ $7B02 C1/8958: 9C 0C 89 STZ $890C C1/895B: A9 0A LDA #$0A C1/895D: 8D C3 7B STA $7BC3 C1/8960: 20 76 8D JSR $8D76 C1/8963: AC CA 62 LDY $62CA C1/8966: A9 FB LDA #$FB C1/8968: 85 36 STA $36 C1/896A: A2 25 00 LDX #$0025 C1/896D: 86 2E STX $2E C1/896F: B9 47 89 LDA $8947,Y C1/8972: 20 8F 89 JSR $898F C1/8975: B9 4B 89 LDA $894B,Y C1/8978: AA TAX C1/8979: BF 87 82 C1 LDA $C18287,X C1/897D: 8D E4 88 STA $88E4 C1/8980: B9 4F 89 LDA $894F,Y C1/8983: AA TAX C1/8984: BF 8D 82 C1 LDA $C1828D,X C1/8988: 8D E5 88 STA $88E5 C1/898B: EE E3 88 INC $88E3 C1/898E: 60 RTS ; [ ] ud_cur_set: C1/898F: 85 2C STA $2C C1/8991: D0 04 BNE $8997 C1/8993: A9 01 LDA #$01 C1/8995: 80 09 BRA $89A0 C1/8997: C5 36 CMP $36 C1/8999: D0 04 BNE $899F C1/899B: A9 02 LDA #$02 C1/899D: 80 01 BRA $89A0 C1/899F: 7B TDC C1/89A0: 8D F2 88 STA $88F2 C1/89A3: 64 2D STZ $2D C1/89A5: C2 20 REP #$20 C1/89A7: 20 67 18 JSR $1867 C1/89AA: 7B TDC C1/89AB: E2 20 SEP #$20 C1/89AD: A5 31 LDA $31 C1/89AF: 18 CLC C1/89B0: 69 A1 ADC #$A1 C1/89B2: 8D F1 88 STA $88F1 C1/89B5: A9 F0 LDA #$F0 C1/89B7: 8D F0 88 STA $88F0 C1/89BA: EE EF 88 INC $88EF C1/89BD: 60 RTS ; [ ] get_item_poi: C1/89BE: 5A PHY C1/89BF: B9 47 89 LDA $8947,Y C1/89C2: 18 CLC C1/89C3: 79 4F 89 ADC $894F,Y C1/89C6: C2 20 REP #$20 C1/89C8: 85 40 STA $40 C1/89CA: 0A ASL C1/89CB: 0A ASL C1/89CC: 18 CLC C1/89CD: 65 40 ADC $40 C1/89CF: AA TAX C1/89D0: 7B TDC C1/89D1: E2 20 SEP #$20 C1/89D3: 7A PLY C1/89D4: 60 RTS ; [ ] check_equip: C1/89D5: AD 39 7B LDA $7B39 C1/89D8: C9 FF CMP #$FF C1/89DA: F0 30 BEQ $8A0C C1/89DC: AD 3B 7B LDA $7B3B C1/89DF: C9 FF CMP #$FF C1/89E1: F0 29 BEQ $8A0C C1/89E3: DA PHX C1/89E4: AE CA 62 LDX $62CA C1/89E7: BD 6E 2E LDA $2E6E,X C1/89EA: F0 11 BEQ $89FD C1/89EC: FA PLX C1/89ED: AD 3A 7B LDA $7B3A C1/89F0: 29 08 AND #$08 C1/89F2: F0 18 BEQ $8A0C C1/89F4: AD 3C 7B LDA $7B3C C1/89F7: 29 08 AND #$08 C1/89F9: F0 11 BEQ $8A0C C1/89FB: 80 0D BRA $8A0A C1/89FD: FA PLX C1/89FE: AD 3A 7B LDA $7B3A C1/8A01: 0D 3C 7B ORA $7B3C C1/8A04: 29 18 AND #$18 C1/8A06: C9 18 CMP #$18 C1/8A08: F0 02 BEQ $8A0C C1/8A0A: 38 SEC C1/8A0B: 60 RTS C1/8A0C: DA PHX C1/8A0D: AE CA 62 LDX $62CA C1/8A10: A9 01 LDA #$01 C1/8A12: 9D 30 2F STA $2F30,X C1/8A15: FA PLX C1/8A16: 18 CLC C1/8A17: 60 RTS C1/8A18: DA PHX C1/8A19: AE CA 62 LDX $62CA C1/8A1C: BF 01 1A C1 LDA $C11A01,X C1/8A20: 85 2C STA $2C C1/8A22: FA PLX C1/8A23: 60 RTS ; [ ] set_item_one: C1/8A24: E6 96 INC $96 C1/8A26: 20 BE 89 JSR $89BE C1/8A29: AD 02 7B LDA $7B02 C1/8A2C: D0 03 BNE $8A31 C1/8A2E: 4C 23 8B JMP $8B23 C1/8A31: 8E 05 7B STX $7B05 C1/8A34: AD 00 7B LDA $7B00 C1/8A37: F0 64 BEQ $8A9D C1/8A39: BD 86 26 LDA $2686,X C1/8A3C: C9 FF CMP #$FF C1/8A3E: F0 11 BEQ $8A51 C1/8A40: 20 18 8A JSR $8A18 C1/8A43: BD 87 26 LDA $2687,X C1/8A46: 29 18 AND #$18 C1/8A48: F0 3F BEQ $8A89 C1/8A4A: BD 8A 26 LDA $268A,X C1/8A4D: 25 2C AND $2C C1/8A4F: D0 38 BNE $8A89 C1/8A51: AD 00 7B LDA $7B00 C1/8A54: C9 01 CMP #$01 C1/8A56: F0 11 BEQ $8A69 C1/8A58: AC 03 7B LDY $7B03 C1/8A5B: B9 86 2B LDA $2B86,Y C1/8A5E: 8D 3B 7B STA $7B3B C1/8A61: B9 87 2B LDA $2B87,Y C1/8A64: 8D 3C 7B STA $7B3C C1/8A67: 80 0F BRA $8A78 C1/8A69: AC 03 7B LDY $7B03 C1/8A6C: B9 9A 2B LDA $2B9A,Y C1/8A6F: 8D 3B 7B STA $7B3B C1/8A72: B9 9B 2B LDA $2B9B,Y C1/8A75: 8D 3C 7B STA $7B3C C1/8A78: BD 86 26 LDA $2686,X C1/8A7B: 8D 39 7B STA $7B39 C1/8A7E: BD 87 26 LDA $2687,X C1/8A81: 8D 3A 7B STA $7B3A C1/8A84: 20 D5 89 JSR $89D5 C1/8A87: 90 07 BCC $8A90 C1/8A89: E6 95 INC $95 C1/8A8B: 64 96 STZ $96 C1/8A8D: 4C 0A 8B JMP $8B0A C1/8A90: AD 00 7B LDA $7B00 C1/8A93: C9 01 CMP #$01 C1/8A95: F0 03 BEQ $8A9A C1/8A97: 4C 02 8C JMP $8C02 C1/8A9A: 4C 4D 8B JMP $8B4D C1/8A9D: EC 03 7B CPX $7B03 C1/8AA0: D0 2C BNE $8ACE C1/8AA2: 9C AF 7B STZ $7BAF C1/8AA5: 9C B5 7B STZ $7BB5 C1/8AA8: BD 86 26 LDA $2686,X C1/8AAB: C9 FF CMP #$FF C1/8AAD: F0 05 BEQ $8AB4 C1/8AAF: BD 87 26 LDA $2687,X C1/8AB2: 10 12 BPL $8AC6 C1/8AB4: E6 95 INC $95 C1/8AB6: 64 96 STZ $96 C1/8AB8: 9C 0C 89 STZ $890C C1/8ABB: 9C 02 7B STZ $7B02 C1/8ABE: 9C AF 7B STZ $7BAF C1/8AC1: 9C B5 7B STZ $7BB5 C1/8AC4: 18 CLC C1/8AC5: 60 RTS C1/8AC6: BD 87 26 LDA $2687,X C1/8AC9: 9C 0C 89 STZ $890C C1/8ACC: 38 SEC C1/8ACD: 60 RTS C1/8ACE: 5A PHY C1/8ACF: 7B TDC C1/8AD0: A8 TAY C1/8AD1: BD 86 26 LDA $2686,X C1/8AD4: 99 07 7B STA $7B07,Y C1/8AD7: E8 INX C1/8AD8: C8 INY C1/8AD9: C0 05 00 CPY #$0005 C1/8ADC: D0 F3 BNE $8AD1 C1/8ADE: AC 05 7B LDY $7B05 C1/8AE1: AE 03 7B LDX $7B03 C1/8AE4: A9 05 LDA #$05 C1/8AE6: 85 40 STA $40 C1/8AE8: BD 86 26 LDA $2686,X C1/8AEB: 99 86 26 STA $2686,Y C1/8AEE: E8 INX C1/8AEF: C8 INY C1/8AF0: C6 40 DEC $40 C1/8AF2: D0 F4 BNE $8AE8 C1/8AF4: 7B TDC C1/8AF5: AA TAX C1/8AF6: AC 03 7B LDY $7B03 C1/8AF9: BD 07 7B LDA $7B07,X C1/8AFC: 99 86 26 STA $2686,Y C1/8AFF: E8 INX C1/8B00: C8 INY C1/8B01: E0 05 00 CPX #$0005 C1/8B04: D0 F3 BNE $8AF9 C1/8B06: 9C 02 7B STZ $7B02 C1/8B09: 7A PLY C1/8B0A: 9C 0C 89 STZ $890C C1/8B0D: A9 0A LDA #$0A C1/8B0F: 8D C3 7B STA $7BC3 C1/8B12: 20 76 8D JSR $8D76 C1/8B15: 9C 00 7B STZ $7B00 C1/8B18: 9C 02 7B STZ $7B02 C1/8B1B: 9C AF 7B STZ $7BAF C1/8B1E: 9C B5 7B STZ $7BB5 C1/8B21: 18 CLC C1/8B22: 60 RTS C1/8B23: 9C 00 7B STZ $7B00 C1/8B26: 8E 03 7B STX $7B03 C1/8B29: EE 02 7B INC $7B02 C1/8B2C: B9 4B 89 LDA $894B,Y C1/8B2F: AA TAX C1/8B30: BF 87 82 C1 LDA $C18287,X C1/8B34: 18 CLC C1/8B35: 69 03 ADC #$03 C1/8B37: 8D B0 7B STA $7BB0 C1/8B3A: B9 4F 89 LDA $894F,Y C1/8B3D: AA TAX C1/8B3E: BF 8D 82 C1 LDA $C1828D,X C1/8B42: AA TAX C1/8B43: 8E B1 7B STX $7BB1 C1/8B46: A9 01 LDA #$01 C1/8B48: 8D AF 7B STA $7BAF C1/8B4B: 18 CLC C1/8B4C: 60 RTS C1/8B4D: 5A PHY C1/8B4E: 7B TDC C1/8B4F: AA TAX C1/8B50: AC 03 7B LDY $7B03 C1/8B53: B9 86 2B LDA $2B86,Y C1/8B56: 9D 07 7B STA $7B07,X C1/8B59: E8 INX C1/8B5A: C8 INY C1/8B5B: E0 05 00 CPX #$0005 C1/8B5E: D0 F3 BNE $8B53 C1/8B60: AE 05 7B LDX $7B05 C1/8B63: AC 03 7B LDY $7B03 C1/8B66: B9 86 2B LDA $2B86,Y C1/8B69: DD 86 26 CMP $2686,X C1/8B6C: D0 17 BNE $8B85 C1/8B6E: A9 FF LDA #$FF C1/8B70: 99 86 2B STA $2B86,Y C1/8B73: A9 80 LDA #$80 C1/8B75: 99 87 2B STA $2B87,Y C1/8B78: 7B TDC C1/8B79: 99 88 2B STA $2B88,Y C1/8B7C: 99 89 2B STA $2B89,Y C1/8B7F: 99 8A 2B STA $2B8A,Y C1/8B82: 4C E1 8B JMP $8BE1 C1/8B85: BD 86 26 LDA $2686,X C1/8B88: 99 86 2B STA $2B86,Y C1/8B8B: BD 87 26 LDA $2687,X C1/8B8E: 99 87 2B STA $2B87,Y C1/8B91: BD 88 26 LDA $2688,X C1/8B94: 99 88 2B STA $2B88,Y C1/8B97: BD 8A 26 LDA $268A,X C1/8B9A: 99 8A 2B STA $2B8A,Y C1/8B9D: A9 01 LDA #$01 C1/8B9F: 99 89 2B STA $2B89,Y C1/8BA2: BD 89 26 LDA $2689,X C1/8BA5: C9 02 CMP #$02 C1/8BA7: 90 05 BCC $8BAE C1/8BA9: DE 89 26 DEC $2689,X C1/8BAC: 80 13 BRA $8BC1 C1/8BAE: A9 FF LDA #$FF C1/8BB0: 9D 86 26 STA $2686,X C1/8BB3: A9 80 LDA #$80 C1/8BB5: 9D 87 26 STA $2687,X C1/8BB8: 9E 88 26 STZ $2688,X C1/8BBB: 9E 89 26 STZ $2689,X C1/8BBE: 9E 8A 26 STZ $268A,X C1/8BC1: AD 07 7B LDA $7B07 C1/8BC4: 85 40 STA $40 C1/8BC6: 20 B7 8C JSR $8CB7 C1/8BC9: 90 16 BCC $8BE1 C1/8BCB: 20 D2 8C JSR $8CD2 C1/8BCE: B0 1B BCS $8BEB C1/8BD0: 7B TDC C1/8BD1: A8 TAY C1/8BD2: B9 07 7B LDA $7B07,Y C1/8BD5: 9D 86 26 STA $2686,X C1/8BD8: E8 INX C1/8BD9: C8 INY C1/8BDA: C0 05 00 CPY #$0005 C1/8BDD: D0 F3 BNE $8BD2 C1/8BDF: 80 0A BRA $8BEB C1/8BE1: BD 89 26 LDA $2689,X C1/8BE4: C9 63 CMP #$63 C1/8BE6: B0 03 BCS $8BEB C1/8BE8: FE 89 26 INC $2689,X C1/8BEB: 9C 0C 89 STZ $890C C1/8BEE: A9 0A LDA #$0A C1/8BF0: 8D C3 7B STA $7BC3 C1/8BF3: 20 76 8D JSR $8D76 C1/8BF6: 9C AF 7B STZ $7BAF C1/8BF9: 9C B5 7B STZ $7BB5 C1/8BFC: 9C 02 7B STZ $7B02 C1/8BFF: 7A PLY C1/8C00: 18 CLC C1/8C01: 60 RTS C1/8C02: 5A PHY C1/8C03: 7B TDC C1/8C04: AA TAX C1/8C05: AC 03 7B LDY $7B03 C1/8C08: B9 9A 2B LDA $2B9A,Y C1/8C0B: 9D 07 7B STA $7B07,X C1/8C0E: E8 INX C1/8C0F: C8 INY C1/8C10: E0 05 00 CPX #$0005 C1/8C13: D0 F3 BNE $8C08 C1/8C15: AE 05 7B LDX $7B05 C1/8C18: AC 03 7B LDY $7B03 C1/8C1B: B9 9A 2B LDA $2B9A,Y C1/8C1E: DD 86 26 CMP $2686,X C1/8C21: D0 17 BNE $8C3A C1/8C23: A9 FF LDA #$FF C1/8C25: 99 9A 2B STA $2B9A,Y C1/8C28: A9 80 LDA #$80 C1/8C2A: 99 9B 2B STA $2B9B,Y C1/8C2D: 7B TDC C1/8C2E: 99 9C 2B STA $2B9C,Y C1/8C31: 99 9D 2B STA $2B9D,Y C1/8C34: 99 9E 2B STA $2B9E,Y C1/8C37: 4C 96 8C JMP $8C96 C1/8C3A: BD 86 26 LDA $2686,X C1/8C3D: 99 9A 2B STA $2B9A,Y C1/8C40: BD 87 26 LDA $2687,X C1/8C43: 99 9B 2B STA $2B9B,Y C1/8C46: BD 88 26 LDA $2688,X C1/8C49: 99 9C 2B STA $2B9C,Y C1/8C4C: BD 8A 26 LDA $268A,X C1/8C4F: 99 9E 2B STA $2B9E,Y C1/8C52: A9 01 LDA #$01 C1/8C54: 99 9D 2B STA $2B9D,Y C1/8C57: BD 89 26 LDA $2689,X C1/8C5A: C9 02 CMP #$02 C1/8C5C: 90 05 BCC $8C63 C1/8C5E: DE 89 26 DEC $2689,X C1/8C61: 80 13 BRA $8C76 C1/8C63: A9 FF LDA #$FF C1/8C65: 9D 86 26 STA $2686,X C1/8C68: A9 80 LDA #$80 C1/8C6A: 9D 87 26 STA $2687,X C1/8C6D: 9E 88 26 STZ $2688,X C1/8C70: 9E 89 26 STZ $2689,X C1/8C73: 9E 8A 26 STZ $268A,X C1/8C76: AD 07 7B LDA $7B07 C1/8C79: 85 40 STA $40 C1/8C7B: 20 B7 8C JSR $8CB7 C1/8C7E: 90 16 BCC $8C96 C1/8C80: 20 D2 8C JSR $8CD2 C1/8C83: B0 1B BCS $8CA0 C1/8C85: 7B TDC C1/8C86: A8 TAY C1/8C87: B9 07 7B LDA $7B07,Y C1/8C8A: 9D 86 26 STA $2686,X C1/8C8D: E8 INX C1/8C8E: C8 INY C1/8C8F: C0 05 00 CPY #$0005 C1/8C92: D0 F3 BNE $8C87 C1/8C94: 80 0A BRA $8CA0 C1/8C96: BD 89 26 LDA $2689,X C1/8C99: C9 63 CMP #$63 C1/8C9B: B0 03 BCS $8CA0 C1/8C9D: FE 89 26 INC $2689,X C1/8CA0: 9C 0C 89 STZ $890C C1/8CA3: A9 0A LDA #$0A C1/8CA5: 8D C3 7B STA $7BC3 C1/8CA8: 20 76 8D JSR $8D76 C1/8CAB: 9C AF 7B STZ $7BAF C1/8CAE: 9C B5 7B STZ $7BB5 C1/8CB1: 9C 02 7B STZ $7B02 C1/8CB4: 7A PLY C1/8CB5: 18 CLC C1/8CB6: 60 RTS ; [ ] check_item_no: C1/8CB7: 7B TDC C1/8CB8: AA TAX C1/8CB9: A5 40 LDA $40 C1/8CBB: C9 FF CMP #$FF C1/8CBD: F0 0F BEQ $8CCE C1/8CBF: DD 86 26 CMP $2686,X C1/8CC2: F0 0C BEQ $8CD0 C1/8CC4: E8 INX C1/8CC5: E8 INX C1/8CC6: E8 INX C1/8CC7: E8 INX C1/8CC8: E8 INX C1/8CC9: E0 00 05 CPX #$0500 C1/8CCC: D0 F1 BNE $8CBF C1/8CCE: 38 SEC C1/8CCF: 60 RTS C1/8CD0: 18 CLC C1/8CD1: 60 RTS ; [ ] check_item_space: C1/8CD2: 7B TDC C1/8CD3: AA TAX C1/8CD4: A9 FF LDA #$FF C1/8CD6: DD 86 26 CMP $2686,X C1/8CD9: F0 0C BEQ $8CE7 C1/8CDB: E8 INX C1/8CDC: E8 INX C1/8CDD: E8 INX C1/8CDE: E8 INX C1/8CDF: E8 INX C1/8CE0: E0 00 05 CPX #$0500 C1/8CE3: D0 F1 BNE $8CD6 C1/8CE5: 38 SEC C1/8CE6: 60 RTS C1/8CE7: 18 CLC C1/8CE8: 60 RTS ; [ ] item_one_scr_down: C1/8CE9: 18 CLC C1/8CEA: 69 03 ADC #$03 C1/8CEC: 20 6B 4C JSR $4C6B C1/8CEF: AE B1 7B LDX $7BB1 C1/8CF2: CA DEX C1/8CF3: CA DEX C1/8CF4: CA DEX C1/8CF5: CA DEX C1/8CF6: 8E B1 7B STX $7BB1 C1/8CF9: A9 17 LDA #$17 C1/8CFB: 8D C2 7B STA $7BC2 C1/8CFE: 20 69 82 JSR $8269 C1/8D01: AD FD 7A LDA $7AFD C1/8D04: C9 04 CMP #$04 C1/8D06: F0 03 BEQ $8D0B C1/8D08: 1A INC C1/8D09: 80 01 BRA $8D0C C1/8D0B: 7B TDC C1/8D0C: 8D FD 7A STA $7AFD C1/8D0F: 80 22 BRA $8D33 item_one_scr_up: C1/8D11: 20 6B 4C JSR $4C6B C1/8D14: AE B1 7B LDX $7BB1 C1/8D17: E8 INX C1/8D18: E8 INX C1/8D19: E8 INX C1/8D1A: E8 INX C1/8D1B: 8E B1 7B STX $7BB1 C1/8D1E: A9 18 LDA #$18 C1/8D20: 8D C2 7B STA $7BC2 C1/8D23: 20 69 82 JSR $8269 C1/8D26: AD FD 7A LDA $7AFD C1/8D29: F0 03 BEQ $8D2E C1/8D2B: 3A DEC C1/8D2C: 80 02 BRA $8D30 C1/8D2E: A9 04 LDA #$04 C1/8D30: 8D FD 7A STA $7AFD item_one_scr: C1/8D33: A9 03 LDA #$03 C1/8D35: 8D A8 7B STA $7BA8 C1/8D38: A9 0A LDA #$0A C1/8D3A: 8D C3 7B STA $7BC3 C1/8D3D: 60 RTS ; [ Battle Menu Cursor State $31: ] redrow_item: C1/8D3E: AD A7 7B LDA $7BA7 C1/8D41: 20 6B 4C JSR $4C6B C1/8D44: AD A6 7B LDA $7BA6 C1/8D47: 0A ASL C1/8D48: AA TAX C1/8D49: BF 91 82 C1 LDA $C18291,X C1/8D4D: 8D AA 7B STA $7BAA C1/8D50: BF 92 82 C1 LDA $C18292,X C1/8D54: 8D AB 7B STA $7BAB C1/8D57: EE A9 7B INC $7BA9 C1/8D5A: EE A7 7B INC $7BA7 C1/8D5D: AD A6 7B LDA $7BA6 C1/8D60: C9 04 CMP #$04 C1/8D62: F0 03 BEQ $8D67 C1/8D64: 1A INC C1/8D65: 80 01 BRA $8D68 C1/8D67: 7B TDC C1/8D68: 8D A6 7B STA $7BA6 C1/8D6B: CE A5 7B DEC $7BA5 C1/8D6E: D0 05 BNE $8D75 C1/8D70: A9 02 LDA #$02 C1/8D72: 8D C2 7B STA $7BC2 C1/8D75: 60 RTS ; [ ] redrow_item_set: C1/8D76: AC CA 62 LDY $62CA C1/8D79: AD FD 7A LDA $7AFD C1/8D7C: C9 04 CMP #$04 C1/8D7E: D0 03 BNE $8D83 C1/8D80: 7B TDC C1/8D81: 80 01 BRA $8D84 C1/8D83: 1A INC C1/8D84: 8D A6 7B STA $7BA6 C1/8D87: B9 47 89 LDA $8947,Y C1/8D8A: 8D A7 7B STA $7BA7 C1/8D8D: A9 04 LDA #$04 C1/8D8F: 8D A5 7B STA $7BA5 C1/8D92: A9 31 LDA #$31 C1/8D94: 8D C2 7B STA $7BC2 C1/8D97: 60 RTS ; [ Battle Menu Cursor State $0C: Weapon/Shield Select ] key_hand: C1/8D98: AD 02 7B LDA $7B02 C1/8D9B: F0 06 BEQ $8DA3 C1/8D9D: AD 00 7B LDA $7B00 C1/8DA0: 8D B5 7B STA $7BB5 C1/8DA3: 9C E3 88 STZ $88E3 ; disable cursor C1/8DA6: AD CB 7B LDA $7BCB C1/8DA9: F0 06 BEQ $8DB1 C1/8DAB: A9 13 LDA #$13 C1/8DAD: 8D C2 7B STA $7BC2 C1/8DB0: 60 RTS C1/8DB1: AE CA 62 LDX $62CA C1/8DB4: A5 05 LDA $05 ; right button C1/8DB6: C9 01 CMP #$01 C1/8DB8: D0 13 BNE $8DCD ; branch if the right button is not pressed C1/8DBA: E6 94 INC $94 ; play move sound effect C1/8DBC: BD 4B 89 LDA $894B,X ; cursor x position C1/8DBF: C9 01 CMP #$01 ; check if on the right item slot C1/8DC1: D0 05 BNE $8DC8 ; branch if not in the right slot C1/8DC3: 9E 4B 89 STZ $894B,X ; set the x position to zero C1/8DC6: 80 19 BRA $8DE1 ; branch below to close the menu C1/8DC8: FE 4B 89 INC $894B,X ; move to the right item slot C1/8DCB: 80 1F BRA $8DEC ; branch below to check the A button ; left button C1/8DCD: C9 02 CMP #$02 C1/8DCF: D0 0C BNE $8DDD ; branch if the left button is not pressed C1/8DD1: BD 4B 89 LDA $894B,X ; cursor x position C1/8DD4: F0 16 BEQ $8DEC ; branch if in the left slot C1/8DD6: E6 94 INC $94 ; play move sound effect C1/8DD8: DE 4B 89 DEC $894B,X ; move the cursor to the left item slot C1/8DDB: 80 0F BRA $8DEC ; down button C1/8DDD: C9 04 CMP #$04 C1/8DDF: D0 0B BNE $8DEC C1/8DE1: 9E 4B 89 STZ $894B,X ; clear cursor x position C1/8DE4: 9C B5 7B STZ $7BB5 C1/8DE7: E6 94 INC $94 ; play move sound effect C1/8DE9: 4C 69 56 JMP $5669 ; close equip menu ; A button C1/8DEC: A5 04 LDA $04 C1/8DEE: 10 18 BPL $8E08 C1/8DF0: AE CA 62 LDX $62CA C1/8DF3: BD 86 62 LDA $6286,X C1/8DF6: F0 04 BEQ $8DFC ; branch if can change equipment C1/8DF8: E6 95 INC $95 ; play error sound effect C1/8DFA: 80 0C BRA $8E08 C1/8DFC: A9 01 LDA #$01 C1/8DFE: 9D 30 2F STA $2F30,X ; set equipment change flag C1/8E01: E6 96 INC $96 ; play confirm sound effect C1/8E03: 20 51 8E JSR $8E51 C1/8E06: 90 00 BCC $8E08 ; B button C1/8E08: A5 09 LDA $09 C1/8E0A: 10 11 BPL $8E1D C1/8E0C: E6 96 INC $96 ; play confirm sound effect C1/8E0E: 9C 0C 89 STZ $890C C1/8E11: 20 34 8E JSR $8E34 C1/8E14: 9C AF 7B STZ $7BAF C1/8E17: 9C B5 7B STZ $7BB5 C1/8E1A: 9C 02 7B STZ $7B02 C1/8E1D: AE CA 62 LDX $62CA C1/8E20: BD 4B 89 LDA $894B,X ; cursor x position (0 or 1) C1/8E23: AA TAX C1/8E24: BF 83 82 C1 LDA $C18283,X C1/8E28: 8D E4 88 STA $88E4 ; sprite x position C1/8E2B: A9 B4 LDA #$B4 C1/8E2D: 8D E5 88 STA $88E5 ; sprite y position C1/8E30: EE E3 88 INC $88E3 ; enable cursor C1/8E33: 60 RTS ; [ ] set_hand_item_mess: C1/8E34: 20 BA 4B JSR $4BBA C1/8E37: A2 40 7E LDX #$7E40 C1/8E3A: 8E AA 7B STX $7BAA C1/8E3D: EE A9 7B INC $7BA9 set_item_mess: C1/8E40: A9 0C LDA #$0C C1/8E42: 8D C3 7B STA $7BC3 C1/8E45: 4C 76 8D JMP $8D76 ; [ ] get_hand_poi: C1/8E48: AE CA 62 LDX $62CA C1/8E4B: BF 67 4B C1 LDA $C14B67,X C1/8E4F: AA TAX C1/8E50: 60 RTS ; [ select an item in the equip menu ] set_hand_one: C1/8E51: 20 48 8E JSR $8E48 C1/8E54: AC CA 62 LDY $62CA C1/8E57: AD 02 7B LDA $7B02 C1/8E5A: D0 03 BNE $8E5F C1/8E5C: 4C 28 8F JMP $8F28 C1/8E5F: 8E 05 7B STX $7B05 C1/8E62: AD 00 7B LDA $7B00 C1/8E65: D0 03 BNE $8E6A C1/8E67: 4C FE 8E JMP $8EFE C1/8E6A: B9 4B 89 LDA $894B,Y C1/8E6D: 1A INC C1/8E6E: CD 00 7B CMP $7B00 C1/8E71: F0 56 BEQ $8EC9 C1/8E73: 7B TDC C1/8E74: A8 TAY C1/8E75: BD 86 2B LDA $2B86,X C1/8E78: 99 07 7B STA $7B07,Y C1/8E7B: E8 INX C1/8E7C: C8 INY C1/8E7D: C0 05 00 CPY #$0005 C1/8E80: D0 F3 BNE $8E75 C1/8E82: 84 40 STY $40 C1/8E84: AE 05 7B LDX $7B05 C1/8E87: BD 9A 2B LDA $2B9A,X C1/8E8A: 9D 86 2B STA $2B86,X C1/8E8D: E8 INX C1/8E8E: C6 40 DEC $40 C1/8E90: D0 F5 BNE $8E87 C1/8E92: AE 05 7B LDX $7B05 C1/8E95: 7B TDC C1/8E96: A8 TAY C1/8E97: B9 07 7B LDA $7B07,Y C1/8E9A: 9D 9A 2B STA $2B9A,X C1/8E9D: E8 INX C1/8E9E: C8 INY C1/8E9F: C0 05 00 CPY #$0005 C1/8EA2: D0 F3 BNE $8E97 C1/8EA4: 9C 0C 89 STZ $890C C1/8EA7: 20 BA 4B JSR $4BBA C1/8EAA: A2 40 7E LDX #$7E40 C1/8EAD: 8E AA 7B STX $7BAA C1/8EB0: EE A9 7B INC $7BA9 C1/8EB3: 9C 02 7B STZ $7B02 C1/8EB6: 9C AF 7B STZ $7BAF C1/8EB9: 9C B5 7B STZ $7BB5 C1/8EBC: 20 40 8E JSR $8E40 C1/8EBF: AE CA 62 LDX $62CA C1/8EC2: A9 01 LDA #$01 C1/8EC4: 9D 30 2F STA $2F30,X C1/8EC7: 18 CLC C1/8EC8: 60 RTS C1/8EC9: 9C 02 7B STZ $7B02 C1/8ECC: 9C AF 7B STZ $7BAF C1/8ECF: 9C B5 7B STZ $7BB5 C1/8ED2: 9C 0C 89 STZ $890C C1/8ED5: B9 4B 89 LDA $894B,Y C1/8ED8: F0 0E BEQ $8EE8 C1/8EDA: BD 9A 2B LDA $2B9A,X C1/8EDD: C9 FF CMP #$FF C1/8EDF: F0 18 BEQ $8EF9 C1/8EE1: BD 9B 2B LDA $2B9B,X C1/8EE4: 10 0E BPL $8EF4 C1/8EE6: 80 11 BRA $8EF9 C1/8EE8: BD 86 2B LDA $2B86,X C1/8EEB: C9 FF CMP #$FF C1/8EED: F0 0A BEQ $8EF9 C1/8EEF: BD 87 2B LDA $2B87,X C1/8EF2: 30 05 BMI $8EF9 C1/8EF4: 20 40 8E JSR $8E40 C1/8EF7: 38 SEC C1/8EF8: 60 RTS C1/8EF9: 20 40 8E JSR $8E40 C1/8EFC: 18 CLC C1/8EFD: 60 RTS C1/8EFE: B9 4B 89 LDA $894B,Y C1/8F01: F0 05 BEQ $8F08 C1/8F03: 20 3D 90 JSR $903D C1/8F06: 80 03 BRA $8F0B C1/8F08: 20 76 8F JSR $8F76 C1/8F0B: 9C 0C 89 STZ $890C C1/8F0E: 20 BA 4B JSR $4BBA C1/8F11: A2 40 7E LDX #$7E40 C1/8F14: 8E AA 7B STX $7BAA C1/8F17: EE A9 7B INC $7BA9 C1/8F1A: 9C 02 7B STZ $7B02 C1/8F1D: 9C AF 7B STZ $7BAF C1/8F20: 9C B5 7B STZ $7BB5 C1/8F23: 20 40 8E JSR $8E40 C1/8F26: 18 CLC C1/8F27: 60 RTS C1/8F28: A9 01 LDA #$01 C1/8F2A: 8D 0C 89 STA $890C C1/8F2D: B9 4B 89 LDA $894B,Y C1/8F30: D0 0E BNE $8F40 C1/8F32: BD 9A 2B LDA $2B9A,X C1/8F35: 8D 0D 89 STA $890D C1/8F38: BD 9B 2B LDA $2B9B,X C1/8F3B: 8D 0E 89 STA $890E C1/8F3E: 80 0C BRA $8F4C C1/8F40: BD 86 2B LDA $2B86,X C1/8F43: 8D 0D 89 STA $890D C1/8F46: BD 87 2B LDA $2B87,X C1/8F49: 8D 0E 89 STA $890E C1/8F4C: B9 4B 89 LDA $894B,Y C1/8F4F: 1A INC C1/8F50: 8D 00 7B STA $7B00 C1/8F53: EE 02 7B INC $7B02 C1/8F56: 8E 03 7B STX $7B03 C1/8F59: B9 4B 89 LDA $894B,Y C1/8F5C: AA TAX C1/8F5D: BF 83 82 C1 LDA $C18283,X C1/8F61: 18 CLC C1/8F62: 69 03 ADC #$03 C1/8F64: 8D B6 7B STA $7BB6 C1/8F67: A9 B4 LDA #$B4 C1/8F69: 8D B7 7B STA $7BB7 C1/8F6C: A9 01 LDA #$01 C1/8F6E: 8D B5 7B STA $7BB5 C1/8F71: 20 40 8E JSR $8E40 C1/8F74: 18 CLC C1/8F75: 60 RTS ; [ ] hand_R2item: C1/8F76: AE 03 7B LDX $7B03 C1/8F79: AC 05 7B LDY $7B05 C1/8F7C: B9 86 2B LDA $2B86,Y C1/8F7F: DD 86 26 CMP $2686,X C1/8F82: D0 01 BNE $8F85 C1/8F84: 60 RTS C1/8F85: BD 86 26 LDA $2686,X C1/8F88: C9 FF CMP #$FF C1/8F8A: F0 11 BEQ $8F9D C1/8F8C: 20 18 8A JSR $8A18 C1/8F8F: BD 87 26 LDA $2687,X C1/8F92: 29 18 AND #$18 C1/8F94: F0 EE BEQ $8F84 C1/8F96: BD 8A 26 LDA $268A,X C1/8F99: 25 2C AND $2C C1/8F9B: D0 E7 BNE $8F84 C1/8F9D: B9 9A 2B LDA $2B9A,Y C1/8FA0: 8D 3B 7B STA $7B3B C1/8FA3: B9 9B 2B LDA $2B9B,Y C1/8FA6: 8D 3C 7B STA $7B3C C1/8FA9: BD 86 26 LDA $2686,X C1/8FAC: 8D 39 7B STA $7B39 C1/8FAF: BD 87 26 LDA $2687,X C1/8FB2: 8D 3A 7B STA $7B3A C1/8FB5: 20 D5 89 JSR $89D5 C1/8FB8: B0 CA BCS $8F84 C1/8FBA: AE 03 7B LDX $7B03 C1/8FBD: AC 05 7B LDY $7B05 C1/8FC0: 7B TDC C1/8FC1: AA TAX C1/8FC2: AC 05 7B LDY $7B05 C1/8FC5: B9 86 2B LDA $2B86,Y C1/8FC8: 9D 07 7B STA $7B07,X C1/8FCB: E8 INX C1/8FCC: C8 INY C1/8FCD: E0 05 00 CPX #$0005 C1/8FD0: D0 F3 BNE $8FC5 C1/8FD2: AE 03 7B LDX $7B03 C1/8FD5: AC 05 7B LDY $7B05 C1/8FD8: BD 86 26 LDA $2686,X C1/8FDB: 99 86 2B STA $2B86,Y C1/8FDE: BD 87 26 LDA $2687,X C1/8FE1: 99 87 2B STA $2B87,Y C1/8FE4: BD 88 26 LDA $2688,X C1/8FE7: 99 88 2B STA $2B88,Y C1/8FEA: BD 8A 26 LDA $268A,X C1/8FED: 99 8A 2B STA $2B8A,Y C1/8FF0: A9 01 LDA #$01 C1/8FF2: 99 89 2B STA $2B89,Y C1/8FF5: BD 89 26 LDA $2689,X C1/8FF8: C9 02 CMP #$02 C1/8FFA: 90 05 BCC $9001 C1/8FFC: DE 89 26 DEC $2689,X C1/8FFF: 80 13 BRA $9014 C1/9001: A9 FF LDA #$FF C1/9003: 9D 86 26 STA $2686,X C1/9006: A9 80 LDA #$80 C1/9008: 9D 87 26 STA $2687,X C1/900B: 9E 88 26 STZ $2688,X C1/900E: 9E 89 26 STZ $2689,X C1/9011: 9E 8A 26 STZ $268A,X C1/9014: AD 07 7B LDA $7B07 C1/9017: 85 40 STA $40 C1/9019: 20 B7 8C JSR $8CB7 C1/901C: 90 14 BCC $9032 C1/901E: 20 D2 8C JSR $8CD2 C1/9021: 7B TDC C1/9022: A8 TAY C1/9023: B9 07 7B LDA $7B07,Y C1/9026: 9D 86 26 STA $2686,X C1/9029: E8 INX C1/902A: C8 INY C1/902B: C0 05 00 CPY #$0005 C1/902E: D0 F3 BNE $9023 C1/9030: 80 0A BRA $903C C1/9032: BD 89 26 LDA $2689,X C1/9035: C9 63 CMP #$63 C1/9037: B0 03 BCS $903C C1/9039: FE 89 26 INC $2689,X C1/903C: 60 RTS ; [ ] hand_L2item: C1/903D: AE 03 7B LDX $7B03 C1/9040: AC 05 7B LDY $7B05 C1/9043: B9 9A 2B LDA $2B9A,Y C1/9046: DD 86 26 CMP $2686,X C1/9049: D0 01 BNE $904C C1/904B: 60 RTS C1/904C: BD 86 26 LDA $2686,X C1/904F: C9 FF CMP #$FF C1/9051: F0 11 BEQ $9064 C1/9053: 20 18 8A JSR $8A18 C1/9056: BD 87 26 LDA $2687,X C1/9059: 29 18 AND #$18 C1/905B: F0 EE BEQ $904B C1/905D: BD 8A 26 LDA $268A,X C1/9060: 25 2C AND $2C C1/9062: D0 E7 BNE $904B C1/9064: B9 86 2B LDA $2B86,Y C1/9067: 8D 3B 7B STA $7B3B C1/906A: B9 87 2B LDA $2B87,Y C1/906D: 8D 3C 7B STA $7B3C C1/9070: BD 86 26 LDA $2686,X C1/9073: 8D 39 7B STA $7B39 C1/9076: BD 87 26 LDA $2687,X C1/9079: 8D 3A 7B STA $7B3A C1/907C: 20 D5 89 JSR $89D5 C1/907F: B0 CA BCS $904B C1/9081: AE 03 7B LDX $7B03 C1/9084: AC 05 7B LDY $7B05 C1/9087: 7B TDC C1/9088: AA TAX C1/9089: AC 05 7B LDY $7B05 C1/908C: B9 9A 2B LDA $2B9A,Y C1/908F: 9D 07 7B STA $7B07,X C1/9092: E8 INX C1/9093: C8 INY C1/9094: E0 05 00 CPX #$0005 C1/9097: D0 F3 BNE $908C C1/9099: AE 03 7B LDX $7B03 C1/909C: AC 05 7B LDY $7B05 C1/909F: BD 86 26 LDA $2686,X C1/90A2: 99 9A 2B STA $2B9A,Y C1/90A5: BD 87 26 LDA $2687,X C1/90A8: 99 9B 2B STA $2B9B,Y C1/90AB: BD 88 26 LDA $2688,X C1/90AE: 99 9C 2B STA $2B9C,Y C1/90B1: BD 8A 26 LDA $268A,X C1/90B4: 99 9E 2B STA $2B9E,Y C1/90B7: A9 01 LDA #$01 C1/90B9: 99 9D 2B STA $2B9D,Y C1/90BC: BD 89 26 LDA $2689,X C1/90BF: C9 02 CMP #$02 C1/90C1: 90 05 BCC $90C8 C1/90C3: DE 89 26 DEC $2689,X C1/90C6: 80 13 BRA $90DB C1/90C8: A9 FF LDA #$FF C1/90CA: 9D 86 26 STA $2686,X C1/90CD: A9 80 LDA #$80 C1/90CF: 9D 87 26 STA $2687,X C1/90D2: 9E 88 26 STZ $2688,X C1/90D5: 9E 89 26 STZ $2689,X C1/90D8: 9E 8A 26 STZ $268A,X C1/90DB: AD 07 7B LDA $7B07 C1/90DE: 85 40 STA $40 C1/90E0: 20 B7 8C JSR $8CB7 C1/90E3: 90 14 BCC $90F9 C1/90E5: 20 D2 8C JSR $8CD2 C1/90E8: 7B TDC C1/90E9: A8 TAY C1/90EA: B9 07 7B LDA $7B07,Y C1/90ED: 9D 86 26 STA $2686,X C1/90F0: E8 INX C1/90F1: C8 INY C1/90F2: C0 05 00 CPY #$0005 C1/90F5: D0 F3 BNE $90EA C1/90F7: 80 0A BRA $9103 C1/90F9: BD 89 26 LDA $2689,X C1/90FC: C9 63 CMP #$63 C1/90FE: B0 03 BCS $9103 C1/9100: FE 89 26 INC $2689,X C1/9103: 60 RTS BUF_MADOU_TARGET: C1/9104: .DB $43, $43, $43, $6A, $03, $6A, $43, $43 BUF_MADOU: C1/910C: .DB $00, $01, $02, $03, $04, $05, $06, $07 BUF_MADOU2: C1/9114: .DB $00, $01, $02, $FF, $04, $FF, $FF, $FF ; [ Battle Menu Cursor State $41: ] key_disp: C1/911C: A9 40 LDA #$40 C1/911E: 8D C2 7B STA $7BC2 C1/9121: 4C 95 77 JMP $7795 ; ---------------------------------[ Battle Graphics: Battle Scripts ]---------------------------------- ; [ ] long_magic_init: C1/9124: 20 43 AB JSR $AB43 ; init single thread animation C1/9127: 9C B0 62 STZ $62B0 C1/912A: 20 E5 94 JSR $94E5 C1/912D: 20 F4 94 JSR $94F4 ; save monster sprite data C1/9130: 9C D0 62 STZ $62D0 C1/9133: 9C D1 62 STZ $62D1 C1/9136: 6B RTL ; [ ] long_magic_rset: C1/9137: 20 E5 94 JSR $94E5 C1/913A: 20 03 95 JSR $9503 ; restore monster sprite data C1/913D: 20 85 B0 JSR $B085 C1/9140: 9C D0 62 STZ $62D0 C1/9143: 9C D1 62 STZ $62D1 C1/9146: 6B RTL ; [ Battle Script Command $0C: Ready Stance/Jump ] C1/9147: 20 58 AB JSR $AB58 C1/914A: 20 C3 99 JSR $99C3 C1/914D: A0 01 00 LDY #$0001 C1/9150: B1 78 LDA ($78),Y ; attacker C1/9152: 48 PHA C1/9153: B1 76 LDA ($76),Y ; command C1/9155: 48 PHA C1/9156: C9 16 CMP #$16 C1/9158: D0 1A BNE $9174 C1/915A: A0 01 00 LDY #$0001 C1/915D: B1 78 LDA ($78),Y ; attacker C1/915F: C9 04 CMP #$04 C1/9161: 90 05 BCC $9168 ; branch if a character C1/9163: A2 22 10 LDX #$1022 C1/9166: 80 03 BRA $916B C1/9168: A2 50 0F LDX #$0F50 C1/916B: 86 1E STX $1E C1/916D: 7B TDC C1/916E: 20 B3 9C JSR $9CB3 ; init battle animation data C1/9171: 20 5B AC JSR $AC5B ; execute battle animation C1/9174: 68 PLA C1/9175: AA TAX ; X = command C1/9176: 68 PLA C1/9177: C9 04 CMP #$04 C1/9179: B0 12 BCS $918D ; return if a monster C1/917B: 0A ASL C1/917C: 0A ASL C1/917D: 0A ASL C1/917E: 0A ASL C1/917F: 0A ASL C1/9180: A8 TAY C1/9181: E0 FF 00 CPX #$00FF ; return if command = $FF C1/9184: F0 07 BEQ $918D C1/9186: BF 9A E4 C2 LDA $C2E49A,X ; set graphical action for waiting to attack C1/918A: 99 BB 61 STA $61BB,Y C1/918D: 60 RTS ; pointers to pre-attack animation data (black magic, white/effect magic, esper, lore, +$D07FB2) magic_init_no: C1/918E: .DW $0F88, $0F96, $0FA4, $0FB2 ; battle script command jump table C1/9196: .DW $9694, $97A7, $9855, $9609, $9694, $93E2, $B760, $9690 C1/91A6: .DW $93E2, $A79B, $9719, $A4B3, $9147, $99C3, $AB76, $FD67 C1/91B6: .DW $9835, $9728, $9329, $939C, $91CC, $A98F, $AB76, $AB76 C1/91C6: .DW $AB76, $AB76, $AB76 ; [ Battle Script Command $14: Misc. Monster Animations (AI Command $FA, Command $2B) ] pran2yos_long: C1/91CC: 22 3D E6 C2 JSL $C2E63D ; execute misc. monster animation C1/91D0: 60 RTS ; [ ] last_mon_clr: C1/91D1: 20 86 0E JSR $0E86 C1/91D4: 20 7C 25 JSR $257C ; load monster graphics C1/91D7: 22 6B A9 C2 JSL $C2A96B C1/91DB: 6B RTL ; [ ] all_obj_col_down: C1/91DC: EE BF 62 INC $62BF C1/91DF: 20 E5 94 JSR $94E5 C1/91E2: 7B TDC C1/91E3: 20 56 92 JSR $9256 C1/91E6: 48 PHA C1/91E7: 09 E0 ORA #$E0 C1/91E9: AA TAX C1/91EA: 85 14 STA $14 C1/91EC: 85 16 STA $16 C1/91EE: 85 18 STA $18 C1/91F0: A2 80 01 LDX #$0180 C1/91F3: 86 10 STX $10 C1/91F5: A9 40 LDA #$40 C1/91F7: 85 12 STA $12 C1/91F9: 20 53 EB JSR $EB53 C1/91FC: 68 PLA C1/91FD: 1A INC C1/91FE: C9 20 CMP #$20 C1/9200: D0 E1 BNE $91E3 C1/9202: 9C BF 62 STZ $62BF C1/9205: 7B TDC C1/9206: AA TAX C1/9207: 86 10 STX $10 C1/9209: 4C 3C C2 JMP $C23C ; clear color add/sub data all_obj_col_up: C1/920C: EE BF 62 INC $62BF C1/920F: 20 E5 94 JSR $94E5 C1/9212: 7B TDC C1/9213: AA TAX C1/9214: 9E 80 7F STZ $7F80,X C1/9217: E8 INX C1/9218: E0 80 00 CPX #$0080 C1/921B: D0 F7 BNE $9214 C1/921D: 20 2A 02 JSR $022A ; wait for vblank C1/9220: A9 0F LDA #$0F C1/9222: 8D AC 61 STA $61AC C1/9225: A9 1F LDA #$1F C1/9227: 20 56 92 JSR $9256 C1/922A: 48 PHA C1/922B: 09 E0 ORA #$E0 C1/922D: AA TAX C1/922E: 85 14 STA $14 C1/9230: 85 16 STA $16 C1/9232: 85 18 STA $18 C1/9234: A2 80 01 LDX #$0180 C1/9237: 86 10 STX $10 C1/9239: A9 40 LDA #$40 C1/923B: 85 12 STA $12 C1/923D: 20 53 EB JSR $EB53 C1/9240: 68 PLA C1/9241: 3A DEC C1/9242: D0 E3 BNE $9227 C1/9244: A9 30 LDA #$30 C1/9246: 20 5E 92 JSR $925E C1/9249: 20 56 92 JSR $9256 C1/924C: 9C BF 62 STZ $62BF C1/924F: 7B TDC C1/9250: AA TAX C1/9251: 86 10 STX $10 C1/9253: 4C 3C C2 JMP $C23C ; clear color add/sub data wait_last: C1/9256: 48 PHA C1/9257: A9 04 LDA #$04 C1/9259: 20 B6 9B JSR $9BB6 ; wait 4 frames C1/925C: 68 PLA C1/925D: 60 RTS set_obj_all_pri: C1/925E: 8D BD 61 STA $61BD C1/9261: 8D DD 61 STA $61DD C1/9264: 8D FD 61 STA $61FD C1/9267: 8D 1D 62 STA $621D C1/926A: 60 RTS last_hdma_set: C1/926B: A2 02 02 LDX #$0202 ; add bg2 C1/926E: 86 10 STX $10 C1/9270: A9 10 LDA #$10 ; affect bg1 C1/9272: 4C 3C C2 JMP $C23C ; set color add/sub data last_scene_chg: C1/9275: 9C 80 7B STZ $7B80 C1/9278: EE B8 EC INC $ECB8 ; increment battle bg index C1/927B: A9 62 LDA #$62 C1/927D: 8D 72 89 STA $8972 C1/9280: 9C 1D 20 STZ $201D C1/9283: 9C 1E 20 STZ $201E C1/9286: AD B8 EC LDA $ECB8 C1/9289: 48 PHA C1/928A: 20 D1 1B JSR $1BD1 C1/928D: 20 2A 02 JSR $022A ; wait for vblank C1/9290: 7B TDC C1/9291: AA TAX C1/9292: 8E B2 64 STX $64B2 C1/9295: E6 97 INC $97 C1/9297: A9 08 LDA #$08 C1/9299: 20 B6 9B JSR $9BB6 ; wait 8 frames C1/929C: AD B8 EC LDA $ECB8 C1/929F: C9 36 CMP #$36 C1/92A1: D0 21 BNE $92C4 C1/92A3: AE B2 64 LDX $64B2 C1/92A6: E0 E0 FF CPX #$FFE0 C1/92A9: D0 19 BNE $92C4 C1/92AB: EE ED E9 INC $E9ED ; disable sound effects C1/92AE: A9 10 LDA #$10 C1/92B0: 8D 00 13 STA $1300 C1/92B3: A9 52 LDA #$52 ; song $52 (dancing mad 5) C1/92B5: 8D 01 13 STA $1301 C1/92B8: A9 FF LDA #$FF C1/92BA: 8D 02 13 STA $1302 C1/92BD: 22 04 00 C5 JSL $C50004 ; spc command C1/92C1: 9C ED E9 STZ $E9ED ; enable sound effects C1/92C4: AE B2 64 LDX $64B2 C1/92C7: CA DEX C1/92C8: 8E B2 64 STX $64B2 C1/92CB: E0 68 FF CPX #$FF68 C1/92CE: D0 C7 BNE $9297 C1/92D0: 9C B0 64 STZ $64B0 C1/92D3: 68 PLA C1/92D4: 8D DF E9 STA $E9DF C1/92D7: 48 PHA C1/92D8: 20 DF 1B JSR $1BDF C1/92DB: 20 2A 02 JSR $022A ; wait for vblank C1/92DE: 20 07 B0 JSR $B007 ; wait for scanline 160 C1/92E1: 7B TDC C1/92E2: AA TAX C1/92E3: 8E B2 64 STX $64B2 C1/92E6: 20 2A 02 JSR $022A ; wait for vblank C1/92E9: 68 PLA C1/92EA: 20 DC 1B JSR $1BDC C1/92ED: 20 07 B0 JSR $B007 ; wait for scanline 160 C1/92F0: A9 61 LDA #$61 C1/92F2: 8D 72 89 STA $8972 C1/92F5: 20 76 00 JSR $0076 C1/92F8: 20 6B 92 JSR $926B C1/92FB: 7B TDC C1/92FC: 20 5E 92 JSR $925E C1/92FF: 20 0C 92 JSR $920C C1/9302: A9 17 LDA #$17 C1/9304: 8D 91 89 STA $8991 C1/9307: 8D 8D 89 STA $898D C1/930A: 9C 0F EC STZ $EC0F ; enable pause C1/930D: 9C 9A 62 STZ $629A C1/9310: 9C 85 62 STZ $6285 C1/9313: 9C EF E9 STZ $E9EF ; start battle time C1/9316: AD B8 EC LDA $ECB8 C1/9319: C9 36 CMP #$36 C1/931B: D0 0B BNE $9328 C1/931D: AD 44 2F LDA $2F44 C1/9320: 49 FF EOR #$FF C1/9322: 8D E6 E9 STA $E9E6 C1/9325: 9C 82 62 STZ $6282 C1/9328: 60 RTS ; [ Battle Script Command $12: Scroll Battle BG (final battle) ] C1/9329: A0 01 00 LDY #$0001 C1/932C: B1 76 LDA ($76),Y C1/932E: 10 07 BPL $9337 C1/9330: 29 7F AND #$7F C1/9332: 91 76 STA ($76),Y C1/9334: 20 75 92 JSR $9275 C1/9337: A0 02 00 LDY #$0002 C1/933A: AD 1E 20 LDA $201E C1/933D: 91 76 STA ($76),Y C1/933F: C8 INY C1/9340: B1 76 LDA ($76),Y C1/9342: 48 PHA C1/9343: 7B TDC C1/9344: 91 76 STA ($76),Y C1/9346: 22 68 E6 C2 JSL $C2E668 ; execute monster entry/exit animation C1/934A: 7B TDC C1/934B: AA TAX C1/934C: 9E C2 62 STZ $62C2,X C1/934F: 9E 8B 61 STZ $618B,X C1/9352: E8 INX C1/9353: E0 06 00 CPX #$0006 C1/9356: D0 F4 BNE $934C C1/9358: 9C 1E 20 STZ $201E C1/935B: 9C AB 61 STZ $61AB C1/935E: 9C 2F 2F STZ $2F2F C1/9361: A9 FF LDA #$FF C1/9363: 8D 91 61 STA $6191 C1/9366: 20 86 0E JSR $0E86 C1/9369: 20 7C 25 JSR $257C ; load monster graphics C1/936C: 20 DD 22 JSR $22DD C1/936F: 20 72 3E JSR $3E72 C1/9372: 20 88 15 JSR $1588 C1/9375: 20 C1 25 JSR $25C1 ; copy monster graphics to vram (at next vblank) C1/9378: 7B TDC C1/9379: A0 02 00 LDY #$0002 C1/937C: 91 76 STA ($76),Y C1/937E: C8 INY C1/937F: 68 PLA C1/9380: 91 76 STA ($76),Y C1/9382: 8D 2F 2F STA $2F2F C1/9385: 8D AB 61 STA $61AB C1/9388: 48 PHA C1/9389: A0 01 00 LDY #$0001 C1/938C: AD 48 2F LDA $2F48 C1/938F: 29 0F AND #$0F C1/9391: 91 76 STA ($76),Y C1/9393: 22 68 E6 C2 JSL $C2E668 ; execute monster entry/exit animation C1/9397: 68 PLA C1/9398: 8D 1E 20 STA $201E C1/939B: 60 RTS ; [ Battle Script Command $13: Monster Entry/Exit ] ; b1 = entry/exit type ; b2 = ; b3 = C1/939C: A0 03 00 LDY #$0003 C1/939F: B1 76 LDA ($76),Y C1/93A1: F0 2D BEQ $93D0 ; branch if only current monster is affected C1/93A3: 85 10 STA $10 C1/93A5: 7B TDC C1/93A6: AA TAX C1/93A7: 46 10 LSR $10 C1/93A9: 90 06 BCC $93B1 ; branch if monster is not affected C1/93AB: 9E C2 62 STZ $62C2,X ; C1/93AE: 9E 8B 61 STZ $618B,X ; C1/93B1: E8 INX ; next monster C1/93B2: E0 06 00 CPX #$0006 C1/93B5: D0 F0 BNE $93A7 C1/93B7: A0 01 00 LDY #$0001 C1/93BA: B1 76 LDA ($76),Y C1/93BC: C9 0E CMP #$0E C1/93BE: F0 0B BEQ $93CB ; branch if entry/exit type $0E (chadarnook) C1/93C0: AD BA 64 LDA $64BA C1/93C3: D0 06 BNE $93CB C1/93C5: 20 7C 25 JSR $257C ; load monster graphics C1/93C8: 20 C1 25 JSR $25C1 ; copy monster graphics to vram (at next vblank) C1/93CB: 22 68 E6 C2 JSL $C2E668 ; execute monster entry/exit animation C1/93CF: 60 RTS C1/93D0: A0 02 00 LDY #$0002 C1/93D3: AD 1E 20 LDA $201E C1/93D6: 2D AB 61 AND $61AB C1/93D9: 31 76 AND ($76),Y ; affected monsters C1/93DB: F0 04 BEQ $93E1 C1/93DD: 22 68 E6 C2 JSL $C2E668 ; execute monster entry/exit animation C1/93E1: 60 RTS ; [ Battle Script Command: No Effect ] C1/93E2: 60 RTS ; [ Execute Monster Death Animations ] check_monster: C1/93E3: AD 44 2F LDA $2F44 ; invisible monsters C1/93E6: 49 FF EOR #$FF C1/93E8: 8D E6 E9 STA $E9E6 C1/93EB: AD 82 62 LDA $6282 C1/93EE: F0 03 BEQ $93F3 C1/93F0: 9C E6 E9 STZ $E9E6 C1/93F3: AD 2F 2F LDA $2F2F ; monsters that are not dead (invert to get monsters that are dead) C1/93F6: 49 FF EOR #$FF C1/93F8: 2D 1E 20 AND $201E ; monsters that are visible C1/93FB: 2D AB 61 AND $61AB ; monsters that are shown C1/93FE: D0 03 BNE $9403 C1/9400: 4C 92 94 JMP $9492 C1/9403: 48 PHA ; A = monsters that are dying C1/9404: 9C 67 7B STZ $7B67 C1/9407: 20 2A 02 JSR $022A ; wait for vblank C1/940A: 20 59 1E JSR $1E59 ; clear bg1 tile data in vram C1/940D: 20 ED 1F JSR $1FED ; clear bg tile data buffer ($01EE) C1/9410: 20 F9 B0 JSR $B0F9 ; copy bg3 tile data to vram C1/9413: 20 F4 94 JSR $94F4 ; save monster sprite data C1/9416: 7B TDC C1/9417: AA TAX C1/9418: BF 5D B0 C2 LDA $C2B05D,X ; monster death animation palette (16 colors) C1/941C: 9D 60 7F STA $7F60,X C1/941F: E8 INX C1/9420: E0 20 00 CPX #$0020 C1/9423: D0 F3 BNE $9418 C1/9425: AD 8A 62 LDA $628A C1/9428: F0 0E BEQ $9438 ; branch if not in flashback mode C1/942A: A2 60 01 LDX #$0160 C1/942D: 86 18 STX $18 C1/942F: A2 80 01 LDX #$0180 C1/9432: 86 1A STX $1A C1/9434: 22 42 B4 C2 JSL $C2B442 ; filter colors (yellow) C1/9438: A2 02 02 LDX #$0202 ; add bg2 C1/943B: 86 10 STX $10 C1/943D: A9 10 LDA #$10 ; affect sprites C1/943F: 20 3C C2 JSR $C23C ; set color add/sub data C1/9442: 68 PLA C1/9443: 85 10 STA $10 ; monsters that are dying C1/9445: 85 12 STA $12 C1/9447: 7B TDC C1/9448: AA TAX C1/9449: 46 12 LSR $12 C1/944B: 90 14 BCC $9461 ; branch if this monster is not dying C1/944D: BD DB 80 LDA $80DB,X ; set palette to 3 C1/9450: 29 C1 AND #$C1 C1/9452: 09 06 ORA #$06 C1/9454: 9D DB 80 STA $80DB,X C1/9457: A9 01 LDA #$01 C1/9459: 9D DC 80 STA $80DC,X ; C1/945C: BD C3 80 LDA $80C3,X ; $14 = x position C1/945F: 85 14 STA $14 C1/9461: E8 INX ; next monster C1/9462: E8 INX C1/9463: E0 0C 00 CPX #$000C C1/9466: D0 E1 BNE $9449 C1/9468: A5 14 LDA $14 C1/946A: 85 10 STA $10 C1/946C: A9 2D LDA #$2D ; sound effect $2D (monster death) C1/946E: 20 EF 17 JSR $17EF ; play animation sound effect C1/9471: A9 20 LDA #$20 C1/9473: 48 PHA C1/9474: 20 2A 02 JSR $022A ; wait for vblank C1/9477: 20 C0 94 JSR $94C0 ; update monster death palette C1/947A: 68 PLA C1/947B: 3A DEC ; next frame C1/947C: D0 F5 BNE $9473 C1/947E: AD 2F 2F LDA $2F2F ; monsters that are not dead C1/9481: 8D 1E 20 STA $201E ; monsters shown C1/9484: 7B TDC C1/9485: AA TAX C1/9486: 86 10 STX $10 C1/9488: 20 3C C2 JSR $C23C ; clear color add/sub data C1/948B: 20 03 95 JSR $9503 ; restore monster sprite data C1/948E: 22 97 01 C1 JSL $C10197 ; update monster names C1/9492: AD 1E 20 LDA $201E ; monsters shown C1/9495: CD 2F 2F CMP $2F2F ; monsters that are not dead C1/9498: F0 09 BEQ $94A3 C1/949A: AD 1E 20 LDA $201E C1/949D: 0D 2F 2F ORA $2F2F ; monsters that are not dead C1/94A0: 8D 1E 20 STA $201E C1/94A3: 7B TDC C1/94A4: AA TAX C1/94A5: AD 54 2F LDA $2F54 ; h-flip for controlled targets C1/94A8: 85 10 STA $10 C1/94AA: A9 21 LDA #$21 C1/94AC: 9D DC 80 STA $80DC,X ; tile index = $21 C1/94AF: A5 10 LDA $10 C1/94B1: 29 01 AND #$01 C1/94B3: 9D 7E 61 STA $617E,X ; monster h flip C1/94B6: 46 10 LSR $10 C1/94B8: E8 INX C1/94B9: E8 INX C1/94BA: E0 0C 00 CPX #$000C C1/94BD: D0 EB BNE $94AA C1/94BF: 60 RTS ; [ Update Monster Death Palette ] color11_down: C1/94C0: 7B TDC C1/94C1: A8 TAY C1/94C2: C2 20 REP #$20 C1/94C4: A2 10 00 LDX #$0010 ; 10 colors C1/94C7: A9 E1 00 LDA #$00E1 ; color value to subtract = 1 (red, green, and blue) C1/94CA: 85 14 STA $14 C1/94CC: 85 16 STA $16 C1/94CE: 85 18 STA $18 C1/94D0: 20 6E FC JSR $FC6E ; init color add/sub math C1/94D3: B9 60 7F LDA $7F60,Y C1/94D6: 20 99 FC JSR $FC99 ; subtract color C1/94D9: 99 60 7F STA $7F60,Y C1/94DC: C8 INY ; next color C1/94DD: C8 INY C1/94DE: CA DEX C1/94DF: D0 F2 BNE $94D3 C1/94E1: 7B TDC C1/94E2: E2 20 SEP #$20 C1/94E4: 60 RTS ; [ Save Color Palettes ] color_copy: C1/94E5: 7B TDC C1/94E6: AA TAX C1/94E7: BD 00 7E LDA $7E00,X C1/94EA: 9D 00 7C STA $7C00,X C1/94ED: E8 INX C1/94EE: E0 00 02 CPX #$0200 C1/94F1: D0 F4 BNE $94E7 C1/94F3: 60 RTS ; [ Save Monster Sprite Data ] push_mon_pal: C1/94F4: 7B TDC C1/94F5: AA TAX C1/94F6: BD DB 80 LDA $80DB,X C1/94F9: 9D 0B 81 STA $810B,X C1/94FC: E8 INX C1/94FD: E0 0C 00 CPX #$000C C1/9500: D0 F4 BNE $94F6 C1/9502: 60 RTS ; [ Restore Monster Sprite Data ] pull_mon_pal: C1/9503: 7B TDC C1/9504: AA TAX C1/9505: BD 0B 81 LDA $810B,X C1/9508: 9D DB 80 STA $80DB,X C1/950B: E8 INX C1/950C: E0 0C 00 CPX #$000C C1/950F: D0 F4 BNE $9505 C1/9511: 60 RTS ; [ Battle Graphics Command $04: Execute Battle Script ] battle_anim: C1/9512: 20 E5 94 JSR $94E5 ; save color palettes C1/9515: A2 6E 2D LDX #$2D6E ; init pointer to battle script commands C1/9518: 86 76 STX $76 C1/951A: A2 6E 2C LDX #$2C6E ; init pointer to battle script data C1/951D: 86 78 STX $78 C1/951F: 9C AE 60 STZ $60AE ; clear swdtech hit index C1/9522: 9C A4 62 STZ $62A4 ; C1/9525: A9 17 LDA #$17 C1/9527: 8D 8D 89 STA $898D ; set main screen designation ($212C) C1/952A: 9C 3D 7B STZ $7B3D ; C1/952D: 9C D0 62 STZ $62D0 ; C1/9530: 9C D1 62 STZ $62D1 ; C1/9533: 7B TDC C1/9534: AA TAX C1/9535: 8E A5 62 STX $62A5 ; C1/9538: 8E A7 62 STX $62A7 ; C1/953B: B2 76 LDA ($76) ; battle script command C1/953D: C9 FF CMP #$FF C1/953F: F0 12 BEQ $9553 ; branch if end of script C1/9541: 20 69 95 JSR $9569 ; execute battle script command C1/9544: C2 20 REP #$20 C1/9546: A5 76 LDA $76 ; increment battle script command pointer C1/9548: 18 CLC C1/9549: 69 04 00 ADC #$0004 C1/954C: 85 76 STA $76 C1/954E: 7B TDC C1/954F: E2 20 SEP #$20 C1/9551: 80 E0 BRA $9533 ; next command C1/9553: AD 8C 62 LDA $628C ; branch if seamless scripts are enabled C1/9556: D0 10 BNE $9568 C1/9558: 22 FB 01 C1 JSL $C101FB ; wait 4 frames C1/955C: 22 FB 01 C1 JSL $C101FB C1/9560: 22 FB 01 C1 JSL $C101FB C1/9564: 22 FB 01 C1 JSL $C101FB C1/9568: 6B RTL ; [ Execute Battle Script Command ] anim_jmp0: C1/9569: 0A ASL C1/956A: AA TAX C1/956B: 7C 96 91 JMP ($9196,X) ; [ Increment Battle Script Data Pointer ] anim_info_inc: C1/956E: C2 20 REP #$20 C1/9570: A5 78 LDA $78 C1/9572: 18 CLC C1/9573: 69 10 00 ADC #$0010 C1/9576: 85 78 STA $78 C1/9578: 7B TDC C1/9579: E2 20 SEP #$20 C1/957B: 60 RTS ; [ Update Character/Monster Order Priority ] sort_y_poi: C1/957C: AD 0C 7B LDA $7B0C ; return if character/monster order priority data is valid C1/957F: F0 01 BEQ $9582 C1/9581: 60 RTS C1/9582: 7B TDC C1/9583: AA TAX C1/9584: A9 FF LDA #$FF C1/9586: 9D E8 80 STA $80E8,X ; C1/9589: E8 INX C1/958A: E8 INX C1/958B: E0 0C 00 CPX #$000C C1/958E: D0 F4 BNE $9584 C1/9590: C2 20 REP #$20 C1/9592: 7B TDC C1/9593: AA TAX C1/9594: A8 TAY C1/9595: 64 10 STZ $10 C1/9597: BD 43 80 LDA $8043,X ; character y position (bottom) C1/959A: 99 1F 7A STA $7A1F,Y C1/959D: A5 10 LDA $10 C1/959F: 99 21 7A STA $7A21,Y ; character number C1/95A2: E6 10 INC $10 C1/95A4: E8 INX C1/95A5: E8 INX C1/95A6: C8 INY C1/95A7: C8 INY C1/95A8: C8 INY C1/95A9: C8 INY C1/95AA: C0 10 00 CPY #$0010 C1/95AD: D0 E8 BNE $9597 C1/95AF: 7B TDC C1/95B0: AA TAX C1/95B1: BD 4B 80 LDA $804B,X ; monster y position (bottom) C1/95B4: 99 1F 7A STA $7A1F,Y C1/95B7: A5 10 LDA $10 C1/95B9: 99 21 7A STA $7A21,Y ; monster number C1/95BC: E6 10 INC $10 C1/95BE: E8 INX C1/95BF: E8 INX C1/95C0: C8 INY C1/95C1: C8 INY C1/95C2: C8 INY C1/95C3: C8 INY C1/95C4: C0 28 00 CPY #$0028 C1/95C7: D0 E8 BNE $95B1 C1/95C9: 7B TDC C1/95CA: AA TAX C1/95CB: 64 10 STZ $10 C1/95CD: BD 1F 7A LDA $7A1F,X ; compare y position to next character/monster C1/95D0: DD 23 7A CMP $7A23,X C1/95D3: F0 20 BEQ $95F5 C1/95D5: B0 1E BCS $95F5 C1/95D7: E6 10 INC $10 C1/95D9: BD 23 7A LDA $7A23,X ; shift all values (put characters/monster in order of bottom y position) C1/95DC: 48 PHA C1/95DD: BD 1F 7A LDA $7A1F,X C1/95E0: 9D 23 7A STA $7A23,X C1/95E3: 68 PLA C1/95E4: 9D 1F 7A STA $7A1F,X C1/95E7: BD 25 7A LDA $7A25,X C1/95EA: 48 PHA C1/95EB: BD 21 7A LDA $7A21,X C1/95EE: 9D 25 7A STA $7A25,X C1/95F1: 68 PLA C1/95F2: 9D 21 7A STA $7A21,X C1/95F5: E8 INX C1/95F6: E8 INX C1/95F7: E8 INX C1/95F8: E8 INX C1/95F9: E0 24 00 CPX #$0024 C1/95FC: D0 CF BNE $95CD C1/95FE: A5 10 LDA $10 C1/9600: D0 C7 BNE $95C9 C1/9602: 7B TDC C1/9603: E2 20 SEP #$20 C1/9605: EE 0C 7B INC $7B0C ; invalidate character/monster order priority data C1/9608: 60 RTS ; [ Battle Script Command $03: Display Damage Numerals (multiple) ] C1/9609: 20 FA A5 JSR $A5FA C1/960C: 20 2A 02 JSR $022A ; wait for vblank C1/960F: 7B TDC C1/9610: AA TAX C1/9611: 1D 3F 7B ORA $7B3F,X C1/9614: E8 INX C1/9615: E0 0A 00 CPX #$000A C1/9618: D0 F7 BNE $9611 C1/961A: 0D 1A 63 ORA $631A C1/961D: 0D 1B 63 ORA $631B C1/9620: 0D 1C 63 ORA $631C C1/9623: 0D 1D 63 ORA $631D C1/9626: D0 E4 BNE $960C C1/9628: 60 RTS ; [ ] up_window_color_hdma_set: C1/9629: 7B TDC C1/962A: AA TAX C1/962B: A9 E0 LDA #$E0 C1/962D: 85 10 STA $10 C1/962F: 64 1A STZ $1A C1/9631: A9 02 LDA #$02 C1/9633: 9D B4 89 STA $89B4,X C1/9636: A9 81 LDA #$81 C1/9638: 9D B5 89 STA $89B5,X C1/963B: A5 10 LDA $10 C1/963D: 9D B6 89 STA $89B6,X C1/9640: E6 1A INC $1A C1/9642: A5 1A LDA $1A C1/9644: C9 02 CMP #$02 C1/9646: D0 0A BNE $9652 C1/9648: 64 1A STZ $1A C1/964A: A5 10 LDA $10 C1/964C: C9 FF CMP #$FF C1/964E: F0 02 BEQ $9652 C1/9650: E6 10 INC $10 C1/9652: E8 INX C1/9653: E8 INX C1/9654: E8 INX C1/9655: E8 INX C1/9656: E0 80 00 CPX #$0080 C1/9659: D0 D6 BNE $9631 C1/965B: 20 73 96 JSR $9673 C1/965E: 60 RTS C1/965F: 7B TDC C1/9660: AA TAX C1/9661: A9 E0 LDA #$E0 C1/9663: 9D 96 89 STA $8996,X C1/9666: E8 INX C1/9667: E8 INX C1/9668: E8 INX C1/9669: E8 INX C1/966A: E0 A0 00 CPX #$00A0 C1/966D: D0 F4 BNE $9663 C1/966F: 20 8A C3 JSR $C38A C1/9672: 60 RTS C1/9673: A9 20 LDA #$20 C1/9675: 8D BD 61 STA $61BD C1/9678: 8D DD 61 STA $61DD C1/967B: 8D FD 61 STA $61FD C1/967E: 8D 1D 62 STA $621D C1/9681: 7B TDC C1/9682: AA TAX C1/9683: A9 21 LDA #$21 C1/9685: 9D DC 80 STA $80DC,X C1/9688: E8 INX C1/9689: E8 INX C1/968A: E0 0C 00 CPX #$000C C1/968D: D0 F6 BNE $9685 C1/968F: 60 RTS ; [ Battle Script Command $07: Increment Battle Script Data Pointer ] C1/9690: 20 6E 95 JSR $956E C1/9693: 60 RTS ; [ Battle Script Command: No Effect ] C1/9694: 60 RTS ; [ ] anim_window_put_big_init: C1/9695: A9 81 LDA #$81 C1/9697: 8D C3 E9 STA $E9C3 C1/969A: A2 00 58 LDX #$5800 C1/969D: 8E BF E9 STX $E9BF C1/96A0: 9C C1 E9 STZ $E9C1 C1/96A3: 9C C2 E9 STZ $E9C2 C1/96A6: 9C AC 62 STZ $62AC C1/96A9: 60 RTS ; [ Battle Event Command $11: Open Dialog Window ] good_anim_window_put_big_open: C1/96AA: 4C 12 43 JMP $4312 ; [ Battle Event Command $10: Close Dialog Window ] good_anim_window_put_big_close: C1/96AD: 20 B9 43 JSR $43B9 C1/96B0: A9 3C LDA #$3C C1/96B2: 8D C3 7B STA $7BC3 C1/96B5: A9 02 LDA #$02 C1/96B7: 8D C2 7B STA $7BC2 C1/96BA: 20 2A 02 JSR $022A ; wait for vblank C1/96BD: 9C D5 64 STZ $64D5 C1/96C0: 60 RTS ; [ Battle Event Command $01: Display Long Battle Dialog ] good_anim_window_put_big: C1/96C1: 20 E4 42 JSR $42E4 C1/96C4: 20 0C 50 JSR $500C C1/96C7: 20 95 96 JSR $9695 C1/96CA: 20 1A 98 JSR $981A C1/96CD: 20 D5 5D JSR $5DD5 C1/96D0: 20 E4 42 JSR $42E4 C1/96D3: 20 0C 50 JSR $500C C1/96D6: E2 10 SEP #$10 C1/96D8: 7B TDC C1/96D9: AA TAX C1/96DA: C2 20 REP #$20 C1/96DC: A9 00 01 LDA #$0100 ; nonzero dp C1/96DF: 48 PHA C1/96E0: 2B PLD C1/96E1: B5 02 LDA $02,X C1/96E3: 9D 83 4D STA $4D83,X C1/96E6: B5 06 LDA $06,X C1/96E8: 9D 87 4D STA $4D87,X C1/96EB: B5 0A LDA $0A,X C1/96ED: 9D 8B 4D STA $4D8B,X C1/96F0: B5 0E LDA $0E,X C1/96F2: 9D 8F 4D STA $4D8F,X C1/96F5: 8A TXA C1/96F6: 18 CLC C1/96F7: 69 10 00 ADC #$0010 C1/96FA: AA TAX C1/96FB: E0 C0 CPX #$C0 C1/96FD: D0 E2 BNE $96E1 C1/96FF: A9 00 00 LDA #$0000 C1/9702: 48 PHA C1/9703: 2B PLD C1/9704: E2 20 SEP #$20 C1/9706: C2 10 REP #$10 C1/9708: 20 2A 02 JSR $022A ; wait for vblank C1/970B: 60 RTS ; [ Battle Event Command $00: Display Short Battle Dialog ] good_anim_window_put_b: C1/970C: 20 0F 98 JSR $980F C1/970F: 20 1A 98 JSR $981A C1/9712: 9C AC 62 STZ $62AC C1/9715: 20 7A 98 JSR $987A C1/9718: 60 RTS ; [ Battle Script Command $0A: ] C1/9719: 20 12 43 JSR $4312 C1/971C: 20 95 96 JSR $9695 C1/971F: 20 FE 98 JSR $98FE C1/9722: 20 D5 5D JSR $5DD5 C1/9725: 4C CC 43 JMP $43CC ; [ Battle Script Command $11: Monster Special Attack ] C1/9728: A9 0C LDA #$0C C1/972A: 20 C4 98 JSR $98C4 C1/972D: 20 61 99 JSR $9961 C1/9730: A9 7E LDA #$7E C1/9732: 8D D9 88 STA $88D9 C1/9735: A2 D5 57 LDX #$57D5 C1/9738: 8E D7 88 STX $88D7 C1/973B: A9 CF LDA #$CF C1/973D: 85 12 STA $12 C1/973F: A0 01 00 LDY #$0001 C1/9742: C2 20 REP #$20 C1/9744: B1 76 LDA ($76),Y C1/9746: 0A ASL C1/9747: 85 10 STA $10 C1/9749: 0A ASL C1/974A: 0A ASL C1/974B: 18 CLC C1/974C: 65 10 ADC $10 C1/974E: 18 CLC C1/974F: 69 D0 D0 ADC #$D0D0 ; $CFD0D0 (monster special attack names) C1/9752: 85 10 STA $10 C1/9754: 7B TDC C1/9755: E2 20 SEP #$20 C1/9757: A8 TAY C1/9758: B7 10 LDA [$10],Y C1/975A: C9 FF CMP #$FF C1/975C: F0 09 BEQ $9767 C1/975E: 99 D5 57 STA $57D5,Y C1/9761: C8 INY C1/9762: C0 0A 00 CPY #$000A C1/9765: D0 F1 BNE $9758 C1/9767: 7B TDC C1/9768: 99 D5 57 STA $57D5,Y C1/976B: A9 01 LDA #$01 C1/976D: 8D AC 62 STA $62AC C1/9770: AD 8D 89 LDA $898D C1/9773: 48 PHA C1/9774: A9 12 LDA #$12 C1/9776: 8D 8D 89 STA $898D C1/9779: 20 D5 5D JSR $5DD5 C1/977C: 20 87 98 JSR $9887 C1/977F: 20 26 1F JSR $1F26 C1/9782: 68 PLA C1/9783: 8D 8D 89 STA $898D C1/9786: A9 20 LDA #$20 C1/9788: 20 B6 9B JSR $9BB6 ; wait 32 frames C1/978B: A9 12 LDA #$12 C1/978D: 8D 8D 89 STA $898D C1/9790: 20 17 99 JSR $9917 C1/9793: 20 2A 02 JSR $022A ; wait for vblank C1/9796: A9 17 LDA #$17 C1/9798: 8D 8D 89 STA $898D C1/979B: 7B TDC C1/979C: AA TAX C1/979D: 8E F5 4A STX $4AF5 C1/97A0: 60 RTS C1/97A1: .DB $0F, $0E, $80, $00, $81, $0C ; [ Battle Script Command $01: Show Attack Name ] ; b1 = ; b2 = attack number ; b3 = C1/97A7: A0 01 00 LDY #$0001 C1/97AA: B1 76 LDA ($76),Y ; C1/97AC: AA TAX C1/97AD: BF A1 97 C1 LDA $C197A1,X C1/97B1: 48 PHA C1/97B2: AA TAX C1/97B3: C8 INY C1/97B4: B1 76 LDA ($76),Y ; attack number C1/97B6: 48 PHA C1/97B7: DA PHX C1/97B8: A9 12 LDA #$12 C1/97BA: 8D 8D 89 STA $898D ; enable sprites and bg2 only on main screen C1/97BD: A9 0C LDA #$0C C1/97BF: 20 C4 98 JSR $98C4 ; C1/97C2: 20 61 99 JSR $9961 C1/97C5: A9 7E LDA #$7E C1/97C7: 8D D9 88 STA $88D9 C1/97CA: A2 D5 57 LDX #$57D5 C1/97CD: 8E D7 88 STX $88D7 C1/97D0: FA PLX C1/97D1: 8A TXA C1/97D2: 8D D5 57 STA $57D5 C1/97D5: 68 PLA C1/97D6: 8D D6 57 STA $57D6 C1/97D9: 9C D7 57 STZ $57D7 C1/97DC: 68 PLA C1/97DD: 10 04 BPL $97E3 C1/97DF: 22 11 BB C2 JSL $C2BB11 C1/97E3: A9 01 LDA #$01 C1/97E5: 8D AC 62 STA $62AC C1/97E8: 20 D5 5D JSR $5DD5 C1/97EB: 20 87 98 JSR $9887 C1/97EE: 20 26 1F JSR $1F26 C1/97F1: A9 17 LDA #$17 C1/97F3: 8D 8D 89 STA $898D C1/97F6: 20 A7 98 JSR $98A7 C1/97F9: A9 12 LDA #$12 C1/97FB: 8D 8D 89 STA $898D C1/97FE: 20 17 99 JSR $9917 C1/9801: 20 2A 02 JSR $022A ; wait for vblank C1/9804: A9 17 LDA #$17 C1/9806: 8D 8D 89 STA $898D C1/9809: 7B TDC C1/980A: AA TAX C1/980B: 8E F5 4A STX $4AF5 C1/980E: 60 RTS init_up_mess: C1/980F: A9 0B LDA #$0B C1/9811: 20 C4 98 JSR $98C4 C1/9814: 20 26 1F JSR $1F26 C1/9817: 4C 80 99 JMP $9980 get_good_pointer: C1/981A: A9 D0 LDA #$D0 C1/981C: 8D D9 88 STA $88D9 C1/981F: A0 01 00 LDY #$0001 C1/9822: B7 8F LDA [$8F],Y C1/9824: C2 20 REP #$20 C1/9826: 0A ASL C1/9827: AA TAX C1/9828: BF 00 D0 D0 LDA $D0D000,X ; pointer to long battle dialog C1/982C: 8D D7 88 STA $88D7 C1/982F: E6 8F INC $8F C1/9831: 7B TDC C1/9832: E2 20 SEP #$20 C1/9834: 60 RTS ; [ Battle Script Command $10: Show Short Battle Dialog ] C1/9835: 20 0F 98 JSR $980F C1/9838: A9 CF LDA #$CF C1/983A: 8D D9 88 STA $88D9 C1/983D: A0 01 00 LDY #$0001 C1/9840: C2 20 REP #$20 C1/9842: B1 76 LDA ($76),Y C1/9844: 0A ASL C1/9845: AA TAX C1/9846: BF E0 DF CF LDA $CFDFE0,X ; pointer to short battle dialog C1/984A: 8D D7 88 STA $88D7 C1/984D: 7B TDC C1/984E: E2 20 SEP #$20 C1/9850: 9C AC 62 STZ $62AC C1/9853: 80 25 BRA $987A ; [ Battle Script Command $02: Show Battle Message ] C1/9855: AD 8D 89 LDA $898D C1/9858: 48 PHA C1/9859: A9 12 LDA #$12 C1/985B: 8D 8D 89 STA $898D C1/985E: 20 0F 98 JSR $980F C1/9861: 20 FE 98 JSR $98FE C1/9864: A9 01 LDA #$01 C1/9866: 8D AC 62 STA $62AC C1/9869: 68 PLA C1/986A: 8D 8D 89 STA $898D C1/986D: 20 D5 5D JSR $5DD5 C1/9870: 80 0F BRA $9881 C1/9872: .DB $20, $30, $40, $50, $60, $70, $80, $90 anim_window_put_b_main: C1/987A: 20 D5 5D JSR $5DD5 C1/987D: 20 81 98 JSR $9881 C1/9880: 60 RTS anim_window_put_b_main2: C1/9881: 20 A7 98 JSR $98A7 C1/9884: 4C 17 99 JMP $9917 chg_center: C1/9887: A5 7A LDA $7A C1/9889: C2 20 REP #$20 C1/988B: 85 10 STA $10 C1/988D: A9 68 00 LDA #$0068 C1/9890: 38 SEC C1/9891: E5 10 SBC $10 C1/9893: 4A LSR C1/9894: 18 CLC C1/9895: 69 02 00 ADC #$0002 C1/9898: 85 10 STA $10 C1/989A: AD F5 4A LDA $4AF5 C1/989D: 38 SEC C1/989E: E5 10 SBC $10 C1/98A0: 8D F5 4A STA $4AF5 C1/98A3: 7B TDC C1/98A4: E2 20 SEP #$20 C1/98A6: 60 RTS mess_wait: C1/98A7: AD F5 E9 LDA $E9F5 C1/98AA: D0 17 BNE $98C3 C1/98AC: AF 4D 1D 00 LDA $001D4D C1/98B0: 4A LSR C1/98B1: 4A LSR C1/98B2: 4A LSR C1/98B3: 4A LSR C1/98B4: 29 07 AND #$07 C1/98B6: AA TAX C1/98B7: BF 72 98 C1 LDA $C19872,X C1/98BB: 48 PHA C1/98BC: 20 2A 02 JSR $022A ; wait for vblank C1/98BF: 68 PLA C1/98C0: 3A DEC C1/98C1: D0 F8 BNE $98BB C1/98C3: 60 RTS ; [ ] set_anim_window_frame: C1/98C4: 48 PHA C1/98C5: EE 9E 62 INC $629E C1/98C8: 9C 67 7B STZ $7B67 C1/98CB: A9 01 LDA #$01 C1/98CD: 8D C3 E9 STA $E9C3 C1/98D0: A0 00 50 LDY #$5000 C1/98D3: 8C BF E9 STY $E9BF C1/98D6: 20 2A 02 JSR $022A ; wait for vblank C1/98D9: 20 59 1E JSR $1E59 C1/98DC: 20 2A 02 JSR $022A ; wait for vblank C1/98DF: 20 34 40 JSR $4034 C1/98E2: AD 7D 89 LDA $897D C1/98E5: 8D 7D 60 STA $607D C1/98E8: 20 29 96 JSR $9629 C1/98EB: 20 2A 02 JSR $022A ; wait for vblank C1/98EE: 20 BB 5D JSR $5DBB C1/98F1: A0 00 50 LDY #$5000 C1/98F4: 8C BF E9 STY $E9BF C1/98F7: 20 9B 63 JSR $639B C1/98FA: 68 PLA C1/98FB: 4C 8C 53 JMP $538C C1/98FE: A9 D1 LDA #$D1 C1/9900: 8D D9 88 STA $88D9 C1/9903: A0 01 00 LDY #$0001 C1/9906: B1 76 LDA ($76),Y C1/9908: C2 20 REP #$20 C1/990A: 0A ASL C1/990B: AA TAX C1/990C: BF A0 F7 D1 LDA $D1F7A0,X C1/9910: 8D D7 88 STA $88D7 C1/9913: 7B TDC C1/9914: E2 20 SEP #$20 C1/9916: 60 RTS anim_window_rset: C1/9917: AD 9E 62 LDA $629E C1/991A: F0 2E BEQ $994A C1/991C: AD 8D 89 LDA $898D C1/991F: 48 PHA C1/9920: A9 12 LDA #$12 C1/9922: 8D 8D 89 STA $898D C1/9925: 20 4C 99 JSR $994C C1/9928: 20 9C 99 JSR $999C C1/992B: 20 BB 5D JSR $5DBB C1/992E: A0 00 50 LDY #$5000 C1/9931: 8C BF E9 STY $E9BF ; VRAM destination address (bg3 graphics) C1/9934: 20 9B 63 JSR $639B C1/9937: 20 59 1E JSR $1E59 C1/993A: 20 2A 02 JSR $022A ; wait for vblank C1/993D: 20 5F 96 JSR $965F C1/9940: AD 7D 60 LDA $607D C1/9943: 8D 7D 89 STA $897D C1/9946: 68 PLA C1/9947: 8D 8D 89 STA $898D C1/994A: 60 RTS C1/994B: .DB $FF ; [ ] clr_mess_scr_buf: C1/994C: C2 20 REP #$20 C1/994E: 7B TDC C1/994F: AA TAX C1/9950: A9 FF 01 LDA #$01FF C1/9953: 9D 3F E7 STA $E73F,X C1/9956: E8 INX C1/9957: E8 INX C1/9958: E0 80 00 CPX #$0080 C1/995B: D0 F6 BNE $9953 C1/995D: 7B TDC C1/995E: E2 20 SEP #$20 C1/9960: 60 RTS ; [ ] up_mess_scr_tfr: C1/9961: 20 4C 99 JSR $994C C1/9964: C2 20 REP #$20 C1/9966: 7B TDC C1/9967: AA TAX C1/9968: A9 00 30 LDA #$3000 C1/996B: 9D 51 E7 STA $E751,X C1/996E: 1A INC C1/996F: 9D 91 E7 STA $E791,X C1/9972: 1A INC C1/9973: E8 INX C1/9974: E8 INX C1/9975: E0 2C 00 CPX #$002C C1/9978: D0 F1 BNE $996B C1/997A: 7B TDC C1/997B: E2 20 SEP #$20 C1/997D: 4C 9C 99 JMP $999C up_mess_scr_tfr3: C1/9980: 20 4C 99 JSR $994C C1/9983: C2 20 REP #$20 C1/9985: 7B TDC C1/9986: AA TAX C1/9987: A9 00 30 LDA #$3000 C1/998A: 9D 43 E7 STA $E743,X C1/998D: 1A INC C1/998E: 9D 83 E7 STA $E783,X C1/9991: 1A INC C1/9992: E8 INX C1/9993: E8 INX C1/9994: E0 38 00 CPX #$0038 C1/9997: D0 F1 BNE $998A C1/9999: 7B TDC C1/999A: E2 20 SEP #$20 up_mess_scr_tfr2: C1/999C: A2 80 00 LDX #$0080 C1/999F: 86 10 STX $10 C1/99A1: A2 3F E7 LDX #$E73F C1/99A4: A9 7E LDA #$7E C1/99A6: A0 40 54 LDY #$5440 C1/99A9: 20 8D 19 JSR $198D ; init large data DMA to VRAM w_win_color_set: C1/99AC: A2 00 00 LDX #$0000 C1/99AF: 8E 22 7E STX $7E22 C1/99B2: A2 1F 00 LDX #$001F C1/99B5: 8E 24 7E STX $7E24 C1/99B8: AE 55 1D LDX $1D55 C1/99BB: 8E 26 7E STX $7E26 C1/99BE: 4C 8A 9C JMP $9C8A wark_counter_tbl: C1/99C1: .DB $08, $18 ; [ Battle Script Command $0D: step back after attack animation ] magic_back: C1/99C3: 7B TDC C1/99C4: AA TAX C1/99C5: 8E 8B 61 STX $618B C1/99C8: 8E 8D 61 STX $618D C1/99CB: 8E 8F 61 STX $618F C1/99CE: A8 TAY C1/99CF: BD AE 61 LDA $61AE,X C1/99D2: F0 10 BEQ $99E4 C1/99D4: BD 10 7B LDA $7B10,X C1/99D7: DD B2 61 CMP $61B2,X C1/99DA: D0 08 BNE $99E4 C1/99DC: B9 BE 61 LDA $61BE,Y C1/99DF: 49 40 EOR #$40 C1/99E1: 99 BE 61 STA $61BE,Y C1/99E4: 98 TYA C1/99E5: 18 CLC C1/99E6: 69 20 ADC #$20 C1/99E8: A8 TAY C1/99E9: E8 INX C1/99EA: E0 04 00 CPX #$0004 C1/99ED: D0 E0 BNE $99CF C1/99EF: AD BA 64 LDA $64BA C1/99F2: AA TAX C1/99F3: BF C1 99 C1 LDA $C199C1,X C1/99F7: 8D F1 7A STA $7AF1 C1/99FA: 20 2A 02 JSR $022A ; wait for vblank C1/99FD: 7B TDC C1/99FE: A8 TAY C1/99FF: B9 AE 61 LDA $61AE,Y C1/9A02: F0 47 BEQ $9A4B C1/9A04: 98 TYA C1/9A05: 0A ASL C1/9A06: 0A ASL C1/9A07: 0A ASL C1/9A08: 0A ASL C1/9A09: 0A ASL C1/9A0A: AA TAX C1/9A0B: 5A PHY C1/9A0C: AD BA 64 LDA $64BA C1/9A0F: D0 0F BNE $9A20 C1/9A11: B9 B2 61 LDA $61B2,Y C1/9A14: F0 05 BEQ $9A1B C1/9A16: A0 FD FF LDY #$FFFD C1/9A19: 80 03 BRA $9A1E C1/9A1B: A0 03 00 LDY #$0003 C1/9A1E: 80 12 BRA $9A32 C1/9A20: A9 01 LDA #$01 C1/9A22: 99 CC 64 STA $64CC,Y ; magitek animation type 1 (walking) C1/9A25: B9 B2 61 LDA $61B2,Y C1/9A28: F0 05 BEQ $9A2F C1/9A2A: A0 FF FF LDY #$FFFF C1/9A2D: 80 03 BRA $9A32 C1/9A2F: A0 01 00 LDY #$0001 C1/9A32: 84 10 STY $10 C1/9A34: 9E C1 61 STZ $61C1,X C1/9A37: A9 04 LDA #$04 C1/9A39: 9D C0 61 STA $61C0,X C1/9A3C: C2 20 REP #$20 C1/9A3E: BD D4 61 LDA $61D4,X C1/9A41: 18 CLC C1/9A42: 65 10 ADC $10 C1/9A44: 9D D4 61 STA $61D4,X C1/9A47: 7B TDC C1/9A48: E2 20 SEP #$20 C1/9A4A: 7A PLY C1/9A4B: C8 INY C1/9A4C: C0 04 00 CPY #$0004 C1/9A4F: D0 AE BNE $99FF C1/9A51: CE F1 7A DEC $7AF1 C1/9A54: D0 A4 BNE $99FA C1/9A56: 7B TDC C1/9A57: AA TAX C1/9A58: A8 TAY C1/9A59: BD AE 61 LDA $61AE,X C1/9A5C: F0 1E BEQ $9A7C C1/9A5E: 9E CC 64 STZ $64CC,X ; magitek animation type 0 (standing still) C1/9A61: BD 10 7B LDA $7B10,X C1/9A64: DD B2 61 CMP $61B2,X C1/9A67: D0 08 BNE $9A71 C1/9A69: B9 BE 61 LDA $61BE,Y C1/9A6C: 49 40 EOR #$40 C1/9A6E: 99 BE 61 STA $61BE,Y C1/9A71: 9E AE 61 STZ $61AE,X C1/9A74: 7B TDC C1/9A75: 99 C0 61 STA $61C0,Y C1/9A78: 3A DEC C1/9A79: 9D B2 61 STA $61B2,X C1/9A7C: 7B TDC C1/9A7D: 99 D1 61 STA $61D1,Y C1/9A80: 98 TYA C1/9A81: 18 CLC C1/9A82: 69 20 ADC #$20 C1/9A84: A8 TAY C1/9A85: 9E A0 62 STZ $62A0,X C1/9A88: E8 INX C1/9A89: E0 04 00 CPX #$0004 C1/9A8C: D0 CB BNE $9A59 C1/9A8E: 60 RTS ; [ ] set_player_eor: C1/9A8F: 0A ASL C1/9A90: 0A ASL C1/9A91: 0A ASL C1/9A92: 0A ASL C1/9A93: 0A ASL C1/9A94: AA TAX C1/9A95: BD BE 61 LDA $61BE,X C1/9A98: 49 40 EOR #$40 C1/9A9A: 9D BE 61 STA $61BE,X C1/9A9D: 60 RTS ; [ Get Attacker Number (long access) ] get_caster_long: C1/9A9E: 20 89 BC JSR $BC89 ; get attacker number C1/9AA1: 6B RTL ; [ ] magic_front: C1/9AA2: 20 43 AB JSR $AB43 ; init single thread animation C1/9AA5: 20 A6 BC JSR $BCA6 C1/9AA8: 20 89 BC JSR $BC89 ; get attacker number C1/9AAB: A5 10 LDA $10 C1/9AAD: 30 76 BMI $9B25 ; branch if monster ; character attacker C1/9AAF: 29 03 AND #$03 C1/9AB1: A8 TAY C1/9AB2: 0A ASL C1/9AB3: 0A ASL C1/9AB4: 0A ASL C1/9AB5: 0A ASL C1/9AB6: 0A ASL C1/9AB7: AA TAX C1/9AB8: AD 3D 61 LDA $613D C1/9ABB: 0D 3E 61 ORA $613E C1/9ABE: F0 59 BEQ $9B19 C1/9AC0: AD A4 62 LDA $62A4 C1/9AC3: D0 54 BNE $9B19 C1/9AC5: 1A INC C1/9AC6: 99 A0 62 STA $62A0,Y C1/9AC9: 9D D1 61 STA $61D1,X C1/9ACC: A5 12 LDA $12 C1/9ACE: 10 49 BPL $9B19 C1/9AD0: 29 7F AND #$7F C1/9AD2: 38 SEC C1/9AD3: E9 04 SBC #$04 C1/9AD5: 0A ASL C1/9AD6: AA TAX C1/9AD7: A5 10 LDA $10 C1/9AD9: 0A ASL C1/9ADA: A8 TAY C1/9ADB: C2 20 REP #$20 C1/9ADD: B9 33 80 LDA $8033,Y C1/9AE0: 29 FF 01 AND #$01FF C1/9AE3: 85 24 STA $24 C1/9AE5: BD 0F 80 LDA $800F,X C1/9AE8: 29 FF 01 AND #$01FF C1/9AEB: 85 22 STA $22 C1/9AED: 7B TDC C1/9AEE: E2 20 SEP #$20 C1/9AF0: A5 10 LDA $10 C1/9AF2: A8 TAY C1/9AF3: B9 10 7B LDA $7B10,Y C1/9AF6: F0 11 BEQ $9B09 C1/9AF8: A6 24 LDX $24 C1/9AFA: E4 22 CPX $22 C1/9AFC: 90 1B BCC $9B19 C1/9AFE: 7B TDC C1/9AFF: 99 10 7B STA $7B10,Y C1/9B02: A5 10 LDA $10 C1/9B04: 20 8F 9A JSR $9A8F C1/9B07: 80 10 BRA $9B19 C1/9B09: A6 22 LDX $22 C1/9B0B: E4 24 CPX $24 C1/9B0D: 90 0A BCC $9B19 C1/9B0F: A9 01 LDA #$01 C1/9B11: 99 10 7B STA $7B10,Y C1/9B14: A5 10 LDA $10 C1/9B16: 20 8F 9A JSR $9A8F C1/9B19: B9 AE 61 LDA $61AE,Y C1/9B1C: D0 06 BNE $9B24 C1/9B1E: B9 10 7B LDA $7B10,Y C1/9B21: 99 B2 61 STA $61B2,Y C1/9B24: 60 RTS ; monster attacker C1/9B25: A5 10 LDA $10 C1/9B27: 29 7F AND #$7F C1/9B29: 38 SEC C1/9B2A: E9 04 SBC #$04 C1/9B2C: 0A ASL C1/9B2D: AA TAX C1/9B2E: AD 3D 61 LDA $613D C1/9B31: 0D 3E 61 ORA $613E C1/9B34: F0 34 BEQ $9B6A C1/9B36: A5 12 LDA $12 C1/9B38: 30 30 BMI $9B6A C1/9B3A: 29 03 AND #$03 C1/9B3C: 0A ASL C1/9B3D: A8 TAY C1/9B3E: C2 20 REP #$20 C1/9B40: B9 33 80 LDA $8033,Y C1/9B43: 85 24 STA $24 C1/9B45: BD 0F 80 LDA $800F,X C1/9B48: 85 22 STA $22 C1/9B4A: 7B TDC C1/9B4B: E2 20 SEP #$20 C1/9B4D: BD F3 80 LDA $80F3,X C1/9B50: 29 01 AND #$01 C1/9B52: F0 08 BEQ $9B5C C1/9B54: A4 24 LDY $24 C1/9B56: C4 22 CPY $22 C1/9B58: 90 10 BCC $9B6A C1/9B5A: 80 06 BRA $9B62 C1/9B5C: A4 22 LDY $22 C1/9B5E: C4 24 CPY $24 C1/9B60: 90 08 BCC $9B6A C1/9B62: BD F3 80 LDA $80F3,X C1/9B65: 49 01 EOR #$01 C1/9B67: 9D F3 80 STA $80F3,X C1/9B6A: 8A TXA C1/9B6B: 4A LSR C1/9B6C: AA TAX C1/9B6D: BD 8B 61 LDA $618B,X C1/9B70: D0 2E BNE $9BA0 C1/9B72: FE 8B 61 INC $618B,X C1/9B75: 20 C5 9B JSR $9BC5 C1/9B78: A0 01 00 LDY #$0001 C1/9B7B: B1 78 LDA ($78),Y C1/9B7D: 29 7F AND #$7F C1/9B7F: 38 SEC C1/9B80: E9 04 SBC #$04 C1/9B82: 0A ASL C1/9B83: AA TAX C1/9B84: BD DB 80 LDA $80DB,X C1/9B87: 8D F0 7A STA $7AF0 C1/9B8A: A9 06 LDA #$06 C1/9B8C: 20 A1 9B JSR $9BA1 C1/9B8F: AD F0 7A LDA $7AF0 C1/9B92: 20 A1 9B JSR $9BA1 C1/9B95: A9 06 LDA #$06 C1/9B97: 20 A1 9B JSR $9BA1 C1/9B9A: AD F0 7A LDA $7AF0 C1/9B9D: 20 A1 9B JSR $9BA1 C1/9BA0: 60 RTS ; [ ] set_one_mon_pal: C1/9BA1: 85 10 STA $10 C1/9BA3: BD DB 80 LDA $80DB,X C1/9BA6: 29 F1 AND #$F1 C1/9BA8: 05 10 ORA $10 C1/9BAA: 9D DB 80 STA $80DB,X C1/9BAD: A9 04 LDA #$04 C1/9BAF: 4C B6 9B JMP $9BB6 ; wait 4 frames ; [ Wait Frames (long access) ] n_wait_long: C1/9BB2: 20 B6 9B JSR $9BB6 ; wait frames C1/9BB5: 6B RTL ; [ Wait Frames ] ; A = number of frames n_wait: C1/9BB6: C9 00 CMP #$00 C1/9BB8: F0 0A BEQ $9BC4 C1/9BBA: 48 PHA C1/9BBB: DA PHX C1/9BBC: 20 2A 02 JSR $022A ; wait for vblank C1/9BBF: FA PLX C1/9BC0: 68 PLA C1/9BC1: 3A DEC C1/9BC2: D0 F2 BNE $9BB6 C1/9BC4: 60 RTS flash_color_set: C1/9BC5: 7B TDC C1/9BC6: AA TAX C1/9BC7: 9E 60 7F STZ $7F60,X C1/9BCA: E8 INX C1/9BCB: E0 20 00 CPX #$0020 C1/9BCE: D0 F7 BNE $9BC7 C1/9BD0: A2 FF FF LDX #$FFFF C1/9BD3: 8E 62 7F STX $7F62 C1/9BD6: 60 RTS ; [ Load Animation Palette (sprite) ] magic_obj_color_set: C1/9BD7: C2 20 REP #$20 C1/9BD9: 0A ASL C1/9BDA: 0A ASL C1/9BDB: 0A ASL C1/9BDC: 0A ASL C1/9BDD: AA TAX C1/9BDE: 7B TDC C1/9BDF: A8 TAY C1/9BE0: BF 00 60 D2 LDA $D26000,X ; animation palette C1/9BE4: 99 60 7F STA $7F60,Y C1/9BE7: 99 60 7D STA $7D60,Y C1/9BEA: 99 70 7F STA $7F70,Y C1/9BED: 99 70 7D STA $7D70,Y C1/9BF0: E8 INX C1/9BF1: E8 INX C1/9BF2: C8 INY C1/9BF3: C8 INY C1/9BF4: C0 10 00 CPY #$0010 C1/9BF7: D0 E7 BNE $9BE0 C1/9BF9: 7B TDC C1/9BFA: E2 20 SEP #$20 C1/9BFC: AD 8A 62 LDA $628A C1/9BFF: F0 0E BEQ $9C0F ; return if flashback mode is disabled C1/9C01: A2 60 01 LDX #$0160 C1/9C04: 86 18 STX $18 C1/9C06: A2 80 01 LDX #$0180 C1/9C09: 86 1A STX $1A C1/9C0B: 22 42 B4 C2 JSL $C2B442 C1/9C0F: 60 RTS ; [ Load Block Palette ] ; A = block type sp_color_set: C1/9C10: 0A ASL C1/9C11: 0A ASL C1/9C12: 0A ASL C1/9C13: 0A ASL C1/9C14: AA TAX C1/9C15: 7B TDC C1/9C16: A8 TAY C1/9C17: BF 7D B0 C2 LDA $C2B07D,X C1/9C1B: 99 70 7F STA $7F70,Y C1/9C1E: C8 INY C1/9C1F: E8 INX C1/9C20: C0 10 00 CPY #$0010 C1/9C23: D0 F2 BNE $9C17 C1/9C25: 60 RTS ; [ Load Animation Palette (bg1) (magic_bg1_color_set) ] magic_bg1_color_set: C1/9C26: C2 20 REP #$20 C1/9C28: 0A ASL C1/9C29: 0A ASL C1/9C2A: 0A ASL C1/9C2B: 0A ASL C1/9C2C: AA TAX C1/9C2D: 7B TDC C1/9C2E: A8 TAY C1/9C2F: BF 00 60 D2 LDA $D26000,X ; battle animation palette (8 colors) C1/9C33: 99 60 7E STA $7E60,Y ; copy to RAM C1/9C36: 99 70 7E STA $7E70,Y C1/9C39: 99 80 7E STA $7E80,Y C1/9C3C: 99 90 7E STA $7E90,Y C1/9C3F: 99 60 7C STA $7C60,Y C1/9C42: 99 70 7C STA $7C70,Y C1/9C45: 99 80 7C STA $7C80,Y C1/9C48: 99 90 7C STA $7C90,Y C1/9C4B: E8 INX C1/9C4C: E8 INX C1/9C4D: C8 INY C1/9C4E: C8 INY C1/9C4F: C0 10 00 CPY #$0010 C1/9C52: D0 DB BNE $9C2F C1/9C54: 7B TDC C1/9C55: E2 20 SEP #$20 C1/9C57: AD 8A 62 LDA $628A ; return if flashback mode is disabled C1/9C5A: F0 0E BEQ $9C6A C1/9C5C: A2 60 00 LDX #$0060 ; C1/9C5F: 86 18 STX $18 C1/9C61: A2 80 00 LDX #$0080 C1/9C64: 86 1A STX $1A C1/9C66: 22 42 B4 C2 JSL $C2B442 C1/9C6A: 60 RTS ; [ Load Animation Palette (bg3) ] magic_bg3_color_set: C1/9C6B: C2 20 REP #$20 C1/9C6D: 0A ASL C1/9C6E: 0A ASL C1/9C6F: 0A ASL C1/9C70: 0A ASL C1/9C71: AA TAX C1/9C72: 7B TDC C1/9C73: A8 TAY C1/9C74: BF 00 60 D2 LDA $D26000,X ; battle animation palette (4 colors) C1/9C78: 99 20 7E STA $7E20,Y C1/9C7B: 99 20 7C STA $7C20,Y C1/9C7E: E8 INX C1/9C7F: E8 INX C1/9C80: C8 INY C1/9C81: C8 INY C1/9C82: C0 08 00 CPY #$0008 C1/9C85: D0 ED BNE $9C74 C1/9C87: 7B TDC C1/9C88: E2 20 SEP #$20 magic_bg3_color_chg: C1/9C8A: AD 8A 62 LDA $628A C1/9C8D: F0 0E BEQ $9C9D ; return if flashback mode is disabled C1/9C8F: A2 20 00 LDX #$0020 C1/9C92: 86 18 STX $18 C1/9C94: A2 28 00 LDX #$0028 C1/9C97: 86 1A STX $1A C1/9C99: 22 42 B4 C2 JSL $C2B442 C1/9C9D: 60 RTS ; [ Deactivate All Animation Threads ] clr_magic_init_buf: C1/9C9E: 7B TDC C1/9C9F: AA TAX C1/9CA0: 9D 2E 6A STA $6A2E,X ; deactivate thread C1/9CA3: 9D 7E 6F STA $6F7E,X ; clear x position C1/9CA6: 9D CE 74 STA $74CE,X ; clear x offset C1/9CA9: 9D DE 64 STA $64DE,X ; deactivate animation C1/9CAC: E8 INX C1/9CAD: E0 50 05 CPX #$0550 C1/9CB0: D0 EE BNE $9CA0 C1/9CB2: 60 RTS ; [ Init Battle Animation Data ] ; +$1E = pointer to animation data (+$D07FB2) ; A = attack number magic_shape_init: C1/9CB3: 8D 6A 62 STA $626A ; set attack number C1/9CB6: EB XBA C1/9CB7: A9 0E LDA #$0E C1/9CB9: 20 CA 18 JSR $18CA ; multiply by 14 C1/9CBC: C2 20 REP #$20 C1/9CBE: AF 16 42 00 LDA $004216 C1/9CC2: 18 CLC C1/9CC3: 65 1E ADC $1E ; add to animation data pointer C1/9CC5: AA TAX C1/9CC6: 7B TDC C1/9CC7: A8 TAY C1/9CC8: E2 20 SEP #$20 C1/9CCA: BF B2 7F D0 LDA $D07FB2,X ; copy animation data C1/9CCE: 99 73 62 STA $6273,Y C1/9CD1: E8 INX C1/9CD2: C8 INY C1/9CD3: C0 0E 00 CPY #$000E C1/9CD6: D0 F2 BNE $9CCA C1/9CD8: AD 7C 62 LDA $627C ; default sound effect C1/9CDB: 8D E7 E9 STA $E9E7 C1/9CDE: 20 9E 9C JSR $9C9E ; deactivate all animation threads C1/9CE1: AE 73 62 LDX $6273 ; sprite graphics C1/9CE4: E0 FF FF CPX #$FFFF C1/9CE7: F0 17 BEQ $9D00 ; branch if unused C1/9CE9: 20 8B A1 JSR $A18B ; load animation graphics data (sprite) C1/9CEC: AE EE 7A LDX $7AEE ; copy frame height/width C1/9CEF: 8E 35 7B STX $7B35 C1/9CF2: AE EA 7A LDX $7AEA ; graphics index C1/9CF5: AD AE 60 LDA $60AE ; branch if not first swdtech hit (graphics are already loaded) C1/9CF8: D0 03 BNE $9CFD C1/9CFA: 20 B1 A1 JSR $A1B1 ; load sprite animation graphics C1/9CFD: 20 B5 A0 JSR $A0B5 ; load sprite frame data C1/9D00: 20 17 99 JSR $9917 ; C1/9D03: AE 75 62 LDX $6275 ; bg1 graphics C1/9D06: E0 FF FF CPX #$FFFF C1/9D09: F0 3D BEQ $9D48 ; branch if unused C1/9D0B: 20 8B A1 JSR $A18B ; load animation graphics data (bg1) C1/9D0E: AE EE 7A LDX $7AEE ; copy frame height/width C1/9D11: 8E 31 7B STX $7B31 C1/9D14: AE EA 7A LDX $7AEA ; graphics index C1/9D17: AD AE 60 LDA $60AE ; branch if not first swdtech hit (graphics are already loaded) C1/9D1A: D0 03 BNE $9D1F C1/9D1C: 20 E0 A1 JSR $A1E0 ; load bg1 animation graphics C1/9D1F: AE 75 62 LDX $6275 ; bg1 script number C1/9D22: E0 25 02 CPX #$0225 C1/9D25: F0 0F BEQ $9D36 ; branch if script $0225, $003C, $0216 C1/9D27: E0 3C 00 CPX #$003C C1/9D2A: F0 0A BEQ $9D36 C1/9D2C: E0 16 02 CPX #$0216 C1/9D2F: F0 05 BEQ $9D36 C1/9D31: E0 3B 00 CPX #$003B C1/9D34: D0 07 BNE $9D3D ; branch if $003B (copy attacker sprite to bg1) C1/9D36: 20 12 9F JSR $9F12 ; copy target graphics to bg1 C1/9D39: A9 2E LDA #$2E ; tile offset = $2E C1/9D3B: 80 05 BRA $9D42 C1/9D3D: 20 1C 9F JSR $9F1C ; copy attacker graphics to bg1 C1/9D40: A9 2C LDA #$2C ; tile offset = $2C C1/9D42: 20 61 9F JSR $9F61 ; load bg1 frame data C1/9D45: 20 3A 9E JSR $9E3A ; init bg1 animation scroll position C1/9D48: AE 77 62 LDX $6277 ; bg3 graphics C1/9D4B: E0 FF FF CPX #$FFFF C1/9D4E: F0 1A BEQ $9D6A ; branch if unused C1/9D50: 20 8B A1 JSR $A18B ; load animation graphics data (bg3) C1/9D53: AE EE 7A LDX $7AEE ; copy frame height/width C1/9D56: 8E 33 7B STX $7B33 C1/9D59: AE EA 7A LDX $7AEA C1/9D5C: AD AE 60 LDA $60AE C1/9D5F: D0 03 BNE $9D64 ; branch if not first swdtech hit (graphics are already loaded) C1/9D61: 20 CF A1 JSR $A1CF ; load bg3 animation graphics C1/9D64: 20 4A 9F JSR $9F4A ; load bg3 frame data C1/9D67: 20 80 9E JSR $9E80 ; C1/9D6A: AE 7E 62 LDX $627E ; special graphics C1/9D6D: E0 FF FF CPX #$FFFF C1/9D70: F0 09 BEQ $9D7B ; branch if unused C1/9D72: 20 8B A1 JSR $A18B ; load animation graphics data (extra) C1/9D75: AE EE 7A LDX $7AEE ; copy frame height/width C1/9D78: 8E 37 7B STX $7B37 C1/9D7B: 20 AC A0 JSR $A0AC ; C1/9D7E: AD 79 62 LDA $6279 ; sprite palette C1/9D81: 20 D7 9B JSR $9BD7 ; load animation palette (sprite) C1/9D84: 7B TDC C1/9D85: AD 7A 62 LDA $627A ; bg1 palette C1/9D88: 8D 67 61 STA $6167 C1/9D8B: AD 7B 62 LDA $627B ; bg3 palette C1/9D8E: 20 6B 9C JSR $9C6B ; C1/9D91: 20 71 A7 JSR $A771 ; C1/9D94: 60 RTS ; [ Init Fight Animation Data ] ; A = weapon animation number (item index, $5B/$5C for longer atma weapon graphics) weapon_shape_init: C1/9D95: 8D 6A 62 STA $626A ; weapon animation number C1/9D98: C2 20 REP #$20 C1/9D9A: 0A ASL C1/9D9B: 0A ASL C1/9D9C: 0A ASL C1/9D9D: AA TAX C1/9D9E: 7B TDC C1/9D9F: A8 TAY C1/9DA0: 7B TDC C1/9DA1: E2 20 SEP #$20 C1/9DA3: AD 8A 61 LDA $618A ; branch if not a monster attack C1/9DA6: F0 10 BEQ $9DB8 C1/9DA8: BF E8 E6 EC LDA $ECE6E8,X ; monster attack animation data C1/9DAC: 99 6B 62 STA $626B,Y C1/9DAF: E8 INX C1/9DB0: C8 INY C1/9DB1: C0 08 00 CPY #$0008 C1/9DB4: D0 F2 BNE $9DA8 C1/9DB6: 80 0E BRA $9DC6 C1/9DB8: BF 00 E4 EC LDA $ECE400,X ; weapon animation data C1/9DBC: 99 6B 62 STA $626B,Y C1/9DBF: E8 INX C1/9DC0: C8 INY C1/9DC1: C0 08 00 CPY #$0008 C1/9DC4: D0 F2 BNE $9DB8 C1/9DC6: A5 10 LDA $10 ; attacker C1/9DC8: 29 03 AND #$03 C1/9DCA: AA TAX C1/9DCB: AD F4 7A LDA $7AF4 ; left-hand flag C1/9DCE: 0A ASL C1/9DCF: 2A ROL C1/9DD0: 29 01 AND #$01 C1/9DD2: 5D 10 7B EOR $7B10,X C1/9DD5: 29 01 AND #$01 C1/9DD7: AA TAX C1/9DD8: BD 6B 62 LDA $626B,X ; weapon animation script C1/9DDB: AA TAX C1/9DDC: 20 8B A1 JSR $A18B ; load animation graphics data C1/9DDF: AC EE 7A LDY $7AEE ; frame height/width (for weapon graphics) C1/9DE2: 8C 2D 7B STY $7B2D C1/9DE5: AE EA 7A LDX $7AEA ; weapon tile formation index C1/9DE8: 20 C0 A1 JSR $A1C0 ; load weapon animation graphics C1/9DEB: 20 B5 A0 JSR $A0B5 ; load sprite frame data C1/9DEE: AD 8A 61 LDA $618A ; branch if not monster attack C1/9DF1: F0 13 BEQ $9E06 C1/9DF3: AD 6E 62 LDA $626E ; hit animation script C1/9DF6: C9 60 CMP #$60 C1/9DF8: 90 0C BCC $9E06 ; branch if less than $60 C1/9DFA: C2 20 REP #$20 C1/9DFC: 18 CLC C1/9DFD: 69 00 02 ADC #$0200 C1/9E00: AA TAX C1/9E01: 7B TDC C1/9E02: E2 20 SEP #$20 C1/9E04: 80 04 BRA $9E0A C1/9E06: AD 6E 62 LDA $626E ; hit animation script C1/9E09: AA TAX C1/9E0A: 20 8B A1 JSR $A18B ; load animation graphics data C1/9E0D: AC EE 7A LDY $7AEE ; frame height/width (for hit graphics) C1/9E10: 8C 2F 7B STY $7B2F C1/9E13: 8C 31 7B STY $7B31 C1/9E16: AE EA 7A LDX $7AEA ; hit tile formation index C1/9E19: 20 E0 A1 JSR $A1E0 ; load bg1 animation graphics C1/9E1C: 20 1C 9F JSR $9F1C ; copy attacker graphics to bg1 C1/9E1F: A9 2C LDA #$2C C1/9E21: 20 61 9F JSR $9F61 ; load bg1 animation frame data C1/9E24: 20 3A 9E JSR $9E3A ; init bg1 animation scroll position C1/9E27: AD 6D 62 LDA $626D ; weapon palette C1/9E2A: 20 D7 9B JSR $9BD7 ; load animation palette (sprite) C1/9E2D: AD 6F 62 LDA $626F ; hit palette C1/9E30: 8D 67 61 STA $6167 ; animation bg1 palette C1/9E33: 20 4B A0 JSR $A04B ; load sprite frame data (fight) C1/9E36: 20 71 A7 JSR $A771 ; C1/9E39: 60 RTS ; [ Init BG1 Animation Scroll Position ] C1/9E3A: A5 28 LDA $28 ; C1/9E3C: F0 27 BEQ $9E65 C1/9E3E: AD 31 7B LDA $7B31 ; bg1 animation frame width C1/9E41: C2 20 REP #$20 C1/9E43: 0A ASL C1/9E44: 0A ASL C1/9E45: 0A ASL C1/9E46: 8D 16 7B STA $7B16 ; bg1 animation x offset = $0100 - frame width C1/9E49: A9 00 01 LDA #$0100 C1/9E4C: 38 SEC C1/9E4D: ED 16 7B SBC $7B16 C1/9E50: 8D 16 7B STA $7B16 C1/9E53: AD 32 7B LDA $7B32 ; bg1 animation frame height C1/9E56: 29 FF 00 AND #$00FF C1/9E59: 0A ASL C1/9E5A: 0A ASL C1/9E5B: 0A ASL C1/9E5C: 8D 18 7B STA $7B18 ; bg1 animation y offset = frame height C1/9E5F: 7B TDC C1/9E60: E2 20 SEP #$20 C1/9E62: 4C 7F 9E JMP $9E7F C1/9E65: AD 31 7B LDA $7B31 ; bg1 animation frame width C1/9E68: C2 20 REP #$20 C1/9E6A: 0A ASL C1/9E6B: 0A ASL C1/9E6C: 0A ASL C1/9E6D: 8D 16 7B STA $7B16 ; bg1 animation x offset = frame width C1/9E70: AD 32 7B LDA $7B32 ; bg1 animation frame height C1/9E73: 29 FF 00 AND #$00FF C1/9E76: 0A ASL C1/9E77: 0A ASL C1/9E78: 0A ASL C1/9E79: 8D 18 7B STA $7B18 ; bg1 animation y offset = frame height C1/9E7C: 7B TDC C1/9E7D: E2 20 SEP #$20 C1/9E7F: 60 RTS C1/9E80: A5 28 LDA $28 C1/9E82: F0 27 BEQ $9EAB C1/9E84: AD 33 7B LDA $7B33 C1/9E87: C2 20 REP #$20 C1/9E89: 0A ASL C1/9E8A: 0A ASL C1/9E8B: 0A ASL C1/9E8C: 8D 22 7B STA $7B22 C1/9E8F: A9 00 01 LDA #$0100 C1/9E92: 38 SEC C1/9E93: ED 22 7B SBC $7B22 C1/9E96: 8D 22 7B STA $7B22 C1/9E99: AD 34 7B LDA $7B34 C1/9E9C: 29 FF 00 AND #$00FF C1/9E9F: 0A ASL C1/9EA0: 0A ASL C1/9EA1: 0A ASL C1/9EA2: 8D 24 7B STA $7B24 C1/9EA5: 7B TDC C1/9EA6: E2 20 SEP #$20 C1/9EA8: 4C C5 9E JMP $9EC5 C1/9EAB: AD 33 7B LDA $7B33 C1/9EAE: C2 20 REP #$20 C1/9EB0: 0A ASL C1/9EB1: 0A ASL C1/9EB2: 0A ASL C1/9EB3: 8D 22 7B STA $7B22 C1/9EB6: AD 34 7B LDA $7B34 C1/9EB9: 29 FF 00 AND #$00FF C1/9EBC: 0A ASL C1/9EBD: 0A ASL C1/9EBE: 0A ASL C1/9EBF: 8D 24 7B STA $7B24 C1/9EC2: 7B TDC C1/9EC3: E2 20 SEP #$20 C1/9EC5: 60 RTS ; [ Clear Animation Tile Data Buffer (long access) ] C1/9EC6: 20 CA 9E JSR $9ECA C1/9EC9: 6B RTL ; [ Clear Animation Tile Data Buffer ] C1/9ECA: 8B PHB C1/9ECB: A9 7F LDA #$7F C1/9ECD: 48 PHA C1/9ECE: AB PLB C1/9ECF: C2 20 REP #$20 C1/9ED1: 7B TDC C1/9ED2: AA TAX C1/9ED3: A9 EE 02 LDA #$02EE C1/9ED6: 9D 00 C4 STA $C400,X C1/9ED9: 9D 00 CC STA $CC00,X C1/9EDC: 9D 00 D4 STA $D400,X C1/9EDF: 9D 00 DC STA $DC00,X C1/9EE2: E8 INX C1/9EE3: E8 INX C1/9EE4: E0 00 08 CPX #$0800 C1/9EE7: D0 ED BNE $9ED6 C1/9EE9: 7B TDC C1/9EEA: E2 20 SEP #$20 C1/9EEC: AB PLB C1/9EED: 60 RTS ; [ Clear Animation Graphics Buffer ] C1/9EEE: 8B PHB C1/9EEF: A9 7F LDA #$7F C1/9EF1: 48 PHA C1/9EF2: AB PLB C1/9EF3: C2 20 REP #$20 C1/9EF5: 7B TDC C1/9EF6: AA TAX C1/9EF7: A9 EE 01 LDA #$01EE C1/9EFA: 9D 00 E4 STA $E400,X C1/9EFD: 9D 00 E9 STA $E900,X C1/9F00: 9D 00 EE STA $EE00,X C1/9F03: 9D 00 F3 STA $F300,X C1/9F06: E8 INX C1/9F07: E8 INX C1/9F08: E0 00 05 CPX #$0500 C1/9F0B: D0 ED BNE $9EFA C1/9F0D: 7B TDC C1/9F0E: E2 20 SEP #$20 C1/9F10: AB PLB C1/9F11: 60 RTS ; [ Copy Target Graphics to BG1 ] C1/9F12: 20 89 BC JSR $BC89 ; get attacker number C1/9F15: 20 A6 BC JSR $BCA6 ; get target number C1/9F18: A5 12 LDA $12 C1/9F1A: 80 05 BRA $9F21 ; [ Copy Attacker Graphics to BG1 ] C1/9F1C: 20 89 BC JSR $BC89 ; get attacker number C1/9F1F: A5 10 LDA $10 C1/9F21: 30 14 BMI $9F37 ; branch if a monster C1/9F23: AA TAX C1/9F24: BD 10 7B LDA $7B10,X ; character facing direction C1/9F27: F0 09 BEQ $9F32 C1/9F29: A9 10 LDA #$10 C1/9F2B: 85 28 STA $28 C1/9F2D: A9 40 LDA #$40 C1/9F2F: 85 29 STA $29 C1/9F31: 60 RTS C1/9F32: 64 28 STZ $28 C1/9F34: 64 29 STZ $29 C1/9F36: 60 RTS C1/9F37: 29 7F AND #$7F ; monster number C1/9F39: 38 SEC C1/9F3A: E9 04 SBC #$04 C1/9F3C: 0A ASL C1/9F3D: AA TAX C1/9F3E: BD F3 80 LDA $80F3,X ; monster facing direction C1/9F41: 5D 7E 61 EOR $617E,X C1/9F44: 29 01 AND #$01 C1/9F46: F0 E1 BEQ $9F29 C1/9F48: 80 E8 BRA $9F32 ; [ Load BG3 Animation Frame Data ] C1/9F4A: 20 1C 9F JSR $9F1C C1/9F4D: 20 EE 9E JSR $9EEE C1/9F50: A9 D1 LDA #$D1 C1/9F52: 85 12 STA $12 C1/9F54: A9 7F LDA #$7F C1/9F56: 85 16 STA $16 C1/9F58: A9 30 LDA #$30 C1/9F5A: 85 2A STA $2A C1/9F5C: A2 00 E4 LDX #$E400 C1/9F5F: 80 12 BRA $9F73 ; [ Load BG1 Animation Frame Data ] C1/9F61: 48 PHA C1/9F62: 20 CA 9E JSR $9ECA C1/9F65: A9 D1 LDA #$D1 C1/9F67: 85 12 STA $12 C1/9F69: A9 7F LDA #$7F C1/9F6B: 85 16 STA $16 C1/9F6D: 68 PLA C1/9F6E: 85 2A STA $2A C1/9F70: A2 00 C4 LDX #$C400 C1/9F73: 86 14 STX $14 C1/9F75: AD EA 7A LDA $7AEA ; number of frames C1/9F78: 29 3F AND #$3F C1/9F7A: 8D EA 7A STA $7AEA C1/9F7D: C2 20 REP #$20 C1/9F7F: AD EC 7A LDA $7AEC ; animation frame data index C1/9F82: 0A ASL C1/9F83: AA TAX C1/9F84: BF 3C DF D4 LDA $D4DF3C,X ; pointer to animation frame data C1/9F88: 85 10 STA $10 C1/9F8A: BF 3E DF D4 LDA $D4DF3E,X C1/9F8E: 85 1A STA $1A C1/9F90: 7B TDC C1/9F91: E2 20 SEP #$20 C1/9F93: A8 TAY C1/9F94: A6 10 LDX $10 C1/9F96: E4 1A CPX $1A C1/9F98: F0 60 BEQ $9FFA C1/9F9A: A7 10 LDA [$10] C1/9F9C: C9 FF CMP #$FF C1/9F9E: F0 4B BEQ $9FEB C1/9FA0: 29 F0 AND #$F0 C1/9FA2: 4A LSR C1/9FA3: 4A LSR C1/9FA4: 4A LSR C1/9FA5: 4A LSR C1/9FA6: 18 CLC C1/9FA7: 65 28 ADC $28 C1/9FA9: AA TAX C1/9FAA: BF 13 A0 C1 LDA $C1A013,X C1/9FAE: 85 22 STA $22 C1/9FB0: 64 23 STZ $23 C1/9FB2: A7 10 LDA [$10] C1/9FB4: 29 0F AND #$0F C1/9FB6: C2 20 REP #$20 C1/9FB8: 0A ASL C1/9FB9: 0A ASL C1/9FBA: 0A ASL C1/9FBB: 0A ASL C1/9FBC: 0A ASL C1/9FBD: 18 CLC C1/9FBE: 65 22 ADC $22 C1/9FC0: A8 TAY C1/9FC1: E6 10 INC $10 C1/9FC3: 7B TDC C1/9FC4: E2 20 SEP #$20 C1/9FC6: A7 10 LDA [$10] C1/9FC8: 29 07 AND #$07 C1/9FCA: 0A ASL C1/9FCB: 85 24 STA $24 C1/9FCD: A7 10 LDA [$10] C1/9FCF: 29 38 AND #$38 C1/9FD1: 0A ASL C1/9FD2: 0A ASL C1/9FD3: 18 CLC C1/9FD4: 65 24 ADC $24 C1/9FD6: 97 14 STA [$14],Y C1/9FD8: C8 INY C1/9FD9: A7 10 LDA [$10] C1/9FDB: 29 C0 AND #$C0 C1/9FDD: 45 29 EOR $29 C1/9FDF: 05 2A ORA $2A C1/9FE1: 97 14 STA [$14],Y C1/9FE3: A6 10 LDX $10 C1/9FE5: E8 INX C1/9FE6: 86 10 STX $10 C1/9FE8: 4C 94 9F JMP $9F94 C1/9FEB: 5A PHY C1/9FEC: A0 01 00 LDY #$0001 C1/9FEF: B7 10 LDA [$10],Y C1/9FF1: 7A PLY C1/9FF2: C9 FF CMP #$FF C1/9FF4: F0 04 BEQ $9FFA C1/9FF6: A9 FF LDA #$FF C1/9FF8: 80 A6 BRA $9FA0 C1/9FFA: C2 20 REP #$20 C1/9FFC: A5 14 LDA $14 C1/9FFE: 18 CLC C1/9FFF: 69 00 02 ADC #$0200 C1/A002: 85 14 STA $14 C1/A004: EE EC 7A INC $7AEC C1/A007: 7B TDC C1/A008: E2 20 SEP #$20 C1/A00A: CE EA 7A DEC $7AEA C1/A00D: F0 03 BEQ $A012 C1/A00F: 4C 7D 9F JMP $9F7D C1/A012: 60 RTS C1/A013: .DB $00, $02, $04, $06, $08, $0A, $0C, $0E, $10, $12, $14, $16, $18, $1A, $1C, $1E C1/A023: .DB $1E, $1C, $1A, $18, $16, $14, $12, $10, $0E, $0C, $0A, $08, $06, $04, $02, $00 ; [ Clear Sprite Animation Frame Data ] obj_shape_buf_clr: C1/A033: C2 20 REP #$20 C1/A035: 7B TDC C1/A036: AA TAX C1/A037: A9 FF FF LDA #$FFFF C1/A03A: 9D 3F CE STA $CE3F,X ; clear all sprite animation frames C1/A03D: 9D BF D8 STA $D8BF,X C1/A040: E8 INX C1/A041: E8 INX C1/A042: E0 80 0A CPX #$0A80 C1/A045: D0 F3 BNE $A03A C1/A047: 7B TDC C1/A048: E2 20 SEP #$20 C1/A04A: 60 RTS ; [ Load Sprite Frame Data (fight) ] attack_def_init: C1/A04B: A9 01 LDA #$01 C1/A04D: 20 80 A0 JSR $A080 C1/A050: 1A INC C1/A051: C9 07 CMP #$07 C1/A053: D0 F8 BNE $A04D C1/A055: 60 RTS ; fight/esper sprite frame pointers (frame $1D, $18, $19, $1A, $1B, $1C, $1E) C1/A056: .DW $0042, $D7C3, $E243 C1/A05C: .DW $0043, $D61F, $E09F C1/A062: .DW $0044, $D673, $E0F3 C1/A068: .DW $0045, $D6C7, $E147 C1/A06E: .DW $0046, $D71B, $E19B C1/A074: .DW $0047, $D76F, $E1EF C1/A07A: .DW $0048, $D817, $E297 ; [ Load Sprite Frame Data (fight/esper) ] magic_sp_init: C1/A080: 48 PHA C1/A081: 0A ASL C1/A082: 85 12 STA $12 C1/A084: 0A ASL C1/A085: 18 CLC C1/A086: 65 12 ADC $12 C1/A088: AA TAX C1/A089: C2 20 REP #$20 C1/A08B: BF 56 A0 C1 LDA $C1A056,X C1/A08F: 48 PHA C1/A090: BF 58 A0 C1 LDA $C1A058,X C1/A094: 85 14 STA $14 C1/A096: BF 5A A0 C1 LDA $C1A05A,X C1/A09A: 85 1C STA $1C C1/A09C: FA PLX C1/A09D: 7B TDC C1/A09E: E2 20 SEP #$20 C1/A0A0: 20 8B A1 JSR $A18B ; load animation graphics data C1/A0A3: A9 D1 LDA #$D1 C1/A0A5: 85 12 STA $12 C1/A0A7: 20 C6 A0 JSR $A0C6 ; load sprite frame data C1/A0AA: 68 PLA C1/A0AB: 60 RTS ; [ Load Sprite Frame Data (esper) ] ref_init: C1/A0AC: 7B TDC C1/A0AD: 20 80 A0 JSR $A080 C1/A0B0: A9 06 LDA #$06 C1/A0B2: 4C 80 A0 JMP $A080 ; [ Load Sprite Frame Data (spell/weapon) ] obj_shape_init: C1/A0B5: 20 33 A0 JSR $A033 ; clear sprite animation frame data C1/A0B8: A9 D1 LDA #$D1 C1/A0BA: 85 12 STA $12 C1/A0BC: A2 3F CE LDX #$CE3F C1/A0BF: 86 14 STX $14 C1/A0C1: A2 BF D8 LDX #$D8BF C1/A0C4: 86 1C STX $1C ; fall through ; [ Load Sprite Frame Data ] ; $12 = frame data bank ; +$14 = destination address (+$7E0000) ; +$1C = horizontally flipped destination address (+$7E0000) obj_shape_init_main: C1/A0C6: AD EA 7A LDA $7AEA ; number of frames C1/A0C9: 29 3F AND #$3F C1/A0CB: 8D EA 7A STA $7AEA C1/A0CE: AD EE 7A LDA $7AEE ; $18 = frame width C1/A0D1: 0A ASL C1/A0D2: 0A ASL C1/A0D3: 0A ASL C1/A0D4: 85 18 STA $18 C1/A0D6: AD EF 7A LDA $7AEF ; $19 = frame height C1/A0D9: 0A ASL C1/A0DA: 0A ASL C1/A0DB: 0A ASL C1/A0DC: 85 19 STA $19 C1/A0DE: C2 20 REP #$20 C1/A0E0: AD EC 7A LDA $7AEC ; frame data index C1/A0E3: 0A ASL C1/A0E4: AA TAX C1/A0E5: BF 3C DF D4 LDA $D4DF3C,X ; ++$10 = pointer to animation frame data C1/A0E9: 85 10 STA $10 C1/A0EB: BF 3E DF D4 LDA $D4DF3E,X ; +$1A = pointer to next animation frame data C1/A0EF: 85 1A STA $1A C1/A0F1: 7B TDC C1/A0F2: E2 20 SEP #$20 C1/A0F4: A8 TAY C1/A0F5: A6 10 LDX $10 C1/A0F7: E4 1A CPX $1A C1/A0F9: F0 69 BEQ $A164 ; branch if at end of data (beginning of next frame) C1/A0FB: A7 10 LDA [$10] C1/A0FD: C9 FF CMP #$FF C1/A0FF: F0 54 BEQ $A155 ; branch if at end of data ($FF) C1/A101: 29 F0 AND #$F0 C1/A103: 85 22 STA $22 ; $22 = x position C1/A105: 38 SEC C1/A106: E5 18 SBC $18 C1/A108: 91 14 STA ($14),Y ; set x position C1/A10A: A5 22 LDA $22 C1/A10C: 49 FF EOR #$FF C1/A10E: 1A INC C1/A10F: 38 SEC C1/A110: E9 10 SBC #$10 C1/A112: 18 CLC C1/A113: 65 18 ADC $18 C1/A115: 91 1C STA ($1C),Y ; set x position (horizontally flipped) C1/A117: C8 INY C1/A118: A7 10 LDA [$10] ; y position C1/A11A: 29 0F AND #$0F C1/A11C: 0A ASL C1/A11D: 0A ASL C1/A11E: 0A ASL C1/A11F: 0A ASL C1/A120: 38 SEC C1/A121: E5 19 SBC $19 C1/A123: 91 14 STA ($14),Y ; set y position C1/A125: 91 1C STA ($1C),Y ; set y position (horizontally flipped) C1/A127: C8 INY C1/A128: A6 10 LDX $10 ; increment frame data pointer C1/A12A: E8 INX C1/A12B: 86 10 STX $10 C1/A12D: A7 10 LDA [$10] ; tile number C1/A12F: 29 07 AND #$07 C1/A131: 0A ASL C1/A132: 85 16 STA $16 C1/A134: A7 10 LDA [$10] C1/A136: 29 38 AND #$38 C1/A138: 0A ASL C1/A139: 0A ASL C1/A13A: 18 CLC C1/A13B: 65 16 ADC $16 C1/A13D: 91 14 STA ($14),Y ; set tile number C1/A13F: 91 1C STA ($1C),Y ; set tile number (horizontally flipped) C1/A141: C8 INY C1/A142: A7 10 LDA [$10] ; vh flip C1/A144: 29 C0 AND #$C0 C1/A146: 91 14 STA ($14),Y ; set vh flip C1/A148: 49 40 EOR #$40 C1/A14A: 91 1C STA ($1C),Y ; set vh flip (horizontally flipped) C1/A14C: C8 INY ; next tile C1/A14D: A6 10 LDX $10 C1/A14F: E8 INX C1/A150: 86 10 STX $10 C1/A152: 4C F5 A0 JMP $A0F5 C1/A155: 5A PHY C1/A156: A0 01 00 LDY #$0001 C1/A159: B7 10 LDA [$10],Y ; get next byte of frame data C1/A15B: 7A PLY C1/A15C: C9 FF CMP #$FF C1/A15E: F0 04 BEQ $A164 ; end of frame if it's $FF C1/A160: A9 FF LDA #$FF C1/A162: 80 9D BRA $A101 ; if not, it's actually a tile at (15,15) C1/A164: A9 FF LDA #$FF ; end of frame C1/A166: 91 14 STA ($14),Y C1/A168: 91 1C STA ($1C),Y C1/A16A: C2 20 REP #$20 C1/A16C: A5 14 LDA $14 ; increment RAM frame data pointers C1/A16E: 18 CLC C1/A16F: 69 54 00 ADC #$0054 C1/A172: 85 14 STA $14 C1/A174: A5 1C LDA $1C C1/A176: 18 CLC C1/A177: 69 54 00 ADC #$0054 C1/A17A: 85 1C STA $1C C1/A17C: EE EC 7A INC $7AEC ; increment frame data index C1/A17F: 7B TDC C1/A180: E2 20 SEP #$20 C1/A182: CE EA 7A DEC $7AEA ; decrement frame counter C1/A185: F0 03 BEQ $A18A C1/A187: 4C DE A0 JMP $A0DE C1/A18A: 60 RTS ; [ Load Animation Graphics Data ] get_shap_data: C1/A18B: C2 20 REP #$20 C1/A18D: 8A TXA C1/A18E: 29 FF 7F AND #$7FFF C1/A191: 0A ASL C1/A192: 8D EA 7A STA $7AEA C1/A195: 0A ASL C1/A196: 18 CLC C1/A197: 6D EA 7A ADC $7AEA C1/A19A: AA TAX C1/A19B: 7B TDC C1/A19C: A8 TAY C1/A19D: BF 00 D0 D4 LDA $D4D000,X ; animation graphics data C1/A1A1: 99 EA 7A STA $7AEA,Y C1/A1A4: E8 INX C1/A1A5: E8 INX C1/A1A6: C8 INY C1/A1A7: C8 INY C1/A1A8: C0 06 00 CPY #$0006 C1/A1AB: D0 F0 BNE $A19D C1/A1AD: 7B TDC C1/A1AE: E2 20 SEP #$20 C1/A1B0: 60 RTS ; [ Load Sprite Animation Graphics ] C1/A1B1: 86 10 STX $10 C1/A1B3: A2 80 00 LDX #$0080 C1/A1B6: 86 16 STX $16 C1/A1B8: A2 00 24 LDX #$2400 C1/A1BB: 86 1A STX $1A C1/A1BD: 4C EF A1 JMP $A1EF ; [ Load Weapon Animation Graphics ] C1/A1C0: 86 10 STX $10 C1/A1C2: A2 60 00 LDX #$0060 C1/A1C5: 86 16 STX $16 C1/A1C7: A2 00 26 LDX #$2600 C1/A1CA: 86 1A STX $1A C1/A1CC: 4C EF A1 JMP $A1EF ; [ Load BG3 Animation Graphics ] C1/A1CF: 86 10 STX $10 C1/A1D1: A2 80 00 LDX #$0080 C1/A1D4: 86 16 STX $16 C1/A1D6: A2 00 50 LDX #$5000 C1/A1D9: 86 1A STX $1A C1/A1DB: A5 11 LDA $11 C1/A1DD: 4C C8 A3 JMP $A3C8 ; [ Load BG1 Animation Graphics ] C1/A1E0: 86 10 STX $10 C1/A1E2: A2 A0 00 LDX #$00A0 C1/A1E5: 86 16 STX $16 C1/A1E7: A2 00 00 LDX #$0000 C1/A1EA: 86 1A STX $1A C1/A1EC: 4C EF A1 JMP $A1EF ; [ Load Animation Graphics ] C1/A1EF: A5 10 LDA $10 C1/A1F1: 30 05 BMI $A1F8 ; branch if 2bpp graphics C1/A1F3: A5 11 LDA $11 C1/A1F5: 4C FD A1 JMP $A1FD ; load 3bpp animation graphics C1/A1F8: A5 11 LDA $11 C1/A1FA: 4C 06 A3 JMP $A306 ; load 2bpp animation graphics ; [ Load 3bpp Animation Graphics ] C1/A1FD: 85 11 STA $11 C1/A1FF: A5 10 LDA $10 C1/A201: 4A LSR C1/A202: 4A LSR C1/A203: 4A LSR C1/A204: 4A LSR C1/A205: 4A LSR C1/A206: 4A LSR C1/A207: 29 01 AND #$01 C1/A209: 85 10 STA $10 C1/A20B: C2 20 REP #$20 C1/A20D: A5 10 LDA $10 C1/A20F: EB XBA C1/A210: 0A ASL C1/A211: 0A ASL C1/A212: 0A ASL C1/A213: 0A ASL C1/A214: 0A ASL C1/A215: 0A ASL C1/A216: 18 CLC C1/A217: 69 00 00 ADC #$0000 C1/A21A: 85 10 STA $10 C1/A21C: 7B TDC C1/A21D: E2 20 SEP #$20 C1/A21F: A9 D2 LDA #$D2 C1/A221: 85 12 STA $12 C1/A223: A9 7F LDA #$7F C1/A225: 85 28 STA $28 C1/A227: A2 00 E4 LDX #$E400 C1/A22A: 86 26 STX $26 C1/A22C: C2 20 REP #$20 C1/A22E: A5 16 LDA $16 C1/A230: 48 PHA C1/A231: 64 24 STZ $24 C1/A233: A7 10 LDA [$10] C1/A235: 29 FF 3F AND #$3FFF C1/A238: 0A ASL C1/A239: 0A ASL C1/A23A: 26 24 ROL $24 C1/A23C: 0A ASL C1/A23D: 85 22 STA $22 C1/A23F: 0A ASL C1/A240: 26 24 ROL $24 C1/A242: 18 CLC C1/A243: 65 22 ADC $22 C1/A245: 85 22 STA $22 C1/A247: A5 24 LDA $24 C1/A249: 69 00 00 ADC #$0000 C1/A24C: 85 24 STA $24 C1/A24E: A5 22 LDA $22 C1/A250: 18 CLC C1/A251: 69 00 00 ADC #$0000 C1/A254: 85 22 STA $22 C1/A256: A5 24 LDA $24 C1/A258: 69 D3 00 ADC #$00D3 C1/A25B: 85 24 STA $24 C1/A25D: A7 10 LDA [$10] C1/A25F: 29 00 40 AND #$4000 C1/A262: 85 14 STA $14 C1/A264: A7 10 LDA [$10] C1/A266: 29 00 80 AND #$8000 C1/A269: D0 39 BNE $A2A4 C1/A26B: 7B TDC C1/A26C: A8 TAY C1/A26D: A7 22 LDA [$22] C1/A26F: 20 70 A4 JSR $A470 C1/A272: 97 26 STA [$26],Y C1/A274: A5 22 LDA $22 C1/A276: 18 CLC C1/A277: 69 02 00 ADC #$0002 C1/A27A: 85 22 STA $22 C1/A27C: A5 24 LDA $24 C1/A27E: 69 00 00 ADC #$0000 C1/A281: 85 24 STA $24 C1/A283: C8 INY C1/A284: C8 INY C1/A285: C0 10 00 CPY #$0010 C1/A288: D0 E3 BNE $A26D C1/A28A: A7 22 LDA [$22] C1/A28C: 20 70 A4 JSR $A470 C1/A28F: 29 FF 00 AND #$00FF C1/A292: 97 26 STA [$26],Y C1/A294: E6 22 INC $22 C1/A296: D0 02 BNE $A29A C1/A298: E6 24 INC $24 C1/A29A: C8 INY C1/A29B: C8 INY C1/A29C: C0 20 00 CPY #$0020 C1/A29F: D0 E9 BNE $A28A C1/A2A1: 4C DE A2 JMP $A2DE C1/A2A4: A0 0E 00 LDY #$000E C1/A2A7: A7 22 LDA [$22] C1/A2A9: 20 70 A4 JSR $A470 C1/A2AC: 97 26 STA [$26],Y C1/A2AE: A5 22 LDA $22 C1/A2B0: 18 CLC C1/A2B1: 69 02 00 ADC #$0002 C1/A2B4: 85 22 STA $22 C1/A2B6: A5 24 LDA $24 C1/A2B8: 69 00 00 ADC #$0000 C1/A2BB: 85 24 STA $24 C1/A2BD: 88 DEY C1/A2BE: 88 DEY C1/A2BF: C0 FE FF CPY #$FFFE C1/A2C2: D0 E3 BNE $A2A7 C1/A2C4: A0 1E 00 LDY #$001E C1/A2C7: A7 22 LDA [$22] C1/A2C9: 20 70 A4 JSR $A470 C1/A2CC: 29 FF 00 AND #$00FF C1/A2CF: 97 26 STA [$26],Y C1/A2D1: E6 22 INC $22 C1/A2D3: D0 02 BNE $A2D7 C1/A2D5: E6 24 INC $24 C1/A2D7: 88 DEY C1/A2D8: 88 DEY C1/A2D9: C0 0E 00 CPY #$000E C1/A2DC: D0 E9 BNE $A2C7 C1/A2DE: A5 26 LDA $26 C1/A2E0: 18 CLC C1/A2E1: 69 20 00 ADC #$0020 C1/A2E4: 85 26 STA $26 C1/A2E6: E6 10 INC $10 C1/A2E8: E6 10 INC $10 C1/A2EA: C6 16 DEC $16 C1/A2EC: F0 03 BEQ $A2F1 C1/A2EE: 4C 31 A2 JMP $A231 C1/A2F1: 68 PLA C1/A2F2: 0A ASL C1/A2F3: 0A ASL C1/A2F4: 0A ASL C1/A2F5: 0A ASL C1/A2F6: 0A ASL C1/A2F7: 85 10 STA $10 C1/A2F9: 7B TDC C1/A2FA: E2 20 SEP #$20 C1/A2FC: A2 00 E4 LDX #$E400 C1/A2FF: A9 7F LDA #$7F C1/A301: A4 1A LDY $1A C1/A303: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ Load 2bpp Animation Graphics ] C1/A306: 85 11 STA $11 C1/A308: A5 10 LDA $10 C1/A30A: 4A LSR C1/A30B: 4A LSR C1/A30C: 4A LSR C1/A30D: 4A LSR C1/A30E: 4A LSR C1/A30F: 4A LSR C1/A310: 29 01 AND #$01 C1/A312: 85 10 STA $10 C1/A314: C2 20 REP #$20 C1/A316: A5 10 LDA $10 C1/A318: EB XBA C1/A319: 0A ASL C1/A31A: 0A ASL C1/A31B: 0A ASL C1/A31C: 0A ASL C1/A31D: 0A ASL C1/A31E: 0A ASL C1/A31F: 18 CLC C1/A320: 69 00 C0 ADC #$C000 C1/A323: 85 10 STA $10 C1/A325: 7B TDC C1/A326: E2 20 SEP #$20 C1/A328: A9 D2 LDA #$D2 C1/A32A: 85 12 STA $12 C1/A32C: A9 D8 LDA #$D8 C1/A32E: 85 24 STA $24 C1/A330: A9 7F LDA #$7F C1/A332: 85 28 STA $28 C1/A334: A2 00 E4 LDX #$E400 C1/A337: 86 26 STX $26 C1/A339: C2 20 REP #$20 C1/A33B: A5 16 LDA $16 C1/A33D: 48 PHA C1/A33E: A7 10 LDA [$10] C1/A340: 29 FF 3F AND #$3FFF C1/A343: 0A ASL C1/A344: 0A ASL C1/A345: 0A ASL C1/A346: 0A ASL C1/A347: 18 CLC C1/A348: 69 00 70 ADC #$7000 C1/A34B: 85 22 STA $22 C1/A34D: A7 10 LDA [$10] C1/A34F: 29 00 40 AND #$4000 C1/A352: 85 14 STA $14 C1/A354: A7 10 LDA [$10] C1/A356: 29 00 80 AND #$8000 C1/A359: D0 21 BNE $A37C C1/A35B: 7B TDC C1/A35C: A8 TAY C1/A35D: A7 22 LDA [$22] C1/A35F: 20 70 A4 JSR $A470 C1/A362: 97 26 STA [$26],Y C1/A364: E6 22 INC $22 C1/A366: E6 22 INC $22 C1/A368: C8 INY C1/A369: C8 INY C1/A36A: C0 10 00 CPY #$0010 C1/A36D: D0 EE BNE $A35D C1/A36F: 7B TDC C1/A370: 97 26 STA [$26],Y C1/A372: C8 INY C1/A373: C8 INY C1/A374: C0 20 00 CPY #$0020 C1/A377: D0 F7 BNE $A370 C1/A379: 4C A0 A3 JMP $A3A0 C1/A37C: A0 0E 00 LDY #$000E C1/A37F: A7 22 LDA [$22] C1/A381: 20 70 A4 JSR $A470 C1/A384: 97 26 STA [$26],Y C1/A386: E6 22 INC $22 C1/A388: E6 22 INC $22 C1/A38A: 88 DEY C1/A38B: 88 DEY C1/A38C: C0 FE FF CPY #$FFFE C1/A38F: D0 EE BNE $A37F C1/A391: A0 1E 00 LDY #$001E C1/A394: 7B TDC C1/A395: 97 26 STA [$26],Y C1/A397: E6 22 INC $22 C1/A399: 88 DEY C1/A39A: 88 DEY C1/A39B: C0 0E 00 CPY #$000E C1/A39E: D0 F5 BNE $A395 C1/A3A0: A5 26 LDA $26 C1/A3A2: 18 CLC C1/A3A3: 69 20 00 ADC #$0020 C1/A3A6: 85 26 STA $26 C1/A3A8: E6 10 INC $10 C1/A3AA: E6 10 INC $10 C1/A3AC: C6 16 DEC $16 C1/A3AE: F0 03 BEQ $A3B3 C1/A3B0: 4C 3E A3 JMP $A33E C1/A3B3: 68 PLA C1/A3B4: 0A ASL C1/A3B5: 0A ASL C1/A3B6: 0A ASL C1/A3B7: 0A ASL C1/A3B8: 0A ASL C1/A3B9: 85 10 STA $10 C1/A3BB: 7B TDC C1/A3BC: E2 20 SEP #$20 C1/A3BE: A2 00 E4 LDX #$E400 C1/A3C1: A9 7F LDA #$7F C1/A3C3: A4 1A LDY $1A C1/A3C5: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ Load 2bpp Animation Graphics (BG3) ] C1/A3C8: 85 11 STA $11 C1/A3CA: A5 10 LDA $10 C1/A3CC: 4A LSR C1/A3CD: 4A LSR C1/A3CE: 4A LSR C1/A3CF: 4A LSR C1/A3D0: 4A LSR C1/A3D1: 4A LSR C1/A3D2: 29 01 AND #$01 C1/A3D4: 85 10 STA $10 C1/A3D6: C2 20 REP #$20 C1/A3D8: A5 10 LDA $10 C1/A3DA: EB XBA C1/A3DB: 0A ASL C1/A3DC: 0A ASL C1/A3DD: 0A ASL C1/A3DE: 0A ASL C1/A3DF: 0A ASL C1/A3E0: 0A ASL C1/A3E1: 18 CLC C1/A3E2: 69 00 C0 ADC #$C000 C1/A3E5: 85 10 STA $10 C1/A3E7: 7B TDC C1/A3E8: E2 20 SEP #$20 C1/A3EA: A9 D2 LDA #$D2 C1/A3EC: 85 12 STA $12 C1/A3EE: A9 D8 LDA #$D8 C1/A3F0: 85 24 STA $24 C1/A3F2: A9 7F LDA #$7F C1/A3F4: 85 28 STA $28 C1/A3F6: A2 00 E4 LDX #$E400 C1/A3F9: 86 26 STX $26 C1/A3FB: C2 20 REP #$20 C1/A3FD: A5 16 LDA $16 C1/A3FF: 48 PHA C1/A400: A7 10 LDA [$10] C1/A402: 29 FF 3F AND #$3FFF C1/A405: 0A ASL C1/A406: 0A ASL C1/A407: 0A ASL C1/A408: 0A ASL C1/A409: 18 CLC C1/A40A: 69 00 70 ADC #$7000 C1/A40D: 85 22 STA $22 C1/A40F: A7 10 LDA [$10] C1/A411: 29 00 40 AND #$4000 C1/A414: 85 14 STA $14 C1/A416: A7 10 LDA [$10] C1/A418: 29 00 80 AND #$8000 C1/A41B: D0 17 BNE $A434 C1/A41D: 7B TDC C1/A41E: A8 TAY C1/A41F: A7 22 LDA [$22] C1/A421: 20 70 A4 JSR $A470 C1/A424: 97 26 STA [$26],Y C1/A426: E6 22 INC $22 C1/A428: E6 22 INC $22 C1/A42A: C8 INY C1/A42B: C8 INY C1/A42C: C0 10 00 CPY #$0010 C1/A42F: D0 EE BNE $A41F C1/A431: 4C 49 A4 JMP $A449 C1/A434: A0 0E 00 LDY #$000E C1/A437: A7 22 LDA [$22] C1/A439: 20 70 A4 JSR $A470 C1/A43C: 97 26 STA [$26],Y C1/A43E: E6 22 INC $22 C1/A440: E6 22 INC $22 C1/A442: 88 DEY C1/A443: 88 DEY C1/A444: C0 FE FF CPY #$FFFE C1/A447: D0 EE BNE $A437 C1/A449: A5 26 LDA $26 C1/A44B: 18 CLC C1/A44C: 69 10 00 ADC #$0010 C1/A44F: 85 26 STA $26 C1/A451: E6 10 INC $10 C1/A453: E6 10 INC $10 C1/A455: C6 16 DEC $16 C1/A457: F0 03 BEQ $A45C C1/A459: 4C 00 A4 JMP $A400 C1/A45C: 68 PLA C1/A45D: 0A ASL C1/A45E: 0A ASL C1/A45F: 0A ASL C1/A460: 0A ASL C1/A461: 85 10 STA $10 C1/A463: 7B TDC C1/A464: E2 20 SEP #$20 C1/A466: A2 00 E4 LDX #$E400 C1/A469: A9 7F LDA #$7F C1/A46B: A4 1A LDY $1A C1/A46D: 4C 8D 19 JMP $198D ; init large data DMA to VRAM C1/A470: 48 PHA C1/A471: A5 14 LDA $14 C1/A473: F0 10 BEQ $A485 C1/A475: 68 PLA C1/A476: EB XBA C1/A477: 85 18 STA $18 C1/A479: DA PHX C1/A47A: A2 10 00 LDX #$0010 C1/A47D: 06 18 ASL $18 C1/A47F: 6A ROR C1/A480: CA DEX C1/A481: D0 FA BNE $A47D C1/A483: FA PLX C1/A484: 60 RTS C1/A485: 68 PLA C1/A486: 60 RTS magic_tmp_buf_clr: C1/A487: 8B PHB C1/A488: A9 7F LDA #$7F C1/A48A: 48 PHA C1/A48B: AB PLB C1/A48C: C2 20 REP #$20 C1/A48E: 7B TDC C1/A48F: AA TAX C1/A490: 9D 00 E4 STA $E400,X C1/A493: E8 INX C1/A494: E8 INX C1/A495: E0 00 14 CPX #$1400 C1/A498: D0 F6 BNE $A490 C1/A49A: 7B TDC C1/A49B: AA TAX C1/A49C: 9E 3F 7B STZ $7B3F,X C1/A49F: 9E 49 7B STZ $7B49,X C1/A4A2: 9E 53 7B STZ $7B53,X C1/A4A5: 9E 5D 7B STZ $7B5D,X C1/A4A8: E8 INX C1/A4A9: E8 INX C1/A4AA: E0 0A 00 CPX #$000A C1/A4AD: D0 ED BNE $A49C C1/A4AF: E2 20 SEP #$20 C1/A4B1: AB PLB C1/A4B2: 60 RTS ; [ Battle Script Command $0B: Display Damage Numerals (single) ] ; b1 = numeral target ; +b2 = gm?vvvvvv vvvvvvvv ($FFFF = hide numerals) ; g: green numeral ; m: display "Miss" ; v: numeral value C1/A4B3: AD 2E 63 LDA $632E ; damage numeral counter (next available numeral thread) C1/A4B6: 29 03 AND #$03 C1/A4B8: 8D 2E 63 STA $632E C1/A4BB: AA TAX C1/A4BC: 9E 1A 63 STZ $631A,X ; clear numeral data C1/A4BF: 9E 22 63 STZ $6322,X C1/A4C2: 20 2A 02 JSR $022A ; wait for vblank C1/A4C5: 7B TDC C1/A4C6: AA TAX C1/A4C7: A8 TAY C1/A4C8: C8 INY C1/A4C9: BD 1A 63 LDA $631A,X ; branch if numeral is not enabled C1/A4CC: F0 0E BEQ $A4DC C1/A4CE: B1 76 LDA ($76),Y ; target C1/A4D0: DD 1E 63 CMP $631E,X C1/A4D3: D0 07 BNE $A4DC ; branch if numeral doesn't have the same target as the new numeral C1/A4D5: A9 08 LDA #$08 C1/A4D7: 20 B6 9B JSR $9BB6 ; wait 8 frames while the existing numeral finishes C1/A4DA: 80 06 BRA $A4E2 C1/A4DC: E8 INX C1/A4DD: E0 04 00 CPX #$0004 C1/A4E0: D0 E7 BNE $A4C9 C1/A4E2: 7B TDC C1/A4E3: AA TAX C1/A4E4: 9E B3 60 STZ $60B3,X ; clear graphics buffer C1/A4E7: E8 INX C1/A4E8: E0 80 00 CPX #$0080 C1/A4EB: D0 F7 BNE $A4E4 C1/A4ED: AD 2E 63 LDA $632E ; numeral counter C1/A4F0: 0A ASL C1/A4F1: AA TAX C1/A4F2: BF CB A5 C1 LDA $C1A5CB,X ; pointer to damage numeral graphics in VRAM C1/A4F6: 8D 17 63 STA $6317 C1/A4F9: BF CC A5 C1 LDA $C1A5CC,X C1/A4FD: 8D 18 63 STA $6318 C1/A500: EE 16 63 INC $6316 ; enable damage numeral graphics update in VRAM C1/A503: 20 2A 02 JSR $022A ; wait for vblank C1/A506: A0 03 00 LDY #$0003 C1/A509: B1 76 LDA ($76),Y ; branch if there is a valid numeral value C1/A50B: C9 FF CMP #$FF C1/A50D: D0 01 BNE $A510 C1/A50F: 60 RTS C1/A510: 85 1E STA $1E ; $1E = hi byte of numeral value C1/A512: 29 40 AND #$40 C1/A514: F0 1B BEQ $A531 ; branch if not displaying "Miss" ; miss C1/A516: C2 20 REP #$20 C1/A518: 7B TDC C1/A519: AA TAX C1/A51A: BF 00 BC 7F LDA $7FBC00,X ; copy "Miss" graphics to buffer C1/A51E: 9D D3 60 STA $60D3,X C1/A521: E8 INX C1/A522: E8 INX C1/A523: E0 40 00 CPX #$0040 C1/A526: D0 F2 BNE $A51A C1/A528: 7B TDC C1/A529: E2 20 SEP #$20 C1/A52B: A9 08 LDA #$08 ; x offset C1/A52D: 85 14 STA $14 C1/A52F: 80 58 BRA $A589 ; numeral C1/A531: 88 DEY C1/A532: C2 20 REP #$20 C1/A534: B1 76 LDA ($76),Y ; numeral value C1/A536: 29 FF 3F AND #$3FFF C1/A539: AA TAX C1/A53A: 7B TDC C1/A53B: E2 20 SEP #$20 C1/A53D: 64 68 STZ $68 ; clear hex->dec conversion constant C1/A53F: 20 2B 1B JSR $1B2B ; convert hex to decimal C1/A542: C2 20 REP #$20 C1/A544: A0 B3 60 LDY #$60B3 ; pointer to graphics buffer C1/A547: A9 10 00 LDA #$0010 C1/A54A: 85 14 STA $14 C1/A54C: A5 69 LDA $69 ; thousands digit C1/A54E: 29 FF 00 AND #$00FF C1/A551: D0 1F BNE $A572 ; branch if not zero (show digit) C1/A553: A9 0C 00 LDA #$000C C1/A556: 85 14 STA $14 C1/A558: A5 6A LDA $6A C1/A55A: 29 FF 00 AND #$00FF C1/A55D: D0 18 BNE $A577 C1/A55F: A9 08 00 LDA #$0008 C1/A562: 85 14 STA $14 C1/A564: A5 6B LDA $6B C1/A566: 29 FF 00 AND #$00FF C1/A569: D0 11 BNE $A57C C1/A56B: A9 04 00 LDA #$0004 C1/A56E: 85 14 STA $14 C1/A570: 80 0F BRA $A581 C1/A572: A5 69 LDA $69 ; thousands digit C1/A574: 20 DB A5 JSR $A5DB ; copy damage numeral tile to buffer C1/A577: A5 6A LDA $6A ; hundreds digit C1/A579: 20 DB A5 JSR $A5DB ; copy damage numeral tile to buffer C1/A57C: A5 6B LDA $6B ; tens digit C1/A57E: 20 DB A5 JSR $A5DB ; copy damage numeral tile to buffer C1/A581: A5 6C LDA $6C ; ones digit C1/A583: 20 DB A5 JSR $A5DB ; copy damage numeral tile to buffer C1/A586: 7B TDC C1/A587: E2 20 SEP #$20 C1/A589: AD 2E 63 LDA $632E ; numeral counter C1/A58C: 29 03 AND #$03 C1/A58E: 8D 2E 63 STA $632E C1/A591: AA TAX C1/A592: A0 01 00 LDY #$0001 C1/A595: B1 76 LDA ($76),Y ; numeral target C1/A597: 9D 1E 63 STA $631E,X C1/A59A: A5 14 LDA $14 C1/A59C: 9D 26 63 STA $6326,X ; numeral graphics x offset (width / 2) C1/A59F: 9E 2A 63 STZ $632A,X ; C1/A5A2: 9E 22 63 STZ $6322,X ; C1/A5A5: A5 1E LDA $1E ; green numeral flag C1/A5A7: 29 80 AND #$80 C1/A5A9: 09 01 ORA #$01 ; enable numeral C1/A5AB: 9D 1A 63 STA $631A,X C1/A5AE: AD 2E 63 LDA $632E ; numeral counter C1/A5B1: 0A ASL C1/A5B2: AA TAX C1/A5B3: BF D3 A5 C1 LDA $C1A5D3,X ; pointer to damage numeral graphics in VRAM C1/A5B7: 8D 17 63 STA $6317 C1/A5BA: BF D4 A5 C1 LDA $C1A5D4,X C1/A5BE: 8D 18 63 STA $6318 C1/A5C1: EE 16 63 INC $6316 ; enable damage numeral graphics update in VRAM C1/A5C4: 20 2A 02 JSR $022A ; wait for vblank C1/A5C7: EE 2E 63 INC $632E ; increment damage numeral counter C1/A5CA: 60 RTS ; pointers to damage numeral graphics in VRAM (bottom of tiles) C1/A5CB: .DW $2D00, $2D40, $2D80, $2DC0 ; pointers to damage numeral graphics in VRAM (top of tiles, where the numbers are) C1/A5D3: .DW $2C00, $2C40, $2C80, $2CC0 ; [ Copy Damage Numeral Tile to Buffer ] ; +A = numeral (0..9) ; +Y = pointer to graphics buffer (+$7E0000) one_num_set2_local: C1/A5DB: 29 FF 00 AND #$00FF C1/A5DE: 0A ASL C1/A5DF: AA TAX C1/A5E0: BF 35 A7 C1 LDA $C1A735,X ; pointer to numeral graphics C1/A5E4: AA TAX C1/A5E5: A9 10 00 LDA #$0010 ; 16 bytes per tile C1/A5E8: 85 12 STA $12 C1/A5EA: BF 00 00 7F LDA $7F0000,X ; copy tile graphics to graphics buffer C1/A5EE: 99 00 00 STA $0000,Y C1/A5F1: E8 INX C1/A5F2: E8 INX C1/A5F3: C8 INY C1/A5F4: C8 INY C1/A5F5: C6 12 DEC $12 C1/A5F7: D0 F1 BNE $A5EA C1/A5F9: 60 RTS ; [ Init Damage Numerals (multiple) ] damage_set: C1/A5FA: 20 87 A4 JSR $A487 C1/A5FD: 9C 3E 7B STZ $7B3E C1/A600: AD 3D 7B LDA $7B3D C1/A603: EE 3D 7B INC $7B3D C1/A606: EB XBA C1/A607: A9 14 LDA #$14 C1/A609: 20 CA 18 JSR $18CA C1/A60C: AF 16 42 00 LDA $004216 C1/A610: A8 TAY C1/A611: A9 0A LDA #$0A C1/A613: 85 10 STA $10 C1/A615: 64 16 STZ $16 C1/A617: 64 20 STZ $20 C1/A619: 64 14 STZ $14 C1/A61B: B9 CF 2B LDA $2BCF,Y C1/A61E: 85 1E STA $1E C1/A620: C9 FF CMP #$FF C1/A622: D0 03 BNE $A627 C1/A624: 4C EB A6 JMP $A6EB C1/A627: 29 40 AND #$40 C1/A629: F0 2A BEQ $A655 ; C1/A62B: 8B PHB C1/A62C: A9 7F LDA #$7F C1/A62E: 48 PHA C1/A62F: AB PLB C1/A630: 5A PHY C1/A631: A5 20 LDA $20 C1/A633: 0A ASL C1/A634: AA TAX C1/A635: C2 20 REP #$20 C1/A637: BF 49 A7 C1 LDA $C1A749,X C1/A63B: AA TAX C1/A63C: 7B TDC C1/A63D: A8 TAY C1/A63E: B9 00 BC LDA $BC00,Y ; "Miss" graphics C1/A641: 9D 20 00 STA $0020,X C1/A644: E8 INX C1/A645: E8 INX C1/A646: C8 INY C1/A647: C8 INY C1/A648: C0 40 00 CPY #$0040 C1/A64B: D0 F1 BNE $A63E C1/A64D: 7B TDC C1/A64E: E2 20 SEP #$20 C1/A650: 7A PLY C1/A651: AB PLB C1/A652: 4C BD A6 JMP $A6BD ; C1/A655: C2 20 REP #$20 C1/A657: B9 CE 2B LDA $2BCE,Y C1/A65A: 29 FF 3F AND #$3FFF C1/A65D: AA TAX C1/A65E: 7B TDC C1/A65F: E2 20 SEP #$20 C1/A661: 64 68 STZ $68 C1/A663: 20 2B 1B JSR $1B2B ; convert hex to decimal C1/A666: 8B PHB C1/A667: A9 7F LDA #$7F C1/A669: 48 PHA C1/A66A: AB PLB C1/A66B: 5A PHY C1/A66C: A5 20 LDA $20 C1/A66E: 0A ASL C1/A66F: AA TAX C1/A670: C2 20 REP #$20 C1/A672: BF 49 A7 C1 LDA $C1A749,X C1/A676: AA TAX C1/A677: 7B TDC C1/A678: A8 TAY C1/A679: A9 10 00 LDA #$0010 C1/A67C: 85 14 STA $14 C1/A67E: A5 69 LDA $69 C1/A680: 29 FF 00 AND #$00FF C1/A683: D0 1F BNE $A6A4 C1/A685: A9 0C 00 LDA #$000C C1/A688: 85 14 STA $14 C1/A68A: A5 6A LDA $6A C1/A68C: 29 FF 00 AND #$00FF C1/A68F: D0 18 BNE $A6A9 C1/A691: A9 08 00 LDA #$0008 C1/A694: 85 14 STA $14 C1/A696: A5 6B LDA $6B C1/A698: 29 FF 00 AND #$00FF C1/A69B: D0 11 BNE $A6AE C1/A69D: A9 04 00 LDA #$0004 C1/A6A0: 85 14 STA $14 C1/A6A2: 80 0F BRA $A6B3 C1/A6A4: A5 69 LDA $69 C1/A6A6: 20 15 A7 JSR $A715 C1/A6A9: A5 6A LDA $6A C1/A6AB: 20 15 A7 JSR $A715 C1/A6AE: A5 6B LDA $6B C1/A6B0: 20 15 A7 JSR $A715 C1/A6B3: A5 6C LDA $6C C1/A6B5: 20 15 A7 JSR $A715 C1/A6B8: 7B TDC C1/A6B9: E2 20 SEP #$20 C1/A6BB: 7A PLY C1/A6BC: AB PLB C1/A6BD: A5 20 LDA $20 C1/A6BF: AA TAX C1/A6C0: E0 04 00 CPX #$0004 C1/A6C3: 90 0E BCC $A6D3 C1/A6C5: BF FD 19 C1 LDA $C119FD,X C1/A6C9: 2D 1E 20 AND $201E C1/A6CC: 2D AB 61 AND $61AB C1/A6CF: F0 1A BEQ $A6EB C1/A6D1: 80 0F BRA $A6E2 C1/A6D3: BF 01 1A C1 LDA $C11A01,X C1/A6D7: 2D 1D 20 AND $201D C1/A6DA: 2D AC 61 AND $61AC C1/A6DD: 2D AD 61 AND $61AD C1/A6E0: F0 09 BEQ $A6EB C1/A6E2: A5 1E LDA $1E C1/A6E4: 29 80 AND #$80 C1/A6E6: 09 01 ORA #$01 C1/A6E8: 9D 3F 7B STA $7B3F,X C1/A6EB: A5 20 LDA $20 C1/A6ED: AA TAX C1/A6EE: A5 14 LDA $14 C1/A6F0: 9D 53 7B STA $7B53,X C1/A6F3: 9E 5D 7B STZ $7B5D,X C1/A6F6: E6 20 INC $20 ; next character/monster C1/A6F8: C8 INY C1/A6F9: C8 INY C1/A6FA: C6 10 DEC $10 C1/A6FC: F0 03 BEQ $A701 C1/A6FE: 4C 19 A6 JMP $A619 C1/A701: A2 00 0C LDX #$0C00 C1/A704: 86 10 STX $10 C1/A706: A2 00 E4 LDX #$E400 C1/A709: A0 00 26 LDY #$2600 C1/A70C: A9 7F LDA #$7F C1/A70E: 20 8D 19 JSR $198D C1/A711: EE 3E 7B INC $7B3E C1/A714: 60 RTS ; [ ] one_num_set: C1/A715: DA PHX C1/A716: 29 FF 00 AND #$00FF C1/A719: 0A ASL C1/A71A: AA TAX C1/A71B: BF 35 A7 C1 LDA $C1A735,X C1/A71F: A8 TAY C1/A720: FA PLX C1/A721: A9 10 00 LDA #$0010 C1/A724: 85 12 STA $12 C1/A726: B9 00 00 LDA $0000,Y C1/A729: 9D 00 00 STA $0000,X C1/A72C: E8 INX C1/A72D: E8 INX C1/A72E: C8 INY C1/A72F: C8 INY C1/A730: C6 12 DEC $12 C1/A732: D0 F2 BNE $A726 C1/A734: 60 RTS ; pointers to numeral graphics (+$7F0000) num_get_poi: C1/A735: .DW $BC40, $BC60, $BC80, $BCA0, $BCC0, $BCE0, $BD00, $BD20 C1/A745: .DW $BD40, $BD60, $E400, $E480, $E500, $E580, $E800, $E880 C1/A755: .DW $E900, $E980, $EC00, $EC80 ref_target_bit: C1/A75D: .DW $0001, $0002, $0004, $0008 C1/A765: .DW $0100, $0200, $0400, $0800, $1000, $2000 ; [ ] get_def_success: C1/A771: 5A PHY C1/A772: 64 10 STZ $10 C1/A774: A0 0A 00 LDY #$000A C1/A777: AD C0 62 LDA $62C0 ; branch if block graphics are ignored C1/A77A: F0 03 BEQ $A77F C1/A77C: 7B TDC C1/A77D: 80 14 BRA $A793 C1/A77F: B1 78 LDA ($78),Y ; block type C1/A781: F0 06 BEQ $A789 ; branch if not blocked C1/A783: A5 10 LDA $10 C1/A785: 09 10 ORA #$10 C1/A787: 85 10 STA $10 C1/A789: 46 10 LSR $10 ; set bit for characters that blocked C1/A78B: C8 INY C1/A78C: C0 0E 00 CPY #$000E C1/A78F: D0 EE BNE $A77F C1/A791: A5 10 LDA $10 C1/A793: 8D 82 60 STA $6082 C1/A796: 9C 83 60 STZ $6083 C1/A799: 7A PLY C1/A79A: 60 RTS ; [ Battle Script Command $09: ] C1/A79B: 20 F4 94 JSR $94F4 ; save monster sprite data C1/A79E: EE D1 62 INC $62D1 C1/A7A1: 7B TDC C1/A7A2: A8 TAY C1/A7A3: 8C 3D 61 STY $613D C1/A7A6: B1 78 LDA ($78),Y C1/A7A8: 30 24 BMI $A7CE C1/A7AA: 98 TYA C1/A7AB: 0A ASL C1/A7AC: AA TAX C1/A7AD: BF 5D A7 C1 LDA $C1A75D,X C1/A7B1: 0D 3D 61 ORA $613D C1/A7B4: 8D 3D 61 STA $613D C1/A7B7: BF 5E A7 C1 LDA $C1A75E,X C1/A7BB: 0D 3E 61 ORA $613E C1/A7BE: 8D 3E 61 STA $613E C1/A7C1: B1 78 LDA ($78),Y C1/A7C3: C9 04 CMP #$04 C1/A7C5: 90 05 BCC $A7CC C1/A7C7: 38 SEC C1/A7C8: E9 04 SBC #$04 C1/A7CA: 80 02 BRA $A7CE C1/A7CC: 09 80 ORA #$80 C1/A7CE: 99 42 61 STA $6142,Y C1/A7D1: C8 INY C1/A7D2: C0 0A 00 CPY #$000A C1/A7D5: D0 CF BNE $A7A6 C1/A7D7: 20 43 AB JSR $AB43 ; init single thread animation C1/A7DA: 7B TDC C1/A7DB: A8 TAY C1/A7DC: 84 1E STY $1E C1/A7DE: A0 02 00 LDY #$0002 C1/A7E1: B1 76 LDA ($76),Y C1/A7E3: 20 B3 9C JSR $9CB3 ; init battle animation data C1/A7E6: AD 3D 61 LDA $613D C1/A7E9: 0A ASL C1/A7EA: 0A ASL C1/A7EB: 0A ASL C1/A7EC: 0A ASL C1/A7ED: 85 12 STA $12 C1/A7EF: AD 3E 61 LDA $613E C1/A7F2: 85 13 STA $13 C1/A7F4: A0 0E 00 LDY #$000E C1/A7F7: B1 78 LDA ($78),Y C1/A7F9: 0A ASL C1/A7FA: 0A ASL C1/A7FB: 0A ASL C1/A7FC: 0A ASL C1/A7FD: 8D 7E 60 STA $607E C1/A800: C8 INY C1/A801: B1 78 LDA ($78),Y C1/A803: 8D 7F 60 STA $607F C1/A806: 8D AF 62 STA $62AF C1/A809: C2 20 REP #$20 C1/A80B: A5 12 LDA $12 C1/A80D: 4A LSR C1/A80E: 4A LSR C1/A80F: 4A LSR C1/A810: 4A LSR C1/A811: 85 12 STA $12 C1/A813: AD 7E 60 LDA $607E C1/A816: 4A LSR C1/A817: 4A LSR C1/A818: 4A LSR C1/A819: 4A LSR C1/A81A: 8D 7E 60 STA $607E C1/A81D: 48 PHA C1/A81E: 7B TDC C1/A81F: E2 20 SEP #$20 C1/A821: 9C 0B 89 STZ $890B C1/A824: A9 01 LDA #$01 C1/A826: 85 1C STA $1C C1/A828: 8D 84 60 STA $6084 C1/A82B: AD 82 60 LDA $6082 C1/A82E: 0D 83 60 ORA $6083 C1/A831: 0D 80 60 ORA $6080 C1/A834: 0D 81 60 ORA $6081 C1/A837: D0 05 BNE $A83E C1/A839: AC 73 62 LDY $6273 C1/A83C: 30 75 BMI $A8B3 C1/A83E: AD 0B 89 LDA $890B C1/A841: C9 04 CMP #$04 C1/A843: 90 02 BCC $A847 C1/A845: 09 80 ORA #$80 C1/A847: 8D 40 61 STA $6140 C1/A84A: AD 0B 89 LDA $890B C1/A84D: A8 TAY C1/A84E: B1 78 LDA ($78),Y C1/A850: C9 04 CMP #$04 C1/A852: 90 02 BCC $A856 C1/A854: 09 80 ORA #$80 C1/A856: 8D 3F 61 STA $613F C1/A859: AD 0B 89 LDA $890B C1/A85C: 29 0F AND #$0F C1/A85E: C2 20 REP #$20 C1/A860: 0A ASL C1/A861: AA TAX C1/A862: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/A866: AA TAX C1/A867: 7B TDC C1/A868: E2 20 SEP #$20 C1/A86A: AD 0B 89 LDA $890B C1/A86D: C9 04 CMP #$04 C1/A86F: B0 0A BCS $A87B C1/A871: 18 CLC C1/A872: 69 0A ADC #$0A C1/A874: A8 TAY C1/A875: B1 78 LDA ($78),Y C1/A877: C9 03 CMP #$03 C1/A879: F0 12 BEQ $A88D C1/A87B: A5 12 LDA $12 C1/A87D: 29 01 AND #$01 C1/A87F: F0 24 BEQ $A8A5 C1/A881: AC 35 7B LDY $7B35 C1/A884: 84 22 STY $22 C1/A886: AC 73 62 LDY $6273 C1/A889: 84 24 STY $24 C1/A88B: 80 0A BRA $A897 C1/A88D: A0 01 01 LDY #$0101 C1/A890: 84 22 STY $22 C1/A892: A0 48 00 LDY #$0048 C1/A895: 84 24 STY $24 C1/A897: A4 12 LDY $12 C1/A899: 5A PHY C1/A89A: A9 01 LDA #$01 C1/A89C: 8D 7E 60 STA $607E C1/A89F: 20 3E B2 JSR $B23E ; create animation thread C1/A8A2: 7A PLY C1/A8A3: 84 12 STY $12 C1/A8A5: 66 13 ROR $13 C1/A8A7: 66 12 ROR $12 C1/A8A9: EE 0B 89 INC $890B C1/A8AC: AD 0B 89 LDA $890B C1/A8AF: C9 0A CMP #$0A C1/A8B1: D0 8B BNE $A83E C1/A8B3: AC 75 62 LDY $6275 C1/A8B6: 30 27 BMI $A8DF C1/A8B8: 20 C3 AA JSR $AAC3 C1/A8BB: A5 12 LDA $12 C1/A8BD: 8D 3F 61 STA $613F C1/A8C0: A9 01 LDA #$01 C1/A8C2: 85 1C STA $1C C1/A8C4: A2 00 05 LDX #$0500 C1/A8C7: AC 31 7B LDY $7B31 C1/A8CA: 84 22 STY $22 C1/A8CC: AC 75 62 LDY $6275 C1/A8CF: 84 24 STY $24 C1/A8D1: 20 3E B2 JSR $B23E ; create animation thread C1/A8D4: A2 00 05 LDX #$0500 C1/A8D7: BD 86 6F LDA $6F86,X C1/A8DA: 09 01 ORA #$01 C1/A8DC: 9D 86 6F STA $6F86,X C1/A8DF: AC 77 62 LDY $6277 C1/A8E2: 30 27 BMI $A90B C1/A8E4: 20 C3 AA JSR $AAC3 C1/A8E7: A5 12 LDA $12 C1/A8E9: 8D 3F 61 STA $613F C1/A8EC: A9 01 LDA #$01 C1/A8EE: 85 1C STA $1C C1/A8F0: A2 10 05 LDX #$0510 C1/A8F3: AC 33 7B LDY $7B33 C1/A8F6: 84 22 STY $22 C1/A8F8: AC 77 62 LDY $6277 C1/A8FB: 84 24 STY $24 C1/A8FD: 20 3E B2 JSR $B23E ; create animation thread C1/A900: A2 10 05 LDX #$0510 C1/A903: BD 86 6F LDA $6F86,X C1/A906: 09 02 ORA #$02 C1/A908: 9D 86 6F STA $6F86,X C1/A90B: AC 7E 62 LDY $627E C1/A90E: C0 FF FF CPY #$FFFF C1/A911: F0 4B BEQ $A95E C1/A913: A9 01 LDA #$01 C1/A915: 85 1C STA $1C C1/A917: AC 37 7B LDY $7B37 C1/A91A: 84 22 STY $22 C1/A91C: AC 7E 62 LDY $627E C1/A91F: 84 24 STY $24 C1/A921: 7B TDC C1/A922: A8 TAY C1/A923: B1 78 LDA ($78),Y C1/A925: 30 1E BMI $A945 C1/A927: C9 04 CMP #$04 C1/A929: 90 02 BCC $A92D C1/A92B: 09 80 ORA #$80 C1/A92D: 8D 3F 61 STA $613F C1/A930: AD D0 62 LDA $62D0 C1/A933: F0 07 BEQ $A93C C1/A935: 20 89 BC JSR $BC89 ; get attacker number C1/A938: A5 10 LDA $10 C1/A93A: 80 11 BRA $A94D C1/A93C: 98 TYA C1/A93D: C9 04 CMP #$04 C1/A93F: 90 02 BCC $A943 C1/A941: 09 80 ORA #$80 C1/A943: 80 06 BRA $A94B C1/A945: C8 INY C1/A946: C0 0A 00 CPY #$000A C1/A949: D0 D8 BNE $A923 C1/A94B: 85 10 STA $10 C1/A94D: 29 0F AND #$0F C1/A94F: C2 20 REP #$20 C1/A951: 0A ASL C1/A952: AA TAX C1/A953: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/A957: AA TAX C1/A958: 7B TDC C1/A959: E2 20 SEP #$20 C1/A95B: 20 08 B2 JSR $B208 C1/A95E: 7B TDC C1/A95F: AA TAX C1/A960: 8E 80 60 STX $6080 C1/A963: FA PLX C1/A964: 8E 7E 60 STX $607E C1/A967: DA PHX C1/A968: 9C EE E9 STZ $E9EE C1/A96B: 20 3C B1 JSR $B13C ; init bg tile data and execute init function C1/A96E: FA PLX C1/A96F: 8E 7E 60 STX $607E C1/A972: 7B TDC C1/A973: AA TAX C1/A974: 8E 80 60 STX $6080 C1/A977: 20 2F AE JSR $AE2F C1/A97A: 20 E5 94 JSR $94E5 C1/A97D: 20 53 C6 JSR $C653 ; execute battle animation script C1/A980: 20 03 95 JSR $9503 ; restore monster sprite data C1/A983: 20 85 B0 JSR $B085 C1/A986: 9C D1 62 STZ $62D1 C1/A989: 9C D0 62 STZ $62D0 C1/A98C: 4C 6E 95 JMP $956E ; [ Battle Script Command $15: ] C1/A98F: 20 F4 94 JSR $94F4 ; save monster sprite data C1/A992: EE D0 62 INC $62D0 C1/A995: EE D1 62 INC $62D1 C1/A998: 7B TDC C1/A999: A8 TAY C1/A99A: 8C 3D 61 STY $613D C1/A99D: B1 78 LDA ($78),Y C1/A99F: 30 24 BMI $A9C5 C1/A9A1: 98 TYA C1/A9A2: 0A ASL C1/A9A3: AA TAX C1/A9A4: BF 5D A7 C1 LDA $C1A75D,X C1/A9A8: 0D 3D 61 ORA $613D C1/A9AB: 8D 3D 61 STA $613D C1/A9AE: BF 5E A7 C1 LDA $C1A75E,X C1/A9B2: 0D 3E 61 ORA $613E C1/A9B5: 8D 3E 61 STA $613E C1/A9B8: B1 78 LDA ($78),Y C1/A9BA: C9 04 CMP #$04 C1/A9BC: 90 05 BCC $A9C3 C1/A9BE: 38 SEC C1/A9BF: E9 04 SBC #$04 C1/A9C1: 80 02 BRA $A9C5 C1/A9C3: 09 80 ORA #$80 C1/A9C5: 99 42 61 STA $6142,Y C1/A9C8: C8 INY C1/A9C9: C0 0A 00 CPY #$000A C1/A9CC: D0 CF BNE $A99D C1/A9CE: 20 C3 AA JSR $AAC3 C1/A9D1: 20 43 AB JSR $AB43 ; init single thread animation C1/A9D4: 7B TDC C1/A9D5: A8 TAY C1/A9D6: 84 1E STY $1E C1/A9D8: A0 02 00 LDY #$0002 C1/A9DB: B1 76 LDA ($76),Y C1/A9DD: 20 B3 9C JSR $9CB3 ; init battle animation data C1/A9E0: AD 3D 61 LDA $613D C1/A9E3: 0A ASL C1/A9E4: 0A ASL C1/A9E5: 0A ASL C1/A9E6: 0A ASL C1/A9E7: 85 12 STA $12 C1/A9E9: AD 3E 61 LDA $613E C1/A9EC: 85 13 STA $13 C1/A9EE: C2 20 REP #$20 C1/A9F0: A5 12 LDA $12 C1/A9F2: 4A LSR C1/A9F3: 4A LSR C1/A9F4: 4A LSR C1/A9F5: 4A LSR C1/A9F6: 85 12 STA $12 C1/A9F8: 48 PHA C1/A9F9: 7B TDC C1/A9FA: E2 20 SEP #$20 C1/A9FC: 20 C3 AA JSR $AAC3 C1/A9FF: 9C 0B 89 STZ $890B C1/AA02: A9 01 LDA #$01 C1/AA04: 85 1C STA $1C C1/AA06: 8D 84 60 STA $6084 C1/AA09: AD 82 60 LDA $6082 C1/AA0C: 0D 83 60 ORA $6083 C1/AA0F: 0D 80 60 ORA $6080 C1/AA12: 0D 81 60 ORA $6081 C1/AA15: D0 05 BNE $AA1C C1/AA17: AC 73 62 LDY $6273 C1/AA1A: 30 71 BMI $AA8D C1/AA1C: AD 0B 89 LDA $890B C1/AA1F: A8 TAY C1/AA20: B1 78 LDA ($78),Y C1/AA22: C9 04 CMP #$04 C1/AA24: 90 02 BCC $AA28 C1/AA26: 09 80 ORA #$80 C1/AA28: 8D 3F 61 STA $613F C1/AA2B: AD 0B 89 LDA $890B C1/AA2E: 29 0F AND #$0F C1/AA30: C2 20 REP #$20 C1/AA32: 0A ASL C1/AA33: AA TAX C1/AA34: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/AA38: AA TAX C1/AA39: 7B TDC C1/AA3A: E2 20 SEP #$20 C1/AA3C: AD 0B 89 LDA $890B C1/AA3F: A8 TAY C1/AA40: AD C0 62 LDA $62C0 ; branch if block graphics are ignored C1/AA43: D0 10 BNE $AA55 C1/AA45: B1 78 LDA ($78),Y C1/AA47: C9 04 CMP #$04 C1/AA49: B0 0A BCS $AA55 C1/AA4B: 18 CLC C1/AA4C: 69 0A ADC #$0A C1/AA4E: A8 TAY C1/AA4F: B1 78 LDA ($78),Y C1/AA51: C9 03 CMP #$03 C1/AA53: F0 12 BEQ $AA67 C1/AA55: A5 12 LDA $12 C1/AA57: 29 01 AND #$01 C1/AA59: F0 24 BEQ $AA7F C1/AA5B: AC 35 7B LDY $7B35 C1/AA5E: 84 22 STY $22 C1/AA60: AC 73 62 LDY $6273 C1/AA63: 84 24 STY $24 C1/AA65: 80 0A BRA $AA71 C1/AA67: A0 01 01 LDY #$0101 C1/AA6A: 84 22 STY $22 C1/AA6C: A0 48 00 LDY #$0048 C1/AA6F: 84 24 STY $24 C1/AA71: A4 12 LDY $12 C1/AA73: 5A PHY C1/AA74: A9 01 LDA #$01 C1/AA76: 8D 7E 60 STA $607E C1/AA79: 20 3E B2 JSR $B23E ; create animation thread C1/AA7C: 7A PLY C1/AA7D: 84 12 STY $12 C1/AA7F: 66 13 ROR $13 C1/AA81: 66 12 ROR $12 C1/AA83: EE 0B 89 INC $890B C1/AA86: AD 0B 89 LDA $890B C1/AA89: C9 0A CMP #$0A C1/AA8B: D0 8F BNE $AA1C C1/AA8D: 20 89 BC JSR $BC89 ; get attacker number C1/AA90: A5 10 LDA $10 C1/AA92: 30 0A BMI $AA9E C1/AA94: 0A ASL C1/AA95: 0A ASL C1/AA96: 0A ASL C1/AA97: 0A ASL C1/AA98: 0A ASL C1/AA99: A8 TAY C1/AA9A: 7B TDC C1/AA9B: 99 BB 61 STA $61BB,Y C1/AA9E: 4C B3 A8 JMP $A8B3 ; [ ] get_target2_long: C1/AAA1: 20 A5 AA JSR $AAA5 C1/AAA4: 6B RTL ; [ ??? ] ; $12 = character/monster number (out) ??? get_target2: C1/AAA5: AD D1 62 LDA $62D1 ; C1/AAA8: D0 19 BNE $AAC3 C1/AAAA: 4C A6 BC JMP $BCA6 ; [ ??? ] get_super_num: C1/AAAD: A0 0E 00 LDY #$000E C1/AAB0: B1 78 LDA ($78),Y ; ??? characters C1/AAB2: F0 03 BEQ $AAB7 ; branch if no characters C1/AAB4: 4C 0F 1A JMP $1A0F ; get bit number C1/AAB7: C8 INY C1/AAB8: B1 78 LDA ($78),Y ; ??? monsters C1/AABA: 20 0F 1A JSR $1A0F ; get bit number C1/AABD: 18 CLC C1/AABE: 69 04 ADC #$04 C1/AAC0: 09 80 ORA #$80 C1/AAC2: 60 RTS ; [ ??? ] get_target_ref: C1/AAC3: AD D0 62 LDA $62D0 C1/AAC6: F0 07 BEQ $AACF C1/AAC8: 20 AD AA JSR $AAAD ; get ??? character/monster number C1/AACB: 8D 40 61 STA $6140 ; set attacker number C1/AACE: 60 RTS C1/AACF: 7B TDC C1/AAD0: A8 TAY C1/AAD1: B1 78 LDA ($78),Y ; branch if attacker is a character C1/AAD3: 10 08 BPL $AADD C1/AAD5: C8 INY C1/AAD6: C0 0A 00 CPY #$000A C1/AAD9: D0 F6 BNE $AAD1 C1/AADB: 7B TDC C1/AADC: A8 TAY C1/AADD: C9 04 CMP #$04 C1/AADF: 90 02 BCC $AAE3 C1/AAE1: 09 80 ORA #$80 C1/AAE3: 85 12 STA $12 C1/AAE5: 98 TYA C1/AAE6: 8D 40 61 STA $6140 C1/AAE9: 60 RTS ; [ Create BG1 & BG3 Animation Threads ] set_magic_bg13: C1/AAEA: AC 75 62 LDY $6275 ; branch if bg1 script is disabled C1/AAED: 30 27 BMI $AB16 C1/AAEF: 20 A5 AA JSR $AAA5 ; C1/AAF2: A5 12 LDA $12 C1/AAF4: 8D 3F 61 STA $613F C1/AAF7: A9 01 LDA #$01 ; set initial frame delay to 1 C1/AAF9: 85 1C STA $1C C1/AAFB: A2 00 05 LDX #$0500 ; bg1 thread pointer C1/AAFE: AC 31 7B LDY $7B31 ; bg1 frame width/height C1/AB01: 84 22 STY $22 C1/AB03: AC 75 62 LDY $6275 ; bg1 animation script C1/AB06: 84 24 STY $24 C1/AB08: 20 3E B2 JSR $B23E ; create animation thread C1/AB0B: A2 00 05 LDX #$0500 C1/AB0E: BD 86 6F LDA $6F86,X ; bg1 thread priority C1/AB11: 09 01 ORA #$01 C1/AB13: 9D 86 6F STA $6F86,X C1/AB16: AC 77 62 LDY $6277 ; branch if bg3 script is disabled C1/AB19: 30 27 BMI $AB42 C1/AB1B: 20 A5 AA JSR $AAA5 ; C1/AB1E: A5 12 LDA $12 C1/AB20: 8D 3F 61 STA $613F C1/AB23: A9 01 LDA #$01 ; set initial frame delay to 1 C1/AB25: 85 1C STA $1C C1/AB27: A2 10 05 LDX #$0510 ; bg3 thread pointer C1/AB2A: AC 33 7B LDY $7B33 ; bg3 frame width/height C1/AB2D: 84 22 STY $22 C1/AB2F: AC 77 62 LDY $6277 ; bg3 animation script C1/AB32: 84 24 STY $24 C1/AB34: 20 3E B2 JSR $B23E ; create animation thread C1/AB37: A2 10 05 LDX #$0510 C1/AB3A: BD 86 6F LDA $6F86,X ; bg3 thread priority C1/AB3D: 09 02 ORA #$02 C1/AB3F: 9D 86 6F STA $6F86,X C1/AB42: 60 RTS ; [ Init Single Thread Animation ] shap_start_init: C1/AB43: A9 01 LDA #$01 C1/AB45: 8D 0E 7B STA $7B0E ; 1 monster thread C1/AB48: 8D 0F 7B STA $7B0F ; 1 character thread C1/AB4B: 9C AA 60 STZ $60AA ; disable shared graphics (air anchor) C1/AB4E: 9C AC 60 STZ $60AC ; unpause bg1 animation threads C1/AB51: 9C AD 60 STZ $60AD ; unpause bg3 animation threads C1/AB54: 9C 99 00 STZ $0099 ; unpause sprite animation threads C1/AB57: 60 RTS ; [ ] init_all_anim: C1/AB58: 9C B0 62 STZ $62B0 ; esper thread shown above characters & monsters C1/AB5B: 20 F4 94 JSR $94F4 ; save monster sprite data C1/AB5E: 20 67 AB JSR $AB67 C1/AB61: 20 A2 9A JSR $9AA2 C1/AB64: 4C 43 AB JMP $AB43 ; init single thread animation ; [ Set Animation Targets ] set_magic_target: C1/AB67: A0 02 00 LDY #$0002 C1/AB6A: B1 78 LDA ($78),Y ; animation targets C1/AB6C: 8D 3D 61 STA $613D C1/AB6F: C8 INY C1/AB70: B1 78 LDA ($78),Y C1/AB72: 8D 3E 61 STA $613E C1/AB75: 60 RTS ; [ Battle Script Command $0E, $16-$1A: Reset Graphical Action ] ; b1 = character number C1/AB76: A0 01 00 LDY #$0001 C1/AB79: B1 76 LDA ($76),Y ; character/monster number C1/AB7B: C9 04 CMP #$04 C1/AB7D: B0 0B BCS $AB8A ; return if not a character C1/AB7F: 29 03 AND #$03 C1/AB81: 0A ASL C1/AB82: 0A ASL C1/AB83: 0A ASL C1/AB84: 0A ASL C1/AB85: 0A ASL C1/AB86: AA TAX C1/AB87: 9E BB 61 STZ $61BB,X ; clear graphical action C1/AB8A: 60 RTS ; [ Reset Attacker Graphical Action ] clr_player_pat: C1/AB8B: A0 01 00 LDY #$0001 C1/AB8E: B1 78 LDA ($78),Y ; character/monster number C1/AB90: C9 04 CMP #$04 C1/AB92: B0 0A BCS $AB9E ; branch if not a character C1/AB94: 0A ASL C1/AB95: 0A ASL C1/AB96: 0A ASL C1/AB97: 0A ASL C1/AB98: 0A ASL C1/AB99: A8 TAY C1/AB9A: 7B TDC C1/AB9B: 99 BB 61 STA $61BB,Y ; set graphical action C1/AB9E: 60 RTS ; [ Do Pre-Attack Animation ] ; for magic and summon only set_magic_init_anim: C1/AB9F: A0 02 00 LDY #$0002 C1/ABA2: 7B TDC C1/ABA3: AA TAX C1/ABA4: B1 76 LDA ($76),Y ; attack number C1/ABA6: C9 18 CMP #$18 C1/ABA8: 90 11 BCC $ABBB ; branch if black magic (X = 0) C1/ABAA: E8 INX C1/ABAB: E8 INX C1/ABAC: C9 36 CMP #$36 C1/ABAE: 90 0B BCC $ABBB ; branch if white or effect magic (X = 2) C1/ABB0: E8 INX C1/ABB1: E8 INX C1/ABB2: C9 51 CMP #$51 C1/ABB4: 90 05 BCC $ABBB ; branch if esper (X = 4) C1/ABB6: 9C C0 62 STZ $62C0 ; don't ignore block graphics C1/ABB9: 80 2C BRA $ABE7 C1/ABBB: EE C0 62 INC $62C0 ; ignore block graphics C1/ABBE: C2 20 REP #$20 C1/ABC0: BF 8E 91 C1 LDA $C1918E,X ; +$1E = pointer to pre-attack animation data (+$D07FB2) C1/ABC4: 85 1E STA $1E C1/ABC6: 7B TDC C1/ABC7: E2 20 SEP #$20 C1/ABC9: 20 B3 9C JSR $9CB3 ; init battle animation data C1/ABCC: 20 5B AC JSR $AC5B ; execute battle animation C1/ABCF: 20 89 BC JSR $BC89 ; get attacker number C1/ABD2: A5 10 LDA $10 C1/ABD4: 30 0B BMI $ABE1 ; branch if monster C1/ABD6: 29 03 AND #$03 C1/ABD8: AA TAX C1/ABD9: AD A4 62 LDA $62A4 ; C1/ABDC: D0 03 BNE $ABE1 C1/ABDE: FE AE 61 INC $61AE,X C1/ABE1: 9C C0 62 STZ $62C0 ; don't ignore block graphics C1/ABE4: 20 43 AB JSR $AB43 ; init single thread animation C1/ABE7: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/ABEA: 60 RTS ; [ Attack Command $02/$17/$19: Magic/X-Magic/Summon ] anim_magic: C1/ABEB: A0 02 00 LDY #$0002 C1/ABEE: B1 76 LDA ($76),Y ; branch if not $F9 ("Red Card", Setzer's desperation attack) C1/ABF0: C9 F9 CMP #$F9 C1/ABF2: D0 12 BNE $AC06 C1/ABF4: 7B TDC C1/ABF5: 91 76 STA ($76),Y C1/ABF7: C8 INY C1/ABF8: A9 4E LDA #$4E ; do item animation $4E (Darts), 3 times C1/ABFA: 91 76 STA ($76),Y C1/ABFC: 20 CD BE JSR $BECD ; attack command $00: fight C1/ABFF: 20 CD BE JSR $BECD ; attack command $00: fight C1/AC02: 20 CD BE JSR $BECD ; attack command $00: fight C1/AC05: 60 RTS anim_summon: C1/AC06: 20 58 AB JSR $AB58 ; C1/AC09: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/AC0C: A0 01 00 LDY #$0001 C1/AC0F: B1 78 LDA ($78),Y ; attacker number C1/AC11: C9 04 CMP #$04 C1/AC13: B0 09 BCS $AC1E ; branch if a monster C1/AC15: B2 78 LDA ($78) ; branch if skipping pre-attack animation C1/AC17: 29 10 AND #$10 C1/AC19: D0 03 BNE $AC1E C1/AC1B: 20 9F AB JSR $AB9F ; do pre-attack animation C1/AC1E: 20 41 B9 JSR $B941 ; check targets C1/AC21: 90 0E BCC $AC31 C1/AC23: 7B TDC C1/AC24: A8 TAY C1/AC25: 84 1E STY $1E C1/AC27: C8 INY C1/AC28: C8 INY C1/AC29: B1 76 LDA ($76),Y C1/AC2B: 20 B3 9C JSR $9CB3 ; init battle animation data C1/AC2E: 20 5B AC JSR $AC5B ; execute battle animation C1/AC31: 20 35 AC JSR $AC35 C1/AC34: 60 RTS ; [ ] screen_all_clr_tfr: C1/AC35: 20 CA 9E JSR $9ECA C1/AC38: A2 00 08 LDX #$0800 C1/AC3B: 86 10 STX $10 C1/AC3D: A2 00 C4 LDX #$C400 C1/AC40: A9 7F LDA #$7F C1/AC42: A0 00 0C LDY #$0C00 C1/AC45: 20 8D 19 JSR $198D C1/AC48: 20 EE 9E JSR $9EEE C1/AC4B: A2 00 08 LDX #$0800 C1/AC4E: 86 10 STX $10 C1/AC50: A2 00 E4 LDX #$E400 C1/AC53: A9 7F LDA #$7F C1/AC55: A0 00 54 LDY #$5400 C1/AC58: 4C 8D 19 JMP $198D ; [ Execute Battle Animation ] anim_magic_main: C1/AC5B: 20 6B AC JSR $AC6B ; init battle animation threads C1/AC5E: 20 53 C6 JSR $C653 ; execute battle animation script C1/AC61: 20 03 95 JSR $9503 ; restore monster sprite data C1/AC64: 4C 85 B0 JMP $B085 ; ; [ Init Battle Animation Threads (long access) ] ; unused anim_magic_main_sub_long: C1/AC67: 20 6B AC JSR $AC6B ; init battle animation C1/AC6A: 6B RTL ; [ Init Battle Animation Threads ] anim_magic_main_sub: C1/AC6B: A0 02 00 LDY #$0002 C1/AC6E: B1 78 LDA ($78),Y ; $12 = possible character targets C1/AC70: 0A ASL C1/AC71: 0A ASL C1/AC72: 0A ASL C1/AC73: 0A ASL C1/AC74: 85 12 STA $12 C1/AC76: C8 INY C1/AC77: B1 78 LDA ($78),Y ; $13 = possible monster targets C1/AC79: 85 13 STA $13 C1/AC7B: C8 INY C1/AC7C: B1 78 LDA ($78),Y ; character targets hit C1/AC7E: 0A ASL C1/AC7F: 0A ASL C1/AC80: 0A ASL C1/AC81: 0A ASL C1/AC82: 8D 7E 60 STA $607E C1/AC85: C8 INY C1/AC86: B1 78 LDA ($78),Y ; monster targets hit C1/AC88: 8D 7F 60 STA $607F C1/AC8B: 8D AF 62 STA $62AF ; C1/AC8E: C8 INY C1/AC8F: B1 78 LDA ($78),Y ; character targets reflected off of C1/AC91: 0A ASL C1/AC92: 0A ASL C1/AC93: 0A ASL C1/AC94: 0A ASL C1/AC95: 8D 80 60 STA $6080 C1/AC98: C8 INY C1/AC99: B1 78 LDA ($78),Y ; monster targets reflected off of C1/AC9B: 8D 81 60 STA $6081 C1/AC9E: C2 20 REP #$20 C1/ACA0: A5 12 LDA $12 C1/ACA2: 4A LSR C1/ACA3: 4A LSR C1/ACA4: 4A LSR C1/ACA5: 4A LSR C1/ACA6: 85 12 STA $12 C1/ACA8: AD 7E 60 LDA $607E C1/ACAB: 4A LSR C1/ACAC: 4A LSR C1/ACAD: 4A LSR C1/ACAE: 4A LSR C1/ACAF: 8D 7E 60 STA $607E C1/ACB2: AD 80 60 LDA $6080 C1/ACB5: 4A LSR C1/ACB6: 4A LSR C1/ACB7: 4A LSR C1/ACB8: 4A LSR C1/ACB9: 8D 80 60 STA $6080 C1/ACBC: AD C0 62 LDA $62C0 ; branch if block graphics are ignored C1/ACBF: 29 FF 00 AND #$00FF C1/ACC2: F0 08 BEQ $ACCC C1/ACC4: 9C 80 60 STZ $6080 C1/ACC7: 7B TDC C1/ACC8: 3A DEC C1/ACC9: 8D 7E 60 STA $607E C1/ACCC: 7B TDC C1/ACCD: E2 20 SEP #$20 C1/ACCF: AE 80 60 LDX $6080 C1/ACD2: DA PHX C1/ACD3: AE 7E 60 LDX $607E C1/ACD6: DA PHX C1/ACD7: 20 89 BC JSR $BC89 ; get attacker number C1/ACDA: 8D 40 61 STA $6140 C1/ACDD: 9C 0B 89 STZ $890B ; clear character/monster counter C1/ACE0: A9 01 LDA #$01 ; set initial frame delay to 1 C1/ACE2: 85 1C STA $1C C1/ACE4: 8D 84 60 STA $6084 ; 1 active thread C1/ACE7: AD 82 60 LDA $6082 ; C1/ACEA: 0D 83 60 ORA $6083 C1/ACED: 0D 80 60 ORA $6080 C1/ACF0: 0D 81 60 ORA $6081 C1/ACF3: D0 05 BNE $ACFA C1/ACF5: AC 73 62 LDY $6273 ; branch if sprite thread is disabled C1/ACF8: 30 7C BMI $AD76 C1/ACFA: AD 0B 89 LDA $890B ; current character/monster C1/ACFD: 8D 3F 61 STA $613F C1/AD00: 29 0F AND #$0F C1/AD02: C2 20 REP #$20 C1/AD04: 0A ASL C1/AD05: AA TAX C1/AD06: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/AD0A: AA TAX C1/AD0B: 7B TDC C1/AD0C: E2 20 SEP #$20 C1/AD0E: AD C0 62 LDA $62C0 ; branch if block graphics are disabled C1/AD11: D0 11 BNE $AD24 C1/AD13: AD 0B 89 LDA $890B ; branch if a monster C1/AD16: C9 04 CMP #$04 C1/AD18: B0 0A BCS $AD24 C1/AD1A: 18 CLC C1/AD1B: 69 0A ADC #$0A C1/AD1D: A8 TAY C1/AD1E: B1 78 LDA ($78),Y ; branch if character blocked with a shield C1/AD20: C9 03 CMP #$03 C1/AD22: F0 25 BEQ $AD49 C1/AD24: AD 80 60 LDA $6080 ; branch if target reflected C1/AD27: 29 01 AND #$01 C1/AD29: D0 12 BNE $AD3D C1/AD2B: A5 12 LDA $12 ; branch if target was not hit C1/AD2D: 29 01 AND #$01 C1/AD2F: F0 2B BEQ $AD5C C1/AD31: AC 35 7B LDY $7B35 ; animation frame height/width C1/AD34: 84 22 STY $22 C1/AD36: AC 73 62 LDY $6273 ; sprite script number C1/AD39: 84 24 STY $24 C1/AD3B: 80 16 BRA $AD53 C1/AD3D: A0 02 02 LDY #$0202 ; 2x2 frame height/width C1/AD40: 84 22 STY $22 C1/AD42: A0 42 00 LDY #$0042 ; script $0042 (reflect) C1/AD45: 84 24 STY $24 C1/AD47: 80 0A BRA $AD53 C1/AD49: A0 01 01 LDY #$0101 ; 1x1 frame height/width C1/AD4C: 84 22 STY $22 C1/AD4E: A0 63 00 LDY #$0063 ; script $0063 (shield) C1/AD51: 84 24 STY $24 C1/AD53: A4 12 LDY $12 ; possible targets C1/AD55: 5A PHY C1/AD56: 20 3E B2 JSR $B23E ; create animation thread C1/AD59: 7A PLY C1/AD5A: 84 12 STY $12 C1/AD5C: 66 13 ROR $13 ; next target C1/AD5E: 66 12 ROR $12 C1/AD60: 6E 7F 60 ROR $607F C1/AD63: 6E 7E 60 ROR $607E C1/AD66: 6E 81 60 ROR $6081 C1/AD69: 6E 80 60 ROR $6080 C1/AD6C: EE 0B 89 INC $890B ; increment character/monster counter C1/AD6F: AD 0B 89 LDA $890B C1/AD72: C9 0A CMP #$0A C1/AD74: D0 84 BNE $ACFA C1/AD76: 20 EA AA JSR $AAEA ; create bg1 & bg3 animation threads C1/AD79: AC 7E 62 LDY $627E ; esper thread C1/AD7C: C0 FF FF CPY #$FFFF C1/AD7F: F0 59 BEQ $ADDA ; branch if disabled C1/AD81: 30 59 BMI $ADDC ; branch if esper thread C1/AD83: A9 01 LDA #$01 ; set initial frame delay to 1 C1/AD85: 85 1C STA $1C C1/AD87: AC 37 7B LDY $7B37 ; esper frame height/width C1/AD8A: 84 22 STY $22 C1/AD8C: AC 7E 62 LDY $627E ; esper script number C1/AD8F: 84 24 STY $24 C1/AD91: 20 89 BC JSR $BC89 ; get attacker number C1/AD94: A5 10 LDA $10 C1/AD96: 29 0F AND #$0F C1/AD98: C2 20 REP #$20 C1/AD9A: 0A ASL C1/AD9B: AA TAX C1/AD9C: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/ADA0: AA TAX C1/ADA1: 7B TDC C1/ADA2: E2 20 SEP #$20 C1/ADA4: AD 7D 62 LDA $627D ; special animation function C1/ADA7: 29 7F AND #$7F C1/ADA9: C9 12 CMP #$12 ; branch if not esper pre-attack animation C1/ADAB: D0 04 BNE $ADB1 C1/ADAD: A9 03 LDA #$03 ; create 3 threads C1/ADAF: 80 0A BRA $ADBB C1/ADB1: C9 11 CMP #$11 ; branch if not white/gray pre-attack animation C1/ADB3: D0 04 BNE $ADB9 C1/ADB5: A9 06 LDA #$06 ; create 6 threads C1/ADB7: 80 02 BRA $ADBB C1/ADB9: A9 01 LDA #$01 ; create 1 thread C1/ADBB: 48 PHA C1/ADBC: DA PHX C1/ADBD: 20 A5 AA JSR $AAA5 ; C1/ADC0: A5 12 LDA $12 C1/ADC2: 8D 3F 61 STA $613F ; character/monster number C1/ADC5: FA PLX C1/ADC6: DA PHX C1/ADC7: 20 08 B2 JSR $B208 ; create extra sprite thread C1/ADCA: FA PLX C1/ADCB: C2 20 REP #$20 C1/ADCD: 8A TXA ; next thread C1/ADCE: 18 CLC C1/ADCF: 69 10 00 ADC #$0010 C1/ADD2: AA TAX C1/ADD3: 7B TDC C1/ADD4: E2 20 SEP #$20 C1/ADD6: 68 PLA C1/ADD7: 3A DEC C1/ADD8: D0 E1 BNE $ADBB C1/ADDA: 80 27 BRA $AE03 C1/ADDC: 20 89 BC JSR $BC89 ; get attacker number C1/ADDF: 20 A5 AA JSR $AAA5 ; C1/ADE2: A5 12 LDA $12 C1/ADE4: 8D 3F 61 STA $613F ; character/monster number C1/ADE7: A9 01 LDA #$01 ; set initial frame delay to 1 C1/ADE9: 85 1C STA $1C C1/ADEB: A2 20 05 LDX #$0520 ; esper thread 1 C1/ADEE: AC 37 7B LDY $7B37 C1/ADF1: 84 22 STY $22 ; esper frame width/height C1/ADF3: C2 20 REP #$20 C1/ADF5: AD 7E 62 LDA $627E ; esper script number C1/ADF8: 29 FF 7F AND #$7FFF C1/ADFB: 85 24 STA $24 C1/ADFD: 7B TDC C1/ADFE: E2 20 SEP #$20 C1/AE00: 20 3E B2 JSR $B23E ; create animation thread C1/AE03: A0 06 00 LDY #$0006 C1/AE06: B1 78 LDA ($78),Y ; targets reflected off of C1/AE08: 0A ASL C1/AE09: 0A ASL C1/AE0A: 0A ASL C1/AE0B: 0A ASL C1/AE0C: 8D 80 60 STA $6080 C1/AE0F: C8 INY C1/AE10: B1 78 LDA ($78),Y C1/AE12: 8D 81 60 STA $6081 C1/AE15: FA PLX C1/AE16: 8E 7E 60 STX $607E C1/AE19: DA PHX C1/AE1A: 9C EE E9 STZ $E9EE ; C1/AE1D: 20 3C B1 JSR $B13C ; init bg tile data and execute init function C1/AE20: FA PLX C1/AE21: 8E 7E 60 STX $607E ; C1/AE24: FA PLX C1/AE25: 8E 80 60 STX $6080 ; C1/AE28: 20 2F AE JSR $AE2F ; C1/AE2B: 20 E5 94 JSR $94E5 ; save color palettes C1/AE2E: 60 RTS ; [ ] clr_success_flag: C1/AE2F: 20 89 BC JSR $BC89 ; get attacker number C1/AE32: AD EE E9 LDA $E9EE C1/AE35: F0 01 BEQ $AE38 C1/AE37: 60 RTS C1/AE38: AE 82 60 LDX $6082 C1/AE3B: DA PHX C1/AE3C: C2 20 REP #$20 C1/AE3E: A0 0A 00 LDY #$000A C1/AE41: B1 78 LDA ($78),Y C1/AE43: 8D A5 62 STA $62A5 C1/AE46: C8 INY C1/AE47: C8 INY C1/AE48: B1 78 LDA ($78),Y C1/AE4A: 8D A7 62 STA $62A7 C1/AE4D: AD 82 60 LDA $6082 C1/AE50: 49 FF FF EOR #$FFFF C1/AE53: 85 16 STA $16 C1/AE55: AD 80 60 LDA $6080 C1/AE58: 49 FF FF EOR #$FFFF C1/AE5B: 85 14 STA $14 C1/AE5D: AD 7E 60 LDA $607E C1/AE60: 25 14 AND $14 C1/AE62: 25 16 AND $16 C1/AE64: 85 2A STA $2A C1/AE66: 7B TDC C1/AE67: E2 20 SEP #$20 C1/AE69: A5 2A LDA $2A C1/AE6B: 05 2B ORA $2B C1/AE6D: D0 54 BNE $AEC3 C1/AE6F: AD 80 60 LDA $6080 C1/AE72: 0D 81 60 ORA $6081 C1/AE75: 0D 82 60 ORA $6082 C1/AE78: 0D 83 60 ORA $6083 C1/AE7B: 0D 7E 60 ORA $607E C1/AE7E: 0D 7F 60 ORA $607F C1/AE81: F0 18 BEQ $AE9B C1/AE83: 9C 2E 6F STZ $6F2E C1/AE86: 9C 3E 6F STZ $6F3E C1/AE89: 9C 4E 6F STZ $6F4E C1/AE8C: 9C 5E 6F STZ $6F5E C1/AE8F: 9C 6E 6F STZ $6F6E C1/AE92: 9C 99 00 STZ $0099 ; unpause sprite animation threads C1/AE95: 9C AD 60 STZ $60AD ; unpause bg3 animation threads C1/AE98: 9C AC 60 STZ $60AC ; unpause bg1 animation threads C1/AE9B: AD 88 74 LDA $7488 C1/AE9E: 09 80 ORA #$80 C1/AEA0: 8D 88 74 STA $7488 C1/AEA3: AD 98 74 LDA $7498 C1/AEA6: 09 80 ORA #$80 C1/AEA8: 8D 98 74 STA $7498 C1/AEAB: AD A8 74 LDA $74A8 C1/AEAE: 09 80 ORA #$80 C1/AEB0: 8D A8 74 STA $74A8 C1/AEB3: AD B8 74 LDA $74B8 C1/AEB6: 09 80 ORA #$80 C1/AEB8: 8D B8 74 STA $74B8 C1/AEBB: AD C8 74 LDA $74C8 C1/AEBE: 09 80 ORA #$80 C1/AEC0: 8D C8 74 STA $74C8 C1/AEC3: 7B TDC C1/AEC4: AA TAX C1/AEC5: AD 82 60 LDA $6082 C1/AEC8: 29 01 AND #$01 C1/AECA: D0 2D BNE $AEF9 C1/AECC: AD 80 60 LDA $6080 C1/AECF: 29 01 AND #$01 C1/AED1: D0 26 BNE $AEF9 C1/AED3: AD 7E 60 LDA $607E C1/AED6: 29 01 AND #$01 C1/AED8: D0 57 BNE $AF31 C1/AEDA: DA PHX C1/AEDB: A9 08 LDA #$08 C1/AEDD: 85 18 STA $18 C1/AEDF: BD 88 6F LDA $6F88,X C1/AEE2: 09 80 ORA #$80 C1/AEE4: 9D 88 6F STA $6F88,X C1/AEE7: C2 20 REP #$20 C1/AEE9: 8A TXA C1/AEEA: 18 CLC C1/AEEB: 69 10 00 ADC #$0010 C1/AEEE: AA TAX C1/AEEF: 7B TDC C1/AEF0: E2 20 SEP #$20 C1/AEF2: C6 18 DEC $18 C1/AEF4: D0 E9 BNE $AEDF C1/AEF6: FA PLX C1/AEF7: 80 38 BRA $AF31 C1/AEF9: BD 3E 6A LDA $6A3E,X C1/AEFC: 29 02 AND #$02 C1/AEFE: 9D 3E 6A STA $6A3E,X C1/AF01: BD 4E 6A LDA $6A4E,X C1/AF04: 29 02 AND #$02 C1/AF06: 9D 4E 6A STA $6A4E,X C1/AF09: BD 5E 6A LDA $6A5E,X C1/AF0C: 29 02 AND #$02 C1/AF0E: 9D 5E 6A STA $6A5E,X C1/AF11: BD 6E 6A LDA $6A6E,X C1/AF14: 29 02 AND #$02 C1/AF16: 9D 6E 6A STA $6A6E,X C1/AF19: BD 7E 6A LDA $6A7E,X C1/AF1C: 29 02 AND #$02 C1/AF1E: 9D 7E 6A STA $6A7E,X C1/AF21: BD 8E 6A LDA $6A8E,X C1/AF24: 29 02 AND #$02 C1/AF26: 9D 8E 6A STA $6A8E,X C1/AF29: BD 9E 6A LDA $6A9E,X C1/AF2C: 29 02 AND #$02 C1/AF2E: 9D 9E 6A STA $6A9E,X C1/AF31: C2 20 REP #$20 C1/AF33: 8A TXA C1/AF34: 18 CLC C1/AF35: 69 80 00 ADC #$0080 C1/AF38: AA TAX C1/AF39: E2 20 SEP #$20 C1/AF3B: 6E 83 60 ROR $6083 C1/AF3E: 6E 82 60 ROR $6082 C1/AF41: 6E 7F 60 ROR $607F C1/AF44: 6E 7E 60 ROR $607E C1/AF47: 6E 81 60 ROR $6081 C1/AF4A: 6E 80 60 ROR $6080 C1/AF4D: E0 00 05 CPX #$0500 C1/AF50: F0 03 BEQ $AF55 C1/AF52: 4C C5 AE JMP $AEC5 C1/AF55: FA PLX C1/AF56: 8E 82 60 STX $6082 C1/AF59: 60 RTS ; [ Odin/Raiden/Cleave Animation ??? ] type_00b_anim_set: C1/AF5A: 22 98 F4 C2 JSL $C2F498 C1/AF5E: A9 06 LDA #$06 C1/AF60: 8D 0C 80 STA $800C C1/AF63: A0 05 00 LDY #$0005 C1/AF66: B1 78 LDA ($78),Y C1/AF68: 8D 7F 60 STA $607F C1/AF6B: 9C 7E 60 STZ $607E C1/AF6E: 9C 67 7B STZ $7B67 C1/AF71: 20 2A 02 JSR $022A ; wait for vblank C1/AF74: 20 2A 02 JSR $022A ; wait for vblank C1/AF77: AD 7E 60 LDA $607E C1/AF7A: AA TAX C1/AF7B: AD 7F 60 LDA $607F C1/AF7E: 3F 01 1A C1 AND $C11A01,X C1/AF82: F0 59 BEQ $AFDD C1/AF84: 48 PHA C1/AF85: 20 63 1E JSR $1E63 ; copy monsters to bg1 C1/AF88: 20 1A B0 JSR $B01A C1/AF8B: 20 26 1F JSR $1F26 C1/AF8E: 20 2A 02 JSR $022A ; wait for vblank C1/AF91: 68 PLA C1/AF92: 49 FF EOR #$FF C1/AF94: 8D AB 60 STA $60AB C1/AF97: 9C 6D 5F STZ $5F6D C1/AF9A: A9 80 LDA #$80 C1/AF9C: 85 10 STA $10 C1/AF9E: A9 BE LDA #$BE C1/AFA0: 20 EF 17 JSR $17EF ; play animation sound effect C1/AFA3: 20 2A 02 JSR $022A ; wait for vblank C1/AFA6: AD 6D 5F LDA $5F6D C1/AFA9: A2 10 00 LDX #$0010 C1/AFAC: 86 24 STX $24 C1/AFAE: AD 6D 5F LDA $5F6D C1/AFB1: 20 67 6C JSR $6C67 C1/AFB4: 20 5F B0 JSR $B05F C1/AFB7: 20 2D B0 JSR $B02D C1/AFBA: AD 6D 5F LDA $5F6D C1/AFBD: 18 CLC C1/AFBE: 69 02 ADC #$02 C1/AFC0: 8D 6D 5F STA $5F6D C1/AFC3: C9 40 CMP #$40 C1/AFC5: D0 DC BNE $AFA3 C1/AFC7: 7B TDC C1/AFC8: AA TAX C1/AFC9: 86 28 STX $28 C1/AFCB: 20 5F B0 JSR $B05F C1/AFCE: AD 1E 20 LDA $201E C1/AFD1: 2D AB 61 AND $61AB C1/AFD4: 2D AB 60 AND $60AB C1/AFD7: 8D 1E 20 STA $201E C1/AFDA: 20 59 1E JSR $1E59 C1/AFDD: EE 7E 60 INC $607E C1/AFE0: AD 7E 60 LDA $607E C1/AFE3: C9 06 CMP #$06 C1/AFE5: D0 8D BNE $AF74 C1/AFE7: 20 2A 02 JSR $022A ; wait for vblank C1/AFEA: 20 59 1E JSR $1E59 C1/AFED: 7B TDC C1/AFEE: AA TAX C1/AFEF: 86 10 STX $10 C1/AFF1: 8E B4 64 STX $64B4 C1/AFF4: 8E B6 64 STX $64B6 C1/AFF7: 20 3C C2 JSR $C23C ; clear color add/sub data C1/AFFA: A9 03 LDA #$03 C1/AFFC: 8D 0C 80 STA $800C C1/AFFF: 60 RTS ; [ Set Color Add/Sub Data ] color_hdma_data_set_long: C1/B000: 20 07 B0 JSR $B007 ; wait for scanline 160 C1/B003: 20 3C C2 JSR $C23C ; set color add/sub data C1/B006: 6B RTL ; [ Wait for Scanline 160 ] wait_line20: C1/B007: 48 PHA C1/B008: AF 3F 21 00 LDA $00213F C1/B00C: AF 37 21 00 LDA $002137 C1/B010: AF 3D 21 00 LDA $00213D C1/B014: C9 A0 CMP #$A0 C1/B016: 90 F0 BCC $B008 C1/B018: 68 PLA C1/B019: 60 RTS caster_pri_up2: C1/B01A: 20 89 BC JSR $BC89 ; get attacker number C1/B01D: A5 10 LDA $10 C1/B01F: 30 0B BMI $B02C C1/B021: 0A ASL C1/B022: 0A ASL C1/B023: 0A ASL C1/B024: 0A ASL C1/B025: 0A ASL C1/B026: A8 TAY C1/B027: A9 30 LDA #$30 C1/B029: 99 BD 61 STA $61BD,Y C1/B02C: 60 RTS ; [ ] target_mon_col_down: C1/B02D: 7B TDC C1/B02E: A8 TAY C1/B02F: C2 20 REP #$20 C1/B031: A2 10 00 LDX #$0010 C1/B034: A9 E1 00 LDA #$00E1 C1/B037: 85 14 STA $14 C1/B039: 85 16 STA $16 C1/B03B: 85 18 STA $18 C1/B03D: 20 6E FC JSR $FC6E C1/B040: B9 60 7E LDA $7E60,Y C1/B043: 20 99 FC JSR $FC99 C1/B046: 99 60 7E STA $7E60,Y C1/B049: C8 INY C1/B04A: C8 INY C1/B04B: CA DEX C1/B04C: D0 F2 BNE $B040 C1/B04E: 7B TDC C1/B04F: E2 20 SEP #$20 C1/B051: 60 RTS C1/B052: AF 37 21 00 LDA $002137 C1/B056: AF 3D 21 00 LDA $00213D C1/B05A: C9 A0 CMP #$A0 C1/B05C: 90 F4 BCC $B052 C1/B05E: 60 RTS ; [ ] bg1_line2_set: C1/B05F: 20 52 B0 JSR $B052 C1/B062: 7B TDC C1/B063: AA TAX C1/B064: C2 20 REP #$20 C1/B066: A5 28 LDA $28 C1/B068: 9D B0 63 STA $63B0,X C1/B06B: 49 FF FF EOR #$FFFF C1/B06E: 9D F0 63 STA $63F0,X C1/B071: E8 INX C1/B072: E8 INX C1/B073: E8 INX C1/B074: E8 INX C1/B075: E0 40 00 CPX #$0040 C1/B078: D0 EC BNE $B066 C1/B07A: 7B TDC C1/B07B: E2 20 SEP #$20 C1/B07D: 60 RTS ; [ Clear BG3 Tile Data in VRAM (long access) ] bg3_clr_tfr_long: C1/B07E: 20 ED 1F JSR $1FED ; clear bg tile data buffer ($01EE) C1/B081: 20 F9 B0 JSR $B0F9 ; copy bg3 tile data to VRAM C1/B084: 6B RTL ; [ ] magic_type_rset: C1/B085: A9 FF LDA #$FF C1/B087: 8D AB 60 STA $60AB C1/B08A: 20 8A C3 JSR $C38A C1/B08D: 9C 67 7B STZ $7B67 C1/B090: 20 2A 02 JSR $022A ; wait for vblank C1/B093: 20 59 1E JSR $1E59 C1/B096: 20 ED 1F JSR $1FED ; clear bg tile data buffer ($01EE) C1/B099: 20 F9 B0 JSR $B0F9 ; copy bg3 tile data to VRAM C1/B09C: 7B TDC C1/B09D: AA TAX C1/B09E: 8E B4 64 STX $64B4 C1/B0A1: 8E B6 64 STX $64B6 C1/B0A4: A9 17 LDA #$17 C1/B0A6: 8D 8D 89 STA $898D C1/B0A9: AD 6F 89 LDA $896F C1/B0AC: 29 AF AND #$AF C1/B0AE: 09 08 ORA #$08 C1/B0B0: 8D 6F 89 STA $896F C1/B0B3: 20 2A 02 JSR $022A ; wait for vblank C1/B0B6: 7B TDC C1/B0B7: AA TAX C1/B0B8: 86 10 STX $10 C1/B0BA: 8E B4 64 STX $64B4 C1/B0BD: 8E B6 64 STX $64B6 C1/B0C0: 8E F5 4A STX $4AF5 C1/B0C3: 8E F7 4A STX $4AF7 C1/B0C6: 20 3C C2 JSR $C23C ; clear color add/sub data C1/B0C9: A9 33 LDA #$33 C1/B0CB: 8F 23 21 00 STA $002123 C1/B0CF: 8F 24 21 00 STA $002124 C1/B0D3: 9C 1B 96 STZ $961B ; clear circle shape C1/B0D6: 22 4B FA C2 JSL $C2FA4B C1/B0DA: A9 FF LDA #$FF C1/B0DC: 8D AB 60 STA $60AB C1/B0DF: AD 7D 62 LDA $627D ; animation init function C1/B0E2: 30 0F BMI $B0F3 ; branch if bg1 target C1/B0E4: C9 6B CMP #$6B C1/B0E6: F0 08 BEQ $B0F0 ; branch if raiden C1/B0E8: C9 45 CMP #$45 C1/B0EA: F0 04 BEQ $B0F0 ; branch if odin C1/B0EC: C9 0B CMP #$0B C1/B0EE: D0 03 BNE $B0F3 ; branch if not cleave C1/B0F0: 20 5A AF JSR $AF5A ; C1/B0F3: A9 17 LDA #$17 C1/B0F5: 8D 8D 89 STA $898D ; main screen designation -> $212C (battlefield region) C1/B0F8: 60 RTS ; [ Copy BG3 Tile Data to VRAM ] bg3_clr_tfr: C1/B0F9: A2 00 04 LDX #$0400 ; size = $0400 C1/B0FC: 86 10 STX $10 C1/B0FE: A2 7F A9 LDX #$A97F ; source = $7EA97F (bg tile data buffer) C1/B101: A9 7E LDA #$7E C1/B103: A0 00 54 LDY #$5400 ; destination = $5400 (VRAM) C1/B106: 4C 8D 19 JMP $198D ; init large data DMA to VRAM ; [ Clear BG Tile Data in VRAM (long access) ] C1/B109: 20 0D B1 JSR $B10D C1/B10C: 6B RTL ; [ Clear BG Tile Data in VRAM ] ; +Y = VRAM destination summon_clr_screen_tfr: C1/B10D: 20 1E B1 JSR $B11E ; clear VRAM buffer (bg tile data) C1/B110: A2 00 08 LDX #$0800 ; size = $0800 C1/B113: 86 10 STX $10 C1/B115: A2 3F AE LDX #$AE3F ; source = $7EAE3F (VRAM buffer) C1/B118: A9 7E LDA #$7E C1/B11A: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/B11D: 60 RTS ; [ Clear VRAM Buffer (BG tile data) ] C1/B11E: C2 20 REP #$20 C1/B120: 7B TDC C1/B121: AA TAX C1/B122: A9 EE 02 LDA #$02EE C1/B125: 9D 3F AE STA $AE3F,X C1/B128: 9D 3F B0 STA $B03F,X C1/B12B: 9D 3F B2 STA $B23F,X C1/B12E: 9D 3F B4 STA $B43F,X C1/B131: E8 INX C1/B132: E8 INX C1/B133: E0 00 02 CPX #$0200 C1/B136: D0 ED BNE $B125 C1/B138: 7B TDC C1/B139: E2 20 SEP #$20 C1/B13B: 60 RTS ; [ Init BG Tile Data and Execute Init Function ] magic_type_init: C1/B13C: AD 7D 62 LDA $627D ; init function C1/B13F: 10 50 BPL $B191 ; branch if using bg1 graphics ; bg1 target C1/B141: 48 PHA C1/B142: 20 8A C3 JSR $C38A ; make all character/monster sprites priority 3 C1/B145: 9C 67 7B STZ $7B67 ; C1/B148: AD 6F 89 LDA $896F ; make bg1 8x8 tiles and bg3 16x16 tiles ($2105) C1/B14B: 29 EF AND #$EF C1/B14D: 09 40 ORA #$40 C1/B14F: 8D 6F 89 STA $896F C1/B152: A9 FF LDA #$FF ; C1/B154: 8D AB 60 STA $60AB C1/B157: A0 00 0C LDY #$0C00 ; VRAM destination = $0C00 (bg1 tile data) C1/B15A: 20 0D B1 JSR $B10D ; clear bg tile data in VRAM C1/B15D: 20 2A 02 JSR $022A ; wait for vblank C1/B160: A9 0C LDA #$0C C1/B162: 8D 71 89 STA $8971 ; bg1 tile data VRAM location = $0C00 C1/B165: 20 59 1E JSR $1E59 ; clear bg1 tile data in VRAM C1/B168: 20 F9 B0 JSR $B0F9 ; copy bg3 tile data to VRAM C1/B16B: 7B TDC C1/B16C: AA TAX C1/B16D: 8E B4 64 STX $64B4 ; C1/B170: 8E B6 64 STX $64B6 C1/B173: 8E F5 4A STX $4AF5 ; clear bg3 scroll HDMA data C1/B176: 8E F7 4A STX $4AF7 C1/B179: 20 2A 02 JSR $022A ; wait for vblank C1/B17C: 20 79 1E JSR $1E79 ; copy bg1 monsters to bg1 *** JSR $1E6D in rev 1 *** C1/B17F: 20 26 1F JSR $1F26 ; copy bg1 tile data to VRAM C1/B182: A9 01 LDA #$01 C1/B184: 8D 67 7B STA $7B67 ; hide bg1 monster sprites C1/B187: 8D 0E 7B STA $7B0E ; 1 monster thread C1/B18A: 8D 0F 7B STA $7B0F ; 1 character thread C1/B18D: 68 PLA C1/B18E: 4C BB B1 JMP $B1BB ; execute init function ; bg1 animation graphics C1/B191: 48 PHA C1/B192: AD 67 61 LDA $6167 ; bg1 palette index C1/B195: 20 26 9C JSR $9C26 ; load animation palette (bg1) C1/B198: 20 59 1E JSR $1E59 ; clear bg tile data in VRAM C1/B19B: 20 ED 1F JSR $1FED ; clear bg tile data buffer ($01EE) C1/B19E: 20 F9 B0 JSR $B0F9 ; copy bg3 tile data to VRAM C1/B1A1: 7B TDC C1/B1A2: AA TAX C1/B1A3: 8E B4 64 STX $64B4 ; C1/B1A6: 8E B6 64 STX $64B6 C1/B1A9: 8E F5 4A STX $4AF5 ; clear bg3 scroll HDMA data C1/B1AC: 8E F7 4A STX $4AF7 C1/B1AF: AD 6F 89 LDA $896F ; make bg1 and bg3 16x16 tiles ($2105) C1/B1B2: 09 50 ORA #$50 C1/B1B4: 8D 6F 89 STA $896F C1/B1B7: 20 F5 C3 JSR $C3F5 ; update character/monster layer priority C1/B1BA: 68 PLA C1/B1BB: 22 D0 E8 C2 JSL $C2E8D0 ; execute init function C1/B1BF: 60 RTS ; [ ] set_magic_buf3_long: C1/B1C0: 20 C4 B1 JSR $B1C4 C1/B1C3: 6B RTL ; [ ] set_magic_buf3: C1/B1C4: 8E F6 7A STX $7AF6 C1/B1C7: A9 FF LDA #$FF C1/B1C9: 8D 7E 60 STA $607E C1/B1CC: 8D 7F 60 STA $607F C1/B1CF: 9C 82 60 STZ $6082 C1/B1D2: 9C 83 60 STZ $6083 C1/B1D5: AD 3F 61 LDA $613F C1/B1D8: 85 12 STA $12 C1/B1DA: 9C A9 60 STZ $60A9 C1/B1DD: A9 01 LDA #$01 C1/B1DF: 85 1A STA $1A C1/B1E1: 85 1C STA $1C C1/B1E3: A6 22 LDX $22 C1/B1E5: DA PHX C1/B1E6: A6 24 LDX $24 C1/B1E8: DA PHX C1/B1E9: 20 99 B3 JSR $B399 ; clear current thread data C1/B1EC: AE F6 7A LDX $7AF6 C1/B1EF: C2 20 REP #$20 C1/B1F1: A5 22 LDA $22 C1/B1F3: 9D 2F 6A STA $6A2F,X C1/B1F6: A5 24 LDA $24 C1/B1F8: 85 22 STA $22 C1/B1FA: 1A INC C1/B1FB: 1A INC C1/B1FC: AE F6 7A LDX $7AF6 C1/B1FF: 9D 31 6A STA $6A31,X C1/B202: 7B TDC C1/B203: E2 20 SEP #$20 C1/B205: 4C D0 B2 JMP $B2D0 ; [ Create Extra Sprite Thread ] set_magic_buf2: C1/B208: AD 7D 62 LDA $627D ; special function C1/B20B: C9 18 CMP #$18 ; branch if not drain, osmose, raid, cold dust C1/B20D: D0 09 BNE $B218 C1/B20F: C2 20 REP #$20 ; skip 6 threads C1/B211: 8A TXA C1/B212: 18 CLC C1/B213: 69 60 00 ADC #$0060 C1/B216: 80 07 BRA $B21F C1/B218: C2 20 REP #$20 ; skip 1 thread C1/B21A: 8A TXA C1/B21B: 18 CLC C1/B21C: 69 10 00 ADC #$0010 C1/B21F: AA TAX C1/B220: 7B TDC C1/B221: E2 20 SEP #$20 C1/B223: 8E F6 7A STX $7AF6 C1/B226: A9 FF LDA #$FF C1/B228: 8D 7E 60 STA $607E ; clear all targets ??? C1/B22B: 8D 7F 60 STA $607F C1/B22E: AD 3F 61 LDA $613F ; character/monster (attacker) C1/B231: 85 12 STA $12 ; target number C1/B233: A9 08 LDA #$08 ; multi-target delay C1/B235: 8D A9 60 STA $60A9 C1/B238: A9 03 LDA #$03 ; set 3 in active thread flag C1/B23A: 85 1A STA $1A C1/B23C: 80 66 BRA $B2A4 ; [ Create Animation Thread ] ; +X = thread data pointer ; $1C = initial frame delay ; +$22 = frame width/height ; +$24 = animation script number set_magic_buf: C1/B23E: AD 80 62 LDA $6280 C1/B241: 8D A9 60 STA $60A9 C1/B244: AD 7D 62 LDA $627D ; animation init function C1/B247: 29 7F AND #$7F C1/B249: C9 05 CMP #$05 C1/B24B: D0 02 BNE $B24F C1/B24D: 80 04 BRA $B253 C1/B24F: C9 02 CMP #$02 C1/B251: D0 27 BNE $B27A ; special function $02 and $05 C1/B253: DA PHX C1/B254: DA PHX C1/B255: 20 7A B2 JSR $B27A C1/B258: C2 20 REP #$20 C1/B25A: 68 PLA C1/B25B: 18 CLC C1/B25C: 69 40 00 ADC #$0040 C1/B25F: AA TAX C1/B260: 7B TDC C1/B261: E2 20 SEP #$20 C1/B263: DA PHX C1/B264: 20 7A B2 JSR $B27A C1/B267: C2 20 REP #$20 C1/B269: 68 PLA C1/B26A: 18 CLC C1/B26B: 69 10 00 ADC #$0010 C1/B26E: AA TAX C1/B26F: 7B TDC C1/B270: E2 20 SEP #$20 C1/B272: 20 7A B2 JSR $B27A C1/B275: FA PLX C1/B276: 8E F6 7A STX $7AF6 C1/B279: 60 RTS ; init thread L_01_LL283: C1/B27A: 8E F6 7A STX $7AF6 ; thread data pointer C1/B27D: AD 84 60 LDA $6084 ; add 8 to number of active threads C1/B280: 18 CLC C1/B281: 69 08 ADC #$08 C1/B283: 8D 84 60 STA $6084 C1/B286: AD 40 61 LDA $6140 ; $10 = attacker number C1/B289: 85 10 STA $10 C1/B28B: AD D1 62 LDA $62D1 C1/B28E: F0 05 BEQ $B295 C1/B290: AD 3F 61 LDA $613F C1/B293: 80 09 BRA $B29E C1/B295: AD 3F 61 LDA $613F C1/B298: C9 04 CMP #$04 C1/B29A: 90 02 BCC $B29E C1/B29C: 09 80 ORA #$80 C1/B29E: 85 12 STA $12 ; $12 = target number C1/B2A0: A9 01 LDA #$01 C1/B2A2: 85 1A STA $1A ; $1A = 1 (active thread flag) set_magic_buf_main: C1/B2A4: A9 D0 LDA #$D0 C1/B2A6: 85 26 STA $26 ; $26 = #$D0 (script pointer bank) C1/B2A8: A6 22 LDX $22 C1/B2AA: DA PHX C1/B2AB: A6 24 LDX $24 C1/B2AD: DA PHX C1/B2AE: 20 99 B3 JSR $B399 ; clear current thread data C1/B2B1: AE F6 7A LDX $7AF6 C1/B2B4: C2 20 REP #$20 C1/B2B6: A5 22 LDA $22 C1/B2B8: 9D 2F 6A STA $6A2F,X ; frame width/height C1/B2BB: A5 24 LDA $24 C1/B2BD: 0A ASL C1/B2BE: AA TAX C1/B2BF: BF D8 EA D1 LDA $D1EAD8,X ; ++$22 = pointer to animation script C1/B2C3: 85 22 STA $22 C1/B2C5: 1A INC C1/B2C6: 1A INC C1/B2C7: AE F6 7A LDX $7AF6 C1/B2CA: 9D 31 6A STA $6A31,X ; set thread script pointer C1/B2CD: 7B TDC C1/B2CE: E2 20 SEP #$20 set_magic_buf_main2: C1/B2D0: AD 7E 60 LDA $607E C1/B2D3: 29 01 AND #$01 C1/B2D5: 9D D4 74 STA $74D4,X C1/B2D8: A9 06 LDA #$06 C1/B2DA: 9D D5 74 STA $74D5,X C1/B2DD: A5 26 LDA $26 C1/B2DF: 85 24 STA $24 C1/B2E1: 9D 33 6A STA $6A33,X ; set script pointer bank C1/B2E4: A7 22 LDA [$22] ; animation speed (first byte, high nybble) C1/B2E6: 4A LSR C1/B2E7: 4A LSR C1/B2E8: 4A LSR C1/B2E9: 4A LSR C1/B2EA: 1A INC C1/B2EB: 9D 34 6A STA $6A34,X C1/B2EE: A5 1C LDA $1C C1/B2F0: 9D 35 6A STA $6A35,X ; initial frame delay C1/B2F3: A5 1C LDA $1C C1/B2F5: 18 CLC C1/B2F6: 6D A9 60 ADC $60A9 ; add multi-target delay to next thread's initial frame delay C1/B2F9: 85 1C STA $1C C1/B2FB: 9E 36 6A STZ $6A36,X ; clear thread index C1/B2FE: A9 40 LDA #$40 C1/B300: 9D 37 6A STA $6A37,X ; tile 0, flipped horizontally C1/B303: A5 10 LDA $10 C1/B305: 9D 38 6A STA $6A38,X ; attacker number C1/B308: A5 12 LDA $12 C1/B30A: 9D 39 6A STA $6A39,X ; target number C1/B30D: 20 8E C4 JSR $C48E ; calculate target position C1/B310: C2 20 REP #$20 C1/B312: A5 14 LDA $14 ; x position (target) C1/B314: 9D 82 6F STA $6F82,X C1/B317: 9D 3A 6A STA $6A3A,X C1/B31A: A5 16 LDA $16 ; y position (target) C1/B31C: 9D 84 6F STA $6F84,X C1/B31F: 9D 3C 6A STA $6A3C,X C1/B322: 7B TDC C1/B323: E2 20 SEP #$20 C1/B325: 20 99 C4 JSR $C499 ; calculate attacker position C1/B328: C2 20 REP #$20 C1/B32A: A5 14 LDA $14 ; x position (attacker) C1/B32C: 9D 7E 6F STA $6F7E,X C1/B32F: A5 16 LDA $16 ; y position (attacker) C1/B331: 9D 80 6F STA $6F80,X C1/B334: 7B TDC C1/B335: E2 20 SEP #$20 C1/B337: A9 30 LDA #$30 C1/B339: 9D 86 6F STA $6F86,X ; priority 3 C1/B33C: DA PHX C1/B33D: 20 89 BC JSR $BC89 ; get attacker number C1/B340: FA PLX C1/B341: A5 10 LDA $10 ; branch if attacker is a character C1/B343: 10 11 BPL $B356 C1/B345: 29 0F AND #$0F C1/B347: 38 SEC C1/B348: E9 04 SBC #$04 C1/B34A: 0A ASL C1/B34B: A8 TAY C1/B34C: B9 F3 80 LDA $80F3,Y ; attacker facing direction (monster) C1/B34F: 59 7E 61 EOR $617E,Y C1/B352: 49 01 EOR #$01 C1/B354: 80 04 BRA $B35A C1/B356: A8 TAY C1/B357: B9 10 7B LDA $7B10,Y ; attacker facing direction (character) C1/B35A: 0A ASL C1/B35B: 0A ASL C1/B35C: 0A ASL C1/B35D: 0A ASL C1/B35E: 0A ASL C1/B35F: 0A ASL C1/B360: 29 40 AND #$40 C1/B362: 9D 87 6F STA $6F87,X ; animation direction C1/B365: A5 12 LDA $12 ; branch if target is a monster C1/B367: 30 0C BMI $B375 C1/B369: A9 02 LDA #$02 C1/B36B: 9D D2 74 STA $74D2,X ; target width = 2 (character) C1/B36E: A9 03 LDA #$03 C1/B370: 9D D3 74 STA $74D3,X ; target height = 3 (character) C1/B373: 80 13 BRA $B388 C1/B375: 29 7F AND #$7F C1/B377: 38 SEC C1/B378: E9 04 SBC #$04 C1/B37A: 0A ASL C1/B37B: A8 TAY C1/B37C: B9 2F 81 LDA $812F,Y ; target width (monster) C1/B37F: 9D D2 74 STA $74D2,X C1/B382: B9 30 81 LDA $8130,Y ; target height (monster) C1/B385: 9D D3 74 STA $74D3,X C1/B388: A9 01 LDA #$01 C1/B38A: 9D 8D 6F STA $6F8D,X ; set counter for graphic index offset to 1 C1/B38D: A5 1A LDA $1A C1/B38F: 9D 2E 6A STA $6A2E,X ; thread is active C1/B392: FA PLX C1/B393: 86 24 STX $24 C1/B395: FA PLX C1/B396: 86 22 STX $22 C1/B398: 60 RTS ; [ Clear Current Thread Data ] clr_magic_buf_shap: C1/B399: AE F6 7A LDX $7AF6 ; thread pointer C1/B39C: A0 10 00 LDY #$0010 C1/B39F: 9E 2E 6A STZ $6A2E,X ; clear thread data C1/B3A2: 9E 7E 6F STZ $6F7E,X C1/B3A5: 9E CE 74 STZ $74CE,X C1/B3A8: 9E DE 64 STZ $64DE,X C1/B3AB: E8 INX C1/B3AC: 88 DEY C1/B3AD: D0 F0 BNE $B39F C1/B3AF: 60 RTS ; -------------------------------------[ Battle Graphics: Cursors ]------------------------------------- ; [ Init Roulette Cursor ] C1/B3B0: 9C B6 62 STZ $62B6 C1/B3B3: 9C B9 62 STZ $62B9 C1/B3B6: 9C BB 62 STZ $62BB C1/B3B9: 9C BC 62 STZ $62BC C1/B3BC: 20 5B 18 JSR $185B ; update random number C1/B3BF: 29 7F AND #$7F C1/B3C1: 18 CLC C1/B3C2: 69 80 ADC #$80 C1/B3C4: 8D B8 62 STA $62B8 C1/B3C7: 8D BA 62 STA $62BA C1/B3CA: EE B5 62 INC $62B5 ; enable roulette cursor C1/B3CD: 60 RTS ; [ Update Roulette Cursor ] auto_kuru_set: C1/B3CE: AD B5 62 LDA $62B5 ; return if roulette cursor is disabled C1/B3D1: F0 69 BEQ $B43C C1/B3D3: 64 3A STZ $3A C1/B3D5: 7B TDC C1/B3D6: AA TAX C1/B3D7: BD BD 2E LDA $2EBD,X ; current status 1 C1/B3DA: 0A ASL C1/B3DB: 66 3A ROR $3A C1/B3DD: 8A TXA C1/B3DE: 18 CLC C1/B3DF: 69 20 ADC #$20 C1/B3E1: AA TAX C1/B3E2: E0 80 00 CPX #$0080 C1/B3E5: D0 F0 BNE $B3D7 C1/B3E7: A5 3A LDA $3A ; $3A = characters without wound status C1/B3E9: 4A LSR C1/B3EA: 4A LSR C1/B3EB: 4A LSR C1/B3EC: 4A LSR C1/B3ED: 49 FF EOR #$FF C1/B3EF: 85 3A STA $3A C1/B3F1: AD 1D 20 LDA $201D ; C1/B3F4: 2D AC 61 AND $61AC C1/B3F7: 2D AD 61 AND $61AD C1/B3FA: 2D 93 61 AND $6193 C1/B3FD: 85 36 STA $36 ; $36 = visible characters C1/B3FF: A5 92 LDA $92 ; C1/B401: 25 3A AND $3A ; mask characters with wound status C1/B403: 05 36 ORA $36 ; add visible characters C1/B405: F0 35 BEQ $B43C ; return if there are no characters C1/B407: AD B9 62 LDA $62B9 C1/B40A: F0 15 BEQ $B421 ; C1/B40C: A5 0E LDA $0E ; frame counter C1/B40E: 29 01 AND #$01 C1/B410: F0 2A BEQ $B43C ; return on even frames C1/B412: CE B7 62 DEC $62B7 ; C1/B415: D0 22 BNE $B439 C1/B417: AE BB 62 LDX $62BB C1/B41A: 8E 42 2F STX $2F42 C1/B41D: 9C B5 62 STZ $62B5 C1/B420: 60 RTS ; C1/B421: AD B6 62 LDA $62B6 C1/B424: F0 19 BEQ $B43F C1/B426: A5 0E LDA $0E ; frame counter C1/B428: 29 07 AND #$07 C1/B42A: D0 6F BNE $B49B ; branch 7/8 frames C1/B42C: CE B7 62 DEC $62B7 ; decrement ??? counter C1/B42F: D0 2A BNE $B45B C1/B431: EE B9 62 INC $62B9 C1/B434: A9 20 LDA #$20 ; set ??? counter to 32 * 8 frames (4.25 seconds) C1/B436: 8D B7 62 STA $62B7 C1/B439: 4C 9B B4 JMP $B49B ; return C1/B43C: 4C 16 B5 JMP $B516 ; C1/B43F: AD BA 62 LDA $62BA C1/B442: D0 0E BNE $B452 C1/B444: 20 5B 18 JSR $185B ; update random number C1/B447: 29 07 AND #$07 C1/B449: 18 CLC C1/B44A: 69 08 ADC #$08 ; (8..15) C1/B44C: 8D B7 62 STA $62B7 C1/B44F: EE B6 62 INC $62B6 C1/B452: CE BA 62 DEC $62BA C1/B455: A5 0E LDA $0E ; frame counter C1/B457: 29 03 AND #$03 C1/B459: D0 40 BNE $B49B ; branch 3/4 frames C1/B45B: EE B8 62 INC $62B8 C1/B45E: AD B8 62 LDA $62B8 C1/B461: 29 08 AND #$08 C1/B463: F0 22 BEQ $B487 C1/B465: AD B8 62 LDA $62B8 C1/B468: 29 07 AND #$07 C1/B46A: AA TAX C1/B46B: AD 1D 20 LDA $201D C1/B46E: 2D AC 61 AND $61AC C1/B471: 2D AD 61 AND $61AD C1/B474: 2D 93 61 AND $6193 C1/B477: 25 3A AND $3A C1/B479: 3F 01 1A C1 AND $C11A01,X C1/B47D: F0 DC BEQ $B45B C1/B47F: 8D BB 62 STA $62BB C1/B482: 9C BC 62 STZ $62BC C1/B485: 80 14 BRA $B49B C1/B487: AD B8 62 LDA $62B8 C1/B48A: 29 07 AND #$07 C1/B48C: AA TAX C1/B48D: A5 92 LDA $92 C1/B48F: 3F 01 1A C1 AND $C11A01,X C1/B493: F0 C6 BEQ $B45B C1/B495: 8D BC 62 STA $62BC C1/B498: 9C BB 62 STZ $62BB C1/B49B: A2 E0 38 LDX #$38E0 ; +$3A = tile data for cursor C1/B49E: 86 3A STX $3A ; cursor on character C1/B4A0: AD BB 62 LDA $62BB ; C1/B4A3: F0 30 BEQ $B4D5 C1/B4A5: 20 0F 1A JSR $1A0F ; get bit number C1/B4A8: 0A ASL C1/B4A9: AA TAX C1/B4AA: BD 9F 80 LDA $809F,X ; character front offset (0 if facing left) C1/B4AD: F0 04 BEQ $B4B3 ; branch if facing left C1/B4AF: A9 78 LDA #$78 C1/B4B1: 85 3B STA $3B C1/B4B3: BD 88 80 LDA $8088,X C1/B4B6: 29 01 AND #$01 C1/B4B8: D0 13 BNE $B4CD C1/B4BA: BD 94 80 LDA $8094,X C1/B4BD: 29 01 AND #$01 C1/B4BF: D0 0C BNE $B4CD C1/B4C1: BD 87 80 LDA $8087,X C1/B4C4: 85 36 STA $36 C1/B4C6: BD 93 80 LDA $8093,X C1/B4C9: 85 37 STA $37 C1/B4CB: 80 33 BRA $B500 C1/B4CD: A9 E0 LDA #$E0 C1/B4CF: 85 36 STA $36 C1/B4D1: 85 37 STA $37 C1/B4D3: 80 2B BRA $B500 ; cursor on monster C1/B4D5: AD BC 62 LDA $62BC C1/B4D8: F0 3C BEQ $B516 C1/B4DA: 20 0F 1A JSR $1A0F ; get bit number C1/B4DD: 0A ASL C1/B4DE: AA TAX C1/B4DF: BD 7B 80 LDA $807B,X C1/B4E2: F0 04 BEQ $B4E8 C1/B4E4: A9 78 LDA #$78 ; flip horizontally C1/B4E6: 85 3B STA $3B C1/B4E8: BD 64 80 LDA $8064,X C1/B4EB: 29 01 AND #$01 C1/B4ED: D0 DE BNE $B4CD C1/B4EF: BD 70 80 LDA $8070,X C1/B4F2: 29 01 AND #$01 C1/B4F4: D0 D7 BNE $B4CD C1/B4F6: BD 63 80 LDA $8063,X C1/B4F9: 85 36 STA $36 C1/B4FB: BD 6F 80 LDA $806F,X C1/B4FE: 85 37 STA $37 C1/B500: A5 71 LDA $71 ; next available sprite C1/B502: C2 20 REP #$20 C1/B504: 0A ASL C1/B505: 0A ASL C1/B506: AA TAX C1/B507: A5 36 LDA $36 C1/B509: 9D 00 03 STA $0300,X ; set sprite data C1/B50C: A5 3A LDA $3A C1/B50E: 9D 02 03 STA $0302,X C1/B511: 7B TDC C1/B512: E2 20 SEP #$20 C1/B514: E6 71 INC $71 ; increment number of active sprites C1/B516: 60 RTS ; [ Init Cursor Sprites ] cur_init: C1/B517: 7B TDC C1/B518: AA TAX C1/B519: A9 38 LDA #$38 C1/B51B: 9D E6 88 STA $88E6,X C1/B51E: E8 INX C1/B51F: E8 INX C1/B520: E8 INX C1/B521: E8 INX C1/B522: E0 28 00 CPX #$0028 C1/B525: D0 F4 BNE $B51B C1/B527: A2 E0 E0 LDX #$E0E0 C1/B52A: 8E 6F 7A STX $7A6F C1/B52D: A2 E0 E2 LDX #$E2E0 C1/B530: 8E 71 7A STX $7A71 C1/B533: 60 RTS ; flashing scroll arrows sprite data (both, down, up, not flashing, then flashing) C1/B534: .DW $38E2, $78E2, $38E2, $B8E4, $38E2, $38E4 ; [ Update Cursor Sprites ] cur_set: C1/B540: E2 10 SEP #$10 C1/B542: AD BE 62 LDA $62BE C1/B545: D0 4E BNE $B595 C1/B547: AD BD 62 LDA $62BD C1/B54A: D0 49 BNE $B595 C1/B54C: AD 2F 63 LDA $632F C1/B54F: F0 44 BEQ $B595 C1/B551: AD CA 62 LDA $62CA ; active character (arrow indicator) C1/B554: 0A ASL C1/B555: 0A ASL C1/B556: 0A ASL C1/B557: 0A ASL C1/B558: 0A ASL C1/B559: AA TAX C1/B55A: C2 10 REP #$10 C1/B55C: 20 A5 34 JSR $34A5 C1/B55F: E2 10 SEP #$10 C1/B561: AD CA 62 LDA $62CA ; active character (arrow indicator) C1/B564: 0A ASL C1/B565: AA TAX C1/B566: BD 34 80 LDA $8034,X ; center x position (high byte) C1/B569: 29 01 AND #$01 C1/B56B: D0 28 BNE $B595 ; branch if greater than $0100 (hide arrow if character is offscreen) C1/B56D: BD 3C 80 LDA $803C,X ; center y position (high byte) C1/B570: 29 01 AND #$01 C1/B572: D0 21 BNE $B595 ; branch if greater than $0100 (hide arrow if character is offscreen) C1/B574: BD 33 80 LDA $8033,X ; character center x position - 8 (left y position) C1/B577: 38 SEC C1/B578: E9 08 SBC #$08 C1/B57A: 8D 18 03 STA $0318 ; set arrow sprite x position C1/B57D: BD 3B 80 LDA $803B,X ; character center y position - 24 (top y position) C1/B580: 38 SEC C1/B581: E9 18 SBC #$18 C1/B583: 18 CLC C1/B584: 65 38 ADC $38 ; C1/B586: 8D 19 03 STA $0319 ; set arrow sprite y position C1/B589: A9 2E LDA #$2E C1/B58B: 8D 1A 03 STA $031A C1/B58E: A9 28 LDA #$28 C1/B590: 8D 1B 03 STA $031B C1/B593: 80 08 BRA $B59D C1/B595: A9 E0 LDA #$E0 ; hide arrow sprite C1/B597: 8D 18 03 STA $0318 C1/B59A: 8D 19 03 STA $0319 C1/B59D: AD AF 7B LDA $7BAF ; C1/B5A0: F0 22 BEQ $B5C4 C1/B5A2: AD B0 7B LDA $7BB0 C1/B5A5: 8D E8 88 STA $88E8 C1/B5A8: A9 01 LDA #$01 C1/B5AA: 8D E7 88 STA $88E7 C1/B5AD: C2 10 REP #$10 C1/B5AF: AE B1 7B LDX $7BB1 C1/B5B2: EC B3 7B CPX $7BB3 C1/B5B5: 90 0D BCC $B5C4 C1/B5B7: E0 CA 00 CPX #$00CA C1/B5BA: B0 08 BCS $B5C4 C1/B5BC: AD B1 7B LDA $7BB1 C1/B5BF: 8D E9 88 STA $88E9 C1/B5C2: 80 03 BRA $B5C7 C1/B5C4: 9C E7 88 STZ $88E7 C1/B5C7: E2 10 SEP #$10 C1/B5C9: 9C EB 88 STZ $88EB C1/B5CC: AD B5 7B LDA $7BB5 C1/B5CF: F0 0F BEQ $B5E0 C1/B5D1: AD B6 7B LDA $7BB6 C1/B5D4: 8D EC 88 STA $88EC C1/B5D7: EE EB 88 INC $88EB C1/B5DA: AD B7 7B LDA $7BB7 C1/B5DD: 8D ED 88 STA $88ED C1/B5E0: 7B TDC C1/B5E1: AA TAX C1/B5E2: A8 TAY C1/B5E3: B9 E3 88 LDA $88E3,Y C1/B5E6: D0 0A BNE $B5F2 C1/B5E8: A9 E0 LDA #$E0 C1/B5EA: 99 F0 04 STA $04F0,Y ; hide cursor C1/B5ED: 99 F1 04 STA $04F1,Y C1/B5F0: 80 18 BRA $B60A C1/B5F2: B9 E4 88 LDA $88E4,Y ; cursor x position C1/B5F5: 99 F0 04 STA $04F0,Y C1/B5F8: B9 E5 88 LDA $88E5,Y ; cursor y position C1/B5FB: 99 F1 04 STA $04F1,Y C1/B5FE: B9 E6 88 LDA $88E6,Y ; cursor vhoopppm C1/B601: 99 F3 04 STA $04F3,Y C1/B604: BD 6F 7A LDA $7A6F,X ; cursor tile index C1/B607: 99 F2 04 STA $04F2,Y C1/B60A: E8 INX ; next cursor C1/B60B: C8 INY C1/B60C: C8 INY C1/B60D: C8 INY C1/B60E: C8 INY C1/B60F: C0 0C CPY #$0C C1/B611: D0 D0 BNE $B5E3 C1/B613: B9 E3 88 LDA $88E3,Y ; scroll arrows C1/B616: D0 0A BNE $B622 ; branch if active C1/B618: A9 E0 LDA #$E0 C1/B61A: 99 F0 04 STA $04F0,Y ; hide scroll arrows C1/B61D: 99 F1 04 STA $04F1,Y C1/B620: 80 2C BRA $B64E C1/B622: B9 E4 88 LDA $88E4,Y ; scroll arrows x position C1/B625: 99 F0 04 STA $04F0,Y C1/B628: B9 E5 88 LDA $88E5,Y ; scroll arrows y position C1/B62B: 99 F1 04 STA $04F1,Y C1/B62E: A5 0E LDA $0E ; frame counter C1/B630: 4A LSR C1/B631: 4A LSR C1/B632: 4A LSR C1/B633: 29 02 AND #$02 ; flash every 16 frames C1/B635: 85 36 STA $36 C1/B637: B9 E6 88 LDA $88E6,Y ; 0 = both, 1 = down, 2 = up C1/B63A: 0A ASL C1/B63B: 0A ASL C1/B63C: 18 CLC C1/B63D: 65 36 ADC $36 C1/B63F: AA TAX C1/B640: BF 34 B5 C1 LDA $C1B534,X ; flashing cursor tile data C1/B644: 99 F2 04 STA $04F2,Y C1/B647: BF 35 B5 C1 LDA $C1B535,X C1/B64B: 99 F3 04 STA $04F3,Y C1/B64E: 20 84 B6 JSR $B684 ; update character/monster cursor sprite data C1/B651: 7B TDC C1/B652: A8 TAY C1/B653: B9 F3 88 LDA $88F3,Y ; character/monster cursor C1/B656: D0 0A BNE $B662 ; branch if active C1/B658: A9 E0 LDA #$E0 C1/B65A: 99 00 03 STA $0300,Y ; hide cursor C1/B65D: 99 01 03 STA $0301,Y C1/B660: 80 17 BRA $B679 C1/B662: B9 F4 88 LDA $88F4,Y ; cursor x position C1/B665: 99 00 03 STA $0300,Y C1/B668: B9 F5 88 LDA $88F5,Y ; cursor y position C1/B66B: 99 01 03 STA $0301,Y C1/B66E: B9 F6 88 LDA $88F6,Y ; cursor vhoopppm C1/B671: 99 03 03 STA $0303,Y C1/B674: A9 E0 LDA #$E0 ; cursor tile = $E0 C1/B676: 99 02 03 STA $0302,Y C1/B679: C8 INY ; next cursor (6 total) C1/B67A: C8 INY C1/B67B: C8 INY C1/B67C: C8 INY C1/B67D: C0 18 CPY #$18 C1/B67F: D0 D2 BNE $B653 C1/B681: C2 10 REP #$10 C1/B683: 60 RTS ; [ Update Character/Monster Cursor Sprite Data ] C1/B684: 7B TDC C1/B685: AA TAX C1/B686: A9 38 LDA #$38 ; vhoopppm for all cursors = $38 C1/B688: 9D F6 88 STA $88F6,X C1/B68B: 9E F3 88 STZ $88F3,X ; disable all character/monster cursors C1/B68E: 9D 02 89 STA $8902,X C1/B691: 9E FF 88 STZ $88FF,X C1/B694: E8 INX C1/B695: E8 INX C1/B696: E8 INX C1/B697: E8 INX C1/B698: E0 0C CPX #$0C C1/B69A: D0 EC BNE $B688 C1/B69C: AD 7F 7B LDA $7B7F ; branch if cursors are on one side only C1/B69F: F0 08 BEQ $B6A9 C1/B6A1: A5 0E LDA $0E ; frame counter C1/B6A3: 29 01 AND #$01 C1/B6A5: F0 07 BEQ $B6AE ; show cursors on monsters on odd frames C1/B6A7: 80 59 BRA $B702 C1/B6A9: AD 7D 7B LDA $7B7D C1/B6AC: F0 54 BEQ $B702 ; cursors on characters C1/B6AE: 7B TDC C1/B6AF: AA TAX C1/B6B0: A8 TAY C1/B6B1: AD 7D 7B LDA $7B7D ; characters with cursors shown C1/B6B4: 2D 1D 20 AND $201D ; ignore hidden characters C1/B6B7: 2D AC 61 AND $61AC ; C1/B6BA: 2D AD 61 AND $61AD C1/B6BD: 2D 93 61 AND $6193 ; clear characters acting as enemies C1/B6C0: 85 36 STA $36 C1/B6C2: 46 36 LSR $36 C1/B6C4: 90 30 BCC $B6F6 ; skip cursor C1/B6C6: B9 9F 80 LDA $809F,Y ; character cursor x offset C1/B6C9: F0 05 BEQ $B6D0 ; branch if facing left C1/B6CB: A9 78 LDA #$78 C1/B6CD: 9D F6 88 STA $88F6,X ; vhoopppm = $78 (horizontally flipped) C1/B6D0: B9 88 80 LDA $8088,Y ; character right x position (high byte) C1/B6D3: 29 01 AND #$01 C1/B6D5: D0 1F BNE $B6F6 ; skip if offscreen C1/B6D7: B9 94 80 LDA $8094,Y ; character center y position (high byte) C1/B6DA: 29 01 AND #$01 C1/B6DC: D0 18 BNE $B6F6 ; skip if offscreen C1/B6DE: B9 93 80 LDA $8093,Y ; character center y position C1/B6E1: C9 A0 CMP #$A0 C1/B6E3: B0 11 BCS $B6F6 ; skip if below battlefield region C1/B6E5: A9 01 LDA #$01 C1/B6E7: 9D F3 88 STA $88F3,X ; enable cursor C1/B6EA: B9 87 80 LDA $8087,Y ; character right x position C1/B6ED: 9D F4 88 STA $88F4,X C1/B6F0: B9 93 80 LDA $8093,Y ; character center x position C1/B6F3: 9D F5 88 STA $88F5,X C1/B6F6: C8 INY ; next cursor C1/B6F7: C8 INY C1/B6F8: E8 INX C1/B6F9: E8 INX C1/B6FA: E8 INX C1/B6FB: E8 INX C1/B6FC: E0 18 CPX #$18 C1/B6FE: D0 C2 BNE $B6C2 C1/B700: 80 48 BRA $B74A ; cursors on monsters C1/B702: 7B TDC C1/B703: AA TAX C1/B704: A8 TAY C1/B705: AD 7E 7B LDA $7B7E C1/B708: 25 92 AND $92 C1/B70A: 85 36 STA $36 C1/B70C: 46 36 LSR $36 C1/B70E: 90 30 BCC $B740 C1/B710: B9 7B 80 LDA $807B,Y C1/B713: F0 05 BEQ $B71A C1/B715: A9 78 LDA #$78 C1/B717: 9D F6 88 STA $88F6,X C1/B71A: B9 64 80 LDA $8064,Y C1/B71D: 29 01 AND #$01 C1/B71F: D0 1F BNE $B740 C1/B721: B9 70 80 LDA $8070,Y C1/B724: 29 01 AND #$01 C1/B726: D0 18 BNE $B740 C1/B728: B9 6F 80 LDA $806F,Y C1/B72B: C9 A0 CMP #$A0 C1/B72D: B0 11 BCS $B740 C1/B72F: A9 01 LDA #$01 C1/B731: 9D F3 88 STA $88F3,X C1/B734: B9 63 80 LDA $8063,Y C1/B737: 9D F4 88 STA $88F4,X C1/B73A: B9 6F 80 LDA $806F,Y C1/B73D: 9D F5 88 STA $88F5,X C1/B740: C8 INY C1/B741: C8 INY C1/B742: E8 INX C1/B743: E8 INX C1/B744: E8 INX C1/B745: E8 INX C1/B746: E0 18 CPX #$18 C1/B748: D0 C2 BNE $B70C C1/B74A: 60 RTS ; ------------------------------------[ Battle Graphics: Animation ]------------------------------------ ; animation scripts for block animations (knife, sword, shield, zephyr cape, hand up, golem, dog) C1/B74B: .DB $45, $46, $48, $47, $40, $44, $43 ; palettes for block animations sp_color_set_tbl: C1/B752: .DB $02, $02, $01, $00, $00, $01, $03 ; sound effects for block animations def_effect_no_tbl: C1/B759: .DB $A0, $A0, $A0, $A0, $A0, $A0, $A0 ; [ Battle Script Command $06: Show Battle Animation ] anim_command: C1/B760: 20 9E 9C JSR $9C9E ; deactivate all animation threads C1/B763: 9C BB EC STZ $ECBB C1/B766: A0 01 00 LDY #$0001 C1/B769: B1 76 LDA ($76),Y ; attack command C1/B76B: 30 05 BMI $B772 C1/B76D: 0A ASL C1/B76E: AA TAX C1/B76F: FC 75 B7 JSR ($B775,X) C1/B772: 4C 6E 95 JMP $956E ; attack command jump table anim_command_jmp: C1/B775: .DW $BECD, $BC41, $ABEB, $BBE7, $BBDC, $BB87, $BBA5, $B98D C1/B785: .DW $B9C5, $BC13, $B91A, $BAAA, $B8E5, $B9E8, $BB54, $B900 C1/B795: .DW $BB2B, $BB76, $BC88, $BB12, $B80A, $BC88, $B9F7, $ABEB C1/B7A5: .DW $BBED, $ABEB, $BB62, $BB49, $BA9C, $B7C3, $BC88, $BC88 C1/B7B5: .DW $BB0A, $B7F1, $B7E9, $BA8E, $BA5F, $BAB7, $B955 ; [ Attack Command $1D: Magitek ] C1/B7C3: A0 02 00 LDY #$0002 C1/B7C6: B1 76 LDA ($76),Y C1/B7C8: C9 86 CMP #$86 C1/B7CA: 90 0B BCC $B7D7 ; branch if fire, ice, or bolt beam C1/B7CC: A9 2A LDA #$2A ; animation for command $2A (animation script $0100) C1/B7CE: 20 A4 B8 JSR $B8A4 C1/B7D1: 20 EB AB JSR $ABEB C1/B7D4: 4C 6B B8 JMP $B86B C1/B7D7: A0 04 00 LDY #$0004 C1/B7DA: B1 78 LDA ($78),Y C1/B7DC: C8 INY C1/B7DD: 11 78 ORA ($78),Y C1/B7DF: D0 05 BNE $B7E6 C1/B7E1: A9 2A LDA #$2A C1/B7E3: 4C A4 B8 JMP $B8A4 C1/B7E6: 4C EB AB JMP $ABEB ; [ Attack Command $22: Enemy Roulette ] C1/B7E9: EE A4 62 INC $62A4 C1/B7EC: A9 29 LDA #$29 C1/B7EE: 4C A4 B8 JMP $B8A4 ; fall through ; [ Attack Command $21: ] C1/B7F1: 20 B0 B3 JSR $B3B0 ; init roulette cursor C1/B7F4: 60 RTS ; [ Execute Single Thread Animation ] ; +X = pointer to animation data (+$D07FB2) C1/B7F5: DA PHX C1/B7F6: 20 A2 9A JSR $9AA2 C1/B7F9: 20 43 AB JSR $AB43 ; init single thread animation C1/B7FC: FA PLX C1/B7FD: 86 1E STX $1E C1/B7FF: 7B TDC C1/B800: 20 B3 9C JSR $9CB3 ; init battle animation data C1/B803: 20 5B AC JSR $AC5B ; execute battle animation C1/B806: 20 43 AB JSR $AB43 ; init single thread animation C1/B809: 60 RTS ; [ Attack Command $14: Row ] C1/B80A: 20 89 BC JSR $BC89 ; get attacker number C1/B80D: A5 10 LDA $10 C1/B80F: 30 56 BMI $B867 ; return if a monster C1/B811: 0A ASL C1/B812: 0A ASL C1/B813: 0A ASL C1/B814: 0A ASL C1/B815: 0A ASL C1/B816: A8 TAY C1/B817: AD 1F 20 LDA $201F ; battle type C1/B81A: 0A ASL C1/B81B: 0A ASL C1/B81C: 18 CLC C1/B81D: 65 10 ADC $10 C1/B81F: AA TAX C1/B820: B9 C5 2E LDA $2EC5,Y ; toggle row C1/B823: 49 01 EOR #$01 C1/B825: 99 C5 2E STA $2EC5,Y C1/B828: 29 01 AND #$01 C1/B82A: F0 08 BEQ $B834 ; branch if front C1/B82C: 64 11 STZ $11 C1/B82E: BF 6F A8 C2 LDA $C2A86F,X ; horizontal movement speed (back row) C1/B832: 80 04 BRA $B838 C1/B834: BF 7F A8 C2 LDA $C2A87F,X ; horizontal movement speed (front row) C1/B838: 85 10 STA $10 C1/B83A: 10 02 BPL $B83E C1/B83C: C6 11 DEC $11 ; make $10 16-bit (+$10) C1/B83E: A9 04 LDA #$04 C1/B840: 99 C0 61 STA $61C0,Y ; secondary graphical action = 4 (walking forward) C1/B843: A9 06 LDA #$06 ; 6 frames C1/B845: 48 PHA C1/B846: 5A PHY C1/B847: A6 10 LDX $10 C1/B849: DA PHX C1/B84A: 20 2A 02 JSR $022A ; wait for vblank C1/B84D: FA PLX C1/B84E: 86 10 STX $10 ; movement speed C1/B850: 7A PLY C1/B851: C2 20 REP #$20 C1/B853: B9 C9 61 LDA $61C9,Y ; add to character xy angle C1/B856: 18 CLC C1/B857: 65 10 ADC $10 C1/B859: 99 C9 61 STA $61C9,Y C1/B85C: 7B TDC C1/B85D: E2 20 SEP #$20 C1/B85F: 68 PLA C1/B860: 3A DEC ; decrement frame counter C1/B861: D0 E2 BNE $B845 C1/B863: 7B TDC C1/B864: 99 C0 61 STA $61C0,Y ; clear secondary graphical action C1/B867: 20 2A 02 JSR $022A ; wait for vblank C1/B86A: 60 RTS ; [ Step Back After Attack ] inc_magic_play_start_flag: C1/B86B: 20 89 BC JSR $BC89 ; get attacker number C1/B86E: A5 10 LDA $10 C1/B870: 30 0D BMI $B87F ; branch if a monster C1/B872: 29 03 AND #$03 C1/B874: DA PHX C1/B875: AA TAX C1/B876: AD A4 62 LDA $62A4 ; C1/B879: D0 03 BNE $B87E C1/B87B: FE AE 61 INC $61AE,X ; disable character stepping forward to attack (enable stepping back ???) C1/B87E: FA PLX C1/B87F: 60 RTS ; [ Execute Event Animation (long access) ] set_one_animation_long: C1/B880: 20 84 B8 JSR $B884 ; execute event animation C1/B883: 6B RTL ; [ Execute Event Animation ] ; +$1E: pointer to animation data (+$D07FB2) set_one_animation: C1/B884: 9C C0 62 STZ $62C0 ; don't ignore block graphics C1/B887: A6 1E LDX $1E C1/B889: 7B TDC C1/B88A: 20 B3 9C JSR $9CB3 ; init battle animation data C1/B88D: 4C 6B AC JMP $AC6B ; init battle animation threads ; [ Execute Command Animation (block graphics enabled) ] ; A = command animation number (animation data pointer at +$C2B4BE) set_caster_animation2: C1/B890: 0A ASL C1/B891: AA TAX C1/B892: C2 20 REP #$20 C1/B894: A0 04 00 LDY #$0004 C1/B897: B1 78 LDA ($78),Y C1/B899: 48 PHA C1/B89A: BF BE B4 C2 LDA $C2B4BE,X ; pointer to animation data (+$D07FB2) C1/B89E: AA TAX C1/B89F: 7B TDC C1/B8A0: E2 20 SEP #$20 C1/B8A2: 80 1E BRA $B8C2 ; [ Execute Command Animation ] ; A = command animation number (animation data pointer at +$C2B4BE) set_caster_animation: C1/B8A4: EE C0 62 INC $62C0 ; ignore block graphics C1/B8A7: 0A ASL C1/B8A8: AA TAX C1/B8A9: C2 20 REP #$20 C1/B8AB: A0 04 00 LDY #$0004 C1/B8AE: B1 78 LDA ($78),Y ; targets hit C1/B8B0: 48 PHA C1/B8B1: A0 02 00 LDY #$0002 C1/B8B4: B1 78 LDA ($78),Y ; set targets C1/B8B6: C8 INY C1/B8B7: C8 INY C1/B8B8: 91 78 STA ($78),Y C1/B8BA: BF BE B4 C2 LDA $C2B4BE,X ; pointer to animation data (+$D07FB2) C1/B8BE: AA TAX C1/B8BF: 7B TDC C1/B8C0: E2 20 SEP #$20 set_caster_animation_main: C1/B8C2: DA PHX C1/B8C3: 20 F4 94 JSR $94F4 ; save monster sprite data C1/B8C6: 20 67 AB JSR $AB67 ; set animation targets C1/B8C9: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/B8CC: FA PLX C1/B8CD: 20 F5 B7 JSR $B7F5 ; execute single thread animation C1/B8D0: 20 03 95 JSR $9503 ; restore monster sprite data C1/B8D3: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/B8D6: C2 20 REP #$20 C1/B8D8: 68 PLA C1/B8D9: A0 04 00 LDY #$0004 C1/B8DC: 91 78 STA ($78),Y ; restore targets hit C1/B8DE: 7B TDC C1/B8DF: E2 20 SEP #$20 C1/B8E1: 9C C0 62 STZ $62C0 ; don't ignore block graphics C1/B8E4: 60 RTS ; [ Attack Command $0C: Lore ] C1/B8E5: 20 35 BC JSR $BC35 C1/B8E8: B2 78 LDA ($78) C1/B8EA: 29 10 AND #$10 C1/B8EC: D0 09 BNE $B8F7 C1/B8EE: B2 78 LDA ($78) C1/B8F0: 30 05 BMI $B8F7 C1/B8F2: A9 28 LDA #$28 C1/B8F4: 20 E1 BB JSR $BBE1 C1/B8F7: 20 41 B9 JSR $B941 C1/B8FA: 90 03 BCC $B8FF C1/B8FC: 20 EB AB JSR $ABEB C1/B8FF: 60 RTS ; [ Attack Command $0F: Slot ] C1/B900: 20 35 BC JSR $BC35 ; C1/B903: A2 6C 0F LDX #$0F6C ; pointer to animation data $011A (walk forward with arms up) C1/B906: 20 F5 B7 JSR $B7F5 ; execute single thread animation C1/B909: B2 78 LDA ($78) C1/B90B: 30 0C BMI $B919 ; return if attacker is a monster C1/B90D: 20 EB AB JSR $ABEB ; magic command animation C1/B910: 20 35 AC JSR $AC35 ; C1/B913: 20 6B B8 JSR $B86B ; C1/B916: 20 03 95 JSR $9503 ; restore monster sprite data C1/B919: 60 RTS ; [ Attack Command $0A: Blitz ] C1/B91A: 20 35 BC JSR $BC35 C1/B91D: A9 04 LDA #$04 C1/B91F: 20 A4 B8 JSR $B8A4 C1/B922: 20 41 B9 JSR $B941 C1/B925: 90 13 BCC $B93A C1/B927: A2 16 05 LDX #$0516 C1/B92A: 86 1E STX $1E C1/B92C: A0 02 00 LDY #$0002 C1/B92F: B1 76 LDA ($76),Y C1/B931: 20 B3 9C JSR $9CB3 ; init battle animation data C1/B934: 20 5B AC JSR $AC5B ; execute battle animation C1/B937: 20 03 95 JSR $9503 ; restore monster sprite data C1/B93A: 20 6B B8 JSR $B86B C1/B93D: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/B940: 60 RTS ; [ Check Targets ] ; carry clear = no targets (out) get_target_info: C1/B941: A0 02 00 LDY #$0002 C1/B944: 7B TDC C1/B945: 11 78 ORA ($78),Y ; check possible targets, targets hit, targets reflected off, ... C1/B947: C8 INY C1/B948: C0 0C 00 CPY #$000C C1/B94B: D0 F8 BNE $B945 C1/B94D: C9 00 CMP #$00 C1/B94F: F0 02 BEQ $B953 C1/B951: 38 SEC C1/B952: 60 RTS C1/B953: 18 CLC C1/B954: 60 RTS ; [ Attack Command $26: Dice Roll ] C1/B955: 20 35 BC JSR $BC35 ; C1/B958: A0 02 00 LDY #$0002 C1/B95B: B1 76 LDA ($76),Y ; die 1 C1/B95D: 29 0F AND #$0F C1/B95F: 8D FB EB STA $EBFB C1/B962: B1 76 LDA ($76),Y C1/B964: 29 F0 AND #$F0 C1/B966: 91 76 STA ($76),Y C1/B968: C8 INY C1/B969: B1 76 LDA ($76),Y ; die 2 C1/B96B: 4A LSR C1/B96C: 4A LSR C1/B96D: 4A LSR C1/B96E: 4A LSR C1/B96F: 8D FC EB STA $EBFC C1/B972: B1 76 LDA ($76),Y ; die 3 C1/B974: 29 0F AND #$0F C1/B976: 8D FD EB STA $EBFD C1/B979: A9 51 LDA #$51 C1/B97B: 91 76 STA ($76),Y ; set item $51 (Dice) C1/B97D: AD FB EB LDA $EBFB C1/B980: C9 0F CMP #$0F C1/B982: D0 04 BNE $B988 ; branch if die 1 is enabled (3 dice) C1/B984: A9 0D LDA #$0D C1/B986: 80 02 BRA $B98A C1/B988: A9 0C LDA #$0C C1/B98A: 4C A4 B8 JMP $B8A4 ; [ Attack Command $07: SwdTech ] C1/B98D: 20 35 BC JSR $BC35 C1/B990: AD AE 60 LDA $60AE C1/B993: D0 0F BNE $B9A4 ; branch if not first swdtech hit (graphics are already loaded) C1/B995: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/B998: A9 03 LDA #$03 C1/B99A: 20 E1 BB JSR $BBE1 C1/B99D: 20 41 B9 JSR $B941 C1/B9A0: 90 22 BCC $B9C4 C1/B9A2: 80 08 BRA $B9AC C1/B9A4: 20 41 B9 JSR $B941 C1/B9A7: 90 1B BCC $B9C4 C1/B9A9: 20 67 AB JSR $AB67 C1/B9AC: 20 A2 9A JSR $9AA2 C1/B9AF: A2 A6 04 LDX #$04A6 C1/B9B2: 86 1E STX $1E C1/B9B4: A0 02 00 LDY #$0002 C1/B9B7: B1 76 LDA ($76),Y C1/B9B9: 30 09 BMI $B9C4 C1/B9BB: 20 B3 9C JSR $9CB3 ; init battle animation data C1/B9BE: 20 5B AC JSR $AC5B ; execute battle animation C1/B9C1: 20 03 95 JSR $9503 ; restore monster sprite data C1/B9C4: 60 RTS ; [ Attack Command $08: Throw ] ; Item Jump and Throw Animation Data ($D10040) ; -------------------------------------------- ; djjjtttt ; d: use normal "Fight" animation when thrown (ignore "t" value) ; j: jump animation ; 0 = unarmed ; 1 = thick knife ; 2 = thin knife ; 3 = sword ; 4 = katana ; 5 = rod ; 6 = spear ; 7 = hawk eye/sniper ; t: throw animation ; 0 = thick knife ; 1 = thin knife ; 2 = sword ; 3 = katana ; 4 = rod ; 5 = spear ; 6 = hawk eye/sniper ; 7 = ??? ; 8 = fire skean ; 9 = water edge ; 10 = bolt edge ; 11 = inviz edge ; 12 = shadow edge ; 13 = full moon/morning star/rising sun ; 14 = boomerang ; 15 = ??? C1/B9C5: 20 35 BC JSR $BC35 C1/B9C8: A0 02 00 LDY #$0002 C1/B9CB: B1 76 LDA ($76),Y ; item number C1/B9CD: 1A INC C1/B9CE: AA TAX C1/B9CF: BF 40 00 D1 LDA $D10040,X ; C1/B9D3: 10 0A BPL $B9DF C1/B9D5: 7B TDC C1/B9D6: 91 76 STA ($76),Y C1/B9D8: 8A TXA C1/B9D9: C8 INY C1/B9DA: 91 76 STA ($76),Y C1/B9DC: 4C CD BE JMP $BECD ; fight command C1/B9DF: 29 0F AND #$0F C1/B9E1: 18 CLC C1/B9E2: 69 14 ADC #$14 C1/B9E4: 20 E1 BB JSR $BBE1 ; C1/B9E7: 60 RTS ; [ Attack Command $0D: Sketch ] C1/B9E8: EE BB EC INC $ECBB C1/B9EB: 20 35 BC JSR $BC35 C1/B9EE: A9 25 LDA #$25 C1/B9F0: 20 90 B8 JSR $B890 C1/B9F3: 20 6B B8 JSR $B86B C1/B9F6: 60 RTS ; [ Attack Command $16: Jump ] C1/B9F7: B2 78 LDA ($78) ; dragon horn effect C1/B9F9: 29 02 AND #$02 C1/B9FB: 8D 10 EC STA $EC10 C1/B9FE: 20 A2 9A JSR $9AA2 ; C1/BA01: B2 78 LDA ($78) C1/BA03: 10 13 BPL $BA18 ; branch if attacker is a character ; monster attacker C1/BA05: A0 04 00 LDY #$0004 C1/BA08: B1 78 LDA ($78),Y ; targets hit C1/BA0A: C8 INY C1/BA0B: 11 78 ORA ($78),Y C1/BA0D: D0 04 BNE $BA13 ; branch if something was hit C1/BA0F: A9 0B LDA #$0B C1/BA11: 80 02 BRA $BA15 C1/BA13: A9 09 LDA #$09 C1/BA15: 4C E1 BB JMP $BBE1 ; character attacker C1/BA18: A0 02 00 LDY #$0002 C1/BA1B: B1 78 LDA ($78),Y ; targets C1/BA1D: C8 INY C1/BA1E: 11 78 ORA ($78),Y C1/BA20: D0 05 BNE $BA27 ; branch if there are targets C1/BA22: A9 0A LDA #$0A C1/BA24: 4C E1 BB JMP $BBE1 C1/BA27: A0 01 00 LDY #$0001 C1/BA2A: B1 78 LDA ($78),Y ; attacker C1/BA2C: AA TAX C1/BA2D: BF 67 4B C1 LDA $C14B67,X ; pointer to character equipped weapon data C1/BA31: AA TAX C1/BA32: BD 87 2B LDA $2B87,X ; branch if right-hand item can be used with jump C1/BA35: 29 10 AND #$10 C1/BA37: D0 11 BNE $BA4A C1/BA39: BD 9B 2B LDA $2B9B,X ; branch if left-hand item can be used with jump C1/BA3C: 29 10 AND #$10 C1/BA3E: D0 04 BNE $BA44 C1/BA40: A9 FF LDA #$FF C1/BA42: 80 0A BRA $BA4E C1/BA44: BD 9A 2B LDA $2B9A,X ; left-hand item C1/BA47: 1A INC C1/BA48: 80 04 BRA $BA4E C1/BA4A: BD 86 2B LDA $2B86,X ; right-hand item C1/BA4D: 1A INC C1/BA4E: AA TAX C1/BA4F: BF 40 00 D1 LDA $D10040,X ; item jump animation C1/BA53: 29 7F AND #$7F C1/BA55: 4A LSR C1/BA56: 4A LSR C1/BA57: 4A LSR C1/BA58: 4A LSR C1/BA59: 18 CLC C1/BA5A: 69 2B ADC #$2B C1/BA5C: 4C E1 BB JMP $BBE1 ; [ Attack Command $24: Throw (UMARO) ] C1/BA5F: 20 35 BC JSR $BC35 C1/BA62: 20 41 B9 JSR $B941 ; check targets C1/BA65: B0 1C BCS $BA83 C1/BA67: 7B TDC C1/BA68: AA TAX C1/BA69: A8 TAY C1/BA6A: BD C6 2E LDA $2EC6,X C1/BA6D: C9 0D CMP #$0D C1/BA6F: F0 0C BEQ $BA7D C1/BA71: C8 INY C1/BA72: 8A TXA C1/BA73: 18 CLC C1/BA74: 69 20 ADC #$20 C1/BA76: AA TAX C1/BA77: E0 80 00 CPX #$0080 C1/BA7A: D0 EE BNE $BA6A C1/BA7C: 60 RTS C1/BA7D: 98 TYA C1/BA7E: A0 01 00 LDY #$0001 C1/BA81: 91 78 STA ($78),Y C1/BA83: 20 F7 BB JSR $BBF7 C1/BA86: 90 05 BCC $BA8D C1/BA88: A9 36 LDA #$36 C1/BA8A: 4C A4 B8 JMP $B8A4 C1/BA8D: 60 RTS ; [ Attack Command $23: Tackle (UMARO) ] C1/BA8E: 20 35 BC JSR $BC35 C1/BA91: 20 F7 BB JSR $BBF7 C1/BA94: 90 05 BCC $BA9B C1/BA96: A9 35 LDA #$35 C1/BA98: 20 E1 BB JSR $BBE1 C1/BA9B: 60 RTS ; [ Attack Command $1C: Possess ] C1/BA9C: 20 F7 BB JSR $BBF7 C1/BA9F: 90 08 BCC $BAA9 C1/BAA1: A9 34 LDA #$34 C1/BAA3: 20 90 B8 JSR $B890 C1/BAA6: 20 6B B8 JSR $B86B C1/BAA9: 60 RTS ; [ Attack Command $0B: Runic ] C1/BAAA: 20 35 BC JSR $BC35 C1/BAAD: B2 78 LDA ($78) C1/BAAF: 30 05 BMI $BAB6 C1/BAB1: A9 05 LDA #$05 C1/BAB3: 20 E1 BB JSR $BBE1 C1/BAB6: 60 RTS ; [ Attack Command $25: Display Long Battle Dialog ] C1/BAB7: 20 35 BC JSR $BC35 C1/BABA: B2 78 LDA ($78) C1/BABC: 29 40 AND #$40 C1/BABE: D0 05 BNE $BAC5 C1/BAC0: A9 37 LDA #$37 C1/BAC2: 20 E1 BB JSR $BBE1 C1/BAC5: 60 RTS ; [ ] land_nor_chg_long: C1/BAC6: 20 CA BA JSR $BACA C1/BAC9: 6B RTL land_nor_chg: C1/BACA: 48 PHA C1/BACB: 20 E5 94 JSR $94E5 C1/BACE: A9 00 LDA #$00 C1/BAD0: 48 PHA C1/BAD1: 85 14 STA $14 C1/BAD3: 85 16 STA $16 C1/BAD5: 85 18 STA $18 C1/BAD7: 20 E0 EB JSR $EBE0 C1/BADA: 20 2A 02 JSR $022A ; wait for vblank C1/BADD: 68 PLA C1/BADE: 1A INC C1/BADF: 1A INC C1/BAE0: C9 20 CMP #$20 C1/BAE2: D0 EC BNE $BAD0 C1/BAE4: 68 PLA C1/BAE5: 48 PHA C1/BAE6: 20 DC 1B JSR $1BDC C1/BAE9: 68 PLA C1/BAEA: 8D B8 EC STA $ECB8 C1/BAED: 7B TDC C1/BAEE: AA TAX C1/BAEF: 8E B0 64 STX $64B0 C1/BAF2: 8E B2 64 STX $64B2 C1/BAF5: A9 1E LDA #$1E C1/BAF7: 48 PHA C1/BAF8: 85 14 STA $14 C1/BAFA: 85 16 STA $16 C1/BAFC: 85 18 STA $18 C1/BAFE: 20 E0 EB JSR $EBE0 C1/BB01: 20 2A 02 JSR $022A ; wait for vblank C1/BB04: 68 PLA C1/BB05: 3A DEC C1/BB06: 3A DEC C1/BB07: D0 EE BNE $BAF7 C1/BB09: 60 RTS ; [ Attack Command $20: Battle Change ] C1/BB0A: 20 35 BC JSR $BC35 C1/BB0D: A9 38 LDA #$38 C1/BB0F: 4C E1 BB JMP $BBE1 ; [ Attack Command $13: Dance ] C1/BB12: 20 35 BC JSR $BC35 C1/BB15: AD B8 EC LDA $ECB8 ; battle bg index C1/BB18: AA TAX C1/BB19: BF 62 E4 C2 LDA $C2E462,X C1/BB1D: D0 0C BNE $BB2B C1/BB1F: A0 03 00 LDY #$0003 C1/BB22: B1 76 LDA ($76),Y C1/BB24: C9 FF CMP #$FF C1/BB26: F0 03 BEQ $BB2B C1/BB28: 20 CA BA JSR $BACA ; fall through ; [ Attack Command $10: Rage ] C1/BB2B: EE BB EC INC $ECBB C1/BB2E: 20 35 BC JSR $BC35 C1/BB31: B2 78 LDA ($78) C1/BB33: 29 10 AND #$10 C1/BB35: D0 09 BNE $BB40 C1/BB37: B2 78 LDA ($78) C1/BB39: 30 05 BMI $BB40 C1/BB3B: A9 06 LDA #$06 C1/BB3D: 20 E1 BB JSR $BBE1 C1/BB40: 20 41 B9 JSR $B941 C1/BB43: 90 03 BCC $BB48 C1/BB45: 20 EB AB JSR $ABEB C1/BB48: 60 RTS ; [ Attack Command $1B: Shock ] C1/BB49: 20 F7 BB JSR $BBF7 C1/BB4C: 90 05 BCC $BB53 C1/BB4E: A9 07 LDA #$07 C1/BB50: 20 E1 BB JSR $BBE1 C1/BB53: 60 RTS ; [ Attack Command $0E: Control ] C1/BB54: 20 F7 BB JSR $BBF7 C1/BB57: 90 08 BCC $BB61 C1/BB59: A9 39 LDA #$39 C1/BB5B: 20 90 B8 JSR $B890 C1/BB5E: 20 6B B8 JSR $B86B C1/BB61: 60 RTS ; [ Attack Command $1A: Health ] C1/BB62: 20 F7 BB JSR $BBF7 C1/BB65: 90 0E BCC $BB75 C1/BB67: 20 35 BC JSR $BC35 C1/BB6A: A2 6C 0F LDX #$0F6C ; pointer to animation data $011A (walk forward with arms up) C1/BB6D: 20 F5 B7 JSR $B7F5 ; execute single thread animation C1/BB70: A9 27 LDA #$27 C1/BB72: 20 E1 BB JSR $BBE1 C1/BB75: 60 RTS ; [ Attack Command $11: Leap ] C1/BB76: 20 35 BC JSR $BC35 C1/BB79: 20 F7 BB JSR $BBF7 C1/BB7C: 90 08 BCC $BB86 C1/BB7E: A9 26 LDA #$26 C1/BB80: 20 90 B8 JSR $B890 C1/BB83: 20 6B B8 JSR $B86B C1/BB86: 60 RTS ; [ Attack Command $05: Steal ] C1/BB87: 20 35 BC JSR $BC35 C1/BB8A: B2 78 LDA ($78) C1/BB8C: 30 0D BMI $BB9B C1/BB8E: 20 F7 BB JSR $BBF7 C1/BB91: 90 08 BCC $BB9B C1/BB93: A9 02 LDA #$02 C1/BB95: 20 A4 B8 JSR $B8A4 C1/BB98: 4C 35 BC JMP $BC35 C1/BB9B: 20 35 BC JSR $BC35 C1/BB9E: A2 26 16 LDX #$1626 C1/BBA1: 20 F5 B7 JSR $B7F5 ; execute single thread animation C1/BBA4: 60 RTS ; [ Attack Command $06: Capture ] C1/BBA5: 20 35 BC JSR $BC35 ; C1/BBA8: B2 78 LDA ($78) ; attacker C1/BBAA: 30 2F BMI $BBDB ; return if a monster C1/BBAC: 20 F7 BB JSR $BBF7 C1/BBAF: 90 2A BCC $BBDB C1/BBB1: 20 89 BC JSR $BC89 ; get attacker number C1/BBB4: A5 10 LDA $10 C1/BBB6: 29 03 AND #$03 C1/BBB8: AA TAX C1/BBB9: DA PHX C1/BBBA: AD A4 62 LDA $62A4 C1/BBBD: D0 03 BNE $BBC2 C1/BBBF: FE AE 61 INC $61AE,X C1/BBC2: A9 0E LDA #$0E C1/BBC4: 20 A4 B8 JSR $B8A4 ; execute command animation C1/BBC7: 20 CD BE JSR $BECD ; fight command C1/BBCA: A9 0F LDA #$0F C1/BBCC: 20 A4 B8 JSR $B8A4 ; execute command animation C1/BBCF: FA PLX C1/BBD0: AD A4 62 LDA $62A4 C1/BBD3: D0 03 BNE $BBD8 C1/BBD5: 9E AE 61 STZ $61AE,X C1/BBD8: 20 35 BC JSR $BC35 C1/BBDB: 60 RTS ; [ Attack Command $04: Revert ] C1/BBDC: 20 35 BC JSR $BC35 C1/BBDF: A9 01 LDA #$01 C1/BBE1: 20 A4 B8 JSR $B8A4 C1/BBE4: 4C 6B B8 JMP $B86B ; [ Attack Command $03: Morph ] C1/BBE7: 20 35 BC JSR $BC35 C1/BBEA: 7B TDC C1/BBEB: 80 F4 BRA $BBE1 ; [ Attack Command $18: GP Rain ] C1/BBED: 20 F7 BB JSR $BBF7 C1/BBF0: 90 04 BCC $BBF6 C1/BBF2: A9 24 LDA #$24 C1/BBF4: 80 EB BRA $BBE1 C1/BBF6: 60 RTS ; [ ] error_anim_set: C1/BBF7: 20 41 B9 JSR $B941 C1/BBFA: B0 15 BCS $BC11 C1/BBFC: 20 35 BC JSR $BC35 C1/BBFF: B2 78 LDA ($78) C1/BC01: 30 0E BMI $BC11 C1/BC03: A2 6C 0F LDX #$0F6C ; pointer to animation data $011A (walk forward with arms up) C1/BC06: 20 F5 B7 JSR $B7F5 ; execute single thread animation C1/BC09: 20 6B B8 JSR $B86B C1/BC0C: 20 03 95 JSR $9503 ; restore monster sprite data C1/BC0F: 18 CLC C1/BC10: 60 RTS C1/BC11: 38 SEC C1/BC12: 60 RTS ; [ Attack Command $09: Tools ] C1/BC13: 20 35 BC JSR $BC35 C1/BC16: 20 F7 BB JSR $BBF7 C1/BC19: 90 19 BCC $BC34 C1/BC1B: 20 35 BC JSR $BC35 C1/BC1E: A2 F0 11 LDX #$11F0 C1/BC21: 86 1E STX $1E C1/BC23: A0 02 00 LDY #$0002 C1/BC26: B1 76 LDA ($76),Y C1/BC28: 20 B3 9C JSR $9CB3 ; init battle animation data C1/BC2B: 20 5B AC JSR $AC5B ; execute battle animation C1/BC2E: 20 03 95 JSR $9503 ; restore monster sprite data C1/BC31: 20 6B B8 JSR $B86B C1/BC34: 60 RTS ; [ ] init_command: C1/BC35: 20 F4 94 JSR $94F4 ; save monster sprite data C1/BC38: 20 67 AB JSR $AB67 C1/BC3B: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/BC3E: 4C A2 9A JMP $9AA2 ; [ Attack Command $01: Item ] C1/BC41: 20 35 BC JSR $BC35 C1/BC44: B2 78 LDA ($78) C1/BC46: 30 09 BMI $BC51 C1/BC48: A2 6C 0F LDX #$0F6C ; pointer to animation data $011A (walk forward with arms up) C1/BC4B: 20 F5 B7 JSR $B7F5 ; execute single thread animation C1/BC4E: 20 6B B8 JSR $B86B C1/BC51: 20 41 B9 JSR $B941 C1/BC54: 90 2F BCC $BC85 C1/BC56: A0 02 00 LDY #$0002 C1/BC59: B1 76 LDA ($76),Y ; item number C1/BC5B: C9 E0 CMP #$E0 C1/BC5D: 90 05 BCC $BC64 ; branch if not a usable item C1/BC5F: 38 SEC C1/BC60: E9 E0 SBC #$E0 C1/BC62: 80 02 BRA $BC66 C1/BC64: A9 E0 LDA #$E0 C1/BC66: C2 20 REP #$20 C1/BC68: 0A ASL C1/BC69: AA TAX C1/BC6A: BF 00 00 D1 LDA $D10000,X ; pointer to battle animation data (+$D07FB2) C1/BC6E: AA TAX C1/BC6F: 7B TDC C1/BC70: E2 20 SEP #$20 C1/BC72: E0 FF FF CPX #$FFFF ; branch if no animation C1/BC75: F0 0E BEQ $BC85 C1/BC77: DA PHX C1/BC78: 20 43 AB JSR $AB43 ; init single thread animation C1/BC7B: FA PLX C1/BC7C: 86 1E STX $1E C1/BC7E: 7B TDC C1/BC7F: 20 B3 9C JSR $9CB3 ; init battle animation data C1/BC82: 20 5B AC JSR $AC5B ; execute battle animation C1/BC85: 4C 03 95 JMP $9503 ; restore monster sprite data ; [ Attack Command $12$15/$1E/$1F: Mimic/Def./AI/Random Attack ] C1/BC88: 60 RTS ; [ Get Attacker Number ] ; A = attacker number (out) ; +$10 = attacker number (out) ; MSB = ??? (out) get_caster: C1/BC89: AD D0 62 LDA $62D0 C1/BC8C: F0 05 BEQ $BC93 C1/BC8E: 20 AD AA JSR $AAAD C1/BC91: 80 0E BRA $BCA1 C1/BC93: A2 6E 2C LDX #$2C6E C1/BC96: 86 10 STX $10 C1/BC98: A0 01 00 LDY #$0001 C1/BC9B: B2 10 LDA ($10) C1/BC9D: 29 80 AND #$80 C1/BC9F: 11 10 ORA ($10),Y C1/BCA1: 85 10 STA $10 C1/BCA3: 64 11 STZ $11 C1/BCA5: 60 RTS ; [ Get Target Number ] ; $12 = target number (out) ; MSB = 0 for character, 1 for monster get_target: C1/BCA6: AD 3E 61 LDA $613E ; branch if there are no monster targets C1/BCA9: F0 0B BEQ $BCB6 C1/BCAB: 20 0F 1A JSR $1A0F ; get bit number C1/BCAE: 18 CLC C1/BCAF: 69 04 ADC #$04 C1/BCB1: 09 80 ORA #$80 C1/BCB3: 85 12 STA $12 C1/BCB5: 60 RTS C1/BCB6: AD 3D 61 LDA $613D ; character targets C1/BCB9: 20 0F 1A JSR $1A0F ; get bit number C1/BCBC: 85 12 STA $12 C1/BCBE: 60 RTS ; [ Save Character/Monster Positions ] attack_poi_push: C1/BCBF: 7B TDC C1/BCC0: AA TAX C1/BCC1: A8 TAY C1/BCC2: C2 20 REP #$20 C1/BCC4: BD B7 61 LDA $61B7,X ; save character positions C1/BCC7: 99 3B 81 STA $813B,Y C1/BCCA: BD B9 61 LDA $61B9,X C1/BCCD: 99 3D 81 STA $813D,Y C1/BCD0: C8 INY C1/BCD1: C8 INY C1/BCD2: C8 INY C1/BCD3: C8 INY C1/BCD4: 8A TXA C1/BCD5: 18 CLC C1/BCD6: 69 20 00 ADC #$0020 C1/BCD9: AA TAX C1/BCDA: E0 80 00 CPX #$0080 C1/BCDD: D0 E5 BNE $BCC4 C1/BCDF: 7B TDC C1/BCE0: AA TAX C1/BCE1: BD C3 80 LDA $80C3,X ; save monster positions C1/BCE4: 99 3B 81 STA $813B,Y C1/BCE7: BD CF 80 LDA $80CF,X C1/BCEA: 99 3D 81 STA $813D,Y C1/BCED: C8 INY C1/BCEE: C8 INY C1/BCEF: C8 INY C1/BCF0: C8 INY C1/BCF1: E8 INX C1/BCF2: E8 INX C1/BCF3: E0 0C 00 CPX #$000C C1/BCF6: D0 E9 BNE $BCE1 C1/BCF8: 7B TDC C1/BCF9: AA TAX C1/BCFA: BD 0F 80 LDA $800F,X ; save center/bottom positions C1/BCFD: 9D 6B 81 STA $816B,X C1/BD00: E8 INX C1/BD01: E8 INX C1/BD02: E0 3C 00 CPX #$003C C1/BD05: D0 F3 BNE $BCFA C1/BD07: 7B TDC C1/BD08: E2 20 SEP #$20 C1/BD0A: 60 RTS ; [ Restore Character/Monster Positions ] attack_poi_pull: C1/BD0B: 7B TDC C1/BD0C: AA TAX C1/BD0D: A8 TAY C1/BD0E: C2 20 REP #$20 C1/BD10: B9 3B 81 LDA $813B,Y C1/BD13: 9D B7 61 STA $61B7,X C1/BD16: B9 3D 81 LDA $813D,Y C1/BD19: 9D B9 61 STA $61B9,X C1/BD1C: C8 INY C1/BD1D: C8 INY C1/BD1E: C8 INY C1/BD1F: C8 INY C1/BD20: 8A TXA C1/BD21: 18 CLC C1/BD22: 69 20 00 ADC #$0020 C1/BD25: AA TAX C1/BD26: E0 80 00 CPX #$0080 C1/BD29: D0 E5 BNE $BD10 C1/BD2B: 7B TDC C1/BD2C: AA TAX C1/BD2D: B9 3B 81 LDA $813B,Y C1/BD30: 9D C3 80 STA $80C3,X C1/BD33: B9 3D 81 LDA $813D,Y C1/BD36: 9D CF 80 STA $80CF,X C1/BD39: C8 INY C1/BD3A: C8 INY C1/BD3B: C8 INY C1/BD3C: C8 INY C1/BD3D: E8 INX C1/BD3E: E8 INX C1/BD3F: E0 0C 00 CPX #$000C C1/BD42: D0 E9 BNE $BD2D C1/BD44: 7B TDC C1/BD45: AA TAX C1/BD46: BD 6B 81 LDA $816B,X C1/BD49: 9D 0F 80 STA $800F,X C1/BD4C: E8 INX C1/BD4D: E8 INX C1/BD4E: E0 3C 00 CPX #$003C C1/BD51: D0 F3 BNE $BD46 C1/BD53: 7B TDC C1/BD54: E2 20 SEP #$20 C1/BD56: 20 7C 95 JSR $957C ; update character/monster order priority C1/BD59: 60 RTS ; [ ] set_defend: C1/BD5A: A0 08 00 LDY #$0008 C1/BD5D: B1 78 LDA ($78),Y ; C1/BD5F: C9 04 CMP #$04 C1/BD61: B0 37 BCS $BD9A ; branch if a monster ; character C1/BD63: A8 TAY C1/BD64: 0A ASL C1/BD65: AA TAX C1/BD66: DA PHX C1/BD67: 0A ASL C1/BD68: 0A ASL C1/BD69: 0A ASL C1/BD6A: 0A ASL C1/BD6B: AA TAX C1/BD6C: C2 20 REP #$20 C1/BD6E: BD B7 61 LDA $61B7,X C1/BD71: 85 14 STA $14 C1/BD73: BD B9 61 LDA $61B9,X C1/BD76: 85 16 STA $16 C1/BD78: FA PLX C1/BD79: BD 33 80 LDA $8033,X C1/BD7C: 85 24 STA $24 C1/BD7E: BD 3B 80 LDA $803B,X C1/BD81: 85 26 STA $26 C1/BD83: BD 43 80 LDA $8043,X C1/BD86: 85 28 STA $28 C1/BD88: 7B TDC C1/BD89: E2 20 SEP #$20 C1/BD8B: B9 10 7B LDA $7B10,Y C1/BD8E: F0 05 BEQ $BD95 C1/BD90: A2 0C 00 LDX #$000C C1/BD93: 80 3C BRA $BDD1 C1/BD95: A2 00 00 LDX #$0000 C1/BD98: 80 37 BRA $BDD1 ; monster C1/BD9A: 29 7F AND #$7F C1/BD9C: 38 SEC C1/BD9D: E9 04 SBC #$04 C1/BD9F: 0A ASL C1/BDA0: AA TAX C1/BDA1: C2 20 REP #$20 C1/BDA3: BD 0F 80 LDA $800F,X C1/BDA6: 85 14 STA $14 C1/BDA8: BD 27 80 LDA $8027,X C1/BDAB: 85 16 STA $16 C1/BDAD: BD 0F 80 LDA $800F,X C1/BDB0: 85 24 STA $24 C1/BDB2: BD 1B 80 LDA $801B,X C1/BDB5: 85 26 STA $26 C1/BDB7: BD 27 80 LDA $8027,X C1/BDBA: 85 28 STA $28 C1/BDBC: 7B TDC C1/BDBD: E2 20 SEP #$20 C1/BDBF: BD F3 80 LDA $80F3,X C1/BDC2: 5D 7E 61 EOR $617E,X C1/BDC5: 29 01 AND #$01 C1/BDC7: D0 05 BNE $BDCE C1/BDC9: A2 0C 00 LDX #$000C C1/BDCC: 80 03 BRA $BDD1 C1/BDCE: A2 00 00 LDX #$0000 C1/BDD1: DA PHX C1/BDD2: 86 22 STX $22 C1/BDD4: A0 06 00 LDY #$0006 C1/BDD7: B1 78 LDA ($78),Y C1/BDD9: 85 18 STA $18 C1/BDDB: 64 1A STZ $1A C1/BDDD: 46 18 LSR $18 C1/BDDF: 90 52 BCC $BE33 C1/BDE1: A5 22 LDA $22 C1/BDE3: AA TAX C1/BDE4: C2 20 REP #$20 C1/BDE6: BF A1 BE C1 LDA $C1BEA1,X C1/BDEA: 85 10 STA $10 C1/BDEC: BF A3 BE C1 LDA $C1BEA3,X C1/BDF0: 85 12 STA $12 C1/BDF2: A5 22 LDA $22 C1/BDF4: 18 CLC C1/BDF5: 69 04 00 ADC #$0004 C1/BDF8: 85 22 STA $22 C1/BDFA: 7B TDC C1/BDFB: E2 20 SEP #$20 C1/BDFD: A5 1A LDA $1A C1/BDFF: 0A ASL C1/BE00: A8 TAY C1/BE01: 0A ASL C1/BE02: 0A ASL C1/BE03: 0A ASL C1/BE04: 0A ASL C1/BE05: AA TAX C1/BE06: C2 20 REP #$20 C1/BE08: A5 14 LDA $14 C1/BE0A: 18 CLC C1/BE0B: 65 10 ADC $10 C1/BE0D: 9D B7 61 STA $61B7,X C1/BE10: A5 16 LDA $16 C1/BE12: 18 CLC C1/BE13: 65 12 ADC $12 C1/BE15: 9D B9 61 STA $61B9,X C1/BE18: A5 24 LDA $24 C1/BE1A: 18 CLC C1/BE1B: 65 10 ADC $10 C1/BE1D: 99 33 80 STA $8033,Y C1/BE20: A5 26 LDA $26 C1/BE22: 18 CLC C1/BE23: 65 12 ADC $12 C1/BE25: 99 3B 80 STA $803B,Y C1/BE28: A5 28 LDA $28 C1/BE2A: 18 CLC C1/BE2B: 65 12 ADC $12 C1/BE2D: 99 43 80 STA $8043,Y C1/BE30: 7B TDC C1/BE31: E2 20 SEP #$20 C1/BE33: E6 1A INC $1A C1/BE35: A5 1A LDA $1A C1/BE37: C9 04 CMP #$04 C1/BE39: D0 A2 BNE $BDDD C1/BE3B: FA PLX C1/BE3C: 86 22 STX $22 C1/BE3E: A0 07 00 LDY #$0007 C1/BE41: B1 78 LDA ($78),Y C1/BE43: 85 18 STA $18 C1/BE45: 64 1A STZ $1A C1/BE47: 46 18 LSR $18 C1/BE49: 90 4D BCC $BE98 C1/BE4B: A5 22 LDA $22 C1/BE4D: AA TAX C1/BE4E: C2 20 REP #$20 C1/BE50: BF A1 BE C1 LDA $C1BEA1,X C1/BE54: 85 10 STA $10 C1/BE56: BF A3 BE C1 LDA $C1BEA3,X C1/BE5A: 85 12 STA $12 C1/BE5C: A5 22 LDA $22 C1/BE5E: 18 CLC C1/BE5F: 69 04 00 ADC #$0004 C1/BE62: 85 22 STA $22 C1/BE64: 7B TDC C1/BE65: E2 20 SEP #$20 C1/BE67: A5 1A LDA $1A C1/BE69: 0A ASL C1/BE6A: AA TAX C1/BE6B: C2 20 REP #$20 C1/BE6D: A5 14 LDA $14 C1/BE6F: 18 CLC C1/BE70: 65 10 ADC $10 C1/BE72: 9D C3 80 STA $80C3,X C1/BE75: A5 16 LDA $16 C1/BE77: 18 CLC C1/BE78: 65 12 ADC $12 C1/BE7A: 9D CF 80 STA $80CF,X C1/BE7D: A5 24 LDA $24 C1/BE7F: 18 CLC C1/BE80: 65 10 ADC $10 C1/BE82: 9D 0F 80 STA $800F,X C1/BE85: A5 26 LDA $26 C1/BE87: 18 CLC C1/BE88: 65 12 ADC $12 C1/BE8A: 9D 1B 80 STA $801B,X C1/BE8D: A5 28 LDA $28 C1/BE8F: 18 CLC C1/BE90: 65 12 ADC $12 C1/BE92: 9D 27 80 STA $8027,X C1/BE95: 7B TDC C1/BE96: E2 20 SEP #$20 C1/BE98: E6 1A INC $1A C1/BE9A: A5 1A LDA $1A C1/BE9C: C9 06 CMP #$06 C1/BE9E: D0 A7 BNE $BE47 C1/BEA0: 60 RTS def_offset_tbl: C1/BEA1: .DW $FFF0, $0000, $FFF8, $0008, $FFF8, $FFF8, $0010, $0000 C1/BEB1: .DW $0008, $0008, $0008, $FFF8 ; [ Load Block Sound Effect and Palette ] def_sp_color_set: C1/BEB9: DA PHX C1/BEBA: 48 PHA C1/BEBB: AA TAX C1/BEBC: BF 59 B7 C1 LDA $C1B759,X ; block sound effect C1/BEC0: 8D E7 E9 STA $E9E7 C1/BEC3: BF 52 B7 C1 LDA $C1B752,X ; block palette C1/BEC7: 20 10 9C JSR $9C10 ; load block palette C1/BECA: 68 PLA C1/BECB: FA PLX C1/BECC: 60 RTS ; [ Attack Command $00: Fight ] anim_command_attack: C1/BECD: B2 78 LDA ($78) ; monster weapon attack C1/BECF: 29 01 AND #$01 C1/BED1: 8D 8A 61 STA $618A ; monster attack flag C1/BED4: 8D BB EC STA $ECBB C1/BED7: 20 F4 94 JSR $94F4 ; save monster sprite data C1/BEDA: 20 67 AB JSR $AB67 ; set animation targets C1/BEDD: 20 A2 9A JSR $9AA2 ; C1/BEE0: B2 78 LDA ($78) ; flash screen (critical) C1/BEE2: 29 20 AND #$20 C1/BEE4: 8D 96 61 STA $6196 C1/BEE7: A2 00 04 LDX #$0400 ; size = $0400 C1/BEEA: 86 10 STX $10 C1/BEEC: A2 00 B4 LDX #$B400 ; source = $7FB400 (blocking graphics) C1/BEEF: A9 7F LDA #$7F C1/BEF1: A0 00 24 LDY #$2400 ; destination = $2400 (battle animation sprite graphics) C1/BEF4: 20 8D 19 JSR $198D ; init large data DMA to VRAM C1/BEF7: AD 8A 61 LDA $618A ; branch if monster attack C1/BEFA: D0 03 BNE $BEFF C1/BEFC: 20 6B B8 JSR $B86B ; C1/BEFF: A0 02 00 LDY #$0002 C1/BF02: B1 76 LDA ($76),Y ; left-hand weapon flag C1/BF04: 29 80 AND #$80 C1/BF06: 8D F4 7A STA $7AF4 C1/BF09: C8 INY C1/BF0A: B1 76 LDA ($76),Y ; weapon animation number C1/BF0C: 8D F5 7A STA $7AF5 C1/BF0F: 20 89 BC JSR $BC89 ; get attacker number C1/BF12: AD F5 7A LDA $7AF5 C1/BF15: 20 95 9D JSR $9D95 ; init fight animation data C1/BF18: AD 71 62 LDA $6271 ; weapon sound effect C1/BF1B: 8D E7 E9 STA $E9E7 ; default animation sound effect C1/BF1E: 20 BF BC JSR $BCBF ; save character/monster positions C1/BF21: 20 5A BD JSR $BD5A ; C1/BF24: 20 89 BC JSR $BC89 ; get attacker number C1/BF27: 20 A6 BC JSR $BCA6 ; get target number C1/BF2A: A5 10 LDA $10 C1/BF2C: 29 7F AND #$7F ; attacker C1/BF2E: 0A ASL C1/BF2F: AA TAX C1/BF30: C2 20 REP #$20 C1/BF32: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/BF36: AA TAX C1/BF37: 7B TDC C1/BF38: E2 20 SEP #$20 C1/BF3A: AD 2D 7B LDA $7B2D ; weapon graphics frame width C1/BF3D: 9D 2F 6A STA $6A2F,X ; animation thread frame width C1/BF40: AD 2E 7B LDA $7B2E ; weapon graphics frame height C1/BF43: 9D 30 6A STA $6A30,X ; animation thread frame height C1/BF46: A9 06 LDA #$06 C1/BF48: 9D D5 74 STA $74D5,X ; palette 3 C1/BF4B: A5 10 LDA $10 C1/BF4D: 29 03 AND #$03 ; attacker C1/BF4F: A8 TAY C1/BF50: AD F4 7A LDA $7AF4 ; left-hand flag C1/BF53: 0A ASL C1/BF54: 2A ROL C1/BF55: 29 01 AND #$01 C1/BF57: 59 10 7B EOR $7B10,Y ; attacker facing direction (characters only) C1/BF5A: 29 01 AND #$01 C1/BF5C: A8 TAY C1/BF5D: A5 10 LDA $10 ; branch if attacker is a character C1/BF5F: 10 04 BPL $BF65 C1/BF61: A9 62 LDA #$62 ; use script $62 for monsters C1/BF63: 80 03 BRA $BF68 C1/BF65: B9 6B 62 LDA $626B,Y ; weapon animation script C1/BF68: C2 20 REP #$20 C1/BF6A: 0A ASL C1/BF6B: DA PHX C1/BF6C: AA TAX C1/BF6D: BF D8 EA D1 LDA $D1EAD8,X ; ++$22 = pointer to animation script (weapon) C1/BF71: FA PLX C1/BF72: 85 22 STA $22 C1/BF74: 1A INC C1/BF75: 1A INC C1/BF76: 9D 31 6A STA $6A31,X C1/BF79: 7B TDC C1/BF7A: E2 20 SEP #$20 C1/BF7C: A9 D0 LDA #$D0 C1/BF7E: 85 24 STA $24 C1/BF80: 9D 33 6A STA $6A33,X C1/BF83: A7 22 LDA [$22] ; animation speed C1/BF85: 4A LSR C1/BF86: 4A LSR C1/BF87: 4A LSR C1/BF88: 4A LSR C1/BF89: 1A INC C1/BF8A: 9D 34 6A STA $6A34,X C1/BF8D: 9E E7 64 STZ $64E7,X ; clear sprite layer priority C1/BF90: A9 01 LDA #$01 C1/BF92: 9D 35 6A STA $6A35,X ; thread frame counter C1/BF95: 9E 36 6A STZ $6A36,X ; thread index C1/BF98: A5 10 LDA $10 C1/BF9A: 10 11 BPL $BFAD ; branch if attacker is a character C1/BF9C: 29 0F AND #$0F C1/BF9E: 38 SEC C1/BF9F: E9 04 SBC #$04 C1/BFA1: 0A ASL C1/BFA2: A8 TAY C1/BFA3: B9 F3 80 LDA $80F3,Y C1/BFA6: 59 7E 61 EOR $617E,Y C1/BFA9: 49 01 EOR #$01 C1/BFAB: 80 04 BRA $BFB1 C1/BFAD: A8 TAY C1/BFAE: B9 10 7B LDA $7B10,Y C1/BFB1: 0A ASL C1/BFB2: 0A ASL C1/BFB3: 0A ASL C1/BFB4: 0A ASL C1/BFB5: 0A ASL C1/BFB6: 0A ASL C1/BFB7: 29 40 AND #$40 C1/BFB9: 9D 87 6F STA $6F87,X ; h flip C1/BFBC: DA PHX C1/BFBD: AD F4 7A LDA $7AF4 ; left-hand flag C1/BFC0: 0A ASL C1/BFC1: 2A ROL C1/BFC2: 29 01 AND #$01 C1/BFC4: 9D 88 6F STA $6F88,X ; C1/BFC7: 9E 8C 6F STZ $6F8C,X ; frame offset C1/BFCA: 9E D8 74 STZ $74D8,X ; C1/BFCD: A9 01 LDA #$01 C1/BFCF: 9D 8D 6F STA $6F8D,X ; frame offset counter C1/BFD2: A9 60 LDA #$60 C1/BFD4: 9D 37 6A STA $6A37,X ; sprite tile number C1/BFD7: A5 10 LDA $10 C1/BFD9: 9D 38 6A STA $6A38,X ; attacker C1/BFDC: A5 12 LDA $12 C1/BFDE: 9D 39 6A STA $6A39,X ; target C1/BFE1: 20 99 C4 JSR $C499 ; calculate attacker position C1/BFE4: C2 20 REP #$20 C1/BFE6: A5 14 LDA $14 ; x position C1/BFE8: 9D 7E 6F STA $6F7E,X C1/BFEB: 9D 3A 6A STA $6A3A,X C1/BFEE: A5 16 LDA $16 ; y position C1/BFF0: 9D 80 6F STA $6F80,X C1/BFF3: 9D 3C 6A STA $6A3C,X C1/BFF6: 9E CE 74 STZ $74CE,X ; clear xy offset C1/BFF9: 9E D0 74 STZ $74D0,X C1/BFFC: 7B TDC C1/BFFD: E2 20 SEP #$20 C1/BFFF: 20 8E C4 JSR $C48E ; calculate target position C1/C002: C2 20 REP #$20 C1/C004: A5 14 LDA $14 ; x position C1/C006: 9D 82 6F STA $6F82,X C1/C009: A5 16 LDA $16 ; y position C1/C00B: 9D 84 6F STA $6F84,X C1/C00E: 7B TDC C1/C00F: E2 20 SEP #$20 C1/C011: A9 01 LDA #$01 C1/C013: 9D 2E 6A STA $6A2E,X ; thread is active C1/C016: A5 10 LDA $10 C1/C018: 30 05 BMI $C01F ; branch if ??? C1/C01A: A9 30 LDA #$30 C1/C01C: 9D 86 6F STA $6F86,X ; make animation sprite high priority C1/C01F: A5 12 LDA $12 C1/C021: 30 39 BMI $C05C ; branch if target is a monster ??? C1/C023: 18 CLC C1/C024: 69 0A ADC #$0A C1/C026: A8 TAY C1/C027: B1 78 LDA ($78),Y ; target character block type C1/C029: F0 31 BEQ $C05C ; branch if not blocked C1/C02B: 3A DEC C1/C02C: 20 B9 BE JSR $BEB9 ; load block sound effect and palette C1/C02F: 48 PHA C1/C030: A5 10 LDA $10 C1/C032: 10 03 BPL $C037 ; branch if attacker is a character C1/C034: 9E 2E 6A STZ $6A2E,X ; deactivate animation thread C1/C037: 68 PLA C1/C038: DA PHX C1/C039: AA TAX C1/C03A: BF 4B B7 C1 LDA $C1B74B,X ; block animation script C1/C03E: 8D 6E 62 STA $626E ; hit animation script C1/C041: 9C 8A 61 STZ $618A ; clear monster attack flag C1/C044: FA PLX C1/C045: A9 40 LDA #$40 ; tile $40 C1/C047: 85 14 STA $14 C1/C049: AD 70 62 LDA $6270 C1/C04C: 29 7F AND #$7F C1/C04E: C9 01 CMP #$01 C1/C050: D0 13 BNE $C065 ; branch if not a star or gambler type C1/C052: AD 70 62 LDA $6270 C1/C055: 29 80 AND #$80 C1/C057: 8D 70 62 STA $6270 C1/C05A: 80 09 BRA $C065 C1/C05C: A9 60 LDA #$60 ; tile $60 C1/C05E: 85 14 STA $14 C1/C060: AD 70 62 LDA $6270 ; branch if weapon was not thrown C1/C063: 10 16 BPL $C07B C1/C065: A5 12 LDA $12 C1/C067: 29 7F AND #$7F C1/C069: 0A ASL C1/C06A: AA TAX C1/C06B: C2 20 REP #$20 C1/C06D: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/C071: 18 CLC C1/C072: 69 10 00 ADC #$0010 ; pointer to next sprite thread C1/C075: AA TAX C1/C076: 7B TDC C1/C077: E2 20 SEP #$20 C1/C079: 80 09 BRA $C084 C1/C07B: A9 60 LDA #$60 ; tile $60 C1/C07D: 85 14 STA $14 C1/C07F: A2 00 05 LDX #$0500 ; pointer to bg1 thread C1/C082: A9 01 LDA #$01 C1/C084: 09 30 ORA #$30 C1/C086: 9D 86 6F STA $6F86,X ; tile priority = 3, thread layer is bg1 C1/C089: 8E F6 7A STX $7AF6 C1/C08C: A5 12 LDA $12 ; target C1/C08E: 30 0C BMI $C09C ; branch if a monster C1/C090: A9 02 LDA #$02 C1/C092: 9D D2 74 STA $74D2,X ; target width = 2 (character) C1/C095: A9 03 LDA #$03 C1/C097: 9D D3 74 STA $74D3,X ; target height = 3 (character) C1/C09A: 80 13 BRA $C0AF C1/C09C: 29 7F AND #$7F C1/C09E: 38 SEC C1/C09F: E9 04 SBC #$04 C1/C0A1: 0A ASL C1/C0A2: A8 TAY C1/C0A3: B9 2F 81 LDA $812F,Y ; monster width C1/C0A6: 9D D2 74 STA $74D2,X C1/C0A9: B9 30 81 LDA $8130,Y ; monster height C1/C0AC: 9D D3 74 STA $74D3,X C1/C0AF: AD 2F 7B LDA $7B2F ; hit graphics width C1/C0B2: 9D 2F 6A STA $6A2F,X ; thread frame width C1/C0B5: AD 30 7B LDA $7B30 ; hit graphics height C1/C0B8: 9D 30 6A STA $6A30,X ; thread frame height C1/C0BB: A9 06 LDA #$06 C1/C0BD: 9D D5 74 STA $74D5,X ; palette 3 C1/C0C0: 64 22 STZ $22 C1/C0C2: 64 23 STZ $23 C1/C0C4: AD 8A 61 LDA $618A ; branch if not monster attack C1/C0C7: F0 0E BEQ $C0D7 C1/C0C9: AD 6E 62 LDA $626E ; hit animation script C1/C0CC: C9 60 CMP #$60 C1/C0CE: 90 07 BCC $C0D7 ; branch if less than $60 C1/C0D0: DA PHX C1/C0D1: A2 00 02 LDX #$0200 ; add $0200 to script number C1/C0D4: 86 22 STX $22 C1/C0D6: FA PLX C1/C0D7: AD 6E 62 LDA $626E C1/C0DA: C2 20 REP #$20 C1/C0DC: 18 CLC C1/C0DD: 65 22 ADC $22 C1/C0DF: 0A ASL C1/C0E0: DA PHX C1/C0E1: AA TAX C1/C0E2: BF D8 EA D1 LDA $D1EAD8,X ; pointer to animation script (hit) C1/C0E6: FA PLX C1/C0E7: 85 22 STA $22 C1/C0E9: 1A INC C1/C0EA: 1A INC C1/C0EB: 9D 31 6A STA $6A31,X ; ++$22 = script pointer C1/C0EE: 7B TDC C1/C0EF: E2 20 SEP #$20 C1/C0F1: A9 D0 LDA #$D0 C1/C0F3: 85 24 STA $24 C1/C0F5: 9D 33 6A STA $6A33,X C1/C0F8: A7 22 LDA [$22] C1/C0FA: 4A LSR C1/C0FB: 4A LSR C1/C0FC: 4A LSR C1/C0FD: 4A LSR C1/C0FE: 1A INC C1/C0FF: 9D 34 6A STA $6A34,X ; animation speed C1/C102: 9E E7 64 STZ $64E7,X ; low sprite priority C1/C105: A9 01 LDA #$01 C1/C107: 9D 35 6A STA $6A35,X ; animation frame counter C1/C10A: 9E 36 6A STZ $6A36,X ; thread index C1/C10D: A5 14 LDA $14 ; tile number C1/C10F: 9D 37 6A STA $6A37,X C1/C112: 86 14 STX $14 C1/C114: FA PLX C1/C115: BD 87 6F LDA $6F87,X ; weapon thread h flip C1/C118: A6 14 LDX $14 C1/C11A: 9D 87 6F STA $6F87,X ; hit thread h flip C1/C11D: 9E 88 6F STZ $6F88,X ; C1/C120: 9E 8C 6F STZ $6F8C,X ; clear frame offset C1/C123: 9E D8 74 STZ $74D8,X ; movement speed C1/C126: A9 01 LDA #$01 C1/C128: 9D 8D 6F STA $6F8D,X ; frame offset counter C1/C12B: A5 10 LDA $10 C1/C12D: 9D 38 6A STA $6A38,X ; attacker C1/C130: A5 12 LDA $12 C1/C132: 9D 39 6A STA $6A39,X ; target C1/C135: 20 99 C4 JSR $C499 ; calculate attacker position C1/C138: C2 20 REP #$20 C1/C13A: A5 14 LDA $14 C1/C13C: 9D 7E 6F STA $6F7E,X ; x position C1/C13F: A5 16 LDA $16 C1/C141: 9D 80 6F STA $6F80,X ; y position C1/C144: 9E CE 74 STZ $74CE,X ; clear thread offset C1/C147: 9E D0 74 STZ $74D0,X C1/C14A: 7B TDC C1/C14B: E2 20 SEP #$20 C1/C14D: 20 8E C4 JSR $C48E ; calculate target position C1/C150: C2 20 REP #$20 C1/C152: A5 14 LDA $14 C1/C154: 9D 82 6F STA $6F82,X ; x position C1/C157: 9D 3A 6A STA $6A3A,X C1/C15A: A5 16 LDA $16 C1/C15C: 9D 84 6F STA $6F84,X ; y position C1/C15F: 9D 3C 6A STA $6A3C,X C1/C162: 7B TDC C1/C163: E2 20 SEP #$20 C1/C165: A5 12 LDA $12 ; target C1/C167: 30 0D BMI $C176 ; branch if a monster C1/C169: 29 03 AND #$03 C1/C16B: 18 CLC C1/C16C: 69 0A ADC #$0A C1/C16E: A8 TAY C1/C16F: B1 78 LDA ($78),Y ; block type C1/C171: 99 9B 62 STA $629B,Y ; C1/C174: D0 12 BNE $C188 C1/C176: A0 04 00 LDY #$0004 C1/C179: B1 78 LDA ($78),Y ; targets hit C1/C17B: C8 INY C1/C17C: 11 78 ORA ($78),Y ; targets reflected off of C1/C17E: D0 08 BNE $C188 ; branch if something was hit or reflected off of C1/C180: A9 0D LDA #$0D C1/C182: 8D E7 E9 STA $E9E7 ; nothing hit, set default animation sound effect (whiff) C1/C185: 7B TDC ; deactivate hit animation thread C1/C186: 80 02 BRA $C18A C1/C188: A9 01 LDA #$01 ; activate hit animation thread C1/C18A: 9D 2E 6A STA $6A2E,X C1/C18D: AD 96 61 LDA $6196 ; branch if not flashing screen (critical) C1/C190: F0 34 BEQ $C1C6 C1/C192: 64 10 STZ $10 ; attacker C1/C194: 9C 3F 61 STZ $613F ; character/monster number C1/C197: A9 01 LDA #$01 C1/C199: 85 22 STA $22 C1/C19B: A9 D0 LDA #$D0 C1/C19D: 85 26 STA $26 C1/C19F: C2 20 REP #$20 C1/C1A1: AF 28 EE D1 LDA $D1EE28 ; ++$22 = pointer to animation script $01A8 C1/C1A5: 85 24 STA $24 C1/C1A7: 7B TDC C1/C1A8: E2 20 SEP #$20 C1/C1AA: A9 01 LDA #$01 ; frame delay = 1 C1/C1AC: 85 1C STA $1C C1/C1AE: AE F6 7A LDX $7AF6 C1/C1B1: DA PHX C1/C1B2: A2 10 05 LDX #$0510 ; bg3 thread C1/C1B5: DA PHX C1/C1B6: 20 C4 B1 JSR $B1C4 ; create thread (screen flash) C1/C1B9: FA PLX C1/C1BA: BD 86 6F LDA $6F86,X ; set thread layer to bg3 C1/C1BD: 09 02 ORA #$02 C1/C1BF: 9D 86 6F STA $6F86,X C1/C1C2: FA PLX C1/C1C3: 8E F6 7A STX $7AF6 C1/C1C6: 20 7C 95 JSR $957C ; update character/monster order priority C1/C1C9: 9C 67 7B STZ $7B67 ; C1/C1CC: 20 2A 02 JSR $022A ; wait for vblank C1/C1CF: AD 67 61 LDA $6167 ; bg1 palette C1/C1D2: 20 26 9C JSR $9C26 ; load animation palette (bg1) C1/C1D5: 20 59 1E JSR $1E59 ; clear bg1 tile data in VRAM C1/C1D8: AD 6F 89 LDA $896F C1/C1DB: 09 10 ORA #$10 C1/C1DD: 8D 6F 89 STA $896F ; use 16x16 tiles for bg1 C1/C1E0: 20 69 C2 JSR $C269 ; weapon animation init C1/C1E3: 20 8A C3 JSR $C38A ; make all character/monster sprites priority 3 C1/C1E6: 20 A6 BC JSR $BCA6 ; get target number C1/C1E9: 20 F5 C3 JSR $C3F5 ; update character/monster layer priority C1/C1EC: 20 53 C6 JSR $C653 ; execute battle animation script C1/C1EF: A0 04 00 LDY #$0004 C1/C1F2: B1 78 LDA ($78),Y ; targets hit C1/C1F4: D0 0B BNE $C201 ; branch if targets were hit C1/C1F6: C8 INY C1/C1F7: C8 INY C1/C1F8: B1 78 LDA ($78),Y ; targets reflected off of C1/C1FA: F0 05 BEQ $C201 ; branch if no targets were reflected off of C1/C1FC: A9 20 LDA #$20 C1/C1FE: 20 B6 9B JSR $9BB6 ; wait 32 frames C1/C201: 20 0B BD JSR $BD0B C1/C204: 20 59 1E JSR $1E59 C1/C207: 20 8A C3 JSR $C38A C1/C20A: AD 6F 89 LDA $896F C1/C20D: 29 AF AND #$AF C1/C20F: 8D 6F 89 STA $896F C1/C212: 7B TDC C1/C213: AA TAX C1/C214: 8E B4 64 STX $64B4 C1/C217: 8E B6 64 STX $64B6 C1/C21A: A9 01 LDA #$01 C1/C21C: 8D 0E 7B STA $7B0E ; 1 monster thread C1/C21F: 8D 0F 7B STA $7B0F ; 1 character thread C1/C222: AD 8A 61 LDA $618A ; branch if not monster attack C1/C225: F0 0B BEQ $C232 C1/C227: 20 6B B8 JSR $B86B C1/C22A: 80 06 BRA $C232 ; *** inaccessible code *** C1/C22C: 20 0B BD JSR $BD0B C1/C22F: 20 03 95 JSR $9503 ; restore monster sprite data ; ************************* C1/C232: 20 8B AB JSR $AB8B ; reset attacker graphical action C1/C235: 9C 96 61 STZ $6196 ; clear flash screen flag (critical) C1/C238: 9C 8A 61 STZ $618A ; clear monster attack flag C1/C23B: 60 RTS ; [ Set Color Add/Sub Data ] ; +$10 = shbo4321 mmss--cd (+$2130) ; s: 0 = add, 1 = subtract ; h: 0 = full add/sub, 1 = half add/sub ; bo4321: layers affected by add/sub ; m: 0 ; s: 0 ; c: 0 = fixed color add/sub, 1 = subscreen add/sub ; d: 0 ; A = ---o4321 subscreen designation ($212D) ; o4321: layers to add/sub color_hdma_data_set: C1/C23C: 48 PHA C1/C23D: C2 20 REP #$20 C1/C23F: 7B TDC C1/C240: AA TAX C1/C241: A5 10 LDA $10 C1/C243: 9D 94 89 STA $8994,X ; set HDMA data C1/C246: 9D F8 89 STA $89F8,X C1/C249: 9D 5C 8A STA $8A5C,X C1/C24C: 9D C0 8A STA $8AC0,X C1/C24F: 9D 24 8B STA $8B24,X C1/C252: 9D 88 8B STA $8B88,X C1/C255: E8 INX C1/C256: E8 INX C1/C257: E8 INX C1/C258: E8 INX C1/C259: E0 64 00 CPX #$0064 C1/C25C: D0 E5 BNE $C243 C1/C25E: 8D EC 8B STA $8BEC C1/C261: 7B TDC C1/C262: E2 20 SEP #$20 C1/C264: 68 PLA C1/C265: 8D 8E 89 STA $898E ; set subscreen designation C1/C268: 60 RTS ; [ Weapon Animation Init ] set_type_init: C1/C269: AD 70 62 LDA $6270 C1/C26C: 29 7F AND #$7F C1/C26E: 0A ASL C1/C26F: AA TAX C1/C270: 7C 73 C2 JMP ($C273,X) ; jump table for weapon animation init C1/C273: .DW $C286, $C299, $C27D, $C312, $C373 ; 2: full moon, boomerang, rising sun, wing edge C1/C27D: A9 02 LDA #$02 C1/C27F: 8D 0E 7B STA $7B0E ; 2 monster threads C1/C282: 8D 0F 7B STA $7B0F ; 2 character threads C1/C285: 60 RTS ; 0: normal C1/C286: A2 02 01 LDX #$0102 ; add bg1 C1/C289: 86 10 STX $10 C1/C28B: A9 12 LDA #$12 ; affect sprite and bg2 C1/C28D: 20 3C C2 JSR $C23C ; set color add/sub data C1/C290: A9 02 LDA #$02 C1/C292: 8D 0E 7B STA $7B0E ; 2 monster threads C1/C295: 8D 0F 7B STA $7B0F ; 2 character threads C1/C298: 60 RTS ; 1: all star-type weapons, all gambler-type weapons (shadow sprites) C1/C299: AE F6 7A LDX $7AF6 C1/C29C: A0 10 00 LDY #$0010 C1/C29F: BD 38 6A LDA $6A38,X C1/C2A2: 30 2D BMI $C2D1 C1/C2A4: BD 39 6A LDA $6A39,X C1/C2A7: 30 28 BMI $C2D1 C1/C2A9: AD 1F 20 LDA $201F C1/C2AC: C9 03 CMP #$03 C1/C2AE: D0 19 BNE $C2C9 C1/C2B0: BD 38 6A LDA $6A38,X C1/C2B3: C9 02 CMP #$02 C1/C2B5: 90 09 BCC $C2C0 C1/C2B7: BD 39 6A LDA $6A39,X C1/C2BA: C9 02 CMP #$02 C1/C2BC: 90 13 BCC $C2D1 C1/C2BE: 80 09 BRA $C2C9 C1/C2C0: BD 39 6A LDA $6A39,X C1/C2C3: C9 02 CMP #$02 C1/C2C5: 90 02 BCC $C2C9 C1/C2C7: 80 08 BRA $C2D1 C1/C2C9: BD 87 6F LDA $6F87,X C1/C2CC: 49 40 EOR #$40 C1/C2CE: 9D 87 6F STA $6F87,X C1/C2D1: BD DE 64 LDA $64DE,X C1/C2D4: 9D EE 64 STA $64EE,X C1/C2D7: 9D FE 64 STA $64FE,X C1/C2DA: BD 2E 6A LDA $6A2E,X C1/C2DD: 9D 3E 6A STA $6A3E,X C1/C2E0: 9D 4E 6A STA $6A4E,X C1/C2E3: BD 7E 6F LDA $6F7E,X C1/C2E6: 9D 8E 6F STA $6F8E,X C1/C2E9: 9D 9E 6F STA $6F9E,X C1/C2EC: BD CE 74 LDA $74CE,X C1/C2EF: 9D DE 74 STA $74DE,X C1/C2F2: 9D EE 74 STA $74EE,X C1/C2F5: E8 INX C1/C2F6: 88 DEY C1/C2F7: D0 D8 BNE $C2D1 C1/C2F9: AE F6 7A LDX $7AF6 C1/C2FC: BD 35 6A LDA $6A35,X C1/C2FF: 1A INC C1/C300: 1A INC C1/C301: 9D 45 6A STA $6A45,X C1/C304: 1A INC C1/C305: 1A INC C1/C306: 9D 55 6A STA $6A55,X C1/C309: A9 05 LDA #$05 C1/C30B: 8D 0E 7B STA $7B0E ; 5 monster threads C1/C30E: 8D 0F 7B STA $7B0F ; 5 character threads C1/C311: 60 RTS ; 3: atma weapon 3 (shadow sprites) C1/C312: 20 89 BC JSR $BC89 ; get attacker number C1/C315: A5 10 LDA $10 C1/C317: 29 7F AND #$7F C1/C319: 0A ASL C1/C31A: AA TAX C1/C31B: C2 20 REP #$20 C1/C31D: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/C321: AA TAX C1/C322: DA PHX C1/C323: A0 08 00 LDY #$0008 C1/C326: BD DE 64 LDA $64DE,X ; copy thread data C1/C329: 9D EE 64 STA $64EE,X C1/C32C: 9D FE 64 STA $64FE,X C1/C32F: BD 2E 6A LDA $6A2E,X C1/C332: 9D 3E 6A STA $6A3E,X C1/C335: 9D 4E 6A STA $6A4E,X C1/C338: BD 7E 6F LDA $6F7E,X C1/C33B: 9D 8E 6F STA $6F8E,X C1/C33E: 9D 9E 6F STA $6F9E,X C1/C341: BD CE 74 LDA $74CE,X C1/C344: 9D DE 74 STA $74DE,X C1/C347: 9D EE 74 STA $74EE,X C1/C34A: E8 INX C1/C34B: E8 INX C1/C34C: 88 DEY C1/C34D: D0 D7 BNE $C326 C1/C34F: 7B TDC C1/C350: E2 20 SEP #$20 C1/C352: FA PLX C1/C353: BD 35 6A LDA $6A35,X ; frame counter C1/C356: 1A INC C1/C357: 1A INC C1/C358: 9D 45 6A STA $6A45,X C1/C35B: 1A INC C1/C35C: 1A INC C1/C35D: 9D 55 6A STA $6A55,X C1/C360: A2 02 02 LDX #$0202 ; add bg2 C1/C363: 86 10 STX $10 C1/C365: A9 10 LDA #$10 ; affect bg1 C1/C367: 20 3C C2 JSR $C23C ; set color add/sub data C1/C36A: A9 05 LDA #$05 C1/C36C: 8D 0E 7B STA $7B0E ; 5 monster threads C1/C36F: 8D 0F 7B STA $7B0F ; 5 character threads C1/C372: 60 RTS ; 4: atma weapon 1 & 2 C1/C373: A2 02 02 LDX #$0202 ; add bg2 C1/C376: 86 10 STX $10 C1/C378: A9 10 LDA #$10 ; affect bg1 C1/C37A: 20 3C C2 JSR $C23C ; set color add/sub data C1/C37D: A9 02 LDA #$02 C1/C37F: 8D 0E 7B STA $7B0E ; 2 monster threads C1/C382: 8D 0F 7B STA $7B0F ; 2 character threads C1/C385: 60 RTS ; [ Make All Character/Monster Sprites Priority 3 (long access) ] attack_pri_rset_long: C1/C386: 20 8A C3 JSR $C38A C1/C389: 6B RTL ; [ Make All Character/Monster Sprites Priority 3 ] attack_pri_rset: C1/C38A: A9 30 LDA #$30 C1/C38C: 8D BD 61 STA $61BD ; character sprite layer priority C1/C38F: 8D DD 61 STA $61DD C1/C392: 8D FD 61 STA $61FD C1/C395: 8D 1D 62 STA $621D C1/C398: 7B TDC C1/C399: AA TAX C1/C39A: A9 31 LDA #$31 C1/C39C: 9D DC 80 STA $80DC,X ; monster sprite layer priority C1/C39F: E8 INX C1/C3A0: E8 INX C1/C3A1: E0 0C 00 CPX #$000C C1/C3A4: D0 F6 BNE $C39C C1/C3A6: 60 RTS ; [ ] y_pri_set_long: C1/C3A7: 20 AB C3 JSR $C3AB C1/C3AA: 6B RTL ; [ ] y_pri_set: C1/C3AB: 86 10 STX $10 C1/C3AD: 7B TDC C1/C3AE: AA TAX C1/C3AF: A8 TAY C1/C3B0: C2 20 REP #$20 C1/C3B2: BD 43 80 LDA $8043,X C1/C3B5: C5 10 CMP $10 C1/C3B7: B0 0A BCS $C3C3 C1/C3B9: E2 20 SEP #$20 C1/C3BB: A9 20 LDA #$20 C1/C3BD: 99 BD 61 STA $61BD,Y C1/C3C0: 7B TDC C1/C3C1: C2 20 REP #$20 C1/C3C3: 98 TYA C1/C3C4: 18 CLC C1/C3C5: 69 20 00 ADC #$0020 C1/C3C8: A8 TAY C1/C3C9: E8 INX C1/C3CA: E8 INX C1/C3CB: E0 08 00 CPX #$0008 C1/C3CE: D0 E2 BNE $C3B2 C1/C3D0: 7B TDC C1/C3D1: AA TAX C1/C3D2: BD 27 80 LDA $8027,X C1/C3D5: C5 10 CMP $10 C1/C3D7: B0 09 BCS $C3E2 C1/C3D9: E2 20 SEP #$20 C1/C3DB: A9 21 LDA #$21 C1/C3DD: 9D DC 80 STA $80DC,X C1/C3E0: C2 20 REP #$20 C1/C3E2: E8 INX C1/C3E3: E8 INX C1/C3E4: E0 0C 00 CPX #$000C C1/C3E7: D0 E9 BNE $C3D2 C1/C3E9: 7B TDC C1/C3EA: E2 20 SEP #$20 C1/C3EC: 60 RTS ; [ ] attack_pri_set_main_long: C1/C3ED: 20 FA C3 JSR $C3FA C1/C3F0: 6B RTL ; [ ] attack_pri_set_long: C1/C3F1: 20 F5 C3 JSR $C3F5 C1/C3F4: 6B RTL ; [ Update Character/Monster Layer Priority () ] ; $12: first sprite behind bg attack_pri_set: C1/C3F5: 20 A5 AA JSR $AAA5 ; C1/C3F8: A5 12 LDA $12 attack_pri_set_main: C1/C3FA: 29 7F AND #$7F C1/C3FC: A2 00 00 LDX #$0000 C1/C3FF: DD 21 7A CMP $7A21,X ; character/monster index (in sprite priority order) C1/C402: F0 0A BEQ $C40E C1/C404: E8 INX C1/C405: E8 INX C1/C406: E8 INX C1/C407: E8 INX C1/C408: E0 28 00 CPX #$0028 C1/C40B: D0 F2 BNE $C3FF C1/C40D: 60 RTS C1/C40E: BD 21 7A LDA $7A21,X ; character/monster index C1/C411: C9 04 CMP #$04 C1/C413: 90 0E BCC $C423 ; branch if a character C1/C415: 38 SEC C1/C416: E9 04 SBC #$04 C1/C418: 29 07 AND #$07 C1/C41A: 0A ASL C1/C41B: A8 TAY C1/C41C: A9 21 LDA #$21 C1/C41E: 99 DC 80 STA $80DC,Y ; layer priority = 2 C1/C421: 80 0B BRA $C42E C1/C423: 0A ASL C1/C424: 0A ASL C1/C425: 0A ASL C1/C426: 0A ASL C1/C427: 0A ASL C1/C428: A8 TAY C1/C429: A9 20 LDA #$20 C1/C42B: 99 BD 61 STA $61BD,Y ; layer priority = 2 C1/C42E: E8 INX C1/C42F: E8 INX C1/C430: E8 INX C1/C431: E8 INX C1/C432: E0 28 00 CPX #$0028 C1/C435: D0 D7 BNE $C40E C1/C437: 60 RTS ; $C0 monster C1/C438: 7A PLY C1/C439: B9 2F 81 LDA $812F,Y C1/C43C: 0A ASL C1/C43D: 0A ASL C1/C43E: 85 14 STA $14 C1/C440: 64 15 STZ $15 C1/C442: C2 20 REP #$20 C1/C444: A5 14 LDA $14 C1/C446: 18 CLC C1/C447: 69 20 00 ADC #$0020 C1/C44A: 85 14 STA $14 C1/C44C: 7B TDC C1/C44D: E2 20 SEP #$20 C1/C44F: DA PHX C1/C450: A5 10 LDA $10 C1/C452: 29 03 AND #$03 C1/C454: AA TAX C1/C455: BD 10 7B LDA $7B10,X C1/C458: 29 01 AND #$01 C1/C45A: D0 12 BNE $C46E C1/C45C: C2 20 REP #$20 C1/C45E: B9 0F 80 LDA $800F,Y C1/C461: 18 CLC C1/C462: 65 14 ADC $14 C1/C464: 85 14 STA $14 C1/C466: B9 27 80 LDA $8027,Y C1/C469: 85 16 STA $16 C1/C46B: 7B TDC C1/C46C: FA PLX C1/C46D: 60 RTS C1/C46E: C2 20 REP #$20 C1/C470: B9 0F 80 LDA $800F,Y C1/C473: 38 SEC C1/C474: E5 14 SBC $14 C1/C476: 85 14 STA $14 C1/C478: B9 27 80 LDA $8027,Y C1/C47B: 85 16 STA $16 C1/C47D: 7B TDC C1/C47E: FA PLX C1/C47F: 60 RTS ; [ Get Magitek Y-Offset ] yoshii_command_set_armer_offset: C1/C480: AD BA 64 LDA $64BA ; branch if magitek mode is disabled C1/C483: F0 05 BEQ $C48A C1/C485: A0 F4 FF LDY #$FFF4 ; +$18 = -12 C1/C488: 80 01 BRA $C48B C1/C48A: A8 TAY ; +$18 = 0 C1/C48B: 84 18 STY $18 C1/C48D: 60 RTS ; [ Calculate Target Position ] ; $12 = target ; +$14 = x position (out) ; +$16 = y position (out) get_target_pointer: C1/C48E: 20 80 C4 JSR $C480 ; get magitek offset C1/C491: A9 01 LDA #$01 C1/C493: 85 14 STA $14 C1/C495: A5 12 LDA $12 ; target C1/C497: 80 07 BRA $C4A0 ; [ Calculate Attacker Position ] ; $10 = attacker ; +$14 = x position (out) ; +$16 = y position (out) get_caster_pointer: C1/C499: 20 80 C4 JSR $C480 ; get magitek offset C1/C49C: 64 14 STZ $14 C1/C49E: A5 10 LDA $10 ; attacker get_pointer_main: C1/C4A0: 8D B1 EC STA $ECB1 ; characer/monster number C1/C4A3: 10 03 BPL $C4A8 ; branch if a character C1/C4A5: 4C 8F C5 JMP $C58F ; character C1/C4A8: 0A ASL C1/C4A9: A8 TAY C1/C4AA: 5A PHY C1/C4AB: A0 01 00 LDY #$0001 C1/C4AE: B7 22 LDA [$22],Y ; 2nd byte of animation script header C1/C4B0: 29 E0 AND #$E0 C1/C4B2: F0 67 BEQ $C51B C1/C4B4: C9 20 CMP #$20 C1/C4B6: F0 61 BEQ $C519 C1/C4B8: C9 40 CMP #$40 C1/C4BA: F0 2A BEQ $C4E6 C1/C4BC: C9 E0 CMP #$E0 C1/C4BE: F0 21 BEQ $C4E1 C1/C4C0: C9 80 CMP #$80 C1/C4C2: F0 7C BEQ $C540 C1/C4C4: C9 C0 CMP #$C0 C1/C4C6: F0 78 BEQ $C540 C1/C4C8: C9 A0 CMP #$A0 C1/C4CA: D0 18 BNE $C4E4 ; $60 (align with bg3 thread) C1/C4CC: A5 14 LDA $14 C1/C4CE: F0 1E BEQ $C4EE ; branch if attacker C1/C4D0: C2 20 REP #$20 C1/C4D2: AD 22 7B LDA $7B22 ; x position = bg3 animation x position C1/C4D5: 85 14 STA $14 C1/C4D7: AD 24 7B LDA $7B24 ; y position = bg3 animation y position C1/C4DA: 85 16 STA $16 C1/C4DC: 7B TDC C1/C4DD: E2 20 SEP #$20 C1/C4DF: 7A PLY C1/C4E0: 60 RTS C1/C4E1: 4C 73 C5 JMP $C573 ; $E0 C1/C4E4: 80 08 BRA $C4EE ; $A0 ; $40 (align to top of attacker/target) C1/C4E6: A9 10 LDA #$10 ; +$16 = 16 C1/C4E8: 85 16 STA $16 C1/C4EA: 64 17 STZ $17 C1/C4EC: 80 37 BRA $C525 ; $A0 C1/C4EE: 9C B1 EC STZ $ECB1 C1/C4F1: 9C B2 EC STZ $ECB2 C1/C4F4: 7A PLY C1/C4F5: C2 20 REP #$20 C1/C4F7: B9 33 80 LDA $8033,Y ; character center x C1/C4FA: 18 CLC C1/C4FB: 6D B1 EC ADC $ECB1 ; C1/C4FE: 10 03 BPL $C503 C1/C500: 7B TDC C1/C501: 80 08 BRA $C50B C1/C503: C9 FC 00 CMP #$00FC C1/C506: 90 03 BCC $C50B C1/C508: A9 FC 00 LDA #$00FC C1/C50B: 85 14 STA $14 C1/C50D: B9 43 80 LDA $8043,Y C1/C510: 18 CLC C1/C511: 65 18 ADC $18 C1/C513: 85 16 STA $16 C1/C515: 7B TDC C1/C516: E2 20 SEP #$20 C1/C518: 60 RTS C1/C519: 80 44 BRA $C55F ; $20 ; $00 (align to bottom of attacker/target) C1/C51B: BD 30 6A LDA $6A30,X ; +$16 = frame height (in pixels) C1/C51E: 0A ASL C1/C51F: 0A ASL C1/C520: 0A ASL C1/C521: 85 16 STA $16 C1/C523: 64 17 STZ $17 C1/C525: 7A PLY C1/C526: C2 20 REP #$20 C1/C528: B9 33 80 LDA $8033,Y ; x position = character center X coordinate C1/C52B: 85 14 STA $14 C1/C52D: B9 43 80 LDA $8043,Y ; y position = character bottom Y coordinate + 8 - frame height + magitek offset C1/C530: 18 CLC C1/C531: 69 08 00 ADC #$0008 C1/C534: 38 SEC C1/C535: E5 16 SBC $16 C1/C537: 18 CLC C1/C538: 65 18 ADC $18 C1/C53A: 85 16 STA $16 C1/C53C: 7B TDC C1/C53D: E2 20 SEP #$20 C1/C53F: 60 RTS ; $80, $C0 (align to front of attacker) C1/C540: DA PHX C1/C541: A5 10 LDA $10 ; attacker C1/C543: 29 03 AND #$03 C1/C545: AA TAX C1/C546: BD 10 7B LDA $7B10,X ; facing direction C1/C549: 29 01 AND #$01 C1/C54B: F0 05 BEQ $C552 ; branch if not flipped C1/C54D: A2 E8 FF LDX #$FFE8 C1/C550: 80 03 BRA $C555 C1/C552: A2 18 00 LDX #$0018 C1/C555: 8E B1 EC STX $ECB1 C1/C558: FA PLX C1/C559: A5 14 LDA $14 C1/C55B: F0 91 BEQ $C4EE C1/C55D: 80 95 BRA $C4F4 ; $20 (align to center of attacker/target) C1/C55F: 7A PLY C1/C560: C2 20 REP #$20 C1/C562: B9 33 80 LDA $8033,Y ; x position = character center x coordinate C1/C565: 85 14 STA $14 C1/C567: B9 3B 80 LDA $803B,Y ; y position = character center y coordinate + magitek offset C1/C56A: 18 CLC C1/C56B: 65 18 ADC $18 C1/C56D: 85 16 STA $16 C1/C56F: 7B TDC C1/C570: E2 20 SEP #$20 C1/C572: 60 RTS ; $E0 (capture) C1/C573: 7A PLY C1/C574: C2 20 REP #$20 C1/C576: B9 33 80 LDA $8033,Y ; x position = character center x coordinate - 8 C1/C579: 38 SEC C1/C57A: E9 08 00 SBC #$0008 C1/C57D: 85 14 STA $14 C1/C57F: B9 3B 80 LDA $803B,Y ; y position = character center y coordinate + magitek offset - 8 C1/C582: 18 CLC C1/C583: 65 18 ADC $18 C1/C585: 38 SEC C1/C586: E9 08 00 SBC #$0008 C1/C589: 85 16 STA $16 C1/C58B: 7B TDC C1/C58C: E2 20 SEP #$20 C1/C58E: 60 RTS ; monster C1/C58F: 29 7F AND #$7F C1/C591: 38 SEC C1/C592: E9 04 SBC #$04 C1/C594: 0A ASL C1/C595: A8 TAY C1/C596: 5A PHY C1/C597: A0 01 00 LDY #$0001 C1/C59A: B7 22 LDA [$22],Y ; 2nd byte of animation script header C1/C59C: 29 E0 AND #$E0 C1/C59E: F0 2B BEQ $C5CB C1/C5A0: C9 20 CMP #$20 C1/C5A2: F0 24 BEQ $C5C8 C1/C5A4: C9 40 CMP #$40 C1/C5A6: F0 1D BEQ $C5C5 C1/C5A8: C9 80 CMP #$80 C1/C5AA: F0 25 BEQ $C5D1 C1/C5AC: C9 C0 CMP #$C0 C1/C5AE: F0 1E BEQ $C5CE C1/C5B0: C9 A0 CMP #$A0 C1/C5B2: D0 14 BNE $C5C8 ; $A0 C1/C5B4: C2 20 REP #$20 C1/C5B6: AD 22 7B LDA $7B22 C1/C5B9: 85 14 STA $14 C1/C5BB: AD 24 7B LDA $7B24 C1/C5BE: 85 16 STA $16 C1/C5C0: 7B TDC C1/C5C1: E2 20 SEP #$20 C1/C5C3: 7A PLY C1/C5C4: 60 RTS C1/C5C5: 4C 0F C6 JMP $C60F ; $40 C1/C5C8: 4C 42 C6 JMP $C642 ; $20, $60, $E0 C1/C5CB: 4C 20 C6 JMP $C620 ; $00 C1/C5CE: 4C 38 C4 JMP $C438 ; $C0 ; $80 C1/C5D1: 7A PLY C1/C5D2: B9 2F 81 LDA $812F,Y C1/C5D5: 0A ASL C1/C5D6: 0A ASL C1/C5D7: 18 CLC C1/C5D8: 69 10 ADC #$10 C1/C5DA: 85 14 STA $14 C1/C5DC: 64 15 STZ $15 C1/C5DE: DA PHX C1/C5DF: A5 10 LDA $10 C1/C5E1: 29 03 AND #$03 C1/C5E3: AA TAX C1/C5E4: BD 10 7B LDA $7B10,X C1/C5E7: 29 01 AND #$01 C1/C5E9: D0 12 BNE $C5FD C1/C5EB: C2 20 REP #$20 C1/C5ED: B9 0F 80 LDA $800F,Y C1/C5F0: 18 CLC C1/C5F1: 65 14 ADC $14 C1/C5F3: 85 14 STA $14 C1/C5F5: B9 27 80 LDA $8027,Y C1/C5F8: 85 16 STA $16 C1/C5FA: 7B TDC C1/C5FB: FA PLX C1/C5FC: 60 RTS C1/C5FD: C2 20 REP #$20 C1/C5FF: B9 0F 80 LDA $800F,Y C1/C602: 38 SEC C1/C603: E5 14 SBC $14 C1/C605: 85 14 STA $14 C1/C607: B9 27 80 LDA $8027,Y C1/C60A: 85 16 STA $16 C1/C60C: 7B TDC C1/C60D: FA PLX C1/C60E: 60 RTS ; $40 monster C1/C60F: 7A PLY C1/C610: C2 20 REP #$20 C1/C612: B9 0F 80 LDA $800F,Y C1/C615: 85 14 STA $14 C1/C617: B9 CF 80 LDA $80CF,Y C1/C61A: 85 16 STA $16 C1/C61C: 7B TDC C1/C61D: E2 20 SEP #$20 C1/C61F: 60 RTS ; $00 monster C1/C620: BD 30 6A LDA $6A30,X C1/C623: 0A ASL C1/C624: 0A ASL C1/C625: 0A ASL C1/C626: 85 16 STA $16 C1/C628: 64 17 STZ $17 C1/C62A: 7A PLY C1/C62B: C2 20 REP #$20 C1/C62D: B9 0F 80 LDA $800F,Y C1/C630: 85 14 STA $14 C1/C632: B9 27 80 LDA $8027,Y C1/C635: 18 CLC C1/C636: 69 08 00 ADC #$0008 C1/C639: 38 SEC C1/C63A: E5 16 SBC $16 C1/C63C: 85 16 STA $16 C1/C63E: 7B TDC C1/C63F: E2 20 SEP #$20 C1/C641: 60 RTS C1/C642: 7A PLY C1/C643: C2 20 REP #$20 C1/C645: B9 0F 80 LDA $800F,Y ; x position = monster center x position C1/C648: 85 14 STA $14 C1/C64A: B9 1B 80 LDA $801B,Y ; y position = monster center y position C1/C64D: 85 16 STA $16 C1/C64F: 7B TDC C1/C650: E2 20 SEP #$20 C1/C652: 60 RTS ; [ Execute Battle Animation Script ] main_magic_anim: C1/C653: 7B TDC C1/C654: AA TAX C1/C655: 9E 95 60 STZ $6095,X ; clear bg scrolling frequency/amplitude C1/C658: E8 INX C1/C659: E0 12 00 CPX #$0012 C1/C65C: D0 F7 BNE $C655 C1/C65E: 20 7C 95 JSR $957C ; update character/monster order priority C1/C661: 9C FA EB STZ $EBFA ; C1/C664: 9C A7 60 STZ $60A7 ; enable bg1 animation graphics C1/C667: 9C A8 60 STZ $60A8 ; enable bg3 animation graphics C1/C66A: 7B TDC C1/C66B: AA TAX C1/C66C: 9E 95 60 STZ $6095,X ; clear bg scrolling frequency/amplitude (again) C1/C66F: E8 INX C1/C670: E0 12 00 CPX #$0012 C1/C673: D0 F7 BNE $C66C C1/C675: 7B TDC C1/C676: AA TAX C1/C677: A8 TAY C1/C678: BD BC 61 LDA $61BC,X ; save character palette numbers C1/C67B: 99 6E 61 STA $616E,Y C1/C67E: 8A TXA C1/C67F: 18 CLC C1/C680: 69 20 ADC #$20 C1/C682: AA TAX C1/C683: C8 INY C1/C684: C0 04 00 CPY #$0004 C1/C687: D0 EF BNE $C678 C1/C689: 7B TDC C1/C68A: AA TAX C1/C68B: BD DB 80 LDA $80DB,X ; save monster palette numbers C1/C68E: 99 6E 61 STA $616E,Y C1/C691: E8 INX C1/C692: E8 INX C1/C693: C8 INY C1/C694: C0 0A 00 CPY #$000A C1/C697: D0 F2 BNE $C68B C1/C699: 7B TDC C1/C69A: AA TAX C1/C69B: 9E 85 60 STZ $6085,X ; clear palette shift counters C1/C69E: E8 INX C1/C69F: E0 10 00 CPX #$0010 C1/C6A2: D0 F7 BNE $C69B C1/C6A4: 7B TDC C1/C6A5: AA TAX C1/C6A6: 9C 14 7B STZ $7B14 ; clear the number of active threads C1/C6A9: 64 9B STZ $9B ; C1/C6AB: BD 2E 6A LDA $6A2E,X ; branch if thread is not active (next thread) C1/C6AE: F0 58 BEQ $C708 C1/C6B0: A5 99 LDA $99 ; branch if sprite animation threads are not paused C1/C6B2: F0 05 BEQ $C6B9 C1/C6B4: E0 00 05 CPX #$0500 C1/C6B7: 90 4F BCC $C708 ; branch if not a bg or esper (next thread) C1/C6B9: EE 14 7B INC $7B14 ; increment number of active threads C1/C6BC: DE 35 6A DEC $6A35,X ; decrement animation frame counter C1/C6BF: D0 47 BNE $C708 ; branch if it didn't reach 0 (next thread) C1/C6C1: BD 34 6A LDA $6A34,X ; animation speed C1/C6C4: 9D 35 6A STA $6A35,X ; reset frame counter C1/C6C7: BC 31 6A LDY $6A31,X ; set script pointer C1/C6CA: 84 5B STY $5B C1/C6CC: BD 33 6A LDA $6A33,X C1/C6CF: 85 5D STA $5D C1/C6D1: BD 86 6F LDA $6F86,X C1/C6D4: 29 03 AND #$03 C1/C6D6: F0 1E BEQ $C6F6 ; branch if a sprite thread C1/C6D8: 29 01 AND #$01 C1/C6DA: D0 0D BNE $C6E9 ; branch if a bg1 thread ; bg3 thread C1/C6DC: 9E DE 64 STZ $64DE,X ; deactivate sprite C1/C6DF: AD AD 60 LDA $60AD ; branch if bg3 animation is paused C1/C6E2: D0 7C BNE $C760 C1/C6E4: 20 23 C8 JSR $C823 ; update bg3 animation thread C1/C6E7: 80 6F BRA $C758 ; bg1 thread C1/C6E9: 9E DE 64 STZ $64DE,X ; deactivate sprite C1/C6EC: AD AC 60 LDA $60AC ; branch if bg1 animation is paused C1/C6EF: D0 6F BNE $C760 C1/C6F1: 20 B9 C7 JSR $C7B9 ; update bg1 animation thread C1/C6F4: 90 62 BCC $C758 ; branch if not acting as a sprite thread C1/C6F6: A5 9B LDA $9B ; C1/C6F8: D0 1A BNE $C714 C1/C6FA: A7 5B LDA [$5B] ; animation command C1/C6FC: 10 16 BPL $C714 ; branch if a frame C1/C6FE: C9 FF CMP #$FF C1/C700: D0 08 BNE $C70A ; branch if not end of script C1/C702: 9E 2E 6A STZ $6A2E,X ; deactivate attacker thread C1/C705: 9E DE 64 STZ $64DE,X ; deactivate thread C1/C708: 80 56 BRA $C760 ; animation command C1/C70A: 20 D7 D9 JSR $D9D7 ; execute battle animation command C1/C70D: A4 5B LDY $5B ; increment animation script pointer C1/C70F: C8 INY C1/C710: 84 5B STY $5B C1/C712: 80 BD BRA $C6D1 ; show frame C1/C714: 64 9B STZ $9B ; C1/C716: C9 1F CMP #$1F C1/C718: F0 06 BEQ $C720 ; branch if blank frame ($1F) C1/C71A: 18 CLC C1/C71B: 7D 8C 6F ADC $6F8C,X ; add frame offset C1/C71E: 29 7F AND #$7F C1/C720: 9D E3 64 STA $64E3,X ; set frame number C1/C723: BD 37 6A LDA $6A37,X ; graphic index C1/C726: 9D E4 64 STA $64E4,X C1/C729: C2 20 REP #$20 C1/C72B: BD 3A 6A LDA $6A3A,X ; x position C1/C72E: 18 CLC C1/C72F: 7D CE 74 ADC $74CE,X ; add x offset C1/C732: 9D DF 64 STA $64DF,X ; sprite x position C1/C735: BD 3C 6A LDA $6A3C,X ; y position C1/C738: 18 CLC C1/C739: 7D D0 74 ADC $74D0,X ; add y offset C1/C73C: 9D E1 64 STA $64E1,X ; sprite y position C1/C73F: 7B TDC C1/C740: E2 20 SEP #$20 C1/C742: BD 87 6F LDA $6F87,X ; horizontal flip C1/C745: 9D E5 64 STA $64E5,X C1/C748: BD 86 6F LDA $6F86,X ; sprite priority C1/C74B: 29 30 AND #$30 C1/C74D: 1D D5 74 ORA $74D5,X ; palette C1/C750: 9D E6 64 STA $64E6,X C1/C753: A9 01 LDA #$01 C1/C755: 9D DE 64 STA $64DE,X ; make thread active C1/C758: C2 20 REP #$20 C1/C75A: A5 5B LDA $5B ; increment animation script pointer C1/C75C: 1A INC C1/C75D: 9D 31 6A STA $6A31,X C1/C760: C2 20 REP #$20 ; next thread C1/C762: 8A TXA C1/C763: 18 CLC C1/C764: 69 10 00 ADC #$0010 C1/C767: AA TAX C1/C768: 7B TDC C1/C769: E2 20 SEP #$20 C1/C76B: E0 50 05 CPX #$0550 ; 85 threads total C1/C76E: F0 03 BEQ $C773 C1/C770: 4C A9 C6 JMP $C6A9 C1/C773: 20 2A 02 JSR $022A ; wait for vblank C1/C776: AD D2 62 LDA $62D2 ; branch if sprite priority data is up to date C1/C779: D0 03 BNE $C77E C1/C77B: 20 7C 95 JSR $957C ; update character/monster order priority C1/C77E: AD 14 7B LDA $7B14 ; continue if there are no more active threads C1/C781: F0 03 BEQ $C786 C1/C783: 4C A4 C6 JMP $C6A4 C1/C786: 7B TDC C1/C787: AA TAX C1/C788: 86 10 STX $10 C1/C78A: 20 3C C2 JSR $C23C ; clear color add/sub data C1/C78D: 9C D2 62 STZ $62D2 ; invalidate sprite priority data C1/C790: 9C AF 62 STZ $62AF ; clear bg1 monsters C1/C793: 20 7C 95 JSR $957C ; update character/monster order priority C1/C796: 7B TDC C1/C797: AA TAX C1/C798: 9D 15 7B STA $7B15,X ; clear bg1/bg3 animation data C1/C79B: 9D 21 7B STA $7B21,X C1/C79E: E8 INX C1/C79F: E0 0C 00 CPX #$000C C1/C7A2: D0 F4 BNE $C798 C1/C7A4: A2 00 01 LDX #$0100 C1/C7A7: 8E F5 43 STX $43F5 ; set bg1 horizontal scroll position to $0100 (HDMA data) C1/C7AA: 8E B4 64 STX $64B4 ; set bg1 horizontal scroll position to $0100 C1/C7AD: 8E F5 4A STX $4AF5 ; set bg3 horizontal scroll position to $0100 (HDMA data) C1/C7B0: 7B TDC C1/C7B1: AA TAX C1/C7B2: 8E B6 64 STX $64B6 ; set bg1 vertical scroll position to $0100 C1/C7B5: 8E F7 4A STX $4AF7 ; set bg3 vertical scroll position to $0100 (HDMA data) C1/C7B8: 60 RTS ; [ Update BG1 Animation Thread ] ; carry set = acting as a sprite thread, clear = acting as a bg thread bg_main_magic_anim: C1/C7B9: BD 86 6F LDA $6F86,X ; thread type C1/C7BC: 29 03 AND #$03 C1/C7BE: D0 02 BNE $C7C2 ; branch if not a sprite C1/C7C0: 38 SEC C1/C7C1: 60 RTS C1/C7C2: A7 5B LDA [$5B] ; script byte C1/C7C4: C9 1F CMP #$1F C1/C7C6: F0 12 BEQ $C7DA ; branch if blank frame C1/C7C8: C9 FF CMP #$FF C1/C7CA: D0 12 BNE $C7DE ; branch if not end of script C1/C7CC: 9E 2E 6A STZ $6A2E,X ; deactivate thread C1/C7CF: A0 00 01 LDY #$0100 C1/C7D2: 8C F5 43 STY $43F5 ; set bg1 horizontal scroll position to $0100 (HDMA data) C1/C7D5: 8C B4 64 STY $64B4 ; set bg1 horizontal scroll position to $0100 C1/C7D8: 18 CLC C1/C7D9: 60 RTS C1/C7DA: A9 0F LDA #$0F ; use frame $0F for blank frame C1/C7DC: 80 08 BRA $C7E6 C1/C7DE: 30 37 BMI $C817 ; branch if script command C1/C7E0: 18 CLC C1/C7E1: 7D 8C 6F ADC $6F8C,X ; add frame offset C1/C7E4: 29 7F AND #$7F C1/C7E6: C2 20 REP #$20 C1/C7E8: EB XBA C1/C7E9: 0A ASL C1/C7EA: 18 CLC C1/C7EB: 69 00 C4 ADC #$C400 C1/C7EE: 8D 1A 7B STA $7B1A ; pointer to bg1 animation graphics buffer C1/C7F1: BD 3A 6A LDA $6A3A,X ; x position C1/C7F4: 18 CLC C1/C7F5: 7D CE 74 ADC $74CE,X ; x offset C1/C7F8: 8D 1D 7B STA $7B1D ; bg1 animation graphics x offset C1/C7FB: BD 3C 6A LDA $6A3C,X ; y position C1/C7FE: 18 CLC C1/C7FF: 7D D0 74 ADC $74D0,X ; y offset C1/C802: 8D 1F 7B STA $7B1F ; bg1 animation graphics y offset C1/C805: 7B TDC C1/C806: E2 20 SEP #$20 C1/C808: A9 7F LDA #$7F C1/C80A: 8D 1C 7B STA $7B1C ; bank byte of graphics pointer C1/C80D: 9E DE 64 STZ $64DE,X ; deactivate sprite C1/C810: A9 01 LDA #$01 C1/C812: 8D 15 7B STA $7B15 ; enable bg1 animation tile data update C1/C815: 18 CLC C1/C816: 60 RTS C1/C817: 20 D7 D9 JSR $D9D7 ; execute battle animation command C1/C81A: A4 5B LDY $5B ; increment script pointer C1/C81C: C8 INY C1/C81D: 84 5B STY $5B C1/C81F: 80 98 BRA $C7B9 ; next command/frame C1/C821: 18 CLC C1/C822: 60 RTS ; [ Update BG3 Animation Thread ] bg_main_magic_anim3: C1/C823: A7 5B LDA [$5B] ; script byte C1/C825: C9 FF CMP #$FF C1/C827: D0 0A BNE $C833 ; branch if not end of script C1/C829: 9E 2E 6A STZ $6A2E,X ; deactivate thread C1/C82C: A0 00 01 LDY #$0100 C1/C82F: 8C F5 4A STY $4AF5 ; set bg3 horizontal scroll position to $0100 (HDMA data) C1/C832: 60 RTS C1/C833: 30 33 BMI $C868 ; branch if script command C1/C835: 18 CLC C1/C836: 7D 8C 6F ADC $6F8C,X ; add frame offset C1/C839: 29 7F AND #$7F C1/C83B: C2 20 REP #$20 C1/C83D: EB XBA C1/C83E: 0A ASL C1/C83F: 18 CLC C1/C840: 69 00 E4 ADC #$E400 ; pointer to bg3 tile data buffer C1/C843: 8D 26 7B STA $7B26 C1/C846: BD 3A 6A LDA $6A3A,X ; x position C1/C849: 18 CLC C1/C84A: 7D CE 74 ADC $74CE,X ; x offset C1/C84D: 8D 29 7B STA $7B29 ; bg3 horizontal scroll position C1/C850: BD 3C 6A LDA $6A3C,X ; y position C1/C853: 18 CLC C1/C854: 7D D0 74 ADC $74D0,X ; y offset C1/C857: 8D 2B 7B STA $7B2B ; bg3 vertical scroll position C1/C85A: 7B TDC C1/C85B: E2 20 SEP #$20 C1/C85D: A9 7F LDA #$7F C1/C85F: 8D 28 7B STA $7B28 ; tile data pointer bank C1/C862: A9 01 LDA #$01 C1/C864: 8D 21 7B STA $7B21 ; enable b3 animation tile data update C1/C867: 60 RTS C1/C868: 20 D7 D9 JSR $D9D7 ; execute battle animation command C1/C86B: A4 5B LDY $5B ; increment script pointer C1/C86D: C8 INY C1/C86E: 84 5B STY $5B C1/C870: 80 B1 BRA $C823 ; next command/frame C1/C872: 60 RTS ; -------------------------------[ Battle Graphics: Animation Commands ]-------------------------------- ; [ Battle Animation Command $C7: ] magic_code47: C1/C873: 22 81 C0 C2 JSL $C2C081 C1/C877: 60 RTS ; [ Battle Animation Command $80 ] magic_code00: C1/C878: A7 5B LDA [$5B] ; next byte C1/C87A: C2 20 REP #$20 C1/C87C: 0A ASL C1/C87D: AA TAX C1/C87E: 7B TDC C1/C87F: E2 20 SEP #$20 C1/C881: A0 01 00 LDY #$0001 C1/C884: FC 8B C8 JSR ($C88B,X) C1/C887: AE F6 7A LDX $7AF6 C1/C88A: 60 RTS ; battle animation command $80 jump table magic_init_jmp: C1/C88B: .DW $D9BE, $D9A9, $D981, $D995, $D96E, $D938, $D907, $D8F2 C1/C89B: .DW $D8EB, $D879, $D82B, $D7E3, $D753, $D7C4, $D79D, $D779 C1/C8AB: .DW $D73E, $D727, $D734, $D6E5, $D6BD, $D698, $D68E, $CBC1 C1/C8BB: .DW $D677, $D62E, $CB74, $CB5D, $CB6A, $CB61, $D56B, $D5FC C1/C8CB: .DW $D59F, $D54E, $D4F2, $D4BE, $D49B, $D4AD, $D493, $D48B C1/C8DB: .DW $D45C, $D454, $D44C, $D43C, $D444, $D423, $D3E4, $D3AF C1/C8EB: .DW $D38E, $D365, $D33E, $D2D2, $D28D, $D27A, $D267, $D256 C1/C8FB: .DW $D24D, $D1E6, $D1DE, $D1B0, $D18A, $D12E, $D126, $D0E0 C1/C90B: .DW $D0D3, $D06D, $D064, $D00B, $CFCC, $CFC0, $CFB9, $CFAA C1/C91B: .DW $CF8D, $CF7F, $CF6A, $D2CC, $CF45, $CF1C, $CF15, $CEF0 C1/C92B: .DW $CE9A, $CE62, $CE29, $CDDF, $CDC4, $CD72, $CD28, $CD1F C1/C93B: .DW $CD17, $CD12, $CD0D, $CD08, $CD03, $CCDF, $CC98, $CC93 C1/C94B: .DW $CC3F, $CC1A, $CBF5, $D361, $CBE5, $CBE0, $CBDB, $CBD6 C1/C95B: .DW $CBD1, $CBB6, $CBAC, $CBB1, $CB5A, $CB56, $CB51, $CB4D C1/C96B: .DW $CB43, $CB34, $CB48, $CB1D, $CAB8, $CAE5, $CAD6, $CADB C1/C97B: .DW $CAE0, $CAC2, $CAC7, $CACC, $CAD1, $CABD, $CAA1, $CA9D C1/C98B: .DW $CA65, $CA61, $CA3D, $CA38, $CA29, $CA24, $CA0F, $C9F7 C1/C99B: .DW $C9C9, $C9C1, $C9A9, $C9A5, $CA09 ; [ Battle Animation Command $80/$8B: Play ??? Sound Effect ] magic_init_139: C1/C9A5: EE 81 62 INC $6281 C1/C9A8: 60 RTS ; [ Battle Animation Command $80/$8A: Set Target Monster Sprite Priority to 0 ] magic_init_138: C1/C9A9: AE F6 7A LDX $7AF6 C1/C9AC: BD 39 6A LDA $6A39,X ; target C1/C9AF: 10 0F BPL $C9C0 ; return if a character C1/C9B1: 29 7F AND #$7F C1/C9B3: 38 SEC C1/C9B4: E9 04 SBC #$04 ; monster number C1/C9B6: 0A ASL C1/C9B7: A8 TAY C1/C9B8: B9 DC 80 LDA $80DC,Y ; set sprite priority to 0 C1/C9BB: 29 CF AND #$CF C1/C9BD: 99 DC 80 STA $80DC,Y C1/C9C0: 60 RTS ; [ Battle Animation Command $80/$89: ] magic_init_137: C1/C9C1: B7 5B LDA [$5B],Y C1/C9C3: 8D 85 62 STA $6285 C1/C9C6: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$88: ] magic_init_136: C1/C9C9: AE F6 7A LDX $7AF6 C1/C9CC: BD 39 6A LDA $6A39,X C1/C9CF: 0A ASL C1/C9D0: 0A ASL C1/C9D1: 0A ASL C1/C9D2: 0A ASL C1/C9D3: 0A ASL C1/C9D4: A8 TAY C1/C9D5: C2 20 REP #$20 C1/C9D7: B9 B7 61 LDA $61B7,Y C1/C9DA: 18 CLC C1/C9DB: 79 C5 61 ADC $61C5,Y C1/C9DE: 18 CLC C1/C9DF: 79 D4 61 ADC $61D4,Y C1/C9E2: 18 CLC C1/C9E3: 69 08 00 ADC #$0008 C1/C9E6: 9D 3A 6A STA $6A3A,X C1/C9E9: B9 B9 61 LDA $61B9,Y C1/C9EC: 18 CLC C1/C9ED: 79 C7 61 ADC $61C7,Y C1/C9F0: 9D 3C 6A STA $6A3C,X C1/C9F3: 7B TDC C1/C9F4: E2 20 SEP #$20 C1/C9F6: 60 RTS ; [ Battle Animation Command $80/$87: ] magic_init_135: C1/C9F7: AD BB EC LDA $ECBB C1/C9FA: F0 0A BEQ $CA06 C1/C9FC: AE F6 7A LDX $7AF6 C1/C9FF: BD 80 6F LDA $6F80,X C1/CA02: 85 10 STA $10 C1/CA04: 80 11 BRA $CA17 C1/CA06: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$8C: ] magic_init_140: C1/CA09: A9 80 LDA #$80 C1/CA0B: 85 10 STA $10 C1/CA0D: 80 08 BRA $CA17 ; [ Battle Animation Command $80/$86: ] magic_init_134: C1/CA0F: AE F6 7A LDX $7AF6 C1/CA12: BD 7E 6F LDA $6F7E,X C1/CA15: 85 10 STA $10 C1/CA17: B7 5B LDA [$5B],Y C1/CA19: D0 03 BNE $CA1E C1/CA1B: AD E7 E9 LDA $E9E7 C1/CA1E: 20 EF 17 JSR $17EF ; play animation sound effect C1/CA21: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$85: ] magic_init_133: C1/CA24: 22 21 AF C2 JSL $C2AF21 C1/CA28: 60 RTS ; [ Battle Animation Command $80/$84: ] magic_init_132: C1/CA29: C2 20 REP #$20 C1/CA2B: AE B6 EC LDX $ECB6 C1/CA2E: AD B4 EC LDA $ECB4 C1/CA31: 9D CF 80 STA $80CF,X C1/CA34: 7B TDC C1/CA35: E2 20 SEP #$20 C1/CA37: 60 RTS ; [ Battle Animation Command $80/$83: ] magic_init_131: C1/CA38: 22 61 AF C2 JSL $C2AF61 C1/CA3C: 60 RTS ; [ Battle Animation Command $80/$82: ] magic_init_130: C1/CA3D: 64 11 STZ $11 C1/CA3F: B7 5B LDA [$5B],Y C1/CA41: 85 10 STA $10 C1/CA43: 10 02 BPL $CA47 C1/CA45: C6 11 DEC $11 C1/CA47: C2 20 REP #$20 C1/CA49: 7B TDC C1/CA4A: AA TAX C1/CA4B: BD C3 80 LDA $80C3,X C1/CA4E: 18 CLC C1/CA4F: 65 10 ADC $10 C1/CA51: 9D C3 80 STA $80C3,X C1/CA54: E8 INX C1/CA55: E8 INX C1/CA56: E0 0C 00 CPX #$000C C1/CA59: D0 F0 BNE $CA4B C1/CA5B: E6 5B INC $5B C1/CA5D: 7B TDC C1/CA5E: E2 20 SEP #$20 C1/CA60: 60 RTS ; [ Battle Animation Command $80/$81: ] magic_init_129: C1/CA61: 9C CB 88 STZ $88CB C1/CA64: 60 RTS ; [ Battle Animation Command $80/$80: ] magic_init_128: C1/CA65: A6 5B LDX $5B C1/CA67: E8 INX C1/CA68: 86 5B STX $5B C1/CA6A: A2 CB 88 LDX #$88CB C1/CA6D: 20 BB EA JSR $EABB C1/CA70: 7B TDC C1/CA71: 20 85 CA JSR $CA85 C1/CA74: A9 20 LDA #$20 C1/CA76: 20 85 CA JSR $CA85 C1/CA79: A9 40 LDA #$40 C1/CA7B: 20 85 CA JSR $CA85 C1/CA7E: A6 5B LDX $5B C1/CA80: E8 INX C1/CA81: E8 INX C1/CA82: 86 5B STX $5B C1/CA84: 60 RTS ; [ ] init_one_col_down: C1/CA85: 85 10 STA $10 C1/CA87: A0 01 00 LDY #$0001 C1/CA8A: B7 5B LDA [$5B],Y C1/CA8C: 85 12 STA $12 C1/CA8E: C8 INY C1/CA8F: B7 5B LDA [$5B],Y C1/CA91: 18 CLC C1/CA92: 65 10 ADC $10 C1/CA94: 85 10 STA $10 C1/CA96: A9 01 LDA #$01 C1/CA98: 85 11 STA $11 C1/CA9A: 4C 53 EB JMP $EB53 ; [ Battle Animation Command $80/$7F: Hide All Monsters ] ; used by boss death animation magic_init_127: C1/CA9D: 9C AB 61 STZ $61AB ; hide all monsters C1/CAA0: 60 RTS ; [ Battle Animation Command $80/$7E: Flip Target Character Vertically ] ; used by suplex magic_init_126: C1/CAA1: AE F6 7A LDX $7AF6 C1/CAA4: BD 39 6A LDA $6A39,X ; target C1/CAA7: 30 0E BMI $CAB7 ; return if a monster C1/CAA9: 0A ASL C1/CAAA: 0A ASL C1/CAAB: 0A ASL C1/CAAC: 0A ASL C1/CAAD: 0A ASL C1/CAAE: AA TAX C1/CAAF: BD BE 61 LDA $61BE,X ; flip character vertically C1/CAB2: 49 80 EOR #$80 C1/CAB4: 9D BE 61 STA $61BE,X C1/CAB7: 60 RTS ; [ Battle Animation Command $80/$74: ] magic_init_116: C1/CAB8: 22 17 B0 C2 JSL $C2B017 C1/CABC: 60 RTS ; [ Battle Animation Command $80/$7D: Branch if Dragon Horn is Active ] magic_init_125: C1/CABD: 22 3E B0 C2 JSL $C2B03E C1/CAC1: 60 RTS ; [ Battle Animation Command $80/$79: Characters Run to Left Side of Screen ] magic_init_121: C1/CAC2: 22 D5 B2 C2 JSL $C2B2D5 C1/CAC6: 60 RTS ; [ Battle Animation Command $80/$7A: Characters Run to Right Side of Screen ] magic_init_122: C1/CAC7: 22 03 B3 C2 JSL $C2B303 C1/CACB: 60 RTS ; [ Battle Animation Command $80/$7B: Flip All Characters ] magic_init_123: C1/CACC: 22 B4 B2 C2 JSL $C2B2B4 C1/CAD0: 60 RTS ; [ Battle Animation Command $80/$7C: Swap Target and Attacker ] magic_init_124: C1/CAD1: 22 81 B2 C2 JSL $C2B281 C1/CAD5: 60 RTS ; [ Battle Animation Command $80/$76: ] magic_init_118: C1/CAD6: 22 8C B3 C2 JSL $C2B38C C1/CADA: 60 RTS ; [ Battle Animation Command $80/$77: ] magic_init_119: C1/CADB: 22 31 B3 C2 JSL $C2B331 C1/CADF: 60 RTS ; [ Battle Animation Command $80/$78: ] magic_init_120: C1/CAE0: 22 61 B3 C2 JSL $C2B361 C1/CAE4: 60 RTS ; [ Battle Animation Command $80/$75: ] magic_init_117: C1/CAE5: AE F6 7A LDX $7AF6 C1/CAE8: BD E8 64 LDA $64E8,X C1/CAEB: 09 80 ORA #$80 C1/CAED: C9 90 CMP #$90 C1/CAEF: 90 07 BCC $CAF8 C1/CAF1: C9 A0 CMP #$A0 C1/CAF3: 90 07 BCC $CAFC C1/CAF5: 7B TDC C1/CAF6: 80 06 BRA $CAFE C1/CAF8: A9 01 LDA #$01 C1/CAFA: 80 02 BRA $CAFE C1/CAFC: A9 02 LDA #$02 C1/CAFE: 9D 8C 6F STA $6F8C,X C1/CB01: 20 04 CC JSR $CC04 C1/CB04: C2 20 REP #$20 C1/CB06: BD D0 74 LDA $74D0,X C1/CB09: 18 CLC C1/CB0A: 65 22 ADC $22 C1/CB0C: 9D D0 74 STA $74D0,X C1/CB0F: 7B TDC C1/CB10: E2 20 SEP #$20 C1/CB12: 4C 27 CC JMP $CC27 C1/CB15: .DB $02, $03, $04, $05, $06, $07, $1F, $1F ; [ Battle Animation Command $80/$73: ] magic_init_115: C1/CB1D: AD FB EB LDA $EBFB C1/CB20: B7 5B LDA [$5B],Y C1/CB22: AA TAX C1/CB23: BD FB EB LDA $EBFB,X C1/CB26: AA TAX C1/CB27: BF 15 CB C1 LDA $C1CB15,X C1/CB2B: AE F6 7A LDX $7AF6 C1/CB2E: 9D 8C 6F STA $6F8C,X C1/CB31: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$71: Restore Character Palettes ] magic_init_113: C1/CB34: 7B TDC C1/CB35: AA TAX C1/CB36: BD A0 7D LDA $7DA0,X C1/CB39: 9D A0 7F STA $7FA0,X C1/CB3C: E8 INX C1/CB3D: E0 60 00 CPX #$0060 C1/CB40: D0 F4 BNE $CB36 C1/CB42: 60 RTS ; [ Battle Animation Command $80/$70: ] magic_init_112: C1/CB43: 22 53 DD C2 JSL $C2DD53 C1/CB47: 60 RTS ; [ Battle Animation Command $80/$72: ] magic_init_114: C1/CB48: 22 F8 AF C2 JSL $C2AFF8 C1/CB4C: 60 RTS ; [ Battle Animation Command $80/$6F: ] magic_init_110: C1/CB4D: EE 96 7B INC $7B96 C1/CB50: 60 RTS ; [ Battle Animation Command $80/$6E: ] C1/CB51: 22 71 DD C2 JSL $C2DD71 C1/CB55: 60 RTS ; [ Battle Animation Command $80/$6D: ] magic_init_109: C1/CB56: EE 8B 62 INC $628B C1/CB59: 60 RTS ; [ Battle Animation Command $80/$6C: ] magic_init_108: C1/CB5A: 4C CA 9E JMP $9ECA ; [ Battle Animation Command $80/$1B: ] magic_init_27: C1/CB5D: EE FA EB INC $EBFA C1/CB60: 60 RTS ; [ Battle Animation Command $80/$1D: ] magic_init_29: C1/CB61: A9 20 LDA #$20 C1/CB63: 85 24 STA $24 C1/CB65: A5 0E LDA $0E C1/CB67: 4C 31 CE JMP $CE31 ; [ Battle Animation Command $80/$1C: Decrement Screen Brightness ] magic_init_28: C1/CB6A: AD F9 E9 LDA $E9F9 C1/CB6D: F0 04 BEQ $CB73 C1/CB6F: 3A DEC C1/CB70: 8D F9 E9 STA $E9F9 C1/CB73: 60 RTS ; [ Battle Animation Command $80/$1A: ] magic_init_26: C1/CB74: AE F6 7A LDX $7AF6 C1/CB77: BD 39 6A LDA $6A39,X ; target C1/CB7A: 10 2F BPL $CBAB ; return if a character C1/CB7C: 29 0F AND #$0F C1/CB7E: 38 SEC C1/CB7F: E9 04 SBC #$04 C1/CB81: AA TAX C1/CB82: BF 01 1A C1 LDA $C11A01,X ; $10 = bit mask C1/CB86: 85 10 STA $10 C1/CB88: A6 5B LDX $5B C1/CB8A: E8 INX C1/CB8B: 86 5B STX $5B C1/CB8D: A7 5B LDA [$5B] C1/CB8F: 29 01 AND #$01 C1/CB91: F0 0A BEQ $CB9D C1/CB93: AD 91 61 LDA $6191 C1/CB96: 05 10 ORA $10 C1/CB98: 8D 91 61 STA $6191 C1/CB9B: 80 0E BRA $CBAB C1/CB9D: A5 10 LDA $10 C1/CB9F: 49 FF EOR #$FF C1/CBA1: 85 10 STA $10 C1/CBA3: AD 91 61 LDA $6191 C1/CBA6: 25 10 AND $10 C1/CBA8: 8D 91 61 STA $6191 C1/CBAB: 60 RTS ; [ Battle Animation Command $80/$6A: ] magic_init_106: C1/CBAC: 22 C0 B9 C2 JSL $C2B9C0 C1/CBB0: 60 RTS ; [ Battle Animation Command $80/$6B: ] magic_init_107: C1/CBB1: 22 99 B9 C2 JSL $C2B999 C1/CBB5: 60 RTS ; [ Battle Animation Command $80/$69: Update Sprite Layer Priority Based on Attacker ] magic_init_105: C1/CBB6: 20 8A C3 JSR $C38A C1/CBB9: AE F6 7A LDX $7AF6 C1/CBBC: BD 38 6A LDA $6A38,X ; attacker C1/CBBF: 80 09 BRA $CBCA ; [ Battle Animation Command $80/$17: Update Sprite Layer Priority Based on Target ] magic_init_23: C1/CBC1: 20 8A C3 JSR $C38A ; make all character/monster sprites priority 3 C1/CBC4: AE F6 7A LDX $7AF6 C1/CBC7: BD 39 6A LDA $6A39,X ; target C1/CBCA: 20 FA C3 JSR $C3FA ; update character/monster layer priority C1/CBCD: AE F6 7A LDX $7AF6 C1/CBD0: 60 RTS ; [ Battle Animation Command $80/$68: ] magic_init_104: C1/CBD1: 22 B4 BB C2 JSL $C2BBB4 C1/CBD5: 60 RTS ; [ Battle Animation Command $80/$67: ] magic_init_103: C1/CBD6: 22 CF BB C2 JSL $C2BBCF C1/CBDA: 60 RTS ; [ Battle Animation Command $80/$66: ] magic_init_102: C1/CBDB: 22 FA BB C2 JSL $C2BBFA C1/CBDF: 60 RTS ; [ Battle Animation Command $80/$65: ] magic_init_101: C1/CBE0: 22 08 BC C2 JSL $C2BC08 C1/CBE4: 60 RTS ; [ Battle Animation Command $80/$64: ] magic_init_100: C1/CBE5: AE F6 7A LDX $7AF6 C1/CBE8: 7B TDC C1/CBE9: 9D 37 6A STA $6A37,X C1/CBEC: AD 6F 89 LDA $896F C1/CBEF: 29 EF AND #$EF C1/CBF1: 8D 6F 89 STA $896F C1/CBF4: 60 RTS ; [ Battle Animation Command $80/$62: ] magic_init_98: C1/CBF5: 20 04 CC JSR $CC04 C1/CBF8: C2 20 REP #$20 C1/CBFA: A5 22 LDA $22 C1/CBFC: 9D CE 74 STA $74CE,X C1/CBFF: 7B TDC C1/CC00: E2 20 SEP #$20 C1/CC02: 80 23 BRA $CC27 ; [ ] magic_init_97_sub1: C1/CC04: B7 5B LDA [$5B],Y C1/CC06: 85 24 STA $24 C1/CC08: AE F6 7A LDX $7AF6 C1/CC0B: BD E8 64 LDA $64E8,X C1/CC0E: A0 03 00 LDY #$0003 C1/CC11: 17 5B ORA [$5B],Y C1/CC13: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/CC16: AE F6 7A LDX $7AF6 C1/CC19: 60 RTS ; [ Battle Animation Command $80/$61: ] magic_init_97: C1/CC1A: 20 04 CC JSR $CC04 C1/CC1D: C2 20 REP #$20 C1/CC1F: A5 22 LDA $22 C1/CC21: 9D D0 74 STA $74D0,X ; thread y offset C1/CC24: 7B TDC C1/CC25: E2 20 SEP #$20 C1/CC27: A0 02 00 LDY #$0002 C1/CC2A: B7 5B LDA [$5B],Y C1/CC2C: 85 22 STA $22 C1/CC2E: BD E8 64 LDA $64E8,X C1/CC31: 18 CLC C1/CC32: 65 22 ADC $22 C1/CC34: 9D E8 64 STA $64E8,X C1/CC37: A4 5B LDY $5B C1/CC39: C8 INY C1/CC3A: C8 INY C1/CC3B: C8 INY C1/CC3C: 84 5B STY $5B C1/CC3E: 60 RTS ; [ Battle Animation Command $80/$60: ] magic_init_96: C1/CC3F: AE F6 7A LDX $7AF6 C1/CC42: BD 38 6A LDA $6A38,X C1/CC45: 30 43 BMI $CC8A C1/CC47: 29 03 AND #$03 C1/CC49: 48 PHA C1/CC4A: 0A ASL C1/CC4B: 0A ASL C1/CC4C: 0A ASL C1/CC4D: 0A ASL C1/CC4E: 0A ASL C1/CC4F: AA TAX C1/CC50: A0 01 00 LDY #$0001 C1/CC53: B7 5B LDA [$5B],Y C1/CC55: 99 0F 00 STA $000F,Y C1/CC58: C8 INY C1/CC59: C0 05 00 CPY #$0005 C1/CC5C: D0 F5 BNE $CC53 C1/CC5E: BD BD 2E LDA $2EBD,X C1/CC61: 45 10 EOR $10 C1/CC63: 9D BD 2E STA $2EBD,X C1/CC66: BD BE 2E LDA $2EBE,X C1/CC69: 45 11 EOR $11 C1/CC6B: 9D BE 2E STA $2EBE,X C1/CC6E: BD BF 2E LDA $2EBF,X C1/CC71: 45 12 EOR $12 C1/CC73: 9D BF 2E STA $2EBF,X C1/CC76: BD C0 2E LDA $2EC0,X C1/CC79: 45 13 EOR $13 C1/CC7B: 9D C0 2E STA $2EC0,X C1/CC7E: 68 PLA C1/CC7F: 8D 78 7B STA $7B78 C1/CC82: AE F6 7A LDX $7AF6 C1/CC85: DA PHX C1/CC86: 20 79 2F JSR $2F79 ; update character status change animations C1/CC89: FA PLX C1/CC8A: A4 5B LDY $5B C1/CC8C: C8 INY C1/CC8D: C8 INY C1/CC8E: C8 INY C1/CC8F: C8 INY C1/CC90: 84 5B STY $5B C1/CC92: 60 RTS ; [ Battle Animation Command $80/$5F: ] magic_init_95: C1/CC93: 22 38 BC C2 JSL $C2BC38 C1/CC97: 60 RTS ; [ Battle Animation Command $80/$5E: ] magic_init_94: C1/CC98: A5 0E LDA $0E C1/CC9A: 0A ASL C1/CC9B: 49 FF EOR #$FF C1/CC9D: 1A INC C1/CC9E: 85 12 STA $12 C1/CCA0: AD F0 E9 LDA $E9F0 C1/CCA3: 85 24 STA $24 C1/CCA5: A5 12 LDA $12 C1/CCA7: 20 67 6C JSR $6C67 C1/CCAA: C2 20 REP #$20 C1/CCAC: A5 28 LDA $28 C1/CCAE: 8D C4 E9 STA $E9C4 C1/CCB1: 8D CA E9 STA $E9CA C1/CCB4: 7B TDC C1/CCB5: E2 20 SEP #$20 C1/CCB7: AD F0 E9 LDA $E9F0 C1/CCBA: 85 24 STA $24 C1/CCBC: A5 12 LDA $12 C1/CCBE: 18 CLC C1/CCBF: 69 40 ADC #$40 C1/CCC1: 20 67 6C JSR $6C67 C1/CCC4: C2 20 REP #$20 C1/CCC6: A5 28 LDA $28 C1/CCC8: 8D C6 E9 STA $E9C6 C1/CCCB: 49 FF FF EOR #$FFFF C1/CCCE: 1A INC C1/CCCF: 8D C8 E9 STA $E9C8 C1/CCD2: 7B TDC C1/CCD3: E2 20 SEP #$20 C1/CCD5: AD F0 E9 LDA $E9F0 C1/CCD8: 38 SEC C1/CCD9: E9 02 SBC #$02 C1/CCDB: 8D F0 E9 STA $E9F0 C1/CCDE: 60 RTS ; [ Battle Animation Command $80/$5D: ] magic_init_93: C1/CCDF: A9 18 LDA #$18 C1/CCE1: 85 24 STA $24 C1/CCE3: AE F6 7A LDX $7AF6 C1/CCE6: BD E8 64 LDA $64E8,X C1/CCE9: 0A ASL C1/CCEA: 0A ASL C1/CCEB: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/CCEE: AE F6 7A LDX $7AF6 C1/CCF1: C2 20 REP #$20 C1/CCF3: BD D0 74 LDA $74D0,X C1/CCF6: 18 CLC C1/CCF7: 65 22 ADC $22 C1/CCF9: 9D D0 74 STA $74D0,X C1/CCFC: 7B TDC C1/CCFD: E2 20 SEP #$20 C1/CCFF: FE E8 64 INC $64E8,X C1/CD02: 60 RTS ; [ Battle Animation Command $80/$5C: ] magic_init_92: C1/CD03: 22 81 BC C2 JSL $C2BC81 C1/CD07: 60 RTS ; [ Battle Animation Command $80/$5B: ] magic_init_91: C1/CD08: 22 99 BC C2 JSL $C2BC99 C1/CD0C: 60 RTS ; [ Battle Animation Command $80/$5A: ] magic_init_90: C1/CD0D: 22 B7 BC C2 JSL $C2BCB7 C1/CD11: 60 RTS ; [ Battle Animation Command $80/$59: ] magic_init_89: C1/CD12: 22 E3 BC C2 JSL $C2BCE3 C1/CD16: 60 RTS ; [ Battle Animation Command $80/$58: Set Circle Shape ] ; b1: circle shape magic_init_88: C1/CD17: B7 5B LDA [$5B],Y C1/CD19: 8D 1B 96 STA $961B ; circle shape C1/CD1C: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$57: Set BG3/BG4 Window Mask Settings ] ; b1: ----2211 ; 2: enable bg3 in window 2 ; 1: enable bg3 in window 1 magic_init_87: C1/CD1F: B7 5B LDA [$5B],Y C1/CD21: 8F 24 21 00 STA $002124 ; bg3/bg4 window mask settings C1/CD25: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$56: ] magic_init_86: C1/CD28: 7B TDC C1/CD29: AA TAX C1/CD2A: A8 TAY C1/CD2B: C2 20 REP #$20 C1/CD2D: A5 0E LDA $0E C1/CD2F: 0A ASL C1/CD30: 85 12 STA $12 C1/CD32: 0A ASL C1/CD33: 0A ASL C1/CD34: 85 10 STA $10 C1/CD36: AE F6 7A LDX $7AF6 C1/CD39: BD 87 6F LDA $6F87,X C1/CD3C: 29 FF 00 AND #$00FF C1/CD3F: D0 10 BNE $CD51 C1/CD41: A5 10 LDA $10 C1/CD43: 49 FF FF EOR #$FFFF C1/CD46: 1A INC C1/CD47: 85 10 STA $10 C1/CD49: A5 12 LDA $12 C1/CD4B: 49 FF FF EOR #$FFFF C1/CD4E: 1A INC C1/CD4F: 85 12 STA $12 C1/CD51: 7B TDC C1/CD52: AA TAX C1/CD53: BF 00 FD C0 LDA $C0FD00,X C1/CD57: 30 05 BMI $CD5E C1/CD59: 38 SEC C1/CD5A: E5 12 SBC $12 C1/CD5C: 80 03 BRA $CD61 C1/CD5E: 38 SEC C1/CD5F: E5 10 SBC $10 C1/CD61: 99 F5 43 STA $43F5,Y C1/CD64: E8 INX C1/CD65: C8 INY C1/CD66: C8 INY C1/CD67: C8 INY C1/CD68: C8 INY C1/CD69: E0 97 00 CPX #$0097 C1/CD6C: D0 E5 BNE $CD53 C1/CD6E: 7B TDC C1/CD6F: E2 20 SEP #$20 C1/CD71: 60 RTS ; [ Battle Animation Command $80/$55: ] magic_init_85: C1/CD72: B7 5B LDA [$5B],Y C1/CD74: F0 45 BEQ $CDBB C1/CD76: 7B TDC C1/CD77: AA TAX C1/CD78: C2 20 REP #$20 C1/CD7A: AD D0 E9 LDA $E9D0 C1/CD7D: 0A ASL C1/CD7E: 0A ASL C1/CD7F: 85 10 STA $10 C1/CD81: AD B6 64 LDA $64B6 C1/CD84: 9D F7 43 STA $43F7,X C1/CD87: E8 INX C1/CD88: E8 INX C1/CD89: E8 INX C1/CD8A: E8 INX C1/CD8B: E4 10 CPX $10 C1/CD8D: D0 F5 BNE $CD84 C1/CD8F: 9D F7 43 STA $43F7,X C1/CD92: 3A DEC C1/CD93: E8 INX C1/CD94: E8 INX C1/CD95: E8 INX C1/CD96: E8 INX C1/CD97: E0 5C 02 CPX #$025C C1/CD9A: D0 F3 BNE $CD8F C1/CD9C: EE D0 E9 INC $E9D0 C1/CD9F: 7B TDC C1/CDA0: AA TAX C1/CDA1: AD B4 64 LDA $64B4 C1/CDA4: 9D F5 43 STA $43F5,X C1/CDA7: 9D 21 45 STA $4521,X C1/CDAA: E8 INX C1/CDAB: E8 INX C1/CDAC: E8 INX C1/CDAD: E8 INX C1/CDAE: E0 2C 01 CPX #$012C C1/CDB1: D0 F1 BNE $CDA4 C1/CDB3: 8D 4D 46 STA $464D C1/CDB6: 7B TDC C1/CDB7: E2 20 SEP #$20 C1/CDB9: 80 06 BRA $CDC1 C1/CDBB: A0 01 00 LDY #$0001 C1/CDBE: 8C D0 E9 STY $E9D0 C1/CDC1: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$54: ] magic_init_84: C1/CDC4: AE F6 7A LDX $7AF6 C1/CDC7: BD 39 6A LDA $6A39,X C1/CDCA: 30 12 BMI $CDDE C1/CDCC: 0A ASL C1/CDCD: 0A ASL C1/CDCE: 0A ASL C1/CDCF: 0A ASL C1/CDD0: 0A ASL C1/CDD1: A8 TAY C1/CDD2: B9 C5 2E LDA $2EC5,Y C1/CDD5: 49 01 EOR #$01 C1/CDD7: 99 C5 2E STA $2EC5,Y C1/CDDA: 7B TDC C1/CDDB: 99 C0 61 STA $61C0,Y C1/CDDE: 60 RTS ; [ Battle Animation Command $80/$53: ] magic_init_83: C1/CDDF: AE F6 7A LDX $7AF6 C1/CDE2: BD 39 6A LDA $6A39,X C1/CDE5: 30 41 BMI $CE28 C1/CDE7: 29 03 AND #$03 C1/CDE9: 85 10 STA $10 C1/CDEB: 0A ASL C1/CDEC: 0A ASL C1/CDED: 0A ASL C1/CDEE: 0A ASL C1/CDEF: 0A ASL C1/CDF0: A8 TAY C1/CDF1: 64 11 STZ $11 C1/CDF3: AD 1F 20 LDA $201F C1/CDF6: 0A ASL C1/CDF7: 0A ASL C1/CDF8: 18 CLC C1/CDF9: 65 10 ADC $10 C1/CDFB: AA TAX C1/CDFC: B9 C5 2E LDA $2EC5,Y C1/CDFF: 49 01 EOR #$01 C1/CE01: 29 01 AND #$01 C1/CE03: F0 06 BEQ $CE0B C1/CE05: BF 6F A8 C2 LDA $C2A86F,X C1/CE09: 80 04 BRA $CE0F C1/CE0B: BF 7F A8 C2 LDA $C2A87F,X C1/CE0F: 85 10 STA $10 C1/CE11: 10 02 BPL $CE15 C1/CE13: C6 11 DEC $11 C1/CE15: A9 04 LDA #$04 C1/CE17: 99 C0 61 STA $61C0,Y C1/CE1A: C2 20 REP #$20 C1/CE1C: B9 C9 61 LDA $61C9,Y C1/CE1F: 18 CLC C1/CE20: 65 10 ADC $10 C1/CE22: 99 C9 61 STA $61C9,Y C1/CE25: 7B TDC C1/CE26: E2 20 SEP #$20 C1/CE28: 60 RTS ; [ Battle Animation Command $80/$52: ] magic_init_82: C1/CE29: A9 10 LDA #$10 C1/CE2B: 85 24 STA $24 C1/CE2D: A5 0E LDA $0E C1/CE2F: 0A ASL C1/CE30: 0A ASL C1/CE31: 0A ASL C1/CE32: 0A ASL C1/CE33: 0A ASL C1/CE34: 48 PHA C1/CE35: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/CE38: AE F6 7A LDX $7AF6 C1/CE3B: C2 20 REP #$20 C1/CE3D: BD CE 74 LDA $74CE,X C1/CE40: 18 CLC C1/CE41: 65 22 ADC $22 C1/CE43: 9D CE 74 STA $74CE,X C1/CE46: 7B TDC C1/CE47: E2 20 SEP #$20 C1/CE49: 68 PLA C1/CE4A: 18 CLC C1/CE4B: 69 40 ADC #$40 C1/CE4D: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/CE50: AE F6 7A LDX $7AF6 C1/CE53: C2 20 REP #$20 C1/CE55: BD D0 74 LDA $74D0,X C1/CE58: 18 CLC C1/CE59: 65 22 ADC $22 C1/CE5B: 9D D0 74 STA $74D0,X C1/CE5E: 7B TDC C1/CE5F: E2 20 SEP #$20 C1/CE61: 60 RTS ; [ Battle Animation Command $80/$51: ] magic_init_81: C1/CE62: B7 5B LDA [$5B],Y C1/CE64: F0 08 BEQ $CE6E C1/CE66: 9C 9C 61 STZ $619C C1/CE69: 9C 9D 61 STZ $619D C1/CE6C: 80 12 BRA $CE80 C1/CE6E: AE F6 7A LDX $7AF6 C1/CE71: BD 38 6A LDA $6A38,X C1/CE74: 20 83 CE JSR $CE83 C1/CE77: AE F6 7A LDX $7AF6 C1/CE7A: BD 39 6A LDA $6A39,X C1/CE7D: 20 83 CE JSR $CE83 C1/CE80: 4C C6 CF JMP $CFC6 ; [ ] one_duble_flag_set: C1/CE83: 30 09 BMI $CE8E C1/CE85: 29 03 AND #$03 C1/CE87: 20 09 1A JSR $1A09 C1/CE8A: 8D 9C 61 STA $619C C1/CE8D: 60 RTS C1/CE8E: 29 7F AND #$7F C1/CE90: 38 SEC C1/CE91: E9 04 SBC #$04 C1/CE93: 20 09 1A JSR $1A09 C1/CE96: 8D 9D 61 STA $619D C1/CE99: 60 RTS ; [ Battle Animation Command $80/$50: ] magic_init_80: C1/CE9A: 7B TDC C1/CE9B: AA TAX C1/CE9C: A0 01 00 LDY #$0001 C1/CE9F: A7 5B LDA [$5B] C1/CEA1: D0 01 BNE $CEA4 C1/CEA3: CA DEX C1/CEA4: 86 14 STX $14 C1/CEA6: 7B TDC C1/CEA7: AA TAX C1/CEA8: A8 TAY C1/CEA9: C2 20 REP #$20 C1/CEAB: A5 0E LDA $0E C1/CEAD: 0A ASL C1/CEAE: 85 12 STA $12 C1/CEB0: 0A ASL C1/CEB1: 0A ASL C1/CEB2: 85 10 STA $10 C1/CEB4: AE F6 7A LDX $7AF6 C1/CEB7: BD 87 6F LDA $6F87,X C1/CEBA: 29 FF 00 AND #$00FF C1/CEBD: D0 0E BNE $CECD C1/CEBF: A5 10 LDA $10 C1/CEC1: 45 14 EOR $14 C1/CEC3: 1A INC C1/CEC4: 85 10 STA $10 C1/CEC6: A5 12 LDA $12 C1/CEC8: 45 14 EOR $14 C1/CECA: 1A INC C1/CECB: 85 12 STA $12 C1/CECD: 7B TDC C1/CECE: AA TAX C1/CECF: BF 00 FD C0 LDA $C0FD00,X C1/CED3: 30 05 BMI $CEDA C1/CED5: 38 SEC C1/CED6: E5 12 SBC $12 C1/CED8: 80 03 BRA $CEDD C1/CEDA: 38 SEC C1/CEDB: E5 10 SBC $10 C1/CEDD: 99 F5 4A STA $4AF5,Y C1/CEE0: E8 INX C1/CEE1: C8 INY C1/CEE2: C8 INY C1/CEE3: C8 INY C1/CEE4: C8 INY C1/CEE5: E0 97 00 CPX #$0097 C1/CEE8: D0 E5 BNE $CECF C1/CEEA: 7B TDC C1/CEEB: E2 20 SEP #$20 C1/CEED: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$4F: Move Thread to Attacking Character Position ] magic_init_79: C1/CEF0: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/CEF3: C2 20 REP #$20 C1/CEF5: B9 B7 61 LDA $61B7,Y C1/CEF8: 18 CLC C1/CEF9: 79 C5 61 ADC $61C5,Y C1/CEFC: 18 CLC C1/CEFD: 79 D4 61 ADC $61D4,Y C1/CF00: 18 CLC C1/CF01: 69 08 00 ADC #$0008 C1/CF04: 9D 3A 6A STA $6A3A,X C1/CF07: B9 B9 61 LDA $61B9,Y C1/CF0A: 18 CLC C1/CF0B: 79 C7 61 ADC $61C7,Y C1/CF0E: 9D 3C 6A STA $6A3C,X C1/CF11: 7B TDC C1/CF12: E2 20 SEP #$20 C1/CF14: 60 RTS ; [ Battle Animation Command $80/$4E: Clear Frame Offset ] magic_init_78: C1/CF15: AE F6 7A LDX $7AF6 C1/CF18: 9E 8C 6F STZ $6F8C,X ; clear frame offset C1/CF1B: 60 RTS ; [ Battle Animation Command $80/$4D: Set Vector from Triangle to Target ] magic_init_77: C1/CF1C: AE F6 7A LDX $7AF6 C1/CF1F: AD 54 61 LDA $6154 ; triangle x position C1/CF22: 85 7D STA $7D C1/CF24: 9D 7E 6F STA $6F7E,X ; attacker x position C1/CF27: 9E 7F 6F STZ $6F7F,X C1/CF2A: AD 55 61 LDA $6155 ; triangle y position C1/CF2D: 85 7E STA $7E C1/CF2F: 9D 80 6F STA $6F80,X C1/CF32: 9E 81 6F STZ $6F81,X C1/CF35: BD 82 6F LDA $6F82,X C1/CF38: 85 7F STA $7F C1/CF3A: BD 84 6F LDA $6F84,X C1/CF3D: 85 80 STA $80 C1/CF3F: 20 E9 F9 JSR $F9E9 ; set vector from attacker to target C1/CF42: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$4C: Move Triangle to Thread Position ] magic_init_76: C1/CF45: AE F6 7A LDX $7AF6 C1/CF48: C2 20 REP #$20 C1/CF4A: BD 3A 6A LDA $6A3A,X ; thread x position C1/CF4D: 18 CLC C1/CF4E: 7D CE 74 ADC $74CE,X ; thread x offset C1/CF51: 85 10 STA $10 C1/CF53: BD 3C 6A LDA $6A3C,X ; thread y position C1/CF56: 18 CLC C1/CF57: 7D D0 74 ADC $74D0,X ; thread y offset C1/CF5A: 85 12 STA $12 C1/CF5C: 7B TDC C1/CF5D: E2 20 SEP #$20 C1/CF5F: A5 10 LDA $10 C1/CF61: 8D 54 61 STA $6154 ; triangle x position C1/CF64: A5 12 LDA $12 C1/CF66: 8D 55 61 STA $6155 ; triangle y position C1/CF69: 60 RTS ; [ Battle Animation Command $80/$4A: ] magic_init_74: C1/CF6A: 9C AE 61 STZ $61AE ; disable stepping forward to attack for all characters C1/CF6D: 9C AF 61 STZ $61AF C1/CF70: 9C B0 61 STZ $61B0 C1/CF73: 9C B1 61 STZ $61B1 C1/CF76: 60 RTS C1/CF77: .DB $39, $3B, $3C, $56, $78, $65, $39, $3B ; [ Battle Animation Command $80/$49: ] magic_init_73: C1/CF7F: 20 5B 18 JSR $185B ; update random number C1/CF82: 29 07 AND #$07 C1/CF84: AA TAX C1/CF85: BF 77 CF C1 LDA $C1CF77,X C1/CF89: 20 D7 9B JSR $9BD7 ; load animation palette (sprite) C1/CF8C: 60 RTS ; [ Battle Animation Command $80/$48: ] magic_init_72: C1/CF8D: AE F6 7A LDX $7AF6 C1/CF90: BD 39 6A LDA $6A39,X C1/CF93: 10 14 BPL $CFA9 C1/CF95: 29 7F AND #$7F C1/CF97: 38 SEC C1/CF98: E9 04 SBC #$04 C1/CF9A: 20 09 1A JSR $1A09 C1/CF9D: 49 FF EOR #$FF C1/CF9F: 85 22 STA $22 C1/CFA1: AD E6 E9 LDA $E9E6 C1/CFA4: 25 22 AND $22 C1/CFA6: 8D E6 E9 STA $E9E6 C1/CFA9: 60 RTS ; [ Battle Animation Command $80/$47: ] magic_init_71: C1/CFAA: B7 5B LDA [$5B],Y C1/CFAC: 8D 7D 89 STA $897D C1/CFAF: 8D 7D 60 STA $607D C1/CFB2: 29 0F AND #$0F C1/CFB4: 8D A9 62 STA $62A9 C1/CFB7: 80 0D BRA $CFC6 ; [ Battle Animation Command $80/$46: ] magic_init_70: C1/CFB9: B7 5B LDA [$5B],Y C1/CFBB: 8D 71 89 STA $8971 C1/CFBE: 80 06 BRA $CFC6 ; [ Battle Animation Command $80/$45: ] magic_init_69: C1/CFC0: B7 5B LDA [$5B],Y C1/CFC2: 8F 23 21 00 STA $002123 C1/CFC6: A4 5B LDY $5B C1/CFC8: C8 INY C1/CFC9: 84 5B STY $5B C1/CFCB: 60 RTS ; [ Battle Animation Command $80/$44: ] magic_init_68: C1/CFCC: AE F6 7A LDX $7AF6 C1/CFCF: C2 20 REP #$20 C1/CFD1: BD 6E 6F LDA $6F6E,X C1/CFD4: 9D 7E 6F STA $6F7E,X C1/CFD7: BD 70 6F LDA $6F70,X C1/CFDA: 9D 80 6F STA $6F80,X C1/CFDD: BD 72 6F LDA $6F72,X C1/CFE0: 9D 82 6F STA $6F82,X C1/CFE3: BD 74 6F LDA $6F74,X C1/CFE6: 9D 84 6F STA $6F84,X C1/CFE9: BD 77 6F LDA $6F77,X C1/CFEC: 9D 87 6F STA $6F87,X C1/CFEF: BD 2A 6A LDA $6A2A,X C1/CFF2: 9D 3A 6A STA $6A3A,X C1/CFF5: BD 2C 6A LDA $6A2C,X C1/CFF8: 9D 3C 6A STA $6A3C,X C1/CFFB: BD BE 74 LDA $74BE,X C1/CFFE: 9D CE 74 STA $74CE,X C1/D001: BD C0 74 LDA $74C0,X C1/D004: 9D D0 74 STA $74D0,X C1/D007: 7B TDC C1/D008: E2 20 SEP #$20 C1/D00A: 60 RTS ; [ Battle Animation Command $80/$43: ] magic_init_67: C1/D00B: B7 5B LDA [$5B],Y C1/D00D: F0 4C BEQ $D05B C1/D00F: 7B TDC C1/D010: AA TAX C1/D011: C2 20 REP #$20 C1/D013: AD D0 E9 LDA $E9D0 C1/D016: 0A ASL C1/D017: 0A ASL C1/D018: 85 10 STA $10 C1/D01A: AD B6 64 LDA $64B6 C1/D01D: 18 CLC C1/D01E: 6D D0 E9 ADC $E9D0 C1/D021: 9D F7 43 STA $43F7,X C1/D024: 3A DEC C1/D025: E8 INX C1/D026: E8 INX C1/D027: E8 INX C1/D028: E8 INX C1/D029: E4 10 CPX $10 C1/D02B: D0 F4 BNE $D021 C1/D02D: AD B6 64 LDA $64B6 C1/D030: 9D F7 43 STA $43F7,X C1/D033: E8 INX C1/D034: E8 INX C1/D035: E8 INX C1/D036: E8 INX C1/D037: E0 5C 02 CPX #$025C C1/D03A: D0 F4 BNE $D030 C1/D03C: CE D0 E9 DEC $E9D0 C1/D03F: 7B TDC C1/D040: AA TAX C1/D041: AD B4 64 LDA $64B4 C1/D044: 9D F5 43 STA $43F5,X C1/D047: 9D 21 45 STA $4521,X C1/D04A: E8 INX C1/D04B: E8 INX C1/D04C: E8 INX C1/D04D: E8 INX C1/D04E: E0 2C 01 CPX #$012C C1/D051: D0 F1 BNE $D044 C1/D053: 8D 4D 46 STA $464D C1/D056: 7B TDC C1/D057: E2 20 SEP #$20 C1/D059: 80 06 BRA $D061 C1/D05B: A0 80 00 LDY #$0080 C1/D05E: 8C D0 E9 STY $E9D0 C1/D061: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$42: Set MODE7 Settings Register ($211A) ] ; b1 = ------vh ; v: vertical flip ; h: horizontal flip magic_init_66: C1/D064: B7 5B LDA [$5B],Y C1/D066: 8F 1A 21 00 STA $00211A C1/D06A: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$41: Zoom/Move BG1 (MODE7) ] ; b1 = x zoom change ; b2 = y zoom change ; b3 = x position change ; b4 = y position change magic_init_65: C1/D06D: 64 11 STZ $11 C1/D06F: B7 5B LDA [$5B],Y C1/D071: 10 02 BPL $D075 C1/D073: C6 11 DEC $11 C1/D075: 85 10 STA $10 C1/D077: C2 20 REP #$20 C1/D079: AD C4 E9 LDA $E9C4 ; x zoom C1/D07C: 18 CLC C1/D07D: 65 10 ADC $10 C1/D07F: 8D C4 E9 STA $E9C4 C1/D082: 7B TDC C1/D083: E2 20 SEP #$20 C1/D085: C8 INY C1/D086: 64 11 STZ $11 C1/D088: B7 5B LDA [$5B],Y C1/D08A: 10 02 BPL $D08E C1/D08C: C6 11 DEC $11 C1/D08E: 85 10 STA $10 C1/D090: C2 20 REP #$20 C1/D092: AD CA E9 LDA $E9CA ; y zoom size C1/D095: 18 CLC C1/D096: 65 10 ADC $10 C1/D098: 8D CA E9 STA $E9CA C1/D09B: E2 20 SEP #$20 C1/D09D: C8 INY C1/D09E: 64 11 STZ $11 C1/D0A0: B7 5B LDA [$5B],Y C1/D0A2: 10 02 BPL $D0A6 C1/D0A4: C6 11 DEC $11 C1/D0A6: 85 10 STA $10 C1/D0A8: C8 INY C1/D0A9: 64 13 STZ $13 C1/D0AB: B7 5B LDA [$5B],Y C1/D0AD: 10 02 BPL $D0B1 C1/D0AF: C6 13 DEC $13 C1/D0B1: 85 12 STA $12 C1/D0B3: C2 20 REP #$20 C1/D0B5: AD CC E9 LDA $E9CC ; x position C1/D0B8: 18 CLC C1/D0B9: 65 10 ADC $10 C1/D0BB: 8D CC E9 STA $E9CC C1/D0BE: AD CE E9 LDA $E9CE ; y position C1/D0C1: 18 CLC C1/D0C2: 65 12 ADC $12 C1/D0C4: 8D CE E9 STA $E9CE C1/D0C7: A5 5B LDA $5B C1/D0C9: 18 CLC C1/D0CA: 69 04 00 ADC #$0004 C1/D0CD: 85 5B STA $5B C1/D0CF: 7B TDC C1/D0D0: E2 20 SEP #$20 C1/D0D2: 60 RTS ; [ Battle Animation Command $80/$40: Set Screen Mode ($2105) ] ; b1 = -----mmm ; m: screen mode magic_init_64: C1/D0D3: AD 6F 89 LDA $896F C1/D0D6: 29 F8 AND #$F8 C1/D0D8: 17 5B ORA [$5B],Y C1/D0DA: 8D 6F 89 STA $896F C1/D0DD: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$3F: ] magic_init_63: C1/D0E0: AE F6 7A LDX $7AF6 C1/D0E3: BD 7E 6F LDA $6F7E,X C1/D0E6: 4A LSR C1/D0E7: 4A LSR C1/D0E8: 4A LSR C1/D0E9: 85 10 STA $10 C1/D0EB: BD 7E 6F LDA $6F7E,X C1/D0EE: 49 FF EOR #$FF C1/D0F0: 1A INC C1/D0F1: 4A LSR C1/D0F2: 4A LSR C1/D0F3: 4A LSR C1/D0F4: 85 12 STA $12 C1/D0F6: AD 1F 20 LDA $201F C1/D0F9: 29 03 AND #$03 C1/D0FB: C9 02 CMP #$02 C1/D0FD: D0 03 BNE $D102 C1/D0FF: 7B TDC C1/D100: 80 02 BRA $D104 C1/D102: A9 08 LDA #$08 C1/D104: 85 14 STA $14 C1/D106: AD 3B 6F LDA $6F3B C1/D109: 29 01 AND #$01 C1/D10B: D0 11 BNE $D11E C1/D10D: AD 3A 6F LDA $6F3A C1/D110: 38 SEC C1/D111: E5 14 SBC $14 C1/D113: 4A LSR C1/D114: 4A LSR C1/D115: 4A LSR C1/D116: C5 10 CMP $10 C1/D118: F0 0B BEQ $D125 C1/D11A: C5 12 CMP $12 C1/D11C: F0 07 BEQ $D125 C1/D11E: A4 5B LDY $5B C1/D120: 88 DEY C1/D121: 88 DEY C1/D122: 88 DEY C1/D123: 84 5B STY $5B C1/D125: 60 RTS ; [ Battle Animation Command $80/$3E: Set Main Screen Layers ] ; b1: ---s4321 ; s: enable sprites ; 4: enable bg4 ; 3: enable bg3 ; 2: enable bg2 ; 1: enable bg1 magic_init_62: C1/D126: B7 5B LDA [$5B],Y C1/D128: 8D 8D 89 STA $898D ; main screen designation (->$212C) C1/D12B: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$3D: ] magic_init_61: C1/D12E: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/D131: BD 87 6F LDA $6F87,X C1/D134: 29 40 AND #$40 C1/D136: D0 04 BNE $D13C C1/D138: A9 18 LDA #$18 C1/D13A: 80 02 BRA $D13E C1/D13C: A9 E8 LDA #$E8 C1/D13E: 85 26 STA $26 C1/D140: BD 39 6A LDA $6A39,X C1/D143: 30 17 BMI $D15C C1/D145: 29 03 AND #$03 C1/D147: 0A ASL C1/D148: A8 TAY C1/D149: B9 33 80 LDA $8033,Y C1/D14C: 18 CLC C1/D14D: 65 26 ADC $26 C1/D14F: 90 03 BCC $D154 C1/D151: B9 33 80 LDA $8033,Y C1/D154: 9D 82 6F STA $6F82,X C1/D157: B9 43 80 LDA $8043,Y C1/D15A: 80 11 BRA $D16D C1/D15C: 38 SEC C1/D15D: E9 04 SBC #$04 C1/D15F: 0A ASL C1/D160: A8 TAY C1/D161: B9 0F 80 LDA $800F,Y C1/D164: 18 CLC C1/D165: 65 26 ADC $26 C1/D167: 9D 82 6F STA $6F82,X C1/D16A: B9 27 80 LDA $8027,Y C1/D16D: 38 SEC C1/D16E: E9 08 SBC #$08 C1/D170: 9D 84 6F STA $6F84,X C1/D173: 20 E8 E7 JSR $E7E8 C1/D176: AE F6 7A LDX $7AF6 C1/D179: A5 85 LDA $85 C1/D17B: 18 CLC C1/D17C: 69 28 ADC #$28 C1/D17E: 9D DB 74 STA $74DB,X C1/D181: A9 04 LDA #$04 C1/D183: 8D AF 60 STA $60AF C1/D186: 9C B0 60 STZ $60B0 C1/D189: 60 RTS ; [ Battle Animation Command $80/$3C: Return Target's Palette to Normal ] magic_init_60: C1/D18A: AE F6 7A LDX $7AF6 C1/D18D: BD 39 6A LDA $6A39,X C1/D190: 30 0F BMI $D1A1 ; branch if target is a monster C1/D192: AA TAX C1/D193: 0A ASL C1/D194: 0A ASL C1/D195: 0A ASL C1/D196: 0A ASL C1/D197: 0A ASL C1/D198: A8 TAY C1/D199: BD 6E 61 LDA $616E,X ; restore palette (character) C1/D19C: 99 BC 61 STA $61BC,Y C1/D19F: 80 0E BRA $D1AF C1/D1A1: 29 0F AND #$0F C1/D1A3: AA TAX C1/D1A4: 38 SEC C1/D1A5: E9 04 SBC #$04 C1/D1A7: 0A ASL C1/D1A8: A8 TAY C1/D1A9: BD 6E 61 LDA $616E,X ; restore palette (monster) C1/D1AC: 99 DB 80 STA $80DB,Y C1/D1AF: 60 RTS ; [ Battle Animation Command $80/$3B: Swap Target's Palette w/ Animation Palette ] magic_init_59: C1/D1B0: AE F6 7A LDX $7AF6 C1/D1B3: BD 39 6A LDA $6A39,X C1/D1B6: 30 13 BMI $D1CB ; branch if target is a monster C1/D1B8: AA TAX C1/D1B9: 0A ASL C1/D1BA: 0A ASL C1/D1BB: 0A ASL C1/D1BC: 0A ASL C1/D1BD: 0A ASL C1/D1BE: A8 TAY C1/D1BF: B9 BC 61 LDA $61BC,Y ; set palette index to 3 (character) C1/D1C2: 29 F1 AND #$F1 C1/D1C4: 09 06 ORA #$06 C1/D1C6: 99 BC 61 STA $61BC,Y C1/D1C9: 80 12 BRA $D1DD C1/D1CB: 29 0F AND #$0F C1/D1CD: AA TAX C1/D1CE: 38 SEC C1/D1CF: E9 04 SBC #$04 C1/D1D1: 0A ASL C1/D1D2: A8 TAY C1/D1D3: B9 DB 80 LDA $80DB,Y ; set palette index to 3 (monster) C1/D1D6: 29 F1 AND #$F1 C1/D1D8: 09 06 ORA #$06 C1/D1DA: 99 DB 80 STA $80DB,Y C1/D1DD: 60 RTS ; [ Battle Animation Command $80/$3A: Set Gradient Line Intensity ] magic_init_58: C1/D1DE: B7 5B LDA [$5B],Y C1/D1E0: 8D AE 62 STA $62AE C1/D1E3: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$39: Update Blue Gradient Lines ] ; b1: change in color intensity (signed) magic_init_57: C1/D1E6: A9 80 LDA #$80 C1/D1E8: 85 16 STA $16 C1/D1EA: A0 01 00 LDY #$0001 C1/D1ED: AD AE 62 LDA $62AE C1/D1F0: 18 CLC C1/D1F1: 77 5B ADC [$5B],Y C1/D1F3: 8D AE 62 STA $62AE C1/D1F6: 85 12 STA $12 C1/D1F8: A9 E0 LDA #$E0 C1/D1FA: 8D 96 89 STA $8996 ; fixed color add/sub data -> $2132 C1/D1FD: A5 16 LDA $16 C1/D1FF: 85 10 STA $10 C1/D201: AD AD 62 LDA $62AD C1/D204: 29 1F AND #$1F C1/D206: AA TAX C1/D207: A0 04 00 LDY #$0004 C1/D20A: 5A PHY C1/D20B: BF 9C D2 C1 LDA $C1D29C,X C1/D20F: 38 SEC C1/D210: E5 12 SBC $12 C1/D212: 10 01 BPL $D215 C1/D214: 7B TDC C1/D215: 05 10 ORA $10 C1/D217: 99 96 89 STA $8996,Y C1/D21A: 99 16 8A STA $8A16,Y C1/D21D: 99 96 8A STA $8A96,Y C1/D220: 99 16 8B STA $8B16,Y C1/D223: E8 INX C1/D224: 8A TXA C1/D225: 29 1F AND #$1F C1/D227: AA TAX C1/D228: D0 04 BNE $D22E C1/D22A: A5 16 LDA $16 C1/D22C: 85 10 STA $10 C1/D22E: C8 INY C1/D22F: C8 INY C1/D230: C8 INY C1/D231: C8 INY C1/D232: C0 84 00 CPY #$0084 C1/D235: D0 D4 BNE $D20B C1/D237: 7A PLY C1/D238: B9 96 89 LDA $8996,Y C1/D23B: 99 96 8B STA $8B96,Y C1/D23E: C8 INY C1/D23F: C8 INY C1/D240: C8 INY C1/D241: C8 INY C1/D242: C0 5C 00 CPY #$005C C1/D245: D0 F1 BNE $D238 C1/D247: EE AD 62 INC $62AD C1/D24A: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$38: Enable High Priority BG3 ] magic_init_56: C1/D24D: AD 6F 89 LDA $896F C1/D250: 09 08 ORA #$08 C1/D252: 8D 6F 89 STA $896F C1/D255: 60 RTS ; [ Battle Animation Command $80/$37: Clear Fixed Color Value HDMA Data ] magic_init_55: C1/D256: 7B TDC C1/D257: AA TAX C1/D258: A9 E0 LDA #$E0 C1/D25A: 9D 96 89 STA $8996,X ; fixed color value hdma data C1/D25D: E8 INX C1/D25E: E8 INX C1/D25F: E8 INX C1/D260: E8 INX C1/D261: E0 5C 02 CPX #$025C C1/D264: D0 F4 BNE $D25A C1/D266: 60 RTS ; [ Battle Animation Command $80/$36: Restore Palettes for Monster Sprite Data ] magic_init_54: C1/D267: 7B TDC C1/D268: AA TAX C1/D269: BD DB 80 LDA $80DB,X C1/D26C: 38 SEC C1/D26D: E9 0A SBC #$0A C1/D26F: 9D DB 80 STA $80DB,X C1/D272: E8 INX C1/D273: E8 INX C1/D274: E0 0C 00 CPX #$000C C1/D277: D0 F0 BNE $D269 C1/D279: 60 RTS ; [ Battle Animation Command $80/$35: Use Character Palettes for Monster Sprite Data ] magic_init_53: C1/D27A: 7B TDC C1/D27B: AA TAX C1/D27C: BD DB 80 LDA $80DB,X ; monster sprite data C1/D27F: 18 CLC C1/D280: 69 0A ADC #$0A ; C1/D282: 9D DB 80 STA $80DB,X C1/D285: E8 INX C1/D286: E8 INX C1/D287: E0 0C 00 CPX #$000C C1/D28A: D0 F0 BNE $D27C C1/D28C: 60 RTS ; [ Battle Animation Command $80/$34: Copy Monster Palettes to Character Palettes ] magic_init_52: C1/D28D: 7B TDC C1/D28E: AA TAX C1/D28F: BD 00 7F LDA $7F00,X ; monster palettes C1/D292: 9D A0 7F STA $7FA0,X ; character palettes C1/D295: E8 INX C1/D296: E0 60 00 CPX #$0060 C1/D299: D0 F4 BNE $D28F C1/D29B: 60 RTS C1/D29C: .DB $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F C1/D2AC: .DB $0F, $0E, $0D, $0C, $0B, $0A, $09, $08, $07, $06, $05, $04, $03, $02, $01, $00 C1/D2BC: .DB $80, $40, $60, $20, $A0, $C0, $80, $20, $20, $60, $20, $60, $20, $60, $20, $60 ; [ Battle Animation Command $80/$4B: Update Red/Yellow Gradient Lines ] ; b1: color intensity (0..15) magic_init_75: C1/D2CC: A9 08 LDA #$08 C1/D2CE: 85 16 STA $16 C1/D2D0: 80 02 BRA $D2D4 ; [ Battle Animation Command $80/$33: Update Rainbow Gradient Lines ] ; b1: color intensity (0..15) magic_init_51: C1/D2D2: 64 16 STZ $16 C1/D2D4: B7 5B LDA [$5B],Y C1/D2D6: 85 12 STA $12 C1/D2D8: A9 E0 LDA #$E0 C1/D2DA: 8D 96 89 STA $8996 C1/D2DD: AD AE 62 LDA $62AE ; fixed color for gradient lines C1/D2E0: 29 E0 AND #$E0 C1/D2E2: 4A LSR C1/D2E3: 4A LSR C1/D2E4: 4A LSR C1/D2E5: 4A LSR C1/D2E6: 4A LSR C1/D2E7: 18 CLC C1/D2E8: 65 16 ADC $16 C1/D2EA: AA TAX C1/D2EB: 85 14 STA $14 C1/D2ED: BF BC D2 C1 LDA $C1D2BC,X C1/D2F1: 85 10 STA $10 C1/D2F3: AD AD 62 LDA $62AD C1/D2F6: 29 1F AND #$1F C1/D2F8: AA TAX C1/D2F9: A0 04 00 LDY #$0004 C1/D2FC: BF 9C D2 C1 LDA $C1D29C,X C1/D300: 38 SEC C1/D301: E5 12 SBC $12 C1/D303: 10 01 BPL $D306 C1/D305: 7B TDC C1/D306: 05 10 ORA $10 C1/D308: 99 96 89 STA $8996,Y C1/D30B: E8 INX C1/D30C: 8A TXA C1/D30D: 29 1F AND #$1F C1/D30F: AA TAX C1/D310: D0 14 BNE $D326 C1/D312: A5 14 LDA $14 C1/D314: 1A INC C1/D315: 29 07 AND #$07 C1/D317: 85 14 STA $14 C1/D319: 18 CLC C1/D31A: 65 16 ADC $16 C1/D31C: AA TAX C1/D31D: BF BC D2 C1 LDA $C1D2BC,X C1/D321: 85 10 STA $10 C1/D323: A2 00 00 LDX #$0000 C1/D326: C8 INY C1/D327: C8 INY C1/D328: C8 INY C1/D329: C8 INY C1/D32A: C0 5C 02 CPY #$025C C1/D32D: D0 CD BNE $D2FC C1/D32F: A4 5B LDY $5B C1/D331: C8 INY C1/D332: 84 5B STY $5B C1/D334: EE AD 62 INC $62AD C1/D337: EE AE 62 INC $62AE C1/D33A: AE F6 7A LDX $7AF6 C1/D33D: 60 RTS ; [ Battle Animation Command $80/$32: ] magic_init_50: C1/D33E: AE F6 7A LDX $7AF6 C1/D341: BD 87 6F LDA $6F87,X C1/D344: F0 04 BEQ $D34A C1/D346: A9 01 LDA #$01 C1/D348: 80 01 BRA $D34B C1/D34A: 7B TDC C1/D34B: C2 20 REP #$20 C1/D34D: 0A ASL C1/D34E: 85 22 STA $22 C1/D350: A5 5B LDA $5B C1/D352: 1A INC C1/D353: 18 CLC C1/D354: 65 22 ADC $22 C1/D356: 85 5B STA $5B C1/D358: A7 5B LDA [$5B] C1/D35A: 3A DEC C1/D35B: 85 5B STA $5B C1/D35D: 7B TDC C1/D35E: E2 20 SEP #$20 C1/D360: 60 RTS ; [ Battle Animation Command $80/$63: Move In Vertical Sine Wave (narrow) ] ; b1: speed magic_init_99: C1/D361: A9 20 LDA #$20 C1/D363: 80 02 BRA $D367 ; [ Battle Animation Command $80/$31: Move In Vertical Sine Wave (wide) ] ; b1: speed magic_init_49: C1/D365: A9 50 LDA #$50 C1/D367: 85 24 STA $24 C1/D369: AE F6 7A LDX $7AF6 C1/D36C: BD E9 64 LDA $64E9,X C1/D36F: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/D372: AE F6 7A LDX $7AF6 C1/D375: C2 20 REP #$20 C1/D377: A5 22 LDA $22 C1/D379: 9D D0 74 STA $74D0,X ; thread y offset C1/D37C: 7B TDC C1/D37D: E2 20 SEP #$20 C1/D37F: A0 01 00 LDY #$0001 C1/D382: BD E9 64 LDA $64E9,X C1/D385: 18 CLC C1/D386: 77 5B ADC [$5B],Y C1/D388: 9D E9 64 STA $64E9,X C1/D38B: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$30: Load Animation Palette for Character 1 ] ; b1: palette index magic_init_48: C1/D38E: B7 5B LDA [$5B],Y ; palette index C1/D390: C2 20 REP #$20 C1/D392: 0A ASL C1/D393: 0A ASL C1/D394: 0A ASL C1/D395: 0A ASL C1/D396: AA TAX C1/D397: 7B TDC C1/D398: A8 TAY C1/D399: BF 00 60 D2 LDA $D26000,X ; animation palette C1/D39D: 99 80 7F STA $7F80,Y C1/D3A0: E8 INX C1/D3A1: E8 INX C1/D3A2: C8 INY C1/D3A3: C8 INY C1/D3A4: C0 10 00 CPY #$0010 C1/D3A7: D0 F0 BNE $D399 C1/D3A9: 7B TDC C1/D3AA: E2 20 SEP #$20 C1/D3AC: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$2F: ] magic_init_47: C1/D3AF: AE F6 7A LDX $7AF6 C1/D3B2: A9 08 LDA #$08 C1/D3B4: 8D AF 60 STA $60AF C1/D3B7: 9C B0 60 STZ $60B0 C1/D3BA: 20 5B 18 JSR $185B ; update random number C1/D3BD: 29 07 AND #$07 C1/D3BF: 85 22 STA $22 C1/D3C1: BD 87 6F LDA $6F87,X C1/D3C4: D0 04 BNE $D3CA ; branch if mirrored C1/D3C6: A9 7C LDA #$7C C1/D3C8: 80 08 BRA $D3D2 C1/D3CA: A9 FC LDA #$FC C1/D3CC: A0 02 00 LDY #$0002 C1/D3CF: 18 CLC C1/D3D0: 77 5B ADC [$5B],Y C1/D3D2: 18 CLC C1/D3D3: 65 22 ADC $22 C1/D3D5: A0 01 00 LDY #$0001 C1/D3D8: 77 5B ADC [$5B],Y C1/D3DA: 9D DB 74 STA $74DB,X ; vector angle C1/D3DD: A4 5B LDY $5B C1/D3DF: C8 INY C1/D3E0: C8 INY C1/D3E1: 84 5B STY $5B C1/D3E3: 60 RTS ; [ Battle Animation Command $80/$2E: Move Thread ] ; b1: x position ; b2: y position magic_init_46: C1/D3E4: C2 20 REP #$20 C1/D3E6: AE F6 7A LDX $7AF6 C1/D3E9: A0 01 00 LDY #$0001 C1/D3EC: B7 5B LDA [$5B],Y C1/D3EE: 29 FF 00 AND #$00FF C1/D3F1: 9D 3A 6A STA $6A3A,X ; thread x position C1/D3F4: C8 INY C1/D3F5: B7 5B LDA [$5B],Y C1/D3F7: 29 FF 00 AND #$00FF C1/D3FA: 9D 3C 6A STA $6A3C,X ; thread y position C1/D3FD: E6 5B INC $5B C1/D3FF: E6 5B INC $5B C1/D401: 7B TDC C1/D402: E2 20 SEP #$20 C1/D404: 60 RTS ; [ Check Battle Type ] get_mode_type: C1/D405: AE F6 7A LDX $7AF6 C1/D408: AD 1F 20 LDA $201F C1/D40B: 29 03 AND #$03 C1/D40D: C9 03 CMP #$03 C1/D40F: D0 11 BNE $D422 C1/D411: BD 38 6A LDA $6A38,X ; attacker C1/D414: 30 08 BMI $D41E ; branch if a monster C1/D416: C9 02 CMP #$02 C1/D418: 90 04 BCC $D41E C1/D41A: A9 01 LDA #$01 C1/D41C: 80 04 BRA $D422 C1/D41E: A9 02 LDA #$02 C1/D420: 60 RTS C1/D421: 7B TDC C1/D422: 60 RTS ; [ Battle Animation Command $80/$2D: Jump Based on Battle Type ] ; +b1: jump address for normal attack ; +b3: jump address for back attack (or side attack if attacker is character 3/4) ; +b5: jump address for pincer attack (or side attack if attacker is character 1/2 or monster) magic_init_45: C1/D423: 20 05 D4 JSR $D405 C1/D426: C2 20 REP #$20 C1/D428: 0A ASL C1/D429: 85 22 STA $22 C1/D42B: A5 5B LDA $5B C1/D42D: 1A INC C1/D42E: 18 CLC C1/D42F: 65 22 ADC $22 C1/D431: 85 5B STA $5B C1/D433: A7 5B LDA [$5B] C1/D435: 3A DEC C1/D436: 85 5B STA $5B C1/D438: 7B TDC C1/D439: E2 20 SEP #$20 C1/D43B: 60 RTS ; [ Battle Animation Command $80/$2B: Load Animation Palette (bg1) ] ; b1: palette index magic_init_43: C1/D43C: B7 5B LDA [$5B],Y C1/D43E: 20 26 9C JSR $9C26 ; load animation palette (bg1) C1/D441: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$2C: Load Animation Palette (bg3) ] ; b1: palette index magic_init_44: C1/D444: B7 5B LDA [$5B],Y C1/D446: 20 6B 9C JSR $9C6B ; load animation palette (bg3) C1/D449: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$2A: Load Animation Palette (sprite) ] ; b1: palette index magic_init_42: C1/D44C: B7 5B LDA [$5B],Y C1/D44E: 20 D7 9B JSR $9BD7 ; load animation palette (sprite) C1/D451: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$29: Hide/Show Cursor Sprites (during esper attack) ] magic_init_41: C1/D454: B7 5B LDA [$5B],Y C1/D456: 8D BE 62 STA $62BE ; hide/show cursor sprites (during esper attack C1/D459: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$28: ] magic_init_40: C1/D45C: B7 5B LDA [$5B],Y C1/D45E: 85 10 STA $10 C1/D460: AD BD 61 LDA $61BD C1/D463: 29 CF AND #$CF C1/D465: 05 10 ORA $10 C1/D467: 8D BD 61 STA $61BD C1/D46A: AD DD 61 LDA $61DD C1/D46D: 29 CF AND #$CF C1/D46F: 05 10 ORA $10 C1/D471: 8D DD 61 STA $61DD C1/D474: AD FD 61 LDA $61FD C1/D477: 29 CF AND #$CF C1/D479: 05 10 ORA $10 C1/D47B: 8D FD 61 STA $61FD C1/D47E: AD 1D 62 LDA $621D C1/D481: 29 CF AND #$CF C1/D483: 05 10 ORA $10 C1/D485: 8D 1D 62 STA $621D C1/D488: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$27: Hide/Show Characters for Esper Attack ] ; b1: 1 = hide, 0 = show magic_init_39: C1/D48B: B7 5B LDA [$5B],Y C1/D48D: 8D BD 62 STA $62BD C1/D490: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$26: ] magic_init_38: C1/D493: B7 5B LDA [$5B],Y C1/D495: 8D BF 62 STA $62BF C1/D498: 4C C6 CF JMP $CFC6 ; [ Battle Animation Command $80/$24: ] magic_init_36: C1/D49B: 7B TDC C1/D49C: AA TAX C1/D49D: C2 20 REP #$20 C1/D49F: 9E F5 4A STZ $4AF5,X C1/D4A2: E8 INX C1/D4A3: E8 INX C1/D4A4: E0 5C 02 CPX #$025C C1/D4A7: D0 F6 BNE $D49F C1/D4A9: 7B TDC C1/D4AA: E2 20 SEP #$20 C1/D4AC: 60 RTS ; [ Battle Animation Command $80/$25: ] magic_init_37: C1/D4AD: 7B TDC C1/D4AE: AA TAX C1/D4AF: C2 20 REP #$20 C1/D4B1: 9E F5 43 STZ $43F5,X C1/D4B4: E8 INX C1/D4B5: E8 INX C1/D4B6: E0 5C 02 CPX #$025C C1/D4B9: D0 F6 BNE $D4B1 C1/D4BB: E2 20 SEP #$20 C1/D4BD: 60 RTS ; [ Battle Animation Command $80/$23: ] magic_init_35: C1/D4BE: E2 10 SEP #$10 C1/D4C0: C2 20 REP #$20 C1/D4C2: 7B TDC C1/D4C3: AA TAX C1/D4C4: AD 53 46 LDA $4653 C1/D4C7: 48 PHA C1/D4C8: DE F7 43 DEC $43F7,X C1/D4CB: DE 43 44 DEC $4443,X C1/D4CE: DE 8F 44 DEC $448F,X C1/D4D1: DE DB 44 DEC $44DB,X C1/D4D4: DE 27 45 DEC $4527,X C1/D4D7: DE 73 45 DEC $4573,X C1/D4DA: DE BF 45 DEC $45BF,X C1/D4DD: DE 0B 46 DEC $460B,X C1/D4E0: E8 INX C1/D4E1: E8 INX C1/D4E2: E8 INX C1/D4E3: E8 INX C1/D4E4: E0 4C CPX #$4C C1/D4E6: D0 E0 BNE $D4C8 C1/D4E8: 68 PLA C1/D4E9: 8D 53 46 STA $4653 C1/D4EC: 7B TDC C1/D4ED: E2 20 SEP #$20 C1/D4EF: C2 10 REP #$10 C1/D4F1: 60 RTS ; [ Battle Animation Command $80/$22: ] magic_init_34: C1/D4F2: C2 20 REP #$20 C1/D4F4: AD 18 7B LDA $7B18 C1/D4F7: 38 SEC C1/D4F8: ED 1F 7B SBC $7B1F C1/D4FB: 85 10 STA $10 C1/D4FD: 7B TDC C1/D4FE: A8 TAY C1/D4FF: AA TAX C1/D500: BF 9F D3 C2 LDA $C2D39F,X C1/D504: 29 FF 00 AND #$00FF C1/D507: 85 12 STA $12 C1/D509: A5 10 LDA $10 C1/D50B: 99 F7 43 STA $43F7,Y C1/D50E: 3A DEC C1/D50F: C8 INY C1/D510: C8 INY C1/D511: C8 INY C1/D512: C8 INY C1/D513: C0 2C 01 CPY #$012C C1/D516: F0 0C BEQ $D524 C1/D518: C6 12 DEC $12 C1/D51A: D0 EF BNE $D50B C1/D51C: 3A DEC C1/D51D: 85 10 STA $10 C1/D51F: E6 14 INC $14 C1/D521: E8 INX C1/D522: 80 DC BRA $D500 C1/D524: 3A DEC C1/D525: 85 10 STA $10 C1/D527: BF 9F D3 C2 LDA $C2D39F,X C1/D52B: 29 FF 00 AND #$00FF C1/D52E: 85 12 STA $12 C1/D530: A5 10 LDA $10 C1/D532: 99 F7 43 STA $43F7,Y C1/D535: 3A DEC C1/D536: C8 INY C1/D537: C8 INY C1/D538: C8 INY C1/D539: C8 INY C1/D53A: C0 5C 02 CPY #$025C C1/D53D: F0 0B BEQ $D54A C1/D53F: C6 12 DEC $12 C1/D541: D0 EF BNE $D532 C1/D543: 3A DEC C1/D544: 85 10 STA $10 C1/D546: C6 14 DEC $14 C1/D548: 80 DD BRA $D527 C1/D54A: 7B TDC C1/D54B: E2 20 SEP #$20 C1/D54D: 60 RTS ; [ Battle Animation Command $80/$21: Update Sprite Layer Priority Based on Polar Angle ] magic_init_33: C1/D54E: AE F6 7A LDX $7AF6 C1/D551: BD D8 74 LDA $74D8,X ; vector angle C1/D554: 18 CLC C1/D555: 69 40 ADC #$40 C1/D557: 30 09 BMI $D562 ; branch if between 180 and 360 degrees C1/D559: BD E7 64 LDA $64E7,X ; set sprite layer priority to low C1/D55C: 29 FE AND #$FE C1/D55E: 9D E7 64 STA $64E7,X C1/D561: 60 RTS C1/D562: BD E7 64 LDA $64E7,X ; set sprite layer priority to high C1/D565: 09 01 ORA #$01 C1/D567: 9D E7 64 STA $64E7,X C1/D56A: 60 RTS ; [ Battle Animation Command $80/$1E: Scroll BG3 for Pearl ] magic_init_30: C1/D56B: E2 10 SEP #$10 C1/D56D: C2 20 REP #$20 C1/D56F: 7B TDC C1/D570: AA TAX C1/D571: AD 53 4D LDA $4D53 ; save menu region bg3 scroll hdma data (vertical) C1/D574: 48 PHA C1/D575: DE F7 4A DEC $4AF7,X ; decrement all bg3 scroll hdma values (vertical) C1/D578: DE 43 4B DEC $4B43,X C1/D57B: DE 8F 4B DEC $4B8F,X C1/D57E: DE DB 4B DEC $4BDB,X C1/D581: DE 27 4C DEC $4C27,X C1/D584: DE 73 4C DEC $4C73,X C1/D587: DE BF 4C DEC $4CBF,X C1/D58A: DE 0B 4D DEC $4D0B,X C1/D58D: E8 INX C1/D58E: E8 INX C1/D58F: E8 INX C1/D590: E8 INX C1/D591: E0 4C CPX #$4C C1/D593: D0 E0 BNE $D575 C1/D595: 68 PLA C1/D596: 8D 53 4D STA $4D53 ; restore menu region bg3 scroll hdma data (vertical) C1/D599: 7B TDC C1/D59A: E2 20 SEP #$20 C1/D59C: C2 10 REP #$10 C1/D59E: 60 RTS ; [ Battle Animation Command $80/$20: Init BG3 HDMA Scroll Data for Pearl (vertical) ] magic_init_32: C1/D59F: C2 20 REP #$20 C1/D5A1: AD 24 7B LDA $7B24 ; bg3 thread y offset C1/D5A4: 38 SEC C1/D5A5: ED 2B 7B SBC $7B2B ; bg3 thread y position C1/D5A8: 85 10 STA $10 C1/D5AA: 7B TDC C1/D5AB: A8 TAY C1/D5AC: AA TAX C1/D5AD: BF 9F D3 C2 LDA $C2D39F,X ; C1/D5B1: 29 FF 00 AND #$00FF C1/D5B4: 85 12 STA $12 C1/D5B6: A5 10 LDA $10 C1/D5B8: 99 F7 4A STA $4AF7,Y ; bg3 scroll hdma data (vertical) C1/D5BB: 3A DEC ; decrement vertical scroll C1/D5BC: C8 INY C1/D5BD: C8 INY C1/D5BE: C8 INY C1/D5BF: C8 INY C1/D5C0: C0 2C 01 CPY #$012C C1/D5C3: F0 0C BEQ $D5D1 C1/D5C5: C6 12 DEC $12 C1/D5C7: D0 EF BNE $D5B8 C1/D5C9: 3A DEC C1/D5CA: 85 10 STA $10 C1/D5CC: E6 14 INC $14 C1/D5CE: E8 INX C1/D5CF: 80 DC BRA $D5AD C1/D5D1: 3A DEC C1/D5D2: 85 10 STA $10 C1/D5D4: BF 9F D3 C2 LDA $C2D39F,X C1/D5D8: 29 FF 00 AND #$00FF C1/D5DB: 85 12 STA $12 C1/D5DD: A5 10 LDA $10 C1/D5DF: 99 F7 4A STA $4AF7,Y ; bg3 scroll hdma data (vertical) C1/D5E2: 3A DEC C1/D5E3: C8 INY C1/D5E4: C8 INY C1/D5E5: C8 INY C1/D5E6: C8 INY C1/D5E7: C0 5C 02 CPY #$025C C1/D5EA: F0 0C BEQ $D5F8 C1/D5EC: C6 12 DEC $12 C1/D5EE: D0 EF BNE $D5DF C1/D5F0: 3A DEC C1/D5F1: 85 10 STA $10 C1/D5F3: C6 14 DEC $14 C1/D5F5: CA DEX C1/D5F6: 80 DC BRA $D5D4 C1/D5F8: 7B TDC C1/D5F9: E2 20 SEP #$20 C1/D5FB: 60 RTS ; [ Battle Animation Command $80/$1F: Init BG3 HDMA Scroll Data for Pearl (horizontal) ] ; Pearl magic_init_31: C1/D5FC: A9 4C LDA #$4C C1/D5FE: 8D 13 96 STA $9613 ; circle size C1/D601: AD 1B 96 LDA $961B ; save circle shape C1/D604: 48 PHA C1/D605: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C1/D608: A9 4C LDA #$4C C1/D60A: 8D 15 96 STA $9615 ; circle y position C1/D60D: A9 80 LDA #$80 C1/D60F: 8D 14 96 STA $9614 ; circle x position C1/D612: 20 C7 1B JSR $1BC7 ; update circle C1/D615: 7B TDC C1/D616: AA TAX C1/D617: BD 21 9A LDA $9A21,X ; window position hdma data buffer C1/D61A: 9D F5 4A STA $4AF5,X ; bg3 scroll hdma data (horizontal) C1/D61D: 9E F6 4A STZ $4AF6,X C1/D620: E8 INX C1/D621: E8 INX C1/D622: E8 INX C1/D623: E8 INX C1/D624: E0 5C 02 CPX #$025C C1/D627: D0 EE BNE $D617 C1/D629: 68 PLA C1/D62A: 8D 1B 96 STA $961B ; restore circle shape C1/D62D: 60 RTS ; [ Battle Animation Command $80/$19: ] magic_init_25: C1/D62E: A2 2C 00 LDX #$002C C1/D631: 86 24 STX $24 C1/D633: A9 10 LDA #$10 C1/D635: 38 SEC C1/D636: ED 6C 61 SBC $616C C1/D639: D0 05 BNE $D640 C1/D63B: A2 34 00 LDX #$0034 C1/D63E: 86 24 STX $24 C1/D640: C2 20 REP #$20 C1/D642: 0A ASL C1/D643: 0A ASL C1/D644: 0A ASL C1/D645: 85 22 STA $22 C1/D647: AE F6 7A LDX $7AF6 C1/D64A: BD 3C 6A LDA $6A3C,X C1/D64D: 18 CLC C1/D64E: 65 22 ADC $22 C1/D650: 38 SEC C1/D651: E5 24 SBC $24 C1/D653: 9D 3C 6A STA $6A3C,X C1/D656: 7B TDC C1/D657: E2 20 SEP #$20 C1/D659: 20 8A C3 JSR $C38A C1/D65C: AE F6 7A LDX $7AF6 C1/D65F: BD 38 6A LDA $6A38,X C1/D662: 20 FA C3 JSR $C3FA C1/D665: AE F6 7A LDX $7AF6 C1/D668: BD 38 6A LDA $6A38,X C1/D66B: 0A ASL C1/D66C: 0A ASL C1/D66D: 0A ASL C1/D66E: 0A ASL C1/D66F: 0A ASL C1/D670: A8 TAY C1/D671: A9 30 LDA #$30 C1/D673: 99 BD 61 STA $61BD,Y C1/D676: 60 RTS ; [ Battle Animation Command $80/$18: Load Sketched Monster Palette ] magic_init_24: C1/D677: AE 69 61 LDX $6169 ; pointer to sketched monster palette C1/D67A: 7B TDC C1/D67B: A8 TAY C1/D67C: BF 20 78 D2 LDA $D27820,X ; monster palettes C1/D680: 99 60 7E STA $7E60,Y ; bg palette 2 C1/D683: 99 60 7C STA $7C60,Y C1/D686: E8 INX C1/D687: C8 INY C1/D688: C0 20 00 CPY #$0020 C1/D68B: D0 EF BNE $D67C C1/D68D: 60 RTS ; [ Battle Animation Command $80/$16: ] magic_init_22: C1/D68E: AE F6 7A LDX $7AF6 C1/D691: 9E E8 64 STZ $64E8,X C1/D694: 9E E9 64 STZ $64E9,X C1/D697: 60 RTS ; [ Battle Animation Command $80/$15: Move Circle to Thread Position ] magic_init_21: C1/D698: AE F6 7A LDX $7AF6 C1/D69B: C2 20 REP #$20 C1/D69D: BD 3A 6A LDA $6A3A,X ; thread x position C1/D6A0: 18 CLC C1/D6A1: 7D CE 74 ADC $74CE,X ; thread x offset C1/D6A4: 85 22 STA $22 C1/D6A6: BD 3C 6A LDA $6A3C,X ; thread y position C1/D6A9: 18 CLC C1/D6AA: 7D D0 74 ADC $74D0,X ; thread y offset C1/D6AD: 85 24 STA $24 C1/D6AF: 7B TDC C1/D6B0: E2 20 SEP #$20 C1/D6B2: A5 22 LDA $22 C1/D6B4: 8D 14 96 STA $9614 ; C1/D6B7: A5 24 LDA $24 C1/D6B9: 8D 15 96 STA $9615 C1/D6BC: 60 RTS ; [ Battle Animation Command $80/$14: Make Target Vanish ] magic_init_20: C1/D6BD: AE F6 7A LDX $7AF6 C1/D6C0: BD 39 6A LDA $6A39,X ; target C1/D6C3: 30 1F BMI $D6E4 ; return if a monster C1/D6C5: 29 03 AND #$03 C1/D6C7: 85 10 STA $10 C1/D6C9: 0A ASL C1/D6CA: 0A ASL C1/D6CB: 0A ASL C1/D6CC: 0A ASL C1/D6CD: 0A ASL C1/D6CE: AA TAX C1/D6CF: BD BD 2E LDA $2EBD,X ; set vanish status C1/D6D2: 09 10 ORA #$10 C1/D6D4: 9D BD 2E STA $2EBD,X C1/D6D7: A5 10 LDA $10 C1/D6D9: 8D 78 7B STA $7B78 C1/D6DC: AE F6 7A LDX $7AF6 C1/D6DF: DA PHX C1/D6E0: 20 79 2F JSR $2F79 ; update character status change animations C1/D6E3: FA PLX C1/D6E4: 60 RTS ; [ Battle Animation Command $80/$13: Toggle Imp Graphics for Target ] magic_init_19: C1/D6E5: AE F6 7A LDX $7AF6 C1/D6E8: BD 39 6A LDA $6A39,X ; target C1/D6EB: 30 20 BMI $D70D ; branch if a monster C1/D6ED: 29 03 AND #$03 C1/D6EF: 85 10 STA $10 C1/D6F1: 0A ASL C1/D6F2: 0A ASL C1/D6F3: 0A ASL C1/D6F4: 0A ASL C1/D6F5: 0A ASL C1/D6F6: AA TAX C1/D6F7: BD BD 2E LDA $2EBD,X ; toggle imp status C1/D6FA: 49 20 EOR #$20 C1/D6FC: 9D BD 2E STA $2EBD,X C1/D6FF: A5 10 LDA $10 C1/D701: 8D 78 7B STA $7B78 ; character index for status change animations C1/D704: AE F6 7A LDX $7AF6 C1/D707: DA PHX C1/D708: 20 79 2F JSR $2F79 ; update character status change animations C1/D70B: FA PLX C1/D70C: 60 RTS C1/D70D: 29 7F AND #$7F C1/D70F: 38 SEC C1/D710: E9 04 SBC #$04 C1/D712: A8 TAY C1/D713: B9 C2 62 LDA $62C2,Y ; toggle imp graphics C1/D716: 49 01 EOR #$01 C1/D718: 99 C2 62 STA $62C2,Y C1/D71B: AE F6 7A LDX $7AF6 C1/D71E: DA PHX C1/D71F: 20 7C 25 JSR $257C ; load monster graphics C1/D722: 20 C1 25 JSR $25C1 ; copy monster graphics to vram (at next vblank) C1/D725: FA PLX C1/D726: 60 RTS ; [ Battle Animation Command $80/$11: Randomize Vector Angle ] magic_init_17: C1/D727: 20 5B 18 JSR $185B ; update random number C1/D72A: AE F6 7A LDX $7AF6 C1/D72D: 9D D8 74 STA $74D8,X C1/D730: 9E D9 74 STZ $74D9,X C1/D733: 60 RTS ; [ Battle Animation Command $80/$12: Init Polar Movement ] magic_init_18: C1/D734: AE F6 7A LDX $7AF6 C1/D737: 9E D8 74 STZ $74D8,X ; polar angle C1/D73A: 9E D9 74 STZ $74D9,X ; polar radius C1/D73D: 60 RTS ; [ Battle Animation Command $80/$10: ] magic_init_16: C1/D73E: C2 20 REP #$20 C1/D740: AE F6 7A LDX $7AF6 C1/D743: BD 82 6F LDA $6F82,X ; target x position C1/D746: 9D 3A 6A STA $6A3A,X ; thread x position C1/D749: BD 84 6F LDA $6F84,X C1/D74C: 9D 3C 6A STA $6A3C,X C1/D74F: 7B TDC C1/D750: E2 20 SEP #$20 C1/D752: 60 RTS ; [ Battle Animation Command $80/$0C: ] magic_init_12: C1/D753: C2 20 REP #$20 C1/D755: AD F6 7A LDA $7AF6 C1/D758: AA TAX C1/D759: 29 80 FF AND #$FF80 ; pointer to first sprite thread C1/D75C: A8 TAY C1/D75D: B9 3A 6A LDA $6A3A,Y ; thread x position C1/D760: 9D 3A 6A STA $6A3A,X C1/D763: B9 3C 6A LDA $6A3C,Y ; thread y position C1/D766: 9D 3C 6A STA $6A3C,X C1/D769: B9 CE 74 LDA $74CE,Y ; thread x offset C1/D76C: 9D CE 74 STA $74CE,X C1/D76F: B9 D0 74 LDA $74D0,Y ; thread y offset C1/D772: 9D D0 74 STA $74D0,X C1/D775: 7B TDC C1/D776: E2 20 SEP #$20 C1/D778: 60 RTS ; [ Battle Animation Command $80/$0F: ] magic_init_15: C1/D779: AE F6 7A LDX $7AF6 C1/D77C: A9 08 LDA #$08 C1/D77E: 8D AF 60 STA $60AF ; C1/D781: 9C B0 60 STZ $60B0 ; C1/D784: 20 5B 18 JSR $185B ; update random number C1/D787: 29 07 AND #$07 C1/D789: 85 22 STA $22 C1/D78B: BD 87 6F LDA $6F87,X C1/D78E: D0 04 BNE $D794 ; branch if mirrored C1/D790: A9 7C LDA #$7C C1/D792: 80 02 BRA $D796 C1/D794: A9 FC LDA #$FC C1/D796: 18 CLC C1/D797: 65 22 ADC $22 C1/D799: 9D DB 74 STA $74DB,X ; vector angle C1/D79C: 60 RTS ; [ Battle Animation Command $80/$0E: ] magic_init_14: C1/D79D: AE F6 7A LDX $7AF6 C1/D7A0: BD 38 6A LDA $6A38,X ; attacker C1/D7A3: 10 1E BPL $D7C3 ; return if a character C1/D7A5: 29 7F AND #$7F C1/D7A7: 38 SEC C1/D7A8: E9 04 SBC #$04 C1/D7AA: 0A ASL C1/D7AB: A8 TAY C1/D7AC: C2 20 REP #$20 C1/D7AE: B9 C3 80 LDA $80C3,Y ; monster left x coordinate C1/D7B1: 9D E8 64 STA $64E8,X C1/D7B4: B9 CF 80 LDA $80CF,Y ; monster top y coordinate C1/D7B7: 9D EA 64 STA $64EA,X C1/D7BA: 7B TDC C1/D7BB: 99 B7 80 STA $80B7,Y ; C1/D7BE: 99 AB 80 STA $80AB,Y C1/D7C1: E2 20 SEP #$20 C1/D7C3: 60 RTS ; [ Battle Animation Command $80/$0D: ] magic_init_13: C1/D7C4: AE F6 7A LDX $7AF6 C1/D7C7: C2 20 REP #$20 C1/D7C9: BD D9 74 LDA $74D9,X C1/D7CC: 18 CLC C1/D7CD: 69 08 00 ADC #$0008 C1/D7D0: DD DC 74 CMP $74DC,X C1/D7D3: 90 F7 BCC $D7CC C1/D7D5: 38 SEC C1/D7D6: E9 08 00 SBC #$0008 C1/D7D9: 9D D9 74 STA $74D9,X C1/D7DC: 7B TDC C1/D7DD: E2 20 SEP #$20 C1/D7DF: 20 19 E9 JSR $E919 C1/D7E2: 60 RTS ; [ Battle Animation Command $80/$0B: Update Esper Pre-Animation Balls Position ] magic_init_11: C1/D7E3: AE F6 7A LDX $7AF6 C1/D7E6: BD D9 74 LDA $74D9,X ; C1/D7E9: 85 24 STA $24 C1/D7EB: BD D8 74 LDA $74D8,X ; direction C1/D7EE: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/D7F1: AE F6 7A LDX $7AF6 C1/D7F4: C2 20 REP #$20 C1/D7F6: A5 22 LDA $22 C1/D7F8: 9D D0 74 STA $74D0,X ; x position C1/D7FB: 7B TDC C1/D7FC: E2 20 SEP #$20 C1/D7FE: BD D8 74 LDA $74D8,X ; direction + 90 degrees C1/D801: 18 CLC C1/D802: 69 40 ADC #$40 C1/D804: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/D807: AE F6 7A LDX $7AF6 C1/D80A: C2 20 REP #$20 C1/D80C: A5 22 LDA $22 C1/D80E: 9D CE 74 STA $74CE,X ; y position C1/D811: 7B TDC C1/D812: E2 20 SEP #$20 C1/D814: BD D8 74 LDA $74D8,X ; rotate 4 counterclockwise C1/D817: 38 SEC C1/D818: E9 04 SBC #$04 C1/D81A: 9D D8 74 STA $74D8,X C1/D81D: BD D9 74 LDA $74D9,X ; increase radius by 2 C1/D820: 18 CLC C1/D821: 69 02 ADC #$02 C1/D823: C9 30 CMP #$30 ; max 48 C1/D825: B0 03 BCS $D82A C1/D827: 9D D9 74 STA $74D9,X C1/D82A: 60 RTS ; [ Battle Animation Command $80/$0A: ] magic_init_10: C1/D82B: AE F6 7A LDX $7AF6 C1/D82E: A9 30 LDA #$30 C1/D830: 85 24 STA $24 C1/D832: BD D8 74 LDA $74D8,X C1/D835: 5D D9 74 EOR $74D9,X C1/D838: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/D83B: AE F6 7A LDX $7AF6 C1/D83E: C2 20 REP #$20 C1/D840: A5 22 LDA $22 C1/D842: 9D D0 74 STA $74D0,X C1/D845: 7B TDC C1/D846: E2 20 SEP #$20 C1/D848: BD D8 74 LDA $74D8,X C1/D84B: 18 CLC C1/D84C: 69 20 ADC #$20 C1/D84E: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/D851: AE F6 7A LDX $7AF6 C1/D854: C2 20 REP #$20 C1/D856: A5 22 LDA $22 C1/D858: 9D CE 74 STA $74CE,X C1/D85B: 7B TDC C1/D85C: E2 20 SEP #$20 C1/D85E: BD D8 74 LDA $74D8,X C1/D861: 38 SEC C1/D862: E9 04 SBC #$04 C1/D864: 9D D8 74 STA $74D8,X C1/D867: 60 RTS ; [ +$22 = $24 * sin (A) ] one_vect_get: C1/D868: 20 99 6B JSR $6B99 C1/D86B: 30 05 BMI $D872 ; branch if negative C1/D86D: 85 22 STA $22 C1/D86F: 64 23 STZ $23 C1/D871: 60 RTS C1/D872: 85 22 STA $22 C1/D874: A9 FF LDA #$FF C1/D876: 85 23 STA $23 C1/D878: 60 RTS ; [ Battle Animation Command $80/$09: Update Character/Monster Sprite Tile Priority for Tornado ] ; w wind/spiraler magic_init_9: C1/D879: A9 30 LDA #$30 C1/D87B: 8D BD 61 STA $61BD ; show all sprites in front of bg1 C1/D87E: 8D DD 61 STA $61DD C1/D881: 8D FD 61 STA $61FD C1/D884: 8D 1D 62 STA $621D C1/D887: A9 31 LDA #$31 C1/D889: 8D DC 80 STA $80DC C1/D88C: 8D DE 80 STA $80DE C1/D88F: 8D E0 80 STA $80E0 C1/D892: 8D E2 80 STA $80E2 C1/D895: 8D E4 80 STA $80E4 C1/D898: 8D E6 80 STA $80E6 C1/D89B: AE F6 7A LDX $7AF6 C1/D89E: C2 20 REP #$20 C1/D8A0: BD 3C 6A LDA $6A3C,X ; thread y position C1/D8A3: 18 CLC C1/D8A4: 7D D0 74 ADC $74D0,X ; thread y offset C1/D8A7: 18 CLC C1/D8A8: 69 46 00 ADC #$0046 C1/D8AB: 85 24 STA $24 C1/D8AD: 7B TDC C1/D8AE: AA TAX C1/D8AF: A8 TAY C1/D8B0: A5 24 LDA $24 C1/D8B2: D9 43 80 CMP $8043,Y ; character bottom y coordinate C1/D8B5: 90 0A BCC $D8C1 C1/D8B7: E2 20 SEP #$20 C1/D8B9: A9 20 LDA #$20 C1/D8BB: 9D BD 61 STA $61BD,X ; show sprite behind bg1 C1/D8BE: 7B TDC ; next character C1/D8BF: C2 20 REP #$20 C1/D8C1: 8A TXA C1/D8C2: 18 CLC C1/D8C3: 69 20 00 ADC #$0020 C1/D8C6: AA TAX C1/D8C7: C8 INY C1/D8C8: C8 INY C1/D8C9: C0 08 00 CPY #$0008 C1/D8CC: D0 E2 BNE $D8B0 C1/D8CE: 7B TDC C1/D8CF: A8 TAY C1/D8D0: A5 24 LDA $24 C1/D8D2: D9 27 80 CMP $8027,Y ; monster bottom y coordinate C1/D8D5: 90 09 BCC $D8E0 C1/D8D7: E2 20 SEP #$20 C1/D8D9: A9 21 LDA #$21 C1/D8DB: 99 DC 80 STA $80DC,Y ; show sprite behind bg1 C1/D8DE: C2 20 REP #$20 C1/D8E0: C8 INY C1/D8E1: C8 INY C1/D8E2: C0 0C 00 CPY #$000C C1/D8E5: D0 E9 BNE $D8D0 C1/D8E7: 7B TDC C1/D8E8: E2 20 SEP #$20 C1/D8EA: 60 RTS ; [ Battle Animation Command $80/$08: Move Thread to Vector Position ] ; w wind/spiraler magic_init_8: C1/D8EB: AE F6 7A LDX $7AF6 C1/D8EE: 20 09 FA JSR $FA09 ; move thread to vector position C1/D8F1: 60 RTS ; [ Battle Animation Command $80/$07: Move Tornado to Thread Position ] ; w wind/spiraler magic_init_7: C1/D8F2: AE F6 7A LDX $7AF6 C1/D8F5: C2 20 REP #$20 C1/D8F7: BD CE 74 LDA $74CE,X ; thread x offset C1/D8FA: 8D 9E 5F STA $5F9E ; tornado x position C1/D8FD: BD D0 74 LDA $74D0,X ; thread y offset C1/D900: 8D 8E 5F STA $5F8E ; tornado y position C1/D903: 7B TDC C1/D904: E2 20 SEP #$20 C1/D906: 60 RTS ; [ Battle Animation Command $80/$06: Init Tornado ] ; w wind/spiraler magic_init_6: C1/D907: 7B TDC C1/D908: AA TAX C1/D909: 9E 6D 5F STZ $5F6D,X ; clear tornado data C1/D90C: E8 INX C1/D90D: E0 40 00 CPX #$0040 C1/D910: D0 F7 BNE $D909 C1/D912: 20 5B 18 JSR $185B ; update random number C1/D915: 7B TDC C1/D916: 8D 6D 5F STA $5F6D C1/D919: 18 CLC C1/D91A: 69 10 ADC #$10 C1/D91C: 8D 7D 5F STA $5F7D C1/D91F: A9 08 LDA #$08 C1/D921: 85 24 STA $24 C1/D923: 85 1A STA $1A C1/D925: A2 00 01 LDX #$0100 C1/D928: 86 1C STX $1C C1/D92A: A2 F5 44 LDX #$44F5 C1/D92D: 7B TDC C1/D92E: 20 8B 0D JSR $0D8B C1/D931: 20 B4 E5 JSR $E5B4 C1/D934: AE F6 7A LDX $7AF6 C1/D937: 60 RTS ; [ Battle Animation Command $80/$05: ] ; bum rush magic_init_5: C1/D938: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/D93B: C2 20 REP #$20 C1/D93D: B9 C5 61 LDA $61C5,Y C1/D940: 9D CE 74 STA $74CE,X C1/D943: B9 C7 61 LDA $61C7,Y C1/D946: 9D D0 74 STA $74D0,X C1/D949: 7B TDC C1/D94A: E2 20 SEP #$20 C1/D94C: BD 38 6A LDA $6A38,X C1/D94F: A8 TAY C1/D950: B9 10 7B LDA $7B10,Y C1/D953: F0 03 BEQ $D958 C1/D955: 7B TDC C1/D956: 80 02 BRA $D95A C1/D958: A9 80 LDA #$80 C1/D95A: 9D 3A 6A STA $6A3A,X C1/D95D: A9 04 LDA #$04 C1/D95F: 9D 3B 6A STA $6A3B,X C1/D962: BD D2 74 LDA $74D2,X C1/D965: 0A ASL C1/D966: 0A ASL C1/D967: 18 CLC C1/D968: 69 08 ADC #$08 C1/D96A: 9D 3C 6A STA $6A3C,X C1/D96D: 60 RTS ; [ Battle Animation Command $80/$04: Randomize Vector Angle and Position ] magic_init_4: C1/D96E: 20 5B 18 JSR $185B ; update random number C1/D971: AE F6 7A LDX $7AF6 C1/D974: 9D D8 74 STA $74D8,X ; vector angle C1/D977: 20 5B 18 JSR $185B ; update random number C1/D97A: AE F6 7A LDX $7AF6 C1/D97D: 9D D9 74 STA $74D9,X ; vector position C1/D980: 60 RTS ; [ Battle Animation Command $80/$02: ] magic_init_2: C1/D981: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/D984: B9 BE 61 LDA $61BE,Y C1/D987: 8D B2 60 STA $60B2 C1/D98A: BD 38 6A LDA $6A38,X C1/D98D: A8 TAY C1/D98E: B9 10 7B LDA $7B10,Y C1/D991: 8D B1 60 STA $60B1 C1/D994: 60 RTS ; [ Battle Animation Command $80/$03: ] magic_init_3: C1/D995: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/D998: AD B2 60 LDA $60B2 C1/D99B: 99 BE 61 STA $61BE,Y C1/D99E: BD 38 6A LDA $6A38,X C1/D9A1: A8 TAY C1/D9A2: AD B1 60 LDA $60B1 C1/D9A5: 99 10 7B STA $7B10,Y C1/D9A8: 60 RTS ; [ Battle Animation Command $80/$01: ] magic_init_1: C1/D9A9: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/D9AC: C2 20 REP #$20 C1/D9AE: 7B TDC C1/D9AF: 99 C5 61 STA $61C5,Y C1/D9B2: 99 C7 61 STA $61C7,Y C1/D9B5: 9D CE 74 STA $74CE,X C1/D9B8: 9D D0 74 STA $74D0,X C1/D9BB: E2 20 SEP #$20 C1/D9BD: 60 RTS ; [ Battle Animation Command $80/$00: ] magic_init_0: C1/D9BE: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/D9C1: C2 20 REP #$20 C1/D9C3: B9 B7 61 LDA $61B7,Y ; character x position C1/D9C6: 18 CLC C1/D9C7: 79 D4 61 ADC $61D4,Y ; character x offset C1/D9CA: 9D 82 6F STA $6F82,X ; target x position C1/D9CD: B9 B9 61 LDA $61B9,Y ; character y position C1/D9D0: 9D 84 6F STA $6F84,X ; target y position C1/D9D3: 7B TDC C1/D9D4: E2 20 SEP #$20 C1/D9D6: 60 RTS ; [ Execute Battle Animation Command ] set_magic_code: C1/D9D7: 29 7F AND #$7F C1/D9D9: 0A ASL C1/D9DA: 8E F6 7A STX $7AF6 C1/D9DD: AA TAX C1/D9DE: A4 5B LDY $5B C1/D9E0: C8 INY C1/D9E1: 84 5B STY $5B C1/D9E3: 7C E6 D9 JMP ($D9E6,X) ; battle animation command jump table ($80-$FE) C1/D9E6: .DW $C878, $F347, $F33F, $F377, $F7B3, $F89D, $F491, $F476 C1/D9F6: .DW $F71D, $F7BC, $F82F, $F7E6, $F84B, $F263, $F27A, $F263 C1/DA06: .DW $F255, $F8B4, $FADB, $FA3D, $F8E0, $F9E6, $FB63, $FBD7 C1/DA16: .DW $FBA8, $FC37, $FC40, $F31A, $F2A2, $F2F1, $F2B6, $F7CF C1/DA26: .DW $FA4B, $FA90, $F2E1, $F1E5, $F21D, $F0EC, $F094, $F088 C1/DA36: .DW $F073, $EFC8, $EC6E, $EC58, $EE9C, $EFA3, $ED86, $EBDA C1/DA46: .DW $EBC4, $ECAC, $EC96, $EC4F, $EC46, $EBB2, $EBBB, $EC84 C1/DA56: .DW $EC8D, $ECEA, $ECD4, $ECCB, $ECC2, $EAA1, $EA98, $EA85 C1/DA66: .DW $EA76, $EA05, $E9EB, $F02F, $E99F, $E8FB, $E830, $C873 C1/DA76: .DW $E7B1, $DAE4, $E798, $E779, $EC24, $EC02, $EBF0, $EBF9 C1/DA86: .DW $E746, $E73D, $F86D, $F044, $E722, $E707, $E6CD, $E68D C1/DA96: .DW $E5F9, $E5F0, $E528, $E509, $E43A, $E416, $E401, $E3EC C1/DAA6: .DW $E3A0, $E328, $DD8D, $DD42, $E286, $E15D, $E1B3, $E25A C1/DAB6: .DW $DCDF, $DC9B, $DC81, $DC66, $DC55, $DB8F, $E5C5, $DCD9 C1/DAC6: .DW $DB6C, $E2C0, $F980, $DB64, $F30F, $F7FC, $E4A2, $DB50 C1/DAD6: .DW $DB31, $DAF9, $DB23, $ED4C, $ED12, $ED00, $ED09 ; [ Battle Animation Command $C9: ] magic_code49: C1/DAE4: AE F6 7A LDX $7AF6 C1/DAE7: BD 82 6F LDA $6F82,X C1/DAEA: 85 10 STA $10 C1/DAEC: A7 5B LDA [$5B] C1/DAEE: F0 03 BEQ $DAF3 C1/DAF0: 4C EF 17 JMP $17EF ; play animation sound effect C1/DAF3: AD E7 E9 LDA $E9E7 C1/DAF6: 4C EF 17 JMP $17EF ; play animation sound effect ; [ Battle Animation Command $F9: Set Magitek Armor Action ] ; b1: magitek animation type ; b2: 0 = attacker, 1 = target ; b3: character index (used if msb set) magic_code79: C1/DAF9: AE F6 7A LDX $7AF6 C1/DAFC: A0 02 00 LDY #$0002 C1/DAFF: B7 5B LDA [$5B],Y C1/DB01: 30 11 BMI $DB14 C1/DB03: 88 DEY C1/DB04: B7 5B LDA [$5B],Y C1/DB06: F0 07 BEQ $DB0F C1/DB08: BD 39 6A LDA $6A39,X ; target C1/DB0B: 30 0F BMI $DB1C ; branch if a monster C1/DB0D: 80 05 BRA $DB14 C1/DB0F: BD 38 6A LDA $6A38,X ; attacker C1/DB12: 30 08 BMI $DB1C ; branch if a monster C1/DB14: 29 03 AND #$03 C1/DB16: A8 TAY C1/DB17: A7 5B LDA [$5B] C1/DB19: 99 CC 64 STA $64CC,Y ; magitek animation type C1/DB1C: A4 5B LDY $5B C1/DB1E: C8 INY C1/DB1F: C8 INY C1/DB20: 84 5B STY $5B C1/DB22: 60 RTS ; [ Battle Animation Command $FA: Jump ] ; +b1 = jump address magic_code7a: C1/DB23: AE F6 7A LDX $7AF6 C1/DB26: C2 20 REP #$20 C1/DB28: A7 5B LDA [$5B] C1/DB2A: 3A DEC C1/DB2B: 85 5B STA $5B ; set script pointer C1/DB2D: 7B TDC C1/DB2E: E2 20 SEP #$20 C1/DB30: 60 RTS ; [ Battle Animation Command $F8: Jump Based on Magitek Mode ] ; +b1 = jump address ; +b3 = jump address if magitek mode magic_code78: C1/DB31: AE F6 7A LDX $7AF6 C1/DB34: AD BA 64 LDA $64BA C1/DB37: F0 02 BEQ $DB3B C1/DB39: A9 01 LDA #$01 C1/DB3B: C2 20 REP #$20 C1/DB3D: 0A ASL C1/DB3E: 85 22 STA $22 C1/DB40: A5 5B LDA $5B C1/DB42: 18 CLC C1/DB43: 65 22 ADC $22 C1/DB45: 85 5B STA $5B C1/DB47: A7 5B LDA [$5B] C1/DB49: 3A DEC C1/DB4A: 85 5B STA $5B C1/DB4C: 7B TDC C1/DB4D: E2 20 SEP #$20 C1/DB4F: 60 RTS ; [ Battle Animation Command $F7: Wait for Scanline ] ; b1 = scanline magic_code77: ; **** added in rev 1 **** C1/DB4D: AF 12 42 00 LDA $004212 C1/DB51: 30 FA BMI $DB4D ; branch if in vblank C1/DB53: AF 12 42 00 LDA $004212 C1/DB57: 29 40 AND #$40 C1/DB59: F0 F8 BEQ $DB53 ; branch if not in hblank C1/DB5B: AF 12 42 00 LDA $004212 C1/DB5F: 29 40 AND #$40 C1/DB61: D0 F8 BNE $DB5B ; branch if in hblank ; ************************ C1/DB50: AF 3F 21 00 LDA $00213F C1/DB54: AF 37 21 00 LDA $002137 C1/DB58: AF 3D 21 00 LDA $00213D C1/DB5C: C7 5B CMP [$5B] C1/DB5E: 90 F0 BCC $DB50 C1/DB60: AE F6 7A LDX $7AF6 C1/DB63: 60 RTS ; [ Battle Animation Command $F3: Jump Based on Attacker ] ; +b1 = jump address if char 1 is attacker ; +b3 = jump address if char 2 is attacker ; +b5 = jump address if char 3 is attacker ; +b7 = jump address if char 4 is attacker ; +b9 = jump address if monster is attacker (any) magic_code73: C1/DB64: AE F6 7A LDX $7AF6 C1/DB67: BD 38 6A LDA $6A38,X ; attacker number C1/DB6A: 80 06 BRA $DB72 ; [ Battle Animation Command $F0: Jump Based on Target ] magic_code70: C1/DB6C: AE F6 7A LDX $7AF6 C1/DB6F: BD 39 6A LDA $6A39,X ; target number C1/DB72: 30 04 BMI $DB78 ; branch if a monster C1/DB74: 29 03 AND #$03 C1/DB76: 80 02 BRA $DB7A C1/DB78: A9 04 LDA #$04 C1/DB7A: C2 20 REP #$20 C1/DB7C: 0A ASL C1/DB7D: 85 22 STA $22 C1/DB7F: A5 5B LDA $5B C1/DB81: 18 CLC C1/DB82: 65 22 ADC $22 C1/DB84: 85 5B STA $5B C1/DB86: A7 5B LDA [$5B] C1/DB88: 3A DEC C1/DB89: 85 5B STA $5B C1/DB8B: 7B TDC C1/DB8C: E2 20 SEP #$20 C1/DB8E: 60 RTS ; [ Battle Animation Command $ED: ] magic_code6d: C1/DB8F: AE F6 7A LDX $7AF6 C1/DB92: C2 20 REP #$20 C1/DB94: BD 3A 6A LDA $6A3A,X ; thread x position C1/DB97: 85 22 STA $22 C1/DB99: 29 00 01 AND #$0100 C1/DB9C: F0 03 BEQ $DBA1 C1/DB9E: 3A DEC C1/DB9F: 85 22 STA $22 C1/DBA1: BD 3C 6A LDA $6A3C,X ; thread y position C1/DBA4: 85 24 STA $24 C1/DBA6: 29 00 01 AND #$0100 C1/DBA9: F0 03 BEQ $DBAE C1/DBAB: 3A DEC C1/DBAC: 85 24 STA $24 C1/DBAE: 7B TDC C1/DBAF: E2 20 SEP #$20 C1/DBB1: A5 22 LDA $22 C1/DBB3: 85 7D STA $7D C1/DBB5: A5 24 LDA $24 C1/DBB7: 85 7E STA $7E C1/DBB9: BD 82 6F LDA $6F82,X ; target x position C1/DBBC: 85 7F STA $7F C1/DBBE: BD 84 6F LDA $6F84,X ; target y position C1/DBC1: 85 80 STA $80 C1/DBC3: 20 91 6C JSR $6C91 ; C1/DBC6: AE F6 7A LDX $7AF6 C1/DBC9: A9 07 LDA #$07 C1/DBCB: 85 24 STA $24 C1/DBCD: 20 BA E7 JSR $E7BA C1/DBD0: A5 85 LDA $85 C1/DBD2: 38 SEC C1/DBD3: FD DB 74 SBC $74DB,X ; vector angle C1/DBD6: 30 0B BMI $DBE3 C1/DBD8: BD DB 74 LDA $74DB,X C1/DBDB: 18 CLC C1/DBDC: 65 22 ADC $22 C1/DBDE: 9D DB 74 STA $74DB,X C1/DBE1: 80 09 BRA $DBEC C1/DBE3: BD DB 74 LDA $74DB,X ; vector angle C1/DBE6: 38 SEC C1/DBE7: E5 22 SBC $22 C1/DBE9: 9D DB 74 STA $74DB,X C1/DBEC: A7 5B LDA [$5B] C1/DBEE: 18 CLC C1/DBEF: 69 04 ADC #$04 C1/DBF1: 85 24 STA $24 C1/DBF3: AE F6 7A LDX $7AF6 C1/DBF6: A5 86 LDA $86 C1/DBF8: C5 24 CMP $24 C1/DBFA: B0 06 BCS $DC02 C1/DBFC: A4 5B LDY $5B C1/DBFE: C8 INY C1/DBFF: 84 5B STY $5B C1/DC01: 60 RTS C1/DC02: A7 5B LDA [$5B] C1/DC04: A8 TAY C1/DC05: 84 24 STY $24 C1/DC07: BD DB 74 LDA $74DB,X ; vector angle C1/DC0A: 18 CLC C1/DC0B: 69 40 ADC #$40 C1/DC0D: 20 67 6C JSR $6C67 C1/DC10: AE F6 7A LDX $7AF6 C1/DC13: C2 20 REP #$20 C1/DC15: BD 3A 6A LDA $6A3A,X ; thread x position += +$28 C1/DC18: 18 CLC C1/DC19: 65 28 ADC $28 C1/DC1B: 9D 3A 6A STA $6A3A,X C1/DC1E: 7B TDC C1/DC1F: E2 20 SEP #$20 C1/DC21: AE F6 7A LDX $7AF6 C1/DC24: A7 5B LDA [$5B] C1/DC26: A8 TAY C1/DC27: 84 24 STY $24 C1/DC29: BD DB 74 LDA $74DB,X C1/DC2C: 20 67 6C JSR $6C67 C1/DC2F: AE F6 7A LDX $7AF6 C1/DC32: C2 20 REP #$20 C1/DC34: BD 3C 6A LDA $6A3C,X ; thread y position += +$28 C1/DC37: 18 CLC C1/DC38: 65 28 ADC $28 C1/DC3A: 9D 3C 6A STA $6A3C,X C1/DC3D: A0 01 00 LDY #$0001 C1/DC40: B7 5B LDA [$5B],Y C1/DC42: 29 FF 00 AND #$00FF C1/DC45: 85 22 STA $22 C1/DC47: A5 5B LDA $5B C1/DC49: 38 SEC C1/DC4A: E5 22 SBC $22 C1/DC4C: 85 5B STA $5B C1/DC4E: 7B TDC C1/DC4F: E2 20 SEP #$20 C1/DC51: AE F6 7A LDX $7AF6 C1/DC54: 60 RTS ; [ Battle Animation Command $EC: Change Thread Layer ] ; b1 = thread layer (0 = sprite, 1 = bg1, 2 = bg3) magic_code6c: C1/DC55: AE F6 7A LDX $7AF6 C1/DC58: BD 86 6F LDA $6F86,X ; thread layer C1/DC5B: 29 FC AND #$FC C1/DC5D: 07 5B ORA [$5B] C1/DC5F: 9D 86 6F STA $6F86,X C1/DC62: 9E 8C 6F STZ $6F8C,X ; clear frame offset C1/DC65: 60 RTS ; [ Battle Animation Command $EB: Jump Based on Thread Index ] ; +b1 = jump address for thread 0 ; +b3 = jump address for thread 1 ; +b5 = jump address for thread 2 ; +b7 = jump address for thread 3 ; +b9 = jump address for thread 4 ; +b11 = jump address for thread 5 ; +b13 = jump address for thread 6 ; +b15 = jump address for thread 7 magic_code6b: C1/DC66: AE F6 7A LDX $7AF6 C1/DC69: BD 36 6A LDA $6A36,X ; thread index C1/DC6C: C2 20 REP #$20 C1/DC6E: 0A ASL C1/DC6F: 85 22 STA $22 C1/DC71: A5 5B LDA $5B ; animation script pointer += thread index * 2 C1/DC73: 18 CLC C1/DC74: 65 22 ADC $22 C1/DC76: 85 5B STA $5B C1/DC78: A7 5B LDA [$5B] ; jump address C1/DC7A: 3A DEC C1/DC7B: 85 5B STA $5B ; set new script pointer C1/DC7D: 7B TDC C1/DC7E: E2 20 SEP #$20 C1/DC80: 60 RTS ; [ Battle Animation Command $EA: Set BG Tile Data Location ] ; b1 = 13--xxxx ; 1: affect bg1 ; 3: affect bg3 ; x: tile data location (0 = top-left, 1 = top-right, 2 = bottom-left, 3 = bottom-right) ; for bg1 only (4 = monster tile data, 5 = ???, 6 = top-left of bg3, 7 = top-right of bg3) magic_code6a: C1/DC81: A7 5B LDA [$5B] C1/DC83: 10 05 BPL $DC8A C1/DC85: 29 0F AND #$0F C1/DC87: 8D C8 62 STA $62C8 ; bg1 tile data quadrant C1/DC8A: A7 5B LDA [$5B] C1/DC8C: 29 40 AND #$40 C1/DC8E: F0 07 BEQ $DC97 C1/DC90: A7 5B LDA [$5B] C1/DC92: 29 0F AND #$0F C1/DC94: 8D C9 62 STA $62C9 ; bg3 tile data quadrant C1/DC97: AE F6 7A LDX $7AF6 C1/DC9A: 60 RTS ; [ Battle Animation Command $E9: Move Randomly ] ; b1 = x distance (mask) ; b2 = y distance (mask) magic_code69: C1/DC9B: 20 5B 18 JSR $185B ; update random number C1/DC9E: 85 10 STA $10 C1/DCA0: 20 5B 18 JSR $185B ; update random number C1/DCA3: 85 12 STA $12 C1/DCA5: AE F6 7A LDX $7AF6 C1/DCA8: A5 10 LDA $10 C1/DCAA: 27 5B AND [$5B] C1/DCAC: 9D CE 74 STA $74CE,X ; set x offset C1/DCAF: 9E CF 74 STZ $74CF,X C1/DCB2: BD 87 6F LDA $6F87,X ; h flip C1/DCB5: F0 0F BEQ $DCC6 ; branch if not flipped C1/DCB7: C2 20 REP #$20 C1/DCB9: BD CE 74 LDA $74CE,X ; invert x offset C1/DCBC: 49 FF FF EOR #$FFFF C1/DCBF: 1A INC C1/DCC0: 9D CE 74 STA $74CE,X C1/DCC3: 7B TDC C1/DCC4: E2 20 SEP #$20 C1/DCC6: A0 01 00 LDY #$0001 C1/DCC9: A5 12 LDA $12 C1/DCCB: 37 5B AND [$5B],Y C1/DCCD: 9D D0 74 STA $74D0,X ; set y offset C1/DCD0: 9E D1 74 STZ $74D1,X C1/DCD3: A4 5B LDY $5B C1/DCD5: C8 INY C1/DCD6: 84 5B STY $5B C1/DCD8: 60 RTS ; [ Battle Animation Command $EF: Move in Flattened Polar Coordinates ] ; b1: angle ; b2: radius magic_code6f: C1/DCD9: A9 01 LDA #$01 C1/DCDB: 85 1A STA $1A C1/DCDD: 80 02 BRA $DCE1 ; [ Battle Animation Command $E8: Move in Polar Coordinates ] ; b1: angle ; b2: radius magic_code68: C1/DCDF: 64 1A STZ $1A C1/DCE1: AE F6 7A LDX $7AF6 C1/DCE4: BD D9 74 LDA $74D9,X ; current vector position C1/DCE7: 85 24 STA $24 C1/DCE9: BD D8 74 LDA $74D8,X ; vector angle C1/DCEC: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/DCEF: AE F6 7A LDX $7AF6 C1/DCF2: C2 20 REP #$20 C1/DCF4: BD 87 6F LDA $6F87,X C1/DCF7: 29 FF 00 AND #$00FF C1/DCFA: F0 07 BEQ $DD03 ; branch if not mirrored C1/DCFC: A5 22 LDA $22 C1/DCFE: 49 FF FF EOR #$FFFF C1/DD01: 85 22 STA $22 C1/DD03: A5 22 LDA $22 C1/DD05: 9D CE 74 STA $74CE,X ; x offset C1/DD08: 7B TDC C1/DD09: E2 20 SEP #$20 C1/DD0B: A5 1A LDA $1A C1/DD0D: F0 02 BEQ $DD11 ; branch if not flattened C1/DD0F: 46 24 LSR $24 C1/DD11: BD D8 74 LDA $74D8,X ; vector angle + $40 C1/DD14: 18 CLC C1/DD15: 69 40 ADC #$40 C1/DD17: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/DD1A: AE F6 7A LDX $7AF6 C1/DD1D: C2 20 REP #$20 C1/DD1F: A5 22 LDA $22 C1/DD21: 9D D0 74 STA $74D0,X ; y offset C1/DD24: 7B TDC C1/DD25: E2 20 SEP #$20 C1/DD27: BD D9 74 LDA $74D9,X ; current vector position C1/DD2A: 18 CLC C1/DD2B: 67 5B ADC [$5B] C1/DD2D: 9D D9 74 STA $74D9,X ; current vector position C1/DD30: A0 01 00 LDY #$0001 C1/DD33: BD D8 74 LDA $74D8,X ; vector angle C1/DD36: 18 CLC C1/DD37: 77 5B ADC [$5B],Y C1/DD39: 9D D8 74 STA $74D8,X ; vector angle C1/DD3C: A4 5B LDY $5B C1/DD3E: C8 INY C1/DD3F: 84 5B STY $5B C1/DD41: 60 RTS ; [ Battle Animation Command $E3: ] magic_code63: C1/DD42: 7B TDC C1/DD43: 1A INC C1/DD44: 20 D9 DD JSR $DDD9 C1/DD47: AE F6 7A LDX $7AF6 C1/DD4A: A7 5B LDA [$5B] C1/DD4C: 85 26 STA $26 C1/DD4E: 64 27 STZ $27 C1/DD50: C2 20 REP #$20 C1/DD52: BD D7 74 LDA $74D7,X C1/DD55: 38 SEC C1/DD56: E5 26 SBC $26 C1/DD58: 9D D7 74 STA $74D7,X C1/DD5B: 10 10 BPL $DD6D C1/DD5D: BD E8 64 LDA $64E8,X C1/DD60: 99 C3 80 STA $80C3,Y C1/DD63: BD EA 64 LDA $64EA,X C1/DD66: 99 CF 80 STA $80CF,Y C1/DD69: E6 5B INC $5B C1/DD6B: 80 19 BRA $DD86 C1/DD6D: A5 14 LDA $14 C1/DD6F: 18 CLC C1/DD70: 65 28 ADC $28 C1/DD72: 99 CF 80 STA $80CF,Y C1/DD75: A0 01 00 LDY #$0001 C1/DD78: B7 5B LDA [$5B],Y C1/DD7A: 29 FF 00 AND #$00FF C1/DD7D: 85 22 STA $22 C1/DD7F: A5 5B LDA $5B C1/DD81: 38 SEC C1/DD82: E5 22 SBC $22 C1/DD84: 85 5B STA $5B C1/DD86: 7B TDC C1/DD87: E2 20 SEP #$20 C1/DD89: AE F6 7A LDX $7AF6 C1/DD8C: 60 RTS ; [ Battle Animation Command $E2: ] magic_code62: C1/DD8D: 7B TDC C1/DD8E: 20 D9 DD JSR $DDD9 C1/DD91: AE F6 7A LDX $7AF6 C1/DD94: A7 5B LDA [$5B] C1/DD96: 85 26 STA $26 C1/DD98: 64 27 STZ $27 C1/DD9A: C2 20 REP #$20 C1/DD9C: BD D7 74 LDA $74D7,X C1/DD9F: 38 SEC C1/DDA0: E5 26 SBC $26 C1/DDA2: 9D D7 74 STA $74D7,X C1/DDA5: 10 12 BPL $DDB9 C1/DDA7: A5 14 LDA $14 C1/DDA9: 99 CF 80 STA $80CF,Y C1/DDAC: BD D9 74 LDA $74D9,X C1/DDAF: 29 FF 00 AND #$00FF C1/DDB2: 9D D7 74 STA $74D7,X C1/DDB5: E6 5B INC $5B C1/DDB7: 80 19 BRA $DDD2 C1/DDB9: A5 14 LDA $14 C1/DDBB: 18 CLC C1/DDBC: 65 28 ADC $28 C1/DDBE: 99 CF 80 STA $80CF,Y C1/DDC1: A0 01 00 LDY #$0001 C1/DDC4: B7 5B LDA [$5B],Y C1/DDC6: 29 FF 00 AND #$00FF C1/DDC9: 85 22 STA $22 C1/DDCB: A5 5B LDA $5B C1/DDCD: 38 SEC C1/DDCE: E5 22 SBC $22 C1/DDD0: 85 5B STA $5B C1/DDD2: 7B TDC C1/DDD3: E2 20 SEP #$20 C1/DDD5: AE F6 7A LDX $7AF6 C1/DDD8: 60 RTS ; [ ] set_mon_line_vec: C1/DDD9: 48 PHA C1/DDDA: AE F6 7A LDX $7AF6 C1/DDDD: BD 38 6A LDA $6A38,X C1/DDE0: 29 7F AND #$7F C1/DDE2: 38 SEC C1/DDE3: E9 04 SBC #$04 C1/DDE5: 0A ASL C1/DDE6: A8 TAY C1/DDE7: 8C F8 7A STY $7AF8 C1/DDEA: A7 5B LDA [$5B] C1/DDEC: C2 20 REP #$20 C1/DDEE: 85 26 STA $26 C1/DDF0: B9 AB 80 LDA $80AB,Y C1/DDF3: 85 10 STA $10 C1/DDF5: B9 B7 80 LDA $80B7,Y C1/DDF8: 85 12 STA $12 C1/DDFA: 7B TDC C1/DDFB: E2 20 SEP #$20 C1/DDFD: 68 PLA C1/DDFE: F0 05 BEQ $DE05 C1/DE00: 20 FE DE JSR $DEFE C1/DE03: 80 03 BRA $DE08 C1/DE05: 20 A0 DF JSR $DFA0 C1/DE08: AE F6 7A LDX $7AF6 C1/DE0B: A9 FF LDA #$FF C1/DE0D: 8F 04 42 00 STA $004204 C1/DE11: 8F 05 42 00 STA $004205 C1/DE15: BD D9 74 LDA $74D9,X C1/DE18: 8F 06 42 00 STA $004206 C1/DE1C: AC F8 7A LDY $7AF8 C1/DE1F: C2 20 REP #$20 C1/DE21: A5 10 LDA $10 C1/DE23: 99 AB 80 STA $80AB,Y C1/DE26: 18 CLC C1/DE27: 7D E8 64 ADC $64E8,X C1/DE2A: 99 C3 80 STA $80C3,Y C1/DE2D: A5 12 LDA $12 C1/DE2F: 99 B7 80 STA $80B7,Y C1/DE32: 18 CLC C1/DE33: 7D EA 64 ADC $64EA,X C1/DE36: 48 PHA C1/DE37: 99 CF 80 STA $80CF,Y C1/DE3A: BD D7 74 LDA $74D7,X C1/DE3D: 29 FF 00 AND #$00FF C1/DE40: 85 22 STA $22 C1/DE42: AF 14 42 00 LDA $004214 C1/DE46: 85 24 STA $24 C1/DE48: 20 F4 18 JSR $18F4 C1/DE4B: 7B TDC C1/DE4C: E2 20 SEP #$20 C1/DE4E: A2 20 00 LDX #$0020 C1/DE51: 86 24 STX $24 C1/DE53: A5 27 LDA $27 C1/DE55: 4A LSR C1/DE56: 18 CLC C1/DE57: 69 80 ADC #$80 C1/DE59: 20 67 6C JSR $6C67 C1/DE5C: FA PLX C1/DE5D: 86 14 STX $14 C1/DE5F: AC F8 7A LDY $7AF8 C1/DE62: AE F6 7A LDX $7AF6 C1/DE65: 60 RTS ; [ ] ; unused ??? C1/DE66: AE F6 7A LDX $7AF6 C1/DE69: BD 38 6A LDA $6A38,X C1/DE6C: 29 7F AND #$7F C1/DE6E: 38 SEC C1/DE6F: E9 04 SBC #$04 C1/DE71: 0A ASL C1/DE72: A8 TAY C1/DE73: 8C F8 7A STY $7AF8 C1/DE76: BD D9 74 LDA $74D9,X C1/DE79: 85 24 STA $24 C1/DE7B: BD DA 74 LDA $74DA,X C1/DE7E: 85 25 STA $25 C1/DE80: BD DB 74 LDA $74DB,X C1/DE83: 18 CLC C1/DE84: 69 40 ADC #$40 C1/DE86: 20 67 6C JSR $6C67 C1/DE89: AE F6 7A LDX $7AF6 C1/DE8C: AC F8 7A LDY $7AF8 C1/DE8F: C2 20 REP #$20 C1/DE91: A5 28 LDA $28 C1/DE93: 18 CLC C1/DE94: 7D E8 64 ADC $64E8,X C1/DE97: 99 C3 80 STA $80C3,Y C1/DE9A: 7B TDC C1/DE9B: E2 20 SEP #$20 C1/DE9D: BD DB 74 LDA $74DB,X C1/DEA0: 20 67 6C JSR $6C67 C1/DEA3: AE F6 7A LDX $7AF6 C1/DEA6: A9 FF LDA #$FF C1/DEA8: 8F 04 42 00 STA $004204 C1/DEAC: 8F 05 42 00 STA $004205 C1/DEB0: BD DD 74 LDA $74DD,X C1/DEB3: F0 04 BEQ $DEB9 C1/DEB5: A9 FF LDA #$FF C1/DEB7: 80 03 BRA $DEBC C1/DEB9: BD DC 74 LDA $74DC,X C1/DEBC: 8F 06 42 00 STA $004206 C1/DEC0: AC F8 7A LDY $7AF8 C1/DEC3: BD D9 74 LDA $74D9,X C1/DEC6: C2 20 REP #$20 C1/DEC8: 85 22 STA $22 C1/DECA: A5 28 LDA $28 C1/DECC: 48 PHA C1/DECD: AF 14 42 00 LDA $004214 C1/DED1: 85 24 STA $24 C1/DED3: 20 F4 18 JSR $18F4 C1/DED6: 7B TDC C1/DED7: E2 20 SEP #$20 C1/DED9: A2 20 00 LDX #$0020 C1/DEDC: 86 24 STX $24 C1/DEDE: A5 27 LDA $27 C1/DEE0: 4A LSR C1/DEE1: 18 CLC C1/DEE2: 69 80 ADC #$80 C1/DEE4: 20 67 6C JSR $6C67 C1/DEE7: AC F8 7A LDY $7AF8 C1/DEEA: AE F6 7A LDX $7AF6 C1/DEED: C2 20 REP #$20 C1/DEEF: 68 PLA C1/DEF0: 18 CLC C1/DEF1: 65 28 ADC $28 C1/DEF3: 18 CLC C1/DEF4: 7D EA 64 ADC $64EA,X C1/DEF7: 99 CF 80 STA $80CF,Y C1/DEFA: 7B TDC C1/DEFB: E2 20 SEP #$20 C1/DEFD: 60 RTS ; [ ] vec_line_set: C1/DEFE: BD DC 74 LDA $74DC,X C1/DF01: 85 22 STA $22 C1/DF03: BD DD 74 LDA $74DD,X C1/DF06: 85 24 STA $24 C1/DF08: 64 23 STZ $23 C1/DF0A: 64 25 STZ $25 C1/DF0C: 64 29 STZ $29 C1/DF0E: A5 22 LDA $22 C1/DF10: C5 24 CMP $24 C1/DF12: 90 46 BCC $DF5A C1/DF14: A4 12 LDY $12 C1/DF16: BD DA 74 LDA $74DA,X C1/DF19: 30 0E BMI $DF29 C1/DF1B: C2 20 REP #$20 C1/DF1D: A5 10 LDA $10 C1/DF1F: 38 SEC C1/DF20: E5 26 SBC $26 C1/DF22: 85 10 STA $10 C1/DF24: 7B TDC C1/DF25: E2 20 SEP #$20 C1/DF27: 80 0C BRA $DF35 C1/DF29: C2 20 REP #$20 C1/DF2B: A5 10 LDA $10 C1/DF2D: 18 CLC C1/DF2E: 65 26 ADC $26 C1/DF30: 85 10 STA $10 C1/DF32: 7B TDC C1/DF33: E2 20 SEP #$20 C1/DF35: BD DB 74 LDA $74DB,X C1/DF38: 30 10 BMI $DF4A C1/DF3A: BD D6 74 LDA $74D6,X C1/DF3D: 85 28 STA $28 C1/DF3F: 20 7C E0 JSR $E07C C1/DF42: A5 28 LDA $28 C1/DF44: 9D D6 74 STA $74D6,X C1/DF47: 84 12 STY $12 C1/DF49: 60 RTS C1/DF4A: BD D6 74 LDA $74D6,X C1/DF4D: 85 28 STA $28 C1/DF4F: 20 99 E0 JSR $E099 C1/DF52: A5 28 LDA $28 C1/DF54: 9D D6 74 STA $74D6,X C1/DF57: 84 12 STY $12 C1/DF59: 60 RTS C1/DF5A: A4 10 LDY $10 C1/DF5C: BD DB 74 LDA $74DB,X C1/DF5F: 30 0E BMI $DF6F C1/DF61: C2 20 REP #$20 C1/DF63: A5 12 LDA $12 C1/DF65: 38 SEC C1/DF66: E5 26 SBC $26 C1/DF68: 85 12 STA $12 C1/DF6A: 7B TDC C1/DF6B: E2 20 SEP #$20 C1/DF6D: 80 0C BRA $DF7B C1/DF6F: C2 20 REP #$20 C1/DF71: A5 12 LDA $12 C1/DF73: 18 CLC C1/DF74: 65 26 ADC $26 C1/DF76: 85 12 STA $12 C1/DF78: 7B TDC C1/DF79: E2 20 SEP #$20 C1/DF7B: BD DA 74 LDA $74DA,X C1/DF7E: 30 10 BMI $DF90 C1/DF80: BD D6 74 LDA $74D6,X C1/DF83: 85 28 STA $28 C1/DF85: 20 42 E0 JSR $E042 C1/DF88: A5 28 LDA $28 C1/DF8A: 9D D6 74 STA $74D6,X C1/DF8D: 84 10 STY $10 C1/DF8F: 60 RTS C1/DF90: BD D6 74 LDA $74D6,X C1/DF93: 85 28 STA $28 C1/DF95: 20 5F E0 JSR $E05F C1/DF98: A5 28 LDA $28 C1/DF9A: 9D D6 74 STA $74D6,X C1/DF9D: 84 10 STY $10 C1/DF9F: 60 RTS ; [ ] vec_line_set_ret: C1/DFA0: BD DC 74 LDA $74DC,X C1/DFA3: 85 22 STA $22 C1/DFA5: BD DD 74 LDA $74DD,X C1/DFA8: 85 24 STA $24 C1/DFAA: 64 23 STZ $23 C1/DFAC: 64 25 STZ $25 C1/DFAE: 64 29 STZ $29 C1/DFB0: A5 22 LDA $22 C1/DFB2: C5 24 CMP $24 C1/DFB4: 90 46 BCC $DFFC C1/DFB6: A4 12 LDY $12 C1/DFB8: BD DA 74 LDA $74DA,X C1/DFBB: 30 0E BMI $DFCB C1/DFBD: C2 20 REP #$20 C1/DFBF: A5 10 LDA $10 C1/DFC1: 18 CLC C1/DFC2: 65 26 ADC $26 C1/DFC4: 85 10 STA $10 C1/DFC6: 7B TDC C1/DFC7: E2 20 SEP #$20 C1/DFC9: 80 0C BRA $DFD7 C1/DFCB: C2 20 REP #$20 C1/DFCD: A5 10 LDA $10 C1/DFCF: 38 SEC C1/DFD0: E5 26 SBC $26 C1/DFD2: 85 10 STA $10 C1/DFD4: 7B TDC C1/DFD5: E2 20 SEP #$20 C1/DFD7: BD DB 74 LDA $74DB,X C1/DFDA: 30 10 BMI $DFEC C1/DFDC: BD D6 74 LDA $74D6,X C1/DFDF: 85 28 STA $28 C1/DFE1: 20 99 E0 JSR $E099 C1/DFE4: A5 28 LDA $28 C1/DFE6: 9D D6 74 STA $74D6,X C1/DFE9: 84 12 STY $12 C1/DFEB: 60 RTS C1/DFEC: BD D6 74 LDA $74D6,X C1/DFEF: 85 28 STA $28 C1/DFF1: 20 7C E0 JSR $E07C C1/DFF4: A5 28 LDA $28 C1/DFF6: 9D D6 74 STA $74D6,X C1/DFF9: 84 12 STY $12 C1/DFFB: 60 RTS C1/DFFC: A4 10 LDY $10 C1/DFFE: BD DB 74 LDA $74DB,X C1/E001: 30 0E BMI $E011 C1/E003: C2 20 REP #$20 C1/E005: A5 12 LDA $12 C1/E007: 18 CLC C1/E008: 65 26 ADC $26 C1/E00A: 85 12 STA $12 C1/E00C: 7B TDC C1/E00D: E2 20 SEP #$20 C1/E00F: 80 0C BRA $E01D C1/E011: C2 20 REP #$20 C1/E013: A5 12 LDA $12 C1/E015: 38 SEC C1/E016: E5 26 SBC $26 C1/E018: 85 12 STA $12 C1/E01A: 7B TDC C1/E01B: E2 20 SEP #$20 C1/E01D: BD DA 74 LDA $74DA,X C1/E020: 30 10 BMI $E032 C1/E022: BD D6 74 LDA $74D6,X C1/E025: 85 28 STA $28 C1/E027: 20 5F E0 JSR $E05F C1/E02A: A5 28 LDA $28 C1/E02C: 9D D6 74 STA $74D6,X C1/E02F: 84 10 STY $10 C1/E031: 60 RTS C1/E032: BD D6 74 LDA $74D6,X C1/E035: 85 28 STA $28 C1/E037: 20 42 E0 JSR $E042 C1/E03A: A5 28 LDA $28 C1/E03C: 9D D6 74 STA $74D6,X C1/E03F: 84 10 STY $10 C1/E041: 60 RTS ; [ ] x_dec: C1/E042: A5 22 LDA $22 C1/E044: F0 18 BEQ $E05E C1/E046: C2 20 REP #$20 C1/E048: A5 28 LDA $28 C1/E04A: 18 CLC C1/E04B: 65 22 ADC $22 C1/E04D: C5 24 CMP $24 C1/E04F: 90 04 BCC $E055 C1/E051: 38 SEC C1/E052: E5 24 SBC $24 C1/E054: 88 DEY C1/E055: 85 28 STA $28 C1/E057: C6 26 DEC $26 C1/E059: D0 ED BNE $E048 C1/E05B: 7B TDC C1/E05C: E2 20 SEP #$20 C1/E05E: 60 RTS ; [ ] x_inc: C1/E05F: A5 22 LDA $22 C1/E061: F0 18 BEQ $E07B C1/E063: C2 20 REP #$20 C1/E065: A5 28 LDA $28 C1/E067: 18 CLC C1/E068: 65 22 ADC $22 C1/E06A: C5 24 CMP $24 C1/E06C: 90 04 BCC $E072 C1/E06E: 38 SEC C1/E06F: E5 24 SBC $24 C1/E071: C8 INY C1/E072: 85 28 STA $28 C1/E074: C6 26 DEC $26 C1/E076: D0 ED BNE $E065 C1/E078: 7B TDC C1/E079: E2 20 SEP #$20 C1/E07B: 60 RTS ; [ ] y_dec: C1/E07C: A5 24 LDA $24 C1/E07E: F0 18 BEQ $E098 C1/E080: C2 20 REP #$20 C1/E082: A5 28 LDA $28 C1/E084: 18 CLC C1/E085: 65 24 ADC $24 C1/E087: C5 22 CMP $22 C1/E089: 90 04 BCC $E08F C1/E08B: 38 SEC C1/E08C: E5 22 SBC $22 C1/E08E: 88 DEY C1/E08F: 85 28 STA $28 C1/E091: C6 26 DEC $26 C1/E093: D0 ED BNE $E082 C1/E095: 7B TDC C1/E096: E2 20 SEP #$20 C1/E098: 60 RTS ; [ ] y_inc: C1/E099: A5 24 LDA $24 C1/E09B: F0 18 BEQ $E0B5 C1/E09D: C2 20 REP #$20 C1/E09F: A5 28 LDA $28 C1/E0A1: 18 CLC C1/E0A2: 65 24 ADC $24 C1/E0A4: C5 22 CMP $22 C1/E0A6: 90 04 BCC $E0AC C1/E0A8: 38 SEC C1/E0A9: E5 22 SBC $22 C1/E0AB: C8 INY C1/E0AC: 85 28 STA $28 C1/E0AE: C6 26 DEC $26 C1/E0B0: D0 ED BNE $E09F C1/E0B2: 7B TDC C1/E0B3: E2 20 SEP #$20 C1/E0B5: 60 RTS ; [ ] set_play_line_vec: C1/E0B6: 48 PHA C1/E0B7: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E0BA: A7 5B LDA [$5B] C1/E0BC: C2 20 REP #$20 C1/E0BE: 85 26 STA $26 C1/E0C0: B9 C5 61 LDA $61C5,Y C1/E0C3: 85 10 STA $10 C1/E0C5: B9 C7 61 LDA $61C7,Y C1/E0C8: 85 12 STA $12 C1/E0CA: 7B TDC C1/E0CB: E2 20 SEP #$20 C1/E0CD: 68 PLA C1/E0CE: F0 05 BEQ $E0D5 C1/E0D0: 20 FE DE JSR $DEFE C1/E0D3: 80 03 BRA $E0D8 C1/E0D5: 20 A0 DF JSR $DFA0 C1/E0D8: AE F6 7A LDX $7AF6 C1/E0DB: A9 FF LDA #$FF C1/E0DD: 8F 04 42 00 STA $004204 C1/E0E1: 8F 05 42 00 STA $004205 C1/E0E5: BD D9 74 LDA $74D9,X C1/E0E8: 8F 06 42 00 STA $004206 C1/E0EC: AC F8 7A LDY $7AF8 C1/E0EF: C2 20 REP #$20 C1/E0F1: AD FA EB LDA $EBFA C1/E0F4: 29 FF 00 AND #$00FF C1/E0F7: F0 0C BEQ $E105 C1/E0F9: A5 10 LDA $10 C1/E0FB: 99 C5 61 STA $61C5,Y C1/E0FE: A5 12 LDA $12 C1/E100: 99 C7 61 STA $61C7,Y C1/E103: 80 10 BRA $E115 C1/E105: A5 10 LDA $10 C1/E107: 99 C5 61 STA $61C5,Y C1/E10A: 9D CE 74 STA $74CE,X C1/E10D: A5 12 LDA $12 C1/E10F: 99 C7 61 STA $61C7,Y C1/E112: 9D D0 74 STA $74D0,X C1/E115: BD D7 74 LDA $74D7,X C1/E118: 29 FF 00 AND #$00FF C1/E11B: 85 22 STA $22 C1/E11D: AF 14 42 00 LDA $004214 C1/E121: 85 24 STA $24 C1/E123: 20 F4 18 JSR $18F4 C1/E126: 7B TDC C1/E127: E2 20 SEP #$20 C1/E129: A0 02 00 LDY #$0002 C1/E12C: B7 5B LDA [$5B],Y C1/E12E: 85 24 STA $24 C1/E130: 64 25 STZ $25 C1/E132: A5 27 LDA $27 C1/E134: 4A LSR C1/E135: 18 CLC C1/E136: 69 80 ADC #$80 C1/E138: 20 67 6C JSR $6C67 C1/E13B: AC F8 7A LDY $7AF8 C1/E13E: AE F6 7A LDX $7AF6 C1/E141: C2 20 REP #$20 C1/E143: AD FA EB LDA $EBFA C1/E146: 29 FF 00 AND #$00FF C1/E149: D0 09 BNE $E154 C1/E14B: BD D0 74 LDA $74D0,X C1/E14E: 18 CLC C1/E14F: 65 28 ADC $28 C1/E151: 9D D0 74 STA $74D0,X C1/E154: A5 28 LDA $28 C1/E156: 99 D2 61 STA $61D2,Y C1/E159: 7B TDC C1/E15A: E2 20 SEP #$20 C1/E15C: 60 RTS ; [ Battle Animation Command $E5: Jump Forward Along Vector ] ; b1: speed ; b2: number of bytes to branch backwards ; b3: jump height magic_code65: C1/E15D: 7B TDC C1/E15E: 20 B6 E0 JSR $E0B6 C1/E161: AE F6 7A LDX $7AF6 C1/E164: A7 5B LDA [$5B] C1/E166: 85 26 STA $26 C1/E168: 64 27 STZ $27 C1/E16A: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E16D: C2 20 REP #$20 C1/E16F: BD D7 74 LDA $74D7,X C1/E172: 38 SEC C1/E173: E5 26 SBC $26 C1/E175: 9D D7 74 STA $74D7,X C1/E178: 10 21 BPL $E19B C1/E17A: AD FA EB LDA $EBFA C1/E17D: 29 FF 00 AND #$00FF C1/E180: D0 06 BNE $E188 C1/E182: B9 C7 61 LDA $61C7,Y C1/E185: 9D D0 74 STA $74D0,X C1/E188: BD D9 74 LDA $74D9,X C1/E18B: 29 FF 00 AND #$00FF C1/E18E: 9D D7 74 STA $74D7,X C1/E191: 7B TDC C1/E192: 99 D2 61 STA $61D2,Y C1/E195: E6 5B INC $5B C1/E197: E6 5B INC $5B C1/E199: 80 11 BRA $E1AC C1/E19B: A0 01 00 LDY #$0001 C1/E19E: B7 5B LDA [$5B],Y C1/E1A0: 29 FF 00 AND #$00FF C1/E1A3: 85 22 STA $22 C1/E1A5: A5 5B LDA $5B C1/E1A7: 38 SEC C1/E1A8: E5 22 SBC $22 C1/E1AA: 85 5B STA $5B C1/E1AC: 7B TDC C1/E1AD: E2 20 SEP #$20 C1/E1AF: AE F6 7A LDX $7AF6 C1/E1B2: 60 RTS ; [ Battle Animation Command $E6: Jump Backward Along Vector ] ; b1: speed ; b2: number of bytes to branch backwards ; b3: jump height magic_code66: C1/E1B3: 7B TDC C1/E1B4: 1A INC C1/E1B5: 20 B6 E0 JSR $E0B6 C1/E1B8: AE F6 7A LDX $7AF6 C1/E1BB: A7 5B LDA [$5B] C1/E1BD: 85 26 STA $26 C1/E1BF: 64 27 STZ $27 C1/E1C1: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E1C4: C2 20 REP #$20 C1/E1C6: BD D7 74 LDA $74D7,X C1/E1C9: 38 SEC C1/E1CA: E5 26 SBC $26 C1/E1CC: 9D D7 74 STA $74D7,X C1/E1CF: 10 13 BPL $E1E4 C1/E1D1: 9E D0 74 STZ $74D0,X C1/E1D4: 7B TDC C1/E1D5: 99 D2 61 STA $61D2,Y C1/E1D8: 99 C5 61 STA $61C5,Y C1/E1DB: 99 C7 61 STA $61C7,Y C1/E1DE: E6 5B INC $5B C1/E1E0: E6 5B INC $5B C1/E1E2: 80 11 BRA $E1F5 C1/E1E4: A0 01 00 LDY #$0001 C1/E1E7: B7 5B LDA [$5B],Y C1/E1E9: 29 FF 00 AND #$00FF C1/E1EC: 85 22 STA $22 C1/E1EE: A5 5B LDA $5B C1/E1F0: 38 SEC C1/E1F1: E5 22 SBC $22 C1/E1F3: 85 5B STA $5B C1/E1F5: 7B TDC C1/E1F6: E2 20 SEP #$20 C1/E1F8: AE F6 7A LDX $7AF6 C1/E1FB: 60 RTS ; [ ] get_jmp_vect: C1/E1FC: AE F6 7A LDX $7AF6 C1/E1FF: BD 38 6A LDA $6A38,X C1/E202: 10 15 BPL $E219 C1/E204: 29 7F AND #$7F C1/E206: 38 SEC C1/E207: E9 04 SBC #$04 C1/E209: 0A ASL C1/E20A: A8 TAY C1/E20B: B9 0F 80 LDA $800F,Y C1/E20E: 8D 4C 61 STA $614C C1/E211: B9 27 80 LDA $8027,Y C1/E214: 8D 4D 61 STA $614D C1/E217: 80 10 BRA $E229 C1/E219: 29 03 AND #$03 C1/E21B: 0A ASL C1/E21C: A8 TAY C1/E21D: B9 33 80 LDA $8033,Y C1/E220: 8D 4C 61 STA $614C C1/E223: B9 43 80 LDA $8043,Y C1/E226: 8D 4D 61 STA $614D C1/E229: BD 39 6A LDA $6A39,X C1/E22C: 10 18 BPL $E246 C1/E22E: 29 7F AND #$7F C1/E230: 38 SEC C1/E231: E9 04 SBC #$04 C1/E233: 0A ASL C1/E234: A8 TAY C1/E235: B9 0F 80 LDA $800F,Y C1/E238: 8D 4E 61 STA $614E C1/E23B: B9 27 80 LDA $8027,Y C1/E23E: 18 CLC C1/E23F: 69 04 ADC #$04 C1/E241: 8D 4F 61 STA $614F C1/E244: 80 13 BRA $E259 C1/E246: 29 03 AND #$03 C1/E248: 0A ASL C1/E249: A8 TAY C1/E24A: B9 33 80 LDA $8033,Y C1/E24D: 8D 4E 61 STA $614E C1/E250: B9 43 80 LDA $8043,Y C1/E253: 18 CLC C1/E254: 69 04 ADC #$04 C1/E256: 8D 4F 61 STA $614F C1/E259: 60 RTS ; [ Battle Animation Command $E7: Calculate Vector from Attacker to Target ] magic_code67: C1/E25A: AE F6 7A LDX $7AF6 C1/E25D: BD 7E 6F LDA $6F7E,X ; attacker x position C1/E260: 8D 4C 61 STA $614C ; vector x0 C1/E263: BD 80 6F LDA $6F80,X ; attacker y position C1/E266: 8D 4D 61 STA $614D ; vector y0 C1/E269: BD 82 6F LDA $6F82,X ; target x position C1/E26C: 8D 4E 61 STA $614E ; vector x1 C1/E26F: AD BA 64 LDA $64BA C1/E272: 29 FF AND #$FF C1/E274: F0 08 BEQ $E27E ; branch if not in magitek mode C1/E276: BD 84 6F LDA $6F84,X ; target y position C1/E279: 38 SEC C1/E27A: E9 18 SBC #$18 C1/E27C: 80 03 BRA $E281 C1/E27E: BD 84 6F LDA $6F84,X ; target y position C1/E281: 8D 4F 61 STA $614F ; vector y1 C1/E284: 80 03 BRA $E289 ; [ Battle Animation Command $E4: ] magic_code64: C1/E286: 20 FC E1 JSR $E1FC C1/E289: 22 C8 DC C2 JSL $C2DCC8 C1/E28D: AE F6 7A LDX $7AF6 C1/E290: C2 20 REP #$20 C1/E292: C6 5B DEC $5B C1/E294: AD 50 61 LDA $6150 C1/E297: 9D DA 74 STA $74DA,X C1/E29A: AD 52 61 LDA $6152 C1/E29D: 9D DC 74 STA $74DC,X C1/E2A0: 7B TDC C1/E2A1: E2 20 SEP #$20 C1/E2A3: AD 52 61 LDA $6152 C1/E2A6: CD 53 61 CMP $6153 C1/E2A9: 90 05 BCC $E2B0 C1/E2AB: AD 52 61 LDA $6152 C1/E2AE: 80 03 BRA $E2B3 C1/E2B0: AD 53 61 LDA $6153 C1/E2B3: 9D D7 74 STA $74D7,X C1/E2B6: 9D D9 74 STA $74D9,X C1/E2B9: 9E D6 74 STZ $74D6,X C1/E2BC: 9E D8 74 STZ $74D8,X C1/E2BF: 60 RTS ; [ Battle Animation Command $F1: Show/Hide Target ] ; b1: m------s ; m: 0 = characters affected, 1 = monsters affected ; s: 0 = hide, 1 = show magic_code71: C1/E2C0: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E2C3: A7 5B LDA [$5B] C1/E2C5: 10 31 BPL $E2F8 ; C1/E2C7: BD 39 6A LDA $6A39,X ; target C1/E2CA: 10 58 BPL $E324 ; return if a character C1/E2CC: 29 0F AND #$0F C1/E2CE: 38 SEC C1/E2CF: E9 04 SBC #$04 C1/E2D1: AA TAX C1/E2D2: BF 01 1A C1 LDA $C11A01,X C1/E2D6: 85 10 STA $10 C1/E2D8: A7 5B LDA [$5B] C1/E2DA: 29 01 AND #$01 C1/E2DC: F0 0A BEQ $E2E8 C1/E2DE: AD AB 61 LDA $61AB C1/E2E1: 05 10 ORA $10 C1/E2E3: 8D AB 61 STA $61AB C1/E2E6: 80 3C BRA $E324 C1/E2E8: A5 10 LDA $10 C1/E2EA: 49 FF EOR #$FF C1/E2EC: 85 10 STA $10 C1/E2EE: AD AB 61 LDA $61AB C1/E2F1: 25 10 AND $10 C1/E2F3: 8D AB 61 STA $61AB C1/E2F6: 80 2C BRA $E324 C1/E2F8: BD 39 6A LDA $6A39,X ; target C1/E2FB: 30 27 BMI $E324 ; return if a monster C1/E2FD: 29 03 AND #$03 C1/E2FF: AA TAX C1/E300: BF 01 1A C1 LDA $C11A01,X ; bit masks C1/E304: 85 10 STA $10 C1/E306: A7 5B LDA [$5B] C1/E308: 29 01 AND #$01 C1/E30A: F0 0A BEQ $E316 ; C1/E30C: AD AC 61 LDA $61AC ; show character C1/E30F: 05 10 ORA $10 C1/E311: 8D AC 61 STA $61AC C1/E314: 80 0E BRA $E324 C1/E316: A5 10 LDA $10 C1/E318: 49 FF EOR #$FF C1/E31A: 85 10 STA $10 C1/E31C: AD AC 61 LDA $61AC ; hide character C1/E31F: 25 10 AND $10 C1/E321: 8D AC 61 STA $61AC C1/E324: AE F6 7A LDX $7AF6 C1/E327: 60 RTS ; [ Battle Animation Command $E1: Show/Hide Attacker ] ; b1: m------s ; m: 0 = characters affected, 1 = monsters affected ; s: 0 = hide, 1 = show magic_code61: C1/E328: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E32B: A7 5B LDA [$5B] C1/E32D: 10 31 BPL $E360 C1/E32F: BD 38 6A LDA $6A38,X ; attacker C1/E332: 10 68 BPL $E39C ; return if a character C1/E334: 29 0F AND #$0F C1/E336: 38 SEC C1/E337: E9 04 SBC #$04 C1/E339: AA TAX C1/E33A: BF 01 1A C1 LDA $C11A01,X ; bit mask C1/E33E: 85 10 STA $10 C1/E340: A7 5B LDA [$5B] C1/E342: 29 01 AND #$01 C1/E344: F0 0A BEQ $E350 C1/E346: AD AB 61 LDA $61AB C1/E349: 05 10 ORA $10 C1/E34B: 8D AB 61 STA $61AB C1/E34E: 80 4C BRA $E39C C1/E350: A5 10 LDA $10 C1/E352: 49 FF EOR #$FF C1/E354: 85 10 STA $10 C1/E356: AD AB 61 LDA $61AB C1/E359: 25 10 AND $10 C1/E35B: 8D AB 61 STA $61AB C1/E35E: 80 3C BRA $E39C C1/E360: BD 38 6A LDA $6A38,X ; attacker C1/E363: 30 37 BMI $E39C ; return if a monster C1/E365: 29 03 AND #$03 C1/E367: AA TAX C1/E368: BF 01 1A C1 LDA $C11A01,X ; bit mask C1/E36C: 85 10 STA $10 C1/E36E: A7 5B LDA [$5B] C1/E370: 29 01 AND #$01 C1/E372: F0 12 BEQ $E386 ; C1/E374: AD AC 61 LDA $61AC ; characters shown C1/E377: 05 10 ORA $10 C1/E379: 8D AC 61 STA $61AC C1/E37C: B9 C0 2E LDA $2EC0,Y ; status 4 C1/E37F: 29 DF AND #$DF ; clear hide status C1/E381: 99 C0 2E STA $2EC0,Y C1/E384: 80 16 BRA $E39C C1/E386: A5 10 LDA $10 C1/E388: 49 FF EOR #$FF C1/E38A: 85 10 STA $10 C1/E38C: AD AC 61 LDA $61AC C1/E38F: 25 10 AND $10 C1/E391: 8D AC 61 STA $61AC C1/E394: B9 C0 2E LDA $2EC0,Y C1/E397: 09 20 ORA #$20 ; set hide status C1/E399: 99 C0 2E STA $2EC0,Y C1/E39C: AE F6 7A LDX $7AF6 C1/E39F: 60 RTS ; [ Battle Animation Command $E0: ] magic_code60: C1/E3A0: AE F6 7A LDX $7AF6 C1/E3A3: A7 5B LDA [$5B] C1/E3A5: 85 22 STA $22 C1/E3A7: A0 01 00 LDY #$0001 C1/E3AA: B7 5B LDA [$5B],Y C1/E3AC: 85 24 STA $24 C1/E3AE: BD 87 6F LDA $6F87,X C1/E3B1: 29 01 AND #$01 C1/E3B3: F0 07 BEQ $E3BC C1/E3B5: A5 22 LDA $22 C1/E3B7: 49 FF EOR #$FF C1/E3B9: 1A INC C1/E3BA: 85 22 STA $22 C1/E3BC: AD 54 61 LDA $6154 C1/E3BF: 18 CLC C1/E3C0: 65 22 ADC $22 C1/E3C2: 8D 54 61 STA $6154 C1/E3C5: AD 55 61 LDA $6155 C1/E3C8: 18 CLC C1/E3C9: 65 24 ADC $24 C1/E3CB: 8D 55 61 STA $6155 C1/E3CE: A0 02 00 LDY #$0002 C1/E3D1: AD 56 61 LDA $6156 C1/E3D4: 18 CLC C1/E3D5: 77 5B ADC [$5B],Y C1/E3D7: 8D 56 61 STA $6156 C1/E3DA: C8 INY C1/E3DB: AD 57 61 LDA $6157 C1/E3DE: 18 CLC C1/E3DF: 77 5B ADC [$5B],Y C1/E3E1: 8D 57 61 STA $6157 C1/E3E4: A4 5B LDY $5B C1/E3E6: C8 INY C1/E3E7: C8 INY C1/E3E8: C8 INY C1/E3E9: 84 5B STY $5B C1/E3EB: 60 RTS ; [ Battle Animation Command $DF: Move Triangle to Target Position ] magic_code5f: C1/E3EC: AE F6 7A LDX $7AF6 C1/E3EF: BD 82 6F LDA $6F82,X ; target x position C1/E3F2: 8D 54 61 STA $6154 ; triangle x position C1/E3F5: BD 84 6F LDA $6F84,X ; target y position C1/E3F8: 8D 55 61 STA $6155 ; triangle y position C1/E3FB: A4 5B LDY $5B C1/E3FD: 88 DEY C1/E3FE: 84 5B STY $5B C1/E400: 60 RTS ; [ Battle Animation Command $DE: Move Triangle to Attacker Position ] magic_code5e: C1/E401: AE F6 7A LDX $7AF6 C1/E404: BD 7E 6F LDA $6F7E,X ; attacker x position C1/E407: 8D 54 61 STA $6154 ; triangle x position C1/E40A: BD 80 6F LDA $6F80,X ; attacker y position C1/E40D: 8D 55 61 STA $6155 ; triangle y position C1/E410: A4 5B LDY $5B C1/E412: 88 DEY C1/E413: 84 5B STY $5B C1/E415: 60 RTS ; [ Battle Animation Command $DD: Init Triangle ] magic_code5d: C1/E416: 7B TDC C1/E417: A8 TAY C1/E418: A7 5B LDA [$5B] C1/E41A: 8D 54 61 STA $6154 ; triangle x position C1/E41D: C8 INY C1/E41E: B7 5B LDA [$5B],Y C1/E420: 8D 55 61 STA $6155 ; triangle y position C1/E423: C8 INY C1/E424: B7 5B LDA [$5B],Y C1/E426: 8D 56 61 STA $6156 ; triangle diameter C1/E429: C8 INY C1/E42A: B7 5B LDA [$5B],Y C1/E42C: 8D 57 61 STA $6157 ; triangle rotation angle C1/E42F: A4 5B LDY $5B C1/E431: C8 INY C1/E432: C8 INY C1/E433: C8 INY C1/E434: 84 5B STY $5B C1/E436: AE F6 7A LDX $7AF6 C1/E439: 60 RTS ; [ Battle Animation Command $DC: ] magic_code5c: C1/E43A: AD 56 61 LDA $6156 C1/E43D: 85 24 STA $24 C1/E43F: AD 57 61 LDA $6157 C1/E442: 20 99 6B JSR $6B99 C1/E445: 18 CLC C1/E446: 69 80 ADC #$80 C1/E448: 8D 5B 61 STA $615B C1/E44B: AD 57 61 LDA $6157 C1/E44E: 18 CLC C1/E44F: 69 40 ADC #$40 C1/E451: 20 99 6B JSR $6B99 C1/E454: 18 CLC C1/E455: 69 80 ADC #$80 C1/E457: 8D 5C 61 STA $615C C1/E45A: AD 57 61 LDA $6157 C1/E45D: 18 CLC C1/E45E: 69 55 ADC #$55 C1/E460: 20 99 6B JSR $6B99 C1/E463: 18 CLC C1/E464: 69 80 ADC #$80 C1/E466: 8D 5D 61 STA $615D C1/E469: AD 57 61 LDA $6157 C1/E46C: 18 CLC C1/E46D: 69 95 ADC #$95 C1/E46F: 20 99 6B JSR $6B99 C1/E472: 18 CLC C1/E473: 69 80 ADC #$80 C1/E475: 8D 5E 61 STA $615E C1/E478: AD 57 61 LDA $6157 C1/E47B: 18 CLC C1/E47C: 69 AA ADC #$AA C1/E47E: 20 99 6B JSR $6B99 C1/E481: 18 CLC C1/E482: 69 80 ADC #$80 C1/E484: 8D 5F 61 STA $615F C1/E487: AD 57 61 LDA $6157 C1/E48A: 18 CLC C1/E48B: 69 EA ADC #$EA C1/E48D: 20 99 6B JSR $6B99 C1/E490: 18 CLC C1/E491: 69 80 ADC #$80 C1/E493: 8D 60 61 STA $6160 C1/E496: 20 CC 1B JSR $1BCC C1/E499: A4 5B LDY $5B C1/E49B: 88 DEY C1/E49C: 84 5B STY $5B C1/E49E: AE F6 7A LDX $7AF6 C1/E4A1: 60 RTS ; [ Battle Animation Command $F6: ] magic_code76: C1/E4A2: AD 56 61 LDA $6156 C1/E4A5: 85 24 STA $24 C1/E4A7: AD 57 61 LDA $6157 C1/E4AA: 49 FF EOR #$FF C1/E4AC: 85 10 STA $10 C1/E4AE: 20 99 6B JSR $6B99 C1/E4B1: 18 CLC C1/E4B2: 69 80 ADC #$80 C1/E4B4: 8D 5B 61 STA $615B C1/E4B7: A5 10 LDA $10 C1/E4B9: 18 CLC C1/E4BA: 69 40 ADC #$40 C1/E4BC: 20 99 6B JSR $6B99 C1/E4BF: 18 CLC C1/E4C0: 69 80 ADC #$80 C1/E4C2: 8D 5C 61 STA $615C C1/E4C5: A5 10 LDA $10 C1/E4C7: 18 CLC C1/E4C8: 69 50 ADC #$50 C1/E4CA: 20 99 6B JSR $6B99 C1/E4CD: 18 CLC C1/E4CE: 69 80 ADC #$80 C1/E4D0: 8D 5D 61 STA $615D C1/E4D3: A5 10 LDA $10 C1/E4D5: 18 CLC C1/E4D6: 69 90 ADC #$90 C1/E4D8: 20 99 6B JSR $6B99 C1/E4DB: 18 CLC C1/E4DC: 69 80 ADC #$80 C1/E4DE: 8D 5E 61 STA $615E C1/E4E1: A5 10 LDA $10 C1/E4E3: 18 CLC C1/E4E4: 69 90 ADC #$90 C1/E4E6: 20 99 6B JSR $6B99 C1/E4E9: 18 CLC C1/E4EA: 69 80 ADC #$80 C1/E4EC: 8D 5F 61 STA $615F C1/E4EF: A5 10 LDA $10 C1/E4F1: 18 CLC C1/E4F2: 69 4A ADC #$4A C1/E4F4: 20 99 6B JSR $6B99 C1/E4F7: 18 CLC C1/E4F8: 69 80 ADC #$80 C1/E4FA: 8D 60 61 STA $6160 C1/E4FD: 20 CC 1B JSR $1BCC C1/E500: A4 5B LDY $5B C1/E502: 88 DEY C1/E503: 84 5B STY $5B C1/E505: AE F6 7A LDX $7AF6 C1/E508: 60 RTS ; [ Battle Animation Command $DB: Branch if Character Stepped Forward to Attack ] ; b1 = number of bytes to branch forward in script magic_code5b: C1/E509: AE F6 7A LDX $7AF6 C1/E50C: BD 38 6A LDA $6A38,X ; attacker C1/E50F: 30 06 BMI $E517 ; branch if a monster C1/E511: A8 TAY C1/E512: B9 AE 61 LDA $61AE,Y ; C1/E515: F0 10 BEQ $E527 C1/E517: A7 5B LDA [$5B] C1/E519: C2 20 REP #$20 C1/E51B: 85 22 STA $22 C1/E51D: A5 5B LDA $5B C1/E51F: 18 CLC C1/E520: 65 22 ADC $22 C1/E522: 85 5B STA $5B C1/E524: 7B TDC C1/E525: E2 20 SEP #$20 C1/E527: 60 RTS ; [ Battle Animation Command $DA: ] ; w wind/spiraler magic_code5a: C1/E528: AD 9D 5F LDA $5F9D C1/E52B: 85 24 STA $24 C1/E52D: 64 25 STZ $25 C1/E52F: AD 7D 5F LDA $5F7D C1/E532: 20 67 6C JSR $6C67 C1/E535: AE F6 7A LDX $7AF6 C1/E538: C2 20 REP #$20 C1/E53A: A5 28 LDA $28 C1/E53C: 18 CLC C1/E53D: 6D 9E 5F ADC $5F9E C1/E540: 9D CE 74 STA $74CE,X C1/E543: 7B TDC C1/E544: E2 20 SEP #$20 C1/E546: AD 8D 5F LDA $5F8D C1/E549: 85 24 STA $24 C1/E54B: AD 6D 5F LDA $5F6D C1/E54E: 20 67 6C JSR $6C67 C1/E551: AE F6 7A LDX $7AF6 C1/E554: C2 20 REP #$20 C1/E556: A5 28 LDA $28 C1/E558: 18 CLC C1/E559: 6D 8E 5F ADC $5F8E C1/E55C: 9D D0 74 STA $74D0,X C1/E55F: A7 5B LDA [$5B] C1/E561: 85 22 STA $22 C1/E563: E6 5B INC $5B C1/E565: 7B TDC C1/E566: E2 20 SEP #$20 C1/E568: AD 7D 5F LDA $5F7D C1/E56B: 18 CLC C1/E56C: 65 22 ADC $22 C1/E56E: 8D 7D 5F STA $5F7D C1/E571: AD 6D 5F LDA $5F6D C1/E574: 18 CLC C1/E575: 65 23 ADC $23 C1/E577: 8D 6D 5F STA $5F6D C1/E57A: AD 9D 5F LDA $5F9D C1/E57D: 18 CLC C1/E57E: 69 01 ADC #$01 C1/E580: C9 40 CMP #$40 C1/E582: 90 02 BCC $E586 C1/E584: A9 40 LDA #$40 C1/E586: 8D 9D 5F STA $5F9D C1/E589: 4A LSR C1/E58A: 8D 8D 5F STA $5F8D C1/E58D: AD A1 5F LDA $5FA1 C1/E590: EE A1 5F INC $5FA1 C1/E593: EE A1 5F INC $5FA1 C1/E596: 0A ASL C1/E597: 0A ASL C1/E598: A8 TAY C1/E599: 7B TDC C1/E59A: AA TAX C1/E59B: E2 10 SEP #$10 C1/E59D: C2 20 REP #$20 C1/E59F: B9 F5 44 LDA $44F5,Y C1/E5A2: 9D B0 63 STA $63B0,X C1/E5A5: C8 INY C1/E5A6: C8 INY C1/E5A7: E8 INX C1/E5A8: E8 INX C1/E5A9: D0 F4 BNE $E59F C1/E5AB: 7B TDC C1/E5AC: E2 20 SEP #$20 C1/E5AE: C2 10 REP #$10 C1/E5B0: AE F6 7A LDX $7AF6 C1/E5B3: 60 RTS ; [ ] clr_line_buf2: C1/E5B4: 7B TDC C1/E5B5: AA TAX C1/E5B6: C2 20 REP #$20 C1/E5B8: 9D B0 63 STA $63B0,X C1/E5BB: E8 INX C1/E5BC: E8 INX C1/E5BD: E0 00 01 CPX #$0100 C1/E5C0: D0 F6 BNE $E5B8 C1/E5C2: E2 20 SEP #$20 C1/E5C4: 60 RTS ; [ Battle Animation Command $EE: ] magic_code6e: C1/E5C5: AE F6 7A LDX $7AF6 C1/E5C8: BD 39 6A LDA $6A39,X C1/E5CB: 30 11 BMI $E5DE C1/E5CD: 0A ASL C1/E5CE: 0A ASL C1/E5CF: 0A ASL C1/E5D0: 0A ASL C1/E5D1: 0A ASL C1/E5D2: A8 TAY C1/E5D3: B9 BD 61 LDA $61BD,Y C1/E5D6: 29 CF AND #$CF C1/E5D8: 07 5B ORA [$5B] C1/E5DA: 99 BD 61 STA $61BD,Y C1/E5DD: 60 RTS C1/E5DE: 29 7F AND #$7F C1/E5E0: 38 SEC C1/E5E1: E9 04 SBC #$04 C1/E5E3: 0A ASL C1/E5E4: A8 TAY C1/E5E5: B9 DC 80 LDA $80DC,Y C1/E5E8: 29 CF AND #$CF C1/E5EA: 07 5B ORA [$5B] C1/E5EC: 99 DC 80 STA $80DC,Y C1/E5EF: 60 RTS ; [ Battle Animation Command $D9: Set Attacker Sprite Tile Priority ] ; b1: --oo---- ; o = sprite tile priority magic_code59: C1/E5F0: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E5F3: A7 5B LDA [$5B] C1/E5F5: 99 BD 61 STA $61BD,Y ; sprite tile priority C1/E5F8: 60 RTS ; [ Battle Animation Command $D8: ] magic_code58: C1/E5F9: AE F6 7A LDX $7AF6 C1/E5FC: BD 38 6A LDA $6A38,X ; attacker C1/E5FF: A8 TAY C1/E600: 64 10 STZ $10 C1/E602: B9 10 7B LDA $7B10,Y C1/E605: F0 02 BEQ $E609 ; branch if character is not facing right C1/E607: C6 10 DEC $10 C1/E609: BD 3B 6A LDA $6A3B,X ; thread x position (high byte) C1/E60C: 85 24 STA $24 C1/E60E: 64 25 STZ $25 C1/E610: BD 3A 6A LDA $6A3A,X ; thread x position C1/E613: 18 CLC C1/E614: 69 40 ADC #$40 C1/E616: 20 67 6C JSR $6C67 ; +$28 = +$24 * sin (A) C1/E619: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E61C: C2 20 REP #$20 C1/E61E: BD CE 74 LDA $74CE,X ; thread x offset C1/E621: 18 CLC C1/E622: 65 28 ADC $28 C1/E624: 99 C5 61 STA $61C5,Y ; character x offset C1/E627: 46 24 LSR $24 C1/E629: 7B TDC C1/E62A: E2 20 SEP #$20 C1/E62C: BD 3A 6A LDA $6A3A,X ; thread x position C1/E62F: 20 67 6C JSR $6C67 C1/E632: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E635: C2 20 REP #$20 C1/E637: BD D0 74 LDA $74D0,X C1/E63A: 18 CLC C1/E63B: 65 28 ADC $28 C1/E63D: 99 C7 61 STA $61C7,Y C1/E640: A0 02 00 LDY #$0002 C1/E643: B7 5B LDA [$5B],Y C1/E645: 29 FF 00 AND #$00FF C1/E648: 85 24 STA $24 C1/E64A: A7 5B LDA [$5B] C1/E64C: 85 22 STA $22 C1/E64E: E6 5B INC $5B C1/E650: E6 5B INC $5B C1/E652: 7B TDC C1/E653: E2 20 SEP #$20 C1/E655: BD 3B 6A LDA $6A3B,X C1/E658: 18 CLC C1/E659: 65 22 ADC $22 C1/E65B: 10 01 BPL $E65E C1/E65D: 7B TDC C1/E65E: DD 3C 6A CMP $6A3C,X C1/E661: 90 0F BCC $E672 C1/E663: C2 20 REP #$20 C1/E665: A5 5B LDA $5B C1/E667: 18 CLC C1/E668: 65 24 ADC $24 C1/E66A: 85 5B STA $5B C1/E66C: 7B TDC C1/E66D: E2 20 SEP #$20 C1/E66F: BD 3C 6A LDA $6A3C,X C1/E672: 9D 3B 6A STA $6A3B,X C1/E675: A5 10 LDA $10 C1/E677: D0 0A BNE $E683 C1/E679: BD 3A 6A LDA $6A3A,X C1/E67C: 38 SEC C1/E67D: E5 23 SBC $23 C1/E67F: 9D 3A 6A STA $6A3A,X C1/E682: 60 RTS C1/E683: BD 3A 6A LDA $6A3A,X C1/E686: 18 CLC C1/E687: 65 23 ADC $23 C1/E689: 9D 3A 6A STA $6A3A,X C1/E68C: 60 RTS ; [ Battle Animation Command $D7: Update Fire Dance Sprites ] ; b1 = movement magnitude magic_code57: C1/E68D: A7 5B LDA [$5B] C1/E68F: 85 24 STA $24 C1/E691: AE F6 7A LDX $7AF6 C1/E694: BD D8 74 LDA $74D8,X ; vector angle C1/E697: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/E69A: C2 20 REP #$20 C1/E69C: AE F6 7A LDX $7AF6 C1/E69F: A5 22 LDA $22 C1/E6A1: 9D CE 74 STA $74CE,X ; thread x offset C1/E6A4: 7B TDC C1/E6A5: E2 20 SEP #$20 C1/E6A7: BD D9 74 LDA $74D9,X ; current vector position C1/E6AA: 20 68 D8 JSR $D868 ; +$22 = $24 * sin (A) C1/E6AD: C2 20 REP #$20 C1/E6AF: AE F6 7A LDX $7AF6 C1/E6B2: A5 22 LDA $22 C1/E6B4: 9D D0 74 STA $74D0,X ; thread y offset C1/E6B7: 7B TDC C1/E6B8: E2 20 SEP #$20 C1/E6BA: BD D8 74 LDA $74D8,X ; add 4 to vector angle C1/E6BD: 18 CLC C1/E6BE: 69 04 ADC #$04 C1/E6C0: 9D D8 74 STA $74D8,X C1/E6C3: BD D9 74 LDA $74D9,X ; add 6 to vector position C1/E6C6: 18 CLC C1/E6C7: 69 06 ADC #$06 C1/E6C9: 9D D9 74 STA $74D9,X C1/E6CC: 60 RTS ; [ Battle Animation Command $D6: Scroll Background ] ; b1: horizontal scroll ; b2: vertical scroll magic_code56: C1/E6CD: AE F6 7A LDX $7AF6 C1/E6D0: 7B TDC C1/E6D1: A8 TAY C1/E6D2: A7 5B LDA [$5B] C1/E6D4: 85 10 STA $10 C1/E6D6: C8 INY C1/E6D7: B7 5B LDA [$5B],Y C1/E6D9: 85 12 STA $12 C1/E6DB: BD 87 6F LDA $6F87,X C1/E6DE: F0 07 BEQ $E6E7 ; branch if not mirrored C1/E6E0: A5 10 LDA $10 C1/E6E2: 49 FF EOR #$FF C1/E6E4: 1A INC C1/E6E5: 85 10 STA $10 C1/E6E7: C2 20 REP #$20 C1/E6E9: 7B TDC C1/E6EA: A8 TAY C1/E6EB: A5 10 LDA $10 C1/E6ED: 99 30 63 STA $6330,Y ; bg2 scroll hdma table buffer (horizontal) C1/E6F0: A5 12 LDA $12 C1/E6F2: 99 32 63 STA $6332,Y ; bg2 scroll hdma table buffer (vertical) C1/E6F5: C8 INY C1/E6F6: C8 INY C1/E6F7: C8 INY C1/E6F8: C8 INY C1/E6F9: C0 80 00 CPY #$0080 C1/E6FC: D0 ED BNE $E6EB C1/E6FE: E6 5B INC $5B C1/E700: 7B TDC C1/E701: E2 20 SEP #$20 C1/E703: AE F6 7A LDX $7AF6 C1/E706: 60 RTS ; [ Battle Animation Command $D5: Flip Target Monster ] ; b1 = ------vh ; v: flip vertical ; h: flip horizontal magic_code55: C1/E707: AE F6 7A LDX $7AF6 C1/E70A: BD 39 6A LDA $6A39,X C1/E70D: 10 12 BPL $E721 C1/E70F: 29 0F AND #$0F C1/E711: 38 SEC C1/E712: E9 04 SBC #$04 C1/E714: 0A ASL C1/E715: A8 TAY C1/E716: B9 F3 80 LDA $80F3,Y C1/E719: 47 5B EOR [$5B] C1/E71B: 59 7E 61 EOR $617E,Y C1/E71E: 99 F3 80 STA $80F3,Y C1/E721: 60 RTS ; [ Battle Animation Command $D4: ] magic_code54: C1/E722: A0 01 00 LDY #$0001 C1/E725: A7 5B LDA [$5B] C1/E727: 85 10 STA $10 C1/E729: B7 5B LDA [$5B],Y C1/E72B: 85 11 STA $11 C1/E72D: C8 INY C1/E72E: B7 5B LDA [$5B],Y C1/E730: 20 3C C2 JSR $C23C ; set color add/sub data C1/E733: AE F6 7A LDX $7AF6 C1/E736: A4 5B LDY $5B C1/E738: C8 INY C1/E739: C8 INY C1/E73A: 84 5B STY $5B C1/E73C: 60 RTS ; [ Battle Animation Command $D1: Validate/Invalidate Character/Monster Order Priority ] ; b1: 0 = validate, 1 = invalidate magic_code51: C1/E73D: A7 5B LDA [$5B] C1/E73F: 8D D2 62 STA $62D2 C1/E742: AE F6 7A LDX $7AF6 C1/E745: 60 RTS ; [ Battle Animation Command $D0: Set Sprite Tile Priority for All Characters/Monsters ] ; b1: --oo---- ; o = tile priority magic_code50: C1/E746: A7 5B LDA [$5B] C1/E748: 8D BD 61 STA $61BD C1/E74B: 8D DD 61 STA $61DD C1/E74E: 8D FD 61 STA $61FD C1/E751: 8D 1D 62 STA $621D C1/E754: 7B TDC C1/E755: A8 TAY C1/E756: A7 5B LDA [$5B] C1/E758: 09 01 ORA #$01 C1/E75A: 99 DC 80 STA $80DC,Y C1/E75D: C8 INY C1/E75E: C8 INY C1/E75F: C0 0C 00 CPY #$000C C1/E762: D0 F6 BNE $E75A C1/E764: AE F6 7A LDX $7AF6 C1/E767: 60 RTS ; [ ] clr_bunsin_buf: C1/E768: 7B TDC C1/E769: A8 TAY C1/E76A: C2 20 REP #$20 C1/E76C: 99 D6 62 STA $62D6,Y C1/E76F: C8 INY C1/E770: C8 INY C1/E771: C0 40 00 CPY #$0040 C1/E774: D0 F6 BNE $E76C C1/E776: E2 20 SEP #$20 C1/E778: 60 RTS ; [ Battle Animation Command $CB: Enable/Disable Echo Sprites ] ; b1 = eddddddd ; e: 1 = enable, 0 = disable ; d: frame delay between echo sprites magic_code4b: C1/E779: AE F6 7A LDX $7AF6 C1/E77C: BD 38 6A LDA $6A38,X ; attacker C1/E77F: 30 16 BMI $E797 ; return if a monster C1/E781: 8D D3 62 STA $62D3 ; set echo sprite character C1/E784: A7 5B LDA [$5B] C1/E786: 29 7F AND #$7F C1/E788: 8D D5 62 STA $62D5 ; echo sprite frame delay C1/E78B: A7 5B LDA [$5B] C1/E78D: 29 80 AND #$80 C1/E78F: 8D D4 62 STA $62D4 C1/E792: D0 03 BNE $E797 C1/E794: 20 68 E7 JSR $E768 C1/E797: 60 RTS ; [ Battle Animation Command $CA: ] magic_code4a: C1/E798: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E79B: A7 5B LDA [$5B] C1/E79D: 99 D0 61 STA $61D0,Y ; C1/E7A0: 60 RTS ; [ Get Pointer to Attacker Animation Thread Data ] get_obj_y_poi_local: C1/E7A1: AE F6 7A LDX $7AF6 C1/E7A4: BD 38 6A LDA $6A38,X ; attacker C1/E7A7: 0A ASL C1/E7A8: 0A ASL C1/E7A9: 0A ASL C1/E7AA: 0A ASL C1/E7AB: 0A ASL C1/E7AC: A8 TAY C1/E7AD: 8C F8 7A STY $7AF8 C1/E7B0: 60 RTS ; [ Battle Animation Command $C8: Set Secondary Attacker Action ] ; b1: action index magic_code48: C1/E7B1: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E7B4: A7 5B LDA [$5B] C1/E7B6: 99 C0 61 STA $61C0,Y ; character secondary graphic C1/E7B9: 60 RTS ; [ ] get_margin_size: C1/E7BA: A5 85 LDA $85 ; angle C1/E7BC: 38 SEC C1/E7BD: FD DB 74 SBC $74DB,X ; current vector angle C1/E7C0: 30 0A BMI $E7CC C1/E7C2: CD AF 60 CMP $60AF C1/E7C5: 90 0A BCC $E7D1 C1/E7C7: AD AF 60 LDA $60AF ; C1/E7CA: 80 05 BRA $E7D1 C1/E7CC: 49 FF EOR #$FF C1/E7CE: 1A INC C1/E7CF: 80 F1 BRA $E7C2 C1/E7D1: 85 22 STA $22 C1/E7D3: AD AF 60 LDA $60AF C1/E7D6: C9 10 CMP #$10 C1/E7D8: B0 0D BCS $E7E7 C1/E7DA: EE B0 60 INC $60B0 C1/E7DD: AD B0 60 LDA $60B0 C1/E7E0: 25 24 AND $24 C1/E7E2: D0 03 BNE $E7E7 C1/E7E4: EE AF 60 INC $60AF C1/E7E7: 60 RTS ; [ Calculate Vector from Attacking Character to Target ] get_init_vect: C1/E7E8: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E7EB: C2 20 REP #$20 C1/E7ED: B9 B7 61 LDA $61B7,Y ; character x position C1/E7F0: 18 CLC C1/E7F1: 79 C5 61 ADC $61C5,Y ; character x offset C1/E7F4: 18 CLC C1/E7F5: 79 D4 61 ADC $61D4,Y ; character x offset C1/E7F8: 85 22 STA $22 C1/E7FA: B9 B9 61 LDA $61B9,Y ; character y position C1/E7FD: 18 CLC C1/E7FE: 79 C7 61 ADC $61C7,Y ; character y offset C1/E801: 85 24 STA $24 C1/E803: 7B TDC C1/E804: E2 20 SEP #$20 C1/E806: A5 23 LDA $23 C1/E808: 29 01 AND #$01 C1/E80A: F0 04 BEQ $E810 C1/E80C: A9 FF LDA #$FF C1/E80E: 80 02 BRA $E812 C1/E810: A5 22 LDA $22 C1/E812: 85 7D STA $7D C1/E814: A5 25 LDA $25 C1/E816: 29 01 AND #$01 C1/E818: F0 04 BEQ $E81E C1/E81A: A9 FF LDA #$FF C1/E81C: 80 02 BRA $E820 C1/E81E: A5 24 LDA $24 C1/E820: 85 7E STA $7E C1/E822: BD 82 6F LDA $6F82,X ; target x position C1/E825: 85 7F STA $7F C1/E827: BD 84 6F LDA $6F84,X ; target y position C1/E82A: 85 80 STA $80 C1/E82C: 20 91 6C JSR $6C91 ; calculate hypotenuse and angle C1/E82F: 60 RTS ; [ Battle Animation Command $C6: ] magic_code46: C1/E830: 20 E8 E7 JSR $E7E8 ; calculate vector from attacking character to target C1/E833: AE F6 7A LDX $7AF6 C1/E836: A9 03 LDA #$03 C1/E838: 85 24 STA $24 C1/E83A: 20 BA E7 JSR $E7BA ; C1/E83D: A5 85 LDA $85 ; angle C1/E83F: 38 SEC C1/E840: FD DB 74 SBC $74DB,X ; current vector angle C1/E843: 30 0B BMI $E850 C1/E845: BD DB 74 LDA $74DB,X C1/E848: 18 CLC C1/E849: 65 22 ADC $22 C1/E84B: 9D DB 74 STA $74DB,X C1/E84E: 80 09 BRA $E859 C1/E850: BD DB 74 LDA $74DB,X C1/E853: 38 SEC C1/E854: E5 22 SBC $22 C1/E856: 9D DB 74 STA $74DB,X C1/E859: A7 5B LDA [$5B] C1/E85B: 18 CLC C1/E85C: 69 04 ADC #$04 C1/E85E: 85 24 STA $24 C1/E860: AE F6 7A LDX $7AF6 C1/E863: A5 86 LDA $86 C1/E865: C5 24 CMP $24 C1/E867: B0 06 BCS $E86F C1/E869: A4 5B LDY $5B C1/E86B: C8 INY C1/E86C: 84 5B STY $5B C1/E86E: 60 RTS C1/E86F: A7 5B LDA [$5B] C1/E871: A8 TAY C1/E872: 84 24 STY $24 C1/E874: BD DB 74 LDA $74DB,X C1/E877: 18 CLC C1/E878: 69 40 ADC #$40 C1/E87A: 20 67 6C JSR $6C67 C1/E87D: AE F8 7A LDX $7AF8 C1/E880: C2 20 REP #$20 C1/E882: BD C5 61 LDA $61C5,X C1/E885: 18 CLC C1/E886: 65 28 ADC $28 C1/E888: 9D C5 61 STA $61C5,X C1/E88B: 18 CLC C1/E88C: 7D B7 61 ADC $61B7,X C1/E88F: 18 CLC C1/E890: 7D D4 61 ADC $61D4,X C1/E893: 29 FF 01 AND #$01FF C1/E896: AA TAX C1/E897: 7B TDC C1/E898: E2 20 SEP #$20 C1/E89A: E0 10 00 CPX #$0010 C1/E89D: 90 05 BCC $E8A4 C1/E89F: E0 F0 00 CPX #$00F0 C1/E8A2: 90 05 BCC $E8A9 C1/E8A4: A9 FF LDA #$FF C1/E8A6: 8D AF 60 STA $60AF C1/E8A9: AE F6 7A LDX $7AF6 C1/E8AC: A7 5B LDA [$5B] C1/E8AE: A8 TAY C1/E8AF: 84 24 STY $24 C1/E8B1: BD DB 74 LDA $74DB,X C1/E8B4: 20 67 6C JSR $6C67 C1/E8B7: AE F8 7A LDX $7AF8 C1/E8BA: C2 20 REP #$20 C1/E8BC: BD C7 61 LDA $61C7,X C1/E8BF: 18 CLC C1/E8C0: 65 28 ADC $28 C1/E8C2: 9D C7 61 STA $61C7,X C1/E8C5: 18 CLC C1/E8C6: 7D B9 61 ADC $61B9,X C1/E8C9: 29 FF 01 AND #$01FF C1/E8CC: 85 28 STA $28 C1/E8CE: AA TAX C1/E8CF: 7B TDC C1/E8D0: E2 20 SEP #$20 C1/E8D2: E0 10 00 CPX #$0010 C1/E8D5: 90 05 BCC $E8DC C1/E8D7: E0 F0 00 CPX #$00F0 C1/E8DA: 90 05 BCC $E8E1 C1/E8DC: A9 FF LDA #$FF C1/E8DE: 8D AF 60 STA $60AF C1/E8E1: C2 20 REP #$20 C1/E8E3: A0 01 00 LDY #$0001 C1/E8E6: B7 5B LDA [$5B],Y C1/E8E8: 29 FF 00 AND #$00FF C1/E8EB: 85 22 STA $22 C1/E8ED: A5 5B LDA $5B C1/E8EF: 38 SEC C1/E8F0: E5 22 SBC $22 C1/E8F2: 85 5B STA $5B C1/E8F4: 7B TDC C1/E8F5: E2 20 SEP #$20 C1/E8F7: AE F6 7A LDX $7AF6 C1/E8FA: 60 RTS ; [ Battle Animation Command $C5: Jump Based on SwdTech Hit ] magic_code45: C1/E8FB: AE F6 7A LDX $7AF6 C1/E8FE: AD AE 60 LDA $60AE ; swdtech hit index C1/E901: C2 20 REP #$20 C1/E903: 0A ASL C1/E904: 85 22 STA $22 C1/E906: A5 5B LDA $5B C1/E908: 18 CLC C1/E909: 65 22 ADC $22 C1/E90B: 85 5B STA $5B C1/E90D: A7 5B LDA [$5B] C1/E90F: 3A DEC C1/E910: 85 5B STA $5B C1/E912: 7B TDC C1/E913: E2 20 SEP #$20 C1/E915: EE AE 60 INC $60AE ; increment swdtech hit index C1/E918: 60 RTS ; [ Calculate Jump Height ] set_play_vector: C1/E919: BD D9 74 LDA $74D9,X ; +$24 = current vector position C1/E91C: 85 24 STA $24 C1/E91E: BD DA 74 LDA $74DA,X C1/E921: 85 25 STA $25 C1/E923: BD DB 74 LDA $74DB,X ; vector angle C1/E926: 18 CLC C1/E927: 69 40 ADC #$40 C1/E929: 20 67 6C JSR $6C67 C1/E92C: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/E92F: C2 20 REP #$20 C1/E931: A5 28 LDA $28 C1/E933: 99 C5 61 STA $61C5,Y C1/E936: 9D CE 74 STA $74CE,X C1/E939: 7B TDC C1/E93A: E2 20 SEP #$20 C1/E93C: BD DB 74 LDA $74DB,X C1/E93F: 20 67 6C JSR $6C67 C1/E942: AE F6 7A LDX $7AF6 C1/E945: A9 FF LDA #$FF C1/E947: 8F 04 42 00 STA $004204 C1/E94B: 8F 05 42 00 STA $004205 C1/E94F: BD DD 74 LDA $74DD,X C1/E952: F0 04 BEQ $E958 C1/E954: A9 FF LDA #$FF C1/E956: 80 03 BRA $E95B C1/E958: BD DC 74 LDA $74DC,X C1/E95B: 8F 06 42 00 STA $004206 C1/E95F: AC F8 7A LDY $7AF8 C1/E962: BD D9 74 LDA $74D9,X C1/E965: C2 20 REP #$20 C1/E967: 85 22 STA $22 C1/E969: A5 28 LDA $28 C1/E96B: 99 C7 61 STA $61C7,Y C1/E96E: 9D D0 74 STA $74D0,X C1/E971: AF 14 42 00 LDA $004214 C1/E975: 85 24 STA $24 C1/E977: 20 F4 18 JSR $18F4 C1/E97A: 7B TDC C1/E97B: E2 20 SEP #$20 C1/E97D: A2 20 00 LDX #$0020 C1/E980: 86 24 STX $24 C1/E982: A5 27 LDA $27 C1/E984: 4A LSR C1/E985: 18 CLC C1/E986: 69 80 ADC #$80 C1/E988: 20 67 6C JSR $6C67 C1/E98B: AC F8 7A LDY $7AF8 C1/E98E: AE F6 7A LDX $7AF6 C1/E991: C2 20 REP #$20 C1/E993: A5 28 LDA $28 C1/E995: 99 D2 61 STA $61D2,Y C1/E998: 7B TDC C1/E999: E2 20 SEP #$20 C1/E99B: AE F6 7A LDX $7AF6 C1/E99E: 60 RTS ; [ Battle Animation Command $C4: Move BG1/BG3 Thread to This Thread's Position ] ; b1 = ab------ ; a: affect bg1 ; b: affect bg3 magic_code44: C1/E99F: AE F6 7A LDX $7AF6 C1/E9A2: A7 5B LDA [$5B] C1/E9A4: 10 1F BPL $E9C5 ; branch if not affecting bg1 C1/E9A6: C2 20 REP #$20 C1/E9A8: BD 3A 6A LDA $6A3A,X ; thread x position C1/E9AB: 18 CLC C1/E9AC: 7D CE 74 ADC $74CE,X ; add thread x offset C1/E9AF: 8D 1D 7B STA $7B1D ; set bg1 animation x position C1/E9B2: 8D 16 7B STA $7B16 ; set bg1 animation x offset C1/E9B5: BD 3C 6A LDA $6A3C,X ; thread y position C1/E9B8: 18 CLC C1/E9B9: 7D D0 74 ADC $74D0,X ; add thread y offset C1/E9BC: 8D 1F 7B STA $7B1F ; set bg1 animation y position C1/E9BF: 8D 18 7B STA $7B18 ; set bg1 animation y offset C1/E9C2: 7B TDC C1/E9C3: E2 20 SEP #$20 C1/E9C5: A7 5B LDA [$5B] C1/E9C7: 29 40 AND #$40 C1/E9C9: F0 1F BEQ $E9EA ; return if not affecting bg3 C1/E9CB: C2 20 REP #$20 C1/E9CD: BD 3A 6A LDA $6A3A,X C1/E9D0: 18 CLC C1/E9D1: 7D CE 74 ADC $74CE,X C1/E9D4: 8D 29 7B STA $7B29 C1/E9D7: 8D 22 7B STA $7B22 C1/E9DA: BD 3C 6A LDA $6A3C,X C1/E9DD: 18 CLC C1/E9DE: 7D D0 74 ADC $74D0,X C1/E9E1: 8D 2B 7B STA $7B2B C1/E9E4: 8D 24 7B STA $7B24 C1/E9E7: 7B TDC C1/E9E8: E2 20 SEP #$20 C1/E9EA: 60 RTS ; [ Battle Animation Command $C2: Unpause Animation ] ; b1 = 13s----- ; 1: unpause bg1 animation ; 3: unpause bg3 animation ; s: unpause sprite animation magic_code42: C1/E9EB: AE F6 7A LDX $7AF6 C1/E9EE: A7 5B LDA [$5B] C1/E9F0: 10 03 BPL $E9F5 C1/E9F2: 9C AC 60 STZ $60AC ; unpause bg1 animation threads C1/E9F5: 29 40 AND #$40 C1/E9F7: F0 03 BEQ $E9FC C1/E9F9: 9C AD 60 STZ $60AD ; unpause bg3 animation threads C1/E9FC: A7 5B LDA [$5B] C1/E9FE: 29 20 AND #$20 C1/EA00: F0 02 BEQ $EA04 C1/EA02: 64 99 STZ $99 ; unpause sprite animation threads C1/EA04: 60 RTS ; [ Battle Animation Command $C1: ] magic_code41: C1/EA05: AE F6 7A LDX $7AF6 C1/EA08: A7 5B LDA [$5B] C1/EA0A: 9D D8 74 STA $74D8,X ; vector movement speed C1/EA0D: 20 09 FA JSR $FA09 ; C1/EA10: C2 20 REP #$20 C1/EA12: BD D8 74 LDA $74D8,X C1/EA15: 29 FF 00 AND #$00FF C1/EA18: 85 22 STA $22 C1/EA1A: BD D9 74 LDA $74D9,X C1/EA1D: 18 CLC C1/EA1E: 65 22 ADC $22 C1/EA20: 9D D9 74 STA $74D9,X C1/EA23: C9 F0 00 CMP #$00F0 C1/EA26: B0 35 BCS $EA5D C1/EA28: DD DC 74 CMP $74DC,X C1/EA2B: 90 34 BCC $EA61 C1/EA2D: A9 F0 00 LDA #$00F0 C1/EA30: 9D DC 74 STA $74DC,X C1/EA33: 9E D9 74 STZ $74D9,X C1/EA36: BD 3A 6A LDA $6A3A,X C1/EA39: 18 CLC C1/EA3A: 7D CE 74 ADC $74CE,X C1/EA3D: 9D 3A 6A STA $6A3A,X C1/EA40: 9E CE 74 STZ $74CE,X C1/EA43: BD 3C 6A LDA $6A3C,X C1/EA46: 18 CLC C1/EA47: 7D D0 74 ADC $74D0,X C1/EA4A: 9D 3C 6A STA $6A3C,X C1/EA4D: 9E D0 74 STZ $74D0,X C1/EA50: E2 20 SEP #$20 C1/EA52: BD DB 74 LDA $74DB,X C1/EA55: 18 CLC C1/EA56: 69 18 ADC #$18 C1/EA58: 9D DB 74 STA $74DB,X C1/EA5B: C2 20 REP #$20 C1/EA5D: E6 5B INC $5B C1/EA5F: 80 11 BRA $EA72 C1/EA61: A0 01 00 LDY #$0001 C1/EA64: B7 5B LDA [$5B],Y ; branch backwards C1/EA66: 29 FF 00 AND #$00FF C1/EA69: 85 22 STA $22 C1/EA6B: A5 5B LDA $5B C1/EA6D: 38 SEC C1/EA6E: E5 22 SBC $22 C1/EA70: 85 5B STA $5B C1/EA72: 7B TDC C1/EA73: E2 20 SEP #$20 C1/EA75: 60 RTS ; [ Battle Animation Command $C0: Return from Subroutine ] magic_code40: C1/EA76: AE F6 7A LDX $7AF6 C1/EA79: C2 20 REP #$20 C1/EA7B: BD EC 64 LDA $64EC,X C1/EA7E: 1A INC C1/EA7F: 85 5B STA $5B C1/EA81: 7B TDC C1/EA82: E2 20 SEP #$20 C1/EA84: 60 RTS ; [ Battle Animation Command $BF: Jump to Subroutine ] ; +b1 = subroutine address magic_code3f: C1/EA85: AE F6 7A LDX $7AF6 C1/EA88: C2 20 REP #$20 C1/EA8A: A5 5B LDA $5B C1/EA8C: 9D EC 64 STA $64EC,X C1/EA8F: A7 5B LDA [$5B] C1/EA91: 3A DEC C1/EA92: 85 5B STA $5B C1/EA94: 7B TDC C1/EA95: E2 20 SEP #$20 C1/EA97: 60 RTS ; [ Battle Animation Command $BE: Set Screen Mosaic ] ; b1 = mmmm4321 ($2106) ; m: mosaic size ; 4321: affect bg1/2/3/4 magic_code3e: C1/EA98: A7 5B LDA [$5B] C1/EA9A: 8D 70 89 STA $8970 ; screen mosaic register for battlefield region -> $2106 C1/EA9D: AE F6 7A LDX $7AF6 C1/EAA0: 60 RTS ; [ Battle Animation Command $BD: Hide/Show BG1/BG3 Animation Thread Graphics ] ; b1 = abcd---- ; a: affect bg1 ; b: affect bg3 ; c: bg1 (0 = show, 1 = hide) ; d: bg3 (0 = show, 1 = hide) magic_code3d: C1/EAA1: A7 5B LDA [$5B] C1/EAA3: 10 05 BPL $EAAA ; branch if not affecting bg1 C1/EAA5: 29 20 AND #$20 C1/EAA7: 8D A7 60 STA $60A7 ; hide/show bg1 graphics C1/EAAA: A7 5B LDA [$5B] C1/EAAC: 29 40 AND #$40 C1/EAAE: F0 07 BEQ $EAB7 ; branch if not affecting bg3 C1/EAB0: A7 5B LDA [$5B] C1/EAB2: 29 10 AND #$10 C1/EAB4: 8D A8 60 STA $60A8 ; hide/show bg3 graphics C1/EAB7: AE F6 7A LDX $7AF6 C1/EABA: 60 RTS ; [ ] get_col_offset_main: C1/EABB: 86 1A STX $1A C1/EABD: 7B TDC C1/EABE: A8 TAY C1/EABF: A7 5B LDA [$5B] C1/EAC1: 0A ASL C1/EAC2: B0 06 BCS $EACA C1/EAC4: C8 INY C1/EAC5: C0 03 00 CPY #$0003 C1/EAC8: D0 F7 BNE $EAC1 C1/EACA: B1 1A LDA ($1A),Y C1/EACC: 29 1F AND #$1F C1/EACE: 85 10 STA $10 C1/EAD0: A7 5B LDA [$5B] C1/EAD2: 29 10 AND #$10 C1/EAD4: F0 15 BEQ $EAEB C1/EAD6: A7 5B LDA [$5B] C1/EAD8: 29 0F AND #$0F C1/EADA: 85 22 STA $22 C1/EADC: A5 10 LDA $10 C1/EADE: 38 SEC C1/EADF: E5 22 SBC $22 C1/EAE1: 85 10 STA $10 C1/EAE3: 29 E0 AND #$E0 C1/EAE5: F0 15 BEQ $EAFC C1/EAE7: 64 10 STZ $10 C1/EAE9: 80 11 BRA $EAFC C1/EAEB: A7 5B LDA [$5B] C1/EAED: 29 0F AND #$0F C1/EAEF: 18 CLC C1/EAF0: 65 10 ADC $10 C1/EAF2: 85 10 STA $10 C1/EAF4: 29 E0 AND #$E0 C1/EAF6: F0 04 BEQ $EAFC C1/EAF8: A9 1F LDA #$1F C1/EAFA: 85 10 STA $10 C1/EAFC: A7 5B LDA [$5B] C1/EAFE: 29 E0 AND #$E0 C1/EB00: 85 12 STA $12 C1/EB02: A7 5B LDA [$5B] C1/EB04: 30 04 BMI $EB0A C1/EB06: B2 1A LDA ($1A) C1/EB08: 80 04 BRA $EB0E C1/EB0A: A5 10 LDA $10 C1/EB0C: 92 1A STA ($1A) C1/EB0E: 85 14 STA $14 C1/EB10: A0 01 00 LDY #$0001 C1/EB13: A7 5B LDA [$5B] C1/EB15: 29 40 AND #$40 C1/EB17: D0 04 BNE $EB1D C1/EB19: B1 1A LDA ($1A),Y C1/EB1B: 80 04 BRA $EB21 C1/EB1D: A5 10 LDA $10 C1/EB1F: 91 1A STA ($1A),Y C1/EB21: 85 16 STA $16 C1/EB23: C8 INY C1/EB24: A7 5B LDA [$5B] C1/EB26: 29 20 AND #$20 C1/EB28: D0 04 BNE $EB2E C1/EB2A: B1 1A LDA ($1A),Y C1/EB2C: 80 04 BRA $EB32 C1/EB2E: A5 10 LDA $10 C1/EB30: 91 1A STA ($1A),Y C1/EB32: 85 18 STA $18 C1/EB34: 60 RTS ; [ ] color_up: C1/EB35: 64 15 STZ $15 C1/EB37: 64 13 STZ $13 C1/EB39: C2 20 REP #$20 C1/EB3B: A6 10 LDX $10 C1/EB3D: 20 6E FC JSR $FC6E C1/EB40: BD 00 7C LDA $7C00,X C1/EB43: 20 00 FD JSR $FD00 C1/EB46: 9D 00 7E STA $7E00,X C1/EB49: E8 INX C1/EB4A: E8 INX C1/EB4B: C6 12 DEC $12 C1/EB4D: D0 F1 BNE $EB40 C1/EB4F: 7B TDC C1/EB50: E2 20 SEP #$20 C1/EB52: 60 RTS ; [ ] color_down: C1/EB53: 64 15 STZ $15 C1/EB55: 64 13 STZ $13 C1/EB57: C2 20 REP #$20 C1/EB59: A6 10 LDX $10 C1/EB5B: 20 6E FC JSR $FC6E C1/EB5E: BD 00 7C LDA $7C00,X C1/EB61: 20 99 FC JSR $FC99 C1/EB64: 9D 00 7E STA $7E00,X C1/EB67: E8 INX C1/EB68: E8 INX C1/EB69: C6 12 DEC $12 C1/EB6B: D0 F1 BNE $EB5E C1/EB6D: 7B TDC C1/EB6E: E2 20 SEP #$20 C1/EB70: 60 RTS ; [ ] color_offset_init: C1/EB71: 86 1A STX $1A C1/EB73: 7B TDC C1/EB74: A8 TAY C1/EB75: 92 1A STA ($1A) C1/EB77: C8 INY C1/EB78: 91 1A STA ($1A),Y C1/EB7A: C8 INY C1/EB7B: 91 1A STA ($1A),Y C1/EB7D: 64 14 STZ $14 C1/EB7F: 64 16 STZ $16 C1/EB81: 64 18 STZ $18 C1/EB83: A7 5B LDA [$5B] C1/EB85: 29 1F AND #$1F C1/EB87: 85 10 STA $10 C1/EB89: A7 5B LDA [$5B] C1/EB8B: 10 06 BPL $EB93 C1/EB8D: A5 10 LDA $10 C1/EB8F: 85 14 STA $14 C1/EB91: 92 1A STA ($1A) C1/EB93: A7 5B LDA [$5B] C1/EB95: 29 40 AND #$40 C1/EB97: F0 09 BEQ $EBA2 C1/EB99: A5 10 LDA $10 C1/EB9B: 85 16 STA $16 C1/EB9D: A0 01 00 LDY #$0001 C1/EBA0: 91 1A STA ($1A),Y C1/EBA2: A7 5B LDA [$5B] C1/EBA4: 29 20 AND #$20 C1/EBA6: F0 09 BEQ $EBB1 C1/EBA8: A5 10 LDA $10 C1/EBAA: 85 18 STA $18 C1/EBAC: A0 02 00 LDY #$0002 C1/EBAF: 91 1A STA ($1A),Y C1/EBB1: 60 RTS ; [ Battle Animation Command $B5: ] magic_code35: C1/EBB2: A2 C2 88 LDX #$88C2 C1/EBB5: 20 BB EA JSR $EABB C1/EBB8: 4C CA EB JMP $EBCA ; [ Battle Animation Command $B6: ] magic_code36: C1/EBBB: A2 C2 88 LDX #$88C2 C1/EBBE: 20 BB EA JSR $EABB C1/EBC1: 4C E0 EB JMP $EBE0 ; [ Battle Animation Command $B0: ] magic_code30: C1/EBC4: A2 C2 88 LDX #$88C2 C1/EBC7: 20 71 EB JSR $EB71 C1/EBCA: A2 A0 00 LDX #$00A0 C1/EBCD: 86 10 STX $10 C1/EBCF: A9 30 LDA #$30 C1/EBD1: 85 12 STA $12 C1/EBD3: 20 35 EB JSR $EB35 C1/EBD6: AE F6 7A LDX $7AF6 C1/EBD9: 60 RTS ; [ Battle Animation Command $AF: ] magic_code2f: C1/EBDA: A2 C2 88 LDX #$88C2 C1/EBDD: 20 71 EB JSR $EB71 magic_code2f_x: C1/EBE0: A2 A0 00 LDX #$00A0 C1/EBE3: 86 10 STX $10 C1/EBE5: A9 30 LDA #$30 C1/EBE7: 85 12 STA $12 C1/EBE9: 20 53 EB JSR $EB53 C1/EBEC: AE F6 7A LDX $7AF6 C1/EBEF: 60 RTS ; [ Battle Animation Command $CE: ] magic_code4e: C1/EBF0: A2 C5 88 LDX #$88C5 C1/EBF3: 20 BB EA JSR $EABB C1/EBF6: 4C 08 EC JMP $EC08 ; [ Battle Animation Command $CF: ] magic_code4f: C1/EBF9: A2 C5 88 LDX #$88C5 C1/EBFC: 20 BB EA JSR $EABB C1/EBFF: 4C 2A EC JMP $EC2A ; [ Battle Animation Command $CD: ] magic_code4d: C1/EC02: A2 C5 88 LDX #$88C5 C1/EC05: 20 71 EB JSR $EB71 C1/EC08: A2 60 00 LDX #$0060 C1/EC0B: 86 10 STX $10 C1/EC0D: A9 10 LDA #$10 C1/EC0F: 85 12 STA $12 C1/EC11: 20 35 EB JSR $EB35 C1/EC14: A2 80 00 LDX #$0080 C1/EC17: 86 10 STX $10 C1/EC19: A9 08 LDA #$08 C1/EC1B: 85 12 STA $12 C1/EC1D: 20 35 EB JSR $EB35 C1/EC20: AE F6 7A LDX $7AF6 C1/EC23: 60 RTS ; [ Battle Animation Command $CC: ] magic_code4c: C1/EC24: A2 C5 88 LDX #$88C5 C1/EC27: 20 71 EB JSR $EB71 C1/EC2A: A2 60 00 LDX #$0060 C1/EC2D: 86 10 STX $10 C1/EC2F: A9 10 LDA #$10 C1/EC31: 85 12 STA $12 C1/EC33: 20 53 EB JSR $EB53 C1/EC36: A2 80 00 LDX #$0080 C1/EC39: 86 10 STX $10 C1/EC3B: A9 08 LDA #$08 C1/EC3D: 85 12 STA $12 C1/EC3F: 20 53 EB JSR $EB53 C1/EC42: AE F6 7A LDX $7AF6 C1/EC45: 60 RTS ; [ Battle Animation Command $B4: ] magic_code34: C1/EC46: A2 BF 88 LDX #$88BF C1/EC49: 20 BB EA JSR $EABB C1/EC4C: 4C 74 EC JMP $EC74 ; [ Battle Animation Command $B3: ] magic_code33: C1/EC4F: A2 BF 88 LDX #$88BF C1/EC52: 20 BB EA JSR $EABB C1/EC55: 4C 5E EC JMP $EC5E ; [ Battle Animation Command $AB: ] magic_code2b: C1/EC58: A2 BF 88 LDX #$88BF C1/EC5B: 20 71 EB JSR $EB71 C1/EC5E: A2 20 00 LDX #$0020 C1/EC61: 86 10 STX $10 C1/EC63: A9 04 LDA #$04 C1/EC65: 85 12 STA $12 C1/EC67: 20 35 EB JSR $EB35 C1/EC6A: AE F6 7A LDX $7AF6 C1/EC6D: 60 RTS ; [ Battle Animation Command $AA: ] magic_code2a: C1/EC6E: A2 BF 88 LDX #$88BF C1/EC71: 20 71 EB JSR $EB71 C1/EC74: A2 20 00 LDX #$0020 C1/EC77: 86 10 STX $10 C1/EC79: A9 04 LDA #$04 C1/EC7B: 85 12 STA $12 C1/EC7D: 20 53 EB JSR $EB53 C1/EC80: AE F6 7A LDX $7AF6 C1/EC83: 60 RTS ; [ Battle Animation Command $B7: ] magic_code37: C1/EC84: A2 C8 88 LDX #$88C8 C1/EC87: 20 BB EA JSR $EABB C1/EC8A: 4C 9C EC JMP $EC9C ; [ Battle Animation Command $B8: ] magic_code38: C1/EC8D: A2 C8 88 LDX #$88C8 C1/EC90: 20 BB EA JSR $EABB C1/EC93: 4C B2 EC JMP $ECB2 ; [ Battle Animation Command $B2: ] magic_code32: C1/EC96: A2 C8 88 LDX #$88C8 C1/EC99: 20 71 EB JSR $EB71 C1/EC9C: A2 60 01 LDX #$0160 C1/EC9F: 86 10 STX $10 C1/ECA1: A9 10 LDA #$10 C1/ECA3: 85 12 STA $12 C1/ECA5: 20 35 EB JSR $EB35 C1/ECA8: AE F6 7A LDX $7AF6 C1/ECAB: 60 RTS ; [ Battle Animation Command $B1: ] magic_code31: C1/ECAC: A2 C8 88 LDX #$88C8 C1/ECAF: 20 71 EB JSR $EB71 C1/ECB2: A2 60 01 LDX #$0160 C1/ECB5: 86 10 STX $10 C1/ECB7: A9 10 LDA #$10 C1/ECB9: 85 12 STA $12 C1/ECBB: 20 53 EB JSR $EB53 C1/ECBE: AE F6 7A LDX $7AF6 C1/ECC1: 60 RTS ; [ Battle Animation Command $BC: ] magic_code3c: C1/ECC2: A2 CB 88 LDX #$88CB C1/ECC5: 20 BB EA JSR $EABB C1/ECC8: 4C F0 EC JMP $ECF0 ; [ Battle Animation Command $BB: ] magic_code3b: C1/ECCB: A2 CB 88 LDX #$88CB C1/ECCE: 20 BB EA JSR $EABB C1/ECD1: 4C DA EC JMP $ECDA ; [ Battle Animation Command $BA: ] magic_code3a: C1/ECD4: A2 CB 88 LDX #$88CB C1/ECD7: 20 71 EB JSR $EB71 C1/ECDA: A9 30 LDA #$30 C1/ECDC: 85 12 STA $12 C1/ECDE: A2 00 01 LDX #$0100 C1/ECE1: 86 10 STX $10 C1/ECE3: 20 35 EB JSR $EB35 C1/ECE6: AE F6 7A LDX $7AF6 C1/ECE9: 60 RTS ; [ Battle Animation Command $B9: ] magic_code39: C1/ECEA: A2 CB 88 LDX #$88CB C1/ECED: 20 71 EB JSR $EB71 C1/ECF0: A9 30 LDA #$30 C1/ECF2: 85 12 STA $12 C1/ECF4: A2 00 01 LDX #$0100 C1/ECF7: 86 10 STX $10 C1/ECF9: 20 53 EB JSR $EB53 C1/ECFC: AE F6 7A LDX $7AF6 C1/ECFF: 60 RTS ; [ Battle Animation Command $FD: ] magic_code7d: C1/ED00: A2 CE 88 LDX #$88CE C1/ED03: 20 BB EA JSR $EABB C1/ED06: 4C 18 ED JMP $ED18 ; [ Battle Animation Command $FE: ] magic_code7e: C1/ED09: A2 CE 88 LDX #$88CE C1/ED0C: 20 BB EA JSR $EABB C1/ED0F: 4C 52 ED JMP $ED52 ; [ Battle Animation Command $FC: ] magic_code7c: C1/ED12: A2 CE 88 LDX #$88CE C1/ED15: 20 71 EB JSR $EB71 C1/ED18: A9 10 LDA #$10 C1/ED1A: 85 12 STA $12 C1/ED1C: A2 80 01 LDX #$0180 C1/ED1F: 86 10 STX $10 C1/ED21: 20 35 EB JSR $EB35 C1/ED24: A9 10 LDA #$10 C1/ED26: 85 12 STA $12 C1/ED28: A2 A0 01 LDX #$01A0 C1/ED2B: 86 10 STX $10 C1/ED2D: 20 35 EB JSR $EB35 C1/ED30: A9 10 LDA #$10 C1/ED32: 85 12 STA $12 C1/ED34: A2 C0 01 LDX #$01C0 C1/ED37: 86 10 STX $10 C1/ED39: 20 35 EB JSR $EB35 C1/ED3C: A9 10 LDA #$10 C1/ED3E: 85 12 STA $12 C1/ED40: A2 E0 01 LDX #$01E0 C1/ED43: 86 10 STX $10 C1/ED45: 20 35 EB JSR $EB35 C1/ED48: AE F6 7A LDX $7AF6 C1/ED4B: 60 RTS ; [ Battle Animation Command $FB: ] magic_code7b: C1/ED4C: A2 CE 88 LDX #$88CE C1/ED4F: 20 71 EB JSR $EB71 C1/ED52: A9 0C LDA #$0C C1/ED54: 85 12 STA $12 C1/ED56: A2 80 01 LDX #$0180 C1/ED59: 86 10 STX $10 C1/ED5B: 20 53 EB JSR $EB53 C1/ED5E: A9 0C LDA #$0C C1/ED60: 85 12 STA $12 C1/ED62: A2 A0 01 LDX #$01A0 C1/ED65: 86 10 STX $10 C1/ED67: 20 53 EB JSR $EB53 C1/ED6A: A9 0C LDA #$0C C1/ED6C: 85 12 STA $12 C1/ED6E: A2 C0 01 LDX #$01C0 C1/ED71: 86 10 STX $10 C1/ED73: 20 53 EB JSR $EB53 C1/ED76: A9 0C LDA #$0C C1/ED78: 85 12 STA $12 C1/ED7A: A2 E0 01 LDX #$01E0 C1/ED7D: 86 10 STX $10 C1/ED7F: 20 53 EB JSR $EB53 C1/ED82: AE F6 7A LDX $7AF6 C1/ED85: 60 RTS ; [ Battle Animation Command $AE: ] magic_code2e: C1/ED86: A7 5B LDA [$5B] C1/ED88: 29 04 AND #$04 C1/ED8A: F0 4C BEQ $EDD8 C1/ED8C: A7 5B LDA [$5B] C1/ED8E: 10 21 BPL $EDB1 C1/ED90: AD 96 60 LDA $6096 C1/ED93: 85 24 STA $24 C1/ED95: AD 9A 60 LDA $609A C1/ED98: 85 14 STA $14 C1/ED9A: AD 98 60 LDA $6098 C1/ED9D: 85 16 STA $16 C1/ED9F: A2 B2 63 LDX #$63B2 C1/EDA2: 86 10 STX $10 C1/EDA4: 20 34 EF JSR $EF34 C1/EDA7: AD 98 60 LDA $6098 C1/EDAA: 18 CLC C1/EDAB: 6D 9A 60 ADC $609A C1/EDAE: 8D 98 60 STA $6098 C1/EDB1: A7 5B LDA [$5B] C1/EDB3: 29 40 AND #$40 C1/EDB5: F0 21 BEQ $EDD8 C1/EDB7: AD 95 60 LDA $6095 C1/EDBA: 85 24 STA $24 C1/EDBC: AD 99 60 LDA $6099 C1/EDBF: 85 14 STA $14 C1/EDC1: AD 97 60 LDA $6097 C1/EDC4: 85 16 STA $16 C1/EDC6: A2 B0 63 LDX #$63B0 C1/EDC9: 86 10 STX $10 C1/EDCB: 20 34 EF JSR $EF34 C1/EDCE: AD 97 60 LDA $6097 C1/EDD1: 18 CLC C1/EDD2: 6D 99 60 ADC $6099 C1/EDD5: 8D 97 60 STA $6097 C1/EDD8: A7 5B LDA [$5B] C1/EDDA: 29 02 AND #$02 C1/EDDC: F0 4C BEQ $EE2A C1/EDDE: A7 5B LDA [$5B] C1/EDE0: 10 21 BPL $EE03 C1/EDE2: AD 9C 60 LDA $609C C1/EDE5: 85 24 STA $24 C1/EDE7: AD A0 60 LDA $60A0 C1/EDEA: 85 14 STA $14 C1/EDEC: AD 9E 60 LDA $609E C1/EDEF: 85 16 STA $16 C1/EDF1: A2 32 63 LDX #$6332 C1/EDF4: 86 10 STX $10 C1/EDF6: 20 34 EF JSR $EF34 C1/EDF9: AD 9E 60 LDA $609E C1/EDFC: 18 CLC C1/EDFD: 6D A0 60 ADC $60A0 C1/EE00: 8D 9E 60 STA $609E C1/EE03: A7 5B LDA [$5B] C1/EE05: 29 40 AND #$40 C1/EE07: F0 21 BEQ $EE2A C1/EE09: AD 9B 60 LDA $609B C1/EE0C: 85 24 STA $24 C1/EE0E: AD 9F 60 LDA $609F C1/EE11: 85 14 STA $14 C1/EE13: AD 9D 60 LDA $609D C1/EE16: 85 16 STA $16 C1/EE18: A2 30 63 LDX #$6330 C1/EE1B: 86 10 STX $10 C1/EE1D: 20 34 EF JSR $EF34 C1/EE20: AD 9D 60 LDA $609D C1/EE23: 18 CLC C1/EE24: 6D 9F 60 ADC $609F C1/EE27: 8D 9D 60 STA $609D C1/EE2A: A7 5B LDA [$5B] C1/EE2C: 29 01 AND #$01 C1/EE2E: F0 68 BEQ $EE98 C1/EE30: A7 5B LDA [$5B] C1/EE32: 10 2F BPL $EE63 C1/EE34: AD A2 60 LDA $60A2 C1/EE37: 85 24 STA $24 C1/EE39: AD A6 60 LDA $60A6 C1/EE3C: 85 14 STA $14 C1/EE3E: AD A4 60 LDA $60A4 C1/EE41: 85 16 STA $16 C1/EE43: A2 F7 4A LDX #$4AF7 C1/EE46: 86 10 STX $10 C1/EE48: C2 20 REP #$20 C1/EE4A: AD 24 7B LDA $7B24 C1/EE4D: 38 SEC C1/EE4E: ED 2B 7B SBC $7B2B C1/EE51: 85 18 STA $18 C1/EE53: 7B TDC C1/EE54: E2 20 SEP #$20 C1/EE56: 20 6A EF JSR $EF6A C1/EE59: AD A4 60 LDA $60A4 C1/EE5C: 18 CLC C1/EE5D: 6D A6 60 ADC $60A6 C1/EE60: 8D A4 60 STA $60A4 C1/EE63: A7 5B LDA [$5B] C1/EE65: 29 40 AND #$40 C1/EE67: F0 2F BEQ $EE98 C1/EE69: AD A1 60 LDA $60A1 C1/EE6C: 85 24 STA $24 C1/EE6E: AD A5 60 LDA $60A5 C1/EE71: 85 14 STA $14 C1/EE73: AD A3 60 LDA $60A3 C1/EE76: 85 16 STA $16 C1/EE78: A2 F5 4A LDX #$4AF5 C1/EE7B: 86 10 STX $10 C1/EE7D: C2 20 REP #$20 C1/EE7F: AD 22 7B LDA $7B22 C1/EE82: 38 SEC C1/EE83: ED 29 7B SBC $7B29 C1/EE86: 85 18 STA $18 C1/EE88: 7B TDC C1/EE89: E2 20 SEP #$20 C1/EE8B: 20 6A EF JSR $EF6A C1/EE8E: AD A3 60 LDA $60A3 C1/EE91: 18 CLC C1/EE92: 6D A5 60 ADC $60A5 C1/EE95: 8D A3 60 STA $60A3 C1/EE98: AE F6 7A LDX $7AF6 C1/EE9B: 60 RTS ; [ Battle Animation Command $AC: ] magic_code2c: C1/EE9C: A0 01 00 LDY #$0001 C1/EE9F: A7 5B LDA [$5B] C1/EEA1: 10 24 BPL $EEC7 C1/EEA3: B7 5B LDA [$5B],Y C1/EEA5: 10 0C BPL $EEB3 C1/EEA7: 29 3F AND #$3F C1/EEA9: 8D 96 60 STA $6096 C1/EEAC: A7 5B LDA [$5B] C1/EEAE: 29 1F AND #$1F C1/EEB0: 8D 9A 60 STA $609A C1/EEB3: B7 5B LDA [$5B],Y C1/EEB5: 29 40 AND #$40 C1/EEB7: F0 0E BEQ $EEC7 C1/EEB9: B7 5B LDA [$5B],Y C1/EEBB: 29 3F AND #$3F C1/EEBD: 8D 95 60 STA $6095 C1/EEC0: A7 5B LDA [$5B] C1/EEC2: 29 1F AND #$1F C1/EEC4: 8D 99 60 STA $6099 C1/EEC7: A7 5B LDA [$5B] C1/EEC9: 29 40 AND #$40 C1/EECB: F0 24 BEQ $EEF1 C1/EECD: B7 5B LDA [$5B],Y C1/EECF: 10 0C BPL $EEDD C1/EED1: 29 3F AND #$3F C1/EED3: 8D 9C 60 STA $609C C1/EED6: A7 5B LDA [$5B] C1/EED8: 29 1F AND #$1F C1/EEDA: 8D A0 60 STA $60A0 C1/EEDD: B7 5B LDA [$5B],Y C1/EEDF: 29 40 AND #$40 C1/EEE1: F0 0E BEQ $EEF1 C1/EEE3: B7 5B LDA [$5B],Y C1/EEE5: 29 3F AND #$3F C1/EEE7: 8D 9B 60 STA $609B C1/EEEA: A7 5B LDA [$5B] C1/EEEC: 29 1F AND #$1F C1/EEEE: 8D 9F 60 STA $609F C1/EEF1: A7 5B LDA [$5B] C1/EEF3: 29 20 AND #$20 C1/EEF5: F0 24 BEQ $EF1B C1/EEF7: B7 5B LDA [$5B],Y C1/EEF9: 10 0C BPL $EF07 C1/EEFB: 29 3F AND #$3F C1/EEFD: 8D A2 60 STA $60A2 C1/EF00: A7 5B LDA [$5B] C1/EF02: 29 1F AND #$1F C1/EF04: 8D A6 60 STA $60A6 C1/EF07: B7 5B LDA [$5B],Y C1/EF09: 29 40 AND #$40 C1/EF0B: F0 0E BEQ $EF1B C1/EF0D: B7 5B LDA [$5B],Y C1/EF0F: 29 3F AND #$3F C1/EF11: 8D A1 60 STA $60A1 C1/EF14: A7 5B LDA [$5B] C1/EF16: 29 1F AND #$1F C1/EF18: 8D A5 60 STA $60A5 C1/EF1B: A4 5B LDY $5B C1/EF1D: C8 INY C1/EF1E: 84 5B STY $5B C1/EF20: AE F6 7A LDX $7AF6 C1/EF23: 60 RTS get_laster_poi: C1/EF24: .DW $E7BF, $E7FF, $E83F, $E87F, $E8BF, $E8FF, $E93F, $E97F bg_laster_set: C1/EF34: A5 24 LDA $24 C1/EF36: 29 0E AND #$0E C1/EF38: AA TAX C1/EF39: C2 20 REP #$20 C1/EF3B: BF 24 EF C1 LDA $C1EF24,X C1/EF3F: 85 22 STA $22 C1/EF41: A5 16 LDA $16 C1/EF43: 29 FF 00 AND #$00FF C1/EF46: 0A ASL C1/EF47: 29 3F 00 AND #$003F C1/EF4A: A8 TAY C1/EF4B: A9 20 00 LDA #$0020 C1/EF4E: 85 12 STA $12 C1/EF50: A6 10 LDX $10 C1/EF52: B1 22 LDA ($22),Y C1/EF54: 9D 00 00 STA $0000,X C1/EF57: E8 INX C1/EF58: E8 INX C1/EF59: E8 INX C1/EF5A: E8 INX C1/EF5B: C8 INY C1/EF5C: C8 INY C1/EF5D: 98 TYA C1/EF5E: 29 3F 00 AND #$003F C1/EF61: A8 TAY C1/EF62: C6 12 DEC $12 C1/EF64: D0 EC BNE $EF52 C1/EF66: 7B TDC C1/EF67: E2 20 SEP #$20 C1/EF69: 60 RTS ; [ ] bg_laster_set_bg3: C1/EF6A: A5 24 LDA $24 C1/EF6C: 29 0E AND #$0E C1/EF6E: AA TAX C1/EF6F: C2 20 REP #$20 C1/EF71: BF 24 EF C1 LDA $C1EF24,X C1/EF75: 85 22 STA $22 C1/EF77: A5 16 LDA $16 C1/EF79: 29 FF 00 AND #$00FF C1/EF7C: 0A ASL C1/EF7D: 29 3F 00 AND #$003F C1/EF80: A8 TAY C1/EF81: A9 20 00 LDA #$0020 C1/EF84: 85 12 STA $12 C1/EF86: A6 10 LDX $10 C1/EF88: B1 22 LDA ($22),Y C1/EF8A: 18 CLC C1/EF8B: 65 18 ADC $18 C1/EF8D: 9D 00 00 STA $0000,X C1/EF90: E8 INX C1/EF91: E8 INX C1/EF92: E8 INX C1/EF93: E8 INX C1/EF94: C8 INY C1/EF95: C8 INY C1/EF96: 98 TYA C1/EF97: 29 3F 00 AND #$003F C1/EF9A: A8 TAY C1/EF9B: C6 12 DEC $12 C1/EF9D: D0 E9 BNE $EF88 C1/EF9F: 7B TDC C1/EFA0: E2 20 SEP #$20 C1/EFA2: 60 RTS ; [ Battle Animation Command $AD: Set BG HDMA Scroll Type ] ; b1: lltttttt ; l: (0 = bg1, 1 = bg2, 2 = bg3) ; t: hdma scroll type magic_code2d: C1/EFA3: AE F6 7A LDX $7AF6 C1/EFA6: A7 5B LDA [$5B] C1/EFA8: 29 C0 AND #$C0 C1/EFAA: D0 08 BNE $EFB4 C1/EFAC: A7 5B LDA [$5B] C1/EFAE: 29 3F AND #$3F C1/EFB0: 8D 0C 80 STA $800C ; bg1 hdma scroll type C1/EFB3: 60 RTS C1/EFB4: C9 40 CMP #$40 C1/EFB6: D0 08 BNE $EFC0 C1/EFB8: A7 5B LDA [$5B] C1/EFBA: 29 3F AND #$3F C1/EFBC: 8D 0D 80 STA $800D ; bg2 hdma scroll type C1/EFBF: 60 RTS C1/EFC0: A7 5B LDA [$5B] C1/EFC2: 29 3F AND #$3F C1/EFC4: 8D 0E 80 STA $800E ; bg3 hdma scroll type C1/EFC7: 60 RTS ; [ Battle Animation Command $A9: Move Circle ] magic_code29: C1/EFC8: AE F6 7A LDX $7AF6 C1/EFCB: A7 5B LDA [$5B] C1/EFCD: 85 22 STA $22 C1/EFCF: A0 01 00 LDY #$0001 C1/EFD2: B7 5B LDA [$5B],Y C1/EFD4: 85 24 STA $24 C1/EFD6: BD 38 6A LDA $6A38,X C1/EFD9: 30 42 BMI $F01D C1/EFDB: A8 TAY C1/EFDC: B9 10 7B LDA $7B10,Y C1/EFDF: 29 01 AND #$01 C1/EFE1: F0 07 BEQ $EFEA C1/EFE3: A5 22 LDA $22 C1/EFE5: 49 FF EOR #$FF C1/EFE7: 1A INC C1/EFE8: 85 22 STA $22 C1/EFEA: A5 22 LDA $22 C1/EFEC: 10 07 BPL $EFF5 C1/EFEE: AD 14 96 LDA $9614 C1/EFF1: C9 21 CMP #$21 C1/EFF3: 90 0E BCC $F003 C1/EFF5: AD 14 96 LDA $9614 C1/EFF8: 18 CLC C1/EFF9: 65 22 ADC $22 C1/EFFB: CD 17 96 CMP $9617 C1/EFFE: 90 03 BCC $F003 C1/F000: AD 17 96 LDA $9617 C1/F003: 8D 14 96 STA $9614 C1/F006: AD 15 96 LDA $9615 C1/F009: 18 CLC C1/F00A: 65 24 ADC $24 C1/F00C: CD 18 96 CMP $9618 C1/F00F: 90 03 BCC $F014 C1/F011: AD 18 96 LDA $9618 C1/F014: 8D 15 96 STA $9615 C1/F017: A4 5B LDY $5B C1/F019: C8 INY C1/F01A: 84 5B STY $5B C1/F01C: 60 RTS C1/F01D: 29 7F AND #$7F C1/F01F: 38 SEC C1/F020: E9 04 SBC #$04 C1/F022: 0A ASL C1/F023: A8 TAY C1/F024: B9 F3 80 LDA $80F3,Y C1/F027: 59 7E 61 EOR $617E,Y C1/F02A: 49 01 EOR #$01 C1/F02C: 4C DF EF JMP $EFDF ; [ Battle Animation Command $C3: Move Circle to Target ] magic_code43: C1/F02F: AE F6 7A LDX $7AF6 C1/F032: BD 82 6F LDA $6F82,X ; target x position C1/F035: 8D 14 96 STA $9614 ; circle x position C1/F038: BD 84 6F LDA $6F84,X ; target y position C1/F03B: 8D 15 96 STA $9615 ; circle y position C1/F03E: A4 5B LDY $5B C1/F040: 88 DEY C1/F041: 84 5B STY $5B C1/F043: 60 RTS ; [ Battle Animation Command $D3: Move Circle to Attacking Character ] magic_code53: C1/F044: 20 A1 E7 JSR $E7A1 ; get pointer to attacker animation thread data C1/F047: C2 20 REP #$20 C1/F049: B9 B7 61 LDA $61B7,Y ; character x position C1/F04C: 18 CLC C1/F04D: 79 C5 61 ADC $61C5,Y ; add offsets C1/F050: 18 CLC C1/F051: 79 D4 61 ADC $61D4,Y C1/F054: 18 CLC C1/F055: 69 08 00 ADC #$0008 ; add 8 to get center of sprite C1/F058: 85 22 STA $22 C1/F05A: B9 B9 61 LDA $61B9,Y ; character y position C1/F05D: 18 CLC C1/F05E: 79 C7 61 ADC $61C7,Y ; add offset C1/F061: 85 24 STA $24 C1/F063: C6 5B DEC $5B C1/F065: 7B TDC C1/F066: E2 20 SEP #$20 C1/F068: A5 22 LDA $22 ; set circle position C1/F06A: 8D 14 96 STA $9614 C1/F06D: A5 24 LDA $24 C1/F06F: 8D 15 96 STA $9615 C1/F072: 60 RTS ; [ Battle Animation Command $A8: Move Circle to Attacker ] magic_code28: C1/F073: AE F6 7A LDX $7AF6 C1/F076: BD 7E 6F LDA $6F7E,X C1/F079: 8D 14 96 STA $9614 C1/F07C: BD 80 6F LDA $6F80,X C1/F07F: 8D 15 96 STA $9615 C1/F082: A4 5B LDY $5B C1/F084: 88 DEY C1/F085: 84 5B STY $5B C1/F087: 60 RTS ; [ Battle Animation Command $A7: Update Circle ] magic_code27: C1/F088: 20 C7 1B JSR $1BC7 ; update circle C1/F08B: A4 5B LDY $5B C1/F08D: 88 DEY C1/F08E: 84 5B STY $5B C1/F090: AE F6 7A LDX $7AF6 C1/F093: 60 RTS ; [ Battle Animation Command $A6: Move Circle and Change Size ] magic_code26: C1/F094: A7 5B LDA [$5B] C1/F096: 85 22 STA $22 C1/F098: A0 01 00 LDY #$0001 C1/F09B: B7 5B LDA [$5B],Y C1/F09D: 85 24 STA $24 C1/F09F: C8 INY C1/F0A0: B7 5B LDA [$5B],Y C1/F0A2: 85 26 STA $26 C1/F0A4: A4 5B LDY $5B C1/F0A6: C8 INY C1/F0A7: C8 INY C1/F0A8: 84 5B STY $5B C1/F0AA: A5 22 LDA $22 C1/F0AC: 10 07 BPL $F0B5 C1/F0AE: AD 14 96 LDA $9614 C1/F0B1: C9 21 CMP #$21 C1/F0B3: 90 0E BCC $F0C3 C1/F0B5: AD 14 96 LDA $9614 C1/F0B8: 18 CLC C1/F0B9: 65 22 ADC $22 C1/F0BB: CD 17 96 CMP $9617 C1/F0BE: 90 03 BCC $F0C3 C1/F0C0: AD 17 96 LDA $9617 C1/F0C3: 8D 14 96 STA $9614 C1/F0C6: AD 15 96 LDA $9615 C1/F0C9: 18 CLC C1/F0CA: 65 24 ADC $24 C1/F0CC: CD 18 96 CMP $9618 C1/F0CF: 90 03 BCC $F0D4 C1/F0D1: AD 18 96 LDA $9618 C1/F0D4: 8D 15 96 STA $9615 C1/F0D7: AD 13 96 LDA $9613 C1/F0DA: 18 CLC C1/F0DB: 65 26 ADC $26 C1/F0DD: CD 16 96 CMP $9616 C1/F0E0: 90 03 BCC $F0E5 C1/F0E2: AD 16 96 LDA $9616 C1/F0E5: 8D 13 96 STA $9613 C1/F0E8: AE F6 7A LDX $7AF6 C1/F0EB: 60 RTS ; [ Battle Animation Command $A5: Init Circle ] ; b1: initial x position ; b2: initial y position ; b3: initial size ; b4: final x position ; b5: final y position ; b6: final size ; b7: speed magic_code25: C1/F0EC: A7 5B LDA [$5B] C1/F0EE: 8D 14 96 STA $9614 ; initial x position C1/F0F1: A0 01 00 LDY #$0001 C1/F0F4: B7 5B LDA [$5B],Y C1/F0F6: 8D 15 96 STA $9615 ; initial y position C1/F0F9: C8 INY C1/F0FA: B7 5B LDA [$5B],Y C1/F0FC: 8D 13 96 STA $9613 ; initial size C1/F0FF: C8 INY C1/F100: B7 5B LDA [$5B],Y C1/F102: 8D 17 96 STA $9617 ; final x position C1/F105: C8 INY C1/F106: B7 5B LDA [$5B],Y C1/F108: 8D 18 96 STA $9618 ; final y position C1/F10B: C8 INY C1/F10C: B7 5B LDA [$5B],Y C1/F10E: 8D 16 96 STA $9616 ; final size C1/F111: C8 INY C1/F112: B7 5B LDA [$5B],Y C1/F114: 8D 19 96 STA $9619 ; circle speed C1/F117: AE F6 7A LDX $7AF6 C1/F11A: BD 38 6A LDA $6A38,X ; attacker C1/F11D: 10 11 BPL $F130 ; branch if a character C1/F11F: 29 7F AND #$7F C1/F121: 38 SEC C1/F122: E9 04 SBC #$04 C1/F124: 0A ASL C1/F125: A8 TAY C1/F126: B9 F3 80 LDA $80F3,Y C1/F129: 59 7E 61 EOR $617E,Y C1/F12C: 49 01 EOR #$01 C1/F12E: 80 04 BRA $F134 C1/F130: A8 TAY C1/F131: B9 10 7B LDA $7B10,Y C1/F134: 29 01 AND #$01 C1/F136: F0 04 BEQ $F13C ; branch if not mirrored C1/F138: A9 C0 LDA #$C0 C1/F13A: 80 02 BRA $F13E C1/F13C: A9 40 LDA #$40 C1/F13E: 8D 1A 96 STA $961A ; circle vh flip C1/F141: C2 20 REP #$20 C1/F143: A5 5B LDA $5B C1/F145: 18 CLC C1/F146: 69 06 00 ADC #$0006 C1/F149: 85 5B STA $5B C1/F14B: 7B TDC C1/F14C: E2 20 SEP #$20 C1/F14E: AE F6 7A LDX $7AF6 C1/F151: 60 RTS ; [ ] one_pal_l: C1/F152: DA PHX C1/F153: 06 22 ASL $22 C1/F155: 64 23 STZ $23 C1/F157: A5 22 LDA $22 C1/F159: AA TAX C1/F15A: 64 25 STZ $25 C1/F15C: C2 20 REP #$20 C1/F15E: A5 28 LDA $28 C1/F160: 29 F0 00 AND #$00F0 C1/F163: 0A ASL C1/F164: 85 28 STA $28 C1/F166: 8A TXA C1/F167: 18 CLC C1/F168: 65 28 ADC $28 C1/F16A: AA TAX C1/F16B: C6 24 DEC $24 C1/F16D: BD 00 7E LDA $7E00,X C1/F170: 48 PHA C1/F171: BD 00 7C LDA $7C00,X C1/F174: 48 PHA C1/F175: BD 02 7E LDA $7E02,X C1/F178: 9D 00 7E STA $7E00,X C1/F17B: BD 02 7C LDA $7C02,X C1/F17E: 9D 00 7C STA $7C00,X C1/F181: E8 INX C1/F182: E8 INX C1/F183: C6 24 DEC $24 C1/F185: D0 EE BNE $F175 C1/F187: 68 PLA C1/F188: 9D 00 7C STA $7C00,X C1/F18B: 68 PLA C1/F18C: 9D 00 7E STA $7E00,X C1/F18F: 7B TDC C1/F190: E2 20 SEP #$20 C1/F192: FA PLX C1/F193: 60 RTS ; [ ] one_pal_r: C1/F194: DA PHX C1/F195: 06 22 ASL $22 C1/F197: 64 23 STZ $23 C1/F199: C6 24 DEC $24 C1/F19B: A5 24 LDA $24 C1/F19D: 0A ASL C1/F19E: 18 CLC C1/F19F: 65 22 ADC $22 C1/F1A1: AA TAX C1/F1A2: 64 25 STZ $25 C1/F1A4: C2 20 REP #$20 C1/F1A6: A5 28 LDA $28 C1/F1A8: 29 F0 00 AND #$00F0 C1/F1AB: 0A ASL C1/F1AC: 85 28 STA $28 C1/F1AE: 8A TXA C1/F1AF: 18 CLC C1/F1B0: 65 28 ADC $28 C1/F1B2: AA TAX C1/F1B3: BD 00 7E LDA $7E00,X C1/F1B6: 48 PHA C1/F1B7: BD 00 7C LDA $7C00,X C1/F1BA: 48 PHA C1/F1BB: BD FE 7D LDA $7DFE,X C1/F1BE: 9D 00 7E STA $7E00,X C1/F1C1: BD FE 7B LDA $7BFE,X C1/F1C4: 9D 00 7C STA $7C00,X C1/F1C7: CA DEX C1/F1C8: CA DEX C1/F1C9: C6 24 DEC $24 C1/F1CB: D0 EE BNE $F1BB C1/F1CD: 68 PLA C1/F1CE: 9D 00 7C STA $7C00,X C1/F1D1: 68 PLA C1/F1D2: 9D 00 7E STA $7E00,X C1/F1D5: 7B TDC C1/F1D6: E2 20 SEP #$20 C1/F1D8: FA PLX C1/F1D9: 60 RTS ; [ ] get_pal_poi: C1/F1DA: A0 01 00 LDY #$0001 C1/F1DD: B7 5B LDA [$5B],Y C1/F1DF: 4A LSR C1/F1E0: 4A LSR C1/F1E1: 4A LSR C1/F1E2: 4A LSR C1/F1E3: AA TAX C1/F1E4: 60 RTS ; [ Battle Animation Command $A3: ] magic_code23: C1/F1E5: 20 DA F1 JSR $F1DA C1/F1E8: BD 85 60 LDA $6085,X C1/F1EB: D0 24 BNE $F211 C1/F1ED: A7 5B LDA [$5B] C1/F1EF: 29 F0 AND #$F0 C1/F1F1: 4A LSR C1/F1F2: 4A LSR C1/F1F3: 4A LSR C1/F1F4: 4A LSR C1/F1F5: 85 22 STA $22 C1/F1F7: A7 5B LDA [$5B] C1/F1F9: 29 0F AND #$0F C1/F1FB: 85 24 STA $24 C1/F1FD: A0 01 00 LDY #$0001 C1/F200: B7 5B LDA [$5B],Y C1/F202: 85 28 STA $28 C1/F204: 20 94 F1 JSR $F194 C1/F207: A0 01 00 LDY #$0001 C1/F20A: B7 5B LDA [$5B],Y C1/F20C: 29 0F AND #$0F C1/F20E: 9D 85 60 STA $6085,X C1/F211: DE 85 60 DEC $6085,X C1/F214: A4 5B LDY $5B C1/F216: C8 INY C1/F217: 84 5B STY $5B C1/F219: AE F6 7A LDX $7AF6 C1/F21C: 60 RTS ; [ Battle Animation Command $A4: ] magic_code24: C1/F21D: 20 DA F1 JSR $F1DA C1/F220: BD 85 60 LDA $6085,X C1/F223: D0 24 BNE $F249 C1/F225: A7 5B LDA [$5B] C1/F227: 29 F0 AND #$F0 C1/F229: 4A LSR C1/F22A: 4A LSR C1/F22B: 4A LSR C1/F22C: 4A LSR C1/F22D: 85 22 STA $22 C1/F22F: A7 5B LDA [$5B] C1/F231: 29 0F AND #$0F C1/F233: 85 24 STA $24 C1/F235: A0 01 00 LDY #$0001 C1/F238: B7 5B LDA [$5B],Y C1/F23A: 85 28 STA $28 C1/F23C: 20 52 F1 JSR $F152 C1/F23F: A0 01 00 LDY #$0001 C1/F242: B7 5B LDA [$5B],Y C1/F244: 29 0F AND #$0F C1/F246: 9D 85 60 STA $6085,X C1/F249: DE 85 60 DEC $6085,X C1/F24C: A4 5B LDY $5B C1/F24E: C8 INY C1/F24F: 84 5B STY $5B C1/F251: AE F6 7A LDX $7AF6 C1/F254: 60 RTS ; [ Battle Animation Command $90: Set Sprite Layer Priority ] ; b1 = --oo---- o: layer priority magic_code10: C1/F255: AE F6 7A LDX $7AF6 C1/F258: BD 86 6F LDA $6F86,X ; sprite layer priority C1/F25B: 29 CF AND #$CF C1/F25D: 07 5B ORA [$5B] C1/F25F: 9D 86 6F STA $6F86,X ; sprite layer priority C1/F262: 60 RTS ; [ Battle Animation Command $8D & $8F: Move Thread if Animation is Flipped Horizontally ] magic_code0d: magic_code0f: C1/F263: AE F6 7A LDX $7AF6 C1/F266: BD 38 6A LDA $6A38,X ; attacker C1/F269: 30 0E BMI $F279 ; return if a monster C1/F26B: A8 TAY C1/F26C: B9 10 7B LDA $7B10,Y ; character facing direction C1/F26F: 5D 88 6F EOR $6F88,X ; animation direction C1/F272: 29 01 AND #$01 C1/F274: D0 03 BNE $F279 ; branch if not flipped horizontally C1/F276: 4C 77 F3 JMP $F377 ; move thread C1/F279: 60 RTS ; [ Battle Animation Command $8E: ] ; b1 = ??-----? magic_code0e: C1/F27A: AE F6 7A LDX $7AF6 C1/F27D: BD 38 6A LDA $6A38,X ; attacker C1/F280: 30 1F BMI $F2A1 ; return if a monster C1/F282: A8 TAY C1/F283: A7 5B LDA [$5B] ; $10 = sprite priority (above/below) C1/F285: 29 01 AND #$01 C1/F287: 85 10 STA $10 C1/F289: A7 5B LDA [$5B] C1/F28B: 30 11 BMI $F29E ; branch if shown behind C1/F28D: 29 40 AND #$40 C1/F28F: F0 03 BEQ $F294 ; branch if shown in front C1/F291: 7B TDC C1/F292: 80 0A BRA $F29E C1/F294: B9 10 7B LDA $7B10,Y ; character facing direction C1/F297: 5D 88 6F EOR $6F88,X ; animation direction C1/F29A: 29 01 AND #$01 C1/F29C: 45 10 EOR $10 C1/F29E: 9D E7 64 STA $64E7,X ; sprite layer priority C1/F2A1: 60 RTS ; [ Battle Animation Command $9C: ] magic_code1c: C1/F2A2: AE F6 7A LDX $7AF6 C1/F2A5: BD 39 6A LDA $6A39,X C1/F2A8: 30 0B BMI $F2B5 C1/F2AA: A8 TAY C1/F2AB: B9 10 7B LDA $7B10,Y C1/F2AE: 29 01 AND #$01 C1/F2B0: D0 03 BNE $F2B5 C1/F2B2: 4C 77 F3 JMP $F377 C1/F2B5: 60 RTS ; [ Battle Animation Command $9E: ] magic_code1e: C1/F2B6: AE F6 7A LDX $7AF6 C1/F2B9: BD 39 6A LDA $6A39,X C1/F2BC: 30 1D BMI $F2DB C1/F2BE: A8 TAY C1/F2BF: B9 10 7B LDA $7B10,Y C1/F2C2: 29 01 AND #$01 C1/F2C4: D0 06 BNE $F2CC C1/F2C6: A7 5B LDA [$5B] C1/F2C8: 85 10 STA $10 C1/F2CA: 80 07 BRA $F2D3 C1/F2CC: A0 01 00 LDY #$0001 C1/F2CF: B7 5B LDA [$5B],Y C1/F2D1: 85 10 STA $10 C1/F2D3: BD 87 6F LDA $6F87,X C1/F2D6: 45 10 EOR $10 C1/F2D8: 9D 87 6F STA $6F87,X C1/F2DB: A4 5B LDY $5B C1/F2DD: C8 INY C1/F2DE: 84 5B STY $5B C1/F2E0: 60 RTS ; [ Battle Animation Command $A2: Toggle Horizontal Flip ] ; b1: must be $40 magic_code22: C1/F2E1: AE F6 7A LDX $7AF6 C1/F2E4: A7 5B LDA [$5B] C1/F2E6: 85 10 STA $10 C1/F2E8: BD 87 6F LDA $6F87,X ; toggle horizontal flip C1/F2EB: 45 10 EOR $10 C1/F2ED: 9D 87 6F STA $6F87,X C1/F2F0: 60 RTS ; [ Battle Animation Command $9D: ] magic_code1d: C1/F2F1: AE F6 7A LDX $7AF6 C1/F2F4: BD 39 6A LDA $6A39,X ; target C1/F2F7: 30 15 BMI $F30E ; return if a monster C1/F2F9: A8 TAY C1/F2FA: B9 10 7B LDA $7B10,Y ; character facing direction C1/F2FD: 29 01 AND #$01 C1/F2FF: D0 06 BNE $F307 ; branch if facing right C1/F301: A7 5B LDA [$5B] C1/F303: 85 9B STA $9B ; C1/F305: 80 07 BRA $F30E C1/F307: A0 01 00 LDY #$0001 C1/F30A: B7 5B LDA [$5B],Y C1/F30C: 85 9B STA $9B C1/F30E: 60 RTS ; [ Battle Animation Command $F4: Set Sprite Layer Priority ] magic_code74: C1/F30F: AE F6 7A LDX $7AF6 C1/F312: A7 5B LDA [$5B] C1/F314: 29 01 AND #$01 C1/F316: 9D E7 64 STA $64E7,X C1/F319: 60 RTS ; [ Battle Animation Command $9B: ] magic_code1b: C1/F31A: AE F6 7A LDX $7AF6 C1/F31D: BD 39 6A LDA $6A39,X ; target C1/F320: 30 1C BMI $F33E ; return if a monster C1/F322: A8 TAY C1/F323: A7 5B LDA [$5B] C1/F325: 29 01 AND #$01 C1/F327: 85 10 STA $10 C1/F329: A7 5B LDA [$5B] C1/F32B: 30 0E BMI $F33B C1/F32D: 29 40 AND #$40 C1/F32F: F0 03 BEQ $F334 C1/F331: 7B TDC C1/F332: 80 07 BRA $F33B C1/F334: B9 10 7B LDA $7B10,Y ; character facing direction C1/F337: 29 01 AND #$01 C1/F339: 45 10 EOR $10 C1/F33B: 9D E7 64 STA $64E7,X ; sprite layer priority C1/F33E: 60 RTS ; [ Battle Animation Command $82: Set Target Graphical Action ] ; b1 = action if facing left ; b2 = action if facing right magic_code02: C1/F33F: AE F6 7A LDX $7AF6 ; pointer to thread data C1/F342: BD 39 6A LDA $6A39,X ; target C1/F345: 80 06 BRA $F34D ; [ Battle Animation Command $81: Set Attacker Graphical Action ] ; b1 = action if facing left ; b2 = action if facing right magic_code01: C1/F347: AE F6 7A LDX $7AF6 ; pointer to thread data C1/F34A: BD 38 6A LDA $6A38,X ; attacker C1/F34D: 30 22 BMI $F371 ; return if a monster C1/F34F: 85 10 STA $10 C1/F351: A8 TAY C1/F352: B9 10 7B LDA $7B10,Y ; character facing direction C1/F355: 5D 88 6F EOR $6F88,X ; animation direction C1/F358: 29 01 AND #$01 ; isolate direction bit C1/F35A: A8 TAY C1/F35B: B7 5B LDA [$5B],Y ; graphical action number C1/F35D: 85 12 STA $12 C1/F35F: A5 10 LDA $10 ; character number C1/F361: 29 03 AND #$03 C1/F363: 8D AD 7B STA $7BAD ; enable character graphical action update C1/F366: 0A ASL C1/F367: 0A ASL C1/F368: 0A ASL C1/F369: 0A ASL C1/F36A: 0A ASL C1/F36B: A8 TAY C1/F36C: A5 12 LDA $12 C1/F36E: 99 C1 61 STA $61C1,Y ; set graphical action number C1/F371: A4 5B LDY $5B C1/F373: C8 INY C1/F374: 84 5B STY $5B C1/F376: 60 RTS ; [ Battle Animation Command $83: Move Thread ] ; b1 = dddxxxxx ; d: direction (0 = down/forward, 1 = down, 2 = down/back, 3 = forward, 4 = back, 5 = up/forward, 6 = up, 7 = up/back) ; x: distance - 1 magic_code03: C1/F377: A7 5B LDA [$5B] C1/F379: 85 12 STA $12 C1/F37B: 29 1F AND #$1F C1/F37D: 1A INC C1/F37E: 85 10 STA $10 C1/F380: 64 11 STZ $11 ; fall through ; [ Move Thread ] ; $12 = direction ; +$10 = distance magic_code03_a: C1/F382: AE F6 7A LDX $7AF6 C1/F385: BD 87 6F LDA $6F87,X ; animation direction C1/F388: F0 0C BEQ $F396 ; branch if horizontally flipped C1/F38A: A5 12 LDA $12 C1/F38C: 29 E0 AND #$E0 C1/F38E: 4A LSR C1/F38F: 4A LSR C1/F390: 4A LSR C1/F391: 4A LSR C1/F392: AA TAX C1/F393: 7C B2 F3 JMP ($F3B2,X) C1/F396: A5 12 LDA $12 C1/F398: 29 E0 AND #$E0 C1/F39A: 4A LSR C1/F39B: 4A LSR C1/F39C: 4A LSR C1/F39D: 4A LSR C1/F39E: AA TAX C1/F39F: 7C A2 F3 JMP ($F3A2,X) ; move thread jump table (normal) vect_chg: C1/F3A2: .DW $F3C2, $F3DD, $F3EF, $F40A, $F41C, $F42E, $F449, $F45B ; move thread jump table (horizontally flipped) C1/F3B2: .DW $F3EF, $F3DD, $F3C2, $F41C, $F40A, $F45B, $F449, $F42E ; [ Move Thread Down/Forward ] C1/F3C2: AE F6 7A LDX $7AF6 C1/F3C5: C2 20 REP #$20 C1/F3C7: BD 3A 6A LDA $6A3A,X ; thread x position C1/F3CA: 38 SEC C1/F3CB: E5 10 SBC $10 C1/F3CD: 9D 3A 6A STA $6A3A,X C1/F3D0: BD 3C 6A LDA $6A3C,X ; thread y position C1/F3D3: 18 CLC C1/F3D4: 65 10 ADC $10 C1/F3D6: 9D 3C 6A STA $6A3C,X C1/F3D9: 7B TDC C1/F3DA: E2 20 SEP #$20 C1/F3DC: 60 RTS ; [ Move Thread Down ] C1/F3DD: AE F6 7A LDX $7AF6 C1/F3E0: C2 20 REP #$20 C1/F3E2: BD 3C 6A LDA $6A3C,X C1/F3E5: 18 CLC C1/F3E6: 65 10 ADC $10 C1/F3E8: 9D 3C 6A STA $6A3C,X C1/F3EB: 7B TDC C1/F3EC: E2 20 SEP #$20 C1/F3EE: 60 RTS ; [ Move Thread Down/Back ] C1/F3EF: AE F6 7A LDX $7AF6 C1/F3F2: C2 20 REP #$20 C1/F3F4: BD 3A 6A LDA $6A3A,X C1/F3F7: 18 CLC C1/F3F8: 65 10 ADC $10 C1/F3FA: 9D 3A 6A STA $6A3A,X C1/F3FD: BD 3C 6A LDA $6A3C,X C1/F400: 18 CLC C1/F401: 65 10 ADC $10 C1/F403: 9D 3C 6A STA $6A3C,X C1/F406: 7B TDC C1/F407: E2 20 SEP #$20 C1/F409: 60 RTS ; [ Move Thread Forward ] C1/F40A: AE F6 7A LDX $7AF6 C1/F40D: C2 20 REP #$20 C1/F40F: BD 3A 6A LDA $6A3A,X C1/F412: 38 SEC C1/F413: E5 10 SBC $10 C1/F415: 9D 3A 6A STA $6A3A,X C1/F418: 7B TDC C1/F419: E2 20 SEP #$20 C1/F41B: 60 RTS ; [ Move Thread Back ] C1/F41C: AE F6 7A LDX $7AF6 C1/F41F: C2 20 REP #$20 C1/F421: BD 3A 6A LDA $6A3A,X C1/F424: 18 CLC C1/F425: 65 10 ADC $10 C1/F427: 9D 3A 6A STA $6A3A,X C1/F42A: 7B TDC C1/F42B: E2 20 SEP #$20 C1/F42D: 60 RTS ; [ Move Thread Up/Forward ] C1/F42E: AE F6 7A LDX $7AF6 C1/F431: C2 20 REP #$20 C1/F433: BD 3A 6A LDA $6A3A,X C1/F436: 38 SEC C1/F437: E5 10 SBC $10 C1/F439: 9D 3A 6A STA $6A3A,X C1/F43C: BD 3C 6A LDA $6A3C,X C1/F43F: 38 SEC C1/F440: E5 10 SBC $10 C1/F442: 9D 3C 6A STA $6A3C,X C1/F445: 7B TDC C1/F446: E2 20 SEP #$20 C1/F448: 60 RTS ; [ Move Thread Up ] C1/F449: AE F6 7A LDX $7AF6 C1/F44C: C2 20 REP #$20 C1/F44E: BD 3C 6A LDA $6A3C,X C1/F451: 38 SEC C1/F452: E5 10 SBC $10 C1/F454: 9D 3C 6A STA $6A3C,X C1/F457: 7B TDC C1/F458: E2 20 SEP #$20 C1/F45A: 60 RTS ; [ Move Thread Up/Back ] C1/F45B: AE F6 7A LDX $7AF6 C1/F45E: C2 20 REP #$20 C1/F460: BD 3A 6A LDA $6A3A,X C1/F463: 18 CLC C1/F464: 65 10 ADC $10 C1/F466: 9D 3A 6A STA $6A3A,X C1/F469: BD 3C 6A LDA $6A3C,X C1/F46C: 38 SEC C1/F46D: E5 10 SBC $10 C1/F46F: 9D 3C 6A STA $6A3C,X C1/F472: 7B TDC C1/F473: E2 20 SEP #$20 C1/F475: 60 RTS ; [ Battle Animation Command $87: Move Target ] ; b1 = dddxxxxx ; d: direction (0 = down/forward, 1 = down, 2 = down/back, 3 = forward, 4 = back, 5 = up/forward, 6 = up, 7 = up/back) ; x: distance - 1 magic_code07: C1/F476: A7 5B LDA [$5B] C1/F478: 85 12 STA $12 C1/F47A: 29 1F AND #$1F C1/F47C: 1A INC C1/F47D: 85 10 STA $10 C1/F47F: 64 11 STZ $11 C1/F481: A9 04 LDA #$04 C1/F483: 8D DC 64 STA $64DC ; select target C1/F486: 9C DD 64 STZ $64DD C1/F489: AE F6 7A LDX $7AF6 C1/F48C: BD 39 6A LDA $6A39,X ; attacker index C1/F48F: 80 17 BRA $F4A8 ; branch if a monster ; [ Battle Animation Command $86: Move Attacker ] ; b1 = dddxxxxx ; d: direction (0 = down/forward, 1 = down, 2 = down/back, 3 = forward, 4 = back, 5 = up/forward, 6 = up, 7 = up/back) ; x: distance - 1 magic_code06: C1/F491: A7 5B LDA [$5B] C1/F493: 85 12 STA $12 C1/F495: 29 1F AND #$1F C1/F497: 1A INC C1/F498: 85 10 STA $10 ; +$10 = distance C1/F49A: 64 11 STZ $11 magic_code06_a: C1/F49C: 9C DC 64 STZ $64DC ; select attacker C1/F49F: 9C DD 64 STZ $64DD C1/F4A2: AE F6 7A LDX $7AF6 C1/F4A5: BD 38 6A LDA $6A38,X ; attacker index magic_code06_b: C1/F4A8: 30 2B BMI $F4D5 ; branch if a monster ; character C1/F4AA: 0A ASL C1/F4AB: 0A ASL C1/F4AC: 0A ASL C1/F4AD: 0A ASL C1/F4AE: 0A ASL C1/F4AF: A8 TAY C1/F4B0: BD 87 6F LDA $6F87,X C1/F4B3: F0 10 BEQ $F4C5 ; branch if not flipped horizontally C1/F4B5: A5 12 LDA $12 C1/F4B7: 29 E0 AND #$E0 ; direction C1/F4B9: 4A LSR C1/F4BA: 4A LSR C1/F4BB: 4A LSR C1/F4BC: 4A LSR C1/F4BD: AA TAX C1/F4BE: FC 11 F5 JSR ($F511,X) ; chracter, horizontally flipped C1/F4C1: AE F6 7A LDX $7AF6 C1/F4C4: 60 RTS C1/F4C5: A5 12 LDA $12 C1/F4C7: 29 E0 AND #$E0 ; direction C1/F4C9: 4A LSR C1/F4CA: 4A LSR C1/F4CB: 4A LSR C1/F4CC: 4A LSR C1/F4CD: AA TAX C1/F4CE: FC 01 F5 JSR ($F501,X) ; chracter, not flipped C1/F4D1: AE F6 7A LDX $7AF6 C1/F4D4: 60 RTS ; monster C1/F4D5: 29 7F AND #$7F C1/F4D7: 38 SEC C1/F4D8: E9 04 SBC #$04 C1/F4DA: 0A ASL C1/F4DB: A8 TAY C1/F4DC: BD 87 6F LDA $6F87,X C1/F4DF: F0 10 BEQ $F4F1 ; branch if not flipped horizontally C1/F4E1: A5 12 LDA $12 C1/F4E3: 29 E0 AND #$E0 ; direction C1/F4E5: 4A LSR C1/F4E6: 4A LSR C1/F4E7: 4A LSR C1/F4E8: 4A LSR C1/F4E9: AA TAX C1/F4EA: FC 31 F5 JSR ($F531,X) ; monster, horizontally flipped C1/F4ED: AE F6 7A LDX $7AF6 C1/F4F0: 60 RTS C1/F4F1: A5 12 LDA $12 C1/F4F3: 29 E0 AND #$E0 ; direction C1/F4F5: 4A LSR C1/F4F6: 4A LSR C1/F4F7: 4A LSR C1/F4F8: 4A LSR C1/F4F9: AA TAX C1/F4FA: FC 21 F5 JSR ($F521,X) ; monster, not flipped C1/F4FD: AE F6 7A LDX $7AF6 C1/F500: 60 RTS ; character movement jump table (8 movement directions, normal then horizontally flipped) pmvect_chg_tbl: C1/F501: .DW $F689, $F6A0, $F6AE, $F6C5, $F6D3, $F6E1, $F6F8, $F706 C1/F511: .DW $F6AE, $F6A0, $F689, $F6D3, $F6C5, $F706, $F6F8, $F6E1 ; monster movement jump table (8 movement directions, normal then horizontally flipped) C1/F521: .DW $F541, $F573, $F593, $F5C5, $F5E5, $F605, $F637, $F657 C1/F531: .DW $F593, $F573, $F541, $F5E5, $F5C5, $F657, $F637, $F605 ; [ Move Monster Down/Forward ] C1/F541: C2 20 REP #$20 C1/F543: B9 C3 80 LDA $80C3,Y ; monster x position C1/F546: 38 SEC C1/F547: E5 10 SBC $10 C1/F549: 99 C3 80 STA $80C3,Y C1/F54C: B9 CF 80 LDA $80CF,Y ; monster y position C1/F54F: 18 CLC C1/F550: 65 10 ADC $10 C1/F552: 99 CF 80 STA $80CF,Y C1/F555: AD F6 7A LDA $7AF6 ; thread data pointer C1/F558: 18 CLC C1/F559: 6D DC 64 ADC $64DC ; attacker/target select (0 or 4) C1/F55C: A8 TAY C1/F55D: B9 7E 6F LDA $6F7E,Y ; attacker/target x position C1/F560: 38 SEC C1/F561: E5 10 SBC $10 C1/F563: 99 7E 6F STA $6F7E,Y C1/F566: B9 80 6F LDA $6F80,Y ; attacker/target y position C1/F569: 18 CLC C1/F56A: 65 10 ADC $10 C1/F56C: 99 80 6F STA $6F80,Y C1/F56F: 7B TDC C1/F570: E2 20 SEP #$20 C1/F572: 60 RTS ; [ Move Monster Down ] C1/F573: C2 20 REP #$20 C1/F575: B9 CF 80 LDA $80CF,Y C1/F578: 18 CLC C1/F579: 65 10 ADC $10 C1/F57B: 99 CF 80 STA $80CF,Y C1/F57E: AD F6 7A LDA $7AF6 C1/F581: 18 CLC C1/F582: 6D DC 64 ADC $64DC C1/F585: A8 TAY C1/F586: B9 80 6F LDA $6F80,Y C1/F589: 18 CLC C1/F58A: 65 10 ADC $10 C1/F58C: 99 80 6F STA $6F80,Y C1/F58F: 7B TDC C1/F590: E2 20 SEP #$20 C1/F592: 60 RTS ; [ Move Monster Down/Back ] C1/F593: C2 20 REP #$20 C1/F595: B9 C3 80 LDA $80C3,Y C1/F598: 18 CLC C1/F599: 65 10 ADC $10 C1/F59B: 99 C3 80 STA $80C3,Y C1/F59E: B9 CF 80 LDA $80CF,Y C1/F5A1: 18 CLC C1/F5A2: 65 10 ADC $10 C1/F5A4: 99 CF 80 STA $80CF,Y C1/F5A7: AD F6 7A LDA $7AF6 C1/F5AA: 18 CLC C1/F5AB: 6D DC 64 ADC $64DC C1/F5AE: A8 TAY C1/F5AF: B9 7E 6F LDA $6F7E,Y C1/F5B2: 18 CLC C1/F5B3: 65 10 ADC $10 C1/F5B5: 99 7E 6F STA $6F7E,Y C1/F5B8: B9 80 6F LDA $6F80,Y C1/F5BB: 18 CLC C1/F5BC: 65 10 ADC $10 C1/F5BE: 99 80 6F STA $6F80,Y C1/F5C1: 7B TDC C1/F5C2: E2 20 SEP #$20 C1/F5C4: 60 RTS ; [ Move Monster Forward ] C1/F5C5: C2 20 REP #$20 C1/F5C7: B9 C3 80 LDA $80C3,Y C1/F5CA: 38 SEC C1/F5CB: E5 10 SBC $10 C1/F5CD: 99 C3 80 STA $80C3,Y C1/F5D0: AD F6 7A LDA $7AF6 C1/F5D3: 18 CLC C1/F5D4: 6D DC 64 ADC $64DC C1/F5D7: A8 TAY C1/F5D8: B9 7E 6F LDA $6F7E,Y C1/F5DB: 38 SEC C1/F5DC: E5 10 SBC $10 C1/F5DE: 99 7E 6F STA $6F7E,Y C1/F5E1: 7B TDC C1/F5E2: E2 20 SEP #$20 C1/F5E4: 60 RTS ; [ Move Monster Back ] C1/F5E5: C2 20 REP #$20 C1/F5E7: B9 C3 80 LDA $80C3,Y C1/F5EA: 18 CLC C1/F5EB: 65 10 ADC $10 C1/F5ED: 99 C3 80 STA $80C3,Y C1/F5F0: AD F6 7A LDA $7AF6 C1/F5F3: 18 CLC C1/F5F4: 6D DC 64 ADC $64DC C1/F5F7: A8 TAY C1/F5F8: B9 7E 6F LDA $6F7E,Y C1/F5FB: 18 CLC C1/F5FC: 65 10 ADC $10 C1/F5FE: 99 7E 6F STA $6F7E,Y C1/F601: 7B TDC C1/F602: E2 20 SEP #$20 C1/F604: 60 RTS ; [ Move Monster Up/Forward ] C1/F605: C2 20 REP #$20 C1/F607: B9 C3 80 LDA $80C3,Y C1/F60A: 38 SEC C1/F60B: E5 10 SBC $10 C1/F60D: 99 C3 80 STA $80C3,Y C1/F610: B9 CF 80 LDA $80CF,Y C1/F613: 38 SEC C1/F614: E5 10 SBC $10 C1/F616: 99 CF 80 STA $80CF,Y C1/F619: AD F6 7A LDA $7AF6 C1/F61C: 18 CLC C1/F61D: 6D DC 64 ADC $64DC C1/F620: A8 TAY C1/F621: B9 7E 6F LDA $6F7E,Y C1/F624: 38 SEC C1/F625: E5 10 SBC $10 C1/F627: 99 7E 6F STA $6F7E,Y C1/F62A: B9 80 6F LDA $6F80,Y C1/F62D: 38 SEC C1/F62E: E5 10 SBC $10 C1/F630: 99 80 6F STA $6F80,Y C1/F633: 7B TDC C1/F634: E2 20 SEP #$20 C1/F636: 60 RTS ; [ Move Monster Up ] C1/F637: C2 20 REP #$20 C1/F639: B9 CF 80 LDA $80CF,Y C1/F63C: 38 SEC C1/F63D: E5 10 SBC $10 C1/F63F: 99 CF 80 STA $80CF,Y C1/F642: AD F6 7A LDA $7AF6 C1/F645: 18 CLC C1/F646: 6D DC 64 ADC $64DC C1/F649: A8 TAY C1/F64A: B9 80 6F LDA $6F80,Y C1/F64D: 38 SEC C1/F64E: E5 10 SBC $10 C1/F650: 99 80 6F STA $6F80,Y C1/F653: 7B TDC C1/F654: E2 20 SEP #$20 C1/F656: 60 RTS ; [ Move Monster Up/Back ] C1/F657: C2 20 REP #$20 C1/F659: B9 C3 80 LDA $80C3,Y C1/F65C: 18 CLC C1/F65D: 65 10 ADC $10 C1/F65F: 99 C3 80 STA $80C3,Y C1/F662: B9 CF 80 LDA $80CF,Y C1/F665: 38 SEC C1/F666: E5 10 SBC $10 C1/F668: 99 CF 80 STA $80CF,Y C1/F66B: AD F6 7A LDA $7AF6 C1/F66E: 18 CLC C1/F66F: 6D DC 64 ADC $64DC C1/F672: A8 TAY C1/F673: B9 7E 6F LDA $6F7E,Y C1/F676: 18 CLC C1/F677: 65 10 ADC $10 C1/F679: 99 7E 6F STA $6F7E,Y C1/F67C: B9 80 6F LDA $6F80,Y C1/F67F: 18 CLC C1/F680: 65 10 ADC $10 C1/F682: 99 80 6F STA $6F80,Y C1/F685: 7B TDC C1/F686: E2 20 SEP #$20 C1/F688: 60 RTS ; [ Move Character Down/Forward ] C1/F689: C2 20 REP #$20 C1/F68B: B9 D4 61 LDA $61D4,Y ; character x offset C1/F68E: 38 SEC C1/F68F: E5 10 SBC $10 C1/F691: 99 D4 61 STA $61D4,Y C1/F694: B9 C7 61 LDA $61C7,Y ; character y offset C1/F697: 18 CLC C1/F698: 65 10 ADC $10 C1/F69A: 99 C7 61 STA $61C7,Y C1/F69D: 4C 55 F5 JMP $F555 ; [ Move Character Down ] C1/F6A0: C2 20 REP #$20 C1/F6A2: B9 C7 61 LDA $61C7,Y C1/F6A5: 18 CLC C1/F6A6: 65 10 ADC $10 C1/F6A8: 99 C7 61 STA $61C7,Y C1/F6AB: 4C 7E F5 JMP $F57E ; [ Move Character Down/Back ] C1/F6AE: C2 20 REP #$20 C1/F6B0: B9 D4 61 LDA $61D4,Y C1/F6B3: 18 CLC C1/F6B4: 65 10 ADC $10 C1/F6B6: 99 D4 61 STA $61D4,Y C1/F6B9: B9 C7 61 LDA $61C7,Y C1/F6BC: 18 CLC C1/F6BD: 65 10 ADC $10 C1/F6BF: 99 C7 61 STA $61C7,Y C1/F6C2: 4C A7 F5 JMP $F5A7 ; [ Move Character Forward ] C1/F6C5: C2 20 REP #$20 C1/F6C7: B9 D4 61 LDA $61D4,Y C1/F6CA: 38 SEC C1/F6CB: E5 10 SBC $10 C1/F6CD: 99 D4 61 STA $61D4,Y C1/F6D0: 4C D0 F5 JMP $F5D0 ; [ Move Character Back ] C1/F6D3: C2 20 REP #$20 C1/F6D5: B9 D4 61 LDA $61D4,Y C1/F6D8: 18 CLC C1/F6D9: 65 10 ADC $10 C1/F6DB: 99 D4 61 STA $61D4,Y C1/F6DE: 4C F0 F5 JMP $F5F0 ; [ Move Character Up/Forward ] C1/F6E1: C2 20 REP #$20 C1/F6E3: B9 D4 61 LDA $61D4,Y C1/F6E6: 38 SEC C1/F6E7: E5 10 SBC $10 C1/F6E9: 99 D4 61 STA $61D4,Y C1/F6EC: B9 C7 61 LDA $61C7,Y C1/F6EF: 38 SEC C1/F6F0: E5 10 SBC $10 C1/F6F2: 99 C7 61 STA $61C7,Y C1/F6F5: 4C 19 F6 JMP $F619 ; [ Move Character Up ] C1/F6F8: C2 20 REP #$20 C1/F6FA: B9 C7 61 LDA $61C7,Y C1/F6FD: 38 SEC C1/F6FE: E5 10 SBC $10 C1/F700: 99 C7 61 STA $61C7,Y C1/F703: 4C 42 F6 JMP $F642 ; [ Move Character Up/Back ] C1/F706: C2 20 REP #$20 C1/F708: B9 D4 61 LDA $61D4,Y C1/F70B: 18 CLC C1/F70C: 65 10 ADC $10 C1/F70E: 99 D4 61 STA $61D4,Y C1/F711: B9 C7 61 LDA $61C7,Y C1/F714: 38 SEC C1/F715: E5 10 SBC $10 C1/F717: 99 C7 61 STA $61C7,Y C1/F71A: 4C 6B F6 JMP $F66B ; [ Battle Animation Command $88: Move Attacker Forward (fight) ] ; b1 = frame index (0..7), ignored for magitek mode magic_code08: C1/F71D: AE F6 7A LDX $7AF6 C1/F720: BD 38 6A LDA $6A38,X ; attacker C1/F723: 30 0B BMI $F730 ; return if monster C1/F725: A8 TAY C1/F726: B9 AE 61 LDA $61AE,Y ; C1/F729: C9 01 CMP #$01 C1/F72B: F0 04 BEQ $F731 C1/F72D: AE F6 7A LDX $7AF6 C1/F730: 60 RTS C1/F731: AD F6 7A LDA $7AF6 ; pointer to animation thread data C1/F734: 29 70 AND #$70 C1/F736: F0 31 BEQ $F769 ; branch if ??? C1/F738: AD BA 64 LDA $64BA C1/F73B: F0 0C BEQ $F749 ; branch if not in magitek mode C1/F73D: A0 01 00 LDY #$0001 ; move 1 pixel C1/F740: 84 10 STY $10 C1/F742: A9 60 LDA #$60 ; move forward C1/F744: 85 12 STA $12 C1/F746: 4C 82 F3 JMP $F382 ; move thread C1/F749: A7 5B LDA [$5B] ; frame number C1/F74B: AA TAX C1/F74C: BF A3 F7 C1 LDA $C1F7A3,X C1/F750: 85 10 STA $10 ; set movement distance C1/F752: 64 11 STZ $11 C1/F754: BF AB F7 C1 LDA $C1F7AB,X C1/F758: 85 12 STA $12 ; set movement direction C1/F75A: 20 82 F3 JSR $F382 ; move thread (jump) C1/F75D: A0 03 00 LDY #$0003 ; move 3 pixels C1/F760: 84 10 STY $10 C1/F762: A9 60 LDA #$60 ; move forward C1/F764: 85 12 STA $12 C1/F766: 4C 82 F3 JMP $F382 ; move thread (forward) C1/F769: AD BA 64 LDA $64BA C1/F76C: F0 0F BEQ $F77D ; branch if not in magitek mode C1/F76E: A0 01 00 LDY #$0001 C1/F771: 84 10 STY $10 C1/F773: A9 60 LDA #$60 C1/F775: 85 12 STA $12 C1/F777: 20 9C F4 JSR $F49C ; move attacker C1/F77A: 4C 82 F3 JMP $F382 ; move thread C1/F77D: A7 5B LDA [$5B] ; frame number C1/F77F: AA TAX C1/F780: BF A3 F7 C1 LDA $C1F7A3,X C1/F784: 85 10 STA $10 ; set movement distance C1/F786: 64 11 STZ $11 C1/F788: BF AB F7 C1 LDA $C1F7AB,X C1/F78C: 85 12 STA $12 ; set movement direction C1/F78E: 20 9C F4 JSR $F49C ; move thread (jump) C1/F791: 20 82 F3 JSR $F382 ; move attacker (jump) C1/F794: A0 03 00 LDY #$0003 ; move 3 pixels C1/F797: 84 10 STY $10 C1/F799: A9 60 LDA #$60 ; move forward C1/F79B: 85 12 STA $12 C1/F79D: 20 9C F4 JSR $F49C ; move attacker (forward) C1/F7A0: 4C 82 F3 JMP $F382 ; move thread (forward) ; vertical movement distance for jump C1/F7A3: .DB $03, $03, $02, $01, $00, $02, $03, $04 ; vertical movement direction for jump C1/F7AB: .DB $C0, $C0, $C0, $C0, $C0, $20, $20, $20 ; [ Battle Animation Command $84: Set Animation Speed ] ; b1 = speed (frames per update) magic_code04: C1/F7B3: AE F6 7A LDX $7AF6 C1/F7B6: A7 5B LDA [$5B] C1/F7B8: 9D 34 6A STA $6A34,X ; animation speed C1/F7BB: 60 RTS ; [ Battle Animation Command $89: Loop Start ] ; b1 = loop count magic_code09: C1/F7BC: AE F6 7A LDX $7AF6 C1/F7BF: C2 20 REP #$20 C1/F7C1: A5 5B LDA $5B C1/F7C3: 9D 89 6F STA $6F89,X ; loop start address C1/F7C6: 7B TDC C1/F7C7: E2 20 SEP #$20 C1/F7C9: A7 5B LDA [$5B] C1/F7CB: 9D 8B 6F STA $6F8B,X ; loop count C1/F7CE: 60 RTS ; [ Battle Animation Command $9F: Animated Loop Start (loop count = number of active threads) ] ; b1 = 0 magic_code1f: C1/F7CF: AE F6 7A LDX $7AF6 C1/F7D2: C2 20 REP #$20 C1/F7D4: A5 5B LDA $5B C1/F7D6: 9D 89 6F STA $6F89,X ; loop start address C1/F7D9: 7B TDC C1/F7DA: E2 20 SEP #$20 C1/F7DC: AD 84 60 LDA $6084 ; number of active threads C1/F7DF: 9D 8B 6F STA $6F8B,X ; loop count C1/F7E2: 9E 8C 6F STZ $6F8C,X ; clear frame offset C1/F7E5: 60 RTS ; [ Battle Animation Command $8B: Animated Loop Start ] ; b1 = loop count magic_code0b: C1/F7E6: AE F6 7A LDX $7AF6 C1/F7E9: C2 20 REP #$20 C1/F7EB: A5 5B LDA $5B C1/F7ED: 9D 89 6F STA $6F89,X ; loop start address C1/F7F0: 7B TDC C1/F7F1: E2 20 SEP #$20 C1/F7F3: A7 5B LDA [$5B] C1/F7F5: 9D 8B 6F STA $6F8B,X ; loop count C1/F7F8: 9E 8C 6F STZ $6F8C,X ; clear frame offset C1/F7FB: 60 RTS ; [ Battle Animation Command $F5: Loop End (loop until no threads are active) ] magic_code75: C1/F7FC: 7B TDC C1/F7FD: AA TAX C1/F7FE: 64 22 STZ $22 C1/F800: A5 22 LDA $22 C1/F802: 1D 2E 6A ORA $6A2E,X ; thread active flag C1/F805: 85 22 STA $22 C1/F807: C2 20 REP #$20 C1/F809: 8A TXA ; next thread C1/F80A: 18 CLC C1/F80B: 69 10 00 ADC #$0010 C1/F80E: AA TAX C1/F80F: 7B TDC C1/F810: E2 20 SEP #$20 C1/F812: E0 10 05 CPX #$0510 ; loop through all sprite, bg1, and bg3 threads C1/F815: D0 E9 BNE $F800 C1/F817: AE F6 7A LDX $7AF6 C1/F81A: A5 22 LDA $22 C1/F81C: F0 0B BEQ $F829 ; branch if none were active C1/F81E: C2 20 REP #$20 C1/F820: BD 89 6F LDA $6F89,X ; loop start address C1/F823: 85 5B STA $5B C1/F825: 7B TDC C1/F826: E2 20 SEP #$20 C1/F828: 60 RTS C1/F829: A4 5B LDY $5B ; end of loop C1/F82B: 88 DEY C1/F82C: 84 5B STY $5B C1/F82E: 60 RTS ; [ Battle Animation Command $8A: Loop End ] magic_code0a: C1/F82F: AE F6 7A LDX $7AF6 C1/F832: BD 8B 6F LDA $6F8B,X ; branch if loop counter = 0 C1/F835: F0 0E BEQ $F845 C1/F837: C2 20 REP #$20 C1/F839: BD 89 6F LDA $6F89,X ; loop start address C1/F83C: 85 5B STA $5B C1/F83E: 7B TDC C1/F83F: E2 20 SEP #$20 C1/F841: DE 8B 6F DEC $6F8B,X ; decrement loop counter C1/F844: 60 RTS C1/F845: A4 5B LDY $5B ; end of loop C1/F847: 88 DEY C1/F848: 84 5B STY $5B C1/F84A: 60 RTS ; [ Battle Animation Command $8C: Animated Loop End ] magic_code0c: C1/F84B: AE F6 7A LDX $7AF6 C1/F84E: BD 8B 6F LDA $6F8B,X ; branch if loop counter = 0 C1/F851: F0 11 BEQ $F864 C1/F853: C2 20 REP #$20 C1/F855: BD 89 6F LDA $6F89,X ; loop start address C1/F858: 85 5B STA $5B C1/F85A: 7B TDC C1/F85B: E2 20 SEP #$20 C1/F85D: DE 8B 6F DEC $6F8B,X ; decrement loop counter C1/F860: FE 8C 6F INC $6F8C,X ; increment frame offset C1/F863: 60 RTS C1/F864: A4 5B LDY $5B ; end of loop C1/F866: 88 DEY C1/F867: 84 5B STY $5B C1/F869: 9E 8C 6F STZ $6F8C,X ; clear frame offset C1/F86C: 60 RTS ; [ Battle Animation Command $D2: Set Target Position ] ; b1 = x position ; b2 = y position magic_code52: C1/F86D: C2 20 REP #$20 C1/F86F: AE F6 7A LDX $7AF6 C1/F872: BD 87 6F LDA $6F87,X ; branch if thread is flipped horizontally C1/F875: 29 FF 00 AND #$00FF C1/F878: D0 0A BNE $F884 C1/F87A: A7 5B LDA [$5B] C1/F87C: 29 FF 00 AND #$00FF C1/F87F: 9D 82 6F STA $6F82,X ; target x position C1/F882: 80 0B BRA $F88F C1/F884: A7 5B LDA [$5B] C1/F886: 29 FF 00 AND #$00FF C1/F889: 49 FF 00 EOR #$00FF C1/F88C: 9D 82 6F STA $6F82,X ; target x position C1/F88F: E6 5B INC $5B C1/F891: A7 5B LDA [$5B] C1/F893: 29 FF 00 AND #$00FF C1/F896: 9D 84 6F STA $6F84,X ; target y position C1/F899: 7B TDC C1/F89A: E2 20 SEP #$20 C1/F89C: 60 RTS ; [ Battle Animation Command $85: Move to Attacker Position ] magic_code05: C1/F89D: C2 20 REP #$20 C1/F89F: AE F6 7A LDX $7AF6 C1/F8A2: BD 7E 6F LDA $6F7E,X ; attacker x position C1/F8A5: 9D 3A 6A STA $6A3A,X ; thread x position C1/F8A8: BD 80 6F LDA $6F80,X ; attacker y position C1/F8AB: 9D 3C 6A STA $6A3C,X ; thread y position C1/F8AE: C6 5B DEC $5B C1/F8B0: 7B TDC C1/F8B1: E2 20 SEP #$20 C1/F8B3: 60 RTS ; [ Battle Animation Command $91: Move This Thread to Attacker Thread Position ] magic_code11: C1/F8B4: AE F6 7A LDX $7AF6 C1/F8B7: BD 38 6A LDA $6A38,X ; attacker C1/F8BA: 29 7F AND #$7F C1/F8BC: 0A ASL C1/F8BD: AA TAX C1/F8BE: C2 20 REP #$20 C1/F8C0: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C1/F8C4: A8 TAY C1/F8C5: AE F6 7A LDX $7AF6 C1/F8C8: B9 7E 6F LDA $6F7E,Y ; attacker x position (attacker thread) C1/F8CB: 9D 7E 6F STA $6F7E,X ; attacker x position (this thread) C1/F8CE: 9D 3A 6A STA $6A3A,X ; thread x position (this thread) C1/F8D1: B9 80 6F LDA $6F80,Y ; attacker y position (attacker thread) C1/F8D4: 9D 80 6F STA $6F80,X ; attacker y position (this thread) C1/F8D7: 9D 3C 6A STA $6A3C,X ; thread x position (this thread) C1/F8DA: C6 5B DEC $5B C1/F8DC: 7B TDC C1/F8DD: E2 20 SEP #$20 C1/F8DF: 60 RTS ; [ Battle Animation Command $94: Set Vector From Attacker to Target (random location on target) ] magic_code14: C1/F8E0: AE F6 7A LDX $7AF6 C1/F8E3: BD 7E 6F LDA $6F7E,X ; attacker x position C1/F8E6: 85 7D STA $7D C1/F8E8: BD 80 6F LDA $6F80,X ; attacker y position C1/F8EB: 85 7E STA $7E C1/F8ED: 20 5B 18 JSR $185B ; update random number C1/F8F0: EB XBA C1/F8F1: BD D2 74 LDA $74D2,X ; target width C1/F8F4: 4A LSR C1/F8F5: 0A ASL C1/F8F6: 0A ASL C1/F8F7: 85 10 STA $10 C1/F8F9: 0A ASL C1/F8FA: 20 CA 18 JSR $18CA ; $4217 = A * B C1/F8FD: AF 17 42 00 LDA $004217 C1/F901: 38 SEC C1/F902: E5 10 SBC $10 C1/F904: 85 10 STA $10 C1/F906: BD 82 6F LDA $6F82,X C1/F909: 85 12 STA $12 C1/F90B: 20 4E F9 JSR $F94E C1/F90E: 85 7F STA $7F C1/F910: 20 5B 18 JSR $185B ; update random number C1/F913: EB XBA C1/F914: BD D3 74 LDA $74D3,X C1/F917: 4A LSR C1/F918: 0A ASL C1/F919: 0A ASL C1/F91A: 85 10 STA $10 C1/F91C: 0A ASL C1/F91D: 20 CA 18 JSR $18CA ; $4217 = A * B C1/F920: AF 17 42 00 LDA $004217 C1/F924: 38 SEC C1/F925: E5 10 SBC $10 C1/F927: 85 10 STA $10 C1/F929: BD 84 6F LDA $6F84,X C1/F92C: 85 12 STA $12 C1/F92E: 20 4E F9 JSR $F94E C1/F931: 85 80 STA $80 C1/F933: 20 91 6C JSR $6C91 C1/F936: AE F6 7A LDX $7AF6 C1/F939: A5 85 LDA $85 C1/F93B: 9D DB 74 STA $74DB,X C1/F93E: C2 20 REP #$20 C1/F940: A5 86 LDA $86 C1/F942: 9D DC 74 STA $74DC,X C1/F945: C6 5B DEC $5B C1/F947: 9E D9 74 STZ $74D9,X C1/F94A: 7B TDC C1/F94B: E2 20 SEP #$20 C1/F94D: 60 RTS ; [ ] get_mon_size_vect: C1/F94E: A5 10 LDA $10 C1/F950: 10 0D BPL $F95F C1/F952: A5 12 LDA $12 C1/F954: 18 CLC C1/F955: 65 10 ADC $10 C1/F957: 85 14 STA $14 C1/F959: A9 00 LDA #$00 C1/F95B: 69 01 ADC #$01 C1/F95D: 80 0B BRA $F96A C1/F95F: A5 12 LDA $12 C1/F961: 18 CLC C1/F962: 65 10 ADC $10 C1/F964: 85 14 STA $14 C1/F966: A9 00 LDA #$00 C1/F968: 69 00 ADC #$00 C1/F96A: 29 01 AND #$01 C1/F96C: F0 09 BEQ $F977 C1/F96E: A5 14 LDA $14 C1/F970: C9 F8 CMP #$F8 C1/F972: B0 0B BCS $F97F C1/F974: 4C 7D F9 JMP $F97D C1/F977: A5 14 LDA $14 C1/F979: C9 F8 CMP #$F8 C1/F97B: 90 02 BCC $F97F C1/F97D: A9 F8 LDA #$F8 C1/F97F: 60 RTS ; [ Battle Animation Command $F2: Set Vector From Target to Attacker ] magic_code72: C1/F980: AE F6 7A LDX $7AF6 C1/F983: BD 7E 6F LDA $6F7E,X ; x_2 = attacker x position C1/F986: 85 7F STA $7F C1/F988: BD 80 6F LDA $6F80,X ; y_2 = attacker y position C1/F98B: 85 80 STA $80 C1/F98D: BD 82 6F LDA $6F82,X ; x_1 = target x position C1/F990: 85 7D STA $7D C1/F992: BD 84 6F LDA $6F84,X ; y_1 = target y position C1/F995: 85 7E STA $7E C1/F997: 80 50 BRA $F9E9 ; [ Calculate Angle Between Points ] ; $85/A = angle (out) good_get_vect_long: C1/F999: 20 A2 F9 JSR $F9A2 C1/F99C: 20 91 6C JSR $6C91 C1/F99F: A5 85 LDA $85 C1/F9A1: 6B RTL ; [ Set Vector From Attacker to Target ] set_magic_code15: C1/F9A2: AE F6 7A LDX $7AF6 C1/F9A5: BD 7E 6F LDA $6F7E,X ; x_1 = attacker x position (max 255) C1/F9A8: 85 7D STA $7D C1/F9AA: BD 7F 6F LDA $6F7F,X C1/F9AD: 29 01 AND #$01 C1/F9AF: F0 04 BEQ $F9B5 C1/F9B1: A9 FF LDA #$FF C1/F9B3: 85 7D STA $7D C1/F9B5: BD 80 6F LDA $6F80,X ; y_1 = attacker y position (max 255) C1/F9B8: 85 7E STA $7E C1/F9BA: BD 81 6F LDA $6F81,X C1/F9BD: 29 01 AND #$01 C1/F9BF: F0 04 BEQ $F9C5 C1/F9C1: A9 FF LDA #$FF C1/F9C3: 85 7E STA $7E C1/F9C5: BD 82 6F LDA $6F82,X ; x_2 = target x position (max 255) C1/F9C8: 85 7F STA $7F C1/F9CA: BD 83 6F LDA $6F83,X C1/F9CD: 29 01 AND #$01 C1/F9CF: F0 04 BEQ $F9D5 C1/F9D1: A9 FF LDA #$FF C1/F9D3: 85 7F STA $7F C1/F9D5: BD 84 6F LDA $6F84,X ; y_2 = target y position (max 255) C1/F9D8: 85 80 STA $80 C1/F9DA: BD 85 6F LDA $6F85,X C1/F9DD: 29 01 AND #$01 C1/F9DF: F0 04 BEQ $F9E5 C1/F9E1: A9 FF LDA #$FF C1/F9E3: 85 80 STA $80 C1/F9E5: 60 RTS ; [ Battle Animation Command $95: Set Vector From Attacker to Target ] magic_code15: C1/F9E6: 20 A2 F9 JSR $F9A2 ; set vector from attacker to target magic_code15_main: C1/F9E9: 20 91 6C JSR $6C91 ; calculate hypotenuse and angle C1/F9EC: AE F6 7A LDX $7AF6 C1/F9EF: A5 88 LDA $88 ; dx C1/F9F1: 9D D7 74 STA $74D7,X C1/F9F4: A5 85 LDA $85 C1/F9F6: 9D DB 74 STA $74DB,X ; angle C1/F9F9: C2 20 REP #$20 C1/F9FB: A5 86 LDA $86 ; hypotenuse C1/F9FD: 9D DC 74 STA $74DC,X ; calculated magnitude C1/FA00: C6 5B DEC $5B C1/FA02: 9E D9 74 STZ $74D9,X ; clear current vector position C1/FA05: 7B TDC C1/FA06: E2 20 SEP #$20 C1/FA08: 60 RTS ; [ Move Thread to Vector Position ] set_magic_vector: C1/FA09: BD D9 74 LDA $74D9,X ; current vector position C1/FA0C: 85 24 STA $24 C1/FA0E: BD DA 74 LDA $74DA,X C1/FA11: 85 25 STA $25 C1/FA13: BD DB 74 LDA $74DB,X ; vector angle + 90 degrees C1/FA16: 18 CLC C1/FA17: 69 40 ADC #$40 C1/FA19: 20 67 6C JSR $6C67 ; +$28 = +$24 * sin (A) C1/FA1C: AE F6 7A LDX $7AF6 C1/FA1F: C2 20 REP #$20 C1/FA21: A5 28 LDA $28 C1/FA23: 9D CE 74 STA $74CE,X ; thread x offset C1/FA26: 7B TDC C1/FA27: E2 20 SEP #$20 C1/FA29: BD DB 74 LDA $74DB,X ; vector angle C1/FA2C: 20 67 6C JSR $6C67 ; +$28 = +$24 * sin (A) C1/FA2F: AE F6 7A LDX $7AF6 C1/FA32: C2 20 REP #$20 C1/FA34: A5 28 LDA $28 C1/FA36: 9D D0 74 STA $74D0,X ; thread y offset C1/FA39: 7B TDC C1/FA3A: E2 20 SEP #$20 C1/FA3C: 60 RTS ; [ Battle Animation Command $93: Set Position on Vector ] magic_code13: C1/FA3D: AE F6 7A LDX $7AF6 C1/FA40: A7 5B LDA [$5B] C1/FA42: 9D D9 74 STA $74D9,X ; current vector position C1/FA45: 9E DA 74 STZ $74DA,X C1/FA48: 4C 09 FA JMP $FA09 ; move thread to vector position ; [ Battle Animation Command $A0: Jump Forward Along Vector ] ; b1: speed ; b2: number of bytes to branch backwards magic_code20: C1/FA4B: AE F6 7A LDX $7AF6 C1/FA4E: 20 19 E9 JSR $E919 ; calculate jump height C1/FA51: A7 5B LDA [$5B] ; +$22 = b1 C1/FA53: 85 22 STA $22 C1/FA55: 64 23 STZ $23 C1/FA57: C2 20 REP #$20 C1/FA59: BD D9 74 LDA $74D9,X ; current vector position C1/FA5C: DD DC 74 CMP $74DC,X ; calculated vector magnitude C1/FA5F: 90 08 BCC $FA69 ; branch if thread hasn't reached target C1/FA61: E6 5B INC $5B C1/FA63: 7B TDC C1/FA64: 99 D2 61 STA $61D2,Y ; clear character y offset C1/FA67: 80 20 BRA $FA89 C1/FA69: 18 CLC C1/FA6A: 65 22 ADC $22 C1/FA6C: 9D D9 74 STA $74D9,X ; add b1 to vector position C1/FA6F: BD D0 74 LDA $74D0,X ; add value to y offset (for jumping) C1/FA72: 18 CLC C1/FA73: 65 28 ADC $28 C1/FA75: 9D D0 74 STA $74D0,X C1/FA78: A0 01 00 LDY #$0001 C1/FA7B: B7 5B LDA [$5B],Y ; branch backwards C1/FA7D: 29 FF 00 AND #$00FF C1/FA80: 85 22 STA $22 C1/FA82: A5 5B LDA $5B C1/FA84: 38 SEC C1/FA85: E5 22 SBC $22 C1/FA87: 85 5B STA $5B C1/FA89: 7B TDC C1/FA8A: E2 20 SEP #$20 C1/FA8C: AE F6 7A LDX $7AF6 C1/FA8F: 60 RTS ; [ Battle Animation Command $A1: Jump Backward Along Vector ] ; b1: speed ; b2: number of bytes to branch backwards magic_code21: C1/FA90: AE F6 7A LDX $7AF6 C1/FA93: 20 19 E9 JSR $E919 ; calculate jump height C1/FA96: A7 5B LDA [$5B] C1/FA98: 85 22 STA $22 C1/FA9A: 64 23 STZ $23 C1/FA9C: C2 20 REP #$20 C1/FA9E: BD D9 74 LDA $74D9,X ; polar radius C1/FAA1: 38 SEC C1/FAA2: E5 22 SBC $22 C1/FAA4: 9D D9 74 STA $74D9,X ; C1/FAA7: 10 11 BPL $FABA C1/FAA9: E6 5B INC $5B C1/FAAB: AC F8 7A LDY $7AF8 C1/FAAE: 7B TDC C1/FAAF: 99 C5 61 STA $61C5,Y C1/FAB2: 99 C7 61 STA $61C7,Y C1/FAB5: 99 D2 61 STA $61D2,Y C1/FAB8: 80 1A BRA $FAD4 C1/FABA: BD D0 74 LDA $74D0,X C1/FABD: 18 CLC C1/FABE: 65 28 ADC $28 C1/FAC0: 9D D0 74 STA $74D0,X C1/FAC3: A0 01 00 LDY #$0001 C1/FAC6: B7 5B LDA [$5B],Y C1/FAC8: 29 FF 00 AND #$00FF C1/FACB: 85 22 STA $22 C1/FACD: A5 5B LDA $5B C1/FACF: 38 SEC C1/FAD0: E5 22 SBC $22 C1/FAD2: 85 5B STA $5B C1/FAD4: 7B TDC C1/FAD5: E2 20 SEP #$20 C1/FAD7: AE F6 7A LDX $7AF6 C1/FADA: 60 RTS ; [ Battle Animation Command $92: Move Thread Along Vector ] ; b1 = speed (diagonal pixels/frame) ; b2 = script branch for looping (number of bytes backwards, 0 for no loop) magic_code22: C1/FADB: AE F6 7A LDX $7AF6 C1/FADE: A7 5B LDA [$5B] C1/FAE0: 9D D8 74 STA $74D8,X C1/FAE3: 20 09 FA JSR $FA09 ; move thread to vector position C1/FAE6: C2 20 REP #$20 C1/FAE8: BD D8 74 LDA $74D8,X ; movement speed C1/FAEB: 29 FF 00 AND #$00FF C1/FAEE: 85 22 STA $22 C1/FAF0: BD D9 74 LDA $74D9,X ; add to vector position C1/FAF3: 18 CLC C1/FAF4: 65 22 ADC $22 C1/FAF6: 9D D9 74 STA $74D9,X ; current vector position C1/FAF9: DD DC 74 CMP $74DC,X ; branch if less than calculated vector position C1/FAFC: 90 04 BCC $FB02 C1/FAFE: E6 5B INC $5B C1/FB00: 80 17 BRA $FB19 C1/FB02: A0 01 00 LDY #$0001 C1/FB05: B7 5B LDA [$5B],Y ; script branch C1/FB07: 29 FF 00 AND #$00FF C1/FB0A: 85 22 STA $22 C1/FB0C: D0 04 BNE $FB12 C1/FB0E: E6 5B INC $5B C1/FB10: 80 07 BRA $FB19 C1/FB12: A5 5B LDA $5B C1/FB14: 38 SEC C1/FB15: E5 22 SBC $22 C1/FB17: 85 5B STA $5B C1/FB19: 7B TDC C1/FB1A: E2 20 SEP #$20 C1/FB1C: 60 RTS ; [ ] set_move2_data: C1/FB1D: AE F6 7A LDX $7AF6 C1/FB20: C2 20 REP #$20 C1/FB22: BD DC 74 LDA $74DC,X ; +$24 = vector magnitude C1/FB25: 85 24 STA $24 C1/FB27: 7B TDC C1/FB28: E2 20 SEP #$20 C1/FB2A: BD D8 74 LDA $74D8,X ; A = vector angle C1/FB2D: 20 67 6C JSR $6C67 ; +$28 = +$24 * sin (A) C1/FB30: AE F6 7A LDX $7AF6 C1/FB33: C2 20 REP #$20 C1/FB35: A5 28 LDA $28 C1/FB37: 9D D9 74 STA $74D9,X ; current vector position C1/FB3A: E2 20 SEP #$20 C1/FB3C: 20 09 FA JSR $FA09 ; move thread to vector position C1/FB3F: A0 18 00 LDY #$0018 C1/FB42: 84 24 STY $24 C1/FB44: BD D8 74 LDA $74D8,X ; vector angle C1/FB47: 18 CLC C1/FB48: 69 40 ADC #$40 C1/FB4A: 0A ASL C1/FB4B: 18 CLC C1/FB4C: 69 90 ADC #$90 C1/FB4E: 20 67 6C JSR $6C67 ; +$28 = +$24 * sin (A) C1/FB51: AE F6 7A LDX $7AF6 C1/FB54: C2 20 REP #$20 C1/FB56: BD D0 74 LDA $74D0,X ; add to thread y offset C1/FB59: 18 CLC C1/FB5A: 65 28 ADC $28 C1/FB5C: 9D D0 74 STA $74D0,X C1/FB5F: 7B TDC C1/FB60: E2 20 SEP #$20 C1/FB62: 60 RTS ; [ Battle Animation Command $96: ] magic_code16: C1/FB63: 20 1D FB JSR $FB1D ; C1/FB66: BD D7 74 LDA $74D7,X ; x component of vector * 128 C1/FB69: 4A LSR C1/FB6A: 4A LSR C1/FB6B: 4A LSR C1/FB6C: 4A LSR C1/FB6D: 4A LSR C1/FB6E: 4A LSR C1/FB6F: 4A LSR C1/FB70: 85 22 STA $22 C1/FB72: A9 03 LDA #$03 ; C1/FB74: 38 SEC C1/FB75: E5 22 SBC $22 C1/FB77: 18 CLC C1/FB78: 7D D8 74 ADC $74D8,X ; add to vector angle C1/FB7B: 9D D8 74 STA $74D8,X C1/FB7E: C9 80 CMP #$80 C1/FB80: 90 06 BCC $FB88 C1/FB82: C2 20 REP #$20 C1/FB84: E6 5B INC $5B C1/FB86: 80 1C BRA $FBA4 C1/FB88: C9 40 CMP #$40 C1/FB8A: 90 05 BCC $FB91 C1/FB8C: A9 01 LDA #$01 C1/FB8E: 9D E7 64 STA $64E7,X ; sprite layer priority C1/FB91: C2 20 REP #$20 C1/FB93: A0 01 00 LDY #$0001 C1/FB96: B7 5B LDA [$5B],Y C1/FB98: 29 FF 00 AND #$00FF C1/FB9B: 85 22 STA $22 C1/FB9D: A5 5B LDA $5B C1/FB9F: 38 SEC C1/FBA0: E5 22 SBC $22 C1/FBA2: 85 5B STA $5B C1/FBA4: 7B TDC C1/FBA5: E2 20 SEP #$20 C1/FBA7: 60 RTS ; [ Battle Animation Command $98: Update Frame Offset Auto-Increment ] ; b1 = frame counter ; b2 = bbbbeeee ; b: starting frame ; e: ending frame magic_code18: C1/FBA8: AE F6 7A LDX $7AF6 C1/FBAB: DE 8D 6F DEC $6F8D,X ; decrement frame offset counter C1/FBAE: D0 21 BNE $FBD1 C1/FBB0: A7 5B LDA [$5B] C1/FBB2: 9D 8D 6F STA $6F8D,X ; set frame offset counter C1/FBB5: A0 01 00 LDY #$0001 C1/FBB8: B7 5B LDA [$5B],Y ; maximum frame C1/FBBA: 29 0F AND #$0F C1/FBBC: 85 22 STA $22 C1/FBBE: FE 8C 6F INC $6F8C,X ; increment frame offset C1/FBC1: BD 8C 6F LDA $6F8C,X C1/FBC4: C5 22 CMP $22 C1/FBC6: D0 09 BNE $FBD1 ; branch if not equal to maximum frame C1/FBC8: B7 5B LDA [$5B],Y C1/FBCA: 4A LSR C1/FBCB: 4A LSR C1/FBCC: 4A LSR C1/FBCD: 4A LSR C1/FBCE: 9D 8C 6F STA $6F8C,X ; set starting frame C1/FBD1: A4 5B LDY $5B C1/FBD3: C8 INY C1/FBD4: 84 5B STY $5B C1/FBD6: 60 RTS ; [ Battle Animation Command $97: ] magic_code17: C1/FBD7: AE F6 7A LDX $7AF6 C1/FBDA: BD D2 74 LDA $74D2,X C1/FBDD: 0A ASL C1/FBDE: 0A ASL C1/FBDF: 85 22 STA $22 C1/FBE1: BD 7E 6F LDA $6F7E,X C1/FBE4: 85 7D STA $7D C1/FBE6: BD 80 6F LDA $6F80,X C1/FBE9: 85 7E STA $7E C1/FBEB: BD 82 6F LDA $6F82,X C1/FBEE: 85 7F STA $7F C1/FBF0: BD 84 6F LDA $6F84,X C1/FBF3: 85 80 STA $80 C1/FBF5: A5 7F LDA $7F C1/FBF7: C5 7D CMP $7D C1/FBF9: 90 0F BCC $FC0A C1/FBFB: A5 7F LDA $7F C1/FBFD: 18 CLC C1/FBFE: 65 22 ADC $22 C1/FC00: 85 7F STA $7F C1/FC02: 90 0D BCC $FC11 C1/FC04: A9 F8 LDA #$F8 C1/FC06: 85 7F STA $7F C1/FC08: 80 07 BRA $FC11 C1/FC0A: A5 7F LDA $7F C1/FC0C: 38 SEC C1/FC0D: E5 22 SBC $22 C1/FC0F: 85 7F STA $7F C1/FC11: 20 91 6C JSR $6C91 C1/FC14: AE F6 7A LDX $7AF6 C1/FC17: A5 88 LDA $88 C1/FC19: 9D D7 74 STA $74D7,X C1/FC1C: A5 85 LDA $85 C1/FC1E: 9D DB 74 STA $74DB,X C1/FC21: C2 20 REP #$20 C1/FC23: A5 86 LDA $86 C1/FC25: 9D DC 74 STA $74DC,X C1/FC28: 9E D9 74 STZ $74D9,X C1/FC2B: 7B TDC C1/FC2C: E2 20 SEP #$20 C1/FC2E: A7 5B LDA [$5B] C1/FC30: 9D D8 74 STA $74D8,X C1/FC33: 20 1D FB JSR $FB1D C1/FC36: 60 RTS ; [ Battle Animation Command $99: Set Thread Palette ] ; b1 = ----ppp- magic_code19: C1/FC37: AE F6 7A LDX $7AF6 C1/FC3A: A7 5B LDA [$5B] C1/FC3C: 9D D5 74 STA $74D5,X ; thread palette C1/FC3F: 60 RTS ; [ Battle Animation Command $9A: Set Thread Facing Direction to Match Attacker ] magic_code1a: C1/FC40: AE F6 7A LDX $7AF6 C1/FC43: BD 39 6A LDA $6A39,X ; target C1/FC46: 10 11 BPL $FC59 ; branch if a character C1/FC48: 29 0F AND #$0F C1/FC4A: 38 SEC C1/FC4B: E9 04 SBC #$04 C1/FC4D: 0A ASL C1/FC4E: A8 TAY C1/FC4F: B9 F3 80 LDA $80F3,Y ; monster facing direction C1/FC52: 59 7E 61 EOR $617E,Y C1/FC55: 49 01 EOR #$01 C1/FC57: 80 04 BRA $FC5D C1/FC59: A8 TAY C1/FC5A: B9 10 7B LDA $7B10,Y ; character facing direction C1/FC5D: 0A ASL C1/FC5E: 0A ASL C1/FC5F: 0A ASL C1/FC60: 0A ASL C1/FC61: 0A ASL C1/FC62: 0A ASL C1/FC63: 29 40 AND #$40 C1/FC65: 9D 87 6F STA $6F87,X ; thread facing direction C1/FC68: A4 5B LDY $5B C1/FC6A: 88 DEY C1/FC6B: 84 5B STY $5B C1/FC6D: 60 RTS ; [ Init Color Add/Sub Math ] ; +$14 = red value ; +$16 = green value ; +$18 = blue value init_color_set: C1/FC6E: 64 22 STZ $22 C1/FC70: 64 24 STZ $24 C1/FC72: 64 26 STZ $26 C1/FC74: A5 14 LDA $14 C1/FC76: 29 1F 00 AND #$001F C1/FC79: 85 22 STA $22 C1/FC7B: A5 16 LDA $16 C1/FC7D: 29 1F 00 AND #$001F C1/FC80: 0A ASL C1/FC81: 0A ASL C1/FC82: 0A ASL C1/FC83: 0A ASL C1/FC84: 0A ASL C1/FC85: 85 24 STA $24 C1/FC87: A5 18 LDA $18 C1/FC89: 29 1F 00 AND #$001F C1/FC8C: 0A ASL C1/FC8D: 0A ASL C1/FC8E: 0A ASL C1/FC8F: 0A ASL C1/FC90: 0A ASL C1/FC91: 0A ASL C1/FC92: 0A ASL C1/FC93: 0A ASL C1/FC94: 0A ASL C1/FC95: 0A ASL C1/FC96: 85 26 STA $26 C1/FC98: 60 RTS ; [ Subtract from Color ] ; +A = original color ; +$22 = red value ; +$24 = green value ; +$26 = blue value nor_one_downcolor_set: C1/FC99: 29 FF 7F AND #$7FFF C1/FC9C: 85 2A STA $2A ; +$2A = original color C1/FC9E: 29 1F 00 AND #$001F C1/FCA1: 38 SEC C1/FCA2: E5 22 SBC $22 ; +$28 = resulting red value C1/FCA4: 85 28 STA $28 C1/FCA6: 29 E0 7F AND #$7FE0 C1/FCA9: D0 0B BNE $FCB6 ; branch if the red value was less than zero C1/FCAB: A5 2A LDA $2A C1/FCAD: 29 E0 7F AND #$7FE0 C1/FCB0: 05 28 ORA $28 C1/FCB2: 85 2A STA $2A ; resulting color C1/FCB4: 80 07 BRA $FCBD C1/FCB6: A5 2A LDA $2A C1/FCB8: 29 E0 7F AND #$7FE0 C1/FCBB: 85 2A STA $2A C1/FCBD: A5 2A LDA $2A ; green C1/FCBF: 29 E0 03 AND #$03E0 C1/FCC2: 38 SEC C1/FCC3: E5 24 SBC $24 C1/FCC5: 85 28 STA $28 C1/FCC7: 29 1F 7C AND #$7C1F C1/FCCA: D0 0B BNE $FCD7 C1/FCCC: A5 2A LDA $2A C1/FCCE: 29 1F 7C AND #$7C1F C1/FCD1: 05 28 ORA $28 C1/FCD3: 85 2A STA $2A C1/FCD5: 80 07 BRA $FCDE C1/FCD7: A5 2A LDA $2A C1/FCD9: 29 1F 7C AND #$7C1F C1/FCDC: 85 2A STA $2A C1/FCDE: A5 2A LDA $2A C1/FCE0: 29 00 7C AND #$7C00 C1/FCE3: 38 SEC C1/FCE4: E5 26 SBC $26 C1/FCE6: 85 28 STA $28 C1/FCE8: 29 FF 83 AND #$83FF C1/FCEB: D0 0B BNE $FCF8 C1/FCED: A5 2A LDA $2A C1/FCEF: 29 FF 03 AND #$03FF C1/FCF2: 05 28 ORA $28 C1/FCF4: 85 2A STA $2A C1/FCF6: 80 07 BRA $FCFF C1/FCF8: A5 2A LDA $2A C1/FCFA: 29 FF 03 AND #$03FF C1/FCFD: 85 2A STA $2A C1/FCFF: 60 RTS ; [ Add to Color ] ; +A = original color ; +$22 = red value ; +$24 = green value ; +$26 = blue value nor_one_upcolor_set: C1/FD00: 29 FF 7F AND #$7FFF C1/FD03: 85 2A STA $2A C1/FD05: 29 1F 00 AND #$001F C1/FD08: 18 CLC C1/FD09: 65 22 ADC $22 C1/FD0B: 85 28 STA $28 C1/FD0D: 29 E0 7F AND #$7FE0 C1/FD10: D0 0B BNE $FD1D C1/FD12: A5 2A LDA $2A C1/FD14: 29 E0 7F AND #$7FE0 C1/FD17: 05 28 ORA $28 C1/FD19: 85 2A STA $2A C1/FD1B: 80 07 BRA $FD24 C1/FD1D: A5 2A LDA $2A C1/FD1F: 09 1F 00 ORA #$001F C1/FD22: 85 2A STA $2A C1/FD24: A5 2A LDA $2A C1/FD26: 29 E0 03 AND #$03E0 C1/FD29: 18 CLC C1/FD2A: 65 24 ADC $24 C1/FD2C: 85 28 STA $28 C1/FD2E: 29 1F 7C AND #$7C1F C1/FD31: D0 0B BNE $FD3E C1/FD33: A5 2A LDA $2A C1/FD35: 29 1F 7C AND #$7C1F C1/FD38: 05 28 ORA $28 C1/FD3A: 85 2A STA $2A C1/FD3C: 80 07 BRA $FD45 C1/FD3E: A5 2A LDA $2A C1/FD40: 09 E0 03 ORA #$03E0 C1/FD43: 85 2A STA $2A C1/FD45: A5 2A LDA $2A C1/FD47: 29 00 7C AND #$7C00 C1/FD4A: 18 CLC C1/FD4B: 65 26 ADC $26 C1/FD4D: 85 28 STA $28 C1/FD4F: 29 FF 83 AND #$83FF C1/FD52: D0 0B BNE $FD5F C1/FD54: A5 2A LDA $2A C1/FD56: 29 FF 03 AND #$03FF C1/FD59: 05 28 ORA $28 C1/FD5B: 85 2A STA $2A C1/FD5D: 80 07 BRA $FD66 C1/FD5F: A5 2A LDA $2A C1/FD61: 09 00 7C ORA #$7C00 C1/FD64: 85 2A STA $2A C1/FD66: 60 RTS ; ----------------------------------[ Battle Graphics: Battle Events ]---------------------------------- ; [ Battle Script Command $0F: Execute Battle Event ] ; b1 = battle event number goodanim: C1/FD67: A0 01 00 LDY #$0001 C1/FD6A: B1 76 LDA ($76),Y ; battle event number C1/FD6C: C9 1B CMP #$1B C1/FD6E: F0 07 BEQ $FD77 C1/FD70: C9 1F CMP #$1F C1/FD72: F0 03 BEQ $FD77 C1/FD74: EE EF E9 INC $E9EF ; stop battle time except for event $1B (GAU) and $1F (WREXSOUL) C1/FD77: AD 8C 62 LDA $628C ; branch if seamless scripts is enabled C1/FD7A: D0 13 BNE $FD8F C1/FD7C: 20 F3 0D JSR $0DF3 ; update HP/MP/status buffers C1/FD7F: 22 FB 01 C1 JSL $C101FB ; wait 4 frames C1/FD83: 22 FB 01 C1 JSL $C101FB C1/FD87: 22 FB 01 C1 JSL $C101FB C1/FD8B: 22 FB 01 C1 JSL $C101FB C1/FD8F: EE EF E9 INC $E9EF ; stop battle time C1/FD92: A0 01 00 LDY #$0001 C1/FD95: B1 76 LDA ($76),Y ; battle event number C1/FD97: C2 20 REP #$20 C1/FD99: 0A ASL C1/FD9A: AA TAX C1/FD9B: BF 00 98 D0 LDA $D09800,X ; get pointer to battle event script C1/FD9F: 85 8F STA $8F C1/FDA1: 7B TDC C1/FDA2: E2 20 SEP #$20 C1/FDA4: A9 D0 LDA #$D0 C1/FDA6: 85 91 STA $91 C1/FDA8: A7 8F LDA [$8F] ; get battle event script command C1/FDAA: C9 FF CMP #$FF C1/FDAC: F0 0C BEQ $FDBA ; branch if end of script C1/FDAE: 0A ASL C1/FDAF: AA TAX C1/FDB0: FC BE FD JSR ($FDBE,X) ; execute battle event command C1/FDB3: A4 8F LDY $8F ; increment event script pointer C1/FDB5: C8 INY C1/FDB6: 84 8F STY $8F C1/FDB8: 80 EE BRA $FDA8 ; next script command C1/FDBA: 9C EF E9 STZ $E9EF ; start battle time C1/FDBD: 60 RTS ; battle event command jump table drama_jmp_tbl: C1/FDBE: .DW $970C, $96C1, $FFE3, $FF78, $FF78, $FF78, $FF78, $FF60 C1/FDCE: .DW $FF60, $FF60, $FF60, $FF60, $FF60, $FE2D, $FF47, $FF55 C1/FDDE: .DW $96AD, $96AA, $FEB9, $FDE8, $FDED ; [ Battle Event Command $13: Add/Remove Character as a Target ] good_inside_mode_long: C1/FDE8: 22 E2 BA C2 JSL $C2BAE2 C1/FDEC: 60 RTS ; [ Battle Event Command $14: Show/Hide HP and Gauge ] C1/FDED: 22 4B BA C2 JSL $C2BA4B C1/FDF1: 20 8F 4A JSR $4A8F C1/FDF4: 22 87 01 C1 JSL $C10187 C1/FDF8: 60 RTS ; pointers to event animation data ; 00: terra/tritoch lightning ; 01: blizzard fist (vargas) ; 02: terra/tritoch lightning (w/o explosions) ; 03: water splash (bg1) ; 04: water splash (sprite) ; 05: bahamut ; 06: zoneseek ; 07: fenrir ; 08: shiva ; 09: kirin ; 0A: bismark ; 0B: carbunkl ; 0C: terrato ; 0D: phantom ; 0E: transform into magicite ; 0F: puff of smoke (kefka/leo) ; 10: statues lightning bolt (kefka/gestahl) ; 11: black magic swirly (kefka/gestahl) ; 12: move monster back (ultros, unused) ; 13: move monster back (ultros, unused) event_init_data: C1/FDF9: .DW $0E0E, $0E1C, $0E2A, $0E38, $0E46, $0E54, $0E62, $0E70 C1/FE09: .DW $0E7E, $0E8C, $0E9A, $0EA8, $0EB6, $0EC4, $0ED2, $1014 C1/FE19: .DW $1500, $150E, $0EEE, $0EEE ; [ Clear Battle Script Data ] clr_magic_info: C1/FE21: 7B TDC C1/FE22: AA TAX C1/FE23: 9D 6E 2C STA $2C6E,X C1/FE26: E8 INX C1/FE27: E0 10 00 CPX #$0010 C1/FE2A: D0 F7 BNE $FE23 C1/FE2C: 6B RTL ; [ Battle Event Command $0D: Event Animation ] ; b1 = event animation number ; b2 = attacker ; b3 = target C1/FE2D: 22 21 FE C1 JSL $C1FE21 ; clear battle script data C1/FE31: A0 01 00 LDY #$0001 C1/FE34: B7 8F LDA [$8F],Y ; event animation number C1/FE36: C2 20 REP #$20 C1/FE38: 0A ASL C1/FE39: AA TAX C1/FE3A: BF F9 FD C1 LDA $C1FDF9,X ; pointer to animation data C1/FE3E: 85 1E STA $1E C1/FE40: 7B TDC C1/FE41: E2 20 SEP #$20 C1/FE43: C8 INY C1/FE44: B7 8F LDA [$8F],Y ; attacker C1/FE46: 20 99 FE JSR $FE99 ; find actor C1/FE49: 8D 6F 2C STA $2C6F ; set attacker C1/FE4C: C8 INY C1/FE4D: B7 8F LDA [$8F],Y ; target C1/FE4F: 10 29 BPL $FE7A ; C1/FE51: AD 6F 2C LDA $2C6F C1/FE54: 20 09 1A JSR $1A09 C1/FE57: 8D 70 2C STA $2C70 C1/FE5A: 8D 72 2C STA $2C72 C1/FE5D: 8D 3D 61 STA $613D C1/FE60: 9C 3E 61 STZ $613E C1/FE63: A9 00 LDA #$00 C1/FE65: 8D 6E 2C STA $2C6E C1/FE68: B7 8F LDA [$8F],Y ; target C1/FE6A: C9 FF CMP #$FF C1/FE6C: D0 1D BNE $FE8B C1/FE6E: A9 80 LDA #$80 C1/FE70: 8D 6E 2C STA $2C6E C1/FE73: A9 04 LDA #$04 C1/FE75: 8D 6F 2C STA $2C6F C1/FE78: 80 11 BRA $FE8B C1/FE7A: 8D 71 2C STA $2C71 C1/FE7D: 8D 73 2C STA $2C73 C1/FE80: 8D 3E 61 STA $613E C1/FE83: 9C 3D 61 STZ $613D C1/FE86: A9 40 LDA #$40 C1/FE88: 8D 6E 2C STA $2C6E C1/FE8B: C2 20 REP #$20 C1/FE8D: E6 8F INC $8F ; increment battle event pointer C1/FE8F: E6 8F INC $8F C1/FE91: E6 8F INC $8F C1/FE93: 7B TDC C1/FE94: E2 20 SEP #$20 C1/FE96: 4C 84 B8 JMP $B884 ; execute event animation ; [ Find Actor ] get_cas_chg_local: C1/FE99: 85 10 STA $10 C1/FE9B: 7B TDC C1/FE9C: AA TAX C1/FE9D: 64 12 STZ $12 C1/FE9F: A5 10 LDA $10 C1/FEA1: DD C6 2E CMP $2EC6,X C1/FEA4: F0 0E BEQ $FEB4 ; branch if actor matches C1/FEA6: E6 12 INC $12 C1/FEA8: 8A TXA C1/FEA9: 18 CLC C1/FEAA: 69 20 ADC #$20 C1/FEAC: AA TAX C1/FEAD: E0 80 00 CPX #$0080 C1/FEB0: D0 ED BNE $FE9F C1/FEB2: 7B TDC C1/FEB3: 60 RTS C1/FEB4: A5 12 LDA $12 C1/FEB6: 29 03 AND #$03 C1/FEB8: 60 RTS ; [ Battle Event Command $12: Animations for All Characters ] C1/FEB9: 7B TDC C1/FEBA: AA TAX C1/FEBB: A8 TAY C1/FEBC: AD 92 61 LDA $6192 ; visible characters C1/FEBF: 3F 01 1A C1 AND $C11A01,X C1/FEC3: F0 3D BEQ $FF02 C1/FEC5: B9 AE 2E LDA $2EAE,Y ; character graphics index C1/FEC8: C9 FF CMP #$FF C1/FECA: F0 36 BEQ $FF02 C1/FECC: AD 8D 62 LDA $628D ; victory fanfare C1/FECF: D0 09 BNE $FEDA C1/FED1: AD BA 64 LDA $64BA ; magitek mode C1/FED4: F0 04 BEQ $FEDA C1/FED6: A9 16 LDA #$16 C1/FED8: 80 15 BRA $FEEF C1/FEDA: B9 C7 2E LDA $2EC7,Y ; character ai enabled C1/FEDD: D0 07 BNE $FEE6 C1/FEDF: B9 BD 2E LDA $2EBD,Y ; status 1 (wound/petrify) C1/FEE2: 29 C0 AND #$C0 C1/FEE4: F0 04 BEQ $FEEA C1/FEE6: A9 17 LDA #$17 C1/FEE8: 80 05 BRA $FEEF C1/FEEA: B9 AE 2E LDA $2EAE,Y ; character graphics index C1/FEED: 29 1F AND #$1F C1/FEEF: 0A ASL C1/FEF0: 1A INC C1/FEF1: 5A PHY C1/FEF2: A8 TAY C1/FEF3: C2 20 REP #$20 C1/FEF5: B7 8F LDA [$8F],Y C1/FEF7: 85 24 STA $24 C1/FEF9: 7B TDC C1/FEFA: E2 20 SEP #$20 C1/FEFC: DA PHX C1/FEFD: 20 1B FF JSR $FF1B C1/FF00: FA PLX C1/FF01: 7A PLY C1/FF02: E8 INX C1/FF03: 98 TYA C1/FF04: 18 CLC C1/FF05: 69 20 ADC #$20 C1/FF07: A8 TAY C1/FF08: C0 80 00 CPY #$0080 C1/FF0B: D0 AF BNE $FEBC C1/FF0D: C2 20 REP #$20 C1/FF0F: A5 8F LDA $8F C1/FF11: 18 CLC C1/FF12: 69 30 00 ADC #$0030 C1/FF15: 85 8F STA $8F C1/FF17: 7B TDC C1/FF18: E2 20 SEP #$20 C1/FF1A: 60 RTS ; [ ] good_start_init_set: C1/FF1B: 8A TXA C1/FF1C: 85 10 STA $10 C1/FF1E: 8D 3F 61 STA $613F C1/FF21: C2 20 REP #$20 C1/FF23: 0A ASL C1/FF24: 0A ASL C1/FF25: 0A ASL C1/FF26: 0A ASL C1/FF27: 0A ASL C1/FF28: 0A ASL C1/FF29: 0A ASL C1/FF2A: AA TAX C1/FF2B: A9 01 01 LDA #$0101 C1/FF2E: 85 22 STA $22 C1/FF30: 7B TDC C1/FF31: E2 20 SEP #$20 C1/FF33: A5 10 LDA $10 C1/FF35: 8D 6F 2C STA $2C6F C1/FF38: 9C 6E 2C STZ $2C6E C1/FF3B: A9 D0 LDA #$D0 C1/FF3D: 85 26 STA $26 C1/FF3F: 20 C4 B1 JSR $B1C4 C1/FF42: 60 RTS ; [ Clear Animations (long access) ] good_init_long: C1/FF43: 20 47 FF JSR $FF47 C1/FF46: 6B RTL ; [ Battle Event Command $0E: Clear Animations ] good_init: C1/FF47: 22 24 91 C1 JSL $C19124 C1/FF4B: 20 33 A0 JSR $A033 ; clear animation frame data C1/FF4E: 4C 9E 9C JMP $9C9E ; deactivate all animation threads ; [ Execute Animations (long access) ] go_action_long: C1/FF51: 20 55 FF JSR $FF55 C1/FF54: 6B RTL ; [ Battle Event Command $0F: Execute Animations ] go_action: C1/FF55: 20 53 C6 JSR $C653 ; execute battle animation script C1/FF58: 9C 7D 62 STZ $627D C1/FF5B: 22 37 91 C1 JSL $C19137 C1/FF5F: 60 RTS ; [ Battle Event Command $07-$0C: Monster Animation ] ; b0 = 7 + monster number ; b1 = ; +b2 = pointer to animation data C1/FF60: A7 8F LDA [$8F] C1/FF62: 38 SEC C1/FF63: E9 03 SBC #$03 C1/FF65: 48 PHA C1/FF66: A0 01 00 LDY #$0001 C1/FF69: B7 8F LDA [$8F],Y C1/FF6B: 18 CLC C1/FF6C: 69 04 ADC #$04 C1/FF6E: 85 10 STA $10 C1/FF70: 09 80 ORA #$80 C1/FF72: 8D 3F 61 STA $613F C1/FF75: 4C A9 FF JMP $FFA9 ; [ Battle Event Command $03-$06: Character Animation ] ; b0 = 3 + character number ; b1 = actor number ; +b2 = pointer to animation data C1/FF78: A7 8F LDA [$8F] C1/FF7A: 38 SEC C1/FF7B: E9 03 SBC #$03 C1/FF7D: 48 PHA C1/FF7E: A0 01 00 LDY #$0001 C1/FF81: B7 8F LDA [$8F],Y C1/FF83: 85 10 STA $10 C1/FF85: 7B TDC C1/FF86: AA TAX C1/FF87: A8 TAY C1/FF88: B9 C6 2E LDA $2EC6,Y C1/FF8B: C5 10 CMP $10 C1/FF8D: F0 14 BEQ $FFA3 C1/FF8F: 98 TYA C1/FF90: 18 CLC C1/FF91: 69 20 ADC #$20 C1/FF93: A8 TAY C1/FF94: E8 INX C1/FF95: E0 04 00 CPX #$0004 C1/FF98: D0 EE BNE $FF88 C1/FF9A: 68 PLA C1/FF9B: A4 8F LDY $8F C1/FF9D: C8 INY C1/FF9E: C8 INY C1/FF9F: C8 INY C1/FFA0: 84 8F STY $8F C1/FFA2: 60 RTS C1/FFA3: 8A TXA C1/FFA4: 85 10 STA $10 C1/FFA6: 8D 3F 61 STA $613F C1/FFA9: 68 PLA C1/FFAA: C2 20 REP #$20 C1/FFAC: 0A ASL C1/FFAD: 0A ASL C1/FFAE: 0A ASL C1/FFAF: 0A ASL C1/FFB0: 0A ASL C1/FFB1: 0A ASL C1/FFB2: 0A ASL C1/FFB3: AA TAX C1/FFB4: A9 01 01 LDA #$0101 C1/FFB7: 85 22 STA $22 C1/FFB9: E6 8F INC $8F C1/FFBB: E6 8F INC $8F C1/FFBD: A7 8F LDA [$8F] C1/FFBF: 85 24 STA $24 C1/FFC1: E6 8F INC $8F C1/FFC3: 7B TDC C1/FFC4: E2 20 SEP #$20 C1/FFC6: A5 10 LDA $10 C1/FFC8: 8D 6F 2C STA $2C6F C1/FFCB: C9 04 CMP #$04 C1/FFCD: 90 08 BCC $FFD7 C1/FFCF: 09 80 ORA #$80 C1/FFD1: 85 10 STA $10 C1/FFD3: A9 C0 LDA #$C0 C1/FFD5: 80 01 BRA $FFD8 C1/FFD7: 7B TDC C1/FFD8: 8D 6E 2C STA $2C6E C1/FFDB: A9 D0 LDA #$D0 C1/FFDD: 85 26 STA $26 C1/FFDF: 20 C4 B1 JSR $B1C4 C1/FFE2: 60 RTS ; [ Battle Event Command $02: No Effect ] C1/FFE3: 60 RTS C1/FFE4: 60 RTS ; -------------------------------------------[ Battle: Main ]------------------------------------------- C2/0000: 4C 0C 00 JMP $000C ; battle C2/0003: 4C 1B 11 JMP $111B ; update battle time C2/0006: 4C 77 0E JMP $0E77 ; update character battle stats C2/0009: 4C 30 47 JMP $4730 ; calculate item/spell effect ; [ Battle ] _Kernel: C2/000C: 08 PHP C2/000D: E2 30 SEP #$30 C2/000F: A9 7E LDA #$7E C2/0011: 48 PHA C2/0012: AB PLB C2/0013: 20 1E 26 JSR $261E ; clear battle data C2/0016: 20 ED 23 JSR $23ED ; init battle RAM ; start of main battle loop C2/0019: E6 BE INC $BE ; increment random number C2/001B: AD 02 34 LDA $3402 ; decrement quick counter C2/001E: D0 03 BNE $0023 C2/0020: CE 02 34 DEC $3402 C2/0023: A9 01 LDA #$01 C2/0025: 20 11 64 JSR $6411 ; do battle graphics command $01 (wait for vblank) C2/0028: 20 95 20 JSR $2095 ; update character battle stats C2/002B: AD 58 3A LDA $3A58 ; branch if no menus need to be updated C2/002E: F0 03 BEQ $0033 C2/0030: 20 CC 00 JSR $00CC ; update menus C2/0033: AD 0A 34 LDA $340A ; immediate action C2/0036: C9 FF CMP #$FF C2/0038: F0 03 BEQ $003D C2/003A: 4C 63 21 JMP $2163 ; execute immediate action C2/003D: A9 04 LDA #$04 C2/003F: 1C 46 3A TRB $3A46 C2/0042: F0 05 BEQ $0049 ; branch if GAU just appeared ($3A46.2) C2/0044: 20 91 0A JSR $0A91 ; clear all pending actions when GAU appears on the veldt C2/0047: 80 D0 BRA $0019 ; counterattack C2/0049: AE 07 34 LDX $3407 ; current counterattacker C2/004C: 10 11 BPL $005F C2/004E: AE 68 3A LDX $3A68 ; counterattack queue pointer C2/0051: EC 69 3A CPX $3A69 C2/0054: F0 0C BEQ $0062 C2/0056: EE 68 3A INC $3A68 C2/0059: BD 20 39 LDA $3920,X ; counterattack queue C2/005C: 30 F0 BMI $004E ; continue if empty C2/005E: AA TAX C2/005F: 4C 7B 4B JMP $4B7B ; execute counterattack ; C2/0062: AD 3A 3A LDA $3A3A C2/0065: 2D 2F 2F AND $2F2F C2/0068: F0 05 BEQ $006F C2/006A: 1C 2F 2F TRB $2F2F C2/006D: 80 AA BRA $0019 C2/006F: A9 20 LDA #$20 C2/0071: 14 B0 TRB $B0 C2/0073: F0 08 BEQ $007D C2/0075: 20 73 5C JSR $5C73 ; update run difficulty C2/0078: A9 06 LDA #$06 C2/007A: 20 11 64 JSR $6411 ; do battle graphics command $06 (update monster names) C2/007D: A9 04 LDA #$04 C2/007F: 14 B0 TRB $B0 C2/0081: 20 ED 47 JSR $47ED ; check if battle is over C2/0084: A9 FF LDA #$FF C2/0086: A2 03 LDX #$03 C2/0088: 9D FC 33 STA $33FC,X ; clear ??? targets C2/008B: CA DEX C2/008C: 10 FA BPL $0088 C2/008E: A9 01 LDA #$01 ; clear counterattack flag C2/0090: 14 B1 TRB $B1 ; advance wait command C2/0092: AE 64 3A LDX $3A64 ; advance wait queue start C2/0095: EC 65 3A CPX $3A65 C2/0098: F0 0C BEQ $00A6 ; branch if equal to advance wait queue end C2/009A: EE 64 3A INC $3A64 ; increment advance wait queue start C2/009D: BD 20 37 LDA $3720,X ; get next advance wait queue action C2/00A0: 30 F0 BMI $0092 ; loop if no action C2/00A2: AA TAX C2/00A3: 4C 88 21 JMP $2188 ; execute advance wait action ; action C2/00A6: AE 06 34 LDX $3406 ; currently acting character/monster C2/00A9: 10 17 BPL $00C2 ; branch if valid C2/00AB: AE 66 3A LDX $3A66 ; action queue start C2/00AE: EC 67 3A CPX $3A67 ; branch if not equal to action queue end C2/00B1: D0 06 BNE $00B9 C2/00B3: 9C 95 3A STZ $3A95 ; all actions are complete, allow battle to end C2/00B6: 4C 19 00 JMP $0019 C2/00B9: EE 66 3A INC $3A66 ; increment action queue pointer C2/00BC: BD 20 38 LDA $3820,X ; action queue C2/00BF: 30 EA BMI $00AB ; branch if not a valid action C2/00C1: AA TAX C2/00C2: 4C F9 00 JMP $00F9 ; execute action ; [ Fade Out and Terminate Battle ] C2/00C5: A9 09 LDA #$09 C2/00C7: 20 11 64 JSR $6411 ; do battle graphics command $09 (fade out and terminate battle) C2/00CA: 28 PLP C2/00CB: 6B RTL ; [ Update Menus ] _CommandWrite: C2/00CC: A2 06 LDX #$06 C2/00CE: BD 18 30 LDA $3018,X ; character mask C2/00D0: 1C 58 3A TRB $3A58 ; disable menu update for character C2/00D4: F0 09 BEQ $00DF ; skip if menu doesn't need to be updated C2/00D6: 86 10 STX $10 C2/00D8: 46 10 LSR $10 C2/00DA: A9 0B LDA #$0B ; graphics command $0B (update menu) C2/00DC: 20 11 64 JSR $6411 ; do battle graphics command C2/00DF: CA DEX ; next character C2/00E0: CA DEX C2/00E1: 10 EB BPL $00CE C2/00E3: 60 RTS ; create advance wait action for jump C2/00E4: 0C 2C 3F TSB $3F2C C2/00E7: E2 20 SEP #$20 C2/00E9: BD A0 3A LDA $3AA0,X C2/00EC: 09 08 ORA #$08 ; set $3AA0.3 C2/00EE: 29 DF AND #$DF ; clear $3AA0.5 C2/00F0: 9D A0 3A STA $3AA0,X C2/00F3: 9E B5 3A STZ $3AB5,X ; clear advance wait counter C2/00F6: 4C 66 4E JMP $4E66 ; add action to advance wait queue ; [ Execute Action ] ; called when an action reaches the top of the queue ; X = pointer to character/monster data _Action: C2/00F9: 38 SEC C2/00FA: 6E 06 34 ROR $3406 ; C2/00FD: F4 18 00 PEA $0018 ; push return address to stack (start of main loop) C2/0100: A9 12 LDA #$12 C2/0102: 85 B5 STA $B5 C2/0104: 8D 7C 3A STA $3A7C C2/0107: BD CC 32 LDA $32CC,X ; command list pointer C2/010A: 30 77 BMI $0183 ; branch if not valid C2/010C: 0A ASL C2/010D: A8 TAY C2/010E: B9 20 34 LDA $3420,Y ; command index C2/0111: C9 12 CMP #$12 C2/0113: D0 03 BNE $0118 ; branch if not mimic C2/0115: 20 D9 01 JSR $01D9 ; C2/0118: 38 SEC C2/0119: 20 76 02 JSR $0276 ; init queued action C2/011C: C9 1F CMP #$1F C2/011E: D0 1E BNE $013E ; branch if command is not $1F (random attack) C2/0120: 20 01 03 JSR $0301 ; remove next pending action from command list C2/0123: AD 97 3A LDA $3A97 C2/0126: D0 0C BNE $0134 ; branch if a colosseum battle C2/0128: BD 95 33 LDA $3395,X C2/012B: 10 07 BPL $0134 C2/012D: BD E5 3E LDA $3EE5,X C2/0130: 89 30 BIT #$30 C2/0132: F0 05 BEQ $0139 C2/0134: 20 34 06 JSR $0634 ; choose monster confused attack C2/0137: 80 C7 BRA $0100 C2/0139: 20 DC 02 JSR $02DC ; execute ai C2/013C: 80 C2 BRA $0100 C2/013E: C9 16 CMP #$16 ; branch if command is not $16 (jump) C2/0140: D0 0C BNE $014E C2/0142: C2 20 REP #$20 C2/0144: BD 18 30 LDA $3018,X C2/0147: 1C 2C 3F TRB $3F2C C2/014A: F0 98 BEQ $00E4 ; create advance wait action for jump C2/014C: E2 20 SEP #$20 C2/014E: BD CC 32 LDA $32CC,X ; command list pointer C2/0151: A8 TAY C2/0152: B9 84 31 LDA $3184,Y ; command list C2/0155: DD CC 32 CMP $32CC,X C2/0158: D0 13 BNE $016D ; branch if more than one action pending C2/015A: A9 80 LDA #$80 ; C2/015C: 14 B1 TRB $B1 C2/015E: A9 FF LDA #$FF C2/0160: EC 04 34 CPX $3404 C2/0163: D0 08 BNE $016D ; branch if target is not quick C2/0165: CE 02 34 DEC $3402 ; decrement quick counter C2/0168: D0 03 BNE $016D ; branch if this wasn't the last quick action C2/016A: 8D 04 34 STA $3404 ; clear quick target C2/016D: EB XBA ; B = next pending action in command list ($FF if no actions pending) C2/016E: BD A0 3A LDA $3AA0,X C2/0171: 89 50 BIT #$50 C2/0173: F0 05 BEQ $017A ; branch if $3AA0.4 and $3AA0.6 are clear C2/0175: A9 80 LDA #$80 ; set $3AA1.7 C2/0177: 4C AB 5B JMP $5BAB C2/017A: A9 FF LDA #$FF ; clear entry in command list C2/017C: 99 84 31 STA $3184,Y C2/017F: EB XBA C2/0180: 9D CC 32 STA $32CC,X ; set new command list pointer ($FF if no actions pending) C2/0183: BD A0 3A LDA $3AA0,X ; C2/0186: 29 D7 AND #$D7 ; clear $3AA0.3 and $3AA0.5 C2/0188: 09 40 ORA #$40 ; set $3AA0.6 C2/018A: 9D A0 3A STA $3AA0,X C2/018D: 4A LSR C2/018E: 90 16 BCC $01A6 ; branch if target is not present C2/0190: BD 04 32 LDA $3204,X C2/0193: 09 04 ORA #$04 C2/0195: 9D 04 32 STA $3204,X C2/0198: BD 05 32 LDA $3205,X ; set $3205.7 C2/019B: 09 80 ORA #$80 C2/019D: 9D 05 32 STA $3205,X C2/01A0: 20 D3 13 JSR $13D3 ; execute command C2/01A3: 20 1E 02 JSR $021E ; update mimic data C2/01A6: A9 A0 LDA #$A0 ; C2/01A8: 04 B0 TSB $B0 C2/01AA: A9 10 LDA #$10 C2/01AC: 1C 46 3A TRB $3A46 C2/01AF: D0 06 BNE $01B7 ; branch if $3A46.4 is set (sonic dive) C2/01B1: BD CC 32 LDA $32CC,X ; branch if target still has pending actions C2/01B4: 1A INC C2/01B5: D0 1E BNE $01D5 C2/01B7: BD A0 3A LDA $3AA0,X ; $3AA0.3 branch if atb gauge is stopped C2/01BA: 89 08 BIT #$08 C2/01BC: D0 08 BNE $01C6 C2/01BE: FE 19 32 INC $3219,X ; reset atb gauge C2/01C1: D0 03 BNE $01C6 C2/01C3: DE 19 32 DEC $3219,X C2/01C6: A9 FF LDA #$FF C2/01C8: 9D 2C 32 STA $322C,X ; disable advance wait C2/01CB: 9E B5 3A STZ $3AB5,X ; clear advance wait counter C2/01CE: A9 80 LDA #$80 ; C2/01D0: 14 B0 TRB $B0 C2/01D2: 4C 67 02 JMP $0267 ; move character back after attacking C2/01D5: 8E 06 34 STX $3406 ; currently acting character/monster C2/01D8: 60 RTS ; [ ] ; something with mimic MimicReplace: C2/01D9: AD 28 3F LDA $3F28 C2/01DC: C9 16 CMP #$16 ; branch if command wasn't jump C2/01DE: D0 11 BNE $01F1 C2/01E0: C2 20 REP #$20 C2/01E2: AD 28 3F LDA $3F28 C2/01E5: 99 20 34 STA $3420,Y C2/01E8: AD 2A 3F LDA $3F2A C2/01EB: 99 20 35 STA $3520,Y C2/01EE: E2 20 SEP #$20 C2/01F0: 60 RTS C2/01F1: C2 20 REP #$20 C2/01F3: AD 20 3F LDA $3F20 C2/01F6: 99 20 34 STA $3420,Y C2/01F9: AD 22 3F LDA $3F22 C2/01FC: 99 20 35 STA $3520,Y C2/01FF: E2 20 SEP #$20 C2/0201: AD 24 3F LDA $3F24 C2/0204: C9 12 CMP #$12 C2/0206: F0 D0 BEQ $01D8 C2/0208: C2 20 REP #$20 C2/020A: AD 24 3F LDA $3F24 C2/020D: 8D 7A 3A STA $3A7A C2/0210: AD 26 3F LDA $3F26 C2/0213: 85 B8 STA $B8 C2/0215: E2 20 SEP #$20 C2/0217: A9 40 LDA #$40 C2/0219: 04 B1 TSB $B1 C2/021B: 4C CB 4E JMP $4ECB ; create normal action ; [ Update Mimic Data ] _MimicInstall: C2/021E: DA PHX C2/021F: 08 PHP C2/0220: E0 08 CPX #$08 C2/0222: B0 40 BCS $0264 ; return if attacker was a monster C2/0224: AD 7C 3A LDA $3A7C C2/0227: C9 1E CMP #$1E C2/0229: B0 39 BCS $0264 ; return for command >= $1E C2/022B: 0A ASL C2/022C: AA TAX C2/022D: BF 00 FE CF LDA $CFFE00,X ; return if command can't be mimicked C2/0231: 89 02 BIT #$02 C2/0233: F0 2F BEQ $0264 C2/0235: A9 12 LDA #$12 ; command $12 (mimic) C2/0237: 8D 28 3F STA $3F28 C2/023A: AD 7C 3A LDA $3A7C ; branch if command is $17 (x-magic) C2/023D: C9 17 CMP #$17 C2/023F: F0 15 BEQ $0256 C2/0241: A9 12 LDA #$12 C2/0243: 8D 24 3F STA $3F24 ; C2/0246: C2 20 REP #$20 C2/0248: AD 7C 3A LDA $3A7C ; save last command/attack C2/024B: 8D 20 3F STA $3F20 C2/024E: AD 30 3A LDA $3A30 ; save last targets C2/0251: 8D 22 3F STA $3F22 C2/0254: 80 0E BRA $0264 C2/0256: C2 20 REP #$20 C2/0258: AD 7C 3A LDA $3A7C ; save last command/attack (x-magic) C2/025B: 8D 24 3F STA $3F24 C2/025E: AD 30 3A LDA $3A30 ; save last targets (x-magic) C2/0261: 8D 26 3F STA $3F26 C2/0264: 28 PLP C2/0265: FA PLX C2/0266: 60 RTS ; [ Move Character Back After Attacking ] _ActionEnd: C2/0267: A9 0D LDA #$0D ; battle script command $0D C2/0269: 8D 6E 2D STA $2D6E C2/026C: A9 FF LDA #$FF ; battle script command $FF (end of script) C2/026E: 8D 72 2D STA $2D72 C2/0271: A9 04 LDA #$04 C2/0273: 4C 11 64 JMP $6411 ; do battle graphics command $04 (execute battle script) ; [ Init Queued Action ] ; carry set = ???, carry clear = ??? ; A = command (out) _LoadInputCommand: C2/0276: 08 PHP C2/0277: C2 20 REP #$20 C2/0279: B9 20 35 LDA $3520,Y ; targets C2/027C: 85 B8 STA $B8 C2/027E: B9 20 34 LDA $3420,Y ; command/attack C2/0281: 8D 7C 3A STA $3A7C C2/0284: 85 B5 STA $B5 C2/0286: 28 PLP C2/0287: 48 PHA C2/0288: 90 10 BCC $029A ; branch if ??? (carry set or cleared when subroutine called) C2/028A: C9 1D CMP #$1D C2/028C: B0 0C BCS $029A ; branch if command >= $1D (MagiTek) C2/028E: BD 18 30 LDA $3018,X ; character mask C2/0291: 1C 4A 3A TRB $3A4A ; remove attacker from characters/monsters with changed status C2/0294: F0 04 BEQ $029A ; branch if there were no changed statuses C2/0296: 64 B8 STZ $B8 ; clear targets ??? C2/0298: 64 B9 STZ $B9 C2/029A: B9 20 36 LDA $3620,Y ; mp cost C2/029D: 8D 4C 3A STA $3A4C C2/02A0: BD E4 3E LDA $3EE4,X ; current status 1 C2/02A3: 89 20 BIT #$20 C2/02A5: F0 33 BEQ $02DA ; return if not imp C2/02A7: A5 B5 LDA $B5 C2/02A9: C9 1E CMP #$1E ; return if command >= $1E (AI) C2/02AB: B0 2D BCS $02DA C2/02AD: DA PHX C2/02AE: 0A ASL C2/02AF: AA TAX C2/02B0: BF 00 FE CF LDA $CFFE00,X ; battle command data C2/02B4: FA PLX C2/02B5: 89 04 BIT #$04 C2/02B7: D0 21 BNE $02DA ; return if command can't be used by imp C2/02B9: 9C 4C 3A STZ $3A4C ; clear mp cost C2/02BC: DA PHX C2/02BD: 7B TDC C2/02BE: E0 08 CPX #$08 ; check if attacker is a character or monster C2/02C0: 2A ROL C2/02C1: AA TAX C2/02C2: B5 B8 LDA $B8,X ; get target byte ($B8 or $B9) C2/02C4: 3D 40 3A AND $3A40,X ; remove ally targets C2/02C7: 95 B8 STA $B8,X C2/02C9: C2 20 REP #$20 C2/02CB: 9C 7C 3A STZ $3A7C ; change command to fight C2/02CE: 64 B5 STZ $B5 C2/02D0: A5 B8 LDA $B8 C2/02D2: 20 2A 52 JSR $522A ; pick a random bit set in A C2/02D5: 85 B8 STA $B8 ; random target C2/02D7: E2 20 SEP #$20 C2/02D9: FA PLX C2/02DA: 68 PLA C2/02DB: 60 RTS ; [ Execute AI ] _ReadAction: C2/02DC: C2 20 REP #$20 C2/02DE: 9C 98 3A STZ $3A98 C2/02E1: BD 54 32 LDA $3254,X C2/02E4: 85 F0 STA $F0 C2/02E6: BD 0C 3D LDA $3D0C,X C2/02E9: 85 F2 STA $F2 C2/02EB: BD 40 32 LDA $3240,X C2/02EE: 85 F4 STA $F4 C2/02F0: 18 CLC C2/02F1: 20 2F 1A JSR $1A2F ; execute AI script C2/02F4: A5 F2 LDA $F2 C2/02F6: 9D 0C 3D STA $3D0C,X C2/02F9: E2 20 SEP #$20 C2/02FB: A5 F5 LDA $F5 C2/02FD: 9D 40 32 STA $3240,X C2/0300: 60 RTS ; [ Remove Next Pending Action from Command List ] _DeleteAction: C2/0301: BD CC 32 LDA $32CC,X ; command list pointer C2/0304: 30 15 BMI $031B ; return if no pending actions C2/0306: 5A PHY C2/0307: A8 TAY C2/0308: B9 84 31 LDA $3184,Y ; command list C2/030B: DD CC 32 CMP $32CC,X C2/030E: D0 02 BNE $0312 ; branch if multiple commands are pending C2/0310: A9 FF LDA #$FF C2/0312: 9D CC 32 STA $32CC,X ; set new command list pointer ($FF if no commands pending) C2/0315: A9 FF LDA #$FF C2/0317: 99 84 31 STA $3184,Y ; clear old command list slot C2/031A: 7A PLY C2/031B: 60 RTS ; [ Create Advance Wait Action ] _ActionInstall: C2/031C: 64 B8 STZ $B8 ; clear targets C2/031E: 64 B9 STZ $B9 C2/0320: FE 2C 32 INC $322C,X ; set the advance wait duration to zero, but only if is disabled C2/0323: F0 03 BEQ $0328 C2/0325: DE 2C 32 DEC $322C,X C2/0328: 20 41 0A JSR $0A41 ; clear def. mode C2/032B: BD 4C 3E LDA $3E4C,X ; clear runic and retort ($3E4C.0 and $3E4C.2) C2/032E: 29 FA AND #$FA C2/0330: 9D 4C 3E STA $3E4C,X C2/0333: E0 08 CPX #$08 C2/0335: 90 0D BCC $0344 ; branch if a character ; random monster action C2/0337: BD CC 32 LDA $32CC,X C2/033A: 10 1B BPL $0357 ; branch if command list pointer is valid C2/033C: A9 1F LDA #$1F ; command $1F (random attack) C2/033E: 8D 7A 3A STA $3A7A C2/0341: 4C CB 4E JMP $4ECB ; create normal action ; random character action C2/0344: BD 18 30 LDA $3018,X ; character mask C2/0347: 1C 4A 3A TRB $3A4A ; clear in targets with changed status C2/034A: BD 55 32 LDA $3255,X C2/034D: 30 03 BMI $0352 ; branch if AI pointer is not valid C2/034F: 4C DC 02 JMP $02DC ; execute AI ; no AI script C2/0352: BD CC 32 LDA $32CC,X ; command list pointer C2/0355: 30 24 BMI $037B ; branch if no pending actions C2/0357: 48 PHA C2/0358: 0A ASL C2/0359: A8 TAY C2/035A: C2 20 REP #$20 C2/035C: B9 20 35 LDA $3520,Y C2/035F: 85 B8 STA $B8 C2/0361: B9 20 34 LDA $3420,Y C2/0364: 20 E4 03 JSR $03E4 ; set advance wait timer C2/0367: A5 B8 LDA $B8 C2/0369: 99 20 35 STA $3520,Y C2/036C: E2 20 SEP #$20 C2/036E: 68 PLA C2/036F: A8 TAY C2/0370: D9 84 31 CMP $3184,Y ; command list C2/0373: F0 05 BEQ $037A ; return if this is the last pending action for this character/monster C2/0375: B9 84 31 LDA $3184,Y ; check the next pending action C2/0378: 80 DD BRA $0357 C2/037A: 60 RTS ; no pending actions C2/037B: BD F8 3E LDA $3EF8,X ; status 3 C2/037E: 4A LSR C2/037F: B0 56 BCS $03D7 ; branch if dance C2/0381: BD F9 3E LDA $3EF9,X ; status 4 C2/0384: 4A LSR C2/0385: B0 47 BCS $03CE ; branch if rage C2/0387: BD E4 3E LDA $3EE4,X ; status 1 C2/038A: 89 08 BIT #$08 C2/038C: D0 38 BNE $03C6 ; branch if magitek C2/038E: 20 20 04 JSR $0420 ; select berserk/zombie/muddled/charmed/colosseum command C2/0391: C9 17 CMP #$17 C2/0393: D0 1B BNE $03B0 ; branch if not x-magic C2/0395: 48 PHA C2/0396: EB XBA C2/0397: 48 PHA C2/0398: 48 PHA C2/0399: 9B TXY C2/039A: 20 1A 05 JSR $051A ; C2/039D: 83 01 STA $01,S C2/039F: 68 PLA C2/03A0: EB XBA C2/03A1: A9 02 LDA #$02 C2/03A3: 20 E4 03 JSR $03E4 ; set advance wait timer C2/03A6: 20 CB 4E JSR $4ECB ; create normal action C2/03A9: 64 B8 STZ $B8 C2/03AB: 64 B9 STZ $B9 C2/03AD: 68 PLA C2/03AE: EB XBA C2/03AF: 68 PLA C2/03B0: 20 B9 03 JSR $03B9 ; correct roulette command index C2/03B3: 20 E4 03 JSR $03E4 ; set advance wait timer C2/03B6: 4C CB 4E JMP $4ECB ; create normal action ; [ Correct Roulette Command Index ] _ChangeRoulette: C2/03B9: 08 PHP C2/03BA: C2 20 REP #$20 C2/03BC: C9 0C 8C CMP #$8C0C ; roulette (lore/enemy skill) C2/03BF: D0 03 BNE $03C4 C2/03C1: A9 1E 8C LDA #$8C1E ; roulette (AI) C2/03C4: 28 PLP C2/03C5: 60 RTS ; random magitek action C2/03C6: 20 84 05 JSR $0584 C2/03C9: EB XBA C2/03CA: A9 1D LDA #$1D C2/03CC: 80 10 BRA $03DE ; random rage C2/03CE: 9B TXY C2/03CF: 20 D1 05 JSR $05D1 C2/03D2: EB XBA C2/03D3: A9 10 LDA #$10 C2/03D5: 80 07 BRA $03DE ; random dance C2/03D7: 9B TXY C2/03D8: 20 9C 05 JSR $059C C2/03DB: EB XBA C2/03DC: A9 13 LDA #$13 C2/03DE: 20 E4 03 JSR $03E4 ; set advance wait timer C2/03E1: 4C CB 4E JMP $4ECB ; create normal action ; [ Set Advance Wait Timer ] _AutoTarget: C2/03E4: 08 PHP C2/03E5: E2 30 SEP #$30 C2/03E7: 8D 7A 3A STA $3A7A ; command C2/03EA: EB XBA C2/03EB: 8D 7B 3A STA $3A7B ; attack C2/03EE: EB XBA C2/03EF: C9 1E CMP #$1E ; return if command >= $1E (AI) C2/03F1: B0 2B BCS $041E C2/03F3: 48 PHA C2/03F4: DA PHX C2/03F5: AA TAX C2/03F6: BF 7B 06 C2 LDA $C2067B,X ; advance wait duration for command C2/03FA: FA PLX C2/03FB: 18 CLC C2/03FC: 7D 2C 32 ADC $322C,X ; add to advance wait duration (max $FE) C2/03FF: B0 03 BCS $0404 C2/0401: 1A INC C2/0402: D0 02 BNE $0406 C2/0404: A9 FF LDA #$FF C2/0406: 3A DEC C2/0407: 9D 2C 32 STA $322C,X C2/040A: 68 PLA C2/040B: 20 D3 26 JSR $26D3 ; init attack based on command C2/040E: A9 04 LDA #$04 C2/0410: 14 BA TRB $BA ; clear "no retarget if target becomes invalid" flag C2/0412: C2 20 REP #$20 C2/0414: A5 B8 LDA $B8 ; C2/0416: D0 06 BNE $041E C2/0418: 9C 4E 3A STZ $3A4E C2/041B: 20 7E 58 JSR $587E ; C2/041E: 28 PLP C2/041F: 60 RTS ; [ Select Berserk/Zombie/Muddled/Charmed/Colosseum Action ] ; A = command (out) ; B = attack (out) workCommand: C2/0420: 8A TXA C2/0421: EB XBA C2/0422: A9 06 LDA #$06 C2/0424: 20 81 47 JSR $4781 ; multiply A * B C2/0427: A8 TAY C2/0428: 64 FE STZ $FE C2/042A: 64 FF STZ $FF C2/042C: B9 2E 20 LDA $202E,Y ; $F6 = command 1 C2/042F: 85 F6 STA $F6 C2/0431: B9 31 20 LDA $2031,Y ; $F8 = command 2 C2/0434: 85 F8 STA $F8 C2/0436: B9 34 20 LDA $2034,Y ; $FA = command 3 C2/0439: 85 FA STA $FA C2/043B: B9 37 20 LDA $2037,Y ; $FC = command 4 C2/043E: 85 FC STA $FC C2/0440: A9 05 LDA #$05 C2/0442: 85 F5 STA $F5 C2/0444: BD E5 3E LDA $3EE5,X ; status 2 C2/0447: 0A ASL C2/0448: 0A ASL C2/0449: 85 F4 STA $F4 C2/044B: 0A ASL C2/044C: 10 04 BPL $0452 ; branch if berserk C2/044E: 64 F4 STZ $F4 C2/0450: 80 0C BRA $045E C2/0452: BD 95 33 LDA $3395,X ; charm attacker C2/0455: 49 80 EOR #$80 C2/0457: 04 F4 TSB $F4 C2/0459: AD 97 3A LDA $3A97 ; colosseum characters C2/045C: 04 F4 TSB $F4 C2/045E: 9B TXY C2/045F: DA PHX C2/0460: A2 06 LDX #$06 ; loop through each attack C2/0462: DA PHX C2/0463: B5 F6 LDA $F6,X ; command C2/0465: 48 PHA C2/0466: 30 1A BMI $0482 ; skip if command slot is empty C2/0468: 18 CLC C2/0469: 20 17 52 JSR $5217 ; get bit mask and byte number C2/046C: 3F D0 04 C2 AND $C204D0,X ; bitmask of muddled/charmed/colosseum commands C2/0470: F0 10 BEQ $0482 C2/0472: A5 F4 LDA $F4 C2/0474: 30 12 BMI $0488 ; branch if not berserk C2/0476: A3 01 LDA $01,S ; command C2/0478: 18 CLC C2/0479: 20 17 52 JSR $5217 ; get bit mask and byte number C2/047C: 3F D4 04 C2 AND $C204D4,X ; bitmask of berserk/zombie commands C2/0480: D0 06 BNE $0488 C2/0482: A9 FF LDA #$FF ; clear command C2/0484: 83 01 STA $01,S C2/0486: C6 F5 DEC $F5 ; decrement number of available commands C2/0488: 7B TDC C2/0489: A3 01 LDA $01,S ; command C2/048B: A2 08 LDX #$08 C2/048D: DF D8 04 C2 CMP $C204D8,X ; commands with special code when used randomly C2/0491: D0 06 BNE $0499 C2/0493: FC E2 04 JSR ($04E2,X) ; execute special code C2/0496: EB XBA C2/0497: 80 10 BRA $04A9 C2/0499: DF D9 04 C2 CMP $C204D9,X C2/049D: D0 06 BNE $04A5 C2/049F: FC EC 04 JSR ($04EC,X) C2/04A2: EB XBA C2/04A3: 80 04 BRA $04A9 C2/04A5: CA DEX ; next command C2/04A6: CA DEX C2/04A7: 10 E4 BPL $048D C2/04A9: 68 PLA C2/04AA: FA PLX C2/04AB: 95 F6 STA $F6,X ; command C2/04AD: EB XBA C2/04AE: 95 F7 STA $F7,X ; attack C2/04B0: CA DEX C2/04B1: CA DEX C2/04B2: 10 AE BPL $0462 C2/04B4: A5 F5 LDA $F5 C2/04B6: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/04B9: A8 TAY C2/04BA: A2 08 LDX #$08 C2/04BC: B5 F6 LDA $F6,X ; command C2/04BE: 30 03 BMI $04C3 ; skip if not valid C2/04C0: 88 DEY C2/04C1: 30 07 BMI $04CA ; branch if this is the randomly selected command C2/04C3: CA DEX C2/04C4: CA DEX C2/04C5: 10 F5 BPL $04BC C2/04C7: 7B TDC C2/04C8: 80 04 BRA $04CE C2/04CA: EB XBA C2/04CB: B5 F7 LDA $F7,X ; A = command, B = attack C2/04CD: EB XBA C2/04CE: FA PLX C2/04CF: 60 RTS ; bitmask of muddled/charmed/colosseum commands: ; fight, magic, morph, steal, capture, swdtech ; tools, blitz, runic, lore, sketch ; rage, mimic, dance, row, jump, x-magic ; gp rain, health, shock, magitek C2/04D0: .DB $ED, $3E, $DD, $2D ; bitmask of berserk/zombie commands: ; fight, capture, rage, jump, magitek C2/04D4: .DB $41, $00, $41, $20 ; commands with special code when used randomly C2/04D8: .DB $02, $17, $07, $0A, $10, $13, $0C, $03, $1D, $09 ; command special code jump pointers C2/04E2: .DW $051A, $0560, $05D1, $04F6, $0584 C2/04EC: .DW $051A, $0575, $059C, $0557, $058D ; [ Lore Command (random) ] blue_local: C2/04F6: B9 E5 3E LDA $3EE5,Y C2/04F9: 89 08 BIT #$08 C2/04FB: D0 52 BNE $054F C2/04FD: AD 87 3A LDA $3A87 C2/0500: F0 4D BEQ $054F C2/0502: 48 PHA C2/0503: C2 21 REP #$21 C2/0505: B9 2C 30 LDA $302C,Y C2/0508: 69 D8 00 ADC #$00D8 C2/050B: 85 EE STA $EE C2/050D: E2 20 SEP #$20 C2/050F: 68 PLA C2/0510: EB XBA C2/0511: A9 60 LDA #$60 C2/0513: 20 34 05 JSR $0534 C2/0516: 18 CLC C2/0517: 69 8B ADC #$8B ; condemned (first lore) C2/0519: 60 RTS ; [ Magic/X-Magic Command (random) ] magic_local: C2/051A: B9 E5 3E LDA $3EE5,Y C2/051D: 89 08 BIT #$08 C2/051F: D0 2E BNE $054F C2/0521: B9 F8 3C LDA $3CF8,Y C2/0524: F0 29 BEQ $054F C2/0526: 48 PHA C2/0527: C2 20 REP #$20 C2/0529: B9 2C 30 LDA $302C,Y C2/052C: 85 EE STA $EE C2/052E: E2 20 SEP #$20 C2/0530: 68 PLA C2/0531: EB XBA C2/0532: A9 D8 LDA #$D8 C2/0534: DA PHX C2/0535: 5A PHY C2/0536: A8 TAY C2/0537: EB XBA C2/0538: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/053B: AA TAX C2/053C: B1 EE LDA ($EE),Y C2/053E: C9 FF CMP #$FF C2/0540: F0 03 BEQ $0545 C2/0542: CA DEX C2/0543: 30 07 BMI $054C C2/0545: 88 DEY C2/0546: 88 DEY C2/0547: 88 DEY C2/0548: 88 DEY C2/0549: D0 F1 BNE $053C C2/054B: 7B TDC C2/054C: 7A PLY C2/054D: FA PLX C2/054E: 60 RTS ; [ command invalid ] notUse: C2/054F: C6 F5 DEC $F5 C2/0551: A9 FF LDA #$FF C2/0553: 83 03 STA $03,S C2/0555: 7B TDC C2/0556: 60 RTS ; [ Morph Command (random) ] trans_local: C2/0557: A9 0F LDA #$0F C2/0559: CD F6 1C CMP $1CF6 ; morph counter C2/055C: 7B TDC C2/055D: B0 F0 BCS $054F ; command invalid if morph counter < $0F C2/055F: 60 RTS ; [ SwdTech Command (random) ] sword_local: C2/0560: B9 A4 3B LDA $3BA4,Y C2/0563: 19 A5 3B ORA $3BA5,Y C2/0566: 89 02 BIT #$02 C2/0568: F0 E5 BEQ $054F C2/056A: AD 20 20 LDA $2020 C2/056D: 1A INC C2/056E: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/0571: 18 CLC C2/0572: 69 55 ADC #$55 ; dispatch (first swdtech) C2/0574: 60 RTS ; [ Blitz Command (random) ] skill_local: C2/0575: 7B TDC C2/0576: AD 28 1D LDA $1D28 ; known blitzes C2/0579: 20 2A 52 JSR $522A ; pick a random bit set in A C2/057C: 20 F0 51 JSR $51F0 ; get bit number C2/057F: 8A TXA C2/0580: 18 CLC C2/0581: 69 5D ADC #$5D ; pummel (first blitz) C2/0583: 60 RTS ; [ Magitek Command (random) ] armor: C2/0584: A9 03 LDA #$03 C2/0586: 20 65 4B JSR $4B65 ; random number (0..2) C2/0589: 18 CLC C2/058A: 69 83 ADC #$83 ; fire beam (first magitek) C2/058C: 60 RTS ; [ Tools Command (random) ] machine_local: C2/058D: 7B TDC C2/058E: AD 9B 3A LDA $3A9B ; tools owned C2/0591: 20 2A 52 JSR $522A ; pick a random bit set in A C2/0594: 20 F0 51 JSR $51F0 ; get bit number C2/0597: 8A TXA C2/0598: 18 CLC C2/0599: 69 A3 ADC #$A3 ; noiseblaster item (first tool) C2/059B: 60 RTS ; [ Dance Command (random) ] _SetDanceNo: C2/059C: DA PHX C2/059D: B9 E1 32 LDA $32E1,Y C2/05A0: C9 FF CMP #$FF C2/05A2: D0 0E BNE $05B2 C2/05A4: 7B TDC C2/05A5: AD 4C 1D LDA $1D4C ; known dances C2/05A8: 20 2A 52 JSR $522A ; pick a random bit set in A C2/05AB: 20 F0 51 JSR $51F0 ; get bit number C2/05AE: 8A TXA C2/05AF: 99 E1 32 STA $32E1,Y C2/05B2: 0A ASL C2/05B3: 0A ASL C2/05B4: 85 EE STA $EE C2/05B6: 20 5A 4B JSR $4B5A ; random number (0..255) C2/05B9: A2 02 LDX #$02 C2/05BB: DF CE 05 C2 CMP $C205CE,X ; dance attack probabilities C2/05BF: B0 02 BCS $05C3 C2/05C1: E6 EE INC $EE C2/05C3: CA DEX C2/05C4: 10 F5 BPL $05BB C2/05C6: A6 EE LDX $EE C2/05C8: BF 80 FE CF LDA $CFFE80,X ; dance data C2/05CC: FA PLX C2/05CD: 60 RTS ; dance attack probabilities (7/16, 3/8, 1/8, 1/16) tableDance: C2/05CE: .DB $10, $30, $90 ; [ Rage Command (random) ] _SetRiotNo: C2/05D1: DA PHX C2/05D2: 08 PHP C2/05D3: 7B TDC C2/05D4: 99 A9 33 STA $33A9,Y C2/05D7: B9 A8 33 LDA $33A8,Y C2/05DA: C9 FF CMP #$FF C2/05DC: D0 22 BNE $0600 C2/05DE: 1A INC C2/05DF: 99 A8 33 STA $33A8,Y C2/05E2: AD 9A 3A LDA $3A9A C2/05E5: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/05E8: 1A INC C2/05E9: 85 EE STA $EE C2/05EB: A2 00 LDX #$00 C2/05ED: BD 7E 25 LDA $257E,X ; known rages C2/05F0: C9 FF CMP #$FF C2/05F2: F0 0C BEQ $0600 C2/05F4: C6 EE DEC $EE C2/05F6: F0 05 BEQ $05FD C2/05F8: E8 INX C2/05F9: D0 F2 BNE $05ED C2/05FB: 80 03 BRA $0600 C2/05FD: 99 A8 33 STA $33A8,Y C2/0600: 20 53 4B JSR $4B53 ; random number (carry) C2/0603: C2 30 REP #$30 C2/0605: 2A ROL ; 1/2 chance first or second attack will be chosen C2/0606: AA TAX C2/0607: E2 20 SEP #$20 C2/0609: BF 00 46 CF LDA $CF4600,X ; monster rage attacks C2/060D: 28 PLP C2/060E: FA PLX C2/060F: 60 RTS ; [ ] ; something with rage _SetRiot: C2/0610: 08 PHP C2/0611: B9 A8 33 LDA $33A8,Y C2/0614: AA TAX C2/0615: EB XBA C2/0616: BF C0 37 CF LDA $CF37C0,X C2/061A: 99 81 3C STA $3C81,Y C2/061D: A9 20 LDA #$20 C2/061F: 20 81 47 JSR $4781 ; multiply A * B C2/0622: C2 10 REP #$10 C2/0624: AA TAX C2/0625: BF 1A 00 CF LDA $CF001A,X C2/0629: 99 A8 3C STA $3CA8,Y C2/062C: 99 A9 3C STA $3CA9,Y C2/062F: 20 C1 2D JSR $2DC1 ; init monster/rage data C2/0632: 28 PLP C2/0633: 60 RTS ; [ choose monster confused attack ] _MonConfu: C2/0634: DA PHX C2/0635: C2 30 REP #$30 C2/0637: BD F9 1F LDA $1FF9,X ; monster id (actually $2001) C2/063A: 0A ASL C2/063B: 0A ASL C2/063C: AA TAX C2/063D: BF 00 3D CF LDA $CF3D00,X ; monster control/muddled attacks C2/0641: 85 F0 STA $F0 C2/0643: BF 02 3D CF LDA $CF3D02,X C2/0647: 85 F2 STA $F2 C2/0649: E2 30 SEP #$30 C2/064B: 64 EE STZ $EE C2/064D: 20 5A 4B JSR $4B5A ; random number (0..255) C2/0650: 29 03 AND #$03 C2/0652: AA TAX C2/0653: B5 F0 LDA $F0,X C2/0655: C9 FF CMP #$FF C2/0657: D0 0B BNE $0664 C2/0659: CA DEX C2/065A: 10 F7 BPL $0653 C2/065C: E6 EE INC $EE C2/065E: F0 04 BEQ $0664 C2/0660: A2 03 LDX #$03 C2/0662: 80 EF BRA $0653 C2/0664: FA PLX C2/0665: 48 PHA C2/0666: BD E5 3E LDA $3EE5,X C2/0669: 89 10 BIT #$10 C2/066B: F0 04 BEQ $0671 C2/066D: A9 EE LDA #$EE C2/066F: 83 01 STA $01,S C2/0671: 68 PLA C2/0672: 20 BF 1D JSR $1DBF C2/0675: 20 E4 03 JSR $03E4 ; set advance wait timer C2/0678: 4C CB 4E JMP $4ECB ; create normal action ; advance wait durations for each command C2/067B: .DB $10, $10, $20, $00, $00, $10, $10, $10, $10, $10, $10, $10, $20, $10, $10, $10 C2/068B: .DB $10, $10, $10, $10, $10, $10, $E0, $20, $10, $10, $20, $20, $10, $10, $00, $00 ; [ Update Special Status (seize, control, love token, etc.) ] _AfterAction1: C2/069B: A2 12 LDX #$12 C2/069D: BD A0 3A LDA $3AA0,X C2/06A0: 4A LSR C2/06A1: 90 5D BCC $0700 ; $3AA0.0 branch if target is not present C2/06A3: C2 20 REP #$20 C2/06A5: BD 18 30 LDA $3018,X C2/06A8: 2C 4E 2F BIT $2F4E C2/06AB: E2 20 SEP #$20 C2/06AD: D0 51 BNE $0700 ; branch if target can't be targetted C2/06AF: 20 AD 07 JSR $07AD ; update control status C2/06B2: BD E4 3E LDA $3EE4,X C2/06B5: 89 82 BIT #$82 C2/06B7: F0 06 BEQ $06BF ; branch if target doesn't have wound or zombie status C2/06B9: 9E F4 3B STZ $3BF4,X ; set current hp to 0 C2/06BC: 9E F5 3B STZ $3BF5,X C2/06BF: BD E4 3E LDA $3EE4,X C2/06C2: 89 C2 BIT #$C2 C2/06C4: F0 09 BEQ $06CF ; branch if target doesn't have wound, petrify, or zombie status C2/06C6: BD 19 30 LDA $3019,X C2/06C9: 0C 3A 3A TSB $3A3A ; target has died/escaped C2/06CC: 20 C8 07 JSR $07C8 ; update zinger, love token, charm status C2/06CF: BD E4 3E LDA $3EE4,X C2/06D2: 10 2C BPL $0700 ; branch if target does not have wound status C2/06D4: E0 08 CPX #$08 C2/06D6: B0 0C BCS $06E4 ; branch if a monster C2/06D8: BD D8 3E LDA $3ED8,X ; actor index C2/06DB: C9 0E CMP #$0E C2/06DD: D0 05 BNE $06E4 ; branch if not $0E (BANON) C2/06DF: A9 06 LDA #$06 ; end of battle special event 3 (banon died) C2/06E1: 8D 6E 3A STA $3A6E C2/06E4: 20 10 07 JSR $0710 ; make jumping/seized character die when they land C2/06E7: BD E4 3E LDA $3EE4,X C2/06EA: 89 02 BIT #$02 C2/06EC: F0 03 BEQ $06F1 ; branch if target has zombie status C2/06EE: 20 28 07 JSR $0728 ; remove wound status (jumping/seized/zombie target) C2/06F1: BD E4 3E LDA $3EE4,X C2/06F4: 10 0A BPL $0700 ; branch if target does not have wound status C2/06F6: BD F9 3E LDA $3EF9,X C2/06F9: 89 04 BIT #$04 C2/06FB: F0 03 BEQ $0700 ; branch if target doesn't have life 3 status C2/06FD: 20 99 07 JSR $0799 ; life 3 effect (monster) C2/0700: CA DEX ; next target C2/0701: CA DEX C2/0702: 10 99 BPL $069D C2/0704: A2 12 LDX #$12 C2/0706: 20 39 07 JSR $0739 ; remove control status (target) C2/0709: CA DEX C2/070A: CA DEX C2/070B: 10 F9 BPL $0706 C2/070D: 4C 26 5D JMP $5D26 ; update character hp/mp/status in graphics buffer ; [ Make Jumping/Seized Character Die When They Land ] jumpCheck: C2/0710: C2 20 REP #$20 C2/0712: BD 18 30 LDA $3018,X C2/0715: 2C 2C 3F BIT $3F2C ; jump/seize targets C2/0718: E2 20 SEP #$20 C2/071A: F0 0B BEQ $0727 ; return if not jump/seize C2/071C: 20 28 07 JSR $0728 ; remove wound status (jumping/seized/zombie target) C2/071F: BD 05 32 LDA $3205,X ; set air anchor effect ($3205.2) C2/0722: 29 FB AND #$FB C2/0724: 9D 05 32 STA $3205,X C2/0727: 60 RTS ; [ Remove Wound Status (jumping/seized/zombie target) ] cancelDeath: C2/0728: BD E4 3E LDA $3EE4,X ; remove wound status C2/072B: 29 7F AND #$7F C2/072D: 9D E4 3E STA $3EE4,X C2/0730: BD 04 32 LDA $3204,X ; don't remove all advance wait actions C2/0733: 29 BF AND #$BF C2/0735: 9D 04 32 STA $3204,X C2/0738: 60 RTS ; [ Remove Control Status (target) ] _RemoveManage: C2/0739: BD B9 32 LDA $32B9,X ; target controlling you C2/073C: C9 FF CMP #$FF C2/073E: F0 08 BEQ $0748 ; branch if not valid C2/0740: 10 06 BPL $0748 ; branch if msb set ??? C2/0742: 29 7F AND #$7F C2/0744: A8 TAY C2/0745: 20 5B 07 JSR $075B ; C2/0748: BD B8 32 LDA $32B8,X ; target you control C2/074B: C9 FF CMP #$FF C2/074D: F0 0B BEQ $075A ; branch if not valid C2/074F: 10 09 BPL $075A ; branch if msb set ??? C2/0751: 29 7F AND #$7F C2/0753: DA PHX C2/0754: 9B TXY C2/0755: AA TAX C2/0756: 20 5B 07 JSR $075B ; remove control status (attacker) C2/0759: FA PLX C2/075A: 60 RTS ; [ Remove Control Status (attacker) ] manage_sub: C2/075B: B9 4D 3E LDA $3E4D,Y ; don't use control battle menu ($3E4D.0) C2/075E: 29 FE AND #$FE C2/0760: 99 4D 3E STA $3E4D,Y C2/0763: B9 F9 3E LDA $3EF9,Y ; clear trance status C2/0766: 29 EF AND #$EF C2/0768: 99 F9 3E STA $3EF9,Y C2/076B: A9 FF LDA #$FF C2/076D: 9D B9 32 STA $32B9,X ; clear target controlling you (target) C2/0770: 99 B8 32 STA $32B8,Y ; clear target you control (attacker) C2/0773: BD 19 30 LDA $3019,X C2/0776: 1C 54 2F TRB $2F54 ; clear horizontal flip for targets being controlled C2/0779: DA PHX C2/077A: 20 83 07 JSR $0783 ; update seize status (target) C2/077D: BB TYX C2/077E: 20 83 07 JSR $0783 ; update seize status (attacker) C2/0781: FA PLX C2/0782: 60 RTS ; [ Update Seize Status ] manage_sub_sub: C2/0783: A9 40 LDA #$40 C2/0785: 20 AB 5B JSR $5BAB ; set $3AA1.6 pending seize action C2/0788: BD 04 32 LDA $3204,X C2/078B: 09 40 ORA #$40 C2/078D: 9D 04 32 STA $3204,X ; remove all advance wait actions C2/0790: A9 7F LDA #$7F _AndFlag0X16: C2/0792: 3D A0 3A AND $3AA0,X ; clear $3AA0.7 (don't allow battle menu to open) C2/0795: 9D A0 3A STA $3AA0,X C2/0798: 60 RTS ; [ Life 3 Effect (monster) ] reraise: C2/0799: 29 FB AND #$FB C2/079B: 9D F9 3E STA $3EF9,X ; clear life 3 status C2/079E: BD 19 30 LDA $3019,X ; monster mask C2/07A1: 1C 2F 2F TRB $2F2F ; make monster alive C2/07A4: A9 30 LDA #$30 ; attack $30 (Life) C2/07A6: 85 B8 STA $B8 C2/07A8: A9 26 LDA #$26 ; command $26 (attack with no caster) C2/07AA: 4C 91 4E JMP $4E91 ; create immediate action ; [ Update Control Status ] rmanage: C2/07AD: F4 C2 B0 PEA $B0C2 ; check psyche, muddled, berserk, wound, petrify, rage, frozen, stop, dance status C2/07B0: F4 11 03 PEA $0311 C2/07B3: 9B TXY C2/07B4: 20 64 58 JSR $5864 ; check if status set C2/07B7: B0 0E BCS $07C7 C2/07B9: 1E B8 32 ASL $32B8,X ; set msb of "target you control" C2/07BC: 38 SEC C2/07BD: 7E B8 32 ROR $32B8,X C2/07C0: 1E B9 32 ASL $32B9,X ; set msb of "target controlled by you" C2/07C3: 38 SEC C2/07C4: 7E B9 32 ROR $32B9,X C2/07C7: 60 RTS ; [ Update Zinger, Love Token, Charm Status ] _Dead: C2/07C8: EC F9 33 CPX $33F9 C2/07CB: D0 28 BNE $07F5 ; branch if not zinger target C2/07CD: DA PHX C2/07CE: AE F8 33 LDX $33F8 C2/07D1: BD 19 30 LDA $3019,X ; entrance effects b2 is mask of affected monster C2/07D4: 85 B9 STA $B9 C2/07D6: A9 04 LDA #$04 ; entrance effects b1 $04 (hide monsters but don't allow battle to end) C2/07D8: 85 B8 STA $B8 C2/07DA: A2 00 LDX #$00 ; entrance effects b0 $00 (enter/exit immediately) C2/07DC: A9 24 LDA #$24 ; command $24 (monster entrance/exit) C2/07DE: 20 91 4E JSR $4E91 ; create immediate action C2/07E1: A9 02 LDA #$02 ; entrance effects b1 $02 (revive monsters at current hp) C2/07E3: 85 B8 STA $B8 C2/07E5: A2 08 LDX #$08 ; entrance effects b0 $08 (fade in/out, top to bottom) C2/07E7: A9 24 LDA #$24 ; command $24 (monster entrance/exit) C2/07E9: 20 91 4E JSR $4E91 ; create immediate action C2/07EC: A9 FF LDA #$FF C2/07EE: 8D F8 33 STA $33F8 C2/07F1: 8D F9 33 STA $33F9 C2/07F4: FA PLX C2/07F5: BD 6C 33 LDA $336C,X ; love token target C2/07F8: 30 04 BMI $07FE ; branch if a monster C2/07FA: A8 TAY C2/07FB: 20 2D 08 JSR $082D ; clear love token target/attacker C2/07FE: BD 6D 33 LDA $336D,X ; love token attacker C2/0801: 30 07 BMI $080A ; C2/0803: DA PHX C2/0804: 9B TXY C2/0805: AA TAX C2/0806: 20 2D 08 JSR $082D C2/0809: FA PLX C2/080A: BD 94 33 LDA $3394,X C2/080D: 30 04 BMI $0813 C2/080F: A8 TAY C2/0810: 20 36 08 JSR $0836 C2/0813: BD 95 33 LDA $3395,X C2/0816: 30 07 BMI $081F C2/0818: DA PHX C2/0819: 9B TXY C2/081A: AA TAX C2/081B: 20 36 08 JSR $0836 C2/081E: FA PLX _RemoveQuick: C2/081F: EC 04 34 CPX $3404 C2/0822: D0 08 BNE $082C C2/0824: A9 FF LDA #$FF C2/0826: 8D 04 34 STA $3404 C2/0829: 8D 02 34 STA $3402 C2/082C: 60 RTS ; [ Clear Love Token Status ] removeLove: C2/082D: A9 FF LDA #$FF C2/082F: 9D 6C 33 STA $336C,X ; clear love token target/attacker C2/0832: 99 6D 33 STA $336D,Y C2/0835: 60 RTS ; [ Clear Charm Status ] removeRevolt: C2/0836: A9 FF LDA #$FF C2/0838: 9D 94 33 STA $3394,X ; clear charm target/attacker C2/083B: 99 95 33 STA $3395,Y C2/083E: 60 RTS ; [ Update Targets After Each Command ] _AfterAction2: C2/083F: A2 12 LDX #$12 ; loop through all characters/monsters C2/0841: BD A0 3A LDA $3AA0,X C2/0844: 4A LSR C2/0845: 90 77 BCC $08BE ; skip if $3AA0.0 is clear (target is not present) C2/0847: 1E E0 32 ASL $32E0,X C2/084A: 5E E0 32 LSR $32E0,X C2/084D: BD E4 3E LDA $3EE4,X C2/0850: 30 07 BMI $0859 ; branch if target has wound status C2/0852: BD A1 3A LDA $3AA1,X C2/0855: 89 40 BIT #$40 C2/0857: F0 03 BEQ $085C ; $3AA1.6 branch if no pending run/control/psyche/seize action C2/0859: 20 77 09 JSR $0977 ; add pending run/control/psyche/seize action to advance wait queue C2/085C: BD 04 32 LDA $3204,X C2/085F: F0 4A BEQ $08AB C2/0861: 4A LSR C2/0862: 90 03 BCC $0867 C2/0864: 20 4A 0B JSR $0B4A ; remove all queued actions (used jump) C2/0867: 1E 04 32 ASL $3204,X C2/086A: 90 03 BCC $086F C2/086C: 20 63 57 JSR $5763 ; update enabled spells/espers C2/086F: 1E 04 32 ASL $3204,X C2/0872: 90 08 BCC $087C C2/0874: 20 0F 0A JSR $0A0F ; clear all pending actions C2/0877: A9 80 LDA #$80 C2/0879: 20 AB 5B JSR $5BAB ; set $3AA1.7 C2/087C: 1E 04 32 ASL $3204,X C2/087F: 90 03 BCC $0884 C2/0881: 20 B4 09 JSR $09B4 ; start condemned counter C2/0884: 1E 04 32 ASL $3204,X C2/0887: 90 03 BCC $088C C2/0889: 20 CE 09 JSR $09CE ; stop condemned counter C2/088C: 1E 04 32 ASL $3204,X C2/088F: 90 07 BCC $0898 C2/0891: E0 08 CPX #$08 ; skip if a monster C2/0893: B0 03 BCS $0898 C2/0895: 20 7D 52 JSR $527D ; update enabled commands C2/0898: 1E 04 32 ASL $3204,X C2/089B: 90 03 BCC $08A0 C2/089D: 20 D2 09 JSR $09D2 ; update ATB gauge constant C2/08A0: 1E 04 32 ASL $3204,X C2/08A3: 90 03 BCC $08A8 C2/08A5: 20 A8 0A JSR $0AA8 ; update menu if character just used morph/revert C2/08A8: 1E 04 32 ASL $3204,X C2/08AB: 20 1F 09 JSR $091F ; add pending advance wait action to queue C2/08AE: 20 C6 08 JSR $08C6 ; add pending action to queue C2/08B1: BD A0 3A LDA $3AA0,X C2/08B4: 89 50 BIT #$50 C2/08B6: F0 03 BEQ $08BB ; branch if $3AA0.4 and $3AA0.6 are clear C2/08B8: 20 41 0A JSR $0A41 ; clear def. mode C2/08BB: 20 4A 0A JSR $0A4A ; update near-fatal relic effects C2/08BE: CA DEX ; next character/monster C2/08BF: CA DEX C2/08C0: 30 03 BMI $08C5 C2/08C2: 4C 41 08 JMP $0841 C2/08C5: 60 RTS ; [ Add Pending Action to Queue ] _CounterCheck: C2/08C6: A9 50 LDA #$50 C2/08C8: 20 B4 11 JSR $11B4 ; set $3AA0.4 and $3AA0.6 C2/08CB: AD 04 34 LDA $3404 C2/08CE: 30 05 BMI $08D5 ; branch if there is no quick target C2/08D0: EC 04 34 CPX $3404 C2/08D3: D0 F0 BNE $08C5 ; return if this target is not quick C2/08D5: BD E4 3E LDA $3EE4,X C2/08D8: 89 C0 BIT #$C0 C2/08DA: D0 E9 BNE $08C5 ; return if target has wound or petrify status C2/08DC: BD F8 3E LDA $3EF8,X C2/08DF: 89 10 BIT #$10 C2/08E1: D0 E2 BNE $08C5 ; return if target has stop status C2/08E3: A9 EF LDA #$EF C2/08E5: 20 92 07 JSR $0792 ; clear $3AA0.4 C2/08E8: BD B9 32 LDA $32B9,X C2/08EB: 10 D8 BPL $08C5 ; return if target controlling you msb clear C2/08ED: BD E5 3E LDA $3EE5,X C2/08F0: 30 D3 BMI $08C5 ; return if target has psyche status C2/08F2: BD F9 3E LDA $3EF9,X C2/08F5: 89 02 BIT #$02 C2/08F7: D0 CC BNE $08C5 ; return if target has frozen status C2/08F9: BD 59 33 LDA $3359,X C2/08FC: 10 C7 BPL $08C5 ; return if seize attacker is valid C2/08FE: A9 BF LDA #$BF C2/0900: 20 92 07 JSR $0792 ; clear $3AA0.6 C2/0903: BD A1 3A LDA $3AA1,X C2/0906: 10 BD BPL $08C5 ; return if $3AA1.7 clear C2/0908: 29 7F AND #$7F C2/090A: 9D A1 3A STA $3AA1,X ; clear $3AA1.7 C2/090D: BD CC 32 LDA $32CC,X ; command list pointer C2/0910: 1A INC C2/0911: F0 B2 BEQ $08C5 ; return if there are no pending actions in the command list C2/0913: BD A1 3A LDA $3AA1,X C2/0916: 4A LSR C2/0917: 90 03 BCC $091C ; branch if $3AA1.0 is clear (pending action goes directly to action queue) C2/0919: 4C 77 4E JMP $4E77 ; add action to queue C2/091C: 4C 66 4E JMP $4E66 ; add action to advance wait queue ; [ Add Pending Advance Wait Action to Queue ] _InputCheck: C2/091F: E0 08 CPX #$08 C2/0921: B0 A2 BCS $08C5 ; return if a monster C2/0923: BD D8 3E LDA $3ED8,X C2/0926: C9 0D CMP #$0D C2/0928: F0 9B BEQ $08C5 ; return if UMARO C2/092A: BD 55 32 LDA $3255,X C2/092D: 10 96 BPL $08C5 ; return if character has a valid AI script C2/092F: AD 97 3A LDA $3A97 C2/0932: D0 91 BNE $08C5 ; return if characters are in colosseum C2/0934: A9 02 LDA #$02 ; set $3AA0.1 C2/0936: 85 EE STA $EE C2/0938: EC 04 34 CPX $3404 ; branch if target is not quick C2/093B: D0 04 BNE $0941 C2/093D: A9 88 LDA #$88 ; set $3AA0.3 and $3AA0.7 (atb gauge is full, allow battle menu to open) C2/093F: 04 EE TSB $EE C2/0941: A5 EE LDA $EE C2/0943: 20 B4 11 JSR $11B4 ; set bits in $3AA0 C2/0946: BD 18 30 LDA $3018,X C2/0949: 2C 4C 2F BIT $2F4C C2/094C: D0 38 BNE $0986 ; try to add action to advance wait queue if character can't be targetted (zinger etc.) C2/094E: BD 59 33 LDA $3359,X C2/0951: 3D 95 33 AND $3395,X C2/0954: 10 30 BPL $0986 ; try to add action to advance wait queue if seize or charm attacker is valid C2/0956: F4 C2 B0 PEA $B0C2 ; wound, petrify, zombie, psyche, muddled, berserk C2/0959: F4 01 21 PEA $2101 ; dance, hide, rage C2/095C: 9B TXY C2/095D: 20 64 58 JSR $5864 C2/0960: 90 24 BCC $0986 ; try to add action to advance wait queue if status set C2/0962: BD A0 3A LDA $3AA0,X C2/0965: 10 66 BPL $09CD ; return if $3AA0.7 is clear (battle menu will not open) C2/0967: BD CC 32 LDA $32CC,X ; command list pointer C2/096A: 10 61 BPL $09CD ; return if character/monster has an action pending C2/096C: BD A0 3A LDA $3AA0,X C2/096F: 09 08 ORA #$08 C2/0971: 9D A0 3A STA $3AA0,X ; set $3AA0.3 (stop atb gauge) C2/0974: 4C EF 11 JMP $11EF ; open battle menu ; [ Add Pending Run/Control/Psyche/Seize Action to Advance Wait Queue ] _GaugeDisable: C2/0977: C2 20 REP #$20 C2/0979: A9 D3 BF LDA #$BFD3 C2/097C: 20 92 07 JSR $0792 ; clear $3AA0.2, $3AA0.3, $3AA0.5, $3AA1.6 C2/097F: E2 20 SEP #$20 C2/0981: A9 01 LDA #$01 C2/0983: 9D 19 32 STA $3219,X ; empty atb gauge ; fall through ; [ try to add action to advance wait queue ] _CancelCommand: C2/0986: A9 F9 LDA #$F9 ; -> $3AA0 (clear $3AA0.1, $3AA0.2) C2/0988: EB XBA C2/0989: BD F9 3E LDA $3EF9,X C2/098C: 89 20 BIT #$20 C2/098E: D0 13 BNE $09A3 ; branch if hide status is set C2/0990: BD 18 30 LDA $3018,X C2/0993: 2C 4C 2F BIT $2F4C C2/0996: D0 0B BNE $09A3 ; branch if can't be targetted C2/0998: BD A0 3A LDA $3AA0,X C2/099B: 10 06 BPL $09A3 C2/099D: A9 79 LDA #$79 ; clear $3AA0.1, $3AA0.2, $3AA0.7 (don't skip advance wait, ogre nix can break, allow battle menu to open) C2/099F: EB XBA C2/09A0: 20 66 4E JSR $4E66 ; add action to advance wait queue C2/09A3: EB XBA C2/09A4: 20 92 07 JSR $0792 ; clear flags in $3AA0 C2/09A7: E0 08 CPX #$08 C2/09A9: B0 22 BCS $09CD ; return if a monster C2/09AB: 8A TXA C2/09AC: 4A LSR C2/09AD: 85 10 STA $10 ; character index C2/09AF: A9 03 LDA #$03 C2/09B1: 4C 11 64 JMP $6411 ; do battle graphics command $03 (close battle menu) ; [ Start Condemned Counter ] _SentenceSet: C2/09B4: AD AF 11 LDA $11AF ; attacker level C2/09B7: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/09BA: 18 CLC C2/09BB: 6D AF 11 ADC $11AF ; A = level + (0..level-1) C2/09BE: 85 EE STA $EE C2/09C0: 38 SEC C2/09C1: A9 3C LDA #$3C ; subtract from 60 (min 0) C2/09C3: E5 EE SBC $EE C2/09C5: B0 01 BCS $09C8 C2/09C7: 7B TDC C2/09C8: 69 14 ADC #$14 ; add 20 C2/09CA: 9D 05 3B STA $3B05,X ; set condemned number C2/09CD: 60 RTS ; [ Stop Condemned Counter ] _SentenceReset: C2/09CE: 9E 05 3B STZ $3B05,X ; clear condemned number C2/09D1: 60 RTS ; [ Update ATB Gauge Constant ] _SetSpeed: C2/09D2: 08 PHP C2/09D3: A0 20 LDY #$20 C2/09D5: BD F8 3E LDA $3EF8,X C2/09D8: 89 04 BIT #$04 C2/09DA: D0 08 BNE $09E4 C2/09DC: A0 40 LDY #$40 ; Y = haste/normal/slow constant (32/64/82) C2/09DE: 89 08 BIT #$08 C2/09E0: F0 02 BEQ $09E4 C2/09E2: A0 54 LDY #$54 C2/09E4: 98 TYA C2/09E5: 9D DD 3A STA $3ADD,X ; set haste/normal/slow constant (for status counters) C2/09E8: 98 TYA C2/09E9: 48 PHA C2/09EA: 18 CLC C2/09EB: 4A LSR C2/09EC: 63 01 ADC $01,S ; haste/normal/slow constant * 1.5 C2/09EE: 83 01 STA $01,S C2/09F0: BD 19 3B LDA $3B19,X ; speed + 20 C2/09F3: 69 14 ADC #$14 C2/09F5: EB XBA C2/09F6: E0 08 CPX #$08 C2/09F8: 90 06 BCC $0A00 ; branch if a character C2/09FA: AD 90 3A LDA $3A90 ; 255 - (battle_speed * 24) C2/09FD: 20 81 47 JSR $4781 ; B = (speed + 20) * (255 - (battle_speed * 24)) / 255 for monsters C2/0A00: 68 PLA ; B = (speed + 20) for characters C2/0A01: 20 81 47 JSR $4781 ; multiply B * (haste/normal/slow constant * 1.5) C2/0A04: C2 20 REP #$20 C2/0A06: 4A LSR C2/0A07: 4A LSR C2/0A08: 4A LSR C2/0A09: 4A LSR C2/0A0A: 9D C8 3A STA $3AC8,X ; set ATB gauge constant C2/0A0D: 28 PLP C2/0A0E: 60 RTS ; [ Clear All Pending Actions ] ; doesn't clear counterattacks _RemoveAction: C2/0A0F: 20 01 03 JSR $0301 ; remove next pending action from command list C2/0A12: BD CC 32 LDA $32CC,X ; branch if character/monster still has actions pending C2/0A15: 10 F8 BPL $0A0F C2/0A17: AC 64 3A LDY $3A64 ; advance wait queue start C2/0A1A: 8A TXA C2/0A1B: D9 20 37 CMP $3720,Y ; look for character in advance wait queue C2/0A1E: D0 05 BNE $0A25 C2/0A20: A9 FF LDA #$FF C2/0A22: 99 20 37 STA $3720,Y ; remove character C2/0A25: C8 INY C2/0A26: CC 65 3A CPY $3A65 C2/0A29: 90 EF BCC $0A1A C2/0A2B: BD 19 32 LDA $3219,X ; atb gauge C2/0A2E: D0 08 BNE $0A38 C2/0A30: DE 19 32 DEC $3219,X C2/0A33: A9 D3 LDA #$D3 C2/0A35: 20 92 07 JSR $0792 ; clear $3AA0.2, $3AA0.3, $3AA0.5 C2/0A38: E0 08 CPX #$08 ; return if not a character C2/0A3A: B0 0D BCS $0A49 C2/0A3C: A9 2C LDA #$2C ; action $2C (set character graphical action to 0) C2/0A3E: 4C 91 4E JMP $4E91 ; create immediate action ; [ Clear Def. Mode ] _RemoveProtection: C2/0A41: A9 FD LDA #$FD C2/0A43: 3D A1 3A AND $3AA1,X ; clear $3AA1.1 C2/0A46: 9D A1 3A STA $3AA1,X C2/0A49: 60 RTS ; [ Update Near-Fatal Relic Effects ] _DyingAction: C2/0A4A: BD A0 3A LDA $3AA0,X C2/0A4D: 89 10 BIT #$10 C2/0A4F: D0 3F BNE $0A90 ; return if $3AA0.4 is set C2/0A51: A9 02 LDA #$02 C2/0A53: 3C E5 3E BIT $3EE5,X ; current status 2 C2/0A56: F0 38 BEQ $0A90 ; return if not near fatal C2/0A58: 3C 05 32 BIT $3205,X C2/0A5B: F0 33 BEQ $0A90 ; return if $3205.1 is clear (near-fatal spell has already been cast this battle) C2/0A5D: 5D 05 32 EOR $3205,X C2/0A60: 9D 05 32 STA $3205,X ; clear $3205.1 C2/0A63: BD 59 3C LDA $3C59,X ; relic effects 4 C2/0A66: 4A LSR C2/0A67: 90 0B BCC $0A74 ; branch unless barrier ring or czarina ring equipped (casts shell) C2/0A69: 48 PHA C2/0A6A: A9 25 LDA #$25 ; attack $25 (shell) C2/0A6C: 85 B8 STA $B8 C2/0A6E: A9 26 LDA #$26 ; action $26 (spell with no caster) C2/0A70: 20 91 4E JSR $4E91 ; create immediate action C2/0A73: 68 PLA C2/0A74: 4A LSR C2/0A75: 90 0B BCC $0A82 ; branch unless mithril glove or czarina ring equipped (casts safe) C2/0A77: 48 PHA C2/0A78: A9 1C LDA #$1C ; attack $1C (safe) C2/0A7A: 85 B8 STA $B8 C2/0A7C: A9 26 LDA #$26 ; action $26 (spell with no caster) C2/0A7E: 20 91 4E JSR $4E91 ; create immediate action C2/0A81: 68 PLA C2/0A82: 4A LSR C2/0A83: 90 0B BCC $0A90 ; branch unless ??? equipped (casts rflect) C2/0A85: 48 PHA C2/0A86: A9 24 LDA #$24 ; attack $24 (rflect) C2/0A88: 85 B8 STA $B8 C2/0A8A: A9 26 LDA #$26 ; action $26 (spell with no caster) C2/0A8C: 20 91 4E JSR $4E91 ; create immediate action C2/0A8F: 68 PLA C2/0A90: 60 RTS ; [ Clear All Pending Actions ] ; When GAU Appears on the Veldt _RemoveActionAll: C2/0A91: A2 06 LDX #$06 C2/0A93: BD 18 30 LDA $3018,X ; character mask C2/0A96: 2C 74 3A BIT $3A74 C2/0A99: F0 08 BEQ $0AA3 ; branch if character is not alive C2/0A9B: 2C 2C 3F BIT $3F2C ; ignore characters that are temporarily out of combat ??? C2/0A9E: D0 03 BNE $0AA3 C2/0AA0: 20 0F 0A JSR $0A0F ; clear all pending actions C2/0AA3: CA DEX ; next character C2/0AA4: CA DEX C2/0AA5: 10 EC BPL $0A93 C2/0AA7: 60 RTS ; [ Update Menu After Morph/Revert ] _Trans: C2/0AA8: A5 B1 LDA $B1 ; branch if counter attack C2/0AAA: 4A LSR C2/0AAB: B0 0A BCS $0AB7 C2/0AAD: BD 19 32 LDA $3219,X ; ATB gauge C2/0AB0: D0 05 BNE $0AB7 C2/0AB2: A9 88 LDA #$88 C2/0AB4: 20 B4 11 JSR $11B4 ; set $3AA0.3 and $3AA0.7 (atb gauge full, battle menu can open) C2/0AB7: DA PHX C2/0AB8: BD F9 3E LDA $3EF9,X ; carry = inverse of morph status C2/0ABB: 49 08 EOR #$08 C2/0ABD: 4A LSR C2/0ABE: 4A LSR C2/0ABF: 4A LSR C2/0AC0: 4A LSR C2/0AC1: 08 PHP C2/0AC2: 7B TDC C2/0AC3: 69 03 ADC #$03 C2/0AC5: 85 EE STA $EE ; $EE = 3 if morphed, 4 if not morphed C2/0AC7: 8A TXA C2/0AC8: EB XBA C2/0AC9: A9 06 LDA #$06 C2/0ACB: 20 81 47 JSR $4781 ; multiply A * B C2/0ACE: AA TAX C2/0ACF: A0 04 LDY #$04 C2/0AD1: BD 2E 20 LDA $202E,X C2/0AD4: C5 EE CMP $EE C2/0AD6: D0 05 BNE $0ADD ; look for morph or revert command in character's battle command list C2/0AD8: 49 07 EOR #$07 C2/0ADA: 9D 2E 20 STA $202E,X ; change from morph to revert or vice-versa C2/0ADD: E8 INX C2/0ADE: E8 INX C2/0ADF: E8 INX C2/0AE0: 88 DEY C2/0AE1: D0 EE BNE $0AD1 C2/0AE3: 28 PLP C2/0AE4: FA PLX C2/0AE5: 90 1A BCC $0B01 ; branch if character is morphed ; revert C2/0AE7: 08 PHP C2/0AE8: 20 36 0B JSR $0B36 ; update SRAM morph counter C2/0AEB: A9 FF LDA #$FF C2/0AED: 8D E2 3E STA $3EE2 ; no character is morphed C2/0AF0: 9E 04 3B STZ $3B04,X ; morph gauge is not shown C2/0AF3: E0 08 CPX #$08 C2/0AF5: B0 03 BCS $0AFA ; branch if a monster C2/0AF7: 20 7D 52 JSR $527D ; update enabled commands C2/0AFA: C2 20 REP #$20 C2/0AFC: 9C 30 3F STZ $3F30 ; clear morph counter C2/0AFF: 28 PLP C2/0B00: 60 RTS ; morph C2/0B01: DA PHX C2/0B02: 08 PHP C2/0B03: AD E2 3E LDA $3EE2 C2/0B06: 10 2B BPL $0B33 ; return if a character is already morphed C2/0B08: AD BB 3E LDA $3EBB C2/0B0B: 4A LSR C2/0B0C: 4A LSR C2/0B0D: 6A ROR C2/0B0E: B0 23 BCS $0B33 ; return if morph is permanent (phunbaba battle) C2/0B10: 0A ASL C2/0B11: 8E E2 3E STX $3EE2 ; set morphed character C2/0B14: 7B TDC C2/0B15: C2 20 REP #$20 C2/0B17: 3A DEC C2/0B18: 8D 30 3F STA $3F30 ; morph counter C2/0B1B: AE F6 1C LDX $1CF6 ; SRAM morph counter C2/0B1E: 20 92 47 JSR $4792 ; divide +A / X C2/0B21: 90 01 BCC $0B24 ; branch if morph lasts twice as long (after phunbaba battle) C2/0B23: 4A LSR C2/0B24: 4A LSR C2/0B25: 4A LSR C2/0B26: 4A LSR C2/0B27: C9 00 08 CMP #$0800 C2/0B2A: 90 03 BCC $0B2F C2/0B2C: A9 FF 07 LDA #$07FF C2/0B2F: 1A INC C2/0B30: 8D 32 3F STA $3F32 ; set morph counter speed C2/0B33: 28 PLP C2/0B34: FA PLX C2/0B35: 60 RTS ; [ Update SRAM Morph Counter ] _WriteSuper: C2/0B36: AD E2 3E LDA $3EE2 ; morphed character C2/0B39: 30 0E BMI $0B49 ; return if not valid C2/0B3B: AD F6 1C LDA $1CF6 ; SRAM morph counter C2/0B3E: EB XBA C2/0B3F: AD 31 3F LDA $3F31 ; battle morph counter C2/0B42: 20 81 47 JSR $4781 ; multiply A * B C2/0B45: EB XBA C2/0B46: 8D F6 1C STA $1CF6 ; set remaining morph counter C2/0B49: 60 RTS ; [ Remove All Queued Actions (used jump) ] ; X = pointer to character/monster data k2harry: C2/0B4A: C2 20 REP #$20 C2/0B4C: BD 18 30 LDA $3018,X C2/0B4F: 0C 2C 3F TSB $3F2C ; C2/0B52: E2 20 SEP #$20 C2/0B54: BD A0 3A LDA $3AA0,X ; stop ATB gauge C2/0B57: 29 9B AND #$9B ; clear $3AA0.2, $3AA0.5, $3AA0.6 C2/0B59: 09 08 ORA #$08 ; set $3AA0.3 C2/0B5B: 9D A0 3A STA $3AA0,X C2/0B5E: AC 66 3A LDY $3A66 ; action queue start C2/0B61: 8A TXA C2/0B62: D9 20 38 CMP $3820,Y ; look for character/monster in action queue C2/0B65: D0 05 BNE $0B6C C2/0B67: A9 FF LDA #$FF C2/0B69: 99 20 38 STA $3820,Y ; remove all queued actions C2/0B6C: C8 INY C2/0B6D: CC 67 3A CPY $3A67 C2/0B70: 90 EF BCC $0B61 C2/0B72: BD 05 32 LDA $3205,X ; clear $3205.7 C2/0B75: 29 7F AND #$7F C2/0B77: 9D 05 32 STA $3205,X C2/0B7A: 9E B5 3A STZ $3AB5,X ; clear advance wait counter C2/0B7D: A9 E0 LDA #$E0 C2/0B7F: 9D 2C 32 STA $322C,X ; set advance wait timer to $E0 (advance wait duration for jump) C2/0B82: 60 RTS ; ------------------------------------[ Battle: Damage Calculation ]------------------------------------ ; [ Calculate Damage for Target ] _CalcDamage: C2/0B83: 08 PHP C2/0B84: E2 20 SEP #$20 C2/0B86: AD A6 11 LDA $11A6 C2/0B89: D0 03 BNE $0B8E C2/0B8B: 4C 2B 0C JMP $0C2B ; return if power = 0 C2/0B8E: AD A4 11 LDA $11A4 C2/0B91: 30 05 BMI $0B98 ; branch if damage is a fraction of max hp/mp C2/0B93: 20 9E 0C JSR $0C9E ; calculate damage modification C2/0B96: 80 03 BRA $0B9B C2/0B98: 20 87 0D JSR $0D87 C2/0B9B: 64 F2 STZ $F2 C2/0B9D: B9 E4 3E LDA $3EE4,Y C2/0BA0: 0A ASL C2/0BA1: 30 57 BMI $0BFA C2/0BA3: AD A4 11 LDA $11A4 C2/0BA6: 85 F2 STA $F2 C2/0BA8: AD A2 11 LDA $11A2 C2/0BAB: 89 08 BIT #$08 C2/0BAD: F0 24 BEQ $0BD3 C2/0BAF: B9 95 3C LDA $3C95,Y C2/0BB2: 10 0B BPL $0BBF C2/0BB4: AD AA 11 LDA $11AA C2/0BB7: 89 82 BIT #$82 C2/0BB9: D0 70 BNE $0C2B C2/0BBB: 64 F2 STZ $F2 C2/0BBD: 80 07 BRA $0BC6 C2/0BBF: B9 E4 3E LDA $3EE4,Y C2/0BC2: 89 02 BIT #$02 C2/0BC4: F0 0D BEQ $0BD3 C2/0BC6: AD A4 11 LDA $11A4 C2/0BC9: 89 02 BIT #$02 C2/0BCB: F0 06 BEQ $0BD3 ; branch if not a drain attack C2/0BCD: A5 F2 LDA $F2 C2/0BCF: 49 01 EOR #$01 C2/0BD1: 85 F2 STA $F2 C2/0BD3: AD A1 11 LDA $11A1 C2/0BD6: F0 46 BEQ $0C1E C2/0BD8: AD C8 3E LDA $3EC8 C2/0BDB: 49 FF EOR #$FF C2/0BDD: 2D A1 11 AND $11A1 C2/0BE0: F0 18 BEQ $0BFA C2/0BE2: B9 CC 3B LDA $3BCC,Y C2/0BE5: 2C A1 11 BIT $11A1 C2/0BE8: F0 08 BEQ $0BF2 C2/0BEA: A5 F2 LDA $F2 C2/0BEC: 49 01 EOR #$01 C2/0BEE: 85 F2 STA $F2 C2/0BF0: 80 2C BRA $0C1E C2/0BF2: B9 CD 3B LDA $3BCD,Y C2/0BF5: 2C A1 11 BIT $11A1 C2/0BF8: F0 06 BEQ $0C00 C2/0BFA: 64 F0 STZ $F0 C2/0BFC: 64 F1 STZ $F1 C2/0BFE: 80 1E BRA $0C1E C2/0C00: B9 E1 3B LDA $3BE1,Y C2/0C03: 2C A1 11 BIT $11A1 C2/0C06: F0 06 BEQ $0C0E C2/0C08: 46 F1 LSR $F1 C2/0C0A: 66 F0 ROR $F0 C2/0C0C: 80 10 BRA $0C1E C2/0C0E: B9 E0 3B LDA $3BE0,Y C2/0C11: 2C A1 11 BIT $11A1 C2/0C14: F0 08 BEQ $0C1E C2/0C16: A5 F1 LDA $F1 C2/0C18: 30 04 BMI $0C1E C2/0C1A: 06 F0 ASL $F0 C2/0C1C: 26 F1 ROL $F1 C2/0C1E: AD A9 11 LDA $11A9 ; item special effect C2/0C21: C9 04 CMP #$04 C2/0C23: D0 03 BNE $0C28 ; branch if not atma weapon C2/0C25: 20 39 0E JSR $0E39 ; calculate atma weapon damage C2/0C28: 20 2D 0C JSR $0C2D ; calculate maximum damage C2/0C2B: 28 PLP C2/0C2C: 60 RTS ; [ Calculate Maximum Damage ] ; +X: attacker ; +Y: target calc_damage_sub: C2/0C2D: AD A2 11 LDA $11A2 C2/0C30: 4A LSR C2/0C31: 90 2A BCC $0C5D ; branch if attack is not physical damage C2/0C33: AD 82 3A LDA $3A82 C2/0C36: 2D 83 3A AND $3A83 C2/0C39: 10 22 BPL $0C5D ; branch if blocked by golem or interceptor C2/0C3B: BD E4 3E LDA $3EE4,X C2/0C3E: 89 02 BIT #$02 C2/0C40: F0 03 BEQ $0C45 ; branch if attacker is not a zombie C2/0C42: 20 21 0E JSR $0E21 ; zombie attack effect C2/0C45: AD AB 11 LDA $11AB C2/0C48: 49 A0 EOR #$A0 C2/0C4A: 29 A0 AND #$A0 C2/0C4C: 39 E5 3E AND $3EE5,Y ; remove sleep and muddled status from target C2/0C4F: 19 FD 3D ORA $3DFD,Y C2/0C52: 99 FD 3D STA $3DFD,Y C2/0C55: B9 B9 32 LDA $32B9,Y ; invalidate target's controller C2/0C58: 09 80 ORA #$80 C2/0C5A: 99 B9 32 STA $32B9,Y C2/0C5D: AD A4 11 LDA $11A4 C2/0C60: 89 02 BIT #$02 C2/0C62: F0 11 BEQ $0C75 ; branch if not a drain attack C2/0C64: 20 ED 0D JSR $0DED ; calculate maximum damage for drain attacks C2/0C67: DA PHX C2/0C68: 5A PHY C2/0C69: 5A PHY C2/0C6A: 9B TXY ; swap attacker and target C2/0C6B: FA PLX C2/0C6C: 20 2F 36 JSR $362F ; save previous attacker C2/0C6F: 38 SEC C2/0C70: 20 76 0C JSR $0C76 ; set damage taken/healed C2/0C73: 7A PLY ; restore attacker and target C2/0C74: FA PLX C2/0C75: 18 CLC ; fall through ; set damage taken/healed C2/0C76: 5A PHY C2/0C77: 08 PHP C2/0C78: 2A ROL C2/0C79: 45 F2 EOR $F2 C2/0C7B: 4A LSR C2/0C7C: 90 04 BCC $0C82 ; branch if damage taken C2/0C7E: 98 TYA C2/0C7F: 69 13 ADC #$13 ; change to damage healed ($13 because the carry is set, but it really adds $14) C2/0C81: A8 TAY C2/0C82: C2 20 REP #$20 C2/0C84: B9 D0 33 LDA $33D0,Y ; damage taken/healed C2/0C87: 1A INC C2/0C88: F0 01 BEQ $0C8B ; branch if it's $FFFF (no damage) C2/0C8A: 3A DEC C2/0C8B: 18 CLC C2/0C8C: 65 F0 ADC $F0 ; add damage C2/0C8E: B0 05 BCS $0C95 ; branch on overflow C2/0C90: C9 10 27 CMP #$2710 C2/0C93: 90 03 BCC $0C98 ; branch if less than 10,000 C2/0C95: A9 0F 27 LDA #$270F ; cap at 9999 C2/0C98: 99 D0 33 STA $33D0,Y ; set damage taken/healed C2/0C9B: 28 PLP C2/0C9C: 7A PLY C2/0C9D: 60 RTS ; [ Calculate Damage Modification ] ; random variance, defense stat, shell/safe, defending, row, morph, friendly fire calcDamage: C2/0C9E: 08 PHP C2/0C9F: C2 20 REP #$20 C2/0CA1: AD B0 11 LDA $11B0 ; damage C2/0CA4: 85 F0 STA $F0 C2/0CA6: E2 20 SEP #$20 C2/0CA8: AD 14 34 LDA $3414 C2/0CAB: D0 03 BNE $0CB0 ; branch if damage modification is enabled C2/0CAD: 4C 3B 0D JMP $0D3B C2/0CB0: 20 5A 4B JSR $4B5A ; random number (0..255) C2/0CB3: 09 E0 ORA #$E0 ; random variance (240..255) C2/0CB5: 85 E8 STA $E8 C2/0CB7: 20 3D 0D JSR $0D3D ; multiply damage by fraction ($E8 / 255) C2/0CBA: 18 CLC C2/0CBB: AD A3 11 LDA $11A3 C2/0CBE: 30 04 BMI $0CC4 C2/0CC0: AD A2 11 LDA $11A2 C2/0CC3: 4A LSR C2/0CC4: AD A2 11 LDA $11A2 C2/0CC7: 89 20 BIT #$20 C2/0CC9: D0 57 BNE $0D22 C2/0CCB: 08 PHP C2/0CCC: B9 B9 3B LDA $3BB9,Y C2/0CCF: 90 03 BCC $0CD4 C2/0CD1: B9 B8 3B LDA $3BB8,Y C2/0CD4: 1A INC C2/0CD5: F0 10 BEQ $0CE7 C2/0CD7: EB XBA C2/0CD8: AD 82 3A LDA $3A82 C2/0CDB: 2D 83 3A AND $3A83 C2/0CDE: 30 03 BMI $0CE3 C2/0CE0: A9 C1 LDA #$C1 C2/0CE2: EB XBA C2/0CE3: EB XBA C2/0CE4: 3A DEC C2/0CE5: 49 FF EOR #$FF C2/0CE7: 85 E8 STA $E8 C2/0CE9: 20 3D 0D JSR $0D3D ; multiply damage by fraction ($E8 / 255) C2/0CEC: A3 01 LDA $01,S C2/0CEE: 4A LSR C2/0CEF: B9 F8 3E LDA $3EF8,Y C2/0CF2: B0 01 BCS $0CF5 C2/0CF4: 0A ASL C2/0CF5: 0A ASL C2/0CF6: 10 07 BPL $0CFF C2/0CF8: A9 AA LDA #$AA C2/0CFA: 85 E8 STA $E8 C2/0CFC: 20 3D 0D JSR $0D3D ; multiply damage by fraction ($E8 / 255) C2/0CFF: 28 PLP C2/0D00: 90 15 BCC $0D17 C2/0D02: B9 A1 3A LDA $3AA1,Y C2/0D05: 89 02 BIT #$02 C2/0D07: F0 04 BEQ $0D0D ; branch if $3AA1.1 is clear C2/0D09: 46 F1 LSR $F1 C2/0D0B: 66 F0 ROR $F0 C2/0D0D: 89 20 BIT #$20 C2/0D0F: F0 11 BEQ $0D22 C2/0D11: 46 F1 LSR $F1 C2/0D13: 66 F0 ROR $F0 C2/0D15: 80 0B BRA $0D22 C2/0D17: B9 F9 3E LDA $3EF9,Y C2/0D1A: 89 08 BIT #$08 C2/0D1C: F0 04 BEQ $0D22 C2/0D1E: 46 F1 LSR $F1 C2/0D20: 66 F0 ROR $F0 C2/0D22: C2 20 REP #$20 C2/0D24: AD A4 11 LDA $11A4 C2/0D27: 4A LSR C2/0D28: B0 0A BCS $0D34 C2/0D2A: C0 08 CPY #$08 C2/0D2C: B0 06 BCS $0D34 C2/0D2E: E0 08 CPX #$08 C2/0D30: B0 02 BCS $0D34 C2/0D32: 46 F0 LSR $F0 C2/0D34: A5 F0 LDA $F0 C2/0D36: 20 0B 37 JSR $370B C2/0D39: 85 F0 STA $F0 C2/0D3B: 28 PLP C2/0D3C: 60 RTS ; [ Multiply Damage by Fraction ($E8 / 255) ] multiDamage: C2/0D3D: 08 PHP C2/0D3E: C2 20 REP #$20 C2/0D40: A5 F0 LDA $F0 C2/0D42: 20 B7 47 JSR $47B7 ; +A *= $E8 / 256 C2/0D45: 1A INC C2/0D46: 85 F0 STA $F0 C2/0D48: 28 PLP C2/0D49: 60 RTS ; [ Atlas Armlet/Earring Effect ] _UpCheck: C2/0D4A: 08 PHP C2/0D4B: AD A4 11 LDA $11A4 C2/0D4E: 4A LSR C2/0D4F: B0 34 BCS $0D85 C2/0D51: AD A3 11 LDA $11A3 C2/0D54: 30 04 BMI $0D5A C2/0D56: AD A2 11 LDA $11A2 C2/0D59: 4A LSR C2/0D5A: C2 20 REP #$20 C2/0D5C: AD B0 11 LDA $11B0 C2/0D5F: 85 EE STA $EE C2/0D61: BD 44 3C LDA $3C44,X C2/0D64: E2 20 SEP #$20 C2/0D66: B0 06 BCS $0D6E C2/0D68: 89 02 BIT #$02 C2/0D6A: D0 09 BNE $0D75 C2/0D6C: EB XBA C2/0D6D: 4A LSR C2/0D6E: 4A LSR C2/0D6F: 90 14 BCC $0D85 C2/0D71: 46 EF LSR $EF C2/0D73: 66 EE ROR $EE C2/0D75: C2 20 REP #$20 C2/0D77: A5 EE LDA $EE C2/0D79: 4A LSR C2/0D7A: 18 CLC C2/0D7B: 6D B0 11 ADC $11B0 C2/0D7E: 90 02 BCC $0D82 C2/0D80: 7B TDC C2/0D81: 3A DEC C2/0D82: 8D B0 11 STA $11B0 C2/0D85: 28 PLP C2/0D86: 60 RTS ; [ Calculate Damage (fraction of max hp/mp) ] ratioDamage: C2/0D87: DA PHX C2/0D88: 5A PHY C2/0D89: 08 PHP C2/0D8A: C2 20 REP #$20 C2/0D8C: B9 D0 33 LDA $33D0,Y C2/0D8F: 1A INC C2/0D90: F0 01 BEQ $0D93 C2/0D92: 3A DEC C2/0D93: 85 EE STA $EE C2/0D95: E2 20 SEP #$20 C2/0D97: 20 DD 0D JSR $0DDD ; adjust pointers to affect hp or mp C2/0D9A: AD A6 11 LDA $11A6 C2/0D9D: 85 E8 STA $E8 C2/0D9F: A5 B5 LDA $B5 C2/0DA1: C9 01 CMP #$01 C2/0DA3: F0 06 BEQ $0DAB C2/0DA5: AD A2 11 LDA $11A2 C2/0DA8: 4A LSR C2/0DA9: 4A LSR C2/0DAA: 4A LSR C2/0DAB: C2 20 REP #$20 C2/0DAD: B0 0B BCS $0DBA C2/0DAF: 38 SEC C2/0DB0: B9 F4 3B LDA $3BF4,Y C2/0DB3: E5 EE SBC $EE C2/0DB5: B0 06 BCS $0DBD C2/0DB7: 7B TDC C2/0DB8: 80 03 BRA $0DBD C2/0DBA: B9 1C 3C LDA $3C1C,Y C2/0DBD: 20 CB 0D JSR $0DCB C2/0DC0: 48 PHA C2/0DC1: 68 PLA C2/0DC2: D0 01 BNE $0DC5 C2/0DC4: 1A INC C2/0DC5: 85 F0 STA $F0 C2/0DC7: 28 PLP C2/0DC8: 7A PLY C2/0DC9: FA PLX C2/0DCA: 60 RTS ; [ +A = $E8 * (+A / 16) ] _Ratio: C2/0DCB: 20 B7 47 JSR $47B7 ; +A *= $E8 / 256 C2/0DCE: A9 03 00 LDA #$0003 ; LSR (A) times _Shift3: C2/0DD1: DA PHX C2/0DD2: AA TAX C2/0DD3: A5 E8 LDA $E8 C2/0DD5: 46 EA LSR $EA C2/0DD7: 6A ROR C2/0DD8: CA DEX C2/0DD9: 10 FA BPL $0DD5 C2/0DDB: FA PLX C2/0DDC: 60 RTS ; [ Adjust Pointers to Affect HP or MP ] pointCheck: C2/0DDD: AD A3 11 LDA $11A3 C2/0DE0: 10 0A BPL $0DEC C2/0DE2: 98 TYA C2/0DE3: 18 CLC C2/0DE4: 69 14 ADC #$14 C2/0DE6: A8 TAY C2/0DE7: 8A TXA C2/0DE8: 18 CLC C2/0DE9: 69 14 ADC #$14 C2/0DEB: AA TAX C2/0DEC: 60 RTS ; [ Calculate Maximum Damage for Drain Attacks ] maxDamage: C2/0DED: DA PHX C2/0DEE: 5A PHY C2/0DEF: 08 PHP C2/0DF0: 20 DD 0D JSR $0DDD ; adjust pointers to affect hp or mp C2/0DF3: AD 14 34 LDA $3414 C2/0DF6: 10 25 BPL $0E1D ; branch if damage modification is disabled C2/0DF8: C2 20 REP #$20 C2/0DFA: A5 F2 LDA $F2 C2/0DFC: 4A LSR C2/0DFD: 90 03 BCC $0E02 C2/0DFF: DA PHX C2/0E00: BB TYX C2/0E01: 7A PLY C2/0E02: B9 F4 3B LDA $3BF4,Y C2/0E05: C5 F0 CMP $F0 C2/0E07: B0 02 BCS $0E0B C2/0E09: 85 F0 STA $F0 C2/0E0B: A5 B1 LDA $B1 C2/0E0D: 10 0E BPL $0E1D C2/0E0F: 9B TXY C2/0E10: 38 SEC C2/0E11: B9 1C 3C LDA $3C1C,Y C2/0E14: F9 F4 3B SBC $3BF4,Y C2/0E17: C5 F0 CMP $F0 C2/0E19: B0 02 BCS $0E1D C2/0E1B: 85 F0 STA $F0 C2/0E1D: 28 PLP C2/0E1E: 7A PLY C2/0E1F: FA PLX C2/0E20: 60 RTS ; [ Zombie Attack Effect ] _Zombie: C2/0E21: 20 5A 4B JSR $4B5A ; random number (0..255) C2/0E24: C9 10 CMP #$10 C2/0E26: B0 04 BCS $0E2C C2/0E28: A9 04 LDA #$04 ; 1/16 chance to cause poison status C2/0E2A: 80 06 BRA $0E32 C2/0E2C: C9 20 CMP #$20 C2/0E2E: B0 F0 BCS $0E20 C2/0E30: A9 01 LDA #$01 ; 1/16 chance to cause dark status _OrDS0: C2/0E32: 19 D4 3D ORA $3DD4,Y C2/0E35: 99 D4 3D STA $3DD4,Y C2/0E38: 60 RTS ; [ Calculate Atma Weapon Damage ] _Altema: C2/0E39: 08 PHP C2/0E3A: DA PHX C2/0E3B: 5A PHY C2/0E3C: 9B TXY C2/0E3D: B9 F5 3B LDA $3BF5,Y ; B = current hp (hi byte) + 1 C2/0E40: 1A INC C2/0E41: EB XBA C2/0E42: B9 18 3B LDA $3B18,Y ; A = level C2/0E45: 20 81 47 JSR $4781 ; A = (current hp + 1) * level C2/0E48: BE 1D 3C LDX $3C1D,Y ; X = max hp (hi byte) + 1 C2/0E4B: E8 INX C2/0E4C: 20 92 47 JSR $4792 ; $E8 = [(current hp + 1) * level] / [max hp (hi byte) + 1] C2/0E4F: 85 E8 STA $E8 C2/0E51: C2 20 REP #$20 C2/0E53: A5 F0 LDA $F0 ; original damage C2/0E55: 20 B7 47 JSR $47B7 ; A = original damage * [(current hp + 1) * level] / [max hp (hi byte) + 1] / 256 C2/0E58: A9 05 00 LDA #$0005 C2/0E5B: 20 D1 0D JSR $0DD1 ; A = (A / 64) + 1 C2/0E5E: 1A INC C2/0E5F: 85 F0 STA $F0 ; set calculated damage C2/0E61: C9 F5 01 CMP #$01F5 C2/0E64: 90 0D BCC $0E73 ; branch if less than 501 C2/0E66: A2 5B LDX #$5B C2/0E68: C9 E9 03 CMP #$03E9 C2/0E6B: 90 01 BCC $0E6E ; branch if less than 1001 C2/0E6D: E8 INX C2/0E6E: 86 B7 STX $B7 ; set atma weapon length ($5B or $5C -> $626A) C2/0E70: 20 BB 35 JSR $35BB C2/0E73: 7A PLY C2/0E74: FA PLX C2/0E75: 28 PLP C2/0E76: 60 RTS ; ------------------------------------------[ Battle: Misc. ]------------------------------------------- ; [ Update Character Battle Stats ] ; A = character number _CalcParam: C2/0E77: DA PHX C2/0E78: 5A PHY C2/0E79: 8B PHB C2/0E7A: 08 PHP C2/0E7B: E2 30 SEP #$30 C2/0E7D: 48 PHA C2/0E7E: 29 0F AND #$0F C2/0E80: A9 7E LDA #$7E C2/0E82: 48 PHA C2/0E83: AB PLB C2/0E84: 68 PLA C2/0E85: A2 3E LDX #$3E C2/0E87: 9E A0 11 STZ $11A0,X ; clear $11A0-$11DE C2/0E8A: CA DEX C2/0E8B: 10 FA BPL $0E87 C2/0E8D: 1A INC ; increment character number C2/0E8E: EB XBA C2/0E8F: A9 25 LDA #$25 C2/0E91: 20 81 47 JSR $4781 ; multiply by $25 to get pointer to character data C2/0E94: C2 10 REP #$10 C2/0E96: AA TAX C2/0E97: BD DB 15 LDA $15DB,X ; actor number C2/0E9A: EB XBA C2/0E9B: A9 16 LDA #$16 C2/0E9D: 20 81 47 JSR $4781 ; multiply by $16 to get pointer to character initial properties C2/0EA0: DA PHX C2/0EA1: AA TAX C2/0EA2: BF AA 7C ED LDA $ED7CAA,X ; battle power C2/0EA6: 8D AC 11 STA $11AC C2/0EA9: 8D AD 11 STA $11AD C2/0EAC: C2 20 REP #$20 C2/0EAE: BF AB 7C ED LDA $ED7CAB,X ; defense & magic defense C2/0EB2: 8D BA 11 STA $11BA C2/0EB5: BF AD 7C ED LDA $ED7CAD,X ; evade & magic block C2/0EB9: E2 20 SEP #$20 C2/0EBB: 8D A8 11 STA $11A8 C2/0EBE: EB XBA C2/0EBF: 8D AA 11 STA $11AA C2/0EC2: BF B5 7C ED LDA $ED7CB5,X ; run factor C2/0EC6: 29 03 AND #$03 C2/0EC8: 49 03 EOR #$03 C2/0ECA: 1A INC C2/0ECB: 1A INC C2/0ECC: 8D DC 11 STA $11DC C2/0ECF: FA PLX C2/0ED0: A0 06 00 LDY #$0006 ; magic power, stamina, speed, and vigor C2/0ED3: BD F5 15 LDA $15F5,X C2/0ED6: 99 A0 11 STA $11A0,Y C2/0ED9: E8 INX C2/0EDA: 88 DEY C2/0EDB: 88 DEY C2/0EDC: 10 F5 BPL $0ED3 C2/0EDE: BD EB 15 LDA $15EB,X ; current status 1 C2/0EE1: 85 FE STA $FE C2/0EE3: A0 05 00 LDY #$0005 C2/0EE6: BD FB 15 LDA $15FB,X ; equipment C2/0EE9: 99 C6 11 STA $11C6,Y C2/0EEC: 20 9A 0F JSR $0F9A ; update item effects C2/0EEF: CA DEX C2/0EF0: 88 DEY C2/0EF1: 10 F3 BPL $0EE6 ; next item C2/0EF3: BD ED 15 LDA $15ED,X ; high byte of mp C2/0EF6: 29 3F AND #$3F C2/0EF8: 85 FF STA $FF C2/0EFA: A9 40 LDA #$40 C2/0EFC: 20 7D 0F JSR $0F7D ; update mp boost flag C2/0EFF: 05 FF ORA $FF C2/0F01: 9D ED 15 STA $15ED,X C2/0F04: BD E9 15 LDA $15E9,X ; high byte of hp C2/0F07: 29 3F AND #$3F C2/0F09: 85 FF STA $FF C2/0F0B: A9 08 LDA #$08 C2/0F0D: 20 7D 0F JSR $0F7D ; update hp boost flag C2/0F10: 05 FF ORA $FF C2/0F12: 9D E9 15 STA $15E9,X C2/0F15: A2 0A 00 LDX #$000A ; get high byte of each stat C2/0F18: BD A1 11 LDA $11A1,X C2/0F1B: F0 09 BEQ $0F26 ; branch if 0 C2/0F1D: 0A ASL C2/0F1E: 7B TDC C2/0F1F: B0 02 BCS $0F23 ; branch if negative (set to 0) C2/0F21: A9 FF LDA #$FF ; max 255 C2/0F23: 9D A0 11 STA $11A0,X C2/0F26: CA DEX ; next stat C2/0F27: CA DEX C2/0F28: 10 EE BPL $0F18 C2/0F2A: AE CE 11 LDX $11CE ; weapon hands C2/0F2D: FC 47 0F JSR ($0F47,X) ; update 2-handed weapon effects C2/0F30: AD D7 11 LDA $11D7 ; hyper wrist effect C2/0F33: 10 0D BPL $0F42 C2/0F35: C2 20 REP #$20 C2/0F37: AD A6 11 LDA $11A6 ; vigor *= 1.5 C2/0F3A: 4A LSR C2/0F3B: 18 CLC C2/0F3C: 6D A6 11 ADC $11A6 C2/0F3F: 8D A6 11 STA $11A6 C2/0F42: 28 PLP C2/0F43: AB PLB C2/0F44: 7A PLY C2/0F45: FA PLX C2/0F46: 6B RTL ; 2-handed weapon effects jump table jumpTable_CalcParam: C2/0F47: .DW $0F67, $0F61, $0F68, $0F6F, $0F61, $0F67, $0F6B, $0F67 C2/0F57: .DW $0F68, $0F64, $0F67, $0F67, $0F68 ; [ Update 2-Handed Weapon Effects ] ; $01: weapon in off-hand, $04: unarmed in main hand C2/0F61: 20 74 0F JSR $0F74 ; disable 2-hand effect ; $09: unarmed in main hand, weapon in off hand C2/0F64: 9C AC 11 STZ $11AC ; main hand battle power = 0 (attack with off-hand) ; $00, $05, $07, $0A, $0B: impossible combinations C2/0F67: 60 RTS ; $02: weapon in main hand, $08: unarmed in main hand, $0C: unarmed in both hands C2/0F68: 20 74 0F JSR $0F74 ; disable 2-hand effect ; $06: weapon in main hand, unarmed in off-hand C2/0F6B: 9C AD 11 STZ $11AD ; off-hand battle power = 0 (attack with main hand) C2/0F6E: 60 RTS ; $03: weapon in main hand and off-hand (genji glove) C2/0F6F: A9 10 LDA #$10 C2/0F71: 0C CF 11 TSB $11CF cut_double_hand: C2/0F74: A9 40 LDA #$40 C2/0F76: 1C DA 11 TRB $11DA C2/0F79: 1C DB 11 TRB $11DB C2/0F7C: 60 RTS ; [ Update HP/MP Boost Flag ] _calcHpBit: C2/0F7D: 2C D5 11 BIT $11D5 C2/0F80: F0 03 BEQ $0F85 C2/0F82: A9 80 LDA #$80 ; +50% C2/0F84: 60 RTS C2/0F85: 4A LSR C2/0F86: 2C D5 11 BIT $11D5 C2/0F89: F0 03 BEQ $0F8E C2/0F8B: A9 40 LDA #$40 ; +25% C2/0F8D: 60 RTS C2/0F8E: 0A ASL C2/0F8F: 0A ASL C2/0F90: 2C D5 11 BIT $11D5 C2/0F93: F0 03 BEQ $0F98 C2/0F95: A9 C0 LDA #$C0 ; +12.5% C2/0F97: 60 RTS C2/0F98: 7B TDC ; no boost C2/0F99: 60 RTS ; [ Update Item Effects ] ; A = item number yama_calcparam_sub: C2/0F9A: DA PHX C2/0F9B: 5A PHY C2/0F9C: EB XBA C2/0F9D: A9 1E LDA #$1E ; multiply by 30 to get pointer to item data C2/0F9F: 20 81 47 JSR $4781 ; multiply A * B C2/0FA2: AA TAX C2/0FA3: BF 05 50 D8 LDA $D85005,X ; field effects C2/0FA7: 0C DF 11 TSB $11DF C2/0FAA: C2 20 REP #$20 C2/0FAC: BF 06 50 D8 LDA $D85006,X ; status 1 & 2 protection C2/0FB0: 0C D2 11 TSB $11D2 C2/0FB3: BF 08 50 D8 LDA $D85008,X ; status 3 set and relic effects C2/0FB7: 0C D4 11 TSB $11D4 C2/0FBA: BF 0A 50 D8 LDA $D8500A,X ; relic effects C2/0FBE: 0C D6 11 TSB $11D6 C2/0FC1: BF 0C 50 D8 LDA $D8500C,X C2/0FC5: 0C D8 11 TSB $11D8 C2/0FC8: BF 10 50 D8 LDA $D85010,X ; stat boosts C2/0FCC: A0 06 00 LDY #$0006 C2/0FCF: 48 PHA C2/0FD0: 29 0F 00 AND #$000F C2/0FD3: 89 08 00 BIT #$0008 C2/0FD6: F0 04 BEQ $0FDC ; branch if positive boost C2/0FD8: 49 F7 FF EOR #$FFF7 C2/0FDB: 1A INC C2/0FDC: 18 CLC C2/0FDD: 79 A0 11 ADC $11A0,Y ; add to stat C2/0FE0: 99 A0 11 STA $11A0,Y C2/0FE3: 68 PLA C2/0FE4: 4A LSR C2/0FE5: 4A LSR C2/0FE6: 4A LSR C2/0FE7: 4A LSR C2/0FE8: 88 DEY C2/0FE9: 88 DEY C2/0FEA: 10 E3 BPL $0FCF C2/0FEC: BF 1A 50 D8 LDA $D8501A,X ; evade/mblock C2/0FF0: DA PHX C2/0FF1: 48 PHA C2/0FF2: 29 0F 00 AND #$000F C2/0FF5: 0A ASL C2/0FF6: AA TAX C2/0FF7: BF 05 11 C2 LDA $C21105,X ; add boost value C2/0FFB: 18 CLC C2/0FFC: 6D A8 11 ADC $11A8 C2/0FFF: 8D A8 11 STA $11A8 C2/1002: 68 PLA C2/1003: 29 F0 00 AND #$00F0 C2/1006: 4A LSR C2/1007: 4A LSR C2/1008: 4A LSR C2/1009: AA TAX C2/100A: BF 05 11 C2 LDA $C21105,X C2/100E: 18 CLC C2/100F: 6D AA 11 ADC $11AA C2/1012: 8D AA 11 STA $11AA C2/1015: FA PLX C2/1016: E2 20 SEP #$20 C2/1018: BF 14 50 D8 LDA $D85014,X ; battle/defense power C2/101C: EB XBA C2/101D: BF 02 50 D8 LDA $D85002,X ; imp bit C2/1021: 0A ASL C2/1022: 0A ASL C2/1023: A5 FE LDA $FE C2/1025: B0 02 BCS $1029 ; branch if imp item C2/1027: 49 20 EOR #$20 ; toggle imp status C2/1029: 89 20 BIT #$20 C2/102B: D0 03 BNE $1030 ; branch if imp C2/102D: A9 01 LDA #$01 C2/102F: EB XBA C2/1030: EB XBA C2/1031: 85 FD STA $FD ; $FD = battle/defense power (or 0 if imp) C2/1033: BF 00 50 D8 LDA $D85000,X ; item type C2/1037: 29 07 AND #$07 C2/1039: 3A DEC C2/103A: F0 76 BEQ $10B2 ; branch if weapon ; shield, helmet, armor, or relic C2/103C: BF 19 50 D8 LDA $D85019,X ; status 2 set C2/1040: 0C BC 11 TSB $11BC C2/1043: BF 0F 50 D8 LDA $D8500F,X ; elements halved C2/1047: EB XBA C2/1048: BF 18 50 D8 LDA $D85018,X ; element weak point C2/104C: C2 20 REP #$20 C2/104E: 0C B8 11 TSB $11B8 C2/1051: BF 16 50 D8 LDA $D85016,X ; absorbed and nullified elements C2/1055: 0C B6 11 TSB $11B6 C2/1058: E2 20 SEP #$20 C2/105A: 18 CLC C2/105B: A5 FD LDA $FD C2/105D: 6D BA 11 ADC $11BA ; add item defense to character defense C2/1060: 90 02 BCC $1064 C2/1062: A9 FF LDA #$FF ; max 255 C2/1064: 8D BA 11 STA $11BA C2/1067: 18 CLC C2/1068: BF 15 50 D8 LDA $D85015,X ; add item magic defense to character magic defense C2/106C: 6D BB 11 ADC $11BB C2/106F: 90 02 BCC $1073 C2/1071: A9 FF LDA #$FF ; max 255 C2/1073: 8D BB 11 STA $11BB ; weapon jumps back in here C2/1076: 7A PLY C2/1077: A9 02 LDA #$02 ; clear earrings effect C2/1079: 1C D5 11 TRB $11D5 ; clear double earring effect C2/107C: F0 08 BEQ $1086 C2/107E: 0C D7 11 TSB $11D7 ; set single earring effect C2/1081: F0 03 BEQ $1086 C2/1083: 0C D5 11 TSB $11D5 ; set double earring effect C2/1086: 7B TDC C2/1087: BF 1B 50 D8 LDA $D8501B,X ; block animation C2/108B: 99 BE 11 STA $11BE,Y C2/108E: 89 0C BIT #$0C C2/1090: F0 1E BEQ $10B0 ; branch if item can't block C2/1092: 48 PHA C2/1093: 29 03 AND #$03 ; block graphic C2/1095: AA TAX C2/1096: 7B TDC C2/1097: 38 SEC C2/1098: 2A ROL ; A = 1 << block graphic index C2/1099: CA DEX C2/109A: 10 FC BPL $1098 C2/109C: EB XBA C2/109D: 68 PLA C2/109E: 89 04 BIT #$04 C2/10A0: F0 05 BEQ $10A7 ; branch if item doesn't block physical attacks C2/10A2: EB XBA C2/10A3: 0C D0 11 TSB $11D0 ; set physical block graphic C2/10A6: EB XBA C2/10A7: 89 08 BIT #$08 C2/10A9: F0 05 BEQ $10B0 ; branch if item doesn't block magic attacks C2/10AB: EB XBA C2/10AC: 0C D1 11 TSB $11D1 ; set magical block graphic C2/10AF: EB XBA C2/10B0: FA PLX C2/10B1: 60 RTS ; weapon C2/10B2: 7B TDC C2/10B3: 1A INC C2/10B4: A8 TAY C2/10B5: 1A INC C2/10B6: 85 FF STA $FF C2/10B8: A3 01 LDA $01,S ; item slot C2/10BA: C9 02 CMP #$02 C2/10BC: B0 B8 BCS $1076 ; branch if not in a hand C2/10BE: 3A DEC C2/10BF: F0 03 BEQ $10C4 ; branch if off-hand C2/10C1: 88 DEY C2/10C2: 06 FF ASL $FF C2/10C4: B9 C6 11 LDA $11C6,Y ; weapon number C2/10C7: 1A INC C2/10C8: D0 04 BNE $10CE ; branch if not unarmed C2/10CA: 06 FF ASL $FF C2/10CC: 06 FF ASL $FF C2/10CE: A5 FF LDA $FF C2/10D0: 0C CE 11 TSB $11CE ; set weapon hand bit C2/10D3: BF 16 50 D8 LDA $D85016,X ; C2/10D7: 99 B2 11 STA $11B2,Y C2/10DA: BF 0F 50 D8 LDA $D8500F,X ; elemental properties C2/10DE: 99 B0 11 STA $11B0,Y C2/10E1: A5 FD LDA $FD C2/10E3: 79 AC 11 ADC $11AC,Y ; add item battle power to character battle power C2/10E6: 90 02 BCC $10EA C2/10E8: A9 FF LDA #$FF ; max 255 C2/10EA: 99 AC 11 STA $11AC,Y C2/10ED: BF 15 50 D8 LDA $D85015,X ; hit rate C2/10F1: 99 AE 11 STA $11AE,Y C2/10F4: BF 12 50 D8 LDA $D85012,X ; spell cast C2/10F8: 99 B4 11 STA $11B4,Y C2/10FB: BF 13 50 D8 LDA $D85013,X ; weapon special effects C2/10FF: 99 DA 11 STA $11DA,Y C2/1102: 4C 76 10 JMP $1076 ; evade/mblock boost values EvasionTable: C2/1105: .DW 0, 10, 20, 30, 40, 50, -10, -20, -30, -40, -50 ; [ Update Battle Time ] _CharCounter: C2/111B: 08 PHP C2/111C: E2 30 SEP #$30 C2/111E: 20 1F 4D JSR $4D1F ; create pending user actions C2/1121: AD 41 2F LDA $2F41 ; check if battle time is stopped by battle program C2/1124: 2D 8F 3A AND $3A8F ; wait mode C2/1127: D0 62 BNE $118B C2/1129: AD 6C 3A LDA $3A6C ; previous frame counter value C2/112C: A2 02 LDX #$02 C2/112E: C5 0E CMP $0E ; current frame counter value C2/1130: F0 5E BEQ $1190 ; return if less than 2 frames have elapsed C2/1132: 1A INC C2/1133: CA DEX C2/1134: D0 F8 BNE $112E C2/1136: EE 3E 3A INC $3A3E ; increment turn counter C2/1139: D0 03 BNE $113E C2/113B: EE 3F 3A INC $3A3F C2/113E: 20 83 5A JSR $5A83 ; decrement status counters C2/1141: A2 12 LDX #$12 C2/1143: EC E2 3E CPX $3EE2 C2/1146: D0 03 BNE $114B C2/1148: 20 11 12 JSR $1211 ; decrement morph counter C2/114B: BD A0 3A LDA $3AA0,X C2/114E: 4A LSR C2/114F: 90 33 BCC $1184 ; branch if $3AA0.0 is clear C2/1151: EC F8 33 CPX $33F8 C2/1154: F0 2E BEQ $1184 C2/1156: 89 3A BIT #$3A C2/1158: D0 2A BNE $1184 C2/115A: 89 04 BIT #$04 C2/115C: F0 1E BEQ $117C C2/115E: AD 45 2F LDA $2F45 C2/1161: F0 16 BEQ $1179 C2/1163: BD E4 3E LDA $3EE4,X C2/1166: 89 02 BIT #$02 C2/1168: D0 0F BNE $1179 C2/116A: BD 18 30 LDA $3018,X C2/116D: F0 0A BEQ $1179 C2/116F: 2C 2C 3F BIT $3F2C C2/1172: D0 05 BNE $1179 C2/1174: 2C 40 3A BIT $3A40 C2/1177: F0 03 BEQ $117C C2/1179: 20 93 11 JSR $1193 ; update advance wait counter C2/117C: BD 19 32 LDA $3219,X C2/117F: F0 03 BEQ $1184 ; branch if atb gauge is full C2/1181: 20 BB 11 JSR $11BB ; update atb gauge C2/1184: CA DEX ; next target C2/1185: CA DEX C2/1186: 10 BB BPL $1143 C2/1188: 20 54 5C JSR $5C54 ; update gauge values/condemned number in graphics buffer C2/118B: A5 0E LDA $0E ; current frame counter value C2/118D: 8D 6C 3A STA $3A6C ; previous frame counter value C2/1190: 7B TDC C2/1191: 28 PLP C2/1192: 6B RTL ; [ Update Advance Wait Counter ] gaugeFull: C2/1193: C2 20 REP #$20 C2/1195: BD C8 3A LDA $3AC8,X ; atb gauge constant / 2 C2/1198: 4A LSR C2/1199: 18 CLC C2/119A: 7D B4 3A ADC $3AB4,X ; add to atb gauge counter C2/119D: 9D B4 3A STA $3AB4,X C2/11A0: E2 20 SEP #$20 C2/11A2: B0 06 BCS $11AA ; branch if it overflowed C2/11A4: EB XBA C2/11A5: DD 2C 32 CMP $322C,X C2/11A8: 90 10 BCC $11BA ; return if less than advance wait duration C2/11AA: A9 FF LDA #$FF C2/11AC: 9D 2C 32 STA $322C,X ; disable advance wait C2/11AF: 20 77 4E JSR $4E77 ; add action to queue C2/11B2: A9 20 LDA #$20 _OrFlag0X: C2/11B4: 1D A0 3A ORA $3AA0,X ; set $3AA0.5 C2/11B7: 9D A0 3A STA $3AA0,X C2/11BA: 60 RTS ; [ Update ATB Gauge ] actionCounter: C2/11BB: C2 21 REP #$21 C2/11BD: BD 18 32 LDA $3218,X ; atb gauge % C2/11C0: 7D C8 3A ADC $3AC8,X ; add atb constant C2/11C3: 9D 18 32 STA $3218,X C2/11C6: E2 20 SEP #$20 C2/11C8: 90 F0 BCC $11BA ; return if it didn't overflow C2/11CA: E0 08 CPX #$08 C2/11CC: B0 03 BCS $11D1 ; branch if a monster C2/11CE: 20 E2 5B JSR $5BE2 ; create immediate action for running away C2/11D1: 9E 19 32 STZ $3219,X ; clear atb gauge % C2/11D4: 9E B5 3A STZ $3AB5,X ; clear advance wait counter C2/11D7: A9 FF LDA #$FF C2/11D9: 9D 2C 32 STA $322C,X ; disable advance wait C2/11DC: A9 08 LDA #$08 C2/11DE: 3C A0 3A BIT $3AA0,X C2/11E1: D0 07 BNE $11EA ; branch if $3AA0.3 is set C2/11E3: 20 B4 11 JSR $11B4 ; set $3AA0.3 C2/11E6: 89 02 BIT #$02 C2/11E8: F0 24 BEQ $120E ; branch if $3AA0.1 is clear (advance wait is enabled) C2/11EA: A9 80 LDA #$80 C2/11EC: 20 B4 11 JSR $11B4 ; set $3AA0.7 (allow battle menu to open) ; fall through ; [ open battle menu (character) or add action to advance wait queue (monster) ] _InputWindowOpen: C2/11EF: E0 08 CPX #$08 C2/11F1: B0 1B BCS $120E ; branch if a monster C2/11F3: BD 05 32 LDA $3205,X C2/11F6: 10 C2 BPL $11BA ; return if $3205.7 is clear C2/11F8: A5 B1 LDA $B1 C2/11FA: 30 BE BMI $11BA ; return if battle menus are disabled C2/11FC: A9 04 LDA #$04 C2/11FE: 20 B4 11 JSR $11B4 ; set $3AA0.2 (ogre nix can't break) C2/1201: BD 4D 3E LDA $3E4D,X ; set carry if using control battle menu ($3E4D.0) C2/1204: 4A LSR C2/1205: 8A TXA C2/1206: 6A ROR C2/1207: 85 10 STA $10 ; $10 = attacker, msb set if using control C2/1209: A9 02 LDA #$02 C2/120B: 4C 11 64 JMP $6411 ; do battle graphics command $02 (open battle menu) autoCommand: C2/120E: 4C 66 4E JMP $4E66 ; add action to advance wait queue ; [ Decrement Morph Counter ] CharCounter_trans: C2/1211: C2 20 REP #$20 C2/1213: 38 SEC C2/1214: AD 30 3F LDA $3F30 ; morph counter C2/1217: ED 32 3F SBC $3F32 ; subtract morph counter speed C2/121A: 8D 30 3F STA $3F30 C2/121D: E2 20 SEP #$20 C2/121F: B0 13 BCS $1234 ; branch if counter didn't expire C2/1221: 9C 31 3F STZ $3F31 ; clear morph counter C2/1224: 20 36 0B JSR $0B36 ; update SRAM morph counter C2/1227: A9 FF LDA #$FF C2/1229: 8D E2 3E STA $3EE2 ; clear morphed character index C2/122C: A9 04 LDA #$04 C2/122E: 8D 7A 3A STA $3A7A ; command $04 (revert) C2/1231: 20 B2 4E JSR $4EB2 ; create counterattack action C2/1234: AD 31 3F LDA $3F31 C2/1237: 9D 04 3B STA $3B04,X ; update visible morph gauge value C2/123A: 60 RTS ; [ Check True Knight/Love Token ] _Defend: C2/123B: DA PHX C2/123C: 08 PHP C2/123D: A5 B2 LDA $B2 C2/123F: 89 02 00 BIT #$0002 C2/1242: D0 61 BNE $12A5 ; return if not critical C2/1244: A5 B8 LDA $B8 C2/1246: F0 5D BEQ $12A5 ; return if there are no targets C2/1248: A0 FF LDY #$FF C2/124A: 84 F4 STY $F4 ; $F4 = bodyguard target C2/124C: 20 F9 51 JSR $51F9 ; get the first valid target in +A C2/124F: 84 F8 STY $F8 ; $F8 = original target C2/1251: 64 F2 STZ $F2 ; +$F2 = hp of bodyguard target with highest hp remaining C2/1253: DA PHX C2/1254: BE 6C 33 LDX $336C,Y C2/1257: 30 06 BMI $125F ; branch if bodyguard target is invalid C2/1259: 20 C0 12 JSR $12C0 ; check true knight/love token target C2/125C: 20 A8 12 JSR $12A8 ; set true knight/love token target C2/125F: FA PLX C2/1260: B9 E4 3E LDA $3EE4,Y C2/1263: 89 00 02 BIT #$0200 C2/1266: F0 3D BEQ $12A5 C2/1268: 89 10 00 BIT #$0010 C2/126B: D0 38 BNE $12A5 C2/126D: B9 58 33 LDA $3358,Y C2/1270: 10 33 BPL $12A5 ; return if seize target is valid C2/1272: A9 0F 00 LDA #$000F ; +$F0 = character bit masks C2/1275: C0 08 CPY #$08 C2/1277: 90 03 BCC $127C ; branch if a character C2/1279: A9 00 3F LDA #$3F00 C2/127C: 85 F0 STA $F0 ; +$F0 = monster bit masks C2/127E: B9 18 30 LDA $3018,Y C2/1281: 1D 18 30 ORA $3018,X C2/1284: 14 F0 TRB $F0 C2/1286: A2 12 LDX #$12 C2/1288: BD 58 3C LDA $3C58,X C2/128B: 89 40 00 BIT #$0040 C2/128E: F0 0A BEQ $129A ; branch if no true knight C2/1290: BD 18 30 LDA $3018,X C2/1293: 24 F0 BIT $F0 C2/1295: F0 03 BEQ $129A C2/1297: 20 C0 12 JSR $12C0 ; check true knight/love token target C2/129A: CA DEX C2/129B: CA DEX C2/129C: 10 EA BPL $1288 C2/129E: A5 F2 LDA $F2 C2/12A0: F0 03 BEQ $12A5 C2/12A2: 20 A8 12 JSR $12A8 ; set true knight/love token target C2/12A5: 28 PLP C2/12A6: FA PLX C2/12A7: 60 RTS ; [ Set True Knight/Love Token Target ] setToBit: C2/12A8: A6 F4 LDX $F4 C2/12AA: 30 13 BMI $12BF ; return if target is invalid C2/12AC: C4 F8 CPY $F8 C2/12AE: D0 0F BNE $12BF C2/12B0: 86 F8 STX $F8 C2/12B2: 84 A8 STY $A8 C2/12B4: 46 A8 LSR $A8 C2/12B6: 08 PHP C2/12B7: C2 20 REP #$20 C2/12B9: BD 18 30 LDA $3018,X C2/12BC: 85 B8 STA $B8 C2/12BE: 28 PLP C2/12BF: 60 RTS ; [ Check True Knight/Love Token Target ] setDefendBit: C2/12C0: 08 PHP C2/12C1: C2 20 REP #$20 C2/12C3: BD A0 3A LDA $3AA0,X C2/12C6: 4A LSR C2/12C7: 90 2A BCC $12F3 ; branch if $3AA0.0 is clear (target is not present) C2/12C9: BD B8 32 LDA $32B8,X C2/12CC: 10 25 BPL $12F3 ; branch if controlling something C2/12CE: BD 58 33 LDA $3358,X C2/12D1: 10 20 BPL $12F3 C2/12D3: BD E4 3E LDA $3EE4,X C2/12D6: 89 D2 A0 BIT #$A0D2 C2/12D9: D0 18 BNE $12F3 C2/12DB: BD F8 3E LDA $3EF8,X C2/12DE: 89 10 32 BIT #$3210 C2/12E1: D0 10 BNE $12F3 C2/12E3: BD 18 30 LDA $3018,X C2/12E6: 04 A6 TSB $A6 C2/12E8: BD F4 3B LDA $3BF4,X ; current hp C2/12EB: C5 F2 CMP $F2 C2/12ED: 90 04 BCC $12F3 C2/12EF: 85 F2 STA $F2 C2/12F1: 86 F4 STX $F4 C2/12F3: 28 PLP C2/12F4: 60 RTS ; [ Update HP/MP After Damage ] ; C: set = target died, clear = target didn't die _Deal: C2/12F5: DA PHX C2/12F6: 08 PHP C2/12F7: A2 02 LDX #$02 C2/12F9: AD A2 11 LDA $11A2 C2/12FC: 30 02 BMI $1300 ; branch if mp damage C2/12FE: A2 00 LDX #$00 C2/1300: FC 1F 13 JSR ($131F,X) ; hp/mp damage C2/1303: E2 20 SEP #$20 C2/1305: 90 15 BCC $131C ; return if target didn't die C2/1307: A3 02 LDA $02,S ; attacker C2/1309: AA TAX C2/130A: 86 EE STX $EE C2/130C: 20 2F 36 JSR $362F ; save previous attacker C2/130F: C4 EE CPY $EE C2/1311: F0 09 BEQ $131C ; branch if attacker was target C2/1313: 99 7C 32 STA $327C,Y ; set target that just attacked you C2/1316: B9 18 30 LDA $3018,Y C2/1319: 1C 19 34 TRB $3419 ; disable black belt effect C2/131C: 28 PLP C2/131D: FA PLX C2/131E: 60 RTS ; hp/mp damage jump table table_Deal: C2/131F: .DW $1323, $1350 ; 0: hp damage C2/1323: 20 A7 13 JSR $13A7 C2/1326: F0 13 BEQ $133B C2/1328: 90 13 BCC $133D C2/132A: 18 CLC C2/132B: 79 F4 3B ADC $3BF4,Y C2/132E: B0 05 BCS $1335 C2/1330: D9 1C 3C CMP $3C1C,Y C2/1333: 90 03 BCC $1338 C2/1335: B9 1C 3C LDA $3C1C,Y C2/1338: 99 F4 3B STA $3BF4,Y C2/133B: 18 CLC C2/133C: 60 RTS C2/133D: 49 FF FF EOR #$FFFF C2/1340: 85 EE STA $EE C2/1342: B9 F4 3B LDA $3BF4,Y C2/1345: E5 EE SBC $EE C2/1347: 99 F4 3B STA $3BF4,Y C2/134A: F0 44 BEQ $1390 ; target reached 0 hp C2/134C: B0 EE BCS $133C ; return if target is still alive C2/134E: 80 40 BRA $1390 ; target reached 0 hp ; 1: mp damage C2/1350: 20 A7 13 JSR $13A7 ; calculate net damage C2/1353: F0 E6 BEQ $133B ; return if no damage was taken or healed C2/1355: 90 14 BCC $136B ; branch if damage was taken C2/1357: 18 CLC C2/1358: 79 08 3C ADC $3C08,Y ; add to current mp C2/135B: B0 05 BCS $1362 C2/135D: D9 30 3C CMP $3C30,Y C2/1360: 90 03 BCC $1365 C2/1362: B9 30 3C LDA $3C30,Y C2/1365: 99 08 3C STA $3C08,Y C2/1368: 18 CLC C2/1369: 80 1F BRA $138A C2/136B: 49 FF FF EOR #$FFFF C2/136E: 85 EE STA $EE C2/1370: B9 08 3C LDA $3C08,Y ; subtract from current mp C2/1373: E5 EE SBC $EE C2/1375: 99 08 3C STA $3C08,Y C2/1378: F0 02 BEQ $137C C2/137A: B0 0E BCS $138A C2/137C: 7B TDC C2/137D: 99 08 3C STA $3C08,Y C2/1380: B9 95 3C LDA $3C95,Y C2/1383: 4A LSR C2/1384: 90 03 BCC $1389 ; branch if target doesn't die at 0 mp C2/1386: 20 90 13 JSR $1390 ; target reached 0 hp C2/1389: 38 SEC C2/138A: A9 80 00 LDA #$0080 ; update enabled spells/espers C2/138D: 4C 4C 46 JMP $464C ; set character update flag(s) ; [ Target Reached 0 HP ] ; or 0 mp if they die at 0 mp dead_sub: C2/1390: 38 SEC C2/1391: 7B TDC C2/1392: AA TAX C2/1393: 8E 89 3A STX $3A89 ; disable random weapon spellcast C2/1396: 99 F4 3B STA $3BF4,Y ; set current hp to zero C2/1399: B9 E4 3E LDA $3EE4,Y C2/139C: 89 02 00 BIT #$0002 C2/139F: D0 9B BNE $133C ; branch if target is a zombie C2/13A1: A9 80 00 LDA #$0080 C2/13A4: 4C 32 0E JMP $0E32 ; set wound status ; [ Calculate Net Damage ] ; A: (damage healed) - (damage taken) (out) ; C: set = damage was taken, clear = damage was healed (out) deal_sub: C2/13A7: B9 D0 33 LDA $33D0,Y ; damage taken C2/13AA: 1A INC C2/13AB: F0 0F BEQ $13BC ; branch if invalid C2/13AD: B9 18 30 LDA $3018,Y C2/13B0: 2C 3C 3A BIT $3A3C C2/13B3: F0 04 BEQ $13B9 ; branch if target is not invincible C2/13B5: 7B TDC C2/13B6: 99 D0 33 STA $33D0,Y C2/13B9: B9 D0 33 LDA $33D0,Y ; damage taken C2/13BC: 85 EE STA $EE C2/13BE: AD 81 3A LDA $3A81 ; golem block targets ($3A82) C2/13C1: 2D 82 3A AND $3A82 ; dog block targets ($3A83) C2/13C4: 30 02 BMI $13C8 ; branch if both are invalid C2/13C6: 64 EE STZ $EE ; 0 damage taken C2/13C8: B9 E4 33 LDA $33E4,Y ; damage healed C2/13CB: 1A INC C2/13CC: F0 01 BEQ $13CF C2/13CE: 3A DEC C2/13CF: 38 SEC C2/13D0: E5 EE SBC $EE C2/13D2: 60 RTS ; [ Execute Command ] _Dispatcher: C2/13D3: DA PHX C2/13D4: 08 PHP C2/13D5: 20 39 26 JSR $2639 ; init battle script command C2/13D8: A9 10 LDA #$10 C2/13DA: 04 B0 TSB $B0 ; disable pre-magic swirly animation C2/13DC: A9 06 LDA #$06 C2/13DE: 85 B4 STA $B4 ; battle script command $06 (show battle animation) C2/13E0: 64 BD STZ $BD ; clear extra damage multiplier C2/13E2: 9C 89 3A STZ $3A89 ; disable random weapon spellcast C2/13E5: 9C C9 3E STZ $3EC9 ; clear number of targets C2/13E8: 9C 8E 3A STZ $3A8E ; disable dragon horn effect C2/13EB: 9B TXY C2/13EC: A9 FF LDA #$FF ; set lots of flags C2/13EE: 85 B2 STA $B2 C2/13F0: 85 B3 STA $B3 C2/13F2: A2 0F LDX #$0F C2/13F4: 9D 10 34 STA $3410,X ; clear some variables C2/13F7: CA DEX C2/13F8: 10 FA BPL $13F4 C2/13FA: A5 B5 LDA $B5 ; command C2/13FC: 0A ASL C2/13FD: AA TAX C2/13FE: FC C7 19 JSR ($19C7,X) ; command jump table C2/1401: A9 FF LDA #$FF C2/1403: 8D 17 34 STA $3417 ; clear character using sketch C2/1406: 20 9B 62 JSR $629B ; add battle script command to queue C2/1409: 20 9B 06 JSR $069B ; update special status (seize, control, love token, etc.) C2/140C: 20 5B 4C JSR $4C5B ; check for counterattacks C2/140F: 20 29 14 JSR $1429 ; check dead monsters C2/1412: A9 04 LDA #$04 C2/1414: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/1417: 20 B9 4A JSR $4AB9 ; update living/dead targets C2/141A: 20 7A 14 JSR $147A ; update targets that are present C2/141D: 20 3F 08 JSR $083F ; update targets after each command C2/1420: 20 4F 14 JSR $144F ; update targets that are not present C2/1423: 20 C7 62 JSR $62C7 ; add obtained items to inventory C2/1426: 28 PLP C2/1427: FA PLX C2/1428: 60 RTS ; [ Check Dead Monsters ] _MonDead: C2/1429: A2 0A LDX #$0A C2/142B: BD 21 30 LDA $3021,X ; monster mask C2/142E: 2C 3A 3A BIT $3A3A C2/1431: F0 17 BEQ $144A ; skip if monster is still alive C2/1433: EB XBA C2/1434: BD 01 3F LDA $3F01,X ; status 4 C2/1437: 89 20 BIT #$20 C2/1439: D0 0B BNE $1446 ; mark monster as dead if it has hide status C2/143B: BD 54 3E LDA $3E54,X C2/143E: 30 06 BMI $1446 ; skip if piranha status $3E4C.7 C2/1440: BD D5 32 LDA $32D5,X ; pointer to next pending counterattack C2/1443: 1A INC C2/1444: D0 04 BNE $144A ; branch if there is a counterattack pending C2/1446: EB XBA C2/1447: 1C 2F 2F TRB $2F2F ; mark monster as dead C2/144A: CA DEX C2/144B: CA DEX C2/144C: 10 DD BPL $142B C2/144E: 60 RTS ; [ Update Targets That Are Not Present ] _TimeEnable2: C2/144F: 08 PHP C2/1450: C2 20 REP #$20 C2/1452: A2 12 LDX #$12 C2/1454: BD 18 30 LDA $3018,X ; character/monster mask C2/1457: 1C 4C 2F TRB $2F4C ; clear "can't be targetted" flag C2/145A: F0 18 BEQ $1474 ; skip if it wasn't set C2/145C: E2 20 SEP #$20 C2/145E: EB XBA C2/145F: 1C 2F 2F TRB $2F2F ; clear "monster not dead" flag C2/1462: A9 FE LDA #$FE C2/1464: 20 92 07 JSR $0792 ; clear $3AA0.0 (make target not present) C2/1467: BD F9 3E LDA $3EF9,X ; set hide status C2/146A: 09 20 ORA #$20 C2/146C: 9D F9 3E STA $3EF9,X C2/146F: 20 C8 07 JSR $07C8 ; update zinger, love token, charm status C2/1472: C2 20 REP #$20 C2/1474: CA DEX ; next target C2/1475: CA DEX C2/1476: 10 DC BPL $1454 C2/1478: 28 PLP C2/1479: 60 RTS ; [ Update Targets That Are Present ] _TimeEnable: C2/147A: 08 PHP C2/147B: C2 20 REP #$20 C2/147D: A2 12 LDX #$12 C2/147F: BD 18 30 LDA $3018,X ; character/monster mask C2/1482: 1C 4E 2F TRB $2F4E ; clear "can be targetted" flag C2/1485: F0 20 BEQ $14A7 ; skip if it wasn't set C2/1487: E2 20 SEP #$20 C2/1489: EB XBA C2/148A: 0C 2F 2F TSB $2F2F ; set "monster not dead" flag C2/148D: A9 01 LDA #$01 C2/148F: 20 B4 11 JSR $11B4 ; set $3AA0.0 (make target present) C2/1492: BD E4 3E LDA $3EE4,X ; status 1 C2/1495: 29 1D AND #$1D ; clear wound, petrify, imp, zombie C2/1497: 9D E4 3E STA $3EE4,X C2/149A: BD F9 3E LDA $3EF9,X ; status 4 C2/149D: 29 DF AND #$DF ; clear hide C2/149F: 9D F9 3E STA $3EF9,X C2/14A2: 20 A0 2D JSR $2DA0 ; init monster first strike C2/14A5: C2 20 REP #$20 C2/14A7: CA DEX ; next character/monster C2/14A8: CA DEX C2/14A9: 10 D4 BPL $147F C2/14AB: 28 PLP C2/14AC: 60 RTS ; [ Update Targets Getting Hit in the Back ] _Direction: C2/14AD: AD A2 11 LDA $11A2 C2/14B0: 4A LSR C2/14B1: 90 5E BCC $1511 ; return if attack doesn't deal physical damage C2/14B3: E0 08 CPX #$08 C2/14B5: B0 2E BCS $14E5 ; branch if attacker is a monster ; character attacker C2/14B7: AD 1F 20 LDA $201F C2/14BA: C9 03 CMP #$03 C2/14BC: D0 53 BNE $1511 ; return if a side attack C2/14BE: BD 18 30 LDA $3018,X C2/14C1: 2D 50 2F AND $2F50 C2/14C4: 85 EE STA $EE C2/14C6: A0 0A LDY #$0A C2/14C8: A5 EE LDA $EE C2/14CA: EB XBA C2/14CB: B9 21 30 LDA $3021,Y C2/14CE: 2C 51 2F BIT $2F51 C2/14D1: F0 05 BEQ $14D8 C2/14D3: EB XBA C2/14D4: 5D 18 30 EOR $3018,X C2/14D7: EB XBA C2/14D8: EB XBA C2/14D9: D0 04 BNE $14DF C2/14DB: EB XBA C2/14DC: 0C 55 3A TSB $3A55 ; monster getting hit in the back C2/14DF: 88 DEY C2/14E0: 88 DEY C2/14E1: 10 E5 BPL $14C8 C2/14E3: 80 2C BRA $1511 ; monster attacker C2/14E5: AD 1F 20 LDA $201F C2/14E8: C9 02 CMP #$02 C2/14EA: D0 25 BNE $1511 ; return if a pincer attack C2/14EC: BD 19 30 LDA $3019,X C2/14EF: 2D 51 2F AND $2F51 C2/14F2: 85 EE STA $EE C2/14F4: A0 06 LDY #$06 C2/14F6: A5 EE LDA $EE C2/14F8: EB XBA C2/14F9: B9 18 30 LDA $3018,Y C2/14FC: 2C 50 2F BIT $2F50 C2/14FF: F0 05 BEQ $1506 C2/1501: EB XBA C2/1502: 5D 19 30 EOR $3019,X C2/1505: EB XBA C2/1506: EB XBA C2/1507: D0 04 BNE $150D C2/1509: EB XBA C2/150A: 0C 54 3A TSB $3A54 ; character getting hit in the back C2/150D: 88 DEY C2/150E: 88 DEY C2/150F: 10 E5 BPL $14F6 C2/1511: 60 RTS ; [ Double Damage for Spears (when using jump) ] ; A: item index lanceCheck: C2/1512: C9 1D CMP #$1D ; mithril pike C2/1514: 90 08 BCC $151E C2/1516: C9 25 CMP #$25 ; imperial (after imp halberd) C2/1518: B0 04 BCS $151E C2/151A: A9 02 LDA #$02 C2/151C: 85 BD STA $BD ; other damage multiplier C2/151E: 60 RTS ; [ Command $0D: Sketch ] C2/151F: BB TYX C2/1520: 20 8A 29 JSR $298A C2/1523: A9 FF LDA #$FF C2/1525: 85 B7 STA $B7 C2/1527: A9 AA LDA #$AA ; special effect $55 (sketch) C2/1529: 8D A9 11 STA $11A9 C2/152C: 20 7B 31 JSR $317B ; execute attacks C2/152F: AC 17 34 LDY $3417 ; return if no character used sketch C2/1532: 30 EA BMI $151E C2/1534: 8E 17 34 STX $3417 C2/1537: B9 81 3C LDA $3C81,Y C2/153A: 9D 81 3C STA $3C81,X C2/153D: B9 2D 32 LDA $322D,Y C2/1540: 9D 2D 32 STA $322D,X C2/1543: 9C 15 34 STZ $3415 C2/1546: AD 00 34 LDA $3400 C2/1549: 85 B6 STA $B6 C2/154B: A9 FF LDA #$FF C2/154D: 8D 00 34 STA $3400 C2/1550: A9 01 LDA #$01 C2/1552: 04 B2 TSB $B2 C2/1554: A5 B6 LDA $B6 C2/1556: 20 BF 1D JSR $1DBF C2/1559: 85 B5 STA $B5 ; command C2/155B: 0A ASL C2/155C: AA TAX C2/155D: 7C C7 19 JMP ($19C7,X) ; [ Command $10: Rage ] C2/1560: B9 A8 33 LDA $33A8,Y C2/1563: 1A INC C2/1564: D0 13 BNE $1579 C2/1566: AE 93 3A LDX $3A93 C2/1569: E0 14 CPX #$14 C2/156B: 90 02 BCC $156F C2/156D: A2 00 LDX #$00 C2/156F: BD A8 33 LDA $33A8,X C2/1572: 99 A8 33 STA $33A8,Y C2/1575: 7B TDC C2/1576: 99 A9 33 STA $33A9,Y C2/1579: 8C 93 3A STY $3A93 C2/157C: B9 F9 3E LDA $3EF9,Y C2/157F: 09 01 ORA #$01 C2/1581: 99 F9 3E STA $3EF9,Y C2/1584: 20 10 06 JSR $0610 C2/1587: BB TYX C2/1588: 20 50 26 JSR $2650 ; update death/poison immunity C2/158B: 20 54 15 JSR $1554 C2/158E: 4C 75 26 JMP $2675 ; update status immunity ; [ Command $05: Steal ] C2/1591: BB TYX C2/1592: 20 8A 29 JSR $298A C2/1595: A9 A4 LDA #$A4 ; special effect $52 (steal) C2/1597: 8D A9 11 STA $11A9 C2/159A: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $0A: Blitz ] C2/159D: A5 B6 LDA $B6 C2/159F: 10 0F BPL $15B0 C2/15A1: A9 01 LDA #$01 C2/15A3: 14 B3 TRB $B3 C2/15A5: A9 43 LDA #$43 C2/15A7: 8D 01 34 STA $3401 C2/15AA: A9 5D LDA #$5D C2/15AC: 85 B6 STA $B6 C2/15AE: 80 05 BRA $15B5 C2/15B0: A9 08 LDA #$08 C2/15B2: 8D 12 34 STA $3412 C2/15B5: A5 B6 LDA $B6 C2/15B7: 48 PHA C2/15B8: 38 SEC C2/15B9: E9 5D SBC #$5D C2/15BB: 85 B6 STA $B6 C2/15BD: 68 PLA C2/15BE: BB TYX C2/15BF: 20 C1 19 JSR $19C1 C2/15C2: 20 51 29 JSR $2951 ; update hit rate and level C2/15C5: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $00: Fight ] C2/15C8: C0 08 CPY #$08 C2/15CA: B0 44 BCS $1610 C2/15CC: AD 3F 3A LDA $3A3F C2/15CF: C9 03 CMP #$03 C2/15D1: 90 3D BCC $1610 C2/15D3: B9 E5 3E LDA $3EE5,Y C2/15D6: 89 02 BIT #$02 C2/15D8: F0 36 BEQ $1610 C2/15DA: 89 24 BIT #$24 C2/15DC: D0 32 BNE $1610 C2/15DE: B9 E4 3E LDA $3EE4,Y C2/15E1: 89 12 BIT #$12 C2/15E3: D0 2B BNE $1610 C2/15E5: A5 B9 LDA $B9 C2/15E7: F0 27 BEQ $1610 C2/15E9: 20 5A 4B JSR $4B5A ; random number (0..255) C2/15EC: 29 0F AND #$0F C2/15EE: D0 20 BNE $1610 C2/15F0: B9 18 30 LDA $3018,Y C2/15F3: 0C 2F 3F TSB $3F2F C2/15F6: D0 18 BNE $1610 C2/15F8: B9 D8 3E LDA $3ED8,Y C2/15FB: C9 0C CMP #$0C C2/15FD: F0 05 BEQ $1604 C2/15FF: C9 0B CMP #$0B C2/1601: B0 0D BCS $1610 C2/1603: 1A INC C2/1604: 3A DEC C2/1605: 09 F0 ORA #$F0 C2/1607: 85 B6 STA $B6 C2/1609: A9 10 LDA #$10 C2/160B: 14 B0 TRB $B0 C2/160D: 4C 14 17 JMP $1714 ; [ Command $06: Capture ] C2/1610: C0 08 CPY #$08 C2/1612: B0 07 BCS $161B C2/1614: B9 D8 3E LDA $3ED8,Y C2/1617: C9 0D CMP #$0D C2/1619: F0 20 BEQ $163B C2/161B: BB TYX C2/161C: BD 58 3C LDA $3C58,X C2/161F: 4A LSR C2/1620: A9 01 LDA #$01 C2/1622: 90 02 BCC $1626 C2/1624: A9 07 LDA #$07 C2/1626: 8D 70 3A STA $3A70 C2/1629: 20 4D 5A JSR $5A4D ; remove invalid targets C2/162C: 20 65 38 JSR $3865 C2/162F: A9 02 LDA #$02 C2/1631: 14 B2 TRB $B2 C2/1633: A5 B5 LDA $B5 C2/1635: 8D 13 34 STA $3413 C2/1638: 4C 7B 31 JMP $317B ; execute attacks C2/163B: 64 FE STZ $FE C2/163D: A9 C6 LDA #$C6 C2/163F: D9 D0 3C CMP $3CD0,Y C2/1642: F0 05 BEQ $1649 C2/1644: D9 D1 3C CMP $3CD1,Y C2/1647: D0 0D BNE $1656 C2/1649: 7B TDC C2/164A: B9 18 30 LDA $3018,Y C2/164D: 4D 74 3A EOR $3A74 C2/1650: F0 04 BEQ $1656 C2/1652: A9 04 LDA #$04 C2/1654: 04 FE TSB $FE C2/1656: A9 C5 LDA #$C5 C2/1658: D9 D0 3C CMP $3CD0,Y C2/165B: F0 05 BEQ $1662 C2/165D: D9 D1 3C CMP $3CD1,Y C2/1660: D0 04 BNE $1666 C2/1662: A9 08 LDA #$08 C2/1664: 04 FE TSB $FE C2/1666: A5 FE LDA $FE C2/1668: AA TAX C2/1669: 09 30 ORA #$30 C2/166B: 0A ASL C2/166C: 0A ASL C2/166D: 20 47 52 JSR $5247 ; choose umaro's attack C2/1670: 8A TXA C2/1671: 0A ASL C2/1672: AA TAX C2/1673: 7C 76 16 JMP ($1676,X) C2/1676: .DW $1692, $170D, $167E, $161B C2/167E: BB TYX C2/167F: 20 C7 17 JSR $17C7 C2/1682: A9 20 LDA #$20 C2/1684: 0C A2 11 TSB $11A2 C2/1687: A9 02 LDA #$02 C2/1689: 14 B2 TRB $B2 C2/168B: A9 23 LDA #$23 C2/168D: 85 B5 STA $B5 C2/168F: 4C 7B 31 JMP $317B ; execute attacks C2/1692: BB TYX C2/1693: 20 C7 17 JSR $17C7 C2/1696: BD 18 30 LDA $3018,X C2/1699: 4D 74 3A EOR $3A74 C2/169C: A2 06 LDX #$06 C2/169E: 3C 18 30 BIT $3018,X C2/16A1: F0 1C BEQ $16BF C2/16A3: EB XBA C2/16A4: BD F9 3E LDA $3EF9,X C2/16A7: 89 20 BIT #$20 C2/16A9: F0 07 BEQ $16B2 C2/16AB: EB XBA C2/16AC: 5D 18 30 EOR $3018,X C2/16AF: EB XBA C2/16B0: 80 0C BRA $16BE C2/16B2: BD E5 3E LDA $3EE5,X C2/16B5: 89 A0 BIT #$A0 C2/16B7: F0 05 BEQ $16BE C2/16B9: EB XBA C2/16BA: BD 18 30 LDA $3018,X C2/16BD: EB XBA C2/16BE: EB XBA C2/16BF: CA DEX C2/16C0: CA DEX C2/16C1: 10 DB BPL $169E C2/16C3: 48 PHA C2/16C4: 7B TDC C2/16C5: 68 PLA C2/16C6: F0 B6 BEQ $167E C2/16C8: 20 2A 52 JSR $522A ; pick a random bit set in A C2/16CB: 20 F9 51 JSR $51F9 ; get the first valid target in +A C2/16CE: BB TYX C2/16CF: BD D8 3E LDA $3ED8,X C2/16D2: C9 0A CMP #$0A C2/16D4: D0 04 BNE $16DA C2/16D6: A9 02 LDA #$02 C2/16D8: 14 B3 TRB $B3 C2/16DA: BD 68 3B LDA $3B68,X C2/16DD: 7D 69 3B ADC $3B69,X C2/16E0: 90 02 BCC $16E4 C2/16E2: A9 FE LDA #$FE C2/16E4: 6D A6 11 ADC $11A6 C2/16E7: 90 02 BCC $16EB C2/16E9: A9 FF LDA #$FF C2/16EB: 8D A6 11 STA $11A6 C2/16EE: A9 24 LDA #$24 C2/16F0: 85 B5 STA $B5 C2/16F2: A9 20 LDA #$20 C2/16F4: 0C A2 11 TSB $11A2 C2/16F7: A9 02 LDA #$02 C2/16F9: 14 B2 TRB $B2 C2/16FB: A9 01 LDA #$01 C2/16FD: 04 BA TSB $BA C2/16FF: BD E5 3E LDA $3EE5,X C2/1702: 29 A0 AND #$A0 C2/1704: 1D FD 3D ORA $3DFD,X C2/1707: 9D FD 3D STA $3DFD,X C2/170A: 4C 7B 31 JMP $317B ; execute attacks C2/170D: 9C 15 34 STZ $3415 C2/1710: A9 54 LDA #$54 C2/1712: 85 B6 STA $B6 C2/1714: A9 02 LDA #$02 C2/1716: 85 B5 STA $B5 C2/1718: 80 45 BRA $175F ; [ Command $1B: Shock ] C2/171A: A9 82 LDA #$82 ; attack $82 (Shock) C2/171C: 80 02 BRA $1720 ; [ Command $1A: Health ] C2/171E: A9 2E LDA #$2E ; attack $2E (Cure 2) C2/1720: 85 B6 STA $B6 C2/1722: A9 05 LDA #$05 ; attack name type = 5 (???) C2/1724: 80 3F BRA $1765 ; [ Command $0F: Slot ] C2/1726: A9 10 LDA #$10 C2/1728: 14 B0 TRB $B0 C2/172A: A5 B6 LDA $B6 C2/172C: C9 94 CMP #$94 ; attack $94 (L.5 Doom) C2/172E: D0 04 BNE $1734 C2/1730: A9 07 LDA #$07 ; attack name type = 7 (joker doom [slot]) C2/1732: 80 31 BRA $1765 C2/1734: C9 51 CMP #$51 ; attack $51 (Fire Skean) C2/1736: 90 2B BCC $1763 C2/1738: C9 FE CMP #$FE ; attack $FE (Lagomorph) C2/173A: D0 05 BNE $1741 C2/173C: A9 07 LDA #$07 ; battle message $07 (Mugu mugu?) C2/173E: 8D 01 34 STA $3401 ; [ Command $02/$17: Magic/X-Magic ] C2/1741: C0 08 CPY #$08 C2/1743: B0 1A BCS $175F C2/1745: B9 D8 3E LDA $3ED8,Y C2/1748: C9 00 CMP #$00 C2/174A: D0 13 BNE $175F C2/174C: A9 02 LDA #$02 C2/174E: 1C BC 3E TRB $3EBC C2/1751: F0 0C BEQ $175F C2/1753: A2 06 LDX #$06 ; battle event $06 (Locke/Edgar/Terra magic) C2/1755: A9 23 LDA #$23 ; command $23 (battle event) C2/1757: 20 91 4E JSR $4E91 ; create immediate action C2/175A: A9 20 LDA #$20 C2/175C: 0C A4 11 TSB $11A4 ; [ Command $0C/$1D: Lore/Magitek ] _ActBlueMagic0: C2/175F: A9 00 LDA #$00 ; attack name type = 0 (normal) C2/1761: 80 02 BRA $1765 ; [ Command $19: Summon ] C2/1763: A9 02 LDA #$02 ; attack name type = 2 (esper) Magic_ATMK: C2/1765: 8D 12 34 STA $3412 C2/1768: BB TYX C2/1769: A5 B6 LDA $B6 C2/176B: 20 C1 19 JSR $19C1 C2/176E: 20 51 29 JSR $2951 ; update hit rate and level C2/1771: A5 B5 LDA $B5 C2/1773: C9 0F CMP #$0F C2/1775: D0 03 BNE $177A ; branch if not slot (magicite) C2/1777: 9C A5 11 STZ $11A5 ; for slot espers, set mp cost to zero C2/177A: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $13: Dance ] C2/177D: B9 F8 3E LDA $3EF8,Y ; set dance status C2/1780: 09 01 ORA #$01 C2/1782: 99 F8 3E STA $3EF8,Y C2/1785: A9 FF LDA #$FF ; no background change C2/1787: 85 B7 STA $B7 C2/1789: B9 E1 32 LDA $32E1,Y C2/178C: 10 06 BPL $1794 ; branch if valid C2/178E: AD 6F 3A LDA $3A6F ; default dance battle background C2/1791: 99 E1 32 STA $32E1,Y C2/1794: AE E2 11 LDX $11E2 ; current battle background C2/1797: DF 5B 8E ED CMP $ED8E5B,X ; dance for current background C2/179B: F0 A4 BEQ $1741 ; branch if dance matches C2/179D: 20 53 4B JSR $4B53 ; random number (carry) C2/17A0: 90 0D BCC $17AF ; 50% chance to branch C2/17A2: AA TAX C2/17A3: BF AB F9 D1 LDA $D1F9AB,X ; change battle background C2/17A7: 85 B7 STA $B7 C2/17A9: 8D E2 11 STA $11E2 C2/17AC: 4C 41 17 JMP $1741 C2/17AF: B9 F8 3E LDA $3EF8,Y ; clear dance status C2/17B2: 29 FE AND #$FE C2/17B4: 99 F8 3E STA $3EF8,Y C2/17B7: BB TYX C2/17B8: A9 06 LDA #$06 ; battle message $06 (Stumbled!!) C2/17BA: 8D 01 34 STA $3401 C2/17BD: A9 20 LDA #$20 ; C2/17BF: 85 B5 STA $B5 C2/17C1: 20 8D 29 JSR $298D C2/17C4: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ ] jump_ATMK: C2/17C7: 20 8A 29 JSR $298A C2/17CA: 18 CLC C2/17CB: BD 68 3B LDA $3B68,X C2/17CE: 7D 69 3B ADC $3B69,X C2/17D1: 90 02 BCC $17D5 C2/17D3: A9 FF LDA #$FF C2/17D5: 8D A6 11 STA $11A6 C2/17D8: BD 18 3B LDA $3B18,X ; level C2/17DB: 8D AF 11 STA $11AF C2/17DE: BD 2C 3B LDA $3B2C,X ; vigor * 2 C2/17E1: 8D AE 11 STA $11AE ; hit rate C2/17E4: 60 RTS ; [ Command $1C: Possess ] C2/17E5: BB TYX C2/17E6: 20 C1 19 JSR $19C1 C2/17E9: A9 20 LDA #$20 C2/17EB: 0C A4 11 TSB $11A4 C2/17EE: A9 A0 LDA #$A0 ; special effect $50 (possess) C2/17F0: 8D A9 11 STA $11A9 C2/17F3: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $16: Jump ] C2/17F6: BB TYX C2/17F7: 20 C1 19 JSR $19C1 C2/17FA: BD 69 3B LDA $3B69,X C2/17FD: F0 09 BEQ $1808 C2/17FF: 38 SEC C2/1800: BD 68 3B LDA $3B68,X C2/1803: F0 03 BEQ $1808 C2/1805: 20 53 4B JSR $4B53 ; random number (carry) C2/1808: 20 9F 29 JSR $299F C2/180B: A9 20 LDA #$20 C2/180D: 8D A4 11 STA $11A4 C2/1810: 04 B3 TSB $B3 C2/1812: E6 BD INC $BD C2/1814: BD A8 3C LDA $3CA8,X ; main hand item C2/1817: 20 12 15 JSR $1512 ; double damage for spears C2/181A: BD A9 3C LDA $3CA9,X ; off-hand item C2/181D: 20 12 15 JSR $1512 ; double damage for spears C2/1820: BD 44 3C LDA $3C44,X ; relic effects 1 C2/1823: 10 17 BPL $183C ; branch if no dragon horn C2/1825: CE 8E 3A DEC $3A8E ; enable dragon horn effect C2/1828: 20 5A 4B JSR $4B5A ; random number (0..255) C2/182B: EE 70 3A INC $3A70 C2/182E: C9 40 CMP #$40 C2/1830: B0 0A BCS $183C C2/1832: EE 70 3A INC $3A70 C2/1835: C9 10 CMP #$10 C2/1837: B0 03 BCS $183C C2/1839: EE 70 3A INC $3A70 C2/183C: BD F9 3E LDA $3EF9,X C2/183F: 29 DF AND #$DF C2/1841: 9D F9 3E STA $3EF9,X C2/1844: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $07: SwdTech ] C2/1847: BB TYX C2/1848: A5 B6 LDA $B6 C2/184A: 48 PHA C2/184B: 38 SEC C2/184C: E9 55 SBC #$55 C2/184E: 85 B6 STA $B6 C2/1850: 68 PLA C2/1851: 20 C1 19 JSR $19C1 C2/1854: 20 51 29 JSR $2951 ; update hit rate and level C2/1857: A5 B6 LDA $B6 C2/1859: C9 01 CMP #$01 C2/185B: D0 20 BNE $187D ; branch if not retort C2/185D: BD 4C 3E LDA $3E4C,X ; toggle $3E4C.0 (retort) C2/1860: 49 01 EOR #$01 C2/1862: 9D 4C 3E STA $3E4C,X C2/1865: 4A LSR C2/1866: 90 11 BCC $1879 C2/1868: 66 B6 ROR $B6 C2/186A: 9C A6 11 STZ $11A6 C2/186D: A9 20 LDA #$20 C2/186F: 0C A4 11 TSB $11A4 C2/1872: A9 01 LDA #$01 C2/1874: 1C A2 11 TRB $11A2 C2/1877: 80 09 BRA $1882 C2/1879: A9 10 LDA #$10 C2/187B: 14 B0 TRB $B0 C2/187D: A9 04 LDA #$04 C2/187F: 8D 12 34 STA $3412 C2/1882: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $09: Tools ] C2/1885: A5 B6 LDA $B6 C2/1887: E9 A2 SBC #$A2 C2/1889: 85 B6 STA $B6 C2/188B: 80 11 BRA $189E ; [ Command $08: Throw ] C2/188D: A9 02 LDA #$02 C2/188F: 85 BD STA $BD C2/1891: A9 10 LDA #$10 C2/1893: 14 B3 TRB $B3 C2/1895: 80 07 BRA $189E ; [ Command $01: Item ] C2/1897: 9C 14 34 STZ $3414 ; disable damage modification C2/189A: A9 80 LDA #$80 C2/189C: 14 B3 TRB $B3 C2/189E: BB TYX C2/189F: A9 01 LDA #$01 C2/18A1: 8D 12 34 STA $3412 C2/18A4: AD 7D 3A LDA $3A7D C2/18A7: 20 C1 19 JSR $19C1 C2/18AA: A9 10 LDA #$10 C2/18AC: 14 B1 TRB $B1 C2/18AE: D0 05 BNE $18B5 C2/18B0: A9 FF LDA #$FF C2/18B2: 9D F4 32 STA $32F4,X C2/18B5: BD 18 30 LDA $3018,X C2/18B8: 0C 8C 3A TSB $3A8C C2/18BB: A5 B5 LDA $B5 C2/18BD: 90 24 BCC $18E3 ; carry was set or cleared in $26D3 subroutine ; items that do not use a spell C2/18BF: C9 02 CMP #$02 C2/18C1: AD 11 34 LDA $3411 C2/18C4: 20 37 2A JSR $2A37 ; calculate item effect C2/18C7: AD AA 11 LDA $11AA C2/18CA: 89 C2 BIT #$C2 C2/18CC: D0 12 BNE $18E0 C2/18CE: C2 20 REP #$20 C2/18D0: AD 74 3A LDA $3A74 C2/18D3: 0D 42 3A ORA $3A42 C2/18D6: 25 B8 AND $B8 C2/18D8: 85 B8 STA $B8 C2/18DA: E2 20 SEP #$20 C2/18DC: A9 04 LDA #$04 C2/18DE: 14 B3 TRB $B3 C2/18E0: 4C 7B 31 JMP $317B ; execute attacks ; items that use a spell (bio blaster/flash, rods, shields, water/fire/bolt edge) C2/18E3: C9 01 CMP #$01 C2/18E5: D0 07 BNE $18EE C2/18E7: E6 B5 INC $B5 C2/18E9: AD 10 34 LDA $3410 C2/18EC: 85 B6 STA $B6 C2/18EE: 64 BD STZ $BD C2/18F0: 20 51 29 JSR $2951 ; update hit rate and level C2/18F3: A9 02 LDA #$02 C2/18F5: 0C A3 11 TSB $11A3 C2/18F8: A9 20 LDA #$20 C2/18FA: 0C A4 11 TSB $11A4 C2/18FD: A9 08 LDA #$08 C2/18FF: 14 BA TRB $BA C2/1901: 9C A5 11 STZ $11A5 C2/1904: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $18: GP Rain ] C2/1907: BB TYX C2/1908: 20 8A 29 JSR $298A C2/190B: EE A6 11 INC $11A6 C2/190E: A9 60 LDA #$60 C2/1910: 0C A2 11 TSB $11A2 C2/1913: 9C 14 34 STZ $3414 ; disable damage modification C2/1916: E0 08 CPX #$08 C2/1918: 90 05 BCC $191F C2/191A: A9 05 LDA #$05 C2/191C: 8D 12 34 STA $3412 C2/191F: A9 A2 LDA #$A2 ; special effect $51 (gp rain) C2/1921: 8D A9 11 STA $11A9 C2/1924: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $04: Revert ] C2/1927: B9 F9 3E LDA $3EF9,Y C2/192A: 89 08 BIT #$08 C2/192C: D0 09 BNE $1937 C2/192E: 98 TYA C2/192F: 4A LSR C2/1930: EB XBA C2/1931: A9 0E LDA #$0E C2/1933: 4C BF 62 JMP $62BF ; add battle script command to queue ; [ Command $03: Morph ] C2/1936: 38 SEC C2/1937: 08 PHP C2/1938: BB TYX C2/1939: 20 8A 29 JSR $298A C2/193C: 28 PLP C2/193D: A9 08 LDA #$08 C2/193F: 8D AD 11 STA $11AD C2/1942: 90 01 BCC $1945 C2/1944: 7B TDC C2/1945: 4A LSR C2/1946: 0C A4 11 TSB $11A4 C2/1949: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ Command $14: Row ] C2/194C: BB TYX C2/194D: BD A1 3A LDA $3AA1,X ; toggle battle row C2/1950: 49 20 EOR #$20 C2/1952: 9D A1 3A STA $3AA1,X C2/1955: 20 8A 29 JSR $298A C2/1958: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ Command $0B: Runic ] C2/195B: BB TYX C2/195C: BD 4C 3E LDA $3E4C,X ; set $3E4C.2 (runic) C2/195F: 09 04 ORA #$04 C2/1961: 9D 4C 3E STA $3E4C,X C2/1964: 20 8A 29 JSR $298A C2/1967: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ Command $15: Def. ] C2/196A: BB TYX C2/196B: A9 02 LDA #$02 C2/196D: 20 AB 5B JSR $5BAB ; set $3AA1.1 C2/1970: 20 8A 29 JSR $298A C2/1973: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ Command $0E: Control ] C2/1976: B9 F9 3E LDA $3EF9,Y C2/1979: 89 10 BIT #$10 C2/197B: F0 0A BEQ $1987 C2/197D: 20 2E 19 JSR $192E C2/1980: B9 B8 32 LDA $32B8,Y C2/1983: A8 TAY C2/1984: 4C 54 15 JMP $1554 C2/1987: BB TYX C2/1988: 20 8A 29 JSR $298A C2/198B: A9 A6 LDA #$A6 C2/198D: 8D A9 11 STA $11A9 ; special effect $53 (control) C2/1990: A9 01 LDA #$01 C2/1992: 1C A2 11 TRB $11A2 C2/1995: A9 20 LDA #$20 C2/1997: 0C A4 11 TSB $11A4 C2/199A: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $11: Leap ] C2/199D: BB TYX C2/199E: 20 8A 29 JSR $298A C2/19A1: A9 A8 LDA #$A8 ; special effect $54 (leap) C2/19A3: 8D A9 11 STA $11A9 C2/19A6: A9 01 LDA #$01 C2/19A8: 1C A2 11 TRB $11A2 C2/19AB: A9 40 LDA #$40 C2/19AD: 85 BB STA $BB C2/19AF: 4C 7B 31 JMP $317B ; execute attacks ; [ Command $1E: AI ] C2/19B2: A9 0C LDA #$0C C2/19B4: 85 B5 STA $B5 C2/19B6: 20 5F 17 JSR $175F C2/19B9: A9 21 LDA #$21 C2/19BB: EB XBA C2/19BC: A9 06 LDA #$06 C2/19BE: 4C BF 62 JMP $62BF ; add battle script command to queue ; [ ] initTarget: C2/19C1: EB XBA C2/19C2: A5 B5 LDA $B5 C2/19C4: 4C D3 26 JMP $26D3 ; init attack based on command ; command jump table _DTable: C2/19C7: .DW $15C8, $1897, $1741, $1936, $1927, $1591, $1610, $1847 C2/19D7: .DW $188D, $1885, $159D, $195B, $175F, $151F, $1976, $1726 C2/19E7: .DW $1560, $199D, $151E, $177D, $194C, $196A, $17F6, $1741 C2/19F7: .DW $1907, $1763, $171E, $171A, $17E5, $175F, $19B2, $151E C2/1A07: .DW $5072, $50D1, $500B, $4F57, $4F97, $50CD, $4F5F, $50DD C2/1A17: .DW $151E, $5161, $20DE, $642D, $51A8, $51B2, $1DFA, $1E1A C2/1A27: .DW $1E5E, $151E, $151E, $151E ; --------------------------------------------[ Battle: AI ]-------------------------------------------- ; [ Execute AI Script ] _ELAction: C2/1A2F: DA PHX C2/1A30: 08 PHP C2/1A31: A5 B8 LDA $B8 C2/1A33: 85 FC STA $FC C2/1A35: 85 FE STA $FE C2/1A37: E2 20 SEP #$20 C2/1A39: 64 F5 STZ $F5 C2/1A3B: 86 F6 STX $F6 C2/1A3D: 20 AF 1A JSR $1AAF C2/1A40: 28 PLP C2/1A41: FA PLX C2/1A42: 60 RTS ; [ ] _FeSearch: C2/1A43: 7B TDC C2/1A44: BF 00 87 CF LDA $CF8700,X C2/1A48: E8 INX C2/1A49: C9 FE CMP #$FE C2/1A4B: B0 F5 BCS $1A42 C2/1A4D: E9 EF SBC #$EF C2/1A4F: 90 F3 BCC $1A44 C2/1A51: DA PHX C2/1A52: AA TAX C2/1A53: BF AF 1D C2 LDA $C21DAF,X C2/1A57: FA PLX C2/1A58: CA DEX C2/1A59: E8 INX C2/1A5A: 3A DEC C2/1A5B: D0 FC BNE $1A59 C2/1A5D: 80 E5 BRA $1A44 ; [ Load Next AI Script Command ] read_local: C2/1A5F: 08 PHP C2/1A60: C2 20 REP #$20 C2/1A62: A6 F0 LDX $F0 ; pointer to AI script C2/1A64: BF 02 87 CF LDA $CF8702,X ; load next 4 bytes of AI script C2/1A68: 8D 2E 3A STA $3A2E C2/1A6B: BF 00 87 CF LDA $CF8700,X C2/1A6F: 8D 2C 3A STA $3A2C C2/1A72: 28 PLP C2/1A73: 60 RTS ; [ AI Script Command $FD: Wait Until End of Turn ] C2/1A74: C2 20 REP #$20 C2/1A76: A5 F0 LDA $F0 C2/1A78: 85 F2 STA $F2 C2/1A7A: 60 RTS ; [ AI Script Command $FE/$FF: End If/End of Script ] AcAllEnd: C2/1A7B: A9 FF LDA #$FF C2/1A7D: 85 F5 STA $F5 C2/1A7F: 60 RTS ; [ Choose Random AI Data Byte ] GetRandom3: C2/1A80: A9 03 LDA #$03 C2/1A82: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/1A85: AA TAX C2/1A86: BD 2D 3A LDA $3A2D,X ; random AI data byte (0..2) C2/1A89: C9 FE CMP #$FE C2/1A8B: D0 B5 BNE $1A42 C2/1A8D: 68 PLA ; return if not nothing C2/1A8E: 68 PLA C2/1A8F: 80 23 BRA $1AB4 ; [ AI Script Command $FC: Conditional ] C2/1A91: AD 2D 3A LDA $3A2D C2/1A94: 0A ASL C2/1A95: AA TAX C2/1A96: FC 55 1D JSR ($1D55,X) ; conditional jump table C2/1A99: B0 19 BCS $1AB4 ConditionMiss: C2/1A9B: C2 30 REP #$30 C2/1A9D: A5 FE LDA $FE C2/1A9F: 85 FC STA $FC C2/1AA1: E2 20 SEP #$20 C2/1AA3: A6 F0 LDX $F0 C2/1AA5: 20 43 1A JSR $1A43 C2/1AA8: 1A INC C2/1AA9: F0 D0 BEQ $1A7B C2/1AAB: 86 F0 STX $F0 C2/1AAD: E6 F5 INC $F5 ; fallthrough ; [ ] InitSearch: C2/1AAF: AD 98 3A LDA $3A98 C2/1AB2: 85 F8 STA $F8 ; fallthrough ; [ next AI command ] Search: C2/1AB4: E2 20 SEP #$20 C2/1AB6: C2 10 REP #$10 C2/1AB8: 20 5F 1A JSR $1A5F ; load next AI script command C2/1ABB: C9 FC CMP #$FC ; branch if conditional, wait, end if, or end of script C2/1ABD: B0 11 BCS $1AD0 C2/1ABF: A5 F5 LDA $F5 ; loop counter C2/1AC1: C5 F4 CMP $F4 C2/1AC3: D0 0B BNE $1AD0 ; branch if not done looping C2/1AC5: A9 FF LDA #$FF C2/1AC7: 85 F4 STA $F4 ; C2/1AC9: A6 F2 LDX $F2 ; set AI script pointer to loop address C2/1ACB: 86 F0 STX $F0 C2/1ACD: 20 5F 1A JSR $1A5F ; load next AI script command C2/1AD0: 7B TDC C2/1AD1: 38 SEC C2/1AD2: 9B TXY C2/1AD3: AD 2C 3A LDA $3A2C ; AI script command C2/1AD6: E9 F0 SBC #$F0 C2/1AD8: B0 02 BCS $1ADC ; branch if > $F0 C2/1ADA: A9 0F LDA #$0F ; normal command -> one data byte C2/1ADC: AA TAX C2/1ADD: BF AF 1D C2 LDA $C21DAF,X ; number of data bytes for AI command C2/1AE1: AA TAX C2/1AE2: C8 INY ; increment AI script address C2/1AE3: CA DEX C2/1AE4: D0 FC BNE $1AE2 C2/1AE6: 84 F0 STY $F0 C2/1AE8: E2 10 SEP #$10 C2/1AEA: A5 F8 LDA $F8 ; branch if not a counterattack C2/1AEC: F0 07 BEQ $1AF5 C2/1AEE: AD 2C 3A LDA $3A2C ; current AI command C2/1AF1: C9 FC CMP #$FC C2/1AF3: 90 A6 BCC $1A9B ; branch if < $FC C2/1AF5: A4 F6 LDY $F6 ; Y = pointer to character/monster data in RAM C2/1AF7: AD 2C 3A LDA $3A2C C2/1AFA: C9 F0 CMP #$F0 C2/1AFC: 90 27 BCC $1B25 ; branch if AI command < $F0 (single attack) C2/1AFE: 29 0F AND #$0F C2/1B00: 0A ASL C2/1B01: AA TAX C2/1B02: 7C 8F 1D JMP ($1D8F,X) ; execute AI command (> $F0) ; [ AI Script Command $F6: Use/Throw Item ] ; b0: 0 = use, 1 = throw ; b1: item 1 (2/3 chance) ; b2: item 2 (1/3 chance) C2/1B05: A9 01 LDA #$01 ; item command C2/1B07: EB XBA C2/1B08: AD 2D 3A LDA $3A2D C2/1B0B: F0 03 BEQ $1B10 ; branch if using item (not throwing) C2/1B0D: A9 08 LDA #$08 ; throw command C2/1B0F: EB XBA C2/1B10: AD 2E 3A LDA $3A2E ; copy first item to double its likelihood of being chosen C2/1B13: 8D 2D 3A STA $3A2D C2/1B16: 20 80 1A JSR $1A80 ; choose random AI data byte C2/1B19: EB XBA C2/1B1A: 80 0C BRA $1B28 ; [ AI Script Command $F4: Do Command ] ; b0: command 1 (1/3 chance) ; b1: command 2 (1/3 chance) ; b2: command 3 (1/3 chance) C2/1B1C: 7B TDC ; clear attack index (this shouldn't be used anyway) C2/1B1D: 20 80 1A JSR $1A80 ; choose random AI data byte C2/1B20: 80 06 BRA $1B28 ; [ AI Script Command $F0: Use Attack ] ; b0: attack 1 (1/3 chance) ; b1: attack 2 (1/3 chance) ; b2: attack 3 (1/3 chance) C2/1B22: 20 80 1A JSR $1A80 ; choose random AI data byte C2/1B25: 20 BF 1D JSR $1DBF ; get command for AI attack ; use AI attack/command C2/1B28: BB TYX C2/1B29: C2 20 REP #$20 C2/1B2B: 48 PHA C2/1B2C: A5 FC LDA $FC C2/1B2E: 85 B8 STA $B8 C2/1B30: BD E4 3E LDA $3EE4,X ; current status 1 C2/1B33: 89 00 20 BIT #$2000 C2/1B36: F0 02 BEQ $1B3A ; branch if not muddled C2/1B38: 64 B8 STZ $B8 ; clear targets C2/1B3A: 68 PLA C2/1B3B: 20 B9 03 JSR $03B9 ; correct roulette command index C2/1B3E: 20 E4 03 JSR $03E4 ; set advance wait timer C2/1B41: 20 AD 4E JSR $4EAD ; create action C2/1B44: 4C B4 1A JMP $1AB4 ; [ AI Script Command $F1: Targetting ] C2/1B47: AD 2D 3A LDA $3A2D C2/1B4A: 18 CLC C2/1B4B: 20 25 1F JSR $1F25 C2/1B4E: C2 20 REP #$20 C2/1B50: A5 B8 LDA $B8 C2/1B52: 85 FC STA $FC C2/1B54: 4C B4 1A JMP $1AB4 ; [ AI Script Command $F5: Monster Death/Entry ] C2/1B57: AD 2F 3A LDA $3A2F C2/1B5A: D0 06 BNE $1B62 C2/1B5C: B9 19 30 LDA $3019,Y C2/1B5F: 8D 2F 3A STA $3A2F C2/1B62: A9 24 LDA #$24 C2/1B64: 80 12 BRA $1B78 ; [ AI Script Command $F3: Display Short Battle Dialog ] C2/1B66: A9 21 LDA #$21 C2/1B68: 80 0E BRA $1B78 ; [ AI Script Command $FB: Misc. Battle Effects ] C2/1B6A: A9 30 LDA #$30 C2/1B6C: 80 0A BRA $1B78 ; [ AI Script Command $F2: Battle Change ] C2/1B6E: A9 20 LDA #$20 C2/1B70: 80 06 BRA $1B78 ; [ AI Script Command $F8: Byte-Wise Variable Manipulation ] C2/1B72: A9 2E LDA #$2E C2/1B74: 80 02 BRA $1B78 ; [ AI Script Command $F9: Bit-Wise Variable Manipulation ] C2/1B76: A9 2F LDA #$2F C2/1B78: EB XBA C2/1B79: AD 2D 3A LDA $3A2D C2/1B7C: EB XBA C2/1B7D: C2 20 REP #$20 C2/1B7F: 8D 7A 3A STA $3A7A C2/1B82: AD 2E 3A LDA $3A2E C2/1B85: 85 B8 STA $B8 C2/1B87: BB TYX C2/1B88: 20 AD 4E JSR $4EAD ; create action C2/1B8B: 4C B4 1A JMP $1AB4 ; [ AI Script Command $F7: Execute Battle Event ] C2/1B8E: BB TYX C2/1B8F: A9 23 LDA #$23 C2/1B91: 8D 7A 3A STA $3A7A C2/1B94: AD 2D 3A LDA $3A2D C2/1B97: 8D 7B 3A STA $3A7B C2/1B9A: 20 AD 4E JSR $4EAD ; create action C2/1B9D: 4C B4 1A JMP $1AB4 ; [ AI Script Command $FA: Misc. Monster Animations ] C2/1BA0: BB TYX C2/1BA1: AD 2D 3A LDA $3A2D C2/1BA4: EB XBA C2/1BA5: A9 2B LDA #$2B ; command $2B (misc. monster animations) C2/1BA7: C2 20 REP #$20 C2/1BA9: 8D 7A 3A STA $3A7A C2/1BAC: AD 2E 3A LDA $3A2E C2/1BAF: 85 B8 STA $B8 C2/1BB1: 20 AD 4E JSR $4EAD ; create action C2/1BB4: 4C B4 1A JMP $1AB4 ; [ AI Conditional $06: If Target's HP is Below a Value ] C2/1BB7: 20 34 1D JSR $1D34 C2/1BBA: 90 0B BCC $1BC7 C2/1BBC: 7B TDC C2/1BBD: AD 2F 3A LDA $3A2F C2/1BC0: EB XBA C2/1BC1: C2 20 REP #$20 C2/1BC3: 4A LSR C2/1BC4: D9 F4 3B CMP $3BF4,Y C2/1BC7: 60 RTS ; [ AI Conditional $07: If Target's MP is Below a Value ] C2/1BC8: 20 34 1D JSR $1D34 C2/1BCB: 90 09 BCC $1BD6 C2/1BCD: 7B TDC C2/1BCE: AD 2F 3A LDA $3A2F C2/1BD1: C2 20 REP #$20 C2/1BD3: D9 08 3C CMP $3C08,Y C2/1BD6: 60 RTS ; [ AI Conditional $08: If Target Has a Status ] CoStatus: C2/1BD7: 20 34 1D JSR $1D34 C2/1BDA: 90 49 BCC $1C25 C2/1BDC: AD 2F 3A LDA $3A2F C2/1BDF: C9 10 CMP #$10 C2/1BE1: 90 0B BCC $1BEE C2/1BE3: C2 20 REP #$20 C2/1BE5: AD 74 3A LDA $3A74 C2/1BE8: 25 FC AND $FC C2/1BEA: 85 FC STA $FC C2/1BEC: E2 20 SEP #$20 C2/1BEE: A9 10 LDA #$10 C2/1BF0: 1C 2F 3A TRB $3A2F C2/1BF3: C2 20 REP #$20 C2/1BF5: D0 05 BNE $1BFC C2/1BF7: A9 E4 3E LDA #$3EE4 C2/1BFA: 80 03 BRA $1BFF C2/1BFC: A9 F8 3E LDA #$3EF8 C2/1BFF: 85 FA STA $FA C2/1C01: AE 2F 3A LDX $3A2F C2/1C04: 20 2D 1D JSR $1D2D C2/1C07: 85 EE STA $EE C2/1C09: A0 12 LDY #$12 C2/1C0B: B1 FA LDA ($FA),Y C2/1C0D: 24 EE BIT $EE C2/1C0F: D0 05 BNE $1C16 C2/1C11: B9 18 30 LDA $3018,Y C2/1C14: 14 FC TRB $FC C2/1C16: 88 DEY C2/1C17: 88 DEY C2/1C18: 10 F1 BPL $1C0B C2/1C1A: 18 CLC C2/1C1B: A5 FC LDA $FC C2/1C1D: F0 06 BEQ $1C25 C2/1C1F: 20 2A 52 JSR $522A ; pick a random bit set in A C2/1C22: 85 FC STA $FC C2/1C24: 38 SEC C2/1C25: 60 RTS ; [ AI Conditional $09: If Target Doesn't Have a Status ] C2/1C26: 20 D7 1B JSR $1BD7 C2/1C29: 4C 26 1D JMP $1D26 ; [ AI Conditional $1A: If Target is Weak Against Element ] C2/1C2C: 20 34 1D JSR $1D34 ; make sure target is valid C2/1C2F: 90 09 BCC $1C3A C2/1C31: B9 E0 3B LDA $3BE0,Y ; weak elements C2/1C34: 2C 2F 3A BIT $3A2F C2/1C37: D0 01 BNE $1C3A C2/1C39: 18 CLC C2/1C3A: 60 RTS ; [ AI Conditional $03: If Item Was Used Against Monster ] C2/1C3B: 98 TYA C2/1C3C: 69 13 ADC #$13 C2/1C3E: A8 TAY ; [ AI Conditional $02: If Attack Was Used Against Monster ] C2/1C3F: C8 INY ; [ AI Conditional $01: If Command Was Used Against Monster ] C2/1C40: BB TYX C2/1C41: BC 90 32 LDY $3290,X C2/1C44: 30 0D BMI $1C53 C2/1C46: BD 48 3D LDA $3D48,X C2/1C49: CD 2E 3A CMP $3A2E C2/1C4C: F0 07 BEQ $1C55 C2/1C4E: CD 2F 3A CMP $3A2F C2/1C51: F0 02 BEQ $1C55 C2/1C53: 18 CLC C2/1C54: 60 RTS C2/1C55: C2 20 REP #$20 C2/1C57: B9 18 30 LDA $3018,Y C2/1C5A: 85 FC STA $FC C2/1C5C: 38 SEC C2/1C5D: 60 RTS ; [ AI Conditional $04: If Element Was Used Against Monster ] C2/1C5E: 98 TYA C2/1C5F: 69 15 ADC #$15 C2/1C61: AA TAX C2/1C62: BC 90 32 LDY $3290,X C2/1C65: 30 08 BMI $1C6F C2/1C67: BD 48 3D LDA $3D48,X C2/1C6A: 2C 2E 3A BIT $3A2E C2/1C6D: D0 E6 BNE $1C55 C2/1C6F: 60 RTS ; [ AI Conditional $05: If Any Attack Was Used Against Monster ] C2/1C70: BB TYX C2/1C71: BC 7C 32 LDY $327C,X C2/1C74: 30 08 BMI $1C7E C2/1C76: C2 20 REP #$20 C2/1C78: B9 18 30 LDA $3018,Y C2/1C7B: 85 FC STA $FC C2/1C7D: 38 SEC C2/1C7E: 60 RTS C2/1C7F: C2 20 REP #$20 C2/1C81: AD 44 3A LDA $3A44 C2/1C84: 80 05 BRA $1C8B C2/1C86: C2 20 REP #$20 C2/1C88: B9 C0 3D LDA $3DC0,Y C2/1C8B: 4A LSR C2/1C8C: CD 2E 3A CMP $3A2E C2/1C8F: 60 RTS ; [ ] CoFlagCC: C2/1C90: AE 2E 3A LDX $3A2E C2/1C93: 20 45 1E JSR $1E45 C2/1C96: A5 EE LDA $EE C2/1C98: CD 2F 3A CMP $3A2F C2/1C9B: 60 RTS ; [ ] C2/1C9C: 20 90 1C JSR $1C90 C2/1C9F: 4C 26 1D JMP $1D26 ; [ ] CoFlagBit: C2/1CA2: AE 2F 3A LDX $3A2F C2/1CA5: 20 2D 1D JSR $1D2D C2/1CA8: AE 2E 3A LDX $3A2E C2/1CAB: 20 45 1E JSR $1E45 C2/1CAE: 24 EE BIT $EE C2/1CB0: F0 01 BEQ $1CB3 C2/1CB2: 38 SEC C2/1CB3: 60 RTS ; [ ] C2/1CB4: 20 A2 1C JSR $1CA2 C2/1CB7: 4C 26 1D JMP $1D26 ; [ ] CoLevelCC: C2/1CBA: 20 34 1D JSR $1D34 C2/1CBD: 90 06 BCC $1CC5 C2/1CBF: B9 18 3B LDA $3B18,Y C2/1CC2: CD 2F 3A CMP $3A2F C2/1CC5: 60 RTS ; [ ] C2/1CC6: 20 BA 1C JSR $1CBA C2/1CC9: 4C 26 1D JMP $1D26 ; [ ] C2/1CCC: A9 01 LDA #$01 C2/1CCE: CD CA 3E CMP $3ECA C2/1CD1: 60 RTS ; [ AI Conditional $19: Continue Based on This Monster's Slot ] C2/1CD2: B9 19 30 LDA $3019,Y C2/1CD5: 2C 2E 3A BIT $3A2E C2/1CD8: F0 01 BEQ $1CDB C2/1CDA: 38 SEC C2/1CDB: 60 RTS ; [ AI Conditional $11: ] C2/1CDC: 20 EE 1D JSR $1DEE C2/1CDF: AD 75 3A LDA $3A75 C2/1CE2: 80 0B BRA $1CEF ; [ AI Conditional $12: ] C2/1CE4: 64 F8 STZ $F8 C2/1CE6: 20 EE 1D JSR $1DEE C2/1CE9: AD 73 3A LDA $3A73 C2/1CEC: 4D 75 3A EOR $3A75 C2/1CEF: 2D 2E 3A AND $3A2E C2/1CF2: CD 2E 3A CMP $3A2E C2/1CF5: 18 CLC C2/1CF6: D0 01 BNE $1CF9 C2/1CF8: 38 SEC C2/1CF9: 60 RTS ; [ AI Conditional $13: Continue Based on Number of Characters/Monsters Remaining ] C2/1CFA: AD 2E 3A LDA $3A2E C2/1CFD: D0 07 BNE $1D06 ; branch if comparing number of monsters C2/1CFF: AD 76 3A LDA $3A76 ; number of characters alive C2/1D02: CD 2F 3A CMP $3A2F C2/1D05: 60 RTS C2/1D06: AD 2F 3A LDA $3A2F C2/1D09: CD 77 3A CMP $3A77 ; number of monsters alive C2/1D0C: 60 RTS ; [ AI Conditional $18: ] C2/1D0D: AD DF 1E LDA $1EDF C2/1D10: 89 08 BIT #$08 C2/1D12: D0 01 BNE $1D15 C2/1D14: 38 SEC C2/1D15: 60 RTS C2/1D16: C2 20 REP #$20 C2/1D18: AD 2E 3A LDA $3A2E C2/1D1B: CD E0 11 CMP $11E0 C2/1D1E: F0 01 BEQ $1D21 C2/1D20: 18 CLC C2/1D21: 60 RTS ; [ AI Conditional $1C: Always Continue ] C2/1D22: 64 F8 STZ $F8 C2/1D24: 38 SEC C2/1D25: 60 RTS ; [ invert carry flag ] ReverseCarry: C2/1D26: E2 20 SEP #$20 C2/1D28: 2A ROL C2/1D29: 49 01 EOR #$01 C2/1D2B: 4A LSR ; [ AI Conditional $00: Never Continue ] C2/1D2C: 60 RTS ; [ ] numToBit: C2/1D2D: 7B TDC C2/1D2E: 38 SEC C2/1D2F: 2A ROL C2/1D30: CA DEX C2/1D31: 10 FC BPL $1D2F C2/1D33: 60 RTS ; [ AI Conditional $17: If Target is Valid ] CoTarget: C2/1D34: AD 2E 3A LDA $3A2E C2/1D37: 48 PHA C2/1D38: 38 SEC C2/1D39: 20 25 1F JSR $1F25 C2/1D3C: 90 0B BCC $1D49 C2/1D3E: C2 20 REP #$20 C2/1D40: A5 B8 LDA $B8 C2/1D42: 85 FC STA $FC C2/1D44: 20 F9 51 JSR $51F9 ; get the first valid target in +A C2/1D47: E2 21 SEP #$21 C2/1D49: 68 PLA C2/1D4A: 08 PHP C2/1D4B: C9 36 CMP #$36 C2/1D4D: D0 04 BNE $1D53 C2/1D4F: 64 FC STZ $FC C2/1D51: 64 FC STZ $FC C2/1D53: 28 PLP C2/1D54: 60 RTS ; AI conditional jump table (AI command $FC) _table1_ELAction: C2/1D55: .DW $1D2C, $1C40, $1C3F, $1C3B, $1C5E, $1C70, $1BB7, $1BC8 C2/1D65: .DW $1BD7, $1C26, $1D2C, $1C86, $1C9C, $1C90, $1CC6, $1CBA C2/1D75: .DW $1CCC, $1CDC, $1CE4, $1CFA, $1CA2, $1CB4, $1C7F, $1D34 C2/1D85: .DW $1D0D, $1CD2, $1C2C, $1D16, $1D22 ; AI script command jump table C2/1D8F: .DW $1B22, $1B47, $1B6E, $1B66, $1B1C, $1B57, $1B05, $1B8E C2/1D9F: .DW $1B72, $1B76, $1BA0, $1B6A, $1A91, $1A74, $1A7B, $1A7B ; number of bytes for each AI script command inctable: C2/1DAF: .DB $04, $02, $04, $03, $04, $04, $04, $02, $03, $04, $04, $03, $04, $01, $01, $01 ; [ Get Command For AI Attack ] _SetCommandNo: C2/1DBF: DA PHX C2/1DC0: 48 PHA C2/1DC1: EB XBA C2/1DC2: 68 PLA C2/1DC3: A2 0A LDX #$0A C2/1DC5: DF D8 1D C2 CMP $C21DD8,X ; compare attack index C2/1DC9: 90 06 BCC $1DD1 C2/1DCB: BF E3 1D C2 LDA $C21DE3,X ; get command index C2/1DCF: 80 05 BRA $1DD6 C2/1DD1: CA DEX C2/1DD2: 10 F1 BPL $1DC5 C2/1DD4: A9 02 LDA #$02 C2/1DD6: FA PLX C2/1DD7: 60 RTS ; first attack index for each command subNoTable: C2/1DD8: .DB $36, $51, $55, $5D, $65, $7D, $82, $83, $8B, $EE, $F0 ; corresponding command index commandTable: C2/1DE3: .DB $19, $02, $07, $0A, $02, $09, $1B, $1D, $0C, $00, $02 ; [ ] GetTargetBit: C2/1DEE: AD 2E 3A LDA $3A2E C2/1DF1: D0 06 BNE $1DF9 C2/1DF3: B9 19 30 LDA $3019,Y C2/1DF6: 8D 2E 3A STA $3A2E C2/1DF9: 60 RTS ; [ Command $2E: Load/Add/Subtract Variable (AI Command $F8) ] C2/1DFA: A6 B6 LDX $B6 ; variable index C2/1DFC: 20 45 1E JSR $1E45 ; load battle variable C2/1DFF: A9 80 LDA #$80 C2/1E01: 14 B8 TRB $B8 C2/1E03: D0 05 BNE $1E0A ; branch if adding or subtracting C2/1E05: 4A LSR C2/1E06: 14 B8 TRB $B8 ; clear bit 6 (add) C2/1E08: 64 EE STZ $EE ; set the current value to zero C2/1E0A: A5 B8 LDA $B8 C2/1E0C: 89 40 BIT #$40 C2/1E0E: F0 03 BEQ $1E13 ; branch if adding C2/1E10: 49 BF EOR #$BF C2/1E12: 1A INC C2/1E13: 65 EE ADC $EE ; add/subtract C2/1E15: 85 EE STA $EE C2/1E17: 4C 38 1E JMP $1E38 ; [ Command $2F: Set/Clear Variable Bit (AI Command $F9) ] C2/1E1A: A6 B9 LDX $B9 C2/1E1C: 20 57 1E JSR $1E57 C2/1E1F: A6 B8 LDX $B8 C2/1E21: 20 45 1E JSR $1E45 C2/1E24: C6 B6 DEC $B6 C2/1E26: 10 04 BPL $1E2C C2/1E28: 45 EE EOR $EE C2/1E2A: 80 0C BRA $1E38 C2/1E2C: C6 B6 DEC $B6 C2/1E2E: 10 04 BPL $1E34 C2/1E30: 05 EE ORA $EE C2/1E32: 80 04 BRA $1E38 C2/1E34: 49 FF EOR #$FF C2/1E36: 25 EE AND $EE _ELStoreWork: C2/1E38: E0 24 CPX #$24 ; store the battle variable C2/1E3A: B0 05 BCS $1E41 C2/1E3C: 9D B0 3E STA $3EB0,X C2/1E3F: 80 03 BRA $1E44 C2/1E41: 99 AC 3D STA $3DAC,Y C2/1E44: 60 RTS ; [ Load Battle Variable ] ; x: variable index ; y: monster index ; $EE: variable value (out) _ELLoadWork: C2/1E45: 48 PHA C2/1E46: E0 24 CPX #$24 C2/1E48: B0 05 BCS $1E4F C2/1E4A: BD B0 3E LDA $3EB0,X C2/1E4D: 80 03 BRA $1E52 C2/1E4F: B9 AC 3D LDA $3DAC,Y C2/1E52: 85 EE STA $EE C2/1E54: 68 PLA C2/1E55: 18 CLC C2/1E56: 60 RTS ; [ ] _ELNumToBit: C2/1E57: 7B TDC C2/1E58: 38 SEC C2/1E59: 2A ROL C2/1E5A: CA DEX C2/1E5B: 10 FC BPL $1E59 C2/1E5D: 60 RTS ; [ Command $30: Misc. Effects (AI Command $FB) ] C2/1E5E: A5 B6 LDA $B6 C2/1E60: 0A ASL C2/1E61: AA TAX C2/1E62: A5 B8 LDA $B8 C2/1E64: 7C 09 1F JMP ($1F09,X) ; subcommand $00: set monster counter to 0 C2/1E67: 7B TDC C2/1E68: 99 C0 3D STA $3DC0,Y C2/1E6B: 99 C1 3D STA $3DC1,Y C2/1E6E: 60 RTS ; subcommand $09: end battle and do gau event C2/1E6F: A9 0A LDA #$0A ; end of battle special event 5 (GAU learns rages) C2/1E71: 80 02 BRA $1E75 ; subcommand $02: end battle immediately C2/1E73: A9 08 LDA #$08 ; end of battle special event 4 (end battle immediately) C2/1E75: 8D 6E 3A STA $3A6E C2/1E78: 60 RTS ; subcommand $01: make target invincible C2/1E79: 08 PHP C2/1E7A: 38 SEC C2/1E7B: 20 25 1F JSR $1F25 C2/1E7E: C2 20 REP #$20 C2/1E80: A5 B8 LDA $B8 C2/1E82: 0C 3C 3A TSB $3A3C C2/1E85: 28 PLP C2/1E86: 60 RTS ; subcommand $05: make target not invincible C2/1E87: 08 PHP C2/1E88: 38 SEC C2/1E89: 20 25 1F JSR $1F25 C2/1E8C: C2 20 REP #$20 C2/1E8E: A5 B8 LDA $B8 C2/1E90: 1C 3C 3A TRB $3A3C C2/1E93: 28 PLP C2/1E94: 60 RTS ; subcommand $06: target can be targetted C2/1E95: 38 SEC C2/1E96: 20 25 1F JSR $1F25 C2/1E99: A5 B9 LDA $B9 C2/1E9B: 0C 46 2F TSB $2F46 C2/1E9E: 60 RTS ; subcommand $07: target can't be targetted C2/1E9F: 38 SEC C2/1EA0: 20 25 1F JSR $1F25 C2/1EA3: A5 B9 LDA $B9 C2/1EA5: 1C 46 2F TRB $2F46 C2/1EA8: 60 RTS ; subcommand $03: add gau to the party C2/1EA9: A9 08 LDA #$08 C2/1EAB: 0C DF 1E TSB $1EDF C2/1EAE: B9 D9 3E LDA $3ED9,Y C2/1EB1: AA TAX C2/1EB2: BD 50 18 LDA $1850,X C2/1EB5: 09 40 ORA #$40 C2/1EB7: 29 E0 AND #$E0 C2/1EB9: 0D 6D 1A ORA $1A6D C2/1EBC: 85 EE STA $EE C2/1EBE: 98 TYA C2/1EBF: 0A ASL C2/1EC0: 0A ASL C2/1EC1: 05 EE ORA $EE C2/1EC3: 9D 50 18 STA $1850,X C2/1EC6: 60 RTS ; subcommand $04: set battle counter to 0 C2/1EC7: 9C 44 3A STZ $3A44 C2/1ECA: 9C 45 3A STZ $3A45 C2/1ECD: 60 RTS ; subcommand $08: fill target's ATB gauge (use in a counterattack script to immediately queue the normal script) C2/1ECE: 38 SEC C2/1ECF: 20 25 1F JSR $1F25 ; check if any targets are valid C2/1ED2: 90 05 BCC $1ED9 ; branch if no targets are valid C2/1ED4: A9 FF LDA #$FF C2/1ED6: 99 C9 3A STA $3AC9,Y ; fill this monster's ATB gauge C2/1ED9: 60 RTS ; subcommand $0C: clear status C2/1EDA: 20 EB 1E JSR $1EEB C2/1EDD: A9 04 LDA #$04 C2/1EDF: 0C A4 11 TSB $11A4 C2/1EE2: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; subcommand $0B: set status C2/1EE5: 20 EB 1E JSR $1EEB C2/1EE8: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ ] geStatusSub: C2/1EEB: 20 8A 29 JSR $298A C2/1EEE: 18 CLC C2/1EEF: A5 B8 LDA $B8 C2/1EF1: 20 17 52 JSR $5217 ; get bit mask and byte number C2/1EF4: 1D AA 11 ORA $11AA,X C2/1EF7: 9D AA 11 STA $11AA,X C2/1EFA: BB TYX C2/1EFB: A9 12 LDA #$12 C2/1EFD: 85 B5 STA $B5 C2/1EFF: 60 RTS ; subcommand $0D: hide target C2/1F00: B9 F9 3E LDA $3EF9,Y C2/1F03: 09 20 ORA #$20 C2/1F05: 99 F9 3E STA $3EF9,Y C2/1F08: 60 RTS ; command $30 jump table (AI command $FB) C2/1F09: .DW $1E67, $1E79, $1E73, $1EA9, $1EC7, $1E87, $1E95, $1E9F C2/1F19: .DW $1ECE, $1E6F, $1F08, $1EE5, $1EDA, $1F00 ; [ Check if Any Targets Are Valid ] ; A: target ; carry: set = at least one target is valid, clear = no targets are valid (out) _ELTarget: C2/1F25: DA PHX C2/1F26: 5A PHY C2/1F27: 48 PHA C2/1F28: 64 B8 STZ $B8 ; clear character targets C2/1F2A: A2 06 LDX #$06 C2/1F2C: BD D8 3E LDA $3ED8,X ; actor in character slot C2/1F2F: 30 05 BMI $1F36 ; branch if not present C2/1F31: BD 18 30 LDA $3018,X C2/1F34: 04 B8 TSB $B8 ; set bit for character C2/1F36: CA DEX C2/1F37: CA DEX C2/1F38: 10 F2 BPL $1F2C C2/1F3A: 64 B9 STZ $B9 ; clear monster targets C2/1F3C: A2 0A LDX #$0A C2/1F3E: BD 02 20 LDA $2002,X ; monster flag C2/1F41: 30 05 BMI $1F48 ; branch if not present C2/1F43: BD 21 30 LDA $3021,X C2/1F46: 04 B9 TSB $B9 ; set bit for monster C2/1F48: CA DEX C2/1F49: CA DEX C2/1F4A: 10 F2 BPL $1F3E C2/1F4C: B0 06 BCS $1F54 C2/1F4E: 20 4D 5A JSR $5A4D ; remove invalid targets C2/1F51: 20 17 59 JSR $5917 ; C2/1F54: 68 PLA C2/1F55: C9 30 CMP #$30 C2/1F57: B0 14 BCS $1F6D ; branch if not looking for a specific actor C2/1F59: A2 06 LDX #$06 C2/1F5B: DD D8 3E CMP $3ED8,X C2/1F5E: D0 07 BNE $1F67 C2/1F60: BD 18 30 LDA $3018,X C2/1F63: 85 B8 STA $B8 C2/1F65: 80 3A BRA $1FA1 C2/1F67: CA DEX C2/1F68: CA DEX C2/1F69: 10 F0 BPL $1F5B C2/1F6B: 80 32 BRA $1F9F C2/1F6D: C9 36 CMP #$36 C2/1F6F: B0 10 BCS $1F81 ; branch if not looking for a particular monster slot C2/1F71: E9 2F SBC #$2F C2/1F73: 0A ASL C2/1F74: AA TAX C2/1F75: BD 02 20 LDA $2002,X C2/1F78: 30 25 BMI $1F9F C2/1F7A: BD 21 30 LDA $3021,X C2/1F7D: 85 B9 STA $B9 C2/1F7F: 80 27 BRA $1FA8 C2/1F81: E9 36 SBC #$36 C2/1F83: 0A ASL C2/1F84: AA TAX C2/1F85: 7C 65 20 JMP ($2065,X) ; check target jump table C2/1F88: 64 B9 STZ $B9 C2/1F8A: C2 20 REP #$20 C2/1F8C: A5 B8 LDA $B8 C2/1F8E: 20 2A 52 JSR $522A ; pick a random bit set in A C2/1F91: 85 B8 STA $B8 C2/1F93: C2 20 REP #$20 C2/1F95: A5 B8 LDA $B8 C2/1F97: E2 21 SEP #$21 C2/1F99: D0 01 BNE $1F9C ; branch if there are valid targets C2/1F9B: 18 CLC C2/1F9C: 7A PLY C2/1F9D: FA PLX C2/1F9E: 60 RTS C2/1F9F: 64 B8 STZ $B8 C2/1FA1: 64 B9 STZ $B9 C2/1FA3: 80 EE BRA $1F93 ; target $37: all monsters except self C2/1FA5: 20 2D 20 JSR $202D ; target $38: all monsters C2/1FA8: 64 B8 STZ $B8 C2/1FAA: 80 E7 BRA $1F93 C2/1FAC: 20 2D 20 JSR $202D C2/1FAF: 64 B8 STZ $B8 C2/1FB1: 80 D7 BRA $1F8A C2/1FB3: 20 37 20 JSR $2037 C2/1FB6: 80 E9 BRA $1FA1 C2/1FB8: 20 37 20 JSR $2037 C2/1FBB: 80 CB BRA $1F88 C2/1FBD: 20 37 20 JSR $2037 C2/1FC0: 80 E6 BRA $1FA8 C2/1FC2: 20 37 20 JSR $2037 C2/1FC5: 80 E8 BRA $1FAF C2/1FC7: 20 4E 20 JSR $204E C2/1FCA: 80 D5 BRA $1FA1 C2/1FCC: 20 4E 20 JSR $204E C2/1FCF: 80 B7 BRA $1F88 C2/1FD1: 20 4E 20 JSR $204E C2/1FD4: 80 D2 BRA $1FA8 C2/1FD6: 20 4E 20 JSR $204E C2/1FD9: 80 D4 BRA $1FAF C2/1FDB: 20 2D 20 JSR $202D C2/1FDE: 20 53 4B JSR $4B53 ; random number (carry) C2/1FE1: 90 A7 BCC $1F8A C2/1FE3: 80 AE BRA $1F93 C2/1FE5: BE F5 32 LDX $32F5,Y C2/1FE8: 30 B5 BMI $1F9F C2/1FEA: A9 FF LDA #$FF C2/1FEC: 99 F5 32 STA $32F5,Y C2/1FEF: C2 20 REP #$20 C2/1FF1: BD 18 30 LDA $3018,X C2/1FF4: 85 B8 STA $B8 C2/1FF6: 20 4D 5A JSR $5A4D ; remove invalid targets C2/1FF9: 80 98 BRA $1F93 C2/1FFB: 64 B8 STZ $B8 C2/1FFD: 64 B9 STZ $B9 C2/1FFF: B9 E0 32 LDA $32E0,Y C2/2002: C9 0A B0 CMP #$B00A C2/2005: 8D 0A AA STA $AA0A C2/2008: C2 20 REP #$20 C2/200A: BD 18 30 LDA $3018,X C2/200D: 85 B8 STA $B8 C2/200F: 80 82 BRA $1F93 C2/2011: 8A TXA C2/2012: 38 SEC C2/2013: E9 24 SBC #$24 C2/2015: AA TAX C2/2016: BD A0 3A LDA $3AA0,X C2/2019: 4A LSR C2/201A: 90 83 BCC $1F9F ; branch if $3AA0.0 is clear C2/201C: BD 18 30 LDA $3018,X C2/201F: 85 B8 STA $B8 C2/2021: 80 A7 BRA $1FCA ; target $36: self C2/2023: C2 20 REP #$20 C2/2025: B9 18 30 LDA $3018,Y C2/2028: 85 B8 STA $B8 C2/202A: 4C 93 1F JMP $1F93 ; remove self as a target C2/202D: 08 PHP C2/202E: C2 20 REP #$20 C2/2030: B9 18 30 LDA $3018,Y C2/2033: 14 B8 TRB $B8 C2/2035: 28 PLP C2/2036: 60 RTS C2/2037: 08 PHP C2/2038: C2 20 REP #$20 C2/203A: 64 B8 STZ $B8 C2/203C: A2 12 LDX #$12 C2/203E: BD E3 3E LDA $3EE3,X C2/2041: 10 05 BPL $2048 C2/2043: BD 18 30 LDA $3018,X C2/2046: 04 B8 TSB $B8 C2/2048: CA DEX C2/2049: CA DEX C2/204A: 10 F2 BPL $203E C2/204C: 28 PLP C2/204D: 60 RTS C2/204E: 08 PHP C2/204F: C2 20 REP #$20 C2/2051: 64 B8 STZ $B8 C2/2053: A2 12 LDX #$12 C2/2055: BD F7 3E LDA $3EF7,X C2/2058: 10 05 BPL $205F C2/205A: BD 18 30 LDA $3018,X C2/205D: 04 B8 TSB $B8 C2/205F: CA DEX C2/2060: CA DEX C2/2061: 10 F2 BPL $2055 C2/2063: 28 PLP C2/2064: 60 RTS C2/2065: .DW $2023, $1FA5, $1FA8, $1FAC, $1FAF, $1FB3, $1FB8, $1FBD C2/2075: .DW $1FC2, $1FC7, $1FCC, $1FD1, $1FD6, $1FA1, $1F88, $1FFB C2/2085: .DW $1F93, $1F9F, $2011, $2011, $2011, $2011, $1FDB, $1FE5 ; -----------------------------------------[ Battle: Unknown ]------------------------------------------ ; [ Update Character Battle Stats ] _EquipChange: C2/2095: A2 03 LDX $#03 C2/2097: BD 2F 30 LDA $2F30,X C2/209A: F0 3E BEQ $20DA C2/209C: 9E 30 2F STZ $2F30,X C2/209F: DA PHX C2/20A0: 5A PHY C2/20A1: 8A TXA C2/20A2: 85 EE STA $EE C2/20A4: 0A ASL C2/20A5: 85 EF STA $EF C2/20A7: 0A ASL C2/20A8: 65 EE ADC $EE C2/20AA: AA TAX C2/20AB: BD 86 2B LDA $2B86,X C2/20AE: EB XBA C2/20AF: BD 9A 2B LDA $2B9A,X C2/20B2: A6 EF LDX $EF C2/20B4: C2 10 REP #$10 C2/20B6: BC 10 30 LDY $3010,X C2/20B9: 99 20 16 STA $1620,Y C2/20BC: EB XBA C2/20BD: 99 1F 16 STA $161F,Y C2/20C0: BD E4 3E LDA $3EE4,X C2/20C3: 99 14 16 STA $1614,Y C2/20C6: E2 10 SEP #$10 C2/20C8: BD D9 3E LDA $3ED9,X C2/20CB: 22 77 0E C2 JSL $C20E77 ; update character battle stats C2/20CF: 20 6D 28 JSR $286D C2/20D2: 20 7D 52 JSR $527D ; update enabled commands C2/20D5: 20 75 26 JSR $2675 ; update status immunity C2/20D8: 7A PLY C2/20D9: FA PLX C2/20DA: CA DEX ; next character C2/20DB: 10 BA BPL $2097 C2/20DD: 60 RTS ; [ Command $2A: Run ] _Escape: C2/20DE: AD 45 2F LDA $2F45 ; return if characters are not running C2/20E1: F0 7F BEQ $2162 C2/20E3: C2 20 REP #$20 C2/20E5: A9 02 09 LDA #$0902 ; battle command $02 (battle message $09: "Can't run away!!") C2/20E8: 8D 28 3A STA $3A28 C2/20EB: E2 20 SEP #$20 C2/20ED: A5 B1 LDA $B1 C2/20EF: 89 02 BIT #$02 C2/20F1: D0 6C BNE $215F ; C2/20F3: AD 38 3A LDA $3A38 C2/20F6: F0 6A BEQ $2162 ; return if no characters just escaped C2/20F8: 85 B8 STA $B8 ; set targets C2/20FA: 9C 38 3A STZ $3A38 ; clear character that just escaped C2/20FD: 20 00 64 JSR $6400 ; clear battle script data buffer C2/2100: A2 06 LDX #$06 C2/2102: BD 18 30 LDA $3018,X ; bit mask C2/2105: 14 B8 TRB $B8 C2/2107: F0 3B BEQ $2144 ; skip if that character didn't just escape C2/2109: EB XBA C2/210A: BD 19 32 LDA $3219,X C2/210D: D0 35 BNE $2144 ; skip if atb gauge is not full C2/210F: BD A0 3A LDA $3AA0,X C2/2112: 89 50 BIT #$50 C2/2114: D0 2E BNE $2144 ; skip if $3AA0.4 or $3AA0.6 is set C2/2116: 4A LSR C2/2117: 90 2B BCC $2144 ; skip if character is not present C2/2119: BD E4 3E LDA $3EE4,X C2/211C: 89 02 BIT #$02 C2/211E: D0 24 BNE $2144 ; skip if character has zombie status C2/2120: BD F9 3E LDA $3EF9,X C2/2123: 89 20 BIT #$20 C2/2125: D0 1D BNE $2144 ; skip if character has hide status C2/2127: EB XBA C2/2128: 04 B8 TSB $B8 ; add target C2/212A: 0C 39 3A TSB $3A39 ; characters that have left the battle C2/212D: 0C 4C 2F TSB $2F4C ; characters that can be targetted C2/2130: BD A1 3A LDA $3AA1,X ; set $3AA1.6 (pending run action) C2/2133: 09 40 ORA #$40 C2/2135: 9D A1 3A STA $3AA1,X C2/2138: BD 04 32 LDA $3204,X ; remove all advance wait actions C2/213B: 09 40 ORA #$40 C2/213D: 9D 04 32 STA $3204,X C2/2140: 20 C8 07 JSR $07C8 ; update zinger, love token, charm status C2/2143: 9B TXY C2/2144: CA DEX ; next character C2/2145: CA DEX C2/2146: 10 BA BPL $2102 C2/2148: A5 B8 LDA $B8 C2/214A: F0 16 BEQ $2162 ; branch if no characters ran away C2/214C: 64 B9 STZ $B9 ; clear monster targets C2/214E: BB TYX C2/214F: 20 C2 57 JSR $57C2 ; update battle script data C2/2152: 20 DB 63 JSR $63DB ; copy battle script data to buffer C2/2155: C2 20 REP #$20 C2/2157: A9 06 22 LDA #$2206 ; battle command $06 (battle animation for command $22: characters run away ???) C2/215A: 8D 28 3A STA $3A28 C2/215D: E2 20 SEP #$20 C2/215F: 20 9E 62 JSR $629E ; add battle script command to queue C2/2162: 60 RTS ; [ Execute Immediate Action ] ; A = pointer to command list (+$3184) _Event: C2/2163: F4 18 00 PEA $0018 ; push return address C2/2166: 48 PHA C2/2167: 0A ASL C2/2168: A8 TAY C2/2169: 18 CLC C2/216A: 20 76 02 JSR $0276 ; init queued action C2/216D: 68 PLA C2/216E: A8 TAY C2/216F: B9 84 31 LDA $3184,Y ; command list C2/2172: CD 0A 34 CMP $340A ; immediate action C2/2175: D0 02 BNE $2179 ; branch if they don't match C2/2177: A9 FF LDA #$FF C2/2179: 8D 0A 34 STA $340A ; set immediate action C2/217C: A9 FF LDA #$FF C2/217E: 99 84 31 STA $3184,Y ; clear command list slot C2/2181: A9 01 LDA #$01 ; set counterattack flag C2/2183: 04 B1 TSB $B1 C2/2185: 4C D3 13 JMP $13D3 ; execute command ; [ Execute Advance Wait Action ] ; called when an advance wait action reaches the top of the queue _GaugeFull: C2/2188: A9 80 LDA #$80 C2/218A: 20 AB 5B JSR $5BAB ; set $3AA1.7 C2/218D: BD A0 3A LDA $3AA0,X C2/2190: 89 50 BIT #$50 C2/2192: D0 76 BNE $220A ; return if $3AA0.4 or $3AA0.6 are set C2/2194: BD A1 3A LDA $3AA1,X ; clear $3AA1.7, set $3AA1.0 C2/2197: 29 7F AND #$7F C2/2199: 09 01 ORA #$01 C2/219B: 9D A1 3A STA $3AA1,X C2/219E: 20 1C 03 JSR $031C ; create advance wait action C2/21A1: BD CC 32 LDA $32CC,X ; return if character/monster has no actions pending in the command list C2/21A4: 30 64 BMI $220A C2/21A6: 0A ASL C2/21A7: A8 TAY C2/21A8: B9 20 34 LDA $3420,Y ; command C2/21AB: C9 1E CMP #$1E C2/21AD: B0 5B BCS $220A ; return if >= $1E (AI) C2/21AF: 8D 6F 2D STA $2D6F ; battle script command (byte 1) C2/21B2: C9 16 CMP #$16 C2/21B4: F0 06 BEQ $21BC ; branch if command is $16 (jump) C2/21B6: E0 08 CPX #$08 C2/21B8: 90 2C BCC $21E6 ; branch if a character C2/21BA: 80 4E BRA $220A ; return if a monster ; jump C2/21BC: BD 05 32 LDA $3205,X C2/21BF: 10 49 BPL $220A ; branch if $3205.7 is clear C2/21C1: C2 20 REP #$20 C2/21C3: E0 08 CPX #$08 C2/21C5: B0 0C BCS $21D3 C2/21C7: A9 16 00 LDA #$0016 C2/21CA: 8D 28 3F STA $3F28 C2/21CD: B9 20 35 LDA $3520,Y C2/21D0: 8D 2A 3F STA $3F2A C2/21D3: BD 18 30 LDA $3018,X C2/21D6: 0C 2C 3F TSB $3F2C C2/21D9: E2 20 SEP #$20 C2/21DB: BD F9 3E LDA $3EF9,X C2/21DE: 09 20 ORA #$20 C2/21E0: 9D F9 3E STA $3EF9,X C2/21E3: 20 26 5D JSR $5D26 ; update character hp/mp/status in graphics buffer ; all character commands + monsters using jump C2/21E6: 20 39 26 JSR $2639 ; init battle script command C2/21E9: 20 00 64 JSR $6400 ; clear battle script data buffer C2/21EC: C2 20 REP #$20 C2/21EE: B9 20 35 LDA $3520,Y ; load targets C2/21F1: 85 B8 STA $B8 C2/21F3: E2 20 SEP #$20 C2/21F5: A9 0C LDA #$0C ; battle script command $0C (ready stance/jump) C2/21F7: 8D 6E 2D STA $2D6E C2/21FA: A9 FF LDA #$FF ; battle script command $FF (end of script) C2/21FC: 8D 72 2D STA $2D72 C2/21FF: 20 C2 57 JSR $57C2 ; update battle script data C2/2202: 20 DB 63 JSR $63DB ; copy battle script data to buffer C2/2205: A9 04 LDA #$04 C2/2207: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/220A: 4C 19 00 JMP $0019 ; go to start of main battle loop ; [ Check if Attack Hits ] _HitCheck: C2/220D: 48 PHA C2/220E: DA PHX C2/220F: 18 CLC C2/2210: 08 PHP C2/2211: E2 20 SEP #$20 C2/2213: 64 FE STZ $FE C2/2215: A5 B3 LDA $B3 C2/2217: 10 1C BPL $2235 C2/2219: B9 E4 3E LDA $3EE4,Y C2/221C: 89 10 BIT #$10 C2/221E: F0 15 BEQ $2235 C2/2220: AD A4 11 LDA $11A4 C2/2223: 0A ASL C2/2224: 30 07 BMI $222D C2/2226: AD A2 11 LDA $11A2 C2/2229: 4A LSR C2/222A: 4C B3 22 JMP $22B3 C2/222D: B9 FC 3D LDA $3DFC,Y C2/2230: 09 10 ORA #$10 C2/2232: 99 FC 3D STA $3DFC,Y C2/2235: AD A3 11 LDA $11A3 C2/2238: 89 02 BIT #$02 C2/223A: D0 0F BNE $224B C2/223C: B9 F8 3E LDA $3EF8,Y C2/223F: 10 0A BPL $224B C2/2241: C2 20 REP #$20 C2/2243: B9 18 30 LDA $3018,Y C2/2246: 04 A6 TSB $A6 C2/2248: 4C E5 22 JMP $22E5 C2/224B: AD A2 11 LDA $11A2 C2/224E: 89 02 BIT #$02 C2/2250: F0 07 BEQ $2259 C2/2252: B9 A1 3A LDA $3AA1,Y C2/2255: 89 04 BIT #$04 C2/2257: D0 5C BNE $22B5 ; branch if $3AA1.2 is set (instant death protection) C2/2259: AD A2 11 LDA $11A2 C2/225C: 89 04 BIT #$04 C2/225E: F0 08 BEQ $2268 C2/2260: B9 E4 3E LDA $3EE4,Y C2/2263: 59 95 3C EOR $3C95,Y C2/2266: 10 4D BPL $22B5 C2/2268: A5 B5 LDA $B5 C2/226A: C9 00 CMP #$00 C2/226C: F0 04 BEQ $2272 C2/226E: C9 06 CMP #$06 C2/2270: D0 2F BNE $22A1 C2/2272: AD A9 11 LDA $11A9 C2/2275: D0 2A BNE $22A1 C2/2277: AD C9 3E LDA $3EC9 C2/227A: C9 01 CMP #$01 C2/227C: D0 23 BNE $22A1 ; branch if there is not one target ; single target C2/227E: C0 08 CPY #$08 C2/2280: B0 1F BCS $22A1 C2/2282: B9 F9 3E LDA $3EF9,Y C2/2285: 0A ASL C2/2286: 10 0B BPL $2293 C2/2288: 20 53 4B JSR $4B53 ; random number (carry) C2/228B: 90 06 BCC $2293 C2/228D: A9 40 LDA #$40 C2/228F: 85 FE STA $FE C2/2291: 80 22 BRA $22B5 C2/2293: AD 36 3A LDA $3A36 C2/2296: 0D 37 3A ORA $3A37 C2/2299: F0 06 BEQ $22A1 C2/229B: A9 20 LDA #$20 C2/229D: 85 FE STA $FE C2/229F: 80 14 BRA $22B5 ; multiple targets C2/22A1: AD A4 11 LDA $11A4 C2/22A4: 89 20 BIT #$20 C2/22A6: D0 40 BNE $22E8 C2/22A8: 89 40 BIT #$40 C2/22AA: D0 40 BNE $22EC C2/22AC: 89 10 BIT #$10 C2/22AE: F0 4B BEQ $22FB C2/22B0: 20 9C 23 JSR $239C C2/22B3: 90 33 BCC $22E8 C2/22B5: B9 E4 3E LDA $3EE4,Y C2/22B8: 89 1A BIT #$1A C2/22BA: D0 15 BNE $22D1 C2/22BC: C0 08 CPY #$08 C2/22BE: B0 11 BCS $22D1 C2/22C0: 20 BF 23 JSR $23BF C2/22C3: C9 06 CMP #$06 C2/22C5: 90 0A BCC $22D1 C2/22C7: A2 03 LDX #$03 C2/22C9: 9E AA 11 STZ $11AA,X C2/22CC: CA DEX C2/22CD: 10 FA BPL $22C9 C2/22CF: 80 17 BRA $22E8 C2/22D1: A9 02 LDA #$02 C2/22D3: 04 B2 TSB $B2 C2/22D5: 9C 89 3A STZ $3A89 C2/22D8: AD 1C 34 LDA $341C C2/22DB: F0 08 BEQ $22E5 C2/22DD: C2 20 REP #$20 C2/22DF: B9 18 30 LDA $3018,Y C2/22E2: 0C 5A 3A TSB $3A5A C2/22E5: 28 PLP C2/22E6: 38 SEC C2/22E7: 08 PHP C2/22E8: 28 PLP C2/22E9: FA PLX C2/22EA: 68 PLA C2/22EB: 60 RTS C2/22EC: AE A8 11 LDX $11A8 C2/22EF: 7B TDC C2/22F0: B9 18 3B LDA $3B18,Y C2/22F3: 20 92 47 JSR $4792 ; divide +A / X C2/22F6: 8A TXA C2/22F7: D0 D8 BNE $22D1 C2/22F9: 80 ED BRA $22E8 C2/22FB: F4 40 80 PEA $8040 C2/22FE: F4 10 02 PEA $0210 C2/2301: 20 64 58 JSR $5864 ; check if status set C2/2304: 90 E2 BCC $22E8 C2/2306: C2 20 REP #$20 C2/2308: B9 18 30 LDA $3018,Y C2/230B: 2C 54 3A BIT $3A54 C2/230E: E2 20 SEP #$20 C2/2310: D0 D6 BNE $22E8 C2/2312: AD A8 11 LDA $11A8 C2/2315: C9 FF CMP #$FF C2/2317: F0 CF BEQ $22E8 C2/2319: 85 EE STA $EE C2/231B: AD A2 11 LDA $11A2 C2/231E: 4A LSR C2/231F: 90 1E BCC $233F C2/2321: B9 4C 3E LDA $3E4C,Y C2/2324: 4A LSR C2/2325: B0 C1 BCS $22E8 ; branch if $3E4C.0 is set (retort) C2/2327: B9 E5 3E LDA $3EE5,Y C2/232A: 89 04 BIT #$04 C2/232C: F0 11 BEQ $233F C2/232E: 20 5A 4B JSR $4B5A ; random number (0..255) C2/2331: C9 40 CMP #$40 C2/2333: B0 9C BCS $22D1 C2/2335: B9 FD 3D LDA $3DFD,Y C2/2338: 09 04 ORA #$04 C2/233A: 99 FD 3D STA $3DFD,Y C2/233D: 80 92 BRA $22D1 C2/233F: B9 54 3B LDA $3B54,Y C2/2342: B0 03 BCS $2347 C2/2344: B9 55 3B LDA $3B55,Y C2/2347: 48 PHA C2/2348: 90 3E BCC $2388 C2/234A: BD E4 3E LDA $3EE4,X C2/234D: 4A LSR C2/234E: 90 02 BCC $2352 C2/2350: 46 EE LSR $EE C2/2352: B9 58 3C LDA $3C58,Y C2/2355: 89 04 BIT #$04 C2/2357: F0 02 BEQ $235B C2/2359: 46 EE LSR $EE C2/235B: F4 03 20 PEA $2003 C2/235E: F4 04 04 PEA $0404 C2/2361: 20 64 58 JSR $5864 ; check if status set C2/2364: B0 0C BCS $2372 C2/2366: A5 EE LDA $EE C2/2368: 4A LSR C2/2369: 4A LSR C2/236A: 65 EE ADC $EE C2/236C: 90 02 BCC $2370 C2/236E: A9 FF LDA #$FF C2/2370: 85 EE STA $EE C2/2372: F4 04 42 PEA $4204 C2/2375: F4 08 00 PEA $0008 C2/2378: 20 64 58 JSR $5864 ; check if status set C2/237B: B0 0B BCS $2388 C2/237D: A5 EE LDA $EE C2/237F: 46 EE LSR $EE C2/2381: 46 EE LSR $EE C2/2383: 38 SEC C2/2384: E5 EE SBC $EE C2/2386: 85 EE STA $EE C2/2388: 68 PLA C2/2389: EB XBA C2/238A: A5 EE LDA $EE C2/238C: 20 81 47 JSR $4781 ; multiply A * B C2/238F: EB XBA C2/2390: 85 EE STA $EE C2/2392: A9 64 LDA #$64 C2/2394: 20 65 4B JSR $4B65 ; random number (0..99) C2/2397: C5 EE CMP $EE C2/2399: 4C B3 22 JMP $22B3 ; [ ] Death: C2/239C: B9 55 3B LDA $3B55,Y C2/239F: EB XBA C2/23A0: AD A8 11 LDA $11A8 C2/23A3: 20 81 47 JSR $4781 ; multiply A * B C2/23A6: EB XBA C2/23A7: 85 EE STA $EE C2/23A9: A9 64 LDA #$64 C2/23AB: 20 65 4B JSR $4B65 ; random number (0..99) C2/23AE: C5 EE CMP $EE C2/23B0: B0 0C BCS $23BE C2/23B2: 20 5A 4B JSR $4B5A C2/23B5: 29 7F AND #$7F ; random number (0..127) C2/23B7: 85 EE STA $EE C2/23B9: B9 40 3B LDA $3B40,Y C2/23BC: C5 EE CMP $EE C2/23BE: 60 RTS ; [ ] _SetEvasionAnima: C2/23BF: 5A PHY C2/23C0: AD A2 11 LDA $11A2 C2/23C3: 4A LSR C2/23C4: B0 01 BCS $23C7 C2/23C6: C8 INY C2/23C7: 7B TDC C2/23C8: B9 E4 3C LDA $3CE4,Y C2/23CB: 05 FE ORA $FE C2/23CD: F0 1C BEQ $23EB C2/23CF: 20 2A 52 JSR $522A ; pick a random bit set in A C2/23D2: 89 40 BIT #$40 C2/23D4: F0 03 BEQ $23D9 C2/23D6: 8C 83 3A STY $3A83 C2/23D9: 89 20 BIT #$20 C2/23DB: F0 03 BEQ $23E0 C2/23DD: 8C 82 3A STY $3A82 C2/23E0: 20 F0 51 JSR $51F0 ; get bit number C2/23E3: 98 TYA C2/23E4: 4A LSR C2/23E5: A8 TAY C2/23E6: 8A TXA C2/23E7: 1A INC C2/23E8: 99 AA 00 STA $00AA,Y C2/23EB: 7A PLY C2/23EC: 60 RTS ; [ Init Battle RAM ] _InitKernel: C2/23ED: 08 PHP C2/23EE: C2 30 REP #$30 C2/23F0: A2 58 02 LDX #$0258 ; $3A20-$3ED3 = #$00 C2/23F3: 9E 20 3A STZ $3A20,X C2/23F6: 9E 7A 3C STZ $3C7A,X C2/23F9: CA DEX C2/23FA: CA DEX C2/23FB: 10 F6 BPL $23F3 C2/23FD: 7B TDC C2/23FE: 3A DEC C2/23FF: A2 0E 0A LDX #$0A0E C2/2402: 9D 00 20 STA $2000,X ; $2000-$341F = #$FF C2/2405: 9D 10 2A STA $2A10,X C2/2408: CA DEX C2/2409: CA DEX C2/240A: 10 F6 BPL $2402 C2/240C: 9C 44 2F STZ $2F44 ; clear invisible monsters (clear status) C2/240F: 9C 4C 2F STZ $2F4C ; clear untargettable characters/monsters C2/2412: 9C 4E 2F STZ $2F4E ; clear targettable characters/monsters C2/2415: 9C 53 2F STZ $2F53 ; clear h-flip for controlled targets (RELM) and muddled characters C2/2418: 64 B0 STZ $B0 ; clear flags C2/241A: 64 B2 STZ $B2 C2/241C: A2 02 26 LDX #$2602 ; load character/monster masks C2/241F: A0 18 30 LDY #$3018 C2/2422: A9 1B 00 LDA #$001B C2/2425: 54 7E C2 MVN $7E,$C2 C2/2428: AD E0 11 LDA $11E0 ; battle index C2/242B: C9 D7 01 CMP #$01D7 C2/242E: E2 30 SEP #$30 C2/2430: D0 03 BNE $2435 ; branch if not first statue of final battle C2/2432: 9C E0 3E STZ $3EE0 ; disable final battle scrolling C2/2435: A2 13 LDX #$13 ; load battle event data C2/2437: BD C9 1D LDA $1DC9,X C2/243A: 9D B4 3E STA $3EB4,X C2/243D: CA DEX C2/243E: 10 F7 BPL $2437 C2/2440: AD 1E 02 LDA $021E ; low byte of game time (frames) C2/2443: 0A ASL C2/2444: 0A ASL C2/2445: 85 BE STA $BE ; set random number seed C2/2447: 20 E8 30 JSR $30E8 ; load battle data C2/244A: 20 2F 2F JSR $2F2F ; init character data C2/244D: A9 80 LDA #$80 ; C2/244F: 1C BB 3E TRB $3EBB C2/2452: A9 91 LDA #$91 ; disable zone eater, time up, game over flags C2/2454: 1C BC 3E TRB $3EBC C2/2457: A2 12 LDX #$12 C2/2459: 20 5A 4B JSR $4B5A ; random number (0..255) C2/245C: 9D F0 3A STA $3AF0,X ; C2/245F: A9 BC LDA #$BC ; flags to update character (spell list, condemned counter, command list) C2/2461: EC E2 3E CPX $3EE2 C2/2464: D0 02 BNE $2468 ; branch if character is not morphed C2/2466: 09 02 ORA #$02 ; update command list (morph/revert) C2/2468: 9D 04 32 STA $3204,X C2/246B: CA DEX ; next character/monster C2/246C: CA DEX C2/246D: 10 EA BPL $2459 C2/246F: 20 44 25 JSR $2544 ; init characters C2/2472: AD 4D 1D LDA $1D4D ; command setting C2/2475: 30 03 BMI $247A ; branch if short C2/2477: 9C 2E 2F STZ $2F2E ; window C2/247A: 89 08 BIT #$08 ; battle mode C2/247C: F0 03 BEQ $2481 ; branch if active C2/247E: EE 8F 3A INC $3A8F ; enable wait mode C2/2481: 29 07 AND #$07 ; battle speed C2/2483: 0A ASL C2/2484: 0A ASL C2/2485: 0A ASL C2/2486: 85 EE STA $EE C2/2488: 0A ASL C2/2489: 65 EE ADC $EE C2/248B: 49 FF EOR #$FF C2/248D: 8D 90 3A STA $3A90 ; set battle speed constant C2/2490: AD 4E 1D LDA $1D4E ; gauge setting C2/2493: 10 03 BPL $2498 ; branch if on C2/2495: 9C 21 20 STZ $2021 ; set atb gauge setting C2/2498: 9C 41 2F STZ $2F41 ; start battle time C2/249B: 20 6E 54 JSR $546E ; init battle inventory C2/249E: 20 0C 58 JSR $580C ; init skills C2/24A1: 20 E1 2E JSR $2EE1 ; init monsters C2/24A4: 20 91 43 JSR $4391 ; update status C2/24A7: 20 9B 06 JSR $069B ; update special status (seize, control, love token, etc.) C2/24AA: A9 14 LDA #$14 C2/24AC: 8D AF 11 STA $11AF ; level 20 C2/24AF: 20 3F 08 JSR $083F ; update targets after each command C2/24B2: 20 B9 4A JSR $4AB9 ; update living/dead targets C2/24B5: 20 3A 2E JSR $2E3A ; init battle type C2/24B8: 20 C9 26 JSR $26C9 ; init status immunity C2/24BB: 20 68 2E JSR $2E68 ; battle type special effects C2/24BE: 20 75 25 JSR $2575 C2/24C1: A2 00 LDX #$00 C2/24C3: AD 4B 2F LDA $2F4B C2/24C6: 89 04 BIT #$04 C2/24C8: D0 20 BNE $24EA C2/24CA: AD 1F 20 LDA $201F C2/24CD: C9 01 CMP #$01 C2/24CF: D0 04 BNE $24D5 C2/24D1: A2 23 LDX #$23 ; battle message $23 (back attack) C2/24D3: 80 15 BRA $24EA C2/24D5: C9 02 CMP #$02 C2/24D7: D0 04 BNE $24DD C2/24D9: A2 25 LDX #$25 ; battle message $25 (pincer attack) C2/24DB: 80 0D BRA $24EA C2/24DD: C9 03 CMP #$03 C2/24DF: D0 02 BNE $24E3 C2/24E1: A2 24 LDX #$24 ; battle message $24 (side attack) C2/24E3: A5 B0 LDA $B0 C2/24E5: 0A ASL C2/24E6: 10 02 BPL $24EA C2/24E8: A2 22 LDX #$22 ; battle message $22 (preemptive attack) C2/24EA: 9B TXY C2/24EB: F0 05 BEQ $24F2 C2/24ED: A9 25 LDA #$25 ; command $25 (display battle message) C2/24EF: 20 91 4E JSR $4E91 ; create immediate action C2/24F2: 20 73 5C JSR $5C73 ; update run difficulty C2/24F5: 20 54 5C JSR $5C54 ; update gauge values/condemned number in graphics buffer C2/24F8: 64 B8 STZ $B8 C2/24FA: 64 B9 STZ $B9 C2/24FC: A2 06 LDX #$06 C2/24FE: BD 18 30 LDA $3018,X ; check for jump/seize characters C2/2501: 2C 2C 3F BIT $3F2C C2/2504: F0 16 BEQ $251C C2/2506: BD A0 3A LDA $3AA0,X ; set $3AA0.3 and $3AA0.5 C2/2509: 09 28 ORA #$28 C2/250B: 9D A0 3A STA $3AA0,X C2/250E: 9E 19 32 STZ $3219,X C2/2511: 20 77 4E JSR $4E77 ; add action to queue C2/2514: A9 16 LDA #$16 ; command $16 (jump) C2/2516: 8D 7A 3A STA $3A7A C2/2519: 20 CB 4E JSR $4ECB ; create normal action C2/251C: CA DEX ; next character C2/251D: CA DEX C2/251E: 10 DE BPL $24FE C2/2520: AD E1 3E LDA $3EE1 ; data byte for final battle scrolling C2/2523: 1A INC C2/2524: F0 19 BEQ $253F ; branch if not scrolling, do battle graphics command $00 (init battle graphics) C2/2526: 3A DEC C2/2527: 8D 6F 2D STA $2D6F C2/252A: A9 12 LDA #$12 ; battle script command $12 (scroll background between bosses in final battle) C2/252C: 8D 6E 2D STA $2D6E C2/252F: AD 75 3A LDA $3A75 C2/2532: 8D 71 2D STA $2D71 C2/2535: A9 FF LDA #$FF C2/2537: 8D 70 2D STA $2D70 C2/253A: 8D 72 2D STA $2D72 C2/253D: A9 04 LDA #$04 C2/253F: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/2542: 28 PLP C2/2543: 60 RTS ; [ Init Characters ] _LoadPlayer: C2/2544: 20 51 55 JSR $5551 ; init spells/lores C2/2547: A2 06 LDX #$06 C2/2549: BD D8 3E LDA $3ED8,X ; actor number C2/254C: 30 22 BMI $2570 ; skip if character slot is empty C2/254E: C9 10 CMP #$10 C2/2550: B0 05 BCS $2557 ; branch if >= $10 (ghost #1) C2/2552: A8 TAY C2/2553: 8A TXA C2/2554: 99 00 30 STA $3000,Y ; set actor's character slot C2/2557: BD 18 30 LDA $3018,X C2/255A: 0C 8D 3A TSB $3A8D ; set characters present C2/255D: BD D9 3E LDA $3ED9,X ; character index C2/2560: 22 77 0E C2 JSL $C20E77 ; update character battle stats C2/2564: 20 6D 28 JSR $286D C2/2567: 20 A8 27 JSR $27A8 C2/256A: 20 8D 56 JSR $568D ; init equipped esper C2/256D: 20 2C 53 JSR $532C ; init character command list C2/2570: CA DEX ; next character C2/2571: CA DEX C2/2572: 10 D5 BPL $2549 C2/2574: 60 RTS ; [ ] _InitGauge: C2/2575: 08 PHP C2/2576: 64 F3 STZ $F3 C2/2578: A0 12 LDY #$12 C2/257A: B9 A0 3A LDA $3AA0,Y C2/257D: 4A LSR C2/257E: B0 07 BCS $2587 ; branch if $3AA0.0 is set C2/2580: 18 CLC C2/2581: A9 10 LDA #$10 C2/2583: 65 F3 ADC $F3 C2/2585: 85 F3 STA $F3 C2/2587: 88 DEY C2/2588: 88 DEY C2/2589: 10 EF BPL $257A C2/258B: C2 20 REP #$20 C2/258D: A9 FF 03 LDA #$03FF C2/2590: 85 F0 STA $F0 C2/2592: A0 12 LDY #$12 C2/2594: A5 F0 LDA $F0 C2/2596: 20 2A 52 JSR $522A ; pick a random bit set in A C2/2599: 14 F0 TRB $F0 C2/259B: 20 F0 51 JSR $51F0 ; get bit number C2/259E: E2 20 SEP #$20 C2/25A0: 8A TXA C2/25A1: 0A ASL C2/25A2: 0A ASL C2/25A3: 0A ASL C2/25A4: 85 F2 STA $F2 C2/25A6: B9 19 32 LDA $3219,Y C2/25A9: 1A INC C2/25AA: D0 4E BNE $25FA C2/25AC: AD E1 3E LDA $3EE1 C2/25AF: 1A INC C2/25B0: D0 48 BNE $25FA C2/25B2: AE 1F 20 LDX $201F C2/25B5: B9 18 30 LDA $3018,Y C2/25B8: 2C 40 3A BIT $3A40 C2/25BB: D0 14 BNE $25D1 C2/25BD: C0 08 CPY #$08 C2/25BF: B0 10 BCS $25D1 C2/25C1: A5 B0 LDA $B0 C2/25C3: 0A ASL C2/25C4: 30 34 BMI $25FA C2/25C6: CA DEX C2/25C7: 30 15 BMI $25DE C2/25C9: CA DEX C2/25CA: CA DEX C2/25CB: F0 2D BEQ $25FA C2/25CD: A5 F2 LDA $F2 C2/25CF: 80 22 BRA $25F3 C2/25D1: A5 B0 LDA $B0 C2/25D3: 0A ASL C2/25D4: 30 04 BMI $25DA C2/25D6: E0 03 CPX #$03 C2/25D8: D0 04 BNE $25DE C2/25DA: A9 01 LDA #$01 C2/25DC: 80 15 BRA $25F3 C2/25DE: B9 19 3B LDA $3B19,Y C2/25E1: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/25E4: 79 19 3B ADC $3B19,Y C2/25E7: B0 08 BCS $25F1 C2/25E9: 65 F2 ADC $F2 C2/25EB: B0 04 BCS $25F1 C2/25ED: 65 F3 ADC $F3 C2/25EF: 90 02 BCC $25F3 C2/25F1: A9 FF LDA #$FF C2/25F3: 1A INC C2/25F4: D0 01 BNE $25F7 C2/25F6: 3A DEC C2/25F7: 99 19 32 STA $3219,Y C2/25FA: C2 20 REP #$20 C2/25FC: 88 DEY C2/25FD: 88 DEY C2/25FE: 10 94 BPL $2594 C2/2600: 28 PLP C2/2601: 60 RTS ; character masks C2/2602: .DW $0001, $0002, $0004, $0008 ; monster masks C2/260A: .DW $0100, $0200, $0400, $0800, $1000, $2000 ; pointers to character spell lists in RAM C2/2616: .DW $208E, $21CA, $2306, $2442 ; [ Clear Battle Data ] _InitKernel2: C2/261E: 7B TDC C2/261F: A2 5F LDX #$5F C2/2621: 9D E4 3E STA $3EE4,X ; $3EE4-$3F43 = #$00 C2/2624: CA DEX C2/2625: 10 FA BPL $2621 C2/2627: 3A DEC C2/2628: A2 0F LDX #$0F C2/262A: 9D D4 3E STA $3ED4,X ; $3ED4-$3EE3 = #$FF C2/262D: CA DEX C2/262E: 10 FA BPL $262A C2/2630: A9 12 LDA #$12 C2/2632: 8D 28 3F STA $3F28 ; set previous attack to mimic C2/2635: 8D 24 3F STA $3F24 C2/2638: 60 RTS ; [ Init Battle Script Command ] _InitAnima: C2/2639: 08 PHP C2/263A: 9C 72 3A STZ $3A72 ; clear battle script command queue pointer C2/263D: 9C 70 3A STZ $3A70 ; clear number of attacks (0 = 1 attack) C2/2640: C2 20 REP #$20 C2/2642: 9C 32 3A STZ $3A32 ; clear pointer to battle script data C2/2645: 9C 34 3A STZ $3A34 ; clear counter for damage variables C2/2648: 9C 30 3A STZ $3A30 ; clear targets C2/264B: 9C 4E 3A STZ $3A4E ; clear backup targets C2/264E: 28 PLP C2/264F: 60 RTS ; [ Update Death/Poison Immunity ] _InitStatus3: C2/2650: BD A1 3A LDA $3AA1,X ; clear $3AA1.2 (instant death protection) C2/2653: 29 FB AND #$FB C2/2655: EB XBA C2/2656: BD 1C 33 LDA $331C,X C2/2659: 30 06 BMI $2661 ; branch if not immune to wound status C2/265B: 09 80 ORA #$80 C2/265D: EB XBA C2/265E: 09 04 ORA #$04 C2/2660: EB XBA C2/2661: EB XBA C2/2662: 9D A1 3A STA $3AA1,X ; set $3AA1.2 (instant death protection) C2/2665: BD CD 3B LDA $3BCD,X C2/2668: 89 08 BIT #$08 C2/266A: F0 04 BEQ $2670 ; branch if not immune to poison element C2/266C: EB XBA C2/266D: 29 FB AND #$FB C2/266F: EB XBA C2/2670: EB XBA C2/2671: 9D 1C 33 STA $331C,X ; set immune to poison status C2/2674: 60 RTS ; [ Update Status Immunity ] _InitStatus2: C2/2675: BD 31 33 LDA $3331,X ; blocked status 4 C2/2678: EB XBA C2/2679: BD 6D 3C LDA $3C6D,X ; equipment status 3 C2/267C: 4A LSR C2/267D: 90 04 BCC $2683 ; branch if no float C2/267F: EB XBA C2/2680: 29 7F AND #$7F C2/2682: EB XBA C2/2683: AD BB 3E LDA $3EBB C2/2686: 89 04 BIT #$04 C2/2688: F0 04 BEQ $268E C2/268A: EB XBA C2/268B: 29 F7 AND #$F7 C2/268D: EB XBA C2/268E: EB XBA C2/268F: 9D 31 33 STA $3331,X C2/2692: BD 30 33 LDA $3330,X C2/2695: EB XBA C2/2696: BD 1D 33 LDA $331D,X C2/2699: C2 20 REP #$20 C2/269B: 85 EE STA $EE C2/269D: BD 6C 3C LDA $3C6C,X C2/26A0: 29 78 EE AND #$EE78 C2/26A3: 49 FF FF EOR #$FFFF C2/26A6: 25 EE AND $EE C2/26A8: 89 00 02 BIT #$0200 C2/26AB: F0 05 BEQ $26B2 C2/26AD: 89 40 00 BIT #$0040 C2/26B0: D0 03 BNE $26B5 C2/26B2: 29 BF FD AND #$FDBF C2/26B5: E2 20 SEP #$20 C2/26B7: 9D 1D 33 STA $331D,X C2/26BA: EB XBA C2/26BB: 89 04 BIT #$04 C2/26BD: F0 04 BEQ $26C3 C2/26BF: 89 08 BIT #$08 C2/26C1: D0 02 BNE $26C5 C2/26C3: 29 F3 AND #$F3 C2/26C5: 9D 30 33 STA $3330,X C2/26C8: 60 RTS ; [ Init Status Immunity ] _InitStatus: C2/26C9: A2 12 LDX #$12 C2/26CB: 20 75 26 JSR $2675 ; update status immunity C2/26CE: CA DEX ; next character/monster C2/26CF: CA DEX C2/26D0: 10 F9 BPL $26CB C2/26D2: 60 RTS ; [ Init Attack Based on Command ] _InitTarget: C2/26D3: DA PHX C2/26D4: 5A PHY C2/26D5: 48 PHA C2/26D6: 64 BA STZ $BA C2/26D8: A2 40 LDX #$40 C2/26DA: 86 BB STX $BB C2/26DC: A2 00 LDX #$00 C2/26DE: C9 1E CMP #$1E C2/26E0: B0 1F BCS $2701 C2/26E2: AA TAX C2/26E3: BF 8A 27 C2 LDA $C2278A,X C2/26E7: 48 PHA C2/26E8: 29 E1 AND #$E1 C2/26EA: 85 BA STA $BA C2/26EC: A3 01 LDA $01,S C2/26EE: 29 18 AND #$18 C2/26F0: 4A LSR C2/26F1: 04 BA TSB $BA C2/26F3: 8A TXA C2/26F4: 0A ASL C2/26F5: AA TAX C2/26F6: BF 01 FE CF LDA $CFFE01,X ; battle command data, targetting byte C2/26FA: 85 BB STA $BB C2/26FC: 68 PLA C2/26FD: 29 06 AND #$06 C2/26FF: AA TAX C2/2700: EB XBA C2/2701: FC 82 27 JSR ($2782,X) ; command init function C2/2704: 68 PLA C2/2705: 7A PLY C2/2706: FA PLX C2/2707: 60 RTS ; 3: throw/tools C2/2708: A2 04 LDX #$04 C2/270A: DF 78 27 C2 CMP $C22778,X C2/270E: D0 06 BNE $2716 C2/2710: FF 7D 27 C2 SBC $C2277D,X C2/2714: 80 37 BRA $274D C2/2716: CA DEX C2/2717: 10 F1 BPL $270A C2/2719: 38 SEC itemCursor: C2/271A: 8D 11 34 STA $3411 C2/271D: 20 63 2B JSR $2B63 ; get pointer to item data C2/2720: C2 10 REP #$10 C2/2722: AA TAX C2/2723: BF 0E 50 D8 LDA $D8500E,X ; targetting C2/2727: 85 BB STA $BB C2/2729: BF 15 50 D8 LDA $D85015,X ; C2/272D: 89 C2 BIT #$C2 C2/272F: D0 04 BNE $2735 C2/2731: A9 08 LDA #$08 C2/2733: 14 BA TRB $BA C2/2735: BF 12 50 D8 LDA $D85012,X ; C2/2739: E2 10 SEP #$10 C2/273B: 60 RTS ; 1: item C2/273C: C9 E6 CMP #$E6 C2/273E: 20 1A 27 JSR $271A C2/2741: B0 C4 BCS $2707 C2/2743: 30 06 BMI $274B C2/2745: EB XBA C2/2746: A9 10 LDA #$10 C2/2748: 04 B1 TSB $B1 C2/274A: EB XBA C2/274B: 29 3F AND #$3F ; fall through ; 2: commands that use a spell/attack ; Magic, SwdTech, Blitz, Lore, Slot, Rage, Dance, X-Magic, Summon, Health, Shock, MagiTek C2/274D: 8D 10 34 STA $3410 ; set last spell used C2/2750: 80 02 BRA $2754 ; 0: commands that don't use a spell attack ; Fight, Morph, Revert, Steal, Capture, Runic, Sketch, Control, Leap, Mimic, Row, Def, Jump, GP Rain, Possess C2/2752: A9 EE LDA #$EE ; attack $EE (battle) C2/2754: 20 66 29 JSR $2966 ; load spell data C2/2757: A5 BB LDA $BB C2/2759: 1A INC C2/275A: D0 05 BNE $2761 ; C2/275C: AD A0 11 LDA $11A0 C2/275F: 85 BB STA $BB C2/2761: AD A2 11 LDA $11A2 ; C2/2764: 48 PHA C2/2765: 29 04 AND #$04 ; isolate resurrection targetting flag C2/2767: 0A ASL C2/2768: 04 BA TSB $BA ; copy to "can hit dead targets flag" C2/276A: A3 01 LDA $01,S C2/276C: 29 10 AND #$10 ; random target flag C2/276E: 0A ASL C2/276F: 0A ASL C2/2770: 04 BA TSB $BA ; copy to $BA C2/2772: 68 PLA C2/2773: 29 80 AND #$80 ; can't target characters flag C2/2775: 04 BA TSB $BA C2/2777: 60 RTS ; bio blaster, flash, fire skean, water edge, bolt edge tableItem1: C2/2778: .DB $A4, $A5, $AB, $AC, $AD ; spell offsets for above items tableItem2: C2/277D: .DB $27, $27, $5A, $5A, $5A ; command init jump table _jumpTable_InitTarget: C2/2782: .DW $2752, $273C, $274D, $2708 ; command targetting data (one byte per command) TCBitTable: C2/278A: .DB $20, $1A, $04, $18, $18, $00, $20, $24, $06, $06, $04, $18, $04, $80, $80, $04 C2/279A: .DB $04, $80, $18, $04, $18, $18, $21, $04, $01, $04, $04, $04, $81, $04 _LoadCharcter: C2/27A8: 08 PHP C2/27A9: C2 30 REP #$30 C2/27AB: BC 10 30 LDY $3010,X C2/27AE: B9 09 16 LDA $1609,Y C2/27B1: 9D F4 3B STA $3BF4,X C2/27B4: B9 0D 16 LDA $160D,Y C2/27B7: 9D 08 3C STA $3C08,X C2/27BA: B9 0B 16 LDA $160B,Y C2/27BD: 20 3C 28 JSR $283C C2/27C0: C9 10 27 CMP #$2710 C2/27C3: 90 03 BCC $27C8 C2/27C5: A9 0F 27 LDA #$270F C2/27C8: 9D 1C 3C STA $3C1C,X C2/27CB: B9 0F 16 LDA $160F,Y C2/27CE: 20 3C 28 JSR $283C C2/27D1: C9 E8 03 CMP #$03E8 C2/27D4: 90 03 BCC $27D9 C2/27D6: A9 E7 03 LDA #$03E7 C2/27D9: 9D 30 3C STA $3C30,X C2/27DC: BD 18 30 LDA $3018,X C2/27DF: 24 B8 BIT $B8 C2/27E1: F0 15 BEQ $27F8 C2/27E3: BD 1C 3C LDA $3C1C,X C2/27E6: 9D F4 3B STA $3BF4,X C2/27E9: BD 30 3C LDA $3C30,X C2/27EC: 9D 08 3C STA $3C08,X C2/27EF: B9 14 16 LDA $1614,Y C2/27F2: 29 2D FF AND #$FF2D C2/27F5: 99 14 16 STA $1614,Y C2/27F8: BD 6C 3C LDA $3C6C,X C2/27FB: E2 20 SEP #$20 C2/27FD: 9D D5 3D STA $3DD5,X C2/2800: 4A LSR C2/2801: 90 08 BCC $280B C2/2803: BD 04 32 LDA $3204,X C2/2806: 29 EF AND #$EF C2/2808: 9D 04 32 STA $3204,X C2/280B: B9 14 16 LDA $1614,Y C2/280E: 9D D4 3D STA $3DD4,X C2/2811: 89 08 BIT #$08 C2/2813: F0 0A BEQ $281F C2/2815: A9 1D LDA #$1D C2/2817: 8D 20 3F STA $3F20 C2/281A: A9 83 LDA #$83 C2/281C: 8D 21 3F STA $3F21 C2/281F: B9 15 16 LDA $1615,Y C2/2822: 29 C0 AND #$C0 C2/2824: EB XBA C2/2825: 4A LSR C2/2826: 90 04 BCC $282C C2/2828: EB XBA C2/2829: 09 80 ORA #$80 C2/282B: EB XBA C2/282C: 0A ASL C2/282D: 9D E8 3D STA $3DE8,X C2/2830: EB XBA C2/2831: 9D E9 3D STA $3DE9,X C2/2834: B9 08 16 LDA $1608,Y C2/2837: 9D 18 3B STA $3B18,X C2/283A: 28 PLP C2/283B: 60 RTS ; [ ] _DecodeHp: C2/283C: DA PHX C2/283D: 0A ASL C2/283E: 2A ROL C2/283F: 85 EE STA $EE C2/2841: 2A ROL C2/2842: 2A ROL C2/2843: 29 06 00 AND #$0006 C2/2846: AA TAX C2/2847: A5 EE LDA $EE C2/2849: 4A LSR C2/284A: 4A LSR C2/284B: 85 EE STA $EE C2/284D: 7C 59 28 JMP ($2859,X) C2/2850: 7B TDC C2/2851: 4A LSR C2/2852: 4A LSR C2/2853: 4A LSR C2/2854: 18 CLC C2/2855: 65 EE ADC $EE C2/2857: FA PLX C2/2858: 60 RTS C2/2859: .DW $2850, $2852, $2853, $2851 ; [ Invert Evade/MBlock ] _EvasionConv: C2/2861: 0A ASL C2/2862: 90 02 BCC $2866 C2/2864: A9 FF LDA #$FF C2/2866: 49 FF EOR #$FF C2/2868: 1A INC C2/2869: D0 01 BNE $286C C2/286B: 3A DEC C2/286C: 60 RTS ; [ Init Equipment Effects ] _LoadCharcter2: C2/286D: 0B PHD C2/286E: F4 00 11 PEA $1100 ; set direct page to $1100 C2/2871: 2B PLD C2/2872: A5 C9 LDA $C9 ; armor C2/2874: C9 9F CMP #$9F C2/2876: D0 0B BNE $2883 ; branch if not $9F (moogle suit) C2/2878: 8A TXA C2/2879: 0A ASL C2/287A: 0A ASL C2/287B: 0A ASL C2/287C: 0A ASL C2/287D: A8 TAY C2/287E: A9 0A LDA #$0A ; use mog sprite C2/2880: 99 AE 2E STA $2EAE,Y ; character graphics index C2/2883: 8A TXA C2/2884: 4A LSR C2/2885: A8 TAY C2/2886: A5 D8 LDA $D8 ; genji glove C2/2888: 29 10 AND #$10 C2/288A: 99 6E 2E STA $2E6E,Y C2/288D: 18 CLC C2/288E: A5 A6 LDA $A6 ; vigor * 2 (max $FF) C2/2890: 65 A6 ADC $A6 C2/2892: 90 02 BCC $2896 C2/2894: A9 FF LDA #$FF C2/2896: 9D 2C 3B STA $3B2C,X ; set vigor C2/2899: A5 A4 LDA $A4 C2/289B: 9D 2D 3B STA $3B2D,X ; set speed (dummy) C2/289E: 9D 19 3B STA $3B19,X ; set speed C2/28A1: A5 A2 LDA $A2 C2/28A3: 9D 40 3B STA $3B40,X ; set stamina C2/28A6: A5 A0 LDA $A0 C2/28A8: 9D 41 3B STA $3B41,X ; set mag.pwr C2/28AB: A5 A8 LDA $A8 C2/28AD: 20 61 28 JSR $2861 ; invert evade C2/28B0: 9D 54 3B STA $3B54,X ; set evade C2/28B3: A5 AA LDA $AA C2/28B5: 20 61 28 JSR $2861 ; invert mblock C2/28B8: 9D 55 3B STA $3B55,X ; set mblock C2/28BB: A5 CF LDA $CF ; C2/28BD: 14 D8 TRB $D8 C2/28BF: A5 BC LDA $BC C2/28C1: 9D 6C 3C STA $3C6C,X ; status 2 effects C2/28C4: A5 D4 LDA $D4 C2/28C6: 9D 6D 3C STA $3C6D,X ; status 3 effects C2/28C9: A5 DC LDA $DC C2/28CB: 9D 71 3D STA $3D71,X ; run factor C2/28CE: A5 D9 LDA $D9 C2/28D0: 29 80 AND #$80 C2/28D2: 09 10 ORA #$10 C2/28D4: 9D 95 3C STA $3C95,X ; undead (relic ring), human (always) C2/28D7: A5 D5 LDA $D5 ; relic effects 1 C2/28D9: 0A ASL C2/28DA: EB XBA C2/28DB: A5 D6 LDA $D6 C2/28DD: 0C 6D 3A TSB $3A6D ; set relic effects 2 (party) C2/28E0: 0A ASL C2/28E1: A5 D7 LDA $D7 ; relic effects 3 C2/28E3: EB XBA C2/28E4: 6A ROR C2/28E5: C2 20 REP #$20 C2/28E7: 9D 44 3C STA $3C44,X ; relic effects 1 C2/28EA: A5 AC LDA $AC C2/28EC: 9D 68 3B STA $3B68,X ; bat.pwr C2/28EF: A5 AE LDA $AE C2/28F1: 9D 7C 3B STA $3B7C,X ; hit rate C2/28F4: A5 B4 LDA $B4 C2/28F6: 9D 34 3D STA $3D34,X ; weapon spell cast C2/28F9: A5 B0 LDA $B0 C2/28FB: 9D 90 3B STA $3B90,X ; weapon element C2/28FE: A5 D8 LDA $D8 C2/2900: 89 08 00 BIT #$0008 C2/2903: D0 05 BNE $290A ; branch if gauntlet equipped C2/2905: A9 40 40 LDA #$4040 C2/2908: 14 DA TRB $DA ; clear 2-hand effect C2/290A: A5 DA LDA $DA C2/290C: 9D A4 3B STA $3BA4,X ; weapon effects C2/290F: A5 BA LDA $BA C2/2911: 9D B8 3B STA $3BB8,X ; defense/magic defense C2/2914: A9 FF FF LDA #$FFFF C2/2917: 9D 1C 33 STA $331C,X C2/291A: 45 D2 EOR $D2 C2/291C: 9D 1C 33 STA $331C,X ; blocked status 1 & 2 C2/291F: A5 B6 LDA $B6 C2/2921: 9D CC 3B STA $3BCC,X ; absorbed/nullified elements C2/2924: A5 B8 LDA $B8 C2/2926: 9D E0 3B STA $3BE0,X ; weak/halved elements C2/2929: A5 BE LDA $BE C2/292B: 9D BC 3C STA $3CBC,X ; block effects C2/292E: A5 C6 LDA $C6 C2/2930: 9D A8 3C STA $3CA8,X ; weapon/shield C2/2933: A5 CA LDA $CA C2/2935: 9D D0 3C STA $3CD0,X ; relic 1/relic 2 C2/2938: A5 D0 LDA $D0 C2/293A: 9D E4 3C STA $3CE4,X ; physical block graphic C2/293D: A5 D8 LDA $D8 C2/293F: 9D 58 3C STA $3C58,X ; relic effects 4 C2/2942: E2 20 SEP #$20 C2/2944: 1E 21 3A ASL $3A21,X ; C2/2947: 0A ASL C2/2948: 0A ASL C2/2949: 0A ASL C2/294A: 7E 21 3A ROR $3A21,X ; C2/294D: 2B PLD C2/294E: 4C 50 26 JMP $2650 ; update death/poison immunity ; [ Update Hit Rate and Level ] _LoadMagic: C2/2951: AD A2 11 LDA $11A2 C2/2954: 4A LSR C2/2955: BD 41 3B LDA $3B41,X ; mag.pwr * 1.5 C2/2958: 90 03 BCC $295D ; branch if magic-based attack C2/295A: BD 2C 3B LDA $3B2C,X ; vigor * 2 C2/295D: 8D AE 11 STA $11AE ; set hit rate C2/2960: 9C 89 3A STZ $3A89 ; disable random weapon spellcast C2/2963: 4C 21 2C JMP $2C21 ; update attacker level ; [ Load Spell Data ] ; A = spell index _LoadMagic2: C2/2966: DA PHX C2/2967: 08 PHP C2/2968: EB XBA C2/2969: A9 0E LDA #$0E ; 14 bytes each C2/296B: 20 81 47 JSR $4781 ; multiply A * B C2/296E: C2 31 REP #$31 C2/2970: 69 C0 6A ADC #$6AC0 ; +$C46AC0 C2/2973: AA TAX C2/2974: A0 A0 11 LDY #$11A0 C2/2977: A9 0D 00 LDA #$000D ; 14 bytes -> $11A0 C2/297A: 54 7E C4 MVN $7E,$C4 C2/297D: E2 20 SEP #$20 C2/297F: 0E A9 11 ASL $11A9 ; multiply special effect by 2 to get pointer to jump tables C2/2982: 90 03 BCC $2987 C2/2984: 9C A9 11 STZ $11A9 ; if special effect was $FF, disable special effect C2/2987: 28 PLP C2/2988: FA PLX C2/2989: 60 RTS ; [ ] _SimpleMagic: C2/298A: AD 7C 3A LDA $3A7C _SimpleMagic2: C2/298D: 20 D3 26 JSR $26D3 ; init attack based on command C2/2990: A9 20 LDA #$20 C2/2992: 0C A4 11 TSB $11A4 C2/2995: 9C A9 11 STZ $11A9 C2/2998: 9C AF 11 STZ $11AF ; clear level C2/299B: 9C AE 11 STZ $11AE ; clear hit rate C2/299E: 60 RTS ; [ ] _MagicPunch: C2/299F: 08 PHP C2/29A0: BD 2C 3B LDA $3B2C,X ; vigor * 2 C2/29A3: 8D AE 11 STA $11AE C2/29A6: 20 21 2C JSR $2C21 ; update attacker level C2/29A9: BD 45 3C LDA $3C45,X C2/29AC: 89 10 BIT #$10 C2/29AE: F0 05 BEQ $29B5 C2/29B0: A9 20 LDA #$20 C2/29B2: 0C A4 11 TSB $11A4 C2/29B5: A5 B6 LDA $B6 C2/29B7: C9 EF CMP #$EF C2/29B9: D0 0C BNE $29C7 C2/29BB: BD E4 3E LDA $3EE4,X C2/29BE: 89 20 BIT #$20 C2/29C0: D0 05 BNE $29C7 C2/29C2: A9 06 LDA #$06 C2/29C4: 8D 12 34 STA $3412 C2/29C7: 28 PLP C2/29C8: DA PHX C2/29C9: 66 B6 ROR $B6 C2/29CB: 10 01 BPL $29CE C2/29CD: E8 INX C2/29CE: BD 68 3B LDA $3B68,X C2/29D1: 8D A6 11 STA $11A6 C2/29D4: A9 62 LDA #$62 C2/29D6: 04 B3 TSB $B3 C2/29D8: BD A4 3B LDA $3BA4,X C2/29DB: 29 60 AND #$60 C2/29DD: 49 20 EOR #$20 C2/29DF: 14 B3 TRB $B3 C2/29E1: BD 90 3B LDA $3B90,X C2/29E4: 8D A1 11 STA $11A1 C2/29E7: BD 7C 3B LDA $3B7C,X C2/29EA: 8D A8 11 STA $11A8 C2/29ED: BD 34 3D LDA $3D34,X C2/29F0: 8D 89 3A STA $3A89 C2/29F3: BD BC 3C LDA $3CBC,X ; special effect (weapons can only use $00-$0F) C2/29F6: 29 F0 AND #$F0 C2/29F8: 4A LSR C2/29F9: 4A LSR C2/29FA: 4A LSR C2/29FB: 8D A9 11 STA $11A9 C2/29FE: BD A8 3C LDA $3CA8,X C2/2A01: 1A INC C2/2A02: 85 B7 STA $B7 C2/2A04: FA PLX C2/2A05: BD 58 3C LDA $3C58,X C2/2A08: 4A LSR C2/2A09: 90 10 BCC $2A1B C2/2A0B: A9 20 LDA #$20 C2/2A0D: 0C A4 11 TSB $11A4 C2/2A10: A9 40 LDA #$40 C2/2A12: 04 BA TSB $BA C2/2A14: A9 02 LDA #$02 C2/2A16: 04 B2 TSB $B2 C2/2A18: 9C 89 3A STZ $3A89 C2/2A1B: AD A6 11 LDA $11A6 C2/2A1E: F0 16 BEQ $2A36 C2/2A20: E0 08 CPX #$08 C2/2A22: 90 12 BCC $2A36 C2/2A24: A9 20 LDA #$20 C2/2A26: 3C E4 3E BIT $3EE4,X C2/2A29: F0 0B BEQ $2A36 C2/2A2B: 0A ASL C2/2A2C: 3C 95 3C BIT $3C95,X C2/2A2F: D0 05 BNE $2A36 C2/2A31: A9 01 LDA #$01 C2/2A33: 8D A6 11 STA $11A6 C2/2A36: 60 RTS ; [ Calculate Item Effect ] ; C: 0 = normal, 1 = tools/throw _MagicItem: C2/2A37: DA PHX C2/2A38: 08 PHP C2/2A39: 48 PHA C2/2A3A: DA PHX C2/2A3B: A2 0F LDX #$0F C2/2A3D: 9E A0 11 STZ $11A0,X ; clear $11A0-$11AF C2/2A40: CA DEX C2/2A41: 10 FA BPL $2A3D C2/2A43: FA PLX C2/2A44: A9 21 LDA #$21 C2/2A46: 8D A2 11 STA $11A2 ; ignore defense, physical damage C2/2A49: A9 22 LDA #$22 C2/2A4B: 8D A3 11 STA $11A3 ; re-target if target invalid, ignore reflect C2/2A4E: A9 20 LDA #$20 C2/2A50: 8D A4 11 STA $11A4 ; can't dodge C2/2A53: 90 09 BCC $2A5E ; branch if not tools/throw C2/2A55: BD 2C 3B LDA $3B2C,X ; hit rate = vigor * 2 C2/2A58: 8D AE 11 STA $11AE C2/2A5B: 20 21 2C JSR $2C21 ; update attacker level C2/2A5E: A3 01 LDA $01,S C2/2A60: 20 63 2B JSR $2B63 ; get pointer to item data C2/2A63: C2 10 REP #$10 C2/2A65: AA TAX C2/2A66: BF 14 50 D8 LDA $D85014,X ; battle/defense power C2/2A6A: 8D A6 11 STA $11A6 C2/2A6D: BF 0F 50 D8 LDA $D8500F,X ; item element C2/2A71: 8D A1 11 STA $11A1 C2/2A74: B0 66 BCS $2ADC ; branch if tools/throw C2/2A76: A9 01 LDA #$01 C2/2A78: 1C A2 11 TRB $11A2 C2/2A7B: BF 1B 50 D8 LDA $D8501B,X ; item special effect C2/2A7F: 0A ASL C2/2A80: B0 05 BCS $2A87 C2/2A82: 69 90 ADC #$90 ; offset by $48 in special effect list C2/2A84: 8D A9 11 STA $11A9 C2/2A87: C2 20 REP #$20 C2/2A89: BF 15 50 D8 LDA $D85015,X ; status 1 and 2 C2/2A8D: 8D AA 11 STA $11AA C2/2A90: BF 17 50 D8 LDA $D85017,X ; status 3 and 4 C2/2A94: 8D AC 11 STA $11AC C2/2A97: E2 20 SEP #$20 C2/2A99: BF 13 50 D8 LDA $D85013,X ; item properties C2/2A9D: 85 FE STA $FE C2/2A9F: 06 FE ASL $FE C2/2AA1: 90 05 BCC $2AA8 ; damage is a fraction of total hp/mp C2/2AA3: A9 80 LDA #$80 C2/2AA5: 0C A4 11 TSB $11A4 C2/2AA8: 06 FE ASL $FE C2/2AAA: 06 FE ASL $FE C2/2AAC: 90 05 BCC $2AB3 ; item removes status C2/2AAE: A9 04 LDA #$04 C2/2AB0: 0C A4 11 TSB $11A4 C2/2AB3: 06 FE ASL $FE C2/2AB5: 90 07 BCC $2ABE ; restore mp C2/2AB7: A9 80 LDA #$80 C2/2AB9: 0C A3 11 TSB $11A3 C2/2ABC: 04 FE TSB $FE C2/2ABE: 06 FE ASL $FE C2/2AC0: 90 05 BCC $2AC7 ; restore hp C2/2AC2: A9 01 LDA #$01 C2/2AC4: 0C A4 11 TSB $11A4 C2/2AC7: 06 FE ASL $FE C2/2AC9: 06 FE ASL $FE C2/2ACB: 90 05 BCC $2AD2 ; invert damage to undead C2/2ACD: A9 08 LDA #$08 C2/2ACF: 0C A2 11 TSB $11A2 C2/2AD2: AD AA 11 LDA $11AA C2/2AD5: 10 05 BPL $2ADC ; branch if item doesn't affect wound status C2/2AD7: A9 0C LDA #$0C C2/2AD9: 0C A2 11 TSB $11A2 ; invert damage to undead, resurrection targetting C2/2ADC: A3 01 LDA $01,S C2/2ADE: C9 AE CMP #$AE C2/2AE0: D0 07 BNE $2AE9 ; branch if not inviz edge C2/2AE2: A9 10 LDA #$10 C2/2AE4: 0C AA 11 TSB $11AA C2/2AE7: 80 09 BRA $2AF2 C2/2AE9: C9 AF CMP #$AF C2/2AEB: D0 05 BNE $2AF2 ; branch if not shadow edge C2/2AED: A9 04 LDA #$04 C2/2AEF: 0C AB 11 TSB $11AB C2/2AF2: BF 00 50 D8 LDA $D85000,X C2/2AF6: 29 07 AND #$07 C2/2AF8: D0 1C BNE $2B16 ; return if not a tool C2/2AFA: A9 20 LDA #$20 C2/2AFC: 1C A2 11 TRB $11A2 C2/2AFF: 1C A4 11 TRB $11A4 C2/2B02: BF 15 50 D8 LDA $D85015,X C2/2B06: 8D A8 11 STA $11A8 C2/2B09: 7B TDC C2/2B0A: A3 01 LDA $01,S C2/2B0C: 38 SEC C2/2B0D: E9 A3 SBC #$A3 C2/2B0F: 29 07 AND #$07 C2/2B11: 0A ASL C2/2B12: AA TAX C2/2B13: FC 1A 2B JSR ($2B1A,X) ; tool effect C2/2B16: 68 PLA C2/2B17: 28 PLP C2/2B18: FA PLX C2/2B19: 60 RTS ; tool effect jump table machineTable_LoadMagic: C2/2B1A: .DW $2B2A, $2B2F, $2B2F, $2B30, $2B53, $2B4D, $2B57, $2B5D ; 0: noiseblaster C2/2B2A: A9 20 LDA #$20 C2/2B2C: 8D AB 11 STA $11AB ; set muddled status C2/2B2F: 60 RTS ; 3: chain saw C2/2B30: 20 5A 4B JSR $4B5A ; random number (0..255) C2/2B33: 29 03 AND #$03 C2/2B35: D0 16 BNE $2B4D ; 3/4 chance to branch C2/2B37: A9 08 LDA #$08 C2/2B39: 85 B6 STA $B6 ; spell $08 (alternate chainsaw) C2/2B3B: 9C A6 11 STZ $11A6 C2/2B3E: A9 80 LDA #$80 C2/2B40: 0C AA 11 TSB $11AA C2/2B43: A9 10 LDA #$10 C2/2B45: 8D A4 11 STA $11A4 C2/2B48: A9 02 LDA #$02 C2/2B4A: 0C A2 11 TSB $11A2 ; fall through ; 5: drill C2/2B4D: A9 20 LDA #$20 C2/2B4F: 0C A2 11 TSB $11A2 ; ignore defense C2/2B52: 60 RTS ; 4: debilitator C2/2B53: A9 AC LDA #$AC ; special effect $56 (debilitator) C2/2B55: 80 02 BRA $2B59 ; 6: air anchor C2/2B57: A9 AE LDA #$AE ; special effect $57 (air anchor) C2/2B59: 8D A9 11 STA $11A9 C2/2B5C: 60 RTS ; 7: autocrossbow C2/2B5D: A9 40 LDA #$40 C2/2B5F: 0C A2 11 TSB $11A2 ; don't split damage C2/2B62: 60 RTS ; [ Get Pointer to Item Data ] _ItemIndex: C2/2B63: EB XBA C2/2B64: A9 1E LDA #$1E C2/2B66: 4C 81 47 JMP $4781 ; multiply A * B ; [ magical damage ] _InitDamage: C2/2B69: AD AF 11 LDA $11AF ; level C2/2B6C: 85 E8 STA $E8 C2/2B6E: C9 01 CMP #$01 C2/2B70: 7B TDC C2/2B71: AD A6 11 LDA $11A6 C2/2B74: C2 20 REP #$20 C2/2B76: 90 02 BCC $2B7A C2/2B78: 0A ASL C2/2B79: 0A ASL C2/2B7A: 8D B0 11 STA $11B0 C2/2B7D: E2 20 SEP #$20 C2/2B7F: AD AE 11 LDA $11AE ; hit rate C2/2B82: EB XBA C2/2B83: AD A6 11 LDA $11A6 C2/2B86: 20 81 47 JSR $4781 ; multiply A * B C2/2B89: 20 B7 47 JSR $47B7 ; +A *= $E8 / 256 C2/2B8C: A9 04 LDA #$04 C2/2B8E: C2 20 REP #$20 C2/2B90: 20 D1 0D JSR $0DD1 C2/2B93: 18 CLC C2/2B94: 6D B0 11 ADC $11B0 C2/2B97: 8D B0 11 STA $11B0 C2/2B9A: E2 20 SEP #$20 C2/2B9C: 60 RTS ; [ Calculate Base Damage ] _InitDamage2: C2/2B9D: AD A2 11 LDA $11A2 C2/2BA0: 4A LSR C2/2BA1: B0 03 BCS $2BA6 C2/2BA3: 4C 69 2B JMP $2B69 ; physical damage C2/2BA6: 08 PHP C2/2BA7: AD AF 11 LDA $11AF ; level C2/2BAA: 48 PHA C2/2BAB: 85 E8 STA $E8 C2/2BAD: 7B TDC C2/2BAE: AD A6 11 LDA $11A6 C2/2BB1: C2 20 REP #$20 C2/2BB3: E0 08 CPX #$08 C2/2BB5: 90 02 BCC $2BB9 C2/2BB7: 0A ASL C2/2BB8: 0A ASL C2/2BB9: 48 PHA C2/2BBA: A5 B2 LDA $B2 C2/2BBC: 89 00 40 BIT #$4000 C2/2BBF: D0 0C BNE $2BCD C2/2BC1: A3 01 LDA $01,S C2/2BC3: 4A LSR C2/2BC4: 18 CLC C2/2BC5: 63 01 ADC $01,S C2/2BC7: 4A LSR C2/2BC8: 18 CLC C2/2BC9: 63 01 ADC $01,S C2/2BCB: 83 01 STA $01,S C2/2BCD: 68 PLA C2/2BCE: E2 20 SEP #$20 C2/2BD0: 6D AE 11 ADC $11AE ; hit rate C2/2BD3: EB XBA C2/2BD4: 69 00 ADC #$00 C2/2BD6: EB XBA C2/2BD7: 20 B7 47 JSR $47B7 ; +A *= $E8 / 256 C2/2BDA: A5 E8 LDA $E8 C2/2BDC: 85 EA STA $EA C2/2BDE: 68 PLA C2/2BDF: 85 E8 STA $E8 C2/2BE1: C2 20 REP #$20 C2/2BE3: A5 E9 LDA $E9 C2/2BE5: EB XBA C2/2BE6: 20 B7 47 JSR $47B7 ; +A *= $E8 / 256 C2/2BE9: 8D B0 11 STA $11B0 C2/2BEC: E0 08 CPX #$08 C2/2BEE: B0 2F BCS $2C1F C2/2BF0: AD A6 11 LDA $11A6 C2/2BF3: 29 FF 00 AND #$00FF C2/2BF6: 0A ASL C2/2BF7: 6D B0 11 ADC $11B0 C2/2BFA: 4A LSR C2/2BFB: 18 CLC C2/2BFC: 6D B0 11 ADC $11B0 C2/2BFF: 8D B0 11 STA $11B0 C2/2C02: BD 58 3C LDA $3C58,X C2/2C05: 4A LSR C2/2C06: 90 03 BCC $2C0B C2/2C08: 4E B0 11 LSR $11B0 C2/2C0B: 89 08 00 BIT #$0008 C2/2C0E: F0 0F BEQ $2C1F C2/2C10: AD B0 11 LDA $11B0 C2/2C13: 4A LSR C2/2C14: 4A LSR C2/2C15: 49 FF FF EOR #$FFFF C2/2C18: 38 SEC C2/2C19: 6D B0 11 ADC $11B0 C2/2C1C: 8D B0 11 STA $11B0 C2/2C1F: 28 PLP C2/2C20: 60 RTS ; [ Update Attacker Level ] setUpLevel: C2/2C21: DA PHX C2/2C22: AD 17 34 LDA $3417 ; character using sketch C2/2C25: 30 01 BMI $2C28 ; branch if invalid C2/2C27: AA TAX C2/2C28: BD 18 3B LDA $3B18,X ; level C2/2C2B: 8D AF 11 STA $11AF ; set attacker level C2/2C2E: FA PLX C2/2C2F: 60 RTS ; [ Init Monster Data ] ; +A = monster number _LoadMonster: C2/2C30: DA PHX C2/2C31: 08 PHP C2/2C32: C2 30 REP #$30 C2/2C34: 99 F9 1F STA $1FF9,Y ; set monster index (+$2001) C2/2C37: 99 A8 33 STA $33A8,Y C2/2C3A: 20 71 2D JSR $2D71 ; init AI script C2/2C3D: 0A ASL C2/2C3E: 0A ASL C2/2C3F: 48 PHA C2/2C40: AA TAX C2/2C41: BF 00 30 CF LDA $CF3000,X ; items stolen C2/2C45: 99 08 33 STA $3308,Y C2/2C48: 68 PLA C2/2C49: 0A ASL C2/2C4A: 48 PHA C2/2C4B: DA PHX C2/2C4C: 5A PHY C2/2C4D: AA TAX C2/2C4E: B9 F9 1F LDA $1FF9,Y ; monster index for name display C2/2C51: 99 80 33 STA $3380,Y C2/2C54: 7B TDC C2/2C55: A8 TAY C2/2C56: BF 50 C0 CF LDA $CFC050,X ; monster name C2/2C5A: 99 F8 00 STA $00F8,Y C2/2C5D: E8 INX C2/2C5E: E8 INX C2/2C5F: C8 INY C2/2C60: C8 INY C2/2C61: C0 08 00 CPY #$0008 C2/2C64: 90 F0 BCC $2C56 C2/2C66: A0 12 00 LDY #$0012 C2/2C69: B9 F9 1F LDA $1FF9,Y C2/2C6C: 30 28 BMI $2C96 C2/2C6E: 5A PHY C2/2C6F: 0A ASL C2/2C70: 0A ASL C2/2C71: 0A ASL C2/2C72: AA TAX C2/2C73: 7B TDC C2/2C74: A8 TAY C2/2C75: B9 F8 00 LDA $00F8,Y C2/2C78: DF 50 C0 CF CMP $CFC050,X ; monster name C2/2C7C: 18 CLC C2/2C7D: D0 09 BNE $2C88 C2/2C7F: E8 INX C2/2C80: E8 INX C2/2C81: C8 INY C2/2C82: C8 INY C2/2C83: C0 08 00 CPY #$0008 C2/2C86: 90 ED BCC $2C75 C2/2C88: 7A PLY C2/2C89: 90 0B BCC $2C96 C2/2C8B: A3 01 LDA $01,S C2/2C8D: AA TAX C2/2C8E: B9 F9 1F LDA $1FF9,Y C2/2C91: 9D 80 33 STA $3380,X C2/2C94: 80 07 BRA $2C9D C2/2C96: 88 DEY C2/2C97: 88 DEY C2/2C98: C0 08 00 CPY #$0008 C2/2C9B: B0 CC BCS $2C69 C2/2C9D: 7A PLY C2/2C9E: FA PLX C2/2C9F: 68 PLA C2/2CA0: 0A ASL C2/2CA1: 0A ASL C2/2CA2: AA TAX C2/2CA3: BF 05 00 CF LDA $CF0005,X ; defense/magic defense C2/2CA7: 99 B8 3B STA $3BB8,Y C2/2CAA: BF 0C 00 CF LDA $CF000C,X ; experience points C2/2CAE: 99 84 3D STA $3D84,Y C2/2CB1: BF 0E 00 CF LDA $CF000E,X ; gold C2/2CB5: 99 98 3D STA $3D98,Y C2/2CB8: AD 46 3A LDA $3A46 C2/2CBB: 30 27 BMI $2CE4 ; branch if monsters get returned to full hp/mp ($3A47.7) C2/2CBD: BF 0A 00 CF LDA $CF000A,X ; mp C2/2CC1: 99 08 3C STA $3C08,Y C2/2CC4: 99 30 3C STA $3C30,Y C2/2CC7: BF 08 00 CF LDA $CF0008,X ; hp C2/2CCB: 99 F4 3B STA $3BF4,Y C2/2CCE: 99 1C 3C STA $3C1C,Y C2/2CD1: AD D4 3E LDA $3ED4 ; battle index C2/2CD4: C9 CF 01 CMP #$01CF C2/2CD7: D0 0B BNE $2CE4 ; branch if not $01CF (doom gaze) C2/2CD9: 8C FA 33 STY $33FA ; set target that is doom gaze C2/2CDC: AD BE 3E LDA $3EBE ; get doom gaze's hp C2/2CDF: F0 03 BEQ $2CE4 ; branch if zero C2/2CE1: 99 F4 3B STA $3BF4,Y ; set hp C2/2CE4: E2 21 SEP #$21 C2/2CE6: B9 1D 3C LDA $3C1D,Y ; high byte of max hp C2/2CE9: 4A LSR C2/2CEA: C9 19 CMP #$19 ; stamina = max hp / 512 + 16 (max 39) C2/2CEC: 90 02 BCC $2CF0 C2/2CEE: A9 17 LDA #$17 C2/2CF0: 69 10 ADC #$10 C2/2CF2: 99 40 3B STA $3B40,Y C2/2CF5: BF 01 00 CF LDA $CF0001,X ; attack power C2/2CF9: 99 68 3B STA $3B68,Y C2/2CFC: BF 1A 00 CF LDA $CF001A,X ; attack type (item number for graphics) C2/2D00: 99 A8 3C STA $3CA8,Y C2/2D03: BF 03 00 CF LDA $CF0003,X ; evade % C2/2D07: 20 61 28 JSR $2861 ; invert evade C2/2D0A: 99 54 3B STA $3B54,Y C2/2D0D: BF 04 00 CF LDA $CF0004,X ; mblock % C2/2D11: 20 61 28 JSR $2861 ; invert mblock C2/2D14: 99 55 3B STA $3B55,Y C2/2D17: BF 02 00 CF LDA $CF0002,X ; hit % C2/2D1B: 99 7C 3B STA $3B7C,Y C2/2D1E: BF 10 00 CF LDA $CF0010,X ; level C2/2D22: 99 18 3B STA $3B18,Y C2/2D25: BF 00 00 CF LDA $CF0000,X ; speed C2/2D29: 99 19 3B STA $3B19,Y C2/2D2C: BF 07 00 CF LDA $CF0007,X ; mag.pwr C2/2D30: 20 D6 47 JSR $47D6 ; A *= 1.5 C2/2D33: 99 41 3B STA $3B41,Y C2/2D36: BF 1E 00 CF LDA $CF001E,X ; special status 1 (piranha/enemy runic) C2/2D3A: 29 82 AND #$82 C2/2D3C: 19 4C 3E ORA $3E4C,Y ; $3E4C.1 and $3E4C.7 C2/2D3F: 99 4C 3E STA $3E4C,Y C2/2D42: BF 13 00 CF LDA $CF0013,X ; special status 2 C2/2D46: 99 80 3C STA $3C80,Y C2/2D49: 20 C1 2D JSR $2DC1 ; init monster/rage data C2/2D4C: BE A8 33 LDX $33A8,Y C2/2D4F: BF C0 37 CF LDA $CF37C0,X ; special attack C2/2D53: 99 81 3C STA $3C81,Y C2/2D56: E2 10 SEP #$10 C2/2D58: 20 99 2D JSR $2D99 ; init monster first strike C2/2D5B: 7B TDC C2/2D5C: 6A ROR C2/2D5D: 04 B1 TSB $B1 C2/2D5F: 20 5A 4B JSR $4B5A ; random number (0..255) C2/2D62: 29 07 AND #$07 C2/2D64: 18 CLC C2/2D65: 69 38 ADC #$38 C2/2D67: 99 2C 3B STA $3B2C,Y C2/2D6A: BB TYX C2/2D6B: 20 50 26 JSR $2650 ; update death/poison immunity C2/2D6E: 28 PLP C2/2D6F: FA PLX C2/2D70: 60 RTS ; [ Init AI Script ] _SetEasyLanguage: C2/2D71: DA PHX C2/2D72: 48 PHA C2/2D73: 08 PHP C2/2D74: C2 20 REP #$20 C2/2D76: 0A ASL C2/2D77: AA TAX C2/2D78: BF 00 84 CF LDA $CF8400,X ; pointer to AI script C2/2D7C: 99 54 32 STA $3254,Y C2/2D7F: AA TAX C2/2D80: E2 20 SEP #$20 C2/2D82: 20 43 1A JSR $1A43 C2/2D85: 1A INC C2/2D86: D0 FA BNE $2D82 C2/2D88: BF 00 87 CF LDA $CF8700,X ; AI script C2/2D8C: 1A INC C2/2D8D: F0 06 BEQ $2D95 C2/2D8F: C2 20 REP #$20 C2/2D91: 8A TXA C2/2D92: 99 68 32 STA $3268,Y C2/2D95: 28 PLP C2/2D96: 68 PLA C2/2D97: FA PLX C2/2D98: 60 RTS ; [ Init Monster First Strike (pointer in Y) ] _AdvancedAction: C2/2D99: DA PHX C2/2D9A: BB TYX C2/2D9B: 20 A0 2D JSR $2DA0 ; init monster first strike C2/2D9E: FA PLX C2/2D9F: 60 RTS ; [ Init Monster First Strike ] _AdvancedAction2: C2/2DA0: 18 CLC C2/2DA1: BD 80 3C LDA $3C80,X ; return if monster doesn't have first strike C2/2DA4: 89 02 BIT #$02 C2/2DA6: F0 18 BEQ $2DC0 C2/2DA8: BD A0 3A LDA $3AA0,X C2/2DAB: 89 01 BIT #$01 C2/2DAD: F0 11 BEQ $2DC0 ; branch if $3AA0.0 is clear (target is not present) C2/2DAF: 09 08 ORA #$08 C2/2DB1: 9D A0 3A STA $3AA0,X ; $3AA0.3 stop atb gauge C2/2DB4: 9E 19 32 STZ $3219,X ; clear atb gauge C2/2DB7: A9 FF LDA #$FF C2/2DB9: 9D B5 3A STA $3AB5,X ; set advance wait counter to max C2/2DBC: 20 66 4E JSR $4E66 ; add action to advance wait queue C2/2DBF: 38 SEC C2/2DC0: 60 RTS ; [ Init Monster/Rage Data ] _LoadMonster3: C2/2DC1: 08 PHP C2/2DC2: BF 1F 00 CF LDA $CF001F,X ; special attack data C2/2DC6: 99 2D 32 STA $322D,Y C2/2DC9: BF 19 00 CF LDA $CF0019,X ; weak elements C2/2DCD: 19 E0 3B ORA $3BE0,Y C2/2DD0: 99 E0 3B STA $3BE0,Y C2/2DD3: BF 16 00 CF LDA $CF0016,X ; blocked status 3 C2/2DD7: 49 FF EOR #$FF C2/2DD9: 39 30 33 AND $3330,Y C2/2DDC: 99 30 33 STA $3330,Y C2/2DDF: A9 FF LDA #$FF C2/2DE1: 39 31 33 AND $3331,Y ; blocked status 4 C2/2DE4: 99 31 33 STA $3331,Y C2/2DE7: C2 20 REP #$20 C2/2DE9: BF 1B 00 CF LDA $CF001B,X ; status 1 & 2 C2/2DED: 99 D4 3D STA $3DD4,Y C2/2DF0: BF 1D 00 CF LDA $CF001D,X ; status 3 & 4 C2/2DF4: 48 PHA C2/2DF5: 29 01 00 AND #$0001 ; isolate float status C2/2DF8: 4A LSR C2/2DF9: 6A ROR C2/2DFA: 03 01 ORA $01,S C2/2DFC: 29 FE 84 AND #$84FE ; ignore "character-only" statuses C2/2DFF: 99 E8 3D STA $3DE8,Y C2/2E02: 68 PLA C2/2E03: EB XBA C2/2E04: 4A LSR C2/2E05: 90 09 BCC $2E10 C2/2E07: B9 58 3C LDA $3C58,Y ; true knight effect (rage only ???) C2/2E0A: 09 40 00 ORA #$0040 C2/2E0D: 99 58 3C STA $3C58,Y C2/2E10: BF 1C 00 CF LDA $CF001C,X ; status 2 & 3 C2/2E14: 19 6C 3C ORA $3C6C,Y C2/2E17: 99 6C 3C STA $3C6C,Y C2/2E1A: BF 14 00 CF LDA $CF0014,X ; blocked status 1 & 2 C2/2E1E: 49 FF FF EOR #$FFFF C2/2E21: 39 1C 33 AND $331C,Y C2/2E24: 99 1C 33 STA $331C,Y C2/2E27: BF 17 00 CF LDA $CF0017,X ; absorbed elements C2/2E2B: 19 CC 3B ORA $3BCC,Y C2/2E2E: 99 CC 3B STA $3BCC,Y C2/2E31: BF 11 00 CF LDA $CF0011,X ; metamorph info C2/2E35: 99 94 3C STA $3C94,Y C2/2E38: 28 PLP C2/2E39: 60 RTS ; [ Init Battle Type ] _SetEncountMode: C2/2E3A: AD 6D 3A LDA $3A6D ; relic effects 2 (party) C2/2E3D: 4A LSR C2/2E3E: 4A LSR C2/2E3F: AD 48 2F LDA $2F48 ; possible battle types C2/2E42: 90 0C BCC $2E50 ; branch if no back guard C2/2E44: 89 B0 BIT #$B0 C2/2E46: F0 02 BEQ $2E4A C2/2E48: 29 B0 AND #$B0 ; disable pincer attacks (unless that is the only available option) C2/2E4A: 89 D0 BIT #$D0 C2/2E4C: F0 02 BEQ $2E50 C2/2E4E: 29 D0 AND #$D0 ; disable back attacks (unless that is the only available option) C2/2E50: 48 PHA C2/2E51: AD 76 3A LDA $3A76 ; number of allies that are alive C2/2E54: C9 03 CMP #$03 C2/2E56: 68 PLA C2/2E57: B0 06 BCS $2E5F ; branch if 3 or 4 C2/2E59: 89 70 BIT #$70 C2/2E5B: F0 02 BEQ $2E5F C2/2E5D: 29 70 AND #$70 ; disable side attacks (unless that is the only available option) C2/2E5F: A2 10 LDX #$10 C2/2E61: 20 47 52 JSR $5247 ; choose battle type C2/2E64: 8E 1F 20 STX $201F ; set type of battle C2/2E67: 60 RTS ; [ Battle Type Special Effects ] _LoadScene: C2/2E68: AE 1F 20 LDX $201F ; battle type C2/2E6B: E0 00 CPX #$00 C2/2E6D: F0 05 BEQ $2E74 ; branch if normal C2/2E6F: A9 01 LDA #$01 C2/2E71: 1C E4 11 TRB $11E4 ; gau can't be obtained C2/2E74: 8A TXA C2/2E75: 0A ASL C2/2E76: AA TAX C2/2E77: FC 93 2E JSR ($2E93,X) ; do special function for battle type C2/2E7A: A2 06 LDX #$06 C2/2E7C: DA PHX C2/2E7D: BD A1 3A LDA $3AA1,X ; $3AA1.5 character row C2/2E80: 29 20 AND #$20 C2/2E82: 48 PHA C2/2E83: 8A TXA C2/2E84: 0A ASL C2/2E85: 0A ASL C2/2E86: 0A ASL C2/2E87: 0A ASL C2/2E88: AA TAX C2/2E89: 68 PLA C2/2E8A: 9D C5 2E STA $2EC5,X ; set row (for graphics) C2/2E8D: FA PLX C2/2E8E: CA DEX C2/2E8F: CA DEX C2/2E90: 10 EA BPL $2E7C C2/2E92: 60 RTS ; battle type special function jump table C2/2E93: .DW $2E9B, $2ECE, $2EC1, $2E9B ; normal/side attack C2/2E9B: A5 B1 LDA $B1 C2/2E9D: 30 21 BMI $2EC0 ; return if battle menus are disabled C2/2E9F: AD 4B 2F LDA $2F4B C2/2EA2: 89 04 BIT #$04 C2/2EA4: D0 1A BNE $2EC0 ; return if preemptive attacks are disabled C2/2EA6: 8A TXA C2/2EA7: 0A ASL C2/2EA8: 0A ASL C2/2EA9: 09 20 ORA #$20 ; 1/8 chance to get preemptive strike (7/32 chance for side attack) C2/2EAB: 85 EE STA $EE C2/2EAD: AD 6D 3A LDA $3A6D ; relic effects 2 (party) C2/2EB0: 4A LSR C2/2EB1: 90 02 BCC $2EB5 ; branch if no gale hairpin C2/2EB3: 06 EE ASL $EE ; double chance for preemptive attack C2/2EB5: 20 5A 4B JSR $4B5A ; random number (0..255) C2/2EB8: C5 EE CMP $EE C2/2EBA: B0 04 BCS $2EC0 C2/2EBC: A9 40 LDA #$40 ; set preemptive attack C2/2EBE: 04 B0 TSB $B0 C2/2EC0: 60 RTS ; pincer attack C2/2EC1: A2 06 LDX #$06 C2/2EC3: A9 DF LDA #$DF ; clear $3AA1.5 C2/2EC5: 20 43 0A JSR $0A43 ; put all characters in the front row C2/2EC8: CA DEX C2/2EC9: CA DEX C2/2ECA: 10 F7 BPL $2EC3 C2/2ECC: 80 0E BRA $2EDC ; back attack C2/2ECE: A2 06 LDX #$06 C2/2ED0: BD A1 3A LDA $3AA1,X ; $3AA1.5 toggle row for all characters C2/2ED3: 49 20 EOR #$20 C2/2ED5: 9D A1 3A STA $3AA1,X C2/2ED8: CA DEX C2/2ED9: CA DEX C2/2EDA: 10 F4 BPL $2ED0 C2/2EDC: A9 20 LDA #$20 C2/2EDE: 04 B1 TSB $B1 ; set back attack C2/2EE0: 60 RTS ; [ Init Monsters ] _LoadScene2: C2/2EE1: 08 PHP C2/2EE2: C2 10 REP #$10 C2/2EE4: AD 45 3F LDA $3F45 C2/2EE7: A2 0A 00 LDX #$000A C2/2EEA: 0A ASL C2/2EEB: 0A ASL C2/2EEC: 9E A8 3A STZ $3AA8,X ; set monster present flag C2/2EEF: 0A ASL C2/2EF0: 3E A8 3A ROL $3AA8,X C2/2EF3: CA DEX ; next monster C2/2EF4: CA DEX C2/2EF5: 10 F5 BPL $2EEC C2/2EF7: AD 52 3F LDA $3F52 ; MSB of monster index C2/2EFA: 0A ASL C2/2EFB: 0A ASL C2/2EFC: 85 EE STA $EE C2/2EFE: A2 05 00 LDX #$0005 C2/2F01: A0 12 00 LDY #$0012 C2/2F04: 7B TDC C2/2F05: 0E 73 3A ASL $3A73 C2/2F08: 06 EE ASL $EE C2/2F0A: 2A ROL C2/2F0B: EB XBA C2/2F0C: AD 97 3A LDA $3A97 ; colosseum mode C2/2F0F: 0A ASL C2/2F10: BD 46 3F LDA $3F46,X ; monster index C2/2F13: 90 05 BCC $2F1A ; branch if not in colosseum C2/2F15: AD 06 02 LDA $0206 ; monster number (colosseum) C2/2F18: 80 04 BRA $2F1E C2/2F1A: C9 FF CMP #$FF C2/2F1C: D0 04 BNE $2F22 ; branch if monster slot is not empty C2/2F1E: EB XBA C2/2F1F: D0 07 BNE $2F28 ; branch if monster slot is empty ($01FF) C2/2F21: EB XBA C2/2F22: 20 30 2C JSR $2C30 ; init monster data C2/2F25: EE 73 3A INC $3A73 ; increment number of monsters C2/2F28: 88 DEY ; next monster C2/2F29: 88 DEY C2/2F2A: CA DEX C2/2F2B: 10 D7 BPL $2F04 C2/2F2D: 28 PLP C2/2F2E: 60 RTS ; [ Init Character Data ] _MakePartyTable: C2/2F2F: 08 PHP C2/2F30: C2 10 REP #$10 C2/2F32: 64 FC STZ $FC C2/2F34: 64 B8 STZ $B8 C2/2F36: AD E0 3E LDA $3EE0 C2/2F39: D0 3A BNE $2F75 C2/2F3B: A2 00 00 LDX #$0000 C2/2F3E: A9 FF LDA #$FF C2/2F40: 9D D9 3E STA $3ED9,X C2/2F43: DD D8 3E CMP $3ED8,X C2/2F46: D0 24 BNE $2F6C C2/2F48: A0 00 00 LDY #$0000 C2/2F4B: B9 05 02 LDA $0205,Y C2/2F4E: C9 FF CMP #$FF C2/2F50: F0 14 BEQ $2F66 C2/2F52: EB XBA C2/2F53: A9 FF LDA #$FF C2/2F55: 99 05 02 STA $0205,Y C2/2F58: A9 25 LDA #$25 C2/2F5A: 20 81 47 JSR $4781 ; multiply A * B C2/2F5D: A8 TAY C2/2F5E: B9 00 16 LDA $1600,Y C2/2F61: 9D D8 3E STA $3ED8,X C2/2F64: 80 06 BRA $2F6C C2/2F66: C8 INY C2/2F67: C0 0C 00 CPY #$000C C2/2F6A: 90 DF BCC $2F4B C2/2F6C: E8 INX C2/2F6D: E8 INX C2/2F6E: E0 08 00 CPX #$0008 C2/2F71: 90 CB BCC $2F3E C2/2F73: 80 64 BRA $2FD9 C2/2F75: AE D4 3E LDX $3ED4 C2/2F78: E0 3E 02 CPX #$023E C2/2F7B: 90 0F BCC $2F8C ; branch if not a colosseum battle C2/2F7D: AD 08 02 LDA $0208 C2/2F80: 8D D8 3E STA $3ED8 ; put colosseum character in slot 1 C2/2F83: A9 01 LDA #$01 C2/2F85: 04 B8 TSB $B8 ; make character slot 1 a valid target C2/2F87: CE 97 3A DEC $3A97 ; enable colosseum mode C2/2F8A: 80 4D BRA $2FD9 C2/2F8C: A0 0F 00 LDY #$000F C2/2F8F: B9 50 18 LDA $1850,Y C2/2F92: 85 FE STA $FE C2/2F94: 29 07 AND #$07 C2/2F96: CD 6D 1A CMP $1A6D C2/2F99: D0 12 BNE $2FAD C2/2F9B: 5A PHY C2/2F9C: E6 FC INC $FC C2/2F9E: 7B TDC C2/2F9F: A5 FE LDA $FE C2/2FA1: 29 18 AND #$18 C2/2FA3: 4A LSR C2/2FA4: 4A LSR C2/2FA5: AA TAX C2/2FA6: 20 DC 30 JSR $30DC ; get actor index C2/2FA9: 9D D8 3E STA $3ED8,X C2/2FAC: 7A PLY C2/2FAD: 88 DEY C2/2FAE: 10 DF BPL $2F8F C2/2FB0: AD DF 1E LDA $1EDF C2/2FB3: 89 08 BIT #$08 C2/2FB5: D0 0C BNE $2FC3 C2/2FB7: AD 4B 3F LDA $3F4B C2/2FBA: 1A INC C2/2FBB: D0 06 BNE $2FC3 C2/2FBD: A5 FC LDA $FC C2/2FBF: C9 04 CMP #$04 C2/2FC1: 90 05 BCC $2FC8 ; branch if less than 4 characters in the party C2/2FC3: A9 01 LDA #$01 C2/2FC5: 1C E4 11 TRB $11E4 C2/2FC8: A9 01 LDA #$01 C2/2FCA: 2C E4 11 BIT $11E4 C2/2FCD: F0 0A BEQ $2FD9 ; branch if gau can't appear after battle C2/2FCF: A9 0A LDA #$0A ; character AI $0A (gau returning from the veldt) C2/2FD1: 8D 4A 2F STA $2F4A C2/2FD4: A9 80 LDA #$80 C2/2FD6: 0C 49 2F TSB $2F49 ; enable character AI C2/2FD9: AD 49 2F LDA $2F49 C2/2FDC: 10 6C BPL $304A C2/2FDE: AD 4A 2F LDA $2F4A ; character AI index C2/2FE1: EB XBA C2/2FE2: A9 18 LDA #$18 C2/2FE4: 20 81 47 JSR $4781 ; multiply A * B C2/2FE7: AA TAX C2/2FE8: BF 00 FD D0 LDA $D0FD00,X ; character AI data C2/2FEC: 10 0C BPL $2FFA ; branch if party is not hidden C2/2FEE: A0 06 00 LDY #$0006 C2/2FF1: A9 FF LDA #$FF C2/2FF3: 99 D8 3E STA $3ED8,Y ; clear all for actors C2/2FF6: 88 DEY C2/2FF7: 88 DEY C2/2FF8: 10 F7 BPL $2FF1 C2/2FFA: A0 04 00 LDY #$0004 C2/2FFD: 5A PHY C2/2FFE: BF 04 FD D0 LDA $D0FD04,X ; actor index C2/3002: C9 FF CMP #$FF C2/3004: F0 3B BEQ $3041 ; branch if no character AI C2/3006: 29 3F AND #$3F C2/3008: A0 06 00 LDY #$0006 C2/300B: D9 D8 3E CMP $3ED8,Y C2/300E: F0 13 BEQ $3023 C2/3010: 88 DEY C2/3011: 88 DEY C2/3012: 10 F7 BPL $300B C2/3014: C8 INY C2/3015: C8 INY C2/3016: B9 D8 3E LDA $3ED8,Y C2/3019: 1A INC C2/301A: F0 07 BEQ $3023 C2/301C: C0 06 00 CPY #$0006 C2/301F: 90 F3 BCC $3014 C2/3021: 80 1E BRA $3041 C2/3023: B9 18 30 LDA $3018,Y C2/3026: 04 B8 TSB $B8 C2/3028: C2 20 REP #$20 C2/302A: BF 04 FD D0 LDA $D0FD04,X ; actor/character index (also loads $D0FD05,X) C2/302E: 99 D8 3E STA $3ED8,Y C2/3031: E2 20 SEP #$20 C2/3033: A9 01 LDA #$01 ; msb of AI script index always set for character AI C2/3035: EB XBA C2/3036: BF 06 FD D0 LDA $D0FD06,X ; character AI script index C2/303A: C9 FF CMP #$FF C2/303C: F0 03 BEQ $3041 ; branch if no AI script C2/303E: 20 71 2D JSR $2D71 ; init AI script C2/3041: 7A PLY C2/3042: E8 INX ; next character C2/3043: E8 INX C2/3044: E8 INX C2/3045: E8 INX C2/3046: E8 INX C2/3047: 88 DEY C2/3048: D0 B3 BNE $2FFD C2/304A: A2 06 00 LDX #$0006 C2/304D: BD D8 3E LDA $3ED8,X ; loop through each character slot C2/3050: C9 FF CMP #$FF C2/3052: F0 7F BEQ $30D3 ; skip if no actor C2/3054: 0A ASL C2/3055: B0 03 BCS $305A ; skip if not an actor ??? C2/3057: FE A0 3A INC $3AA0,X ; $3AA0.0 set "target present" flag C2/305A: 0A ASL C2/305B: 90 08 BCC $3065 C2/305D: 48 PHA C2/305E: BD 18 30 LDA $3018,X C2/3061: 0C 40 3A TSB $3A40 ; toggle "character acting as enemy" flag C2/3064: 68 PLA C2/3065: 4A LSR C2/3066: 4A LSR C2/3067: 9D D8 3E STA $3ED8,X ; set actor number C2/306A: A0 0F 00 LDY #$000F C2/306D: 5A PHY C2/306E: 48 PHA C2/306F: B9 50 18 LDA $1850,Y ; get battle row C2/3072: 29 20 AND #$20 C2/3074: 85 FE STA $FE C2/3076: 20 DC 30 JSR $30DC ; get actor index C2/3079: C3 01 CMP $01,S C2/307B: D0 51 BNE $30CE C2/307D: DA PHX C2/307E: 48 PHA C2/307F: A5 FE LDA $FE C2/3081: 9D A1 3A STA $3AA1,X ; $3AA1.5 character row (other flags are cleared) C2/3084: BD D9 3E LDA $3ED9,X ; C2/3087: 48 PHA C2/3088: A3 06 LDA $06,S C2/308A: 9D D9 3E STA $3ED9,X C2/308D: 7B TDC C2/308E: 8A TXA C2/308F: 0A ASL C2/3090: 0A ASL C2/3091: 0A ASL C2/3092: 0A ASL C2/3093: AA TAX C2/3094: 68 PLA C2/3095: C9 FF CMP #$FF C2/3097: D0 03 BNE $309C C2/3099: B9 01 16 LDA $1601,Y ; set character graphic index C2/309C: 9D AE 2E STA $2EAE,X C2/309F: 7B TDC C2/30A0: 68 PLA C2/30A1: 9D C6 2E STA $2EC6,X ; set actor index C2/30A4: C9 0E CMP #$0E C2/30A6: C2 20 REP #$20 C2/30A8: 48 PHA C2/30A9: B9 02 16 LDA $1602,Y ; copy character name C2/30AC: 9D AF 2E STA $2EAF,X C2/30AF: B9 04 16 LDA $1604,Y C2/30B2: 9D B1 2E STA $2EB1,X C2/30B5: B9 06 16 LDA $1606,Y C2/30B8: 9D B3 2E STA $2EB3,X C2/30BB: FA PLX C2/30BC: B0 06 BCS $30C4 ; branch if actor index >= $0E C2/30BE: 7B TDC C2/30BF: 38 SEC C2/30C0: 2A ROL C2/30C1: CA DEX C2/30C2: 10 FC BPL $30C0 C2/30C4: FA PLX C2/30C5: 9D 20 3A STA $3A20,X ; set actor mask C2/30C8: 98 TYA C2/30C9: 9D 10 30 STA $3010,X ; pointer to character data C2/30CC: E2 20 SEP #$20 C2/30CE: 68 PLA ; next character C2/30CF: 7A PLY C2/30D0: 88 DEY C2/30D1: 10 9A BPL $306D C2/30D3: CA DEX C2/30D4: CA DEX C2/30D5: 30 03 BMI $30DA C2/30D7: 4C 4D 30 JMP $304D C2/30DA: 28 PLP C2/30DB: 60 RTS ; [ Get Actor Index ] ; Y = character number GetCharID: C2/30DC: 98 TYA C2/30DD: EB XBA C2/30DE: A9 25 LDA #$25 C2/30E0: 20 81 47 JSR $4781 ; multiply A * B C2/30E3: A8 TAY C2/30E4: B9 00 16 LDA $1600,Y ; actor index C2/30E7: 60 RTS ; [ Load Battle Data ] _SetSceneHead: C2/30E8: 08 PHP C2/30E9: C2 30 REP #$30 C2/30EB: AD B9 3E LDA $3EB9 ; conditional battle flags C2/30EE: 85 EE STA $EE C2/30F0: A2 1C 00 LDX #$001C C2/30F3: A5 EE LDA $EE C2/30F5: 10 10 BPL $3107 C2/30F7: BF 80 37 CF LDA $CF3780,X ; check conditional battles C2/30FB: CD E0 11 CMP $11E0 C2/30FE: D0 07 BNE $3107 C2/3100: BF 82 37 CF LDA $CF3782,X ; switch to next battle C2/3104: 8D E0 11 STA $11E0 C2/3107: 06 EE ASL $EE C2/3109: CA DEX C2/310A: CA DEX C2/310B: CA DEX C2/310C: CA DEX C2/310D: 10 E4 BPL $30F3 C2/310F: A9 00 80 LDA #$8000 ; branch if not loading one of the next four battles C2/3112: 1C E0 11 TRB $11E0 C2/3115: F0 10 BEQ $3127 C2/3117: E2 30 SEP #$30 C2/3119: 7B TDC C2/311A: 20 5A 4B JSR $4B5A ; random number (0..255) C2/311D: 29 03 AND #$03 ; (0..3) C2/311F: C2 31 REP #$31 C2/3121: 6D E0 11 ADC $11E0 ; add to battle index C2/3124: 8D E0 11 STA $11E0 C2/3127: AD D4 3E LDA $3ED4 ; C2/312A: 0A ASL C2/312B: AD E0 11 LDA $11E0 C2/312E: 90 03 BCC $3133 C2/3130: 8D D4 3E STA $3ED4 C2/3133: 0A ASL C2/3134: 0A ASL C2/3135: AA TAX C2/3136: BF 02 59 CF LDA $CF5902,X ; load auxiliary battle data C2/313A: 8D 4A 2F STA $2F4A C2/313D: BF 00 59 CF LDA $CF5900,X C2/3141: 49 F0 00 EOR #$00F0 ; toggle battle type flags C2/3144: 8D 48 2F STA $2F48 C2/3147: AD E0 11 LDA $11E0 C2/314A: 0A ASL C2/314B: 0A ASL C2/314C: 0A ASL C2/314D: 0A ASL C2/314E: 38 SEC C2/314F: ED E0 11 SBC $11E0 C2/3152: AA TAX C2/3153: 7B TDC C2/3154: A8 TAY C2/3155: BF 00 62 CF LDA $CF6200,X ; load battle data C2/3159: 99 44 3F STA $3F44,Y C2/315C: E8 INX C2/315D: E8 INX C2/315E: C8 INY C2/315F: C8 INY C2/3160: C0 10 00 CPY #$0010 C2/3163: 90 F0 BCC $3155 C2/3165: 28 PLP C2/3166: 60 RTS ; [ Execute Attacks (self-target) ] _Magic2: C2/3167: A9 80 LDA #$80 ; don't ignore vanish C2/3169: 14 B3 TRB $B3 C2/316B: A9 0C LDA #$0C ; retarget if target invalid, no friendly targets C2/316D: 04 BA TSB $BA C2/316F: 9C 1B 34 STZ $341B ; ??? C2/3172: C2 20 REP #$20 C2/3174: BD 18 30 LDA $3018,X C2/3177: 85 B8 STA $B8 C2/3179: E2 20 SEP #$20 ; fall through ; [ Execute Attacks ] _Magic: C2/317B: DA PHX C2/317C: A5 BD LDA $BD ; damage multiplier C2/317E: 85 BC STA $BC C2/3180: A9 FF LDA #$FF C2/3182: 8D 82 3A STA $3A82 ; C2/3185: 8D 83 3A STA $3A83 C2/3188: AD 00 34 LDA $3400 C2/318B: 1A INC C2/318C: D0 25 BNE $31B3 C2/318E: AD 13 34 LDA $3413 C2/3191: 30 20 BMI $31B3 C2/3193: 85 B5 STA $B5 C2/3195: 20 D3 26 JSR $26D3 ; init attack based on command C2/3198: AD 70 3A LDA $3A70 C2/319B: 1A INC C2/319C: 4A LSR C2/319D: 20 9F 29 JSR $299F C2/31A0: AD A6 11 LDA $11A6 C2/31A3: D0 03 BNE $31A8 ; branch if there was damage C2/31A5: 4C 75 32 JMP $3275 ; jump if no damage C2/31A8: A5 B5 LDA $B5 C2/31AA: C9 06 CMP #$06 C2/31AC: D0 05 BNE $31B3 ; branch if command is not capture C2/31AE: A9 A4 LDA #$A4 ; special effect $52 (steal) C2/31B0: 8D A9 11 STA $11A9 C2/31B3: 20 EB 37 JSR $37EB C2/31B6: A9 20 LDA #$20 C2/31B8: 14 B2 TRB $B2 C2/31BA: F0 05 BEQ $31C1 C2/31BC: 2C A3 11 BIT $11A3 C2/31BF: D0 04 BNE $31C5 C2/31C1: A9 04 LDA #$04 C2/31C3: 04 BA TSB $BA C2/31C5: A5 B8 LDA $B8 C2/31C7: 05 B9 ORA $B9 C2/31C9: D0 08 BNE $31D3 C2/31CB: A9 04 LDA #$04 C2/31CD: 24 B3 BIT $B3 C2/31CF: F0 02 BEQ $31D3 C2/31D1: 14 BA TRB $BA C2/31D3: AD 15 34 LDA $3415 C2/31D6: 30 04 BMI $31DC C2/31D8: A9 40 LDA #$40 C2/31DA: 04 BA TSB $BA C2/31DC: A5 B3 LDA $B3 C2/31DE: 4A LSR C2/31DF: B0 08 BCS $31E9 C2/31E1: A9 04 LDA #$04 C2/31E3: 04 BA TSB $BA C2/31E5: 64 B8 STZ $B8 C2/31E7: 64 B9 STZ $B9 C2/31E9: 20 66 36 JSR $3666 ; display attack name C2/31EC: AD 17 34 LDA $3417 C2/31EF: 30 01 BMI $31F2 C2/31F1: AA TAX C2/31F2: AD 7C 3A LDA $3A7C C2/31F5: C9 1E CMP #$1E C2/31F7: D0 08 BNE $3201 C2/31F9: 64 B8 STZ $B8 C2/31FB: 64 B9 STZ $B9 C2/31FD: A9 04 LDA #$04 C2/31FF: 85 BA STA $BA C2/3201: AD A5 11 LDA $11A5 C2/3204: F0 1F BEQ $3225 C2/3206: BD E5 3E LDA $3EE5,X C2/3209: 89 08 BIT #$08 C2/320B: D0 0E BNE $321B C2/320D: BD E4 3E LDA $3EE4,X C2/3210: 89 20 BIT #$20 C2/3212: F0 11 BEQ $3225 C2/3214: AD 10 34 LDA $3410 ; last spell cast C2/3217: C9 23 CMP #$23 C2/3219: F0 0A BEQ $3225 ; branch if imp C2/321B: 8A TXA C2/321C: 4A LSR C2/321D: EB XBA C2/321E: A9 0E LDA #$0E ; battle script command $0E (clear character graphical action) C2/3220: 20 BF 62 JSR $62BF ; add battle script command to queue C2/3223: 80 50 BRA $3275 C2/3225: 20 2B 35 JSR $352B ; runic effect C2/3228: 20 38 38 JSR $3838 ; air anchor effect C2/322B: 20 9D 2B JSR $2B9D C2/322E: 20 4A 0D JSR $0D4A ; atlas armlet/earring effect C2/3231: C2 20 REP #$20 C2/3233: 20 92 32 JSR $3292 ; calculate damage C2/3236: AD A2 11 LDA $11A2 C2/3239: 4A LSR C2/323A: B0 07 BCS $3243 ; branch if physical damage C2/323C: A5 A6 LDA $A6 C2/323E: F0 03 BEQ $3243 ; branch if no targets were refleced off of C2/3240: 20 83 34 JSR $3483 ; calculate damage (reflected attack) C2/3243: AD 30 3A LDA $3A30 C2/3246: 85 B8 STA $B8 ; C2/3248: E2 20 SEP #$20 C2/324A: 20 91 43 JSR $4391 ; update status C2/324D: 20 3E 36 JSR $363E ; random weapon spellcast C2/3250: AD 01 34 LDA $3401 C2/3253: C9 FF CMP #$FF C2/3255: F0 0B BEQ $3262 ; branch if there is no battle message C2/3257: EB XBA C2/3258: A9 02 LDA #$02 ; battle script command $02 (show battle message) C2/325A: 20 BF 62 JSR $62BF ; add battle script command to queue C2/325D: A9 FF LDA #$FF C2/325F: 8D 01 34 STA $3401 ; disable battle message C2/3262: AD A7 11 LDA $11A7 C2/3265: 89 02 BIT #$02 C2/3267: F0 0C BEQ $3275 ; branch if battle message based on attack index is disabled C2/3269: E0 08 CPX #$08 C2/326B: 90 08 BCC $3275 ; branch if attacker is a character C2/326D: A5 B6 LDA $B6 ; attack index C2/326F: EB XBA C2/3270: A9 02 LDA #$02 ; battle script command $02 (show battle message) C2/3272: 20 BF 62 JSR $62BF ; add battle script command to queue C2/3275: A9 FF LDA #$FF C2/3277: 8D 14 34 STA $3414 ; enable damage modification C2/327A: 8D 15 34 STA $3415 C2/327D: 8D 1C 34 STA $341C C2/3280: AD 83 3A LDA $3A83 C2/3283: 30 03 BMI $3288 C2/3285: 8D 16 34 STA $3416 C2/3288: FA PLX ; next attack C2/3289: CE 70 3A DEC $3A70 C2/328C: 30 03 BMI $3291 C2/328E: F4 7A 31 PEA $317A ; loop back to the beginning of the subroutine C2/3291: 60 RTS ; [ Calculate Damage ] yama_magic_magic: C2/3292: 9C 5A 3A STZ $3A5A C2/3295: 9C 54 3A STZ $3A54 C2/3298: 20 00 64 JSR $6400 ; clear battle script data buffer C2/329B: 20 7E 58 JSR $587E C2/329E: DA PHX C2/329F: A5 B8 LDA $B8 ; targets C2/32A1: 20 0E 52 JSR $520E ; X = number of bits set in A C2/32A4: 8E C9 3E STX $3EC9 ; set number of targets C2/32A7: FA PLX C2/32A8: 20 3B 12 JSR $123B ; check true knight/love token C2/32AB: 20 C2 57 JSR $57C2 ; update battle script data C2/32AE: 20 65 38 JSR $3865 C2/32B1: AD 4C 3A LDA $3A4C C2/32B4: F0 36 BEQ $32EC C2/32B6: 38 SEC C2/32B7: BD 08 3C LDA $3C08,X C2/32BA: ED 4C 3A SBC $3A4C C2/32BD: 9C 4C 3A STZ $3A4C C2/32C0: B0 1E BCS $32E0 C2/32C2: E0 08 CPX #$08 C2/32C4: 90 04 BCC $32CA C2/32C6: A0 12 LDY #$12 C2/32C8: 84 B5 STY $B5 C2/32CA: 20 AD 35 JSR $35AD C2/32CD: 64 A2 STZ $A2 C2/32CF: 64 A4 STZ $A4 C2/32D1: A9 02 00 LDA #$0002 C2/32D4: 1C A7 11 TRB $11A7 C2/32D7: A9 02 28 LDA #$2802 C2/32DA: 20 9B 62 JSR $629B ; add battle script command to queue C2/32DD: 4C DB 63 JMP $63DB ; copy battle script data to buffer C2/32E0: 9D 08 3C STA $3C08,X C2/32E3: A9 80 00 LDA #$0080 C2/32E6: 1D 04 32 ORA $3204,X C2/32E9: 9D 04 32 STA $3204,X C2/32EC: E2 20 SEP #$20 C2/32EE: AD 12 34 LDA $3412 C2/32F1: C9 06 CMP #$06 C2/32F3: D0 5A BNE $334F C2/32F5: DA PHX C2/32F6: A9 02 LDA #$02 C2/32F8: 04 B2 TSB $B2 C2/32FA: 4A LSR C2/32FB: 04 A0 TSB $A0 C2/32FD: BD 81 3C LDA $3C81,X C2/3300: 85 B7 STA $B7 C2/3302: BD 2D 32 LDA $322D,X ; special attack C2/3305: 48 PHA C2/3306: 0A ASL C2/3307: 10 08 BPL $3311 ; branch if attack deals damage C2/3309: 9C A6 11 STZ $11A6 ; clear attack power C2/330C: A9 01 LDA #$01 C2/330E: 0C A7 11 TSB $11A7 ; automatically miss if target is immune to status C2/3311: 90 05 BCC $3318 ; branch if attack can miss C2/3313: A9 20 LDA #$20 C2/3315: 0C A4 11 TSB $11A4 ; can't dodge C2/3318: 68 PLA C2/3319: 29 3F AND #$3F C2/331B: C9 30 CMP #$30 C2/331D: 90 1A BCC $3339 ; branch if special attack < $30 (status or damage) C2/331F: C9 32 CMP #$32 C2/3321: B0 0F BCS $3332 ; branch if >= $32 (remove rflect status) ; $30/$31: drain HP/MP C2/3323: 4A LSR C2/3324: A9 02 LDA #$02 C2/3326: 0C A4 11 TSB $11A4 ; drain effect C2/3329: 90 23 BCC $334E ; branch if draining HP C2/332B: A9 80 LDA #$80 C2/332D: 0C A3 11 TSB $11A3 ; affect MP C2/3330: 80 1C BRA $334E ; $32+: remove rflect status C2/3332: A9 04 LDA #$04 C2/3334: 0C A4 11 TSB $11A4 C2/3337: A9 17 LDA #$17 C2/3339: C9 20 CMP #$20 C2/333B: 90 08 BCC $3345 ; branch if special attack < $20 (status) C2/333D: E9 20 SBC #$20 C2/333F: 65 BC ADC $BC ; add to damage multiplier C2/3341: 85 BC STA $BC C2/3343: 80 09 BRA $334E ; $00-$1F: status C2/3345: 20 17 52 JSR $5217 ; get bit mask and byte number C2/3348: 1D AA 11 ORA $11AA,X C2/334B: 9D AA 11 STA $11AA,X C2/334E: FA PLX C2/334F: A9 40 LDA #$40 C2/3351: 04 B2 TSB $B2 C2/3353: D0 0F BNE $3364 C2/3355: A9 25 LDA #$25 ; C2/3357: EB XBA C2/3358: A9 06 LDA #$06 ; battle script command $06 (show animation) C2/335A: 20 BF 62 JSR $62BF ; add battle script command to queue C2/335D: 20 DB 63 JSR $63DB ; copy battle script data to buffer C2/3360: A9 10 LDA #$10 C2/3362: 14 A0 TRB $A0 C2/3364: A9 08 LDA #$08 C2/3366: 3C F9 3E BIT $3EF9,X C2/3369: F0 04 BEQ $336F C2/336B: E6 BC INC $BC C2/336D: E6 BC INC $BC C2/336F: AD A2 11 LDA $11A2 C2/3372: 4A LSR C2/3373: 90 09 BCC $337E C2/3375: A9 10 LDA #$10 C2/3377: 3C E5 3E BIT $3EE5,X C2/337A: F0 02 BEQ $337E C2/337C: E6 BC INC $BC C2/337E: AD A2 11 LDA $11A2 C2/3381: 89 40 BIT #$40 C2/3383: D0 0D BNE $3392 C2/3385: AD C9 3E LDA $3EC9 C2/3388: C9 02 CMP #$02 C2/338A: 90 06 BCC $3392 ; branch if there are less than 2 targets C2/338C: 4E B1 11 LSR $11B1 C2/338F: 6E B0 11 ROR $11B0 C2/3392: A9 20 LDA #$20 C2/3394: 24 B3 BIT $B3 C2/3396: D0 0B BNE $33A3 C2/3398: 3C A1 3A BIT $3AA1,X C2/339B: F0 06 BEQ $33A3 ; branch if $3AA1.5 is clear (character row) C2/339D: 4E B1 11 LSR $11B1 C2/33A0: 6E B0 11 ROR $11B0 C2/33A3: 20 AD 14 JSR $14AD ; update targets getting hit in the back C2/33A6: 20 7D 3E JSR $3E7D ; execute attacker special effect C2/33A9: C2 20 REP #$20 C2/33AB: AC 05 34 LDY $3405 C2/33AE: 30 01 BMI $33B1 C2/33B0: 60 RTS C2/33B1: A0 12 LDY #$12 C2/33B3: B9 18 30 LDA $3018,Y C2/33B6: 24 A4 BIT $A4 C2/33B8: F0 07 BEQ $33C1 C2/33BA: 20 0D 22 JSR $220D ; check if attack hits C2/33BD: 90 02 BCC $33C1 C2/33BF: 14 A4 TRB $A4 C2/33C1: 88 DEY C2/33C2: 88 DEY C2/33C3: 10 EE BPL $33B3 C2/33C5: E2 20 SEP #$20 C2/33C7: AD 1C 34 LDA $341C C2/33CA: 30 0A BMI $33D6 C2/33CC: A5 A4 LDA $A4 C2/33CE: 05 A5 ORA $A5 C2/33D0: D0 04 BNE $33D6 C2/33D2: A9 12 LDA #$12 C2/33D4: 85 B5 STA $B5 C2/33D6: AD 1D 34 LDA $341D C2/33D9: 30 0A BMI $33E5 C2/33DB: A5 A2 LDA $A2 C2/33DD: 05 A3 ORA $A3 C2/33DF: D0 04 BNE $33E5 C2/33E1: A9 12 LDA #$12 C2/33E3: 85 B5 STA $B5 C2/33E5: A9 40 LDA #$40 C2/33E7: 3C 95 3C BIT $3C95,X C2/33EA: F0 06 BEQ $33F2 C2/33EC: 4A LSR C2/33ED: 3C E4 3E BIT $3EE4,X C2/33F0: D0 1A BNE $340C C2/33F2: A9 02 LDA #$02 C2/33F4: 24 B3 BIT $B3 C2/33F6: F0 14 BEQ $340C C2/33F8: 24 B2 BIT $B2 C2/33FA: D0 18 BNE $3414 C2/33FC: 24 BA BIT $BA C2/33FE: F0 14 BEQ $3414 C2/3400: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3403: C9 08 CMP #$08 C2/3405: B0 0D BCS $3414 ; 31/32 chance to branch C2/3407: AD C9 3E LDA $3EC9 C2/340A: F0 08 BEQ $3414 ; branch if there are no targets C2/340C: E6 BC INC $BC ; damage x2 C2/340E: E6 BC INC $BC C2/3410: A9 20 LDA #$20 ; flash screen (critical) C2/3412: 04 A0 TSB $A0 C2/3414: 20 AD 35 JSR $35AD C2/3417: C2 20 REP #$20 C2/3419: AD B0 11 LDA $11B0 C2/341C: 20 0B 37 JSR $370B C2/341F: 8D B0 11 STA $11B0 C2/3422: E2 20 SEP #$20 C2/3424: AD A3 11 LDA $11A3 C2/3427: 0A ASL C2/3428: 10 04 BPL $342E C2/342A: 9B TXY C2/342B: 20 52 38 JSR $3852 C2/342E: BC B9 32 LDY $32B9,X C2/3431: 30 09 BMI $343C C2/3433: DA PHX C2/3434: BB TYX C2/3435: BC B8 32 LDY $32B8,X C2/3438: 20 2F 37 JSR $372F C2/343B: FA PLX C2/343C: C2 20 REP #$20 C2/343E: A0 12 LDY #$12 C2/3440: B9 18 30 LDA $3018,Y C2/3443: 14 A4 TRB $A4 C2/3445: F0 25 BEQ $346C C2/3447: 2C 54 3A BIT $3A54 C2/344A: F0 02 BEQ $344E C2/344C: E6 BC INC $BC C2/344E: 20 E3 35 JSR $35E3 C2/3451: CC F8 33 CPY $33F8 C2/3454: F0 16 BEQ $346C C2/3456: 9C 48 3A STZ $3A48 C2/3459: 20 06 44 JSR $4406 C2/345C: 20 7E 38 JSR $387E ; execute target special effect C2/345F: AD 48 3A LDA $3A48 C2/3462: D0 08 BNE $346C C2/3464: B9 18 30 LDA $3018,Y C2/3467: 04 A4 TSB $A4 C2/3469: 20 83 0B JSR $0B83 ; calculate damage for target C2/346C: 88 DEY C2/346D: 88 DEY C2/346E: 10 D0 BPL $3440 C2/3470: 20 EF 62 JSR $62EF ; apply and display damage C2/3473: 20 D6 36 JSR $36D6 ; learn lore C2/3476: A5 A4 LDA $A4 C2/3478: D0 06 BNE $3480 C2/347A: A9 02 00 LDA #$0002 C2/347D: 1C A7 11 TRB $11A7 C2/3480: 4C DB 63 JMP $63DB ; copy battle script data to buffer ; [ Calculate Damage (reflected attack) ] reflec: C2/3483: DA PHX C2/3484: 48 PHA C2/3485: 20 00 64 JSR $6400 ; clear battle script data buffer C2/3488: 9C 5A 3A STZ $3A5A C2/348B: E2 20 SEP #$20 C2/348D: A9 22 LDA #$22 C2/348F: 0C A3 11 TSB $11A3 C2/3492: A9 40 LDA #$40 C2/3494: 85 BB STA $BB C2/3496: A9 50 LDA #$50 C2/3498: 04 BA TSB $BA C2/349A: A5 B6 LDA $B6 C2/349C: 8D 2A 3A STA $3A2A C2/349F: AE 05 34 LDX $3405 C2/34A2: 30 08 BMI $34AC C2/34A4: A9 10 LDA #$10 C2/34A6: 14 BA TRB $BA C2/34A8: A9 15 LDA #$15 C2/34AA: 80 02 BRA $34AE C2/34AC: A9 09 LDA #$09 C2/34AE: 20 9B 62 JSR $629B ; add battle script command to queue C2/34B1: A9 FF LDA #$FF C2/34B3: A0 09 LDY #$09 C2/34B5: 99 A0 00 STA $00A0,Y C2/34B8: 88 DEY C2/34B9: 10 FA BPL $34B5 C2/34BB: C2 20 REP #$20 C2/34BD: 4E B0 11 LSR $11B0 C2/34C0: A0 12 LDY #$12 C2/34C2: B9 18 30 LDA $3018,Y C2/34C5: 23 01 AND $01,S C2/34C7: F0 46 BEQ $350F C2/34C9: BB TYX C2/34CA: 20 7E 58 JSR $587E C2/34CD: A5 B8 LDA $B8 C2/34CF: F0 3E BEQ $350F C2/34D1: 5A PHY C2/34D2: 20 F9 51 JSR $51F9 ; get the first valid target in +A C2/34D5: DA PHX C2/34D6: E2 20 SEP #$20 C2/34D8: 8A TXA C2/34D9: 4A LSR C2/34DA: AA TAX C2/34DB: AD 05 34 LDA $3405 C2/34DE: 30 04 BMI $34E4 C2/34E0: CE 05 34 DEC $3405 C2/34E3: AA TAX C2/34E4: 98 TYA C2/34E5: 4A LSR C2/34E6: 95 A0 STA $A0,X C2/34E8: C2 20 REP #$20 C2/34EA: FA PLX C2/34EB: 20 0D 22 JSR $220D ; check if attack hits C2/34EE: B0 19 BCS $3509 C2/34F0: 9C 48 3A STZ $3A48 C2/34F3: 20 E3 35 JSR $35E3 C2/34F6: 20 06 44 JSR $4406 C2/34F9: 20 7E 38 JSR $387E ; execute target special effect C2/34FC: AD 48 3A LDA $3A48 C2/34FF: D0 08 BNE $3509 C2/3501: BD 18 30 LDA $3018,X C2/3504: 04 AE TSB $AE C2/3506: 20 83 0B JSR $0B83 ; calculate damage for target C2/3509: 7A PLY C2/350A: AE 05 34 LDX $3405 C2/350D: 10 B3 BPL $34C2 C2/350F: 88 DEY C2/3510: 88 DEY C2/3511: 10 AF BPL $34C2 C2/3513: 68 PLA C2/3514: FA PLX C2/3515: A9 10 00 LDA #$0010 C2/3518: 24 BA BIT $BA C2/351A: D0 09 BNE $3525 C2/351C: BD 18 30 LDA $3018,X C2/351F: 85 AE STA $AE C2/3521: 64 AA STZ $AA C2/3523: 64 AC STZ $AC C2/3525: 20 EF 62 JSR $62EF ; apply and display damage C2/3528: 4C DB 63 JMP $63DB ; copy battle script data to buffer ; [ Runic Effect ] _LightningRod: C2/352B: AD A3 11 LDA $11A3 C2/352E: 89 08 BIT #$08 C2/3530: F0 7A BEQ $35AC C2/3532: 64 EE STZ $EE C2/3534: 64 EF STZ $EF C2/3536: A0 12 LDY #$12 C2/3538: B9 A0 3A LDA $3AA0,Y C2/353B: 4A LSR C2/353C: 90 20 BCC $355E ; branch if $3AA0.0 is clear (target is not present) C2/353E: B9 4C 3E LDA $3E4C,Y C2/3541: 89 06 BIT #$06 C2/3543: F0 19 BEQ $355E ; branch if $3E4C.1 and $3E4C.2 are clear (runic and enemy runic) C2/3545: 29 FB AND #$FB C2/3547: 99 4C 3E STA $3E4C,Y ; clear $3E4C.2 (character runic) C2/354A: F4 C0 80 PEA $80C0 C2/354D: F4 10 22 PEA $2210 C2/3550: 20 64 58 JSR $5864 ; check if status set C2/3553: 90 09 BCC $355E C2/3555: C2 20 REP #$20 C2/3557: B9 18 30 LDA $3018,Y C2/355A: 04 EE TSB $EE C2/355C: E2 20 SEP #$20 C2/355E: 88 DEY C2/355F: 88 DEY C2/3560: 10 D6 BPL $3538 C2/3562: A5 EE LDA $EE C2/3564: 05 EF ORA $EF C2/3566: F0 44 BEQ $35AC ; return if no targets have runic C2/3568: DA PHX C2/3569: 20 65 38 JSR $3865 C2/356C: 9C 15 34 STZ $3415 C2/356F: C2 20 REP #$20 C2/3571: A5 EE LDA $EE C2/3573: 85 B8 STA $B8 C2/3575: 20 0E 52 JSR $520E ; X = number of bits set in A C2/3578: 9C AA 11 STZ $11AA C2/357B: 9C AC 11 STZ $11AC C2/357E: A9 82 21 LDA #$2182 ; affect mp, ignore reflect, can't dodge, restore mp C2/3581: 8D A3 11 STA $11A3 C2/3584: E2 20 SEP #$20 C2/3586: A9 60 LDA #$60 C2/3588: 8D A2 11 STA $11A2 C2/358B: 7B TDC C2/358C: AD A5 11 LDA $11A5 C2/358F: 20 92 47 JSR $4792 ; divide +A / X C2/3592: 8D A6 11 STA $11A6 C2/3595: 20 5E 38 JSR $385E ; clear level/hit rate C2/3598: 9C 14 34 STZ $3414 ; disable damage modification C2/359B: A9 40 LDA #$40 C2/359D: 14 B2 TRB $B2 ; enable runic sword animation C2/359F: A9 04 LDA #$04 C2/35A1: 85 BA STA $BA ; no retarget if target invalid C2/35A3: A9 03 LDA #$03 C2/35A5: 1C A7 11 TRB $11A7 ; don't display battle message, don't automatically miss if target immune to status C2/35A8: 9C A9 11 STZ $11A9 ; no special effect C2/35AB: FA PLX C2/35AC: 60 RTS ; [ ] _SetAttackMes: C2/35AD: DA PHX C2/35AE: AE 72 3A LDX $3A72 C2/35B1: 8E 71 3A STX $3A71 C2/35B4: FA PLX C2/35B5: 20 D4 35 JSR $35D4 C2/35B8: 4C 9E 62 JMP $629E ; add battle script command to queue ; [ ] _WriteAttackMes: C2/35BB: 20 D4 35 JSR $35D4 ; copy battle script command to buffer _WriteKernelMes: C2/35BE: DA PHX C2/35BF: 08 PHP C2/35C0: AE 72 3A LDX $3A72 ; save battle script command queue pointer C2/35C3: DA PHX C2/35C4: AE 71 3A LDX $3A71 ; C2/35C7: 8E 72 3A STX $3A72 C2/35CA: 20 9E 62 JSR $629E ; add battle script command to queue C2/35CD: FA PLX C2/35CE: 8E 72 3A STX $3A72 ; restore battle script command queue pointer C2/35D1: 28 PLP C2/35D2: FA PLX C2/35D3: 60 RTS ; [ Copy Battle Script Command to Buffer ] AttackMesSub: C2/35D4: 08 PHP C2/35D5: C2 20 REP #$20 C2/35D7: A5 B4 LDA $B4 C2/35D9: 8D 28 3A STA $3A28 C2/35DC: A5 B6 LDA $B6 C2/35DE: 8D 2A 3A STA $3A2A C2/35E1: 28 PLP C2/35E2: 60 RTS ; [ ] _SetBlackList: C2/35E3: 08 PHP C2/35E4: E2 30 SEP #$30 C2/35E6: 20 1B 36 JSR $361B C2/35E9: 8A TXA C2/35EA: 99 90 32 STA $3290,Y C2/35ED: AD 7C 3A LDA $3A7C C2/35F0: 99 48 3D STA $3D48,Y C2/35F3: AD 10 34 LDA $3410 C2/35F6: C9 FF CMP #$FF C2/35F8: F0 07 BEQ $3601 C2/35FA: 99 49 3D STA $3D49,Y C2/35FD: 8A TXA C2/35FE: 99 91 32 STA $3291,Y C2/3601: AD 11 34 LDA $3411 C2/3604: C9 FF CMP #$FF C2/3606: F0 07 BEQ $360F C2/3608: 99 5C 3D STA $3D5C,Y C2/360B: 8A TXA C2/360C: 99 A4 32 STA $32A4,Y C2/360F: AD A1 11 LDA $11A1 C2/3612: 99 5D 3D STA $3D5D,Y C2/3615: 8A TXA C2/3616: 99 A5 32 STA $32A5,Y C2/3619: 28 PLP C2/361A: 60 RTS ; [ ] _SetBlackList2: C2/361B: 08 PHP C2/361C: E2 21 SEP #$21 C2/361E: B9 E0 32 LDA $32E0,Y C2/3621: 10 05 BPL $3628 C2/3623: 20 53 4B JSR $4B53 ; random number (carry) C2/3626: 90 05 BCC $362D C2/3628: 8A TXA C2/3629: 6A ROR C2/362A: 99 E0 32 STA $32E0,Y C2/362D: 28 PLP C2/362E: 60 RTS ; [ Save Previous Attacker ] ; +X: attacker ; +Y: target _SetBlackList3: C2/362F: 48 PHA C2/3630: 08 PHP C2/3631: B9 E0 32 LDA $32E0,Y ; last target that attacked you C2/3634: 30 05 BMI $363B ; return if invalid C2/3636: 8A TXA C2/3637: 6A ROR C2/3638: 99 E0 32 STA $32E0,Y ; set last target that attacked you C2/363B: 28 PLP C2/363C: 68 PLA C2/363D: 60 RTS ; [ Random Weapon Spellcast ] _PunchMagicCheck: C2/363E: A5 B5 LDA $B5 C2/3640: C9 16 CMP #$16 C2/3642: D0 05 BNE $3649 ; branch if command was not jump C2/3644: AD 70 3A LDA $3A70 C2/3647: D0 1C BNE $3665 ; return if there is more than one attack (dragon horn) C2/3649: AD 89 3A LDA $3A89 C2/364C: 89 40 BIT #$40 C2/364E: F0 15 BEQ $3665 ; return if random weapon spellcast is disabled C2/3650: EB XBA C2/3651: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3654: C9 40 CMP #$40 C2/3656: B0 0D BCS $3665 ; 3/4 chance to return C2/3658: EB XBA C2/3659: 29 3F AND #$3F C2/365B: 8D 00 34 STA $3400 ; set spell index C2/365E: A9 10 LDA #$10 C2/3660: 14 B2 TRB $B2 ; follow-up spell hits same target C2/3662: EE 70 3A INC $3A70 ; increment number of attacks C2/3665: 60 RTS ; [ Display Attack Name ] _FollowMessage: C2/3666: A9 01 LDA #$01 C2/3668: 14 B2 TRB $B2 C2/366A: F0 F9 BEQ $3665 ; return if attack name has already been displayed (quadra slam, etc.) C2/366C: AD 12 34 LDA $3412 ; attack name type C2/366F: 30 F4 BMI $3665 ; return if disabled C2/3671: DA PHX C2/3672: 9B TXY C2/3673: 8D 29 3A STA $3A29 ; b2 = attack name type C2/3676: 0A ASL C2/3677: AA TAX C2/3678: A9 01 LDA #$01 ; battle script command $01 (display attack name) C2/367A: 8D 28 3A STA $3A28 C2/367D: FC C4 36 JSR ($36C4,X) ; attack name type function jump table C2/3680: 8D 2A 3A STA $3A2A ; b3 = return value C2/3683: FA PLX C2/3684: 4C 9E 62 JMP $629E ; add battle script command to queue ; [ Attack Name Type $00: Normal ] C2/3687: A5 B6 LDA $B6 ; spell/attack index C2/3689: 60 RTS ; [ Attack Name Type $01: Item ] C2/368A: AD 7D 3A LDA $3A7D ; item index ??? C2/368D: 60 RTS ; [ Attack Name Type $02: Esper ] C2/368E: 38 SEC C2/368F: A5 B6 LDA $B6 ; spell/attack index - 54 C2/3691: E9 36 SBC #$36 C2/3693: 60 RTS ; [ Attack Name Type $05: Command ] C2/3694: A5 B5 LDA $B5 ; command index C2/3696: 60 RTS ; [ Attack Name Type $06: Monster Special Attack ] C2/3697: A9 11 LDA #$11 C2/3699: 8D 28 3A STA $3A28 ; b1 = battle script command $11 (display monster special attack name C2/369C: B9 A8 33 LDA $33A8,Y C2/369F: 8D 29 3A STA $3A29 ; +b2 = monster index C2/36A2: B9 A9 33 LDA $33A9,Y C2/36A5: 60 RTS ; [ Attack Name Type $07: Joker Doom ] C2/36A6: A9 02 LDA #$02 C2/36A8: 0C 46 3A TSB $3A46 ; set $3A46.1 C2/36AB: 1C A2 11 TRB $11A2 ; C2/36AE: A9 20 LDA #$20 C2/36B0: 0C A4 11 TSB $11A4 ; C2/36B3: A9 00 LDA #$00 ; attack name type = 0 (normal) C2/36B5: 8D 29 3A STA $3A29 C2/36B8: A9 55 LDA #$55 ; b3 = attack $55 (Joker Doom) C2/36BA: 60 RTS ; [ Attack Name Type $08: Blitz ] C2/36BB: A9 00 LDA #$00 ; attack name type = 0 (normal) C2/36BD: 8D 29 3A STA $3A29 C2/36C0: AD 7D 3A LDA $3A7D ; blitz index ??? C2/36C3: 60 RTS ; attack name type jump table followTable: C2/36C4: .DW $3687, $368A, $368E, $3665, $3687, $3694, $3697, $36A6 C2/36D4: .DW $36BB ; [ learn lore ] _Stragus: C2/36D6: DA PHX C2/36D7: 08 PHP C2/36D8: E2 20 SEP #$20 C2/36DA: AD A3 11 LDA $11A3 C2/36DD: 89 04 BIT #$04 C2/36DF: F0 27 BEQ $3708 C2/36E1: AC 07 30 LDY $3007 C2/36E4: 30 22 BMI $3708 C2/36E6: F4 C3 B0 PEA $B0C3 C2/36E9: F4 10 23 PEA $2310 C2/36EC: 20 64 58 JSR $5864 ; check if status set C2/36EF: 90 17 BCC $3708 C2/36F1: A5 B6 LDA $B6 C2/36F3: E9 8B SBC #$8B C2/36F5: 18 CLC C2/36F6: 20 17 52 JSR $5217 ; get bit mask and byte number C2/36F9: E0 03 CPX #$03 C2/36FB: B0 0B BCS $3708 C2/36FD: 3C 29 1D BIT $1D29,X C2/3700: D0 06 BNE $3708 C2/3702: 1D 84 3A ORA $3A84,X C2/3705: 9D 84 3A STA $3A84,X C2/3708: 28 PLP C2/3709: FA PLX C2/370A: 60 RTS ; [ Apply Damage Multiplier ] ; +A *= (1 + ($BC / 2)) _DamageMultiple: C2/370B: 5A PHY C2/370C: A4 BC LDY $BC C2/370E: F0 1D BEQ $372D C2/3710: 48 PHA C2/3711: A5 B2 LDA $B2 ; ignore damage multiplier flag (in $B3) C2/3713: 0A ASL C2/3714: 2D A1 11 AND $11A1 ; C2/3717: 0A ASL C2/3718: 0A ASL C2/3719: 0A ASL C2/371A: 68 PLA C2/371B: B0 10 BCS $372D C2/371D: 85 EE STA $EE C2/371F: 46 EE LSR $EE C2/3721: 18 CLC C2/3722: 65 EE ADC $EE C2/3724: 90 02 BCC $3728 C2/3726: 7B TDC ; max damage 65535 C2/3727: 3A DEC C2/3728: 88 DEY C2/3729: D0 F6 BNE $3721 C2/372B: 84 BC STY $BC C2/372D: 7A PLY C2/372E: 60 RTS ; [ ] _SetManageCommand: C2/372F: DA PHX C2/3730: 5A PHY C2/3731: 08 PHP C2/3732: C2 31 REP #$31 C2/3734: BF 4A 54 C2 LDA $C2544A,X C2/3738: 69 30 00 ADC #$0030 C2/373B: 8F 81 21 00 STA $002181 C2/373F: BB TYX C2/3740: BD 08 3C LDA $3C08,X C2/3743: 1A INC C2/3744: 85 EE STA $EE C2/3746: BD F9 1F LDA $1FF9,X C2/3749: 0A ASL C2/374A: 0A ASL C2/374B: AA TAX C2/374C: E2 20 SEP #$20 C2/374E: 7B TDC C2/374F: 8F 83 21 00 STA $002183 C2/3753: A0 04 00 LDY #$0004 C2/3756: 7B TDC C2/3757: 48 PHA C2/3758: BF 00 3D CF LDA $CF3D00,X C2/375C: 8F 80 21 00 STA $002180 C2/3760: C9 FF CMP #$FF C2/3762: F0 1C BEQ $3780 C2/3764: EB XBA C2/3765: A9 0E LDA #$0E C2/3767: 20 81 47 JSR $4781 ; multiply A * B C2/376A: DA PHX C2/376B: AA TAX C2/376C: BF C5 6A C4 LDA $C46AC5,X C2/3770: EB XBA C2/3771: BF C0 6A C4 LDA $C46AC0,X ; spell data C2/3775: FA PLX C2/3776: 83 01 STA $01,S C2/3778: 18 CLC C2/3779: A5 EF LDA $EF C2/377B: D0 03 BNE $3780 C2/377D: EB XBA C2/377E: C5 EE CMP $EE C2/3780: 6A ROR C2/3781: 8F 80 21 00 STA $002180 C2/3785: 68 PLA C2/3786: 8F 80 21 00 STA $002180 C2/378A: E8 INX C2/378B: 88 DEY C2/378C: D0 C8 BNE $3756 C2/378E: 28 PLP C2/378F: 7A PLY C2/3790: FA PLX C2/3791: 60 RTS ; [ Check Sketch/Control Success ] ; C: set = beret/coronet, clear = no beret/coronet ; C: set = failed, clear = successful (out) _LevelCheckForSketch: C2/3792: DA PHX C2/3793: B9 18 3B LDA $3B18,Y ; target's level C2/3796: 90 07 BCC $379F C2/3798: EB XBA C2/3799: A9 AA LDA #$AA ; multiply by (170/255) if coronet is equipped C2/379B: 20 81 47 JSR $4781 ; multiply A * B C2/379E: EB XBA C2/379F: 48 PHA C2/37A0: 7B TDC C2/37A1: BD 18 3B LDA $3B18,X ; attacker's level C2/37A4: EB XBA C2/37A5: FA PLX C2/37A6: 20 92 47 JSR $4792 ; divide +A / X C2/37A9: 48 PHA C2/37AA: 18 CLC C2/37AB: EB XBA C2/37AC: D0 05 BNE $37B3 C2/37AE: 20 5A 4B JSR $4B5A ; random number (0..255) C2/37B1: C3 01 CMP $01,S C2/37B3: 68 PLA C2/37B4: FA PLX C2/37B5: 60 RTS ; [ ] _UseGill: C2/37B6: 48 PHA C2/37B7: 38 SEC C2/37B8: AD 60 18 LDA $1860 C2/37BB: 85 EE STA $EE C2/37BD: E3 01 SBC $01,S C2/37BF: 8D 60 18 STA $1860 C2/37C2: E2 20 SEP #$20 C2/37C4: AD 62 18 LDA $1862 C2/37C7: E9 00 SBC #$00 C2/37C9: 8D 62 18 STA $1862 C2/37CC: C2 20 REP #$20 C2/37CE: B0 0A BCS $37DA C2/37D0: A5 EE LDA $EE C2/37D2: 83 01 STA $01,S C2/37D4: 9C 60 18 STZ $1860 C2/37D7: 9C 61 18 STZ $1861 C2/37DA: 68 PLA C2/37DB: 60 RTS ; [ Choose a Random Esper ] _RandomSummon: C2/37DC: A9 19 LDA #$19 C2/37DE: 20 65 4B JSR $4B65 ; random number (0..24) C2/37E1: C9 0B CMP #$0B C2/37E3: 90 02 BCC $37E7 C2/37E5: 1A INC ; can't pick odin or raiden C2/37E6: 1A INC C2/37E7: 18 CLC C2/37E8: 69 36 ADC #$36 C2/37EA: 60 RTS ; [ ] _LoadMagic3: C2/37EB: AD 00 34 LDA $3400 C2/37EE: C9 FF CMP #$FF C2/37F0: F0 45 BEQ $3837 C2/37F2: 85 B6 STA $B6 C2/37F4: 20 BF 1D JSR $1DBF ; C2/37F7: 85 B5 STA $B5 C2/37F9: 20 D3 26 JSR $26D3 ; init attack based on command C2/37FC: 20 51 29 JSR $2951 ; update hit rate and level C2/37FF: 9C A5 11 STZ $11A5 C2/3802: A9 FF LDA #$FF C2/3804: 8D 00 34 STA $3400 C2/3807: A9 02 LDA #$02 C2/3809: 04 B2 TSB $B2 C2/380B: A9 10 LDA #$10 C2/380D: 24 B2 BIT $B2 C2/380F: F0 03 BEQ $3814 C2/3811: 9C 15 34 STZ $3415 C2/3814: D0 17 BNE $382D C2/3816: A9 0C LDA #$0C C2/3818: 1C A3 11 TRB $11A3 C2/381B: 04 BA TSB $BA C2/381D: A9 40 LDA #$40 C2/381F: 85 BB STA $BB C2/3821: A9 10 LDA #$10 C2/3823: 2C A4 11 BIT $11A4 C2/3826: F0 05 BEQ $382D C2/3828: 9C 1C 34 STZ $341C C2/382B: 80 05 BRA $3832 C2/382D: A9 20 LDA #$20 C2/382F: 0C A4 11 TSB $11A4 C2/3832: A9 02 LDA #$02 C2/3834: 0C A3 11 TSB $11A3 C2/3837: 60 RTS ; [ Air Anchor Effect ] _MoveDeath: C2/3838: BD 05 32 LDA $3205,X C2/383B: 89 04 BIT #$04 C2/383D: D0 0A BNE $3849 ; return if $3205.2 is set (air anchor effect) C2/383F: 09 04 ORA #$04 C2/3841: 9D 05 32 STA $3205,X ; set $3205.2 (disable air anchor effect) C2/3844: A9 40 LDA #$40 C2/3846: 0C A3 11 TSB $11A3 ; attacker dies after attack C2/3849: 60 RTS ; [ ] _DeathErase: C2/384A: BD E9 3D LDA $3DE9,X C2/384D: 09 20 ORA #$20 C2/384F: 9D E9 3D STA $3DE9,X _SetDeath: C2/3852: 20 2F 36 JSR $362F C2/3855: A9 80 LDA #$80 C2/3857: 1D D4 3D ORA $3DD4,X C2/385A: 9D D4 3D STA $3DD4,X C2/385D: 60 RTS ; [ Clear Level/Hit Rate (runic) ] _ItemDamage: C2/385E: 9C AF 11 STZ $11AF C2/3861: 9C AE 11 STZ $11AE C2/3864: 60 RTS ; [ ] _SetupOldTarget: C2/3865: 08 PHP C2/3866: C2 20 REP #$20 C2/3868: AD 14 34 LDA $3414 ; damage modification C2/386B: 30 07 BMI $3874 C2/386D: AD 30 3A LDA $3A30 C2/3870: 85 B8 STA $B8 C2/3872: 80 08 BRA $387C C2/3874: A5 B8 LDA $B8 C2/3876: 8D 30 3A STA $3A30 C2/3879: 0C 4E 3A TSB $3A4E C2/387C: 28 PLP C2/387D: 60 RTS ; ----------------------------------[ Battle: Attack Special Effects ]---------------------------------- ; [ Execute Target Special Effect ] _MagicFunc: C2/387E: DA PHX C2/387F: 5A PHY C2/3880: 08 PHP C2/3881: E2 30 SEP #$30 C2/3883: AE A9 11 LDX $11A9 C2/3886: FC CD 3D JSR ($3DCD,X) C2/3889: 28 PLP C2/388A: 7A PLY C2/388B: FA PLX C2/388C: 60 RTS ; [ Target Special Effect $0D: Scimitar/Instant Kill ] C2/388D: 38 SEC C2/388E: A9 EE LDA #$EE ZantetsuBlade_ATMK: C2/3890: EB XBA C2/3891: B9 A1 3A LDA $3AA1,Y C2/3894: 89 04 BIT #$04 C2/3896: D0 F4 BNE $388C ; branch if $3AA1.2 is set (instant death protection) C2/3898: B0 05 BCS $389F C2/389A: B9 95 3C LDA $3C95,Y C2/389D: 30 0C BMI $38AB C2/389F: 20 5A 4B JSR $4B5A ; random number (0..255) C2/38A2: C9 40 CMP #$40 C2/38A4: B0 E6 BCS $388C ; 3/4 chance to return C2/38A6: 20 B2 23 JSR $23B2 C2/38A9: B0 E1 BCS $388C C2/38AB: AD 70 3A LDA $3A70 C2/38AE: F0 06 BEQ $38B6 C2/38B0: A5 B5 LDA $B5 C2/38B2: C9 16 CMP #$16 C2/38B4: F0 D6 BEQ $388C C2/38B6: B9 18 30 LDA $3018,Y C2/38B9: 04 A4 TSB $A4 C2/38BB: 1C 4E 3A TRB $3A4E C2/38BE: B9 19 30 LDA $3019,Y C2/38C1: 04 A5 TSB $A5 C2/38C3: 1C 4F 3A TRB $3A4F C2/38C6: A9 10 LDA #$10 C2/38C8: 04 A0 TSB $A0 C2/38CA: A9 80 LDA #$80 C2/38CC: 20 32 0E JSR $0E32 C2/38CF: 9C 1D 34 STZ $341D C2/38D2: 9C A6 11 STZ $11A6 C2/38D5: A9 02 LDA #$02 C2/38D7: 85 B5 STA $B5 C2/38D9: EB XBA C2/38DA: 85 B6 STA $B6 C2/38DC: C9 EE CMP #$EE C2/38DE: D0 0C BNE $38EC C2/38E0: C0 08 CPY #$08 C2/38E2: 90 08 BCC $38EC C2/38E4: B9 E9 3D LDA $3DE9,Y C2/38E7: 09 20 ORA #$20 C2/38E9: 99 E9 3D STA $3DE9,Y C2/38EC: 20 AD 35 JSR $35AD C2/38EF: 4C DB 63 JMP $63DB ; copy battle script data to buffer ; [ Target Special Effect $04: Man Eater ] C2/38F2: B9 95 3C LDA $3C95,Y C2/38F5: 89 10 BIT #$10 C2/38F7: F0 04 BEQ $38FD ; return if not human C2/38F9: E6 BC INC $BC ; 2x damage multiplier C2/38FB: E6 BC INC $BC C2/38FD: 60 RTS ; [ Target Special Effect $08: Sniper/Hawkeye ] ; 1/2 chance to deal +50% damage or +150% damage vs. flying target (changes command to throw) C2/38FE: 20 53 4B JSR $4B53 ; random number (carry) C2/3901: 90 FA BCC $38FD ; 1/2 chance to return C2/3903: E6 BC INC $BC ; +50% damage C2/3905: B9 F9 3E LDA $3EF9,Y ; return if target does not have float status C2/3908: 10 F3 BPL $38FD C2/390A: A5 B5 LDA $B5 ; return if command is not fight C2/390C: C9 00 CMP #$00 C2/390E: D0 ED BNE $38FD C2/3910: E6 BC INC $BC ; +150% damage C2/3912: E6 BC INC $BC C2/3914: E6 BC INC $BC C2/3916: A9 08 LDA #$08 ; change command to throw C2/3918: 85 B5 STA $B5 C2/391A: A5 B7 LDA $B7 ; C2/391C: 3A DEC C2/391D: 85 B6 STA $B6 C2/391F: 4C BB 35 JMP $35BB ; ; [ Target Special Effect $22: Stone ] C2/3922: A3 05 LDA $05,S C2/3924: AA TAX C2/3925: BD 18 3B LDA $3B18,X C2/3928: D9 18 3B CMP $3B18,Y C2/392B: D0 06 BNE $3933 C2/392D: A9 0D LDA #$0D C2/392F: 65 BC ADC $BC C2/3931: 85 BC STA $BC C2/3933: 60 RTS ; [ Target Special Effect $13: Palidor ] C2/3934: A9 01 LDA #$01 ; flag for character that just jumped - remove all actions from action queue C2/3936: 20 4C 46 JSR $464C ; set character update flag(s) C2/3939: B9 CC 32 LDA $32CC,Y ; old command list pointer C2/393C: 48 PHA C2/393D: 20 54 4E JSR $4E54 ; add command to command list C2/3940: 99 CC 32 STA $32CC,Y ; set new command list pointer C2/3943: A8 TAY C2/3944: 0A ASL C2/3945: AA TAX C2/3946: 68 PLA C2/3947: C9 FF CMP #$FF C2/3949: F0 03 BEQ $394E ; branch if character/monster had no pending actions in the command list C2/394B: 99 84 31 STA $3184,Y ; clear the old command list slot C2/394E: 7B TDC C2/394F: 9D 20 36 STA $3620,X ; clear old command mp cost C2/3952: C2 20 REP #$20 C2/3954: 9D 20 35 STA $3520,X ; clear old command targets C2/3957: A9 16 00 LDA #$0016 ; command $16 (jump) C2/395A: 9D 20 34 STA $3420,X ; set old command/action C2/395D: 60 RTS ; [ Target Special Effect $39: Engulf ] C2/395E: B9 18 30 LDA $3018,Y C2/3961: 0C 8A 3A TSB $3A8A ; set target as engulfed C2/3964: 80 06 BRA $396C ; [ Target Special Effect $33: BabaBreath ] C2/3966: B9 18 30 LDA $3018,Y C2/3969: 0C 88 3A TSB $3A88 ; fall through ; [ Target Special Effect $27/$38/$4B: Escape/Sneeze/Smoke Bomb ] C2/396C: C2 20 REP #$20 C2/396E: B9 18 30 LDA $3018,Y C2/3971: 0C 4C 2F TSB $2F4C C2/3974: 0C 39 3A TSB $3A39 C2/3977: 60 RTS ; [ Target Special Effect $1F: Dischord ] C2/3978: BB TYX C2/3979: FE 18 3B INC $3B18,X C2/397C: 5E 18 3B LSR $3B18,X C2/397F: 60 RTS ; [ Target Special Effect $2B: R. Polarity ] C2/3980: B9 A1 3A LDA $3AA1,Y ; $3AA1.5 toggle target's row C2/3983: 49 20 EOR #$20 C2/3985: 99 A1 3A STA $3AA1,Y C2/3988: 60 RTS ; [ Target Special Effect $26: WallChange ] C2/3989: 7B TDC C2/398A: A9 FF LDA #$FF C2/398C: 20 2A 52 JSR $522A ; pick a random bit set in A C2/398F: 99 E0 3B STA $3BE0,Y C2/3992: 49 FF EOR #$FF C2/3994: 99 CD 3B STA $3BCD,Y C2/3997: 20 2A 52 JSR $522A ; pick a random bit set in A C2/399A: 99 CC 3B STA $3BCC,Y C2/399D: 60 RTS ; [ Target Special Effect $52: Steal ] C2/399E: A3 05 LDA $05,S C2/39A0: AA TAX C2/39A1: A9 01 LDA #$01 C2/39A3: 8D 01 34 STA $3401 C2/39A6: E0 08 CPX #$08 C2/39A8: B0 5F BCS $3A09 C2/39AA: C2 20 REP #$20 C2/39AC: B9 08 33 LDA $3308,Y C2/39AF: 1A INC C2/39B0: E2 21 SEP #$21 C2/39B2: F0 4D BEQ $3A01 C2/39B4: EE 01 34 INC $3401 C2/39B7: BD 18 3B LDA $3B18,X C2/39BA: 69 32 ADC #$32 C2/39BC: B0 1A BCS $39D8 C2/39BE: F9 18 3B SBC $3B18,Y C2/39C1: 90 3E BCC $3A01 C2/39C3: 30 13 BMI $39D8 C2/39C5: 85 EE STA $EE C2/39C7: BD 45 3C LDA $3C45,X C2/39CA: 4A LSR C2/39CB: 90 02 BCC $39CF C2/39CD: 06 EE ASL $EE C2/39CF: A9 64 LDA #$64 C2/39D1: 20 65 4B JSR $4B65 ; random number (0..99) C2/39D4: C5 EE CMP $EE C2/39D6: B0 29 BCS $3A01 C2/39D8: 5A PHY C2/39D9: 20 5A 4B JSR $4B5A ; random number (0..255) C2/39DC: C9 20 CMP #$20 C2/39DE: 90 01 BCC $39E1 C2/39E0: C8 INY C2/39E1: B9 08 33 LDA $3308,Y C2/39E4: 7A PLY C2/39E5: C9 FF CMP #$FF C2/39E7: F0 18 BEQ $3A01 C2/39E9: 8D 35 2F STA $2F35 C2/39EC: 9D F4 32 STA $32F4,X C2/39EF: BD 18 30 LDA $3018,X C2/39F2: 0C 8C 3A TSB $3A8C C2/39F5: A9 FF LDA #$FF C2/39F7: 99 08 33 STA $3308,Y C2/39FA: 99 09 33 STA $3309,Y C2/39FD: EE 01 34 INC $3401 C2/3A00: 60 RTS C2/3A01: E2 20 SEP #$20 C2/3A03: A9 00 LDA #$00 C2/3A05: 99 48 3D STA $3D48,Y C2/3A08: 60 RTS C2/3A09: 9C 3A 2F STZ $2F3A C2/3A0C: EE 01 34 INC $3401 C2/3A0F: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3A12: C9 C0 CMP #$C0 C2/3A14: B0 EB BCS $3A01 C2/3A16: CE 01 34 DEC $3401 C2/3A19: BD 18 3B LDA $3B18,X C2/3A1C: EB XBA C2/3A1D: A9 14 LDA #$14 C2/3A1F: C2 20 REP #$20 C2/3A21: 20 B6 37 JSR $37B6 C2/3A24: F0 DB BEQ $3A01 C2/3A26: 8D 38 2F STA $2F38 C2/3A29: 18 CLC C2/3A2A: 7D 98 3D ADC $3D98,X C2/3A2D: 90 02 BCC $3A31 C2/3A2F: 7B TDC C2/3A30: 3A DEC C2/3A31: 9D 98 3D STA $3D98,X C2/3A34: E2 20 SEP #$20 C2/3A36: A9 3F LDA #$3F C2/3A38: 8D 01 34 STA $3401 C2/3A3B: 60 RTS ; [ Target Special Effect $12: Metamorph ] C2/3A3C: C0 08 CPY #$08 C2/3A3E: 90 4A BCC $3A8A C2/3A40: B9 94 3C LDA $3C94,Y ; C2/3A43: 48 PHA C2/3A44: 29 1F AND #$1F C2/3A46: 20 53 4B JSR $4B53 ; random number (carry) C2/3A49: 2A ROL C2/3A4A: 20 53 4B JSR $4B53 ; random number (carry) C2/3A4D: 2A ROL C2/3A4E: AA TAX C2/3A4F: BF 40 7F C4 LDA $C47F40,X C2/3A53: 8D 35 2F STA $2F35 C2/3A56: A9 02 LDA #$02 C2/3A58: 8D 28 3A STA $3A28 C2/3A5B: A9 1D LDA #$1D C2/3A5D: 8D 29 3A STA $3A29 C2/3A60: 20 BE 35 JSR $35BE C2/3A63: 20 AD 35 JSR $35AD C2/3A66: 68 PLA C2/3A67: 4A LSR C2/3A68: 4A LSR C2/3A69: 4A LSR C2/3A6A: 4A LSR C2/3A6B: 4A LSR C2/3A6C: AA TAX C2/3A6D: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3A70: DF C5 3D C2 CMP $C23DC5,X ; metamorph probability C2/3A74: B0 14 BCS $3A8A C2/3A76: A3 05 LDA $05,S C2/3A78: AA TAX C2/3A79: AD 35 2F LDA $2F35 C2/3A7C: 9D F4 32 STA $32F4,X C2/3A7F: BD 18 30 LDA $3018,X C2/3A82: 0C 8C 3A TSB $3A8C C2/3A85: A9 80 LDA #$80 C2/3A87: 4C 32 0E JMP $0E32 C2/3A8A: 4C 1B 3B JMP $3B1B ; [ Target Special Effect $56: Debilitator ] C2/3A8D: 7B TDC C2/3A8E: B9 E0 3B LDA $3BE0,Y C2/3A91: 0D C8 3E ORA $3EC8 C2/3A94: 49 FF EOR #$FF C2/3A96: F0 F2 BEQ $3A8A C2/3A98: 20 2A 52 JSR $522A ; pick a random bit set in A C2/3A9B: 48 PHA C2/3A9C: 20 F0 51 JSR $51F0 ; get bit number C2/3A9F: 8A TXA C2/3AA0: 18 CLC C2/3AA1: 69 0B ADC #$0B C2/3AA3: 8D 01 34 STA $3401 C2/3AA6: A3 01 LDA $01,S C2/3AA8: 19 E0 3B ORA $3BE0,Y C2/3AAB: 99 E0 3B STA $3BE0,Y C2/3AAE: 68 PLA C2/3AAF: 49 FF EOR #$FF C2/3AB1: 48 PHA C2/3AB2: 39 E1 3B AND $3BE1,Y C2/3AB5: 99 E1 3B STA $3BE1,Y C2/3AB8: A3 01 LDA $01,S C2/3ABA: EB XBA C2/3ABB: 68 PLA C2/3ABC: C2 20 REP #$20 C2/3ABE: 39 CC 3B AND $3BCC,Y C2/3AC1: 99 CC 3B STA $3BCC,Y C2/3AC4: 60 RTS ; [ Target Special Effect $53: Control ] C2/3AC5: C0 08 CPY #$08 C2/3AC7: 90 4D BCC $3B16 ; miss if target is a character C2/3AC9: B9 80 3C LDA $3C80,Y C2/3ACC: 30 48 BMI $3B16 ; miss if monster can't be controlled C2/3ACE: F4 D2 B0 PEA $B0D2 ; sleep, seizure, berserk, wound, petrify, clear, zombie, hide, morph, rage C2/3AD1: F4 00 29 PEA $2900 C2/3AD4: 20 64 58 JSR $5864 ; check if status set C2/3AD7: 90 3D BCC $3B16 ; miss if set C2/3AD9: B9 B9 32 LDA $32B9,Y C2/3ADC: 10 38 BPL $3B16 ; miss if already controlled C2/3ADE: A3 05 LDA $05,S C2/3AE0: AA TAX C2/3AE1: BD 45 3C LDA $3C45,X ; get coronet effect from attacker's relic effects 2 C2/3AE4: 4A LSR C2/3AE5: 4A LSR C2/3AE6: 4A LSR C2/3AE7: 4A LSR C2/3AE8: 20 92 37 JSR $3792 ; check sketch/control success C2/3AEB: B0 2E BCS $3B1B ; branch if attack failed C2/3AED: 98 TYA C2/3AEE: 9D B8 32 STA $32B8,X ; target you control (attacker) C2/3AF1: 8A TXA C2/3AF2: 99 B9 32 STA $32B9,Y ; target controlling you (target) C2/3AF5: B9 19 30 LDA $3019,Y C2/3AF8: 0C 54 2F TSB $2F54 ; h-flip for targets being controlled (target) C2/3AFB: BD 4D 3E LDA $3E4D,X ; use control battle menu for attacker $3E4D.0 C2/3AFE: 09 01 ORA #$01 C2/3B00: 9D 4D 3E STA $3E4D,X C2/3B03: BD F9 3E LDA $3EF9,X ; set trance status (attacker) C2/3B06: 09 10 ORA #$10 C2/3B08: 9D F9 3E STA $3EF9,X C2/3B0B: B9 A1 3A LDA $3AA1,Y ; set $3AA1.6 pending control action (target) C2/3B0E: 09 40 ORA #$40 C2/3B10: 99 A1 3A STA $3AA1,Y C2/3B13: 4C 2F 37 JMP $372F ; C2/3B16: A9 04 LDA #$04 C2/3B18: 8D 01 34 STA $3401 C2/3B1B: C2 20 REP #$20 ; make attack miss this target C2/3B1D: B9 18 30 LDA $3018,Y C2/3B20: 8D 48 3A STA $3A48 ; missed target due to status C2/3B23: 0C 5A 3A TSB $3A5A ; add missed target C2/3B26: 14 A4 TRB $A4 ; remove from targets hit C2/3B28: 60 RTS ; [ Target Special Effect $55: Sketch ] C2/3B29: C0 08 CPY #$08 C2/3B2B: 90 EE BCC $3B1B C2/3B2D: B9 80 3C LDA $3C80,Y C2/3B30: 89 20 BIT #$20 C2/3B32: D0 30 BNE $3B64 ; branch if target can't be sketched C2/3B34: A3 05 LDA $05,S C2/3B36: AA TAX C2/3B37: BD 45 3C LDA $3C45,X C2/3B3A: 4A LSR C2/3B3B: 4A LSR C2/3B3C: 4A LSR C2/3B3D: 20 92 37 JSR $3792 ; check sketch/control success C2/3B40: B0 D9 BCS $3B1B C2/3B42: 8C 17 34 STY $3417 C2/3B45: 98 TYA C2/3B46: E9 07 SBC #$07 C2/3B48: 4A LSR C2/3B49: 85 B7 STA $B7 C2/3B4B: 20 BB 35 JSR $35BB C2/3B4E: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3B51: C9 40 CMP #$40 C2/3B53: C2 30 REP #$30 C2/3B55: B9 F9 1F LDA $1FF9,Y C2/3B58: 2A ROL C2/3B59: AA TAX C2/3B5A: BF 00 43 CF LDA $CF4300,X C2/3B5E: E2 30 SEP #$30 C2/3B60: 8D 00 34 STA $3400 C2/3B63: 60 RTS C2/3B64: A9 1F LDA #$1F C2/3B66: 8D 01 34 STA $3401 C2/3B69: 80 B0 BRA $3B1B ; [ Target Special Effect $25: Misses Floating Targets ] C2/3B6B: B9 F9 3E LDA $3EF9,Y C2/3B6E: 30 AB BMI $3B1B ; branch if target has float status C2/3B70: 60 RTS ; [ Target Special Effect $54: Leap ] C2/3B71: AD 49 2F LDA $2F49 C2/3B74: 89 08 BIT #$08 C2/3B76: D0 18 BNE $3B90 ; branch if leap is disabled C2/3B78: AD 76 3A LDA $3A76 C2/3B7B: C9 02 CMP #$02 C2/3B7D: 90 11 BCC $3B90 C2/3B7F: A3 05 LDA $05,S C2/3B81: AA TAX C2/3B82: BD E9 3D LDA $3DE9,X C2/3B85: 09 20 ORA #$20 C2/3B87: 9D E9 3D STA $3DE9,X C2/3B8A: A9 04 LDA #$04 ; end of battle special event 2 (gau leaped) C2/3B8C: 8D 6E 3A STA $3A6E C2/3B8F: 60 RTS C2/3B90: A9 05 LDA #$05 C2/3B92: 8D 01 34 STA $3401 C2/3B95: 4C 1B 3B JMP $3B1B ; [ Target Special Effect $50: Possess ] C2/3B98: A3 05 LDA $05,S C2/3B9A: AA TAX C2/3B9B: BD 18 30 LDA $3018,X C2/3B9E: 0C 4C 2F TSB $2F4C C2/3BA1: 0C 88 3A TSB $3A88 C2/3BA4: 20 4A 38 JSR $384A C2/3BA7: DA PHX C2/3BA8: BB TYX C2/3BA9: 20 4A 38 JSR $384A C2/3BAC: 7A PLY C2/3BAD: 4C 1B 36 JMP $361B ; [ Target Special Effect $28: Mind Blast ] C2/3BB0: C2 20 REP #$20 C2/3BB2: 20 FF 44 JSR $44FF C2/3BB5: B9 18 30 LDA $3018,Y C2/3BB8: A2 06 LDX #$06 C2/3BBA: 3C 5C 3A BIT $3A5C,X C2/3BBD: F0 07 BEQ $3BC6 C2/3BBF: 48 PHA C2/3BC0: DA PHX C2/3BC1: 20 D0 3B JSR $3BD0 C2/3BC4: FA PLX C2/3BC5: 68 PLA C2/3BC6: CA DEX C2/3BC7: CA DEX C2/3BC8: 10 F0 BPL $3BBA C2/3BCA: 60 RTS ; [ Target Special Effect $3B: Evil Toot ] C2/3BCB: C2 20 REP #$20 C2/3BCD: 20 FF 44 JSR $44FF Siren_ATMK: C2/3BD0: AD AA 11 LDA $11AA C2/3BD3: 20 0E 52 JSR $520E ; X = number of bits set in A C2/3BD6: 86 EE STX $EE C2/3BD8: AD AC 11 LDA $11AC C2/3BDB: 20 0E 52 JSR $520E ; X = number of bits set in A C2/3BDE: E2 20 SEP #$20 C2/3BE0: 8A TXA C2/3BE1: 18 CLC C2/3BE2: 65 EE ADC $EE C2/3BE4: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/3BE7: C5 EE CMP $EE C2/3BE9: C2 20 REP #$20 C2/3BEB: 08 PHP C2/3BEC: AD AA 11 LDA $11AA C2/3BEF: 90 03 BCC $3BF4 C2/3BF1: AD AC 11 LDA $11AC C2/3BF4: 20 2A 52 JSR $522A ; pick a random bit set in A C2/3BF7: 28 PLP C2/3BF8: B0 03 BCS $3BFD C2/3BFA: 4C 32 0E JMP $0E32 _OrDS1: C2/3BFD: 19 E8 3D ORA $3DE8,Y C2/3C00: 99 E8 3D STA $3DE8,Y C2/3C03: 60 RTS ; [ Target Special Effect $21: Rippler ] C2/3C04: A3 05 LDA $05,S C2/3C06: AA TAX C2/3C07: C2 20 REP #$20 C2/3C09: BD E4 3E LDA $3EE4,X C2/3C0C: 39 E4 3E AND $3EE4,Y C2/3C0F: 49 FF FF EOR #$FFFF C2/3C12: 85 EE STA $EE C2/3C14: BD E4 3E LDA $3EE4,X C2/3C17: 25 EE AND $EE C2/3C19: 99 D4 3D STA $3DD4,Y C2/3C1C: 9D FC 3D STA $3DFC,X C2/3C1F: B9 E4 3E LDA $3EE4,Y C2/3C22: 25 EE AND $EE C2/3C24: 9D D4 3D STA $3DD4,X C2/3C27: 99 FC 3D STA $3DFC,Y C2/3C2A: BD F8 3E LDA $3EF8,X C2/3C2D: 39 F8 3E AND $3EF8,Y C2/3C30: 49 FF FF EOR #$FFFF C2/3C33: 85 EE STA $EE C2/3C35: BD F8 3E LDA $3EF8,X C2/3C38: 25 EE AND $EE C2/3C3A: 99 E8 3D STA $3DE8,Y C2/3C3D: 9D 10 3E STA $3E10,X C2/3C40: B9 F8 3E LDA $3EF8,Y C2/3C43: 25 EE AND $EE C2/3C45: 9D E8 3D STA $3DE8,X C2/3C48: 99 10 3E STA $3E10,Y C2/3C4B: 60 RTS ; [ Target Special Effect $19: Exploder ] C2/3C4C: A3 05 LDA $05,S C2/3C4E: AA TAX C2/3C4F: 86 EE STX $EE C2/3C51: C4 EE CPY $EE C2/3C53: D0 05 BNE $3C5A C2/3C55: BD 18 30 LDA $3018,X C2/3C58: 14 A4 TRB $A4 C2/3C5A: 60 RTS ; [ Target Special Effect $10: Scan ] C2/3C5B: B9 80 3C LDA $3C80,Y C2/3C5E: 89 10 BIT #$10 C2/3C60: D0 06 BNE $3C68 ; branch if target can't be scanned C2/3C62: BB TYX C2/3C63: A9 27 LDA #$27 ; command $27 (display scan info) C2/3C65: 4C 91 4E JMP $4E91 ; create immediate action C2/3C68: A9 2C LDA #$2C C2/3C6A: 8D 01 34 STA $3401 C2/3C6D: 60 RTS ; [ Target Special Effect $30: Suplex ] C2/3C6E: B9 80 3C LDA $3C80,Y C2/3C71: 89 04 BIT #$04 C2/3C73: F0 E5 BEQ $3C5A ; branch if not immune to suplex C2/3C75: 4C 1B 3B JMP $3B1B ; [ Target Special Effect $57: Air Anchor ] C2/3C78: B9 A1 3A LDA $3AA1,Y C2/3C7B: 89 04 BIT #$04 C2/3C7D: D0 F6 BNE $3C75 ; branch if $3AA1.2 set (instant death protection) C2/3C7F: A9 13 LDA #$13 ; battle message $13: "Move, and you're dust!" C2/3C81: 8D 01 34 STA $3401 C2/3C84: B9 05 32 LDA $3205,Y ; clear air anchor effect ($3205.2) C2/3C87: 29 FB AND #$FB C2/3C89: 99 05 32 STA $3205,Y ; fall through ; [ Target Special Effect $23: Disable Counterattack ] C2/3C8C: 9C 1A 34 STZ $341A ; disable counterattack C2/3C8F: 60 RTS ; [ Target Special Effect $1C: Reflect??? ] C2/3C90: 60 RTS ; [ Target Special Effect $34: Charm ] C2/3C91: A3 05 LDA $05,S ; attacker C2/3C93: AA TAX C2/3C94: BD 94 33 LDA $3394,X ; charm target C2/3C97: 10 DC BPL $3C75 ; return if attacker already has a charm target C2/3C99: 98 TYA C2/3C9A: 9D 94 33 STA $3394,X ; set attacker's charm target C2/3C9D: 8A TXA C2/3C9E: 99 95 33 STA $3395,Y ; set target's charm attacker C2/3CA1: 60 RTS ; [ Target Special Effect $17: Tapir ] C2/3CA2: B9 E5 3E LDA $3EE5,Y C2/3CA5: 10 CE BPL $3C75 C2/3CA7: C2 20 REP #$20 C2/3CA9: B9 1C 3C LDA $3C1C,Y C2/3CAC: 99 F4 3B STA $3BF4,Y C2/3CAF: C2 20 REP #$20 C2/3CB1: B9 30 3C LDA $3C30,Y C2/3CB4: 99 08 3C STA $3C08,Y C2/3CB7: 60 RTS ; [ Target Special Effect $20: Pep Up ] C2/3CB8: A3 05 LDA $05,S C2/3CBA: AA TAX C2/3CBB: 20 4A 38 JSR $384A C2/3CBE: C2 20 REP #$20 C2/3CC0: BD 18 30 LDA $3018,X C2/3CC3: 0C 4C 2F TSB $2F4C C2/3CC6: 9E F4 3B STZ $3BF4,X C2/3CC9: 9E 08 3C STZ $3C08,X C2/3CCC: 80 E1 BRA $3CAF ; [ Target Special Effect $2E: Seize ] C2/3CCE: A3 05 LDA $05,S ; attacker C2/3CD0: AA TAX C2/3CD1: BD 58 33 LDA $3358,X ; seize target C2/3CD4: 10 9F BPL $3C75 ; return if attacker already has a seize target C2/3CD6: C0 08 CPY #$08 C2/3CD8: B0 9B BCS $3C75 ; return if target is a monster C2/3CDA: 98 TYA C2/3CDB: 9D 58 33 STA $3358,X ; set attacker's seize target C2/3CDE: 8A TXA C2/3CDF: 99 59 33 STA $3359,Y ; set target's seize attacker C2/3CE2: BD AC 3D LDA $3DAC,X ; set MSB of attacker's character/monster variable C2/3CE5: 09 80 ORA #$80 C2/3CE7: 9D AC 3D STA $3DAC,X C2/3CEA: B9 18 30 LDA $3018,Y ; target's character/monster mask C2/3CED: 1C 03 34 TRB $3403 ; set target that is seized C2/3CF0: B9 A0 3A LDA $3AA0,Y ; clear $3AA0.7 (target's battle menu can't open) C2/3CF3: 29 7F AND #$7F C2/3CF5: 99 A0 3A STA $3AA0,Y C2/3CF8: A9 40 LDA #$40 ; remove all advance wait actions (set $3204.6) C2/3CFA: 4C 4C 46 JMP $464C ; set character update flag(s) ; [ Target Special Effect $44: Discard ] C2/3CFD: A3 05 LDA $05,S ; attacker C2/3CFF: AA TAX C2/3D00: BD AC 3D LDA $3DAC,X ; clear msb of attacker's character/monster variable C2/3D03: 29 7F AND #$7F C2/3D05: 9D AC 3D STA $3DAC,X C2/3D08: A9 FF LDA #$FF C2/3D0A: 9D 58 33 STA $3358,X ; invalidate attacker's seize target C2/3D0D: 99 59 33 STA $3359,Y ; invalidate target's seize attacker C2/3D10: B9 18 30 LDA $3018,Y C2/3D13: 0C 03 34 TSB $3403 ; clear target that is seized C2/3D16: 60 RTS ; [ Target Special Effect $4C: Elixir/Megalixir ] C2/3D17: A9 80 LDA #$80 ; update enabled spells/espers C2/3D19: 20 4C 46 JSR $464C ; set character update flag(s) C2/3D1C: 80 91 BRA $3CAF ; [ Target Special Effect $37: Overcast ] C2/3D1E: B9 4D 3E LDA $3E4D,Y ; set overcast status ($3E4D.1) C2/3D21: 09 02 ORA #$02 C2/3D23: 99 4D 3E STA $3E4D,Y C2/3D26: 60 RTS ; [ Target Special Effect $3A: Zinger ] C2/3D27: A3 05 LDA $05,S ; attacker C2/3D29: AA TAX C2/3D2A: 8E F8 33 STX $33F8 ; zinger attacker C2/3D2D: 8C F9 33 STY $33F9 ; zinger target C2/3D30: BD 19 30 LDA $3019,X C2/3D33: 0C 4D 2F TSB $2F4D ; attacker can't be targetted C2/3D36: 60 RTS ; [ Target Special Effect $2D: Love Token ] C2/3D37: A3 05 LDA $05,S ; attacker C2/3D39: AA TAX C2/3D3A: 98 TYA C2/3D3B: 9D 6C 33 STA $336C,X ; love token target C2/3D3E: 8A TXA C2/3D3F: 99 6D 33 STA $336D,Y ; love token attacker C2/3D42: 60 RTS ; [ Target Special Effect $03: Instant Kill (with "X") ] ; striker, wing edge, trump C2/3D43: 18 CLC C2/3D44: A9 7E LDA #$7E C2/3D46: 20 90 38 JSR $3890 ; instant kill ; fall through ; [ Target Special Effect $35: Doom ] C2/3D49: B9 95 3C LDA $3C95,Y C2/3D4C: 10 14 BPL $3D62 C2/3D4E: C0 08 CPY #$08 C2/3D50: B0 11 BCS $3D63 C2/3D52: B9 D4 3D LDA $3DD4,Y C2/3D55: 29 7F AND #$7F C2/3D57: 99 D4 3D STA $3DD4,Y C2/3D5A: C2 20 REP #$20 C2/3D5C: B9 1C 3C LDA $3C1C,Y C2/3D5F: 99 F4 3B STA $3BF4,Y C2/3D62: 60 RTS C2/3D63: 7B TDC C2/3D64: B9 E9 3D LDA $3DE9,Y C2/3D67: 09 20 ORA #$20 C2/3D69: 99 E9 3D STA $3DE9,Y C2/3D6C: B9 19 30 LDA $3019,Y C2/3D6F: EB XBA C2/3D70: C2 20 REP #$20 C2/3D72: 85 B8 STA $B8 C2/3D74: A2 0A LDX #$0A ; monster entry/exit effects $0A (fade in/out, materialize) C2/3D76: A9 24 00 LDA #$0024 ; command $24 (monster entrance/exit) C2/3D79: 4C 91 4E JMP $4E91 ; create immediate action ; [ Target Special Effect $3E: Phantasm ] C2/3D7C: B9 4D 3E LDA $3E4D,Y C2/3D7F: 09 40 ORA #$40 C2/3D81: 99 4D 3E STA $3E4D,Y ; set phantasm status ($3E4D.6) C2/3D84: 60 RTS ; [ Target Special Effect $3F: Stunner ] C2/3D85: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3D88: CD A8 11 CMP $11A8 C2/3D8B: 90 1A BCC $3DA7 C2/3D8D: C2 20 REP #$20 C2/3D8F: AD AA 11 LDA $11AA C2/3D92: 49 FF FF EOR #$FFFF C2/3D95: 39 D4 3D AND $3DD4,Y C2/3D98: 99 D4 3D STA $3DD4,Y C2/3D9B: AD AC 11 LDA $11AC C2/3D9E: 49 FF FF EOR #$FFFF C2/3DA1: 39 E8 3D AND $3DE8,Y C2/3DA4: 99 E8 3D STA $3DE8,Y C2/3DA7: 60 RTS ; [ Target Special Effect $2F: Targetting ] C2/3DA8: A3 05 LDA $05,S C2/3DAA: AA TAX C2/3DAB: 98 TYA C2/3DAC: 9D F5 32 STA $32F5,X ; set "Targetting" target C2/3DAF: 60 RTS ; [ Target Special Effect $40: Fallen One ] C2/3DB0: C2 20 REP #$20 C2/3DB2: 7B TDC C2/3DB3: 1A INC C2/3DB4: 99 F4 3B STA $3BF4,Y ; set hp to 1 C2/3DB7: 60 RTS ; [ Target Special Effect $4A: Super Ball ] C2/3DB8: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3DBB: 29 07 AND #$07 ; (1..8) C2/3DBD: 1A INC C2/3DBE: 8D B1 11 STA $11B1 ; item damage ??? C2/3DC1: 9C B0 11 STZ $11B0 C2/3DC4: 60 RTS ; metamorph probabilities C2/3DC5: .DB $FF, $C0, $80, $40, $20, $10, $08, $00 ; target special effect jump table MagicFunctable: C2/3DCD: .DW $388C, $388C, $388C, $3D43, $38F2, $388C, $388C, $388C C2/3DDD: .DW $38FE, $388C, $388C, $388C, $388C, $388D, $388C, $388C C2/3DED: .DW $3C5B, $388C, $3A3C, $3934, $388C, $388C, $388C, $3CA2 C2/3DFD: .DW $388C, $3C4C, $388C, $388C, $3C90, $388C, $388C, $3978 C2/3E0D: .DW $3CB8, $3C04, $3922, $3C8C, $388C, $3B6B, $3989, $396C C2/3E1D: .DW $3BB0, $388C, $388C, $3980, $388C, $3D37, $3CCE, $3DA8 C2/3E2D: .DW $3C6E, $388C, $388C, $3966, $3C91, $3D49, $388C, $3D1E C2/3E3D: .DW $396C, $395E, $3D27, $3BCB, $388C, $388C, $3D7C, $3D85 C2/3E4D: .DW $3DB0, $388C, $388C, $388C, $3CFD, $388C, $388C, $388C C2/3E5D: .DW $388C, $388C, $3DB8, $396C, $3D17, $388C, $388C, $388C C2/3E6D: .DW $3B98, $388C, $399E, $3AC5, $3B71, $3B29, $3A8D, $3C78 ; [ Execute Attacker Special Effect ] _MagicFunc3: C2/3E7D: DA PHX C2/3E7E: 08 PHP C2/3E7F: E2 30 SEP #$30 C2/3E81: 9B TXY C2/3E82: AE A9 11 LDX $11A9 C2/3E85: FC E1 42 JSR ($42E1,X) C2/3E88: 28 PLP C2/3E89: FA PLX C2/3E8A: 60 RTS ; [ Attacker Special Effect $01: ThiefKnife ] C2/3E8B: 20 53 4B JSR $4B53 ; random number (carry) C2/3E8E: B0 0F BCS $3E9F C2/3E90: A9 A4 LDA #$A4 ; special effect $52 (steal) C2/3E92: 8D A9 11 STA $11A9 C2/3E95: A5 B5 LDA $B5 C2/3E97: C9 00 CMP #$00 C2/3E99: D0 04 BNE $3E9F C2/3E9B: A9 06 LDA #$06 C2/3E9D: 85 B5 STA $B5 C2/3E9F: 60 RTS ; [ Attacker Special Effect $1E: Step Mine ] C2/3EA0: 9C 14 34 STZ $3414 ; disable damage modification C2/3EA3: C2 20 REP #$20 C2/3EA5: 7B TDC C2/3EA6: 3A DEC C2/3EA7: 8D B0 11 STA $11B0 C2/3EAA: AD 67 18 LDA $1867 C2/3EAD: AE A6 11 LDX $11A6 C2/3EB0: 20 92 47 JSR $4792 ; divide +A / X C2/3EB3: E2 20 SEP #$20 C2/3EB5: EB XBA C2/3EB6: D0 11 BNE $3EC9 C2/3EB8: 8A TXA C2/3EB9: EB XBA C2/3EBA: 8D B1 11 STA $11B1 C2/3EBD: AD 66 18 LDA $1866 C2/3EC0: AE A6 11 LDX $11A6 C2/3EC3: 20 92 47 JSR $4792 ; divide +A / X C2/3EC6: 8D B0 11 STA $11B0 C2/3EC9: 60 RTS ; [ Attacker Special Effect $0E: Ogre Nix ] C2/3ECA: A5 B1 LDA $B1 ; counterattack flag C2/3ECC: 4A LSR C2/3ECD: B0 53 BCS $3F22 ; branch if a counterattack C2/3ECF: B9 A0 3A LDA $3AA0,Y C2/3ED2: 89 04 BIT #$04 C2/3ED4: D0 4C BNE $3F22 ; branch if $3AA0.2 is set (ogre nix can't be broken) C2/3ED6: B9 F5 3B LDA $3BF5,Y C2/3ED9: EB XBA C2/3EDA: B9 F4 3B LDA $3BF4,Y C2/3EDD: A2 0A LDX #$0A C2/3EDF: 20 92 47 JSR $4792 ; divide +A / X C2/3EE2: E8 INX C2/3EE3: 8A TXA C2/3EE4: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/3EE7: 3A DEC C2/3EE8: 10 38 BPL $3F22 C2/3EEA: 98 TYA C2/3EEB: 4A LSR C2/3EEC: AA TAX C2/3EED: FE 30 2F INC $2F30,X C2/3EF0: EB XBA C2/3EF1: A9 05 LDA #$05 C2/3EF3: 20 81 47 JSR $4781 ; multiply A * B C2/3EF6: 85 EE STA $EE C2/3EF8: BB TYX C2/3EF9: AD 70 3A LDA $3A70 C2/3EFC: 4A LSR C2/3EFD: B0 07 BCS $3F06 C2/3EFF: E8 INX C2/3F00: A5 EE LDA $EE C2/3F02: 69 14 ADC #$14 C2/3F04: 85 EE STA $EE C2/3F06: 9E 68 3B STZ $3B68,X C2/3F09: A6 EE LDX $EE C2/3F0B: BD 86 2B LDA $2B86,X C2/3F0E: C9 17 CMP #$17 C2/3F10: D0 10 BNE $3F22 C2/3F12: A9 FF LDA #$FF C2/3F14: 9D 86 2B STA $2B86,X C2/3F17: 9D 87 2B STA $2B87,X C2/3F1A: 9E 89 2B STZ $2B89,X C2/3F1D: A9 44 LDA #$44 ; battle message $44: "Ogre Nix was broken!" C2/3F1F: 8D 01 34 STA $3401 ; fall through ; [ Attacker Special Effect $07: Use MP for Critical ] ; rune edge, illumina, ragnarok, punisher C2/3F22: A9 0C LDA #$0C ; use 12 MP C2/3F24: 85 EE STA $EE C2/3F26: A5 B2 LDA $B2 C2/3F28: 89 02 BIT #$02 C2/3F2A: D0 23 BNE $3F4F C2/3F2C: AD C9 3E LDA $3EC9 C2/3F2F: F0 1E BEQ $3F4F ; return if there are no targets C2/3F31: 7B TDC C2/3F32: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3F35: 29 07 AND #$07 C2/3F37: 18 CLC C2/3F38: 65 EE ADC $EE C2/3F3A: C2 20 REP #$20 C2/3F3C: 85 EE STA $EE C2/3F3E: B9 08 3C LDA $3C08,Y C2/3F41: C5 EE CMP $EE C2/3F43: 90 0A BCC $3F4F C2/3F45: E5 EE SBC $EE C2/3F47: 99 08 3C STA $3C08,Y C2/3F4A: A9 00 02 LDA #$0200 C2/3F4D: 14 B2 TRB $B2 C2/3F4F: 60 RTS ; [ Attacker Special Effect $0F: Use More MP for Critical (unused) ] C2/3F50: A9 1C LDA #$1C ; use 26 MP C2/3F52: 80 D0 BRA $3F24 ; [ Attacker Special Effect $1B: Pearl Wind ] C2/3F54: A9 60 LDA #$60 C2/3F56: 0C A2 11 TSB $11A2 C2/3F59: 9C 14 34 STZ $3414 ; disable damage modification C2/3F5C: C2 20 REP #$20 C2/3F5E: B9 F4 3B LDA $3BF4,Y C2/3F61: 8D B0 11 STA $11B0 C2/3F64: 60 RTS ; [ Attacker Special Effect $10: Scan ] C2/3F65: C2 20 REP #$20 C2/3F67: B9 F4 3B LDA $3BF4,Y C2/3F6A: 8D 36 3A STA $3A36 C2/3F6D: 60 RTS ; [ Attacker Special Effect $06: Soul Sabre ] C2/3F6E: A9 80 LDA #$80 C2/3F70: 0C A3 11 TSB $11A3 ; fall through ; [ Attacker Special Effect $05: Drainer ] C2/3F73: A9 08 LDA #$08 C2/3F75: 0C A2 11 TSB $11A2 C2/3F78: A9 02 LDA #$02 C2/3F7A: 0C A4 11 TSB $11A4 ; drain effect C2/3F7D: 60 RTS ; [ Attacker Special Effect $0C: Heal Rod ] C2/3F7E: A9 20 LDA #$20 C2/3F80: 0C A2 11 TSB $11A2 C2/3F83: A9 01 LDA #$01 C2/3F85: 0C A4 11 TSB $11A4 C2/3F88: 60 RTS ; [ Attacker Special Effect $0A: ValiantKnife ] ; increase damage by (max HP - current HP) C2/3F89: A9 20 LDA #$20 C2/3F8B: 0C A2 11 TSB $11A2 C2/3F8E: C2 20 REP #$20 C2/3F90: 38 SEC C2/3F91: B9 1C 3C LDA $3C1C,Y C2/3F94: F9 F4 3B SBC $3BF4,Y C2/3F97: 18 CLC C2/3F98: 6D B0 11 ADC $11B0 C2/3F9B: 8D B0 11 STA $11B0 C2/3F9E: 60 RTS ; [ Attacker Special Effect $0B: Tempest ] C2/3F9F: 20 5A 4B JSR $4B5A ; random number (0..255) C2/3FA2: C9 80 CMP #$80 C2/3FA4: B0 10 BCS $3FB6 ; 50% chance to return C2/3FA6: 9C A6 11 STZ $11A6 ; clear attack power C2/3FA9: A9 65 LDA #$65 ; cast Wind Slash C2/3FAB: 80 03 BRA $3FB0 ; [ Attacker Special Effect $49: Magicite ] C2/3FAD: 20 DC 37 JSR $37DC ; choose a random esper C2/3FB0: 8D 00 34 STA $3400 ; current spell C2/3FB3: EE 70 3A INC $3A70 ; increment number of attacks C2/3FB6: 60 RTS ; [ Attacker Special Effect $51: GP Rain ] C2/3FB7: B9 18 3B LDA $3B18,Y C2/3FBA: EB XBA C2/3FBB: A9 1E LDA #$1E C2/3FBD: 20 81 47 JSR $4781 ; multiply A * B C2/3FC0: C2 20 REP #$20 C2/3FC2: C0 08 CPY #$08 C2/3FC4: B0 0D BCS $3FD3 C2/3FC6: 20 B6 37 JSR $37B6 C2/3FC9: D0 1E BNE $3FE9 C2/3FCB: 64 A4 STZ $A4 C2/3FCD: A2 08 LDX #$08 C2/3FCF: 8E 01 34 STX $3401 C2/3FD2: 60 RTS C2/3FD3: 85 EE STA $EE C2/3FD5: B9 98 3D LDA $3D98,Y C2/3FD8: F0 F1 BEQ $3FCB C2/3FDA: E5 EE SBC $EE C2/3FDC: B0 06 BCS $3FE4 C2/3FDE: B9 98 3D LDA $3D98,Y C2/3FE1: 85 EE STA $EE C2/3FE3: 7B TDC C2/3FE4: 99 98 3D STA $3D98,Y C2/3FE7: A5 EE LDA $EE C2/3FE9: A2 02 LDX #$02 C2/3FEB: 86 E8 STX $E8 C2/3FED: 20 B7 47 JSR $47B7 ; +A *= $E8 / 256 C2/3FF0: A5 E8 LDA $E8 C2/3FF2: AE C9 3E LDX $3EC9 ; number of targets C2/3FF5: 20 92 47 JSR $4792 ; divide +A / X C2/3FF8: 8D B0 11 STA $11B0 ; damage C2/3FFB: 60 RTS ; [ Attacker Special Effect $19: Exploder ] C2/3FFC: BB TYX C2/3FFD: 64 BC STZ $BC C2/3FFF: A9 10 LDA #$10 C2/4001: 04 B0 TSB $B0 C2/4003: 9C 14 34 STZ $3414 ; disable damage modification C2/4006: C2 20 REP #$20 C2/4008: A5 A4 LDA $A4 C2/400A: 48 PHA C2/400B: BD 18 30 LDA $3018,X C2/400E: 85 B8 STA $B8 C2/4010: 20 C2 57 JSR $57C2 ; update battle script data C2/4013: 20 DB 63 JSR $63DB ; copy battle script data to buffer C2/4016: A3 01 LDA $01,S C2/4018: 85 B8 STA $B8 C2/401A: 20 C2 57 JSR $57C2 ; update battle script data C2/401D: 68 PLA C2/401E: 1D 18 30 ORA $3018,X C2/4021: 85 A4 STA $A4 C2/4023: BD F4 3B LDA $3BF4,X C2/4026: 8D B0 11 STA $11B0 C2/4029: 4C AD 35 JMP $35AD ; [ Attacker Special Effect $4A: Super Ball ] C2/402C: A9 7D LDA #$7D C2/402E: 85 B6 STA $B6 C2/4030: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4033: 29 03 AND #$03 C2/4035: 80 02 BRA $4039 ; [ Attacker Special Effect $2C: Launcher ] C2/4037: A9 07 LDA #$07 C2/4039: 8D 05 34 STA $3405 C2/403C: C2 20 REP #$20 C2/403E: B9 18 30 LDA $3018,Y C2/4041: 85 A6 STA $A6 C2/4043: 60 RTS ; [ Attacker Special Effect $02: Atma Weapon ] C2/4044: A9 20 LDA #$20 C2/4046: 0C A2 11 TSB $11A2 ; ignore target's defense C2/4049: A9 02 LDA #$02 C2/404B: 04 B2 TSB $B2 ; no critical C2/404D: 60 RTS ; [ Attacker Special Effect $18/$4D: Warp/Warp Stone ] C2/404E: A5 B1 LDA $B1 C2/4050: 89 04 BIT #$04 C2/4052: D0 06 BNE $405A ; branch if can't run away C2/4054: A9 02 LDA #$02 ; end of battle special event 1 (ran out of time before emperor's banquet) C2/4056: 8D 6E 3A STA $3A6E C2/4059: 60 RTS C2/405A: A9 0A LDA #$0A ; battle message $0A "Can't escape!!" C2/405C: 8D 01 34 STA $3401 C2/405F: 80 3B BRA $409C ; [ Attacker Special Effect $33: BabaBreath ] C2/4061: 64 EE STZ $EE C2/4063: A2 06 LDX #$06 C2/4065: BD A0 3A LDA $3AA0,X C2/4068: 4A LSR C2/4069: 90 11 BCC $407C ; branch if $3AA0.0 is clear C2/406B: BD E4 3E LDA $3EE4,X C2/406E: 89 C2 BIT #$C2 C2/4070: F0 0A BEQ $407C C2/4072: BD 18 30 LDA $3018,X C2/4075: 2C 2C 3F BIT $3F2C C2/4078: D0 02 BNE $407C C2/407A: 85 EE STA $EE C2/407C: CA DEX C2/407D: CA DEX C2/407E: 10 E5 BPL $4065 C2/4080: A5 EE LDA $EE C2/4082: D0 09 BNE $408D C2/4084: AD 76 3A LDA $3A76 C2/4087: C9 02 CMP #$02 C2/4089: B0 2F BCS $40BA C2/408B: 80 0F BRA $409C C2/408D: 85 B8 STA $B8 C2/408F: 64 B9 STZ $B9 C2/4091: BB TYX C2/4092: 4C C2 57 JMP $57C2 ; update battle script data ; [ Attacker Special Effect $50: Possess ] C2/4095: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4098: C9 96 CMP #$96 C2/409A: 90 1E BCC $40BA ; ~60% chance to return (40% chance to miss) Miss_ATMK: C2/409C: 64 A4 STZ $A4 ; clear targets hit C2/409E: 64 A5 STZ $A5 C2/40A0: 60 RTS ; [ Attacker Special Effect $1D: L? Pearl ] ; hits targets with level divisble by last digit of gp C2/40A1: AD 62 18 LDA $1862 ; gp C2/40A4: EB XBA C2/40A5: AD 61 18 LDA $1861 C2/40A8: A2 0A LDX #$0A ; divide by 10 C2/40AA: 20 92 47 JSR $4792 ; divide +A / X C2/40AD: 8A TXA C2/40AE: EB XBA C2/40AF: AD 60 18 LDA $1860 C2/40B2: A2 0A LDX #$0A C2/40B4: 20 92 47 JSR $4792 ; divide +A / X C2/40B7: 8E A8 11 STX $11A8 ; success rate C2/40BA: 60 RTS ; [ Attacker Special Effect $27: Escape ] C2/40BB: C0 08 CPY #$08 C2/40BD: B0 FB BCS $40BA ; return if attacker is a monster C2/40BF: A9 22 LDA #$22 C2/40C1: 85 B5 STA $B5 ; command $22 (Enemy Roulette ???) C2/40C3: A9 10 LDA #$10 C2/40C5: 04 A0 TSB $A0 ; disable pre-attack swirly animation C2/40C7: 60 RTS ; [ Attacker Special Effect $4B: Smoke Bomb ] ; characters run away C2/40C8: A9 04 LDA #$04 C2/40CA: 24 B1 BIT $B1 C2/40CC: F0 EC BEQ $40BA ; return if party can run away C2/40CE: 20 9C 40 JSR $409C ; clear targets hit C2/40D1: 9C A9 11 STZ $11A9 ; disable attack special effect C2/40D4: A9 09 LDA #$09 ; battle message $09 "Can't run away!!" C2/40D6: 8D 01 34 STA $3401 C2/40D9: 60 RTS ; [ Attacker Special Effect $31: ForceField ] C2/40DA: 7B TDC C2/40DB: A9 FF LDA #$FF C2/40DD: 4D C8 3E EOR $3EC8 ; elements nullified by forcefield C2/40E0: F0 BA BEQ $409C C2/40E2: 20 2A 52 JSR $522A ; pick a random bit set in A C2/40E5: 0C C8 3E TSB $3EC8 C2/40E8: 20 F0 51 JSR $51F0 ; get bit number C2/40EB: 8A TXA C2/40EC: 18 CLC C2/40ED: 69 37 ADC #$37 ; battle message ($37..$3E) "...-element ineffectual" C2/40EF: 80 E5 BRA $40D6 ; [ Attacker Special Effect $32: Quadra Slam/Slice ] C2/40F1: A9 03 LDA #$03 C2/40F3: 8D 70 3A STA $3A70 ; 4 attacks C2/40F6: A9 40 LDA #$40 C2/40F8: 04 BA TSB $BA ; random target C2/40FA: 9C A9 11 STZ $11A9 ; disable special effect C2/40FD: 60 RTS ; [ Attacker Special Effect $1A: Blow Fish ] C2/40FE: A9 60 LDA #$60 ; C2/4100: 0C A2 11 TSB $11A2 C2/4103: 9C 14 34 STZ $3414 ; disable damage modification C2/4106: C2 20 REP #$20 C2/4108: A9 E8 03 LDA #$03E8 ; set damage to 1000 C2/410B: 8D B0 11 STA $11B0 C2/410E: 60 RTS ; [ Attacker Special Effect $2A: Flare Star ] C2/410F: 9C 14 34 STZ $3414 ; disable damage modification C2/4112: C2 20 REP #$20 C2/4114: A5 A2 LDA $A2 C2/4116: 20 2A 52 JSR $522A ; pick a random bit set in A C2/4119: 20 F9 51 JSR $51F9 ; get the first valid target in +A C2/411C: A5 A2 LDA $A2 C2/411E: 20 0E 52 JSR $520E ; X = number of bits set in A C2/4121: E2 20 SEP #$20 C2/4123: B9 18 3B LDA $3B18,Y C2/4126: EB XBA C2/4127: AD A6 11 LDA $11A6 C2/412A: 20 81 47 JSR $4781 ; multiply A * B C2/412D: 20 92 47 JSR $4792 ; divide +A / X C2/4130: C2 20 REP #$20 C2/4132: 8D B0 11 STA $11B0 C2/4135: 60 RTS ; [ Attacker Special Effect $4C: Elixir/Megalixir ] C2/4136: A9 80 LDA #$80 C2/4138: 1C A3 11 TRB $11A3 C2/413B: 60 RTS ; [ Attacker Special Effect $28: Mind Blast ] C2/413C: C2 20 REP #$20 C2/413E: A0 06 LDY #$06 C2/4140: A5 A4 LDA $A4 ; character targets hit C2/4142: 20 2A 52 JSR $522A ; pick a random bit set in A C2/4145: 99 5C 3A STA $3A5C,Y ; set mind blast status C2/4148: 88 DEY C2/4149: 88 DEY C2/414A: 10 F4 BPL $4140 C2/414C: 60 RTS ; [ Attacker Special Effect $29: N. Cross ] C2/414D: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4150: 14 A4 TRB $A4 ; random character targets C2/4152: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4155: 14 A5 TRB $A5 ; random monster targets C2/4157: 60 RTS ; [ Attacker Special Effect $09: Dice/Fixed Dice ] C2/4158: 9C 14 34 STZ $3414 ; disable damage modification C2/415B: A9 20 LDA #$20 C2/415D: 0C A4 11 TSB $11A4 ; can't dodge C2/4160: A9 0F LDA #$0F C2/4162: 85 B6 STA $B6 ; disable 3rd die roll C2/4164: 7B TDC C2/4165: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4168: 48 PHA C2/4169: 29 0F AND #$0F C2/416B: A2 06 LDX #$06 C2/416D: 20 92 47 JSR $4792 ; divide +A / X C2/4170: 86 B7 STX $B7 C2/4172: E8 INX C2/4173: 86 EE STX $EE ; +$EE = die 1 C2/4175: 68 PLA C2/4176: A2 60 LDX #$60 C2/4178: 20 92 47 JSR $4792 ; divide +A / X C2/417B: 8A TXA C2/417C: 29 F0 AND #$F0 C2/417E: 05 B7 ORA $B7 C2/4180: 85 B7 STA $B7 ; dice rolls (low/high nybble) C2/4182: 4A LSR C2/4183: 4A LSR C2/4184: 4A LSR C2/4185: 4A LSR C2/4186: 1A INC C2/4187: EB XBA C2/4188: A5 EE LDA $EE C2/418A: 20 81 47 JSR $4781 ; multiply A * B C2/418D: 85 EE STA $EE ; +$EE = die 1 * die 2 C2/418F: AD A8 11 LDA $11A8 C2/4192: C9 03 CMP #$03 C2/4194: 90 15 BCC $41AB ; branch if only 2 dice C2/4196: 7B TDC C2/4197: AD 1E 02 LDA $021E ; game time (frames) C2/419A: A2 06 LDX #$06 C2/419C: 20 92 47 JSR $4792 ; divide +A / X C2/419F: 8A TXA C2/41A0: 85 B6 STA $B6 ; set 3rd die roll (low nybble) C2/41A2: 1A INC C2/41A3: EB XBA C2/41A4: A5 EE LDA $EE C2/41A6: 20 81 47 JSR $4781 ; multiply A * B C2/41A9: 85 EE STA $EE ; +$EE = die 1 * die 2 * die 3 C2/41AB: A2 00 LDX #$00 ; bonus multiplier = 0 C2/41AD: A5 B6 LDA $B6 C2/41AF: 0A ASL C2/41B0: 0A ASL C2/41B1: 0A ASL C2/41B2: 0A ASL C2/41B3: 05 B6 ORA $B6 C2/41B5: C5 B7 CMP $B7 C2/41B7: D0 02 BNE $41BB ; branch unless all dice match (only if there are 3 dice) C2/41B9: A6 B6 LDX $B6 ; bonus multiplier = matching dice value C2/41BB: A5 EE LDA $EE C2/41BD: EB XBA C2/41BE: AD AF 11 LDA $11AF ; level C2/41C1: 0A ASL C2/41C2: 20 81 47 JSR $4781 ; multiply A * B C2/41C5: C2 20 REP #$20 C2/41C7: 85 EE STA $EE C2/41C9: 18 CLC C2/41CA: 8D B0 11 STA $11B0 C2/41CD: A5 EE LDA $EE C2/41CF: 6D B0 11 ADC $11B0 C2/41D2: 90 02 BCC $41D6 C2/41D4: 7B TDC C2/41D5: 3A DEC C2/41D6: CA DEX C2/41D7: 10 F0 BPL $41C9 C2/41D9: E2 20 SEP #$20 C2/41DB: A5 B5 LDA $B5 C2/41DD: C9 00 CMP #$00 C2/41DF: D0 02 BNE $41E3 C2/41E1: A9 26 LDA #$26 ; command $26 (set dice roll) C2/41E3: 85 B5 STA $B5 C2/41E5: 60 RTS ; [ Attacker Special Effect $3D: Revenge ] C2/41E6: 9C 14 34 STZ $3414 ; disable damage modification C2/41E9: C2 20 REP #$20 C2/41EB: 38 SEC C2/41EC: B9 1C 3C LDA $3C1C,Y ; damage = max hp - current hp C2/41EF: F9 F4 3B SBC $3BF4,Y C2/41F2: 8D B0 11 STA $11B0 C2/41F5: 60 RTS ; [ Attacker Special Effect $13: Sonic Dive ] C2/41F6: A9 10 LDA #$10 C2/41F8: 0C 46 3A TSB $3A46 ; set $3A46.4 C2/41FB: C2 20 REP #$20 C2/41FD: A2 12 LDX #$12 C2/41FF: BD E4 3E LDA $3EE4,X C2/4202: 89 40 80 BIT #$8040 C2/4205: D0 08 BNE $420F C2/4207: BD F8 3E LDA $3EF8,X C2/420A: 89 10 22 BIT #$2210 C2/420D: F0 07 BEQ $4216 C2/420F: BD 18 30 LDA $3018,X C2/4212: 14 A2 TRB $A2 C2/4214: 14 A4 TRB $A4 C2/4216: CA DEX C2/4217: CA DEX C2/4218: 10 E5 BPL $41FF C2/421A: 60 RTS ; [ Attacker Special Effect $36: Empowerer ] C2/421B: AD A3 11 LDA $11A3 ; toggle "affect mp" flag C2/421E: 49 80 EOR #$80 C2/4220: 8D A3 11 STA $11A3 C2/4223: 10 05 BPL $422A C2/4225: A9 12 LDA #$12 ; command $12 (mimic) C2/4227: 85 B5 STA $B5 C2/4229: 60 RTS C2/422A: EE 70 3A INC $3A70 ; increment number of attacks C2/422D: 4E A6 11 LSR $11A6 ; divide attack power by 4 C2/4230: 4E A6 11 LSR $11A6 C2/4233: 60 RTS ; [ Attacker Special Effect $16: Spiraler ] C2/4234: BB TYX C2/4235: BD 18 30 LDA $3018,X C2/4238: 14 A2 TRB $A2 C2/423A: 14 A4 TRB $A4 C2/423C: 0C 4C 2F TSB $2F4C C2/423F: 20 4A 38 JSR $384A C2/4242: C2 20 REP #$20 C2/4244: 9E F4 3B STZ $3BF4,X ; set hp and mp to zero C2/4247: 9E 08 3C STZ $3C08,X C2/424A: 60 RTS ; [ Attacker Special Effect $44: Discard ] C2/424B: 20 9C 40 JSR $409C ; clear targets hit C2/424E: A9 20 LDA #$20 C2/4250: 0C A4 11 TSB $11A4 ; can't dodge C2/4253: BE 58 33 LDX $3358,Y C2/4256: 30 F2 BMI $424A ; return if seize target is not valid C2/4258: BD 18 30 LDA $3018,X C2/425B: 85 B8 STA $B8 ; set target C2/425D: 64 B9 STZ $B9 C2/425F: BB TYX C2/4260: 4C C2 57 JMP $57C2 ; update battle script data ; [ Attacker Special Effect $15: Mantra ] C2/4263: A9 60 LDA #$60 C2/4265: 0C A2 11 TSB $11A2 C2/4268: 9C 14 34 STZ $3414 ; disable damage modification C2/426B: C2 20 REP #$20 C2/426D: B9 18 30 LDA $3018,Y C2/4270: 14 A4 TRB $A4 C2/4272: AE C9 3E LDX $3EC9 ; number of targets - 1 C2/4275: CA DEX C2/4276: B9 F4 3B LDA $3BF4,Y ; current hp C2/4279: 20 92 47 JSR $4792 ; divide +A / X C2/427C: 8D B0 11 STA $11B0 ; damage C2/427F: 60 RTS ; [ Attacker Special Effect $42: Quarter Damage ] ; unused C2/4280: C2 20 REP #$20 C2/4282: 4E B0 11 LSR $11B0 ; divide damage by 4 ; fall through ; [ Attacker Special Effect $41: Halve Damage ] ; unused C2/4285: C2 20 REP #$20 C2/4287: 4E B0 11 LSR $11B0 ; divide damage by 2 C2/428A: 60 RTS ; [ Attacker Special Effect $30: Suplex ] C2/428B: A9 10 LDA #$10 C2/428D: 04 B0 TSB $B0 C2/428F: C2 20 REP #$20 C2/4291: A5 A2 LDA $A2 C2/4293: 85 EE STA $EE C2/4295: A2 0A LDX #$0A C2/4297: BD 88 3C LDA $3C88,X C2/429A: 89 04 00 BIT #$0004 C2/429D: F0 05 BEQ $42A4 ; skip if target can be suplex'ed C2/429F: BD 20 30 LDA $3020,X C2/42A2: 14 EE TRB $EE ; remove target C2/42A4: CA DEX C2/42A5: CA DEX C2/42A6: 10 EF BPL $4297 C2/42A8: A5 EE LDA $EE C2/42AA: D0 02 BNE $42AE C2/42AC: A5 A2 LDA $A2 C2/42AE: 20 2A 52 JSR $522A ; pick a random bit set in A C2/42B1: 85 B8 STA $B8 C2/42B3: BB TYX C2/42B4: 4C C2 57 JMP $57C2 ; update battle script data ; [ Attacker Special Effect $1C: Reflect??? ] ; misses targets that do not have reflect status C2/42B7: C2 20 REP #$20 C2/42B9: A2 12 LDX #$12 C2/42BB: BD F7 3E LDA $3EF7,X ; check each character/monster's status 3 C2/42BE: 30 05 BMI $42C5 ; branch if it has reflect status C2/42C0: BD 18 30 LDA $3018,X C2/42C3: 14 A4 TRB $A4 ; clear target C2/42C5: CA DEX C2/42C6: CA DEX C2/42C7: 10 F2 BPL $42BB C2/42C9: 60 RTS ; [ Attacker Special Effect $43: Quick ] C2/42CA: AD 02 34 LDA $3402 ; quick counter C2/42CD: 10 09 BPL $42D8 ; branch if another target is already quick C2/42CF: 8C 04 34 STY $3404 ; set quick target C2/42D2: A9 02 LDA #$02 ; set quick counter to 2 C2/42D4: 8D 02 34 STA $3402 C2/42D7: 60 RTS C2/42D8: C2 20 REP #$20 C2/42DA: B9 18 30 LDA $3018,Y ; make attack miss C2/42DD: 0C 5A 3A TSB $3A5A C2/42E0: 60 RTS ; attacker special effect jump table MagicFunc3table: C2/42E1: .DW $3E8A, $3E8B, $4044, $3E8A, $3E8A, $3F73, $3F6E, $3F22 C2/42F1: .DW $3E8A, $4158, $3F89, $3F9F, $3F7E, $3E8A, $3ECA, $3F50 C2/4301: .DW $3E8A, $3F65, $3E8A, $41F6, $3E8A, $4263, $4234, $3E8A C2/4311: .DW $404E, $3FFC, $40FE, $3F54, $42B7, $40A1, $3EA0, $3E8A C2/4321: .DW $3E8A, $3E8A, $3E8A, $3E8A, $3E8A, $3E8A, $3E8A, $40BB C2/4331: .DW $413C, $414D, $410F, $3E8A, $4037, $3E8A, $3E8A, $3E8A C2/4341: .DW $428B, $40DA, $40F1, $4061, $3E8A, $3E8A, $421B, $3E8A C2/4351: .DW $3E8A, $3E8A, $3E8A, $3E8A, $3E8A, $41E6, $3E8A, $3E8A C2/4361: .DW $3E8A, $4285, $4280, $42CA, $424B, $3E8A, $3E8A, $3E8A C2/4371: .DW $3E8A, $3FAD, $402C, $40C8, $4136, $404E, $3E8A, $3E8A C2/4381: .DW $4095, $3FB7, $3E8A, $3E8A, $3E8A, $3E8A, $3E8A, $3E8A ; --------------------------------------[ Battle: Status Changes ]-------------------------------------- ; [ Update Status ] _MagicStatus: C2/4391: DA PHX C2/4392: 08 PHP C2/4393: C2 20 REP #$20 C2/4395: A0 12 LDY #$12 C2/4397: B9 A0 3A LDA $3AA0,Y ; $3AA0.0 skip if target is not present C2/439A: 4A LSR C2/439B: 90 62 BCC $43FF C2/439D: 20 0D 45 JSR $450D ; init status variables C2/43A0: A5 FC LDA $FC ; +$FC = status 1/2 to set C2/43A2: F0 0F BEQ $43B3 C2/43A4: 85 F0 STA $F0 C2/43A6: A2 1E LDX #$1E C2/43A8: 06 F0 ASL $F0 C2/43AA: 90 03 BCC $43AF C2/43AC: FC B0 46 JSR ($46B0,X) ; status 1/2 to set C2/43AF: CA DEX C2/43B0: CA DEX C2/43B1: 10 F5 BPL $43A8 C2/43B3: A5 FE LDA $FE ; +$FE = status 3/4 to set C2/43B5: F0 0F BEQ $43C6 C2/43B7: 85 F0 STA $F0 C2/43B9: A2 1E LDX #$1E C2/43BB: 06 F0 ASL $F0 C2/43BD: 90 03 BCC $43C2 C2/43BF: FC D0 46 JSR ($46D0,X) ; status 3/4 to set C2/43C2: CA DEX C2/43C3: CA DEX C2/43C4: 10 F5 BPL $43BB C2/43C6: A5 F4 LDA $F4 ; +$F4 = status 1/2 to clear C2/43C8: 39 1C 33 AND $331C,Y C2/43CB: 85 F4 STA $F4 C2/43CD: F0 0F BEQ $43DE C2/43CF: 85 F0 STA $F0 C2/43D1: A2 1E LDX #$1E C2/43D3: 06 F0 ASL $F0 C2/43D5: 90 03 BCC $43DA C2/43D7: FC F0 46 JSR ($46F0,X) ; status 1/2 to clear C2/43DA: CA DEX C2/43DB: CA DEX C2/43DC: 10 F5 BPL $43D3 C2/43DE: A5 F6 LDA $F6 ; +$F6 = status 3/4 to clear C2/43E0: 39 30 33 AND $3330,Y C2/43E3: 85 F6 STA $F6 C2/43E5: F0 0F BEQ $43F6 C2/43E7: 85 F0 STA $F0 C2/43E9: A2 1E LDX #$1E C2/43EB: 06 F0 ASL $F0 C2/43ED: 90 03 BCC $43F2 C2/43EF: FC 10 47 JSR ($4710,X) ; status 3/4 to clear C2/43F2: CA DEX C2/43F3: CA DEX C2/43F4: 10 F5 BPL $43EB C2/43F6: 20 7F 44 JSR $447F ; C2/43F9: 20 85 45 JSR $4585 ; C2/43FC: 20 FF 44 JSR $44FF ; C2/43FF: 88 DEY ; next character/monster C2/4400: 88 DEY C2/4401: 10 94 BPL $4397 C2/4403: 28 PLP C2/4404: FA PLX C2/4405: 60 RTS ; [ ] _SetMagicStatus: C2/4406: 08 PHP C2/4407: C2 20 REP #$20 C2/4409: B9 E4 3E LDA $3EE4,Y C2/440C: 85 F8 STA $F8 C2/440E: B9 F8 3E LDA $3EF8,Y C2/4411: 85 FA STA $FA C2/4413: 20 90 44 JSR $4490 ; apply status effects C2/4416: E2 20 SEP #$20 C2/4418: A5 B3 LDA $B3 C2/441A: 30 04 BMI $4420 C2/441C: A9 10 LDA #$10 C2/441E: 14 F4 TRB $F4 C2/4420: B9 95 3C LDA $3C95,Y C2/4423: 10 18 BPL $443D C2/4425: A9 08 LDA #$08 C2/4427: 2C A2 11 BIT $11A2 C2/442A: F0 11 BEQ $443D C2/442C: 4A LSR C2/442D: 2C A4 11 BIT $11A4 C2/4430: F0 0B BEQ $443D C2/4432: AD AA 11 LDA $11AA C2/4435: 89 82 BIT #$82 C2/4437: F0 04 BEQ $443D C2/4439: A9 80 LDA #$80 C2/443B: 04 FC TSB $FC C2/443D: C2 20 REP #$20 C2/443F: A5 FC LDA $FC C2/4441: 20 32 0E JSR $0E32 C2/4444: A5 FE LDA $FE C2/4446: 19 E8 3D ORA $3DE8,Y C2/4449: 99 E8 3D STA $3DE8,Y C2/444C: A5 F4 LDA $F4 C2/444E: 19 FC 3D ORA $3DFC,Y C2/4451: 99 FC 3D STA $3DFC,Y C2/4454: A5 F6 LDA $F6 C2/4456: 19 10 3E ORA $3E10,Y C2/4459: 99 10 3E STA $3E10,Y C2/445C: AD A7 11 LDA $11A7 C2/445F: 4A LSR C2/4460: 90 1B BCC $447D C2/4462: A5 FC LDA $FC C2/4464: 05 F4 ORA $F4 C2/4466: 39 1C 33 AND $331C,Y C2/4469: D0 12 BNE $447D C2/446B: A5 FE LDA $FE C2/446D: 05 F6 ORA $F6 C2/446F: 39 30 33 AND $3330,Y C2/4472: D0 09 BNE $447D C2/4474: B9 18 30 LDA $3018,Y C2/4477: 8D 48 3A STA $3A48 C2/447A: 0C 5A 3A TSB $3A5A C2/447D: 28 PLP C2/447E: 60 RTS ; [ ] _StoreStatus2: C2/447F: A5 F8 LDA $F8 C2/4481: 04 FC TSB $FC C2/4483: A5 F4 LDA $F4 C2/4485: 14 FC TRB $FC C2/4487: A5 FA LDA $FA C2/4489: 04 FE TSB $FE C2/448B: A5 F6 LDA $F6 C2/448D: 14 FE TRB $FE C2/448F: 60 RTS ; [ Apply Status Effects ] _InitMagicStatus2: C2/4490: DA PHX C2/4491: E2 20 SEP #$20 C2/4493: AD A4 11 LDA $11A4 C2/4496: 29 0C AND #$0C C2/4498: 4A LSR C2/4499: AA TAX C2/449A: C2 20 REP #$20 C2/449C: 64 FC STZ $FC C2/449E: 64 FE STZ $FE C2/44A0: 64 F4 STZ $F4 C2/44A2: 64 F6 STZ $F6 C2/44A4: FC D1 44 JSR ($44D1,X) C2/44A7: AD A2 11 LDA $11A2 C2/44AA: 4A LSR C2/44AB: B0 0E BCS $44BB C2/44AD: A9 10 00 LDA #$0010 C2/44B0: 24 F8 BIT $F8 C2/44B2: F0 07 BEQ $44BB C2/44B4: 2C AA 11 BIT $11AA C2/44B7: D0 02 BNE $44BB C2/44B9: 04 F4 TSB $F4 C2/44BB: AD A1 11 LDA $11A1 C2/44BE: 4A LSR C2/44BF: 90 0E BCC $44CF C2/44C1: A9 00 02 LDA #$0200 C2/44C4: 24 FA BIT $FA C2/44C6: F0 07 BEQ $44CF C2/44C8: 2C AC 11 BIT $11AC C2/44CB: D0 02 BNE $44CF C2/44CD: 04 F6 TSB $F6 C2/44CF: FA PLX C2/44D0: 60 RTS ; status effect jump table C2/44D1: .DW 44D7, $44EA, $44F9 ; 0: set status C2/44D7: AD AA 11 LDA $11AA C2/44DA: 85 FC STA $FC C2/44DC: A5 F8 LDA $F8 C2/44DE: 14 FC TRB $FC C2/44E0: AD AC 11 LDA $11AC C2/44E3: 85 FE STA $FE C2/44E5: A5 FA LDA $FA C2/44E7: 14 FE TRB $FE C2/44E9: 60 RTS ; 1: remove status C2/44EA: AD AA 11 LDA $11AA C2/44ED: 25 F8 AND $F8 C2/44EF: 85 F4 STA $F4 C2/44F1: AD AC 11 LDA $11AC C2/44F4: 25 FA AND $FA C2/44F6: 85 F6 STA $F6 C2/44F8: 60 RTS ; 2: toggle status C2/44F9: 20 D7 44 JSR $44D7 C2/44FC: 4C EA 44 JMP $44EA ; [ ] _ClearDS: C2/44FF: 7B TDC C2/4500: 99 D4 3D STA $3DD4,Y C2/4503: 99 E8 3D STA $3DE8,Y C2/4506: 99 FC 3D STA $3DFC,Y C2/4509: 99 10 3E STA $3E10,Y C2/450C: 60 RTS ; [ Init Status Variables ] MagicStatus_sub: C2/450D: B9 FC 3D LDA $3DFC,Y ; status 1/2 to clear C2/4510: 85 F4 STA $F4 C2/4512: B9 10 3E LDA $3E10,Y ; status 3/4 to clear C2/4515: 85 F6 STA $F6 C2/4517: B9 D4 3D LDA $3DD4,Y ; status 1/2 to set C2/451A: 39 1C 33 AND $331C,Y ; blocked status 1/2 C2/451D: 85 FC STA $FC C2/451F: B9 E8 3D LDA $3DE8,Y ; status 3/4 to set C2/4522: 39 30 33 AND $3330,Y ; blocked status 3/4 C2/4525: 85 FE STA $FE C2/4527: B9 E4 3E LDA $3EE4,Y ; current status 1/2 C2/452A: 85 F8 STA $F8 C2/452C: 29 40 00 AND #$0040 ; isolate petrify bit C2/452F: 04 FC TSB $FC ; set in status to set C2/4531: B9 F8 3E LDA $3EF8,Y ; current status 3/4 C2/4534: 85 FA STA $FA C2/4536: B9 1C 3C LDA $3C1C,Y ; max hp / 8 C2/4539: 4A LSR C2/453A: 4A LSR C2/453B: 4A LSR C2/453C: D9 F4 3B CMP $3BF4,Y ; current hp C2/453F: A9 00 02 LDA #$0200 C2/4542: 24 F8 BIT $F8 ; branch if character is already near fatal C2/4544: D0 04 BNE $454A C2/4546: 90 06 BCC $454E C2/4548: 04 FC TSB $FC ; add near fatal in status to set C2/454A: B0 02 BCS $454E C2/454C: 04 F4 TSB $F4 ; otherwise, add near fatal in status to clear C2/454E: A5 FB LDA $FB ; branch if wound is not in status to set ??? C2/4550: 10 14 BPL $4566 C2/4552: B9 4D 3E LDA $3E4D,Y ; branch if overcast flag is not set ($3E4D.1) C2/4555: 29 02 00 AND #$0002 C2/4558: F0 0C BEQ $4566 C2/455A: 05 FC ORA $FC ; add zombie in status to set C2/455C: 29 7F FF AND #$FF7F ; remove wound from status to set C2/455F: 85 FC STA $FC C2/4561: A9 00 01 LDA #$0100 ; add condemned in status to clear C2/4564: 04 F4 TSB $F4 C2/4566: B9 DF 32 LDA $32DF,Y ; C2/4569: 10 19 BPL $4584 C2/456B: A5 FC LDA $FC C2/456D: 48 PHA C2/456E: A5 FE LDA $FE C2/4570: 48 PHA C2/4571: 20 7F 44 JSR $447F C2/4574: A5 FC LDA $FC C2/4576: 99 60 3E STA $3E60,Y C2/4579: A5 FE LDA $FE C2/457B: 99 74 3E STA $3E74,Y C2/457E: 68 PLA C2/457F: 85 FE STA $FE C2/4581: 68 PLA C2/4582: 85 FC STA $FC C2/4584: 60 RTS ; [ ] MagicStatus_sub2: C2/4585: A5 FC LDA $FC C2/4587: 89 02 00 BIT #$0002 C2/458A: F0 03 BEQ $458F C2/458C: 29 FA 4D AND #$4DFA C2/458F: 99 E4 3E STA $3EE4,Y C2/4592: A5 FE LDA $FE C2/4594: 99 F8 3E STA $3EF8,Y C2/4597: 60 RTS ; [ ] setRStatus0: C2/4598: 48 PHA C2/4599: A5 F8 LDA $F8 C2/459B: 05 FC ORA $FC C2/459D: 23 01 AND $01,S C2/459F: 04 F4 TSB $F4 ; status to clear C2/45A1: 68 PLA C2/45A2: 60 RTS ; [ Zombie Set ] C2/45A3: A9 80 00 LDA #$0080 C2/45A6: 20 98 45 JSR $4598 C2/45A9: 20 A9 46 JSR $46A9 ; set character/monster dead flag C2/45AC: 80 13 BRA $45C1 ; [ Zombie Clear ] C2/45AE: 20 9C 46 JSR $469C ; revive monster C2/45B1: 80 0E BRA $45C1 ; [ Muddled Set ] C2/45B3: B9 18 30 LDA $3018,Y C2/45B6: 0C 53 2F TSB $2F53 C2/45B9: 80 06 BRA $45C1 ; [ Muddled Clear ] C2/45BB: B9 18 30 LDA $3018,Y C2/45BE: 1C 53 2F TRB $2F53 C2/45C1: DA PHX C2/45C2: BE 18 30 LDX $3018,Y ; character/monster flag C2/45C5: 8A TXA C2/45C6: 0C 4A 3A TSB $3A4A ; characters/monsters with changed status C2/45C9: FA PLX C2/45CA: 60 RTS ; [ Clear Set ] C2/45CB: DA PHX C2/45CC: BE 19 30 LDX $3019,Y C2/45CF: 8A TXA C2/45D0: 0C 44 2F TSB $2F44 ; monsters with clear status (graphics) C2/45D3: FA PLX C2/45D4: 60 RTS ; [ Clear Clear ] C2/45D5: DA PHX C2/45D6: BE 19 30 LDX $3019,Y C2/45D9: 8A TXA C2/45DA: 1C 44 2F TRB $2F44 ; monsters with clear status (graphics) C2/45DD: FA PLX C2/45DE: 60 RTS ; [ Imp Set/Clear ] C2/45DF: A9 88 00 LDA #$0088 ; update enabled spells/espers and enabled commands C2/45E2: 20 4C 46 JSR $464C ; set character update flag(s) ; fall through ; [ Rage Clear ] C2/45E5: C0 08 CPY #$08 C2/45E7: B0 08 BCS $45F1 ; return if a monster C2/45E9: DA PHX C2/45EA: 98 TYA C2/45EB: 4A LSR C2/45EC: AA TAX C2/45ED: FE 30 2F INC $2F30,X ; set equipment change flag C2/45F0: FA PLX C2/45F1: 60 RTS ; [ Petrify/Wound Clear ] C2/45F2: 20 9C 46 JSR $469C ; revive monster C2/45F5: A9 00 40 LDA #$4000 C2/45F8: 20 56 46 JSR $4656 C2/45FB: A9 40 00 LDA #$0040 ; remove all advance wait actions C2/45FE: 80 4C BRA $464C ; set character update flag(s) ; [ Wound Set ] C2/4600: A9 40 01 LDA #$0140 ; clear petrify/condemned C2/4603: 20 98 45 JSR $4598 C2/4606: A9 80 00 LDA #$0080 ; don't clear wound C2/4609: 14 F4 TRB $F4 ; fall through ; [ Petrify Set ] C2/460B: 20 A9 46 JSR $46A9 ; set character/monster dead flag C2/460E: A9 15 FE LDA #$FE15 C2/4611: 20 98 45 JSR $4598 C2/4614: A5 LDA $FA C2/4616: 05 FE ORA $FE C2/4618: 29 FF 9B AND #$9BFF C2/461B: 04 F6 TSB $F6 C2/461D: B9 4C 3E LDA $3E4C,Y ; clear $3E4D.6 (phantasm status) C2/4620: 29 FF BF AND #$BFFF C2/4623: 99 4C 3E STA $3E4C,Y C2/4626: B9 A0 3A LDA $3AA0,Y ; clear $3AA0.7 (battle menu can't open) C2/4629: 29 7F FF AND #$FF7F C2/462C: 99 A0 3A STA $3AA0,Y C2/462F: A9 40 00 LDA #$0040 ; C2/4632: 80 18 BRA $464C ; set character update flag(s) ; [ Psyche Set ] C2/4634: 08 PHP C2/4635: E2 20 SEP #$20 C2/4637: A9 12 LDA #$12 C2/4639: 99 F9 3C STA $3CF9,Y ; set psyche counter to $12 C2/463C: 28 PLP C2/463D: 80 E7 BRA $4626 ; ; [ Condemned Set ] C2/463F: A9 20 00 LDA #$0020 ; set condemned counter C2/4642: 80 08 BRA $464C ; set character update flag(s) ; [ Condemned Clear ] C2/4644: A9 10 00 LDA #$0010 ; clear condemned counter C2/4647: 80 03 BRA $464C ; set character update flag(s) ; [ Mute Set/Clear ] C2/4649: A9 08 00 LDA #$0008 ; update enabled commands ; fall through ; [ Set Character Update Flag(s) ] _OrFlag1_8: C2/464C: 19 04 32 ORA $3204,Y C2/464F: 99 04 32 STA $3204,Y C2/4652: 60 RTS ; [ Psyche Clear ] C2/4653: A9 00 40 LDA #$4000 ; set $3AA1.6 pending psyche action C2/4656: 19 A0 3A ORA $3AA0,Y C2/4659: 99 A0 3A STA $3AA0,Y C2/465C: 60 RTS ; [ Seizure Set ] C2/465D: A9 02 00 LDA #$0002 C2/4660: 04 F6 TSB $F6 C2/4662: 60 RTS ; [ Regen Set ] C2/4663: A9 00 40 LDA #$4000 C2/4666: 04 F4 TSB $F4 C2/4668: 60 RTS ; [ Slow Set ] C2/4669: A9 08 00 LDA #$0008 C2/466C: 80 03 BRA $4671 ; [ Haste Set ] C2/466E: A9 04 00 LDA #$0004 C2/4671: 04 F6 TSB $F6 ; fall through ; [ Slow/Haste Cleared ] C2/4673: A9 04 00 LDA #$0004 ; update ATB gauge constant C2/4676: 80 D4 BRA $464C ; set character update flag(s) ; [ Morph/Revert Set/Clear ] C2/4678: A9 02 00 LDA #$0002 ; update character after morph/revert C2/467B: 80 CF BRA $464C ; set character update flag(s) ; [ Stop Set ] C2/467D: 08 PHP C2/467E: E2 20 SEP #$20 C2/4680: A9 12 LDA #$12 C2/4682: 99 F1 3A STA $3AF1,Y C2/4685: 28 PLP C2/4686: 60 RTS ; [ Reflect Set ] C2/4687: 08 PHP C2/4688: E2 20 SEP #$20 C2/468A: A9 1A LDA #$1A ; set reflect counter to 26 C2/468C: 99 0C 3F STA $3F0C,Y C2/468F: 28 PLP C2/4690: 60 RTS ; [ Frozen Set ] C2/4691: 08 PHP C2/4692: E2 20 SEP #$20 C2/4694: A9 22 LDA #$22 C2/4696: 99 0D 3F STA $3F0D,Y C2/4699: 28 PLP C2/469A: 60 RTS ; [ Status Set/Clear: No Effect ] C2/469B: 60 RTS ; [ Revive Monster ] removeErase: C2/469C: DA PHX C2/469D: BE 19 30 LDX $3019,Y ; monster flag C2/46A0: 8A TXA C2/46A1: 0C 2F 2F TSB $2F2F ; monsters that are not dead C2/46A4: 1C 3A 3A TRB $3A3A ; monsters that have died C2/46A7: FA PLX C2/46A8: 60 RTS ; [ Set Character/Monster Dead Flag ] setNowDead: C2/46A9: B9 18 30 LDA $3018,Y ; character/monster mask C2/46AC: 0C 56 3A TSB $3A56 ; characters/monsters that have died C2/46AF: 60 RTS ; set status jump table _MagicStatus2: C2/46B0: .DW $469B, $45A3, $469B, $469B, $45CB, $45DF, $460B, $4600 C2/46C0: .DW $463F, $469B, $469B, $4649, $469B, $45B3, $465D, $4634 C2/46D0: .DW $469B, $4663, $4669, $466E, $467D, $469B, $469B, $4687 C2/46E0: .DW $469B, $4691, $469B, $4678, $469B, $469B, $469B, $469B ; clear status jump table C2/46F0: .DW $469B, $45AE, $469B, $469B, $45D5, $45DF, $45F2, $45F2 C2/4700: .DW $4644, $469B, $469B, $4649, $469B, $45BB, $469B, $4653 C2/4710: .DW $469B, $469B, $4673, $4673, $469B, $469B, $469B, $469B C2/4720: .DW $45E5, $469B, $469B, $4678, $469B, $469B, $469B, $469B ; --------------------------------------------[ Battle: ??? ]------------------------------------------- ; [ Calculate Item/Spell Effect (from menu) ] ; X: 0 = spell, 2 = item _MenuMagic: C2/4730: DA PHX C2/4731: 5A PHY C2/4732: 8B PHB C2/4733: 08 PHP C2/4734: E2 30 SEP #$30 C2/4736: 48 PHA C2/4737: A9 7E LDA #$7E C2/4739: 48 PHA C2/473A: AB PLB C2/473B: 68 PLA C2/473C: 18 CLC C2/473D: FC 4B 47 JSR ($474B,X) ; use item/cast spell C2/4740: 20 90 44 JSR $4490 ; apply status effects C2/4743: 20 7F 44 JSR $447F C2/4746: 28 PLP C2/4747: AB PLB C2/4748: 7A PLY C2/4749: FA PLX C2/474A: 6B RTL ; jump table for item/spell table_MenuMagic: C2/474B: .DW $474F, $4778 ; X = 0: cast spell C2/474F: 20 66 29 JSR $2966 C2/4752: AD A4 11 LDA $11A4 C2/4755: 10 1E BPL $4775 ; branch if damage is not a fraction of hp C2/4757: AD A6 11 LDA $11A6 C2/475A: 85 E8 STA $E8 C2/475C: C2 30 REP #$30 C2/475E: AD B2 11 LDA $11B2 C2/4761: 20 3C 28 JSR $283C C2/4764: C9 10 27 CMP #$2710 ; max 9999 C2/4767: 90 03 BCC $476C C2/4769: A9 0F 27 LDA #$270F C2/476C: E2 10 SEP #$10 C2/476E: 20 CB 0D JSR $0DCB C2/4771: 8D B0 11 STA $11B0 C2/4774: 60 RTS C2/4775: 4C 69 2B JMP $2B69 ; calculate magical damage ; X = 2: use item C2/4778: 20 37 2A JSR $2A37 ; calculate item effect C2/477B: A9 01 LDA #$01 C2/477D: 0C A2 11 TSB $11A2 ; physical damage C2/4780: 60 RTS ; [ Multiply A * B ] _Multi: C2/4781: 08 PHP C2/4782: C2 20 REP #$20 C2/4784: 8F 02 42 00 STA $004202 C2/4788: EA NOP C2/4789: EA NOP C2/478A: EA NOP C2/478B: EA NOP C2/478C: AF 16 42 00 LDA $004216 C2/4790: 28 PLP C2/4791: 60 RTS ; [ Divide +A / X ] ; +A = result ; X = remainder _Divis: C2/4792: 5A PHY C2/4793: 08 PHP C2/4794: C2 20 REP #$20 C2/4796: 8F 04 42 00 STA $004204 C2/479A: E2 30 SEP #$30 C2/479C: 8A TXA C2/479D: 8F 06 42 00 STA $004206 C2/47A1: EA NOP C2/47A2: EA NOP C2/47A3: EA NOP C2/47A4: EA NOP C2/47A5: EA NOP C2/47A6: EA NOP C2/47A7: EA NOP C2/47A8: EA NOP C2/47A9: AF 16 42 00 LDA $004216 C2/47AD: AA TAX C2/47AE: C2 20 REP #$20 C2/47B0: AF 14 42 00 LDA $004214 C2/47B4: 28 PLP C2/47B5: 7A PLY C2/47B6: 60 RTS ; [ +A *= $E8 / 256 ] ; ++$E8 = +A * $E8 _Multi2: C2/47B7: 08 PHP C2/47B8: E2 20 SEP #$20 C2/47BA: 64 EA STZ $EA C2/47BC: 85 E9 STA $E9 C2/47BE: A5 E8 LDA $E8 C2/47C0: 20 81 47 JSR $4781 ; multiply A * B C2/47C3: C2 21 REP #$21 C2/47C5: 85 EC STA $EC C2/47C7: A5 E8 LDA $E8 C2/47C9: 20 81 47 JSR $4781 ; multiply A * B C2/47CC: 85 E8 STA $E8 C2/47CE: A5 EC LDA $EC C2/47D0: 65 E9 ADC $E9 C2/47D2: 85 E9 STA $E9 C2/47D4: 28 PLP C2/47D5: 60 RTS ; [ A *= 1.5 ] _AddH: C2/47D6: 48 PHA C2/47D7: 4A LSR C2/47D8: 18 CLC C2/47D9: 63 01 ADC $01,S C2/47DB: 90 02 BCC $47DF C2/47DD: A9 FF LDA #$FF C2/47DF: 83 01 STA $01,S C2/47E1: 68 PLA C2/47E2: 60 RTS ; [ Remove Character from Party ] _ClearPartyStat: C2/47E3: DA PHX C2/47E4: BD D9 3E LDA $3ED9,X ; character number C2/47E7: AA TAX C2/47E8: 9E 50 18 STZ $1850,X ; remove character from party C2/47EB: FA PLX C2/47EC: 60 RTS ; [ Check if Battle is Over ] _Over: C2/47ED: AD E0 3E LDA $3EE0 ; branch if end of battle special events are disabled C2/47F0: F0 09 BEQ $47FB C2/47F2: AD 6E 3A LDA $3A6E ; end of battle special event C2/47F5: F0 04 BEQ $47FB C2/47F7: AA TAX C2/47F8: 7C F5 48 JMP ($48F5,X) ; no special event C2/47FB: AD D1 1D LDA $1DD1 ; end battle if timer expires flag C2/47FE: 29 20 AND #$20 C2/4800: F0 05 BEQ $4807 C2/4802: 0C BC 3E TSB $3EBC ; update battle termination flag C2/4805: 80 19 BRA $4820 C2/4807: AD 95 3A LDA $3A95 ; return if last monster is hidden (AI command $F5) C2/480A: D0 E0 BNE $47EC C2/480C: AD 74 3A LDA $3A74 ; branch if any characters are still alive C2/480F: D0 22 BNE $4833 C2/4811: AD 8A 3A LDA $3A8A ; engulfed targets C2/4814: F0 0C BEQ $4822 ; branch if no one was engulfed C2/4816: CD 8D 3A CMP $3A8D C2/4819: D0 07 BNE $4822 ; branch if not everyone was engulfed C2/481B: A9 80 LDA #$80 ; set "zone eater just ate you" flag C2/481D: 0C BC 3E TSB $3EBC C2/4820: 80 7F BRA $48A1 C2/4822: AD 39 3A LDA $3A39 ; branch if there are any sneezed targets C2/4825: D0 70 BNE $4897 C2/4827: AD 97 3A LDA $3A97 ; branch if any characters are in colosseum mode C2/482A: D0 02 BNE $482E C2/482C: A9 29 LDA #$29 ; battle message $29 "Annihilated" C2/482E: 20 CA 5F JSR $5FCA ; display battle message and end battle C2/4831: 80 5C BRA $488F C2/4833: AD 77 3A LDA $3A77 ; return if any monsters are still alive C2/4836: D0 B4 BNE $47EC C2/4838: AD E0 3E LDA $3EE0 ; branch if end of battle special event is enabled C2/483B: D0 03 BNE $4840 C2/483D: 20 76 4A JSR $4A76 ; check final battle progression C2/4840: AE 0B 30 LDX $300B ; gau's character slot C2/4843: 30 1C BMI $4861 ; branch if gau is not in the party C2/4845: A9 01 LDA #$01 C2/4847: 1C E4 11 TRB $11E4 C2/484A: F0 15 BEQ $4861 ; branch if gau can't appear after battle C2/484C: 20 5A 4B JSR $4B5A ; random number (0..255) C2/484F: C9 A0 CMP #$A0 C2/4851: B0 0E BCS $4861 ; 5/8 chance to branch C2/4853: AD BD 3E LDA $3EBD C2/4856: 89 02 BIT #$02 C2/4858: D0 74 BNE $48CE ; branch if gau has been obtained C2/485A: AD 76 3A LDA $3A76 C2/485D: C9 02 CMP #$02 C2/485F: B0 6D BCS $48CE ; branch if more than 2 characters are left C2/4861: AE 03 30 LDX $3003 C2/4864: 30 26 BMI $488C ; branch if shadow is not in the party C2/4866: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4869: C9 10 CMP #$10 C2/486B: B0 1F BCS $488C ; 15/16 chance to branch C2/486D: AD 1F 20 LDA $201F C2/4870: D0 1A BNE $488C C2/4872: AD 76 3A LDA $3A76 C2/4875: C9 02 CMP #$02 C2/4877: 90 13 BCC $488C C2/4879: BD E4 3E LDA $3EE4,X C2/487C: 89 C2 BIT #$C2 C2/487E: D0 0C BNE $488C C2/4880: A9 08 LDA #$08 C2/4882: 2C BD 3E BIT $3EBD ; shadow won't leave after battle C2/4885: D0 05 BNE $488C C2/4887: 2C DE 1E BIT $1EDE ; shadow is an available character C2/488A: D0 1A BNE $48A6 C2/488C: 20 57 5D JSR $5D57 ; update party after victory C2/488F: 20 36 49 JSR $4936 ; update SRAM after battle C2/4892: 68 PLA ; remove return address from stack C2/4893: 68 PLA C2/4894: 4C C5 00 JMP $00C5 ; fade out and terminate battle ; [ End of Battle Special Event $01: Ran Out of Time before Emperor's Banquet ] ; also warp/warp stone C2/4897: A9 FF LDA #$FF C2/4899: 8D 05 02 STA $0205 C2/489C: A9 10 LDA #$10 ; set "ran out of time before emperor's banquet" flag C2/489E: 0C BC 3E TSB $3EBC ; fall through ; [ End of Battle Special Event $04: End Battle Immediately ] C2/48A1: 20 03 49 JSR $4903 ; init graphics for end of battle C2/48A4: 80 E9 BRA $488F ; shadow leaves the party C2/48A6: 1C DE 1E TRB $1EDE ; available characters (remove shadow) C2/48A9: 20 E3 47 JSR $47E3 C2/48AC: C2 10 REP #$10 C2/48AE: BC 10 30 LDY $3010,X C2/48B1: A9 FF LDA #$FF C2/48B3: 99 1E 16 STA $161E,Y C2/48B6: E2 10 SEP #$10 C2/48B8: A9 FE LDA #$FE C2/48BA: 20 92 07 JSR $0792 ; clear $3AA0.0 (make target not present) C2/48BD: A9 02 LDA #$02 C2/48BF: 0C 49 2F TSB $2F49 ; disable fanfare C2/48C2: A2 0B LDX #$0B ; battle event $0B (shadow leaves party) C2/48C4: 68 PLA C2/48C5: 68 PLA C2/48C6: A9 23 LDA #$23 ; command $23 (battle event) C2/48C8: 20 91 4E JSR $4E91 ; create immediate action C2/48CB: 4C 19 00 JMP $0019 ; gau shows up C2/48CE: BD 18 30 LDA $3018,X ; gau's character mask C2/48D1: 0C 4E 2F TSB $2F4E ; gau can be targetted C2/48D4: 0C 40 3A TSB $3A40 ; gau acts like an enemy C2/48D7: A9 04 LDA #$04 C2/48D9: 0C 46 3A TSB $3A46 ; clear all pending actions ($3A46.2) C2/48DC: A2 1B LDX #$1B ; battle event $1B (gau appears on veldt) C2/48DE: 80 E4 BRA $48C4 ; [ End of Battle Special Event $02: GAU Leaped ] C2/48E0: AE 0B 30 LDX $300B ; GAU character slot C2/48E3: 20 E3 47 JSR $47E3 ; remove character from party C2/48E6: A9 08 LDA #$08 C2/48E8: 1C DF 1E TRB $1EDF ; remove from available characters ; fall through ; [ End of Battle Special Event $05: GAU Learned Rages ] C2/48EB: 20 07 4A JSR $4A07 ; learn rages C2/48EE: 80 9F BRA $488F ; [ End of Battle Special Event $03: BANON Died ] C2/48F0: A9 36 LDA #$36 ; battle message $36 "Banon fell_" C2/48F2: 20 CA 5F JSR $5FCA ; display battle message and end battle C2/48F5: 80 98 BRA $488F ; jump code for end of battle special events C2/48F7: .DW $4897, $48E0, $48F0, $48A1, $48EB, $4A22 ; [ Init Graphics for End of Battle ] _WinAllClose: C2/4903: 20 36 0B JSR $0B36 ; update SRAM morph counter C2/4906: A2 06 LDX #$06 C2/4908: 9E 04 3B STZ $3B04,X ; hide morph gauge C2/490B: 8A TXA C2/490C: 4A LSR C2/490D: 85 10 STA $10 C2/490F: A9 03 LDA #$03 C2/4911: 20 11 64 JSR $6411 ; do battle graphics command $03 (close battle menu) C2/4914: CA DEX ; next character C2/4915: CA DEX C2/4916: 10 F0 BPL $4908 C2/4918: A9 80 LDA #$80 ; disable battle menus opening C2/491A: 04 B1 TSB $B1 C2/491C: A2 20 LDX #$20 ; wait 32 frames C2/491E: A9 01 LDA #$01 C2/4920: 20 11 64 JSR $6411 ; do battle graphics command $01 (wait for vblank) C2/4923: CA DEX C2/4924: D0 F8 BNE $491E C2/4926: A9 0F LDA #$0F ; check if any characters obtained an item C2/4928: 0C 8C 3A TSB $3A8C C2/492B: 20 C7 62 JSR $62C7 ; add obtained items to inventory C2/492E: A9 0A LDA #$0A C2/4930: 20 11 64 JSR $6411 ; do battle graphics command $0A (update inventory with obtained items) C2/4933: 4C 95 20 JMP $2095 ; update character battle stats ; [ Update SRAM After Battle ] _StoreSram: C2/4936: A2 06 LDX #$06 C2/4938: BD D8 3E LDA $3ED8,X ; actor number C2/493B: 30 3E BMI $497B ; skip if no character in this slot C2/493D: C9 10 CMP #$10 C2/493F: F0 04 BEQ $4945 ; branch if $10 (ghost #1) C2/4941: C9 11 CMP #$11 C2/4943: D0 07 BNE $494C ; branch if not $11 (ghost #2) C2/4945: BD E4 3E LDA $3EE4,X ; status 1 C2/4948: 89 C2 BIT #$C2 C2/494A: D0 08 BNE $4954 ; branch if zombie, petrify, or wound C2/494C: BD 18 30 LDA $3018,X C2/494F: 2C 88 3A BIT $3A88 C2/4952: F0 03 BEQ $4957 ; branch if not posessed C2/4954: 20 E3 47 JSR $47E3 ; remove character from party C2/4957: BD F9 3E LDA $3EF9,X ; status 4 C2/495A: 29 C0 AND #$C0 ; isolate float and interceptor C2/495C: EB XBA C2/495D: BD E4 3E LDA $3EE4,X ; status 1 C2/4960: C2 30 REP #$30 C2/4962: BC 10 30 LDY $3010,X ; pointer to character data C2/4965: 99 14 16 STA $1614,Y ; set character status C2/4968: BD F4 3B LDA $3BF4,X ; current hp C2/496B: 99 09 16 STA $1609,Y C2/496E: BD 30 3C LDA $3C30,X ; branch if max mp is 0 C2/4971: F0 06 BEQ $4979 C2/4973: BD 08 3C LDA $3C08,X ; current mp C2/4976: 99 0D 16 STA $160D,Y C2/4979: E2 30 SEP #$30 C2/497B: CA DEX ; next character C2/497C: CA DEX C2/497D: 10 B9 BPL $4938 C2/497F: C2 10 REP #$10 C2/4981: A2 FF 00 LDX #$00FF C2/4984: A0 FB 04 LDY #$04FB C2/4987: B9 86 26 LDA $2686,Y ; copy item number C2/498A: 9D 69 18 STA $1869,X C2/498D: 1A INC C2/498E: F0 03 BEQ $4993 ; branch if item slot is empty C2/4990: B9 89 26 LDA $2689,Y ; copy item quantity C2/4993: 9D 69 19 STA $1969,X C2/4996: 88 DEY ; next item C2/4997: 88 DEY C2/4998: 88 DEY C2/4999: 88 DEY C2/499A: 88 DEY C2/499B: CA DEX C2/499C: 10 E9 BPL $4987 C2/499E: AD 97 3A LDA $3A97 C2/49A1: F0 21 BEQ $49C4 ; branch if colosseum battle C2/49A3: AD 05 02 LDA $0205 ; item wagered C2/49A6: C9 FF CMP #$FF C2/49A8: F0 1A BEQ $49C4 ; branch if empty C2/49AA: A2 FF 00 LDX #$00FF C2/49AD: DD 69 18 CMP $1869,X ; find the item in inventory C2/49B0: D0 0F BNE $49C1 C2/49B2: DE 69 19 DEC $1969,X ; decrement quantity C2/49B5: F0 02 BEQ $49B9 C2/49B7: 10 08 BPL $49C1 C2/49B9: A9 FF LDA #$FF C2/49BB: 9D 69 18 STA $1869,X ; set empty if there are none remaining C2/49BE: 9E 69 19 STZ $1969,X ; set quantity to zero C2/49C1: CA DEX C2/49C2: 10 E9 BPL $49AD C2/49C4: E2 10 SEP #$10 C2/49C6: AE FA 33 LDX $33FA ; doom gaze C2/49C9: 30 0A BMI $49D5 ; branch if not present C2/49CB: C2 20 REP #$20 C2/49CD: BD F4 3B LDA $3BF4,X ; save doom gaze's hp C2/49D0: 8D BE 3E STA $3EBE C2/49D3: E2 20 SEP #$20 C2/49D5: A2 13 LDX #$13 ; copy global battle variables C2/49D7: BD B4 3E LDA $3EB4,X C2/49DA: 9D C9 1D STA $1DC9,X C2/49DD: CA DEX C2/49DE: 10 F7 BPL $49D7 C2/49E0: AD 4B 2F LDA $2F4B C2/49E3: 89 02 BIT #$02 C2/49E5: D0 1F BNE $4A06 ; return if formation can't appear on the veldt C2/49E7: A2 0A LDX #$0A C2/49E9: BD 02 20 LDA $2002,X ; high byte of monster index C2/49EC: D0 14 BNE $4A02 ; skip if monster index >= 256 (can't appear on the veldt) C2/49EE: AD D5 3E LDA $3ED5 ; high byte of battle index C2/49F1: 4A LSR C2/49F2: D0 12 BNE $4A06 ; branch if battle index >= 256 (can't appear on the veldt) C2/49F4: AD D4 3E LDA $3ED4 ; battle index C2/49F7: 20 17 52 JSR $5217 ; get bit mask and byte number C2/49FA: 1D DD 1D ORA $1DDD,X ; add to available veldt battles C2/49FD: 9D DD 1D STA $1DDD,X C2/4A00: 80 04 BRA $4A06 C2/4A02: CA DEX ; check next monster C2/4A03: CA DEX C2/4A04: 10 E3 BPL $49E9 C2/4A06: 60 RTS ; [ Learn Rages ] _InstallRiot: C2/4A07: A2 0A LDX #$0A C2/4A09: BD 02 20 LDA $2002,X ; high bit of monster index C2/4A0C: D0 0F BNE $4A1D ; skip if monster index > 255 (can't learn rage) C2/4A0E: DA PHX C2/4A0F: 18 CLC C2/4A10: BD 01 20 LDA $2001,X ; monster number C2/4A13: 20 17 52 JSR $5217 ; get bit mask and byte number C2/4A16: 1D 2C 1D ORA $1D2C,X ; add to known rages C2/4A19: 9D 2C 1D STA $1D2C,X C2/4A1C: FA PLX C2/4A1D: CA DEX ; next monster C2/4A1E: CA DEX C2/4A1F: 10 E8 BPL $4A09 C2/4A21: 60 RTS ; [ End of Battle Special Event $06: Scroll Background for Final Battle ] C2/4A22: 20 67 02 JSR $0267 ; move character back after attacking C2/4A25: 20 03 49 JSR $4903 ; init graphics for end of battle C2/4A28: 20 36 49 JSR $4936 ; update SRAM after battle C2/4A2B: A2 12 LDX #$12 C2/4A2D: E0 08 CPX #$08 C2/4A2F: B0 34 BCS $4A65 ; branch if a monster C2/4A31: BD A0 3A LDA $3AA0,X C2/4A34: 4A LSR C2/4A35: 90 1D BCC $4A54 ; $3AA0.0 branch if character is not present C2/4A37: BD E4 3E LDA $3EE4,X C2/4A3A: 89 C2 BIT #$C2 C2/4A3C: D0 16 BNE $4A54 ; branch if character has zombie, poison, or wound status C2/4A3E: BD 05 32 LDA $3205,X C2/4A41: 89 04 BIT #$04 C2/4A43: F0 0F BEQ $4A54 ; branch if character has air anchor effect ($3205.2) C2/4A45: C2 20 REP #$20 C2/4A47: BD F8 3E LDA $3EF8,X ; status 3 & 4 C2/4A4A: 29 FE EE AND #$EEFE ; remove dance, rage, and trance status C2/4A4D: 9D F8 3E STA $3EF8,X C2/4A50: E2 20 SEP #$20 C2/4A52: 80 14 BRA $4A68 C2/4A54: A9 FF LDA #$FF C2/4A56: 9D D8 3E STA $3ED8,X ; clear actor C2/4A59: BD 18 30 LDA $3018,X C2/4A5C: 1C 2C 3F TRB $3F2C ; clear jump/seize characters C2/4A5F: 1C 2E 3F TRB $3F2E ; clear characters with an esper equipped C2/4A62: 1C 2F 3F TRB $3F2F ; clear characters that have used a desperation attack C2/4A65: 20 9E 4A JSR $4A9E ; clear all statuses C2/4A68: CA DEX ; next character C2/4A69: CA DEX C2/4A6A: 10 C1 BPL $4A2D C2/4A6C: A9 0C LDA #$0C C2/4A6E: 20 11 64 JSR $6411 ; do battle graphics command $0C (scroll background for final battle) C2/4A71: 68 PLA C2/4A72: 68 PLA C2/4A73: 4C 16 00 JMP $0016 ; [ Check Final Battle Progression ] C2/4A76: C2 20 REP #$20 C2/4A78: A2 04 LDX #$04 C2/4A7A: BF AB 4A C2 LDA $C24AAB,X ; check final battles C2/4A7E: CD E0 11 CMP $11E0 C2/4A81: D0 14 BNE $4A97 C2/4A83: BF AD 4A C2 LDA $C24AAD,X ; load the next battle C2/4A87: 8D E0 11 STA $11E0 C2/4A8A: E2 20 SEP #$20 C2/4A8C: BF B3 4A C2 LDA $C24AB3,X ; scrolling data C2/4A90: 8D E1 3E STA $3EE1 C2/4A93: 68 PLA ; remove return address from stack C2/4A94: 68 PLA C2/4A95: 80 8B BRA $4A22 ; scroll background for final battle C2/4A97: CA DEX C2/4A98: CA DEX C2/4A99: 10 DF BPL $4A7A C2/4A9B: E2 20 SEP #$20 C2/4A9D: 60 RTS ; [ Clear All Statuses ] lastBattleSub: C2/4A9E: 9E E4 3E STZ $3EE4,X C2/4AA1: 9E E5 3E STZ $3EE5,X C2/4AA4: 9E F8 3E STZ $3EF8,X C2/4AA7: 9E F9 3E STZ $3EF9,X C2/4AAA: 60 RTS ; final battles C2/4AAB: .DW $01D7, $0200, $0201, $0202 ; final battle scrolling data C2/4AB3: .DB $90, $90, $90, $90, $8F, $8F ; [ Update Living/Dead Targets ] _OverCheck: C2/4AB9: C2 20 REP #$20 C2/4ABB: AD 4C 2F LDA $2F4C ; characters/monsters that can't be targetted C2/4ABE: 49 FF FF EOR #$FFFF ; invert C2/4AC1: 2D 4E 2F AND $2F4E ; clear bits in characters/monsters that can be targetted C2/4AC4: 8D 4E 2F STA $2F4E C2/4AC7: 8D 78 3A STA $3A78 ; C2/4ACA: 9C 74 3A STZ $3A74 ; clear characters/monsters that are alive C2/4ACD: 9C 42 3A STZ $3A42 ; clear targets that are monsters ??? C2/4AD0: E2 20 SEP #$20 C2/4AD2: A2 06 LDX #$06 C2/4AD4: BD A0 3A LDA $3AA0,X ; $3AA0.0 move "target present" flag to carry C2/4AD7: 4A LSR C2/4AD8: BD 18 30 LDA $3018,X ; character mask C2/4ADB: 2C 4C 2F BIT $2F4C C2/4ADE: D0 22 BNE $4B02 ; skip if character can't be targetted C2/4AE0: 2C 4E 2F BIT $2F4E C2/4AE3: D0 0E BNE $4AF3 ; branch if character can be targetted C2/4AE5: 90 1B BCC $4B02 ; skip if character is not present C2/4AE7: 0C 78 3A TSB $3A78 ; C2/4AEA: EB XBA C2/4AEB: BD E4 3E LDA $3EE4,X ; status 1 C2/4AEE: 89 C2 BIT #$C2 C2/4AF0: D0 10 BNE $4B02 ; skip if wound, petrify, or zombie C2/4AF2: EB XBA C2/4AF3: 2D 08 34 AND $3408 ; C2/4AF6: 0C 74 3A TSB $3A74 ; set character as alive C2/4AF9: 2D 40 3A AND $3A40 ; clear characters acting as enemies C2/4AFC: 0C 42 3A TSB $3A42 ; set characters that are monsters C2/4AFF: 1C 74 3A TRB $3A74 ; clear characters that are alive C2/4B02: CA DEX ; next character C2/4B03: CA DEX C2/4B04: 10 CE BPL $4AD4 C2/4B06: A2 0A LDX #$0A C2/4B08: BD A8 3A LDA $3AA8,X ; move "target present" flag to carry C2/4B0B: 4A LSR C2/4B0C: BD 21 30 LDA $3021,X ; monster mask C2/4B0F: 2C 4D 2F BIT $2F4D C2/4B12: D0 1E BNE $4B32 ; skip if monster can't be targetted C2/4B14: 2C 4F 2F BIT $2F4F C2/4B17: D0 13 BNE $4B2C ; branch if monster can be targetted C2/4B19: 90 17 BCC $4B32 ; skip if monster is not present C2/4B1B: 0C 79 3A TSB $3A79 ; C2/4B1E: 2C 3A 3A BIT $3A3A C2/4B21: D0 0F BNE $4B32 ; C2/4B23: EB XBA C2/4B24: BD EC 3E LDA $3EEC,X ; status 1 C2/4B27: 89 C2 BIT #$C2 C2/4B29: D0 07 BNE $4B32 ; skip if wound, petrify, or zombie C2/4B2B: EB XBA C2/4B2C: 2D 09 34 AND $3409 ; C2/4B2F: 0C 75 3A TSB $3A75 ; set monster as alive C2/4B32: CA DEX ; next monster C2/4B33: CA DEX C2/4B34: 10 D2 BPL $4B08 _SetUpPlayers: C2/4B36: DA PHX C2/4B37: 08 PHP C2/4B38: AD 74 3A LDA $3A74 ; allies that are alive C2/4B3B: 20 0E 52 JSR $520E ; X = number of bits set in A C2/4B3E: 8E 76 3A STX $3A76 ; set number of allies that are alive C2/4B41: AD 75 3A LDA $3A75 ; monsters that are alive C2/4B44: EB XBA C2/4B45: AD 42 3A LDA $3A42 ; enemy characters that are alive C2/4B48: C2 20 REP #$20 C2/4B4A: 20 0E 52 JSR $520E ; X = number of bits set in A C2/4B4D: 8E 77 3A STX $3A77 ; set number of enemies that are alive C2/4B50: 28 PLP C2/4B51: FA PLX C2/4B52: 60 RTS ; [ Random Number (carry) ] _Random2: C2/4B53: 48 PHA C2/4B54: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4B57: 4A LSR C2/4B58: 68 PLA C2/4B59: 60 RTS ; [ Random Number (0..255) ] _Random3: C2/4B5A: DA PHX C2/4B5B: E6 BE INC $BE C2/4B5D: A6 BE LDX $BE C2/4B5F: BF 00 FD C0 LDA $C0FD00,X C2/4B63: FA PLX C2/4B64: 60 RTS ; [ Random Number (0..A-1) ] _Random4: C2/4B65: DA PHX C2/4B66: 08 PHP C2/4B67: E2 30 SEP #$30 C2/4B69: EB XBA C2/4B6A: 48 PHA C2/4B6B: E6 BE INC $BE C2/4B6D: A6 BE LDX $BE C2/4B6F: BF 00 FD C0 LDA $C0FD00,X C2/4B73: 20 81 47 JSR $4781 ; multiply A * B C2/4B76: 68 PLA C2/4B77: EB XBA C2/4B78: 28 PLP C2/4B79: FA PLX C2/4B7A: 60 RTS ; [ Execute Counterattack ] _ReAction: C2/4B7B: 38 SEC C2/4B7C: 6E 07 34 ROR $3407 C2/4B7F: A9 01 LDA #$01 ; set counterattack flag C2/4B81: 04 B1 TSB $B1 C2/4B83: F4 18 00 PEA $0018 ; push return address (start of main code loop) C2/4B86: BD CD 32 LDA $32CD,X C2/4B89: 30 68 BMI $4BF3 ; return if counterattack command list pointer is invalid C2/4B8B: 0A ASL C2/4B8C: A8 TAY C2/4B8D: 20 76 02 JSR $0276 ; init queued action C2/4B90: C9 1F CMP #$1F C2/4B92: D0 08 BNE $4B9C ; branch if not command $1F (random attack) C2/4B94: 20 54 4C JSR $4C54 ; remove next pending counterattack from command list C2/4B97: 20 F4 4B JSR $4BF4 ; AI counterattack C2/4B9A: 80 EA BRA $4B86 C2/4B9C: BD CD 32 LDA $32CD,X ; command list pointer C2/4B9F: A8 TAY C2/4BA0: B9 84 31 LDA $3184,Y ; command list C2/4BA3: DD CD 32 CMP $32CD,X C2/4BA6: D0 02 BNE $4BAA ; branch if character/monster has more than one action pending C2/4BA8: A9 FF LDA #$FF C2/4BAA: 9D CD 32 STA $32CD,X ; set new command list pointer C2/4BAD: A9 FF LDA #$FF C2/4BAF: 99 84 31 STA $3184,Y ; clear old command list slot C2/4BB2: A5 B5 LDA $B5 C2/4BB4: C9 1E CMP #$1E C2/4BB6: B0 1D BCS $4BD5 ; branch if command >= $1E (AI) C2/4BB8: E0 08 CPX #$08 C2/4BBA: B0 19 BCS $4BD5 ; branch if a monster C2/4BBC: BD 18 30 LDA $3018,X C2/4BBF: 2C 39 3A BIT $3A39 C2/4BC2: D0 1F BNE $4BE3 ; branch if character has been sneezed away C2/4BC4: 2C 40 3A BIT $3A40 C2/4BC7: D0 0C BNE $4BD5 ; branch if character is an enemy C2/4BC9: AD 77 3A LDA $3A77 C2/4BCC: F0 15 BEQ $4BE3 ; branch if no enemies are still alive C2/4BCE: BD A0 3A LDA $3AA0,X C2/4BD1: 89 50 BIT #$50 C2/4BD3: D0 0E BNE $4BE3 ; branch if $3AA0.4 or $3AA0.6 are set (atb gauge needs to be updated ???) C2/4BD5: BD 04 32 LDA $3204,X C2/4BD8: 09 04 ORA #$04 C2/4BDA: 9D 04 32 STA $3204,X C2/4BDD: 20 D3 13 JSR $13D3 ; execute command C2/4BE0: 20 1E 02 JSR $021E ; update mimic data C2/4BE3: BD CD 32 LDA $32CD,X C2/4BE6: 1A INC C2/4BE7: D0 07 BNE $4BF0 ; branch if command list pointer is still valid (more pending counterattacks) C2/4BE9: A5 B0 LDA $B0 C2/4BEB: 30 06 BMI $4BF3 ; C2/4BED: 4C 67 02 JMP $0267 ; move character back after attacking C2/4BF0: 8E 07 34 STX $3407 ; set currently counterattacking character/monster C2/4BF3: 60 RTS ; [ AI Counterattack ] readReAction: C2/4BF4: 08 PHP C2/4BF5: C2 20 REP #$20 C2/4BF7: 9C 98 3A STZ $3A98 C2/4BFA: BD 18 30 LDA $3018,X C2/4BFD: 1C FC 33 TRB $33FC C2/4C00: F0 50 BEQ $4C52 C2/4C02: 1C 56 3A TRB $3A56 C2/4C05: D0 21 BNE $4C28 C2/4C07: AD 03 34 LDA $3403 C2/4C0A: 30 05 BMI $4C11 ; branch if quick target is invalid C2/4C0C: EC 04 34 CPX $3404 C2/4C0F: D0 1F BNE $4C30 C2/4C11: BD 60 3E LDA $3E60,X ; status 1 & 2 C2/4C14: 89 00 B0 BIT #$B000 C2/4C17: D0 17 BNE $4C30 ; branch if psyche, muddled, or berserk status C2/4C19: BD 74 3E LDA $3E74,X ; status 3 & 4 C2/4C1C: 89 10 02 BIT #$0210 C2/4C1F: D0 0F BNE $4C30 ; branch if frozen or stop status C2/4C21: BD 94 33 LDA $3394,X C2/4C24: 10 0A BPL $4C30 C2/4C26: 80 0B BRA $4C33 C2/4C28: BD 18 30 LDA $3018,X C2/4C2B: 0C FE 33 TSB $33FE C2/4C2E: F0 E1 BEQ $4C11 C2/4C30: CE 98 3A DEC $3A98 ; only execute until the first "wait until next turn", "end if", or "end of script" C2/4C33: BD 68 32 LDA $3268,X ; start of counterattack AI script C2/4C36: 85 F0 STA $F0 C2/4C38: BD 20 3D LDA $3D20,X ; AI script loop address (counterattack) C2/4C3B: 85 F2 STA $F2 C2/4C3D: BD 41 32 LDA $3241,X ; AI loop counter C2/4C40: 85 F4 STA $F4 C2/4C42: 18 CLC C2/4C43: 20 2F 1A JSR $1A2F ; execute AI script C2/4C46: A5 F2 LDA $F2 C2/4C48: 9D 20 3D STA $3D20,X ; update AI script loop address (counterattack) C2/4C4B: E2 20 SEP #$20 C2/4C4D: A5 F5 LDA $F5 C2/4C4F: 9D 41 32 STA $3241,X ; update AI loop counter C2/4C52: 28 PLP C2/4C53: 60 RTS ; [ Remove Next Pending Counterattack from Command List ] _DeleteReAction: C2/4C54: DA PHX C2/4C55: E8 INX ; X points to $32CD instead of $32CC C2/4C56: 20 01 03 JSR $0301 ; remove next pending action from command list C2/4C59: FA PLX C2/4C5A: 60 RTS ; [ Check for Counterattacks ] _ReActionCheck: C2/4C5B: A2 12 LDX #$12 ; loop through all targets C2/4C5D: BD A0 3A LDA $3AA0,X ; $3AA0.0 skip if target is not present C2/4C60: 4A LSR C2/4C61: 90 5B BCC $4CBE C2/4C63: AD 1A 34 LDA $341A ; skip if counterattacks are disabled C2/4C66: F0 56 BEQ $4CBE C2/4C68: 64 B8 STZ $B8 ; clear targets C2/4C6A: 64 B9 STZ $B9 C2/4C6C: BD E0 32 LDA $32E0,X ; last character/monster that targetted this target C2/4C6F: 10 15 BPL $4C86 ; C2/4C71: 0A ASL C2/4C72: 85 EE STA $EE C2/4C74: E4 EE CPX $EE C2/4C76: F0 0E BEQ $4C86 C2/4C78: A8 TAY C2/4C79: C2 20 REP #$20 C2/4C7B: B9 18 30 LDA $3018,Y C2/4C7E: 85 B8 STA $B8 C2/4C80: BD 18 30 LDA $3018,X C2/4C83: 1C FE 33 TRB $33FE C2/4C86: C2 20 REP #$20 C2/4C88: BD 18 30 LDA $3018,X C2/4C8B: 2C 56 3A BIT $3A56 C2/4C8E: E2 20 SEP #$20 C2/4C90: D0 0B BNE $4C9D C2/4C92: A5 B1 LDA $B1 ; counterattack flag C2/4C94: 4A LSR C2/4C95: B0 27 BCS $4CBE ; skip if a counterattack (can't counter a counter) C2/4C97: A5 B8 LDA $B8 C2/4C99: 05 B9 ORA $B9 C2/4C9B: F0 21 BEQ $4CBE C2/4C9D: BD 69 32 LDA $3269,X ; pointer to AI counterattack script C2/4CA0: 30 0F BMI $4CB1 C2/4CA2: BD CD 32 LDA $32CD,X ; counter queue pointer C2/4CA5: 10 0A BPL $4CB1 ; branch if waiting to execute a counter alread C2/4CA7: A9 1F LDA #$1F C2/4CA9: 8D 7A 3A STA $3A7A C2/4CAC: 20 B2 4E JSR $4EB2 ; create counterattack action C2/4CAF: 80 0D BRA $4CBE C2/4CB1: E0 08 CPX #$08 C2/4CB3: B0 09 BCS $4CBE ; skip if a monster C2/4CB5: AD A2 11 LDA $11A2 ; C2/4CB8: 4A LSR C2/4CB9: 90 03 BCC $4CBE C2/4CBB: 20 C3 4C JSR $4CC3 ; check retort and black belt C2/4CBE: CA DEX ; next character/monster C2/4CBF: CA DEX C2/4CC0: 10 9B BPL $4C5D C2/4CC2: 60 RTS ; [ Check Retort and Black Belt ] playerOnly: C2/4CC3: BD 4C 3E LDA $3E4C,X ; branch if retort flag is not set ($3E4C.0) C2/4CC6: 4A LSR C2/4CC7: 90 0D BCC $4CD6 C2/4CC9: A9 07 LDA #$07 C2/4CCB: 8D 7A 3A STA $3A7A C2/4CCE: A9 56 LDA #$56 C2/4CD0: 8D 7B 3A STA $3A7B C2/4CD3: 4C B2 4E JMP $4EB2 ; create counterattack action C2/4CD6: A5 B9 LDA $B9 ; return if attacker was a character C2/4CD8: F0 E8 BEQ $4CC2 C2/4CDA: EC 16 34 CPX $3416 ; branch if target is not protected by interceptor C2/4CDD: D0 15 BNE $4CF4 C2/4CDF: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4CE2: 4A LSR C2/4CE3: 90 0F BCC $4CF4 C2/4CE5: 4A LSR C2/4CE6: 7B TDC C2/4CE7: 69 FC ADC #$FC C2/4CE9: 8D 7B 3A STA $3A7B C2/4CEC: A9 02 LDA #$02 C2/4CEE: 8D 7A 3A STA $3A7A C2/4CF1: 4C B2 4E JMP $4EB2 ; create counterattack action C2/4CF4: BD 18 30 LDA $3018,X ; return if not a black belt target C2/4CF7: 2C 19 34 BIT $3419 C2/4CFA: D0 C6 BNE $4CC2 C2/4CFC: BD 58 3C LDA $3C58,X ; return if black belt not equipped C2/4CFF: 89 02 BIT #$02 C2/4D01: F0 BF BEQ $4CC2 C2/4D03: 20 5A 4B JSR $4B5A ; random number (0..255) C2/4D06: C9 C0 CMP #$C0 C2/4D08: B0 B8 BCS $4CC2 ; 3/4 chance to return C2/4D0A: 9B TXY C2/4D0B: F4 CA A0 PEA $A0CA ; check for various status C2/4D0E: F4 11 32 PEA $3211 C2/4D11: 20 64 58 JSR $5864 ; check if status set C2/4D14: 90 AC BCC $4CC2 ; return if any are set C2/4D16: 9C 7A 3A STZ $3A7A ; clear command and attack C2/4D19: 9C 7B 3A STZ $3A7B C2/4D1C: 4C B2 4E JMP $4EB2 ; create counterattack action ; [ create pending user actions ] _ReadInput: C2/4D1F: AC 6A 3A LDY $3A6A ; pointer to pending user action queue C2/4D22: B9 AE 2B LDA $2BAE,Y ; character slot C2/4D25: 30 45 BMI $4D6C ; return if there are no pending actions C2/4D27: 0A ASL C2/4D28: AA TAX C2/4D29: 20 66 4E JSR $4E66 ; add action to advance wait queue C2/4D2C: A9 7B LDA #$7B ; should this be #$7D to skip advance wait ??? C2/4D2E: 20 92 07 JSR $0792 ; clear $3AA0.2 and $3AA0.7 (ogre nix can break, battle menu can't open) C2/4D31: A9 FF LDA #$FF C2/4D33: 99 AE 2B STA $2BAE,Y ; clear queue slot C2/4D36: 98 TYA C2/4D37: 69 08 ADC #$08 ; loop through 4 characters C2/4D39: 29 18 AND #$18 C2/4D3B: 8D 6A 3A STA $3A6A C2/4D3E: 20 6D 4D JSR $4D6D ; get targets C2/4D41: B9 B0 2B LDA $2BB0,Y ; attack C2/4D44: EB XBA C2/4D45: B9 AF 2B LDA $2BAF,Y ; command C2/4D48: 20 89 4D JSR $4D89 ; fix attack index C2/4D4B: 20 77 4D JSR $4D77 ; fix command C2/4D4E: 20 CB 4E JSR $4ECB ; create normal action C2/4D51: B9 AF 2B LDA $2BAF,Y C2/4D54: C9 17 CMP #$17 C2/4D56: D0 C7 BNE $4D1F ; go to next queue slot if not x-magic C2/4D58: C8 INY ; get secondary attack C2/4D59: C8 INY C2/4D5A: C8 INY C2/4D5B: 20 6D 4D JSR $4D6D ; get targets C2/4D5E: B9 B0 2B LDA $2BB0,Y ; attack C2/4D61: EB XBA C2/4D62: A9 17 LDA #$17 ; x-magic C2/4D64: 20 77 4D JSR $4D77 ; fix command C2/4D67: 20 CB 4E JSR $4ECB ; create normal action C2/4D6A: 80 B3 BRA $4D1F ; go to next queue slot C2/4D6C: 60 RTS ; [ get targets ] readTarget: C2/4D6D: 08 PHP C2/4D6E: C2 20 REP #$20 C2/4D70: B9 B1 2B LDA $2BB1,Y ; targets C2/4D73: 85 B8 STA $B8 C2/4D75: 28 PLP C2/4D76: 60 RTS ; [ fix command ] setBuffer: C2/4D77: 08 PHP C2/4D78: C2 20 REP #$20 C2/4D7A: 8D 7A 3A STA $3A7A ; set command index C2/4D7D: BD E4 3E LDA $3EE4,X ; status 1 and 2 C2/4D80: 89 02 20 BIT #$2002 ; return if not muddled or zombie C2/4D83: F0 02 BEQ $4D87 C2/4D85: 64 B8 STZ $B8 ; clear targets C2/4D87: 28 PLP C2/4D88: 60 RTS ; [ fix attack index ] replace: C2/4D89: DA PHX C2/4D8A: 5A PHY C2/4D8B: 9B TXY C2/4D8C: C9 17 CMP #$17 C2/4D8E: D0 02 BNE $4D92 ; branch if not x-magic C2/4D90: A9 02 LDA #$02 C2/4D92: C9 19 CMP #$19 C2/4D94: D0 11 BNE $4DA7 ; branch if not summon C2/4D96: 48 PHA C2/4D97: EB XBA C2/4D98: C9 FF CMP #$FF C2/4D9A: D0 03 BNE $4D9F C2/4D9C: B9 44 33 LDA $3344,Y C2/4D9F: EB XBA C2/4DA0: B9 18 30 LDA $3018,Y C2/4DA3: 0C 2E 3F TSB $3F2E C2/4DA6: 68 PLA C2/4DA7: C9 01 CMP #$01 C2/4DA9: F0 04 BEQ $4DAF ; branch if item C2/4DAB: C9 08 CMP #$08 C2/4DAD: D0 05 BNE $4DB4 ; branch if not throw C2/4DAF: EB XBA C2/4DB0: 99 F4 32 STA $32F4,Y C2/4DB3: EB XBA C2/4DB4: C9 0F CMP #$0F C2/4DB6: D0 23 BNE $4DDB ; branch if not slot C2/4DB8: 48 PHA C2/4DB9: EB XBA C2/4DBA: AA TAX C2/4DBB: BF 4A 4E C2 LDA $C24E4A,X ; slot spell numbers C2/4DBF: E0 02 CPX #$02 C2/4DC1: B0 0F BCS $4DD2 ; branch if not joker doom C2/4DC3: 48 PHA C2/4DC4: BF 52 4E C2 LDA $C24E52,X ; joker doom targets C2/4DC8: 95 B8 STA $B8,X C2/4DCA: A5 B8 LDA $B8 C2/4DCC: 4D 40 3A EOR $3A40 C2/4DCF: 85 B8 STA $B8 C2/4DD1: 68 PLA C2/4DD2: C9 FF CMP #$FF C2/4DD4: D0 03 BNE $4DD9 ; branch if not esper C2/4DD6: 20 DC 37 JSR $37DC ; choose a random esper C2/4DD9: EB XBA C2/4DDA: 68 PLA C2/4DDB: C9 13 CMP #$13 C2/4DDD: D0 0D BNE $4DEC ; branch if not dance C2/4DDF: 48 PHA C2/4DE0: EB XBA C2/4DE1: 99 E1 32 STA $32E1,Y C2/4DE4: 8D 6F 3A STA $3A6F C2/4DE7: 20 9C 05 JSR $059C ; pick a random dance C2/4DEA: EB XBA C2/4DEB: 68 PLA C2/4DEC: C9 10 CMP #$10 C2/4DEE: D0 0A BNE $4DFA ; branch if not rage C2/4DF0: 48 PHA C2/4DF1: EB XBA C2/4DF2: 99 A8 33 STA $33A8,Y C2/4DF5: 20 D1 05 JSR $05D1 C2/4DF8: EB XBA C2/4DF9: 68 PLA C2/4DFA: C9 0A CMP #$0A C2/4DFC: D0 15 BNE $4E13 ; branch if not blitz C2/4DFE: 48 PHA C2/4DFF: EB XBA C2/4E00: 48 PHA C2/4E01: 30 0D BMI $4E10 C2/4E03: AA TAX C2/4E04: 20 57 1E JSR $1E57 C2/4E07: 2C 28 1D BIT $1D28 C2/4E0A: D0 04 BNE $4E10 C2/4E0C: A9 FF LDA #$FF C2/4E0E: 83 01 STA $01,S C2/4E10: 68 PLA C2/4E11: EB XBA C2/4E12: 68 PLA C2/4E13: A2 04 LDX #$04 C2/4E15: DF 3C 4E C2 CMP $C24E3C,X ; check commands with attack numbers C2/4E19: D0 0B BNE $4E26 C2/4E1B: EB XBA C2/4E1C: 18 CLC C2/4E1D: 7F 41 4E C2 ADC $C24E41,X ; add attack offset C2/4E21: 90 02 BCC $4E25 C2/4E23: A9 EE LDA #$EE ; use command $EE on overflow (battle) C2/4E25: EB XBA C2/4E26: CA DEX ; check next command C2/4E27: 10 EC BPL $4E15 C2/4E29: 48 PHA C2/4E2A: 18 CLC C2/4E2B: 20 17 52 JSR $5217 ; get bit mask and byte number C2/4E2E: 3F 46 4E C2 AND $C24E46,X ; commands that need to retarget C2/4E32: F0 04 BEQ $4E38 ; branch if no retarget C2/4E34: 64 B8 STZ $B8 ; clear targets C2/4E36: 64 B9 STZ $B9 C2/4E38: 68 PLA C2/4E39: 7A PLY C2/4E3A: FA PLX C2/4E3B: 60 RTS ; commands with attack numbers (summon, lore, magitek, blitz, swdtech) C2/4E3C: .DB $19, $0C, $1D, $0A, $07 ; attack offset for above commands C2/4E41: .DB $36, $8B, $83, $5D, $55 ; bitmask of commands that need to retarget (swdtech, blitz, rage, leap, dance) C2/4E46: .DB $80, $04, $0B, $00 ; slot spell numbers ($FF is esper) C2/4E4A: .DB $94, $94, $43, $FF, $80, $7F, $81, $FE ; joker doom targetting (all characters or all monsters) C2/4E52: .DB $0F, $3F ; [ Add Command to Command List ] ; A = pointer to command list (out) _Malloc: C2/4E54: DA PHX C2/4E55: A2 7F LDX #$7F C2/4E57: BD 84 31 LDA $3184,X ; command list C2/4E5A: 30 04 BMI $4E60 C2/4E5C: CA DEX C2/4E5D: 10 F8 BPL $4E57 ; look for the first empty slot C2/4E5F: E8 INX C2/4E60: 8A TXA C2/4E61: 9D 84 31 STA $3184,X ; set pointer to command list C2/4E64: FA PLX C2/4E65: 60 RTS ; [ Add Action to Advance Wait Queue ] _CircleInputWrite: C2/4E66: 8A TXA C2/4E67: DA PHX C2/4E68: AE 65 3A LDX $3A65 ; advance wait queue end C2/4E6B: 9D 20 37 STA $3720,X ; add action C2/4E6E: FA PLX C2/4E6F: EE 65 3A INC $3A65 ; increment advance wait queue end C2/4E72: A9 FE LDA #$FE C2/4E74: 4C 43 0A JMP $0A43 ; clear $3AA1.0 ; [ Add Action to Action Queue ] _CircleActionWrite: C2/4E77: 8A TXA C2/4E78: DA PHX C2/4E79: AE 67 3A LDX $3A67 C2/4E7C: 9D 20 38 STA $3820,X C2/4E7F: FA PLX C2/4E80: EE 67 3A INC $3A67 C2/4E83: 60 RTS ; [ Add Action to Counterattack Queue ] ; X = character/monster number _CircleReActionWrite: C2/4E84: 8A TXA C2/4E85: DA PHX C2/4E86: AE 69 3A LDX $3A69 ; counterattack queue end C2/4E89: 9D 20 39 STA $3920,X ; add counterattack action C2/4E8C: FA PLX C2/4E8D: EE 69 3A INC $3A69 ; increment counterattack queue end C2/4E90: 60 RTS ; [ Create Immediate Action ] ; A = command index ; X = attack index ; $B8 = spell index _InstallE: C2/4E91: 5A PHY C2/4E92: 08 PHP C2/4E93: E2 20 SEP #$20 C2/4E95: 8D 7A 3A STA $3A7A ; command C2/4E98: 8E 7B 3A STX $3A7B ; attack C2/4E9B: 20 54 4E JSR $4E54 ; add command to command list C2/4E9E: 48 PHA C2/4E9F: AD 0A 34 LDA $340A ; branch if there's already an immediate action C2/4EA2: C9 FF CMP #$FF C2/4EA4: D0 39 BNE $4EDF C2/4EA6: A3 01 LDA $01,S ; set immediate action C2/4EA8: 8D 0A 34 STA $340A C2/4EAB: 80 32 BRA $4EDF ; [ Create Action ] _InstallAR: C2/4EAD: A5 B1 LDA $B1 ; counterattack flag C2/4EAF: 4A LSR C2/4EB0: 90 19 BCC $4ECB ; branch if not a counterattack ; fall through ; [ Create Counterattack Action ] _InstallR: C2/4EB2: 5A PHY C2/4EB3: 08 PHP C2/4EB4: E2 20 SEP #$20 C2/4EB6: 20 54 4E JSR $4E54 ; add command to command list C2/4EB9: 48 PHA C2/4EBA: BD CD 32 LDA $32CD,X ; get character/monster's current command list pointer (counterattack) C2/4EBD: C9 FF CMP #$FF C2/4EBF: D0 1E BNE $4EDF ; branch if there was already a counterattack pending C2/4EC1: 20 84 4E JSR $4E84 ; add pending action to counterattack queue C2/4EC4: A3 01 LDA $01,S C2/4EC6: 9D CD 32 STA $32CD,X ; set the character/monster's command list pointer (counterattack) C2/4EC9: 80 14 BRA $4EDF ; [ Create Normal Action ] _InstallA: C2/4ECB: 5A PHY C2/4ECC: 08 PHP C2/4ECD: E2 20 SEP #$20 C2/4ECF: 20 54 4E JSR $4E54 ; add command to command list C2/4ED2: 48 PHA ; push new command list pointer C2/4ED3: BD CC 32 LDA $32CC,X ; get character/monster's current command list pointer C2/4ED6: C9 FF CMP #$FF C2/4ED8: D0 05 BNE $4EDF ; branch if there was already an action pending C2/4EDA: A3 01 LDA $01,S C2/4EDC: 9D CC 32 STA $32CC,X ; set the character/monster's command list pointer to the new pointer ; [ common code for creating actions ] _Install: C2/4EDF: A8 TAY C2/4EE0: D9 84 31 CMP $3184,Y ; pending action pointer (or new pointer if none pending) C2/4EE3: F0 07 BEQ $4EEC ; branch if none pending C2/4EE5: B9 84 31 LDA $3184,Y ; look for the last pending action C2/4EE8: 30 02 BMI $4EEC C2/4EEA: 80 F3 BRA $4EDF C2/4EEC: 68 PLA C2/4EED: 99 84 31 STA $3184,Y ; set the next-to-last pending action to reference the new last action C2/4EF0: 0A ASL C2/4EF1: A8 TAY C2/4EF2: 20 08 4F JSR $4F08 ; calculate mp cost C2/4EF5: 99 20 36 STA $3620,Y ; add to mp cost queue C2/4EF8: C2 20 REP #$20 C2/4EFA: AD 7A 3A LDA $3A7A ; command/attack C2/4EFD: 99 20 34 STA $3420,Y ; add to command/attack queue C2/4F00: A5 B8 LDA $B8 ; targets C2/4F02: 99 20 35 STA $3520,Y ; add to targets queue C2/4F05: 28 PLP C2/4F06: 7A PLY C2/4F07: 60 RTS ; [ Calculate MP Cost ] _SetUseMp: C2/4F08: DA PHX C2/4F09: 08 PHP C2/4F0A: 7B TDC C2/4F0B: A9 40 LDA #$40 C2/4F0D: 14 B1 TRB $B1 C2/4F0F: D0 42 BNE $4F53 C2/4F11: AD 7A 3A LDA $3A7A ; command C2/4F14: C9 19 CMP #$19 C2/4F16: F0 0C BEQ $4F24 ; branch if command is summon C2/4F18: C9 0C CMP #$0C C2/4F1A: F0 08 BEQ $4F24 ; branch if command is lore C2/4F1C: C9 02 CMP #$02 C2/4F1E: F0 04 BEQ $4F24 ; branch if command is magic C2/4F20: C9 17 CMP #$17 C2/4F22: D0 2F BNE $4F53 ; return if command is not x-magic C2/4F24: C2 10 REP #$10 C2/4F26: AD 7B 3A LDA $3A7B ; branch if attacker is a monster C2/4F29: E0 08 00 CPX #$0008 C2/4F2C: B0 19 BCS $4F47 C2/4F2E: DA PHX C2/4F2F: AA TAX C2/4F30: BD 84 30 LDA $3084,X ; pointer to master spell list C2/4F33: FA PLX C2/4F34: C9 FF CMP #$FF C2/4F36: F0 1B BEQ $4F53 ; return if spell is not in list C2/4F38: C2 20 REP #$20 C2/4F3A: 0A ASL C2/4F3B: 0A ASL C2/4F3C: 7D 2C 30 ADC $302C,X ; calculate pointer to character spell list (at $208E) C2/4F3F: AA TAX C2/4F40: E2 20 SEP #$20 C2/4F42: BD 03 00 LDA $0003,X ; modified mp cost (byte 3) C2/4F45: 80 0D BRA $4F54 C2/4F47: EB XBA C2/4F48: A9 0E LDA #$0E ; calculate pointer to spell data C2/4F4A: 20 81 47 JSR $4781 ; multiply A * B C2/4F4D: AA TAX C2/4F4E: BF C5 6A C4 LDA $C46AC5,X ; mp cost from spell data C2/4F52: EB XBA C2/4F53: EB XBA C2/4F54: 28 PLP C2/4F55: FA PLX C2/4F56: 60 RTS ; [ Command $23: Execute Battle Event ] _Itou: C2/4F57: A5 B6 LDA $B6 ; C2/4F59: EB XBA C2/4F5A: A9 0F LDA #$0F ; battle script command $0F (execute battle event) C2/4F5C: 4C BF 62 JMP $62BF ; add battle script command to queue ; [ Command $26: Cast Spell with no Caster ] _SelfMagic: C2/4F5F: A5 B8 LDA $B8 C2/4F61: A6 B6 LDX $B6 C2/4F63: 85 B6 STA $B6 C2/4F65: C9 0D CMP #$0D C2/4F67: D0 0F BNE $4F78 ; branch if spell is not $0D (doom) C2/4F69: BD 04 32 LDA $3204,X ; stop condemned counter C2/4F6C: 09 10 ORA #$10 C2/4F6E: 9D 04 32 STA $3204,X C2/4F71: AD 77 3A LDA $3A77 C2/4F74: F0 69 BEQ $4FDF ; return if there are no enemies alive C2/4F76: A9 0D LDA #$0D ; spell $0D (doom) C2/4F78: EB XBA C2/4F79: A9 02 LDA #$02 ; command $02 (magic) C2/4F7B: 85 B5 STA $B5 C2/4F7D: 20 D3 26 JSR $26D3 ; init attack based on command C2/4F80: 20 51 29 JSR $2951 ; update hit rate and level C2/4F83: A9 10 LDA #$10 C2/4F85: 14 B0 TRB $B0 ; C2/4F87: A9 02 LDA #$02 C2/4F89: 8D A3 11 STA $11A3 ; C2/4F8C: A9 20 LDA #$20 C2/4F8E: 0C A4 11 TSB $11A4 ; C2/4F91: 9C A5 11 STZ $11A5 ; zero mp cost C2/4F94: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ Command $24: Show/Hide Monsters ] _Death: C2/4F97: 9C 2A 3A STZ $3A2A C2/4F9A: 9C 2B 3A STZ $3A2B C2/4F9D: AD 73 3A LDA $3A73 C2/4FA0: 49 FF EOR #$FF C2/4FA2: 14 B9 TRB $B9 C2/4FA4: A5 B8 LDA $B8 C2/4FA6: 0A ASL C2/4FA7: AA TAX C2/4FA8: A0 12 LDY #$12 C2/4FAA: B9 19 30 LDA $3019,Y C2/4FAD: 24 B9 BIT $B9 C2/4FAF: F0 03 BEQ $4FB4 C2/4FB1: FC E4 51 JSR ($51E4,X) C2/4FB4: 88 DEY C2/4FB5: 88 DEY C2/4FB6: C0 08 CPY #$08 C2/4FB8: B0 F0 BCS $4FAA C2/4FBA: A5 B6 LDA $B6 C2/4FBC: EB XBA C2/4FBD: A9 13 LDA #$13 C2/4FBF: 4C BF 62 JMP $62BF ; add battle script command to queue ; $04: hide monsters but don't allow battle to end C2/4FC2: 48 PHA C2/4FC3: A9 FF LDA #$FF C2/4FC5: 8D 95 3A STA $3A95 ; don't allow battle to end C2/4FC8: 68 PLA C2/4FC9: 80 03 BRA $4FCE ; $01: hide monsters C2/4FCB: 0C 4D 2F TSB $2F4D ; ; fall through ; $03: hide monsters (can still be targetted) death_local: C2/4FCE: 1C 09 34 TRB $3409 C2/4FD1: 1C 2F 2F TRB $2F2F C2/4FD4: 0C 2A 3A TSB $3A2A C2/4FD7: B9 F9 3E LDA $3EF9,Y ; set hide status C2/4FDA: 09 20 ORA #$20 C2/4FDC: 99 F9 3E STA $3EF9,Y C2/4FDF: 60 RTS ; $00: revive and restore hp C2/4FE0: 48 PHA C2/4FE1: C2 20 REP #$20 C2/4FE3: B9 1C 3C LDA $3C1C,Y ; max hp C2/4FE6: 99 F4 3B STA $3BF4,Y ; set current hp to max C2/4FE9: E2 20 SEP #$20 C2/4FEB: 68 PLA ; fall through ; $02: revive monsters at current hp C2/4FEC: 1C 3A 3A TRB $3A3A ; clear "monsters that have died/escaped" flag C2/4FEF: 0C 2F 2F TSB $2F2F ; set "monsters that are not dead" flag C2/4FF2: 0C 2B 3A TSB $3A2B ; battle script command byte 4 C2/4FF5: 0C 4F 2F TSB $2F4F ; monster can be targetted C2/4FF8: 0C 09 34 TSB $3409 ; monster was revived/summoned C2/4FFB: 9C 95 3A STZ $3A95 ; allow battle to end C2/4FFE: 60 RTS ; $05: hide monsters and set wound status C2/4FFF: 20 CE 4F JSR $4FCE ; hide monsters C2/5002: B9 E4 3E LDA $3EE4,Y ; set wound status C2/5005: 09 80 ORA #$80 C2/5007: 99 E4 3E STA $3EE4,Y C2/500A: 60 RTS ; [ Command $22: Enemy Roulette / DoT Damage ] Rigene: C2/500B: AD 77 3A LDA $3A77 C2/500E: F0 CF BEQ $4FDF ; return if no enemies are alive C2/5010: B9 A1 3A LDA $3AA1,Y ; clear $3AA1.4 (target no longer has a pending DoT action) C2/5013: 29 EF AND #$EF C2/5015: 99 A1 3A STA $3AA1,Y C2/5018: B9 A0 3A LDA $3AA0,Y C2/501B: 89 10 BIT #$10 C2/501D: D0 C0 BNE $4FDF ; branch if $3AA0.4 is set C2/501F: 20 8A 29 JSR $298A C2/5022: A9 90 LDA #$90 C2/5024: 14 B3 TRB $B3 C2/5026: A9 12 LDA #$12 C2/5028: 85 B5 STA $B5 C2/502A: A9 68 LDA #$68 C2/502C: 8D A2 11 STA $11A2 C2/502F: 4E A4 11 LSR $11A4 C2/5032: A5 B6 LDA $B6 C2/5034: 4A LSR C2/5035: 4A LSR C2/5036: 2E A4 11 ROL $11A4 C2/5039: 4A LSR C2/503A: 90 15 BCC $5051 C2/503C: B9 24 3E LDA $3E24,Y C2/503F: 85 BD STA $BD C2/5041: 1A INC C2/5042: 1A INC C2/5043: C9 0F CMP #$0F C2/5045: 90 02 BCC $5049 C2/5047: A9 0E LDA #$0E C2/5049: 99 24 3E STA $3E24,Y C2/504C: A9 08 LDA #$08 C2/504E: 8D A1 11 STA $11A1 C2/5051: B9 40 3B LDA $3B40,Y C2/5054: 85 E8 STA $E8 C2/5056: C2 20 REP #$20 C2/5058: B9 1C 3C LDA $3C1C,Y C2/505B: 20 B7 47 JSR $47B7 ; +A *= $E8 / 256 C2/505E: 4A LSR C2/505F: 4A LSR C2/5060: C9 FE 00 CMP #$00FE C2/5063: E2 20 SEP #$20 C2/5065: 90 02 BCC $5069 C2/5067: A9 FC LDA #$FC C2/5069: 69 02 ADC #$02 C2/506B: 8D A6 11 STA $11A6 C2/506E: BB TYX C2/506F: 4C 67 31 JMP $3167 ; execute attacks (self-target) ; [ Command $20: Battle Change ] ; +$B8: battle index (restore monsters to full hp/mp if msb set) _SceneChange: C2/5072: A5 B8 LDA $B8 C2/5074: 8D E0 11 STA $11E0 ; battle index C2/5077: 0E 47 3A ASL $3A47 C2/507A: A5 B9 LDA $B9 C2/507C: 49 80 EOR #$80 ; invert msb C2/507E: 0A ASL C2/507F: 6E 47 3A ROR $3A47 ; set $3A47.7 if msb clear C2/5082: 4A LSR C2/5083: 8D E1 11 STA $11E1 C2/5086: 20 E8 30 JSR $30E8 ; load battle data C2/5089: C2 20 REP #$20 C2/508B: A2 0A LDX #$0A C2/508D: 9E A8 3A STZ $3AA8,X ; clear monster status flags C2/5090: 9E 54 3E STZ $3E54,X C2/5093: 7B TDC C2/5094: 3A DEC C2/5095: 9D 01 20 STA $2001,X ; clear monster indexes C2/5098: A9 BC FF LDA #$FFBC C2/509B: 9D 0C 32 STA $320C,X ; clear monster update flags C2/509E: CA DEX C2/509F: CA DEX C2/50A0: 10 EB BPL $508D C2/50A2: E2 20 SEP #$20 C2/50A4: 20 E1 2E JSR $2EE1 ; C2/50A7: 20 91 43 JSR $4391 ; update status C2/50AA: 20 9B 06 JSR $069B ; update special status (seize, control, love token, etc.) C2/50AD: 20 3F 08 JSR $083F ; update targets after each command C2/50B0: 20 B9 4A JSR $4AB9 ; update living/dead targets C2/50B3: 20 C9 26 JSR $26C9 ; init status immunity C2/50B6: 20 3A 2E JSR $2E3A ; init battle type C2/50B9: AD 75 3A LDA $3A75 C2/50BC: 8D 2B 3A STA $3A2B C2/50BF: AD 1E 20 LDA $201E C2/50C2: 8D 2A 3A STA $3A2A C2/50C5: A5 B6 LDA $B6 C2/50C7: EB XBA C2/50C8: A9 12 LDA #$12 C2/50CA: 4C BF 62 JMP $62BF ; add battle script command to queue ; [ Command $25: Display Long Battle Dialog ] _Message2: C2/50CD: A9 02 LDA #$02 ; battle script command $02 (display long battle dialog) C2/50CF: 80 02 BRA $50D3 ; [ Command $21: Display Short Battle Dialog ] _Message: C2/50D1: A9 10 LDA #$10 ; battle script command $10 (display short battle dialog) message_ATMK: C2/50D3: EB XBA C2/50D4: A5 B6 LDA $B6 ; short battle dialog index C2/50D6: EB XBA C2/50D7: 9C 2A 3A STZ $3A2A ; clear battle script command byte 3 C2/50DA: 4C BF 62 JMP $62BF ; add battle script command to queue ; [ Command $27: Display Scan Info ] _Ribra: C2/50DD: A6 B6 LDX $B6 C2/50DF: A9 FF LDA #$FF ; battle script command $FF (end of script) C2/50E1: 8D 72 2D STA $2D72 C2/50E4: A9 02 LDA #$02 ; battle script command $02 (show battle message) C2/50E6: 8D 6E 2D STA $2D6E C2/50E9: 9C 36 2F STZ $2F36 C2/50EC: 9C 37 2F STZ $2F37 C2/50EF: 9C 3A 2F STZ $2F3A C2/50F2: BD 18 3B LDA $3B18,X ; level C2/50F5: 8D 35 2F STA $2F35 C2/50F8: A9 34 LDA #$34 ; battle message $34 "Level " C2/50FA: 8D 6F 2D STA $2D6F C2/50FD: A9 04 LDA #$04 C2/50FF: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/5102: C2 20 REP #$20 C2/5104: BD F4 3B LDA $3BF4,X ; current hp C2/5107: 8D 35 2F STA $2F35 C2/510A: BD 1C 3C LDA $3C1C,X ; max hp C2/510D: 8D 38 2F STA $2F38 C2/5110: E2 20 SEP #$20 C2/5112: A9 30 LDA #$30 ; battle message $30 "HP /" C2/5114: 8D 6F 2D STA $2D6F C2/5117: A9 04 LDA #$04 C2/5119: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/511C: C2 20 REP #$20 C2/511E: BD 08 3C LDA $3C08,X ; current mp C2/5121: 8D 35 2F STA $2F35 C2/5124: BD 30 3C LDA $3C30,X ; max mp C2/5127: 8D 38 2F STA $2F38 C2/512A: E2 20 SEP #$20 C2/512C: F0 0A BEQ $5138 ; branch if max mp = 0 C2/512E: A9 31 LDA #$31 ; battle message $31 "MP /" C2/5130: 8D 6F 2D STA $2D6F C2/5133: A9 04 LDA #$04 C2/5135: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/5138: A9 15 LDA #$15 ; battle message $15 "Weak against fire" C2/513A: 8D 6F 2D STA $2D6F C2/513D: BD E0 3B LDA $3BE0,X ; set weak elements C2/5140: 85 EE STA $EE C2/5142: BD E1 3B LDA $3BE1,X ; clear halved elements C2/5145: 1D CC 3B ORA $3BCC,X ; clear absorbed elements C2/5148: 1D CD 3B ORA $3BCD,X ; clear immune elements C2/514B: 14 EE TRB $EE C2/514D: A9 01 LDA #$01 C2/514F: 24 EE BIT $EE C2/5151: F0 07 BEQ $515A C2/5153: 48 PHA C2/5154: A9 04 LDA #$04 C2/5156: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/5159: 68 PLA C2/515A: EE 6F 2D INC $2D6F ; next element C2/515D: 0A ASL C2/515E: 90 EF BCC $514F C2/5160: 60 RTS ; [ Command $29: Stop, Reflect, Freeze, or Psyche Counter Just Word Off ] _Timer: C2/5161: AE 7D 3A LDX $3A7D C2/5164: 20 8A 29 JSR $298A C2/5167: A9 12 LDA #$12 C2/5169: 85 B5 STA $B5 C2/516B: A9 10 LDA #$10 C2/516D: 14 B0 TRB $B0 C2/516F: 46 B8 LSR $B8 C2/5171: 90 05 BCC $5178 C2/5173: A9 10 LDA #$10 C2/5175: 0C AC 11 TSB $11AC C2/5178: 46 B8 LSR $B8 C2/517A: 90 05 BCC $5181 C2/517C: A9 80 LDA #$80 C2/517E: 0C AC 11 TSB $11AC C2/5181: 46 B8 LSR $B8 C2/5183: 90 05 BCC $518A C2/5185: A9 02 LDA #$02 C2/5187: 0C AD 11 TSB $11AD C2/518A: 46 B8 LSR $B8 C2/518C: 90 12 BCC $51A0 C2/518E: A9 80 LDA #$80 C2/5190: 3D E5 3E AND $3EE5,X C2/5193: F0 0B BEQ $51A0 C2/5195: 0C AB 11 TSB $11AB C2/5198: A9 02 LDA #$02 C2/519A: 85 B5 STA $B5 C2/519C: A9 78 LDA #$78 C2/519E: 85 B6 STA $B6 C2/51A0: A9 04 LDA #$04 C2/51A2: 0C A4 11 TSB $11A4 C2/51A5: 4C 67 31 JMP $3167 ; [ Command $2C: Clear Character Graphical Action ] _CancelInputAnima: C2/51A8: AD 7D 3A LDA $3A7D C2/51AB: 4A LSR C2/51AC: EB XBA C2/51AD: A9 0E LDA #$0E ; battle script command $0E (clear character graphical action) C2/51AF: 4C BF 62 JMP $62BF ; add battle script command to queue ; [ Command $2D: Seize Status HP Drain ] _Capture: C2/51B2: B9 A1 3A LDA $3AA1,Y ; clear $3AA1.4 (target no longer has a pending DoT action) C2/51B5: 29 EF AND #$EF C2/51B7: 99 A1 3A STA $3AA1,Y C2/51BA: BB TYX C2/51BB: 20 8A 29 JSR $298A C2/51BE: 9C AE 11 STZ $11AE C2/51C1: A9 10 LDA #$10 C2/51C3: 8D AF 11 STA $11AF ; level 16 C2/51C6: 8D A6 11 STA $11A6 C2/51C9: A9 28 LDA #$28 C2/51CB: 8D A2 11 STA $11A2 C2/51CE: A9 02 LDA #$02 C2/51D0: 8D A3 11 STA $11A3 ; ignore reflect C2/51D3: 0C A4 11 TSB $11A4 ; drain effect C2/51D6: 0C 46 3A TSB $3A46 ; set $3A46.1 C2/51D9: A9 80 LDA #$80 ; cap drain damage when attacker's hp is full (seize) C2/51DB: 14 B2 TRB $B2 C2/51DD: A9 12 LDA #$12 ; command $12 (mimic) C2/51DF: 85 B5 STA $B5 C2/51E1: 4C 7B 31 JMP $317B ; execute attacks ; ??? jump table tableDeath_Special: C2/51E4: .DW $4FE0, $4FCB, $4FEC, $4FCE, $4FC2, $4FFF ; [ Get Bit Number ] _BitToNum8: C2/51F0: A2 00 LDX #$00 C2/51F2: 4A LSR C2/51F3: F0 03 BEQ $51F8 C2/51F5: E8 INX C2/51F6: 80 FA BRA $51F2 C2/51F8: 60 RTS ; [ Get the First Valid Target in +A ] ; +A: valid targets (bitmask) ; +Y: pointer to target data (out) _BitToCharNo: C2/51F9: DA PHX C2/51FA: 08 PHP C2/51FB: C2 20 REP #$20 C2/51FD: E2 10 SEP #$10 C2/51FF: A2 12 LDX #$12 C2/5201: 3C 18 30 BIT $3018,X C2/5204: D0 04 BNE $520A C2/5206: CA DEX C2/5207: CA DEX C2/5208: 10 F7 BPL $5201 C2/520A: 9B TXY C2/520B: 28 PLP C2/520C: FA PLX C2/520D: 60 RTS ; [ X = number of bits set in A ] _Bits16: C2/520E: A2 00 LDX #$00 C2/5210: 4A LSR C2/5211: 90 01 BCC $5214 C2/5213: E8 INX C2/5214: D0 FA BNE $5210 C2/5216: 60 RTS ; [ Get Bit Mask and Byte Number ] ; A = bit number ; A = bit mask (out) ; X = byte number (out) _NumToBit: C2/5217: 5A PHY C2/5218: 48 PHA C2/5219: 6A ROR C2/521A: 4A LSR C2/521B: 4A LSR C2/521C: AA TAX C2/521D: 68 PLA C2/521E: 29 07 AND #$07 C2/5220: A8 TAY C2/5221: A9 00 LDA #$00 C2/5223: 38 SEC C2/5224: 2A ROL C2/5225: 88 DEY C2/5226: 10 FC BPL $5224 C2/5228: 7A PLY C2/5229: 60 RTS ; [ Pick a Random Bit Set in A ] _SelectBit: C2/522A: 5A PHY C2/522B: 08 PHP C2/522C: C2 20 REP #$20 C2/522E: 85 EE STA $EE C2/5230: 20 0E 52 JSR $520E ; X = number of bits set in A C2/5233: 8A TXA C2/5234: F0 0E BEQ $5244 C2/5236: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/5239: AA TAX C2/523A: 38 SEC C2/523B: 7B TDC C2/523C: 2A ROL C2/523D: 24 EE BIT $EE C2/523F: F0 FB BEQ $523C C2/5241: CA DEX C2/5242: 10 F8 BPL $523C C2/5244: 28 PLP C2/5245: 7A PLY C2/5246: 60 RTS ; [ Choose Battle Type/UMARO's Attack ] ; X = probability type ; A = possible types (bitmask) ; X = battle type/UMARO's attack (out) _SelectBitWithRate: C2/5247: 5A PHY C2/5248: EB XBA C2/5249: A9 00 LDA #$00 C2/524B: A0 03 LDY #$03 C2/524D: EB XBA C2/524E: 0A ASL C2/524F: EB XBA C2/5250: 90 04 BCC $5256 ; branch if battle type is not available C2/5252: 7F 69 52 C2 ADC $C25269,X ; add type probability C2/5256: 99 FC 00 STA $00FC,Y C2/5259: E8 INX C2/525A: 88 DEY C2/525B: 10 F0 BPL $524D C2/525D: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/5260: A2 04 LDX #$04 C2/5262: CA DEX C2/5263: D5 FC CMP $FC,X C2/5265: B0 FB BCS $5262 C2/5267: 7A PLY C2/5268: 60 RTS ; UMARO attack probabilities tableRate: C2/5269: .DB $9E, $5F, $FF, $FF C2/526D: .DB $5E, $3F, $FF, $5F C2/5271: .DB $5E, $3F, $5F, $FF C2/5275: .DB $3E, $3F, $3F, $3F ; battle type probabilities C2/5279: .DB $1E, $07, $07, $CF ; --------------------------------------[ Battle: Menu Commands ]--------------------------------------- ; [ Update Enabled Commands ] _SetCmdInfo: C2/527D: DA PHX C2/527E: 08 PHP C2/527F: C2 30 REP #$30 C2/5281: 9B TXY C2/5282: BF 4A 54 C2 LDA $C2544A,X C2/5286: AA TAX C2/5287: E2 20 SEP #$20 C2/5289: B9 18 30 LDA $3018,Y C2/528C: 0C 58 3A TSB $3A58 C2/528F: B9 E4 3E LDA $3EE4,Y C2/5292: 29 20 AND #$20 C2/5294: 85 EF STA $EF C2/5296: B9 A4 3B LDA $3BA4,Y C2/5299: 19 A5 3B ORA $3BA5,Y C2/529C: 49 FF EOR #$FF C2/529E: 29 82 AND #$82 C2/52A0: 04 EF TSB $EF C2/52A2: A9 04 LDA #$04 C2/52A4: 85 EE STA $EE C2/52A6: DA PHX C2/52A7: 38 SEC C2/52A8: 7B TDC C2/52A9: BD 00 00 LDA $0000,X C2/52AC: 30 2D BMI $52DB C2/52AE: 48 PHA C2/52AF: 18 CLC C2/52B0: A5 EF LDA $EF C2/52B2: 89 20 BIT #$20 C2/52B4: F0 0D BEQ $52C3 C2/52B6: A3 01 LDA $01,S C2/52B8: 0A ASL C2/52B9: AA TAX C2/52BA: BF 00 FE CF LDA $CFFE00,X ; battle command data C2/52BE: 89 04 BIT #$04 C2/52C0: D0 01 BNE $52C3 ; branch if command can be used as imp C2/52C2: 38 SEC C2/52C3: 68 PLA C2/52C4: B0 15 BCS $52DB C2/52C6: A2 07 00 LDX #$0007 C2/52C9: DF E9 52 C2 CMP $C252E9,X C2/52CD: D0 08 BNE $52D7 C2/52CF: 8A TXA C2/52D0: 0A ASL C2/52D1: AA TAX C2/52D2: FC F1 52 JSR ($52F1,X) C2/52D5: 80 04 BRA $52DB C2/52D7: CA DEX C2/52D8: 10 EF BPL $52C9 C2/52DA: 18 CLC C2/52DB: FA PLX C2/52DC: 7E 01 00 ROR $0001,X C2/52DF: E8 INX C2/52E0: E8 INX C2/52E1: E8 INX C2/52E2: C6 EE DEC $EE C2/52E4: D0 C0 BNE $52A6 C2/52E6: 28 PLP C2/52E7: FA PLX C2/52E8: 60 RTS C2/52E9: .DB $03, $0B, $07, $0C, $17, $02, $06, $00 C2/52F1: .DW $5326, $5322, $531D, $5314, $5314, $5314, $5301, $5301 C2/5301: B9 58 3C LDA $3C58,Y C2/5304: 4A LSR C2/5305: 90 0C BCC $5313 C2/5307: C2 21 REP #$21 C2/5309: A3 03 LDA $03,S C2/530B: AA TAX C2/530C: E2 20 SEP #$20 C2/530E: A9 4E LDA #$4E C2/5310: 9D 02 00 STA $0002,X C2/5313: 60 RTS C2/5314: B9 E5 3E LDA $3EE5,Y C2/5317: 89 08 BIT #$08 C2/5319: F0 01 BEQ $531C C2/531B: 38 SEC C2/531C: 60 RTS C2/531D: A5 EF LDA $EF C2/531F: 4A LSR C2/5320: 4A LSR C2/5321: 60 RTS C2/5322: A5 EF LDA $EF C2/5324: 0A ASL C2/5325: 60 RTS C2/5326: A9 0F LDA #$0F C2/5328: CD F6 1C CMP $1CF6 C2/532B: 60 RTS ; [ Init Character Command List ] ; +X = character number x 2 _SetCmdWork: C2/532C: DA PHX C2/532D: 08 PHP C2/532E: C2 30 REP #$30 C2/5330: BC 10 30 LDY $3010,X ; pointer to character data (+$001600) C2/5333: BF 4A 54 C2 LDA $C2544A,X ; pointer to character command list data (+$7E0000) C2/5337: 8F 81 21 00 STA $002181 C2/533B: B9 16 16 LDA $1616,Y ; +++$FC = battle commands C2/533E: 85 FC STA $FC C2/5340: B9 18 16 LDA $1618,Y C2/5343: 85 FE STA $FE C2/5345: B9 14 16 LDA $1614,Y ; status 1 C2/5348: E2 30 SEP #$30 C2/534A: 89 08 BIT #$08 C2/534C: D0 06 BNE $5354 ; branch if magitek status C2/534E: AD BB 3E LDA $3EBB C2/5351: 4A LSR C2/5352: 90 49 BCC $539D ; branch if not magic only (fanatic's tower) C2/5354: BD D8 3E LDA $3ED8,X ; B = actor number C2/5357: EB XBA C2/5358: A2 03 LDX #$03 C2/535A: B5 FC LDA $FC,X ; A = battle command C2/535C: C9 01 CMP #$01 C2/535E: F0 3A BEQ $539A ; branch if item C2/5360: C9 12 CMP #$12 C2/5362: F0 36 BEQ $539A ; branch if mimic C2/5364: EB XBA C2/5365: C9 0B CMP #$0B C2/5367: D0 08 BNE $5371 ; branch if not GAU C2/5369: EB XBA C2/536A: C9 10 CMP #$10 C2/536C: D0 02 BNE $5370 ; branch if not rage C2/536E: A9 00 LDA #$00 ; change command to fight C2/5370: EB XBA C2/5371: EB XBA C2/5372: C9 00 CMP #$00 C2/5374: D0 04 BNE $537A ; branch if command is not fight C2/5376: A9 1D LDA #$1D ; change command to magitek C2/5378: 80 06 BRA $5380 C2/537A: C9 02 CMP #$02 C2/537C: F0 02 BEQ $5380 ; branch if command is magic C2/537E: A9 FF LDA #$FF C2/5380: 95 FC STA $FC,X ; remove command C2/5382: AD BB 3E LDA $3EBB C2/5385: 4A LSR C2/5386: 90 12 BCC $539A ; branch if not magic only C2/5388: B5 FC LDA $FC,X C2/538A: C9 02 CMP #$02 C2/538C: F0 08 BEQ $5396 ; branch if command is magic C2/538E: C9 1D CMP #$1D C2/5390: D0 06 BNE $5398 ; branch if command is not magitek C2/5392: A9 02 LDA #$02 C2/5394: 80 02 BRA $5398 ; change command to magic C2/5396: A9 FF LDA #$FF ; remove command C2/5398: 95 FC STA $FC,X C2/539A: CA DEX ; next command C2/539B: 10 BD BPL $535A C2/539D: 7B TDC C2/539E: 85 F8 STA $F8 C2/53A0: 8F 83 21 00 STA $002183 ; clear WRAM bank C2/53A4: A8 TAY C2/53A5: B9 FC 00 LDA $00FC,Y C2/53A8: A2 04 LDX #$04 ; 5 commands with possible relic updates C2/53AA: 48 PHA C2/53AB: A9 04 LDA #$04 ; relic command update flag C2/53AD: 85 EE STA $EE C2/53AF: BF 52 54 C2 LDA $C25452,X ; commands with relic updates C2/53B3: C3 01 CMP $01,S C2/53B5: D0 0D BNE $53C4 ; branch if not that command C2/53B7: AD D6 11 LDA $11D6 C2/53BA: 24 EE BIT $EE C2/53BC: F0 06 BEQ $53C4 ; branch if relic not equipped C2/53BE: BF 57 54 C2 LDA $C25457,X ; update command C2/53C2: 83 01 STA $01,S C2/53C4: 06 EE ASL $EE ; next command C2/53C6: CA DEX C2/53C7: 10 E6 BPL $53AF C2/53C9: A3 01 LDA $01,S ; command number C2/53CB: A2 05 LDX #$05 ; 6 commands with init functions C2/53CD: DF 68 54 C2 CMP $C25468,X ; commands with init functions C2/53D1: D0 08 BNE $53DB C2/53D3: 8A TXA C2/53D4: 0A ASL C2/53D5: AA TAX C2/53D6: FC 5C 54 JSR ($545C,X) ; execute init function C2/53D9: 80 03 BRA $53DE C2/53DB: CA DEX ; next command C2/53DC: 10 EF BPL $53CD C2/53DE: 68 PLA C2/53DF: 8F 80 21 00 STA $002180 ; set command number ($202E) C2/53E3: 8F 80 21 00 STA $002180 ; set command number ($202F) C2/53E7: 0A ASL C2/53E8: AA TAX C2/53E9: 7B TDC C2/53EA: B0 04 BCS $53F0 ; branch if command was removed C2/53EC: BF 01 FE CF LDA $CFFE01,X ; battle command data, targetting byte C2/53F0: 8F 80 21 00 STA $002180 ; set command data ($2030) C2/53F4: C8 INY ; next command C2/53F5: C0 04 CPY #$04 C2/53F7: D0 AC BNE $53A5 C2/53F9: 46 F8 LSR $F8 ; branch if $F8 was set (character has MP) C2/53FB: B0 0B BCS $5408 C2/53FD: A3 02 LDA $02,S ; pointer to character data C2/53FF: AA TAX C2/5400: C2 20 REP #$20 C2/5402: 9E 08 3C STZ $3C08,X ; clear current MP C2/5405: 9E 30 3C STZ $3C30,X ; clear max MP C2/5408: 28 PLP C2/5409: FA PLX C2/540A: 60 RTS ; [ Init Morph Command ] C2/540B: A9 04 LDA #$04 C2/540D: 2C BC 3E BIT $3EBC ; remove command if morph is not available C2/5410: F0 22 BEQ $5434 C2/5412: 2C BB 3E BIT $3EBB ; return if morph is not permanent C2/5415: F0 21 BEQ $5438 C2/5417: A3 05 LDA $05,S ; pointer to character data C2/5419: AA TAX C2/541A: BD E9 3D LDA $3DE9,X ; set morph status C2/541D: 09 08 ORA #$08 C2/541F: 9D E9 3D STA $3DE9,X C2/5422: A9 FF LDA #$FF C2/5424: 8D F6 1C STA $1CF6 ; set morph gauge to max C2/5427: 80 0B BRA $5434 ; remove command ; [ Init Magic/X-Magic Command ] C2/5429: A5 F6 LDA $F6 C2/542B: D0 18 BNE $5445 C2/542D: A5 F7 LDA $F7 C2/542F: 1A INC C2/5430: D0 13 BNE $5445 C2/5432: D0 04 BNE $5438 C2/5434: A9 FF LDA #$FF C2/5436: 83 03 STA $03,S ; remove command C2/5438: 60 RTS ; [ Init Dance Command ] C2/5439: AD 4C 1D LDA $1D4C ; dances known C2/543C: 80 F4 BRA $5432 ; [ Init Leap Command ] C2/543E: AD E4 11 LDA $11E4 ; on the veldt flag C2/5441: 89 02 BIT #$02 C2/5443: 80 ED BRA $5432 ; [ Init Lore Command ] C2/5445: A9 01 LDA #$01 ; character has MP C2/5447: 04 F8 TSB $F8 C2/5449: 60 RTS ; pointers to character command list data (+$7E0000) O_TableCommandWork: C2/544A: .DW $202E, $203A, $2046, $2052 ; commands with possible relic updates (steal, slot, sketch, magic, fight) tableSCommand: C2/5452: .DB $05, $0F, $0D, $02, $00 ; relic updated commands (capture, gp rain, control, x-magic, jump) tableDCommand: C2/5457: .DB $06, $18, $0E, $17, $16 ; command init function jump table C2/545C: .DW $540B, $543E, $5439, $5429, $5429, $5445 ; commands with init functions (morph, leap, dance, magic, x-magic, lore) tableVCommand: C2/5468: .DB $03, $11, $13, $02, $17, $0C ; ------------------------------------------[ Battle: Items ]------------------------------------------- ; [ Init Battle Inventory ] _SetItemWork: C2/546E: 08 PHP C2/546F: C2 30 REP #$30 C2/5471: A0 AD 2B LDY #$2BAD ; start at the end of the item data C2/5474: A9 01 00 LDA #$0001 ; item quantity = 1 for equipped items C2/5477: 8D 75 2E STA $2E75 C2/547A: A2 06 00 LDX #$0006 C2/547D: 5A PHY C2/547E: BC 10 30 LDY $3010,X ; pointer to character data C2/5481: B9 20 16 LDA $1620,Y ; equipped shield C2/5484: 7A PLY C2/5485: 20 CD 54 JSR $54CD ; add item to battle inventory C2/5488: CA DEX ; next character C2/5489: CA DEX C2/548A: 10 F1 BPL $547D C2/548C: A2 06 00 LDX #$0006 C2/548F: 5A PHY C2/5490: BC 10 30 LDY $3010,X ; pointer to character data C2/5493: B9 1F 16 LDA $161F,Y ; equipped weapon C2/5496: 7A PLY C2/5497: 20 CD 54 JSR $54CD ; add item to battle inventory C2/549A: CA DEX ; next character C2/549B: CA DEX C2/549C: 10 F1 BPL $548F C2/549E: A2 FF 00 LDX #$00FF ; loop through 255 items C2/54A1: BD 69 19 LDA $1969,X ; item quantity C2/54A4: 8D 75 2E STA $2E75 C2/54A7: BD 69 18 LDA $1869,X ; item number C2/54AA: 20 CD 54 JSR $54CD ; add item to battle inventory C2/54AD: CA DEX ; next item C2/54AE: 10 F1 BPL $54A1 C2/54B0: E2 30 SEP #$30 C2/54B2: 7B TDC C2/54B3: A8 TAY C2/54B4: B9 69 18 LDA $1869,Y ; item number C2/54B7: C9 A3 CMP #$A3 C2/54B9: 90 0D BCC $54C8 ; branch if less than tools C2/54BB: E9 A3 SBC #$A3 C2/54BD: C9 08 CMP #$08 C2/54BF: B0 07 BCS $54C8 ; branch if not a tool C2/54C1: AA TAX C2/54C2: 20 57 1E JSR $1E57 ; get bit mask C2/54C5: 0C 9B 3A TSB $3A9B ; set tool bit C2/54C8: C8 INY ; next item C2/54C9: D0 E9 BNE $54B4 C2/54CB: 28 PLP C2/54CC: 60 RTS ; [ Add Item to Battle Inventory ] ; +Y = pointer to battle inventory (last byte of item) SetItemWork_sub: C2/54CD: DA PHX C2/54CE: 20 DC 54 JSR $54DC ; load item data C2/54D1: A2 76 2E LDX #$2E76 ; source = $7E2E72-$7E2E76 C2/54D4: A9 04 00 LDA #$0004 ; size = 5 bytes C2/54D7: 44 7E 7E MVP $7E,$7E C2/54DA: FA PLX C2/54DB: 60 RTS ; [ Load Item Data ] ; A = item number _LoadItem: C2/54DC: DA PHX C2/54DD: 08 PHP C2/54DE: C2 10 REP #$10 C2/54E0: E2 20 SEP #$20 C2/54E2: 48 PHA C2/54E3: A9 80 LDA #$80 ; make item unusable C2/54E5: 8D 73 2E STA $2E73 C2/54E8: A9 FF LDA #$FF C2/54EA: 8D 76 2E STA $2E76 ; clear all equippability flags C2/54ED: 68 PLA C2/54EE: 8D 72 2E STA $2E72 ; item number C2/54F1: C9 FF CMP #$FF C2/54F3: F0 51 BEQ $5546 C2/54F5: EB XBA C2/54F6: A9 1E LDA #$1E C2/54F8: 20 81 47 JSR $4781 ; multiply A * B C2/54FB: AA TAX C2/54FC: BF 0E 50 D8 LDA $D8500E,X ; targetting C2/5500: 8D 74 2E STA $2E74 C2/5503: BF 00 50 D8 LDA $D85000,X C2/5507: 48 PHA C2/5508: 48 PHA C2/5509: 0A ASL C2/550A: 0A ASL C2/550B: 29 80 AND #$80 ; item useable in battle C2/550D: 1C 73 2E TRB $2E73 C2/5510: 68 PLA C2/5511: 0A ASL C2/5512: 29 20 AND #$20 ; item can be thrown C2/5514: 0C 73 2E TSB $2E73 C2/5517: 7B TDC C2/5518: 68 PLA C2/5519: 29 07 AND #$07 ; item type C2/551B: DA PHX C2/551C: AA TAX C2/551D: BF 49 55 C2 LDA $C25549,X ; flags for item type C2/5521: FA PLX C2/5522: 0A ASL C2/5523: 0C 73 2E TSB $2E73 C2/5526: B0 1E BCS $5546 C2/5528: C2 21 REP #$21 C2/552A: 64 EE STZ $EE C2/552C: BF 01 50 D8 LDA $D85001,X ; equippable characters C2/5530: A2 06 00 LDX #$0006 C2/5533: 3C 20 3A BIT $3A20,X ; actor mask C2/5536: D0 01 BNE $5539 ; branch if character can equip this item C2/5538: 38 SEC C2/5539: 26 EE ROL $EE ; set bit in $EE C2/553B: CA DEX ; next character C2/553C: CA DEX C2/553D: 10 F4 BPL $5533 C2/553F: E2 20 SEP #$20 C2/5541: A5 EE LDA $EE C2/5543: 8D 76 2E STA $2E76 ; set item equippability C2/5546: 28 PLP C2/5547: FA PLX C2/5548: 60 RTS ; flags for item types (tool, weapon, armor, shield, helm, relic, item) bitTable: C2/5549: .DB $A0, $08, $80, $04, $80, $80, $00, $00 ; ------------------------------------------[ Battle: Skills ]------------------------------------------ ; [ Init Spells/Lores ] _InitMagicWork: C2/5551: 08 PHP C2/5552: A2 1A LDX #$1A C2/5554: 9E BA 30 STZ $30BA,X ; clear espers in master spell list pointer table C2/5557: CA DEX C2/5558: 10 FA BPL $5554 C2/555A: A9 FF LDA #$FF C2/555C: A2 35 LDX #$35 C2/555E: 9D A0 11 STA $11A0,X ; clear spell data C2/5561: CA DEX C2/5562: 10 FA BPL $555E C2/5564: A0 17 LDY #$17 C2/5566: A2 02 LDX #$02 C2/5568: 7B TDC C2/5569: 38 SEC C2/556A: 6A ROR C2/556B: 90 02 BCC $556F C2/556D: 6A ROR C2/556E: CA DEX C2/556F: 3C 29 1D BIT $1D29,X ; known lores C2/5572: F0 10 BEQ $5584 C2/5574: EE 87 3A INC $3A87 C2/5577: 48 PHA C2/5578: 98 TYA C2/5579: 69 37 ADC #$37 C2/557B: 99 0F 31 STA $310F,Y C2/557E: 69 54 ADC #$54 C2/5580: 99 6A 30 STA $306A,Y C2/5583: 68 PLA C2/5584: 88 DEY C2/5585: 10 E3 BPL $556A C2/5587: A2 06 LDX #$06 C2/5589: BD D8 3E LDA $3ED8,X ; actor index C2/558C: C9 0C CMP #$0C C2/558E: B0 1E BCS $55AE ; branch if character has a spell list C2/5590: EB XBA C2/5591: A9 36 LDA #$36 C2/5593: 20 81 47 JSR $4781 ; multiply A * B C2/5596: C2 21 REP #$21 C2/5598: 69 6E 1A ADC #$1A6E C2/559B: 85 F0 STA $F0 ; pointer to spell list C2/559D: E2 20 SEP #$20 C2/559F: A0 35 LDY #$35 C2/55A1: B1 F0 LDA ($F0),Y C2/55A3: C9 FF CMP #$FF C2/55A5: D0 04 BNE $55AB C2/55A7: 98 TYA C2/55A8: 99 34 30 STA $3034,Y ; add to master spell list C2/55AB: 88 DEY C2/55AC: 10 F3 BPL $55A1 C2/55AE: CA DEX C2/55AF: CA DEX C2/55B0: 10 D7 BPL $5589 C2/55B2: AD 54 1D LDA $1D54 ; spell order C2/55B5: 29 07 AND #$07 C2/55B7: AA TAX C2/55B8: A0 35 LDY #$35 C2/55BA: B9 34 30 LDA $3034,Y C2/55BD: C9 18 CMP #$18 C2/55BF: B0 06 BCS $55C7 C2/55C1: 7F 4B 57 C2 ADC $C2574B,X C2/55C5: 80 12 BRA $55D9 C2/55C7: C9 2D CMP #$2D C2/55C9: B0 06 BCS $55D1 C2/55CB: 7F 51 57 C2 ADC $C25751,X C2/55CF: 80 08 BRA $55D9 C2/55D1: C9 36 CMP #$36 C2/55D3: B0 0B BCS $55E0 C2/55D5: 7F 57 57 C2 ADC $C25757,X C2/55D9: DA PHX C2/55DA: AA TAX C2/55DB: 98 TYA C2/55DC: 9D A0 11 STA $11A0,X C2/55DF: FA PLX C2/55E0: 88 DEY C2/55E1: 10 D7 BPL $55BA C2/55E3: A9 FF LDA #$FF C2/55E5: A2 35 LDX #$35 C2/55E7: 9D 34 30 STA $3034,X C2/55EA: CA DEX C2/55EB: 10 FA BPL $55E7 C2/55ED: 7B TDC C2/55EE: AA TAX C2/55EF: A8 TAY C2/55F0: BD A0 11 LDA $11A0,X C2/55F3: 1A INC C2/55F4: D0 0C BNE $5602 C2/55F6: BD A1 11 LDA $11A1,X C2/55F9: 1A INC C2/55FA: D0 06 BNE $5602 C2/55FC: BD A2 11 LDA $11A2,X C2/55FF: 1A INC C2/5600: F0 15 BEQ $5617 C2/5602: BD A0 11 LDA $11A0,X C2/5605: 99 34 30 STA $3034,Y C2/5608: BD A1 11 LDA $11A1,X C2/560B: 99 35 30 STA $3035,Y C2/560E: BD A2 11 LDA $11A2,X C2/5611: 99 36 30 STA $3036,Y C2/5614: C8 INY C2/5615: C8 INY C2/5616: C8 INY C2/5617: E8 INX C2/5618: E8 INX C2/5619: E8 INX C2/561A: E0 36 CPX #$36 C2/561C: 90 D2 BCC $55F0 C2/561E: A2 35 LDX #$35 ; loop through all spells C2/5620: BD 34 30 LDA $3034,X ; branch if no characters know the spell C2/5623: C9 FF CMP #$FF C2/5625: F0 06 BEQ $562D C2/5627: A8 TAY ; Y = spell number C2/5628: 8A TXA ; A = position in master spell list + 1 C2/5629: 1A INC C2/562A: 99 84 30 STA $3084,Y ; set pointer to master spell list C2/562D: CA DEX C2/562E: 10 F0 BPL $5620 C2/5630: C2 10 REP #$10 C2/5632: A2 4D 00 LDX #$004D ; loop through all spells and lores C2/5635: 7B TDC C2/5636: BD 34 30 LDA $3034,X ; branch if no characters know the spell C2/5639: C9 FF CMP #$FF C2/563B: F0 4B BEQ $5688 C2/563D: 48 PHA C2/563E: A8 TAY C2/563F: B9 84 30 LDA $3084,Y ; get pointer to master spell list C2/5642: C2 20 REP #$20 C2/5644: 0A ASL C2/5645: 0A ASL C2/5646: E2 20 SEP #$20 C2/5648: A8 TAY C2/5649: A3 01 LDA $01,S C2/564B: C9 8B CMP #$8B C2/564D: 90 02 BCC $5651 ; subtract $8B if a lore C2/564F: E9 8B SBC #$8B C2/5651: 99 8E 20 STA $208E,Y ; add to character spell/lore lists C2/5654: 99 CA 21 STA $21CA,Y C2/5657: 99 06 23 STA $2306,Y C2/565A: 99 42 24 STA $2442,Y C2/565D: 68 PLA C2/565E: 20 23 57 JSR $5723 ; get mp cost and targetting data C2/5661: 99 90 20 STA $2090,Y ; targetting data C2/5664: 99 CC 21 STA $21CC,Y C2/5667: 99 08 23 STA $2308,Y C2/566A: 99 44 24 STA $2444,Y C2/566D: EB XBA C2/566E: E0 44 00 CPX #$0044 ; mp cost for step mine C2/5671: D0 09 BNE $567C C2/5673: AD 64 18 LDA $1864 ; game time / 30 C2/5676: C9 1E CMP #$1E C2/5678: AD 63 18 LDA $1863 C2/567B: 2A ROL C2/567C: 99 91 20 STA $2091,Y ; set mp cost C2/567F: 99 CD 21 STA $21CD,Y C2/5682: 99 09 23 STA $2309,Y C2/5685: 99 45 24 STA $2445,Y C2/5688: CA DEX C2/5689: 10 AA BPL $5635 C2/568B: 28 PLP C2/568C: 60 RTS ; [ Init Equipped Esper ] _SetMagicWork: C2/568D: DA PHX C2/568E: 08 PHP C2/568F: C2 10 REP #$10 C2/5691: BD 45 3C LDA $3C45,X ; relic effects 2 C2/5694: 85 F8 STA $F8 C2/5696: 64 F6 STZ $F6 ; clear total number of spells C2/5698: BC 2C 30 LDY $302C,X ; pointer to spell list C2/569B: 84 F2 STY $F2 C2/569D: C8 INY C2/569E: C8 INY C2/569F: C8 INY C2/56A0: 84 F4 STY $F4 ; pointer to mp cost C2/56A2: BC 10 30 LDY $3010,X C2/56A5: B9 1E 16 LDA $161E,Y ; equipped esper C2/56A8: 85 F7 STA $F7 C2/56AA: 30 1B BMI $56C7 ; branch if no esper is equipped C2/56AC: 9D 44 33 STA $3344,X C2/56AF: A4 F2 LDY $F2 C2/56B1: 99 00 00 STA $0000,Y C2/56B4: 18 CLC C2/56B5: 69 36 ADC #$36 C2/56B7: 20 23 57 JSR $5723 ; get mp cost and targetting data C2/56BA: 99 02 00 STA $0002,Y C2/56BD: 9D 45 33 STA $3345,X C2/56C0: EB XBA C2/56C1: 20 36 57 JSR $5736 ; calculate mp cost C2/56C4: 99 03 00 STA $0003,Y C2/56C7: 7B TDC C2/56C8: A8 TAY C2/56C9: BD D8 3E LDA $3ED8,X C2/56CC: C9 0C CMP #$0C C2/56CE: F0 15 BEQ $56E5 ; branch if character is GOGO C2/56D0: C8 INY C2/56D1: C8 INY C2/56D2: B0 11 BCS $56E5 ; branch if character doesn't have a spell list C2/56D4: C8 INY C2/56D5: C8 INY C2/56D6: EB XBA C2/56D7: A9 36 LDA #$36 C2/56D9: 20 81 47 JSR $4781 ; multiply A * B C2/56DC: C2 21 REP #$21 C2/56DE: 69 6E 1A ADC #$1A6E C2/56E1: 85 F0 STA $F0 C2/56E3: E2 20 SEP #$20 C2/56E5: BB TYX C2/56E6: A0 38 01 LDY #$0138 C2/56E9: 7B TDC C2/56EA: B1 F2 LDA ($F2),Y C2/56EC: C9 FF CMP #$FF C2/56EE: F0 1E BEQ $570E C2/56F0: C0 DC 00 CPY #$00DC C2/56F3: 7C 5D 57 JMP ($575D,X) C2/56F6: 88 DEY C2/56F7: 88 DEY C2/56F8: 88 DEY C2/56F9: 88 DEY C2/56FA: D0 ED BNE $56E9 C2/56FC: 28 PLP C2/56FD: FA PLX C2/56FE: A5 F6 LDA $F6 C2/5700: 9D F8 3C STA $3CF8,X ; number of available spells C2/5703: 60 RTS ; 2: normal character C2/5704: B0 10 BCS $5716 C2/5706: 5A PHY C2/5707: A8 TAY C2/5708: B1 F0 LDA ($F0),Y C2/570A: 7A PLY C2/570B: 1A INC C2/570C: F0 08 BEQ $5716 ; fall through ; 1: character with no spell list C2/570E: 7B TDC C2/570F: 91 F4 STA ($F4),Y C2/5711: 3A DEC C2/5712: 91 F2 STA ($F2),Y C2/5714: 80 E0 BRA $56F6 ; 0: gogo C2/5716: B0 02 BCS $571A C2/5718: E6 F6 INC $F6 C2/571A: B1 F4 LDA ($F4),Y C2/571C: 20 36 57 JSR $5736 ; calculate mp cost C2/571F: 91 F4 STA ($F4),Y C2/5721: 80 D3 BRA $56F6 ; [ Get MP Cost and Targetting Data ] loadSummon: C2/5723: DA PHX C2/5724: EB XBA C2/5725: A9 0E LDA #$0E C2/5727: 20 81 47 JSR $4781 ; multiply A * B C2/572A: AA TAX C2/572B: BF C5 6A C4 LDA $C46AC5,X ; spell mp cost C2/572F: EB XBA C2/5730: BF C0 6A C4 LDA $C46AC0,X ; spell targetting C2/5734: FA PLX C2/5735: 60 RTS ; [ Calculate MP Cost ] ; $F8: relic effects 2 ; A: original mp cost setupMp: C2/5736: EB XBA C2/5737: A5 F8 LDA $F8 C2/5739: 89 20 BIT #$20 C2/573B: F0 04 BEQ $5741 ; branch if no gold hairpin C2/573D: EB XBA C2/573E: 1A INC ; add one and divide by 2 C2/573F: 4A LSR C2/5740: EB XBA C2/5741: 89 40 BIT #$40 C2/5743: F0 04 BEQ $5749 ; branch if no economizer C2/5745: EB XBA C2/5746: A9 01 LDA #$01 ; set mp cost to 1 C2/5748: EB XBA C2/5749: EB XBA C2/574A: 60 RTS ; spell list offsets for each magic order ; black magic C2/574B: .DB $09, $1E, $00, $00, $1E, $15 ; effect magic C2/5751: .DB $09, $F1, $00, $09, $E8, $E8 ; white magic C2/5757: .DB $D3, $D3, $00, $EB, $E8, $00 C2/575D: .DW $5716, $570E, $5704 ; [ Update Enabled Spells/Espers ] _SetMagicInfo: C2/5763: E0 08 CPX #$08 C2/5765: B0 42 BCS $57A9 ; return if a monster C2/5767: DA PHX C2/5768: 5A PHY C2/5769: 08 PHP C2/576A: BD 09 3C LDA $3C09,X ; current mp (high byte) C2/576D: D0 06 BNE $5775 ; branch if not zero C2/576F: BD 08 3C LDA $3C08,X C2/5772: 1A INC C2/5773: D0 02 BNE $5777 ; branch if character has less than 255 mp left C2/5775: A9 FF LDA #$FF C2/5777: 8D 4C 3A STA $3A4C ; max mp cost C2/577A: BD E4 3E LDA $3EE4,X ; status 1 C2/577D: 0A ASL C2/577E: 0A ASL C2/577F: 85 EF STA $EF C2/5781: C2 10 REP #$10 C2/5783: BD 18 30 LDA $3018,X ; character mask C2/5786: BC 2C 30 LDY $302C,X ; pointer to character spell list ($208E) C2/5789: BB TYX C2/578A: 38 SEC C2/578B: 2C 2E 3F BIT $3F2E C2/578E: D0 03 BNE $5793 ; branch if character has an esper equipped C2/5790: 20 AA 57 JSR $57AA ; check if spell is enabled C2/5793: 7E 01 00 ROR $0001,X C2/5796: A0 4D 00 LDY #$004D ; loop through 78 spells (54 spells + 24 lores) C2/5799: E8 INX C2/579A: E8 INX C2/579B: E8 INX C2/579C: E8 INX C2/579D: 20 AA 57 JSR $57AA ; check if spell is enabled C2/57A0: 7E 01 00 ROR $0001,X C2/57A3: 88 DEY C2/57A4: 10 F3 BPL $5799 C2/57A6: 28 PLP C2/57A7: 7A PLY C2/57A8: FA PLX C2/57A9: 60 RTS ; [ Check if Spell is Enabled ] ; A: spell index ; +X: pointer to spell in spell list ; C: set = disabled, clear = enabled (out) sub: C2/57AA: BD 00 00 LDA $0000,X ; first spell in spell list C2/57AD: 30 0A BMI $57B9 ; branch if spell list is empty C2/57AF: EB XBA C2/57B0: A5 EF LDA $EF C2/57B2: 10 07 BPL $57BB ; branch if character is not an imp C2/57B4: EB XBA C2/57B5: C9 23 CMP #$23 C2/57B7: F0 02 BEQ $57BB ; branch if spell is imp (all other spells will be disabled) C2/57B9: 38 SEC C2/57BA: 60 RTS C2/57BB: BD 03 00 LDA $0003,X ; compare spell's mp cost to character's current mp C2/57BE: CD 4C 3A CMP $3A4C C2/57C1: 60 RTS ; [ Update Battle Script Data ] ; X: attacker index * 2 _SetResultInfo: C2/57C2: 08 PHP C2/57C3: E2 30 SEP #$30 C2/57C5: 64 A0 STZ $A0 ; clear flags C2/57C7: 8A TXA C2/57C8: 4A LSR C2/57C9: 85 A1 STA $A1 ; set attacker index C2/57CB: C9 04 CMP #$04 C2/57CD: 90 02 BCC $57D1 ; branch if attacker is a character C2/57CF: 66 A0 ROR $A0 ; attacker is a monster C2/57D1: A5 B9 LDA $B9 C2/57D3: 85 A3 STA $A3 ; set targets C2/57D5: 85 A5 STA $A5 ; set targets hit C2/57D7: A5 B8 LDA $B8 C2/57D9: 85 A2 STA $A2 C2/57DB: 85 A4 STA $A4 C2/57DD: D0 04 BNE $57E3 ; branch if there is at least one character target C2/57DF: A9 40 LDA #$40 C2/57E1: 04 A0 TSB $A0 ; no character targets C2/57E3: A5 A0 LDA $A0 C2/57E5: 0A ASL C2/57E6: 90 02 BCC $57EA ; branch if attacker is a character C2/57E8: 49 80 EOR #$80 C2/57EA: 10 04 BPL $57F0 C2/57EC: A9 02 LDA #$02 ; set no friendly targets flag C2/57EE: 04 BA TSB $BA C2/57F0: A9 10 LDA #$10 C2/57F2: 14 B0 TRB $B0 C2/57F4: D0 02 BNE $57F8 C2/57F6: 04 A0 TSB $A0 ; enable pre-magic swirly animation C2/57F8: AD 70 3A LDA $3A70 C2/57FB: F0 0D BEQ $580A ; return if not last attack C2/57FD: AD 8E 3A LDA $3A8E C2/5800: F0 08 BEQ $580A ; return if dragon horn is not active C2/5802: A9 02 LDA #$02 C2/5804: 04 A0 TSB $A0 ; set dragon horn effect C2/5806: A9 60 LDA #$60 C2/5808: 04 BA TSB $BA ; random target, can hit dead target (for next attack) C2/580A: 28 PLP C2/580B: 60 RTS ; [ Init Skills ] _SetWork: C2/580C: 7B TDC C2/580D: AD F7 1C LDA $1CF7 ; known swdtechs C2/5810: 20 0E 52 JSR $520E ; X = number of bits set in A C2/5813: CA DEX C2/5814: 8E 20 20 STX $2020 ; set number of swdtechs known (for swdtech gauge) C2/5817: 7B TDC C2/5818: AD 28 1D LDA $1D28 ; known blitzes C2/581B: 20 0E 52 JSR $520E ; X = number of bits set in A C2/581E: 8E 80 3A STX $3A80 ; set number of known blitzes C2/5821: AD 4C 1D LDA $1D4C ; known dances C2/5824: 85 EE STA $EE C2/5826: A2 07 LDX #$07 C2/5828: 06 EE ASL $EE C2/582A: A9 FF LDA #$FF C2/582C: 90 01 BCC $582F C2/582E: 8A TXA C2/582F: 9D 7E 26 STA $267E,X ; set known dances C2/5832: CA DEX C2/5833: 10 F3 BPL $5828 C2/5835: C2 20 REP #$20 C2/5837: A9 7E 25 LDA #$257E ; pointer to known rages C2/583A: 8F 81 21 00 STA $002181 C2/583E: E2 20 SEP #$20 C2/5840: 7B TDC C2/5841: A8 TAY C2/5842: AA TAX C2/5843: 8F 83 21 00 STA $002183 C2/5847: 89 07 BIT #$07 C2/5849: D0 08 BNE $5853 C2/584B: 48 PHA C2/584C: BD 2C 1D LDA $1D2C,X ; known rages C2/584F: 85 EE STA $EE C2/5851: E8 INX C2/5852: 68 PLA C2/5853: 46 EE LSR $EE C2/5855: 90 07 BCC $585E C2/5857: EE 9A 3A INC $3A9A ; increment number of known rages C2/585A: 8F 80 21 00 STA $002180 C2/585E: 1A INC C2/585F: C9 FF CMP #$FF C2/5861: D0 E4 BNE $5847 C2/5863: 60 RTS ; -------------------------------------------[ Battle: ??? ]-------------------------------------------- ; [ Check if Status Set ] ; status to check pushed to stack (4 bytes) ; carry set = none set (out) ; carry clear = one or more set (out) _StatusCheck: C2/5864: C2 21 REP #$21 C2/5866: B9 E4 3E LDA $3EE4,Y ; check if status is set C2/5869: 23 05 AND $05,S C2/586B: D0 08 BNE $5875 ; branch if any are set C2/586D: B9 F8 3E LDA $3EF8,Y C2/5870: 23 03 AND $03,S C2/5872: D0 01 BNE $5875 C2/5874: 38 SEC ; set carry if none are set C2/5875: A3 01 LDA $01,S ; fix return address C2/5877: 83 05 STA $05,S C2/5879: 68 PLA C2/587A: 68 PLA C2/587B: E2 20 SEP #$20 C2/587D: 60 RTS ; [ ] _TargetSet: C2/587E: DA PHX C2/587F: 5A PHY C2/5880: 08 PHP C2/5881: E2 30 SEP #$30 C2/5883: A5 BB LDA $BB C2/5885: C9 02 CMP #$02 C2/5887: D0 0C BNE $5895 C2/5889: BD 18 30 LDA $3018,X C2/588C: 85 B8 STA $B8 C2/588E: BD 19 30 LDA $3019,X C2/5891: 85 B9 STA $B9 C2/5893: 80 61 BRA $58F6 C2/5895: 20 FA 58 JSR $58FA ; C2/5898: A5 BA LDA $BA C2/589A: 89 40 BIT #$40 C2/589C: D0 1B BNE $58B9 C2/589E: 89 08 BIT #$08 C2/58A0: D0 03 BNE $58A5 C2/58A2: 20 4D 5A JSR $5A4D ; remove invalid targets C2/58A5: A5 B8 LDA $B8 C2/58A7: 05 B9 ORA $B9 C2/58A9: F0 08 BEQ $58B3 C2/58AB: A5 BB LDA $BB C2/58AD: 89 2C BIT #$2C C2/58AF: F0 3C BEQ $58ED C2/58B1: 80 43 BRA $58F6 C2/58B3: A5 BA LDA $BA C2/58B5: 89 04 BIT #$04 C2/58B7: D0 0F BNE $58C8 C2/58B9: 20 37 59 JSR $5937 C2/58BC: 20 FA 58 JSR $58FA ; C2/58BF: A5 BA LDA $BA C2/58C1: 89 08 BIT #$08 C2/58C3: D0 03 BNE $58C8 C2/58C5: 20 4D 5A JSR $5A4D ; remove invalid targets C2/58C8: 20 AC 59 JSR $59AC C2/58CB: A5 BA LDA $BA C2/58CD: 89 20 BIT #$20 C2/58CF: F0 0D BEQ $58DE C2/58D1: C2 20 REP #$20 C2/58D3: A5 B8 LDA $B8 C2/58D5: D0 05 BNE $58DC C2/58D7: AD 4E 3A LDA $3A4E C2/58DA: 85 B8 STA $B8 C2/58DC: E2 20 SEP #$20 C2/58DE: A5 BB LDA $BB C2/58E0: 89 0C BIT #$0C C2/58E2: D0 12 BNE $58F6 C2/58E4: 89 20 BIT #$20 C2/58E6: F0 05 BEQ $58ED C2/58E8: 20 53 4B JSR $4B53 ; random number (carry) C2/58EB: B0 09 BCS $58F6 C2/58ED: C2 20 REP #$20 C2/58EF: A5 B8 LDA $B8 C2/58F1: 20 2A 52 JSR $522A ; pick a random bit set in A C2/58F4: 85 B8 STA $B8 C2/58F6: 28 PLP C2/58F7: 7A PLY C2/58F8: FA PLX C2/58F9: 60 RTS ; [ ] _MaskTarget: C2/58FA: 08 PHP C2/58FB: A9 02 LDA #$02 C2/58FD: 1C 46 3A TRB $3A46 C2/5900: D0 13 BNE $5915 ; return if $3A46.1 is set C2/5902: 20 17 59 JSR $5917 C2/5905: A5 BA LDA $BA C2/5907: 10 02 BPL $590B C2/5909: 64 B8 STZ $B8 C2/590B: 4A LSR C2/590C: 90 07 BCC $5915 C2/590E: C2 20 REP #$20 C2/5910: BD 18 30 LDA $3018,X C2/5913: 14 B8 TRB $B8 C2/5915: 28 PLP C2/5916: 60 RTS ; [ ] _MaskTarget2: C2/5917: 08 PHP C2/5918: AD 46 2F LDA $2F46 ; characters that are targettable C2/591B: EB XBA C2/591C: AD 03 34 LDA $3403 ; seized targets C2/591F: C2 20 REP #$20 C2/5921: 2D 78 3A AND $3A78 ; C2/5924: 2D 08 34 AND $3408 ; targets that were revived/summoned C2/5927: 25 B8 AND $B8 C2/5929: 85 B8 STA $B8 C2/592B: AD 1A 34 LDA $341A C2/592E: 10 05 BPL $5935 ; branch if counterattacks are disabled ??? C2/5930: AD 2C 3F LDA $3F2C ; remove characters/monsters that are temporarily out of combat C2/5933: 14 B8 TRB $B8 C2/5935: 28 PLP C2/5936: 60 RTS ; [ ] _TargetChange: C2/5937: 64 B9 STZ $B9 C2/5939: 7B TDC C2/593A: E0 08 CPX #$08 C2/593C: 6A ROR C2/593D: 85 B8 STA $B8 C2/593F: A5 BA LDA $BA C2/5941: 89 10 BIT #$10 C2/5943: D0 41 BNE $5986 C2/5945: BD 95 33 LDA $3395,X C2/5948: 30 06 BMI $5950 C2/594A: A9 80 LDA #$80 C2/594C: 45 B8 EOR $B8 C2/594E: 85 B8 STA $B8 C2/5950: BD 18 30 LDA $3018,X C2/5953: 2C 40 3A BIT $3A40 C2/5956: F0 06 BEQ $595E C2/5958: A9 80 LDA #$80 C2/595A: 45 B8 EOR $B8 C2/595C: 85 B8 STA $B8 C2/595E: A5 BB LDA $BB C2/5960: 29 0C AND #$0C C2/5962: C9 04 CMP #$04 C2/5964: D0 04 BNE $596A C2/5966: A9 40 LDA #$40 C2/5968: 04 B8 TSB $B8 C2/596A: A5 BB LDA $BB C2/596C: 29 40 AND #$40 C2/596E: 0A ASL C2/596F: 45 B8 EOR $B8 C2/5971: 85 B8 STA $B8 C2/5973: BD E4 3E LDA $3EE4,X C2/5976: 4A LSR C2/5977: 4A LSR C2/5978: 90 04 BCC $597E C2/597A: A9 40 LDA #$40 C2/597C: 04 B8 TSB $B8 C2/597E: BD E5 3E LDA $3EE5,X C2/5981: 0A ASL C2/5982: 0A ASL C2/5983: 0A ASL C2/5984: 90 06 BCC $598C C2/5986: A9 80 LDA #$80 C2/5988: 45 B8 EOR $B8 C2/598A: 85 B8 STA $B8 C2/598C: A5 B8 LDA $B8 C2/598E: 0A ASL C2/598F: 64 B8 STZ $B8 C2/5991: 30 02 BMI $5995 C2/5993: 90 0B BCC $59A0 C2/5995: 08 PHP C2/5996: A9 3F LDA #$3F C2/5998: 04 B9 TSB $B9 C2/599A: AD 40 3A LDA $3A40 C2/599D: 04 B8 TSB $B8 C2/599F: 28 PLP C2/59A0: 30 02 BMI $59A4 C2/59A2: B0 07 BCS $59AB C2/59A4: A9 0F LDA #$0F C2/59A6: 4D 40 3A EOR $3A40 C2/59A9: 04 B8 TSB $B8 C2/59AB: 60 RTS ; [ ] _TCModeCheck: C2/59AC: A5 BA LDA $BA C2/59AE: 89 10 BIT #$10 C2/59B0: F0 28 BEQ $59DA C2/59B2: 89 02 BIT #$02 C2/59B4: F0 23 BEQ $59D9 C2/59B6: BD E5 3E LDA $3EE5,X C2/59B9: 89 20 BIT #$20 C2/59BB: D0 1C BNE $59D9 C2/59BD: 20 53 4B JSR $4B53 ; random number (carry) C2/59C0: B0 17 BCS $59D9 C2/59C2: DA PHX C2/59C3: AE 32 3A LDX $3A32 C2/59C6: BD 5F 2C LDA $2C5F,X C2/59C9: 0A ASL C2/59CA: AA TAX C2/59CB: C2 20 REP #$20 C2/59CD: BD 18 30 LDA $3018,X C2/59D0: 24 B8 BIT $B8 C2/59D2: F0 02 BEQ $59D6 C2/59D4: 85 B8 STA $B8 C2/59D6: E2 20 SEP #$20 C2/59D8: FA PLX C2/59D9: 60 RTS C2/59DA: A5 BB LDA $BB C2/59DC: 29 0C AND #$0C C2/59DE: 48 PHA C2/59DF: 89 04 BIT #$04 C2/59E1: D0 52 BNE $5A35 C2/59E3: AD 1F 20 LDA $201F C2/59E6: C9 02 CMP #$02 C2/59E8: D0 23 BNE $5A0D C2/59EA: AD AD 2E LDA $2EAD C2/59ED: EB XBA C2/59EE: AD AC 2E LDA $2EAC C2/59F1: E0 08 CPX #$08 C2/59F3: 90 07 BCC $59FC C2/59F5: 3C 19 30 BIT $3019,X C2/59F8: F0 11 BEQ $5A0B C2/59FA: 80 0E BRA $5A0A C2/59FC: 24 B9 BIT $B9 C2/59FE: F0 0D BEQ $5A0D C2/5A00: EB XBA C2/5A01: 24 B9 BIT $B9 C2/5A03: F0 08 BEQ $5A0D C2/5A05: 20 53 4B JSR $4B53 ; random number (carry) C2/5A08: 90 01 BCC $5A0B C2/5A0A: EB XBA C2/5A0B: 14 B9 TRB $B9 C2/5A0D: AD 1F 20 LDA $201F C2/5A10: C9 03 CMP #$03 C2/5A12: D0 21 BNE $5A35 C2/5A14: A9 0C LDA #$0C C2/5A16: EB XBA C2/5A17: A9 03 LDA #$03 C2/5A19: E0 08 CPX #$08 C2/5A1B: B0 07 BCS $5A24 C2/5A1D: 3C 18 30 BIT $3018,X C2/5A20: F0 11 BEQ $5A33 C2/5A22: 80 0E BRA $5A32 C2/5A24: 24 B8 BIT $B8 C2/5A26: F0 0D BEQ $5A35 C2/5A28: EB XBA C2/5A29: 24 B8 BIT $B8 C2/5A2B: F0 08 BEQ $5A35 C2/5A2D: 20 53 4B JSR $4B53 ; random number (carry) C2/5A30: 90 01 BCC $5A33 C2/5A32: EB XBA C2/5A33: 14 B8 TRB $B8 C2/5A35: 68 PLA C2/5A36: C9 04 CMP #$04 C2/5A38: F0 12 BEQ $5A4C C2/5A3A: A5 B8 LDA $B8 C2/5A3C: F0 0E BEQ $5A4C C2/5A3E: A5 B9 LDA $B9 C2/5A40: F0 0A BEQ $5A4C C2/5A42: 20 5A 4B JSR $4B5A ; random number (0..255) C2/5A45: DA PHX C2/5A46: 29 01 AND #$01 C2/5A48: AA TAX C2/5A49: 74 B8 STZ $B8,X C2/5A4B: FA PLX C2/5A4C: 60 RTS ; [ Remove Invalid Targets ] _TCExistCheck: C2/5A4D: DA PHX C2/5A4E: 08 PHP C2/5A4F: C2 20 REP #$20 C2/5A51: A2 12 LDX #$12 C2/5A53: BD 18 30 LDA $3018,X ; target mask C2/5A56: 24 B8 BIT $B8 C2/5A58: F0 22 BEQ $5A7C ; skip if not in targets C2/5A5A: BD A0 3A LDA $3AA0,X C2/5A5D: 4A LSR C2/5A5E: 90 17 BCC $5A77 ; branch if $3AA0.0 is clear (target is present) C2/5A60: A9 C2 00 LDA #$00C2 ; check for wound, petrify, zombie status (character) C2/5A63: E0 08 CPX #$08 C2/5A65: B0 03 BCS $5A6A ; branch if a monster C2/5A67: A9 80 00 LDA #$0080 ; check wound status only (monster) C2/5A6A: 3C E4 3E BIT $3EE4,X C2/5A6D: D0 08 BNE $5A77 ; branch if status is set C2/5A6F: BD F8 3E LDA $3EF8,X C2/5A72: 89 00 20 BIT #$2000 C2/5A75: F0 05 BEQ $5A7C C2/5A77: BD 18 30 LDA $3018,X C2/5A7A: 14 B8 TRB $B8 ; remove invalid target C2/5A7C: CA DEX ; next target C2/5A7D: CA DEX C2/5A7E: 10 D3 BPL $5A53 C2/5A80: 28 PLP C2/5A81: FA PLX C2/5A82: 60 RTS ; [ Decrement Status Counters ] _TimeCounter: C2/5A83: AD 91 3A LDA $3A91 ; increment counter for checking status counters C2/5A86: EE 91 3A INC $3A91 C2/5A89: 29 0F AND #$0F C2/5A8B: C9 0A CMP #$0A C2/5A8D: B0 52 BCS $5AE1 ; branch if greater than 10 C2/5A8F: 0A ASL C2/5A90: AA TAX ; otherwise, use it as a character/monster index C2/5A91: BD A0 3A LDA $3AA0,X C2/5A94: 4A LSR C2/5A95: 90 52 BCC $5AE9 ; return if $3AA0.0 is clear (target is not present) C2/5A97: 18 CLC C2/5A98: BD DC 3A LDA $3ADC,X ; slow/normal/haste counter C2/5A9B: 7D DD 3A ADC $3ADD,X ; add constant (+32/+64/+84) C2/5A9E: 9D DC 3A STA $3ADC,X C2/5AA1: 90 46 BCC $5AE9 ; return if it didn't overflow C2/5AA3: BD F1 3A LDA $3AF1,X C2/5AA6: F0 09 BEQ $5AB1 ; branch if stop counter is 0 C2/5AA8: DE F1 3A DEC $3AF1,X ; decrement stop counter C2/5AAB: D0 3C BNE $5AE9 C2/5AAD: A9 01 LDA #$01 ; stop just wore off C2/5AAF: 80 55 BRA $5B06 ; decrement reflect, freeze, sleep counters C2/5AB1: BD A0 3A LDA $3AA0,X C2/5AB4: 89 10 BIT #$10 C2/5AB6: D0 31 BNE $5AE9 ; return if $3AA0.4 is set C2/5AB8: BD 05 3B LDA $3B05,X C2/5ABB: C9 02 CMP #$02 C2/5ABD: 90 0A BCC $5AC9 ; branch if the condemned number is less than 2 C2/5ABF: 3A DEC C2/5AC0: 9D 05 3B STA $3B05,X ; decrement the condemned number C2/5AC3: 3A DEC C2/5AC4: D0 03 BNE $5AC9 C2/5AC6: 20 C7 5B JSR $5BC7 ; condemned effect (cast doom) C2/5AC9: 20 1B 5C JSR $5C1B ; try to run away C2/5ACC: 20 4F 5B JSR $5B4F ; create DoT action C2/5ACF: 7B TDC ; stop did not just wear off C2/5AD0: 20 06 5B JSR $5B06 ; decrement reflect, freeze, sleep counters C2/5AD3: FE F0 3A INC $3AF0,X ; increment DoT counter C2/5AD6: BD F0 3A LDA $3AF0,X C2/5AD9: 9B TXY C2/5ADA: 29 07 AND #$07 C2/5ADC: 0A ASL C2/5ADD: AA TAX C2/5ADE: 7C EA 5A JMP ($5AEA,X) ; trigger DoT ; frame 10-15 C2/5AE1: E9 0A SBC #$0A C2/5AE3: 0A ASL C2/5AE4: AA TAX C2/5AE5: 7C FA 5A JMP ($5AFA,X) C2/5AE8: BB TYX C2/5AE9: 60 RTS ; jump table for damage over time counters C2/5AEA: .DW $5B45, $5AE8, $5B3B, $5AE8, $5B45, $5AE8, $5AE8, $5AE8 ; jump table for frame 10-15 (enemy roulette, run away, increment battle/character/monster counters) C2/5AFA: .DW $5BB2, $5BFC, $5AE9, $5AE9, $5AE9, $5BD0 ; [ Decrement Reflect, Freeze, Sleep Counters ] ; $B8: ----pfrs (out) ; p: psyche (sleep) just wore off ; f: freeze just wore off ; r: reflect just wore off ; s: stop just wore off timer: C2/5B06: 85 B8 STA $B8 C2/5B08: BD 0C 3F LDA $3F0C,X ; decrement reflect counter C2/5B0B: F0 09 BEQ $5B16 C2/5B0D: DE 0C 3F DEC $3F0C,X C2/5B10: D0 04 BNE $5B16 C2/5B12: A9 02 LDA #$02 C2/5B14: 04 B8 TSB $B8 C2/5B16: BD 0D 3F LDA $3F0D,X ; decrement freeze counter C2/5B19: F0 09 BEQ $5B24 C2/5B1B: DE 0D 3F DEC $3F0D,X C2/5B1E: D0 04 BNE $5B24 C2/5B20: A9 04 LDA #$04 C2/5B22: 04 B8 TSB $B8 C2/5B24: BD F9 3C LDA $3CF9,X ; decrement psyche (sleep) counter C2/5B27: F0 09 BEQ $5B32 C2/5B29: DE F9 3C DEC $3CF9,X C2/5B2C: D0 04 BNE $5B32 C2/5B2E: A9 08 LDA #$08 C2/5B30: 04 B8 TSB $B8 C2/5B32: A5 B8 LDA $B8 C2/5B34: F0 B3 BEQ $5AE9 ; return if no counters hit zero C2/5B36: A9 29 LDA #$29 ; command $29 (stop, reflect, freeze, or psyche counter just wore off) C2/5B38: 4C 91 4E JMP $4E91 ; create immediate action ; 2: trigger poison damage (once every 8 frames) C2/5B3B: BB TYX C2/5B3C: BD 4C 3E LDA $3E4C,X ; set $3E4C.4 (poison counter triggered) C2/5B3F: 09 10 ORA #$10 C2/5B41: 9D 4C 3E STA $3E4C,X C2/5B44: 60 RTS ; 0,4: trigger regen, seize, phantasm damage (twice every 8 frames) C2/5B45: BB TYX C2/5B46: BD 4C 3E LDA $3E4C,X ; set $3E4C.3 (regen/seize/phantasm counter triggered) C2/5B49: 09 08 ORA #$08 C2/5B4B: 9D 4C 3E STA $3E4C,X C2/5B4E: 60 RTS ; [ Create DoT Action (Poison/Regen/Seize/Phantasm) ] rigeneTimer: C2/5B4F: A9 10 LDA #$10 C2/5B51: 3C A1 3A BIT $3AA1,X C2/5B54: D0 F8 BNE $5B4E ; return if $3AA1.4 is set (character already has a pending DoT action) C2/5B56: BD 4C 3E LDA $3E4C,X C2/5B59: 89 10 BIT #$10 C2/5B5B: F0 0E BEQ $5B6B ; branch if poison counter didn't just trigger ($3E4C.4) C2/5B5D: 29 EF AND #$EF C2/5B5F: 9D 4C 3E STA $3E4C,X ; clear poison trigger ($3E4C.4) C2/5B62: BD E4 3E LDA $3EE4,X C2/5B65: 29 04 AND #$04 C2/5B67: F0 E5 BEQ $5B4E ; return if target does not have poison status C2/5B69: 80 1A BRA $5B85 C2/5B6B: 89 08 BIT #$08 C2/5B6D: F0 23 BEQ $5B92 ; branch if regen/seize/phantasm counter didn't just trigger ($3E4C.3) C2/5B6F: 29 F7 AND #$F7 C2/5B71: 9D 4C 3E STA $3E4C,X ; clear regen/seize/phantasm trigger ($3E4C.3) C2/5B74: BD E5 3E LDA $3EE5,X C2/5B77: 1D 4D 3E ORA $3E4D,X ; isolate phantasm and seize status C2/5B7A: 29 40 AND #$40 C2/5B7C: D0 07 BNE $5B85 ; branch if target has phantasm or seize status C2/5B7E: BD F8 3E LDA $3EF8,X C2/5B81: 29 02 AND #$02 C2/5B83: F0 C9 BEQ $5B4E ; return if target doesn't have regen status C2/5B85: 8D 7B 3A STA $3A7B C2/5B88: A9 22 LDA #$22 ; command $22 (enemy roulette/characters run away ???) C2/5B8A: 8D 7A 3A STA $3A7A C2/5B8D: 20 B2 4E JSR $4EB2 ; create counterattack action C2/5B90: 80 17 BRA $5BA9 C2/5B92: BC 58 33 LDY $3358,X C2/5B95: 30 B7 BMI $5B4E ; return if seize target is invalid C2/5B97: C2 20 REP #$20 C2/5B99: B9 18 30 LDA $3018,Y ; bitmask of target C2/5B9C: 85 B8 STA $B8 C2/5B9E: A9 2D 00 LDA #$002D ; command $2D (hp drain from seize) C2/5BA1: 8D 7A 3A STA $3A7A C2/5BA4: E2 20 SEP #$20 C2/5BA6: 20 B2 4E JSR $4EB2 ; create counterattack action C2/5BA9: A9 10 LDA #$10 _OrFlag0Xplus: C2/5BAB: 1D A1 3A ORA $3AA1,X ; set $3AA1.4 (character has a pending DoT action) C2/5BAE: 9D A1 3A STA $3AA1,X C2/5BB1: 60 RTS ; 10: enemy roulette C2/5BB2: AD 43 2F LDA $2F43 C2/5BB5: 30 97 BMI $5B4E ; return if enemy roulette target is invalid C2/5BB7: C2 20 REP #$20 C2/5BB9: AD 42 2F LDA $2F42 C2/5BBC: 20 F9 51 JSR $51F9 ; get the first valid target in +A C2/5BBF: 7B TDC C2/5BC0: 3A DEC C2/5BC1: 8D 42 2F STA $2F42 ; clear enemy roulette target C2/5BC4: E2 20 SEP #$20 C2/5BC6: BB TYX ; fallthrough ; [ Condemned Effect (cast doom) ] death: C2/5BC7: A9 0D LDA #$0D ; spell $0D (doom) C2/5BC9: 85 B8 STA $B8 C2/5BCB: A9 26 LDA #$26 ; command $26 (cast spell with no caster) C2/5BCD: 4C 91 4E JMP $4E91 ; create immediate action ; 15: create run away action C2/5BD0: AD 45 2F LDA $2F45 C2/5BD3: F0 45 BEQ $5C1A ; return if characters are not trying to run away C2/5BD5: A5 B1 LDA $B1 C2/5BD7: 89 02 BIT #$02 C2/5BD9: D0 16 BNE $5BF1 ; C2/5BDB: AD 91 3A LDA $3A91 C2/5BDE: 29 70 AND #$70 C2/5BE0: D0 38 BNE $5C1A ; return if ... (status counter) _EscapeForce: C2/5BE2: AD 45 2F LDA $2F45 C2/5BE5: F0 33 BEQ $5C1A C2/5BE7: AD 38 3A LDA $3A38 C2/5BEA: F0 2E BEQ $5C1A ; return if no characters just escaped C2/5BEC: AD 97 3A LDA $3A97 C2/5BEF: D0 29 BNE $5C1A ; return if in colosseum mode C2/5BF1: A9 04 LDA #$04 C2/5BF3: 04 B0 TSB $B0 C2/5BF5: D0 23 BNE $5C1A ; C2/5BF7: A9 2A LDA #$2A ; command $2A (run) C2/5BF9: 4C 91 4E JMP $4E91 ; create immediate action ; 11: increment battle counter and character/monster timers (every 16 frames) C2/5BFC: 08 PHP C2/5BFD: C2 20 REP #$20 C2/5BFF: EE 44 3A INC $3A44 ; increment battle counter C2/5C02: A2 12 LDX #$12 C2/5C04: BD A0 3A LDA $3AA0,X C2/5C07: 4A LSR C2/5C08: 90 0B BCC $5C15 ; branch if $3AA0.0 is clear (target is not present) C2/5C0A: BD E4 3E LDA $3EE4,X C2/5C0D: 89 C0 00 BIT #$00C0 C2/5C10: D0 03 BNE $5C15 C2/5C12: FE C0 3D INC $3DC0,X ; increment character/monster timer C2/5C15: CA DEX C2/5C16: CA DEX C2/5C17: 10 EB BPL $5C04 C2/5C19: 28 PLP C2/5C1A: 60 RTS ; [ Try to Run Away ] escapeCheck: C2/5C1B: E0 08 CPX #$08 C2/5C1D: B0 34 BCS $5C53 ; return if a monster C2/5C1F: AD 45 2F LDA $2F45 C2/5C22: F0 2F BEQ $5C53 C2/5C24: AD 39 3A LDA $3A39 C2/5C27: 0D 40 3A ORA $3A40 C2/5C2A: 3C 18 30 BIT $3018,X C2/5C2D: D0 24 BNE $5C53 C2/5C2F: AD 3B 3A LDA $3A3B C2/5C32: D0 06 BNE $5C3A C2/5C34: 20 4D 5C JSR $5C4D C2/5C37: 4C E2 5B JMP $5BE2 C2/5C3A: BD 71 3D LDA $3D71,X ; run probability C2/5C3D: 20 65 4B JSR $4B65 ; random number (0..A-1) C2/5C40: 1A INC C2/5C41: 18 CLC C2/5C42: 7D 70 3D ADC $3D70,X ; add to run counter C2/5C45: 9D 70 3D STA $3D70,X C2/5C48: CD 3B 3A CMP $3A3B ; compare to run difficulty C2/5C4B: 90 06 BCC $5C53 C2/5C4D: BD 18 30 LDA $3018,X C2/5C50: 0C 38 3A TSB $3A38 ; character just ran away C2/5C53: 60 RTS ; [ Update Gauge Values/Condemned Number in Graphics Buffer ] _TransferCounter: C2/5C54: E2 30 SEP #$30 C2/5C56: A2 06 LDX #$06 C2/5C58: A0 03 LDY #$03 C2/5C5A: BD 19 32 LDA $3219,X ; atb gauge - 1 C2/5C5D: 3A DEC C2/5C5E: 99 22 20 STA $2022,Y ; update graphics buffer C2/5C61: BD 04 3B LDA $3B04,X C2/5C64: 99 26 20 STA $2026,Y ; update morph gauge buffer C2/5C67: BD 05 3B LDA $3B05,X C2/5C6A: 99 2A 20 STA $202A,Y ; update condemned number buffer C2/5C6D: CA DEX C2/5C6E: CA DEX C2/5C6F: 88 DEY C2/5C70: 10 E8 BPL $5C5A C2/5C72: 60 RTS ; [ Update Run Difficulty ] _TransferMonster: C2/5C73: C2 20 REP #$20 C2/5C75: A0 08 LDY #$08 C2/5C77: 7B TDC C2/5C78: 99 13 20 STA $2013,Y ; clear number of monsters alive for each name C2/5C7B: 3A DEC C2/5C7C: 99 0B 20 STA $200B,Y ; clear monster names C2/5C7F: 88 DEY C2/5C80: 88 DEY C2/5C81: D0 F4 BNE $5C77 C2/5C83: E2 20 SEP #$20 C2/5C85: A9 06 LDA #$06 C2/5C87: 14 B1 TRB $B1 ; clear can't run flag and harder to run flag C2/5C89: AD 1F 20 LDA $201F C2/5C8C: C9 02 CMP #$02 C2/5C8E: D0 14 BNE $5CA4 ; branch if not a pincer attack C2/5C90: AD AC 2E LDA $2EAC C2/5C93: 2D 2F 2F AND $2F2F C2/5C96: F0 0C BEQ $5CA4 C2/5C98: AD AD 2E LDA $2EAD C2/5C9B: 2D 2F 2F AND $2F2F C2/5C9E: F0 04 BEQ $5CA4 C2/5CA0: A9 02 LDA #$02 C2/5CA2: 04 B1 TSB $B1 C2/5CA4: 9C 3B 3A STZ $3A3B ; clear run difficulty C2/5CA7: 9C CA 3E STZ $3ECA ; clear number of different types of monsters C2/5CAA: B9 A8 3A LDA $3AA8,Y C2/5CAD: 4A LSR C2/5CAE: 90 54 BCC $5D04 ; branch if monster is not present C2/5CB0: B9 21 30 LDA $3021,Y ; monster mask C2/5CB3: 2C 3A 3A BIT $3A3A C2/5CB6: D0 4C BNE $5D04 ; branch if monster died or escaped C2/5CB8: 2C 09 34 BIT $3409 C2/5CBB: F0 47 BEQ $5D04 ; branch if monster was not revived or summoned C2/5CBD: B9 EC 3E LDA $3EEC,Y C2/5CC0: 89 C2 BIT #$C2 C2/5CC2: D0 40 BNE $5D04 ; branch if monster has petrify, wound, or zombie status C2/5CC4: B9 88 3C LDA $3C88,Y ; ($3C80) C2/5CC7: 4A LSR ; set carry if harder to run C2/5CC8: 89 04 BIT #$04 C2/5CCA: F0 04 BEQ $5CD0 ; branch if party can run C2/5CCC: A9 06 LDA #$06 C2/5CCE: 04 B1 TSB $B1 C2/5CD0: 7B TDC C2/5CD1: 2A ROL C2/5CD2: 38 SEC C2/5CD3: 2A ROL C2/5CD4: 0A ASL ; A = 2 (6 if monster is harder to run from) C2/5CD5: 6D 3B 3A ADC $3A3B ; add to run difficulty C2/5CD8: 8D 3B 3A STA $3A3B C2/5CDB: B9 9D 3C LDA $3C9D,Y C2/5CDE: 89 04 BIT #$04 C2/5CE0: D0 22 BNE $5D04 C2/5CE2: C2 20 REP #$20 C2/5CE4: A2 00 LDX #$00 C2/5CE6: BD 0D 20 LDA $200D,X C2/5CE9: 10 09 BPL $5CF4 C2/5CEB: B9 88 33 LDA $3388,Y C2/5CEE: 9D 0D 20 STA $200D,X C2/5CF1: EE CA 3E INC $3ECA C2/5CF4: D9 88 33 CMP $3388,Y C2/5CF7: D0 05 BNE $5CFE C2/5CF9: FE 15 20 INC $2015,X C2/5CFC: 80 06 BRA $5D04 C2/5CFE: E8 INX C2/5CFF: E8 INX C2/5D00: E0 08 CPX #$08 C2/5D02: 90 E2 BCC $5CE6 C2/5D04: E2 20 SEP #$20 C2/5D06: C8 INY C2/5D07: C8 INY C2/5D08: C0 0C CPY #$0C C2/5D0A: 90 9E BCC $5CAA C2/5D0C: AD 1F 20 LDA $201F C2/5D0F: C9 03 CMP #$03 C2/5D11: F0 06 BEQ $5D19 C2/5D13: A5 B0 LDA $B0 C2/5D15: 89 40 BIT #$40 C2/5D17: F0 03 BEQ $5D1C C2/5D19: 9C 3B 3A STZ $3A3B C2/5D1C: AD 42 3A LDA $3A42 C2/5D1F: F0 04 BEQ $5D25 C2/5D21: A9 02 LDA #$02 C2/5D23: 04 B1 TSB $B1 C2/5D25: 60 RTS ; [ Update Character HP/MP/Status in Graphics Buffer ] _TransferStatus: C2/5D26: 08 PHP C2/5D27: C2 20 REP #$20 C2/5D29: E2 10 SEP #$10 C2/5D2B: A0 06 LDY #$06 C2/5D2D: B9 F4 3B LDA $3BF4,Y ; current hp C2/5D30: 99 78 2E STA $2E78,Y C2/5D33: B9 1C 3C LDA $3C1C,Y ; max hp C2/5D36: 99 80 2E STA $2E80,Y C2/5D39: B9 08 3C LDA $3C08,Y ; current mp C2/5D3C: 99 88 2E STA $2E88,Y C2/5D3F: B9 30 3C LDA $3C30,Y ; max mp C2/5D42: 99 90 2E STA $2E90,Y C2/5D45: B9 E4 3E LDA $3EE4,Y ; status 1 & 2 C2/5D48: 99 98 2E STA $2E98,Y C2/5D4B: B9 F8 3E LDA $3EF8,Y ; status 3 & 4 C2/5D4E: 99 A0 2E STA $2EA0,Y C2/5D51: 88 DEY C2/5D52: 88 DEY C2/5D53: 10 D8 BPL $5D2D C2/5D55: 28 PLP C2/5D56: 60 RTS ; -------------------------------------[ Battle: Victory Updates ]-------------------------------------- ; [ Update Party After Victory ] _Win: C2/5D57: 08 PHP C2/5D58: 20 67 02 JSR $0267 ; move character back after attacking C2/5D5B: A2 06 LDX #$06 C2/5D5D: 9E 99 2E STZ $2E99,X ; clear all status 2 for graphics C2/5D60: CA DEX C2/5D61: CA DEX C2/5D62: 10 F9 BPL $5D5D C2/5D64: A2 0B LDX #$0B C2/5D66: 9E 35 2F STZ $2F35,X ; zero all message variables C2/5D69: CA DEX C2/5D6A: 10 FA BPL $5D66 C2/5D6C: A9 08 LDA #$08 C2/5D6E: 20 11 64 JSR $6411 ; do battle graphics command $08 (victory animation) C2/5D71: 20 03 49 JSR $4903 ; init graphics for end of battle C2/5D74: AD 97 3A LDA $3A97 C2/5D77: F0 18 BEQ $5D91 ; branch if not a colosseum battle ; colosseum victory C2/5D79: A9 01 LDA #$01 ; item quantity = 1 C2/5D7B: 8D 75 2E STA $2E75 C2/5D7E: AD 07 02 LDA $0207 ; variable 0 = item number C2/5D81: 8D 35 2F STA $2F35 C2/5D84: 20 DC 54 JSR $54DC ; load item data C2/5D87: 20 79 62 JSR $6279 ; add item to inventory C2/5D8A: A9 20 LDA #$20 ; battle message $20 "Got x 1" C2/5D8C: 20 D4 5F JSR $5FD4 ; display battle message C2/5D8F: 28 PLP C2/5D90: 60 RTS ; normal victory C2/5D91: C2 10 REP #$10 C2/5D93: 7B TDC C2/5D94: AE D4 3E LDX $3ED4 ; battle index C2/5D97: E0 00 02 CPX #$0200 C2/5D9A: B0 04 BCS $5DA0 ; branch if >= $0200 (no magic points) C2/5D9C: BF 00 B4 DF LDA $DFB400,X ; $FB = number of magic points gained from battle C2/5DA0: 85 FB STA $FB C2/5DA2: 64 F0 STZ $F0 C2/5DA4: AD BC 3E LDA $3EBC ; $F1 set if morph is available C2/5DA7: 29 08 AND #$08 C2/5DA9: 85 F1 STA $F1 C2/5DAB: C2 20 REP #$20 C2/5DAD: A2 0A 00 LDX #$000A C2/5DB0: BD EC 3E LDA $3EEC,X ; status 1 C2/5DB3: 89 C2 00 BIT #$00C2 C2/5DB6: F0 26 BEQ $5DDE ; skip if not zombie, petrify, or wound C2/5DB8: AD E4 11 LDA $11E4 C2/5DBB: 89 02 00 BIT #$0002 C2/5DBE: D0 0F BNE $5DCF ; branch if on the veldt C2/5DC0: 18 CLC C2/5DC1: BD 8C 3D LDA $3D8C,X ; monster experience C2/5DC4: 6D 35 2F ADC $2F35 ; add to variable 0 C2/5DC7: 8D 35 2F STA $2F35 C2/5DCA: 90 03 BCC $5DCF C2/5DCC: EE 37 2F INC $2F37 ; high byte of variable 0 C2/5DCF: 18 CLC C2/5DD0: BD A0 3D LDA $3DA0,X ; monster gold C2/5DD3: 6D 3E 2F ADC $2F3E ; add to variable 3 C2/5DD6: 8D 3E 2F STA $2F3E C2/5DD9: 90 03 BCC $5DDE C2/5DDB: EE 40 2F INC $2F40 ; high byte of variable 3 C2/5DDE: CA DEX ; next monster C2/5DDF: CA DEX C2/5DE0: 10 CE BPL $5DB0 C2/5DE2: AD 35 2F LDA $2F35 ; total experience C2/5DE5: 85 E8 STA $E8 C2/5DE7: AD 36 2F LDA $2F36 C2/5DEA: AE 76 3A LDX $3A76 ; number of allies alive C2/5DED: DA PHX C2/5DEE: 20 92 47 JSR $4792 ; divide +A / X C2/5DF1: 85 EC STA $EC ; +$EC = experience per character C2/5DF3: 86 E9 STX $E9 ; $E9 = remainder C2/5DF5: A5 E8 LDA $E8 C2/5DF7: FA PLX C2/5DF8: 20 92 47 JSR $4792 ; divide +A / X C2/5DFB: 8D 35 2F STA $2F35 C2/5DFE: A5 EC LDA $EC C2/5E00: 8D 36 2F STA $2F36 C2/5E03: 0D 35 2F ORA $2F35 C2/5E06: F0 06 BEQ $5E0E C2/5E08: A9 27 00 LDA #$0027 ; battle message $27 "Got Exp. point(s)" C2/5E0B: 20 D4 5F JSR $5FD4 ; display battle message C2/5E0E: E2 20 SEP #$20 C2/5E10: A0 06 00 LDY #$0006 C2/5E13: B9 18 30 LDA $3018,Y ; character mask C2/5E16: 2C 74 3A BIT $3A74 C2/5E19: F0 58 BEQ $5E73 ; skip if character is not alive C2/5E1B: B9 59 3C LDA $3C59,Y ; relic effects 4 C2/5E1E: 29 10 AND #$10 C2/5E20: F0 0D BEQ $5E2F ; branch if cat hood not equipped C2/5E22: 04 F0 TSB $F0 C2/5E24: D0 09 BNE $5E2F C2/5E26: 0E 3E 2F ASL $2F3E ; double gold C2/5E29: 2E 3F 2F ROL $2F3F C2/5E2C: 2E 40 2F ROL $2F40 C2/5E2F: B9 D8 3E LDA $3ED8,Y ; actor number C2/5E32: C9 00 CMP #$00 C2/5E34: D0 13 BNE $5E49 ; branch if not TERRA C2/5E36: A5 F1 LDA $F1 C2/5E38: F0 0F BEQ $5E49 ; branch if morph is not available C2/5E3A: 04 F0 TSB $F0 C2/5E3C: A5 FB LDA $FB ; number of magic points * 2 C2/5E3E: 0A ASL C2/5E3F: 6D F6 1C ADC $1CF6 ; add to morph counter (max $FF) C2/5E42: 90 02 BCC $5E46 C2/5E44: A9 FF LDA #$FF C2/5E46: 8D F6 1C STA $1CF6 C2/5E49: BE 10 30 LDX $3010,Y ; character mask C2/5E4C: 20 35 62 JSR $6235 ; add experience C2/5E4F: B9 59 3C LDA $3C59,Y ; relic effects 4 C2/5E52: 89 08 BIT #$08 C2/5E54: F0 03 BEQ $5E59 ; branch if exp. egg not equipped C2/5E56: 20 35 62 JSR $6235 ; add experience (again) C2/5E59: B9 D8 3E LDA $3ED8,Y ; actor number C2/5E5C: C9 0C CMP #$0C C2/5E5E: B0 13 BCS $5E73 ; branch if >= $0C (GOGO) C2/5E60: 20 83 62 JSR $6283 ; calculate pointer to character's spells C2/5E63: BE 10 30 LDX $3010,Y C2/5E66: 5A PHY C2/5E67: 20 EF 5F JSR $5FEF ; update spells taught by items C2/5E6A: BD 1E 16 LDA $161E,X C2/5E6D: 30 03 BMI $5E72 ; branch if no esper equipped C2/5E6F: 20 2A 60 JSR $602A ; update spells taught by espers C2/5E72: 7A PLY C2/5E73: 88 DEY ; next character C2/5E74: 88 DEY C2/5E75: 10 9C BPL $5E13 C2/5E77: A5 F1 LDA $F1 ; C2/5E79: 25 F0 AND $F0 C2/5E7B: F0 12 BEQ $5E8F C2/5E7D: A5 FB LDA $FB ; magic points C2/5E7F: F0 0E BEQ $5E8F ; branch if no magic points gained C2/5E81: 8D 35 2F STA $2F35 ; set variable 0 C2/5E84: 9C 36 2F STZ $2F36 C2/5E87: 9C 37 2F STZ $2F37 C2/5E8A: A9 35 LDA #$35 ; battle message $35 "Got Magic Point(s)" C2/5E8C: 20 D4 5F JSR $5FD4 ; display battle message C2/5E8F: A0 06 00 LDY #$0006 C2/5E92: B9 18 30 LDA $3018,Y ; character mask C2/5E95: 2C 74 3A BIT $3A74 ; skip if character is not alive C2/5E98: F0 1F BEQ $5EB9 C2/5E9A: B9 D8 3E LDA $3ED8,Y ; actor number C2/5E9D: 20 83 62 JSR $6283 ; calculate pointer to character's spells C2/5EA0: BE 10 30 LDX $3010,Y C2/5EA3: 98 TYA C2/5EA4: 4A LSR C2/5EA5: 8D 38 2F STA $2F38 ; set variable 1 to character number C2/5EA8: A9 2E LDA #$2E ; battle message $2E ( gained a level) C2/5EAA: 85 F2 STA $F2 C2/5EAC: 20 6D 60 JSR $606D ; check for level up C2/5EAF: B9 D8 3E LDA $3ED8,Y C2/5EB2: C9 0C CMP #$0C C2/5EB4: B0 03 BCS $5EB9 ; branch if actor >= $0C (GOGO) C2/5EB6: 20 33 61 JSR $6133 ; display learned spells C2/5EB9: 88 DEY ; next character C2/5EBA: 88 DEY C2/5EBB: 10 D5 BPL $5E92 C2/5EBD: E2 10 SEP #$10 C2/5EBF: 7B TDC C2/5EC0: 38 SEC C2/5EC1: A2 02 LDX #$02 C2/5EC3: A0 17 LDY #$17 C2/5EC5: 6A ROR C2/5EC6: 90 02 BCC $5ECA C2/5EC8: 6A ROR C2/5EC9: CA DEX C2/5ECA: 3C 84 3A BIT $3A84,X ; lores learned this battle C2/5ECD: F0 13 BEQ $5EE2 ; skip if not learned C2/5ECF: 48 PHA C2/5ED0: 1D 29 1D ORA $1D29,X ; add to known lores C2/5ED3: 9D 29 1D STA $1D29,X C2/5ED6: 98 TYA C2/5ED7: 69 8B ADC #$8B ; $8B (condemned, first lore) C2/5ED9: 8D 35 2F STA $2F35 ; set variable 0 C2/5EDC: A9 2D LDA #$2D ; battle message $2D "Learned " C2/5EDE: 20 D4 5F JSR $5FD4 ; display battle message C2/5EE1: 68 PLA C2/5EE2: 88 DEY ; next lore C2/5EE3: 10 E0 BPL $5EC5 C2/5EE5: AD 0A 30 LDA $300A ; MOG character slot C2/5EE8: 30 16 BMI $5F00 ; branch if MOG not present C2/5EEA: AE E2 11 LDX $11E2 C2/5EED: BF 5B 8E ED LDA $ED8E5B,X ; dance index for each battle background C2/5EF1: 30 0D BMI $5F00 C2/5EF3: 20 17 52 JSR $5217 ; get bit mask and byte number C2/5EF6: 0C 4C 1D TSB $1D4C ; set in known dances C2/5EF9: D0 05 BNE $5F00 ; branch if dance was already known C2/5EFB: A9 40 LDA #$40 ; battle message $40 "Mastered a new dance!" C2/5EFD: 20 D4 5F JSR $5FD4 ; display battle message C2/5F00: A5 F0 LDA $F0 C2/5F02: 4A LSR C2/5F03: 90 05 BCC $5F0A ; branch if cursed shield was not dispelled (see C2/6005) C2/5F05: A9 2A LDA #$2A ; battle message $2A "Dispelled curse on shield" C2/5F07: 20 D4 5F JSR $5FD4 ; display battle message C2/5F0A: A2 05 LDX #$05 C2/5F0C: 7B TDC C2/5F0D: 3A DEC C2/5F0E: 95 F0 STA $F0,X ; clear items dropped C2/5F10: 74 F6 STZ $F6,X ; zero item quantities C2/5F12: CA DEX C2/5F13: 10 F7 BPL $5F0C C2/5F15: A0 0A LDY #$0A C2/5F17: B9 EC 3E LDA $3EEC,Y ; status 1 C2/5F1A: 89 C2 BIT #$C2 C2/5F1C: F0 30 BEQ $5F4E ; skip if not wound, petrify, or zombie C2/5F1E: 20 5A 4B JSR $4B5A ; random number (0..255) C2/5F21: C9 20 CMP #$20 ; 1/8 chance to get rare item C2/5F23: C2 30 REP #$30 C2/5F25: 7B TDC C2/5F26: 6A ROR C2/5F27: 79 01 20 ADC $2001,Y ; monster index C2/5F2A: 0A ASL C2/5F2B: 2A ROL C2/5F2C: AA TAX C2/5F2D: BF 02 30 CF LDA $CF3002,X ; monster items dropped C2/5F31: E2 30 SEP #$30 C2/5F33: C9 FF CMP #$FF C2/5F35: F0 17 BEQ $5F4E ; branch if empty C2/5F37: A2 05 LDX #$05 C2/5F39: D5 F0 CMP $F0,X C2/5F3B: F0 0F BEQ $5F4C ; branch if one or more of this item was dropped by a different monster C2/5F3D: EB XBA C2/5F3E: B5 F0 LDA $F0,X ; item number C2/5F40: 1A INC C2/5F41: D0 05 BNE $5F48 ; branch if not empty C2/5F43: EB XBA C2/5F44: 95 F0 STA $F0,X ; set item number C2/5F46: 80 04 BRA $5F4C C2/5F48: EB XBA ; next item slot C2/5F49: CA DEX C2/5F4A: 10 ED BPL $5F39 C2/5F4C: F6 F6 INC $F6,X ; increment quantity C2/5F4E: 88 DEY ; next monster C2/5F4F: 88 DEY C2/5F50: 10 C5 BPL $5F17 C2/5F52: A2 05 LDX #$05 C2/5F54: B5 F0 LDA $F0,X ; dropped item number C2/5F56: C9 FF CMP #$FF C2/5F58: F0 1B BEQ $5F75 ; branch if empty C2/5F5A: 8D 35 2F STA $2F35 ; set variable 0 C2/5F5D: 20 DC 54 JSR $54DC ; load item data C2/5F60: B5 F6 LDA $F6,X ; quantity C2/5F62: 8D 38 2F STA $2F38 ; set variable 1 C2/5F65: 8D 75 2E STA $2E75 ; set item quantity C2/5F68: 20 79 62 JSR $6279 ; add item to inventory C2/5F6B: A9 20 LDA #$20 ; battle message $20 "Got x 1" C2/5F6D: D6 F6 DEC $F6,X C2/5F6F: F0 01 BEQ $5F72 ; branch if only 1 was obtained C2/5F71: 1A INC ; change to battle message $21 "Got x " C2/5F72: 20 D4 5F JSR $5FD4 ; display battle message C2/5F75: CA DEX ; next item C2/5F76: 10 DC BPL $5F54 C2/5F78: AD 3E 2F LDA $2F3E ; variable 3 (gp) C2/5F7B: 0D 3F 2F ORA $2F3F C2/5F7E: 0D 40 2F ORA $2F40 C2/5F81: F0 42 BEQ $5FC5 ; return if no gp was gained C2/5F83: AD 3E 2F LDA $2F3E ; move to variable 1 C2/5F86: 8D 38 2F STA $2F38 C2/5F89: AD 3F 2F LDA $2F3F C2/5F8C: 8D 39 2F STA $2F39 C2/5F8F: AD 40 2F LDA $2F40 C2/5F92: 8D 3A 2F STA $2F3A C2/5F95: A9 26 LDA #$26 ; battle message $26 "Got GP" (no keypress) C2/5F97: 20 D4 5F JSR $5FD4 ; display battle message C2/5F9A: 18 CLC C2/5F9B: A2 FD LDX #$FD C2/5F9D: BD 63 17 LDA $1763,X ; current gp (++$1860) C2/5FA0: 7D 41 2E ADC $2E41,X ; add gained gp (max 9999999) C2/5FA3: 9D 63 17 STA $1763,X C2/5FA6: E8 INX C2/5FA7: D0 F4 BNE $5F9D C2/5FA9: A2 02 LDX #$02 C2/5FAB: BF C7 5F C2 LDA $C25FC7,X ; max gp C2/5FAF: DD 60 18 CMP $1860,X C2/5FB2: F0 0E BEQ $5FC2 C2/5FB4: B0 0F BCS $5FC5 C2/5FB6: A2 02 LDX #$02 C2/5FB8: BF C7 5F C2 LDA $C25FC7,X ; max gp C2/5FBC: 9D 60 18 STA $1860,X C2/5FBF: CA DEX C2/5FC0: 10 F6 BPL $5FB8 C2/5FC2: CA DEX C2/5FC3: 10 E6 BPL $5FAB C2/5FC5: 28 PLP C2/5FC6: 60 RTS ; max gp (9999999) tableMaxGill: C2/5FC7: 7F 96 98 .DL $98967F ; [ Display Battle Message and End Battle ] ; A = battle message index ($FF = no message) _Lose: C2/5FCA: 48 PHA C2/5FCB: A9 01 LDA #$01 C2/5FCD: 0C BC 3E TSB $3EBC ; game over after battle ends C2/5FD0: 20 03 49 JSR $4903 ; init graphics for end of battle C2/5FD3: 68 PLA ; fall through ; [ Display Battle Message ] ; A = battle message index ($FF = no message) printMes: C2/5FD4: 08 PHP C2/5FD5: E2 20 SEP #$20 C2/5FD7: C9 FF CMP #$FF C2/5FD9: F0 12 BEQ $5FED ; branch if no message C2/5FDB: 8D 6F 2D STA $2D6F C2/5FDE: A9 02 LDA #$02 ; battle script command $02 (show battle message) C2/5FE0: 8D 6E 2D STA $2D6E C2/5FE3: A9 FF LDA #$FF C2/5FE5: 8D 72 2D STA $2D72 C2/5FE8: A9 04 LDA #$04 C2/5FEA: 20 11 64 JSR $6411 ; do battle graphics command $04 (execute battle script) C2/5FED: 28 PLP C2/5FEE: 60 RTS ; [ Update Spells Taught by Items ] ; X = pointer to character data (+$1600) _GainItemMagic: C2/5FEF: DA PHX C2/5FF0: A0 06 00 LDY #$0006 ; loop through all equipped items C2/5FF3: BD 1F 16 LDA $161F,X C2/5FF6: C9 FF CMP #$FF C2/5FF8: F0 2A BEQ $6024 ; skip if no item equipped C2/5FFA: C9 66 CMP #$66 C2/5FFC: D0 0E BNE $600C ; branch if not cursed shield C2/5FFE: EE C0 3E INC $3EC0 ; increment cursed shield battle counter C2/6001: D0 09 BNE $600C C2/6003: A9 01 LDA #$01 C2/6005: 04 F0 TSB $F0 ; cursed shield dispelled C2/6007: A9 67 LDA #$67 C2/6009: 9D 1F 16 STA $161F,X ; replace with paladin shield C2/600C: EB XBA C2/600D: A9 1E LDA #$1E ; calculate pointer to item data C2/600F: 20 81 47 JSR $4781 ; multiply A * B C2/6012: DA PHX C2/6013: 5A PHY C2/6014: AA TAX C2/6015: 7B TDC C2/6016: BF 04 50 D8 LDA $D85004,X ; spell taught by item C2/601A: A8 TAY C2/601B: BF 03 50 D8 LDA $D85003,X ; spell learn rate C2/601F: 20 4B 60 JSR $604B ; add to spell learn % C2/6022: 7A PLY C2/6023: FA PLX C2/6024: E8 INX C2/6025: 88 DEY C2/6026: D0 CB BNE $5FF3 C2/6028: FA PLX C2/6029: 60 RTS ; [ Update Spells Taught by Espers ] _GainGenjyuMagic: C2/602A: DA PHX C2/602B: 20 93 62 JSR $6293 ; calculate pointer to esper data C2/602E: A0 05 00 LDY #$0005 C2/6031: 7B TDC C2/6032: BF 01 6E D8 LDA $D86E01,X ; spell taught by esper C2/6036: C9 FF CMP #$FF C2/6038: F0 0A BEQ $6044 C2/603A: 5A PHY C2/603B: A8 TAY C2/603C: BF 00 6E D8 LDA $D86E00,X ; spell learn rate C2/6040: 20 4B 60 JSR $604B ; add to spell learn % C2/6043: 7A PLY C2/6044: E8 INX C2/6045: E8 INX C2/6046: 88 DEY C2/6047: D0 E8 BNE $6031 C2/6049: FA PLX C2/604A: 60 RTS ; [ Add to Spell Learn % ] ; A = % to learn ; Y = spell index MagicSub: C2/604B: F0 1F BEQ $606C ; return if 0% to learn C2/604D: EB XBA C2/604E: A5 FB LDA $FB ; C2/6050: 20 81 47 JSR $4781 ; multiply A * B C2/6053: 85 EE STA $EE C2/6055: B1 F4 LDA ($F4),Y ; current learned % C2/6057: C9 FF CMP #$FF C2/6059: F0 11 BEQ $606C ; return if spell is already fully learned C2/605B: 18 CLC C2/605C: 65 EE ADC $EE ; add amount to learn C2/605E: B0 04 BCS $6064 ; branch on overflow (should never happen) C2/6060: C9 64 CMP #$64 C2/6062: 90 02 BCC $6066 ; branch if total is less than 100 C2/6064: A9 80 LDA #$80 C2/6066: 91 F4 STA ($F4),Y ; set MSB in learn % C2/6068: A5 F1 LDA $F1 ; C2/606A: 04 F0 TSB $F0 C2/606C: 60 RTS ; [ Check for Level Up ] _LevelUpCheck: C2/606D: 64 F8 STZ $F8 ; $F8 is the high byte of the calculated experience C2/606F: 7B TDC C2/6070: BD 08 16 LDA $1608,X ; level C2/6073: C9 63 CMP #$63 C2/6075: B0 F5 BCS $606C ; return if >= 99 C2/6077: C2 20 REP #$20 C2/6079: 0A ASL C2/607A: DA PHX C2/607B: AA TAX C2/607C: 7B TDC C2/607D: 18 CLC C2/607E: 7F 1E 82 ED ADC $ED821E,X ; character experience progression data C2/6082: 90 02 BCC $6086 C2/6084: E6 F8 INC $F8 C2/6086: CA DEX C2/6087: CA DEX C2/6088: D0 F3 BNE $607D C2/608A: FA PLX C2/608B: 0A ASL ; multiply calculated value by 8 C2/608C: 26 F8 ROL $F8 C2/608E: 0A ASL C2/608F: 26 F8 ROL $F8 C2/6091: 0A ASL C2/6092: 26 F8 ROL $F8 C2/6094: 85 F6 STA $F6 ; ++$F6 = experience needed to level up C2/6096: BD 12 16 LDA $1612,X ; current experience (high word) C2/6099: C5 F7 CMP $F7 C2/609B: E2 20 SEP #$20 C2/609D: 90 CD BCC $606C ; return if not enough to level up C2/609F: D0 07 BNE $60A8 ; branch if high word is greater than needed C2/60A1: BD 11 16 LDA $1611,X ; check low byte C2/60A4: C5 F6 CMP $F6 C2/60A6: 90 C4 BCC $606C ; return if not enough to level up C2/60A8: A5 F2 LDA $F2 C2/60AA: F0 05 BEQ $60B1 ; branch if no battle message for level up C2/60AC: 64 F2 STZ $F2 C2/60AE: 20 D4 5F JSR $5FD4 ; display battle message C2/60B1: 20 C2 60 JSR $60C2 ; update stats at level up C2/60B4: DA PHX C2/60B5: BD 08 16 LDA $1608,X ; B = level C2/60B8: EB XBA C2/60B9: BD 00 16 LDA $1600,X ; A = actor C2/60BC: 20 B6 61 JSR $61B6 ; update natural magic/skills at level up C2/60BF: FA PLX C2/60C0: 80 AB BRA $606D ; [ Update Stats at Level Up ] HpMpSub: C2/60C2: 08 PHP C2/60C3: FE 08 16 INC $1608,X ; increment level C2/60C6: 64 FD STZ $FD ; clear high byte of hp/mp increase C2/60C8: 64 FF STZ $FF C2/60CA: DA PHX C2/60CB: 7B TDC C2/60CC: BD 08 16 LDA $1608,X ; level C2/60CF: AA TAX C2/60D0: BF 00 F5 E6 LDA $E6F500,X ; character MP progression data C2/60D4: 85 FE STA $FE C2/60D6: BF 9E F4 E6 LDA $E6F49E,X ; character HP progression data C2/60DA: 85 FC STA $FC C2/60DC: FA PLX C2/60DD: BD 1E 16 LDA $161E,X ; equipped esper C2/60E0: 30 14 BMI $60F6 ; branch if no esper equipped C2/60E2: 5A PHY C2/60E3: DA PHX C2/60E4: 9B TXY C2/60E5: 20 93 62 JSR $6293 ; calculate pointer to esper data C2/60E8: 7B TDC C2/60E9: BF 0A 6E D8 LDA $D86E0A,X ; esper level up bonus C2/60ED: 30 05 BMI $60F4 ; branch if no bonus C2/60EF: 0A ASL C2/60F0: AA TAX C2/60F1: FC 4E 61 JSR ($614E,X) ; do esper level up bonus C2/60F4: FA PLX C2/60F5: 7A PLY C2/60F6: C2 21 REP #$21 C2/60F8: BD 0B 16 LDA $160B,X ; hp boost C2/60FB: 48 PHA C2/60FC: 29 00 C0 AND #$C000 C2/60FF: 85 EE STA $EE C2/6101: 68 PLA C2/6102: 29 FF 3F AND #$3FFF ; max hp C2/6105: 65 FC ADC $FC ; add increase (max 9999) C2/6107: C9 10 27 CMP #$2710 C2/610A: 90 03 BCC $610F C2/610C: A9 0F 27 LDA #$270F C2/610F: 05 EE ORA $EE ; combine with hp boost C2/6111: 9D 0B 16 STA $160B,X ; set new max hp C2/6114: 18 CLC C2/6115: BD 0F 16 LDA $160F,X ; mp boost C2/6118: 48 PHA C2/6119: 29 00 C0 AND #$C000 C2/611C: 85 EE STA $EE C2/611E: 68 PLA C2/611F: 29 FF 3F AND #$3FFF ; max mp C2/6122: 65 FE ADC $FE ; add increase (max 999) C2/6124: C9 E8 03 CMP #$03E8 C2/6127: 90 03 BCC $612C C2/6129: A9 E7 03 LDA #$03E7 C2/612C: 05 EE ORA $EE ; mp boost C2/612E: 9D 0F 16 STA $160F,X ; set new max mp C2/6131: 28 PLP C2/6132: 60 RTS ; [ Display Learned Spells ] _GetMagic: C2/6133: 5A PHY C2/6134: A0 35 00 LDY #$0035 C2/6137: B1 F4 LDA ($F4),Y ; spell learn % C2/6139: C9 80 CMP #$80 C2/613B: D0 0C BNE $6149 ; skip if not newly learned C2/613D: A9 FF LDA #$FF C2/613F: 91 F4 STA ($F4),Y ; make spell fully learned C2/6141: 8C 35 2F STY $2F35 ; variable 0 = spell number C2/6144: A9 32 LDA #$32 ; battle message $32 " learned " C2/6146: 20 D4 5F JSR $5FD4 ; display battle message C2/6149: 88 DEY ; next spell C2/614A: 10 EB BPL $6137 C2/614C: 7A PLY C2/614D: 60 RTS ; jump table for esper level up bonus C2/614E: .DW $6170, $6174, $6178, $6170, $6174, $6178, $61B0, $6197 C2/615E: .DW $6197, $619B, $619B, $619A, $619A, $6199, $6199, $6198 C2/616E: .DW $6198 ; [ Esper Bonus $00/$03: +10% HP/MP Increase ] C2/6170: A9 1A LDA #$1A ; 26/256 = 10.16% C2/6172: 80 06 BRA $617A ; [ Esper Bonus $01/$04: +30% HP/MP Increase ] C2/6174: A9 4E LDA #$4E ; 78/256 = 30.47% C2/6176: 80 02 BRA $617A ; [ Esper Bonus $02/$05: +50% HP/MP Increase ] C2/6178: A9 80 LDA #$80 ; 128/256 = 50.00% C2/617A: E0 06 00 CPX #$0006 C2/617D: A2 00 00 LDX #$0000 C2/6180: 90 02 BCC $6184 ; branch if hp increase C2/6182: E8 INX ; increment pointer for mp increase C2/6183: E8 INX C2/6184: EB XBA C2/6185: B5 FC LDA $FC,X C2/6187: 20 81 47 JSR $4781 ; multiply A * B C2/618A: EB XBA C2/618B: D0 01 BNE $618E ; minimum increase is 1 C2/618D: 1A INC C2/618E: 18 CLC C2/618F: 75 FC ADC $FC,X ; add to hp/mp increase C2/6191: 95 FC STA $FC,X C2/6193: 90 02 BCC $6197 C2/6195: F6 FD INC $FD,X C2/6197: 60 RTS ; [ Esper Bonus $09-$10: Stat Bonuses ] C2/6198: C8 INY ; mag.pwr ($161D) C2/6199: C8 INY ; stamina ($161C) C2/619A: C8 INY ; speed ($161B) C2/619B: 8A TXA ; strength ($161A) C2/619C: 4A LSR ; carry cleared if stat gets +2 C2/619D: 4A LSR C2/619E: BB TYX C2/619F: BD 1A 16 LDA $161A,X ; increment stat (max 128) C2/61A2: 1A INC C2/61A3: B0 01 BCS $61A6 ; branch if not +2 C2/61A5: 1A INC C2/61A6: C9 81 CMP #$81 C2/61A8: 90 02 BCC $61AC C2/61AA: A9 80 LDA #$80 C2/61AC: 9D 1A 16 STA $161A,X C2/61AF: 60 RTS ; [ Esper Bonus $06: +100% HP Increase ] C2/61B0: 7B TDC C2/61B1: AA TAX C2/61B2: A5 FC LDA $FC C2/61B4: 80 D8 BRA $618E ; [ Update Natural Magic/Skills at Level Up ] ; A = actor ; B = level LearnMagic: C2/61B6: A2 00 00 LDX #$0000 C2/61B9: C9 00 CMP #$00 C2/61BB: F0 3F BEQ $61FC ; branch if character is TERRA C2/61BD: A2 20 00 LDX #$0020 C2/61C0: C9 06 CMP #$06 C2/61C2: F0 38 BEQ $61FC ; branch if character is CELES ; learn swdtech C2/61C4: A2 00 00 LDX #$0000 C2/61C7: C9 02 CMP #$02 C2/61C9: D0 15 BNE $61E0 ; branch if character is not CYAN C2/61CB: 20 22 62 JSR $6222 ; check if swdtech was learned C2/61CE: F0 51 BEQ $6221 C2/61D0: 0C F7 1C TSB $1CF7 C2/61D3: D0 4C BNE $6221 C2/61D5: A9 40 LDA #$40 C2/61D7: 04 F0 TSB $F0 C2/61D9: D0 46 BNE $6221 C2/61DB: A9 42 LDA #$42 ; battle message $42 "Mastered a new technique!" C2/61DD: 4C D4 5F JMP $5FD4 ; display battle message ; learn blitz C2/61E0: A2 08 00 LDX #$0008 C2/61E3: C9 05 CMP #$05 C2/61E5: D0 3A BNE $6221 ; return if character is not SABIN C2/61E7: 20 22 62 JSR $6222 ; check if blitz was learned C2/61EA: F0 35 BEQ $6221 C2/61EC: 0C 28 1D TSB $1D28 C2/61EF: D0 30 BNE $6221 C2/61F1: A9 80 LDA #$80 C2/61F3: 04 F0 TSB $F0 C2/61F5: D0 2A BNE $6221 C2/61F7: A9 33 LDA #$33 ; battle message $33 "Devised a new Blitz!" C2/61F9: 4C D4 5F JMP $5FD4 ; display battle message ; learn spell C2/61FC: 5A PHY C2/61FD: EB XBA ; A = level C2/61FE: A0 10 00 LDY #$0010 ; 16 spells for each character C2/6201: DF C1 E3 EC CMP $ECE3C1,X ; natural magic data (level) C2/6205: D0 14 BNE $621B C2/6207: 48 PHA C2/6208: 5A PHY C2/6209: 7B TDC C2/620A: BF C0 E3 EC LDA $ECE3C0,X ; natural magic data (spell) C2/620E: A8 TAY C2/620F: B1 F4 LDA ($F4),Y C2/6211: C9 FF CMP #$FF C2/6213: F0 04 BEQ $6219 ; branch if spell is already known C2/6215: A9 80 LDA #$80 C2/6217: 91 F4 STA ($F4),Y ; learn spell C2/6219: 7A PLY C2/621A: 68 PLA C2/621B: E8 INX ; next spell C2/621C: E8 INX C2/621D: 88 DEY C2/621E: D0 E1 BNE $6201 C2/6220: 7A PLY C2/6221: 60 RTS ; [ Check if Blitz/SwdTech was Learned ] ; B = new level ; A = bitmask of learned blitz (out) LearnSub2: C2/6222: A9 01 LDA #$01 C2/6224: 85 EE STA $EE C2/6226: EB XBA C2/6227: DF 90 F4 E6 CMP $E6F490,X ; blitz/swdtech learn data (level) C2/622B: F0 05 BEQ $6232 C2/622D: E8 INX C2/622E: 06 EE ASL $EE C2/6230: 90 F5 BCC $6227 C2/6232: A5 EE LDA $EE C2/6234: 60 RTS ; [ Add Experience ] ; X = pointer to character data (+$1600) addExpSub: C2/6235: 08 PHP C2/6236: C2 21 REP #$21 C2/6238: AD 35 2F LDA $2F35 ; experience gained (low word) C2/623B: 7D 11 16 ADC $1611,X ; add to experience C2/623E: 85 F6 STA $F6 C2/6240: E2 20 SEP #$20 C2/6242: AD 37 2F LDA $2F37 ; experience gained (high byte) C2/6245: 7D 13 16 ADC $1613,X ; add to experience C2/6248: 85 F8 STA $F8 C2/624A: DA PHX C2/624B: A2 02 00 LDX #$0002 C2/624E: BF 76 62 C2 LDA $C26276,X ; compare to max experience (start at third digit) C2/6252: D5 F6 CMP $F6,X C2/6254: F0 0E BEQ $6264 ; branch if equal to max experience C2/6256: B0 0F BCS $6267 ; branch if less than max experience C2/6258: A2 02 00 LDX #$0002 C2/625B: BF 76 62 C2 LDA $C26276,X ; max experience C2/625F: 95 F6 STA $F6,X C2/6261: CA DEX ; check next digit C2/6262: 10 F7 BPL $625B C2/6264: CA DEX C2/6265: 10 E7 BPL $624E C2/6267: FA PLX C2/6268: A5 F8 LDA $F8 C2/626A: 9D 13 16 STA $1613,X ; set new experience (3 bytes) C2/626D: C2 20 REP #$20 C2/626F: A5 F6 LDA $F6 C2/6271: 9D 11 16 STA $1611,X C2/6274: 28 PLP C2/6275: 60 RTS ; max experience (15,000,000) tableMaxExp: C2/6276: .DL $E4E1C0 ; [ Add Item to Inventory ] writeItem: C2/6279: A9 05 LDA #$05 C2/627B: 20 11 64 JSR $6411 ; do battle graphics command $05 (add item obtained in battle) C2/627E: A9 0A LDA #$0A C2/6280: 4C 11 64 JMP $6411 ; do battle graphics command $0A (update inventory with obtained items) ; [ Calculate Pointer to Character's Spells ] ; +$F4 = pointer to spells known (out) setSramMagic: C2/6283: 08 PHP C2/6284: EB XBA C2/6285: A9 36 LDA #$36 C2/6287: 20 81 47 JSR $4781 ; multiply A * B C2/628A: C2 21 REP #$21 C2/628C: 69 6E 1A ADC #$1A6E C2/628F: 85 F4 STA $F4 C2/6291: 28 PLP C2/6292: 60 RTS ; [ Calculate Pointer to Esper Data ] ; A = esper index setPickGenjyu: C2/6293: EB XBA C2/6294: A9 0B LDA #$0B C2/6296: 20 81 47 JSR $4781 ; multiply A * B C2/6299: AA TAX C2/629A: 60 RTS ; --------------------------------------[ Battle: Battle Scripts ]-------------------------------------- ; [ Add Battle Script Command to Queue ] _WriteAnima3_mem_16: C2/629B: 8D 28 3A STA $3A28 _WriteAnima2: C2/629E: 48 PHA C2/629F: DA PHX C2/62A0: 08 PHP C2/62A1: C2 20 REP #$20 C2/62A3: E2 10 SEP #$10 C2/62A5: AE 72 3A LDX $3A72 C2/62A8: AD 28 3A LDA $3A28 C2/62AB: 9D 6E 2D STA $2D6E,X C2/62AE: AD 2A 3A LDA $3A2A C2/62B1: 9D 70 2D STA $2D70,X C2/62B4: E8 INX ; increment battle script command queue pointer C2/62B5: E8 INX C2/62B6: E8 INX C2/62B7: E8 INX C2/62B8: 8E 72 3A STX $3A72 C2/62BB: 28 PLP C2/62BC: FA PLX C2/62BD: 68 PLA C2/62BE: 60 RTS ; [ Add Battle Script Command to Queue (8-bit access) ] _WriteAnima3_mem_8: _WriteAnima4: C2/62BF: 08 PHP C2/62C0: C2 20 REP #$20 C2/62C2: 20 9B 62 JSR $629B ; add battle script command to queue C2/62C5: 28 PLP C2/62C6: 60 RTS ; [ Add Obtained Items to Inventory ] _WriteInHand: C2/62C7: A2 06 LDX #$06 C2/62C9: BD 18 30 LDA $3018,X ; character mask C2/62CC: 1C 8C 3A TRB $3A8C ; clear "character obtained an item" flag C2/62CF: F0 19 BEQ $62EA ; skip if character didn't obtain an item C2/62D1: BD F4 32 LDA $32F4,X ; item obtained C2/62D4: C9 FF CMP #$FF C2/62D6: F0 12 BEQ $62EA ; skip if empty C2/62D8: 20 DC 54 JSR $54DC ; load item data C2/62DB: A9 01 LDA #$01 C2/62DD: 8D 75 2E STA $2E75 ; item quantity = 1 C2/62E0: A9 05 LDA #$05 C2/62E2: 20 11 64 JSR $6411 ; do battle graphics command $05 (add item obtained in battle) C2/62E5: A9 FF LDA #$FF C2/62E7: 9D F4 32 STA $32F4,X ; clear item obtained C2/62EA: CA DEX ; next character C2/62EB: CA DEX C2/62EC: 10 DB BPL $62C9 C2/62EE: 60 RTS ; [ Apply and Display Damage ] _WriteDamage: C2/62EF: DA PHX C2/62F0: 5A PHY C2/62F1: 64 F0 STZ $F0 C2/62F3: 64 F2 STZ $F2 C2/62F5: A0 12 LDY #$12 C2/62F7: B9 D0 33 LDA $33D0,Y C2/62FA: D9 E4 33 CMP $33E4,Y C2/62FD: D0 03 BNE $6302 C2/62FF: 1A INC C2/6300: F0 43 BEQ $6345 C2/6302: B9 18 30 LDA $3018,Y C2/6305: 1C 5A 3A TRB $3A5A C2/6308: 20 F5 12 JSR $12F5 ; update hp/mp after damage C2/630B: CC 82 3A CPY $3A82 C2/630E: D0 13 BNE $6323 C2/6310: B9 D0 33 LDA $33D0,Y C2/6313: 1A INC C2/6314: F0 0D BEQ $6323 C2/6316: 38 SEC C2/6317: AD 36 3A LDA $3A36 C2/631A: F9 D0 33 SBC $33D0,Y C2/631D: B0 01 BCS $6320 C2/631F: 7B TDC C2/6320: 8D 36 3A STA $3A36 C2/6323: B9 E4 33 LDA $33E4,Y C2/6326: 1A INC C2/6327: F0 1C BEQ $6345 C2/6329: 3A DEC C2/632A: 09 00 80 ORA #$8000 C2/632D: 99 E4 33 STA $33E4,Y C2/6330: E6 F2 INC $F2 C2/6332: B9 D0 33 LDA $33D0,Y C2/6335: 1A INC C2/6336: D0 0D BNE $6345 C2/6338: C6 F2 DEC $F2 C2/633A: B9 E4 33 LDA $33E4,Y C2/633D: 99 D0 33 STA $33D0,Y C2/6340: 7B TDC C2/6341: 3A DEC C2/6342: 99 E4 33 STA $33E4,Y C2/6345: B9 18 30 LDA $3018,Y C2/6348: 2C 5A 3A BIT $3A5A C2/634B: F0 06 BEQ $6353 C2/634D: A9 00 40 LDA #$4000 C2/6350: 99 D0 33 STA $33D0,Y C2/6353: B9 D0 33 LDA $33D0,Y ; damage taken C2/6356: 1A INC C2/6357: F0 02 BEQ $635B C2/6359: E6 F0 INC $F0 C2/635B: 88 DEY C2/635C: 88 DEY C2/635D: 10 98 BPL $62F7 C2/635F: A4 F0 LDY $F0 C2/6361: C0 05 CPY #$05 C2/6363: 20 98 63 JSR $6398 ; display damage numerals (less than 5 targets) C2/6366: 20 B4 63 JSR $63B4 ; display damage numerals (5 or more targets) C2/6369: A5 F2 LDA $F2 C2/636B: F0 1A BEQ $6387 C2/636D: A2 12 LDX #$12 C2/636F: A0 00 LDY #$00 C2/6371: BD E4 33 LDA $33E4,X ; coy damage healed to damage taken C2/6374: 9D D0 33 STA $33D0,X C2/6377: 1A INC C2/6378: F0 01 BEQ $637B C2/637A: C8 INY C2/637B: CA DEX C2/637C: CA DEX C2/637D: 10 F2 BPL $6371 C2/637F: C0 05 CPY #$05 C2/6381: 20 98 63 JSR $6398 ; display damage numerals (less than 5 targets) C2/6384: 20 B4 63 JSR $63B4 ; display damage numerals (5 or more targets) C2/6387: 7B TDC C2/6388: 3A DEC C2/6389: A2 12 LDX #$12 C2/638B: 9D E4 33 STA $33E4,X ; invalidate all damage C2/638E: 9D D0 33 STA $33D0,X C2/6391: CA DEX C2/6392: CA DEX C2/6393: 10 F6 BPL $638B C2/6395: 7A PLY C2/6396: FA PLX C2/6397: 60 RTS ; [ Display Damage Numerals (less than 5 targets) ] _method1: C2/6398: B0 19 BCS $63B3 C2/639A: A2 12 LDX #$12 C2/639C: BD D0 33 LDA $33D0,X C2/639F: 1A INC C2/63A0: F0 0D BEQ $63AE ; branch if target didn't take damage C2/63A2: 3A DEC C2/63A3: 8D 2A 3A STA $3A2A C2/63A6: 8A TXA C2/63A7: 4A LSR C2/63A8: EB XBA C2/63A9: 09 0B 00 ORA #$000B ; battle script command $0B (single damage numerals) C2/63AB: 20 9B 62 JSR $629B ; add battle script command to queue C2/63AE: CA DEX C2/63AF: CA DEX C2/63B1: 10 E9 BPL $639C C2/63B3: 60 RTS ; [ Display Damage Numerals (5 or more targets) ] _method2: C2/63B4: 90 24 BCC $63DA C2/63B6: 08 PHP C2/63B7: E2 20 SEP #$20 C2/63B9: A9 03 LDA #$03 ; battle script command $03 (multiple damage numerals) C2/63BB: 20 9B 62 JSR $629B ; add battle script command to queue C2/63BE: AD 34 3A LDA $3A34 ; number of targets C2/63C1: EE 34 3A INC $3A34 C2/63C4: EB XBA C2/63C5: A9 14 LDA #$14 C2/63C7: 20 81 47 JSR $4781 ; multiply A * B C2/63CA: C2 31 REP #$31 C2/63CC: 69 CE 2B ADC #$2BCE C2/63CF: A8 TAY C2/63D0: A2 D0 33 LDX #$33D0 C2/63D3: A9 13 00 LDA #$0013 C2/63D6: 54 7E 7E MVN $7E,$7E ; copy damage variables to graphics buffer C2/63D9: 28 PLP C2/63DA: 60 RTS ; [ Copy Battle Script Data to Buffer ] _WriteResult: C2/63DB: DA PHX C2/63DC: 5A PHY C2/63DD: 08 PHP C2/63DE: E2 20 SEP #$20 C2/63E0: 7B TDC C2/63E1: AD 32 3A LDA $3A32 C2/63E4: 48 PHA C2/63E5: C2 31 REP #$31 C2/63E7: 69 6E 2C ADC #$2C6E C2/63EA: A8 TAY C2/63EB: A2 A0 00 LDX #$00A0 C2/63EE: A9 0F 00 LDA #$000F C2/63F1: 54 7E 7E MVN $7E,$7E C2/63F4: E2 30 SEP #$30 C2/63F6: 68 PLA C2/63F7: 69 10 ADC #$10 C2/63F9: 8D 32 3A STA $3A32 C2/63FC: 28 PLP C2/63FD: 7A PLY C2/63FE: FA PLX C2/63FF: 60 RTS ; [ Clear Battle Script Data Buffer ] _InitResult: C2/6400: DA PHX C2/6401: 08 PHP C2/6402: C2 20 REP #$20 C2/6404: A2 06 LDX #$06 C2/6406: 74 A0 STZ $A0,X C2/6408: 74 A8 STZ $A8,X C2/640A: CA DEX C2/640B: CA DEX C2/640C: 10 F8 BPL $6406 C2/640E: 28 PLP C2/640F: FA PLX C2/6410: 60 RTS ; [ Do Battle Graphics Command ] _Yoshii: C2/6411: DA PHX C2/6412: 5A PHY C2/6413: 08 PHP C2/6414: E2 20 SEP #$20 C2/6416: C2 11 REP #$11 C2/6418: 48 PHA C2/6419: 7B TDC C2/641A: 68 PLA C2/641B: C9 02 CMP #$02 C2/641D: D0 06 BNE $6425 ; branch if command is not $02 (open battle menu) C2/641F: A5 B1 LDA $B1 C2/6421: 30 06 BMI $6429 ; return if battle menu is disabled C2/6423: A9 02 LDA #$02 C2/6425: 22 00 00 C1 JSL $C10000 ; battle graphics C2/6429: 28 PLP C2/642A: 7A PLY C2/642B: FA PLX C2/642C: 60 RTS ; [ Command $2B: Misc. Monster Animations (AI Command $FA) ] _Yoshii2: C2/642D: C2 20 REP #$20 C2/642F: A5 B8 LDA $B8 C2/6431: 8D 2A 3A STA $3A2A C2/6434: E2 20 SEP #$20 C2/6436: A5 B6 LDA $B6 C2/6438: EB XBA C2/6439: A9 14 LDA #$14 C2/643B: 4C BF 62 JMP $62BF ; add battle script command to queue ; [ Defeat All Monsters Immediately (unused) ] ; debug C2/643E: C2 20 REP #$20 C2/6440: AD 55 1D LDA $1D55 ; font color C2/6443: C9 DE 7B CMP #$7BDE C2/6446: E2 20 SEP #$20 C2/6448: D0 1E BNE $6468 ; branch if not (30,30,30) C2/644A: AF 19 42 00 LDA $004219 ; controller 2 C2/644E: C9 28 CMP #$28 C2/6450: D0 16 BNE $6468 ; branch unless select and up are pressed on controller 2 C2/6452: A9 02 LDA #$02 C2/6454: 0C 96 3A TSB $3A96 ; make sure it's been pressed for more than one frame ??? C2/6457: D0 0F BNE $6468 C2/6459: A9 FF LDA #$FF ; affect all monsters C2/645B: 85 B9 STA $B9 C2/645D: A9 05 LDA #$05 ; hide monsters and set wound status C2/645F: 85 B8 STA $B8 C2/6461: A2 00 LDX #$00 ; enter/exit immediately C2/6463: A9 24 LDA #$24 ; command $24 (monster entrance/exit) C2/6465: 20 91 4E JSR $4E91 ; create immediate action C2/6468: 60 RTS ; ---------------------------------------[ Cinematic: Cutscenes ]--------------------------------------- C2/6800: 4C 13 68 JMP $6813 ; magitek march C2/6803: 4C 0C 68 JMP $680C ; title screen C2/6806: 4C 1A 68 JMP $681A ; floating island C2/6809: 4C 21 68 JMP $6821 ; world of ruin ff6title: C2/680C: 20 28 68 JSR $6828 ; decompress cutscene code C2/680F: 5C 00 50 7E JML $7E5000 ; title screen ff6open: C2/6813: 20 28 68 JSR $6828 ; decompress cutscene code C2/6816: 5C 03 50 7E JML $7E5003 ; magitek march ff6cont: C2/681A: 20 28 68 JSR $6828 ; decompress cutscene code C2/681D: 5C 06 50 7E JML $7E5006 ; floating island ff6earth: C2/6821: 20 28 68 JSR $6828 ; decompress cutscene code C2/6824: 5C 09 50 7E JML $7E5009 ; world of ruin ; [ Decompress Cutscene Code ] C2/6828: 08 PHP C2/6829: C2 30 REP #$30 C2/682B: 48 PHA C2/682C: DA PHX C2/682D: 5A PHY C2/682E: 8B PHB C2/682F: 0B PHD C2/6830: C2 10 REP #$10 C2/6832: E2 20 SEP #$20 C2/6834: A9 00 LDA #$00 C2/6836: 48 PHA C2/6837: AB PLB C2/6838: A2 00 00 LDX #$0000 C2/683B: DA PHX C2/683C: 2B PLD C2/683D: A2 00 00 LDX #$0000 C2/6840: 86 00 STX $00 C2/6842: A9 7E LDA #$7E C2/6844: 8D 83 21 STA $2183 C2/6847: A0 6C 68 LDY #$686C ; decompression source = $C2686C C2/684A: 84 F3 STY $F3 C2/684C: A9 C2 LDA #$C2 C2/684E: 85 F5 STA $F5 C2/6850: A0 00 50 LDY #$5000 ; decompression destination = $7E5000 C2/6853: 84 F6 STY $F6 C2/6855: A9 7E LDA #$7E C2/6857: 85 F8 STA $F8 C2/6859: 8B PHB C2/685A: A9 7E LDA #$7E C2/685C: 48 PHA C2/685D: AB PLB C2/685E: 22 6D FF C2 JSL $C2FF6D ; decompress C2/6862: AB PLB C2/6863: C2 30 REP #$30 C2/6865: 2B PLD C2/6866: AB PLB C2/6867: 7A PLY C2/6868: FA PLX C2/6869: 68 PLA C2/686A: 28 PLP C2/686B: 60 RTS ; compressed cutscene code 7E/5000: 4C 0C 50 JMP $500C ; title screen 7E/5003: 4C F3 57 JMP $57F3 ; magitek march 7E/5006: 4C C4 69 JMP $69C4 ; floating island 7E/5009: 4C F2 6C JMP $6CF2 ; world of ruin ; [ Title Screen ] title_main: 7E/500C: 08 PHP 7E/500D: C2 30 REP #$30 7E/500F: 48 PHA 7E/5010: DA PHX 7E/5011: 5A PHY 7E/5012: 8B PHB 7E/5013: 0B PHD 7E/5014: 20 2F 50 JSR $502F ; cutscene init 7E/5017: 20 7F 50 JSR $507F ; title screen init 7E/501A: 20 F7 50 JSR $50F7 ; splash screen main loop 7E/501D: 20 A8 50 JSR $50A8 ; title screen main loop 7E/5020: 20 43 50 JSR $5043 ; stop music 7E/5023: 20 4E 50 JSR $504E ; disable interrupts 7E/5026: C2 30 REP #$30 7E/5028: 2B PLD 7E/5029: AB PLB 7E/502A: 7A PLY 7E/502B: FA PLX 7E/502C: 68 PLA 7E/502D: 28 PLP 7E/502E: 6B RTL ; [ Cutscene Init ] init_init: 7E/502F: E2 20 SEP #$20 7E/5031: A9 7E LDA #$7E ; set data bank 7E/5033: 48 PHA 7E/5034: AB PLB 7E/5035: A2 00 00 LDX #$0000 ; set direct page 7E/5038: DA PHX 7E/5039: 2B PLD 7E/503A: A2 00 00 LDX #$0000 ; set $00 7E/503D: 86 00 STX $00 7E/503F: 20 62 50 JSR $5062 ; set up interrupt jump code 7E/5042: 60 RTS ; [ Stop Music ] sound_off: 7E/5043: A9 F0 LDA #$F0 7E/5045: 8F 00 13 00 STA $001300 7E/5049: 22 04 00 C5 JSL $C50004 ; spc command 7E/504D: 60 RTS ; [ Disable Interrupts ] out_out: 7E/504E: A9 8F LDA #$8F 7E/5050: 8F 00 21 00 STA $002100 7E/5054: 7B TDC 7E/5055: 8F 00 42 00 STA $004200 7E/5059: 8F 0B 42 00 STA $00420B 7E/505D: 8F 0C 42 00 STA $00420C 7E/5061: 60 RTS ; [ Set Up Interrupt Jump Code ] set_vector_local: 7E/5062: A9 5C LDA #$5C 7E/5064: 8D 00 15 STA $1500 7E/5067: 8D 04 15 STA $1504 7E/506A: A2 33 72 LDX #$7233 7E/506D: 8E 01 15 STX $1501 7E/5070: A2 64 72 LDX #$7264 7E/5073: 8E 05 15 STX $1505 7E/5076: A9 7E LDA #$7E 7E/5078: 8D 03 15 STA $1503 7E/507B: 8D 07 15 STA $1507 7E/507E: 60 RTS ; [ Title Screen Init ] title_init: 7E/507F: 20 11 77 JSR $7711 7E/5082: 7B TDC 7E/5083: 20 93 50 JSR $5093 ; play opening theme 1 7E/5086: 20 15 78 JSR $7815 7E/5089: 20 4F 78 JSR $784F ; clear vram 7E/508C: 20 85 74 JSR $7485 ; reset threads 7E/508F: 20 FA 78 JSR $78FA ; load title/intro graphics 7E/5092: 60 RTS ; [ Play Opening Theme 1 ] ; A = master volume 7E/5093: 8F 02 13 00 STA $001302 7E/5097: A9 10 LDA #$10 7E/5099: 8F 00 13 00 STA $001300 7E/509D: A9 02 LDA #$02 ; song $02 (opening theme 1) 7E/509F: 8F 01 13 00 STA $001301 7E/50A3: 22 04 00 C5 JSL $C50004 ; spc command 7E/50A7: 60 RTS ; [ Title Screen Main Loop ] title_exec: 7E/50A8: 7B TDC 7E/50A9: A5 19 LDA $19 7E/50AB: 30 18 BMI $50C5 7E/50AD: 0A ASL 7E/50AE: AA TAX 7E/50AF: FC DF 50 JSR ($50DF,X) 7E/50B2: A5 06 LDA $06 7E/50B4: 89 80 BIT #$80 7E/50B6: D0 08 BNE $50C0 7E/50B8: 20 0F 75 JSR $750F 7E/50BB: 20 FD 71 JSR $71FD 7E/50BE: 80 E8 BRA $50A8 7E/50C0: A9 FF LDA #$FF 7E/50C2: 8D 00 02 STA $0200 7E/50C5: A0 0F 00 LDY #$000F 7E/50C8: 84 15 STY $15 7E/50CA: A9 00 LDA #$00 7E/50CC: A0 A0 55 LDY #$55A0 7E/50CF: 20 DC 74 JSR $74DC 7E/50D2: A4 15 LDY $15 7E/50D4: F0 08 BEQ $50DE 7E/50D6: 20 0F 75 JSR $750F 7E/50D9: 20 FD 71 JSR $71FD 7E/50DC: 80 F4 BRA $50D2 7E/50DE: 60 RTS ; title screen jump table 7E/50DF: .DW $51AE, $5280, $5297, $52A6, $52E0, $52EC, $533F, $5377 7E/50EF: .DW $538A, $539C, $53B5, $53BC ; [ Splash Screen Main Loop ] 7E/50F7: 7B TDC 7E/50F8: A5 19 LDA $19 7E/50FA: 30 0D BMI $5109 7E/50FC: 0A ASL 7E/50FD: AA TAX 7E/50FE: FC 31 51 JSR ($5131,X) 7E/5101: 20 0F 75 JSR $750F 7E/5104: 20 FD 71 JSR $71FD 7E/5107: 80 EE BRA $50F7 7E/5109: A0 0F 00 LDY #$000F 7E/510C: 84 15 STY $15 7E/510E: A9 00 LDA #$00 7E/5110: A0 A0 55 LDY #$55A0 7E/5113: 20 DC 74 JSR $74DC 7E/5116: A4 15 LDY $15 7E/5118: F0 08 BEQ $5122 7E/511A: 20 0F 75 JSR $750F 7E/511D: 20 FD 71 JSR $71FD 7E/5120: 80 F4 BRA $5116 7E/5122: 7B TDC 7E/5123: A8 TAY 7E/5124: 85 19 STA $19 7E/5126: 84 25 STY $25 7E/5128: 84 27 STY $27 7E/512A: 20 85 74 JSR $7485 7E/512D: 20 4E 50 JSR $504E 7E/5130: 60 RTS ; splash screen jump table 7E/5131: .DW $5155, .DW $51A5 ; splash screen color palettes 7E/5135: .DW $0000, $1063, $77BD, $0000, $7FFF, $7FFF, $7FFF, $7FFF 7E/5145: .DW $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF ; [ Splash Screen $00: Init ] 7E/5155: 20 06 53 JSR $5306 7E/5158: A2 00 30 LDX #$3000 7E/515B: A0 65 74 LDY #$7465 7E/515E: 20 24 73 JSR $7324 7E/5161: A2 20 30 LDX #$3020 7E/5164: A0 65 74 LDY #$7465 7E/5167: 20 24 73 JSR $7324 7E/516A: A2 20 31 LDX #$3120 7E/516D: A0 65 74 LDY #$7465 7E/5170: 20 24 73 JSR $7324 7E/5173: A2 20 31 LDX #$3120 7E/5176: A0 43 7B LDY #$7B43 7E/5179: A9 01 LDA #$01 7E/517B: 20 3A 73 JSR $733A 7E/517E: A2 00 30 LDX #$3000 7E/5181: A0 45 74 LDY #$7445 7E/5184: A9 01 LDA #$01 7E/5186: 20 3A 73 JSR $733A 7E/5189: A2 20 30 LDX #$3020 7E/518C: A0 35 51 LDY #$5135 7E/518F: A9 01 LDA #$01 7E/5191: 20 3A 73 JSR $733A 7E/5194: A0 00 01 LDY #$0100 7E/5197: 84 25 STY $25 7E/5199: A0 2C 01 LDY #$012C ; wait 300 frames 7E/519C: 84 15 STY $15 7E/519E: E6 19 INC $19 7E/51A0: A9 0F LDA #$0F 7E/51A2: 85 32 STA $32 7E/51A4: 60 RTS ; [ Splash Screen $01: Wait ] 7E/51A5: A4 15 LDY $15 7E/51A7: D0 04 BNE $51AD 7E/51A9: A9 FF LDA #$FF 7E/51AB: 85 19 STA $19 7E/51AD: 60 RTS ; [ Title Screen $00: Init ] 7E/51AE: A2 20 31 LDX #$3120 7E/51B1: A0 63 7B LDY #$7B63 ; dark palette 7E/51B4: 20 24 73 JSR $7324 ; load color palette 7E/51B7: A2 40 31 LDX #$3140 7E/51BA: A0 43 7B LDY #$7B43 ; intro palette 0 7E/51BD: 20 24 73 JSR $7324 ; load color palette 7E/51C0: A2 00 30 LDX #$3000 7E/51C3: A0 65 74 LDY #$7465 ; black palette 7E/51C6: 20 24 73 JSR $7324 ; load color palette 7E/51C9: A2 20 30 LDX #$3020 7E/51CC: A0 C3 7B LDY #$7BC3 ; intro palette 4 7E/51CF: 20 24 73 JSR $7324 ; load color palette 7E/51D2: A2 C0 30 LDX #$30C0 7E/51D5: A0 65 74 LDY #$7465 ; black palette 7E/51D8: 20 24 73 JSR $7324 ; load color palette 7E/51DB: A2 40 30 LDX #$3040 7E/51DE: A0 65 74 LDY #$7465 ; black palette 7E/51E1: 20 24 73 JSR $7324 ; load color palette 7E/51E4: A2 60 30 LDX #$3060 7E/51E7: A0 65 74 LDY #$7465 ; black palette 7E/51EA: 20 24 73 JSR $7324 ; load color palette 7E/51ED: A2 E0 30 LDX #$30E0 7E/51F0: A0 65 74 LDY #$7465 ; black palette 7E/51F3: 20 24 73 JSR $7324 ; load color palette 7E/51F6: A2 A0 30 LDX #$30A0 7E/51F9: A0 65 74 LDY #$7465 ; black palette 7E/51FC: 20 24 73 JSR $7324 ; load color palette 7E/51FF: A2 C0 30 LDX #$30C0 7E/5202: A0 03 7C LDY #$7C03 ; intro palette 6 7E/5205: A9 04 LDA #$04 7E/5207: 20 3A 73 JSR $733A ; create color palette thread 7E/520A: A2 40 30 LDX #$3040 7E/520D: A0 23 7C LDY #$7C23 ; intro palette 7 7E/5210: A9 04 LDA #$04 7E/5212: 20 3A 73 JSR $733A ; create color palette thread 7E/5215: A2 60 30 LDX #$3060 7E/5218: A0 23 7C LDY #$7C23 ; intro palette 7 7E/521B: A9 04 LDA #$04 7E/521D: 20 3A 73 JSR $733A ; create color palette thread 7E/5220: A2 E0 30 LDX #$30E0 7E/5223: A0 43 7C LDY #$7C43 ; intro palette 8 (narshe w/ lights on) 7E/5226: A9 04 LDA #$04 7E/5228: 20 3A 73 JSR $733A ; create color palette thread 7E/522B: A2 A0 30 LDX #$30A0 7E/522E: A0 E3 7B LDY #$7BE3 ; intro palette 5 7E/5231: A9 04 LDA #$04 7E/5233: 20 3A 73 JSR $733A ; create color palette thread 7E/5236: A9 01 LDA #$01 7E/5238: A0 39 55 LDY #$5539 7E/523B: 20 DC 74 JSR $74DC 7E/523E: A0 3C 00 LDY #$003C 7E/5241: 84 15 STY $15 7E/5243: E6 19 INC $19 7E/5245: A9 0F LDA #$0F 7E/5247: 85 32 STA $32 7E/5249: A9 01 LDA #$01 7E/524B: A0 C8 55 LDY #$55C8 7E/524E: 20 DC 74 JSR $74DC 7E/5251: C2 20 REP #$20 7E/5253: A9 40 30 LDA #$3040 7E/5256: 9D 01 37 STA $3701,X 7E/5259: E2 20 SEP #$20 7E/525B: A9 01 LDA #$01 7E/525D: A0 C8 55 LDY #$55C8 7E/5260: 20 DC 74 JSR $74DC 7E/5263: C2 20 REP #$20 7E/5265: A9 60 30 LDA #$3060 7E/5268: 9D 01 37 STA $3701,X 7E/526B: E2 20 SEP #$20 7E/526D: A9 01 LDA #$01 7E/526F: A0 C8 55 LDY #$55C8 7E/5272: 20 DC 74 JSR $74DC 7E/5275: C2 20 REP #$20 7E/5277: A9 C0 30 LDA #$30C0 7E/527A: 9D 01 37 STA $3701,X 7E/527D: E2 20 SEP #$20 7E/527F: 60 RTS 7E/5280: A4 15 LDY $15 7E/5282: D0 12 BNE $5296 7E/5284: E6 19 INC $19 7E/5286: A0 43 04 LDY #$0443 7E/5289: 84 15 STY $15 7E/528B: A9 FF LDA #$FF 7E/528D: 8F 05 13 00 STA $001305 7E/5291: A9 FF LDA #$FF 7E/5293: 20 93 50 JSR $5093 7E/5296: 60 RTS 7E/5297: A4 15 LDY $15 7E/5299: D0 0A BNE $52A5 7E/529B: 20 97 78 JSR $7897 7E/529E: A0 1E 00 LDY #$001E 7E/52A1: 84 15 STY $15 7E/52A3: E6 19 INC $19 7E/52A5: 60 RTS 7E/52A6: A4 15 LDY $15 7E/52A8: D0 35 BNE $52DF 7E/52AA: A9 00 LDA #$00 7E/52AC: A0 C5 53 LDY #$53C5 7E/52AF: 20 DC 74 JSR $74DC 7E/52B2: A9 00 LDA #$00 7E/52B4: A0 31 54 LDY #$5431 7E/52B7: 20 DC 74 JSR $74DC 7E/52BA: A9 00 LDA #$00 7E/52BC: A0 AF 54 LDY #$54AF 7E/52BF: 20 DC 74 JSR $74DC 7E/52C2: A2 00 30 LDX #$3000 7E/52C5: A0 83 7B LDY #$7B83 ; flames palette 7E/52C8: A9 02 LDA #$02 7E/52CA: 20 3A 73 JSR $733A 7E/52CD: A2 20 30 LDX #$3020 7E/52D0: A0 A3 7B LDY #$7BA3 7E/52D3: A9 01 LDA #$01 7E/52D5: 20 3A 73 JSR $733A 7E/52D8: A0 4A 01 LDY #$014A 7E/52DB: 84 15 STY $15 7E/52DD: E6 19 INC $19 7E/52DF: 60 RTS 7E/52E0: A4 15 LDY $15 7E/52E2: D0 07 BNE $52EB 7E/52E4: E6 19 INC $19 7E/52E6: A0 F0 00 LDY #$00F0 7E/52E9: 84 15 STY $15 7E/52EB: 60 RTS 7E/52EC: A4 15 LDY $15 7E/52EE: D0 15 BNE $5305 7E/52F0: E6 19 INC $19 7E/52F2: A0 C0 03 LDY #$03C0 7E/52F5: 84 15 STY $15 7E/52F7: 20 06 53 JSR $5306 7E/52FA: A2 20 31 LDX #$3120 7E/52FD: A0 43 7B LDY #$7B43 ; intro/splash color palettes 7E/5300: A9 04 LDA #$04 7E/5302: 20 3A 73 JSR $733A 7E/5305: 60 RTS 7E/5306: A9 00 LDA #$00 7E/5308: A0 DB 76 LDY #$76DB 7E/530B: 20 DC 74 JSR $74DC 7E/530E: C2 20 REP #$20 7E/5310: A9 5C 7A LDA #$7A5C 7E/5313: 9D 00 35 STA $3500,X 7E/5316: E2 20 SEP #$20 7E/5318: A9 40 LDA #$40 7E/531A: 9D 01 33 STA $3301,X 7E/531D: A9 A0 LDA #$A0 7E/531F: 9D 01 34 STA $3401,X 7E/5322: A9 00 LDA #$00 7E/5324: A0 DB 76 LDY #$76DB 7E/5327: 20 DC 74 JSR $74DC 7E/532A: C2 20 REP #$20 7E/532C: A9 5F 7A LDA #$7A5F 7E/532F: 9D 00 35 STA $3500,X 7E/5332: E2 20 SEP #$20 7E/5334: A9 90 LDA #$90 7E/5336: 9D 01 33 STA $3301,X 7E/5339: A9 A0 LDA #$A0 7E/533B: 9D 01 34 STA $3401,X 7E/533E: 60 RTS 7E/533F: A4 15 LDY $15 7E/5341: D0 33 BNE $5376 7E/5343: E6 19 INC $19 7E/5345: A0 00 01 LDY #$0100 7E/5348: 84 15 STY $15 7E/534A: A2 00 31 LDX #$3100 7E/534D: A0 63 7B LDY #$7B63 7E/5350: A9 02 LDA #$02 7E/5352: 20 3A 73 JSR $733A 7E/5355: A2 20 31 LDX #$3120 7E/5358: A0 63 7B LDY #$7B63 7E/535B: A9 04 LDA #$04 7E/535D: 20 3A 73 JSR $733A 7E/5360: A2 00 30 LDX #$3000 7E/5363: A0 63 7B LDY #$7B63 7E/5366: A9 08 LDA #$08 7E/5368: 20 3A 73 JSR $733A 7E/536B: A2 20 30 LDX #$3020 7E/536E: A0 63 7B LDY #$7B63 7E/5371: A9 08 LDA #$08 7E/5373: 20 3A 73 JSR $733A 7E/5376: 60 RTS 7E/5377: A4 15 LDY $15 7E/5379: D0 0E BNE $5389 7E/537B: A9 40 LDA #$40 7E/537D: 04 33 TSB $33 7E/537F: E6 19 INC $19 7E/5381: A0 01 00 LDY #$0001 7E/5384: 84 15 STY $15 7E/5386: 20 BD 5C JSR $5CBD 7E/5389: 60 RTS 7E/538A: A4 15 LDY $15 7E/538C: D0 0D BNE $539B 7E/538E: E6 19 INC $19 7E/5390: 64 31 STZ $31 7E/5392: A9 80 LDA #$80 7E/5394: 85 33 STA $33 7E/5396: A0 A0 03 LDY #$03A0 7E/5399: 84 15 STY $15 7E/539B: 60 RTS 7E/539C: A4 15 LDY $15 7E/539E: D0 08 BNE $53A8 7E/53A0: A0 E0 01 LDY #$01E0 7E/53A3: 84 15 STY $15 7E/53A5: E6 19 INC $19 7E/53A7: 60 RTS 7E/53A8: A5 18 LDA $18 7E/53AA: 29 03 AND #$03 7E/53AC: D0 06 BNE $53B4 7E/53AE: C2 20 REP #$20 7E/53B0: E6 27 INC $27 7E/53B2: E2 20 SEP #$20 7E/53B4: 60 RTS 7E/53B5: A4 15 LDY $15 7E/53B7: D0 02 BNE $53BB 7E/53B9: E6 19 INC $19 7E/53BB: 60 RTS ; [ Title Screen $0B: Terminate ] 7E/53BC: A9 FF LDA #$FF 7E/53BE: 85 19 STA $19 7E/53C0: 7B TDC 7E/53C1: 8D 00 02 STA $0200 7E/53C4: 60 RTS 7E/53C5: AA TAX 7E/53C6: 7C C9 53 JMP ($53C9,X) 7E/53C9: .DW $53CD, $53D5 7E/53CD: A6 1D LDX $1D 7E/53CF: FE 00 3A INC $3A00,X 7E/53D2: 9E 01 37 STZ $3701,X 7E/53D5: A5 33 LDA $33 7E/53D7: 30 56 BMI $542F 7E/53D9: A6 1D LDX $1D 7E/53DB: 7B TDC 7E/53DC: A8 TAY 7E/53DD: 9E 01 38 STZ $3801,X 7E/53E0: A6 1D LDX $1D 7E/53E2: BD 01 37 LDA $3701,X 7E/53E5: 18 CLC 7E/53E6: 7D 01 38 ADC $3801,X 7E/53E9: 20 A5 54 JSR $54A5 7E/53EC: 48 PHA 7E/53ED: AF 12 42 00 LDA $004212 7E/53F1: 29 40 AND #$40 7E/53F3: F0 F8 BEQ $53ED 7E/53F5: A9 08 LDA #$08 7E/53F7: 8F 1B 21 00 STA $00211B 7E/53FB: 7B TDC 7E/53FC: 8F 1B 21 00 STA $00211B 7E/5400: 68 PLA 7E/5401: 8F 1C 21 00 STA $00211C 7E/5405: 8F 1C 21 00 STA $00211C 7E/5409: A6 1D LDX $1D 7E/540B: C2 20 REP #$20 7E/540D: AF 35 21 00 LDA $002135 7E/5411: 99 80 41 STA $4180,Y 7E/5414: E2 20 SEP #$20 7E/5416: A6 1D LDX $1D 7E/5418: BD 01 38 LDA $3801,X 7E/541B: 18 CLC 7E/541C: 69 04 ADC #$04 7E/541E: 9D 01 38 STA $3801,X 7E/5421: C8 INY 7E/5422: C8 INY 7E/5423: C8 INY 7E/5424: C8 INY 7E/5425: C0 C0 00 CPY #$00C0 7E/5428: D0 B6 BNE $53E0 7E/542A: FE 01 37 INC $3701,X 7E/542D: 38 SEC 7E/542E: 60 RTS 7E/542F: 18 CLC 7E/5430: 60 RTS 7E/5431: AA TAX 7E/5432: 7C 35 54 JMP ($5435,X) 7E/5435: .DW $5439, $5441 7E/5439: A6 1D LDX $1D 7E/543B: FE 00 3A INC $3A00,X 7E/543E: 9E 00 39 STZ $3900,X 7E/5441: A5 33 LDA $33 7E/5443: 30 5B BMI $54A0 7E/5445: A6 1D LDX $1D 7E/5447: 7B TDC 7E/5448: A8 TAY 7E/5449: A9 10 LDA #$10 7E/544B: 9D 01 38 STA $3801,X 7E/544E: A6 1D LDX $1D 7E/5450: BD 01 37 LDA $3701,X 7E/5453: 18 CLC 7E/5454: 7D 01 38 ADC $3801,X 7E/5457: 20 A5 54 JSR $54A5 7E/545A: 48 PHA 7E/545B: AF 12 42 00 LDA $004212 7E/545F: 29 40 AND #$40 7E/5461: F0 F8 BEQ $545B 7E/5463: A9 0A LDA #$0A 7E/5465: 8F 1B 21 00 STA $00211B 7E/5469: 7B TDC 7E/546A: 8F 1B 21 00 STA $00211B 7E/546E: 68 PLA 7E/546F: 8F 1C 21 00 STA $00211C 7E/5473: 8F 1C 21 00 STA $00211C 7E/5477: A6 1D LDX $1D 7E/5479: C2 20 REP #$20 7E/547B: AF 35 21 00 LDA $002135 7E/547F: 99 00 45 STA $4500,Y 7E/5482: 99 02 45 STA $4502,Y 7E/5485: E2 20 SEP #$20 7E/5487: A6 1D LDX $1D 7E/5489: BD 01 38 LDA $3801,X 7E/548C: 18 CLC 7E/548D: 69 04 ADC #$04 7E/548F: 9D 01 38 STA $3801,X 7E/5492: C8 INY 7E/5493: C8 INY 7E/5494: C8 INY 7E/5495: C8 INY 7E/5496: C0 C0 00 CPY #$00C0 7E/5499: D0 B3 BNE $544E 7E/549B: FE 01 37 INC $3701,X 7E/549E: 38 SEC 7E/549F: 60 RTS 7E/54A0: 18 CLC 7E/54A1: 60 RTS 7E/54A2: 18 CLC 7E/54A3: 69 40 ADC #$40 7E/54A5: EB XBA 7E/54A6: A5 00 LDA $00 7E/54A8: EB XBA 7E/54A9: AA TAX 7E/54AA: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table 7E/54AE: 60 RTS 7E/54AF: AA TAX 7E/54B0: 7C B3 54 JMP ($54B3,X) 7E/54B3: .DW $54B7, $54C1 7E/54B7: A6 1D LDX $1D 7E/54B9: FE 00 3A INC $3A00,X 7E/54BC: A9 01 LDA #$01 7E/54BE: 9D 00 39 STA $3900,X 7E/54C1: A5 18 LDA $18 7E/54C3: 29 01 AND #$01 7E/54C5: F0 0F BEQ $54D6 7E/54C7: A6 1D LDX $1D 7E/54C9: BD 00 39 LDA $3900,X 7E/54CC: C9 40 CMP #$40 7E/54CE: F0 08 BEQ $54D8 7E/54D0: 20 DA 54 JSR $54DA 7E/54D3: FE 00 39 INC $3900,X 7E/54D6: 38 SEC 7E/54D7: 60 RTS 7E/54D8: 18 CLC 7E/54D9: 60 RTS 7E/54DA: A9 40 LDA #$40 7E/54DC: 8F 05 42 00 STA $004205 7E/54E0: 7B TDC 7E/54E1: 8F 04 42 00 STA $004204 7E/54E5: BD 00 39 LDA $3900,X 7E/54E8: 8F 06 42 00 STA $004206 7E/54EC: EA NOP 7E/54ED: EA NOP 7E/54EE: EA NOP 7E/54EF: EA NOP 7E/54F0: EA NOP 7E/54F1: 64 F2 STZ $F2 7E/54F3: A0 FC 00 LDY #$00FC 7E/54F6: 64 E2 STZ $E2 7E/54F8: 64 E9 STZ $E9 7E/54FA: 64 EA STZ $EA 7E/54FC: AF 15 42 00 LDA $004215 7E/5500: 85 E8 STA $E8 7E/5502: AF 14 42 00 LDA $004214 7E/5506: 85 E7 STA $E7 7E/5508: BD 00 39 LDA $3900,X 7E/550B: C5 E2 CMP $E2 7E/550D: 90 02 BCC $5511 7E/550F: 80 07 BRA $5518 7E/5511: C2 20 REP #$20 7E/5513: A9 00 01 LDA #$0100 7E/5516: 80 0C BRA $5524 7E/5518: 7B TDC 7E/5519: A5 EA LDA $EA 7E/551B: 38 SEC 7E/551C: E5 E2 SBC $E2 7E/551E: C2 20 REP #$20 7E/5520: 49 FF FF EOR #$FFFF 7E/5523: 1A INC 7E/5524: 99 FA 3D STA $3DFA,Y 7E/5527: A5 E7 LDA $E7 7E/5529: 18 CLC 7E/552A: 65 E9 ADC $E9 7E/552C: 85 E9 STA $E9 7E/552E: E2 20 SEP #$20 7E/5530: E6 E2 INC $E2 7E/5532: 88 DEY 7E/5533: 88 DEY 7E/5534: 88 DEY 7E/5535: 88 DEY 7E/5536: D0 D0 BNE $5508 7E/5538: 60 RTS 7E/5539: AA TAX 7E/553A: 7C 3D 55 JMP ($553D,X) 7E/553D: .DW $5541, $5559 7E/5541: A0 FF FF LDY #$FFFF 7E/5544: 84 10 STY $10 7E/5546: A0 40 00 LDY #$0040 7E/5549: 84 0E STY $0E 7E/554B: A9 7F LDA #$7F 7E/554D: 85 14 STA $14 7E/554F: A0 01 00 LDY #$0001 7E/5552: 84 27 STY $27 7E/5554: A6 1D LDX $1D 7E/5556: FE 00 3A INC $3A00,X 7E/5559: A5 18 LDA $18 7E/555B: 29 03 AND #$03 7E/555D: D0 36 BNE $5595 7E/555F: C2 20 REP #$20 7E/5561: A5 27 LDA $27 7E/5563: C9 1F 01 CMP #$011F 7E/5566: F0 2F BEQ $5597 7E/5568: C9 00 01 CMP #$0100 7E/556B: B0 24 BCS $5591 7E/556D: 29 07 00 AND #$0007 7E/5570: D0 1F BNE $5591 7E/5572: A5 27 LDA $27 7E/5574: 38 SEC 7E/5575: E9 08 00 SBC #$0008 7E/5578: 29 F8 FF AND #$FFF8 7E/557B: 0A ASL 7E/557C: 0A ASL 7E/557D: 0A ASL 7E/557E: 18 CLC 7E/557F: 69 C0 23 ADC #$23C0 7E/5582: 85 12 STA $12 7E/5584: A5 27 LDA $27 7E/5586: 38 SEC 7E/5587: E9 08 00 SBC #$0008 7E/558A: 29 F8 FF AND #$FFF8 7E/558D: 0A ASL 7E/558E: 0A ASL 7E/558F: 85 10 STA $10 7E/5591: E6 27 INC $27 7E/5593: E2 20 SEP #$20 7E/5595: 38 SEC 7E/5596: 60 RTS 7E/5597: E2 20 SEP #$20 7E/5599: A0 FF FF LDY #$FFFF 7E/559C: 84 10 STY $10 7E/559E: 18 CLC 7E/559F: 60 RTS 7E/55A0: AA TAX 7E/55A1: 7C A4 55 JMP ($55A4,X) 7E/55A4: .DW $55A8, $55B2 7E/55A8: A6 1D LDX $1D 7E/55AA: FE 00 3A INC $3A00,X 7E/55AD: A9 0F LDA #$0F 7E/55AF: 9D 01 33 STA $3301,X 7E/55B2: A4 15 LDY $15 7E/55B4: F0 0C BEQ $55C2 7E/55B6: A6 1D LDX $1D 7E/55B8: BD 01 33 LDA $3301,X 7E/55BB: 85 32 STA $32 7E/55BD: DE 01 33 DEC $3301,X 7E/55C0: 38 SEC 7E/55C1: 60 RTS 7E/55C2: A9 80 LDA #$80 7E/55C4: 85 32 STA $32 7E/55C6: 18 CLC 7E/55C7: 60 RTS 7E/55C8: AA TAX 7E/55C9: 7C CC 55 JMP ($55CC,X) 7E/55CC: .DW $55D2, $55EB, $5620 7E/55D2: A6 1D LDX $1D 7E/55D4: FE 00 3A INC $3A00,X 7E/55D7: A9 80 LDA #$80 7E/55D9: 9D 00 36 STA $3600,X 7E/55DC: C2 20 REP #$20 7E/55DE: A9 3E 56 LDA #$563E 7E/55E1: 9D 00 35 STA $3500,X 7E/55E4: E2 20 SEP #$20 7E/55E6: 20 5F 75 JSR $755F 7E/55E9: 38 SEC 7E/55EA: 60 RTS 7E/55EB: A6 1D LDX $1D 7E/55ED: BD 00 36 LDA $3600,X 7E/55F0: F0 17 BEQ $5609 7E/55F2: C9 01 CMP #$01 7E/55F4: F0 07 BEQ $55FD 7E/55F6: A6 1D LDX $1D 7E/55F8: DE 00 36 DEC $3600,X 7E/55FB: 38 SEC 7E/55FC: 60 RTS 7E/55FD: A9 02 LDA #$02 7E/55FF: A0 F9 56 LDY #$56F9 7E/5602: 20 DC 74 JSR $74DC 7E/5605: E6 36 INC $36 7E/5607: 80 ED BRA $55F6 7E/5609: BD 01 3B LDA $3B01,X 7E/560C: C9 FE CMP #$FE 7E/560E: D0 03 BNE $5613 7E/5610: FE 00 3A INC $3A00,X 7E/5613: C2 20 REP #$20 7E/5615: BD 01 37 LDA $3701,X 7E/5618: AA TAX 7E/5619: E2 20 SEP #$20 7E/561B: 20 75 75 JSR $7575 7E/561E: 38 SEC 7E/561F: 60 RTS 7E/5620: 20 30 56 JSR $5630 7E/5623: A6 1D LDX $1D 7E/5625: 9D 00 36 STA $3600,X 7E/5628: A9 01 LDA #$01 7E/562A: 9D 00 3A STA $3A00,X 7E/562D: 4C DC 55 JMP $55DC ; [ generate random number ] rnd_get: 7E/5630: 7B TDC 7E/5631: E6 34 INC $34 7E/5633: A5 18 LDA $18 7E/5635: 18 CLC 7E/5636: 65 34 ADC $34 7E/5638: AA TAX 7E/5639: BF 00 FD C0 LDA $C0FD00,X 7E/563D: 60 RTS 7E/563E: .DW $7C23 \ .DB $01 7E/5641: .DW $5659 \ .DB $02 7E/5644: .DW $56D9 \ .DB $01 7E/5647: .DW $5659 \ .DB $02 7E/564A: .DW $56D9 \ .DB $01 7E/564D: .DW $5679 \ .DB $02 7E/5650: .DW $5699 \ .DB $03 7E/5653: .DW $56B9 \ .DB $04 7E/5656: .DW $56D9 \ .DB $FE 7E/5659: .DW $1063, $66DE, $565B, $45B4, $352E, $3108, $2CE8, $28C7 7E/5669: .DW $24A6, $1CA5, $1884, $1464, $1063, $21BB, $1136, $737F 7E/5679: .DW $0000, $5239, $45D7, $3951, $2CEC, $2CE7, $28C7, $24A6 7E/5689: .DW $2085, $1884, $1484, $1464, $1063, $21BB, $1136, $5A7B 7E/5699: .DW $0000, $3D94, $3553, $2CEE, $24AA, $24A5, $2085, $1C64 7E/56A9: .DW $1464, $1063, $1063, $1063, $1063, $21BB, $1136, $45D6 7E/56B9: .DW $0000, $20AA, $20A7, $1C85, $1843, $1063, $1063, $1063 7E/56C9: .DW $1063, $1063, $1063, $1063, $1063, $21BB, $1136, $24CC 7E/56D9: .DW $0000, $1063, $1063, $1063, $1063, $1063, $1063, $1063 7E/56E9: .DW $1063, $1063, $1063, $1063, $1063, $21BB, $1136, $1063 7E/56F9: AA TAX 7E/56FA: 7C FD 56 JMP ($56FD,X) 7E/56FD: .DW $5701, $5736 7E/5701: A6 1D LDX $1D 7E/5703: FE 00 3A INC $3A00,X 7E/5706: 20 30 56 JSR $5630 7E/5709: 29 03 AND #$03 7E/570B: F0 37 BEQ $5744 7E/570D: 0A ASL 7E/570E: AA TAX 7E/570F: C2 20 REP #$20 7E/5711: BD 46 57 LDA $5746,X 7E/5714: A6 1D LDX $1D 7E/5716: 9D 00 35 STA $3500,X 7E/5719: E2 20 SEP #$20 7E/571B: E2 20 SEP #$20 7E/571D: DA PHX 7E/571E: 20 30 56 JSR $5630 7E/5721: FA PLX 7E/5722: 9D 01 33 STA $3301,X 7E/5725: DA PHX 7E/5726: 20 30 56 JSR $5630 7E/5729: FA PLX 7E/572A: 29 7F AND #$7F 7E/572C: 69 10 ADC #$10 7E/572E: 9D 01 34 STA $3401,X 7E/5731: A6 1D LDX $1D 7E/5733: 20 5F 75 JSR $755F 7E/5736: A6 1D LDX $1D 7E/5738: BD 01 3B LDA $3B01,X 7E/573B: C9 FE CMP #$FE 7E/573D: F0 05 BEQ $5744 7E/573F: 20 8D 75 JSR $758D 7E/5742: 38 SEC 7E/5743: 60 RTS 7E/5744: 18 CLC 7E/5745: 60 RTS 7E/5746: .DW $0000, $574E, $5766, $574E 7E/574E: .DW $577F \ .DB $01 7E/5751: .DW $577E \ .DB $01 7E/5754: .DW $5784 \ .DB $01 7E/5757: .DW $577E \ .DB $01 7E/575A: .DW $5791 \ .DB $01 7E/575D: .DW $577E \ .DB $01 7E/5760: .DW $579E \ .DB $01 7E/5763: .DW $577E \ .DB $FE 7E/5766: .DW $57AB \ .DB $01 7E/5769: .DW $577E \ .DB $01 7E/576C: .DW $57B0 \ .DB $01 7E/576F: .DW $577E \ .DB $01 7E/5772: .DW $57BD \ .DB $01 7E/5775: .DW $577E \ .DB $01 7E/5778: .DW $57CA \ .DB $01 7E/577B: .DW $577E \ .DB $FE 7E/577E: .DB $00 7E/577F: .DB $01 7E/5780: .DB $08, $00 \ .DW $354C 7E/5784: .DB $03 7E/5785: .DB $00, $00 \ .DW $354E 7E/5789: .DB $10, $00 \ .DW $3560 7E/578D: .DB $08, $10 \ .DW $3562 7E/5791: .DB $03 7E/5792: .DB $08, $00 \ .DW $3564 7E/5796: .DB $08, $10 \ .DW $3566 7E/579A: .DB $08, $20 \ .DW $3568 7E/579E: .DB $03 7E/579F: .DB $08, $00 \ .DW $356A 7E/57A3: .DB $08, $10 \ .DW $356C 7E/57A7: .DB $08, $20 \ .DW $356E 7E/57AB: .DB $01 7E/579C: .DB $08, $00 \ .DW $754C 7E/57B0: .DB $03 7E/57B1: .DB $10, $00 \ .DW $754E 7E/57B5: .DB $08, $00 \ .DW $7560 7E/57B9: .DB $08, $10 \ .DW $7562 7E/57BD: .DB $03 7E/57BE: .DB $08, $00 \ .DW $7564 7E/57C2: .DB $08, $10 \ .DW $7566 7E/57C6: .DB $08, $20 \ .DW $7568 7E/57CA: .DB $03 7E/57CB: .DB $08, $00 \ .DW $756A 7E/57CF: .DB $08, $10 \ .DW $756C 7E/57D3: .DB $08, $20 \ .DW $756E 7E/57D7: .DB $40, $A8, $40, $70, $B0, $48, $68, $A8, $70, $68, $60, $A8, $80, $D0 7E/57E5: .DB $88, $58, $90, $A8, $98, $88, $50, $58, $70, $60, $90, $60, $10, $78 ; [ Magitek March ] opening_main: 7E/57F3: 08 PHP 7E/57F4: C2 30 REP #$30 7E/57F6: 48 PHA 7E/57F7: DA PHX 7E/57F8: 5A PHY 7E/57F9: 8B PHB 7E/57FA: 0B PHD 7E/57FB: 20 2F 50 JSR $502F ; cutscene init 7E/57FE: 20 13 58 JSR $5813 ; magitek march init 7E/5801: 20 72 58 JSR $5872 ; magitek march main loop 7E/5804: 20 43 50 JSR $5043 ; stop music 7E/5807: 20 4E 50 JSR $504E ; disable interrupts 7E/580A: C2 30 REP #$30 7E/580C: 2B PLD 7E/580D: AB PLB 7E/580E: 7A PLY 7E/580F: FA PLX 7E/5810: 68 PLA 7E/5811: 28 PLP 7E/5812: 6B RTL ; [ Magitek March Init ] open_init: 7E/5813: 20 11 77 JSR $7711 ; 7E/5816: 20 3C 58 JSR $583C ; init hardware registers (magitek march) 7E/5819: A9 FF LDA #$FF ; master volume = max 7E/581B: 8F 02 13 00 STA $001302 7E/581F: A9 10 LDA #$10 ; spc command $10 (play song) 7E/5821: 8F 00 13 00 STA $001300 7E/5825: A9 04 LDA #$04 ; song $04 (opening theme 3) 7E/5827: 8F 01 13 00 STA $001301 7E/582B: 22 04 00 C5 JSL $C50004 ; spc command 7E/582F: 20 15 78 JSR $7815 7E/5832: 20 4F 78 JSR $784F 7E/5835: 20 85 74 JSR $7485 7E/5838: 20 FF 61 JSR $61FF ; load magitek march graphics 7E/583B: 60 RTS ; [ Init Hardware Registers (magitek march) ] open_ppu_set: 7E/583C: 8B PHB 7E/583D: A9 00 LDA #$00 7E/583F: 48 PHA 7E/5840: AB PLB 7E/5841: A9 03 LDA #$03 7E/5843: 8D 01 21 STA $2101 7E/5846: A6 00 LDX $00 7E/5848: 8E 02 21 STX $2102 7E/584B: A9 07 LDA #$07 7E/584D: 8D 05 21 STA $2105 7E/5850: A9 78 LDA #$78 7E/5852: 8D 07 21 STA $2107 7E/5855: A9 7C LDA #$7C 7E/5857: 8D 08 21 STA $2108 7E/585A: A9 74 LDA #$74 7E/585C: 8D 09 21 STA $2109 7E/585F: 8D 0A 21 STA $210A 7E/5862: A9 22 LDA #$22 7E/5864: 8D 0B 21 STA $210B 7E/5867: A9 77 LDA #$77 7E/5869: 8D 0C 21 STA $210C 7E/586C: 7B TDC 7E/586D: 8D 1A 21 STA $211A 7E/5870: AB PLB 7E/5871: 60 RTS ; [ Magitek March Main Loop ] open_exec: 7E/5872: 7B TDC 7E/5873: A5 19 LDA $19 7E/5875: 30 18 BMI $588F 7E/5877: 0A ASL 7E/5878: AA TAX 7E/5879: FC AD 58 JSR ($58AD,X) 7E/587C: A5 06 LDA $06 7E/587E: 89 80 BIT #$80 7E/5880: D0 08 BNE $588A 7E/5882: 20 0F 75 JSR $750F 7E/5885: 20 FD 71 JSR $71FD 7E/5888: 80 E8 BRA $5872 7E/588A: A9 FF LDA #$FF 7E/588C: 8D 00 02 STA $0200 7E/588F: A0 0F 00 LDY #$000F 7E/5892: 84 15 STY $15 7E/5894: A9 00 LDA #$00 7E/5896: A0 A0 55 LDY #$55A0 7E/5899: 20 DC 74 JSR $74DC 7E/589C: A4 15 LDY $15 7E/589E: F0 08 BEQ $58A8 7E/58A0: 20 0F 75 JSR $750F 7E/58A3: 20 FD 71 JSR $71FD 7E/58A6: 80 F4 BRA $589C 7E/58A8: 22 0C 00 EE JSL $EE000C ; restore mode 7 variables 7E/58AC: 60 RTS ; magitek march jump table open_tbl_open: 7E/58AD: .DW $58B5, $5A4C, $5A66, $5A70 ; [ Magitek March $00: Init ] 7E/58B5: 20 70 5C JSR $5C70 7E/58B8: 20 5D 5B JSR $5B5D 7E/58BB: 8B PHB 7E/58BC: A9 00 LDA #$00 7E/58BE: 48 PHA 7E/58BF: AB PLB 7E/58C0: 22 09 00 EE JSL $EE0009 ; save mode 7 variables 7E/58C4: 22 03 00 EE JSL $EE0003 ; update mode 7 variables 7E/58C8: AB PLB 7E/58C9: 20 45 5C JSR $5C45 7E/58CC: 20 85 74 JSR $7485 7E/58CF: A2 00 31 LDX #$3100 7E/58D2: A0 65 74 LDY #$7465 7E/58D5: 20 24 73 JSR $7324 7E/58D8: A2 20 31 LDX #$3120 7E/58DB: A0 65 74 LDY #$7465 7E/58DE: 20 24 73 JSR $7324 7E/58E1: A2 60 31 LDX #$3160 7E/58E4: A0 65 74 LDY #$7465 7E/58E7: 20 24 73 JSR $7324 7E/58EA: A2 80 31 LDX #$3180 7E/58ED: A0 65 74 LDY #$7465 7E/58F0: 20 24 73 JSR $7324 7E/58F3: A2 A0 31 LDX #$31A0 7E/58F6: A0 65 74 LDY #$7465 7E/58F9: 20 24 73 JSR $7324 7E/58FC: A2 00 30 LDX #$3000 7E/58FF: A0 65 74 LDY #$7465 7E/5902: 20 24 73 JSR $7324 7E/5905: A2 20 30 LDX #$3020 7E/5908: A0 65 74 LDY #$7465 7E/590B: 20 24 73 JSR $7324 7E/590E: A2 40 30 LDX #$3040 7E/5911: A0 65 74 LDY #$7465 7E/5914: 20 24 73 JSR $7324 7E/5917: A2 60 30 LDX #$3060 7E/591A: A0 65 74 LDY #$7465 7E/591D: 20 24 73 JSR $7324 7E/5920: A2 E0 30 LDX #$30E0 7E/5923: A0 65 74 LDY #$7465 7E/5926: 20 24 73 JSR $7324 7E/5929: A9 68 LDA #$68 7E/592B: 85 39 STA $39 7E/592D: A9 48 LDA #$48 7E/592F: 85 3A STA $3A 7E/5931: A9 78 LDA #$78 7E/5933: 85 3B STA $3B 7E/5935: A9 C0 LDA #$C0 7E/5937: 85 3C STA $3C 7E/5939: A9 80 LDA #$80 7E/593B: 85 3D STA $3D 7E/593D: A9 90 LDA #$90 7E/593F: 85 3E STA $3E 7E/5941: 64 29 STZ $29 7E/5943: 64 2A STZ $2A 7E/5945: A0 38 00 LDY #$0038 7E/5948: 84 2B STY $2B 7E/594A: 64 37 STZ $37 7E/594C: 64 38 STZ $38 7E/594E: A9 00 LDA #$00 7E/5950: A0 C0 5F LDY #$5FC0 ; magitek armor vertical offset thread 7E/5953: 20 DC 74 JSR $74DC 7E/5956: 7B TDC 7E/5957: 20 08 5B JSR $5B08 ; create magitek armor 0 7E/595A: A9 01 LDA #$01 7E/595C: 20 08 5B JSR $5B08 ; create magitek armor 1 7E/595F: A9 02 LDA #$02 7E/5961: 20 08 5B JSR $5B08 ; create magitek armor 2 7E/5964: A2 20 31 LDX #$3120 7E/5967: A0 90 64 LDY #$6490 7E/596A: A9 01 LDA #$01 7E/596C: 20 3A 73 JSR $733A 7E/596F: A2 60 31 LDX #$3160 7E/5972: A0 90 64 LDY #$6490 7E/5975: A9 02 LDA #$02 7E/5977: 20 3A 73 JSR $733A 7E/597A: A2 80 31 LDX #$3180 7E/597D: A0 90 64 LDY #$6490 7E/5980: A9 04 LDA #$04 7E/5982: 20 3A 73 JSR $733A 7E/5985: A2 A0 31 LDX #$31A0 7E/5988: A0 90 64 LDY #$6490 ; snow sprite palette 2 (4 colors) 7E/598B: A9 06 LDA #$06 7E/598D: 20 3A 73 JSR $733A 7E/5990: A2 00 31 LDX #$3100 7E/5993: A0 70 64 LDY #$6470 ; snow sprite palette 1 7E/5996: A9 03 LDA #$03 7E/5998: 20 3A 73 JSR $733A 7E/599B: A2 20 30 LDX #$3020 7E/599E: A0 10 64 LDY #$6410 ; snow background palette 1 7E/59A1: A9 02 LDA #$02 7E/59A3: 20 3A 73 JSR $733A 7E/59A6: A2 40 30 LDX #$3040 7E/59A9: A0 30 64 LDY #$6430 ; snow background palette 2 7E/59AC: A9 02 LDA #$02 7E/59AE: 20 3A 73 JSR $733A 7E/59B1: A2 60 30 LDX #$3060 7E/59B4: A0 50 64 LDY #$6450 ; snow background palette 3 7E/59B7: A9 02 LDA #$02 7E/59B9: 20 3A 73 JSR $733A 7E/59BC: A2 E0 30 LDX #$30E0 7E/59BF: A0 43 7C LDY #$7C43 ; narshe palette (lights on) 7E/59C2: A9 04 LDA #$04 7E/59C4: 20 3A 73 JSR $733A 7E/59C7: A9 00 LDA #$00 7E/59C9: A0 27 5F LDY #$5F27 7E/59CC: 20 DC 74 JSR $74DC 7E/59CF: A9 00 LDA #$00 7E/59D1: A0 ED 5A LDY #$5AED 7E/59D4: 20 DC 74 JSR $74DC 7E/59D7: A9 00 LDA #$00 7E/59D9: A0 92 5A LDY #$5A92 7E/59DC: 20 DC 74 JSR $74DC 7E/59DF: 7B TDC 7E/59E0: 9D 01 39 STA $3901,X 7E/59E3: A9 01 LDA #$01 7E/59E5: 9D 00 36 STA $3600,X 7E/59E8: A9 5A LDA #$5A 7E/59EA: 9D 00 39 STA $3900,X 7E/59ED: C2 20 REP #$20 7E/59EF: A9 A0 FF LDA #$FFA0 7E/59F2: 9D 00 38 STA $3800,X 7E/59F5: E2 20 SEP #$20 7E/59F7: A9 00 LDA #$00 7E/59F9: A0 92 5A LDY #$5A92 7E/59FC: 20 DC 74 JSR $74DC 7E/59FF: A9 01 LDA #$01 7E/5A01: 9D 01 39 STA $3901,X 7E/5A04: A9 0A LDA #$0A 7E/5A06: 9D 00 36 STA $3600,X 7E/5A09: A9 28 LDA #$28 7E/5A0B: 9D 00 39 STA $3900,X 7E/5A0E: C2 20 REP #$20 7E/5A10: A9 60 FF LDA #$FF60 7E/5A13: 9D 00 38 STA $3800,X 7E/5A16: E2 20 SEP #$20 7E/5A18: A9 00 LDA #$00 7E/5A1A: A0 92 5A LDY #$5A92 7E/5A1D: 20 DC 74 JSR $74DC 7E/5A20: A9 02 LDA #$02 7E/5A22: 9D 01 39 STA $3901,X 7E/5A25: A9 07 LDA #$07 7E/5A27: 9D 00 36 STA $3600,X 7E/5A2A: A9 2D LDA #$2D 7E/5A2C: 9D 00 39 STA $3900,X 7E/5A2F: C2 20 REP #$20 7E/5A31: A9 80 FF LDA #$FF80 7E/5A34: 9D 00 38 STA $3800,X 7E/5A37: E2 20 SEP #$20 7E/5A39: E6 19 INC $19 7E/5A3B: A9 01 LDA #$01 7E/5A3D: 85 32 STA $32 7E/5A3F: 20 FD 71 JSR $71FD 7E/5A42: A0 CA 00 LDY #$00CA 7E/5A45: 84 15 STY $15 7E/5A47: A9 0F LDA #$0F 7E/5A49: 85 32 STA $32 7E/5A4B: 60 RTS ; [ Magitek March $01: ] 7E/5A4C: A4 15 LDY $15 7E/5A4E: D0 12 BNE $5A62 7E/5A50: E6 19 INC $19 7E/5A52: A0 E4 0C LDY #$0CE4 7E/5A55: 84 15 STY $15 7E/5A57: A9 00 LDA #$00 7E/5A59: A0 E2 5C LDY #$5CE2 7E/5A5C: 20 DC 74 JSR $74DC 7E/5A5F: 20 BD 5C JSR $5CBD 7E/5A62: 20 79 5A JSR $5A79 7E/5A65: 60 RTS ; [ Magitek March $02: ] 7E/5A66: A4 15 LDY $15 7E/5A68: D0 02 BNE $5A6C 7E/5A6A: E6 19 INC $19 7E/5A6C: 20 79 5A JSR $5A79 7E/5A6F: 60 RTS ; [ Magitek March $03: ] 7E/5A70: A9 FF LDA #$FF 7E/5A72: 85 19 STA $19 7E/5A74: 7B TDC 7E/5A75: 8D 00 02 STA $0200 7E/5A78: 60 RTS ; [ ] open_m7xy_set_local: 7E/5A79: A5 3F LDA $3F 7E/5A7B: 8F 1F 21 00 STA $00211F 7E/5A7F: A5 40 LDA $40 7E/5A81: 8F 1F 21 00 STA $00211F 7E/5A85: A5 41 LDA $41 7E/5A87: 8F 20 21 00 STA $002120 7E/5A8B: A5 42 LDA $42 7E/5A8D: 8F 20 21 00 STA $002120 7E/5A91: 60 RTS ; [ ] armor_move_task: 7E/5A92: AA TAX 7E/5A93: 7C 96 5A JMP ($5A96,X) 7E/5A96: .DW $5A9C, $5AAF, $5AC6 7E/5A9C: A6 1D LDX $1D 7E/5A9E: FE 00 3A INC $3A00,X 7E/5AA1: 7B TDC 7E/5AA2: BD 01 39 LDA $3901,X 7E/5AA5: A8 TAY 7E/5AA6: B9 3C 00 LDA $003C,Y 7E/5AA9: 9D 01 34 STA $3401,X 7E/5AAC: 9E 00 34 STZ $3400,X 7E/5AAF: A6 1D LDX $1D 7E/5AB1: BD 00 36 LDA $3600,X 7E/5AB4: D0 0B BNE $5AC1 7E/5AB6: FE 00 3A INC $3A00,X 7E/5AB9: BD 00 39 LDA $3900,X 7E/5ABC: 9D 00 36 STA $3600,X 7E/5ABF: 38 SEC 7E/5AC0: 60 RTS 7E/5AC1: DE 00 36 DEC $3600,X 7E/5AC4: 38 SEC 7E/5AC5: 60 RTS 7E/5AC6: A6 1D LDX $1D 7E/5AC8: BD 00 36 LDA $3600,X 7E/5ACB: F0 1E BEQ $5AEB 7E/5ACD: C2 20 REP #$20 7E/5ACF: BD 00 34 LDA $3400,X 7E/5AD2: 18 CLC 7E/5AD3: 7D 00 38 ADC $3800,X 7E/5AD6: 9D 00 34 STA $3400,X 7E/5AD9: E2 20 SEP #$20 7E/5ADB: 7B TDC 7E/5ADC: BD 01 39 LDA $3901,X 7E/5ADF: A8 TAY 7E/5AE0: BD 01 34 LDA $3401,X 7E/5AE3: 99 3C 00 STA $003C,Y 7E/5AE6: DE 00 36 DEC $3600,X 7E/5AE9: 38 SEC 7E/5AEA: 60 RTS 7E/5AEB: 18 CLC 7E/5AEC: 60 RTS ; [ ] scroll_task_open: 7E/5AED: A5 18 LDA $18 7E/5AEF: 29 03 AND #$03 7E/5AF1: D0 08 BNE $5AFB 7E/5AF3: C2 20 REP #$20 7E/5AF5: C6 41 DEC $41 7E/5AF7: C6 27 DEC $27 7E/5AF9: E2 20 SEP #$20 7E/5AFB: A5 18 LDA $18 7E/5AFD: 29 3F AND #$3F 7E/5AFF: D0 05 BNE $5B06 7E/5B01: A4 2B LDY $2B 7E/5B03: C8 INY 7E/5B04: 84 2B STY $2B 7E/5B06: 38 SEC 7E/5B07: 60 RTS ; [ Create Magitek Armor ] ; A: magitek armor index warmor_make: 7E/5B08: 85 F4 STA $F4 7E/5B0A: 0A ASL 7E/5B0B: 0A ASL 7E/5B0C: 0A ASL 7E/5B0D: 85 F3 STA $F3 7E/5B0F: A4 00 LDY $00 7E/5B11: 5A PHY 7E/5B12: A9 02 LDA #$02 7E/5B14: A0 7E 5F LDY #$5F7E ; magitek armor thread 7E/5B17: 20 DC 74 JSR $74DC 7E/5B1A: A5 F4 LDA $F4 7E/5B1C: 9D 00 39 STA $3900,X 7E/5B1F: A5 F3 LDA $F3 7E/5B21: 9D 01 39 STA $3901,X 7E/5B24: 7A PLY 7E/5B25: C2 20 REP #$20 7E/5B27: B9 45 5B LDA $5B45,Y 7E/5B2A: 9D 00 35 STA $3500,X 7E/5B2D: E2 20 SEP #$20 7E/5B2F: C8 INY 7E/5B30: C8 INY 7E/5B31: B9 45 5B LDA $5B45,Y 7E/5B34: 9D 01 37 STA $3701,X 7E/5B37: C8 INY 7E/5B38: B9 45 5B LDA $5B45,Y 7E/5B3B: 9D 01 38 STA $3801,X 7E/5B3E: C8 INY ; next sprite 7E/5B3F: C0 18 00 CPY #$0018 7E/5B42: D0 CD BNE $5B11 7E/5B44: 60 RTS ; pointer to each animated sprite of magitek armor 7E/5B45: .DW $6031 \ .DB $04, $F8 7E/5B49: .DW $6054 \ .DB $00, $00 7E/5B4D: .DW $6121 \ .DB $FD, $E0 7E/5B51: .DW $6190 \ .DB $FB, $E0 7E/5B55: .DW $607F \ .DB $04, $08 7E/5B59: .DW $60D0 \ .DB $04, $08 ; [ ] open_dma_set: 7E/5B5D: 8B PHB 7E/5B5E: A9 00 LDA #$00 7E/5B60: 48 PHA 7E/5B61: AB PLB 7E/5B62: A9 17 LDA #$17 7E/5B64: 8D 2C 21 STA $212C 7E/5B67: A9 02 LDA #$02 7E/5B69: 8D 2D 21 STA $212D 7E/5B6C: A9 E0 LDA #$E0 7E/5B6E: 8D 32 21 STA $2132 7E/5B71: 9C 20 43 STZ $4320 7E/5B74: A9 32 LDA #$32 7E/5B76: 8D 21 43 STA $4321 7E/5B79: A0 23 5C LDY #$5C23 7E/5B7C: 8C 22 43 STY $4322 7E/5B7F: A9 7E LDA #$7E 7E/5B81: 8D 24 43 STA $4324 7E/5B84: 8D 27 43 STA $4327 7E/5B87: 9C 30 43 STZ $4330 7E/5B8A: A9 05 LDA #$05 7E/5B8C: 8D 31 43 STA $4331 7E/5B8F: A0 40 5C LDY #$5C40 7E/5B92: 8C 32 43 STY $4332 7E/5B95: A9 7E LDA #$7E 7E/5B97: 8D 34 43 STA $4334 7E/5B9A: 8D 37 43 STA $4337 7E/5B9D: A9 01 LDA #$01 7E/5B9F: 8D 40 43 STA $4340 7E/5BA2: A9 30 LDA #$30 7E/5BA4: 8D 41 43 STA $4341 7E/5BA7: A0 0E 5C LDY #$5C0E 7E/5BAA: 8C 42 43 STY $4342 7E/5BAD: A9 7E LDA #$7E 7E/5BAF: 8D 44 43 STA $4344 7E/5BB2: 8D 47 43 STA $4347 7E/5BB5: 8D 54 43 STA $4354 7E/5BB8: 8D 57 43 STA $4357 7E/5BBB: A9 02 LDA #$02 7E/5BBD: 8D 50 43 STA $4350 7E/5BC0: A9 11 LDA #$11 7E/5BC2: 8D 51 43 STA $4351 7E/5BC5: A0 01 5C LDY #$5C01 7E/5BC8: 8C 52 43 STY $4352 7E/5BCB: A9 43 LDA #$43 7E/5BCD: 8D 60 43 STA $4360 7E/5BD0: A9 1B LDA #$1B 7E/5BD2: 8D 61 43 STA $4361 7E/5BD5: A0 15 5C LDY #$5C15 7E/5BD8: 8C 62 43 STY $4362 7E/5BDB: A9 7E LDA #$7E 7E/5BDD: 8D 64 43 STA $4364 7E/5BE0: 8D 67 43 STA $4367 7E/5BE3: A9 43 LDA #$43 7E/5BE5: 8D 70 43 STA $4370 7E/5BE8: A9 1D LDA #$1D 7E/5BEA: 8D 71 43 STA $4371 7E/5BED: A0 1C 5C LDY #$5C1C 7E/5BF0: 8C 72 43 STY $4372 7E/5BF3: A9 7E LDA #$7E 7E/5BF5: 8D 74 43 STA $4374 7E/5BF8: 8D 77 43 STA $4377 7E/5BFB: A9 FC LDA #$FC 7E/5BFD: 04 31 TSB $31 7E/5BFF: AB PLB 7E/5C00: 60 RTS 7E/5C01: .DB $27, $00, $00 7E/5C04: .DB $10, $00, $00 7E/5C07: .DB $10, $00, $00 7E/5C0A: .DB $10, $00, $00 7E/5C0D: .DB $00 7E/5C0E: .DB $54, $82, $04 7E/5C11: .DB $01, $80, $81 7E/5C14: .DB $00 7E/5C15: .DB $E4 \ .DW $3CA0 7E/5C18: .DB $FB \ .DW $3E30 7E/5C1B: .DB $00 7E/5C1C: .DB $E4 \ .DW $4020 7E/5C1F: .DB $FB \ .DW $41B0 7E/5C22: .DB $00 7E/5C23: .DB $54, $E0 7E/5C25: .DB $01, $ED 7E/5C27: .DB $01, $EB 7E/5C29: .DB $01, $EA 7E/5C2B: .DB $02, $E9 7E/5C2D: .DB $03, $E8 7E/5C2F: .DB $04, $E7 7E/5C31: .DB $05, $E6 7E/5C33: .DB $06, $E5 7E/5C35: .DB $07, $E4 7E/5C37: .DB $08, $E3 7E/5C39: .DB $0C, $E2 7E/5C3B: .DB $0F, $E1 7E/5C3D: .DB $1E, $E0 7E/5C3F: .DB $00 7E/5C40: .DB $54, $09 7E/5C42: .DB $01, $07 7E/5C44: .DB $00 ; [ ] m7data_marge: 7E/5C45: 7B TDC 7E/5C46: AA TAX 7E/5C47: A8 TAY 7E/5C48: C2 20 REP #$20 7E/5C4A: BD 00 03 LDA $0300,X 7E/5C4D: 99 00 3D STA $3D00,Y 7E/5C50: BD 80 06 LDA $0680,X 7E/5C53: 99 80 40 STA $4080,Y 7E/5C56: C8 INY 7E/5C57: C8 INY 7E/5C58: BD C0 04 LDA $04C0,X 7E/5C5B: 99 00 3D STA $3D00,Y 7E/5C5E: BD 40 08 LDA $0840,X 7E/5C61: 99 80 40 STA $4080,Y 7E/5C64: C8 INY 7E/5C65: C8 INY 7E/5C66: E8 INX 7E/5C67: E8 INX 7E/5C68: E0 C0 01 CPX #$01C0 7E/5C6B: D0 DD BNE $5C4A 7E/5C6D: E2 20 SEP #$20 7E/5C6F: 60 RTS ; [ ] open_mode7_init: 7E/5C70: A0 00 01 LDY #$0100 7E/5C73: 84 3F STY $3F 7E/5C75: A0 80 00 LDY #$0080 7E/5C78: 84 41 STY $41 7E/5C7A: 84 25 STY $25 7E/5C7C: 7B TDC 7E/5C7D: A8 TAY 7E/5C7E: 84 27 STY $27 7E/5C80: 64 72 STZ $72 7E/5C82: 64 73 STZ $73 7E/5C84: 64 74 STZ $74 7E/5C86: A0 E0 00 LDY #$00E0 7E/5C89: 84 87 STY $87 7E/5C8B: A0 00 40 LDY #$4000 7E/5C8E: 84 8B STY $8B 7E/5C90: A0 00 00 LDY #$0000 7E/5C93: 84 8D STY $8D 7E/5C95: A0 FF FF LDY #$FFFF 7E/5C98: 84 8F STY $8F 7E/5C9A: 20 B1 5C JSR $5CB1 7E/5C9D: A0 40 74 LDY #$7440 7E/5CA0: 84 10 STY $10 7E/5CA2: A0 00 44 LDY #$4400 7E/5CA5: 84 12 STY $12 7E/5CA7: A9 7E LDA #$7E 7E/5CA9: 85 14 STA $14 7E/5CAB: A0 80 02 LDY #$0280 7E/5CAE: 84 0E STY $0E 7E/5CB0: 60 RTS 7E/5CB1: 7B TDC 7E/5CB2: AA TAX 7E/5CB3: 9E 00 44 STZ $4400,X 7E/5CB6: E8 INX 7E/5CB7: E0 80 02 CPX #$0280 7E/5CBA: D0 F7 BNE $5CB3 7E/5CBC: 60 RTS ; [ Create Narshe Blinking Lights Thread ] town_flash: 7E/5CBD: A9 00 LDA #$00 7E/5CBF: A0 C6 5C LDY #$5CC6 ; narshe blinking lights thread 7E/5CC2: 20 DC 74 JSR $74DC 7E/5CC5: 60 RTS ; [ Narshe Blinking Lights Thread ] town_flash_task: 7E/5CC6: A5 18 LDA $18 ; frame counter 7E/5CC8: 29 01 AND #$01 7E/5CCA: D0 0B BNE $5CD7 7E/5CCC: A2 E0 30 LDX #$30E0 7E/5CCF: A0 43 7C LDY #$7C43 ; narshe palette (lights on) 7E/5CD2: 20 24 73 JSR $7324 7E/5CD5: 80 09 BRA $5CE0 7E/5CD7: A2 E0 30 LDX #$30E0 7E/5CDA: A0 98 64 LDY #$6498 ; narshe palette (lights off) 7E/5CDD: 20 24 73 JSR $7324 7E/5CE0: 38 SEC 7E/5CE1: 60 RTS staff_task: 7E/5CE2: AA TAX 7E/5CE3: 7C E6 5C JMP ($5CE6,X) 7E/5CE6: .DW $5CEA, $5CFC 7E/5CEA: A6 1D LDX $1D 7E/5CEC: FE 00 3A INC $3A00,X 7E/5CEF: C2 20 REP #$20 7E/5CF1: A9 47 5D LDA #$5D47 7E/5CF4: 9D 00 35 STA $3500,X 7E/5CF7: E2 20 SEP #$20 7E/5CF9: 20 5F 75 JSR $755F 7E/5CFC: A6 1D LDX $1D 7E/5CFE: BD 01 3B LDA $3B01,X 7E/5D01: C9 01 CMP #$01 7E/5D03: D0 0B BNE $5D10 7E/5D05: A2 00 30 LDX #$3000 7E/5D08: A0 00 64 LDY #$6400 ; magitek march font palette 7E/5D0B: A9 01 LDA #$01 7E/5D0D: 20 3A 73 JSR $733A 7E/5D10: A6 1D LDX $1D 7E/5D12: BD 01 3B LDA $3B01,X 7E/5D15: C9 20 CMP #$20 7E/5D17: D0 0B BNE $5D24 7E/5D19: A2 00 30 LDX #$3000 7E/5D1C: A0 65 74 LDY #$7465 7E/5D1F: A9 01 LDA #$01 7E/5D21: 20 3A 73 JSR $733A 7E/5D24: A6 1D LDX $1D 7E/5D26: BD 01 3B LDA $3B01,X 7E/5D29: C9 FE CMP #$FE 7E/5D2B: F0 18 BEQ $5D45 7E/5D2D: 20 93 75 JSR $7593 7E/5D30: E2 10 SEP #$10 7E/5D32: BD 00 3B LDA $3B00,X 7E/5D35: A8 TAY 7E/5D36: C2 20 REP #$20 7E/5D38: B1 EB LDA ($EB),Y 7E/5D3A: 85 E7 STA $E7 7E/5D3C: C2 10 REP #$10 7E/5D3E: E2 20 SEP #$20 7E/5D40: 20 8B 5E JSR $5E8B 7E/5D43: 38 SEC 7E/5D44: 60 RTS 7E/5D45: 18 CLC 7E/5D46: 60 RTS ; pointers to opening credits text data 7E/5D47: .DW $6598 \ .DB $01 7E/5D4A: .DW $65A5 \ .DB $8B 7E/5D4D: .DW $5E19 \ .DB $01 7E/5D50: .DW $65BC \ .DB $01 7E/5D53: .DW $65C9 \ .DB $8B 7E/5D56: .DW $5E19 \ .DB $01 7E/5D59: .DW $65ED \ .DB $01 7E/5D5C: .DW $6601 \ .DB $8B 7E/5D5F: .DW $5E19 \ .DB $01 7E/5D62: .DW $6621 \ .DB $01 7E/5D65: .DW $6636 \ .DB $8B 7E/5D68: .DW $5E19 \ .DB $01 7E/5D6B: .DW $6621 \ .DB $01 7E/5D6E: .DW $665D \ .DB $8B 7E/5D71: .DW $5E19 \ .DB $01 7E/5D74: .DW $667E \ .DB $01 7E/5D77: .DW $6688 \ .DB $8B 7E/5D7A: .DW $5E19 \ .DB $01 7E/5D7D: .DW $669A \ .DB $01 7E/5D80: .DW $66AD \ .DB $8B 7E/5D83: .DW $5E19 \ .DB $01 7E/5D86: .DW $66C1 \ .DB $01 7E/5D89: .DW $66D4 \ .DB $8B 7E/5D8C: .DW $5E19 \ .DB $01 7E/5D8F: .DW $66F7 \ .DB $01 7E/5D92: .DW $6709 \ .DB $8B 7E/5D95: .DW $5E19 \ .DB $01 7E/5D98: .DW $66F7 \ .DB $01 7E/5D9B: .DW $672E \ .DB $8B 7E/5D9E: .DW $5E19 \ .DB $01 7E/5DA1: .DW $6754 \ .DB $01 7E/5DA4: .DW $6766 \ .DB $8B 7E/5DA7: .DW $5E19 \ .DB $01 7E/5DAA: .DW $678D \ .DB $01 7E/5DAD: .DW $67A3 \ .DB $8B 7E/5DB0: .DW $5E19 \ .DB $01 7E/5DB3: .DW $67C4 \ .DB $01 7E/5DB6: .DW $67DA \ .DB $8B 7E/5DB9: .DW $5E19 \ .DB $01 7E/5DBC: .DW $67F0 \ .DB $01 7E/5DBF: .DW $6805 \ .DB $8B 7E/5DC2: .DW $5E19 \ .DB $01 7E/5DC5: .DW $6815 \ .DB $01 7E/5DC8: .DW $6831 \ .DB $8B 7E/5DCB: .DW $5E19 \ .DB $01 7E/5DCE: .DW $6846 \ .DB $01 7E/5DD1: .DW $6861 \ .DB $8B 7E/5DD4: .DW $5E19 \ .DB $01 7E/5DD7: .DW $6846 \ .DB $01 7E/5DDA: .DW $6894 \ .DB $8B 7E/5DDD: .DW $5E19 \ .DB $01 7E/5DE0: .DW $6846 \ .DB $01 7E/5DE3: .DW $68CA \ .DB $8B 7E/5DE6: .DW $5E19 \ .DB $01 7E/5DE9: .DW $68F5 \ .DB $01 7E/5DEC: .DW $6912 \ .DB $8B 7E/5DEF: .DW $5E19 \ .DB $01 7E/5DF2: .DW $6925 \ .DB $01 7E/5DF5: .DW $6941 \ .DB $8B 7E/5DF8: .DW $5E19 \ .DB $01 7E/5DFB: .DW $6955 \ .DB $01 7E/5DFE: .DW $6968 \ .DB $8B 7E/5E01: .DW $5E19 \ .DB $01 7E/5E04: .DW $697A \ .DB $01 7E/5E07: .DW $698D \ .DB $8B 7E/5E0A: .DW $5E19 \ .DB $01 7E/5E0D: .DW $69A5 \ .DB $01 7E/5E10: .DW $69B4 \ .DB $8B 7E/5E13: .DW $5E19 \ .DB $01 7E/5E16: .DW $5E19 \ .DB $FE ; empty lines for opening credits text (clears tile data before loading the next string) 7E/5E19: .DW $4446 7E/5E1B: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 7E/5E2B: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $FE 7E/5E37: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 7E/5E47: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $FE 7E/5E53: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 7E/5E63: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $FE 7E/5E6F: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 7E/5E7F: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $00 7E/5E8B: A6 00 LDX $00 7E/5E8D: 9B TXY 7E/5E8E: C2 20 REP #$20 7E/5E90: B2 E7 LDA ($E7) 7E/5E92: 85 EB STA $EB 7E/5E94: E6 E7 INC $E7 7E/5E96: E6 E7 INC $E7 7E/5E98: E2 20 SEP #$20 7E/5E9A: B1 E7 LDA ($E7),Y 7E/5E9C: 85 43 STA $43 7E/5E9E: C8 INY 7E/5E9F: 7B TDC 7E/5EA0: B1 E7 LDA ($E7),Y 7E/5EA2: C8 INY 7E/5EA3: 20 DF 5E JSR $5EDF 7E/5EA6: B1 E7 LDA ($E7),Y 7E/5EA8: F0 17 BEQ $5EC1 7E/5EAA: C9 FE CMP #$FE 7E/5EAC: F0 14 BEQ $5EC2 7E/5EAE: C9 FF CMP #$FF 7E/5EB0: F0 19 BEQ $5ECB 7E/5EB2: 5A PHY 7E/5EB3: 9B TXY 7E/5EB4: 91 EB STA ($EB),Y 7E/5EB6: E8 INX 7E/5EB7: 9B TXY 7E/5EB8: A5 43 LDA $43 7E/5EBA: 91 EB STA ($EB),Y 7E/5EBC: E8 INX 7E/5EBD: 7A PLY 7E/5EBE: C8 INY 7E/5EBF: 80 E5 BRA $5EA6 7E/5EC1: 60 RTS 7E/5EC2: C2 21 REP #$21 7E/5EC4: A9 80 00 LDA #$0080 7E/5EC7: 85 E0 STA $E0 7E/5EC9: 80 07 BRA $5ED2 7E/5ECB: C2 21 REP #$21 7E/5ECD: A9 40 00 LDA #$0040 7E/5ED0: 85 E0 STA $E0 7E/5ED2: A5 EB LDA $EB 7E/5ED4: 65 E0 ADC $E0 7E/5ED6: 85 EB STA $EB 7E/5ED8: E2 20 SEP #$20 7E/5EDA: 7B TDC 7E/5EDB: AA TAX 7E/5EDC: C8 INY 7E/5EDD: 80 C7 BRA $5EA6 7E/5EDF: DA PHX 7E/5EE0: 5A PHY 7E/5EE1: 0A ASL 7E/5EE2: 0A ASL 7E/5EE3: AA TAX 7E/5EE4: BD 07 5F LDA $5F07,X 7E/5EE7: 49 FF EOR #$FF 7E/5EE9: 8D 02 5C STA $5C02 7E/5EEC: BD 08 5F LDA $5F08,X 7E/5EEF: 49 FF EOR #$FF 7E/5EF1: 8D 05 5C STA $5C05 7E/5EF4: BD 09 5F LDA $5F09,X 7E/5EF7: 49 FF EOR #$FF 7E/5EF9: 8D 08 5C STA $5C08 7E/5EFC: BD 0A 5F LDA $5F0A,X 7E/5EFF: 49 FF EOR #$FF 7E/5F01: 8D 0B 5C STA $5C0B 7E/5F04: 7A PLY 7E/5F05: FA PLX 7E/5F06: 60 RTS 7E/5F07: .DB $00, $00, $00, $00 7E/5F0B: .DB $00, $00, $04, $00 7E/5F0F: .DB $04, $00, $00, $00 7E/5F13: .DB $00, $04, $00, $00 7E/5F17: .DB $00, $04, $04, $00 7E/5F1B: .DB $04, $04, $00, $00 7E/5F1F: .DB $04, $00, $04, $00 7E/5F23: .DB $00, $04, $00, $04 oyuki_start: 7E/5F27: A5 1F LDA $1F 7E/5F29: C9 77 CMP #$77 7E/5F2B: B0 3F BCS $5F6C 7E/5F2D: A9 40 LDA #$40 7E/5F2F: 14 33 TRB $33 7E/5F31: A9 00 LDA #$00 7E/5F33: A0 DB 76 LDY #$76DB 7E/5F36: 20 DC 74 JSR $74DC 7E/5F39: 7B TDC 7E/5F3A: A5 18 LDA $18 7E/5F3C: 29 07 AND #$07 7E/5F3E: 0A ASL 7E/5F3F: A8 TAY 7E/5F40: C2 20 REP #$20 7E/5F42: B9 6E 5F LDA $5F6E,Y ; snowflake animation pointers 7E/5F45: 9D 00 35 STA $3500,X 7E/5F48: E2 20 SEP #$20 7E/5F4A: DA PHX 7E/5F4B: 20 30 56 JSR $5630 7E/5F4E: FA PLX 7E/5F4F: 9D 01 33 STA $3301,X 7E/5F52: 29 0F AND #$0F 7E/5F54: 1A INC 7E/5F55: 9D 01 38 STA $3801,X 7E/5F58: DA PHX 7E/5F59: 20 30 56 JSR $5630 7E/5F5C: FA PLX 7E/5F5D: 9D 01 34 STA $3401,X 7E/5F60: 9D 00 38 STA $3800,X 7E/5F63: 29 03 AND #$03 7E/5F65: 1A INC 7E/5F66: 9D 01 37 STA $3701,X 7E/5F69: 9D 00 37 STA $3700,X 7E/5F6C: 38 SEC 7E/5F6D: 60 RTS ; snowflake animation pointers 7E/5F6E: .DW $63B4, $63B7, $63BA, $63BD, $63C0, $63C3, $63C6, $63BA ; [ Magitek Armor Thread ] armor_task 7E/5F7E: AA TAX 7E/5F7F: 7C 82 5F JMP ($5F82,X) 7E/5F82: .DW $5F86, $5F98 7E/5F86: A6 1D LDX $1D 7E/5F88: FE 00 3A INC $3A00,X ; increment thread state 7E/5F8B: 20 5F 75 JSR $755F ; 7E/5F8E: BD 01 39 LDA $3901,X ; 7E/5F91: 18 CLC 7E/5F92: 7D 01 3B ADC $3B01,X 7E/5F95: 9D 01 3B STA $3B01,X 7E/5F98: A6 1D LDX $1D 7E/5F9A: 7B TDC 7E/5F9B: BD 00 39 LDA $3900,X 7E/5F9E: A8 TAY 7E/5F9F: A5 37 LDA $37 7E/5FA1: 18 CLC 7E/5FA2: 7D 01 37 ADC $3701,X 7E/5FA5: BB TYX 7E/5FA6: 75 39 ADC $39,X 7E/5FA8: A6 1D LDX $1D 7E/5FAA: 9D 01 33 STA $3301,X 7E/5FAD: A5 38 LDA $38 ; y-offset 7E/5FAF: 18 CLC 7E/5FB0: 7D 01 38 ADC $3801,X ; y-velocity 7E/5FB3: BB TYX 7E/5FB4: 75 3C ADC $3C,X ; magitek armor y-position 7E/5FB6: A6 1D LDX $1D 7E/5FB8: 9D 01 34 STA $3401,X ; y-position 7E/5FBB: 20 8D 75 JSR $758D 7E/5FBE: 38 SEC 7E/5FBF: 60 RTS ; [ Magitek Armor Vertical Offset Thread ] WActrl_task: 7E/5FC0: AA TAX 7E/5FC1: 7C C4 5F JMP ($5FC4,X) 7E/5FC4: .DW $5FC8, $5FDF 7E/5FC8: A6 1D LDX $1D 7E/5FCA: FE 00 3A INC $3A00,X ; increment thread state 7E/5FCD: C2 20 REP #$20 7E/5FCF: A9 27 60 LDA #$6027 7E/5FD2: 9D 00 35 STA $3500,X ; pointer to data below 7E/5FD5: E2 20 SEP #$20 7E/5FD7: A9 08 LDA #$08 7E/5FD9: 9D 01 3B STA $3B01,X 7E/5FDC: 9E 00 3B STZ $3B00,X 7E/5FDF: A6 1D LDX $1D 7E/5FE1: 20 EF 5F JSR $5FEF 7E/5FE4: 7B TDC 7E/5FE5: BD 00 3B LDA $3B00,X 7E/5FE8: A8 TAY 7E/5FE9: B1 EB LDA ($EB),Y 7E/5FEB: 85 38 STA $38 7E/5FED: 38 SEC 7E/5FEE: 60 RTS updown_set: 7E/5FEF: C2 20 REP #$20 7E/5FF1: BD 00 35 LDA $3500,X 7E/5FF4: 85 EB STA $EB 7E/5FF6: E2 20 SEP #$20 7E/5FF8: BD 01 3B LDA $3B01,X 7E/5FFB: C9 FF CMP #$FF 7E/5FFD: D0 08 BNE $6007 7E/5FFF: 9E 00 3B STZ $3B00,X 7E/6002: 20 1B 60 JSR $601B 7E/6005: 80 F1 BRA $5FF8 7E/6007: BD 01 3B LDA $3B01,X 7E/600A: D0 0B BNE $6017 7E/600C: FE 00 3B INC $3B00,X 7E/600F: FE 00 3B INC $3B00,X 7E/6012: 20 1B 60 JSR $601B 7E/6015: 80 E1 BRA $5FF8 7E/6017: DE 01 3B DEC $3B01,X 7E/601A: 60 RTS anm_timeget_local: 7E/601B: 7B TDC 7E/601C: BD 00 3B LDA $3B00,X 7E/601F: A8 TAY 7E/6020: C8 INY 7E/6021: B1 EB LDA ($EB),Y 7E/6023: 9D 01 3B STA $3B01,X 7E/6026: 60 RTS ; 7E/6027: .DB $01, $04, $02, $08, $01, $04, $00, $04, $00, $FF ; pointers to magitek armor sprite animation data (pelvis) 7E/6031: .DW $6040 \ .DB $04 7E/6034: .DW $6045 \ .DB $10 7E/6037: .DW $604A \ .DB $04 7E/603A: .DW $604F \ .DB $10 7E/603D: .DW $604A \ .DB $FF ; pointers to magitek armor sprite animation data (pelvis) 7E/6040: .DB $01 7E/6041: .DB $90, $27 \ .DW $3084 7E/6045: .DB $01 7E/6046: .DB $90, $26 \ .DW $3084 7E/604A: .DB $01 7E/604B: .DB $90, $27 \ .DW $7084 7E/604F: .DB $01 7E/6050: .DB $90, $26 \ .DW $7084 ; pointers to magitek armor sprite animation data (body) 7E/6054: .DW $605D \ .DB $14 .DW $606E \ .DB $14 .DW $606E \ .DB $FF ; magitek armor sprite animation data (body) 7E/605D: .DB $04 .DB $90, $08 \ .DW $306C .DB $A0, $08 \ .DW $306E .DB $90, $18 \ .DW $3080 .DB $A0, $18 \ .DW $3082 7E/606E: .DB $04 .DB $98, $08 \ .DW $706C .DB $88, $08 \ .DW $706E .DB $98, $18 \ .DW $7080 .DB $88, $18 \ .DW $7082 ; pointers to magitek armor sprite animation data (right arm) 7E/607F: .DW $609A \ .DB $08 .DW $60A3 \ .DB $04 .DW $60AC \ .DB $04 .DW $60B5 \ .DB $04 .DW $60BE \ .DB $08 .DW $60C7 \ .DB $04 .DW $60AC \ .DB $04 .DW $60B5 \ .DB $04 .DW $60B5 \ .DB $FF ; magitek armor sprite animation data (right arm) 7E/609A: .DB $02 .DB $80, $08 \ .DW $3060 .DB $80, $18 \ .DW $3062 7E/60A3: .DB $02 .DB $80, $09 \ .DW $3060 .DB $80, $19 \ .DW $3062 7E/60AC: .DB $02 .DB $80, $09 \ .DW $3064 .DB $80, $19 \ .DW $3066 7E/60B5: .DB $02 .DB $80, $08 \ .DW $3064 .DB $80, $18 \ .DW $3066 7E/60BE: .DB $02 .DB $80, $08 \ .DW $3068 .DB $80, $18 \ .DW $306A 7E/60C7: .DB $02 .DB $80, $09 \ .DW $3068 .DB $80, $19 \ .DW $306A ; pointers to magitek armor sprite animation data (left arm) 7E/60D0: .DW $610F \ .DB $08 .DW $6118 \ .DB $04 .DW $60FD \ .DB $04 .DW $6106 \ .DB $04 .DW $60EB \ .DB $08 .DW $60F4 \ .DB $04 .DW $60FD \ .DB $04 .DW $6106 \ .DB $04 .DW $6106 \ .DB $FF ; magitek armor sprite animation data (left arm) 7E/60EB: .DB $02 .DB $A0, $08 \ .DW $7060 .DB $A0, $18 \ .DW $7062 7E/60F4: .DB $02 .DB $A0, $09 \ .DW $7060 .DB $A0, $19 \ .DW $7062 7E/60FD: .DB $02 .DB $A0, $09 \ .DW $7064 .DB $A0, $19 \ .DW $7066 7E/6106: .DB $02 .DB $A0, $08 \ .DW $7064 .DB $A0, $18 \ .DW $7066 7E/610F: .DB $02 .DB $A0, $08 \ .DW $7068 .DB $A0, $18 \ .DW $706A 7E/6118: .DB $02 .DB $A0, $09 \ .DW $7068 .DB $A0, $19 \ .DW $706A ; pointers to magitek armor sprite animation data (right leg) 7E/6121: .DW $613F \ .DB $04 .DW $6148 \ .DB $04 .DW $6151 \ .DB $04 .DW $615A \ .DB $04 .DW $6163 \ .DB $04 .DW $616C \ .DB $08 .DW $6175 \ .DB $04 .DW $617E \ .DB $04 .DW $6187 \ .DB $04 .DW $6187 \ .DB $FF ; magitek armor sprite animation data (right leg) 7E/613F: .DB $02 .DB $90, $3F \ .DW $3040 .DB $90, $4F \ .DW $3042 7E/6148: .DB $02 .DB $90, $3D \ .DW $3040 .DB $90, $4D \ .DW $3042 7E/6151: .DB $02 .DB $90, $3F \ .DW $3044 .DB $90, $4F \ .DW $3046 7E/615A: .DB $02 .DB $90, $3E \ .DW $3044 .DB $90, $4E \ .DW $3046 7E/6163: .DB $02 .DB $90, $3D \ .DW $3048 .DB $90, $4D \ .DW $304A 7E/616C: .DB $02 .DB $90, $3E \ .DW $3048 .DB $90, $4E \ .DW $304A 7E/6175: .DB $02 .DB $90, $3D \ .DW $304C .DB $90, $4D \ .DW $304E 7E/617E: .DB $02 .DB $90, $3F \ .DW $304C .DB $90, $4F \ .DW $304E 7E/6187: .DB $02 .DB $90, $41 \ .DW $304C .DB $90, $51 \ .DW $304E ; pointers to magitek armor sprite animation data (left leg) 7E/6190: .DW $61AE \ .DB $08 7E/6193: .DW $61B7 \ .DB $04 7E/6196: .DW $61C0 \ .DB $04 7E/6199: .DW $61C9 \ .DB $04 7E/619C: .DW $61D2 \ .DB $04 7E/619F: .DW $61DB \ .DB $04 7E/61A2: .DW $61E4 \ .DB $04 7E/61A5: .DW $61ED \ .DB $04 7E/61A8: .DW $61F6 \ .DB $04 7E/61AB: .DW $61F6 \ .DB $FF ; magitek armor sprite animation data (left leg) 7E/61AE: .DB $02 7E/61AF: .DB $A0, $3E \ .DW $7048 7E/61B3: .DB $A0, $4E \ .DW $704A 7E/61B6: .DB $02 7E/61B8: .DB $A0, $3D \ .DW $704C 7E/61BB: .DB $A0, $4D \ .DW $704E 7E/61C0: .DB $02 7E/61C1: .DB $A0, $3F \ .DW $704C 7E/61C5: .DB $A0, $4F \ .DW $704E 7E/61C9: .DB $02 7E/61CA: .DB $A0, $41 \ .DW $704C 7E/61CD: .DB $A0, $51 \ .DW $704E 7E/61D1: .DB $02 7E/61D3: .DB $A0, $3F \ .DW $7040 7E/61D6: .DB $A0, $4F \ .DW $7042 7E/61DB: .DB $02 7E/61DC: .DB $A0, $3D \ .DW $7040 7E/61DF: .DB $A0, $4D \ .DW $7042 7E/61E4: .DB $02 7E/61E5: .DB $A0, $3F \ .DW $7044 7E/61E9: .DB $A0, $4F \ .DW $7046 7E/61ED: .DB $02 7E/61EE: .DB $A0, $3E \ .DW $7044 7E/61F1: .DB $A0, $4E \ .DW $7046 7E/61F6: .DB $02 7E/61F7: .DB $A0, $3D \ .DW $7048 7E/61FB: .DB $A0, $4D \ .DW $704A ; [ Load Magitek March Graphics ] open_data_set: 7E/61FF: 20 A8 7A JSR $7AA8 ; load magitek march graphics 7E/6202: C2 21 REP #$21 7E/6204: AF 66 DA DF LDA $DFDA66 ; pointer to map graphics 34 7E/6208: 69 00 DB ADC #$DB00 7E/620B: 85 E7 STA $E7 7E/620D: E2 20 SEP #$20 7E/620F: AF 68 DA DF LDA $DFDA68 7E/6213: 69 DF ADC #$DF 7E/6215: 85 E9 STA $E9 7E/6217: A0 00 98 LDY #$9800 7E/621A: 84 EB STY $EB 7E/621C: A9 7F LDA #$7F 7E/621E: 85 ED STA $ED 7E/6220: A0 00 08 LDY #$0800 7E/6223: 84 EF STY $EF 7E/6225: 20 CC 62 JSR $62CC 7E/6228: C2 21 REP #$21 7E/622A: AF 5D DA DF LDA $DFDA5D ; pointer to map graphics 31 7E/622E: 69 00 E3 ADC #$E300 ; this one skips the first $0800 bytes 7E/6231: 85 E7 STA $E7 7E/6233: E2 20 SEP #$20 7E/6235: AF 5F DA DF LDA $DFDA5F 7E/6239: 69 DF ADC #$DF 7E/623B: 85 E9 STA $E9 7E/623D: A0 00 A0 LDY #$A000 7E/6240: 84 EB STY $EB 7E/6242: A9 7F LDA #$7F 7E/6244: 85 ED STA $ED 7E/6246: A0 00 08 LDY #$0800 7E/6249: 84 EF STY $EF 7E/624B: 20 CC 62 JSR $62CC 7E/624E: C2 21 REP #$21 7E/6250: AF 60 DA DF LDA $DFDA60 ; pointer to map graphics 32 7E/6254: 69 00 DB ADC #$DB00 7E/6257: 85 E7 STA $E7 7E/6259: E2 20 SEP #$20 7E/625B: AF 62 DA DF LDA $DFDA62 7E/625F: 69 DF ADC #$DF 7E/6261: 85 E9 STA $E9 7E/6263: A0 00 A8 LDY #$A800 7E/6266: 84 EB STY $EB 7E/6268: A9 7F LDA #$7F 7E/626A: 85 ED STA $ED 7E/626C: A0 00 08 LDY #$0800 7E/626F: 84 EF STY $EF 7E/6271: 20 CC 62 JSR $62CC 7E/6274: 64 E4 STZ $E4 ; 7E/6276: 64 E5 STZ $E5 7E/6278: A9 80 LDA #$80 ; 128 tiles 7E/627A: 85 ED STA $ED 7E/627C: A2 00 98 LDX #$9800 7E/627F: A9 7F LDA #$7F 7E/6281: 20 48 63 JSR $6348 7E/6284: 20 DD 62 JSR $62DD 7E/6287: A0 00 B8 LDY #$B800 7E/628A: 84 E7 STY $E7 7E/628C: A9 7F LDA #$7F 7E/628E: 85 E9 STA $E9 7E/6290: 64 ED STZ $ED 7E/6292: 64 EE STZ $EE 7E/6294: A0 00 40 LDY #$4000 7E/6297: 84 EB STY $EB 7E/6299: A0 00 00 LDY #$0000 7E/629C: 20 18 7A JSR $7A18 7E/629F: A2 80 00 LDX #$0080 7E/62A2: 86 E4 STX $E4 7E/62A4: A9 80 LDA #$80 7E/62A6: 85 ED STA $ED 7E/62A8: A2 00 A8 LDX #$A800 7E/62AB: A9 7F LDA #$7F 7E/62AD: 20 48 63 JSR $6348 ; 7E/62B0: 20 DD 62 JSR $62DD 7E/62B3: A0 00 B8 LDY #$B800 7E/62B6: 84 E7 STY $E7 7E/62B8: A9 7F LDA #$7F 7E/62BA: 85 E9 STA $E9 7E/62BC: 64 ED STZ $ED 7E/62BE: 64 EE STZ $EE 7E/62C0: A0 00 40 LDY #$4000 7E/62C3: 84 EB STY $EB 7E/62C5: A0 00 20 LDY #$2000 7E/62C8: 20 18 7A JSR $7A18 7E/62CB: 60 RTS ; [ Copy Data ] ; ++$E7 = source ; ++$EB = destination ; +$EF = size copy: 7E/62CC: C2 20 REP #$20 7E/62CE: A4 00 LDY $00 7E/62D0: B7 E7 LDA [$E7],Y 7E/62D2: 97 EB STA [$EB],Y 7E/62D4: C8 INY 7E/62D5: C8 INY 7E/62D6: C4 EF CPY $EF 7E/62D8: D0 F6 BNE $62D0 7E/62DA: E2 20 SEP #$20 7E/62DC: 60 RTS m7scr1_set: 7E/62DD: 7B TDC 7E/62DE: AA TAX 7E/62DF: C2 20 REP #$20 7E/62E1: BD FB 62 LDA $62FB,X 7E/62E4: A8 TAY 7E/62E5: E8 INX 7E/62E6: E8 INX 7E/62E7: BD FB 62 LDA $62FB,X 7E/62EA: 85 E7 STA $E7 7E/62EC: E8 INX 7E/62ED: E8 INX 7E/62EE: E2 20 SEP #$20 7E/62F0: DA PHX 7E/62F1: 20 1B 63 JSR $631B 7E/62F4: FA PLX 7E/62F5: E0 20 00 CPX #$0020 7E/62F8: D0 E5 BNE $62DF 7E/62FA: 60 RTS scrdata1: 7E/62FB: .DW $0000, $0000, $0400, $0040, $0000, $0080, $0400, $00C0 7E/630B: .DW $0800, $2000, $0C00, $2040, $0800, $2080, $0C00, $20C0 boxscr_set: 7E/631B: 8B PHB 7E/631C: A9 7F LDA #$7F 7E/631E: 48 PHA 7E/631F: AB PLB 7E/6320: A9 20 LDA #$20 7E/6322: 85 E0 STA $E0 7E/6324: A9 20 LDA #$20 7E/6326: 85 E1 STA $E1 7E/6328: A6 E7 LDX $E7 7E/632A: B9 C0 0B LDA $0BC0,Y 7E/632D: 9D 00 B8 STA $B800,X 7E/6330: C8 INY 7E/6331: E8 INX 7E/6332: E8 INX 7E/6333: C6 E1 DEC $E1 7E/6335: D0 F3 BNE $632A 7E/6337: C2 21 REP #$21 7E/6339: A5 E7 LDA $E7 7E/633B: 69 00 01 ADC #$0100 7E/633E: 85 E7 STA $E7 7E/6340: E2 20 SEP #$20 7E/6342: C6 E0 DEC $E0 7E/6344: D0 DE BNE $6324 7E/6346: AB PLB 7E/6347: 60 RTS ; [ ] 7E/6348: 85 E9 STA $E9 7E/634A: 86 E7 STX $E7 7E/634C: 8B PHB 7E/634D: A9 7F LDA #$7F 7E/634F: 48 PHA 7E/6350: AB PLB 7E/6351: 7B TDC 7E/6352: AA TAX 7E/6353: A9 08 LDA #$08 7E/6355: 85 E6 STA $E6 7E/6357: C2 20 REP #$20 7E/6359: A0 10 00 LDY #$0010 7E/635C: A7 E7 LDA [$E7] 7E/635E: 85 F1 STA $F1 7E/6360: B7 E7 LDA [$E7],Y 7E/6362: 85 EF STA $EF 7E/6364: 7B TDC 7E/6365: E2 20 SEP #$20 7E/6367: A0 08 00 LDY #$0008 7E/636A: 7B TDC 7E/636B: 06 F0 ASL $F0 7E/636D: 2A ROL 7E/636E: 06 EF ASL $EF 7E/6370: 2A ROL 7E/6371: 06 F2 ASL $F2 7E/6373: 2A ROL 7E/6374: 06 F1 ASL $F1 7E/6376: 2A ROL 7E/6377: 29 0F AND #$0F 7E/6379: F0 12 BEQ $638D 7E/637B: 85 E0 STA $E0 7E/637D: DA PHX 7E/637E: A6 E4 LDX $E4 7E/6380: BF B8 64 7E LDA $7E64B8,X ; palette assignment 7E/6384: FA PLX 7E/6385: 0A ASL 7E/6386: 0A ASL 7E/6387: 0A ASL 7E/6388: 0A ASL 7E/6389: 29 30 AND #$30 7E/638B: 05 E0 ORA $E0 7E/638D: 9D 01 B8 STA $B801,X 7E/6390: E8 INX 7E/6391: E8 INX 7E/6392: 88 DEY 7E/6393: D0 D5 BNE $636A 7E/6395: A4 E7 LDY $E7 7E/6397: C8 INY 7E/6398: C8 INY 7E/6399: 84 E7 STY $E7 7E/639B: C6 E6 DEC $E6 7E/639D: D0 B8 BNE $6357 7E/639F: C2 20 REP #$20 7E/63A1: E6 E4 INC $E4 7E/63A3: A5 E7 LDA $E7 7E/63A5: 18 CLC 7E/63A6: 69 10 00 ADC #$0010 7E/63A9: 85 E7 STA $E7 7E/63AB: 7B TDC 7E/63AC: E2 20 SEP #$20 7E/63AE: C6 ED DEC $ED 7E/63B0: D0 A1 BNE $6353 7E/63B2: AB PLB 7E/63B3: 60 RTS ; pointers to snowflake sprite animation data 7E/63B4: .DW $63C9 \ .DB $FE 7E/63B7: .DW $63CE \ .DB $FE 7E/63BA: .DW $63D3 \ .DB $FE 7E/63BD: .DW $63D8 \ .DB $FE 7E/63C0: .DW $63DD \ .DB $FE 7E/63C3: .DW $63EE \ .DB $FE 7E/63C6: .DW $63F7 \ .DB $FE ; snowflake sprite animation data 7E/63C9: .DB $01 .DB $00, $00 \ .DW $7286 7E/63CE: .DB $01 .DB $00, $00 \ .DW $7687 7E/63D3: .DB $01 .DB $00, $00 \ .DW $7888 7E/63D8: .DB $01 .DB $00, $00 \ .DW $7A89 7E/63DD: .DB $04 .DB $08, $08 \ .DW $7287 .DB $00, $00 \ .DW $3686 .DB $00, $10 \ .DW $7886 .DB $20, $00 \ .DW $3286 7E/63EE: .DB $02 .DB $00, $00 \ .DW $7689 .DB $10, $08 \ .DW $7689 7E/63F7: .DB $02 .DB $00, $00 \ .DW $7A86 .DB $30, $08 \ .DW $3886 ; magitek march font palette 7E/6400: .DW $0000, $7FFF, $62F6, $20E6, $0000, $739C, $4E51, $1483 ; magitek march background palettes (snow) 7E/6410: .DW $0000, $460B, $3DCA, $2948, $2D69, $2949, $356A, $2008 7E/6420: .DW $2008, $2008, $2008, $35CD, $31AB, $5670, $566F, $524E 7E/6430: .DW $0000, $460B, $3DCA, $2527, $14C6, $4A0D, $1CE7, $5670 7E/6440: .DW $566F, $524E, $39AC, $2D69, $2527, $5670, $566F, $524E 7E/6450: .DW $0000, $358A, $316A, $2D69, $2948, $2949, $2D69, $4A0D 7E/6460: .DW $2008, $2008, $2008, $2008, $2008, $2008, $566F, $566F ; magitek march sprite palette (magitek armor) 7E/6470: .DW $0000, $41EF, $318C, $2D28, $2507, $1CE7, $18C6, $418B 7E/6480: .DW $3969, $2D06, $24C5, $3D8A, $3126, $2008, $2008, $2008 ; magitek march sprite palette (snow) 7E/6490: .DW $0000, $62D2, $5A90, $524E ; narshe palette (lights off) 7E/6498: .DW $0000, $1576, $002E, $0C42, $0841, $45CD, $3D6A, $3528 7E/64A8: .DW $2528, $2CE7, $24E6, $20C5, $18C5, $18A3, $1483, $1063 ; palettes for each snow tile 7E/64B8: .DB $00, $01, $02, $01, $01, $01, $01, $01, $01, $02, $02, $02, $02, $02, $02, $03 7E/64C8: .DB $02, $03, $03, $02, $02, $02, $02, $02, $02, $02, $02, $01, $01, $01, $01, $01 7E/64D8: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $01, $01, $01, $01, $01 7E/64E8: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $01, $01, $01, $01, $01 7E/64F8: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 7E/6508: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 7E/6518: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 7E/6528: .DB $02, $02, $02, $02, $02, $02, $02, $02, $05, $05, $05, $05, $05, $05, $05, $05 7E/6538: .DB $03, $03, $03, $05, $05, $03, $03, $03, $03, $03, $03, $03, $03, $03, $03, $03 7E/6548: .DB $02, $02, $05, $05, $05, $05, $03, $03, $03, $03, $03, $03, $03, $03, $03, $03 7E/6558: .DB $02, $02, $03, $02, $02, $02, $03, $03, $03, $03, $03, $03, $03, $03, $03, $02 7E/6568: .DB $02, $03, $02, $02, $02, $03, $03, $02, $03, $03, $03, $03, $03, $04, $02, $02 7E/6578: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 7E/6588: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $00, $02, $02, $02 ; opening credits text 7E/6598: .DW $4458 \ .DB $24, $00, "producer", $00 7E/65A5: .DW $44CE \ .DB $20, $00, "HIRONOBU SAKAGUCHI", $00 7E/65BC: .DW $4458 \ .DB $24, $01, "director", $00 7E/65C9: .DW $44D0 \ .DB $20, $01, "YOSHINORI KITASE", $FE .DB " HIROYUKI ITOU", $00 7E/65ED: .DW $4450 \ .DB $24, $02, "main programmer", $00 7E/6601: .DW $44D2 \ .DB $20, $02, " KEN NARITA", $FE .DB "KIYOSHI YOSHII", $00 7E/6621: .DW $4450 \ .DB $24, $03, "graphic director", $00 7E/6636: .DW $44CE \ .DB $20, $03, "TETSUYA TAKAHASHI", $FE .DB " KAZUKO SHIBUYA", $00 7E/665D: .DW $44D2 \ .DB $20, $00, " HIDEO MINABA", $FE .DB "TETSUYA NOMURA", $00 7E/667E: .DW $445A \ .DB $24, $00, "music", $00 7E/6688: .DW $44D2 \ .DB $20, $00, "NOBUO UEMATSU", $00 7E/669A: .DW $4452 \ .DB $24, $03, "image designer", $00 7E/66AD: .DW $44D0 \ .DB $20, $03, "YOSHITAKA AMANO", $00 7E/66C1: .DW $4452 \ .DB $24, $04, "battle planner", $00 7E/66D4: .DW $44D0 \ .DB $20, $04, "YASUYUKI HASEBE", $FE .DB " AKIYOSHI OOTA", $00 7E/66F7: .DW $4452 \ .DB $24, $05, "field planner", $00 7E/6709: .DW $44CE \ .DB $20, $05, "YOSHIHIKO MAEKAWA", $FE .DB " KEITA ETOH", $00 7E/672E: .DW $44CE \ .DB $20, $02, " SATORU TSUJI", $FE .DB " HIDETOSHI KEZUKA", $00 7E/6754: .DW $4452 \ .DB $24, $06, "event planner", $00 7E/6766: .DW $44CE \ .DB $20, $06, " TSUKASA FUJITA", $FE .DB "KEISUKE MATSUHARA", $00 7E/678D: .DW $444E \ .DB $24, $06, "effect programmer", $00 7E/67A3: .DW $44D2 \ .DB $20, $06, "HIROSHI HARATA", $FE .DB "SATOSHI OGATA", $00 7E/67C4: .DW $444E \ .DB $24, $05, "battle programmer", $00 7E/67DA: .DW $44CE \ .DB $20, $05, "AKIHIRO YAMAGUCHI", $00 7E/67F0: .DW $4450 \ .DB $24, $03, "sound programmer", $00 7E/6805: .DW $44D4 \ .DB $20, $03, "MINORU AKAO", $00 7E/6815: .DW $4448 \ .DB $24, $02, "effect graphic designer", $00 7E/6831: .DW $44D0 \ .DB $20, $02, "HIROKATSU SASAKI", $00 7E/6846: .DW $444A \ .DB $24, $04, "field graphic designer", $00 7E/6861: .DW $44D0 \ .DB $20, $03, "TAKAHARU MATSUO", $FE .DB " YUSUKE NAORA", $FE .DB " NOBUYUKI IKEDA", $00 7E/6894: .DW $44CE \ .DB $20, $07, " TOMOE INAZAWA", $FE .DB " KAORI TANAKA", $FE .DB "TAKAMICHI SHIBUYA", $00 7E/68CA: .DW $44CC \ .DB $20, $01, "SHINICHIROU HAMASAKA", $FE .DB " AKIYOSHI MASUDA", $00 7E/68F5: .DW $4448 \ .DB $24, $00, "monster graphic designer", $00 7E/6912: .DW $44D2 \ .DB $20, $00, "HITOSHI SASAKI", $00 7E/6925: .DW $4446 \ .DB $24, $05, "object graphic designer", $00 7E/6941: .DW $44CE \ .DB $20, $05, "KAZUHIRO OHKAWA", $00 7E/6955: .DW $4452 \ .DB $24, $03, "sound engineer", $00 7E/6968: .DW $44D2 \ .DB $20, $03, "EIJI NAKAMURA", $00 7E/697A: .DW $4452 \ .DB $24, $03, "remake planner", $00 7E/698D: .DW $44D6 \ .DB $20, $03, "WEIMIN LI", $FE .DB " AIKO ITO", $00 7E/69A5: .DW $4458 \ .DB $24, $03, "translator", $00 7E/69B4: .DW $44D6 \ .DB $20, $03, "TED WOOLSEY", $00 ; [ Floating Island ] 7E/69C4: 08 PHP 7E/69C5: C2 30 REP #$30 7E/69C7: 48 PHA 7E/69C8: DA PHX 7E/69C9: 5A PHY 7E/69CA: 8B PHB 7E/69CB: 0B PHD 7E/69CC: 20 2F 50 JSR $502F 7E/69CF: 20 E1 69 JSR $69E1 7E/69D2: 20 10 6A JSR $6A10 7E/69D5: 20 4E 50 JSR $504E 7E/69D8: C2 30 REP #$30 7E/69DA: 2B PLD 7E/69DB: AB PLB 7E/69DC: 7A PLY 7E/69DD: FA PLX 7E/69DE: 68 PLA 7E/69DF: 28 PLP 7E/69E0: 6B RTL 7E/69E1: 20 11 77 JSR $7711 7E/69E4: 20 F4 69 JSR $69F4 7E/69E7: 20 15 78 JSR $7815 7E/69EA: 20 4F 78 JSR $784F 7E/69ED: 20 85 74 JSR $7485 7E/69F0: 20 E5 6B JSR $6BE5 7E/69F3: 60 RTS 7E/69F4: 8B PHB 7E/69F5: A9 00 LDA #$00 7E/69F7: 48 PHA 7E/69F8: AB PLB 7E/69F9: A9 03 LDA #$03 7E/69FB: 8D 01 21 STA $2101 7E/69FE: A6 00 LDX $00 7E/6A00: 8E 02 21 STX $2102 7E/6A03: A9 07 LDA #$07 7E/6A05: 8D 05 21 STA $2105 7E/6A08: 7B TDC 7E/6A09: A9 80 LDA #$80 7E/6A0B: 8D 1A 21 STA $211A 7E/6A0E: AB PLB 7E/6A0F: 60 RTS 7E/6A10: 7B TDC 7E/6A11: A5 19 LDA $19 7E/6A13: 30 0D BMI $6A22 7E/6A15: 0A ASL 7E/6A16: AA TAX 7E/6A17: FC 3C 6A JSR ($6A3C,X) 7E/6A1A: 20 0F 75 JSR $750F 7E/6A1D: 20 FD 71 JSR $71FD 7E/6A20: 80 EE BRA $6A10 7E/6A22: A0 0F 00 LDY #$000F 7E/6A25: 84 15 STY $15 7E/6A27: A9 00 LDA #$00 7E/6A29: A0 A0 55 LDY #$55A0 7E/6A2C: 20 DC 74 JSR $74DC 7E/6A2F: A4 15 LDY $15 7E/6A31: F0 08 BEQ $6A3B 7E/6A33: 20 0F 75 JSR $750F 7E/6A36: 20 FD 71 JSR $71FD 7E/6A39: 80 F4 BRA $6A2F 7E/6A3B: 60 RTS 7E/6A3C: .DW $6A48, $6A87, $6A9E, $6AAD, $6ABC, $6AC6 7E/6A48: 20 C3 6B JSR $6BC3 7E/6A4B: A2 00 31 LDX #$3100 7E/6A4E: A0 65 74 LDY #$7465 7E/6A51: 20 24 73 JSR $7324 7E/6A54: A2 00 30 LDX #$3000 7E/6A57: A0 65 74 LDY #$7465 7E/6A5A: 20 24 73 JSR $7324 7E/6A5D: A2 00 31 LDX #$3100 7E/6A60: A0 D2 6C LDY #$6CD2 7E/6A63: A9 02 LDA #$02 7E/6A65: 20 3A 73 JSR $733A 7E/6A68: A2 00 30 LDX #$3000 7E/6A6B: A0 D2 6C LDY #$6CD2 7E/6A6E: A9 02 LDA #$02 7E/6A70: 20 3A 73 JSR $733A 7E/6A73: A9 00 LDA #$00 7E/6A75: A0 8C 6B LDY #$6B8C 7E/6A78: 20 DC 74 JSR $74DC 7E/6A7B: E6 19 INC $19 7E/6A7D: A9 0F LDA #$0F 7E/6A7F: 85 32 STA $32 7E/6A81: A0 10 00 LDY #$0010 7E/6A84: 84 15 STY $15 7E/6A86: 60 RTS 7E/6A87: A4 15 LDY $15 7E/6A89: D0 0F BNE $6A9A 7E/6A8B: E6 19 INC $19 7E/6A8D: A0 58 02 LDY #$0258 7E/6A90: 84 15 STY $15 7E/6A92: A9 00 LDA #$00 7E/6A94: A0 18 6B LDY #$6B18 7E/6A97: 20 DC 74 JSR $74DC 7E/6A9A: 20 CF 6A JSR $6ACF 7E/6A9D: 60 RTS 7E/6A9E: A4 15 LDY $15 7E/6AA0: D0 07 BNE $6AA9 7E/6AA2: E6 19 INC $19 7E/6AA4: A0 3C 00 LDY #$003C 7E/6AA7: 84 15 STY $15 7E/6AA9: 20 CF 6A JSR $6ACF 7E/6AAC: 60 RTS 7E/6AAD: A4 15 LDY $15 7E/6AAF: D0 07 BNE $6AB8 7E/6AB1: E6 19 INC $19 7E/6AB3: A0 01 00 LDY #$0001 7E/6AB6: 84 15 STY $15 7E/6AB8: 20 CF 6A JSR $6ACF 7E/6ABB: 60 RTS 7E/6ABC: A4 15 LDY $15 7E/6ABE: D0 02 BNE $6AC2 7E/6AC0: E6 19 INC $19 7E/6AC2: 20 CF 6A JSR $6ACF 7E/6AC5: 60 RTS 7E/6AC6: A9 FF LDA #$FF 7E/6AC8: 85 19 STA $19 7E/6ACA: 7B TDC 7E/6ACB: 8D 00 02 STA $0200 7E/6ACE: 60 RTS 7E/6ACF: A5 3F LDA $3F 7E/6AD1: 8F 1F 21 00 STA $00211F 7E/6AD5: A5 40 LDA $40 7E/6AD7: 8F 1F 21 00 STA $00211F 7E/6ADB: A5 41 LDA $41 7E/6ADD: 8F 20 21 00 STA $002120 7E/6AE1: A5 42 LDA $42 7E/6AE3: 8F 20 21 00 STA $002120 7E/6AE7: A5 44 LDA $44 7E/6AE9: 8F 1B 21 00 STA $00211B 7E/6AED: A5 45 LDA $45 7E/6AEF: 8F 1B 21 00 STA $00211B 7E/6AF3: A5 46 LDA $46 7E/6AF5: 8F 1C 21 00 STA $00211C 7E/6AF9: A5 47 LDA $47 7E/6AFB: 8F 1C 21 00 STA $00211C 7E/6AFF: A5 48 LDA $48 7E/6B01: 8F 1D 21 00 STA $00211D 7E/6B05: A5 49 LDA $49 7E/6B07: 8F 1D 21 00 STA $00211D 7E/6B0B: A5 4A LDA $4A 7E/6B0D: 8F 1E 21 00 STA $00211E 7E/6B11: A5 4B LDA $4B 7E/6B13: 8F 1E 21 00 STA $00211E 7E/6B17: 60 RTS 7E/6B18: AA TAX 7E/6B19: 7C 1C 6B JMP ($6B1C,X) 7E/6B1C: .DW $6B20, $6B51 7E/6B20: A6 1D LDX $1D 7E/6B22: FE 00 3A INC $3A00,X 7E/6B25: A9 80 LDA #$80 7E/6B27: 8F 30 21 00 STA $002130 7E/6B2B: A9 57 LDA #$57 7E/6B2D: 8F 31 21 00 STA $002131 7E/6B31: A9 17 LDA #$17 7E/6B33: 8F 2C 21 00 STA $00212C 7E/6B37: A9 17 LDA #$17 7E/6B39: 8F 2D 21 00 STA $00212D 7E/6B3D: A9 88 LDA #$88 7E/6B3F: 9D 01 33 STA $3301,X 7E/6B42: A9 20 LDA #$20 7E/6B44: 9D 02 33 STA $3302,X 7E/6B47: A9 42 LDA #$42 7E/6B49: 9D 01 34 STA $3401,X 7E/6B4C: A9 20 LDA #$20 7E/6B4E: 9D 00 36 STA $3600,X 7E/6B51: A6 1D LDX $1D 7E/6B53: BD 00 36 LDA $3600,X 7E/6B56: D0 2F BNE $6B87 7E/6B58: BD 01 33 LDA $3301,X 7E/6B5B: C9 97 CMP #$97 7E/6B5D: B0 07 BCS $6B66 7E/6B5F: 8F 32 21 00 STA $002132 7E/6B63: FE 01 33 INC $3301,X 7E/6B66: BD 02 33 LDA $3302,X 7E/6B69: C9 8F CMP #$8F 7E/6B6B: B0 07 BCS $6B74 7E/6B6D: 8F 32 21 00 STA $002132 7E/6B71: FE 02 33 INC $3302,X 7E/6B74: BD 01 34 LDA $3401,X 7E/6B77: C9 91 CMP #$91 7E/6B79: B0 07 BCS $6B82 7E/6B7B: 8F 32 21 00 STA $002132 7E/6B7F: FE 01 34 INC $3401,X 7E/6B82: A9 20 LDA #$20 7E/6B84: 9D 00 36 STA $3600,X 7E/6B87: DE 00 36 DEC $3600,X 7E/6B8A: 38 SEC 7E/6B8B: 60 RTS 7E/6B8C: 20 9D 6B JSR $6B9D 7E/6B8F: A5 18 LDA $18 7E/6B91: 29 07 AND #$07 7E/6B93: D0 06 BNE $6B9B 7E/6B95: C2 20 REP #$20 7E/6B97: E6 27 INC $27 7E/6B99: E2 20 SEP #$20 7E/6B9B: 38 SEC 7E/6B9C: 60 RTS 7E/6B9D: A5 19 LDA $19 7E/6B9F: C9 03 CMP #$03 7E/6BA1: F0 0A BEQ $6BAD 7E/6BA3: C9 04 CMP #$04 7E/6BA5: F0 0F BEQ $6BB6 7E/6BA7: A5 18 LDA $18 7E/6BA9: 29 01 AND #$01 7E/6BAB: D0 08 BNE $6BB5 7E/6BAD: C2 20 REP #$20 7E/6BAF: E6 44 INC $44 7E/6BB1: E6 4A INC $4A 7E/6BB3: E2 20 SEP #$20 7E/6BB5: 60 RTS 7E/6BB6: C2 20 REP #$20 7E/6BB8: E6 44 INC $44 7E/6BBA: E6 44 INC $44 7E/6BBC: E6 4A INC $4A 7E/6BBE: E6 4A INC $4A 7E/6BC0: E2 20 SEP #$20 7E/6BC2: 60 RTS 7E/6BC3: A0 40 00 LDY #$0040 7E/6BC6: 84 3F STY $3F 7E/6BC8: A0 20 00 LDY #$0020 7E/6BCB: 84 41 STY $41 7E/6BCD: A0 A0 FF LDY #$FFA0 7E/6BD0: 84 25 STY $25 7E/6BD2: A0 C0 FF LDY #$FFC0 7E/6BD5: 84 27 STY $27 7E/6BD7: 7B TDC 7E/6BD8: A8 TAY 7E/6BD9: 84 46 STY $46 7E/6BDB: 84 48 STY $48 7E/6BDD: A0 01 00 LDY #$0001 7E/6BE0: 84 44 STY $44 7E/6BE2: 84 4A STY $4A 7E/6BE4: 60 RTS 7E/6BE5: A0 96 4E LDY #$4E96 7E/6BE8: 84 F3 STY $F3 7E/6BEA: A9 D9 LDA #$D9 7E/6BEC: 85 F5 STA $F5 7E/6BEE: A0 00 00 LDY #$0000 7E/6BF1: 84 F6 STY $F6 7E/6BF3: A9 7F LDA #$7F 7E/6BF5: 85 F8 STA $F8 7E/6BF7: 22 6D FF C2 JSL $C2FF6D ; decompress 7E/6BFB: A0 00 00 LDY #$0000 7E/6BFE: 84 E7 STY $E7 7E/6C00: A9 7F LDA #$7F 7E/6C02: 85 E9 STA $E9 7E/6C04: A0 00 98 LDY #$9800 7E/6C07: 84 EB STY $EB 7E/6C09: A9 7F LDA #$7F 7E/6C0B: 85 ED STA $ED 7E/6C0D: A0 C0 07 LDY #$07C0 7E/6C10: 84 EF STY $EF 7E/6C12: 20 CC 62 JSR $62CC 7E/6C15: A9 40 LDA #$40 7E/6C17: 85 ED STA $ED 7E/6C19: A2 00 98 LDX #$9800 7E/6C1C: A9 7F LDA #$7F 7E/6C1E: 20 7A 6C JSR $6C7A 7E/6C21: 20 3D 6C JSR $6C3D 7E/6C24: A0 00 B8 LDY #$B800 7E/6C27: 84 E7 STY $E7 7E/6C29: A9 7F LDA #$7F 7E/6C2B: 85 E9 STA $E9 7E/6C2D: 64 ED STZ $ED 7E/6C2F: 64 EE STZ $EE 7E/6C31: A0 00 20 LDY #$2000 7E/6C34: 84 EB STY $EB 7E/6C36: A0 00 00 LDY #$0000 7E/6C39: 20 18 7A JSR $7A18 7E/6C3C: 60 RTS 7E/6C3D: 8B PHB 7E/6C3E: A9 7F LDA #$7F 7E/6C40: 48 PHA 7E/6C41: AB PLB 7E/6C42: 7B TDC 7E/6C43: AA TAX 7E/6C44: 9D 00 B8 STA $B800,X 7E/6C47: E8 INX 7E/6C48: E8 INX 7E/6C49: E0 00 20 CPX #$2000 7E/6C4C: D0 F6 BNE $6C44 7E/6C4E: 7B TDC 7E/6C4F: A8 TAY 7E/6C50: 84 E7 STY $E7 7E/6C52: A9 0A LDA #$0A 7E/6C54: 85 E0 STA $E0 7E/6C56: A9 20 LDA #$20 7E/6C58: 85 E1 STA $E1 7E/6C5A: A6 E7 LDX $E7 7E/6C5C: B9 C0 07 LDA $07C0,Y 7E/6C5F: 9D 00 B8 STA $B800,X 7E/6C62: C8 INY 7E/6C63: E8 INX 7E/6C64: E8 INX 7E/6C65: C6 E1 DEC $E1 7E/6C67: D0 F3 BNE $6C5C 7E/6C69: C2 21 REP #$21 7E/6C6B: A5 E7 LDA $E7 7E/6C6D: 69 00 01 ADC #$0100 7E/6C70: 85 E7 STA $E7 7E/6C72: E2 20 SEP #$20 7E/6C74: C6 E0 DEC $E0 7E/6C76: D0 DE BNE $6C56 7E/6C78: AB PLB 7E/6C79: 60 RTS 7E/6C7A: 85 E9 STA $E9 7E/6C7C: 86 E7 STX $E7 7E/6C7E: 8B PHB 7E/6C7F: A9 7F LDA #$7F 7E/6C81: 48 PHA 7E/6C82: AB PLB 7E/6C83: 7B TDC 7E/6C84: AA TAX 7E/6C85: A9 08 LDA #$08 7E/6C87: 85 E6 STA $E6 7E/6C89: C2 20 REP #$20 7E/6C8B: A0 10 00 LDY #$0010 7E/6C8E: A7 E7 LDA [$E7] 7E/6C90: 85 F1 STA $F1 7E/6C92: B7 E7 LDA [$E7],Y 7E/6C94: 85 EF STA $EF 7E/6C96: 7B TDC 7E/6C97: E2 20 SEP #$20 7E/6C99: A0 08 00 LDY #$0008 7E/6C9C: 7B TDC 7E/6C9D: 06 F0 ASL $F0 7E/6C9F: 2A ROL 7E/6CA0: 06 EF ASL $EF 7E/6CA2: 2A ROL 7E/6CA3: 06 F2 ASL $F2 7E/6CA5: 2A ROL 7E/6CA6: 06 F1 ASL $F1 7E/6CA8: 2A ROL 7E/6CA9: 29 0F AND #$0F 7E/6CAB: F0 00 BEQ $6CAD 7E/6CAD: 9D 01 B8 STA $B801,X 7E/6CB0: E8 INX 7E/6CB1: E8 INX 7E/6CB2: 88 DEY 7E/6CB3: D0 E7 BNE $6C9C 7E/6CB5: A4 E7 LDY $E7 7E/6CB7: C8 INY 7E/6CB8: C8 INY 7E/6CB9: 84 E7 STY $E7 7E/6CBB: C6 E6 DEC $E6 7E/6CBD: D0 CA BNE $6C89 7E/6CBF: C2 20 REP #$20 7E/6CC1: A5 E7 LDA $E7 7E/6CC3: 18 CLC 7E/6CC4: 69 10 00 ADC #$0010 7E/6CC7: 85 E7 STA $E7 7E/6CC9: 7B TDC 7E/6CCA: E2 20 SEP #$20 7E/6CCC: C6 ED DEC $ED 7E/6CCE: D0 B5 BNE $6C85 7E/6CD0: AB PLB 7E/6CD1: 60 RTS ; palette for floating island cinematic 7E/6CD2: .DW $5E2F, $3E76, $298E, $210A, $1CC8, $1486, $1464, $1043 7E/6CE2: .DW $0C23, $0422, $0000, $0000, $0000, $0000, $0000, $18A4 ; [ World of Ruin ] 7E/6CF2: 08 PHP 7E/6CF3: C2 30 REP #$30 7E/6CF5: 48 PHA 7E/6CF6: DA PHX 7E/6CF7: 5A PHY 7E/6CF8: 8B PHB 7E/6CF9: 0B PHD 7E/6CFA: 20 2F 50 JSR $502F 7E/6CFD: 20 0F 6D JSR $6D0F 7E/6D00: 20 47 6D JSR $6D47 7E/6D03: 20 4E 50 JSR $504E 7E/6D06: C2 30 REP #$30 7E/6D08: 2B PLD 7E/6D09: AB PLB 7E/6D0A: 7A PLY 7E/6D0B: FA PLX 7E/6D0C: 68 PLA 7E/6D0D: 28 PLP 7E/6D0E: 6B RTL 7E/6D0F: 20 11 77 JSR $7711 7E/6D12: 20 22 6D JSR $6D22 7E/6D15: 20 15 78 JSR $7815 7E/6D18: 20 4F 78 JSR $784F 7E/6D1B: 20 85 74 JSR $7485 7E/6D1E: 20 FB 6F JSR $6FFB 7E/6D21: 60 RTS 7E/6D22: 8B PHB 7E/6D23: A9 00 LDA #$00 7E/6D25: 48 PHA 7E/6D26: AB PLB 7E/6D27: A9 03 LDA #$03 7E/6D29: 8D 01 21 STA $2101 7E/6D2C: A9 82 LDA #$82 7E/6D2E: 8D 30 21 STA $2130 7E/6D31: A9 50 LDA #$50 7E/6D33: 8D 31 21 STA $2131 7E/6D36: A9 17 LDA #$17 7E/6D38: 8D 2C 21 STA $212C 7E/6D3B: A9 01 LDA #$01 7E/6D3D: 8D 2D 21 STA $212D 7E/6D40: A9 E0 LDA #$E0 7E/6D42: 8D 32 21 STA $2132 7E/6D45: AB PLB 7E/6D46: 60 RTS 7E/6D47: 7B TDC 7E/6D48: A5 19 LDA $19 7E/6D4A: 30 0D BMI $6D59 7E/6D4C: 0A ASL 7E/6D4D: AA TAX 7E/6D4E: FC 73 6D JSR ($6D73,X) 7E/6D51: 20 0F 75 JSR $750F 7E/6D54: 20 FD 71 JSR $71FD 7E/6D57: 80 EE BRA $6D47 7E/6D59: A0 0F 00 LDY #$000F 7E/6D5C: 84 15 STY $15 7E/6D5E: A9 00 LDA #$00 7E/6D60: A0 A0 55 LDY #$55A0 7E/6D63: 20 DC 74 JSR $74DC 7E/6D66: A4 15 LDY $15 7E/6D68: F0 08 BEQ $6D72 7E/6D6A: 20 0F 75 JSR $750F 7E/6D6D: 20 FD 71 JSR $71FD 7E/6D70: 80 F4 BRA $6D66 7E/6D72: 60 RTS 7E/6D73: .DW $6D7D, $6E27, $6E41, $6E74, $6E81 7E/6D7D: 64 34 STZ $34 7E/6D7F: A9 80 LDA #$80 7E/6D81: 85 35 STA $35 7E/6D83: A2 00 30 LDX #$3000 7E/6D86: A0 65 74 LDY #$7465 7E/6D89: 20 24 73 JSR $7324 7E/6D8C: A2 80 31 LDX #$3180 7E/6D8F: A0 65 74 LDY #$7465 7E/6D92: 20 24 73 JSR $7324 7E/6D95: A2 A0 31 LDX #$31A0 7E/6D98: A0 65 74 LDY #$7465 7E/6D9B: 20 24 73 JSR $7324 7E/6D9E: A2 00 30 LDX #$3000 7E/6DA1: A0 7D 71 LDY #$717D 7E/6DA4: A9 04 LDA #$04 7E/6DA6: 20 3A 73 JSR $733A 7E/6DA9: A2 80 31 LDX #$3180 7E/6DAC: A0 BD 71 LDY #$71BD 7E/6DAF: A9 04 LDA #$04 7E/6DB1: 20 3A 73 JSR $733A 7E/6DB4: A2 A0 31 LDX #$31A0 7E/6DB7: A0 DD 71 LDY #$71DD 7E/6DBA: A9 04 LDA #$04 7E/6DBC: 20 3A 73 JSR $733A 7E/6DBF: A9 02 LDA #$02 7E/6DC1: A0 FD 6E LDY #$6EFD 7E/6DC4: 20 DC 74 JSR $74DC 7E/6DC7: C2 20 REP #$20 7E/6DC9: A9 7A 70 LDA #$707A 7E/6DCC: 9D 00 35 STA $3500,X 7E/6DCF: A9 FC FF LDA #$FFFC 7E/6DD2: 9D 00 38 STA $3800,X 7E/6DD5: A9 04 00 LDA #$0004 7E/6DD8: 9D 00 37 STA $3700,X 7E/6DDB: A9 68 01 LDA #$0168 7E/6DDE: 9D 00 36 STA $3600,X 7E/6DE1: E2 20 SEP #$20 7E/6DE3: A9 72 LDA #$72 7E/6DE5: 9D 01 33 STA $3301,X 7E/6DE8: A9 80 LDA #$80 7E/6DEA: 9D 01 34 STA $3401,X 7E/6DED: A9 02 LDA #$02 7E/6DEF: A0 FD 6E LDY #$6EFD 7E/6DF2: 20 DC 74 JSR $74DC 7E/6DF5: C2 20 REP #$20 7E/6DF7: A9 A6 70 LDA #$70A6 7E/6DFA: 9D 00 35 STA $3500,X 7E/6DFD: A9 04 00 LDA #$0004 7E/6E00: 9D 00 38 STA $3800,X 7E/6E03: A9 FE FF LDA #$FFFE 7E/6E06: 9D 00 37 STA $3700,X 7E/6E09: A9 68 01 LDA #$0168 7E/6E0C: 9D 00 36 STA $3600,X 7E/6E0F: E2 20 SEP #$20 7E/6E11: A9 50 LDA #$50 7E/6E13: 9D 01 33 STA $3301,X 7E/6E16: A9 A0 LDA #$A0 7E/6E18: 9D 01 34 STA $3401,X 7E/6E1B: E6 19 INC $19 7E/6E1D: A9 0F LDA #$0F 7E/6E1F: 85 32 STA $32 7E/6E21: A0 B4 00 LDY #$00B4 7E/6E24: 84 15 STY $15 7E/6E26: 60 RTS 7E/6E27: A4 15 LDY $15 7E/6E29: D0 0F BNE $6E3A 7E/6E2B: E6 19 INC $19 7E/6E2D: A0 38 04 LDY #$0438 7E/6E30: 84 15 STY $15 7E/6E32: A9 00 LDA #$00 7E/6E34: A0 8A 6E LDY #$6E8A 7E/6E37: 20 DC 74 JSR $74DC 7E/6E3A: 20 97 6F JSR $6F97 7E/6E3D: 20 4C 6F JSR $6F4C 7E/6E40: 60 RTS 7E/6E41: A4 15 LDY $15 7E/6E43: D0 28 BNE $6E6D 7E/6E45: E6 19 INC $19 7E/6E47: A0 B4 00 LDY #$00B4 7E/6E4A: 84 15 STY $15 7E/6E4C: A2 00 30 LDX #$3000 7E/6E4F: A0 65 74 LDY #$7465 7E/6E52: A9 08 LDA #$08 7E/6E54: 20 3A 73 JSR $733A 7E/6E57: A2 80 31 LDX #$3180 7E/6E5A: A0 65 74 LDY #$7465 7E/6E5D: A9 08 LDA #$08 7E/6E5F: 20 3A 73 JSR $733A 7E/6E62: A2 A0 31 LDX #$31A0 7E/6E65: A0 65 74 LDY #$7465 7E/6E68: A9 08 LDA #$08 7E/6E6A: 20 3A 73 JSR $733A 7E/6E6D: 20 97 6F JSR $6F97 7E/6E70: 20 4C 6F JSR $6F4C 7E/6E73: 60 RTS 7E/6E74: A4 15 LDY $15 7E/6E76: D0 02 BNE $6E7A 7E/6E78: E6 19 INC $19 7E/6E7A: 20 97 6F JSR $6F97 7E/6E7D: 20 4C 6F JSR $6F4C 7E/6E80: 60 RTS 7E/6E81: A9 FF LDA #$FF 7E/6E83: 85 19 STA $19 7E/6E85: 7B TDC 7E/6E86: 8D 00 02 STA $0200 7E/6E89: 60 RTS 7E/6E8A: AA TAX 7E/6E8B: 7C 8E 6E JMP ($6E8E,X) 7E/6E8E: .DW $6E92, $6E97 7E/6E92: A6 1D LDX $1D 7E/6E94: FE 00 3A INC $3A00,X 7E/6E97: A6 1D LDX $1D 7E/6E99: BD 00 36 LDA $3600,X 7E/6E9C: D0 39 BNE $6ED7 7E/6E9E: BC 00 39 LDY $3900,X 7E/6EA1: 5A PHY 7E/6EA2: A9 00 LDA #$00 7E/6EA4: A0 DB 76 LDY #$76DB 7E/6EA7: 20 DC 74 JSR $74DC 7E/6EAA: 7A PLY 7E/6EAB: C2 20 REP #$20 7E/6EAD: A9 19 71 LDA #$7119 7E/6EB0: 9D 00 35 STA $3500,X 7E/6EB3: E2 20 SEP #$20 7E/6EB5: B9 E9 6E LDA $6EE9,Y 7E/6EB8: 9D 01 33 STA $3301,X 7E/6EBB: C8 INY 7E/6EBC: B9 E9 6E LDA $6EE9,Y 7E/6EBF: 9D 01 34 STA $3401,X 7E/6EC2: C8 INY 7E/6EC3: C0 14 00 CPY #$0014 7E/6EC6: F0 16 BEQ $6EDE 7E/6EC8: A6 1D LDX $1D 7E/6ECA: C2 20 REP #$20 7E/6ECC: 98 TYA 7E/6ECD: 9D 00 39 STA $3900,X 7E/6ED0: E2 20 SEP #$20 7E/6ED2: A9 10 LDA #$10 7E/6ED4: 9D 00 36 STA $3600,X 7E/6ED7: A6 1D LDX $1D 7E/6ED9: DE 00 36 DEC $3600,X 7E/6EDC: 38 SEC 7E/6EDD: 60 RTS 7E/6EDE: A2 80 31 LDX #$3180 7E/6EE1: A0 9D 71 LDY #$719D 7E/6EE4: 20 24 73 JSR $7324 7E/6EE7: 18 CLC 7E/6EE8: 60 RTS 7E/6EE9: .DB $70, $9D, $74, $A0, $78, $9E, $7C, $9D, $80, $9C 7E/6EF3: .DB $84, $9F, $88, $A0, $8C, $9F, $90, $A4, $94, $A5 7E/6EFD: AA TAX 7E/6EFE: 7C 01 6F JMP ($6F01,X) 7E/6F01: .DW $6F05, $6F15 7E/6F05: A6 1D LDX $1D 7E/6F07: FE 00 3A INC $3A00,X 7E/6F0A: 20 5F 75 JSR $755F 7E/6F0D: C2 20 REP #$20 7E/6F0F: A9 94 02 LDA #$0294 7E/6F12: 9D 00 39 STA $3900,X 7E/6F15: A6 1D LDX $1D 7E/6F17: BC 00 39 LDY $3900,X 7E/6F1A: F0 2B BEQ $6F47 7E/6F1C: BC 00 36 LDY $3600,X 7E/6F1F: D0 17 BNE $6F38 7E/6F21: C2 21 REP #$21 7E/6F23: BD 00 33 LDA $3300,X 7E/6F26: 7D 00 37 ADC $3700,X 7E/6F29: 9D 00 33 STA $3300,X 7E/6F2C: BD 00 34 LDA $3400,X 7E/6F2F: 18 CLC 7E/6F30: 7D 00 38 ADC $3800,X 7E/6F33: 9D 00 34 STA $3400,X 7E/6F36: E2 20 SEP #$20 7E/6F38: C2 20 REP #$20 7E/6F3A: DE 00 39 DEC $3900,X 7E/6F3D: BD 00 36 LDA $3600,X 7E/6F40: F0 03 BEQ $6F45 7E/6F42: DE 00 36 DEC $3600,X 7E/6F45: E2 20 SEP #$20 7E/6F47: 20 8D 75 JSR $758D 7E/6F4A: 38 SEC 7E/6F4B: 60 RTS 7E/6F4C: 20 83 6F JSR $6F83 7E/6F4F: 29 1F AND #$1F 7E/6F51: D0 27 BNE $6F7A 7E/6F53: A9 00 LDA #$00 7E/6F55: A0 5A 70 LDY #$705A 7E/6F58: 20 DC 74 JSR $74DC 7E/6F5B: C2 20 REP #$20 7E/6F5D: A9 F6 70 LDA #$70F6 7E/6F60: 9D 00 35 STA $3500,X 7E/6F63: E2 20 SEP #$20 7E/6F65: DA PHX 7E/6F66: 20 83 6F JSR $6F83 7E/6F69: 29 03 AND #$03 7E/6F6B: 0A ASL 7E/6F6C: A8 TAY 7E/6F6D: FA PLX 7E/6F6E: B9 7B 6F LDA $6F7B,Y 7E/6F71: 9D 01 33 STA $3301,X 7E/6F74: B9 7C 6F LDA $6F7C,Y 7E/6F77: 9D 01 34 STA $3401,X 7E/6F7A: 60 RTS 7E/6F7B: .DB $72, $9A, $7A, $92, $62, $AA, $52, $BA 7E/6F83: 7B TDC 7E/6F84: E6 34 INC $34 7E/6F86: A5 34 LDA $34 7E/6F88: AA TAX 7E/6F89: BF 00 FD C0 LDA $C0FD00,X 7E/6F8D: 85 35 STA $35 7E/6F8F: AA TAX 7E/6F90: BF 00 FD C0 LDA $C0FD00,X 7E/6F94: 65 35 ADC $35 7E/6F96: 60 RTS 7E/6F97: 20 83 6F JSR $6F83 7E/6F9A: 29 07 AND #$07 7E/6F9C: D0 2A BNE $6FC8 7E/6F9E: A9 00 LDA #$00 7E/6FA0: A0 5A 70 LDY #$705A 7E/6FA3: 20 DC 74 JSR $74DC 7E/6FA6: C2 20 REP #$20 7E/6FA8: A9 DA 70 LDA #$70DA 7E/6FAB: 9D 00 35 STA $3500,X 7E/6FAE: E2 20 SEP #$20 7E/6FB0: DA PHX 7E/6FB1: 20 83 6F JSR $6F83 7E/6FB4: FA PLX 7E/6FB5: 29 3F AND #$3F 7E/6FB7: 69 68 ADC #$68 7E/6FB9: 9D 01 33 STA $3301,X 7E/6FBC: DA PHX 7E/6FBD: 20 83 6F JSR $6F83 7E/6FC0: FA PLX 7E/6FC1: 29 3F AND #$3F 7E/6FC3: 69 98 ADC #$98 7E/6FC5: 9D 01 34 STA $3401,X 7E/6FC8: 60 RTS 7E/6FC9: 20 83 6F JSR $6F83 7E/6FCC: 29 0F AND #$0F 7E/6FCE: D0 2A BNE $6FFA 7E/6FD0: A9 00 LDA #$00 7E/6FD2: A0 5A 70 LDY #$705A 7E/6FD5: 20 DC 74 JSR $74DC 7E/6FD8: C2 20 REP #$20 7E/6FDA: A9 42 71 LDA #$7142 7E/6FDD: 9D 00 35 STA $3500,X 7E/6FE0: E2 20 SEP #$20 7E/6FE2: DA PHX 7E/6FE3: 20 83 6F JSR $6F83 7E/6FE6: FA PLX 7E/6FE7: 29 1F AND #$1F 7E/6FE9: 69 68 ADC #$68 7E/6FEB: 9D 01 33 STA $3301,X 7E/6FEE: DA PHX 7E/6FEF: 20 83 6F JSR $6F83 7E/6FF2: FA PLX 7E/6FF3: 29 1F AND #$1F 7E/6FF5: 69 98 ADC #$98 7E/6FF7: 9D 01 34 STA $3401,X 7E/6FFA: 60 RTS 7E/6FFB: A0 00 E9 LDY #$E900 ; source = $ECE900 (world getting torn apart graphics) 7E/6FFE: 84 F3 STY $F3 7E/7000: A9 EC LDA #$EC 7E/7002: 85 F5 STA $F5 7E/7004: A0 00 00 LDY #$0000 ; destination = $7F0000 7E/7007: 84 F6 STY $F6 7E/7009: A9 7F LDA #$7F 7E/700B: 85 F8 STA $F8 7E/700D: 22 6D FF C2 JSL $C2FF6D ; decompress 7E/7011: A0 00 00 LDY #$0000 7E/7014: 84 E7 STY $E7 7E/7016: A9 7F LDA #$7F 7E/7018: 85 E9 STA $E9 7E/701A: 64 ED STZ $ED 7E/701C: 64 EE STZ $EE 7E/701E: A0 E0 0F LDY #$0FE0 7E/7021: 84 EB STY $EB 7E/7023: A0 00 30 LDY #$3000 7E/7026: 20 18 7A JSR $7A18 7E/7029: A0 E0 0F LDY #$0FE0 7E/702C: 84 E7 STY $E7 7E/702E: A9 7F LDA #$7F 7E/7030: 85 E9 STA $E9 7E/7032: 64 ED STZ $ED 7E/7034: 64 EE STZ $EE 7E/7036: A0 00 07 LDY #$0700 7E/7039: 84 EB STY $EB 7E/703B: A0 00 00 LDY #$0000 7E/703E: 20 18 7A JSR $7A18 7E/7041: A0 E0 16 LDY #$16E0 7E/7044: 84 E7 STY $E7 7E/7046: A9 7F LDA #$7F 7E/7048: 85 E9 STA $E9 7E/704A: 64 ED STZ $ED 7E/704C: 64 EE STZ $EE 7E/704E: A0 E0 0D LDY #$0DE0 7E/7051: 84 EB STY $EB 7E/7053: A0 00 60 LDY #$6000 7E/7056: 20 18 7A JSR $7A18 7E/7059: 60 RTS 7E/705A: AA TAX 7E/705B: 7C 5E 70 JMP ($705E,X) 7E/705E: .DW $7062, $706A 7E/7062: A6 1D LDX $1D 7E/7064: FE 00 3A INC $3A00,X 7E/7067: 20 5F 75 JSR $755F 7E/706A: A6 1D LDX $1D 7E/706C: BD 01 3B LDA $3B01,X 7E/706F: C9 FE CMP #$FE 7E/7071: F0 05 BEQ $7078 7E/7073: 20 8D 75 JSR $758D 7E/7076: 38 SEC 7E/7077: 60 RTS 7E/7078: 18 CLC 7E/7079: 60 RTS 7E/707A: .DW $707D \ .DB $FE 7E/707D: .DB $0A .DB $90, $00 \ .DW $3812 .DB $A0, $00 \ .DW $3814 .DB $B0, $00 \ .DW $3816 .DB $80, $10 \ .DW $3830 .DB $90, $10 \ .DW $3832 .DB $A0, $10 \ .DW $3834 .DB $B0, $10 \ .DW $3836 .DB $80, $20 \ .DW $3850 .DB $90, $20 \ .DW $3852 .DB $A0, $20 \ .DW $3854 7E/70A6: .DW $70A9 \ .DB $FE 7E/70A9: .DB $0C .DB $80, $18 \ .DW $3810 .DB $90, $00 \ .DW $3818 .DB $A0, $00 \ .DW $381A .DB $B0, $00 \ .DW $381C .DB $C0, $00 \ .DW $381E .DB $90, $10 \ .DW $3838 .DB $A0, $10 \ .DW $383A .DB $B0, $10 \ .DW $383C .DB $C0, $10 \ .DW $383E .DB $A0, $20 \ .DW $385A .DB $B0, $20 \ .DW $385C .DB $C0, $20 \ .DW $385E 7E/70DA: .DW $70E7 \ .DB $08 .DW $70EC \ .DB $08 .DW $70F1 \ .DB $08 .DW $70E6 \ .DB $FE 7E/70E6: .DB $00 7E/70E7: .DB $01 .DB $00, $00 \ .DW $3A00 7E/70EC: .DB $01 .DB $00, $00 \ .DW $3A01 7E/70F1: .DB $01 .DB $00, $00 \ .DW $3A02 7E/70F6: .DW $7102 \ .DB $08 .DW $7107 \ .DB $08 .DW $710C \ .DB $08 .DW $710C \ .DB $FE 7E/7102: .DB $01 .DB $04, $04 \ .DW $3A03 7E/7107: .DB $01 .DB $02, $02 \ .DW $3A04 7E/710C: .DB $03 .DB $00, $00 \ .DW $3A05 .DB $08, $00 \ .DW $3A06 .DB $00, $08 \ .DW $3A07 7E/7119: .DW $712E \ .DB $08 .DW $7133 \ .DB $08 .DW $7138 \ .DB $08 .DW $713D \ .DB $08 .DW $7138 \ .DB $08 .DW $7133 \ .DB $08 .DW $712E \ .DB $FF 7E/712E: .DB $01 .DB $00, $00 \ .DW $3A08 7E/7133: .DB $01 .DB $00, $00 \ .DW $3A09 7E/7138: .DB $01 .DB $00, $00 \ .DW $3A0A 7E/713D: .DB $01 .DB $00, $00 \ .DW $3A0B 7E/7142: .DW $7151 \ .DB $08 .DW $7156 \ .DB $08 .DW $715F \ .DB $08 .DW $716C \ .DB $08 .DW $716C \ .DB $FE 7E/7151: .DB $01 .DB $00, $00 \ .DW $3A0C 7E/7156: .DB $02 .DB $00, $00 \ .DW $3A0C .DB $08, $00 \ .DW $3A0D 7E/715F: .DB $03 .DB $00, $00 \ .DW $3A0C .DB $08, $00 \ .DW $3A0D .DB $10, $00 \ .DW $3A0E 7E/716C: .DB $03 .DB $00, $00 \ .DW $3A0C .DB $08, $00 \ .DW $3A0D .DB $10, $00 \ .DW $3A0E .DB $18, $00 \ .DW $3A0F ; planet palette (blue) 7E/717D: .DW $1CE7, $7BBD, $777A, $7758, $7317, $6ED4, $668F, $624D 7E/718D: .DW $59E8, $4D86, $3D25, $30E3, $24A3, $1C82, $1862, $1042 ; land palette (green with red edges) 7E/719D: .DW $0000, $26BF, $01FF, $4295, $3632, $3211, $2DF0, $29CF 7E/71AD: .DW $21AE, $1D8D, $194B, $1509, $10C8, $0CA6, $0159, $00B2 ; land palette (green) 7E/71BD: .DW $0000, $29CF, $21AE, $4295, $3632, $3211, $2DF0, $29CF 7E/71CD: .DW $21AE, $1D8D, $194B, $1509, $10C8, $0CA6, $29CF, $21AE ; explosion palette (red) 7E/71DD: .DW $0000, $477F, $26BF, $01FF, $0159, $00B2, $0000, $0000 7E/71ED: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; [ ] title_vsync: 7E/71FD: A9 81 LDA #$81 7E/71FF: 8F 00 42 00 STA $004200 7E/7203: 85 17 STA $17 7E/7205: 58 CLI 7E/7206: A5 17 LDA $17 7E/7208: D0 FC BNE $7206 7E/720A: 78 SEI 7E/720B: A5 32 LDA $32 7E/720D: 8F 00 21 00 STA $002100 7E/7211: A5 31 LDA $31 7E/7213: 8F 0C 42 00 STA $00420C 7E/7217: 20 1B 72 JSR $721B 7E/721A: 60 RTS ; [ ] joy_get_loacl: 7E/721B: C2 20 REP #$20 7E/721D: A5 08 LDA $08 7E/721F: 49 FF FF EOR #$FFFF 7E/7222: 25 04 AND $04 7E/7224: 85 06 STA $06 7E/7226: A4 04 LDY $04 7E/7228: 84 08 STY $08 7E/722A: AF 18 42 00 LDA $004218 7E/722E: 85 04 STA $04 7E/7230: E2 20 SEP #$20 7E/7232: 60 RTS ; [ cinematic nmi ] title_nmi: 7E/7233: 08 PHP 7E/7234: C2 30 REP #$30 7E/7236: 48 PHA 7E/7237: DA PHX 7E/7238: 5A PHY 7E/7239: 8B PHB 7E/723A: 0B PHD 7E/723B: E2 20 SEP #$20 7E/723D: AD 10 42 LDA $4210 7E/7240: A9 00 LDA #$00 7E/7242: 48 PHA 7E/7243: AB PLB 7E/7244: A2 00 00 LDX #$0000 7E/7247: DA PHX 7E/7248: 2B PLD 7E/7249: A5 17 LDA $17 7E/724B: F0 0C BEQ $7259 7E/724D: 20 65 72 JSR $7265 7E/7250: A4 15 LDY $15 7E/7252: F0 03 BEQ $7257 7E/7254: 88 DEY 7E/7255: 84 15 STY $15 7E/7257: E6 18 INC $18 7E/7259: 64 17 STZ $17 7E/725B: C2 30 REP #$30 7E/725D: 2B PLD 7E/725E: AB PLB 7E/725F: 7A PLY 7E/7260: FA PLX 7E/7261: 68 PLA 7E/7262: 28 PLP 7E/7263: 40 RTI ; [ cinematic irq ] title_irq: 7E/7264: 40 RTI ; [ ] title_nmi_main: 7E/7265: 9C 0C 42 STZ $420C 7E/7268: 9C 0B 42 STZ $420B 7E/726B: A5 25 LDA $25 7E/726D: 8D 0D 21 STA $210D 7E/7270: A5 26 LDA $26 7E/7272: 8D 0D 21 STA $210D 7E/7275: A5 27 LDA $27 7E/7277: 8D 0E 21 STA $210E 7E/727A: A5 28 LDA $28 7E/727C: 8D 0E 21 STA $210E 7E/727F: A5 29 LDA $29 7E/7281: 8D 0F 21 STA $210F 7E/7284: A5 2A LDA $2A 7E/7286: 8D 0F 21 STA $210F 7E/7289: A5 2B LDA $2B 7E/728B: 8D 10 21 STA $2110 7E/728E: A5 2C LDA $2C 7E/7290: 8D 10 21 STA $2110 7E/7293: A5 2D LDA $2D 7E/7295: 8D 11 21 STA $2111 7E/7298: A5 2E LDA $2E 7E/729A: 8D 11 21 STA $2111 7E/729D: A5 2F LDA $2F 7E/729F: 8D 12 21 STA $2112 7E/72A2: A5 30 LDA $30 7E/72A4: 8D 12 21 STA $2112 7E/72A7: 20 B0 72 JSR $72B0 7E/72AA: 20 FE 72 JSR $72FE 7E/72AD: 4C D5 72 JMP $72D5 ; [ ] oam_set_local: 7E/72B0: A6 00 LDX $00 7E/72B2: 8E 02 21 STX $2102 7E/72B5: 8A TXA 7E/72B6: 8D 04 43 STA $4304 7E/72B9: A9 02 LDA #$02 7E/72BB: 8D 00 43 STA $4300 7E/72BE: A9 04 LDA #$04 7E/72C0: 8D 01 43 STA $4301 7E/72C3: A0 00 03 LDY #$0300 7E/72C6: 8C 02 43 STY $4302 7E/72C9: A0 20 02 LDY #$0220 7E/72CC: 8C 05 43 STY $4305 7E/72CF: A9 01 LDA #$01 7E/72D1: 8D 0B 42 STA $420B 7E/72D4: 60 RTS ; [ ] stddma_set_local: 7E/72D5: A4 10 LDY $10 7E/72D7: C0 FF FF CPY #$FFFF 7E/72DA: F0 21 BEQ $72FD 7E/72DC: 8C 16 21 STY $2116 7E/72DF: A9 01 LDA #$01 7E/72E1: 8D 00 43 STA $4300 7E/72E4: A9 18 LDA #$18 7E/72E6: 8D 01 43 STA $4301 7E/72E9: A4 12 LDY $12 7E/72EB: 8C 02 43 STY $4302 7E/72EE: A5 14 LDA $14 7E/72F0: 8D 04 43 STA $4304 7E/72F3: A4 0E LDY $0E 7E/72F5: 8C 05 43 STY $4305 7E/72F8: A9 01 LDA #$01 7E/72FA: 8D 0B 42 STA $420B 7E/72FD: 60 RTS ; [ ] coldma_set_local: 7E/72FE: A5 00 LDA $00 7E/7300: 8D 21 21 STA $2121 7E/7303: A9 02 LDA #$02 7E/7305: 8D 00 43 STA $4300 7E/7308: A9 22 LDA #$22 7E/730A: 8D 01 43 STA $4301 7E/730D: A0 00 30 LDY #$3000 7E/7310: 8C 02 43 STY $4302 7E/7313: A9 7E LDA #$7E 7E/7315: 8D 04 43 STA $4304 7E/7318: A0 00 02 LDY #$0200 7E/731B: 8C 05 43 STY $4305 7E/731E: A9 01 LDA #$01 7E/7320: 8D 0B 42 STA $420B 7E/7323: 60 RTS ; [ Load Color Palette ] title_pal_set: 7E/7324: 86 E7 STX $E7 7E/7326: 84 EB STY $EB 7E/7328: A4 00 LDY $00 7E/732A: C2 20 REP #$20 7E/732C: B1 EB LDA ($EB),Y 7E/732E: 91 E7 STA ($E7),Y 7E/7330: C8 INY 7E/7331: C8 INY 7E/7332: C0 20 00 CPY #$0020 7E/7335: D0 F5 BNE $732C 7E/7337: E2 20 SEP #$20 7E/7339: 60 RTS ; [ Create Color Palette Thread ] ; +X = ; +Y = ; A = title_fade_set: 7E/733A: 48 PHA 7E/733B: 86 E7 STX $E7 7E/733D: 84 EB STY $EB 7E/733F: A9 00 LDA #$00 7E/7341: A0 5A 73 LDY #$735A 7E/7344: 20 DC 74 JSR $74DC 7E/7347: 68 PLA 7E/7348: 9D 01 39 STA $3901,X 7E/734B: C2 20 REP #$20 7E/734D: A5 E7 LDA $E7 7E/734F: 9D 00 33 STA $3300,X 7E/7352: A5 EB LDA $EB 7E/7354: 9D 00 34 STA $3400,X 7E/7357: E2 20 SEP #$20 7E/7359: 60 RTS fade_task_tcol: 7E/735A: AA TAX 7E/735B: 7C 5E 73 JMP ($735E,X) 7E/735E: .DW $7362, $7371 7E/7362: A6 1D LDX $1D 7E/7364: A9 1F LDA #$1F 7E/7366: 9D 00 36 STA $3600,X 7E/7369: 9E 01 36 STZ $3601,X 7E/736C: FE 00 3A INC $3A00,X 7E/736F: 38 SEC 7E/7370: 60 RTS 7E/7371: A6 1D LDX $1D 7E/7373: BD 00 39 LDA $3900,X 7E/7376: D0 2B BNE $73A3 7E/7378: BD 01 39 LDA $3901,X 7E/737B: 9D 00 39 STA $3900,X 7E/737E: C2 20 REP #$20 7E/7380: BD 00 33 LDA $3300,X 7E/7383: 85 E0 STA $E0 7E/7385: BD 00 34 LDA $3400,X 7E/7388: 85 E3 STA $E3 7E/738A: BD 00 36 LDA $3600,X 7E/738D: 85 F1 STA $F1 7E/738F: 20 A8 73 JSR $73A8 7E/7392: E2 20 SEP #$20 7E/7394: AE 1D 00 LDX $001D 7E/7397: BD 00 36 LDA $3600,X 7E/739A: F0 05 BEQ $73A1 7E/739C: DE 00 36 DEC $3600,X 7E/739F: D0 02 BNE $73A3 7E/73A1: 18 CLC 7E/73A2: 60 RTS 7E/73A3: DE 00 39 DEC $3900,X 7E/73A6: 38 SEC 7E/73A7: 60 RTS p_fade_1pal_LL006: 7E/73A8: A2 10 00 LDX #$0010 7E/73AB: A4 00 LDY $00 7E/73AD: B1 E0 LDA ($E0),Y 7E/73AF: 85 E7 STA $E7 7E/73B1: B1 E3 LDA ($E3),Y 7E/73B3: 85 E9 STA $E9 7E/73B5: 20 C2 73 JSR $73C2 7E/73B8: A5 E7 LDA $E7 7E/73BA: 91 E0 STA ($E0),Y 7E/73BC: C8 INY 7E/73BD: C8 INY 7E/73BE: CA DEX 7E/73BF: D0 EC BNE $73AD 7E/73C1: 60 RTS 7E/73C2: A5 E7 LDA $E7 7E/73C4: 29 1F 00 AND #$001F 7E/73C7: 85 EB STA $EB 7E/73C9: A5 E9 LDA $E9 7E/73CB: 29 1F 00 AND #$001F 7E/73CE: 38 SEC 7E/73CF: E5 EB SBC $EB 7E/73D1: F0 0C BEQ $73DF 7E/73D3: 90 08 BCC $73DD 7E/73D5: C5 F1 CMP $F1 7E/73D7: 90 06 BCC $73DF 7E/73D9: E6 EB INC $EB 7E/73DB: 80 02 BRA $73DF 7E/73DD: C6 EB DEC $EB 7E/73DF: A5 E7 LDA $E7 7E/73E1: 29 E0 03 AND #$03E0 7E/73E4: 85 ED STA $ED 7E/73E6: A5 E9 LDA $E9 7E/73E8: 29 E0 03 AND #$03E0 7E/73EB: 38 SEC 7E/73EC: E5 ED SBC $ED 7E/73EE: F0 1C BEQ $740C 7E/73F0: 90 12 BCC $7404 7E/73F2: 0A ASL 7E/73F3: 0A ASL 7E/73F4: 0A ASL 7E/73F5: EB XBA 7E/73F6: C5 F1 CMP $F1 7E/73F8: 90 12 BCC $740C 7E/73FA: 18 CLC 7E/73FB: A5 ED LDA $ED 7E/73FD: 69 20 00 ADC #$0020 7E/7400: 85 ED STA $ED 7E/7402: 80 08 BRA $740C 7E/7404: A5 ED LDA $ED 7E/7406: 38 SEC 7E/7407: E9 20 00 SBC #$0020 7E/740A: 85 ED STA $ED 7E/740C: A5 E7 LDA $E7 7E/740E: 29 00 7C AND #$7C00 7E/7411: 85 EF STA $EF 7E/7413: A5 E9 LDA $E9 7E/7415: 29 00 7C AND #$7C00 7E/7418: 38 SEC 7E/7419: E5 EF SBC $EF 7E/741B: F0 1F BEQ $743C 7E/741D: 90 15 BCC $7434 7E/741F: E2 20 SEP #$20 7E/7421: EB XBA 7E/7422: 4A LSR 7E/7423: 4A LSR 7E/7424: C2 20 REP #$20 7E/7426: C5 F1 CMP $F1 7E/7428: 90 12 BCC $743C 7E/742A: 18 CLC 7E/742B: A5 EF LDA $EF 7E/742D: 69 00 04 ADC #$0400 7E/7430: 85 EF STA $EF 7E/7432: 80 08 BRA $743C 7E/7434: A5 EF LDA $EF 7E/7436: 38 SEC 7E/7437: E9 00 04 SBC #$0400 7E/743A: 85 EF STA $EF 7E/743C: A5 EB LDA $EB 7E/743E: 05 ED ORA $ED 7E/7440: 05 EF ORA $EF 7E/7442: 85 E7 STA $E7 7E/7444: 60 RTS 7E/7445: .DW $0000, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF 7E/7455: .DW $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF 7E/7465: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 7E/7475: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; [ reset threads ] title_task_init: 7E/7485: A6 00 LDX $00 7E/7487: 86 1D STX $1D 7E/7489: 86 1F STX $1F 7E/748B: C2 20 REP #$20 7E/748D: 20 B7 74 JSR $74B7 7E/7490: E2 10 SEP #$10 7E/7492: 7B TDC 7E/7493: AA TAX 7E/7494: 9E 00 32 STZ $3200,X 7E/7497: 9E 00 3A STZ $3A00,X 7E/749A: 9E 00 3C STZ $3C00,X 7E/749D: 9E 00 33 STZ $3300,X 7E/74A0: 9E 00 34 STZ $3400,X 7E/74A3: 9E 00 37 STZ $3700,X 7E/74A6: 9E 00 38 STZ $3800,X 7E/74A9: 9E 00 39 STZ $3900,X 7E/74AC: E8 INX 7E/74AD: E8 INX 7E/74AE: E0 00 CPX #$00 7E/74B0: D0 E2 BNE $7494 7E/74B2: E2 20 SEP #$20 7E/74B4: C2 10 REP #$10 7E/74B6: 60 RTS ; [ reset sprite data ] 7E/74B7: 7B TDC 7E/74B8: AA TAX 7E/74B9: A9 01 E0 LDA #$E001 7E/74BC: 9D 00 03 STA $0300,X 7E/74BF: E8 INX 7E/74C0: E8 INX 7E/74C1: A9 01 00 LDA #$0001 7E/74C4: 9D 00 03 STA $0300,X 7E/74C7: E8 INX 7E/74C8: E8 INX 7E/74C9: E0 00 02 CPX #$0200 7E/74CC: D0 EB BNE $74B9 7E/74CE: A4 00 LDY $00 7E/74D0: 98 TYA 7E/74D1: 99 00 05 STA $0500,Y 7E/74D4: C8 INY 7E/74D5: C8 INY 7E/74D6: C0 20 00 CPY #$0020 7E/74D9: D0 F6 BNE $74D1 7E/74DB: 60 RTS title_task_link: 7E/74DC: 20 E9 74 JSR $74E9 7E/74DF: E2 20 SEP #$20 7E/74E1: A5 1D LDA $1D 7E/74E3: 9D 01 3C STA $3C01,X 7E/74E6: E6 1F INC $1F 7E/74E8: 60 RTS buf_calc_local: 7E/74E9: EB XBA 7E/74EA: A9 00 LDA #$00 7E/74EC: EB XBA 7E/74ED: 0A ASL 7E/74EE: 0A ASL 7E/74EF: 0A ASL 7E/74F0: 0A ASL 7E/74F1: 0A ASL 7E/74F2: C2 20 REP #$20 7E/74F4: AA TAX 7E/74F5: BD 00 32 LDA $3200,X 7E/74F8: D0 05 BNE $74FF 7E/74FA: 98 TYA 7E/74FB: 9D 00 32 STA $3200,X 7E/74FE: 60 RTS 7E/74FF: E8 INX 7E/7500: E8 INX 7E/7501: E0 00 01 CPX #$0100 7E/7504: D0 EF BNE $74F5 7E/7506: CA DEX 7E/7507: CA DEX 7E/7508: 98 TYA 7E/7509: 9D 00 32 STA $3200,X 7E/750C: 80 FE BRA $750C 7E/750E: 60 RTS title_task_exec: 7E/750F: A2 00 03 LDX #$0300 7E/7512: 86 0A STX $0A 7E/7514: A2 00 05 LDX #$0500 7E/7517: 86 0C STX $0C 7E/7519: A9 03 LDA #$03 7E/751B: 85 23 STA $23 7E/751D: 64 24 STZ $24 7E/751F: A2 80 00 LDX #$0080 7E/7522: 86 21 STX $21 7E/7524: A6 00 LDX $00 7E/7526: C2 20 REP #$20 7E/7528: BD 00 32 LDA $3200,X 7E/752B: F0 22 BEQ $754F 7E/752D: 86 1D STX $1D 7E/752F: DA PHX 7E/7530: 85 1B STA $1B 7E/7532: E2 20 SEP #$20 7E/7534: 7B TDC 7E/7535: BD 00 3A LDA $3A00,X 7E/7538: 0A ASL 7E/7539: 20 5C 75 JSR $755C 7E/753C: C2 20 REP #$20 7E/753E: FA PLX 7E/753F: B0 0E BCS $754F 7E/7541: 9E 00 32 STZ $3200,X 7E/7544: 9E 00 3A STZ $3A00,X 7E/7547: 9E 00 3C STZ $3C00,X 7E/754A: 9E 00 39 STZ $3900,X 7E/754D: C6 1F DEC $1F 7E/754F: E8 INX 7E/7550: E8 INX 7E/7551: E0 00 01 CPX #$0100 7E/7554: D0 D2 BNE $7528 7E/7556: 20 8F 76 JSR $768F 7E/7559: E2 20 SEP #$20 7E/755B: 60 RTS 7E/755C: 6C 1B 00 JMP ($001B) 7E/755F: 7B TDC 7E/7560: 9D 00 3B STA $3B00,X 7E/7563: C2 20 REP #$20 7E/7565: BD 00 35 LDA $3500,X 7E/7568: 85 EB STA $EB 7E/756A: E2 20 SEP #$20 7E/756C: A0 02 00 LDY #$0002 7E/756F: B1 EB LDA ($EB),Y 7E/7571: 9D 01 3B STA $3B01,X 7E/7574: 60 RTS 7E/7575: DA PHX 7E/7576: 20 93 75 JSR $7593 7E/7579: E2 10 SEP #$10 7E/757B: BD 00 3B LDA $3B00,X 7E/757E: A8 TAY 7E/757F: C2 20 REP #$20 7E/7581: B1 EB LDA ($EB),Y 7E/7583: C2 10 REP #$10 7E/7585: A8 TAY 7E/7586: E2 20 SEP #$20 7E/7588: FA PLX 7E/7589: 20 24 73 JSR $7324 7E/758C: 60 RTS ; [ ] title_obj_put: 7E/758D: 20 93 75 JSR $7593 7E/7590: 4C DA 75 JMP $75DA ; [ ] title_sp_anm_cmd: 7E/7593: A6 1D LDX $1D 7E/7595: A4 00 LDY $00 7E/7597: C2 20 REP #$20 7E/7599: BD 00 35 LDA $3500,X 7E/759C: 85 EB STA $EB 7E/759E: E2 20 SEP #$20 7E/75A0: BD 01 3B LDA $3B01,X 7E/75A3: C9 FE CMP #$FE 7E/75A5: F0 22 BEQ $75C9 7E/75A7: C9 FF CMP #$FF 7E/75A9: D0 08 BNE $75B3 7E/75AB: 9E 00 3B STZ $3B00,X 7E/75AE: 20 CA 75 JSR $75CA 7E/75B1: 80 ED BRA $75A0 7E/75B3: BD 01 3B LDA $3B01,X 7E/75B6: D0 0E BNE $75C6 7E/75B8: BD 00 3B LDA $3B00,X 7E/75BB: 18 CLC 7E/75BC: 69 03 ADC #$03 7E/75BE: 9D 00 3B STA $3B00,X 7E/75C1: 20 CA 75 JSR $75CA 7E/75C4: 80 DA BRA $75A0 7E/75C6: DE 01 3B DEC $3B01,X 7E/75C9: 60 RTS ; [ ] ttask_anm_timeget: 7E/75CA: E2 10 SEP #$10 7E/75CC: BD 00 3B LDA $3B00,X 7E/75CF: A8 TAY 7E/75D0: C8 INY 7E/75D1: C8 INY 7E/75D2: B1 EB LDA ($EB),Y 7E/75D4: 9D 01 3B STA $3B01,X 7E/75D7: C2 10 REP #$10 7E/75D9: 60 RTS ; [ ] objcode_set_local: 7E/75DA: E2 10 SEP #$10 7E/75DC: BD 00 3B LDA $3B00,X 7E/75DF: A8 TAY 7E/75E0: C2 20 REP #$20 7E/75E2: B1 EB LDA ($EB),Y 7E/75E4: 85 E7 STA $E7 7E/75E6: C8 INY 7E/75E7: C8 INY 7E/75E8: E2 20 SEP #$20 7E/75EA: C2 10 REP #$10 7E/75EC: A4 00 LDY $00 7E/75EE: A5 21 LDA $21 7E/75F0: F0 6A BEQ $765C 7E/75F2: B1 E7 LDA ($E7),Y 7E/75F4: 85 E6 STA $E6 7E/75F6: F0 64 BEQ $765C 7E/75F8: C8 INY 7E/75F9: B1 E7 LDA ($E7),Y 7E/75FB: 85 E0 STA $E0 7E/75FD: 10 12 BPL $7611 7E/75FF: 7B TDC 7E/7600: A5 23 LDA $23 7E/7602: AA TAX 7E/7603: BD 8B 76 LDA $768B,X 7E/7606: 18 CLC 7E/7607: 65 24 ADC $24 7E/7609: 85 24 STA $24 7E/760B: 92 0C STA ($0C) 7E/760D: A6 1D LDX $1D 7E/760F: 80 04 BRA $7615 7E/7611: A5 24 LDA $24 7E/7613: 92 0C STA ($0C) 7E/7615: A5 E0 LDA $E0 7E/7617: 29 7F AND #$7F 7E/7619: 85 E0 STA $E0 7E/761B: BD 01 3A LDA $3A01,X 7E/761E: 89 01 BIT #$01 7E/7620: F0 0D BEQ $762F 7E/7622: 64 E1 STZ $E1 7E/7624: C2 20 REP #$20 7E/7626: A5 E0 LDA $E0 7E/7628: 38 SEC 7E/7629: E5 25 SBC $25 7E/762B: 85 E0 STA $E0 7E/762D: E2 20 SEP #$20 7E/762F: 20 5D 76 JSR $765D 7E/7632: C6 23 DEC $23 7E/7634: 10 0A BPL $7640 7E/7636: A9 03 LDA #$03 7E/7638: 85 23 STA $23 7E/763A: 64 24 STZ $24 7E/763C: C2 20 REP #$20 7E/763E: E6 0C INC $0C 7E/7640: C2 20 REP #$20 7E/7642: A5 E0 LDA $E0 7E/7644: 92 0A STA ($0A) 7E/7646: E6 0A INC $0A 7E/7648: E6 0A INC $0A 7E/764A: A5 E2 LDA $E2 7E/764C: 92 0A STA ($0A) 7E/764E: E6 0A INC $0A 7E/7650: E6 0A INC $0A 7E/7652: E2 20 SEP #$20 7E/7654: C6 21 DEC $21 7E/7656: F0 04 BEQ $765C 7E/7658: C6 E6 DEC $E6 7E/765A: D0 9D BNE $75F9 7E/765C: 60 RTS ; [ ] set_data_local: 7E/765D: A5 E0 LDA $E0 7E/765F: 18 CLC 7E/7660: 7D 01 33 ADC $3301,X 7E/7663: 85 E0 STA $E0 7E/7665: C8 INY 7E/7666: B1 E7 LDA ($E7),Y 7E/7668: 18 CLC 7E/7669: 7D 01 34 ADC $3401,X 7E/766C: 85 E1 STA $E1 7E/766E: C8 INY 7E/766F: B1 E7 LDA ($E7),Y 7E/7671: 85 E2 STA $E2 7E/7673: C8 INY 7E/7674: BD 01 3A LDA $3A01,X 7E/7677: 89 02 BIT #$02 7E/7679: F0 06 BEQ $7681 7E/767B: B1 E7 LDA ($E7),Y 7E/767D: 09 40 ORA #$40 7E/767F: 80 02 BRA $7683 7E/7681: B1 E7 LDA ($E7),Y 7E/7683: 18 CLC 7E/7684: 7D 00 3C ADC $3C00,X 7E/7687: 85 E3 STA $E3 7E/7689: C8 INY 7E/768A: 60 RTS 7E/768B: .DB $80, $20, $08, $02 7E/768F: A4 21 LDY $21 7E/7691: F0 10 BEQ $76A3 7E/7693: A2 FC 01 LDX #$01FC 7E/7696: A9 01 E0 LDA #$E001 7E/7699: 9D 00 03 STA $0300,X 7E/769C: CA DEX 7E/769D: CA DEX 7E/769E: CA DEX 7E/769F: CA DEX 7E/76A0: 88 DEY 7E/76A1: D0 F6 BNE $7699 7E/76A3: 60 RTS 7E/76A4: A6 1D LDX $1D 7E/76A6: A4 00 LDY $00 7E/76A8: C2 20 REP #$20 7E/76AA: BD 00 35 LDA $3500,X 7E/76AD: 85 EB STA $EB 7E/76AF: E2 20 SEP #$20 7E/76B1: BD 01 3B LDA $3B01,X 7E/76B4: C9 FE CMP #$FE 7E/76B6: F0 22 BEQ $76DA 7E/76B8: C9 FF CMP #$FF 7E/76BA: D0 08 BNE $76C4 7E/76BC: 9E 00 3B STZ $3B00,X 7E/76BF: 20 CA 75 JSR $75CA 7E/76C2: 80 ED BRA $76B1 7E/76C4: BD 01 3B LDA $3B01,X 7E/76C7: D0 0E BNE $76D7 7E/76C9: BD 00 3B LDA $3B00,X 7E/76CC: 18 CLC 7E/76CD: 69 03 ADC #$03 7E/76CF: 9D 00 3B STA $3B00,X 7E/76D2: 20 CA 75 JSR $75CA 7E/76D5: 80 DA BRA $76B1 7E/76D7: DE 01 3B DEC $3B01,X 7E/76DA: 60 RTS title_obj_std_task: 7E/76DB: AA TAX 7E/76DC: 7C DF 76 JMP ($76DF,X) 7E/76DF: .DW $76E3, $76EB 7E/76E3: A6 1D LDX $1D 7E/76E5: FE 00 3A INC $3A00,X 7E/76E8: 20 5F 75 JSR $755F 7E/76EB: A5 33 LDA $33 7E/76ED: 89 40 BIT #$40 7E/76EF: D0 1E BNE $770F 7E/76F1: A6 1D LDX $1D 7E/76F3: C2 21 REP #$21 7E/76F5: BD 00 33 LDA $3300,X 7E/76F8: 7D 00 37 ADC $3700,X 7E/76FB: 9D 00 33 STA $3300,X 7E/76FE: BD 00 34 LDA $3400,X 7E/7701: 18 CLC 7E/7702: 7D 00 38 ADC $3800,X 7E/7705: 9D 00 34 STA $3400,X 7E/7708: E2 20 SEP #$20 7E/770A: 20 8D 75 JSR $758D 7E/770D: 38 SEC 7E/770E: 60 RTS 7E/770F: 18 CLC 7E/7710: 60 RTS ; [ ] title_ppu_init: 7E/7711: 8B PHB 7E/7712: A9 00 LDA #$00 7E/7714: 48 PHA 7E/7715: AB PLB 7E/7716: 7B TDC 7E/7717: A8 TAY 7E/7718: 8C 81 21 STY $2181 7E/771B: 8C 02 21 STY $2102 7E/771E: 8D 04 21 STA $2104 7E/7721: 8D 04 21 STA $2104 7E/7724: 8D 06 21 STA $2106 7E/7727: 8D 0C 42 STA $420C 7E/772A: 8D 0B 42 STA $420B 7E/772D: 8D 0D 21 STA $210D 7E/7730: 8D 0D 21 STA $210D 7E/7733: 8D 0E 21 STA $210E 7E/7736: 8D 0E 21 STA $210E 7E/7739: 8D 0F 21 STA $210F 7E/773C: 8D 0F 21 STA $210F 7E/773F: 8D 10 21 STA $2110 7E/7742: 8D 10 21 STA $2110 7E/7745: 8D 11 21 STA $2111 7E/7748: 8D 11 21 STA $2111 7E/774B: 8D 12 21 STA $2112 7E/774E: 8D 12 21 STA $2112 7E/7751: 8D 13 21 STA $2113 7E/7754: 8D 13 21 STA $2113 7E/7757: 8D 14 21 STA $2114 7E/775A: 8D 14 21 STA $2114 7E/775D: 8C 16 21 STY $2116 7E/7760: 8C 18 21 STY $2118 7E/7763: 8D 1A 21 STA $211A 7E/7766: 8D 21 21 STA $2121 7E/7769: 8D 22 21 STA $2122 7E/776C: 8D 22 21 STA $2122 7E/776F: 8D 23 21 STA $2123 7E/7772: 8D 24 21 STA $2124 7E/7775: 8D 25 21 STA $2125 7E/7778: 8D 26 21 STA $2126 7E/777B: 8D 28 21 STA $2128 7E/777E: 8D 27 21 STA $2127 7E/7781: 8D 29 21 STA $2129 7E/7784: 8D 2A 21 STA $212A 7E/7787: 8D 2B 21 STA $212B 7E/778A: 8D 2E 21 STA $212E 7E/778D: 8D 2F 21 STA $212F 7E/7790: 8D 33 21 STA $2133 7E/7793: 8D 00 42 STA $4200 7E/7796: 8D 02 42 STA $4202 7E/7799: 8D 03 42 STA $4203 7E/779C: 8D 04 42 STA $4204 7E/779F: 8D 04 42 STA $4204 7E/77A2: 8D 05 42 STA $4205 7E/77A5: 8D 06 42 STA $4206 7E/77A8: 8D 07 42 STA $4207 7E/77AB: 8D 07 42 STA $4207 7E/77AE: 8D 08 42 STA $4208 7E/77B1: 8D 09 42 STA $4209 7E/77B4: 8D 09 42 STA $4209 7E/77B7: 8D 0A 42 STA $420A 7E/77BA: 8D 0B 42 STA $420B 7E/77BD: 8D 0C 42 STA $420C 7E/77C0: A9 63 LDA #$63 7E/77C2: 8D 01 21 STA $2101 7E/77C5: A6 00 LDX $00 7E/77C7: 8E 02 21 STX $2102 7E/77CA: A9 01 LDA #$01 7E/77CC: 8D 05 21 STA $2105 7E/77CF: A9 03 LDA #$03 7E/77D1: 8D 07 21 STA $2107 7E/77D4: A9 11 LDA #$11 7E/77D6: 8D 08 21 STA $2108 7E/77D9: A9 19 LDA #$19 7E/77DB: 8D 09 21 STA $2109 7E/77DE: 8D 0A 21 STA $210A 7E/77E1: A9 23 LDA #$23 7E/77E3: 8D 0B 21 STA $210B 7E/77E6: A9 22 LDA #$22 7E/77E8: 8D 0C 21 STA $210C 7E/77EB: A9 80 LDA #$80 7E/77ED: 8D 15 21 STA $2115 7E/77F0: A9 FF LDA #$FF 7E/77F2: 8D 01 42 STA $4201 7E/77F5: A9 7E LDA #$7E 7E/77F7: 8D 83 21 STA $2183 7E/77FA: A9 1F LDA #$1F 7E/77FC: 8D 2C 21 STA $212C 7E/77FF: A9 04 LDA #$04 7E/7801: 8D 2D 21 STA $212D 7E/7804: A9 02 LDA #$02 7E/7806: 8D 30 21 STA $2130 7E/7809: A9 42 LDA #$42 7E/780B: 8D 31 21 STA $2131 7E/780E: A9 E0 LDA #$E0 7E/7810: 8D 32 21 STA $2132 7E/7813: AB PLB 7E/7814: 60 RTS ; [ ] title_work_init: 7E/7815: 7B TDC 7E/7816: A8 TAY 7E/7817: 84 25 STY $25 7E/7819: 84 27 STY $27 7E/781B: 84 29 STY $29 7E/781D: 84 2B STY $2B 7E/781F: 84 2D STY $2D 7E/7821: 84 2F STY $2F 7E/7823: 84 15 STY $15 7E/7825: 84 04 STY $04 7E/7827: 84 06 STY $06 7E/7829: 84 08 STY $08 7E/782B: 85 33 STA $33 7E/782D: 85 18 STA $18 7E/782F: 85 19 STA $19 7E/7831: 85 1A STA $1A 7E/7833: 85 17 STA $17 7E/7835: 85 31 STA $31 7E/7837: 85 32 STA $32 7E/7839: 85 36 STA $36 7E/783B: 84 12 STY $12 7E/783D: 84 0E STY $0E 7E/783F: A9 7E LDA #$7E 7E/7841: 85 14 STA $14 7E/7843: A0 FF FF LDY #$FFFF 7E/7846: 84 10 STY $10 7E/7848: 20 64 78 JSR $7864 7E/784B: 20 70 78 JSR $7870 7E/784E: 60 RTS ; [ clear vram ] allvram_clear: 7E/784F: C2 20 REP #$20 7E/7851: 7B TDC 7E/7852: 8F 16 21 00 STA $002116 7E/7856: A8 TAY 7E/7857: 8F 18 21 00 STA $002118 7E/785B: C8 INY 7E/785C: C0 00 80 CPY #$8000 7E/785F: D0 F6 BNE $7857 7E/7861: E2 20 SEP #$20 7E/7863: 60 RTS 7E/7864: 7B TDC 7E/7865: AA TAX 7E/7866: 9E 00 3D STZ $3D00,X 7E/7869: E8 INX 7E/786A: E0 80 0A CPX #$0A80 7E/786D: D0 F7 BNE $7866 7E/786F: 60 RTS 7E/7870: C2 20 REP #$20 7E/7872: 7B TDC 7E/7873: AA TAX 7E/7874: A9 1F 01 LDA #$011F 7E/7877: 9D 02 3D STA $3D02,X 7E/787A: E8 INX 7E/787B: E8 INX 7E/787C: E8 INX 7E/787D: E8 INX 7E/787E: E0 80 03 CPX #$0380 7E/7881: D0 F4 BNE $7877 7E/7883: 7B TDC 7E/7884: AA TAX 7E/7885: A9 00 01 LDA #$0100 7E/7888: 9D FC 3D STA $3DFC,X 7E/788B: E8 INX 7E/788C: E8 INX 7E/788D: E8 INX 7E/788E: E8 INX 7E/788F: E0 04 01 CPX #$0104 7E/7892: D0 F4 BNE $7888 7E/7894: E2 20 SEP #$20 7E/7896: 60 RTS 7E/7897: 8B PHB 7E/7898: A9 00 LDA #$00 7E/789A: 48 PHA 7E/789B: AB PLB 7E/789C: A9 43 LDA #$43 7E/789E: 8D 20 43 STA $4320 7E/78A1: 8D 30 43 STA $4330 7E/78A4: 8D 40 43 STA $4340 7E/78A7: A9 7E LDA #$7E 7E/78A9: 8D 24 43 STA $4324 7E/78AC: 8D 34 43 STA $4334 7E/78AF: 8D 44 43 STA $4344 7E/78B2: A9 7E LDA #$7E 7E/78B4: 8D 27 43 STA $4327 7E/78B7: 8D 37 43 STA $4337 7E/78BA: 8D 47 43 STA $4347 7E/78BD: A9 0D LDA #$0D 7E/78BF: 8D 21 43 STA $4321 7E/78C2: A0 E4 78 LDY #$78E4 7E/78C5: 8C 22 43 STY $4322 7E/78C8: A9 0F LDA #$0F 7E/78CA: 8D 31 43 STA $4331 7E/78CD: A0 EB 78 LDY #$78EB 7E/78D0: 8C 32 43 STY $4332 7E/78D3: A9 11 LDA #$11 7E/78D5: 8D 41 43 STA $4341 7E/78D8: A0 F2 78 LDY #$78F2 7E/78DB: 8C 42 43 STY $4342 7E/78DE: A9 1C LDA #$1C 7E/78E0: 04 31 TSB $31 7E/78E2: AB PLB 7E/78E3: 60 RTS 7E/78E4: .DB $E4, $00, $3D .DB $FB, $90, $3E .DB $00 7E/78EB: .DB $E4, $80, $40 .DB $FB, $10, $42 .DB $00 7E/78F2: .DB $E4, $00, $44 .DB $FB, $90, $45 .DB $00 7E/78F9: .DB $68 ; [ Load Title/Intro Graphics ] bggrp1_set: 7E/78FA: 20 01 7A JSR $7A01 ; decompress title/intro graphics 7E/78FD: A0 30 79 LDY #$7930 ; source = $7F7930 (flames tile layout, bg3) 7E/7900: 84 E7 STY $E7 7E/7902: A9 7F LDA #$7F 7E/7904: 85 E9 STA $E9 7E/7906: A0 00 02 LDY #$0200 ; size = $0200 7E/7909: 84 EB STY $EB 7E/790B: A0 00 14 LDY #$1400 ; set palette 5 7E/790E: 84 ED STY $ED 7E/7910: A0 00 19 LDY #$1900 7E/7913: 20 18 7A JSR $7A18 7E/7916: A0 30 7B LDY #$7B30 ; source = $7F7B30 (flames graphics, bg3) 7E/7919: 84 E7 STY $E7 7E/791B: A9 7F LDA #$7F 7E/791D: 85 E9 STA $E9 7E/791F: A0 B0 06 LDY #$06B0 ; size = $06B0 7E/7922: 84 EB STY $EB 7E/7924: 64 ED STZ $ED 7E/7926: 64 EE STZ $EE 7E/7928: A0 00 20 LDY #$2000 7E/792B: 20 18 7A JSR $7A18 7E/792E: A0 E0 81 LDY #$81E0 ; source = $7F81E0 (flames tile layout, bg2) 7E/7931: 84 E7 STY $E7 7E/7933: A9 7F LDA #$7F 7E/7935: 85 E9 STA $E9 7E/7937: A0 00 02 LDY #$0200 ; size = $0200 7E/793A: 84 EB STY $EB 7E/793C: A0 80 00 LDY #$0080 7E/793F: 84 ED STY $ED 7E/7941: A0 00 11 LDY #$1100 7E/7944: 20 18 7A JSR $7A18 7E/7947: A0 C0 1B LDY #$1BC0 ; source = $7F1BC0 (intro tile layout, bg1) 7E/794A: 84 E7 STY $E7 7E/794C: A9 7F LDA #$7F 7E/794E: 85 E9 STA $E9 7E/7950: A0 00 18 LDY #$1800 ; size = $1800 7E/7953: 84 EB STY $EB 7E/7955: 64 ED STZ $ED 7E/7957: 64 EE STZ $EE 7E/7959: A0 00 00 LDY #$0000 7E/795C: 20 18 7A JSR $7A18 7E/795F: A0 C0 33 LDY #$33C0 ; source $7F33C0 (intro graphics) 7E/7962: 84 E7 STY $E7 7E/7964: A9 7F LDA #$7F 7E/7966: 85 E9 STA $E9 7E/7968: A0 00 42 LDY #$4200 ; size = $4200 7E/796B: 84 EB STY $EB 7E/796D: 64 ED STZ $ED 7E/796F: 64 EE STZ $EE 7E/7971: A0 00 40 LDY #$4000 7E/7974: 20 18 7A JSR $7A18 7E/7977: 7B TDC 7E/7978: AA TAX 7E/7979: C2 20 REP #$20 7E/797B: BF E1 DA DF LDA $DFDAE1,X ; pointer to map graphics 75 (clouds from sealed gate) 7E/797F: 18 CLC 7E/7980: 69 00 DB ADC #$DB00 7E/7983: 85 E7 STA $E7 7E/7985: E8 INX 7E/7986: E8 INX 7E/7987: E2 20 SEP #$20 7E/7989: BF E1 DA DF LDA $DFDAE1,X 7E/798D: 69 DF ADC #$DF 7E/798F: 85 E9 STA $E9 7E/7991: A0 00 20 LDY #$2000 ; size = $2000 7E/7994: 84 EB STY $EB 7E/7996: 64 ED STZ $ED 7E/7998: 64 EE STZ $EE 7E/799A: A0 00 30 LDY #$3000 ; destination = $3000 (VRAM) 7E/799D: 20 18 7A JSR $7A18 7E/79A0: A0 E0 83 LDY #$83E0 ; source = $7F83E0 (flames graphics, 4bpp) 7E/79A3: 84 E7 STY $E7 7E/79A5: A9 7F LDA #$7F 7E/79A7: 85 E9 STA $E9 7E/79A9: A0 00 08 LDY #$0800 ; size = $0800 7E/79AC: 84 EB STY $EB 7E/79AE: 64 ED STZ $ED 7E/79B0: 64 EE STZ $EE 7E/79B2: A0 00 28 LDY #$2800 7E/79B5: 20 18 7A JSR $7A18 7E/79B8: 20 33 7A JSR $7A33 7E/79BB: A0 E0 8B LDY #$8BE0 ; source = $7F8BE0 7E/79BE: 84 E7 STY $E7 7E/79C0: A9 7F LDA #$7F 7E/79C2: 85 E9 STA $E9 7E/79C4: A0 00 02 LDY #$0200 ; size = $0200 7E/79C7: 84 EB STY $EB 7E/79C9: A0 77 07 LDY #$0777 7E/79CC: 84 ED STY $ED 7E/79CE: A0 00 05 LDY #$0500 7E/79D1: 20 18 7A JSR $7A18 7E/79D4: A0 E0 8D LDY #$8DE0 ; source = $7F8DE0 7E/79D7: 84 E7 STY $E7 7E/79D9: A9 7F LDA #$7F 7E/79DB: 85 E9 STA $E9 7E/79DD: A0 10 11 LDY #$1110 ; size = $1110 7E/79E0: 84 EB STY $EB 7E/79E2: 64 ED STZ $ED 7E/79E4: 64 EE STZ $EE 7E/79E6: A0 70 67 LDY #$6770 7E/79E9: 20 18 7A JSR $7A18 7E/79EC: A0 F0 9E LDY #$9EF0 ; source = $7F9EF0 7E/79EF: 84 E7 STY $E7 7E/79F1: A9 7F LDA #$7F 7E/79F3: 85 E9 STA $E9 7E/79F5: A0 B8 0F LDY #$0FB8 ; size = $0FB8 7E/79F8: 84 EB STY $EB 7E/79FA: A0 00 70 LDY #$7000 7E/79FD: 20 18 7A JSR $7A18 7E/7A00: 60 RTS ; [ Decompress Title/Intro Graphics ] grp_decode_local: 7E/7A01: A0 00 F0 LDY #$F000 ; $D8F000 (title/intro graphics) 7E/7A04: 84 F3 STY $F3 7E/7A06: A9 D8 LDA #$D8 7E/7A08: 85 F5 STA $F5 7E/7A0A: A0 00 00 LDY #$0000 7E/7A0D: 84 F6 STY $F6 7E/7A0F: A9 7F LDA #$7F 7E/7A11: 85 F8 STA $F8 7E/7A13: 22 6D FF C2 JSL $C2FF6D ; decompress 7E/7A17: 60 RTS ; [ Copy to VRAM ] ; +Y = destination ; ++$E7 = source ; +$EB = size ; +$ED = constant added to each word bggrpset_obj: 7E/7A18: C2 20 REP #$20 7E/7A1A: 98 TYA 7E/7A1B: 8F 16 21 00 STA $002116 7E/7A1F: 7B TDC 7E/7A20: A8 TAY 7E/7A21: B7 E7 LDA [$E7],Y 7E/7A23: 18 CLC 7E/7A24: 65 ED ADC $ED 7E/7A26: 8F 18 21 00 STA $002118 7E/7A2A: C8 INY 7E/7A2B: C8 INY 7E/7A2C: C4 EB CPY $EB 7E/7A2E: D0 F1 BNE $7A21 7E/7A30: E2 20 SEP #$20 7E/7A32: 60 RTS ; [ Clear $0400-$0800 and $0C00-$1000 (VRAM) ] 7E/7A33: C2 20 REP #$20 7E/7A35: A9 00 04 LDA #$0400 7E/7A38: 8F 16 21 00 STA $002116 7E/7A3C: 20 4C 7A JSR $7A4C 7E/7A3F: A9 00 0C LDA #$0C00 7E/7A42: 8F 16 21 00 STA $002116 7E/7A46: 20 4C 7A JSR $7A4C 7E/7A49: E2 20 SEP #$20 7E/7A4B: 60 RTS 7E/7A4C: 7B TDC 7E/7A4D: A8 TAY 7E/7A4E: A9 77 07 LDA #$0777 7E/7A51: 8F 18 21 00 STA $002118 7E/7A55: C8 INY 7E/7A56: C0 00 04 CPY #$0400 7E/7A59: D0 F6 BNE $7A51 7E/7A5B: 60 RTS 7E/7A5C: .DW $7A62 \ .DB $FE 7E/7A5F: .DW $7A97 \ .DB $FE ; "(c)1994 Square" 7E/7A62: .DB $0D .DB $00, $00 \ .DW $3300 .DB $10, $00 \ .DW $3302 .DB $20, $00 \ .DW $3304 .DB $30, $00 \ .DW $3306 .DB $40, $00 \ .DW $3308 ; "Co.,Ltd" .DB $58, $00 \ .DW $332A .DB $68, $00 \ .DW $332C .DB $78, $00 \ .DW $332E ; "LICENSED BY" .DB $00, $10 \ .DW $3320 .DB $10, $10 \ .DW $3322 .DB $20, $10 \ .DW $3324 .DB $30, $10 \ .DW $3326 .DB $40, $10 \ .DW $3328 ; "NINTENDO" 7E/7A97: .DB $04 .DB $00, $10 \ .DW $3340 .DB $10, $10 \ .DW $3342 .DB $20, $10 \ .DW $3344 .DB $30, $10 \ .DW $3346 ; [ Load Magitek March Graphics ] opengrp_set: 7E/7AA8: 20 01 7A JSR $7A01 ; decompress title/intro graphics 7E/7AAB: A0 40 09 LDY #$0940 ; source = $7F0940 (snow graphics) 7E/7AAE: 84 E7 STY $E7 7E/7AB0: A9 7F LDA #$7F 7E/7AB2: 85 E9 STA $E9 7E/7AB4: A0 00 B0 LDY #$B000 ; destination = $7FB000 7E/7AB7: 84 EB STY $EB 7E/7AB9: A9 7F LDA #$7F 7E/7ABB: 85 ED STA $ED 7E/7ABD: A0 00 04 LDY #$0400 ; size $0400 7E/7AC0: 84 EF STY $EF 7E/7AC2: 20 CC 62 JSR $62CC ; copy data 7E/7AC5: A0 00 00 LDY #$0000 ; source = $7F0000 (magitek sprite graphics) 7E/7AC8: 84 E7 STY $E7 7E/7ACA: A9 7F LDA #$7F 7E/7ACC: 85 E9 STA $E9 7E/7ACE: A0 40 09 LDY #$0940 ; size = $0940 7E/7AD1: 84 EB STY $EB 7E/7AD3: 64 ED STZ $ED 7E/7AD5: 64 EE STZ $EE 7E/7AD7: A0 00 64 LDY #$6400 ; destination = $6400 (VRAM) 7E/7ADA: 20 18 7A JSR $7A18 ; copy to VRAM 7E/7ADD: A0 C0 53 LDY #$53C0 ; source = $7F53C0 7E/7AE0: 84 E7 STY $E7 7E/7AE2: A9 7F LDA #$7F 7E/7AE4: 85 E9 STA $E9 7E/7AE6: A0 00 22 LDY #$2200 ; size = $2200 7E/7AE9: 84 EB STY $EB 7E/7AEB: 64 ED STZ $ED 7E/7AED: 64 EE STZ $EE 7E/7AEF: A0 00 40 LDY #$4000 ; destination = $4000 (VRAM) 7E/7AF2: 20 18 7A JSR $7A18 ; copy to VRAM 7E/7AF5: A0 C0 23 LDY #$23C0 ; source = $7F23C0 7E/7AF8: 84 E7 STY $E7 7E/7AFA: A9 7F LDA #$7F 7E/7AFC: 85 E9 STA $E9 7E/7AFE: A0 00 08 LDY #$0800 ; size = $0800 7E/7B01: 84 EB STY $EB 7E/7B03: A0 00 20 LDY #$2000 ; set priority bit 7E/7B06: 84 ED STY $ED 7E/7B08: A0 00 7C LDY #$7C00 ; destination = $7C00 (VRAM) 7E/7B0B: 20 18 7A JSR $7A18 ; copy to VRAM 7E/7B0E: 20 2A 7B JSR $7B2A ; 7E/7B11: A0 C0 75 LDY #$75C0 ; source = $7F75C0 7E/7B14: 84 E7 STY $E7 7E/7B16: A9 7F LDA #$7F 7E/7B18: 85 E9 STA $E9 7E/7B1A: A0 70 03 LDY #$0370 ; size = $0370 7E/7B1D: 84 EB STY $EB 7E/7B1F: 64 ED STZ $ED 7E/7B21: 64 EE STZ $EE 7E/7B23: A0 00 70 LDY #$7000 ; destination = $7000 7E/7B26: 20 18 7A JSR $7A18 ; copy to VRAM 7E/7B29: 60 RTS ; [ ] boxfull: 7E/7B2A: C2 20 REP #$20 7E/7B2C: A9 00 7C LDA #$7C00 ; destination = $7C00 (VRAM) 7E/7B2F: 8F 16 21 00 STA $002116 7E/7B33: A2 20 02 LDX #$0220 7E/7B36: A9 87 3E LDA #$3E87 7E/7B39: 8F 18 21 00 STA $002118 7E/7B3D: CA DEX 7E/7B3E: D0 F9 BNE $7B39 7E/7B40: E2 20 SEP #$20 7E/7B42: 60 RTS ; intro/splash color palettes 7E/7B43: .DW $0000, $0000, $24E8, $2086, $1063, $77BD, $4B5C, $2AFA 7E/7B53: .DW $0000, $2676, $21D4, $15B2, $0000, $0CEB, $1088, $1063 ; black palette 7E/7B63: .DW $1063, $1063, $1063, $1063, $1063, $1063, $1063, $1063 7E/7B73: .DW $1063, $1063, $1063, $1063, $1063, $1063, $1063, $1063 ; flames palette 7E/7B83: .DW $1063, $6F9F, $575F, $46FF, $367E, $261E, $3219, $21BB 7E/7B93: .DW $159B, $1D76, $1136, $10F1, $08B0, $08AD, $088B, $0050 7E/7BA3: .DW $0000, $1063, $77BD, $0000, $0000, $261E, $159B, $10F1 7E/7BB3: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 7E/7BC3: .DW $2108, $1063, $1063, $1063, $0000, $261E, $159B, $10F1 7E/7BD3: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 7E/7BE3: .DW $0000, $1CC6, $1CA5, $1C85, $1884, $1464, $1063, $0000 7E/7BF3: .DW $1063, $0000, $261E, $159B, $10F1, $565B, $45B4, $352E 7E/7C03: .DW $0000, $66DE, $565B, $45B4, $352E, $3108, $2CE8, $28C7 7E/7C13: .DW $24A6, $1CA5, $1884, $1464, $1063, $21BB, $1136, $737F 7E/7C23: .DW $0000, $66DE, $565B, $45B4, $352E, $3108, $2CE8, $28C7 7E/7C33: .DW $24A6, $1CA5, $1884, $1464, $1063, $737F, $737F, $737F ; narshe palette (lights on) 7E/7C43: .DW $0000, $367E, $1136, $0C42, $0841, $45CD, $3D6A, $3528 7E/7C53: .DW $2528, $2CE7, $24E6, $20C5, $18C5, $18A3, $1483, $1063 ; -------------------------------------[ Battle Graphics: Unknown ]------------------------------------- throt_tbl: C2/A800: .DW $0000, $0004, $0005, $0003, $0004, $0005, $0002, $0005 C2/A810: .DW $0001, $0004, $0005, $0003, $0005, $0002, $0003, $0001 C2/A820: .DW $0000, $0004, $0001, $0005, $0003, $0004, $0001, $0005 C2/A830: .DW $0004, $0003, $0002, $0005, $0004, $0003, $0002, $0005 C2/A840: .DW $0000, $0001, $0003, $0004, $0002, $0005, $0004, $0003 C2/A850: .DW $0001, $0005, $0004, $0003, $0002, $0005, $0004, $0005 ; palette data for swdtech menu (grays out attacks that aren't known) sword_level_attr: C2/A860: .DB $21, $21, $21, $21, $21, $21, $21, $21, $25, $25, $25, $25, $25, $25, $25 ; horizontal movement speed for back row (4 battle types, 4 characters each) player_chg_x_offset2: C2/A86F: .DB $02, $02, $02, $02 .DB $FE, $FE, $FE, $FE .DB $00, $00, $00, $00 .DB $02, $02, $FE, $FE ; horizontal movement speed for front row (4 battle types, 4 characters each) player_chg_x_offset: C2/A87F: .DB $FE, $FE, $FE, $FE .DB $02, $02, $02, $02 .DB $00, $00, $00, $00 .DB $FE, $FE, $02, $02 auto_last_tfr: C2/A88F: A5 9A LDA $9A C2/A891: F0 3E BEQ $A8D1 C2/A893: A5 0E LDA $0E C2/A895: 29 07 AND #$07 C2/A897: AA TAX C2/A898: BF E3 E4 C2 LDA $C2E4E3,X C2/A89C: 8F 74 43 00 STA $004374 C2/A8A0: 8A TXA C2/A8A1: 0A ASL C2/A8A2: AA TAX C2/A8A3: C2 20 REP #$20 C2/A8A5: BF C3 E4 C2 LDA $C2E4C3,X C2/A8A9: 8F 16 21 00 STA $002116 C2/A8AD: BF D3 E4 C2 LDA $C2E4D3,X C2/A8B1: 8F 72 43 00 STA $004372 C2/A8B5: A9 00 08 LDA #$0800 C2/A8B8: 8F 75 43 00 STA $004375 C2/A8BC: 7B TDC C2/A8BD: E2 20 SEP #$20 C2/A8BF: A9 01 LDA #$01 C2/A8C1: 8F 70 43 00 STA $004370 C2/A8C5: A9 18 LDA #$18 C2/A8C7: 8F 71 43 00 STA $004371 C2/A8CB: A9 80 LDA #$80 C2/A8CD: 8F 0B 42 00 STA $00420B C2/A8D1: 6B RTL and_data: C2/A8D2: .DW $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF C2/A8E2: .DW $FF7F, $FFFB, $FFEF, $FFDF, $FFFD, $FFF7, $FFFE, $FFBF C2/A8F2: .DW $FDFF, $EFFF, $F7FF, $BFFF, $FEFF, $7FFF, $DFFF, $FBFF C2/A902: .DW $FF7F, $FFFB, $FFEF, $FFDF, $FFFD, $FFF7, $FFFE, $FFBF C2/A912: .DW $FDFF, $EFFF, $F7FF, $BFFF, $FEFF, $7FFF, $DFFF, $FBFF C2/A922: .DW $FF7F, $FFFB, $FFEF, $FFDF, $FFFD, $FFF7, $FFFE, $FFBF C2/A932: .DW $FDFF, $EFFF, $F7FF, $BFFF, $FEFF, $7FFF, $DFFF, $FBFF ; [ ] inc_scr_poi: C2/A942: AE EC EC LDX $ECEC C2/A945: E0 0C 00 CPX #$000C C2/A948: 90 16 BCC $A960 C2/A94A: CE EE EC DEC $ECEE C2/A94D: D0 06 BNE $A955 C2/A94F: A9 04 LDA #$04 C2/A951: 8D EE EC STA $ECEE C2/A954: 60 RTS C2/A955: C2 20 REP #$20 C2/A957: CE B6 64 DEC $64B6 C2/A95A: EE CF 80 INC $80CF C2/A95D: 7B TDC C2/A95E: E2 20 SEP #$20 C2/A960: 60 RTS ; [ ] last_n_wait: C2/A961: 48 PHA C2/A962: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/A966: 68 PLA C2/A967: 3A DEC C2/A968: D0 F7 BNE $A961 C2/A96A: 60 RTS ; [ ] last_mon_clr_long: C2/A96B: E6 9A INC $9A C2/A96D: EE 8B 62 INC $628B C2/A970: A2 FF FF LDX #$FFFF C2/A973: 8E 01 40 STX $4001 C2/A976: 8E 03 40 STX $4003 C2/A979: A9 01 LDA #$01 C2/A97B: 8D EE EC STA $ECEE C2/A97E: EE 0C 7B INC $7B0C ; invalidate character/monster order priority data C2/A981: A9 16 LDA #$16 C2/A983: 8D 8D 89 STA $898D C2/A986: 7B TDC C2/A987: AA TAX C2/A988: BD 00 7F LDA $7F00,X C2/A98B: 9D 60 7E STA $7E60,X C2/A98E: E8 INX C2/A98F: E0 20 00 CPX #$0020 C2/A992: D0 F4 BNE $A988 C2/A994: 7B TDC C2/A995: AA TAX C2/A996: 8B PHB C2/A997: A9 7F LDA #$7F C2/A999: 48 PHA C2/A99A: AB PLB C2/A99B: C2 20 REP #$20 C2/A99D: 9E 00 C4 STZ $C400,X C2/A9A0: E8 INX C2/A9A1: E8 INX C2/A9A2: E0 00 10 CPX #$1000 C2/A9A5: D0 F6 BNE $A99D C2/A9A7: 7B TDC C2/A9A8: AA TAX C2/A9A9: A9 00 2C LDA #$2C00 C2/A9AC: 85 12 STA $12 C2/A9AE: A9 10 00 LDA #$0010 C2/A9B1: 85 10 STA $10 C2/A9B3: A5 12 LDA $12 C2/A9B5: 9D 00 C4 STA $C400,X C2/A9B8: E8 INX C2/A9B9: E8 INX C2/A9BA: 1A INC C2/A9BB: C6 10 DEC $10 C2/A9BD: D0 F6 BNE $A9B5 C2/A9BF: 85 12 STA $12 C2/A9C1: 8A TXA C2/A9C2: 18 CLC C2/A9C3: 69 20 00 ADC #$0020 C2/A9C6: AA TAX C2/A9C7: E0 00 04 CPX #$0400 C2/A9CA: D0 E2 BNE $A9AE C2/A9CC: A9 F0 FF LDA #$FFF0 C2/A9CF: 8F B4 64 7E STA $7E64B4 C2/A9D3: 8F 16 7B 7E STA $7E7B16 C2/A9D7: 8F B6 64 7E STA $7E64B6 C2/A9DB: 8F 18 7B 7E STA $7E7B18 C2/A9DF: 7B TDC C2/A9E0: 8F 1D 7B 7E STA $7E7B1D C2/A9E4: 8F 1F 7B 7E STA $7E7B1F C2/A9E8: E2 20 SEP #$20 C2/A9EA: AB PLB C2/A9EB: A2 00 10 LDX #$1000 C2/A9EE: 86 10 STX $10 C2/A9F0: A2 00 C4 LDX #$C400 C2/A9F3: A0 00 48 LDY #$4800 C2/A9F6: A9 7F LDA #$7F C2/A9F8: 22 89 19 C1 JSL $C11989 C2/A9FC: AD 6F 89 LDA $896F C2/A9FF: 29 AF AND #$AF C2/AA01: 8D 6F 89 STA $896F C2/AA04: A9 4A LDA #$4A C2/AA06: 8D 71 89 STA $8971 C2/AA09: 7B TDC C2/AA0A: AA TAX C2/AA0B: 8E EC EC STX $ECEC C2/AA0E: 8B PHB C2/AA0F: A9 7F LDA #$7F C2/AA11: 48 PHA C2/AA12: AB PLB C2/AA13: C2 20 REP #$20 C2/AA15: 9E 00 C4 STZ $C400,X C2/AA18: E8 INX C2/AA19: E8 INX C2/AA1A: E0 00 20 CPX #$2000 C2/AA1D: D0 F6 BNE $AA15 C2/AA1F: 7B TDC C2/AA20: E2 20 SEP #$20 C2/AA22: AB PLB C2/AA23: 7B TDC C2/AA24: AA TAX C2/AA25: 9D BC EC STA $ECBC,X C2/AA28: 9E CC EC STZ $ECCC,X C2/AA2B: 18 CLC C2/AA2C: 69 04 ADC #$04 C2/AA2E: E8 INX C2/AA2F: E0 10 00 CPX #$0010 C2/AA32: D0 F1 BNE $AA25 C2/AA34: A9 08 LDA #$08 C2/AA36: 20 61 A9 JSR $A961 C2/AA39: A9 17 LDA #$17 C2/AA3B: 8D 8D 89 STA $898D C2/AA3E: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/AA42: 20 42 A9 JSR $A942 C2/AA45: 20 F8 AA JSR $AAF8 C2/AA48: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/AA4C: 20 F8 AA JSR $AAF8 C2/AA4F: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/AA53: 20 42 A9 JSR $A942 C2/AA56: 20 F8 AA JSR $AAF8 C2/AA59: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/AA5D: 20 F8 AA JSR $AAF8 C2/AA60: A2 3F CC LDX #$CC3F C2/AA63: 86 10 STX $10 C2/AA65: A2 00 E2 LDX #$E200 C2/AA68: 86 12 STX $12 C2/AA6A: A9 7F LDA #$7F C2/AA6C: 85 14 STA $14 C2/AA6E: 7B TDC C2/AA6F: AA TAX C2/AA70: BD BC EC LDA $ECBC,X C2/AA73: F0 05 BEQ $AA7A C2/AA75: DE BC EC DEC $ECBC,X C2/AA78: 80 21 BRA $AA9B C2/AA7A: BD CC EC LDA $ECCC,X C2/AA7D: C9 18 CMP #$18 C2/AA7F: B0 1A BCS $AA9B C2/AA81: 0A ASL C2/AA82: DA PHX C2/AA83: AA TAX C2/AA84: 7B TDC C2/AA85: A8 TAY C2/AA86: BF D2 A8 C2 LDA $C2A8D2,X C2/AA8A: 99 DC EC STA $ECDC,Y C2/AA8D: E8 INX C2/AA8E: C8 INY C2/AA8F: C0 10 00 CPY #$0010 C2/AA92: D0 F2 BNE $AA86 C2/AA94: FA PLX C2/AA95: 20 5A AB JSR $AB5A C2/AA98: FE CC EC INC $ECCC,X C2/AA9B: C2 20 REP #$20 C2/AA9D: A5 10 LDA $10 C2/AA9F: 38 SEC C2/AAA0: E9 00 02 SBC #$0200 C2/AAA3: 85 10 STA $10 C2/AAA5: A5 12 LDA $12 C2/AAA7: 38 SEC C2/AAA8: E9 00 02 SBC #$0200 C2/AAAB: 85 12 STA $12 C2/AAAD: 7B TDC C2/AAAE: E2 20 SEP #$20 C2/AAB0: E8 INX C2/AAB1: E0 10 00 CPX #$0010 C2/AAB4: D0 BA BNE $AA70 C2/AAB6: AE EC EC LDX $ECEC C2/AAB9: E8 INX C2/AABA: 8E EC EC STX $ECEC C2/AABD: E0 4A 00 CPX #$004A C2/AAC0: D0 19 BNE $AADB C2/AAC2: DA PHX C2/AAC3: EE ED E9 INC $E9ED ; disable sound effects C2/AAC6: A9 82 LDA #$82 ; spc command $82 (set sound effect volume) C2/AAC8: 8D 00 13 STA $1300 C2/AACB: A9 C0 LDA #$C0 ; set sound effect volume to $C0 C2/AACD: 8D 01 13 STA $1301 C2/AAD0: 9C 02 13 STZ $1302 C2/AAD3: 22 04 00 C5 JSL $C50004 ; spc command C2/AAD7: 9C ED E9 STZ $E9ED ; enable sound effects C2/AADA: FA PLX C2/AADB: E0 5A 00 CPX #$005A C2/AADE: F0 03 BEQ $AAE3 C2/AAE0: 4C 3E AA JMP $AA3E C2/AAE3: A9 80 LDA #$80 C2/AAE5: 20 61 A9 JSR $A961 C2/AAE8: AD F9 E9 LDA $E9F9 C2/AAEB: F0 0A BEQ $AAF7 C2/AAED: A9 10 LDA #$10 C2/AAEF: 20 61 A9 JSR $A961 C2/AAF2: CE F9 E9 DEC $E9F9 C2/AAF5: D0 F6 BNE $AAED C2/AAF7: 6B RTL ; [ ] last_chr_sift: C2/AAF8: 8B PHB C2/AAF9: A9 7F LDA #$7F C2/AAFB: 48 PHA C2/AAFC: AB PLB C2/AAFD: C2 20 REP #$20 C2/AAFF: 7B TDC C2/AB00: AA TAX C2/AB01: 64 18 STZ $18 C2/AB03: A9 00 E2 LDA #$E200 C2/AB06: 18 CLC C2/AB07: 65 18 ADC $18 C2/AB09: 85 10 STA $10 C2/AB0B: A9 0E E0 LDA #$E00E C2/AB0E: 18 CLC C2/AB0F: 65 18 ADC $18 C2/AB11: 85 14 STA $14 C2/AB13: A9 10 00 LDA #$0010 C2/AB16: 85 16 STA $16 C2/AB18: A5 10 LDA $10 C2/AB1A: 1A INC C2/AB1B: 1A INC C2/AB1C: 85 12 STA $12 C2/AB1E: A0 1C 00 LDY #$001C C2/AB21: B1 10 LDA ($10),Y C2/AB23: 91 12 STA ($12),Y C2/AB25: 88 DEY C2/AB26: 88 DEY C2/AB27: 10 F8 BPL $AB21 C2/AB29: B2 14 LDA ($14) C2/AB2B: 92 10 STA ($10) C2/AB2D: A0 10 00 LDY #$0010 C2/AB30: B1 14 LDA ($14),Y C2/AB32: 91 10 STA ($10),Y C2/AB34: A5 10 LDA $10 C2/AB36: 38 SEC C2/AB37: E9 00 02 SBC #$0200 C2/AB3A: 85 10 STA $10 C2/AB3C: A5 14 LDA $14 C2/AB3E: 38 SEC C2/AB3F: E9 00 02 SBC #$0200 C2/AB42: 85 14 STA $14 C2/AB44: C6 16 DEC $16 C2/AB46: D0 D0 BNE $AB18 C2/AB48: A5 18 LDA $18 C2/AB4A: 18 CLC C2/AB4B: 69 20 00 ADC #$0020 C2/AB4E: 85 18 STA $18 C2/AB50: C9 00 02 CMP #$0200 C2/AB53: D0 AE BNE $AB03 C2/AB55: 7B TDC C2/AB56: E2 20 SEP #$20 C2/AB58: AB PLB C2/AB59: 60 RTS ; [ ] last_one_line_clr: C2/AB5A: DA PHX C2/AB5B: 7B TDC C2/AB5C: AA TAX C2/AB5D: A8 TAY C2/AB5E: C2 20 REP #$20 C2/AB60: BD DC EC LDA $ECDC,X C2/AB63: 49 FF FF EOR #$FFFF C2/AB66: 85 1A STA $1A C2/AB68: B1 10 LDA ($10),Y C2/AB6A: 25 1A AND $1A C2/AB6C: 17 12 ORA [$12],Y C2/AB6E: 97 12 STA [$12],Y C2/AB70: B1 10 LDA ($10),Y C2/AB72: 3D DC EC AND $ECDC,X C2/AB75: 91 10 STA ($10),Y C2/AB77: E8 INX C2/AB78: E8 INX C2/AB79: 8A TXA C2/AB7A: 29 0F 00 AND #$000F C2/AB7D: AA TAX C2/AB7E: C8 INY C2/AB7F: C8 INY C2/AB80: C0 00 02 CPY #$0200 C2/AB83: D0 DB BNE $AB60 C2/AB85: 7B TDC C2/AB86: E2 20 SEP #$20 C2/AB88: FA PLX C2/AB89: 60 RTS ; [ ] C2/AB8A: 8B PHB C2/AB8B: 7B TDC C2/AB8C: 48 PHA C2/AB8D: AB PLB C2/AB8E: A9 7E LDA #$7E C2/AB90: 8D 74 43 STA $4374 C2/AB93: A2 B7 6A LDX #$6AB7 C2/AB96: 8E 16 21 STX $2116 C2/AB99: A0 0E 00 LDY #$000E C2/AB9C: 8C 75 43 STY $4375 C2/AB9F: A2 15 5D LDX #$5D15 C2/ABA2: 8E 72 43 STX $4372 C2/ABA5: A9 80 LDA #$80 C2/ABA7: 8D 0B 42 STA $420B C2/ABAA: A2 F7 6A LDX #$6AF7 C2/ABAD: 8E 16 21 STX $2116 C2/ABB0: 8C 75 43 STY $4375 C2/ABB3: A2 23 5D LDX #$5D23 C2/ABB6: 8E 72 43 STX $4372 C2/ABB9: 8D 0B 42 STA $420B C2/ABBC: AF 81 7B 7E LDA $7E7B81 C2/ABC0: D0 03 BNE $ABC5 C2/ABC2: 4C 4A AC JMP $AC4A C2/ABC5: C2 20 REP #$20 C2/ABC7: A9 24 7A LDA #$7A24 C2/ABCA: 8D 16 21 STA $2116 C2/ABCD: AF D9 5D 7E LDA $7E5DD9 C2/ABD1: 8D 18 21 STA $2118 C2/ABD4: AF DB 5D 7E LDA $7E5DDB C2/ABD8: 8D 18 21 STA $2118 C2/ABDB: AF DD 5D 7E LDA $7E5DDD C2/ABDF: 8D 18 21 STA $2118 C2/ABE2: AF DF 5D 7E LDA $7E5DDF C2/ABE6: 8D 18 21 STA $2118 C2/ABE9: AF E1 5D 7E LDA $7E5DE1 C2/ABED: 8D 18 21 STA $2118 C2/ABF0: AF E3 5D 7E LDA $7E5DE3 C2/ABF4: 8D 18 21 STA $2118 C2/ABF7: AF E5 5D 7E LDA $7E5DE5 C2/ABFB: 8D 18 21 STA $2118 C2/ABFE: AF E7 5D 7E LDA $7E5DE7 C2/AC02: 8D 18 21 STA $2118 C2/AC05: A9 64 7A LDA #$7A64 C2/AC08: 8D 16 21 STA $2116 C2/AC0B: AF 73 7A 7E LDA $7E7A73 C2/AC0F: 8D 18 21 STA $2118 C2/AC12: AF 75 7A 7E LDA $7E7A75 C2/AC16: 8D 18 21 STA $2118 C2/AC19: AF 77 7A 7E LDA $7E7A77 C2/AC1D: 8D 18 21 STA $2118 C2/AC20: AF 79 7A 7E LDA $7E7A79 C2/AC24: 8D 18 21 STA $2118 C2/AC27: AF 7B 7A 7E LDA $7E7A7B C2/AC2B: 8D 18 21 STA $2118 C2/AC2E: AF 7D 7A 7E LDA $7E7A7D C2/AC32: 8D 18 21 STA $2118 C2/AC35: AF 7F 7A 7E LDA $7E7A7F C2/AC39: 8D 18 21 STA $2118 C2/AC3C: AF 81 7A 7E LDA $7E7A81 C2/AC40: 8D 18 21 STA $2118 C2/AC43: 7B TDC C2/AC44: E2 20 SEP #$20 C2/AC46: 8F 81 7B 7E STA $7E7B81 C2/AC4A: A9 01 LDA #$01 C2/AC4C: 8D 70 43 STA $4370 C2/AC4F: A9 18 LDA #$18 C2/AC51: 8D 71 43 STA $4371 C2/AC54: A9 7E LDA #$7E C2/AC56: 8D 74 43 STA $4374 C2/AC59: A0 0C 00 LDY #$000C C2/AC5C: AF 9B 62 7E LDA $7E629B C2/AC60: F0 0C BEQ $AC6E C2/AC62: 7B TDC C2/AC63: 8F 9B 62 7E STA $7E629B C2/AC67: A5 98 LDA $98 C2/AC69: 4A LSR C2/AC6A: 29 03 AND #$03 C2/AC6C: 80 07 BRA $AC75 C2/AC6E: AF 9A 7B 7E LDA $7E7B9A C2/AC72: 3A DEC C2/AC73: 29 03 AND #$03 C2/AC75: 0A ASL C2/AC76: AA TAX C2/AC77: A9 80 LDA #$80 C2/AC79: 7C 7C AC JMP ($AC7C,X) C2/AC7C: .DW $AC84, $ACBD, $ACF6, $AD2F C2/AC84: A2 39 78 LDX #$7839 C2/AC87: 8E 16 21 STX $2116 C2/AC8A: A2 51 5C LDX #$5C51 C2/AC8D: 8E 72 43 STX $4372 C2/AC90: 8C 75 43 STY $4375 C2/AC93: 8D 0B 42 STA $420B C2/AC96: A2 39 79 LDX #$7939 C2/AC99: 8E 16 21 STX $2116 C2/AC9C: A2 51 5C LDX #$5C51 C2/AC9F: 8E 72 43 STX $4372 C2/ACA2: 8C 75 43 STY $4375 C2/ACA5: 8D 0B 42 STA $420B C2/ACA8: A2 39 7A LDX #$7A39 C2/ACAB: 8E 16 21 STX $2116 C2/ACAE: A2 51 5C LDX #$5C51 C2/ACB1: 8E 72 43 STX $4372 C2/ACB4: 8C 75 43 STY $4375 C2/ACB7: 8D 0B 42 STA $420B C2/ACBA: 4C 65 AD JMP $AD65 C2/ACBD: A2 79 78 LDX #$7879 C2/ACC0: 8E 16 21 STX $2116 C2/ACC3: A2 69 5C LDX #$5C69 C2/ACC6: 8E 72 43 STX $4372 C2/ACC9: 8C 75 43 STY $4375 C2/ACCC: 8D 0B 42 STA $420B C2/ACCF: A2 79 79 LDX #$7979 C2/ACD2: 8E 16 21 STX $2116 C2/ACD5: A2 69 5C LDX #$5C69 C2/ACD8: 8E 72 43 STX $4372 C2/ACDB: 8C 75 43 STY $4375 C2/ACDE: 8D 0B 42 STA $420B C2/ACE1: A2 79 7A LDX #$7A79 C2/ACE4: 8E 16 21 STX $2116 C2/ACE7: A2 69 5C LDX #$5C69 C2/ACEA: 8E 72 43 STX $4372 C2/ACED: 8C 75 43 STY $4375 C2/ACF0: 8D 0B 42 STA $420B C2/ACF3: 4C 65 AD JMP $AD65 C2/ACF6: A2 B9 78 LDX #$78B9 C2/ACF9: 8E 16 21 STX $2116 C2/ACFC: A2 81 5C LDX #$5C81 C2/ACFF: 8E 72 43 STX $4372 C2/AD02: 8C 75 43 STY $4375 C2/AD05: 8D 0B 42 STA $420B C2/AD08: A2 B9 79 LDX #$79B9 C2/AD0B: 8E 16 21 STX $2116 C2/AD0E: A2 81 5C LDX #$5C81 C2/AD11: 8E 72 43 STX $4372 C2/AD14: 8C 75 43 STY $4375 C2/AD17: 8D 0B 42 STA $420B C2/AD1A: A2 B9 7A LDX #$7AB9 C2/AD1D: 8E 16 21 STX $2116 C2/AD20: A2 81 5C LDX #$5C81 C2/AD23: 8E 72 43 STX $4372 C2/AD26: 8C 75 43 STY $4375 C2/AD29: 8D 0B 42 STA $420B C2/AD2C: 4C 65 AD JMP $AD65 C2/AD2F: A2 F9 78 LDX #$78F9 C2/AD32: 8E 16 21 STX $2116 C2/AD35: A2 99 5C LDX #$5C99 C2/AD38: 8E 72 43 STX $4372 C2/AD3B: 8C 75 43 STY $4375 C2/AD3E: 8D 0B 42 STA $420B C2/AD41: A2 F9 79 LDX #$79F9 C2/AD44: 8E 16 21 STX $2116 C2/AD47: A2 99 5C LDX #$5C99 C2/AD4A: 8E 72 43 STX $4372 C2/AD4D: 8C 75 43 STY $4375 C2/AD50: 8D 0B 42 STA $420B C2/AD53: A2 F9 7A LDX #$7AF9 C2/AD56: 8E 16 21 STX $2116 C2/AD59: A2 99 5C LDX #$5C99 C2/AD5C: 8E 72 43 STX $4372 C2/AD5F: 8C 75 43 STY $4375 C2/AD62: 8D 0B 42 STA $420B C2/AD65: AB PLB C2/AD66: E2 10 SEP #$10 C2/AD68: AD 9C 7B LDA $7B9C C2/AD6B: F0 49 BEQ $ADB6 C2/AD6D: 9C 9C 7B STZ $7B9C C2/AD70: AD 9D 7B LDA $7B9D C2/AD73: C9 FF CMP #$FF C2/AD75: F0 3F BEQ $ADB6 C2/AD77: 0A ASL C2/AD78: AA TAX C2/AD79: C2 20 REP #$20 C2/AD7B: BF D9 AD C2 LDA $C2ADD9,X C2/AD7F: A8 TAY C2/AD80: 8A TXA C2/AD81: 0A ASL C2/AD82: 0A ASL C2/AD83: AA TAX C2/AD84: A9 03 00 LDA #$0003 C2/AD87: 85 36 STA $36 C2/AD89: BF B9 AD C2 LDA $C2ADB9,X C2/AD8D: 8F 16 21 00 STA $002116 C2/AD91: B9 0D 5C LDA $5C0D,Y C2/AD94: 8F 18 21 00 STA $002118 C2/AD98: B9 0F 5C LDA $5C0F,Y C2/AD9B: 8F 18 21 00 STA $002118 C2/AD9F: B9 11 5C LDA $5C11,Y C2/ADA2: 8F 18 21 00 STA $002118 C2/ADA6: B9 13 5C LDA $5C13,Y C2/ADA9: 8F 18 21 00 STA $002118 C2/ADAD: E8 INX C2/ADAE: E8 INX C2/ADAF: C6 36 DEC $36 C2/ADB1: D0 D6 BNE $AD89 C2/ADB3: 7B TDC C2/ADB4: E2 20 SEP #$20 C2/ADB6: C2 10 REP #$10 C2/ADB8: 6B RTL C2/ADB9: .DW $7835, $7935, $7A35, $0000 C2/ADC1: .DW $7875, $7975, $7A75, $0000 C2/ADC9: .DW $78B5, $79B5, $7AB5, $0000 C2/ADD1: .DW $78F5, $79F5, $7AF5, $0000 C2/ADD9: .DW $0000, $0010, $0020, $0030 ; status names (32 items, 10 bytes each) C2/ADE1: .DB $96, $A8, $AE, $A7, $9D, $FF, $FF, $FF, $FF, $FF C2/ADEB: .DB $8F, $9E, $AD, $AB, $A2, $9F, $B2, $FF, $FF, $FF C2/ADF5: .DB $88, $A6, $A9, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/ADFF: .DB $82, $A5, $9E, $9A, $AB, $FF, $FF, $FF, $FF, $FF C2/AE09: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/AE13: .DB $8F, $A8, $A2, $AC, $A8, $A7, $FF, $FF, $FF, $FF C2/AE1D: .DB $99, $A8, $A6, $9B, $A2, $9E, $FF, $FF, $FF, $FF C2/AE27: .DB $83, $9A, $AB, $A4, $FF, $FF, $FF, $FF, $FF, $FF C2/AE31: .DB $8F, $AC, $B2, $9C, $A1, $9E, $FF, $FF, $FF, $FF C2/AE3B: .DB $92, $9E, $A2, $B3, $AE, $AB, $9E, $FF, $FF, $FF C2/AE45: .DB $8C, $AE, $9D, $9D, $A5, $9E, $9D, $FF, $FF, $FF C2/AE4F: .DB $81, $9E, $AB, $AC, $9E, $AB, $A4, $FF, $FF, $FF C2/AE59: .DB $8C, $AE, $AD, $9E, $FF, $FF, $FF, $FF, $FF, $FF C2/AE63: .DB $88, $A6, $9A, $A0, $9E, $FF, $FF, $FF, $FF, $FF C2/AE6D: .DB $8D, $9E, $9A, $AB, $FE, $85, $9A, $AD, $9A, $A5 C2/AE77: .DB $82, $A8, $A7, $9D, $9E, $A6, $A7, $9E, $9D, $FF C2/AE81: .DB $91, $9E, $9F, $A5, $9E, $9C, $AD, $FF, $FF, $FF C2/AE8B: .DB $92, $9A, $9F, $9E, $FF, $FF, $FF, $FF, $FF, $FF C2/AE95: .DB $92, $A1, $9E, $A5, $A5, $FF, $FF, $FF, $FF, $FF C2/AE9F: .DB $92, $AD, $A8, $A9, $FF, $FF, $FF, $FF, $FF, $FF C2/AEA9: .DB $87, $9A, $AC, $AD, $9E, $FF, $FF, $FF, $FF, $FF C2/AEB3: .DB $92, $A5, $A8, $B0, $FF, $FF, $FF, $FF, $FF, $FF C2/AEBD: .DB $91, $9E, $A0, $9E, $A7, $FF, $FF, $FF, $FF, $FF C2/AEC7: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/AED1: .DB $85, $A5, $A8, $9A, $AD, $FF, $FF, $FF, $FF, $FF C2/AEDB: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/AEE5: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/AEEF: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/AEF9: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/AF03: .DB $8B, $A2, $9F, $9E, $FE, $B7, $FF, $FF, $FF, $FF C2/AF0D: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C2/AF17: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; ----------------------------[ Battle Graphics: Misc. Animation Commands ]----------------------------- ; [ Battle Animation Command $80/$85: ] magic_init_133long: C2/AF21: A4 5B LDY $5B C2/AF23: C8 INY C2/AF24: 84 5B STY $5B C2/AF26: A7 5B LDA [$5B] C2/AF28: F0 21 BEQ $AF4B C2/AF2A: C9 01 CMP #$01 C2/AF2C: F0 07 BEQ $AF35 C2/AF2E: 20 E6 BB JSR $BBE6 ; update random number C2/AF31: 29 07 AND #$07 C2/AF33: D0 15 BNE $AF4A C2/AF35: C2 20 REP #$20 C2/AF37: 7B TDC C2/AF38: AA TAX C2/AF39: BF E8 E2 C2 LDA $C2E2E8,X C2/AF3D: 9D A0 7E STA $7EA0,X C2/AF40: E8 INX C2/AF41: E8 INX C2/AF42: E0 60 00 CPX #$0060 C2/AF45: D0 F2 BNE $AF39 C2/AF47: 7B TDC C2/AF48: E2 20 SEP #$20 C2/AF4A: 6B RTL C2/AF4B: C2 20 REP #$20 C2/AF4D: 7B TDC C2/AF4E: AA TAX C2/AF4F: BF 88 E2 C2 LDA $C2E288,X C2/AF53: 9D A0 7E STA $7EA0,X C2/AF56: E8 INX C2/AF57: E8 INX C2/AF58: E0 60 00 CPX #$0060 C2/AF5B: D0 F2 BNE $AF4F C2/AF5D: 7B TDC C2/AF5E: E2 20 SEP #$20 C2/AF60: 6B RTL ; [ Battle Animation Command $80/$83: ] magic_init_131long: C2/AF61: 7B TDC C2/AF62: AA TAX C2/AF63: 9E 57 80 STZ $8057,X ; clear monster y-shift for sprite priority C2/AF66: E8 INX C2/AF67: E0 0C 00 CPX #$000C C2/AF6A: D0 F7 BNE $AF63 C2/AF6C: AE F6 7A LDX $7AF6 C2/AF6F: BD 39 6A LDA $6A39,X ; target C2/AF72: 10 22 BPL $AF96 ; return if a character C2/AF74: 29 0F AND #$0F C2/AF76: 38 SEC C2/AF77: E9 04 SBC #$04 C2/AF79: 0A ASL C2/AF7A: AA TAX C2/AF7B: C2 20 REP #$20 C2/AF7D: A9 F8 FF LDA #$FFF8 C2/AF80: 9D 57 80 STA $8057,X ; set monster y-shift to -8 C2/AF83: BD CF 80 LDA $80CF,X ; monster y position (top) C2/AF86: 8D B4 EC STA $ECB4 ; C2/AF89: 38 SEC C2/AF8A: E9 00 01 SBC #$0100 C2/AF8D: 9D CF 80 STA $80CF,X C2/AF90: 8E B6 EC STX $ECB6 ; C2/AF93: 7B TDC C2/AF94: E2 20 SEP #$20 C2/AF96: 6B RTL ; high sprite data C2/AF97: .DB $02, $08, $20, $80 C2/AF9B: .DB $03, $0C, $30, $C0 C2/AF9F: .DB $01, $04, $10, $40 ; [ Init High Sprite Data ] oam_hibit_init: C2/AFA3: 7B TDC C2/AFA4: A8 TAY C2/AFA5: 64 10 STZ $10 C2/AFA7: A5 10 LDA $10 C2/AFA9: 4A LSR C2/AFAA: 4A LSR C2/AFAB: 99 7F A1 STA $A17F,Y C2/AFAE: 99 80 A1 STA $A180,Y C2/AFB1: 99 81 A1 STA $A181,Y C2/AFB4: 99 82 A1 STA $A182,Y C2/AFB7: A5 10 LDA $10 C2/AFB9: 29 03 AND #$03 C2/AFBB: AA TAX C2/AFBC: BF 97 AF C2 LDA $C2AF97,X C2/AFC0: 99 7F A3 STA $A37F,Y C2/AFC3: 99 80 A3 STA $A380,Y C2/AFC6: 99 81 A3 STA $A381,Y C2/AFC9: 99 82 A3 STA $A382,Y C2/AFCC: BF 9B AF C2 LDA $C2AF9B,X C2/AFD0: 99 7F A5 STA $A57F,Y C2/AFD3: 99 80 A5 STA $A580,Y C2/AFD6: 99 81 A5 STA $A581,Y C2/AFD9: 99 82 A5 STA $A582,Y C2/AFDC: BF 9F AF C2 LDA $C2AF9F,X C2/AFE0: 99 7F A7 STA $A77F,Y C2/AFE3: 99 80 A7 STA $A780,Y C2/AFE6: 99 81 A7 STA $A781,Y C2/AFE9: 99 82 A7 STA $A782,Y C2/AFEC: E6 10 INC $10 C2/AFEE: C8 INY C2/AFEF: C8 INY C2/AFF0: C8 INY C2/AFF1: C8 INY C2/AFF2: C0 00 02 CPY #$0200 C2/AFF5: D0 B0 BNE $AFA7 C2/AFF7: 6B RTL ; [ Battle Animation Command $80/$72: Branch if Attack Didn't Miss ] magic_init_114long: C2/AFF8: A6 5B LDX $5B C2/AFFA: E8 INX C2/AFFB: 86 5B STX $5B C2/AFFD: AE F6 7A LDX $7AF6 C2/B000: BD 88 6F LDA $6F88,X ; branch if attack didn't miss C2/B003: 10 01 BPL $B006 C2/B005: 6B RTL C2/B006: A7 5B LDA [$5B] C2/B008: C2 20 REP #$20 C2/B00A: 85 22 STA $22 C2/B00C: A5 5B LDA $5B C2/B00E: 18 CLC C2/B00F: 65 22 ADC $22 C2/B011: 85 5B STA $5B C2/B013: 7B TDC C2/B014: E2 20 SEP #$20 C2/B016: 6B RTL ; [ Battle Animation Command $80/$74: Branch if ??? ] magic_init_116long: C2/B017: AE F6 7A LDX $7AF6 C2/B01A: BD 39 6A LDA $6A39,X ; target C2/B01D: 30 06 BMI $B025 ; branch if a monster C2/B01F: A8 TAY C2/B020: B9 AE 61 LDA $61AE,Y ; C2/B023: F0 13 BEQ $B038 C2/B025: A0 01 00 LDY #$0001 C2/B028: B7 5B LDA [$5B],Y C2/B02A: C2 20 REP #$20 C2/B02C: 85 22 STA $22 C2/B02E: A5 5B LDA $5B C2/B030: 18 CLC C2/B031: 65 22 ADC $22 C2/B033: 85 5B STA $5B C2/B035: 7B TDC C2/B036: E2 20 SEP #$20 C2/B038: A6 5B LDX $5B C2/B03A: E8 INX C2/B03B: 86 5B STX $5B C2/B03D: 6B RTL ; [ Battle Animation Command $80/$7D: Branch if Dragon Horn is Active ] magic_init_125long: C2/B03E: A6 5B LDX $5B C2/B040: E8 INX C2/B041: 86 5B STX $5B C2/B043: AE F6 7A LDX $7AF6 C2/B046: AD 10 EC LDA $EC10 ; branch if dragon horn effect is active C2/B049: D0 01 BNE $B04C C2/B04B: 6B RTL C2/B04C: A7 5B LDA [$5B] C2/B04E: C2 20 REP #$20 C2/B050: 85 22 STA $22 C2/B052: A5 5B LDA $5B C2/B054: 18 CLC C2/B055: 65 22 ADC $22 C2/B057: 85 5B STA $5B C2/B059: 7B TDC C2/B05A: E2 20 SEP #$20 C2/B05C: 6B RTL ; monster death animation palette MON_CLR_COL: C2/B05D: .DW $318C, $0401, $7C1F, $741D, $6419, $5C17, $5415, $4C13 C2/B06D: .DW $4411, $3C0F, $340D, $2C0B, $2409, $1C07, $1405, $0C03 ; block/shield palettes (8 colors each) sp_color: C2/B07D: .DW $0000, $0000, $001A, $0013, $000D, $7FFE, $0380, $01C0 C2/B08D: .DW $0000, $0000, $7FFE, $373A, $2295, $1D8B, $28F2, $186E C2/B09D: .DW $0000, $0000, $7FFE, $6737, $4A71, $2989, $2EF8, $098F C2/B0AD: .DW $35AD, $0C63, $6FFF, $2108, $31F8, $2926, $18C6, $0172 C2/B0BD: .DB $02, $04, $06, $08, $0A, $0C, $0E, $10 ; --------------------------------[ Battle Graphics: Battle BG Update ]--------------------------------- ; vertical scroll positions for magitek train car bg tor_rnd_poi: C2/B0C5: .DW $0000, $FFFF, $FFFE, $FFFD ; battle bg update jump table land_prog_jmp: C2/B0CD: .DW $B13D, $B13D, $B13D, $B13D, $B13D, $B13D, $B13D, $B1AD C2/B0DD: .DW $B13D, $B13D, $B13D, $B13D, $B13D, $B218, $B13D, $B1B8 C2/B0ED: .DW $B13D, $B13D, $B13D, $B13D, $B13D, $B13D, $B13D, $B13D C2/B0FD: .DW $B13D, $B13D, $B13D, $B13D, $B13D, $B13D, $B13D, $B1E1 C2/B10D: .DW $B13D, $B1B8, $B13D, $B13D, $B13D, $B13D, $B13D, $B13D C2/B11D: .DW $B13D, $B13D, $B13D, $B13D, $B1C3, $B13D, $B170, $B13D C2/B12D: .DW $B13D, $B13D, $B13D, $B13D, $B13D, $B13D, $B14E, $B13D ; [ No Battle BG Update ] C2/B13D: 6B RTL ; final KEFKA death animation scroll positions ??? C2/B13E: .DW $0001, $0002, $0001, $0000, $0001, $0002, $0001, $0002 ; [ Update Battle BG $36: Final KEFKA ] C2/B14E: A5 9A LDA $9A ; return if death animation is not enabled C2/B150: F0 1D BEQ $B16F C2/B152: A5 0E LDA $0E ; frame counter C2/B154: 29 07 00 AND #$0007 C2/B157: 0A ASL C2/B158: AA TAX C2/B159: BF 3E B1 C2 LDA $C2B13E,X ; C2/B15D: 48 PHA C2/B15E: 18 CLC C2/B15F: 69 F0 FF ADC #$FFF0 C2/B162: 8F B4 64 7E STA $7E64B4 ; C2/B166: 68 PLA C2/B167: 18 CLC C2/B168: 69 10 00 ADC #$0010 C2/B16B: 8D C3 80 STA $80C3 C2/B16E: 7B TDC C2/B16F: 6B RTL ; [ Update Battle BG $2E: CYAN's dream world ] C2/B170: 7B TDC C2/B171: AA TAX C2/B172: BD 13 EC LDA $EC13,X ; copy first 8 colors of palette 1 and 3 to buffer C2/B175: 9D 71 EC STA $EC71,X C2/B178: 9D 81 EC STA $EC81,X C2/B17B: BD 53 EC LDA $EC53,X C2/B17E: 9D 91 EC STA $EC91,X C2/B181: 9D A1 EC STA $ECA1,X C2/B184: E8 INX C2/B185: E8 INX C2/B186: E0 10 00 CPX #$0010 C2/B189: D0 E7 BNE $B172 C2/B18B: A5 0E LDA $0E ; frame counter / 8 C2/B18D: 4A LSR C2/B18E: 4A LSR C2/B18F: 4A LSR C2/B190: 29 07 00 AND #$0007 C2/B193: 0A ASL C2/B194: AA TAX C2/B195: 7B TDC C2/B196: A8 TAY C2/B197: BD 71 EC LDA $EC71,X ; shift colors every 8 frames C2/B19A: 99 13 EC STA $EC13,Y C2/B19D: BD 91 EC LDA $EC91,X C2/B1A0: 99 53 EC STA $EC53,Y C2/B1A3: C8 INY C2/B1A4: C8 INY C2/B1A5: E8 INX C2/B1A6: E8 INX C2/B1A7: C0 10 00 CPY #$0010 C2/B1AA: D0 EB BNE $B197 C2/B1AC: 6B RTL ; [ Update Battle BG $07: Falling Through the Clouds ] C2/B1AD: AD B2 64 LDA $64B2 ; add 6 to vertical scroll position C2/B1B0: 18 CLC C2/B1B1: 69 06 00 ADC #$0006 C2/B1B4: 8D B2 64 STA $64B2 C2/B1B7: 6B RTL ; [ Update Battle BG $0F/$21: Top of Train Car/Running on Train Tracks ] C2/B1B8: AD B0 64 LDA $64B0 ; subtract 4 from horizontal scroll position C2/B1BB: 38 SEC C2/B1BC: E9 04 00 SBC #$0004 C2/B1BF: 8D B0 64 STA $64B0 C2/B1C2: 6B RTL ; [ Update Battle BG $2C: Magitek Train Car ] C2/B1C3: AD B0 64 LDA $64B0 ; add 8 to horizontal scroll position C2/B1C6: 38 SEC C2/B1C7: E9 08 00 SBC #$0008 C2/B1CA: 8D B0 64 STA $64B0 C2/B1CD: E2 20 SEP #$20 C2/B1CF: 20 E6 BB JSR $BBE6 ; update random number C2/B1D2: C2 20 REP #$20 C2/B1D4: 29 03 00 AND #$0003 ; (0..3) C2/B1D7: 0A ASL C2/B1D8: AA TAX C2/B1D9: BF C5 B0 C2 LDA $C2B0C5,X ; vertical scroll position (0, -1, -2, -3) C2/B1DD: 8D B2 64 STA $64B2 C2/B1E0: 6B RTL ; [ Update Battle BG $1F: Waterfall ] C2/B1E1: 7B TDC C2/B1E2: AA TAX C2/B1E3: BD 13 EC LDA $EC13,X ; copy first 8 colors of palette 1 to buffer C2/B1E6: 9D 71 EC STA $EC71,X C2/B1E9: 9D 81 EC STA $EC81,X C2/B1EC: E8 INX C2/B1ED: E8 INX C2/B1EE: E0 10 00 CPX #$0010 C2/B1F1: D0 F0 BNE $B1E3 C2/B1F3: AD B2 64 LDA $64B2 ; add 6 to vertical scroll position C2/B1F6: 18 CLC C2/B1F7: 69 06 00 ADC #$0006 C2/B1FA: 8D B2 64 STA $64B2 C2/B1FD: A5 0E LDA $0E ; frame counter / 4 C2/B1FF: 4A LSR C2/B200: 4A LSR C2/B201: 29 07 00 AND #$0007 C2/B204: 0A ASL C2/B205: AA TAX C2/B206: 7B TDC C2/B207: A8 TAY C2/B208: BD 71 EC LDA $EC71,X ; shift colors every 4 frames C2/B20B: 99 13 EC STA $EC13,Y C2/B20E: C8 INY C2/B20F: C8 INY C2/B210: E8 INX C2/B211: E8 INX C2/B212: C0 10 00 CPY #$0010 C2/B215: D0 F1 BNE $B208 C2/B217: 6B RTL ; [ Update Battle BG $0D: Raft on a River ] C2/B218: 7B TDC C2/B219: AA TAX C2/B21A: BD 13 EC LDA $EC13,X ; copy colors 1 through 4 of palette 1 to buffer C2/B21D: 9D 71 EC STA $EC71,X C2/B220: 9D 79 EC STA $EC79,X C2/B223: BD 1B EC LDA $EC1B,X ; copy colors 5 through 8 of palette 1 to buffer C2/B226: 9D 81 EC STA $EC81,X C2/B229: 9D 89 EC STA $EC89,X C2/B22C: E8 INX C2/B22D: E8 INX C2/B22E: E0 08 00 CPX #$0008 C2/B231: D0 E7 BNE $B21A C2/B233: A5 0E LDA $0E ; frame counter / 8 C2/B235: 4A LSR C2/B236: 4A LSR C2/B237: 4A LSR C2/B238: 29 03 00 AND #$0003 C2/B23B: 49 03 00 EOR #$0003 ; invert C2/B23E: 0A ASL C2/B23F: AA TAX C2/B240: 7B TDC C2/B241: A8 TAY C2/B242: BD 71 EC LDA $EC71,X ; shift colors backwards every 8 frames C2/B245: 99 13 EC STA $EC13,Y C2/B248: BD 81 EC LDA $EC81,X C2/B24B: 99 1B EC STA $EC1B,Y C2/B24E: C8 INY C2/B24F: C8 INY C2/B250: E8 INX C2/B251: E8 INX C2/B252: C0 08 00 CPY #$0008 C2/B255: D0 EB BNE $B242 C2/B257: 6B RTL ; [ Update Battle BG Palette and Scrolling ] color_scene_chg: C2/B258: E2 10 SEP #$10 C2/B25A: 7B TDC C2/B25B: AA TAX C2/B25C: BD A0 7E LDA $7EA0,X ; copy battle bg palettes C2/B25F: 9D 11 EC STA $EC11,X C2/B262: BD C0 7E LDA $7EC0,X C2/B265: 9D 31 EC STA $EC31,X C2/B268: BD E0 7E LDA $7EE0,X C2/B26B: 9D 51 EC STA $EC51,X C2/B26E: E8 INX C2/B26F: E8 INX C2/B270: E0 20 CPX #$20 C2/B272: D0 E8 BNE $B25C C2/B274: C2 10 REP #$10 C2/B276: AD B8 EC LDA $ECB8 ; battle bg index C2/B279: 29 3F 00 AND #$003F C2/B27C: 0A ASL C2/B27D: AA TAX C2/B27E: 7C CD B0 JMP ($B0CD,X) ; update battle bg ; ----------------------------[ Battle Graphics: Misc. Animation Commands ]----------------------------- ; [ Battle Animation Command $80/$7C: Swap Target and Attacker ] ; used by engulf (zone eater ability) magic_init_124long: C2/B281: AE F6 7A LDX $7AF6 C2/B284: BD 38 6A LDA $6A38,X ; attacker C2/B287: 48 PHA C2/B288: BD 39 6A LDA $6A39,X ; target C2/B28B: 9D 38 6A STA $6A38,X ; swap target and attacker C2/B28E: 68 PLA C2/B28F: 9D 39 6A STA $6A39,X C2/B292: C2 20 REP #$20 C2/B294: BD 7E 6F LDA $6F7E,X C2/B297: 48 PHA C2/B298: BD 80 6F LDA $6F80,X C2/B29B: 48 PHA C2/B29C: BD 82 6F LDA $6F82,X C2/B29F: 9D 7E 6F STA $6F7E,X C2/B2A2: BD 84 6F LDA $6F84,X C2/B2A5: 9D 80 6F STA $6F80,X C2/B2A8: 68 PLA C2/B2A9: 9D 84 6F STA $6F84,X C2/B2AC: 68 PLA C2/B2AD: 9D 82 6F STA $6F82,X C2/B2B0: 7B TDC C2/B2B1: E2 20 SEP #$20 C2/B2B3: 6B RTL ; [ Battle Animation Command $80/$7B: Flip All Characters ] ; used after running to opposite side of screen magic_init_123long: C2/B2B4: 7B TDC C2/B2B5: AA TAX C2/B2B6: A8 TAY C2/B2B7: 9E C0 61 STZ $61C0,X ; clear secondary graphical action C2/B2BA: BD BE 61 LDA $61BE,X ; flip character horizontal C2/B2BD: 49 40 EOR #$40 C2/B2BF: 9D BE 61 STA $61BE,X C2/B2C2: B9 10 7B LDA $7B10,Y ; switch hands C2/B2C5: 49 01 EOR #$01 C2/B2C7: 99 10 7B STA $7B10,Y C2/B2CA: C8 INY ; next character C2/B2CB: 8A TXA C2/B2CC: 18 CLC C2/B2CD: 69 20 ADC #$20 C2/B2CF: AA TAX C2/B2D0: C9 80 CMP #$80 C2/B2D2: D0 E3 BNE $B2B7 C2/B2D4: 6B RTL ; [ Battle Animation Command $80/$79: Characters Run to Left Side of Screen ] ; takes 56 loops to reach other side of screen magic_init_121long: C2/B2D5: 7B TDC C2/B2D6: AA TAX C2/B2D7: C2 20 REP #$20 C2/B2D9: BD C9 61 LDA $61C9,X ; subtract 4 from character xy angle C2/B2DC: 38 SEC C2/B2DD: E9 04 00 SBC #$0004 C2/B2E0: 9D C9 61 STA $61C9,X C2/B2E3: 7B TDC C2/B2E4: E2 20 SEP #$20 C2/B2E6: BD BD 2E LDA $2EBD,X ; branch if wound or petrify status C2/B2E9: 29 C0 AND #$C0 C2/B2EB: D0 05 BNE $B2F2 C2/B2ED: A9 04 LDA #$04 C2/B2EF: 9D C0 61 STA $61C0,X ; set secondary graphical action to 4 (running forward) C2/B2F2: C2 20 REP #$20 C2/B2F4: 8A TXA ; next character C2/B2F5: 18 CLC C2/B2F6: 69 20 00 ADC #$0020 C2/B2F9: AA TAX C2/B2FA: E0 80 00 CPX #$0080 C2/B2FD: D0 DA BNE $B2D9 C2/B2FF: 7B TDC C2/B300: E2 20 SEP #$20 C2/B302: 6B RTL ; [ Battle Animation Command $80/$7A: Characters Run to Right Side of Screen ] magic_init_122long: C2/B303: 7B TDC C2/B304: AA TAX C2/B305: C2 20 REP #$20 C2/B307: BD C9 61 LDA $61C9,X C2/B30A: 18 CLC C2/B30B: 69 04 00 ADC #$0004 C2/B30E: 9D C9 61 STA $61C9,X C2/B311: 7B TDC C2/B312: E2 20 SEP #$20 C2/B314: BD BD 2E LDA $2EBD,X C2/B317: 29 C0 AND #$C0 C2/B319: D0 05 BNE $B320 C2/B31B: A9 03 LDA #$03 C2/B31D: 9D C0 61 STA $61C0,X C2/B320: C2 20 REP #$20 C2/B322: 8A TXA C2/B323: 18 CLC C2/B324: 69 20 00 ADC #$0020 C2/B327: AA TAX C2/B328: E0 80 00 CPX #$0080 C2/B32B: D0 DA BNE $B307 C2/B32D: 7B TDC C2/B32E: E2 20 SEP #$20 C2/B330: 6B RTL ; [ Battle Animation Command $80/$77: ] magic_init_119long: C2/B331: 20 9F C2 JSR $C29F ; get pointer to target thread data C2/B334: AE F6 7A LDX $7AF6 C2/B337: BD 39 6A LDA $6A39,X C2/B33A: 0A ASL C2/B33B: AA TAX C2/B33C: C2 20 REP #$20 C2/B33E: B9 B7 61 LDA $61B7,Y C2/B341: 9D 56 62 STA $6256,X C2/B344: B9 B9 61 LDA $61B9,Y C2/B347: 9D 5E 62 STA $625E,X C2/B34A: AE F6 7A LDX $7AF6 C2/B34D: BD 7E 6F LDA $6F7E,X C2/B350: 99 B7 61 STA $61B7,Y C2/B353: BD 80 6F LDA $6F80,X C2/B356: 38 SEC C2/B357: E9 30 00 SBC #$0030 C2/B35A: 99 B9 61 STA $61B9,Y C2/B35D: 7B TDC C2/B35E: E2 20 SEP #$20 C2/B360: 6B RTL ; [ Battle Animation Command $80/$78: ] magic_init_120long: C2/B361: 20 9F C2 JSR $C29F ; get pointer to target thread data C2/B364: AE F6 7A LDX $7AF6 C2/B367: BD 39 6A LDA $6A39,X C2/B36A: 0A ASL C2/B36B: AA TAX C2/B36C: C2 20 REP #$20 C2/B36E: BD 56 62 LDA $6256,X C2/B371: 99 B7 61 STA $61B7,Y C2/B374: 7B TDC C2/B375: 99 C5 61 STA $61C5,Y C2/B378: 99 D4 61 STA $61D4,Y C2/B37B: BD 5E 62 LDA $625E,X C2/B37E: 99 B9 61 STA $61B9,Y C2/B381: 7B TDC C2/B382: 99 C7 61 STA $61C7,Y C2/B385: 99 D2 61 STA $61D2,Y C2/B388: 7B TDC C2/B389: E2 20 SEP #$20 C2/B38B: 6B RTL ; [ Battle Animation Command $80/$76: ] magic_init_118long: C2/B38C: AE F6 7A LDX $7AF6 C2/B38F: A0 01 00 LDY #$0001 C2/B392: B7 5B LDA [$5B],Y C2/B394: 85 10 STA $10 C2/B396: 30 04 BMI $B39C C2/B398: 64 11 STZ $11 C2/B39A: 80 04 BRA $B3A0 C2/B39C: A9 FF LDA #$FF C2/B39E: 85 11 STA $11 C2/B3A0: C2 20 REP #$20 C2/B3A2: E6 5B INC $5B C2/B3A4: BD D9 74 LDA $74D9,X C2/B3A7: 18 CLC C2/B3A8: 65 10 ADC $10 C2/B3AA: 9D D9 74 STA $74D9,X C2/B3AD: 85 10 STA $10 C2/B3AF: 64 12 STZ $12 C2/B3B1: 64 16 STZ $16 C2/B3B3: A9 40 00 LDA #$0040 C2/B3B6: 85 18 STA $18 C2/B3B8: BD 87 6F LDA $6F87,X C2/B3BB: 29 FF 00 AND #$00FF C2/B3BE: F0 2F BEQ $B3EF C2/B3C0: BD 80 6F LDA $6F80,X C2/B3C3: 29 FF 00 AND #$00FF C2/B3C6: 0A ASL C2/B3C7: 0A ASL C2/B3C8: AA TAX C2/B3C9: A5 12 LDA $12 C2/B3CB: 18 CLC C2/B3CC: 65 10 ADC $10 C2/B3CE: 85 12 STA $12 C2/B3D0: A5 13 LDA $13 C2/B3D2: 29 FF 00 AND #$00FF C2/B3D5: 85 13 STA $13 C2/B3D7: A5 16 LDA $16 C2/B3D9: 38 SEC C2/B3DA: E5 13 SBC $13 C2/B3DC: 85 16 STA $16 C2/B3DE: 64 13 STZ $13 C2/B3E0: 9D F5 43 STA $43F5,X C2/B3E3: CA DEX C2/B3E4: CA DEX C2/B3E5: CA DEX C2/B3E6: CA DEX C2/B3E7: C6 18 DEC $18 C2/B3E9: D0 DE BNE $B3C9 C2/B3EB: 7B TDC C2/B3EC: E2 20 SEP #$20 C2/B3EE: 6B RTL C2/B3EF: BD 80 6F LDA $6F80,X C2/B3F2: 29 FF 00 AND #$00FF C2/B3F5: 0A ASL C2/B3F6: 0A ASL C2/B3F7: AA TAX C2/B3F8: A5 12 LDA $12 C2/B3FA: 18 CLC C2/B3FB: 65 10 ADC $10 C2/B3FD: 85 12 STA $12 C2/B3FF: A5 13 LDA $13 C2/B401: 29 FF 00 AND #$00FF C2/B404: 18 CLC C2/B405: 65 16 ADC $16 C2/B407: 85 16 STA $16 C2/B409: 64 13 STZ $13 C2/B40B: 9D F5 43 STA $43F5,X C2/B40E: CA DEX C2/B40F: CA DEX C2/B410: CA DEX C2/B411: CA DEX C2/B412: C6 18 DEC $18 C2/B414: D0 E2 BNE $B3F8 C2/B416: 7B TDC C2/B417: E2 20 SEP #$20 C2/B419: 6B RTL ; [ Update Character/Monster Facing Directions ] direction_set: C2/B41A: 7B TDC C2/B41B: AA TAX C2/B41C: 8E 50 2F STX $2F50 ; character/monster facing directions C2/B41F: A2 03 00 LDX #$0003 C2/B422: BD 10 7B LDA $7B10,X ; character facing direction (0 = left, 1 = right) C2/B425: 4A LSR C2/B426: 2E 50 2F ROL $2F50 C2/B429: CA DEX C2/B42A: 10 F6 BPL $B422 C2/B42C: 7B TDC C2/B42D: AA TAX C2/B42E: A2 0A 00 LDX #$000A C2/B431: BD F3 80 LDA $80F3,X ; monster horizontal flip (for graphics) C2/B434: 5D 7E 61 EOR $617E,X ; monster horizontal flip (control) C2/B437: 49 01 EOR #$01 ; invert C2/B439: 4A LSR C2/B43A: 2E 51 2F ROL $2F51 C2/B43D: CA DEX C2/B43E: CA DEX C2/B43F: 10 F0 BPL $B431 C2/B441: 6B RTL ; [ Filter Colors (yellow) ] ; +$18 = palette range start (+$7E7E00) ; +$1A = palette range end (+$7E7E00) chg_color: C2/B442: A6 18 LDX $18 C2/B444: C2 20 REP #$20 C2/B446: BD 00 7E LDA $7E00,X ; original color C2/B449: 85 10 STA $10 C2/B44B: 4A LSR C2/B44C: 4A LSR C2/B44D: 4A LSR C2/B44E: 4A LSR C2/B44F: 4A LSR C2/B450: 85 12 STA $12 C2/B452: 4A LSR C2/B453: 4A LSR C2/B454: 4A LSR C2/B455: 4A LSR C2/B456: 4A LSR C2/B457: 29 1F 00 AND #$001F C2/B45A: 85 14 STA $14 C2/B45C: A5 10 LDA $10 C2/B45E: 29 1F 00 AND #$001F C2/B461: 18 CLC C2/B462: 65 14 ADC $14 C2/B464: 85 14 STA $14 C2/B466: A5 12 LDA $12 C2/B468: 29 1F 00 AND #$001F C2/B46B: 18 CLC C2/B46C: 65 14 ADC $14 C2/B46E: 8F 04 42 00 STA $004204 ; sum of rgb color values C2/B472: E2 20 SEP #$20 C2/B474: A9 03 LDA #$03 C2/B476: 8F 06 42 00 STA $004206 ; divide by 3 to get average C2/B47A: 7B TDC C2/B47B: C2 20 REP #$20 C2/B47D: EA NOP C2/B47E: EA NOP C2/B47F: EA NOP C2/B480: EA NOP C2/B481: EA NOP C2/B482: EA NOP C2/B483: AF 14 42 00 LDA $004214 ; average C2/B487: 85 10 STA $10 C2/B489: 0A ASL C2/B48A: 0A ASL C2/B48B: 0A ASL C2/B48C: 0A ASL C2/B48D: 0A ASL C2/B48E: 05 10 ORA $10 C2/B490: 9D 00 7E STA $7E00,X ; set red and green components C2/B493: E8 INX ; next color C2/B494: E8 INX C2/B495: E4 1A CPX $1A C2/B497: D0 AD BNE $B446 C2/B499: 7B TDC C2/B49A: E2 20 SEP #$20 C2/B49C: 6B RTL C2/B49D: .DB $01, $02, $03, $04, $05, $06 get_throt_data: C2/B4A3: A5 36 LDA $36 C2/B4A5: C5 37 CMP $37 C2/B4A7: D0 06 BNE $B4AF C2/B4A9: C5 38 CMP $38 C2/B4AB: D0 02 BNE $B4AF C2/B4AD: 1A INC C2/B4AE: 6B RTL C2/B4AF: 05 37 ORA $37 C2/B4B1: D0 08 BNE $B4BB C2/B4B3: A5 38 LDA $38 C2/B4B5: C9 02 CMP #$02 C2/B4B7: D0 02 BNE $B4BB C2/B4B9: 7B TDC C2/B4BA: 6B RTL C2/B4BB: A9 07 LDA #$07 C2/B4BD: 6B RTL ; pointers to animation data for attack commands (+$D07FB2) ; $00: morph ; $01: revert ; $02: steal ; $03: swdtech ; $04: blitz ; $05: runic ; $06: dance / rage ; $07: shock ; $08: gp rain ??? ; $09: jump (monster) ; $0A: jump (character, no targets) ; $0B: jump (monster, no targets) ; $0C: 3 dice ; $0D: 2 dice ; $0E: capture-to ; $0F: capture-from ; $10: characters run right to left ; $11: chocobop ; $12: 7-flush ; $13: lagomorph ; $14: throw thick knife ; $15: throw thin knife ; $16: throw sword ; $17: throw katana ; $18: throw rod ; $19: throw spear ; $1A: throw hawk eye/sniper ; $1B: life 2 ??? ; $1C: fire skean ; $1D: water edge ; $1E: bolt edge ; $1F: inviz edge ; $20: shadow edge ; $21: throw full moon/morning star/rising sun ; $22: throw boomerang ; $23: ??? ; $24: gp rain ??? ; $25: sketch ; $26: leap ; $27: health ; $28: lore ; $29: run ; $2A: magitek ??? ; $2B: jump (unarmed) ; $2C: jump w/ thick knife ; $2D: jump w/ thin knife ; $2E: jump w/ sword ; $2F: jump w/ katana ; $30: jump w/ rod ; $31: jump w/ spear ; $32: jump w/ hawk eye/sniper ; $33: ; $34: possess ; $35: tackle (umaro) ; $36: throw (umaro) ; $37: long battle dialog ; $38: battle change ; $39: control caster_anim_tbl: C2/B4BE: .DW $0F7A, $0FC0, $0FCE, $0FDC, $0FEA, $0FF8, $1006, $071C C2/B4CE: .DW $1030, $103E, $104C, $105A, $14C8, $14D6, $151C, $152A C2/B4DE: .DW $1538, $06F2, $070E, $0DE4, $1110, $111E, $112C, $113A C2/B4EE: .DW $1148, $1156, $1164, $1172, $1180, $118E, $119C, $11AA C2/B4FE: .DW $11B8, $11C6, $11D4, $11E2, $1030, $1068, $1076, $1084 C2/B50E: .DW $0FB2, $1092, $0E00, $0F42, $10A0, $10AE, $10BC, $10CA C2/B51E: .DW $10D8, $10E6, $10F4, $1102, $0F34, $0F26, $0F18, $0F0A C2/B52E: .DW $14BA, $1618 ; [ Load Ghost Train Graphics ] check_train: C2/B532: C2 20 REP #$20 C2/B534: BD 01 20 LDA $2001,X C2/B537: AA TAX C2/B538: 7B TDC C2/B539: E2 20 SEP #$20 C2/B53B: E0 06 01 CPX #$0106 C2/B53E: F0 01 BEQ $B541 C2/B540: 6B RTL C2/B541: A2 2C 01 LDX #$012C C2/B544: 86 26 STX $26 C2/B546: BF 03 00 E7 LDA $E70003,X ; battle bg tile formation index (in battle bg properties) C2/B54A: 0A ASL C2/B54B: AA TAX C2/B54C: BF 48 18 E7 LDA $E71848,X ; pointer to tile formation C2/B550: 85 F3 STA $F3 C2/B552: BF 49 18 E7 LDA $E71849,X C2/B556: 85 F4 STA $F4 C2/B558: A9 E7 LDA #$E7 C2/B55A: 85 F5 STA $F5 C2/B55C: A9 00 LDA #$00 ; destination = $7FC400 C2/B55E: 85 F6 STA $F6 C2/B560: A9 C4 LDA #$C4 C2/B562: 85 F7 STA $F7 C2/B564: A9 7F LDA #$7F C2/B566: 85 F8 STA $F8 C2/B568: 22 6D FF C2 JSL $C2FF6D ; decompress C2/B56C: A6 26 LDX $26 C2/B56E: BF 00 00 E7 LDA $E70000,X ; battle bg graphics index 1 (in battle bg properties) C2/B572: 29 7F AND #$7F C2/B574: 85 22 STA $22 C2/B576: 0A ASL C2/B577: 18 CLC C2/B578: 65 22 ADC $22 C2/B57A: AA TAX C2/B57B: BF 50 16 E7 LDA $E71650,X ; pointer to battle bg graphics 1 C2/B57F: 85 F3 STA $F3 C2/B581: BF 51 16 E7 LDA $E71651,X C2/B585: 85 F4 STA $F4 C2/B587: BF 52 16 E7 LDA $E71652,X C2/B58B: 85 F5 STA $F5 C2/B58D: A6 26 LDX $26 C2/B58F: BF 02 00 E7 LDA $E70002,X ; battle bg graphics index 3 (in battle bg properties) C2/B593: 29 7F AND #$7F C2/B595: 85 22 STA $22 C2/B597: 0A ASL C2/B598: 18 CLC C2/B599: 65 22 ADC $22 C2/B59B: AA TAX C2/B59C: BF 50 16 E7 LDA $E71650,X ; pointer to battle bg graphics 3 C2/B5A0: 85 F6 STA $F6 C2/B5A2: BF 51 16 E7 LDA $E71651,X C2/B5A6: 85 F7 STA $F7 C2/B5A8: BF 52 16 E7 LDA $E71652,X C2/B5AC: 85 F8 STA $F8 C2/B5AE: C2 20 REP #$20 C2/B5B0: 64 10 STZ $10 C2/B5B2: 7B TDC C2/B5B3: AA TAX C2/B5B4: BF 00 C4 7F LDA $7FC400,X ; tile formation C2/B5B8: 29 FF 01 AND #$01FF C2/B5BB: C9 00 01 CMP #$0100 C2/B5BE: 90 24 BCC $B5E4 ; branch if tile index < 256 (graphics 1) C2/B5C0: 29 FF 00 AND #$00FF C2/B5C3: 38 SEC C2/B5C4: E9 80 00 SBC #$0080 C2/B5C7: 0A ASL C2/B5C8: 0A ASL C2/B5C9: 0A ASL C2/B5CA: 0A ASL C2/B5CB: 0A ASL C2/B5CC: A8 TAY C2/B5CD: DA PHX C2/B5CE: A9 10 00 LDA #$0010 C2/B5D1: 85 12 STA $12 C2/B5D3: A6 10 LDX $10 C2/B5D5: B7 F6 LDA [$F6],Y ; copy tile from graphics 3 C2/B5D7: 9D 3F AE STA $AE3F,X C2/B5DA: C8 INY C2/B5DB: C8 INY C2/B5DC: E8 INX C2/B5DD: E8 INX C2/B5DE: C6 12 DEC $12 C2/B5E0: D0 F3 BNE $B5D5 C2/B5E2: 80 1B BRA $B5FF C2/B5E4: 0A ASL C2/B5E5: 0A ASL C2/B5E6: 0A ASL C2/B5E7: 0A ASL C2/B5E8: 0A ASL C2/B5E9: A8 TAY C2/B5EA: DA PHX C2/B5EB: A9 10 00 LDA #$0010 C2/B5EE: 85 12 STA $12 C2/B5F0: A6 10 LDX $10 C2/B5F2: B7 F3 LDA [$F3],Y ; copy tile from graphics 1 C2/B5F4: 9D 3F AE STA $AE3F,X C2/B5F7: C8 INY C2/B5F8: C8 INY C2/B5F9: E8 INX C2/B5FA: E8 INX C2/B5FB: C6 12 DEC $12 C2/B5FD: D0 F3 BNE $B5F2 C2/B5FF: 86 10 STX $10 ; next tile (256 tiles total) C2/B601: FA PLX C2/B602: E8 INX C2/B603: E8 INX C2/B604: E0 00 02 CPX #$0200 C2/B607: D0 AB BNE $B5B4 C2/B609: 7B TDC C2/B60A: E2 20 SEP #$20 C2/B60C: 6B RTL ; [ ] save_key_data: C2/B60D: A2 80 02 LDX #$0280 C2/B610: 86 10 STX $10 C2/B612: A2 0F 89 LDX #$890F C2/B615: 86 14 STX $14 C2/B617: 20 2D B6 JSR $B62D C2/B61A: 20 41 B6 JSR $B641 C2/B61D: A6 10 LDX $10 C2/B61F: E8 INX C2/B620: 86 10 STX $10 C2/B622: A6 14 LDX $14 C2/B624: E8 INX C2/B625: 86 14 STX $14 C2/B627: E0 13 89 CPX #$8913 C2/B62A: D0 EB BNE $B617 C2/B62C: 6B RTL set_one_check_sum: C2/B62D: 7B TDC C2/B62E: A8 TAY C2/B62F: 18 CLC C2/B630: 71 14 ADC ($14),Y C2/B632: C8 INY C2/B633: C8 INY C2/B634: C8 INY C2/B635: C8 INY C2/B636: C0 60 00 CPY #$0060 C2/B639: D0 F4 BNE $B62F C2/B63B: 49 FF EOR #$FF C2/B63D: 1A INC C2/B63E: 91 10 STA ($10),Y C2/B640: 60 RTS save_one_key_data: C2/B641: A0 00 00 LDY #$0000 C2/B644: B1 14 LDA ($14),Y C2/B646: 91 10 STA ($10),Y C2/B648: C8 INY C2/B649: C8 INY C2/B64A: C8 INY C2/B64B: C8 INY C2/B64C: C0 60 00 CPY #$0060 C2/B64F: D0 F3 BNE $B644 C2/B651: 60 RTS ; [ ] load_key_data: C2/B652: AD C6 2E LDA $2EC6 C2/B655: 8D 6B 89 STA $896B C2/B658: AD E6 2E LDA $2EE6 C2/B65B: 8D 6C 89 STA $896C C2/B65E: AD 06 2F LDA $2F06 C2/B661: 8D 6D 89 STA $896D C2/B664: AD 26 2F LDA $2F26 C2/B667: 8D 6E 89 STA $896E C2/B66A: A2 80 02 LDX #$0280 C2/B66D: 86 10 STX $10 C2/B66F: A2 0F 89 LDX #$890F C2/B672: 86 14 STX $14 C2/B674: 20 DE B6 JSR $B6DE C2/B677: 90 03 BCC $B67C C2/B679: 20 C6 B6 JSR $B6C6 C2/B67C: A6 10 LDX $10 C2/B67E: E8 INX C2/B67F: 86 10 STX $10 C2/B681: A6 14 LDX $14 C2/B683: E8 INX C2/B684: 86 14 STX $14 C2/B686: E0 13 89 CPX #$8913 C2/B689: D0 E9 BNE $B674 C2/B68B: 7B TDC C2/B68C: AA TAX C2/B68D: BD 6B 89 LDA $896B,X C2/B690: 20 9A B6 JSR $B69A C2/B693: E8 INX C2/B694: E0 04 00 CPX #$0004 C2/B697: D0 F4 BNE $B68D C2/B699: 6B RTL set_one_load_data: C2/B69A: DA PHX C2/B69B: 85 18 STA $18 C2/B69D: 7B TDC C2/B69E: A8 TAY C2/B69F: B9 DC 02 LDA $02DC,Y C2/B6A2: C5 18 CMP $18 C2/B6A4: F0 08 BEQ $B6AE C2/B6A6: C8 INY C2/B6A7: C0 04 00 CPY #$0004 C2/B6AA: D0 F3 BNE $B69F C2/B6AC: 80 16 BRA $B6C4 C2/B6AE: A9 17 LDA #$17 C2/B6B0: 85 1A STA $1A C2/B6B2: B9 80 02 LDA $0280,Y C2/B6B5: 9D 0F 89 STA $890F,X C2/B6B8: C8 INY C2/B6B9: C8 INY C2/B6BA: C8 INY C2/B6BB: C8 INY C2/B6BC: E8 INX C2/B6BD: E8 INX C2/B6BE: E8 INX C2/B6BF: E8 INX C2/B6C0: C6 1A DEC $1A C2/B6C2: D0 EE BNE $B6B2 C2/B6C4: FA PLX C2/B6C5: 60 RTS ; [ ] clr_one_key_data: C2/B6C6: 7B TDC C2/B6C7: A8 TAY C2/B6C8: 91 10 STA ($10),Y C2/B6CA: C8 INY C2/B6CB: C8 INY C2/B6CC: C8 INY C2/B6CD: C8 INY C2/B6CE: C0 5C 00 CPY #$005C C2/B6D1: D0 F5 BNE $B6C8 C2/B6D3: A9 FF LDA #$FF C2/B6D5: 91 10 STA ($10),Y C2/B6D7: C8 INY C2/B6D8: C8 INY C2/B6D9: C8 INY C2/B6DA: C8 INY C2/B6DB: 91 10 STA ($10),Y C2/B6DD: 60 RTS ; [ ] get_one_check_sum: C2/B6DE: 7B TDC C2/B6DF: A8 TAY C2/B6E0: 18 CLC C2/B6E1: 71 10 ADC ($10),Y C2/B6E3: C8 INY C2/B6E4: C8 INY C2/B6E5: C8 INY C2/B6E6: C8 INY C2/B6E7: C0 60 00 CPY #$0060 C2/B6EA: D0 F4 BNE $B6E0 C2/B6EC: 49 FF EOR #$FF C2/B6EE: 1A INC C2/B6EF: D1 10 CMP ($10),Y C2/B6F1: F0 02 BEQ $B6F5 C2/B6F3: 38 SEC C2/B6F4: 60 RTS C2/B6F5: 18 CLC C2/B6F6: 60 RTS ; [ Init ??? ] line_init_long: C2/B6F7: C2 20 REP #$20 C2/B6F9: 7B TDC C2/B6FA: AA TAX C2/B6FB: A9 00 20 LDA #$2000 C2/B6FE: 9D AD 5F STA $5FAD,X ; C2/B701: E8 INX C2/B702: E8 INX C2/B703: E0 80 00 CPX #$0080 C2/B706: D0 F6 BNE $B6FE C2/B708: 7B TDC C2/B709: AA TAX C2/B70A: 9D F5 43 STA $43F5,X ; clear bg1 scroll HDMA data C2/B70D: 9D 75 47 STA $4775,X ; clear bg2 scroll HDMA data C2/B710: 9D F5 4A STA $4AF5,X ; clear bg3 scroll HDMA data C2/B713: E8 INX C2/B714: E8 INX C2/B715: E0 80 03 CPX #$0380 C2/B718: D0 F0 BNE $B70A C2/B71A: A2 5C 02 LDX #$025C C2/B71D: A9 A9 FF LDA #$FFA9 C2/B720: 85 12 STA $12 C2/B722: A9 66 FF LDA #$FF66 C2/B725: 85 14 STA $14 C2/B727: A5 12 LDA $12 C2/B729: 9D 77 47 STA $4777,X ; bg2 vertical scroll HDMA data (menu region) C2/B72C: A5 14 LDA $14 C2/B72E: 9D F7 4A STA $4AF7,X ; bg3 vertical scroll HDMA data (menu region) C2/B731: C6 12 DEC $12 C2/B733: C6 14 DEC $14 C2/B735: E8 INX C2/B736: E8 INX C2/B737: E8 INX C2/B738: E8 INX C2/B739: E0 80 03 CPX #$0380 C2/B73C: D0 E9 BNE $B727 C2/B73E: A2 7C 02 LDX #$027C C2/B741: A9 64 00 LDA #$0064 C2/B744: 85 10 STA $10 C2/B746: A9 0C 00 LDA #$000C C2/B749: 85 12 STA $12 C2/B74B: A5 10 LDA $10 C2/B74D: 9D F7 4A STA $4AF7,X C2/B750: C6 12 DEC $12 C2/B752: D0 0D BNE $B761 C2/B754: A9 0C 00 LDA #$000C C2/B757: 85 12 STA $12 C2/B759: A5 10 LDA $10 C2/B75B: 18 CLC C2/B75C: 69 04 00 ADC #$0004 C2/B75F: 85 10 STA $10 C2/B761: E8 INX C2/B762: E8 INX C2/B763: E8 INX C2/B764: E8 INX C2/B765: E0 3C 03 CPX #$033C C2/B768: D0 E1 BNE $B74B C2/B76A: A2 5C 02 LDX #$025C C2/B76D: A9 68 00 LDA #$0068 C2/B770: 9D 77 47 STA $4777,X C2/B773: E8 INX C2/B774: E8 INX C2/B775: E8 INX C2/B776: E8 INX C2/B777: E0 5C 03 CPX #$035C C2/B77A: D0 F4 BNE $B770 C2/B77C: 7B TDC C2/B77D: AA TAX C2/B77E: BD 51 4D LDA $4D51,X C2/B781: 9D 75 4E STA $4E75,X C2/B784: 9D 75 4F STA $4F75,X C2/B787: 9D 95 50 STA $5095,X C2/B78A: E8 INX C2/B78B: E8 INX C2/B78C: E0 00 01 CPX #$0100 C2/B78F: D0 ED BNE $B77E C2/B791: BD 51 4D LDA $4D51,X C2/B794: 9D 75 4F STA $4F75,X C2/B797: 9D 95 50 STA $5095,X C2/B79A: E8 INX C2/B79B: E8 INX C2/B79C: E0 20 01 CPX #$0120 C2/B79F: D0 F0 BNE $B791 C2/B7A1: BD 51 4D LDA $4D51,X C2/B7A4: 9D 95 50 STA $5095,X C2/B7A7: E8 INX C2/B7A8: E8 INX C2/B7A9: E0 40 01 CPX #$0140 C2/B7AC: D0 F3 BNE $B7A1 C2/B7AE: 7B TDC C2/B7AF: AA TAX C2/B7B0: BD 73 4D LDA $4D73,X C2/B7B3: 18 CLC C2/B7B4: 69 40 00 ADC #$0040 C2/B7B7: 9D 97 4E STA $4E97,X C2/B7BA: 18 CLC C2/B7BB: 69 40 00 ADC #$0040 C2/B7BE: 9D 97 4F STA $4F97,X C2/B7C1: 38 SEC C2/B7C2: E9 08 00 SBC #$0008 C2/B7C5: 9D B7 50 STA $50B7,X C2/B7C8: E8 INX C2/B7C9: E8 INX C2/B7CA: E8 INX C2/B7CB: E8 INX C2/B7CC: E0 C0 00 CPX #$00C0 C2/B7CF: D0 DF BNE $B7B0 C2/B7D1: 7B TDC C2/B7D2: AA TAX C2/B7D3: BD 53 4D LDA $4D53,X C2/B7D6: 38 SEC C2/B7D7: E9 08 00 SBC #$0008 C2/B7DA: 9D 97 50 STA $5097,X C2/B7DD: BD 33 4E LDA $4E33,X C2/B7E0: 38 SEC C2/B7E1: E9 08 00 SBC #$0008 C2/B7E4: 9D 77 51 STA $5177,X C2/B7E7: E8 INX C2/B7E8: E8 INX C2/B7E9: E8 INX C2/B7EA: E8 INX C2/B7EB: E0 20 00 CPX #$0020 C2/B7EE: D0 E3 BNE $B7D3 C2/B7F0: 7B TDC C2/B7F1: AA TAX C2/B7F2: 9E D5 53 STZ $53D5,X C2/B7F5: A9 3C 01 LDA #$013C C2/B7F8: 9D D7 53 STA $53D7,X C2/B7FB: E8 INX C2/B7FC: E8 INX C2/B7FD: E8 INX C2/B7FE: E8 INX C2/B7FF: E0 A0 00 CPX #$00A0 C2/B802: D0 EE BNE $B7F2 C2/B804: 7B TDC C2/B805: AA TAX C2/B806: A9 18 00 LDA #$0018 C2/B809: 85 12 STA $12 C2/B80B: A9 DC 00 LDA #$00DC C2/B80E: 85 10 STA $10 C2/B810: A9 00 01 LDA #$0100 C2/B813: 9D 75 54 STA $5475,X C2/B816: A5 10 LDA $10 C2/B818: 9D 77 54 STA $5477,X C2/B81B: C6 12 DEC $12 C2/B81D: D0 08 BNE $B827 C2/B81F: A5 10 LDA $10 C2/B821: 18 CLC C2/B822: 69 04 00 ADC #$0004 C2/B825: 85 10 STA $10 C2/B827: E8 INX C2/B828: E8 INX C2/B829: E8 INX C2/B82A: E8 INX C2/B82B: E0 C0 00 CPX #$00C0 C2/B82E: D0 E0 BNE $B810 C2/B830: 7B TDC C2/B831: AA TAX C2/B832: A9 60 00 LDA #$0060 C2/B835: 85 10 STA $10 C2/B837: A9 14 00 LDA #$0014 C2/B83A: 85 12 STA $12 C2/B83C: A9 00 01 LDA #$0100 C2/B83F: 9D D5 51 STA $51D5,X C2/B842: A5 10 LDA $10 C2/B844: 9D D7 51 STA $51D7,X C2/B847: C6 12 DEC $12 C2/B849: D0 0D BNE $B858 C2/B84B: A9 0C 00 LDA #$000C C2/B84E: 85 12 STA $12 C2/B850: A5 10 LDA $10 C2/B852: 18 CLC C2/B853: 69 04 00 ADC #$0004 C2/B856: 85 10 STA $10 C2/B858: E8 INX C2/B859: E8 INX C2/B85A: E8 INX C2/B85B: E8 INX C2/B85C: E0 E0 00 CPX #$00E0 C2/B85F: D0 DB BNE $B83C C2/B861: 7B TDC C2/B862: 9D D5 51 STA $51D5,X C2/B865: 9D D7 51 STA $51D7,X C2/B868: E8 INX C2/B869: E8 INX C2/B86A: E0 00 01 CPX #$0100 C2/B86D: D0 F3 BNE $B862 C2/B86F: 7B TDC C2/B870: AA TAX C2/B871: A9 60 00 LDA #$0060 C2/B874: 85 10 STA $10 C2/B876: A9 0C 00 LDA #$000C C2/B879: 85 12 STA $12 C2/B87B: A9 00 01 LDA #$0100 C2/B87E: 9D 05 43 STA $4305,X C2/B881: A5 10 LDA $10 C2/B883: 9D 07 43 STA $4307,X C2/B886: C6 12 DEC $12 C2/B888: D0 0D BNE $B897 C2/B88A: A9 0C 00 LDA #$000C C2/B88D: 85 12 STA $12 C2/B88F: A5 10 LDA $10 C2/B891: 18 CLC C2/B892: 69 04 00 ADC #$0004 C2/B895: 85 10 STA $10 C2/B897: E8 INX C2/B898: E8 INX C2/B899: E8 INX C2/B89A: E8 INX C2/B89B: E0 F0 00 CPX #$00F0 C2/B89E: D0 DB BNE $B87B C2/B8A0: 7B TDC C2/B8A1: E2 20 SEP #$20 C2/B8A3: 6B RTL ; [ Update Screen Fade In ] start_add_set: C2/B8A4: AD F6 E9 LDA $E9F6 C2/B8A7: F0 47 BEQ $B8F0 C2/B8A9: AD F9 E9 LDA $E9F9 C2/B8AC: 29 0F AND #$0F C2/B8AE: C9 0F CMP #$0F C2/B8B0: F0 04 BEQ $B8B6 C2/B8B2: 1A INC C2/B8B3: 8D F9 E9 STA $E9F9 C2/B8B6: E2 10 SEP #$10 C2/B8B8: AD F7 E9 LDA $E9F7 C2/B8BB: 0A ASL C2/B8BC: A8 TAY C2/B8BD: AD F8 E9 LDA $E9F8 C2/B8C0: 0A ASL C2/B8C1: AA TAX C2/B8C2: A9 E0 LDA #$E0 C2/B8C4: 99 31 EA STA $EA31,Y C2/B8C7: 99 33 EA STA $EA33,Y C2/B8CA: 9D CB EA STA $EACB,X C2/B8CD: 9D CD EA STA $EACD,X C2/B8D0: C9 FF CMP #$FF C2/B8D2: F0 01 BEQ $B8D5 C2/B8D4: 1A INC C2/B8D5: E8 INX C2/B8D6: E8 INX C2/B8D7: E8 INX C2/B8D8: E8 INX C2/B8D9: 88 DEY C2/B8DA: 88 DEY C2/B8DB: 88 DEY C2/B8DC: 88 DEY C2/B8DD: D0 E5 BNE $B8C4 C2/B8DF: EE F8 E9 INC $E9F8 C2/B8E2: EE F8 E9 INC $E9F8 C2/B8E5: CE F7 E9 DEC $E9F7 C2/B8E8: CE F7 E9 DEC $E9F7 C2/B8EB: D0 03 BNE $B8F0 C2/B8ED: 9C F6 E9 STZ $E9F6 C2/B8F0: C2 10 REP #$10 C2/B8F2: 6B RTL ; [ ] nmi_div16: C2/B8F3: DA PHX C2/B8F4: C2 20 REP #$20 C2/B8F6: 64 30 STZ $30 C2/B8F8: 64 32 STZ $32 C2/B8FA: A5 2C LDA $2C C2/B8FC: F0 20 BEQ $B91E C2/B8FE: A5 2E LDA $2E C2/B900: F0 1C BEQ $B91E C2/B902: A2 10 00 LDX #$0010 C2/B905: 26 2C ROL $2C C2/B907: 26 32 ROL $32 C2/B909: A5 32 LDA $32 C2/B90B: 38 SEC C2/B90C: E5 2E SBC $2E C2/B90E: 85 32 STA $32 C2/B910: B0 07 BCS $B919 C2/B912: A5 32 LDA $32 C2/B914: 65 2E ADC $2E C2/B916: 85 32 STA $32 C2/B918: 18 CLC C2/B919: 26 30 ROL $30 C2/B91B: CA DEX C2/B91C: D0 E7 BNE $B905 C2/B91E: A9 00 00 LDA #$0000 C2/B921: E2 20 SEP #$20 C2/B923: FA PLX C2/B924: 60 RTS ; [ Update Timer Tile Data ] chg_time: C2/B925: AD EF EC LDA $ECEF ; branch if timer is shown C2/B928: 29 40 AND #$40 C2/B92A: D0 01 BNE $B92D C2/B92C: 6B RTL C2/B92D: AD 8F 62 LDA $628F ; decrement timer frame counter C2/B930: F0 04 BEQ $B936 C2/B932: CE 8F 62 DEC $628F C2/B935: 6B RTL C2/B936: A9 3C LDA #$3C ; set timer frame counter to 60 C2/B938: 8D 8F 62 STA $628F C2/B93B: AF 89 11 00 LDA $001189 C2/B93F: 85 2C STA $2C C2/B941: AF 8A 11 00 LDA $00118A C2/B945: 85 2D STA $2D C2/B947: A2 3C 00 LDX #$003C C2/B94A: 86 2E STX $2E C2/B94C: 20 F3 B8 JSR $B8F3 C2/B94F: A6 30 LDX $30 C2/B951: 86 2C STX $2C C2/B953: A2 3C 00 LDX #$003C C2/B956: 86 2E STX $2E C2/B958: 20 F3 B8 JSR $B8F3 C2/B95B: 7B TDC C2/B95C: AA TAX C2/B95D: A5 30 LDA $30 C2/B95F: 38 SEC C2/B960: E9 0A SBC #$0A C2/B962: 90 03 BCC $B967 C2/B964: E8 INX C2/B965: 80 F8 BRA $B95F C2/B967: 18 CLC C2/B968: 69 BE ADC #$BE C2/B96A: 8D 92 62 STA $6292 C2/B96D: 8A TXA C2/B96E: D0 04 BNE $B974 C2/B970: A9 FF LDA #$FF C2/B972: 80 03 BRA $B977 C2/B974: 18 CLC C2/B975: 69 B4 ADC #$B4 C2/B977: 8D 90 62 STA $6290 C2/B97A: 7B TDC C2/B97B: AA TAX C2/B97C: A5 32 LDA $32 C2/B97E: 38 SEC C2/B97F: E9 0A SBC #$0A C2/B981: 90 03 BCC $B986 C2/B983: E8 INX C2/B984: 80 F8 BRA $B97E C2/B986: 18 CLC C2/B987: 69 BE ADC #$BE C2/B989: 8D 98 62 STA $6298 C2/B98C: 8A TXA C2/B98D: 18 CLC C2/B98E: 69 B4 ADC #$B4 C2/B990: 8D 96 62 STA $6296 C2/B993: A9 C1 LDA #$C1 C2/B995: 8D 94 62 STA $6294 C2/B998: 6B RTL ; [ Battle Animation Command $80/$6B: ] magic_init_107long: C2/B999: AE F6 7A LDX $7AF6 C2/B99C: BD D3 74 LDA $74D3,X C2/B99F: C2 20 REP #$20 C2/B9A1: 0A ASL C2/B9A2: 0A ASL C2/B9A3: 85 10 STA $10 C2/B9A5: BD 30 6A LDA $6A30,X C2/B9A8: 29 FF 00 AND #$00FF C2/B9AB: 0A ASL C2/B9AC: 0A ASL C2/B9AD: 0A ASL C2/B9AE: 85 12 STA $12 C2/B9B0: BD 3C 6A LDA $6A3C,X C2/B9B3: 18 CLC C2/B9B4: 65 12 ADC $12 C2/B9B6: 38 SEC C2/B9B7: E5 10 SBC $10 C2/B9B9: 9D 3C 6A STA $6A3C,X C2/B9BC: 7B TDC C2/B9BD: E2 20 SEP #$20 C2/B9BF: 6B RTL ; [ Battle Animation Command $80/$6A: Align Bottom of Thread with Bottom of Target ] ; used by Ice 3 only magic_init_106long: C2/B9C0: AE F6 7A LDX $7AF6 C2/B9C3: BD D3 74 LDA $74D3,X ; target height (in 8x8 tiles) C2/B9C6: C2 20 REP #$20 C2/B9C8: 0A ASL C2/B9C9: 0A ASL C2/B9CA: 85 10 STA $10 ; +$10 = target height / 2 (in pixels) C2/B9CC: BD 30 6A LDA $6A30,X ; frame height C2/B9CF: 29 FF 00 AND #$00FF C2/B9D2: 0A ASL C2/B9D3: 0A ASL C2/B9D4: 0A ASL C2/B9D5: 85 12 STA $12 ; +$12 = frame height (in pixels) C2/B9D7: BD 3C 6A LDA $6A3C,X ; thread y position C2/B9DA: 18 CLC C2/B9DB: 65 10 ADC $10 C2/B9DD: 38 SEC C2/B9DE: E5 12 SBC $12 C2/B9E0: 9D 3C 6A STA $6A3C,X C2/B9E3: 7B TDC C2/B9E4: E2 20 SEP #$20 C2/B9E6: 6B RTL ; sprite data for monsters C2/B9E7: .DB $00, $00 \ .DW $0100 .DB $20, $00 \ .DW $0104 .DB $40, $00 \ .DW $0108 .DB $60, $00 \ .DW $010C C2/B9F7: .DB $00, $20 \ .DW $0140 .DB $20, $20 \ .DW $0144 .DB $40, $20 \ .DW $0148 .DB $60, $20 \ .DW $014C C2/BA07: .DB $00, $40 \ .DW $0180 .DB $20, $40 \ .DW $0184 .DB $40, $40 \ .DW $0188 .DB $60, $40 \ .DW $018C C2/BA17: .DB $00, $60 \ .DW $01C0 .DB $20, $60 \ .DW $01C4 .DB $40, $60 \ .DW $01C8 .DB $60, $60 \ .DW $01CC ; [ ] get_modechr_poi: C2/BA27: A0 01 00 LDY #$0001 C2/BA2A: B7 8F LDA [$8F],Y C2/BA2C: 29 7F AND #$7F C2/BA2E: 85 10 STA $10 C2/BA30: 64 12 STZ $12 C2/BA32: 7B TDC C2/BA33: AA TAX C2/BA34: A5 10 LDA $10 C2/BA36: DD C6 2E CMP $2EC6,X C2/BA39: F0 0E BEQ $BA49 C2/BA3B: E6 12 INC $12 C2/BA3D: 8A TXA C2/BA3E: 18 CLC C2/BA3F: 69 20 ADC #$20 C2/BA41: AA TAX C2/BA42: E0 80 00 CPX #$0080 C2/BA45: D0 ED BNE $BA34 C2/BA47: 18 CLC C2/BA48: 60 RTS C2/BA49: 38 SEC C2/BA4A: 60 RTS ; [ ] good_bar_mode_long: C2/BA4B: 20 27 BA JSR $BA27 C2/BA4E: 90 1D BCC $BA6D C2/BA50: B7 8F LDA [$8F],Y C2/BA52: 10 2D BPL $BA81 C2/BA54: AE D6 64 LDX $64D6 C2/BA57: 86 14 STX $14 C2/BA59: AE D8 64 LDX $64D8 C2/BA5C: 86 16 STX $16 C2/BA5E: 7B TDC C2/BA5F: AA TAX C2/BA60: A5 12 LDA $12 C2/BA62: DD D6 64 CMP $64D6,X C2/BA65: F0 09 BEQ $BA70 C2/BA67: E8 INX C2/BA68: E0 04 00 CPX #$0004 C2/BA6B: D0 F5 BNE $BA62 C2/BA6D: 4C C8 BA JMP $BAC8 C2/BA70: A9 FF LDA #$FF C2/BA72: 9D 14 00 STA $0014,X C2/BA75: A2 FF FF LDX #$FFFF C2/BA78: 8E D6 64 STX $64D6 C2/BA7B: 8E D8 64 STX $64D8 C2/BA7E: 4C B6 BA JMP $BAB6 C2/BA81: 7B TDC C2/BA82: AA TAX C2/BA83: A5 12 LDA $12 C2/BA85: DD D6 64 CMP $64D6,X C2/BA88: F0 3E BEQ $BAC8 C2/BA8A: E8 INX C2/BA8B: E0 04 00 CPX #$0004 C2/BA8E: D0 F5 BNE $BA85 C2/BA90: A2 FF FF LDX #$FFFF C2/BA93: DA PHX C2/BA94: 86 14 STX $14 C2/BA96: 86 16 STX $16 C2/BA98: 7B TDC C2/BA99: AA TAX C2/BA9A: BD D6 64 LDA $64D6,X C2/BA9D: 30 04 BMI $BAA3 C2/BA9F: A8 TAY C2/BAA0: 99 14 00 STA $0014,Y C2/BAA3: E8 INX C2/BAA4: E0 04 00 CPX #$0004 C2/BAA7: D0 F1 BNE $BA9A C2/BAA9: A5 12 LDA $12 C2/BAAB: A8 TAY C2/BAAC: 99 14 00 STA $0014,Y C2/BAAF: FA PLX C2/BAB0: 8E D6 64 STX $64D6 C2/BAB3: 8E D8 64 STX $64D8 C2/BAB6: 7B TDC C2/BAB7: AA TAX C2/BAB8: A8 TAY C2/BAB9: B9 14 00 LDA $0014,Y C2/BABC: 30 04 BMI $BAC2 C2/BABE: 9D D6 64 STA $64D6,X C2/BAC1: E8 INX C2/BAC2: C8 INY C2/BAC3: C0 04 00 CPY #$0004 C2/BAC6: D0 F1 BNE $BAB9 C2/BAC8: A6 8F LDX $8F C2/BACA: E8 INX C2/BACB: 86 8F STX $8F C2/BACD: 7B TDC C2/BACE: AA TAX C2/BACF: C2 20 REP #$20 C2/BAD1: A9 FF 21 LDA #$21FF C2/BAD4: 9D 95 5B STA $5B95,X C2/BAD7: E8 INX C2/BAD8: E8 INX C2/BAD9: E0 70 00 CPX #$0070 C2/BADC: D0 F6 BNE $BAD4 C2/BADE: 7B TDC C2/BADF: E2 20 SEP #$20 C2/BAE1: 6B RTL ; [ ] good_inside_mode: C2/BAE2: 20 27 BA JSR $BA27 C2/BAE5: 90 24 BCC $BB0B C2/BAE7: A5 12 LDA $12 C2/BAE9: AA TAX C2/BAEA: BF 01 1A C1 LDA $C11A01,X C2/BAEE: 85 12 STA $12 C2/BAF0: B7 8F LDA [$8F],Y C2/BAF2: 30 0A BMI $BAFE C2/BAF4: AD 4E 2F LDA $2F4E C2/BAF7: 05 12 ORA $12 C2/BAF9: 8D 4E 2F STA $2F4E C2/BAFC: 80 0D BRA $BB0B C2/BAFE: AD 4C 2F LDA $2F4C C2/BB01: 05 12 ORA $12 C2/BB03: 8D 4C 2F STA $2F4C C2/BB06: A9 FF LDA #$FF C2/BB08: 9D 01 40 STA $4001,X C2/BB0B: A6 8F LDX $8F C2/BB0D: E8 INX C2/BB0E: 86 8F STX $8F C2/BB10: 6B RTL ; [ ] set_s_mess_poi: C2/BB11: 29 0F AND #$0F C2/BB13: 0A ASL C2/BB14: AA TAX C2/BB15: 7C 18 BB JMP ($BB18,X) C2/BB18: .DW $BB46, $BB1C C2/BB1C: A0 02 00 LDY #$0002 C2/BB1F: B1 76 LDA ($76),Y C2/BB21: 85 22 STA $22 C2/BB23: A9 0C LDA #$0C C2/BB25: 85 24 STA $24 C2/BB27: 22 D5 18 C1 JSL $C118D5 C2/BB2B: A6 26 LDX $26 C2/BB2D: 7B TDC C2/BB2E: A8 TAY C2/BB2F: BF 40 3C CF LDA $CF3C40,X C2/BB33: C9 FF CMP #$FF C2/BB35: F0 0A BEQ $BB41 C2/BB37: 99 D5 57 STA $57D5,Y C2/BB3A: E8 INX C2/BB3B: C8 INY C2/BB3C: C0 0C 00 CPY #$000C C2/BB3F: D0 EE BNE $BB2F C2/BB41: 7B TDC C2/BB42: 99 D5 57 STA $57D5,Y C2/BB45: 6B RTL C2/BB46: A0 02 00 LDY #$0002 C2/BB49: B1 76 LDA ($76),Y C2/BB4B: 85 22 STA $22 C2/BB4D: A9 0A LDA #$0A C2/BB4F: 85 24 STA $24 C2/BB51: 22 D5 18 C1 JSL $C118D5 C2/BB55: A6 26 LDX $26 C2/BB57: 7B TDC C2/BB58: A8 TAY C2/BB59: BF 8F FE E6 LDA $E6FE8F,X ; esper attack names C2/BB5D: C9 FF CMP #$FF C2/BB5F: F0 0A BEQ $BB6B C2/BB61: 99 D5 57 STA $57D5,Y C2/BB64: E8 INX C2/BB65: C8 INY C2/BB66: C0 0A 00 CPY #$000A C2/BB69: D0 EE BNE $BB59 C2/BB6B: 7B TDC C2/BB6C: 99 D5 57 STA $57D5,Y C2/BB6F: 6B RTL x_image_offset: C2/BB70: .DW $0000, $0000, $0000, $0000, $0000, $0020, $0020, $0040 C2/BB80: .DW $0040, $0060, $0060, $0080, $0080, $00A0, $00A0, $00C0 C2/BB90: .DW $00C0 y_image_offset: C2/BB92: .DW $0000, $0000, $0000, $0000, $0000, $0200, $0200, $0400 C2/BBA2: .DW $0400, $0600, $0600, $0800, $0800, $0A00, $0A00, $0C00 C2/BBB2: .DW $0C00 ; [ Battle Animation Command $80/$68: Load Extra Esper Graphics ] ; used by purifier (crusader) magic_init_104long: C2/BBB4: AE F6 7A LDX $7AF6 C2/BBB7: DA PHX C2/BBB8: 22 69 24 C1 JSL $C12469 ; load crusader graphics (bg1) C2/BBBC: 7B TDC C2/BBBD: AA TAX C2/BBBE: BD 60 7E LDA $7E60,X ; copy bg1 animation palette to character 3 sprite palette C2/BBC1: 9D C0 7F STA $7FC0,X C2/BBC4: E8 INX C2/BBC5: E0 20 00 CPX #$0020 C2/BBC8: D0 F4 BNE $BBBE C2/BBCA: EE B0 62 INC $62B0 C2/BBCD: FA PLX C2/BBCE: 6B RTL ; [ Battle Animation Command $80/$67: Load Extra Esper Palette ] ; used by purifier (crusader) magic_init_103long: C2/BBCF: AE 69 61 LDX $6169 C2/BBD2: 7B TDC C2/BBD3: A8 TAY C2/BBD4: BF 40 78 D2 LDA $D27840,X ; monster palette C2/BBD8: 99 E0 7F STA $7FE0,Y C2/BBDB: 99 E0 7D STA $7DE0,Y C2/BBDE: E8 INX C2/BBDF: C8 INY C2/BBE0: C0 20 00 CPY #$0020 ; 16 colors C2/BBE3: D0 EF BNE $BBD4 C2/BBE5: 6B RTL ; [ Update Random Number ] ; A = (0..255) (out) get_rnd2: C2/BBE6: DA PHX C2/BBE7: A5 72 LDA $72 C2/BBE9: AA TAX C2/BBEA: E6 72 INC $72 C2/BBEC: BF 00 FD C0 LDA $C0FD00,X C2/BBF0: FA PLX C2/BBF1: 60 RTS ; rainbow palette indexes (orange, purple, blue, green, gray, red, purple, green) magic_rnd_col_tbl: C2/BBF2: .DB $C0, $C1, $C2, $C3, $C4, $C5, $C1, $C3 ; [ Battle Animation Command $80/$66: Clear Thread Offset ] magic_init_102long: C2/BBFA: AE F6 7A LDX $7AF6 C2/BBFD: C2 20 REP #$20 C2/BBFF: 9E CE 74 STZ $74CE,X C2/BC02: 9E D0 74 STZ $74D0,X C2/BC05: E2 20 SEP #$20 C2/BC07: 6B RTL ; [ Battle Animation Command $80/$65: Change Rainbow Palette ] magic_init_101long: C2/BC08: A5 0E LDA $0E ; frame counter C2/BC0A: 29 07 AND #$07 C2/BC0C: D0 29 BNE $BC37 ; return 7/8 frames C2/BC0E: 20 E6 BB JSR $BBE6 ; update random number C2/BC11: 29 07 AND #$07 C2/BC13: AA TAX C2/BC14: BF F2 BB C2 LDA $C2BBF2,X ; rainbow palette index C2/BC18: C2 20 REP #$20 C2/BC1A: 0A ASL C2/BC1B: 0A ASL C2/BC1C: 0A ASL C2/BC1D: 0A ASL C2/BC1E: AA TAX C2/BC1F: 7B TDC C2/BC20: A8 TAY C2/BC21: BF 00 60 D2 LDA $D26000,X ; battle animation palettes C2/BC25: 99 60 7F STA $7F60,Y ; sprite animation palette C2/BC28: 99 70 7F STA $7F70,Y C2/BC2B: E8 INX C2/BC2C: E8 INX C2/BC2D: C8 INY C2/BC2E: C8 INY C2/BC2F: C0 10 00 CPY #$0010 C2/BC32: D0 ED BNE $BC21 C2/BC34: 7B TDC C2/BC35: E2 20 SEP #$20 C2/BC37: 6B RTL ; [ Battle Animation Command $80/$5F: Increase/Decrease Blue Backdrop Gradient ] ; b1 = increase/decrease amount ; used by overcast magic_init_95long: C2/BC38: A0 01 00 LDY #$0001 C2/BC3B: AD AE 62 LDA $62AE C2/BC3E: 18 CLC C2/BC3F: 77 5B ADC [$5B],Y C2/BC41: 8D AE 62 STA $62AE C2/BC44: 85 12 STA $12 C2/BC46: A9 E0 LDA #$E0 C2/BC48: 8D 96 89 STA $8996 C2/BC4B: A2 5C 02 LDX #$025C C2/BC4E: A0 04 00 LDY #$0004 C2/BC51: 64 10 STZ $10 C2/BC53: A5 10 LDA $10 C2/BC55: 4A LSR C2/BC56: 4A LSR C2/BC57: 38 SEC C2/BC58: E5 12 SBC $12 C2/BC5A: 10 01 BPL $BC5D C2/BC5C: 7B TDC C2/BC5D: 09 80 ORA #$80 ; blue flag C2/BC5F: 99 96 89 STA $8996,Y ; -> $2132 C2/BC62: 9D 96 89 STA $8996,X C2/BC65: CA DEX C2/BC66: CA DEX C2/BC67: CA DEX C2/BC68: CA DEX C2/BC69: C8 INY C2/BC6A: C8 INY C2/BC6B: C8 INY C2/BC6C: C8 INY C2/BC6D: E6 10 INC $10 C2/BC6F: A5 10 LDA $10 C2/BC71: C9 4C CMP #$4C C2/BC73: D0 DE BNE $BC53 C2/BC75: A4 5B LDY $5B C2/BC77: C8 INY C2/BC78: 84 5B STY $5B C2/BC7A: EE AD 62 INC $62AD C2/BC7D: AE F6 7A LDX $7AF6 C2/BC80: 6B RTL ; [ Battle Animation Command $80/$5C: ] magic_init_92long: C2/BC81: C2 20 REP #$20 C2/BC83: 7B TDC C2/BC84: AA TAX C2/BC85: 9D F5 44 STA $44F5,X C2/BC88: 9D 75 44 STA $4475,X C2/BC8B: 9D B0 63 STA $63B0,X C2/BC8E: E8 INX C2/BC8F: E8 INX C2/BC90: E0 80 00 CPX #$0080 C2/BC93: D0 F0 BNE $BC85 C2/BC95: 7B TDC C2/BC96: E2 20 SEP #$20 C2/BC98: 6B RTL ; [ Battle Animation Command $80/$5B: ] magic_init_91long: C2/BC99: 7B TDC C2/BC9A: AA TAX C2/BC9B: BF 00 FD C0 LDA $C0FD00,X C2/BC9F: 29 1F AND #$1F C2/BCA1: 9D F5 44 STA $44F5,X C2/BCA4: 9E F6 44 STZ $44F6,X C2/BCA7: 9E 75 44 STZ $4475,X C2/BCAA: 9E 76 44 STZ $4476,X C2/BCAD: E8 INX C2/BCAE: E8 INX C2/BCAF: E8 INX C2/BCB0: E8 INX C2/BCB1: E0 80 00 CPX #$0080 C2/BCB4: D0 E5 BNE $BC9B C2/BCB6: 6B RTL ; [ Battle Animation Command $80/$5A: ] magic_init_90long: C2/BCB7: C2 20 REP #$20 C2/BCB9: 7B TDC C2/BCBA: AA TAX C2/BCBB: BD F5 44 LDA $44F5,X C2/BCBE: F0 05 BEQ $BCC5 C2/BCC0: DE F5 44 DEC $44F5,X C2/BCC3: 80 11 BRA $BCD6 C2/BCC5: BD 75 44 LDA $4475,X C2/BCC8: 38 SEC C2/BCC9: E9 08 00 SBC #$0008 C2/BCCC: 9D 75 44 STA $4475,X C2/BCCF: 18 CLC C2/BCD0: 7D B0 63 ADC $63B0,X C2/BCD3: 9D B0 63 STA $63B0,X C2/BCD6: E8 INX C2/BCD7: E8 INX C2/BCD8: E8 INX C2/BCD9: E8 INX C2/BCDA: E0 80 00 CPX #$0080 C2/BCDD: D0 DC BNE $BCBB C2/BCDF: 7B TDC C2/BCE0: E2 20 SEP #$20 C2/BCE2: 6B RTL ; [ Battle Animation Command $80/$59: ] magic_init_89long: C2/BCE3: A0 01 00 LDY #$0001 C2/BCE6: B7 5B LDA [$5B],Y C2/BCE8: D0 15 BNE $BCFF C2/BCEA: 7B TDC C2/BCEB: AA TAX C2/BCEC: C2 20 REP #$20 C2/BCEE: A9 08 F7 LDA #$F708 C2/BCF1: 9D 21 9A STA $9A21,X C2/BCF4: E8 INX C2/BCF5: E8 INX C2/BCF6: E8 INX C2/BCF7: E8 INX C2/BCF8: E0 5C 02 CPX #$025C C2/BCFB: D0 F4 BNE $BCF1 C2/BCFD: 80 3B BRA $BD3A C2/BCFF: C2 20 REP #$20 C2/BD01: 0A ASL C2/BD02: 0A ASL C2/BD03: 85 10 STA $10 C2/BD05: 7B TDC C2/BD06: AA TAX C2/BD07: A0 5C 02 LDY #$025C C2/BD0A: A9 FF 00 LDA #$00FF C2/BD0D: 9D 21 9A STA $9A21,X C2/BD10: 99 21 9A STA $9A21,Y C2/BD13: E8 INX C2/BD14: E8 INX C2/BD15: E8 INX C2/BD16: E8 INX C2/BD17: 88 DEY C2/BD18: 88 DEY C2/BD19: 88 DEY C2/BD1A: 88 DEY C2/BD1B: E4 10 CPX $10 C2/BD1D: D0 EE BNE $BD0D C2/BD1F: E0 30 01 CPX #$0130 C2/BD22: F0 16 BEQ $BD3A C2/BD24: A9 08 F7 LDA #$F708 C2/BD27: 9D 21 9A STA $9A21,X C2/BD2A: 99 21 9A STA $9A21,Y C2/BD2D: E8 INX C2/BD2E: E8 INX C2/BD2F: E8 INX C2/BD30: E8 INX C2/BD31: 88 DEY C2/BD32: 88 DEY C2/BD33: 88 DEY C2/BD34: 88 DEY C2/BD35: E0 30 01 CPX #$0130 C2/BD38: D0 ED BNE $BD27 C2/BD3A: E6 5B INC $5B C2/BD3C: 7B TDC C2/BD3D: E2 20 SEP #$20 C2/BD3F: EE 97 61 INC $6197 C2/BD42: 6B RTL ; [ Init Character AI Data ] scene_init: C2/BD43: A9 FF LDA #$FF C2/BD45: 8D 9D 62 STA $629D C2/BD48: 9C 47 2F STZ $2F47 C2/BD4B: 9C 92 61 STZ $6192 C2/BD4E: C2 20 REP #$20 C2/BD50: 7B TDC C2/BD51: AA TAX C2/BD52: A9 FF FF LDA #$FFFF C2/BD55: 9D 46 62 STA $6246,X C2/BD58: E8 INX C2/BD59: E8 INX C2/BD5A: E0 10 00 CPX #$0010 C2/BD5D: D0 F6 BNE $BD55 C2/BD5F: 7B TDC C2/BD60: E2 20 SEP #$20 C2/BD62: AD 49 2F LDA $2F49 C2/BD65: 10 2E BPL $BD95 ; branch if character AI is disabled C2/BD67: AD 4A 2F LDA $2F4A ; character AI index C2/BD6A: 85 22 STA $22 C2/BD6C: A9 18 LDA #$18 C2/BD6E: 85 24 STA $24 C2/BD70: 22 D5 18 C1 JSL $C118D5 ; multiply $22 * $24 C2/BD74: A6 26 LDX $26 C2/BD76: BF 01 FD D0 LDA $D0FD01,X ; special battle background C2/BD7A: C9 FF CMP #$FF C2/BD7C: F0 06 BEQ $BD84 ; branch if no special background C2/BD7E: 8D B8 EC STA $ECB8 ; set battle background C2/BD81: 9C B9 EC STZ $ECB9 C2/BD84: BF 02 FD D0 LDA $D0FD02,X C2/BD88: 8D 46 2F STA $2F46 ; characters that can be targetted C2/BD8B: BF 03 FD D0 LDA $D0FD03,X C2/BD8F: 8D 9D 62 STA $629D ; special song index C2/BD92: 20 6E BE JSR $BE6E ; C2/BD95: AD 4B 2F LDA $2F4B C2/BD98: 30 36 BMI $BDD0 C2/BD9A: EE ED E9 INC $E9ED ; disable sound effects C2/BD9D: A9 10 LDA #$10 ; spc command $10 (load song) C2/BD9F: 8D 00 13 STA $1300 C2/BDA2: A9 FF LDA #$FF ; full volume C2/BDA4: 8D 02 13 STA $1302 C2/BDA7: AD 9D 62 LDA $629D C2/BDAA: C9 FF CMP #$FF C2/BDAC: D0 11 BNE $BDBF ; branch if a special song from character AI data C2/BDAE: AD 4B 2F LDA $2F4B C2/BDB1: 29 38 AND #$38 C2/BDB3: 4A LSR C2/BDB4: 4A LSR C2/BDB5: 4A LSR C2/BDB6: AA TAX C2/BDB7: BF 3B BF C2 LDA $C2BF3B,X ; default songs C2/BDBB: C9 FF CMP #$FF C2/BDBD: F0 0E BEQ $BDCD ; branch if continuing same song C2/BDBF: 8D 01 13 STA $1301 ; song number C2/BDC2: AD E4 11 LDA $11E4 C2/BDC5: 29 08 AND #$08 C2/BDC7: D0 04 BNE $BDCD ; branch if continuing current music C2/BDC9: 22 04 00 C5 JSL $C50004 ; spc command C2/BDCD: 9C ED E9 STZ $E9ED ; enable sound effects C2/BDD0: 7B TDC C2/BDD1: AA TAX C2/BDD2: A8 TAY C2/BDD3: C2 20 REP #$20 C2/BDD5: 9E C7 2E STZ $2EC7,X C2/BDD8: B9 46 62 LDA $6246,Y C2/BDDB: C9 FF FF CMP #$FFFF C2/BDDE: F0 03 BEQ $BDE3 C2/BDE0: FE C7 2E INC $2EC7,X C2/BDE3: 98 TYA C2/BDE4: 18 CLC C2/BDE5: 69 04 00 ADC #$0004 C2/BDE8: A8 TAY C2/BDE9: 8A TXA C2/BDEA: 18 CLC C2/BDEB: 69 20 00 ADC #$0020 C2/BDEE: AA TAX C2/BDEF: E0 80 00 CPX #$0080 C2/BDF2: D0 E1 BNE $BDD5 C2/BDF4: 7B TDC C2/BDF5: E2 20 SEP #$20 C2/BDF7: A9 01 LDA #$01 C2/BDF9: 85 10 STA $10 C2/BDFB: 7B TDC C2/BDFC: AA TAX C2/BDFD: BD C6 2E LDA $2EC6,X C2/BE00: C9 2F CMP #$2F C2/BE02: D0 08 BNE $BE0C C2/BE04: AD 92 61 LDA $6192 C2/BE07: 05 10 ORA $10 C2/BE09: 8D 92 61 STA $6192 C2/BE0C: 06 10 ASL $10 C2/BE0E: 8A TXA C2/BE0F: 18 CLC C2/BE10: 69 20 ADC #$20 C2/BE12: AA TAX C2/BE13: C9 80 CMP #$80 C2/BE15: D0 E6 BNE $BDFD C2/BE17: AD 92 61 LDA $6192 C2/BE1A: 49 FF EOR #$FF C2/BE1C: 8D 92 61 STA $6192 C2/BE1F: EE ED E9 INC $E9ED ; disable sound effects C2/BE22: A9 82 LDA #$82 C2/BE24: 8D 00 13 STA $1300 C2/BE27: 7B TDC C2/BE28: 8D 01 13 STA $1301 C2/BE2B: 3A DEC C2/BE2C: 8D 02 13 STA $1302 C2/BE2F: AD E4 11 LDA $11E4 C2/BE32: 29 08 AND #$08 C2/BE34: D0 04 BNE $BE3A C2/BE36: 22 04 00 C5 JSL $C50004 ; spc command C2/BE3A: 9C ED E9 STZ $E9ED ; enable sound effects C2/BE3D: AF 4F 1D 00 LDA $001D4F C2/BE41: 29 40 AND #$40 C2/BE43: 8D 9C 62 STA $629C C2/BE46: AF 54 1D 00 LDA $001D54 C2/BE4A: 10 19 BPL $BE65 C2/BE4C: AF 4F 1D 00 LDA $001D4F C2/BE50: 85 10 STA $10 C2/BE52: 7B TDC C2/BE53: AA TAX C2/BE54: A5 10 LDA $10 C2/BE56: 29 01 AND #$01 C2/BE58: 9D 98 61 STA $6198,X C2/BE5B: 46 10 LSR $10 C2/BE5D: E8 INX C2/BE5E: E0 04 00 CPX #$0004 C2/BE61: D0 F1 BNE $BE54 C2/BE63: 80 08 BRA $BE6D C2/BE65: 7B TDC C2/BE66: AA TAX C2/BE67: 8E 98 61 STX $6198 C2/BE6A: 8E 9A 61 STX $619A C2/BE6D: 6B RTL ; [ ] set_play_xy: C2/BE6E: DA PHX C2/BE6F: BF 00 FD D0 LDA $D0FD00,X ; character AI data C2/BE73: 30 74 BMI $BEE9 ; branch if non-AI characters are not shown C2/BE75: A9 04 LDA #$04 C2/BE77: 85 10 STA $10 C2/BE79: BF 04 FD D0 LDA $D0FD04,X C2/BE7D: C9 FF CMP #$FF C2/BE7F: F0 66 BEQ $BEE7 C2/BE81: 29 3F AND #$3F C2/BE83: 85 12 STA $12 C2/BE85: 64 14 STZ $14 C2/BE87: 7B TDC C2/BE88: A8 TAY C2/BE89: A9 01 LDA #$01 ; character bit mask C2/BE8B: 85 18 STA $18 C2/BE8D: B9 C6 2E LDA $2EC6,Y ; actor index C2/BE90: C5 12 CMP $12 C2/BE92: D0 3D BNE $BED1 C2/BE94: BF 04 FD D0 LDA $D0FD04,X C2/BE98: 29 40 AND #$40 C2/BE9A: F0 05 BEQ $BEA1 C2/BE9C: A5 18 LDA $18 C2/BE9E: 8D 47 2F STA $2F47 ; characters acting as enemies C2/BEA1: BF 04 FD D0 LDA $D0FD04,X C2/BEA5: 10 08 BPL $BEAF C2/BEA7: A5 18 LDA $18 C2/BEA9: 0D 92 61 ORA $6192 ; C2/BEAC: 8D 92 61 STA $6192 C2/BEAF: A5 14 LDA $14 C2/BEB1: 0A ASL C2/BEB2: 0A ASL C2/BEB3: A8 TAY C2/BEB4: BF 07 FD D0 LDA $D0FD07,X ; x position C2/BEB8: C9 FF CMP #$FF C2/BEBA: F0 22 BEQ $BEDE C2/BEBC: C2 20 REP #$20 C2/BEBE: 0A ASL C2/BEBF: 99 46 62 STA $6246,Y C2/BEC2: BF 08 FD D0 LDA $D0FD08,X ; y position C2/BEC6: 29 FF 00 AND #$00FF C2/BEC9: 0A ASL C2/BECA: 99 48 62 STA $6248,Y C2/BECD: E2 20 SEP #$20 C2/BECF: 80 0D BRA $BEDE C2/BED1: 06 18 ASL $18 C2/BED3: E6 14 INC $14 C2/BED5: 98 TYA C2/BED6: 18 CLC C2/BED7: 69 20 ADC #$20 C2/BED9: A8 TAY C2/BEDA: C9 80 CMP #$80 C2/BEDC: D0 AF BNE $BE8D C2/BEDE: E8 INX C2/BEDF: E8 INX C2/BEE0: E8 INX C2/BEE1: E8 INX C2/BEE2: E8 INX C2/BEE3: C6 10 DEC $10 C2/BEE5: D0 92 BNE $BE79 C2/BEE7: FA PLX C2/BEE8: 60 RTS ; non-AI characters are not shown C2/BEE9: 7B TDC C2/BEEA: A8 TAY C2/BEEB: A9 01 LDA #$01 ; character bit mask C2/BEED: 85 10 STA $10 C2/BEEF: BF 04 FD D0 LDA $D0FD04,X C2/BEF3: C9 FF CMP #$FF C2/BEF5: F0 17 BEQ $BF0E ; branch if AI character slot is disabled C2/BEF7: 29 40 AND #$40 C2/BEF9: F0 05 BEQ $BF00 ; branch if not acting as enemy C2/BEFB: A5 10 LDA $10 C2/BEFD: 8D 47 2F STA $2F47 ; set character acting as enemy C2/BF00: BF 04 FD D0 LDA $D0FD04,X C2/BF04: 10 08 BPL $BF0E ; branch if character is not shown C2/BF06: A5 10 LDA $10 C2/BF08: 0D 92 61 ORA $6192 ; visible AI characters C2/BF0B: 8D 92 61 STA $6192 C2/BF0E: BF 07 FD D0 LDA $D0FD07,X ; x position C2/BF12: C9 FF CMP #$FF C2/BF14: F0 13 BEQ $BF29 C2/BF16: C2 20 REP #$20 C2/BF18: 0A ASL C2/BF19: 99 46 62 STA $6246,Y C2/BF1C: BF 08 FD D0 LDA $D0FD08,X ; y position C2/BF20: 29 FF 00 AND #$00FF C2/BF23: 0A ASL C2/BF24: 99 48 62 STA $6248,Y C2/BF27: E2 20 SEP #$20 C2/BF29: 06 10 ASL $10 ; next character C2/BF2B: C8 INY C2/BF2C: C8 INY C2/BF2D: C8 INY C2/BF2E: C8 INY C2/BF2F: E8 INX C2/BF30: E8 INX C2/BF31: E8 INX C2/BF32: E8 INX C2/BF33: E8 INX C2/BF34: C0 10 00 CPY #$0010 C2/BF37: D0 B6 BNE $BEEF C2/BF39: FA PLX C2/BF3A: 60 RTS ; battle songs batt_sound_no_tbl: C2/BF3B: .DB $24, $14, $33, $2E, $1A, $3B, $FF, $FF ; pointers to condemned numeral graphics for each character (gets copied to $E9D2-$E9D9, +$7F0000) deth_get_poi_tbl: C2/BF43: .DW $C200, $C240, $C280, $C2C0 C2/BF4B: .DW $C300, $C340, $C380, $C3C0 ; [ Update Condemned Numeral Graphics ] ; updates one character every 4 frames deth_counter_set: C2/BF53: AD DB E9 LDA $E9DB ; counter for condemned numerals C2/BF56: 29 03 AND #$03 C2/BF58: D0 30 BNE $BF8A C2/BF5A: AD DB E9 LDA $E9DB C2/BF5D: 4A LSR C2/BF5E: 4A LSR C2/BF5F: 29 03 AND #$03 ; character number C2/BF61: AA TAX C2/BF62: BD 2A 20 LDA $202A,X ; condemned counter value C2/BF65: F0 05 BEQ $BF6C ; branch if zero C2/BF67: 20 8E BF JSR $BF8E ; draw condemned numeral graphics C2/BF6A: 80 1E BRA $BF8A C2/BF6C: 8A TXA C2/BF6D: 0A ASL C2/BF6E: AA TAX C2/BF6F: C2 20 REP #$20 C2/BF71: BF 43 BF C2 LDA $C2BF43,X ; pointer to condemned numeral graphics C2/BF75: AA TAX C2/BF76: 7B TDC C2/BF77: A0 20 00 LDY #$0020 C2/BF7A: 9F 00 00 7F STA $7F0000,X ; clear condemned numeral graphics (2 tiles, 32 bytes each) C2/BF7E: 9F 00 01 7F STA $7F0100,X ; clear backwards condemned numeral graphics C2/BF82: E8 INX C2/BF83: E8 INX C2/BF84: 88 DEY C2/BF85: D0 F3 BNE $BF7A C2/BF87: 7B TDC C2/BF88: E2 20 SEP #$20 C2/BF8A: EE DB E9 INC $E9DB ; increment counter C2/BF8D: 6B RTL ; [ Draw Condemned Numeral Graphics ] set_deth_counter_font: C2/BF8E: A0 00 00 LDY #$0000 C2/BF91: BD 2A 20 LDA $202A,X ; condemned counter C2/BF94: 3A DEC C2/BF95: 38 SEC C2/BF96: E9 0A SBC #$0A ; subtract 10 C2/BF98: 90 03 BCC $BF9D ; branch if less than 0 C2/BF9A: C8 INY C2/BF9B: 80 F8 BRA $BF95 C2/BF9D: 18 CLC C2/BF9E: 69 0A ADC #$0A C2/BFA0: 85 10 STA $10 ; $10 = ones digit C2/BFA2: 84 12 STY $12 ; $12 = tens digit C2/BFA4: 8B PHB C2/BFA5: A9 7F LDA #$7F C2/BFA7: 48 PHA C2/BFA8: AB PLB C2/BFA9: 8A TXA C2/BFAA: 0A ASL C2/BFAB: AA TAX C2/BFAC: C2 20 REP #$20 C2/BFAE: DA PHX C2/BFAF: BF 43 BF C2 LDA $C2BF43,X ; pointer to condemned numeral graphics C2/BFB3: AA TAX C2/BFB4: A5 12 LDA $12 C2/BFB6: 20 DF BF JSR $BFDF C2/BFB9: A5 10 LDA $10 C2/BFBB: 20 DF BF JSR $BFDF C2/BFBE: FA PLX C2/BFBF: BF 4B BF C2 LDA $C2BF4B,X ; pointer to condemned numeral graphics (backwards) C2/BFC3: AA TAX C2/BFC4: A5 10 LDA $10 C2/BFC6: 20 D3 BF JSR $BFD3 C2/BFC9: A5 12 LDA $12 C2/BFCB: 20 D3 BF JSR $BFD3 C2/BFCE: 7B TDC C2/BFCF: E2 20 SEP #$20 C2/BFD1: AB PLB C2/BFD2: 60 RTS one_num_set3: C2/BFD3: DA PHX C2/BFD4: 29 FF 00 AND #$00FF C2/BFD7: 0A ASL C2/BFD8: AA TAX C2/BFD9: BF 13 C0 C2 LDA $C2C013,X ; pointer to backwards numeral graphics C2/BFDD: 80 0A BRA $BFE9 one_num_set2: C2/BFDF: DA PHX C2/BFE0: 29 FF 00 AND #$00FF C2/BFE3: 0A ASL C2/BFE4: AA TAX C2/BFE5: BF FF BF C2 LDA $C2BFFF,X ; pointer to numeral graphics one_num_set2_main: C2/BFE9: A8 TAY C2/BFEA: FA PLX C2/BFEB: A9 10 00 LDA #$0010 C2/BFEE: 85 14 STA $14 C2/BFF0: B9 00 00 LDA $0000,Y ; copy to condemned numeral C2/BFF3: 9D 00 00 STA $0000,X C2/BFF6: E8 INX C2/BFF7: E8 INX C2/BFF8: C8 INY C2/BFF9: C8 INY C2/BFFA: C6 14 DEC $14 C2/BFFC: D0 F2 BNE $BFF0 C2/BFFE: 60 RTS ; pointers to numeral graphics (10 digits, +$7F0000) num_get_poi2: C2/BFFF: .DW $BE00, $BE20, $BE40, $BE60, $BE80, $BEA0, $BEC0, $BEE0, $BF00, $BF20 ; pointers to backwards numeral graphics (10 digits, +$7F0000) num_get_poi3: C2/C013: .DW $C000, $C020, $C040, $C060, $C080, $C0A0, $C0C0, $C0E0, $C100, $C120 ; [ ] cgx_mode7_chg: C2/C027: 85 12 STA $12 C2/C029: 86 10 STX $10 C2/C02B: 8B PHB C2/C02C: A9 7F LDA #$7F C2/C02E: 48 PHA C2/C02F: AB PLB C2/C030: 7B TDC C2/C031: AA TAX C2/C032: A9 08 LDA #$08 C2/C034: 85 18 STA $18 C2/C036: C2 20 REP #$20 C2/C038: A0 10 00 LDY #$0010 C2/C03B: A7 10 LDA [$10] C2/C03D: 85 1C STA $1C C2/C03F: B7 10 LDA [$10],Y C2/C041: 85 1A STA $1A C2/C043: 7B TDC C2/C044: E2 20 SEP #$20 C2/C046: A0 08 00 LDY #$0008 C2/C049: 7B TDC C2/C04A: 06 1B ASL $1B C2/C04C: 2A ROL C2/C04D: 06 1A ASL $1A C2/C04F: 2A ROL C2/C050: 06 1D ASL $1D C2/C052: 2A ROL C2/C053: 06 1C ASL $1C C2/C055: 2A ROL C2/C056: 29 1F AND #$1F C2/C058: F0 02 BEQ $C05C C2/C05A: 09 30 ORA #$30 C2/C05C: 9D 01 C4 STA $C401,X C2/C05F: E8 INX C2/C060: E8 INX C2/C061: 88 DEY C2/C062: D0 E5 BNE $C049 C2/C064: A4 10 LDY $10 C2/C066: C8 INY C2/C067: C8 INY C2/C068: 84 10 STY $10 C2/C06A: C6 18 DEC $18 C2/C06C: D0 C8 BNE $C036 C2/C06E: C2 20 REP #$20 C2/C070: A5 10 LDA $10 C2/C072: 18 CLC C2/C073: 69 10 00 ADC #$0010 C2/C076: 85 10 STA $10 C2/C078: 7B TDC C2/C079: E2 20 SEP #$20 C2/C07B: C6 14 DEC $14 C2/C07D: D0 B3 BNE $C032 C2/C07F: AB PLB C2/C080: 6B RTL ; [ Battle Animation Command $C7: ] good_code_jmp: C2/C081: A7 5B LDA [$5B] C2/C083: 0A ASL C2/C084: AA TAX C2/C085: FC 8C C0 JSR ($C08C,X) C2/C088: AE F6 7A LDX $7AF6 C2/C08B: 6B RTL good_init_jmp: C2/C08C: .DW $C39B, $C362, $C31E, $C339, $C303, $C2B7, $C26A, $C247 C2/C09C: .DW $C1D6, $C1B3, $C194, $C171, $C136, $C115, $C0F8, $C0F2 C2/C0AC: .DW $C0B9, $C0B0 ; [ Battle Animation Command $C7/$11: Disable Running with L+R ] C2/C0B0: AD 4B 2F LDA $2F4B ; disable running with L+R C2/C0B3: 09 01 ORA #$01 C2/C0B5: 8D 4B 2F STA $2F4B C2/C0B8: 60 RTS ; [ Battle Animation Command $C7/$10: Make Actor Visible ] ; b1: actor index C2/C0B9: A0 01 00 LDY #$0001 C2/C0BC: B7 5B LDA [$5B],Y C2/C0BE: 20 D2 C0 JSR $C0D2 C2/C0C1: AA TAX C2/C0C2: BF 01 1A C1 LDA $C11A01,X ; bit mask C2/C0C6: 0D 92 61 ORA $6192 C2/C0C9: 8D 92 61 STA $6192 C2/C0CC: A4 5B LDY $5B C2/C0CE: C8 INY C2/C0CF: 84 5B STY $5B C2/C0D1: 60 RTS ; [ ] get_cas_chg: C2/C0D2: 85 10 STA $10 C2/C0D4: 7B TDC C2/C0D5: AA TAX C2/C0D6: 64 12 STZ $12 C2/C0D8: A5 10 LDA $10 C2/C0DA: DD C6 2E CMP $2EC6,X ; actor index C2/C0DD: F0 0E BEQ $C0ED C2/C0DF: E6 12 INC $12 C2/C0E1: 8A TXA C2/C0E2: 18 CLC C2/C0E3: 69 20 ADC #$20 C2/C0E5: AA TAX C2/C0E6: E0 80 00 CPX #$0080 C2/C0E9: D0 ED BNE $C0D8 C2/C0EB: 7B TDC C2/C0EC: 60 RTS C2/C0ED: A5 12 LDA $12 C2/C0EF: 29 03 AND #$03 C2/C0F1: 60 RTS ; [ Battle Animation Command $C7/$0F: ] C2/C0F2: A9 01 LDA #$01 C2/C0F4: 1C 52 2F TRB $2F52 C2/C0F7: 60 RTS ; [ Battle Animation Command $C7/$0E: Enable/Disable Background Shaking ] ; b1: h------s ; h = horizontal shaking only ; s = enable screen shaking (battle bg) C2/C0F8: A0 01 00 LDY #$0001 C2/C0FB: B7 5B LDA [$5B],Y C2/C0FD: F0 05 BEQ $C104 C2/C0FF: 8D 85 62 STA $6285 C2/C102: 80 0B BRA $C10F C2/C104: 9C 85 62 STZ $6285 C2/C107: 7B TDC C2/C108: AA TAX C2/C109: 8E B0 64 STX $64B0 ; clear bg2 scroll position C2/C10C: 8E B2 64 STX $64B2 C2/C10F: A4 5B LDY $5B C2/C111: C8 INY C2/C112: 84 5B STY $5B C2/C114: 60 RTS ; [ Battle Animation Command $C7/$0D: Change Monster Palette 1 ] ; b1: battle event palette index C2/C115: A0 01 00 LDY #$0001 C2/C118: B7 5B LDA [$5B],Y C2/C11A: 0A ASL C2/C11B: 0A ASL C2/C11C: 0A ASL C2/C11D: 0A ASL C2/C11E: 0A ASL C2/C11F: AA TAX C2/C120: 7B TDC C2/C121: A8 TAY C2/C122: BF 99 D4 C2 LDA $C2D499,X ; battle event palette C2/C126: 99 00 7F STA $7F00,Y ; monster palette 1 C2/C129: E8 INX C2/C12A: C8 INY C2/C12B: C0 20 00 CPY #$0020 C2/C12E: D0 F2 BNE $C122 C2/C130: A4 5B LDY $5B C2/C132: C8 INY C2/C133: 84 5B STY $5B C2/C135: 60 RTS ; [ Battle Animation Command $C7/$0C: Change Character Graphics Index ] ; b1: actor index ; b2: new graphics index C2/C136: A0 01 00 LDY #$0001 C2/C139: B7 5B LDA [$5B],Y C2/C13B: 85 12 STA $12 C2/C13D: 7B TDC C2/C13E: AA TAX C2/C13F: 64 10 STZ $10 C2/C141: BD C6 2E LDA $2EC6,X ; actor index C2/C144: C5 12 CMP $12 C2/C146: F0 0E BEQ $C156 C2/C148: E6 10 INC $10 C2/C14A: 8A TXA C2/C14B: 18 CLC C2/C14C: 69 20 ADC #$20 C2/C14E: AA TAX C2/C14F: E0 80 00 CPX #$0080 C2/C152: D0 ED BNE $C141 C2/C154: 80 14 BRA $C16A C2/C156: C8 INY C2/C157: B7 5B LDA [$5B],Y C2/C159: 9D AE 2E STA $2EAE,X ; character graphics index C2/C15C: A5 10 LDA $10 C2/C15E: 8D 78 7B STA $7B78 C2/C161: AE F6 7A LDX $7AF6 C2/C164: DA PHX C2/C165: 22 75 2F C1 JSL $C12F75 C2/C169: FA PLX C2/C16A: A4 5B LDY $5B C2/C16C: C8 INY C2/C16D: C8 INY C2/C16E: 84 5B STY $5B C2/C170: 60 RTS ; [ Battle Animation Command $C7/$0B: SPC Command ] C2/C171: A0 01 00 LDY #$0001 C2/C174: EE ED E9 INC $E9ED ; disable sound effects C2/C177: 7B TDC C2/C178: AA TAX C2/C179: B7 5B LDA [$5B],Y C2/C17B: 9D 00 13 STA $1300,X C2/C17E: C8 INY C2/C17F: E8 INX C2/C180: E0 03 00 CPX #$0003 C2/C183: D0 F4 BNE $C179 C2/C185: 22 04 00 C5 JSL $C50004 ; spc command C2/C189: 9C ED E9 STZ $E9ED ; enable sound effects C2/C18C: A4 5B LDY $5B C2/C18E: C8 INY C2/C18F: C8 INY C2/C190: C8 INY C2/C191: 84 5B STY $5B C2/C193: 60 RTS ; [ Battle Animation Command $C7/$0A: ] C2/C194: A0 01 00 LDY #$0001 C2/C197: B7 5B LDA [$5B],Y C2/C199: 22 C6 BA C1 JSL $C1BAC6 C2/C19D: A4 5B LDY $5B C2/C19F: C8 INY C2/C1A0: 84 5B STY $5B C2/C1A2: 60 RTS ; character actions for vector directions (arms up) C2/C1A3: .DB $19, $18, $18, $1A, $1A, $1B, $1B, $19 C2/C1AB: .DB $1A, $18, $18, $19, $19, $1B, $1B, $1A ; [ Battle Animation Command $C7/$09: Update Character Action Based on Vector Direction (arms up) ] C2/C1B3: 22 99 F9 C1 JSL $C1F999 ; calculate angle between points C2/C1B7: 48 PHA C2/C1B8: 20 A7 C2 JSR $C2A7 ; get pointer to attacker thread data C2/C1BB: BD 87 6F LDA $6F87,X C2/C1BE: F0 02 BEQ $C1C2 ; branch if not mirrored C2/C1C0: A9 08 LDA #$08 C2/C1C2: 85 10 STA $10 C2/C1C4: 68 PLA C2/C1C5: 4A LSR C2/C1C6: 4A LSR C2/C1C7: 4A LSR C2/C1C8: 4A LSR C2/C1C9: 4A LSR C2/C1CA: 18 CLC C2/C1CB: 65 10 ADC $10 C2/C1CD: AA TAX C2/C1CE: BF A3 C1 C2 LDA $C2C1A3,X C2/C1D2: 99 C0 61 STA $61C0,Y C2/C1D5: 60 RTS ; [ Battle Animation Command $C7/$08: ] C2/C1D6: 64 11 STZ $11 C2/C1D8: 64 13 STZ $13 C2/C1DA: A0 01 00 LDY #$0001 C2/C1DD: B7 5B LDA [$5B],Y C2/C1DF: 10 02 BPL $C1E3 C2/C1E1: C6 11 DEC $11 C2/C1E3: 85 10 STA $10 C2/C1E5: C8 INY C2/C1E6: B7 5B LDA [$5B],Y C2/C1E8: 10 02 BPL $C1EC C2/C1EA: C6 13 DEC $13 C2/C1EC: 85 12 STA $12 C2/C1EE: C2 20 REP #$20 C2/C1F0: AE F6 7A LDX $7AF6 C2/C1F3: BD 87 6F LDA $6F87,X C2/C1F6: 29 FF 00 AND #$00FF C2/C1F9: D0 1A BNE $C215 ; branch if mirrored C2/C1FB: BD 7E 6F LDA $6F7E,X ; attacker x position C2/C1FE: BD 82 6F LDA $6F82,X ; target x position C2/C201: 18 CLC C2/C202: 65 10 ADC $10 C2/C204: 9D 82 6F STA $6F82,X ; target x position C2/C207: BD 80 6F LDA $6F80,X ; attacker y position C2/C20A: BD 84 6F LDA $6F84,X ; target y position C2/C20D: 18 CLC C2/C20E: 65 12 ADC $12 C2/C210: 9D 84 6F STA $6F84,X ; target y position C2/C213: 80 1A BRA $C22F C2/C215: A5 10 LDA $10 C2/C217: 49 FF FF EOR #$FFFF C2/C21A: 1A INC C2/C21B: 85 10 STA $10 C2/C21D: BD 82 6F LDA $6F82,X ; target x position C2/C220: 18 CLC C2/C221: 65 10 ADC $10 C2/C223: 9D 82 6F STA $6F82,X C2/C226: BD 84 6F LDA $6F84,X C2/C229: 18 CLC C2/C22A: 65 12 ADC $12 C2/C22C: 9D 84 6F STA $6F84,X C2/C22F: E6 5B INC $5B C2/C231: E6 5B INC $5B C2/C233: 7B TDC C2/C234: E2 20 SEP #$20 C2/C236: 60 RTS ; character actions for vector directions (walking) C2/C237: .DB $03, $02, $02, $04, $04, $05, $05, $03 C2/C23F: .DB $04, $02, $02, $03, $03, $05, $05, $04 ; [ Battle Animation Command $C7/$07: Update Character Action Based on Vector Direction (walking) ] C2/C247: 22 99 F9 C1 JSL $C1F999 ; calculate angle between points C2/C24B: 48 PHA C2/C24C: 20 A7 C2 JSR $C2A7 ; get pointer to attacker thread data C2/C24F: BD 87 6F LDA $6F87,X C2/C252: F0 02 BEQ $C256 C2/C254: A9 08 LDA #$08 C2/C256: 85 10 STA $10 C2/C258: 68 PLA C2/C259: 4A LSR C2/C25A: 4A LSR C2/C25B: 4A LSR C2/C25C: 4A LSR C2/C25D: 4A LSR C2/C25E: 18 CLC C2/C25F: 65 10 ADC $10 C2/C261: AA TAX C2/C262: BF 37 C2 C2 LDA $C2C237,X C2/C266: 99 C0 61 STA $61C0,Y ; character tertiary graphic action C2/C269: 60 RTS ; [ Battle Animation Command $C7/$06: Move Character ] ; b1: x position ; b2: y position C2/C26A: A0 01 00 LDY #$0001 C2/C26D: B7 5B LDA [$5B],Y C2/C26F: 85 10 STA $10 C2/C271: C8 INY C2/C272: B7 5B LDA [$5B],Y C2/C274: 85 12 STA $12 C2/C276: 64 11 STZ $11 C2/C278: 64 13 STZ $13 C2/C27A: 20 A7 C2 JSR $C2A7 ; get pointer to attacker thread data C2/C27D: C2 20 REP #$20 C2/C27F: A5 10 LDA $10 C2/C281: 99 B7 61 STA $61B7,Y ; character x position C2/C284: 7B TDC C2/C285: 99 C5 61 STA $61C5,Y ; character x offset C2/C288: 99 D4 61 STA $61D4,Y ; character x offset (animation) C2/C28B: A5 12 LDA $12 C2/C28D: 99 B9 61 STA $61B9,Y ; character y position C2/C290: 7B TDC C2/C291: 99 C7 61 STA $61C7,Y C2/C294: 99 D2 61 STA $61D2,Y C2/C297: E6 5B INC $5B C2/C299: E6 5B INC $5B C2/C29B: 7B TDC C2/C29C: E2 20 SEP #$20 C2/C29E: 60 RTS ; [ Get Pointer to Target Thread Data ] get_obj_y_poi2: C2/C29F: AE F6 7A LDX $7AF6 C2/C2A2: BD 39 6A LDA $6A39,X ; attacker C2/C2A5: 80 06 BRA $C2AD ; [ Get Pointer to Attacker Thread Data ] get_obj_y_poi: C2/C2A7: AE F6 7A LDX $7AF6 C2/C2AA: BD 38 6A LDA $6A38,X ; attacker C2/C2AD: 0A ASL C2/C2AE: 0A ASL C2/C2AF: 0A ASL C2/C2B0: 0A ASL C2/C2B1: 0A ASL C2/C2B2: A8 TAY C2/C2B3: 8C F8 7A STY $7AF8 C2/C2B6: 60 RTS ; [ Battle Animation Command $C7/$05: Set Vector Target to Actor Position ] ; b1: actor index C2/C2B7: A0 01 00 LDY #$0001 C2/C2BA: B7 5B LDA [$5B],Y C2/C2BC: 85 10 STA $10 C2/C2BE: 7B TDC C2/C2BF: A8 TAY C2/C2C0: AA TAX C2/C2C1: B9 C6 2E LDA $2EC6,Y ; actor index C2/C2C4: C5 10 CMP $10 C2/C2C6: F0 0D BEQ $C2D5 ; branch if it matches C2/C2C8: E8 INX ; check next character C2/C2C9: 98 TYA C2/C2CA: 18 CLC C2/C2CB: 69 20 ADC #$20 C2/C2CD: A8 TAY C2/C2CE: E0 04 00 CPX #$0004 C2/C2D1: D0 EE BNE $C2C1 C2/C2D3: 7B TDC C2/C2D4: AA TAX C2/C2D5: 8A TXA C2/C2D6: 0A ASL C2/C2D7: 0A ASL C2/C2D8: 0A ASL C2/C2D9: 0A ASL C2/C2DA: 0A ASL C2/C2DB: A8 TAY C2/C2DC: AE F6 7A LDX $7AF6 C2/C2DF: C2 20 REP #$20 C2/C2E1: B9 B7 61 LDA $61B7,Y ; character x position C2/C2E4: 18 CLC C2/C2E5: 79 C5 61 ADC $61C5,Y ; character x offset C2/C2E8: 18 CLC C2/C2E9: 79 D4 61 ADC $61D4,Y ; character x offset (animation) C2/C2EC: 9D 82 6F STA $6F82,X ; target x position C2/C2EF: B9 B9 61 LDA $61B9,Y C2/C2F2: 18 CLC C2/C2F3: 79 C7 61 ADC $61C7,Y C2/C2F6: 18 CLC C2/C2F7: 79 D2 61 ADC $61D2,Y C2/C2FA: 9D 84 6F STA $6F84,X ; target y position C2/C2FD: E6 5B INC $5B C2/C2FF: 7B TDC C2/C300: E2 20 SEP #$20 C2/C302: 60 RTS ; [ Battle Animation Command $C7/$04: Restore Attacking Character Position ] C2/C303: AE F6 7A LDX $7AF6 C2/C306: BD 38 6A LDA $6A38,X ; attacker C2/C309: 0A ASL C2/C30A: 0A ASL C2/C30B: A8 TAY C2/C30C: C2 20 REP #$20 C2/C30E: B9 36 62 LDA $6236,Y C2/C311: 9D 82 6F STA $6F82,X C2/C314: B9 38 62 LDA $6238,Y C2/C317: 9D 84 6F STA $6F84,X C2/C31A: 7B TDC C2/C31B: E2 20 SEP #$20 C2/C31D: 60 RTS ; [ Battle Animation Command $C7/$02: Save Attacking Character Position ] C2/C31E: 20 A7 C2 JSR $C2A7 ; get pointer to attacker thread data C2/C321: BD 38 6A LDA $6A38,X ; attacker C2/C324: 0A ASL C2/C325: 0A ASL C2/C326: AA TAX C2/C327: C2 20 REP #$20 C2/C329: B9 B7 61 LDA $61B7,Y ; character x position C2/C32C: 9D 36 62 STA $6236,X ; C2/C32F: B9 B9 61 LDA $61B9,Y C2/C332: 9D 38 62 STA $6238,X C2/C335: 7B TDC C2/C336: E2 20 SEP #$20 C2/C338: 60 RTS ; [ Battle Animation Command $C7/$03: Restore Attacking Character Position and Reset Offsets ] C2/C339: 20 A7 C2 JSR $C2A7 ; get pointer to attacker thread data C2/C33C: BD 38 6A LDA $6A38,X ; attacker C2/C33F: 0A ASL C2/C340: 0A ASL C2/C341: AA TAX C2/C342: C2 20 REP #$20 C2/C344: BD 36 62 LDA $6236,X C2/C347: 99 B7 61 STA $61B7,Y C2/C34A: 7B TDC C2/C34B: 99 C5 61 STA $61C5,Y ; character x offset C2/C34E: 99 D4 61 STA $61D4,Y C2/C351: BD 38 62 LDA $6238,X C2/C354: 99 B9 61 STA $61B9,Y C2/C357: 7B TDC C2/C358: 99 C7 61 STA $61C7,Y C2/C35B: 99 D2 61 STA $61D2,Y C2/C35E: 7B TDC C2/C35F: E2 20 SEP #$20 C2/C361: 60 RTS ; [ Battle Animation Command $C7/$01: Reset Attacking Character Position Offsets ] C2/C362: 20 A7 C2 JSR $C2A7 ; get pointer to attacker thread data C2/C365: C2 20 REP #$20 C2/C367: B9 B7 61 LDA $61B7,Y ; character x position C2/C36A: 18 CLC C2/C36B: 79 C5 61 ADC $61C5,Y ; character x offset C2/C36E: 18 CLC C2/C36F: 79 D4 61 ADC $61D4,Y ; character x offset (animation) C2/C372: 99 B7 61 STA $61B7,Y ; character x position C2/C375: 9D 7E 6F STA $6F7E,X ; attacker x position C2/C378: 7B TDC C2/C379: 99 C5 61 STA $61C5,Y ; character x offset C2/C37C: 99 D4 61 STA $61D4,Y ; character x offset (animation) C2/C37F: B9 B9 61 LDA $61B9,Y ; character y position C2/C382: 18 CLC C2/C383: 79 C7 61 ADC $61C7,Y ; character y offset (animation) C2/C386: 18 CLC C2/C387: 79 D2 61 ADC $61D2,Y ; character y offset (jumping) C2/C38A: 99 B9 61 STA $61B9,Y ; character y position C2/C38D: 9D 80 6F STA $6F80,X ; attacker y position C2/C390: 7B TDC C2/C391: 99 C7 61 STA $61C7,Y ; character y offset (animation) C2/C394: 99 D2 61 STA $61D2,Y ; character y offset (jumping) C2/C397: 7B TDC C2/C398: E2 20 SEP #$20 C2/C39A: 60 RTS ; [ Battle Animation Command $C7/$00: Change Attacking Character Facing Direction ] ; b1: 0 = face left, 1 = face right C2/C39B: AE F6 7A LDX $7AF6 C2/C39E: A4 5B LDY $5B C2/C3A0: C8 INY C2/C3A1: 84 5B STY $5B C2/C3A3: BD 38 6A LDA $6A38,X ; attacker C2/C3A6: A8 TAY C2/C3A7: A7 5B LDA [$5B] C2/C3A9: F0 14 BEQ $C3BF C2/C3AB: B9 10 7B LDA $7B10,Y ; facing direction C2/C3AE: D0 21 BNE $C3D1 ; branch if facing right C2/C3B0: 1A INC C2/C3B1: 99 10 7B STA $7B10,Y ; reverse direction C2/C3B4: 9D 87 6F STA $6F87,X C2/C3B7: BD 38 6A LDA $6A38,X C2/C3BA: 20 D5 C3 JSR $C3D5 C2/C3BD: 80 12 BRA $C3D1 C2/C3BF: B9 10 7B LDA $7B10,Y C2/C3C2: F0 0D BEQ $C3D1 C2/C3C4: 7B TDC C2/C3C5: 99 10 7B STA $7B10,Y C2/C3C8: 9D 87 6F STA $6F87,X C2/C3CB: BD 38 6A LDA $6A38,X C2/C3CE: 20 D5 C3 JSR $C3D5 C2/C3D1: AE F6 7A LDX $7AF6 C2/C3D4: 60 RTS ; [ Toggle Horizontal Flip ] set_player_eor_local: C2/C3D5: 0A ASL C2/C3D6: 0A ASL C2/C3D7: 0A ASL C2/C3D8: 0A ASL C2/C3D9: 0A ASL C2/C3DA: AA TAX C2/C3DB: BD BE 61 LDA $61BE,X ; toggle horizontal flip C2/C3DE: 49 40 EOR #$40 C2/C3E0: 9D BE 61 STA $61BE,X C2/C3E3: 60 RTS ; pointers to frame data (+$7E0000) C2/C3E4: .DW $CE3F, $CE93, $CEE7, $CF3B, $CF8F, $CFE3, $D037, $D08B C2/C3F4: .DW $D0DF, $D133, $D187, $D1DB, $D22F, $D283, $D2D7, $D32B C2/C404: .DW $D37F, $D3D3, $D427, $D47B, $D4CF, $D523, $D577, $D5CB C2/C414: .DW $D61F, $D673, $D6C7, $D71B, $D76F, $D7C3, $D817, $D86B ; pointers to frame data (+$7E0000) C2/C424: .DW $D8BF, $D913, $D967, $D9BB, $DA0F, $DA63, $DAB7, $DB0B C2/C434: .DW $DB5F, $DBB3, $DC07, $DC5B, $DCAF, $DD03, $DD57, $DDAB C2/C444: .DW $DDFF, $DE53, $DEA7, $DEFB, $DF4F, $DFA3, $DFF7, $E04B C2/C454: .DW $E09F, $E0F3, $E147, $E19B, $E1EF, $E243, $E297, $E2EB ; vh flip and pointers to monster sprite data pointers C2/C464: .DW $0000, $C474, $4000, $C480, $8000, $C48C, $C000, $C498 ; pointers to monster sprite data (4 copies, 6 monsters per copy, +$7E0000) C2/C474: .DW $8259, $829D, $82E1, $8325, $8369, $83AD C2/C480: .DW $83F1, $8435, $8479, $84BD, $8501, $8545 C2/C48C: .DW $8589, $85CD, $8611, $8655, $8699, $86DD C2/C498: .DW $8721, $8765, $87A9, $87ED, $8831, $8875 ; pointers to monster VRAM map sprite data (+$C20000) C2/C4A4: .DW $C543, $C54A, $C551, $C558, $C540, $C540 C2/C4B0: .DW $C55F, $C566, $C56D, $C571, $C575, $C579 C2/C4BC: .DW $C57D, $C586, $C540, $C540, $C540, $C540 C2/C4C8: .DW $C58F, $C59A, $C540, $C540, $C540, $C540 C2/C4D4: .DW $C5A5, $C5AE, $C5B5, $C540, $C540, $C540 C2/C4E0: .DW $C5BC, $C5C7, $C5CE, $C540, $C540, $C540 C2/C4EC: .DW $C5D5, $C540, $C540, $C540, $C540, $C540 C2/C4F8: .DW $C5E8, $C5F4, $C5FA, $C5FE, $C602, $C606 C2/C504: .DW $C60A, $C611, $C618, $C61D, $C540, $C540 C2/C510: .DW $C622, $C540, $C540, $C540, $C540, $C540 C2/C51C: .DW $C631, $C63A, $C63F, $C644, $C648, $C540 C2/C528: .DW $C64C, $C651, $C656, $C65B, $C660, $C540 C2/C534: .DW $C667, $C66E, $C675, $C67A, $C67F, $C684 ; sprite data for VRAM map $00 C2/C540: .DB $00, $00, $FF C2/C543: .DB $00, $00, $00, $01, $04, $05, $FF C2/C54A: .DB $40, $00, $02, $03, $06, $07, $FF C2/C551: .DB $00, $40, $08, $09, $0C, $0D, $FF C2/C558: .DB $40, $40, $0A, $0B, $0E, $0F, $FF ; sprite data for VRAM map $01 C2/C55F: .DB $00, $00, $00, $01, $04, $05, $FF C2/C566: .DB $40, $00, $02, $03, $06, $07, $FF C2/C56D: .DB $00, $40, $08, $FF C2/C571: .DB $20, $40, $09, $FF C2/C575: .DB $40, $40, $0A, $FF C2/C579: .DB $60, $40, $0B, $FF ; sprite data for VRAM map $02 C2/C57D: .DB $00, $00, $00, $01, $02, $04, $05, $06, $FF C2/C586: .DB $00, $40, $08, $09, $0A, $0C, $0D, $0E, $FF ; sprite data for VRAM map $03 C2/C58F: .DB $00, $00, $00, $01, $04, $05, $08, $09, $0C, $0D, $FF C2/C59A: .DB $40, $00, $02, $03, $06, $07, $0A, $0B, $0E, $0F, $FF ; sprite data for VRAM map $04 C2/C5A5: .DB $00, $00, $00, $01, $02, $04, $05, $06, $FF C2/C5AE: .DB $00, $40, $08, $09, $0C, $0D, $FF C2/C5B5: .DB $40, $40, $0A, $0B, $0E, $0F, $FF ; sprite data for VRAM map $05 C2/C5BC: .DB $00, $00, $00, $01, $04, $05, $08, $09, $0C, $0D, $FF C2/C5C7: .DB $40, $00, $02, $03, $06, $07, $FF C2/C5CE: .DB $40, $40, $0A, $0B, $0E, $0F, $FF ; sprite data for VRAM map $06 C2/C5D5: .DB $00, $00, $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F, $FF ; sprite data for VRAM map $07 C2/C5E8: .DB $00, $00, $00, $01, $02, $04, $05, $06, $08, $09, $0A, $FF C2/C5F4: .DB $60, $00, $03, $07, $0B, $FF C2/C5FA: .DB $00, $60, $0C, $FF C2/C5FE: .DB $20, $60, $0D, $FF C2/C602: .DB $40, $60, $0E, $FF C2/C606: .DB $60, $60, $0F, $FF ; sprite data for VRAM map $08 C2/C60A: .DB $00, $00, $00, $01, $04, $05, $FF C2/C611: .DB $00, $40, $08, $09, $0C, $0D, $FF C2/C618: .DB $40, $00, $02, $06, $FF C2/C61D: .DB $40, $40, $0A, $0E, $FF ; sprite data for VRAM map $09 C2/C622: .DB $00, $00, $00, $01, $02, $04, $05, $06, $08, $09, $0A, $0C, $0D, $0E, $FF ; sprite data for VRAM map $0A C2/C631: .DB $00, $00, $00, $01, $04, $05, $08, $09, $FF C2/C63A: .DB $40, $00, $02, $06, $FF C2/C63F: .DB $40, $40, $0A, $0E, $FF C2/C644: .DB $00, $60, $0C, $FF C2/C648: .DB $20, $60, $0D, $FF ; sprite data for VRAM map $0B C2/C64C: .DB $00, $00, $00, $04, $FF C2/C651: .DB $20, $00, $01, $05, $FF C2/C656: .DB $40, $00, $02, $06, $FF C2/C65B: .DB $40, $40, $0A, $0E, $FF C2/C660: .DB $00, $40, $08, $09, $0C, $0D, $FF ; sprite data for VRAM map $0C C2/C667: .DB $00, $00, $00, $01, $04, $05, $FF C2/C66E: .DB $40, $00, $02, $03, $06, $07, $FF C2/C675: .DB $00, $40, $08, $0C, $FF C2/C67A: .DB $20, $40, $09, $0D, $FF C2/C67F: .DB $40, $40, $0A, $0E, $FF C2/C684: .DB $60, $40, $0B, $0F, $FF ; battle status/cursor/text palette for sprites ; each of these gets copied to the last 4 colors after the 12-color character palettes ; this effectively creates an extra 16-color palette C2/C689: .DW $1463, $7FFE, $6314, $4E6F C2/C691: .DW $1463, $4BF6, $2BFF, $26CD C2/C699: .DW $1463, $527B, $4615, $41F0 C2/C6A1: .DW $43FD, $3FF1, $03E0, $02E0 ; graphic frames for each character graphical action (4 frames each) C2/C6A9: .DB $FF, $FF, $FF, $FF, $00, $00, $00, $00, $01, $02, $03, $02, $34, $35, $36, $35 C2/C6B9: .DB $04, $05, $06, $05, $0E, $0F, $10, $0F, $11, $11, $11, $11, $12, $04, $12, $04 C2/C6C9: .DB $13, $06, $13, $06, $08, $09, $08, $09, $14, $14, $14, $14, $15, $15, $15, $15 C2/C6D9: .DB $16, $16, $16, $16, $0A, $0A, $0A, $0A, $02, $0B, $02, $0B, $35, $3D, $35, $3D C2/C6E9: .DB $05, $0D, $05, $0D, $32, $3C, $32, $3C, $02, $0C, $02, $0C, $02, $02, $17, $17 C2/C6F9: .DB $35, $35, $37, $37, $05, $05, $07, $07, $0F, $0F, $18, $18, $19, $19, $19, $19 C2/C709: .DB $17, $17, $17, $17, $37, $37, $37, $37, $07, $07, $07, $07, $18, $18, $18, $18 C2/C719: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C2/C729: .DB $1E, $1F, $1E, $1F, $4E, $4F, $4E, $4F, $1D, $02, $4D, $02, $1A, $1B, $1A, $1B C2/C739: .DB $00, $00, $00, $00, $17, $37, $18, $07, $4A, $4A, $07, $4B ; graphic action tile offsets (32 items, 6 values per action) C2/C745: .DW $0AE0, $0B00, $0B40, $0B60, $0B20, $FFFF, $0B80, $FFFF C2/C755: .DW $FFFF, $FFFF, $0000, $0020, $0040, $0060, $0080, $00A0 C2/C765: .DW $FFFF, $FFFF, $0000, $0020, $00C0, $00E0, $0100, $0120 C2/C775: .DW $FFFF, $FFFF, $0000, $0020, $0140, $0160, $00A0, $0080 C2/C785: .DW $FFFF, $FFFF, $0300, $0320, $0340, $0360, $0380, $03A0 C2/C795: .DW $FFFF, $FFFF, $03C0, $03E0, $0400, $0420, $0440, $0460 C2/C7A5: .DW $FFFF, $FFFF, $0300, $0320, $0480, $04A0, $04C0, $04E0 C2/C7B5: .DW $FFFF, $FFFF, $03C0, $0660, $0680, $06A0, $06C0, $06E0 C2/C7C5: .DW $FFFF, $FFFF, $0940, $0960, $0980, $09A0, $09C0, $09E0 C2/C7D5: .DW $FFFF, $FFFF, $0940, $0960, $0A00, $09A0, $09C0, $09E0 C2/C7E5: .DW $FFFF, $FFFF, $0A20, $0A40, $0A60, $0A80, $0AA0, $0AC0 C2/C7F5: .DW $FFFF, $FFFF, $0000, $0020, $0BA0, $0BC0, $0100, $0120 C2/C805: .DW $FFFF, $FFFF, $0000, $0020, $00C0, $0BE0, $0100, $0120 C2/C815: .DW $FFFF, $FFFF, $12C0, $03E0, $12E0, $0420, $0440, $0460 C2/C825: .DW $FFFF, $FFFF, $0180, $01A0, $01C0, $01E0, $0200, $0220 C2/C835: .DW $FFFF, $FFFF, $0180, $01A0, $0240, $0260, $0280, $02A0 C2/C845: .DW $FFFF, $FFFF, $0180, $01A0, $02C0, $02E0, $0220, $0200 C2/C855: .DW $FFFF, $FFFF, $03C0, $03E0, $0500, $0520, $0540, $0560 C2/C865: .DW $FFFF, $FFFF, $0300, $0320, $0580, $0360, $05A0, $03A0 C2/C875: .DW $FFFF, $FFFF, $0300, $05C0, $05E0, $0600, $0620, $0640 C2/C885: .DW $FFFF, $FFFF, $0700, $0720, $0740, $0760, $0780, $07A0 C2/C895: .DW $FFFF, $FFFF, $07C0, $07E0, $0800, $0820, $0840, $0860 C2/C8A5: .DW $FFFF, $FFFF, $0880, $08A0, $08C0, $08E0, $0900, $0920 C2/C8B5: .DW $FFFF, $FFFF, $0D40, $0D60, $0D80, $0DA0, $0DC0, $0DE0 C2/C8C5: .DW $FFFF, $FFFF, $0E00, $0E20, $0E40, $0E60, $0E80, $0EA0 C2/C8D5: .DW $FFFF, $FFFF, $0620, $0640, $0660, $0680, $06A0, $06C0 C2/C8E5: .DW $FFFF, $FFFF, $0C00, $0C20, $0C40, $0C60, $0C80, $0CA0 C2/C8F5: .DW $FFFF, $FFFF, $0CC0, $0CE0, $0D00, $0D20, $0C80, $0CA0 C2/C905: .DW $FFFF, $FFFF, $0F80, $0FA0, $0FC0, $0FE0, $1000, $1020 C2/C915: .DW $FFFF, $FFFF, $1240, $1260, $1280, $12A0, $0100, $0120 C2/C925: .DW $FFFF, $FFFF, $1460, $1480, $1300, $1320, $1340, $1360 C2/C935: .DW $FFFF, $FFFF, $1460, $1480, $1380, $1320, $1340, $1360 ; inverse sin/cos tables, 0 to 90 degrees (32 items, 32 bytes each) C2/C945: .DB $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C2/C955: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C2/C965: .DB $40, $20, $12, $0D, $0A, $08, $06, $06, $05, $04, $04, $04, $03, $03, $03, $02 C2/C975: .DB $02, $02, $02, $02, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 C2/C985: .DB $40, $2D, $20, $17, $12, $0F, $0D, $0B, $0A, $09, $08, $07, $06, $06, $06, $05 C2/C995: .DB $05, $04, $04, $04, $04, $04, $04, $03, $03, $03, $03, $03, $03, $02, $02, $02 C2/C9A5: .DB $40, $32, $28, $20, $1A, $15, $12, $10, $0E, $0D, $0B, $0B, $0A, $09, $09, $08 C2/C9B5: .DB $07, $07, $06, $06, $06, $06, $05, $05, $05, $04, $04, $04, $04, $04, $04, $04 C2/C9C5: .DB $40, $35, $2D, $26, $20, $1B, $17, $15, $12, $10, $0F, $0E, $0D, $0C, $0B, $0A C2/C9D5: .DB $0A, $09, $09, $08, $08, $07, $07, $06, $06, $06, $06, $06, $06, $05, $05, $05 C2/C9E5: .DB $40, $37, $30, $2A, $24, $20, $1C, $19, $17, $15, $12, $11, $10, $0F, $0E, $0D C2/C9F5: .DB $0C, $0B, $0B, $0A, $0A, $09, $09, $09, $08, $08, $07, $07, $07, $06, $06, $06 C2/CA05: .DB $40, $39, $32, $2D, $28, $24, $20, $1C, $1A, $17, $15, $14, $12, $11, $10, $0F C2/CA15: .DB $0E, $0E, $0D, $0C, $0B, $0B, $0B, $0A, $0A, $09, $09, $09, $09, $08, $08, $07 C2/CA25: .DB $40, $3A, $35, $2F, $2B, $26, $23, $20, $1D, $1A, $18, $17, $15, $14, $12, $12 C2/CA35: .DB $10, $10, $0F, $0E, $0E, $0D, $0C, $0B, $0B, $0B, $0B, $0A, $0A, $09, $09, $09 C2/CA45: .DB $40, $3A, $35, $31, $2D, $29, $26, $22, $20, $1D, $1B, $1A, $17, $16, $15, $14 C2/CA55: .DB $12, $12, $10, $10, $0F, $0E, $0E, $0E, $0D, $0C, $0C, $0B, $0B, $0B, $0A, $0A C2/CA65: .DB $40, $3B, $37, $32, $2F, $2B, $28, $25, $22, $20, $1D, $1C, $1A, $18, $17, $15 C2/CA75: .DB $15, $13, $12, $12, $11, $10, $10, $0F, $0E, $0E, $0E, $0D, $0C, $0C, $0B, $0B C2/CA85: .DB $40, $3C, $37, $34, $30, $2D, $2A, $27, $24, $22, $20, $1E, $1C, $1A, $19, $17 C2/CA95: .DB $17, $15, $15, $13, $12, $12, $11, $10, $10, $0F, $0F, $0E, $0E, $0E, $0D, $0C C2/CAA5: .DB $40, $3C, $38, $35, $32, $2E, $2B, $29, $26, $24, $21, $20, $1E, $1C, $1B, $1A C2/CAB5: .DB $18, $17, $16, $15, $14, $13, $12, $12, $11, $10, $10, $10, $0F, $0E, $0E, $0E C2/CAC5: .DB $40, $3C, $39, $35, $32, $30, $2D, $2A, $28, $26, $24, $21, $20, $1E, $1C, $1B C2/CAD5: .DB $1A, $19, $17, $17, $15, $15, $14, $13, $12, $12, $11, $10, $10, $10, $0F, $0F C2/CAE5: .DB $40, $3C, $3A, $37, $33, $30, $2E, $2B, $29, $27, $25, $23, $21, $20, $1E, $1C C2/CAF5: .DB $1C, $1A, $19, $18, $17, $16, $15, $15, $14, $13, $12, $12, $11, $11, $10, $10 C2/CB05: .DB $40, $3C, $3A, $37, $35, $32, $2F, $2D, $2B, $29, $26, $24, $23, $21, $20, $1F C2/CB15: .DB $1D, $1C, $1A, $1A, $18, $17, $17, $16, $15, $15, $14, $13, $12, $12, $12, $11 C2/CB25: .DB $40, $3D, $3A, $37, $35, $32, $30, $2E, $2B, $2A, $28, $26, $24, $23, $21, $20 C2/CB35: .DB $1F, $1D, $1C, $1B, $1A, $19, $18, $17, $17, $15, $15, $15, $14, $13, $12, $12 C2/CB45: .DB $40, $3D, $3A, $38, $35, $33, $31, $2F, $2D, $2B, $29, $27, $26, $24, $22, $21 C2/CB55: .DB $20, $1F, $1D, $1C, $1B, $1A, $1A, $18, $17, $17, $16, $15, $15, $14, $14, $13 C2/CB65: .DB $40, $3D, $3B, $38, $36, $34, $32, $30, $2E, $2C, $2A, $29, $26, $25, $24, $22 C2/CB75: .DB $21, $20, $1F, $1D, $1C, $1B, $1A, $1A, $19, $18, $17, $17, $16, $15, $15, $14 C2/CB85: .DB $40, $3D, $3B, $39, $37, $35, $32, $30, $2F, $2D, $2B, $29, $28, $26, $25, $24 C2/CB95: .DB $22, $21, $20, $1F, $1D, $1C, $1C, $1B, $1A, $19, $18, $17, $17, $16, $15, $15 C2/CBA5: .DB $40, $3D, $3B, $3A, $37, $35, $33, $31, $30, $2E, $2C, $2A, $29, $27, $26, $24 C2/CBB5: .DB $23, $22, $21, $20, $1F, $1E, $1C, $1C, $1B, $1A, $1A, $19, $18, $17, $17, $16 C2/CBC5: .DB $40, $3E, $3C, $3A, $37, $35, $34, $32, $30, $2E, $2D, $2B, $2A, $28, $27, $26 C2/CBD5: .DB $24, $23, $22, $21, $20, $1F, $1E, $1D, $1C, $1B, $1A, $1A, $19, $18, $17, $17 C2/CBE5: .DB $40, $3E, $3C, $3A, $38, $36, $35, $32, $31, $2F, $2E, $2C, $2B, $29, $28, $26 C2/CBF5: .DB $25, $24, $23, $21, $21, $20, $1F, $1E, $1D, $1C, $1B, $1A, $1A, $19, $18, $18 C2/CC05: .DB $40, $3E, $3C, $3A, $38, $37, $35, $33, $32, $30, $2E, $2D, $2B, $2A, $29, $27 C2/CC15: .DB $26, $25, $24, $23, $21, $21, $20, $1F, $1E, $1D, $1C, $1C, $1B, $1A, $1A, $19 C2/CC25: .DB $40, $3E, $3C, $3A, $39, $37, $35, $34, $32, $30, $2F, $2E, $2C, $2B, $29, $28 C2/CC35: .DB $27, $26, $24, $24, $22, $21, $21, $20, $1F, $1E, $1D, $1C, $1C, $1B, $1A, $1A C2/CC45: .DB $40, $3E, $3C, $3A, $39, $37, $35, $34, $32, $31, $30, $2E, $2D, $2B, $2A, $29 C2/CC55: .DB $28, $26, $26, $24, $24, $22, $21, $21, $20, $1F, $1E, $1D, $1C, $1C, $1B, $1A C2/CC65: .DB $40, $3E, $3C, $3B, $39, $37, $36, $35, $33, $32, $30, $2F, $2E, $2C, $2B, $2A C2/CC75: .DB $29, $27, $26, $25, $24, $23, $22, $21, $21, $20, $1F, $1E, $1D, $1C, $1C, $1B C2/CC85: .DB $40, $3E, $3C, $3B, $3A, $38, $37, $35, $33, $32, $30, $30, $2E, $2D, $2B, $2B C2/CC95: .DB $29, $28, $27, $26, $25, $24, $23, $22, $21, $21, $20, $1F, $1E, $1D, $1C, $1C C2/CCA5: .DB $40, $3E, $3C, $3B, $3A, $38, $37, $35, $34, $32, $31, $30, $2F, $2E, $2C, $2B C2/CCB5: .DB $2A, $29, $28, $26, $26, $25, $24, $23, $22, $21, $21, $20, $1F, $1E, $1D, $1D C2/CCC5: .DB $40, $3E, $3C, $3B, $3A, $38, $37, $35, $35, $33, $32, $30, $2F, $2E, $2D, $2B C2/CCD5: .DB $2B, $29, $29, $27, $26, $26, $24, $24, $23, $22, $21, $21, $20, $1F, $1F, $1E C2/CCE5: .DB $40, $3F, $3D, $3C, $3A, $39, $37, $36, $35, $33, $32, $31, $30, $2E, $2E, $2C C2/CCF5: .DB $2B, $2A, $29, $28, $27, $26, $25, $24, $24, $23, $22, $21, $21, $20, $1F, $1F C2/CD05: .DB $40, $3F, $3D, $3C, $3A, $39, $37, $36, $35, $34, $32, $31, $30, $2F, $2E, $2D C2/CD15: .DB $2B, $2B, $2A, $29, $28, $27, $26, $25, $24, $24, $23, $22, $21, $20, $20, $1F C2/CD25: .DB $40, $3F, $3D, $3C, $3A, $39, $38, $37, $35, $34, $33, $32, $30, $30, $2E, $2E C2/CD35: .DB $2C, $2B, $2A, $29, $29, $27, $26, $26, $25, $24, $24, $22, $21, $21, $20, $20 ; compressed ($400 bytes decompressed) C2/CD45: .DB $E6, $00, $BB, $00, $08, $DF, $E7, $03, $07, $07, $DF, $CF, $10, $77, $02, $05 C2/CD55: .DB $06, $00, $C8, $18, $01, $04, $20, $08, $8E, $00, $B0, $20, $01, $03, $40, $00 C2/CD65: .DB $42, $10, $01, $90, $28, $CF, $01, $02, $04, $05, $62, $28, $01, $80, $30, $01 C2/CD75: .DB $11, $02, $60, $00, $83, $30, $00, $70, $38, $9F, $08, $81, $10, $A6, $30, $46 C2/CD85: .DB $01, $50, $40, $00, $9F, $18, $C5, $50, $00, $40, $48, $DF, $10, $84, $E3, $20 C2/CD95: .DB $E9, $80, $50, $DF, $08, $C1, $28, $E8, $50, $00, $18, $58, $10, $DF, $00, $01 C2/CDA5: .DB $41, $2C, $59, $00, $00, $60, $3F, $11, $43, $41, $4D, $61, $39, $68, $5F, $29 C2/CDB5: .DB $66, $A1, $70, $00, $01, $80, $71, $E9, $48, $49, $78, $9F, $51, $AB, $79, $80 C2/CDC5: .DB $9F, $21, $C5, $A9, $88, $9F, $11, $88, $82, $19, $C8, $49, $A6, $28, $90, $FF C2/CDD5: .DB $29, $C5, $29, $0E, $62, $98, $88, $9F, $01, $E1, $31, $2A, $82, $A0, $3F, $1A C2/CDE5: .DB $44, $92, $42, $08, $A8, $64, $5F, $82, $71, $4A, $B0, $5F, $3A, $88, $8A, $06 C2/CDF5: .DB $B8, $5F, $22, $4C, $44, $2A, $8C, $6A, $C0, $00, $9F, $92, $0E, $32, $C8, $DF C2/CE05: .DB $6A, $92, $EE, $62, $D0, $DF, $2A, $06, $A3, $D8, $1F, $B3, $27, $19, $E0, $44 C2/CE15: .DB $1F, $53, $4B, $7B, $E8, $DF, $12, $23, $5B, $EE, $4A, $F0, $7F, $5B, $02, $4B C2/CE25: .DB $73, $F8, $9F, $8B, $50, $43 ; palette numbers for each character C2/CE2B: .DB $02, $01, $04, $04, $00, $00, $00, $03, $03, $04, $05, $03, $03, $05, $01, $00 C2/CE3B: .DB $00, $03, $06, $01, $00, $03, $03, $00 ; pointers to character sprite graphics C2/CE43: .DL $D50000, $D516A0, $D52D40, $D543E0, $D55A80, $D57120, $D587C0, $D59E60 C2/CE5B: .DL $D5B500, $D5CBA0, $D5E240, $D5F8E0, $D60F80, $D62620, $D63CC0, $D65360 C2/CE73: .DL $D66A00, $D67F60, $D694C0, $D6AA20, $D6BF80, $D6D4E0, $D6EA40, $D63CC0 ; pointers to animation thread data (characters, monsters, extra, +$7E64DE) get_main_work_poi: C2/CE8B: .DW $0000, $0080, $0100, $0180 C2/CE93: .DW $0200, $0280, $0300, $0380, $0400, $0480 C2/CE9F: .DW $0500, $0580 ; character sprite data (top/bottom sprite, then left/right sprite for dead characters) C2/CEA3: .DB $00, $F8, $0000 .DB $00, $08, $0002 .DB $FC, $08, $0000 .DB $0C, $08, $0002 ; character sprite data, h flip C2/CEB3: .DB $00, $F8, $4000 .DB $00, $08, $4002 .DB $04, $08, $4000 .DB $F4, $08, $4002 ; character sprite data, v flip C2/CEC3: .DB $00, $00, $8002 .DB $00, $10, $8000 .DB $FC, $08, $8000 .DB $0C, $08, $8002 ; character sprite data, h & v flip C2/CED3: .DB $00, $00, $C002 .DB $00, $10, $C000 .DB $04, $08, $C000 .DB $F4, $08, $C002 ; character back row xy angle offsets (normal, back, pincer, side) C2/CEE3: .DW $000C, $000C, $000C, $000C .DW $FFF4, $FFF4, $FFF4, $FFF4 .DW $0000, $0000, $0000, $0000 .DW $000C, $000C, $FFF4, $FFF4 ; battle type character y-offsets (normal, back, pincer, side, magitek train bg) C2/CF03: .DB $44, $56, $68, $7A .DB $44, $56, $68, $7A .DB $44, $56, $68, $7A .DB $4E, $7A, $4E, $7A .DB $50, $5E, $6C, $7A ; battle type character xy angles (normal, back, pincer, side) C2/CF17: .DW $0170, $0170, $0170, $0170 C2/CF1F: .DW $0090, $0090, $0090, $0090 C2/CF27: .DW $0100, $0100, $0100, $0100 C2/CF2F: .DW $0170, $0170, $0090, $0090 C2/CF37: .DW $30C0, $31C0, $32C0, $33C0, $34C0, $35C0, $36C0, $37C0 C2/CF47: .DW $38C0, $39C0, $3AC0, $3BC0, $3CC0, $3DC0, $3EC0, $3FC0 ; character sprite graphics offsets C2/CF57: .DB $00, $04, $08, $0C ; pointers to character graphics data (+$7E2EAE) C2/CF5B: .DB $00, $20, $40, $60 ; pointers to magitek armor graphics (4 frames, then unknown japanese text) C2/CF5F: .DD $00D84500, $00D84800, $00D84900, $00D84C00, $00D84D00 ; magitek animation data (4 items, 4 bytes each) C2/CF73: .DB $00, $00, $00, $00, $00, $01, $00, $02, $03, $03, $03, $03, $04, $04, $04, $04 ; (4 items, 4 bytes each) C2/CF83: .DB $F7, $FC, $0C, $01, $F7, $FC, $4C, $01, $F7, $FC, $8C, $01, $F7, $FC, $CC, $01 ; y offsets for bouncing damage numerals C2/CF93: .DB $03, $06, $08, $0A, $0B, $0D, $0E, $0F, $0F, $10, $10, $10, $10, $10, $0F, $0F C2/CFA3: .DB $0E, $0D, $0B, $0A, $08, $06, $03, $00, $03, $04, $05, $06, $07, $07, $08, $08 C2/CFB3: .DB $07, $07, $06, $05, $04, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C2/CFC3: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 C2/CFD3: .DB $00 ; magitek color palette (12 colors) C2/CFD4: .DW $00BF, $0C63, $196C, $2E10, $42F7, $110E, $2EBC, $4B9F C2/CFE4: .DW $41AD, $6739, $7FFF, $2192 ; petrify status color palette (11 colors used) C2/CFEC: .DW $0842, $6B5A, $18C6, $4210, $294A, $6B5A, $4E73, $6318 C2/CFFC: .DW $3DEF, $4E73, $294A, $0000 ; frozen status color palette (11 colors) C2/D004: .DW $44C6, $7FFF, $3C60, $7EF7, $7DAD, $7FFF, $7F18, $7E52 C2/D014: .DW $7D8C, $7E52, $7D29 ; pointers to monster VRAM maps C2/D01A: .DW $D034, $D044, $D05C, $D064, $D06C, $D078, $D084, $D088 C2/D02A: .DW $D0A0, $D0B0, $D0B4, $D0C8, $D0DC ; monster VRAM map $00 (VRAM destination, width, height) C2/D034: .DW $0000 \ .DB $08, $08 C2/D038: .DW $0100 \ .DB $08, $08 C2/D03C: .DW $1000 \ .DB $08, $08 C2/D040: .DW $1100 \ .DB $08, $08 ; monster VRAM map $01 C2/D044: .DW $0000 \ .DB $08, $08 C2/D048: .DW $0100 \ .DB $08, $08 C2/D04C: .DW $1000 \ .DB $04, $04 C2/D050: .DW $1080 \ .DB $04, $04 C2/D054: .DW $1100 \ .DB $04, $04 C2/D058: .DW $1180 \ .DB $04, $04 ; monster VRAM map $02 C2/D05C: .DW $0000 \ .DB $0C, $08 C2/D060: .DW $1000 \ .DB $0C, $08 ; monster VRAM map $03 C2/D064: .DW $0000 \ .DB $08, $10 C2/D068: .DW $0100 \ .DB $08, $10 ; monster VRAM map $04 C2/D06C: .DW $0000 \ .DB $0C, $08 C2/D070: .DW $1000 \ .DB $08, $08 C2/D074: .DW $1100 \ .DB $08, $08 ; monster VRAM map $05 C2/D078: .DW $0000 \ .DB $08, $10 C2/D07C: .DW $0100 \ .DB $08, $08 C2/D080: .DW $1100 \ .DB $08, $08 ; monster VRAM map $06 C2/D084: .DW $0000 \ .DB $10, $10 ; monster VRAM map $07 C2/D088: .DW $0000 \ .DB $0C, $0C C2/D08C: .DW $0180 \ .DB $04, $0C C2/D090: .DW $1800 \ .DB $04, $04 C2/D094: .DW $1880 \ .DB $04, $04 C2/D098: .DW $1900 \ .DB $04, $04 C2/D09C: .DW $1980 \ .DB $04, $04 ; monster VRAM map $08 C2/D0A0: .DW $0000 \ .DB $08, $08 C2/D0A4: .DW $1000 \ .DB $08, $08 C2/D0A8: .DW $0100 \ .DB $04, $08 C2/D0AC: .DW $1100 \ .DB $04, $08 ; monster VRAM map $09 C2/D0B0: .DW $0000 \ .DB $0C, $0C ; monster VRAM map $0A C2/D0B4: .DW $0000 \ .DB $08, $0C C2/D0B8: .DW $0100 \ .DB $04, $08 C2/D0BC: .DW $1100 \ .DB $04, $08 C2/D0C0: .DW $1800 \ .DB $04, $04 C2/D0C4: .DW $1880 \ .DB $04, $04 ; monster VRAM map $0B C2/D0C8: .DW $0000 \ .DB $04, $08 C2/D0CC: .DW $0080 \ .DB $04, $08 C2/D0D0: .DW $0100 \ .DB $04, $08 C2/D0D4: .DW $1100 \ .DB $04, $08 C2/D0D8: .DW $1000 \ .DB $08, $08 ; monster VRAM map $0C C2/D0DC: .DW $0000 \ .DB $08, $08 C2/D0E0: .DW $0100 \ .DB $08, $08 C2/D0E4: .DW $1000 \ .DB $04, $08 C2/D0E8: .DW $1080 \ .DB $04, $08 C2/D0EC: .DW $1100 \ .DB $04, $08 C2/D0F0: .DW $1180 \ .DB $04, $08 ; HDMA #6 table, normal (+++$2109) C2/D0F4: .DB $64 \ .DW $897B .DB $33 \ .DW $897B .DB $49 \ .DW $897F .DB $00 ; HDMA #7 table (+++$212A) C2/D0FE: .DB $04 \ .DW $8987 .DB $60 \ .DW $898B .DB $33 \ .DW $898B .DB $44 \ .DW $898F .DB $05 \ .DW $8987 .DB $00 ; HDMA #6 table, slot (+++$2109) C2/D10E: .DB $64 \ .DW $897B .DB $33 \ .DW $897B .DB $0C \ .DW $897F .DB $30 \ .DW $8983 .DB $0D \ .DW $897F .DB $00 ; HDMA #3 table, slot (+++$2105) C2/D11E: .DB $64 \ .DW $896F .DB $33 \ .DW $896F .DB $0C \ .DW $8973 .DB $30 \ .DW $8977 .DB $0D \ .DW $8973 .DB $00 ; HDMA #3 table, normal (+++$2105) C2/D12E: .DB $64 \ .DW $896F .DB $33 \ .DW $896F .DB $49 \ .DW $8973 .DB $00 ; HDMA #4 table (+++$212F) C2/D138: .DB $F0 \ .DW $8993 .DB $F0 \ .DW $8B53 .DB $00 ; HDMA #5 table (+++$2126) C2/D13F: .DB $CC \ .DW $9F1F .DB $CC \ .DW $A04F .DB $C8 \ .DW $9C7F .DB $00 ; HDMA #5 table (+++$2126) C2/D149: .DB $F0 \ .DW $EA32 .DB $F0 \ .DW $EB12 .DB $00 ; pointers to BG scroll HDMA tables (HDMA #0, #1, and #2) C2/D150: .DW $D1BD, $D1C4, $D1CB, $D1F2, $D225, $D24B, $D1D2, $D238 C2/D160: .DW $D1E5, $D180, $D212, $D1FF, $D1BD, $D1C4, $D258, $D1F2 C2/D170: .DW $D225, $D281, $D1D2, $D268, $D1E5, $D180, $D212, $D1FF ; $09/$15: HDMA #0 table, 19 values, change every 8 scanlines (+$210D) C2/D180: .DB $08 \ .DW $43F5 .DB $08 \ .DW $43F9 .DB $08 \ .DW $43FD .DB $08 \ .DW $4401 .DB $08 \ .DW $4405 .DB $08 \ .DW $4409 .DB $08 \ .DW $440D .DB $08 \ .DW $4411 .DB $08 \ .DW $4415 .DB $08 \ .DW $4419 .DB $08 \ .DW $441D .DB $08 \ .DW $4421 .DB $08 \ .DW $4425 .DB $08 \ .DW $4429 .DB $08 \ .DW $442D .DB $08 \ .DW $4431 .DB $08 \ .DW $4435 .DB $08 \ .DW $4439 .DB $07 \ .DW $443D .DB $C9 \ .DW $4651 .DB $00 ; $00/$0C: HDMA #0 table, 224 values (+$210D) C2/D1BD: .DB $F0 \ .DW $43F5 .DB $F0 \ .DW $45B5 .DB $00 ; $01/$0D: HDMA #1 table, 224 values (+$210F) C2/D1C4: .DB $F0 \ .DW $4775 .DB $F0 \ .DW $4935 .DB $00 ; $02: HDMA #2 table, 224 values (+$2111) C2/D1CB: .DB $F0 \ .DW $4AF5 .DB $F0 \ .DW $4CB5 .DB $00 ; $06/$12: HDMA #0 table, 32 values (+$210D) C2/D1D2: .DB $A0 \ .DW $43F5 .DB $A0 \ .DW $43F5 .DB $A0 \ .DW $43F5 .DB $A0 \ .DW $43F5 .DB $97 \ .DW $43F5 .DB $C9 \ .DW $4651 .DB $00 ; $08/$14: HDMA #0 table, 64 values (+$210D) C2/D1E5: .DB $C0 \ .DW $43F5 .DB $C0 \ .DW $43F5 .DB $97 \ .DW $43F5 .DB $C9 \ .DW $4651 .DB $00 ; $03/$0F: HDMA #0 table, single value (+$210D) C2/D1F2: .DB $40 \ .DW $43F5 .DB $40 \ .DW $43F5 .DB $17 \ .DW $43F5 .DB $C9 \ .DW $4651 .DB $00 ; $0B/$17: HDMA #1 table (+$210F) C2/D1FF: .DB $A0 \ .DW $4775 .DB $A0 \ .DW $4775 .DB $90 \ .DW $4775 .DB $B0 \ .DW $4875 .DB $97 \ .DW $4875 .DB $C9 \ .DW $49D1 .DB $00 ; $0A/$16: HDMA #1 table (+$210F) C2/D212: .DB $A0 \ .DW $4775 .DB $A0 \ .DW $4775 .DB $97 \ .DW $4775 .DB $A9 \ .DW $4875 .DB $97 \ .DW $4875 .DB $C9 \ .DW $49D1 .DB $00 ; $04/$10: HDMA #1 table (+$210F) C2/D225: .DB $A0 \ .DW $4775 .DB $A0 \ .DW $4775 .DB $A0 \ .DW $4775 .DB $A0 \ .DW $4775 .DB $97 \ .DW $4775 .DB $C9 \ .DW $49D1 .DB $00 ; $07: HDMA #2 table (+$2111) C2/D238: .DB $A0 \ .DW $4AF5 .DB $A0 \ .DW $4AF5 .DB $A0 \ .DW $4AF5 .DB $A0 \ .DW $4AF5 .DB $97 \ .DW $4AF5 .DB $C9 \ .DW $4D51 .DB $00 ; $05: HDMA #2 table (+$2111) C2/D24B: .DB $40 \ .DW $4AF5 .DB $40 \ .DW $4AF5 .DB $17 \ .DW $4AF5 .DB $C9 \ .DW $4D51 .DB $00 ; $0E: HDMA #2 table (+$2111) C2/D258: .DB $E4 \ .DW $4AF5 .DB $B3 \ .DW $4C85 .DB $8C \ .DW $4D51 .DB $30 \ .DW $7B86 .DB $8D \ .DW $4E41 .DB $00 ; $13: HDMA #2 table (+$2111) C2/D268: .DB $A0 \ .DW $4AF5 .DB $A0 \ .DW $4AF5 .DB $A0 \ .DW $4AF5 .DB $A0 \ .DW $4AF5 .DB $97 \ .DW $4AF5 .DB $8C \ .DW $4D51 .DB $30 \ .DW $7B86 .DB $8D \ .DW $4E41 .DB $00 ; $11: HDMA #2 table (+$2111) C2/D281: .DB $40 \ .DW $4AF5 .DB $40 \ .DW $4AF5 .DB $17 \ .DW $4AF5 .DB $8C \ .DW $4D51 .DB $30 \ .DW $7B86 .DB $8D \ .DW $4E41 .DB $00 ; C2/D294: .DW $0000, $0020, $0040, $0060, $0080, $00A0, $00C0, $00E0 ; pointers to bg2 tile data in VRAM (menu region) C2/D2A4: .DW $7140, $7160, $7180, $71A0, $71C0, $71E0, $7200, $7220 ; C2/D2B4: .DW $0000, $0040, $0080, $00C0, $0100, $0140, $0180, $01C0 ; pointers to character sprite graphics in RAM C2/D2C4: .DW $A000, $A080, $A100, $A180, $A200, $A280, $A300, $A380 ; pointers to character sprite graphics in VRAM C2/D2D4: .DW $2000, $2040, $2080, $20C0, $2100, $2140, $2180, $21C0 ; C2/D2E4: .DW $A400, $A600, $A480, $A680, $A500, $A700, $A580, $A780 C2/D2F4: .DW $A800, $AA00, $A880, $AA80, $A900, $AB00, $A980, $AB80 C2/D304: .DW $AC00, $AE00, $AC80, $AE80, $AD00, $AF00, $AD80, $AF80 C2/D314: .DW $B000, $B200, $B080, $B280, $B100, $B300, $B180, $A780 ; C2/D324: .DW $2200, $2300, $2240, $2340, $2280, $2380, $22C0, $23C0 C2/D334: .DW $2200, $2300, $2240, $2340, $2280, $2380, $22C0, $23C0 C2/D344: .DW $2200, $2300, $2240, $2340, $2280, $2380, $22C0, $23C0 C2/D354: .DW $2200, $2300, $2240, $2340, $2280, $2380, $22C0, $23C0 C2/D364: .DB $0E, $2A, $46, $62 ; HDMA #0 ($C2D1F2 -> +$210D) C2/D368: .DB $43, $0D \ .DL $C2D1F2 ; HDMA #1 ($C2D225 -> +$210F) C2/D36D: .DB $43, $0F \ .DL $C2D225 ; HDMA #2 ($C2D24B -> +$2111) C2/D372: .DB $43, $11 \ .DL $C2D24B ; HDMA #3, normal ($C2D12E -> +++$2105) C2/D377: .DB $44, $05 \ .DL $C2D12E ; HDMA #4 ($C2D138 -> +++$212F) C2/D37C: .DB $44, $2F \ .DL $C2D138 ; ($C2D149 -> +$2131) C2/D381: .DB $41, $31 \ .DL $C2D149 ; HDMA #6, normal ($C2D0F4 -> +++$2109) C2/D386: .DB $44, $09 \ .DL $C2D0F4 ; HDMA #3, slot ($C2D11E -> +++$2105) C2/D38B: .DB $44, $05 \ .DL $C2D11E ; HDMA #6, slot ($C2D10E -> +++$2109) C2/D390: .DB $44, $09 \ .DL $C2D10E ; HDMA #7 ($C2D0FE -> +++$212A) C2/D395: .DB $44, $2A \ .DL $C2D0FE ; HDMA #5 ($C2D13F -> +++$2126) C2/D39A: .DB $44, $26 \ .DL $C2D13F ; repeat count for bg3 hdma scroll data (vertical) C2/D39F: .DB $01, $01, $01, $01, $01, $02, $01, $02, $01, $02, $02, $03, $02, $03, $03, $03 C2/D3AF: .DB $04, $03, $04, $04, $04, $05, $04, $05, $05, $05, $05, $05, $05, $05, $05, $04 C2/D3BF: .DB $05, $04, $04, $04, $03, $04, $03, $03, $03, $02, $03, $02, $02, $01, $02, $01 C2/D3CF: .DB $02, $01, $01, $01, $01, $01 ; [ Init Hardware Registers ] system_init: C2/D3D5: A9 00 LDA #$00 C2/D3D7: 48 PHA C2/D3D8: AB PLB C2/D3D9: 8D 00 42 STA $4200 ; disable interrupts C2/D3DC: A2 00 00 LDX #$0000 C2/D3DF: DA PHX C2/D3E0: 2B PLD C2/D3E1: A9 80 LDA #$80 C2/D3E3: 8D 00 21 STA $2100 C2/D3E6: A9 61 LDA #$61 ; 16x16 & 32x32 sprite sizes C2/D3E8: 8D 01 21 STA $2101 C2/D3EB: A9 80 LDA #$80 C2/D3ED: 8D 15 21 STA $2115 C2/D3F0: A9 00 LDA #$00 C2/D3F2: AA TAX C2/D3F3: 8D 13 21 STA $2113 C2/D3F6: 8D 13 21 STA $2113 C2/D3F9: 8D 14 21 STA $2114 C2/D3FC: 8D 14 21 STA $2114 C2/D3FF: 8D 2E 21 STA $212E C2/D402: 8D 2F 21 STA $212F C2/D405: 8D 0B 42 STA $420B C2/D408: 8D 0C 42 STA $420C C2/D40B: 8D 31 21 STA $2131 C2/D40E: 8D 33 21 STA $2133 C2/D411: 8D 30 21 STA $2130 C2/D414: 8D 28 21 STA $2128 C2/D417: 8D 29 21 STA $2129 C2/D41A: A9 C1 LDA #$C1 ; set interrupt jump code C2/D41C: 8D 03 15 STA $1503 C2/D41F: A9 C1 LDA #$C1 C2/D421: 8D 07 15 STA $1507 C2/D424: A2 A7 0B LDX #$0BA7 C2/D427: 8E 01 15 STX $1501 C2/D42A: A2 4A 0D LDX #$0D4A C2/D42D: 8E 05 15 STX $1505 C2/D430: A9 5C LDA #$5C C2/D432: 8D 00 15 STA $1500 C2/D435: 8D 04 15 STA $1504 C2/D438: A9 01 LDA #$01 ; select fastROM C2/D43A: 8F 0D 42 00 STA $00420D C2/D43E: A9 33 LDA #$33 ; bg/window settings C2/D440: 8D 23 21 STA $2123 C2/D443: 8D 24 21 STA $2124 C2/D446: 8D 25 21 STA $2125 C2/D449: A9 7E LDA #$7E C2/D44B: 48 PHA C2/D44C: AB PLB C2/D44D: A2 00 00 LDX #$0000 ; clear $00-$9B C2/D450: 9E 00 00 STZ $0000,X C2/D453: E8 INX C2/D454: E0 9C 00 CPX #$009C C2/D457: D0 F7 BNE $D450 C2/D459: A2 78 61 LDX #$6178 ; clear $6178-$8D12 C2/D45C: 9E 00 00 STZ $0000,X C2/D45F: E8 INX C2/D460: E0 13 8D CPX #$8D13 C2/D463: D0 F7 BNE $D45C C2/D465: 7B TDC C2/D466: AA TAX C2/D467: 9D 00 7E STA $7E00,X ; clear $7E00-$7FFF (color palettes) C2/D46A: E8 INX C2/D46B: E0 00 02 CPX #$0200 C2/D46E: D0 F7 BNE $D467 C2/D470: 6B RTL summon_obj_set_tbl: C2/D471: .DW $AE3F, $2400, $B03F, $2500, $B23F, $2600, $B43F, $2700 C2/D481: .DW $B63F, $2800, $B83F, $2900, $BA3F, $2A00, $BC3F, $2B00 C2/D491: .DW $BE3F, $2C00, $C43F, $2D00 ; tritoch sparkling palettes C2/D499: .DW $2529, $0843, $7FFE, $7F32, $5A2A, $4544, $30A2, $56F2 C2/D4A9: .DW $2A0A, $1121, $19D9, $10D2, $0C8A, $0EBD, $09F1, $050A C2/D4B9: .DW $2D6B, $0843, $5A2A, $7FFE, $7F32, $5A2A, $4544, $56F2 C2/D4C9: .DW $2A0A, $1121, $19D9, $10D2, $0C8A, $0EBD, $09F1, $050A C2/D4D9: .DW $2D6B, $0843, $4544, $5A2A, $7FFE, $7F32, $5A2A, $56F2 C2/D4E9: .DW $2A0A, $1121, $19D9, $10D2, $0C8A, $0EBD, $09F1, $050A C2/D4F9: .DW $2D6B, $0843, $5A2A, $4544, $5A2A, $7FFE, $7F32, $56F2 C2/D509: .DW $2A0A, $1121, $19D9, $10D2, $0C8A, $0EBD, $09F1, $050A C2/D519: .DW $2D6B, $0843, $6EF1, $5A2A, $4544, $5A2A, $7FFE, $56F2 C2/D529: .DW $2A0A, $1121, $19D9, $10D2, $0C8A, $0EBD, $09F1, $050A ; --------------------[ Battle Graphics: Circle / Triangle ]-------------------- ; [ Update Circle Shape ] circle_main_get: C2/D539: AD 1B 96 LDA $961B ; circle shape C2/D53C: 0A ASL C2/D53D: AA TAX C2/D53E: 7C 41 D5 JMP ($D541,X) ; circle shape jump table ; circle shape jump table C2/D541: .DW $D777, $D7AD, $D812, $D6CD, $D627, $D818, $D6ED, $D553, $D80C ; [ Circle Shape $07: Ultima ] circle_07: C2/D553: A2 FE LDX #$FE C2/D555: 64 22 STZ $22 C2/D557: 64 26 STZ $26 C2/D559: A5 26 LDA $26 C2/D55B: 29 01 AND #$01 C2/D55D: D0 2E BNE $D58D C2/D55F: A5 16 LDA $16 C2/D561: 38 SEC C2/D562: F9 1F 9E SBC $9E1F,Y C2/D565: 90 04 BCC $D56B C2/D567: C9 08 CMP #$08 C2/D569: B0 02 BCS $D56D C2/D56B: A9 08 LDA #$08 C2/D56D: 8F 80 21 00 STA $002180 C2/D571: 9D 1F 96 STA $961F,X C2/D574: B9 1F 9E LDA $9E1F,Y C2/D577: 18 CLC C2/D578: 65 18 ADC $18 C2/D57A: B0 04 BCS $D580 C2/D57C: C9 F7 CMP #$F7 C2/D57E: 90 02 BCC $D582 C2/D580: A9 F7 LDA #$F7 C2/D582: 8F 80 21 00 STA $002180 C2/D586: 9D 20 96 STA $9620,X C2/D589: CA DEX C2/D58A: CA DEX C2/D58B: 80 24 BRA $D5B1 C2/D58D: A5 16 LDA $16 C2/D58F: 38 SEC C2/D590: F9 1F 9E SBC $9E1F,Y C2/D593: 90 04 BCC $D599 C2/D595: C9 08 CMP #$08 C2/D597: B0 02 BCS $D59B C2/D599: A9 08 LDA #$08 C2/D59B: 9D 1F 96 STA $961F,X C2/D59E: B9 1F 9E LDA $9E1F,Y C2/D5A1: 18 CLC C2/D5A2: 65 18 ADC $18 C2/D5A4: B0 04 BCS $D5AA C2/D5A6: C9 F7 CMP #$F7 C2/D5A8: 90 02 BCC $D5AC C2/D5AA: A9 F7 LDA #$F7 C2/D5AC: 9D 20 96 STA $9620,X C2/D5AF: CA DEX C2/D5B0: CA DEX C2/D5B1: E6 26 INC $26 C2/D5B3: C8 INY C2/D5B4: C4 12 CPY $12 C2/D5B6: D0 A1 BNE $D559 C2/D5B8: 7B TDC C2/D5B9: 99 1F 9E STA $9E1F,Y C2/D5BC: 88 DEY C2/D5BD: B9 1F 9E LDA $9E1F,Y C2/D5C0: 3A DEC C2/D5C1: 85 12 STA $12 C2/D5C3: B9 1F 9E LDA $9E1F,Y C2/D5C6: D9 1E 9E CMP $9E1E,Y C2/D5C9: F0 56 BEQ $D621 C2/D5CB: A5 26 LDA $26 C2/D5CD: 29 01 AND #$01 C2/D5CF: D0 2C BNE $D5FD C2/D5D1: A5 16 LDA $16 C2/D5D3: 38 SEC C2/D5D4: E5 12 SBC $12 C2/D5D6: 90 04 BCC $D5DC C2/D5D8: C9 08 CMP #$08 C2/D5DA: B0 02 BCS $D5DE C2/D5DC: A9 08 LDA #$08 C2/D5DE: 8F 80 21 00 STA $002180 C2/D5E2: 9D 1F 96 STA $961F,X C2/D5E5: A5 12 LDA $12 C2/D5E7: 18 CLC C2/D5E8: 65 18 ADC $18 C2/D5EA: B0 04 BCS $D5F0 C2/D5EC: C9 F7 CMP #$F7 C2/D5EE: 90 02 BCC $D5F2 C2/D5F0: A9 F7 LDA #$F7 C2/D5F2: 8F 80 21 00 STA $002180 C2/D5F6: 9D 20 96 STA $9620,X C2/D5F9: CA DEX C2/D5FA: CA DEX C2/D5FB: 80 22 BRA $D61F C2/D5FD: A5 16 LDA $16 C2/D5FF: 38 SEC C2/D600: E5 12 SBC $12 C2/D602: 90 04 BCC $D608 C2/D604: C9 08 CMP #$08 C2/D606: B0 02 BCS $D60A C2/D608: A9 08 LDA #$08 C2/D60A: 9D 1F 96 STA $961F,X C2/D60D: A5 12 LDA $12 C2/D60F: 18 CLC C2/D610: 65 18 ADC $18 C2/D612: B0 04 BCS $D618 C2/D614: C9 F7 CMP #$F7 C2/D616: 90 02 BCC $D61A C2/D618: A9 F7 LDA #$F7 C2/D61A: 9D 20 96 STA $9620,X C2/D61D: CA DEX C2/D61E: CA DEX C2/D61F: E6 26 INC $26 C2/D621: C6 12 DEC $12 C2/D623: 88 DEY C2/D624: D0 9D BNE $D5C3 C2/D626: 60 RTS ; [ Circle Shape $04: Vertical Oval ] circle_04: C2/D627: A2 FC LDX #$FC C2/D629: A5 16 LDA $16 C2/D62B: 38 SEC C2/D62C: F9 1F 9E SBC $9E1F,Y C2/D62F: 90 04 BCC $D635 C2/D631: C9 08 CMP #$08 C2/D633: B0 02 BCS $D637 C2/D635: A9 08 LDA #$08 C2/D637: 8F 80 21 00 STA $002180 C2/D63B: 85 22 STA $22 C2/D63D: 9D 1F 96 STA $961F,X C2/D640: 9D 21 96 STA $9621,X C2/D643: B9 1F 9E LDA $9E1F,Y C2/D646: 18 CLC C2/D647: 65 18 ADC $18 C2/D649: B0 04 BCS $D64F C2/D64B: C9 F7 CMP #$F7 C2/D64D: 90 02 BCC $D651 C2/D64F: A9 F7 LDA #$F7 C2/D651: 8F 80 21 00 STA $002180 C2/D655: 85 23 STA $23 C2/D657: 9D 20 96 STA $9620,X C2/D65A: 9D 22 96 STA $9622,X C2/D65D: A5 22 LDA $22 C2/D65F: 8F 80 21 00 STA $002180 C2/D663: A5 23 LDA $23 C2/D665: 8F 80 21 00 STA $002180 C2/D669: CA DEX C2/D66A: CA DEX C2/D66B: CA DEX C2/D66C: CA DEX C2/D66D: C8 INY C2/D66E: C4 12 CPY $12 C2/D670: D0 B7 BNE $D629 C2/D672: 7B TDC C2/D673: 99 1F 9E STA $9E1F,Y C2/D676: 88 DEY C2/D677: B9 1F 9E LDA $9E1F,Y C2/D67A: 3A DEC C2/D67B: 85 12 STA $12 C2/D67D: B9 1F 9E LDA $9E1F,Y C2/D680: D9 1E 9E CMP $9E1E,Y C2/D683: F0 42 BEQ $D6C7 C2/D685: A5 16 LDA $16 C2/D687: 38 SEC C2/D688: E5 12 SBC $12 C2/D68A: 90 04 BCC $D690 C2/D68C: C9 08 CMP #$08 C2/D68E: B0 02 BCS $D692 C2/D690: A9 08 LDA #$08 C2/D692: 8F 80 21 00 STA $002180 C2/D696: 85 22 STA $22 C2/D698: 9D 1F 96 STA $961F,X C2/D69B: 9D 21 96 STA $9621,X C2/D69E: A5 12 LDA $12 C2/D6A0: 18 CLC C2/D6A1: 65 18 ADC $18 C2/D6A3: B0 04 BCS $D6A9 C2/D6A5: C9 F7 CMP #$F7 C2/D6A7: 90 02 BCC $D6AB C2/D6A9: A9 F7 LDA #$F7 C2/D6AB: 8F 80 21 00 STA $002180 C2/D6AF: 85 23 STA $23 C2/D6B1: 9D 20 96 STA $9620,X C2/D6B4: 9D 22 96 STA $9622,X C2/D6B7: A5 22 LDA $22 C2/D6B9: 8F 80 21 00 STA $002180 C2/D6BD: A5 23 LDA $23 C2/D6BF: 8F 80 21 00 STA $002180 C2/D6C3: CA DEX C2/D6C4: CA DEX C2/D6C5: CA DEX C2/D6C6: CA DEX C2/D6C7: C6 12 DEC $12 C2/D6C9: 88 DEY C2/D6CA: D0 B1 BNE $D67D C2/D6CC: 60 RTS ; [ Circle Shape $03: Beam from Top ] circle_03: C2/D6CD: 20 77 D7 JSR $D777 C2/D6D0: C2 20 REP #$20 C2/D6D2: 7B TDC C2/D6D3: AA TAX C2/D6D4: AD 1F 97 LDA $971F C2/D6D7: 9D 1F 96 STA $961F,X C2/D6DA: 9D 5F 96 STA $965F,X C2/D6DD: 9D 9F 96 STA $969F,X C2/D6E0: 9D DF 96 STA $96DF,X C2/D6E3: E8 INX C2/D6E4: E8 INX C2/D6E5: E0 40 CPX #$40 C2/D6E7: D0 EE BNE $D6D7 C2/D6E9: 7B TDC C2/D6EA: E2 20 SEP #$20 C2/D6EC: 60 RTS ; [ Circle Shape $06: Horizontal Oval ] circle_06: C2/D6ED: A2 FE LDX #$FE C2/D6EF: 64 22 STZ $22 C2/D6F1: 64 26 STZ $26 C2/D6F3: A5 26 LDA $26 C2/D6F5: 29 01 AND #$01 C2/D6F7: D0 2C BNE $D725 C2/D6F9: A5 16 LDA $16 C2/D6FB: 38 SEC C2/D6FC: F9 1F 9E SBC $9E1F,Y C2/D6FF: 90 04 BCC $D705 C2/D701: C9 08 CMP #$08 C2/D703: B0 02 BCS $D707 C2/D705: A9 08 LDA #$08 C2/D707: 8F 80 21 00 STA $002180 C2/D70B: 9D 1F 96 STA $961F,X C2/D70E: B9 1F 9E LDA $9E1F,Y C2/D711: 18 CLC C2/D712: 65 18 ADC $18 C2/D714: B0 04 BCS $D71A C2/D716: C9 F7 CMP #$F7 C2/D718: 90 02 BCC $D71C C2/D71A: A9 F7 LDA #$F7 C2/D71C: 8F 80 21 00 STA $002180 C2/D720: 9D 20 96 STA $9620,X C2/D723: CA DEX C2/D724: CA DEX C2/D725: E6 26 INC $26 C2/D727: C8 INY C2/D728: C4 12 CPY $12 C2/D72A: D0 C7 BNE $D6F3 C2/D72C: 7B TDC C2/D72D: 99 1F 9E STA $9E1F,Y C2/D730: 88 DEY C2/D731: B9 1F 9E LDA $9E1F,Y C2/D734: 3A DEC C2/D735: 85 12 STA $12 C2/D737: B9 1F 9E LDA $9E1F,Y C2/D73A: D9 1E 9E CMP $9E1E,Y C2/D73D: F0 32 BEQ $D771 C2/D73F: A5 26 LDA $26 C2/D741: 29 01 AND #$01 C2/D743: D0 2A BNE $D76F C2/D745: A5 16 LDA $16 C2/D747: 38 SEC C2/D748: E5 12 SBC $12 C2/D74A: 90 04 BCC $D750 C2/D74C: C9 08 CMP #$08 C2/D74E: B0 02 BCS $D752 C2/D750: A9 08 LDA #$08 C2/D752: 8F 80 21 00 STA $002180 C2/D756: 9D 1F 96 STA $961F,X C2/D759: A5 12 LDA $12 C2/D75B: 18 CLC C2/D75C: 65 18 ADC $18 C2/D75E: B0 04 BCS $D764 C2/D760: C9 F7 CMP #$F7 C2/D762: 90 02 BCC $D766 C2/D764: A9 F7 LDA #$F7 C2/D766: 8F 80 21 00 STA $002180 C2/D76A: 9D 20 96 STA $9620,X C2/D76D: CA DEX C2/D76E: CA DEX C2/D76F: E6 26 INC $26 C2/D771: C6 12 DEC $12 C2/D773: 88 DEY C2/D774: D0 C1 BNE $D737 C2/D776: 60 RTS ; [ Circle Shape $00: Circle ] circle_00: C2/D777: A2 FE LDX #$FE C2/D779: A5 16 LDA $16 C2/D77B: 38 SEC C2/D77C: F9 1F 9E SBC $9E1F,Y C2/D77F: 90 04 BCC $D785 C2/D781: C9 08 CMP #$08 C2/D783: B0 02 BCS $D787 C2/D785: A9 08 LDA #$08 C2/D787: 8F 80 21 00 STA $002180 C2/D78B: 9D 1F 96 STA $961F,X C2/D78E: B9 1F 9E LDA $9E1F,Y C2/D791: 18 CLC C2/D792: 65 18 ADC $18 C2/D794: B0 04 BCS $D79A C2/D796: C9 F7 CMP #$F7 C2/D798: 90 02 BCC $D79C C2/D79A: A9 F7 LDA #$F7 C2/D79C: 8F 80 21 00 STA $002180 C2/D7A0: 9D 20 96 STA $9620,X C2/D7A3: CA DEX C2/D7A4: CA DEX C2/D7A5: C8 INY C2/D7A6: C4 12 CPY $12 C2/D7A8: D0 CF BNE $D779 C2/D7AA: 4C 6E D8 JMP $D86E ; [ Circle Shape $01: Bio Blast ] circle_01: C2/D7AD: A2 FE LDX #$FE C2/D7AF: AD 1A 96 LDA $961A C2/D7B2: 18 CLC C2/D7B3: 69 02 ADC #$02 C2/D7B5: 85 26 STA $26 C2/D7B7: 8D 1A 96 STA $961A C2/D7BA: A5 26 LDA $26 C2/D7BC: 18 CLC C2/D7BD: 69 04 ADC #$04 C2/D7BF: 85 26 STA $26 C2/D7C1: DA PHX C2/D7C2: 20 1D DD JSR $DD1D C2/D7C5: 85 18 STA $18 C2/D7C7: 85 16 STA $16 C2/D7C9: A5 1A LDA $1A C2/D7CB: 18 CLC C2/D7CC: 65 18 ADC $18 C2/D7CE: 85 18 STA $18 C2/D7D0: A5 1A LDA $1A C2/D7D2: 18 CLC C2/D7D3: 65 16 ADC $16 C2/D7D5: 85 16 STA $16 C2/D7D7: FA PLX C2/D7D8: A5 16 LDA $16 C2/D7DA: 38 SEC C2/D7DB: F9 1F 9E SBC $9E1F,Y C2/D7DE: 90 04 BCC $D7E4 C2/D7E0: C9 08 CMP #$08 C2/D7E2: B0 02 BCS $D7E6 C2/D7E4: A9 08 LDA #$08 C2/D7E6: 8F 80 21 00 STA $002180 C2/D7EA: 9D 1F 96 STA $961F,X C2/D7ED: B9 1F 9E LDA $9E1F,Y C2/D7F0: 18 CLC C2/D7F1: 65 18 ADC $18 C2/D7F3: B0 04 BCS $D7F9 C2/D7F5: C9 F7 CMP #$F7 C2/D7F7: 90 02 BCC $D7FB C2/D7F9: A9 F7 LDA #$F7 C2/D7FB: 8F 80 21 00 STA $002180 C2/D7FF: 9D 20 96 STA $9620,X C2/D802: CA DEX C2/D803: CA DEX C2/D804: C8 INY C2/D805: C4 12 CPY $12 C2/D807: D0 B1 BNE $D7BA C2/D809: 4C 6E D8 JMP $D86E ; [ Circle Shape $08: Slimer Blob ] circle_08: C2/D80C: 20 1E D8 JSR $D81E C2/D80F: 4C DE D9 JMP $D9DE ; [ Circle Shape $02: Big Blob ] circle_02: C2/D812: 20 1E D8 JSR $D81E C2/D815: 4C 04 DA JMP $DA04 ; [ Circle Shape $05: Small Blob ] circle_05: C2/D818: 20 1E D8 JSR $D81E C2/D81B: 4C F1 D9 JMP $D9F1 ; [ Update Blob ] circle_02_main: C2/D81E: A2 FE LDX #$FE C2/D820: A9 00 LDA #$00 C2/D822: 38 SEC C2/D823: F9 1F 9E SBC $9E1F,Y C2/D826: 8F 80 21 00 STA $002180 C2/D82A: 9D 1F 96 STA $961F,X C2/D82D: B9 1F 9E LDA $9E1F,Y C2/D830: 8F 80 21 00 STA $002180 C2/D834: 9D 20 96 STA $9620,X C2/D837: CA DEX C2/D838: CA DEX C2/D839: C8 INY C2/D83A: C4 12 CPY $12 C2/D83C: D0 E2 BNE $D820 C2/D83E: 7B TDC C2/D83F: 99 1F 9E STA $9E1F,Y C2/D842: 88 DEY C2/D843: B9 1F 9E LDA $9E1F,Y C2/D846: 3A DEC C2/D847: 85 12 STA $12 C2/D849: B9 1F 9E LDA $9E1F,Y C2/D84C: D9 1E 9E CMP $9E1E,Y C2/D84F: F0 17 BEQ $D868 C2/D851: A9 00 LDA #$00 C2/D853: 38 SEC C2/D854: E5 12 SBC $12 C2/D856: 8F 80 21 00 STA $002180 C2/D85A: 9D 1F 96 STA $961F,X C2/D85D: A5 12 LDA $12 C2/D85F: 8F 80 21 00 STA $002180 C2/D863: 9D 20 96 STA $9620,X C2/D866: CA DEX C2/D867: CA DEX C2/D868: C6 12 DEC $12 C2/D86A: 88 DEY C2/D86B: D0 DC BNE $D849 C2/D86D: 60 RTS ; [ ] C2/D86E: 7B TDC C2/D86F: 99 1F 9E STA $9E1F,Y C2/D872: 88 DEY C2/D873: B9 1F 9E LDA $9E1F,Y C2/D876: 3A DEC C2/D877: 85 12 STA $12 C2/D879: B9 1F 9E LDA $9E1F,Y C2/D87C: D9 1E 9E CMP $9E1E,Y C2/D87F: F0 2A BEQ $D8AB C2/D881: A5 16 LDA $16 C2/D883: 38 SEC C2/D884: E5 12 SBC $12 C2/D886: 90 04 BCC $D88C C2/D888: C9 08 CMP #$08 C2/D88A: B0 02 BCS $D88E C2/D88C: A9 08 LDA #$08 C2/D88E: 8F 80 21 00 STA $002180 C2/D892: 9D 1F 96 STA $961F,X C2/D895: A5 12 LDA $12 C2/D897: 18 CLC C2/D898: 65 18 ADC $18 C2/D89A: B0 04 BCS $D8A0 C2/D89C: C9 F7 CMP #$F7 C2/D89E: 90 02 BCC $D8A2 C2/D8A0: A9 F7 LDA #$F7 C2/D8A2: 8F 80 21 00 STA $002180 C2/D8A6: 9D 20 96 STA $9620,X C2/D8A9: CA DEX C2/D8AA: CA DEX C2/D8AB: C6 12 DEC $12 C2/D8AD: 88 DEY C2/D8AE: D0 C9 BNE $D879 C2/D8B0: 60 RTS ; [ Reset Window Position Buffer ??? ] clr_circle_mask_data: C2/D8B1: 7B TDC C2/D8B2: AA TAX C2/D8B3: C2 20 REP #$20 C2/D8B5: E2 10 SEP #$10 C2/D8B7: A9 FF 00 LDA #$00FF ; left position = 0, right position = 255 C2/D8BA: 9D 1F 96 STA $961F,X C2/D8BD: 9D 5F 96 STA $965F,X C2/D8C0: 9D 9F 96 STA $969F,X C2/D8C3: 9D DF 96 STA $96DF,X C2/D8C6: 9D 1F 97 STA $971F,X C2/D8C9: 9D 5F 97 STA $975F,X C2/D8CC: 9D 9F 97 STA $979F,X C2/D8CF: 9D DF 97 STA $97DF,X C2/D8D2: E8 INX C2/D8D3: E8 INX C2/D8D4: E0 40 CPX #$40 C2/D8D6: D0 E2 BNE $D8BA C2/D8D8: C2 10 REP #$10 C2/D8DA: E2 20 SEP #$20 C2/D8DC: 60 RTS ; [ Update Circle (long access) ] circle_long: C2/D8DD: 20 E1 D8 JSR $D8E1 ; update circle C2/D8E0: 6B RTL ; [ Update Circle ] circle_sub: C2/D8E1: 20 B1 D8 JSR $D8B1 ; reset window position buffer ??? C2/D8E4: AD 13 96 LDA $9613 C2/D8E7: 29 7F AND #$7F C2/D8E9: D0 01 BNE $D8EC ; return if circle size is zero C2/D8EB: 60 RTS C2/D8EC: E2 10 SEP #$10 C2/D8EE: 85 14 STA $14 C2/D8F0: 85 1E STA $1E C2/D8F2: AD 14 96 LDA $9614 ; circle x position C2/D8F5: 85 1A STA $1A C2/D8F7: 64 20 STZ $20 C2/D8F9: AD 19 96 LDA $9619 ; C2/D8FC: 85 24 STA $24 C2/D8FE: AD 1B 96 LDA $961B ; circle shape C2/D901: C9 08 CMP #$08 C2/D903: F0 08 BEQ $D90D C2/D905: C9 05 CMP #$05 C2/D907: F0 04 BEQ $D90D C2/D909: C9 02 CMP #$02 C2/D90B: D0 15 BNE $D922 C2/D90D: A5 14 LDA $14 C2/D90F: 85 24 STA $24 C2/D911: AD 1A 96 LDA $961A ; C2/D914: 20 1D DD JSR $DD1D ; C2/D917: 85 24 STA $24 C2/D919: A5 14 LDA $14 C2/D91B: 18 CLC C2/D91C: 65 24 ADC $24 C2/D91E: 85 14 STA $14 C2/D920: 85 1E STA $1E C2/D922: 7B TDC C2/D923: A8 TAY C2/D924: 3A DEC C2/D925: 85 12 STA $12 C2/D927: A5 1E LDA $1E C2/D929: C5 20 CMP $20 C2/D92B: 90 23 BCC $D950 C2/D92D: 99 1F 9E STA $9E1F,Y ; C2/D930: A5 20 LDA $20 C2/D932: 0A ASL C2/D933: 3A DEC C2/D934: 85 10 STA $10 C2/D936: C8 INY C2/D937: E6 20 INC $20 C2/D939: A5 14 LDA $14 C2/D93B: 38 SEC C2/D93C: E5 10 SBC $10 C2/D93E: 85 14 STA $14 C2/D940: C5 12 CMP $12 C2/D942: 90 E1 BCC $D925 C2/D944: C6 1E DEC $1E C2/D946: A5 1E LDA $1E C2/D948: 0A ASL C2/D949: 18 CLC C2/D94A: 65 14 ADC $14 C2/D94C: 85 14 STA $14 C2/D94E: 80 D5 BRA $D925 C2/D950: 84 12 STY $12 C2/D952: A9 1F LDA #$1F ; $7E971F (window position buffer) C2/D954: 8F 81 21 00 STA $002181 C2/D958: A9 97 LDA #$97 C2/D95A: 8F 82 21 00 STA $002182 C2/D95E: A9 7E LDA #$7E C2/D960: 8F 83 21 00 STA $002183 C2/D964: 7B TDC C2/D965: A8 TAY C2/D966: A5 1A LDA $1A C2/D968: 85 16 STA $16 C2/D96A: 85 18 STA $18 C2/D96C: 20 39 D5 JSR $D539 ; update circle shape ; fallthrough ; [ ] set_circle_mask_buf: C2/D96F: C2 10 REP #$10 C2/D971: AD 15 96 LDA $9615 C2/D974: C9 81 CMP #$81 C2/D976: 90 2B BCC $D9A3 C2/D978: 38 SEC C2/D979: E9 80 SBC #$80 C2/D97B: F0 26 BEQ $D9A3 C2/D97D: C2 20 REP #$20 C2/D97F: 0A ASL C2/D980: 0A ASL C2/D981: 85 22 STA $22 C2/D983: 7B TDC C2/D984: AA TAX C2/D985: AD 1B 96 LDA $961B ; circle shape C2/D988: 29 FF 00 AND #$00FF C2/D98B: C9 03 00 CMP #$0003 C2/D98E: D0 05 BNE $D995 C2/D990: AD 1F 96 LDA $961F C2/D993: 80 03 BRA $D998 C2/D995: A9 FF 00 LDA #$00FF C2/D998: 9D 21 9A STA $9A21,X C2/D99B: E8 INX C2/D99C: E8 INX C2/D99D: E8 INX C2/D99E: E8 INX C2/D99F: E4 22 CPX $22 C2/D9A1: D0 F5 BNE $D998 C2/D9A3: AD 15 96 LDA $9615 C2/D9A6: C2 20 REP #$20 C2/D9A8: 29 FF 00 AND #$00FF C2/D9AB: 0A ASL C2/D9AC: 0A ASL C2/D9AD: AA TAX C2/D9AE: 7B TDC C2/D9AF: A8 TAY C2/D9B0: B9 1F 96 LDA $961F,Y C2/D9B3: 9D 21 98 STA $9821,X C2/D9B6: C8 INY C2/D9B7: C8 INY C2/D9B8: C0 00 02 CPY #$0200 C2/D9BB: D0 11 BNE $D9CE C2/D9BD: A9 FF 00 LDA #$00FF C2/D9C0: 9D 21 98 STA $9821,X C2/D9C3: E8 INX C2/D9C4: E8 INX C2/D9C5: E8 INX C2/D9C6: E8 INX C2/D9C7: E0 5C 04 CPX #$045C C2/D9CA: D0 F4 BNE $D9C0 C2/D9CC: 80 09 BRA $D9D7 C2/D9CE: E8 INX C2/D9CF: E8 INX C2/D9D0: E8 INX C2/D9D1: E8 INX C2/D9D2: E0 5C 04 CPX #$045C C2/D9D5: D0 D9 BNE $D9B0 C2/D9D7: 7B TDC C2/D9D8: E2 20 SEP #$20 C2/D9DA: EE 97 61 INC $6197 C2/D9DD: 60 RTS ; [ Update Slimer Blob ] C2/D9DE: C2 10 REP #$10 C2/D9E0: A9 08 LDA #$08 C2/D9E2: 8D 1C 96 STA $961C C2/D9E5: A9 10 LDA #$10 C2/D9E7: 8D 1E 96 STA $961E C2/D9EA: A9 04 LDA #$04 C2/D9EC: 8D 1D 96 STA $961D C2/D9EF: 80 24 BRA $DA15 ; [ Update Small Blob ] C2/D9F1: C2 10 REP #$10 C2/D9F3: A9 04 LDA #$04 C2/D9F5: 8D 1C 96 STA $961C C2/D9F8: A9 0A LDA #$0A C2/D9FA: 8D 1E 96 STA $961E C2/D9FD: A9 08 LDA #$08 C2/D9FF: 8D 1D 96 STA $961D C2/DA02: 80 11 BRA $DA15 ; [ Update Big Blob ] C2/DA04: C2 10 REP #$10 C2/DA06: A9 08 LDA #$08 C2/DA08: 8D 1C 96 STA $961C C2/DA0B: A9 20 LDA #$20 C2/DA0D: 8D 1E 96 STA $961E C2/DA10: A9 04 LDA #$04 C2/DA12: 8D 1D 96 STA $961D C2/DA15: AD 1A 96 LDA $961A C2/DA18: 18 CLC C2/DA19: 6D 1C 96 ADC $961C C2/DA1C: 8D 1A 96 STA $961A C2/DA1F: 85 26 STA $26 C2/DA21: AD 1E 96 LDA $961E C2/DA24: 85 24 STA $24 C2/DA26: AD 1D 96 LDA $961D C2/DA29: 85 28 STA $28 C2/DA2B: 7B TDC C2/DA2C: A8 TAY C2/DA2D: A5 26 LDA $26 C2/DA2F: 18 CLC C2/DA30: 65 28 ADC $28 C2/DA32: 85 26 STA $26 C2/DA34: B9 20 96 LDA $9620,Y C2/DA37: F0 2C BEQ $DA65 C2/DA39: A5 26 LDA $26 C2/DA3B: 20 1D DD JSR $DD1D C2/DA3E: 18 CLC C2/DA3F: 65 16 ADC $16 C2/DA41: 85 22 STA $22 C2/DA43: B9 1F 96 LDA $961F,Y C2/DA46: 18 CLC C2/DA47: 65 22 ADC $22 C2/DA49: 90 04 BCC $DA4F C2/DA4B: C9 08 CMP #$08 C2/DA4D: B0 02 BCS $DA51 C2/DA4F: A9 08 LDA #$08 C2/DA51: 99 1F 96 STA $961F,Y C2/DA54: B9 20 96 LDA $9620,Y C2/DA57: 18 CLC C2/DA58: 65 22 ADC $22 C2/DA5A: B0 04 BCS $DA60 C2/DA5C: C9 F7 CMP #$F7 C2/DA5E: 90 02 BCC $DA62 C2/DA60: A9 F7 LDA #$F7 C2/DA62: 99 20 96 STA $9620,Y C2/DA65: C8 INY C2/DA66: C8 INY C2/DA67: C0 00 02 CPY #$0200 C2/DA6A: D0 C1 BNE $DA2D C2/DA6C: 60 RTS ; [ ] triangle_long: C2/DA6D: 20 71 DA JSR $DA71 C2/DA70: 6B RTL triangle_sub: C2/DA71: 20 B1 D8 JSR $D8B1 C2/DA74: AD 5C 61 LDA $615C C2/DA77: CD 5E 61 CMP $615E C2/DA7A: F0 20 BEQ $DA9C C2/DA7C: 90 1E BCC $DA9C C2/DA7E: AD 60 61 LDA $6160 C2/DA81: CD 5E 61 CMP $615E C2/DA84: F0 1D BEQ $DAA3 C2/DA86: 90 1B BCC $DAA3 C2/DA88: AE 5B 61 LDX $615B C2/DA8B: 8E 65 61 STX $6165 C2/DA8E: AE 5D 61 LDX $615D C2/DA91: 8E 61 61 STX $6161 C2/DA94: AE 5F 61 LDX $615F C2/DA97: 8E 63 61 STX $6163 C2/DA9A: 80 2D BRA $DAC9 C2/DA9C: CD 60 61 CMP $6160 C2/DA9F: F0 16 BEQ $DAB7 C2/DAA1: 90 14 BCC $DAB7 C2/DAA3: AE 5F 61 LDX $615F C2/DAA6: 8E 61 61 STX $6161 C2/DAA9: AE 5B 61 LDX $615B C2/DAAC: 8E 63 61 STX $6163 C2/DAAF: AE 5D 61 LDX $615D C2/DAB2: 8E 65 61 STX $6165 C2/DAB5: 80 12 BRA $DAC9 C2/DAB7: AE 5B 61 LDX $615B C2/DABA: 8E 61 61 STX $6161 C2/DABD: AE 5D 61 LDX $615D C2/DAC0: 8E 63 61 STX $6163 C2/DAC3: AE 5F 61 LDX $615F C2/DAC6: 8E 65 61 STX $6165 C2/DAC9: AD 63 61 LDA $6163 C2/DACC: CD 65 61 CMP $6165 C2/DACF: F0 10 BEQ $DAE1 C2/DAD1: 90 0E BCC $DAE1 C2/DAD3: AE 63 61 LDX $6163 C2/DAD6: DA PHX C2/DAD7: AE 65 61 LDX $6165 C2/DADA: 8E 63 61 STX $6163 C2/DADD: FA PLX C2/DADE: 8E 65 61 STX $6165 C2/DAE1: AE 61 61 LDX $6161 C2/DAE4: 8E 4C 61 STX $614C C2/DAE7: AE 63 61 LDX $6163 C2/DAEA: 8E 4E 61 STX $614E C2/DAED: 22 C8 DC C2 JSL $C2DCC8 C2/DAF1: AD 61 61 LDA $6161 C2/DAF4: 85 1E STA $1E C2/DAF6: AD 62 61 LDA $6162 C2/DAF9: 85 20 STA $20 C2/DAFB: 20 6A DB JSR $DB6A C2/DAFE: AE 61 61 LDX $6161 C2/DB01: 8E 4C 61 STX $614C C2/DB04: AE 65 61 LDX $6165 C2/DB07: 8E 4E 61 STX $614E C2/DB0A: 22 C8 DC C2 JSL $C2DCC8 C2/DB0E: AD 61 61 LDA $6161 C2/DB11: 85 1E STA $1E C2/DB13: AD 62 61 LDA $6162 C2/DB16: 85 20 STA $20 C2/DB18: 20 19 DC JSR $DC19 C2/DB1B: AD 64 61 LDA $6164 C2/DB1E: CD 66 61 CMP $6166 C2/DB21: F0 21 BEQ $DB44 C2/DB23: 90 1F BCC $DB44 C2/DB25: AE 65 61 LDX $6165 C2/DB28: 8E 4C 61 STX $614C C2/DB2B: AE 63 61 LDX $6163 C2/DB2E: 8E 4E 61 STX $614E C2/DB31: 22 C8 DC C2 JSL $C2DCC8 C2/DB35: AD 65 61 LDA $6165 C2/DB38: 85 1E STA $1E C2/DB3A: AD 66 61 LDA $6166 C2/DB3D: 85 20 STA $20 C2/DB3F: 20 19 DC JSR $DC19 C2/DB42: 80 1D BRA $DB61 C2/DB44: AE 63 61 LDX $6163 C2/DB47: 8E 4C 61 STX $614C C2/DB4A: AE 65 61 LDX $6165 C2/DB4D: 8E 4E 61 STX $614E C2/DB50: 22 C8 DC C2 JSL $C2DCC8 C2/DB54: AD 63 61 LDA $6163 C2/DB57: 85 1E STA $1E C2/DB59: AD 64 61 LDA $6164 C2/DB5C: 85 20 STA $20 C2/DB5E: 20 6A DB JSR $DB6A C2/DB61: AD 55 61 LDA $6155 C2/DB64: 8D 15 96 STA $9615 C2/DB67: 4C 6F D9 JMP $D96F ; [ ] line_set: C2/DB6A: AD 54 61 LDA $6154 C2/DB6D: 85 10 STA $10 C2/DB6F: 30 04 BMI $DB75 C2/DB71: A9 08 LDA #$08 C2/DB73: 80 02 BRA $DB77 C2/DB75: A9 F7 LDA #$F7 C2/DB77: 85 14 STA $14 C2/DB79: 64 11 STZ $11 C2/DB7B: 64 15 STZ $15 C2/DB7D: 64 1F STZ $1F C2/DB7F: A5 20 LDA $20 C2/DB81: C2 20 REP #$20 C2/DB83: 0A ASL C2/DB84: A8 TAY C2/DB85: A5 10 LDA $10 C2/DB87: 38 SEC C2/DB88: E9 80 00 SBC #$0080 C2/DB8B: 85 10 STA $10 C2/DB8D: 7B TDC C2/DB8E: E2 20 SEP #$20 C2/DB90: AE 52 61 LDX $6152 C2/DB93: 86 22 STX $22 C2/DB95: 86 24 STX $24 C2/DB97: A5 23 LDA $23 C2/DB99: D0 01 BNE $DB9C C2/DB9B: 60 RTS C2/DB9C: AD 50 61 LDA $6150 C2/DB9F: 30 3C BMI $DBDD C2/DBA1: A5 24 LDA $24 C2/DBA3: C5 23 CMP $23 C2/DBA5: 90 07 BCC $DBAE C2/DBA7: 38 SEC C2/DBA8: E5 23 SBC $23 C2/DBAA: E6 1E INC $1E C2/DBAC: 80 F5 BRA $DBA3 C2/DBAE: 18 CLC C2/DBAF: 65 22 ADC $22 C2/DBB1: 85 24 STA $24 C2/DBB3: C2 20 REP #$20 C2/DBB5: A5 1E LDA $1E C2/DBB7: 18 CLC C2/DBB8: 65 10 ADC $10 C2/DBBA: C9 09 00 CMP #$0009 C2/DBBD: 90 05 BCC $DBC4 C2/DBBF: C9 F8 00 CMP #$00F8 C2/DBC2: 90 02 BCC $DBC6 C2/DBC4: A5 14 LDA $14 C2/DBC6: 85 12 STA $12 C2/DBC8: 7B TDC C2/DBC9: E2 20 SEP #$20 C2/DBCB: A5 12 LDA $12 C2/DBCD: D9 20 96 CMP $9620,Y C2/DBD0: D0 01 BNE $DBD3 C2/DBD2: 1A INC C2/DBD3: 99 1F 96 STA $961F,Y C2/DBD6: C8 INY C2/DBD7: C8 INY C2/DBD8: C6 25 DEC $25 C2/DBDA: D0 C5 BNE $DBA1 C2/DBDC: 60 RTS C2/DBDD: A5 24 LDA $24 C2/DBDF: C5 23 CMP $23 C2/DBE1: 90 07 BCC $DBEA C2/DBE3: 38 SEC C2/DBE4: E5 23 SBC $23 C2/DBE6: C6 1E DEC $1E C2/DBE8: 80 F5 BRA $DBDF C2/DBEA: 18 CLC C2/DBEB: 65 22 ADC $22 C2/DBED: 85 24 STA $24 C2/DBEF: C2 20 REP #$20 C2/DBF1: A5 1E LDA $1E C2/DBF3: 18 CLC C2/DBF4: 65 10 ADC $10 C2/DBF6: C9 09 00 CMP #$0009 C2/DBF9: 90 05 BCC $DC00 C2/DBFB: C9 F8 00 CMP #$00F8 C2/DBFE: 90 02 BCC $DC02 C2/DC00: A5 14 LDA $14 C2/DC02: 85 12 STA $12 C2/DC04: 7B TDC C2/DC05: E2 20 SEP #$20 C2/DC07: A5 12 LDA $12 C2/DC09: D9 20 96 CMP $9620,Y C2/DC0C: D0 01 BNE $DC0F C2/DC0E: 1A INC C2/DC0F: 99 1F 96 STA $961F,Y C2/DC12: C8 INY C2/DC13: C8 INY C2/DC14: C6 25 DEC $25 C2/DC16: D0 C5 BNE $DBDD C2/DC18: 60 RTS ; [ ] line_set2: C2/DC19: AD 54 61 LDA $6154 C2/DC1C: 85 10 STA $10 C2/DC1E: 30 04 BMI $DC24 C2/DC20: A9 08 LDA #$08 C2/DC22: 80 02 BRA $DC26 C2/DC24: A9 F7 LDA #$F7 C2/DC26: 85 14 STA $14 C2/DC28: 64 15 STZ $15 C2/DC2A: 64 11 STZ $11 C2/DC2C: 64 1F STZ $1F C2/DC2E: A5 20 LDA $20 C2/DC30: C2 20 REP #$20 C2/DC32: 0A ASL C2/DC33: A8 TAY C2/DC34: A5 10 LDA $10 C2/DC36: 38 SEC C2/DC37: E9 80 00 SBC #$0080 C2/DC3A: 85 10 STA $10 C2/DC3C: 7B TDC C2/DC3D: E2 20 SEP #$20 C2/DC3F: AE 52 61 LDX $6152 C2/DC42: 86 22 STX $22 C2/DC44: 86 24 STX $24 C2/DC46: A5 23 LDA $23 C2/DC48: D0 01 BNE $DC4B C2/DC4A: 60 RTS C2/DC4B: AD 50 61 LDA $6150 C2/DC4E: 30 3C BMI $DC8C C2/DC50: A5 24 LDA $24 C2/DC52: C5 23 CMP $23 C2/DC54: 90 07 BCC $DC5D C2/DC56: 38 SEC C2/DC57: E5 23 SBC $23 C2/DC59: E6 1E INC $1E C2/DC5B: 80 F5 BRA $DC52 C2/DC5D: 18 CLC C2/DC5E: 65 22 ADC $22 C2/DC60: 85 24 STA $24 C2/DC62: C2 20 REP #$20 C2/DC64: A5 1E LDA $1E C2/DC66: 18 CLC C2/DC67: 65 10 ADC $10 C2/DC69: C9 09 00 CMP #$0009 C2/DC6C: 90 05 BCC $DC73 C2/DC6E: C9 F8 00 CMP #$00F8 C2/DC71: 90 02 BCC $DC75 C2/DC73: A5 14 LDA $14 C2/DC75: 85 12 STA $12 C2/DC77: 7B TDC C2/DC78: E2 20 SEP #$20 C2/DC7A: A5 12 LDA $12 C2/DC7C: D9 1F 96 CMP $961F,Y C2/DC7F: D0 01 BNE $DC82 C2/DC81: 3A DEC C2/DC82: 99 20 96 STA $9620,Y C2/DC85: C8 INY C2/DC86: C8 INY C2/DC87: C6 25 DEC $25 C2/DC89: D0 C5 BNE $DC50 C2/DC8B: 60 RTS C2/DC8C: A5 24 LDA $24 C2/DC8E: C5 23 CMP $23 C2/DC90: 90 07 BCC $DC99 C2/DC92: 38 SEC C2/DC93: E5 23 SBC $23 C2/DC95: C6 1E DEC $1E C2/DC97: 80 F5 BRA $DC8E C2/DC99: 18 CLC C2/DC9A: 65 22 ADC $22 C2/DC9C: 85 24 STA $24 C2/DC9E: C2 20 REP #$20 C2/DCA0: A5 1E LDA $1E C2/DCA2: 18 CLC C2/DCA3: 65 10 ADC $10 C2/DCA5: C9 09 00 CMP #$0009 C2/DCA8: 90 05 BCC $DCAF C2/DCAA: C9 F8 00 CMP #$00F8 C2/DCAD: 90 02 BCC $DCB1 C2/DCAF: A5 14 LDA $14 C2/DCB1: 85 12 STA $12 C2/DCB3: 7B TDC C2/DCB4: E2 20 SEP #$20 C2/DCB6: A5 12 LDA $12 C2/DCB8: D9 1F 96 CMP $961F,Y C2/DCBB: D0 01 BNE $DCBE C2/DCBD: 3A DEC C2/DCBE: 99 20 96 STA $9620,Y C2/DCC1: C8 INY C2/DCC2: C8 INY C2/DCC3: C6 25 DEC $25 C2/DCC5: D0 C5 BNE $DC8C C2/DCC7: 60 RTS ; [ ] one_line_init: C2/DCC8: 7B TDC C2/DCC9: AA TAX C2/DCCA: 8E 50 61 STX $6150 C2/DCCD: 8E 52 61 STX $6152 C2/DCD0: AD 4C 61 LDA $614C C2/DCD3: CD 4E 61 CMP $614E C2/DCD6: F0 1E BEQ $DCF6 C2/DCD8: 90 0F BCC $DCE9 C2/DCDA: CE 50 61 DEC $6150 C2/DCDD: AD 4C 61 LDA $614C C2/DCE0: 38 SEC C2/DCE1: ED 4E 61 SBC $614E C2/DCE4: 8D 52 61 STA $6152 C2/DCE7: 80 0D BRA $DCF6 C2/DCE9: EE 50 61 INC $6150 C2/DCEC: AD 4E 61 LDA $614E C2/DCEF: 38 SEC C2/DCF0: ED 4C 61 SBC $614C C2/DCF3: 8D 52 61 STA $6152 C2/DCF6: AD 4D 61 LDA $614D C2/DCF9: CD 4F 61 CMP $614F C2/DCFC: F0 1E BEQ $DD1C C2/DCFE: 90 0F BCC $DD0F C2/DD00: CE 51 61 DEC $6151 C2/DD03: AD 4D 61 LDA $614D C2/DD06: 38 SEC C2/DD07: ED 4F 61 SBC $614F C2/DD0A: 8D 53 61 STA $6153 C2/DD0D: 80 0D BRA $DD1C C2/DD0F: EE 51 61 INC $6151 C2/DD12: AD 4F 61 LDA $614F C2/DD15: 38 SEC C2/DD16: ED 4D 61 SBC $614D C2/DD19: 8D 53 61 STA $6153 C2/DD1C: 6B RTL ; [ ] sin_data_get_local: C2/DD1D: AA TAX C2/DD1E: BF 6D FE C2 LDA $C2FE6D,X ; sin/cos table C2/DD22: 10 1A BPL $DD3E C2/DD24: 49 FF EOR #$FF C2/DD26: 8F 02 42 00 STA $004202 C2/DD2A: A5 24 LDA $24 C2/DD2C: 8F 03 42 00 STA $004203 C2/DD30: A9 FF LDA #$FF C2/DD32: 85 67 STA $67 C2/DD34: 85 67 STA $67 C2/DD36: AF 17 42 00 LDA $004217 C2/DD3A: 49 FF EOR #$FF C2/DD3C: 1A INC C2/DD3D: 60 RTS C2/DD3E: 8F 02 42 00 STA $004202 C2/DD42: A5 24 LDA $24 C2/DD44: 8F 03 42 00 STA $004203 C2/DD48: A9 00 LDA #$00 C2/DD4A: 85 67 STA $67 C2/DD4C: 85 67 STA $67 C2/DD4E: AF 17 42 00 LDA $004217 C2/DD52: 60 RTS ; [ Battle Animation Command $80/$70: ] magic_init_112long: C2/DD53: C2 20 REP #$20 C2/DD55: 7B TDC C2/DD56: AA TAX C2/DD57: E2 10 SEP #$10 C2/DD59: AD 24 7B LDA $7B24 C2/DD5C: 38 SEC C2/DD5D: ED 2B 7B SBC $7B2B C2/DD60: 9D F7 4A STA $4AF7,X C2/DD63: E8 INX C2/DD64: E8 INX C2/DD65: E8 INX C2/DD66: E8 INX C2/DD67: E0 80 CPX #$80 C2/DD69: D0 F5 BNE $DD60 C2/DD6B: 7B TDC C2/DD6C: E2 20 SEP #$20 C2/DD6E: C2 10 REP #$10 C2/DD70: 6B RTL ; [ Battle Animation Command $80/$6E: ] magic_init_110long: C2/DD71: 7B TDC C2/DD72: AA TAX C2/DD73: 64 22 STZ $22 C2/DD75: BD B0 63 LDA $63B0,X C2/DD78: 18 CLC C2/DD79: 65 23 ADC $23 C2/DD7B: 9D B0 63 STA $63B0,X C2/DD7E: A5 22 LDA $22 C2/DD80: 18 CLC C2/DD81: 65 26 ADC $26 C2/DD83: 85 22 STA $22 C2/DD85: E8 INX C2/DD86: E8 INX C2/DD87: E8 INX C2/DD88: E8 INX C2/DD89: D0 EA BNE $DD75 C2/DD8B: 6B RTL ; -----------------------------------[ Battle Graphics: Misc. Data ]------------------------------------ ; menu window tile data VRAM pointers frame_tfr_poi: C2/DD8C: .DW $7000, $7140, $7600, $7300, $7400, $7500, $7700, $6800 C2/DD9C: .DW $6900 ; menu window size & position data C2/DD9E: .DB $0C, $08 \ .DW $8D15 C2/DDA2: .DB $12, $08 \ .DW $8D2D C2/DDA6: .DB $0A, $08 \ .DW $8D17 C2/DDAA: .DB $1E, $08 \ .DW $8D15 C2/DDAE: .DB $1E, $08 \ .DW $8D15 C2/DDB2: .DB $09, $08 \ .DW $8D3F C2/DDB6: .DB $1E, $05 \ .DW $8D15 C2/DDBA: .DB $15, $08 \ .DW $8D15 C2/DDBE: .DB $1E, $04 \ .DW $8D15 C2/DDC2: .DB $07, $04 \ .DW $8D13 C2/DDC6: .DB $0C, $05 \ .DW $8D13 C2/DDCA: .DB $1E, $04 \ .DW $A9C1 C2/DDCE: .DB $12, $04 \ .DW $A9CD C2/DDD2: .DB $13, $07 \ .DW $8D17 C2/DDD6: .DB $0C, $08 \ .DW $8D17 ; menu text position data C2/DDDA: .DW $4E75, $4D51, $0008, $0000 .DW $4F75, $4D51, $0008, $0000 .DW $51D5, $4D61, $0008, $0000 .DW $53D5, $4D61, $0005, $0000 .DW $5475, $4D61, $0006, $0000 .DW $4F75, $4D51, $0005, $0000 .DW $4F95, $4D71, $0005, $0000 .DW $4FC5, $4DA1, $0005, $0000 .DW $4FF5, $4DD1, $0005, $0000 .DW $4F75, $4D51, $0006, $0000 .DW $5095, $4D71, $0008, $0000 ; menu text vertical offset and height (in tiles) C2/DE32: .DW $025C, $0008 .DW $025C, $0008 .DW $026C, $0008 .DW $026C, $0008 .DW $026C, $0008 .DW $027C, $0005 .DW $026C, $0008 .DW $027C, $0005 .DW $027C, $0004 .DW $027C, $0004 .DW $025C, $0004 .DW $028C, $0004 .DW $02BC, $0004 .DW $02EC, $0004 .DW $025C, $0004 .DW $028C, $0004 .DW $02BC, $0004 .DW $02EC, $0004 .DW $026C, $0005 .DW $026C, $0005 .DW $026C, $0008 .DW $026C, $0008 .DW $025C, $0007 .DW $025C, $0004 .DW $025C, $0004 .DW $027C, $0008 .DW $027C, $0008 .DW $027C, $0008 ; battle menu window scroll positions C2/DEA2: .DW $0000, $0068 .DW $0000, $00B8 .DW $0100, $00E4 .DW $0000, $0124 .DW $0100, $0064 .DW $0100, $00A0 .DW $0000, $00B8 .DW $0000, $0124 .DW $0100, $0120 .DW $0100, $0064 .DW $FFF8, $FF68 .DW $FFF8, $FF5C .DW $FFF8, $FF50 .DW $FFF8, $FF44 .DW $0000, $0000 .DW $0000, $0000 .DW $0000, $0000 .DW $0000, $0000 .DW $FFF0, $FFA4 .DW $0000, $0000 .DW $0000, $0124 .DW $0000, $0068 .DW $0000, $00B8 .DW $FFF0, $FF68 .DW $0000, $0000 .DW $0000, $0060 .DW $0000, $0124 .DW $0100, $0064 ; menu region text data C2/DF12: .DW $5AD5 \ .DB $0C, $00 C2/DF16: .DW $5B95 \ .DB $07, $00 C2/DF1A: .DW $5C05 \ .DB $04, $00 C2/DF1E: .DW $5C45 \ .DB $06, $00 C2/DF22: .DW $5859 \ .DB $20, $00 C2/DF26: .DW $8D61 \ .DB $20, $00 C2/DF2A: .DW $5E4D \ .DB $20, $00 C2/DF2E: .DW $5CA5 \ .DB $07, $00 C2/DF32: .DW $5D3F \ .DB $07, $00 C2/DF36: .DW $5D85 \ .DB $07, $00 C2/DF3A: .DW $5CA5 \ .DB $07, $00 C2/DF3E: .DW $5CC1 \ .DB $07, $00 C2/DF42: .DW $5CDD \ .DB $07, $00 C2/DF46: .DW $5CF9 \ .DB $07, $00 C2/DF4A: .DW $5C05 \ .DB $04, $00 C2/DF4E: .DW $5C15 \ .DB $04, $00 C2/DF52: .DW $5C25 \ .DB $04, $00 C2/DF56: .DW $5C35 \ .DB $04, $00 C2/DF5A: .DW $5C45 \ .DB $06, $00 C2/DF5E: .DW $5C5D \ .DB $06, $00 C2/DF62: .DW $5C75 \ .DB $06, $00 C2/DF66: .DW $5C8D \ .DB $06, $00 C2/DF6A: .DW $5C45 \ .DB $06, $00 C2/DF6E: .DW $5C5D \ .DB $06, $00 C2/DF72: .DW $5C75 \ .DB $06, $00 C2/DF76: .DW $5C8D \ .DB $06, $00 C2/DF7A: .DW $5C45 \ .DB $06, $00 C2/DF7E: .DW $5C5D \ .DB $06, $00 C2/DF82: .DW $5C75 \ .DB $06, $00 C2/DF86: .DW $5C8D \ .DB $06, $00 C2/DF8A: .DW $5DBD \ .DB $0C, $00 C2/DF8E: .DW $5859 \ .DB $20, $00 C2/DF92: .DW $5859 \ .DB $20, $00 C2/DF96: .DW $5ECD \ .DB $0A, $00 C2/DF9A: .DW $8D57 \ .DB $20, $00 ; menu text tile display data (source, destination, length, number of lines) set_box_data_tbl: C2/DF9E: .DW $5AD5, $5859, $0018, $0008 ; monster names C2/DFA6: .DW $5B95, $5871, $000E, $0008 ; character names C2/DFAE: .DW $5C05, $587F, $0008, $0008 ; hp C2/DFB6: .DW $5C45, $5887, $000C, $0008 ; gauge C2/DFBE: .DW $5D31, $8D15, $000E, $0005 ; row (top) C2/DFC6: .DW $5D31, $8D95, $000E, $0005 ; row C2/DFCE: .DW $5D31, $8E15, $000E, $0005 ; row C2/DFD6: .DW $5D31, $8E95, $000E, $0005 ; row (bottom) C2/DFDE: .DW $5D77, $8D21, $000E, $0005 ; def. (top) C2/DFE6: .DW $5D77, $8DA1, $000E, $0005 ; def. C2/DFEE: .DW $5D77, $8E21, $000E, $0005 ; def. C2/DFF6: .DW $5D77, $8EA1, $000E, $0005 ; def. (bottom) C2/DFFE: .DW $5C05, $8D7D, $0008, $0008 ; hp C2/E006: .DW $5C45, $8D85, $000C, $0008 ; gauge C2/E00E: .DW $5DBD, $8D57, $0018, $0006 ; C2/E016: .DW $5D31, $8D17, $000E, $0005 ; row (short) C2/E01E: .DW $5D77, $8D2F, $000E, $0005 ; def. (short) C2/E026: .DW $5ECD, $8D57, $0014, $0008 C2/E02E: .DW $5B95, $8D6F, $000E, $0008 magic_win_data: C2/E036: .DB $05, $03, $04, $21, $0F, $00, $FF, $FF, $04, $21, $0F, $00, $05, $0A, $00 C2/E045: .DB $FF, $FF, $FF, $04, $21, $19, $00, $00 C2/E04D: .DB $05, $04, $04, $21, $06, $00, $05, $03, $04, $21, $06, $00, $00 C2/E05A: .DB $05, $04, $04, $21, $17, $00, $05, $02, $04, $21, $17, $00, $00 C2/E067: .DB $05, $04, $04, $21, $18, $00, $05, $02, $04, $21, $18, $00, $00 ; item in list C2/E074: .DB $05, $04, $04, $21, $0E, $00, $C1, $02, $00, $FF, $FF, $12, $00, $FF, $00 magic2_win_data: C2/E083: .DB $FF, $FF, $84, $AC, $A9, $9E, $AB, $FF, $FF, $04, $21, $1A, $00, $05, $04, $03, $2C, $03, $2F, $FF, $16, $00, $00 ; pointers to menu region text C2/E09A: .DW $E1C9, $E1D9, $E1E9, $E1F5, $E248, $E268, $E172, $E185 C2/E0AA: .DW $E165, $E16B, $E1A1, $E1A8, $E1AF, $E1B6, $E125, $E128 C2/E0BA: .DW $E12B, $E12E, $E131, $E134, $E137, $E13A, $E13D, $E142 C2/E0CA: .DW $E147, $E14C, $E151, $E156, $E15B, $E160, $E0EC, $E201 C2/E0DA: .DW $E228, $E1BD, $E0E0 ; menu text region $22: C2/E0E0: .DB $05, $12, $01, $05, $12, $01, $05, $12, $01, $05, $12, $00 ; menu text region $1E: swdtech numbers and gauge C2/E0EC: .DB $FF, $FF, $04, $21, $B5, $04, $21, $B6, $04, $21, $B7, $04, $21, $B8, $04, $21 .DB $B9, $04, $21, $BA, $04, $21, $BB, $04, $21, $BC, $FF, $FF, $01, $04, $35, $FF .DB $03, $F9, $03, $F0, $03, $F0, $03, $F0, $03, $F0, $03, $F0, $03, $F0, $03, $F0 .DB $03, $F0, $03, $FA, $FF, $01, $05, $0C, $00 ; menu text region $0E-$11: current hp (one character) C2/E125: .DB $07, $01, $00 C2/E128: .DB $08, $01, $00 C2/E12B: .DB $09, $01, $00 C2/E12E: .DB $0A, $01, $00 ; menu text region $12-$15: ATB gauge or max hp (one character) C2/E131: .DB $07, $02, $00 C2/E134: .DB $08, $02, $00 C2/E137: .DB $09, $02, $00 C2/E13A: .DB $0A, $02, $00 ; menu text region $16-$19: morph gauge C2/E13D: .DB $04, $39, $07, $05, $00 C2/E142: .DB $04, $39, $08, $05, $00 C2/E147: .DB $04, $39, $09, $05, $00 C2/E14C: .DB $04, $39, $0A, $05, $00 ; menu text region $1A-$1D: condemned gauge C2/E151: .DB $04, $3D, $07, $06, $00 C2/E156: .DB $04, $3D, $08, $06, $00 C2/E15B: .DB $04, $3D, $09, $06, $00 C2/E160: .DB $04, $3D, $0A, $06, $00 ; menu text region $08: "Row" C2/E165: .DB $FF, $FF, $91, $A8, $B0, $00 ; menu text region $09: "Def." C2/E16B: .DB $FF, $FF, $83, $9E, $9F, $C5, $00 ; menu text region $06: "R-Hand", "L-Hand" C2/E172: .DB $05, $03, $91, $C4, $87, $9A, $A7, $9D, $05, $09, $8B, $C4, $87, $9A, $A7, $9D .DB $05, $07, $00 ; menu text region $07: current mp/max mp (for all characters) C2/E185: .DB $07, $03, $03, $15, $07, $04, $01, $08, $03, $03, $15, $08, $04, $01, $09, $03 .DB $03, $15, $09, $04, $01, $0A, $03, $03, $15, $0A, $04, $00 ; menu text region $0A-$0D: current mp/max mp (for one character C2/E1A1: .DB $07, $03, $03, $15, $07, $04, $00 C2/E1A8: .DB $08, $03, $03, $15, $08, $04, $00 C2/E1AF: .DB $09, $03, $03, $15, $09, $04, $00 C2/E1B6: .DB $0A, $03, $03, $15, $0A, $04, $00 ; menu text region $21: clear status names C2/E1BD: .DB $10, $1F, $01, $10, $1F, $01, $10, $1F, $01, $10, $1F, $00 ; menu text region $00: monster names C2/E1C9: .DB $0B, $00, $FF, $01, $0B, $01, $FF, $01, $0B, $02, $FF, $01, $0B, $03, $FF, $00 ; menu text region $01: character names C2/E1D9: .DB $07, $00, $FF, $01, $08, $00, $FF, $01, $09, $00, $FF, $01, $0A, $00, $FF, $00 ; menu text region $02: current hp (all characters) C2/E1E9: .DB $07, $01, $01, $08, $01, $01, $09, $01, $01, $0A, $01, $00 ; menu text region $03: ATB gauge or max hp (all characters) C2/E1F5: .DB $07, $02, $01, $08, $02, $01, $09, $02, $01, $0A, $02, $00 ; menu text region $1F: clear battle commands C2/E201: .DB $05, $06, $04, $21, $0D, $00, $05, $05, $01, $FF, $FF, $04, $21, $0D, $00, $16 .DB $16, $16, $FF, $FF, $04, $21, $0D, $00, $FF, $01, $16, $05, $06, $04, $21, $0D .DB $00, $05, $05, $01, $05, $13, $00 ; menu text region $20: C2/E228: .DB $FF, $04, $21, $11, $00, $FF, $16, $01, $FF, $04, $21, $11, $00, $FF, $16, $01 .DB $FF, $04, $21, $11, $00, $FF, $16, $01, $FF, $04, $21, $11, $00, $FF, $16, $00 ; menu text region $04: C2/E248: .DB $FF, $FF, $04, $21, $0D, $00, $FF, $01, $FF, $FF, $04, $21, $0D, $00, $FF, $01 .DB $FF, $FF, $04, $21, $0D, $00, $FF, $01, $FF, $FF, $04, $21, $0D, $00, $FF, $00 ; menu text region $05: C2/E268: .DB $FF, $FF, $04, $21, $1B, $00, $FF, $01, $FF, $FF, $04, $21, $1B, $00, $FF, $01 .DB $FF, $FF, $04, $21, $1B, $00, $FF, $01, $FF, $FF, $04, $21, $1B, $00, $FF, $00 ; color palettes C2/E288: .DW $0000, $31AD, $190A, $1D2B, $296B, $2129, $1D08, $1CE7 C2/E298: .DW $18E7, $18A5, $0823, $0C64, $294A, $18C6, $0CA9, $0866 C2/E2A8: .DW $3800, $4AF8, $3A96, $2A34, $1DD2, $112E, $0CA9, $0866 C2/E2B8: .DW $0823, $25D4, $14ED, $10A8, $0865, $0443, $2946, $2107 C2/E2C8: .DW $3800, $09D3, $0CB2, $11CB, $1D70, $14EC, $10A8, $0C84 C2/E2D8: .DW $0823, $420E, $296A, $1D70, $5273, $09D3, $0CB2, $11CB C2/E2E8: .DW $0000, $0C84, $0C44, $0C64, $1084, $0C43, $0C62, $0C42 C2/E2F8: .DW $0C42, $0C43, $0823, $0823, $0C63, $0C43, $0823, $0823 C2/E308: .DW $3800, $112E, $0CA9, $18A7, $1485, $1444, $1443, $1023 C2/E318: .DW $0823, $0823, $1046, $0845, $0824, $0823, $7FD4, $0823 C2/E328: .DW $3800, $5230, $4914, $3DEB, $0C64, $0845, $0824, $0823 C2/E338: .DW $0823, $0C64, $0C44, $65B0, $1065, $0863, $0844, $0C62 ; battle menu cursor state data C2/E348: .DB $01, $05, $00, $00 C2/E34C: .DB $01, $32, $39, $08 C2/E350: .DB $01, $0A, $00, $00 C2/E354: .DB $01, $0C, $00, $00 C2/E358: .DB $01, $0E, $00, $00 C2/E35C: .DB $01, $10, $00, $00 C2/E360: .DB $01, $16, $00, $00 C2/E364: .DB $01, $1B, $00, $00 C2/E368: .DB $01, $0A, $00, $00 C2/E36C: .DB $01, $1E, $00, $00 C2/E370: .DB $01, $21, $00, $00 C2/E374: .DB $01, $24, $00, $00 C2/E378: .DB $01, $27, $00, $00 C2/E37C: .DB $01, $2A, $00, $00 C2/E380: .DB $01, $2D, $00, $00 C2/E384: .DB $01, $30, $00, $00 C2/E388: .DB $01, $37, $00, $00 C2/E38C: .DB $01, $00, $00, $00 C2/E390: .DB $01, $41, $00, $00 ; tile pointers for damage numeral sprites C2/E394: .DB $C0, $C4, $C8, $CC C2/E398: .DB $60, $64, $68, $6C, $80, $84, $88, $8C, $A0, $A4 ; y offsets for float status C2/E3A2: .DB $FB, $FA, $F9, $F8, $F8, $F9, $FA, $FB ; glowing border frame delay (1 byte per character) C2/E3AA: .DB $00, $08, $10, $18 ; poison status colors C2/E3AE: .DW $7EDB, $4DD3 ; zombie status colors C2/E3B2: .DW $3AF5, $3210 ; berserk status colors C2/E3B6: .DW $013F, $001F ; glowing border colors for character status (reflect, safe, shell, haste, slow, vanish, unused, stop) C2/E3BA: .DW $6A60, $031F, $0B64, $001A, $7FFF, $7FFF, $001A, $7C1F ; x offsets for character status sprites (none, poison, muddle, dark, berserk/rage, mute, psyche/sleep) C2/E3CA: .DW $0000, $0000, $0000, $0002, $0000, $0010, $0020, $0000 ; sprite data for character status sprites (none, poison, muddle, dark, berserk/rage, mute, psyche/sleep) C2/E3DA: .DB $00, $F8, $20, $0A C2/E3DE: .DB $00, $F8, $22, $0A C2/E3E2: .DB $FF, $FA, $24, $08 C2/E3E6: .DB $00, $F8, $26, $0C C2/E3EA: .DB $F8, $F8, $28, $08 C2/E3EE: .DB $F0, $F8, $2A, $08 C2/E3F2: .DB $00, $10, $2C, $0C ; sprite data for character status sprites (character kneeling) C2/E3F6: .DB $00, $FD, $20, $0A C2/E3FA: .DB $00, $FD, $22, $0A C2/E3FE: .DB $FF, $FF, $24, $08 C2/E402: .DB $00, $FD, $26, $0C C2/E406: .DB $F8, $FD, $28, $08 C2/E40A: .DB $F0, $FD, $2A, $08 C2/E40E: .DB $00, $10, $2C, $0C super_offset: C2/E412: .DW $8000, $6000, $4000, $2000 ; pointers to character graphics vram buffers (+$7F0000) player_pat_put_poi: C2/E41A: .DW $A000, $A080, $A100, $A180 ; pointers to character sprite sheet buffers (+$7F0000) player_pat_get_poi: C2/E422: .DW $0000, $2000, $4000, $6000 obj_mask_tbl: C2/E42A: .DW $A000, $0000, $A000, $0000 C2/E432: .DW $A000, $0000, $A000, $0000, $A000, $0000 ; character h-flip for attack types (normal, back, pincer, side) player_init_attr: C2/E43E: .DB $00, $00, $00, $00 C2/E442: .DB $40, $40, $40, $40 C2/E446: .DB $40, $00, $40, $00 C2/E44A: .DB $00, $00, $40, $40 ; character hand swap for attack types player_init_direction: C2/E44E: .DB $00, $00, $00, $00 C2/E452: .DB $01, $01, $01, $01 C2/E456: .DB $01, $00, $01, $00 C2/E45A: .DB $00, $00, $01, $01 ; magitek color palette locations (fills an empty character slot color palette) armer_pal_tbl: C2/E45E: .DB $08, $0A, $0C, $0E land_not_chg_tbl: C2/E462: .DB $00, $00, $00, $00, $00, $00, $00, $01, $00, $00, $00, $00, $00, $01, $00, $01 C2/E472: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01 C2/E482: .DB $01, $01, $00, $00, $00, $01, $00, $00, $00, $01, $00, $00, $01, $00, $00, $00 C2/E492: .DB $00, $00, $01, $01, $01, $01, $01, $01 ; graphical actions when waiting to attack (for each command) command_act_tbl: C2/E49A: .DB $0B, $0B, $09, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B C2/E4AA: .DB $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $09, $09, $0B, $0B, $00, $0B, $0B C2/E4BA: .DB $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B last_vram_offset: C2/E4C3: .DW $3C00, $3800, $3400, $3000, $0C00, $0800, $0400, $0000 last_get_offset: C2/E4D3: .DW $C63F, $BE3F, $B63F, $AE3F, $DC00, $D400, $CC00, $C400 last_get_bank: C2/E4E3: .DB $7E, $7E, $7E, $7E, $7F, $7F, $7F, $7F ; pointers to monster exit animation scripts C2/E4EB: .DW $E53F, $E546, $E552, $E55E, $E56A, $E576, $E582, $E5C7 C2/E4FB: .DW $E58E, $E59A, $E5A6, $E5B2, $E5B8, $E53F, $E539, $E53F C2/E50B: .DW $E53F, $E53F ; pointers to monster entry animation scripts C2/E50F: .DW $E53F, $E540, $E54C, $E558, $E564, $E570, $E57C, $E5C1 C2/E51F: .DW $E588, $E594, $E5A0, $E5AC, $E53F, $E53F, $E533, $E5CD C2/E52F: .DW $E53F, $E53F ; monster entry/exit animation scripts C2/E533: .DB $00, $04, $9A, $15, $01, $FF C2/E539: .DB $00, $03, $8C, $15, $01, $FF C2/E53F: .DB $FF C2/E540: .DB $00, $04, $B0, $13, $01, $FF C2/E546: .DB $00, $03, $54, $15, $01, $FF C2/E54C: .DB $00, $04, $CC, $13, $01, $FF C2/E552: .DB $00, $03, $BE, $13, $01, $FF C2/E558: .DB $00, $04, $E8, $13, $01, $FF C2/E55E: .DB $00, $03, $DA, $13, $01, $FF C2/E564: .DB $00, $04, $04, $14, $01, $FF C2/E56A: .DB $00, $03, $F6, $13, $01, $FF C2/E570: .DB $00, $04, $20, $14, $01, $FF C2/E576: .DB $00, $03, $12, $14, $01, $FF C2/E57C: .DB $00, $04, $3C, $14, $01, $FF C2/E582: .DB $00, $03, $2E, $14, $01, $FF C2/E588: .DB $00, $04, $58, $14, $01, $FF C2/E58E: .DB $00, $03, $4A, $14, $01, $FF C2/E594: .DB $00, $04, $74, $14, $01, $FF C2/E59A: .DB $00, $03, $66, $14, $01, $FF C2/E5A0: .DB $00, $04, $90, $14, $01, $FF C2/E5A6: .DB $00, $03, $82, $14, $01, $FF C2/E5AC: .DB $00, $04, $AC, $14, $01, $FF C2/E5B2: .DB $00, $03, $9E, $14, $01, $FF C2/E5B8: .DB $00, $03, $62, $15, $01, $FF C2/E5BE: .DB $00, $E0, $FF C2/E5C1: .DB $00, $04, $B6, $15, $01, $FF C2/E5C7: .DB $00, $03, $A8, $15, $01, $FF C2/E5CD: .DB $00, $04, $C4, $15, $01, $FF ; pointers to misc. monster animation data C2/E5D3: .DW $E613, $E619, $E61F, $E625, $E62B, $E607, $E60D, $E631 C2/E5E3: .DW $E637, $E613, $E601, $E5FB, $E5F5, $E5EF ; misc. monster animation scripts (ai command $FA, command $2B) C2/E5EF: .DB $00, $04, $0A, $16, $01, $FF C2/E5F5: .DB $00, $04, $EE, $15, $01, $FF C2/E5FB: .DB $00, $04, $E0, $15, $01, $FF C2/E601: .DB $00, $04, $D2, $15, $01, $FF C2/E607: .DB $00, $05, $46, $15, $01, $FE C2/E60D: .DB $00, $05, $38, $15, $01, $FE C2/E613: .DB $00, $04, $FC, $0E, $01, $FF C2/E619: .DB $00, $04, $EE, $0E, $01, $FF C2/E61F: .DB $00, $04, $E0, $0E, $01, $FF C2/E625: .DB $00, $04, $F2, $14, $01, $FF C2/E62B: .DB $00, $04, $E4, $14, $01, $FF C2/E631: .DB $00, $04, $7E, $15, $01, $FF C2/E637: .DB $00, $04, $70, $15, $01, $FF ; [ Execute Misc. Monster Animation (AI Command $FA, Command $2B) ] pran2yos: C2/E63D: A0 02 00 LDY #$0002 C2/E640: B1 76 LDA ($76),Y C2/E642: 8D FC E9 STA $E9FC ; target monster C2/E645: 88 DEY C2/E646: B1 76 LDA ($76),Y ; ai command $FA subcommand C2/E648: C9 09 CMP #$09 C2/E64A: D0 0D BNE $E659 ; branch if not $09 (play sound effect) C2/E64C: C8 INY C2/E64D: B1 76 LDA ($76),Y ; sound effect C2/E64F: 85 10 STA $10 C2/E651: C8 INY C2/E652: B1 76 LDA ($76),Y C2/E654: 22 EB 17 C1 JSL $C117EB ; play animation sound effect C2/E658: 6B RTL C2/E659: C2 20 REP #$20 C2/E65B: 0A ASL C2/E65C: AA TAX C2/E65D: BF D3 E5 C2 LDA $C2E5D3,X ; pointer to misc. monster animation script C2/E661: 85 8F STA $8F C2/E663: 7B TDC C2/E664: E2 20 SEP #$20 C2/E666: 80 49 BRA $E6B1 ; [ Execute Monster Entry/Exit Animation ] mon_mode_chg_long: C2/E668: 20 54 EA JSR $EA54 ; wait for scanline 160 C2/E66B: A0 01 00 LDY #$0001 C2/E66E: B1 76 LDA ($76),Y ; entry/exit type C2/E670: C9 0D CMP #$0D C2/E672: D0 06 BNE $E67A ; branch if not $0D (flash in/out) C2/E674: 20 06 E8 JSR $E806 C2/E677: 4C 8E E8 JMP $E88E C2/E67A: C9 11 CMP #$11 C2/E67C: D0 13 BNE $E691 ; branch if not $11 (final KEFKA death) C2/E67E: 20 06 E8 JSR $E806 C2/E681: 22 D1 91 C1 JSL $C191D1 C2/E685: A9 FF LDA #$FF C2/E687: 8D 91 61 STA $6191 C2/E68A: AD 2F 2F LDA $2F2F C2/E68D: 8D 1E 20 STA $201E C2/E690: 6B RTL C2/E691: 48 PHA C2/E692: 20 06 E8 JSR $E806 ; C2/E695: 68 PLA C2/E696: C2 20 REP #$20 C2/E698: 0A ASL C2/E699: AA TAX C2/E69A: AD FB E9 LDA $E9FB C2/E69D: 29 FF 00 AND #$00FF C2/E6A0: F0 06 BEQ $E6A8 ; branch if monsters are entering C2/E6A2: BF EB E4 C2 LDA $C2E4EB,X ; pointers to monster exit animation scripts C2/E6A6: 80 04 BRA $E6AC C2/E6A8: BF 0F E5 C2 LDA $C2E50F,X ; pointers to monster entry animation scripts C2/E6AC: 85 8F STA $8F C2/E6AE: 7B TDC C2/E6AF: E2 20 SEP #$20 mon_mode_chg_main: C2/E6B1: A9 C2 LDA #$C2 ; bank $C2 C2/E6B3: 85 91 STA $91 C2/E6B5: A7 8F LDA [$8F] C2/E6B7: C9 FF CMP #$FF C2/E6B9: F0 10 BEQ $E6CB ; branch if end of data C2/E6BB: C9 FE CMP #$FE C2/E6BD: F0 11 BEQ $E6D0 ; C2/E6BF: 0A ASL C2/E6C0: AA TAX C2/E6C1: FC D7 E6 JSR ($E6D7,X) ; monster animation script command jump table C2/E6C4: A4 8F LDY $8F C2/E6C6: C8 INY C2/E6C7: 84 8F STY $8F C2/E6C9: 80 EA BRA $E6B5 C2/E6CB: A9 FF LDA #$FF C2/E6CD: 8D 91 61 STA $6191 C2/E6D0: AD 2F 2F LDA $2F2F C2/E6D3: 8D 1E 20 STA $201E C2/E6D6: 6B RTL ; monster animation script command jump table mode_jmp_tbl: C2/E6D7: .DW $E7FC, $E801, $E7A7, $E6F4, $E733, $E772 bit_num_chg_loval: C2/E6E3: A6 00 LDX $00 C2/E6E5: 4A LSR C2/E6E6: B0 08 BCS $E6F0 C2/E6E8: E8 INX C2/E6E9: E0 08 00 CPX #$0008 C2/E6EC: D0 F7 BNE $E6E5 C2/E6EE: 7B TDC C2/E6EF: 60 RTS C2/E6F0: 8A TXA C2/E6F1: 29 07 AND #$07 C2/E6F3: 60 RTS ; [ Monster Animation Script Command $03: ] ; +b1: pointer to animation data (+$D07FB2) C2/E6F4: 22 21 FE C1 JSL $C1FE21 C2/E6F8: A0 01 00 LDY #$0001 C2/E6FB: C2 20 REP #$20 C2/E6FD: B7 8F LDA [$8F],Y C2/E6FF: 85 1E STA $1E C2/E701: E6 8F INC $8F C2/E703: E6 8F INC $8F C2/E705: 7B TDC C2/E706: E2 20 SEP #$20 C2/E708: AD FB E9 LDA $E9FB C2/E70B: 20 E3 E6 JSR $E6E3 C2/E70E: 18 CLC C2/E70F: 69 04 ADC #$04 C2/E711: 8D 6F 2C STA $2C6F C2/E714: AD FB E9 LDA $E9FB C2/E717: 8D 71 2C STA $2C71 C2/E71A: 8D 73 2C STA $2C73 C2/E71D: 8D 3E 61 STA $613E C2/E720: 9C 3D 61 STZ $613D C2/E723: 9C 70 2C STZ $2C70 C2/E726: 9C 72 2C STZ $2C72 C2/E729: A9 C0 LDA #$C0 C2/E72B: 8D 6E 2C STA $2C6E C2/E72E: 22 80 B8 C1 JSL $C1B880 ; execute event animation C2/E732: 60 RTS ; [ Monster Animation Script Command $04: ] ; +b1: pointer to animation data (+$D07FB2) C2/E733: 22 21 FE C1 JSL $C1FE21 C2/E737: A0 01 00 LDY #$0001 C2/E73A: C2 20 REP #$20 C2/E73C: B7 8F LDA [$8F],Y C2/E73E: 85 1E STA $1E C2/E740: E6 8F INC $8F C2/E742: E6 8F INC $8F C2/E744: 7B TDC C2/E745: E2 20 SEP #$20 C2/E747: AD FC E9 LDA $E9FC C2/E74A: 20 E3 E6 JSR $E6E3 C2/E74D: 18 CLC C2/E74E: 69 04 ADC #$04 C2/E750: 8D 6F 2C STA $2C6F C2/E753: AD FC E9 LDA $E9FC C2/E756: 8D 71 2C STA $2C71 C2/E759: 8D 73 2C STA $2C73 C2/E75C: 8D 3E 61 STA $613E C2/E75F: 9C 3D 61 STZ $613D C2/E762: 9C 70 2C STZ $2C70 C2/E765: 9C 72 2C STZ $2C72 C2/E768: A9 C0 LDA #$C0 C2/E76A: 8D 6E 2C STA $2C6E C2/E76D: 22 80 B8 C1 JSL $C1B880 ; execute event animation C2/E771: 60 RTS ; [ Monster Animation Script Command $05: ] ; +b1: pointer to animation data (+$D07FB2) C2/E772: 22 21 FE C1 JSL $C1FE21 C2/E776: A0 01 00 LDY #$0001 C2/E779: C2 20 REP #$20 C2/E77B: B7 8F LDA [$8F],Y C2/E77D: 85 1E STA $1E C2/E77F: E6 8F INC $8F C2/E781: E6 8F INC $8F C2/E783: 7B TDC C2/E784: E2 20 SEP #$20 C2/E786: 9C 6F 2C STZ $2C6F C2/E789: A9 0F LDA #$0F C2/E78B: 8D 70 2C STA $2C70 C2/E78E: 8D 72 2C STA $2C72 C2/E791: 8D 3D 61 STA $613D C2/E794: 9C 3E 61 STZ $613E C2/E797: 9C 71 2C STZ $2C71 C2/E79A: 9C 73 2C STZ $2C73 C2/E79D: A9 00 LDA #$00 C2/E79F: 8D 6E 2C STA $2C6E C2/E7A2: 22 80 B8 C1 JSL $C1B880 ; execute event animation C2/E7A6: 60 RTS ; [ Monster Animation Script Command $02: ] ; b1: C2/E7A7: AD FB E9 LDA $E9FB C2/E7AA: 8D 71 2C STA $2C71 C2/E7AD: 8D 73 2C STA $2C73 C2/E7B0: 8D 3E 61 STA $613E C2/E7B3: 9C 3D 61 STZ $613D C2/E7B6: 9C 70 2C STZ $2C70 C2/E7B9: 9C 72 2C STZ $2C72 C2/E7BC: 20 E3 E6 JSR $E6E3 C2/E7BF: 48 PHA C2/E7C0: 18 CLC C2/E7C1: 69 04 ADC #$04 C2/E7C3: 85 10 STA $10 C2/E7C5: 09 80 ORA #$80 C2/E7C7: 8D 6F 2C STA $2C6F C2/E7CA: 8D 3F 61 STA $613F C2/E7CD: A9 C0 LDA #$C0 C2/E7CF: 8D 6E 2C STA $2C6E C2/E7D2: 68 PLA C2/E7D3: C2 20 REP #$20 C2/E7D5: 0A ASL C2/E7D6: 0A ASL C2/E7D7: 0A ASL C2/E7D8: 0A ASL C2/E7D9: 0A ASL C2/E7DA: 0A ASL C2/E7DB: 0A ASL C2/E7DC: AA TAX C2/E7DD: A9 01 01 LDA #$0101 C2/E7E0: 85 22 STA $22 C2/E7E2: E6 8F INC $8F C2/E7E4: A7 8F LDA [$8F] C2/E7E6: 85 24 STA $24 C2/E7E8: E6 8F INC $8F C2/E7EA: 7B TDC C2/E7EB: E2 20 SEP #$20 C2/E7ED: A5 10 LDA $10 C2/E7EF: 09 80 ORA #$80 C2/E7F1: 85 10 STA $10 C2/E7F3: A9 C2 LDA #$C2 C2/E7F5: 85 26 STA $26 C2/E7F7: 22 C0 B1 C1 JSL $C1B1C0 C2/E7FB: 60 RTS ; [ Monster Animation Script Command $00: Clear Animations ] good_init_long: C2/E7FC: 22 43 FF C1 JSL $C1FF43 ; battle event command $0E (clear animations) C2/E800: 60 RTS ; [ Monster Animation Script Command $01: Execute Animations ] go_action_long: C2/E801: 22 51 FF C1 JSL $C1FF51 ; battle event command $0E (execute animations) C2/E805: 60 RTS get_mode_bit: C2/E806: AD 1E 20 LDA $201E C2/E809: 8D FA E9 STA $E9FA C2/E80C: A0 02 00 LDY #$0002 C2/E80F: B1 76 LDA ($76),Y C2/E811: 8D FB E9 STA $E9FB C2/E814: 49 FF EOR #$FF C2/E816: 85 10 STA $10 C2/E818: C8 INY C2/E819: B1 76 LDA ($76),Y C2/E81B: 8D FC E9 STA $E9FC C2/E81E: AD 1E 20 LDA $201E C2/E821: 25 10 AND $10 C2/E823: 0D FC E9 ORA $E9FC C2/E826: 8D FD E9 STA $E9FD C2/E829: AD FB E9 LDA $E9FB C2/E82C: D0 1D BNE $E84B C2/E82E: AD FA E9 LDA $E9FA C2/E831: 49 FF EOR #$FF C2/E833: 85 10 STA $10 C2/E835: AD FC E9 LDA $E9FC C2/E838: 25 10 AND $10 C2/E83A: 8D FC E9 STA $E9FC C2/E83D: 49 FF EOR #$FF C2/E83F: 8D 91 61 STA $6191 C2/E842: AD FD E9 LDA $E9FD C2/E845: 8D 1E 20 STA $201E C2/E848: 8D AB 61 STA $61AB C2/E84B: 60 RTS ; ??? number of frames to wait C2/E84C: .DB $0C, $0B, $0A, $09, $08, $07, $06, $07, $04, $03, $02, $02, $02, $02, $02, $02 C2/E85C: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 ; ??? number of frames to wait C2/E86C: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 C2/E87C: .DB $02, $02, $02, $02, $02, $02, $02, $02, $03, $04, $05, $06, $07, $08, $09, $0A C2/E88C: .DB $0B, $0C mode_chg_00: C2/E88E: 9C B3 EC STZ $ECB3 C2/E891: A9 FF LDA #$FF C2/E893: 8D 91 61 STA $6191 C2/E896: AD FA E9 LDA $E9FA C2/E899: 8D 1E 20 STA $201E C2/E89C: AD B3 EC LDA $ECB3 C2/E89F: AA TAX C2/E8A0: BF 4C E8 C2 LDA $C2E84C,X C2/E8A4: 22 B2 9B C1 JSL $C19BB2 ; wait frames C2/E8A8: AD FC E9 LDA $E9FC C2/E8AB: 8D 1E 20 STA $201E C2/E8AE: AD B3 EC LDA $ECB3 C2/E8B1: AA TAX C2/E8B2: BF 6C E8 C2 LDA $C2E86C,X C2/E8B6: 22 B2 9B C1 JSL $C19BB2 ; wait frames C2/E8BA: EE B3 EC INC $ECB3 C2/E8BD: AD B3 EC LDA $ECB3 C2/E8C0: C9 20 CMP #$20 C2/E8C2: D0 D2 BNE $E896 C2/E8C4: A9 FF LDA #$FF C2/E8C6: 8D 91 61 STA $6191 C2/E8C9: AD 2F 2F LDA $2F2F C2/E8CC: 8D 1E 20 STA $201E C2/E8CF: 6B RTL ; ----------------------------[ Battle Graphics: Animation Init Functions ]----------------------------- ; [ Execute Battle Animation Init Function ] magic_type_long: C2/E8D0: 29 7F AND #$7F C2/E8D2: 0A ASL C2/E8D3: AA TAX C2/E8D4: FC D8 E8 JSR ($E8D8,X) C2/E8D7: 6B RTL ; battle animation init function jump table magic_type_init_jmp: C2/E8D8: .DW $F836, $F820, $F82B, $F7EF, $F436, $F812, $F305, $F820 C2/E8E8: .DW $F2BF, $F49C, $F489, $F809, $F46B, $E9D6, $F7C7, $F741 C2/E8F8: .DW $F809, $F6ED, $F4CA, $F7A1, $F630, $F58D, $F763, $F6D5 C2/E908: .DW $F6A4, $F77D, $F418, $F839, $F63E, $F8CA, $F392, $F35D C2/E918: .DW $F3B5, $F60D, $F5C1, $F5A1, $F2B9, $F6C4, $F83C, $F847 C2/E928: .DW $F65B, $F351, $F3E9, $F795, $F3D9, $F59E, $F5F8, $F5D2 C2/E938: .DW $F5A4, $F3FB, $F299, $F289, $F27B, $F25D, $F241, $F231 C2/E948: .DW $F221, $F211, $F1FA, $F195, $F16B, $F14D, $F129, $F119 C2/E958: .DW $F109, $F0F9, $F0DD, $F0C1, $F08E, $F070, $F020, $F00F C2/E968: .DW $EFFE, $EFE3, $EFD2, $EF7B, $EF67, $EF59, $EF4B, $EF48 C2/E978: .DW $EF1F, $EF1C, $EF0A, $EEF6, $EEDE, $EEBD, $EEAC, $EEA7 C2/E988: .DW $EE99, $EE30, $EE8D, $EE76, $EE0C, $EDFD, $EDF5, $EDAC C2/E998: .DW $EDA3, $ED8E, $ED6E, $ECF6, $ED62, $EC52, $EC4B, $EC43 C2/E9A8: .DW $EC36, $EC29, $EC1C, $EBFE, $EBEE, $EBE1, $EBC2, $EBBC C2/E9B8: .DW $EB97, $EB91, $EB2C, $EB87, $EB4F, $EB35, $EB1D, $EACB C2/E9C8: .DW $EABD, $EAA7, $EA88, $EA71, $EA65, $EA43, $E9D7 ; [ Battle Animation Init $0D: ] C2/E9D6: 60 RTS ; [ Battle Animation Init $7E: UMARO's Throw ] C2/E9D7: EE AC 60 INC $60AC ; pause bg1 animation threads C2/E9D9: 7B TDC C2/E9DB: AA TAX C2/E9DC: A8 TAY C2/E9DD: BD C6 2E LDA $2EC6,X C2/E9E0: C9 0D CMP #$0D C2/E9E2: F0 0C BEQ $E9F0 C2/E9E4: C8 INY C2/E9E5: 8A TXA C2/E9E6: 18 CLC C2/E9E7: 69 20 ADC #$20 C2/E9E9: AA TAX C2/E9EA: E0 80 00 CPX #$0080 C2/E9ED: D0 EE BNE $E9DD C2/E9EF: 60 RTS C2/E9F0: 84 10 STY $10 C2/E9F2: 98 TYA C2/E9F3: 0A ASL C2/E9F4: A8 TAY C2/E9F5: C2 20 REP #$20 C2/E9F7: B9 33 80 LDA $8033,Y C2/E9FA: 38 SEC C2/E9FB: E9 08 00 SBC #$0008 C2/E9FE: 85 14 STA $14 C2/EA00: B9 3B 80 LDA $803B,Y C2/EA03: 38 SEC C2/EA04: E9 08 00 SBC #$0008 C2/EA07: 85 16 STA $16 C2/EA09: 7B TDC C2/EA0A: E2 20 SEP #$20 C2/EA0C: 7B TDC C2/EA0D: AA TAX C2/EA0E: BD 38 6A LDA $6A38,X C2/EA11: 9D 39 6A STA $6A39,X C2/EA14: A5 10 LDA $10 C2/EA16: 9D 38 6A STA $6A38,X C2/EA19: C2 20 REP #$20 C2/EA1B: BD 7E 6F LDA $6F7E,X C2/EA1E: 9D 82 6F STA $6F82,X C2/EA21: BD 80 6F LDA $6F80,X C2/EA24: 9D 84 6F STA $6F84,X C2/EA27: A5 14 LDA $14 C2/EA29: 9D 7E 6F STA $6F7E,X C2/EA2C: A5 16 LDA $16 C2/EA2E: 9D 80 6F STA $6F80,X C2/EA31: 8A TXA C2/EA32: 18 CLC C2/EA33: 69 80 00 ADC #$0080 C2/EA36: AA TAX C2/EA37: 7B TDC C2/EA38: E2 20 SEP #$20 C2/EA3A: E0 00 05 CPX #$0500 C2/EA3D: D0 CF BNE $EA0E C2/EA3F: EE EE E9 INC $E9EE C2/EA42: 60 RTS ; [ Battle Animation Init $7D: Tonic, Potion, Tincture, Ether, Elixir, Megalixir, Antidote, Soft ] C2/EA43: A9 05 LDA #$05 C2/EA45: 85 26 STA $26 C2/EA47: A9 02 LDA #$02 C2/EA49: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EA4C: A9 03 LDA #$03 C2/EA4E: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 3 C2/EA51: 4C EB F9 JMP $F9EB ; [ Wait for Scanline 160 ] wait_window_line: C2/EA54: AF 3F 21 00 LDA $00213F C2/EA58: AF 37 21 00 LDA $002137 ; latch horizontal/vertical counter C2/EA5C: AF 3D 21 00 LDA $00213D ; vertical scanline counter C2/EA60: C9 A0 CMP #$A0 C2/EA62: 90 F0 BCC $EA54 ; branch if less than 160 C2/EA64: 60 RTS ; [ Battle Animation Init $7C: ] C2/EA65: 20 CA F8 JSR $F8CA C2/EA68: AD 6F 89 LDA $896F C2/EA6B: 09 08 ORA #$08 C2/EA6D: 8D 6F 89 STA $896F C2/EA70: 60 RTS ; [ Battle Animation Init $7B: ] C2/EA71: 20 54 EA JSR $EA54 ; wait for scanline 160 C2/EA74: AD 8D 89 LDA $898D C2/EA77: 29 FE AND #$FE C2/EA79: 8D 8D 89 STA $898D C2/EA7C: 20 CA F8 JSR $F8CA C2/EA7F: AD 6F 89 LDA $896F C2/EA82: 09 08 ORA #$08 C2/EA84: 8D 6F 89 STA $896F C2/EA87: 60 RTS ; [ Battle Animation Init $7A: Transforming into Magicite ] C2/EA88: 20 E9 F3 JSR $F3E9 C2/EA8B: A9 04 LDA #$04 C2/EA8D: 85 26 STA $26 C2/EA8F: A9 07 LDA #$07 C2/EA91: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EA94: A9 08 LDA #$08 C2/EA96: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 8 C2/EA99: EE AD 60 INC $60AD ; pause bg3 animation threads C2/EA9C: 60 RTS ; esper graphics (shiva, kirin, bismark, carbunkl, terrato) C2/EA9D: .DW $0182, $0191, $0187, $0193, $0184 ; [ Battle Animation Init $79: Event Animation $08-$0C ] ; for event animations with espers, this loads esper graphics to bg1 rather than the sprite layer ; the default sound effect index is used to determine which esper to load (see table at C2/EA9D) C2/EAA7: AD E7 E9 LDA $E9E7 ; default sound effect C2/EAAA: 0A ASL C2/EAAB: AA TAX C2/EAAC: C2 20 REP #$20 C2/EAAE: BF 9D EA C2 LDA $C2EA9D,X C2/EAB2: AA TAX C2/EAB3: 7B TDC C2/EAB4: E2 20 SEP #$20 C2/EAB6: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/EABA: 4C 70 FA JMP $FA70 ; load esper palette (bg1) ; [ Battle Animation Init $78: Echo Screen, Smoke Bomb ] C2/EABD: A9 03 LDA #$03 C2/EABF: 85 26 STA $26 C2/EAC1: A9 03 LDA #$03 C2/EAC3: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EAC6: A9 04 LDA #$04 C2/EAC8: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 4 ; [ Battle Animation Init $77: Possess ] C2/EACB: 9C 67 7B STZ $7B67 C2/EACE: 22 86 C3 C1 JSL $C1C386 C2/EAD2: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/EAD6: 22 7E B0 C1 JSL $C1B07E ; clear bg3 tile data in vram C2/EADA: 22 9E 9A C1 JSL $C19A9E C2/EADE: 48 PHA C2/EADF: AD 8D 89 LDA $898D C2/EAE2: 48 PHA C2/EAE3: 29 FE AND #$FE C2/EAE5: 8D 8D 89 STA $898D C2/EAE8: AD 6F 89 LDA $896F C2/EAEB: 29 E7 AND #$E7 C2/EAED: 09 50 ORA #$50 C2/EAEF: 8D 6F 89 STA $896F C2/EAF2: 22 55 1E C1 JSL $C11E55 C2/EAF6: 68 PLA C2/EAF7: 8D 8D 89 STA $898D C2/EAFA: 68 PLA C2/EAFB: 29 03 AND #$03 C2/EAFD: 0A ASL C2/EAFE: 0A ASL C2/EAFF: 0A ASL C2/EB00: 0A ASL C2/EB01: 0A ASL C2/EB02: AA TAX C2/EB03: 7B TDC C2/EB04: A8 TAY C2/EB05: BD 80 7F LDA $7F80,X C2/EB08: 99 60 7E STA $7E60,Y C2/EB0B: C8 INY C2/EB0C: E8 INX C2/EB0D: C0 20 00 CPY #$0020 C2/EB10: D0 F3 BNE $EB05 C2/EB12: AD 7D 62 LDA $627D C2/EB15: 29 7F AND #$7F C2/EB17: 8D 7D 62 STA $627D C2/EB1A: 4C 0F FA JMP $FA0F ; [ Battle Animation Init $76: WaveCannon ] C2/EB1D: 20 4F FA JSR $FA4F C2/EB20: A9 3C LDA #$3C C2/EB22: 8F 23 21 00 STA $002123 C2/EB26: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/EB29: 4C 1B FA JMP $FA1B ; [ Battle Animation Init $72: HyperDrive ] C2/EB2C: 20 C1 F5 JSR $F5C1 C2/EB2F: 9C AC 60 STZ $60AC ; unpause bg1 animation threads C2/EB32: 4C 99 F2 JMP $F299 ; [ Battle Animation Init $75: H-Bomb ] C2/EB35: 20 2D F0 JSR $F02D C2/EB38: A2 3F BE LDX #$BE3F C2/EB3B: A0 00 08 LDY #$0800 C2/EB3E: 20 61 EC JSR $EC61 ; load mode 7 animation graphics C2/EB41: A9 03 LDA #$03 C2/EB43: 85 26 STA $26 C2/EB45: A9 02 LDA #$02 C2/EB47: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EB4A: A9 03 LDA #$03 C2/EB4C: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 3 ; [ Battle Animation Init $74: Purifier ] C2/EB4F: 20 2D F0 JSR $F02D C2/EB52: A2 8F 01 LDX #$018F ; crusader (small part) C2/EB55: DA PHX C2/EB56: 22 0A 24 C1 JSL $C1240A C2/EB5A: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/EB5D: 22 C6 9E C1 JSL $C19EC6 C2/EB61: FA PLX C2/EB62: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/EB66: 20 87 FA JSR $FA87 C2/EB69: A2 9C 01 LDX #$019C ; crusader (big part) C2/EB6C: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/EB70: 20 87 FA JSR $FA87 C2/EB73: 20 CA F1 JSR $F1CA C2/EB76: 20 4F FA JSR $FA4F C2/EB79: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/EB7C: A9 CC LDA #$CC C2/EB7E: 8F 24 21 00 STA $002124 C2/EB82: A9 01 LDA #$01 C2/EB84: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 1 ; [ Battle Animation Init $73: Soul Out ] C2/EB87: 20 47 F8 JSR $F847 C2/EB8A: 7B TDC C2/EB8B: EE AC 60 INC $60AC ; pause bg1 animation threads C2/EB8E: 4C 11 F0 JMP $F011 ; [ Battle Animation Init $71: Remedy ] C2/EB91: 20 EB F9 JSR $F9EB C2/EB94: 4C FE EE JMP $EEFE ; [ Battle Animation Init $70: Revivify, Eyedrop ] C2/EB97: 20 C1 F5 JSR $F5C1 C2/EB9A: 20 CA F8 JSR $F8CA C2/EB9D: 9C AC 60 STZ $60AC ; unpause bg1 animation threads C2/EBA0: 22 A1 AA C1 JSL $C1AAA1 C2/EBA4: A5 12 LDA $12 C2/EBA6: 30 13 BMI $EBBB C2/EBA8: 29 03 AND #$03 C2/EBAA: 0A ASL C2/EBAB: 0A ASL C2/EBAC: 0A ASL C2/EBAD: 0A ASL C2/EBAE: 0A ASL C2/EBAF: AA TAX C2/EBB0: BD C1 2E LDA $2EC1,X C2/EBB3: 10 06 BPL $EBBB C2/EBB5: 9C 2E 6F STZ $6F2E C2/EBB8: 9C 3E 6F STZ $6F3E C2/EBBB: 60 RTS ; [ Battle Animation Init $6F: Slow, X-Potion, X-Ether ] C2/EBBC: 20 0F F0 JSR $F00F C2/EBBF: 4C CA F8 JMP $F8CA ; [ Battle Animation Init $6E: TigerBreak ] C2/EBC2: A2 9B 01 LDX #$019B ; tigerbreak C2/EBC5: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/EBC9: 7B TDC C2/EBCA: AA TAX C2/EBCB: BF 00 63 ED LDA $ED6300,X ; character sprite color palette 0 C2/EBCF: 9D 60 7F STA $7F60,X C2/EBD2: 9D 60 7D STA $7D60,X C2/EBD5: E8 INX C2/EBD6: E0 20 00 CPX #$0020 C2/EBD9: D0 F0 BNE $EBCB C2/EBDB: 20 8B F9 JSR $F98B C2/EBDE: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $6D: Fader ] C2/EBE1: A2 94 01 LDX #$0194 ; phantom C2/EBE4: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/EBE8: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/EBEB: 4C EF F7 JMP $F7EF ; [ Battle Animation Init $6C: Tri-Dazer ] C2/EBEE: A2 8A 01 LDX #$018A ; tritoch C2/EBF1: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/EBF5: 20 87 FA JSR $FA87 C2/EBF8: 20 C7 F9 JSR $F9C7 C2/EBFB: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $6B: True Edge ] C2/EBFE: 20 2D F0 JSR $F02D C2/EC01: A2 8C 01 LDX #$018C ; raiden C2/EC04: DA PHX C2/EC05: 22 00 24 C1 JSL $C12400 C2/EC09: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/EC0C: 22 C6 9E C1 JSL $C19EC6 C2/EC10: FA PLX C2/EC11: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/EC15: 20 87 FA JSR $FA87 C2/EC18: EE B0 62 INC $62B0 C2/EC1B: 60 RTS ; [ Battle Animation Init $6A: Metamorph ] C2/EC1C: A2 90 01 LDX #$0190 ; ragnarok C2/EC1F: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/EC23: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/EC26: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $69: Earth Wall ] C2/EC29: A2 96 01 LDX #$0196 ; golem C2/EC2C: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/EC30: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/EC33: 4C 90 F5 JMP $F590 ; [ Battle Animation Init $68: Cat Rain ] C2/EC36: A2 88 01 LDX #$0188 ; stray C2/EC39: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/EC3D: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/EC40: 4C 3E F6 JMP $F63E ; [ Battle Animation Init $67: Demi, Quartr, Reflect???, Charm ] C2/EC43: A9 08 LDA #$08 C2/EC45: 20 11 F0 JSR $F011 C2/EC48: 4C D3 F9 JMP $F9D3 ; [ Battle Animation Init $66: Mirager ] C2/EC4B: 20 CA F8 JSR $F8CA C2/EC4E: EE AC 60 INC $60AC ; pause bg1 animation threads C2/EC51: 60 RTS ; [ Battle Animation Init $65: ForceField ] C2/EC52: 20 4F FA JSR $FA4F C2/EC55: A9 06 LDA #$06 C2/EC57: 8D 1B 96 STA $961B ; circle shape 6 (horizontal oval) C2/EC5A: A9 CC LDA #$CC C2/EC5C: 8F 24 21 00 STA $002124 C2/EC60: 60 RTS ; [ Load Mode 7 Animation Graphics ] ; +X: graphics offset (+$7E0000, after decompressing graphics to $7EAE3F) ; +Y: tile layout offset (+$D8DAF2, after decompressing) magic_mode7_chr_set: C2/EC61: DA PHX C2/EC62: 5A PHY C2/EC63: A9 D8 LDA #$D8 C2/EC65: 85 F5 STA $F5 C2/EC67: A2 00 D0 LDX #$D000 ; $D8D000 (mode 7 battle animation graphics) C2/EC6A: 86 F3 STX $F3 C2/EC6C: A9 7E LDA #$7E C2/EC6E: 85 F8 STA $F8 C2/EC70: A2 3F AE LDX #$AE3F C2/EC73: 86 F6 STX $F6 C2/EC75: 22 6D FF C2 JSL $C2FF6D ; decompress C2/EC79: 7A PLY C2/EC7A: FA PLX C2/EC7B: 5A PHY C2/EC7C: 9C F0 E9 STZ $E9F0 ; C2/EC7F: CE F0 E9 DEC $E9F0 C2/EC82: AD 8D 89 LDA $898D C2/EC85: 29 12 AND #$12 C2/EC87: 8D 8D 89 STA $898D C2/EC8A: A9 3F LDA #$3F C2/EC8C: 85 14 STA $14 C2/EC8E: A9 7E LDA #$7E C2/EC90: 22 27 C0 C2 JSL $C2C027 ; C2/EC94: DA PHX C2/EC95: 5A PHY C2/EC96: A9 D8 LDA #$D8 ; $D8DAF2 C2/EC98: 85 F5 STA $F5 C2/EC9A: A2 F2 DA LDX #$DAF2 C2/EC9D: 86 F3 STX $F3 C2/EC9F: A9 7E LDA #$7E C2/ECA1: 85 F8 STA $F8 C2/ECA3: A2 3F AE LDX #$AE3F C2/ECA6: 86 F6 STX $F6 C2/ECA8: 22 6D FF C2 JSL $C2FF6D ; decompress C2/ECAC: 7A PLY C2/ECAD: FA PLX C2/ECAE: FA PLX C2/ECAF: 8B PHB C2/ECB0: A9 7F LDA #$7F C2/ECB2: 48 PHA C2/ECB3: AB PLB C2/ECB4: A0 00 C4 LDY #$C400 ; bg1 tile data buffer C2/ECB7: 84 10 STY $10 C2/ECB9: A9 20 LDA #$20 ; 32 rows C2/ECBB: 85 12 STA $12 C2/ECBD: 7B TDC C2/ECBE: A8 TAY C2/ECBF: BF 3F AE 7E LDA $7EAE3F,X ; tile index C2/ECC3: 91 10 STA ($10),Y C2/ECC5: E8 INX C2/ECC6: C8 INY C2/ECC7: C8 INY C2/ECC8: C0 40 00 CPY #$0040 C2/ECCB: D0 F2 BNE $ECBF C2/ECCD: C2 20 REP #$20 C2/ECCF: A5 10 LDA $10 ; next row C2/ECD1: 18 CLC C2/ECD2: 69 00 01 ADC #$0100 C2/ECD5: 85 10 STA $10 C2/ECD7: 7B TDC C2/ECD8: E2 20 SEP #$20 C2/ECDA: C6 12 DEC $12 C2/ECDC: D0 DF BNE $ECBD C2/ECDE: AB PLB C2/ECDF: A2 00 20 LDX #$2000 C2/ECE2: 86 10 STX $10 C2/ECE4: A2 00 C4 LDX #$C400 C2/ECE7: A0 00 00 LDY #$0000 C2/ECEA: A9 7F LDA #$7F C2/ECEC: 22 89 19 C1 JSL $C11989 C2/ECF0: EE EE E9 INC $E9EE C2/ECF3: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $63: S. Cross ] C2/ECF6: 20 2D F0 JSR $F02D C2/ECF9: A2 3F B6 LDX #$B63F C2/ECFC: A0 00 00 LDY #$0000 C2/ECFF: 20 61 EC JSR $EC61 ; load mode 7 animation graphics C2/ED02: C2 20 REP #$20 C2/ED04: 7B TDC C2/ED05: AA TAX C2/ED06: 7B TDC C2/ED07: A8 TAY C2/ED08: B9 4E 6F LDA $6F4E,Y C2/ED0B: 9D 2E 6A STA $6A2E,X C2/ED0E: 9D 3E 6A STA $6A3E,X C2/ED11: B9 9E 74 LDA $749E,Y C2/ED14: 9D 7E 6F STA $6F7E,X C2/ED17: 9D 8E 6F STA $6F8E,X C2/ED1A: B9 EE 79 LDA $79EE,Y C2/ED1D: 9D CE 74 STA $74CE,X C2/ED20: 9D DE 74 STA $74DE,X C2/ED23: E8 INX C2/ED24: E8 INX C2/ED25: C8 INY C2/ED26: C8 INY C2/ED27: C0 10 00 CPY #$0010 C2/ED2A: D0 DC BNE $ED08 C2/ED2C: 8A TXA C2/ED2D: 18 CLC C2/ED2E: 69 70 00 ADC #$0070 C2/ED31: AA TAX C2/ED32: E0 00 03 CPX #$0300 C2/ED35: D0 CF BNE $ED06 C2/ED37: 7B TDC C2/ED38: E2 20 SEP #$20 C2/ED3A: 7B TDC C2/ED3B: AA TAX C2/ED3C: 64 10 STZ $10 C2/ED3E: A5 10 LDA $10 C2/ED40: 18 CLC C2/ED41: 69 06 ADC #$06 C2/ED43: 9D 35 6A STA $6A35,X C2/ED46: 18 CLC C2/ED47: 69 06 ADC #$06 C2/ED49: 9D 45 6A STA $6A45,X C2/ED4C: 85 10 STA $10 C2/ED4E: FE 36 6A INC $6A36,X C2/ED51: C2 20 REP #$20 C2/ED53: 8A TXA C2/ED54: 18 CLC C2/ED55: 69 80 00 ADC #$0080 C2/ED58: AA TAX C2/ED59: 7B TDC C2/ED5A: E2 20 SEP #$20 C2/ED5C: E0 00 03 CPX #$0300 C2/ED5F: D0 DD BNE $ED3E C2/ED61: 60 RTS ; [ Battle Animation Init $64: Overcast ] C2/ED62: 20 2D F0 JSR $F02D C2/ED65: A2 3F AE LDX #$AE3F C2/ED68: A0 00 04 LDY #$0400 C2/ED6B: 4C 61 EC JMP $EC61 ; load mode 7 animation graphics ; [ Battle Animation Init $62: Mind Blast, Seize, Zinger ] C2/ED6E: 22 86 C3 C1 JSL $C1C386 C2/ED72: 9C 67 7B STZ $7B67 C2/ED75: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/ED79: 22 F1 C3 C1 JSL $C1C3F1 C2/ED7D: AD 6F 89 LDA $896F C2/ED80: 29 EF AND #$EF C2/ED82: 8D 6F 89 STA $896F C2/ED85: 22 9E 9A C1 JSL $C19A9E C2/ED89: A5 10 LDA $10 C2/ED8B: 4C 22 F3 JMP $F322 ; [ Battle Animation Init $61: Flare Star ] C2/ED8E: 20 67 F9 JSR $F967 C2/ED91: 20 4F FA JSR $FA4F C2/ED94: A9 3C LDA #$3C C2/ED96: 8F 23 21 00 STA $002123 C2/ED9A: A9 CC LDA #$CC C2/ED9C: 8F 24 21 00 STA $002124 C2/EDA0: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $60: Goner ] C2/EDA3: 20 4F FA JSR $FA4F C2/EDA6: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/EDA9: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $5F: Quasar ] C2/EDAC: 7B TDC C2/EDAD: AA TAX C2/EDAE: A9 08 LDA #$08 C2/EDB0: 85 10 STA $10 C2/EDB2: BF 11 C4 7F LDA $7FC411,X ; bg1 animation tile data C2/EDB6: 29 E3 AND #$E3 C2/EDB8: 09 10 ORA #$10 ; set to palette 4 C2/EDBA: 9F 11 C4 7F STA $7FC411,X C2/EDBE: BF A1 C4 7F LDA $7FC4A1,X C2/EDC2: 29 E3 AND #$E3 C2/EDC4: 09 10 ORA #$10 C2/EDC6: 9F A1 C4 7F STA $7FC4A1,X C2/EDCA: E8 INX ; next tile C2/EDCB: E8 INX C2/EDCC: C6 10 DEC $10 C2/EDCE: D0 E2 BNE $EDB2 C2/EDD0: C2 20 REP #$20 C2/EDD2: 8A TXA ; next frame C2/EDD3: 18 CLC C2/EDD4: 69 10 00 ADC #$0010 C2/EDD7: AA TAX C2/EDD8: 7B TDC C2/EDD9: E2 20 SEP #$20 C2/EDDB: E0 A0 00 CPX #$00A0 C2/EDDE: D0 CE BNE $EDAE C2/EDE0: 20 CA F1 JSR $F1CA ; C2/EDE3: A9 08 LDA #$08 C2/EDE5: 8D 55 6F STA $6F55 C2/EDE8: A9 10 LDA #$10 C2/EDEA: 8D 65 6F STA $6F65 C2/EDED: A9 18 LDA #$18 C2/EDEF: 8D 75 6F STA $6F75 C2/EDF2: 4C C7 F9 JMP $F9C7 ; [ Battle Animation Init $5E: Chocobop, L.4 Flare, GP Rain, AutoCrossbow, Throw 2 Dice ] C2/EDF5: 20 1B FA JSR $FA1B ; add bg1, affect sprites and bg2 C2/EDF8: A9 04 LDA #$04 ; frame delay = $04 C2/EDFA: 4C DA F6 JMP $F6DA ; duplicate animation thread (jumps to life 3) ; [ Battle Animation Init $5D: GrandTrain, Train ] C2/EDFD: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/EE00: 20 4F FA JSR $FA4F C2/EE03: A9 CC LDA #$CC C2/EE05: 8F 24 21 00 STA $002124 C2/EE09: 4C C7 F9 JMP $F9C7 ; [ Battle Animation Init $5C: TekMissile, CleanSweep, Launcher, Missile ] C2/EE0C: 20 4F FA JSR $FA4F C2/EE0F: A9 3C LDA #$3C C2/EE11: 8F 23 21 00 STA $002123 C2/EE15: A2 20 01 LDX #$0120 C2/EE18: 20 78 F1 JSR $F178 C2/EE1B: 20 CA F1 JSR $F1CA C2/EE1E: A9 08 LDA #$08 C2/EE20: 8D 55 6F STA $6F55 C2/EE23: A9 10 LDA #$10 C2/EE25: 8D 65 6F STA $6F65 C2/EE28: A9 18 LDA #$18 C2/EE2A: 8D 75 6F STA $6F75 C2/EE2D: 4C 1B FA JMP $FA1B ; [ Battle Animation Init $59: Run ] C2/EE30: 20 98 F0 JSR $F098 C2/EE33: AD 1F 20 LDA $201F C2/EE36: C9 02 CMP #$02 C2/EE38: D0 2E BNE $EE68 C2/EE3A: AD 1E 20 LDA $201E C2/EE3D: 2D AB 61 AND $61AB C2/EE40: 2D AC 2E AND $2EAC C2/EE43: F0 03 BEQ $EE48 C2/EE45: 7B TDC C2/EE46: 80 02 BRA $EE4A C2/EE48: A9 01 LDA #$01 C2/EE4A: 8D 87 6F STA $6F87 C2/EE4D: 8D 07 70 STA $7007 C2/EE50: 8D 87 70 STA $7087 C2/EE53: 8D 07 71 STA $7107 C2/EE56: 6A ROR C2/EE57: 6A ROR C2/EE58: 6A ROR C2/EE59: 29 40 AND #$40 C2/EE5B: 8D BE 61 STA $61BE C2/EE5E: 8D DE 61 STA $61DE C2/EE61: 8D FE 61 STA $61FE C2/EE64: 8D 1E 62 STA $621E C2/EE67: 60 RTS C2/EE68: AD 1F 20 LDA $201F C2/EE6B: C9 03 CMP #$03 C2/EE6D: D0 06 BNE $EE75 C2/EE6F: EE 87 70 INC $7087 C2/EE72: EE 07 71 INC $7107 C2/EE75: 60 RTS ; [ Battle Animation Init $5B: Delta Hit, Evil Toot ] C2/EE76: 20 CA F1 JSR $F1CA C2/EE79: A9 03 LDA #$03 C2/EE7B: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 3 C2/EE7E: 20 4F FA JSR $FA4F C2/EE81: A9 3C LDA #$3C C2/EE83: 8F 23 21 00 STA $002123 C2/EE87: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/EE8A: 4C 1B FA JMP $FA1B ; [ Battle Animation Init $5A: Slimer ] C2/EE8D: 20 C7 F7 JSR $F7C7 C2/EE90: 20 1B FA JSR $FA1B C2/EE93: A9 08 LDA #$08 C2/EE95: 8D 1B 96 STA $961B ; circle shape 8 (slimer blob) C2/EE98: 60 RTS ; [ Battle Animation Init $58: Clear ] C2/EE99: 20 CA F8 JSR $F8CA C2/EE9C: AD 6F 89 LDA $896F C2/EE9F: 09 08 ORA #$08 C2/EEA1: 8D 6F 89 STA $896F C2/EEA4: 4C 33 FA JMP $FA33 ; [ Battle Animation Init $57: Sleep, 7-Flush, Fire Ball, Love Token, Meteo ] C2/EEA7: A9 10 LDA #$10 C2/EEA9: 4C 11 F0 JMP $F011 ; [ Battle Animation Init $56: Bolt 3, Blow Fish, Exploder, Imp Song, Virite, Net ] ; Terra/Tritoch Lightning C2/EEAC: A9 07 LDA #$07 C2/EEAE: 85 26 STA $26 C2/EEB0: A9 02 LDA #$02 C2/EEB2: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EEB5: A9 03 LDA #$03 C2/EEB7: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 3 C2/EEBA: 4C 1B FA JMP $FA1B ; [ Battle Animation Init $55: X-fer ] C2/EEBD: 20 CA F8 JSR $F8CA C2/EEC0: 20 4F FA JSR $FA4F C2/EEC3: A9 CC LDA #$CC C2/EEC5: 8F 24 21 00 STA $002124 C2/EEC9: A9 03 LDA #$03 C2/EECB: 8D 1B 96 STA $961B ; circle shape 3 (beam from top) C2/EECE: AD 6F 89 LDA $896F C2/EED1: 09 08 ORA #$08 C2/EED3: 8D 6F 89 STA $896F C2/EED6: A9 02 LDA #$02 C2/EED8: 20 FE EE JSR $EEFE C2/EEDB: 4C 33 FA JMP $FA33 ; [ Battle Animation Init $54: Confuser, 50 Gs, Revenger ] C2/EEDE: 20 73 F9 JSR $F973 C2/EEE1: 20 4F FA JSR $FA4F C2/EEE4: A9 CC LDA #$CC C2/EEE6: 8F 24 21 00 STA $002124 C2/EEEA: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/EEED: AD 6F 89 LDA $896F C2/EEF0: 29 EF AND #$EF C2/EEF2: 8D 6F 89 STA $896F C2/EEF5: 60 RTS ; [ Battle Animation Init $53: Grav Bomb ] C2/EEF6: 20 D3 F9 JSR $F9D3 C2/EEF9: EE AC 60 INC $60AC ; pause bg1 animation threads C2/EEFC: A9 02 LDA #$02 C2/EEFE: 85 26 STA $26 C2/EF00: A9 05 LDA #$05 C2/EF02: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EF05: A9 06 LDA #$06 C2/EF07: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 6 ; [ Battle Animation Init $52: Bio Blast ] C2/EF0A: 20 1B FA JSR $FA1B C2/EF0D: 20 4F FA JSR $FA4F C2/EF10: A9 3C LDA #$3C C2/EF12: 8F 23 21 00 STA $002123 C2/EF16: A9 01 LDA #$01 C2/EF18: 8D 1B 96 STA $961B ; circle shape 1 (bio blast) C2/EF1B: 60 RTS ; [ Battle Animation Init $51: Bolt Edge, Surge, Diffuser, Flash Rain, Engulf, Slide ] ; Vargas' Blizzard Fist C2/EF1C: 4C C7 F9 JMP $F9C7 ; [ Battle Animation Init $50: Snare ] C2/EF1F: 20 8B F9 JSR $F98B ; add bg1, affect bg2 C2/EF22: 7B TDC C2/EF23: AA TAX C2/EF24: BF 01 C4 7F LDA $7FC401,X ; bg1 tile data buffer C2/EF28: 29 DF AND #$DF ; set tile priority to 0 C2/EF2A: 9F 01 C4 7F STA $7FC401,X C2/EF2E: E8 INX ; affect first 32 tiles (first two rows of frame) C2/EF2F: E8 INX C2/EF30: E0 40 00 CPX #$0040 C2/EF33: D0 EF BNE $EF24 C2/EF35: 22 86 C3 C1 JSL $C1C386 ; make all character/monster sprites priority 3 C2/EF39: 20 4F FA JSR $FA4F ; C2/EF3C: A9 3C LDA #$3C C2/EF3E: 8F 23 21 00 STA $002123 ; enable bg1 in window 2 C2/EF42: A9 06 LDA #$06 C2/EF44: 8D 1B 96 STA $961B ; circle shape 6 (horizontal oval) C2/EF47: 60 RTS ; [ Battle Animation Init $4F: Sneeze, Green Cherry ] C2/EF48: 4C EB F9 JMP $F9EB ; [ Battle Animation Init $4E: Fire Beam, Bolt Beam, Ice Beam, Tek Laser ] C2/EF4B: EE 99 00 INC $0099 ; pause sprite animation threads C2/EF4E: EE AD 60 INC $60AD ; pause bg3 animation threads C2/EF51: 20 C7 F9 JSR $F9C7 C2/EF54: A9 08 LDA #$08 C2/EF56: 4C 5B EF JMP $EF5B ; [ Battle Animation Init $4D: Cave In, Snowball, Lode Stone ] C2/EF59: A9 10 LDA #$10 C2/EF5B: 85 26 STA $26 C2/EF5D: A9 02 LDA #$02 C2/EF5F: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EF62: A9 03 LDA #$03 C2/EF64: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 3 ; [ Battle Animation Init $4C: Land Slide ] C2/EF67: 20 63 F7 JSR $F763 C2/EF6A: A9 06 LDA #$06 C2/EF6C: 85 26 STA $26 C2/EF6E: A9 07 LDA #$07 C2/EF70: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EF73: A9 08 LDA #$08 C2/EF75: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 8 C2/EF78: 4C 27 FA JMP $FA27 ; [ Battle Animation Init $4B: Specter ] C2/EF7B: 20 D2 EF JSR $EFD2 C2/EF7E: 22 9E 9A C1 JSL $C19A9E C2/EF82: 7B TDC C2/EF83: AA TAX C2/EF84: A5 10 LDA $10 C2/EF86: 0A ASL C2/EF87: 0A ASL C2/EF88: 85 12 STA $12 C2/EF8A: BF 00 C4 7F LDA $7FC400,X C2/EF8E: C9 EE CMP #$EE C2/EF90: F0 1F BEQ $EFB1 C2/EF92: 18 CLC C2/EF93: 65 12 ADC $12 C2/EF95: 9F 00 C4 7F STA $7FC400,X C2/EF99: 9F 00 C6 7F STA $7FC600,X C2/EF9D: BF 01 C4 7F LDA $7FC401,X C2/EFA1: 09 02 ORA #$02 C2/EFA3: 9F 01 C4 7F STA $7FC401,X C2/EFA7: BF 01 C6 7F LDA $7FC601,X C2/EFAB: 09 02 ORA #$02 C2/EFAD: 9F 01 C6 7F STA $7FC601,X C2/EFB1: E8 INX C2/EFB2: E8 INX C2/EFB3: E0 40 00 CPX #$0040 C2/EFB6: D0 D2 BNE $EF8A C2/EFB8: A5 10 LDA $10 C2/EFBA: 0A ASL C2/EFBB: 0A ASL C2/EFBC: 0A ASL C2/EFBD: 0A ASL C2/EFBE: 0A ASL C2/EFBF: AA TAX C2/EFC0: 7B TDC C2/EFC1: A8 TAY C2/EFC2: BD 80 7F LDA $7F80,X C2/EFC5: 99 60 7E STA $7E60,Y C2/EFC8: E8 INX C2/EFC9: C8 INY C2/EFCA: C0 20 00 CPY #$0020 C2/EFCD: D0 F3 BNE $EFC2 C2/EFCF: 4C D3 F9 JMP $F9D3 ; [ Battle Animation Init $4A: Elf Fire, Fire Wall ] C2/EFD2: 20 EB F9 JSR $F9EB C2/EFD5: A9 01 LDA #$01 C2/EFD7: 85 26 STA $26 C2/EFD9: A9 07 LDA #$07 C2/EFDB: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/EFDE: A9 08 LDA #$08 C2/EFE0: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 8 ; [ Battle Animation Init $49: Antlion, Lifeshaver ] C2/EFE3: 20 8B F9 JSR $F98B C2/EFE6: 7B TDC C2/EFE7: AA TAX C2/EFE8: BF 01 C4 7F LDA $7FC401,X C2/EFEC: 29 DF AND #$DF C2/EFEE: 9F 01 C4 7F STA $7FC401,X C2/EFF2: E8 INX C2/EFF3: E8 INX C2/EFF4: E0 20 00 CPX #$0020 C2/EFF7: D0 EF BNE $EFE8 C2/EFF9: 22 86 C3 C1 JSL $C1C386 C2/EFFD: 60 RTS ; [ Battle Animation Init $48: Harvester, Scar Beam ] C2/EFFE: A9 10 LDA #$10 C2/F000: 20 6F F6 JSR $F66F C2/F003: 22 86 C3 C1 JSL $C1C386 C2/F007: A2 60 00 LDX #$0060 C2/F00A: 22 A7 C3 C1 JSL $C1C3A7 C2/F00E: 60 RTS ; [ Battle Animation Init $47: Mute, Slow 2, Cure 3, Sun Bath, El Nino, Blaster, Atomic Ray, Riot Blade ] ; water splash C2/F00F: A9 03 LDA #$03 C2/F011: 85 26 STA $26 C2/F013: A9 03 LDA #$03 C2/F015: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F018: A9 04 LDA #$04 C2/F01A: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 4 C2/F01D: 4C EB F9 JMP $F9EB ; [ Battle Animation Init $46: Moon Song ] C2/F020: A2 98 01 LDX #$0198 ; fenrir C2/F023: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/F027: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/F02A: 4C 09 F8 JMP $F809 ; [ ] init_mode7: C2/F02D: 8B PHB C2/F02E: A9 7F LDA #$7F C2/F030: 48 PHA C2/F031: AB PLB C2/F032: 7B TDC C2/F033: AA TAX C2/F034: C2 20 REP #$20 C2/F036: A9 3F 00 LDA #$003F C2/F039: 9D 00 C4 STA $C400,X C2/F03C: 9D 00 CC STA $CC00,X C2/F03F: 9D 00 D4 STA $D400,X C2/F042: 9D 00 DC STA $DC00,X C2/F045: E8 INX C2/F046: E8 INX C2/F047: E0 00 08 CPX #$0800 C2/F04A: D0 ED BNE $F039 C2/F04C: 7B TDC C2/F04D: E2 20 SEP #$20 C2/F04F: AB PLB C2/F050: AD 8D 89 LDA $898D C2/F053: 29 FE AND #$FE C2/F055: 8D 8D 89 STA $898D C2/F058: A2 00 01 LDX #$0100 C2/F05B: 8E C4 E9 STX $E9C4 C2/F05E: 8E CA E9 STX $E9CA C2/F061: 7B TDC C2/F062: AA TAX C2/F063: 8E C6 E9 STX $E9C6 C2/F066: 8E C8 E9 STX $E9C8 C2/F069: 8E CC E9 STX $E9CC C2/F06C: 8E CE E9 STX $E9CE C2/F06F: 60 RTS ; [ Battle Animation Init $45: Atom Edge ] C2/F070: 20 2D F0 JSR $F02D C2/F073: A2 8B 01 LDX #$018B ; odin C2/F076: DA PHX C2/F077: 22 00 24 C1 JSL $C12400 C2/F07B: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/F07E: 22 C6 9E C1 JSL $C19EC6 C2/F082: FA PLX C2/F083: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F087: 20 87 FA JSR $FA87 C2/F08A: EE B0 62 INC $62B0 C2/F08D: 60 RTS ; [ Battle Animation Init $44: Sonic Dive ] C2/F08E: A2 89 01 LDX #$0189 ; palidor C2/F091: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/F095: 20 70 FA JSR $FA70 ; load esper palette (bg1) magic_type59_main: C2/F098: 7B TDC C2/F099: A8 TAY C2/F09A: AA TAX C2/F09B: BD 39 6A LDA $6A39,X C2/F09E: 9D 38 6A STA $6A38,X C2/F0A1: C2 20 REP #$20 C2/F0A3: BD 82 6F LDA $6F82,X C2/F0A6: 9D 7E 6F STA $6F7E,X C2/F0A9: BD 84 6F LDA $6F84,X C2/F0AC: 9D 80 6F STA $6F80,X C2/F0AF: 8A TXA C2/F0B0: 18 CLC C2/F0B1: 69 80 00 ADC #$0080 C2/F0B4: AA TAX C2/F0B5: 7B TDC C2/F0B6: E2 20 SEP #$20 C2/F0B8: C8 INY C2/F0B9: E0 00 02 CPX #$0200 C2/F0BC: D0 DD BNE $F09B C2/F0BE: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $43: Chaos Wing ] C2/F0C1: A2 86 01 LDX #$0186 ; maduin C2/F0C4: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F0C8: 20 87 FA JSR $FA87 C2/F0CB: 20 1B FA JSR $FA1B C2/F0CE: 20 4F FA JSR $FA4F C2/F0D1: A9 CC LDA #$CC C2/F0D3: 8F 24 21 00 STA $002124 C2/F0D7: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F0DA: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $42: Sun Flare ] C2/F0DD: A9 02 LDA #$02 C2/F0DF: 20 6F F6 JSR $F66F C2/F0E2: A2 8D 01 LDX #$018D ; bahamut C2/F0E5: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/F0E9: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/F0EC: 20 4F FA JSR $FA4F C2/F0EF: A9 CC LDA #$CC C2/F0F1: 8F 24 21 00 STA $002124 C2/F0F5: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F0F8: 60 RTS ; [ Battle Animation Init $41: Group Hug ] C2/F0F9: A2 99 01 LDX #$0199 ; starlet C2/F0FC: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F100: 20 87 FA JSR $FA87 C2/F103: 20 1B FA JSR $FA1B C2/F106: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $40: Reviver ] C2/F109: A2 95 01 LDX #$0195 ; sraphim C2/F10C: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/F110: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/F113: 20 3E F6 JSR $F63E C2/F116: 4C 33 FA JMP $FA33 ; [ Battle Animation Init $3F: Rebirth ] C2/F119: A2 9A 01 LDX #$019A ; phoenix C2/F11C: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F120: 20 87 FA JSR $FA87 C2/F123: 20 A3 F9 JSR $F9A3 C2/F126: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $3E: Heal Horn ] C2/F129: A2 97 01 LDX #$0197 ; unicorn C2/F12C: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F130: 20 87 FA JSR $FA87 C2/F133: 20 97 F9 JSR $F997 C2/F136: 20 4F FA JSR $FA4F C2/F139: A9 3C LDA #$3C C2/F13B: 8F 23 21 00 STA $002123 C2/F13F: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F142: AD 6F 89 LDA $896F C2/F145: 29 F7 AND #$F7 C2/F147: 8D 6F 89 STA $896F C2/F14A: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $3D: Life Guard ] C2/F14D: A2 91 01 LDX #$0191 ; kirin C2/F150: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F154: 20 87 FA JSR $FA87 C2/F157: 20 27 FA JSR $FA27 C2/F15A: 20 4F FA JSR $FA4F C2/F15D: A9 3C LDA #$3C C2/F15F: 8F 23 21 00 STA $002123 C2/F163: A9 04 LDA #$04 C2/F165: 8D 1B 96 STA $961B ; circle shape 4 (vertical oval) C2/F168: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $3C: Ruby Power ] C2/F16B: A2 93 01 LDX #$0193 ; carbunkl C2/F16E: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F172: 20 87 FA JSR $FA87 C2/F175: 4C 09 F8 JMP $F809 ; [ ] set_circle_line: C2/F178: 86 10 STX $10 C2/F17A: 7B TDC C2/F17B: AA TAX C2/F17C: C2 20 REP #$20 C2/F17E: 7B TDC C2/F17F: AA TAX C2/F180: A9 08 F7 LDA #$F708 C2/F183: 9D 21 9A STA $9A21,X C2/F186: E8 INX C2/F187: E8 INX C2/F188: E8 INX C2/F189: E8 INX C2/F18A: E4 10 CPX $10 C2/F18C: D0 F5 BNE $F183 C2/F18E: 7B TDC C2/F18F: E2 20 SEP #$20 C2/F191: EE 97 61 INC $6197 C2/F194: 60 RTS ; [ Battle Animation Init $3B: Justice ] magic_type3b: C2/F195: A2 8E 01 LDX #$018E ; alexandr C2/F198: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/F19C: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/F19F: 20 0F FA JSR $FA0F C2/F1A2: 22 86 C3 C1 JSL $C1C386 C2/F1A6: A2 81 00 LDX #$0081 C2/F1A9: 22 A7 C3 C1 JSL $C1C3A7 C2/F1AD: 20 4F FA JSR $FA4F C2/F1B0: A9 3C LDA #$3C C2/F1B2: 8F 23 21 00 STA $002123 C2/F1B6: A2 00 02 LDX #$0200 C2/F1B9: 20 78 F1 JSR $F178 C2/F1BC: 20 CA F1 JSR $F1CA C2/F1BF: AD 6F 89 LDA $896F C2/F1C2: 29 F7 AND #$F7 C2/F1C4: 8D 6F 89 STA $896F C2/F1C7: 4C 09 F8 JMP $F809 magic_type3b_sub: C2/F1CA: 9C 56 6F STZ $6F56 C2/F1CD: A2 20 05 LDX #$0520 C2/F1D0: BD 2E 6A LDA $6A2E,X C2/F1D3: 9D 3E 6A STA $6A3E,X C2/F1D6: 9D 4E 6A STA $6A4E,X C2/F1D9: BD 7E 6F LDA $6F7E,X C2/F1DC: 9D 8E 6F STA $6F8E,X C2/F1DF: 9D 9E 6F STA $6F9E,X C2/F1E2: BD CE 74 LDA $74CE,X C2/F1E5: 9D DE 74 STA $74DE,X C2/F1E8: 9D EE 74 STA $74EE,X C2/F1EB: E8 INX C2/F1EC: E0 30 05 CPX #$0530 C2/F1EF: D0 DF BNE $F1D0 C2/F1F1: EE 66 6F INC $6F66 C2/F1F4: A9 02 LDA #$02 C2/F1F6: 8D 76 6F STA $6F76 C2/F1F9: 60 RTS ; [ Battle Animation Init $3A: Hope Song ] C2/F1FA: 9C AD 62 STZ $62AD C2/F1FD: 9C AE 62 STZ $62AE C2/F200: 20 6D F6 JSR $F66D C2/F203: A2 83 01 LDX #$0183 ; siren C2/F206: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/F20A: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/F20D: 20 03 FA JSR $FA03 C2/F210: 60 RTS ; [ Battle Animation Init $39: Gem Dust ] C2/F211: A2 82 01 LDX #$0182 ; shiva C2/F214: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F218: 20 87 FA JSR $FA87 C2/F21B: 20 C7 F9 JSR $F9C7 C2/F21E: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $38: Bolt Fist ] C2/F221: A2 80 01 LDX #$0180 ; ramuh C2/F224: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F228: 20 87 FA JSR $FA87 ; load esper palette (sprite) C2/F22B: 20 EB F9 JSR $F9EB ; add bg2, affect sprites C2/F22E: 4C 09 F8 JMP $F809 ; two animation threads ; [ Battle Animation Init $37: Wall (ZoneSeek) ] C2/F231: A2 92 01 LDX #$0192 ; zoneseek C2/F234: 22 52 24 C1 JSL $C12452 ; load esper graphics (bg1) C2/F238: 20 70 FA JSR $FA70 ; load esper palette (bg1) C2/F23B: 20 EB F9 JSR $F9EB ; add bg2, affect sprites C2/F23E: 4C 09 F8 JMP $F809 ; two animation threads ; [ Battle Animation Init $36: Sea Song ] C2/F241: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F244: 20 4F FA JSR $FA4F C2/F247: A9 CC LDA #$CC C2/F249: 8F 24 21 00 STA $002124 C2/F24D: A2 87 01 LDX #$0187 ; bismark C2/F250: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F254: 20 87 FA JSR $FA87 C2/F257: 20 1B FA JSR $FA1B C2/F25A: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $35: Earth Aura ] C2/F25D: A9 06 LDA #$06 C2/F25F: 8D 1B 96 STA $961B ; circle shape 6 (horizontal oval) C2/F262: 20 4F FA JSR $FA4F C2/F265: A9 3C LDA #$3C C2/F267: 8F 23 21 00 STA $002123 C2/F26B: A2 84 01 LDX #$0184 ; terrato C2/F26E: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F272: 20 87 FA JSR $FA87 C2/F275: 20 A3 F9 JSR $F9A3 C2/F278: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $34: Demon Eye ] C2/F27B: A2 85 01 LDX #$0185 ; shoat C2/F27E: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F282: 20 87 FA JSR $FA87 C2/F285: EE B0 62 INC $62B0 C2/F288: 60 RTS ; [ Battle Animation Init $33: Inferno ] C2/F289: A2 81 01 LDX #$0181 ; ifrit C2/F28C: 22 80 24 C1 JSL $C12480 ; load esper graphics (sprite) C2/F290: 20 87 FA JSR $FA87 C2/F293: 20 27 FA JSR $FA27 C2/F296: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $32: Ultima ] C2/F299: 20 AF F9 JSR $F9AF C2/F29C: 20 4F FA JSR $FA4F C2/F29F: A9 3C LDA #$3C C2/F2A1: 8F 23 21 00 STA $002123 C2/F2A5: A9 CC LDA #$CC C2/F2A7: 8F 24 21 00 STA $002124 C2/F2AB: A9 07 LDA #$07 C2/F2AD: 8D 1B 96 STA $961B ; circle shape 7 (ultima) C2/F2B0: AD 6F 89 LDA $896F C2/F2B3: 29 F7 AND #$F7 C2/F2B5: 8D 6F 89 STA $896F C2/F2B8: 60 RTS ; [ Battle Animation Init $24: Antdot, Regen, Star Prism ] C2/F2B9: 20 30 F6 JSR $F630 C2/F2BC: 4C CA F8 JMP $F8CA ; [ Battle Animation Init $08: Slash ] C2/F2BF: 20 CA F8 JSR $F8CA C2/F2C2: A2 02 84 LDX #$8402 ; subtract bg3 C2/F2C5: 86 10 STX $10 C2/F2C7: A9 13 LDA #$13 ; affect sprites, bg1, and bg2 C2/F2C9: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F2CD: 20 4F FA JSR $FA4F C2/F2D0: A9 CC LDA #$CC C2/F2D2: 8F 24 21 00 STA $002124 C2/F2D6: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F2D9: 22 7E B0 C1 JSL $C1B07E ; clear bg3 tile data in vram C2/F2DD: AD 6F 89 LDA $896F ; 16x16 bg3 tiles C2/F2E0: 09 48 ORA #$48 C2/F2E2: 8D 6F 89 STA $896F C2/F2E5: 7B TDC C2/F2E6: AA TAX C2/F2E7: 8E F5 4A STX $4AF5 ; clear bg3 scroll hdma data C2/F2EA: 8E F7 4A STX $4AF7 C2/F2ED: EE AD 60 INC $60AD ; pause bg3 animation threads C2/F2F0: 60 RTS ; [ ] caster_pri_up: C2/F2F1: 22 9E 9A C1 JSL $C19A9E C2/F2F5: A5 10 LDA $10 C2/F2F7: 30 0B BMI $F304 C2/F2F9: 0A ASL C2/F2FA: 0A ASL C2/F2FB: 0A ASL C2/F2FC: 0A ASL C2/F2FD: 0A ASL C2/F2FE: A8 TAY C2/F2FF: A9 30 LDA #$30 C2/F301: 99 BD 61 STA $61BD,Y C2/F304: 60 RTS ; [ Battle Animation Init $06: ] C2/F305: 22 86 C3 C1 JSL $C1C386 C2/F309: 9C 67 7B STZ $7B67 C2/F30C: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F310: 22 F1 C3 C1 JSL $C1C3F1 C2/F314: AD 6F 89 LDA $896F C2/F317: 29 EF AND #$EF C2/F319: 8D 6F 89 STA $896F C2/F31C: 22 A1 AA C1 JSL $C1AAA1 C2/F320: A5 12 LDA $12 C2/F322: 29 7F AND #$7F C2/F324: 38 SEC C2/F325: E9 04 SBC #$04 C2/F327: 20 9E FA JSR $FA9E C2/F32A: 48 PHA C2/F32B: 22 5F 1E C1 JSL $C11E5F ; copy monsters to bg1 C2/F32F: 20 F1 F2 JSR $F2F1 C2/F332: 22 22 1F C1 JSL $C11F22 C2/F336: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F33A: 68 PLA C2/F33B: 49 FF EOR #$FF C2/F33D: 8D AB 60 STA $60AB C2/F340: AD 7D 62 LDA $627D C2/F343: 29 7F AND #$7F C2/F345: 8D 7D 62 STA $627D C2/F348: A9 02 LDA #$02 C2/F34A: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F34D: 8D 0F 7B STA $7B0F ; 2 character threads C2/F350: 60 RTS ; [ Battle Animation Init $29: Quake ] C2/F351: 20 5D F3 JSR $F35D C2/F354: A9 06 LDA #$06 C2/F356: 8D 1B 96 STA $961B ; circle shape 6 (horizontal oval) C2/F359: 9C AC 60 STZ $60AC ; unpause bg1 animation threads C2/F35C: 60 RTS ; [ Battle Animation Init $1F: Imp ] magic_type1f: C2/F35D: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F360: 20 EB F9 JSR $F9EB C2/F363: 20 4F FA JSR $FA4F C2/F366: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F369: A9 3C LDA #$3C C2/F36B: 8F 23 21 00 STA $002123 tpri_up: C2/F36F: 22 A1 AA C1 JSL $C1AAA1 C2/F373: A5 12 LDA $12 C2/F375: 10 0D BPL $F384 C2/F377: 29 0F AND #$0F C2/F379: 38 SEC C2/F37A: E9 04 SBC #$04 C2/F37C: 0A ASL C2/F37D: A8 TAY C2/F37E: A9 31 LDA #$31 C2/F380: 99 DC 80 STA $80DC,Y C2/F383: 60 RTS C2/F384: 29 03 AND #$03 C2/F386: 0A ASL C2/F387: 0A ASL C2/F388: 0A ASL C2/F389: 0A ASL C2/F38A: 0A ASL C2/F38B: A8 TAY C2/F38C: A9 30 LDA #$30 C2/F38E: 99 BD 61 STA $61BD,Y C2/F391: 60 RTS ; [ Battle Animation Init $1E: ] C2/F392: A9 08 LDA #$08 C2/F394: 85 26 STA $26 C2/F396: A9 05 LDA #$05 C2/F398: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F39B: A9 06 LDA #$06 C2/F39D: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 6 C2/F3A0: 20 1B FA JSR $FA1B C2/F3A3: 20 4F FA JSR $FA4F C2/F3A6: A9 3C LDA #$3C C2/F3A8: 8F 23 21 00 STA $002123 C2/F3AC: A9 04 LDA #$04 C2/F3AE: 8D 1B 96 STA $961B ; circle shape 4 (vertical oval) C2/F3B1: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F3B4: 60 RTS ; [ Battle Animation Init $20: TekBarrier ] C2/F3B5: A9 08 LDA #$08 C2/F3B7: 85 26 STA $26 C2/F3B9: A9 05 LDA #$05 C2/F3BB: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F3BE: A9 06 LDA #$06 C2/F3C0: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 6 C2/F3C3: 20 03 FA JSR $FA03 C2/F3C6: 20 4F FA JSR $FA4F C2/F3C9: A9 3C LDA #$3C C2/F3CB: 8F 23 21 00 STA $002123 C2/F3CF: A9 CC LDA #$CC C2/F3D1: 8F 24 21 00 STA $002124 C2/F3D5: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F3D8: 60 RTS ; [ Battle Animation Init $2C: ] C2/F3D9: 20 1B FA JSR $FA1B C2/F3DC: A9 CC LDA #$CC C2/F3DE: 8F 24 21 00 STA $002124 C2/F3E2: 20 4F FA JSR $FA4F C2/F3E5: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F3E8: 60 RTS ; [ Battle Animation Init $2A: X-Zone ] magic_type2a: C2/F3E9: 20 DF F9 JSR $F9DF C2/F3EC: 20 4F FA JSR $FA4F C2/F3EF: A9 CC LDA #$CC C2/F3F1: 8F 24 21 00 STA $002124 C2/F3F5: A9 02 LDA #$02 C2/F3F7: 8D 1B 96 STA $961B ; circle shape 2 (big blob) C2/F3FA: 60 RTS ; [ Battle Animation Init $31: Pearl ] C2/F3FB: A9 00 LDA #$00 C2/F3FD: 85 26 STA $26 C2/F3FF: A9 02 LDA #$02 C2/F401: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F404: A9 03 LDA #$03 C2/F406: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 3 C2/F409: AD 6F 89 LDA $896F C2/F40C: 29 F7 AND #$F7 C2/F40E: 8D 6F 89 STA $896F C2/F411: 20 BB F9 JSR $F9BB C2/F414: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F417: 60 RTS ; [ Battle Animation Init $1A: Rasp ] C2/F418: A9 08 LDA #$08 C2/F41A: 85 26 STA $26 C2/F41C: A9 05 LDA #$05 C2/F41E: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F421: A9 06 LDA #$06 C2/F423: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 6 C2/F426: 20 33 FA JSR $FA33 C2/F429: 20 4F FA JSR $FA4F C2/F42C: A9 CC LDA #$CC C2/F42E: 8F 24 21 00 STA $002124 C2/F432: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F435: 60 RTS ; [ Battle Animation Init $04: Debilitator ] C2/F436: 20 33 FA JSR $FA33 C2/F439: 20 4F FA JSR $FA4F C2/F43C: A9 3C LDA #$3C C2/F43E: 8F 23 21 00 STA $002123 C2/F442: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F445: 22 86 C3 C1 JSL $C1C386 C2/F449: 22 9E 9A C1 JSL $C19A9E C2/F44D: A5 10 LDA $10 C2/F44F: 22 ED C3 C1 JSL $C1C3ED C2/F453: A5 10 LDA $10 C2/F455: 29 03 AND #$03 C2/F457: 0A ASL C2/F458: 0A ASL C2/F459: 0A ASL C2/F45A: 0A ASL C2/F45B: 0A ASL C2/F45C: A8 TAY C2/F45D: A9 30 LDA #$30 C2/F45F: 99 BD 61 STA $61BD,Y C2/F462: A9 02 LDA #$02 C2/F464: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F467: 8D 0F 7B STA $7B0F ; 2 character threads C2/F46A: 60 RTS ; [ Battle Animation Init $0C: AuraBolt ] C2/F46B: 20 33 FA JSR $FA33 C2/F46E: 20 4F FA JSR $FA4F C2/F471: A9 CC LDA #$CC C2/F473: 8F 24 21 00 STA $002124 C2/F477: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F47A: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F47D: EE AD 60 INC $60AD ; pause bg3 animation threads C2/F480: A9 02 LDA #$02 C2/F482: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F485: 8D 0F 7B STA $7B0F ; 2 character threads C2/F488: 60 RTS ; [ Battle Animation Init $0A: Stunner, Spin Edge, Takedown ] C2/F489: 20 33 FA JSR $FA33 C2/F48C: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F48F: A9 02 LDA #$02 C2/F491: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F494: 8D 0F 7B STA $7B0F ; 2 character threads C2/F497: 60 RTS ; [ ] magic_type09_long: C2/F498: 20 9C F4 JSR $F49C C2/F49B: 6B RTL ; [ Battle Animation Init $09: Quadra Slam, Empowerer, Quadra Slice, Pummel, Air Blade, Shock, MoogleRush ] magic_type09: C2/F49C: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F49F: A9 08 LDA #$08 C2/F4A1: 8D 0E 7B STA $7B0E ; 8 monster threads C2/F4A4: 8D 0F 7B STA $7B0F ; 8 character threads C2/F4A7: A2 02 01 LDX #$0102 ; add bg1 C2/F4AA: 86 10 STX $10 C2/F4AC: A9 12 LDA #$12 ; affect sprites and bg2 C2/F4AE: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F4B2: 60 RTS ; [ ] get_caster_data_x: C2/F4B3: 22 9E 9A C1 JSL $C19A9E C2/F4B7: A5 10 LDA $10 C2/F4B9: C2 20 REP #$20 C2/F4BB: 0A ASL C2/F4BC: AA TAX C2/F4BD: BF 8B CE C2 LDA $C2CE8B,X ; pointer to animation thread data (+$7E64DE) C2/F4C1: 18 CLC C2/F4C2: 69 10 00 ADC #$0010 C2/F4C5: AA TAX C2/F4C6: 7B TDC C2/F4C7: E2 20 SEP #$20 C2/F4C9: 60 RTS ; [ Battle Animation Init $12: Esper Magic ] C2/F4CA: 20 B3 F4 JSR $F4B3 C2/F4CD: A9 01 LDA #$01 C2/F4CF: 9D 35 6A STA $6A35,X C2/F4D2: 9D 45 6A STA $6A45,X C2/F4D5: 9D 55 6A STA $6A55,X C2/F4D8: A9 00 LDA #$00 C2/F4DA: 9D D8 74 STA $74D8,X C2/F4DD: A9 55 LDA #$55 C2/F4DF: 9D E8 74 STA $74E8,X C2/F4E2: A9 AA LDA #$AA C2/F4E4: 9D F8 74 STA $74F8,X C2/F4E7: A2 02 03 LDX #$0302 ; add bg1 and bg2 C2/F4EA: 86 10 STX $10 C2/F4EC: A9 10 LDA #$10 ; affect sprites C2/F4EE: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F4F2: A9 04 LDA #$04 C2/F4F4: 8D 0F 7B STA $7B0F C2/F4F7: 60 RTS ; [ Duplicate Animation Thread ] ; A = number of copies ; $26 = frame delay target_shape_n_copy: C2/F4F8: 85 22 STA $22 ; $22 = number of copies C2/F4FA: A5 26 LDA $26 C2/F4FC: 85 28 STA $28 ; $28 = frame delay C2/F4FE: AE 3D 61 LDX $613D ; $12 = ??? C2/F501: 86 12 STX $12 C2/F503: 8A TXA C2/F504: 0A ASL C2/F505: 0A ASL C2/F506: 0A ASL C2/F507: 0A ASL C2/F508: 85 12 STA $12 C2/F50A: C2 20 REP #$20 C2/F50C: A5 12 LDA $12 C2/F50E: 4A LSR C2/F50F: 4A LSR C2/F510: 4A LSR C2/F511: 4A LSR C2/F512: 85 12 STA $12 C2/F514: AD 80 60 LDA $6080 ; characters/monsters with this thread C2/F517: 4A LSR C2/F518: 4A LSR C2/F519: 4A LSR C2/F51A: 4A LSR C2/F51B: 8D 80 60 STA $6080 C2/F51E: 64 24 STZ $24 ; +$24 = pointer to animation thread data C2/F520: 7B TDC C2/F521: E2 20 SEP #$20 C2/F523: AD 80 60 LDA $6080 C2/F526: 29 01 AND #$01 C2/F528: D0 45 BNE $F56F ; branch if this character/monster does not have this thread C2/F52A: A5 12 LDA $12 C2/F52C: 29 01 AND #$01 C2/F52E: F0 3F BEQ $F56F C2/F530: A5 22 LDA $22 ; $14 = counter for number of copies C2/F532: 85 14 STA $14 C2/F534: A6 24 LDX $24 ; pointer to animation thread data C2/F536: A9 01 LDA #$01 C2/F538: 85 1A STA $1A ; thread number (start with 1) C2/F53A: 86 1E STX $1E C2/F53C: A9 10 LDA #$10 ; $10 = 16 byte counter C2/F53E: 85 10 STA $10 C2/F540: BD 2E 6A LDA $6A2E,X ; copy thread data C2/F543: 9D 3E 6A STA $6A3E,X C2/F546: BD 7E 6F LDA $6F7E,X C2/F549: 9D 8E 6F STA $6F8E,X C2/F54C: BD CE 74 LDA $74CE,X C2/F54F: 9D DE 74 STA $74DE,X C2/F552: E8 INX ; next byte C2/F553: C6 10 DEC $10 C2/F555: D0 E9 BNE $F540 C2/F557: DA PHX C2/F558: A6 1E LDX $1E ; pointer to animation thread data C2/F55A: A5 1A LDA $1A ; thread number C2/F55C: 9D 46 6A STA $6A46,X C2/F55F: E6 1A INC $1A C2/F561: BD 35 6A LDA $6A35,X ; add frame delay to previous thread's frame counter C2/F564: 18 CLC C2/F565: 65 26 ADC $26 C2/F567: 9D 45 6A STA $6A45,X C2/F56A: FA PLX C2/F56B: C6 14 DEC $14 ; next copy C2/F56D: D0 CB BNE $F53A C2/F56F: 66 13 ROR $13 ; next character/monster C2/F571: 66 12 ROR $12 C2/F573: 6E 81 60 ROR $6081 C2/F576: 6E 80 60 ROR $6080 C2/F579: C2 20 REP #$20 C2/F57B: A5 24 LDA $24 ; increment pointer to animation thread data C2/F57D: 18 CLC C2/F57E: 69 80 00 ADC #$0080 C2/F581: 85 24 STA $24 C2/F583: AA TAX C2/F584: 7B TDC C2/F585: E2 20 SEP #$20 C2/F587: E0 00 05 CPX #$0500 C2/F58A: D0 97 BNE $F523 C2/F58C: 60 RTS ; [ Battle Animation Init $15: Flare, Step Mine, Dread, Fenix Down ] C2/F58D: 20 33 FA JSR $FA33 C2/F590: A9 08 LDA #$08 C2/F592: 85 26 STA $26 C2/F594: A9 05 LDA #$05 C2/F596: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F599: A9 06 LDA #$06 C2/F59B: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 6 ; [ Battle Animation Init $2D: Merton ] C2/F59E: 4C 33 FA JMP $FA33 ; [ Battle Animation Init $23: Haste2, Phantasm ] C2/F5A1: 4C 33 FA JMP $FA33 ; [ Battle Animation Init $30: Break ] C2/F5A4: A9 00 LDA #$00 C2/F5A6: 85 26 STA $26 C2/F5A8: A9 07 LDA #$07 C2/F5AA: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F5AD: A9 08 LDA #$08 C2/F5AF: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 8 C2/F5B2: 20 4F FA JSR $FA4F C2/F5B5: A9 3C LDA #$3C C2/F5B7: 8F 23 21 00 STA $002123 C2/F5BB: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F5BE: 4C 27 FA JMP $FA27 ; [ Battle Animation Init $22: Dispel, Shock Wave ] magic_type22: C2/F5C1: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F5C4: A9 00 LDA #$00 C2/F5C6: 85 26 STA $26 C2/F5C8: A9 05 LDA #$05 C2/F5CA: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F5CD: A9 06 LDA #$06 C2/F5CF: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 6 ; [ Battle Animation Init $2F: Sketch ] magic_type2f: C2/F5D2: A0 00 28 LDY #$2800 C2/F5D5: 22 09 B1 C1 JSL $C1B109 C2/F5D9: AD 8D 89 LDA $898D C2/F5DC: 29 FE AND #$FE C2/F5DE: 8D 8D 89 STA $898D C2/F5E1: A0 03 00 LDY #$0003 C2/F5E4: B1 76 LDA ($76),Y ; **** added in rev 1 **** C2/----: 10 05 BPL $F5E6 C2/----: A2 FF FF LDX #$FFFF C2/----: 80 0B BRA $F5F1 ; ************************ C2/F5E6: 0A ASL C2/F5E7: AA TAX C2/F5E8: C2 20 REP #$20 C2/F5EA: BD 01 20 LDA $2001,X C2/F5ED: AA TAX C2/F5EE: 7B TDC C2/F5EF: E2 20 SEP #$20 C2/F5F1: 22 D1 24 C1 JSL $C124D1 C2/F5F5: 4C 09 F8 JMP $F809 ; [ Battle Animation Init $2E: ] magic_type2e: C2/F5F8: A9 08 LDA #$08 C2/F5FA: 85 26 STA $26 C2/F5FC: A9 05 LDA #$05 C2/F5FE: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F601: A9 06 LDA #$06 C2/F603: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 6 C2/F606: 20 1B FA JSR $FA1B C2/F609: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F60C: 60 RTS ; [ Battle Animation Init $21: ] magic_type21: C2/F60D: A9 08 LDA #$08 C2/F60F: 85 26 STA $26 C2/F611: A9 05 LDA #$05 C2/F613: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F616: A9 06 LDA #$06 C2/F618: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 6 C2/F61B: 20 27 FA JSR $FA27 C2/F61E: 20 4F FA JSR $FA4F C2/F621: A9 3C LDA #$3C C2/F623: 8F 23 21 00 STA $002123 C2/F627: A9 05 LDA #$05 C2/F629: 8D 1B 96 STA $961B ; circle shape 5 (small blob) C2/F62C: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F62F: 60 RTS ; [ Battle Animation Init $14: Life, Life 2, Whump, Fallen One ] magic_type14: C2/F630: A9 06 LDA #$06 C2/F632: 85 26 STA $26 C2/F634: A9 05 LDA #$05 C2/F636: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F639: A9 06 LDA #$06 C2/F63B: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 6 ; [ Battle Animation Init $1C: Fire 3, Muddle, Cure 2, etc. ] ; Tapir, Ice Rabbit, Big Guard, Pearl Wind, L.3 Muddle, Rippler, Confusion, Dried Meat, Health, Shadow Edge magic_type1c: C2/F63E: 64 26 STZ $26 C2/F640: A9 03 LDA #$03 C2/F642: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F645: A9 04 LDA #$04 C2/F647: 20 E6 F6 JSR $F6E6 ; set number of animation threads to 4 C2/F64A: 4C 1B FA JMP $FA1B ; number of duplicate threads per target (meteor, fire dance) chg_type28_copy: C2/F64D: .DB $00, $05, $02, $01, $01, $00, $00 ; total number of threads per target chg_type28_copy2: C2/F654: .DB $01, $06, $03, $02, $02, $01, $01 ; [ Battle Animation Init $28: Meteor, Fire Dance ] magic_type28: C2/F65B: 20 03 FA JSR $FA03 C2/F65E: 20 4F FA JSR $FA4F C2/F661: A9 3C LDA #$3C C2/F663: 8F 23 21 00 STA $002123 ; enable bg1 in window 2, bg2 in window 1 C2/F667: A9 CC LDA #$CC C2/F669: 8F 24 21 00 STA $002124 ; enable bg3 in window 2 magic_type28_main: C2/F66D: A9 08 LDA #$08 magic_type28_main2: C2/F66F: 85 26 STA $26 C2/F671: 7B TDC C2/F672: AA TAX C2/F673: C2 20 REP #$20 C2/F675: AD 3D 61 LDA $613D ; targets C2/F678: A0 10 00 LDY #$0010 C2/F67B: 0A ASL C2/F67C: 90 01 BCC $F67F ; branch if target wasn't hit C2/F67E: E8 INX C2/F67F: 88 DEY ; next target C2/F680: D0 F9 BNE $F67B C2/F682: E0 06 00 CPX #$0006 ; max 6 targets C2/F685: 90 03 BCC $F68A C2/F687: A2 06 00 LDX #$0006 C2/F68A: 7B TDC C2/F68B: E2 20 SEP #$20 C2/F68D: A9 06 LDA #$06 C2/F68F: 8D 1B 96 STA $961B ; circle shape 6 (horizontal oval) C2/F692: BF 4D F6 C2 LDA $C2F64D,X ; number of duplicate threads per target C2/F696: F0 05 BEQ $F69D C2/F698: DA PHX C2/F699: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F69C: FA PLX C2/F69D: BF 54 F6 C2 LDA $C2F654,X ; total number of threads per target C2/F6A1: 4C E6 F6 JMP $F6E6 ; set number of animation threads ; [ Battle Animation Init $18: Drain, Osmose, Raid, Cold Dust ] C2/F6A4: 20 27 FA JSR $FA27 C2/F6A7: 20 4F FA JSR $FA4F C2/F6AA: A9 3C LDA #$3C C2/F6AC: 8F 23 21 00 STA $002123 ; enable bg1 in window 2, bg2 in window 1 C2/F6B0: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F6B3: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F6B6: A9 03 LDA #$03 C2/F6B8: 85 26 STA $26 C2/F6BA: A9 05 LDA #$05 ; make 5 copies C2/F6BC: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F6BF: A9 06 LDA #$06 C2/F6C1: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 6 ; [ Battle Animation Init $25: Fire, Bio, etc. ] ; Sonic Boom, Plasma, Blaze, Shimsham, Sonic Boom, Plasma, Blaze, Shimsham C2/F6C4: 20 3F FA JSR $FA3F ; set color add/sub data (add bg1 and bg2, affect sprites) C2/F6C7: A9 08 LDA #$08 ; 8 frame delay between threads C2/F6C9: 85 26 STA $26 C2/F6CB: A9 02 LDA #$02 ; make 2 copies C2/F6CD: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F6D0: A9 03 LDA #$03 C2/F6D2: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 3 ; [ Battle Animation Init $17: Life 3 ] C2/F6D5: 20 1B FA JSR $FA1B ; add bg1, affect sprites and bg2 C2/F6D8: A9 28 LDA #$28 ; frame delay = $28 C2/F6DA: 85 26 STA $26 C2/F6DC: A9 01 LDA #$01 ; 1 copy C2/F6DE: 20 F8 F4 JSR $F4F8 ; duplicate animation thread C2/F6E1: A9 02 LDA #$02 C2/F6E3: 4C E6 F6 JMP $F6E6 ; set number of animation threads to 2 ; [ Set Number of Animation Threads ] set_target_pat: C2/F6E6: 8D 0F 7B STA $7B0F ; character threads C2/F6E9: 8D 0E 7B STA $7B0E ; monster threads C2/F6EC: 60 RTS ; [ Battle Animation Init $11: White/Effect Magic ] C2/F6ED: 20 B3 F4 JSR $F4B3 C2/F6F0: A9 01 LDA #$01 C2/F6F2: 9D 35 6A STA $6A35,X C2/F6F5: 9D 45 6A STA $6A45,X C2/F6F8: A9 09 LDA #$09 C2/F6FA: 9D 55 6A STA $6A55,X C2/F6FD: 9D 65 6A STA $6A65,X C2/F700: A9 11 LDA #$11 C2/F702: 9D 75 6A STA $6A75,X C2/F705: 9D 85 6A STA $6A85,X C2/F708: A9 01 LDA #$01 C2/F70A: 9D AC 6F STA $6FAC,X C2/F70D: 9D BC 6F STA $6FBC,X C2/F710: A9 02 LDA #$02 C2/F712: 9D CC 6F STA $6FCC,X C2/F715: 9D DC 6F STA $6FDC,X C2/F718: A9 80 LDA #$80 C2/F71A: 9D E8 74 STA $74E8,X C2/F71D: 9D 08 75 STA $7508,X C2/F720: 9D 28 75 STA $7528,X C2/F723: 7B TDC C2/F724: 9D D9 74 STA $74D9,X C2/F727: 9D F9 74 STA $74F9,X C2/F72A: 9D 19 75 STA $7519,X C2/F72D: A9 FF LDA #$FF C2/F72F: 9D E9 74 STA $74E9,X C2/F732: 9D 09 75 STA $7509,X C2/F735: 9D 29 75 STA $7529,X C2/F738: 20 41 F7 JSR $F741 C2/F73B: A9 07 LDA #$07 C2/F73D: 8D 0F 7B STA $7B0F C2/F740: 60 RTS ; [ Battle Animation Init $0F: W Wind, Spiraler, Black Magic, Blitz ] C2/F741: 20 1B FA JSR $FA1B C2/F744: 22 86 C3 C1 JSL $C1C386 C2/F748: 22 9E 9A C1 JSL $C19A9E C2/F74C: A5 10 LDA $10 C2/F74E: 22 ED C3 C1 JSL $C1C3ED C2/F752: A9 02 LDA #$02 C2/F754: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F757: 8D 0F 7B STA $7B0F ; 2 character threads C2/F75A: AD 6F 89 LDA $896F C2/F75D: 29 F7 AND #$F7 C2/F75F: 8D 6F 89 STA $896F C2/F762: 60 RTS ; [ Battle Animation Init $16: Remedy, Wild Bear ] C2/F763: 20 1B FA JSR $FA1B C2/F766: 20 4F FA JSR $FA4F C2/F769: A9 3C LDA #$3C C2/F76B: 8F 23 21 00 STA $002123 C2/F76F: A9 03 LDA #$03 C2/F771: 8D 1B 96 STA $961B ; circle shape 3 (beam from top) C2/F774: A9 02 LDA #$02 C2/F776: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F779: 8D 0F 7B STA $7B0F ; 2 character threads C2/F77C: 60 RTS ; [ Battle Animation Init $19: Scan, Targetting ] C2/F77D: 20 F7 F9 JSR $F9F7 C2/F780: 20 4F FA JSR $FA4F C2/F783: A9 3C LDA #$3C C2/F785: 8F 23 21 00 STA $002123 C2/F789: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F78C: A9 02 LDA #$02 C2/F78E: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F791: 8D 0F 7B STA $7B0F ; 2 character threads C2/F794: 60 RTS ; [ Battle Animation Init $2B: ] C2/F795: 20 D3 F9 JSR $F9D3 C2/F798: A9 02 LDA #$02 C2/F79A: 8D 0E 7B STA $7B0E C2/F79D: 8D 0F 7B STA $7B0F C2/F7A0: 60 RTS ; [ Battle Animation Init $13: Storm, Rage/Lore, SwdTech ] C2/F7A1: 20 1B FA JSR $FA1B C2/F7A4: 20 4F FA JSR $FA4F C2/F7A7: A9 3C LDA #$3C C2/F7A9: 8F 23 21 00 STA $002123 C2/F7AD: 9C 1B 96 STZ $961B ; circle shape 0 (circle) C2/F7B0: 22 86 C3 C1 JSL $C1C386 C2/F7B4: 22 9E 9A C1 JSL $C19A9E C2/F7B8: A5 10 LDA $10 C2/F7BA: 22 ED C3 C1 JSL $C1C3ED C2/F7BE: A9 02 LDA #$02 C2/F7C0: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F7C3: 8D 0F 7B STA $7B0F ; 2 character threads C2/F7C6: 60 RTS ; [ Battle Animation Init $0E: Mantra ] C2/F7C7: 20 27 FA JSR $FA27 C2/F7CA: 20 4F FA JSR $FA4F C2/F7CD: A9 3C LDA #$3C C2/F7CF: 8F 23 21 00 STA $002123 C2/F7D3: 22 86 C3 C1 JSL $C1C386 C2/F7D7: 22 9E 9A C1 JSL $C19A9E C2/F7DB: A5 10 LDA $10 C2/F7DD: 22 ED C3 C1 JSL $C1C3ED C2/F7E1: A9 02 LDA #$02 C2/F7E3: 8D 1B 96 STA $961B ; circle shape 2 (big blob) C2/F7E6: A9 02 LDA #$02 C2/F7E8: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F7EB: 8D 0F 7B STA $7B0F ; 2 character threads C2/F7EE: 60 RTS ; [ Battle Animation Init $03: Sour Mouth, Bio Blaster ] C2/F7EF: 20 33 FA JSR $FA33 C2/F7F2: 20 4F FA JSR $FA4F C2/F7F5: A9 CC LDA #$CC C2/F7F7: 8F 24 21 00 STA $002124 C2/F7FB: A9 01 LDA #$01 C2/F7FD: 8D 1B 96 STA $961B ; circle shape 1 (bio blast) C2/F800: A9 02 LDA #$02 C2/F802: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F805: 8D 0F 7B STA $7B0F ; 2 character threads C2/F808: 60 RTS ; [ Battle Animation Init $0B/10: Poison, Ice 2, etc. ] ; Stop, Float, Vanish, Warp, Quick, Cure, Water Edge, Cleave, Rage, Cokatrice, Wombat ; Pois. Frog, Super Ball, Heal Force, Aero, L.5 Doom, Pep Up, Stone, ChokeSmoke, Schiller ; Megazerk, Entwine, Magnitude8, N. Cross, R.Polarity, Tentacle, Heart Burn, Discard ; Back Blade, X-Meteo, Wild Fang, Lagomorph, most non-spell attacks ; Battle (attack $EE) uses init function $0B C2/F809: A9 02 LDA #$02 C2/F80B: 8D 0E 7B STA $7B0E ; 2 monster threads C2/F80E: 8D 0F 7B STA $7B0F ; 2 character threads C2/F811: 60 RTS ; [ Battle Animation Init $05: Air Anchor ] C2/F812: EE AA 60 INC $60AA ; C2/F815: A9 06 LDA #$06 C2/F817: 8D 0E 7B STA $7B0E ; 6 monster threads C2/F81A: A9 02 LDA #$02 C2/F81C: 8D 0F 7B STA $7B0F ; 2 character threads C2/F81F: 60 RTS ; [ Battle Animation Init $01/$07: Retort, NoiseBlaster, Flash, Chain Saw, Drill ] C2/F820: EE AC 60 INC $60AC ; pause bg1 animation threads C2/F823: A9 02 LDA #$02 C2/F825: 8D 0F 7B STA $7B0F ; 2 character threads C2/F828: 4C 3F FA JMP $FA3F ; add bg1 and bg2, affect sprites ; [ Battle Animation Init $02: ] C2/F82B: A9 06 LDA #$06 C2/F82D: 8D 0E 7B STA $7B0E ; 6 monster threads C2/F830: 8D 0F 7B STA $7B0F ; 6 character threads C2/F833: 4C 3F FA JMP $FA3F ; add bg1 and bg2, affect sprites ; [ Battle Animation Init $00: Bolt, Suplex, Bomblet ] C2/F836: 4C 3F FA JMP $FA3F ; add bg1 & bg2, affect sprites ; [ Battle Animation Init $1B: Ice, Fire 2, Bolt 2, Ice 3, etc. ] ; Safe, Rflect, Shell, Fire Skean, Wind Slash, Sand Storm, Flash, Aqua Rake, Revenge, L? Pearl ; Lullaby, Acid Rain, Cyclonic, Mega Volt, Giga Volt, Blizzard, Absolute 0, Gale Cut, Baba Breath ; ShadowFang, RoyalShock, Morph C2/F839: 4C 1B FA JMP $FA1B ; add bg1, affect sprites & bg2 ; [ Battle Animation Init $26: Condemned ] C2/F83C: AD 6F 89 LDA $896F ; disable bg3 priority C2/F83F: 29 F7 AND #$F7 C2/F841: 8D 6F 89 STA $896F C2/F844: 4C 0F FA JMP $FA0F ; add bg1, affect bg3 ; [ Battle Animation Init $27: Doom, Roulette, SabreSoul ] magic_type27: C2/F847: C2 20 REP #$20 C2/F849: AD 80 60 LDA $6080 ; targets hit C2/F84C: 49 FF FF EOR #$FFFF C2/F84F: 85 22 STA $22 C2/F851: AD 7E 60 LDA $607E ; possible targets C2/F854: 25 22 AND $22 C2/F856: 48 PHA C2/F857: 7B TDC C2/F858: E2 20 SEP #$20 C2/F85A: FA PLX C2/F85B: D0 01 BNE $F85E ; C2/F85D: 60 RTS C2/F85E: 9C 67 7B STZ $7B67 ; C2/F861: 22 86 C3 C1 JSL $C1C386 C2/F865: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F869: 22 F1 C3 C1 JSL $C1C3F1 C2/F86D: 22 7E B0 C1 JSL $C1B07E ; clear bg3 tile data in vram C2/F871: 22 A1 AA C1 JSL $C1AAA1 C2/F875: A5 12 LDA $12 C2/F877: 10 16 BPL $F88F ; branch if a character C2/F879: 29 7F AND #$7F C2/F87B: 38 SEC C2/F87C: E9 04 SBC #$04 C2/F87E: 20 9E FA JSR $FA9E C2/F881: 22 5F 1E C1 JSL $C11E5F ; copy monsters to bg1 C2/F885: 22 22 1F C1 JSL $C11F22 C2/F889: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F88D: 80 1F BRA $F8AE C2/F88F: 29 03 AND #$03 C2/F891: 0A ASL C2/F892: 0A ASL C2/F893: 0A ASL C2/F894: 0A ASL C2/F895: 0A ASL C2/F896: AA TAX C2/F897: 7B TDC C2/F898: A8 TAY C2/F899: BD 80 7F LDA $7F80,X C2/F89C: 99 60 7E STA $7E60,Y C2/F89F: C8 INY C2/F8A0: E8 INX C2/F8A1: C0 20 00 CPY #$0020 C2/F8A4: D0 F3 BNE $F899 C2/F8A6: AD 6F 89 LDA $896F ; change bg1 tile size to 16x16 C2/F8A9: 09 10 ORA #$10 C2/F8AB: 8D 6F 89 STA $896F C2/F8AE: AD 7D 62 LDA $627D ; use bg1 for graphics ??? C2/F8B1: 29 7F AND #$7F C2/F8B3: 8D 7D 62 STA $627D C2/F8B6: 20 6F F3 JSR $F36F ; C2/F8B9: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F8BD: AD 6F 89 LDA $896F ; disable bg3 priority, change bg3 tile size to 16x16 C2/F8C0: 29 F7 AND #$F7 C2/F8C2: 09 40 ORA #$40 C2/F8C4: 8D 6F 89 STA $896F C2/F8C7: 4C 1B FA JMP $FA1B ; add bg1, affect sprites and bg2 ; [ Battle Animation Init $1D: Haste, Bserk, Dispatch, Bum Rush, Dischord, WallChange, Escape ] magic_type1d: C2/F8CA: 9C 67 7B STZ $7B67 C2/F8CD: 22 86 C3 C1 JSL $C1C386 C2/F8D1: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F8D5: 22 7E B0 C1 JSL $C1B07E ; clear bg3 tile data in vram C2/F8D9: 22 A1 AA C1 JSL $C1AAA1 C2/F8DD: A5 12 LDA $12 C2/F8DF: 10 44 BPL $F925 C2/F8E1: 29 7F AND #$7F C2/F8E3: 38 SEC C2/F8E4: E9 04 SBC #$04 C2/F8E6: 20 9E FA JSR $FA9E C2/F8E9: 48 PHA C2/F8EA: 85 14 STA $14 C2/F8EC: 20 54 EA JSR $EA54 ; wait for scanline 160 C2/F8EF: AD 8D 89 LDA $898D C2/F8F2: 48 PHA C2/F8F3: 29 FE AND #$FE C2/F8F5: 8D 8D 89 STA $898D C2/F8F8: A5 14 LDA $14 C2/F8FA: 22 5F 1E C1 JSL $C11E5F ; copy monsters to bg1 C2/F8FE: 22 22 1F C1 JSL $C11F22 C2/F902: 22 F1 C3 C1 JSL $C1C3F1 C2/F906: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F90A: 20 54 EA JSR $EA54 ; wait for scanline 160 C2/F90D: AD 6F 89 LDA $896F C2/F910: 29 E7 AND #$E7 C2/F912: 8D 6F 89 STA $896F C2/F915: 68 PLA C2/F916: 8D 8D 89 STA $898D C2/F919: 68 PLA C2/F91A: 49 FF EOR #$FF C2/F91C: 8D AB 60 STA $60AB C2/F91F: 22 26 02 C1 JSL $C10226 ; wait for vblank C2/F923: 80 37 BRA $F95C C2/F925: 48 PHA C2/F926: 20 54 EA JSR $EA54 ; wait for scanline 160 C2/F929: AD 8D 89 LDA $898D C2/F92C: 48 PHA C2/F92D: 29 FE AND #$FE C2/F92F: 8D 8D 89 STA $898D C2/F932: AD 6F 89 LDA $896F C2/F935: 29 E7 AND #$E7 C2/F937: 09 50 ORA #$50 C2/F939: 8D 6F 89 STA $896F C2/F93C: 22 55 1E C1 JSL $C11E55 C2/F940: 68 PLA C2/F941: 8D 8D 89 STA $898D C2/F944: 68 PLA C2/F945: 29 03 AND #$03 C2/F947: 0A ASL C2/F948: 0A ASL C2/F949: 0A ASL C2/F94A: 0A ASL C2/F94B: 0A ASL C2/F94C: AA TAX C2/F94D: 7B TDC C2/F94E: A8 TAY C2/F94F: BD 80 7F LDA $7F80,X C2/F952: 99 60 7E STA $7E60,Y C2/F955: C8 INY C2/F956: E8 INX C2/F957: C0 20 00 CPY #$0020 C2/F95A: D0 F3 BNE $F94F C2/F95C: AD 7D 62 LDA $627D C2/F95F: 29 7F AND #$7F C2/F961: 8D 7D 62 STA $627D C2/F964: 4C 0F FA JMP $FA0F ; add bg1, affect bg3 ; [ Add BG3, Affect BG1 ] hdma_set18: C2/F967: A2 02 04 LDX #$0402 ; add bg3 C2/F96A: 86 10 STX $10 C2/F96C: A9 01 LDA #$01 ; affect bg1 C2/F96E: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F972: 60 RTS ; [ Add BG1 and BG3, Affect Sprites and BG2 ] hdma_set17: C2/F973: A2 02 45 LDX #$4502 ; half add bg1 and bg3 C2/F976: 86 10 STX $10 C2/F978: A9 12 LDA #$12 ; affect sprites and bg2 C2/F97A: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F97E: 60 RTS ; [ Add BG3, Affect BG1 and BG2 ] ; unused hdma_set16: C2/F97F: A2 02 04 LDX #$0402 ; add bg3 C2/F982: 86 10 STX $10 C2/F984: A9 03 LDA #$03 ; affect bg1 and bg2 C2/F986: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F98A: 60 RTS ; [ Add BG1, Affect BG2 ] hdma_set15: C2/F98B: A2 02 01 LDX #$0102 ; add bg1 C2/F98E: 86 10 STX $10 C2/F990: A9 02 LDA #$02 ; affect bg2 C2/F992: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F996: 60 RTS ; [ Add BG1, Affect Sprite and BG3 ] hdma_set14: C2/F997: A2 02 01 LDX #$0102 ; add bg1 C2/F99A: 86 10 STX $10 C2/F99C: A9 14 LDA #$14 ; affect sprites and bg3 C2/F99E: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9A2: 60 RTS ; [ Add BG3, Affect Sprites and BG2 ] hdma_set13: C2/F9A3: A2 02 04 LDX #$0402 ; add bg3 C2/F9A6: 86 10 STX $10 C2/F9A8: A9 12 LDA #$12 ; affect sprites and bg2 C2/F9AA: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9AE: 60 RTS ; [ Half Add BG1, Affect Sprites and BG3 ] hdma_set12: C2/F9AF: A2 02 41 LDX #$4102 ; half add bg1 C2/F9B2: 86 10 STX $10 C2/F9B4: A9 14 LDA #$14 ; affect sprites and bg3 C2/F9B6: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9BA: 60 RTS ; [ Add BG2, Affect BG3 ] hdma_set11: C2/F9BB: A2 02 02 LDX #$0202 ; add bg2 C2/F9BE: 86 10 STX $10 C2/F9C0: A9 04 LDA #$04 ; affect bg3 C2/F9C2: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9C6: 60 RTS ; [ Add BG1 and BG3, Affect Sprites and BG2 ] hdma_set10: C2/F9C7: A2 02 05 LDX #$0502 ; add bg1 and bg3 C2/F9CA: 86 10 STX $10 C2/F9CC: A9 12 LDA #$12 ; affect sprites and bg2 C2/F9CE: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9D2: 60 RTS ; [ Half Add BG1, Affect Sprites and BG2 ] hdma_set09: C2/F9D3: A2 02 41 LDX #$4102 ; half add bg1 C2/F9D6: 86 10 STX $10 C2/F9D8: A9 12 LDA #$12 ; affect sprites and bg2 C2/F9DA: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9DE: 60 RTS ; [ Add BG3, Affect Sprites ] hdma_set08: C2/F9DF: A2 02 04 LDX #$0402 ; add bg3 C2/F9E2: 86 10 STX $10 C2/F9E4: A9 10 LDA #$10 ; affect sprites C2/F9E6: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9EA: 60 RTS ; [ Add BG2, Affect Sprites ] hdma_set07: C2/F9EB: A2 02 02 LDX #$0202 ; add bg2 C2/F9EE: 86 10 STX $10 C2/F9F0: A9 10 LDA #$10 ; affect sprites C2/F9F2: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/F9F6: 60 RTS ; [ Half Add BG1, Affect Sprites ] hdma_set06: C2/F9F7: A2 02 41 LDX #$4102 ; half add bg1 C2/F9FA: 86 10 STX $10 C2/F9FC: A9 10 LDA #$10 ; affect sprites C2/F9FE: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/FA02: 60 RTS ; [ Add BG3, Affect Sprites and BG1 ] hdma_set05: C2/FA03: A2 02 04 LDX #$0402 ; add bg3 C2/FA06: 86 10 STX $10 C2/FA08: A9 11 LDA #$11 ; affect sprites and bg1 C2/FA0A: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/FA0E: 60 RTS ; [ Add BG1, Affect BG3 ] hdma_set04: C2/FA0F: A2 02 01 LDX #$0102 ; add bg1 C2/FA12: 86 10 STX $10 C2/FA14: A9 04 LDA #$04 ; affect bg3 C2/FA16: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/FA1A: 60 RTS ; [ Add BG1, Affect Sprites and BG2 ] hdma_set03: C2/FA1B: A2 02 01 LDX #$0102 ; add bg1 C2/FA1E: 86 10 STX $10 C2/FA20: A9 12 LDA #$12 ; affect sprites and bg2 C2/FA22: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/FA26: 60 RTS ; [ Add BG1, Affect Sprites ] hdma_set02: C2/FA27: A2 02 01 LDX #$0102 ; add bg1 C2/FA2A: 86 10 STX $10 C2/FA2C: A9 10 LDA #$10 ; affect sprites C2/FA2E: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/FA32: 60 RTS ; [ Add BG3, Affect Sprites, BG1, and BG3 ] hdma_set01: C2/FA33: A2 02 04 LDX #$0402 ; add bg3 C2/FA36: 86 10 STX $10 C2/FA38: A9 13 LDA #$13 ; affect sprites, bg1, and bg3 C2/FA3A: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/FA3E: 60 RTS ; [ Add BG1 and BG2, Affect Sprites ] hdma_set00: C2/FA3F: A2 02 03 LDX #$0302 ; add bg1 and bg2 C2/FA42: 86 10 STX $10 C2/FA44: A9 10 LDA #$10 ; affect sprites C2/FA46: 22 00 B0 C1 JSL $C1B000 ; set color add/sub data C2/FA4A: 60 RTS ; [ ] circle_init_long: C2/FA4B: 20 4F FA JSR $FA4F C2/FA4E: 6B RTL ; [ ] circle_init: C2/FA4F: 7B TDC C2/FA50: AA TAX C2/FA51: A8 TAY C2/FA52: A9 FF LDA #$FF C2/FA54: 9D 21 9A STA $9A21,X ; window position hdma buffer (left) C2/FA57: 99 1F 96 STA $961F,Y C2/FA5A: 1A INC C2/FA5B: 9D 22 9A STA $9A22,X ; window position hdma buffer (right) C2/FA5E: 99 20 96 STA $9620,Y C2/FA61: C8 INY C2/FA62: C8 INY C2/FA63: E8 INX C2/FA64: E8 INX C2/FA65: E8 INX C2/FA66: E8 INX C2/FA67: E0 5C 02 CPX #$025C C2/FA6A: D0 E6 BNE $FA52 C2/FA6C: EE 97 61 INC $6197 ; C2/FA6F: 60 RTS ; [ Load Esper Palette (bg1) ] summon_color_set_bg1: C2/FA70: AE 69 61 LDX $6169 C2/FA73: 7B TDC C2/FA74: A8 TAY C2/FA75: BF 20 78 D2 LDA $D27820,X C2/FA79: 99 60 7E STA $7E60,Y C2/FA7C: 99 60 7C STA $7C60,Y C2/FA7F: E8 INX C2/FA80: C8 INY C2/FA81: C0 20 00 CPY #$0020 C2/FA84: D0 EF BNE $FA75 C2/FA86: 60 RTS ; [ Load Esper Palette (sprite) ] summon_color_set: C2/FA87: AE 69 61 LDX $6169 C2/FA8A: 7B TDC C2/FA8B: A8 TAY C2/FA8C: BF 20 78 D2 LDA $D27820,X C2/FA90: 99 60 7F STA $7F60,Y C2/FA93: 99 60 7D STA $7D60,Y C2/FA96: E8 INX C2/FA97: C8 INY C2/FA98: C0 20 00 CPY #$0020 C2/FA9B: D0 EF BNE $FA8C C2/FA9D: 60 RTS ; [ ] num_bit_chg_local: C2/FA9E: AA TAX C2/FA9F: BF 01 1A C1 LDA $C11A01,X C2/FAA3: 60 RTS ; ---------------------------------[ Battle Graphics: Sin/Cos Tables ]---------------------------------- ; sin/cos table (16-bit, signed) sin_data_w: C2/FC6D: .DW $0000, $0324, $0648, $096A, $0C8C, $0FAB, $12C8, $15E2 C2/FC7D: .DW $18F9, $1C0B, $1F1A, $2223, $2528, $2826, $2B1F, $2E11 C2/FC8D: .DW $30FB, $33DF, $36BA, $398C, $3C56, $3F17, $41CE, $447A C2/FC9D: .DW $471C, $49B3, $4C3F, $4EBF, $5133, $539B, $55F5, $5842 C2/FCAD: .DW $5A82, $5CB3, $5ED7, $60EB, $62F1, $64E8, $66CF, $68A6 C2/FCBD: .DW $6A6D, $6C23, $6DC9, $6F5E, $70E2, $7254, $73B5, $7504 C2/FCCD: .DW $7641, $776B, $7884, $7989, $7A7C, $7B5C, $7C29, $7CE3 C2/FCDD: .DW $7D89, $7E1D, $7E9C, $7F09, $7F61, $7FA6, $7FD8, $7FF5 C2/FCED: .DW $7FFF, $7FF5, $7FD8, $7FA6, $7F61, $7F09, $7E9C, $7E1D C2/FCFD: .DW $7D89, $7CE3, $7C29, $7B5C, $7A7C, $7989, $7884, $776B C2/FD0D: .DW $7641, $7504, $73B5, $7254, $70E2, $6F5E, $6DC9, $6C23 C2/FD1D: .DW $6A6D, $68A6, $66CF, $64E8, $62F1, $60EB, $5ED7, $5CB3 C2/FD2D: .DW $5A82, $5842, $55F5, $539A, $5133, $4EBF, $4C3F, $49B3 C2/FD3D: .DW $471C, $447A, $41CE, $3F17, $3C56, $398C, $36BA, $33DE C2/FD4D: .DW $30FB, $2E11, $2B1F, $2826, $2528, $2223, $1F1A, $1C0B C2/FD5D: .DW $18F8, $15E2, $12C8, $0FAB, $0C8C, $096A, $0648, $0324 C2/FD6D: .DW $0000, $FCDC, $F9B8, $F695, $F374, $F055, $ED38, $EA1E C2/FD7D: .DW $E707, $E3F5, $E0E6, $DDDC, $DAD8, $D7D9, $D4E1, $D1EF C2/FD8D: .DW $CF04, $CC21, $C946, $C673, $C3AA, $C0E9, $BE32, $BB86 C2/FD9D: .DW $B8E3, $B64C, $B3C1, $B141, $AECD, $AC65, $AA0B, $A7BE C2/FDAD: .DW $A57E, $A34C, $A129, $9F14, $9D0F, $9B18, $9931, $975A C2/FDBD: .DW $9593, $93DD, $9237, $90A2, $8F1E, $8DAC, $8C4B, $8AFC C2/FDCD: .DW $89BF, $8895, $877C, $8677, $8584, $84A4, $83D7, $831D C2/FDDD: .DW $8277, $81E3, $8164, $80F7, $809F, $805A, $8028, $800B C2/FDED: .DW $8001, $800B, $8028, $805A, $809F, $80F7, $8164, $81E3 C2/FDFD: .DW $8277, $831D, $83D7, $84A4, $8584, $8677, $877D, $8895 C2/FE0D: .DW $89BF, $8AFC, $8C4B, $8DAC, $8F1E, $90A2, $9237, $93DD C2/FE1D: .DW $9593, $975A, $9932, $9B18, $9D0F, $9F15, $A12A, $A34D C2/FE2D: .DW $A57E, $A7BE, $AA0B, $AC66, $AECD, $B141, $B3C1, $B64D C2/FE3D: .DW $B8E4, $BB86, $BE33, $C0EA, $C3AA, $C674, $C947, $CC22 C2/FE4D: .DW $CF05, $D1F0, $D4E2, $D7DA, $DAD9, $DDDD, $E0E7, $E3F5 C2/FE5D: .DW $E708, $EA1F, $ED39, $F055, $F375, $F696, $F9B9, $FCDC ; sin/cos table (8-bit, signed) sin_data: C2/FE6D: .DB $00, $03, $06, $09, $0C, $10, $13, $16, $19, $1C, $1F, $22, $25, $28, $2B, $2E C2/FE7D: .DB $31, $33, $36, $39, $3C, $3F, $41, $44, $47, $49, $4C, $4E, $51, $53, $55, $58 C2/FE8D: .DB $5A, $5C, $5E, $60, $62, $64, $66, $68, $6A, $6B, $6D, $6F, $70, $71, $73, $74 C2/FE9D: .DB $75, $76, $78, $79, $7A, $7A, $7B, $7C, $7D, $7D, $7E, $7E, $7E, $7F, $7F, $7F C2/FEAD: .DB $7F, $7F, $7F, $7F, $7E, $7E, $7E, $7D, $7D, $7C, $7B, $7A, $7A, $79, $78, $76 C2/FEBD: .DB $75, $74, $73, $71, $70, $6F, $6D, $6B, $6A, $68, $66, $64, $62, $60, $5E, $5C C2/FECD: .DB $5A, $58, $55, $53, $51, $4E, $4C, $49, $47, $44, $41, $3F, $3C, $39, $36, $33 C2/FEDD: .DB $31, $2E, $2B, $28, $25, $22, $1F, $1C, $19, $16, $13, $10, $0C, $09, $06, $03 C2/FEED: .DB $00, $FD, $FA, $F7, $F4, $F0, $ED, $EA, $E7, $E4, $E1, $DE, $DB, $D8, $D5, $D2 C2/FEFD: .DB $CF, $CD, $CA, $C7, $C4, $C1, $BF, $BC, $B9, $B7, $B4, $B2, $AF, $AD, $AB, $A8 C2/FF0D: .DB $A6, $A4, $A2, $A0, $9E, $9C, $9A, $98, $96, $95, $93, $91, $90, $8F, $8D, $8C C2/FF1D: .DB $8B, $8A, $88, $87, $86, $86, $85, $84, $83, $83, $82, $82, $82, $81, $81, $81 C2/FF2D: .DB $81, $81, $81, $81, $82, $82, $82, $83, $83, $84, $85, $86, $86, $87, $88, $8A C2/FF3D: .DB $8B, $8C, $8D, $8F, $90, $91, $93, $95, $96, $98, $9A, $9C, $9E, $A0, $A2, $A4 C2/FF4D: .DB $A6, $A8, $AB, $AD, $AF, $B2, $B4, $B7, $B9, $BC, $BF, $C1, $C4, $C7, $CA, $CD C2/FF5D: .DB $CF, $D2, $D5, $D8, $DB, $DE, $E1, $E4, $E7, $EA, $ED, $F0, $F4, $F7, $FA, $FD ; ----------------------------[ Battle Graphics: Decompression Subroutine ]----------------------------- ; [ Decompress ] extract: C2/FF6D: 8B PHB C2/FF6E: 0B PHD C2/FF6F: A2 00 00 LDX #$0000 C2/FF72: DA PHX C2/FF73: 2B PLD C2/FF74: C2 20 REP #$20 C2/FF76: A7 F3 LDA [$F3] C2/FF78: 85 FC STA $FC C2/FF7A: A5 F6 LDA $F6 C2/FF7C: 8F 81 21 00 STA $002181 C2/FF80: E2 20 SEP #$20 C2/FF82: A5 F8 LDA $F8 C2/FF84: 29 01 AND #$01 C2/FF86: 8F 83 21 00 STA $002183 C2/FF8A: A9 01 LDA #$01 C2/FF8C: 85 FE STA $FE C2/FF8E: A0 02 00 LDY #$0002 C2/FF91: A9 7F LDA #$7F C2/FF93: 48 PHA C2/FF94: AB PLB C2/FF95: A2 00 F8 LDX #$F800 C2/FF98: 7B TDC C2/FF99: 9D 00 00 STA $0000,X C2/FF9C: E8 INX C2/FF9D: D0 FA BNE $FF99 C2/FF9F: A2 DE FF LDX #$FFDE C2/FFA2: C6 FE DEC $FE C2/FFA4: D0 09 BNE $FFAF C2/FFA6: A9 08 LDA #$08 C2/FFA8: 85 FE STA $FE C2/FFAA: B7 F3 LDA [$F3],Y C2/FFAC: 85 FF STA $FF C2/FFAE: C8 INY C2/FFAF: 46 FF LSR $FF C2/FFB1: 90 11 BCC $FFC4 C2/FFB3: B7 F3 LDA [$F3],Y C2/FFB5: 8F 80 21 00 STA $002180 C2/FFB9: 9D 00 00 STA $0000,X C2/FFBC: E8 INX C2/FFBD: D0 37 BNE $FFF6 C2/FFBF: A2 00 F8 LDX #$F800 C2/FFC2: 80 32 BRA $FFF6 C2/FFC4: B7 F3 LDA [$F3],Y C2/FFC6: EB XBA C2/FFC7: C8 INY C2/FFC8: 84 F9 STY $F9 C2/FFCA: B7 F3 LDA [$F3],Y C2/FFCC: 4A LSR C2/FFCD: 4A LSR C2/FFCE: 4A LSR C2/FFCF: 18 CLC C2/FFD0: 69 03 ADC #$03 C2/FFD2: 85 FB STA $FB C2/FFD4: B7 F3 LDA [$F3],Y C2/FFD6: 09 F8 ORA #$F8 C2/FFD8: EB XBA C2/FFD9: A8 TAY C2/FFDA: B9 00 00 LDA $0000,Y C2/FFDD: 8F 80 21 00 STA $002180 C2/FFE1: 9D 00 00 STA $0000,X C2/FFE4: E8 INX C2/FFE5: D0 03 BNE $FFEA C2/FFE7: A2 00 F8 LDX #$F800 C2/FFEA: C8 INY C2/FFEB: D0 03 BNE $FFF0 C2/FFED: A0 00 F8 LDY #$F800 C2/FFF0: C6 FB DEC $FB C2/FFF2: D0 E6 BNE $FFDA C2/FFF4: A4 F9 LDY $F9 C2/FFF6: C8 INY C2/FFF7: C4 FC CPY $FC C2/FFF9: D0 A7 BNE $FFA2 C2/FFFB: 7B TDC C2/FFFC: EB XBA C2/FFFD: 2B PLD C2/FFFE: AB PLB C2/FFFF: 6B RTL ; --------------------------------------------[ Menu: Main ]-------------------------------------------- C3/0000: 4C 1B 00 JMP $001B ; open menu C3/0003: 4C 45 A4 JMP $A445 ; update controller (battle) C3/0006: 4C 24 A4 JMP $A424 ; init controller C3/0009: 4C 7A A4 JMP $A47A ; update controller (field/world) C3/000C: 4C C8 13 JMP $13C8 ; update game time C3/000F: 4C FE 14 JMP $14FE ; load saved game C3/0012: 4C 1C C5 JMP $C51C ; ending cinematic C3/0015: 4C D2 96 JMP $96D2 ; optimize character's equipment C3/0018: 4C 7F D5 JMP $D57F ; ending airship scene ; [ Open Menu ] harata_menu_start: C3/001B: C2 10 REP #$10 C3/001D: E2 20 SEP #$20 C3/001F: A9 00 LDA #$00 ; set data bank C3/0021: 48 PHA C3/0022: AB PLB C3/0023: A2 00 00 LDX #$0000 ; set direct page C3/0026: DA PHX C3/0027: 2B PLD C3/0028: A2 00 00 LDX #$0000 ; set $00 C3/002B: 86 00 STX $00 C3/002D: A9 7E LDA #$7E C3/002F: 8D 83 21 STA $2183 ; set WRAM bank C3/0032: 20 C0 00 JSR $00C0 ; set up interrupt jump code C3/0035: AD 00 02 LDA $0200 C3/0038: C9 02 CMP #$02 C3/003A: D0 03 BNE $003F ; branch if not opening game load menu C3/003C: 20 9B 70 JSR $709B ; init saved game data C3/003F: 20 F8 00 JSR $00F8 ; init menu C3/0042: 20 DD 00 JSR $00DD ; open menu (type) C3/0045: 22 24 A4 C3 JSL $C3A424 ; init controller C3/0049: A9 8F LDA #$8F C3/004B: 8D 00 21 STA $2100 C3/004E: 9C 00 42 STZ $4200 C3/0051: 9C 0B 42 STZ $420B C3/0054: 9C 0C 42 STZ $420C C3/0057: AD 00 02 LDA $0200 C3/005A: C9 02 CMP #$02 C3/005C: D0 11 BNE $006F ; branch if not restoring a saved game C3/005E: AD 05 02 LDA $0205 C3/0061: 10 0C BPL $006F ; branch if tent/warp/warp stone was used C3/0063: AD 4E 1D LDA $1D4E C3/0066: 29 20 AND #$20 C3/0068: F0 05 BEQ $006F ; branch if stereo mode C3/006A: A9 FF LDA #$FF C3/006C: 20 3F 3E JSR $3E3F ; set mono/stereo mode C3/006F: AD 00 02 LDA $0200 C3/0072: D0 4B BNE $00BF ; branch if not main menu C3/0074: AD 05 02 LDA $0205 C3/0077: 10 46 BPL $00BF ; return if return code is positive C3/0079: C9 FE CMP #$FE C3/007B: D0 21 BNE $009E ; branch if not using rename card ; rename card C3/007D: A9 01 LDA #$01 C3/007F: 8D 00 02 STA $0200 C3/0082: AD 01 02 LDA $0201 C3/0085: 8D 0F 02 STA $020F C3/0088: AC 06 02 LDY $0206 C3/008B: 8C 01 02 STY $0201 C3/008E: 22 00 00 C3 JSL $C30000 ; open menu C3/0092: AD 0F 02 LDA $020F C3/0095: 8D 01 02 STA $0201 C3/0098: 9C 00 02 STZ $0200 C3/009B: 4C 1B 00 JMP $001B ; swdtech renaming (ff6j) C3/009E: A9 06 LDA #$06 C3/00A0: 8D 00 02 STA $0200 C3/00A3: AD 01 02 LDA $0201 C3/00A6: 8D 0F 02 STA $020F C3/00A9: AD 06 02 LDA $0206 C3/00AC: 8D 01 02 STA $0201 C3/00AF: 22 00 00 C3 JSL $C30000 ; open menu C3/00B3: AD 0F 02 LDA $020F C3/00B6: 8D 01 02 STA $0201 C3/00B9: 9C 00 02 STZ $0200 C3/00BC: 4C 1B 00 JMP $001B ; return from menu C3/00BF: 6B RTL ; [ Set Up Interrupt Jump Code ] set_vector: C3/00C0: A9 5C LDA #$5C C3/00C2: 8D 00 15 STA $1500 C3/00C5: 8D 04 15 STA $1504 C3/00C8: A2 87 13 LDX #$1387 C3/00CB: 8E 01 15 STX $1501 C3/00CE: A2 C7 13 LDX #$13C7 C3/00D1: 8E 05 15 STX $1505 C3/00D4: A9 C3 LDA #$C3 C3/00D6: 8D 03 15 STA $1503 C3/00D9: 8D 07 15 STA $1507 C3/00DC: 60 RTS ; [ Open Menu (type) ] C3/00DD: 7B TDC C3/00DE: AD 00 02 LDA $0200 C3/00E1: 0A ASL C3/00E2: AA TAX C3/00E3: 7C E6 00 JMP ($00E6,X) ; menu type jump table C3/00E6: .DW $011A, $01B3, $016F, $0121, $012B, $013D, $0149, $0152 C3/00F6: .DW $0166 ; [ Init Menu ] C3/00F8: 20 FA 68 JSR $68FA ; init menu ram C3/00FB: 20 15 69 JSR $6915 ; init party character data C3/00FE: 20 A9 69 JSR $69A9 ; C3/0101: 22 48 CD D4 JSL $D4CD48 ; init menu hardware registers C3/0105: 22 24 A4 C3 JSL $C3A424 ; init controller C3/0109: 7B TDC C3/010A: 22 1D CA D4 JSL $D4CA1D ; init hdma for menu window gradient bars C3/010E: 20 DC 69 JSR $69DC ; init window 1 position hdma C3/0111: 20 14 11 JSR $1114 ; init threads C3/0114: 20 87 6A JSR $6A87 ; init menu graphics C3/0117: 4C 87 3A JMP $3A87 ; init custom menu window ; [ Menu Type $00: Main Menu ] C3/011A: A9 04 LDA #$04 ; menu state $04 (main menu init) C3/011C: 85 26 STA $26 C3/011E: 4C BA 01 JMP $01BA ; [ Menu Type $03: Shop ] C3/0121: 20 99 3F JSR $3F99 ; init font color C3/0124: A9 24 LDA #$24 ; menu state $24 (shop init) C3/0126: 85 26 STA $26 C3/0128: 4C BA 01 JMP $01BA ; [ Menu Type $04: Party Select ] C3/012B: 20 99 3F JSR $3F99 ; init font color C3/012E: 20 38 01 JSR $0138 ; clear previous cursor position C3/0131: A9 2C LDA #$2C ; menu state $2C (party select init) C3/0133: 85 26 STA $26 C3/0135: 4C BA 01 JMP $01BA ; [ Clear Previous Cursor Position ] C3/0138: 7B TDC C3/0139: A8 TAY C3/013A: 84 8E STY $8E C3/013C: 60 RTS ; [ Menu Type $05: Item Details ??? (unused) ] C3/013D: 20 99 3F JSR $3F99 ; init font color C3/0140: 20 38 01 JSR $0138 ; clear previous cursor position C3/0143: A9 2F LDA #$2F ; menu state $2F (item details) C3/0145: 85 26 STA $26 C3/0147: 80 71 BRA $01BA ; [ Menu Type $06: SwdTech Renaming (ff6j) ] C3/0149: 20 99 3F JSR $3F99 ; init font color C3/014C: A9 3F LDA #$3F ; menu state $3F C3/014E: 85 26 STA $26 C3/0150: 80 68 BRA $01BA ; [ Menu Type $07: Colosseum ] C3/0152: 20 99 3F JSR $3F99 ; init font color C3/0155: 64 79 STZ $79 C3/0157: 64 7A STZ $7A C3/0159: 64 7B STZ $7B C3/015B: A9 FF LDA #$FF C3/015D: 8D 05 02 STA $0205 C3/0160: A9 71 LDA #$71 ; menu state $71 (colosseum item select init) C3/0162: 85 26 STA $26 C3/0164: 80 54 BRA $01BA ; [ Menu Type $08: Final Battle Order ] C3/0166: 20 99 3F JSR $3F99 ; init font color C3/0169: A9 73 LDA #$73 ; menu state $73 (final battle order init) C3/016B: 85 26 STA $26 C3/016D: 80 4B BRA $01BA ; [ Menu Type $02: Restore Game ] C3/016F: AF F1 7F 30 LDA $307FF1 ; increment random number seed C3/0173: 1A INC C3/0174: 8F F1 7F 30 STA $307FF1 C3/0178: 22 24 A4 C3 JSL $C3A424 ; init controller C3/017C: 20 23 70 JSR $7023 ; validate sram C3/017F: 90 1E BCC $019F ; branch if sram is invalid C3/0181: A9 01 LDA #$01 ; song $01 (the prelude) C3/0183: 8D 01 13 STA $1301 C3/0186: A9 10 LDA #$10 C3/0188: 8D 00 13 STA $1300 C3/018B: A9 80 LDA #$80 C3/018D: 8D 02 13 STA $1302 C3/0190: 22 04 00 C5 JSL $C50004 ; spc command C3/0194: A9 FF LDA #$FF C3/0196: 8D 05 02 STA $0205 C3/0199: A9 20 LDA #$20 ; menu state $20 (restore game init) C3/019B: 85 26 STA $26 C3/019D: 80 1B BRA $01BA ; sram invalid C3/019F: 20 21 2A JSR $2A21 ; clear game time C3/01A2: A9 01 LDA #$01 C3/01A4: 8D 24 02 STA $0224 ; current saved game slot = 1 C3/01A7: 9C 1F 02 STZ $021F ; don't load a saved game C3/01AA: A9 FF LDA #$FF C3/01AC: 85 26 STA $26 ; terminate menu C3/01AE: 9C 05 02 STZ $0205 ; clear return code C3/01B1: 80 07 BRA $01BA ; [ Menu Type $01: Name Change ] C3/01B3: 20 99 3F JSR $3F99 ; init font color C3/01B6: A9 5D LDA #$5D ; menu state $5D (name change init) C3/01B8: 85 26 STA $26 ; fall through ; [ Menu State Loop ] C3/01BA: 20 12 14 JSR $1412 ; update hardware registers C3/01BD: 7B TDC C3/01BE: A5 26 LDA $26 ; return if menu state is $FF C3/01C0: C9 FF CMP #$FF C3/01C2: F0 14 BEQ $01D8 C3/01C4: C2 20 REP #$20 C3/01C6: 0A ASL C3/01C7: AA TAX C3/01C8: E2 20 SEP #$20 C3/01CA: FC DB 01 JSR ($01DB,X) ; do menu state code C3/01CD: 20 B0 11 JSR $11B0 ; execute threads C3/01D0: 20 4D 13 JSR $134D ; wait for next frame C3/01D3: 20 DB 02 JSR $02DB ; check timer 0 C3/01D6: 80 E5 BRA $01BD C3/01D8: 64 43 STZ $43 ; disable HDMA C3/01DA: 60 RTS ; menu state jump table C3/01DB: .DW $1D71, $1D7E, $1D8B, $1D94, $1A8A, $1DA4, $1DE8, $1AD6 C3/01EB: .DW $1EF7, $1B5B, $1FF4, $1C46, $21F5, $1C7D, $22C5, $240C C3/01FB: .DW $2453, $24A9, $2537, $1CA0, $2540, $1CE3, $259D, $25F4 C3/020B: .DW $2741, $2779, $27E2, $288A, $28AA, $28BA, $28D3, $259D C3/021B: .DW $1D03, $29C2, $1D51, $2A2A, $B466, $B49B, $B4BD, $B505 C3/022B: .DW $B60E, $B616, $B676, $B752, $70E7, $7168, $720C, $7AE5 C3/023B: .DW $7B25, $7B25, $7B25, $2977, $293A, $1BB8, $9621, $1EB5 C3/024B: .DW $1C32, $2966, $2A65, $2AAE, $2D1C, $2D78, $298E, $B437 C3/025B: .DW $B437, $B437, $631D, $633F, $7D1C, $7D1C, $7D1C, $42C2 C3/026B: .DW $42DF, $46AD, $46AD, $46AD, $46CA, $58CE, $B437, $B437 C3/027B: .DW $3A00, $3A21, $1A0A, $19FB, $1A19, $9884, $98CF, $990F C3/028B: .DW $9E4B, $9EB8, $9FFD, $A097, $A10A, $652D, $89E6, $656C C3/029B: .DW $65E8, $65E8, $4338, $4376, $8983, $36E7, $79FF, $79F0 C3/02AB: .DW $7A0E, $7A87, $63A7, $22B4, $9FB1, $1C1A, $1C26, $8A84 C3/02BB: .DW $8A96, $ACAA, $ACDC, $A9F8, $AA25, $ADB7, $AE0F, $1B35 C3/02CB: .DW $AD8A, $9E7D, $9E8B, $0000, $0000, $7131, $1BE5, $1BF3 ; [ Check Timer 0 ] C3/02DB: A5 B4 LDA $B4 C3/02DD: D0 19 BNE $02F8 C3/02DF: AD 88 11 LDA $1188 ; return if timer 0 can cause the menu to close C3/02E2: 89 20 BIT #$20 C3/02E4: F0 12 BEQ $02F8 C3/02E6: AC 89 11 LDY $1189 ; return unless timer 0 ran out C3/02E9: D0 0D BNE $02F8 C3/02EB: A9 FF LDA #$FF C3/02ED: 85 27 STA $27 C3/02EF: 64 26 STZ $26 C3/02F1: A9 05 LDA #$05 C3/02F3: 8D 05 02 STA $0205 C3/02F6: 85 B4 STA $B4 C3/02F8: 60 RTS ; [ Draw Positioned Text ] ; +Y = source address (+$C30000) ; $29 = flags ; #define ptext(bg_offset,x,y,text) .dw bg_offset + 2 * (x + y * $20) \ .db text \ .db 0 ; #define bg1_0 $3849 \ #define bg1_1 $4049 \ #define bg1_2 $4849 \ #define bg1_3 $5049 ; #define bg2_0 $5849 \ #define bg2_1 $6049 \ #define bg2_2 $6849 \ #define bg2_3 $7049 ; #define bg3_0 $7849 \ #define bg3_1 $8049 \ #define bg3_2 $8849 \ #define bg3_3 $9049 C3/02F9: 84 E7 STY $E7 C3/02FB: A9 C3 LDA #$C3 C3/02FD: 85 E9 STA $E9 C3/02FF: A6 00 LDX $00 C3/0301: 9B TXY C3/0302: C2 20 REP #$20 C3/0304: A7 E7 LDA [$E7] C3/0306: 85 EB STA $EB C3/0308: E6 E7 INC $E7 C3/030A: E6 E7 INC $E7 C3/030C: E2 20 SEP #$20 C3/030E: A9 7E LDA #$7E C3/0310: 85 ED STA $ED C3/0312: B7 E7 LDA [$E7],Y C3/0314: F0 0F BEQ $0325 C3/0316: 5A PHY C3/0317: 9B TXY C3/0318: 97 EB STA [$EB],Y C3/031A: E8 INX C3/031B: 9B TXY C3/031C: A5 29 LDA $29 C3/031E: 97 EB STA [$EB],Y C3/0320: E8 INX C3/0321: 7A PLY C3/0322: C8 INY C3/0323: 80 ED BRA $0312 C3/0325: 60 RTS ; [ ] C3/0326: 84 E7 STY $E7 C3/0328: A6 00 LDX $00 C3/032A: C2 20 REP #$20 C3/032C: BF 4E 04 C3 LDA $C3044E,X C3/0330: 18 CLC C3/0331: 65 E7 ADC $E7 C3/0333: 9F 19 9F 7E STA $7E9F19,X C3/0337: E8 INX C3/0338: E8 INX C3/0339: E0 38 00 CPX #$0038 C3/033C: D0 EE BNE $032C C3/033E: E2 20 SEP #$20 C3/0340: 60 RTS ; [ Draw Window ] ; +Y = source address (+$C30000) ; #define window(bg_offset,x,y,width,height) .dw bg_offset + 2 * (x + y * $20) \ .db width, height ; #define bg1_0 $3849 \ #define bg1_1 $4049 \ #define bg1_2 $4849 \ #define bg1_3 $5049 ; #define bg2_0 $5849 \ #define bg2_1 $6049 \ #define bg2_2 $6849 \ #define bg2_3 $7049 ; #define bg3_0 $7849 \ #define bg3_1 $8049 \ #define bg3_2 $8849 \ #define bg3_3 $9049 C3/0341: A9 C3 LDA #$C3 C3/0343: 85 E9 STA $E9 C3/0345: 84 E7 STY $E7 C3/0347: A6 00 LDX $00 C3/0349: 9B TXY C3/034A: C2 20 REP #$20 C3/034C: B7 E7 LDA [$E7],Y C3/034E: 85 EB STA $EB C3/0350: C8 INY C3/0351: C8 INY C3/0352: B7 E7 LDA [$E7],Y C3/0354: 85 E0 STA $E0 C3/0356: E2 20 SEP #$20 C3/0358: 85 E2 STA $E2 C3/035A: A9 7E LDA #$7E C3/035C: 85 ED STA $ED C3/035E: A6 00 LDX $00 C3/0360: 9B TXY C3/0361: E2 10 SEP #$10 C3/0363: A6 E0 LDX $E0 C3/0365: A4 E1 LDY $E1 C3/0367: C2 10 REP #$10 C3/0369: 86 EF STX $EF C3/036B: 84 F1 STY $F1 C3/036D: C2 20 REP #$20 C3/036F: 20 75 03 JSR $0375 C3/0372: E2 20 SEP #$20 C3/0374: 60 RTS C3/0375: 20 A3 03 JSR $03A3 C3/0378: A6 00 LDX $00 C3/037A: A0 40 00 LDY #$0040 C3/037D: 84 F3 STY $F3 C3/037F: DA PHX C3/0380: 8A TXA C3/0381: 29 03 00 AND #$0003 C3/0384: 0A ASL C3/0385: AA TAX C3/0386: FC 9B 03 JSR ($039B,X) C3/0389: A5 F3 LDA $F3 C3/038B: 18 CLC C3/038C: 69 40 00 ADC #$0040 C3/038F: 85 F3 STA $F3 C3/0391: A8 TAY C3/0392: FA PLX C3/0393: E8 INX C3/0394: E4 F1 CPX $F1 C3/0396: D0 E7 BNE $037F C3/0398: 4C BB 03 JMP $03BB C3/039B: .DW $03D1, $03DB, $03E8, $03F5 C3/03A3: A4 00 LDY $00 C3/03A5: 20 08 04 JSR $0408 C3/03A8: AF 49 9F 7E LDA $7E9F49 C3/03AC: 85 E3 STA $E3 C3/03AE: AF 4B 9F 7E LDA $7E9F4B C3/03B2: 85 E5 STA $E5 C3/03B4: A2 20 00 LDX #$0020 C3/03B7: 86 E0 STX $E0 C3/03B9: 80 6D BRA $0428 C3/03BB: 20 08 04 JSR $0408 C3/03BE: AF 4D 9F 7E LDA $7E9F4D C3/03C2: 85 E3 STA $E3 C3/03C4: AF 4F 9F 7E LDA $7E9F4F C3/03C8: 85 E5 STA $E5 C3/03CA: A2 24 00 LDX #$0024 C3/03CD: 86 E0 STX $E0 C3/03CF: 80 57 BRA $0428 C3/03D1: 20 02 04 JSR $0402 C3/03D4: 20 0E 04 JSR $040E C3/03D7: 64 E0 STZ $E0 C3/03D9: 80 4D BRA $0428 C3/03DB: 20 02 04 JSR $0402 C3/03DE: 20 1B 04 JSR $041B C3/03E1: A2 08 00 LDX #$0008 C3/03E4: 86 E0 STX $E0 C3/03E6: 80 40 BRA $0428 C3/03E8: 20 02 04 JSR $0402 C3/03EB: 20 0E 04 JSR $040E C3/03EE: A2 10 00 LDX #$0010 C3/03F1: 86 E0 STX $E0 C3/03F3: 80 33 BRA $0428 C3/03F5: 20 02 04 JSR $0402 C3/03F8: 20 1B 04 JSR $041B C3/03FB: A2 18 00 LDX #$0018 C3/03FE: 86 E0 STX $E0 C3/0400: 80 26 BRA $0428 C3/0402: A2 03 00 LDX #$0003 C3/0405: 86 F5 STX $F5 C3/0407: 60 RTS C3/0408: A2 01 00 LDX #$0001 C3/040B: 86 F5 STX $F5 C3/040D: 60 RTS C3/040E: AF 41 9F 7E LDA $7E9F41 C3/0412: 85 E3 STA $E3 C3/0414: AF 43 9F 7E LDA $7E9F43 C3/0418: 85 E5 STA $E5 C3/041A: 60 RTS C3/041B: AF 45 9F 7E LDA $7E9F45 C3/041F: 85 E3 STA $E3 C3/0421: AF 47 9F 7E LDA $7E9F47 C3/0425: 85 E5 STA $E5 C3/0427: 60 RTS C3/0428: A6 00 LDX $00 C3/042A: A5 E3 LDA $E3 C3/042C: 97 EB STA [$EB],Y C3/042E: C8 INY C3/042F: C8 INY C3/0430: DA PHX C3/0431: 8A TXA C3/0432: 25 F5 AND $F5 C3/0434: 0A ASL C3/0435: 18 CLC C3/0436: 65 E0 ADC $E0 C3/0438: AA TAX C3/0439: BF 19 9F 7E LDA $7E9F19,X C3/043D: FA PLX C3/043E: E4 EF CPX $EF C3/0440: F0 07 BEQ $0449 C3/0442: 97 EB STA [$EB],Y C3/0444: C8 INY C3/0445: C8 INY C3/0446: E8 INX C3/0447: 80 E7 BRA $0430 C3/0449: A5 E5 LDA $E5 C3/044B: 97 EB STA [$EB],Y C3/044D: 60 RTS C3/044E: .DW $0180, $0181, $0182, $0183, $0184, $0185, $0186, $0187 C3/045E: .DW $0188, $0189, $018A, $018B, $018C, $018D, $018E, $018F C3/046E: .DW $0191, $0192, $0199, $019A, $0194, $0195, $0196, $0197 C3/047E: .DW $0190, $0193, $0198, $019B ; [ Draw Number Text (3 digit) ] C3/0486: A0 05 00 LDY #$0005 C3/0489: 84 E0 STY $E0 C3/048B: A0 02 00 LDY #$0002 C3/048E: 80 37 BRA $04C7 ; [ Draw Number Text (4 digit) ] ; HP/MP C3/0490: A0 05 00 LDY #$0005 C3/0493: 84 E0 STY $E0 C3/0495: A0 01 00 LDY #$0001 C3/0498: 80 2D BRA $04C7 ; [ Draw Number Text (5 digit) ] C3/049A: A0 05 00 LDY #$0005 C3/049D: 84 E0 STY $E0 C3/049F: A4 00 LDY $00 C3/04A1: 80 24 BRA $04C7 ; [ Draw Number Text (8 digit) ] ; experience C3/04A3: A0 08 00 LDY #$0008 C3/04A6: 84 E0 STY $E0 C3/04A8: A4 00 LDY $00 C3/04AA: 80 1B BRA $04C7 ; [ Draw Number Text (7 digit) ] ; steps, GP C3/04AC: A0 08 00 LDY #$0008 C3/04AF: 84 E0 STY $E0 C3/04B1: A0 01 00 LDY #$0001 C3/04B4: 80 11 BRA $04C7 ; [ Draw Number Text (2 digit) ] C3/04B6: A0 03 00 LDY #$0003 C3/04B9: 84 E0 STY $E0 C3/04BB: A0 01 00 LDY #$0001 C3/04BE: 80 07 BRA $04C7 ; [ Draw Number Text (3 digit) ] C3/04C0: A0 03 00 LDY #$0003 C3/04C3: 84 E0 STY $E0 C3/04C5: A4 00 LDY $00 ; fall through ; [ Draw Number Text ] ; +X = source address (+$7E0000) ; +Y = text buffer offset ; $29 = vhopppmm high byte of bg data ; +$E0 = text length ; $F7-$FF = text buffer C3/04C7: 86 EB STX $EB C3/04C9: A9 7E LDA #$7E C3/04CB: 85 ED STA $ED C3/04CD: BB TYX C3/04CE: A4 00 LDY $00 C3/04D0: B5 F7 LDA $F7,X C3/04D2: 97 EB STA [$EB],Y C3/04D4: C8 INY C3/04D5: A5 29 LDA $29 C3/04D7: 97 EB STA [$EB],Y C3/04D9: C8 INY C3/04DA: E8 INX C3/04DB: E4 E0 CPX $E0 C3/04DD: D0 F1 BNE $04D0 C3/04DF: 60 RTS ; [ Convert Hex to Decimal (3 digits) ] ; +$F3 = hex number ; $F7-$F9 = decimal digits (battle text) C3/04E0: 20 F9 04 JSR $04F9 C3/04E3: A4 00 LDY $00 C3/04E5: A2 02 00 LDX #$0002 C3/04E8: B9 F7 00 LDA $00F7,Y C3/04EB: C9 B4 CMP #$B4 C3/04ED: D0 09 BNE $04F8 C3/04EF: A9 FF LDA #$FF C3/04F1: 99 F7 00 STA $00F7,Y C3/04F4: C8 INY C3/04F5: CA DEX C3/04F6: D0 F0 BNE $04E8 C3/04F8: 60 RTS ; [ Convert Hex to Decimal (3 digits, keep leading zeroes) ] ; +$F3 = hex number ; $F7-$F9 = decimal digits (battle text) C3/04F9: 85 E0 STA $E0 C3/04FB: A9 03 LDA #$03 C3/04FD: 85 E4 STA $E4 C3/04FF: A4 00 LDY $00 C3/0501: BB TYX C3/0502: 64 E1 STZ $E1 C3/0504: BF 2B 05 C3 LDA $C3052B,X C3/0508: E8 INX C3/0509: 85 E3 STA $E3 C3/050B: A5 E0 LDA $E0 C3/050D: 38 SEC C3/050E: E5 E3 SBC $E3 C3/0510: 90 06 BCC $0518 C3/0512: 85 E0 STA $E0 C3/0514: E6 E1 INC $E1 C3/0516: 80 F3 BRA $050B C3/0518: 18 CLC C3/0519: 65 ED ADC $ED C3/051B: 85 F3 STA $F3 C3/051D: A5 E1 LDA $E1 C3/051F: 18 CLC C3/0520: 69 B4 ADC #$B4 C3/0522: 99 F7 00 STA $00F7,Y C3/0525: C8 INY C3/0526: C6 E4 DEC $E4 C3/0528: D0 D8 BNE $0502 C3/052A: 60 RTS ; data for 3 digit hex to dec conversion C3/052B: .DB 100d, 10d, 1d ; [ Convert Hex to Decimal (5 digits) ] ; +$F3 = hex number ; $F7-$FB = decimal digits (battle text) C3/052E: A9 05 LDA #$05 C3/0530: 85 E0 STA $E0 C3/0532: A4 00 LDY $00 C3/0534: BB TYX C3/0535: C2 20 REP #$20 C3/0537: BF 78 05 C3 LDA $C30578,X C3/053B: E8 INX C3/053C: E8 INX C3/053D: 85 ED STA $ED C3/053F: 64 EB STZ $EB C3/0541: 38 SEC C3/0542: A5 F3 LDA $F3 C3/0544: E5 ED SBC $ED C3/0546: 90 06 BCC $054E C3/0548: 85 F3 STA $F3 C3/054A: E6 EB INC $EB ; increment digit C3/054C: 80 F3 BRA $0541 C3/054E: 18 CLC C3/054F: 65 ED ADC $ED C3/0551: 85 F3 STA $F3 C3/0553: E2 20 SEP #$20 C3/0555: A5 EB LDA $EB C3/0557: 18 CLC C3/0558: 69 B4 ADC #$B4 C3/055A: 99 F7 00 STA $00F7,Y C3/055D: C8 INY C3/055E: C6 E0 DEC $E0 C3/0560: D0 D3 BNE $0535 C3/0562: A4 00 LDY $00 C3/0564: A2 04 00 LDX #$0004 C3/0567: B9 F7 00 LDA $00F7,Y C3/056A: C9 B4 CMP #$B4 C3/056C: D0 09 BNE $0577 C3/056E: A9 FF LDA #$FF C3/0570: 99 F7 00 STA $00F7,Y C3/0573: C8 INY C3/0574: CA DEX C3/0575: D0 F0 BNE $0567 C3/0577: 60 RTS ; data for 5 digit hex to dec conversion C3/0578: .DW 10000d, 1000d, 100d, 10d, 1d ; [ Convert Hex to Decimal (8 digits) ] ; +$F3 = hex number ; $F7-$FE = decimal digits (battle text) C3/0582: 64 F4 STZ $F4 C3/0584: A9 08 LDA #$08 C3/0586: 85 E0 STA $E0 C3/0588: A4 00 LDY $00 C3/058A: BB TYX C3/058B: C2 20 REP #$20 C3/058D: 64 EB STZ $EB C3/058F: 38 SEC C3/0590: A5 F1 LDA $F1 C3/0592: FF DE 05 C3 SBC $C305DE,X C3/0596: 85 F1 STA $F1 C3/0598: A5 F3 LDA $F3 C3/059A: FF EE 05 C3 SBC $C305EE,X C3/059E: 85 F3 STA $F3 C3/05A0: 90 04 BCC $05A6 C3/05A2: E6 EB INC $EB C3/05A4: 80 E9 BRA $058F C3/05A6: A5 F1 LDA $F1 C3/05A8: 18 CLC C3/05A9: 7F DE 05 C3 ADC $C305DE,X C3/05AD: 85 F1 STA $F1 C3/05AF: A5 F3 LDA $F3 C3/05B1: 7F EE 05 C3 ADC $C305EE,X C3/05B5: 85 F3 STA $F3 C3/05B7: E2 20 SEP #$20 C3/05B9: A5 EB LDA $EB C3/05BB: 18 CLC C3/05BC: 69 B4 ADC #$B4 C3/05BE: 99 F7 00 STA $00F7,Y C3/05C1: C8 INY C3/05C2: E8 INX C3/05C3: E8 INX C3/05C4: C6 E0 DEC $E0 C3/05C6: D0 C3 BNE $058B C3/05C8: A4 00 LDY $00 C3/05CA: A2 07 00 LDX #$0007 C3/05CD: B9 F7 00 LDA $00F7,Y C3/05D0: C9 B4 CMP #$B4 C3/05D2: D0 09 BNE $05DD C3/05D4: A9 FF LDA #$FF C3/05D6: 99 F7 00 STA $00F7,Y C3/05D9: C8 INY C3/05DA: CA DEX C3/05DB: D0 F0 BNE $05CD C3/05DD: 60 RTS ; data for 8 digit hex to dec conversion C3/05DE: .DW !10000000d, !1000000d, !100000d, !10000d, !1000d, !100d, !10d, !1d C3/05EE: .DW ^10000000d, ^1000000d, ^100000d, ^10000d, ^1000d, ^100d, ^10d, ^1d ; [ Init Cursor ] ; +Y = pointer to cursor data (+$C30000) ; $00 x------y ; x: disable cursor wrap in X direction ; y: disable cursor wrap in Y direction ; $01 Initial X Position (0-based) ; $02 Initial Y Position ; $03 Maximum X Position (1-based) ; $04 Maximum Y Position C3/05FE: A9 C3 LDA #$C3 C3/0600: 85 ED STA $ED C3/0602: 84 EB STY $EB C3/0604: A4 00 LDY $00 C3/0606: B7 EB LDA [$EB],Y C3/0608: 85 59 STA $59 C3/060A: C8 INY C3/060B: C2 20 REP #$20 C3/060D: 64 51 STZ $51 C3/060F: B7 EB LDA [$EB],Y C3/0611: 85 4D STA $4D C3/0613: C8 INY C3/0614: C8 INY C3/0615: B7 EB LDA [$EB],Y C3/0617: 85 53 STA $53 C3/0619: 64 4F STZ $4F C3/061B: E2 20 SEP #$20 C3/061D: 60 RTS ; [ Select First Valid Character Slot ] C3/061E: 7B TDC C3/061F: A8 TAY C3/0620: 98 TYA C3/0621: 0A ASL C3/0622: AA TAX C3/0623: B5 85 LDA $85,X ; character select cursor positions C3/0625: D0 08 BNE $062F C3/0627: E6 4E INC $4E ; increment cursor position C3/0629: C8 INY C3/062A: C0 04 00 CPY #$0004 C3/062D: D0 F1 BNE $0620 C3/062F: 60 RTS ; [ Set Pointer to Cursor Data ] ; Y = pointer to cursor data (+$C30000) C3/0630: 84 E7 STY $E7 C3/0632: A9 C3 LDA #$C3 C3/0634: 85 E9 STA $E9 C3/0636: 60 RTS ; [ Update Cursor Position (rotated list) ] ; Y = pointer to cursor data (+$C30000) C3/0637: 20 30 06 JSR $0630 ; set pointer to cursor data C3/063A: 20 50 06 JSR $0650 ; update selected item C3/063D: 4C C5 06 JMP $06C5 ; update cursor sprite position ; [ Update Cursor Position (single page) ] ; Y = pointer to cursor data (+$C30000) C3/0640: 20 30 06 JSR $0630 ; set pointer to cursor data C3/0643: 20 77 06 JSR $0677 ; update selected item C3/0646: 80 7D BRA $06C5 ; update cursor sprite position ; [ Update Cursor Position (scrolling page) ] ; Y = pointer to cursor data (+$C30000) C3/0648: 20 30 06 JSR $0630 ; set pointer to cursor data C3/064B: 20 9E 06 JSR $069E ; update selected item C3/064E: 80 75 BRA $06C5 ; update cursor sprite position ; [ Update Selected Item (horizontal list) ] C3/0650: 8B PHB C3/0651: A9 00 LDA #$00 C3/0653: 48 PHA C3/0654: AB PLB C3/0655: AF 12 42 00 LDA $004212 C3/0659: 29 40 AND #$40 C3/065B: F0 F8 BEQ $0655 C3/065D: A5 54 LDA $54 ; max y position C3/065F: 8D 1B 21 STA $211B C3/0662: 9C 1B 21 STZ $211B C3/0665: A5 4D LDA $4D ; current x position (relative to page) C3/0667: 8D 1C 21 STA $211C C3/066A: 8D 1C 21 STA $211C C3/066D: AD 34 21 LDA $2134 C3/0670: 18 CLC C3/0671: 65 4E ADC $4E ; current y position (relative to page) C3/0673: 85 4B STA $4B ; $4B = $54 * $4D + $4E C3/0675: AB PLB C3/0676: 60 RTS ; [ Update Selected Item (vertical list, single page) ] C3/0677: 8B PHB C3/0678: A9 00 LDA #$00 C3/067A: 48 PHA C3/067B: AB PLB C3/067C: AF 12 42 00 LDA $004212 ; wait for horizontal blank C3/0680: 29 40 AND #$40 C3/0682: F0 F8 BEQ $067C C3/0684: A5 53 LDA $53 ; max x position C3/0686: 8D 1B 21 STA $211B C3/0689: 9C 1B 21 STZ $211B C3/068C: A5 4E LDA $4E ; current y position (relative to page) C3/068E: 8D 1C 21 STA $211C C3/0691: 8D 1C 21 STA $211C C3/0694: AD 34 21 LDA $2134 C3/0697: 18 CLC C3/0698: 65 4D ADC $4D ; current x position (relative to page) C3/069A: 85 4B STA $4B ; $4B = $53 * $4E + $4D C3/069C: AB PLB C3/069D: 60 RTS ; [ Update Selected Item (vertical list, scrolling page) ] C3/069E: 8B PHB C3/069F: A9 00 LDA #$00 C3/06A1: 48 PHA C3/06A2: AB PLB C3/06A3: AF 12 42 00 LDA $004212 C3/06A7: 29 40 AND #$40 C3/06A9: F0 F8 BEQ $06A3 C3/06AB: A5 53 LDA $53 ; max x position C3/06AD: 8D 1B 21 STA $211B C3/06B0: 9C 1B 21 STZ $211B C3/06B3: A5 50 LDA $50 ; current y position (absolute) C3/06B5: 8D 1C 21 STA $211C C3/06B8: 8D 1C 21 STA $211C C3/06BB: AD 34 21 LDA $2134 C3/06BE: 18 CLC C3/06BF: 65 4F ADC $4F ; current x position (absolute) C3/06C1: 85 4B STA $4B ; $4B = $53 * $50 + $4F C3/06C3: AB PLB C3/06C4: 60 RTS ; [ Update Cursor Sprite Position ] C3/06C5: 8B PHB C3/06C6: A9 00 LDA #$00 C3/06C8: 48 PHA C3/06C9: AB PLB C3/06CA: A5 53 LDA $53 C3/06CC: 3A DEC C3/06CD: C5 4D CMP $4D C3/06CF: B0 0C BCS $06DD C3/06D1: A5 53 LDA $53 C3/06D3: 3A DEC C3/06D4: 38 SEC C3/06D5: E5 51 SBC $51 C3/06D7: 85 E0 STA $E0 C3/06D9: 85 E2 STA $E2 C3/06DB: 80 08 BRA $06E5 C3/06DD: A5 53 LDA $53 C3/06DF: 85 E0 STA $E0 C3/06E1: A5 4D LDA $4D C3/06E3: 85 E2 STA $E2 C3/06E5: A5 54 LDA $54 C3/06E7: 3A DEC C3/06E8: C5 4E CMP $4E C3/06EA: B0 0A BCS $06F6 C3/06EC: A5 54 LDA $54 C3/06EE: 3A DEC C3/06EF: 38 SEC C3/06F0: E5 52 SBC $52 C3/06F2: 85 E1 STA $E1 C3/06F4: 80 04 BRA $06FA C3/06F6: A5 4E LDA $4E C3/06F8: 85 E1 STA $E1 C3/06FA: AF 12 42 00 LDA $004212 C3/06FE: 29 40 AND #$40 C3/0700: F0 F8 BEQ $06FA C3/0702: A5 E0 LDA $E0 C3/0704: 8D 1B 21 STA $211B C3/0707: 9C 1B 21 STZ $211B C3/070A: A5 E1 LDA $E1 C3/070C: 8D 1C 21 STA $211C C3/070F: 8D 1C 21 STA $211C C3/0712: AD 34 21 LDA $2134 C3/0715: 18 CLC C3/0716: 65 E2 ADC $E2 C3/0718: 0A ASL C3/0719: EB XBA C3/071A: A5 00 LDA $00 C3/071C: EB XBA C3/071D: A8 TAY C3/071E: B7 E7 LDA [$E7],Y C3/0720: 85 55 STA $55 C3/0722: 64 56 STZ $56 C3/0724: C8 INY C3/0725: B7 E7 LDA [$E7],Y C3/0727: 85 57 STA $57 C3/0729: 64 58 STZ $58 C3/072B: AB PLB C3/072C: 60 RTS ; [ Update Cursor Movement (single page) ] C3/072D: A5 0B LDA $0B ; branch if up button is not pressed C3/072F: 89 08 BIT #$08 C3/0731: F0 1D BEQ $0750 C3/0733: A5 4E LDA $4E C3/0735: D0 11 BNE $0748 C3/0737: A5 59 LDA $59 C3/0739: 29 01 AND #$01 C3/073B: D0 72 BNE $07AF C3/073D: A5 54 LDA $54 C3/073F: 3A DEC C3/0740: 85 4E STA $4E C3/0742: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/0745: 4C AF 07 JMP $07AF C3/0748: C6 4E DEC $4E C3/074A: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/074D: 4C AF 07 JMP $07AF C3/0750: A5 0B LDA $0B ; branch if down button is not pressed C3/0752: 89 04 BIT #$04 C3/0754: F0 1D BEQ $0773 C3/0756: A5 54 LDA $54 C3/0758: 3A DEC C3/0759: C5 4E CMP $4E C3/075B: D0 0E BNE $076B C3/075D: A5 59 LDA $59 C3/075F: 29 01 AND #$01 C3/0761: D0 4C BNE $07AF C3/0763: 64 4E STZ $4E C3/0765: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/0768: 4C AF 07 JMP $07AF C3/076B: E6 4E INC $4E C3/076D: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/0770: 4C AF 07 JMP $07AF C3/0773: A5 0B LDA $0B ; branch if left button is not pressed C3/0775: 89 02 BIT #$02 C3/0777: F0 19 BEQ $0792 C3/0779: A5 4D LDA $4D C3/077B: D0 0E BNE $078B C3/077D: A5 59 LDA $59 C3/077F: 30 2E BMI $07AF C3/0781: A5 53 LDA $53 C3/0783: 3A DEC C3/0784: 85 4D STA $4D C3/0786: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/0789: 80 24 BRA $07AF C3/078B: C6 4D DEC $4D C3/078D: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/0790: 80 1D BRA $07AF C3/0792: A5 0B LDA $0B ; branch if right button is not pressed C3/0794: 89 01 BIT #$01 C3/0796: F0 17 BEQ $07AF C3/0798: A5 53 LDA $53 C3/079A: 3A DEC C3/079B: C5 4D CMP $4D C3/079D: D0 0B BNE $07AA C3/079F: A5 59 LDA $59 C3/07A1: 30 0C BMI $07AF C3/07A3: 64 4D STZ $4D C3/07A5: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/07A8: 80 05 BRA $07AF C3/07AA: E6 4D INC $4D C3/07AC: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/07AF: 60 RTS ; [ Create Cursor Sprite Thread ] C3/07B0: A9 01 LDA #$01 ; priority 1 C3/07B2: A0 B8 07 LDY #$07B8 C3/07B5: 4C 73 11 JMP $1173 ; create thread ; [ Cursor Sprite Thread ] C3/07B8: AA TAX C3/07B9: 7C BC 07 JMP ($07BC,X) C3/07BC: .DW $07C0, $07DC ; state $00: init C3/07C0: A6 2D LDX $2D ; thread data pointer C3/07C2: C2 20 REP #$20 C3/07C4: A9 8D 08 LDA #$088D ; set animation data pointer to C3/088D C3/07C7: 9D C9 32 STA $32C9,X C3/07CA: E2 20 SEP #$20 C3/07CC: A9 C3 LDA #$C3 C3/07CE: 9D CA 35 STA $35CA,X C3/07D1: 20 06 12 JSR $1206 ; init animation thread C3/07D4: FE 49 36 INC $3649,X ; increment thread state C3/07D7: A9 01 LDA #$01 C3/07D9: 9D 4A 36 STA $364A,X ; sprite doesn't scroll with bg ; state $01: update C3/07DC: A5 46 LDA $46 ; terminate thread if cursor 1 and 2 are both inactive C3/07DE: 29 06 AND #$06 C3/07E0: F0 1B BEQ $07FD C3/07E2: A5 45 LDA $45 ; C3/07E4: 89 04 BIT #$04 C3/07E6: F0 13 BEQ $07FB C3/07E8: A6 2D LDX $2D ; thread data pointer C3/07EA: C2 20 REP #$20 C3/07EC: A5 55 LDA $55 ; set cursor x position C3/07EE: 9D CA 33 STA $33CA,X C3/07F1: A5 57 LDA $57 ; set cursor y position C3/07F3: 9D 4A 34 STA $344A,X C3/07F6: E2 20 SEP #$20 C3/07F8: 20 21 12 JSR $1221 ; update animation thread C3/07FB: 38 SEC C3/07FC: 60 RTS C3/07FD: 18 CLC C3/07FE: 60 RTS ; [ Flashing Cursor Thread ] C3/07FF: AA TAX C3/0800: 7C 03 08 JMP ($0803,X) C3/0803: .DW $080B, $082B, $080B, $0867 ; state $00, $02: init C3/080B: A6 2D LDX $2D ; thread data pointer C3/080D: A9 01 LDA #$01 C3/080F: 04 46 TSB $46 ; flashing cursor thread is active C3/0811: C2 20 REP #$20 C3/0813: A9 96 08 LDA #$0896 ; set animation data pointer to C3/0896 C3/0816: 9D C9 32 STA $32C9,X C3/0819: E2 20 SEP #$20 C3/081B: A9 C3 LDA #$C3 C3/081D: 9D CA 35 STA $35CA,X C3/0820: 20 06 12 JSR $1206 ; init animation thread C3/0823: A9 01 LDA #$01 C3/0825: 9D 4A 36 STA $364A,X ; sprite doesn't scroll with bg C3/0828: FE 49 36 INC $3649,X ; increment thread state ; fall through ; state $01: update (vertical scroll) C3/082B: A5 46 LDA $46 ; terminate thread if flashing cursor thread is not active C3/082D: 89 01 BIT #$01 C3/082F: F0 34 BEQ $0865 C3/0831: A6 2D LDX $2D ; thread data pointer C3/0833: C2 20 REP #$20 C3/0835: A5 41 LDA $41 C3/0837: 49 FF FF EOR #$FFFF ; C3/083A: 1A INC C3/083B: 18 CLC C3/083C: 7D 4A 34 ADC $344A,X C3/083F: 9D 4A 34 STA $344A,X ; set vertical offset C3/0842: E2 20 SEP #$20 C3/0844: A5 46 LDA $46 C3/0846: 29 C0 AND #$C0 C3/0848: F0 16 BEQ $0860 C3/084A: A5 28 LDA $28 ; $E1 = current selection C3/084C: 85 E1 STA $E1 C3/084E: 1A INC C3/084F: 85 E0 STA $E0 ; $E0 = current selection + 1 C3/0851: A5 4A LDA $4A ; A = page scroll position + 9 (page must be 10 lines for this to work) C3/0853: 18 CLC C3/0854: 69 09 ADC #$09 C3/0856: C5 E1 CMP $E1 C3/0858: 90 09 BCC $0863 ; return if flashing cursor is off the page to the bottom C3/085A: A5 4A LDA $4A C3/085C: C5 E0 CMP $E0 C3/085E: B0 03 BCS $0863 ; return if flashing cursor is off the page to the top C3/0860: 20 21 12 JSR $1221 ; update animation thread C3/0863: 38 SEC C3/0864: 60 RTS C3/0865: 18 CLC C3/0866: 60 RTS ; state $03: update (horizontal scroll) C3/0867: A5 46 LDA $46 ; terminate thread if flashing cursor thread is not active C3/0869: 89 01 BIT #$01 C3/086B: F0 F8 BEQ $0865 C3/086D: A6 2D LDX $2D ; thread data pointer C3/086F: C2 20 REP #$20 C3/0871: A5 97 LDA $97 C3/0873: 49 FF FF EOR #$FFFF ; C3/0876: 1A INC C3/0877: 18 CLC C3/0878: 7D CA 33 ADC $33CA,X C3/087B: 9D CA 33 STA $33CA,X ; set horizontal offset C3/087E: E2 20 SEP #$20 C3/0880: BC CA 33 LDY $33CA,X ; return if offscreen to the right C3/0883: C0 00 01 CPY #$0100 C3/0886: B0 03 BCS $088B C3/0888: 20 21 12 JSR $1221 ; update animation thread C3/088B: 38 SEC C3/088C: 60 RTS ; animation data (cursor) C3/088D: .DW $0890 \ .DB $FE ; sprite data (cursor) C3/0890: .DB $01 C3/0891: .DB $80, $00 \ .DW $3E00 ; sprite data (flashing cursor) C3/0895: .DB $00 ; animation data (flashing cursor) C3/0896: .DW $0890 \ .DB $02 C3/0899: .DW $0895 \ .DB $02 C3/089C: .DW $0890 \ .DB $FF ; [ Create Multi Cursor ] C3/089F: 7B TDC C3/08A0: AA TAX C3/08A1: B5 85 LDA $85,X ; cursor position for character slot 1 C3/08A3: F0 24 BEQ $08C9 ; branch if slot is empty C3/08A5: DA PHX C3/08A6: A9 01 LDA #$01 C3/08A8: A0 D1 08 LDY #$08D1 ; multi cursor thread C3/08AB: 20 73 11 JSR $1173 ; create thread C3/08AE: 9B TXY C3/08AF: FA PLX C3/08B0: A9 7E LDA #$7E C3/08B2: 48 PHA C3/08B3: AB PLB C3/08B4: B5 85 LDA $85,X ; set cursor position C3/08B6: 99 CA 33 STA $33CA,Y C3/08B9: B5 86 LDA $86,X C3/08BB: 99 4A 34 STA $344A,Y C3/08BE: 7B TDC C3/08BF: 99 CB 33 STA $33CB,Y ; clear high byte of x and y position C3/08C2: 99 4B 34 STA $344B,Y C3/08C5: A9 00 LDA #$00 C3/08C7: 48 PHA C3/08C8: AB PLB C3/08C9: E8 INX ; next character slot C3/08CA: E8 INX C3/08CB: E0 08 00 CPX #$0008 C3/08CE: D0 D1 BNE $08A1 C3/08D0: 60 RTS ; [ Multi Cursor Thread ] C3/08D1: AA TAX C3/08D2: 7C D5 08 JMP ($08D5,X) C3/08D5: .DW $08D9, $08F9 ; state 0: init C3/08D9: A6 2D LDX $2D C3/08DB: A9 08 LDA #$08 ; activate multi cursor C3/08DD: 04 46 TSB $46 C3/08DF: C2 20 REP #$20 C3/08E1: A9 96 08 LDA #$0896 ; set pointer to animation data to C3/0896 C3/08E4: 9D C9 32 STA $32C9,X C3/08E7: E2 20 SEP #$20 C3/08E9: A9 C3 LDA #$C3 C3/08EB: 9D CA 35 STA $35CA,X C3/08EE: 20 06 12 JSR $1206 ; init animation thread C3/08F1: FE 49 36 INC $3649,X ; increment thread state C3/08F4: A9 01 LDA #$01 C3/08F6: 9D 4A 36 STA $364A,X ; sprite doesn't scroll with bg ; state 1: update C3/08F9: A5 46 LDA $46 ; terminate if multi cursor is not active C3/08FB: 89 08 BIT #$08 C3/08FD: F0 07 BEQ $0906 C3/08FF: A6 2D LDX $2D C3/0901: 20 21 12 JSR $1221 ; update animation thread C3/0904: 38 SEC C3/0905: 60 RTS C3/0906: 18 CLC C3/0907: 60 RTS ; [ Update Top/Bottom Page Scroll Flags ] C3/0908: A9 C0 LDA #$C0 C3/090A: 04 46 TSB $46 C3/090C: A5 4A LDA $4A ; branch if not at page 0 C3/090E: D0 04 BNE $0914 C3/0910: A9 40 LDA #$40 ; page can't scroll up C3/0912: 14 46 TRB $46 C3/0914: A5 4A LDA $4A ; branch if not at max page scroll position C3/0916: C5 5C CMP $5C C3/0918: D0 04 BNE $091E C3/091A: A9 80 LDA #$80 ; page can't scroll down C3/091C: 14 46 TRB $46 C3/091E: 60 RTS ; [ Init Scroll Indicator Thread (item/skills list) ] C3/091F: A9 03 LDA #$03 ; priority 3 C3/0921: A0 47 09 LDY #$0947 C3/0924: 20 73 11 JSR $1173 ; create thread C3/0927: C2 20 REP #$20 C3/0929: A9 E8 00 LDA #$00E8 ; x offset C3/092C: 9F CA 33 7E STA $7E33CA,X C3/0930: E2 20 SEP #$20 C3/0932: 60 RTS ; [ Init Scroll Indicator Thread (equip/relic item list) ] C3/0933: A9 03 LDA #$03 ; priority 3 C3/0935: A0 47 09 LDY #$0947 C3/0938: 20 73 11 JSR $1173 ; create thread C3/093B: C2 20 REP #$20 C3/093D: A9 78 00 LDA #$0078 ; x offset C3/0940: 9F CA 33 7E STA $7E33CA,X C3/0944: E2 20 SEP #$20 C3/0946: 60 RTS ; [ Scroll Indicator Thread ] C3/0947: AA TAX C3/0948: 7C 4B 09 JMP ($094B,X) C3/094B: .DW $094F, $096A ; state $00: init C3/094F: A6 2D LDX $2D C3/0951: C2 20 REP #$20 C3/0953: A9 E3 09 LDA #$09E3 ; set pointer to animation data to C3/09E3 C3/0956: 9D C9 32 STA $32C9,X C3/0959: E2 20 SEP #$20 C3/095B: A9 C3 LDA #$C3 C3/095D: 9D CA 35 STA $35CA,X C3/0960: FE 49 36 INC $3649,X ; increment thread state C3/0963: 20 06 12 JSR $1206 ; init animation thread C3/0966: A9 C0 LDA #$C0 C3/0968: 04 46 TSB $46 ; enable scrolling up and down ; fall through ; state $01: update C3/096A: A5 46 LDA $46 ; scroll page flags C3/096C: 29 C0 AND #$C0 C3/096E: F0 69 BEQ $09D9 ; terminate thread if page can't scroll up or down C3/0970: A6 2D LDX $2D ; thread data pointer C3/0972: 20 08 09 JSR $0908 ; update top/bottom scroll page flags ($46) C3/0975: AF 12 42 00 LDA $004212 ; wait for horizontal blank C3/0979: 29 40 AND #$40 C3/097B: F0 F8 BEQ $0975 C3/097D: BD 4A 35 LDA $354A,X ; C3/0980: 8F 1B 21 00 STA $00211B C3/0984: BD 4B 35 LDA $354B,X C3/0987: 8F 1B 21 00 STA $00211B C3/098B: A5 4A LDA $4A ; page scroll position C3/098D: 8F 1C 21 00 STA $00211C C3/0991: 8F 1C 21 00 STA $00211C C3/0995: A5 4A LDA $4A C3/0997: 30 11 BMI $09AA C3/0999: 7B TDC C3/099A: AF 35 21 00 LDA $002135 C3/099E: C2 21 REP #$21 C3/09A0: 7D CA 34 ADC $34CA,X C3/09A3: 9D 4A 34 STA $344A,X ; set vertical offset C3/09A6: E2 20 SEP #$20 C3/09A8: 80 13 BRA $09BD C3/09AA: 7B TDC C3/09AB: AF 35 21 00 LDA $002135 C3/09AF: C2 21 REP #$21 C3/09B1: 69 70 00 ADC #$0070 C3/09B4: 18 CLC C3/09B5: 7D CA 34 ADC $34CA,X C3/09B8: 9D 4A 34 STA $344A,X ; set vertical offset C3/09BB: E2 20 SEP #$20 C3/09BD: 7B TDC C3/09BE: A5 46 LDA $46 ; scroll page flags C3/09C0: 29 C0 AND #$C0 C3/09C2: 4A LSR C3/09C3: 4A LSR C3/09C4: 4A LSR C3/09C5: 4A LSR C3/09C6: 4A LSR C3/09C7: 9B TXY C3/09C8: AA TAX C3/09C9: C2 20 REP #$20 C3/09CB: BF DB 09 C3 LDA $C309DB,X ; set pointer to animation data C3/09CF: 99 C9 32 STA $32C9,Y C3/09D2: E2 20 SEP #$20 C3/09D4: 20 21 12 JSR $1221 ; update animation thread C3/09D7: 38 SEC C3/09D8: 60 RTS C3/09D9: 18 CLC C3/09DA: 60 RTS ; pointers to animation data C3/09DB: .DW $09E3, $09EC, $09F5, $09E3 ; can scroll both up and down C3/09E3: .DW $09FE \ .DB $10 .DW $0A07 \ .DB $10 .DW $09FE \ .DB $FF ; can scroll up only C3/09EC: .DW $09FE \ .DB $10 .DW $0A10 \ .DB $10 .DW $09FE \ .DB $FF ; can scroll down only C3/09F5: .DW $09FE \ .DB $10 .DW $0A19 \ .DB $10 .DW $09FE \ .DB $FF ; sprite data C3/09FE: .DB $02 .DB $00, $00 \ .DW $3E02 .DB $00, $08 \ .DW $BE02 C3/0A07: .DB $02 .DB $00, $00 \ .DW $3E12 .DB $00, $08 \ .DW $BE12 C3/0A10: .DB $02 .DB $00, $00 \ .DW $3E12 .DB $00, $08 \ .DW $BE02 C3/0A19: .DB $02 .DB $00, $00 \ .DW $3E02 .DB $00, $08 \ .DW $BE12 ; [ Create Portrait Thread (slot 1) ] C3/0A22: A9 03 LDA #$03 C3/0A24: A0 12 0B LDY #$0B12 C3/0A27: 20 73 11 JSR $1173 ; create thread C3/0A2A: 8A TXA C3/0A2B: 85 60 STA $60 C3/0A2D: 8B PHB C3/0A2E: A9 7E LDA #$7E C3/0A30: 48 PHA C3/0A31: AB PLB C3/0A32: A4 00 LDY $00 C3/0A34: 20 F1 0A JSR $0AF1 C3/0A37: A4 00 LDY $00 C3/0A39: 20 CC 0A JSR $0ACC C3/0A3C: C2 20 REP #$20 C3/0A3E: A9 15 00 LDA #$0015 C3/0A41: 9D 4A 34 STA $344A,X C3/0A44: E2 20 SEP #$20 C3/0A46: 20 06 12 JSR $1206 ; init animation thread C3/0A49: AB PLB C3/0A4A: 60 RTS ; [ Create Portrait Thread (slot 2) ] C3/0A4B: A9 03 LDA #$03 C3/0A4D: A0 12 0B LDY #$0B12 C3/0A50: 20 73 11 JSR $1173 ; create thread C3/0A53: 8A TXA C3/0A54: 85 61 STA $61 C3/0A56: 8B PHB C3/0A57: A9 7E LDA #$7E C3/0A59: 48 PHA C3/0A5A: AB PLB C3/0A5B: A0 01 00 LDY #$0001 C3/0A5E: 20 F1 0A JSR $0AF1 C3/0A61: A0 01 00 LDY #$0001 C3/0A64: 20 CC 0A JSR $0ACC C3/0A67: C2 20 REP #$20 C3/0A69: A9 45 00 LDA #$0045 C3/0A6C: 9D 4A 34 STA $344A,X C3/0A6F: E2 20 SEP #$20 C3/0A71: 20 06 12 JSR $1206 ; init animation thread C3/0A74: AB PLB C3/0A75: 60 RTS ; [ Create Portrait Thread (slot 3) ] C3/0A76: A9 03 LDA #$03 C3/0A78: A0 12 0B LDY #$0B12 C3/0A7B: 20 73 11 JSR $1173 ; create thread C3/0A7E: 8A TXA C3/0A7F: 85 62 STA $62 C3/0A81: 8B PHB C3/0A82: A9 7E LDA #$7E C3/0A84: 48 PHA C3/0A85: AB PLB C3/0A86: A0 02 00 LDY #$0002 C3/0A89: 20 F1 0A JSR $0AF1 C3/0A8C: A0 02 00 LDY #$0002 C3/0A8F: 20 CC 0A JSR $0ACC C3/0A92: C2 20 REP #$20 C3/0A94: A9 75 00 LDA #$0075 C3/0A97: 9D 4A 34 STA $344A,X C3/0A9A: E2 20 SEP #$20 C3/0A9C: 20 06 12 JSR $1206 ; init animation thread C3/0A9F: AB PLB C3/0AA0: 60 RTS ; [ Create Portrait Thread (slot 4) ] C3/0AA1: A9 03 LDA #$03 C3/0AA3: A0 12 0B LDY #$0B12 C3/0AA6: 20 73 11 JSR $1173 ; create thread C3/0AA9: 8A TXA C3/0AAA: 85 63 STA $63 C3/0AAC: 8B PHB C3/0AAD: A9 7E LDA #$7E C3/0AAF: 48 PHA C3/0AB0: AB PLB C3/0AB1: A0 03 00 LDY #$0003 C3/0AB4: 20 F1 0A JSR $0AF1 C3/0AB7: A0 03 00 LDY #$0003 C3/0ABA: 20 CC 0A JSR $0ACC C3/0ABD: C2 20 REP #$20 C3/0ABF: A9 A5 00 LDA #$00A5 C3/0AC2: 9D 4A 34 STA $344A,X C3/0AC5: E2 20 SEP #$20 C3/0AC7: 20 06 12 JSR $1206 ; init animation thread C3/0ACA: AB PLB C3/0ACB: 60 RTS ; [ Init Portrait Thread Animation Data Pointer ] ; +Y = character slot C3/0ACC: DA PHX C3/0ACD: DA PHX C3/0ACE: BB TYX C3/0ACF: B5 75 LDA $75,X C3/0AD1: 29 18 AND #$18 C3/0AD3: 4A LSR C3/0AD4: 4A LSR C3/0AD5: AA TAX C3/0AD6: C2 20 REP #$20 C3/0AD8: BF E9 0A C3 LDA $C30AE9,X C3/0ADC: 7A PLY C3/0ADD: 99 C9 32 STA $32C9,Y ; set pointer to animation data C3/0AE0: E2 20 SEP #$20 C3/0AE2: A9 C3 LDA #$C3 C3/0AE4: 99 CA 35 STA $35CA,Y C3/0AE7: FA PLX C3/0AE8: 60 RTS ; pointers to portrait animation data C3/0AE9: .DW $0B8C, $0BC4, $0BFC, $0C34 ; [ Init Portrait Thread X Offset ] ; +Y = character slot C3/0AF1: DA PHX C3/0AF2: BB TYX C3/0AF3: A9 02 LDA #$02 ; C3/0AF5: 24 45 BIT $45 C3/0AF7: D0 06 BNE $0AFF C3/0AF9: B5 75 LDA $75,X ; character row C3/0AFB: 89 20 BIT #$20 C3/0AFD: F0 07 BEQ $0B06 ; branch if front row C3/0AFF: C2 20 REP #$20 C3/0B01: A9 1A 00 LDA #$001A ; x offset = 26 C3/0B04: 80 05 BRA $0B0B C3/0B06: C2 20 REP #$20 C3/0B08: A9 0E 00 LDA #$000E ; x offset = 14 C3/0B0B: FA PLX C3/0B0C: 9D CA 33 STA $33CA,X C3/0B0F: E2 20 SEP #$20 C3/0B11: 60 RTS ; [ Portrait Thread ] C3/0B12: AA TAX C3/0B13: 7C 16 0B JMP ($0B16,X) C3/0B16: .DW $0B20, $0B2A, $0B38, $0B4C, $0B5E ; state $00: init C3/0B20: A6 2D LDX $2D C3/0B22: FE 49 36 INC $3649,X C3/0B25: A9 01 LDA #$01 C3/0B27: 9D 4A 36 STA $364A,X ; fall through ; state $01: update C3/0B2A: A6 2D LDX $2D C3/0B2C: BD C9 35 LDA $35C9,X C3/0B2F: 30 05 BMI $0B36 C3/0B31: 20 21 12 JSR $1221 ; update animation thread C3/0B34: 38 SEC C3/0B35: 60 RTS C3/0B36: 18 CLC C3/0B37: 60 RTS ; state $02: slide to the right C3/0B38: A6 2D LDX $2D C3/0B3A: C2 20 REP #$20 C3/0B3C: A9 01 00 LDA #$0001 C3/0B3F: 9D CA 34 STA $34CA,X C3/0B42: A9 0C 00 LDA #$000C C3/0B45: 9D 49 33 STA $3349,X C3/0B48: E2 20 SEP #$20 C3/0B4A: 80 12 BRA $0B5E ; state $03: slide to the left C3/0B4C: A6 2D LDX $2D C3/0B4E: C2 20 REP #$20 C3/0B50: A9 FF FF LDA #$FFFF C3/0B53: 9D CA 34 STA $34CA,X C3/0B56: A9 0C 00 LDA #$000C C3/0B59: 9D 49 33 STA $3349,X C3/0B5C: E2 20 SEP #$20 ; fall through ; state $04: wait for slide C3/0B5E: A6 2D LDX $2D C3/0B60: A9 04 LDA #$04 ; state on state 4 C3/0B62: 9D 49 36 STA $3649,X C3/0B65: C2 20 REP #$20 C3/0B67: BD 49 33 LDA $3349,X ; branch if slide complete C3/0B6A: F0 14 BEQ $0B80 C3/0B6C: BD CA 34 LDA $34CA,X ; increase horizontal position C3/0B6F: 18 CLC C3/0B70: 7D CA 33 ADC $33CA,X C3/0B73: 9D CA 33 STA $33CA,X C3/0B76: DE 49 33 DEC $3349,X ; decrement movement counter C3/0B79: E2 20 SEP #$20 C3/0B7B: 20 21 12 JSR $1221 ; update animation thread C3/0B7E: 38 SEC C3/0B7F: 60 RTS ; slide complete C3/0B80: E2 20 SEP #$20 C3/0B82: A9 01 LDA #$01 ; back to state 1 C3/0B84: 9D 49 36 STA $3649,X C3/0B87: 20 21 12 JSR $1221 ; update animation thread C3/0B8A: 38 SEC C3/0B8B: 60 RTS ; portrait slot 1 animation data C3/0B8C: .DW $0B8F \ .DB $FE ; portrait slot 1 sprite data C3/0B8F: .DB $0D C3/0B90: .DB $80, $00, $60, $20 C3/0B94: .DB $90, $00, $62, $20 C3/0B98: .DB $80, $10, $64, $20 C3/0B9C: .DB $90, $10, $66, $20 C3/0BA0: .DB $20, $00, $68, $20 C3/0BA4: .DB $20, $08, $69, $20 C3/0BA8: .DB $20, $10, $6A, $20 C3/0BAC: .DB $20, $18, $6B, $20 C3/0BB0: .DB $20, $20, $6C, $20 C3/0BB4: .DB $00, $20, $6D, $20 C3/0BB8: .DB $08, $20, $6E, $20 C3/0BBC: .DB $10, $20, $6F, $20 C3/0BC0: .DB $18, $20, $78, $20 C3/0BC4: .DW $0BC7 \ .DB $FE C3/0BC7: .DB $0D C3/0BC8: .DB $80, $00, $80, $22 C3/0BCC: .DB $90, $00, $82, $22 C3/0BD0: .DB $80, $10, $84, $22 C3/0BD4: .DB $90, $10, $86, $22 C3/0BD8: .DB $20, $00, $88, $22 C3/0BDC: .DB $20, $08, $89, $22 C3/0BE0: .DB $20, $10, $8A, $22 C3/0BE4: .DB $20, $18, $8B, $22 C3/0BE8: .DB $20, $20, $8C, $22 C3/0BEC: .DB $00, $20, $8D, $22 C3/0BF0: .DB $08, $20, $8E, $22 C3/0BF4: .DB $10, $20, $8F, $22 C3/0BF8: .DB $18, $20, $98, $22 C3/0BFC: .DW $0BFF \ .DB $FE C3/0BFF: .DB $0D C3/0C00: .DB $80, $00, $A0, $24 C3/0C04: .DB $90, $00, $A2, $24 C3/0C08: .DB $80, $10, $A4, $24 C3/0C0C: .DB $90, $10, $A6, $24 C3/0C10: .DB $20, $00, $A8, $24 C3/0C14: .DB $20, $08, $A9, $24 C3/0C18: .DB $20, $10, $AA, $24 C3/0C1C: .DB $20, $18, $AB, $24 C3/0C20: .DB $20, $20, $AC, $24 C3/0C24: .DB $00, $20, $AD, $24 C3/0C28: .DB $08, $20, $AE, $24 C3/0C2C: .DB $10, $20, $AF, $24 C3/0C30: .DB $18, $20, $B8, $24 C3/0C34: .DW $0C37 \ .DB $FE C3/0C37: .DB $0D C3/0C38: .DB $80, $00, $C0, $26 C3/0C3C: .DB $90, $00, $C2, $26 C3/0C40: .DB $80, $10, $C4, $26 C3/0C44: .DB $90, $10, $C6, $26 C3/0C48: .DB $20, $00, $C8, $26 C3/0C4C: .DB $20, $08, $C9, $26 C3/0C50: .DB $20, $10, $CA, $26 C3/0C54: .DB $20, $18, $CB, $26 C3/0C58: .DB $20, $20, $CC, $26 C3/0C5C: .DB $00, $20, $CD, $26 C3/0C60: .DB $08, $20, $CE, $26 C3/0C64: .DB $10, $20, $CF, $26 C3/0C68: .DB $18, $20, $D8, $26 ; [ Draw HP/MP/LV Number Text ] ; +X = pointer to destination bg data addresses (+$C30000) ; pointer order is LV, current HP, max HP, current MP, max MP (2 bytes each, +$7E0000) C3/0C6C: 86 EF STX $EF ; set pointer to bg data address C3/0C6E: A9 C3 LDA #$C3 C3/0C70: 85 F1 STA $F1 C3/0C72: A6 67 LDX $67 ; pointer to character data C3/0C74: BD 08 00 LDA $0008,X ; character level C3/0C77: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/0C7A: C2 20 REP #$20 C3/0C7C: A7 EF LDA [$EF] ; get bg data address C3/0C7E: AA TAX C3/0C7F: E2 20 SEP #$20 C3/0C81: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/0C84: A6 67 LDX $67 C3/0C86: BD 0B 00 LDA $000B,X ; max hp C3/0C89: 85 F3 STA $F3 C3/0C8B: BD 0C 00 LDA $000C,X C3/0C8E: 85 F4 STA $F4 C3/0C90: 20 65 0D JSR $0D65 ; calculate max hp/mp w/ boost C3/0C93: 20 92 0D JSR $0D92 ; check max hp (9999) C3/0C96: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/0C99: A0 04 00 LDY #$0004 C3/0C9C: 20 21 0D JSR $0D21 ; draw hp/mp text C3/0C9F: A4 67 LDY $67 C3/0CA1: 20 9A 2B JSR $2B9A ; check current hp vs max C3/0CA4: B9 09 00 LDA $0009,Y ; current hp C3/0CA7: 85 F3 STA $F3 C3/0CA9: B9 0A 00 LDA $000A,Y C3/0CAC: 85 F4 STA $F4 C3/0CAE: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/0CB1: A0 02 00 LDY #$0002 C3/0CB4: 20 21 0D JSR $0D21 ; draw hp/mp text C3/0CB7: 20 2B 0D JSR $0D2B ; check if character has mp C3/0CBA: 90 33 BCC $0CEF C3/0CBC: A6 67 LDX $67 C3/0CBE: BD 0F 00 LDA $000F,X ; max mp C3/0CC1: 85 F3 STA $F3 C3/0CC3: BD 10 00 LDA $0010,X C3/0CC6: 85 F4 STA $F4 C3/0CC8: 20 65 0D JSR $0D65 ; calculate max hp/mp w/ boost C3/0CCB: 20 9F 0D JSR $0D9F ; check max mp (999) C3/0CCE: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/0CD1: A0 08 00 LDY #$0008 C3/0CD4: 20 21 0D JSR $0D21 ; draw hp/mp text C3/0CD7: A4 67 LDY $67 C3/0CD9: 20 BC 2B JSR $2BBC ; check current mp vs max C3/0CDC: B9 0D 00 LDA $000D,Y ; current mp C3/0CDF: 85 F3 STA $F3 C3/0CE1: B9 0E 00 LDA $000E,Y C3/0CE4: 85 F4 STA $F4 C3/0CE6: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/0CE9: A0 06 00 LDY #$0006 C3/0CEC: 4C 21 0D JMP $0D21 ; draw hp/mp text C3/0CEF: A2 8B 9E LDX #$9E8B C3/0CF2: 8E 81 21 STX $2181 C3/0CF5: C2 20 REP #$20 C3/0CF7: A0 06 00 LDY #$0006 C3/0CFA: B7 EF LDA [$EF],Y C3/0CFC: 38 SEC C3/0CFD: E9 06 00 SBC #$0006 C3/0D00: 8F 89 9E 7E STA $7E9E89 C3/0D04: E2 20 SEP #$20 C3/0D06: A2 0C 00 LDX #$000C C3/0D09: A9 FF LDA #$FF C3/0D0B: 8D 80 21 STA $2180 C3/0D0E: CA DEX C3/0D0F: D0 FA BNE $0D0B C3/0D11: 9C 80 21 STZ $2180 C3/0D14: A0 89 9E LDY #$9E89 C3/0D17: 84 E7 STY $E7 C3/0D19: A9 7E LDA #$7E C3/0D1B: 85 E9 STA $E9 C3/0D1D: 20 FF 02 JSR $02FF ; draw positioned text C3/0D20: 60 RTS ; [ Draw HP/MP Text ] C3/0D21: C2 20 REP #$20 C3/0D23: B7 EF LDA [$EF],Y C3/0D25: AA TAX C3/0D26: E2 20 SEP #$20 C3/0D28: 4C 90 04 JMP $0490 ; draw number text (4 digit) ; [ Check if Character Has MP ] ; carry set = has MP, carry cleared = no MP C3/0D2B: AD 69 1A LDA $1A69 ; set carry and return if the party has any espers C3/0D2E: 0D 6A 1A ORA $1A6A C3/0D31: 0D 6B 1A ORA $1A6B C3/0D34: 0D 6C 1A ORA $1A6C C3/0D37: D0 2A BNE $0D63 C3/0D39: A6 67 LDX $67 C3/0D3B: 7B TDC C3/0D3C: BD 00 00 LDA $0000,X ; set carry and return if the character is GOGO C3/0D3F: C9 0C CMP #$0C C3/0D41: F0 20 BEQ $0D63 C3/0D43: B0 1C BCS $0D61 ; clear carry and return if the character is higher than GOGO C3/0D45: 8D 02 42 STA $4202 C3/0D48: A9 36 LDA #$36 ; get pointer to character's spell list C3/0D4A: 8D 03 42 STA $4203 C3/0D4D: EA NOP C3/0D4E: EA NOP C3/0D4F: EA NOP C3/0D50: A0 36 00 LDY #$0036 C3/0D53: AE 16 42 LDX $4216 C3/0D56: BD 6E 1A LDA $1A6E,X ; check each spell C3/0D59: C9 FF CMP #$FF C3/0D5B: F0 06 BEQ $0D63 ; set carry and return if any spells are known C3/0D5D: E8 INX C3/0D5E: 88 DEY C3/0D5F: D0 F5 BNE $0D56 C3/0D61: 18 CLC ; clear carry (don't show MP) C3/0D62: 60 RTS C3/0D63: 38 SEC ; set carry (show MP) C3/0D64: 60 RTS ; [ Calculate Max HP/MP w/ Boost ] ; +$F3 = bbhhhhhh hhhhhhhh ; b: boost ; h: max hp/mp maxsize_get: C3/0D65: C2 20 REP #$20 C3/0D67: A5 F3 LDA $F3 C3/0D69: 29 FF 3F AND #$3FFF C3/0D6C: 85 E7 STA $E7 C3/0D6E: A5 F3 LDA $F3 C3/0D70: 29 00 C0 AND #$C000 C3/0D73: 18 CLC C3/0D74: 2A ROL C3/0D75: 2A ROL C3/0D76: 2A ROL C3/0D77: 2A ROL C3/0D78: AA TAX C3/0D79: A5 E7 LDA $E7 C3/0D7B: 7C 7E 0D JMP ($0D7E,X) ; hp/mp boost jump table C3/0D7E: .DW $0D86, $0D88, $0D89, $0D87 ; $00 = no boost C3/0D86: 7B TDC ; $03 = 12.5% boost C3/0D87: 4A LSR ; $01 = 25% boost C3/0D88: 4A LSR ; $02 = 50% boost C3/0D89: 4A LSR C3/0D8A: 18 CLC C3/0D8B: 65 E7 ADC $E7 C3/0D8D: 85 F3 STA $F3 C3/0D8F: E2 20 SEP #$20 C3/0D91: 60 RTS ; [ Check Max HP (9999) ] ; +$F3 = number to max out hpmax_chk: C3/0D92: A6 F3 LDX $F3 C3/0D94: E0 10 27 CPX #$2710 C3/0D97: 90 05 BCC $0D9E C3/0D99: A2 0F 27 LDX #$270F C3/0D9C: 86 F3 STX $F3 C3/0D9E: 60 RTS ; [ Check Max MP (999) ] ; +$F3 = number to max out mpmax_chk: C3/0D9F: A6 F3 LDX $F3 C3/0DA1: E0 E8 03 CPX #$03E8 C3/0DA4: 90 05 BCC $0DAB C3/0DA6: A2 E7 03 LDX #$03E7 C3/0DA9: 86 F3 STX $F3 C3/0DAB: 60 RTS ; [ Restore Saved Cursor Position (item list) ] C3/0DAC: AC 2F 02 LDY $022F C3/0DAF: 84 4F STY $4F C3/0DB1: A5 4F LDA $4F C3/0DB3: 85 4D STA $4D C3/0DB5: AD 31 02 LDA $0231 C3/0DB8: 80 64 BRA $0E1E ; [ Swap Two Characters' Saved Cursor Positions ] C3/0DBA: 7B TDC C3/0DBB: A5 4B LDA $4B C3/0DBD: 0A ASL C3/0DBE: AA TAX C3/0DBF: A5 28 LDA $28 C3/0DC1: 0A ASL C3/0DC2: A8 TAY C3/0DC3: C2 20 REP #$20 C3/0DC5: BD 36 02 LDA $0236,X ; saved skills cursor position C3/0DC8: 85 E7 STA $E7 C3/0DCA: B9 36 02 LDA $0236,Y C3/0DCD: 9D 36 02 STA $0236,X C3/0DD0: A5 E7 LDA $E7 C3/0DD2: 99 36 02 STA $0236,Y C3/0DD5: BD 3E 02 LDA $023E,X C3/0DD8: 85 E7 STA $E7 C3/0DDA: B9 3E 02 LDA $023E,Y C3/0DDD: 9D 3E 02 STA $023E,X C3/0DE0: A5 E7 LDA $E7 C3/0DE2: 99 3E 02 STA $023E,Y C3/0DE5: E2 20 SEP #$20 C3/0DE7: 7B TDC C3/0DE8: A5 4B LDA $4B C3/0DEA: AA TAX C3/0DEB: A5 28 LDA $28 C3/0DED: A8 TAY C3/0DEE: BD 46 02 LDA $0246,X C3/0DF1: 85 E0 STA $E0 C3/0DF3: B9 46 02 LDA $0246,Y C3/0DF6: 9D 46 02 STA $0246,X C3/0DF9: A5 E0 LDA $E0 C3/0DFB: 99 46 02 STA $0246,Y C3/0DFE: 60 RTS ; [ Restore Saved Cursor Position (skills) ] C3/0DFF: 7B TDC C3/0E00: A5 28 LDA $28 ; selected character slot C3/0E02: 0A ASL C3/0E03: AA TAX C3/0E04: BC 36 02 LDY $0236,X ; saved skills cursor position C3/0E07: 84 4D STY $4D C3/0E09: 60 RTS ; [ Restore Saved Cursor Position (magic) ] C3/0E0A: 7B TDC C3/0E0B: A5 28 LDA $28 C3/0E0D: 0A ASL C3/0E0E: AA TAX C3/0E0F: BC 3E 02 LDY $023E,X ; saved magic cursor position C3/0E12: 84 4F STY $4F C3/0E14: A5 4F LDA $4F C3/0E16: 85 4D STA $4D C3/0E18: A5 28 LDA $28 C3/0E1A: AA TAX C3/0E1B: BD 46 02 LDA $0246,X ; saved magic page scroll position C3/0E1E: 85 4A STA $4A C3/0E20: A5 50 LDA $50 C3/0E22: 38 SEC C3/0E23: E5 4A SBC $4A C3/0E25: 85 4E STA $4E C3/0E27: 60 RTS ; [ Copy BG1 Data to VRAM (top screens) ] C3/0E28: A0 00 00 LDY #$0000 C3/0E2B: 8C 16 21 STY $2116 C3/0E2E: A0 49 38 LDY #$3849 C3/0E31: 8C 02 43 STY $4302 C3/0E34: 80 52 BRA $0E88 ; [ Copy BG1 Data to VRAM (top left/bottom right) ] C3/0E36: A0 00 04 LDY #$0400 C3/0E39: 8C 16 21 STY $2116 C3/0E3C: A0 49 40 LDY #$4049 C3/0E3F: 8C 02 43 STY $4302 C3/0E42: 80 44 BRA $0E88 ; [ Copy BG1 Data to VRAM (bottom screens) ] C3/0E44: A0 00 08 LDY #$0800 C3/0E47: 8C 16 21 STY $2116 C3/0E4A: A0 49 48 LDY #$4849 C3/0E4D: 8C 02 43 STY $4302 C3/0E50: 80 36 BRA $0E88 ; [ Copy BG2 Data to VRAM (top screens) ] C3/0E52: A0 00 10 LDY #$1000 C3/0E55: 8C 16 21 STY $2116 C3/0E58: A0 49 58 LDY #$5849 C3/0E5B: 8C 02 43 STY $4302 C3/0E5E: 80 28 BRA $0E88 ; [ Copy BG2 Data to VRAM (bottom screens) ] C3/0E60: A0 00 18 LDY #$1800 C3/0E63: 8C 16 21 STY $2116 C3/0E66: A0 49 68 LDY #$6849 C3/0E69: 8C 02 43 STY $4302 C3/0E6C: 80 1A BRA $0E88 ; [ Copy BG3 Data to VRAM (top screens) ] C3/0E6E: A0 00 40 LDY #$4000 C3/0E71: 8C 16 21 STY $2116 C3/0E74: A0 49 78 LDY #$7849 C3/0E77: 8C 02 43 STY $4302 C3/0E7A: 80 0C BRA $0E88 ; [ Copy BG3 Data to VRAM (bottom screens) ] C3/0E7C: A0 00 48 LDY #$4800 C3/0E7F: 8C 16 21 STY $2116 C3/0E82: A0 49 88 LDY #$8849 C3/0E85: 8C 02 43 STY $4302 ; fall through ; copy bg data to VRAM C3/0E88: A9 01 LDA #$01 ; two address - low, high C3/0E8A: 8D 00 43 STA $4300 C3/0E8D: A9 18 LDA #$18 C3/0E8F: 8D 01 43 STA $4301 C3/0E92: A9 7E LDA #$7E C3/0E94: 8D 04 43 STA $4304 C3/0E97: A0 00 10 LDY #$1000 ; DMA size (two screens) C3/0E9A: 8C 05 43 STY $4305 C3/0E9D: A9 01 LDA #$01 C3/0E9F: 8D 0B 42 STA $420B C3/0EA2: 60 RTS ; [ Play Cursor Sound Effect (move) ] C3/0EA3: A5 AE LDA $AE ; return if sound effect is already being played this frame C3/0EA5: C9 21 CMP #$21 C3/0EA7: F0 08 BEQ $0EB1 ; fall through ; [ Play Cursor Sound Effect (cancel) ] C3/0EA9: A9 21 LDA #$21 C3/0EAB: 85 AE STA $AE C3/0EAD: 8F 40 21 00 STA $002140 C3/0EB1: 60 RTS ; [ Play Cursor Sound Effect (select) ] C3/0EB2: A9 20 LDA #$20 C3/0EB4: 8F 40 21 00 STA $002140 C3/0EB8: 60 RTS ; [ Play Success Sound Effect ] C3/0EB9: A9 23 LDA #$23 C3/0EBB: 8F 40 21 00 STA $002140 C3/0EBF: 60 RTS ; [ Play Invalid Sound Effect ] C3/0EC0: A9 22 LDA #$22 C3/0EC2: 8F 40 21 00 STA $002140 C3/0EC6: 60 RTS ; [ Play Delete/Erase Sound Effect ] C3/0EC7: A9 24 LDA #$24 C3/0EC9: 8F 40 21 00 STA $002140 C3/0ECD: 60 RTS ; [ Play Cash Register Sound Effect ] C3/0ECE: A9 BF LDA #$BF C3/0ED0: 8F 01 13 00 STA $001301 C3/0ED4: A9 18 LDA #$18 C3/0ED6: 8F 00 13 00 STA $001300 C3/0EDA: A9 80 LDA #$80 C3/0EDC: 8F 02 13 00 STA $001302 C3/0EE0: 22 04 00 C5 JSL $C50004 ; spc command C3/0EE4: 60 RTS ; [ Play Cure/Item Sound Effect ] C3/0EE5: A9 C5 LDA #$C5 C3/0EE7: 80 E7 BRA $0ED0 ; [ Init DMA 1 (bg1 data, left & right screens) ] C3/0EE9: A0 00 00 LDY #$0000 C3/0EEC: 84 14 STY $14 C3/0EEE: A0 49 38 LDY #$3849 C3/0EF1: 84 16 STY $16 C3/0EF3: A9 7E LDA #$7E C3/0EF5: 85 18 STA $18 C3/0EF7: A0 00 10 LDY #$1000 C3/0EFA: 84 12 STY $12 C3/0EFC: 60 RTS ; [ Init DMA 1 (bg1 data, left screen) ] C3/0EFD: A0 00 00 LDY #$0000 C3/0F00: 84 14 STY $14 C3/0F02: A0 49 38 LDY #$3849 C3/0F05: 84 16 STY $16 C3/0F07: A9 7E LDA #$7E C3/0F09: 85 18 STA $18 C3/0F0B: A0 00 08 LDY #$0800 C3/0F0E: 84 12 STY $12 C3/0F10: 60 RTS ; [ Init DMA 1 (bg1 data, right screen) ] C3/0F11: A0 00 04 LDY #$0400 C3/0F14: 84 14 STY $14 C3/0F16: A0 49 40 LDY #$4049 C3/0F19: 84 16 STY $16 C3/0F1B: A9 7E LDA #$7E C3/0F1D: 85 18 STA $18 C3/0F1F: A0 00 08 LDY #$0800 C3/0F22: 84 12 STY $12 C3/0F24: 60 RTS ; [ Init DMA 1 (bg3 data, left & right screens) ] C3/0F25: A0 00 40 LDY #$4000 C3/0F28: 84 14 STY $14 C3/0F2A: A0 49 78 LDY #$7849 C3/0F2D: 84 16 STY $16 C3/0F2F: A9 7E LDA #$7E C3/0F31: 85 18 STA $18 C3/0F33: A0 00 10 LDY #$1000 C3/0F36: 84 12 STY $12 C3/0F38: 60 RTS ; [ Init DMA 1 (bg3 data, left screen) ] C3/0F39: A0 00 40 LDY #$4000 C3/0F3C: 84 14 STY $14 C3/0F3E: A0 49 78 LDY #$7849 C3/0F41: 84 16 STY $16 C3/0F43: A9 7E LDA #$7E C3/0F45: 85 18 STA $18 C3/0F47: A0 00 08 LDY #$0800 C3/0F4A: 84 12 STY $12 C3/0F4C: 60 RTS ; [ Init DMA 1 (bg3 data, right screen) ] C3/0F4D: A0 00 44 LDY #$4400 C3/0F50: 84 14 STY $14 C3/0F52: A0 49 80 LDY #$8049 C3/0F55: 84 16 STY $16 C3/0F57: A9 7E LDA #$7E C3/0F59: 85 18 STA $18 C3/0F5B: A0 00 08 LDY #$0800 C3/0F5E: 84 12 STY $12 C3/0F60: 60 RTS ; [ Init DMA 2 (bg3 data, left screen) ] C3/0F61: A0 00 40 LDY #$4000 C3/0F64: 84 1B STY $1B C3/0F66: A0 49 78 LDY #$7849 C3/0F69: 84 1D STY $1D C3/0F6B: A9 7E LDA #$7E C3/0F6D: 85 1F STA $1F C3/0F6F: A0 00 08 LDY #$0800 C3/0F72: 84 19 STY $19 C3/0F74: 60 RTS ; [ Init DMA 2 (bg3 data, right screen) ] C3/0F75: A0 00 44 LDY #$4400 C3/0F78: 84 1B STY $1B C3/0F7A: A0 49 80 LDY #$8049 C3/0F7D: 84 1D STY $1D C3/0F7F: A9 7E LDA #$7E C3/0F81: 85 1F STA $1F C3/0F83: A0 00 08 LDY #$0800 C3/0F86: 84 19 STY $19 C3/0F88: 60 RTS ; [ Disable DMA 2 ] C3/0F89: 64 1B STZ $1B C3/0F8B: 64 1C STZ $1C C3/0F8D: 60 RTS ; [ Load Color Palette ] ; A = source bank ; +X = source address ; +Y = destination address (+$7E0000) C3/0F8E: 85 ED STA $ED C3/0F90: 84 E7 STY $E7 C3/0F92: 86 EB STX $EB C3/0F94: A9 7E LDA #$7E C3/0F96: 85 E9 STA $E9 C3/0F98: A4 00 LDY $00 C3/0F9A: C2 20 REP #$20 C3/0F9C: B7 EB LDA [$EB],Y C3/0F9E: 97 E7 STA [$E7],Y C3/0FA0: C8 INY C3/0FA1: C8 INY C3/0FA2: C0 20 00 CPY #$0020 C3/0FA5: D0 F5 BNE $0F9C C3/0FA7: E2 20 SEP #$20 C3/0FA9: 60 RTS ; [ Create Fade In/Out Palette Thread ] ; A = speed (frames per update) ; +X = source address ; +Y = destination address (+$7E0000) ; $ED = source bank C3/0FAA: 48 PHA C3/0FAB: 84 E7 STY $E7 C3/0FAD: 86 EB STX $EB C3/0FAF: A9 7E LDA #$7E C3/0FB1: 85 E9 STA $E9 C3/0FB3: A9 00 LDA #$00 C3/0FB5: A0 DD 0F LDY #$0FDD C3/0FB8: 20 73 11 JSR $1173 ; create thread C3/0FBB: 68 PLA C3/0FBC: 9F CA 37 7E STA $7E37CA,X C3/0FC0: A5 E9 LDA $E9 C3/0FC2: 9F C9 36 7E STA $7E36C9,X C3/0FC6: A5 ED LDA $ED C3/0FC8: 9F CA 36 7E STA $7E36CA,X C3/0FCC: C2 20 REP #$20 C3/0FCE: A5 E7 LDA $E7 C3/0FD0: 9F C9 33 7E STA $7E33C9,X C3/0FD4: A5 EB LDA $EB C3/0FD6: 9F 49 34 7E STA $7E3449,X C3/0FDA: E2 20 SEP #$20 C3/0FDC: 60 RTS ; [ Fade In/Out Palette Thread ] ; +$3349 = color counter ; +$33C9 = destination address (+$7E0000) ; +$3449 = source address ; $35C9 = frame counter ; $36C9 = destination bank (always $7E) ; $36CA = source bank ; $37CA = speed (frames per update) C3/0FDD: AA TAX C3/0FDE: 7C E1 0F JMP ($0FE1,X) C3/0FE1: .DW $0FE5, $0FF6 ; state 0: init C3/0FE5: A6 2D LDX $2D C3/0FE7: A9 1F LDA #$1F C3/0FE9: 9D 49 33 STA $3349,X ; set color counter to 31 C3/0FEC: A5 00 LDA $00 C3/0FEE: 9D 4A 33 STA $334A,X C3/0FF1: FE 49 36 INC $3649,X ; increment thread state C3/0FF4: 38 SEC C3/0FF5: 60 RTS ; state 1: update C3/0FF6: A6 2D LDX $2D C3/0FF8: BD C9 35 LDA $35C9,X ; branch if waiting for frame counter C3/0FFB: D0 35 BNE $1032 C3/0FFD: BD CA 37 LDA $37CA,X ; set frame counter C3/1000: 9D C9 35 STA $35C9,X C3/1003: BD C9 36 LDA $36C9,X ; +$E0 = destination address C3/1006: 85 E2 STA $E2 C3/1008: BD CA 36 LDA $36CA,X ; +$E3 = source address C3/100B: 85 E5 STA $E5 C3/100D: C2 20 REP #$20 C3/100F: BD C9 33 LDA $33C9,X C3/1012: 85 E0 STA $E0 C3/1014: BD 49 34 LDA $3449,X C3/1017: 85 E3 STA $E3 C3/1019: BD 49 33 LDA $3349,X ; $F1 = color counter value C3/101C: 85 F1 STA $F1 C3/101E: 20 37 10 JSR $1037 ; update palette C3/1021: E2 20 SEP #$20 C3/1023: AE 2D 00 LDX $002D ; thread data pointer C3/1026: BD 49 33 LDA $3349,X ; decrement color counter C3/1029: F0 05 BEQ $1030 C3/102B: DE 49 33 DEC $3349,X C3/102E: D0 02 BNE $1032 ; terminate thread when color counter reaches zero C3/1030: 18 CLC C3/1031: 60 RTS C3/1032: DE C9 35 DEC $35C9,X ; decrement frame counter C3/1035: 38 SEC C3/1036: 60 RTS ; [ Update Palette ] C3/1037: A2 10 00 LDX #$0010 ; 16 colors C3/103A: A4 00 LDY $00 C3/103C: B7 E0 LDA [$E0],Y ; $E7 = current color value (destination) C3/103E: 85 E7 STA $E7 C3/1040: B7 E3 LDA [$E3],Y ; $E9 = target color value (source) C3/1042: 85 E9 STA $E9 C3/1044: 20 51 10 JSR $1051 ; update color C3/1047: A5 E7 LDA $E7 C3/1049: 97 E0 STA [$E0],Y ; set current color value C3/104B: C8 INY ; next color C3/104C: C8 INY C3/104D: CA DEX C3/104E: D0 EC BNE $103C C3/1050: 60 RTS ; [ Update Color ] C3/1051: A5 E7 LDA $E7 ; current color C3/1053: 29 1F 00 AND #$001F ; isolate red C3/1056: 85 EB STA $EB C3/1058: A5 E9 LDA $E9 ; target color C3/105A: 29 1F 00 AND #$001F ; isolate red C3/105D: 38 SEC C3/105E: E5 EB SBC $EB ; subtract current red C3/1060: F0 0C BEQ $106E ; branch if zero C3/1062: 90 08 BCC $106C ; branch if negative C3/1064: C5 F1 CMP $F1 C3/1066: 90 06 BCC $106E ; branch if less than color counter C3/1068: E6 EB INC $EB ; increment current red C3/106A: 80 02 BRA $106E C3/106C: C6 EB DEC $EB ; decrement current red C3/106E: A5 E7 LDA $E7 C3/1070: 29 E0 03 AND #$03E0 ; isolate green C3/1073: 85 ED STA $ED C3/1075: A5 E9 LDA $E9 C3/1077: 29 E0 03 AND #$03E0 C3/107A: 38 SEC C3/107B: E5 ED SBC $ED C3/107D: F0 1C BEQ $109B C3/107F: 90 12 BCC $1093 C3/1081: 0A ASL C3/1082: 0A ASL C3/1083: 0A ASL C3/1084: EB XBA C3/1085: C5 F1 CMP $F1 C3/1087: 90 12 BCC $109B C3/1089: 18 CLC C3/108A: A5 ED LDA $ED C3/108C: 69 20 00 ADC #$0020 C3/108F: 85 ED STA $ED C3/1091: 80 08 BRA $109B C3/1093: A5 ED LDA $ED C3/1095: 38 SEC C3/1096: E9 20 00 SBC #$0020 C3/1099: 85 ED STA $ED C3/109B: A5 E7 LDA $E7 C3/109D: 29 00 7C AND #$7C00 ; isolate blue C3/10A0: 85 EF STA $EF C3/10A2: A5 E9 LDA $E9 C3/10A4: 29 00 7C AND #$7C00 C3/10A7: 38 SEC C3/10A8: E5 EF SBC $EF C3/10AA: F0 1F BEQ $10CB C3/10AC: 90 15 BCC $10C3 C3/10AE: E2 20 SEP #$20 C3/10B0: EB XBA C3/10B1: 4A LSR C3/10B2: 4A LSR C3/10B3: C2 20 REP #$20 C3/10B5: C5 F1 CMP $F1 C3/10B7: 90 12 BCC $10CB C3/10B9: 18 CLC C3/10BA: A5 EF LDA $EF C3/10BC: 69 00 04 ADC #$0400 C3/10BF: 85 EF STA $EF C3/10C1: 80 08 BRA $10CB C3/10C3: A5 EF LDA $EF C3/10C5: 38 SEC C3/10C6: E9 00 04 SBC #$0400 C3/10C9: 85 EF STA $EF C3/10CB: A5 EB LDA $EB ; combine red, green, and blue C3/10CD: 05 ED ORA $ED C3/10CF: 05 EF ORA $EF C3/10D1: 85 E7 STA $E7 ; set current color C3/10D3: 60 RTS ; white color palette C3/10D4: .DW $0000, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF C3/10E4: .DW $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF, $7FFF ; black color palette C3/10F4: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 C3/1104: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; ------------------------------------------[ Menu: Threads ]------------------------------------------- ; [ Init Threads ] task_init: C3/1114: A6 00 LDX $00 C3/1116: 86 2D STX $2D ; clear thread pointer and number of active threads C3/1118: 86 2F STX $2F C3/111A: C2 20 REP #$20 C3/111C: 20 4E 11 JSR $114E ; clear sprite data C3/111F: E2 10 SEP #$10 C3/1121: A2 7E LDX #$7E C3/1123: DA PHX C3/1124: AB PLB C3/1125: A2 00 LDX #$00 C3/1127: 9E 49 32 STZ $3249,X ; clear thread data C3/112A: 9E 49 36 STZ $3649,X C3/112D: 9E C9 35 STZ $35C9,X C3/1130: 9E 49 37 STZ $3749,X C3/1133: 9E C9 33 STZ $33C9,X C3/1136: 9E 49 34 STZ $3449,X C3/1139: 9E C9 34 STZ $34C9,X C3/113C: 9E 49 35 STZ $3549,X C3/113F: E8 INX C3/1140: E8 INX C3/1141: E0 80 CPX #$80 C3/1143: D0 E2 BNE $1127 C3/1145: A2 00 LDX #$00 C3/1147: DA PHX C3/1148: AB PLB C3/1149: E2 20 SEP #$20 C3/114B: C2 10 REP #$10 C3/114D: 60 RTS ; [ Clear Sprite Data ] oam_clr: C3/114E: A6 00 LDX $00 C3/1150: A9 01 E0 LDA #$E001 C3/1153: 9D 00 03 STA $0300,X ; move all sprites offscreen C3/1156: E8 INX C3/1157: E8 INX C3/1158: A9 01 00 LDA #$0001 C3/115B: 9D 00 03 STA $0300,X C3/115E: E8 INX C3/115F: E8 INX C3/1160: E0 00 02 CPX #$0200 C3/1163: D0 EB BNE $1150 C3/1165: A4 00 LDY $00 ; clear high sprite data C3/1167: 98 TYA C3/1168: 99 00 05 STA $0500,Y C3/116B: C8 INY C3/116C: C8 INY C3/116D: C0 20 00 CPY #$0020 C3/1170: D0 F6 BNE $1168 C3/1172: 60 RTS ; [ Create Thread ] ; A = priority ; Y = address task_link: C3/1173: AA TAX C3/1174: A9 7E LDA #$7E C3/1176: 48 PHA C3/1177: AB PLB C3/1178: 8A TXA C3/1179: 20 8B 11 JSR $118B ; init thread code pointer C3/117C: E2 20 SEP #$20 C3/117E: A9 00 LDA #$00 C3/1180: 48 PHA C3/1181: AB PLB C3/1182: A5 2D LDA $2D C3/1184: 9F 4A 37 7E STA $7E374A,X ; set thread data pointer C3/1188: E6 2F INC $2F ; increment the number of active threads C3/118A: 60 RTS ; [ Init Thread Code Pointer ] ; A = priority C3/118B: EB XBA C3/118C: A9 00 LDA #$00 C3/118E: EB XBA C3/118F: 0A ASL C3/1190: 0A ASL C3/1191: 0A ASL C3/1192: 0A ASL C3/1193: C2 20 REP #$20 C3/1195: AA TAX C3/1196: BD 49 32 LDA $3249,X ; find the first available thread in this priority level C3/1199: D0 05 BNE $11A0 C3/119B: 98 TYA C3/119C: 9D 49 32 STA $3249,X ; set thread code pointer C3/119F: 60 RTS C3/11A0: E8 INX C3/11A1: E8 INX C3/11A2: E0 80 00 CPX #$0080 C3/11A5: D0 EF BNE $1196 C3/11A7: CA DEX ; no empty thread found, use the second to last one C3/11A8: CA DEX C3/11A9: 98 TYA C3/11AA: 9D 49 32 STA $3249,X ; set thread data pointer C3/11AD: 80 FE BRA $11AD ; infinite loop C3/11AF: 60 RTS ; [ Execute Threads ] task_exec: C3/11B0: 8B PHB C3/11B1: A9 7E LDA #$7E C3/11B3: 48 PHA C3/11B4: AB PLB C3/11B5: A2 00 03 LDX #$0300 ; set starting pointers to sprite data C3/11B8: 86 0E STX $0E C3/11BA: A2 00 05 LDX #$0500 C3/11BD: 86 10 STX $10 C3/11BF: A9 03 LDA #$03 ; C3/11C1: 85 33 STA $33 C3/11C3: 64 34 STZ $34 C3/11C5: A2 80 00 LDX #$0080 ; start with $80 unused sprites C3/11C8: 86 31 STX $31 C3/11CA: A6 00 LDX $00 C3/11CC: C2 20 REP #$20 C3/11CE: BD 49 32 LDA $3249,X ; thread code pointer C3/11D1: F0 22 BEQ $11F5 ; branch if thread is not active C3/11D3: 86 2D STX $2D ; +$2D = thread data pointer C3/11D5: DA PHX C3/11D6: 85 2B STA $2B ; +$2B = thread code pointer C3/11D8: E2 20 SEP #$20 C3/11DA: 7B TDC C3/11DB: BD 49 36 LDA $3649,X ; thread state C3/11DE: 0A ASL C3/11DF: 20 03 12 JSR $1203 ; execute thread (carry clear = terminate, carry set = don't terminate) C3/11E2: C2 20 REP #$20 C3/11E4: FA PLX C3/11E5: B0 0E BCS $11F5 ; branch if thread didn't terminate C3/11E7: 9E 49 32 STZ $3249,X ; clear thread data C3/11EA: 9E 49 36 STZ $3649,X C3/11ED: 9E C9 35 STZ $35C9,X C3/11F0: 9E 49 37 STZ $3749,X C3/11F3: C6 2F DEC $2F ; decrement number of active threads C3/11F5: E8 INX ; next thread C3/11F6: E8 INX C3/11F7: E0 80 00 CPX #$0080 C3/11FA: D0 D2 BNE $11CE C3/11FC: 20 38 13 JSR $1338 ; hide unused sprites C3/11FF: E2 20 SEP #$20 C3/1201: AB PLB C3/1202: 60 RTS ; execute thread C3/1203: 6C 2B 00 JMP ($002B) ; [ Init Animation Thread ] C3/1206: 7B TDC C3/1207: 9D C9 36 STA $36C9,X C3/120A: C2 20 REP #$20 C3/120C: BD C9 32 LDA $32C9,X C3/120F: 85 EB STA $EB C3/1211: E2 20 SEP #$20 C3/1213: BD CA 35 LDA $35CA,X C3/1216: 85 ED STA $ED C3/1218: A0 02 00 LDY #$0002 C3/121B: B7 EB LDA [$EB],Y C3/121D: 9D CA 36 STA $36CA,X C3/1220: 60 RTS ; [ Update Animation Thread ] C3/1221: 20 27 12 JSR $1227 ; update animation data C3/1224: 4C 73 12 JMP $1273 ; update animation sprites ; [ Update Animation Data ] C3/1227: A6 2D LDX $2D ; thread data pointer C3/1229: A4 00 LDY $00 C3/122B: C2 20 REP #$20 C3/122D: BD C9 32 LDA $32C9,X ; ++$EB = animation data pointer C3/1230: 85 EB STA $EB C3/1232: E2 20 SEP #$20 C3/1234: BD CA 35 LDA $35CA,X C3/1237: 85 ED STA $ED C3/1239: BD CA 36 LDA $36CA,X ; next animation data byte C3/123C: C9 FE CMP #$FE C3/123E: F0 22 BEQ $1262 ; return if $FE (stop animation) C3/1240: C9 FF CMP #$FF C3/1242: D0 08 BNE $124C ; branch if not $FF (repeat) C3/1244: 9E C9 36 STZ $36C9,X ; reset animation data offset C3/1247: 20 63 12 JSR $1263 ; set animation frame counter C3/124A: 80 ED BRA $1239 C3/124C: BD CA 36 LDA $36CA,X ; frame counter C3/124F: D0 0E BNE $125F ; decrement and return if not zero C3/1251: BD C9 36 LDA $36C9,X ; increment animation data offset C3/1254: 18 CLC C3/1255: 69 03 ADC #$03 C3/1257: 9D C9 36 STA $36C9,X C3/125A: 20 63 12 JSR $1263 ; set animation frame counter C3/125D: 80 DA BRA $1239 C3/125F: DE CA 36 DEC $36CA,X ; decrement frame counter C3/1262: 60 RTS ; [ Set Animation Frame Counter ] C3/1263: E2 10 SEP #$10 C3/1265: BD C9 36 LDA $36C9,X ; animation data offset + 2 C3/1268: A8 TAY C3/1269: C8 INY C3/126A: C8 INY C3/126B: B7 EB LDA [$EB],Y C3/126D: 9D CA 36 STA $36CA,X ; set frame counter C3/1270: C2 10 REP #$10 C3/1272: 60 RTS ; [ Update Animation Sprites ] C3/1273: E2 10 SEP #$10 C3/1275: BD C9 36 LDA $36C9,X ; animation data offset C3/1278: A8 TAY C3/1279: C2 20 REP #$20 C3/127B: B7 EB LDA [$EB],Y ; ++$E7 = pointer to sprite data C3/127D: 85 E7 STA $E7 C3/127F: C8 INY C3/1280: C8 INY C3/1281: E2 20 SEP #$20 C3/1283: BD CA 35 LDA $35CA,X C3/1286: 85 E9 STA $E9 C3/1288: C2 10 REP #$10 C3/128A: A4 00 LDY $00 C3/128C: A5 31 LDA $31 ; return if there are no unused sprites remaining C3/128E: F0 6B BEQ $12FB C3/1290: B7 E7 LDA [$E7],Y C3/1292: 85 E6 STA $E6 ; $E6 = number of sprites C3/1294: F0 65 BEQ $12FB ; return if there are no sprites C3/1296: C8 INY C3/1297: B7 E7 LDA [$E7],Y ; $E0 = x position C3/1299: 85 E0 STA $E0 C3/129B: 10 13 BPL $12B0 ; branch if not a 32x32 sprite C3/129D: 7B TDC C3/129E: A5 33 LDA $33 C3/12A0: AA TAX C3/12A1: BF 34 13 C3 LDA $C31334,X ; high sprite mask C3/12A5: 18 CLC C3/12A6: 65 34 ADC $34 C3/12A8: 85 34 STA $34 C3/12AA: 92 10 STA ($10) ; set sprite high data C3/12AC: A6 2D LDX $2D C3/12AE: 80 04 BRA $12B4 C3/12B0: A5 34 LDA $34 C3/12B2: 92 10 STA ($10) ; set sprite high data C3/12B4: A5 E0 LDA $E0 C3/12B6: 29 7F AND #$7F C3/12B8: 85 E0 STA $E0 C3/12BA: BD 4A 36 LDA $364A,X C3/12BD: 89 01 BIT #$01 C3/12BF: F0 0D BEQ $12CE C3/12C1: 64 E1 STZ $E1 C3/12C3: C2 20 REP #$20 C3/12C5: A5 E0 LDA $E0 C3/12C7: 38 SEC C3/12C8: E5 35 SBC $35 ; subtract bg1 horizontal scroll C3/12CA: 85 E0 STA $E0 C3/12CC: E2 20 SEP #$20 C3/12CE: 20 FC 12 JSR $12FC ; update animation sprite data C3/12D1: C6 33 DEC $33 ; decrement pointer to high sprite data masks C3/12D3: 10 0A BPL $12DF ; branch if positive C3/12D5: A9 03 LDA #$03 ; reset to 3 C3/12D7: 85 33 STA $33 C3/12D9: 64 34 STZ $34 ; clear current high sprite data byte C3/12DB: C2 20 REP #$20 C3/12DD: E6 10 INC $10 ; increment pointer to high sprite data C3/12DF: C2 20 REP #$20 C3/12E1: A5 E0 LDA $E0 C3/12E3: 92 0E STA ($0E) ; set sprite data (position) C3/12E5: E6 0E INC $0E C3/12E7: E6 0E INC $0E C3/12E9: A5 E2 LDA $E2 C3/12EB: 92 0E STA ($0E) ; set sprite data (other bytes) C3/12ED: E6 0E INC $0E C3/12EF: E6 0E INC $0E C3/12F1: E2 20 SEP #$20 C3/12F3: C6 31 DEC $31 ; decrement number of unused sprites C3/12F5: F0 04 BEQ $12FB C3/12F7: C6 E6 DEC $E6 ; next sprite C3/12F9: D0 9C BNE $1297 C3/12FB: 60 RTS ; [ Update Animation Sprite Data ] C3/12FC: A5 E0 LDA $E0 ; $E0 = x position C3/12FE: 18 CLC C3/12FF: 7D CA 33 ADC $33CA,X ; add horizontal offset C3/1302: 85 E0 STA $E0 C3/1304: C8 INY C3/1305: B7 E7 LDA [$E7],Y ; $E1 = y position C3/1307: 18 CLC C3/1308: 7D 4A 34 ADC $344A,X ; add vertical offset C3/130B: 85 E1 STA $E1 C3/130D: C8 INY C3/130E: B7 E7 LDA [$E7],Y ; $E2 = graphics offset C3/1310: 85 E2 STA $E2 C3/1312: C8 INY C3/1313: BD 4A 36 LDA $364A,X ; branch if not flipped horizontal C3/1316: 89 02 BIT #$02 C3/1318: F0 06 BEQ $1320 C3/131A: B7 E7 LDA [$E7],Y C3/131C: 09 40 ORA #$40 C3/131E: 80 02 BRA $1322 C3/1320: B7 E7 LDA [$E7],Y C3/1322: 85 E3 STA $E3 ; $E3 = vhoopppm C3/1324: BD 49 37 LDA $3749,X ; special palette C3/1327: F0 09 BEQ $1332 C3/1329: A5 E3 LDA $E3 C3/132B: 29 F1 AND #$F1 C3/132D: 1D 49 37 ORA $3749,X C3/1330: 85 E3 STA $E3 C3/1332: C8 INY C3/1333: 60 RTS ; large sprite flags for high sprite data C3/1334: .DB $80, $20, $08, $02 ; [ Hide Unused Sprites ] C3/1338: A4 31 LDY $31 C3/133A: F0 10 BEQ $134C C3/133C: A2 FC 01 LDX #$01FC C3/133F: A9 01 E0 LDA #$E001 C3/1342: 9D 00 03 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: D0 F6 BNE $1342 C3/134C: 60 RTS ; -----------------------------------------[ Menu: Interrupts ]----------------------------------------- ; [ Wait for Next Frame ] C3/134D: 20 68 13 JSR $1368 ; wait for vblank C3/1350: A5 46 LDA $46 ; branch if not scrolling text C3/1352: 89 20 BIT #$20 C3/1354: F0 03 BEQ $1359 C3/1356: 20 05 81 JSR $8105 ; update text scrolling C3/1359: 22 6E A4 C3 JSL $C3A46E ; update controller C3/135D: A5 20 LDA $20 C3/135F: F0 06 BEQ $1367 ; return if not waiting for menu state counter C3/1361: 7B TDC C3/1362: A8 TAY C3/1363: 84 08 STY $08 ; clear controller buttons C3/1365: 84 0A STY $0A C3/1367: 60 RTS ; [ Wait for VBlank ] vsync1: C3/1368: A9 81 LDA #$81 ; enable interrupts C3/136A: 8D 00 42 STA $4200 C3/136D: 85 24 STA $24 C3/136F: 58 CLI C3/1370: A5 24 LDA $24 ; wait for NMI C3/1372: D0 FC BNE $1370 C3/1374: 78 SEI ; disable interrupts C3/1375: A5 44 LDA $44 ; set screen display register C3/1377: 8D 00 21 STA $2100 C3/137A: A5 43 LDA $43 ; enable HDMA C3/137C: 8D 0C 42 STA $420C C3/137F: A5 B5 LDA $B5 ; set mosaic register C3/1381: 8D 06 21 STA $2106 C3/1384: 64 AE STZ $AE ; clear current sound effect C3/1386: 60 RTS ; [ Menu NMI ] menu_nmi: C3/1387: 08 PHP C3/1388: C2 30 REP #$30 C3/138A: 48 PHA C3/138B: DA PHX C3/138C: 5A PHY C3/138D: 8B PHB C3/138E: 0B PHD C3/138F: E2 20 SEP #$20 C3/1391: AD 10 42 LDA $4210 ; reset NMI flag register C3/1394: A9 00 LDA #$00 C3/1396: 48 PHA C3/1397: AB PLB C3/1398: A2 00 00 LDX #$0000 C3/139B: DA PHX C3/139C: 2B PLD C3/139D: A5 24 LDA $24 ; branch if interrupt is disabled C3/139F: F0 10 BEQ $13B1 C3/13A1: 20 12 14 JSR $1412 ; update hardware registers C3/13A4: C2 20 REP #$20 C3/13A6: E6 CF INC $CF ; increment frame counter C3/13A8: E2 20 SEP #$20 C3/13AA: A4 20 LDY $20 ; decrement menu state frame counter C3/13AC: F0 03 BEQ $13B1 C3/13AE: 88 DEY C3/13AF: 84 20 STY $20 C3/13B1: 22 15 00 C0 JSL $C00015 ; decrement timers C3/13B5: 22 C8 13 C3 JSL $C313C8 ; update game time C3/13B9: E6 23 INC $23 ; increment frame counter C3/13BB: 7B TDC C3/13BC: 85 24 STA $24 ; disable interrupt C3/13BE: C2 30 REP #$30 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 ; [ Menu IRQ ] C3/13C7: 40 RTI ; [ Update Game Time ] time_calc: C3/13C8: AD 1E 02 LDA $021E C3/13CB: C9 3C CMP #$3C C3/13CD: F0 02 BEQ $13D1 C3/13CF: 80 2B BRA $13FC C3/13D1: 9C 1E 02 STZ $021E C3/13D4: AD 1D 02 LDA $021D C3/13D7: C9 3B CMP #$3B C3/13D9: F0 05 BEQ $13E0 C3/13DB: EE 1D 02 INC $021D C3/13DE: 80 1C BRA $13FC C3/13E0: 9C 1D 02 STZ $021D C3/13E3: AD 1C 02 LDA $021C C3/13E6: C9 3B CMP #$3B C3/13E8: F0 05 BEQ $13EF C3/13EA: EE 1C 02 INC $021C C3/13ED: 80 0D BRA $13FC C3/13EF: 9C 1C 02 STZ $021C C3/13F2: AD 1B 02 LDA $021B C3/13F5: C9 63 CMP #$63 C3/13F7: F0 03 BEQ $13FC C3/13F9: EE 1B 02 INC $021B C3/13FC: AD 1B 02 LDA $021B C3/13FF: C9 63 CMP #$63 C3/1401: D0 0A BNE $140D C3/1403: AD 1C 02 LDA $021C C3/1406: C9 3B CMP #$3B C3/1408: D0 03 BNE $140D C3/140A: 9C 1D 02 STZ $021D C3/140D: EE 1E 02 INC $021E C3/1410: 7B TDC C3/1411: 6B RTL ; [ Update Hardware Registers ] nmi_main: C3/1412: 9C 0C 42 STZ $420C ; disable HDMA C3/1415: 9C 0B 42 STZ $420B ; disable DMA C3/1418: A5 35 LDA $35 ; set bg scrolling registers C3/141A: 8D 0D 21 STA $210D C3/141D: A5 36 LDA $36 C3/141F: 8D 0D 21 STA $210D C3/1422: A5 37 LDA $37 C3/1424: 8D 0E 21 STA $210E C3/1427: A5 38 LDA $38 C3/1429: 8D 0E 21 STA $210E C3/142C: A5 39 LDA $39 C3/142E: 8D 0F 21 STA $210F C3/1431: A5 3A LDA $3A C3/1433: 8D 0F 21 STA $210F C3/1436: A5 3B LDA $3B C3/1438: 8D 10 21 STA $2110 C3/143B: A5 3C LDA $3C C3/143D: 8D 10 21 STA $2110 C3/1440: A5 3D LDA $3D C3/1442: 8D 11 21 STA $2111 C3/1445: A5 3E LDA $3E C3/1447: 8D 11 21 STA $2111 C3/144A: A5 3F LDA $3F C3/144C: 8D 12 21 STA $2112 C3/144F: A5 40 LDA $40 C3/1451: 8D 12 21 STA $2112 C3/1454: 20 63 D2 JSR $D263 ; update mode 7 registers C3/1457: 20 63 14 JSR $1463 ; copy sprite data to PPU C3/145A: 20 D2 14 JSR $14D2 ; copy color palettes to PPU C3/145D: 20 88 14 JSR $1488 ; copy data/graphics to VRAM (DMA1) C3/1460: 4C AC 14 JMP $14AC ; copy data/graphics to VRAM (DMA2) ; [ Copy Sprite Data to PPU ] oam_set: C3/1463: A6 00 LDX $00 ; clear OAM address C3/1465: 8E 02 21 STX $2102 C3/1468: 8A TXA C3/1469: 8D 04 43 STA $4304 ; copy sprite data C3/146C: A9 02 LDA #$02 C3/146E: 8D 00 43 STA $4300 C3/1471: A9 04 LDA #$04 C3/1473: 8D 01 43 STA $4301 C3/1476: A0 00 03 LDY #$0300 C3/1479: 8C 02 43 STY $4302 C3/147C: A0 20 02 LDY #$0220 C3/147F: 8C 05 43 STY $4305 C3/1482: A9 01 LDA #$01 C3/1484: 8D 0B 42 STA $420B C3/1487: 60 RTS ; [ Copy Data/Graphics to VRAM (DMA1) ] stddma_set: C3/1488: A4 14 LDY $14 C3/148A: 8C 16 21 STY $2116 C3/148D: A9 01 LDA #$01 C3/148F: 8D 00 43 STA $4300 C3/1492: A9 18 LDA #$18 C3/1494: 8D 01 43 STA $4301 C3/1497: A4 16 LDY $16 C3/1499: 8C 02 43 STY $4302 C3/149C: A5 18 LDA $18 C3/149E: 8D 04 43 STA $4304 C3/14A1: A4 12 LDY $12 C3/14A3: 8C 05 43 STY $4305 C3/14A6: A9 01 LDA #$01 C3/14A8: 8D 0B 42 STA $420B C3/14AB: 60 RTS ; [ Copy Data/Graphics to VRAM (DMA2) ] stddma1_set: C3/14AC: A4 1B LDY $1B C3/14AE: F0 21 BEQ $14D1 C3/14B0: 8C 16 21 STY $2116 C3/14B3: A9 01 LDA #$01 C3/14B5: 8D 00 43 STA $4300 C3/14B8: A9 18 LDA #$18 C3/14BA: 8D 01 43 STA $4301 C3/14BD: A4 1D LDY $1D C3/14BF: 8C 02 43 STY $4302 C3/14C2: A5 1F LDA $1F C3/14C4: 8D 04 43 STA $4304 C3/14C7: A4 19 LDY $19 C3/14C9: 8C 05 43 STY $4305 C3/14CC: A9 01 LDA #$01 C3/14CE: 8D 0B 42 STA $420B C3/14D1: 60 RTS ; [ Copy Color Palettes to PPU ] coldma_set: C3/14D2: A5 45 LDA $45 C3/14D4: 89 01 BIT #$01 C3/14D6: F0 25 BEQ $14FD C3/14D8: A5 00 LDA $00 C3/14DA: 8D 21 21 STA $2121 C3/14DD: A9 02 LDA #$02 C3/14DF: 8D 00 43 STA $4300 C3/14E2: A9 22 LDA #$22 C3/14E4: 8D 01 43 STA $4301 C3/14E7: A0 49 30 LDY #$3049 C3/14EA: 8C 02 43 STY $4302 C3/14ED: A9 7E LDA #$7E C3/14EF: 8D 04 43 STA $4304 C3/14F2: A0 00 02 LDY #$0200 C3/14F5: 8C 05 43 STY $4305 C3/14F8: A9 01 LDA #$01 C3/14FA: 8D 0B 42 STA $420B C3/14FD: 60 RTS ; ---------------------------------------[ Menu: Save/Load Game ]--------------------------------------- ; [ Load Saved Game ] reload: C3/14FE: AD 1F 02 LDA $021F ; branch if not loading a saved game C3/1501: F0 11 BEQ $1514 C3/1503: 20 66 15 JSR $1566 ; load saved game data C3/1506: 20 D1 19 JSR $19D1 ; calculate saved game data checksum C3/1509: 20 EB 19 JSR $19EB ; check saved game data checksum C3/150C: F0 06 BEQ $1514 ; branch if checksum invalid C3/150E: 20 95 15 JSR $1595 ; restore timer data C3/1511: 7B TDC ; return $00 C3/1512: 80 04 BRA $1518 C3/1514: E2 20 SEP #$20 C3/1516: A9 FF LDA #$FF ; return $FF C3/1518: 8D 05 02 STA $0205 C3/151B: 7B TDC C3/151C: 6B RTL ; [ Save Game ] ; A = game slot C3/151D: 29 03 AND #$03 ; set game slot C3/151F: 8F F0 7F 30 STA $307FF0 C3/1523: 8D 24 02 STA $0224 C3/1526: 48 PHA C3/1527: AC 1B 02 LDY $021B ; save game time C3/152A: 8C 63 18 STY $1863 C3/152D: AD 1D 02 LDA $021D C3/1530: 8D 65 18 STA $1865 C3/1533: 20 86 15 JSR $1586 ; save timer data C3/1536: 20 D1 19 JSR $19D1 ; calculate saved game data checksum C3/1539: A4 E7 LDY $E7 C3/153B: 8C FE 1F STY $1FFE ; save checksum C3/153E: 7B TDC C3/153F: 68 PLA C3/1540: 0A ASL C3/1541: AA TAX C3/1542: C2 20 REP #$20 C3/1544: BF 5E 15 C3 LDA $C3155E,X ; pointer to saved game data in SRAM C3/1548: AA TAX C3/1549: E2 20 SEP #$20 C3/154B: A4 00 LDY $00 C3/154D: B9 00 16 LDA $1600,Y ; copy saved game data to SRAM C3/1550: 9F 00 60 30 STA $306000,X C3/1554: E8 INX C3/1555: C8 INY C3/1556: C0 00 0A CPY #$0A00 C3/1559: D0 F2 BNE $154D C3/155B: 4C 83 70 JMP $7083 ; make SRAM valid ; pointers to saved game data in SRAM C3/155E: .DW $0000, $0000, $0A00, $1400 ; [ Load Saved Game Data ] C3/1566: EB XBA C3/1567: A5 00 LDA $00 C3/1569: EB XBA C3/156A: 0A ASL C3/156B: AA TAX C3/156C: C2 20 REP #$20 C3/156E: BF 5E 15 C3 LDA $C3155E,X ; pointer to saved game data C3/1572: AA TAX C3/1573: E2 20 SEP #$20 C3/1575: A4 00 LDY $00 C3/1577: BF 00 60 30 LDA $306000,X C3/157B: 99 00 16 STA $1600,Y C3/157E: E8 INX C3/157F: C8 INY C3/1580: C0 00 0A CPY #$0A00 C3/1583: D0 F2 BNE $1577 C3/1585: 60 RTS ; [ Save Timer Data ] C3/1586: 7B TDC C3/1587: AA TAX C3/1588: BD 88 11 LDA $1188,X C3/158B: 9D A8 1F STA $1FA8,X C3/158E: E8 INX C3/158F: E0 18 00 CPX #$0018 C3/1592: D0 F4 BNE $1588 C3/1594: 60 RTS ; [ Restore Timer Data ] C3/1595: 7B TDC C3/1596: AA TAX C3/1597: BD A8 1F LDA $1FA8,X C3/159A: 9D 88 11 STA $1188,X C3/159D: E8 INX C3/159E: E0 18 00 CPX #$0018 C3/15A1: D0 F4 BNE $1597 C3/15A3: 60 RTS ; [ Init Cursor (save select) ] C3/15A4: A0 B3 15 LDY #$15B3 C3/15A7: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (save select) ] C3/15AA: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/15AD: A0 CE 15 LDY #$15CE C3/15B0: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/15B3: .DB $80, $00, $00, $01, $03 ; [ Init Cursor (restore game) ] C3/15B8: A0 C7 15 LDY #$15C7 C3/15BB: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (restore game) ] C3/15BE: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/15C1: A0 CC 15 LDY #$15CC C3/15C4: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/15C7: .DB $80, $00, $00, $01, $04 C3/15CC: .DB $08, $1C C3/15CE: .DB $08, $3C .DB $08, $74 .DB $08, $AC ; [ Init Cursor (save/restore confirm) ] C3/15D4: A0 E3 15 LDY #$15E3 C3/15D7: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (save/restore confirm) ] C3/15DA: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/15DD: A0 E8 15 LDY #$15E8 C3/15E0: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/15E3: .DB $80, $00, $00, $01, $02 C3/15E8: .DB $BF, $44 C3/15EA: .DB $BF, $54 ; [ Init Windows (save select) ] C3/15EC: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/15EF: 20 32 16 JSR $1632 ; draw save slot windows C3/15F2: 20 87 3A JSR $3A87 ; init custom menu window C3/15F5: A0 9C 18 LDY #$189C C3/15F8: 20 41 03 JSR $0341 ; draw window C3/15FB: A9 20 LDA #$20 ; white text C3/15FD: 85 29 STA $29 C3/15FF: A0 78 1A LDY #$1A78 ; "Save" C3/1602: 20 F9 02 JSR $02F9 ; draw positioned text C3/1605: 4C 90 18 JMP $1890 ; copy bg data to vram ; [ Init Windows (restore game) ] C3/1608: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/160B: 9C 4E 1D STZ $1D4E C3/160E: 20 BC 6B JSR $6BBC ; load wallpaper palettes C3/1611: 20 87 3A JSR $3A87 ; init custom menu window C3/1614: A0 9C 18 LDY #$189C C3/1617: 20 41 03 JSR $0341 ; draw window C3/161A: AD 4E 1D LDA $1D4E C3/161D: 29 70 AND #$70 C3/161F: 8D 4E 1D STA $1D4E C3/1622: 20 32 16 JSR $1632 ; draw save slot windows C3/1625: A9 20 LDA #$20 ; white text C3/1627: 85 29 STA $29 C3/1629: A0 7F 1A LDY #$1A7F ; "New Game" C3/162C: 20 F9 02 JSR $02F9 ; draw positioned text C3/162F: 4C 90 18 JMP $1890 ; copy bg data to vram ; [ Draw Save Slot Windows ] C3/1632: 20 60 6C JSR $6C60 ; load grayscale character sprite palette C3/1635: A9 20 LDA #$20 C3/1637: 14 43 TRB $43 ; enable hdma #5 C3/1639: A0 02 00 LDY #$0002 C3/163C: 84 37 STY $37 ; bg1 vscroll C3/163E: AC 55 1D LDY $1D55 ; save font color C3/1641: 84 E7 STY $E7 C3/1643: A0 FF 7F LDY #$7FFF ; set font color to white C3/1646: 8C 55 1D STY $1D55 C3/1649: 20 99 3F JSR $3F99 ; init font color C3/164C: A4 E7 LDY $E7 C3/164E: 8C 55 1D STY $1D55 ; restore font color C3/1651: A9 01 LDA #$01 C3/1653: 22 1D CA D4 JSL $D4CA1D ; init hdma for menu window gradient bars (save select) C3/1657: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/165A: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/165D: 20 46 6A JSR $6A46 ; clear bg3 data (bottom left screen) ; slot 1 C3/1660: 20 AC 18 JSR $18AC ; save sram at 7E/AC8D C3/1663: A9 01 LDA #$01 C3/1665: 85 66 STA $66 ; current save slot = 1 C3/1667: 20 66 15 JSR $1566 ; load saved game data C3/166A: 20 15 69 JSR $6915 ; init party character data C3/166D: 20 D1 19 JSR $19D1 ; calculate saved game data checksum C3/1670: 20 EB 19 JSR $19EB ; check saved game data checksum C3/1673: 84 91 STY $91 C3/1675: F0 0B BEQ $1682 ; branch if checksum invalid C3/1677: 20 61 6F JSR $6F61 ; C3/167A: 20 1D 17 JSR $171D ; draw text for save slot 1 C3/167D: 20 F5 3A JSR $3AF5 C3/1680: 80 13 BRA $1695 C3/1682: 20 C1 18 JSR $18C1 ; restore sram from 7E/AC8D C3/1685: 20 61 6F JSR $6F61 ; C3/1688: A9 20 LDA #$20 ; white text C3/168A: 85 29 STA $29 C3/168C: A0 24 1A LDY #$1A24 ; "Empty" C3/168F: 20 F9 02 JSR $02F9 ; draw positioned text C3/1692: 20 F5 3A JSR $3AF5 ; slot 2 C3/1695: A9 02 LDA #$02 C3/1697: 85 66 STA $66 ; current save slot = 2 C3/1699: 20 66 15 JSR $1566 C3/169C: 20 15 69 JSR $6915 ; init party character data C3/169F: 20 D1 19 JSR $19D1 ; calculate saved game data checksum C3/16A2: 20 EB 19 JSR $19EB ; check saved game data checksum C3/16A5: 84 93 STY $93 C3/16A7: F0 0B BEQ $16B4 C3/16A9: 20 B8 6F JSR $6FB8 C3/16AC: 20 CA 17 JSR $17CA C3/16AF: 20 09 3B JSR $3B09 C3/16B2: 80 13 BRA $16C7 C3/16B4: 20 C1 18 JSR $18C1 ; restore sram from 7E/AC8D C3/16B7: 20 B8 6F JSR $6FB8 C3/16BA: A9 20 LDA #$20 C3/16BC: 85 29 STA $29 C3/16BE: A0 2C 1A LDY #$1A2C C3/16C1: 20 F9 02 JSR $02F9 ; draw positioned text C3/16C4: 20 09 3B JSR $3B09 ; slot 3 C3/16C7: A9 03 LDA #$03 C3/16C9: 85 66 STA $66 C3/16CB: 20 66 15 JSR $1566 C3/16CE: 20 15 69 JSR $6915 ; init party character data C3/16D1: 20 D1 19 JSR $19D1 ; calculate saved game data checksum C3/16D4: 20 EB 19 JSR $19EB ; check saved game data checksum C3/16D7: 84 95 STY $95 C3/16D9: F0 0B BEQ $16E6 C3/16DB: 20 DC 6F JSR $6FDC C3/16DE: 20 2D 18 JSR $182D C3/16E1: 20 1D 3B JSR $3B1D C3/16E4: 80 13 BRA $16F9 C3/16E6: 20 C1 18 JSR $18C1 ; restore sram from 7E/AC8D C3/16E9: 20 DC 6F JSR $6FDC C3/16EC: A9 20 LDA #$20 C3/16EE: 85 29 STA $29 C3/16F0: A0 34 1A LDY #$1A34 C3/16F3: 20 F9 02 JSR $02F9 ; draw positioned text C3/16F6: 20 1D 3B JSR $3B1D C3/16F9: 20 C1 18 JSR $18C1 ; restore sram from 7E/AC8D C3/16FC: 20 A1 3A JSR $3AA1 C3/16FF: A0 A0 18 LDY #$18A0 C3/1702: 20 41 03 JSR $0341 ; draw window C3/1705: 20 BD 3A JSR $3ABD C3/1708: A0 A4 18 LDY #$18A4 C3/170B: 20 41 03 JSR $0341 ; draw window C3/170E: 20 D9 3A JSR $3AD9 C3/1711: A0 A8 18 LDY #$18A8 C3/1714: 20 41 03 JSR $0341 ; draw window C3/1717: A0 00 1C LDY #$1C00 C3/171A: 4C 26 03 JMP $0326 ; [ Draw Text for Save Slot 1 ] C3/171D: A9 20 LDA #$20 ; white text C3/171F: 85 29 STA $29 C3/1721: A0 51 1A LDY #$1A51 ; ":" C3/1724: 20 F9 02 JSR $02F9 ; draw positioned text C3/1727: AD 63 18 LDA $1863 C3/172A: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/172D: A2 0D 7B LDX #$7B0D C3/1730: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/1733: AD 64 18 LDA $1864 C3/1736: 20 F9 04 JSR $04F9 ; convert hex to decimal (3 digits, keep leading zeroes) C3/1739: A2 13 7B LDX #$7B13 C3/173C: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/173F: 20 4D 17 JSR $174D ; C3/1742: A9 2C LDA #$2C ; teal text C3/1744: 85 29 STA $29 C3/1746: A0 3C 1A LDY #$1A3C ; "Time" C3/1749: 20 F9 02 JSR $02F9 ; draw positioned text C3/174C: 60 RTS ; [ Draw Character Text for Save Slot 1 ] C3/174D: 7B TDC C3/174E: AA TAX C3/174F: B5 69 LDA $69,X C3/1751: 30 29 BMI $177C ; branch if character slot is empty C3/1753: 20 BE 17 JSR $17BE ; update pointer to current character data C3/1756: A9 2C LDA #$2C ; teal text C3/1758: 85 29 STA $29 C3/175A: A0 5D 1A LDY #$1A5D ; "LV" C3/175D: 20 F9 02 JSR $02F9 ; draw positioned text C3/1760: A9 20 LDA #$20 C3/1762: 85 29 STA $29 ; white text C3/1764: A0 6C 1A LDY #$1A6C C3/1767: 20 F9 02 JSR $02F9 ; draw positioned text C3/176A: A0 4F 3A LDY #$3A4F C3/176D: 5A PHY C3/176E: A2 FD 7A LDX #$7AFD C3/1771: DA PHX C3/1772: A2 F3 7A LDX #$7AF3 C3/1775: DA PHX C3/1776: A2 81 7A LDX #$7A81 C3/1779: DA PHX C3/177A: 80 03 BRA $177F C3/177C: E8 INX ; next character slot C3/177D: 80 D0 BRA $174F ; [ Draw Character Text for Save Slot ] C3/177F: A6 67 LDX $67 C3/1781: BD 08 00 LDA $0008,X ; character's level C3/1784: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/1787: FA PLX C3/1788: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/178B: A4 67 LDY $67 C3/178D: 20 9A 2B JSR $2B9A ; check current hp vs max C3/1790: B9 09 00 LDA $0009,Y ; current hp C3/1793: 85 F3 STA $F3 C3/1795: B9 0A 00 LDA $000A,Y C3/1798: 85 F4 STA $F4 C3/179A: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/179D: FA PLX C3/179E: 20 90 04 JSR $0490 ; draw number text (4 digit) C3/17A1: A6 67 LDX $67 C3/17A3: BD 0B 00 LDA $000B,X ; max hp C3/17A6: 85 F3 STA $F3 C3/17A8: BD 0C 00 LDA $000C,X C3/17AB: 85 F4 STA $F4 C3/17AD: 20 65 0D JSR $0D65 ; calculate max hp/mp w/ boost C3/17B0: 20 92 0D JSR $0D92 ; check max hp (9999) C3/17B3: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/17B6: FA PLX C3/17B7: 20 90 04 JSR $0490 ; draw number text (4 digit) C3/17BA: 7A PLY C3/17BB: 4C CF 34 JMP $34CF ; draw character name ; [ Update Pointer to Current Character Data ] C3/17BE: C2 20 REP #$20 C3/17C0: 8A TXA C3/17C1: 0A ASL C3/17C2: AA TAX C3/17C3: B5 6D LDA $6D,X C3/17C5: 85 67 STA $67 C3/17C7: E2 20 SEP #$20 C3/17C9: 60 RTS ; [ Draw Text for Save Slot 2 ] C3/17CA: A9 20 LDA #$20 ; white text C3/17CC: 85 29 STA $29 C3/17CE: A0 55 1A LDY #$1A55 ; ":" C3/17D1: 20 F9 02 JSR $02F9 ; draw positioned text C3/17D4: AD 63 18 LDA $1863 ; game time C3/17D7: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/17DA: A2 CD 7C LDX #$7CCD C3/17DD: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/17E0: AD 64 18 LDA $1864 C3/17E3: 20 F9 04 JSR $04F9 ; convert hex to decimal (3 digits, keep leading zeroes) C3/17E6: A2 D3 7C LDX #$7CD3 C3/17E9: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/17EC: 20 FA 17 JSR $17FA ; C3/17EF: A9 2C LDA #$2C ; teal text C3/17F1: 85 29 STA $29 C3/17F3: A0 43 1A LDY #$1A43 C3/17F6: 20 F9 02 JSR $02F9 ; draw positioned text C3/17F9: 60 RTS ; [ Draw Character Text for Save Slot 2 ] C3/17FA: 7B TDC C3/17FB: AA TAX C3/17FC: B5 69 LDA $69,X C3/17FE: 30 2A BMI $182A C3/1800: 20 BE 17 JSR $17BE ; update pointer to current character data C3/1803: A9 2C LDA #$2C C3/1805: 85 29 STA $29 C3/1807: A0 62 1A LDY #$1A62 C3/180A: 20 F9 02 JSR $02F9 ; draw positioned text C3/180D: A9 20 LDA #$20 C3/180F: 85 29 STA $29 C3/1811: A0 70 1A LDY #$1A70 C3/1814: 20 F9 02 JSR $02F9 ; draw positioned text C3/1817: A0 0F 3C LDY #$3C0F C3/181A: 5A PHY C3/181B: A2 BD 7C LDX #$7CBD C3/181E: DA PHX C3/181F: A2 B3 7C LDX #$7CB3 C3/1822: DA PHX C3/1823: A2 41 7C LDX #$7C41 C3/1826: DA PHX C3/1827: 4C 7F 17 JMP $177F C3/182A: E8 INX C3/182B: 80 CF BRA $17FC ; [ Draw Text for Save Slot 3 ] C3/182D: A9 20 LDA #$20 C3/182F: 85 29 STA $29 C3/1831: A0 59 1A LDY #$1A59 C3/1834: 20 F9 02 JSR $02F9 ; draw positioned text C3/1837: AD 63 18 LDA $1863 C3/183A: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/183D: A2 8D 7E LDX #$7E8D C3/1840: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/1843: AD 64 18 LDA $1864 C3/1846: 20 F9 04 JSR $04F9 ; convert hex to decimal (3 digits, keep leading zeroes) C3/1849: A2 93 7E LDX #$7E93 C3/184C: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/184F: 20 5D 18 JSR $185D C3/1852: A9 2C LDA #$2C C3/1854: 85 29 STA $29 C3/1856: A0 4A 1A LDY #$1A4A C3/1859: 20 F9 02 JSR $02F9 ; draw positioned text C3/185C: 60 RTS ; [ Draw Character Text for Save Slot 3 ] C3/185D: 7B TDC C3/185E: AA TAX C3/185F: B5 69 LDA $69,X C3/1861: 30 2A BMI $188D C3/1863: 20 BE 17 JSR $17BE ; update pointer to current character data C3/1866: A9 2C LDA #$2C C3/1868: 85 29 STA $29 C3/186A: A0 67 1A LDY #$1A67 C3/186D: 20 F9 02 JSR $02F9 ; draw positioned text C3/1870: A9 20 LDA #$20 C3/1872: 85 29 STA $29 C3/1874: A0 74 1A LDY #$1A74 C3/1877: 20 F9 02 JSR $02F9 ; draw positioned text C3/187A: A0 CF 3D LDY #$3DCF C3/187D: 5A PHY C3/187E: A2 7D 7E LDX #$7E7D C3/1881: DA PHX C3/1882: A2 73 7E LDX #$7E73 C3/1885: DA PHX C3/1886: A2 01 7E LDX #$7E01 C3/1889: DA PHX C3/188A: 4C 7F 17 JMP $177F C3/188D: E8 INX C3/188E: 80 CF BRA $185F ; [ ] C3/1890: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/1893: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/1896: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/1899: 4C 7C 0E JMP $0E7C ; copy bg3 data to vram (bottom screens) C3/189C: .DB $CB, $58, $1C, $02 C3/18A0: .DB $CB, $59, $1C, $05 C3/18A4: .DB $8B, $5B, $1C, $05 C3/18A8: .DB $4B, $5D, $1C, $05 ; [ Save SRAM at 7E/AC8D ] C3/18AC: A0 8D AC LDY #$AC8D C3/18AF: 8C 81 21 STY $2181 C3/18B2: A6 00 LDX $00 C3/18B4: BD 00 16 LDA $1600,X C3/18B7: 8D 80 21 STA $2180 C3/18BA: E8 INX C3/18BB: E0 00 0A CPX #$0A00 C3/18BE: D0 F4 BNE $18B4 C3/18C0: 60 RTS ; [ Restore SRAM from 7E/AC8D ] C3/18C1: A6 00 LDX $00 C3/18C3: BF 8D AC 7E LDA $7EAC8D,X C3/18C7: 9D 00 16 STA $1600,X C3/18CA: E8 INX C3/18CB: E0 00 0A CPX #$0A00 C3/18CE: D0 F3 BNE $18C3 C3/18D0: 60 RTS C3/18D1: A9 02 LDA #$02 C3/18D3: 8D 50 43 STA $4350 C3/18D6: A9 12 LDA #$12 C3/18D8: 8D 51 43 STA $4351 C3/18DB: A0 F0 18 LDY #$18F0 C3/18DE: 8C 52 43 STY $4352 C3/18E1: A9 C3 LDA #$C3 C3/18E3: 8D 54 43 STA $4354 C3/18E6: A9 C3 LDA #$C3 C3/18E8: 8D 57 43 STA $4357 C3/18EB: A9 20 LDA #$20 C3/18ED: 04 43 TSB $43 C3/18EF: 60 RTS C3/18F0: .DB $20, $00, $00, $0C, $04, $00, $0C, $08, $00, $08, $C8, $FF, $50, $00, $00, $58 C3/1900: .DB $00, $00, $00 ; [ Update Character Sprites (save menu) ] C3/1903: A6 00 LDX $00 C3/1905: BF 71 AA 7E LDA $7EAA71,X ; branch if no character is present in this slot C3/1909: 30 6C BMI $1977 C3/190B: DA PHX C3/190C: DA PHX C3/190D: A9 03 LDA #$03 C3/190F: A0 C7 19 LDY #$19C7 C3/1912: 20 73 11 JSR $1173 ; create thread C3/1915: 9B TXY C3/1916: FA PLX C3/1917: 8B PHB C3/1918: A9 7E LDA #$7E C3/191A: 48 PHA C3/191B: AB PLB C3/191C: A5 66 LDA $66 ; selected save slot C3/191E: F0 11 BEQ $1931 C3/1920: C9 01 CMP #$01 C3/1922: F0 1F BEQ $1943 C3/1924: C9 02 CMP #$02 C3/1926: F0 12 BEQ $193A C3/1928: BF BB 19 C3 LDA $C319BB,X C3/192C: 99 49 37 STA $3749,Y ; palette C3/192F: 80 19 BRA $194A C3/1931: BF 97 19 C3 LDA $C31997,X C3/1935: 99 49 37 STA $3749,Y C3/1938: 80 10 BRA $194A C3/193A: BF AF 19 C3 LDA $C319AF,X C3/193E: 99 49 37 STA $3749,Y C3/1941: 80 07 BRA $194A C3/1943: BF A3 19 C3 LDA $C319A3,X C3/1947: 99 49 37 STA $3749,Y C3/194A: A9 D8 LDA #$D8 C3/194C: 99 CA 35 STA $35CA,Y C3/194F: 7B TDC C3/1950: 99 CB 33 STA $33CB,Y C3/1953: 99 4B 34 STA $344B,Y C3/1956: BF 7F 19 C3 LDA $C3197F,X C3/195A: 99 CA 33 STA $33CA,Y ; x position C3/195D: BF 8B 19 C3 LDA $C3198B,X C3/1961: 99 4A 34 STA $344A,Y ; y position C3/1964: BF 71 AA 7E LDA $7EAA71,X C3/1968: C2 20 REP #$20 C3/196A: 0A ASL C3/196B: AA TAX C3/196C: BF 17 E9 D8 LDA $D8E917,X C3/1970: 99 C9 32 STA $32C9,Y ; pointer to animation data C3/1973: E2 20 SEP #$20 C3/1975: AB PLB C3/1976: FA PLX C3/1977: E8 INX C3/1978: E0 0C 00 CPX #$000C C3/197B: D0 88 BNE $1905 C3/197D: 38 SEC C3/197E: 60 RTS ; pointers to menu character sprite data D8/E917: .DW $E945, $E957, $E969, $E97B, $E98D, $E99F, $E9B1, $E9C3 .DW $E9D5, $E9E7, $E9F9, $EA0B, $EA1D, $EA2F, $EA41, $EA44 .DW $EA47, $EA4A, $EA4D, $EA50, $EA53, $EA56, $EA59 ; stationary character D8/E945: EA5C 10 EA5C 10 EA5C FF ; jumping character D8/E94E: EA5C 10 EA65 10 EA5C FF D8/EA59: EBA0 FE ; x positions for character sprites C3/197F: .DB $50, $68, $80, $98, $50, $68, $80, $98, $50, $68, $80, $98 ; y positions for character sprites C3/198B: .DB $40, $40, $40, $40, $78, $78, $78, $78, $B0, $B0, $B0, $B0 ; palette assignments for character sprites C3/1997: .DB $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 C3/19A3: .DB $00, $00, $00, $00, $02, $02, $02, $02, $02, $02, $02, $02 C3/19AF: .DB $02, $02, $02, $02, $00, $00, $00, $00, $02, $02, $02, $02 C3/19BB: .DB $02, $02, $02, $02, $02, $02, $02, $02, $00, $00, $00, $00 ; [ Character Sprite Thread (save menu) ] C3/19C7: A6 2D LDX $2D C3/19C9: 20 06 12 JSR $1206 ; init animation thread C3/19CC: 20 21 12 JSR $1221 ; update animation thread C3/19CF: 18 CLC C3/19D0: 60 RTS ; [ Calculate Saved Game Data CheckSum ] C3/19D1: 64 E7 STZ $E7 ; +$E7 = SRAM checksum C3/19D3: 64 E8 STZ $E8 C3/19D5: A6 00 LDX $00 C3/19D7: 18 CLC C3/19D8: BD 00 16 LDA $1600,X ; sum all bytes of saved game data C3/19DB: 65 E7 ADC $E7 C3/19DD: 85 E7 STA $E7 C3/19DF: 7B TDC C3/19E0: 65 E8 ADC $E8 C3/19E2: 85 E8 STA $E8 C3/19E4: E8 INX C3/19E5: E0 FE 09 CPX #$09FE C3/19E8: D0 EE BNE $19D8 C3/19EA: 60 RTS ; [ Check Saved Game Data CheckSum ] ; +$E7 = calculated checksum C3/19EB: C2 20 REP #$20 C3/19ED: A5 E7 LDA $E7 C3/19EF: CD FE 1F CMP $1FFE C3/19F2: D0 02 BNE $19F6 ; return 0 if invalid C3/19F4: 80 01 BRA $19F7 ; return checksum value if valid C3/19F6: 7B TDC C3/19F7: A8 TAY C3/19F8: E2 20 SEP #$20 C3/19FA: 60 RTS ; [ Menu State $53: Fade Out (save menu) ] C3/19FB: 20 4F 30 JSR $304F ; create fade out thread C3/19FE: A0 08 00 LDY #$0008 C3/1A01: 84 20 STY $20 C3/1A03: A9 54 LDA #$54 C3/1A05: 85 26 STA $26 C3/1A07: 4C 03 19 JMP $1903 ; update character sprites (save menu) ; [ Menu State $52: Fade In (save menu) ] C3/1A0A: 20 56 30 JSR $3056 ; create fade in thread C3/1A0D: A0 08 00 LDY #$0008 C3/1A10: 84 20 STY $20 C3/1A12: A9 54 LDA #$54 C3/1A14: 85 26 STA $26 C3/1A16: 4C 03 19 JMP $1903 ; update character sprites (save menu) ; [ Menu State $54: Wait for Fade (save menu) ] C3/1A19: A4 20 LDY $20 C3/1A1B: D0 04 BNE $1A21 C3/1A1D: A5 27 LDA $27 ; go to next menu state C3/1A1F: 85 26 STA $26 C3/1A21: 4C 03 19 JMP $1903 ; update character sprites (save menu) ; C3/1A24: ( 3, 8) "Empty" ; C3/1A2C: ( 3,15) "Empty" ; C3/1A34: ( 3,22) "Empty" ; C3/1A3C: ( 3,10) "Time" ; C3/1A43: ( 3,17) "Time" ; C3/1A4A: ( 3,24) "Time" ; C3/1A51: ( 4,11) ":" ; C3/1A55: ( 4,18) ":" ; C3/1A59: ( 4,25) ":" ; C3/1A5D: (25, 8) "LV" ; C3/1A62: (25,15) "LV" ; C3/1A67: (25,22) "LV" ; C3/1A6C: (25,10) "/" ; C3/1A70: (25,17) "/" ; C3/1A74: (25,24) "/" ; C3/1A78: (15, 4) "Save" ; C3/1A7F: (13, 4) "New Game" C3/1A24: .DB $7A4F \ .DB $84, $A6, $A9, $AD, $B2, $00 C3/1A2C: .DB $7C0F \ .DB $84, $A6, $A9, $AD, $B2, $00 C3/1A34: .DB $7DCF \ .DB $84, $A6, $A9, $AD, $B2, $00 C3/1A3C: .DB $7ACF \ .DB $93, $A2, $A6, $9E, $00 C3/1A43: .DB $7C8F \ .DB $93, $A2, $A6, $9E, $00 C3/1A4A: .DB $7E4F \ .DB $93, $A2, $A6, $9E, $00 C3/1A51: .DB $7B11 \ .DB $C1, $00 C3/1A55: .DB $7CD1 \ .DB $C1, $00 C3/1A59: .DB $7E91 \ .DB $C1, $00 C3/1A5D: .DB $7A7B \ .DB $8B, $95, $00 C3/1A62: .DB $7C3B \ .DB $8B, $95, $00 C3/1A67: .DB $7DFB \ .DB $8B, $95, $00 C3/1A6C: .DB $7AFB \ .DB $C0, $00 C3/1A70: .DB $7CBB \ .DB $C0, $00 C3/1A74: .DB $7E7B \ .DB $C0, $00 C3/1A78: .DB $7967 \ .DB $92, $9A, $AF, $9E, $00 C3/1A7F: .DB $7963 \ .DB $8D, $9E, $B0, $FF, $86, $9A, $A6, $9E, $00 ; -----------------------------------------[ Menu: Main Menu ]------------------------------------------ ; [ Menu State $04: Main Menu (init) ] C3/1A8A: 20 2F 35 JSR $352F ; disable interrupts C3/1A8D: 20 A8 1B JSR $1BA8 ; init character portraits C3/1A90: 20 89 0F JSR $0F89 ; disable DMA 2 C3/1A93: 20 6B 3A JSR $3A6B ; disable window 2 position HDMA C3/1A96: A9 04 LDA #$04 ; enable HDMA channel #2 (window 1 position) C3/1A98: 04 43 TSB $43 C3/1A9A: 20 89 0F JSR $0F89 ; disable DMA 2 C3/1A9D: 20 04 69 JSR $6904 ; clear bg scrolling registers C3/1AA0: A9 03 LDA #$03 ; set bg1 data address and screen size (4 screens) C3/1AA2: 8D 07 21 STA $2107 C3/1AA5: A9 43 LDA #$43 ; set bg3 data address and screen size (4 screens) C3/1AA7: 8D 09 21 STA $2109 C3/1AAA: A9 C0 LDA #$C0 ; disable HDMA channel #6 and #7 (bg1 horizontal & vertical scroll) C3/1AAC: 14 43 TRB $43 C3/1AAE: A9 02 LDA #$02 ; cursor 1 is active C3/1AB0: 85 46 STA $46 C3/1AB2: 20 F5 30 JSR $30F5 ; init BG (main menu) C3/1AB5: A9 00 LDA #$00 ; main menu cursor C3/1AB7: A0 42 2F LDY #$2F42 C3/1ABA: 20 73 11 JSR $1173 ; create thread C3/1ABD: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1AC0: 20 4E 35 JSR $354E ; init main screen designation HDMA (main menu) C3/1AC3: A0 02 00 LDY #$0002 ; bg1 vertical scroll = 2 C3/1AC6: 84 37 STY $37 C3/1AC8: 20 A3 36 JSR $36A3 ; init bg3 vscroll HDMA C3/1ACB: A9 05 LDA #$05 ; set next menu state C3/1ACD: 85 27 STA $27 C3/1ACF: A9 01 LDA #$01 ; fade in C3/1AD1: 85 26 STA $26 C3/1AD3: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $07: Item (init) ] C3/1AD6: 20 E2 1A JSR $1AE2 C3/1AD9: 20 FE 1A JSR $1AFE C3/1ADC: 20 0E 1B JSR $1B0E C3/1ADF: 4C 2E 1B JMP $1B2E C3/1AE2: 20 2F 35 JSR $352F ; disable interrupts C3/1AE5: 20 99 1B JSR $1B99 ; init description text C3/1AE8: 20 04 69 JSR $6904 ; clear bg scrolling registers C3/1AEB: 64 4A STZ $4A ; scroll position = 0 C3/1AED: 64 49 STZ $49 ; cursor position = 0 C3/1AEF: A9 F5 LDA #$F5 ; max scroll position = 245 C3/1AF1: 85 5C STA $5C C3/1AF3: A9 0A LDA #$0A ; page height = 10 C3/1AF5: 85 5A STA $5A C3/1AF7: A9 01 LDA #$01 ; page width = 1 C3/1AF9: 85 5B STA $5B C3/1AFB: 4C 1C 7D JMP $7D1C ; init cursor (item list) C3/1AFE: AD 4E 1D LDA $1D4E ; branch if cursor is not memory C3/1B01: 29 40 AND #$40 C3/1B03: F0 03 BEQ $1B08 C3/1B05: 20 AC 0D JSR $0DAC ; restore saved cursor position (item list) C3/1B08: 20 25 7D JSR $7D25 ; update cursor (item list) C3/1B0B: 4C A3 7D JMP $7DA3 ; init BG (item list) C3/1B0E: 20 2B 7E JSR $7E2B ; init scrolling HDMA (item list) C3/1B11: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1B14: 20 1F 09 JSR $091F ; init scroll indicator thread C3/1B17: C2 20 REP #$20 C3/1B19: A9 70 00 LDA #$0070 C3/1B1C: 9F 4A 35 7E STA $7E354A,X C3/1B20: A9 58 00 LDA #$0058 C3/1B23: 9F CA 34 7E STA $7E34CA,X C3/1B27: E2 20 SEP #$20 C3/1B29: A9 01 LDA #$01 C3/1B2B: 85 26 STA $26 C3/1B2D: 60 RTS C3/1B2E: A9 08 LDA #$08 ; set next menu state C3/1B30: 85 27 STA $27 C3/1B32: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $77: Item Select (init, return from character select) ] C3/1B35: 20 E2 1A JSR $1AE2 C3/1B38: A5 8E LDA $8E C3/1B3A: 85 4D STA $4D C3/1B3C: A4 8E LDY $8E C3/1B3E: 84 4F STY $4F C3/1B40: A5 90 LDA $90 C3/1B42: 85 4A STA $4A C3/1B44: A5 4A LDA $4A C3/1B46: 85 E0 STA $E0 C3/1B48: A5 50 LDA $50 C3/1B4A: 38 SEC C3/1B4B: E5 E0 SBC $E0 C3/1B4D: 85 4E STA $4E C3/1B4F: 20 25 7D JSR $7D25 C3/1B52: 20 A3 7D JSR $7DA3 C3/1B55: 20 0E 1B JSR $1B0E C3/1B58: 4C 2E 1B JMP $1B2E ; [ Menu State $09: Skills (init) ] C3/1B5B: 20 2F 35 JSR $352F ; disable interrupts C3/1B5E: 7B TDC C3/1B5F: A5 28 LDA $28 ; selected character slot C3/1B61: AA TAX C3/1B62: B5 69 LDA $69,X ; selected character number C3/1B64: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/1B68: 20 A8 1B JSR $1BA8 ; init character portraits C3/1B6B: 20 08 6A JSR $6A08 ; disable window 1 position HDMA C3/1B6E: 64 4A STZ $4A ; clear scroll positions C3/1B70: 64 49 STZ $49 C3/1B72: 20 BC 4D JSR $4DBC ; init bg scrolling HDMA (skills) C3/1B75: 20 80 4C JSR $4C80 ; init bg (skills) C3/1B78: 20 50 4B JSR $4B50 ; init cursor (skills) C3/1B7B: AD 4E 1D LDA $1D4E ; branch if cursor setting is not memory C3/1B7E: 29 40 AND #$40 C3/1B80: F0 03 BEQ $1B85 C3/1B82: 20 FF 0D JSR $0DFF ; restore saved cursor selection (skills) C3/1B85: 20 59 4B JSR $4B59 ; update cursor C3/1B88: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1B8B: 20 99 1B JSR $1B99 ; init description text C3/1B8E: A9 01 LDA #$01 ; fade in C3/1B90: 85 26 STA $26 C3/1B92: A9 0A LDA #$0A ; set next menu state C3/1B94: 85 27 STA $27 C3/1B96: 4C 41 35 JMP $3541 ; enable interrupts ; [ Init Description Text ] C3/1B99: 20 96 A7 JSR $A796 ; clear description text graphics buffer C3/1B9C: 20 91 A9 JSR $A991 ; copy description text graphics to VRAM C3/1B9F: A9 00 LDA #$00 C3/1BA1: A0 0E A8 LDY #$A80E C3/1BA4: 20 73 11 JSR $1173 ; create thread C3/1BA7: 60 RTS ; [ Init Character Portraits ] C3/1BA8: 20 15 69 JSR $6915 ; init party character data C3/1BAB: 20 82 6E JSR $6E82 ; load character portrait graphics C3/1BAE: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/1BB1: A9 05 LDA #$05 ; enable ??? & color palette DMA C3/1BB3: 04 45 TSB $45 C3/1BB5: 4C D2 14 JMP $14D2 ; copy color palettes to PPU ; [ Menu State $35: ] C3/1BB8: 20 BD 1B JSR $1BBD C3/1BBB: 80 1A BRA $1BD7 C3/1BBD: 20 2F 35 JSR $352F ; disable interrupts C3/1BC0: 20 08 6A JSR $6A08 C3/1BC3: A9 06 LDA #$06 C3/1BC5: 04 46 TSB $46 C3/1BC7: 64 4A STZ $4A C3/1BC9: 64 49 STZ $49 C3/1BCB: 20 B6 94 JSR $94B6 C3/1BCE: 20 50 8E JSR $8E50 C3/1BD1: 20 59 8E JSR $8E59 C3/1BD4: 4C B0 07 JMP $07B0 ; create cursor sprite thread C3/1BD7: 20 32 90 JSR $9032 C3/1BDA: A9 01 LDA #$01 C3/1BDC: 85 26 STA $26 C3/1BDE: A9 36 LDA #$36 C3/1BE0: 85 27 STA $27 C3/1BE2: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $7E: ] C3/1BE5: 20 01 1C JSR $1C01 C3/1BE8: 20 4F 96 JSR $964F C3/1BEB: 20 0A 1C JSR $1C0A C3/1BEE: A9 55 LDA #$55 C3/1BF0: 4C 15 1C JMP $1C15 ; [ Menu State $7F: ] C3/1BF3: 20 01 1C JSR $1C01 C3/1BF6: 20 56 96 JSR $9656 C3/1BF9: 20 0A 1C JSR $1C0A C3/1BFC: A9 56 LDA #$56 C3/1BFE: 4C 15 1C JMP $1C15 C3/1C01: 20 BD 1B JSR $1BBD C3/1C04: 20 32 90 JSR $9032 C3/1C07: 4C 14 96 JMP $9614 C3/1C0A: 20 6C 8E JSR $8E6C C3/1C0D: 20 75 8E JSR $8E75 C3/1C10: A9 01 LDA #$01 C3/1C12: 85 26 STA $26 C3/1C14: 60 RTS C3/1C15: 85 27 STA $27 C3/1C17: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $6D: ] C3/1C1A: 20 BD 1B JSR $1BBD C3/1C1D: 20 F0 96 JSR $96F0 C3/1C20: A9 02 LDA #$02 C3/1C22: 85 25 STA $25 C3/1C24: 80 B1 BRA $1BD7 ; [ Menu State $6E: ] C3/1C26: 20 BD 1B JSR $1BBD C3/1C29: 20 A8 96 JSR $96A8 C3/1C2C: A9 02 LDA #$02 C3/1C2E: 85 25 STA $25 C3/1C30: 80 A5 BRA $1BD7 ; [ Menu State $38: ] C3/1C32: 20 2F 35 JSR $352F ; disable interrupts C3/1C35: 20 97 94 JSR $9497 C3/1C38: 20 ED 8E JSR $8EED C3/1C3B: A9 01 LDA #$01 C3/1C3D: 85 26 STA $26 C3/1C3F: A9 39 LDA #$39 C3/1C41: 85 27 STA $27 C3/1C43: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $0B: Status (init) ] C3/1C46: 20 2F 35 JSR $352F ; disable interrupts C3/1C49: 20 0B 62 JSR $620B C3/1C4C: 20 05 5D JSR $5D05 C3/1C4F: 20 5D 1C JSR $1C5D C3/1C52: A9 01 LDA #$01 C3/1C54: 85 26 STA $26 C3/1C56: A9 0C LDA #$0C C3/1C58: 85 27 STA $27 C3/1C5A: 4C 41 35 JMP $3541 ; enable interrupts C3/1C5D: 7B TDC C3/1C5E: A5 28 LDA $28 C3/1C60: 0A ASL C3/1C61: AA TAX C3/1C62: B4 6D LDY $6D,X C3/1C64: B9 00 00 LDA $0000,Y C3/1C67: C9 0C CMP #$0C C3/1C69: D0 0D BNE $1C78 C3/1C6B: 20 FF 36 JSR $36FF C3/1C6E: 20 08 37 JSR $3708 C3/1C71: A9 06 LDA #$06 C3/1C73: 04 46 TSB $46 C3/1C75: 4C B0 07 JMP $07B0 ; create cursor sprite thread C3/1C78: A9 06 LDA #$06 C3/1C7A: 14 46 TRB $46 C3/1C7C: 60 RTS ; [ Menu State $0D: Config (init) ] C3/1C7D: 20 2F 35 JSR $352F ; disable interrupts C3/1C80: 64 4A STZ $4A ; set page to 0 C3/1C82: 20 4C 3A JSR $3A4C ; init window 2 position HDMA C3/1C85: 20 9E 38 JSR $389E ; init config BG C3/1C88: 20 58 38 JSR $3858 ; init cursor (config page 1) C3/1C8B: A5 5F LDA $5F ; restore cursor position C3/1C8D: 85 4E STA $4E C3/1C8F: 20 61 38 JSR $3861 ; update cursor C3/1C92: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1C95: A9 01 LDA #$01 C3/1C97: 85 26 STA $26 ; fade in C3/1C99: A9 0E LDA #$0E C3/1C9B: 85 27 STA $27 ; config menu state C3/1C9D: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $13: Save Select (init) ] C3/1CA0: 20 2F 35 JSR $352F ; disable interrupts C3/1CA3: A0 02 00 LDY #$0002 C3/1CA6: 84 37 STY $37 ; bg1 vscroll C3/1CA8: 20 A3 36 JSR $36A3 ; init bg3 vscroll hdma C3/1CAB: A9 E3 LDA #$E3 C3/1CAD: 14 43 TRB $43 ; disable hdma 2, 3, 4 C3/1CAF: 20 EC 15 JSR $15EC ; init windows (save select) C3/1CB2: 20 C7 6C JSR $6CC7 ; load character sprite palettes C3/1CB5: 20 84 6C JSR $6C84 ; load cursor/icon palettes C3/1CB8: 20 A4 15 JSR $15A4 ; init cursor (save select) C3/1CBB: A4 91 LDY $91 C3/1CBD: D0 08 BNE $1CC7 C3/1CBF: A4 93 LDY $93 C3/1CC1: D0 04 BNE $1CC7 C3/1CC3: A4 95 LDY $95 C3/1CC5: F0 06 BEQ $1CCD C3/1CC7: AD 24 02 LDA $0224 ; current save slot C3/1CCA: 3A DEC C3/1CCB: 85 4E STA $4E ; set cursor position C3/1CCD: 20 AD 15 JSR $15AD ; update cursor (save select) C3/1CD0: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1CD3: A5 4B LDA $4B C3/1CD5: 1A INC C3/1CD6: 85 66 STA $66 ; save slot C3/1CD8: A9 52 LDA #$52 ; menu state $52 (fade in, save menu) C3/1CDA: 85 26 STA $26 C3/1CDC: A9 14 LDA #$14 ; next menu state $14 (save select) C3/1CDE: 85 27 STA $27 C3/1CE0: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $15: Save Confirm (init) ] C3/1CE3: 20 2F 35 JSR $352F ; disable interrupts C3/1CE6: 20 15 69 JSR $6915 ; init party character data C3/1CE9: 20 28 31 JSR $3128 C3/1CEC: 20 D4 15 JSR $15D4 ; init cursor (save/restore confirm) C3/1CEF: 20 DD 15 JSR $15DD C3/1CF2: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1CF5: 20 D1 18 JSR $18D1 C3/1CF8: A9 16 LDA #$16 ; next menu state $16 (save confirm) C3/1CFA: 85 27 STA $27 C3/1CFC: A9 01 LDA #$01 ; menu state $01 (fade in) C3/1CFE: 85 26 STA $26 C3/1D00: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $20: Restore Game (init) ] C3/1D03: 20 2F 35 JSR $352F ; disable interrupts C3/1D06: A0 02 00 LDY #$0002 C3/1D09: 84 37 STY $37 C3/1D0B: 20 A3 36 JSR $36A3 ; init bg3 vscroll hdma C3/1D0E: A9 E3 LDA #$E3 C3/1D10: 14 43 TRB $43 C3/1D12: A4 00 LDY $00 C3/1D14: 84 35 STY $35 C3/1D16: 84 39 STY $39 C3/1D18: 84 3D STY $3D C3/1D1A: A9 02 LDA #$02 C3/1D1C: 85 46 STA $46 C3/1D1E: 20 08 16 JSR $1608 ; init windows (restore game) C3/1D21: 20 C7 6C JSR $6CC7 ; load character sprite palettes C3/1D24: 20 84 6C JSR $6C84 ; load cursor/icon palettes C3/1D27: 20 B8 15 JSR $15B8 ; init cursor (restore game) C3/1D2A: A4 91 LDY $91 C3/1D2C: D0 08 BNE $1D36 ; branch if slot 1 is valid C3/1D2E: A4 93 LDY $93 C3/1D30: D0 04 BNE $1D36 ; branch if slot 2 is valid C3/1D32: A4 95 LDY $95 C3/1D34: F0 06 BEQ $1D3C ; branch if slot 3 is not valid C3/1D36: AF F0 7F 30 LDA $307FF0 ; most recently saved slot C3/1D3A: 85 4E STA $4E ; set current position C3/1D3C: 20 C1 15 JSR $15C1 ; update cursor position (restore game) C3/1D3F: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1D42: A5 4B LDA $4B C3/1D44: 85 66 STA $66 C3/1D46: A9 21 LDA #$21 ; next menu state $21 (restore game) C3/1D48: 85 27 STA $27 C3/1D4A: A9 52 LDA #$52 ; current menu state $52 (fade in, save menu) C3/1D4C: 85 26 STA $26 C3/1D4E: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $22: Restore Confirm (init) ] C3/1D51: 20 2F 35 JSR $352F ; disable interrupts C3/1D54: 20 15 69 JSR $6915 ; init party character data C3/1D57: 20 4C 31 JSR $314C C3/1D5A: 20 D4 15 JSR $15D4 ; init cursor (save/restore confirm) C3/1D5D: 20 DD 15 JSR $15DD C3/1D60: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1D63: 20 D1 18 JSR $18D1 C3/1D66: A9 23 LDA #$23 C3/1D68: 85 27 STA $27 C3/1D6A: A9 01 LDA #$01 C3/1D6C: 85 26 STA $26 C3/1D6E: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $00: Fade Out (init) ] C3/1D71: 20 4F 30 JSR $304F ; create fade out thread C3/1D74: A0 08 00 LDY #$0008 ; set wait counter C3/1D77: 84 20 STY $20 C3/1D79: A9 02 LDA #$02 ; set next menu state C3/1D7B: 85 26 STA $26 C3/1D7D: 60 RTS ; [ Menu State $01: Fade In (init) ] C3/1D7E: 20 56 30 JSR $3056 ; create fade in thread C3/1D81: A0 08 00 LDY #$0008 ; set wait counter C3/1D84: 84 20 STY $20 C3/1D86: A9 02 LDA #$02 ; set next menu state C3/1D88: 85 26 STA $26 C3/1D8A: 60 RTS ; [ Menu State $02: Wait for Fade ] C3/1D8B: A4 20 LDY $20 ; return if frame counter is not 0 C3/1D8D: D0 04 BNE $1D93 C3/1D8F: A5 27 LDA $27 ; go to next menu state C3/1D91: 85 26 STA $26 C3/1D93: 60 RTS ; [ Menu State $03: Main Menu Re-Init (from char select) ] C3/1D94: A9 00 LDA #$00 ; priority 0 C3/1D96: A0 42 2F LDY #$2F42 ; main menu cursor thread C3/1D99: 20 73 11 JSR $1173 ; create thread C3/1D9C: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1D9F: A9 05 LDA #$05 ; main menu state C3/1DA1: 85 26 STA $26 C3/1DA3: 60 RTS ; [ Menu State $05: Main Menu ] C3/1DA4: 20 48 35 JSR $3548 ; draw time text C3/1DA7: A5 08 LDA $08 C3/1DA9: 89 80 BIT #$80 C3/1DAB: F0 03 BEQ $1DB0 ; branch if A button is not pressed C3/1DAD: 4C 62 2E JMP $2E62 ; main menu: A button pressed C3/1DB0: A5 09 LDA $09 C3/1DB2: 89 02 BIT #$02 C3/1DB4: F0 06 BEQ $1DBC ; branch if left button is not pressed C3/1DB6: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/1DB9: 4C C6 2E JMP $2EC6 ; main menu: left button pressed C3/1DBC: A5 09 LDA $09 C3/1DBE: 89 80 BIT #$80 C3/1DC0: F0 0F BEQ $1DD1 ; return if B button is not pressed C3/1DC2: 9C 05 02 STZ $0205 C3/1DC5: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/1DC8: 20 D2 1D JSR $1DD2 ; update field equipment effects C3/1DCB: A9 FF LDA #$FF C3/1DCD: 85 27 STA $27 ; terminate menu C3/1DCF: 64 26 STZ $26 ; fade out C3/1DD1: 60 RTS ; [ Update Field Equipment Effects ] C3/1DD2: 9C DF 11 STZ $11DF ; clear all field equipment effects C3/1DD5: A6 00 LDX $00 C3/1DD7: B5 69 LDA $69,X ; character in each party slot C3/1DD9: 30 06 BMI $1DE1 C3/1DDB: DA PHX C3/1DDC: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/1DE0: FA PLX C3/1DE1: E8 INX ; next character slot C3/1DE2: E0 04 00 CPX #$0004 C3/1DE5: D0 F0 BNE $1DD7 C3/1DE7: 60 RTS ; [ Menu State $06: Main Menu (select character) ] C3/1DE8: 20 48 35 JSR $3548 ; draw time text C3/1DEB: A5 09 LDA $09 C3/1DED: 89 80 BIT #$80 C3/1DEF: F0 0C BEQ $1DFD ; branch if B button is not pressed C3/1DF1: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/1DF4: A9 05 LDA #$05 C3/1DF6: 14 46 TRB $46 ; disable cursor 2 and flashing cursor C3/1DF8: A9 03 LDA #$03 C3/1DFA: 85 26 STA $26 ; main menu (re-init) C3/1DFC: 60 RTS C3/1DFD: A5 09 LDA $09 ; branch if left button is not pressed C3/1DFF: 89 02 BIT #$02 C3/1E01: F0 1C BEQ $1E1F C3/1E03: A5 25 LDA $25 ; branch if not equip or relic C3/1E05: C9 02 CMP #$02 C3/1E07: F0 04 BEQ $1E0D C3/1E09: C9 03 CMP #$03 C3/1E0B: D0 12 BNE $1E1F C3/1E0D: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/1E10: A9 06 LDA #$06 C3/1E12: 14 46 TRB $46 ; disable cursor 1 and 2 C3/1E14: A9 37 LDA #$37 C3/1E16: 85 26 STA $26 ; set menu state to $37 (select all) C3/1E18: A5 4E LDA $4E ; save cursor position C3/1E1A: 85 5E STA $5E C3/1E1C: 4C 9F 08 JMP $089F ; create multi cursor C3/1E1F: A5 08 LDA $08 ; return if A button is not pressed C3/1E21: 89 80 BIT #$80 C3/1E23: F0 07 BEQ $1E2C C3/1E25: A5 4B LDA $4B ; cursor selection C3/1E27: 85 28 STA $28 ; set selected character slot C3/1E29: 4C 2D 1E JMP $1E2D C3/1E2C: 60 RTS C3/1E2D: 20 4E 1E JSR $1E4E ; check if character slot is valid C3/1E30: B0 10 BCS $1E42 ; branch if not C3/1E32: 7B TDC C3/1E33: A5 25 LDA $25 ; main menu selection C3/1E35: AA TAX C3/1E36: BF 49 1E C3 LDA $C31E49,X ; init menu state C3/1E3A: 85 27 STA $27 C3/1E3C: 64 26 STZ $26 ; fade out C3/1E3E: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/1E41: 60 RTS C3/1E42: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/1E45: 20 5D 30 JSR $305D ; create mosaic thread C3/1E48: 60 RTS ; init menu states for main menu commands C3/1E49: .DB $FF, $09, $35, $58, $0B ; [ Check if Character Slot is Valid (skills/equip/relic/status) ] ; carry clear = valid ; carry set = invalid C3/1E4E: 7B TDC C3/1E4F: A5 25 LDA $25 ; main menu selection C3/1E51: C9 01 CMP #$01 C3/1E53: F0 34 BEQ $1E89 ; branch if skills C3/1E55: C9 02 CMP #$02 C3/1E57: F0 06 BEQ $1E5F ; branch if equip C3/1E59: C9 03 CMP #$03 C3/1E5B: F0 17 BEQ $1E74 ; branch if relic C3/1E5D: 80 54 BRA $1EB3 ; branch if status (always valid) ; equip C3/1E5F: 7B TDC C3/1E60: A5 28 LDA $28 C3/1E62: 0A ASL C3/1E63: AA TAX C3/1E64: C2 20 REP #$20 C3/1E66: B5 6D LDA $6D,X C3/1E68: E2 20 SEP #$20 C3/1E6A: AA TAX C3/1E6B: BD 00 00 LDA $0000,X ; not valid for characters $0D (UMARO) and higher C3/1E6E: C9 0D CMP #$0D C3/1E70: B0 3F BCS $1EB1 C3/1E72: 80 28 BRA $1E9C ; relic C3/1E74: 7B TDC C3/1E75: A5 28 LDA $28 C3/1E77: 0A ASL C3/1E78: AA TAX C3/1E79: C2 20 REP #$20 C3/1E7B: B5 6D LDA $6D,X C3/1E7D: E2 20 SEP #$20 C3/1E7F: AA TAX C3/1E80: BD 00 00 LDA $0000,X ; not valid for characters $0E and higher C3/1E83: C9 0E CMP #$0E C3/1E85: B0 2A BCS $1EB1 C3/1E87: 80 13 BRA $1E9C ; skills C3/1E89: 20 3D 4D JSR $4D3D ; update skills text colors C3/1E8C: A9 24 LDA #$24 C3/1E8E: A6 00 LDX $00 C3/1E90: D5 79 CMP $79,X ; branch if at least one is not disabled C3/1E92: D0 08 BNE $1E9C C3/1E94: E8 INX C3/1E95: E0 07 00 CPX #$0007 C3/1E98: D0 F6 BNE $1E90 C3/1E9A: 80 15 BRA $1EB1 ; check status C3/1E9C: 7B TDC C3/1E9D: A5 28 LDA $28 C3/1E9F: 0A ASL C3/1EA0: AA TAX C3/1EA1: C2 20 REP #$20 C3/1EA3: B5 6D LDA $6D,X C3/1EA5: E2 20 SEP #$20 C3/1EA7: AA TAX C3/1EA8: BD 14 00 LDA $0014,X ; not valid if wound, petrify, or zombie status C3/1EAB: 29 C2 AND #$C2 C3/1EAD: D0 02 BNE $1EB1 C3/1EAF: 80 02 BRA $1EB3 ; invalid C3/1EB1: 38 SEC C3/1EB2: 60 RTS ; valid C3/1EB3: 18 CLC C3/1EB4: 60 RTS ; [ Menu State $37: Main Menu (select all for equip/relic) ] C3/1EB5: 20 48 35 JSR $3548 ; draw time text C3/1EB8: A5 09 LDA $09 C3/1EBA: 89 80 BIT #$80 C3/1EBC: D0 06 BNE $1EC4 ; branch if B button is down C3/1EBE: A5 09 LDA $09 C3/1EC0: 89 01 BIT #$01 C3/1EC2: F0 21 BEQ $1EE5 ; branch if right button is not down C3/1EC4: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/1EC7: 20 98 2F JSR $2F98 ; init character select cursor C3/1ECA: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/1ECD: A9 00 LDA #$00 C3/1ECF: A0 C0 2F LDY #$2FC0 ; character select cursor thread C3/1ED2: 20 73 11 JSR $1173 ; create thread C3/1ED5: 20 B0 11 JSR $11B0 ; execute threads C3/1ED8: A5 5E LDA $5E ; restore cursor position C3/1EDA: 85 4E STA $4E C3/1EDC: A9 06 LDA #$06 ; menu state $06 (char select) C3/1EDE: 85 26 STA $26 C3/1EE0: A9 08 LDA #$08 ; disable multi cursor C3/1EE2: 14 46 TRB $46 C3/1EE4: 60 RTS C3/1EE5: A5 08 LDA $08 ; return if A button is not down C3/1EE7: 89 80 BIT #$80 C3/1EE9: F0 0A BEQ $1EF5 C3/1EEB: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/1EEE: 64 26 STZ $26 C3/1EF0: A9 38 LDA #$38 ; menu state $38 (equip all, init) C3/1EF2: 85 27 STA $27 C3/1EF4: 60 RTS C3/1EF5: 60 RTS ; [ Menu State $08: Item (select) ] C3/1EF6: 60 RTS C3/1EF7: A9 10 LDA #$10 C3/1EF9: 14 45 TRB $45 C3/1EFB: 7B TDC C3/1EFC: 85 2A STA $2A C3/1EFE: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/1F01: 20 64 1F JSR $1F64 ; list text page up/down C3/1F04: B0 F0 BCS $1EF6 C3/1F06: 20 22 7D JSR $7D22 ; update cursor (item list) C3/1F09: 20 F1 82 JSR $82F1 C3/1F0C: A5 09 LDA $09 C3/1F0E: 89 80 BIT #$80 C3/1F10: F0 29 BEQ $1F3B C3/1F12: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/1F15: A4 4F LDY $4F C3/1F17: 8C 2F 02 STY $022F C3/1F1A: A5 4A LDA $4A C3/1F1C: 8D 31 02 STA $0231 C3/1F1F: 20 80 7D JSR $7D80 C3/1F22: AD 4E 1D LDA $1D4E C3/1F25: 29 40 AND #$40 C3/1F27: F0 05 BEQ $1F2E C3/1F29: AC 34 02 LDY $0234 C3/1F2C: 84 4D STY $4D C3/1F2E: 20 86 7D JSR $7D86 C3/1F31: A9 17 LDA #$17 C3/1F33: 85 26 STA $26 C3/1F35: 20 85 83 JSR $8385 C3/1F38: 4C 39 0F JMP $0F39 C3/1F3B: A5 08 LDA $08 C3/1F3D: 89 80 BIT #$80 C3/1F3F: F0 0E BEQ $1F4F C3/1F41: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/1F44: A5 4B LDA $4B C3/1F46: 85 28 STA $28 C3/1F48: A9 19 LDA #$19 C3/1F4A: 85 26 STA $26 C3/1F4C: 4C 21 2F JMP $2F21 C3/1F4F: 60 RTS ; (branch from C3/1F9B) C3/1F50: 64 50 STZ $50 C3/1F52: 64 4E STZ $4E C3/1F54: 38 SEC C3/1F55: 60 RTS ; (branch from C3/1F72) C3/1F56: A5 54 LDA $54 C3/1F58: 3A DEC C3/1F59: 85 4E STA $4E C3/1F5B: 18 CLC C3/1F5C: 65 4A ADC $4A C3/1F5E: 85 50 STA $50 C3/1F60: 38 SEC C3/1F61: 60 RTS ; waiting (branch from C3/1F66) C3/1F62: 18 CLC C3/1F63: 60 RTS ; [ list text page up/down ] C3/1F64: A5 20 LDA $20 C3/1F66: D0 FA BNE $1F62 ; branch if wait frame counter not zero C3/1F68: A5 0A LDA $0A C3/1F6A: 89 10 BIT #$10 C3/1F6C: F0 25 BEQ $1F93 ; branch if R button is not pressed C3/1F6E: A5 4A LDA $4A C3/1F70: C5 5C CMP $5C C3/1F72: F0 E2 BEQ $1F56 C3/1F74: A5 5C LDA $5C C3/1F76: 38 SEC C3/1F77: E5 4A SBC $4A C3/1F79: C5 5A CMP $5A C3/1F7B: B0 02 BCS $1F7F C3/1F7D: 80 02 BRA $1F81 C3/1F7F: A5 5A LDA $5A C3/1F81: 85 E0 STA $E0 C3/1F83: A5 4A LDA $4A C3/1F85: 18 CLC C3/1F86: 65 E0 ADC $E0 C3/1F88: 85 4A STA $4A C3/1F8A: A5 50 LDA $50 C3/1F8C: 18 CLC C3/1F8D: 65 E0 ADC $E0 C3/1F8F: 85 50 STA $50 C3/1F91: 80 24 BRA $1FB7 C3/1F93: A5 0A LDA $0A C3/1F95: 89 20 BIT #$20 C3/1F97: F0 C9 BEQ $1F62 ; branch if L button is not pressed C3/1F99: A5 4A LDA $4A C3/1F9B: F0 B3 BEQ $1F50 ; branch if at the top of the list C3/1F9D: C5 5A CMP $5A C3/1F9F: B0 04 BCS $1FA5 C3/1FA1: A5 4A LDA $4A C3/1FA3: 80 02 BRA $1FA7 C3/1FA5: A5 5A LDA $5A C3/1FA7: 85 E0 STA $E0 C3/1FA9: A5 4A LDA $4A C3/1FAB: 38 SEC C3/1FAC: E5 E0 SBC $E0 C3/1FAE: 85 4A STA $4A C3/1FB0: A5 50 LDA $50 C3/1FB2: 38 SEC C3/1FB3: E5 E0 SBC $E0 C3/1FB5: 85 50 STA $50 C3/1FB7: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/1FBA: 7B TDC C3/1FBB: A5 2A LDA $2A ; list type C3/1FBD: 0A ASL C3/1FBE: AA TAX C3/1FBF: FC C4 1F JSR ($1FC4,X) C3/1FC2: 38 SEC C3/1FC3: 60 RTS ; jump table for list type C3/1FC4: .DW $1FD0, $1FD6, $1FDC, $1FE2, $1FE8, $1FEE ; 0: item list C3/1FD0: 20 95 7E JSR $7E95 ; load bg1 vertical scroll hdma table (item list) C3/1FD3: 4C 88 7F JMP $7F88 ; init item list text (item menu) ; 1: magic C3/1FD6: 20 2D 4E JSR $4E2D C3/1FD9: 4C 87 4F JMP $4F87 ; 2: lore C3/1FDC: 20 2D 4E JSR $4E2D C3/1FDF: 4C 3C 52 JMP $523C ; 3: rage C3/1FE2: 20 2D 4E JSR $4E2D C3/1FE5: 4C A7 53 JMP $53A7 ; 4: esper C3/1FE8: 20 2D 4E JSR $4E2D C3/1FEB: 4C 6C 54 JMP $546C ; 5: equip/relic item list C3/1FEE: 20 20 95 JSR $9520 C3/1FF1: 4C AC 9C JMP $9CAC ; [ Menu State $0A: Skills (select) ] C3/1FF4: A9 10 LDA #$10 ; C3/1FF6: 04 45 TSB $45 C3/1FF8: A9 C0 LDA #$C0 ; page can't scroll up or down C3/1FFA: 14 46 TRB $46 C3/1FFC: 20 56 4B JSR $4B56 ; update cursor ; return to main menu (B button) C3/1FFF: A5 09 LDA $09 C3/2001: 89 80 BIT #$80 C3/2003: F0 0A BEQ $200F ; branch if b button is not pressed C3/2005: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/2008: A9 04 LDA #$04 ; fade out and init main menu C3/200A: 85 27 STA $27 C3/200C: 64 26 STZ $26 C3/200E: 60 RTS ; open selected skills menu (A button) C3/200F: A5 08 LDA $08 ; branch if a button is not pressed C3/2011: 89 80 BIT #$80 C3/2013: F0 07 BEQ $201C C3/2015: A5 4E LDA $4E C3/2017: 85 5E STA $5E C3/2019: 4C 8A 20 JMP $208A ; go to next character (top R button) C3/201C: A9 09 LDA #$09 ; next menu state (init another character's skills menu) C3/201E: 85 E0 STA $E0 C3/2020: 80 00 BRA $2022 ; check R & L buttons ; [ Check R & L Buttons ] ; $E0 = menu state to go to if user pressed top R or L C3/2022: A5 B5 LDA $B5 ; screen mosaic C3/2024: 29 F0 AND #$F0 C3/2026: D0 61 BNE $2089 ; return if mosaic'ing C3/2028: A5 08 LDA $08 C3/202A: 89 10 BIT #$10 C3/202C: F0 2B BEQ $2059 ; branch if top R button is not pressed ; go to next character (top R button) C3/202E: A5 25 LDA $25 C3/2030: C9 03 CMP #$03 C3/2032: D0 0B BNE $203F C3/2034: 20 EB 9E JSR $9EEB C3/2037: A5 99 LDA $99 C3/2039: F0 04 BEQ $203F C3/203B: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/203E: 60 RTS C3/203F: 7B TDC C3/2040: A5 28 LDA $28 ; increment selected character slot C3/2042: 1A INC C3/2043: 29 03 AND #$03 C3/2045: 85 28 STA $28 C3/2047: AA TAX C3/2048: B5 69 LDA $69,X C3/204A: 30 F3 BMI $203F C3/204C: 20 4E 1E JSR $1E4E C3/204F: B0 EE BCS $203F C3/2051: A5 E0 LDA $E0 ; init skills menu C3/2053: 85 26 STA $26 C3/2055: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/2058: 60 RTS ; go to previous character (top L button) C3/2059: A5 08 LDA $08 C3/205B: 89 20 BIT #$20 C3/205D: F0 2A BEQ $2089 ; return if top L button is not pressed C3/205F: A5 25 LDA $25 C3/2061: C9 03 CMP #$03 C3/2063: D0 0B BNE $2070 C3/2065: 20 EB 9E JSR $9EEB C3/2068: A5 99 LDA $99 C3/206A: F0 04 BEQ $2070 C3/206C: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/206F: 60 RTS C3/2070: 7B TDC C3/2071: A5 28 LDA $28 ; decrement selected character slot C3/2073: 3A DEC C3/2074: 29 03 AND #$03 C3/2076: 85 28 STA $28 C3/2078: AA TAX C3/2079: B5 69 LDA $69,X C3/207B: 30 F3 BMI $2070 C3/207D: 20 4E 1E JSR $1E4E C3/2080: B0 EE BCS $2070 C3/2082: A5 E0 LDA $E0 ; init skills menu C3/2084: 85 26 STA $26 C3/2086: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/2089: 60 RTS ; open selected skills menu (A button) C3/208A: 7B TDC C3/208B: A5 4B LDA $4B ; current selection C3/208D: AA TAX C3/208E: B5 79 LDA $79,X ; branch if not enabled C3/2090: C9 20 CMP #$20 C3/2092: D0 0A BNE $209E C3/2094: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2097: A5 4B LDA $4B C3/2099: 0A ASL C3/209A: AA TAX C3/209B: 7C A5 20 JMP ($20A5,X) ; invalid selection C3/209E: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/20A1: 20 5D 30 JSR $305D ; create mosaic thread C3/20A4: 60 RTS ; skills menu jump table (espers, magic, swdtech, blitz, lore, rage, dance) C3/20A5: .DW $20B3, $211C, $20EE, $2105, $216E, $21A6, $21DE ; [ Skills Menu $00: Espers (init) ] C3/20B3: 64 4A STZ $4A C3/20B5: 20 1F 09 JSR $091F ; init scroll indicator thread C3/20B8: C2 20 REP #$20 C3/20BA: A9 00 10 LDA #$1000 C3/20BD: 9F 4A 35 7E STA $7E354A,X C3/20C1: A9 68 00 LDA #$0068 C3/20C4: 9F CA 34 7E STA $7E34CA,X C3/20C8: E2 20 SEP #$20 C3/20CA: 20 18 4C JSR $4C18 ; init cursor (espers select) C3/20CD: 20 21 4C JSR $4C21 ; update cursor (espers select) C3/20D0: A9 06 LDA #$06 C3/20D2: 85 5C STA $5C ; max page scroll position = 6 C3/20D4: A9 08 LDA #$08 C3/20D6: 85 5A STA $5A C3/20D8: A9 02 LDA #$02 C3/20DA: 85 5B STA $5B C3/20DC: A0 00 01 LDY #$0100 C3/20DF: 84 39 STY $39 ; bg2 horizontal scroll = $0100 C3/20E1: 84 3D STY $3D ; bg3 horizontal scroll = $0100 C3/20E3: 20 52 54 JSR $5452 C3/20E6: A9 1E LDA #$1E C3/20E8: 85 26 STA $26 C3/20EA: 20 EB 2E JSR $2EEB C3/20ED: 60 RTS ; [ Skills Menu $02: SwdTech (init) ] C3/20EE: 64 4A STZ $4A C3/20F0: 20 CE 4B JSR $4BCE C3/20F3: 20 D7 4B JSR $4BD7 C3/20F6: A0 00 01 LDY #$0100 C3/20F9: 84 39 STY $39 C3/20FB: 84 3D STY $3D C3/20FD: 20 D7 52 JSR $52D7 C3/2100: A9 3E LDA #$3E C3/2102: 85 26 STA $26 C3/2104: 60 RTS ; [ Skills Menu $03: Blitz (init) ] C3/2105: 64 4A STZ $4A C3/2107: 20 CE 4B JSR $4BCE C3/210A: 20 D7 4B JSR $4BD7 C3/210D: A0 00 01 LDY #$0100 C3/2110: 84 39 STY $39 C3/2112: 84 3D STY $3D C3/2114: 20 D4 55 JSR $55D4 C3/2117: A9 33 LDA #$33 C3/2119: 85 26 STA $26 C3/211B: 60 RTS ; [ Skills Menu $01: Magic (init) ] C3/211C: 20 30 21 JSR $2130 C3/211F: 20 48 21 JSR $2148 C3/2122: 20 58 21 JSR $2158 C3/2125: 20 C6 51 JSR $51C6 C3/2128: 20 4D 0F JSR $0F4D C3/212B: A9 1A LDA #$1A C3/212D: 85 26 STA $26 C3/212F: 60 RTS C3/2130: 64 4A STZ $4A C3/2132: 20 1F 09 JSR $091F ; init scroll indicator thread C3/2135: C2 20 REP #$20 C3/2137: A9 0D 05 LDA #$050D C3/213A: 9F 4A 35 7E STA $7E354A,X C3/213E: A9 68 00 LDA #$0068 C3/2141: 9F CA 34 7E STA $7E34CA,X C3/2145: E2 20 SEP #$20 C3/2147: 60 RTS C3/2148: 20 82 4B JSR $4B82 C3/214B: AD 4E 1D LDA $1D4E C3/214E: 29 40 AND #$40 C3/2150: F0 03 BEQ $2155 C3/2152: 20 0A 0E JSR $0E0A ; restore saved cursor position (magic) C3/2155: 4C 8B 4B JMP $4B8B C3/2158: A9 13 LDA #$13 C3/215A: 85 5C STA $5C C3/215C: A9 08 LDA #$08 C3/215E: 85 5A STA $5A C3/2160: A9 02 LDA #$02 C3/2162: 85 5B STA $5B C3/2164: A0 00 01 LDY #$0100 C3/2167: 84 39 STY $39 C3/2169: 84 3D STY $3D C3/216B: 4C 7F 4D JMP $4D7F ; [ Skills Menu $04: Lore (init) ] C3/216E: 64 4A STZ $4A C3/2170: 20 1F 09 JSR $091F ; init scroll indicator thread C3/2173: C2 20 REP #$20 C3/2175: A9 00 06 LDA #$0600 C3/2178: 9F 4A 35 7E STA $7E354A,X C3/217C: A9 68 00 LDA #$0068 C3/217F: 9F CA 34 7E STA $7E34CA,X C3/2183: E2 20 SEP #$20 C3/2185: 20 F4 4B JSR $4BF4 C3/2188: 20 FD 4B JSR $4BFD C3/218B: A9 10 LDA #$10 C3/218D: 85 5C STA $5C C3/218F: A9 08 LDA #$08 C3/2191: 85 5A STA $5A C3/2193: A9 01 LDA #$01 C3/2195: 85 5B STA $5B C3/2197: A0 00 01 LDY #$0100 C3/219A: 84 39 STY $39 C3/219C: 84 3D STY $3D C3/219E: 20 F9 51 JSR $51F9 C3/21A1: A9 1B LDA #$1B C3/21A3: 85 26 STA $26 C3/21A5: 60 RTS ; [ Skills Menu $05: Rage (init) ] C3/21A6: 64 4A STZ $4A C3/21A8: 20 1F 09 JSR $091F ; init scroll indicator thread C3/21AB: C2 20 REP #$20 C3/21AD: A9 CC 00 LDA #$00CC C3/21B0: 9F 4A 35 7E STA $7E354A,X C3/21B4: A9 68 00 LDA #$0068 C3/21B7: 9F CA 34 7E STA $7E34CA,X C3/21BB: E2 20 SEP #$20 C3/21BD: 20 4C 4C JSR $4C4C C3/21C0: 20 55 4C JSR $4C55 C3/21C3: A9 78 LDA #$78 C3/21C5: 85 5C STA $5C C3/21C7: A9 08 LDA #$08 C3/21C9: 85 5A STA $5A C3/21CB: A9 02 LDA #$02 C3/21CD: 85 5B STA $5B C3/21CF: A0 00 01 LDY #$0100 C3/21D2: 84 39 STY $39 C3/21D4: 84 3D STY $3D C3/21D6: 20 91 53 JSR $5391 C3/21D9: A9 1D LDA #$1D C3/21DB: 85 26 STA $26 C3/21DD: 60 RTS ; [ Skills Menu $06: Dance (init) ] C3/21DE: 64 4A STZ $4A C3/21E0: 20 CE 4B JSR $4BCE C3/21E3: 20 D7 4B JSR $4BD7 C3/21E6: A0 00 01 LDY #$0100 C3/21E9: 84 39 STY $39 C3/21EB: 84 3D STY $3D C3/21ED: 20 74 57 JSR $5774 C3/21F0: A9 1C LDA #$1C C3/21F2: 85 26 STA $26 C3/21F4: 60 RTS ; [ Menu State $0C: Status ] C3/21F5: 20 39 0F JSR $0F39 C3/21F8: A5 08 LDA $08 C3/21FA: 89 10 BIT #$10 C3/21FC: F0 20 BEQ $221E C3/21FE: A5 28 LDA $28 C3/2200: 85 79 STA $79 C3/2202: 7B TDC C3/2203: A5 28 LDA $28 C3/2205: 1A INC C3/2206: 29 03 AND #$03 C3/2208: 85 28 STA $28 C3/220A: AA TAX C3/220B: B5 69 LDA $69,X C3/220D: 30 F3 BMI $2202 C3/220F: A5 28 LDA $28 C3/2211: C5 79 CMP $79 C3/2213: F0 03 BEQ $2218 C3/2215: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/2218: 20 5D 1C JSR $1C5D C3/221B: 4C 83 5D JMP $5D83 C3/221E: A5 08 LDA $08 C3/2220: 89 20 BIT #$20 C3/2222: F0 20 BEQ $2244 C3/2224: A5 28 LDA $28 C3/2226: 85 79 STA $79 C3/2228: 7B TDC C3/2229: A5 28 LDA $28 C3/222B: 3A DEC C3/222C: 29 03 AND #$03 C3/222E: 85 28 STA $28 C3/2230: AA TAX C3/2231: B5 69 LDA $69,X C3/2233: 30 F3 BMI $2228 C3/2235: A5 28 LDA $28 C3/2237: C5 79 CMP $79 C3/2239: F0 03 BEQ $223E C3/223B: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/223E: 20 5D 1C JSR $1C5D C3/2241: 4C 83 5D JMP $5D83 C3/2244: A5 09 LDA $09 C3/2246: 89 80 BIT #$80 C3/2248: F0 0A BEQ $2254 C3/224A: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/224D: A9 04 LDA #$04 C3/224F: 85 27 STA $27 C3/2251: 64 26 STZ $26 C3/2253: 60 RTS C3/2254: 7B TDC C3/2255: A5 28 LDA $28 C3/2257: 0A ASL C3/2258: AA TAX C3/2259: B4 6D LDY $6D,X C3/225B: B9 00 00 LDA $0000,Y C3/225E: C9 0C CMP #$0C C3/2260: D0 51 BNE $22B3 C3/2262: 20 05 37 JSR $3705 C3/2265: A5 08 LDA $08 C3/2267: 89 80 BIT #$80 C3/2269: F0 48 BEQ $22B3 C3/226B: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/226E: A5 4B LDA $4B C3/2270: 85 E7 STA $E7 C3/2272: 64 E8 STZ $E8 C3/2274: 7B TDC C3/2275: A5 28 LDA $28 C3/2277: 0A ASL C3/2278: AA TAX C3/2279: B4 6D LDY $6D,X C3/227B: C2 20 REP #$20 C3/227D: 98 TYA C3/227E: 18 CLC C3/227F: 65 E7 ADC $E7 C3/2281: A8 TAY C3/2282: E2 20 SEP #$20 C3/2284: B9 16 00 LDA $0016,Y C3/2287: C9 12 CMP #$12 C3/2289: F0 28 BEQ $22B3 C3/228B: 20 06 2F JSR $2F06 C3/228E: A5 4E LDA $4E C3/2290: 85 5E STA $5E C3/2292: A5 4B LDA $4B C3/2294: 85 64 STA $64 C3/2296: A9 06 LDA #$06 C3/2298: 85 20 STA $20 C3/229A: A0 0C 00 LDY #$000C C3/229D: 84 9C STY $9C C3/229F: A9 6A LDA #$6A C3/22A1: 85 27 STA $27 C3/22A3: A9 65 LDA #$65 C3/22A5: 85 26 STA $26 C3/22A7: 20 03 64 JSR $6403 C3/22AA: AF 89 9D 7E LDA $7E9D89 C3/22AE: 85 54 STA $54 C3/22B0: 4C 0C 64 JMP $640C C3/22B3: 60 RTS ; [ Menu State $6B: ] C3/22B4: A5 09 LDA $09 C3/22B6: 89 80 BIT #$80 C3/22B8: F0 0A BEQ $22C4 C3/22BA: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/22BD: A9 04 LDA #$04 C3/22BF: 85 27 STA $27 C3/22C1: 64 26 STZ $26 C3/22C3: 60 RTS C3/22C4: 60 RTS ; [ Menu State $0E: Config ] C3/22C5: 20 E9 0E JSR $0EE9 C3/22C8: A5 0B LDA $0B C3/22CA: 89 04 BIT #$04 C3/22CC: F0 12 BEQ $22E0 C3/22CE: A5 4E LDA $4E C3/22D0: C9 08 CMP #$08 C3/22D2: D0 0C BNE $22E0 C3/22D4: A9 50 LDA #$50 C3/22D6: 85 26 STA $26 C3/22D8: A9 11 LDA #$11 C3/22DA: 85 20 STA $20 C3/22DC: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/22DF: 60 RTS C3/22E0: A5 0B LDA $0B C3/22E2: 89 08 BIT #$08 C3/22E4: F0 14 BEQ $22FA C3/22E6: A5 4E LDA $4E C3/22E8: D0 10 BNE $22FA C3/22EA: A5 4A LDA $4A C3/22EC: F0 0C BEQ $22FA C3/22EE: A9 51 LDA #$51 C3/22F0: 85 26 STA $26 C3/22F2: A9 11 LDA #$11 C3/22F4: 85 20 STA $20 C3/22F6: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/22F9: 60 RTS C3/22FA: A5 4A LDA $4A C3/22FC: F0 05 BEQ $2303 C3/22FE: 20 84 38 JSR $3884 C3/2301: 80 03 BRA $2306 C3/2303: 20 5E 38 JSR $385E C3/2306: A5 09 LDA $09 C3/2308: 89 80 BIT #$80 C3/230A: F0 0A BEQ $2316 C3/230C: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/230F: A9 04 LDA #$04 C3/2311: 85 27 STA $27 C3/2313: 64 26 STZ $26 C3/2315: 60 RTS C3/2316: A5 0B LDA $0B C3/2318: 89 01 BIT #$01 C3/231A: D0 06 BNE $2322 C3/231C: A5 0B LDA $0B C3/231E: 89 02 BIT #$02 C3/2320: F0 03 BEQ $2325 C3/2322: 4C 2F 3D JMP $3D2F C3/2325: A5 08 LDA $08 C3/2327: 89 80 BIT #$80 C3/2329: F0 03 BEQ $232E C3/232B: 4C 31 23 JMP $2331 C3/232E: 4C EC 23 JMP $23EC C3/2331: A5 4E LDA $4E C3/2333: 85 5F STA $5F C3/2335: A5 4A LDA $4A C3/2337: D0 09 BNE $2342 C3/2339: 7B TDC C3/233A: A5 4B LDA $4B C3/233C: 0A ASL C3/233D: AA TAX C3/233E: 7C 4A 23 JMP ($234A,X) C3/2341: 60 RTS C3/2342: 7B TDC C3/2343: A5 4B LDA $4B C3/2345: 0A ASL C3/2346: AA TAX C3/2347: 7C 5C 23 JMP ($235C,X) C3/234A: .DW $2341, $2341, $2341, $2368, $2341, $2341, $2341, $2341, $2379 C3/235C: .DW $2341, $2341, $2388, $2388, $2388, $2388 C3/2368: AD 4D 1D LDA $1D4D C3/236B: 89 80 BIT #$80 C3/236D: F0 D2 BEQ $2341 C3/236F: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2372: A9 47 LDA #$47 C3/2374: 85 27 STA $27 C3/2376: 64 26 STZ $26 C3/2378: 60 RTS C3/2379: AD 54 1D LDA $1D54 C3/237C: 10 C3 BPL $2341 C3/237E: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2381: A9 4B LDA #$4B C3/2383: 85 27 STA $27 C3/2385: 64 26 STZ $26 C3/2387: 60 RTS C3/2388: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/238B: AD 54 1D LDA $1D54 C3/238E: 29 38 AND #$38 C3/2390: F0 09 BEQ $239B C3/2392: 20 A7 23 JSR $23A7 C3/2395: 20 87 3A JSR $3A87 ; init custom menu window C3/2398: 4C C3 41 JMP $41C3 C3/239B: A0 FF 7F LDY #$7FFF C3/239E: 8C 55 1D STY $1D55 C3/23A1: 20 99 3F JSR $3F99 ; init font color C3/23A4: 4C C3 41 JMP $41C3 C3/23A7: 7B TDC C3/23A8: AD 4E 1D LDA $1D4E C3/23AB: 29 0F AND #$0F C3/23AD: C2 20 REP #$20 C3/23AF: A8 TAY C3/23B0: 64 EB STZ $EB C3/23B2: 64 ED STZ $ED C3/23B4: 88 DEY C3/23B5: 30 12 BMI $23C9 C3/23B7: A9 0E 00 LDA #$000E C3/23BA: 18 CLC C3/23BB: 65 EB ADC $EB C3/23BD: 85 EB STA $EB C3/23BF: A9 20 00 LDA #$0020 C3/23C2: 18 CLC C3/23C3: 65 ED ADC $ED C3/23C5: 85 ED STA $ED C3/23C7: 80 EB BRA $23B4 C3/23C9: A2 2B 31 LDX #$312B C3/23CC: 8E 81 21 STX $2181 C3/23CF: A5 EB LDA $EB C3/23D1: A8 TAY C3/23D2: A5 ED LDA $ED C3/23D4: AA TAX C3/23D5: E2 20 SEP #$20 C3/23D7: A9 0E LDA #$0E C3/23D9: 85 E9 STA $E9 C3/23DB: BF 02 1C ED LDA $ED1C02,X C3/23DF: 99 57 1D STA $1D57,Y C3/23E2: 8D 80 21 STA $2180 C3/23E5: E8 INX C3/23E6: C8 INY C3/23E7: C6 E9 DEC $E9 C3/23E9: D0 F0 BNE $23DB C3/23EB: 60 RTS C3/23EC: A5 08 LDA $08 C3/23EE: 89 10 BIT #$10 C3/23F0: D0 04 BNE $23F6 C3/23F2: 89 20 BIT #$20 C3/23F4: F0 15 BEQ $240B C3/23F6: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/23F9: 64 5F STZ $5F C3/23FB: A5 4A LDA $4A C3/23FD: D0 07 BNE $2406 C3/23FF: A9 01 LDA #$01 C3/2401: 85 4A STA $4A C3/2403: 4C EA 39 JMP $39EA C3/2406: 64 4A STZ $4A C3/2408: 20 F5 39 JSR $39F5 C3/240B: 60 RTS ; [ Menu State $0F: Order (select character) ] C3/240C: 20 48 35 JSR $3548 ; draw time text C3/240F: 20 89 69 JSR $6989 C3/2412: A5 09 LDA $09 C3/2414: 89 80 BIT #$80 C3/2416: D0 06 BNE $241E C3/2418: A5 09 LDA $09 C3/241A: 89 01 BIT #$01 C3/241C: F0 19 BEQ $2437 C3/241E: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/2421: A9 06 LDA #$06 C3/2423: 85 20 STA $20 C3/2425: A0 0C 00 LDY #$000C C3/2428: 84 9C STY $9C C3/242A: A9 05 LDA #$05 C3/242C: 14 46 TRB $46 C3/242E: A9 03 LDA #$03 C3/2430: 85 27 STA $27 C3/2432: A9 65 LDA #$65 C3/2434: 85 26 STA $26 C3/2436: 60 RTS C3/2437: A5 08 LDA $08 C3/2439: 89 80 BIT #$80 C3/243B: F0 15 BEQ $2452 C3/243D: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2440: A5 4B LDA $4B C3/2442: 85 28 STA $28 C3/2444: A9 10 LDA #$10 C3/2446: 85 26 STA $26 C3/2448: 20 21 2F JSR $2F21 C3/244B: 20 B1 2F JSR $2FB1 C3/244E: A5 4E LDA $4E C3/2450: 85 5E STA $5E C3/2452: 60 RTS ; [ Menu State $10: Order (move/row) ] C3/2453: 20 48 35 JSR $3548 ; draw time text C3/2456: A5 09 LDA $09 C3/2458: 89 80 BIT #$80 C3/245A: F0 13 BEQ $246F ; branch if B button is not pressed ; cancel C3/245C: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/245F: A9 01 LDA #$01 C3/2461: 14 46 TRB $46 ; disable flashing cursor thread C3/2463: A9 0F LDA #$0F C3/2465: 85 26 STA $26 ; menu state $0F (order, select character) C3/2467: 20 98 2F JSR $2F98 ; init cursor (character select) C3/246A: A5 5E LDA $5E C3/246C: 85 4E STA $4E ; restore cursor position C3/246E: 60 RTS ; no cancel C3/246F: A5 08 LDA $08 C3/2471: 89 80 BIT #$80 C3/2473: F0 33 BEQ $24A8 ; return if A button is not pressed C3/2475: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2478: A5 28 LDA $28 C3/247A: C5 4B CMP $4B C3/247C: D0 13 BNE $2491 ; branch if order changed ; character row changed C3/247E: A9 01 LDA #$01 C3/2480: 14 46 TRB $46 ; disable flashing cursor thread C3/2482: A9 12 LDA #$12 ; menu state $12 (order, wait for portrait slide) C3/2484: 85 26 STA $26 C3/2486: 20 10 2E JSR $2E10 ; C3/2489: A0 0C 00 LDY #$000C C3/248C: 84 20 STY $20 ; wait 12 frames C3/248E: 4C 98 2F JMP $2F98 ; init cursor (character select) ; party order changed C3/2491: A9 10 LDA #$10 C3/2493: 14 46 TRB $46 C3/2495: A9 0C LDA #$0C C3/2497: 14 45 TRB $45 C3/2499: 20 82 35 JSR $3582 ; init character swap threads C3/249C: A9 18 LDA #$18 ; set frame counter to 24 (12 frames to hide, 12 frames to show) C3/249E: 85 22 STA $22 C3/24A0: A9 01 LDA #$01 C3/24A2: 14 46 TRB $46 C3/24A4: A9 11 LDA #$11 ; menu state $11 (change party order) C3/24A6: 85 26 STA $26 C3/24A8: 60 RTS ; [ Menu State $11: Change Party Order ] C3/24A9: 20 48 35 JSR $3548 ; draw time text C3/24AC: A5 22 LDA $22 C3/24AE: F0 30 BEQ $24E0 C3/24B0: C9 0C CMP #$0C C3/24B2: D0 39 BNE $24ED C3/24B4: 20 F8 24 JSR $24F8 ; update characters controlled by player 2 C3/24B7: 20 D1 2D JSR $2DD1 C3/24BA: 20 EE 24 JSR $24EE C3/24BD: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/24C0: 20 F1 32 JSR $32F1 ; draw hp/mp/lv number text (slot 1) C3/24C3: 20 3D 33 JSR $333D ; draw hp/mp/lv number text (slot 2) C3/24C6: 20 89 33 JSR $3389 ; draw hp/mp/lv number text (slot 3) C3/24C9: 20 D5 33 JSR $33D5 ; draw hp/mp/lv number text (slot 4) C3/24CC: 20 BA 0D JSR $0DBA ; swap two characters' saved cursor positions C3/24CF: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/24D2: 20 98 2F JSR $2F98 ; init cursor (character select) C3/24D5: 20 B0 11 JSR $11B0 ; execute threads C3/24D8: 20 68 13 JSR $1368 ; wait for vblank C3/24DB: A9 08 LDA #$08 C3/24DD: 04 45 TSB $45 C3/24DF: 60 RTS C3/24E0: A9 0F LDA #$0F ; menu state $0F (order, select character) C3/24E2: 85 26 STA $26 C3/24E4: A9 10 LDA #$10 C3/24E6: 04 46 TSB $46 C3/24E8: A9 04 LDA #$04 C3/24EA: 04 45 TSB $45 C3/24EC: 60 RTS C3/24ED: 60 RTS ; [ ] C3/24EE: 20 3C 2E JSR $2E3C ; C3/24F1: A9 01 LDA #$01 C3/24F3: 14 47 TRB $47 C3/24F5: 4C B0 11 JMP $11B0 ; execute threads ; [ Update Characters Controlled by Player 2 ] C3/24F8: 7B TDC C3/24F9: AA TAX C3/24FA: 86 E0 STX $E0 C3/24FC: 86 E2 STX $E2 C3/24FE: AD 4F 1D LDA $1D4F C3/2501: 18 CLC C3/2502: 6A ROR C3/2503: 90 02 BCC $2507 C3/2505: F6 E0 INC $E0,X C3/2507: E8 INX C3/2508: E0 04 00 CPX #$0004 C3/250B: D0 F5 BNE $2502 C3/250D: 7B TDC C3/250E: A5 4B LDA $4B C3/2510: AA TAX C3/2511: B5 E0 LDA $E0,X C3/2513: 85 E5 STA $E5 C3/2515: A5 28 LDA $28 C3/2517: AA TAX C3/2518: B5 E0 LDA $E0,X C3/251A: 85 E6 STA $E6 C3/251C: A5 E5 LDA $E5 C3/251E: 95 E0 STA $E0,X C3/2520: A5 4B LDA $4B C3/2522: AA TAX C3/2523: A5 E6 LDA $E6 C3/2525: 95 E0 STA $E0,X C3/2527: 18 CLC C3/2528: A5 E3 LDA $E3 C3/252A: 0A ASL C3/252B: 65 E2 ADC $E2 C3/252D: 0A ASL C3/252E: 65 E1 ADC $E1 C3/2530: 0A ASL C3/2531: 65 E0 ADC $E0 C3/2533: 8D 4F 1D STA $1D4F C3/2536: 60 RTS ; [ Menu State $12: Order (wait for portrait slide) ] C3/2537: A4 20 LDY $20 C3/2539: D0 04 BNE $253F C3/253B: A9 0F LDA #$0F ; menu state $0F (order, select character) C3/253D: 85 26 STA $26 C3/253F: 60 RTS ; [ Menu State $14: Save Select ] C3/2540: A5 4B LDA $4B C3/2542: 1A INC C3/2543: 85 66 STA $66 C3/2545: 20 03 19 JSR $1903 ; update character sprites (save menu) C3/2548: 20 AA 15 JSR $15AA ; update cursor (save select) C3/254B: A5 09 LDA $09 C3/254D: 89 80 BIT #$80 C3/254F: F0 0C BEQ $255D ; branch if B button is not pressed C3/2551: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/2554: A5 9F LDA $9F C3/2556: 85 27 STA $27 C3/2558: A9 53 LDA #$53 C3/255A: 85 26 STA $26 C3/255C: 60 RTS C3/255D: A5 08 LDA $08 C3/255F: 89 80 BIT #$80 C3/2561: F0 39 BEQ $259C ; return if A button is not pressed C3/2563: 7B TDC C3/2564: A5 4B LDA $4B C3/2566: 0A ASL C3/2567: AA TAX C3/2568: B4 91 LDY $91,X ; sram checksum C3/256A: D0 14 BNE $2580 ; branch if sram is valid ; slot is empty, save instantly C3/256C: A5 66 LDA $66 C3/256E: 8D 1F 02 STA $021F ; save slot to load C3/2571: 20 B9 0E JSR $0EB9 ; play success sound effect C3/2574: 20 DF 25 JSR $25DF ; save game C3/2577: A5 9E LDA $9E ; previous menu state C3/2579: 85 27 STA $27 C3/257B: A9 53 LDA #$53 ; menu state $53 (fade out, save menu) C3/257D: 85 26 STA $26 C3/257F: 60 RTS ; sram valid, prompt before overwriting C3/2580: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2583: 20 AC 18 JSR $18AC C3/2586: A5 4B LDA $4B C3/2588: 1A INC C3/2589: 85 66 STA $66 C3/258B: 20 66 15 JSR $1566 C3/258E: 20 15 69 JSR $6915 ; init party character data C3/2591: 20 89 69 JSR $6989 C3/2594: A9 15 LDA #$15 ; next menu state $15 (save confirm, init) C3/2596: 85 27 STA $27 C3/2598: A9 53 LDA #$53 ; menu state $53 (fade out, save menu) C3/259A: 85 26 STA $26 C3/259C: 60 RTS ; [ Menu State $16 & $1F: Save Confirm ] C3/259D: 20 DA 15 JSR $15DA ; update cursor (save/restore confirm) C3/25A0: A5 09 LDA $09 C3/25A2: 89 80 BIT #$80 C3/25A4: D0 1C BNE $25C2 ; branch if B button is down C3/25A6: A5 08 LDA $08 C3/25A8: 89 80 BIT #$80 C3/25AA: F0 32 BEQ $25DE ; return if A button is not pressed C3/25AC: A5 4B LDA $4B C3/25AE: D0 17 BNE $25C7 C3/25B0: A5 66 LDA $66 C3/25B2: 8D 1F 02 STA $021F C3/25B5: 20 B9 0E JSR $0EB9 ; play success sound effect C3/25B8: 20 DF 25 JSR $25DF ; save game C3/25BB: A5 9E LDA $9E ; previous menu state C3/25BD: 85 27 STA $27 C3/25BF: 64 26 STZ $26 ; menu state $00 (fade out) C3/25C1: 60 RTS C3/25C2: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/25C5: 80 03 BRA $25CA C3/25C7: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/25CA: 20 C1 18 JSR $18C1 ; restore sram from 7E/AC8D C3/25CD: 20 15 69 JSR $6915 ; init party character data C3/25D0: 20 89 69 JSR $6989 C3/25D3: A9 13 LDA #$13 ; menu state $13 (save select, init) C3/25D5: 85 27 STA $27 C3/25D7: 64 26 STZ $26 C3/25D9: A5 66 LDA $66 C3/25DB: 8D 24 02 STA $0224 C3/25DE: 60 RTS ; [ Save Game ] C3/25DF: 20 C1 18 JSR $18C1 ; restore sram from 7E/AC8D C3/25E2: 20 15 69 JSR $6915 ; init party character data C3/25E5: 20 89 69 JSR $6989 C3/25E8: C2 20 REP #$20 C3/25EA: EE C7 1D INC $1DC7 ; increment the number of times the game has been saved C3/25ED: E2 20 SEP #$20 C3/25EF: A5 66 LDA $66 C3/25F1: 4C 1D 15 JMP $151D ; save game ; [ Menu State $17: Item (use, arrange, rare) ] C3/25F4: A9 C0 LDA #$C0 C3/25F6: 14 46 TRB $46 C3/25F8: A9 10 LDA #$10 C3/25FA: 04 45 TSB $45 C3/25FC: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/25FF: 20 8C 7D JSR $7D8C C3/2602: A5 09 LDA $09 C3/2604: 89 80 BIT #$80 C3/2606: F0 09 BEQ $2611 C3/2608: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/260B: A9 04 LDA #$04 C3/260D: 85 27 STA $27 C3/260F: 64 26 STZ $26 C3/2611: A5 08 LDA $08 C3/2613: 89 80 BIT #$80 C3/2615: F0 06 BEQ $261D C3/2617: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/261A: 20 1E 26 JSR $261E C3/261D: 60 RTS C3/261E: 7B TDC C3/261F: A5 4B LDA $4B C3/2621: 0A ASL C3/2622: AA TAX C3/2623: 7C 26 26 JMP ($2626,X) C3/2626: .DW $262C, $267C, $268E C3/262C: 20 1C 7D JSR $7D1C C3/262F: AD 4E 1D LDA $1D4E C3/2632: 29 40 AND #$40 C3/2634: F0 05 BEQ $263B C3/2636: 20 AC 0D JSR $0DAC ; restore saved cursor position (item list) C3/2639: 80 10 BRA $264B C3/263B: AD 31 02 LDA $0231 C3/263E: 85 4A STA $4A C3/2640: A4 4D LDY $4D C3/2642: 84 4F STY $4F C3/2644: A5 4A LDA $4A C3/2646: 18 CLC C3/2647: 65 50 ADC $50 C3/2649: 85 50 STA $50 C3/264B: 20 25 7D JSR $7D25 C3/264E: 20 0D 7E JSR $7E0D C3/2651: 20 F1 82 JSR $82F1 C3/2654: 20 39 0F JSR $0F39 C3/2657: 20 68 13 JSR $1368 ; wait for vblank C3/265A: 20 1F 09 JSR $091F ; init scroll indicator thread C3/265D: C2 20 REP #$20 C3/265F: A9 70 00 LDA #$0070 C3/2662: 9F 4A 35 7E STA $7E354A,X C3/2666: A9 58 00 LDA #$0058 C3/2669: 9F CA 34 7E STA $7E34CA,X C3/266D: E2 20 SEP #$20 C3/266F: A9 08 LDA #$08 C3/2671: 85 26 STA $26 C3/2673: A9 00 LDA #$00 C3/2675: A0 0E A8 LDY #$A80E C3/2678: 20 73 11 JSR $1173 ; create thread C3/267B: 60 RTS C3/267C: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/267F: 20 B8 26 JSR $26B8 C3/2682: 20 E0 26 JSR $26E0 C3/2685: 20 88 7F JSR $7F88 ; init item list text (item menu) C3/2688: 20 80 7D JSR $7D80 C3/268B: 4C 2E 1F JMP $1F2E C3/268E: 20 44 7D JSR $7D44 C3/2691: AD 4E 1D LDA $1D4E C3/2694: 29 40 AND #$40 C3/2696: F0 05 BEQ $269D C3/2698: AC 32 02 LDY $0232 C3/269B: 84 4D STY $4D C3/269D: 20 4D 7D JSR $7D4D C3/26A0: 20 8B 83 JSR $838B C3/26A3: 20 99 1B JSR $1B99 C3/26A6: 20 39 83 JSR $8339 C3/26A9: 20 39 0F JSR $0F39 C3/26AC: 20 68 13 JSR $1368 ; wait for vblank C3/26AF: A9 C0 LDA #$C0 C3/26B1: 14 46 TRB $46 C3/26B3: A9 18 LDA #$18 C3/26B5: 85 26 STA $26 C3/26B7: 60 RTS C3/26B8: 7B TDC C3/26B9: AA TAX C3/26BA: BD 69 18 LDA $1869,X C3/26BD: 9F 8D AA 7E STA $7EAA8D,X C3/26C1: A9 FF LDA #$FF C3/26C3: 9D 69 18 STA $1869,X C3/26C6: E8 INX C3/26C7: E0 00 01 CPX #$0100 C3/26CA: D0 EE BNE $26BA C3/26CC: 7B TDC C3/26CD: AA TAX C3/26CE: BD 69 19 LDA $1969,X C3/26D1: 9F 8D AB 7E STA $7EAB8D,X C3/26D5: 7B TDC C3/26D6: 9D 69 19 STA $1969,X C3/26D9: E8 INX C3/26DA: E0 00 01 CPX #$0100 C3/26DD: D0 EF BNE $26CE C3/26DF: 60 RTS C3/26E0: 7B TDC C3/26E1: A8 TAY C3/26E2: AA TAX C3/26E3: BF F5 26 C3 LDA $C326F5,X C3/26E7: DA PHX C3/26E8: 85 E0 STA $E0 C3/26EA: 20 06 27 JSR $2706 C3/26ED: FA PLX C3/26EE: E8 INX C3/26EF: E0 11 00 CPX #$0011 C3/26F2: D0 EF BNE $26E3 C3/26F4: 60 RTS C3/26F5: .DB $FF, $D8, $D9, $DA, $DB, $DC, $DD, $DE, $DF, $E0, $E1, $E2, $E3, $E4, $E5, $E6, $E7 C3/2706: 7B TDC C3/2707: AA TAX C3/2708: DA PHX C3/2709: BF 8D AA 7E LDA $7EAA8D,X C3/270D: C9 FF CMP #$FF C3/270F: F0 28 BEQ $2739 C3/2711: 8D 02 42 STA $4202 C3/2714: A9 0D LDA #$0D C3/2716: 8D 03 42 STA $4203 C3/2719: EA NOP C3/271A: EA NOP C3/271B: EA NOP C3/271C: AE 16 42 LDX $4216 C3/271F: BF 00 B3 D2 LDA $D2B300,X C3/2723: C5 E0 CMP $E0 C3/2725: D0 12 BNE $2739 C3/2727: FA PLX C3/2728: BF 8D AA 7E LDA $7EAA8D,X C3/272C: 99 69 18 STA $1869,Y C3/272F: BF 8D AB 7E LDA $7EAB8D,X C3/2733: 99 69 19 STA $1969,Y C3/2736: C8 INY C3/2737: 80 01 BRA $273A C3/2739: FA PLX C3/273A: E8 INX C3/273B: E0 00 01 CPX #$0100 C3/273E: D0 C8 BNE $2708 C3/2740: 60 RTS ; [ Menu State $18: Item (rare item select) ] C3/2741: A9 10 LDA #$10 C3/2743: 14 45 TRB $45 C3/2745: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/2748: 20 4A 7D JSR $7D4A C3/274B: 20 39 83 JSR $8339 C3/274E: A5 09 LDA $09 C3/2750: 89 80 BIT #$80 C3/2752: F0 24 BEQ $2778 C3/2754: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/2757: A9 17 LDA #$17 C3/2759: 85 26 STA $26 C3/275B: A4 4D LDY $4D C3/275D: 8C 32 02 STY $0232 C3/2760: 20 80 7D JSR $7D80 C3/2763: AD 4E 1D LDA $1D4E C3/2766: 29 40 AND #$40 C3/2768: F0 05 BEQ $276F C3/276A: AC 34 02 LDY $0234 C3/276D: 84 4D STY $4D C3/276F: 20 86 7D JSR $7D86 C3/2772: 20 85 83 JSR $8385 C3/2775: 4C 39 0F JMP $0F39 C3/2778: 60 RTS ; [ Menu State $19: Item (move) ] C3/2779: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/277C: 20 22 7D JSR $7D22 ; update cursor (item list) C3/277F: 20 F1 82 JSR $82F1 C3/2782: A5 09 LDA $09 C3/2784: 89 80 BIT #$80 C3/2786: F0 0C BEQ $2794 C3/2788: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/278B: A9 01 LDA #$01 C3/278D: 14 46 TRB $46 C3/278F: A9 08 LDA #$08 C3/2791: 85 26 STA $26 C3/2793: 60 RTS C3/2794: A5 08 LDA $08 C3/2796: 89 80 BIT #$80 C3/2798: F0 47 BEQ $27E1 ; branch if A button is not pressed C3/279A: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/279D: A5 28 LDA $28 C3/279F: C5 4B CMP $4B C3/27A1: D0 07 BNE $27AA C3/27A3: A9 01 LDA #$01 C3/27A5: 14 46 TRB $46 C3/27A7: 4C 97 84 JMP $8497 ; use item (from inventory) C3/27AA: A9 10 LDA #$10 C3/27AC: 04 45 TSB $45 C3/27AE: A9 01 LDA #$01 C3/27B0: 14 46 TRB $46 C3/27B2: A9 08 LDA #$08 C3/27B4: 85 26 STA $26 C3/27B6: 7B TDC C3/27B7: A5 28 LDA $28 C3/27B9: A8 TAY C3/27BA: B9 69 18 LDA $1869,Y ; swap item slots C3/27BD: 85 E0 STA $E0 C3/27BF: B9 69 19 LDA $1969,Y C3/27C2: 85 E1 STA $E1 C3/27C4: 7B TDC C3/27C5: A5 4B LDA $4B C3/27C7: AA TAX C3/27C8: BD 69 18 LDA $1869,X C3/27CB: 99 69 18 STA $1869,Y C3/27CE: A5 E0 LDA $E0 C3/27D0: 9D 69 18 STA $1869,X C3/27D3: BD 69 19 LDA $1969,X C3/27D6: 99 69 19 STA $1969,Y C3/27D9: A5 E1 LDA $E1 C3/27DB: 9D 69 19 STA $1969,X C3/27DE: 4C 88 7F JMP $7F88 ; init item list text (item menu) C3/27E1: 60 RTS ; [ Menu State $1A: Magic (select) ] C3/27E2: A9 10 LDA #$10 C3/27E4: 14 45 TRB $45 C3/27E6: A9 01 LDA #$01 C3/27E8: 85 2A STA $2A C3/27EA: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/27ED: AD 1E 02 LDA $021E C3/27F0: 6A ROR C3/27F1: 90 05 BCC $27F8 C3/27F3: 20 75 0F JSR $0F75 C3/27F6: 80 03 BRA $27FB C3/27F8: 20 91 A9 JSR $A991 C3/27FB: 20 64 1F JSR $1F64 ; list text page up/down C3/27FE: B0 61 BCS $2861 C3/2800: 20 88 4B JSR $4B88 C3/2803: 20 E5 56 JSR $56E5 C3/2806: 20 C6 51 JSR $51C6 C3/2809: A5 09 LDA $09 C3/280B: 89 40 BIT #$40 C3/280D: F0 13 BEQ $2822 C3/280F: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2812: A5 9E LDA $9E C3/2814: 49 FF EOR #$FF C3/2816: 85 9E STA $9E C3/2818: A9 10 LDA #$10 C3/281A: 04 45 TSB $45 C3/281C: 20 1C 4F JSR $4F1C C3/281F: 4C 87 4F JMP $4F87 C3/2822: A5 08 LDA $08 C3/2824: 89 80 BIT #$80 C3/2826: F0 2D BEQ $2855 C3/2828: 7B TDC C3/2829: A5 4B LDA $4B C3/282B: AA TAX C3/282C: BF 09 9E 7E LDA $7E9E09,X C3/2830: C9 20 CMP #$20 C3/2832: D0 2E BNE $2862 C3/2834: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2837: A4 4F LDY $4F C3/2839: 84 8E STY $8E C3/283B: A5 4A LDA $4A C3/283D: 85 90 STA $90 C3/283F: A5 4B LDA $4B C3/2841: 85 99 STA $99 C3/2843: 20 13 2D JSR $2D13 C3/2846: C9 12 CMP #$12 C3/2848: F0 1F BEQ $2869 ; branch if x-zone C3/284A: C9 2A CMP #$2A C3/284C: F0 26 BEQ $2874 ; branch if warp C3/284E: A9 3A LDA #$3A C3/2850: 85 27 STA $27 C3/2852: 64 26 STZ $26 C3/2854: 60 RTS C3/2855: A5 09 LDA $09 C3/2857: 89 80 BIT #$80 C3/2859: F0 06 BEQ $2861 C3/285B: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/285E: 20 A5 29 JSR $29A5 C3/2861: 60 RTS C3/2862: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/2865: 20 5D 30 JSR $305D ; create mosaic thread C3/2868: 60 RTS ; x-zone C3/2869: AD 01 02 LDA $0201 C3/286C: 89 01 BIT #$01 C3/286E: F0 F2 BEQ $2862 ; branch if x-zone is disabled C3/2870: A9 04 LDA #$04 ; return code $04 C3/2872: 80 09 BRA $287D ; warp C3/2874: AD 01 02 LDA $0201 C3/2877: 89 02 BIT #$02 C3/2879: F0 E7 BEQ $2862 ; branch if warp is disabled C3/287B: A9 03 LDA #$03 ; return code $03 C3/287D: 8D 05 02 STA $0205 C3/2880: 20 EA 2C JSR $2CEA ; subtract spell's mp cost C3/2883: A9 FF LDA #$FF ; exit menu C3/2885: 85 27 STA $27 C3/2887: 64 26 STZ $26 C3/2889: 60 RTS ; [ Menu State $1B: Lore (select) ] C3/288A: A9 10 LDA #$10 C3/288C: 14 45 TRB $45 C3/288E: A9 02 LDA #$02 C3/2890: 85 2A STA $2A C3/2892: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/2895: 20 64 1F JSR $1F64 ; list text page up/down C3/2898: B0 0F BCS $28A9 C3/289A: 20 FA 4B JSR $4BFA C3/289D: 20 EB 56 JSR $56EB C3/28A0: A5 09 LDA $09 C3/28A2: 89 80 BIT #$80 C3/28A4: F0 03 BEQ $28A9 C3/28A6: 20 A5 29 JSR $29A5 C3/28A9: 60 RTS ; [ Menu State $1C: Dance (select) ] C3/28AA: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/28AD: 20 D4 4B JSR $4BD4 C3/28B0: A5 09 LDA $09 C3/28B2: 89 80 BIT #$80 C3/28B4: F0 03 BEQ $28B9 C3/28B6: 20 A5 29 JSR $29A5 C3/28B9: 60 RTS ; [ Menu State $1D: Rage (select) ] C3/28BA: A9 03 LDA #$03 C3/28BC: 85 2A STA $2A C3/28BE: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/28C1: 20 64 1F JSR $1F64 ; list text page up/down C3/28C4: B0 0C BCS $28D2 C3/28C6: 20 52 4C JSR $4C52 C3/28C9: A5 09 LDA $09 C3/28CB: 89 80 BIT #$80 C3/28CD: F0 03 BEQ $28D2 C3/28CF: 20 A5 29 JSR $29A5 C3/28D2: 60 RTS ; [ Menu State $1E: Espers (select) ] C3/28D3: A9 10 LDA #$10 C3/28D5: 14 45 TRB $45 C3/28D7: A9 04 LDA #$04 C3/28D9: 85 2A STA $2A C3/28DB: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/28DE: 20 64 1F JSR $1F64 ; list text page up/down C3/28E1: B0 45 BCS $2928 C3/28E3: 20 1E 4C JSR $4C1E C3/28E6: 20 DF 56 JSR $56DF C3/28E9: A5 08 LDA $08 C3/28EB: 89 80 BIT #$80 C3/28ED: F0 2C BEQ $291B C3/28EF: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/28F2: 7B TDC C3/28F3: A5 4B LDA $4B C3/28F5: AA TAX C3/28F6: BF 89 9D 7E LDA $7E9D89,X C3/28FA: C9 FF CMP #$FF C3/28FC: F0 0A BEQ $2908 C3/28FE: 85 99 STA $99 C3/2900: 20 97 58 JSR $5897 C3/2903: A9 4D LDA #$4D C3/2905: 85 26 STA $26 C3/2907: 60 RTS C3/2908: A9 FF LDA #$FF C3/290A: 85 E0 STA $E0 C3/290C: 20 29 29 JSR $2929 C3/290F: 20 6C 54 JSR $546C C3/2912: 20 11 0F JSR $0F11 C3/2915: 20 68 13 JSR $1368 ; wait for vblank C3/2918: 4C FD 0E JMP $0EFD ; init dma 1 (bg1 data, left screen) C3/291B: A5 09 LDA $09 C3/291D: 89 80 BIT #$80 C3/291F: F0 07 BEQ $2928 C3/2921: A9 08 LDA #$08 C3/2923: 14 46 TRB $46 C3/2925: 20 A5 29 JSR $29A5 C3/2928: 60 RTS C3/2929: 7B TDC C3/292A: A5 28 LDA $28 C3/292C: 0A ASL C3/292D: AA TAX C3/292E: B4 6D LDY $6D,X C3/2930: A5 E0 LDA $E0 C3/2932: 99 1E 00 STA $001E,Y C3/2935: A5 E0 LDA $E0 C3/2937: 4C 08 4F JMP $4F08 ; [ Menu State $34: ] C3/293A: A4 20 LDY $20 C3/293C: D0 09 BNE $2947 C3/293E: A0 48 29 LDY #$2948 C3/2941: 20 F9 02 JSR $02F9 ; draw positioned text C3/2944: 4C 13 59 JMP $5913 C3/2947: 60 RTS C3/2948: .DB $CD, $40, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF C3/2958: .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00 ; [ Menu State $39: ] C3/2966: A5 09 LDA $09 C3/2968: 89 80 BIT #$80 C3/296A: F0 0A BEQ $2976 C3/296C: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/296F: A9 04 LDA #$04 C3/2971: 85 27 STA $27 C3/2973: 64 26 STZ $26 C3/2975: 60 RTS C3/2976: 60 RTS ; [ Menu State $33: ] C3/2977: A9 10 LDA #$10 C3/2979: 14 45 TRB $45 C3/297B: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/297E: 20 D4 4B JSR $4BD4 C3/2981: 20 15 57 JSR $5715 C3/2984: A5 09 LDA $09 C3/2986: 89 80 BIT #$80 C3/2988: F0 03 BEQ $298D C3/298A: 20 A5 29 JSR $29A5 C3/298D: 60 RTS ; [ Menu State $3E: ] C3/298E: A9 10 LDA #$10 C3/2990: 14 45 TRB $45 C3/2992: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/2995: 20 D4 4B JSR $4BD4 C3/2998: 20 00 57 JSR $5700 C3/299B: A5 09 LDA $09 C3/299D: 89 80 BIT #$80 C3/299F: F0 03 BEQ $29A4 C3/29A1: 20 A5 29 JSR $29A5 C3/29A4: 60 RTS C3/29A5: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/29A8: A4 00 LDY $00 C3/29AA: 84 39 STY $39 C3/29AC: 84 3D STY $3D C3/29AE: A9 0A LDA #$0A C3/29B0: 85 26 STA $26 C3/29B2: 20 27 4D JSR $4D27 C3/29B5: 20 50 4B JSR $4B50 C3/29B8: A5 5E LDA $5E C3/29BA: 85 4E STA $4E C3/29BC: 20 59 4B JSR $4B59 C3/29BF: 4C 07 58 JMP $5807 ; [ Menu State $21: Restore Game ] C3/29C2: A5 4B LDA $4B C3/29C4: 85 66 STA $66 C3/29C6: 20 03 19 JSR $1903 ; update character sprites (save menu) C3/29C9: 20 BE 15 JSR $15BE ; update cursor (restore game) C3/29CC: A5 08 LDA $08 C3/29CE: 89 80 BIT #$80 C3/29D0: F0 34 BEQ $2A06 C3/29D2: 7B TDC C3/29D3: A5 4B LDA $4B C3/29D5: F0 30 BEQ $2A07 C3/29D7: 85 66 STA $66 C3/29D9: 3A DEC C3/29DA: 0A ASL C3/29DB: AA TAX C3/29DC: B4 91 LDY $91,X C3/29DE: F0 20 BEQ $2A00 C3/29E0: 20 AC 18 JSR $18AC C3/29E3: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/29E6: A5 66 LDA $66 C3/29E8: 8D 24 02 STA $0224 C3/29EB: 20 66 15 JSR $1566 C3/29EE: 20 15 69 JSR $6915 ; init party character data C3/29F1: 20 89 69 JSR $6989 C3/29F4: 20 95 15 JSR $1595 C3/29F7: A9 22 LDA #$22 C3/29F9: 85 27 STA $27 C3/29FB: A9 53 LDA #$53 C3/29FD: 85 26 STA $26 C3/29FF: 60 RTS C3/2A00: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/2A03: 20 5D 30 JSR $305D ; create mosaic thread C3/2A06: 60 RTS C3/2A07: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2A0A: 20 21 2A JSR $2A21 ; clear game time C3/2A0D: A9 01 LDA #$01 C3/2A0F: 8D 24 02 STA $0224 C3/2A12: 9C 1F 02 STZ $021F C3/2A15: 9C 05 02 STZ $0205 C3/2A18: A9 FF LDA #$FF C3/2A1A: 85 27 STA $27 C3/2A1C: A9 53 LDA #$53 C3/2A1E: 85 26 STA $26 C3/2A20: 60 RTS ; [ Clear Game Time ] C3/2A21: 7B TDC C3/2A22: A8 TAY C3/2A23: 8C 1B 02 STY $021B C3/2A26: 8C 1D 02 STY $021D C3/2A29: 60 RTS ; [ Menu State $23: ] C3/2A2A: 20 DA 15 JSR $15DA ; update cursor (save/restore confirm) C3/2A2D: A5 09 LDA $09 C3/2A2F: 89 80 BIT #$80 C3/2A31: D0 25 BNE $2A58 C3/2A33: A5 08 LDA $08 C3/2A35: 89 80 BIT #$80 C3/2A37: F0 2B BEQ $2A64 C3/2A39: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2A3C: A5 4B LDA $4B C3/2A3E: D0 1B BNE $2A5B C3/2A40: AC 63 18 LDY $1863 C3/2A43: 8C 1B 02 STY $021B C3/2A46: AD 65 18 LDA $1865 C3/2A49: 8D 1D 02 STA $021D C3/2A4C: A5 66 LDA $66 C3/2A4E: 8D 1F 02 STA $021F C3/2A51: A9 FF LDA #$FF C3/2A53: 85 27 STA $27 C3/2A55: 64 26 STZ $26 C3/2A57: 60 RTS C3/2A58: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/2A5B: 20 C1 18 JSR $18C1 ; restore sram from 7E/AC8D C3/2A5E: A9 20 LDA #$20 C3/2A60: 85 27 STA $27 C3/2A62: 64 26 STZ $26 C3/2A64: 60 RTS ; [ Menu State $3A: ] C3/2A65: A9 40 LDA #$40 C3/2A67: 04 45 TSB $45 C3/2A69: 20 76 2A JSR $2A76 C3/2A6C: 20 12 58 JSR $5812 C3/2A6F: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/2A72: A9 3B LDA #$3B C3/2A74: 80 2F BRA $2AA5 C3/2A76: 20 2F 35 JSR $352F ; disable interrupts C3/2A79: A9 01 LDA #$01 C3/2A7B: 04 45 TSB $45 C3/2A7D: A9 04 LDA #$04 C3/2A7F: 04 43 TSB $43 C3/2A81: 64 1B STZ $1B C3/2A83: 64 1C STZ $1C C3/2A85: 20 04 69 JSR $6904 C3/2A88: 20 A8 1B JSR $1BA8 C3/2A8B: A9 03 LDA #$03 C3/2A8D: 8D 07 21 STA $2107 C3/2A90: A9 C0 LDA #$C0 C3/2A92: 14 43 TRB $43 C3/2A94: A0 02 00 LDY #$0002 C3/2A97: 84 37 STY $37 C3/2A99: 20 98 2F JSR $2F98 C3/2A9C: A9 00 LDA #$00 C3/2A9E: A0 C0 2F LDY #$2FC0 C3/2AA1: 20 73 11 JSR $1173 ; create thread C3/2AA4: 60 RTS C3/2AA5: 85 27 STA $27 C3/2AA7: A9 01 LDA #$01 C3/2AA9: 85 26 STA $26 C3/2AAB: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $3B: ] C3/2AAE: A5 08 LDA $08 C3/2AB0: 89 10 BIT #$10 C3/2AB2: D0 12 BNE $2AC6 C3/2AB4: A5 08 LDA $08 C3/2AB6: 89 20 BIT #$20 C3/2AB8: D0 0C BNE $2AC6 C3/2ABA: A5 09 LDA $09 C3/2ABC: 89 01 BIT #$01 C3/2ABE: D0 06 BNE $2AC6 C3/2AC0: A5 09 LDA $09 C3/2AC2: 89 02 BIT #$02 C3/2AC4: F0 2D BEQ $2AF3 C3/2AC6: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/2AC9: 20 13 2D JSR $2D13 C3/2ACC: 20 F5 50 JSR $50F5 C3/2ACF: C2 21 REP #$21 C3/2AD1: AD 34 21 LDA $2134 C3/2AD4: 69 00 00 ADC #$0000 C3/2AD7: AA TAX C3/2AD8: 7B TDC C3/2AD9: E2 20 SEP #$20 C3/2ADB: BF C0 6A C4 LDA $C46AC0,X ; spell data C3/2ADF: 29 20 AND #$20 C3/2AE1: F0 10 BEQ $2AF3 C3/2AE3: A5 4E LDA $4E C3/2AE5: 85 5F STA $5F C3/2AE7: A9 06 LDA #$06 C3/2AE9: 14 46 TRB $46 C3/2AEB: 20 9F 08 JSR $089F C3/2AEE: A9 3D LDA #$3D C3/2AF0: 85 26 STA $26 C3/2AF2: 60 RTS C3/2AF3: A5 08 LDA $08 C3/2AF5: 89 80 BIT #$80 C3/2AF7: F0 03 BEQ $2AFC C3/2AF9: 4C 0C 2B JMP $2B0C C3/2AFC: A5 09 LDA $09 C3/2AFE: 89 80 BIT #$80 C3/2B00: F0 09 BEQ $2B0B C3/2B02: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/2B05: A9 3C LDA #$3C C3/2B07: 85 27 STA $27 C3/2B09: 64 26 STZ $26 C3/2B0B: 60 RTS C3/2B0C: 64 9C STZ $9C C3/2B0E: 20 CC 2C JSR $2CCC C3/2B11: 20 0B 2D JSR $2D0B ; get pointer to selected character data C3/2B14: 20 14 2C JSR $2C14 C3/2B17: 90 19 BCC $2B32 C3/2B19: 20 EA 2C JSR $2CEA C3/2B1C: 20 E5 0E JSR $0EE5 ; play cure/item sound effect C3/2B1F: 20 0B 2D JSR $2D0B ; get pointer to selected character data C3/2B22: B9 14 00 LDA $0014,Y C3/2B25: 85 F8 STA $F8 C3/2B27: B9 15 00 LDA $0015,Y C3/2B2A: 85 FB STA $FB C3/2B2C: 20 39 2B JSR $2B39 C3/2B2F: 4C DE 2B JMP $2BDE C3/2B32: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/2B35: 20 5D 30 JSR $305D ; create mosaic thread C3/2B38: 60 RTS ; [ ] _magic_exec_Call_C: C3/2B39: B9 0B 00 LDA $000B,Y ; max hp C3/2B3C: 8D B2 11 STA $11B2 C3/2B3F: B9 0C 00 LDA $000C,Y C3/2B42: 8D B3 11 STA $11B3 C3/2B45: 5A PHY C3/2B46: 20 13 2D JSR $2D13 C3/2B49: A6 00 LDX $00 ; 0: spell effect C3/2B4B: 22 09 00 C2 JSL $C20009 ; calculate item/spell effect C3/2B4F: 7A PLY C3/2B50: A5 9C LDA $9C C3/2B52: F0 08 BEQ $2B5C C3/2B54: C2 21 REP #$21 C3/2B56: AD B0 11 LDA $11B0 C3/2B59: 4A LSR C3/2B5A: 80 05 BRA $2B61 C3/2B5C: C2 21 REP #$21 C3/2B5E: AD B0 11 LDA $11B0 C3/2B61: 79 09 00 ADC $0009,Y C3/2B64: 99 09 00 STA $0009,Y C3/2B67: E2 20 SEP #$20 C3/2B69: 20 9A 2B JSR $2B9A ; check current hp vs max C3/2B6C: A5 FC LDA $FC C3/2B6E: 99 14 00 STA $0014,Y C3/2B71: A5 FF LDA $FF C3/2B73: 99 15 00 STA $0015,Y C3/2B76: A5 9C LDA $9C C3/2B78: D0 1F BNE $2B99 C3/2B7A: 7B TDC C3/2B7B: A5 4B LDA $4B C3/2B7D: AA TAX C3/2B7E: B5 69 LDA $69,X C3/2B80: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/2B84: 7B TDC C3/2B85: A5 4B LDA $4B C3/2B87: 0A ASL C3/2B88: AA TAX C3/2B89: B4 6D LDY $6D,X C3/2B8B: 84 67 STY $67 C3/2B8D: AD D2 11 LDA $11D2 C3/2B90: 20 EC 91 JSR $91EC C3/2B93: AD D4 11 LDA $11D4 C3/2B96: 4C FB 91 JMP $91FB C3/2B99: 60 RTS ; [ Check Current HP vs Max ] hp_chk: C3/2B9A: B9 0B 00 LDA $000B,Y ; max hp C3/2B9D: 85 F3 STA $F3 C3/2B9F: B9 0C 00 LDA $000C,Y C3/2BA2: 85 F4 STA $F4 C3/2BA4: 20 65 0D JSR $0D65 ; calculate max hp/mp w/ boost C3/2BA7: 20 92 0D JSR $0D92 ; check max hp (9999) C3/2BAA: C2 20 REP #$20 C3/2BAC: B9 09 00 LDA $0009,Y ; current hp C3/2BAF: C5 F3 CMP $F3 C3/2BB1: 90 06 BCC $2BB9 ; return if not greater than max (return clear carry) C3/2BB3: A5 F3 LDA $F3 C3/2BB5: 99 09 00 STA $0009,Y ; set current hp (return set carry) C3/2BB8: 38 SEC C3/2BB9: E2 20 SEP #$20 C3/2BBB: 60 RTS ; [ Check Current MP vs Max ] C3/2BBC: B9 0F 00 LDA $000F,Y C3/2BBF: 85 F3 STA $F3 C3/2BC1: B9 10 00 LDA $0010,Y C3/2BC4: 85 F4 STA $F4 C3/2BC6: 20 65 0D JSR $0D65 ; calculate max hp/mp w/ boost C3/2BC9: 20 9F 0D JSR $0D9F ; check max mp (999) C3/2BCC: C2 20 REP #$20 C3/2BCE: B9 0D 00 LDA $000D,Y C3/2BD1: C5 F3 CMP $F3 C3/2BD3: 90 06 BCC $2BDB C3/2BD5: A5 F3 LDA $F3 C3/2BD7: 99 0D 00 STA $000D,Y C3/2BDA: 38 SEC C3/2BDB: E2 20 SEP #$20 C3/2BDD: 60 RTS C3/2BDE: 20 01 2C JSR $2C01 C3/2BE1: 20 DF 2C JSR $2CDF C3/2BE4: 20 03 2D JSR $2D03 C3/2BE7: 20 13 2D JSR $2D13 C3/2BEA: 20 0D 51 JSR $510D C3/2BED: 86 E7 STX $E7 C3/2BEF: BE 0D 00 LDX $000D,Y C3/2BF2: E4 E7 CPX $E7 C3/2BF4: B0 0A BCS $2C00 C3/2BF6: A9 02 LDA #$02 C3/2BF8: 85 46 STA $46 C3/2BFA: A9 3C LDA #$3C C3/2BFC: 85 27 STA $27 C3/2BFE: 64 26 STZ $26 C3/2C00: 60 RTS C3/2C01: A5 4B LDA $4B C3/2C03: 85 9C STA $9C C3/2C05: 20 EE 24 JSR $24EE C3/2C08: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/2C0B: 20 93 31 JSR $3193 C3/2C0E: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/2C11: 4C BF 6E JMP $6EBF ; [ ] C3/2C14: B9 14 00 LDA $0014,Y C3/2C17: 29 80 AND #$80 C3/2C19: D0 25 BNE $2C40 C3/2C1B: 20 13 2D JSR $2D13 C3/2C1E: C9 2D CMP #$2D C3/2C20: F0 54 BEQ $2C76 C3/2C22: C9 2E CMP #$2E C3/2C24: F0 50 BEQ $2C76 C3/2C26: C9 2F CMP #$2F C3/2C28: F0 4C BEQ $2C76 C3/2C2A: C9 32 CMP #$32 C3/2C2C: F0 3F BEQ $2C6D C3/2C2E: C9 33 CMP #$33 C3/2C30: F0 32 BEQ $2C64 C3/2C32: C9 22 CMP #$22 C3/2C34: F0 17 BEQ $2C4D C3/2C36: C9 23 CMP #$23 C3/2C38: F0 4A BEQ $2C84 C3/2C3A: C9 2C CMP #$2C C3/2C3C: F0 18 BEQ $2C56 C3/2C3E: 80 42 BRA $2C82 C3/2C40: 20 13 2D JSR $2D13 C3/2C43: C9 30 CMP #$30 C3/2C45: F0 3D BEQ $2C84 C3/2C47: C9 31 CMP #$31 C3/2C49: F0 39 BEQ $2C84 C3/2C4B: 80 35 BRA $2C82 C3/2C4D: B9 15 00 LDA $0015,Y C3/2C50: 29 80 AND #$80 C3/2C52: D0 2E BNE $2C82 C3/2C54: 80 2E BRA $2C84 C3/2C56: B9 14 00 LDA $0014,Y C3/2C59: 29 7F AND #$7F C3/2C5B: 19 15 00 ORA $0015,Y C3/2C5E: 29 90 AND #$90 C3/2C60: F0 20 BEQ $2C82 C3/2C62: 80 20 BRA $2C84 C3/2C64: B9 14 00 LDA $0014,Y C3/2C67: 29 45 AND #$45 C3/2C69: F0 17 BEQ $2C82 C3/2C6B: 80 17 BRA $2C84 C3/2C6D: B9 14 00 LDA $0014,Y C3/2C70: 29 04 AND #$04 C3/2C72: F0 0E BEQ $2C82 C3/2C74: 80 0E BRA $2C84 C3/2C76: B9 14 00 LDA $0014,Y C3/2C79: 29 C2 AND #$C2 C3/2C7B: D0 05 BNE $2C82 C3/2C7D: 20 9A 2B JSR $2B9A ; check current hp vs max C3/2C80: 90 02 BCC $2C84 C3/2C82: 18 CLC C3/2C83: 60 RTS C3/2C84: 38 SEC C3/2C85: 60 RTS C3/2C86: 64 AF STZ $AF C3/2C88: A9 01 LDA #$01 C3/2C8A: 85 9C STA $9C C3/2C8C: 20 CC 2C JSR $2CCC C3/2C8F: 7B TDC C3/2C90: 48 PHA C3/2C91: 0A ASL C3/2C92: AA TAX C3/2C93: B4 6D LDY $6D,X C3/2C95: F0 21 BEQ $2CB8 C3/2C97: 20 14 2C JSR $2C14 C3/2C9A: 90 1C BCC $2CB8 C3/2C9C: B9 14 00 LDA $0014,Y C3/2C9F: 85 F8 STA $F8 C3/2CA1: B9 15 00 LDA $0015,Y C3/2CA4: 85 FB STA $FB C3/2CA6: 20 39 2B JSR $2B39 C3/2CA9: 20 CC 2C JSR $2CCC C3/2CAC: A5 AF LDA $AF C3/2CAE: D0 08 BNE $2CB8 C3/2CB0: 20 E5 0E JSR $0EE5 ; play cure/item sound effect C3/2CB3: 20 EA 2C JSR $2CEA C3/2CB6: E6 AF INC $AF C3/2CB8: 7B TDC C3/2CB9: 68 PLA C3/2CBA: 1A INC C3/2CBB: C9 04 CMP #$04 C3/2CBD: D0 D1 BNE $2C90 C3/2CBF: A5 AF LDA $AF C3/2CC1: D0 06 BNE $2CC9 C3/2CC3: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/2CC6: 20 5D 30 JSR $305D ; create mosaic thread C3/2CC9: 4C DE 2B JMP $2BDE C3/2CCC: 20 DF 2C JSR $2CDF C3/2CCF: AD A0 11 LDA $11A0 ; mag.pwr C3/2CD2: 8D AE 11 STA $11AE ; hit rate C3/2CD5: 20 03 2D JSR $2D03 C3/2CD8: B9 08 00 LDA $0008,Y C3/2CDB: 8D AF 11 STA $11AF ; level C3/2CDE: 60 RTS C3/2CDF: 7B TDC C3/2CE0: A5 28 LDA $28 C3/2CE2: AA TAX C3/2CE3: B5 69 LDA $69,X C3/2CE5: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/2CE9: 60 RTS ; [ Subtract Spell's MP Cost ] C3/2CEA: 20 13 2D JSR $2D13 C3/2CED: 20 0D 51 JSR $510D C3/2CF0: 86 E7 STX $E7 C3/2CF2: 20 03 2D JSR $2D03 C3/2CF5: C2 20 REP #$20 C3/2CF7: B9 0D 00 LDA $000D,Y C3/2CFA: 38 SEC C3/2CFB: E5 E7 SBC $E7 C3/2CFD: 99 0D 00 STA $000D,Y C3/2D00: E2 20 SEP #$20 C3/2D02: 60 RTS C3/2D03: 7B TDC C3/2D04: A5 28 LDA $28 C3/2D06: 0A ASL C3/2D07: AA TAX C3/2D08: B4 6D LDY $6D,X C3/2D0A: 60 RTS ; [ Get Pointer to Selected Character Data ] C3/2D0B: 7B TDC C3/2D0C: A5 4B LDA $4B ; cursor position C3/2D0E: 0A ASL C3/2D0F: AA TAX C3/2D10: B4 6D LDY $6D,X ; pointer to character data C3/2D12: 60 RTS C3/2D13: 7B TDC C3/2D14: A5 99 LDA $99 C3/2D16: AA TAX C3/2D17: BF 89 9D 7E LDA $7E9D89,X C3/2D1B: 60 RTS ; [ Menu State $3C: ] C3/2D1C: 20 2F 35 JSR $352F ; disable interrupts C3/2D1F: 20 08 6A JSR $6A08 C3/2D22: A9 42 LDA #$42 C3/2D24: 14 45 TRB $45 C3/2D26: 64 4A STZ $4A C3/2D28: 64 49 STZ $49 C3/2D2A: 20 BC 4D JSR $4DBC C3/2D2D: 20 80 4C JSR $4C80 C3/2D30: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/2D33: 20 30 21 JSR $2130 C3/2D36: 20 82 4B JSR $4B82 C3/2D39: A5 8E LDA $8E C3/2D3B: 85 4D STA $4D C3/2D3D: A4 8E LDY $8E C3/2D3F: 84 4F STY $4F C3/2D41: A5 90 LDA $90 C3/2D43: 85 4A STA $4A C3/2D45: A5 4A LDA $4A C3/2D47: 85 E0 STA $E0 C3/2D49: A5 50 LDA $50 C3/2D4B: 38 SEC C3/2D4C: E5 E0 SBC $E0 C3/2D4E: 85 4E STA $4E C3/2D50: 20 8B 4B JSR $4B8B C3/2D53: 20 58 21 JSR $2158 C3/2D56: 20 C6 51 JSR $51C6 C3/2D59: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/2D5C: 20 68 13 JSR $1368 ; wait for vblank C3/2D5F: A4 00 LDY $00 C3/2D61: 84 35 STY $35 C3/2D63: 20 99 1B JSR $1B99 C3/2D66: A9 10 LDA #$10 C3/2D68: 04 45 TSB $45 C3/2D6A: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/2D6D: A9 1A LDA #$1A C3/2D6F: 85 27 STA $27 C3/2D71: A9 01 LDA #$01 C3/2D73: 85 26 STA $26 C3/2D75: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $3D: ] C3/2D78: A5 08 LDA $08 C3/2D7A: 89 10 BIT #$10 C3/2D7C: D0 12 BNE $2D90 C3/2D7E: A5 08 LDA $08 C3/2D80: 89 20 BIT #$20 C3/2D82: D0 0C BNE $2D90 C3/2D84: A5 09 LDA $09 C3/2D86: 89 01 BIT #$01 C3/2D88: D0 06 BNE $2D90 C3/2D8A: A5 09 LDA $09 C3/2D8C: 89 02 BIT #$02 C3/2D8E: F0 0B BEQ $2D9B C3/2D90: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/2D93: 20 B7 2D JSR $2DB7 C3/2D96: A9 3B LDA #$3B C3/2D98: 85 26 STA $26 C3/2D9A: 60 RTS C3/2D9B: A5 08 LDA $08 C3/2D9D: 89 80 BIT #$80 C3/2D9F: F0 03 BEQ $2DA4 C3/2DA1: 4C 86 2C JMP $2C86 C3/2DA4: A5 09 LDA $09 C3/2DA6: 89 80 BIT #$80 C3/2DA8: F0 0C BEQ $2DB6 C3/2DAA: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/2DAD: 20 B7 2D JSR $2DB7 C3/2DB0: A9 3C LDA #$3C C3/2DB2: 85 27 STA $27 C3/2DB4: 64 26 STZ $26 C3/2DB6: 60 RTS C3/2DB7: 20 98 2F JSR $2F98 C3/2DBA: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/2DBD: A9 00 LDA #$00 C3/2DBF: A0 C0 2F LDY #$2FC0 C3/2DC2: 20 73 11 JSR $1173 ; create thread C3/2DC5: 20 B0 11 JSR $11B0 ; execute threads C3/2DC8: A5 5F LDA $5F C3/2DCA: 85 4E STA $4E C3/2DCC: A9 08 LDA #$08 C3/2DCE: 14 46 TRB $46 C3/2DD0: 60 RTS C3/2DD1: 7B TDC C3/2DD2: A5 28 LDA $28 C3/2DD4: AA TAX C3/2DD5: A5 4B LDA $4B C3/2DD7: A8 TAY C3/2DD8: B5 75 LDA $75,X C3/2DDA: 85 E0 STA $E0 C3/2DDC: B9 75 00 LDA $0075,Y C3/2DDF: 95 75 STA $75,X C3/2DE1: A5 E0 LDA $E0 C3/2DE3: 99 75 00 STA $0075,Y C3/2DE6: B5 69 LDA $69,X C3/2DE8: 85 E0 STA $E0 C3/2DEA: B9 69 00 LDA $0069,Y C3/2DED: 95 69 STA $69,X C3/2DEF: A5 E0 LDA $E0 C3/2DF1: 99 69 00 STA $0069,Y C3/2DF4: 7B TDC C3/2DF5: A5 28 LDA $28 C3/2DF7: 0A ASL C3/2DF8: AA TAX C3/2DF9: A5 4B LDA $4B C3/2DFB: 0A ASL C3/2DFC: A8 TAY C3/2DFD: C2 20 REP #$20 C3/2DFF: B5 6D LDA $6D,X C3/2E01: 85 E7 STA $E7 C3/2E03: B9 6D 00 LDA $006D,Y C3/2E06: 95 6D STA $6D,X C3/2E08: A5 E7 LDA $E7 C3/2E0A: 99 6D 00 STA $006D,Y C3/2E0D: E2 20 SEP #$20 C3/2E0F: 60 RTS C3/2E10: 7B TDC C3/2E11: A5 28 LDA $28 C3/2E13: AA TAX C3/2E14: B5 75 LDA $75,X C3/2E16: 85 E0 STA $E0 C3/2E18: B5 60 LDA $60,X C3/2E1A: AA TAX C3/2E1B: A5 E0 LDA $E0 C3/2E1D: 89 20 BIT #$20 C3/2E1F: F0 08 BEQ $2E29 C3/2E21: A9 20 LDA #$20 C3/2E23: 14 E0 TRB $E0 C3/2E25: A9 03 LDA #$03 C3/2E27: 80 06 BRA $2E2F C3/2E29: A9 20 LDA #$20 C3/2E2B: 04 E0 TSB $E0 C3/2E2D: A9 02 LDA #$02 C3/2E2F: 9F 49 36 7E STA $7E3649,X C3/2E33: 7B TDC C3/2E34: A5 28 LDA $28 C3/2E36: AA TAX C3/2E37: A5 E0 LDA $E0 C3/2E39: 95 75 STA $75,X C3/2E3B: 60 RTS C3/2E3C: 7B TDC C3/2E3D: A5 60 LDA $60 C3/2E3F: AA TAX C3/2E40: A9 FF LDA #$FF C3/2E42: 9F C9 35 7E STA $7E35C9,X C3/2E46: A5 61 LDA $61 C3/2E48: AA TAX C3/2E49: A9 FF LDA #$FF C3/2E4B: 9F C9 35 7E STA $7E35C9,X C3/2E4F: A5 62 LDA $62 C3/2E51: AA TAX C3/2E52: A9 FF LDA #$FF C3/2E54: 9F C9 35 7E STA $7E35C9,X C3/2E58: A5 63 LDA $63 C3/2E5A: AA TAX C3/2E5B: A9 FF LDA #$FF C3/2E5D: 9F C9 35 7E STA $7E35C9,X C3/2E61: 60 RTS ; [ Main Menu: A Button Pressed ] C3/2E62: 7B TDC C3/2E63: A5 4B LDA $4B C3/2E65: 85 25 STA $25 ; set main menu cursor position C3/2E67: 0A ASL C3/2E68: AA TAX C3/2E69: 7C 6C 2E JMP ($2E6C,X) ; main menu jump table C3/2E6C: .DW $2E86, $2E90, $2E90, $2E90, $2E90, $2E7A, $2EAA ; config C3/2E7A: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2E7D: 64 5F STZ $5F C3/2E7F: 64 26 STZ $26 ; fade out C3/2E81: A9 0D LDA #$0D C3/2E83: 85 27 STA $27 ; config (init) C3/2E85: 60 RTS ; item C3/2E86: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2E89: 64 26 STZ $26 ; fade out C3/2E8B: A9 07 LDA #$07 C3/2E8D: 85 27 STA $27 ; item (init) C3/2E8F: 60 RTS ; skills, equip, relic, status C3/2E90: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2E93: A9 02 LDA #$02 C3/2E95: 14 46 TRB $46 ; disable cursor 1 C3/2E97: 20 98 2F JSR $2F98 ; init character select cursor C3/2E9A: A9 00 LDA #$00 C3/2E9C: A0 C0 2F LDY #$2FC0 ; character select cursor thread C3/2E9F: 20 73 11 JSR $1173 ; create thread C3/2EA2: 20 06 2F JSR $2F06 ; create flashing cursor (2 pixels to the right) C3/2EA5: A9 06 LDA #$06 C3/2EA7: 85 26 STA $26 ; character select menu state C3/2EA9: 60 RTS ; save C3/2EAA: AD 01 02 LDA $0201 ; branch if save is not enabled C3/2EAD: 10 10 BPL $2EBF C3/2EAF: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/2EB2: 64 26 STZ $26 ; fade out C3/2EB4: A9 13 LDA #$13 C3/2EB6: 85 27 STA $27 ; save select (init) menu state C3/2EB8: 85 9E STA $9E ; C3/2EBA: A9 04 LDA #$04 C3/2EBC: 85 9F STA $9F ; C3/2EBE: 60 RTS C3/2EBF: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/2EC2: 20 5D 30 JSR $305D ; create mosaic thread C3/2EC5: 60 RTS ; [ Main Menu: Left Button Pressed ] C3/2EC6: A9 02 LDA #$02 ; disable cursor 1 C3/2EC8: 14 46 TRB $46 C3/2ECA: 20 98 2F JSR $2F98 ; init character select cursor C3/2ECD: A9 00 LDA #$00 C3/2ECF: A0 C0 2F LDY #$2FC0 ; character select cursor thread C3/2ED2: 20 73 11 JSR $1173 ; create thread C3/2ED5: A9 06 LDA #$06 C3/2ED7: 85 20 STA $20 ; wait 6 frames C3/2ED9: A0 F4 FF LDY #$FFF4 ; set menu scroll speed to -12 C3/2EDC: 84 9C STY $9C C3/2EDE: A9 05 LDA #$05 ; disable cursor 2 and flashing cursor C3/2EE0: 14 46 TRB $46 C3/2EE2: A9 0F LDA #$0F ; order (char select) C3/2EE4: 85 27 STA $27 C3/2EE6: A9 65 LDA #$65 ; scroll menu C3/2EE8: 85 26 STA $26 C3/2EEA: 60 RTS C3/2EEB: A9 02 LDA #$02 C3/2EED: A0 D1 08 LDY #$08D1 ; multi cursor thread C3/2EF0: 20 73 11 JSR $1173 ; create thread C3/2EF3: C2 20 REP #$20 C3/2EF5: A9 38 00 LDA #$0038 C3/2EF8: 9F CA 33 7E STA $7E33CA,X C3/2EFC: A9 36 00 LDA #$0036 C3/2EFF: 9F 4A 34 7E STA $7E344A,X C3/2F03: E2 20 SEP #$20 C3/2F05: 60 RTS ; [ Create Flashing Cursor (2 pixels to the right) ] C3/2F06: A9 02 LDA #$02 C3/2F08: A0 FF 07 LDY #$07FF ; flashing cursor thread C3/2F0B: 20 73 11 JSR $1173 ; create thread C3/2F0E: C2 20 REP #$20 C3/2F10: A5 55 LDA $55 ; cursor X position C3/2F12: 1A INC C3/2F13: 1A INC C3/2F14: 9F CA 33 7E STA $7E33CA,X ; set thread X position C3/2F18: A5 57 LDA $57 ; cursor Y position C3/2F1A: 9F 4A 34 7E STA $7E344A,X ; set thread Y position C3/2F1E: E2 20 SEP #$20 C3/2F20: 60 RTS ; [ Create Flashing Cursor (4 pixels right/up) ] C3/2F21: A9 01 LDA #$01 C3/2F23: A0 FF 07 LDY #$07FF ; flashing cursor thread C3/2F26: 20 73 11 JSR $1173 ; create thread C3/2F29: C2 20 REP #$20 C3/2F2B: A5 55 LDA $55 C3/2F2D: 18 CLC C3/2F2E: 69 04 00 ADC #$0004 C3/2F31: 9F CA 33 7E STA $7E33CA,X C3/2F35: A5 57 LDA $57 C3/2F37: 38 SEC C3/2F38: E9 04 00 SBC #$0004 C3/2F3B: 9F 4A 34 7E STA $7E344A,X C3/2F3F: E2 20 SEP #$20 C3/2F41: 60 RTS ; [ Main Menu Cursor Thread ] C3/2F42: AA TAX C3/2F43: 7C 46 2F JMP ($2F46,X) ; main menu cursor thread jump table C3/2F46: .DW $2F4A, $2F6B ; state 0: init C3/2F4A: A6 2D LDX $2D ; thread pointer C3/2F4C: A9 02 LDA #$02 C3/2F4E: 04 46 TSB $46 ; enable cursor 1 C3/2F50: FE 49 36 INC $3649,X ; increment thread counter C3/2F53: A0 85 2F LDY #$2F85 C3/2F56: 20 FE 05 JSR $05FE ; init cursor C3/2F59: AD 4E 1D LDA $1D4E ; branch if cursor is on memory C3/2F5C: 29 40 AND #$40 C3/2F5E: F0 05 BEQ $2F65 C3/2F60: AC 2B 02 LDY $022B ; load saved cursor position C3/2F63: 84 4D STY $4D C3/2F65: A0 8A 2F LDY #$2F8A C3/2F68: 20 40 06 JSR $0640 ; update cursor position (single page) ; state 1: update C3/2F6B: A5 46 LDA $46 C3/2F6D: 89 02 BIT #$02 C3/2F6F: F0 12 BEQ $2F83 ; terminate thread if cursor 1 is not active C3/2F71: A6 2D LDX $2D C3/2F73: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/2F76: A0 8A 2F LDY #$2F8A C3/2F79: 20 40 06 JSR $0640 ; update cursor position (single page) C3/2F7C: A4 4D LDY $4D C3/2F7E: 8C 2B 02 STY $022B ; save cursor position C3/2F81: 38 SEC C3/2F82: 60 RTS C3/2F83: 18 CLC C3/2F84: 60 RTS ; main menu cursor data C3/2F85: .DB $80, $00, $00, $01, $07 ; main menu cursor positions C3/2F8A: .DW $12AF, $21AF, $30AF, $3FAF, $4EAF, $5DAF, $6CAF ; [ Init Character Select Cursor ] C3/2F98: 20 B1 2F JSR $2FB1 ; load character select cursor data C3/2F9B: 7B TDC C3/2F9C: AA TAX C3/2F9D: A8 TAY C3/2F9E: BD 69 00 LDA $0069,X ; character number C3/2FA1: 10 07 BPL $2FAA ; branch if slot is not empty C3/2FA3: DA PHX C3/2FA4: 8A TXA C3/2FA5: 0A ASL C3/2FA6: AA TAX C3/2FA7: 74 85 STZ $85,X ; disable cursor position C3/2FA9: FA PLX C3/2FAA: E8 INX C3/2FAB: E0 04 00 CPX #$0004 C3/2FAE: D0 EE BNE $2F9E C3/2FB0: 60 RTS ; [ Load Character Select Cursor Data ] C3/2FB1: A6 00 LDX $00 C3/2FB3: BF 42 30 C3 LDA $C33042,X C3/2FB7: 95 80 STA $80,X C3/2FB9: E8 INX C3/2FBA: E0 0D 00 CPX #$000D C3/2FBD: D0 F4 BNE $2FB3 C3/2FBF: 60 RTS ; [ Character Select Cursor Thread ] C3/2FC0: AA TAX C3/2FC1: 7C C4 2F JMP ($2FC4,X) C3/2FC4: .DW $2FC8, $3014 C3/2FC8: A6 2D LDX $2D C3/2FCA: A9 14 LDA #$14 C3/2FCC: 04 46 TSB $46 C3/2FCE: FE 49 36 INC $3649,X C3/2FD1: 20 F5 2F JSR $2FF5 C3/2FD4: A5 45 LDA $45 C3/2FD6: 89 40 BIT #$40 C3/2FD8: D0 0C BNE $2FE6 C3/2FDA: AD 4E 1D LDA $1D4E C3/2FDD: 29 40 AND #$40 C3/2FDF: F0 05 BEQ $2FE6 C3/2FE1: AC 2D 02 LDY $022D C3/2FE4: 84 4D STY $4D C3/2FE6: 20 08 30 JSR $3008 C3/2FE9: A5 55 LDA $55 C3/2FEB: D0 06 BNE $2FF3 C3/2FED: 20 F5 2F JSR $2FF5 C3/2FF0: 20 08 30 JSR $3008 C3/2FF3: 38 SEC C3/2FF4: 60 RTS C3/2FF5: A0 80 00 LDY #$0080 C3/2FF8: 20 FE 05 JSR $05FE ; init cursor C3/2FFB: A0 80 00 LDY #$0080 C3/2FFE: A9 00 LDA #$00 C3/3000: 85 ED STA $ED C3/3002: 20 02 06 JSR $0602 C3/3005: 4C 1E 06 JMP $061E ; select first valid character slot C3/3008: A0 85 00 LDY #$0085 C3/300B: 84 E7 STY $E7 C3/300D: A9 00 LDA #$00 C3/300F: 85 E9 STA $E9 C3/3011: 4C 43 06 JMP $0643 C3/3014: A5 45 LDA $45 C3/3016: 89 40 BIT #$40 C3/3018: D0 05 BNE $301F C3/301A: A4 4D LDY $4D C3/301C: 8C 2D 02 STY $022D C3/301F: A5 46 LDA $46 C3/3021: 89 04 BIT #$04 C3/3023: F0 1B BEQ $3040 C3/3025: 89 10 BIT #$10 C3/3027: F0 15 BEQ $303E C3/3029: A6 2D LDX $2D C3/302B: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/302E: A0 85 00 LDY #$0085 ; cursor data pointer = $000085 C3/3031: 84 E7 STY $E7 C3/3033: A9 00 LDA #$00 C3/3035: 85 E9 STA $E9 C3/3037: 20 43 06 JSR $0643 ; update cursor position (single page) C3/303A: A5 55 LDA $55 C3/303C: F0 ED BEQ $302B C3/303E: 38 SEC C3/303F: 60 RTS C3/3040: 18 CLC C3/3041: 60 RTS ; character select cursor data C3/3042: .DB $80, $00, $00, $01, $04 ; character select cursor positions C3/3047: .DW $2808, $5808, $8808, $B808 ; [ Create Fade Out Thread ] C3/304F: 7B TDC ; priority 0 C3/3050: A0 9F 30 LDY #$309F C3/3053: 4C 73 11 JMP $1173 ; create thread ; [ Create Fade In Thread ] C3/3056: 7B TDC ; priority 0 C3/3057: A0 CA 30 LDY #$30CA C3/305A: 4C 73 11 JMP $1173 ; create thread ; [ Create Mosaic Thread ] C3/305D: 7B TDC ; priority 0 C3/305E: A0 64 30 LDY #$3064 C3/3061: 4C 73 11 JMP $1173 ; create thread ; [ Mosaic Thread ] C3/3064: AA TAX C3/3065: 7C 68 30 JMP ($3068,X) C3/3068: .DW $306C, $3079 C3/306C: A6 2D LDX $2D C3/306E: FE 49 36 INC $3649,X C3/3071: 9E CA 33 STZ $33CA,X C3/3074: A9 08 LDA #$08 C3/3076: 9D 49 33 STA $3349,X C3/3079: A6 2D LDX $2D C3/307B: BD 49 33 LDA $3349,X C3/307E: F0 15 BEQ $3095 C3/3080: 7B TDC C3/3081: BD CA 33 LDA $33CA,X C3/3084: AA TAX C3/3085: BF 97 30 C3 LDA $C33097,X C3/3089: 85 B5 STA $B5 ; set mosaic register C3/308B: A6 2D LDX $2D C3/308D: FE CA 33 INC $33CA,X C3/3090: DE 49 33 DEC $3349,X C3/3093: 38 SEC C3/3094: 60 RTS C3/3095: 18 CLC C3/3096: 60 RTS ; mosaic data C3/3097: .DB $17, $27, $37, $47, $37, $27, $17, $07 ; [ Fade Out Thread ] C3/309F: AA TAX C3/30A0: 7C A3 30 JMP ($30A3,X) C3/30A3: .DW $30A7, $30B1 C3/30A7: A6 2D LDX $2D C3/30A9: FE 49 36 INC $3649,X C3/30AC: A9 0F LDA #$0F C3/30AE: 9D CA 33 STA $33CA,X C3/30B1: A4 20 LDY $20 C3/30B3: F0 0F BEQ $30C4 C3/30B5: A6 2D LDX $2D C3/30B7: BD CA 33 LDA $33CA,X C3/30BA: 85 44 STA $44 C3/30BC: DE CA 33 DEC $33CA,X C3/30BF: DE CA 33 DEC $33CA,X C3/30C2: 38 SEC C3/30C3: 60 RTS C3/30C4: A9 01 LDA #$01 C3/30C6: 85 44 STA $44 C3/30C8: 18 CLC C3/30C9: 60 RTS ; [ Fade In Thread ] C3/30CA: AA TAX C3/30CB: 7C CE 30 JMP ($30CE,X) C3/30CE: .DW $30D2, $30DC C3/30D2: A6 2D LDX $2D C3/30D4: FE 49 36 INC $3649,X C3/30D7: A9 01 LDA #$01 C3/30D9: 9D 4A 34 STA $344A,X C3/30DC: A4 20 LDY $20 C3/30DE: F0 0F BEQ $30EF C3/30E0: A6 2D LDX $2D C3/30E2: BD 4A 34 LDA $344A,X C3/30E5: 85 44 STA $44 C3/30E7: FE 4A 34 INC $344A,X C3/30EA: FE 4A 34 INC $344A,X C3/30ED: 38 SEC C3/30EE: 60 RTS C3/30EF: A9 0F LDA #$0F C3/30F1: 85 44 STA $44 C3/30F3: 18 CLC C3/30F4: 60 RTS ; [ Init BG (main menu) ] C3/30F5: 20 99 3F JSR $3F99 ; init font color C3/30F8: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/30FB: 20 2D 6A JSR $6A2D ; clear bg2 data (top right screen) C3/30FE: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/3101: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/3104: A0 CF 31 LDY #$31CF C3/3107: 20 41 03 JSR $0341 ; draw window (left half of order window) C3/310A: A0 D3 31 LDY #$31D3 C3/310D: 20 41 03 JSR $0341 ; draw window (right half of order window) C3/3110: A0 C7 31 LDY #$31C7 C3/3113: 20 41 03 JSR $0341 ; draw window (main window) C3/3116: A0 BB 31 LDY #$31BB C3/3119: 20 41 03 JSR $0341 ; draw window (main selection window) C3/311C: 20 70 31 JSR $3170 ; C3/311F: 20 6C 32 JSR $326C ; draw game time or timer C3/3122: 20 F3 31 JSR $31F3 ; draw "Item/Skills/Equip/Relic/Status/Config/Save" text C3/3125: 4C 9F 31 JMP $319F ; C3/3128: 20 99 3F JSR $3F99 ; init font color C3/312B: 20 82 6E JSR $6E82 ; load character portrait graphics C3/312E: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/3131: 20 A8 31 JSR $31A8 C3/3134: A0 C7 31 LDY #$31C7 C3/3137: 20 41 03 JSR $0341 ; draw window C3/313A: A0 CB 31 LDY #$31CB C3/313D: 20 41 03 JSR $0341 ; draw window C3/3140: 20 70 31 JSR $3170 C3/3143: 20 95 32 JSR $3295 C3/3146: 20 D7 31 JSR $31D7 ; draw "Yes/No/Erasing data, Okay?" text C3/3149: 4C 9F 31 JMP $319F C3/314C: 20 99 3F JSR $3F99 ; init font color C3/314F: 20 82 6E JSR $6E82 ; load character portrait graphics C3/3152: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/3155: 20 A8 31 JSR $31A8 C3/3158: A0 C7 31 LDY #$31C7 C3/315B: 20 41 03 JSR $0341 ; draw window C3/315E: A0 CB 31 LDY #$31CB C3/3161: 20 41 03 JSR $0341 ; draw window C3/3164: 20 70 31 JSR $3170 C3/3167: 20 95 32 JSR $3295 C3/316A: 20 E5 31 JSR $31E5 ; draw "Yes/No/This data?" text C3/316D: 4C 9F 31 JMP $319F ; [ ] C3/3170: 7B TDC C3/3171: 22 1D CA D4 JSL $D4CA1D ; init hdma for menu window gradient bars C3/3175: A0 BF 31 LDY #$31BF C3/3178: 20 41 03 JSR $0341 ; draw window C3/317B: A0 C3 31 LDY #$31C3 C3/317E: 20 41 03 JSR $0341 ; draw window C3/3181: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/3184: 20 8A 31 JSR $318A C3/3187: 4C 21 32 JMP $3221 ; draw gp and steps C3/318A: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/318D: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/3190: 20 46 6A JSR $6A46 ; clear bg3 data (bottom left screen) C3/3193: 20 F1 32 JSR $32F1 ; draw hp/mp/lv number text (slot 1) C3/3196: 20 3D 33 JSR $333D ; draw hp/mp/lv number text (slot 2) C3/3199: 20 89 33 JSR $3389 ; draw hp/mp/lv number text (slot 3) C3/319C: 4C D5 33 JMP $33D5 ; draw hp/mp/lv number text (slot 4) ; [ ] C3/319F: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/31A2: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/31A5: 4C 7C 0E JMP $0E7C ; copy bg3 data to vram (bottom screens) C3/31A8: A5 66 LDA $66 C3/31AA: C9 01 CMP #$01 C3/31AC: F0 07 BEQ $31B5 C3/31AE: C9 02 CMP #$02 C3/31B0: F0 06 BEQ $31B8 C3/31B2: 4C D9 3A JMP $3AD9 C3/31B5: 4C A1 3A JMP $3AA1 C3/31B8: 4C BD 3A JMP $3ABD ; main menu window data ; C3/31BB: bg2_0(23, 1) [ 6x13] ; C3/31BF: bg2_0(23,16) [ 6x 2] ; C3/31C3: bg2_0(22,20) [ 7x 5] ; C3/31C7: bg2_0( 1, 1) [28x24] ; C3/31CB: bg2_0(22, 1) [ 7x10] ; C3/31CF: bg2_1(24, 1) [ 7x 2] ; C3/31D3: bg2_0(30, 0) [ 1x 2] C3/31BB: .DW $58B7 \ .DB $06, $0D C3/31BF: .DW $5C77 \ .DB $06, $02 C3/31C3: .DW $5D75 \ .DB $07, $05 C3/31C7: .DW $588B \ .DB $1C, $18 C3/31CB: .DW $58B5 \ .DB $07, $0A C3/31CF: .DW $60B9 \ .DB $07, $02 C3/31D3: .DW $5885 \ .DB $01, $02 ; [ Draw "Yes/No/Erasing data, Okay?" Text ] C3/31D7: A9 20 LDA #$20 ; white text C3/31D9: 85 29 STA $29 C3/31DB: A2 65 37 LDX #$3765 ; "Yes", "No", "Erasing", "data.", "Okay?" C3/31DE: A0 0A 00 LDY #$000A C3/31E1: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/31E4: 60 RTS ; [ Draw "Yes/No/This data?" Text ] C3/31E5: A9 20 LDA #$20 ; white text C3/31E7: 85 29 STA $29 C3/31E9: A2 5D 37 LDX #$375D ; "Yes", "No", "This", "data?" C3/31EC: A0 08 00 LDY #$0008 C3/31EF: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/31F2: 60 RTS ; [ Draw "Item/Skills/Equip/Relic/Status/Config/Save" Text ] C3/31F3: A9 20 LDA #$20 ; white text C3/31F5: 85 29 STA $29 C3/31F7: A2 29 37 LDX #$3729 ; "Item", "Skills", "Relic", "Status" C3/31FA: A0 08 00 LDY #$0008 C3/31FD: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/3200: A9 20 LDA #$20 C3/3202: 85 29 STA $29 C3/3204: A2 59 37 LDX #$3759 ; "Equip", "Config" C3/3207: A0 04 00 LDY #$0004 C3/320A: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/320D: AD 01 02 LDA $0201 C3/3210: 10 04 BPL $3216 ; branch if save is disabled C3/3212: A9 20 LDA #$20 ; white text C3/3214: 80 02 BRA $3218 C3/3216: A9 24 LDA #$24 ; gray text C3/3218: 85 29 STA $29 C3/321A: A0 FD 37 LDY #$37FD ; "Save" C3/321D: 20 F9 02 JSR $02F9 ; draw positioned text C3/3220: 60 RTS ; [ Draw GP and Steps ] C3/3221: A9 20 LDA #$20 ; white text C3/3223: 85 29 STA $29 C3/3225: A0 0B 38 LDY #$380B ; text: ":" C3/3228: 20 F9 02 JSR $02F9 ; draw positioned text C3/322B: A9 2C LDA #$2C ; teal text C3/322D: 85 29 STA $29 C3/322F: A2 23 37 LDX #$3723 ; "Time", "Steps", "Order" C3/3232: A0 06 00 LDY #$0006 C3/3235: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/3238: A0 17 38 LDY #$3817 ; text: "Gp" C3/323B: 20 F9 02 JSR $02F9 ; draw positioned text C3/323E: 20 CE 32 JSR $32CE ; check max gp C3/3241: A9 20 LDA #$20 ; white text C3/3243: 85 29 STA $29 C3/3245: AC 66 18 LDY $1866 ; gp C3/3248: 84 F1 STY $F1 C3/324A: AD 68 18 LDA $1868 C3/324D: 85 F3 STA $F3 C3/324F: 20 82 05 JSR $0582 ; convert hex to decimal (8 digits) C3/3252: A2 F7 7D LDX #$7DF7 C3/3255: 20 AC 04 JSR $04AC ; draw number text (7 digit) C3/3258: AC 60 18 LDY $1860 ; steps C3/325B: 84 F1 STY $F1 C3/325D: AD 62 18 LDA $1862 C3/3260: 85 F3 STA $F3 C3/3262: 20 82 05 JSR $0582 ; convert hex to decimal (8 digits) C3/3265: A2 B7 7E LDX #$7EB7 C3/3268: 20 AC 04 JSR $04AC ; draw number text (7 digit) C3/326B: 60 RTS ; [ Draw Game Time or Timer ] C3/326C: AD 88 11 LDA $1188 ; branch if timer 0 is not active C3/326F: 89 10 BIT #$10 C3/3271: F0 16 BEQ $3289 C3/3273: AC 89 11 LDY $1189 C3/3276: 20 B2 32 JSR $32B2 ; divide by 60 C3/3279: 20 B2 32 JSR $32B2 ; divide by 60 C3/327C: A5 E7 LDA $E7 C3/327E: 8D 63 18 STA $1863 C3/3281: AD 16 42 LDA $4216 C3/3284: 8D 64 18 STA $1864 C3/3287: 80 0C BRA $3295 C3/3289: AC 1B 02 LDY $021B C3/328C: 8C 63 18 STY $1863 C3/328F: AD 1D 02 LDA $021D C3/3292: 8D 65 18 STA $1865 C3/3295: A9 20 LDA #$20 ; white text C3/3297: 85 29 STA $29 C3/3299: AD 63 18 LDA $1863 C3/329C: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/329F: A2 FB 7C LDX #$7CFB C3/32A2: 20 B6 04 JSR $04B6 ; draw hours text (minutes for timer) C3/32A5: AD 64 18 LDA $1864 C3/32A8: 20 F9 04 JSR $04F9 ; convert hex to decimal (3 digits, keep leading zeroes) C3/32AB: A2 01 7D LDX #$7D01 C3/32AE: 20 B6 04 JSR $04B6 ; draw minutes text (seconds for timer) C3/32B1: 60 RTS ; [ Divide by 60 ] ; convert frames to seconds, seconds to minutes, or minutes to hours C3/32B2: 8C 04 42 STY $4204 C3/32B5: A9 3C LDA #$3C C3/32B7: 8D 06 42 STA $4206 C3/32BA: EA NOP C3/32BB: EA NOP C3/32BC: EA NOP C3/32BD: EA NOP C3/32BE: EA NOP C3/32BF: EA NOP C3/32C0: EA NOP C3/32C1: EA NOP C3/32C2: EA NOP C3/32C3: EA NOP C3/32C4: EA NOP C3/32C5: EA NOP C3/32C6: EA NOP C3/32C7: EA NOP C3/32C8: AC 14 42 LDY $4214 C3/32CB: 84 E7 STY $E7 C3/32CD: 60 RTS ; [ Check Max GP ] C3/32CE: A9 7F LDA #$7F ; 9999999 max C3/32D0: CD 60 18 CMP $1860 C3/32D3: A9 96 LDA #$96 C3/32D5: ED 61 18 SBC $1861 C3/32D8: A9 98 LDA #$98 C3/32DA: ED 62 18 SBC $1862 C3/32DD: B0 0B BCS $32EA C3/32DF: A0 7F 96 LDY #$967F C3/32E2: 8C 60 18 STY $1860 C3/32E5: A9 98 LDA #$98 C3/32E7: 8D 62 18 STA $1862 C3/32EA: 60 RTS C3/32EB: 20 22 0A JSR $0A22 ; create portrait thread (slot 1) C3/32EE: 4C 1B 34 JMP $341B ; hide portrait ; [ Draw HP/MP/LV Number Text (slot 1) ] C3/32F1: A5 69 LDA $69 C3/32F3: 30 F6 BMI $32EB C3/32F5: A6 6D LDX $6D C3/32F7: 86 67 STX $67 C3/32F9: A9 24 LDA #$24 ; teal text C3/32FB: 85 29 STA $29 C3/32FD: A2 41 37 LDX #$3741 C3/3300: A0 06 00 LDY #$0006 C3/3303: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/3306: A0 27 39 LDY #$3927 C3/3309: A2 78 15 LDX #$1578 C3/330C: 64 48 STZ $48 C3/330E: 20 27 34 JSR $3427 C3/3311: A2 31 37 LDX #$3731 C3/3314: 86 F1 STX $F1 C3/3316: A0 04 00 LDY #$0004 C3/3319: 84 EF STY $EF C3/331B: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/331E: A0 19 39 LDY #$3919 C3/3321: 20 CF 34 JSR $34CF ; draw character name C3/3324: A2 2D 33 LDX #$332D C3/3327: 20 6C 0C JSR $0C6C ; draw hp/mp/lv number text C3/332A: 4C 22 0A JMP $0A22 ; create portrait thread (slot 1) ; ram addresses for LV/HP/MP text (slot 1) ; C3/332D: bg1_0(15, 5) LV ; bg1_0(13, 6) current HP ; bg1_0(18, 6) max HP ; bg1_0(13, 7) current MP ; bg1_0(18, 7) max MP C3/332D: .DW $39A7, $39E3, $39ED, $3A23, $3A2D C3/3337: 20 4B 0A JSR $0A4B ; create portrait thread (slot 2) C3/333A: 4C 1B 34 JMP $341B ; hide portrait ; [ Draw HP/MP/LV Number Text (slot 2) ] C3/333D: A5 6A LDA $6A C3/333F: 30 F6 BMI $3337 C3/3341: A6 6F LDX $6F C3/3343: 86 67 STX $67 C3/3345: A9 24 LDA #$24 C3/3347: 85 29 STA $29 C3/3349: A2 47 37 LDX #$3747 C3/334C: A0 06 00 LDY #$0006 C3/334F: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/3352: A0 A7 3A LDY #$3AA7 C3/3355: A2 78 45 LDX #$4578 C3/3358: 64 48 STZ $48 C3/335A: 20 27 34 JSR $3427 C3/335D: A2 35 37 LDX #$3735 C3/3360: 86 F1 STX $F1 C3/3362: A0 04 00 LDY #$0004 C3/3365: 84 EF STY $EF C3/3367: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/336A: A0 99 3A LDY #$3A99 C3/336D: 20 CF 34 JSR $34CF ; draw character name C3/3370: A2 79 33 LDX #$3379 C3/3373: 20 6C 0C JSR $0C6C ; draw hp/mp/lv number text C3/3376: 4C 4B 0A JMP $0A4B ; create portrait thread (slot 2) ; ram addresses for LV/HP/MP text (slot 2) C3/3379: .DW $3B27, $3B63, $3B6D, $3BA3, $3BAD C3/3383: 20 76 0A JSR $0A76 ; create portrait thread (slot 3) C3/3386: 4C 1B 34 JMP $341B ; hide portrait ; [ Draw HP/MP/LV Number Text (slot 3) ] C3/3389: A5 6B LDA $6B C3/338B: 30 F6 BMI $3383 C3/338D: A6 71 LDX $71 C3/338F: 86 67 STX $67 C3/3391: A9 24 LDA #$24 C3/3393: 85 29 STA $29 C3/3395: A2 4D 37 LDX #$374D C3/3398: A0 06 00 LDY #$0006 C3/339B: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/339E: A0 27 3C LDY #$3C27 C3/33A1: A2 78 75 LDX #$7578 C3/33A4: 64 48 STZ $48 C3/33A6: 20 27 34 JSR $3427 C3/33A9: A2 39 37 LDX #$3739 C3/33AC: 86 F1 STX $F1 C3/33AE: A0 04 00 LDY #$0004 C3/33B1: 84 EF STY $EF C3/33B3: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/33B6: A0 19 3C LDY #$3C19 C3/33B9: 20 CF 34 JSR $34CF ; draw character name C3/33BC: A2 C5 33 LDX #$33C5 C3/33BF: 20 6C 0C JSR $0C6C ; draw hp/mp/lv number text C3/33C2: 4C 76 0A JMP $0A76 ; create portrait thread (slot 3) ; ram addresses for LV/HP/MP text (slot 3) C3/33C5: .DW $3CA7, $3CE3, $3CED, $3D23, $3D2D C3/33CF: 20 A1 0A JSR $0AA1 ; create portrait thread (slot 4) C3/33D2: 4C 1B 34 JMP $341B ; hide portrait ; [ Draw HP/MP/LV Number Text (slot 4) ] C3/33D5: A5 6C LDA $6C C3/33D7: 30 F6 BMI $33CF ; branch if slot is empty C3/33D9: A6 73 LDX $73 C3/33DB: 86 67 STX $67 C3/33DD: A9 24 LDA #$24 C3/33DF: 85 29 STA $29 C3/33E1: A2 53 37 LDX #$3753 C3/33E4: A0 06 00 LDY #$0006 C3/33E7: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/33EA: A0 A7 3D LDY #$3DA7 C3/33ED: A2 78 A5 LDX #$A578 C3/33F0: 64 48 STZ $48 C3/33F2: 20 27 34 JSR $3427 C3/33F5: A2 3D 37 LDX #$373D C3/33F8: 86 F1 STX $F1 C3/33FA: A0 04 00 LDY #$0004 C3/33FD: 84 EF STY $EF C3/33FF: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/3402: A0 99 3D LDY #$3D99 C3/3405: 20 CF 34 JSR $34CF ; draw character name C3/3408: A2 11 34 LDX #$3411 C3/340B: 20 6C 0C JSR $0C6C ; draw hp/mp/lv number text C3/340E: 4C A1 0A JMP $0AA1 ; create portrait thread (slot 4) ; ram addresses for LV/HP/MP text (character slot 4) C3/3411: .DW $3E27, $3E63, $3E6D, $3EA3, $3EAD ; [ Hide Portrait ] C3/341B: C2 20 REP #$20 C3/341D: A9 D8 00 LDA #$00D8 ; set y position to 216 (off-screen) C3/3420: 9F 4A 34 7E STA $7E344A,X C3/3424: E2 20 SEP #$20 C3/3426: 60 RTS ; [ Draw Status Icons ] ; also sets text color for hp/mp/level C3/3427: 86 E7 STX $E7 C3/3429: 20 19 35 JSR $3519 ; init positioned text buffer C3/342C: B9 14 00 LDA $0014,Y ; status 1 C3/342F: 30 7F BMI $34B0 ; branch if character has wound status C3/3431: 29 70 AND #$70 ; isolate clear, imp, and petrify status C3/3433: 85 E1 STA $E1 C3/3435: B9 14 00 LDA $0014,Y C3/3438: 29 07 AND #$07 ; isolate dark, zombie, and poison status C3/343A: 0A ASL C3/343B: 85 E2 STA $E2 C3/343D: B9 15 00 LDA $0015,Y ; status 4 C3/3440: 29 80 AND #$80 ; isolate float status C3/3442: 05 E1 ORA $E1 C3/3444: 05 E2 ORA $E2 C3/3446: 85 E1 STA $E1 ; feicpzd- C3/3448: F0 5F BEQ $34A9 ; branch if character has no status icons C3/344A: 64 F1 STZ $F1 ; clear icon index C3/344C: 64 F2 STZ $F2 C3/344E: A2 07 00 LDX #$0007 ; loop through each status C3/3451: DA PHX C3/3452: 0A ASL C3/3453: 90 47 BCC $349C ; continue if character doesn't have this status C3/3455: 48 PHA C3/3456: A9 03 LDA #$03 C3/3458: A0 42 7B LDY #$7B42 ; status icon thread C3/345B: 20 73 11 JSR $1173 ; create thread C3/345E: A9 01 LDA #$01 C3/3460: 9F 4A 36 7E STA $7E364A,X ; thread doesn't scroll with bg C3/3464: A5 48 LDA $48 C3/3466: 9F 49 36 7E STA $7E3649,X ; thread state C3/346A: 9B TXY C3/346B: A6 F1 LDX $F1 ; icon index C3/346D: 8B PHB C3/346E: A9 7E LDA #$7E C3/3470: 48 PHA C3/3471: AB PLB C3/3472: C2 20 REP #$20 C3/3474: BF 25 EC D8 LDA $D8EC25,X ; pointers to status icon sprite data C3/3478: 99 C9 32 STA $32C9,Y C3/347B: E2 20 SEP #$20 C3/347D: A5 E7 LDA $E7 C3/347F: 99 CA 33 STA $33CA,Y ; x position C3/3482: A5 E8 LDA $E8 C3/3484: 99 4A 34 STA $344A,Y ; y position C3/3487: 7B TDC C3/3488: 99 CB 33 STA $33CB,Y ; clear high bytes C3/348B: 99 4B 34 STA $344B,Y C3/348E: A9 D8 LDA #$D8 C3/3490: 99 CA 35 STA $35CA,Y ; animation data in bank $D8 C3/3493: AB PLB C3/3494: 18 CLC C3/3495: A9 0A LDA #$0A C3/3497: 65 E7 ADC $E7 ; increment positioned text pointer ??? C3/3499: 85 E7 STA $E7 C3/349B: 68 PLA C3/349C: E6 F1 INC $F1 ; increment icon index C3/349E: E6 F1 INC $F1 C3/34A0: FA PLX C3/34A1: CA DEX ; next status C3/34A2: D0 AD BNE $3451 C3/34A4: A9 20 LDA #$20 ; white text C3/34A6: 85 29 STA $29 C3/34A8: 60 RTS ; character has no status icons C3/34A9: A9 20 LDA #$20 C3/34AB: 85 29 STA $29 ; white text C3/34AD: 4C E5 34 JMP $34E5 ; draw character title (dummy) ; character has wound status C3/34B0: A2 8B 9E LDX #$9E8B C3/34B3: 8E 81 21 STX $2181 C3/34B6: A6 00 LDX $00 C3/34B8: BF 1B 37 C3 LDA $C3371B,X ; text: "Wounded" C3/34BC: 8D 80 21 STA $2180 C3/34BF: E8 INX C3/34C0: E0 08 00 CPX #$0008 C3/34C3: D0 F3 BNE $34B8 C3/34C5: 9C 80 21 STZ $2180 C3/34C8: A9 28 LDA #$28 ; gray text C3/34CA: 85 29 STA $29 C3/34CC: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) ; [ Draw Character Name ] C3/34CF: 20 19 35 JSR $3519 ; init positioned text buffer C3/34D2: A2 06 00 LDX #$0006 C3/34D5: B9 02 00 LDA $0002,Y ; character name C3/34D8: 8D 80 21 STA $2180 C3/34DB: C8 INY C3/34DC: CA DEX C3/34DD: D0 F6 BNE $34D5 C3/34DF: 9C 80 21 STZ $2180 C3/34E2: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) ; [ Draw Character Title (dummy) ] C3/34E5: 60 RTS ; [ Draw Equipped Esper Name ] C3/34E6: 20 19 35 JSR $3519 ; init positioned text buffer C3/34E9: B9 1E 00 LDA $001E,Y ; equipped esper C3/34EC: C9 FF CMP #$FF C3/34EE: F0 18 BEQ $3508 ; branch if no esper is equipped C3/34F0: 0A ASL C3/34F1: 0A ASL C3/34F2: 0A ASL C3/34F3: AA TAX C3/34F4: A0 08 00 LDY #$0008 C3/34F7: BF E1 F6 E6 LDA $E6F6E1,X ; esper names C3/34FB: 8D 80 21 STA $2180 C3/34FE: E8 INX C3/34FF: 88 DEY C3/3500: D0 F5 BNE $34F7 C3/3502: 9C 80 21 STZ $2180 C3/3505: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/3508: A0 08 00 LDY #$0008 C3/350B: A9 FF LDA #$FF C3/350D: 8D 80 21 STA $2180 ; clear equipped esper name C3/3510: 88 DEY C3/3511: D0 FA BNE $350D C3/3513: 9C 80 21 STZ $2180 C3/3516: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) ; [ Init Positioned Text Buffer ] ; +Y: text position C3/3519: A2 89 9E LDX #$9E89 ; set pointer to text buffer C3/351C: 8E 81 21 STX $2181 C3/351F: C2 20 REP #$20 C3/3521: 98 TYA C3/3522: E2 20 SEP #$20 C3/3524: 8D 80 21 STA $2180 C3/3527: EB XBA C3/3528: 8D 80 21 STA $2180 C3/352B: 7B TDC C3/352C: A4 67 LDY $67 C3/352E: 60 RTS ; [ Disable Interrupts ] C3/352F: A9 80 LDA #$80 ; screen off C3/3531: 8D 00 21 STA $2100 C3/3534: 20 14 11 JSR $1114 ; init threads C3/3537: 9C 00 42 STZ $4200 ; disable interrupts C3/353A: 9C 0B 42 STZ $420B ; disable DMA & HDMA C3/353D: 9C 0C 42 STZ $420C C3/3540: 60 RTS ; [ Enable Interrupts ] C3/3541: A9 01 LDA #$01 ; screen register (screen on, brightness 1) C3/3543: 85 44 STA $44 C3/3545: 4C 68 13 JMP $1368 ; wait for vblank ; [ Draw Time Text ] C3/3548: 20 39 0F JSR $0F39 ; init DMA 1 (bg3 data, left screen) C3/354B: 4C 6C 32 JMP $326C ; draw game time or timer ; [ Init Main Screen Designation HDMA (main menu) ] C3/354E: A6 00 LDX $00 C3/3550: A9 17 LDA #$17 ; main screen designation (-> $212C) C3/3552: 9F 09 9A 7E STA $7E9A09,X C3/3556: E8 INX C3/3557: E0 DF 00 CPX #$00DF C3/355A: D0 F6 BNE $3552 C3/355C: A9 40 LDA #$40 ; HDMA channel #3 - indirect addressing C3/355E: 8D 60 43 STA $4360 C3/3561: A9 2C LDA #$2C C3/3563: 8D 61 43 STA $4361 C3/3566: A0 7B 35 LDY #$357B C3/3569: 8C 62 43 STY $4362 C3/356C: A9 C3 LDA #$C3 C3/356E: 8D 64 43 STA $4364 C3/3571: A9 7E LDA #$7E C3/3573: 8D 67 43 STA $4367 C3/3576: A9 40 LDA #$40 C3/3578: 04 43 TSB $43 C3/357A: 60 RTS ; main screen designation HDMA table (main menu) C3/357B: .DB $F0 \ .DW $9A09 C3/357E: .DB $F0 \ .DW $9A79 C3/3581: .DB $00 ; [ Init Character Swap Threads ] C3/3582: A5 28 LDA $28 C3/3584: C5 4B CMP $4B C3/3586: 90 15 BCC $359D C3/3588: A9 03 LDA #$03 C3/358A: A0 D4 35 LDY #$35D4 C3/358D: 20 73 11 JSR $1173 ; create thread C3/3590: 20 C1 35 JSR $35C1 C3/3593: A9 03 LDA #$03 C3/3595: A0 1F 36 LDY #$361F C3/3598: 20 73 11 JSR $1173 ; create thread C3/359B: 80 15 BRA $35B2 C3/359D: A9 03 LDA #$03 C3/359F: A0 D4 35 LDY #$35D4 C3/35A2: 20 73 11 JSR $1173 ; create thread C3/35A5: 20 B2 35 JSR $35B2 C3/35A8: A9 03 LDA #$03 C3/35AA: A0 1F 36 LDY #$361F C3/35AD: 20 73 11 JSR $1173 ; create thread C3/35B0: 80 0F BRA $35C1 C3/35B2: 9B TXY C3/35B3: 7B TDC C3/35B4: A5 28 LDA $28 C3/35B6: AA TAX C3/35B7: BF D0 35 C3 LDA $C335D0,X C3/35BB: BB TYX C3/35BC: 9F CA 33 7E STA $7E33CA,X C3/35C0: 60 RTS C3/35C1: 9B TXY C3/35C2: 7B TDC C3/35C3: A5 4B LDA $4B C3/35C5: AA TAX C3/35C6: BF D0 35 C3 LDA $C335D0,X C3/35CA: BB TYX C3/35CB: 9F CA 33 7E STA $7E33CA,X ; x position C3/35CF: 60 RTS C3/35D0: .DB $0D, $3D, $6D, $9D ; [ Character Swap Thread (top character) ] C3/35D4: AA TAX C3/35D5: 7C D8 35 JMP ($35D8,X) C3/35D8: .DW $35DE, $35E3, $3602 ; state 0: init C3/35DE: A6 2D LDX $2D C3/35E0: FE 49 36 INC $3649,X ; state 1: hide character in old slot C3/35E3: A4 2D LDY $2D C3/35E5: A5 22 LDA $22 C3/35E7: C9 0C CMP #$0C C3/35E9: F0 0F BEQ $35FA C3/35EB: 7B TDC C3/35EC: B9 CA 33 LDA $33CA,Y ; x position C3/35EF: AA TAX C3/35F0: A9 06 LDA #$06 C3/35F2: 20 77 36 JSR $3677 C3/35F5: 99 CA 33 STA $33CA,Y C3/35F8: 38 SEC C3/35F9: 60 RTS C3/35FA: A6 2D LDX $2D C3/35FC: FE 49 36 INC $3649,X C3/35FF: DE CA 33 DEC $33CA,X ; state 2: show character in new slot C3/3602: A5 45 LDA $45 C3/3604: 89 08 BIT #$08 C3/3606: F0 13 BEQ $361B C3/3608: A4 2D LDY $2D C3/360A: A5 22 LDA $22 C3/360C: F0 0F BEQ $361D C3/360E: 7B TDC C3/360F: B9 CA 33 LDA $33CA,Y ; x position C3/3612: AA TAX C3/3613: A9 17 LDA #$17 C3/3615: 20 8D 36 JSR $368D C3/3618: 99 CA 33 STA $33CA,Y C3/361B: 38 SEC C3/361C: 60 RTS C3/361D: 18 CLC C3/361E: 60 RTS ; [ Character Swap Thread (bottom character) ] C3/361F: AA TAX C3/3620: 7C 23 36 JMP ($3623,X) C3/3623: .DW $3629, $3637, $3658 C3/3629: A6 2D LDX $2D C3/362B: FE 49 36 INC $3649,X C3/362E: BD CA 33 LDA $33CA,X C3/3631: 18 CLC C3/3632: 69 2F ADC #$2F C3/3634: 9D CA 33 STA $33CA,X C3/3637: A4 2D LDY $2D C3/3639: A5 22 LDA $22 C3/363B: C9 0C CMP #$0C C3/363D: F0 11 BEQ $3650 C3/363F: 7B TDC C3/3640: B9 CA 33 LDA $33CA,Y C3/3643: AA TAX C3/3644: A9 06 LDA #$06 C3/3646: 20 8D 36 JSR $368D C3/3649: 99 CA 33 STA $33CA,Y C3/364C: C6 22 DEC $22 C3/364E: 38 SEC C3/364F: 60 RTS C3/3650: A6 2D LDX $2D C3/3652: FE 49 36 INC $3649,X C3/3655: FE CA 33 INC $33CA,X C3/3658: A5 45 LDA $45 C3/365A: 89 08 BIT #$08 C3/365C: F0 15 BEQ $3673 C3/365E: A4 2D LDY $2D C3/3660: A5 22 LDA $22 C3/3662: F0 11 BEQ $3675 C3/3664: 7B TDC C3/3665: B9 CA 33 LDA $33CA,Y C3/3668: AA TAX C3/3669: A9 17 LDA #$17 C3/366B: 20 77 36 JSR $3677 C3/366E: 99 CA 33 STA $33CA,Y C3/3671: C6 22 DEC $22 C3/3673: 38 SEC C3/3674: 60 RTS C3/3675: 18 CLC C3/3676: 60 RTS ; [ Update BG1 HScroll DMA Table (character swap, hiding) ] C3/3677: 9F 09 9A 7E STA $7E9A09,X C3/367B: E8 INX C3/367C: 9F 09 9A 7E STA $7E9A09,X C3/3680: E8 INX C3/3681: 9F 09 9A 7E STA $7E9A09,X C3/3685: E8 INX C3/3686: 9F 09 9A 7E STA $7E9A09,X C3/368A: E8 INX C3/368B: 8A TXA C3/368C: 60 RTS ; [ Update BG1 HScroll DMA Table (character swap, showing) ] C3/368D: 9F 09 9A 7E STA $7E9A09,X C3/3691: CA DEX C3/3692: 9F 09 9A 7E STA $7E9A09,X C3/3696: CA DEX C3/3697: 9F 09 9A 7E STA $7E9A09,X C3/369B: CA DEX C3/369C: 9F 09 9A 7E STA $7E9A09,X C3/36A0: CA DEX C3/36A1: 8A TXA C3/36A2: 60 RTS ; [ Init BG3 VScroll HDMA (main menu) ] C3/36A3: A9 02 LDA #$02 C3/36A5: 8D 50 43 STA $4350 C3/36A8: A9 12 LDA #$12 C3/36AA: 8D 51 43 STA $4351 C3/36AD: A0 C2 36 LDY #$36C2 C3/36B0: 8C 52 43 STY $4352 C3/36B3: A9 C3 LDA #$C3 C3/36B5: 8D 54 43 STA $4354 C3/36B8: A9 C3 LDA #$C3 C3/36BA: 8D 57 43 STA $4357 C3/36BD: A9 20 LDA #$20 C3/36BF: 04 43 TSB $43 C3/36C1: 60 RTS ; bg3 vertical scroll HDMA table (main menu) C3/36C2: .DB $0F \ .DW $0000 .DB $0F \ .DW $0003 .DB $0F \ .DW $0004 .DB $0F \ .DW $0005 .DB $0F \ .DW $0006 .DB $0F \ .DW $0007 .DB $0F \ .DW $0008 .DB $0F \ .DW $0009 .DB $07 \ .DW $0008 .DB $08 \ .DW $0000 .DB $08 \ .DW $0000 .DB $18 \ .DW $0000 .DB $00 ; [ Menu State $65: Scroll Menu Horizontal ] C3/36E7: A5 20 LDA $20 ; branch if wait counter is not clear C3/36E9: D0 04 BNE $36EF C3/36EB: A5 27 LDA $27 ; go to next menu state C3/36ED: 85 26 STA $26 C3/36EF: C2 20 REP #$20 C3/36F1: A5 35 LDA $35 ; bg1 horizontal scroll position C3/36F3: 18 CLC C3/36F4: 65 9C ADC $9C ; add scroll speed C3/36F6: 85 35 STA $35 ; set bg1, bg2, bg3 scroll positions C3/36F8: 85 39 STA $39 C3/36FA: 85 3D STA $3D C3/36FC: E2 20 SEP #$20 C3/36FE: 60 RTS C3/36FF: A0 0E 37 LDY #$370E C3/3702: 4C FE 05 JMP $05FE ; init cursor C3/3705: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/3708: A0 13 37 LDY #$3713 C3/370B: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/370E: .DB $80, $00, $00, $01, $04 C3/3713: .DW $5990, $6590, $7190, $7D90 ; "Wounded" C3/371B: .DB $96, $A8, $AE, $A7, $9D, $9E, $9D, $FF ; "Time", "Steps", "Order" C3/3723: .DW $3804, $380F, $3850 ; "Item", "Skills", "Relic", "Status" C3/3729: .DW $37CB, $37D2, $37E3, $37EB ; "/", "" C3/3731: .DW $377E, $3782, $3795, $3799 C3/3739: .DW $37AC, $37B0, $37C3, $37C7, $376F, $3774, $3779, $3786 C3/3749: .DW $378B, $3790, $379D, $37A2, $37A7, $37B4, $37B9, $37BE ; "Equip", "Config" C3/3759: .DW $37DB, $37F4 ; "Yes", "No", "This", "Data?" C3/375D: .DW $381C, $3822, $3827, $382E ; "Yes", "No", "Erasing", "data.", "Okay?" C3/3765: .DW $381C, $3822, $3836, $3840, $3848 ; C3/376F: "LV" ; C3/3774: "HP" ; C3/3779: "MP" ; C3/377E: "/" ; C3/3782: "/" ; C3/3786: "LV" ; C3/378B: "HP" ; C3/3790: "MP" ; C3/3795: "/" ; C3/3799: "/" ; C3/379D: "LV" ; C3/37A2: "HP" ; C3/37A7: "MP" ; C3/37AC: "/" ; C3/37B0: "/" ; C3/37B4: "LV" ; C3/37B9: "HP" ; C3/37BE: "MP" ; C3/37C3: "/" ; C3/37C7: "/" ; C3/37CB: "Item" ; C3/37D2: "Skills" ; C3/37DB: "Equip" ; C3/37E3: "Relic" ; C3/37EB: "Status" ; C3/37F4: "Config" ; C3/37FD: "Save" ; C3/3804: "Time" ; C3/380B: ":" ; C3/380F: "Steps" ; C3/3817: "Gp" ; C3/381C: "Yes" ; C3/3822: "No" ; C3/3827: "This" ; C3/382E: "data?" ; C3/3836: "Erasing" ; C3/3840: "data." ; C3/3848: "Okay?" ; C3/3850: "Order" C3/376F: .DB $9D, $39, $8B, $95, $00 C3/3774: .DB $DD, $39, $87, $8F, $00 C3/3779: .DB $1D, $3A, $8C, $8F, $00 C3/377E: .DB $EB, $39, $C0, $00 C3/3782: .DB $2B, $3A, $C0, $00 C3/3786: .DB $1D, $3B, $8B, $95, $00 C3/378B: .DB $5D, $3B, $87, $8F, $00 C3/3790: .DB $9D, $3B, $8C, $8F, $00 C3/3795: .DB $6B, $3B, $C0, $00 C3/3799: .DB $AB, $3B, $C0, $00 C3/379D: .DB $9D, $3C, $8B, $95, $00 C3/37A2: .DB $DD, $3C, $87, $8F, $00 C3/37A7: .DB $1D, $3D, $8C, $8F, $00 C3/37AC: .DB $EB, $3C, $C0, $00 C3/37B0: .DB $2B, $3D, $C0, $00 C3/37B4: .DB $1D, $3E, $8B, $95, $00 C3/37B9: .DB $5D, $3E, $87, $8F, $00 C3/37BE: .DB $9D, $3E, $8C, $8F, $00 C3/37C3: .DB $6B, $3E, $C0, $00 C3/37C7: .DB $AB, $3E, $C0, $00 C3/37CB: .DB $39, $79, $88, $AD, $9E, $A6, $00 C3/37D2: .DB $B9, $79, $92, $A4, $A2, $A5, $A5, $AC, $00 C3/37DB: .DB $39, $7A, $84, $AA, $AE, $A2, $A9, $00 C3/37E3: .DB $B9, $7A, $91, $9E, $A5, $A2, $9C, $00 C3/37EB: .DB $39, $7B, $92, $AD, $9A, $AD, $AE, $AC, $00 C3/37F4: .DB $B9, $7B, $82, $A8, $A7, $9F, $A2, $A0, $00 C3/37FD: .DB $39, $7C, $92, $9A, $AF, $9E, $00 C3/3804: .DB $BB, $7C, $93, $A2, $A6, $9E, $00 C3/380B: .DB $FF, $7C, $C1, $00 C3/380F: .DB $B7, $7D, $92, $AD, $9E, $A9, $AC, $00 C3/3817: .DB $77, $7E, $86, $A9, $00 C3/381C: .DB $BD, $7A, $98, $9E, $AC, $00 C3/3822: .DB $3D, $7B, $8D, $A8, $00 C3/3827: .DB $37, $79, $93, $A1, $A2, $AC, $00 C3/382E: .DB $B7, $79, $9D, $9A, $AD, $9A, $BF, $00 C3/3836: .DB $37, $79, $84, $AB, $9A, $AC, $A2, $A7, $A0, $00 C3/3840: .DB $B7, $79, $9D, $9A, $AD, $9A, $C5, $00 C3/3848: .DB $37, $7A, $8E, $A4, $9A, $B2, $BF, $00 C3/3850: .DB $3D, $81, $8E, $AB, $9D, $9E, $AB, $00 ; -------------------------------------------[ Menu: Config ]------------------------------------------- ; [ Init Cursor (config page 1) ] C3/3858: A0 67 38 LDY #$3867 C3/385B: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (config page 1) ] C3/385E: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/3861: A0 6C 38 LDY #$386C C3/3864: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/3867: .DB $81, $00, $00, $01, $09 C3/386C: .DW $2960, $3960, $4960, $5960, $6960, $7960, $8960, $9960, $A960 ; [ Init Cursor (config page 2) ] C3/387E: A0 8D 38 LDY #$388D C3/3881: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (config page 2) ] C3/3884: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/3887: A0 92 38 LDY #$3892 C3/388A: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/388D: .DB $81, $00, $00, $01, $06 C3/3892: .DW $2960, $6960, $7960, $9960, $A960, $B960 ; [ Init Config BG ] C3/389E: A9 02 LDA #$02 C3/38A0: 8D 07 21 STA $2107 C3/38A3: A0 FB FF LDY #$FFFB C3/38A6: 84 3F STY $3F C3/38A8: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/38AB: A0 E2 39 LDY #$39E2 C3/38AE: 20 41 03 JSR $0341 ; draw window C3/38B1: A0 E6 39 LDY #$39E6 C3/38B4: 20 41 03 JSR $0341 ; draw window C3/38B7: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/38BA: 20 5E 39 JSR $395E C3/38BD: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/38C0: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/38C3: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/38C6: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/38C9: A9 2C LDA #$2C C3/38CB: 85 29 STA $29 C3/38CD: A0 A1 49 LDY #$49A1 C3/38D0: 20 F9 02 JSR $02F9 ; draw positioned text C3/38D3: A9 24 LDA #$24 C3/38D5: 85 29 STA $29 C3/38D7: A2 93 49 LDX #$4993 C3/38DA: A0 0E 00 LDY #$000E C3/38DD: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/38E0: A9 24 LDA #$24 C3/38E2: 85 29 STA $29 C3/38E4: A2 03 49 LDX #$4903 C3/38E7: A0 04 00 LDY #$0004 C3/38EA: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/38ED: A9 20 LDA #$20 C3/38EF: 85 29 STA $29 C3/38F1: A2 07 49 LDX #$4907 C3/38F4: A0 04 00 LDY #$0004 C3/38F7: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/38FA: 20 8C 3B JSR $3B8C C3/38FD: 20 B7 3B JSR $3BB7 C3/3900: 20 F2 3B JSR $3BF2 C3/3903: 20 33 3C JSR $3C33 C3/3906: 20 5C 3C JSR $3C5C C3/3909: 20 85 3C JSR $3C85 C3/390C: 20 B0 3C JSR $3CB0 C3/390F: 20 DB 3C JSR $3CDB C3/3912: 20 06 3D JSR $3D06 C3/3915: A9 24 LDA #$24 C3/3917: 85 29 STA $29 C3/3919: A2 1C 4A LDX #$4A1C C3/391C: A0 06 00 LDY #$0006 C3/391F: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/3922: 20 50 39 JSR $3950 C3/3925: A9 20 LDA #$20 C3/3927: 85 29 STA $29 C3/3929: A2 28 4A LDX #$4A28 C3/392C: A0 0C 00 LDY #$000C C3/392F: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/3932: 20 FD 3F JSR $3FFD C3/3935: 20 EA 40 JSR $40EA C3/3938: 20 33 41 JSR $4133 C3/393B: 20 C3 41 JSR $41C3 C3/393E: 20 F5 39 JSR $39F5 C3/3941: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/3944: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/3947: A9 01 LDA #$01 C3/3949: A0 80 39 LDY #$3980 ; page indicator thread C3/394C: 20 73 11 JSR $1173 ; create thread C3/394F: 60 RTS ; [ Draw Color Selector Bars and RGB Text ] C3/3950: A9 30 LDA #$30 ; use palette 8 C3/3952: 85 29 STA $29 C3/3954: A2 22 4A LDX #$4A22 C3/3957: A0 06 00 LDY #$0006 C3/395A: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/395D: 60 RTS C3/395E: A6 00 LDX $00 C3/3960: A9 40 LDA #$40 C3/3962: 8D 21 21 STA $2121 C3/3965: C2 20 REP #$20 C3/3967: BF 80 E8 D8 LDA $D8E880,X C3/396B: 9F C9 30 7E STA $7E30C9,X C3/396F: E2 20 SEP #$20 C3/3971: 8D 22 21 STA $2122 C3/3974: EB XBA C3/3975: 8D 22 21 STA $2122 C3/3978: E8 INX C3/3979: E8 INX C3/397A: E0 20 00 CPX #$0020 C3/397D: D0 E6 BNE $3965 C3/397F: 60 RTS ; [ Page Indicator Thread (config) ] C3/3980: AA TAX C3/3981: 7C 84 39 JMP ($3984,X) C3/3984: .DW $3988, $39AB ; state 0: init C3/3988: A6 2D LDX $2D C3/398A: C2 20 REP #$20 C3/398C: A9 CB 39 LDA #$39CB C3/398F: 9D C9 32 STA $32C9,X C3/3992: A9 78 00 LDA #$0078 C3/3995: 9D CA 33 STA $33CA,X C3/3998: A9 18 00 LDA #$0018 C3/399B: 9D 4A 34 STA $344A,X C3/399E: E2 20 SEP #$20 C3/39A0: A9 C3 LDA #$C3 C3/39A2: 9D CA 35 STA $35CA,X C3/39A5: FE 49 36 INC $3649,X C3/39A8: 20 06 12 JSR $1206 ; init animation thread ; state 1: update C3/39AB: A4 2D LDY $2D C3/39AD: A5 4A LDA $4A ; page number C3/39AF: F0 04 BEQ $39B5 C3/39B1: A9 02 LDA #$02 ; page 2 C3/39B3: 80 01 BRA $39B6 C3/39B5: 7B TDC ; page 1 C3/39B6: AA TAX C3/39B7: C2 20 REP #$20 C3/39B9: BF C7 39 C3 LDA $C339C7,X C3/39BD: 99 C9 32 STA $32C9,Y ; set pointer to animation data C3/39C0: E2 20 SEP #$20 C3/39C2: 20 21 12 JSR $1221 ; update animation thread C3/39C5: 38 SEC C3/39C6: 60 RTS ; pointers to page indicator animation data C3/39C7: .DW $39CB, $39D4 ; page indicator animation data (pointing down) C3/39CB: .DW $B45B \ .DB $10 .DW $39DD \ .DB $10 .DW $B45B \ .DB $FF ; page indicator animation data (pointing up) C3/39D4: .DW $B45B \ .DB $10 .DW $B461 \ .DB $10 .DW $B45B \ .DB $FF ; page indicator sprite data (pointing down) C3/39DD: .DB $01 .DB $80, $B0 \ .DW $3E03 ; config window data C3/39E2: .DW $590B \ .DB $1C, $16 C3/39E6: .DW $58B7 \ .DB $06, $02 C3/39EA: A0 FB 00 LDY #$00FB C3/39ED: 84 37 STY $37 C3/39EF: 20 7E 38 JSR $387E C3/39F2: 4C 87 38 JMP $3887 C3/39F5: A0 FB FF LDY #$FFFB C3/39F8: 84 37 STY $37 C3/39FA: 20 58 38 JSR $3858 C3/39FD: 4C 61 38 JMP $3861 ; [ Menu State $50: ] C3/3A00: A5 20 LDA $20 C3/3A02: F0 11 BEQ $3A15 C3/3A04: A5 4A LDA $4A C3/3A06: D0 14 BNE $3A1C C3/3A08: C2 20 REP #$20 C3/3A0A: A5 37 LDA $37 C3/3A0C: 18 CLC C3/3A0D: 69 10 00 ADC #$0010 C3/3A10: 85 37 STA $37 C3/3A12: E2 20 SEP #$20 C3/3A14: 60 RTS C3/3A15: A9 01 LDA #$01 C3/3A17: 85 4A STA $4A C3/3A19: 20 EA 39 JSR $39EA C3/3A1C: A9 0E LDA #$0E C3/3A1E: 85 26 STA $26 C3/3A20: 60 RTS ; [ Menu State $51: ] C3/3A21: A5 20 LDA $20 C3/3A23: F0 11 BEQ $3A36 C3/3A25: A5 4A LDA $4A C3/3A27: F0 1E BEQ $3A47 C3/3A29: C2 20 REP #$20 C3/3A2B: A5 37 LDA $37 C3/3A2D: 38 SEC C3/3A2E: E9 10 00 SBC #$0010 C3/3A31: 85 37 STA $37 C3/3A33: E2 20 SEP #$20 C3/3A35: 60 RTS C3/3A36: 64 4A STZ $4A C3/3A38: A0 FB FF LDY #$FFFB C3/3A3B: 84 37 STY $37 C3/3A3D: 20 58 38 JSR $3858 C3/3A40: A9 08 LDA #$08 C3/3A42: 85 4E STA $4E C3/3A44: 20 61 38 JSR $3861 C3/3A47: A9 0E LDA #$0E C3/3A49: 85 26 STA $26 C3/3A4B: 60 RTS ; [ Init Window 2 Position HDMA ] C3/3A4C: A9 01 LDA #$01 C3/3A4E: 8D 50 43 STA $4350 C3/3A51: A9 28 LDA #$28 C3/3A53: 8D 51 43 STA $4351 C3/3A56: A0 7A 3A LDY #$3A7A C3/3A59: 8C 52 43 STY $4352 C3/3A5C: A9 C3 LDA #$C3 C3/3A5E: 8D 54 43 STA $4354 C3/3A61: A9 C3 LDA #$C3 C3/3A63: 8D 57 43 STA $4357 C3/3A66: A9 20 LDA #$20 C3/3A68: 04 43 TSB $43 C3/3A6A: 60 RTS ; [ Disable Window 2 Position HDMA ] C3/3A6B: A9 20 LDA #$20 ; disable HDMA channel #5 C3/3A6D: 14 43 TRB $43 C3/3A6F: A9 08 LDA #$08 C3/3A71: 8D 28 21 STA $2128 C3/3A74: A9 F7 LDA #$F7 C3/3A76: 8D 29 21 STA $2129 C3/3A79: 60 RTS C3/3A7A: .DB $27, $FF, $FF C3/3A7D: .DB $50, $08, $F7 C3/3A80: .DB $50, $08, $F7 C3/3A83: .DB $10, $FF, $FF C3/3A86: .DB $00 ; [ Init Custom Menu Window ] C3/3A87: A0 00 78 LDY #$7800 ; vram destination = $7800 (menu window graphics) C3/3A8A: 84 14 STY $14 C3/3A8C: AD 4E 1D LDA $1D4E ; wallpaper index C3/3A8F: 20 30 3B JSR $3B30 ; C3/3A92: AD 4E 1D LDA $1D4E C3/3A95: A2 60 00 LDX #$0060 C3/3A98: 20 5B 3B JSR $3B5B C3/3A9B: A0 00 1C LDY #$1C00 C3/3A9E: 4C 26 03 JMP $0326 C3/3AA1: A0 00 7A LDY #$7A00 C3/3AA4: 84 14 STY $14 C3/3AA6: A4 91 LDY $91 C3/3AA8: F0 06 BEQ $3AB0 C3/3AAA: AF 4E 67 30 LDA $30674E C3/3AAE: 80 01 BRA $3AB1 C3/3AB0: 7B TDC C3/3AB1: 20 30 3B JSR $3B30 C3/3AB4: 20 88 14 JSR $1488 C3/3AB7: A0 20 18 LDY #$1820 C3/3ABA: 4C 26 03 JMP $0326 C3/3ABD: A0 00 7C LDY #$7C00 C3/3AC0: 84 14 STY $14 C3/3AC2: A4 93 LDY $93 C3/3AC4: F0 06 BEQ $3ACC C3/3AC6: AF 4E 71 30 LDA $30714E C3/3ACA: 80 01 BRA $3ACD C3/3ACC: 7B TDC C3/3ACD: 20 30 3B JSR $3B30 C3/3AD0: 20 88 14 JSR $1488 C3/3AD3: A0 40 14 LDY #$1440 C3/3AD6: 4C 26 03 JMP $0326 C3/3AD9: A0 00 7E LDY #$7E00 C3/3ADC: 84 14 STY $14 C3/3ADE: A4 95 LDY $95 C3/3AE0: F0 06 BEQ $3AE8 C3/3AE2: AF 4E 7B 30 LDA $307B4E C3/3AE6: 80 01 BRA $3AE9 C3/3AE8: 7B TDC C3/3AE9: 20 30 3B JSR $3B30 C3/3AEC: 20 88 14 JSR $1488 C3/3AEF: A0 60 10 LDY #$1060 C3/3AF2: 4C 26 03 JMP $0326 C3/3AF5: A4 91 LDY $91 C3/3AF7: F0 06 BEQ $3AFF C3/3AF9: AF 4E 67 30 LDA $30674E C3/3AFD: 80 01 BRA $3B00 C3/3AFF: 7B TDC C3/3B00: A2 40 00 LDX #$0040 C3/3B03: 20 5B 3B JSR $3B5B C3/3B06: 4C D2 14 JMP $14D2 C3/3B09: A4 93 LDY $93 C3/3B0B: F0 06 BEQ $3B13 C3/3B0D: AF 4E 71 30 LDA $30714E C3/3B11: 80 01 BRA $3B14 C3/3B13: 7B TDC C3/3B14: A2 20 00 LDX #$0020 C3/3B17: 20 5B 3B JSR $3B5B C3/3B1A: 4C D2 14 JMP $14D2 C3/3B1D: A4 95 LDY $95 C3/3B1F: F0 06 BEQ $3B27 C3/3B21: AF 4E 7B 30 LDA $307B4E C3/3B25: 80 01 BRA $3B28 C3/3B27: 7B TDC C3/3B28: A6 00 LDX $00 C3/3B2A: 20 5B 3B JSR $3B5B C3/3B2D: 4C D2 14 JMP $14D2 ; [ Get Pointer to Menu Window Graphics ] ; ++$16: pointer (out) C3/3B30: 29 0F AND #$0F C3/3B32: 85 E0 STA $E0 C3/3B34: 64 E1 STZ $E1 C3/3B36: A0 00 00 LDY #$0000 ; $ED0000 (menu window graphics) C3/3B39: 84 16 STY $16 C3/3B3B: A9 ED LDA #$ED C3/3B3D: 85 18 STA $18 C3/3B3F: C2 20 REP #$20 C3/3B41: 7B TDC C3/3B42: A4 E0 LDY $E0 C3/3B44: F0 08 BEQ $3B4E C3/3B46: 18 CLC C3/3B47: 69 80 03 ADC #$0380 C3/3B4A: C6 E0 DEC $E0 C3/3B4C: 80 F4 BRA $3B42 C3/3B4E: 18 CLC C3/3B4F: 65 16 ADC $16 C3/3B51: 85 16 STA $16 C3/3B53: E2 20 SEP #$20 C3/3B55: A0 00 04 LDY #$0400 C3/3B58: 84 12 STY $12 C3/3B5A: 60 RTS ; [ Load Menu Window Palette ] C3/3B5B: 29 0F AND #$0F C3/3B5D: 85 E0 STA $E0 C3/3B5F: DA PHX C3/3B60: A9 00 LDA #$00 C3/3B62: 85 E9 STA $E9 C3/3B64: 64 E1 STZ $E1 C3/3B66: C2 20 REP #$20 C3/3B68: A9 57 1D LDA #$1D57 ; window palette C3/3B6B: A4 E0 LDY $E0 C3/3B6D: F0 08 BEQ $3B77 C3/3B6F: 18 CLC C3/3B70: 69 0E 00 ADC #$000E C3/3B73: C6 E0 DEC $E0 C3/3B75: 80 F4 BRA $3B6B C3/3B77: 85 E7 STA $E7 C3/3B79: E2 20 SEP #$20 C3/3B7B: A4 00 LDY $00 C3/3B7D: FA PLX C3/3B7E: B7 E7 LDA [$E7],Y C3/3B80: 9F CB 30 7E STA $7E30CB,X C3/3B84: C8 INY C3/3B85: E8 INX C3/3B86: C0 0E 00 CPY #$000E C3/3B89: D0 F3 BNE $3B7E C3/3B8B: 60 RTS ; [ ] C3/3B8C: AD 4D 1D LDA $1D4D ; active/wait C3/3B8F: 29 08 AND #$08 C3/3B91: F0 09 BEQ $3B9C ; branch if active C3/3B93: A9 28 LDA #$28 C3/3B95: 20 A5 3B JSR $3BA5 C3/3B98: A9 20 LDA #$20 C3/3B9A: 80 12 BRA $3BAE C3/3B9C: A9 20 LDA #$20 C3/3B9E: 20 A5 3B JSR $3BA5 C3/3BA1: A9 28 LDA #$28 C3/3BA3: 80 09 BRA $3BAE C3/3BA5: 85 29 STA $29 C3/3BA7: A0 F1 49 LDY #$49F1 C3/3BAA: 20 F9 02 JSR $02F9 ; draw positioned text C3/3BAD: 60 RTS ; [ ] C3/3BAE: 85 29 STA $29 C3/3BB0: A0 18 49 LDY #$4918 C3/3BB3: 20 F9 02 JSR $02F9 ; draw positioned text C3/3BB6: 60 RTS C3/3BB7: A9 28 LDA #$28 C3/3BB9: 85 29 STA $29 C3/3BBB: A0 6E 49 LDY #$496E C3/3BBE: 20 F9 02 JSR $02F9 ; draw positioned text C3/3BC1: A9 20 LDA #$20 C3/3BC3: 85 29 STA $29 C3/3BC5: 7B TDC C3/3BC6: AD 4D 1D LDA $1D4D C3/3BC9: 29 07 AND #$07 C3/3BCB: 0A ASL C3/3BCC: AA TAX C3/3BCD: C2 20 REP #$20 C3/3BCF: BF E6 3B C3 LDA $C33BE6,X C3/3BD3: 85 F7 STA $F7 C3/3BD5: E2 20 SEP #$20 C3/3BD7: AD 4D 1D LDA $1D4D C3/3BDA: 29 07 AND #$07 C3/3BDC: 18 CLC C3/3BDD: 69 B5 ADC #$B5 C3/3BDF: 85 F9 STA $F9 C3/3BE1: 64 FA STZ $FA C3/3BE3: 4C 16 41 JMP $4116 C3/3BE6: .DW $3A25, $3A29, $3A2D, $3A31, $3A35, $3A39 C3/3BF2: A9 28 LDA #$28 C3/3BF4: 85 29 STA $29 C3/3BF6: A0 7C 49 LDY #$497C C3/3BF9: 20 F9 02 JSR $02F9 ; draw positioned text C3/3BFC: A9 20 LDA #$20 C3/3BFE: 85 29 STA $29 C3/3C00: 7B TDC C3/3C01: AD 4D 1D LDA $1D4D C3/3C04: 29 70 AND #$70 C3/3C06: 4A LSR C3/3C07: 4A LSR C3/3C08: 4A LSR C3/3C09: AA TAX C3/3C0A: C2 20 REP #$20 C3/3C0C: BF 27 3C C3 LDA $C33C27,X C3/3C10: 85 F7 STA $F7 C3/3C12: E2 20 SEP #$20 C3/3C14: AD 4D 1D LDA $1D4D C3/3C17: 29 70 AND #$70 C3/3C19: 4A LSR C3/3C1A: 4A LSR C3/3C1B: 4A LSR C3/3C1C: 4A LSR C3/3C1D: 18 CLC C3/3C1E: 69 B5 ADC #$B5 C3/3C20: 85 F9 STA $F9 C3/3C22: 64 FA STZ $FA C3/3C24: 4C 16 41 JMP $4116 C3/3C27: .DW $3AA5, $3AA9, $3AAD, $3AB1, $3AB5, $3AB9 C3/3C33: AD 4D 1D LDA $1D4D C3/3C36: 30 09 BMI $3C41 C3/3C38: A9 28 LDA #$28 C3/3C3A: 20 4A 3C JSR $3C4A C3/3C3D: A9 20 LDA #$20 C3/3C3F: 80 12 BRA $3C53 C3/3C41: A9 20 LDA #$20 C3/3C43: 20 4A 3C JSR $3C4A C3/3C46: A9 28 LDA #$28 C3/3C48: 80 09 BRA $3C53 C3/3C4A: 85 29 STA $29 C3/3C4C: A0 2D 49 LDY #$492D C3/3C4F: 20 F9 02 JSR $02F9 ; draw positioned text C3/3C52: 60 RTS C3/3C53: 85 29 STA $29 C3/3C55: A0 FA 49 LDY #$49FA C3/3C58: 20 F9 02 JSR $02F9 ; draw positioned text C3/3C5B: 60 RTS C3/3C5C: AD 4E 1D LDA $1D4E C3/3C5F: 10 09 BPL $3C6A C3/3C61: A9 28 LDA #$28 C3/3C63: 20 73 3C JSR $3C73 C3/3C66: A9 20 LDA #$20 C3/3C68: 80 12 BRA $3C7C C3/3C6A: A9 20 LDA #$20 C3/3C6C: 20 73 3C JSR $3C73 C3/3C6F: A9 28 LDA #$28 C3/3C71: 80 09 BRA $3C7C C3/3C73: 85 29 STA $29 C3/3C75: A0 35 49 LDY #$4935 C3/3C78: 20 F9 02 JSR $02F9 ; draw positioned text C3/3C7B: 60 RTS C3/3C7C: 85 29 STA $29 C3/3C7E: A0 3A 49 LDY #$493A C3/3C81: 20 F9 02 JSR $02F9 ; draw positioned text C3/3C84: 60 RTS C3/3C85: AD 4E 1D LDA $1D4E C3/3C88: 29 20 AND #$20 C3/3C8A: F0 09 BEQ $3C95 C3/3C8C: A9 28 LDA #$28 C3/3C8E: 20 9E 3C JSR $3C9E C3/3C91: A9 20 LDA #$20 C3/3C93: 80 12 BRA $3CA7 C3/3C95: A9 20 LDA #$20 C3/3C97: 20 9E 3C JSR $3C9E C3/3C9A: A9 28 LDA #$28 C3/3C9C: 80 09 BRA $3CA7 C3/3C9E: 85 29 STA $29 C3/3CA0: A0 40 49 LDY #$4940 C3/3CA3: 20 F9 02 JSR $02F9 ; draw positioned text C3/3CA6: 60 RTS C3/3CA7: 85 29 STA $29 C3/3CA9: A0 49 49 LDY #$4949 C3/3CAC: 20 F9 02 JSR $02F9 ; draw positioned text C3/3CAF: 60 RTS C3/3CB0: AD 4E 1D LDA $1D4E C3/3CB3: 29 40 AND #$40 C3/3CB5: F0 09 BEQ $3CC0 C3/3CB7: A9 28 LDA #$28 C3/3CB9: 20 C9 3C JSR $3CC9 C3/3CBC: A9 20 LDA #$20 C3/3CBE: 80 12 BRA $3CD2 C3/3CC0: A9 20 LDA #$20 C3/3CC2: 20 C9 3C JSR $3CC9 C3/3CC5: A9 28 LDA #$28 C3/3CC7: 80 09 BRA $3CD2 C3/3CC9: 85 29 STA $29 C3/3CCB: A0 03 4A LDY #$4A03 C3/3CCE: 20 F9 02 JSR $02F9 ; draw positioned text C3/3CD1: 60 RTS C3/3CD2: 85 29 STA $29 C3/3CD4: A0 50 49 LDY #$4950 C3/3CD7: 20 F9 02 JSR $02F9 ; draw positioned text C3/3CDA: 60 RTS C3/3CDB: AD 4E 1D LDA $1D4E C3/3CDE: 29 10 AND #$10 C3/3CE0: F0 09 BEQ $3CEB C3/3CE2: A9 28 LDA #$28 C3/3CE4: 20 F4 3C JSR $3CF4 C3/3CE7: A9 20 LDA #$20 C3/3CE9: 80 12 BRA $3CFD C3/3CEB: A9 20 LDA #$20 C3/3CED: 20 F4 3C JSR $3CF4 C3/3CF0: A9 28 LDA #$28 C3/3CF2: 80 09 BRA $3CFD C3/3CF4: 85 29 STA $29 C3/3CF6: A0 59 49 LDY #$4959 C3/3CF9: 20 F9 02 JSR $02F9 ; draw positioned text C3/3CFC: 60 RTS C3/3CFD: 85 29 STA $29 C3/3CFF: A0 0B 4A LDY #$4A0B C3/3D02: 20 F9 02 JSR $02F9 ; draw positioned text C3/3D05: 60 RTS C3/3D06: AD 54 1D LDA $1D54 C3/3D09: 10 09 BPL $3D14 C3/3D0B: A9 28 LDA #$28 C3/3D0D: 20 1D 3D JSR $3D1D C3/3D10: A9 20 LDA #$20 C3/3D12: 80 12 BRA $3D26 C3/3D14: A9 20 LDA #$20 C3/3D16: 20 1D 3D JSR $3D1D C3/3D19: A9 28 LDA #$28 C3/3D1B: 80 09 BRA $3D26 C3/3D1D: 85 29 STA $29 C3/3D1F: A0 13 4A LDY #$4A13 C3/3D22: 20 F9 02 JSR $02F9 ; draw positioned text C3/3D25: 60 RTS C3/3D26: 85 29 STA $29 C3/3D28: A0 63 49 LDY #$4963 C3/3D2B: 20 F9 02 JSR $02F9 ; draw positioned text C3/3D2E: 60 RTS C3/3D2F: 7B TDC C3/3D30: A5 4B LDA $4B C3/3D32: 0A ASL C3/3D33: AA TAX C3/3D34: A5 4A LDA $4A C3/3D36: F0 08 BEQ $3D40 C3/3D38: DA PHX C3/3D39: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3D3C: FA PLX C3/3D3D: 7C 55 3D JMP ($3D55,X) C3/3D40: 7C 43 3D JMP ($3D43,X) C3/3D43: .DW $3D61, $3D7A, $3DAB, $3DE8, $3E01, $3E1A, $3E4E, $3E6D, $3E86 C3/3D55: .DW $3E9F, $3ECD, $3F01, $3F3C, $3F5B, $3F7A C3/3D61: 20 A3 0E JSR $0EA3 ; play cursor sound effect C3/3D64: A5 0B LDA $0B C3/3D66: 89 01 BIT #$01 C3/3D68: D0 08 BNE $3D72 C3/3D6A: A9 08 LDA #$08 C3/3D6C: 1C 4D 1D TRB $1D4D C3/3D6F: 4C 8C 3B JMP $3B8C C3/3D72: A9 08 LDA #$08 C3/3D74: 0C 4D 1D TSB $1D4D C3/3D77: 4C 8C 3B JMP $3B8C C3/3D7A: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3D7D: AD 4D 1D LDA $1D4D C3/3D80: 29 07 AND #$07 C3/3D82: 85 E0 STA $E0 C3/3D84: A5 0B LDA $0B C3/3D86: 89 01 BIT #$01 C3/3D88: F0 0B BEQ $3D95 C3/3D8A: A5 E0 LDA $E0 C3/3D8C: C9 05 CMP #$05 C3/3D8E: F0 04 BEQ $3D94 C3/3D90: E6 E0 INC $E0 C3/3D92: 80 0A BRA $3D9E C3/3D94: 60 RTS C3/3D95: A5 E0 LDA $E0 C3/3D97: F0 04 BEQ $3D9D C3/3D99: C6 E0 DEC $E0 C3/3D9B: 80 01 BRA $3D9E C3/3D9D: 60 RTS C3/3D9E: AD 4D 1D LDA $1D4D C3/3DA1: 29 F8 AND #$F8 C3/3DA3: 05 E0 ORA $E0 C3/3DA5: 8D 4D 1D STA $1D4D C3/3DA8: 4C B7 3B JMP $3BB7 C3/3DAB: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3DAE: AD 4D 1D LDA $1D4D C3/3DB1: 29 70 AND #$70 C3/3DB3: 4A LSR C3/3DB4: 4A LSR C3/3DB5: 4A LSR C3/3DB6: 4A LSR C3/3DB7: 85 E0 STA $E0 C3/3DB9: A5 0B LDA $0B C3/3DBB: 89 01 BIT #$01 C3/3DBD: F0 0B BEQ $3DCA C3/3DBF: A5 E0 LDA $E0 C3/3DC1: C9 05 CMP #$05 C3/3DC3: F0 04 BEQ $3DC9 C3/3DC5: E6 E0 INC $E0 C3/3DC7: 80 0A BRA $3DD3 C3/3DC9: 60 RTS C3/3DCA: A5 E0 LDA $E0 C3/3DCC: F0 04 BEQ $3DD2 C3/3DCE: C6 E0 DEC $E0 C3/3DD0: 80 01 BRA $3DD3 C3/3DD2: 60 RTS C3/3DD3: A5 E0 LDA $E0 C3/3DD5: 0A ASL C3/3DD6: 0A ASL C3/3DD7: 0A ASL C3/3DD8: 0A ASL C3/3DD9: 85 E0 STA $E0 C3/3DDB: AD 4D 1D LDA $1D4D C3/3DDE: 29 8F AND #$8F C3/3DE0: 05 E0 ORA $E0 C3/3DE2: 8D 4D 1D STA $1D4D C3/3DE5: 4C F2 3B JMP $3BF2 C3/3DE8: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3DEB: A5 0B LDA $0B C3/3DED: 89 01 BIT #$01 C3/3DEF: D0 08 BNE $3DF9 C3/3DF1: A9 80 LDA #$80 C3/3DF3: 1C 4D 1D TRB $1D4D C3/3DF6: 4C 33 3C JMP $3C33 C3/3DF9: A9 80 LDA #$80 C3/3DFB: 0C 4D 1D TSB $1D4D C3/3DFE: 4C 33 3C JMP $3C33 C3/3E01: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3E04: A5 0B LDA $0B C3/3E06: 89 01 BIT #$01 C3/3E08: D0 08 BNE $3E12 C3/3E0A: A9 80 LDA #$80 C3/3E0C: 1C 4E 1D TRB $1D4E C3/3E0F: 4C 5C 3C JMP $3C5C C3/3E12: A9 80 LDA #$80 C3/3E14: 0C 4E 1D TSB $1D4E C3/3E17: 4C 5C 3C JMP $3C5C C3/3E1A: A5 0B LDA $0B C3/3E1C: 89 01 BIT #$01 C3/3E1E: D0 0F BNE $3E2F C3/3E20: 7B TDC C3/3E21: 20 3F 3E JSR $3E3F C3/3E24: A9 20 LDA #$20 C3/3E26: 1C 4E 1D TRB $1D4E C3/3E29: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3E2C: 4C 85 3C JMP $3C85 C3/3E2F: A9 FF LDA #$FF C3/3E31: 20 3F 3E JSR $3E3F C3/3E34: A9 20 LDA #$20 C3/3E36: 0C 4E 1D TSB $1D4E C3/3E39: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3E3C: 4C 85 3C JMP $3C85 ; [ Set Mono/Stereo Mode ] C3/3E3F: 8F 01 13 00 STA $001301 C3/3E43: A9 F3 LDA #$F3 ; spc command $F3 (set mono/stereo mode) C3/3E45: 8F 00 13 00 STA $001300 C3/3E49: 22 04 00 C5 JSL $C50004 ; spc command C3/3E4D: 60 RTS C3/3E4E: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3E51: A5 0B LDA $0B C3/3E53: 89 01 BIT #$01 C3/3E55: D0 0B BNE $3E62 C3/3E57: 20 F7 48 JSR $48F7 C3/3E5A: A9 40 LDA #$40 C3/3E5C: 1C 4E 1D TRB $1D4E C3/3E5F: 4C B0 3C JMP $3CB0 C3/3E62: A9 40 LDA #$40 C3/3E64: 0C 4E 1D TSB $1D4E C3/3E67: 20 68 70 JSR $7068 C3/3E6A: 4C B0 3C JMP $3CB0 C3/3E6D: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3E70: A5 0B LDA $0B C3/3E72: 89 01 BIT #$01 C3/3E74: D0 08 BNE $3E7E C3/3E76: A9 10 LDA #$10 C3/3E78: 1C 4E 1D TRB $1D4E C3/3E7B: 4C DB 3C JMP $3CDB C3/3E7E: A9 10 LDA #$10 C3/3E80: 0C 4E 1D TSB $1D4E C3/3E83: 4C DB 3C JMP $3CDB C3/3E86: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/3E89: A5 0B LDA $0B C3/3E8B: 89 01 BIT #$01 C3/3E8D: D0 08 BNE $3E97 C3/3E8F: A9 80 LDA #$80 C3/3E91: 1C 54 1D TRB $1D54 C3/3E94: 4C 06 3D JMP $3D06 C3/3E97: A9 80 LDA #$80 C3/3E99: 0C 54 1D TSB $1D54 C3/3E9C: 4C 06 3D JMP $3D06 C3/3E9F: AD 54 1D LDA $1D54 C3/3EA2: 29 07 AND #$07 C3/3EA4: 85 E0 STA $E0 C3/3EA6: A5 0B LDA $0B C3/3EA8: 89 01 BIT #$01 C3/3EAA: F0 0B BEQ $3EB7 C3/3EAC: A5 E0 LDA $E0 C3/3EAE: C9 05 CMP #$05 C3/3EB0: F0 04 BEQ $3EB6 C3/3EB2: E6 E0 INC $E0 C3/3EB4: 80 0A BRA $3EC0 C3/3EB6: 60 RTS C3/3EB7: A5 E0 LDA $E0 C3/3EB9: F0 04 BEQ $3EBF C3/3EBB: C6 E0 DEC $E0 C3/3EBD: 80 01 BRA $3EC0 C3/3EBF: 60 RTS C3/3EC0: AD 54 1D LDA $1D54 C3/3EC3: 29 F8 AND #$F8 C3/3EC5: 05 E0 ORA $E0 C3/3EC7: 8D 54 1D STA $1D54 C3/3ECA: 4C FD 3F JMP $3FFD C3/3ECD: AD 4E 1D LDA $1D4E C3/3ED0: 29 0F AND #$0F C3/3ED2: 85 E0 STA $E0 C3/3ED4: A5 0B LDA $0B C3/3ED6: 89 01 BIT #$01 C3/3ED8: F0 0B BEQ $3EE5 C3/3EDA: A5 E0 LDA $E0 C3/3EDC: C9 07 CMP #$07 C3/3EDE: F0 04 BEQ $3EE4 C3/3EE0: E6 E0 INC $E0 C3/3EE2: 80 0A BRA $3EEE C3/3EE4: 60 RTS C3/3EE5: A5 E0 LDA $E0 C3/3EE7: F0 04 BEQ $3EED C3/3EE9: C6 E0 DEC $E0 C3/3EEB: 80 01 BRA $3EEE C3/3EED: 60 RTS C3/3EEE: AD 4E 1D LDA $1D4E C3/3EF1: 29 F0 AND #$F0 C3/3EF3: 05 E0 ORA $E0 C3/3EF5: 8D 4E 1D STA $1D4E C3/3EF8: 20 EA 40 JSR $40EA C3/3EFB: 20 87 3A JSR $3A87 ; init custom menu window C3/3EFE: 4C C3 41 JMP $41C3 C3/3F01: AD 54 1D LDA $1D54 C3/3F04: 29 38 AND #$38 C3/3F06: 4A LSR C3/3F07: 4A LSR C3/3F08: 4A LSR C3/3F09: 85 E0 STA $E0 C3/3F0B: A5 0B LDA $0B C3/3F0D: 89 01 BIT #$01 C3/3F0F: F0 0B BEQ $3F1C C3/3F11: A5 E0 LDA $E0 C3/3F13: C9 07 CMP #$07 C3/3F15: F0 04 BEQ $3F1B C3/3F17: E6 E0 INC $E0 C3/3F19: 80 0A BRA $3F25 C3/3F1B: 60 RTS C3/3F1C: A5 E0 LDA $E0 C3/3F1E: F0 04 BEQ $3F24 C3/3F20: C6 E0 DEC $E0 C3/3F22: 80 01 BRA $3F25 C3/3F24: 60 RTS C3/3F25: A5 E0 LDA $E0 C3/3F27: 0A ASL C3/3F28: 0A ASL C3/3F29: 0A ASL C3/3F2A: 85 E0 STA $E0 C3/3F2C: AD 54 1D LDA $1D54 C3/3F2F: 29 C7 AND #$C7 C3/3F31: 05 E0 ORA $E0 C3/3F33: 8D 54 1D STA $1D54 C3/3F36: 20 33 41 JSR $4133 C3/3F39: 4C C3 41 JMP $41C3 C3/3F3C: 20 FE 41 JSR $41FE C3/3F3F: A5 0B LDA $0B C3/3F41: 89 01 BIT #$01 C3/3F43: F0 0A BEQ $3F4F C3/3F45: A5 E2 LDA $E2 C3/3F47: C9 1F CMP #$1F C3/3F49: F0 0A BEQ $3F55 C3/3F4B: E6 E2 INC $E2 C3/3F4D: 80 06 BRA $3F55 C3/3F4F: A5 E2 LDA $E2 C3/3F51: F0 02 BEQ $3F55 C3/3F53: C6 E2 DEC $E2 C3/3F55: 20 21 42 JSR $4221 C3/3F58: 4C C4 3F JMP $3FC4 C3/3F5B: 20 FE 41 JSR $41FE C3/3F5E: A5 0B LDA $0B C3/3F60: 89 01 BIT #$01 C3/3F62: F0 0A BEQ $3F6E C3/3F64: A5 E1 LDA $E1 C3/3F66: C9 1F CMP #$1F C3/3F68: F0 0A BEQ $3F74 C3/3F6A: E6 E1 INC $E1 C3/3F6C: 80 06 BRA $3F74 C3/3F6E: A5 E1 LDA $E1 C3/3F70: F0 02 BEQ $3F74 C3/3F72: C6 E1 DEC $E1 C3/3F74: 20 21 42 JSR $4221 C3/3F77: 4C C4 3F JMP $3FC4 C3/3F7A: 20 FE 41 JSR $41FE C3/3F7D: A5 0B LDA $0B C3/3F7F: 89 01 BIT #$01 C3/3F81: F0 0A BEQ $3F8D C3/3F83: A5 E0 LDA $E0 C3/3F85: C9 1F CMP #$1F C3/3F87: F0 0A BEQ $3F93 C3/3F89: E6 E0 INC $E0 C3/3F8B: 80 06 BRA $3F93 C3/3F8D: A5 E0 LDA $E0 C3/3F8F: F0 02 BEQ $3F93 C3/3F91: C6 E0 DEC $E0 C3/3F93: 20 21 42 JSR $4221 C3/3F96: 4C C4 3F JMP $3FC4 ; [ Init Font Color ] C3/3F99: C2 20 REP #$20 C3/3F9B: AD 55 1D LDA $1D55 C3/3F9E: 8F 4F 30 7E STA $7E304F C3/3FA2: 8F 73 30 7E STA $7E3073 C3/3FA6: 8F 77 30 7E STA $7E3077 C3/3FAA: E2 20 SEP #$20 C3/3FAC: 60 RTS C3/3FAD: A6 00 LDX $00 C3/3FAF: C2 20 REP #$20 C3/3FB1: B9 57 1D LDA $1D57,Y C3/3FB4: 9F 2B 31 7E STA $7E312B,X C3/3FB8: C8 INY C3/3FB9: C8 INY C3/3FBA: E8 INX C3/3FBB: E8 INX C3/3FBC: E0 0E 00 CPX #$000E C3/3FBF: D0 F0 BNE $3FB1 C3/3FC1: E2 20 SEP #$20 C3/3FC3: 60 RTS C3/3FC4: 7B TDC C3/3FC5: AD 4E 1D LDA $1D4E C3/3FC8: 29 0F AND #$0F C3/3FCA: 8D 02 42 STA $4202 C3/3FCD: A9 0E LDA #$0E C3/3FCF: 8D 03 42 STA $4203 C3/3FD2: AD 54 1D LDA $1D54 C3/3FD5: 29 38 AND #$38 C3/3FD7: F0 19 BEQ $3FF2 C3/3FD9: 4A LSR C3/3FDA: 4A LSR C3/3FDB: 18 CLC C3/3FDC: 6D 16 42 ADC $4216 C3/3FDF: AA TAX C3/3FE0: A5 9A LDA $9A C3/3FE2: 9D 55 1D STA $1D55,X C3/3FE5: A5 9B LDA $9B C3/3FE7: 9D 56 1D STA $1D56,X C3/3FEA: AC 16 42 LDY $4216 C3/3FED: 20 AD 3F JSR $3FAD C3/3FF0: 80 08 BRA $3FFA C3/3FF2: A4 9A LDY $9A C3/3FF4: 8C 55 1D STY $1D55 C3/3FF7: 20 99 3F JSR $3F99 ; init font color C3/3FFA: 4C C3 41 JMP $41C3 C3/3FFD: A9 28 LDA #$28 C3/3FFF: 85 29 STA $29 C3/4001: A0 A5 4A LDY #$4AA5 C3/4004: 20 F9 02 JSR $02F9 ; draw positioned text C3/4007: A9 20 LDA #$20 C3/4009: 85 29 STA $29 C3/400B: 7B TDC C3/400C: AD 54 1D LDA $1D54 C3/400F: 29 07 AND #$07 C3/4011: 0A ASL C3/4012: AA TAX C3/4013: C2 20 REP #$20 C3/4015: BF 2F 40 C3 LDA $C3402F,X C3/4019: 85 F7 STA $F7 C3/401B: E2 20 SEP #$20 C3/401D: AD 54 1D LDA $1D54 C3/4020: 29 07 AND #$07 C3/4022: 18 CLC C3/4023: 69 B5 ADC #$B5 C3/4025: 85 F9 STA $F9 C3/4027: 64 FA STZ $FA C3/4029: 20 16 41 JSR $4116 C3/402C: 4C 3B 40 JMP $403B C3/402F: .DW $41A5, $41A9, $41AD, $41B1, $41B5, $41B9 C3/403B: 7B TDC C3/403C: 8F 95 9E 7E STA $7E9E95 C3/4040: 7B TDC C3/4041: AD 54 1D LDA $1D54 C3/4044: 29 07 AND #$07 C3/4046: 0A ASL C3/4047: 0A ASL C3/4048: AA TAX C3/4049: A0 03 00 LDY #$0003 C3/404C: 5A PHY C3/404D: DA PHX C3/404E: 20 58 40 JSR $4058 C3/4051: FA PLX C3/4052: 7A PLY C3/4053: E8 INX C3/4054: 88 DEY C3/4055: D0 F5 BNE $404C C3/4057: 60 RTS C3/4058: 7B TDC C3/4059: BF D2 40 C3 LDA $C340D2,X C3/405D: AA TAX C3/405E: BF D3 4A C3 LDA $C34AD3,X C3/4062: 8F 8B 9E 7E STA $7E9E8B C3/4066: BF D4 4A C3 LDA $C34AD4,X C3/406A: 8F 8C 9E 7E STA $7E9E8C C3/406E: BF D5 4A C3 LDA $C34AD5,X C3/4072: 8F 8D 9E 7E STA $7E9E8D C3/4076: BF D6 4A C3 LDA $C34AD6,X C3/407A: 8F 8E 9E 7E STA $7E9E8E C3/407E: BF D7 4A C3 LDA $C34AD7,X C3/4082: 8F 8F 9E 7E STA $7E9E8F C3/4086: BF D8 4A C3 LDA $C34AD8,X C3/408A: 8F 90 9E 7E STA $7E9E90 C3/408E: BF D9 4A C3 LDA $C34AD9,X C3/4092: 8F 91 9E 7E STA $7E9E91 C3/4096: BF DA 4A C3 LDA $C34ADA,X C3/409A: 8F 92 9E 7E STA $7E9E92 C3/409E: BF DB 4A C3 LDA $C34ADB,X C3/40A2: 8F 93 9E 7E STA $7E9E93 C3/40A6: BF DC 4A C3 LDA $C34ADC,X C3/40AA: 8F 94 9E 7E STA $7E9E94 C3/40AE: 7B TDC C3/40AF: 88 DEY C3/40B0: 98 TYA C3/40B1: 0A ASL C3/40B2: AA TAX C3/40B3: C2 20 REP #$20 C3/40B5: BF CC 40 C3 LDA $C340CC,X C3/40B9: 8F 89 9E 7E STA $7E9E89 C3/40BD: E2 20 SEP #$20 C3/40BF: A0 89 9E LDY #$9E89 C3/40C2: 84 E7 STY $E7 C3/40C4: A9 7E LDA #$7E C3/40C6: 85 E9 STA $E9 C3/40C8: 20 FF 02 JSR $02FF ; draw positioned text C3/40CB: 60 RTS C3/40CC: .DW $4329, $42A9, $4229 C3/40D2: .DB $00, $0A, $14, $00 C3/40D6: .DB $00, $14, $0A, $00 C3/40DA: .DB $0A, $14, $00, $00 C3/40DE: .DB $0A, $00, $14, $00 C3/40E2: .DB $14, $00, $0A, $00 C3/40E6: .DB $14, $0A, $00, $00 C3/40EA: A9 28 LDA #$28 C3/40EC: 85 29 STA $29 C3/40EE: A0 93 4A LDY #$4A93 C3/40F1: 20 F9 02 JSR $02F9 ; draw positioned text C3/40F4: A9 20 LDA #$20 C3/40F6: 85 29 STA $29 C3/40F8: 7B TDC C3/40F9: AD 4E 1D LDA $1D4E C3/40FC: 29 0F AND #$0F C3/40FE: 0A ASL C3/40FF: AA TAX C3/4100: C2 20 REP #$20 C3/4102: BF 23 41 C3 LDA $C34123,X C3/4106: 85 F7 STA $F7 C3/4108: E2 20 SEP #$20 C3/410A: AD 4E 1D LDA $1D4E C3/410D: 29 0F AND #$0F C3/410F: 18 CLC C3/4110: 69 B5 ADC #$B5 C3/4112: 85 F9 STA $F9 C3/4114: 64 FA STZ $FA C3/4116: A0 F7 00 LDY #$00F7 C3/4119: 84 E7 STY $E7 C3/411B: A9 00 LDA #$00 C3/411D: 85 E9 STA $E9 C3/411F: 20 FF 02 JSR $02FF ; draw positioned text C3/4122: 60 RTS C3/4123: .DW $43A5, $43A9, $43AD, $43B1, $43B5, $43B9, $43BD, $43C1 C3/4133: A9 3C LDA #$3C C3/4135: 85 29 STA $29 C3/4137: A0 C9 4A LDY #$4AC9 C3/413A: 20 F9 02 JSR $02F9 ; draw positioned text C3/413D: A0 9D 41 LDY #$419D C3/4140: 20 F9 02 JSR $02F9 ; draw positioned text C3/4143: 7B TDC C3/4144: AD 54 1D LDA $1D54 C3/4147: 29 38 AND #$38 C3/4149: F0 26 BEQ $4171 C3/414B: 4A LSR C3/414C: 4A LSR C3/414D: AA TAX C3/414E: A9 20 LDA #$20 C3/4150: 85 29 STA $29 C3/4152: C2 20 REP #$20 C3/4154: BF 8D 41 C3 LDA $C3418D,X C3/4158: 85 E7 STA $E7 C3/415A: E2 20 SEP #$20 C3/415C: A9 C3 LDA #$C3 C3/415E: 85 E9 STA $E9 C3/4160: 20 FF 02 JSR $02FF ; draw positioned text C3/4163: A9 28 LDA #$28 C3/4165: 85 29 STA $29 C3/4167: 20 7F 41 JSR $417F C3/416A: A9 20 LDA #$20 C3/416C: 85 29 STA $29 C3/416E: 4C 86 41 JMP $4186 C3/4171: A9 20 LDA #$20 C3/4173: 85 29 STA $29 C3/4175: 20 7F 41 JSR $417F C3/4178: A9 28 LDA #$28 C3/417A: 85 29 STA $29 C3/417C: 4C 86 41 JMP $4186 C3/417F: A0 B3 4A LDY #$4AB3 C3/4182: 20 F9 02 JSR $02F9 ; draw positioned text C3/4185: 60 RTS C3/4186: A0 BA 4A LDY #$4ABA C3/4189: 20 F9 02 JSR $02F9 ; draw positioned text C3/418C: 60 RTS C3/418D: .DW $419D, $41A7, $41AB, $41AF, $41B3, $41B7, $41BB, $41BF C3/419D: .DB $F5, $44, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00 C3/41A7: .DB $F5, $44, $D4, $00 C3/41AB: .DB $F7, $44, $D4, $00 C3/41AF: .DB $F9, $44, $D4, $00 C3/41B3: .DB $FB, $44, $D4, $00 C3/41B7: .DB $FD, $44, $D4, $00 C3/41BB: .DB $FF, $44, $D4, $00 C3/41BF: .DB $01, $45, $D4, $00 C3/41C3: 20 50 39 JSR $3950 C3/41C6: 7B TDC C3/41C7: AD 4E 1D LDA $1D4E C3/41CA: 29 0F AND #$0F C3/41CC: 8D 02 42 STA $4202 C3/41CF: A9 0E LDA #$0E C3/41D1: 8D 03 42 STA $4203 C3/41D4: AD 54 1D LDA $1D54 C3/41D7: 29 38 AND #$38 C3/41D9: F0 0C BEQ $41E7 C3/41DB: 4A LSR C3/41DC: 4A LSR C3/41DD: 18 CLC C3/41DE: 6D 16 42 ADC $4216 C3/41E1: AA TAX C3/41E2: BC 55 1D LDY $1D55,X C3/41E5: 80 03 BRA $41EA C3/41E7: AC 55 1D LDY $1D55 C3/41EA: 84 9A STY $9A C3/41EC: 20 FE 41 JSR $41FE C3/41EF: 20 63 42 JSR $4263 C3/41F2: 20 FE 41 JSR $41FE C3/41F5: 20 50 42 JSR $4250 C3/41F8: 20 FE 41 JSR $41FE C3/41FB: 4C 3D 42 JMP $423D C3/41FE: A4 9A LDY $9A C3/4200: 84 E7 STY $E7 C3/4202: A5 E7 LDA $E7 C3/4204: 29 1F AND #$1F C3/4206: 85 E2 STA $E2 C3/4208: A5 E8 LDA $E8 C3/420A: 29 7C AND #$7C C3/420C: 4A LSR C3/420D: 4A LSR C3/420E: 85 E0 STA $E0 C3/4210: C2 20 REP #$20 C3/4212: A5 E7 LDA $E7 C3/4214: 29 E0 03 AND #$03E0 C3/4217: 4A LSR C3/4218: 4A LSR C3/4219: 4A LSR C3/421A: 4A LSR C3/421B: 4A LSR C3/421C: E2 20 SEP #$20 C3/421E: 85 E1 STA $E1 C3/4220: 60 RTS C3/4221: A5 E0 LDA $E0 C3/4223: 0A ASL C3/4224: 0A ASL C3/4225: 85 E8 STA $E8 C3/4227: A5 E2 LDA $E2 C3/4229: 85 E7 STA $E7 C3/422B: 7B TDC C3/422C: A5 E1 LDA $E1 C3/422E: C2 20 REP #$20 C3/4230: 0A ASL C3/4231: 0A ASL C3/4232: 0A ASL C3/4233: 0A ASL C3/4234: 0A ASL C3/4235: 05 E7 ORA $E7 C3/4237: 8D 9A 00 STA $009A C3/423A: E2 20 SEP #$20 C3/423C: 60 RTS C3/423D: C2 20 REP #$20 C3/423F: A9 2F 45 LDA #$452F C3/4242: 8F 89 9E 7E STA $7E9E89 C3/4246: E2 20 SEP #$20 C3/4248: A5 E2 LDA $E2 C3/424A: A2 29 45 LDX #$4529 C3/424D: 4C 76 42 JMP $4276 C3/4250: C2 20 REP #$20 C3/4252: A9 AF 45 LDA #$45AF C3/4255: 8F 89 9E 7E STA $7E9E89 C3/4259: E2 20 SEP #$20 C3/425B: A5 E1 LDA $E1 C3/425D: A2 A9 45 LDX #$45A9 C3/4260: 4C 76 42 JMP $4276 C3/4263: C2 20 REP #$20 C3/4265: A9 2F 46 LDA #$462F C3/4268: 8F 89 9E 7E STA $7E9E89 C3/426C: E2 20 SEP #$20 C3/426E: A5 E0 LDA $E0 C3/4270: A2 29 46 LDX #$4629 C3/4273: 4C 76 42 JMP $4276 C3/4276: 48 PHA C3/4277: 48 PHA C3/4278: DA PHX C3/4279: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/427C: FA PLX C3/427D: A9 20 LDA #$20 C3/427F: 85 29 STA $29 C3/4281: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/4284: A2 8B 9E LDX #$9E8B C3/4287: 8E 81 21 STX $2181 C3/428A: 68 PLA C3/428B: EB XBA C3/428C: A5 00 LDA $00 C3/428E: EB XBA C3/428F: 4A LSR C3/4290: 4A LSR C3/4291: AA TAX C3/4292: F0 08 BEQ $429C C3/4294: A9 F8 LDA #$F8 C3/4296: 8D 80 21 STA $2180 C3/4299: CA DEX C3/429A: D0 F8 BNE $4294 C3/429C: 68 PLA C3/429D: 29 03 AND #$03 C3/429F: AA TAX C3/42A0: BF BE 42 C3 LDA $C342BE,X C3/42A4: 8D 80 21 STA $2180 C3/42A7: 9C 80 21 STZ $2180 C3/42AA: A9 30 LDA #$30 C3/42AC: 85 29 STA $29 C3/42AE: 4C B1 42 JMP $42B1 C3/42B1: A0 89 9E LDY #$9E89 C3/42B4: 84 E7 STY $E7 C3/42B6: A9 7E LDA #$7E C3/42B8: 85 E9 STA $E9 C3/42BA: 20 FF 02 JSR $02FF ; draw positioned text C3/42BD: 60 RTS C3/42BE: .DB $F0, $F2, $F4, $F6 ; [ Menu State $47: ] C3/42C2: 20 2F 35 JSR $352F ; disable interrupts C3/42C5: 20 2C 44 JSR $442C C3/42C8: 20 6F 46 JSR $466F C3/42CB: 20 B6 45 JSR $45B6 C3/42CE: 20 BF 45 JSR $45BF C3/42D1: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/42D4: A9 01 LDA #$01 C3/42D6: 85 26 STA $26 C3/42D8: A9 48 LDA #$48 C3/42DA: 85 27 STA $27 C3/42DC: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $48: ] C3/42DF: 20 BC 45 JSR $45BC C3/42E2: A5 08 LDA $08 C3/42E4: 89 80 BIT #$80 C3/42E6: F0 28 BEQ $4310 C3/42E8: 7B TDC C3/42E9: A5 4B LDA $4B C3/42EB: C9 04 CMP #$04 C3/42ED: F0 37 BEQ $4326 C3/42EF: AA TAX C3/42F0: B5 69 LDA $69,X C3/42F2: 30 16 BMI $430A C3/42F4: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/42F7: A5 4E LDA $4E C3/42F9: 85 5E STA $5E C3/42FB: A5 4B LDA $4B C3/42FD: 85 64 STA $64 C3/42FF: 20 D4 45 JSR $45D4 C3/4302: 20 DA 45 JSR $45DA C3/4305: A9 62 LDA #$62 C3/4307: 85 26 STA $26 C3/4309: 60 RTS C3/430A: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/430D: 20 5D 30 JSR $305D ; create mosaic thread C3/4310: A5 09 LDA $09 C3/4312: 89 10 BIT #$10 C3/4314: D0 06 BNE $431C C3/4316: A5 09 LDA $09 C3/4318: 89 80 BIT #$80 C3/431A: F0 09 BEQ $4325 C3/431C: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/431F: A9 0D LDA #$0D C3/4321: 85 27 STA $27 C3/4323: 64 26 STZ $26 C3/4325: 60 RTS C3/4326: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/4329: 20 39 0F JSR $0F39 C3/432C: 20 D0 43 JSR $43D0 C3/432F: 20 D8 43 JSR $43D8 C3/4332: 20 E1 43 JSR $43E1 C3/4335: 4C EA 43 JMP $43EA ; [ Menu State $62: ] C3/4338: 20 02 46 JSR $4602 C3/433B: A5 08 LDA $08 C3/433D: 89 80 BIT #$80 C3/433F: F0 18 BEQ $4359 C3/4341: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/4344: A5 4B LDA $4B C3/4346: 85 28 STA $28 C3/4348: 20 06 2F JSR $2F06 C3/434B: A9 63 LDA #$63 C3/434D: 85 26 STA $26 C3/434F: 7B TDC C3/4350: A5 64 LDA $64 C3/4352: 0A ASL C3/4353: AA TAX C3/4354: B4 6D LDY $6D,X C3/4356: 84 67 STY $67 C3/4358: 60 RTS C3/4359: A5 09 LDA $09 C3/435B: 89 80 BIT #$80 C3/435D: F0 16 BEQ $4375 C3/435F: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/4362: 20 B6 45 JSR $45B6 C3/4365: A5 5E LDA $5E C3/4367: 85 4E STA $4E C3/4369: 20 BF 45 JSR $45BF C3/436C: A5 4E LDA $4E C3/436E: 85 5E STA $5E C3/4370: A9 48 LDA #$48 C3/4372: 85 26 STA $26 C3/4374: 60 RTS C3/4375: 60 RTS ; [ Menu State $63: ] C3/4376: 20 02 46 JSR $4602 C3/4379: A5 08 LDA $08 C3/437B: 89 80 BIT #$80 C3/437D: F0 3E BEQ $43BD C3/437F: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/4382: 7B TDC C3/4383: A5 4B LDA $4B C3/4385: C2 21 REP #$21 C3/4387: 65 67 ADC $67 C3/4389: A8 TAY C3/438A: 5A PHY C3/438B: E2 20 SEP #$20 C3/438D: B9 16 00 LDA $0016,Y C3/4390: 85 E0 STA $E0 C3/4392: 7B TDC C3/4393: A5 28 LDA $28 C3/4395: C2 21 REP #$21 C3/4397: 65 67 ADC $67 C3/4399: A8 TAY C3/439A: E2 20 SEP #$20 C3/439C: B9 16 00 LDA $0016,Y C3/439F: 85 E1 STA $E1 C3/43A1: A5 E0 LDA $E0 C3/43A3: 99 16 00 STA $0016,Y C3/43A6: 7A PLY C3/43A7: A5 E1 LDA $E1 C3/43A9: 99 16 00 STA $0016,Y C3/43AC: 20 B4 44 JSR $44B4 C3/43AF: 20 ED 44 JSR $44ED C3/43B2: 20 26 45 JSR $4526 C3/43B5: 20 5F 45 JSR $455F C3/43B8: 20 39 0F JSR $0F39 C3/43BB: 80 09 BRA $43C6 C3/43BD: A5 09 LDA $09 C3/43BF: 89 80 BIT #$80 C3/43C1: F0 0C BEQ $43CF C3/43C3: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/43C6: A9 05 LDA #$05 C3/43C8: 14 46 TRB $46 C3/43CA: A9 62 LDA #$62 C3/43CC: 85 26 STA $26 C3/43CE: 60 RTS C3/43CF: 60 RTS C3/43D0: A6 00 LDX $00 C3/43D2: 20 F3 43 JSR $43F3 C3/43D5: 4C B4 44 JMP $44B4 C3/43D8: A2 02 00 LDX #$0002 C3/43DB: 20 F3 43 JSR $43F3 C3/43DE: 4C ED 44 JMP $44ED C3/43E1: A2 04 00 LDX #$0004 C3/43E4: 20 F3 43 JSR $43F3 C3/43E7: 4C 26 45 JMP $4526 C3/43EA: A2 06 00 LDX #$0006 C3/43ED: 20 F3 43 JSR $43F3 C3/43F0: 4C 5F 45 JMP $455F C3/43F3: B4 6D LDY $6D,X C3/43F5: F0 33 BEQ $442A C3/43F7: 7B TDC C3/43F8: B9 00 00 LDA $0000,Y C3/43FB: C9 0C CMP #$0C C3/43FD: F0 2C BEQ $442B C3/43FF: 8D 02 42 STA $4202 C3/4402: A9 16 LDA #$16 C3/4404: 8D 03 42 STA $4203 C3/4407: EA NOP C3/4408: EA NOP C3/4409: EA NOP C3/440A: EA NOP C3/440B: AE 16 42 LDX $4216 C3/440E: BF A2 7C ED LDA $ED7CA2,X ; character properties (battle commands) C3/4412: 99 16 00 STA $0016,Y C3/4415: BF A3 7C ED LDA $ED7CA3,X C3/4419: 99 17 00 STA $0017,Y C3/441C: BF A4 7C ED LDA $ED7CA4,X C3/4420: 99 18 00 STA $0018,Y C3/4423: BF A5 7C ED LDA $ED7CA5,X C3/4427: 99 19 00 STA $0019,Y C3/442A: 60 RTS C3/442B: 60 RTS C3/442C: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/442F: A0 90 44 LDY #$4490 C3/4432: 20 41 03 JSR $0341 ; draw window C3/4435: A0 94 44 LDY #$4494 C3/4438: 20 41 03 JSR $0341 ; draw window C3/443B: A0 98 44 LDY #$4498 C3/443E: 20 41 03 JSR $0341 ; draw window C3/4441: A0 9C 44 LDY #$449C C3/4444: 20 41 03 JSR $0341 ; draw window C3/4447: A0 A0 44 LDY #$44A0 C3/444A: 20 41 03 JSR $0341 ; draw window C3/444D: A0 A4 44 LDY #$44A4 C3/4450: 20 41 03 JSR $0341 ; draw window C3/4453: A0 A8 44 LDY #$44A8 C3/4456: 20 41 03 JSR $0341 ; draw window C3/4459: A0 AC 44 LDY #$44AC C3/445C: 20 41 03 JSR $0341 ; draw window C3/445F: A0 B0 44 LDY #$44B0 C3/4462: 20 41 03 JSR $0341 ; draw window C3/4465: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/4468: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/446B: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/446E: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/4471: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/4474: A9 30 LDA #$30 C3/4476: 85 29 STA $29 C3/4478: A0 F1 4A LDY #$4AF1 C3/447B: 20 F9 02 JSR $02F9 ; draw positioned text C3/447E: 20 B4 44 JSR $44B4 C3/4481: 20 ED 44 JSR $44ED C3/4484: 20 26 45 JSR $4526 C3/4487: 20 5F 45 JSR $455F C3/448A: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/448D: 4C 6E 0E JMP $0E6E ; copy bg3 data to vram (top screens) C3/4490: .DB $1F, $59, $12, $04 C3/4494: .DB $9F, $5A, $12, $04 C3/4498: .DB $1F, $5C, $12, $04 C3/449C: .DB $9F, $5D, $12, $04 C3/44A0: .DB $0B, $59, $08, $04 C3/44A4: .DB $8B, $5A, $08, $04 C3/44A8: .DB $0B, $5C, $08, $04 C3/44AC: .DB $8B, $5D, $08, $04 C3/44B0: .DB $8B, $58, $08, $01 C3/44B4: A5 69 LDA $69 C3/44B6: 30 34 BMI $44EC C3/44B8: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/44BC: A6 6D LDX $6D C3/44BE: 86 67 STX $67 C3/44C0: A9 30 LDA #$30 C3/44C2: 85 29 STA $29 C3/44C4: A0 8F 79 LDY #$798F C3/44C7: 20 CF 34 JSR $34CF ; draw character name C3/44CA: A9 20 LDA #$20 C3/44CC: 85 29 STA $29 C3/44CE: A0 0F 7A LDY #$7A0F C3/44D1: 20 E5 34 JSR $34E5 ; draw character title (dummy) C3/44D4: A0 AD 79 LDY #$79AD C3/44D7: 20 98 45 JSR $4598 C3/44DA: A0 23 7A LDY #$7A23 C3/44DD: 20 9E 45 JSR $459E C3/44E0: A0 37 7A LDY #$7A37 C3/44E3: 20 A5 45 JSR $45A5 C3/44E6: A0 AD 7A LDY #$7AAD C3/44E9: 20 AD 45 JSR $45AD C3/44EC: 60 RTS C3/44ED: A5 6A LDA $6A C3/44EF: 30 34 BMI $4525 C3/44F1: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/44F5: A6 6F LDX $6F C3/44F7: 86 67 STX $67 C3/44F9: A9 30 LDA #$30 C3/44FB: 85 29 STA $29 C3/44FD: A0 4F 7B LDY #$7B4F C3/4500: 20 CF 34 JSR $34CF ; draw character name C3/4503: A9 20 LDA #$20 C3/4505: 85 29 STA $29 C3/4507: A0 CF 7B LDY #$7BCF C3/450A: 20 E5 34 JSR $34E5 ; draw character title (dummy) C3/450D: A0 6D 7B LDY #$7B6D C3/4510: 20 98 45 JSR $4598 C3/4513: A0 E3 7B LDY #$7BE3 C3/4516: 20 9E 45 JSR $459E C3/4519: A0 F7 7B LDY #$7BF7 C3/451C: 20 A5 45 JSR $45A5 C3/451F: A0 6D 7C LDY #$7C6D C3/4522: 20 AD 45 JSR $45AD C3/4525: 60 RTS C3/4526: A5 6B LDA $6B C3/4528: 30 34 BMI $455E C3/452A: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/452E: A6 71 LDX $71 C3/4530: 86 67 STX $67 C3/4532: A9 30 LDA #$30 C3/4534: 85 29 STA $29 C3/4536: A0 0F 7D LDY #$7D0F C3/4539: 20 CF 34 JSR $34CF ; draw character name C3/453C: A9 20 LDA #$20 C3/453E: 85 29 STA $29 C3/4540: A0 8F 7D LDY #$7D8F C3/4543: 20 E5 34 JSR $34E5 ; draw character title (dummy) C3/4546: A0 2D 7D LDY #$7D2D C3/4549: 20 98 45 JSR $4598 C3/454C: A0 A3 7D LDY #$7DA3 C3/454F: 20 9E 45 JSR $459E C3/4552: A0 B7 7D LDY #$7DB7 C3/4555: 20 A5 45 JSR $45A5 C3/4558: A0 2D 7E LDY #$7E2D C3/455B: 20 AD 45 JSR $45AD C3/455E: 60 RTS C3/455F: A5 6C LDA $6C C3/4561: 30 34 BMI $4597 C3/4563: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/4567: A6 73 LDX $73 C3/4569: 86 67 STX $67 C3/456B: A9 30 LDA #$30 C3/456D: 85 29 STA $29 C3/456F: A0 CF 7E LDY #$7ECF C3/4572: 20 CF 34 JSR $34CF ; draw character name C3/4575: A9 20 LDA #$20 C3/4577: 85 29 STA $29 C3/4579: A0 4F 7F LDY #$7F4F C3/457C: 20 E5 34 JSR $34E5 ; draw character title (dummy) C3/457F: A0 ED 7E LDY #$7EED C3/4582: 20 98 45 JSR $4598 C3/4585: A0 63 7F LDY #$7F63 C3/4588: 20 9E 45 JSR $459E C3/458B: A0 77 7F LDY #$7F77 C3/458E: 20 A5 45 JSR $45A5 C3/4591: A0 ED 7F LDY #$7FED C3/4594: 20 AD 45 JSR $45AD C3/4597: 60 RTS C3/4598: 20 19 35 JSR $3519 ; init positioned text buffer C3/459B: 4C E1 5E JMP $5EE1 C3/459E: 20 19 35 JSR $3519 ; init positioned text buffer C3/45A1: C8 INY C3/45A2: 4C E1 5E JMP $5EE1 C3/45A5: 20 19 35 JSR $3519 ; init positioned text buffer C3/45A8: C8 INY C3/45A9: C8 INY C3/45AA: 4C E1 5E JMP $5EE1 C3/45AD: 20 19 35 JSR $3519 ; init positioned text buffer C3/45B0: C8 INY C3/45B1: C8 INY C3/45B2: C8 INY C3/45B3: 4C E1 5E JMP $5EE1 ; [ Init Cursor (battle command arrange, char select) ] C3/45B6: A0 C5 45 LDY #$45C5 C3/45B9: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (battle command arrange, char select) ] C3/45BC: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/45BF: A0 CA 45 LDY #$45CA C3/45C2: 4C 40 06 JMP $0640 ; update cursor position (single page) ; cursor data (battle command arrange, char select) C3/45C5: .DB $80, $00, $00, $01, $05 ; cursor positions (battle command arrange, char select) C3/45CA: .DB $08, $20 .DB $08, $50 .DB $08, $80 .DB $08, $B0 .DB $08, $0C ; [ Init Cursor (battle command arrange, command select/move) ] C3/45D4: A0 4A 46 LDY #$464A C3/45D7: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (battle command arrange, command select/move) ] ; initial update only, doesn't update cursor movement C3/45DA: 7B TDC C3/45DB: A5 64 LDA $64 ; character slot C3/45DD: 0A ASL C3/45DE: AA TAX C3/45DF: 7C E2 45 JMP ($45E2,X) C3/45E2: .DW $45EA, $45F0, $45F6, $45FC ; character slot 1 C3/45EA: A0 4F 46 LDY #$464F C3/45ED: 4C 40 06 JMP $0640 ; update cursor position (single page) ; character slot 2 C3/45F0: A0 57 46 LDY #$4657 C3/45F3: 4C 40 06 JMP $0640 ; update cursor position (single page) ; character slot 3 C3/45F6: A0 5F 46 LDY #$465F C3/45F9: 4C 40 06 JMP $0640 ; update cursor position (single page) ; character slot 4 C3/45FC: A0 67 46 LDY #$4667 C3/45FF: 4C 40 06 JMP $0640 ; update cursor position (single page) ; [ Update Cursor (battle command arrange, command select/move) ] C3/4602: 20 15 46 JSR $4615 ; update cursor movement C3/4605: 7B TDC C3/4606: A5 64 LDA $64 ; character slot C3/4608: 0A ASL C3/4609: AA TAX C3/460A: 7C 0D 46 JMP ($460D,X) C3/460D: .DW $45EA, $45F0, $45F6, $45FC ; [ Update Cursor Movement (battle command arrange, command select/move) ] C3/4615: 64 4D STZ $4D C3/4617: A5 0B LDA $0B C3/4619: 89 08 BIT #$08 C3/461B: F0 05 BEQ $4622 C3/461D: 64 4E STZ $4E C3/461F: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/4622: A5 0B LDA $0B C3/4624: 89 04 BIT #$04 C3/4626: F0 07 BEQ $462F C3/4628: A9 03 LDA #$03 C3/462A: 85 4E STA $4E C3/462C: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/462F: A5 0B LDA $0B C3/4631: 89 02 BIT #$02 C3/4633: F0 07 BEQ $463C C3/4635: A9 01 LDA #$01 C3/4637: 85 4E STA $4E C3/4639: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/463C: A5 0B LDA $0B C3/463E: 89 01 BIT #$01 C3/4640: F0 07 BEQ $4649 C3/4642: A9 02 LDA #$02 C3/4644: 85 4E STA $4E C3/4646: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/4649: 60 RTS ; cursor data (battle command arrange, command select/move) C3/464A: .DB $81, $00, $00, $01, $04 ; cursor positions (battle command arrange, 4 positions per character slot) C3/464F: .DB $80, $20, $58, $2C, $A8, $2C, $80, $38 C3/4657: .DB $80, $50, $58, $5C, $A8, $5C, $80, $68 C3/465F: .DB $80, $80, $58, $8C, $A8, $8C, $80, $98 C3/4667: .DB $80, $B0, $58, $BC, $A8, $BC, $80, $C8 ; [ Init BG3 Horizontal Scroll HDMA (battle command arrange) ] C3/466F: A9 02 LDA #$02 ; HDMA channel #5 (one address, write twice) C3/4671: 8D 50 43 STA $4350 C3/4674: A9 12 LDA #$12 ; VRAM destination = $2112 (bg3 vertical scroll) C3/4676: 8D 51 43 STA $4351 C3/4679: A0 8E 46 LDY #$468E ; source = $C3468E C3/467C: 8C 52 43 STY $4352 C3/467F: A9 C3 LDA #$C3 C3/4681: 8D 54 43 STA $4354 C3/4684: A9 C3 LDA #$C3 C3/4686: 8D 57 43 STA $4357 C3/4689: A9 20 LDA #$20 ; enable HDMA C3/468B: 04 43 TSB $43 C3/468D: 60 RTS ; bg3 vertical scroll HDMA table (battle command arrange) C3/468E: .DB $1F \ .DW $0000 .DB $0C \ .DW $0004 .DB $0C \ .DW $0008 .DB $24 \ .DW $000C .DB $0C \ .DW $0010 .DB $24 \ .DW $0014 .DB $0C \ .DW $0018 .DB $24 \ .DW $001C .DB $0C \ .DW $0020 .DB $24 \ .DW $0024 .DB $00 ; [ Menu State $49-$4B: ] C3/46AD: 20 2F 35 JSR $352F ; disable interrupts C3/46B0: 20 F5 46 JSR $46F5 C3/46B3: 20 A8 48 JSR $48A8 C3/46B6: 20 D7 48 JSR $48D7 C3/46B9: 20 E0 48 JSR $48E0 C3/46BC: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/46BF: A9 01 LDA #$01 C3/46C1: 85 26 STA $26 C3/46C3: A9 4C LDA #$4C C3/46C5: 85 27 STA $27 C3/46C7: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $4C: ] C3/46CA: 20 39 0F JSR $0F39 C3/46CD: 20 DD 48 JSR $48DD C3/46D0: A5 09 LDA $09 C3/46D2: 89 10 BIT #$10 C3/46D4: D0 06 BNE $46DC C3/46D6: A5 09 LDA $09 C3/46D8: 89 80 BIT #$80 C3/46DA: F0 0A BEQ $46E6 C3/46DC: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/46DF: A9 0D LDA #$0D C3/46E1: 85 27 STA $27 C3/46E3: 64 26 STZ $26 C3/46E5: 60 RTS C3/46E6: A5 0B LDA $0B C3/46E8: 89 01 BIT #$01 C3/46EA: D0 06 BNE $46F2 C3/46EC: A5 0B LDA $0B C3/46EE: 89 02 BIT #$02 C3/46F0: F0 02 BEQ $46F4 C3/46F2: 80 23 BRA $4717 C3/46F4: 60 RTS C3/46F5: A0 F3 48 LDY #$48F3 C3/46F8: 20 41 03 JSR $0341 ; draw window C3/46FB: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/46FE: A9 30 LDA #$30 C3/4700: 85 29 STA $29 C3/4702: A0 FB 4A LDY #$4AFB C3/4705: 20 F9 02 JSR $02F9 ; draw positioned text C3/4708: 20 B4 47 JSR $47B4 C3/470B: 20 F1 47 JSR $47F1 C3/470E: 20 2E 48 JSR $482E C3/4711: 20 6B 48 JSR $486B C3/4714: 4C 6E 0E JMP $0E6E ; copy bg3 data to vram (top screens) C3/4717: 7B TDC C3/4718: A5 4B LDA $4B C3/471A: AA TAX C3/471B: B5 69 LDA $69,X C3/471D: 30 0A BMI $4729 C3/471F: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/4722: A5 4B LDA $4B C3/4724: 0A ASL C3/4725: AA TAX C3/4726: 7C 2A 47 JMP ($472A,X) C3/4729: 60 RTS C3/472A: .DW $4732, $4751, $4772, $4793 C3/4732: AD 4F 1D LDA $1D4F C3/4735: 29 01 AND #$01 C3/4737: A5 0B LDA $0B C3/4739: 89 01 BIT #$01 C3/473B: F0 0A BEQ $4747 C3/473D: A9 01 LDA #$01 C3/473F: 0D 4F 1D ORA $1D4F C3/4742: 8D 4F 1D STA $1D4F C3/4745: 80 6D BRA $47B4 C3/4747: AD 4F 1D LDA $1D4F C3/474A: 29 FE AND #$FE C3/474C: 8D 4F 1D STA $1D4F C3/474F: 80 63 BRA $47B4 C3/4751: AD 4F 1D LDA $1D4F C3/4754: 29 02 AND #$02 C3/4756: A5 0B LDA $0B C3/4758: 89 01 BIT #$01 C3/475A: F0 0B BEQ $4767 C3/475C: A9 02 LDA #$02 C3/475E: 0D 4F 1D ORA $1D4F C3/4761: 8D 4F 1D STA $1D4F C3/4764: 4C F1 47 JMP $47F1 C3/4767: AD 4F 1D LDA $1D4F C3/476A: 29 FD AND #$FD C3/476C: 8D 4F 1D STA $1D4F C3/476F: 4C F1 47 JMP $47F1 C3/4772: AD 4F 1D LDA $1D4F C3/4775: 29 04 AND #$04 C3/4777: A5 0B LDA $0B C3/4779: 89 01 BIT #$01 C3/477B: F0 0B BEQ $4788 C3/477D: A9 04 LDA #$04 C3/477F: 0D 4F 1D ORA $1D4F C3/4782: 8D 4F 1D STA $1D4F C3/4785: 4C 2E 48 JMP $482E C3/4788: AD 4F 1D LDA $1D4F C3/478B: 29 FB AND #$FB C3/478D: 8D 4F 1D STA $1D4F C3/4790: 4C 2E 48 JMP $482E C3/4793: AD 4F 1D LDA $1D4F C3/4796: 29 08 AND #$08 C3/4798: A5 0B LDA $0B C3/479A: 89 01 BIT #$01 C3/479C: F0 0B BEQ $47A9 C3/479E: A9 08 LDA #$08 C3/47A0: 0D 4F 1D ORA $1D4F C3/47A3: 8D 4F 1D STA $1D4F C3/47A6: 4C 6B 48 JMP $486B C3/47A9: AD 4F 1D LDA $1D4F C3/47AC: 29 F7 AND #$F7 C3/47AE: 8D 4F 1D STA $1D4F C3/47B1: 4C 6B 48 JMP $486B C3/47B4: A5 69 LDA $69 C3/47B6: 30 38 BMI $47F0 C3/47B8: A6 6D LDX $6D C3/47BA: 86 67 STX $67 C3/47BC: A9 20 LDA #$20 C3/47BE: 85 29 STA $29 C3/47C0: A0 CF 7B LDY #$7BCF C3/47C3: 20 CF 34 JSR $34CF ; draw character name C3/47C6: AD 4F 1D LDA $1D4F C3/47C9: 29 01 AND #$01 C3/47CB: F0 09 BEQ $47D6 C3/47CD: A9 24 LDA #$24 C3/47CF: 20 DF 47 JSR $47DF C3/47D2: A9 20 LDA #$20 C3/47D4: 80 12 BRA $47E8 C3/47D6: A9 20 LDA #$20 C3/47D8: 20 DF 47 JSR $47DF C3/47DB: A9 24 LDA #$24 C3/47DD: 80 09 BRA $47E8 C3/47DF: 85 29 STA $29 C3/47E1: A0 08 4B LDY #$4B08 C3/47E4: 20 F9 02 JSR $02F9 ; draw positioned text C3/47E7: 60 RTS C3/47E8: 85 29 STA $29 C3/47EA: A0 11 4B LDY #$4B11 C3/47ED: 20 F9 02 JSR $02F9 ; draw positioned text C3/47F0: 60 RTS C3/47F1: A5 6A LDA $6A C3/47F3: 30 38 BMI $482D C3/47F5: A6 6F LDX $6F C3/47F7: 86 67 STX $67 C3/47F9: A9 20 LDA #$20 C3/47FB: 85 29 STA $29 C3/47FD: A0 4F 7C LDY #$7C4F C3/4800: 20 CF 34 JSR $34CF ; draw character name C3/4803: AD 4F 1D LDA $1D4F C3/4806: 29 02 AND #$02 C3/4808: F0 09 BEQ $4813 C3/480A: A9 24 LDA #$24 C3/480C: 20 1C 48 JSR $481C C3/480F: A9 20 LDA #$20 C3/4811: 80 12 BRA $4825 C3/4813: A9 20 LDA #$20 C3/4815: 20 1C 48 JSR $481C C3/4818: A9 24 LDA #$24 C3/481A: 80 09 BRA $4825 C3/481C: 85 29 STA $29 C3/481E: A0 1A 4B LDY #$4B1A C3/4821: 20 F9 02 JSR $02F9 ; draw positioned text C3/4824: 60 RTS C3/4825: 85 29 STA $29 C3/4827: A0 23 4B LDY #$4B23 C3/482A: 20 F9 02 JSR $02F9 ; draw positioned text C3/482D: 60 RTS C3/482E: A5 6B LDA $6B C3/4830: 30 38 BMI $486A C3/4832: A6 71 LDX $71 C3/4834: 86 67 STX $67 C3/4836: A9 20 LDA #$20 C3/4838: 85 29 STA $29 C3/483A: A0 CF 7C LDY #$7CCF C3/483D: 20 CF 34 JSR $34CF ; draw character name C3/4840: AD 4F 1D LDA $1D4F C3/4843: 29 04 AND #$04 C3/4845: F0 09 BEQ $4850 C3/4847: A9 24 LDA #$24 C3/4849: 20 59 48 JSR $4859 C3/484C: A9 20 LDA #$20 C3/484E: 80 12 BRA $4862 C3/4850: A9 20 LDA #$20 C3/4852: 20 59 48 JSR $4859 C3/4855: A9 24 LDA #$24 C3/4857: 80 09 BRA $4862 C3/4859: 85 29 STA $29 C3/485B: A0 2C 4B LDY #$4B2C C3/485E: 20 F9 02 JSR $02F9 ; draw positioned text C3/4861: 60 RTS C3/4862: 85 29 STA $29 C3/4864: A0 35 4B LDY #$4B35 C3/4867: 20 F9 02 JSR $02F9 ; draw positioned text C3/486A: 60 RTS C3/486B: A5 6C LDA $6C C3/486D: 30 38 BMI $48A7 C3/486F: A6 73 LDX $73 C3/4871: 86 67 STX $67 C3/4873: A9 20 LDA #$20 C3/4875: 85 29 STA $29 C3/4877: A0 4F 7D LDY #$7D4F C3/487A: 20 CF 34 JSR $34CF ; draw character name C3/487D: AD 4F 1D LDA $1D4F C3/4880: 29 08 AND #$08 C3/4882: F0 09 BEQ $488D C3/4884: A9 24 LDA #$24 C3/4886: 20 96 48 JSR $4896 C3/4889: A9 20 LDA #$20 C3/488B: 80 12 BRA $489F C3/488D: A9 20 LDA #$20 C3/488F: 20 96 48 JSR $4896 C3/4892: A9 24 LDA #$24 C3/4894: 80 09 BRA $489F C3/4896: 85 29 STA $29 C3/4898: A0 3E 4B LDY #$4B3E C3/489B: 20 F9 02 JSR $02F9 ; draw positioned text C3/489E: 60 RTS C3/489F: 85 29 STA $29 C3/48A1: A0 47 4B LDY #$4B47 C3/48A4: 20 F9 02 JSR $02F9 ; draw positioned text C3/48A7: 60 RTS C3/48A8: A9 01 LDA #$01 C3/48AA: 8D 50 43 STA $4350 C3/48AD: A9 28 LDA #$28 C3/48AF: 8D 51 43 STA $4351 C3/48B2: A0 C7 48 LDY #$48C7 C3/48B5: 8C 52 43 STY $4352 C3/48B8: A9 C3 LDA #$C3 C3/48BA: 8D 54 43 STA $4354 C3/48BD: A9 C3 LDA #$C3 C3/48BF: 8D 57 43 STA $4357 C3/48C2: A9 20 LDA #$20 C3/48C4: 04 43 TSB $43 C3/48C6: 60 RTS C3/48C7: .DB $27, $FF, $FF, $30, $08, $F7, $68, $FF, $FF, $10, $08, $F7, $10, $FF, $FF, $00 C3/48D7: A0 E6 48 LDY #$48E6 C3/48DA: 4C FE 05 JMP $05FE ; init cursor C3/48DD: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/48E0: A0 EB 48 LDY #$48EB C3/48E3: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/48E6: .DB $80, $00, $00, $01, $04 C3/48EB: .DB $50, $7B, $50, $8B, $50, $9B, $50, $AB, $0B, $5B, $1C, $0B ; [ Clear Saved Cursor Positions ] C3/48F7: 7B TDC C3/48F8: AA TAX C3/48F9: 9D 2B 02 STA $022B,X ; clear saved cursor positions C3/48FC: E8 INX C3/48FD: E0 1F 00 CPX #$001F C3/4900: D0 F7 BNE $48F9 C3/4902: 60 RTS C3/4903: .DW $490B, $498A, $491F, $4926 C3/490B: .DB $8F, $3D, $82, $A8, $A7, $AD, $AB, $A8, $A5, $A5, $9E, $AB, $00 C3/4918: .DB $B5, $39, $96, $9A, $A2, $AD, $00 C3/491F: .DB $65, $3A, $85, $9A, $AC, $AD, $00 C3/4926: .DB $75, $3A, $92, $A5, $A8, $B0, $00 C3/492D: .DB $35, $3B, $92, $A1, $A8, $AB, $AD, $00 C3/4935: .DB $A5, $3B, $8E, $A7, $00 C3/493A: .DB $B5, $3B, $8E, $9F, $9F, $00 C3/4940: .DB $25, $3C, $92, $AD, $9E, $AB, $9E, $A8, $00 C3/4949: .DB $35, $3C, $8C, $A8, $A7, $A8, $00 C3/4950: .DB $B5, $3C, $8C, $9E, $A6, $A8, $AB, $B2, $00 C3/4959: .DB $25, $3D, $8E, $A9, $AD, $A2, $A6, $AE, $A6, $00 C3/4963: .DB $B5, $3D, $8C, $AE, $A5, $AD, $A2, $A9, $A5, $9E, $00 C3/496E: .DB $25, $3A, $B5, $FF, $B6, $FF, $B7, $FF, $B8, $FF, $B9, $FF, $BA, $00 C3/497C: .DB $A5, $3A, $B5, $FF, $B6, $FF, $B7, $FF, $B8, $FF, $B9, $FF, $BA, $00 C3/498A: .DB $8F, $3C, $82, $AE, $AB, $AC, $A8, $AB, $00 C3/4993: .DW $49AA, $49B5, $49C1, $49CD, $49D7, $49DF, $49E7 C3/49A1: .DB $F9, $78, $82, $A8, $A7, $9F, $A2, $A0, $00 C3/49AA: .DB $8F, $39, $81, $9A, $AD, $C5, $8C, $A8, $9D, $9E, $00 C3/49B5: .DB $0F, $3A, $81, $9A, $AD, $C5, $92, $A9, $9E, $9E, $9D, $00 C3/49C1: .DB $8F, $3A, $8C, $AC, $A0, $C5, $92, $A9, $9E, $9E, $9D, $00 C3/49CD: .DB $0F, $3B, $82, $A6, $9D, $C5, $92, $9E, $AD, $00 C3/49D7: .DB $8F, $3B, $86, $9A, $AE, $A0, $9E, $00 C3/49DF: .DB $0F, $3C, $92, $A8, $AE, $A7, $9D, $00 C3/49E7: .DB $0F, $3D, $91, $9E, $9E, $AA, $AE, $A2, $A9, $00 C3/49F1: .DB $A5, $39, $80, $9C, $AD, $A2, $AF, $9E, $00 C3/49FA: .DB $25, $3B, $96, $A2, $A7, $9D, $A8, $B0, $00 C3/4A03: .DB $A5, $3C, $91, $9E, $AC, $9E, $AD, $00 C3/4A0B: .DB $35, $3D, $84, $A6, $A9, $AD, $B2, $00 C3/4A13: .DB $A5, $3D, $92, $A2, $A7, $A0, $A5, $9E, $00 C3/4A1C: .DW $4A34, $4A40, $4A49 ; color selector bars and "RGB" text C3/4A22: .DW $4A60, $4A6D, $4A7A, $4A87, $4A8B, $4A8F C3/4A2E: .DW $4A51, $4A56, $4A5B C3/4A34: .DB $8F, $41, $8C, $9A, $A0, $C5, $8E, $AB, $9D, $9E, $AB, $00 C3/4A40: .DB $8F, $43, $96, $A2, $A7, $9D, $A8, $B0, $00 C3/4A49: .DB $0F, $44, $82, $A8, $A5, $A8, $AB, $00 C3/4A51: .DB $25, $42, $80, $D3, $00 C3/4A56: .DB $A5, $42, $81, $D3, $00 C3/4A5B: .DB $25, $43, $82, $D3, $00 C3/4A60: .DB $2D, $45, $F9, $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F0, $FA, $00 C3/4A6D: .DB $AD, $45, $F9, $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F0, $FA, $00 C3/4A7A: .DB $2D, $46, $F9, $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F0, $FA, $00 C3/4A87: .DB $25, $45, $91, $00 C3/4A8B: .DB $A5, $45, $86, $00 C3/4A8F: .DB $25, $46, $81, $00 C3/4A93: .DB $A5, $43, $B5, $FF, $B6, $FF, $B7, $FF, $B8, $FF, $B9, $FF, $BA, $FF, $BB, $FF, $BC, $00 C3/4AA5: .DB $A5, $41, $B5, $FF, $B6, $FF, $B7, $FF, $B8, $FF, $B9, $FF, $BA, $00 C3/4AB3: .DB $25, $44, $85, $A8, $A7, $AD, $00 C3/4ABA: .DB $35, $44, $96, $A2, $A7, $9D, $A8, $B0, $00 C3/4AC3: .DB $FB, $43, $A5, $47, $79, $00 C3/4AC9: .DB $B5, $44, $01, $02, $03, $04, $05, $06, $07, $00 C3/4AD3: .DB $E8, $87, $9E, $9A, $A5, $A2, $A7, $A0, $FF, $FF C3/4ADE: .DB $E9, $80, $AD, $AD, $9A, $9C, $A4, $FF, $FF, $FF C3/4AE8: .DB $EA, $84, $9F, $9F, $9E, $9C, $AD, $FF, $FF, $FF C3/4AF1: .DB $CF, $78, $80, $AB, $AB, $9A, $A7, $A0, $9E, $00 C3/4AFB: .DB $4D, $7B, $82, $A8, $A7, $AD, $AB, $A8, $A5, $A5, $9E, $AB, $00 C3/4B08: .DB $21, $7C, $82, $A7, $AD, $A5, $AB, $B5, $00 C3/4B11: .DB $33, $7C, $82, $A7, $AD, $A5, $AB, $B6, $00 C3/4B1A: .DB $A1, $7C, $82, $A7, $AD, $A5, $AB, $B5, $00 C3/4B23: .DB $B3, $7C, $82, $A7, $AD, $A5, $AB, $B6, $00 C3/4B2C: .DB $21, $7D, $82, $A7, $AD, $A5, $AB, $B5, $00 C3/4B35: .DB $33, $7D, $82, $A7, $AD, $A5, $AB, $B6, $00 C3/4B3E: .DB $A1, $7D, $82, $A7, $AD, $A5, $AB, $B5, $00 C3/4B47: .DB $B3, $7D, $82, $A7, $AD, $A5, $AB, $B6, $00 ; -------------------------------------------[ Menu: Skills ]------------------------------------------- ; [ Init Cursor (skills) ] C3/4B50: A0 6F 4B LDY #$4B6F C3/4B53: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (skills) ] C3/4B56: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/4B59: A0 74 4B LDY #$4B74 C3/4B5C: 20 40 06 JSR $0640 ; update cursor position (single page) C3/4B5F: 7B TDC C3/4B60: A5 28 LDA $28 ; selected character C3/4B62: 0A ASL C3/4B63: AA TAX C3/4B64: A5 4D LDA $4D C3/4B66: 9D 36 02 STA $0236,X ; save cursor position C3/4B69: A5 4E LDA $4E C3/4B6B: 9D 37 02 STA $0237,X C3/4B6E: 60 RTS ; skills cursor data C3/4B6F: .DB $80, $00, $01, $01, $07 ; skills cursor positions C3/4B74: .DB $00, $14, $00, $24, $00, $44, $00, $54, $00, $64, $00, $74, $00, $84 ; [ Init Cursor (magic) ] C3/4B82: A0 A9 4B LDY #$4BA9 C3/4B85: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (magic) ] C3/4B88: 20 C7 81 JSR $81C7 ; update cursor movement (scrolling page) C3/4B8B: A0 AE 4B LDY #$4BAE C3/4B8E: 20 48 06 JSR $0648 ; update cursor position (scrolling page) C3/4B91: 7B TDC C3/4B92: A5 28 LDA $28 ; character slot C3/4B94: 0A ASL C3/4B95: AA TAX C3/4B96: A5 4F LDA $4F C3/4B98: 9D 3E 02 STA $023E,X ; save cursor position C3/4B9B: A5 50 LDA $50 C3/4B9D: 9D 3F 02 STA $023F,X C3/4BA0: A5 28 LDA $28 C3/4BA2: AA TAX C3/4BA3: A5 4A LDA $4A C3/4BA5: 9D 46 02 STA $0246,X C3/4BA8: 60 RTS ; magic cursor data C3/4BA9: .DB $01, $00, $00, $02, $08 ; magic cursor positions C3/4BAE: .DB $08, $74, $70, $74, $08, $80, $70, $80, $08, $8C, $70, $8C, $08, $98, $70, $98 C3/4BBE: .DB $08, $A4, $70, $A4, $08, $B0, $70, $B0, $08, $BC, $70, $BC, $08, $C8, $70, $C8 ; [ Init Cursor (blitz/swdtech) ] C3/4BCE: A0 DF 4B LDY #$4BDF C3/4BD1: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (blitz/swdtech) ] C3/4BD4: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/4BD7: A0 E4 4B LDY #$4BE4 C3/4BDA: 84 E7 STY $E7 C3/4BDC: 4C 40 06 JMP $0640 ; update cursor position (single page) ; blitz/swdtech cursor data C3/4BDF: .DB $00, $00, $00, $02, $04 ; blitz/swdtech cursor positions C3/4BE4: .DW $7408, $7478, $8C08, $8C78, $A408, $A478, $BC08, $BC78 ; [ Init Cursor (lore) ] C3/4BF4: A0 03 4C LDY #$4C03 C3/4BF7: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (lore) ] C3/4BFA: 20 C7 81 JSR $81C7 ; update cursor movement (scrolling page) C3/4BFD: A0 08 4C LDY #$4C08 C3/4C00: 4C 48 06 JMP $0648 ; update cursor position (scrolling page) ; lore cursor data C3/4C03: .DB $01, $00, $00, $01, $08 ; lore cursor positions C3/4C08: .DW $7408, $8008, $8C08, $9808, $A408, $B008, $BC08, $C808 ; [ Init Cursor (espers select) ] C3/4C18: A0 27 4C LDY #$4C27 C3/4C1B: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (espers select) ] C3/4C1E: 20 C7 81 JSR $81C7 ; update cursor movement (scrolling page) C3/4C21: A0 2C 4C LDY #$4C2C C3/4C24: 4C 48 06 JMP $0648 ; update cursor position (scrolling page) ; espers select cursor data C3/4C27: .DB $01, $00, $00, $02, $08 ; espers select cursor positions C3/4C2C: .DW $7408, $7478, $8008, $8078, $8C08, $8C78, $9808, $9878 C3/4C3C: .DW $A408, $A478, $B008, $B078, $BC08, $BC78, $C808, $C878 ; [ Init Cursor (rage) ] C3/4C4C: A0 5B 4C LDY #$4C5B C3/4C4F: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (rage) ] C3/4C52: 20 C7 81 JSR $81C7 ; update cursor movement (scrolling page) C3/4C55: A0 60 4C LDY #$4C60 C3/4C58: 4C 48 06 JMP $0648 ; update cursor position (scrolling page) ; rage cursor data C3/4C5B: .DB $01, $00, $00, $02, $08 ; rage cursor positions C3/4C60: .DW $7418, $7488, $8018, $8088, $8C18, $8C88, $9818, $9888 C3/4C70: .DW $A418, $A488, $B018, $B088, $BC18, $BC88, $C818, $C888 ; [ Init BG (skills) ] C3/4C80: 64 9E STZ $9E ; C3/4C82: 20 89 0F JSR $0F89 ; disable DMA 2 C3/4C85: A9 01 LDA #$01 C3/4C87: 8D 07 21 STA $2107 ; set bg1 size and base address C3/4C8A: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/4C8D: 20 2D 6A JSR $6A2D ; clear bg2 data (top right screen) C3/4C90: A0 A4 4D LDY #$4DA4 C3/4C93: 20 41 03 JSR $0341 ; draw window (spell list) C3/4C96: A0 A0 4D LDY #$4DA0 C3/4C99: 20 41 03 JSR $0341 ; draw window (character info) C3/4C9C: A0 A8 4D LDY #$4DA8 C3/4C9F: 20 41 03 JSR $0341 ; draw window (desription) C3/4CA2: A0 9C 4D LDY #$4D9C C3/4CA5: 20 41 03 JSR $0341 ; draw window (character skills list) C3/4CA8: A0 98 4D LDY #$4D98 C3/4CAB: 20 41 03 JSR $0341 ; draw window (espers/magic) C3/4CAE: A0 B0 4D LDY #$4DB0 C3/4CB1: 20 41 03 JSR $0341 ; draw window (spell list, top right screen) C3/4CB4: A0 AC 4D LDY #$4DAC C3/4CB7: 20 41 03 JSR $0341 ; draw window (character, top right screen) C3/4CBA: A0 B8 4D LDY #$4DB8 C3/4CBD: 20 41 03 JSR $0341 ; draw window (description, top right screen) C3/4CC0: A0 B4 4D LDY #$4DB4 C3/4CC3: 20 41 03 JSR $0341 ; draw window (MP cost, top right screen) C3/4CC6: 20 52 0E JSR $0E52 ; copy bg2 data to VRAM (top screens) C3/4CC9: 20 27 4D JSR $4D27 ; C3/4CCC: 20 28 0E JSR $0E28 ; copy bg1 data to VRAM (top screens) C3/4CCF: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/4CD2: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/4CD5: 20 46 6A JSR $6A46 ; clear bg3 data (bottom left screen) C3/4CD8: 20 62 A6 JSR $A662 C3/4CDB: 20 3D 4D JSR $4D3D C3/4CDE: A5 79 LDA $79 C3/4CE0: 85 29 STA $29 C3/4CE2: A0 48 5C LDY #$5C48 C3/4CE5: 20 F9 02 JSR $02F9 ; draw positioned text C3/4CE8: A5 7A LDA $7A C3/4CEA: 85 29 STA $29 C3/4CEC: A0 51 5C LDY #$5C51 C3/4CEF: 20 F9 02 JSR $02F9 ; draw positioned text C3/4CF2: A5 7B LDA $7B C3/4CF4: 85 29 STA $29 C3/4CF6: A0 59 5C LDY #$5C59 C3/4CF9: 20 F9 02 JSR $02F9 ; draw positioned text C3/4CFC: A5 7C LDA $7C C3/4CFE: 85 29 STA $29 C3/4D00: A0 63 5C LDY #$5C63 C3/4D03: 20 F9 02 JSR $02F9 ; draw positioned text C3/4D06: A5 7D LDA $7D C3/4D08: 85 29 STA $29 C3/4D0A: A0 6B 5C LDY #$5C6B C3/4D0D: 20 F9 02 JSR $02F9 ; draw positioned text C3/4D10: A5 7E LDA $7E C3/4D12: 85 29 STA $29 C3/4D14: A0 72 5C LDY #$5C72 C3/4D17: 20 F9 02 JSR $02F9 ; draw positioned text C3/4D1A: A5 7F LDA $7F C3/4D1C: 85 29 STA $29 C3/4D1E: A0 79 5C LDY #$5C79 C3/4D21: 20 F9 02 JSR $02F9 ; draw positioned text C3/4D24: 4C 6E 0E JMP $0E6E ; copy bg3 data to vram (top screens) ; [ ] C3/4D27: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/4D2A: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/4D2D: A9 24 LDA #$24 C3/4D2F: 85 29 STA $29 C3/4D31: A2 81 5C LDX #$5C81 C3/4D34: A0 06 00 LDY #$0006 C3/4D37: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/4D3A: 4C E5 4E JMP $4EE5 ; [ Update Skills Text Colors ] C3/4D3D: A9 24 LDA #$24 ; init all skills to gray (disabled) C3/4D3F: A6 00 LDX $00 C3/4D41: 95 79 STA $79,X C3/4D43: E8 INX C3/4D44: E0 07 00 CPX #$0007 C3/4D47: D0 F8 BNE $4D41 C3/4D49: 20 DD 4E JSR $4EDD C3/4D4C: 5A PHY C3/4D4D: A2 04 00 LDX #$0004 C3/4D50: DA PHX C3/4D51: A6 00 LDX $00 C3/4D53: B9 16 00 LDA $0016,Y ; battle command C3/4D56: DF 78 4D C3 CMP $C34D78,X C3/4D5A: D0 04 BNE $4D60 C3/4D5C: A9 20 LDA #$20 C3/4D5E: 95 79 STA $79,X C3/4D60: E8 INX C3/4D61: E0 07 00 CPX #$0007 C3/4D64: D0 ED BNE $4D53 C3/4D66: C8 INY C3/4D67: FA PLX C3/4D68: CA DEX C3/4D69: D0 E5 BNE $4D50 C3/4D6B: 7A PLY C3/4D6C: B9 00 00 LDA $0000,Y ; espers always disabled for character $0C (GOGO) C3/4D6F: C9 0C CMP #$0C C3/4D71: D0 04 BNE $4D77 C3/4D73: A9 24 LDA #$24 C3/4D75: 85 79 STA $79 C3/4D77: 60 RTS ; battle commands for enabling skills (esper, magic, swdtech, blitz, lore, rage, dance) C3/4D78: .DB $02, $02, $07, $0A, $0C, $10, $13 C3/4D7F: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/4D82: 20 1C 4F JSR $4F1C C3/4D85: 20 87 4F JSR $4F87 C3/4D88: A9 2C LDA #$2C C3/4D8A: 85 29 STA $29 C3/4D8C: A0 87 5C LDY #$5C87 C3/4D8F: 20 F9 02 JSR $02F9 ; draw positioned text C3/4D92: 20 AC 61 JSR $61AC C3/4D95: 4C 4D 0F JMP $0F4D ; window data for skills menu ; C3/4D98: bg2_0( 1, 1) [ 7x 4] ; C3/4D9C: bg2_0( 1, 7) [ 7x10] ; C3/4DA0: bg2_0( 1, 6) [28x 5] ; C3/4DA4: bg2_0( 1,13) [28x12] ; C3/4DA8: bg2_0( 1, 1) [28x 3] ; C3/4DAC: bg2_1( 1, 6) [28x 5] ; C3/4DB0: bg2_1( 1,13) [28x12] ; C3/4DB4: bg2_1(22, 4) [ 7x 1] ; C3/4DB8: bg2_1( 1, 1) [28x 3] C3/4D98: .DW $588B \ .DB $07, $04 C3/4D9C: .DW $5A0B \ .DB $07, $0A C3/4DA0: .DW $59CB \ .DB $1C, $05 C3/4DA4: .DW $5B8B \ .DB $1C, $0C C3/4DA8: .DW $588B \ .DB $1C, $03 C3/4DAC: .DW $61CB \ .DB $1C, $05 C3/4DB0: .DW $638B \ .DB $1C, $0C C3/4DB4: .DW $6175 \ .DB $07, $01 C3/4DB8: .DW $608B \ .DB $1C, $03 ; [ Init BG Scrolling HDMA (skills) ] C3/4DBC: A9 02 LDA #$02 ; HDMA #5 - one address, write twice, absolue addressing C3/4DBE: 8D 50 43 STA $4350 C3/4DC1: A9 12 LDA #$12 ; destination = $2112 (bg3 vertical scroll) C3/4DC3: 8D 51 43 STA $4351 C3/4DC6: A0 26 4E LDY #$4E26 ; source = $C34E26 C3/4DC9: 8C 52 43 STY $4352 C3/4DCC: A9 C3 LDA #$C3 C3/4DCE: 8D 54 43 STA $4354 C3/4DD1: A9 C3 LDA #$C3 C3/4DD3: 8D 57 43 STA $4357 C3/4DD6: A9 20 LDA #$20 ; enable HDMA channel #5 C3/4DD8: 04 43 TSB $43 C3/4DDA: 20 2D 4E JSR $4E2D ; load bg1 vertical scroll hdma table C3/4DDD: A6 00 LDX $00 C3/4DDF: BF 72 4E C3 LDA $C34E72,X ; load bg1 horizontal scroll hdma table C3/4DE3: 9F 09 9A 7E STA $7E9A09,X C3/4DE7: E8 INX C3/4DE8: E0 0D 00 CPX #$000D C3/4DEB: D0 F2 BNE $4DDF C3/4DED: A9 02 LDA #$02 ; HDMA #6 - one address, write twice, absolue addressing C3/4DEF: 8D 60 43 STA $4360 C3/4DF2: A9 0D LDA #$0D ; destination = $210D (bg1 horizontal scroll) C3/4DF4: 8D 61 43 STA $4361 C3/4DF7: A0 09 9A LDY #$9A09 ; source = $7E9A09 C3/4DFA: 8C 62 43 STY $4362 C3/4DFD: A9 7E LDA #$7E C3/4DFF: 8D 64 43 STA $4364 C3/4E02: A9 7E LDA #$7E C3/4E04: 8D 67 43 STA $4367 C3/4E07: A9 02 LDA #$02 ; HDMA #6 - one address, write twice, absolue addressing C3/4E09: 8D 70 43 STA $4370 C3/4E0C: A9 0E LDA #$0E ; destination = $210E (bg1 vertical scroll) C3/4E0E: 8D 71 43 STA $4371 C3/4E11: A0 49 98 LDY #$9849 ; source = $7E9849 C3/4E14: 8C 72 43 STY $4372 C3/4E17: A9 7E LDA #$7E C3/4E19: 8D 74 43 STA $4374 C3/4E1C: A9 7E LDA #$7E C3/4E1E: 8D 77 43 STA $4377 C3/4E21: A9 C0 LDA #$C0 ; enable HDMA channel #6 and #7 C3/4E23: 04 43 TSB $43 C3/4E25: 60 RTS ; bg3 vertical scroll hdma table (skills) C3/4E26: .DB $4F \ .DW $0002 .DB $40 \ .DW $0002 .DB $00 ; [ Load BG1 Vertical Scroll HDMA Table (skills) ] C3/4E2D: A6 00 LDX $00 C3/4E2F: BF 7F 4E C3 LDA $C34E7F,X C3/4E33: 9F 49 98 7E STA $7E9849,X C3/4E37: E8 INX C3/4E38: E0 12 00 CPX #$0012 C3/4E3B: D0 F2 BNE $4E2F C3/4E3D: BF 7F 4E C3 LDA $C34E7F,X C3/4E41: 9F 49 98 7E STA $7E9849,X C3/4E45: E8 INX C3/4E46: 7B TDC C3/4E47: A5 49 LDA $49 ; vertical scroll position C3/4E49: 0A ASL C3/4E4A: 0A ASL C3/4E4B: 0A ASL C3/4E4C: 0A ASL C3/4E4D: 29 FF AND #$FF C3/4E4F: C2 20 REP #$20 C3/4E51: 18 CLC C3/4E52: 7F 7F 4E C3 ADC $C34E7F,X C3/4E56: 9F 49 98 7E STA $7E9849,X C3/4E5A: E2 20 SEP #$20 C3/4E5C: E8 INX C3/4E5D: E8 INX C3/4E5E: E0 5A 00 CPX #$005A C3/4E61: D0 DA BNE $4E3D C3/4E63: BF 7F 4E C3 LDA $C34E7F,X C3/4E67: 9F 49 98 7E STA $7E9849,X C3/4E6B: E8 INX C3/4E6C: E0 5E 00 CPX #$005E C3/4E6F: D0 F2 BNE $4E63 C3/4E71: 60 RTS ; bg1 horizontal scroll hdma table (skills) C3/4E72: .DB $27 \ .DW $0100 .DB $48 \ .DW $0100 .DB $60 \ .DW $0000 .DB $1E \ .DW $0100 .DB $00 C3/4E7E: .DB $3F ; bg1 vertical scroll hdma table (skills) C3/4E7F: .DB $3F \ .DW $0000 .DB $0C \ .DW $0004 .DB $0C \ .DW $0008 .DB $0A \ .DW $000C .DB $01 \ .DW $000C .DB $0D \ .DW $0008 .DB $04 \ .DW $FF94 .DB $04 \ .DW $FF94 .DB $04 \ .DW $FF94 .DB $04 \ .DW $FF98 .DB $04 \ .DW $FF98 .DB $04 \ .DW $FF98 .DB $04 \ .DW $FF9C .DB $04 \ .DW $FF9C .DB $04 \ .DW $FF9C .DB $04 \ .DW $FFA0 .DB $04 \ .DW $FFA0 .DB $04 \ .DW $FFA0 .DB $04 \ .DW $FFA4 .DB $04 \ .DW $FFA4 .DB $04 \ .DW $FFA4 .DB $04 \ .DW $FFA8 .DB $04 \ .DW $FFA8 .DB $04 \ .DW $FFA8 .DB $04 \ .DW $FFAC .DB $04 \ .DW $FFAC .DB $04 \ .DW $FFAC .DB $04 \ .DW $FFB0 .DB $04 \ .DW $FFB0 .DB $04 \ .DW $FFB0 .DB $1E \ .DW $FF20 .DB $00 C3/4EDD: 7B TDC C3/4EDE: A5 28 LDA $28 C3/4EE0: 0A ASL C3/4EE1: AA TAX C3/4EE2: B4 6D LDY $6D,X C3/4EE4: 60 RTS C3/4EE5: 20 DD 4E JSR $4EDD C3/4EE8: 84 67 STY $67 C3/4EEA: 4C ED 4E JMP $4EED C3/4EED: A0 DD 42 LDY #$42DD C3/4EF0: A2 50 4F LDX #$4F50 C3/4EF3: 20 27 34 JSR $3427 C3/4EF6: A0 D1 5C LDY #$5CD1 C3/4EF9: 20 F9 02 JSR $02F9 ; draw positioned text C3/4EFC: A0 D5 5C LDY #$5CD5 C3/4EFF: 20 F9 02 JSR $02F9 ; draw positioned text C3/4F02: A2 12 4F LDX #$4F12 C3/4F05: 20 6C 0C JSR $0C6C ; draw hp/mp/lv number text C3/4F08: A9 20 LDA #$20 C3/4F0A: 85 29 STA $29 C3/4F0C: A0 1D 42 LDY #$421D C3/4F0F: 4C E6 34 JMP $34E6 ; draw equipped esper name ; ram addresses for LV/HP/MP text (skills) C3/4F12: .DW $4237, $42B3, $42BD, $4333, $433D C3/4F1C: A2 89 9D LDX #$9D89 C3/4F1F: 8E 81 21 STX $2181 C3/4F22: A2 36 00 LDX #$0036 C3/4F25: A9 FF LDA #$FF C3/4F27: 8D 80 21 STA $2180 C3/4F2A: CA DEX C3/4F2B: D0 FA BNE $4F27 C3/4F2D: 7B TDC C3/4F2E: A8 TAY C3/4F2F: AD 54 1D LDA $1D54 C3/4F32: 29 07 AND #$07 C3/4F34: 0A ASL C3/4F35: 0A ASL C3/4F36: AA TAX C3/4F37: DA PHX C3/4F38: BF 49 4F C3 LDA $C34F49,X C3/4F3C: C9 FF CMP #$FF C3/4F3E: F0 07 BEQ $4F47 C3/4F40: 20 61 4F JSR $4F61 C3/4F43: FA PLX C3/4F44: E8 INX C3/4F45: 80 F0 BRA $4F37 C3/4F47: FA PLX C3/4F48: 60 RTS C3/4F49: .DB $2D, $00, $18, $FF C3/4F4D: .DB $2D, $18, $00, $FF C3/4F51: .DB $00, $18, $2D, $FF C3/4F55: .DB $00, $2D, $18, $FF C3/4F59: .DB $18, $2D, $00, $FF C3/4F5D: .DB $18, $00, $2D, $FF C3/4F61: C9 00 CMP #$00 C3/4F63: F0 09 BEQ $4F6E C3/4F65: C9 2D CMP #$2D C3/4F67: F0 0A BEQ $4F73 C3/4F69: A2 15 00 LDX #$0015 C3/4F6C: 80 0A BRA $4F78 C3/4F6E: A2 18 00 LDX #$0018 C3/4F71: 80 05 BRA $4F78 C3/4F73: A2 09 00 LDX #$0009 C3/4F76: 80 00 BRA $4F78 C3/4F78: 86 E0 STX $E0 C3/4F7A: AA TAX C3/4F7B: BB TYX C3/4F7C: 9F 89 9D 7E STA $7E9D89,X C3/4F80: 1A INC C3/4F81: C8 INY C3/4F82: C6 E0 DEC $E0 C3/4F84: D0 F5 BNE $4F7B C3/4F86: 60 RTS C3/4F87: 20 F7 83 JSR $83F7 C3/4F8A: A0 08 00 LDY #$0008 C3/4F8D: 5A PHY C3/4F8E: 20 9E 4F JSR $4F9E C3/4F91: A5 E6 LDA $E6 C3/4F93: 1A INC C3/4F94: 1A INC C3/4F95: 29 1F AND #$1F C3/4F97: 85 E6 STA $E6 C3/4F99: 7A PLY C3/4F9A: 88 DEY C3/4F9B: D0 F0 BNE $4F8D C3/4F9D: 60 RTS C3/4F9E: 20 B5 4F JSR $4FB5 C3/4FA1: A2 03 00 LDX #$0003 C3/4FA4: 20 C4 4F JSR $4FC4 C3/4FA7: E6 E5 INC $E5 C3/4FA9: 20 B5 4F JSR $4FB5 C3/4FAC: A2 10 00 LDX #$0010 C3/4FAF: 20 C4 4F JSR $4FC4 C3/4FB2: E6 E5 INC $E5 C3/4FB4: 60 RTS C3/4FB5: A0 07 00 LDY #$0007 C3/4FB8: 84 EB STY $EB C3/4FBA: A0 67 F5 LDY #$F567 ; $E6F567 (spell names) C3/4FBD: 84 EF STY $EF C3/4FBF: A9 E6 LDA #$E6 C3/4FC1: 85 F1 STA $F1 C3/4FC3: 60 RTS C3/4FC4: A5 E6 LDA $E6 C3/4FC6: 1A INC C3/4FC7: 20 9F 80 JSR $809F C3/4FCA: C2 20 REP #$20 C3/4FCC: 8A TXA C3/4FCD: 8F 89 9E 7E STA $7E9E89 C3/4FD1: E2 20 SEP #$20 C3/4FD3: A5 9E LDA $9E C3/4FD5: F0 67 BEQ $503E C3/4FD7: 20 EC 50 JSR $50EC C3/4FDA: 20 4D 51 JSR $514D C3/4FDD: 20 EC 50 JSR $50EC C3/4FE0: C9 FF CMP #$FF C3/4FE2: F0 36 BEQ $501A C3/4FE4: 20 A2 50 JSR $50A2 C3/4FE7: C9 FF CMP #$FF C3/4FE9: D0 2F BNE $501A C3/4FEB: 20 EC 50 JSR $50EC C3/4FEE: 20 67 84 JSR $8467 C3/4FF1: A2 92 9E LDX #$9E92 C3/4FF4: 8E 81 21 STX $2181 C3/4FF7: A9 FF LDA #$FF C3/4FF9: 8D 80 21 STA $2180 C3/4FFC: 20 EC 50 JSR $50EC C3/4FFF: 20 0D 51 JSR $510D C3/5002: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5005: A5 F8 LDA $F8 C3/5007: 8D 80 21 STA $2180 C3/500A: A5 F9 LDA $F9 C3/500C: 8D 80 21 STA $2180 C3/500F: A9 FF LDA #$FF C3/5011: 8D 80 21 STA $2180 C3/5014: 9C 80 21 STZ $2180 C3/5017: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/501A: 7B TDC C3/501B: A5 E5 LDA $E5 C3/501D: AA TAX C3/501E: A9 FF LDA #$FF C3/5020: 9F 89 9D 7E STA $7E9D89,X C3/5024: 20 B9 51 JSR $51B9 C3/5027: A0 0B 00 LDY #$000B C3/502A: A2 8B 9E LDX #$9E8B C3/502D: 8E 81 21 STX $2181 C3/5030: A9 FF LDA #$FF C3/5032: 8D 80 21 STA $2180 C3/5035: 88 DEY C3/5036: D0 FA BNE $5032 C3/5038: 9C 80 21 STZ $2180 C3/503B: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/503E: 20 EC 50 JSR $50EC C3/5041: C9 FF CMP #$FF C3/5043: F0 D5 BEQ $501A C3/5045: 20 A2 50 JSR $50A2 C3/5048: C9 00 CMP #$00 C3/504A: F0 CE BEQ $501A C3/504C: 20 EC 50 JSR $50EC C3/504F: 20 67 84 JSR $8467 C3/5052: A2 92 9E LDX #$9E92 C3/5055: 8E 81 21 STX $2181 C3/5058: 20 EC 50 JSR $50EC C3/505B: 20 A2 50 JSR $50A2 C3/505E: C9 FF CMP #$FF C3/5060: F0 26 BEQ $5088 C3/5062: 48 PHA C3/5063: 20 B9 51 JSR $51B9 C3/5066: A9 2C LDA #$2C C3/5068: 85 29 STA $29 C3/506A: A9 C7 LDA #$C7 C3/506C: 8D 80 21 STA $2180 C3/506F: 68 PLA C3/5070: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5073: A5 F8 LDA $F8 C3/5075: 8D 80 21 STA $2180 C3/5078: A5 F9 LDA $F9 C3/507A: 8D 80 21 STA $2180 C3/507D: A9 CD LDA #$CD C3/507F: 8D 80 21 STA $2180 C3/5082: 9C 80 21 STZ $2180 C3/5085: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5088: A9 24 LDA #$24 C3/508A: 85 29 STA $29 C3/508C: 20 EC 50 JSR $50EC C3/508F: 20 4D 51 JSR $514D C3/5092: A9 FF LDA #$FF C3/5094: 8D 80 21 STA $2180 C3/5097: 8D 80 21 STA $2180 C3/509A: 8D 80 21 STA $2180 C3/509D: 8D 80 21 STA $2180 C3/50A0: 80 E0 BRA $5082 C3/50A2: 85 E0 STA $E0 C3/50A4: 20 DD 4E JSR $4EDD C3/50A7: B9 00 00 LDA $0000,Y C3/50AA: C9 0C CMP #$0C C3/50AC: F0 17 BEQ $50C5 C3/50AE: 8D 02 42 STA $4202 C3/50B1: A9 36 LDA #$36 C3/50B3: 8D 03 42 STA $4203 C3/50B6: 7B TDC C3/50B7: A5 E0 LDA $E0 C3/50B9: C2 20 REP #$20 C3/50BB: 6D 16 42 ADC $4216 C3/50BE: AA TAX C3/50BF: E2 20 SEP #$20 C3/50C1: BD 6E 1A LDA $1A6E,X C3/50C4: 60 RTS C3/50C5: 64 E1 STZ $E1 C3/50C7: 7B TDC C3/50C8: A5 E1 LDA $E1 C3/50CA: C5 28 CMP $28 C3/50CC: F0 14 BEQ $50E2 C3/50CE: 0A ASL C3/50CF: AA TAX C3/50D0: B4 6D LDY $6D,X C3/50D2: F0 0E BEQ $50E2 C3/50D4: B9 00 00 LDA $0000,Y C3/50D7: C9 0C CMP #$0C C3/50D9: B0 07 BCS $50E2 C3/50DB: 20 AE 50 JSR $50AE C3/50DE: C9 FF CMP #$FF C3/50E0: F0 09 BEQ $50EB C3/50E2: E6 E1 INC $E1 C3/50E4: A5 E1 LDA $E1 C3/50E6: C9 04 CMP #$04 C3/50E8: D0 DD BNE $50C7 C3/50EA: 7B TDC C3/50EB: 60 RTS C3/50EC: 7B TDC C3/50ED: A5 E5 LDA $E5 C3/50EF: AA TAX C3/50F0: BF 89 9D 7E LDA $7E9D89,X C3/50F4: 60 RTS C3/50F5: 48 PHA C3/50F6: AD 12 42 LDA $4212 C3/50F9: 29 40 AND #$40 C3/50FB: F0 F9 BEQ $50F6 C3/50FD: 68 PLA C3/50FE: 8D 1B 21 STA $211B C3/5101: 9C 1B 21 STZ $211B C3/5104: A9 0E LDA #$0E C3/5106: 8D 1C 21 STA $211C C3/5109: 8D 1C 21 STA $211C C3/510C: 60 RTS C3/510D: 48 PHA C3/510E: 20 F5 50 JSR $50F5 C3/5111: AE 34 21 LDX $2134 C3/5114: BF C5 6A C4 LDA $C46AC5,X ; spell data C3/5118: 85 E0 STA $E0 C3/511A: 68 PLA C3/511B: C9 99 CMP #$99 C3/511D: D0 0F BNE $512E C3/511F: AD 1B 02 LDA $021B C3/5122: 0A ASL C3/5123: 85 E0 STA $E0 C3/5125: AD 1C 02 LDA $021C C3/5128: C9 1E CMP #$1E C3/512A: 90 02 BCC $512E C3/512C: E6 E0 INC $E0 C3/512E: AD D7 11 LDA $11D7 C3/5131: 89 40 BIT #$40 C3/5133: F0 05 BEQ $513A C3/5135: 7B TDC C3/5136: A9 01 LDA #$01 C3/5138: 80 11 BRA $514B C3/513A: AD D7 11 LDA $11D7 C3/513D: 89 20 BIT #$20 C3/513F: F0 07 BEQ $5148 C3/5141: 7B TDC C3/5142: A5 E0 LDA $E0 C3/5144: 1A INC C3/5145: 4A LSR C3/5146: 80 03 BRA $514B C3/5148: 7B TDC C3/5149: A5 E0 LDA $E0 C3/514B: AA TAX C3/514C: 60 RTS C3/514D: C9 2A CMP #$2A C3/514F: F0 2A BEQ $517B C3/5151: C9 12 CMP #$12 C3/5153: F0 19 BEQ $516E C3/5155: 20 F5 50 JSR $50F5 C3/5158: AE 34 21 LDX $2134 C3/515B: BF C3 6A C4 LDA $C46AC3,X C3/515F: 29 01 AND #$01 C3/5161: F0 09 BEQ $516C C3/5163: 20 EC 50 JSR $50EC C3/5166: 20 0D 51 JSR $510D C3/5169: 4C 88 51 JMP $5188 C3/516C: 80 4B BRA $51B9 C3/516E: 85 E3 STA $E3 C3/5170: AD 01 02 LDA $0201 C3/5173: 89 01 BIT #$01 C3/5175: F0 F5 BEQ $516C C3/5177: A5 E3 LDA $E3 C3/5179: 80 DA BRA $5155 C3/517B: 85 E3 STA $E3 C3/517D: AD 01 02 LDA $0201 C3/5180: 89 02 BIT #$02 C3/5182: F0 E8 BEQ $516C C3/5184: A5 E3 LDA $E3 C3/5186: 80 CD BRA $5155 C3/5188: 86 E2 STX $E2 C3/518A: 20 DD 4E JSR $4EDD C3/518D: B9 14 00 LDA $0014,Y C3/5190: 29 20 AND #$20 C3/5192: F0 07 BEQ $519B C3/5194: 20 EC 50 JSR $50EC C3/5197: C9 23 CMP #$23 C3/5199: D0 1E BNE $51B9 C3/519B: C2 20 REP #$20 C3/519D: B9 0D 00 LDA $000D,Y C3/51A0: 85 E0 STA $E0 C3/51A2: E2 20 SEP #$20 C3/51A4: A6 E2 LDX $E2 C3/51A6: E4 E0 CPX $E0 C3/51A8: F0 02 BEQ $51AC C3/51AA: B0 0D BCS $51B9 C3/51AC: 7B TDC C3/51AD: A5 E5 LDA $E5 C3/51AF: AA TAX C3/51B0: A9 20 LDA #$20 C3/51B2: 85 29 STA $29 C3/51B4: 9F 09 9E 7E STA $7E9E09,X C3/51B8: 60 RTS C3/51B9: 7B TDC C3/51BA: A5 E5 LDA $E5 C3/51BC: AA TAX C3/51BD: A9 28 LDA #$28 C3/51BF: 85 29 STA $29 C3/51C1: 9F 09 9E 7E STA $7E9E09,X C3/51C5: 60 RTS C3/51C6: A9 20 LDA #$20 C3/51C8: 85 29 STA $29 C3/51CA: C2 20 REP #$20 C3/51CC: A9 BF 81 LDA #$81BF C3/51CF: 8F 89 9E 7E STA $7E9E89 C3/51D3: E2 20 SEP #$20 C3/51D5: A2 8B 9E LDX #$9E8B C3/51D8: 8E 81 21 STX $2181 C3/51DB: 7B TDC C3/51DC: A5 4B LDA $4B C3/51DE: AA TAX C3/51DF: BF 89 9D 7E LDA $7E9D89,X C3/51E3: 20 0D 51 JSR $510D C3/51E6: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/51E9: A5 F8 LDA $F8 C3/51EB: 8D 80 21 STA $2180 C3/51EE: A5 F9 LDA $F9 C3/51F0: 8D 80 21 STA $2180 C3/51F3: 9C 80 21 STZ $2180 C3/51F6: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/51F9: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/51FC: 20 3C 52 JSR $523C C3/51FF: A9 2C LDA #$2C C3/5201: 85 29 STA $29 C3/5203: A0 91 5C LDY #$5C91 C3/5206: 20 F9 02 JSR $02F9 ; draw positioned text C3/5209: 20 AC 61 JSR $61AC C3/520C: 4C 4D 0F JMP $0F4D C3/520F: A2 89 9D LDX #$9D89 C3/5212: 8E 81 21 STX $2181 C3/5215: A6 00 LDX $00 C3/5217: 64 E0 STZ $E0 C3/5219: A0 08 00 LDY #$0008 C3/521C: BD 29 1D LDA $1D29,X ; known lores C3/521F: 6A ROR C3/5220: 48 PHA C3/5221: 90 07 BCC $522A C3/5223: A5 E0 LDA $E0 C3/5225: 8D 80 21 STA $2180 C3/5228: 80 05 BRA $522F C3/522A: A9 FF LDA #$FF C3/522C: 8D 80 21 STA $2180 C3/522F: E6 E0 INC $E0 C3/5231: 68 PLA C3/5232: 88 DEY C3/5233: D0 EA BNE $521F C3/5235: E8 INX C3/5236: E0 03 00 CPX #$0003 C3/5239: D0 DE BNE $5219 C3/523B: 60 RTS C3/523C: 20 0F 52 JSR $520F C3/523F: 20 F7 83 JSR $83F7 C3/5242: A0 08 00 LDY #$0008 C3/5245: 5A PHY C3/5246: 20 56 52 JSR $5256 C3/5249: A5 E6 LDA $E6 C3/524B: 1A INC C3/524C: 1A INC C3/524D: 29 1F AND #$1F C3/524F: 85 E6 STA $E6 C3/5251: 7A PLY C3/5252: 88 DEY C3/5253: D0 F0 BNE $5245 C3/5255: 60 RTS C3/5256: A9 20 LDA #$20 C3/5258: 85 29 STA $29 C3/525A: 20 66 52 JSR $5266 C3/525D: A2 03 00 LDX #$0003 C3/5260: 20 75 52 JSR $5275 C3/5263: E6 E5 INC $E5 C3/5265: 60 RTS C3/5266: A0 0A 00 LDY #$000A C3/5269: 84 EB STY $EB C3/526B: A0 FD F9 LDY #$F9FD ; $E6F9FD (lore names) C3/526E: 84 EF STY $EF C3/5270: A9 E6 LDA #$E6 C3/5272: 85 F1 STA $F1 C3/5274: 60 RTS C3/5275: A5 E6 LDA $E6 C3/5277: 1A INC C3/5278: 20 9F 80 JSR $809F C3/527B: C2 20 REP #$20 C3/527D: 8A TXA C3/527E: 8F 89 9E 7E STA $7E9E89 C3/5282: E2 20 SEP #$20 C3/5284: 7B TDC C3/5285: A5 E5 LDA $E5 C3/5287: AA TAX C3/5288: BF 89 9D 7E LDA $7E9D89,X C3/528C: C9 FF CMP #$FF C3/528E: F0 30 BEQ $52C0 C3/5290: A5 E5 LDA $E5 C3/5292: 20 67 84 JSR $8467 C3/5295: A2 95 9E LDX #$9E95 C3/5298: 8E 81 21 STX $2181 C3/529B: A9 C7 LDA #$C7 C3/529D: 8D 80 21 STA $2180 C3/52A0: A5 E5 LDA $E5 C3/52A2: 18 CLC C3/52A3: 69 8B ADC #$8B C3/52A5: 20 0D 51 JSR $510D C3/52A8: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/52AB: A5 F7 LDA $F7 C3/52AD: 8D 80 21 STA $2180 C3/52B0: A5 F8 LDA $F8 C3/52B2: 8D 80 21 STA $2180 C3/52B5: A5 F9 LDA $F9 C3/52B7: 8D 80 21 STA $2180 C3/52BA: 9C 80 21 STZ $2180 C3/52BD: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/52C0: A0 0E 00 LDY #$000E C3/52C3: A2 8B 9E LDX #$9E8B C3/52C6: 8E 81 21 STX $2181 C3/52C9: A9 FF LDA #$FF C3/52CB: 8D 80 21 STA $2180 C3/52CE: 88 DEY C3/52CF: D0 FA BNE $52CB C3/52D1: 9C 80 21 STZ $2180 C3/52D4: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/52D7: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/52DA: 20 6E 53 JSR $536E C3/52DD: A9 20 LDA #$20 C3/52DF: 85 29 STA $29 C3/52E1: 20 F4 52 JSR $52F4 C3/52E4: A9 2C LDA #$2C C3/52E6: 85 29 STA $29 C3/52E8: A0 B8 5C LDY #$5CB8 C3/52EB: 20 F9 02 JSR $02F9 ; draw positioned text C3/52EE: 20 AC 61 JSR $61AC C3/52F1: 4C 4D 0F JMP $0F4D C3/52F4: 20 F7 83 JSR $83F7 C3/52F7: E6 E6 INC $E6 C3/52F9: 64 E5 STZ $E5 C3/52FB: A0 04 00 LDY #$0004 C3/52FE: 5A PHY C3/52FF: 20 11 53 JSR $5311 C3/5302: A5 E6 LDA $E6 C3/5304: 1A INC C3/5305: 1A INC C3/5306: 1A INC C3/5307: 1A INC C3/5308: 29 1F AND #$1F C3/530A: 85 E6 STA $E6 C3/530C: 7A PLY C3/530D: 88 DEY C3/530E: D0 EE BNE $52FE C3/5310: 60 RTS C3/5311: 20 28 53 JSR $5328 C3/5314: A2 03 00 LDX #$0003 C3/5317: 20 37 53 JSR $5337 C3/531A: E6 E5 INC $E5 C3/531C: 20 28 53 JSR $5328 C3/531F: A2 11 00 LDX #$0011 C3/5322: 20 37 53 JSR $5337 C3/5325: E6 E5 INC $E5 C3/5327: 60 RTS C3/5328: A0 0C 00 LDY #$000C C3/532B: 84 EB STY $EB C3/532D: A0 40 3C LDY #$3C40 C3/5330: 84 EF STY $EF C3/5332: A9 CF LDA #$CF C3/5334: 85 F1 STA $F1 C3/5336: 60 RTS C3/5337: A5 E6 LDA $E6 C3/5339: 20 9F 80 JSR $809F C3/533C: C2 20 REP #$20 C3/533E: 8A TXA C3/533F: 8F 89 9E 7E STA $7E9E89 C3/5343: E2 20 SEP #$20 C3/5345: 7B TDC C3/5346: A5 E5 LDA $E5 C3/5348: AA TAX C3/5349: BF 89 9D 7E LDA $7E9D89,X C3/534D: C9 FF CMP #$FF C3/534F: F0 06 BEQ $5357 C3/5351: 20 67 84 JSR $8467 C3/5354: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5357: A0 0C 00 LDY #$000C C3/535A: A2 8B 9E LDX #$9E8B C3/535D: 8E 81 21 STX $2181 C3/5360: A9 FF LDA #$FF C3/5362: 8D 80 21 STA $2180 C3/5365: 88 DEY C3/5366: D0 FA BNE $5362 C3/5368: 9C 80 21 STZ $2180 C3/536B: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/536E: A2 89 9D LDX #$9D89 C3/5371: 8E 81 21 STX $2181 C3/5374: A0 08 00 LDY #$0008 C3/5377: 64 E0 STZ $E0 C3/5379: 7B TDC C3/537A: AD F7 1C LDA $1CF7 C3/537D: 6A ROR C3/537E: 48 PHA C3/537F: 90 04 BCC $5385 C3/5381: A5 E0 LDA $E0 C3/5383: 80 02 BRA $5387 C3/5385: A9 FF LDA #$FF C3/5387: 8D 80 21 STA $2180 C3/538A: E6 E0 INC $E0 C3/538C: 68 PLA C3/538D: 88 DEY C3/538E: D0 ED BNE $537D C3/5390: 60 RTS C3/5391: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/5394: 20 A7 53 JSR $53A7 C3/5397: A9 2C LDA #$2C C3/5399: 85 29 STA $29 C3/539B: A0 98 5C LDY #$5C98 C3/539E: 20 F9 02 JSR $02F9 ; draw positioned text C3/53A1: 20 AC 61 JSR $61AC C3/53A4: 4C 4D 0F JMP $0F4D C3/53A7: 20 C1 53 JSR $53C1 C3/53AA: 20 F7 83 JSR $83F7 C3/53AD: A0 09 00 LDY #$0009 C3/53B0: 5A PHY C3/53B1: 20 EE 53 JSR $53EE C3/53B4: A5 E6 LDA $E6 C3/53B6: 1A INC C3/53B7: 1A INC C3/53B8: 29 1F AND #$1F C3/53BA: 85 E6 STA $E6 C3/53BC: 7A PLY C3/53BD: 88 DEY C3/53BE: D0 F0 BNE $53B0 C3/53C0: 60 RTS C3/53C1: A2 89 9D LDX #$9D89 C3/53C4: 8E 81 21 STX $2181 C3/53C7: A6 00 LDX $00 C3/53C9: 64 E0 STZ $E0 C3/53CB: A0 08 00 LDY #$0008 C3/53CE: BD 2C 1D LDA $1D2C,X ; known rages C3/53D1: 6A ROR C3/53D2: 48 PHA C3/53D3: 90 07 BCC $53DC C3/53D5: A5 E0 LDA $E0 C3/53D7: 8D 80 21 STA $2180 C3/53DA: 80 05 BRA $53E1 C3/53DC: A9 FF LDA #$FF C3/53DE: 8D 80 21 STA $2180 C3/53E1: E6 E0 INC $E0 C3/53E3: 68 PLA C3/53E4: 88 DEY C3/53E5: D0 EA BNE $53D1 C3/53E7: E8 INX C3/53E8: E0 20 00 CPX #$0020 C3/53EB: D0 DE BNE $53CB C3/53ED: 60 RTS C3/53EE: A9 20 LDA #$20 C3/53F0: 85 29 STA $29 C3/53F2: 20 09 54 JSR $5409 C3/53F5: A2 05 00 LDX #$0005 C3/53F8: 20 18 54 JSR $5418 C3/53FB: E6 E5 INC $E5 C3/53FD: 20 09 54 JSR $5409 C3/5400: A2 13 00 LDX #$0013 C3/5403: 20 18 54 JSR $5418 C3/5406: E6 E5 INC $E5 C3/5408: 60 RTS C3/5409: A0 0A 00 LDY #$000A C3/540C: 84 EB STY $EB C3/540E: A0 50 C0 LDY #$C050 C3/5411: 84 EF STY $EF C3/5413: A9 CF LDA #$CF C3/5415: 85 F1 STA $F1 C3/5417: 60 RTS C3/5418: A5 E6 LDA $E6 C3/541A: 1A INC C3/541B: 20 9F 80 JSR $809F C3/541E: C2 20 REP #$20 C3/5420: 8A TXA C3/5421: 8F 89 9E 7E STA $7E9E89 C3/5425: E2 20 SEP #$20 C3/5427: 7B TDC C3/5428: A5 E5 LDA $E5 C3/542A: AA TAX C3/542B: BF 89 9D 7E LDA $7E9D89,X C3/542F: C9 FF CMP #$FF C3/5431: F0 08 BEQ $543B C3/5433: A5 E5 LDA $E5 C3/5435: 20 67 84 JSR $8467 C3/5438: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/543B: A0 0A 00 LDY #$000A C3/543E: A2 8B 9E LDX #$9E8B C3/5441: 8E 81 21 STX $2181 C3/5444: A9 FF LDA #$FF C3/5446: 8D 80 21 STA $2180 C3/5449: 88 DEY C3/544A: D0 FA BNE $5446 C3/544C: 9C 80 21 STZ $2180 C3/544F: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5452: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/5455: A9 20 LDA #$20 C3/5457: 85 29 STA $29 C3/5459: 20 6C 54 JSR $546C C3/545C: A9 2C LDA #$2C C3/545E: 85 29 STA $29 C3/5460: A0 A7 5C LDY #$5CA7 C3/5463: 20 F9 02 JSR $02F9 ; draw positioned text C3/5466: 20 AC 61 JSR $61AC C3/5469: 4C 4D 0F JMP $0F4D C3/546C: 20 86 54 JSR $5486 C3/546F: 20 F7 83 JSR $83F7 C3/5472: A0 08 00 LDY #$0008 C3/5475: 5A PHY C3/5476: 20 E3 54 JSR $54E3 C3/5479: A5 E6 LDA $E6 C3/547B: 1A INC C3/547C: 1A INC C3/547D: 29 1F AND #$1F C3/547F: 85 E6 STA $E6 C3/5481: 7A PLY C3/5482: 88 DEY C3/5483: D0 F0 BNE $5475 C3/5485: 60 RTS C3/5486: A2 ED 9D LDX #$9DED C3/5489: 8E 81 21 STX $2181 C3/548C: A6 00 LDX $00 C3/548E: 64 E0 STZ $E0 C3/5490: A0 08 00 LDY #$0008 C3/5493: BD 69 1A LDA $1A69,X ; current espers C3/5496: 6A ROR C3/5497: 48 PHA C3/5498: 90 07 BCC $54A1 C3/549A: A5 E0 LDA $E0 C3/549C: 8D 80 21 STA $2180 C3/549F: 80 05 BRA $54A6 C3/54A1: A9 FF LDA #$FF C3/54A3: 8D 80 21 STA $2180 C3/54A6: E6 E0 INC $E0 C3/54A8: 68 PLA C3/54A9: 88 DEY C3/54AA: D0 EA BNE $5496 C3/54AC: E8 INX C3/54AD: E0 04 00 CPX #$0004 C3/54B0: D0 DE BNE $5490 C3/54B2: A2 89 9D LDX #$9D89 C3/54B5: 8E 81 21 STX $2181 C3/54B8: A9 FF LDA #$FF C3/54BA: A2 1D 00 LDX #$001D C3/54BD: 8D 80 21 STA $2180 C3/54C0: CA DEX C3/54C1: D0 FA BNE $54BD C3/54C3: A2 ED 9D LDX #$9DED C3/54C6: 8E 81 21 STX $2181 C3/54C9: A0 1B 00 LDY #$001B C3/54CC: 7B TDC C3/54CD: AD 80 21 LDA $2180 C3/54D0: 30 0D BMI $54DF C3/54D2: 48 PHA C3/54D3: AA TAX C3/54D4: BF B5 F9 D1 LDA $D1F9B5,X ; esper order for menu C3/54D8: 3A DEC C3/54D9: AA TAX C3/54DA: 68 PLA C3/54DB: 9F 89 9D 7E STA $7E9D89,X C3/54DF: 88 DEY C3/54E0: D0 EB BNE $54CD C3/54E2: 60 RTS C3/54E3: 20 FA 54 JSR $54FA C3/54E6: A2 03 00 LDX #$0003 C3/54E9: 20 09 55 JSR $5509 C3/54EC: E6 E5 INC $E5 C3/54EE: 20 FA 54 JSR $54FA C3/54F1: A2 11 00 LDX #$0011 C3/54F4: 20 09 55 JSR $5509 C3/54F7: E6 E5 INC $E5 C3/54F9: 60 RTS C3/54FA: A0 08 00 LDY #$0008 C3/54FD: 84 EB STY $EB C3/54FF: A0 E1 F6 LDY #$F6E1 ; $E6F6E1 (esper names) C3/5502: 84 EF STY $EF C3/5504: A9 E6 LDA #$E6 C3/5506: 85 F1 STA $F1 C3/5508: 60 RTS C3/5509: A5 E6 LDA $E6 C3/550B: 1A INC C3/550C: 20 9F 80 JSR $809F C3/550F: C2 20 REP #$20 C3/5511: 8A TXA C3/5512: 8F 89 9E 7E STA $7E9E89 C3/5516: E2 20 SEP #$20 C3/5518: 7B TDC C3/5519: A5 E5 LDA $E5 C3/551B: AA TAX C3/551C: BF 89 9D 7E LDA $7E9D89,X C3/5520: C9 FF CMP #$FF C3/5522: F0 39 BEQ $555D C3/5524: 20 74 55 JSR $5574 C3/5527: 20 67 84 JSR $8467 C3/552A: 7B TDC C3/552B: A5 E5 LDA $E5 C3/552D: AA TAX C3/552E: BF 89 9D 7E LDA $7E9D89,X C3/5532: 18 CLC C3/5533: 69 36 ADC #$36 C3/5535: 20 0D 51 JSR $510D C3/5538: 48 PHA C3/5539: A2 93 9E LDX #$9E93 C3/553C: 8E 81 21 STX $2181 C3/553F: A9 C7 LDA #$C7 C3/5541: 8D 80 21 STA $2180 C3/5544: 68 PLA C3/5545: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5548: A5 F7 LDA $F7 C3/554A: 8D 80 21 STA $2180 C3/554D: A5 F8 LDA $F8 C3/554F: 8D 80 21 STA $2180 C3/5552: A5 F9 LDA $F9 C3/5554: 8D 80 21 STA $2180 C3/5557: 9C 80 21 STZ $2180 C3/555A: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/555D: A0 0C 00 LDY #$000C C3/5560: A2 8B 9E LDX #$9E8B C3/5563: 8E 81 21 STX $2181 C3/5566: A9 FF LDA #$FF C3/5568: 8D 80 21 STA $2180 C3/556B: 88 DEY C3/556C: D0 FA BNE $5568 C3/556E: 9C 80 21 STZ $2180 C3/5571: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5574: 85 E0 STA $E0 C3/5576: A6 00 LDX $00 C3/5578: A0 10 00 LDY #$0010 C3/557B: BD 1E 16 LDA $161E,X ; esper C3/557E: C5 E0 CMP $E0 C3/5580: F0 11 BEQ $5593 C3/5582: C2 20 REP #$20 C3/5584: 8A TXA C3/5585: 18 CLC C3/5586: 69 25 00 ADC #$0025 C3/5589: AA TAX C3/558A: E2 20 SEP #$20 C3/558C: 88 DEY C3/558D: D0 EC BNE $557B C3/558F: A9 20 LDA #$20 C3/5591: 80 02 BRA $5595 C3/5593: A9 28 LDA #$28 C3/5595: 85 29 STA $29 C3/5597: A5 E0 LDA $E0 C3/5599: 60 RTS C3/559A: A9 20 LDA #$20 C3/559C: 85 29 STA $29 C3/559E: C2 20 REP #$20 C3/55A0: A9 CD 40 LDA #$40CD C3/55A3: 8F 89 9E 7E STA $7E9E89 C3/55A7: A9 8B 9E LDA #$9E8B C3/55AA: 8D 81 21 STA $2181 C3/55AD: E2 20 SEP #$20 C3/55AF: A0 06 00 LDY #$0006 C3/55B2: BD 02 16 LDA $1602,X C3/55B5: C9 FF CMP #$FF C3/55B7: F0 07 BEQ $55C0 C3/55B9: 8D 80 21 STA $2180 C3/55BC: E8 INX C3/55BD: 88 DEY C3/55BE: D0 F2 BNE $55B2 C3/55C0: A6 00 LDX $00 C3/55C2: BF D9 5C C3 LDA $C35CD9,X C3/55C6: F0 06 BEQ $55CE C3/55C8: 8D 80 21 STA $2180 C3/55CB: E8 INX C3/55CC: 80 F4 BRA $55C2 C3/55CE: 9C 80 21 STZ $2180 C3/55D1: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/55D4: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/55D7: 20 EA 55 JSR $55EA C3/55DA: A9 2C LDA #$2C C3/55DC: 85 29 STA $29 C3/55DE: A0 B0 5C LDY #$5CB0 C3/55E1: 20 F9 02 JSR $02F9 ; draw positioned text C3/55E4: 20 AC 61 JSR $61AC C3/55E7: 4C 4D 0F JMP $0F4D C3/55EA: 20 1B 56 JSR $561B C3/55ED: 20 F7 83 JSR $83F7 C3/55F0: 64 E5 STZ $E5 C3/55F2: E6 E6 INC $E6 C3/55F4: A0 04 00 LDY #$0004 C3/55F7: 5A PHY C3/55F8: 20 0A 56 JSR $560A C3/55FB: A5 E6 LDA $E6 C3/55FD: 1A INC C3/55FE: 1A INC C3/55FF: 1A INC C3/5600: 1A INC C3/5601: 29 1F AND #$1F C3/5603: 85 E6 STA $E6 C3/5605: 7A PLY C3/5606: 88 DEY C3/5607: D0 EE BNE $55F7 C3/5609: 60 RTS C3/560A: A2 04 00 LDX #$0004 C3/560D: 20 43 56 JSR $5643 C3/5610: E6 E5 INC $E5 C3/5612: A2 12 00 LDX #$0012 C3/5615: 20 43 56 JSR $5643 C3/5618: E6 E5 INC $E5 C3/561A: 60 RTS C3/561B: AD 28 1D LDA $1D28 C3/561E: 80 03 BRA $5623 C3/5620: AD 4C 1D LDA $1D4C C3/5623: A2 89 9D LDX #$9D89 C3/5626: 8E 81 21 STX $2181 C3/5629: A6 00 LDX $00 C3/562B: A0 08 00 LDY #$0008 C3/562E: 6A ROR C3/562F: 48 PHA C3/5630: 90 06 BCC $5638 C3/5632: 8A TXA C3/5633: 8D 80 21 STA $2180 C3/5636: 80 05 BRA $563D C3/5638: A9 FF LDA #$FF C3/563A: 8D 80 21 STA $2180 C3/563D: E8 INX C3/563E: 68 PLA C3/563F: 88 DEY C3/5640: D0 EC BNE $562E C3/5642: 60 RTS C3/5643: A5 E6 LDA $E6 C3/5645: 20 9F 80 JSR $809F C3/5648: C2 20 REP #$20 C3/564A: 8A TXA C3/564B: 8F 89 9E 7E STA $7E9E89 C3/564F: E2 20 SEP #$20 C3/5651: 7B TDC C3/5652: A5 E5 LDA $E5 C3/5654: AA TAX C3/5655: BF 89 9D 7E LDA $7E9D89,X C3/5659: C9 FF CMP #$FF C3/565B: F0 0F BEQ $566C C3/565D: 20 83 56 JSR $5683 C3/5660: A0 89 9E LDY #$9E89 C3/5663: 84 E7 STY $E7 C3/5665: A9 7E LDA #$7E C3/5667: 85 E9 STA $E9 C3/5669: 4C BC 56 JMP $56BC C3/566C: A0 08 00 LDY #$0008 C3/566F: A2 8B 9E LDX #$9E8B C3/5672: 8E 81 21 STX $2181 C3/5675: A9 FF LDA #$FF C3/5677: 8D 80 21 STA $2180 C3/567A: 88 DEY C3/567B: D0 FA BNE $5677 C3/567D: 9C 80 21 STZ $2180 C3/5680: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5683: 48 PHA C3/5684: 0A ASL C3/5685: 0A ASL C3/5686: 0A ASL C3/5687: 85 E0 STA $E0 C3/5689: 68 PLA C3/568A: 0A ASL C3/568B: 0A ASL C3/568C: 18 CLC C3/568D: 65 E0 ADC $E0 C3/568F: AA TAX C3/5690: A0 8B 9E LDY #$9E8B C3/5693: 8C 81 21 STY $2181 C3/5696: A0 0A 00 LDY #$000A C3/5699: DA PHX C3/569A: BF 40 7A C4 LDA $C47A40,X ; blitz codes C3/569E: 0A ASL C3/569F: AA TAX C3/56A0: BF 1C 5C C3 LDA $C35C1C,X ; C3/56A4: 8D 80 21 STA $2180 C3/56A7: E8 INX C3/56A8: BF 1C 5C C3 LDA $C35C1C,X C3/56AC: 8D 80 21 STA $2180 C3/56AF: E8 INX C3/56B0: FA PLX C3/56B1: E8 INX C3/56B2: 88 DEY C3/56B3: D0 E4 BNE $5699 C3/56B5: 9C 80 21 STZ $2180 C3/56B8: 9C 80 21 STZ $2180 C3/56BB: 60 RTS C3/56BC: A4 00 LDY $00 C3/56BE: C2 20 REP #$20 C3/56C0: A7 E7 LDA [$E7] C3/56C2: 85 EB STA $EB C3/56C4: E6 E7 INC $E7 C3/56C6: E6 E7 INC $E7 C3/56C8: E2 20 SEP #$20 C3/56CA: A9 7E LDA #$7E C3/56CC: 85 ED STA $ED C3/56CE: C2 20 REP #$20 C3/56D0: B7 E7 LDA [$E7],Y C3/56D2: F0 08 BEQ $56DC C3/56D4: 97 EB STA [$EB],Y C3/56D6: E2 20 SEP #$20 C3/56D8: C8 INY C3/56D9: C8 INY C3/56DA: 80 F2 BRA $56CE C3/56DC: E2 20 SEP #$20 C3/56DE: 60 RTS C3/56DF: 20 09 5C JSR $5C09 C3/56E2: 4C 2A 57 JMP $572A C3/56E5: 20 E3 5B JSR $5BE3 C3/56E8: 4C 2A 57 JMP $572A C3/56EB: A2 70 7A LDX #$7A70 ; $ED7A70 (pointers to lore descriptions) C3/56EE: 86 E7 STX $E7 C3/56F0: A2 A0 77 LDX #$77A0 ; $ED77A0 (lore descriptions) C3/56F3: 86 EB STX $EB C3/56F5: A9 ED LDA #$ED C3/56F7: 85 E9 STA $E9 C3/56F9: A9 ED LDA #$ED C3/56FB: 85 ED STA $ED C3/56FD: 4C 2A 57 JMP $572A C3/5700: A2 AE FF LDX #$FFAE ; $CFFFAE (pointers to swdtech descriptions) C3/5703: 86 E7 STX $E7 C3/5705: A2 00 FD LDX #$FD00 ; $CFFD00 (swdtech descriptions) C3/5708: 86 EB STX $EB C3/570A: A9 CF LDA #$CF C3/570C: 85 E9 STA $E9 C3/570E: A9 CF LDA #$CF C3/5710: 85 ED STA $ED C3/5712: 4C 2A 57 JMP $572A C3/5715: A2 9E FF LDX #$FF9E ; $CFFF9E (pointers to blitz descriptions) C3/5718: 86 E7 STX $E7 C3/571A: A2 00 FC LDX #$FC00 ; $CFFC00 (blitz descriptions) C3/571D: 86 EB STX $EB C3/571F: A9 CF LDA #$CF C3/5721: 85 E9 STA $E9 C3/5723: A9 CF LDA #$CF C3/5725: 85 ED STA $ED C3/5727: 4C 2A 57 JMP $572A C3/572A: A2 C9 9E LDX #$9EC9 C3/572D: 8E 81 21 STX $2181 C3/5730: 7B TDC C3/5731: A5 4B LDA $4B C3/5733: AA TAX C3/5734: BF 89 9D 7E LDA $7E9D89,X C3/5738: C9 FF CMP #$FF C3/573A: F0 31 BEQ $576D C3/573C: C2 20 REP #$20 C3/573E: 0A ASL C3/573F: A8 TAY C3/5740: B7 E7 LDA [$E7],Y C3/5742: A8 TAY C3/5743: E2 20 SEP #$20 C3/5745: B7 EB LDA [$EB],Y C3/5747: F0 06 BEQ $574F C3/5749: 8D 80 21 STA $2180 C3/574C: C8 INY C3/574D: 80 F6 BRA $5745 C3/574F: 88 DEY C3/5750: B7 EB LDA [$EB],Y C3/5752: C8 INY C3/5753: C9 1C CMP #$1C C3/5755: F0 10 BEQ $5767 C3/5757: C9 1D CMP #$1D C3/5759: F0 0C BEQ $5767 C3/575B: C9 1E CMP #$1E C3/575D: F0 08 BEQ $5767 C3/575F: C9 1F CMP #$1F C3/5761: F0 04 BEQ $5767 C3/5763: 9C 80 21 STZ $2180 C3/5766: 60 RTS C3/5767: 9C 80 21 STZ $2180 C3/576A: C8 INY C3/576B: 80 D8 BRA $5745 C3/576D: A9 FF LDA #$FF C3/576F: 8D 80 21 STA $2180 C3/5772: 80 EF BRA $5763 C3/5774: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/5777: 20 8A 57 JSR $578A C3/577A: A9 2C LDA #$2C C3/577C: 85 29 STA $29 C3/577E: A0 9F 5C LDY #$5C9F C3/5781: 20 F9 02 JSR $02F9 ; draw positioned text C3/5784: 20 AC 61 JSR $61AC C3/5787: 4C 4D 0F JMP $0F4D C3/578A: 20 20 56 JSR $5620 C3/578D: 20 F7 83 JSR $83F7 C3/5790: E6 E6 INC $E6 C3/5792: 64 E5 STZ $E5 C3/5794: A0 04 00 LDY #$0004 C3/5797: 5A PHY C3/5798: 20 AA 57 JSR $57AA C3/579B: A5 E6 LDA $E6 C3/579D: 1A INC C3/579E: 1A INC C3/579F: 1A INC C3/57A0: 1A INC C3/57A1: 29 1F AND #$1F C3/57A3: 85 E6 STA $E6 C3/57A5: 7A PLY C3/57A6: 88 DEY C3/57A7: D0 EE BNE $5797 C3/57A9: 60 RTS C3/57AA: 20 C1 57 JSR $57C1 C3/57AD: A2 03 00 LDX #$0003 C3/57B0: 20 D0 57 JSR $57D0 C3/57B3: E6 E5 INC $E5 C3/57B5: 20 C1 57 JSR $57C1 C3/57B8: A2 11 00 LDX #$0011 C3/57BB: 20 D0 57 JSR $57D0 C3/57BE: E6 E5 INC $E5 C3/57C0: 60 RTS C3/57C1: A0 0C 00 LDY #$000C C3/57C4: 84 EB STY $EB C3/57C6: A0 9D FF LDY #$FF9D ; $E6FF9D (dance names) C3/57C9: 84 EF STY $EF C3/57CB: A9 E6 LDA #$E6 C3/57CD: 85 F1 STA $F1 C3/57CF: 60 RTS C3/57D0: A5 E6 LDA $E6 C3/57D2: 20 9F 80 JSR $809F C3/57D5: C2 20 REP #$20 C3/57D7: 8A TXA C3/57D8: 8F 89 9E 7E STA $7E9E89 C3/57DC: E2 20 SEP #$20 C3/57DE: 7B TDC C3/57DF: A5 E5 LDA $E5 C3/57E1: AA TAX C3/57E2: BF 89 9D 7E LDA $7E9D89,X C3/57E6: C9 FF CMP #$FF C3/57E8: F0 06 BEQ $57F0 C3/57EA: 20 67 84 JSR $8467 C3/57ED: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/57F0: A0 0C 00 LDY #$000C C3/57F3: A2 8B 9E LDX #$9E8B C3/57F6: 8E 81 21 STX $2181 C3/57F9: A9 FF LDA #$FF C3/57FB: 8D 80 21 STA $2180 C3/57FE: 88 DEY C3/57FF: D0 FA BNE $57FB C3/5801: 9C 80 21 STZ $2180 C3/5804: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5807: 7B TDC C3/5808: A5 60 LDA $60 C3/580A: AA TAX C3/580B: A9 FF LDA #$FF C3/580D: 9F C9 35 7E STA $7E35C9,X C3/5811: 60 RTS C3/5812: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/5815: A0 3F 58 LDY #$583F C3/5818: 20 41 03 JSR $0341 ; draw window C3/581B: A0 43 58 LDY #$5843 C3/581E: 20 41 03 JSR $0341 ; draw window C3/5821: A0 47 58 LDY #$5847 C3/5824: 20 41 03 JSR $0341 ; draw window C3/5827: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/582A: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/582D: A0 C0 FF LDY #$FFC0 C3/5830: 84 35 STY $35 C3/5832: A9 02 LDA #$02 C3/5834: 04 45 TSB $45 C3/5836: 20 8A 31 JSR $318A C3/5839: 20 4B 58 JSR $584B C3/583C: 4C 9F 31 JMP $319F C3/583F: .DB $9D, $58, $13, $18, $8B, $58, $07, $02, $8B, $59, $07, $03 C3/584B: A9 20 LDA #$20 C3/584D: 85 29 STA $29 C3/584F: A0 89 58 LDY #$5889 C3/5852: 20 F9 02 JSR $02F9 ; draw positioned text C3/5855: A0 8E 58 LDY #$588E C3/5858: 20 F9 02 JSR $02F9 ; draw positioned text C3/585B: 7B TDC C3/585C: A5 4B LDA $4B C3/585E: 85 E5 STA $E5 C3/5860: 20 B5 4F JSR $4FB5 C3/5863: C2 20 REP #$20 C3/5865: A9 0D 79 LDA #$790D C3/5868: 8F 89 9E 7E STA $7E9E89 C3/586C: E2 20 SEP #$20 C3/586E: 20 EC 50 JSR $50EC C3/5871: 20 67 84 JSR $8467 C3/5874: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/5877: 20 EC 50 JSR $50EC C3/587A: 20 0D 51 JSR $510D C3/587D: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5880: A2 0F 7A LDX #$7A0F C3/5883: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/5886: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5889: .DB $15, $7A, $8C, $8F, $00 C3/588E: .DB $4D, $7A, $8D, $9E, $9E, $9D, $9E, $9D, $00 C3/5897: A4 4F LDY $4F C3/5899: 84 8E STY $8E C3/589B: A5 4A LDA $4A C3/589D: 85 90 STA $90 C3/589F: 20 54 5B JSR $5B54 C3/58A2: 20 9F 59 JSR $599F C3/58A5: 20 11 0F JSR $0F11 C3/58A8: 20 68 13 JSR $1368 ; wait for vblank C3/58AB: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/58AE: C2 20 REP #$20 C3/58B0: A9 00 01 LDA #$0100 C3/58B3: 8F 10 9A 7E STA $7E9A10 C3/58B7: E2 20 SEP #$20 C3/58B9: A5 49 LDA $49 C3/58BB: 85 5F STA $5F C3/58BD: A9 07 LDA #$07 C3/58BF: 85 49 STA $49 C3/58C1: 20 2D 4E JSR $4E2D C3/58C4: A9 C0 LDA #$C0 C3/58C6: 14 46 TRB $46 C3/58C8: 20 7D 59 JSR $597D C3/58CB: 4C 86 59 JMP $5986 ; [ Menu State $4D: ] C3/58CE: 20 83 59 JSR $5983 C3/58D1: 20 93 5B JSR $5B93 C3/58D4: A5 08 LDA $08 C3/58D6: 89 80 BIT #$80 C3/58D8: F0 30 BEQ $590A C3/58DA: 7B TDC C3/58DB: A5 4B LDA $4B C3/58DD: D0 2B BNE $590A C3/58DF: A5 99 LDA $99 C3/58E1: 20 74 55 JSR $5574 C3/58E4: 85 E0 STA $E0 C3/58E6: A5 29 LDA $29 C3/58E8: C9 28 CMP #$28 C3/58EA: D0 16 BNE $5902 C3/58EC: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/58EF: A9 10 LDA #$10 C3/58F1: 04 45 TSB $45 C3/58F3: 20 9A 55 JSR $559A C3/58F6: A0 20 00 LDY #$0020 C3/58F9: 84 20 STY $20 C3/58FB: A9 34 LDA #$34 C3/58FD: 85 26 STA $26 C3/58FF: 4C 11 0F JMP $0F11 C3/5902: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/5905: 20 29 29 JSR $2929 C3/5908: 80 09 BRA $5913 C3/590A: A5 09 LDA $09 C3/590C: 89 80 BIT #$80 C3/590E: F0 6C BEQ $597C C3/5910: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/5913: A9 10 LDA #$10 C3/5915: 04 45 TSB $45 C3/5917: A5 5F LDA $5F C3/5919: 85 49 STA $49 C3/591B: 20 6C 54 JSR $546C C3/591E: 20 1F 09 JSR $091F ; init scroll indicator thread C3/5921: C2 20 REP #$20 C3/5923: A9 00 10 LDA #$1000 C3/5926: 9F 4A 35 7E STA $7E354A,X C3/592A: A9 60 00 LDA #$0060 C3/592D: 9F CA 34 7E STA $7E34CA,X C3/5931: E2 20 SEP #$20 C3/5933: 20 18 4C JSR $4C18 C3/5936: A5 8E LDA $8E C3/5938: 85 4D STA $4D C3/593A: A4 8E LDY $8E C3/593C: 84 4F STY $4F C3/593E: A5 90 LDA $90 C3/5940: 85 4A STA $4A C3/5942: A5 4A LDA $4A C3/5944: 85 E0 STA $E0 C3/5946: A5 50 LDA $50 C3/5948: 38 SEC C3/5949: E5 E0 SBC $E0 C3/594B: 85 4E STA $4E C3/594D: 20 21 4C JSR $4C21 C3/5950: A9 06 LDA #$06 C3/5952: 85 5C STA $5C C3/5954: A9 08 LDA #$08 C3/5956: 85 5A STA $5A C3/5958: A9 02 LDA #$02 C3/595A: 85 5B STA $5B C3/595C: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/595F: 20 68 13 JSR $1368 ; wait for vblank C3/5962: C2 20 REP #$20 C3/5964: 7B TDC C3/5965: 8F 10 9A 7E STA $7E9A10 C3/5969: E2 20 SEP #$20 C3/596B: A0 00 01 LDY #$0100 C3/596E: 84 39 STY $39 C3/5970: 84 3D STY $3D C3/5972: 20 2D 4E JSR $4E2D C3/5975: 20 11 0F JSR $0F11 C3/5978: A9 1E LDA #$1E C3/597A: 85 26 STA $26 C3/597C: 60 RTS C3/597D: A0 8C 59 LDY #$598C C3/5980: 4C FE 05 JMP $05FE ; init cursor C3/5983: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/5986: A0 91 59 LDY #$5991 C3/5989: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/598C: .DB $80, $00, $00, $01, $07 C3/5991: .DW $7010, $7C18, $8818, $9418, $A018, $AC18, $B818 C3/599F: A9 20 LDA #$20 C3/59A1: 85 29 STA $29 C3/59A3: A0 EA 5C LDY #$5CEA C3/59A6: 20 F9 02 JSR $02F9 ; draw positioned text C3/59A9: A0 E2 5C LDY #$5CE2 C3/59AC: 20 F9 02 JSR $02F9 ; draw positioned text C3/59AF: A5 99 LDA $99 C3/59B1: 20 74 55 JSR $5574 C3/59B4: A0 11 44 LDY #$4411 C3/59B7: 20 19 35 JSR $3519 ; init positioned text buffer C3/59BA: 7B TDC C3/59BB: A5 99 LDA $99 C3/59BD: 0A ASL C3/59BE: 0A ASL C3/59BF: 0A ASL C3/59C0: AA TAX C3/59C1: A0 08 00 LDY #$0008 C3/59C4: BF E1 F6 E6 LDA $E6F6E1,X ; esper names C3/59C8: 8D 80 21 STA $2180 C3/59CB: E8 INX C3/59CC: 88 DEY C3/59CD: D0 F5 BNE $59C4 C3/59CF: 9C 80 21 STZ $2180 C3/59D2: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/59D5: 7B TDC C3/59D6: A5 4B LDA $4B C3/59D8: AA TAX C3/59D9: BF 89 9D 7E LDA $7E9D89,X C3/59DD: 8D 02 42 STA $4202 C3/59E0: A9 0B LDA #$0B C3/59E2: 8D 03 42 STA $4203 C3/59E5: A9 20 LDA #$20 C3/59E7: 85 29 STA $29 C3/59E9: A0 11 00 LDY #$0011 C3/59EC: 84 F5 STY $F5 C3/59EE: C2 20 REP #$20 C3/59F0: AD 16 42 LDA $4216 C3/59F3: AA TAX C3/59F4: E2 20 SEP #$20 C3/59F6: BF 00 6E D8 LDA $D86E00,X ; esper data C3/59FA: 85 E0 STA $E0 C3/59FC: E8 INX C3/59FD: BF 00 6E D8 LDA $D86E00,X C3/5A01: 85 E1 STA $E1 C3/5A03: E8 INX C3/5A04: DA PHX C3/5A05: A2 05 00 LDX #$0005 C3/5A08: A4 F5 LDY $F5 C3/5A0A: A5 E1 LDA $E1 C3/5A0C: 48 PHA C3/5A0D: 20 E1 5A JSR $5AE1 C3/5A10: A2 18 00 LDX #$0018 C3/5A13: A4 F5 LDY $F5 C3/5A15: 68 PLA C3/5A16: 85 E1 STA $E1 C3/5A18: 20 84 5A JSR $5A84 C3/5A1B: FA PLX C3/5A1C: C2 20 REP #$20 C3/5A1E: E6 F5 INC $F5 C3/5A20: E6 F5 INC $F5 C3/5A22: A5 F5 LDA $F5 C3/5A24: C9 1B 00 CMP #$001B C3/5A27: D0 CB BNE $59F4 C3/5A29: E2 20 SEP #$20 C3/5A2B: BF 00 6E D8 LDA $D86E00,X C3/5A2F: C9 FF CMP #$FF C3/5A31: F0 34 BEQ $5A67 C3/5A33: 8D 02 42 STA $4202 C3/5A36: A9 09 LDA #$09 C3/5A38: 8D 03 42 STA $4203 C3/5A3B: A0 13 47 LDY #$4713 C3/5A3E: 20 19 35 JSR $3519 ; init positioned text buffer C3/5A41: A6 00 LDX $00 C3/5A43: BF F7 5C C3 LDA $C35CF7,X C3/5A47: 8D 80 21 STA $2180 C3/5A4A: E8 INX C3/5A4B: E0 0E 00 CPX #$000E C3/5A4E: D0 F3 BNE $5A43 C3/5A50: AE 16 42 LDX $4216 C3/5A53: A0 09 00 LDY #$0009 C3/5A56: BF AE FE CF LDA $CFFEAE,X ; esper bonus names C3/5A5A: 8D 80 21 STA $2180 C3/5A5D: E8 INX C3/5A5E: 88 DEY C3/5A5F: D0 F5 BNE $5A56 C3/5A61: 9C 80 21 STZ $2180 C3/5A64: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5A67: A0 13 47 LDY #$4713 C3/5A6A: 20 19 35 JSR $3519 ; init positioned text buffer C3/5A6D: A0 17 00 LDY #$0017 C3/5A70: A2 8B 9E LDX #$9E8B C3/5A73: 8E 81 21 STX $2181 C3/5A76: A9 FF LDA #$FF C3/5A78: 8D 80 21 STA $2180 C3/5A7B: 88 DEY C3/5A7C: D0 FA BNE $5A78 C3/5A7E: 9C 80 21 STZ $2180 C3/5A81: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5A84: 20 3D 5B JSR $5B3D C3/5A87: C2 20 REP #$20 C3/5A89: 8A TXA C3/5A8A: 8F 89 9E 7E STA $7E9E89 C3/5A8E: E2 20 SEP #$20 C3/5A90: A2 8B 9E LDX #$9E8B C3/5A93: 8E 81 21 STX $2181 C3/5A96: A5 E1 LDA $E1 C3/5A98: C9 FF CMP #$FF C3/5A9A: F0 35 BEQ $5AD1 C3/5A9C: 20 A2 50 JSR $50A2 C3/5A9F: C9 FF CMP #$FF C3/5AA1: F0 1F BEQ $5AC2 C3/5AA3: 48 PHA C3/5AA4: A9 FF LDA #$FF C3/5AA6: 8D 80 21 STA $2180 C3/5AA9: 68 PLA C3/5AAA: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5AAD: A5 F8 LDA $F8 C3/5AAF: 8D 80 21 STA $2180 C3/5AB2: A5 F9 LDA $F9 C3/5AB4: 8D 80 21 STA $2180 C3/5AB7: A9 CD LDA #$CD C3/5AB9: 8D 80 21 STA $2180 C3/5ABC: 9C 80 21 STZ $2180 C3/5ABF: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5AC2: A9 B5 LDA #$B5 C3/5AC4: 8D 80 21 STA $2180 C3/5AC7: A9 B4 LDA #$B4 C3/5AC9: 8D 80 21 STA $2180 C3/5ACC: 8D 80 21 STA $2180 C3/5ACF: 80 E6 BRA $5AB7 C3/5AD1: A9 FF LDA #$FF C3/5AD3: 8D 80 21 STA $2180 C3/5AD6: 8D 80 21 STA $2180 C3/5AD9: 8D 80 21 STA $2180 C3/5ADC: 8D 80 21 STA $2180 C3/5ADF: 80 DB BRA $5ABC C3/5AE1: 20 3D 5B JSR $5B3D C3/5AE4: C2 20 REP #$20 C3/5AE6: 8A TXA C3/5AE7: 8F 89 9E 7E STA $7E9E89 C3/5AEB: E2 20 SEP #$20 C3/5AED: 20 B5 4F JSR $4FB5 C3/5AF0: A5 E1 LDA $E1 C3/5AF2: C9 FF CMP #$FF C3/5AF4: F0 30 BEQ $5B26 C3/5AF6: 20 67 84 JSR $8467 C3/5AF9: A2 92 9E LDX #$9E92 C3/5AFC: 8E 81 21 STX $2181 C3/5AFF: A9 C1 LDA #$C1 C3/5B01: 8D 80 21 STA $2180 C3/5B04: A9 FF LDA #$FF C3/5B06: 8D 80 21 STA $2180 C3/5B09: 8D 80 21 STA $2180 C3/5B0C: A9 D7 LDA #$D7 C3/5B0E: 8D 80 21 STA $2180 C3/5B11: A5 E0 LDA $E0 C3/5B13: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5B16: A5 F8 LDA $F8 C3/5B18: 8D 80 21 STA $2180 C3/5B1B: A5 F9 LDA $F9 C3/5B1D: 8D 80 21 STA $2180 C3/5B20: 9C 80 21 STZ $2180 C3/5B23: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5B26: A0 0F 00 LDY #$000F C3/5B29: A2 8B 9E LDX #$9E8B C3/5B2C: 8E 81 21 STX $2181 C3/5B2F: A9 FF LDA #$FF C3/5B31: 8D 80 21 STA $2180 C3/5B34: 88 DEY C3/5B35: D0 FA BNE $5B31 C3/5B37: 9C 80 21 STZ $2180 C3/5B3A: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5B3D: C2 20 REP #$20 C3/5B3F: 98 TYA C3/5B40: 0A ASL C3/5B41: 0A ASL C3/5B42: 0A ASL C3/5B43: 0A ASL C3/5B44: 0A ASL C3/5B45: 0A ASL C3/5B46: 85 E7 STA $E7 C3/5B48: 8A TXA C3/5B49: 0A ASL C3/5B4A: 18 CLC C3/5B4B: 65 E7 ADC $E7 C3/5B4D: 69 49 40 ADC #$4049 C3/5B50: AA TAX C3/5B51: E2 20 SEP #$20 C3/5B53: 60 RTS C3/5B54: 7B TDC C3/5B55: A5 99 LDA $99 C3/5B57: 8F 8D AB 7E STA $7EAB8D C3/5B5B: A5 4B LDA $4B C3/5B5D: AA TAX C3/5B5E: BF 89 9D 7E LDA $7E9D89,X C3/5B62: 8D 02 42 STA $4202 C3/5B65: A9 0B LDA #$0B C3/5B67: 8D 03 42 STA $4203 C3/5B6A: 8B PHB C3/5B6B: A9 7E LDA #$7E C3/5B6D: 48 PHA C3/5B6E: AB PLB C3/5B6F: A0 01 00 LDY #$0001 C3/5B72: C2 20 REP #$20 C3/5B74: AF 16 42 00 LDA $004216 C3/5B78: AA TAX C3/5B79: E2 20 SEP #$20 C3/5B7B: E8 INX C3/5B7C: BF 00 6E D8 LDA $D86E00,X C3/5B80: 99 8D AB STA $AB8D,Y C3/5B83: E8 INX C3/5B84: C8 INY C3/5B85: C0 06 00 CPY #$0006 C3/5B88: D0 F1 BNE $5B7B C3/5B8A: BF 00 6E D8 LDA $D86E00,X C3/5B8E: 8D 93 AB STA $AB93 C3/5B91: AB PLB C3/5B92: 60 RTS C3/5B93: A2 C9 9E LDX #$9EC9 C3/5B96: 8E 81 21 STX $2181 C3/5B99: 7B TDC C3/5B9A: A5 4B LDA $4B C3/5B9C: AA TAX C3/5B9D: BF 8D AB 7E LDA $7EAB8D,X C3/5BA1: C9 FF CMP #$FF C3/5BA3: F0 2C BEQ $5BD1 C3/5BA5: 48 PHA C3/5BA6: 20 DB 5B JSR $5BDB C3/5BA9: 68 PLA C3/5BAA: C2 20 REP #$20 C3/5BAC: 0A ASL C3/5BAD: A8 TAY C3/5BAE: B7 E7 LDA [$E7],Y C3/5BB0: A8 TAY C3/5BB1: E2 20 SEP #$20 C3/5BB3: B7 EB LDA [$EB],Y C3/5BB5: F0 06 BEQ $5BBD C3/5BB7: 8D 80 21 STA $2180 C3/5BBA: C8 INY C3/5BBB: 80 F6 BRA $5BB3 C3/5BBD: 88 DEY C3/5BBE: B7 EB LDA [$EB],Y C3/5BC0: C8 INY C3/5BC1: C9 1C CMP #$1C C3/5BC3: F0 10 BEQ $5BD5 C3/5BC5: C9 1D CMP #$1D C3/5BC7: F0 0C BEQ $5BD5 C3/5BC9: C9 1E CMP #$1E C3/5BCB: F0 08 BEQ $5BD5 C3/5BCD: C9 1F CMP #$1F C3/5BCF: F0 04 BEQ $5BD5 C3/5BD1: 9C 80 21 STZ $2180 C3/5BD4: 60 RTS C3/5BD5: 9C 80 21 STZ $2180 C3/5BD8: C8 INY C3/5BD9: 80 D8 BRA $5BB3 C3/5BDB: A5 4B LDA $4B C3/5BDD: F0 2A BEQ $5C09 C3/5BDF: C9 06 CMP #$06 C3/5BE1: F0 13 BEQ $5BF6 C3/5BE3: A2 80 CF LDX #$CF80 ; $D8CF80 (pointers to spell descriptions) C3/5BE6: 86 E7 STX $E7 C3/5BE8: A2 A0 C9 LDX #$C9A0 ; $D8C9A0 (spell descriptions) C3/5BEB: 86 EB STX $EB C3/5BED: A9 D8 LDA #$D8 C3/5BEF: 85 E9 STA $E9 C3/5BF1: A9 D8 LDA #$D8 C3/5BF3: 85 ED STA $ED C3/5BF5: 60 RTS C3/5BF6: A2 D0 FF LDX #$FFD0 ; $EDFFD0 (pointers to esper bonus descriptions) C3/5BF9: 86 E7 STX $E7 C3/5BFB: A2 00 FE LDX #$FE00 ; $EDFE00 (esper bonus descriptions) C3/5BFE: 86 EB STX $EB C3/5C00: A9 ED LDA #$ED C3/5C02: 85 E9 STA $E9 C3/5C04: A9 ED LDA #$ED C3/5C06: 85 ED STA $ED C3/5C08: 60 RTS C3/5C09: A2 40 FE LDX #$FE40 ; $CFFE40 (pointers to esper attack descriptions) C3/5C0C: 86 E7 STX $E7 C3/5C0E: A2 40 39 LDX #$3940 ; $CF3940 (esper attack descriptions) C3/5C11: 86 EB STX $EB C3/5C13: A9 CF LDA #$CF C3/5C15: 85 E9 STA $E9 C3/5C17: A9 CF LDA #$CF C3/5C19: 85 ED STA $ED C3/5C1B: 60 RTS C3/5C1C: .DW $0000, $0000, $0000, $2097, $2098, $208B, $2091, $20D6 C3/5C2C: .DW $A0D4, $60D6, $20D5, $C0D6, $20D4, $A0D6, $60D5 C3/5C3A: .DW $5C48, $5C51, $5C59, $5C63, $5C6B, $5C72, $5C79 C3/5C48: .DB $0D, $79, $84, $AC, $A9, $9E, $AB, $AC, $00 C3/5C51: .DB $8D, $79, $8C, $9A, $A0, $A2, $9C, $00 C3/5C59: .DB $8D, $7A, $92, $B0, $9D, $93, $9E, $9C, $A1, $00 C3/5C63: .DB $0D, $7B, $81, $A5, $A2, $AD, $B3, $00 C3/5C6B: .DB $8D, $7B, $8B, $A8, $AB, $9E, $00 C3/5C72: .DB $0D, $7C, $91, $9A, $A0, $9E, $00 C3/5C79: .DB $8D, $7C, $83, $9A, $A7, $9C, $9E, $00 C3/5C81: .DW $5CC2, $5CC7, $5CCC ; text for small skills window ; C3/5C87: bg3_1(23,5) "MP_ " ; C3/5C91: bg3_1(23,5) "Lore" ; C3/5C98: bg3_1(23,5) "Rage" ; C3/5C9F: bg3_1(23,5) "Dance" ; C3/5CA7: bg3_1(23,5) "Espers" ; C3/5CB0: bg3_1(23,5) "Blitz" ; C3/5CB8: bg3_1(23,5) "SwdTech" ; there's a bug here: if you first select "Espers" and then select "Rage" for example, the last two ; characters of Espers don't get erased and it instead displays "Ragers" C3/5C87: .DW $81B7 \ .DB $8C, $8F, $C7, $FF, $FF, $FF, $FF, $00 C3/5C91: .DW $81B7 \ .DB $8B, $A8, $AB, $9E, $00 C3/5C98: .DW $81B7 \ .DB $91, $9A, $A0, $9E, $00 C3/5C9F: .DW $81B7 \ .DB $83, $9A, $A7, $9C, $9E, $00 C3/5CA7: .DW $81B7 \ .DB $84, $AC, $A9, $9E, $AB, $AC, $00 C3/5CB0: .DW $81B7 \ .DB $81, $A5, $A2, $AD, $B3, $00 C3/5CB8: .DW $81B7 \ .DB $92, $B0, $9D, $93, $9E, $9C, $A1, $00 ; "LV" ; "HP" ; "MP" ; "/" ; "/" ; " has it!" ; "Skill" ; "Learn.Rate" ; "At level up..." C3/5CC2: .DW $422D \ .DB $8B, $95, $00 C3/5CC7: .DW $42AD \ .DB $87, $8F, $00 C3/5CCC: .DW $432D \ .DB $8C, $8F, $00 C3/5CD1: .DW $42BB \ .DB $C0, $00 C3/5CD5: .DW $433B \ .DB $C0, $00 C3/5CD9: .DB $FF, $A1, $9A, $AC, $FF, $A2, $AD, $BE, $00 C3/5CE2: .DW $4439 \ .DB $92, $A4, $A2, $A5, $A5, $00 C3/5CEA: .DW $4423 \ .DB $8B, $9E, $9A, $AB, $A7, $C5, $91, $9A, $AD, $9E, $00 C3/5CF7: .DB $80, $AD, $FF, $A5, $9E, $AF, $9E, $A5, $FF, $AE, $A9, $C5, $C5, $C5 ; -------------------------------------------[ Menu: Status ]------------------------------------------- C3/5D05: 20 17 5D JSR $5D17 C3/5D08: 20 C1 5D JSR $5DC1 C3/5D0B: 20 3C 5D JSR $5D3C C3/5D0E: 20 8D 5F JSR $5F8D C3/5D11: 20 77 5D JSR $5D77 C3/5D14: 4C AC 61 JMP $61AC C3/5D17: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/5D1A: 20 23 6A JSR $6A23 ; clear bg1 data (bottom right screen) C3/5D1D: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/5D20: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/5D23: 20 46 6A JSR $6A46 ; clear bg3 data (bottom left screen) C3/5D26: 20 4B 6A JSR $6A4B ; clear bg3 data (bottom right screen) C3/5D29: A0 81 5F LDY #$5F81 C3/5D2C: 20 41 03 JSR $0341 ; draw window C3/5D2F: A0 79 5F LDY #$5F79 C3/5D32: 20 41 03 JSR $0341 ; draw window C3/5D35: A0 7D 5F LDY #$5F7D C3/5D38: 20 41 03 JSR $0341 ; draw window C3/5D3B: 60 RTS C3/5D3C: 20 41 5D JSR $5D41 C3/5D3F: 80 1B BRA $5D5C C3/5D41: A9 20 LDA #$20 C3/5D43: 85 29 STA $29 C3/5D45: A2 5B 64 LDX #$645B C3/5D48: A0 08 00 LDY #$0008 C3/5D4B: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/5D4E: A9 24 LDA #$24 C3/5D50: 85 29 STA $29 C3/5D52: A2 55 64 LDX #$6455 C3/5D55: A0 06 00 LDY #$0006 C3/5D58: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/5D5B: 60 RTS C3/5D5C: A9 2C LDA #$2C C3/5D5E: 85 29 STA $29 C3/5D60: A2 37 64 LDX #$6437 C3/5D63: A0 1E 00 LDY #$001E C3/5D66: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/5D69: A9 2C LDA #$2C C3/5D6B: 85 29 STA $29 C3/5D6D: A2 63 64 LDX #$6463 C3/5D70: A0 0C 00 LDY #$000C C3/5D73: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/5D76: 60 RTS C3/5D77: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/5D7A: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/5D7D: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/5D80: 4C 7C 0E JMP $0E7C ; copy bg3 data to vram (bottom screens) C3/5D83: 20 41 5D JSR $5D41 C3/5D86: 20 8D 5F JSR $5F8D C3/5D89: 20 A2 61 JSR $61A2 C3/5D8C: A0 00 00 LDY #$0000 C3/5D8F: 84 14 STY $14 C3/5D91: A0 49 38 LDY #$3849 C3/5D94: 84 16 STY $16 C3/5D96: A0 00 08 LDY #$0800 C3/5D99: 84 12 STY $12 C3/5D9B: A0 00 40 LDY #$4000 C3/5D9E: 84 1B STY $1B C3/5DA0: A0 49 78 LDY #$7849 C3/5DA3: 84 1D STY $1D C3/5DA5: A0 00 08 LDY #$0800 C3/5DA8: 84 19 STY $19 C3/5DAA: 20 B0 11 JSR $11B0 ; execute threads C3/5DAD: 20 68 13 JSR $1368 ; wait for vblank C3/5DB0: A4 00 LDY $00 C3/5DB2: 84 1B STY $1B C3/5DB4: A0 00 48 LDY #$4800 C3/5DB7: 84 14 STY $14 C3/5DB9: A0 49 88 LDY #$8849 C3/5DBC: 84 16 STY $16 C3/5DBE: 4C 68 13 JMP $1368 ; wait for vblank C3/5DC1: A2 09 9E LDX #$9E09 C3/5DC4: 8E 81 21 STX $2181 C3/5DC7: 7B TDC C3/5DC8: AA TAX C3/5DC9: DA PHX C3/5DCA: C2 20 REP #$20 C3/5DCC: 8A TXA C3/5DCD: 0A ASL C3/5DCE: AA TAX C3/5DCF: AD DC 1E LDA $1EDC C3/5DD2: 3F 67 9C C3 AND $C39C67,X C3/5DD6: F0 23 BEQ $5DFB C3/5DD8: C2 20 REP #$20 C3/5DDA: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/5DDE: AA TAX C3/5DDF: E2 20 SEP #$20 C3/5DE1: BD 16 00 LDA $0016,X C3/5DE4: 8D 80 21 STA $2180 C3/5DE7: BD 17 00 LDA $0017,X C3/5DEA: 8D 80 21 STA $2180 C3/5DED: BD 18 00 LDA $0018,X C3/5DF0: 8D 80 21 STA $2180 C3/5DF3: BD 19 00 LDA $0019,X C3/5DF6: 8D 80 21 STA $2180 C3/5DF9: 80 10 BRA $5E0B C3/5DFB: E2 20 SEP #$20 C3/5DFD: A9 FF LDA #$FF C3/5DFF: 8D 80 21 STA $2180 C3/5E02: 8D 80 21 STA $2180 C3/5E05: 8D 80 21 STA $2180 C3/5E08: 8D 80 21 STA $2180 C3/5E0B: FA PLX C3/5E0C: E8 INX C3/5E0D: E0 10 00 CPX #$0010 C3/5E10: D0 B7 BNE $5DC9 C3/5E12: 7B TDC C3/5E13: AA TAX C3/5E14: DA PHX C3/5E15: BF 09 9E 7E LDA $7E9E09,X C3/5E19: DF 0A 9E 7E CMP $7E9E0A,X C3/5E1D: D0 08 BNE $5E27 C3/5E1F: 48 PHA C3/5E20: A9 FF LDA #$FF C3/5E22: 9F 0A 9E 7E STA $7E9E0A,X C3/5E26: 68 PLA C3/5E27: E8 INX C3/5E28: E0 40 00 CPX #$0040 C3/5E2B: D0 EC BNE $5E19 C3/5E2D: FA PLX C3/5E2E: E8 INX C3/5E2F: E0 40 00 CPX #$0040 C3/5E32: D0 E0 BNE $5E14 C3/5E34: A2 8A 9D LDX #$9D8A C3/5E37: 8E 81 21 STX $2181 C3/5E3A: A9 FF LDA #$FF C3/5E3C: 8D 80 21 STA $2180 C3/5E3F: 7B TDC C3/5E40: AA TAX C3/5E41: A8 TAY C3/5E42: 7B TDC C3/5E43: DA PHX C3/5E44: BF 09 9E 7E LDA $7E9E09,X C3/5E48: 30 16 BMI $5E60 C3/5E4A: C9 12 CMP #$12 C3/5E4C: F0 12 BEQ $5E60 C3/5E4E: 85 E0 STA $E0 C3/5E50: 0A ASL C3/5E51: AA TAX C3/5E52: BF 00 FE CF LDA $CFFE00,X ; battle command data C3/5E56: 29 01 AND #$01 C3/5E58: F0 06 BEQ $5E60 ; branch if command can't be used by gogo C3/5E5A: A5 E0 LDA $E0 C3/5E5C: 8D 80 21 STA $2180 C3/5E5F: C8 INY C3/5E60: FA PLX C3/5E61: E8 INX C3/5E62: E0 40 00 CPX #$0040 C3/5E65: D0 DB BNE $5E42 C3/5E67: C8 INY C3/5E68: 98 TYA C3/5E69: 8F 89 9D 7E STA $7E9D89 C3/5E6D: A2 8D AA LDX #$AA8D C3/5E70: 8E 81 21 STX $2181 C3/5E73: 7B TDC C3/5E74: AA TAX C3/5E75: BF 85 5F C3 LDA $C35F85,X C3/5E79: 8D 80 21 STA $2180 C3/5E7C: E8 INX C3/5E7D: E0 08 00 CPX #$0008 C3/5E80: D0 F3 BNE $5E75 C3/5E82: 98 TYA C3/5E83: 85 E2 STA $E2 C3/5E85: 18 CLC C3/5E86: 65 E2 ADC $E2 C3/5E88: 65 E2 ADC $E2 C3/5E8A: 29 FE AND #$FE C3/5E8C: F0 02 BEQ $5E90 C3/5E8E: 1A INC C3/5E8F: 1A INC C3/5E90: 4A LSR C3/5E91: 8F 90 AA 7E STA $7EAA90 C3/5E95: 8F 94 AA 7E STA $7EAA94 C3/5E99: A0 8D AA LDY #$AA8D C3/5E9C: A9 7E LDA #$7E C3/5E9E: 85 E9 STA $E9 C3/5EA0: 20 45 03 JSR $0345 C3/5EA3: A0 91 AA LDY #$AA91 C3/5EA6: A9 7E LDA #$7E C3/5EA8: 85 E9 STA $E9 C3/5EAA: 20 45 03 JSR $0345 C3/5EAD: AF 89 9D 7E LDA $7E9D89 C3/5EB1: 85 E5 STA $E5 C3/5EB3: 64 E6 STZ $E6 C3/5EB5: 7B TDC C3/5EB6: AA TAX C3/5EB7: A0 C9 80 LDY #$80C9 C3/5EBA: DA PHX C3/5EBB: 5A PHY C3/5EBC: BF 8A 9D 7E LDA $7E9D8A,X C3/5EC0: 20 D7 5E JSR $5ED7 C3/5EC3: 7A PLY C3/5EC4: C2 20 REP #$20 C3/5EC6: 98 TYA C3/5EC7: 18 CLC C3/5EC8: 69 80 00 ADC #$0080 C3/5ECB: A8 TAY C3/5ECC: E2 20 SEP #$20 C3/5ECE: FA PLX C3/5ECF: E8 INX C3/5ED0: E4 E5 CPX $E5 C3/5ED2: D0 E6 BNE $5EBA C3/5ED4: 4C 50 5F JMP $5F50 C3/5ED7: 48 PHA C3/5ED8: 20 19 35 JSR $3519 ; init positioned text buffer C3/5EDB: 68 PLA C3/5EDC: 30 2E BMI $5F0C C3/5EDE: 4C E6 5E JMP $5EE6 C3/5EE1: 20 2C 61 JSR $612C C3/5EE4: 30 26 BMI $5F0C C3/5EE6: 20 25 5F JSR $5F25 C3/5EE9: 85 E2 STA $E2 C3/5EEB: 48 PHA C3/5EEC: 0A ASL C3/5EED: 0A ASL C3/5EEE: 85 E0 STA $E0 C3/5EF0: 68 PLA C3/5EF1: 0A ASL C3/5EF2: 18 CLC C3/5EF3: 65 E0 ADC $E0 C3/5EF5: 65 E2 ADC $E2 C3/5EF7: AA TAX C3/5EF8: A0 07 00 LDY #$0007 C3/5EFB: BF A0 CE D8 LDA $D8CEA0,X ; battle command names C3/5EFF: 8D 80 21 STA $2180 C3/5F02: E8 INX C3/5F03: 88 DEY C3/5F04: D0 F5 BNE $5EFB C3/5F06: 9C 80 21 STZ $2180 C3/5F09: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/5F0C: A9 FF LDA #$FF C3/5F0E: 8D 80 21 STA $2180 C3/5F11: 8D 80 21 STA $2180 C3/5F14: 8D 80 21 STA $2180 C3/5F17: 8D 80 21 STA $2180 C3/5F1A: 8D 80 21 STA $2180 C3/5F1D: 8D 80 21 STA $2180 C3/5F20: 8D 80 21 STA $2180 C3/5F23: 80 E1 BRA $5F06 C3/5F25: 48 PHA C3/5F26: C9 0B CMP #$0B C3/5F28: F0 10 BEQ $5F3A C3/5F2A: C9 07 CMP #$07 C3/5F2C: F0 16 BEQ $5F44 C3/5F2E: A9 20 LDA #$20 C3/5F30: 85 29 STA $29 C3/5F32: 68 PLA C3/5F33: 60 RTS C3/5F34: A9 24 LDA #$24 C3/5F36: 85 29 STA $29 C3/5F38: 68 PLA C3/5F39: 60 RTS C3/5F3A: AD DA 11 LDA $11DA C3/5F3D: 0D DB 11 ORA $11DB C3/5F40: 10 F2 BPL $5F34 C3/5F42: 80 EA BRA $5F2E C3/5F44: AD DA 11 LDA $11DA C3/5F47: 0D DB 11 ORA $11DB C3/5F4A: 89 02 BIT #$02 C3/5F4C: F0 E6 BEQ $5F34 C3/5F4E: 80 DE BRA $5F2E C3/5F50: A2 CA 61 LDX #$61CA C3/5F53: 86 E7 STX $E7 C3/5F55: A9 7E LDA #$7E C3/5F57: 85 E9 STA $E9 C3/5F59: A2 06 00 LDX #$0006 C3/5F5C: 7B TDC C3/5F5D: A8 TAY C3/5F5E: A9 3D LDA #$3D C3/5F60: 97 E7 STA [$E7],Y C3/5F62: C8 INY C3/5F63: C8 INY C3/5F64: C0 12 00 CPY #$0012 C3/5F67: D0 F7 BNE $5F60 C3/5F69: C2 20 REP #$20 C3/5F6B: A5 E7 LDA $E7 C3/5F6D: 18 CLC C3/5F6E: 69 40 00 ADC #$0040 C3/5F71: 85 E7 STA $E7 C3/5F73: E2 20 SEP #$20 C3/5F75: CA DEX C3/5F76: D0 E4 BNE $5F5C C3/5F78: 60 RTS C3/5F79: .DB $8B, $58, $06, $01 C3/5F7D: .DB $EB, $5A, $09, $06 C3/5F81: .DB $8B, $58, $1C, $18 C3/5F85: .DB $C7, $58, $00, $12 C3/5F89: .DB $87, $60, $07, $12 C3/5F8D: 7B TDC C3/5F8E: A5 28 LDA $28 C3/5F90: 0A ASL C3/5F91: AA TAX C3/5F92: 7C 95 5F JMP ($5F95,X) C3/5F95: .DW $5F9D, $5FA7, $5FB1, $5FBB C3/5F9D: A6 6D LDX $6D C3/5F9F: 86 67 STX $67 C3/5FA1: 7B TDC C3/5FA2: A5 69 LDA $69 C3/5FA4: 4C C2 5F JMP $5FC2 C3/5FA7: A6 6F LDX $6F C3/5FA9: 86 67 STX $67 C3/5FAB: 7B TDC C3/5FAC: A5 6A LDA $6A C3/5FAE: 4C C2 5F JMP $5FC2 C3/5FB1: A6 71 LDX $71 C3/5FB3: 86 67 STX $67 C3/5FB5: 7B TDC C3/5FB6: A5 6B LDA $6B C3/5FB8: 4C C2 5F JMP $5FC2 C3/5FBB: A6 73 LDX $73 C3/5FBD: 86 67 STX $67 C3/5FBF: 7B TDC C3/5FC0: A5 6C LDA $6C C3/5FC2: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/5FC6: A4 67 LDY $67 C3/5FC8: 20 E8 99 JSR $99E8 C3/5FCB: A9 20 LDA #$20 C3/5FCD: 85 29 STA $29 C3/5FCF: AD A6 11 LDA $11A6 C3/5FD2: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5FD5: A2 E1 7E LDX #$7EE1 C3/5FD8: 20 C0 04 JSR $04C0 C3/5FDB: AD A4 11 LDA $11A4 C3/5FDE: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5FE1: A2 61 7F LDX #$7F61 C3/5FE4: 20 C0 04 JSR $04C0 C3/5FE7: AD A2 11 LDA $11A2 C3/5FEA: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5FED: A2 E1 7F LDX #$7FE1 C3/5FF0: 20 C0 04 JSR $04C0 C3/5FF3: AD A0 11 LDA $11A0 C3/5FF6: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/5FF9: A2 61 88 LDX #$8861 C3/5FFC: 20 C0 04 JSR $04C0 C3/5FFF: 20 71 93 JSR $9371 C3/6002: AD AC 11 LDA $11AC C3/6005: 18 CLC C3/6006: 6D AD 11 ADC $11AD C3/6009: 85 F3 STA $F3 C3/600B: 7B TDC C3/600C: 69 00 ADC #$00 C3/600E: 85 F4 STA $F4 C3/6010: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/6013: A2 7D 7E LDX #$7E7D C3/6016: 20 86 04 JSR $0486 C3/6019: AD BA 11 LDA $11BA C3/601C: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/601F: A2 FD 7E LDX #$7EFD C3/6022: 20 C0 04 JSR $04C0 C3/6025: AD A8 11 LDA $11A8 C3/6028: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/602B: A2 7D 7F LDX #$7F7D C3/602E: 20 C0 04 JSR $04C0 C3/6031: AD BB 11 LDA $11BB C3/6034: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/6037: A2 FD 7F LDX #$7FFD C3/603A: 20 C0 04 JSR $04C0 C3/603D: AD AA 11 LDA $11AA C3/6040: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/6043: A2 7D 88 LDX #$887D C3/6046: 20 C0 04 JSR $04C0 C3/6049: A0 8F 39 LDY #$398F C3/604C: 20 CF 34 JSR $34CF ; draw character name C3/604F: A0 9D 39 LDY #$399D C3/6052: 20 E5 34 JSR $34E5 ; draw character title (dummy) C3/6055: A0 B1 39 LDY #$39B1 C3/6058: 20 E6 34 JSR $34E6 ; draw equipped esper name C3/605B: 20 02 61 JSR $6102 C3/605E: A9 20 LDA #$20 C3/6060: 85 29 STA $29 C3/6062: A2 96 60 LDX #$6096 C3/6065: 20 6C 0C JSR $0C6C ; draw hp/mp/lv number text C3/6068: A6 67 LDX $67 C3/606A: BD 11 00 LDA $0011,X C3/606D: 85 F1 STA $F1 C3/606F: BD 12 00 LDA $0012,X C3/6072: 85 F2 STA $F2 C3/6074: BD 13 00 LDA $0013,X C3/6077: 85 F3 STA $F3 C3/6079: 20 82 05 JSR $0582 ; convert hex to decimal (8 digits) C3/607C: A2 D7 7C LDX #$7CD7 C3/607F: 20 A3 04 JSR $04A3 C3/6082: 20 A0 60 JSR $60A0 C3/6085: 20 82 05 JSR $0582 ; convert hex to decimal (8 digits) C3/6088: A2 D7 7D LDX #$7DD7 C3/608B: 20 A3 04 JSR $04A3 C3/608E: 64 47 STZ $47 C3/6090: 20 B0 11 JSR $11B0 ; execute threads C3/6093: 4C 5B 62 JMP $625B ; ram addresses for LV/HP/MP text (status) C3/6096: .DW $3A27, $3A63, $3A6D, $3AA3, $3AAD C3/60A0: A6 67 LDX $67 C3/60A2: 7B TDC C3/60A3: BD 08 00 LDA $0008,X C3/60A6: C9 63 CMP #$63 C3/60A8: F0 19 BEQ $60C3 C3/60AA: 20 CA 60 JSR $60CA C3/60AD: A6 67 LDX $67 C3/60AF: 38 SEC C3/60B0: A5 F1 LDA $F1 C3/60B2: FD 11 00 SBC $0011,X C3/60B5: 85 F1 STA $F1 C3/60B7: C2 20 REP #$20 C3/60B9: A5 F2 LDA $F2 C3/60BB: FD 12 00 SBC $0012,X C3/60BE: 85 F2 STA $F2 C3/60C0: E2 20 SEP #$20 C3/60C2: 60 RTS C3/60C3: 7B TDC C3/60C4: AA TAX C3/60C5: 86 F1 STX $F1 C3/60C7: 64 F3 STZ $F3 C3/60C9: 60 RTS C3/60CA: 0A ASL C3/60CB: 85 EB STA $EB C3/60CD: 7B TDC C3/60CE: AA TAX C3/60CF: 86 F1 STX $F1 C3/60D1: 86 F3 STX $F3 C3/60D3: 64 EC STZ $EC C3/60D5: 18 CLC C3/60D6: BF 20 82 ED LDA $ED8220,X ; experience progression data C3/60DA: 65 F1 ADC $F1 C3/60DC: 85 F1 STA $F1 C3/60DE: E8 INX C3/60DF: BF 20 82 ED LDA $ED8220,X C3/60E3: 65 F2 ADC $F2 C3/60E5: 85 F2 STA $F2 C3/60E7: 7B TDC C3/60E8: 65 F3 ADC $F3 C3/60EA: 85 F3 STA $F3 C3/60EC: E8 INX C3/60ED: E4 EB CPX $EB C3/60EF: D0 E4 BNE $60D5 C3/60F1: C2 20 REP #$20 C3/60F3: 06 F1 ASL $F1 C3/60F5: 26 F3 ROL $F3 C3/60F7: 06 F1 ASL $F1 C3/60F9: 26 F3 ROL $F3 C3/60FB: 06 F1 ASL $F1 C3/60FD: 26 F3 ROL $F3 C3/60FF: E2 20 SEP #$20 C3/6101: 60 RTS C3/6102: A0 F1 7B LDY #$7BF1 C3/6105: 20 19 35 JSR $3519 ; init positioned text buffer C3/6108: 20 E1 5E JSR $5EE1 C3/610B: A0 71 7C LDY #$7C71 C3/610E: 20 19 35 JSR $3519 ; init positioned text buffer C3/6111: C8 INY C3/6112: 20 E1 5E JSR $5EE1 C3/6115: A0 F1 7C LDY #$7CF1 C3/6118: 20 19 35 JSR $3519 ; init positioned text buffer C3/611B: C8 INY C3/611C: C8 INY C3/611D: 20 E1 5E JSR $5EE1 C3/6120: A0 71 7D LDY #$7D71 C3/6123: 20 19 35 JSR $3519 ; init positioned text buffer C3/6126: C8 INY C3/6127: C8 INY C3/6128: C8 INY C3/6129: 4C E1 5E JMP $5EE1 C3/612C: B9 16 00 LDA $0016,Y ; battle command C3/612F: C9 02 CMP #$02 ; command $02 (magic) C3/6131: D0 0B BNE $613E C3/6133: 5A PHY C3/6134: 20 2B 0D JSR $0D2B ; check if character has mp C3/6137: B0 04 BCS $613D C3/6139: 7A PLY C3/613A: A9 FF LDA #$FF C3/613C: 60 RTS C3/613D: 7A PLY C3/613E: B9 16 00 LDA $0016,Y C3/6141: C9 03 CMP #$03 ; command $03 (morph) C3/6143: D0 0A BNE $614F C3/6145: AD D1 1D LDA $1DD1 C3/6148: 89 04 BIT #$04 C3/614A: D0 03 BNE $614F C3/614C: A9 FF LDA #$FF C3/614E: 60 RTS C3/614F: B9 16 00 LDA $0016,Y C3/6152: C9 11 CMP #$11 ; command $11 (leap) C3/6154: D0 0A BNE $6160 C3/6156: AD E4 11 LDA $11E4 C3/6159: 89 04 BIT #$04 C3/615B: D0 03 BNE $6160 C3/615D: A9 FF LDA #$FF C3/615F: 60 RTS C3/6160: B9 16 00 LDA $0016,Y C3/6163: C9 13 CMP #$13 ; command $13 (dance) C3/6165: D0 08 BNE $616F C3/6167: AD 4C 1D LDA $1D4C C3/616A: D0 03 BNE $616F C3/616C: A9 FF LDA #$FF C3/616E: 60 RTS C3/616F: B9 16 00 LDA $0016,Y C3/6172: 85 E0 STA $E0 C3/6174: 7B TDC C3/6175: AA TAX C3/6176: AD D6 11 LDA $11D6 ; relic effects 2 (modified commands) C3/6179: 29 7C AND #$7C C3/617B: 0A ASL C3/617C: 0A ASL C3/617D: 90 0A BCC $6189 C3/617F: 48 PHA C3/6180: BF 98 61 C3 LDA $C36198,X C3/6184: C5 E0 CMP $E0 C3/6186: F0 0A BEQ $6192 C3/6188: 68 PLA C3/6189: E8 INX C3/618A: E0 05 00 CPX #$0005 C3/618D: D0 ED BNE $617C C3/618F: A5 E0 LDA $E0 C3/6191: 60 RTS C3/6192: 68 PLA C3/6193: BF 9D 61 C3 LDA $C3619D,X C3/6197: 60 RTS ; base commands (steal, slot, sketch, magic, fight) C3/6198: .DB $05, $0F, $0D, $02, $00 ; relic-modified commands (capture, gp rain, control, x-magic, jump) C3/619D: .DB $06, $18, $0E, $17, $16 C3/61A2: 7B TDC C3/61A3: A5 60 LDA $60 C3/61A5: AA TAX C3/61A6: A9 FF LDA #$FF C3/61A8: 9F C9 35 7E STA $7E35C9,X C3/61AC: 20 DA 61 JSR $61DA C3/61AF: 4C E6 61 JMP $61E6 C3/61B2: 20 DA 61 JSR $61DA C3/61B5: 8B PHB C3/61B6: A9 7E LDA #$7E C3/61B8: 48 PHA C3/61B9: AB PLB C3/61BA: C2 20 REP #$20 C3/61BC: A9 C8 00 LDA #$00C8 C3/61BF: 9D CA 33 STA $33CA,X C3/61C2: E2 20 SEP #$20 C3/61C4: 7B TDC C3/61C5: A5 28 LDA $28 C3/61C7: A8 TAY C3/61C8: 20 CC 0A JSR $0ACC C3/61CB: C2 20 REP #$20 C3/61CD: A9 30 00 LDA #$0030 C3/61D0: 9D 4A 34 STA $344A,X C3/61D3: E2 20 SEP #$20 C3/61D5: 20 06 12 JSR $1206 ; init animation thread C3/61D8: AB PLB C3/61D9: 60 RTS C3/61DA: A9 03 LDA #$03 C3/61DC: A0 12 0B LDY #$0B12 C3/61DF: 20 73 11 JSR $1173 ; create thread C3/61E2: 8A TXA C3/61E3: 85 60 STA $60 C3/61E5: 60 RTS C3/61E6: 8B PHB C3/61E7: A9 7E LDA #$7E C3/61E9: 48 PHA C3/61EA: AB PLB C3/61EB: 7B TDC C3/61EC: A5 28 LDA $28 C3/61EE: A8 TAY C3/61EF: 20 F1 0A JSR $0AF1 C3/61F2: 7B TDC C3/61F3: A5 28 LDA $28 C3/61F5: A8 TAY C3/61F6: 20 FB 61 JSR $61FB C3/61F9: AB PLB C3/61FA: 60 RTS C3/61FB: 20 CC 0A JSR $0ACC C3/61FE: C2 20 REP #$20 C3/6200: A9 38 00 LDA #$0038 C3/6203: 9D 4A 34 STA $344A,X C3/6206: E2 20 SEP #$20 C3/6208: 4C 06 12 JMP $1206 ; init animation thread C3/620B: A9 02 LDA #$02 C3/620D: 8D 50 43 STA $4350 C3/6210: A9 12 LDA #$12 C3/6212: 8D 51 43 STA $4351 C3/6215: A0 2A 62 LDY #$622A C3/6218: 8C 52 43 STY $4352 C3/621B: A9 C3 LDA #$C3 C3/621D: 8D 54 43 STA $4354 C3/6220: A9 C3 LDA #$C3 C3/6222: 8D 57 43 STA $4357 C3/6225: A9 20 LDA #$20 C3/6227: 04 43 TSB $43 C3/6229: 60 RTS C3/622A: .DB $27, $00, $00, $0C, $04, $00, $0C, $08, $00, $0C, $0C, $00, $0C, $10, $00, $0C C3/623A: .DB $14, $00, $0C, $18, $00, $0C, $1C, $00, $0C, $20, $00, $0C, $24, $00, $0C, $28 C3/624A: .DB $00, $0C, $2C, $00, $0C, $30, $00, $0C, $34, $00, $0C, $38, $00, $0C, $3C, $00 C3/625A: .DB $00 C3/625B: A0 9D 39 LDY #$399D C3/625E: A2 50 20 LDX #$2050 C3/6261: 86 E7 STX $E7 C3/6263: 20 19 35 JSR $3519 ; init positioned text buffer C3/6266: B9 14 00 LDA $0014,Y C3/6269: 30 7C BMI $62E7 C3/626B: 29 70 AND #$70 C3/626D: 85 E1 STA $E1 C3/626F: B9 14 00 LDA $0014,Y C3/6272: 29 07 AND #$07 C3/6274: 0A ASL C3/6275: 85 E2 STA $E2 C3/6277: B9 15 00 LDA $0015,Y C3/627A: 29 80 AND #$80 C3/627C: 05 E1 ORA $E1 C3/627E: 05 E2 ORA $E2 C3/6280: 85 E1 STA $E1 C3/6282: F0 5D BEQ $62E1 C3/6284: 64 F1 STZ $F1 C3/6286: 64 F2 STZ $F2 C3/6288: A2 07 00 LDX #$0007 C3/628B: DA PHX C3/628C: 0A ASL C3/628D: 90 46 BCC $62D5 C3/628F: 48 PHA C3/6290: A9 03 LDA #$03 C3/6292: A0 42 7B LDY #$7B42 ; status icon thread C3/6295: 20 73 11 JSR $1173 ; create thread C3/6298: A9 01 LDA #$01 C3/629A: 9F 4A 36 7E STA $7E364A,X C3/629E: 7B TDC C3/629F: 9F 49 36 7E STA $7E3649,X C3/62A3: 9B TXY C3/62A4: A6 F1 LDX $F1 C3/62A6: 8B PHB C3/62A7: A9 7E LDA #$7E C3/62A9: 48 PHA C3/62AA: AB PLB C3/62AB: C2 20 REP #$20 C3/62AD: BF 25 EC D8 LDA $D8EC25,X ; pointers to status icon sprite data C3/62B1: 99 C9 32 STA $32C9,Y C3/62B4: E2 20 SEP #$20 C3/62B6: A5 E7 LDA $E7 C3/62B8: 99 CA 33 STA $33CA,Y C3/62BB: A5 E8 LDA $E8 C3/62BD: 99 4A 34 STA $344A,Y C3/62C0: 7B TDC C3/62C1: 99 CB 33 STA $33CB,Y C3/62C4: 99 4B 34 STA $344B,Y C3/62C7: A9 D8 LDA #$D8 C3/62C9: 99 CA 35 STA $35CA,Y C3/62CC: AB PLB C3/62CD: 18 CLC C3/62CE: A9 0A LDA #$0A C3/62D0: 65 E7 ADC $E7 C3/62D2: 85 E7 STA $E7 C3/62D4: 68 PLA C3/62D5: E6 F1 INC $F1 C3/62D7: E6 F1 INC $F1 C3/62D9: FA PLX C3/62DA: CA DEX C3/62DB: D0 AE BNE $628B C3/62DD: A9 20 LDA #$20 C3/62DF: 85 29 STA $29 C3/62E1: 20 06 63 JSR $6306 C3/62E4: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/62E7: A2 8B 9E LDX #$9E8B C3/62EA: 8E 81 21 STX $2181 C3/62ED: A6 00 LDX $00 C3/62EF: BF 1B 37 C3 LDA $C3371B,X C3/62F3: 8D 80 21 STA $2180 C3/62F6: E8 INX C3/62F7: E0 08 00 CPX #$0008 C3/62FA: D0 F3 BNE $62EF C3/62FC: 9C 80 21 STZ $2180 C3/62FF: A9 28 LDA #$28 C3/6301: 85 29 STA $29 C3/6303: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/6306: A2 8B 9E LDX #$9E8B C3/6309: 8E 81 21 STX $2181 C3/630C: A6 00 LDX $00 C3/630E: A9 FF LDA #$FF C3/6310: 8D 80 21 STA $2180 C3/6313: E8 INX C3/6314: E0 08 00 CPX #$0008 C3/6317: D0 F7 BNE $6310 C3/6319: 9C 80 21 STZ $2180 C3/631C: 60 RTS ; [ Menu State $42: ] C3/631D: 20 2F 35 JSR $352F ; disable interrupts C3/6320: AD 00 02 LDA $0200 C3/6323: 85 22 STA $22 C3/6325: 9C 00 02 STZ $0200 C3/6328: 64 25 STZ $25 C3/632A: A9 40 LDA #$40 C3/632C: 14 43 TRB $43 C3/632E: 20 0B 62 JSR $620B C3/6331: 20 54 63 JSR $6354 C3/6334: A9 01 LDA #$01 C3/6336: 85 26 STA $26 C3/6338: A9 43 LDA #$43 C3/633A: 85 27 STA $27 C3/633C: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $43: ] C3/633F: A5 09 LDA $09 C3/6341: 89 80 BIT #$80 C3/6343: F0 0E BEQ $6353 C3/6345: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/6348: A5 4C LDA $4C C3/634A: 85 27 STA $27 C3/634C: 64 26 STZ $26 C3/634E: A5 22 LDA $22 C3/6350: 8D 00 02 STA $0200 C3/6353: 60 RTS C3/6354: 20 17 5D JSR $5D17 C3/6357: 20 3C 5D JSR $5D3C C3/635A: 20 79 63 JSR $6379 C3/635D: 20 C2 5F JSR $5FC2 C3/6360: 20 77 5D JSR $5D77 C3/6363: 20 DA 61 JSR $61DA C3/6366: 8B PHB C3/6367: A9 7E LDA #$7E C3/6369: 48 PHA C3/636A: AB PLB C3/636B: 7B TDC C3/636C: A5 28 LDA $28 C3/636E: A8 TAY C3/636F: 20 8E 63 JSR $638E C3/6372: 7B TDC C3/6373: A8 TAY C3/6374: 20 FB 61 JSR $61FB C3/6377: AB PLB C3/6378: 60 RTS C3/6379: 7B TDC C3/637A: A5 C9 LDA $C9 C3/637C: 85 28 STA $28 C3/637E: 0A ASL C3/637F: AA TAX C3/6380: C2 20 REP #$20 C3/6382: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/6386: 85 67 STA $67 C3/6388: E2 20 SEP #$20 C3/638A: 7B TDC C3/638B: A5 C9 LDA $C9 C3/638D: 60 RTS C3/638E: B9 50 18 LDA $1850,Y C3/6391: 89 20 BIT #$20 C3/6393: F0 07 BEQ $639C C3/6395: C2 20 REP #$20 C3/6397: A9 1A 00 LDA #$001A C3/639A: 80 05 BRA $63A1 C3/639C: C2 20 REP #$20 C3/639E: A9 0E 00 LDA #$000E C3/63A1: 9D CA 33 STA $33CA,X C3/63A4: E2 20 SEP #$20 C3/63A6: 60 RTS ; [ Menu State $6A: ] C3/63A7: 20 09 64 JSR $6409 C3/63AA: A5 08 LDA $08 C3/63AC: 89 80 BIT #$80 C3/63AE: F0 2A BEQ $63DA C3/63B0: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/63B3: 9C 65 00 STZ $0065 C3/63B6: 7B TDC C3/63B7: A5 4B LDA $4B C3/63B9: AA TAX C3/63BA: BF 8A 9D 7E LDA $7E9D8A,X C3/63BE: 85 E0 STA $E0 C3/63C0: 7B TDC C3/63C1: A5 28 LDA $28 C3/63C3: 0A ASL C3/63C4: AA TAX C3/63C5: B4 6D LDY $6D,X C3/63C7: C2 20 REP #$20 C3/63C9: 98 TYA C3/63CA: 18 CLC C3/63CB: 65 64 ADC $64 C3/63CD: A8 TAY C3/63CE: E2 20 SEP #$20 C3/63D0: A5 E0 LDA $E0 C3/63D2: 99 16 00 STA $0016,Y C3/63D5: 20 02 61 JSR $6102 C3/63D8: 80 09 BRA $63E3 C3/63DA: A5 09 LDA $09 C3/63DC: 89 80 BIT #$80 C3/63DE: F0 22 BEQ $6402 C3/63E0: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/63E3: A9 01 LDA #$01 C3/63E5: 14 46 TRB $46 C3/63E7: A9 06 LDA #$06 C3/63E9: 85 20 STA $20 C3/63EB: A0 F4 FF LDY #$FFF4 C3/63EE: 84 9C STY $9C C3/63F0: A9 0C LDA #$0C C3/63F2: 85 27 STA $27 C3/63F4: A9 65 LDA #$65 C3/63F6: 85 26 STA $26 C3/63F8: 20 FF 36 JSR $36FF C3/63FB: A5 5E LDA $5E C3/63FD: 85 4E STA $4E C3/63FF: 20 08 37 JSR $3708 C3/6402: 60 RTS C3/6403: A0 12 64 LDY #$6412 C3/6406: 4C FE 05 JMP $05FE ; init cursor C3/6409: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/640C: A0 17 64 LDY #$6417 C3/640F: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/6412: .DB $80, $00, $00, $01, $10 C3/6417: .DW $10F0, $1CF0, $28F0, $34F0, $40F0, $4CF0, $58F0, $64F0 C3/6427: .DW $70F0, $7CF0, $88F0, $94F0, $A0F0, $ACF0, $B8F0, $C4F0 C3/6437: .DW $6497, $649F, $64A9, $64B3, $64BD, $64C7, $64CB, $64CF C3/6447: .DW $64D3, $64D7, $64DB, $64DF, $64E3, $64E7, $646F, $6488 C3/6457: .DW $648D, $6492, $6478, $647C, $6480, $6484, $64EB, $64F3 C3/6467: .DW $64FD, $6507, $6511, $651D C3/646F: .DB $CD, $78, $92, $AD, $9A, $AD, $AE, $AC, $00 C3/6478: .DB $6B, $3A, $C0, $00 C3/647C: .DB $AB, $3A, $C0, $00 C3/6480: .DB $83, $7F, $CD, $00 C3/6484: .DB $83, $88, $CD, $00 C3/6488: .DB $1D, $3A, $8B, $95, $00 C3/648D: .DB $5D, $3A, $87, $8F, $00 C3/6492: .DB $9D, $3A, $8C, $8F, $00 C3/6497: .DB $CF, $7E, $95, $A2, $A0, $A8, $AB, $00 C3/649F: .DB $CF, $7F, $92, $AD, $9A, $A6, $A2, $A7, $9A, $00 C3/64A9: .DB $4F, $88, $8C, $9A, $A0, $C5, $8F, $B0, $AB, $00 C3/64B3: .DB $69, $7F, $84, $AF, $9A, $9D, $9E, $FF, $CD, $00 C3/64BD: .DB $69, $88, $8C, $81, $A5, $A8, $9C, $A4, $CD, $00 C3/64C7: .DB $DD, $7E, $D3, $00 C3/64CB: .DB $5D, $7F, $D3, $00 C3/64CF: .DB $DD, $7F, $D3, $00 C3/64D3: .DB $5D, $88, $D3, $00 C3/64D7: .DB $FB, $7E, $D3, $00 C3/64DB: .DB $7B, $7F, $D3, $00 C3/64DF: .DB $7B, $7E, $D3, $00 C3/64E3: .DB $FB, $7F, $D3, $00 C3/64E7: .DB $7B, $88, $D3, $00 C3/64EB: .DB $4F, $7F, $92, $A9, $9E, $9E, $9D, $00 C3/64F3: .DB $69, $7E, $81, $9A, $AD, $C5, $8F, $B0, $AB, $00 C3/64FD: .DB $E9, $7E, $83, $9E, $9F, $9E, $A7, $AC, $9E, $00 C3/6507: .DB $E9, $7F, $8C, $9A, $A0, $C5, $83, $9E, $9F, $00 C3/6511: .DB $4D, $7C, $98, $A8, $AE, $AB, $FF, $84, $B1, $A9, $C1, $00 C3/651D: .DB $4D, $7D, $85, $A8, $AB, $FF, $A5, $9E, $AF, $9E, $A5, $FF, $AE, $A9, $C1, $00 ; ----------------------------------------[ Menu: Name Change ]----------------------------------------- ; [ Menu State $5D: Name Change (init) ] C3/652D: 20 2F 35 JSR $352F ; disable interrupts C3/6530: AC 01 02 LDY $0201 C3/6533: 84 67 STY $67 C3/6535: 20 04 69 JSR $6904 C3/6538: A9 02 LDA #$02 C3/653A: 85 46 STA $46 C3/653C: 64 4A STZ $4A C3/653E: 20 38 66 JSR $6638 C3/6541: 20 41 66 JSR $6641 C3/6544: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/6547: 20 05 67 JSR $6705 C3/654A: 20 21 66 JSR $6621 C3/654D: 20 3C 68 JSR $683C C3/6550: 20 8C 67 JSR $678C C3/6553: 20 71 67 JSR $6771 C3/6556: 20 D8 66 JSR $66D8 C3/6559: A9 02 LDA #$02 C3/655B: A0 A3 68 LDY #$68A3 C3/655E: 20 73 11 JSR $1173 ; create thread C3/6561: A9 5F LDA #$5F C3/6563: 85 27 STA $27 C3/6565: A9 01 LDA #$01 C3/6567: 85 26 STA $26 C3/6569: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $5F: Menu Change ] C3/656C: 20 E9 0E JSR $0EE9 C3/656F: 20 3E 66 JSR $663E C3/6572: 20 5B 67 JSR $675B C3/6575: A5 09 LDA $09 C3/6577: 89 10 BIT #$10 C3/6579: F0 03 BEQ $657E C3/657B: 4C C2 65 JMP $65C2 ; jump if right button is pressed C3/657E: A5 08 LDA $08 C3/6580: 89 80 BIT #$80 C3/6582: F0 11 BEQ $6595 ; branch if A button is not pressed C3/6584: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/6587: 7B TDC C3/6588: 20 E8 65 JSR $65E8 C3/658B: A5 28 LDA $28 C3/658D: C9 05 CMP #$05 C3/658F: F0 01 BEQ $6592 C3/6591: 1A INC C3/6592: 85 28 STA $28 C3/6594: 60 RTS C3/6595: A5 09 LDA $09 C3/6597: 89 80 BIT #$80 C3/6599: F0 26 BEQ $65C1 ; return if B button is not pressed C3/659B: 20 C7 0E JSR $0EC7 ; play delete/erase sound effect C3/659E: A5 28 LDA $28 C3/65A0: F0 1F BEQ $65C1 C3/65A2: C9 05 CMP #$05 C3/65A4: D0 0F BNE $65B5 C3/65A6: 20 0F 66 JSR $660F C3/65A9: B9 02 00 LDA $0002,Y C3/65AC: C9 FF CMP #$FF C3/65AE: F0 05 BEQ $65B5 C3/65B0: A9 FF LDA #$FF C3/65B2: 4C E8 65 JMP $65E8 C3/65B5: A9 01 LDA #$01 C3/65B7: 20 E8 65 JSR $65E8 C3/65BA: A5 28 LDA $28 C3/65BC: F0 01 BEQ $65BF C3/65BE: 3A DEC C3/65BF: 85 28 STA $28 C3/65C1: 60 RTS C3/65C2: A4 67 LDY $67 C3/65C4: A6 00 LDX $00 C3/65C6: B9 02 00 LDA $0002,Y C3/65C9: C9 FF CMP #$FF C3/65CB: D0 0E BNE $65DB C3/65CD: C8 INY C3/65CE: E8 INX C3/65CF: E0 06 00 CPX #$0006 C3/65D2: D0 F2 BNE $65C6 C3/65D4: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/65D7: 20 5D 30 JSR $305D ; create mosaic thread C3/65DA: 60 RTS C3/65DB: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/65DE: 9C 05 02 STZ $0205 C3/65E1: A9 FF LDA #$FF C3/65E3: 85 27 STA $27 C3/65E5: 64 26 STZ $26 C3/65E7: 60 RTS ; [ Menu State $60/$61: ] C3/65E8: 48 PHA C3/65E9: 20 0F 66 JSR $660F C3/65EC: 68 PLA C3/65ED: 30 0B BMI $65FA C3/65EF: F0 0F BEQ $6600 C3/65F1: A9 FF LDA #$FF C3/65F3: 99 02 00 STA $0002,Y C3/65F6: 99 01 00 STA $0001,Y C3/65F9: 60 RTS C3/65FA: A9 FF LDA #$FF C3/65FC: 99 02 00 STA $0002,Y C3/65FF: 60 RTS C3/6600: 7B TDC C3/6601: A5 4B LDA $4B C3/6603: 18 CLC C3/6604: 65 4A ADC $4A C3/6606: AA TAX C3/6607: BF C8 E8 D8 LDA $D8E8C8,X ; letters for name change menu C3/660B: 99 02 00 STA $0002,Y C3/660E: 60 RTS C3/660F: A4 67 LDY $67 C3/6611: A5 28 LDA $28 C3/6613: 85 E7 STA $E7 C3/6615: 64 E8 STZ $E8 C3/6617: C2 20 REP #$20 C3/6619: 98 TYA C3/661A: 18 CLC C3/661B: 65 E7 ADC $E7 C3/661D: A8 TAY C3/661E: E2 20 SEP #$20 C3/6620: 60 RTS C3/6621: A4 67 LDY $67 C3/6623: A6 00 LDX $00 C3/6625: B9 02 00 LDA $0002,Y C3/6628: C9 FF CMP #$FF C3/662A: F0 08 BEQ $6634 C3/662C: C8 INY C3/662D: E8 INX C3/662E: E0 06 00 CPX #$0006 C3/6631: D0 F2 BNE $6625 C3/6633: CA DEX C3/6634: 8A TXA C3/6635: 85 28 STA $28 C3/6637: 60 RTS C3/6638: A0 47 66 LDY #$6647 C3/663B: 4C FE 05 JMP $05FE ; init cursor C3/663E: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/6641: A0 4C 66 LDY #$664C C3/6644: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/6647: .DB $01, $00, $00, $0A, $07 C3/664C: .DW $5838, $5848, $5858, $5868, $5878, $5890, $58A0, $58B0 C3/665C: .DW $58C0, $58D0, $6838, $6848, $6858, $6868, $6878, $6890 C3/666C: .DW $68A0, $68B0, $68C0, $68D0, $7838, $7848, $7858, $7868 C3/667C: .DW $7878, $7890, $78A0, $78B0, $78C0, $78D0, $8838, $8848 C3/668C: .DW $8858, $8868, $8878, $8890, $88A0, $88B0, $88C0, $88D0 C3/669C: .DW $9838, $9848, $9858, $9868, $9878, $9890, $98A0, $98B0 C3/66AC: .DW $98C0, $98D0, $A838, $A848, $A858, $A868, $A878, $A890 C3/66BC: .DW $A8A0, $A8B0, $A8C0, $A8D0, $B838, $B848, $B858, $B868 C3/66CC: .DW $B878, $B890, $B8A0, $B8B0, $B8C0, $B8D0 C3/66D8: A9 03 LDA #$03 C3/66DA: A0 12 0B LDY #$0B12 C3/66DD: 20 73 11 JSR $1173 ; create thread C3/66E0: 8B PHB C3/66E1: A9 7E LDA #$7E C3/66E3: 48 PHA C3/66E4: AB PLB C3/66E5: C2 20 REP #$20 C3/66E7: A9 8C 0B LDA #$0B8C C3/66EA: 9D C9 32 STA $32C9,X C3/66ED: A9 10 00 LDA #$0010 C3/66F0: 9D CA 33 STA $33CA,X C3/66F3: A9 10 00 LDA #$0010 C3/66F6: 9D 4A 34 STA $344A,X C3/66F9: E2 20 SEP #$20 C3/66FB: A9 C3 LDA #$C3 C3/66FD: 9D CA 35 STA $35CA,X C3/6700: 20 06 12 JSR $1206 ; init animation thread C3/6703: AB PLB C3/6704: 60 RTS C3/6705: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/6708: A0 65 67 LDY #$6765 C3/670B: 20 41 03 JSR $0341 ; draw window C3/670E: A0 69 67 LDY #$6769 C3/6711: 20 41 03 JSR $0341 ; draw window C3/6714: A0 6D 67 LDY #$676D C3/6717: 20 41 03 JSR $0341 ; draw window C3/671A: A0 61 67 LDY #$6761 C3/671D: 20 41 03 JSR $0341 ; draw window C3/6720: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/6723: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/6726: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/6729: 20 1E 6A JSR $6A1E ; clear bg1 data (bottom left screen) C3/672C: A9 20 LDA #$20 C3/672E: 85 29 STA $29 C3/6730: A2 5B 39 LDX #$395B C3/6733: A0 C8 E8 LDY #$E8C8 ; $D8E8C8 letters for name change menu (7 rows, 5+5 characters each) C3/6736: 84 E7 STY $E7 C3/6738: A9 D8 LDA #$D8 C3/673A: 85 E9 STA $E9 C3/673C: A9 07 LDA #$07 ; 7 rows C3/673E: 85 E5 STA $E5 C3/6740: 20 BF 67 JSR $67BF ; C3/6743: 20 5B 67 JSR $675B C3/6746: A0 E3 68 LDY #$68E3 ; positioned text: "Please enter a name…" C3/6749: 20 F9 02 JSR $02F9 ; draw positioned text C3/674C: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/674F: 20 36 0E JSR $0E36 ; copy bg1 data to vram (top left/bottom right) C3/6752: 20 44 0E JSR $0E44 ; copy bg1 data to vram (bottom screens) C3/6755: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/6758: 4C 6E 0E JMP $0E6E ; copy bg3 data to vram (top screens) ; [ ] C3/675B: A0 29 42 LDY #$4229 C3/675E: 4C CF 34 JMP $34CF ; draw character name C3/6761: .DB $9B, $59, $12, $02 C3/6765: .DB $57, $5A, $16, $11 C3/6769: .DB $8B, $58, $05, $05 C3/676D: .DB $99, $58, $14, $02 C3/6771: A4 67 LDY $67 C3/6773: 7B TDC C3/6774: B9 01 00 LDA $0001,Y C3/6777: C2 20 REP #$20 C3/6779: 0A ASL C3/677A: AA TAX C3/677B: A9 00 26 LDA #$2600 C3/677E: 8D 16 21 STA $2116 C3/6781: BF 1B 6F C3 LDA $C36F1B,X C3/6785: AA TAX C3/6786: 20 00 70 JSR $7000 C3/6789: E2 20 SEP #$20 C3/678B: 60 RTS C3/678C: A9 10 LDA #$10 C3/678E: 85 E3 STA $E3 C3/6790: A4 67 LDY $67 C3/6792: 7B TDC C3/6793: B9 01 00 LDA $0001,Y C3/6796: AA TAX C3/6797: BF 00 6F C3 LDA $C36F00,X C3/679B: C2 20 REP #$20 C3/679D: 0A ASL C3/679E: 0A ASL C3/679F: 0A ASL C3/67A0: 0A ASL C3/67A1: 0A ASL C3/67A2: AA TAX C3/67A3: A4 00 LDY $00 C3/67A5: C2 20 REP #$20 C3/67A7: DA PHX C3/67A8: BF 60 58 ED LDA $ED5860,X ; character portrait color palettes C3/67AC: BB TYX C3/67AD: 9F 49 31 7E STA $7E3149,X C3/67B1: E2 20 SEP #$20 C3/67B3: FA PLX C3/67B4: E8 INX C3/67B5: E8 INX C3/67B6: C8 INY C3/67B7: C8 INY C3/67B8: C6 E3 DEC $E3 C3/67BA: D0 E9 BNE $67A5 C3/67BC: E2 20 SEP #$20 C3/67BE: 60 RTS ; [ ] C3/67BF: 86 EB STX $EB C3/67C1: A9 7E LDA #$7E C3/67C3: 85 ED STA $ED C3/67C5: A4 00 LDY $00 C3/67C7: A9 0A LDA #$0A C3/67C9: 85 E6 STA $E6 C3/67CB: A6 00 LDX $00 C3/67CD: B7 E7 LDA [$E7],Y C3/67CF: 85 E0 STA $E0 C3/67D1: 5A PHY C3/67D2: C9 53 CMP #$53 C3/67D4: 90 06 BCC $67DC C3/67D6: A9 FF LDA #$FF C3/67D8: 85 E1 STA $E1 C3/67DA: 80 20 BRA $67FC C3/67DC: C9 49 CMP #$49 C3/67DE: 90 0D BCC $67ED C3/67E0: A9 52 LDA #$52 C3/67E2: 85 E1 STA $E1 C3/67E4: A5 E0 LDA $E0 C3/67E6: 18 CLC C3/67E7: 69 17 ADC #$17 C3/67E9: 85 E0 STA $E0 C3/67EB: 80 0F BRA $67FC C3/67ED: C9 20 CMP #$20 C3/67EF: 90 0B BCC $67FC C3/67F1: A9 51 LDA #$51 C3/67F3: 85 E1 STA $E1 C3/67F5: A5 E0 LDA $E0 C3/67F7: 18 CLC C3/67F8: 69 40 ADC #$40 C3/67FA: 85 E0 STA $E0 C3/67FC: 9B TXY C3/67FD: A5 E1 LDA $E1 C3/67FF: 97 EB STA [$EB],Y C3/6801: C8 INY C3/6802: A5 29 LDA $29 C3/6804: 97 EB STA [$EB],Y C3/6806: C2 20 REP #$20 C3/6808: 8A TXA C3/6809: 18 CLC C3/680A: 69 40 00 ADC #$0040 C3/680D: A8 TAY C3/680E: E2 20 SEP #$20 C3/6810: A5 E0 LDA $E0 C3/6812: 97 EB STA [$EB],Y C3/6814: C8 INY C3/6815: A5 29 LDA $29 C3/6817: 97 EB STA [$EB],Y C3/6819: E8 INX C3/681A: E8 INX C3/681B: E8 INX C3/681C: E8 INX C3/681D: 7A PLY C3/681E: C8 INY C3/681F: A5 E6 LDA $E6 C3/6821: C9 06 CMP #$06 C3/6823: D0 02 BNE $6827 C3/6825: E8 INX C3/6826: E8 INX C3/6827: C6 E6 DEC $E6 C3/6829: D0 A2 BNE $67CD C3/682B: C2 20 REP #$20 C3/682D: A5 EB LDA $EB C3/682F: 18 CLC C3/6830: 69 80 00 ADC #$0080 C3/6833: 85 EB STA $EB C3/6835: E2 20 SEP #$20 C3/6837: C6 E5 DEC $E5 C3/6839: D0 8C BNE $67C7 C3/683B: 60 RTS C3/683C: A6 00 LDX $00 C3/683E: BF 96 68 C3 LDA $C36896,X C3/6842: 9F C9 9B 7E STA $7E9BC9,X C3/6846: E8 INX C3/6847: E0 0D 00 CPX #$000D C3/684A: D0 F2 BNE $683E C3/684C: A9 02 LDA #$02 C3/684E: 8D 50 43 STA $4350 C3/6851: A9 0E LDA #$0E C3/6853: 8D 51 43 STA $4351 C3/6856: A0 C9 9B LDY #$9BC9 C3/6859: 8C 52 43 STY $4352 C3/685C: A9 7E LDA #$7E C3/685E: 8D 54 43 STA $4354 C3/6861: A9 7E LDA #$7E C3/6863: 8D 57 43 STA $4357 C3/6866: A9 20 LDA #$20 C3/6868: 04 43 TSB $43 C3/686A: A9 02 LDA #$02 C3/686C: 8D 60 43 STA $4360 C3/686F: A9 0D LDA #$0D C3/6871: 8D 61 43 STA $4361 C3/6874: A0 89 68 LDY #$6889 C3/6877: 8C 62 43 STY $4362 C3/687A: A9 C3 LDA #$C3 C3/687C: 8D 64 43 STA $4364 C3/687F: A9 C3 LDA #$C3 C3/6881: 8D 67 43 STA $4367 C3/6884: A9 40 LDA #$40 C3/6886: 04 43 TSB $43 C3/6888: 60 RTS C3/6889: .DB $47, $00, $01, $50, $00, $00, $50, $00, $00, $10, $00, $01, $00 C3/6896: .DB $47, $00, $00, $50, $D0, $FF, $50, $D0, $FF, $10, $00, $00, $00 C3/68A3: AA TAX C3/68A4: 7C A7 68 JMP ($68A7,X) C3/68A7: .DW $68AB, $68CB C3/68AB: A6 2D LDX $2D C3/68AD: C2 20 REP #$20 C3/68AF: A9 52 B4 LDA #$B452 C3/68B2: 9D C9 32 STA $32C9,X C3/68B5: A9 40 00 LDA #$0040 C3/68B8: 9D 4A 34 STA $344A,X C3/68BB: E2 20 SEP #$20 C3/68BD: 9E CB 33 STZ $33CB,X C3/68C0: A9 C3 LDA #$C3 C3/68C2: 9D CA 35 STA $35CA,X C3/68C5: 20 06 12 JSR $1206 ; init animation thread C3/68C8: FE 49 36 INC $3649,X C3/68CB: A4 2D LDY $2D C3/68CD: 7B TDC C3/68CE: A5 28 LDA $28 C3/68D0: AA TAX C3/68D1: BF DD 68 C3 LDA $C368DD,X C3/68D5: 99 CA 33 STA $33CA,Y C3/68D8: 20 21 12 JSR $1221 ; update animation thread C3/68DB: 38 SEC C3/68DC: 60 RTS C3/68DD: .DB $78, $80, $88, $90, $98, $A0 ; C3/68E3 .DW $411B \ .DB "Please enter a name…" C3/68E3: .DB $1B, $41, $8F, $A5, $9E, $9A, $AC, $9E, $FF, $9E, $A7, $AD, $9E, $AB, $FF, $9A C3/68F3: .DB $FF, $A7, $9A, $A6, $9E, $C5, $00 ; ------------------------------------------[ Menu: Unknown ]------------------------------------------- ; [ Init Menu RAM ] work_init: C3/68FA: 22 F3 CD D4 JSL $D4CDF3 ; init menu RAM C3/68FE: 20 04 69 JSR $6904 ; clear bg scrolling registers C3/6901: 4C 96 A7 JMP $A796 ; clear description text graphics buffer ; [ Clear BG Scrolling Registers ] C3/6904: A4 00 LDY $00 C3/6906: 84 35 STY $35 ; clear BG scrolling registers C3/6908: 84 39 STY $39 C3/690A: 84 3D STY $3D C3/690C: 84 37 STY $37 C3/690E: 84 3B STY $3B C3/6910: 84 3F STY $3F C3/6912: 84 41 STY $41 C3/6914: 60 RTS ; [ Init Party Character Data ] playerwork_push: C3/6915: 22 00 CA D4 JSL $D4CA00 ; clear party character data C3/6919: 7B TDC C3/691A: AA TAX C3/691B: 9B TXY C3/691C: BD 50 18 LDA $1850,X ; branch if character is not enabled C3/691F: 29 40 AND #$40 C3/6921: F0 1E BEQ $6941 C3/6923: BD 50 18 LDA $1850,X ; branch if character is not in the current party C3/6926: 29 07 AND #$07 C3/6928: CD 6D 1A CMP $1A6D C3/692B: D0 14 BNE $6941 C3/692D: BD 50 18 LDA $1850,X ; battle order C3/6930: 48 PHA C3/6931: 29 18 AND #$18 C3/6933: 85 E0 STA $E0 C3/6935: 4A LSR C3/6936: 4A LSR C3/6937: 4A LSR C3/6938: A8 TAY C3/6939: 68 PLA C3/693A: 99 75 00 STA $0075,Y ; set battle slot C3/693D: 8A TXA C3/693E: 99 69 00 STA $0069,Y ; set character index C3/6941: E8 INX ; next character C3/6942: E0 10 00 CPX #$0010 C3/6945: D0 D5 BNE $691C C3/6947: A4 00 LDY $00 C3/6949: 7B TDC C3/694A: B9 69 00 LDA $0069,Y ; branch if there's no character in this slot C3/694D: C9 FF CMP #$FF C3/694F: F0 11 BEQ $6962 C3/6951: 0A ASL C3/6952: AA TAX C3/6953: C2 20 REP #$20 C3/6955: BF 69 69 C3 LDA $C36969,X ; pointer to character data C3/6959: 48 PHA C3/695A: 98 TYA C3/695B: 0A ASL C3/695C: AA TAX C3/695D: 68 PLA C3/695E: 95 6D STA $6D,X ; set pointer for character slot C3/6960: E2 20 SEP #$20 C3/6962: C8 INY C3/6963: C0 04 00 CPY #$0004 C3/6966: D0 E1 BNE $6949 C3/6968: 60 RTS ; pointers to character data C3/6969: .DW $1600, $1625, $164A, $166F, $1694, $16B9, $16DE, $1703 C3/6979: .DW $1728, $174D, $1772, $1797, $17BC, $17E1, $1806, $182B C3/6989: 7B TDC C3/698A: AA TAX C3/698B: A8 TAY C3/698C: B5 69 LDA $69,X C3/698E: 30 12 BMI $69A2 C3/6990: A8 TAY C3/6991: B5 75 LDA $75,X C3/6993: 29 E7 AND #$E7 C3/6995: 85 E0 STA $E0 C3/6997: 7B TDC C3/6998: 8A TXA C3/6999: 0A ASL C3/699A: 0A ASL C3/699B: 0A ASL C3/699C: 18 CLC C3/699D: 65 E0 ADC $E0 C3/699F: 99 50 18 STA $1850,Y C3/69A2: E8 INX C3/69A3: E0 04 00 CPX #$0004 C3/69A6: D0 E4 BNE $698C C3/69A8: 60 RTS ; [ ] C3/69A9: C2 20 REP #$20 C3/69AB: A5 69 LDA $69 ; characters in slots 1-2 C3/69AD: 8F 89 AA 7E STA $7EAA89 C3/69B1: A5 6B LDA $6B ; characters in slots 3-4 C3/69B3: 8F 8B AA 7E STA $7EAA8B C3/69B7: E2 20 SEP #$20 C3/69B9: 60 RTS ; [ Draw Positioned Text (list) ] ; +X: pointer to list (2-byte pointers, +$C30000) ; +Y: length of list C3/69BA: 86 F1 STX $F1 C3/69BC: 84 EF STY $EF C3/69BE: A9 C3 LDA #$C3 C3/69C0: 85 F3 STA $F3 C3/69C2: A4 00 LDY $00 C3/69C4: C2 20 REP #$20 C3/69C6: B7 F1 LDA [$F1],Y C3/69C8: 85 E7 STA $E7 C3/69CA: 5A PHY C3/69CB: E2 20 SEP #$20 C3/69CD: A9 C3 LDA #$C3 C3/69CF: 85 E9 STA $E9 C3/69D1: 20 FF 02 JSR $02FF ; draw positioned text C3/69D4: 7A PLY C3/69D5: C8 INY C3/69D6: C8 INY C3/69D7: C4 EF CPY $EF C3/69D9: D0 E9 BNE $69C4 C3/69DB: 60 RTS ; [ Init Window 1 Position HDMA ] C3/69DC: A9 01 LDA #$01 ; HDMA channel #2 (2 address) C3/69DE: 8D 20 43 STA $4320 C3/69E1: A9 26 LDA #$26 ; destination = $2126, $2127 C3/69E3: 8D 21 43 STA $4321 C3/69E6: A0 FB 69 LDY #$69FB ; source = $C369FB C3/69E9: 8C 22 43 STY $4322 C3/69EC: A9 C3 LDA #$C3 C3/69EE: 8D 24 43 STA $4324 C3/69F1: A9 C3 LDA #$C3 C3/69F3: 8D 27 43 STA $4327 C3/69F6: A9 04 LDA #$04 ; enable HDMA channel #2 C3/69F8: 04 43 TSB $43 C3/69FA: 60 RTS ; window 1 position HDMA table C3/69FB: .DB $07, $FF, $00 .DB $78, $08, $F7 .DB $58, $08, $F7 .DB $08, $FF, $00 .DB $00 ; [ Disable Window 1 Position HDMA ] C3/6A08: A9 04 LDA #$04 ; disable HDMA channel #2 C3/6A0A: 14 43 TRB $43 C3/6A0C: 9C 26 21 STZ $2126 ; window 1 position = [$00,$FF] C3/6A0F: A9 FF LDA #$FF C3/6A11: 8D 27 21 STA $2127 C3/6A14: 60 RTS ; [ Clear BG Data ] C3/6A15: A6 00 LDX $00 ; clear bg1 data (top left screen) C3/6A17: 80 35 BRA $6A4E C3/6A19: A2 00 08 LDX #$0800 ; clear bg1 data (top right screen) C3/6A1C: 80 30 BRA $6A4E C3/6A1E: A2 00 10 LDX #$1000 ; clear bg1 data (bottom left screen) C3/6A21: 80 2B BRA $6A4E C3/6A23: A2 00 18 LDX #$1800 ; clear bg1 data (bottom right screen) C3/6A26: 80 26 BRA $6A4E C3/6A28: A2 00 20 LDX #$2000 ; clear bg2 data (top left screen) C3/6A2B: 80 21 BRA $6A4E C3/6A2D: A2 00 28 LDX #$2800 ; clear bg2 data (top right screen) C3/6A30: 80 1C BRA $6A4E C3/6A32: A2 00 30 LDX #$3000 ; clear bg2 data (bottom left screen) C3/6A35: 80 17 BRA $6A4E C3/6A37: A2 00 38 LDX #$3800 ; clear bg2 data (bottom right screen) C3/6A3A: 80 12 BRA $6A4E C3/6A3C: A2 00 40 LDX #$4000 ; clear bg3 data (top left screen) C3/6A3F: 80 0D BRA $6A4E C3/6A41: A2 00 48 LDX #$4800 ; clear bg3 data (top right screen) C3/6A44: 80 08 BRA $6A4E C3/6A46: A2 00 50 LDX #$5000 ; clear bg3 data (bottom left screen) C3/6A49: 80 03 BRA $6A4E C3/6A4B: A2 00 58 LDX #$5800 ; clear bg3 data (bottom right screen) C3/6A4E: C2 20 REP #$20 C3/6A50: 7B TDC C3/6A51: A0 00 02 LDY #$0200 C3/6A54: 9F 49 38 7E STA $7E3849,X C3/6A58: E8 INX C3/6A59: E8 INX C3/6A5A: 9F 49 38 7E STA $7E3849,X C3/6A5E: E8 INX C3/6A5F: E8 INX C3/6A60: 88 DEY C3/6A61: D0 F1 BNE $6A54 C3/6A63: E2 20 SEP #$20 C3/6A65: 60 RTS ; [ Init Graphics for Colosseum Character Select ] C3/6A66: 20 10 70 JSR $7010 ; clear blank portrait graphics C3/6A69: 20 13 6B JSR $6B13 ; load font graphics (2bpp) C3/6A6C: 20 E8 6B JSR $6BE8 ; load menu text palettes C3/6A6F: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/6A72: 20 67 6E JSR $6E67 ; copy standard menu cursor/icon graphics to vram C3/6A75: 20 C7 6C JSR $6CC7 ; load character sprite palettes C3/6A78: 20 84 6C JSR $6C84 ; load cursor/icon palettes C3/6A7B: 20 82 6E JSR $6E82 ; load character portrait graphics C3/6A7E: 20 E9 6C JSR $6CE9 ; load character sprite graphics C3/6A81: 20 46 AF JSR $AF46 ; load monster graphics (colosseum) C3/6A84: 4C 4B B3 JMP $B34B ; load colosseum battle bg graphics ; [ Init Menu Graphics ] C3/6A87: 7B TDC C3/6A88: AD 00 02 LDA $0200 ; menu type C3/6A8B: 0A ASL C3/6A8C: AA TAX C3/6A8D: 7C 90 6A JMP ($6A90,X) C3/6A90: .DW $6AE9, $6B04, $6AE9, $6ACE, $6AB0, $6AB0, $6AA4, $6AE9 C3/6AA0: .DW $6AB0, $6AB0 ; type 6: ??? C3/6AA4: 20 37 6B JSR $6B37 ; load font/window graphics (4bpp) C3/6AA7: 20 E8 6B JSR $6BE8 ; load menu text palettes C3/6AAA: 20 67 6E JSR $6E67 ; copy standard menu cursor/icon graphics to vram C3/6AAD: 4C 84 6C JMP $6C84 ; load cursor/icon palettes ; type 4/5/8/9: party select/???/final battle order/??? C3/6AB0: 20 10 70 JSR $7010 ; clear blank portrait graphics C3/6AB3: 20 13 6B JSR $6B13 ; load font graphics (2bpp) C3/6AB6: 20 37 6B JSR $6B37 ; load font/window graphics (4bpp) C3/6AB9: 20 E8 6B JSR $6BE8 ; load menu text palettes C3/6ABC: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/6ABF: 20 67 6E JSR $6E67 ; copy standard menu cursor/icon graphics to vram C3/6AC2: 20 C7 6C JSR $6CC7 ; load character sprite palettes C3/6AC5: 20 84 6C JSR $6C84 ; load cursor/icon palettes C3/6AC8: 20 82 6E JSR $6E82 ; load character portrait graphics C3/6ACB: 4C E9 6C JMP $6CE9 ; load character sprite graphics ; type 3: shop C3/6ACE: 20 13 6B JSR $6B13 ; load font graphics (2bpp) C3/6AD1: 20 37 6B JSR $6B37 ; load font/window graphics (4bpp) C3/6AD4: 20 E8 6B JSR $6BE8 ; load menu text palettes C3/6AD7: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/6ADA: 20 67 6E JSR $6E67 ; copy standard menu cursor/icon graphics to vram C3/6ADD: 20 C7 6C JSR $6CC7 ; load character sprite palettes C3/6AE0: 20 84 6C JSR $6C84 ; load cursor/icon palettes C3/6AE3: 20 82 6E JSR $6E82 ; load character portrait graphics C3/6AE6: 4C 79 6D JMP $6D79 ; type 0/2/7: main menu/restore saved game/colosseum C3/6AE9: 20 13 6B JSR $6B13 ; load font graphics (2bpp) C3/6AEC: 20 37 6B JSR $6B37 ; load font/window graphics (4bpp) C3/6AEF: 20 E8 6B JSR $6BE8 ; load menu text palettes C3/6AF2: 20 67 6E JSR $6E67 ; copy standard menu cursor/icon graphics to vram C3/6AF5: 20 82 6E JSR $6E82 ; load character portrait graphics C3/6AF8: 20 09 6C JSR $6C09 ; load character portrait color palettes C3/6AFB: 20 E9 6C JSR $6CE9 ; load character sprite graphics C3/6AFE: 20 84 6C JSR $6C84 ; load cursor/icon palettes C3/6B01: 4C 60 6C JMP $6C60 ; load grayscale character sprite palette ; type 1: name change C3/6B04: 20 13 6B JSR $6B13 ; load font graphics (2bpp) C3/6B07: 20 37 6B JSR $6B37 ; load font/window graphics (4bpp) C3/6B0A: 20 E8 6B JSR $6BE8 ; load menu text palettes C3/6B0D: 20 67 6E JSR $6E67 ; copy standard menu cursor/icon graphics to vram C3/6B10: 4C 84 6C JMP $6C84 ; load cursor/icon palettes ; [ Load Font Graphics (2bpp) ] C3/6B13: C2 20 REP #$20 C3/6B15: A0 00 60 LDY #$6000 C3/6B18: 8C 16 21 STY $2116 C3/6B1B: A6 00 LDX $00 C3/6B1D: BF C0 7F C4 LDA $C47FC0,X ; small font graphics C3/6B21: 8D 18 21 STA $2118 C3/6B24: E8 INX C3/6B25: E8 INX C3/6B26: E0 00 10 CPX #$1000 C3/6B29: D0 F2 BNE $6B1D C3/6B2B: 8D 18 21 STA $2118 C3/6B2E: E8 INX C3/6B2F: E0 00 14 CPX #$1400 C3/6B32: D0 F7 BNE $6B2B C3/6B34: E2 20 SEP #$20 C3/6B36: 60 RTS ; [ Load Font/Window Graphics (4bpp) ] C3/6B37: A0 00 50 LDY #$5000 C3/6B3A: 8C 16 21 STY $2116 C3/6B3D: C2 20 REP #$20 C3/6B3F: 7B TDC C3/6B40: AA TAX C3/6B41: A0 08 00 LDY #$0008 C3/6B44: BF 9C 6B C3 LDA $C36B9C,X C3/6B48: 8D 18 21 STA $2118 C3/6B4B: 88 DEY C3/6B4C: D0 F6 BNE $6B44 C3/6B4E: E8 INX C3/6B4F: E8 INX C3/6B50: E0 20 00 CPX #$0020 C3/6B53: D0 EC BNE $6B41 C3/6B55: A6 00 LDX $00 C3/6B57: A0 08 00 LDY #$0008 C3/6B5A: BF 40 80 C4 LDA $C48040,X ; small font graphics C3/6B5E: 8D 18 21 STA $2118 C3/6B61: E8 INX C3/6B62: E8 INX C3/6B63: 88 DEY C3/6B64: D0 F4 BNE $6B5A C3/6B66: 9C 18 21 STZ $2118 C3/6B69: 9C 18 21 STZ $2118 C3/6B6C: 9C 18 21 STZ $2118 C3/6B6F: 9C 18 21 STZ $2118 C3/6B72: 9C 18 21 STZ $2118 C3/6B75: 9C 18 21 STZ $2118 C3/6B78: 9C 18 21 STZ $2118 C3/6B7B: 9C 18 21 STZ $2118 C3/6B7E: E0 80 0F CPX #$0F80 C3/6B81: D0 D4 BNE $6B57 C3/6B83: A0 00 78 LDY #$7800 C3/6B86: 8C 16 21 STY $2116 C3/6B89: A6 00 LDX $00 C3/6B8B: BF 00 00 ED LDA $ED0000,X ; menu window graphics C3/6B8F: 8D 18 21 STA $2118 C3/6B92: E8 INX C3/6B93: E8 INX C3/6B94: E0 00 10 CPX #$1000 C3/6B97: D0 F2 BNE $6B8B C3/6B99: E2 20 SEP #$20 C3/6B9B: 60 RTS C3/6B9C: .DW $0000, $0000, $00FF, $0000, $FF00, $0000, $FFFF, $0000 C3/6BAC: .DW $0000, $00FF, $00FF, $00FF, $FF00, $00FF, $FFFF, $00FF ; [ Load Wallpaper Palettes ] C3/6BBC: A2 08 00 LDX #$0008 C3/6BBF: 86 E7 STX $E7 C3/6BC1: A2 00 00 LDX #$0000 C3/6BC4: 9B TXY C3/6BC5: C2 20 REP #$20 C3/6BC7: A9 07 00 LDA #$0007 C3/6BCA: 85 E9 STA $E9 C3/6BCC: BF 02 1C ED LDA $ED1C02,X ; load wallpaper palettes C3/6BD0: 99 57 1D STA $1D57,Y C3/6BD3: E8 INX C3/6BD4: E8 INX C3/6BD5: C8 INY C3/6BD6: C8 INY C3/6BD7: C6 E9 DEC $E9 C3/6BD9: D0 F1 BNE $6BCC C3/6BDB: 8A TXA C3/6BDC: 18 CLC C3/6BDD: 69 12 00 ADC #$0012 C3/6BE0: AA TAX C3/6BE1: C6 E7 DEC $E7 C3/6BE3: D0 E2 BNE $6BC7 C3/6BE5: E2 20 SEP #$20 C3/6BE7: 60 RTS ; [ Load Menu Text Palettes ] C3/6BE8: A6 00 LDX $00 C3/6BEA: 8A TXA C3/6BEB: 8D 21 21 STA $2121 C3/6BEE: C2 20 REP #$20 C3/6BF0: BF 00 E8 D8 LDA $D8E800,X ; menu text palettes C3/6BF4: 9F 49 30 7E STA $7E3049,X C3/6BF8: E2 20 SEP #$20 C3/6BFA: 8D 22 21 STA $2122 C3/6BFD: EB XBA C3/6BFE: 8D 22 21 STA $2122 C3/6C01: E8 INX C3/6C02: E8 INX C3/6C03: E0 A0 00 CPX #$00A0 C3/6C06: D0 E6 BNE $6BEE C3/6C08: 60 RTS ; [ Load Character Portrait Color Palettes ] C3/6C09: A6 00 LDX $00 C3/6C0B: 9B TXY C3/6C0C: C2 20 REP #$20 C3/6C0E: B5 6D LDA $6D,X ; pointer to character data C3/6C10: DA PHX C3/6C11: 5A PHY C3/6C12: A8 TAY C3/6C13: 7B TDC C3/6C14: E2 20 SEP #$20 C3/6C16: A9 10 LDA #$10 ; $E3 = counter (16 colors per palette) C3/6C18: 85 E3 STA $E3 C3/6C1A: B9 14 00 LDA $0014,Y ; imp status C3/6C1D: 29 20 AND #$20 C3/6C1F: F0 04 BEQ $6C25 C3/6C21: A9 0F LDA #$0F ; use portrait $0F C3/6C23: 80 0B BRA $6C30 C3/6C25: 7B TDC C3/6C26: B9 00 00 LDA $0000,Y ; character number C3/6C29: C9 01 CMP #$01 ; if it's LOCKE, use palette $01 C3/6C2B: F0 03 BEQ $6C30 C3/6C2D: B9 01 00 LDA $0001,Y ; otherwise, use the actor number C3/6C30: AA TAX C3/6C31: BF 00 6F C3 LDA $C36F00,X ; get corresponding palette number C3/6C35: C2 20 REP #$20 C3/6C37: 0A ASL C3/6C38: 0A ASL C3/6C39: 0A ASL C3/6C3A: 0A ASL C3/6C3B: 0A ASL C3/6C3C: AA TAX C3/6C3D: 7A PLY C3/6C3E: C2 20 REP #$20 C3/6C40: DA PHX C3/6C41: BF 60 58 ED LDA $ED5860,X ; load character portrait color palette C3/6C45: BB TYX C3/6C46: 9F 49 31 7E STA $7E3149,X C3/6C4A: E2 20 SEP #$20 C3/6C4C: FA PLX C3/6C4D: E8 INX ; next color C3/6C4E: E8 INX C3/6C4F: C8 INY C3/6C50: C8 INY C3/6C51: C6 E3 DEC $E3 C3/6C53: D0 E9 BNE $6C3E C3/6C55: FA PLX C3/6C56: E8 INX ; next palette C3/6C57: E8 INX C3/6C58: E0 08 00 CPX #$0008 C3/6C5B: D0 AF BNE $6C0C C3/6C5D: E2 20 SEP #$20 C3/6C5F: 60 RTS ; [ Load Grayscale Character Sprite Palette ] C3/6C60: A9 90 LDA #$90 C3/6C62: 8D 21 21 STA $2121 C3/6C65: A6 00 LDX $00 C3/6C67: C2 20 REP #$20 C3/6C69: BF A0 E8 D8 LDA $D8E8A0,X C3/6C6D: 9F 69 31 7E STA $7E3169,X C3/6C71: E2 20 SEP #$20 C3/6C73: 8D 22 21 STA $2122 C3/6C76: EB XBA C3/6C77: 8D 22 21 STA $2122 C3/6C7A: C8 INY C3/6C7B: C8 INY C3/6C7C: E8 INX C3/6C7D: E8 INX C3/6C7E: E0 20 00 CPX #$0020 C3/6C81: D0 E4 BNE $6C67 C3/6C83: 60 RTS ; [ Load Cursor/Icon Palettes ] C3/6C84: A6 00 LDX $00 C3/6C86: A9 EC LDA #$EC C3/6C88: 8D 21 21 STA $2121 C3/6C8B: C2 20 REP #$20 C3/6C8D: BF C0 E8 D8 LDA $D8E8C0,X ; icon palette C3/6C91: 9F 21 32 7E STA $7E3221,X C3/6C95: E2 20 SEP #$20 C3/6C97: 8D 22 21 STA $2122 C3/6C9A: EB XBA C3/6C9B: 8D 22 21 STA $2122 C3/6C9E: E8 INX C3/6C9F: E8 INX C3/6CA0: E0 08 00 CPX #$0008 C3/6CA3: D0 E6 BNE $6C8B C3/6CA5: A6 00 LDX $00 C3/6CA7: A9 FC LDA #$FC C3/6CA9: 8D 21 21 STA $2121 C3/6CAC: C2 20 REP #$20 C3/6CAE: BF B8 E8 D8 LDA $D8E8B8,X ; cursor palette C3/6CB2: 9F 41 32 7E STA $7E3241,X C3/6CB6: E2 20 SEP #$20 C3/6CB8: 8D 22 21 STA $2122 C3/6CBB: EB XBA C3/6CBC: 8D 22 21 STA $2122 C3/6CBF: E8 INX C3/6CC0: E8 INX C3/6CC1: E0 08 00 CPX #$0008 C3/6CC4: D0 E6 BNE $6CAC C3/6CC6: 60 RTS ; [ Load Character Sprite Palettes ] C3/6CC7: A6 00 LDX $00 C3/6CC9: A9 A0 LDA #$A0 C3/6CCB: 8D 21 21 STA $2121 C3/6CCE: C2 20 REP #$20 C3/6CD0: BF 00 63 ED LDA $ED6300,X ; load character sprite color palettes C3/6CD4: 9F 89 31 7E STA $7E3189,X C3/6CD8: E2 20 SEP #$20 C3/6CDA: 8D 22 21 STA $2122 C3/6CDD: EB XBA C3/6CDE: 8D 22 21 STA $2122 C3/6CE1: E8 INX C3/6CE2: E8 INX C3/6CE3: E0 C0 00 CPX #$00C0 C3/6CE6: D0 E6 BNE $6CCE C3/6CE8: 60 RTS ; [ Load Character Sprite Graphics ] ; used for colosseum, party change, and save screen, but not shops C3/6CE9: 7B TDC C3/6CEA: AA TAX C3/6CEB: DA PHX C3/6CEC: C2 20 REP #$20 C3/6CEE: BF E5 F8 CF LDA $CFF8E5,X C3/6CF2: 85 F3 STA $F3 C3/6CF4: 8A TXA C3/6CF5: 0A ASL C3/6CF6: AA TAX C3/6CF7: BF 13 F9 CF LDA $CFF913,X C3/6CFB: 85 E7 STA $E7 C3/6CFD: BF 11 F9 CF LDA $CFF911,X C3/6D01: 85 E9 STA $E9 C3/6D03: A6 00 LDX $00 C3/6D05: BF DF F8 CF LDA $CFF8DF,X C3/6D09: 85 EF STA $EF C3/6D0B: 20 44 6D JSR $6D44 C3/6D0E: A5 F3 LDA $F3 C3/6D10: 18 CLC C3/6D11: 69 00 01 ADC #$0100 C3/6D14: 85 F3 STA $F3 C3/6D16: E8 INX ; next tile C3/6D17: E8 INX C3/6D18: E0 04 00 CPX #$0004 C3/6D1B: D0 E8 BNE $6D05 C3/6D1D: A5 F3 LDA $F3 C3/6D1F: 38 SEC C3/6D20: E9 E0 01 SBC #$01E0 C3/6D23: 85 F3 STA $F3 C3/6D25: BF DF F8 CF LDA $CFF8DF,X C3/6D29: 85 EF STA $EF C3/6D2B: 20 44 6D JSR $6D44 C3/6D2E: A5 F3 LDA $F3 C3/6D30: 18 CLC C3/6D31: 69 00 01 ADC #$0100 C3/6D34: 85 F3 STA $F3 C3/6D36: 20 67 6D JSR $6D67 C3/6D39: FA PLX C3/6D3A: E8 INX ; next character (load 22 characters) C3/6D3B: E8 INX C3/6D3C: E0 2C 00 CPX #$002C C3/6D3F: D0 AA BNE $6CEB C3/6D41: E2 20 SEP #$20 C3/6D43: 60 RTS ; [ Copy Character Sprite Tile Graphics to VRAM ] ; copies two adjacent 8x8 tiles C3/6D44: 18 CLC C3/6D45: A5 EF LDA $EF C3/6D47: 65 E7 ADC $E7 C3/6D49: 85 EB STA $EB C3/6D4B: 7B TDC C3/6D4C: 65 E9 ADC $E9 C3/6D4E: 85 ED STA $ED C3/6D50: A4 F3 LDY $F3 C3/6D52: 8C 16 21 STY $2116 C3/6D55: 4C 58 6D JMP $6D58 C3/6D58: A4 00 LDY $00 C3/6D5A: B7 EB LDA [$EB],Y C3/6D5C: 8D 18 21 STA $2118 C3/6D5F: C8 INY C3/6D60: C8 INY C3/6D61: C0 40 00 CPY #$0040 C3/6D64: D0 F4 BNE $6D5A C3/6D66: 60 RTS ; [ Clear Two Tiles in VRAM ] ; clears the two tiles below a character's feet C3/6D67: A4 F3 LDY $F3 C3/6D69: 8C 16 21 STY $2116 C3/6D6C: A9 20 00 LDA #$0020 C3/6D6F: 85 E7 STA $E7 C3/6D71: 9C 18 21 STZ $2118 C3/6D74: C6 E7 DEC $E7 C3/6D76: D0 F9 BNE $6D71 C3/6D78: 60 RTS C3/6D79: A0 00 30 LDY #$3000 C3/6D7C: 8C 16 21 STY $2116 C3/6D7F: 64 E3 STZ $E3 C3/6D81: A4 00 LDY $00 C3/6D83: E2 20 SEP #$20 C3/6D85: 7B TDC C3/6D86: BB TYX C3/6D87: BF 07 6E C3 LDA $C36E07,X C3/6D8B: 0A ASL C3/6D8C: AA TAX C3/6D8D: C2 20 REP #$20 C3/6D8F: BF 27 6E C3 LDA $C36E27,X C3/6D93: C9 FF FF CMP #$FFFF C3/6D96: F0 52 BEQ $6DEA C3/6D98: 48 PHA C3/6D99: A9 A0 16 LDA #$16A0 C3/6D9C: E2 20 SEP #$20 C3/6D9E: 8D 1B 21 STA $211B C3/6DA1: EB XBA C3/6DA2: 8D 1B 21 STA $211B C3/6DA5: A5 E3 LDA $E3 C3/6DA7: 8D 1C 21 STA $211C C3/6DAA: 8D 1C 21 STA $211C C3/6DAD: C2 20 REP #$20 C3/6DAF: 68 PLA C3/6DB0: 18 CLC C3/6DB1: 6D 34 21 ADC $2134 C3/6DB4: 85 EB STA $EB C3/6DB6: E2 20 SEP #$20 C3/6DB8: AD 36 21 LDA $2136 C3/6DBB: 69 D5 ADC #$D5 C3/6DBD: 85 ED STA $ED C3/6DBF: C2 21 REP #$21 C3/6DC1: A5 EB LDA $EB C3/6DC3: 69 00 00 ADC #$0000 C3/6DC6: 85 EB STA $EB C3/6DC8: E2 20 SEP #$20 C3/6DCA: A5 ED LDA $ED C3/6DCC: 69 00 ADC #$00 C3/6DCE: 85 ED STA $ED C3/6DD0: C2 20 REP #$20 C3/6DD2: 5A PHY C3/6DD3: 20 F8 6D JSR $6DF8 C3/6DD6: 7A PLY C3/6DD7: C8 INY C3/6DD8: C0 20 00 CPY #$0020 C3/6DDB: D0 A6 BNE $6D83 C3/6DDD: E2 20 SEP #$20 C3/6DDF: E6 E3 INC $E3 C3/6DE1: E6 E3 INC $E3 C3/6DE3: A5 E3 LDA $E3 C3/6DE5: C9 10 CMP #$10 C3/6DE7: D0 98 BNE $6D81 C3/6DE9: 60 RTS C3/6DEA: A9 10 00 LDA #$0010 C3/6DED: 85 E7 STA $E7 C3/6DEF: 9C 18 21 STZ $2118 C3/6DF2: C6 E7 DEC $E7 C3/6DF4: D0 F9 BNE $6DEF C3/6DF6: 80 DF BRA $6DD7 C3/6DF8: A4 00 LDY $00 C3/6DFA: B7 EB LDA [$EB],Y C3/6DFC: 8D 18 21 STA $2118 C3/6DFF: C8 INY C3/6E00: C8 INY C3/6E01: C0 20 00 CPY #$0020 C3/6E04: D0 F4 BNE $6DFA C3/6E06: 60 RTS C3/6E07: .DB $00, $01, $04, $05, $08, $09, $0C, $0D, $10, $11, $14, $15, $18, $19, $1C, $1D C3/6E17: .DB $02, $03, $06, $07, $0A, $0B, $0E, $0F, $12, $13, $16, $17, $1A, $1B, $1E, $1F C3/6E27: .DW $03C0, $03E0, $0500, $0520, $0540, $0560, $FFFF, $FFFF C3/6E37: .DW $03C0, $0660, $0680, $06A0, $06C0, $06E0, $FFFF, $FFFF C3/6E47: .DW $1A60, $1A80, $1BA0, $1BC0, $1BE0, $1C00, $FFFF, $FFFF C3/6E57: .DW $1A60, $1D00, $1D20, $1D40, $1D60, $1D80, $FFFF, $FFFF ; [ Copy Standard Menu Cursor/Icon Graphics to VRAM ] C3/6E67: C2 20 REP #$20 C3/6E69: A0 00 20 LDY #$2000 C3/6E6C: 8C 16 21 STY $2116 C3/6E6F: A6 00 LDX $00 C3/6E71: BF C0 5A ED LDA $ED5AC0,X C3/6E75: 8D 18 21 STA $2118 C3/6E78: E8 INX C3/6E79: E8 INX C3/6E7A: E0 00 14 CPX #$1400 C3/6E7D: D0 F2 BNE $6E71 C3/6E7F: E2 20 SEP #$20 C3/6E81: 60 RTS ; [ Load Character Portrait Graphics ] C3/6E82: A6 00 LDX $00 C3/6E84: C2 20 REP #$20 C3/6E86: BF 51 6F C3 LDA $C36F51,X ; set VRAM pointer C3/6E8A: 8D 16 21 STA $2116 C3/6E8D: B4 6D LDY $6D,X ; pointer to character data C3/6E8F: DA PHX C3/6E90: 7B TDC C3/6E91: E2 20 SEP #$20 C3/6E93: B9 14 00 LDA $0014,Y ; imp status C3/6E96: 29 20 AND #$20 C3/6E98: F0 04 BEQ $6E9E C3/6E9A: A9 0F LDA #$0F ; use imp portrait C3/6E9C: 80 0A BRA $6EA8 C3/6E9E: B9 00 00 LDA $0000,Y ; character graphics index C3/6EA1: C9 01 CMP #$01 ; if it's $01 (LOCKE), use portrait 1 C3/6EA3: F0 03 BEQ $6EA8 C3/6EA5: B9 01 00 LDA $0001,Y ; otherwise, use actor number C3/6EA8: C2 20 REP #$20 C3/6EAA: 0A ASL C3/6EAB: AA TAX C3/6EAC: BF 1B 6F C3 LDA $C36F1B,X ; pointer to character portrait graphics C3/6EB0: AA TAX C3/6EB1: 20 00 70 JSR $7000 ; copy character portrait graphics to VRAM C3/6EB4: FA PLX C3/6EB5: E8 INX C3/6EB6: E8 INX C3/6EB7: E0 08 00 CPX #$0008 C3/6EBA: D0 C8 BNE $6E84 C3/6EBC: E2 20 SEP #$20 C3/6EBE: 60 RTS ; [ Get Pointer to Character Portrait Graphics ] ; $9C = character slot number ; +$19 = size (out) ; +$1B = VRAM destination pointer (out) ; ++$1D = pointer to graphics (out) C3/6EBF: A9 ED LDA #$ED C3/6EC1: 85 1F STA $1F C3/6EC3: A0 20 03 LDY #$0320 C3/6EC6: 84 19 STY $19 C3/6EC8: 7B TDC C3/6EC9: A5 9C LDA $9C C3/6ECB: 0A ASL C3/6ECC: AA TAX C3/6ECD: C2 20 REP #$20 C3/6ECF: BF 51 6F C3 LDA $C36F51,X C3/6ED3: 85 1B STA $1B C3/6ED5: B4 6D LDY $6D,X C3/6ED7: 7B TDC C3/6ED8: E2 20 SEP #$20 C3/6EDA: B9 14 00 LDA $0014,Y C3/6EDD: 29 20 AND #$20 C3/6EDF: F0 04 BEQ $6EE5 C3/6EE1: A9 0F LDA #$0F C3/6EE3: 80 0A BRA $6EEF C3/6EE5: B9 00 00 LDA $0000,Y C3/6EE8: C9 01 CMP #$01 C3/6EEA: F0 03 BEQ $6EEF C3/6EEC: B9 01 00 LDA $0001,Y C3/6EEF: C2 20 REP #$20 C3/6EF1: 0A ASL C3/6EF2: AA TAX C3/6EF3: BF 1B 6F C3 LDA $C36F1B,X C3/6EF7: 18 CLC C3/6EF8: 69 00 1D ADC #$1D00 C3/6EFB: 85 1D STA $1D C3/6EFD: E2 20 SEP #$20 C3/6EFF: 60 RTS ; corresponding color palettes for each character portrait C3/6F00: .DB $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F C3/6F10: .DB $10, $11, $00, $0E, $12, $00, $00, $00, $00, $00, $06 ; pointers to character portrait graphics C3/6F1B: .DW $0000, $0320, $0640, $0960, $0C80, $0FA0, $12C0, $15E0 C3/6F2B: .DW $1900, $1C20, $1F40, $2260, $2580, $28A0, $2BC0, $2EE0 C3/6F3B: .DW $3200, $3520, $0000, $2BC0, $3840, $0000, $0000, $0000 C3/6F4B: .DW $0000, $0000, $12C0 ; VRAM pointers for character portrait graphics C3/6F51: .DW $2600, $2800, $2A00, $2C00, $2E00, $3000, $3200, $3400 C3/6F61: A4 91 LDY $91 C3/6F63: F0 1B BEQ $6F80 C3/6F65: A6 00 LDX $00 C3/6F67: B5 69 LDA $69,X C3/6F69: 30 08 BMI $6F73 C3/6F6B: 20 97 6F JSR $6F97 C3/6F6E: 20 A6 6F JSR $6FA6 C3/6F71: 80 02 BRA $6F75 C3/6F73: A9 FF LDA #$FF C3/6F75: 9F 71 AA 7E STA $7EAA71,X C3/6F79: E8 INX C3/6F7A: E0 04 00 CPX #$0004 C3/6F7D: D0 E8 BNE $6F67 C3/6F7F: 60 RTS C3/6F80: A6 00 LDX $00 C3/6F82: 80 00 BRA $6F84 C3/6F84: A9 FF LDA #$FF C3/6F86: 9F 71 AA 7E STA $7EAA71,X C3/6F8A: 9F 72 AA 7E STA $7EAA72,X C3/6F8E: 9F 73 AA 7E STA $7EAA73,X C3/6F92: 9F 74 AA 7E STA $7EAA74,X C3/6F96: 60 RTS C3/6F97: DA PHX C3/6F98: C2 20 REP #$20 C3/6F9A: 8A TXA C3/6F9B: 0A ASL C3/6F9C: AA TAX C3/6F9D: B4 6D LDY $6D,X C3/6F9F: E2 20 SEP #$20 C3/6FA1: FA PLX C3/6FA2: B9 01 00 LDA $0001,Y C3/6FA5: 60 RTS C3/6FA6: C9 0E CMP #$0E C3/6FA8: D0 0D BNE $6FB7 C3/6FAA: AD A0 1E LDA $1EA0 C3/6FAD: 89 08 BIT #$08 C3/6FAF: F0 04 BEQ $6FB5 C3/6FB1: A9 16 LDA #$16 C3/6FB3: 80 02 BRA $6FB7 C3/6FB5: A9 0E LDA #$0E C3/6FB7: 60 RTS C3/6FB8: A4 93 LDY $93 C3/6FBA: F0 1B BEQ $6FD7 C3/6FBC: A6 00 LDX $00 C3/6FBE: B5 69 LDA $69,X C3/6FC0: 30 08 BMI $6FCA C3/6FC2: 20 97 6F JSR $6F97 C3/6FC5: 20 A6 6F JSR $6FA6 C3/6FC8: 80 02 BRA $6FCC C3/6FCA: A9 FF LDA #$FF C3/6FCC: 9F 75 AA 7E STA $7EAA75,X C3/6FD0: E8 INX C3/6FD1: E0 04 00 CPX #$0004 C3/6FD4: D0 E8 BNE $6FBE C3/6FD6: 60 RTS C3/6FD7: A2 04 00 LDX #$0004 C3/6FDA: 80 A8 BRA $6F84 C3/6FDC: A4 95 LDY $95 C3/6FDE: F0 1B BEQ $6FFB C3/6FE0: A6 00 LDX $00 C3/6FE2: B5 69 LDA $69,X C3/6FE4: 30 08 BMI $6FEE C3/6FE6: 20 97 6F JSR $6F97 C3/6FE9: 20 A6 6F JSR $6FA6 C3/6FEC: 80 02 BRA $6FF0 C3/6FEE: A9 FF LDA #$FF C3/6FF0: 9F 79 AA 7E STA $7EAA79,X C3/6FF4: E8 INX C3/6FF5: E0 04 00 CPX #$0004 C3/6FF8: D0 E8 BNE $6FE2 C3/6FFA: 60 RTS C3/6FFB: A2 08 00 LDX #$0008 C3/6FFE: 80 84 BRA $6F84 ; [ Copy Character Portrait Graphics to VRAM ] ; +X = pointer to portrait graphics (+$ED1D00) C3/7000: A0 90 01 LDY #$0190 C3/7003: BF 00 1D ED LDA $ED1D00,X ; character portrait graphics C3/7007: 8D 18 21 STA $2118 C3/700A: E8 INX C3/700B: E8 INX C3/700C: 88 DEY C3/700D: D0 F4 BNE $7003 C3/700F: 60 RTS ; [ Clear Blank Portrait Graphics ] ; for party select menu C3/7010: A2 51 9F LDX #$9F51 C3/7013: 8E 81 21 STX $2181 C3/7016: A2 90 01 LDX #$0190 C3/7019: 9C 80 21 STZ $2180 C3/701C: 9C 80 21 STZ $2180 C3/701F: CA DEX C3/7020: D0 F7 BNE $7019 C3/7022: 60 RTS ; --------------------------------------------[ Menu: SRAM ]-------------------------------------------- ; [ Validate SRAM ] C3/7023: C2 20 REP #$20 C3/7025: A9 1B E4 LDA #$E41B ; fixed value #$E41B C3/7028: CF F8 7F 30 CMP $307FF8 C3/702C: F0 19 BEQ $7047 C3/702E: CF FA 7F 30 CMP $307FFA C3/7032: F0 13 BEQ $7047 C3/7034: CF FC 7F 30 CMP $307FFC C3/7038: F0 0D BEQ $7047 C3/703A: CF FE 7F 30 CMP $307FFE C3/703E: F0 07 BEQ $7047 C3/7040: E2 20 SEP #$20 C3/7042: 20 4B 70 JSR $704B C3/7045: 18 CLC C3/7046: 60 RTS C3/7047: E2 20 SEP #$20 C3/7049: 38 SEC C3/704A: 60 RTS ; [ Clear SRAM ] C3/704B: 8B PHB C3/704C: A9 30 LDA #$30 C3/704E: 48 PHA C3/704F: AB PLB C3/7050: A2 00 00 LDX #$0000 C3/7053: C2 20 REP #$20 C3/7055: 9E 00 60 STZ $6000,X C3/7058: E8 INX C3/7059: E8 INX C3/705A: 9E 00 60 STZ $6000,X C3/705D: E8 INX C3/705E: E8 INX C3/705F: E0 00 20 CPX #$2000 C3/7062: D0 F1 BNE $7055 C3/7064: E2 20 SEP #$20 C3/7066: AB PLB C3/7067: 60 RTS ; [ Init Saved Menu Cursor Positions ] C3/7068: A2 00 00 LDX #$0000 C3/706B: 9E 2B 02 STZ $022B,X ; clear saved menu cursor positions C3/706E: E8 INX C3/706F: E0 1F 00 CPX #$001F C3/7072: D0 F7 BNE $706B C3/7074: A9 01 LDA #$01 ; character skills cursors default to magic C3/7076: 8D 37 02 STA $0237 C3/7079: 8D 39 02 STA $0239 C3/707C: 8D 3B 02 STA $023B C3/707F: 8D 3D 02 STA $023D C3/7082: 60 RTS ; [ Make SRAM Valid ] C3/7083: C2 20 REP #$20 C3/7085: A9 1B E4 LDA #$E41B ; set fixed value C3/7088: 8F F8 7F 30 STA $307FF8 C3/708C: 8F FA 7F 30 STA $307FFA C3/7090: 8F FC 7F 30 STA $307FFC C3/7094: 8F FE 7F 30 STA $307FFE C3/7098: E2 20 SEP #$20 C3/709A: 60 RTS ; [ Init Saved Game Data ] C3/709B: 20 68 70 JSR $7068 ; init saved menu data C3/709E: A0 FF 7F LDY #$7FFF ; set default font color C3/70A1: 8C 55 1D STY $1D55 C3/70A4: A9 12 LDA #$12 ; set default button mappings C3/70A6: 8D 50 1D STA $1D50 C3/70A9: A9 34 LDA #$34 C3/70AB: 8D 51 1D STA $1D51 C3/70AE: A9 56 LDA #$56 C3/70B0: 8D 52 1D STA $1D52 C3/70B3: A9 06 LDA #$06 C3/70B5: 8D 53 1D STA $1D53 C3/70B8: A9 2A LDA #$2A ; C3/70BA: 8D 4D 1D STA $1D4D C3/70BD: 7B TDC C3/70BE: A8 TAY C3/70BF: 8C C7 1D STY $1DC7 ; C3/70C2: 9C 54 1D STZ $1D54 C3/70C5: 9C 4E 1D STZ $1D4E C3/70C8: 9C 4F 1D STZ $1D4F C3/70CB: 8C 63 18 STY $1863 ; clear game time C3/70CE: 9C 65 18 STZ $1865 C3/70D1: 8C 60 18 STY $1860 ; clear gp C3/70D4: 9C 62 18 STZ $1862 C3/70D7: 8C 66 18 STY $1866 ; clear steps C3/70DA: 9C 68 18 STZ $1868 C3/70DD: 8C 1B 02 STY $021B ; clear menu game time C3/70E0: 8C 1D 02 STY $021D C3/70E3: 20 BC 6B JSR $6BBC ; load wallpaper palettes C3/70E6: 60 RTS ; ----------------------------------------[ Menu: Party Select ]---------------------------------------- ; [ Menu State $2C: Party Select Init ] C3/70E7: 20 FC 70 JSR $70FC C3/70EA: 64 4A STZ $4A C3/70EC: 64 5A STZ $5A C3/70EE: 64 99 STZ $99 C3/70F0: 20 2A 76 JSR $762A C3/70F3: 20 82 74 JSR $7482 C3/70F6: 20 8B 74 JSR $748B C3/70F9: 4C 14 71 JMP $7114 C3/70FC: 20 2F 35 JSR $352F ; disable interrupts C3/70FF: 20 04 69 JSR $6904 C3/7102: A9 03 LDA #$03 C3/7104: 8D 07 21 STA $2107 C3/7107: A9 C0 LDA #$C0 C3/7109: 14 43 TRB $43 C3/710B: A9 02 LDA #$02 C3/710D: 85 46 STA $46 C3/710F: A9 06 LDA #$06 C3/7111: 04 47 TSB $47 C3/7113: 60 RTS C3/7114: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/7117: 20 C5 75 JSR $75C5 C3/711A: 20 22 75 JSR $7522 C3/711D: 20 3F 79 JSR $793F C3/7120: 20 53 79 JSR $7953 C3/7123: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/7126: A9 2D LDA #$2D C3/7128: 85 27 STA $27 C3/712A: A9 66 LDA #$66 C3/712C: 85 26 STA $26 C3/712E: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $7D: ] C3/7131: 20 FC 70 JSR $70FC C3/7134: A5 5D LDA $5D C3/7136: 85 99 STA $99 C3/7138: 20 77 76 JSR $7677 C3/713B: A5 90 LDA $90 C3/713D: D0 0C BNE $714B C3/713F: 20 82 74 JSR $7482 C3/7142: A4 8E LDY $8E C3/7144: 84 4D STY $4D C3/7146: 20 8B 74 JSR $748B C3/7149: 80 1A BRA $7165 C3/714B: A5 90 LDA $90 C3/714D: 85 4A STA $4A C3/714F: A5 8D LDA $8D C3/7151: 85 5A STA $5A C3/7153: 20 DB 73 JSR $73DB C3/7156: A4 8E LDY $8E C3/7158: 84 4D STY $4D C3/715A: A5 79 LDA $79 C3/715C: 85 59 STA $59 C3/715E: A4 7A LDY $7A C3/7160: 84 53 STY $53 C3/7162: 20 15 74 JSR $7415 C3/7165: 4C 14 71 JMP $7114 ; [ Menu State $2D: ] C3/7168: 20 B9 71 JSR $71B9 C3/716B: 90 4B BCC $71B8 C3/716D: A5 08 LDA $08 C3/716F: 89 80 BIT #$80 C3/7171: F0 36 BEQ $71A9 C3/7173: A5 4B LDA $4B C3/7175: 18 CLC C3/7176: 65 4A ADC $4A C3/7178: 65 5A ADC $5A C3/717A: AA TAX C3/717B: BF 8D AC 7E LDA $7EAC8D,X C3/717F: 30 21 BMI $71A2 C3/7181: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/7184: A5 4B LDA $4B C3/7186: 85 28 STA $28 C3/7188: A5 4A LDA $4A C3/718A: 85 49 STA $49 C3/718C: A5 5A LDA $5A C3/718E: 85 5B STA $5B C3/7190: A9 2E LDA #$2E C3/7192: 85 26 STA $26 C3/7194: 20 21 2F JSR $2F21 C3/7197: A5 4A LDA $4A C3/7199: F0 06 BEQ $71A1 C3/719B: A9 02 LDA #$02 C3/719D: 9F 49 36 7E STA $7E3649,X C3/71A1: 60 RTS C3/71A2: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/71A5: 20 5D 30 JSR $305D ; create mosaic thread C3/71A8: 60 RTS C3/71A9: A5 09 LDA $09 C3/71AB: 89 10 BIT #$10 C3/71AD: D0 06 BNE $71B5 C3/71AF: A5 09 LDA $09 C3/71B1: 89 80 BIT #$80 C3/71B3: F0 03 BEQ $71B8 C3/71B5: 20 96 72 JSR $7296 C3/71B8: 60 RTS C3/71B9: 20 B8 75 JSR $75B8 C3/71BC: A5 0B LDA $0B C3/71BE: 89 04 BIT #$04 C3/71C0: F0 1C BEQ $71DE C3/71C2: A5 4E LDA $4E C3/71C4: C9 01 CMP #$01 C3/71C6: D0 16 BNE $71DE C3/71C8: A5 4A LDA $4A C3/71CA: D0 12 BNE $71DE C3/71CC: A9 10 LDA #$10 C3/71CE: 85 4A STA $4A C3/71D0: A5 99 LDA $99 C3/71D2: 0A ASL C3/71D3: 0A ASL C3/71D4: 85 5A STA $5A C3/71D6: 20 DB 73 JSR $73DB C3/71D9: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/71DC: 18 CLC C3/71DD: 60 RTS C3/71DE: A5 0B LDA $0B C3/71E0: 89 08 BIT #$08 C3/71E2: F0 22 BEQ $7206 C3/71E4: A5 4E LDA $4E C3/71E6: D0 1E BNE $7206 C3/71E8: A5 4A LDA $4A C3/71EA: F0 1A BEQ $7206 C3/71EC: A5 4D LDA $4D C3/71EE: 85 5E STA $5E C3/71F0: 64 4A STZ $4A C3/71F2: 64 5A STZ $5A C3/71F4: 20 82 74 JSR $7482 C3/71F7: A9 01 LDA #$01 C3/71F9: 85 4E STA $4E C3/71FB: 20 4C 74 JSR $744C C3/71FE: 20 8B 74 JSR $748B C3/7201: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/7204: 18 CLC C3/7205: 60 RTS C3/7206: 20 15 74 JSR $7415 C3/7209: 38 SEC C3/720A: 60 RTS C3/720B: 60 RTS ; [ Menu State $2E: Party Select (move) ] C3/720C: 20 B9 71 JSR $71B9 C3/720F: 90 FA BCC $720B C3/7211: A5 08 LDA $08 C3/7213: 89 80 BIT #$80 C3/7215: F0 66 BEQ $727D C3/7217: 7B TDC C3/7218: A5 4B LDA $4B C3/721A: 18 CLC C3/721B: 65 4A ADC $4A C3/721D: 65 5A ADC $5A C3/721F: 85 E0 STA $E0 C3/7221: AA TAX C3/7222: BF 8D AC 7E LDA $7EAC8D,X C3/7226: 30 67 BMI $728F C3/7228: 7B TDC C3/7229: A5 28 LDA $28 C3/722B: 18 CLC C3/722C: 65 49 ADC $49 C3/722E: 65 5B ADC $5B C3/7230: C5 E0 CMP $E0 C3/7232: D0 31 BNE $7265 C3/7234: A5 E0 LDA $E0 C3/7236: AA TAX C3/7237: BF 89 9D 7E LDA $7E9D89,X C3/723B: 30 3A BMI $7277 C3/723D: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/7240: A5 59 LDA $59 C3/7242: 85 79 STA $79 C3/7244: A4 53 LDY $53 C3/7246: 84 7A STY $7A C3/7248: A4 4D LDY $4D C3/724A: 84 8E STY $8E C3/724C: A5 4A LDA $4A C3/724E: 85 90 STA $90 C3/7250: A5 5A LDA $5A C3/7252: 85 8D STA $8D C3/7254: A5 99 LDA $99 C3/7256: 85 5D STA $5D C3/7258: A9 42 LDA #$42 C3/725A: 85 27 STA $27 C3/725C: A9 67 LDA #$67 C3/725E: 85 26 STA $26 C3/7260: A9 7D LDA #$7D C3/7262: 85 4C STA $4C C3/7264: 60 RTS C3/7265: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/7268: A9 07 LDA #$07 C3/726A: 14 47 TRB $47 C3/726C: 20 F8 72 JSR $72F8 C3/726F: 20 B0 11 JSR $11B0 ; execute threads C3/7272: 20 13 76 JSR $7613 C3/7275: 80 0F BRA $7286 C3/7277: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/727A: 20 5D 30 JSR $305D ; create mosaic thread C3/727D: A5 09 LDA $09 C3/727F: 89 80 BIT #$80 C3/7281: F0 0B BEQ $728E C3/7283: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/7286: A9 2D LDA #$2D C3/7288: 85 26 STA $26 C3/728A: A9 05 LDA #$05 C3/728C: 14 46 TRB $46 C3/728E: 60 RTS C3/728F: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/7292: 20 5D 30 JSR $305D ; create mosaic thread C3/7295: 60 RTS C3/7296: 7B TDC C3/7297: AA TAX C3/7298: AD 01 02 LDA $0201 ; number of parties C3/729B: 29 7F AND #$7F C3/729D: 0A ASL C3/729E: 0A ASL C3/729F: 85 F3 STA $F3 C3/72A1: 64 F4 STZ $F4 C3/72A3: 64 E0 STZ $E0 C3/72A5: A0 04 00 LDY #$0004 C3/72A8: BF 99 9D 7E LDA $7E9D99,X C3/72AC: 30 02 BMI $72B0 C3/72AE: E6 E0 INC $E0 C3/72B0: E8 INX C3/72B1: 88 DEY C3/72B2: D0 F4 BNE $72A8 C3/72B4: A5 E0 LDA $E0 C3/72B6: F0 13 BEQ $72CB C3/72B8: E4 F3 CPX $F3 C3/72BA: D0 E7 BNE $72A3 C3/72BC: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/72BF: 9C 05 02 STZ $0205 C3/72C2: A9 FF LDA #$FF C3/72C4: 85 27 STA $27 C3/72C6: A9 67 LDA #$67 C3/72C8: 85 26 STA $26 C3/72CA: 60 RTS C3/72CB: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/72CE: A9 20 LDA #$20 C3/72D0: 85 29 STA $29 C3/72D2: AD 01 02 LDA $0201 C3/72D5: 29 07 AND #$07 C3/72D7: C9 01 CMP #$01 C3/72D9: F0 0E BEQ $72E9 ; branch if one party C3/72DB: A0 B7 7A LDY #$7AB7 C3/72DE: 20 F9 02 JSR $02F9 ; draw positioned text C3/72E1: A2 2F 39 LDX #$392F C3/72E4: 20 F7 75 JSR $75F7 C3/72E7: 80 06 BRA $72EF C3/72E9: A0 CE 7A LDY #$7ACE C3/72EC: 20 F9 02 JSR $02F9 ; draw positioned text C3/72EF: A9 20 LDA #$20 C3/72F1: 85 20 STA $20 C3/72F3: A9 69 LDA #$69 C3/72F5: 85 26 STA $26 C3/72F7: 60 RTS C3/72F8: 7B TDC C3/72F9: A5 28 LDA $28 C3/72FB: 18 CLC C3/72FC: 65 49 ADC $49 C3/72FE: 65 5B ADC $5B C3/7300: AA TAX C3/7301: BF 89 9D 7E LDA $7E9D89,X C3/7305: 85 E5 STA $E5 C3/7307: 10 0E BPL $7317 C3/7309: BF 51 9E 7E LDA $7E9E51,X C3/730D: 1F AF 73 C3 ORA $C373AF,X C3/7311: 85 E0 STA $E0 C3/7313: 64 E1 STZ $E1 C3/7315: 80 0F BRA $7326 C3/7317: A8 TAY C3/7318: B9 50 18 LDA $1850,Y C3/731B: 29 DF AND #$DF C3/731D: 85 E0 STA $E0 C3/731F: B9 50 18 LDA $1850,Y C3/7322: 29 20 AND #$20 C3/7324: 85 E1 STA $E1 C3/7326: A5 4B LDA $4B C3/7328: 18 CLC C3/7329: 65 4A ADC $4A C3/732B: 65 5A ADC $5A C3/732D: AA TAX C3/732E: BF 89 9D 7E LDA $7E9D89,X C3/7332: 85 E6 STA $E6 C3/7334: 10 0E BPL $7344 C3/7336: BF 51 9E 7E LDA $7E9E51,X C3/733A: 1F AF 73 C3 ORA $C373AF,X C3/733E: 85 E2 STA $E2 C3/7340: 64 E3 STZ $E3 C3/7342: 80 0F BRA $7353 C3/7344: A8 TAY C3/7345: B9 50 18 LDA $1850,Y C3/7348: 29 DF AND #$DF C3/734A: 85 E2 STA $E2 C3/734C: B9 50 18 LDA $1850,Y C3/734F: 29 20 AND #$20 C3/7351: 85 E3 STA $E3 C3/7353: A5 E0 LDA $E0 C3/7355: 29 40 AND #$40 C3/7357: D0 08 BNE $7361 C3/7359: A5 E2 LDA $E2 C3/735B: 29 40 AND #$40 C3/735D: D0 1B BNE $737A C3/735F: 80 30 BRA $7391 C3/7361: 7B TDC C3/7362: A5 28 LDA $28 C3/7364: 18 CLC C3/7365: 65 49 ADC $49 C3/7367: 65 5B ADC $5B C3/7369: AA TAX C3/736A: BF 89 9D 7E LDA $7E9D89,X C3/736E: 30 E9 BMI $7359 C3/7370: AA TAX C3/7371: A5 E2 LDA $E2 C3/7373: 05 E1 ORA $E1 C3/7375: 9D 50 18 STA $1850,X C3/7378: 80 DF BRA $7359 C3/737A: 7B TDC C3/737B: A5 4B LDA $4B C3/737D: 18 CLC C3/737E: 65 4A ADC $4A C3/7380: 65 5A ADC $5A C3/7382: AA TAX C3/7383: BF 89 9D 7E LDA $7E9D89,X C3/7387: 30 08 BMI $7391 C3/7389: AA TAX C3/738A: A5 E0 LDA $E0 C3/738C: 05 E3 ORA $E3 C3/738E: 9D 50 18 STA $1850,X C3/7391: 7B TDC C3/7392: A5 4B LDA $4B C3/7394: 18 CLC C3/7395: 65 4A ADC $4A C3/7397: 65 5A ADC $5A C3/7399: AA TAX C3/739A: A5 E5 LDA $E5 C3/739C: 9F 89 9D 7E STA $7E9D89,X C3/73A0: A5 28 LDA $28 C3/73A2: 18 CLC C3/73A3: 65 49 ADC $49 C3/73A5: 65 5B ADC $5B C3/73A7: AA TAX C3/73A8: A5 E6 LDA $E6 C3/73AA: 9F 89 9D 7E STA $7E9D89,X C3/73AE: 60 RTS C3/73AF: .DB $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40, $40 C3/73BF: .DB $40, $48, $50, $58, $40, $48, $50, $58, $40, $48, $50, $58, $40, $48, $50, $58 C3/73CF: .DB $40, $48, $50, $58, $40, $48, $50, $58, $40, $48, $50, $58 C3/73DB: A5 4D LDA $4D C3/73DD: 85 5E STA $5E C3/73DF: AD 01 02 LDA $0201 ; number of parties C3/73E2: 29 7F AND #$7F C3/73E4: C9 01 CMP #$01 C3/73E6: F0 0D BEQ $73F5 ; branch if one C3/73E8: C9 02 CMP #$02 C3/73EA: F0 19 BEQ $7405 ; branch if two C3/73EC: 20 AF 74 JSR $74AF C3/73EF: 20 32 74 JSR $7432 C3/73F2: 4C B8 74 JMP $74B8 C3/73F5: 20 91 74 JSR $7491 C3/73F8: A5 5E LDA $5E C3/73FA: C9 01 CMP #$01 C3/73FC: 90 02 BCC $7400 C3/73FE: A9 01 LDA #$01 C3/7400: 85 4D STA $4D C3/7402: 4C 9A 74 JMP $749A C3/7405: 20 A0 74 JSR $74A0 C3/7408: A5 5E LDA $5E C3/740A: C9 03 CMP #$03 C3/740C: 90 02 BCC $7410 C3/740E: A9 03 LDA #$03 C3/7410: 85 4D STA $4D C3/7412: 4C A9 74 JMP $74A9 C3/7415: A5 4A LDA $4A C3/7417: F0 16 BEQ $742F C3/7419: AD 01 02 LDA $0201 ; number of parties C3/741C: 29 7F AND #$7F C3/741E: C9 01 CMP #$01 C3/7420: F0 0A BEQ $742C ; branch if one C3/7422: C9 02 CMP #$02 C3/7424: F0 03 BEQ $7429 ; branch if two C3/7426: 4C B5 74 JMP $74B5 C3/7429: 4C A6 74 JMP $74A6 C3/742C: 4C 97 74 JMP $7497 C3/742F: 4C 88 74 JMP $7488 C3/7432: A5 5E LDA $5E C3/7434: A6 00 LDX $00 C3/7436: DF 66 74 C3 CMP $C37466,X C3/743A: F0 08 BEQ $7444 C3/743C: E8 INX C3/743D: E8 INX C3/743E: E0 10 00 CPX #$0010 C3/7441: D0 F3 BNE $7436 C3/7443: 60 RTS C3/7444: E8 INX C3/7445: BF 66 74 C3 LDA $C37466,X C3/7449: 85 4D STA $4D C3/744B: 60 RTS C3/744C: A5 5E LDA $5E C3/744E: A6 00 LDX $00 C3/7450: DF 76 74 C3 CMP $C37476,X C3/7454: F0 08 BEQ $745E C3/7456: E8 INX C3/7457: E8 INX C3/7458: E0 0C 00 CPX #$000C C3/745B: D0 F3 BNE $7450 C3/745D: 60 RTS C3/745E: E8 INX C3/745F: BF 76 74 C3 LDA $C37476,X C3/7463: 85 4D STA $4D C3/7465: 60 RTS C3/7466: .DB $00, $00, $01, $01, $02, $01, $03, $02, $04, $03, $05, $04, $06, $04, $07, $05 C3/7476: .DB $00, $00, $01, $01, $02, $03, $03, $04, $04, $06, $05, $07 C3/7482: A0 BE 74 LDY #$74BE C3/7485: 4C FE 05 JMP $05FE ; init cursor C3/7488: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/748B: A0 C3 74 LDY #$74C3 C3/748E: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/7491: A0 E3 74 LDY #$74E3 C3/7494: 4C FE 05 JMP $05FE ; init cursor C3/7497: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/749A: A0 E8 74 LDY #$74E8 C3/749D: 4C 37 06 JMP $0637 ; update cursor position (rotated list) C3/74A0: A0 F0 74 LDY #$74F0 C3/74A3: 4C FE 05 JMP $05FE ; init cursor C3/74A6: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/74A9: A0 F5 74 LDY #$74F5 C3/74AC: 4C 37 06 JMP $0637 ; update cursor position (rotated list) C3/74AF: A0 05 75 LDY #$7505 C3/74B2: 4C FE 05 JMP $05FE ; init cursor C3/74B5: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/74B8: A0 0A 75 LDY #$750A C3/74BB: 4C 37 06 JMP $0637 ; update cursor position (rotated list) C3/74BE: .DB $81, $00, $00, $08, $02 C3/74C3: .DW $6408, $6424, $6440, $645C, $6478, $6494, $64B0, $64CC C3/74D3: .DW $8008, $8024, $8040, $805C, $8078, $8094, $80B0, $80CC C3/74E3: .DB $81, $00, $00, $02, $02 C3/74E8: .DW $A408, $A428, $C008, $C028 C3/74F0: .DB $81, $00, $00, $04, $02 C3/74F5: .DW $A408, $A428, $A458, $A478, $C008, $C028, $C058, $C078 C3/7505: .DB $81, $00, $00, $06, $02 C3/750A: .DW $A408, $A428, $A458, $A478, $A4A8, $A4C8, $C008, $C028 C3/751A: .DW $C058, $C078, $C0A8, $C0C8 C3/7522: A0 A0 75 LDY #$75A0 C3/7525: 20 41 03 JSR $0341 ; draw window C3/7528: A0 9C 75 LDY #$759C C3/752B: 20 41 03 JSR $0341 ; draw window C3/752E: A0 A4 75 LDY #$75A4 C3/7531: 20 41 03 JSR $0341 ; draw window C3/7534: A0 A8 75 LDY #$75A8 C3/7537: 20 41 03 JSR $0341 ; draw window C3/753A: A0 98 75 LDY #$7598 C3/753D: 20 41 03 JSR $0341 ; draw window C3/7540: 20 72 75 JSR $7572 C3/7543: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/7546: 20 5F 75 JSR $755F C3/7549: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/754C: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/754F: A9 24 LDA #$24 C3/7551: 85 29 STA $29 C3/7553: A0 AE 7A LDY #$7AAE C3/7556: 20 F9 02 JSR $02F9 ; draw positioned text C3/7559: 20 62 75 JSR $7562 C3/755C: 4C 28 0E JMP $0E28 ; copy bg1 data to vram (top screens) C3/755F: 4C 3C 6A JMP $6A3C ; clear bg3 data (top left screen) C3/7562: A9 20 LDA #$20 C3/7564: 85 29 STA $29 C3/7566: A0 95 7A LDY #$7A95 C3/7569: 20 F9 02 JSR $02F9 ; draw positioned text C3/756C: A2 27 39 LDX #$3927 C3/756F: 4C F7 75 JMP $75F7 C3/7572: 7B TDC C3/7573: AD 01 02 LDA $0201 ; number of parties C3/7576: 29 7F AND #$7F C3/7578: 0A ASL C3/7579: AA TAX C3/757A: 7C 7D 75 JMP ($757D,X) C3/757D: .DW $0000, $7591, $758B, $7585 C3/7585: A0 B4 75 LDY #$75B4 C3/7588: 20 41 03 JSR $0341 ; draw window C3/758B: A0 B0 75 LDY #$75B0 C3/758E: 20 41 03 JSR $0341 ; draw window C3/7591: A0 AC 75 LDY #$75AC C3/7594: 20 41 03 JSR $0341 ; draw window C3/7597: 60 RTS C3/7598: .DB $8B, $58, $06, $02 C3/759C: .DB $CB, $5C, $1C, $07 C3/75A0: .DB $8B, $59, $1C, $05 C3/75A4: .DB $0B, $5B, $1C, $06 C3/75A8: .DB $9B, $58, $14, $02 C3/75AC: .DB $0B, $5D, $08, $06 C3/75B0: .DB $1F, $5D, $08, $06 C3/75B4: .DB $33, $5D, $08, $06 C3/75B8: A9 06 LDA #$06 C3/75BA: 04 47 TSB $47 C3/75BC: 20 2F 7C JSR $7C2F C3/75BF: 20 AE 7C JSR $7CAE C3/75C2: 4C 53 79 JMP $7953 C3/75C5: A9 02 LDA #$02 C3/75C7: 8D 50 43 STA $4350 C3/75CA: A9 0E LDA #$0E C3/75CC: 8D 51 43 STA $4351 C3/75CF: A0 E4 75 LDY #$75E4 C3/75D2: 8C 52 43 STY $4352 C3/75D5: A9 C3 LDA #$C3 C3/75D7: 8D 54 43 STA $4354 C3/75DA: A9 C3 LDA #$C3 C3/75DC: 8D 57 43 STA $4357 C3/75DF: A9 20 LDA #$20 C3/75E1: 04 43 TSB $43 C3/75E3: 60 RTS C3/75E4: .DB $20, $02, $00, $08, $00, $00, $0B, $04, $00, $0C, $08, $00, $0C, $0C, $00, $0C C3/75F4: .DB $10, $00, $00 C3/75F7: 7B TDC C3/75F8: AD 01 02 LDA $0201 ; number of parties C3/75FB: 29 07 AND #$07 C3/75FD: 18 CLC C3/75FE: 69 B4 ADC #$B4 C3/7600: 85 F9 STA $F9 C3/7602: 64 FA STZ $FA C3/7604: 86 F7 STX $F7 C3/7606: A0 F7 00 LDY #$00F7 C3/7609: 84 E7 STY $E7 C3/760B: A9 00 LDA #$00 C3/760D: 85 E9 STA $E9 C3/760F: 20 FF 02 JSR $02FF ; draw positioned text C3/7612: 60 RTS C3/7613: A9 FF LDA #$FF C3/7615: A6 00 LDX $00 C3/7617: 9F 99 9D 7E STA $7E9D99,X C3/761B: E8 INX C3/761C: E0 90 00 CPX #$0090 C3/761F: D0 F6 BNE $7617 C3/7621: 20 EA 76 JSR $76EA C3/7624: 20 53 78 JSR $7853 C3/7627: 4C 83 76 JMP $7683 C3/762A: A9 FF LDA #$FF C3/762C: A6 00 LDX $00 C3/762E: 9F 89 9D 7E STA $7E9D89,X C3/7632: E8 INX C3/7633: E0 A0 00 CPX #$00A0 C3/7636: D0 F6 BNE $762E C3/7638: A2 89 9D LDX #$9D89 C3/763B: 8E 81 21 STX $2181 C3/763E: AD 01 02 LDA $0201 ; number of parties C3/7641: 30 22 BMI $7665 ; branch if clearing parties C3/7643: A6 00 LDX $00 C3/7645: BD 50 18 LDA $1850,X C3/7648: 29 40 AND #$40 C3/764A: F0 0B BEQ $7657 C3/764C: BD 50 18 LDA $1850,X C3/764F: 29 07 AND #$07 C3/7651: D0 04 BNE $7657 C3/7653: 8A TXA C3/7654: 8D 80 21 STA $2180 C3/7657: E8 INX C3/7658: E0 10 00 CPX #$0010 C3/765B: D0 E8 BNE $7645 C3/765D: A9 FF LDA #$FF C3/765F: 8D 80 21 STA $2180 C3/7662: 4C 77 76 JMP $7677 C3/7665: A6 00 LDX $00 C3/7667: BD 50 18 LDA $1850,X C3/766A: 29 F8 AND #$F8 C3/766C: 9D 50 18 STA $1850,X C3/766F: E8 INX C3/7670: E0 10 00 CPX #$0010 C3/7673: D0 F2 BNE $7667 C3/7675: 80 CC BRA $7643 C3/7677: 20 EA 76 JSR $76EA C3/767A: 20 53 78 JSR $7853 C3/767D: 20 83 76 JSR $7683 C3/7680: 4C 0C 79 JMP $790C C3/7683: A6 00 LDX $00 C3/7685: 7B TDC C3/7686: BF 89 9D 7E LDA $7E9D89,X C3/768A: 30 33 BMI $76BF C3/768C: DA PHX C3/768D: 48 PHA C3/768E: A9 00 LDA #$00 C3/7690: 48 PHA C3/7691: AB PLB C3/7692: A9 02 LDA #$02 C3/7694: A0 5F 7A LDY #$7A5F C3/7697: 20 73 11 JSR $1173 ; create thread C3/769A: 9B TXY C3/769B: 7B TDC C3/769C: 68 PLA C3/769D: 9F C9 35 7E STA $7E35C9,X C3/76A1: 20 EB 78 JSR $78EB C3/76A4: FA PLX C3/76A5: BF CA 76 C3 LDA $C376CA,X C3/76A9: 99 CA 33 STA $33CA,Y C3/76AC: BF DA 76 C3 LDA $C376DA,X C3/76B0: 99 4A 34 STA $344A,Y C3/76B3: 7B TDC C3/76B4: 99 CB 33 STA $33CB,Y C3/76B7: 99 4B 34 STA $344B,Y C3/76BA: A9 D8 LDA #$D8 C3/76BC: 99 CA 35 STA $35CA,Y C3/76BF: E8 INX C3/76C0: E0 10 00 CPX #$0010 C3/76C3: D0 C0 BNE $7685 C3/76C5: A9 00 LDA #$00 C3/76C7: 48 PHA C3/76C8: AB PLB C3/76C9: 60 RTS C3/76CA: .DB $18, $34, $50, $6C, $88, $A4, $C0, $DC, $18, $34, $50, $6C, $88, $A4, $C0, $DC C3/76DA: .DB $5C, $5C, $5C, $5C, $5C, $5C, $5C, $5C, $78, $78, $78, $78, $78, $78, $78, $78 C3/76EA: A2 B9 9D LDX #$9DB9 C3/76ED: 86 E7 STX $E7 C3/76EF: AD 01 02 LDA $0201 C3/76F2: 29 07 AND #$07 C3/76F4: 85 E6 STA $E6 C3/76F6: A9 01 LDA #$01 C3/76F8: 85 E0 STA $E0 C3/76FA: A6 E7 LDX $E7 C3/76FC: 8E 81 21 STX $2181 C3/76FF: A6 00 LDX $00 C3/7701: BD 50 18 LDA $1850,X C3/7704: 29 40 AND #$40 C3/7706: F0 0D BEQ $7715 C3/7708: BD 50 18 LDA $1850,X C3/770B: 29 07 AND #$07 C3/770D: C5 E0 CMP $E0 C3/770F: D0 04 BNE $7715 C3/7711: 8A TXA C3/7712: 8D 80 21 STA $2180 C3/7715: E8 INX C3/7716: E0 10 00 CPX #$0010 C3/7719: D0 E6 BNE $7701 C3/771B: A9 FF LDA #$FF C3/771D: 8D 80 21 STA $2180 C3/7720: C2 20 REP #$20 C3/7722: A5 E7 LDA $E7 C3/7724: 18 CLC C3/7725: 69 10 00 ADC #$0010 C3/7728: 85 E7 STA $E7 C3/772A: E2 20 SEP #$20 C3/772C: E6 E0 INC $E0 C3/772E: C6 E6 DEC $E6 C3/7730: D0 C8 BNE $76FA C3/7732: 20 38 77 JSR $7738 C3/7735: 4C 02 78 JMP $7802 C3/7738: AD 01 02 LDA $0201 C3/773B: 29 07 AND #$07 C3/773D: 85 E6 STA $E6 C3/773F: A6 00 LDX $00 C3/7741: A9 7E LDA #$7E C3/7743: 85 E9 STA $E9 C3/7745: C2 20 REP #$20 C3/7747: BF E6 77 C3 LDA $C377E6,X C3/774B: 85 E7 STA $E7 C3/774D: BF E8 77 C3 LDA $C377E8,X C3/7751: DA PHX C3/7752: AA TAX C3/7753: E2 20 SEP #$20 C3/7755: 20 25 7B JSR $7B25 C3/7758: FA PLX C3/7759: E8 INX C3/775A: E8 INX C3/775B: E8 INX C3/775C: E8 INX C3/775D: C6 E6 DEC $E6 C3/775F: D0 E0 BNE $7741 C3/7761: A2 99 9D LDX #$9D99 C3/7764: 8E 81 21 STX $2181 C3/7767: AD 01 02 LDA $0201 C3/776A: 29 7F AND #$7F C3/776C: C9 01 CMP #$01 C3/776E: F0 66 BEQ $77D6 C3/7770: C9 02 CMP #$02 C3/7772: F0 4F BEQ $77C3 C3/7774: 20 C3 77 JSR $77C3 C3/7777: A6 00 LDX $00 C3/7779: BF E1 9D 7E LDA $7E9DE1,X C3/777D: 8D 80 21 STA $2180 C3/7780: E8 INX C3/7781: E0 04 00 CPX #$0004 C3/7784: D0 F3 BNE $7779 C3/7786: A6 00 LDX $00 C3/7788: BF F1 9D 7E LDA $7E9DF1,X C3/778C: 8D 80 21 STA $2180 C3/778F: E8 INX C3/7790: E0 04 00 CPX #$0004 C3/7793: D0 F3 BNE $7788 C3/7795: A6 00 LDX $00 C3/7797: BF 01 9E 7E LDA $7E9E01,X C3/779B: 8D 80 21 STA $2180 C3/779E: E8 INX C3/779F: E0 04 00 CPX #$0004 C3/77A2: D0 F3 BNE $7797 C3/77A4: A6 00 LDX $00 C3/77A6: BF 11 9E 7E LDA $7E9E11,X C3/77AA: 8D 80 21 STA $2180 C3/77AD: E8 INX C3/77AE: E0 04 00 CPX #$0004 C3/77B1: D0 F3 BNE $77A6 C3/77B3: A6 00 LDX $00 C3/77B5: BF 21 9E 7E LDA $7E9E21,X C3/77B9: 8D 80 21 STA $2180 C3/77BC: E8 INX C3/77BD: E0 04 00 CPX #$0004 C3/77C0: D0 F3 BNE $77B5 C3/77C2: 60 RTS C3/77C3: 20 D6 77 JSR $77D6 C3/77C6: A6 00 LDX $00 C3/77C8: BF D1 9D 7E LDA $7E9DD1,X C3/77CC: 8D 80 21 STA $2180 C3/77CF: E8 INX C3/77D0: E0 04 00 CPX #$0004 C3/77D3: D0 F3 BNE $77C8 C3/77D5: 60 RTS C3/77D6: A6 00 LDX $00 C3/77D8: BF C1 9D 7E LDA $7E9DC1,X C3/77DC: 8D 80 21 STA $2180 C3/77DF: E8 INX C3/77E0: E0 04 00 CPX #$0004 C3/77E3: D0 F3 BNE $77D8 C3/77E5: 60 RTS C3/77E6: .DB $C1, $9D, $30, $00 C3/77EA: .DB $D1, $9D, $40, $00 C3/77EE: .DB $E1, $9D, $50, $00 C3/77F2: .DB $F1, $9D, $60, $00 C3/77F6: .DB $01, $9E, $70, $00 C3/77FA: .DB $11, $9E, $80, $00 C3/77FE: .DB $21, $9E, $90, $00 C3/7802: A2 51 9E LDX #$9E51 C3/7805: 8E 81 21 STX $2181 C3/7808: A9 10 LDA #$10 C3/780A: 9C 80 21 STZ $2180 C3/780D: 3A DEC C3/780E: D0 FA BNE $780A C3/7810: AD 01 02 LDA $0201 C3/7813: 29 07 AND #$07 C3/7815: C9 01 CMP #$01 C3/7817: F0 20 BEQ $7839 C3/7819: C9 02 CMP #$02 C3/781B: F0 21 BEQ $783E C3/781D: 20 3E 78 JSR $783E C3/7820: A9 03 LDA #$03 C3/7822: 20 46 78 JSR $7846 C3/7825: A9 04 LDA #$04 C3/7827: 20 46 78 JSR $7846 C3/782A: A9 05 LDA #$05 C3/782C: 20 46 78 JSR $7846 C3/782F: A9 06 LDA #$06 C3/7831: 20 46 78 JSR $7846 C3/7834: A9 07 LDA #$07 C3/7836: 4C 46 78 JMP $7846 C3/7839: A9 01 LDA #$01 C3/783B: 4C 46 78 JMP $7846 C3/783E: 20 39 78 JSR $7839 C3/7841: A9 02 LDA #$02 C3/7843: 4C 46 78 JMP $7846 C3/7846: 8D 80 21 STA $2180 C3/7849: 8D 80 21 STA $2180 C3/784C: 8D 80 21 STA $2180 C3/784F: 8D 80 21 STA $2180 C3/7852: 60 RTS C3/7853: AD 01 02 LDA $0201 C3/7856: 29 07 AND #$07 C3/7858: 85 E6 STA $E6 C3/785A: A2 C1 9D LDX #$9DC1 C3/785D: 86 F3 STX $F3 C3/785F: A9 7E LDA #$7E C3/7861: 85 F5 STA $F5 C3/7863: AD 12 42 LDA $4212 C3/7866: 29 40 AND #$40 C3/7868: F0 F9 BEQ $7863 C3/786A: A5 99 LDA $99 C3/786C: 8D 1B 21 STA $211B C3/786F: 9C 1B 21 STZ $211B C3/7872: A9 B0 LDA #$B0 C3/7874: 8D 1C 21 STA $211C C3/7877: 8D 1C 21 STA $211C C3/787A: AE 34 21 LDX $2134 C3/787D: 86 E4 STX $E4 C3/787F: A6 00 LDX $00 C3/7881: 7B TDC C3/7882: 9B TXY C3/7883: B7 F3 LDA [$F3],Y C3/7885: 85 F6 STA $F6 C3/7887: 30 37 BMI $78C0 C3/7889: DA PHX C3/788A: 48 PHA C3/788B: A9 00 LDA #$00 C3/788D: 48 PHA C3/788E: AB PLB C3/788F: A9 02 LDA #$02 C3/7891: A0 42 7B LDY #$7B42 ; status icon thread C3/7894: 20 73 11 JSR $1173 ; create thread C3/7897: 9B TXY C3/7898: 7B TDC C3/7899: 68 PLA C3/789A: 9F C9 35 7E STA $7E35C9,X C3/789E: 20 EB 78 JSR $78EB C3/78A1: FA PLX C3/78A2: 7B TDC C3/78A3: BF E3 78 C3 LDA $C378E3,X C3/78A7: C2 21 REP #$21 C3/78A9: 65 E4 ADC $E4 C3/78AB: 99 CA 33 STA $33CA,Y C3/78AE: E2 20 SEP #$20 C3/78B0: BF E7 78 C3 LDA $C378E7,X C3/78B4: 99 4A 34 STA $344A,Y C3/78B7: 7B TDC C3/78B8: 99 4B 34 STA $344B,Y C3/78BB: A9 D8 LDA #$D8 C3/78BD: 99 CA 35 STA $35CA,Y C3/78C0: E8 INX C3/78C1: E0 04 00 CPX #$0004 C3/78C4: D0 BB BNE $7881 C3/78C6: C2 20 REP #$20 C3/78C8: A5 F3 LDA $F3 C3/78CA: 18 CLC C3/78CB: 69 10 00 ADC #$0010 C3/78CE: 85 F3 STA $F3 C3/78D0: A5 E4 LDA $E4 C3/78D2: 18 CLC C3/78D3: 69 50 00 ADC #$0050 C3/78D6: 85 E4 STA $E4 C3/78D8: E2 20 SEP #$20 C3/78DA: C6 E6 DEC $E6 C3/78DC: D0 A1 BNE $787F C3/78DE: A9 00 LDA #$00 C3/78E0: 48 PHA C3/78E1: AB PLB C3/78E2: 60 RTS C3/78E3: .DB $18, $18, $38, $38 C3/78E7: .DB $9C, $B8, $9C, $B8 C3/78EB: 0A ASL C3/78EC: AA TAX C3/78ED: C2 20 REP #$20 C3/78EF: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/78F3: AA TAX C3/78F4: E2 20 SEP #$20 C3/78F6: 7B TDC C3/78F7: BD 01 00 LDA $0001,X ; actor number C3/78FA: 0A ASL C3/78FB: AA TAX C3/78FC: A9 7E LDA #$7E C3/78FE: 48 PHA C3/78FF: AB PLB C3/7900: C2 20 REP #$20 C3/7902: BF 17 E9 D8 LDA $D8E917,X ; shop character sprite data C3/7906: 99 C9 32 STA $32C9,Y C3/7909: E2 20 SEP #$20 C3/790B: 60 RTS C3/790C: A2 8D AC LDX #$AC8D C3/790F: 8E 81 21 STX $2181 C3/7912: 7B TDC C3/7913: AA TAX C3/7914: DA PHX C3/7915: 7B TDC C3/7916: BF 89 9D 7E LDA $7E9D89,X C3/791A: 30 17 BMI $7933 C3/791C: C2 20 REP #$20 C3/791E: 0A ASL C3/791F: AA TAX C3/7920: BF 0F 7C C3 LDA $C37C0F,X C3/7924: 85 E7 STA $E7 C3/7926: AD 02 02 LDA $0202 C3/7929: 25 E7 AND $E7 C3/792B: E2 20 SEP #$20 C3/792D: F0 04 BEQ $7933 C3/792F: A9 FF LDA #$FF C3/7931: 80 01 BRA $7934 C3/7933: 7B TDC C3/7934: 8D 80 21 STA $2180 C3/7937: FA PLX C3/7938: E8 INX C3/7939: E0 2C 00 CPX #$002C C3/793C: D0 D6 BNE $7914 C3/793E: 60 RTS C3/793F: 64 28 STZ $28 C3/7941: 20 E5 7A JSR $7AE5 C3/7944: A9 2F LDA #$2F C3/7946: 9F 4A 34 7E STA $7E344A,X C3/794A: 20 AC 14 JSR $14AC C3/794D: 20 2F 7C JSR $7C2F C3/7950: 4C AE 7C JMP $7CAE C3/7953: 20 AC 79 JSR $79AC C3/7956: 7B TDC C3/7957: A5 4B LDA $4B C3/7959: 18 CLC C3/795A: 65 4A ADC $4A C3/795C: 65 5A ADC $5A C3/795E: AA TAX C3/795F: BF 89 9D 7E LDA $7E9D89,X C3/7963: 30 46 BMI $79AB C3/7965: 85 C9 STA $C9 C3/7967: 0A ASL C3/7968: AA TAX C3/7969: C2 20 REP #$20 C3/796B: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/796F: 85 67 STA $67 C3/7971: E2 20 SEP #$20 C3/7973: A9 24 LDA #$24 C3/7975: 85 29 STA $29 C3/7977: A2 C9 79 LDX #$79C9 C3/797A: A0 06 00 LDY #$0006 C3/797D: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/7980: A0 5B 3A LDY #$3A5B C3/7983: A2 48 30 LDX #$3048 C3/7986: A9 01 LDA #$01 C3/7988: 85 48 STA $48 C3/798A: 20 27 34 JSR $3427 C3/798D: A0 DB 3A LDY #$3ADB C3/7990: 20 CF 34 JSR $34CF ; draw character name C3/7993: A0 5B 3B LDY #$3B5B C3/7996: 20 E6 34 JSR $34E6 ; draw equipped esper name C3/7999: A0 DE 79 LDY #$79DE C3/799C: 20 F9 02 JSR $02F9 ; draw positioned text C3/799F: A0 E2 79 LDY #$79E2 C3/79A2: 20 F9 02 JSR $02F9 ; draw positioned text C3/79A5: A2 E6 79 LDX #$79E6 C3/79A8: 20 6C 0C JSR $0C6C ; draw hp/mp/lv number text C3/79AB: 60 RTS C3/79AC: A2 C0 01 LDX #$01C0 C3/79AF: C2 20 REP #$20 C3/79B1: 7B TDC C3/79B2: A5 00 LDA $00 C3/79B4: A0 60 00 LDY #$0060 C3/79B7: 9F 49 38 7E STA $7E3849,X C3/79BB: E8 INX C3/79BC: E8 INX C3/79BD: 9F 49 38 7E STA $7E3849,X C3/79C1: E8 INX C3/79C2: E8 INX C3/79C3: 88 DEY C3/79C4: D0 F1 BNE $79B7 C3/79C6: E2 20 SEP #$20 C3/79C8: 60 RTS C3/79C9: .DW $79CF, $79D4, $79D9 C3/79CF: .DB $6D, $3A, $8B, $95, $00 C3/79D4: .DB $ED, $3A, $87, $8F, $00 C3/79D9: .DB $6D, $3B, $8C, $8F, $00 C3/79DE: .DB $FB, $3A, $C0, $00 C3/79E2: .DB $7B, $3B, $C0, $00 ; ram addresses for LV/HP/MP text (party select) C3/79E6: .DW $3A77, $3AF3, $3AFD, $3B73, $3B7D ; [ Menu State $67: ] C3/79F0: 20 4F 30 JSR $304F C3/79F3: A0 08 00 LDY #$0008 C3/79F6: 84 20 STY $20 C3/79F8: A9 68 LDA #$68 C3/79FA: 85 26 STA $26 C3/79FC: 4C B8 75 JMP $75B8 ; [ Menu State $66: ] C3/79FF: 20 56 30 JSR $3056 C3/7A02: A0 08 00 LDY #$0008 C3/7A05: 84 20 STY $20 C3/7A07: A9 68 LDA #$68 C3/7A09: 85 26 STA $26 C3/7A0B: 4C B8 75 JMP $75B8 ; [ Menu State $68: ] C3/7A0E: A4 20 LDY $20 C3/7A10: D0 04 BNE $7A16 C3/7A12: A5 27 LDA $27 C3/7A14: 85 26 STA $26 C3/7A16: 4C B8 75 JMP $75B8 ; [ Flashing Left Cursor Thread (item details) ] C3/7A19: AA TAX C3/7A1A: 7C 1D 7A JMP ($7A1D,X) C3/7A1D: .DW $7A21, $7A3E ; state 0: init C3/7A21: A6 2D LDX $2D C3/7A23: C2 20 REP #$20 C3/7A25: A9 6F EC LDA #$EC6F ; item details cursor sprite data C3/7A28: 9D C9 32 STA $32C9,X C3/7A2B: A9 08 00 LDA #$0008 C3/7A2E: 9D CA 33 STA $33CA,X C3/7A31: E2 20 SEP #$20 C3/7A33: A9 D8 LDA #$D8 C3/7A35: 9D CA 35 STA $35CA,X C3/7A38: FE 49 36 INC $3649,X C3/7A3B: 20 06 12 JSR $1206 ; init animation thread ; fall through ; state 1: normal C3/7A3E: A4 2D LDY $2D C3/7A40: A5 99 LDA $99 C3/7A42: F0 07 BEQ $7A4B C3/7A44: 30 17 BMI $7A5D C3/7A46: 7B TDC C3/7A47: A9 02 LDA #$02 C3/7A49: 80 01 BRA $7A4C C3/7A4B: 7B TDC C3/7A4C: AA TAX C3/7A4D: C2 20 REP #$20 C3/7A4F: BF 6B EC D8 LDA $D8EC6B,X ; pointers to item details cursor sprite data C3/7A53: 99 C9 32 STA $32C9,Y C3/7A56: E2 20 SEP #$20 C3/7A58: 20 21 12 JSR $1221 ; update animation thread C3/7A5B: 38 SEC C3/7A5C: 60 RTS C3/7A5D: 18 CLC C3/7A5E: 60 RTS C3/7A5F: AA TAX C3/7A60: 7C 63 7A JMP ($7A63,X) C3/7A63: .DW $7A67, $7A78 C3/7A67: A9 01 LDA #$01 C3/7A69: 04 47 TSB $47 C3/7A6B: A6 2D LDX $2D C3/7A6D: FE 49 36 INC $3649,X C3/7A70: A9 01 LDA #$01 C3/7A72: 20 06 12 JSR $1206 ; init animation thread C3/7A75: 20 AE 7B JSR $7BAE C3/7A78: A5 47 LDA $47 C3/7A7A: 29 01 AND #$01 C3/7A7C: F0 07 BEQ $7A85 C3/7A7E: A6 2D LDX $2D C3/7A80: 20 21 12 JSR $1221 ; update animation thread C3/7A83: 38 SEC C3/7A84: 60 RTS C3/7A85: 18 CLC C3/7A86: 60 RTS ; [ Menu State $69: ] C3/7A87: A5 20 LDA $20 C3/7A89: D0 07 BNE $7A92 C3/7A8B: A9 2D LDA #$2D C3/7A8D: 85 26 STA $26 C3/7A8F: 20 62 75 JSR $7562 C3/7A92: 4C B8 75 JMP $75B8 C3/7A95: .DB $1D, $39, $85, $A8, $AB, $A6, $FF, $FF, $FF, $A0, $AB, $A8, $AE, $A9, $CB, $AC, $CC, $C5, $FF, $FF, $FF, $FF, $FF, $FF, $00 C3/7AAE: .DB $0D, $39, $8B, $A2, $A7, $9E, $AE, $A9, $00 C3/7AB7: .DB $1D, $39, $98, $A8, $AE, $FF, $A7, $9E, $9E, $9D, $FF, $FF, $FF, $A0, $AB, $A8, $AE, $A9, $CB, $AC, $CC, $BE, $00 C3/7ACE: .DB $1D, $39, $8D, $A8, $FF, $A8, $A7, $9E, $FF, $AD, $A1, $9E, $AB, $9E, $BE, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00 ;----------------------------------------[ Menu: Item Details ]----------------------------------------- ; [ Menu State $2F: ] C3/7AE5: A9 03 LDA #$03 C3/7AE7: A0 12 0B LDY #$0B12 C3/7AEA: 20 73 11 JSR $1173 ; create thread C3/7AED: 8A TXA C3/7AEE: 85 60 STA $60 C3/7AF0: 8B PHB C3/7AF1: A9 7E LDA #$7E C3/7AF3: 48 PHA C3/7AF4: AB PLB C3/7AF5: C2 20 REP #$20 C3/7AF7: A9 1A 00 LDA #$001A C3/7AFA: 9D CA 33 STA $33CA,X C3/7AFD: E2 20 SEP #$20 C3/7AFF: 7B TDC C3/7B00: A5 28 LDA $28 C3/7B02: 20 0E 7B JSR $7B0E C3/7B05: 7B TDC C3/7B06: 9D 4B 34 STA $344B,X C3/7B09: 20 06 12 JSR $1206 ; init animation thread C3/7B0C: AB PLB C3/7B0D: 60 RTS C3/7B0E: DA PHX C3/7B0F: DA PHX C3/7B10: 0A ASL C3/7B11: AA TAX C3/7B12: C2 20 REP #$20 C3/7B14: BF E9 0A C3 LDA $C30AE9,X ; pointers to portrait sprite data C3/7B18: 7A PLY C3/7B19: 99 C9 32 STA $32C9,Y C3/7B1C: E2 20 SEP #$20 C3/7B1E: A9 C3 LDA #$C3 C3/7B20: 99 CA 35 STA $35CA,Y C3/7B23: FA PLX C3/7B24: 60 RTS ; [ Menu State $30-$32: ] C3/7B25: 7B TDC C3/7B26: BF 89 9D 7E LDA $7E9D89,X C3/7B2A: 85 E1 STA $E1 C3/7B2C: 30 13 BMI $7B41 C3/7B2E: DA PHX C3/7B2F: AA TAX C3/7B30: BD 50 18 LDA $1850,X C3/7B33: 29 18 AND #$18 C3/7B35: 4A LSR C3/7B36: 4A LSR C3/7B37: 4A LSR C3/7B38: A8 TAY C3/7B39: A5 E1 LDA $E1 C3/7B3B: 97 E7 STA [$E7],Y C3/7B3D: FA PLX C3/7B3E: E8 INX C3/7B3F: 80 E4 BRA $7B25 C3/7B41: 60 RTS ; [ Status Icon Thread ] C3/7B42: AA TAX C3/7B43: 7C 46 7B JMP ($7B46,X) C3/7B46: .DW $7B52, $7B66, $7B72, $7B7E, $7B8D, $7BA1 C3/7B52: A9 01 LDA #$01 C3/7B54: 04 47 TSB $47 C3/7B56: A6 2D LDX $2D C3/7B58: A9 03 LDA #$03 C3/7B5A: 9D 49 36 STA $3649,X C3/7B5D: 20 06 12 JSR $1206 ; init animation thread C3/7B60: 7B TDC C3/7B61: 20 AE 7B JSR $7BAE C3/7B64: 80 18 BRA $7B7E C3/7B66: A6 2D LDX $2D C3/7B68: A9 04 LDA #$04 C3/7B6A: 9D 49 36 STA $3649,X C3/7B6D: 20 06 12 JSR $1206 ; init animation thread C3/7B70: 80 1B BRA $7B8D C3/7B72: A6 2D LDX $2D C3/7B74: A9 05 LDA #$05 C3/7B76: 9D 49 36 STA $3649,X C3/7B79: 20 06 12 JSR $1206 ; init animation thread C3/7B7C: 80 23 BRA $7BA1 C3/7B7E: A5 47 LDA $47 C3/7B80: 29 01 AND #$01 C3/7B82: F0 07 BEQ $7B8B C3/7B84: A6 2D LDX $2D C3/7B86: 20 21 12 JSR $1221 ; update animation thread C3/7B89: 38 SEC C3/7B8A: 60 RTS C3/7B8B: 18 CLC C3/7B8C: 60 RTS C3/7B8D: A5 47 LDA $47 C3/7B8F: 29 02 AND #$02 C3/7B91: F0 07 BEQ $7B9A C3/7B93: A6 2D LDX $2D C3/7B95: 20 21 12 JSR $1221 ; update animation thread C3/7B98: 18 CLC C3/7B99: 60 RTS C3/7B9A: A6 2D LDX $2D C3/7B9C: 20 21 12 JSR $1221 ; update animation thread C3/7B9F: 38 SEC C3/7BA0: 60 RTS C3/7BA1: A5 47 LDA $47 C3/7BA3: 29 04 AND #$04 C3/7BA5: F0 F3 BEQ $7B9A C3/7BA7: A6 2D LDX $2D C3/7BA9: 20 21 12 JSR $1221 ; update animation thread C3/7BAC: 18 CLC C3/7BAD: 60 RTS C3/7BAE: 85 E6 STA $E6 C3/7BB0: AD 00 02 LDA $0200 C3/7BB3: C9 04 CMP #$04 C3/7BB5: D0 57 BNE $7C0E C3/7BB7: A6 2D LDX $2D C3/7BB9: 7B TDC C3/7BBA: BD C9 35 LDA $35C9,X C3/7BBD: 30 4F BMI $7C0E C3/7BBF: 0A ASL C3/7BC0: C2 20 REP #$20 C3/7BC2: AA TAX C3/7BC3: BF 0F 7C C3 LDA $C37C0F,X C3/7BC7: 85 E7 STA $E7 C3/7BC9: AD 02 02 LDA $0202 C3/7BCC: 25 E7 AND $E7 C3/7BCE: E2 20 SEP #$20 C3/7BD0: F0 3C BEQ $7C0E C3/7BD2: A9 00 LDA #$00 C3/7BD4: 48 PHA C3/7BD5: AB PLB C3/7BD6: A5 E6 LDA $E6 C3/7BD8: D0 05 BNE $7BDF C3/7BDA: A0 42 7B LDY #$7B42 ; status icon thread C3/7BDD: 80 03 BRA $7BE2 C3/7BDF: A0 5F 7A LDY #$7A5F C3/7BE2: A9 03 LDA #$03 C3/7BE4: 20 73 11 JSR $1173 ; create thread C3/7BE7: A9 7E LDA #$7E C3/7BE9: 48 PHA C3/7BEA: AB PLB C3/7BEB: A9 FF LDA #$FF C3/7BED: 9D C9 35 STA $35C9,X C3/7BF0: BC 4A 37 LDY $374A,X C3/7BF3: C2 20 REP #$20 C3/7BF5: B9 CA 33 LDA $33CA,Y C3/7BF8: 9D CA 33 STA $33CA,X C3/7BFB: B9 4A 34 LDA $344A,Y C3/7BFE: 9D 4A 34 STA $344A,X C3/7C01: A9 A9 EB LDA #$EBA9 ; D8/EBA9 (party indicator sprite data) C3/7C04: 9D C9 32 STA $32C9,X C3/7C07: E2 20 SEP #$20 C3/7C09: A9 D8 LDA #$D8 C3/7C0B: 9D CA 35 STA $35CA,X C3/7C0E: 60 RTS C3/7C0F: .DW $0001, $0002, $0004, $0008, $0010, $0020, $0040, $0080 C3/7C1F: .DW $0100, $0200, $0400, $0800, $1000, $2000, $4000, $8000 C3/7C2F: A0 00 26 LDY #$2600 C3/7C32: 84 1B STY $1B C3/7C34: A0 20 03 LDY #$0320 C3/7C37: 84 19 STY $19 C3/7C39: 7B TDC C3/7C3A: A5 4B LDA $4B C3/7C3C: 18 CLC C3/7C3D: 65 4A ADC $4A C3/7C3F: 65 5A ADC $5A C3/7C41: AA TAX C3/7C42: BF 89 9D 7E LDA $7E9D89,X C3/7C46: 30 5C BMI $7CA4 C3/7C48: 80 24 BRA $7C6E C3/7C4A: A0 00 26 LDY #$2600 C3/7C4D: 84 1B STY $1B C3/7C4F: 80 0E BRA $7C5F C3/7C51: A0 00 28 LDY #$2800 C3/7C54: 84 1B STY $1B C3/7C56: 80 07 BRA $7C5F C3/7C58: A0 00 28 LDY #$2800 C3/7C5B: 84 1B STY $1B C3/7C5D: 80 45 BRA $7CA4 C3/7C5F: A0 20 03 LDY #$0320 C3/7C62: 84 19 STY $19 C3/7C64: 7B TDC C3/7C65: A5 4B LDA $4B C3/7C67: AA TAX C3/7C68: BF A9 9D 7E LDA $7E9DA9,X C3/7C6C: 30 36 BMI $7CA4 C3/7C6E: 0A ASL C3/7C6F: AA TAX C3/7C70: C2 20 REP #$20 C3/7C72: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/7C76: A8 TAY C3/7C77: 7B TDC C3/7C78: E2 20 SEP #$20 C3/7C7A: B9 14 00 LDA $0014,Y C3/7C7D: 29 20 AND #$20 C3/7C7F: F0 04 BEQ $7C85 C3/7C81: A9 0F LDA #$0F C3/7C83: 80 0A BRA $7C8F C3/7C85: B9 00 00 LDA $0000,Y C3/7C88: C9 01 CMP #$01 C3/7C8A: F0 03 BEQ $7C8F C3/7C8C: B9 01 00 LDA $0001,Y C3/7C8F: C2 20 REP #$20 C3/7C91: 0A ASL C3/7C92: AA TAX C3/7C93: BF 1B 6F C3 LDA $C36F1B,X C3/7C97: 18 CLC C3/7C98: 69 00 1D ADC #$1D00 C3/7C9B: 85 1D STA $1D C3/7C9D: E2 20 SEP #$20 C3/7C9F: A9 ED LDA #$ED C3/7CA1: 85 1F STA $1F C3/7CA3: 60 RTS C3/7CA4: A0 51 9F LDY #$9F51 C3/7CA7: 84 1D STY $1D C3/7CA9: A9 7E LDA #$7E C3/7CAB: 85 1F STA $1F C3/7CAD: 60 RTS C3/7CAE: A4 00 LDY $00 C3/7CB0: 5A PHY C3/7CB1: 7B TDC C3/7CB2: A5 4B LDA $4B C3/7CB4: 18 CLC C3/7CB5: 65 4A ADC $4A C3/7CB7: 65 5A ADC $5A C3/7CB9: AA TAX C3/7CBA: BF 89 9D 7E LDA $7E9D89,X C3/7CBE: 10 16 BPL $7CD6 C3/7CC0: 7B TDC C3/7CC1: 80 13 BRA $7CD6 C3/7CC3: A4 00 LDY $00 C3/7CC5: 80 03 BRA $7CCA C3/7CC7: A0 20 00 LDY #$0020 C3/7CCA: 5A PHY C3/7CCB: 7B TDC C3/7CCC: A5 4B LDA $4B C3/7CCE: AA TAX C3/7CCF: BF A9 9D 7E LDA $7E9DA9,X C3/7CD3: 10 01 BPL $7CD6 C3/7CD5: 7B TDC C3/7CD6: 0A ASL C3/7CD7: AA TAX C3/7CD8: C2 20 REP #$20 C3/7CDA: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/7CDE: A8 TAY C3/7CDF: 7B TDC C3/7CE0: E2 20 SEP #$20 C3/7CE2: A9 10 LDA #$10 C3/7CE4: 85 E3 STA $E3 C3/7CE6: B9 14 00 LDA $0014,Y C3/7CE9: 29 20 AND #$20 C3/7CEB: F0 04 BEQ $7CF1 C3/7CED: A9 0F LDA #$0F C3/7CEF: 80 03 BRA $7CF4 C3/7CF1: B9 01 00 LDA $0001,Y C3/7CF4: AA TAX C3/7CF5: BF 00 6F C3 LDA $C36F00,X C3/7CF9: C2 20 REP #$20 C3/7CFB: 0A ASL C3/7CFC: 0A ASL C3/7CFD: 0A ASL C3/7CFE: 0A ASL C3/7CFF: 0A ASL C3/7D00: AA TAX C3/7D01: 7A PLY C3/7D02: C2 20 REP #$20 C3/7D04: DA PHX C3/7D05: BF 60 58 ED LDA $ED5860,X ; character portrait color palettes C3/7D09: BB TYX C3/7D0A: 9F 49 31 7E STA $7E3149,X C3/7D0E: E2 20 SEP #$20 C3/7D10: FA PLX C3/7D11: E8 INX C3/7D12: E8 INX C3/7D13: C8 INY C3/7D14: C8 INY C3/7D15: C6 E3 DEC $E3 C3/7D17: D0 E9 BNE $7D02 C3/7D19: E2 20 SEP #$20 C3/7D1B: 60 RTS ; [ Menu State $44-46: Init Cursor (item list) ] C3/7D1C: A0 2B 7D LDY #$7D2B C3/7D1F: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (item list) ] C3/7D22: 20 C7 81 JSR $81C7 ; update cursor movement (scrolling page) C3/7D25: A0 30 7D LDY #$7D30 C3/7D28: 4C 48 06 JMP $0648 ; update cursor position (scrolling page) C3/7D2B: .DB $01, $00, $00, $01, $0A C3/7D30: .DW $5C08, $6808, $7408, $8008, $8C08, $9808, $A408, $B008 C3/7D40: .DW $BC08, $C808 C3/7D44: A0 53 7D LDY #$7D53 C3/7D47: 4C FE 05 JMP $05FE ; init cursor C3/7D4A: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/7D4D: A0 58 7D LDY #$7D58 C3/7D50: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/7D53: .DB $00, $00, $00, $02, $0A C3/7D58: .DW $5C08, $5C78, $6808, $6878, $7408, $7478, $8008, $8078 C3/7D68: .DW $8C08, $8C78, $9808, $9878, $A408, $A478, $B008, $B078 C3/7D78: .DW $BC08, $BC78, $C808, $C878 C3/7D80: A0 98 7D LDY #$7D98 C3/7D83: 4C FE 05 JMP $05FE ; init cursor C3/7D86: A0 9D 7D LDY #$7D9D C3/7D89: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/7D8C: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/7D8F: 20 86 7D JSR $7D86 C3/7D92: A4 4D LDY $4D C3/7D94: 8C 34 02 STY $0234 C3/7D97: 60 RTS C3/7D98: .DB $01, $00, 00, $03, $01 C3/7D9D: .DW $1640, $1668, $16B0 ; [ Init BG (item list) ] C3/7DA3: A9 01 LDA #$01 C3/7DA5: 8D 07 21 STA $2107 C3/7DA8: A0 23 7E LDY #$7E23 C3/7DAB: 20 41 03 JSR $0341 ; draw window C3/7DAE: A0 27 7E LDY #$7E27 C3/7DB1: 20 41 03 JSR $0341 ; draw window C3/7DB4: A0 17 7E LDY #$7E17 C3/7DB7: 20 41 03 JSR $0341 ; draw window C3/7DBA: A0 13 7E LDY #$7E13 C3/7DBD: 20 41 03 JSR $0341 ; draw window C3/7DC0: A0 1B 7E LDY #$7E1B C3/7DC3: 20 41 03 JSR $0341 ; draw window C3/7DC6: A0 1F 7E LDY #$7E1F C3/7DC9: 20 41 03 JSR $0341 ; draw window C3/7DCC: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/7DCF: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/7DD2: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/7DD5: 20 46 6A JSR $6A46 ; clear bg3 data (bottom left screen) C3/7DD8: 20 4B 6A JSR $6A4B ; clear bg3 data (bottom right screen) C3/7DDB: A9 2C LDA #$2C C3/7DDD: 85 29 STA $29 C3/7DDF: A0 16 8D LDY #$8D16 C3/7DE2: 20 F9 02 JSR $02F9 ; draw positioned text C3/7DE5: A9 20 LDA #$20 C3/7DE7: 85 29 STA $29 C3/7DE9: A2 10 8D LDX #$8D10 C3/7DEC: A0 06 00 LDY #$0006 C3/7DEF: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/7DF2: 20 3D A7 JSR $A73D C3/7DF5: 20 A9 A9 JSR $A9A9 C3/7DF8: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/7DFB: 20 0D 7E JSR $7E0D C3/7DFE: 20 F1 82 JSR $82F1 C3/7E01: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/7E04: 20 36 0E JSR $0E36 ; copy bg1 data to vram (top left/bottom right) C3/7E07: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/7E0A: 4C 7C 0E JMP $0E7C ; copy bg3 data to vram (bottom screens) C3/7E0D: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/7E10: 4C 88 7F JMP $7F88 ; init item list text (item menu) C3/7E13: .DB $8B, $58, $04, $02 C3/7E17: .DB $97, $58, $16, $02 C3/7E1B: .DB $8B, $59, $1C, $03 C3/7E1F: .DB $CB, $5A, $1C, $0F C3/7E23: .DB $AD, $60, $0D, $18 C3/7E27: .DB $85, $58, $01, $18 ; [ Init BG Scrolling HDMA (item list) ] C3/7E2B: A9 02 LDA #$02 C3/7E2D: 8D 50 43 STA $4350 C3/7E30: A9 12 LDA #$12 C3/7E32: 8D 51 43 STA $4351 C3/7E35: A0 57 7F LDY #$7F57 C3/7E38: 8C 52 43 STY $4352 C3/7E3B: A9 C3 LDA #$C3 C3/7E3D: 8D 54 43 STA $4354 C3/7E40: A9 C3 LDA #$C3 C3/7E42: 8D 57 43 STA $4357 C3/7E45: A9 20 LDA #$20 C3/7E47: 04 43 TSB $43 C3/7E49: 20 95 7E JSR $7E95 ; load bg1 vertical scroll hdma table (item list) C3/7E4C: A6 00 LDX $00 C3/7E4E: BF DA 7E C3 LDA $C37EDA,X C3/7E52: 9F 09 9A 7E STA $7E9A09,X C3/7E56: E8 INX C3/7E57: E0 0D 00 CPX #$000D C3/7E5A: D0 F2 BNE $7E4E C3/7E5C: A9 02 LDA #$02 C3/7E5E: 8D 60 43 STA $4360 C3/7E61: A9 0D LDA #$0D C3/7E63: 8D 61 43 STA $4361 C3/7E66: A0 09 9A LDY #$9A09 C3/7E69: 8C 62 43 STY $4362 C3/7E6C: A9 7E LDA #$7E C3/7E6E: 8D 64 43 STA $4364 C3/7E71: A9 7E LDA #$7E C3/7E73: 8D 67 43 STA $4367 C3/7E76: A9 02 LDA #$02 C3/7E78: 8D 70 43 STA $4370 C3/7E7B: A9 0E LDA #$0E C3/7E7D: 8D 71 43 STA $4371 C3/7E80: A0 49 98 LDY #$9849 C3/7E83: 8C 72 43 STY $4372 C3/7E86: A9 7E LDA #$7E C3/7E88: 8D 74 43 STA $4374 C3/7E8B: A9 7E LDA #$7E C3/7E8D: 8D 77 43 STA $4377 C3/7E90: A9 C0 LDA #$C0 C3/7E92: 04 43 TSB $43 C3/7E94: 60 RTS ; [ Load BG1 Vertical Scroll HDMA Table (item list) ] C3/7E95: A6 00 LDX $00 C3/7E97: BF E7 7E C3 LDA $C37EE7,X C3/7E9B: 9F 49 98 7E STA $7E9849,X C3/7E9F: E8 INX C3/7EA0: E0 12 00 CPX #$0012 C3/7EA3: D0 F2 BNE $7E97 C3/7EA5: BF E7 7E C3 LDA $C37EE7,X C3/7EA9: 9F 49 98 7E STA $7E9849,X C3/7EAD: E8 INX C3/7EAE: 7B TDC C3/7EAF: A5 49 LDA $49 C3/7EB1: 0A ASL C3/7EB2: 0A ASL C3/7EB3: 0A ASL C3/7EB4: 0A ASL C3/7EB5: 29 FF AND #$FF C3/7EB7: C2 20 REP #$20 C3/7EB9: 18 CLC C3/7EBA: 7F E7 7E C3 ADC $C37EE7,X C3/7EBE: 9F 49 98 7E STA $7E9849,X C3/7EC2: E2 20 SEP #$20 C3/7EC4: E8 INX C3/7EC5: E8 INX C3/7EC6: E0 6C 00 CPX #$006C C3/7EC9: D0 DA BNE $7EA5 C3/7ECB: BF E7 7E C3 LDA $C37EE7,X C3/7ECF: 9F 49 98 7E STA $7E9849,X C3/7ED3: E8 INX C3/7ED4: E0 70 00 CPX #$0070 C3/7ED7: D0 F2 BNE $7ECB C3/7ED9: 60 RTS ; bg3 vertical scroll hdma table (item list) C3/7EDA: .DB $28 \ .DW $0100 .DB $2F \ .DW $0100 .DB $78 \ .DW $0000 .DB $1E \ .DW $0100 .DB $00 ; bg1 vertical scroll hdma table (item list) C3/7EE7: .DB $27 \ .DW $0080 C3/7EEA: .DB $08 \ .DW $0000 C3/7EED: .DB $0C \ .DW $0004 C3/7EF0: .DB $0C \ .DW $0008 C3/7EF3: .DB $08 \ .DW $0080 C3/7EF6: .DB $08 \ .DW $0000 C3/7EF9: .DB $04 \ .DW $FFAC C3/7EFC: .DB $04 \ .DW $FFAC C3/7EFF: .DB $04 \ .DW $FFAC C3/7F02: .DB $04 \ .DW $FFB0 C3/7F05: .DB $04 \ .DW $FFB0 C3/7F08: .DB $04 \ .DW $FFB0 C3/7F0B: .DB $04 \ .DW $FFB4 C3/7F0E: .DB $04 \ .DW $FFB4 C3/7F11: .DB $04 \ .DW $FFB4 C3/7F14: .DB $04 \ .DW $FFB8 C3/7F17: .DB $04 \ .DW $FFB8 C3/7F1A: .DB $04 \ .DW $FFB8 C3/7F1D: .DB $04 \ .DW $FFBC C3/7F20: .DB $04 \ .DW $FFBC C3/7F23: .DB $04 \ .DW $FFBC C3/7F26: .DB $04 \ .DW $FFC0 C3/7F29: .DB $04 \ .DW $FFC0 C3/7F2C: .DB $04 \ .DW $FFC0 C3/7F2F: .DB $04 \ .DW $FFC4 C3/7F32: .DB $04 \ .DW $FFC4 C3/7F35: .DB $04 \ .DW $FFC4 C3/7F38: .DB $04 \ .DW $FFC8 C3/7F3B: .DB $04 \ .DW $FFC8 C3/7F3E: .DB $04 \ .DW $FFC8 C3/7F41: .DB $04 \ .DW $FFCC C3/7F44: .DB $04 \ .DW $FFCC C3/7F47: .DB $04 \ .DW $FFCC C3/7F4A: .DB $04 \ .DW $FFD0 C3/7F4D: .DB $04 \ .DW $FFD0 C3/7F50: .DB $04 \ .DW $FFD0 C3/7F53: .DB $1E \ .DW $0000 C3/7F56: .DB $00 ; bg1 horizontal scroll hdma table (item list) C3/7F57: .DB $2F \ .DW $0000 C3/7F5A: .DB $0C \ .DW $0004 C3/7F5D: .DB $0C \ .DW $0008 C3/7F60: .DB $0C \ .DW $000C C3/7F63: .DB $0C \ .DW $0010 C3/7F66: .DB $0C \ .DW $0014 C3/7F69: .DB $0C \ .DW $0018 C3/7F6C: .DB $0C \ .DW $001C C3/7F6F: .DB $0C \ .DW $0020 C3/7F72: .DB $0C \ .DW $0024 C3/7F75: .DB $0C \ .DW $0028 C3/7F78: .DB $0C \ .DW $002C C3/7F7B: .DB $0C \ .DW $0030 C3/7F7E: .DB $0C \ .DW $0034 C3/7F81: .DB $0C \ .DW $0038 C3/7F84: .DB $0C \ .DW $003C C3/7F87: .DB $00 ; [ Init Item List Text (item menu) ] C3/7F88: 20 F7 83 JSR $83F7 C3/7F8B: A0 0A 00 LDY #$000A ; 10 lines C3/7F8E: 5A PHY C3/7F8F: 20 A1 7F JSR $7FA1 ; update item text C3/7F92: E6 E5 INC $E5 C3/7F94: A5 E6 LDA $E6 C3/7F96: 1A INC C3/7F97: 1A INC C3/7F98: 29 1F AND #$1F C3/7F9A: 85 E6 STA $E6 C3/7F9C: 7A PLY ; next line C3/7F9D: 88 DEY C3/7F9E: D0 EE BNE $7F8E C3/7FA0: 60 RTS ; [ Update Item List Text (item menu) ] ; $E5 = position in inventory ; $E6 = vertical position on screen C3/7FA1: 7B TDC C3/7FA2: A5 E5 LDA $E5 ; position in inventory C3/7FA4: A8 TAY C3/7FA5: 20 45 80 JSR $8045 ; update item text color C3/7FA8: B9 69 19 LDA $1969,Y ; item quantity C3/7FAB: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/7FAE: A5 E6 LDA $E6 ; vertical position + 1 C3/7FB0: 1A INC C3/7FB1: A2 11 00 LDX #$0011 ; horizontal position = 17 C3/7FB4: 20 9F 80 JSR $809F ; calculate pointer to bg1 data C3/7FB7: 20 B6 04 JSR $04B6 ; draw quantity text (2 digits) C3/7FBA: A5 E6 LDA $E6 ; vertical position + 1 C3/7FBC: 1A INC C3/7FBD: A2 03 00 LDX #$0003 ; horizontal position = 3 C3/7FC0: 20 9F 80 JSR $809F ; calculate pointer to bg1 data C3/7FC3: C2 20 REP #$20 C3/7FC5: 8A TXA C3/7FC6: 8F 89 9E 7E STA $7E9E89 ; set pointer to item text C3/7FCA: E2 20 SEP #$20 C3/7FCC: 7B TDC C3/7FCD: A5 E5 LDA $E5 ; position in inventory C3/7FCF: A8 TAY C3/7FD0: 20 B9 80 JSR $80B9 ; load item name text C3/7FD3: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/7FD6: 4C E6 7F JMP $7FE6 ; load item symbol name text ; [ Draw Positioned Text (at 7E/9E89) ] C3/7FD9: A0 89 9E LDY #$9E89 C3/7FDC: 84 E7 STY $E7 C3/7FDE: A9 7E LDA #$7E C3/7FE0: 85 E9 STA $E9 C3/7FE2: 20 FF 02 JSR $02FF ; draw positioned text C3/7FE5: 60 RTS ; [ Load Item Symbol Name Text ] C3/7FE6: C2 20 REP #$20 C3/7FE8: AF 89 9E 7E LDA $7E9E89 ; increment bg1 data pointer 18 tiles to the right C3/7FEC: 18 CLC C3/7FED: 69 24 00 ADC #$0024 C3/7FF0: 8F 89 9E 7E STA $7E9E89 C3/7FF4: E2 20 SEP #$20 C3/7FF6: 7B TDC C3/7FF7: AF 8B 9E 7E LDA $7E9E8B ; first letter of item name (item symbol) C3/7FFB: C9 FF CMP #$FF C3/7FFD: F0 2D BEQ $802C ; branch if no symbol C3/7FFF: 38 SEC C3/8000: E9 D8 SBC #$D8 ; subtract $D8 to get the symbol number C3/8002: 85 E0 STA $E0 ; multiply by 7 to get a pointer to the symbol name C3/8004: 0A ASL C3/8005: 0A ASL C3/8006: 85 E2 STA $E2 C3/8008: A5 E0 LDA $E0 C3/800A: 0A ASL C3/800B: 18 CLC C3/800C: 65 E2 ADC $E2 C3/800E: 65 E0 ADC $E0 C3/8010: AA TAX C3/8011: A0 8B 9E LDY #$9E8B C3/8014: 8C 81 21 STY $2181 C3/8017: A0 07 00 LDY #$0007 ; 7 letters C3/801A: BF 00 6F D2 LDA $D26F00,X ; item type name C3/801E: 8D 80 21 STA $2180 C3/8021: E8 INX C3/8022: 88 DEY C3/8023: D0 F5 BNE $801A C3/8025: 7B TDC C3/8026: 8D 80 21 STA $2180 C3/8029: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/802C: A0 8B 9E LDY #$9E8B C3/802F: 8C 81 21 STY $2181 C3/8032: A0 07 00 LDY #$0007 ; no type, copy 7 spaces C3/8035: A9 FF LDA #$FF C3/8037: 8D 80 21 STA $2180 C3/803A: E8 INX C3/803B: 88 DEY C3/803C: D0 F9 BNE $8037 C3/803E: 7B TDC C3/803F: 8D 80 21 STA $2180 C3/8042: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) ; [ Update Item Text Color ] C3/8045: AD 00 02 LDA $0200 ; menu mode C3/8048: C9 03 CMP #$03 C3/804A: F0 39 BEQ $8085 ; branch if shop C3/804C: C9 07 CMP #$07 C3/804E: F0 35 BEQ $8085 ; branch if colosseum C3/8050: 80 04 BRA $8056 C3/8052: 7B TDC C3/8053: A5 4B LDA $4B C3/8055: A8 TAY C3/8056: B9 69 18 LDA $1869,Y ; item number C3/8059: C9 EF CMP #$EF ; branch if megalixir C3/805B: F0 2D BEQ $808A C3/805D: C9 FF CMP #$FF ; branch if empty C3/805F: F0 24 BEQ $8085 C3/8061: C9 F7 CMP #$F7 ; branch if tent C3/8063: F0 2A BEQ $808F C3/8065: C9 F6 CMP #$F6 ; branch if sleeping bag C3/8067: F0 26 BEQ $808F C3/8069: C9 FD CMP #$FD ; branch if warp stone C3/806B: F0 29 BEQ $8096 C3/806D: 20 21 83 JSR $8321 ; calculate pointer to item data C3/8070: AE 34 21 LDX $2134 C3/8073: BF 00 50 D8 LDA $D85000,X ; item type C3/8077: 29 07 AND #$07 C3/8079: C9 06 CMP #$06 C3/807B: D0 0D BNE $808A ; branch if not a useable item C3/807D: BF 00 50 D8 LDA $D85000,X ; branch if not useable on field C3/8081: 29 40 AND #$40 C3/8083: F0 05 BEQ $808A C3/8085: A9 20 LDA #$20 ; white text C3/8087: 85 29 STA $29 C3/8089: 60 RTS C3/808A: A9 28 LDA #$28 ; gray text C3/808C: 85 29 STA $29 C3/808E: 60 RTS ; tent/sleeping bag C3/808F: AD 01 02 LDA $0201 C3/8092: 30 F1 BMI $8085 ; white text if on a save point C3/8094: 80 F4 BRA $808A ; gray text if not ; warp stone C3/8096: AD 01 02 LDA $0201 C3/8099: 89 02 BIT #$02 C3/809B: D0 E8 BNE $8085 ; white text if warp is enabled C3/809D: 80 EB BRA $808A ; gray text if warp is enabled ; [ Calculate Pointer to BG1 Data ] ; A = vertical position ; X = horizontal position C3/809F: EB XBA C3/80A0: A5 00 LDA $00 C3/80A2: EB XBA C3/80A3: C2 20 REP #$20 C3/80A5: 0A ASL C3/80A6: 0A ASL C3/80A7: 0A ASL C3/80A8: 0A ASL C3/80A9: 0A ASL C3/80AA: 0A ASL C3/80AB: 85 E7 STA $E7 C3/80AD: 8A TXA C3/80AE: 0A ASL C3/80AF: 18 CLC C3/80B0: 65 E7 ADC $E7 C3/80B2: 69 49 38 ADC #$3849 C3/80B5: AA TAX C3/80B6: E2 20 SEP #$20 C3/80B8: 60 RTS ; [ Load Item Name Text ] C3/80B9: A2 8B 9E LDX #$9E8B ; set WRAM to $7E9E8B C3/80BC: 8E 81 21 STX $2181 C3/80BF: AD 12 42 LDA $4212 ; wait for hblank C3/80C2: 29 40 AND #$40 C3/80C4: F0 F9 BEQ $80BF C3/80C6: 7B TDC C3/80C7: B9 69 18 LDA $1869,Y ; item number C3/80CA: C9 FF CMP #$FF ; branch if empty C3/80CC: F0 28 BEQ $80F6 C3/80CE: 8D 1B 21 STA $211B ; multiply by 13 to get pointer to item data C3/80D1: 9C 1B 21 STZ $211B C3/80D4: A9 0D LDA #$0D C3/80D6: 8D 1C 21 STA $211C C3/80D9: 8D 1C 21 STA $211C C3/80DC: AE 34 21 LDX $2134 C3/80DF: A0 0D 00 LDY #$000D ; 13 bytes C3/80E2: BF 00 B3 D2 LDA $D2B300,X ; item name C3/80E6: 8D 80 21 STA $2180 C3/80E9: E8 INX C3/80EA: 88 DEY C3/80EB: D0 F5 BNE $80E2 C3/80ED: A9 C1 LDA #$C1 ; ":" C3/80EF: 8D 80 21 STA $2180 C3/80F2: 9C 80 21 STZ $2180 C3/80F5: 60 RTS C3/80F6: A0 10 00 LDY #$0010 ; store 16 spaces (empty) C3/80F9: A9 FF LDA #$FF C3/80FB: 8D 80 21 STA $2180 C3/80FE: 88 DEY C3/80FF: D0 FA BNE $80FB C3/8101: 9C 80 21 STZ $2180 C3/8104: 60 RTS ; [ Update Text Scrolling ] ; moves 4 pixels per frame ; takes 3 frames to scroll 1 line C3/8105: A2 12 00 LDX #$0012 ; start at line 6 in the hdma table C3/8108: E2 20 SEP #$20 C3/810A: BF 49 98 7E LDA $7E9849,X ; bg1 vscroll hdma table, number of scanlines C3/810E: C9 1E CMP #$1E C3/8110: F0 4C BEQ $815E ; return if on last line of table (number of scanlines = $1E) C3/8112: E8 INX C3/8113: DA PHX C3/8114: 7B TDC C3/8115: A5 20 LDA $20 ; menu state frame counter C3/8117: C2 20 REP #$20 C3/8119: A4 41 LDY $41 ; bg1 vscroll speed C3/811B: 30 02 BMI $811F ; branch if negative C3/811D: 80 04 BRA $8123 ; branch if positive C3/811F: 18 CLC C3/8120: 69 03 00 ADC #$0003 ; add to menu state frame counter if negative C3/8123: 0A ASL C3/8124: AA TAX C3/8125: A8 TAY C3/8126: BF 5F 81 C3 LDA $C3815F,X ; vscroll constant C3/812A: FA PLX C3/812B: 18 CLC C3/812C: 7F 49 98 7E ADC $7E9849,X ; add to hdma value C3/8130: 9F 49 98 7E STA $7E9849,X C3/8134: E8 INX ; next line C3/8135: E8 INX C3/8136: E8 INX C3/8137: DA PHX C3/8138: BB TYX C3/8139: BF 6B 81 C3 LDA $C3816B,X C3/813D: FA PLX C3/813E: 18 CLC C3/813F: 7F 49 98 7E ADC $7E9849,X C3/8143: 9F 49 98 7E STA $7E9849,X C3/8147: E8 INX ; next line C3/8148: E8 INX C3/8149: E8 INX C3/814A: DA PHX C3/814B: BB TYX C3/814C: BF 77 81 C3 LDA $C38177,X C3/8150: FA PLX C3/8151: 18 CLC C3/8152: 7F 49 98 7E ADC $7E9849,X C3/8156: 9F 49 98 7E STA $7E9849,X C3/815A: E8 INX ; next line C3/815B: E8 INX C3/815C: 80 AA BRA $8108 C3/815E: 60 RTS ; constants to add to bg1 vscroll each frame (3 values each, positive then negative) ; 3rd frame C3/815F: .DW $0008, $0004, $0004, $FFFC, $FFFC, $FFF8 ; 2nd frame C3/816B: .DW $0004, $0008, $0004, $FFFC, $FFF8, $FFFC ; 1st frame C3/8177: .DW $0004, $0004, $0008, $FFF8, $FFFC, $FFFC ; [ BG1 Text Scrolling Thread ] C3/8183: AA TAX C3/8184: 7C 87 81 JMP ($8187,X) C3/8187: .DW $818F, $819C, $81A7, $81B0 ; state $00: init (scroll up) C3/818F: A6 2D LDX $2D C3/8191: C2 20 REP #$20 C3/8193: A9 FC FF LDA #$FFFC ; set bg1 text scroll speed to -4 C3/8196: 85 41 STA $41 C3/8198: E2 20 SEP #$20 C3/819A: 80 0B BRA $81A7 ; state $01: init (scroll down) C3/819C: A6 2D LDX $2D C3/819E: C2 20 REP #$20 C3/81A0: A9 04 00 LDA #$0004 ; set bg1 text scroll speed to +4 C3/81A3: 85 41 STA $41 C3/81A5: E2 20 SEP #$20 ; state $02: init C3/81A7: A6 2D LDX $2D C3/81A9: A9 03 LDA #$03 ; set thread state to 3 C3/81AB: 9D 49 36 STA $3649,X C3/81AE: 85 20 STA $20 ; set wait counter to 3 ; state $03: update C3/81B0: A6 2D LDX $2D C3/81B2: A5 20 LDA $20 ; wait counter C3/81B4: F0 06 BEQ $81BC ; branch when wait counter reaches zero C3/81B6: A9 20 LDA #$20 C3/81B8: 04 46 TSB $46 ; enable bg1 text scrolling C3/81BA: 38 SEC C3/81BB: 60 RTS C3/81BC: A4 00 LDY $00 ; clear bg1 vscroll speed C3/81BE: 84 41 STY $41 C3/81C0: A9 20 LDA #$20 ; disable bg1 text scrolling C3/81C2: 14 46 TRB $46 C3/81C4: 18 CLC ; terminate thread C3/81C5: 60 RTS C3/81C6: 60 RTS ; [ Update Cursor Movement (scrolling list) ] C3/81C7: A5 20 LDA $20 ; return if waiting for menu state counter C3/81C9: D0 FB BNE $81C6 ; up button pressed C3/81CB: A5 0B LDA $0B ; branch if up button is not pressed C3/81CD: 89 08 BIT #$08 C3/81CF: F0 19 BEQ $81EA C3/81D1: A5 4E LDA $4E ; cursor Y position (relative to page) C3/81D3: D0 0D BNE $81E2 ; branch if not at top of page C3/81D5: A5 4A LDA $4A ; return if at top of first page C3/81D7: F0 ED BEQ $81C6 C3/81D9: C6 50 DEC $50 ; decrement absolute cursor position C3/81DB: 20 86 82 JSR $8286 ; scroll page up C3/81DE: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/81E1: 60 RTS C3/81E2: C6 50 DEC $50 ; decrement absolute cursor position C3/81E4: C6 4E DEC $4E ; decrement relative cursor position C3/81E6: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/81E9: 60 RTS ; down button pressed C3/81EA: A5 0B LDA $0B C3/81EC: 89 04 BIT #$04 C3/81EE: F0 20 BEQ $8210 C3/81F0: A5 54 LDA $54 C3/81F2: 3A DEC C3/81F3: C5 4E CMP $4E C3/81F5: D0 12 BNE $8209 C3/81F7: A5 4A LDA $4A C3/81F9: C5 5C CMP $5C C3/81FB: F0 09 BEQ $8206 C3/81FD: E6 50 INC $50 C3/81FF: 20 9E 82 JSR $829E ; scroll page down C3/8202: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/8205: 60 RTS C3/8206: 4C 85 82 JMP $8285 C3/8209: E6 50 INC $50 C3/820B: E6 4E INC $4E C3/820D: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) ; left button pressed C3/8210: A5 0B LDA $0B C3/8212: 89 02 BIT #$02 C3/8214: F0 33 BEQ $8249 C3/8216: A5 4D LDA $4D C3/8218: D0 27 BNE $8241 C3/821A: A5 4E LDA $4E C3/821C: F0 0F BEQ $822D C3/821E: C6 4E DEC $4E ; decrement relative cursor position C3/8220: C6 50 DEC $50 ; decrement absolute cursor position C3/8222: A5 53 LDA $53 C3/8224: 3A DEC C3/8225: 85 4D STA $4D ; x position = max x position C3/8227: 85 4F STA $4F C3/8229: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/822C: 60 RTS C3/822D: A5 4A LDA $4A C3/822F: F0 95 BEQ $81C6 C3/8231: 20 86 82 JSR $8286 ; scroll page up C3/8234: A5 53 LDA $53 C3/8236: 3A DEC C3/8237: 85 4D STA $4D C3/8239: 85 4F STA $4F C3/823B: C6 50 DEC $50 C3/823D: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/8240: 60 RTS C3/8241: C6 4D DEC $4D C3/8243: C6 4F DEC $4F C3/8245: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/8248: 60 RTS ; right button pressed C3/8249: A5 0B LDA $0B C3/824B: 89 01 BIT #$01 C3/824D: F0 36 BEQ $8285 C3/824F: A5 53 LDA $53 C3/8251: 3A DEC C3/8252: C5 4D CMP $4D C3/8254: D0 28 BNE $827E C3/8256: A5 54 LDA $54 C3/8258: 3A DEC C3/8259: C5 4E CMP $4E C3/825B: F0 0D BEQ $826A C3/825D: 7B TDC C3/825E: 85 4D STA $4D C3/8260: 85 4F STA $4F C3/8262: E6 4E INC $4E C3/8264: E6 50 INC $50 C3/8266: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/8269: 60 RTS C3/826A: A5 4A LDA $4A C3/826C: C5 5C CMP $5C C3/826E: F0 15 BEQ $8285 C3/8270: 20 9E 82 JSR $829E ; scroll page down C3/8273: 7B TDC C3/8274: 85 4D STA $4D C3/8276: 85 4F STA $4F C3/8278: E6 50 INC $50 C3/827A: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/827D: 60 RTS C3/827E: E6 4D INC $4D C3/8280: E6 4F INC $4F C3/8282: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/8285: 60 RTS ; [ Scroll Page Up ] C3/8286: C6 4A DEC $4A ; decrement page scroll position C3/8288: C6 49 DEC $49 ; decrement vertical scroll position C3/828A: 20 F7 83 JSR $83F7 ; calculate text position C3/828D: 20 DD 82 JSR $82DD ; update list text C3/8290: A9 00 LDA #$00 C3/8292: A0 83 81 LDY #$8183 ; bg1 text scrolling thread C3/8295: 20 73 11 JSR $1173 ; create thread C3/8298: 7B TDC C3/8299: 9F 49 36 7E STA $7E3649,X ; set thread state to 0 (scroll up) C3/829D: 60 RTS ; [ Scroll Page Down ] C3/829E: AD 12 42 LDA $4212 C3/82A1: 29 40 AND #$40 C3/82A3: F0 F9 BEQ $829E C3/82A5: A5 5A LDA $5A C3/82A7: 18 CLC C3/82A8: 65 4A ADC $4A C3/82AA: 8D 1B 21 STA $211B C3/82AD: 9C 1B 21 STZ $211B C3/82B0: A5 5B LDA $5B C3/82B2: 8D 1C 21 STA $211C C3/82B5: 8D 1C 21 STA $211C C3/82B8: AD 34 21 LDA $2134 C3/82BB: 85 E5 STA $E5 C3/82BD: A5 49 LDA $49 C3/82BF: 18 CLC C3/82C0: 65 5A ADC $5A C3/82C2: 0A ASL C3/82C3: 29 1F AND #$1F C3/82C5: 85 E6 STA $E6 C3/82C7: E6 4A INC $4A C3/82C9: E6 49 INC $49 C3/82CB: 20 DD 82 JSR $82DD C3/82CE: A9 00 LDA #$00 C3/82D0: A0 83 81 LDY #$8183 ; bg1 text scrolling thread C3/82D3: 20 73 11 JSR $1173 ; create thread C3/82D6: A9 01 LDA #$01 C3/82D8: 9F 49 36 7E STA $7E3649,X ; set thread state to 1 (scroll down) C3/82DC: 60 RTS ; [ Update List Text ] C3/82DD: 7B TDC C3/82DE: A5 2A LDA $2A ; list type C3/82E0: 0A ASL C3/82E1: AA TAX C3/82E2: 7C E5 82 JMP ($82E5,X) ; jump table for list types (0 = item list, 1 = magic, 2 = lore, 3 = rage, 4 = esper, 5 = equip/relic item list) C3/82E5: .DW $7FA1, $4F9E, $5256, $53EE, $54E3, $9CE2 C3/82F1: 20 08 83 JSR $8308 C3/82F4: 7B TDC C3/82F5: A5 4B LDA $4B C3/82F7: A8 TAY C3/82F8: B9 69 18 LDA $1869,Y C3/82FB: 20 38 57 JSR $5738 C3/82FE: 20 56 83 JSR $8356 C3/8301: A9 20 LDA #$20 C3/8303: 85 29 STA $29 C3/8305: 4C 7A 83 JMP $837A C3/8308: A2 A0 7A LDX #$7AA0 ; $ED7AA0 (pointers to item descriptions) C3/830B: 86 E7 STX $E7 C3/830D: A2 00 64 LDX #$6400 ; $ED6400 (item descriptions) C3/8310: 86 EB STX $EB C3/8312: A9 ED LDA #$ED C3/8314: 85 E9 STA $E9 C3/8316: A9 ED LDA #$ED C3/8318: 85 ED STA $ED C3/831A: A2 C9 9E LDX #$9EC9 C3/831D: 8E 81 21 STX $2181 C3/8320: 60 RTS ; [ Calculate Pointer to Item Data ] ; A = item number ; +$2134 = pointer (+$D85000) itemidx_calc: C3/8321: 48 PHA C3/8322: AD 12 42 LDA $4212 ; wait for horizontal blank C3/8325: 29 40 AND #$40 C3/8327: F0 F9 BEQ $8322 C3/8329: 68 PLA C3/832A: 8D 1B 21 STA $211B C3/832D: 9C 1B 21 STZ $211B C3/8330: A9 1E LDA #$1E ; multiply by 30 C3/8332: 8D 1C 21 STA $211C C3/8335: 8D 1C 21 STA $211C C3/8338: 60 RTS C3/8339: A2 60 FB LDX #$FB60 ; $CEFB60 (pointers to rare item descriptions) C3/833C: 86 E7 STX $E7 C3/833E: A2 B0 FC LDX #$FCB0 ; $CEFCB0 (rare item descriptions) C3/8341: 86 EB STX $EB C3/8343: A9 CE LDA #$CE C3/8345: 85 E9 STA $E9 C3/8347: 85 ED STA $ED C3/8349: 20 2A 57 JSR $572A C3/834C: 20 6B 83 JSR $836B C3/834F: A9 20 LDA #$20 C3/8351: 85 29 STA $29 C3/8353: 4C 7A 83 JMP $837A C3/8356: 7B TDC C3/8357: AA TAX C3/8358: A8 TAY C3/8359: BD 69 18 LDA $1869,X ; current items C3/835C: C9 FF CMP #$FF C3/835E: F0 01 BEQ $8361 C3/8360: C8 INY C3/8361: E8 INX C3/8362: E0 00 01 CPX #$0100 C3/8365: D0 F2 BNE $8359 C3/8367: 98 TYA C3/8368: 85 64 STA $64 C3/836A: 60 RTS C3/836B: 7B TDC C3/836C: AA TAX C3/836D: BF 89 9D 7E LDA $7E9D89,X C3/8371: 30 03 BMI $8376 C3/8373: E8 INX C3/8374: 80 F7 BRA $836D C3/8376: 8A TXA C3/8377: 85 64 STA $64 C3/8379: 60 RTS C3/837A: A5 64 LDA $64 C3/837C: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/837F: A2 BF 7A LDX #$7ABF C3/8382: 4C C0 04 JMP $04C0 C3/8385: A0 4A 8E LDY #$8E4A C3/8388: 4C F9 02 JMP $02F9 C3/838B: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/838E: 20 94 83 JSR $8394 C3/8391: 4C DE 83 JMP $83DE C3/8394: A2 89 9D LDX #$9D89 C3/8397: 8E 81 21 STX $2181 C3/839A: A0 14 00 LDY #$0014 C3/839D: A9 FF LDA #$FF C3/839F: 8D 80 21 STA $2180 C3/83A2: 88 DEY C3/83A3: D0 FA BNE $839F C3/83A5: A2 89 9D LDX #$9D89 C3/83A8: 8E 81 21 STX $2181 C3/83AB: AE BA 1E LDX $1EBA ; rare item event bits (28 total) C3/83AE: 86 EF STX $EF C3/83B0: AD BC 1E LDA $1EBC C3/83B3: 85 F1 STA $F1 C3/83B5: AD BD 1E LDA $1EBD C3/83B8: 29 0F AND #$0F C3/83BA: 64 F2 STZ $F2 C3/83BC: 7B TDC C3/83BD: 85 E0 STA $E0 C3/83BF: AA TAX C3/83C0: A9 04 LDA #$04 C3/83C2: 85 E1 STA $E1 C3/83C4: A0 08 00 LDY #$0008 C3/83C7: B5 EF LDA $EF,X C3/83C9: 6A ROR C3/83CA: 48 PHA C3/83CB: 90 05 BCC $83D2 C3/83CD: A5 E0 LDA $E0 C3/83CF: 8D 80 21 STA $2180 C3/83D2: E6 E0 INC $E0 C3/83D4: 68 PLA C3/83D5: 88 DEY C3/83D6: D0 F1 BNE $83C9 C3/83D8: E8 INX C3/83D9: C6 E1 DEC $E1 C3/83DB: D0 E7 BNE $83C4 C3/83DD: 60 RTS C3/83DE: 20 F7 83 JSR $83F7 C3/83E1: 64 E5 STZ $E5 C3/83E3: A0 0A 00 LDY #$000A C3/83E6: 5A PHY C3/83E7: 20 1B 84 JSR $841B C3/83EA: A5 E6 LDA $E6 C3/83EC: 1A INC C3/83ED: 1A INC C3/83EE: 29 1F AND #$1F C3/83F0: 85 E6 STA $E6 C3/83F2: 7A PLY C3/83F3: 88 DEY C3/83F4: D0 F0 BNE $83E6 C3/83F6: 60 RTS ; [ Calculate Text Position ] ; $E5 = index of selected item in list ; $E6 = vertical position in bg1 data C3/83F7: A5 49 LDA $49 ; vertical scroll position C3/83F9: 0A ASL C3/83FA: 29 1F AND #$1F C3/83FC: 85 E6 STA $E6 C3/83FE: AD 12 42 LDA $4212 ; wait for hblank C3/8401: 29 40 AND #$40 C3/8403: F0 F9 BEQ $83FE C3/8405: A5 4A LDA $4A ; page scroll position * page width C3/8407: 8D 1B 21 STA $211B C3/840A: 9C 1B 21 STZ $211B C3/840D: A5 5B LDA $5B C3/840F: 8D 1C 21 STA $211C C3/8412: 8D 1C 21 STA $211C C3/8415: AD 34 21 LDA $2134 C3/8418: 85 E5 STA $E5 C3/841A: 60 RTS C3/841B: A9 20 LDA #$20 C3/841D: 85 29 STA $29 C3/841F: 20 36 84 JSR $8436 C3/8422: A2 03 00 LDX #$0003 C3/8425: 20 45 84 JSR $8445 C3/8428: E6 E5 INC $E5 C3/842A: 20 36 84 JSR $8436 C3/842D: A2 11 00 LDX #$0011 C3/8430: 20 45 84 JSR $8445 C3/8433: E6 E5 INC $E5 C3/8435: 60 RTS C3/8436: A0 0D 00 LDY #$000D C3/8439: 84 EB STY $EB C3/843B: A0 A0 FB LDY #$FBA0 ; pointers to rare item names C3/843E: 84 EF STY $EF C3/8440: A9 CE LDA #$CE C3/8442: 85 F1 STA $F1 C3/8444: 60 RTS C3/8445: A5 E6 LDA $E6 C3/8447: 1A INC C3/8448: 20 9F 80 JSR $809F C3/844B: C2 20 REP #$20 C3/844D: 8A TXA C3/844E: 8F 89 9E 7E STA $7E9E89 C3/8452: E2 20 SEP #$20 C3/8454: 7B TDC C3/8455: A5 E5 LDA $E5 C3/8457: AA TAX C3/8458: BF 89 9D 7E LDA $7E9D89,X C3/845C: C9 FF CMP #$FF C3/845E: F0 06 BEQ $8466 C3/8460: 20 67 84 JSR $8467 C3/8463: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/8466: 60 RTS C3/8467: 48 PHA C3/8468: A2 8B 9E LDX #$9E8B C3/846B: 8E 81 21 STX $2181 C3/846E: AD 12 42 LDA $4212 C3/8471: 29 40 AND #$40 C3/8473: F0 F9 BEQ $846E C3/8475: 68 PLA C3/8476: 8D 1B 21 STA $211B C3/8479: 9C 1B 21 STZ $211B C3/847C: 7B TDC C3/847D: A5 EB LDA $EB C3/847F: 8D 1C 21 STA $211C C3/8482: 8D 1C 21 STA $211C C3/8485: AC 34 21 LDY $2134 C3/8488: A6 EB LDX $EB C3/848A: B7 EF LDA [$EF],Y C3/848C: 8D 80 21 STA $2180 C3/848F: C8 INY C3/8490: CA DEX C3/8491: D0 F7 BNE $848A C3/8493: 9C 80 21 STZ $2180 C3/8496: 60 RTS ; [ Use Item (from inventory) ] C3/8497: 7B TDC C3/8498: A5 4B LDA $4B C3/849A: 85 28 STA $28 C3/849C: A8 TAY C3/849D: B9 69 18 LDA $1869,Y ; item C3/84A0: C9 FF CMP #$FF C3/84A2: F0 6C BEQ $8510 ; branch if slot is empty C3/84A4: C9 EF CMP #$EF C3/84A6: F0 68 BEQ $8510 ; branch if ??? C3/84A8: 20 21 83 JSR $8321 ; calculate pointer to item data C3/84AB: AE 34 21 LDX $2134 C3/84AE: BF 00 50 D8 LDA $D85000,X C3/84B2: 29 07 AND #$07 C3/84B4: C9 06 CMP #$06 C3/84B6: D0 5D BNE $8515 ; branch if not a useable item C3/84B8: BF 00 50 D8 LDA $D85000,X C3/84BC: 29 40 AND #$40 C3/84BE: F0 50 BEQ $8510 ; branch if not useable on the field C3/84C0: 7B TDC C3/84C1: A5 28 LDA $28 C3/84C3: A8 TAY C3/84C4: B9 69 18 LDA $1869,Y ; item index C3/84C7: C9 F7 CMP #$F7 C3/84C9: F0 2D BEQ $84F8 ; branch if a tent was used C3/84CB: C9 F6 CMP #$F6 C3/84CD: F0 13 BEQ $84E2 ; branch if a sleeping bag was used C3/84CF: C9 FD CMP #$FD C3/84D1: F0 18 BEQ $84EB ; branch if a warp stone was used C3/84D3: A4 4F LDY $4F C3/84D5: 84 8E STY $8E C3/84D7: A5 4A LDA $4A C3/84D9: 85 90 STA $90 C3/84DB: A9 6F LDA #$6F ; menu state $6F (use item, character select, init) C3/84DD: 85 27 STA $27 C3/84DF: 64 26 STZ $26 C3/84E1: 60 RTS ; sleeping bag C3/84E2: 85 E6 STA $E6 C3/84E4: AD 01 02 LDA $0201 C3/84E7: 10 27 BPL $8510 ; branch if not on a save point C3/84E9: 80 E8 BRA $84D3 ; go to character select ; warp stone C3/84EB: 85 E6 STA $E6 C3/84ED: AD 01 02 LDA $0201 C3/84F0: 89 02 BIT #$02 C3/84F2: F0 1C BEQ $8510 ; branch if warp is disabled C3/84F4: A9 03 LDA #$03 ; return code $03 (warp/warp stone) C3/84F6: 80 09 BRA $8501 ; tent C3/84F8: 85 E6 STA $E6 C3/84FA: AD 01 02 LDA $0201 C3/84FD: 10 11 BPL $8510 ; branch if not on a save point C3/84FF: A9 02 LDA #$02 ; return code $02 (tent) C3/8501: 8D 05 02 STA $0205 C3/8504: A5 E6 LDA $E6 C3/8506: 20 97 9D JSR $9D97 ; remove item from inventory C3/8509: A9 FF LDA #$FF ; terminate menu after fade out C3/850B: 85 27 STA $27 C3/850D: 64 26 STZ $26 ; menu state $00 (fade out) C3/850F: 60 RTS C3/8510: A9 08 LDA #$08 ; menu state $08 (item select) C3/8512: 85 26 STA $26 C3/8514: 60 RTS ; not a useable item, show item details C3/8515: A0 89 9D LDY #$9D89 C3/8518: 8C 81 21 STY $2181 C3/851B: C9 00 CMP #$00 C3/851D: F0 F1 BEQ $8510 ; branch if a tool (back to item select) C3/851F: 64 E0 STZ $E0 C3/8521: C2 20 REP #$20 C3/8523: BF 01 50 D8 LDA $D85001,X ; equippable characters C3/8527: A6 00 LDX $00 C3/8529: 4A LSR C3/852A: 90 0B BCC $8537 ; skip characters that can't equip this item C3/852C: 48 PHA C3/852D: E2 20 SEP #$20 C3/852F: A5 E0 LDA $E0 C3/8531: 8D 80 21 STA $2180 ; store character index C3/8534: C2 20 REP #$20 C3/8536: 68 PLA C3/8537: E2 20 SEP #$20 C3/8539: E6 E0 INC $E0 ; increment character index C3/853B: C2 20 REP #$20 C3/853D: E8 INX ; next character C3/853E: E0 0E 00 CPX #$000E C3/8541: D0 E6 BNE $8529 C3/8543: E2 20 SEP #$20 C3/8545: A9 FF LDA #$FF ; store end of list C3/8547: 8D 80 21 STA $2180 C3/854A: C2 20 REP #$20 C3/854C: A9 E0 00 LDA #$00E0 C3/854F: 8F 10 9A 7E STA $7E9A10 ; C3/8553: A9 8D 7D LDA #$7D8D C3/8556: 8F 89 9E 7E STA $7E9E89 ; pointer to positioned text C3/855A: E2 20 SEP #$20 C3/855C: A9 04 LDA #$04 C3/855E: 14 45 TRB $45 C3/8560: 20 8C 85 JSR $858C C3/8563: 20 95 85 JSR $8595 ; init flashing left cursor C3/8566: 7B TDC C3/8567: A5 4B LDA $4B ; selected item C3/8569: A8 TAY C3/856A: 20 B9 80 JSR $80B9 ; load item name text C3/856D: 20 AD 85 JSR $85AD ; load " can be used by:" text to buffer C3/8570: A9 2C LDA #$2C ; teal text C3/8572: 85 29 STA $29 C3/8574: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/8577: A9 20 LDA #$20 ; white text C3/8579: 85 29 STA $29 C3/857B: 20 D5 85 JSR $85D5 ; draw equippable character names C3/857E: 20 71 86 JSR $8671 ; draw item stats C3/8581: 20 25 0F JSR $0F25 ; init dma 1 (bg3 data, left & right screens) C3/8584: 20 89 0F JSR $0F89 ; disable dma 2 C3/8587: A9 64 LDA #$64 ; menu state $64 (item details) C3/8589: 85 26 STA $26 C3/858B: 60 RTS ; [ ] C3/858C: A9 C0 LDA #$C0 ; page can't scroll up or down C3/858E: 14 46 TRB $46 C3/8590: A9 10 LDA #$10 ; force description text redraw ??? C3/8592: 04 45 TSB $45 C3/8594: 60 RTS ; [ Init Flashing Left Cursor (item details) ] C3/8595: A9 01 LDA #$01 ; enable flashing left cursor C3/8597: 85 99 STA $99 C3/8599: A9 01 LDA #$01 C3/859B: A0 19 7A LDY #$7A19 ; flashing left cursor (item details) C3/859E: 20 73 11 JSR $1173 ; create thread C3/85A1: A9 80 LDA #$80 C3/85A3: 9F 4A 34 7E STA $7E344A,X ; y position C3/85A7: 7B TDC C3/85A8: 9F 4B 34 7E STA $7E344B,X C3/85AC: 60 RTS ; [ Load " can be used by:" Text to Buffer ] C3/85AD: A2 01 00 LDX #$0001 C3/85B0: BF 8B 9E 7E LDA $7E9E8B,X C3/85B4: C9 FF CMP #$FF C3/85B6: D0 15 BNE $85CD C3/85B8: A4 00 LDY $00 C3/85BA: DA PHX C3/85BB: BB TYX C3/85BC: BF 34 8D C3 LDA $C38D34,X ; " can be used by:" C3/85C0: FA PLX C3/85C1: 9F 8B 9E 7E STA $7E9E8B,X C3/85C5: E8 INX C3/85C6: C8 INY C3/85C7: C0 11 00 CPY #$0011 C3/85CA: D0 EE BNE $85BA C3/85CC: 60 RTS C3/85CD: E8 INX C3/85CE: E0 0D 00 CPX #$000D C3/85D1: D0 DD BNE $85B0 C3/85D3: 80 E3 BRA $85B8 ; [ Draw Equippable Character Names ] C3/85D5: A2 09 9E LDX #$9E09 C3/85D8: 8E 81 21 STX $2181 C3/85DB: A6 00 LDX $00 C3/85DD: BF 89 9D 7E LDA $7E9D89,X C3/85E1: 30 40 BMI $8623 ; branch if no character C3/85E3: 85 E5 STA $E5 C3/85E5: A4 00 LDY $00 C3/85E7: 84 E7 STY $E7 C3/85E9: 86 F3 STX $F3 C3/85EB: A5 E5 LDA $E5 C3/85ED: D9 00 16 CMP $1600,Y C3/85F0: D0 18 BNE $860A C3/85F2: C2 20 REP #$20 C3/85F4: A5 E7 LDA $E7 C3/85F6: 0A ASL C3/85F7: AA TAX C3/85F8: AD DC 1E LDA $1EDC ; initialized characters C3/85FB: 3F 67 9C C3 AND $C39C67,X C3/85FF: E2 20 SEP #$20 C3/8601: F0 18 BEQ $861B ; branch if character is not initialized C3/8603: A5 E7 LDA $E7 C3/8605: 8D 80 21 STA $2180 C3/8608: 80 11 BRA $861B C3/860A: C2 21 REP #$21 ; check next character C3/860C: 98 TYA C3/860D: 69 25 00 ADC #$0025 C3/8610: A8 TAY C3/8611: E2 20 SEP #$20 C3/8613: E6 E7 INC $E7 C3/8615: A5 E7 LDA $E7 C3/8617: C9 10 CMP #$10 C3/8619: D0 CE BNE $85E9 C3/861B: A6 F3 LDX $F3 C3/861D: E8 INX C3/861E: E0 10 00 CPX #$0010 C3/8621: D0 BA BNE $85DD C3/8623: A9 FF LDA #$FF C3/8625: 8D 80 21 STA $2180 C3/8628: A6 00 LDX $00 C3/862A: 7B TDC C3/862B: BF 09 9E 7E LDA $7E9E09,X C3/862F: 30 21 BMI $8652 C3/8631: DA PHX C3/8632: DA PHX C3/8633: C2 20 REP #$20 C3/8635: 0A ASL C3/8636: AA TAX C3/8637: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/863B: 85 67 STA $67 C3/863D: FA PLX C3/863E: 8A TXA C3/863F: 0A ASL C3/8640: AA TAX C3/8641: BF 53 86 C3 LDA $C38653,X C3/8645: A8 TAY C3/8646: E2 20 SEP #$20 C3/8648: 20 CF 34 JSR $34CF ; draw character name C3/864B: FA PLX C3/864C: E8 INX C3/864D: E0 0E 00 CPX #$000E C3/8650: D0 D8 BNE $862A C3/8652: 60 RTS ; pointers to character names in bg data (item details) C3/8653: .DW $7E0F, $7E23, $7E37, $7E8F, $7EA3, $7EB7, $7F0F, $7F23 C3/8663: .DW $7F37, $7F8F, $7FA3, $7FB7, $800F, $8023, $8037 ; [ Draw Item Stats ] C3/8671: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/8674: A9 2C LDA #$2C ; teal text C3/8676: 85 29 STA $29 C3/8678: A2 45 8D LDX #$8D45 ; stat names C3/867B: A0 1C 00 LDY #$001C C3/867E: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/8681: A9 2C LDA #$2C ; teal text C3/8683: 85 29 STA $29 C3/8685: A2 61 8D LDX #$8D61 ; last 4 stat names C3/8688: A0 08 00 LDY #$0008 C3/868B: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/868E: A9 20 LDA #$20 ; white text C3/8690: 85 29 STA $29 C3/8692: 7B TDC C3/8693: A5 4B LDA $4B ; cursor position C3/8695: A8 TAY C3/8696: B9 69 18 LDA $1869,Y ; item index C3/8699: 20 21 83 JSR $8321 ; calculate pointer to item data -> $2134 C3/869C: AE 34 21 LDX $2134 C3/869F: 7B TDC C3/86A0: 8F 8D 9E 7E STA $7E9E8D C3/86A4: 8F 8E 9E 7E STA $7E9E8E C3/86A8: C2 20 REP #$20 C3/86AA: A9 45 84 LDA #$8445 C3/86AD: 8F 89 9E 7E STA $7E9E89 C3/86B1: E2 20 SEP #$20 C3/86B3: 7B TDC C3/86B4: BF 10 50 D8 LDA $D85010,X ; vigor/speed C3/86B8: 48 PHA C3/86B9: 29 0F AND #$0F C3/86BB: 0A ASL C3/86BC: 20 36 88 JSR $8836 C3/86BF: C2 20 REP #$20 C3/86C1: A9 C5 84 LDA #$84C5 C3/86C4: 8F 89 9E 7E STA $7E9E89 C3/86C8: E2 20 SEP #$20 C3/86CA: 7B TDC C3/86CB: 68 PLA C3/86CC: 29 F0 AND #$F0 C3/86CE: 4A LSR C3/86CF: 4A LSR C3/86D0: 4A LSR C3/86D1: 20 36 88 JSR $8836 C3/86D4: C2 20 REP #$20 C3/86D6: A9 45 85 LDA #$8545 C3/86D9: 8F 89 9E 7E STA $7E9E89 C3/86DD: E2 20 SEP #$20 C3/86DF: AE 34 21 LDX $2134 C3/86E2: 7B TDC C3/86E3: BF 11 50 D8 LDA $D85011,X ; stamina/mag.pwr C3/86E7: 48 PHA C3/86E8: 29 0F AND #$0F C3/86EA: 0A ASL C3/86EB: 20 36 88 JSR $8836 C3/86EE: C2 20 REP #$20 C3/86F0: A9 C5 85 LDA #$85C5 C3/86F3: 8F 89 9E 7E STA $7E9E89 C3/86F7: E2 20 SEP #$20 C3/86F9: 7B TDC C3/86FA: 68 PLA C3/86FB: 29 F0 AND #$F0 C3/86FD: 4A LSR C3/86FE: 4A LSR C3/86FF: 4A LSR C3/8700: 20 36 88 JSR $8836 C3/8703: AE 34 21 LDX $2134 C3/8706: BF 00 50 D8 LDA $D85000,X C3/870A: 29 07 AND #$07 C3/870C: C9 01 CMP #$01 C3/870E: F0 36 BEQ $8746 ; branch if a weapon ; not a weapon C3/8710: BF 14 50 D8 LDA $D85014,X ; defense power C3/8714: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/8717: A2 C3 86 LDX #$86C3 C3/871A: 20 C0 04 JSR $04C0 C3/871D: AE 34 21 LDX $2134 C3/8720: BF 15 50 D8 LDA $D85015,X ; magic defense C3/8724: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/8727: A2 C3 87 LDX #$87C3 C3/872A: 20 C0 04 JSR $04C0 C3/872D: 20 EB 87 JSR $87EB ; draw item's evade%/mblock% C3/8730: 20 A0 88 JSR $88A0 ; draw 50% elements C3/8733: 20 59 89 JSR $8959 ; draw defensive elements C3/8736: A9 2C LDA #$2C ; teal text C3/8738: 85 29 STA $29 C3/873A: A2 69 8D LDX #$8D69 ; element defense type names C3/873D: A0 08 00 LDY #$0008 C3/8740: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/8743: 4C C7 87 JMP $87C7 ; draw item's spell learned ; weapon C3/8746: 20 9C 87 JSR $879C ; draw item's battle power C3/8749: 20 EB 87 JSR $87EB ; draw item's evade%/mblock% C3/874C: A9 2C LDA #$2C ; teal text C3/874E: 85 29 STA $29 C3/8750: A0 1D 8E LDY #$8E1D ; "Attack" (for element) C3/8753: 20 F9 02 JSR $02F9 ; draw positioned text C3/8756: 20 A0 88 JSR $88A0 ; draw weapon elements C3/8759: A9 20 LDA #$20 ; white text C3/875B: 85 29 STA $29 C3/875D: AE 34 21 LDX $2134 C3/8760: BF 13 50 D8 LDA $D85013,X ; weapon properties C3/8764: 10 08 BPL $876E C3/8766: A0 30 8E LDY #$8E30 ; "Runic" C3/8769: 84 E7 STY $E7 C3/876B: 20 95 87 JSR $8795 ; draw weapon property text C3/876E: AE 34 21 LDX $2134 C3/8771: BF 13 50 D8 LDA $D85013,X C3/8775: 29 40 AND #$40 C3/8777: F0 08 BEQ $8781 C3/8779: A0 38 8E LDY #$8E38 ; "2-hand" C3/877C: 84 E7 STY $E7 C3/877E: 20 95 87 JSR $8795 ; draw weapon property text C3/8781: AE 34 21 LDX $2134 C3/8784: BF 13 50 D8 LDA $D85013,X C3/8788: 29 02 AND #$02 C3/878A: F0 08 BEQ $8794 C3/878C: A0 26 8E LDY #$8E26 ; "SwdTech" C3/878F: 84 E7 STY $E7 C3/8791: 20 95 87 JSR $8795 ; draw weapon property text C3/8794: 60 RTS ; [ Draw Weapon Property Text ] C3/8795: A9 C3 LDA #$C3 ; bank byte of text pointer C3/8797: 85 E9 STA $E9 C3/8799: 4C FF 02 JMP $02FF ; draw positioned text ; [ Draw Item's Battle Power ] C3/879C: 7B TDC C3/879D: A5 4B LDA $4B C3/879F: A8 TAY C3/87A0: B9 69 18 LDA $1869,Y ; current items C3/87A3: C9 1C CMP #$1C C3/87A5: F0 19 BEQ $87C0 ; branch if atma weapon C3/87A7: C9 16 CMP #$16 C3/87A9: F0 15 BEQ $87C0 ; branch if soul sabre C3/87AB: C9 51 CMP #$51 C3/87AD: F0 11 BEQ $87C0 ; branch if dice C3/87AF: C9 52 CMP #$52 C3/87B1: F0 0D BEQ $87C0 ; branch if fixed dice C3/87B3: BF 14 50 D8 LDA $D85014,X ; battle power C3/87B7: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/87BA: A2 43 86 LDX #$8643 C3/87BD: 4C C0 04 JMP $04C0 C3/87C0: A0 71 8D LDY #$8D71 ; display "???" battle power for the weapons above C3/87C3: 20 F9 02 JSR $02F9 ; draw positioned text C3/87C6: 60 RTS ; [ Draw Item's Spell Learned ] C3/87C7: A9 20 LDA #$20 C3/87C9: 85 29 STA $29 C3/87CB: AE 34 21 LDX $2134 C3/87CE: BF 03 50 D8 LDA $D85003,X ; spell learn rate C3/87D2: F0 16 BEQ $87EA C3/87D4: 85 E0 STA $E0 C3/87D6: BF 04 50 D8 LDA $D85004,X ; spell learned C3/87DA: 85 E1 STA $E1 C3/87DC: C2 20 REP #$20 C3/87DE: A9 2F 83 LDA #$832F C3/87E1: 8F 89 9E 7E STA $7E9E89 C3/87E5: E2 20 SEP #$20 C3/87E7: 20 ED 5A JSR $5AED C3/87EA: 60 RTS ; [ Draw Item's Evade%/MBlock% ] C3/87EB: C2 20 REP #$20 C3/87ED: A9 43 87 LDA #$8743 C3/87F0: 8F 89 9E 7E STA $7E9E89 C3/87F4: E2 20 SEP #$20 C3/87F6: AE 34 21 LDX $2134 C3/87F9: 7B TDC C3/87FA: BF 1A 50 D8 LDA $D8501A,X ; evade%/mblock% C3/87FE: 48 PHA C3/87FF: 29 0F AND #$0F C3/8801: 0A ASL C3/8802: 0A ASL C3/8803: 20 1A 88 JSR $881A ; draw modifier text C3/8806: C2 20 REP #$20 C3/8808: A9 43 88 LDA #$8843 C3/880B: 8F 89 9E 7E STA $7E9E89 C3/880F: E2 20 SEP #$20 C3/8811: AE 34 21 LDX $2134 C3/8814: 7B TDC C3/8815: 68 PLA C3/8816: 29 F0 AND #$F0 C3/8818: 4A LSR C3/8819: 4A LSR C3/881A: AA TAX C3/881B: BF 54 88 C3 LDA $C38854,X C3/881F: 8F 8B 9E 7E STA $7E9E8B C3/8823: BF 55 88 C3 LDA $C38855,X C3/8827: 8F 8C 9E 7E STA $7E9E8C C3/882B: BF 56 88 C3 LDA $C38856,X C3/882F: 8F 8D 9E 7E STA $7E9E8D C3/8833: 4C 47 88 JMP $8847 ; [ Draw Item Stat Modifier Text ] C3/8836: AA TAX C3/8837: BF 80 88 C3 LDA $C38880,X C3/883B: 8F 8B 9E 7E STA $7E9E8B C3/883F: BF 81 88 C3 LDA $C38881,X C3/8843: 8F 8C 9E 7E STA $7E9E8C C3/8847: A0 89 9E LDY #$9E89 C3/884A: 84 E7 STY $E7 C3/884C: A9 7E LDA #$7E C3/884E: 85 E9 STA $E9 C3/8850: 20 FF 02 JSR $02FF ; draw positioned text C3/8853: 60 RTS ; C3/8854: " 0", "+10", "+20", "+30", "+40", "+50", "-10", "-20", "-30", "-40", "-50" C3/8854: .DB $FF, $FF, $B4, $00 C3/8858: .DB $CA, $B5, $B4, $00 C3/885C: .DB $CA, $B6, $B4, $00 C3/8860: .DB $CA, $B7, $B4, $00 C3/8864: .DB $CA, $B8, $B4, $00 C3/8868: .DB $CA, $B9, $B4, $00 C3/886C: .DB $C4, $B5, $B4, $00 C3/8870: .DB $C4, $B6, $B4, $00 C3/8874: .DB $C4, $B7, $B4, $00 C3/8878: .DB $C4, $B8, $B4, $00 C3/887C: .DB $C4, $B9, $B4, $00 ; C3/8880: " 0", "+1", "+2", "+3", "+4", "+5", "-1", "-2", "-3", "-4", "-5" C3/8880: .DB $FF, $B4, $CA, $B5, $CA, $B6, $CA, $B7, $CA, $B8, $CA, $B9, $CA, $BA, $CA, $BB C3/8890: .DB $FF, $B4, $C4, $B5, $CA, $B6, $C4, $B7, $C4, $B8, $C4, $B9, $C4, $BA, $C4, $BB ; [ Draw Weapon Elements ] ; also draws 50% elements for defensive items C3/88A0: AE 34 21 LDX $2134 C3/88A3: 7B TDC C3/88A4: BF 0F 50 D8 LDA $D8500F,X ; element C3/88A8: 20 AE 88 JSR $88AE C3/88AB: 4C CE 88 JMP $88CE ; [ ] C3/88AE: A0 8D AA LDY #$AA8D C3/88B1: 8C 81 21 STY $2181 C3/88B4: 64 E0 STZ $E0 C3/88B6: A0 08 00 LDY #$0008 C3/88B9: 2A ROL C3/88BA: 90 07 BCC $88C3 C3/88BC: 48 PHA C3/88BD: A5 E0 LDA $E0 C3/88BF: 8D 80 21 STA $2180 C3/88C2: 68 PLA C3/88C3: E6 E0 INC $E0 C3/88C5: 88 DEY C3/88C6: D0 F1 BNE $88B9 C3/88C8: A9 FF LDA #$FF C3/88CA: 8D 80 21 STA $2180 C3/88CD: 60 RTS ; [ ] ; weapon/50% elements C3/88CE: A2 CD 7B LDX #$7BCD C3/88D1: 86 EB STX $EB C3/88D3: A9 7E LDA #$7E C3/88D5: 85 ED STA $ED C3/88D7: 4C FE 88 JMP $88FE ; absorbed elements C3/88DA: A2 E9 7B LDX #$7BE9 C3/88DD: 86 EB STX $EB C3/88DF: A9 7E LDA #$7E C3/88E1: 85 ED STA $ED C3/88E3: 4C FE 88 JMP $88FE ; no effect elements C3/88E6: A2 CD 7C LDX #$7CCD C3/88E9: 86 EB STX $EB C3/88EB: A9 7E LDA #$7E C3/88ED: 85 ED STA $ED C3/88EF: 4C FE 88 JMP $88FE ; weak point elements C3/88F2: A2 E9 7C LDX #$7CE9 C3/88F5: 86 EB STX $EB C3/88F7: A9 7E LDA #$7E C3/88F9: 85 ED STA $ED C3/88FB: 4C FE 88 JMP $88FE C3/88FE: 7B TDC C3/88FF: AA TAX C3/8900: 7B TDC C3/8901: BF 8D AA 7E LDA $7EAA8D,X C3/8905: 30 1F BMI $8926 C3/8907: DA PHX C3/8908: C2 20 REP #$20 C3/890A: 0A ASL C3/890B: AA TAX C3/890C: BF 27 89 C3 LDA $C38927,X C3/8910: 85 E0 STA $E0 C3/8912: 20 37 89 JSR $8937 C3/8915: A5 EB LDA $EB C3/8917: 18 CLC C3/8918: 69 04 00 ADC #$0004 C3/891B: 85 EB STA $EB C3/891D: E2 20 SEP #$20 C3/891F: FA PLX C3/8920: E8 INX C3/8921: E0 06 00 CPX #$0006 C3/8924: D0 DA BNE $8900 C3/8926: 60 RTS C3/8927: .DW $3580, $3584, $3588, $358C, $3590, $3594, $3598, $359C ; [ ] C3/8937: 7B TDC C3/8938: A8 TAY C3/8939: A5 E0 LDA $E0 C3/893B: 97 EB STA [$EB],Y C3/893D: E6 E0 INC $E0 C3/893F: A0 40 00 LDY #$0040 C3/8942: A5 E0 LDA $E0 C3/8944: 97 EB STA [$EB],Y C3/8946: E6 E0 INC $E0 C3/8948: A0 02 00 LDY #$0002 C3/894B: A5 E0 LDA $E0 C3/894D: 97 EB STA [$EB],Y C3/894F: E6 E0 INC $E0 C3/8951: A0 42 00 LDY #$0042 C3/8954: A5 E0 LDA $E0 C3/8956: 97 EB STA [$EB],Y C3/8958: 60 RTS ; [ Draw Defensive Elements ] C3/8959: AE 34 21 LDX $2134 C3/895C: 7B TDC C3/895D: BF 16 50 D8 LDA $D85016,X ; absorbed C3/8961: 20 AE 88 JSR $88AE C3/8964: 20 DA 88 JSR $88DA C3/8967: AE 34 21 LDX $2134 C3/896A: 7B TDC C3/896B: BF 17 50 D8 LDA $D85017,X ; no effect C3/896F: 20 AE 88 JSR $88AE C3/8972: 20 E6 88 JSR $88E6 C3/8975: AE 34 21 LDX $2134 C3/8978: 7B TDC C3/8979: BF 18 50 D8 LDA $D85018,X ; weak point C3/897D: 20 AE 88 JSR $88AE C3/8980: 4C F2 88 JMP $88F2 ; [ Menu State $64: Item Details ] C3/8983: A5 08 LDA $08 C3/8985: 89 80 BIT #$80 C3/8987: D0 06 BNE $898F ; branch if A button is pressed C3/8989: A5 09 LDA $09 C3/898B: 89 02 BIT #$02 C3/898D: F0 19 BEQ $89A8 ; branch if left button is not pressed C3/898F: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/8992: A9 FF LDA #$FF C3/8994: 85 99 STA $99 C3/8996: A9 0A LDA #$0A C3/8998: 85 20 STA $20 C3/899A: A0 F4 FF LDY #$FFF4 C3/899D: 84 9C STY $9C C3/899F: A9 5E LDA #$5E ; next menu state $5E (item stats) C3/89A1: 85 27 STA $27 C3/89A3: A9 65 LDA #$65 ; menu state $65 (scroll menu horizontal) C3/89A5: 85 26 STA $26 C3/89A7: 60 RTS C3/89A8: A5 09 LDA $09 C3/89AA: 89 80 BIT #$80 C3/89AC: F0 2F BEQ $89DD ; branch if B button is not pressed C3/89AE: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/89B1: A9 FF LDA #$FF C3/89B3: 85 99 STA $99 C3/89B5: A2 49 7B LDX #$7B49 C3/89B8: 8E 81 21 STX $2181 C3/89BB: A2 80 02 LDX #$0280 C3/89BE: 9C 80 21 STZ $2180 C3/89C1: 9C 80 21 STZ $2180 C3/89C4: CA DEX C3/89C5: D0 F7 BNE $89BE C3/89C7: A9 04 LDA #$04 C3/89C9: 04 45 TSB $45 C3/89CB: 20 DE 89 JSR $89DE C3/89CE: 20 39 0F JSR $0F39 C3/89D1: 20 68 13 JSR $1368 ; wait for vblank C3/89D4: 7B TDC C3/89D5: 8F 10 9A 7E STA $7E9A10 C3/89D9: A9 08 LDA #$08 ; menu state $08 (item, select) C3/89DB: 85 26 STA $26 C3/89DD: 60 RTS ; [ ] C3/89DE: 20 1F 09 JSR $091F ; init scroll indicator thread C3/89E1: A9 10 LDA #$10 C3/89E3: 14 45 TRB $45 C3/89E5: 60 RTS ; [ Menu State $5E: Item Stats ] C3/89E6: A5 09 LDA $09 C3/89E8: 89 80 BIT #$80 C3/89EA: D0 06 BNE $89F2 ; branch if A button is pressed C3/89EC: A5 09 LDA $09 C3/89EE: 89 01 BIT #$01 C3/89F0: F0 1B BEQ $8A0D ; branch if right button is not pressed C3/89F2: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/89F5: A9 0A LDA #$0A C3/89F7: 85 20 STA $20 C3/89F9: A0 0C 00 LDY #$000C C3/89FC: 84 9C STY $9C C3/89FE: A9 05 LDA #$05 C3/8A00: 14 46 TRB $46 C3/8A02: A9 64 LDA #$64 ; next menu state $64 (item details) C3/8A04: 85 27 STA $27 C3/8A06: A9 65 LDA #$65 ; menu state $65 (scroll menu horizontal) C3/8A08: 85 26 STA $26 C3/8A0A: 20 95 85 JSR $8595 ; init flashing left cursor C3/8A0D: 60 RTS ; [ ] C3/8A0E: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/8A11: A0 3B 8A LDY #$8A3B C3/8A14: 20 41 03 JSR $0341 ; draw window C3/8A17: A0 3F 8A LDY #$8A3F C3/8A1A: 20 41 03 JSR $0341 ; draw window C3/8A1D: A0 43 8A LDY #$8A43 C3/8A20: 20 41 03 JSR $0341 ; draw window C3/8A23: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/8A26: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/8A29: A0 C0 FF LDY #$FFC0 C3/8A2C: 84 35 STY $35 C3/8A2E: A9 02 LDA #$02 C3/8A30: 04 45 TSB $45 C3/8A32: 20 8A 31 JSR $318A C3/8A35: 20 47 8A JSR $8A47 C3/8A38: 4C 9F 31 JMP $319F C3/8A3B: .DB $9D, $58, $13, $18 C3/8A3F: .DB $8B, $58, $0D, $02 C3/8A43: .DB $8B, $59, $07, $03 ; [ ] C3/8A47: A9 20 LDA #$20 C3/8A49: 85 29 STA $29 C3/8A4B: A0 41 8E LDY #$8E41 C3/8A4E: 20 F9 02 JSR $02F9 ; draw positioned text C3/8A51: C2 20 REP #$20 C3/8A53: A9 0B 79 LDA #$790B C3/8A56: 8F 89 9E 7E STA $7E9E89 C3/8A5A: E2 20 SEP #$20 C3/8A5C: 7B TDC C3/8A5D: A5 4B LDA $4B C3/8A5F: A8 TAY C3/8A60: 20 B9 80 JSR $80B9 C3/8A63: 7B TDC C3/8A64: 8F 98 9E 7E STA $7E9E98 C3/8A68: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/8A6B: 80 00 BRA $8A6D ; [ Draw Item Quantity Text ] C3/8A6D: A9 20 LDA #$20 ; white text C3/8A6F: 85 29 STA $29 C3/8A71: 7B TDC C3/8A72: A5 28 LDA $28 C3/8A74: A8 TAY C3/8A75: B9 69 19 LDA $1969,Y ; item quantity C3/8A78: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/8A7B: A2 93 7A LDX #$7A93 C3/8A7E: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/8A81: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) ; [ Menu State $6F: Use Item (character select, init) ] C3/8A84: 20 76 2A JSR $2A76 C3/8A87: 20 0E 8A JSR $8A0E C3/8A8A: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/8A8D: A9 40 LDA #$40 C3/8A8F: 04 45 TSB $45 C3/8A91: A9 70 LDA #$70 C3/8A93: 4C A5 2A JMP $2AA5 ; [ Menu State $70: Use Item (character select) ] C3/8A96: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/8A99: 20 61 0F JSR $0F61 C3/8A9C: A5 08 LDA $08 C3/8A9E: 89 80 BIT #$80 C3/8AA0: F0 0A BEQ $8AAC ; branch if A button is not pressed C3/8AA2: 20 2B 8C JSR $8C2B ; get item index C3/8AA5: C9 E7 CMP #$E7 C3/8AA7: F0 17 BEQ $8AC0 ; branch if rename card C3/8AA9: 20 E7 8A JSR $8AE7 ; try to use item C3/8AAC: A5 09 LDA $09 C3/8AAE: 89 80 BIT #$80 C3/8AB0: F0 0D BEQ $8ABF ; branch if B button is not pressed C3/8AB2: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/8AB5: A9 42 LDA #$42 C3/8AB7: 14 45 TRB $45 C3/8AB9: A9 77 LDA #$77 ; menu state $77 (return to item select) C3/8ABB: 85 27 STA $27 C3/8ABD: 64 26 STZ $26 C3/8ABF: 60 RTS ; item $E7: Rename Card C3/8AC0: 20 0B 2D JSR $2D0B ; get pointer to selected character data C3/8AC3: B9 00 00 LDA $0000,Y ; actor index C3/8AC6: C9 0E CMP #$0E C3/8AC8: B0 16 BCS $8AE0 ; branch if actor index >= 14 C3/8ACA: 8C 06 02 STY $0206 C3/8ACD: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/8AD0: A9 FE LDA #$FE ; return code $FE (rename card) C3/8AD2: 8D 05 02 STA $0205 C3/8AD5: A9 FF LDA #$FF ; terminate menu after fade out C3/8AD7: 85 27 STA $27 C3/8AD9: 64 26 STZ $26 ; menu state $00 (fade out) C3/8ADB: A9 E7 LDA #$E7 C3/8ADD: 4C 97 9D JMP $9D97 ; remove item from inventory C3/8AE0: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/8AE3: 20 5D 30 JSR $305D ; create mosaic thread C3/8AE6: 60 RTS ; [ Try to Use Item ] C3/8AE7: 20 2B 8C JSR $8C2B ; get item index C3/8AEA: 20 0B 2D JSR $2D0B ; get pointer to selected character data C3/8AED: 20 3D 8B JSR $8B3D ; check if item can be used C3/8AF0: 90 18 BCC $8B0A ; branch if not valid C3/8AF2: 20 E5 0E JSR $0EE5 ; play cure/item sound effect C3/8AF5: 20 11 8B JSR $8B11 ; use restorative item C3/8AF8: 20 6D 8A JSR $8A6D ; draw item quantity text C3/8AFB: 20 01 2C JSR $2C01 C3/8AFE: 7B TDC C3/8AFF: A5 28 LDA $28 ; item index C3/8B01: A8 TAY C3/8B02: B9 69 19 LDA $1969,Y ; remaining quantity C3/8B05: D0 09 BNE $8B10 ; loop if there are items left C3/8B07: 4C B5 8A JMP $8AB5 ; otherwise, return to item select C3/8B0A: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/8B0D: 20 5D 30 JSR $305D ; create mosaic thread C3/8B10: 60 RTS ; [ Use Restorative Item ] C3/8B11: 20 1A 8B JSR $8B1A ; restore hp/mp/status (item) C3/8B14: 20 2B 8C JSR $8C2B ; get item index C3/8B17: 4C 97 9D JMP $9D97 ; remove item from inventory ; [ Restore HP/MP/Status (item) ] ItemExec: C3/8B1A: B9 14 00 LDA $0014,Y ; copy status 1 & 4 C3/8B1D: 85 F8 STA $F8 C3/8B1F: B9 15 00 LDA $0015,Y C3/8B22: 85 FB STA $FB C3/8B24: 5A PHY C3/8B25: 20 2B 8C JSR $8C2B ; get item index C3/8B28: A2 02 00 LDX #$0002 ; 2: item effect C3/8B2B: 22 09 00 C2 JSL $C20009 ; calculate item/spell effect C3/8B2F: 7A PLY C3/8B30: A5 FC LDA $FC C3/8B32: 99 14 00 STA $0014,Y ; set status 1 & 4 C3/8B35: A5 FF LDA $FF C3/8B37: 99 15 00 STA $0015,Y C3/8B3A: 4C 33 8C JMP $8C33 ; restore hp/mp (item) ; [ Check if Item Can Be Used ] ; +Y: pointer to character data (+$1600) ; carry: clear = invalid, set = valid (out) C3/8B3D: B9 14 00 LDA $0014,Y ; status 1 C3/8B40: 29 80 AND #$80 C3/8B42: D0 41 BNE $8B85 ; branch if character has wound status ; selected character does not have wound status C3/8B44: 20 2B 8C JSR $8C2B ; get item index C3/8B47: C9 FE CMP #$FE ; dried meat C3/8B49: F0 79 BEQ $8BC4 C3/8B4B: C9 E8 CMP #$E8 ; tonic C3/8B4D: F0 75 BEQ $8BC4 C3/8B4F: C9 E9 CMP #$E9 ; potion C3/8B51: F0 71 BEQ $8BC4 C3/8B53: C9 EA CMP #$EA ; x-potion C3/8B55: F0 6D BEQ $8BC4 C3/8B57: C9 EB CMP #$EB ; tincture C3/8B59: F0 7A BEQ $8BD5 C3/8B5B: C9 EC CMP #$EC ; ether C3/8B5D: F0 76 BEQ $8BD5 C3/8B5F: C9 ED CMP #$ED ; x-ether C3/8B61: F0 72 BEQ $8BD5 C3/8B63: C9 F1 CMP #$F1 ; revivify C3/8B65: F0 27 BEQ $8B8E C3/8B67: C9 F2 CMP #$F2 ; antidote C3/8B69: F0 50 BEQ $8BBB C3/8B6B: C9 F3 CMP #$F3 ; eyedrop C3/8B6D: F0 28 BEQ $8B97 C3/8B6F: C9 F4 CMP #$F4 ; soft C3/8B71: F0 2D BEQ $8BA0 C3/8B73: C9 F5 CMP #$F5 ; remedy C3/8B75: F0 3B BEQ $8BB2 C3/8B77: C9 EE CMP #$EE ; elixir C3/8B79: F0 6A BEQ $8BE5 C3/8B7B: C9 F8 CMP #$F8 ; green cherry C3/8B7D: F0 2A BEQ $8BA9 C3/8B7F: C9 F6 CMP #$F6 ; sleeping bag C3/8B81: F0 4F BEQ $8BD2 C3/8B83: 80 4B BRA $8BD0 ; all other items are invalid ; selected character has wound status C3/8B85: 20 2B 8C JSR $8C2B ; get item index C3/8B88: C9 F0 CMP #$F0 ; fenix down C3/8B8A: F0 57 BEQ $8BE3 C3/8B8C: 80 42 BRA $8BD0 ; revivify C3/8B8E: B9 14 00 LDA $0014,Y C3/8B91: 29 02 AND #$02 C3/8B93: F0 3B BEQ $8BD0 C3/8B95: 80 4C BRA $8BE3 ; eyedrop C3/8B97: B9 14 00 LDA $0014,Y C3/8B9A: 29 01 AND #$01 C3/8B9C: F0 32 BEQ $8BD0 C3/8B9E: 80 43 BRA $8BE3 ; soft C3/8BA0: B9 14 00 LDA $0014,Y C3/8BA3: 29 40 AND #$40 C3/8BA5: F0 29 BEQ $8BD0 C3/8BA7: 80 3A BRA $8BE3 ; green cherry C3/8BA9: B9 14 00 LDA $0014,Y C3/8BAC: 29 20 AND #$20 C3/8BAE: F0 20 BEQ $8BD0 C3/8BB0: 80 31 BRA $8BE3 ; remedy C3/8BB2: B9 14 00 LDA $0014,Y C3/8BB5: 29 65 AND #$65 ; isolate petrify, imp, poison, dark C3/8BB7: F0 17 BEQ $8BD0 C3/8BB9: 80 28 BRA $8BE3 ; antidote C3/8BBB: B9 14 00 LDA $0014,Y C3/8BBE: 29 04 AND #$04 C3/8BC0: F0 0E BEQ $8BD0 C3/8BC2: 80 1F BRA $8BE3 ; dried meat, tonic, potion, x-potion C3/8BC4: B9 14 00 LDA $0014,Y C3/8BC7: 29 C2 AND #$C2 C3/8BC9: D0 05 BNE $8BD0 C3/8BCB: 20 9A 2B JSR $2B9A ; check current hp vs max C3/8BCE: 90 13 BCC $8BE3 C3/8BD0: 18 CLC ; item is invalid C3/8BD1: 60 RTS ; sleeping bag C3/8BD2: 4C 11 8C JMP $8C11 ; tincture, ether, x-ether C3/8BD5: B9 14 00 LDA $0014,Y C3/8BD8: 29 C2 AND #$C2 ; isolate wound, petrify, and zombie C3/8BDA: D0 F4 BNE $8BD0 C3/8BDC: 20 BC 2B JSR $2BBC ; check current mp vs max C3/8BDF: 90 02 BCC $8BE3 C3/8BE1: 80 ED BRA $8BD0 ; fenix down C3/8BE3: 38 SEC ; item is valid C3/8BE4: 60 RTS ; elixir C3/8BE5: B9 14 00 LDA $0014,Y C3/8BE8: 29 C2 AND #$C2 ; isolate wound, petrify, and zombie C3/8BEA: D0 E4 BNE $8BD0 C3/8BEC: 20 9A 2B JSR $2B9A ; check current hp vs max C3/8BEF: 90 F2 BCC $8BE3 C3/8BF1: 20 BC 2B JSR $2BBC ; check current mp vs max C3/8BF4: 90 ED BCC $8BE3 C3/8BF6: 80 D8 BRA $8BD0 ; tent/megalixir ??? (unused) C3/8BF8: 7B TDC C3/8BF9: AA TAX C3/8BFA: 86 ED STX $ED C3/8BFC: BC 6D 00 LDY $006D,X ; check each character in the party C3/8BFF: F0 05 BEQ $8C06 C3/8C01: 20 E5 8B JSR $8BE5 ; check if elixir is valid C3/8C04: B0 DD BCS $8BE3 C3/8C06: A6 ED LDX $ED C3/8C08: E8 INX ; next character C3/8C09: E8 INX C3/8C0A: E0 08 00 CPX #$0008 C3/8C0D: D0 EB BNE $8BFA C3/8C0F: 80 BF BRA $8BD0 ; sleeping bag C3/8C11: B9 14 00 LDA $0014,Y C3/8C14: 29 F7 AND #$F7 ; isolate wound, petrify, imp, clear, poison, zombie, dark C3/8C16: D0 CB BNE $8BE3 C3/8C18: B9 15 00 LDA $0015,Y C3/8C1B: 29 80 AND #$80 ; isolate float C3/8C1D: D0 C4 BNE $8BE3 C3/8C1F: 20 9A 2B JSR $2B9A ; check current hp vs max C3/8C22: 90 BF BCC $8BE3 C3/8C24: 20 BC 2B JSR $2BBC ; check current mp vs max C3/8C27: 90 BA BCC $8BE3 C3/8C29: 80 A5 BRA $8BD0 ; [ Get Item Index ] ; $28: inventory slot itemno_get: C3/8C2B: 7B TDC C3/8C2C: A5 28 LDA $28 C3/8C2E: AA TAX C3/8C2F: BD 69 18 LDA $1869,X C3/8C32: 60 RTS ; [ Restore HP/MP (item) ] LPitem_exec: C3/8C33: 5A PHY C3/8C34: 20 2B 8C JSR $8C2B ; get item index C3/8C37: 20 21 83 JSR $8321 ; calculate pointer to item data C3/8C3A: 7A PLY C3/8C3B: AE 34 21 LDX $2134 C3/8C3E: 86 B0 STX $B0 C3/8C40: 20 CD 8C JSR $8CCD ; load item hp/mp restored C3/8C43: BF 13 50 D8 LDA $D85013,X ; item properties C3/8C47: 30 2D BMI $8C76 ; branch if item affects 16ths of max value ; restore specific value C3/8C49: 29 08 AND #$08 C3/8C4B: F0 0F BEQ $8C5C ; branch if item doesn't restore hp C3/8C4D: C2 21 REP #$21 C3/8C4F: A5 B2 LDA $B2 C3/8C51: 79 09 00 ADC $0009,Y ; add hp C3/8C54: 99 09 00 STA $0009,Y C3/8C57: E2 20 SEP #$20 C3/8C59: 20 9A 2B JSR $2B9A ; check current hp vs max C3/8C5C: A6 B0 LDX $B0 C3/8C5E: BF 13 50 D8 LDA $D85013,X C3/8C62: 29 10 AND #$10 C3/8C64: F0 0F BEQ $8C75 ; branch if item doesn't restore mp C3/8C66: C2 21 REP #$21 C3/8C68: A5 B2 LDA $B2 C3/8C6A: 79 0D 00 ADC $000D,Y ; add mp C3/8C6D: 99 0D 00 STA $000D,Y C3/8C70: E2 20 SEP #$20 C3/8C72: 20 BC 2B JSR $2BBC ; check current mp vs max C3/8C75: 60 RTS ; restore 16ths of max value C3/8C76: BF 13 50 D8 LDA $D85013,X C3/8C7A: 29 08 AND #$08 C3/8C7C: F0 22 BEQ $8CA0 ; branch if item doesn't restore hp C3/8C7E: B9 0B 00 LDA $000B,Y C3/8C81: 85 F3 STA $F3 C3/8C83: B9 0C 00 LDA $000C,Y C3/8C86: 85 F4 STA $F4 C3/8C88: 20 65 0D JSR $0D65 ; calculate max hp/mp w/ boost C3/8C8B: 20 92 0D JSR $0D92 ; check max hp (9999) C3/8C8E: 20 D6 8C JSR $8CD6 ; calculate fraction of max hp/mp restored C3/8C91: C2 21 REP #$21 C3/8C93: A5 E9 LDA $E9 C3/8C95: 79 09 00 ADC $0009,Y ; add to hp C3/8C98: 99 09 00 STA $0009,Y C3/8C9B: E2 20 SEP #$20 C3/8C9D: 20 9A 2B JSR $2B9A ; check current hp vs max C3/8CA0: A6 B0 LDX $B0 C3/8CA2: BF 13 50 D8 LDA $D85013,X C3/8CA6: 29 10 AND #$10 C3/8CA8: F0 22 BEQ $8CCC ; branch if item doesn't restore mp C3/8CAA: B9 0F 00 LDA $000F,Y C3/8CAD: 85 F3 STA $F3 C3/8CAF: B9 10 00 LDA $0010,Y C3/8CB2: 85 F4 STA $F4 C3/8CB4: 20 65 0D JSR $0D65 ; calculate max hp/mp w/ boost C3/8CB7: 20 9F 0D JSR $0D9F ; check max mp (999) C3/8CBA: 20 D6 8C JSR $8CD6 ; calculate fraction of max hp/mp restored C3/8CBD: C2 21 REP #$21 C3/8CBF: A5 E9 LDA $E9 C3/8CC1: 79 0D 00 ADC $000D,Y ; add to mp C3/8CC4: 99 0D 00 STA $000D,Y C3/8CC7: E2 20 SEP #$20 C3/8CC9: 20 BC 2B JSR $2BBC ; check current mp vs max C3/8CCC: 60 RTS ; [ Load Item HP/MP Restored ] LPget: C3/8CCD: BF 14 50 D8 LDA $D85014,X ; hp/mp restored C3/8CD1: 85 B2 STA $B2 C3/8CD3: 64 B3 STZ $B3 C3/8CD5: 60 RTS ; [ Calculate Fraction of Max HP/MP Restored ] par16: C3/8CD6: AD 12 42 LDA $4212 C3/8CD9: 29 40 AND #$40 C3/8CDB: F0 F9 BEQ $8CD6 C3/8CDD: A5 F3 LDA $F3 C3/8CDF: 8D 1B 21 STA $211B C3/8CE2: A5 F4 LDA $F4 C3/8CE4: 8D 1B 21 STA $211B C3/8CE7: A5 B2 LDA $B2 C3/8CE9: 8D 1C 21 STA $211C C3/8CEC: 8D 1C 21 STA $211C C3/8CEF: AD 36 21 LDA $2136 C3/8CF2: 85 EB STA $EB C3/8CF4: 64 EC STZ $EC C3/8CF6: C2 20 REP #$20 C3/8CF8: AD 34 21 LDA $2134 C3/8CFB: 85 E9 STA $E9 C3/8CFD: 46 EB LSR $EB C3/8CFF: 66 E9 ROR $E9 C3/8D01: 46 EB LSR $EB C3/8D03: 66 E9 ROR $E9 C3/8D05: 46 EB LSR $EB C3/8D07: 66 E9 ROR $E9 C3/8D09: 46 EB LSR $EB C3/8D0B: 66 E9 ROR $E9 C3/8D0D: E2 20 SEP #$20 C3/8D0F: 60 RTS ; "USE", "ARRANGE", "RARE" C3/8D10: .DW $8D1D, $8D23, $8D2D ; C3/8D16: "Item" ; C3/8D1D: "USE" ; C3/8D23: "ARRANGE" ; C3/8D2D: "RARE" ; C3/8D34: " can be used by:" C3/8D16: .DB $0D, $79, $88, $AD, $9E, $A6, $00 C3/8D1D: .DB $1D, $79, $94, $92, $84, $00 C3/8D23: .DB $27, $79, $80, $91, $91, $80, $8D, $86, $84, $00 C3/8D2D: .DB $39, $79, $91, $80, $91, $84, $00 C3/8D34: .DB $FF, $9C, $9A, $A7, $FF, $9B, $9E, $FF, $AE, $AC, $9E, $9D, $FF, $9B, $B2, $C1, $00 ; stat names C3/8D45: .DW $8D77, $8D7F, $8D89, $8D93, $8D9D, $8DA7, $8DAB, $8DAF C3/8D55: .DW $8DB3, $8DB7, $8DBB, $8DBF, $8DC3, $8DC7 ; remaining stat names C3/8D61: .DW $8DCB, $8DD3, $8DDD, $8DE7 ; element defense type names C3/8D69: .DW $8DF1, $8DFB, $8E07, $8E13 ; C3/8D71: "???" ; C3/8D77: "Vigor" ; C3/8D7F: "Stamina" ; C3/8D89: "Mag.Pwr" ; C3/8D93: "Evade %" ; C3/8D9D: "MBlock%" ; C3/8DA7-C3/8DC7: ".." ; C3/8DCB: "Speed" ; C3/8DD3: "Bat.Pwr" ; C3/8DDD: "Defense" ; C3/8DE7: "Mag.Def" ; C3/8DF1: "50% Dmg" ; C3/8DFB: "Absorb" ; C3/8E07: "No Effect" ; C3/8E13: "Weak pt" ; C3/8E1D: "Attack" ; C3/8E26: "SwdTech" ; C3/8E30: "Runic" ; C3/8E38: "2-hand" ; C3/8E41: "Owned:" ; C3/8E4A: " " C3/8D71: .DB $43, $86, $BF, $BF, $BF, $00 C3/8D77: .DB $2F, $84, $95, $A2, $A0, $A8, $AB, $00 C3/8D7F: .DB $2F, $85, $92, $AD, $9A, $A6, $A2, $A7, $9A, $00 C3/8D89: .DB $AF, $85, $8C, $9A, $A0, $C5, $8F, $B0, $AB, $00 C3/8D93: .DB $2F, $87, $84, $AF, $9A, $9D, $9E, $FF, $CD, $00 C3/8D9D: .DB $2F, $88, $8C, $81, $A5, $A8, $9C, $A4, $CD, $00 C3/8DA7: .DB $3F, $84, $D3, $00 C3/8DAB: .DB $BF, $84, $D3, $00 C3/8DAF: .DB $3F, $85, $D3, $00 C3/8DB3: .DB $BF, $85, $D3, $00 C3/8DB7: .DB $3F, $86, $D3, $00 C3/8DBB: .DB $BF, $86, $D3, $00 C3/8DBF: .DB $3F, $87, $D3, $00 C3/8DC3: .DB $BF, $87, $D3, $00 C3/8DC7: .DB $3F, $88, $D3, $00 C3/8DCB: .DB $AF, $84, $92, $A9, $9E, $9E, $9D, $00 C3/8DD3: .DB $2F, $86, $81, $9A, $AD, $C5, $8F, $B0, $AB, $00 C3/8DDD: .DB $AF, $86, $83, $9E, $9F, $9E, $A7, $AC, $9E, $00 C3/8DE7: .DB $AF, $87, $8C, $9A, $A0, $C5, $83, $9E, $9F, $00 C3/8DF1: .DB $8D, $7B, $B9, $B4, $CD, $FF, $83, $A6, $A0, $00 C3/8DFB: .DB $A9, $7B, $80, $9B, $AC, $A8, $AB, $9B, $FF, $87, $8F, $00 C3/8E07: .DB $8D, $7C, $8D, $A8, $FF, $84, $9F, $9F, $9E, $9C, $AD, $00 C3/8E13: .DB $A9, $7C, $96, $9E, $9A, $A4, $FF, $A9, $AD, $00 C3/8E1D: .DB $8D, $7B, $80, $AD, $AD, $9A, $9C, $A4, $00 C3/8E26: .DB $2F, $82, $92, $B0, $9D, $93, $9E, $9C, $A1, $00 C3/8E30: .DB $AF, $82, $91, $AE, $A7, $A2, $9C, $00 C3/8E38: .DB $2F, $83, $B6, $C4, $A1, $9A, $A7, $9D, $00 C3/8E41: .DB $0D, $7A, $8E, $B0, $A7, $9E, $9D, $C1, $00 C3/8E4A: .DB $BF, $7A, $FF, $FF, $FF, $00 ; [ Init Cursor (equip, optimum, rmove, empty) ] C3/8E50: A0 5F 8E LDY #$8E5F C3/8E53: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (equip, optimum, rmove, empty) ] C3/8E56: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/8E59: A0 64 8E LDY #$8E64 C3/8E5C: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/8E5F: .DB $01, $00, $00, $04, $01 C3/8E64: .DW $1000, $1038, $1080, $10B8 ; [ Init Cursor (equip/relic slot select) ] C3/8E6C: A0 7B 8E LDY #$8E7B C3/8E6F: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (equip/relic slot select) ] C3/8E72: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/8E75: A0 80 8E LDY #$8E80 C3/8E78: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/8E7B: .DB $80, $00, $00, $01, $04 C3/8E80: .DW $2C00, $3800, $4400, $5000 ; [ Init Cursor (equip/relic item select, scrolling page) ] C3/8E88: A0 A6 8E LDY #$8EA6 C3/8E8B: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (equip/relic item select, scrolling page) ] C3/8E8E: 20 C7 81 JSR $81C7 ; update cursor movement (scrolling page) C3/8E91: A0 AB 8E LDY #$8EAB C3/8E94: 4C 48 06 JMP $0648 ; update cursor position (scrolling page) ; [ Init Cursor (equip/relic item select, single page) ] C3/8E97: A0 A6 8E LDY #$8EA6 C3/8E9A: 4C FE 05 JMP $05FE ; init cursor ; [ Update Cursor (equip/relic item select, single page) ] C3/8E9D: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/8EA0: A0 AB 8E LDY #$8EAB C3/8EA3: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/8EA6: .DB $81, $00, $00, $01, $09 C3/8EAB: .DW $6800, $7400, $8000, $8C00, $9800, $A400, $B000, $BC00 C3/8EBB: .DW $C800 C3/8EBD: A0 CC 8E LDY #$8ECC C3/8EC0: 4C FE 05 JMP $05FE ; init cursor C3/8EC3: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/8EC6: A0 D1 8E LDY #$8ED1 C3/8EC9: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/8ECC: .DB $01, $00, $00, $02, $01 C3/8ED1: .DW $1010, $1048 C3/8ED5: A0 E4 8E LDY #$8EE4 C3/8ED8: 4C FE 05 JMP $05FE ; init cursor C3/8EDB: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/8EDE: A0 E9 8E LDY #$8EE9 C3/8EE1: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/8EE4: .DB $80, $00, $00, $01, $02 C3/8EE9: .DW $4400, $5000 C3/8EED: A9 02 LDA #$02 C3/8EEF: 8D 07 21 STA $2107 C3/8EF2: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/8EF5: A0 2E 90 LDY #$902E C3/8EF8: 20 41 03 JSR $0341 ; draw window C3/8EFB: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/8EFE: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/8F01: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/8F04: 20 1C 8F JSR $8F1C C3/8F07: 20 36 8F JSR $8F36 C3/8F0A: 20 52 8F JSR $8F52 C3/8F0D: 20 6E 8F JSR $8F6E C3/8F10: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/8F13: 20 36 0E JSR $0E36 ; copy bg1 data to vram (top left/bottom right) C3/8F16: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/8F19: 4C 6E 0E JMP $0E6E ; copy bg3 data to vram (top screens) C3/8F1C: A5 69 LDA $69 C3/8F1E: 30 15 BMI $8F35 C3/8F20: A6 6D LDX $6D C3/8F22: 86 67 STX $67 C3/8F24: A9 20 LDA #$20 C3/8F26: 85 29 STA $29 C3/8F28: A0 0D 39 LDY #$390D C3/8F2B: 20 CF 34 JSR $34CF ; draw character name C3/8F2E: 64 28 STZ $28 C3/8F30: A9 04 LDA #$04 C3/8F32: 20 8A 8F JSR $8F8A C3/8F35: 60 RTS C3/8F36: A5 6A LDA $6A C3/8F38: 30 17 BMI $8F51 C3/8F3A: A6 6F LDX $6F C3/8F3C: 86 67 STX $67 C3/8F3E: A9 20 LDA #$20 C3/8F40: 85 29 STA $29 C3/8F42: A0 0D 3B LDY #$3B0D C3/8F45: 20 CF 34 JSR $34CF ; draw character name C3/8F48: A9 01 LDA #$01 C3/8F4A: 85 28 STA $28 C3/8F4C: A9 0C LDA #$0C C3/8F4E: 20 8A 8F JSR $8F8A C3/8F51: 60 RTS C3/8F52: A5 6B LDA $6B C3/8F54: 30 17 BMI $8F6D C3/8F56: A6 71 LDX $71 C3/8F58: 86 67 STX $67 C3/8F5A: A9 20 LDA #$20 C3/8F5C: 85 29 STA $29 C3/8F5E: A0 0D 3D LDY #$3D0D C3/8F61: 20 CF 34 JSR $34CF ; draw character name C3/8F64: A9 02 LDA #$02 C3/8F66: 85 28 STA $28 C3/8F68: A9 14 LDA #$14 C3/8F6A: 20 8A 8F JSR $8F8A C3/8F6D: 60 RTS C3/8F6E: A5 6C LDA $6C C3/8F70: 30 17 BMI $8F89 C3/8F72: A6 73 LDX $73 C3/8F74: 86 67 STX $67 C3/8F76: A9 20 LDA #$20 C3/8F78: 85 29 STA $29 C3/8F7A: A0 0D 3F LDY #$3F0D C3/8F7D: 20 CF 34 JSR $34CF ; draw character name C3/8F80: A9 03 LDA #$03 C3/8F82: 85 28 STA $28 C3/8F84: A9 1C LDA #$1C C3/8F86: 20 8A 8F JSR $8F8A C3/8F89: 60 RTS C3/8F8A: 85 E2 STA $E2 C3/8F8C: 64 E0 STZ $E0 C3/8F8E: A4 67 LDY $67 C3/8F90: 7B TDC C3/8F91: AA TAX C3/8F92: DA PHX C3/8F93: 5A PHY C3/8F94: 5A PHY C3/8F95: DA PHX C3/8F96: 64 E5 STZ $E5 C3/8F98: BF D5 8F C3 LDA $C38FD5,X C3/8F9C: 85 E4 STA $E4 C3/8F9E: BF DB 8F C3 LDA $C38FDB,X C3/8FA2: 18 CLC C3/8FA3: 65 E2 ADC $E2 C3/8FA5: A6 E4 LDX $E4 C3/8FA7: 20 9F 80 JSR $809F C3/8FAA: C2 20 REP #$20 C3/8FAC: 8A TXA C3/8FAD: 8F 89 9E 7E STA $7E9E89 C3/8FB1: E2 20 SEP #$20 C3/8FB3: FA PLX C3/8FB4: E0 02 00 CPX #$0002 C3/8FB7: B0 05 BCS $8FBE C3/8FB9: 20 1D 94 JSR $941D C3/8FBC: 80 02 BRA $8FC0 C3/8FBE: 64 E0 STZ $E0 C3/8FC0: 7A PLY C3/8FC1: 7B TDC C3/8FC2: B9 1F 00 LDA $001F,Y C3/8FC5: 20 E1 8F JSR $8FE1 C3/8FC8: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/8FCB: 7A PLY C3/8FCC: C8 INY C3/8FCD: FA PLX C3/8FCE: E8 INX C3/8FCF: E0 06 00 CPX #$0006 C3/8FD2: D0 BE BNE $8F92 C3/8FD4: 60 RTS C3/8FD5: .DB $02, $11, $02, $11, $02, $11 C3/8FDB: .DB $01, $01, $03, $03, $05, $05 C3/8FE1: 48 PHA C3/8FE2: A2 8B 9E LDX #$9E8B C3/8FE5: 8E 81 21 STX $2181 C3/8FE8: AD 12 42 LDA $4212 C3/8FEB: 29 40 AND #$40 C3/8FED: F0 F9 BEQ $8FE8 C3/8FEF: 7B TDC C3/8FF0: A5 E0 LDA $E0 C3/8FF2: F0 03 BEQ $8FF7 C3/8FF4: 68 PLA C3/8FF5: 80 05 BRA $8FFC C3/8FF7: 68 PLA C3/8FF8: C9 FF CMP #$FF C3/8FFA: F0 23 BEQ $901F C3/8FFC: 8D 1B 21 STA $211B C3/8FFF: 9C 1B 21 STZ $211B C3/9002: A9 0D LDA #$0D C3/9004: 8D 1C 21 STA $211C C3/9007: 8D 1C 21 STA $211C C3/900A: AE 34 21 LDX $2134 C3/900D: A0 0D 00 LDY #$000D C3/9010: BF 00 B3 D2 LDA $D2B300,X C3/9014: 8D 80 21 STA $2180 C3/9017: E8 INX C3/9018: 88 DEY C3/9019: D0 F5 BNE $9010 C3/901B: 9C 80 21 STZ $2180 C3/901E: 60 RTS C3/901F: A0 0D 00 LDY #$000D C3/9022: A9 FF LDA #$FF C3/9024: 8D 80 21 STA $2180 C3/9027: 88 DEY C3/9028: D0 FA BNE $9024 C3/902A: 9C 80 21 STZ $2180 C3/902D: 60 RTS C3/902E: .DB $8B, $58, $1C, $18 C3/9032: 20 93 90 JSR $9093 C3/9035: 20 1B 91 JSR $911B C3/9038: A9 2C LDA #$2C C3/903A: 85 29 STA $29 C3/903C: A2 AE A2 LDX #$A2AE C3/903F: A0 04 00 LDY #$0004 C3/9042: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/9045: 20 4E 90 JSR $904E C3/9048: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/904B: 4C 0F 9E JMP $9E0F C3/904E: A9 20 LDA #$20 C3/9050: 85 29 STA $29 C3/9052: A2 A6 A2 LDX #$A2A6 C3/9055: A0 08 00 LDY #$0008 C3/9058: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/905B: 60 RTS C3/905C: A9 20 LDA #$20 C3/905E: 85 29 STA $29 C3/9060: A2 B2 A2 LDX #$A2B2 C3/9063: A0 04 00 LDY #$0004 C3/9066: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/9069: 60 RTS C3/906A: 20 93 90 JSR $9093 C3/906D: 20 F2 93 JSR $93F2 C3/9070: B9 23 00 LDA $0023,Y C3/9073: 85 B0 STA $B0 C3/9075: B9 24 00 LDA $0024,Y C3/9078: 85 B1 STA $B1 C3/907A: 20 31 91 JSR $9131 C3/907D: A9 2C LDA #$2C C3/907F: 85 29 STA $29 C3/9081: A2 B6 A2 LDX #$A2B6 C3/9084: A0 04 00 LDY #$0004 C3/9087: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/908A: 20 5C 90 JSR $905C C3/908D: 20 AB A6 JSR $A6AB C3/9090: 4C 6E 0E JMP $0E6E ; copy bg3 data to vram (top screens) C3/9093: 20 10 91 JSR $9110 ; update character battle stats C3/9096: C2 20 REP #$20 C3/9098: A9 00 01 LDA #$0100 C3/909B: 8F D0 9B 7E STA $7E9BD0 C3/909F: E2 20 SEP #$20 C3/90A1: A9 01 LDA #$01 C3/90A3: 8D 07 21 STA $2107 C3/90A6: A9 42 LDA #$42 C3/90A8: 8D 09 21 STA $2109 C3/90AB: 20 0C 96 JSR $960C C3/90AE: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/90B1: 20 2D 6A JSR $6A2D ; clear bg2 data (top right screen) C3/90B4: A0 7F 94 LDY #$947F C3/90B7: 20 41 03 JSR $0341 ; draw window C3/90BA: A0 83 94 LDY #$9483 C3/90BD: 20 41 03 JSR $0341 ; draw window C3/90C0: A0 87 94 LDY #$9487 C3/90C3: 20 41 03 JSR $0341 ; draw window C3/90C6: A0 8B 94 LDY #$948B C3/90C9: 20 41 03 JSR $0341 ; draw window C3/90CC: A0 8F 94 LDY #$948F C3/90CF: 20 41 03 JSR $0341 ; draw window C3/90D2: A0 93 94 LDY #$9493 C3/90D5: 20 41 03 JSR $0341 ; draw window C3/90D8: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/90DB: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/90DE: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/90E1: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/90E4: 20 36 0E JSR $0E36 ; copy bg1 data to vram (top left/bottom right) C3/90E7: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/90EA: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/90ED: 20 E5 93 JSR $93E5 C3/90F0: 20 B2 61 JSR $61B2 C3/90F3: A9 2C LDA #$2C C3/90F5: 85 29 STA $29 C3/90F7: A2 4D A3 LDX #$A34D C3/90FA: A0 1C 00 LDY #$001C C3/90FD: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/9100: A9 2C LDA #$2C C3/9102: 85 29 STA $29 C3/9104: A2 69 A3 LDX #$A369 C3/9107: A0 08 00 LDY #$0008 C3/910A: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/910D: 4C 6E 0E JMP $0E6E ; copy bg3 data to vram (top screens) ; [ Update Character Battle Stats ] calcparam_exec: C3/9110: 7B TDC C3/9111: A5 28 LDA $28 ; character slot C3/9113: AA TAX C3/9114: B5 69 LDA $69,X ; character number C3/9116: 22 06 00 C2 JSL $C20006 ; update character battle stats C3/911A: 60 RTS C3/911B: 20 75 99 JSR $9975 ; draw "R-Hand" and "L-Hand" text C3/911E: A9 20 LDA #$20 C3/9120: 85 29 STA $29 C3/9122: 20 3E 91 JSR $913E C3/9125: 20 2D 92 JSR $922D C3/9128: 20 FC 93 JSR $93FC C3/912B: 20 35 94 JSR $9435 C3/912E: 4C 43 94 JMP $9443 C3/9131: A9 20 LDA #$20 C3/9133: 85 29 STA $29 C3/9135: 20 3E 91 JSR $913E C3/9138: 20 51 94 JSR $9451 C3/913B: 4C 5F 94 JMP $945F C3/913E: 20 10 91 JSR $9110 ; update character battle stats C3/9141: 20 F2 93 JSR $93F2 C3/9144: 20 E8 99 JSR $99E8 C3/9147: 20 07 92 JSR $9207 C3/914A: 8B PHB C3/914B: A9 7E LDA #$7E C3/914D: 48 PHA C3/914E: AB PLB C3/914F: 20 C4 91 JSR $91C4 C3/9152: AD 06 30 LDA $3006 C3/9155: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/9158: A2 B7 7C LDX #$7CB7 C3/915B: 20 C0 04 JSR $04C0 C3/915E: AD 04 30 LDA $3004 C3/9161: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/9164: A2 37 7D LDX #$7D37 C3/9167: 20 C0 04 JSR $04C0 C3/916A: AD 02 30 LDA $3002 C3/916D: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/9170: A2 B7 7D LDX #$7DB7 C3/9173: 20 C0 04 JSR $04C0 C3/9176: AD 00 30 LDA $3000 C3/9179: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/917C: A2 37 7E LDX #$7E37 C3/917F: 20 C0 04 JSR $04C0 C3/9182: 20 AB 93 JSR $93AB C3/9185: A6 F1 LDX $F1 C3/9187: 86 F3 STX $F3 C3/9189: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/918C: A2 B7 7E LDX #$7EB7 C3/918F: 20 86 04 JSR $0486 C3/9192: AD 1A 30 LDA $301A C3/9195: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/9198: A2 37 7F LDX #$7F37 C3/919B: 20 C0 04 JSR $04C0 C3/919E: AD 08 30 LDA $3008 C3/91A1: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/91A4: A2 B7 7F LDX #$7FB7 C3/91A7: 20 C0 04 JSR $04C0 C3/91AA: AD 1B 30 LDA $301B C3/91AD: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/91B0: A2 37 80 LDX #$8037 C3/91B3: 20 C0 04 JSR $04C0 C3/91B6: AD 0A 30 LDA $300A C3/91B9: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/91BC: A2 B7 80 LDX #$80B7 C3/91BF: 20 C0 04 JSR $04C0 C3/91C2: AB PLB C3/91C3: 60 RTS C3/91C4: 20 F2 93 JSR $93F2 C3/91C7: AF 32 30 7E LDA $7E3032 C3/91CB: 20 EC 91 JSR $91EC C3/91CE: AD 34 30 LDA $3034 C3/91D1: 29 01 AND #$01 C3/91D3: D0 07 BNE $91DC C3/91D5: B9 15 00 LDA $0015,Y C3/91D8: 29 01 AND #$01 C3/91DA: F0 0F BEQ $91EB C3/91DC: AD 34 30 LDA $3034 C3/91DF: 18 CLC C3/91E0: 29 01 AND #$01 C3/91E2: 85 E0 STA $E0 C3/91E4: 6A ROR C3/91E5: 6A ROR C3/91E6: 05 E0 ORA $E0 C3/91E8: 99 15 00 STA $0015,Y C3/91EB: 60 RTS C3/91EC: 29 25 AND #$25 C3/91EE: 49 FF EOR #$FF C3/91F0: 85 E1 STA $E1 C3/91F2: B9 14 00 LDA $0014,Y C3/91F5: 25 E1 AND $E1 C3/91F7: 99 14 00 STA $0014,Y C3/91FA: 60 RTS C3/91FB: 18 CLC C3/91FC: 29 01 AND #$01 C3/91FE: 6A ROR C3/91FF: 6A ROR C3/9200: 19 15 00 ORA $0015,Y C3/9203: 99 15 00 STA $0015,Y C3/9206: 60 RTS C3/9207: A6 00 LDX $00 C3/9209: C2 20 REP #$20 C3/920B: BD A0 11 LDA $11A0,X C3/920E: 9F 00 30 7E STA $7E3000,X C3/9212: E8 INX C3/9213: E8 INX C3/9214: BD A0 11 LDA $11A0,X C3/9217: 9F 00 30 7E STA $7E3000,X C3/921B: E8 INX C3/921C: E8 INX C3/921D: E0 40 00 CPX #$0040 C3/9220: D0 E9 BNE $920B C3/9222: E2 20 SEP #$20 C3/9224: A5 A1 LDA $A1 C3/9226: 85 A0 STA $A0 C3/9228: A5 CD LDA $CD C3/922A: 85 CE STA $CE C3/922C: 60 RTS C3/922D: 60 RTS C3/922E: A9 2C LDA #$2C C3/9230: 85 29 STA $29 C3/9232: 60 RTS ; [ Update Modified Stats Text ] C3/9233: AF 89 9D 7E LDA $7E9D89 ; length of item list C3/9237: F0 05 BEQ $923E ; branch if list is empty C3/9239: 20 42 9A JSR $9A42 ; check if selected item can be equipped C3/923C: B0 03 BCS $9241 ; branch if item can be equipped C3/923E: 4C 87 9C JMP $9C87 ; clear modified stats text C3/9241: 20 F2 93 JSR $93F2 ; update pointer to current character data C3/9244: A5 25 LDA $25 ; main menu position C3/9246: C9 02 CMP #$02 C3/9248: F0 04 BEQ $924E ; branch if equip C3/924A: C8 INY ; add 4 to character data pointer (relic) C3/924B: C8 INY C3/924C: C8 INY C3/924D: C8 INY C3/924E: C2 21 REP #$21 C3/9250: 98 TYA C3/9251: E2 20 SEP #$20 C3/9253: 65 5F ADC $5F ; add item slot C3/9255: A8 TAY C3/9256: 7B TDC C3/9257: A5 4B LDA $4B ; selected item C3/9259: AA TAX C3/925A: BF 8A 9D 7E LDA $7E9D8A,X ; item number C3/925E: AA TAX C3/925F: B9 1F 00 LDA $001F,Y ; $64 = character's equipped item C3/9262: 85 64 STA $64 C3/9264: BD 69 18 LDA $1869,X ; selected item C3/9267: 99 1F 00 STA $001F,Y ; equip on character C3/926A: 5A PHY C3/926B: 20 10 91 JSR $9110 ; update character battle stats C3/926E: 20 F2 93 JSR $93F2 ; update pointer to current character data C3/9271: 20 E8 99 JSR $99E8 ; update gauntlet and genji glove effects C3/9274: 20 20 93 JSR $9320 ; update stat text colors C3/9277: AD A6 11 LDA $11A6 ; vigor C3/927A: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/927D: A2 BF 7C LDX #$7CBF ; (27,17) C3/9280: AF 40 30 7E LDA $7E3040 ; vigor text color C3/9284: 85 29 STA $29 C3/9286: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/9289: AD A4 11 LDA $11A4 C3/928C: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/928F: A2 3F 7D LDX #$7D3F ; (27,19) C3/9292: AF 41 30 7E LDA $7E3041 C3/9296: 85 29 STA $29 C3/9298: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/929B: AD A2 11 LDA $11A2 C3/929E: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/92A1: A2 BF 7D LDX #$7DBF ; (27,21) C3/92A4: AF 42 30 7E LDA $7E3042 C3/92A8: 85 29 STA $29 C3/92AA: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/92AD: AD A0 11 LDA $11A0 C3/92B0: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/92B3: A2 3F 7E LDX #$7E3F ; (27,23) C3/92B6: AF 43 30 7E LDA $7E3043 C3/92BA: 85 29 STA $29 C3/92BC: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/92BF: 20 71 93 JSR $9371 ; calculate battle power (equipped weapons) C3/92C2: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/92C5: A2 BF 7E LDX #$7EBF ; (27,25) C3/92C8: AF 48 30 7E LDA $7E3048 C3/92CC: 85 29 STA $29 C3/92CE: 20 86 04 JSR $0486 ; draw number text (3 digit) C3/92D1: AD BA 11 LDA $11BA C3/92D4: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/92D7: A2 3F 7F LDX #$7F3F ; (27,27) C3/92DA: AF 44 30 7E LDA $7E3044 C3/92DE: 85 29 STA $29 C3/92E0: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/92E3: AD A8 11 LDA $11A8 C3/92E6: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/92E9: A2 BF 7F LDX #$7FBF ; (27,29) C3/92EC: AF 45 30 7E LDA $7E3045 C3/92F0: 85 29 STA $29 C3/92F2: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/92F5: AD BB 11 LDA $11BB C3/92F8: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/92FB: A2 3F 80 LDX #$803F ; (27,31) C3/92FE: AF 46 30 7E LDA $7E3046 C3/9302: 85 29 STA $29 C3/9304: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/9307: AD AA 11 LDA $11AA C3/930A: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/930D: A2 BF 80 LDX #$80BF ; (27,33) C3/9310: AF 47 30 7E LDA $7E3047 C3/9314: 85 29 STA $29 C3/9316: 20 C0 04 JSR $04C0 ; draw number text (3 digit) C3/9319: 7A PLY C3/931A: A5 64 LDA $64 ; restore equipped item C3/931C: 99 1F 00 STA $001F,Y C3/931F: 60 RTS ; [ Update Stat Text Colors ] C3/9320: 8B PHB C3/9321: A9 7E LDA #$7E C3/9323: 48 PHA C3/9324: AB PLB C3/9325: 7B TDC C3/9326: AA TAX C3/9327: BF 69 93 C3 LDA $C39369,X ; pointer to battle stat C3/932B: DA PHX C3/932C: AA TAX C3/932D: BF A0 11 00 LDA $0011A0,X ; stat with item equipped C3/9331: DD 00 30 CMP $3000,X ; compare with saved stat C3/9334: F0 06 BEQ $933C ; branch if no change C3/9336: 90 08 BCC $9340 ; branch if less C3/9338: A9 28 LDA #$28 ; yellow text C3/933A: 80 06 BRA $9342 C3/933C: A9 20 LDA #$20 ; white text C3/933E: 80 02 BRA $9342 C3/9340: A9 24 LDA #$24 ; gray text C3/9342: FA PLX C3/9343: 9D 40 30 STA $3040,X ; set high byte of bg data C3/9346: E8 INX ; next stat C3/9347: E0 08 00 CPX #$0008 C3/934A: D0 DB BNE $9327 C3/934C: 20 71 93 JSR $9371 ; calculate battle power (equipped weapons) C3/934F: 20 AB 93 JSR $93AB ; calculate battle power (saved weapons) C3/9352: A4 F3 LDY $F3 C3/9354: C4 F1 CPY $F1 C3/9356: F0 06 BEQ $935E C3/9358: 90 08 BCC $9362 C3/935A: A9 28 LDA #$28 ; yellow text C3/935C: 80 06 BRA $9364 C3/935E: A9 20 LDA #$20 ; white text C3/9360: 80 02 BRA $9364 C3/9362: A9 24 LDA #$24 ; gray text C3/9364: 8D 48 30 STA $3048 ; set high byte of bg data for bat.pwr C3/9367: AB PLB C3/9368: 60 RTS ; pointers to battle stats (+$11A0) vigor, speed, stamina, mag.pwr, defense, evade, magic defense, mblock C3/9369: .DB $06, $04, $02, $00, $1A, $08, $1B, $0A ; [ Calculate Battle Power (equipped weapons) ] ; +$F3 = battle power (out) C3/9371: A5 A1 LDA $A1 ; branch if no gauntlet bonus C3/9373: F0 16 BEQ $938B C3/9375: AF AC 11 00 LDA $0011AC ; right hand battle power C3/9379: F0 06 BEQ $9381 ; branch if right hand empty C3/937B: 8F AD 11 00 STA $0011AD ; save as left hand battle power C3/937F: 80 19 BRA $939A C3/9381: AF AD 11 00 LDA $0011AD ; copy left hand battle power to right hand (double battle power) C3/9385: 8F AC 11 00 STA $0011AC C3/9389: 80 0F BRA $939A C3/938B: A5 CD LDA $CD ; branch if wearing genji glove C3/938D: D0 0B BNE $939A C3/938F: AF AC 11 00 LDA $0011AC C3/9393: F0 05 BEQ $939A C3/9395: 7B TDC C3/9396: 8F AD 11 00 STA $0011AD C3/939A: AF AC 11 00 LDA $0011AC C3/939E: 18 CLC C3/939F: 6F AD 11 00 ADC $0011AD C3/93A3: 85 F3 STA $F3 C3/93A5: 7B TDC C3/93A6: 69 00 ADC #$00 C3/93A8: 85 F4 STA $F4 C3/93AA: 60 RTS ; [ Calculate Battle Power (saved weapons) ] ; +$F1 = battle power (out) C3/93AB: A5 A0 LDA $A0 C3/93AD: F0 16 BEQ $93C5 C3/93AF: AF 0C 30 7E LDA $7E300C C3/93B3: F0 06 BEQ $93BB C3/93B5: 8F 0D 30 7E STA $7E300D C3/93B9: 80 19 BRA $93D4 C3/93BB: AF 0D 30 7E LDA $7E300D C3/93BF: 8F 0C 30 7E STA $7E300C C3/93C3: 80 0F BRA $93D4 C3/93C5: A5 CE LDA $CE C3/93C7: D0 0B BNE $93D4 C3/93C9: AF 0C 30 7E LDA $7E300C C3/93CD: F0 05 BEQ $93D4 C3/93CF: 7B TDC C3/93D0: 8F 0D 30 7E STA $7E300D C3/93D4: AF 0C 30 7E LDA $7E300C C3/93D8: 18 CLC C3/93D9: 6F 0D 30 7E ADC $7E300D C3/93DD: 85 F1 STA $F1 C3/93DF: 7B TDC C3/93E0: 69 00 ADC #$00 C3/93E2: 85 F2 STA $F2 C3/93E4: 60 RTS C3/93E5: 20 F2 93 JSR $93F2 C3/93E8: A9 20 LDA #$20 C3/93EA: 85 29 STA $29 C3/93EC: A0 B7 7B LDY #$7BB7 C3/93EF: 4C CF 34 JMP $34CF ; draw character name ; [ Update Pointer to Current Character Data ] chradrs_get: C3/93F2: 7B TDC C3/93F3: A5 28 LDA $28 ; character slot C3/93F5: 0A ASL C3/93F6: AA TAX C3/93F7: B4 6D LDY $6D,X ; pointer to character data C3/93F9: 84 67 STY $67 C3/93FB: 60 RTS C3/93FC: 20 1D 94 JSR $941D C3/93FF: A2 1B 7A LDX #$7A1B C3/9402: 20 6D 94 JSR $946D C3/9405: B9 1F 00 LDA $001F,Y C3/9408: 20 E1 8F JSR $8FE1 C3/940B: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/940E: 20 1D 94 JSR $941D C3/9411: A2 9B 7A LDX #$7A9B C3/9414: 20 6D 94 JSR $946D C3/9417: B9 20 00 LDA $0020,Y C3/941A: 4C 79 94 JMP $9479 C3/941D: 20 F2 93 JSR $93F2 C3/9420: B9 1F 00 LDA $001F,Y C3/9423: C9 FF CMP #$FF C3/9425: D0 0B BNE $9432 C3/9427: B9 20 00 LDA $0020,Y C3/942A: C9 FF CMP #$FF C3/942C: D0 04 BNE $9432 C3/942E: 85 E0 STA $E0 C3/9430: 80 02 BRA $9434 C3/9432: 64 E0 STZ $E0 C3/9434: 60 RTS C3/9435: A2 1B 7B LDX #$7B1B C3/9438: 20 6D 94 JSR $946D C3/943B: 64 E0 STZ $E0 C3/943D: B9 21 00 LDA $0021,Y C3/9440: 4C 79 94 JMP $9479 C3/9443: A2 9B 7B LDX #$7B9B C3/9446: 20 6D 94 JSR $946D C3/9449: 64 E0 STZ $E0 C3/944B: B9 22 00 LDA $0022,Y C3/944E: 4C 79 94 JMP $9479 C3/9451: A2 1B 7B LDX #$7B1B C3/9454: 20 6D 94 JSR $946D C3/9457: 64 E0 STZ $E0 C3/9459: B9 23 00 LDA $0023,Y C3/945C: 4C 79 94 JMP $9479 C3/945F: A2 9B 7B LDX #$7B9B C3/9462: 20 6D 94 JSR $946D C3/9465: 64 E0 STZ $E0 C3/9467: B9 24 00 LDA $0024,Y C3/946A: 4C 79 94 JMP $9479 C3/946D: C2 20 REP #$20 C3/946F: 8A TXA C3/9470: 8F 89 9E 7E STA $7E9E89 C3/9474: E2 20 SEP #$20 C3/9476: 4C F2 93 JMP $93F2 C3/9479: 20 E1 8F JSR $8FE1 C3/947C: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/947F: .DB $4B, $5B, $1C, $0D C3/9483: .DB $0B, $59, $1C, $07 C3/9487: .DB $8B, $58, $1C, $02 C3/948B: .DB $4B, $63, $1C, $0D C3/948F: .DB $0B, $61, $1C, $07 C3/9493: .DB $B7, $60, $06, $02 C3/9497: A9 02 LDA #$02 C3/9499: 8D 50 43 STA $4350 C3/949C: A9 0E LDA #$0E C3/949E: 8D 51 43 STA $4351 C3/94A1: A0 D8 95 LDY #$95D8 C3/94A4: 8C 52 43 STY $4352 C3/94A7: A9 C3 LDA #$C3 C3/94A9: 8D 54 43 STA $4354 C3/94AC: A9 C3 LDA #$C3 C3/94AE: 8D 57 43 STA $4357 C3/94B1: A9 20 LDA #$20 C3/94B3: 04 43 TSB $43 C3/94B5: 60 RTS C3/94B6: A9 02 LDA #$02 C3/94B8: 8D 50 43 STA $4350 C3/94BB: A9 12 LDA #$12 C3/94BD: 8D 51 43 STA $4351 C3/94C0: A0 D8 95 LDY #$95D8 C3/94C3: 8C 52 43 STY $4352 C3/94C6: A9 C3 LDA #$C3 C3/94C8: 8D 54 43 STA $4354 C3/94CB: A9 C3 LDA #$C3 C3/94CD: 8D 57 43 STA $4357 C3/94D0: A9 20 LDA #$20 C3/94D2: 04 43 TSB $43 C3/94D4: 20 20 95 JSR $9520 C3/94D7: A6 00 LDX $00 C3/94D9: BF 64 95 C3 LDA $C39564,X C3/94DD: 9F C9 9B 7E STA $7E9BC9,X C3/94E1: E8 INX C3/94E2: E0 0D 00 CPX #$000D C3/94E5: D0 F2 BNE $94D9 C3/94E7: A9 02 LDA #$02 C3/94E9: 8D 60 43 STA $4360 C3/94EC: A9 0D LDA #$0D C3/94EE: 8D 61 43 STA $4361 C3/94F1: A0 C9 9B LDY #$9BC9 C3/94F4: 8C 62 43 STY $4362 C3/94F7: A9 7E LDA #$7E C3/94F9: 8D 64 43 STA $4364 C3/94FC: A9 7E LDA #$7E C3/94FE: 8D 67 43 STA $4367 C3/9501: A9 02 LDA #$02 C3/9503: 8D 70 43 STA $4370 C3/9506: A9 0E LDA #$0E C3/9508: 8D 71 43 STA $4371 C3/950B: A0 49 98 LDY #$9849 C3/950E: 8C 72 43 STY $4372 C3/9511: A9 7E LDA #$7E C3/9513: 8D 74 43 STA $4374 C3/9516: A9 7E LDA #$7E C3/9518: 8D 77 43 STA $4377 C3/951B: A9 C0 LDA #$C0 C3/951D: 04 43 TSB $43 C3/951F: 60 RTS C3/9520: A6 00 LDX $00 C3/9522: BF 71 95 C3 LDA $C39571,X C3/9526: 9F 49 98 7E STA $7E9849,X C3/952A: E8 INX C3/952B: E0 12 00 CPX #$0012 C3/952E: D0 F2 BNE $9522 C3/9530: BF 71 95 C3 LDA $C39571,X C3/9534: 9F 49 98 7E STA $7E9849,X C3/9538: E8 INX C3/9539: 7B TDC C3/953A: A5 49 LDA $49 C3/953C: 0A ASL C3/953D: 0A ASL C3/953E: 0A ASL C3/953F: 0A ASL C3/9540: 29 FF AND #$FF C3/9542: C2 21 REP #$21 C3/9544: 7F 71 95 C3 ADC $C39571,X C3/9548: 9F 49 98 7E STA $7E9849,X C3/954C: E2 20 SEP #$20 C3/954E: E8 INX C3/954F: E8 INX C3/9550: E0 63 00 CPX #$0063 C3/9553: D0 DB BNE $9530 C3/9555: BF 71 95 C3 LDA $C39571,X C3/9559: 9F 49 98 7E STA $7E9849,X C3/955D: E8 INX C3/955E: E0 67 00 CPX #$0067 C3/9561: D0 F2 BNE $9555 C3/9563: 60 RTS C3/9564: .DB $27, $00, $01 C3/9567: .DB $3C, $00, $01 C3/956A: .DB $6C, $00, $00 C3/956D: .DB $1E, $00, $01 C3/9570: .DB $00 C3/9571: .DB $3F, $00, $00 C3/9574: .DB $0C, $04, $00 C3/9577: .DB $0C, $08, $00 C3/957A: .DB $0A, $0C, $00 C3/957D: .DB $01, $0C, $00 C3/9580: .DB $01, $0C, $00 C3/9583: .DB $04, $A0, $FF C3/9586: .DB $04, $A0, $FF C3/9589: .DB $04, $A0, $FF C3/958C: .DB $04, $A4, $FF C3/958F: .DB $04, $A4, $FF C3/9592: .DB $04, $A4, $FF C3/9595: .DB $04, $A8, $FF C3/9598: .DB $04, $A8, $FF C3/959B: .DB $04, $A8, $FF C3/959E: .DB $04, $AC, $FF C3/95A1: .DB $04, $AC, $FF C3/95A4: .DB $04, $AC, $FF C3/95A7: .DB $04, $B0, $FF C3/95AA: .DB $04, $B0, $FF C3/95AD: .DB $04, $B0, $FF C3/95B0: .DB $04, $B4, $FF C3/95B3: .DB $04, $B4, $FF C3/95B6: .DB $04, $B4, $FF C3/95B9: .DB $04, $B8, $FF C3/95BC: .DB $04, $B8, $FF C3/95BF: .DB $04, $B8, $FF C3/95C2: .DB $04, $BC, $FF C3/95C5: .DB $04, $BC, $FF C3/95C8: .DB $04, $BC, $FF C3/95CB: .DB $04, $C0, $FF C3/95CE: .DB $04, $C0, $FF C3/95D1: .DB $04, $C0, $FF C3/95D4: .DB $1E, $10, $00 C3/95D7: .DB $00 C3/95D8: .DB $0F, $00, $00 C3/95DB: .DB $0C, $04, $00 C3/95DE: .DB $0C, $08, $00 C3/95E1: .DB $0C, $0C, $00 C3/95E4: .DB $0C, $10, $00 C3/95E7: .DB $0C, $14, $00 C3/95EA: .DB $0C, $18, $00 C3/95ED: .DB $0C, $1C, $00 C3/95F0: .DB $0C, $20, $00 C3/95F3: .DB $0C, $24, $00 C3/95F6: .DB $0C, $28, $00 C3/95F9: .DB $0C, $2C, $00 C3/95FC: .DB $0C, $30, $00 C3/95FF: .DB $0C, $34, $00 C3/9602: .DB $0C, $38, $00 C3/9605: .DB $0C, $3C, $00 C3/9608: .DB $0C, $40, $00 C3/960B: .DB $00 C3/960C: 20 5D 96 JSR $965D C3/960F: A4 00 LDY $00 C3/9611: 84 39 STY $39 C3/9613: 60 RTS C3/9614: 20 5D 96 JSR $965D C3/9617: A0 00 01 LDY #$0100 C3/961A: 84 39 STY $39 C3/961C: A9 2C LDA #$2C C3/961E: 85 29 STA $29 C3/9620: 60 RTS ; [ Menu State $36: ] C3/9621: 20 0C 96 JSR $960C C3/9624: 20 4E 90 JSR $904E C3/9627: 20 56 8E JSR $8E56 C3/962A: A5 08 LDA $08 C3/962C: 89 80 BIT #$80 C3/962E: F0 05 BEQ $9635 C3/9630: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/9633: 80 2F BRA $9664 C3/9635: A5 09 LDA $09 C3/9637: 89 80 BIT #$80 C3/9639: F0 0D BEQ $9648 C3/963B: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/963E: 20 10 91 JSR $9110 ; update character battle stats C3/9641: A9 04 LDA #$04 C3/9643: 85 27 STA $27 C3/9645: 64 26 STZ $26 C3/9647: 60 RTS C3/9648: A9 35 LDA #$35 C3/964A: 85 E0 STA $E0 C3/964C: 4C 22 20 JMP $2022 C3/964F: A0 09 A3 LDY #$A309 C3/9652: 20 F9 02 JSR $02F9 ; draw positioned text C3/9655: 60 RTS C3/9656: A0 11 A3 LDY #$A311 C3/9659: 20 F9 02 JSR $02F9 ; draw positioned text C3/965C: 60 RTS C3/965D: A0 EA A2 LDY #$A2EA C3/9660: 20 F9 02 JSR $02F9 ; draw positioned text C3/9663: 60 RTS C3/9664: 7B TDC C3/9665: A5 4B LDA $4B C3/9667: 0A ASL C3/9668: AA TAX C3/9669: 7C 6C 96 JMP ($966C,X) C3/966C: .DW $9674, $9685, $968E, $969F C3/9674: 20 14 96 JSR $9614 C3/9677: 20 4F 96 JSR $964F C3/967A: 20 6C 8E JSR $8E6C C3/967D: 20 75 8E JSR $8E75 C3/9680: A9 55 LDA #$55 C3/9682: 85 26 STA $26 C3/9684: 60 RTS C3/9685: 20 F0 96 JSR $96F0 C3/9688: 20 1B 91 JSR $911B C3/968B: 64 4D STZ $4D C3/968D: 60 RTS C3/968E: 20 14 96 JSR $9614 C3/9691: 20 56 96 JSR $9656 C3/9694: 20 6C 8E JSR $8E6C C3/9697: 20 75 8E JSR $8E75 C3/969A: A9 56 LDA #$56 C3/969C: 85 26 STA $26 C3/969E: 60 RTS C3/969F: 20 A8 96 JSR $96A8 C3/96A2: 20 1B 91 JSR $911B C3/96A5: 64 4D STZ $4D C3/96A7: 60 RTS ; [ Remove Character's Equipment ] allazusu_sub: C3/96A8: 20 F2 93 JSR $93F2 ; update pointer to current character data C3/96AB: B9 1F 00 LDA $001F,Y ; add weapon to inventory C3/96AE: 20 5E 9D JSR $9D5E C3/96B1: B9 20 00 LDA $0020,Y ; add shield to inventory C3/96B4: 20 5E 9D JSR $9D5E C3/96B7: B9 21 00 LDA $0021,Y ; add helmet to inventory C3/96BA: 20 5E 9D JSR $9D5E C3/96BD: B9 22 00 LDA $0022,Y ; add armor to inventory C3/96C0: 20 5E 9D JSR $9D5E C3/96C3: A9 FF LDA #$FF C3/96C5: 99 1F 00 STA $001F,Y ; remove weapon C3/96C8: 99 20 00 STA $0020,Y ; remove shield C3/96CB: 99 21 00 STA $0021,Y ; remove helmet C3/96CE: 99 22 00 STA $0022,Y ; remove armor C3/96D1: 60 RTS ; [ Optimize Character's Equipment ] ; $0201 = character number saikyou_prog: C3/96D2: 20 15 69 JSR $6915 ; init party character data C3/96D5: 7B TDC C3/96D6: AA TAX C3/96D7: AD 01 02 LDA $0201 ; character number C3/96DA: D5 69 CMP $69,X ; look for character in party C3/96DC: F0 08 BEQ $96E6 C3/96DE: E8 INX C3/96DF: E0 04 00 CPX #$0004 C3/96E2: D0 F6 BNE $96DA C3/96E4: 80 FE BRA $96E4 ; infinite loop C3/96E6: 8A TXA C3/96E7: 85 28 STA $28 ; $28 = character slot C3/96E9: 20 10 91 JSR $9110 ; update character battle stats C3/96EC: 20 F0 96 JSR $96F0 ; set optimum equipment C3/96EF: 6B RTL ; [ Set Optimum Equipment ] saikyo_sub: C3/96F0: 20 10 91 JSR $9110 ; update character battle stats C3/96F3: 20 A8 96 JSR $96A8 ; remove character's equipment C3/96F6: 20 F2 93 JSR $93F2 ; update pointer to current character data C3/96F9: 84 F3 STY $F3 ; +$F3 = pointer to character data C3/96FB: AD D8 11 LDA $11D8 ; gauntlet effect C3/96FE: 29 08 AND #$08 C3/9700: F0 18 BEQ $971A ; branch if not set ; select optimum 2-handed weapon C3/9702: 64 4B STZ $4B C3/9704: 20 59 9B JSR $9B59 ; update list of equippable items C3/9707: 20 95 97 JSR $9795 ; update list of equippable weapons C3/970A: 20 50 A1 JSR $A150 ; sort items by attack/defense power C3/970D: 20 3F 98 JSR $983F C3/9710: A4 F3 LDY $F3 C3/9712: 99 1F 00 STA $001F,Y ; set main-hand C3/9715: 20 97 9D JSR $9D97 ; remove item from inventory C3/9718: 80 51 BRA $976B ; select optimum one-handed weapon C3/971A: 64 4B STZ $4B ; cursor position = 0 (main hand) C3/971C: 20 59 9B JSR $9B59 ; update list of equippable items C3/971F: 20 95 97 JSR $9795 ; update list of equippable weapons C3/9722: 20 50 A1 JSR $A150 ; sort items by attack/defense power C3/9725: A4 F3 LDY $F3 C3/9727: 20 19 98 JSR $9819 ; select the best item in the list C3/972A: 99 1F 00 STA $001F,Y ; set main hand C3/972D: 20 97 9D JSR $9D97 ; remove item from inventory C3/9730: AD D8 11 LDA $11D8 ; genji glove effect C3/9733: 29 10 AND #$10 C3/9735: D0 1A BNE $9751 ; branch if second hand can use a weapon ; select optimum shield C3/9737: A9 01 LDA #$01 ; cursor position = 1 (off-hand) C3/9739: 85 4B STA $4B C3/973B: 20 59 9B JSR $9B59 ; update list of equippable items C3/973E: 20 D7 97 JSR $97D7 C3/9741: 20 50 A1 JSR $A150 ; sort items by attack/defense power C3/9744: A4 F3 LDY $F3 C3/9746: 20 19 98 JSR $9819 ; select the best item in the list C3/9749: 99 20 00 STA $0020,Y ; set off-hand C3/974C: 20 97 9D JSR $9D97 ; remove item from inventory C3/974F: 80 1A BRA $976B ; genji glove (equip a weapon in off-hand) C3/9751: A9 01 LDA #$01 ; cursor position = 1 (off-hand) C3/9753: 85 4B STA $4B C3/9755: 20 59 9B JSR $9B59 C3/9758: 20 95 97 JSR $9795 C3/975B: 20 50 A1 JSR $A150 ; sort items by attack/defense power C3/975E: A4 F3 LDY $F3 C3/9760: 20 19 98 JSR $9819 ; select the best item in the list C3/9763: 99 20 00 STA $0020,Y ; set off-hand C3/9766: 20 97 9D JSR $9D97 ; remove item from inventory C3/9769: 80 00 BRA $976B ; select optimum helmet & armor C3/976B: A9 02 LDA #$02 ; cursor position = 2 (helmet) C3/976D: 85 4B STA $4B C3/976F: 20 59 9B JSR $9B59 ; update list of equippable items C3/9772: 20 50 A1 JSR $A150 ; sort items by attack/defense power C3/9775: A4 F3 LDY $F3 C3/9777: 20 19 98 JSR $9819 ; select the best item in the list C3/977A: 99 21 00 STA $0021,Y ; set helmet C3/977D: 20 97 9D JSR $9D97 ; remove item from inventory C3/9780: A9 03 LDA #$03 ; cursor position = 3 (armor) C3/9782: 85 4B STA $4B C3/9784: 20 59 9B JSR $9B59 ; update list of equippable items C3/9787: 20 50 A1 JSR $A150 ; sort items by attack/defense power C3/978A: A4 F3 LDY $F3 C3/978C: 20 19 98 JSR $9819 ; select the best item in the list C3/978F: 99 22 00 STA $0022,Y ; set armor C3/9792: 4C 97 9D JMP $9D97 ; remove item from inventory ; [ Update List of Equippable Weapons ] C3/9795: 20 2A 9C JSR $9C2A ; clear list of optimized items C3/9798: 20 41 9C JSR $9C41 ; get character equippability mask C3/979B: A6 00 LDX $00 C3/979D: 9B TXY C3/979E: 7B TDC C3/979F: B9 69 18 LDA $1869,Y ; item in inventory C3/97A2: C9 FF CMP #$FF C3/97A4: F0 22 BEQ $97C8 ; branch if slot is empty C3/97A6: 20 21 83 JSR $8321 ; calculate pointer to item data C3/97A9: AE 34 21 LDX $2134 C3/97AC: BF 00 50 D8 LDA $D85000,X ; item type C3/97B0: 29 07 AND #$07 C3/97B2: C9 01 CMP #$01 C3/97B4: D0 12 BNE $97C8 ; branch if not a weapon C3/97B6: C2 20 REP #$20 C3/97B8: BF 01 50 D8 LDA $D85001,X C3/97BC: 24 E7 BIT $E7 C3/97BE: F0 08 BEQ $97C8 ; branch if not equippable C3/97C0: E2 20 SEP #$20 C3/97C2: 98 TYA C3/97C3: 8D 80 21 STA $2180 ; add to list of weapons C3/97C6: E6 E0 INC $E0 C3/97C8: E2 20 SEP #$20 ; next item C3/97CA: C8 INY C3/97CB: C0 FF 00 CPY #$00FF C3/97CE: D0 CE BNE $979E C3/97D0: A5 E0 LDA $E0 ; set length of list C3/97D2: 8F 89 9D 7E STA $7E9D89 C3/97D6: 60 RTS ; [ Update List of Equippable Shields ] C3/97D7: 20 2A 9C JSR $9C2A C3/97DA: 20 41 9C JSR $9C41 C3/97DD: A6 00 LDX $00 C3/97DF: 9B TXY C3/97E0: 7B TDC C3/97E1: B9 69 18 LDA $1869,Y C3/97E4: C9 FF CMP #$FF C3/97E6: F0 22 BEQ $980A C3/97E8: 20 21 83 JSR $8321 ; calculate pointer to item data C3/97EB: AE 34 21 LDX $2134 C3/97EE: BF 00 50 D8 LDA $D85000,X C3/97F2: 29 07 AND #$07 C3/97F4: C9 03 CMP #$03 C3/97F6: D0 12 BNE $980A C3/97F8: C2 20 REP #$20 C3/97FA: BF 01 50 D8 LDA $D85001,X C3/97FE: 24 E7 BIT $E7 C3/9800: F0 08 BEQ $980A C3/9802: E2 20 SEP #$20 C3/9804: 98 TYA C3/9805: 8D 80 21 STA $2180 C3/9808: E6 E0 INC $E0 C3/980A: E2 20 SEP #$20 C3/980C: C8 INY C3/980D: C0 FF 00 CPY #$00FF C3/9810: D0 CE BNE $97E0 C3/9812: A5 E0 LDA $E0 C3/9814: 8F 89 9D 7E STA $7E9D89 C3/9818: 60 RTS ; [ Select the Best Item in the List ] C3/9819: 5A PHY C3/981A: 8B PHB C3/981B: A9 7E LDA #$7E C3/981D: 48 PHA C3/981E: AB PLB C3/981F: 7B TDC C3/9820: A8 TAY C3/9821: 7B TDC C3/9822: AA TAX C3/9823: DA PHX C3/9824: 7B TDC C3/9825: B9 8A 9D LDA $9D8A,Y ; position in inventory C3/9828: AA TAX C3/9829: BD 69 18 LDA $1869,X ; item number C3/982C: FA PLX C3/982D: DF E4 82 ED CMP $ED82E4,X ; check imp items C3/9831: F0 09 BEQ $983C ; branch if this is an imp item C3/9833: E8 INX C3/9834: E0 0A 00 CPX #$000A C3/9837: D0 EA BNE $9823 C3/9839: AB PLB C3/983A: 7A PLY C3/983B: 60 RTS ; imp item C3/983C: C8 INY C3/983D: 80 E2 BRA $9821 ; [ Select the Best 2-Handed Weapon in the List ] C3/983F: AF 89 9D 7E LDA $7E9D89 ; branch if there are items in the list C3/9843: F0 3C BEQ $9881 C3/9845: 85 CB STA $CB ; +$CB = number of items in list C3/9847: 64 CC STZ $CC C3/9849: 7B TDC C3/984A: A8 TAY C3/984B: 7B TDC C3/984C: AA TAX C3/984D: DA PHX C3/984E: 7B TDC C3/984F: BB TYX C3/9850: BF 8A 9D 7E LDA $7E9D8A,X ; position in inventory C3/9854: AA TAX C3/9855: BD 69 18 LDA $1869,X ; item number C3/9858: FA PLX C3/9859: DF E4 82 ED CMP $ED82E4,X ; check imp items C3/985D: F0 19 BEQ $9878 ; branch if this is an imp item C3/985F: E8 INX C3/9860: E0 0A 00 CPX #$000A ; number of imp items C3/9863: D0 E8 BNE $984D C3/9865: 85 C9 STA $C9 ; $C9 = item number C3/9867: 20 21 83 JSR $8321 ; calculate pointer to item data C3/986A: AE 34 21 LDX $2134 C3/986D: BF 13 50 D8 LDA $D85013,X ; 2-handed weapon C3/9871: 29 40 AND #$40 C3/9873: F0 03 BEQ $9878 ; branch if not 2-handed C3/9875: A5 C9 LDA $C9 C3/9877: 60 RTS ; imp item C3/9878: C8 INY C3/9879: C4 CB CPY $CB C3/987B: D0 CE BNE $984B ; branch if this is not the last item in the list C3/987D: 20 19 98 JSR $9819 ; select the best item in the list C3/9880: 60 RTS ; no suitable items C3/9881: A9 FF LDA #$FF ; empty C3/9883: 60 RTS ; [ Menu State $55: Equip (slot select, equip) ] C3/9884: 20 72 8E JSR $8E72 ; C3/9887: 20 75 99 JSR $9975 ; draw "R-Hand" and "L-Hand" text C3/988A: A5 08 LDA $08 ; A button C3/988C: 89 80 BIT #$80 C3/988E: F0 24 BEQ $98B4 ; branch if not pressed C3/9890: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/9893: A5 4E LDA $4E ; save cursor position C3/9895: 85 5F STA $5F C3/9897: A9 57 LDA #$57 ; go to menu state $57 C3/9899: 85 26 STA $26 C3/989B: 20 59 9B JSR $9B59 ; update list of equippable items C3/989E: 20 50 A1 JSR $A150 ; sort items by attack/defense power C3/98A1: 20 EB 9A JSR $9AEB ; init item list cursor C3/98A4: A9 55 LDA #$55 ; return to menu state $55 afterwards C3/98A6: 85 27 STA $27 C3/98A8: 20 33 92 JSR $9233 ; update modified stats text C3/98AB: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/98AE: 20 68 13 JSR $1368 ; wait for vblank C3/98B1: 4C AC 9C JMP $9CAC ; draw item list text C3/98B4: A5 09 LDA $09 ; B button C3/98B6: 89 80 BIT #$80 C3/98B8: F0 0E BEQ $98C8 ; branch if not down C3/98BA: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/98BD: 20 50 8E JSR $8E50 ; init cursor (equip, optimum, rmove, empty) C3/98C0: 20 59 8E JSR $8E59 ; update cursor (equip, optimum, rmove, empty) C3/98C3: A9 36 LDA #$36 ; go to menu state $36 C3/98C5: 85 26 STA $26 C3/98C7: 60 RTS C3/98C8: A9 7E LDA #$7E ; go to menu state $7E if user presses top R or L button C3/98CA: 85 E0 STA $E0 C3/98CC: 4C 22 20 JMP $2022 ; check R & L buttons ; [ Menu State $56: Equip (slot select, remove) ] C3/98CF: 20 72 8E JSR $8E72 C3/98D2: A5 08 LDA $08 C3/98D4: 89 80 BIT #$80 C3/98D6: F0 1C BEQ $98F4 C3/98D8: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/98DB: 20 F2 93 JSR $93F2 C3/98DE: C2 21 REP #$21 C3/98E0: 98 TYA C3/98E1: E2 20 SEP #$20 C3/98E3: 65 4B ADC $4B C3/98E5: A8 TAY C3/98E6: B9 1F 00 LDA $001F,Y C3/98E9: 20 5E 9D JSR $9D5E C3/98EC: A9 FF LDA #$FF C3/98EE: 99 1F 00 STA $001F,Y C3/98F1: 20 1B 91 JSR $911B C3/98F4: A5 09 LDA $09 C3/98F6: 89 80 BIT #$80 C3/98F8: F0 0E BEQ $9908 C3/98FA: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/98FD: 20 50 8E JSR $8E50 C3/9900: 20 59 8E JSR $8E59 C3/9903: A9 36 LDA #$36 C3/9905: 85 26 STA $26 C3/9907: 60 RTS C3/9908: A9 7F LDA #$7F C3/990A: 85 E0 STA $E0 C3/990C: 4C 22 20 JMP $2022 ; [ Menu State $57: Equip (item select) ] C3/990F: 20 D3 9A JSR $9AD3 C3/9912: 20 33 92 JSR $9233 C3/9915: A5 08 LDA $08 C3/9917: 89 80 BIT #$80 C3/9919: F0 29 BEQ $9944 C3/991B: 20 42 9A JSR $9A42 C3/991E: 90 4E BCC $996E C3/9920: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/9923: B9 1F 00 LDA $001F,Y C3/9926: C9 FF CMP #$FF C3/9928: F0 03 BEQ $992D C3/992A: 20 5E 9D JSR $9D5E C3/992D: 7B TDC C3/992E: A5 4B LDA $4B C3/9930: AA TAX C3/9931: BF 8A 9D 7E LDA $7E9D8A,X C3/9935: AA TAX C3/9936: BD 69 18 LDA $1869,X C3/9939: 99 1F 00 STA $001F,Y C3/993C: 20 97 9D JSR $9D97 ; remove item from inventory C3/993F: 20 1B 91 JSR $911B C3/9942: 80 09 BRA $994D C3/9944: A5 09 LDA $09 C3/9946: 89 80 BIT #$80 C3/9948: F0 23 BEQ $996D C3/994A: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/994D: 20 87 9C JSR $9C87 C3/9950: C2 20 REP #$20 C3/9952: A9 00 01 LDA #$0100 C3/9955: 8F D0 9B 7E STA $7E9BD0 C3/9959: E2 20 SEP #$20 C3/995B: A9 C1 LDA #$C1 C3/995D: 14 46 TRB $46 C3/995F: 20 6C 8E JSR $8E6C C3/9962: A5 5F LDA $5F C3/9964: 85 4E STA $4E C3/9966: 20 75 8E JSR $8E75 C3/9969: A9 55 LDA #$55 C3/996B: 85 26 STA $26 C3/996D: 60 RTS C3/996E: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/9971: 20 5D 30 JSR $305D ; create mosaic thread C3/9974: 60 RTS ; [ Draw "R-Hand" & "L-Hand" Text ] C3/9975: AD D8 11 LDA $11D8 ; gauntlet effect C3/9978: 29 08 AND #$08 C3/997A: F0 13 BEQ $998F ; branch if no gauntlet C3/997C: 20 F2 93 JSR $93F2 C3/997F: B9 1F 00 LDA $001F,Y ; right hand (main hand) C3/9982: C9 FF CMP #$FF C3/9984: F0 20 BEQ $99A6 ; branch if empty C3/9986: B9 20 00 LDA $0020,Y ; left hand (off-hand) C3/9989: C9 FF CMP #$FF C3/998B: F0 3D BEQ $99CA ; branch if empty C3/998D: 80 00 BRA $998F ; draw both hands with teal text C3/998F: A9 2C LDA #$2C ; teal text C3/9991: 85 29 STA $29 C3/9993: 20 98 99 JSR $9998 C3/9996: 80 07 BRA $999F ; draw "R-hand" text C3/9998: A0 BA A2 LDY #$A2BA ; "R-hand" C3/999B: 20 F9 02 JSR $02F9 ; draw positioned text C3/999E: 60 RTS ; draw "L-hand" text C3/999F: A0 C3 A2 LDY #$A2C3 ; "L-hand" C3/99A2: 20 F9 02 JSR $02F9 ; draw positioned text C3/99A5: 60 RTS ; gauntlet, main hand empty C3/99A6: B9 20 00 LDA $0020,Y ; left hand (off-hand) C3/99A9: C9 FF CMP #$FF C3/99AB: D0 02 BNE $99AF ; branch if not empty C3/99AD: 80 E0 BRA $998F ; both hands empty, draw both with teal text ; gauntlet, right hand empty C3/99AF: 20 21 83 JSR $8321 ; calculate pointer to item data C3/99B2: AE 34 21 LDX $2134 C3/99B5: BF 13 50 D8 LDA $D85013,X ; weapon effects C3/99B9: 29 40 AND #$40 C3/99BB: F0 D2 BEQ $998F ; branch if not 2-handed C3/99BD: A9 24 LDA #$24 ; gray text C3/99BF: 85 29 STA $29 C3/99C1: 20 98 99 JSR $9998 ; draw "R-hand" text C3/99C4: A9 2C LDA #$2C ; teal text C3/99C6: 85 29 STA $29 C3/99C8: 80 D5 BRA $999F ; draw "L-hand" text ; gauntlet, left hand empty C3/99CA: B9 1F 00 LDA $001F,Y C3/99CD: 20 21 83 JSR $8321 ; calculate pointer to item data C3/99D0: AE 34 21 LDX $2134 C3/99D3: BF 13 50 D8 LDA $D85013,X C3/99D7: 29 40 AND #$40 C3/99D9: F0 B4 BEQ $998F C3/99DB: A9 2C LDA #$2C ; teal text C3/99DD: 85 29 STA $29 C3/99DF: 20 98 99 JSR $9998 ; draw "R-hand" text C3/99E2: A9 24 LDA #$24 ; gray text C3/99E4: 85 29 STA $29 C3/99E6: 80 B7 BRA $999F ; draw "L-hand" text ; [ Update Gauntlet & Genji Glove Effects ] ; $CD = 1 for genji glove ; $A1 = 1 for gauntlet bonus ; carry set = no gauntlet bonus ; carry clear = gauntlet w/ 2-handed weapon & no shield C3/99E8: 64 CD STZ $CD ; $CD = 0 C3/99EA: AD D8 11 LDA $11D8 ; branch if character doesn't have genji glove C3/99ED: 29 10 AND #$10 C3/99EF: F0 02 BEQ $99F3 C3/99F1: E6 CD INC $CD ; $CD++ C3/99F3: 64 A1 STZ $A1 ; C3/99F5: AD D8 11 LDA $11D8 ; branch if character doesn't have gauntlet C3/99F8: 29 08 AND #$08 C3/99FA: F0 10 BEQ $9A0C C3/99FC: B9 1F 00 LDA $001F,Y ; branch if right hand is empty C3/99FF: C9 FF CMP #$FF C3/9A01: F0 0B BEQ $9A0E C3/9A03: B9 20 00 LDA $0020,Y ; branch if left hand is empty C3/9A06: C9 FF CMP #$FF C3/9A08: F0 21 BEQ $9A2B C3/9A0A: 80 00 BRA $9A0C ; set carry and return C3/9A0C: 38 SEC C3/9A0D: 60 RTS C3/9A0E: B9 20 00 LDA $0020,Y ; branch if left hand is not empty C3/9A11: C9 FF CMP #$FF C3/9A13: D0 02 BNE $9A17 C3/9A15: 80 F5 BRA $9A0C ; set carry and return C3/9A17: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9A1A: AE 34 21 LDX $2134 C3/9A1D: BF 13 50 D8 LDA $D85013,X ; weapon properties C3/9A21: 29 40 AND #$40 C3/9A23: F0 E7 BEQ $9A0C ; set carry and return if not a 2-handed weapon C3/9A25: 18 CLC C3/9A26: A9 01 LDA #$01 C3/9A28: 85 A1 STA $A1 C3/9A2A: 60 RTS C3/9A2B: B9 1F 00 LDA $001F,Y ; right hand C3/9A2E: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9A31: AE 34 21 LDX $2134 C3/9A34: BF 13 50 D8 LDA $D85013,X ; weapon properties C3/9A38: 29 40 AND #$40 C3/9A3A: F0 D0 BEQ $9A0C ; set carry and return if not a 2-handed weapon C3/9A3C: 18 CLC C3/9A3D: A9 01 LDA #$01 C3/9A3F: 85 A1 STA $A1 C3/9A41: 60 RTS ; [ Check if Selected Item Can Be Equipped ] C3/9A42: 20 4A 9A JSR $9A4A ; get pointer to current item slot C3/9A45: 7B TDC C3/9A46: A5 4B LDA $4B ; cursor position C3/9A48: 80 0C BRA $9A56 ; check if item can be equipped ; [ Get Pointer to Current Item Slot ] C3/9A4A: 20 F2 93 JSR $93F2 ; update pointer to current character data C3/9A4D: C2 21 REP #$21 C3/9A4F: 98 TYA C3/9A50: E2 20 SEP #$20 C3/9A52: 65 5F ADC $5F ; add item slot number C3/9A54: A8 TAY C3/9A55: 60 RTS ; [ Check if Item Can Be Equipped ] ; A = position in list ; +Y = pointer to current item slot ; carry set = item can be equipped, carry clear = item can't be equipped C3/9A56: 5A PHY C3/9A57: AA TAX C3/9A58: BF 8A 9D 7E LDA $7E9D8A,X ; selected item C3/9A5C: AA TAX C3/9A5D: BD 69 18 LDA $1869,X ; item number C3/9A60: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9A63: AE 34 21 LDX $2134 C3/9A66: BF 00 50 D8 LDA $D85000,X ; $F6 = item type C3/9A6A: 29 07 AND #$07 C3/9A6C: 85 F6 STA $F6 C3/9A6E: 7A PLY C3/9A6F: A5 5F LDA $5F ; selected item slot C3/9A71: C9 02 CMP #$02 C3/9A73: B0 5A BCS $9ACF ; set carry and return if helmet or armor C3/9A75: C9 01 CMP #$01 C3/9A77: F0 2C BEQ $9AA5 ; right hand is selected C3/9A79: B9 20 00 LDA $0020,Y ; left hand item C3/9A7C: C9 FF CMP #$FF C3/9A7E: F0 17 BEQ $9A97 ; set carry and return if empty C3/9A80: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9A83: AE 34 21 LDX $2134 C3/9A86: BF 00 50 D8 LDA $D85000,X ; item type C3/9A8A: 29 07 AND #$07 C3/9A8C: C9 03 CMP #$03 C3/9A8E: F0 09 BEQ $9A99 ; branch if shield C3/9A90: AD D8 11 LDA $11D8 C3/9A93: 29 10 AND #$10 C3/9A95: F0 02 BEQ $9A99 ; branch if character has genji glove effect C3/9A97: 38 SEC C3/9A98: 60 RTS C3/9A99: BF 00 50 D8 LDA $D85000,X ; item type C3/9A9D: 29 07 AND #$07 C3/9A9F: C5 F6 CMP $F6 ; clear carry and return if same as selected item C3/9AA1: F0 2E BEQ $9AD1 C3/9AA3: 38 SEC C3/9AA4: 60 RTS ; left hand is selected C3/9AA5: B9 1E 00 LDA $001E,Y ; right hand item C3/9AA8: C9 FF CMP #$FF C3/9AAA: F0 17 BEQ $9AC3 ; set carry and return if empty C3/9AAC: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9AAF: AE 34 21 LDX $2134 C3/9AB2: BF 00 50 D8 LDA $D85000,X ; item type C3/9AB6: 29 07 AND #$07 C3/9AB8: C9 03 CMP #$03 C3/9ABA: F0 09 BEQ $9AC5 ; branch if shield C3/9ABC: AD D8 11 LDA $11D8 C3/9ABF: 29 10 AND #$10 C3/9AC1: F0 02 BEQ $9AC5 ; branch if character has genji glove effect C3/9AC3: 38 SEC C3/9AC4: 60 RTS C3/9AC5: BF 00 50 D8 LDA $D85000,X ; item type C3/9AC9: 29 07 AND #$07 C3/9ACB: C5 F6 CMP $F6 ; clear carry and return if same as selected item C3/9ACD: F0 02 BEQ $9AD1 C3/9ACF: 38 SEC C3/9AD0: 60 RTS C3/9AD1: 18 CLC C3/9AD2: 60 RTS C3/9AD3: AF 89 9D 7E LDA $7E9D89 C3/9AD7: C9 0A CMP #$0A C3/9AD9: B0 03 BCS $9ADE C3/9ADB: 4C 9D 8E JMP $8E9D C3/9ADE: A9 05 LDA #$05 C3/9AE0: 85 2A STA $2A C3/9AE2: 20 64 1F JSR $1F64 ; list text page up/down C3/9AE5: B0 03 BCS $9AEA C3/9AE7: 4C 8E 8E JMP $8E8E C3/9AEA: 60 RTS ; [ Init Item List Cursor (equip/relic) ] C3/9AEB: AF 89 9D 7E LDA $7E9D89 C3/9AEF: F0 1B BEQ $9B0C C3/9AF1: C9 0A CMP #$0A C3/9AF3: B0 11 BCS $9B06 C3/9AF5: 20 C4 9D JSR $9DC4 C3/9AF8: 64 4A STZ $4A C3/9AFA: 20 97 8E JSR $8E97 C3/9AFD: AF 89 9D 7E LDA $7E9D89 C3/9B01: 85 54 STA $54 C3/9B03: 4C A0 8E JMP $8EA0 ; update cursor (single page) C3/9B06: 20 C4 9D JSR $9DC4 C3/9B09: 20 0D 9B JSR $9B0D C3/9B0C: 60 RTS C3/9B0D: 64 4A STZ $4A C3/9B0F: 20 33 09 JSR $0933 ; init scroll indicator thread (equip/relic item list) C3/9B12: C2 20 REP #$20 C3/9B14: A9 60 00 LDA #$0060 C3/9B17: 9F CA 34 7E STA $7E34CA,X C3/9B1B: A9 00 60 LDA #$6000 C3/9B1E: 8D 04 42 STA $4204 C3/9B21: E2 20 SEP #$20 C3/9B23: AF 89 9D 7E LDA $7E9D89 C3/9B27: 38 SEC C3/9B28: E9 09 SBC #$09 C3/9B2A: 8D 06 42 STA $4206 C3/9B2D: EA NOP C3/9B2E: EA NOP C3/9B2F: EA NOP C3/9B30: EA NOP C3/9B31: EA NOP C3/9B32: C2 20 REP #$20 C3/9B34: AD 14 42 LDA $4214 C3/9B37: 9F 4A 35 7E STA $7E354A,X C3/9B3B: E2 20 SEP #$20 C3/9B3D: A4 00 LDY $00 C3/9B3F: 84 4F STY $4F C3/9B41: 20 88 8E JSR $8E88 C3/9B44: 20 91 8E JSR $8E91 C3/9B47: AF 89 9D 7E LDA $7E9D89 C3/9B4B: 38 SEC C3/9B4C: E9 09 SBC #$09 C3/9B4E: 85 5C STA $5C C3/9B50: A9 09 LDA #$09 C3/9B52: 85 5A STA $5A C3/9B54: A9 01 LDA #$01 C3/9B56: 85 5B STA $5B C3/9B58: 60 RTS ; [ Update List of Equippable Items ] ; $4B = cursor position (0 = weapon, 1 = shield, 2 = helmet, 3 = armor) equallitem_make: C3/9B59: 20 2A 9C JSR $9C2A ; clear list of optimum items C3/9B5C: 20 41 9C JSR $9C41 ; get character equippability mask C3/9B5F: A9 20 LDA #$20 C3/9B61: 85 29 STA $29 C3/9B63: A5 4B LDA $4B ; cursor position C3/9B65: C9 02 CMP #$02 C3/9B67: F0 49 BEQ $9BB2 ; branch if helmet C3/9B69: C9 03 CMP #$03 C3/9B6B: F0 02 BEQ $9B6F ; branch if armor C3/9B6D: 80 03 BRA $9B72 ; branch if weapon or shield C3/9B6F: 4C EE 9B JMP $9BEE ; weapon or shield C3/9B72: A6 00 LDX $00 C3/9B74: 9B TXY C3/9B75: 7B TDC C3/9B76: B9 69 18 LDA $1869,Y ; item number C3/9B79: C9 FF CMP #$FF C3/9B7B: F0 26 BEQ $9BA3 ; branch if empty C3/9B7D: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9B80: AE 34 21 LDX $2134 C3/9B83: BF 00 50 D8 LDA $D85000,X ; item type C3/9B87: 29 07 AND #$07 C3/9B89: C9 01 CMP #$01 C3/9B8B: F0 04 BEQ $9B91 ; branch if weapon C3/9B8D: C9 03 CMP #$03 C3/9B8F: D0 12 BNE $9BA3 ; skip if not shield C3/9B91: C2 20 REP #$20 C3/9B93: BF 01 50 D8 LDA $D85001,X ; equippable characters C3/9B97: 24 E7 BIT $E7 C3/9B99: F0 08 BEQ $9BA3 ; branch if not equippable C3/9B9B: E2 20 SEP #$20 C3/9B9D: 98 TYA C3/9B9E: 8D 80 21 STA $2180 ; add to list of possible items C3/9BA1: E6 E0 INC $E0 ; increment number of possible items C3/9BA3: E2 20 SEP #$20 ; next item C3/9BA5: C8 INY C3/9BA6: C0 FF 00 CPY #$00FF C3/9BA9: D0 CA BNE $9B75 C3/9BAB: A5 E0 LDA $E0 ; set length of list C3/9BAD: 8F 89 9D 7E STA $7E9D89 C3/9BB1: 60 RTS ; helmet C3/9BB2: A6 00 LDX $00 C3/9BB4: 9B TXY C3/9BB5: 7B TDC C3/9BB6: B9 69 18 LDA $1869,Y C3/9BB9: C9 FF CMP #$FF C3/9BBB: F0 22 BEQ $9BDF C3/9BBD: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9BC0: AE 34 21 LDX $2134 C3/9BC3: BF 00 50 D8 LDA $D85000,X C3/9BC7: 29 07 AND #$07 C3/9BC9: C9 04 CMP #$04 C3/9BCB: D0 12 BNE $9BDF C3/9BCD: C2 20 REP #$20 C3/9BCF: BF 01 50 D8 LDA $D85001,X C3/9BD3: 24 E7 BIT $E7 C3/9BD5: F0 08 BEQ $9BDF C3/9BD7: E2 20 SEP #$20 C3/9BD9: 98 TYA C3/9BDA: 8D 80 21 STA $2180 C3/9BDD: E6 E0 INC $E0 C3/9BDF: E2 20 SEP #$20 C3/9BE1: C8 INY C3/9BE2: C0 FF 00 CPY #$00FF C3/9BE5: D0 CE BNE $9BB5 C3/9BE7: A5 E0 LDA $E0 C3/9BE9: 8F 89 9D 7E STA $7E9D89 C3/9BED: 60 RTS ; armor C3/9BEE: A6 00 LDX $00 C3/9BF0: 9B TXY C3/9BF1: 7B TDC C3/9BF2: B9 69 18 LDA $1869,Y C3/9BF5: C9 FF CMP #$FF C3/9BF7: F0 22 BEQ $9C1B C3/9BF9: 20 21 83 JSR $8321 ; calculate pointer to item data C3/9BFC: AE 34 21 LDX $2134 C3/9BFF: BF 00 50 D8 LDA $D85000,X C3/9C03: 29 07 AND #$07 C3/9C05: C9 02 CMP #$02 C3/9C07: D0 12 BNE $9C1B C3/9C09: C2 20 REP #$20 C3/9C0B: BF 01 50 D8 LDA $D85001,X C3/9C0F: 24 E7 BIT $E7 C3/9C11: F0 08 BEQ $9C1B C3/9C13: E2 20 SEP #$20 C3/9C15: 98 TYA C3/9C16: 8D 80 21 STA $2180 C3/9C19: E6 E0 INC $E0 C3/9C1B: E2 20 SEP #$20 C3/9C1D: C8 INY C3/9C1E: C0 FF 00 CPY #$00FF C3/9C21: D0 CE BNE $9BF1 C3/9C23: A5 E0 LDA $E0 C3/9C25: 8F 89 9D 7E STA $7E9D89 C3/9C29: 60 RTS ; [ Clear List of Optimum Items ] temp_buf_init: C3/9C2A: A6 00 LDX $00 C3/9C2C: A9 FF LDA #$FF C3/9C2E: 9F 8A 9D 7E STA $7E9D8A,X C3/9C32: E8 INX C3/9C33: E0 09 00 CPX #$0009 C3/9C36: D0 F6 BNE $9C2E C3/9C38: A2 8A 9D LDX #$9D8A C3/9C3B: 8E 81 21 STX $2181 C3/9C3E: 64 E0 STZ $E0 ; $E0 = number of possible items C3/9C40: 60 RTS ; [ Get Character Equippability Mask ] ; +$E7 = mask chrequinf_get: C3/9C41: 20 F2 93 JSR $93F2 C3/9C44: 7B TDC C3/9C45: B9 00 00 LDA $0000,Y ; actor number chrequinf_get1: C3/9C48: 0A ASL C3/9C49: AA TAX C3/9C4A: C2 20 REP #$20 C3/9C4C: BF 67 9C C3 LDA $C39C67,X C3/9C50: 85 E7 STA $E7 C3/9C52: E2 20 SEP #$20 C3/9C54: AD D8 11 LDA $11D8 C3/9C57: 29 20 AND #$20 C3/9C59: F0 0B BEQ $9C66 C3/9C5B: C2 20 REP #$20 C3/9C5D: A5 E7 LDA $E7 C3/9C5F: 09 00 80 ORA #$8000 C3/9C62: 85 E7 STA $E7 C3/9C64: E2 20 SEP #$20 C3/9C66: 60 RTS ; character equippability masks C3/9C67: .DW $0001, $0002, $0004, $0008, $0010, $0020, $0040, $0080 C3/9C77: .DW $0100, $0200, $0400, $0800, $1000, $2000, $4000, $8000 ; [ Clear Modified Stats Text ] C3/9C87: 7B TDC C3/9C88: AA TAX C3/9C89: A0 09 00 LDY #$0009 ; clear 9 lines C3/9C8C: C2 20 REP #$20 C3/9C8E: 9F BF 7C 7E STA $7E7CBF,X ; clear 100's digit C3/9C92: E8 INX C3/9C93: E8 INX C3/9C94: 9F BF 7C 7E STA $7E7CBF,X ; clear 10's digit C3/9C98: E8 INX C3/9C99: E8 INX C3/9C9A: 9F BF 7C 7E STA $7E7CBF,X ; clear 1's digit C3/9C9E: E8 INX C3/9C9F: E8 INX C3/9CA0: 8A TXA C3/9CA1: 18 CLC C3/9CA2: 69 7A 00 ADC #$007A ; next line C3/9CA5: AA TAX C3/9CA6: 88 DEY C3/9CA7: D0 E5 BNE $9C8E C3/9CA9: E2 20 SEP #$20 C3/9CAB: 60 RTS ; [ Draw Item List Text (equip/relic) ] C3/9CAC: AF 89 9D 7E LDA $7E9D89 C3/9CB0: F0 2B BEQ $9CDD C3/9CB2: 20 F7 83 JSR $83F7 C3/9CB5: 7B TDC C3/9CB6: AF 89 9D 7E LDA $7E9D89 C3/9CBA: C9 09 CMP #$09 C3/9CBC: 90 02 BCC $9CC0 C3/9CBE: A9 09 LDA #$09 C3/9CC0: A8 TAY C3/9CC1: 5A PHY C3/9CC2: 20 E2 9C JSR $9CE2 C3/9CC5: E6 E5 INC $E5 C3/9CC7: A5 E6 LDA $E6 C3/9CC9: 1A INC C3/9CCA: 1A INC C3/9CCB: 29 1F AND #$1F C3/9CCD: 85 E6 STA $E6 C3/9CCF: 7A PLY C3/9CD0: 88 DEY C3/9CD1: D0 EE BNE $9CC1 C3/9CD3: C2 20 REP #$20 C3/9CD5: 7B TDC C3/9CD6: 8F D0 9B 7E STA $7E9BD0 C3/9CDA: E2 20 SEP #$20 C3/9CDC: 60 RTS C3/9CDD: A5 27 LDA $27 C3/9CDF: 85 26 STA $26 C3/9CE1: 60 RTS C3/9CE2: 20 4A 9A JSR $9A4A C3/9CE5: 7B TDC C3/9CE6: A5 E5 LDA $E5 C3/9CE8: 20 56 9A JSR $9A56 C3/9CEB: B0 04 BCS $9CF1 C3/9CED: A9 28 LDA #$28 C3/9CEF: 80 02 BRA $9CF3 C3/9CF1: A9 20 LDA #$20 C3/9CF3: 85 29 STA $29 C3/9CF5: A5 E6 LDA $E6 C3/9CF7: 1A INC C3/9CF8: A2 02 00 LDX #$0002 C3/9CFB: 20 9F 80 JSR $809F C3/9CFE: C2 20 REP #$20 C3/9D00: 8A TXA C3/9D01: 8F 89 9E 7E STA $7E9E89 C3/9D05: E2 20 SEP #$20 C3/9D07: 7B TDC C3/9D08: A5 E5 LDA $E5 C3/9D0A: A8 TAY C3/9D0B: 20 11 9D JSR $9D11 C3/9D0E: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/9D11: A2 8B 9E LDX #$9E8B C3/9D14: 8E 81 21 STX $2181 C3/9D17: AD 12 42 LDA $4212 C3/9D1A: 29 40 AND #$40 C3/9D1C: F0 F9 BEQ $9D17 C3/9D1E: BB TYX C3/9D1F: 7B TDC C3/9D20: BF 8A 9D 7E LDA $7E9D8A,X C3/9D24: A8 TAY C3/9D25: B9 69 18 LDA $1869,Y C3/9D28: C9 FF CMP #$FF C3/9D2A: F0 23 BEQ $9D4F C3/9D2C: 8D 1B 21 STA $211B C3/9D2F: 9C 1B 21 STZ $211B C3/9D32: A9 0D LDA #$0D C3/9D34: 8D 1C 21 STA $211C C3/9D37: 8D 1C 21 STA $211C C3/9D3A: AE 34 21 LDX $2134 C3/9D3D: A0 0D 00 LDY #$000D C3/9D40: BF 00 B3 D2 LDA $D2B300,X C3/9D44: 8D 80 21 STA $2180 C3/9D47: E8 INX C3/9D48: 88 DEY C3/9D49: D0 F5 BNE $9D40 C3/9D4B: 9C 80 21 STZ $2180 C3/9D4E: 60 RTS C3/9D4F: A0 0D 00 LDY #$000D C3/9D52: A9 FF LDA #$FF C3/9D54: 8D 80 21 STA $2180 C3/9D57: 88 DEY C3/9D58: D0 FA BNE $9D54 C3/9D5A: 9C 80 21 STZ $2180 C3/9D5D: 60 RTS ; [ Add Item to Inventory ] ; A = item number itemcnt_inc: C3/9D5E: 5A PHY C3/9D5F: 85 E0 STA $E0 C3/9D61: A4 00 LDY $00 C3/9D63: D9 69 18 CMP $1869,Y C3/9D66: F0 22 BEQ $9D8A C3/9D68: C9 FF CMP #$FF C3/9D6A: F0 29 BEQ $9D95 C3/9D6C: C8 INY C3/9D6D: C0 00 01 CPY #$0100 C3/9D70: D0 F1 BNE $9D63 C3/9D72: A4 00 LDY $00 C3/9D74: B9 69 18 LDA $1869,Y C3/9D77: C9 FF CMP #$FF C3/9D79: F0 03 BEQ $9D7E C3/9D7B: C8 INY C3/9D7C: 80 F6 BRA $9D74 C3/9D7E: A9 01 LDA #$01 C3/9D80: 99 69 19 STA $1969,Y C3/9D83: A5 E0 LDA $E0 C3/9D85: 99 69 18 STA $1869,Y C3/9D88: 80 0B BRA $9D95 C3/9D8A: B9 69 19 LDA $1969,Y C3/9D8D: C9 63 CMP #$63 C3/9D8F: F0 04 BEQ $9D95 C3/9D91: 1A INC C3/9D92: 99 69 19 STA $1969,Y C3/9D95: 7A PLY C3/9D96: 60 RTS ; [ Remove Item from Inventory ] ; A = item number C3/9D97: 5A PHY C3/9D98: 85 E0 STA $E0 C3/9D9A: A4 00 LDY $00 C3/9D9C: D9 69 18 CMP $1869,Y C3/9D9F: F0 08 BEQ $9DA9 C3/9DA1: C8 INY C3/9DA2: C0 00 01 CPY #$0100 C3/9DA5: D0 F5 BNE $9D9C C3/9DA7: 7A PLY C3/9DA8: 60 RTS C3/9DA9: B9 69 19 LDA $1969,Y C3/9DAC: C9 01 CMP #$01 C3/9DAE: F0 09 BEQ $9DB9 C3/9DB0: B9 69 19 LDA $1969,Y C3/9DB3: 3A DEC C3/9DB4: 99 69 19 STA $1969,Y C3/9DB7: 80 09 BRA $9DC2 C3/9DB9: 7B TDC C3/9DBA: 99 69 19 STA $1969,Y C3/9DBD: A9 FF LDA #$FF C3/9DBF: 99 69 18 STA $1869,Y C3/9DC2: 7A PLY C3/9DC3: 60 RTS C3/9DC4: A9 02 LDA #$02 C3/9DC6: A0 DD 9D LDY #$9DDD C3/9DC9: 20 73 11 JSR $1173 ; create thread C3/9DCC: C2 20 REP #$20 C3/9DCE: A5 55 LDA $55 C3/9DD0: 9F CA 33 7E STA $7E33CA,X C3/9DD4: A5 57 LDA $57 C3/9DD6: 9F 4A 34 7E STA $7E344A,X C3/9DDA: E2 20 SEP #$20 C3/9DDC: 60 RTS C3/9DDD: AA TAX C3/9DDE: 7C E1 9D JMP ($9DE1,X) C3/9DE1: .DW $9DE5, $9E00 C3/9DE5: A6 2D LDX $2D C3/9DE7: A9 01 LDA #$01 C3/9DE9: 04 46 TSB $46 C3/9DEB: C2 20 REP #$20 C3/9DED: A9 8D 08 LDA #$088D C3/9DF0: 9D C9 32 STA $32C9,X C3/9DF3: E2 20 SEP #$20 C3/9DF5: A9 C3 LDA #$C3 C3/9DF7: 9D CA 35 STA $35CA,X C3/9DFA: 20 06 12 JSR $1206 ; init animation thread C3/9DFD: FE 49 36 INC $3649,X C3/9E00: A5 46 LDA $46 C3/9E02: 89 01 BIT #$01 C3/9E04: F0 07 BEQ $9E0D C3/9E06: A6 2D LDX $2D C3/9E08: 20 21 12 JSR $1221 ; update animation thread C3/9E0B: 38 SEC C3/9E0C: 60 RTS C3/9E0D: 18 CLC C3/9E0E: 60 RTS C3/9E0F: 20 23 9E JSR $9E23 C3/9E12: 80 23 BRA $9E37 C3/9E14: 20 37 9E JSR $9E37 C3/9E17: AD 1E 02 LDA $021E C3/9E1A: 29 01 AND #$01 C3/9E1C: F0 02 BEQ $9E20 C3/9E1E: 80 03 BRA $9E23 C3/9E20: 4C 91 A9 JMP $A991 C3/9E23: A0 00 40 LDY #$4000 C3/9E26: 84 1B STY $1B C3/9E28: A0 49 78 LDY #$7849 C3/9E2B: 84 1D STY $1D C3/9E2D: A9 7E LDA #$7E C3/9E2F: 85 1F STA $1F C3/9E31: A0 80 08 LDY #$0880 C3/9E34: 84 19 STY $19 C3/9E36: 60 RTS C3/9E37: A0 00 00 LDY #$0000 C3/9E3A: 84 14 STY $14 C3/9E3C: A0 49 38 LDY #$3849 C3/9E3F: 84 16 STY $16 C3/9E41: A9 7E LDA #$7E C3/9E43: 85 18 STA $18 C3/9E45: A0 00 08 LDY #$0800 C3/9E48: 84 12 STY $12 C3/9E4A: 60 RTS ; [ Menu State $58: ] C3/9E4B: 20 50 9E JSR $9E50 C3/9E4E: 80 1F BRA $9E6F C3/9E50: 20 2F 35 JSR $352F ; disable interrupts C3/9E53: 20 08 6A JSR $6A08 C3/9E56: 64 4A STZ $4A C3/9E58: 64 49 STZ $49 C3/9E5A: A9 10 LDA #$10 C3/9E5C: 04 45 TSB $45 C3/9E5E: 64 99 STZ $99 C3/9E60: 20 99 1B JSR $1B99 C3/9E63: 20 B6 94 JSR $94B6 C3/9E66: 20 BD 8E JSR $8EBD C3/9E69: 20 C6 8E JSR $8EC6 C3/9E6C: 4C B0 07 JMP $07B0 ; create cursor sprite thread C3/9E6F: 20 6A 90 JSR $906A C3/9E72: A9 01 LDA #$01 C3/9E74: 85 26 STA $26 C3/9E76: A9 59 LDA #$59 C3/9E78: 85 27 STA $27 C3/9E7A: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $79: ] C3/9E7D: 20 99 9E JSR $9E99 C3/9E80: 20 4F 96 JSR $964F C3/9E83: 20 A8 9E JSR $9EA8 C3/9E86: A9 5A LDA #$5A C3/9E88: 4C B3 9E JMP $9EB3 ; [ Menu State $7A: ] C3/9E8B: 20 99 9E JSR $9E99 C3/9E8E: 20 56 96 JSR $9656 C3/9E91: 20 A8 9E JSR $9EA8 C3/9E94: A9 5C LDA #$5C C3/9E96: 4C B3 9E JMP $9EB3 C3/9E99: 20 50 9E JSR $9E50 C3/9E9C: 20 6A 90 JSR $906A C3/9E9F: 20 37 9E JSR $9E37 C3/9EA2: 20 23 9E JSR $9E23 C3/9EA5: 4C 14 96 JMP $9614 C3/9EA8: 20 D5 8E JSR $8ED5 C3/9EAB: 20 DE 8E JSR $8EDE C3/9EAE: A9 01 LDA #$01 C3/9EB0: 85 26 STA $26 C3/9EB2: 60 RTS C3/9EB3: 85 27 STA $27 C3/9EB5: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $59: ] C3/9EB8: 20 23 9E JSR $9E23 C3/9EBB: 20 0C 96 JSR $960C C3/9EBE: 20 5C 90 JSR $905C C3/9EC1: 20 C3 8E JSR $8EC3 C3/9EC4: A5 08 LDA $08 C3/9EC6: 89 80 BIT #$80 C3/9EC8: F0 06 BEQ $9ED0 C3/9ECA: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/9ECD: 4C CF 9F JMP $9FCF C3/9ED0: A5 09 LDA $09 C3/9ED2: 89 80 BIT #$80 C3/9ED4: F0 06 BEQ $9EDC C3/9ED6: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/9ED9: 20 EB 9E JSR $9EEB C3/9EDC: 20 E6 9E JSR $9EE6 C3/9EDF: A9 58 LDA #$58 C3/9EE1: 85 E0 STA $E0 C3/9EE3: 4C 22 20 JMP $2022 C3/9EE6: A5 26 LDA $26 C3/9EE8: 85 D1 STA $D1 C3/9EEA: 60 RTS C3/9EEB: 20 10 91 JSR $9110 ; update character battle stats C3/9EEE: 20 F2 93 JSR $93F2 C3/9EF1: B9 00 00 LDA $0000,Y C3/9EF4: C9 0D CMP #$0D C3/9EF6: F0 07 BEQ $9EFF C3/9EF8: 20 5C 9F JSR $9F5C C3/9EFB: A5 99 LDA $99 C3/9EFD: D0 07 BNE $9F06 C3/9EFF: A9 04 LDA #$04 C3/9F01: 85 27 STA $27 C3/9F03: 64 26 STZ $26 C3/9F05: 60 RTS C3/9F06: A9 06 LDA #$06 C3/9F08: 14 46 TRB $46 C3/9F0A: 20 37 9E JSR $9E37 C3/9F0D: 20 23 9E JSR $9E23 C3/9F10: 20 1C 9F JSR $9F1C C3/9F13: A9 F0 LDA #$F0 C3/9F15: 85 22 STA $22 C3/9F17: A9 6C LDA #$6C C3/9F19: 85 26 STA $26 C3/9F1B: 60 RTS C3/9F1C: 20 5D 96 JSR $965D C3/9F1F: A0 0F A4 LDY #$A40F C3/9F22: 20 F9 02 JSR $02F9 ; draw positioned text C3/9F25: AD 4E 1D LDA $1D4E C3/9F28: 29 10 AND #$10 C3/9F2A: F0 18 BEQ $9F44 C3/9F2C: A9 6E LDA #$6E C3/9F2E: 85 27 STA $27 C3/9F30: A5 D1 LDA $D1 C3/9F32: C9 59 CMP #$59 C3/9F34: F0 07 BEQ $9F3D C3/9F36: A0 FD A3 LDY #$A3FD C3/9F39: 20 F9 02 JSR $02F9 ; draw positioned text C3/9F3C: 60 RTS C3/9F3D: A0 EB A3 LDY #$A3EB C3/9F40: 20 F9 02 JSR $02F9 ; draw positioned text C3/9F43: 60 RTS C3/9F44: A9 6D LDA #$6D C3/9F46: 85 27 STA $27 C3/9F48: A5 D1 LDA $D1 C3/9F4A: C9 59 CMP #$59 C3/9F4C: F0 07 BEQ $9F55 C3/9F4E: A0 05 A4 LDY #$A405 C3/9F51: 20 F9 02 JSR $02F9 ; draw positioned text C3/9F54: 60 RTS C3/9F55: A0 F3 A3 LDY #$A3F3 C3/9F58: 20 F9 02 JSR $02F9 ; draw positioned text C3/9F5B: 60 RTS C3/9F5C: 20 F2 93 JSR $93F2 C3/9F5F: B9 23 00 LDA $0023,Y C3/9F62: C5 B0 CMP $B0 C3/9F64: D0 09 BNE $9F6F C3/9F66: B9 24 00 LDA $0024,Y C3/9F69: C5 B1 CMP $B1 C3/9F6B: D0 02 BNE $9F6F C3/9F6D: 80 3A BRA $9FA9 C3/9F6F: A5 B0 LDA $B0 C3/9F71: C9 D1 CMP #$D1 C3/9F73: F0 37 BEQ $9FAC C3/9F75: C9 D0 CMP #$D0 C3/9F77: F0 33 BEQ $9FAC C3/9F79: C9 DA CMP #$DA C3/9F7B: F0 2F BEQ $9FAC C3/9F7D: A5 B1 LDA $B1 C3/9F7F: C9 D1 CMP #$D1 C3/9F81: F0 29 BEQ $9FAC C3/9F83: C9 D0 CMP #$D0 C3/9F85: F0 25 BEQ $9FAC C3/9F87: C9 DA CMP #$DA C3/9F89: F0 21 BEQ $9FAC C3/9F8B: B9 23 00 LDA $0023,Y C3/9F8E: C9 D1 CMP #$D1 C3/9F90: F0 1A BEQ $9FAC C3/9F92: C9 D0 CMP #$D0 C3/9F94: F0 16 BEQ $9FAC C3/9F96: C9 DA CMP #$DA C3/9F98: F0 12 BEQ $9FAC C3/9F9A: B9 24 00 LDA $0024,Y C3/9F9D: C9 D1 CMP #$D1 C3/9F9F: F0 0B BEQ $9FAC C3/9FA1: C9 D0 CMP #$D0 C3/9FA3: F0 07 BEQ $9FAC C3/9FA5: C9 DA CMP #$DA C3/9FA7: F0 03 BEQ $9FAC C3/9FA9: 64 99 STZ $99 C3/9FAB: 60 RTS C3/9FAC: A9 01 LDA #$01 C3/9FAE: 85 99 STA $99 C3/9FB0: 60 RTS ; [ Menu State $6C: ] C3/9FB1: A5 22 LDA $22 C3/9FB3: D0 03 BNE $9FB8 C3/9FB5: 64 26 STZ $26 C3/9FB7: 60 RTS C3/9FB8: C6 22 DEC $22 C3/9FBA: A5 08 LDA $08 C3/9FBC: 89 10 BIT #$10 C3/9FBE: D0 0C BNE $9FCC C3/9FC0: A5 08 LDA $08 C3/9FC2: 89 20 BIT #$20 C3/9FC4: D0 06 BNE $9FCC C3/9FC6: A5 09 LDA $09 C3/9FC8: 89 80 BIT #$80 C3/9FCA: F0 02 BEQ $9FCE C3/9FCC: 64 26 STZ $26 C3/9FCE: 60 RTS C3/9FCF: 7B TDC C3/9FD0: A5 4B LDA $4B C3/9FD2: 0A ASL C3/9FD3: AA TAX C3/9FD4: 7C D7 9F JMP ($9FD7,X) C3/9FD7: .DW $9FDB, $9FEC C3/9FDB: 20 14 96 JSR $9614 C3/9FDE: 20 4F 96 JSR $964F C3/9FE1: 20 D5 8E JSR $8ED5 C3/9FE4: 20 DE 8E JSR $8EDE C3/9FE7: A9 5A LDA #$5A C3/9FE9: 85 26 STA $26 C3/9FEB: 60 RTS C3/9FEC: 20 14 96 JSR $9614 C3/9FEF: 20 56 96 JSR $9656 C3/9FF2: 20 D5 8E JSR $8ED5 C3/9FF5: 20 DE 8E JSR $8EDE C3/9FF8: A9 5C LDA #$5C C3/9FFA: 85 26 STA $26 C3/9FFC: 60 RTS ; [ Menu State $5A: ] C3/9FFD: 20 14 9E JSR $9E14 C3/A000: 20 DB 8E JSR $8EDB C3/A003: A5 08 LDA $08 C3/A005: 89 80 BIT #$80 C3/A007: F0 2A BEQ $A033 C3/A009: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/A00C: A5 4E LDA $4E C3/A00E: 85 5F STA $5F C3/A010: A9 5B LDA #$5B C3/A012: 85 26 STA $26 C3/A014: 20 51 A0 JSR $A051 C3/A017: 20 50 A1 JSR $A150 C3/A01A: 20 EB 9A JSR $9AEB C3/A01D: A9 5A LDA #$5A C3/A01F: 85 27 STA $27 C3/A021: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/A024: 20 68 13 JSR $1368 ; wait for vblank C3/A027: 20 AC 9C JSR $9CAC C3/A02A: 20 33 92 JSR $9233 C3/A02D: 20 23 9E JSR $9E23 C3/A030: 4C 68 13 JMP $1368 ; wait for vblank C3/A033: A5 09 LDA $09 C3/A035: 89 80 BIT #$80 C3/A037: F0 0E BEQ $A047 C3/A039: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/A03C: 20 BD 8E JSR $8EBD C3/A03F: 20 C6 8E JSR $8EC6 C3/A042: A9 59 LDA #$59 C3/A044: 85 26 STA $26 C3/A046: 60 RTS C3/A047: 20 E6 9E JSR $9EE6 C3/A04A: A9 79 LDA #$79 C3/A04C: 85 E0 STA $E0 C3/A04E: 4C 22 20 JMP $2022 C3/A051: 20 2A 9C JSR $9C2A C3/A054: 20 41 9C JSR $9C41 C3/A057: A9 20 LDA #$20 C3/A059: 85 29 STA $29 C3/A05B: A6 00 LDX $00 C3/A05D: 9B TXY C3/A05E: 7B TDC C3/A05F: B9 69 18 LDA $1869,Y C3/A062: C9 FF CMP #$FF C3/A064: F0 22 BEQ $A088 C3/A066: 20 21 83 JSR $8321 ; calculate pointer to item data C3/A069: AE 34 21 LDX $2134 C3/A06C: BF 00 50 D8 LDA $D85000,X C3/A070: 29 07 AND #$07 C3/A072: C9 05 CMP #$05 C3/A074: D0 12 BNE $A088 C3/A076: C2 20 REP #$20 C3/A078: BF 01 50 D8 LDA $D85001,X C3/A07C: 24 E7 BIT $E7 C3/A07E: F0 08 BEQ $A088 C3/A080: E2 20 SEP #$20 C3/A082: 98 TYA C3/A083: 8D 80 21 STA $2180 C3/A086: E6 E0 INC $E0 C3/A088: E2 20 SEP #$20 C3/A08A: C8 INY C3/A08B: C0 00 01 CPY #$0100 C3/A08E: D0 CE BNE $A05E C3/A090: A5 E0 LDA $E0 C3/A092: 8F 89 9D 7E STA $7E9D89 C3/A096: 60 RTS ; [ Menu State $5B: ] C3/A097: A9 10 LDA #$10 C3/A099: 14 45 TRB $45 C3/A09B: 20 14 9E JSR $9E14 C3/A09E: 20 D3 9A JSR $9AD3 C3/A0A1: 20 33 92 JSR $9233 C3/A0A4: 20 D8 A1 JSR $A1D8 C3/A0A7: A5 08 LDA $08 C3/A0A9: 89 80 BIT #$80 C3/A0AB: F0 2F BEQ $A0DC C3/A0AD: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/A0B0: 20 F2 93 JSR $93F2 C3/A0B3: C2 21 REP #$21 C3/A0B5: 98 TYA C3/A0B6: E2 20 SEP #$20 C3/A0B8: 65 5F ADC $5F C3/A0BA: A8 TAY C3/A0BB: B9 23 00 LDA $0023,Y C3/A0BE: C9 FF CMP #$FF C3/A0C0: F0 03 BEQ $A0C5 C3/A0C2: 20 5E 9D JSR $9D5E C3/A0C5: 7B TDC C3/A0C6: A5 4B LDA $4B C3/A0C8: AA TAX C3/A0C9: BF 8A 9D 7E LDA $7E9D8A,X C3/A0CD: AA TAX C3/A0CE: BD 69 18 LDA $1869,X C3/A0D1: 99 23 00 STA $0023,Y C3/A0D4: 20 97 9D JSR $9D97 ; remove item from inventory C3/A0D7: 20 31 91 JSR $9131 C3/A0DA: 80 09 BRA $A0E5 C3/A0DC: A5 09 LDA $09 C3/A0DE: 89 80 BIT #$80 C3/A0E0: F0 27 BEQ $A109 C3/A0E2: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/A0E5: A9 10 LDA #$10 C3/A0E7: 04 45 TSB $45 C3/A0E9: 20 87 9C JSR $9C87 C3/A0EC: C2 20 REP #$20 C3/A0EE: A9 00 01 LDA #$0100 C3/A0F1: 8F D0 9B 7E STA $7E9BD0 C3/A0F5: E2 20 SEP #$20 C3/A0F7: A9 C1 LDA #$C1 C3/A0F9: 14 46 TRB $46 C3/A0FB: 20 D5 8E JSR $8ED5 C3/A0FE: A5 5F LDA $5F C3/A100: 85 4E STA $4E C3/A102: 20 DE 8E JSR $8EDE C3/A105: A9 5A LDA #$5A C3/A107: 85 26 STA $26 C3/A109: 60 RTS ; [ Menu State $5C: ] C3/A10A: 20 23 9E JSR $9E23 C3/A10D: 20 DB 8E JSR $8EDB C3/A110: A5 08 LDA $08 C3/A112: 89 80 BIT #$80 C3/A114: F0 1C BEQ $A132 C3/A116: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/A119: 20 F2 93 JSR $93F2 C3/A11C: C2 21 REP #$21 C3/A11E: 98 TYA C3/A11F: E2 20 SEP #$20 C3/A121: 65 4B ADC $4B C3/A123: A8 TAY C3/A124: B9 23 00 LDA $0023,Y C3/A127: 20 5E 9D JSR $9D5E C3/A12A: A9 FF LDA #$FF C3/A12C: 99 23 00 STA $0023,Y C3/A12F: 20 31 91 JSR $9131 C3/A132: A5 09 LDA $09 C3/A134: 89 80 BIT #$80 C3/A136: F0 0E BEQ $A146 C3/A138: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/A13B: 20 BD 8E JSR $8EBD C3/A13E: 20 C6 8E JSR $8EC6 C3/A141: A9 59 LDA #$59 C3/A143: 85 26 STA $26 C3/A145: 60 RTS C3/A146: 20 E6 9E JSR $9EE6 C3/A149: A9 7A LDA #$7A C3/A14B: 85 E0 STA $E0 C3/A14D: 4C 22 20 JMP $2022 ; [ Sort Items by Attack/Defense Power ] C3/A150: A2 8D AC LDX #$AC8D C3/A153: 8E 81 21 STX $2181 C3/A156: AF 89 9D 7E LDA $7E9D89 C3/A15A: F0 2A BEQ $A186 C3/A15C: C9 01 CMP #$01 C3/A15E: F0 26 BEQ $A186 C3/A160: 85 E7 STA $E7 C3/A162: 64 E8 STZ $E8 C3/A164: 7B TDC C3/A165: AA TAX C3/A166: A8 TAY C3/A167: BF 8A 9D 7E LDA $7E9D8A,X C3/A16B: DA PHX C3/A16C: A8 TAY C3/A16D: B9 69 18 LDA $1869,Y C3/A170: 20 21 83 JSR $8321 ; calculate pointer to item data C3/A173: AE 34 21 LDX $2134 C3/A176: BF 14 50 D8 LDA $D85014,X ; attack/defense power C3/A17A: 8D 80 21 STA $2180 C3/A17D: FA PLX C3/A17E: E8 INX C3/A17F: E4 E7 CPX $E7 C3/A181: D0 E4 BNE $A167 C3/A183: 20 87 A1 JSR $A187 C3/A186: 60 RTS ; [ Put Item List in Order of Decreasing Attack/Defense Power ] C3/A187: C6 E7 DEC $E7 C3/A189: 8B PHB C3/A18A: A9 7E LDA #$7E C3/A18C: 48 PHA C3/A18D: AB PLB C3/A18E: 7B TDC C3/A18F: A8 TAY C3/A190: 7B TDC C3/A191: AA TAX C3/A192: BD 8D AC LDA $AC8D,X ; item number C3/A195: DD 8E AC CMP $AC8E,X C3/A198: B0 1D BCS $A1B7 C3/A19A: 85 E0 STA $E0 C3/A19C: BD 8A 9D LDA $9D8A,X C3/A19F: 85 E1 STA $E1 C3/A1A1: BD 8E AC LDA $AC8E,X C3/A1A4: 9D 8D AC STA $AC8D,X C3/A1A7: BD 8B 9D LDA $9D8B,X C3/A1AA: 9D 8A 9D STA $9D8A,X C3/A1AD: A5 E0 LDA $E0 C3/A1AF: 9D 8E AC STA $AC8E,X C3/A1B2: A5 E1 LDA $E1 C3/A1B4: 9D 8B 9D STA $9D8B,X C3/A1B7: E8 INX ; C3/A1B8: E4 E7 CPX $E7 C3/A1BA: D0 D6 BNE $A192 C3/A1BC: C8 INY ; C3/A1BD: C4 E7 CPY $E7 C3/A1BF: D0 CF BNE $A190 C3/A1C1: AB PLB C3/A1C2: 60 RTS C3/A1C3: 20 08 83 JSR $8308 C3/A1C6: 20 F2 93 JSR $93F2 C3/A1C9: A5 4B LDA $4B C3/A1CB: D0 05 BNE $A1D2 C3/A1CD: B9 23 00 LDA $0023,Y C3/A1D0: 80 03 BRA $A1D5 C3/A1D2: B9 24 00 LDA $0024,Y C3/A1D5: 4C 38 57 JMP $5738 C3/A1D8: 20 08 83 JSR $8308 C3/A1DB: 7B TDC C3/A1DC: A5 4B LDA $4B C3/A1DE: AA TAX C3/A1DF: BF 8A 9D 7E LDA $7E9D8A,X C3/A1E3: AA TAX C3/A1E4: BD 69 18 LDA $1869,X C3/A1E7: 4C 38 57 JMP $5738 C3/A1EA: .DW $A21A, $A21F, $A225, $A22B, $A231, $A237, $A23D, $A242 C3/A1FA: .DW $A248, $A24E, $A254, $A25A, $A260, $A265, $A26B, $A271 C3/A20A: .DW $A277, $A27D, $A283, $A288, $A28E, $A294, $A29A, $A2A0 C3/A21A: .DB $4F, $39, $9F, $2D, $00 C3/A21F: .DB $6B, $39, $63, $3F, $A9, $00 C3/A225: .DB $CF, $39, $8B, $7F, $9D, $00 C3/A22B: .DB $EB, $39, $6B, $A7, $3F, $00 C3/A231: .DB $4F, $3A, $8A, $6E, $54, $00 C3/A237: .DB $6B, $3A, $8A, $6E, $55, $00 C3/A23D: .DB $4F, $3B, $9F, $2D, $00 C3/A242: .DB $6B, $3B, $63, $3F, $A9, $00 C3/A248: .DB $CF, $3B, $8B, $7F, $9D, $00 C3/A24E: .DB $EB, $3B, $6B, $A7, $3F, $00 C3/A254: .DB $4F, $3C, $8A, $6E, $54, $00 C3/A25A: .DB $6B, $3C, $8A, $6E, $55, $00 C3/A260: .DB $4F, $3D, $9F, $2D, $00 C3/A265: .DB $6B, $3D, $63, $3F, $A9, $00 C3/A26B: .DB $CF, $3D, $8B, $7F, $9D, $00 C3/A271: .DB $EB, $3D, $6B, $A7, $3F, $00 C3/A277: .DB $4F, $3E, $8A, $6E, $54, $00 C3/A27D: .DB $6B, $3E, $8A, $6E, $55, $00 C3/A283: .DB $4F, $3F, $9F, $2D, $00 C3/A288: .DB $6B, $3F, $63, $3F, $A9, $00 C3/A28E: .DB $CF, $3F, $8B, $7F, $9D, $00 C3/A294: .DB $EB, $3F, $6B, $A7, $3F, $00 C3/A29A: .DB $4F, $40, $8A, $6E, $54, $00 C3/A2A0: .DB $6B, $40, $8A, $6E, $55, $00 C3/A2A6: .DW $A31A, $A322, $A32C, $A334, $A2CC, $A2D3, $A33C, $A344 C3/A2B6: .DW $A2DA, $A2E2 ; C3/A2BA: "R-hand" ; C3/A2C3: "L-hand" ; C3/A2CC: "Head" ; C3/A2D3: "Body" ; C3/A2DA: "Relic" ; C3/A2E2: "Relic" ; C3/A2EA: " " ; C3/A309: "EQUIP" ; C3/A311: "REMOVE" ; C3/A31A: "EQUIP" ; C3/A322: "OPTIMUM" ; C3/A32C: "RMOVE" ; C3/A334: "EMPTY" ; C3/A33C: "EQUIP" ; C3/A344: "REMOVE" C3/A2BA: .DB $0D, $7A, $91, $C4, $A1, $9A, $A7, $9D, $00 C3/A2C3: .DB $8D, $7A, $8B, $C4, $A1, $9A, $A7, $9D, $00 C3/A2CC: .DB $0D, $7B, $87, $9E, $9A, $9D, $00 C3/A2D3: .DB $8D, $7B, $81, $A8, $9D, $B2, $00 C3/A2DA: .DB $0D, $7B, $91, $9E, $A5, $A2, $9C, $00 C3/A2E2: .DB $8D, $7B, $91, $9E, $A5, $A2, $9C, $00 C3/A2EA: .DB $0D, $79, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00 C3/A309: .DB $39, $79, $84, $90, $94, $88, $8F, $00 C3/A311: .DB $39, $79, $91, $84, $8C, $8E, $95, $84, $00 C3/A31A: .DB $0D, $79, $84, $90, $94, $88, $8F, $00 C3/A322: .DB $1B, $79, $8E, $8F, $93, $88, $8C, $94, $8C, $00 C3/A32C: .DB $2D, $79, $91, $8C, $8E, $95, $84, $00 C3/A334: .DB $3B, $79, $84, $8C, $8F, $93, $98, $00 C3/A33C: .DB $11, $79, $84, $90, $94, $88, $8F, $00 C3/A344: .DB $1F, $79, $91, $84, $8C, $8E, $95, $84, $00 C3/A34D: .DW $A371, $A379, $A383, $A38D, $A397, $A3A1, $A3A5, $A3A9 C3/A35D: .DW $A3AD, $A3B1, $A3B5, $A3B9, $A3BD, $A3C1, $A3C5, $A3CD C3/A36D: .DW $A3D7, $A3E1 C3/A371: .DB $A9, $7C, $95, $A2, $A0, $A8, $AB, $00 C3/A379: .DB $A9, $7D, $92, $AD, $9A, $A6, $A2, $A7, $9A, $00 C3/A383: .DB $29, $7E, $8C, $9A, $A0, $C5, $8F, $B0, $AB, $00 C3/A38D: .DB $A9, $7F, $84, $AF, $9A, $9D, $9E, $FF, $CD, $00 C3/A397: .DB $A9, $80, $8C, $81, $A5, $A8, $9C, $A4, $CD, $00 C3/A3A1: .DB $BD, $7C, $D5, $00 C3/A3A5: .DB $3D, $7D, $D5, $00 C3/A3A9: .DB $BD, $7D, $D5, $00 C3/A3AD: .DB $3D, $7E, $D5, $00 C3/A3B1: .DB $3D, $7F, $D5, $00 C3/A3B5: .DB $BD, $7F, $D5, $00 C3/A3B9: .DB $BD, $7E, $D5, $00 C3/A3BD: .DB $3D, $80, $D5, $00 C3/A3C1: .DB $BD, $80, $D5, $00 C3/A3C5: .DB $29, $7D, $92, $A9, $9E, $9E, $9D, $00 C3/A3CD: .DB $A9, $7E, $81, $9A, $AD, $C5, $8F, $B0, $AB, $00 C3/A3D7: .DB $29, $7F, $83, $9E, $9F, $9E, $A7, $AC, $9E, $00 C3/A3E1: .DB $29, $80, $8C, $9A, $A0, $C5, $83, $9E, $9F, $00 C3/A3EB: .DB $23, $79, $84, $A6, $A9, $AD, $B2, $00 C3/A3F3: .DB $21, $79, $8E, $A9, $AD, $A2, $A6, $AE, $A6, $00 C3/A3FD: .DB $A3, $79, $84, $A6, $A9, $AD, $B2, $00 C3/A405: .DB $A1, $79, $8E, $A9, $AD, $A2, $A6, $AE, $A6, $00 C3/A40F: .DB $15, $7A, $84, $AA, $AE, $A2, $A9, $A6, $9E, $A7, $AD, $FF, $9C, $A1, $9A, $A7 .DB $A0, $9E, $9D, $C5, $00 ; -----------------------------------------[ Menu: Controller ]----------------------------------------- ; [ Init Controller ] joy_init: C3/A424: A9 08 LDA #$08 ; set direction button repeat delay (8 frames) C3/A426: 8D 29 02 STA $0229 C3/A429: A9 03 LDA #$03 ; set button repeat rate (3 frames/repeat) C3/A42B: 8D 2A 02 STA $022A C3/A42E: 8D 26 02 STA $0226 C3/A431: A9 20 LDA #$20 ; set A button repeat delay (32 frames) C3/A433: 8D 25 02 STA $0225 C3/A436: AD 54 1D LDA $1D54 ; branch if no special button configuration C3/A439: 29 40 AND #$40 C3/A43B: F0 04 BEQ $A441 C3/A43D: 20 C4 A5 JSR $A5C4 ; set custom button mapping C3/A440: 6B RTL C3/A441: 20 D1 A5 JSR $A5D1 ; set default button mapping C3/A444: 6B RTL ; [ Update Controller (battle) ] C3/A445: AD 54 1D LDA $1D54 C3/A448: 10 0E BPL $A458 C3/A44A: 7B TDC C3/A44B: AD 01 02 LDA $0201 C3/A44E: AA TAX C3/A44F: AD 4F 1D LDA $1D4F C3/A452: 3F 3D A5 C3 AND $C3A53D,X C3/A456: D0 05 BNE $A45D C3/A458: AE 18 42 LDX $4218 C3/A45B: 80 05 BRA $A462 C3/A45D: AE 1A 42 LDX $421A C3/A460: 80 00 BRA $A462 C3/A462: 20 83 A4 JSR $A483 C3/A465: 20 BD A4 JSR $A4BD C3/A468: 20 F6 A4 JSR $A4F6 C3/A46B: 4C 27 A5 JMP $A527 ; [ Update Controller (menu) ] C3/A46E: AE 18 42 LDX $4218 C3/A471: 20 83 A4 JSR $A483 C3/A474: 20 BD A4 JSR $A4BD C3/A477: 4C 27 A5 JMP $A527 ; [ Update Controller (field/world) ] joy_main: C3/A47A: AE 18 42 LDX $4218 C3/A47D: 20 83 A4 JSR $A483 C3/A480: 4C 27 A5 JMP $A527 ; [ ] joy_getsub: C3/A483: A4 E0 LDY $E0 C3/A485: 8C 13 02 STY $0213 C3/A488: A4 E7 LDY $E7 C3/A48A: 8C 15 02 STY $0215 C3/A48D: A4 E9 LDY $E9 C3/A48F: 8C 17 02 STY $0217 C3/A492: A4 EB LDY $EB C3/A494: 8C 19 02 STY $0219 C3/A497: 86 EB STX $EB C3/A499: C2 20 REP #$20 C3/A49B: A5 0C LDA $0C C3/A49D: 29 F0 FF AND #$FFF0 C3/A4A0: 85 E0 STA $E0 C3/A4A2: 20 41 A5 JSR $A541 C3/A4A5: A5 0C LDA $0C C3/A4A7: 49 FF FF EOR #$FFFF C3/A4AA: 25 06 AND $06 C3/A4AC: 85 08 STA $08 C3/A4AE: A4 06 LDY $06 C3/A4B0: 84 0C STY $0C C3/A4B2: AD 18 42 LDA $4218 C3/A4B5: 0D 1A 42 ORA $421A C3/A4B8: 85 04 STA $04 C3/A4BA: E2 20 SEP #$20 C3/A4BC: 60 RTS C3/A4BD: C2 20 REP #$20 C3/A4BF: A5 06 LDA $06 C3/A4C1: 29 F0 FF AND #$FFF0 C3/A4C4: C5 E0 CMP $E0 C3/A4C6: E2 20 SEP #$20 C3/A4C8: D0 1B BNE $A4E5 C3/A4CA: AD 27 02 LDA $0227 C3/A4CD: F0 05 BEQ $A4D4 C3/A4CF: CE 27 02 DEC $0227 C3/A4D2: D0 1D BNE $A4F1 C3/A4D4: CE 28 02 DEC $0228 C3/A4D7: D0 18 BNE $A4F1 C3/A4D9: AD 2A 02 LDA $022A C3/A4DC: 8D 28 02 STA $0228 C3/A4DF: A4 06 LDY $06 C3/A4E1: 84 0A STY $0A C3/A4E3: 80 10 BRA $A4F5 C3/A4E5: AD 29 02 LDA $0229 C3/A4E8: 8D 27 02 STA $0227 C3/A4EB: AD 2A 02 LDA $022A C3/A4EE: 8D 28 02 STA $0228 C3/A4F1: A4 08 LDY $08 C3/A4F3: 84 0A STY $0A C3/A4F5: 60 RTS C3/A4F6: A5 06 LDA $06 C3/A4F8: 89 80 BIT #$80 C3/A4FA: F0 1B BEQ $A517 C3/A4FC: AD 25 02 LDA $0225 C3/A4FF: F0 05 BEQ $A506 C3/A501: CE 25 02 DEC $0225 C3/A504: D0 1C BNE $A522 C3/A506: CE 26 02 DEC $0226 C3/A509: D0 17 BNE $A522 C3/A50B: AD 2A 02 LDA $022A C3/A50E: 8D 26 02 STA $0226 C3/A511: A9 80 LDA #$80 C3/A513: 04 0A TSB $0A C3/A515: 80 0F BRA $A526 C3/A517: A9 20 LDA #$20 C3/A519: 8D 25 02 STA $0225 C3/A51C: AD 2A 02 LDA $022A C3/A51F: 8D 26 02 STA $0226 C3/A522: A5 08 LDA $08 C3/A524: 85 0A STA $0A C3/A526: 60 RTS ; [ ] joy_sub3: C3/A527: AC 13 02 LDY $0213 C3/A52A: 84 E0 STY $E0 C3/A52C: AC 15 02 LDY $0215 C3/A52F: 84 E7 STY $E7 C3/A531: AC 17 02 LDY $0217 C3/A534: 84 E9 STY $E9 C3/A536: AC 19 02 LDY $0219 C3/A539: 84 EB STY $EB C3/A53B: 7B TDC C3/A53C: 6B RTL C3/A53D: .DB $01, $02, $04, $08 C3/A541: A5 EB LDA $EB C3/A543: 29 00 0F AND #$0F00 C3/A546: 85 06 STA $06 C3/A548: A9 80 00 LDA #$0080 C3/A54B: 85 E7 STA $E7 C3/A54D: A9 00 80 LDA #$8000 C3/A550: 85 E9 STA $E9 C3/A552: A4 00 LDY $00 C3/A554: 20 81 A5 JSR $A581 C3/A557: A9 40 00 LDA #$0040 C3/A55A: 85 E7 STA $E7 C3/A55C: A9 00 40 LDA #$4000 C3/A55F: 85 E9 STA $E9 C3/A561: C8 INY C3/A562: 20 81 A5 JSR $A581 C3/A565: A9 20 00 LDA #$0020 C3/A568: 85 E7 STA $E7 C3/A56A: A9 10 00 LDA #$0010 C3/A56D: 85 E9 STA $E9 C3/A56F: C8 INY C3/A570: 20 81 A5 JSR $A581 C3/A573: A9 00 10 LDA #$1000 C3/A576: 85 E7 STA $E7 C3/A578: A9 00 20 LDA #$2000 C3/A57B: 85 E9 STA $E9 C3/A57D: C8 INY C3/A57E: 4C 81 A5 JMP $A581 C3/A581: A5 EB LDA $EB C3/A583: 24 E7 BIT $E7 C3/A585: F0 14 BEQ $A59B C3/A587: 7B TDC C3/A588: E2 20 SEP #$20 C3/A58A: B9 20 02 LDA $0220,Y C3/A58D: 29 F0 AND #$F0 C3/A58F: C2 20 REP #$20 C3/A591: 4A LSR C3/A592: 4A LSR C3/A593: 4A LSR C3/A594: AA TAX C3/A595: BF B4 A5 C3 LDA $C3A5B4,X C3/A599: 04 06 TSB $06 C3/A59B: A5 EB LDA $EB C3/A59D: 24 E9 BIT $E9 C3/A59F: F0 12 BEQ $A5B3 C3/A5A1: 7B TDC C3/A5A2: E2 20 SEP #$20 C3/A5A4: B9 20 02 LDA $0220,Y C3/A5A7: 29 0F AND #$0F C3/A5A9: C2 20 REP #$20 C3/A5AB: 0A ASL C3/A5AC: AA TAX C3/A5AD: BF B4 A5 C3 LDA $C3A5B4,X C3/A5B1: 04 06 TSB $06 C3/A5B3: 60 RTS C3/A5B4: .DW $1000, $0080, $8000, $0040, $4000, $0020, $0010, $2000 ; [ Set Custom Button Mapping ] C3/A5C4: AC 50 1D LDY $1D50 C3/A5C7: 8C 20 02 STY $0220 C3/A5CA: AC 52 1D LDY $1D52 C3/A5CD: 8C 22 02 STY $0222 C3/A5D0: 60 RTS ; [ Set Default Button Mapping ] C3/A5D1: A0 12 34 LDY #$3412 C3/A5D4: 8C 20 02 STY $0220 C3/A5D7: A0 56 06 LDY #$0656 C3/A5DA: 8C 22 02 STY $0222 C3/A5DD: 60 RTS ; ------------------------------------[ Menu: Variable-Width Text ]------------------------------------- C3/A5DE: 7B TDC C3/A5DF: AA TAX C3/A5E0: C2 20 REP #$20 C3/A5E2: 9F 71 A2 7E STA $7EA271,X C3/A5E6: E8 INX C3/A5E7: E8 INX C3/A5E8: 9F 71 A2 7E STA $7EA271,X C3/A5EC: E8 INX C3/A5ED: E8 INX C3/A5EE: E0 40 02 CPX #$0240 C3/A5F1: D0 EF BNE $A5E2 C3/A5F3: E2 20 SEP #$20 C3/A5F5: 60 RTS C3/A5F6: 20 00 A6 JSR $A600 C3/A5F9: A9 01 LDA #$01 C3/A5FB: 14 45 TRB $45 C3/A5FD: 4C AC 14 JMP $14AC C3/A600: 84 1B STY $1B C3/A602: A0 71 A2 LDY #$A271 C3/A605: 84 1D STY $1D C3/A607: A0 20 01 LDY #$0120 C3/A60A: 84 19 STY $19 C3/A60C: A9 7E LDA #$7E C3/A60E: 85 1F STA $1F C3/A610: 60 RTS C3/A611: A2 49 78 LDX #$7849 C3/A614: 86 EB STX $EB C3/A616: A9 7E LDA #$7E C3/A618: 85 ED STA $ED C3/A61A: A0 98 05 LDY #$0598 C3/A61D: 84 E7 STY $E7 C3/A61F: A0 80 05 LDY #$0580 C3/A622: A2 10 24 LDX #$2410 C3/A625: 86 E0 STX $E0 C3/A627: 20 83 A7 JSR $A783 C3/A62A: A0 D8 05 LDY #$05D8 C3/A62D: 84 E7 STY $E7 C3/A62F: A0 C0 05 LDY #$05C0 C3/A632: A2 11 24 LDX #$2411 C3/A635: 86 E0 STX $E0 C3/A637: 20 83 A7 JSR $A783 C3/A63A: 60 RTS C3/A63B: 20 DE A5 JSR $A5DE C3/A63E: 64 8D STZ $8D C3/A640: 64 ED STZ $ED C3/A642: 64 EE STZ $EE C3/A644: A9 06 LDA #$06 C3/A646: 85 F1 STA $F1 C3/A648: A6 00 LDX $00 C3/A64A: BF 89 9E 7E LDA $7E9E89,X C3/A64E: 20 A9 A8 JSR $A8A9 C3/A651: DA PHX C3/A652: 20 B1 A8 JSR $A8B1 C3/A655: FA PLX C3/A656: E8 INX C3/A657: C6 F1 DEC $F1 C3/A659: D0 EF BNE $A64A C3/A65B: A0 80 20 LDY #$2080 C3/A65E: 20 00 A6 JSR $A600 C3/A661: 60 RTS C3/A662: A2 49 80 LDX #$8049 C3/A665: 86 EB STX $EB C3/A667: A9 7E LDA #$7E C3/A669: 85 ED STA $ED C3/A66B: A0 BC 00 LDY #$00BC C3/A66E: 84 E7 STY $E7 C3/A670: A0 84 00 LDY #$0084 C3/A673: A2 00 35 LDX #$3500 C3/A676: 86 E0 STX $E0 C3/A678: 20 83 A7 JSR $A783 C3/A67B: A0 FC 00 LDY #$00FC C3/A67E: 84 E7 STY $E7 C3/A680: A0 C4 00 LDY #$00C4 C3/A683: A2 01 35 LDX #$3501 C3/A686: 86 E0 STX $E0 C3/A688: 20 83 A7 JSR $A783 C3/A68B: A0 3C 01 LDY #$013C C3/A68E: 84 E7 STY $E7 C3/A690: A0 04 01 LDY #$0104 C3/A693: A2 38 35 LDX #$3538 C3/A696: 86 E0 STX $E0 C3/A698: 20 83 A7 JSR $A783 C3/A69B: A0 7C 01 LDY #$017C C3/A69E: 84 E7 STY $E7 C3/A6A0: A0 44 01 LDY #$0144 C3/A6A3: A2 39 35 LDX #$3539 C3/A6A6: 86 E0 STX $E0 C3/A6A8: 4C 83 A7 JMP $A783 C3/A6AB: A2 49 78 LDX #$7849 C3/A6AE: 86 EB STX $EB C3/A6B0: A9 7E LDA #$7E C3/A6B2: 85 ED STA $ED C3/A6B4: A0 BC 01 LDY #$01BC C3/A6B7: 84 E7 STY $E7 C3/A6B9: A0 84 01 LDY #$0184 C3/A6BC: A2 00 35 LDX #$3500 C3/A6BF: 86 E0 STX $E0 C3/A6C1: 20 83 A7 JSR $A783 C3/A6C4: A0 FC 01 LDY #$01FC C3/A6C7: 84 E7 STY $E7 C3/A6C9: A0 C4 01 LDY #$01C4 C3/A6CC: A2 01 35 LDX #$3501 C3/A6CF: 86 E0 STX $E0 C3/A6D1: 20 83 A7 JSR $A783 C3/A6D4: A0 3C 02 LDY #$023C C3/A6D7: 84 E7 STY $E7 C3/A6D9: A0 04 02 LDY #$0204 C3/A6DC: A2 38 35 LDX #$3538 C3/A6DF: 86 E0 STX $E0 C3/A6E1: 20 83 A7 JSR $A783 C3/A6E4: A0 7C 02 LDY #$027C C3/A6E7: 84 E7 STY $E7 C3/A6E9: A0 44 02 LDY #$0244 C3/A6EC: A2 39 35 LDX #$3539 C3/A6EF: 86 E0 STX $E0 C3/A6F1: 4C 83 A7 JMP $A783 C3/A6F4: A2 49 78 LDX #$7849 C3/A6F7: 86 EB STX $EB C3/A6F9: A9 7E LDA #$7E C3/A6FB: 85 ED STA $ED C3/A6FD: A0 BC 04 LDY #$04BC C3/A700: 84 E7 STY $E7 C3/A702: A0 84 04 LDY #$0484 C3/A705: A2 00 35 LDX #$3500 C3/A708: 86 E0 STX $E0 C3/A70A: 20 83 A7 JSR $A783 C3/A70D: A0 FC 04 LDY #$04FC C3/A710: 84 E7 STY $E7 C3/A712: A0 C4 04 LDY #$04C4 C3/A715: A2 01 35 LDX #$3501 C3/A718: 86 E0 STX $E0 C3/A71A: 20 83 A7 JSR $A783 C3/A71D: A0 3C 05 LDY #$053C C3/A720: 84 E7 STY $E7 C3/A722: A0 04 05 LDY #$0504 C3/A725: A2 38 35 LDX #$3538 C3/A728: 86 E0 STX $E0 C3/A72A: 20 83 A7 JSR $A783 C3/A72D: A0 7C 05 LDY #$057C C3/A730: 84 E7 STY $E7 C3/A732: A0 44 05 LDY #$0544 C3/A735: A2 39 35 LDX #$3539 C3/A738: 86 E0 STX $E0 C3/A73A: 4C 83 A7 JMP $A783 C3/A73D: A2 49 78 LDX #$7849 C3/A740: 86 EB STX $EB C3/A742: A9 7E LDA #$7E C3/A744: 85 ED STA $ED C3/A746: A0 BC 01 LDY #$01BC C3/A749: 84 E7 STY $E7 C3/A74B: A0 84 01 LDY #$0184 C3/A74E: A2 00 35 LDX #$3500 C3/A751: 86 E0 STX $E0 C3/A753: 20 83 A7 JSR $A783 C3/A756: A0 FC 01 LDY #$01FC C3/A759: 84 E7 STY $E7 C3/A75B: A0 C4 01 LDY #$01C4 C3/A75E: A2 01 35 LDX #$3501 C3/A761: 86 E0 STX $E0 C3/A763: 20 83 A7 JSR $A783 C3/A766: A0 3C 02 LDY #$023C C3/A769: 84 E7 STY $E7 C3/A76B: A0 04 02 LDY #$0204 C3/A76E: A2 38 35 LDX #$3538 C3/A771: 86 E0 STX $E0 C3/A773: 20 83 A7 JSR $A783 C3/A776: A0 7C 02 LDY #$027C C3/A779: 84 E7 STY $E7 C3/A77B: A0 44 02 LDY #$0244 C3/A77E: A2 39 35 LDX #$3539 C3/A781: 86 E0 STX $E0 ; fall through ; [ ] C3/A783: C2 20 REP #$20 C3/A785: A5 E0 LDA $E0 C3/A787: 97 EB STA [$EB],Y C3/A789: E6 E0 INC $E0 C3/A78B: E6 E0 INC $E0 C3/A78D: C8 INY C3/A78E: C8 INY C3/A78F: C4 E7 CPY $E7 C3/A791: D0 F2 BNE $A785 C3/A793: E2 20 SEP #$20 C3/A795: 60 RTS ; [ Clear Description Text Graphics Buffer ] C3/A796: 8B PHB C3/A797: A9 7E LDA #$7E C3/A799: 48 PHA C3/A79A: AB PLB C3/A79B: 7B TDC C3/A79C: AA TAX C3/A79D: C2 20 REP #$20 C3/A79F: 9E 71 A2 STZ $A271,X ; clear $7EA271-$7EA970 C3/A7A2: 9E 73 A2 STZ $A273,X C3/A7A5: 9E 75 A2 STZ $A275,X C3/A7A8: 9E 77 A2 STZ $A277,X C3/A7AB: 9E 79 A2 STZ $A279,X C3/A7AE: 9E 7B A2 STZ $A27B,X C3/A7B1: 9E 7D A2 STZ $A27D,X C3/A7B4: 9E 7F A2 STZ $A27F,X C3/A7B7: 9E 81 A2 STZ $A281,X C3/A7BA: 9E 83 A2 STZ $A283,X C3/A7BD: 9E 85 A2 STZ $A285,X C3/A7C0: 9E 87 A2 STZ $A287,X C3/A7C3: 9E 89 A2 STZ $A289,X C3/A7C6: 9E 8B A2 STZ $A28B,X C3/A7C9: 9E 8D A2 STZ $A28D,X C3/A7CC: 9E 8F A2 STZ $A28F,X C3/A7CF: 9E 91 A2 STZ $A291,X C3/A7D2: 9E 93 A2 STZ $A293,X C3/A7D5: 9E 95 A2 STZ $A295,X C3/A7D8: 9E 97 A2 STZ $A297,X C3/A7DB: 9E 99 A2 STZ $A299,X C3/A7DE: 9E 9B A2 STZ $A29B,X C3/A7E1: 9E 9D A2 STZ $A29D,X C3/A7E4: 9E 9F A2 STZ $A29F,X C3/A7E7: 9E A1 A2 STZ $A2A1,X C3/A7EA: 9E A3 A2 STZ $A2A3,X C3/A7ED: 9E A5 A2 STZ $A2A5,X C3/A7F0: 9E A7 A2 STZ $A2A7,X C3/A7F3: 9E A9 A2 STZ $A2A9,X C3/A7F6: 9E AB A2 STZ $A2AB,X C3/A7F9: 9E AD A2 STZ $A2AD,X C3/A7FC: 9E AF A2 STZ $A2AF,X C3/A7FF: 8A TXA C3/A800: 18 CLC C3/A801: 69 40 00 ADC #$0040 C3/A804: AA TAX C3/A805: E0 00 07 CPX #$0700 C3/A808: D0 95 BNE $A79F C3/A80A: E2 20 SEP #$20 C3/A80C: AB PLB C3/A80D: 60 RTS ; [ Description Text Thread ] ; +$33CA = current text string position (+$7E9EC9) ; +$344A = pointer to text graphics buffer (+$7EA271) C3/A80E: AA TAX C3/A80F: 7C 12 A8 JMP ($A812,X) ; thread jump table C3/A812: .DW $A818, $A82F, $A81B ; thread state $00: init/reset C3/A818: 20 96 A7 JSR $A796 ; clear description text graphics buffer ; fall through ; thread state $02: wait C3/A81B: 64 8D STZ $8D ; C3/A81D: A6 2D LDX $2D ; thread data pointer C3/A81F: A9 01 LDA #$01 C3/A821: 9D 49 36 STA $3649,X ; set thread state to 1 C3/A824: 7B TDC C3/A825: C2 20 REP #$20 C3/A827: 9D CA 33 STA $33CA,X ; C3/A82A: 9D 4A 34 STA $344A,X ; C3/A82D: E2 20 SEP #$20 ; fall through ; thread state $01: write letters (one per frame) C3/A82F: A5 26 LDA $26 ; menu state C3/A831: C9 17 CMP #$17 C3/A833: F0 58 BEQ $A88D ; branch if (item, sort, rare) C3/A835: A5 46 LDA $46 C3/A837: 29 C0 AND #$C0 ; branch if page can't scroll up or down C3/A839: F0 06 BEQ $A841 C3/A83B: A5 06 LDA $06 ; branch if top L or R buttons is down C3/A83D: 29 30 AND #$30 C3/A83F: D0 54 BNE $A895 C3/A841: A5 45 LDA $45 ; C3/A843: 89 20 BIT #$20 C3/A845: D0 06 BNE $A84D C3/A847: A5 07 LDA $07 ; branch if a direction button is down C3/A849: 29 0F AND #$0F C3/A84B: D0 48 BNE $A895 C3/A84D: A5 45 LDA $45 ; C3/A84F: 89 10 BIT #$10 C3/A851: D0 42 BNE $A895 C3/A853: A4 2D LDY $2D ; thread data pointer C3/A855: BE 4A 34 LDX $344A,Y ; +$ED = pointer to text graphics buffer C3/A858: 86 ED STX $ED C3/A85A: BE CA 33 LDX $33CA,Y ; pointer to text buffer C3/A85D: BF C9 9E 7E LDA $7E9EC9,X ; get next letter C3/A861: F0 39 BEQ $A89C ; branch if end of string C3/A863: C9 01 CMP #$01 C3/A865: D0 0E BNE $A875 ; branch if not new line C3/A867: 64 8D STZ $8D C3/A869: C2 20 REP #$20 C3/A86B: A9 80 03 LDA #$0380 ; set graphics buffer pointer to beginning of second line C3/A86E: 99 4A 34 STA $344A,Y C3/A871: E2 20 SEP #$20 C3/A873: 80 08 BRA $A87D ; write letter C3/A875: 20 A9 A8 JSR $A8A9 ; get text character C3/A878: DA PHX C3/A879: 20 B1 A8 JSR $A8B1 ; copy letter graphics to VRAM buffer C3/A87C: FA PLX C3/A87D: E8 INX ; increment text string position C3/A87E: A4 2D LDY $2D C3/A880: C2 20 REP #$20 C3/A882: 8A TXA C3/A883: 99 CA 33 STA $33CA,Y C3/A886: E2 20 SEP #$20 C3/A888: 20 91 A9 JSR $A991 ; copy description text graphics to VRAM C3/A88B: 38 SEC C3/A88C: 60 RTS ; item, sort, rare (terminate thread) C3/A88D: 20 96 A7 JSR $A796 ; clear description text graphics buffer C3/A890: 20 91 A9 JSR $A991 ; copy description text graphics to VRAM C3/A893: 18 CLC ; terminate thread C3/A894: 60 RTS ; direction button or L or R button pressed (reset text) C3/A895: A6 2D LDX $2D C3/A897: 9E 49 36 STZ $3649,X ; set thread state to 0 C3/A89A: 38 SEC C3/A89B: 60 RTS ; end of string C3/A89C: A9 01 LDA #$01 ; enable color palette DMA at vblank C3/A89E: 04 45 TSB $45 C3/A8A0: A6 2D LDX $2D ; set thread state to 2 C3/A8A2: A9 02 LDA #$02 C3/A8A4: 9D 49 36 STA $3649,X C3/A8A7: 38 SEC C3/A8A8: 60 RTS ; [ Get Text Letter ] C3/A8A9: 38 SEC C3/A8AA: E9 80 SBC #$80 C3/A8AC: 64 EB STZ $EB C3/A8AE: 64 EC STZ $EC C3/A8B0: 60 RTS ; [ Copy Letter Graphics to VRAM buffer ] C3/A8B1: 48 PHA C3/A8B2: 8F 02 42 00 STA $004202 C3/A8B6: A9 16 LDA #$16 C3/A8B8: 8F 03 42 00 STA $004203 C3/A8BC: A9 0B LDA #$0B C3/A8BE: 85 E5 STA $E5 C3/A8C0: C2 20 REP #$20 C3/A8C2: AF 16 42 00 LDA $004216 C3/A8C6: 18 CLC C3/A8C7: 65 EB ADC $EB C3/A8C9: A8 TAY C3/A8CA: E2 20 SEP #$20 C3/A8CC: 7B TDC C3/A8CD: A5 8D LDA $8D C3/A8CF: 29 F8 AND #$F8 C3/A8D1: C2 20 REP #$20 C3/A8D3: 0A ASL C3/A8D4: 0A ASL C3/A8D5: 18 CLC C3/A8D6: 65 ED ADC $ED C3/A8D8: AA TAX C3/A8D9: DA PHX C3/A8DA: C2 20 REP #$20 C3/A8DC: BB TYX C3/A8DD: BF C0 90 C4 LDA $C490C0,X ; variable width font graphics C3/A8E1: 64 E7 STZ $E7 C3/A8E3: 64 E9 STZ $E9 C3/A8E5: 85 E8 STA $E8 C3/A8E7: 20 4F A9 JSR $A94F C3/A8EA: FA PLX C3/A8EB: A5 E7 LDA $E7 C3/A8ED: E2 20 SEP #$20 C3/A8EF: 1F B9 A2 7E ORA $7EA2B9,X C3/A8F3: 9F B9 A2 7E STA $7EA2B9,X C3/A8F7: C2 20 REP #$20 C3/A8F9: 4A LSR C3/A8FA: E2 20 SEP #$20 C3/A8FC: 1F BC A2 7E ORA $7EA2BC,X C3/A900: 9F BC A2 7E STA $7EA2BC,X C3/A904: C2 20 REP #$20 C3/A906: A5 E8 LDA $E8 C3/A908: E2 20 SEP #$20 C3/A90A: 1F 99 A2 7E ORA $7EA299,X C3/A90E: 9F 99 A2 7E STA $7EA299,X C3/A912: C2 20 REP #$20 C3/A914: 4A LSR C3/A915: E2 20 SEP #$20 C3/A917: 1F 9C A2 7E ORA $7EA29C,X C3/A91B: 9F 9C A2 7E STA $7EA29C,X C3/A91F: C2 20 REP #$20 C3/A921: A5 E8 LDA $E8 C3/A923: E2 20 SEP #$20 C3/A925: EB XBA C3/A926: 1F 79 A2 7E ORA $7EA279,X C3/A92A: 9F 79 A2 7E STA $7EA279,X C3/A92E: 4A LSR C3/A92F: 1F 7C A2 7E ORA $7EA27C,X C3/A933: 9F 7C A2 7E STA $7EA27C,X C3/A937: E8 INX C3/A938: E8 INX C3/A939: C8 INY C3/A93A: C8 INY C3/A93B: C6 E5 DEC $E5 C3/A93D: D0 9A BNE $A8D9 C3/A93F: 7B TDC C3/A940: 68 PLA C3/A941: 18 CLC C3/A942: 69 20 ADC #$20 C3/A944: AA TAX C3/A945: A5 8D LDA $8D C3/A947: 18 CLC C3/A948: 7F C0 8F C4 ADC $C48FC0,X C3/A94C: 85 8D STA $8D C3/A94E: 60 RTS C3/A94F: E2 20 SEP #$20 C3/A951: 7B TDC C3/A952: A5 8D LDA $8D C3/A954: 29 07 AND #$07 C3/A956: 0A ASL C3/A957: AA TAX C3/A958: C2 20 REP #$20 C3/A95A: 7C 5D A9 JMP ($A95D,X) C3/A95D: .DW $A96F, $A973, $A977, $A97B, $A97F, $A98C, $A988, $A984 C3/A96D: .DW $A980 C3/A96F: 06 E7 ASL $E7 C3/A971: 26 E9 ROL $E9 C3/A973: 06 E7 ASL $E7 C3/A975: 26 E9 ROL $E9 C3/A977: 06 E7 ASL $E7 C3/A979: 26 E9 ROL $E9 C3/A97B: 06 E7 ASL $E7 C3/A97D: 26 E9 ROL $E9 C3/A97F: 60 RTS C3/A980: 46 E9 LSR $E9 C3/A982: 66 E7 ROR $E7 C3/A984: 46 E9 LSR $E9 C3/A986: 66 E7 ROR $E7 C3/A988: 46 E9 LSR $E9 C3/A98A: 66 E7 ROR $E7 C3/A98C: 46 E9 LSR $E9 C3/A98E: 66 E7 ROR $E7 C3/A990: 60 RTS ; [ Copy Description Text Graphics to VRAM ] C3/A991: A0 00 68 LDY #$6800 C3/A994: 84 1B STY $1B C3/A996: A0 71 A2 LDY #$A271 C3/A999: 84 1D STY $1D C3/A99B: A0 00 07 LDY #$0700 C3/A99E: 84 19 STY $19 C3/A9A0: A9 7E LDA #$7E C3/A9A2: 85 1F STA $1F C3/A9A4: A9 01 LDA #$01 C3/A9A6: 14 45 TRB $45 C3/A9A8: 60 RTS C3/A9A9: A6 00 LDX $00 C3/A9AB: BF 0E E9 D8 LDA $D8E90E,X ; letters for element symbols C3/A9AF: 9F C9 9E 7E STA $7E9EC9,X C3/A9B3: E8 INX C3/A9B4: E0 09 00 CPX #$0009 C3/A9B7: D0 F2 BNE $A9AB C3/A9B9: A0 00 6C LDY #$6C00 C3/A9BC: 84 F1 STY $F1 C3/A9BE: 7B TDC C3/A9BF: AA TAX C3/A9C0: BF C9 9E 7E LDA $7E9EC9,X C3/A9C4: F0 1C BEQ $A9E2 C3/A9C6: 20 A9 A8 JSR $A8A9 C3/A9C9: DA PHX C3/A9CA: 20 E5 A9 JSR $A9E5 C3/A9CD: FA PLX C3/A9CE: E8 INX C3/A9CF: A4 F1 LDY $F1 C3/A9D1: 20 F6 A5 JSR $A5F6 C3/A9D4: C2 20 REP #$20 C3/A9D6: A5 F1 LDA $F1 C3/A9D8: 18 CLC C3/A9D9: 69 20 00 ADC #$0020 C3/A9DC: 85 F1 STA $F1 C3/A9DE: E2 20 SEP #$20 C3/A9E0: 80 DE BRA $A9C0 C3/A9E2: 4C 89 0F JMP $0F89 C3/A9E5: 48 PHA C3/A9E6: A0 40 00 LDY #$0040 C3/A9E9: 84 F3 STY $F3 C3/A9EB: 20 37 B4 JSR $B437 C3/A9EE: 64 8D STZ $8D C3/A9F0: 64 ED STZ $ED C3/A9F2: 64 EE STZ $EE C3/A9F4: 68 PLA C3/A9F5: 4C B1 A8 JMP $A8B1 ; -------------------------------------[ Menu: Final Battle Order ]------------------------------------- ; [ Menu State $73: Final Battle Order (init) ] C3/A9F8: 20 2F 35 JSR $352F ; disable interrupts C3/A9FB: 20 04 69 JSR $6904 C3/A9FE: A9 02 LDA #$02 C3/AA00: 85 46 STA $46 C3/AA02: 20 54 AC JSR $AC54 C3/AA05: 20 5D AC JSR $AC5D C3/AA08: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/AA0B: 20 EE AA JSR $AAEE C3/AA0E: 20 FD AA JSR $AAFD C3/AA11: 20 13 AB JSR $AB13 C3/AA14: 20 97 94 JSR $9497 C3/AA17: A9 74 LDA #$74 C3/AA19: 85 27 STA $27 C3/AA1B: A9 01 LDA #$01 C3/AA1D: 85 26 STA $26 C3/AA1F: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/AA22: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $74: Final Battle Order ] C3/AA25: 20 89 AB JSR $AB89 C3/AA28: 20 B4 AB JSR $ABB4 C3/AA2B: 20 5A AC JSR $AC5A C3/AA2E: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/AA31: A5 09 LDA $09 C3/AA33: 89 80 BIT #$80 C3/AA35: F0 2C BEQ $AA63 C3/AA37: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/AA3A: A5 4A LDA $4A C3/AA3C: F0 68 BEQ $AAA6 C3/AA3E: C6 4A DEC $4A C3/AA40: 7B TDC C3/AA41: A5 4A LDA $4A C3/AA43: AA TAX C3/AA44: BD 05 02 LDA $0205,X C3/AA47: 48 PHA C3/AA48: A9 FF LDA #$FF C3/AA4A: 9D 05 02 STA $0205,X C3/AA4D: A6 00 LDX $00 C3/AA4F: 68 PLA C3/AA50: DF 8A 9D 7E CMP $7E9D8A,X C3/AA54: F0 06 BEQ $AA5C C3/AA56: E8 INX C3/AA57: E0 0C 00 CPX #$000C C3/AA5A: D0 F4 BNE $AA50 C3/AA5C: A9 20 LDA #$20 C3/AA5E: 9F 8D AA 7E STA $7EAA8D,X C3/AA62: 60 RTS C3/AA63: A5 09 LDA $09 C3/AA65: 89 10 BIT #$10 C3/AA67: D0 30 BNE $AA99 C3/AA69: A5 08 LDA $08 C3/AA6B: 89 80 BIT #$80 C3/AA6D: F0 37 BEQ $AAA6 C3/AA6F: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/AA72: 7B TDC C3/AA73: A5 4B LDA $4B C3/AA75: F0 30 BEQ $AAA7 C3/AA77: C9 0D CMP #$0D C3/AA79: F0 1E BEQ $AA99 C3/AA7B: AA TAX C3/AA7C: BF 89 9D 7E LDA $7E9D89,X C3/AA80: 30 24 BMI $AAA6 C3/AA82: 7B TDC C3/AA83: A5 4B LDA $4B C3/AA85: 3A DEC C3/AA86: AA TAX C3/AA87: BF 8D AA 7E LDA $7EAA8D,X C3/AA8B: C9 20 CMP #$20 C3/AA8D: D0 17 BNE $AAA6 C3/AA8F: 20 B2 AA JSR $AAB2 C3/AA92: A5 4A LDA $4A C3/AA94: C9 0C CMP #$0C C3/AA96: F0 15 BEQ $AAAD C3/AA98: 60 RTS C3/AA99: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/AA9C: 20 CA AA JSR $AACA C3/AA9F: A9 FF LDA #$FF C3/AAA1: 85 27 STA $27 C3/AAA3: 64 26 STZ $26 C3/AAA5: 60 RTS C3/AAA6: 60 RTS C3/AAA7: 20 FD AA JSR $AAFD C3/AAAA: E6 4E INC $4E C3/AAAC: 60 RTS C3/AAAD: A9 0D LDA #$0D C3/AAAF: 85 4E STA $4E C3/AAB1: 60 RTS C3/AAB2: 7B TDC C3/AAB3: A5 4A LDA $4A C3/AAB5: A8 TAY C3/AAB6: A5 4B LDA $4B C3/AAB8: AA TAX C3/AAB9: A9 28 LDA #$28 C3/AABB: 9F 8C AA 7E STA $7EAA8C,X C3/AABF: BF 89 9D 7E LDA $7E9D89,X C3/AAC3: BB TYX C3/AAC4: 9D 05 02 STA $0205,X C3/AAC7: E6 4A INC $4A C3/AAC9: 60 RTS C3/AACA: A5 4A LDA $4A C3/AACC: C9 0C CMP #$0C C3/AACE: F0 1D BEQ $AAED C3/AAD0: 7B TDC C3/AAD1: AA TAX C3/AAD2: BF 8D AA 7E LDA $7EAA8D,X C3/AAD6: C9 20 CMP #$20 C3/AAD8: D0 0D BNE $AAE7 C3/AADA: 7B TDC C3/AADB: A5 4A LDA $4A C3/AADD: A8 TAY C3/AADE: BF 8A 9D 7E LDA $7E9D8A,X C3/AAE2: 99 05 02 STA $0205,Y C3/AAE5: E6 4A INC $4A C3/AAE7: E8 INX C3/AAE8: E0 0C 00 CPX #$000C C3/AAEB: D0 E5 BNE $AAD2 C3/AAED: 60 RTS C3/AAEE: 7B TDC C3/AAEF: AA TAX C3/AAF0: A9 FF LDA #$FF C3/AAF2: 9F 89 9D 7E STA $7E9D89,X C3/AAF6: E8 INX C3/AAF7: E0 10 00 CPX #$0010 C3/AAFA: D0 F4 BNE $AAF0 C3/AAFC: 60 RTS C3/AAFD: 7B TDC C3/AAFE: AA TAX C3/AAFF: A9 FF LDA #$FF C3/AB01: 9D 05 02 STA $0205,X C3/AB04: A9 20 LDA #$20 C3/AB06: 9F 8D AA 7E STA $7EAA8D,X C3/AB0A: E8 INX C3/AB0B: E0 0C 00 CPX #$000C C3/AB0E: D0 EF BNE $AAFF C3/AB10: 64 4A STZ $4A C3/AB12: 60 RTS C3/AB13: A9 02 LDA #$02 C3/AB15: 8D 07 21 STA $2107 C3/AB18: A0 49 AB LDY #$AB49 C3/AB1B: 20 41 03 JSR $0341 ; draw window C3/AB1E: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/AB21: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/AB24: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/AB27: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/AB2A: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/AB2D: A9 20 LDA #$20 C3/AB2F: 85 29 STA $29 C3/AB31: A2 84 AC LDX #$AC84 C3/AB34: A0 06 00 LDY #$0006 C3/AB37: 20 BA 69 JSR $69BA ; draw positioned text (list) C3/AB3A: 20 19 AC JSR $AC19 C3/AB3D: 20 4D AB JSR $AB4D C3/AB40: 20 89 AB JSR $AB89 C3/AB43: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/AB46: 4C 36 0E JMP $0E36 ; copy bg1 data to vram (top left/bottom right) C3/AB49: 8B PHB C3/AB4A: 58 CLI C3/AB4B: 1C 18 64 TRB $6418 C3/AB4E: E6 7B INC $7B C3/AB50: AA TAX C3/AB51: DA PHX C3/AB52: BD 50 18 LDA $1850,X C3/AB55: 29 40 AND #$40 C3/AB57: F0 28 BEQ $AB81 C3/AB59: BD 50 18 LDA $1850,X C3/AB5C: 29 07 AND #$07 C3/AB5E: F0 21 BEQ $AB81 C3/AB60: 86 E7 STX $E7 C3/AB62: C2 20 REP #$20 C3/AB64: 8A TXA C3/AB65: 0A ASL C3/AB66: AA TAX C3/AB67: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/AB6B: A8 TAY C3/AB6C: E2 20 SEP #$20 C3/AB6E: B9 00 00 LDA $0000,Y C3/AB71: C9 0E CMP #$0E C3/AB73: B0 0C BCS $AB81 C3/AB75: 7B TDC C3/AB76: A5 E6 LDA $E6 C3/AB78: AA TAX C3/AB79: A5 E7 LDA $E7 C3/AB7B: 9F 8A 9D 7E STA $7E9D8A,X C3/AB7F: E6 E6 INC $E6 C3/AB81: FA PLX C3/AB82: E8 INX C3/AB83: E0 10 00 CPX #$0010 C3/AB86: D0 C9 BNE $AB51 C3/AB88: 60 RTS C3/AB89: A0 15 3A LDY #$3A15 C3/AB8C: 84 F5 STY $F5 C3/AB8E: 7B TDC C3/AB8F: AA TAX C3/AB90: 20 DC AB JSR $ABDC C3/AB93: DA PHX C3/AB94: 7B TDC C3/AB95: BF 8D AA 7E LDA $7EAA8D,X C3/AB99: 85 29 STA $29 C3/AB9B: BF 8A 9D 7E LDA $7E9D8A,X C3/AB9F: 30 05 BMI $ABA6 C3/ABA1: 20 F0 AB JSR $ABF0 C3/ABA4: 80 03 BRA $ABA9 C3/ABA6: 20 0B AC JSR $AC0B C3/ABA9: 20 FE AB JSR $ABFE C3/ABAC: FA PLX C3/ABAD: E8 INX C3/ABAE: E0 0C 00 CPX #$000C C3/ABB1: D0 DD BNE $AB90 C3/ABB3: 60 RTS C3/ABB4: A9 20 LDA #$20 C3/ABB6: 85 29 STA $29 C3/ABB8: A0 31 3A LDY #$3A31 C3/ABBB: 84 F5 STY $F5 C3/ABBD: 7B TDC C3/ABBE: AA TAX C3/ABBF: 20 DC AB JSR $ABDC C3/ABC2: DA PHX C3/ABC3: 7B TDC C3/ABC4: BD 05 02 LDA $0205,X C3/ABC7: 30 05 BMI $ABCE C3/ABC9: 20 F0 AB JSR $ABF0 C3/ABCC: 80 03 BRA $ABD1 C3/ABCE: 20 0B AC JSR $AC0B C3/ABD1: 20 FE AB JSR $ABFE C3/ABD4: FA PLX C3/ABD5: E8 INX C3/ABD6: E0 0C 00 CPX #$000C C3/ABD9: D0 E4 BNE $ABBF C3/ABDB: 60 RTS C3/ABDC: A0 89 9E LDY #$9E89 C3/ABDF: 8C 81 21 STY $2181 C3/ABE2: C2 20 REP #$20 C3/ABE4: A5 F5 LDA $F5 C3/ABE6: E2 20 SEP #$20 C3/ABE8: 8D 80 21 STA $2180 C3/ABEB: EB XBA C3/ABEC: 8D 80 21 STA $2180 C3/ABEF: 60 RTS C3/ABF0: 0A ASL C3/ABF1: C2 20 REP #$20 C3/ABF3: AA TAX C3/ABF4: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/ABF8: A8 TAY C3/ABF9: E2 20 SEP #$20 C3/ABFB: 4C D2 34 JMP $34D2 C3/ABFE: C2 20 REP #$20 C3/AC00: A5 F5 LDA $F5 C3/AC02: 18 CLC C3/AC03: 69 80 00 ADC #$0080 C3/AC06: 85 F5 STA $F5 C3/AC08: E2 20 SEP #$20 C3/AC0A: 60 RTS C3/AC0B: A2 06 00 LDX #$0006 C3/AC0E: A9 FF LDA #$FF C3/AC10: 8D 80 21 STA $2180 C3/AC13: CA DEX C3/AC14: D0 FA BNE $AC10 C3/AC16: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/AC19: A9 01 LDA #$01 C3/AC1B: 85 E6 STA $E6 C3/AC1D: A0 0F 3A LDY #$3A0F C3/AC20: 84 F5 STY $F5 C3/AC22: A2 0C 00 LDX #$000C C3/AC25: 86 F1 STX $F1 C3/AC27: 20 3B AC JSR $AC3B C3/AC2A: A9 01 LDA #$01 C3/AC2C: 85 E6 STA $E6 C3/AC2E: A0 2B 3A LDY #$3A2B C3/AC31: 84 F5 STY $F5 C3/AC33: A2 0C 00 LDX #$000C C3/AC36: 86 F1 STX $F1 C3/AC38: 4C 3B AC JMP $AC3B C3/AC3B: 7B TDC C3/AC3C: AA TAX C3/AC3D: DA PHX C3/AC3E: A5 E6 LDA $E6 C3/AC40: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/AC43: A6 F5 LDX $F5 C3/AC45: 20 B6 04 JSR $04B6 ; draw number text (2 digit) C3/AC48: E6 E6 INC $E6 C3/AC4A: 20 FE AB JSR $ABFE C3/AC4D: FA PLX C3/AC4E: E8 INX C3/AC4F: E4 F1 CPX $F1 C3/AC51: D0 EA BNE $AC3D C3/AC53: 60 RTS C3/AC54: A0 63 AC LDY #$AC63 C3/AC57: 4C FE 05 JMP $05FE ; init cursor C3/AC5A: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/AC5D: A0 68 AC LDY #$AC68 C3/AC60: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/AC63: .DB $80, $00, $00, $01, $0E C3/AC68: .DW $2010, $2C20, $3820, $4420, $5020, $5C20, $6820, $7420 C3/AC78: .DW $8020, $8C20, $9820, $A420, $B020, $BC10 C3/AC84: .DW $AC8A, $AC90, $AC98 ; C3/AC8A: ( 4,31) "End" ; C3/AC90: ( 4, 5) "Reset" ; C3/AC98: (10, 3) "Determine order" C3/AC8A: .DW $4011 \ .DB $84, $A7, $9D, $00 C3/AC90: .DW $3991 \ .DB $91, $9E, $AC, $9E, $AD, $00 C3/AC98: .DW $391D \ .DB $83, $9E, $AD, $9E, $AB, $A6, $A2, $A7, $9E, $FF, $A8, $AB, $9D, $9E, $AB, $00 ; -----------------------------------------[ Menu: Colosseum ]------------------------------------------ ; [ Menu State $71: Colosseum Item Select (init) ] C3/ACAA: 9C 01 02 STZ $0201 C3/ACAD: AD 05 02 LDA $0205 C3/ACB0: 20 5E 9D JSR $9D5E C3/ACB3: 20 E2 1A JSR $1AE2 C3/ACB6: 20 25 7D JSR $7D25 C3/ACB9: 20 27 AD JSR $AD27 C3/ACBC: 7B TDC C3/ACBD: 22 1D CA D4 JSL $D4CA1D ; init hdma for menu window gradient bars C3/ACC1: 20 0E 1B JSR $1B0E C3/ACC4: 20 99 3F JSR $3F99 ; init font color C3/ACC7: A9 01 LDA #$01 C3/ACC9: 04 45 TSB $45 C3/ACCB: 20 68 13 JSR $1368 ; wait for vblank C3/ACCE: A9 72 LDA #$72 C3/ACD0: 85 27 STA $27 C3/ACD2: A9 02 LDA #$02 C3/ACD4: 85 46 STA $46 C3/ACD6: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/ACD9: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $72: Colosseum Item Select ] C3/ACDC: A9 10 LDA #$10 C3/ACDE: 14 45 TRB $45 C3/ACE0: 64 2A STZ $2A C3/ACE2: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/ACE5: 20 64 1F JSR $1F64 ; list text page up/down C3/ACE8: B0 3C BCS $AD26 C3/ACEA: 20 22 7D JSR $7D22 ; update cursor (item list) C3/ACED: 20 F1 82 JSR $82F1 C3/ACF0: A5 08 LDA $08 C3/ACF2: 89 80 BIT #$80 C3/ACF4: F0 1E BEQ $AD14 C3/ACF6: 7B TDC C3/ACF7: A5 4B LDA $4B C3/ACF9: AA TAX C3/ACFA: BD 69 18 LDA $1869,X C3/ACFD: C9 FF CMP #$FF C3/ACFF: F0 0D BEQ $AD0E C3/AD01: 8D 05 02 STA $0205 C3/AD04: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/AD07: A9 75 LDA #$75 C3/AD09: 85 27 STA $27 C3/AD0B: 64 26 STZ $26 C3/AD0D: 60 RTS C3/AD0E: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/AD11: 20 5D 30 JSR $305D ; create mosaic thread C3/AD14: A5 09 LDA $09 C3/AD16: 89 80 BIT #$80 C3/AD18: F0 0C BEQ $AD26 C3/AD1A: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/AD1D: A9 FF LDA #$FF C3/AD1F: 8D 05 02 STA $0205 C3/AD22: 85 27 STA $27 C3/AD24: 64 26 STZ $26 C3/AD26: 60 RTS C3/AD27: A9 01 LDA #$01 C3/AD29: 8D 07 21 STA $2107 C3/AD2C: A0 8E AD LDY #$AD8E C3/AD2F: 20 41 03 JSR $0341 ; draw window C3/AD32: A0 8A AD LDY #$AD8A C3/AD35: 20 41 03 JSR $0341 ; draw window C3/AD38: A0 92 AD LDY #$AD92 C3/AD3B: 20 41 03 JSR $0341 ; draw window C3/AD3E: A0 96 AD LDY #$AD96 C3/AD41: 20 41 03 JSR $0341 ; draw window C3/AD44: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/AD47: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/AD4A: 20 46 6A JSR $6A46 ; clear bg3 data (bottom left screen) C3/AD4D: 20 4B 6A JSR $6A4B ; clear bg3 data (bottom right screen) C3/AD50: 20 6E AD JSR $AD6E C3/AD53: 20 80 AD JSR $AD80 C3/AD56: 20 A9 A9 JSR $A9A9 C3/AD59: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/AD5C: 20 7C 0E JSR $0E7C ; copy bg3 data to vram (bottom screens) C3/AD5F: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/AD62: 20 0D 7E JSR $7E0D C3/AD65: 20 F1 82 JSR $82F1 C3/AD68: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/AD6B: 4C 36 0E JMP $0E36 ; copy bg1 data to vram (top left/bottom right) C3/AD6E: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/AD71: A9 2C LDA #$2C C3/AD73: 85 29 STA $29 C3/AD75: A0 9A AD LDY #$AD9A C3/AD78: 20 F9 02 JSR $02F9 ; draw positioned text C3/AD7B: A9 20 LDA #$20 C3/AD7D: 85 29 STA $29 C3/AD7F: 60 RTS C3/AD80: 20 3D A7 JSR $A73D C3/AD83: A0 A6 AD LDY #$ADA6 C3/AD86: 20 F9 02 JSR $02F9 ; draw positioned text C3/AD89: 60 RTS C3/AD8A: .DB $8B, $58, $09, $02 C3/AD8E: .DB $A1, $58, $11, $02 C3/AD92: .DB $8B, $59, $1C, $03 C3/AD96: .DB $CB, $5A, $1C, $0F C3/AD9A: .DB $0D, $79, $82, $A8, $A5, $A8, $AC, $AC, $9E, $AE, $A6, $00 C3/ADA6: .DB $23, $79, $92, $9E, $A5, $9E, $9C, $AD, $FF, $9A, $A7, $FF, $88, $AD, $9E, $A6, $00 ; [ Menu State $75: Colosseum Character Select (init) ] C3/ADB7: 20 2F 35 JSR $352F ; disable interrupts C3/ADBA: 64 43 STZ $43 C3/ADBC: 20 87 3A JSR $3A87 ; init custom menu window C3/ADBF: 20 15 69 JSR $6915 ; init party character data C3/ADC2: A9 02 LDA #$02 C3/ADC4: 22 1D CA D4 JSL $D4CA1D ; init hdma for menu window gradient bars C3/ADC8: 20 DC 69 JSR $69DC C3/ADCB: 20 66 6A JSR $6A66 C3/ADCE: A9 02 LDA #$02 C3/ADD0: 85 46 STA $46 C3/ADD2: 20 23 B3 JSR $B323 C3/ADD5: 20 2C B3 JSR $B32C C3/ADD8: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/ADDB: 20 07 AE JSR $AE07 C3/ADDE: 20 D1 18 JSR $18D1 C3/ADE1: 20 34 AE JSR $AE34 C3/ADE4: A9 01 LDA #$01 C3/ADE6: 04 45 TSB $45 C3/ADE8: 20 99 3F JSR $3F99 ; init font color C3/ADEB: A9 01 LDA #$01 C3/ADED: A0 A5 B2 LDY #$B2A5 C3/ADF0: 20 73 11 JSR $1173 ; create thread C3/ADF3: A9 76 LDA #$76 C3/ADF5: 85 27 STA $27 C3/ADF7: A9 01 LDA #$01 C3/ADF9: 85 26 STA $26 C3/ADFB: 20 04 69 JSR $6904 C3/ADFE: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/AE01: 20 41 35 JSR $3541 ; enable interrupts C3/AE04: 4C 39 0F JMP $0F39 C3/AE07: A9 01 LDA #$01 C3/AE09: A0 F3 B2 LDY #$B2F3 C3/AE0C: 4C 73 11 JMP $1173 ; create thread ; [ Menu State $76: Colosseum Character Select ] C3/AE0F: 20 39 0F JSR $0F39 C3/AE12: 20 29 B3 JSR $B329 C3/AE15: A5 08 LDA $08 C3/AE17: 89 80 BIT #$80 C3/AE19: F0 18 BEQ $AE33 C3/AE1B: 20 EC B2 JSR $B2EC C3/AE1E: 30 0D BMI $AE2D C3/AE20: 8D 08 02 STA $0208 C3/AE23: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/AE26: A9 FF LDA #$FF C3/AE28: 85 27 STA $27 C3/AE2A: 64 26 STZ $26 C3/AE2C: 60 RTS C3/AE2D: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/AE30: 20 5D 30 JSR $305D ; create mosaic thread C3/AE33: 60 RTS C3/AE34: A9 01 LDA #$01 C3/AE36: 8D 07 21 STA $2107 C3/AE39: A0 3F B3 LDY #$B33F C3/AE3C: 20 41 03 JSR $0341 ; draw window C3/AE3F: A0 43 B3 LDY #$B343 C3/AE42: 20 41 03 JSR $0341 ; draw window C3/AE45: A0 47 B3 LDY #$B347 C3/AE48: 20 41 03 JSR $0341 ; draw window C3/AE4B: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/AE4E: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/AE51: A9 20 LDA #$20 C3/AE53: 85 29 STA $29 C3/AE55: 20 7D B1 JSR $B17D C3/AE58: 20 97 B1 JSR $B197 C3/AE5B: 20 B1 B1 JSR $B1B1 C3/AE5E: 20 CB B1 JSR $B1CB C3/AE61: A0 0F B4 LDY #$B40F C3/AE64: 20 F9 02 JSR $02F9 ; draw positioned text C3/AE67: 20 8D B2 JSR $B28D C3/AE6A: 20 4D B2 JSR $B24D C3/AE6D: 20 55 B2 JSR $B255 C3/AE70: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/AE73: A0 00 50 LDY #$5000 C3/AE76: 8C 16 21 STY $2116 C3/AE79: 20 0A B1 JSR $B10A C3/AE7C: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/AE7F: 20 93 AE JSR $AE93 C3/AE82: AD 01 02 LDA $0201 C3/AE85: D0 06 BNE $AE8D C3/AE87: 20 00 AF JSR $AF00 C3/AE8A: 4C 28 0E JMP $0E28 ; copy bg1 data to vram (top screens) C3/AE8D: 20 A7 AE JSR $AEA7 C3/AE90: 4C 28 0E JMP $0E28 ; copy bg1 data to vram (top screens) C3/AE93: AD 05 02 LDA $0205 C3/AE96: C9 29 CMP #$29 C3/AE98: D0 0C BNE $AEA6 ; branch if not item $29 (striker) C3/AE9A: AD BD 1E LDA $1EBD C3/AE9D: 29 80 AND #$80 C3/AE9F: F0 05 BEQ $AEA6 C3/AEA1: A9 01 LDA #$01 C3/AEA3: 8D 01 02 STA $0201 C3/AEA6: 60 RTS C3/AEA7: 20 D9 AE JSR $AED9 C3/AEAA: A9 02 LDA #$02 C3/AEAC: 04 47 TSB $47 C3/AEAE: A9 02 LDA #$02 C3/AEB0: A0 5F 7A LDY #$7A5F C3/AEB3: 20 73 11 JSR $1173 ; create thread C3/AEB6: A9 01 LDA #$01 C3/AEB8: 9F 49 36 7E STA $7E3649,X C3/AEBC: BF 4A 36 7E LDA $7E364A,X C3/AEC0: 09 02 ORA #$02 C3/AEC2: 9F 4A 36 7E STA $7E364A,X C3/AEC6: 9B TXY C3/AEC7: A9 38 LDA #$38 C3/AEC9: 85 E1 STA $E1 C3/AECB: A9 68 LDA #$68 C3/AECD: 85 E2 STA $E2 C3/AECF: 7B TDC C3/AED0: A9 03 LDA #$03 C3/AED2: 20 FA 78 JSR $78FA C3/AED5: 20 11 B2 JSR $B211 C3/AED8: 60 RTS C3/AED9: 7B TDC C3/AEDA: AA TAX C3/AEDB: 86 E7 STX $E7 C3/AEDD: C2 20 REP #$20 C3/AEDF: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/AEE3: AA TAX C3/AEE4: E2 20 SEP #$20 C3/AEE6: BD 00 00 LDA $0000,X C3/AEE9: C9 03 CMP #$03 C3/AEEB: F0 0B BEQ $AEF8 C3/AEED: A6 E7 LDX $E7 C3/AEEF: E8 INX C3/AEF0: E8 INX C3/AEF1: E0 20 00 CPX #$0020 C3/AEF4: D0 E5 BNE $AEDB C3/AEF6: 80 FE BRA $AEF6 C3/AEF8: 86 67 STX $67 C3/AEFA: A0 11 7C LDY #$7C11 C3/AEFD: 4C CF 34 JMP $34CF ; draw character name C3/AF00: A6 91 LDX $91 C3/AF02: 86 ED STX $ED C3/AF04: A5 99 LDA $99 C3/AF06: C9 08 CMP #$08 C3/AF08: F0 0C BEQ $AF16 C3/AF0A: A2 10 00 LDX #$0010 C3/AF0D: 86 F1 STX $F1 C3/AF0F: A2 10 00 LDX #$0010 C3/AF12: 86 E0 STX $E0 C3/AF14: 80 07 BRA $AF1D C3/AF16: A2 08 00 LDX #$0008 C3/AF19: 86 F1 STX $F1 C3/AF1B: 86 E0 STX $E0 C3/AF1D: A9 7E LDA #$7E C3/AF1F: 85 EF STA $EF C3/AF21: C2 20 REP #$20 C3/AF23: A9 01 2C LDA #$2C01 C3/AF26: 85 E7 STA $E7 C3/AF28: A6 E0 LDX $E0 C3/AF2A: A4 00 LDY $00 C3/AF2C: A5 E7 LDA $E7 C3/AF2E: 97 ED STA [$ED],Y C3/AF30: C8 INY C3/AF31: C8 INY C3/AF32: E6 E7 INC $E7 C3/AF34: CA DEX C3/AF35: D0 F5 BNE $AF2C C3/AF37: A5 ED LDA $ED C3/AF39: 18 CLC C3/AF3A: 69 40 00 ADC #$0040 C3/AF3D: 85 ED STA $ED C3/AF3F: C6 F1 DEC $F1 C3/AF41: D0 E5 BNE $AF28 C3/AF43: E2 20 SEP #$20 C3/AF45: 60 RTS ; [ Load Monster Graphics (colosseum) ] C3/AF46: 20 2C B2 JSR $B22C ; load colosseum item data C3/AF49: AD 06 02 LDA $0206 ; monster index C3/AF4C: 8D 02 42 STA $4202 C3/AF4F: A9 05 LDA #$05 ; calculate pointer to monster graphics data C3/AF51: 8D 03 42 STA $4203 C3/AF54: A0 10 50 LDY #$5010 C3/AF57: 8C 16 21 STY $2116 C3/AF5A: EA NOP C3/AF5B: EA NOP C3/AF5C: AE 16 42 LDX $4216 C3/AF5F: BF 00 70 D2 LDA $D27000,X ; monster graphics data C3/AF63: 85 E7 STA $E7 C3/AF65: BF 01 70 D2 LDA $D27001,X C3/AF69: 85 E8 STA $E8 C3/AF6B: BF 02 70 D2 LDA $D27002,X C3/AF6F: 85 F2 STA $F2 C3/AF71: BF 03 70 D2 LDA $D27003,X C3/AF75: 85 F1 STA $F1 C3/AF77: BF 04 70 D2 LDA $D27004,X C3/AF7B: 85 E9 STA $E9 C3/AF7D: A5 E8 LDA $E8 C3/AF7F: 30 04 BMI $AF85 C3/AF81: 64 FF STZ $FF C3/AF83: 80 08 BRA $AF8D C3/AF85: A9 01 LDA #$01 C3/AF87: 85 FF STA $FF C3/AF89: A9 80 LDA #$80 C3/AF8B: 14 E8 TRB $E8 C3/AF8D: A9 E9 LDA #$E9 C3/AF8F: 85 F7 STA $F7 C3/AF91: C2 20 REP #$20 C3/AF93: A9 00 70 LDA #$7000 C3/AF96: 85 F5 STA $F5 C3/AF98: A5 E7 LDA $E7 C3/AF9A: 85 F9 STA $F9 C3/AF9C: 64 FB STZ $FB C3/AF9E: 06 F9 ASL $F9 C3/AFA0: 26 FB ROL $FB C3/AFA2: 06 F9 ASL $F9 C3/AFA4: 26 FB ROL $FB C3/AFA6: 06 F9 ASL $F9 C3/AFA8: 26 FB ROL $FB C3/AFAA: 18 CLC C3/AFAB: A5 F9 LDA $F9 C3/AFAD: 65 F5 ADC $F5 C3/AFAF: 85 F5 STA $F5 C3/AFB1: A5 FB LDA $FB C3/AFB3: 65 F7 ADC $F7 C3/AFB5: 85 F7 STA $F7 C3/AFB7: A6 00 LDX $00 C3/AFB9: E2 20 SEP #$20 C3/AFBB: A5 F2 LDA $F2 C3/AFBD: 30 09 BMI $AFC8 C3/AFBF: A0 20 A8 LDY #$A820 ; pointer to small monster graphics maps C3/AFC2: 84 E3 STY $E3 C3/AFC4: A9 08 LDA #$08 C3/AFC6: 80 07 BRA $AFCF C3/AFC8: A0 22 A8 LDY #$A822 ; pointer to large monster graphics maps C3/AFCB: 84 E3 STY $E3 C3/AFCD: A9 20 LDA #$20 C3/AFCF: 85 E6 STA $E6 C3/AFD1: 85 99 STA $99 C3/AFD3: A9 D2 LDA #$D2 C3/AFD5: 85 E5 STA $E5 C3/AFD7: A5 F2 LDA $F2 C3/AFD9: 29 40 AND #$40 C3/AFDB: 2A ROL C3/AFDC: 2A ROL C3/AFDD: 2A ROL C3/AFDE: 85 EA STA $EA C3/AFE0: A5 F2 LDA $F2 C3/AFE2: 30 09 BMI $AFED C3/AFE4: C2 20 REP #$20 C3/AFE6: A5 E9 LDA $E9 C3/AFE8: 0A ASL C3/AFE9: 0A ASL C3/AFEA: 0A ASL C3/AFEB: 80 09 BRA $AFF6 C3/AFED: C2 20 REP #$20 C3/AFEF: A5 E9 LDA $E9 C3/AFF1: 0A ASL C3/AFF2: 0A ASL C3/AFF3: 0A ASL C3/AFF4: 0A ASL C3/AFF5: 0A ASL C3/AFF6: 18 CLC C3/AFF7: 67 E3 ADC [$E3] C3/AFF9: 85 E0 STA $E0 C3/AFFB: E2 20 SEP #$20 C3/AFFD: A9 D2 LDA #$D2 C3/AFFF: 85 E2 STA $E2 C3/B001: A0 08 00 LDY #$0008 C3/B004: DA PHX C3/B005: 7B TDC C3/B006: A5 E6 LDA $E6 C3/B008: AA TAX C3/B009: A7 E0 LDA [$E0] C3/B00B: 9F 88 9D 7E STA $7E9D88,X C3/B00F: FA PLX C3/B010: 18 CLC C3/B011: 5A PHY C3/B012: 2A ROL C3/B013: 48 PHA C3/B014: 90 05 BCC $B01B C3/B016: 20 1E B1 JSR $B11E C3/B019: 80 03 BRA $B01E C3/B01B: 20 0A B1 JSR $B10A C3/B01E: 68 PLA C3/B01F: 7A PLY C3/B020: 88 DEY C3/B021: D0 ED BNE $B010 C3/B023: C2 20 REP #$20 C3/B025: E6 E0 INC $E0 C3/B027: E2 20 SEP #$20 C3/B029: C6 E6 DEC $E6 C3/B02B: D0 D4 BNE $B001 C3/B02D: 20 33 B0 JSR $B033 C3/B030: 4C 5A B1 JMP $B15A C3/B033: 64 E0 STZ $E0 C3/B035: 64 E4 STZ $E4 C3/B037: 64 E5 STZ $E5 C3/B039: 64 E3 STZ $E3 C3/B03B: A6 00 LDX $00 C3/B03D: A5 99 LDA $99 C3/B03F: C9 08 CMP #$08 C3/B041: D0 36 BNE $B079 C3/B043: BF 89 9D 7E LDA $7E9D89,X C3/B047: D0 07 BNE $B050 C3/B049: E6 E0 INC $E0 C3/B04B: E8 INX C3/B04C: C9 08 CMP #$08 C3/B04E: D0 F3 BNE $B043 C3/B050: A6 00 LDX $00 C3/B052: BF 89 9D 7E LDA $7E9D89,X C3/B056: 05 E3 ORA $E3 C3/B058: 85 E3 STA $E3 C3/B05A: E8 INX C3/B05B: E0 08 00 CPX #$0008 C3/B05E: D0 F2 BNE $B052 C3/B060: 66 E3 ROR $E3 C3/B062: B0 04 BCS $B068 C3/B064: E6 E4 INC $E4 C3/B066: 80 F8 BRA $B060 C3/B068: 46 E4 LSR $E4 C3/B06A: 06 E4 ASL $E4 C3/B06C: C2 21 REP #$21 C3/B06E: A5 E4 LDA $E4 C3/B070: 69 51 3A ADC #$3A51 C3/B073: 85 E7 STA $E7 C3/B075: E2 20 SEP #$20 C3/B077: 80 3B BRA $B0B4 C3/B079: BF 89 9D 7E LDA $7E9D89,X C3/B07D: 1F 8A 9D 7E ORA $7E9D8A,X C3/B081: D0 09 BNE $B08C C3/B083: E6 E0 INC $E0 C3/B085: E8 INX C3/B086: E8 INX C3/B087: E0 20 00 CPX #$0020 C3/B08A: D0 ED BNE $B079 C3/B08C: A6 00 LDX $00 C3/B08E: BF 89 9D 7E LDA $7E9D89,X C3/B092: 05 E3 ORA $E3 C3/B094: 85 E3 STA $E3 C3/B096: E8 INX C3/B097: E8 INX C3/B098: E0 20 00 CPX #$0020 C3/B09B: D0 F1 BNE $B08E C3/B09D: 66 E3 ROR $E3 C3/B09F: B0 04 BCS $B0A5 C3/B0A1: E6 E4 INC $E4 C3/B0A3: 80 F8 BRA $B09D C3/B0A5: 46 E4 LSR $E4 C3/B0A7: 06 E4 ASL $E4 C3/B0A9: C2 21 REP #$21 C3/B0AB: A5 E4 LDA $E4 C3/B0AD: 69 49 38 ADC #$3849 C3/B0B0: 85 E7 STA $E7 C3/B0B2: E2 20 SEP #$20 C3/B0B4: 4C B7 B0 JMP $B0B7 C3/B0B7: 7B TDC C3/B0B8: AD 06 02 LDA $0206 ; colosseum monster number C3/B0BB: AA TAX C3/B0BC: BF 00 E8 EC LDA $ECE800,X ; monster vertical alignment C3/B0C0: C2 20 REP #$20 C3/B0C2: 0A ASL C3/B0C3: AA TAX C3/B0C4: E2 20 SEP #$20 C3/B0C6: 7C C9 B0 JMP ($B0C9,X) ; jump table for monster vertical alignment C3/B0C9: .DW $B0D3, $B0F8, $B0E2, $B0EA, $B0EE ; 0: ceiling (move to top) C3/B0D3: 64 E0 STZ $E0 C3/B0D5: C2 20 REP #$20 C3/B0D7: A5 E7 LDA $E7 C3/B0D9: 38 SEC C3/B0DA: E9 C0 00 SBC #$00C0 C3/B0DD: 85 91 STA $91 C3/B0DF: E2 20 SEP #$20 C3/B0E1: 60 RTS ; 2: buried (shift up 8) C3/B0E2: C6 E0 DEC $E0 C3/B0E4: 10 02 BPL $B0E8 C3/B0E6: 64 E0 STZ $E0 C3/B0E8: 80 0E BRA $B0F8 ; 3: floating (shift down 8) C3/B0EA: E6 E0 INC $E0 C3/B0EC: 80 0A BRA $B0F8 ; 4: flying (shift up 24) C3/B0EE: C6 E0 DEC $E0 C3/B0F0: C6 E0 DEC $E0 C3/B0F2: C6 E0 DEC $E0 C3/B0F4: 10 02 BPL $B0F8 C3/B0F6: 64 E0 STZ $E0 ; fallthrough ; 1: ground (no effect) C3/B0F8: 7B TDC C3/B0F9: A5 E0 LDA $E0 C3/B0FB: C2 21 REP #$21 C3/B0FD: 0A ASL C3/B0FE: 0A ASL C3/B0FF: 0A ASL C3/B100: 0A ASL C3/B101: 0A ASL C3/B102: 0A ASL C3/B103: 65 E7 ADC $E7 C3/B105: 85 91 STA $91 C3/B107: E2 20 SEP #$20 C3/B109: 60 RTS C3/B10A: A0 10 00 LDY #$0010 C3/B10D: 84 E3 STY $E3 C3/B10F: C2 20 REP #$20 C3/B111: A4 00 LDY $00 C3/B113: 9C 18 21 STZ $2118 C3/B116: C8 INY C3/B117: C4 E3 CPY $E3 C3/B119: D0 F8 BNE $B113 C3/B11B: E2 20 SEP #$20 C3/B11D: 60 RTS C3/B11E: A5 FF LDA $FF C3/B120: D0 07 BNE $B129 C3/B122: A0 10 00 LDY #$0010 C3/B125: 84 E3 STY $E3 C3/B127: 80 1C BRA $B145 C3/B129: A0 08 00 LDY #$0008 C3/B12C: 84 E3 STY $E3 C3/B12E: 20 45 B1 JSR $B145 C3/B131: 9B TXY C3/B132: A2 08 00 LDX #$0008 C3/B135: 7B TDC C3/B136: B7 F5 LDA [$F5],Y C3/B138: C2 20 REP #$20 C3/B13A: 8D 18 21 STA $2118 C3/B13D: E2 20 SEP #$20 C3/B13F: C8 INY C3/B140: CA DEX C3/B141: D0 F3 BNE $B136 C3/B143: BB TYX C3/B144: 60 RTS C3/B145: 9B TXY C3/B146: A6 00 LDX $00 C3/B148: C2 20 REP #$20 C3/B14A: B7 F5 LDA [$F5],Y C3/B14C: 8D 18 21 STA $2118 C3/B14F: C8 INY C3/B150: C8 INY C3/B151: E8 INX C3/B152: E4 E3 CPX $E3 C3/B154: D0 F4 BNE $B14A C3/B156: E2 20 SEP #$20 C3/B158: BB TYX C3/B159: 60 RTS C3/B15A: C2 20 REP #$20 C3/B15C: A5 F1 LDA $F1 C3/B15E: 29 FF 03 AND #$03FF C3/B161: 0A ASL C3/B162: 0A ASL C3/B163: 0A ASL C3/B164: 0A ASL C3/B165: AA TAX C3/B166: E2 20 SEP #$20 C3/B168: A0 A9 30 LDY #$30A9 C3/B16B: 8C 81 21 STY $2181 C3/B16E: A0 20 00 LDY #$0020 C3/B171: BF 20 78 D2 LDA $D27820,X C3/B175: 8D 80 21 STA $2180 C3/B178: E8 INX C3/B179: 88 DEY C3/B17A: D0 F5 BNE $B171 C3/B17C: 60 RTS C3/B17D: A4 6D LDY $6D C3/B17F: F0 15 BEQ $B196 C3/B181: 84 67 STY $67 C3/B183: A0 4F 7E LDY #$7E4F C3/B186: 20 E5 B1 JSR $B1E5 C3/B189: A9 20 LDA #$20 C3/B18B: 85 E1 STA $E1 C3/B18D: A9 A8 LDA #$A8 C3/B18F: 85 E2 STA $E2 C3/B191: A5 69 LDA $69 C3/B193: 20 F3 B1 JSR $B1F3 C3/B196: 60 RTS C3/B197: A4 6F LDY $6F C3/B199: F0 15 BEQ $B1B0 C3/B19B: 84 67 STY $67 C3/B19D: A0 5D 7E LDY #$7E5D C3/B1A0: 20 E5 B1 JSR $B1E5 C3/B1A3: A9 58 LDA #$58 C3/B1A5: 85 E1 STA $E1 C3/B1A7: A9 A8 LDA #$A8 C3/B1A9: 85 E2 STA $E2 C3/B1AB: A5 6A LDA $6A C3/B1AD: 20 F3 B1 JSR $B1F3 C3/B1B0: 60 RTS C3/B1B1: A4 71 LDY $71 C3/B1B3: F0 15 BEQ $B1CA C3/B1B5: 84 67 STY $67 C3/B1B7: A0 6B 7E LDY #$7E6B C3/B1BA: 20 E5 B1 JSR $B1E5 C3/B1BD: A9 90 LDA #$90 C3/B1BF: 85 E1 STA $E1 C3/B1C1: A9 A8 LDA #$A8 C3/B1C3: 85 E2 STA $E2 C3/B1C5: A5 6B LDA $6B C3/B1C7: 20 F3 B1 JSR $B1F3 C3/B1CA: 60 RTS C3/B1CB: A4 73 LDY $73 C3/B1CD: F0 15 BEQ $B1E4 C3/B1CF: 84 67 STY $67 C3/B1D1: A0 79 7E LDY #$7E79 C3/B1D4: 20 E5 B1 JSR $B1E5 C3/B1D7: A9 C8 LDA #$C8 C3/B1D9: 85 E1 STA $E1 C3/B1DB: A9 A8 LDA #$A8 C3/B1DD: 85 E2 STA $E2 C3/B1DF: A5 6C LDA $6C C3/B1E1: 20 F3 B1 JSR $B1F3 C3/B1E4: 60 RTS C3/B1E5: 20 CF 34 JSR $34CF ; draw character name C3/B1E8: A9 02 LDA #$02 C3/B1EA: A0 5F 7A LDY #$7A5F C3/B1ED: 20 73 11 JSR $1173 ; create thread C3/B1F0: 9B TXY C3/B1F1: 7B TDC C3/B1F2: 60 RTS C3/B1F3: 0A ASL C3/B1F4: AA TAX C3/B1F5: C2 20 REP #$20 C3/B1F7: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/B1FB: AA TAX C3/B1FC: E2 20 SEP #$20 C3/B1FE: BD 14 00 LDA $0014,X C3/B201: 29 20 AND #$20 C3/B203: F0 05 BEQ $B20A C3/B205: 7B TDC C3/B206: A9 0F LDA #$0F C3/B208: 80 04 BRA $B20E C3/B20A: 7B TDC C3/B20B: BD 01 00 LDA $0001,X C3/B20E: 20 FA 78 JSR $78FA C3/B211: A9 D8 LDA #$D8 C3/B213: 99 CA 35 STA $35CA,Y C3/B216: A5 E1 LDA $E1 C3/B218: 99 CA 33 STA $33CA,Y C3/B21B: A5 E2 LDA $E2 C3/B21D: 99 4A 34 STA $344A,Y C3/B220: 7B TDC C3/B221: 99 CB 33 STA $33CB,Y C3/B224: 99 4B 34 STA $344B,Y C3/B227: A9 00 LDA #$00 C3/B229: 48 PHA C3/B22A: AB PLB C3/B22B: 60 RTS ; [ Load Colosseum Item Data ] C3/B22C: 7B TDC C3/B22D: AD 05 02 LDA $0205 ; item wagered C3/B230: C2 20 REP #$20 C3/B232: 0A ASL C3/B233: 0A ASL C3/B234: AA TAX C3/B235: E2 20 SEP #$20 C3/B237: BF 00 B6 DF LDA $DFB600,X ; colosseum monster C3/B23B: 8D 06 02 STA $0206 C3/B23E: BF 02 B6 DF LDA $DFB602,X ; prize C3/B242: 8D 07 02 STA $0207 C3/B245: BF 03 B6 DF LDA $DFB603,X ; hide prize name C3/B249: 8D 09 02 STA $0209 C3/B24C: 60 RTS ; [ Draw Wagered Item Name ] C3/B24D: AD 05 02 LDA $0205 ; wagered item C3/B250: A2 2B 79 LDX #$792B C3/B253: 80 0E BRA $B263 ; [ Draw Prize Item Name ] C3/B255: AD 09 02 LDA $0209 ; prize item C3/B258: F0 03 BEQ $B25D ; branch if colosseum item name is shown C3/B25A: 4C 86 B2 JMP $B286 C3/B25D: AD 07 02 LDA $0207 C3/B260: A2 0D 79 LDX #$790D C3/B263: 48 PHA C3/B264: A0 8B 9E LDY #$9E8B C3/B267: 8C 81 21 STY $2181 C3/B26A: C2 20 REP #$20 C3/B26C: 8A TXA C3/B26D: 8F 89 9E 7E STA $7E9E89 C3/B271: E2 20 SEP #$20 C3/B273: AD 12 42 LDA $4212 C3/B276: 29 40 AND #$40 C3/B278: F0 F9 BEQ $B273 C3/B27A: 68 PLA C3/B27B: 20 CE 80 JSR $80CE C3/B27E: 7B TDC C3/B27F: 8F 98 9E 7E STA $7E9E98 C3/B283: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/B286: A0 27 B4 LDY #$B427 ; ( 2, 3) "?????????????" C3/B289: 20 F9 02 JSR $02F9 ; draw positioned text C3/B28C: 60 RTS C3/B28D: C2 20 REP #$20 C3/B28F: A9 4F 7C LDA #$7C4F C3/B292: 8F 89 9E 7E STA $7E9E89 C3/B296: E2 20 SEP #$20 C3/B298: 20 09 54 JSR $5409 C3/B29B: 7B TDC C3/B29C: AD 06 02 LDA $0206 C3/B29F: 20 67 84 JSR $8467 C3/B2A2: 4C D9 7F JMP $7FD9 ; draw positioned text (at 7E/9E89) C3/B2A5: 8B PHB C3/B2A6: A9 00 LDA #$00 C3/B2A8: 48 PHA C3/B2A9: AB PLB C3/B2AA: 7B TDC C3/B2AB: A5 4B LDA $4B C3/B2AD: 0A ASL C3/B2AE: AA TAX C3/B2AF: B4 6D LDY $6D,X C3/B2B1: F0 2C BEQ $B2DF C3/B2B3: 84 67 STY $67 C3/B2B5: A0 75 7C LDY #$7C75 C3/B2B8: 20 CF 34 JSR $34CF ; draw character name C3/B2BB: A9 02 LDA #$02 C3/B2BD: 04 47 TSB $47 C3/B2BF: A9 02 LDA #$02 C3/B2C1: A0 42 7B LDY #$7B42 ; status icon thread C3/B2C4: 20 73 11 JSR $1173 ; create thread C3/B2C7: A9 01 LDA #$01 C3/B2C9: 9F 49 36 7E STA $7E3649,X C3/B2CD: 9B TXY C3/B2CE: 7B TDC C3/B2CF: A9 B8 LDA #$B8 C3/B2D1: 85 E1 STA $E1 C3/B2D3: A9 68 LDA #$68 C3/B2D5: 85 E2 STA $E2 C3/B2D7: 20 EC B2 JSR $B2EC C3/B2DA: 20 F3 B1 JSR $B1F3 C3/B2DD: 80 03 BRA $B2E2 C3/B2DF: 20 E5 B2 JSR $B2E5 C3/B2E2: AB PLB C3/B2E3: 38 SEC C3/B2E4: 60 RTS C3/B2E5: A0 06 B4 LDY #$B406 C3/B2E8: 20 F9 02 JSR $02F9 ; draw positioned text C3/B2EB: 60 RTS C3/B2EC: 7B TDC C3/B2ED: A5 4B LDA $4B C3/B2EF: AA TAX C3/B2F0: B5 69 LDA $69,X C3/B2F2: 60 RTS C3/B2F3: AA TAX C3/B2F4: 7C F7 B2 JMP ($B2F7,X) C3/B2F7: .DW $B2FB, $B31E C3/B2FB: A6 2D LDX $2D C3/B2FD: C2 20 REP #$20 C3/B2FF: A9 87 EC LDA #$EC87 ; D8/EC87 (colosseum "VS" sprite data) C3/B302: 9D C9 32 STA $32C9,X C3/B305: A9 70 00 LDA #$0070 C3/B308: 9D CA 33 STA $33CA,X C3/B30B: A9 60 00 LDA #$0060 C3/B30E: 9D 4A 34 STA $344A,X C3/B311: E2 20 SEP #$20 C3/B313: FE 49 36 INC $3649,X C3/B316: A9 D8 LDA #$D8 C3/B318: 9D CA 35 STA $35CA,X C3/B31B: 20 06 12 JSR $1206 ; init animation thread C3/B31E: 20 21 12 JSR $1221 ; update animation thread C3/B321: 38 SEC C3/B322: 60 RTS C3/B323: A0 32 B3 LDY #$B332 C3/B326: 4C FE 05 JMP $05FE ; init cursor C3/B329: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/B32C: A0 37 B3 LDY #$B337 C3/B32F: 4C 40 06 JMP $0640 ; update cursor position (single page) C3/B332: .DB $01, $00, $00, $04, $01 C3/B337: .DW $B010, $B048, $B080, $B0B8 C3/B33F: .DB $8B, $58, $0D, $02 C3/B343: .DB $A9, $58, $0D, $02 C3/B347: .DB $CB, $5C, $1C, $07 ; [ Load Colosseum Battle BG Graphics ] C3/B34B: C2 20 REP #$20 C3/B34D: AF 8C 16 E7 LDA $E7168C C3/B351: 85 F3 STA $F3 C3/B353: E2 20 SEP #$20 C3/B355: AF 8E 16 E7 LDA $E7168E C3/B359: 85 F5 STA $F5 C3/B35B: 20 F2 B3 JSR $B3F2 C3/B35E: A0 00 68 LDY #$6800 C3/B361: 8C 16 21 STY $2116 C3/B364: A0 00 10 LDY #$1000 C3/B367: 84 E7 STY $E7 C3/B369: A6 00 LDX $00 C3/B36B: 20 C6 B3 JSR $B3C6 C3/B36E: C2 20 REP #$20 C3/B370: AF 92 16 E7 LDA $E71692 C3/B374: 85 F3 STA $F3 C3/B376: E2 20 SEP #$20 C3/B378: AF 94 16 E7 LDA $E71694 C3/B37C: 85 F5 STA $F5 C3/B37E: 20 F2 B3 JSR $B3F2 C3/B381: A0 00 70 LDY #$7000 C3/B384: 8C 16 21 STY $2116 C3/B387: A0 00 10 LDY #$1000 C3/B38A: 84 E7 STY $E7 C3/B38C: A6 00 LDX $00 C3/B38E: 20 C6 B3 JSR $B3C6 C3/B391: C2 20 REP #$20 C3/B393: AF 7A 18 E7 LDA $E7187A C3/B397: 85 F3 STA $F3 C3/B399: E2 20 SEP #$20 C3/B39B: A9 E7 LDA #$E7 C3/B39D: 85 F5 STA $F5 C3/B39F: 20 F2 B3 JSR $B3F2 C3/B3A2: 20 D8 B3 JSR $B3D8 C3/B3A5: C2 20 REP #$20 C3/B3A7: A9 B0 0A LDA #$0AB0 C3/B3AA: 85 E7 STA $E7 C3/B3AC: E2 20 SEP #$20 C3/B3AE: A9 E7 LDA #$E7 C3/B3B0: 85 E9 STA $E9 C3/B3B2: A2 C9 30 LDX #$30C9 C3/B3B5: 8E 81 21 STX $2181 C3/B3B8: A4 00 LDY $00 C3/B3BA: B7 E7 LDA [$E7],Y C3/B3BC: 8D 80 21 STA $2180 C3/B3BF: C8 INY C3/B3C0: C0 60 00 CPY #$0060 C3/B3C3: D0 F5 BNE $B3BA C3/B3C5: 60 RTS C3/B3C6: C2 20 REP #$20 C3/B3C8: BF 8D B6 7E LDA $7EB68D,X C3/B3CC: 8D 18 21 STA $2118 C3/B3CF: E8 INX C3/B3D0: E8 INX C3/B3D1: E4 E7 CPX $E7 C3/B3D3: D0 F3 BNE $B3C8 C3/B3D5: E2 20 SEP #$20 C3/B3D7: 60 RTS C3/B3D8: A6 00 LDX $00 C3/B3DA: C2 20 REP #$20 C3/B3DC: BF 8D B6 7E LDA $7EB68D,X C3/B3E0: 38 SEC C3/B3E1: E9 80 03 SBC #$0380 C3/B3E4: 9F 49 59 7E STA $7E5949,X C3/B3E8: E8 INX C3/B3E9: E8 INX C3/B3EA: E0 80 05 CPX #$0580 C3/B3ED: D0 ED BNE $B3DC C3/B3EF: E2 20 SEP #$20 C3/B3F1: 60 RTS C3/B3F2: A0 8D B6 LDY #$B68D C3/B3F5: 84 F6 STY $F6 C3/B3F7: A9 7E LDA #$7E C3/B3F9: 85 F8 STA $F8 C3/B3FB: 8B PHB C3/B3FC: A9 7E LDA #$7E C3/B3FE: 48 PHA C3/B3FF: AB PLB C3/B400: 22 6D FF C2 JSL $C2FF6D ; decompress C3/B404: AB PLB C3/B405: 60 RTS ; C3/B406: (22,16) " " ; C3/B40F: ( 6,19) "Select the challenger" ; C3/B427: ( 2, 3) "?????????????" C3/B406: .DB $7C75 \ .DB $FF, $FF, $FF, $FF, $FF, $FF, $00 C3/B40F: .DB $7D15 \ .DB $92, $9E, $A5, $9E, $9C, $AD, $FF, $AD, $A1, $9E, $FF, $9C, $A1, $9A .DB $A5, $A5, $9E, $A7, $A0, $9E, $AB, $00 C3/B427: .DB $790D \ .DB $BF, $BF, $BF, $BF, $BF, $BF, $BF, $BF, $BF, $BF, $BF, $BF, $BF, $00 ; [ Menu State $3F/$40/$41/$4E/$4F: ] C3/B437: 7B TDC C3/B438: AA TAX C3/B439: C2 20 REP #$20 C3/B43B: 9F 71 A2 7E STA $7EA271,X C3/B43F: E8 INX C3/B440: E8 INX C3/B441: E4 F3 CPX $F3 C3/B443: D0 F6 BNE $B43B C3/B445: E2 20 SEP #$20 C3/B447: 60 RTS ; frame data for flashing up indicator C3/B448: .DB $01, $09, $00, $02, $3E C3/B44D: .DB $01, $09, $00, $12, $3E ; flashing up indicator C3/B452: .DW $B448 \ .DB $02 C3/B455: .DW $B44D \ .DB $02 C3/B458: .DW $B448 \ .DB $FF ; page up and page down frame data C3/B45B: .DB $00 C3/B45C: .DB $01, $80, $82, $03, $3E C3/B461: .DB $01, $80, $00, $03, $BE ; --------------------------------------------[ Menu: Shop ]-------------------------------------------- ; [ Menu State $24: Shop (init) ] C3/B466: 20 2F 35 JSR $352F ; disable interrupts C3/B469: 20 04 69 JSR $6904 C3/B46C: 20 08 6A JSR $6A08 C3/B46F: A9 03 LDA #$03 C3/B471: 8D 07 21 STA $2107 C3/B474: A9 C0 LDA #$C0 C3/B476: 14 43 TRB $43 C3/B478: A9 02 LDA #$02 C3/B47A: 85 46 STA $46 C3/B47C: 64 4A STZ $4A C3/B47E: 20 86 B8 JSR $B886 C3/B481: 20 8F B8 JSR $B88F C3/B484: 20 B0 07 JSR $07B0 ; create cursor sprite thread C3/B487: 20 C4 B8 JSR $B8C4 C3/B48A: 20 2B 7E JSR $7E2B C3/B48D: 20 18 C0 JSR $C018 C3/B490: A9 25 LDA #$25 C3/B492: 85 27 STA $27 C3/B494: A9 01 LDA #$01 C3/B496: 85 26 STA $26 C3/B498: 4C 41 35 JMP $3541 ; enable interrupts ; [ Menu State $25: Shop (buy, sell, exit) ] C3/B49B: 20 8C B8 JSR $B88C C3/B49E: A5 08 LDA $08 C3/B4A0: 89 80 BIT #$80 C3/B4A2: F0 06 BEQ $B4AA C3/B4A4: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/B4A7: 4C 92 B7 JMP $B792 C3/B4AA: A5 09 LDA $09 C3/B4AC: 89 80 BIT #$80 C3/B4AE: F0 0C BEQ $B4BC C3/B4B0: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/B4B3: 9C 05 02 STZ $0205 C3/B4B6: A9 FF LDA #$FF C3/B4B8: 85 27 STA $27 C3/B4BA: 64 26 STZ $26 C3/B4BC: 60 RTS ; [ Menu State $26: Buy (item select) ] C3/B4BD: A9 10 LDA #$10 C3/B4BF: 04 45 TSB $45 C3/B4C1: 20 39 0F JSR $0F39 C3/B4C4: 20 A6 B8 JSR $B8A6 C3/B4C7: 20 84 BC JSR $BC84 C3/B4CA: 20 A8 BC JSR $BCA8 C3/B4CD: A5 09 LDA $09 C3/B4CF: 89 80 BIT #$80 C3/B4D1: F0 06 BEQ $B4D9 C3/B4D3: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/B4D6: 4C 60 B7 JMP $B760 ; reload menu state $25 C3/B4D9: A5 08 LDA $08 C3/B4DB: 89 80 BIT #$80 C3/B4DD: F0 06 BEQ $B4E5 C3/B4DF: 20 2F B8 JSR $B82F C3/B4E2: 20 E6 B7 JSR $B7E6 C3/B4E5: 60 RTS C3/B4E6: A9 10 LDA #$10 C3/B4E8: 14 45 TRB $45 C3/B4EA: A9 20 LDA #$20 C3/B4EC: 04 45 TSB $45 C3/B4EE: 60 RTS C3/B4EF: 20 08 83 JSR $8308 C3/B4F2: 20 C2 BF JSR $BFC2 C3/B4F5: 4C 38 57 JMP $5738 C3/B4F8: 20 08 83 JSR $8308 C3/B4FB: 7B TDC C3/B4FC: A5 4B LDA $4B C3/B4FE: AA TAX C3/B4FF: BD 69 18 LDA $1869,X C3/B502: 4C 38 57 JMP $5738 ; [ Menu State $27: Buy (quantity) ] C3/B505: 20 E6 B4 JSR $B4E6 C3/B508: 20 EF B4 JSR $B4EF C3/B50B: 20 53 BB JSR $BB53 C3/B50E: 20 AE BB JSR $BBAE C3/B511: A5 0B LDA $0B C3/B513: 89 01 BIT #$01 C3/B515: F0 22 BEQ $B539 C3/B517: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B51A: A5 28 LDA $28 C3/B51C: C5 6A CMP $6A C3/B51E: F0 5C BEQ $B57C C3/B520: E6 28 INC $28 C3/B522: 20 53 BB JSR $BB53 C3/B525: AD 60 18 LDA $1860 C3/B528: C5 F1 CMP $F1 C3/B52A: AD 61 18 LDA $1861 C3/B52D: E5 F2 SBC $F2 C3/B52F: AD 62 18 LDA $1862 C3/B532: E5 F3 SBC $F3 C3/B534: B0 02 BCS $B538 C3/B536: C6 28 DEC $28 C3/B538: 60 RTS C3/B539: A5 0B LDA $0B C3/B53B: 89 02 BIT #$02 C3/B53D: F0 0B BEQ $B54A C3/B53F: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B542: A5 28 LDA $28 C3/B544: C9 01 CMP #$01 C3/B546: F0 56 BEQ $B59E C3/B548: C6 28 DEC $28 C3/B54A: A5 0B LDA $0B C3/B54C: 89 08 BIT #$08 C3/B54E: F0 33 BEQ $B583 C3/B550: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B553: A9 0A LDA #$0A C3/B555: 18 CLC C3/B556: 65 28 ADC $28 C3/B558: C5 6A CMP $6A C3/B55A: F0 02 BEQ $B55E C3/B55C: B0 21 BCS $B57F C3/B55E: 85 28 STA $28 C3/B560: 20 53 BB JSR $BB53 C3/B563: AD 60 18 LDA $1860 C3/B566: C5 F1 CMP $F1 C3/B568: AD 61 18 LDA $1861 C3/B56B: E5 F2 SBC $F2 C3/B56D: AD 62 18 LDA $1862 C3/B570: E5 F3 SBC $F3 C3/B572: B0 07 BCS $B57B C3/B574: A5 28 LDA $28 C3/B576: 38 SEC C3/B577: E9 0A SBC #$0A C3/B579: 85 28 STA $28 C3/B57B: 60 RTS C3/B57C: 4C 9E B5 JMP $B59E C3/B57F: A5 28 LDA $28 C3/B581: 80 DB BRA $B55E C3/B583: A5 0B LDA $0B C3/B585: 89 04 BIT #$04 C3/B587: F0 15 BEQ $B59E C3/B589: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B58C: A5 28 LDA $28 C3/B58E: 38 SEC C3/B58F: E9 0A SBC #$0A C3/B591: 30 07 BMI $B59A C3/B593: C9 01 CMP #$01 C3/B595: 90 07 BCC $B59E C3/B597: 85 28 STA $28 C3/B599: 60 RTS C3/B59A: A9 01 LDA #$01 C3/B59C: 85 28 STA $28 C3/B59E: A5 09 LDA $09 C3/B5A0: 89 80 BIT #$80 C3/B5A2: F0 06 BEQ $B5AA C3/B5A4: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/B5A7: 4C B3 B7 JMP $B7B3 C3/B5AA: A5 08 LDA $08 C3/B5AC: 89 80 BIT #$80 C3/B5AE: F0 06 BEQ $B5B6 C3/B5B0: 20 CE 0E JSR $0ECE ; play cash register sound effect C3/B5B3: 20 B7 B5 JSR $B5B7 C3/B5B6: 60 RTS C3/B5B7: 20 C2 BF JSR $BFC2 C3/B5BA: A4 00 LDY $00 C3/B5BC: D9 69 18 CMP $1869,Y C3/B5BF: F0 20 BEQ $B5E1 C3/B5C1: C8 INY C3/B5C2: C0 00 01 CPY #$0100 C3/B5C5: D0 F5 BNE $B5BC C3/B5C7: A4 00 LDY $00 C3/B5C9: B9 69 18 LDA $1869,Y C3/B5CC: C9 FF CMP #$FF C3/B5CE: F0 03 BEQ $B5D3 C3/B5D0: C8 INY C3/B5D1: 80 F6 BRA $B5C9 C3/B5D3: A5 28 LDA $28 C3/B5D5: 99 69 19 STA $1969,Y C3/B5D8: BF 89 9D 7E LDA $7E9D89,X C3/B5DC: 99 69 18 STA $1869,Y C3/B5DF: 80 09 BRA $B5EA C3/B5E1: A5 28 LDA $28 C3/B5E3: 18 CLC C3/B5E4: 79 69 19 ADC $1969,Y C3/B5E7: 99 69 19 STA $1969,Y C3/B5EA: 20 53 BB JSR $BB53 C3/B5ED: 38 SEC C3/B5EE: AD 60 18 LDA $1860 C3/B5F1: E5 F1 SBC $F1 C3/B5F3: 8D 60 18 STA $1860 C3/B5F6: C2 20 REP #$20 C3/B5F8: AD 61 18 LDA $1861 C3/B5FB: E5 F2 SBC $F2 C3/B5FD: 8D 61 18 STA $1861 C3/B600: E2 20 SEP #$20 C3/B602: 20 CE 32 JSR $32CE ; check max gp C3/B605: A0 BD C3 LDY #$C3BD C3/B608: 20 F9 02 JSR $02F9 ; draw positioned text C3/B60B: 4C 7D B8 JMP $B87D ; [ Menu State $28: Buy (return to state item select) ] C3/B60E: A5 20 LDA $20 C3/B610: D0 03 BNE $B615 C3/B612: 20 B3 B7 JSR $B7B3 C3/B615: 60 RTS ; [ Menu State $29: Sell (item select) ] C3/B616: A9 10 LDA #$10 C3/B618: 04 45 TSB $45 C3/B61A: 7B TDC C3/B61B: 85 2A STA $2A C3/B61D: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/B620: 20 64 1F JSR $1F64 ; list text page up/down C3/B623: B0 50 BCS $B675 C3/B625: 20 22 7D JSR $7D22 ; update cursor (item list) C3/B628: A5 09 LDA $09 C3/B62A: 89 80 BIT #$80 C3/B62C: F0 06 BEQ $B634 ; branch if B button is not pressed C3/B62E: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/B631: 4C 60 B7 JMP $B760 ; reload menu state $25 C3/B634: A5 08 LDA $08 C3/B636: 89 80 BIT #$80 C3/B638: F0 3B BEQ $B675 ; return if A button is not pressed C3/B63A: 20 CB BF JSR $BFCB ; get currently selected item C3/B63D: C9 FF CMP #$FF C3/B63F: F0 2E BEQ $B66F ; branch if no item C3/B641: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/B644: A9 C0 LDA #$C0 C3/B646: 14 46 TRB $46 C3/B648: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/B64B: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/B64E: 20 68 13 JSR $1368 ; wait for vblank C3/B651: A9 2A LDA #$2A C3/B653: 85 26 STA $26 C3/B655: A2 08 00 LDX #$0008 C3/B658: 86 55 STX $55 C3/B65A: A2 34 00 LDX #$0034 C3/B65D: 86 57 STX $57 C3/B65F: 20 A5 BA JSR $BAA5 C3/B662: 20 D3 BA JSR $BAD3 C3/B665: A0 B1 C3 LDY #$C3B1 ; "How many?" C3/B668: 20 F9 02 JSR $02F9 ; draw positioned text C3/B66B: 20 6D B8 JSR $B86D C3/B66E: 60 RTS C3/B66F: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/B672: 20 5D 30 JSR $305D ; create mosaic thread C3/B675: 60 RTS ; [ Menu State $2A: Sell (quantity) ] C3/B676: 20 E6 B4 JSR $B4E6 C3/B679: 20 F8 B4 JSR $B4F8 C3/B67C: 20 65 BB JSR $BB65 C3/B67F: 20 B7 BB JSR $BBB7 C3/B682: A5 0B LDA $0B C3/B684: 89 01 BIT #$01 C3/B686: F0 0D BEQ $B695 C3/B688: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B68B: A5 28 LDA $28 C3/B68D: C5 64 CMP $64 C3/B68F: F0 4F BEQ $B6E0 C3/B691: E6 28 INC $28 C3/B693: 80 4B BRA $B6E0 C3/B695: A5 0B LDA $0B C3/B697: 89 02 BIT #$02 C3/B699: F0 0B BEQ $B6A6 C3/B69B: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B69E: A5 28 LDA $28 C3/B6A0: C9 01 CMP #$01 C3/B6A2: F0 3C BEQ $B6E0 C3/B6A4: C6 28 DEC $28 C3/B6A6: A5 0B LDA $0B C3/B6A8: 89 08 BIT #$08 C3/B6AA: F0 18 BEQ $B6C4 C3/B6AC: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B6AF: A9 0A LDA #$0A C3/B6B1: 18 CLC C3/B6B2: 65 28 ADC $28 C3/B6B4: C5 64 CMP $64 C3/B6B6: F0 06 BEQ $B6BE C3/B6B8: B0 04 BCS $B6BE C3/B6BA: 85 28 STA $28 C3/B6BC: 80 22 BRA $B6E0 C3/B6BE: A5 64 LDA $64 C3/B6C0: 85 28 STA $28 C3/B6C2: 80 1C BRA $B6E0 C3/B6C4: A5 0B LDA $0B C3/B6C6: 89 04 BIT #$04 C3/B6C8: F0 16 BEQ $B6E0 C3/B6CA: 20 A3 0E JSR $0EA3 ; play cursor sound effect (move) C3/B6CD: A5 28 LDA $28 C3/B6CF: 38 SEC C3/B6D0: E9 0A SBC #$0A C3/B6D2: 30 08 BMI $B6DC C3/B6D4: C9 01 CMP #$01 C3/B6D6: 90 08 BCC $B6E0 C3/B6D8: 85 28 STA $28 C3/B6DA: 80 04 BRA $B6E0 C3/B6DC: A9 01 LDA #$01 C3/B6DE: 85 28 STA $28 C3/B6E0: A5 09 LDA $09 C3/B6E2: 89 80 BIT #$80 C3/B6E4: F0 15 BEQ $B6FB C3/B6E6: 20 A9 0E JSR $0EA9 ; play cursor sound effect (cancel) C3/B6E9: A6 00 LDX $00 C3/B6EB: 86 39 STX $39 C3/B6ED: 86 3B STX $3B C3/B6EF: 20 5A B9 JSR $B95A C3/B6F2: A0 26 C3 LDY #$C326 ; "BUY SELL EXIT" C3/B6F5: 20 F9 02 JSR $02F9 ; draw positioned text C3/B6F8: 4C CF B7 JMP $B7CF C3/B6FB: A5 08 LDA $08 C3/B6FD: 89 80 BIT #$80 C3/B6FF: F0 06 BEQ $B707 C3/B701: 20 CE 0E JSR $0ECE ; play cash register sound effect C3/B704: 20 08 B7 JSR $B708 C3/B707: 60 RTS C3/B708: 20 65 BB JSR $BB65 C3/B70B: 18 CLC C3/B70C: AD 60 18 LDA $1860 C3/B70F: 65 F1 ADC $F1 C3/B711: 8D 60 18 STA $1860 C3/B714: C2 20 REP #$20 C3/B716: AD 61 18 LDA $1861 C3/B719: 65 F2 ADC $F2 C3/B71B: 8D 61 18 STA $1861 C3/B71E: E2 20 SEP #$20 C3/B720: A5 64 LDA $64 C3/B722: C5 28 CMP $28 C3/B724: F0 0E BEQ $B734 C3/B726: 20 CB BF JSR $BFCB ; get currently selected item C3/B729: B9 69 19 LDA $1969,Y C3/B72C: 38 SEC C3/B72D: E5 28 SBC $28 C3/B72F: 99 69 19 STA $1969,Y C3/B732: 80 0C BRA $B740 C3/B734: 20 CB BF JSR $BFCB ; get currently selected item C3/B737: A9 FF LDA #$FF C3/B739: 99 69 18 STA $1869,Y C3/B73C: 7B TDC C3/B73D: 99 69 19 STA $1969,Y C3/B740: 20 CE 32 JSR $32CE ; check max gp C3/B743: A0 BD C3 LDY #$C3BD C3/B746: 20 F9 02 JSR $02F9 ; draw positioned text C3/B749: A9 2B LDA #$2B C3/B74B: 85 26 STA $26 C3/B74D: A9 20 LDA #$20 C3/B74F: 85 20 STA $20 C3/B751: 60 RTS ; [ Menu State $2B: Sell (thank you) ] C3/B752: A5 20 LDA $20 C3/B754: D0 09 BNE $B75F C3/B756: A6 00 LDX $00 C3/B758: 86 39 STX $39 C3/B75A: 86 3B STX $3B C3/B75C: 20 CF B7 JSR $B7CF C3/B75F: 60 RTS ; reload menu state $25 C3/B760: A9 C0 LDA #$C0 C3/B762: 14 46 TRB $46 C3/B764: 64 47 STZ $47 C3/B766: 20 86 B8 JSR $B886 C3/B769: 20 8F B8 JSR $B88F C3/B76C: 20 FD 0E JSR $0EFD ; init dma 1 (bg1 data, left screen) C3/B76F: 20 4E B9 JSR $B94E C3/B772: 20 68 13 JSR $1368 ; wait for vblank C3/B775: 20 39 0F JSR $0F39 C3/B778: 20 5A B9 JSR $B95A C3/B77B: A0 26 C3 LDY #$C326 ; "BUY SELL EXIT" C3/B77E: 20 F9 02 JSR $02F9 ; draw positioned text C3/B781: A0 6F C3 LDY #$C36F ; "Hi! Can I help you?" C3/B784: 20 F9 02 JSR $02F9 ; draw positioned text C3/B787: A4 00 LDY $00 C3/B789: 84 39 STY $39 C3/B78B: 84 3B STY $3B C3/B78D: A9 25 LDA #$25 C3/B78F: 85 26 STA $26 C3/B791: 60 RTS C3/B792: 7B TDC C3/B793: A5 4B LDA $4B C3/B795: 0A ASL C3/B796: AA TAX C3/B797: 7C 9A B7 JMP ($B79A,X) C3/B79A: .DW $B7A3, $B7C7, $B7A0 C3/B7A0: 4C B3 B4 JMP $B4B3 C3/B7A3: 20 A0 B8 JSR $B8A0 C3/B7A6: 20 A9 B8 JSR $B8A9 C3/B7A9: A9 08 LDA #$08 C3/B7AB: 14 47 TRB $47 C3/B7AD: 20 9A C0 JSR $C09A C3/B7B0: 20 3B C2 JSR $C23B C3/B7B3: A0 00 01 LDY #$0100 C3/B7B6: 84 39 STY $39 ; bg2 h-scroll C3/B7B8: A4 00 LDY $00 C3/B7BA: 84 3B STY $3B ; bg2 v-scroll C3/B7BC: 20 86 B9 JSR $B986 C3/B7BF: 20 FD BC JSR $BCFD C3/B7C2: A9 26 LDA #$26 C3/B7C4: 85 26 STA $26 C3/B7C6: 60 RTS C3/B7C7: 20 39 0F JSR $0F39 C3/B7CA: 20 E0 BB JSR $BBE0 C3/B7CD: 80 03 BRA $B7D2 C3/B7CF: 20 02 BC JSR $BC02 C3/B7D2: 20 5A B9 JSR $B95A C3/B7D5: A0 26 C3 LDY #$C326 ; "BUY SELL EXIT" C3/B7D8: 20 F9 02 JSR $02F9 ; draw positioned text C3/B7DB: A0 A2 C3 LDY #$C3A2 ; "Whatcha got?" C3/B7DE: 20 F9 02 JSR $02F9 ; draw positioned text C3/B7E1: A9 29 LDA #$29 C3/B7E3: 85 26 STA $26 C3/B7E5: 60 RTS C3/B7E6: 20 C2 BF JSR $BFC2 C3/B7E9: 20 21 83 JSR $8321 ; calculate pointer to item data C3/B7EC: AE 34 21 LDX $2134 C3/B7EF: BF 00 50 D8 LDA $D85000,X ; item type C3/B7F3: 29 07 AND #$07 C3/B7F5: D0 13 BNE $B80A ; branch if not a tool C3/B7F7: 20 92 BC JSR $BC92 C3/B7FA: A5 64 LDA $64 C3/B7FC: F0 0C BEQ $B80A C3/B7FE: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/B801: A0 F5 C3 LDY #$C3F5 ; "One's plenty!" C3/B804: 20 F9 02 JSR $02F9 ; draw positioned text C3/B807: 4C 7D B8 JMP $B87D C3/B80A: AD 62 18 LDA $1862 ; msb of current gp C3/B80D: D0 2F BNE $B83E ; branch if more than 65535 gp C3/B80F: 7B TDC C3/B810: A5 4B LDA $4B C3/B812: 0A ASL C3/B813: AA TAX C3/B814: C2 20 REP #$20 C3/B816: BF 09 9F 7E LDA $7E9F09,X ; item price C3/B81A: CD 60 18 CMP $1860 C3/B81D: E2 20 SEP #$20 C3/B81F: F0 1D BEQ $B83E ; branch if enough gp C3/B821: 90 1B BCC $B83E C3/B823: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/B826: A0 CE C3 LDY #$C3CE ; "You need more GP!" C3/B829: 20 F9 02 JSR $02F9 ; draw positioned text C3/B82C: 4C 7D B8 JMP $B87D ; [ ] C3/B82F: A5 64 LDA $64 C3/B831: 18 CLC C3/B832: 65 65 ADC $65 C3/B834: 85 69 STA $69 C3/B836: A9 63 LDA #$63 C3/B838: 38 SEC C3/B839: E5 69 SBC $69 C3/B83B: 85 6A STA $6A C3/B83D: 60 RTS ; buy item (branch from C3/B81F) C3/B83E: A5 69 LDA $69 ; item quantity C3/B840: C9 63 CMP #$63 C3/B842: 90 0C BCC $B850 C3/B844: 20 C0 0E JSR $0EC0 ; play invalid sound effect C3/B847: A0 E2 C3 LDY #$C3E2 ; "Too many! " C3/B84A: 20 F9 02 JSR $02F9 ; draw positioned text C3/B84D: 4C 7D B8 JMP $B87D C3/B850: 20 B2 0E JSR $0EB2 ; play cursor sound effect (select) C3/B853: A2 08 00 LDX #$0008 C3/B856: 86 55 STX $55 C3/B858: A2 34 00 LDX #$0034 C3/B85B: 86 57 STX $57 C3/B85D: A9 27 LDA #$27 ; go to menu state $27 C3/B85F: 85 26 STA $26 C3/B861: 20 A5 BA JSR $BAA5 C3/B864: 20 BA BA JSR $BABA C3/B867: A0 96 C3 LDY #$C396 ; "How many?" C3/B86A: 20 F9 02 JSR $02F9 ; draw positioned text C3/B86D: A0 00 01 LDY #$0100 C3/B870: 84 3B STY $3B C3/B872: A4 00 LDY $00 C3/B874: 84 39 STY $39 C3/B876: 20 96 A7 JSR $A796 C3/B879: 20 F4 A6 JSR $A6F4 C3/B87C: 60 RTS C3/B87D: A9 28 LDA #$28 C3/B87F: 85 26 STA $26 C3/B881: A9 20 LDA #$20 C3/B883: 85 20 STA $20 C3/B885: 60 RTS ; [ init cursor for menu state $25 ] C3/B886: A0 95 B8 LDY #$B895 C3/B889: 4C FE 05 JMP $05FE ; init cursor ; [ update cursor for menu state $25 ] C3/B88C: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/B88F: A0 9A B8 LDY #$B89A C3/B892: 4C 40 06 JMP $0640 ; update cursor position (single page) ; cursor properties for menu state $25 C3/B895: .DB $01, $00, $00, $03, $01 ; cursor positions for menu state $25 C3/B89A: .DW $3408, $3430, $3460 ; [ init cursor for menu state $26 ] C3/B8A0: A0 AF B8 LDY #$B8AF C3/B8A3: 4C FE 05 JMP $05FE ; init cursor ; [ update cursor for menu state $26 ] C3/B8A6: 20 2D 07 JSR $072D ; update cursor movement (single page) C3/B8A9: A0 B4 B8 LDY #$B8B4 C3/B8AC: 4C 40 06 JMP $0640 ; update cursor position (single page) ; cursor properties for menu state $26 C3/B8AF: .DB $80, $00, $00, $01, $08 ; cursor positions for menu state $26 C3/B8B4: .DW $3400, $4000, $4C00, $5800, $6400, $7000, $7C00, $8800 ; [ ] C3/B8C4: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/B8C7: 20 2D 6A JSR $6A2D ; clear bg2 data (top right screen) C3/B8CA: 20 32 6A JSR $6A32 ; clear bg2 data (bottom left screen) C3/B8CD: A0 1B BC LDY #$BC1B C3/B8D0: 20 41 03 JSR $0341 ; draw window C3/B8D3: A0 1F BC LDY #$BC1F C3/B8D6: 20 41 03 JSR $0341 ; draw window C3/B8D9: A0 23 BC LDY #$BC23 C3/B8DC: 20 41 03 JSR $0341 ; draw window C3/B8DF: A0 27 BC LDY #$BC27 C3/B8E2: 20 41 03 JSR $0341 ; draw window C3/B8E5: A0 2B BC LDY #$BC2B C3/B8E8: 20 41 03 JSR $0341 ; draw window C3/B8EB: A0 2F BC LDY #$BC2F C3/B8EE: 20 41 03 JSR $0341 ; draw window C3/B8F1: A0 33 BC LDY #$BC33 C3/B8F4: 20 41 03 JSR $0341 ; draw window C3/B8F7: A0 3B BC LDY #$BC3B C3/B8FA: 20 41 03 JSR $0341 ; draw window C3/B8FD: A0 37 BC LDY #$BC37 C3/B900: 20 41 03 JSR $0341 ; draw window C3/B903: A0 3F BC LDY #$BC3F C3/B906: 20 41 03 JSR $0341 ; draw window C3/B909: A0 53 BC LDY #$BC53 C3/B90C: 20 41 03 JSR $0341 ; draw window C3/B90F: A0 4B BC LDY #$BC4B C3/B912: 20 41 03 JSR $0341 ; draw window C3/B915: A0 43 BC LDY #$BC43 C3/B918: 20 41 03 JSR $0341 ; draw window C3/B91B: A0 4F BC LDY #$BC4F C3/B91E: 20 41 03 JSR $0341 ; draw window C3/B921: A0 47 BC LDY #$BC47 C3/B924: 20 41 03 JSR $0341 ; draw window C3/B927: 20 52 0E JSR $0E52 ; copy bg2 data to vram (top screens) C3/B92A: 20 60 0E JSR $0E60 ; copy bg2 data to vram (bottom screens) C3/B92D: 20 4E B9 JSR $B94E C3/B930: 20 28 0E JSR $0E28 ; copy bg1 data to vram (top screens) C3/B933: 20 44 0E JSR $0E44 ; copy bg1 data to vram (bottom screens) C3/B936: 20 5A B9 JSR $B95A C3/B939: A0 26 C3 LDY #$C326 ; "BUY SELL EXIT" C3/B93C: 20 F9 02 JSR $02F9 ; draw positioned text C3/B93F: A0 6F C3 LDY #$C36F ; "Hi! Can I help you?" C3/B942: 20 F9 02 JSR $02F9 ; draw positioned text C3/B945: 20 99 1B JSR $1B99 C3/B948: 20 6E 0E JSR $0E6E ; copy bg3 data to vram (top screens) C3/B94B: 4C 7C 0E JMP $0E7C ; copy bg3 data to vram (bottom screens) C3/B94E: 20 15 6A JSR $6A15 ; clear bg1 data (top left screen) C3/B951: 20 19 6A JSR $6A19 ; clear bg1 data (top right screen) C3/B954: 20 1E 6A JSR $6A1E ; clear bg1 data (bottom left screen) C3/B957: 4C 23 6A JMP $6A23 ; clear bg1 data (bottom right screen) C3/B95A: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/B95D: 20 41 6A JSR $6A41 ; clear bg3 data (top right screen) C3/B960: 20 46 6A JSR $6A46 ; clear bg3 data (bottom left screen) C3/B963: 20 D3 BF JSR $BFD3 C3/B966: 20 F7 C2 JSR $C2F7 C3/B969: A0 38 C3 LDY #$C338 C3/B96C: 20 F9 02 JSR $02F9 ; draw positioned text C3/B96F: 20 F2 C2 JSR $C2F2 C3/B972: AC 60 18 LDY $1860 C3/B975: 84 F1 STY $F1 C3/B977: AD 62 18 LDA $1862 C3/B97A: 85 F3 STA $F3 C3/B97C: 20 82 05 JSR $0582 ; convert hex to decimal (8 digits) C3/B97F: A2 33 7A LDX #$7A33 C3/B982: 20 AC 04 JSR $04AC C3/B985: 60 RTS C3/B986: 20 5A B9 JSR $B95A C3/B989: A0 85 C3 LDY #$C385 C3/B98C: 20 F9 02 JSR $02F9 ; draw positioned text C3/B98F: 20 E1 C2 JSR $C2E1 C3/B992: A4 00 LDY $00 C3/B994: 84 F1 STY $F1 C3/B996: 64 E6 STZ $E6 C3/B998: C2 20 REP #$20 C3/B99A: A5 F1 LDA $F1 C3/B99C: 0A ASL C3/B99D: AA TAX C3/B99E: BF FC B9 C3 LDA $C3B9FC,X C3/B9A2: 8F 89 9E 7E STA $7E9E89 C3/B9A6: A5 F1 LDA $F1 C3/B9A8: 18 CLC C3/B9A9: 65 67 ADC $67 C3/B9AB: 1A INC C3/B9AC: AA TAX C3/B9AD: E2 20 SEP #$20 C3/B9AF: BF C0 7A C4 LDA $C47AC0,X C3/B9B3: A6 F1 LDX $F1 C3/B9B5: 9F 89 9D 7E STA $7E9D89,X C3/B9B9: C9 FF CMP #$FF C3/B9BB: F0 27 BEQ $B9E4 C3/B9BD: 20 68 C0 JSR $C068 C3/B9C0: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/B9C3: A6 F1 LDX $F1 C3/B9C5: BF 89 9D 7E LDA $7E9D89,X C3/B9C9: 20 21 83 JSR $8321 ; calculate pointer to item data C3/B9CC: 20 0C BA JSR $BA0C C3/B9CF: 20 2E 05 JSR $052E ; convert hex to decimal (5 digits) C3/B9D2: C2 20 REP #$20 C3/B9D4: AF 89 9E 7E LDA $7E9E89 C3/B9D8: 18 CLC C3/B9D9: 69 1A 00 ADC #$001A C3/B9DC: AA TAX C3/B9DD: E2 20 SEP #$20 C3/B9DF: 20 9A 04 JSR $049A C3/B9E2: E6 E6 INC $E6 C3/B9E4: A4 F1 LDY $F1 C3/B9E6: C8 INY C3/B9E7: 84 F1 STY $F1 C3/B9E9: C0 08 00 CPY #$0008 C3/B9EC: D0 AA BNE $B998 C3/B9EE: A5 E6 LDA $E6 C3/B9F0: 85 54 STA $54 C3/B9F2: 20 57 BC JSR $BC57 C3/B9F5: 20 84 BC JSR $BC84 C3/B9F8: 20 A8 BC JSR $BCA8 C3/B9FB: 60 RTS C3/B9FC: .DW $7A0D, $7A8D, $7B0D, $7B8D, $7C0D, $7C8D, $7D0D, $7D8D C3/BA0C: C2 20 REP #$20 C3/BA0E: AD 34 21 LDA $2134 C3/BA11: 18 CLC C3/BA12: 69 1C 00 ADC #$001C C3/BA15: AA TAX C3/BA16: BF 00 50 D8 LDA $D85000,X C3/BA1A: 20 2C BA JSR $BA2C C3/BA1D: 85 F3 STA $F3 C3/BA1F: A5 F1 LDA $F1 C3/BA21: 0A ASL C3/BA22: AA TAX C3/BA23: A5 F3 LDA $F3 C3/BA25: 9F 09 9F 7E STA $7E9F09,X C3/BA29: E2 20 SEP #$20 C3/BA2B: 60 RTS C3/BA2C: 48 PHA C3/BA2D: A6 67 LDX $67 C3/BA2F: 7B TDC C3/BA30: E2 20 SEP #$20 C3/BA32: BF C0 7A C4 LDA $C47AC0,X C3/BA36: 29 38 AND #$38 C3/BA38: C2 20 REP #$20 C3/BA3A: 4A LSR C3/BA3B: 4A LSR C3/BA3C: AA TAX C3/BA3D: 68 PLA C3/BA3E: 7C 41 BA JMP ($BA41,X) ; jump table for shop price adjustment ; 0 = none ; 1 = +50% ; 2 = +100% ; 3 = -50% ; 4 = -50% for female showing character (Terra, Celes, or Relm), +50% for male ; 5 = -50% for male showing character, +50% for female ; 6 = -50% if Edgar is showing character C3/BA41: .DW $BA55, $BA4F, $BA56, $BA58, $BA5A, $BA76, $BA92 ; +50% C3/BA4F: 85 E7 STA $E7 C3/BA51: 4A LSR C3/BA52: 18 CLC C3/BA53: 65 E7 ADC $E7 C3/BA55: 60 RTS ; +100% C3/BA56: 0A ASL C3/BA57: 60 RTS ; -50% C3/BA58: 4A LSR C3/BA59: 60 RTS ; -50% female, +50% male C3/BA5A: 48 PHA C3/BA5B: E2 20 SEP #$20 C3/BA5D: AD 02 02 LDA $0202 C3/BA60: C9 06 CMP #$06 C3/BA62: F0 0D BEQ $BA71 C3/BA64: C9 08 CMP #$08 C3/BA66: F0 09 BEQ $BA71 C3/BA68: C9 00 CMP #$00 C3/BA6A: F0 05 BEQ $BA71 C3/BA6C: C2 20 REP #$20 C3/BA6E: 68 PLA C3/BA6F: 80 DE BRA $BA4F C3/BA71: C2 20 REP #$20 C3/BA73: 68 PLA C3/BA74: 80 E2 BRA $BA58 ; -50% male, +50% female C3/BA76: 48 PHA C3/BA77: E2 20 SEP #$20 C3/BA79: AD 02 02 LDA $0202 C3/BA7C: C9 06 CMP #$06 ; celes C3/BA7E: F0 0D BEQ $BA8D C3/BA80: C9 08 CMP #$08 ; relm C3/BA82: F0 09 BEQ $BA8D C3/BA84: C9 00 CMP #$00 ; terra C3/BA86: F0 05 BEQ $BA8D C3/BA88: C2 20 REP #$20 C3/BA8A: 68 PLA C3/BA8B: 80 CB BRA $BA58 C3/BA8D: C2 20 REP #$20 C3/BA8F: 68 PLA C3/BA90: 80 BD BRA $BA4F ; -50% Edgar C3/BA92: 48 PHA C3/BA93: E2 20 SEP #$20 C3/BA95: AD 02 02 LDA $0202 C3/BA98: C9 04 CMP #$04 C3/BA9A: F0 04 BEQ $BAA0 C3/BA9C: C2 20 REP #$20 C3/BA9E: 68 PLA C3/BA9F: 60 RTS C3/BAA0: C2 20 REP #$20 C3/BAA2: 68 PLA C3/BAA3: 80 B3 BRA $BA58 ; [ ] C3/BAA5: 20 39 0F JSR $0F39 C3/BAA8: 20 5A B9 JSR $B95A C3/BAAB: 20 E1 C2 JSR $C2E1 C3/BAAE: C2 20 REP #$20 C3/BAB0: A9 0F 7A LDA #$7A0F C3/BAB3: 8F 89 9E 7E STA $7E9E89 C3/BAB7: E2 20 SEP #$20 C3/BAB9: 60 RTS C3/BABA: 20 EC BA JSR $BAEC C3/BABD: 20 84 BC JSR $BC84 C3/BAC0: 20 A8 BC JSR $BCA8 C3/BAC3: 20 C2 BF JSR $BFC2 C3/BAC6: 20 68 C0 JSR $C068 C3/BAC9: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/BACC: A9 01 LDA #$01 C3/BACE: 85 28 STA $28 C3/BAD0: 4C AE BB JMP $BBAE C3/BAD3: 20 9D BC JSR $BC9D C3/BAD6: 20 66 BF JSR $BF66 C3/BAD9: 20 F2 BA JSR $BAF2 C3/BADC: 20 CB BF JSR $BFCB ; get currently selected item C3/BADF: 20 68 C0 JSR $C068 C3/BAE2: 20 D9 7F JSR $7FD9 ; draw positioned text (at 7E/9E89) C3/BAE5: A9 01 LDA #$01 C3/BAE7: 85 28 STA $28 C3/BAE9: 4C B7 BB JMP $BBB7 C3/BAEC: 20 C2 BF JSR $BFC2 C3/BAEF: 4C F8 BA JMP $BAF8 C3/BAF2: 20 CB BF JSR $BFCB ; get currently selected item C3/BAF5: 4C F8 BA JMP $BAF8 C3/BAF8: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BAFB: AE 34 21 LDX $2134 C3/BAFE: BF 00 50 D8 LDA $D85000,X C3/BB02: 29 07 AND #$07 C3/BB04: F0 4C BEQ $BB52 C3/BB06: C9 06 CMP #$06 C3/BB08: F0 48 BEQ $BB52 C3/BB0A: C9 01 CMP #$01 C3/BB0C: F0 22 BEQ $BB30 C3/BB0E: 20 F2 C2 JSR $C2F2 C3/BB11: BF 14 50 D8 LDA $D85014,X C3/BB15: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/BB18: A2 A9 7B LDX #$7BA9 C3/BB1B: 20 C0 04 JSR $04C0 C3/BB1E: 20 F7 C2 JSR $C2F7 C3/BB21: A0 61 C3 LDY #$C361 C3/BB24: 20 F9 02 JSR $02F9 ; draw positioned text C3/BB27: A0 6B C3 LDY #$C36B C3/BB2A: 20 F9 02 JSR $02F9 ; draw positioned text C3/BB2D: 4C F2 C2 JMP $C2F2 C3/BB30: 20 F2 C2 JSR $C2F2 C3/BB33: BF 14 50 D8 LDA $D85014,X C3/BB37: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/BB3A: A2 A9 7B LDX #$7BA9 C3/BB3D: 20 C0 04 JSR $04C0 C3/BB40: 20 F7 C2 JSR $C2F7 C3/BB43: A0 57 C3 LDY #$C357 C3/BB46: 20 F9 02 JSR $02F9 ; draw positioned text C3/BB49: A0 6B C3 LDY #$C36B C3/BB4C: 20 F9 02 JSR $02F9 ; draw positioned text C3/BB4F: 20 F2 C2 JSR $C2F2 C3/BB52: 60 RTS C3/BB53: 7B TDC C3/BB54: A5 4B LDA $4B C3/BB56: 0A ASL C3/BB57: AA TAX C3/BB58: C2 20 REP #$20 C3/BB5A: BF 09 9F 7E LDA $7E9F09,X C3/BB5E: 85 F1 STA $F1 C3/BB60: E2 20 SEP #$20 C3/BB62: 4C 81 BB JMP $BB81 C3/BB65: 20 CB BF JSR $BFCB ; get currently selected item C3/BB68: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BB6B: C2 20 REP #$20 C3/BB6D: AD 34 21 LDA $2134 C3/BB70: 18 CLC C3/BB71: 69 1C 00 ADC #$001C C3/BB74: AA TAX C3/BB75: BF 00 50 D8 LDA $D85000,X C3/BB79: 4A LSR C3/BB7A: 85 F1 STA $F1 C3/BB7C: E2 20 SEP #$20 C3/BB7E: 4C 81 BB JMP $BB81 C3/BB81: A5 F1 LDA $F1 C3/BB83: 8D 02 42 STA $4202 C3/BB86: A5 28 LDA $28 C3/BB88: 8D 03 42 STA $4203 C3/BB8B: 64 EF STZ $EF C3/BB8D: EA NOP C3/BB8E: EA NOP C3/BB8F: AE 16 42 LDX $4216 C3/BB92: 86 ED STX $ED C3/BB94: A5 F2 LDA $F2 C3/BB96: 8D 02 42 STA $4202 C3/BB99: A5 28 LDA $28 C3/BB9B: 8D 03 42 STA $4203 C3/BB9E: C2 21 REP #$21 C3/BBA0: A5 EE LDA $EE C3/BBA2: 6D 16 42 ADC $4216 C3/BBA5: 85 F2 STA $F2 C3/BBA7: E2 20 SEP #$20 C3/BBA9: A5 ED LDA $ED C3/BBAB: 85 F1 STA $F1 C3/BBAD: 60 RTS C3/BBAE: 20 C0 BB JSR $BBC0 C3/BBB1: 20 53 BB JSR $BB53 C3/BBB4: 4C D7 BB JMP $BBD7 C3/BBB7: 20 C0 BB JSR $BBC0 C3/BBBA: 20 65 BB JSR $BB65 C3/BBBD: 4C D7 BB JMP $BBD7 C3/BBC0: 20 F7 C2 JSR $C2F7 C3/BBC3: A0 3D C3 LDY #$C33D C3/BBC6: 20 F9 02 JSR $02F9 ; draw positioned text C3/BBC9: 20 F2 C2 JSR $C2F2 C3/BBCC: A5 28 LDA $28 C3/BBCE: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/BBD1: A2 2B 7A LDX #$7A2B C3/BBD4: 4C B6 04 JMP $04B6 ; draw number text (2 digit) C3/BBD7: 20 82 05 JSR $0582 ; convert hex to decimal (8 digits) C3/BBDA: A2 A1 7A LDX #$7AA1 C3/BBDD: 4C AC 04 JMP $04AC C3/BBE0: A9 01 LDA #$01 C3/BBE2: 8D 07 21 STA $2107 C3/BBE5: A9 F5 LDA #$F5 C3/BBE7: 85 5C STA $5C C3/BBE9: A9 0A LDA #$0A C3/BBEB: 85 5A STA $5A C3/BBED: A9 01 LDA #$01 C3/BBEF: 85 5B STA $5B C3/BBF1: 20 1C 7D JSR $7D1C C3/BBF4: A4 4D LDY $4D C3/BBF6: 84 4F STY $4F C3/BBF8: A5 4A LDA $4A C3/BBFA: 18 CLC C3/BBFB: 65 50 ADC $50 C3/BBFD: 85 50 STA $50 C3/BBFF: 20 25 7D JSR $7D25 C3/BC02: 20 0D 7E JSR $7E0D C3/BC05: 20 1F 09 JSR $091F ; init scroll indicator thread C3/BC08: C2 20 REP #$20 C3/BC0A: A9 70 00 LDA #$0070 C3/BC0D: 9F 4A 35 7E STA $7E354A,X C3/BC11: A9 58 00 LDA #$0058 C3/BC14: 9F CA 34 7E STA $7E34CA,X C3/BC18: E2 20 SEP #$20 C3/BC1A: 60 RTS C3/BC1B: .DB $8B, $58, $07, $02 C3/BC1F: .DB $9D, $58, $13, $02 C3/BC23: .DB $8B, $59, $10, $02 C3/BC27: .DB $AF, $59, $0A, $02 C3/BC2B: .DB $8B, $5A, $1C, $10 C3/BC2F: .DB $8B, $60, $07, $02 C3/BC33: .DB $9D, $60, $13, $02 C3/BC37: .DB $8B, $61, $1C, $0C C3/BC3B: .DB $0B, $65, $1C, $06 C3/BC3F: .DB $8B, $68, $07, $02 C3/BC43: .DB $9D, $68, $13, $02 C3/BC47: .DB $8B, $69, $11, $07 C3/BC4B: .DB $CB, $6B, $1C, $03 C3/BC4F: .DB $0B, $6D, $1C, $06 C3/BC53: .DB $B1, $69, $09, $07 C3/BC57: A2 C9 9D LDX #$9DC9 C3/BC5A: 8E 81 21 STX $2181 C3/BC5D: 7B TDC C3/BC5E: AA TAX C3/BC5F: DA PHX C3/BC60: A4 00 LDY $00 C3/BC62: BF 89 9D 7E LDA $7E9D89,X C3/BC66: D9 69 18 CMP $1869,Y C3/BC69: F0 0B BEQ $BC76 C3/BC6B: C8 INY C3/BC6C: C0 00 01 CPY #$0100 C3/BC6F: D0 F5 BNE $BC66 C3/BC71: 9C 80 21 STZ $2180 C3/BC74: 80 06 BRA $BC7C C3/BC76: B9 69 19 LDA $1969,Y C3/BC79: 8D 80 21 STA $2180 C3/BC7C: FA PLX C3/BC7D: E8 INX C3/BC7E: E0 08 00 CPX #$0008 C3/BC81: D0 DC BNE $BC5F C3/BC83: 60 RTS C3/BC84: 20 92 BC JSR $BC92 C3/BC87: A5 64 LDA $64 C3/BC89: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/BC8C: A2 3F 7B LDX #$7B3F C3/BC8F: 4C B6 04 JMP $04B6 ; draw number text (2 digit) ; [ ] C3/BC92: 7B TDC C3/BC93: A5 4B LDA $4B C3/BC95: AA TAX C3/BC96: BF C9 9D 7E LDA $7E9DC9,X C3/BC9A: 85 64 STA $64 C3/BC9C: 60 RTS ; [ ] C3/BC9D: 7B TDC C3/BC9E: A5 4B LDA $4B C3/BCA0: A8 TAY C3/BCA1: B9 69 19 LDA $1969,Y C3/BCA4: 85 64 STA $64 C3/BCA6: 80 DF BRA $BC87 C3/BCA8: 20 C2 BF JSR $BFC2 C3/BCAB: 4C 69 BF JMP $BF69 ; [ Check Item Equip Status ] ; A (out): 0 = can't equip, 1 = already equipped, 2 = up arrow, 3 = down arrow, 4 = equals sign C3/BCAE: 20 C9 BC JSR $BCC9 ; check if character can equip item C3/BCB1: 90 14 BCC $BCC7 ; return 0 if not C3/BCB3: 7B TDC C3/BCB4: A5 4B LDA $4B C3/BCB6: C2 20 REP #$20 C3/BCB8: 0A ASL C3/BCB9: 0A ASL C3/BCBA: 0A ASL C3/BCBB: 0A ASL C3/BCBC: E2 20 SEP #$20 C3/BCBE: 18 CLC C3/BCBF: 65 E0 ADC $E0 C3/BCC1: AA TAX C3/BCC2: BF 8D AA 7E LDA $7EAA8D,X C3/BCC6: 60 RTS C3/BCC7: 7B TDC C3/BCC8: 60 RTS C3/BCC9: 8B PHB C3/BCCA: A9 00 LDA #$00 C3/BCCC: 48 PHA C3/BCCD: AB PLB C3/BCCE: 7B TDC C3/BCCF: 8D D8 11 STA $11D8 C3/BCD2: 7B TDC C3/BCD3: A5 E0 LDA $E0 C3/BCD5: AA TAX C3/BCD6: BF 09 9E 7E LDA $7E9E09,X C3/BCDA: 20 48 9C JSR $9C48 C3/BCDD: 7B TDC C3/BCDE: A5 4B LDA $4B C3/BCE0: AA TAX C3/BCE1: BF 89 9D 7E LDA $7E9D89,X C3/BCE5: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BCE8: AE 34 21 LDX $2134 C3/BCEB: C2 20 REP #$20 C3/BCED: BF 01 50 D8 LDA $D85001,X ; equippable characters C3/BCF1: 25 E7 AND $E7 C3/BCF3: E2 20 SEP #$20 C3/BCF5: F0 03 BEQ $BCFA C3/BCF7: AB PLB C3/BCF8: 38 SEC C3/BCF9: 60 RTS C3/BCFA: AB PLB C3/BCFB: 18 CLC C3/BCFC: 60 RTS C3/BCFD: 20 4F BF JSR $BF4F C3/BD00: A0 8D AA LDY #$AA8D C3/BD03: 84 F3 STY $F3 C3/BD05: 7B TDC C3/BD06: AA TAX C3/BD07: A4 F3 LDY $F3 C3/BD09: 8C 81 21 STY $2181 C3/BD0C: DA PHX C3/BD0D: BF 89 9D 7E LDA $7E9D89,X C3/BD11: 85 9F STA $9F C3/BD13: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BD16: AE 34 21 LDX $2134 C3/BD19: BF 14 50 D8 LDA $D85014,X C3/BD1D: 85 9E STA $9E C3/BD1F: BF 00 50 D8 LDA $D85000,X C3/BD23: 29 07 AND #$07 C3/BD25: C9 01 CMP #$01 C3/BD27: F0 7C BEQ $BDA5 C3/BD29: C9 02 CMP #$02 C3/BD2B: F0 18 BEQ $BD45 C3/BD2D: C9 03 CMP #$03 C3/BD2F: F0 0E BEQ $BD3F C3/BD31: C9 04 CMP #$04 C3/BD33: F0 0D BEQ $BD42 C3/BD35: C9 05 CMP #$05 C3/BD37: F0 03 BEQ $BD3C C3/BD39: 4C 0A BF JMP $BF0A C3/BD3C: 4C 18 BF JMP $BF18 C3/BD3F: 4C 35 BE JMP $BE35 C3/BD42: 4C BD BE JMP $BEBD C3/BD45: 7B TDC C3/BD46: AA TAX C3/BD47: DA PHX C3/BD48: C2 20 REP #$20 C3/BD4A: AD DC 1E LDA $1EDC C3/BD4D: 3F 67 9C C3 AND $C39C67,X C3/BD51: F0 34 BEQ $BD87 C3/BD53: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/BD57: A8 TAY C3/BD58: E2 20 SEP #$20 C3/BD5A: 7B TDC C3/BD5B: B9 22 00 LDA $0022,Y C3/BD5E: C5 9F CMP $9F C3/BD60: F0 1C BEQ $BD7E C3/BD62: C9 FF CMP #$FF C3/BD64: F0 10 BEQ $BD76 C3/BD66: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BD69: AE 34 21 LDX $2134 C3/BD6C: BF 14 50 D8 LDA $D85014,X C3/BD70: C5 9E CMP $9E C3/BD72: F0 0E BEQ $BD82 C3/BD74: B0 04 BCS $BD7A C3/BD76: A9 02 LDA #$02 C3/BD78: 80 0A BRA $BD84 C3/BD7A: A9 03 LDA #$03 C3/BD7C: 80 06 BRA $BD84 C3/BD7E: A9 01 LDA #$01 C3/BD80: 80 02 BRA $BD84 C3/BD82: A9 04 LDA #$04 C3/BD84: 8D 80 21 STA $2180 C3/BD87: FA PLX C3/BD88: E8 INX C3/BD89: E8 INX C3/BD8A: E0 20 00 CPX #$0020 C3/BD8D: D0 B8 BNE $BD47 C3/BD8F: C2 21 REP #$21 C3/BD91: A5 F3 LDA $F3 C3/BD93: 69 10 00 ADC #$0010 C3/BD96: 85 F3 STA $F3 C3/BD98: E2 20 SEP #$20 C3/BD9A: FA PLX C3/BD9B: E8 INX C3/BD9C: E0 08 00 CPX #$0008 C3/BD9F: D0 01 BNE $BDA2 C3/BDA1: 60 RTS C3/BDA2: 4C 07 BD JMP $BD07 C3/BDA5: 7B TDC C3/BDA6: AA TAX C3/BDA7: DA PHX C3/BDA8: C2 20 REP #$20 C3/BDAA: AD DC 1E LDA $1EDC C3/BDAD: 3F 67 9C C3 AND $C39C67,X C3/BDB1: F0 74 BEQ $BE27 C3/BDB3: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/BDB7: A8 TAY C3/BDB8: E2 20 SEP #$20 C3/BDBA: B9 1F 00 LDA $001F,Y C3/BDBD: C5 9F CMP $9F C3/BDBF: F0 5D BEQ $BE1E C3/BDC1: B9 20 00 LDA $0020,Y C3/BDC4: C5 9F CMP $9F C3/BDC6: F0 56 BEQ $BE1E C3/BDC8: 7B TDC C3/BDC9: B9 1F 00 LDA $001F,Y C3/BDCC: C9 FF CMP #$FF C3/BDCE: F0 10 BEQ $BDE0 C3/BDD0: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BDD3: AE 34 21 LDX $2134 C3/BDD6: BF 00 50 D8 LDA $D85000,X C3/BDDA: 29 07 AND #$07 C3/BDDC: C9 01 CMP #$01 C3/BDDE: F0 1E BEQ $BDFE C3/BDE0: 7B TDC C3/BDE1: B9 20 00 LDA $0020,Y C3/BDE4: C9 FF CMP #$FF C3/BDE6: F0 2E BEQ $BE16 C3/BDE8: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BDEB: AE 34 21 LDX $2134 C3/BDEE: BF 00 50 D8 LDA $D85000,X C3/BDF2: 29 07 AND #$07 C3/BDF4: C9 01 CMP #$01 C3/BDF6: D0 06 BNE $BDFE C3/BDF8: 7B TDC C3/BDF9: B9 20 00 LDA $0020,Y C3/BDFC: 80 04 BRA $BE02 C3/BDFE: 7B TDC C3/BDFF: B9 1F 00 LDA $001F,Y C3/BE02: C9 FF CMP #$FF C3/BE04: F0 10 BEQ $BE16 C3/BE06: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BE09: AE 34 21 LDX $2134 C3/BE0C: BF 14 50 D8 LDA $D85014,X C3/BE10: C5 9E CMP $9E C3/BE12: F0 0E BEQ $BE22 C3/BE14: B0 04 BCS $BE1A C3/BE16: A9 02 LDA #$02 C3/BE18: 80 0A BRA $BE24 C3/BE1A: A9 03 LDA #$03 C3/BE1C: 80 06 BRA $BE24 C3/BE1E: A9 01 LDA #$01 C3/BE20: 80 02 BRA $BE24 C3/BE22: A9 04 LDA #$04 C3/BE24: 8D 80 21 STA $2180 C3/BE27: FA PLX C3/BE28: E8 INX C3/BE29: E8 INX C3/BE2A: E0 20 00 CPX #$0020 C3/BE2D: D0 03 BNE $BE32 C3/BE2F: 4C 8F BD JMP $BD8F C3/BE32: 4C A7 BD JMP $BDA7 C3/BE35: 7B TDC C3/BE36: AA TAX C3/BE37: DA PHX C3/BE38: C2 20 REP #$20 C3/BE3A: AD DC 1E LDA $1EDC C3/BE3D: 3F 67 9C C3 AND $C39C67,X C3/BE41: F0 6C BEQ $BEAF C3/BE43: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/BE47: A8 TAY C3/BE48: E2 20 SEP #$20 C3/BE4A: B9 1F 00 LDA $001F,Y C3/BE4D: C5 9F CMP $9F C3/BE4F: F0 55 BEQ $BEA6 C3/BE51: B9 20 00 LDA $0020,Y C3/BE54: C5 9F CMP $9F C3/BE56: F0 4E BEQ $BEA6 C3/BE58: 7B TDC C3/BE59: B9 20 00 LDA $0020,Y C3/BE5C: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BE5F: AE 34 21 LDX $2134 C3/BE62: BF 00 50 D8 LDA $D85000,X C3/BE66: 29 07 AND #$07 C3/BE68: C9 03 CMP #$03 C3/BE6A: F0 1A BEQ $BE86 C3/BE6C: 7B TDC C3/BE6D: B9 1F 00 LDA $001F,Y C3/BE70: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BE73: AE 34 21 LDX $2134 C3/BE76: BF 00 50 D8 LDA $D85000,X C3/BE7A: 29 07 AND #$07 C3/BE7C: C9 03 CMP #$03 C3/BE7E: D0 1E BNE $BE9E C3/BE80: 7B TDC C3/BE81: B9 1F 00 LDA $001F,Y C3/BE84: 80 04 BRA $BE8A C3/BE86: 7B TDC C3/BE87: B9 20 00 LDA $0020,Y C3/BE8A: C9 FF CMP #$FF C3/BE8C: F0 10 BEQ $BE9E C3/BE8E: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BE91: AE 34 21 LDX $2134 C3/BE94: BF 14 50 D8 LDA $D85014,X C3/BE98: C5 9E CMP $9E C3/BE9A: F0 0E BEQ $BEAA C3/BE9C: B0 04 BCS $BEA2 C3/BE9E: A9 02 LDA #$02 C3/BEA0: 80 0A BRA $BEAC C3/BEA2: A9 03 LDA #$03 C3/BEA4: 80 06 BRA $BEAC C3/BEA6: A9 01 LDA #$01 C3/BEA8: 80 02 BRA $BEAC C3/BEAA: A9 04 LDA #$04 C3/BEAC: 8D 80 21 STA $2180 C3/BEAF: FA PLX C3/BEB0: E8 INX C3/BEB1: E8 INX C3/BEB2: E0 20 00 CPX #$0020 C3/BEB5: D0 03 BNE $BEBA C3/BEB7: 4C 8F BD JMP $BD8F C3/BEBA: 4C 37 BE JMP $BE37 C3/BEBD: 7B TDC C3/BEBE: AA TAX C3/BEBF: DA PHX C3/BEC0: C2 20 REP #$20 C3/BEC2: AD DC 1E LDA $1EDC C3/BEC5: 3F 67 9C C3 AND $C39C67,X C3/BEC9: F0 34 BEQ $BEFF C3/BECB: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/BECF: A8 TAY C3/BED0: E2 20 SEP #$20 C3/BED2: 7B TDC C3/BED3: B9 21 00 LDA $0021,Y C3/BED6: C5 9F CMP $9F C3/BED8: F0 1C BEQ $BEF6 C3/BEDA: C9 FF CMP #$FF C3/BEDC: F0 10 BEQ $BEEE C3/BEDE: 20 21 83 JSR $8321 ; calculate pointer to item data C3/BEE1: AE 34 21 LDX $2134 C3/BEE4: BF 14 50 D8 LDA $D85014,X C3/BEE8: C5 9E CMP $9E C3/BEEA: F0 0E BEQ $BEFA C3/BEEC: B0 04 BCS $BEF2 C3/BEEE: A9 02 LDA #$02 C3/BEF0: 80 0A BRA $BEFC C3/BEF2: A9 03 LDA #$03 C3/BEF4: 80 06 BRA $BEFC C3/BEF6: A9 01 LDA #$01 C3/BEF8: 80 02 BRA $BEFC C3/BEFA: A9 04 LDA #$04 C3/BEFC: 8D 80 21 STA $2180 C3/BEFF: FA PLX C3/BF00: E8 INX C3/BF01: E8 INX C3/BF02: E0 20 00 CPX #$0020 C3/BF05: D0 B8 BNE $BEBF C3/BF07: 4C 8F BD JMP $BD8F C3/BF0A: 7B TDC C3/BF0B: AA TAX C3/BF0C: 8D 80 21 STA $2180 C3/BF0F: E8 INX C3/BF10: E0 10 00 CPX #$0010 C3/BF13: D0 F7 BNE $BF0C C3/BF15: 4C 8F BD JMP $BD8F C3/BF18: 7B TDC C3/BF19: AA TAX C3/BF1A: DA PHX C3/BF1B: C2 20 REP #$20 C3/BF1D: AD DC 1E LDA $1EDC C3/BF20: 3F 67 9C C3 AND $C39C67,X C3/BF24: F0 1E BEQ $BF44 C3/BF26: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/BF2A: A8 TAY C3/BF2B: E2 20 SEP #$20 C3/BF2D: 7B TDC C3/BF2E: B9 23 00 LDA $0023,Y C3/BF31: C5 9F CMP $9F C3/BF33: F0 0A BEQ $BF3F C3/BF35: B9 24 00 LDA $0024,Y C3/BF38: C5 9F CMP $9F C3/BF3A: F0 03 BEQ $BF3F C3/BF3C: 7B TDC C3/BF3D: 80 02 BRA $BF41 C3/BF3F: A9 01 LDA #$01 C3/BF41: 8D 80 21 STA $2180 C3/BF44: FA PLX C3/BF45: E8 INX C3/BF46: E8 INX C3/BF47: E0 20 00 CPX #$0020 C3/BF4A: D0 CE BNE $BF1A C3/BF4C: 4C 8F BD JMP $BD8F C3/BF4F: 8B PHB C3/BF50: A9 7E LDA #$7E C3/BF52: 48 PHA C3/BF53: AB PLB C3/BF54: 7B TDC C3/BF55: AA TAX C3/BF56: C2 20 REP #$20 C3/BF58: 9E 8D AA STZ $AA8D,X C3/BF5B: E8 INX C3/BF5C: E8 INX C3/BF5D: E0 80 00 CPX #$0080 C3/BF60: D0 F6 BNE $BF58 C3/BF62: E2 20 SEP #$20 C3/BF64: AB PLB C3/BF65: 60 RTS C3/BF66: 20 CB BF JSR $BFCB ; get currently selected item C3/BF69: 85 E0 STA $E0 C3/BF6B: 64 65 STZ $65 C3/BF6D: A2 1F 16 LDX #$161F C3/BF70: 86 E7 STX $E7 C3/BF72: A9 00 LDA #$00 C3/BF74: 85 E9 STA $E9 C3/BF76: A6 00 LDX $00 C3/BF78: DA PHX C3/BF79: C2 20 REP #$20 C3/BF7B: 8A TXA C3/BF7C: 0A ASL C3/BF7D: AA TAX C3/BF7E: AD DC 1E LDA $1EDC C3/BF81: 3F 67 9C C3 AND $C39C67,X C3/BF85: F0 1E BEQ $BFA5 C3/BF87: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/BF8B: AA TAX C3/BF8C: E2 20 SEP #$20 C3/BF8E: BD 00 00 LDA $0000,X C3/BF91: C9 0E CMP #$0E C3/BF93: B0 10 BCS $BFA5 C3/BF95: A4 00 LDY $00 C3/BF97: B7 E7 LDA [$E7],Y C3/BF99: C5 E0 CMP $E0 C3/BF9B: D0 02 BNE $BF9F C3/BF9D: E6 65 INC $65 C3/BF9F: C8 INY C3/BFA0: C0 06 00 CPY #$0006 C3/BFA3: D0 F2 BNE $BF97 C3/BFA5: C2 21 REP #$21 C3/BFA7: A9 25 00 LDA #$0025 C3/BFAA: 65 E7 ADC $E7 C3/BFAC: 85 E7 STA $E7 C3/BFAE: E2 20 SEP #$20 C3/BFB0: FA PLX C3/BFB1: E8 INX C3/BFB2: E0 10 00 CPX #$0010 C3/BFB5: D0 C1 BNE $BF78 C3/BFB7: A5 65 LDA $65 C3/BFB9: 20 E0 04 JSR $04E0 ; convert hex to decimal (3 digits) C3/BFBC: A2 3F 7C LDX #$7C3F C3/BFBF: 4C B6 04 JMP $04B6 ; draw number text (2 digit) C3/BFC2: 7B TDC C3/BFC3: A5 4B LDA $4B C3/BFC5: AA TAX C3/BFC6: BF 89 9D 7E LDA $7E9D89,X C3/BFCA: 60 RTS ; [ get currently selected item ] C3/BFCB: 7B TDC C3/BFCC: A5 4B LDA $4B C3/BFCE: A8 TAY C3/BFCF: B9 69 18 LDA $1869,Y C3/BFD2: 60 RTS C3/BFD3: 20 F7 C2 JSR $C2F7 C3/BFD6: AD 12 42 LDA $4212 C3/BFD9: 29 40 AND #$40 C3/BFDB: F0 F9 BEQ $BFD6 C3/BFDD: AD 01 02 LDA $0201 C3/BFE0: 8D 1B 21 STA $211B C3/BFE3: 9C 1B 21 STZ $211B C3/BFE6: A9 09 LDA #$09 C3/BFE8: 8D 1C 21 STA $211C C3/BFEB: 8D 1C 21 STA $211C C3/BFEE: AE 34 21 LDX $2134 C3/BFF1: 86 67 STX $67 C3/BFF3: BF C0 7A C4 LDA $C47AC0,X C3/BFF7: 29 07 AND #$07 C3/BFF9: 0A ASL C3/BFFA: AA TAX C3/BFFB: C2 20 REP #$20 C3/BFFD: BF 0C C0 C3 LDA $C3C00C,X C3/C001: 85 E7 STA $E7 C3/C003: E2 20 SEP #$20 C3/C005: A9 C3 LDA #$C3 C3/C007: 85 E9 STA $E9 C3/C009: 4C FF 02 JMP $02FF ; draw positioned text C3/C00C: .DW $0000, $C2FC, $C305, $C30D, $C314, $C31D C3/C018: A9 02 LDA #$02 C3/C01A: 8D 50 43 STA $4350 C3/C01D: A9 12 LDA #$12 C3/C01F: 8D 51 43 STA $4351 C3/C022: A0 37 C0 LDY #$C037 C3/C025: 8C 52 43 STY $4352 C3/C028: A9 C3 LDA #$C3 C3/C02A: 8D 54 43 STA $4354 C3/C02D: A9 C3 LDA #$C3 C3/C02F: 8D 57 43 STA $4357 C3/C032: A9 20 LDA #$20 C3/C034: 04 43 TSB $43 C3/C036: 60 RTS C3/C037: .DB $2F, $04, $00 C3/C03A: .DB $0C, $04, $00 C3/C03D: .DB $0C, $08, $00 C3/C040: .DB $0C, $0C, $00 C3/C043: .DB $0C, $10, $00 C3/C046: .DB $0C, $14, $00 C3/C049: .DB $0C, $18, $00 C3/C04C: .DB $0C, $1C, $00 C3/C04F: .DB $0C, $20, $00 C3/C052: .DB $0C, $24, $00 C3/C055: .DB $0C, $28, $00 C3/C058: .DB $0C, $2C, $00 C3/C05B: .DB $0C, $30, $00 C3/C05E: .DB $0C, $34, $00 C3/C061: .DB $0C, $38, $00 C3/C064: .DB $0C, $3C, $00 C3/C067: .DB $00 C3/C068: 48 PHA C3/C069: A2 8B 9E LDX #$9E8B C3/C06C: 8E 81 21 STX $2181 C3/C06F: AD 12 42 LDA $4212 C3/C072: 29 40 AND #$40 C3/C074: F0 F9 BEQ $C06F C3/C076: 68 PLA C3/C077: 8D 1B 21 STA $211B C3/C07A: 9C 1B 21 STZ $211B C3/C07D: A9 0D LDA #$0D C3/C07F: 8D 1C 21 STA $211C C3/C082: 8D 1C 21 STA $211C C3/C085: AE 34 21 LDX $2134 C3/C088: A0 0D 00 LDY #$000D C3/C08B: BF 00 B3 D2 LDA $D2B300,X C3/C08F: 8D 80 21 STA $2180 C3/C092: E8 INX C3/C093: 88 DEY C3/C094: D0 F5 BNE $C08B C3/C096: 9C 80 21 STZ $2180 C3/C099: 60 RTS C3/C09A: 20 09 C1 JSR $C109 C3/C09D: 20 CC C1 JSR $C1CC C3/C0A0: 7B TDC C3/C0A1: AA TAX C3/C0A2: BF 09 9E 7E LDA $7E9E09,X C3/C0A6: 30 44 BMI $C0EC C3/C0A8: DA PHX C3/C0A9: 48 PHA C3/C0AA: A9 02 LDA #$02 C3/C0AC: A0 41 C1 LDY #$C141 C3/C0AF: 20 73 11 JSR $1173 ; create thread C3/C0B2: 9B TXY C3/C0B3: 7B TDC C3/C0B4: 68 PLA C3/C0B5: 9F C9 35 7E STA $7E35C9,X C3/C0B9: 0A ASL C3/C0BA: AA TAX C3/C0BB: A9 7E LDA #$7E C3/C0BD: 48 PHA C3/C0BE: AB PLB C3/C0BF: C2 20 REP #$20 C3/C0C1: BF 17 E9 D8 LDA $D8E917,X C3/C0C5: 99 C9 32 STA $32C9,Y C3/C0C8: E2 20 SEP #$20 C3/C0CA: FA PLX C3/C0CB: BF ED C0 C3 LDA $C3C0ED,X C3/C0CF: 99 CA 33 STA $33CA,Y C3/C0D2: BF FB C0 C3 LDA $C3C0FB,X C3/C0D6: 99 4A 34 STA $344A,Y C3/C0D9: 7B TDC C3/C0DA: 99 CB 33 STA $33CB,Y C3/C0DD: 99 4B 34 STA $344B,Y C3/C0E0: A9 D8 LDA #$D8 C3/C0E2: 99 CA 35 STA $35CA,Y C3/C0E5: A9 00 LDA #$00 C3/C0E7: 48 PHA C3/C0E8: AB PLB C3/C0E9: E8 INX C3/C0EA: 80 B6 BRA $C0A2 C3/C0EC: 60 RTS C3/C0ED: .DB $18, $38, $58, $78, $98, $B8, $D8, $18, $38, $58, $78, $98, $B8, $D8 C3/C0FB: .DB $9C, $9C, $9C, $9C, $9C, $9C, $9C, $B8, $B8, $B8, $B8, $B8, $B8, $B8 C3/C109: A2 09 9E LDX #$9E09 C3/C10C: 8E 81 21 STX $2181 C3/C10F: A6 00 LDX $00 C3/C111: DA PHX C3/C112: C2 20 REP #$20 C3/C114: 8A TXA C3/C115: 0A ASL C3/C116: AA TAX C3/C117: AD DC 1E LDA $1EDC C3/C11A: 3F 67 9C C3 AND $C39C67,X C3/C11E: F0 12 BEQ $C132 C3/C120: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/C124: A8 TAY C3/C125: 7B TDC C3/C126: E2 20 SEP #$20 C3/C128: B9 00 00 LDA $0000,Y C3/C12B: C9 0E CMP #$0E C3/C12D: B0 03 BCS $C132 C3/C12F: 8D 80 21 STA $2180 C3/C132: E2 20 SEP #$20 C3/C134: FA PLX C3/C135: E8 INX C3/C136: E0 10 00 CPX #$0010 C3/C139: D0 D6 BNE $C111 C3/C13B: A9 FF LDA #$FF C3/C13D: 8D 80 21 STA $2180 C3/C140: 60 RTS C3/C141: AA TAX C3/C142: 7C 45 C1 JMP ($C145,X) C3/C145: .DW $C149, $C16A C3/C149: A9 01 LDA #$01 C3/C14B: 04 47 TSB $47 C3/C14D: A6 2D LDX $2D C3/C14F: FE 49 36 INC $3649,X C3/C152: C2 20 REP #$20 C3/C154: BD C9 32 LDA $32C9,X ; sprite data pointer C3/C157: 9D CA 34 STA $34CA,X C3/C15A: E2 20 SEP #$20 C3/C15C: 20 06 12 JSR $1206 ; init animation thread C3/C15F: A5 47 LDA $47 C3/C161: 29 08 AND #$08 C3/C163: D0 03 BNE $C168 C3/C165: 20 F0 C1 JSR $C1F0 C3/C168: 80 00 BRA $C16A C3/C16A: A5 47 LDA $47 C3/C16C: 29 01 AND #$01 C3/C16E: F0 2A BEQ $C19A C3/C170: A6 2D LDX $2D C3/C172: A5 47 LDA $47 C3/C174: 29 08 AND #$08 C3/C176: D0 11 BNE $C189 C3/C178: 20 9C C1 JSR $C19C ; check if character can equip item C3/C17B: 90 0C BCC $C189 C3/C17D: A6 2D LDX $2D C3/C17F: C2 21 REP #$21 C3/C181: BD CA 34 LDA $34CA,X C3/C184: 69 09 00 ADC #$0009 ; add 9 to sprite data pointer to get the jumping animation C3/C187: 80 07 BRA $C190 C3/C189: A6 2D LDX $2D C3/C18B: C2 20 REP #$20 C3/C18D: BD CA 34 LDA $34CA,X C3/C190: 9D C9 32 STA $32C9,X C3/C193: E2 20 SEP #$20 C3/C195: 20 21 12 JSR $1221 ; update animation thread C3/C198: 38 SEC C3/C199: 60 RTS C3/C19A: 18 CLC C3/C19B: 60 RTS ; [ Check if Character Can Equip Item ] C3/C19C: 8B PHB C3/C19D: A9 00 LDA #$00 C3/C19F: 48 PHA C3/C1A0: AB PLB C3/C1A1: 7B TDC C3/C1A2: 8D D8 11 STA $11D8 C3/C1A5: BF C9 35 7E LDA $7E35C9,X C3/C1A9: 20 48 9C JSR $9C48 C3/C1AC: 7B TDC C3/C1AD: A5 4B LDA $4B C3/C1AF: AA TAX C3/C1B0: BF 89 9D 7E LDA $7E9D89,X C3/C1B4: 20 21 83 JSR $8321 ; calculate pointer to item data C3/C1B7: AE 34 21 LDX $2134 C3/C1BA: C2 20 REP #$20 C3/C1BC: BF 01 50 D8 LDA $D85001,X C3/C1C0: 25 E7 AND $E7 C3/C1C2: E2 20 SEP #$20 C3/C1C4: F0 03 BEQ $C1C9 C3/C1C6: AB PLB C3/C1C7: 38 SEC C3/C1C8: 60 RTS C3/C1C9: AB PLB C3/C1CA: 18 CLC C3/C1CB: 60 RTS C3/C1CC: A2 01 9E LDX #$9E01 C3/C1CF: 8E 81 21 STX $2181 C3/C1D2: A6 00 LDX $00 C3/C1D4: C2 20 REP #$20 C3/C1D6: BD 6D 00 LDA $006D,X C3/C1D9: E2 20 SEP #$20 C3/C1DB: F0 06 BEQ $C1E3 C3/C1DD: A8 TAY C3/C1DE: B9 00 00 LDA $0000,Y C3/C1E1: 80 02 BRA $C1E5 C3/C1E3: A9 FF LDA #$FF C3/C1E5: 8D 80 21 STA $2180 C3/C1E8: E8 INX C3/C1E9: E8 INX C3/C1EA: E0 08 00 CPX #$0008 C3/C1ED: D0 E5 BNE $C1D4 C3/C1EF: 60 RTS C3/C1F0: A4 00 LDY $00 C3/C1F2: A6 2D LDX $2D C3/C1F4: BD C9 35 LDA $35C9,X C3/C1F7: D9 01 9E CMP $9E01,Y C3/C1FA: D0 38 BNE $C234 C3/C1FC: DA PHX C3/C1FD: 5A PHY C3/C1FE: A9 00 LDA #$00 C3/C200: 48 PHA C3/C201: AB PLB C3/C202: A9 00 LDA #$00 C3/C204: A0 42 7B LDY #$7B42 ; status icon thread C3/C207: 20 73 11 JSR $1173 ; create thread C3/C20A: A9 7E LDA #$7E C3/C20C: 48 PHA C3/C20D: AB PLB C3/C20E: 7B TDC C3/C20F: 9D C9 35 STA $35C9,X C3/C212: BC 4A 37 LDY $374A,X C3/C215: C2 20 REP #$20 C3/C217: B9 CA 33 LDA $33CA,Y C3/C21A: 9D CA 33 STA $33CA,X C3/C21D: B9 4A 34 LDA $344A,Y C3/C220: 3A DEC C3/C221: 3A DEC C3/C222: 9D 4A 34 STA $344A,X C3/C225: A9 A9 EB LDA #$EBA9 ; D8/EBA9 (party indicator sprite data) C3/C228: 9D C9 32 STA $32C9,X C3/C22B: E2 20 SEP #$20 C3/C22D: A9 D8 LDA #$D8 C3/C22F: 9D CA 35 STA $35CA,X C3/C232: 7A PLY C3/C233: FA PLX C3/C234: C8 INY C3/C235: C0 04 00 CPY #$0004 C3/C238: D0 BA BNE $C1F4 C3/C23A: 60 RTS C3/C23B: 7B TDC C3/C23C: A8 TAY C3/C23D: 5A PHY C3/C23E: A9 04 LDA #$04 C3/C240: A0 53 C2 LDY #$C253 C3/C243: 20 73 11 JSR $1173 ; create thread C3/C246: 7A PLY C3/C247: 98 TYA C3/C248: 9F C9 35 7E STA $7E35C9,X C3/C24C: C8 INY C3/C24D: C0 0E 00 CPY #$000E C3/C250: D0 EB BNE $C23D C3/C252: 60 RTS ; [ Shop Character Icon Thread (E/+/-/=) ] C3/C253: AA TAX C3/C254: 7C 57 C2 JMP ($C257,X) C3/C257: .DW $C25B, $C28B C3/C25A: A6 2D LDX $2D C3/C25C: C2 20 REP #$20 C3/C25F: A9 CD EB LDA #$EBCD ; D8/EBCD ("E" sprite data) C3/C262: 9D C9 32 STA $32C9,X C3/C265: 9D CA 34 STA $34CA,X C3/C268: E2 20 SEP #$20 C3/C26A: FE 49 36 INC $3649,X C3/C26D: A9 D8 LDA #$D8 C3/C26F: 9D CA 35 STA $35CA,X C3/C272: 7B TDC C3/C273: BD C9 35 LDA $35C9,X C3/C276: 9B TXY C3/C277: AA TAX C3/C278: BF B1 EB D8 LDA $D8EBB1,X C3/C27C: 99 CA 33 STA $33CA,Y ; x position (character icon) C3/C27F: BF BF EB D8 LDA $D8EBBF,X C3/C283: 99 4A 34 STA $344A,Y ; y position C3/C286: A6 2D LDX $2D C3/C288: 20 06 12 JSR $1206 ; init animation thread C3/C28B: A5 47 LDA $47 C3/C28D: 29 01 AND #$01 C3/C28F: F0 4E BEQ $C2DF C3/C291: A6 2D LDX $2D C3/C293: 7B TDC C3/C294: BD C9 35 LDA $35C9,X C3/C297: 85 E0 STA $E0 C3/C299: 20 AE BC JSR $BCAE ; check item equip status C3/C29C: F0 3F BEQ $C2DD ; branch if this character can't equip this item C3/C29E: C9 01 CMP #$01 C3/C2A0: F0 14 BEQ $C2B6 C3/C2A2: C9 02 CMP #$02 C3/C2A4: F0 25 BEQ $C2CB C3/C2A6: C9 04 CMP #$04 C3/C2A8: F0 15 BEQ $C2BF ; down arrow C3/C2AA: A6 2D LDX $2D C3/C2AC: C2 21 REP #$21 C3/C2AE: BD CA 34 LDA $34CA,X ; D8/EBE5 C3/C2B1: 69 18 00 ADC #$0018 C3/C2B4: 80 1F BRA $C2D5 ; already equipped C3/C2B6: A6 2D LDX $2D C3/C2B8: C2 20 REP #$20 C3/C2BA: BD CA 34 LDA $34CA,X ; D8/EBCD C3/C2BD: 80 16 BRA $C2D5 ; equals sign C3/C2BF: A6 2D LDX $2D C3/C2C1: C2 21 REP #$21 C3/C2C3: BD CA 34 LDA $34CA,X ; D8/EBF1 C3/C2C6: 69 24 00 ADC #$0024 C3/C2C9: 80 0A BRA $C2D5 ; up arrow C3/C2CB: A6 2D LDX $2D C3/C2CD: C2 21 REP #$21 C3/C2CF: BD CA 34 LDA $34CA,X ; D8/EBD9 C3/C2D2: 69 0C 00 ADC #$000C C3/C2D5: 9D C9 32 STA $32C9,X C3/C2D8: E2 20 SEP #$20 C3/C2DA: 20 21 12 JSR $1221 ; update animation thread C3/C2DD: 38 SEC C3/C2DE: 60 RTS C3/C2DF: 18 CLC C3/C2E0: 60 RTS C3/C2E1: 20 F7 C2 JSR $C2F7 C3/C2E4: A0 42 C3 LDY #$C342 C3/C2E7: 20 F9 02 JSR $02F9 ; draw positioned text C3/C2EA: A0 4B C3 LDY #$C34B C3/C2ED: 20 F9 02 JSR $02F9 ; draw positioned text C3/C2F0: 80 00 BRA $C2F2 C3/C2F2: A9 20 LDA #$20 C3/C2F4: 85 29 STA $29 C3/C2F6: 60 RTS C3/C2F7: A9 2C LDA #$2C C3/C2F9: 85 29 STA $29 C3/C2FB: 60 RTS ; C3/C2FC: ( 2, 3) "Weapon" ; C3/C305: ( 3, 3) "Armor" ; C3/C30D: ( 3, 3) "Item" ; C3/C314: ( 2, 3) "Relics" ; C3/C31D: ( 2, 3) "Vendor" ; C3/C326: ( 3, 7) "BUY SELL EXIT" ; C3/C338: (28, 7) "GP" ; C3/C33D: (17,11) "GP" ; C3/C342: (21, 9) "Owned:" ; C3/C34B: (21,13) "Equipped:" ; C3/C357: ( 3,13) "Bat Pwr" ; C3/C361: ( 3,13) "Defense" ; C3/C36B: (14,13) "_" ; C3/C36F: (11, 3) "Hi! Can I help you?" ; C3/C385: (11, 3) "Help youself!" ; C3/C396: (11, 3) "How many?" ; C3/C3A2: (11, 3) "Whatcha got?" ; C3/C3B1: (11, 3) "How many?" ; C3/C3BD: (11, 3) "Bye! " ; C3/C3CE: (11, 3) "You need more GP!" ; C3/C3E2: (11, 3) "Too many! " ; C3/C3F5: (11, 3) "One's plenty!" C3/C2FC: .DW $790D \ .DB $96, $9E, $9A, $A9, $A8, $A7, $00 C3/C305: .DW $790F \ .DB $80, $AB, $A6, $A8, $AB, $00 C3/C30D: .DW $790F \ .DB $88, $AD, $9E, $A6, $00 C3/C314: .DW $790D \ .DB $91, $9E, $A5, $A2, $9C, $AC, $00 C3/C31D: .DW $790D \ .DB $95, $9E, $A7, $9D, $A8, $AB, $00 C3/C326: .DW $7A0F \ .DB $81, $94, $98, $FF, $FF, $92, $84, $8B, $8B, $FF, $FF, $84, $97, $88, $93, $00 C3/C338: .DW $7A41 \ .DB $86, $8F, $00 C3/C33D: .DW $7B2B \ .DB $86, $8F, $00 C3/C342: .DW $7AB3 \ .DB $8E, $B0, $A7, $9E, $9D, $C1, $00 C3/C34B: .DW $7BB3 \ .DB $84, $AA, $AE, $A2, $A9, $A9, $9E, $9D, $C1, $00 C3/C357: .DW $7B8F \ .DB $81, $9A, $AD, $FF, $8F, $B0, $AB, $00 C3/C361: .DW $7B8F \ .DB $83, $9E, $9F, $9E, $A7, $AC, $9E, $00 C3/C36B: .DW $7BA5 \ .DB $C7, $00 C3/C36F: .DW $179F \ .DB $87, $A2, $BE, $FF, $82, $9A, $A7, $FF, $88, $FF, $A1, $9E, $A5, $A9, $FF, $B2, $A8, $AE, $BF, $00 C3/C385: .DW $791F \ .DB $87, $9E, $A5, $A9, $FF, $B2, $A8, $AE, $AB, $AC, $9E, $A5, $9F, $BE, $00 C3/C396: .DW $791F \ .DB $87, $A8, $B0, $FF, $A6, $9A, $A7, $B2, $BF, $00 C3/C3A2: .DW $791F \ .DB $96, $A1, $9A, $AD, $9C, $A1, $9A, $FF, $A0, $A8, $AD, $BF, $00 C3/C3B1: .DW $791F \ .DB $87, $A8, $B0, $FF, $A6, $9A, $A7, $B2, $BF, $00 C3/C3BD: .DW $791F \ .DB $81, $B2, $9E, $BE, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00 C3/C3CE: .DW $791F \ .DB $98, $A8, $AE, $FF, $A7, $9E, $9E, $9D, $FF, $A6, $A8, $AB, $9E, $FF, $86, $8F, $BE, $00 C3/C3E2: .DW $791F \ .DB $93, $A8, $A8, $FF, $A6, $9A, $A7, $B2, $BE, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00 C3/C3F5: .DW $791F \ .DB $8E, $A7, $9E, $C3, $AC, $FF, $A9, $A5, $9E, $A7, $AD, $B2, $BE, $FF, $00 ; ----------------------------------------[ Cinematic: Ending ]----------------------------------------- ; cinematic state jump table end_tbl_end: C3/C406: .DW $C5BE, $C5D4, $C869, $C8A6, $C8AD, $C5E1, $C681, $C6DC C3/C416: .DW $C6DC, $C794, $C7D2, $C7E1, $C8D1, $C917, $C9CD, $C9CD C3/C426: .DW $C9CD, $CA8C, $CABE, $CABE, $CD17, $CDA0, $CDEA, $CDEA C3/C436: .DW $CEA6, $CEEC, $CEEC, $CEEC, $CEEC, $D018, $D018, $D018 C3/C446: .DW $D02F, $D096, $D122, $D122, $D122, $C794, $C794, $C794 C3/C456: .DW $E26E, $E2B2, $E2C1, $E2D0, $C794, $E6CE, $E6DF, $E6EE C3/C466: .DW $E6FA, $C794, $E2F8, $E319, $E328, $E337, $C794, $C794 C3/C476: .DW $E2E7, $C794, $C794, $C794, $E3E1, $E3FD, $E40C, $E41B C3/C486: .DW $E34B, $E364, $E373, $E382, $E3A2, $E3B2, $E432, $E459 C3/C496: .DW $E47C, $E48B, $E711, $E72A, $E736, $E749, $C794, $E3CD C3/C4A6: .DW $E4FA, $E513, $E522, $E534, $C794, $C794, $C794, $C794 C3/C4B6: .DW $C794, $C794, $E54B, $E564, $E573, $E585, $C794, $C794 C3/C4C6: .DW $C794, $C794, $C794, $C794, $E59C, $E5B7, $E5C6, $E5D5 C3/C4D6: .DW $E5F5, $E605, $E61E, $C794, $C794, $C794, $E635, $E651 C3/C4E6: .DW $E660, $E66F, $C794, $C794, $C794, $C794, $C794, $C794 C3/C4F6: .DW $E686, $E69C, $E6AB, $E6BA, $C794, $C794, $C794, $C794 C3/C506: .DW $C794, $C794, $E75D, $E794, $E7A3, $E7B2, $E7C1, $E7E5 C3/C516: .DW $E804, $E813, $E822 ; [ Ending Cinematic ] ; $0201: ending cinematic state ( -> $26) ending_main: C3/C51C: 08 PHP C3/C51D: C2 30 REP #$30 C3/C51F: 48 PHA C3/C520: DA PHX C3/C521: 5A PHY C3/C522: 8B PHB C3/C523: 0B PHD C3/C524: E2 20 SEP #$20 C3/C526: A9 00 LDA #$00 C3/C528: 48 PHA C3/C529: AB PLB C3/C52A: A2 00 00 LDX #$0000 C3/C52D: DA PHX C3/C52E: 2B PLD C3/C52F: A2 00 00 LDX #$0000 C3/C532: 86 00 STX $00 C3/C534: A9 7E LDA #$7E C3/C536: 8D 83 21 STA $2183 C3/C539: 20 C0 00 JSR $00C0 ; set up interrupt jump code C3/C53C: 20 FA 68 JSR $68FA ; init menu RAM C3/C53F: A0 2C 01 LDY #$012C C3/C542: 84 85 STY $85 ; ??? (something to do with character full name text) C3/C544: 64 B4 STZ $B4 ; use inverse credits palette C3/C546: 20 86 C5 JSR $C586 ; disable dma 1 & 2 C3/C549: 20 76 C5 JSR $C576 ; disable interrupts C3/C54C: 22 48 CD D4 JSL $D4CD48 ; init menu hardware registers C3/C550: 22 24 A4 C3 JSL $C3A424 ; init controller C3/C554: 20 14 11 JSR $1114 ; init threads C3/C557: 20 73 DD JSR $DD73 ; clear VRAM C3/C55A: 22 3B CF D4 JSL $D4CF3B ; save memory for mode 7 HDMA data C3/C55E: AD 01 02 LDA $0201 ; cinematic state C3/C561: 85 26 STA $26 C3/C563: 20 A5 C5 JSR $C5A5 ; cinematic loop C3/C566: 22 4B CF D4 JSL $D4CF4B ; restore memory for mode 7 HDMA data C3/C56A: 20 76 C5 JSR $C576 ; disable interrupts C3/C56D: C2 30 REP #$30 C3/C56F: 2B PLD C3/C570: AB PLB C3/C571: 7A PLY C3/C572: FA PLX C3/C573: 68 PLA C3/C574: 28 PLP C3/C575: 6B RTL ; [ Disable Interrupts ] blank_ON: C3/C576: A9 8F LDA #$8F ; screen off C3/C578: 8D 00 21 STA $2100 C3/C57B: 7B TDC C3/C57C: 8D 00 42 STA $4200 ; disable NMI and IRQ C3/C57F: 8D 0B 42 STA $420B ; disable DMA C3/C582: 8D 0C 42 STA $420C ; disable HDMA C3/C585: 60 RTS ; [ Disable DMA 1 & DMA 2 ] dma_off: C3/C586: 7B TDC C3/C587: A8 TAY C3/C588: 84 1B STY $1B C3/C58A: 84 1D STY $1D C3/C58C: 85 1F STA $1F C3/C58E: 84 16 STY $16 C3/C590: 85 18 STA $18 C3/C592: A0 01 00 LDY #$0001 C3/C595: 84 19 STY $19 C3/C597: 84 12 STY $12 C3/C599: A0 FF 7F LDY #$7FFF C3/C59C: 84 14 STY $14 C3/C59E: 60 RTS ; [ Enable BG1 Color Addition ] C3/C59F: A9 01 LDA #$01 C3/C5A1: 8D 31 21 STA $2131 C3/C5A4: 60 RTS ; [ Cinematic Loop ] ending_exec: C3/C5A5: 7B TDC C3/C5A6: A5 26 LDA $26 ; cinematic state C3/C5A8: C9 FF CMP #$FF C3/C5AA: F0 11 BEQ $C5BD ; terminate if $FF C3/C5AC: C2 20 REP #$20 C3/C5AE: 0A ASL C3/C5AF: AA TAX C3/C5B0: E2 20 SEP #$20 C3/C5B2: FC 06 C4 JSR ($C406,X) ; state code C3/C5B5: 20 B0 11 JSR $11B0 ; execute threads C3/C5B8: 20 68 13 JSR $1368 ; wait for vblank (debug: change to $134D to allow user control of the camera in 3d scenes!) C3/C5BB: 80 E8 BRA $C5A5 C3/C5BD: 60 RTS ; [ Cinematic State $00: Fade Out ] C3/C5BE: A4 20 LDY $20 ; return if wait counter is not clear C3/C5C0: D0 11 BNE $C5D3 C3/C5C2: A9 01 LDA #$01 ; set cinematic state to $01 C3/C5C4: 85 26 STA $26 C3/C5C6: A0 0F 00 LDY #$000F ; set wait counter to 15 frames C3/C5C9: 84 20 STY $20 C3/C5CB: A9 00 LDA #$00 ; fade out thread C3/C5CD: A0 FD D1 LDY #$D1FD C3/C5D0: 20 73 11 JSR $1173 ; create thread C3/C5D3: 60 RTS ; [ Cinematic State $01: Wait For Fade ] C3/C5D4: A4 20 LDY $20 ; return if wait counter is not clear C3/C5D6: D0 03 BNE $C5DB C3/C5D8: 4C 69 E2 JMP $E269 ; terminate cinematic C3/C5DB: 60 RTS ; [ Use Normal Credits Palette ] C3/C5DC: A9 01 LDA #$01 C3/C5DE: 85 B4 STA $B4 C3/C5E0: 60 RTS ; [ Cinematic State $05: Clouds 3 (mode 7 airship above clouds) ] C3/C5E1: 20 DC C5 JSR $C5DC ; use normal credits palette C3/C5E4: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/C5E8: 20 0C D4 JSR $D40C ; load graphics (airship above clouds) C3/C5EB: 20 E6 D3 JSR $D3E6 ; init mode 7 scrolling data C3/C5EE: 22 FC CB D4 JSL $D4CBFC ; init mode 7 hdma C3/C5F2: A0 10 00 LDY #$0010 C3/C5F5: 84 8E STY $8E C3/C5F7: C2 20 REP #$20 C3/C5F9: A9 F1 FF LDA #$FFF1 C3/C5FC: 8F 8D B6 7E STA $7EB68D C3/C600: A9 2E 00 LDA #$002E C3/C603: 8F 8F B6 7E STA $7EB68F C3/C607: A9 71 00 LDA #$0071 C3/C60A: 8F 95 B6 7E STA $7EB695 C3/C60E: A9 8D 00 LDA #$008D C3/C611: 8F 97 B6 7E STA $7EB697 C3/C615: E2 20 SEP #$20 C3/C617: A0 5E 00 LDY #$005E C3/C61A: 84 C7 STY $C7 C3/C61C: A0 00 2F LDY #$2F00 C3/C61F: 84 C5 STY $C5 C3/C621: A0 00 01 LDY #$0100 C3/C624: 84 B7 STY $B7 C3/C626: A0 11 03 LDY #$0311 C3/C629: 84 B9 STY $B9 C3/C62B: A0 80 00 LDY #$0080 C3/C62E: 84 35 STY $35 C3/C630: A0 91 02 LDY #$0291 C3/C633: 84 37 STY $37 C3/C635: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/C638: A4 00 LDY $00 C3/C63A: 84 CF STY $CF ; clear frame counter C3/C63C: 20 6D D9 JSR $D96D ; draw credits text (producer) C3/C63F: A9 02 LDA #$02 C3/C641: A0 B9 D7 LDY #$D7B9 C3/C644: 20 73 11 JSR $1173 ; create thread C3/C647: A9 02 LDA #$02 C3/C649: A0 81 C6 LDY #$C681 C3/C64C: 20 73 11 JSR $1173 ; create thread C3/C64F: A9 00 LDA #$00 C3/C651: A0 F2 D0 LDY #$D0F2 C3/C654: 20 73 11 JSR $1173 ; create thread C3/C657: 20 5C D1 JSR $D15C ; clear credits text palettes C3/C65A: 20 73 D1 JSR $D173 ; load credits bg palettes C3/C65D: 20 18 D0 JSR $D018 ; C3/C660: A9 03 LDA #$03 ; cinematic state 3 (wait) C3/C662: 85 26 STA $26 C3/C664: A0 1C 02 LDY #$021C ; set timer to 9.0s C3/C667: 84 20 STY $20 C3/C669: 4C 6C C6 JMP $C66C ; create fade in thread ; [ Create Fade In Thread ] C3/C66C: A9 00 LDA #$00 C3/C66E: A0 CC D1 LDY #$D1CC ; fade in thread C3/C671: 20 73 11 JSR $1173 ; create thread C3/C674: 60 RTS ; [ Wait For VBlank ] C3/C675: A9 01 LDA #$01 C3/C677: 85 44 STA $44 C3/C679: 20 68 13 JSR $1368 ; wait for vblank C3/C67C: A9 0F LDA #$0F C3/C67E: 85 44 STA $44 C3/C680: 60 RTS ; [ ??? Thread ] C3/C681: AA TAX C3/C682: 7C 85 C6 JMP ($C685,X) C3/C685: .DW $C68B, $C69A, $C6BA C3/C68B: A6 2D LDX $2D C3/C68D: FE 49 36 INC $3649,X C3/C690: C2 20 REP #$20 C3/C692: A9 4E 02 LDA #$024E C3/C695: 9D 49 33 STA $3349,X C3/C698: E2 20 SEP #$20 C3/C69A: A6 2D LDX $2D C3/C69C: A5 23 LDA $23 C3/C69E: 29 01 AND #$01 C3/C6A0: D0 04 BNE $C6A6 C3/C6A2: C2 20 REP #$20 C3/C6A4: E6 8E INC $8E C3/C6A6: C2 20 REP #$20 C3/C6A8: A5 8E LDA $8E C3/C6AA: 8D 00 06 STA $0600 C3/C6AD: 9C C2 07 STZ $07C2 C3/C6B0: 9C 84 09 STZ $0984 C3/C6B3: 20 BF C6 JSR $C6BF C3/C6B6: E2 20 SEP #$20 C3/C6B8: 38 SEC C3/C6B9: 60 RTS C3/C6BA: 20 BF C6 JSR $C6BF C3/C6BD: 38 SEC C3/C6BE: 60 RTS C3/C6BF: C2 20 REP #$20 C3/C6C1: C6 35 DEC $35 C3/C6C3: C6 B7 DEC $B7 C3/C6C5: A5 35 LDA $35 C3/C6C7: 8D 91 B6 STA $B691 C3/C6CA: A5 37 LDA $37 C3/C6CC: 8D 93 B6 STA $B693 C3/C6CF: A5 B7 LDA $B7 C3/C6D1: 8D 99 B6 STA $B699 C3/C6D4: A5 B9 LDA $B9 C3/C6D6: 8D 9B B6 STA $B69B C3/C6D9: E2 20 SEP #$20 C3/C6DB: 60 RTS ; [ Cinematic State $07, $08: Fade Out Credits Palette ] C3/C6DC: A9 C3 LDA #$C3 ; source = $C310F4 (black palette) C3/C6DE: 85 ED STA $ED C3/C6E0: A9 04 LDA #$04 ; speed = 4 frames per update C3/C6E2: A0 C9 31 LDY #$31C9 ; destination = $7E31C9 (sprite palette 4) C3/C6E5: 84 E7 STY $E7 C3/C6E7: A2 F4 10 LDX #$10F4 C3/C6EA: 86 EB STX $EB C3/C6EC: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/C6EF: A9 C3 LDA #$C3 ; source = $C310F4 (black palette) C3/C6F1: 85 ED STA $ED C3/C6F3: A9 04 LDA #$04 ; speed = 4 frames per update C3/C6F5: A0 E9 31 LDY #$31E9 ; destination = $7E31E9 (sprite palette 5) C3/C6F8: 84 E7 STY $E7 C3/C6FA: A2 F4 10 LDX #$10F4 C3/C6FD: 86 EB STX $EB C3/C6FF: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/C702: 60 RTS ; [ Fade In Inverse Credits Palette ] C3/C703: A9 C2 LDA #$C2 ; source = $C29754 (inverse credits palette 1) C3/C705: 85 ED STA $ED C3/C707: A9 04 LDA #$04 ; speed = 4 frames per update C3/C709: A0 C9 31 LDY #$31C9 ; destination = $7E31C9 (sprite palette 4) C3/C70C: 84 E7 STY $E7 C3/C70E: A2 54 97 LDX #$9754 C3/C711: 86 EB STX $EB C3/C713: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/C716: A9 C2 LDA #$C2 ; source = $C2974C (inverse credits palette 2) C3/C718: 85 ED STA $ED C3/C71A: A9 04 LDA #$04 ; speed = 4 frames per update C3/C71C: A0 E9 31 LDY #$31E9 ; destination = $7E31E9 (sprite palette 5) C3/C71F: 84 E7 STY $E7 C3/C721: A2 4C 97 LDX #$974C C3/C724: 86 EB STX $EB C3/C726: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/C729: 60 RTS ; [ Fade In Normal Credits Palette ] C3/C72A: A9 C2 LDA #$C2 ; source = $C29744 (normal credits palette 1) C3/C72C: 85 ED STA $ED C3/C72E: A9 04 LDA #$04 ; speed = 4 frames per update C3/C730: A0 C9 31 LDY #$31C9 ; destination = $7E31C9 (sprite palette 4) C3/C733: 84 E7 STY $E7 C3/C735: A2 44 97 LDX #$9744 C3/C738: 86 EB STX $EB C3/C73A: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/C73D: A9 C2 LDA #$C2 ; source = $C2973C (normal credits palette 2) C3/C73F: 85 ED STA $ED C3/C741: A9 04 LDA #$04 ; speed = 4 frames per update C3/C743: A0 E9 31 LDY #$31E9 ; destination = $7E31E9 (sprite palette 5) C3/C746: 84 E7 STY $E7 C3/C748: A2 3C 97 LDX #$973C C3/C74B: 86 EB STX $EB C3/C74D: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/C750: 60 RTS ; [ Load Credits Sprite Palettes ] C3/C751: A9 C2 LDA #$C2 C3/C753: A0 49 31 LDY #$3149 ; sprite palette 0 C3/C756: A2 F4 97 LDX #$97F4 C3/C759: 20 8E 0F JSR $0F8E ; load color palette C3/C75C: A9 C2 LDA #$C2 C3/C75E: A0 69 31 LDY #$3169 ; sprite palette 1 C3/C761: A2 94 97 LDX #$9794 C3/C764: 20 8E 0F JSR $0F8E ; load color palette C3/C767: A9 C2 LDA #$C2 C3/C769: A0 89 31 LDY #$3189 ; sprite palette 2 C3/C76C: A2 B4 97 LDX #$97B4 C3/C76F: 20 8E 0F JSR $0F8E ; load color palette C3/C772: A9 C2 LDA #$C2 C3/C774: A0 A9 31 LDY #$31A9 ; sprite palette 3 C3/C777: A2 D4 97 LDX #$97D4 C3/C77A: 20 8E 0F JSR $0F8E ; load color palette C3/C77D: A9 C2 LDA #$C2 C3/C77F: A0 09 32 LDY #$3209 ; sprite palette 6 C3/C782: A2 34 98 LDX #$9834 C3/C785: 20 8E 0F JSR $0F8E ; load color palette C3/C788: A9 C2 LDA #$C2 C3/C78A: A0 29 32 LDY #$3229 ; sprite palette 7 C3/C78D: A2 14 98 LDX #$9814 C3/C790: 20 8E 0F JSR $0F8E ; load color palette C3/C793: 60 RTS ; [ Cinematic State $09: Tiny Airship 1 ] C3/C794: 20 DC C5 JSR $C5DC ; use normal credits palette C3/C797: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/C79B: 20 22 D5 JSR $D522 C3/C79E: 20 E6 D3 JSR $D3E6 ; init mode 7 scrolling data C3/C7A1: 22 8F CB D4 JSL $D4CB8F C3/C7A5: 20 51 C7 JSR $C751 ; load credits sprite palettes C3/C7A8: 20 5C D1 JSR $D15C ; clear credits text palettes C3/C7AB: 20 73 D1 JSR $D173 ; load credits bg palettes C3/C7AE: A0 70 8A LDY #$8A70 ; C2/8A70 (mode 7 scrolling data) C3/C7B1: A9 C2 LDA #$C2 C3/C7B3: 20 25 D2 JSR $D225 ; load mode 7 scrolling data C3/C7B6: 20 83 D9 JSR $D983 ; draw credits text (tiny airship) C3/C7B9: A4 00 LDY $00 C3/C7BB: 84 CF STY $CF C3/C7BD: A9 02 LDA #$02 C3/C7BF: A0 CB D7 LDY #$D7CB ; credits text threads (tiny airship) C3/C7C2: 20 73 11 JSR $1173 ; create thread C3/C7C5: 20 A0 D2 JSR $D2A0 ; create camera control thread C3/C7C8: E6 26 INC $26 C3/C7CA: A0 C0 03 LDY #$03C0 ; set timer to 16.0s C3/C7CD: 84 20 STY $20 C3/C7CF: 4C 6C C6 JMP $C66C ; create fade in thread ; [ Cinematic State $0A: Tiny Airship 2 ] C3/C7D2: A4 20 LDY $20 C3/C7D4: D0 0A BNE $C7E0 C3/C7D6: E6 26 INC $26 C3/C7D8: A0 70 08 LDY #$0870 ; set timer to 36s C3/C7DB: 84 20 STY $20 C3/C7DD: 20 02 C8 JSR $C802 ; create tiny airship and shadow C3/C7E0: 60 RTS ; [ Cinematic State $0B: Tiny Airship 3 ] C3/C7E1: A4 20 LDY $20 C3/C7E3: D0 1C BNE $C801 C3/C7E5: A9 03 LDA #$03 C3/C7E7: 85 26 STA $26 C3/C7E9: A0 78 00 LDY #$0078 ; set timer to 2.0s C3/C7EC: 84 20 STY $20 C3/C7EE: A9 C3 LDA #$C3 C3/C7F0: 85 ED STA $ED C3/C7F2: A9 02 LDA #$02 C3/C7F4: A0 A9 30 LDY #$30A9 C3/C7F7: 84 E7 STY $E7 C3/C7F9: A2 D4 10 LDX #$10D4 ; C3/10D4 (white palette) C3/C7FC: 86 EB STX $EB C3/C7FE: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/C801: 60 RTS ; [ Create Tiny Airship and Shadow ] C3/C802: 20 46 C8 JSR $C846 ; create generic thread w/ counter C3/C805: C2 20 REP #$20 C3/C807: A9 DC 8C LDA #$8CDC ; source = $C28CDC (tiny airship) C3/C80A: 20 4F C8 JSR $C84F ; init tiny airship thread C3/C80D: E2 20 SEP #$20 C3/C80F: A9 C2 LDA #$C2 C3/C811: 9F CA 35 7E STA $7E35CA,X C3/C815: A9 F8 LDA #$F8 C3/C817: 9F CA 33 7E STA $7E33CA,X ; x position C3/C81B: A9 A0 LDA #$A0 C3/C81D: 9F 4A 34 7E STA $7E344A,X ; y position C3/C821: A9 03 LDA #$03 C3/C823: A0 84 DE LDY #$DE84 ; generic animation thread w/ counter C3/C826: 20 73 11 JSR $1173 ; create thread C3/C829: C2 20 REP #$20 C3/C82B: A9 F0 8C LDA #$8CF0 ; C2/8CF0 (tiny airship shadow) C3/C82E: 20 4F C8 JSR $C84F ; init tiny airship thread C3/C831: E2 20 SEP #$20 C3/C833: A9 C2 LDA #$C2 C3/C835: 9F CA 35 7E STA $7E35CA,X C3/C839: A9 F8 LDA #$F8 C3/C83B: 9F CA 33 7E STA $7E33CA,X ; x position C3/C83F: A9 B0 LDA #$B0 C3/C841: 9F 4A 34 7E STA $7E344A,X ; y position C3/C845: 60 RTS ; [ Create Generic Thread w/ Counter ] C3/C846: A9 01 LDA #$01 C3/C848: A0 84 DE LDY #$DE84 ; generic animation thread w/ counter C3/C84B: 20 73 11 JSR $1173 ; create thread C3/C84E: 60 RTS ; [ Init Tiny Airship Thread ] C3/C84F: 9F C9 32 7E STA $7E32C9,X ; pointer to sprite data C3/C853: A9 C0 FF LDA #$FFC0 C3/C856: 9F C9 34 7E STA $7E34C9,X ; horizontal speed C3/C85A: A9 E0 FF LDA #$FFE0 C3/C85D: 9F 49 35 7E STA $7E3549,X ; vertical speed C3/C861: A9 00 04 LDA #$0400 C3/C864: 9F 49 33 7E STA $7E3349,X ; movement counter C3/C868: 60 RTS ; [ Cinematic State $02: Clouds 1 (slow scroll) ] C3/C869: 20 7E C8 JSR $C87E ; clouds init C3/C86C: A0 F0 00 LDY #$00F0 C3/C86F: 84 20 STY $20 C3/C871: A0 3C 8B LDY #$8B3C C3/C874: A9 C2 LDA #$C2 C3/C876: 20 25 D2 JSR $D225 ; load mode 7 scrolling data C3/C879: E6 26 INC $26 C3/C87B: 4C 6C C6 JMP $C66C ; create fade in thread ; [ Clouds Init ] C3/C87E: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/C882: 20 22 D5 JSR $D522 C3/C885: 20 E6 D3 JSR $D3E6 ; init mode 7 scrolling data C3/C888: 22 8F CB D4 JSL $D4CB8F C3/C88C: 20 51 C7 JSR $C751 ; load credits sprite palettes C3/C88F: 20 5C D1 JSR $D15C ; clear credits text palettes C3/C892: A0 00 02 LDY #$0200 C3/C895: 84 C7 STY $C7 C3/C897: A0 00 F0 LDY #$F000 C3/C89A: 84 C5 STY $C5 C3/C89C: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/C89F: 20 73 D1 JSR $D173 ; load credits bg palettes C3/C8A2: 20 A0 D2 JSR $D2A0 ; create camera control thread C3/C8A5: 60 RTS ; [ Cinematic State $03: Wait ] C3/C8A6: A4 20 LDY $20 C3/C8A8: D0 02 BNE $C8AC C3/C8AA: 64 26 STZ $26 ; cinematic state 0 (begin fade out) C3/C8AC: 60 RTS ; [ Cinematic State $04: Clouds 2 (spiraling down) ] C3/C8AD: 20 7E C8 JSR $C87E ; clouds init C3/C8B0: A0 00 80 LDY #$8000 C3/C8B3: 84 C7 STY $C7 C3/C8B5: A0 00 80 LDY #$8000 C3/C8B8: 84 C5 STY $C5 C3/C8BA: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/C8BD: A0 78 00 LDY #$0078 C3/C8C0: 84 20 STY $20 C3/C8C2: A0 42 8B LDY #$8B42 C3/C8C5: A9 C2 LDA #$C2 C3/C8C7: 20 25 D2 JSR $D225 ; load mode 7 scrolling data C3/C8CA: A9 03 LDA #$03 C3/C8CC: 85 26 STA $26 C3/C8CE: 4C 6C C6 JMP $C66C ; create fade in thread ; [ Cinematic State $0C: Sea with Boat 1 ] C3/C8D1: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/C8D5: 20 9F C5 JSR $C59F C3/C8D8: 20 AA D5 JSR $D5AA C3/C8DB: 20 E6 D3 JSR $D3E6 ; init mode 7 scrolling data C3/C8DE: 22 8F CB D4 JSL $D4CB8F C3/C8E2: A0 00 10 LDY #$1000 C3/C8E5: 84 C5 STY $C5 C3/C8E7: 20 5C D1 JSR $D15C ; clear credits text palettes C3/C8EA: 20 73 D1 JSR $D173 ; load credits bg palettes C3/C8ED: 20 51 C7 JSR $C751 ; load credits sprite palettes C3/C8F0: A0 D9 8A LDY #$8AD9 C3/C8F3: A9 C2 LDA #$C2 C3/C8F5: 20 25 D2 JSR $D225 ; load mode 7 scrolling data C3/C8F8: 20 C7 CA JSR $CAC7 ; create oscillating birds (boat) C3/C8FB: 20 99 D9 JSR $D999 ; draw credits text (boat) C3/C8FE: A4 00 LDY $00 C3/C900: 84 CF STY $CF C3/C902: A9 02 LDA #$02 C3/C904: A0 19 D8 LDY #$D819 ; credits text thread (boat) C3/C907: 20 73 11 JSR $1173 ; create thread C3/C90A: 20 A0 D2 JSR $D2A0 ; create camera control thread C3/C90D: A0 38 04 LDY #$0438 ; wait 18.0s C3/C910: 84 20 STY $20 C3/C912: E6 26 INC $26 C3/C914: 4C 6C C6 JMP $C66C ; create fade in thread ; [ Cinematic State $0D: Sea with Boat 2 ] C3/C917: A4 20 LDY $20 C3/C919: D0 0A BNE $C925 C3/C91B: 20 4E C9 JSR $C94E ; create boat threads C3/C91E: 64 26 STZ $26 C3/C920: A0 D0 02 LDY #$02D0 ; wait 12.0s C3/C923: 84 20 STY $20 C3/C925: 60 RTS ; [ Create Boat Thread (right half only) ] ; unused C3/C926: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/C929: C2 20 REP #$20 C3/C92B: A9 FD F7 LDA #$F7FD ; CF/F7FD (boat, right half) C3/C92E: 9F C9 32 7E STA $7E32C9,X C3/C932: A9 C0 FF LDA #$FFC0 C3/C935: 9F C9 34 7E STA $7E34C9,X C3/C939: E2 20 SEP #$20 C3/C93B: A9 CF LDA #$CF C3/C93D: 9F CA 35 7E STA $7E35CA,X C3/C941: A9 F8 LDA #$F8 C3/C943: 9F CA 33 7E STA $7E33CA,X C3/C947: A9 70 LDA #$70 C3/C949: 9F 4A 34 7E STA $7E344A,X C3/C94D: 60 RTS ; [ Create Boat Threads ] C3/C94E: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/C951: C2 20 REP #$20 C3/C953: A9 09 F8 LDA #$F809 ; CF/F809 (boat, left half) C3/C956: 9F C9 32 7E STA $7E32C9,X C3/C95A: A9 C0 FF LDA #$FFC0 C3/C95D: 9F C9 34 7E STA $7E34C9,X C3/C961: E2 20 SEP #$20 C3/C963: A9 CF LDA #$CF C3/C965: 9F CA 35 7E STA $7E35CA,X C3/C969: A9 F8 LDA #$F8 C3/C96B: 9F CA 33 7E STA $7E33CA,X C3/C96F: A9 50 LDA #$50 C3/C971: 9F 4A 34 7E STA $7E344A,X C3/C975: A9 01 LDA #$01 C3/C977: A0 A2 C9 LDY #$C9A2 ; boat thread (right half) C3/C97A: 20 73 11 JSR $1173 ; create thread C3/C97D: C2 20 REP #$20 C3/C97F: A9 FD F7 LDA #$F7FD ; CF/F7FD (boat, right half) C3/C982: 9F C9 32 7E STA $7E32C9,X C3/C986: A9 C0 FF LDA #$FFC0 C3/C989: 9F C9 34 7E STA $7E34C9,X C3/C98D: E2 20 SEP #$20 C3/C98F: A9 CF LDA #$CF C3/C991: 9F CA 35 7E STA $7E35CA,X C3/C995: A9 F8 LDA #$F8 C3/C997: 9F CA 33 7E STA $7E33CA,X C3/C99B: A9 50 LDA #$50 C3/C99D: 9F 4A 34 7E STA $7E344A,X C3/C9A1: 60 RTS ; [ Boat Thread (right half) ] C3/C9A2: AA TAX C3/C9A3: 7C A6 C9 JMP ($C9A6,X) C3/C9A6: .DW $C9AA, $C9BC C3/C9AA: A6 2D LDX $2D C3/C9AC: FE 49 36 INC $3649,X C3/C9AE: C2 20 REP #$20 C3/C9B0: A9 40 00 LDA #$0040 C3/C9B3: 9D 49 33 STA $3349,X ; set thread counter to 64 C3/C9B7: E2 20 SEP #$20 C3/C9B9: 20 06 12 JSR $1206 ; init animation thread C3/C9BC: A6 2D LDX $2D C3/C9BE: BC 49 33 LDY $3349,X ; start moving left after 64 frames (i think...) C3/C9C1: D0 05 BNE $C9C8 C3/C9C3: 20 C0 DE JSR $DEC0 ; update animation thread position C3/C9C6: 38 SEC C3/C9C7: 60 RTS C3/C9C8: 20 E5 CF JSR $CFE5 ; decrement thread counter C3/C9CB: 38 SEC C3/C9CC: 60 RTS ; [ Cinematic State $10: Sea with Airship 1 ] C3/C9CD: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/C9D1: 20 9F C5 JSR $C59F C3/C9D4: 20 DA D5 JSR $D5DA C3/C9D7: 20 71 CA JSR $CA71 C3/C9DA: 20 8C D3 JSR $D38C C3/C9DD: 20 6F D3 JSR $D36F C3/C9E0: 20 51 C7 JSR $C751 ; load credits sprite palettes C3/C9E3: A0 28 00 LDY #$0028 C3/C9E6: 84 3B STY $3B C3/C9E8: A0 6D FF LDY #$FF6D C3/C9EB: 84 C3 STY $C3 C3/C9ED: A0 4C 03 LDY #$034C C3/C9F0: 84 C7 STY $C7 C3/C9F2: A0 00 FD LDY #$FD00 C3/C9F5: 84 C5 STY $C5 C3/C9F7: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/C9FA: 20 FD CA JSR $CAFD ; create oscillating birds (sea with airship) C3/C9FD: A9 02 LDA #$02 C3/C9FF: A0 C6 CB LDY #$CBC6 ; airship position thread (going left) C3/CA02: 20 73 11 JSR $1173 ; create thread C3/CA05: C2 20 REP #$20 C3/CA07: A9 B1 8B LDA #$8BB1 ; C2/8BB1 (airship going left sprite data) C3/CA0A: 9F C9 32 7E STA $7E32C9,X C3/CA0E: E2 20 SEP #$20 C3/CA10: A9 C2 LDA #$C2 C3/CA12: 9F CA 35 7E STA $7E35CA,X C3/CA16: A9 78 LDA #$78 C3/CA18: 9F CA 33 7E STA $7E33CA,X C3/CA1C: A9 58 LDA #$58 C3/CA1E: 9F 4A 34 7E STA $7E344A,X C3/CA22: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/CA25: C2 20 REP #$20 C3/CA27: A9 EC 8B LDA #$8BEC ; C2/8BEC (water splash sprite data) C3/CA2A: 9F C9 32 7E STA $7E32C9,X C3/CA2E: E2 20 SEP #$20 C3/CA30: A9 C2 LDA #$C2 C3/CA32: 9F CA 35 7E STA $7E35CA,X C3/CA36: A9 80 LDA #$80 C3/CA38: 9F CA 33 7E STA $7E33CA,X C3/CA3C: A9 80 LDA #$80 C3/CA3E: 9F 4A 34 7E STA $7E344A,X C3/CA42: 20 73 D1 JSR $D173 ; load credits bg palettes C3/CA45: 20 AF D9 JSR $D9AF ; draw credits text (airship/sea) C3/CA48: A4 00 LDY $00 C3/CA4A: 84 CF STY $CF C3/CA4C: A9 02 LDA #$02 C3/CA4E: A0 49 D8 LDY #$D849 ; credits text thread (airship/sea) C3/CA51: 20 73 11 JSR $1173 ; create thread C3/CA54: A0 36 8B LDY #$8B36 C3/CA57: A9 C2 LDA #$C2 C3/CA59: 20 25 D2 JSR $D225 ; load mode 7 scrolling data C3/CA5C: A9 03 LDA #$03 C3/CA5E: A0 A2 CA LDY #$CAA2 ; scroll bg2 right C3/CA61: 20 73 11 JSR $1173 ; create thread C3/CA64: 20 A0 D2 JSR $D2A0 ; create camera control thread C3/CA67: E6 26 INC $26 C3/CA69: A0 B0 04 LDY #$04B0 C3/CA6C: 84 20 STY $20 C3/CA6E: 4C 6C C6 JMP $C66C ; create fade in thread C3/CA71: 20 E6 D3 JSR $D3E6 ; init mode 7 scrolling data C3/CA74: 20 D3 D4 JSR $D4D3 C3/CA77: 20 4B D3 JSR $D34B ; init hdma (big airship) C3/CA7A: 20 5C D1 JSR $D15C ; clear credits text palettes C3/CA7D: 4C 80 CA JMP $CA80 C3/CA80: A9 C2 LDA #$C2 C3/CA82: A0 49 30 LDY #$3049 C3/CA85: A2 3C 95 LDX #$953C C3/CA88: 20 8E 0F JSR $0F8E ; load color palette C3/CA8B: 60 RTS ; [ Cinematic State $11: Sea with Airship 2 ] C3/CA8C: A4 20 LDY $20 C3/CA8E: D0 11 BNE $CAA1 C3/CA90: A9 03 LDA #$03 C3/CA92: 85 26 STA $26 C3/CA94: A0 08 07 LDY #$0708 C3/CA97: 84 20 STY $20 C3/CA99: A9 01 LDA #$01 C3/CA9B: A0 79 CC LDY #$CC79 C3/CA9E: 20 73 11 JSR $1173 ; create thread C3/CAA1: 60 RTS ; [ Scroll BG2 Right Thread ] C3/CAA2: A5 23 LDA $23 C3/CAA4: 29 01 AND #$01 C3/CAA6: D0 06 BNE $CAAE C3/CAA8: C2 20 REP #$20 C3/CAAA: C6 39 DEC $39 C3/CAAC: E2 20 SEP #$20 C3/CAAE: 38 SEC C3/CAAF: 60 RTS ; [ Scroll BG2 Left Thread ] C3/CAB0: A5 23 LDA $23 C3/CAB2: 29 01 AND #$01 C3/CAB4: D0 06 BNE $CABC C3/CAB6: C2 20 REP #$20 C3/CAB8: E6 39 INC $39 C3/CABA: E2 20 SEP #$20 C3/CABC: 38 SEC C3/CABD: 60 RTS ; [ Cinematic State $12, $13: ] ; unused C3/CABE: A4 20 LDY $20 C3/CAC0: D0 04 BNE $CAC6 C3/CAC2: A9 FF LDA #$FF C3/CAC4: 85 26 STA $26 C3/CAC6: 60 RTS ; [ Create Oscillating Birds (boat) ] C3/CAC7: A6 00 LDX $00 C3/CAC9: DA PHX C3/CACA: 20 5F CB JSR $CB5F ; create oscillating bird thread C3/CACD: 9B TXY C3/CACE: FA PLX C3/CACF: 8B PHB C3/CAD0: A9 7E LDA #$7E C3/CAD2: 48 PHA C3/CAD3: AB PLB C3/CAD4: C2 20 REP #$20 C3/CAD6: BF B5 F7 CF LDA $CFF7B5,X ; sprite data pointer (+$CF0000) C3/CADA: E8 INX C3/CADB: E8 INX C3/CADC: 99 C9 32 STA $32C9,Y C3/CADF: E2 20 SEP #$20 C3/CAE1: BF B5 F7 CF LDA $CFF7B5,X ; x position C3/CAE5: E8 INX C3/CAE6: 99 CA 34 STA $34CA,Y C3/CAE9: BF B5 F7 CF LDA $CFF7B5,X ; y position C3/CAED: E8 INX C3/CAEE: 99 4A 34 STA $344A,Y C3/CAF1: A9 01 LDA #$01 C3/CAF3: 99 4A 36 STA $364A,Y ; sprite doesn't scroll with bg C3/CAF6: AB PLB C3/CAF7: E0 18 00 CPX #$0018 ; repeat 6 times C3/CAFA: D0 CD BNE $CAC9 C3/CAFC: 60 RTS ; [ Create Oscillating Birds (sea with airship) ] C3/CAFD: A6 00 LDX $00 C3/CAFF: DA PHX C3/CB00: 20 5F CB JSR $CB5F ; create oscillating bird thread C3/CB03: 9B TXY C3/CB04: FA PLX C3/CB05: 8B PHB C3/CB06: A9 7E LDA #$7E C3/CB08: 48 PHA C3/CB09: AB PLB C3/CB0A: C2 20 REP #$20 C3/CB0C: BF CD F7 CF LDA $CFF7CD,X C3/CB10: E8 INX C3/CB11: E8 INX C3/CB12: 99 C9 32 STA $32C9,Y C3/CB15: E2 20 SEP #$20 C3/CB17: BF CD F7 CF LDA $CFF7CD,X C3/CB1B: E8 INX C3/CB1C: 99 CA 34 STA $34CA,Y C3/CB1F: BF CD F7 CF LDA $CFF7CD,X C3/CB23: E8 INX C3/CB24: 99 4A 34 STA $344A,Y C3/CB27: AB PLB C3/CB28: E0 18 00 CPX #$0018 C3/CB2B: D0 D2 BNE $CAFF C3/CB2D: 60 RTS ; [ Create Oscillating Birds (land with airship) ] C3/CB2E: A6 00 LDX $00 C3/CB30: DA PHX C3/CB31: 20 5F CB JSR $CB5F ; create oscillating bird thread C3/CB34: 9B TXY C3/CB35: FA PLX C3/CB36: 8B PHB C3/CB37: A9 7E LDA #$7E C3/CB39: 48 PHA C3/CB3A: AB PLB C3/CB3B: C2 20 REP #$20 C3/CB3D: BF E5 F7 CF LDA $CFF7E5,X C3/CB41: E8 INX C3/CB42: E8 INX C3/CB43: 99 C9 32 STA $32C9,Y C3/CB46: E2 20 SEP #$20 C3/CB48: BF E5 F7 CF LDA $CFF7E5,X C3/CB4C: E8 INX C3/CB4D: 99 CA 34 STA $34CA,Y C3/CB50: BF E5 F7 CF LDA $CFF7E5,X C3/CB54: E8 INX C3/CB55: 99 4A 34 STA $344A,Y C3/CB58: AB PLB C3/CB59: E0 18 00 CPX #$0018 C3/CB5C: D0 D2 BNE $CB30 C3/CB5E: 60 RTS ; [ Create Oscillating Bird Thread ] C3/CB5F: A9 02 LDA #$02 C3/CB61: A0 68 CB LDY #$CB68 C3/CB64: 20 73 11 JSR $1173 ; create thread C3/CB67: 60 RTS ; [ Oscillating Bird Thread ] C3/CB68: AA TAX C3/CB69: 7C 6C CB JMP ($CB6C,X) C3/CB6C: .DW $CB70, $CB87 C3/CB70: A6 2D LDX $2D C3/CB72: FE 49 36 INC $3649,X C3/CB75: 9E 4A 33 STZ $334A,X C3/CB78: BF 68 CB C3 LDA $C3CB68,X C3/CB7C: 9D 49 33 STA $3349,X C3/CB7F: A9 CF LDA #$CF C3/CB81: 9D CA 35 STA $35CA,X C3/CB84: 20 06 12 JSR $1206 ; init animation thread C3/CB87: A6 2D LDX $2D C3/CB89: 20 94 CB JSR $CB94 ; update oscillating bird position C3/CB8C: FE 49 33 INC $3349,X C3/CB8F: 20 C0 DE JSR $DEC0 ; update animation thread position C3/CB92: 38 SEC C3/CB93: 60 RTS ; [ Update Oscillating Bird Position ] C3/CB94: C2 20 REP #$20 C3/CB96: BD 49 33 LDA $3349,X C3/CB99: 20 76 DE JSR $DE76 ; +A = cos(A) C3/CB9C: 85 EB STA $EB C3/CB9E: 85 E0 STA $E0 C3/CBA0: A5 E0 LDA $E0 C3/CBA2: 10 04 BPL $CBA8 C3/CBA4: 49 FF FF EOR #$FFFF C3/CBA7: 1A INC C3/CBA8: 85 E0 STA $E0 C3/CBAA: A5 EB LDA $EB C3/CBAC: 10 09 BPL $CBB7 C3/CBAE: 20 31 CC JSR $CC31 C3/CBB1: 49 FF FF EOR #$FFFF C3/CBB4: 1A INC C3/CBB5: 80 03 BRA $CBBA C3/CBB7: 20 31 CC JSR $CC31 C3/CBBA: A6 2D LDX $2D C3/CBBC: 18 CLC C3/CBBD: 7D C9 34 ADC $34C9,X C3/CBC0: 9D C9 33 STA $33C9,X C3/CBC3: E2 20 SEP #$20 C3/CBC5: 60 RTS ; [ Airship Position Thread (with splash) ] C3/CBC6: AA TAX C3/CBC7: 7C CA CB JMP ($CBCA,X) C3/CBCA: .DW $CBCE, $CBE6 C3/CBCE: A6 2D LDX $2D C3/CBD0: FE 49 36 INC $3649,X C3/CBD3: 9E 4A 33 STZ $334A,X C3/CBD6: 9E 49 33 STZ $3349,X C3/CBD9: A9 78 LDA #$78 C3/CBDB: 9D CA 33 STA $33CA,X C3/CBDE: A9 20 LDA #$20 C3/CBE0: 9D 4A 35 STA $354A,X C3/CBE3: 20 06 12 JSR $1206 ; init animation thread C3/CBE6: A6 2D LDX $2D C3/CBE8: 20 FF CB JSR $CBFF ; update airship position (sine) C3/CBEB: A6 2D LDX $2D C3/CBED: FE 49 33 INC $3349,X C3/CBF0: BD 49 33 LDA $3349,X C3/CBF3: C9 38 CMP #$38 C3/CBF5: B0 03 BCS $CBFA C3/CBF7: 20 38 CC JSR $CC38 ; create airship splash thread C3/CBFA: 20 C0 DE JSR $DEC0 ; update animation thread position C3/CBFD: 38 SEC C3/CBFE: 60 RTS ; [ Update Airship Position (sine) ] C3/CBFF: C2 20 REP #$20 C3/CC01: BD 49 33 LDA $3349,X C3/CC04: 20 7A DE JSR $DE7A ; +A = sin(A) C3/CC07: 85 EB STA $EB C3/CC09: 85 E0 STA $E0 C3/CC0B: A5 E0 LDA $E0 C3/CC0D: 10 04 BPL $CC13 C3/CC0F: 49 FF FF EOR #$FFFF C3/CC12: 1A INC C3/CC13: 85 E0 STA $E0 C3/CC15: A5 EB LDA $EB C3/CC17: 10 09 BPL $CC22 C3/CC19: 20 31 CC JSR $CC31 C3/CC1C: 49 FF FF EOR #$FFFF C3/CC1F: 1A INC C3/CC20: 80 03 BRA $CC25 C3/CC22: 20 31 CC JSR $CC31 C3/CC25: A6 2D LDX $2D C3/CC27: 18 CLC C3/CC28: 7D 49 35 ADC $3549,X C3/CC2B: 9D 49 34 STA $3449,X C3/CC2E: E2 20 SEP #$20 C3/CC30: 60 RTS C3/CC31: A5 E0 LDA $E0 C3/CC33: 4A LSR C3/CC34: 4A LSR C3/CC35: 4A LSR C3/CC36: 4A LSR C3/CC37: 60 RTS ; [ Create Airship Splash Thread ] C3/CC38: A5 23 LDA $23 C3/CC3A: 29 03 AND #$03 C3/CC3C: D0 3A BNE $CC78 C3/CC3E: 8B PHB C3/CC3F: A9 00 LDA #$00 C3/CC41: 48 PHA C3/CC42: AB PLB C3/CC43: 20 46 C8 JSR $C846 ; create generic thread w/ counter C3/CC46: C2 20 REP #$20 C3/CC48: A9 0B 8D LDA #$8D0B ; C2/8D0B (airship splash) C3/CC4B: 9F C9 32 7E STA $7E32C9,X C3/CC4F: A9 00 01 LDA #$0100 C3/CC52: 9F C9 34 7E STA $7E34C9,X C3/CC56: A9 80 FF LDA #$FF80 C3/CC59: 9F 49 35 7E STA $7E3549,X C3/CC5D: E2 20 SEP #$20 C3/CC5F: A9 18 LDA #$18 C3/CC61: 9F 49 33 7E STA $7E3349,X C3/CC65: A9 C2 LDA #$C2 C3/CC67: 9F CA 35 7E STA $7E35CA,X C3/CC6B: A9 7E LDA #$7E C3/CC6D: 9F CA 33 7E STA $7E33CA,X C3/CC71: A9 7C LDA #$7C C3/CC73: 9F 4A 34 7E STA $7E344A,X C3/CC77: AB PLB C3/CC78: 60 RTS ; [ Airship Position Thread (???) ] C3/CC79: AA TAX C3/CC7A: 7C 7D CC JMP ($CC7D,X) C3/CC7D: .DW $CC81, $CCA8 C3/CC81: A6 2D LDX $2D C3/CC83: FE 49 36 INC $3649,X C3/CC86: A9 CF LDA #$CF C3/CC88: 9D CA 35 STA $35CA,X C3/CC8B: C2 20 REP #$20 C3/CC8D: A9 72 F7 LDA #$F772 ; CF/F772 (bird 5) C3/CC90: 9D C9 32 STA $32C9,X C3/CC93: A9 10 00 LDA #$0010 C3/CC96: 9D 49 33 STA $3349,X C3/CC99: E2 20 SEP #$20 C3/CC9B: A9 00 LDA #$00 C3/CC9D: 9D CA 34 STA $34CA,X C3/CCA0: A9 00 LDA #$00 C3/CCA2: 9D 4A 35 STA $354A,X C3/CCA5: 20 06 12 JSR $1206 ; init animation thread C3/CCA8: A6 2D LDX $2D C3/CCAA: BD CA 33 LDA $33CA,X C3/CCAD: C9 08 CMP #$08 C3/CCAF: B0 02 BCS $CCB3 C3/CCB1: 18 CLC C3/CCB2: 60 RTS C3/CCB3: C2 20 REP #$20 C3/CCB5: BD 49 33 LDA $3349,X C3/CCB8: 20 76 DE JSR $DE76 ; +A = cos(A) C3/CCBB: 85 EB STA $EB C3/CCBD: 85 E0 STA $E0 C3/CCBF: A5 E0 LDA $E0 C3/CCC1: 10 04 BPL $CCC7 C3/CCC3: 49 FF FF EOR #$FFFF C3/CCC6: 1A INC C3/CCC7: 85 E0 STA $E0 C3/CCC9: A5 EB LDA $EB C3/CCCB: 10 09 BPL $CCD6 C3/CCCD: A5 E0 LDA $E0 C3/CCCF: 0A ASL C3/CCD0: 49 FF FF EOR #$FFFF C3/CCD3: 1A INC C3/CCD4: 80 03 BRA $CCD9 C3/CCD6: A5 E0 LDA $E0 C3/CCD8: 0A ASL C3/CCD9: A6 2D LDX $2D C3/CCDB: 18 CLC C3/CCDC: 7D C9 34 ADC $34C9,X C3/CCDF: 9D C9 33 STA $33C9,X C3/CCE2: BD 49 33 LDA $3349,X C3/CCE5: 20 7A DE JSR $DE7A ; +A = sin(A) C3/CCE8: 85 EB STA $EB C3/CCEA: 85 E0 STA $E0 C3/CCEC: A5 E0 LDA $E0 C3/CCEE: 10 04 BPL $CCF4 C3/CCF0: 49 FF FF EOR #$FFFF C3/CCF3: 1A INC C3/CCF4: 85 E0 STA $E0 C3/CCF6: A5 EB LDA $EB C3/CCF8: 10 08 BPL $CD02 C3/CCFA: A5 E0 LDA $E0 C3/CCFC: 49 FF FF EOR #$FFFF C3/CCFF: 1A INC C3/CD00: 80 02 BRA $CD04 C3/CD02: A5 E0 LDA $E0 C3/CD04: A6 2D LDX $2D C3/CD06: 18 CLC C3/CD07: 7D 49 35 ADC $3549,X C3/CD0A: 9D 49 34 STA $3449,X C3/CD0D: FE 49 33 INC $3349,X C3/CD10: E2 20 SEP #$20 C3/CD12: 20 21 12 JSR $1221 ; update animation thread C3/CD15: 38 SEC C3/CD16: 60 RTS ; [ Cinematic State $14: Airship/Land with Birds 1 ] C3/CD17: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/CD1B: 20 9F C5 JSR $C59F C3/CD1E: 22 73 D5 C3 JSL $C3D573 C3/CD22: 20 71 CA JSR $CA71 C3/CD25: 20 8C D3 JSR $D38C C3/CD28: 20 6F D3 JSR $D36F C3/CD2B: 20 51 C7 JSR $C751 ; load credits sprite palettes C3/CD2E: A0 28 00 LDY #$0028 C3/CD31: 84 3B STY $3B C3/CD33: A0 CD FF LDY #$FFCD C3/CD36: 84 C3 STY $C3 C3/CD38: A0 0B 03 LDY #$030B C3/CD3B: 84 C7 STY $C7 C3/CD3D: A0 00 F0 LDY #$F000 C3/CD40: 84 C5 STY $C5 C3/CD42: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/CD45: 20 73 D1 JSR $D173 ; load credits bg palettes C3/CD48: 20 2E CB JSR $CB2E ; create oscillating birds (land with airship) C3/CD4B: 20 DC CF JSR $CFDC C3/CD4E: C2 20 REP #$20 C3/CD50: A9 25 8C LDA #$8C25 ; C2/8C25 (airship going right sprite data) C3/CD53: 9F C9 32 7E STA $7E32C9,X C3/CD57: E2 20 SEP #$20 C3/CD59: A9 C2 LDA #$C2 C3/CD5B: 9F CA 35 7E STA $7E35CA,X C3/CD5F: A9 78 LDA #$78 C3/CD61: 9F CA 33 7E STA $7E33CA,X C3/CD65: A9 58 LDA #$58 C3/CD67: 9F 4A 35 7E STA $7E354A,X C3/CD6B: A0 39 8B LDY #$8B39 C3/CD6E: A9 C2 LDA #$C2 C3/CD70: 20 25 D2 JSR $D225 ; load mode 7 scrolling data C3/CD73: 20 C5 D9 JSR $D9C5 ; draw credits text (airship/land) C3/CD76: A4 00 LDY $00 C3/CD78: 84 CF STY $CF C3/CD7A: A9 02 LDA #$02 C3/CD7C: A0 97 D8 LDY #$D897 ; credits text thread (airship/land) C3/CD7F: 20 73 11 JSR $1173 ; create thread C3/CD82: A9 03 LDA #$03 C3/CD84: A0 B0 CA LDY #$CAB0 ; scroll bg2 left thread C3/CD87: 20 73 11 JSR $1173 ; create thread C3/CD8A: 20 A0 D2 JSR $D2A0 ; create camera control thread C3/CD8D: E6 26 INC $26 C3/CD8F: A0 B0 04 LDY #$04B0 C3/CD92: 84 20 STY $20 C3/CD94: 4C 6C C6 JMP $C66C ; create fade in thread C3/CD97: A9 02 LDA #$02 C3/CD99: A0 EA CD LDY #$CDEA C3/CD9C: 20 73 11 JSR $1173 ; create thread C3/CD9F: 60 RTS ; [ Cinematic State $15: Airship with Birds 2 ] C3/CDA0: A4 20 LDY $20 C3/CDA2: D0 45 BNE $CDE9 C3/CDA4: A9 03 LDA #$03 C3/CDA6: 85 26 STA $26 C3/CDA8: A0 08 07 LDY #$0708 C3/CDAB: 84 20 STY $20 C3/CDAD: 20 97 CD JSR $CD97 C3/CDB0: A9 00 LDA #$00 C3/CDB2: 9F CA 33 7E STA $7E33CA,X C3/CDB6: A9 50 LDA #$50 C3/CDB8: 9F 4A 34 7E STA $7E344A,X C3/CDBC: 20 97 CD JSR $CD97 C3/CDBF: A9 18 LDA #$18 C3/CDC1: 9F CA 33 7E STA $7E33CA,X C3/CDC5: A9 40 LDA #$40 C3/CDC7: 9F 4A 34 7E STA $7E344A,X C3/CDCB: 20 97 CD JSR $CD97 C3/CDCE: A9 40 LDA #$40 C3/CDD0: 9F CA 33 7E STA $7E33CA,X C3/CDD4: A9 68 LDA #$68 C3/CDD6: 9F 4A 34 7E STA $7E344A,X C3/CDDA: 20 97 CD JSR $CD97 C3/CDDD: A9 10 LDA #$10 C3/CDDF: 9F CA 33 7E STA $7E33CA,X C3/CDE3: A9 48 LDA #$48 C3/CDE5: 9F 4A 34 7E STA $7E344A,X C3/CDE9: 60 RTS ; [ ] C3/CDEA: AA TAX C3/CDEB: 7C EE CD JMP ($CDEE,X) C3/CDEE: .DW $CE00, $CE1F, $CE1F, $CE1F, $CE1F, $CE1F, $CE1F, $CE1F C3/CDFE: .DW $CE33 C3/CE00: A6 2D LDX $2D C3/CE02: FE 49 36 INC $3649,X C3/CE05: C2 20 REP #$20 C3/CE07: A9 4F F7 LDA #$F74F ; CF/F74F (bird 4) C3/CE0A: 9D C9 32 STA $32C9,X C3/CE0D: E2 20 SEP #$20 C3/CE0F: A9 CF LDA #$CF C3/CE11: 9D CA 35 STA $35CA,X C3/CE14: 9E C9 35 STZ $35C9,X C3/CE17: 20 43 CE JSR $CE43 C3/CE1A: A6 2D LDX $2D C3/CE1C: 20 06 12 JSR $1206 ; init animation thread C3/CE1F: A6 2D LDX $2D C3/CE21: BC 49 33 LDY $3349,X C3/CE24: D0 05 BNE $CE2B C3/CE26: 20 43 CE JSR $CE43 C3/CE29: A6 2D LDX $2D C3/CE2B: 20 E5 CF JSR $CFE5 ; decrement thread counter C3/CE2E: 20 C0 DE JSR $DEC0 ; update animation thread position C3/CE31: 38 SEC C3/CE32: 60 RTS C3/CE33: 20 C0 DE JSR $DEC0 ; update animation thread position C3/CE36: A6 2D LDX $2D C3/CE38: BD CA 33 LDA $33CA,X C3/CE3B: C9 01 CMP #$01 C3/CE3D: B0 02 BCS $CE41 C3/CE3F: 18 CLC C3/CE40: 60 RTS C3/CE41: 38 SEC C3/CE42: 60 RTS C3/CE43: A4 2D LDY $2D C3/CE45: BB TYX C3/CE46: 7B TDC C3/CE47: B9 C9 35 LDA $35C9,Y C3/CE4A: FE C9 35 INC $35C9,X C3/CE4D: FE 49 36 INC $3649,X C3/CE50: 0A ASL C3/CE51: 0A ASL C3/CE52: 0A ASL C3/CE53: C2 20 REP #$20 C3/CE55: AA TAX C3/CE56: BF 6E CE C3 LDA $C3CE6E,X C3/CE5A: 99 C9 34 STA $34C9,Y C3/CE5D: BF 70 CE C3 LDA $C3CE70,X C3/CE61: 99 49 35 STA $3549,Y C3/CE64: BF 72 CE C3 LDA $C3CE72,X C3/CE68: 99 49 33 STA $3349,Y C3/CE6B: E2 20 SEP #$20 C3/CE6D: 60 RTS C3/CE6E: .DW $0020, $FFF0, $0384, $0000 C3/CE76: .DW $0020, $0000, $003C, $0000 C3/CE7E: .DW $0020, $0020, $003C, $0000 C3/CE86: .DW $0010, $0040, $003C, $0000 C3/CE8E: .DW $FFE0, $0040, $003C, $0000 C3/CE96: .DW $FFC0, $0040, $00B4, $0000 C3/CE9E: .DW $FF80, $0080, $00B4, $0000 ; [ Cinematic State $18: Land without Sprites ] C3/CEA6: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/CEAA: 20 9F C5 JSR $C59F C3/CEAD: 22 73 D5 C3 JSL $C3D573 C3/CEB1: 20 E6 D3 JSR $D3E6 ; init mode 7 scrolling data C3/CEB4: 22 8F CB D4 JSL $D4CB8F C3/CEB8: A0 00 18 LDY #$1800 C3/CEBB: 84 C5 STY $C5 C3/CEBD: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/CEC0: 20 5C D1 JSR $D15C ; clear credits text palettes C3/CEC3: 20 73 D1 JSR $D173 ; load credits bg palettes C3/CEC6: A0 FA 8A LDY #$8AFA C3/CEC9: A9 C2 LDA #$C2 C3/CECB: 20 25 D2 JSR $D225 ; load mode 7 scrolling data C3/CECE: 20 DB D9 JSR $D9DB ; draw credits text (land) C3/CED1: A4 00 LDY $00 C3/CED3: 84 CF STY $CF C3/CED5: A9 02 LDA #$02 C3/CED7: A0 E5 D8 LDY #$D8E5 ; credits text thread (land) C3/CEDA: 20 73 11 JSR $1173 ; create thread C3/CEDD: 20 A0 D2 JSR $D2A0 ; create camera control thread C3/CEE0: A9 03 LDA #$03 C3/CEE2: 85 26 STA $26 C3/CEE4: A0 10 0E LDY #$0E10 ; set timer to 60s C3/CEE7: 84 20 STY $20 C3/CEE9: 4C 6C C6 JMP $C66C ; create fade in thread ; [ Cinematic State $1C: Big Airship ] C3/CEEC: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/CEF0: 22 73 D5 C3 JSL $C3D573 C3/CEF4: 20 44 D1 JSR $D144 C3/CEF7: 20 71 CA JSR $CA71 C3/CEFA: 20 8C D3 JSR $D38C C3/CEFD: 20 6F D3 JSR $D36F C3/CF00: A0 00 01 LDY #$0100 C3/CF03: 84 C5 STY $C5 C3/CF05: A0 DC 02 LDY #$02DC C3/CF08: 84 C7 STY $C7 C3/CF0A: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/CF0D: A0 10 00 LDY #$0010 C3/CF10: 84 3B STY $3B C3/CF12: 20 5C D1 JSR $D15C ; clear credits text palettes C3/CF15: 20 51 C7 JSR $C751 ; load credits sprite palettes C3/CF18: 20 73 D1 JSR $D173 ; load credits bg palettes C3/CF1B: 20 E6 D9 JSR $D9E6 ; draw credits text (big airship) C3/CF1E: A4 00 LDY $00 C3/CF20: 84 CF STY $CF C3/CF22: A9 02 LDA #$02 C3/CF24: A0 33 D9 LDY #$D933 ; credits text thread (big airship) C3/CF27: 20 73 11 JSR $1173 ; create thread C3/CF2A: A9 00 LDA #$00 C3/CF2C: A0 9A CF LDY #$CF9A ; bg scrolling thread (big airship) C3/CF2F: 20 73 11 JSR $1173 ; create thread C3/CF32: 20 B2 CF JSR $CFB2 ; create big airship propeller thread (cw) C3/CF35: A9 14 LDA #$14 C3/CF37: 9F 4A 35 7E STA $7E354A,X C3/CF3B: A9 44 LDA #$44 C3/CF3D: 9F CA 33 7E STA $7E33CA,X C3/CF41: 20 C7 CF JSR $CFC7 ; create big airship propeller thread (ccw) C3/CF44: A9 14 LDA #$14 C3/CF46: 9F 4A 35 7E STA $7E354A,X C3/CF4A: A9 AC LDA #$AC C3/CF4C: 9F CA 33 7E STA $7E33CA,X C3/CF50: 20 B2 CF JSR $CFB2 ; create big airship propeller thread (cw) C3/CF53: A9 E8 LDA #$E8 C3/CF55: 9F 4A 35 7E STA $7E354A,X C3/CF59: A9 60 LDA #$60 C3/CF5B: 9F CA 33 7E STA $7E33CA,X C3/CF5F: 20 C7 CF JSR $CFC7 ; create big airship propeller thread (ccw) C3/CF62: A9 E8 LDA #$E8 C3/CF64: 9F 4A 35 7E STA $7E354A,X C3/CF68: A9 90 LDA #$90 C3/CF6A: 9F CA 33 7E STA $7E33CA,X C3/CF6E: 20 DC CF JSR $CFDC ; create airship position thread (no water splash) C3/CF71: C2 20 REP #$20 C3/CF73: A9 60 8C LDA #$8C60 ; C2/8C60 (big airship sprite data) C3/CF76: 9F C9 32 7E STA $7E32C9,X C3/CF7A: E2 20 SEP #$20 C3/CF7C: A9 C2 LDA #$C2 C3/CF7E: 9F CA 35 7E STA $7E35CA,X C3/CF82: A9 48 LDA #$48 C3/CF84: 9F CA 33 7E STA $7E33CA,X C3/CF88: A9 F8 LDA #$F8 C3/CF8A: 9F 4A 35 7E STA $7E354A,X C3/CF8E: A9 03 LDA #$03 C3/CF90: 85 26 STA $26 C3/CF92: A0 AC 08 LDY #$08AC ; set timer to 37s C3/CF95: 84 20 STY $20 C3/CF97: 4C 6C C6 JMP $C66C ; create fade in thread ; [ BG Scrolling Thread (big airship) ] C3/CF9A: A5 23 LDA $23 C3/CF9C: 29 7F AND #$7F C3/CF9E: D0 02 BNE $CFA2 C3/CFA0: E6 3B INC $3B ; increment bg2 v-scroll every 128 frames C3/CFA2: A5 23 LDA $23 C3/CFA4: 29 01 AND #$01 C3/CFA6: D0 08 BNE $CFB0 C3/CFA8: C2 20 REP #$20 C3/CFAA: C6 B9 DEC $B9 ; decrement bg1 v-scroll every 2 frames C3/CFAC: C6 37 DEC $37 C3/CFAE: E2 20 SEP #$20 C3/CFB0: 38 SEC C3/CFB1: 60 RTS ; [ Create Big Airship Propeller Thread (cw) ] C3/CFB2: 20 DC CF JSR $CFDC C3/CFB5: A9 C2 LDA #$C2 C3/CFB7: 9F CA 35 7E STA $7E35CA,X C3/CFBB: C2 20 REP #$20 C3/CFBD: A9 3E 8D LDA #$8D3E ; C2/8D3E (big airship propeller, cw) C3/CFC0: 9F C9 32 7E STA $7E32C9,X C3/CFC4: E2 20 SEP #$20 C3/CFC6: 60 RTS ; [ Create Big Airship Propeller Thread (ccw) ] C3/CFC7: 20 DC CF JSR $CFDC C3/CFCA: A9 C2 LDA #$C2 C3/CFCC: 9F CA 35 7E STA $7E35CA,X C3/CFD0: C2 20 REP #$20 C3/CFD2: A9 91 8D LDA #$8D91 ; C2/8D3E (big airship propeller, ccw) C3/CFD5: 9F C9 32 7E STA $7E32C9,X C3/CFD9: E2 20 SEP #$20 C3/CFDB: 60 RTS ; [ Create Airship Position Thread (no water splash) ] C3/CFDC: A9 02 LDA #$02 C3/CFDE: A0 F8 CF LDY #$CFF8 ; airship position thread (no water splash) C3/CFE1: 20 73 11 JSR $1173 ; create thread C3/CFE4: 60 RTS ; [ Decrement Thread Counter ] C3/CFE5: A6 2D LDX $2D C3/CFE7: C2 20 REP #$20 C3/CFE9: DE 49 33 DEC $3349,X ; decrement counter C3/CFEC: E2 20 SEP #$20 C3/CFEE: 60 RTS C3/CFEF: C2 20 REP #$20 C3/CFF1: 98 TYA C3/CFF2: 9D 49 33 STA $3349,X C3/CFF5: E2 20 SEP #$20 C3/CFF7: 60 RTS ; [ Airship Position Thread (no water splash) ] C3/CFF8: AA TAX C3/CFF9: 7C FC CF JMP ($CFFC,X) C3/CFFC: .DW $D000, $D00B C3/D000: A6 2D LDX $2D C3/D002: FE 49 36 INC $3649,X C3/D005: 9E 49 33 STZ $3349,X C3/D008: 20 06 12 JSR $1206 ; init animation thread C3/D00B: A6 2D LDX $2D C3/D00D: 20 FF CB JSR $CBFF ; update airship position (sine) C3/D010: FE 49 33 INC $3349,X C3/D013: 20 21 12 JSR $1221 ; update animation thread C3/D016: 38 SEC C3/D017: 60 RTS ; [ Cinematic State $1D-$1F: ] ; unused C3/D018: A9 C2 LDA #$C2 C3/D01A: A0 49 30 LDY #$3049 C3/D01D: A2 9C 95 LDX #$959C C3/D020: 20 8E 0F JSR $0F8E ; load color palette C3/D023: A9 C2 LDA #$C2 C3/D025: A0 69 30 LDY #$3069 C3/D028: A2 9C 95 LDX #$959C C3/D02B: 20 8E 0F JSR $0F8E ; load color palette C3/D02E: 60 RTS ; [ Cinematic State $20: Airship with Jet Trails 1 ] C3/D02F: 22 D7 CE D4 JSL $D4CED7 ; init hardware registers C3/D033: 20 9F C5 JSR $C59F C3/D036: A9 80 LDA #$80 C3/D038: 8D 1A 21 STA $211A C3/D03B: 20 0A D6 JSR $D60A C3/D03E: 20 E6 D3 JSR $D3E6 ; init mode 7 scrolling data C3/D041: 22 55 CE D4 JSL $D4CE55 C3/D045: A9 C2 LDA #$C2 C3/D047: A0 C9 31 LDY #$31C9 C3/D04A: A2 54 97 LDX #$9754 C3/D04D: 20 8E 0F JSR $0F8E ; load color palette C3/D050: A9 C2 LDA #$C2 C3/D052: A0 E9 31 LDY #$31E9 C3/D055: A2 4C 97 LDX #$974C C3/D058: 20 8E 0F JSR $0F8E ; load color palette C3/D05B: 20 73 D1 JSR $D173 ; load credits bg palettes C3/D05E: 20 18 D0 JSR $D018 C3/D061: A0 01 00 LDY #$0001 C3/D064: 84 BB STY $BB C3/D066: 84 C1 STY $C1 C3/D068: A0 08 00 LDY #$0008 C3/D06B: 84 B7 STY $B7 C3/D06D: A0 18 00 LDY #$0018 C3/D070: 84 B9 STY $B9 C3/D072: A0 D8 FF LDY #$FFD8 C3/D075: 84 35 STY $35 C3/D077: A0 D0 FF LDY #$FFD0 C3/D07A: 84 37 STY $37 C3/D07C: A9 00 LDA #$00 C3/D07E: A0 22 D1 LDY #$D122 C3/D081: 20 73 11 JSR $1173 ; create thread C3/D084: E6 26 INC $26 C3/D086: A0 96 00 LDY #$0096 C3/D089: 84 20 STY $20 C3/D08B: A9 00 LDA #$00 C3/D08D: A0 A8 D0 LDY #$D0A8 C3/D090: 20 73 11 JSR $1173 ; create thread C3/D093: 4C 6C C6 JMP $C66C ; create fade in thread ; [ Cinematic State $21: Airship with Jet Trails 2 ] C3/D096: A4 20 LDY $20 C3/D098: D0 0D BNE $D0A7 C3/D09A: 64 26 STZ $26 C3/D09C: A0 78 00 LDY #$0078 C3/D09F: 84 20 STY $20 C3/D0A1: 20 6B E1 JSR $E16B C3/D0A4: 20 41 E2 JSR $E241 C3/D0A7: 60 RTS C3/D0A8: A5 23 LDA $23 C3/D0AA: 29 01 AND #$01 C3/D0AC: F0 11 BEQ $D0BF C3/D0AE: A9 51 LDA #$51 C3/D0B0: 8F 49 98 7E STA $7E9849 C3/D0B4: A9 4F LDA #$4F C3/D0B6: 8F 4A 98 7E STA $7E984A C3/D0BA: 20 D0 D0 JSR $D0D0 C3/D0BD: 38 SEC C3/D0BE: 60 RTS C3/D0BF: A9 59 LDA #$59 C3/D0C1: 8F 49 98 7E STA $7E9849 C3/D0C5: A9 5A LDA #$5A C3/D0C7: 8F 4A 98 7E STA $7E984A C3/D0CB: 20 D0 D0 JSR $D0D0 C3/D0CE: 38 SEC C3/D0CF: 60 RTS C3/D0D0: A0 83 02 LDY #$0283 C3/D0D3: 84 14 STY $14 C3/D0D5: A0 49 98 LDY #$9849 C3/D0D8: 84 16 STY $16 C3/D0DA: A0 06 02 LDY #$0206 C3/D0DD: 84 1B STY $1B C3/D0DF: A0 4A 98 LDY #$984A C3/D0E2: 84 1D STY $1D C3/D0E4: A9 7E LDA #$7E C3/D0E6: 85 18 STA $18 C3/D0E8: 85 1F STA $1F C3/D0EA: A0 01 00 LDY #$0001 C3/D0ED: 84 12 STY $12 C3/D0EF: 84 19 STY $19 C3/D0F1: 60 RTS C3/D0F2: A5 23 LDA $23 C3/D0F4: 29 01 AND #$01 C3/D0F6: F0 0B BEQ $D103 C3/D0F8: A9 58 LDA #$58 C3/D0FA: 8F 49 98 7E STA $7E9849 C3/D0FE: 20 0E D1 JSR $D10E C3/D101: 38 SEC C3/D102: 60 RTS C3/D103: A9 34 LDA #$34 C3/D105: 8F 49 98 7E STA $7E9849 C3/D109: 20 0E D1 JSR $D10E C3/D10C: 38 SEC C3/D10D: 60 RTS C3/D10E: A0 92 08 LDY #$0892 C3/D111: 84 14 STY $14 C3/D113: A0 49 98 LDY #$9849 C3/D116: 84 16 STY $16 C3/D118: A9 7E LDA #$7E C3/D11A: 85 18 STA $18 C3/D11C: A0 01 00 LDY #$0001 C3/D11F: 84 12 STY $12 C3/D121: 60 RTS ; [ Cinematic State $22-$24: ] ; unused C3/D122: 20 27 D1 JSR $D127 C3/D125: 38 SEC C3/D126: 60 RTS C3/D127: A5 23 LDA $23 C3/D129: 29 07 AND #$07 C3/D12B: D0 0A BNE $D137 ; branch 7 out of 8 frames C3/D12D: A4 B9 LDY $B9 C3/D12F: 88 DEY C3/D130: 84 B9 STY $B9 C3/D132: A4 B7 LDY $B7 C3/D134: C8 INY C3/D135: 84 B7 STY $B7 C3/D137: C2 20 REP #$20 C3/D139: E6 BB INC $BB C3/D13B: E6 BB INC $BB C3/D13D: E6 C1 INC $C1 C3/D13F: E6 C1 INC $C1 C3/D141: E2 20 SEP #$20 C3/D143: 60 RTS C3/D144: A0 BA D7 LDY #$D7BA C3/D147: 84 E7 STY $E7 C3/D149: A9 7E LDA #$7E C3/D14B: 85 E9 STA $E9 C3/D14D: A0 80 05 LDY #$0580 C3/D150: 84 EB STY $EB C3/D152: 64 ED STZ $ED C3/D154: 64 EE STZ $EE C3/D156: A0 00 6C LDY #$6C00 C3/D159: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM ; [ Clear Credits Text Palettes ] C3/D15C: A9 C3 LDA #$C3 C3/D15E: A0 C9 31 LDY #$31C9 ; sprite palette 4 C3/D161: A2 F4 10 LDX #$10F4 C3/D164: 20 8E 0F JSR $0F8E ; load color palette C3/D167: A9 C3 LDA #$C3 C3/D169: A0 E9 31 LDY #$31E9 ; sprite palette 5 C3/D16C: A2 F4 10 LDX #$10F4 C3/D16F: 20 8E 0F JSR $0F8E ; load color palette C3/D172: 60 RTS ; [ Load Credits BG Palettes ] C3/D173: A9 C2 LDA #$C2 C3/D175: A0 69 30 LDY #$3069 ; bg palette 1 C3/D178: A2 BC 95 LDX #$95BC C3/D17B: 20 8E 0F JSR $0F8E ; load color palette C3/D17E: A9 C2 LDA #$C2 C3/D180: A0 89 30 LDY #$3089 ; bg palette 2 C3/D183: A2 DC 95 LDX #$95DC C3/D186: 20 8E 0F JSR $0F8E ; load color palette C3/D189: A9 C2 LDA #$C2 C3/D18B: A0 A9 30 LDY #$30A9 ; bg palette 3 C3/D18E: A2 FC 95 LDX #$95FC C3/D191: 20 8E 0F JSR $0F8E ; load color palette C3/D194: A9 C2 LDA #$C2 C3/D196: A0 C9 30 LDY #$30C9 ; bg palette 4 C3/D199: A2 1C 96 LDX #$961C C3/D19C: 20 8E 0F JSR $0F8E ; load color palette C3/D19F: A9 C2 LDA #$C2 C3/D1A1: A0 09 31 LDY #$3109 ; bg palette 6 C3/D1A4: A2 3C 96 LDX #$963C C3/D1A7: 20 8E 0F JSR $0F8E ; load color palette C3/D1AA: A9 C2 LDA #$C2 C3/D1AC: A0 29 31 LDY #$3129 ; bg palette 7 C3/D1AF: A2 5C 96 LDX #$965C C3/D1B2: 20 8E 0F JSR $0F8E ; load color palette C3/D1B5: 60 RTS ; [ Scroll BG3 Down Thread ] C3/D1B6: A4 CF LDY $CF C3/D1B8: C4 64 CPY $64 C3/D1BA: F0 0E BEQ $D1CA C3/D1BC: A5 23 LDA $23 C3/D1BE: 29 03 AND #$03 C3/D1C0: D0 06 BNE $D1C8 C3/D1C2: C2 20 REP #$20 C3/D1C4: C6 3F DEC $3F ; scroll bg3 up C3/D1C6: E2 20 SEP #$20 C3/D1C8: 38 SEC C3/D1C9: 60 RTS C3/D1CA: 18 CLC C3/D1CB: 60 RTS ; [ Fade In Thread ] C3/D1CC: AA TAX C3/D1CD: 7C D0 D1 JMP ($D1D0,X) C3/D1D0: .DW $D1D4, $D1E3 ; 0: init C3/D1D4: A6 2D LDX $2D C3/D1D6: FE 49 36 INC $3649,X C3/D1D9: A9 01 LDA #$01 C3/D1DB: 9D 4A 34 STA $344A,X C3/D1DE: A9 0F LDA #$0F C3/D1E0: 9D 49 33 STA $3349,X ; 1: update C3/D1E3: A6 2D LDX $2D C3/D1E5: BD 49 33 LDA $3349,X C3/D1E8: F0 0D BEQ $D1F7 C3/D1EA: BD 4A 34 LDA $344A,X C3/D1ED: 85 44 STA $44 ; screen display register (-> $2100) C3/D1EF: FE 4A 34 INC $344A,X C3/D1F2: DE 49 33 DEC $3349,X C3/D1F5: 38 SEC C3/D1F6: 60 RTS C3/D1F7: A9 0F LDA #$0F ; screen on, full brightness C3/D1F9: 85 44 STA $44 ; screen display register (-> $2100) C3/D1FB: 18 CLC C3/D1FC: 60 RTS ; [ Fade Out Thread ] C3/D1FD: AA TAX C3/D1FE: 7C 01 D2 JMP ($D201,X) C3/D201: .DW $D205, $D20F ; state 0: init C3/D205: A6 2D LDX $2D C3/D207: FE 49 36 INC $3649,X ; increment thread state C3/D20A: A9 0F LDA #$0F C3/D20C: 9D CA 33 STA $33CA,X ; set initial screen brightness to full ; state 1: update C3/D20F: A4 20 LDY $20 ; terminate when wait counter reaches zero C3/D211: F0 0C BEQ $D21F C3/D213: A6 2D LDX $2D C3/D215: BD CA 33 LDA $33CA,X C3/D218: 85 44 STA $44 ; set screen brightness C3/D21A: DE CA 33 DEC $33CA,X ; decrement screen brightness C3/D21D: 38 SEC C3/D21E: 60 RTS C3/D21F: A9 80 LDA #$80 ; screen off C3/D221: 85 44 STA $44 C3/D223: 18 CLC C3/D224: 60 RTS ; [ Load Mode 7 Scrolling Data ] ; +Y: pointer to mode 7 scrolling data ; A: pointer bank C3/D225: 48 PHA C3/D226: 5A PHY C3/D227: A9 01 LDA #$01 C3/D229: A0 3F D2 LDY #$D23F C3/D22C: 20 73 11 JSR $1173 ; create thread C3/D22F: C2 20 REP #$20 C3/D231: 7A PLY C3/D232: 98 TYA C3/D233: 9F C9 32 7E STA $7E32C9,X C3/D237: E2 20 SEP #$20 C3/D239: 68 PLA C3/D23A: 9F CA 35 7E STA $7E35CA,X C3/D23E: 60 RTS ; [ Mode 7 Scrolling Thread ] C3/D23F: AA TAX C3/D240: 7C 43 D2 JMP ($D243,X) C3/D243: .DW $D247, $D24F C3/D247: A6 2D LDX $2D C3/D249: FE 49 36 INC $3649,X C3/D24C: 20 06 12 JSR $1206 ; init animation thread C3/D24F: A6 2D LDX $2D C3/D251: 20 27 12 JSR $1227 ; update animation data C3/D254: 7B TDC C3/D255: BD C9 36 LDA $36C9,X ; data pointer C3/D258: A8 TAY C3/D259: C2 20 REP #$20 C3/D25B: B7 EB LDA [$EB],Y ; buttons pressed C3/D25D: 85 04 STA $04 C3/D25F: E2 20 SEP #$20 C3/D261: 38 SEC C3/D262: 60 RTS ; [ Update Mode 7 Registers ] C3/D263: A5 BB LDA $BB C3/D265: 8D 1B 21 STA $211B C3/D268: A5 BC LDA $BC C3/D26A: 8D 1B 21 STA $211B C3/D26D: A5 BD LDA $BD C3/D26F: 8D 1C 21 STA $211C C3/D272: A5 BE LDA $BE C3/D274: 8D 1C 21 STA $211C C3/D277: A5 BF LDA $BF C3/D279: 8D 1D 21 STA $211D C3/D27C: A5 C0 LDA $C0 C3/D27E: 8D 1D 21 STA $211D C3/D281: A5 C1 LDA $C1 C3/D283: 8D 1E 21 STA $211E C3/D286: A5 C2 LDA $C2 C3/D288: 8D 1E 21 STA $211E C3/D28B: A5 B7 LDA $B7 C3/D28D: 8D 1F 21 STA $211F C3/D290: A5 B8 LDA $B8 C3/D292: 8D 1F 21 STA $211F C3/D295: A5 B9 LDA $B9 C3/D297: 8D 20 21 STA $2120 C3/D29A: A5 BA LDA $BA C3/D29C: 8D 20 21 STA $2120 C3/D29F: 60 RTS ; [ Create Camera Control Thread ] C3/D2A0: A9 00 LDA #$00 C3/D2A2: A0 A9 D2 LDY #$D2A9 C3/D2A5: 20 73 11 JSR $1173 ; create thread C3/D2A8: 60 RTS ; [ Camera Control Thread ] C3/D2A9: A5 04 LDA $04 C3/D2AB: 89 10 BIT #$10 C3/D2AD: F0 08 BEQ $D2B7 ; branch if R button not pressed C3/D2AF: C2 20 REP #$20 C3/D2B1: E6 C3 INC $C3 C3/D2B3: E2 20 SEP #$20 C3/D2B5: E6 59 INC $59 C3/D2B7: A5 04 LDA $04 C3/D2B9: 89 20 BIT #$20 C3/D2BB: F0 08 BEQ $D2C5 ; branch if L button not pressed C3/D2BD: C2 20 REP #$20 C3/D2BF: C6 C3 DEC $C3 C3/D2C1: E2 20 SEP #$20 C3/D2C3: C6 59 DEC $59 C3/D2C5: A5 04 LDA $04 C3/D2C7: 89 40 BIT #$40 C3/D2C9: F0 06 BEQ $D2D1 ; branch if X button not pressed C3/D2CB: C2 20 REP #$20 C3/D2CD: E6 C7 INC $C7 ; increase tilt angle C3/D2CF: E2 20 SEP #$20 C3/D2D1: A5 05 LDA $05 C3/D2D3: 89 40 BIT #$40 C3/D2D5: F0 06 BEQ $D2DD ; branch if Y button not pressed C3/D2D7: C2 20 REP #$20 C3/D2D9: C6 C7 DEC $C7 ; decrease tilt angle C3/D2DB: E2 20 SEP #$20 C3/D2DD: A5 04 LDA $04 C3/D2DF: 89 80 BIT #$80 C3/D2E1: F0 02 BEQ $D2E5 ; branch if A button not pressed C3/D2E3: E6 C6 INC $C6 ; zoom in C3/D2E5: A5 05 LDA $05 C3/D2E7: 89 80 BIT #$80 C3/D2E9: F0 02 BEQ $D2ED ; branch if B button not pressed C3/D2EB: C6 C6 DEC $C6 ; zoom out C3/D2ED: A5 05 LDA $05 C3/D2EF: 89 08 BIT #$08 C3/D2F1: F0 08 BEQ $D2FB ; branch if up button not pressed C3/D2F3: C2 20 REP #$20 C3/D2F5: C6 B9 DEC $B9 ; decrement y position C3/D2F7: C6 37 DEC $37 C3/D2F9: E2 20 SEP #$20 C3/D2FB: A5 05 LDA $05 C3/D2FD: 89 04 BIT #$04 C3/D2FF: F0 08 BEQ $D309 ; branch if down button not pressed C3/D301: C2 20 REP #$20 C3/D303: E6 B9 INC $B9 ; increment y position C3/D305: E6 37 INC $37 C3/D307: E2 20 SEP #$20 C3/D309: A5 05 LDA $05 C3/D30B: 89 02 BIT #$02 C3/D30D: F0 08 BEQ $D317 ; branch if left button not pressed C3/D30F: C2 20 REP #$20 C3/D311: C6 B7 DEC $B7 ; decrement x position C3/D313: C6 35 DEC $35 C3/D315: E2 20 SEP #$20 C3/D317: A5 05 LDA $05 C3/D319: 89 01 BIT #$01 C3/D31B: F0 08 BEQ $D325 ; branch if right button not pressed C3/D31D: C2 20 REP #$20 C3/D31F: E6 B7 INC $B7 ; increment x position C3/D321: E6 35 INC $35 C3/D323: E2 20 SEP #$20 C3/D325: 20 38 D3 JSR $D338 ; clip x & y position C3/D328: C2 20 REP #$20 C3/D32A: A5 04 LDA $04 C3/D32C: 29 FF F0 AND #$F0FF C3/D32F: E2 20 SEP #$20 C3/D331: F0 03 BEQ $D336 ; branch if no buttons are pressed C3/D333: 20 D2 DD JSR $DDD2 ; update hdma data for mode 7 variables C3/D336: 38 SEC C3/D337: 60 RTS ; [ Clip X & Y Position ] C3/D338: C2 20 REP #$20 C3/D33A: A5 B7 LDA $B7 C3/D33C: 29 FF 1F AND #$1FFF ; max $1FFF C3/D33F: 85 B7 STA $B7 C3/D341: A5 B9 LDA $B9 C3/D343: 29 FF 1F AND #$1FFF C3/D346: 85 B9 STA $B9 C3/D348: E2 20 SEP #$20 C3/D34A: 60 RTS ; [ Init HDMA (big airship) ] C3/D34B: 22 8F CB D4 JSL $D4CB8F ; init HDMA for mode 7 variables ($211B-$211E) C3/D34F: 9C 10 43 STZ $4310 ; HDMA channel #1 C3/D352: A9 05 LDA #$05 ; destination = $2105 C3/D354: 8D 11 43 STA $4311 C3/D357: A0 6A D3 LDY #$D36A ; source = $C3D36A C3/D35A: 8C 12 43 STY $4312 C3/D35D: A9 C3 LDA #$C3 C3/D35F: 8D 14 43 STA $4314 C3/D362: 8D 17 43 STA $4317 C3/D365: A9 02 LDA #$02 C3/D367: 04 43 TSB $43 C3/D369: 60 RTS ; bg mode HDMA table for big airship (mode 1 for $47 scanlines, then mode 7 for the remainder) C3/D36A: .DB $47, $01 .DB $01, $07 .DB $00 ; [ Init Color Math HDMA (credits) ] C3/D36F: A9 01 LDA #$01 C3/D371: 8D 30 43 STA $4330 C3/D374: A9 30 LDA #$30 C3/D376: 8D 31 43 STA $4331 C3/D379: A0 A7 D3 LDY #$D3A7 C3/D37C: 8C 32 43 STY $4332 C3/D37F: A9 C3 LDA #$C3 C3/D381: 8D 34 43 STA $4334 C3/D384: 8D 37 43 STA $4337 C3/D387: A9 08 LDA #$08 C3/D389: 04 43 TSB $43 C3/D38B: 60 RTS ; [ Init Fixed Color HDMA (credits) ] C3/D38C: 9C 20 43 STZ $4320 C3/D38F: A9 32 LDA #$32 C3/D391: 8D 21 43 STA $4321 C3/D394: A0 AE D3 LDY #$D3AE C3/D397: 8C 22 43 STY $4322 C3/D39A: A9 C3 LDA #$C3 C3/D39C: 8D 24 43 STA $4324 C3/D39F: 8D 27 43 STA $4327 C3/D3A2: A9 04 LDA #$04 C3/D3A4: 04 43 TSB $43 C3/D3A6: 60 RTS C3/D3A7: .DB $47, $80, $41, $01, $82, $01, $00 C3/D3AE: .DB $47, $E0, $01, $ED, $01, $EB, $01, $EA, $02, $E9, $03, $E8, $04, $E7, $05, $E6 C3/D3BE: .DB $06, $E5, $07, $E4, $08, $E3, $0C, $E2, $0F, $E1, $1E, $E0, $00 C3/D3CB: 9C 20 43 STZ $4320 C3/D3CF: A9 32 LDA #$32 C3/D3D1: 8D 21 43 STA $4321 C3/D3D3: A0 49 98 LDY #$9849 C3/D3D6: 8C 22 43 STY $4322 C3/D3D9: A9 7E LDA #$7E C3/D3DB: 8D 24 43 STA $4324 C3/D3DE: 8D 27 43 STA $4327 C3/D3E1: A9 04 LDA #$04 C3/D3E3: 04 43 TSB $43 C3/D3E5: 60 RTS ; [ Init Mode 7 Scrolling Data ] C3/D3E6: A0 00 01 LDY #$0100 C3/D3E9: 84 B7 STY $B7 C3/D3EB: A0 80 00 LDY #$0080 C3/D3EE: 84 B9 STY $B9 C3/D3F0: 84 35 STY $35 C3/D3F2: 7B TDC C3/D3F3: A8 TAY C3/D3F4: 84 37 STY $37 C3/D3F6: 64 58 STZ $58 C3/D3F8: A9 40 LDA #$40 C3/D3FA: 85 59 STA $59 C3/D3FC: A0 00 00 LDY #$0000 C3/D3FF: 84 C7 STY $C7 C3/D401: A0 00 01 LDY #$0100 C3/D404: 84 C5 STY $C5 C3/D406: A0 00 00 LDY #$0000 C3/D409: 84 C3 STY $C3 C3/D40B: 60 RTS ; [ Load Graphics (airship above clouds) ] C3/D40C: 20 39 D4 JSR $D439 ; load credits font graphics C3/D40F: 20 B1 D6 JSR $D6B1 ; load credits graphics (clouds/airship) C3/D412: 20 6B D6 JSR $D66B ; load credits palette assignment (clouds/airship) C3/D415: 20 52 D5 JSR $D552 C3/D418: 20 2A D4 JSR $D42A C3/D41B: 20 34 D6 JSR $D634 C3/D41E: 20 6B D6 JSR $D66B ; load credits palette assignment (clouds/airship) C3/D421: 20 62 D5 JSR $D562 C3/D424: 20 2A D4 JSR $D42A C3/D427: 4C 4C D6 JMP $D64C C3/D42A: 20 8D D6 JSR $D68D C3/D42D: A2 1A FC LDX #$FC1A ; credits layout (clouds) C3/D430: 86 F1 STX $F1 C3/D432: A9 7E LDA #$7E C3/D434: 85 F3 STA $F3 C3/D436: 4C 06 D7 JMP $D706 ; [ Load Credits Font Graphics ] C3/D439: A0 00 BA LDY #$BA00 ; C4/BA00 (ending font graphics) C3/D43C: A9 C4 LDA #$C4 C3/D43E: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/D441: 20 97 D4 JSR $D497 C3/D444: A0 00 C0 LDY #$C000 C3/D447: 84 E7 STY $E7 C3/D449: A9 7E LDA #$7E C3/D44B: 85 E9 STA $E9 C3/D44D: A0 00 0C LDY #$0C00 C3/D450: 84 EB STY $EB C3/D452: A0 00 70 LDY #$7000 C3/D455: 20 86 DD JSR $DD86 ; copy graphics to vram (2bpp -> 4bpp) C3/D458: A0 C0 87 LDY #$87C0 ; C4/87C0 (fixed-width font graphics) C3/D45B: 84 E7 STY $E7 C3/D45D: A9 C4 LDA #$C4 C3/D45F: 85 E9 STA $E9 C3/D461: A0 00 02 LDY #$0200 ; 32 tiles C3/D464: 84 EB STY $EB C3/D466: A0 00 7E LDY #$7E00 C3/D469: 20 86 DD JSR $DD86 ; copy graphics to vram (2bpp -> 4bpp) C3/D46C: 4C 6F D4 JMP $D46F ; load punctuation graphics ; [ Load Punctuation Graphics ] C3/D46F: A0 10 8C LDY #$8C10 ; "." (period) C3/D472: 84 E7 STY $E7 C3/D474: A9 C4 LDA #$C4 C3/D476: 85 E9 STA $E9 C3/D478: A0 10 00 LDY #$0010 ; 1 tile C3/D47B: 84 EB STY $EB C3/D47D: A0 A0 7F LDY #$7FA0 C3/D480: 20 86 DD JSR $DD86 ; copy graphics to vram (2bpp -> 4bpp) C3/D483: A0 B0 8F LDY #$8FB0 ; " " (space) C3/D486: 84 E7 STY $E7 C3/D488: A9 C4 LDA #$C4 C3/D48A: 85 E9 STA $E9 C3/D48C: A0 10 00 LDY #$0010 ; 1 tile C3/D48F: 84 EB STY $EB C3/D491: A0 B0 7F LDY #$7FB0 C3/D494: 4C 86 DD JMP $DD86 ; copy graphics to vram (2bpp -> 4bpp) C3/D497: 8B PHB C3/D498: A9 7E LDA #$7E C3/D49A: 48 PHA C3/D49B: AB PLB C3/D49C: A6 00 LDX $00 C3/D49E: 9B TXY C3/D49F: DA PHX C3/D4A0: 7B TDC C3/D4A1: BF 54 98 C2 LDA $C29854,X C3/D4A5: C2 20 REP #$20 C3/D4A7: 0A ASL C3/D4A8: 0A ASL C3/D4A9: 0A ASL C3/D4AA: 0A ASL C3/D4AB: AA TAX C3/D4AC: E2 20 SEP #$20 C3/D4AE: A9 10 LDA #$10 C3/D4B0: 85 E0 STA $E0 C3/D4B2: BD 00 C0 LDA $C000,X C3/D4B5: 99 00 C4 STA $C400,Y C3/D4B8: E8 INX C3/D4B9: C8 INY C3/D4BA: C6 E0 DEC $E0 C3/D4BC: D0 F4 BNE $D4B2 C3/D4BE: 7B TDC C3/D4BF: AA TAX C3/D4C0: 99 00 C4 STA $C400,Y C3/D4C3: C8 INY C3/D4C4: E8 INX C3/D4C5: E0 10 00 CPX #$0010 C3/D4C8: D0 F6 BNE $D4C0 C3/D4CA: FA PLX C3/D4CB: E8 INX C3/D4CC: E0 40 00 CPX #$0040 C3/D4CF: D0 CE BNE $D49F C3/D4D1: AB PLB C3/D4D2: 60 RTS C3/D4D3: C2 20 REP #$20 C3/D4D5: AF 06 B2 EE LDA $EEB206 C3/D4D9: A8 TAY C3/D4DA: E2 20 SEP #$20 C3/D4DC: AF 08 B2 EE LDA $EEB208 C3/D4E0: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/D4E3: 20 18 D5 JSR $D518 C3/D4E6: A0 20 1A LDY #$1A20 C3/D4E9: 84 EB STY $EB C3/D4EB: 64 ED STZ $ED C3/D4ED: 64 EE STZ $EE C3/D4EF: A0 00 40 LDY #$4000 C3/D4F2: 20 B9 DD JSR $DDB9 ; copy data/graphics to VRAM C3/D4F5: C2 20 REP #$20 C3/D4F7: AF 09 B2 EE LDA $EEB209 ; pointer to world map clouds tile formation C3/D4FB: A8 TAY C3/D4FC: E2 20 SEP #$20 C3/D4FE: AF 0B B2 EE LDA $EEB20B C3/D502: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/D505: A0 00 20 LDY #$2000 C3/D508: 84 ED STY $ED C3/D50A: 20 18 D5 JSR $D518 C3/D50D: A0 00 04 LDY #$0400 C3/D510: 84 EB STY $EB C3/D512: A0 00 50 LDY #$5000 C3/D515: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM C3/D518: A0 00 C0 LDY #$C000 C3/D51B: 84 E7 STY $E7 C3/D51D: A9 7E LDA #$7E C3/D51F: 85 E9 STA $E9 C3/D521: 60 RTS C3/D522: 20 39 D4 JSR $D439 ; load credits font graphics C3/D525: 20 B1 D6 JSR $D6B1 ; load credits graphics (clouds/airship) C3/D528: 20 D6 D6 JSR $D6D6 C3/D52B: 20 6B D6 JSR $D66B ; load credits palette assignment (clouds/airship) C3/D52E: 20 52 D5 JSR $D552 C3/D531: 20 43 D5 JSR $D543 C3/D534: 20 34 D6 JSR $D634 C3/D537: 20 6B D6 JSR $D66B ; load credits palette assignment (clouds/airship) C3/D53A: 20 62 D5 JSR $D562 C3/D53D: 20 43 D5 JSR $D543 C3/D540: 4C 4C D6 JMP $D64C C3/D543: 20 86 D6 JSR $D686 C3/D546: A2 1A FC LDX #$FC1A ; credits layout (clouds) C3/D549: 86 F1 STX $F1 C3/D54B: A9 7E LDA #$7E C3/D54D: 85 F3 STA $F3 C3/D54F: 4C 06 D7 JMP $D706 C3/D552: 64 E4 STZ $E4 C3/D554: 64 E5 STZ $E5 C3/D556: A9 80 LDA #$80 C3/D558: 85 ED STA $ED C3/D55A: A2 00 98 LDX #$9800 C3/D55D: A9 7F LDA #$7F C3/D55F: 4C 4F D7 JMP $D74F C3/D562: A2 80 00 LDX #$0080 C3/D565: 86 E4 STX $E4 C3/D567: A9 80 LDA #$80 C3/D569: 85 ED STA $ED C3/D56B: A2 00 A8 LDX #$A800 C3/D56E: A9 7F LDA #$7F C3/D570: 4C 4F D7 JMP $D74F C3/D573: 20 39 D4 JSR $D439 ; load credits font graphics C3/D576: 20 94 D6 JSR $D694 ; load credits graphics (land/sea) C3/D579: 20 D6 D6 JSR $D6D6 C3/D57C: 4C 82 D5 JMP $D582 chikei1_set1: C3/D57F: 20 94 D6 JSR $D694 ; load credits graphics (land/sea) C3/D582: 20 64 D6 JSR $D664 ; load credits palette assignment (land/sea) C3/D585: 20 52 D5 JSR $D552 ; C3/D588: 20 9B D5 JSR $D59B ; load credits tile layout (land) C3/D58B: 20 34 D6 JSR $D634 C3/D58E: 20 64 D6 JSR $D664 ; load credits palette assignment (land/sea) C3/D591: 20 62 D5 JSR $D562 C3/D594: 20 9B D5 JSR $D59B ; load credits tile layout (land) C3/D597: 20 4C D6 JSR $D64C C3/D59A: 6B RTL C3/D59B: 20 75 D6 JSR $D675 C3/D59E: A2 3A DD LDX #$DD3A ; credits layout (land) C3/D5A1: 86 F1 STX $F1 C3/D5A3: A9 7E LDA #$7E C3/D5A5: 85 F3 STA $F3 C3/D5A7: 4C 06 D7 JMP $D706 C3/D5AA: 20 39 D4 JSR $D439 ; load credits font graphics C3/D5AD: 20 94 D6 JSR $D694 ; load credits graphics (land/sea) C3/D5B0: 20 D6 D6 JSR $D6D6 C3/D5B3: 20 64 D6 JSR $D664 ; load credits palette assignment (land/sea) C3/D5B6: 20 52 D5 JSR $D552 C3/D5B9: 20 CB D5 JSR $D5CB C3/D5BC: 20 34 D6 JSR $D634 C3/D5BF: 20 64 D6 JSR $D664 ; load credits palette assignment (land/sea) C3/D5C2: 20 62 D5 JSR $D562 C3/D5C5: 20 CB D5 JSR $D5CB C3/D5C8: 4C 4C D6 JMP $D64C C3/D5CB: 20 7F D6 JSR $D67F C3/D5CE: A2 FA 2C LDX #$2CFA ; credits layout (sea) C3/D5D1: 86 F1 STX $F1 C3/D5D3: A9 7F LDA #$7F C3/D5D5: 85 F3 STA $F3 C3/D5D7: 4C 06 D7 JMP $D706 C3/D5DA: 20 39 D4 JSR $D439 ; load credits font graphics C3/D5DD: 20 94 D6 JSR $D694 ; load credits graphics (land/sea) C3/D5E0: 20 D6 D6 JSR $D6D6 C3/D5E3: 20 64 D6 JSR $D664 ; load credits palette assignment (land/sea) C3/D5E6: 20 52 D5 JSR $D552 C3/D5E9: 20 FB D5 JSR $D5FB C3/D5EC: 20 34 D6 JSR $D634 C3/D5EF: 20 64 D6 JSR $D664 ; load credits palette assignment (land/sea) C3/D5F2: 20 62 D5 JSR $D562 C3/D5F5: 20 FB D5 JSR $D5FB C3/D5F8: 4C 4C D6 JMP $D64C C3/D5FB: 20 86 D6 JSR $D686 C3/D5FE: A2 FA 2C LDX #$2CFA ; credits layout (sea) C3/D601: 86 F1 STX $F1 C3/D603: A9 7F LDA #$7F C3/D605: 85 F3 STA $F3 C3/D607: 4C 06 D7 JMP $D706 C3/D60A: 20 B1 D6 JSR $D6B1 ; load credits graphics (clouds/airship) C3/D60D: 20 6B D6 JSR $D66B ; load credits palette assignment (clouds/airship) C3/D610: 20 52 D5 JSR $D552 C3/D613: 20 25 D6 JSR $D625 C3/D616: 20 34 D6 JSR $D634 C3/D619: 20 6B D6 JSR $D66B ; load credits palette assignment (clouds/airship) C3/D61C: 20 62 D5 JSR $D562 C3/D61F: 20 25 D6 JSR $D625 C3/D622: 4C 4C D6 JMP $D64C C3/D625: 20 75 D6 JSR $D675 C3/D628: A2 1A 04 LDX #$041A ; credits layout (airship) C3/D62B: 86 F1 STX $F1 C3/D62D: A9 7F LDA #$7F C3/D62F: 85 F3 STA $F3 C3/D631: 4C 06 D7 JMP $D706 C3/D634: A0 00 B8 LDY #$B800 C3/D637: 84 E7 STY $E7 C3/D639: A9 7F LDA #$7F C3/D63B: 85 E9 STA $E9 C3/D63D: 64 ED STZ $ED C3/D63F: 64 EE STZ $EE C3/D641: A0 00 40 LDY #$4000 C3/D644: 84 EB STY $EB C3/D646: A0 00 00 LDY #$0000 C3/D649: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM C3/D64C: A0 00 B8 LDY #$B800 C3/D64F: 84 E7 STY $E7 C3/D651: A9 7F LDA #$7F C3/D653: 85 E9 STA $E9 C3/D655: 64 ED STZ $ED C3/D657: 64 EE STZ $EE C3/D659: A0 00 40 LDY #$4000 C3/D65C: 84 EB STY $EB C3/D65E: A0 00 20 LDY #$2000 C3/D661: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM ; [ Load Credits Palette Assignments (land/sea) ] C3/D664: A2 E1 F9 LDX #$F9E1 ; palette assignment C3/D667: A9 CF LDA #$CF C3/D669: 80 05 BRA $D670 ; [ Load Credits Palette Assignments (airship/clouds) ] C3/D66B: A2 69 F9 LDX #$F969 ; palette assignment C3/D66E: A9 CF LDA #$CF C3/D670: 86 91 STX $91 C3/D672: 85 93 STA $93 C3/D674: 60 RTS C3/D675: A2 E9 FA LDX #$FAE9 C3/D678: A9 CF LDA #$CF C3/D67A: 86 F7 STX $F7 C3/D67C: 85 F9 STA $F9 C3/D67E: 60 RTS C3/D67F: A2 C9 FA LDX #$FAC9 C3/D682: A9 CF LDA #$CF C3/D684: 80 F4 BRA $D67A C3/D686: A2 A9 FA LDX #$FAA9 C3/D689: A9 CF LDA #$CF C3/D68B: 80 ED BRA $D67A C3/D68D: A2 09 FB LDX #$FB09 C3/D690: A9 CF LDA #$CF C3/D692: 80 E6 BRA $D67A ; [ Load Credits Graphics (land/sea) ] C3/D694: 20 CE D6 JSR $D6CE ; load ending credits graphics data C3/D697: A2 1A 14 LDX #$141A ; credits graphics (land/sea) C3/D69A: 86 E7 STX $E7 C3/D69C: A9 7F LDA #$7F C3/D69E: 85 E9 STA $E9 C3/D6A0: A0 00 98 LDY #$9800 C3/D6A3: 84 EB STY $EB C3/D6A5: A9 7F LDA #$7F C3/D6A7: 85 ED STA $ED C3/D6A9: A0 E0 18 LDY #$18E0 C3/D6AC: 84 EF STY $EF C3/D6AE: 4C EE D6 JMP $D6EE ; [ Load Credits Graphics (clouds/airship) ] C3/D6B1: 20 CE D6 JSR $D6CE ; load ending credits graphics data C3/D6B4: A2 3A ED LDX #$ED3A ; credits graphics (clouds/airship) C3/D6B7: 86 E7 STX $E7 C3/D6B9: A9 7E LDA #$7E C3/D6BB: 85 E9 STA $E9 C3/D6BD: A0 00 98 LDY #$9800 C3/D6C0: 84 EB STY $EB C3/D6C2: A9 7F LDA #$7F C3/D6C4: 85 ED STA $ED C3/D6C6: A0 E0 0E LDY #$0EE0 C3/D6C9: 84 EF STY $EF C3/D6CB: 4C EE D6 JMP $D6EE ; [ Load Ending Credits Graphics Data ] C3/D6CE: A0 8F 56 LDY #$568F ; $D9568F (ending credits graphics data) C3/D6D1: A9 D9 LDA #$D9 C3/D6D3: 4C 61 DD JMP $DD61 ; decompress to $7EC000 C3/D6D6: A0 00 C0 LDY #$C000 C3/D6D9: 84 E7 STY $E7 C3/D6DB: A9 7E LDA #$7E C3/D6DD: 85 E9 STA $E9 C3/D6DF: A0 BA 17 LDY #$17BA ; size = $17BA C3/D6E2: 84 EB STY $EB C3/D6E4: 64 ED STZ $ED C3/D6E6: 64 EE STZ $EE C3/D6E8: A0 00 60 LDY #$6000 C3/D6EB: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM ; [ Copy Data (RAM -> RAM) ] ; ++$E7 = source address ; ++$EB = destination address ; +$EF = size ; +$F1 = constant to add to each word C3/D6EE: 64 F1 STZ $F1 C3/D6F0: 64 F2 STZ $F2 C3/D6F2: C2 20 REP #$20 C3/D6F4: A4 00 LDY $00 C3/D6F6: B7 E7 LDA [$E7],Y C3/D6F8: 18 CLC C3/D6F9: 65 F1 ADC $F1 C3/D6FB: 97 EB STA [$EB],Y C3/D6FD: C8 INY C3/D6FE: C8 INY C3/D6FF: C4 EF CPY $EF C3/D701: D0 F3 BNE $D6F6 C3/D703: E2 20 SEP #$20 C3/D705: 60 RTS C3/D706: 7B TDC C3/D707: A8 TAY C3/D708: C2 20 REP #$20 C3/D70A: B7 F7 LDA [$F7],Y C3/D70C: AA TAX C3/D70D: C8 INY C3/D70E: C8 INY C3/D70F: B7 F7 LDA [$F7],Y C3/D711: 85 E7 STA $E7 C3/D713: C8 INY C3/D714: C8 INY C3/D715: E2 20 SEP #$20 C3/D717: 5A PHY C3/D718: 9B TXY C3/D719: 20 23 D7 JSR $D723 C3/D71C: 7A PLY C3/D71D: C0 20 00 CPY #$0020 C3/D720: D0 E6 BNE $D708 C3/D722: 60 RTS C3/D723: 8B PHB C3/D724: A9 7F LDA #$7F C3/D726: 48 PHA C3/D727: AB PLB C3/D728: A9 20 LDA #$20 C3/D72A: 85 E0 STA $E0 C3/D72C: A9 20 LDA #$20 C3/D72E: 85 E1 STA $E1 C3/D730: A6 E7 LDX $E7 C3/D732: B7 F1 LDA [$F1],Y C3/D734: 9D 00 B8 STA $B800,X C3/D737: C8 INY C3/D738: E8 INX C3/D739: E8 INX C3/D73A: C6 E1 DEC $E1 C3/D73C: D0 F4 BNE $D732 C3/D73E: C2 21 REP #$21 C3/D740: A5 E7 LDA $E7 C3/D742: 69 00 01 ADC #$0100 C3/D745: 85 E7 STA $E7 C3/D747: E2 20 SEP #$20 C3/D749: C6 E0 DEC $E0 C3/D74B: D0 DF BNE $D72C C3/D74D: AB PLB C3/D74E: 60 RTS C3/D74F: 85 E9 STA $E9 C3/D751: 86 E7 STX $E7 C3/D753: 8B PHB C3/D754: A9 7F LDA #$7F C3/D756: 48 PHA C3/D757: AB PLB C3/D758: 7B TDC C3/D759: AA TAX C3/D75A: A9 08 LDA #$08 C3/D75C: 85 E6 STA $E6 C3/D75E: C2 20 REP #$20 C3/D760: A0 10 00 LDY #$0010 C3/D763: A7 E7 LDA [$E7] C3/D765: 85 F1 STA $F1 C3/D767: B7 E7 LDA [$E7],Y C3/D769: 85 EF STA $EF C3/D76B: 7B TDC C3/D76C: E2 20 SEP #$20 C3/D76E: A0 08 00 LDY #$0008 C3/D771: 7B TDC C3/D772: 06 F0 ASL $F0 C3/D774: 2A ROL C3/D775: 06 EF ASL $EF C3/D777: 2A ROL C3/D778: 06 F2 ASL $F2 C3/D77A: 2A ROL C3/D77B: 06 F1 ASL $F1 C3/D77D: 2A ROL C3/D77E: 29 0F AND #$0F C3/D780: F0 10 BEQ $D792 C3/D782: 85 E0 STA $E0 C3/D784: 5A PHY C3/D785: A4 E4 LDY $E4 C3/D787: B7 91 LDA [$91],Y C3/D789: 7A PLY C3/D78A: 0A ASL C3/D78B: 0A ASL C3/D78C: 0A ASL C3/D78D: 0A ASL C3/D78E: 29 F0 AND #$F0 C3/D790: 05 E0 ORA $E0 C3/D792: 9D 01 B8 STA $B801,X C3/D795: E8 INX C3/D796: E8 INX C3/D797: 88 DEY C3/D798: D0 D7 BNE $D771 C3/D79A: A4 E7 LDY $E7 C3/D79C: C8 INY C3/D79D: C8 INY C3/D79E: 84 E7 STY $E7 C3/D7A0: C6 E6 DEC $E6 C3/D7A2: D0 BA BNE $D75E C3/D7A4: C2 20 REP #$20 C3/D7A6: E6 E4 INC $E4 C3/D7A8: A5 E7 LDA $E7 C3/D7AA: 18 CLC C3/D7AB: 69 10 00 ADC #$0010 C3/D7AE: 85 E7 STA $E7 C3/D7B0: 7B TDC C3/D7B1: E2 20 SEP #$20 C3/D7B3: C6 ED DEC $ED C3/D7B5: D0 A3 BNE $D75A C3/D7B7: AB PLB C3/D7B8: 60 RTS ; [ Credits Text Thread (airship above water) ] C3/D7B9: 8B PHB C3/D7BA: A9 C3 LDA #$C3 C3/D7BC: 48 PHA C3/D7BD: AB PLB C3/D7BE: A4 CF LDY $CF C3/D7C0: C0 3C 00 CPY #$003C C3/D7C3: D0 03 BNE $D7C8 C3/D7C5: 20 03 DA JSR $DA03 C3/D7C8: AB PLB C3/D7C9: 38 SEC C3/D7CA: 60 RTS ; [ Credits Text Thread (tiny airship) ] C3/D7CB: 8B PHB C3/D7CC: A9 C3 LDA #$C3 C3/D7CE: 48 PHA C3/D7CF: AB PLB C3/D7D0: A4 CF LDY $CF C3/D7D2: C0 0A 00 CPY #$000A C3/D7D5: D0 05 BNE $D7DC C3/D7D7: 20 0E DA JSR $DA0E C3/D7DA: 80 3A BRA $D816 C3/D7DC: C0 AE 01 CPY #$01AE C3/D7DF: D0 05 BNE $D7E6 C3/D7E1: 20 19 DA JSR $DA19 C3/D7E4: 80 30 BRA $D816 C3/D7E6: C0 52 03 CPY #$0352 C3/D7E9: D0 05 BNE $D7F0 C3/D7EB: 20 24 DA JSR $DA24 C3/D7EE: 80 26 BRA $D816 C3/D7F0: C0 F6 04 CPY #$04F6 C3/D7F3: D0 05 BNE $D7FA C3/D7F5: 20 2F DA JSR $DA2F C3/D7F8: 80 1C BRA $D816 C3/D7FA: C0 9A 06 CPY #$069A C3/D7FD: D0 05 BNE $D804 C3/D7FF: 20 3A DA JSR $DA3A C3/D802: 80 12 BRA $D816 C3/D804: C0 3E 08 CPY #$083E C3/D807: D0 05 BNE $D80E C3/D809: 20 45 DA JSR $DA45 C3/D80C: 80 08 BRA $D816 C3/D80E: C0 E2 09 CPY #$09E2 C3/D811: D0 03 BNE $D816 C3/D813: 20 50 DA JSR $DA50 C3/D816: AB PLB C3/D817: 38 SEC C3/D818: 60 RTS ; [ Credits Text Thread (boat) ] C3/D819: 8B PHB C3/D81A: A9 C3 LDA #$C3 C3/D81C: 48 PHA C3/D81D: AB PLB C3/D81E: A4 CF LDY $CF C3/D820: C0 0A 00 CPY #$000A C3/D823: D0 05 BNE $D82A C3/D825: 20 5B DA JSR $DA5B C3/D828: 80 1C BRA $D846 C3/D82A: C0 AE 01 CPY #$01AE C3/D82D: D0 05 BNE $D834 C3/D82F: 20 66 DA JSR $DA66 C3/D832: 80 12 BRA $D846 C3/D834: C0 52 03 CPY #$0352 C3/D837: D0 05 BNE $D83E C3/D839: 20 71 DA JSR $DA71 C3/D83C: 80 08 BRA $D846 C3/D83E: C0 F6 04 CPY #$04F6 C3/D841: D0 03 BNE $D846 C3/D843: 20 7C DA JSR $DA7C C3/D846: AB PLB C3/D847: 38 SEC C3/D848: 60 RTS ; [ Credits Text Thread (airship/sea) ] C3/D849: 8B PHB C3/D84A: A9 C3 LDA #$C3 C3/D84C: 48 PHA C3/D84D: AB PLB C3/D84E: A4 CF LDY $CF C3/D850: C0 0A 00 CPY #$000A C3/D853: D0 05 BNE $D85A C3/D855: 20 87 DA JSR $DA87 C3/D858: 80 3A BRA $D894 C3/D85A: C0 AE 01 CPY #$01AE C3/D85D: D0 05 BNE $D864 C3/D85F: 20 92 DA JSR $DA92 C3/D862: 80 30 BRA $D894 C3/D864: C0 52 03 CPY #$0352 C3/D867: D0 05 BNE $D86E C3/D869: 20 9D DA JSR $DA9D C3/D86C: 80 26 BRA $D894 C3/D86E: C0 F6 04 CPY #$04F6 C3/D871: D0 05 BNE $D878 C3/D873: 20 A8 DA JSR $DAA8 C3/D876: 80 1C BRA $D894 C3/D878: C0 9A 06 CPY #$069A C3/D87B: D0 05 BNE $D882 C3/D87D: 20 B3 DA JSR $DAB3 C3/D880: 80 12 BRA $D894 C3/D882: C0 3E 08 CPY #$083E C3/D885: D0 05 BNE $D88C C3/D887: 20 BE DA JSR $DABE C3/D88A: 80 08 BRA $D894 C3/D88C: C0 E2 09 CPY #$09E2 C3/D88F: D0 03 BNE $D894 C3/D891: 20 C9 DA JSR $DAC9 C3/D894: AB PLB C3/D895: 38 SEC C3/D896: 60 RTS ; [ Credits Text Thread (airship/land) ] C3/D897: 8B PHB C3/D898: A9 C3 LDA #$C3 C3/D89A: 48 PHA C3/D89B: AB PLB C3/D89C: A4 CF LDY $CF C3/D89E: C0 0A 00 CPY #$000A C3/D8A1: D0 05 BNE $D8A8 C3/D8A3: 20 D4 DA JSR $DAD4 C3/D8A6: 80 3A BRA $D8E2 C3/D8A8: C0 AE 01 CPY #$01AE C3/D8AB: D0 05 BNE $D8B2 C3/D8AD: 20 DF DA JSR $DADF C3/D8B0: 80 30 BRA $D8E2 C3/D8B2: C0 52 03 CPY #$0352 C3/D8B5: D0 05 BNE $D8BC C3/D8B7: 20 EA DA JSR $DAEA C3/D8BA: 80 26 BRA $D8E2 C3/D8BC: C0 F6 04 CPY #$04F6 C3/D8BF: D0 05 BNE $D8C6 C3/D8C1: 20 F5 DA JSR $DAF5 C3/D8C4: 80 1C BRA $D8E2 C3/D8C6: C0 9A 06 CPY #$069A C3/D8C9: D0 05 BNE $D8D0 C3/D8CB: 20 00 DB JSR $DB00 C3/D8CE: 80 12 BRA $D8E2 C3/D8D0: C0 3E 08 CPY #$083E C3/D8D3: D0 05 BNE $D8DA C3/D8D5: 20 0B DB JSR $DB0B C3/D8D8: 80 08 BRA $D8E2 C3/D8DA: C0 E2 09 CPY #$09E2 C3/D8DD: D0 03 BNE $D8E2 C3/D8DF: 20 16 DB JSR $DB16 C3/D8E2: AB PLB C3/D8E3: 38 SEC C3/D8E4: 60 RTS ; [ Credits Text Thread (land) ] C3/D8E5: 8B PHB C3/D8E6: A9 C3 LDA #$C3 C3/D8E8: 48 PHA C3/D8E9: AB PLB C3/D8EA: A4 CF LDY $CF C3/D8EC: C0 F0 00 CPY #$00F0 C3/D8EF: D0 05 BNE $D8F6 C3/D8F1: 20 21 DB JSR $DB21 C3/D8F4: 80 3A BRA $D930 C3/D8F6: C0 D0 02 CPY #$02D0 C3/D8F9: D0 05 BNE $D900 C3/D8FB: 20 2C DB JSR $DB2C C3/D8FE: 80 30 BRA $D930 C3/D900: C0 B0 04 CPY #$04B0 C3/D903: D0 05 BNE $D90A C3/D905: 20 37 DB JSR $DB37 C3/D908: 80 26 BRA $D930 C3/D90A: C0 90 06 CPY #$0690 C3/D90D: D0 05 BNE $D914 C3/D90F: 20 42 DB JSR $DB42 C3/D912: 80 1C BRA $D930 C3/D914: C0 70 08 CPY #$0870 C3/D917: D0 05 BNE $D91E C3/D919: 20 4D DB JSR $DB4D C3/D91C: 80 12 BRA $D930 C3/D91E: C0 50 0A CPY #$0A50 C3/D921: D0 05 BNE $D928 C3/D923: 20 58 DB JSR $DB58 C3/D926: 80 08 BRA $D930 C3/D928: C0 30 0C CPY #$0C30 C3/D92B: D0 03 BNE $D930 C3/D92D: 20 63 DB JSR $DB63 C3/D930: AB PLB C3/D931: 38 SEC C3/D932: 60 RTS ; [ Credits Text Thread (big airship) ] C3/D933: 8B PHB C3/D934: A9 C3 LDA #$C3 C3/D936: 48 PHA C3/D937: AB PLB C3/D938: A4 CF LDY $CF C3/D93A: C0 3C 00 CPY #$003C C3/D93D: D0 05 BNE $D944 C3/D93F: 20 6E DB JSR $DB6E C3/D942: 80 26 BRA $D96A C3/D944: C0 E0 01 CPY #$01E0 C3/D947: D0 05 BNE $D94E C3/D949: 20 79 DB JSR $DB79 C3/D94C: 80 1C BRA $D96A C3/D94E: C0 84 03 CPY #$0384 C3/D951: D0 05 BNE $D958 C3/D953: 20 84 DB JSR $DB84 C3/D956: 80 12 BRA $D96A C3/D958: C0 28 05 CPY #$0528 C3/D95B: D0 05 BNE $D962 C3/D95D: 20 8F DB JSR $DB8F C3/D960: 80 08 BRA $D96A C3/D962: C0 CC 06 CPY #$06CC C3/D965: D0 03 BNE $D96A C3/D967: 20 9A DB JSR $DB9A C3/D96A: AB PLB C3/D96B: 38 SEC C3/D96C: 60 RTS ; [ Draw Credits Text (airship above clouds) ] C3/D96D: A2 C0 9D LDX #$9DC0 ; C2/9DC0 (Producer) C3/D970: A9 C2 LDA #$C2 C3/D972: A0 04 00 LDY #$0004 ; 1 string C3/D975: 20 F1 D9 JSR $D9F1 ; draw credits text (small font) C3/D978: A2 44 9C LDX #$9C44 ; C2/9C44 (Hironobu Sakaguchi) C3/D97B: A9 C2 LDA #$C2 C3/D97D: A0 08 00 LDY #$0008 ; 2 strings C3/D980: 4C FA D9 JMP $D9FA ; draw credits text (large font) ; [ Draw Credits Text (tiny airship) ] C3/D983: A2 C4 9D LDX #$9DC4 C3/D986: A9 C2 LDA #$C2 C3/D988: A0 28 00 LDY #$0028 C3/D98B: 20 F1 D9 JSR $D9F1 C3/D98E: A2 4C 9C LDX #$9C4C C3/D991: A9 C2 LDA #$C2 C3/D993: A0 60 00 LDY #$0060 C3/D996: 4C FA D9 JMP $D9FA ; [ Draw Credits Text (boat) ] C3/D999: A2 EC 9D LDX #$9DEC C3/D99C: A9 C2 LDA #$C2 C3/D99E: A0 18 00 LDY #$0018 C3/D9A1: 20 F1 D9 JSR $D9F1 C3/D9A4: A2 AC 9C LDX #$9CAC C3/D9A7: A9 C2 LDA #$C2 C3/D9A9: A0 40 00 LDY #$0040 C3/D9AC: 4C FA D9 JMP $D9FA ; [ Draw Credits Text (airship/sea) ] C3/D9AF: A2 04 9E LDX #$9E04 C3/D9B2: A9 C2 LDA #$C2 C3/D9B4: A0 20 00 LDY #$0020 C3/D9B7: 20 F1 D9 JSR $D9F1 C3/D9BA: A2 EC 9C LDX #$9CEC C3/D9BD: A9 C2 LDA #$C2 C3/D9BF: A0 64 00 LDY #$0064 C3/D9C2: 4C FA D9 JMP $D9FA ; [ Draw Credits Text (airship/land) ] C3/D9C5: A2 24 9E LDX #$9E24 C3/D9C8: A9 C2 LDA #$C2 C3/D9CA: A0 24 00 LDY #$0024 C3/D9CD: 20 F1 D9 JSR $D9F1 C3/D9D0: A2 50 9D LDX #$9D50 C3/D9D3: A9 C2 LDA #$C2 C3/D9D5: A0 70 00 LDY #$0070 C3/D9D8: 4C FA D9 JMP $D9FA ; [ Draw Credits Text (land) ] C3/D9DB: A2 48 9E LDX #$9E48 C3/D9DE: A9 C2 LDA #$C2 C3/D9E0: A0 E4 00 LDY #$00E4 C3/D9E3: 4C F1 D9 JMP $D9F1 ; [ Draw Credits Text (big airship) ] C3/D9E6: A2 2C 9F LDX #$9F2C C3/D9E9: A9 C2 LDA #$C2 C3/D9EB: A0 6C 00 LDY #$006C C3/D9EE: 4C F1 D9 JMP $D9F1 ; [ Draw Credits Text (small font) ] C3/D9F1: 86 4A STX $4A C3/D9F3: 85 4C STA $4C C3/D9F5: 84 4D STY $4D C3/D9F7: 4C C8 DB JMP $DBC8 ; draw credits text (small font) ; [ Draw Credits Text (large font) ] C3/D9FA: 86 4A STX $4A C3/D9FC: 85 4C STA $4C C3/D9FE: 84 4D STY $4D C3/DA00: 4C E8 DB JMP $DBE8 ; draw credits text (large font) ; [ Fade in Credits Text (producer) ] C3/DA03: A0 0C 00 LDY #$000C ; 3 strings C3/DA06: A2 94 98 LDX #$9894 ; C2/9894 (Producer Hironubo Sakaguchi) C3/DA09: A9 C2 LDA #$C2 C3/DA0B: 4C A5 DB JMP $DBA5 ; fade in credits text C3/DA0E: A0 14 00 LDY #$0014 C3/DA11: A2 A0 98 LDX #$98A0 C3/DA14: A9 C2 LDA #$C2 C3/DA16: 4C A5 DB JMP $DBA5 C3/DA19: A0 18 00 LDY #$0018 C3/DA1C: A2 B4 98 LDX #$98B4 C3/DA1F: A9 C2 LDA #$C2 C3/DA21: 4C A5 DB JMP $DBA5 C3/DA24: A0 18 00 LDY #$0018 C3/DA27: A2 CC 98 LDX #$98CC C3/DA2A: A9 C2 LDA #$C2 C3/DA2C: 4C A5 DB JMP $DBA5 C3/DA2F: A0 18 00 LDY #$0018 C3/DA32: A2 E4 98 LDX #$98E4 C3/DA35: A9 C2 LDA #$C2 C3/DA37: 4C A5 DB JMP $DBA5 C3/DA3A: A0 0C 00 LDY #$000C C3/DA3D: A2 FC 98 LDX #$98FC C3/DA40: A9 C2 LDA #$C2 C3/DA42: 4C A5 DB JMP $DBA5 C3/DA45: A0 10 00 LDY #$0010 C3/DA48: A2 08 99 LDX #$9908 C3/DA4B: A9 C2 LDA #$C2 C3/DA4D: 4C A5 DB JMP $DBA5 C3/DA50: A0 18 00 LDY #$0018 C3/DA53: A2 18 99 LDX #$9918 C3/DA56: A9 C2 LDA #$C2 C3/DA58: 4C A5 DB JMP $DBA5 C3/DA5B: A0 20 00 LDY #$0020 C3/DA5E: A2 30 99 LDX #$9930 C3/DA61: A9 C2 LDA #$C2 C3/DA63: 4C A5 DB JMP $DBA5 C3/DA66: A0 18 00 LDY #$0018 C3/DA69: A2 50 99 LDX #$9950 C3/DA6C: A9 C2 LDA #$C2 C3/DA6E: 4C A5 DB JMP $DBA5 C3/DA71: A0 18 00 LDY #$0018 C3/DA74: A2 68 99 LDX #$9968 C3/DA77: A9 C2 LDA #$C2 C3/DA79: 4C A5 DB JMP $DBA5 C3/DA7C: A0 10 00 LDY #$0010 C3/DA7F: A2 80 99 LDX #$9980 C3/DA82: A9 C2 LDA #$C2 C3/DA84: 4C A5 DB JMP $DBA5 C3/DA87: A0 10 00 LDY #$0010 C3/DA8A: A2 90 99 LDX #$9990 C3/DA8D: A9 C2 LDA #$C2 C3/DA8F: 4C A5 DB JMP $DBA5 C3/DA92: A0 14 00 LDY #$0014 C3/DA95: A2 A0 99 LDX #$99A0 C3/DA98: A9 C2 LDA #$C2 C3/DA9A: 4C A5 DB JMP $DBA5 C3/DA9D: A0 24 00 LDY #$0024 C3/DAA0: A2 B4 99 LDX #$99B4 C3/DAA3: A9 C2 LDA #$C2 C3/DAA5: 4C A5 DB JMP $DBA5 C3/DAA8: A0 24 00 LDY #$0024 C3/DAAB: A2 D8 99 LDX #$99D8 C3/DAAE: A9 C2 LDA #$C2 C3/DAB0: 4C A5 DB JMP $DBA5 C3/DAB3: A0 24 00 LDY #$0024 C3/DAB6: A2 FC 99 LDX #$99FC C3/DAB9: A9 C2 LDA #$C2 C3/DABB: 4C A5 DB JMP $DBA5 C3/DABE: A0 14 00 LDY #$0014 C3/DAC1: A2 20 9A LDX #$9A20 C3/DAC4: A9 C2 LDA #$C2 C3/DAC6: 4C A5 DB JMP $DBA5 C3/DAC9: A0 14 00 LDY #$0014 C3/DACC: A2 34 9A LDX #$9A34 C3/DACF: A9 C2 LDA #$C2 C3/DAD1: 4C A5 DB JMP $DBA5 C3/DAD4: A0 10 00 LDY #$0010 C3/DAD7: A2 48 9A LDX #$9A48 C3/DADA: A9 C2 LDA #$C2 C3/DADC: 4C A5 DB JMP $DBA5 C3/DADF: A0 18 00 LDY #$0018 C3/DAE2: A2 58 9A LDX #$9A58 C3/DAE5: A9 C2 LDA #$C2 C3/DAE7: 4C A5 DB JMP $DBA5 C3/DAEA: A0 18 00 LDY #$0018 C3/DAED: A2 70 9A LDX #$9A70 C3/DAF0: A9 C2 LDA #$C2 C3/DAF2: 4C A5 DB JMP $DBA5 C3/DAF5: A0 24 00 LDY #$0024 C3/DAF8: A2 88 9A LDX #$9A88 C3/DAFB: A9 C2 LDA #$C2 C3/DAFD: 4C A5 DB JMP $DBA5 C3/DB00: A0 18 00 LDY #$0018 C3/DB03: A2 AC 9A LDX #$9AAC C3/DB06: A9 C2 LDA #$C2 C3/DB08: 4C A5 DB JMP $DBA5 C3/DB0B: A0 18 00 LDY #$0018 C3/DB0E: A2 C4 9A LDX #$9AC4 C3/DB11: A9 C2 LDA #$C2 C3/DB13: 4C A5 DB JMP $DBA5 C3/DB16: A0 18 00 LDY #$0018 C3/DB19: A2 DC 9A LDX #$9ADC C3/DB1C: A9 C2 LDA #$C2 C3/DB1E: 4C A5 DB JMP $DBA5 C3/DB21: A0 28 00 LDY #$0028 C3/DB24: A2 F4 9A LDX #$9AF4 C3/DB27: A9 C2 LDA #$C2 C3/DB29: 4C A5 DB JMP $DBA5 C3/DB2C: A0 28 00 LDY #$0028 C3/DB2F: A2 1C 9B LDX #$9B1C C3/DB32: A9 C2 LDA #$C2 C3/DB34: 4C A5 DB JMP $DBA5 C3/DB37: A0 24 00 LDY #$0024 C3/DB3A: A2 44 9B LDX #$9B44 C3/DB3D: A9 C2 LDA #$C2 C3/DB3F: 4C A5 DB JMP $DBA5 C3/DB42: A0 20 00 LDY #$0020 C3/DB45: A2 68 9B LDX #$9B68 C3/DB48: A9 C2 LDA #$C2 C3/DB4A: 4C A5 DB JMP $DBA5 C3/DB4D: A0 18 00 LDY #$0018 C3/DB50: A2 88 9B LDX #$9B88 C3/DB53: A9 C2 LDA #$C2 C3/DB55: 4C A5 DB JMP $DBA5 C3/DB58: A0 14 00 LDY #$0014 C3/DB5B: A2 A0 9B LDX #$9BA0 C3/DB5E: A9 C2 LDA #$C2 C3/DB60: 4C A5 DB JMP $DBA5 C3/DB63: A0 24 00 LDY #$0024 C3/DB66: A2 B4 9B LDX #$9BB4 C3/DB69: A9 C2 LDA #$C2 C3/DB6B: 4C A5 DB JMP $DBA5 C3/DB6E: A0 18 00 LDY #$0018 C3/DB71: A2 D8 9B LDX #$9BD8 C3/DB74: A9 C2 LDA #$C2 C3/DB76: 4C A5 DB JMP $DBA5 C3/DB79: A0 18 00 LDY #$0018 C3/DB7C: A2 F0 9B LDX #$9BF0 C3/DB7F: A9 C2 LDA #$C2 C3/DB81: 4C A5 DB JMP $DBA5 C3/DB84: A0 14 00 LDY #$0014 C3/DB87: A2 08 9C LDX #$9C08 C3/DB8A: A9 C2 LDA #$C2 C3/DB8C: 4C A5 DB JMP $DBA5 C3/DB8F: A0 14 00 LDY #$0014 C3/DB92: A2 1C 9C LDX #$9C1C C3/DB95: A9 C2 LDA #$C2 C3/DB97: 4C A5 DB JMP $DBA5 C3/DB9A: A0 14 00 LDY #$0014 C3/DB9D: A2 30 9C LDX #$9C30 C3/DBA0: A9 C2 LDA #$C2 C3/DBA2: 4C A5 DB JMP $DBA5 ; [ Fade In Credits Text ] ; A: source bank ; +X: source address ; +Y: string count * 4 C3/DBA5: 84 FA STY $FA C3/DBA7: 86 F7 STX $F7 C3/DBA9: 85 F9 STA $F9 C3/DBAB: A4 00 LDY $00 C3/DBAD: C2 20 REP #$20 C3/DBAF: B7 F7 LDA [$F7],Y ; sprite data address (+$7E0000) C3/DBB1: AA TAX C3/DBB2: C8 INY C3/DBB3: C8 INY C3/DBB4: B7 F7 LDA [$F7],Y ; xy position C3/DBB6: 85 60 STA $60 C3/DBB8: E2 20 SEP #$20 C3/DBBA: 5A PHY C3/DBBB: 9B TXY C3/DBBC: 20 14 DC JSR $DC14 ; create credits text thread C3/DBBF: 7A PLY C3/DBC0: C8 INY ; next string C3/DBC1: C8 INY C3/DBC2: C4 FA CPY $FA C3/DBC4: D0 E7 BNE $DBAD C3/DBC6: 38 SEC C3/DBC7: 60 RTS ; [ Draw Credits Text (small font) ] ; ++$4A: source ; +$4D: string count * 4 C3/DBC8: A4 00 LDY $00 C3/DBCA: 20 08 DC JSR $DC08 C3/DBCD: C2 20 REP #$20 C3/DBCF: B7 4A LDA [$4A],Y ; source C3/DBD1: AA TAX C3/DBD2: C8 INY C3/DBD3: C8 INY C3/DBD4: B7 4A LDA [$4A],Y ; destination (+$7E0000) C3/DBD6: 85 E7 STA $E7 C3/DBD8: C8 INY C3/DBD9: C8 INY C3/DBDA: 5A PHY C3/DBDB: A4 E7 LDY $E7 C3/DBDD: E2 20 SEP #$20 C3/DBDF: 20 BC DC JSR $DCBC ; draw string (small font) C3/DBE2: 7A PLY C3/DBE3: C4 4D CPY $4D C3/DBE5: D0 E3 BNE $DBCA C3/DBE7: 60 RTS ; [ Draw Credits Text (large font) ] ; ++$4A: source ; +$4D: string count * 4 C3/DBE8: A4 00 LDY $00 C3/DBEA: 20 0E DC JSR $DC0E C3/DBED: C2 20 REP #$20 C3/DBEF: B7 4A LDA [$4A],Y ; +X = source C3/DBF1: AA TAX C3/DBF2: C8 INY C3/DBF3: C8 INY C3/DBF4: B7 4A LDA [$4A],Y ; +$E7 = destination (+$7E0000) C3/DBF6: 85 E7 STA $E7 C3/DBF8: C8 INY C3/DBF9: C8 INY C3/DBFA: 5A PHY C3/DBFB: A4 E7 LDY $E7 C3/DBFD: E2 20 SEP #$20 C3/DBFF: 20 D1 DC JSR $DCD1 ; draw string (large font) C3/DC02: 7A PLY C3/DC03: C4 4D CPY $4D C3/DC05: D0 E3 BNE $DBEA C3/DC07: 60 RTS C3/DC08: A2 00 0B LDX #$0B00 ; palette 5, msb set C3/DC0B: 86 F1 STX $F1 C3/DC0D: 60 RTS C3/DC0E: A2 00 09 LDX #$0900 ; palette 4, msb set C3/DC11: 86 F1 STX $F1 C3/DC13: 60 RTS ; [ Create Credits Text Thread ] C3/DC14: 84 F1 STY $F1 C3/DC16: 64 AF STZ $AF C3/DC18: A9 00 LDA #$00 C3/DC1A: A0 44 DC LDY #$DC44 ; credits text thread C3/DC1D: 20 73 11 JSR $1173 ; create thread C3/DC20: C2 20 REP #$20 C3/DC22: A5 F1 LDA $F1 C3/DC24: 9F C9 32 7E STA $7E32C9,X C3/DC28: A9 A4 01 LDA #$01A4 C3/DC2B: 9F 49 33 7E STA $7E3349,X ; frame counter (7.0s) C3/DC2F: E2 20 SEP #$20 C3/DC31: A9 7E LDA #$7E C3/DC33: 9F CA 35 7E STA $7E35CA,X C3/DC37: A5 60 LDA $60 C3/DC39: 9F CA 33 7E STA $7E33CA,X C3/DC3D: A5 61 LDA $61 C3/DC3F: 9F 4A 34 7E STA $7E344A,X C3/DC43: 60 RTS ; [ Credits Text Thread ] C3/DC44: AA TAX C3/DC45: 7C 48 DC JMP ($DC48,X) C3/DC48: .DW $DC4C, $DC84 ; state 0: init C3/DC4C: A6 2D LDX $2D C3/DC4E: FE 49 36 INC $3649,X C3/DC51: BD 4A 34 LDA $344A,X ; y position C3/DC54: 18 CLC C3/DC55: 69 20 ADC #$20 C3/DC57: 9D 4A 34 STA $344A,X C3/DC5A: C2 20 REP #$20 C3/DC5C: A9 80 FF LDA #$FF80 C3/DC5F: 9D 49 35 STA $3549,X ; vertical speed C3/DC62: 9E C9 34 STZ $34C9,X ; horizontal speed C3/DC65: E2 20 SEP #$20 C3/DC67: 20 06 12 JSR $1206 ; init animation thread C3/DC6A: A5 AF LDA $AF ; branch if credits palette is already faded in C3/DC6C: D0 16 BNE $DC84 C3/DC6E: 8B PHB C3/DC6F: A9 00 LDA #$00 C3/DC71: 48 PHA C3/DC72: AB PLB C3/DC73: A5 B4 LDA $B4 C3/DC75: D0 05 BNE $DC7C ; branch if not using inverse credits palette C3/DC77: 20 03 C7 JSR $C703 ; fade in inverse credits palette C3/DC7A: 80 03 BRA $DC7F C3/DC7C: 20 2A C7 JSR $C72A ; fade in normal credits palette C3/DC7F: A9 01 LDA #$01 C3/DC81: 85 AF STA $AF ; disable credits palette fade in C3/DC83: AB PLB ; state 1: update C3/DC84: A6 2D LDX $2D C3/DC86: BC 49 33 LDY $3349,X ; frame counter C3/DC89: F0 1E BEQ $DCA9 C3/DC8B: C0 64 01 CPY #$0164 ; stop scrolling after 1.067s C3/DC8E: D0 06 BNE $DC96 C3/DC90: 9E 49 35 STZ $3549,X C3/DC93: 9E 4A 35 STZ $354A,X C3/DC96: C0 80 00 CPY #$0080 ; start fade out after 4.867s C3/DC99: F0 10 BEQ $DCAB C3/DC9B: 20 C0 DE JSR $DEC0 ; update animation thread position C3/DC9E: A6 2D LDX $2D C3/DCA0: C2 20 REP #$20 C3/DCA2: DE 49 33 DEC $3349,X C3/DCA5: E2 20 SEP #$20 C3/DCA7: 38 SEC C3/DCA8: 60 RTS C3/DCA9: 18 CLC C3/DCAA: 60 RTS C3/DCAB: A5 AF LDA $AF C3/DCAD: F0 EC BEQ $DC9B ; branch if credits palette is not faded in yet C3/DCAF: 64 AF STZ $AF C3/DCB1: 8B PHB C3/DCB2: A9 00 LDA #$00 C3/DCB4: 48 PHA C3/DCB5: AB PLB C3/DCB6: 20 DC C6 JSR $C6DC ; fade out credits palette C3/DCB9: AB PLB C3/DCBA: 80 DF BRA $DC9B ; [ Draw String (small font) ] C3/DCBC: 20 31 DD JSR $DD31 ; get string length C3/DCBF: 20 25 DD JSR $DD25 C3/DCC2: 20 02 DD JSR $DD02 ; draw letter (small font) C3/DCC5: 90 09 BCC $DCD0 C3/DCC7: A5 E0 LDA $E0 C3/DCC9: 18 CLC C3/DCCA: 69 08 ADC #$08 ; increment x position C3/DCCC: 85 E0 STA $E0 C3/DCCE: 80 F2 BRA $DCC2 C3/DCD0: 60 RTS ; [ Draw String (large font) ] C3/DCD1: 20 31 DD JSR $DD31 ; get string length C3/DCD4: 20 25 DD JSR $DD25 C3/DCD7: 7B TDC C3/DCD8: A7 E7 LDA [$E7] C3/DCDA: F0 25 BEQ $DD01 ; branch if '\0' C3/DCDC: 85 E3 STA $E3 C3/DCDE: A5 E0 LDA $E0 C3/DCE0: 09 80 ORA #$80 C3/DCE2: 97 EB STA [$EB],Y ; x-position C3/DCE4: C8 INY C3/DCE5: 7B TDC C3/DCE6: 97 EB STA [$EB],Y ; y-position C3/DCE8: C8 INY C3/DCE9: 7B TDC C3/DCEA: A5 E3 LDA $E3 C3/DCEC: C2 21 REP #$21 C3/DCEE: 65 F1 ADC $F1 C3/DCF0: 97 EB STA [$EB],Y ; vhoopppm C3/DCF2: E6 E7 INC $E7 C3/DCF4: C8 INY C3/DCF5: C8 INY C3/DCF6: E2 20 SEP #$20 C3/DCF8: A5 E0 LDA $E0 C3/DCFA: 18 CLC C3/DCFB: 69 08 ADC #$08 ; increment x position C3/DCFD: 85 E0 STA $E0 C3/DCFF: 80 D6 BRA $DCD7 C3/DD01: 60 RTS ; [ Draw Letter (small font) ] C3/DD02: 7B TDC C3/DD03: A7 E7 LDA [$E7] C3/DD05: F0 1C BEQ $DD23 C3/DD07: 85 E3 STA $E3 C3/DD09: A5 E0 LDA $E0 C3/DD0B: 97 EB STA [$EB],Y C3/DD0D: C8 INY C3/DD0E: 7B TDC C3/DD0F: 97 EB STA [$EB],Y C3/DD11: C8 INY C3/DD12: 7B TDC C3/DD13: A5 E3 LDA $E3 C3/DD15: C2 21 REP #$21 C3/DD17: 65 F1 ADC $F1 C3/DD19: 97 EB STA [$EB],Y C3/DD1B: E6 E7 INC $E7 C3/DD1D: C8 INY C3/DD1E: C8 INY C3/DD1F: E2 20 SEP #$20 C3/DD21: 38 SEC C3/DD22: 60 RTS C3/DD23: 18 CLC ; clear carry if '\0' C3/DD24: 60 RTS ; [ Init String ] C3/DD25: A4 00 LDY $00 C3/DD27: 97 EB STA [$EB],Y ; string length C3/DD29: C8 INY C3/DD2A: 64 E0 STZ $E0 ; x-position C3/DD2C: 64 EF STZ $EF C3/DD2E: 64 F0 STZ $F0 C3/DD30: 60 RTS ; [ Get String Length ] C3/DD31: 86 E7 STX $E7 C3/DD33: A9 C2 LDA #$C2 C3/DD35: 85 E9 STA $E9 C3/DD37: 84 EB STY $EB C3/DD39: A9 7E LDA #$7E C3/DD3B: 85 ED STA $ED C3/DD3D: C2 21 REP #$21 C3/DD3F: A5 EB LDA $EB C3/DD41: 69 03 00 ADC #$0003 C3/DD44: 87 EB STA [$EB] C3/DD46: E6 EB INC $EB C3/DD48: E6 EB INC $EB C3/DD4A: E2 20 SEP #$20 C3/DD4C: A9 FE LDA #$FE C3/DD4E: 87 EB STA [$EB] C3/DD50: E6 EB INC $EB C3/DD52: A4 00 LDY $00 C3/DD54: BB TYX C3/DD55: B7 E7 LDA [$E7],Y ; find the end of the string C3/DD57: C8 INY C3/DD58: C9 00 CMP #$00 C3/DD5A: F0 03 BEQ $DD5F C3/DD5C: E8 INX C3/DD5D: 80 F6 BRA $DD55 C3/DD5F: 8A TXA C3/DD60: 60 RTS ; [ Decompress ] ; +Y = source address ; A = source bank C3/DD61: 84 F3 STY $F3 C3/DD63: 85 F5 STA $F5 C3/DD65: A0 00 C0 LDY #$C000 ; destination = $7EC000 C3/DD68: 84 F6 STY $F6 C3/DD6A: A9 7E LDA #$7E C3/DD6C: 85 F8 STA $F8 C3/DD6E: 22 6D FF C2 JSL $C2FF6D ; decompress C3/DD72: 60 RTS ; [ Clear VRAM ] allvram_clr_local: C3/DD73: C2 20 REP #$20 C3/DD75: 7B TDC C3/DD76: 8D 16 21 STA $2116 C3/DD79: A8 TAY C3/DD7A: 8D 18 21 STA $2118 C3/DD7D: C8 INY C3/DD7E: C0 00 80 CPY #$8000 C3/DD81: D0 F7 BNE $DD7A C3/DD83: E2 20 SEP #$20 C3/DD85: 60 RTS ; [ Copy Graphics to VRAM (2bpp -> 4bpp) ] ; +Y = VRAM address ; ++$E7 = source ; +$EB = size C3/DD86: 8C 16 21 STY $2116 C3/DD89: 7B TDC C3/DD8A: A8 TAY C3/DD8B: C2 20 REP #$20 C3/DD8D: A2 08 00 LDX #$0008 C3/DD90: B7 E7 LDA [$E7],Y ; copy first 8 words C3/DD92: 8D 18 21 STA $2118 C3/DD95: C8 INY C3/DD96: C8 INY C3/DD97: CA DEX C3/DD98: D0 F6 BNE $DD90 C3/DD9A: 9C 18 21 STZ $2118 ; clear 8 words (high bitplanes) C3/DD9D: 9C 18 21 STZ $2118 C3/DDA0: 9C 18 21 STZ $2118 C3/DDA3: 9C 18 21 STZ $2118 C3/DDA6: 9C 18 21 STZ $2118 C3/DDA9: 9C 18 21 STZ $2118 C3/DDAC: 9C 18 21 STZ $2118 C3/DDAF: 9C 18 21 STZ $2118 C3/DDB2: C4 EB CPY $EB C3/DDB4: D0 D7 BNE $DD8D C3/DDB6: E2 20 SEP #$20 C3/DDB8: 60 RTS ; [ Copy Data/Graphics to VRAM ] ; +Y = VRAM address ; ++$E7 = source ; +$EB = size ; +$ED = constant to add to each copied word C3/DDB9: C2 20 REP #$20 C3/DDBB: 98 TYA C3/DDBC: 8D 16 21 STA $2116 C3/DDBF: 7B TDC C3/DDC0: A8 TAY C3/DDC1: B7 E7 LDA [$E7],Y C3/DDC3: 18 CLC C3/DDC4: 65 ED ADC $ED C3/DDC6: 8D 18 21 STA $2118 C3/DDC9: C8 INY C3/DDCA: C8 INY C3/DDCB: C4 EB CPY $EB C3/DDCD: D0 F2 BNE $DDC1 C3/DDCF: E2 20 SEP #$20 C3/DDD1: 60 RTS ; [ Update HDMA Data for Mode 7 Variables ] C3/DDD2: 8B PHB C3/DDD3: A9 00 LDA #$00 C3/DDD5: 48 PHA C3/DDD6: AB PLB C3/DDD7: C2 20 REP #$20 C3/DDD9: A5 C3 LDA $C3 C3/DDDB: 20 76 DE JSR $DE76 ; +A = cos(A) C3/DDDE: 85 E0 STA $E0 C3/DDE0: 85 EB STA $EB C3/DDE2: A5 E0 LDA $E0 C3/DDE4: 10 04 BPL $DDEA C3/DDE6: 49 FF FF EOR #$FFFF C3/DDE9: 1A INC C3/DDEA: 85 E0 STA $E0 C3/DDEC: 4A LSR C3/DDED: 85 CB STA $CB C3/DDEF: A5 C3 LDA $C3 C3/DDF1: 20 7A DE JSR $DE7A ; +A = sin(A) C3/DDF4: 85 E0 STA $E0 C3/DDF6: 85 ED STA $ED C3/DDF8: A5 E0 LDA $E0 C3/DDFA: 10 04 BPL $DE00 C3/DDFC: 49 FF FF EOR #$FFFF C3/DDFF: 1A INC C3/DE00: 85 E0 STA $E0 C3/DE02: 4A LSR C3/DE03: 85 C9 STA $C9 C3/DE05: A0 BE 01 LDY #$01BE C3/DE08: A5 C5 LDA $C5 C3/DE0A: 85 E7 STA $E7 C3/DE0C: A5 CB LDA $CB C3/DE0E: 8D 04 42 STA $4204 C3/DE11: E2 20 SEP #$20 C3/DE13: A5 E8 LDA $E8 C3/DE15: 8D 06 42 STA $4206 C3/DE18: EA NOP C3/DE19: EA NOP C3/DE1A: EA NOP C3/DE1B: EA NOP C3/DE1C: EA NOP C3/DE1D: C2 20 REP #$20 C3/DE1F: A5 EB LDA $EB C3/DE21: 10 09 BPL $DE2C C3/DE23: AD 14 42 LDA $4214 C3/DE26: 49 FF FF EOR #$FFFF C3/DE29: 1A INC C3/DE2A: 80 03 BRA $DE2F C3/DE2C: AD 14 42 LDA $4214 C3/DE2F: 99 02 06 STA $0602,Y ; M7A and M7D C3/DE32: 99 04 06 STA $0604,Y C3/DE35: A5 C9 LDA $C9 C3/DE37: 8D 04 42 STA $4204 C3/DE3A: E2 20 SEP #$20 C3/DE3C: A5 E8 LDA $E8 C3/DE3E: 8D 06 42 STA $4206 C3/DE41: EA NOP C3/DE42: EA NOP C3/DE43: C2 20 REP #$20 C3/DE45: A5 E7 LDA $E7 C3/DE47: 38 SEC C3/DE48: E5 C7 SBC $C7 C3/DE4A: 85 E7 STA $E7 C3/DE4C: A5 ED LDA $ED C3/DE4E: 10 09 BPL $DE59 C3/DE50: AD 14 42 LDA $4214 C3/DE53: 49 FF FF EOR #$FFFF C3/DE56: 1A INC C3/DE57: 80 03 BRA $DE5C C3/DE59: AD 14 42 LDA $4214 C3/DE5C: 99 C4 07 STA $07C4,Y ; M7B C3/DE5F: 99 C6 07 STA $07C6,Y C3/DE62: 49 FF FF EOR #$FFFF C3/DE65: 1A INC C3/DE66: 99 86 09 STA $0986,Y ; M7C C3/DE69: 99 88 09 STA $0988,Y C3/DE6C: 88 DEY C3/DE6D: 88 DEY C3/DE6E: 88 DEY C3/DE6F: 88 DEY C3/DE70: 10 9A BPL $DE0C C3/DE72: E2 20 SEP #$20 C3/DE74: AB PLB C3/DE75: 60 RTS ; [ +A = cos(A) ] C3/DE76: 18 CLC C3/DE77: 69 40 00 ADC #$0040 ; [ +A = sin(A) ] C3/DE7A: 29 FF 00 AND #$00FF C3/DE7D: 0A ASL C3/DE7E: AA TAX C3/DE7F: BF 6D FC C2 LDA $C2FC6D,X ; sin/cos table (16-bit) C3/DE83: 60 RTS ; [ Generic Animation Thread w/ Counter ] C3/DE84: AA TAX C3/DE85: 7C 88 DE JMP ($DE88,X) C3/DE88: .DW $DE8C, $DE94 C3/DE8C: A6 2D LDX $2D C3/DE8E: FE 49 36 INC $3649,X C3/DE91: 20 06 12 JSR $1206 ; init animation thread C3/DE94: A6 2D LDX $2D C3/DE96: BC 49 33 LDY $3349,X ; terminate thread when counter reaches zero C3/DE99: F0 0E BEQ $DEA9 C3/DE9B: 20 C0 DE JSR $DEC0 ; update animation thread position C3/DE9E: A6 2D LDX $2D C3/DEA0: C2 20 REP #$20 C3/DEA2: DE 49 33 DEC $3349,X ; decrement counter C3/DEA5: E2 20 SEP #$20 C3/DEA7: 38 SEC C3/DEA8: 60 RTS C3/DEA9: 18 CLC C3/DEAA: 60 RTS ; [ Generic Animation Thread ] C3/DEAB: AA TAX C3/DEAC: 7C AF DE JMP ($DEAF,X) C3/DEAF: .DW $DEB3, $DEBB C3/DEB3: A6 2D LDX $2D C3/DEB5: FE 49 36 INC $3649,X C3/DEB8: 20 06 12 JSR $1206 ; init animation thread C3/DEBB: 20 C0 DE JSR $DEC0 ; update animation thread position C3/DEBE: 38 SEC C3/DEBF: 60 RTS ; [ Update Animation Thread Position ] C3/DEC0: A6 2D LDX $2D C3/DEC2: C2 21 REP #$21 C3/DEC4: BD C9 33 LDA $33C9,X ; move horizontally C3/DEC7: 7D C9 34 ADC $34C9,X C3/DECA: 9D C9 33 STA $33C9,X C3/DECD: BD 49 34 LDA $3449,X ; move vertically C3/DED0: 18 CLC C3/DED1: 7D 49 35 ADC $3549,X C3/DED4: 9D 49 34 STA $3449,X C3/DED7: E2 20 SEP #$20 C3/DED9: 20 21 12 JSR $1221 ; update animation thread C3/DEDC: 60 RTS ; [ Large Text Thread ] C3/DEDD: 85 E0 STA $E0 C3/DEDF: A5 47 LDA $47 C3/DEE1: D0 06 BNE $DEE9 C3/DEE3: A5 E0 LDA $E0 C3/DEE5: AA TAX C3/DEE6: 7C EB DE JMP ($DEEB,X) C3/DEE9: 18 CLC C3/DEEA: 60 RTS ; [ Large Text Thread Jump Table ] C3/DEEB: .DW $DEFF, $DF13, $DF1B, $DF13, $DF23, $DF13, $DF2A, $DF13 C3/DEFB: .DW $DEFD ; state 8: terminate C3/DEFD: 18 CLC C3/DEFE: 60 RTS ; state 0: init C3/DEFF: A6 2D LDX $2D C3/DF01: FE 49 36 INC $3649,X C3/DF04: C2 20 REP #$20 C3/DF06: 9E 49 35 STZ $3549,X C3/DF09: A5 85 LDA $85 C3/DF0B: 9D 49 33 STA $3349,X C3/DF0E: E2 20 SEP #$20 C3/DF10: 20 06 12 JSR $1206 ; init animation thread ; fall through ; state 1/3/5/7: wait C3/DF13: 20 4B DF JSR $DF4B ; decrement animation thread movement counter C3/DF16: 20 C0 DE JSR $DEC0 ; update animation thread position C3/DF19: 38 SEC C3/DF1A: 60 RTS ; state 2: move up (2.5 seconds) C3/DF1B: A0 C0 FF LDY #$FFC0 C3/DF1E: A2 96 00 LDX #$0096 C3/DF21: 80 0F BRA $DF32 ; state 4: don't move (4 seconds) C3/DF23: A4 00 LDY $00 C3/DF25: A2 F0 00 LDX #$00F0 C3/DF28: 80 08 BRA $DF32 ; state 6: move up (6 seconds) C3/DF2A: A0 C0 FF LDY #$FFC0 C3/DF2D: A2 2C 01 LDX #$012C C3/DF30: 80 00 BRA $DF32 C3/DF32: 84 E7 STY $E7 C3/DF34: 86 E9 STX $E9 C3/DF36: A6 2D LDX $2D C3/DF38: C2 20 REP #$20 C3/DF3A: A5 E7 LDA $E7 C3/DF3C: 9D 49 35 STA $3549,X ; vertical movement speed C3/DF3F: A5 E9 LDA $E9 C3/DF41: 9D 49 33 STA $3349,X ; movement counter C3/DF44: E2 20 SEP #$20 C3/DF46: FE 49 36 INC $3649,X ; increment state C3/DF49: 80 C8 BRA $DF13 ; [ Decrement Animation Thread Movement Counter ] C3/DF4B: A6 2D LDX $2D C3/DF4D: C2 20 REP #$20 C3/DF4F: BD 49 33 LDA $3349,X ; movement counter C3/DF52: D0 05 BNE $DF59 C3/DF54: FE 49 36 INC $3649,X ; thread state C3/DF57: 80 03 BRA $DF5C C3/DF59: DE 49 33 DEC $3349,X C3/DF5C: E2 20 SEP #$20 C3/DF5E: 60 RTS ; [ Draw Character Name ] C3/DF5F: A4 00 LDY $00 C3/DF61: 84 EB STY $EB C3/DF63: C2 20 REP #$20 C3/DF65: 98 TYA C3/DF66: 0A ASL C3/DF67: AA TAX C3/DF68: BF 69 69 C3 LDA $C36969,X ; pointers to character data C3/DF6C: A8 TAY C3/DF6D: E2 20 SEP #$20 C3/DF6F: B9 00 00 LDA $0000,Y C3/DF72: C5 28 CMP $28 ; compare character index C3/DF74: F0 23 BEQ $DF99 C3/DF76: C2 21 REP #$21 C3/DF78: A9 25 00 LDA #$0025 C3/DF7B: 65 E7 ADC $E7 C3/DF7D: 85 E7 STA $E7 C3/DF7F: E2 20 SEP #$20 C3/DF81: A4 EB LDY $EB C3/DF83: C8 INY C3/DF84: C0 10 00 CPY #$0010 C3/DF87: D0 D8 BNE $DF61 C3/DF89: A6 00 LDX $00 C3/DF8B: A9 BF LDA #$BF C3/DF8D: 9F 89 9E 7E STA $7E9E89,X C3/DF91: E8 INX C3/DF92: E0 06 00 CPX #$0006 C3/DF95: D0 F6 BNE $DF8D C3/DF97: 80 10 BRA $DFA9 C3/DF99: A6 00 LDX $00 C3/DF9B: B9 02 00 LDA $0002,Y ; character name C3/DF9E: 9F 89 9E 7E STA $7E9E89,X C3/DFA2: C8 INY C3/DFA3: E8 INX C3/DFA4: E0 06 00 CPX #$0006 C3/DFA7: D0 F2 BNE $DF9B C3/DFA9: 20 B3 DF JSR $DFB3 C3/DFAC: 20 11 A6 JSR $A611 C3/DFAF: 20 3B A6 JSR $A63B C3/DFB2: 60 RTS ; [ Calculate Character Name Position ] C3/DFB3: A6 00 LDX $00 C3/DFB5: 64 E0 STZ $E0 C3/DFB7: 64 E1 STZ $E1 C3/DFB9: 7B TDC C3/DFBA: BF 89 9E 7E LDA $7E9E89,X C3/DFBE: C9 FF CMP #$FF C3/DFC0: F0 15 BEQ $DFD7 C3/DFC2: DA PHX C3/DFC3: 38 SEC C3/DFC4: E9 60 SBC #$60 C3/DFC6: AA TAX C3/DFC7: BF C0 8F C4 LDA $C48FC0,X ; letter width C3/DFCB: 18 CLC C3/DFCC: 65 E0 ADC $E0 C3/DFCE: 85 E0 STA $E0 C3/DFD0: FA PLX C3/DFD1: E8 INX C3/DFD2: E0 06 00 CPX #$0006 C3/DFD5: D0 E2 BNE $DFB9 C3/DFD7: C2 20 REP #$20 C3/DFD9: A5 E0 LDA $E0 C3/DFDB: 4A LSR C3/DFDC: 85 E0 STA $E0 C3/DFDE: A9 80 00 LDA #$0080 C3/DFE1: 38 SEC C3/DFE2: E5 E0 SBC $E0 C3/DFE4: 49 FF FF EOR #$FFFF C3/DFE7: 1A INC C3/DFE8: 85 3D STA $3D C3/DFEA: E2 20 SEP #$20 C3/DFEC: 60 RTS ; [ Create BG1 H-Scroll Thread ] ; +Y = scroll counter C3/DFED: 84 F3 STY $F3 C3/DFEF: A9 00 LDA #$00 C3/DFF1: A0 02 E0 LDY #$E002 C3/DFF4: 20 73 11 JSR $1173 ; create thread C3/DFF7: C2 20 REP #$20 C3/DFF9: A5 F3 LDA $F3 C3/DFFB: 9F 49 33 7E STA $7E3349,X C3/DFFF: E2 20 SEP #$20 C3/E001: 60 RTS ; [ BG1 H-Scroll Thread ] C3/E002: A6 2D LDX $2D C3/E004: C2 20 REP #$20 C3/E006: BD 49 33 LDA $3349,X C3/E009: F0 13 BEQ $E01E C3/E00B: DE 49 33 DEC $3349,X C3/E00E: E2 20 SEP #$20 C3/E010: A5 23 LDA $23 C3/E012: 29 03 AND #$03 C3/E014: D0 06 BNE $E01C C3/E016: C2 20 REP #$20 C3/E018: E6 35 INC $35 C3/E01A: E2 20 SEP #$20 C3/E01C: 38 SEC C3/E01D: 60 RTS C3/E01E: E2 20 SEP #$20 C3/E020: 18 CLC C3/E021: 60 RTS ; [ Create Character Full Name Thread ] C3/E022: 7B TDC C3/E023: A5 28 LDA $28 ; character index C3/E025: 0A ASL C3/E026: 0A ASL C3/E027: 85 E0 STA $E0 C3/E029: A5 28 LDA $28 C3/E02B: 0A ASL C3/E02C: 18 CLC C3/E02D: 65 E0 ADC $E0 C3/E02F: AA TAX C3/E030: C2 20 REP #$20 C3/E032: BF E4 8D C2 LDA $C28DE4,X ; pointer to animation data (+$C20000) C3/E036: 85 4D STA $4D C3/E038: E2 20 SEP #$20 C3/E03A: BF E6 8D C2 LDA $C28DE6,X ; x position C3/E03E: 85 53 STA $53 C3/E040: C2 20 REP #$20 C3/E042: BF E7 8D C2 LDA $C28DE7,X ; pointer to animation data (+$C20000) C3/E046: 85 4F STA $4F C3/E048: E2 20 SEP #$20 C3/E04A: BF E9 8D C2 LDA $C28DE9,X ; x position C3/E04E: 85 54 STA $54 C3/E050: 20 8F E0 JSR $E08F ; create large text thread (first name) C3/E053: C2 20 REP #$20 C3/E055: A5 4D LDA $4D C3/E057: 9F C9 32 7E STA $7E32C9,X C3/E05B: E2 20 SEP #$20 C3/E05D: A9 C2 LDA #$C2 C3/E05F: 9F CA 35 7E STA $7E35CA,X C3/E063: A5 53 LDA $53 C3/E065: 9F CA 33 7E STA $7E33CA,X C3/E069: A9 D0 LDA #$D0 C3/E06B: 9F 4A 34 7E STA $7E344A,X ; y position = $D0 C3/E06F: 20 8F E0 JSR $E08F ; create large text thread (last name) C3/E072: C2 20 REP #$20 C3/E074: A5 4F LDA $4F C3/E076: 9F C9 32 7E STA $7E32C9,X C3/E07A: E2 20 SEP #$20 C3/E07C: A9 C2 LDA #$C2 C3/E07E: 9F CA 35 7E STA $7E35CA,X C3/E082: A5 54 LDA $54 C3/E084: 9F CA 33 7E STA $7E33CA,X C3/E088: A9 D0 LDA #$D0 C3/E08A: 9F 4A 34 7E STA $7E344A,X ; y position = $D0 C3/E08E: 60 RTS ; [ Create Large Text Thread ] C3/E08F: A9 01 LDA #$01 C3/E091: A0 DD DE LDY #$DEDD ; $C3DEDD (large text thread) C3/E094: 20 73 11 JSR $1173 ; create thread C3/E097: 60 RTS ; [ Create "And You" Text Thread ] C3/E098: 20 8F E0 JSR $E08F ; create large text thread C3/E09B: C2 20 REP #$20 C3/E09D: A9 AB F8 LDA #$F8AB ; $CFF8AB (animation data) C3/E0A0: 9F C9 32 7E STA $7E32C9,X C3/E0A4: E2 20 SEP #$20 C3/E0A6: A9 CF LDA #$CF C3/E0A8: 9F CA 35 7E STA $7E35CA,X C3/E0AC: A9 68 LDA #$68 ; x position = $68 C3/E0AE: 9F CA 33 7E STA $7E33CA,X C3/E0B2: A9 D0 LDA #$D0 ; y position = $D0 C3/E0B4: 9F 4A 34 7E STA $7E344A,X C3/E0B8: 60 RTS ; [ Init Ending Graphics & Palettes ] ; A = character index C3/E0B9: 85 28 STA $28 ; character index C3/E0BB: 22 8C CE D4 JSL $D4CE8C ; init hardware registers C3/E0BF: 20 3C 6A JSR $6A3C ; clear bg3 data (top left screen) C3/E0C2: 20 28 6A JSR $6A28 ; clear bg2 data (top left screen) C3/E0C5: A9 C3 LDA #$C3 C3/E0C7: A0 49 30 LDY #$3049 ; bg palette 0 C3/E0CA: A2 F4 10 LDX #$10F4 ; $C310F4 (black palette) C3/E0CD: 20 8E 0F JSR $0F8E ; load color palette C3/E0D0: A9 C3 LDA #$C3 C3/E0D2: A0 69 30 LDY #$3069 ; bg palette 1 C3/E0D5: A2 F4 10 LDX #$10F4 C3/E0D8: 20 8E 0F JSR $0F8E ; load color palette C3/E0DB: A9 C3 LDA #$C3 C3/E0DD: A0 89 30 LDY #$3089 ; bg palette 2 C3/E0E0: A2 F4 10 LDX #$10F4 C3/E0E3: 20 8E 0F JSR $0F8E ; load color palette C3/E0E6: A9 C3 LDA #$C3 C3/E0E8: A0 E9 30 LDY #$30E9 ; bg palette 5 C3/E0EB: A2 F4 10 LDX #$10F4 C3/E0EE: 20 8E 0F JSR $0F8E ; load color palette C3/E0F1: A9 C3 LDA #$C3 C3/E0F3: A0 09 31 LDY #$3109 ; bg palette 6 C3/E0F6: A2 F4 10 LDX #$10F4 C3/E0F9: 20 8E 0F JSR $0F8E ; load color palette C3/E0FC: A9 C3 LDA #$C3 C3/E0FE: A0 49 31 LDY #$3149 ; sprite palette 0 C3/E101: A2 F4 10 LDX #$10F4 C3/E104: 20 8E 0F JSR $0F8E ; load color palette C3/E107: A9 C3 LDA #$C3 C3/E109: A0 69 31 LDY #$3169 ; sprite palette 1 C3/E10C: A2 F4 10 LDX #$10F4 C3/E10F: 20 8E 0F JSR $0F8E ; load color palette C3/E112: A9 C3 LDA #$C3 C3/E114: A0 C9 31 LDY #$31C9 ; sprite palette 3 C3/E117: A2 F4 10 LDX #$10F4 C3/E11A: 20 8E 0F JSR $0F8E ; load color palette C3/E11D: 20 74 EE JSR $EE74 ; load ending font C3/E120: 4C 90 EE JMP $EE90 ; load ending graphics ; [ Draw Character Credits Text ] C3/E123: 64 47 STZ $47 C3/E125: 20 97 E8 JSR $E897 ; create "as" thread C3/E128: A9 2C LDA #$2C ; palette 3, high priority C3/E12A: 85 29 STA $29 C3/E12C: 20 5F DF JSR $DF5F ; draw character name C3/E12F: A9 01 LDA #$01 C3/E131: 14 45 TRB $45 C3/E133: 20 AC 14 JSR $14AC ; C3/E136: A9 01 LDA #$01 C3/E138: 04 45 TSB $45 ; enable dma at next vblank C3/E13A: 20 22 E0 JSR $E022 ; create character full name thread C3/E13D: 20 21 EF JSR $EF21 ; set up dma C3/E140: E6 26 INC $26 ; next cinematic state C3/E142: 4C 75 C6 JMP $C675 ; wait for vblank ; [ Fade Out Ending BG Palettes ] C3/E145: A9 C3 LDA #$C3 C3/E147: 85 ED STA $ED C3/E149: A9 04 LDA #$04 C3/E14B: A0 E9 30 LDY #$30E9 ; bg palette 5 C3/E14E: 84 E7 STY $E7 C3/E150: A2 F4 10 LDX #$10F4 C3/E153: 86 EB STX $EB C3/E155: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E158: A9 C3 LDA #$C3 C3/E15A: 85 ED STA $ED C3/E15C: A9 04 LDA #$04 C3/E15E: A0 09 31 LDY #$3109 ; bg palette 6 C3/E161: 84 E7 STY $E7 C3/E163: A2 F4 10 LDX #$10F4 C3/E166: 86 EB STX $EB C3/E168: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E16B: A9 C3 LDA #$C3 C3/E16D: 85 ED STA $ED C3/E16F: A9 04 LDA #$04 C3/E171: A0 69 30 LDY #$3069 ; bg palette 1 C3/E174: 84 E7 STY $E7 C3/E176: A2 F4 10 LDX #$10F4 C3/E179: 86 EB STX $EB C3/E17B: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E17E: A9 C3 LDA #$C3 C3/E180: 85 ED STA $ED C3/E182: A9 04 LDA #$04 C3/E184: A0 89 30 LDY #$3089 ; bg palette 2 C3/E187: 84 E7 STY $E7 C3/E189: A2 F4 10 LDX #$10F4 C3/E18C: 86 EB STX $EB C3/E18E: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E191: 60 RTS ; [ Fade In Ending BG Palettes ] C3/E192: A9 C2 LDA #$C2 C3/E194: 85 ED STA $ED C3/E196: A9 02 LDA #$02 C3/E198: A0 69 30 LDY #$3069 ; bg palette 1 C3/E19B: 84 E7 STY $E7 C3/E19D: A2 7C 96 LDX #$967C C3/E1A0: 86 EB STX $EB C3/E1A2: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E1A5: A9 C2 LDA #$C2 C3/E1A7: 85 ED STA $ED C3/E1A9: A9 02 LDA #$02 C3/E1AB: A0 89 30 LDY #$3089 ; bg palette 2 C3/E1AE: 84 E7 STY $E7 C3/E1B0: A2 9C 96 LDX #$969C C3/E1B3: 86 EB STX $EB C3/E1B5: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E1B8: A9 C2 LDA #$C2 C3/E1BA: 85 ED STA $ED C3/E1BC: A9 02 LDA #$02 C3/E1BE: A0 E9 30 LDY #$30E9 ; bg palette 5 C3/E1C1: 84 E7 STY $E7 C3/E1C3: A2 DC 96 LDX #$96DC C3/E1C6: 86 EB STX $EB C3/E1C8: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E1CB: A9 C2 LDA #$C2 C3/E1CD: 85 ED STA $ED C3/E1CF: A9 02 LDA #$02 C3/E1D1: A0 09 31 LDY #$3109 ; bg palette 6 C3/E1D4: 84 E7 STY $E7 C3/E1D6: A2 FC 96 LDX #$96FC C3/E1D9: 86 EB STX $EB C3/E1DB: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E1DE: 60 RTS ; [ ] C3/E1DF: A9 C2 LDA #$C2 C3/E1E1: 85 ED STA $ED C3/E1E3: A9 04 LDA #$04 C3/E1E5: A0 49 30 LDY #$3049 ; bg palette 0 C3/E1E8: 84 E7 STY $E7 C3/E1EA: A2 54 97 LDX #$9754 C3/E1ED: 86 EB STX $EB C3/E1EF: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E1F2: A9 C2 LDA #$C2 C3/E1F4: 85 ED STA $ED C3/E1F6: A9 04 LDA #$04 C3/E1F8: A0 69 31 LDY #$3169 ; sprite palette 1 C3/E1FB: 84 E7 STY $E7 C3/E1FD: A2 54 97 LDX #$9754 C3/E200: 86 EB STX $EB C3/E202: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E205: 60 RTS ; [ ] C3/E206: 64 CF STZ $CF C3/E208: 64 D0 STZ $D0 C3/E20A: A0 F0 00 LDY #$00F0 C3/E20D: 84 64 STY $64 C3/E20F: A9 00 LDA #$00 C3/E211: A0 B6 D1 LDY #$D1B6 ; scroll bg3 down thread C3/E214: 20 73 11 JSR $1173 ; create thread C3/E217: 20 41 E2 JSR $E241 C3/E21A: A9 C3 LDA #$C3 C3/E21C: 85 ED STA $ED C3/E21E: A9 04 LDA #$04 C3/E220: A0 69 31 LDY #$3169 C3/E223: 84 E7 STY $E7 C3/E225: A2 F4 10 LDX #$10F4 C3/E228: 86 EB STX $EB C3/E22A: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E22D: A9 C2 LDA #$C2 C3/E22F: 85 ED STA $ED C3/E231: A9 04 LDA #$04 C3/E233: A0 49 31 LDY #$3149 C3/E236: 84 E7 STY $E7 C3/E238: A2 54 97 LDX #$9754 C3/E23B: 86 EB STX $EB C3/E23D: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E240: 60 RTS ; [ Fade Out Background Palette 0 ] C3/E241: A9 C3 LDA #$C3 C3/E243: 85 ED STA $ED C3/E245: A9 04 LDA #$04 C3/E247: A0 49 30 LDY #$3049 C3/E24A: 84 E7 STY $E7 C3/E24C: A2 F4 10 LDX #$10F4 C3/E24F: 86 EB STX $EB C3/E251: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E254: 60 RTS ; [ Fade Out Sprite Palette 0 ] C3/E255: A9 C3 LDA #$C3 C3/E257: 85 ED STA $ED C3/E259: A9 04 LDA #$04 C3/E25B: A0 49 31 LDY #$3149 C3/E25E: 84 E7 STY $E7 C3/E260: A2 F4 10 LDX #$10F4 C3/E263: 86 EB STX $EB C3/E265: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E268: 60 RTS ; [ Terminate Cinematic ] C3/E269: A9 FF LDA #$FF C3/E26B: 85 26 STA $26 C3/E26D: 60 RTS ; [ Cinematic State $28: Shadow 1 ] C3/E26E: A9 03 LDA #$03 ; character 3 C3/E270: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E273: 20 48 EF JSR $EF48 C3/E276: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E279: 20 8A E2 JSR $E28A C3/E27C: 20 3F E8 JSR $E83F C3/E27F: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E282: 84 20 STY $20 C3/E284: 20 B3 E9 JSR $E9B3 C3/E287: 4C 23 E1 JMP $E123 ; draw character credits text C3/E28A: A9 C2 LDA #$C2 C3/E28C: 85 ED STA $ED C3/E28E: A9 02 LDA #$02 C3/E290: A0 C9 31 LDY #$31C9 ; sprite palette 2 C3/E293: 84 E7 STY $E7 C3/E295: A2 74 97 LDX #$9774 C3/E298: 86 EB STX $EB C3/E29A: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E29D: 60 RTS C3/E29E: A9 C3 LDA #$C3 C3/E2A0: 85 ED STA $ED C3/E2A2: A9 04 LDA #$04 C3/E2A4: A0 C9 31 LDY #$31C9 C3/E2A7: 84 E7 STY $E7 C3/E2A9: A2 F4 10 LDX #$10F4 C3/E2AC: 86 EB STX $EB C3/E2AE: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E2B1: 60 RTS ; [ Cinematic State $29: Shadow 2 ] C3/E2B2: A4 20 LDY $20 C3/E2B4: D0 0A BNE $E2C0 C3/E2B6: E6 26 INC $26 C3/E2B8: 20 DF E1 JSR $E1DF C3/E2BB: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E2BE: 84 20 STY $20 C3/E2C0: 60 RTS ; [ Cinematic State $2A: Shadow 3 ] C3/E2C1: A4 20 LDY $20 C3/E2C3: D0 0A BNE $E2CF C3/E2C5: E6 26 INC $26 C3/E2C7: 20 06 E2 JSR $E206 C3/E2CA: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E2CD: 84 20 STY $20 C3/E2CF: 60 RTS ; [ Cinematic State $2B: Shadow 4 ] C3/E2D0: A4 20 LDY $20 C3/E2D2: D0 12 BNE $E2E6 C3/E2D4: A9 38 LDA #$38 C3/E2D6: 85 26 STA $26 C3/E2D8: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E2DB: 84 20 STY $20 C3/E2DD: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E2E0: 20 9E E2 JSR $E29E C3/E2E3: 20 45 E8 JSR $E845 C3/E2E6: 60 RTS ; [ Cinematic State $38: Fade Out (character credits) ] C3/E2E7: A4 20 LDY $20 C3/E2E9: D0 0C BNE $E2F7 C3/E2EB: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E2EE: 84 20 STY $20 C3/E2F0: A9 01 LDA #$01 ; cinematic state $01 (wait for fade out) C3/E2F2: 85 26 STA $26 C3/E2F4: 20 55 E2 JSR $E255 C3/E2F7: 60 RTS ; [ Cinematic State $32: Cyan 1 ] C3/E2F8: A9 02 LDA #$02 ; character 2 C3/E2FA: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E2FD: 20 68 EF JSR $EF68 C3/E300: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E303: 20 68 E4 JSR $E468 C3/E306: A0 B8 FF LDY #$FFB8 C3/E309: 84 35 STY $35 C3/E30B: 20 39 E8 JSR $E839 C3/E30E: 20 36 EC JSR $EC36 C3/E311: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E314: 84 20 STY $20 C3/E316: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $33: Cyan 2 ] C3/E319: A4 20 LDY $20 C3/E31B: D0 0A BNE $E327 C3/E31D: E6 26 INC $26 C3/E31F: 20 DF E1 JSR $E1DF C3/E322: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E325: 84 20 STY $20 C3/E327: 60 RTS ; [ Cinematic State $34: Cyan 3 ] C3/E328: A4 20 LDY $20 C3/E32A: D0 0A BNE $E336 C3/E32C: E6 26 INC $26 C3/E32E: 20 06 E2 JSR $E206 C3/E331: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E334: 84 20 STY $20 C3/E336: 60 RTS ; [ Cinematic State $35: Cyan 4 ] C3/E337: A4 20 LDY $20 C3/E339: D0 0F BNE $E34A C3/E33B: A9 38 LDA #$38 C3/E33D: 85 26 STA $26 C3/E33F: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E342: 84 20 STY $20 C3/E344: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E347: 20 9E E2 JSR $E29E C3/E34A: 60 RTS ; [ Cinematic State $40: Edgar/Sabin 1 ] C3/E34B: A9 04 LDA #$04 ; character 4 C3/E34D: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E350: 20 7E EF JSR $EF7E ; load coin graphics (sprite) C3/E353: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E356: 20 8A E2 JSR $E28A C3/E359: 20 24 EC JSR $EC24 ; create spinning coin thread C3/E35C: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E35F: 84 20 STY $20 C3/E361: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $41: Edgar/Sabin 2 ] C3/E364: A4 20 LDY $20 C3/E366: D0 0A BNE $E372 C3/E368: E6 26 INC $26 C3/E36A: 20 DF E1 JSR $E1DF C3/E36D: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E370: 84 20 STY $20 C3/E372: 60 RTS ; [ Cinematic State $42: Edgar/Sabin 3 ] C3/E373: A4 20 LDY $20 C3/E375: D0 0A BNE $E381 C3/E377: E6 26 INC $26 C3/E379: 20 06 E2 JSR $E206 C3/E37C: A0 F0 00 LDY #$00F0 ; wait 8 seconds C3/E37F: 84 20 STY $20 C3/E381: 60 RTS ; [ Cinematic State $43: Edgar/Sabin 4 ] C3/E382: A4 20 LDY $20 C3/E384: D0 1B BNE $E3A1 C3/E386: A4 00 LDY $00 C3/E388: 84 3F STY $3F C3/E38A: A9 05 LDA #$05 ; character 5 C3/E38C: 85 28 STA $28 C3/E38E: 20 97 E8 JSR $E897 ; create "as" thread C3/E391: 20 55 E2 JSR $E255 C3/E394: 20 5F DF JSR $DF5F ; draw character name C3/E397: 20 DF E1 JSR $E1DF C3/E39A: E6 26 INC $26 C3/E39C: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E39F: 84 20 STY $20 C3/E3A1: 60 RTS ; [ Cinematic State $44: Edgar/Sabin 5 ] C3/E3A2: A4 20 LDY $20 C3/E3A4: D0 0B BNE $E3B1 C3/E3A6: A9 01 LDA #$01 C3/E3A8: 85 47 STA $47 C3/E3AA: E6 26 INC $26 C3/E3AC: A0 B4 00 LDY #$00B4 ; wait 3 seconds C3/E3AF: 84 20 STY $20 C3/E3B1: 60 RTS ; [ Cinematic State $45: Edgar/Sabin 6 ] C3/E3B2: A4 20 LDY $20 C3/E3B4: D0 16 BNE $E3CC C3/E3B6: A9 4F LDA #$4F C3/E3B8: 85 26 STA $26 C3/E3BA: A0 B4 00 LDY #$00B4 ; wait 3 seconds C3/E3BD: 84 20 STY $20 C3/E3BF: 64 47 STZ $47 C3/E3C1: A0 14 00 LDY #$0014 C3/E3C4: 84 85 STY $85 C3/E3C6: 20 22 E0 JSR $E022 C3/E3C9: 20 06 E2 JSR $E206 C3/E3CC: 60 RTS ; [ Cinematic State $4F: Edgar/Sabin 7 ] C3/E3CD: A4 20 LDY $20 C3/E3CF: D0 0F BNE $E3E0 C3/E3D1: A9 38 LDA #$38 C3/E3D3: 85 26 STA $26 C3/E3D5: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E3D8: 84 20 STY $20 C3/E3DA: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E3DD: 20 9E E2 JSR $E29E C3/E3E0: 60 RTS ; [ Cinematic State $3C: Mog 1 ] C3/E3E1: A9 0A LDA #$0A ; character 10 C3/E3E3: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E3E6: 20 A2 EF JSR $EFA2 C3/E3E9: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E3EC: 20 8A E2 JSR $E28A C3/E3EF: 20 3F E8 JSR $E83F C3/E3F2: 20 24 EA JSR $EA24 ; create dancing mini-mog thread C3/E3F5: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E3F8: 84 20 STY $20 C3/E3FA: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $3D: Mog 2 ] C3/E3FD: A4 20 LDY $20 C3/E3FF: D0 0A BNE $E40B C3/E401: E6 26 INC $26 C3/E403: 20 DF E1 JSR $E1DF C3/E406: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E409: 84 20 STY $20 C3/E40B: 60 RTS ; [ Cinematic State $3E: Mog 3 ] C3/E40C: A4 20 LDY $20 C3/E40E: D0 0A BNE $E41A C3/E410: E6 26 INC $26 C3/E412: 20 06 E2 JSR $E206 C3/E415: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E418: 84 20 STY $20 C3/E41A: 60 RTS ; [ Cinematic State $3F: Mog 4 ] C3/E41B: A4 20 LDY $20 C3/E41D: D0 12 BNE $E431 C3/E41F: A9 38 LDA #$38 C3/E421: 85 26 STA $26 C3/E423: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E426: 84 20 STY $20 C3/E428: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E42B: 20 9E E2 JSR $E29E C3/E42E: 20 45 E8 JSR $E845 C3/E431: 60 RTS ; [ Cinematic State $46: Gogo 1 ] C3/E432: A9 0C LDA #$0C ; character 12 C3/E434: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E437: 20 B8 EF JSR $EFB8 C3/E43A: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E43D: 20 39 E8 JSR $E839 C3/E440: 20 E4 E9 JSR $E9E4 C3/E443: A9 02 LDA #$02 C3/E445: A0 9F E4 LDY #$E49F C3/E448: 20 73 11 JSR $1173 ; create thread C3/E44B: A9 B4 LDA #$B4 C3/E44D: BF 49 33 7E LDA $7E3349,X C3/E451: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E454: 84 20 STY $20 C3/E456: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $47: Gogo 2 ] C3/E459: A4 20 LDY $20 C3/E45B: D0 0A BNE $E467 C3/E45D: E6 26 INC $26 C3/E45F: 20 DF E1 JSR $E1DF C3/E462: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E465: 84 20 STY $20 C3/E467: 60 RTS C3/E468: A9 C2 LDA #$C2 C3/E46A: 85 ED STA $ED C3/E46C: A9 01 LDA #$01 C3/E46E: A0 C9 31 LDY #$31C9 C3/E471: 84 E7 STY $E7 C3/E473: A2 5C 95 LDX #$955C C3/E476: 86 EB STX $EB C3/E478: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E47B: 60 RTS ; [ Cinematic State $48: Gogo 3 ] C3/E47C: A4 20 LDY $20 C3/E47E: D0 0A BNE $E48A C3/E480: E6 26 INC $26 C3/E482: 20 06 E2 JSR $E206 C3/E485: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E488: 84 20 STY $20 C3/E48A: 60 RTS ; [ Cinematic State $49: Gogo 4 ] C3/E48B: A4 20 LDY $20 C3/E48D: D0 0F BNE $E49E C3/E48F: A9 38 LDA #$38 C3/E491: 85 26 STA $26 C3/E493: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E496: 84 20 STY $20 C3/E498: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E49B: 20 9E E2 JSR $E29E C3/E49E: 60 RTS C3/E49F: AA TAX C3/E4A0: 7C A3 E4 JMP ($E4A3,X) C3/E4A3: .DW $E4AB, $E4BA, $E4AB, $E4DF C3/E4AB: A6 2D LDX $2D C3/E4AD: BD 49 33 LDA $3349,X C3/E4B0: D0 03 BNE $E4B5 C3/E4B2: FE 49 36 INC $3649,X C3/E4B5: DE 49 33 DEC $3349,X C3/E4B8: 38 SEC C3/E4B9: 60 RTS C3/E4BA: 8B PHB C3/E4BB: A9 00 LDA #$00 C3/E4BD: 48 PHA C3/E4BE: AB PLB C3/E4BF: A9 C2 LDA #$C2 C3/E4C1: 85 ED STA $ED C3/E4C3: A9 01 LDA #$01 C3/E4C5: A0 C9 31 LDY #$31C9 C3/E4C8: 84 E7 STY $E7 C3/E4CA: A2 7C 95 LDX #$957C C3/E4CD: 86 EB STX $EB C3/E4CF: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E4D2: AB PLB C3/E4D3: A6 2D LDX $2D C3/E4D5: A9 3C LDA #$3C C3/E4D7: 9D 49 33 STA $3349,X C3/E4DA: FE 49 36 INC $3649,X C3/E4DD: 38 SEC C3/E4DE: 60 RTS C3/E4DF: 8B PHB C3/E4E0: A9 00 LDA #$00 C3/E4E2: 48 PHA C3/E4E3: AB PLB C3/E4E4: A9 C3 LDA #$C3 C3/E4E6: 85 ED STA $ED C3/E4E8: A9 01 LDA #$01 C3/E4EA: A0 C9 31 LDY #$31C9 C3/E4ED: 84 E7 STY $E7 C3/E4EF: A2 F4 10 LDX #$10F4 C3/E4F2: 86 EB STX $EB C3/E4F4: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E4F7: AB PLB C3/E4F8: 18 CLC C3/E4F9: 60 RTS ; [ Cinematic State $50: Gau 1 ] C3/E4FA: A9 0B LDA #$0B ; character 11 C3/E4FC: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E4FF: 20 CE EF JSR $EFCE C3/E502: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E505: 20 8A E2 JSR $E28A C3/E508: 20 3F E8 JSR $E83F C3/E50B: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E50E: 84 20 STY $20 C3/E510: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $51: Gau 2 ] C3/E513: A4 20 LDY $20 C3/E515: D0 0A BNE $E521 C3/E517: E6 26 INC $26 C3/E519: 20 DF E1 JSR $E1DF C3/E51C: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E51F: 84 20 STY $20 C3/E521: 60 RTS ; [ Cinematic State $52: Gau 3 ] C3/E522: A4 20 LDY $20 C3/E524: D0 0D BNE $E533 C3/E526: E6 26 INC $26 C3/E528: 20 94 E9 JSR $E994 C3/E52B: 20 06 E2 JSR $E206 C3/E52E: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E531: 84 20 STY $20 C3/E533: 60 RTS ; [ Cinematic State $53: Gau 4 ] C3/E534: A4 20 LDY $20 C3/E536: D0 12 BNE $E54A C3/E538: A9 38 LDA #$38 C3/E53A: 85 26 STA $26 C3/E53C: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E53F: 84 20 STY $20 C3/E541: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E544: 20 9E E2 JSR $E29E C3/E547: 20 45 E8 JSR $E845 C3/E54A: 60 RTS ; [ Cinematic State $5A: Terra 1 ] C3/E54B: A9 00 LDA #$00 ; character 0 C3/E54D: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E550: 20 E4 EF JSR $EFE4 C3/E553: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E556: 20 68 E4 JSR $E468 C3/E559: 20 3F E8 JSR $E83F C3/E55C: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E55F: 84 20 STY $20 C3/E561: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $5B: Terra 2 ] C3/E564: A4 20 LDY $20 C3/E566: D0 0A BNE $E572 C3/E568: E6 26 INC $26 C3/E56A: 20 DF E1 JSR $E1DF C3/E56D: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E570: 84 20 STY $20 C3/E572: 60 RTS ; [ Cinematic State $5C: Terra 3 ] C3/E573: A4 20 LDY $20 C3/E575: D0 0D BNE $E584 C3/E577: E6 26 INC $26 C3/E579: 20 03 EA JSR $EA03 C3/E57C: 20 06 E2 JSR $E206 C3/E57F: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E582: 84 20 STY $20 C3/E584: 60 RTS ; [ Cinematic State $5D: Terra 4 ] C3/E585: A4 20 LDY $20 C3/E587: D0 12 BNE $E59B C3/E589: A9 38 LDA #$38 C3/E58B: 85 26 STA $26 C3/E58D: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E590: 84 20 STY $20 C3/E592: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E595: 20 9E E2 JSR $E29E C3/E598: 20 45 E8 JSR $E845 C3/E59B: 60 RTS ; [ Cinematic State $64: Locke/Celes 1 ] C3/E59C: A9 01 LDA #$01 ; character 1 C3/E59E: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E5A1: 20 FA EF JSR $EFFA C3/E5A4: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E5A7: 20 3F E8 JSR $E83F C3/E5AA: A0 E0 FF LDY #$FFE0 C3/E5AD: 84 35 STY $35 C3/E5AF: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E5B2: 84 20 STY $20 C3/E5B4: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $65: Locke/Celes 2 ] C3/E5B7: A4 20 LDY $20 C3/E5B9: D0 0A BNE $E5C5 C3/E5BB: E6 26 INC $26 C3/E5BD: 20 DF E1 JSR $E1DF C3/E5C0: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E5C3: 84 20 STY $20 C3/E5C5: 60 RTS ; [ Cinematic State $66: Locke/Celes 3 ] C3/E5C6: A4 20 LDY $20 C3/E5C8: D0 0A BNE $E5D4 C3/E5CA: E6 26 INC $26 C3/E5CC: 20 06 E2 JSR $E206 C3/E5CF: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E5D2: 84 20 STY $20 C3/E5D4: 60 RTS ; [ Cinematic State $67: Locke/Celes 4 ] C3/E5D5: A4 20 LDY $20 C3/E5D7: D0 1B BNE $E5F4 C3/E5D9: A4 00 LDY $00 C3/E5DB: 84 3F STY $3F C3/E5DD: A9 06 LDA #$06 ; character 6 C3/E5DF: 85 28 STA $28 C3/E5E1: 20 97 E8 JSR $E897 ; create "as" thread C3/E5E4: 20 55 E2 JSR $E255 C3/E5E7: 20 5F DF JSR $DF5F ; draw character name C3/E5EA: 20 DF E1 JSR $E1DF C3/E5ED: E6 26 INC $26 C3/E5EF: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E5F2: 84 20 STY $20 C3/E5F4: 60 RTS ; [ Cinematic State $68: Locke/Celes 5 ] C3/E5F5: A4 20 LDY $20 C3/E5F7: D0 0B BNE $E604 C3/E5F9: A9 01 LDA #$01 C3/E5FB: 85 47 STA $47 C3/E5FD: E6 26 INC $26 C3/E5FF: A0 B4 00 LDY #$00B4 ; wait 3 seconds C3/E602: 84 20 STY $20 C3/E604: 60 RTS ; [ Cinematic State $69: Locke/Celes 6 ] C3/E605: A4 20 LDY $20 C3/E607: D0 14 BNE $E61D C3/E609: E6 26 INC $26 C3/E60B: A0 B4 00 LDY #$00B4 ; wait 3 seconds C3/E60E: 84 20 STY $20 C3/E610: 64 47 STZ $47 C3/E612: A0 14 00 LDY #$0014 C3/E615: 84 85 STY $85 C3/E617: 20 22 E0 JSR $E022 C3/E61A: 20 06 E2 JSR $E206 C3/E61D: 60 RTS ; [ Cinematic State $6A: Locke/Celes 7 ] C3/E61E: A4 20 LDY $20 C3/E620: D0 12 BNE $E634 C3/E622: A9 38 LDA #$38 C3/E624: 85 26 STA $26 C3/E626: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E629: 84 20 STY $20 C3/E62B: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E62E: 20 9E E2 JSR $E29E C3/E631: 20 45 E8 JSR $E845 C3/E634: 60 RTS ; [ Cinematic State $6E: Relm 1 ] C3/E635: A9 08 LDA #$08 ; character 8 C3/E637: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E63A: 20 0D F0 JSR $F00D C3/E63D: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E640: 20 68 E4 JSR $E468 C3/E643: 20 3F E8 JSR $E83F C3/E646: 20 2D EC JSR $EC2D C3/E649: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E64C: 84 20 STY $20 C3/E64E: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $6F: Relm 2 ] C3/E651: A4 20 LDY $20 C3/E653: D0 0A BNE $E65F C3/E655: E6 26 INC $26 C3/E657: 20 DF E1 JSR $E1DF C3/E65A: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E65D: 84 20 STY $20 C3/E65F: 60 RTS ; [ Cinematic State $70: Relm 3 ] C3/E660: A4 20 LDY $20 C3/E662: D0 0A BNE $E66E C3/E664: E6 26 INC $26 C3/E666: 20 06 E2 JSR $E206 C3/E669: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E66C: 84 20 STY $20 C3/E66E: 60 RTS ; [ Cinematic State $71: Relm 4 ] C3/E66F: A4 20 LDY $20 C3/E671: D0 12 BNE $E685 C3/E673: A9 38 LDA #$38 C3/E675: 85 26 STA $26 C3/E677: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E67A: 84 20 STY $20 C3/E67C: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E67F: 20 9E E2 JSR $E29E C3/E682: 20 45 E8 JSR $E845 C3/E685: 60 RTS ; [ Cinematic State $78: Strago 1 ] C3/E686: A9 07 LDA #$07 ; character 7 C3/E688: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E68B: 20 23 F0 JSR $F023 C3/E68E: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E691: 20 7F ED JSR $ED7F C3/E694: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E697: 84 20 STY $20 C3/E699: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $79: Strago 2 ] C3/E69C: A4 20 LDY $20 C3/E69E: D0 0A BNE $E6AA C3/E6A0: E6 26 INC $26 C3/E6A2: 20 DF E1 JSR $E1DF C3/E6A5: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E6A8: 84 20 STY $20 C3/E6AA: 60 RTS ; [ Cinematic State $7A: Strago 3 ] C3/E6AB: A4 20 LDY $20 C3/E6AD: D0 0A BNE $E6B9 C3/E6AF: E6 26 INC $26 C3/E6B1: 20 06 E2 JSR $E206 C3/E6B4: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E6B7: 84 20 STY $20 C3/E6B9: 60 RTS ; [ Cinematic State $7B: Strago 4 ] C3/E6BA: A4 20 LDY $20 C3/E6BC: D0 0F BNE $E6CD C3/E6BE: A9 38 LDA #$38 C3/E6C0: 85 26 STA $26 C3/E6C2: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E6C5: 84 20 STY $20 C3/E6C7: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E6CA: 20 9E E2 JSR $E29E C3/E6CD: 60 RTS ; [ Cinematic State $2D: Book 1 ] C3/E6CE: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E6D1: 20 23 F0 JSR $F023 C3/E6D4: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E6D7: A0 D0 02 LDY #$02D0 ; wait 12 seconds C3/E6DA: 84 20 STY $20 C3/E6DC: 4C 3D E1 JMP $E13D ; [ Cinematic State $2E: Book 2 ] C3/E6DF: A4 20 LDY $20 C3/E6E1: D0 0A BNE $E6ED C3/E6E3: E6 26 INC $26 C3/E6E5: 20 94 ED JSR $ED94 C3/E6E8: A0 E0 01 LDY #$01E0 ; wait 8 seconds C3/E6EB: 84 20 STY $20 C3/E6ED: 60 RTS ; [ Cinematic State $2F: Book 3 ] C3/E6EE: A4 20 LDY $20 C3/E6F0: D0 07 BNE $E6F9 C3/E6F2: E6 26 INC $26 C3/E6F4: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E6F7: 84 20 STY $20 C3/E6F9: 60 RTS ; [ Cinematic State $30: Book 4 ] C3/E6FA: A4 20 LDY $20 C3/E6FC: D0 12 BNE $E710 C3/E6FE: A9 38 LDA #$38 C3/E700: 85 26 STA $26 C3/E702: 20 4B E8 JSR $E84B C3/E705: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E708: 84 20 STY $20 C3/E70A: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E70D: 20 45 E8 JSR $E845 C3/E710: 60 RTS ; [ Cinematic State $4A: "And You" 1 ] C3/E711: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E714: 20 23 F0 JSR $F023 C3/E717: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E71A: 20 A9 ED JSR $EDA9 C3/E71D: A0 B4 00 LDY #$00B4 ; wait 3 seconds C3/E720: 84 20 STY $20 C3/E722: 64 47 STZ $47 C3/E724: 20 98 E0 JSR $E098 ; create "And You" thread C3/E727: 4C 3D E1 JMP $E13D ; [ Cinematic State $4B: "And You" 2 ] C3/E72A: A4 20 LDY $20 C3/E72C: D0 07 BNE $E735 C3/E72E: E6 26 INC $26 C3/E730: A0 EC 00 LDY #$00EC ; wait 3.9 seconds C3/E733: 84 20 STY $20 C3/E735: 60 RTS ; [ Cinematic State $4C: "And You" 3 ] C3/E736: A4 20 LDY $20 C3/E738: D0 0E BNE $E748 C3/E73A: A9 01 LDA #$01 C3/E73C: 85 99 STA $99 C3/E73E: E6 26 INC $26 C3/E740: A0 6C 01 LDY #$016C ; wait 6.1 seconds C3/E743: 84 20 STY $20 C3/E745: 20 2D E2 JSR $E22D C3/E748: 60 RTS ; [ Cinematic State $4D: "And You" 4 ] C3/E749: A4 20 LDY $20 C3/E74B: D0 0F BNE $E75C C3/E74D: A9 38 LDA #$38 C3/E74F: 85 26 STA $26 C3/E751: 20 4B E8 JSR $E84B ; create screen mosaic thread C3/E754: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E757: 84 20 STY $20 C3/E759: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E75C: 60 RTS ; [ Cinematic State $82: Setzer 1 ] C3/E75D: A9 09 LDA #$09 ; character 9 C3/E75F: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E762: 20 36 F0 JSR $F036 ; load ending sprite graphics 3 C3/E765: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E768: A9 C3 LDA #$C3 C3/E76A: A0 89 31 LDY #$3189 C3/E76D: A2 F4 10 LDX #$10F4 C3/E770: 20 8E 0F JSR $0F8E ; load color palette C3/E773: A9 C2 LDA #$C2 C3/E775: 85 ED STA $ED C3/E777: A9 02 LDA #$02 C3/E779: A0 89 31 LDY #$3189 C3/E77C: 84 E7 STY $E7 C3/E77E: A2 74 97 LDX #$9774 ; C2/9774 C3/E781: 86 EB STX $EB C3/E783: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E786: 20 39 E8 JSR $E839 C3/E789: 20 E3 E8 JSR $E8E3 ; create 4 spinning card threads C3/E78C: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E78F: 84 20 STY $20 C3/E791: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $83: Setzer 2 ] C3/E794: A4 20 LDY $20 C3/E796: D0 0A BNE $E7A2 C3/E798: E6 26 INC $26 C3/E79A: 20 DF E1 JSR $E1DF C3/E79D: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E7A0: 84 20 STY $20 C3/E7A2: 60 RTS ; [ Cinematic State $84: Setzer 3 ] C3/E7A3: A4 20 LDY $20 C3/E7A5: D0 0A BNE $E7B1 C3/E7A7: E6 26 INC $26 C3/E7A9: 20 06 E2 JSR $E206 C3/E7AC: A0 68 01 LDY #$0168 ; wait 6 seconds C3/E7AF: 84 20 STY $20 C3/E7B1: 60 RTS ; [ Cinematic State $85: Setzer 4 ] C3/E7B2: A4 20 LDY $20 C3/E7B4: D0 0A BNE $E7C0 C3/E7B6: E6 26 INC $26 C3/E7B8: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E7BB: 84 20 STY $20 C3/E7BD: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E7C0: 60 RTS ; [ Cinematic State $86: Setzer 5 ] C3/E7C1: A4 20 LDY $20 C3/E7C3: D0 1F BNE $E7E4 C3/E7C5: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E7C8: 84 20 STY $20 C3/E7CA: A9 01 LDA #$01 C3/E7CC: 85 26 STA $26 C3/E7CE: 20 55 E2 JSR $E255 C3/E7D1: A9 C3 LDA #$C3 C3/E7D3: 85 ED STA $ED C3/E7D5: A9 04 LDA #$04 C3/E7D7: A0 89 31 LDY #$3189 C3/E7DA: 84 E7 STY $E7 C3/E7DC: A2 F4 10 LDX #$10F4 C3/E7DF: 86 EB STX $EB C3/E7E1: 20 AA 0F JSR $0FAA ; create palette fade in/out thread C3/E7E4: 60 RTS ; [ Cinematic State $87: Umaro 1 ] C3/E7E5: A9 0D LDA #$0D ; character 13 C3/E7E7: 20 B9 E0 JSR $E0B9 ; init ending graphics & palettes C3/E7EA: 20 72 F0 JSR $F072 ; load skull graphics (sprite) C3/E7ED: 20 92 E1 JSR $E192 ; fade in ending bg palettes C3/E7F0: 20 8A E2 JSR $E28A C3/E7F3: 20 3F E8 JSR $E83F C3/E7F6: 20 C4 E8 JSR $E8C4 ; create skull thread C3/E7F9: 20 7C EA JSR $EA7C ; create walking mini-mog threads C3/E7FC: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E7FF: 84 20 STY $20 C3/E801: 4C 23 E1 JMP $E123 ; draw character credits text ; [ Cinematic State $88: Umaro 2 ] C3/E804: A4 20 LDY $20 C3/E806: D0 0A BNE $E812 C3/E808: E6 26 INC $26 C3/E80A: 20 DF E1 JSR $E1DF C3/E80D: A0 F0 00 LDY #$00F0 ; wait 4 seconds C3/E810: 84 20 STY $20 C3/E812: 60 RTS ; [ Cinematic State $89: Umaro 3 ] C3/E813: A4 20 LDY $20 C3/E815: D0 0A BNE $E821 C3/E817: E6 26 INC $26 C3/E819: 20 06 E2 JSR $E206 C3/E81C: A0 68 01 LDY #$0168 ; wait 12 seconds C3/E81F: 84 20 STY $20 C3/E821: 60 RTS ; [ Cinematic State $8A: Umaro 4 ] C3/E822: A4 20 LDY $20 C3/E824: D0 12 BNE $E838 C3/E826: A9 38 LDA #$38 C3/E828: 85 26 STA $26 C3/E82A: A0 78 00 LDY #$0078 ; wait 2 seconds C3/E82D: 84 20 STY $20 C3/E82F: 20 45 E1 JSR $E145 ; fade out ending bg palettes C3/E832: 20 9E E2 JSR $E29E C3/E835: 20 45 E8 JSR $E845 C3/E838: 60 RTS ; [ H-Scroll BG1 1200 Pixels ] C3/E839: A0 B0 04 LDY #$04B0 C3/E83C: 4C ED DF JMP $DFED ; create bg1 h-scroll thread ; [ H-Scroll BG1 312 Pixels ] C3/E83F: A0 38 01 LDY #$0138 C3/E842: 4C ED DF JMP $DFED ; create bg1 h-scroll thread ; [ H-Scroll BG1 180 Pixels ] C3/E845: A0 B4 00 LDY #$00B4 C3/E848: 4C ED DF JMP $DFED ; create bg1 h-scroll thread ; [ Create Screen Mosaic Thread ] C3/E84B: 7B TDC C3/E84C: A0 52 E8 LDY #$E852 C3/E84F: 4C 73 11 JMP $1173 ; create thread ; [ Screen Mosaic Thread ] C3/E852: AA TAX C3/E853: 7C 56 E8 JMP ($E856,X) C3/E856: .DW $E85A, $E865 C3/E85A: A6 2D LDX $2D C3/E85C: FE 49 36 INC $3649,X ; increment thread state C3/E85F: 9E CA 33 STZ $33CA,X C3/E862: 9E 49 33 STZ $3349,X C3/E865: A6 2D LDX $2D C3/E867: BD 49 33 LDA $3349,X ; decrement counter C3/E86A: F0 05 BEQ $E871 C3/E86C: DE 49 33 DEC $3349,X C3/E86F: 38 SEC C3/E870: 60 RTS C3/E871: BD CA 33 LDA $33CA,X C3/E874: 09 0F ORA #$0F C3/E876: 85 B5 STA $B5 ; screen mosaic C3/E878: A6 2D LDX $2D C3/E87A: BD CA 33 LDA $33CA,X C3/E87D: 18 CLC C3/E87E: 69 10 ADC #$10 C3/E880: 9D CA 33 STA $33CA,X C3/E883: A9 10 LDA #$10 C3/E885: 9D 49 33 STA $3349,X C3/E888: 38 SEC C3/E889: 60 RTS C3/E88A: A5 23 LDA $23 C3/E88C: 29 03 AND #$03 C3/E88E: D0 06 BNE $E896 C3/E890: C2 20 REP #$20 C3/E892: E6 35 INC $35 C3/E894: E2 20 SEP #$20 C3/E896: 60 RTS ; [ Create "as" Thread ] C3/E897: A9 03 LDA #$03 C3/E899: A0 84 DE LDY #$DE84 ; generic animation thread w/ counter C3/E89C: 20 73 11 JSR $1173 ; create thread C3/E89F: C2 20 REP #$20 C3/E8A1: A9 38 8E LDA #$8E38 ; $C28E38 (animation data) C3/E8A4: 9F C9 32 7E STA $7E32C9,X C3/E8A8: A9 58 02 LDA #$0258 ; terminat after 10 seconds C3/E8AB: 9F 49 33 7E STA $7E3349,X C3/E8AF: E2 20 SEP #$20 C3/E8B1: A9 C2 LDA #$C2 C3/E8B3: 9F CA 35 7E STA $7E35CA,X C3/E8B7: A9 79 LDA #$79 C3/E8B9: 9F CA 33 7E STA $7E33CA,X ; x = $79 C3/E8BD: A9 C0 LDA #$C0 C3/E8BF: 9F 4A 34 7E STA $7E344A,X ; y = $C0 C3/E8C3: 60 RTS ; [ Create Skull Thread ] ; umaro C3/E8C4: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/E8C7: C2 20 REP #$20 C3/E8C9: A9 6E F5 LDA #$F56E ; CF/F56E (skull) C3/E8CC: 9F C9 32 7E STA $7E32C9,X C3/E8D0: E2 20 SEP #$20 C3/E8D2: A9 CF LDA #$CF C3/E8D4: 9F CA 35 7E STA $7E35CA,X C3/E8D8: A9 C4 LDA #$C4 C3/E8DA: 9F CA 33 7E STA $7E33CA,X C3/E8DE: A9 4F LDA #$4F C3/E8E0: 4C 68 EA JMP $EA68 ; [ Create Four Spinning Card Threads ] ; setzer C3/E8E3: 20 7A E9 JSR $E97A ; first card C3/E8E6: A9 78 LDA #$78 C3/E8E8: 9F CA 33 7E STA $7E33CA,X C3/E8EC: A9 50 LDA #$50 C3/E8EE: 9F CA 33 7E STA $7E33CA,X C3/E8F2: C2 20 REP #$20 C3/E8F4: A9 80 00 LDA #$0080 C3/E8F7: 9F 49 35 7E STA $7E3549,X C3/E8FB: A9 20 00 LDA #$0020 C3/E8FE: 9F C9 34 7E STA $7E34C9,X C3/E902: E2 20 SEP #$20 C3/E904: 20 7A E9 JSR $E97A ; second card C3/E907: A9 04 LDA #$04 C3/E909: 9F CA 36 7E STA $7E36CA,X C3/E90D: A9 48 LDA #$48 C3/E90F: 9F CA 33 7E STA $7E33CA,X C3/E913: A9 C0 LDA #$C0 C3/E915: 9F 4A 34 7E STA $7E344A,X C3/E919: C2 20 REP #$20 C3/E91B: A9 60 00 LDA #$0060 C3/E91E: 9F 49 35 7E STA $7E3549,X C3/E922: A9 40 00 LDA #$0040 C3/E925: 9F C9 34 7E STA $7E34C9,X C3/E929: E2 20 SEP #$20 C3/E92B: 20 7A E9 JSR $E97A ; third card C3/E92E: A9 0C LDA #$0C C3/E930: 9F CA 36 7E STA $7E36CA,X C3/E934: A9 98 LDA #$98 C3/E936: 9F CA 33 7E STA $7E33CA,X C3/E93A: A9 10 LDA #$10 C3/E93C: 9F 4A 34 7E STA $7E344A,X C3/E940: C2 20 REP #$20 C3/E942: A9 80 00 LDA #$0080 C3/E945: 9F 49 35 7E STA $7E3549,X C3/E949: A9 E0 FF LDA #$FFE0 C3/E94C: 9F C9 34 7E STA $7E34C9,X C3/E950: E2 20 SEP #$20 C3/E952: 20 7A E9 JSR $E97A ; fourth card C3/E955: A9 12 LDA #$12 C3/E957: 9F CA 36 7E STA $7E36CA,X C3/E95B: A9 D0 LDA #$D0 C3/E95D: 9F CA 33 7E STA $7E33CA,X C3/E961: A9 80 LDA #$80 C3/E963: 9F 4A 34 7E STA $7E344A,X C3/E967: C2 20 REP #$20 C3/E969: A9 80 00 LDA #$0080 C3/E96C: 9F 49 35 7E STA $7E3549,X C3/E970: A9 A0 00 LDA #$00A0 C3/E973: 9F C9 34 7E STA $7E34C9,X C3/E977: E2 20 SEP #$20 C3/E979: 60 RTS ; [ Create Spinning Card Thread ] C3/E97A: A9 00 LDA #$00 C3/E97C: A0 AB DE LDY #$DEAB ; generic animation thread C3/E97F: 20 73 11 JSR $1173 ; create thread C3/E982: C2 20 REP #$20 C3/E984: A9 FA 92 LDA #$92FA ; C2/92FA (spinning card animation data) C3/E987: 9F C9 32 7E STA $7E32C9,X C3/E98B: E2 20 SEP #$20 C3/E98D: A9 C2 LDA #$C2 C3/E98F: 9F CA 35 7E STA $7E35CA,X C3/E993: 60 RTS C2/92FA: 93F7 06 ; sprite data at C2/93F7, show for 6 frames (0.1s) 9482 06 93C6 06 938D 06 9354 06 9327 06 9354 06 938D 06 93C6 06 9482 06 93F7 06 9420 06 9461 0C 9420 06 9420 FF ; FF means repeat (FE means terminate) C2/9327: 0B ; 11 sprites 10 00 02 34 ; x=10, y=0, m=2, pal=2, priority=3, no flip 98 00 03 34 ; msb set means 16x16 sprite 88 08 11 34 98 10 23 34 28 08 15 34 00 18 30 34 08 18 31 34 10 18 32 34 08 20 01 34 10 20 05 34 18 20 06 34 C2/9354: 0E 10 00 07 34 08 08 16 34 10 08 17 34 88 10 26 34 00 18 35 34 08 20 09 34 10 20 0C 34 18 20 07 F4 20 18 16 F4 18 18 17 F4 98 08 26 F4 28 08 35 F4 20 00 09 F4 18 00 0C F4 C2/938D: 0E 18 00 08 34 18 08 18 34 20 08 19 34 18 10 28 34 20 10 29 34 18 18 38 34 18 20 20 34 10 20 08 F4 10 18 18 F4 08 18 19 F4 10 10 28 F4 08 10 29 F4 10 08 38 F4 10 00 20 F4 C2/93C6: 0C 10 00 0A 34 10 08 1A 34 10 10 2A 34 08 18 39 34 10 18 3A 34 10 20 25 34 18 20 0A F4 18 18 1A F4 18 10 2A F4 20 08 39 F4 18 08 3A F4 18 00 25 F4 C2/93F7: 0A 18 00 0B 34 18 08 1B 34 18 10 2B 34 18 18 3B 34 18 20 1C 34 10 20 0B F4 10 18 1B F4 10 10 2B F4 10 08 3B F4 10 00 1C F4 C2/9420: 10 10 00 0D 34 10 08 1D 34 08 10 2C 34 10 10 2D 34 08 18 3C 34 10 18 3D 34 08 20 40 34 10 20 41 34 18 20 0D F4 18 18 1D F4 20 10 2C F4 18 10 2D F4 20 08 3C F4 18 08 3D F4 20 00 40 F4 18 00 41 F4 C2/9461: 08 98 00 0E 34 98 10 2E 34 28 08 43 34 18 20 42 34 88 18 0E F4 88 08 2E F4 00 18 43 F4 10 00 42 F4 C2/9482: 05 12 00 00 34 12 08 10 34 12 10 10 34 12 18 10 34 12 20 10 34 ; [ Create Eyes Thread ] ; gau C3/E994: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/E997: C2 20 REP #$20 C3/E999: A9 47 F6 LDA #$F647 ; CF/F647 (eyes sprite data) C3/E99C: 9F C9 32 7E STA $7E32C9,X C3/E9A0: E2 20 SEP #$20 C3/E9A2: A9 CF LDA #$CF C3/E9A4: 9F CA 35 7E STA $7E35CA,X C3/E9A8: A9 CB LDA #$CB C3/E9AA: 9F CA 33 7E STA $7E33CA,X C3/E9AE: A9 5F LDA #$5F C3/E9B0: 4C 68 EA JMP $EA68 ; [ Create Apple Thread ] ; shadow C3/E9B3: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/E9B6: C2 20 REP #$20 C3/E9B8: A9 97 94 LDA #$9497 ; $C29497 (animation data) C3/E9BB: 9F C9 32 7E STA $7E32C9,X C3/E9BF: E2 20 SEP #$20 C3/E9C1: A9 C2 LDA #$C2 C3/E9C3: 9F CA 35 7E STA $7E35CA,X C3/E9C7: A9 C0 LDA #$C0 C3/E9C9: 9F CA 33 7E STA $7E33CA,X C3/E9CD: A9 57 LDA #$57 C3/E9CF: 4C 68 EA JMP $EA68 ; [ Create Generic Animation Thread ] objstd_link: C3/E9D2: A9 03 LDA #$03 C3/E9D4: A0 AB DE LDY #$DEAB ; generic animation thread C3/E9D7: 20 73 11 JSR $1173 ; create thread C3/E9DA: 60 RTS ; [ Create Generic Animation Thread (priority 2) ] C3/E9DB: A9 02 LDA #$02 C3/E9DD: A0 AB DE LDY #$DEAB ; generic animation thread C3/E9E0: 20 73 11 JSR $1173 ; create thread C3/E9E3: 60 RTS C3/E9E4: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/E9E7: C2 20 REP #$20 C3/E9E9: A9 50 F4 LDA #$F450 ; CF/F450 (gogo glimmer) C3/E9EC: 9F C9 32 7E STA $7E32C9,X C3/E9F0: E2 20 SEP #$20 C3/E9F2: A9 CF LDA #$CF C3/E9F4: 9F CA 35 7E STA $7E35CA,X C3/E9F8: A9 C8 LDA #$C8 C3/E9FA: 9F CA 33 7E STA $7E33CA,X C3/E9FE: A9 61 LDA #$61 C3/EA00: 4C 68 EA JMP $EA68 C3/EA03: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/EA06: C2 20 REP #$20 C3/EA08: A9 B4 F5 LDA #$F5B4 ; CF/F5B4 (paintbrush glimmer) C3/EA0B: 9F C9 32 7E STA $7E32C9,X C3/EA0F: E2 20 SEP #$20 C3/EA11: A9 CF LDA #$CF C3/EA13: 9F CA 35 7E STA $7E35CA,X C3/EA17: A9 80 LDA #$80 C3/EA19: 9F CA 33 7E STA $7E33CA,X C3/EA1D: A9 60 LDA #$60 C3/EA1F: 9F 4A 34 7E STA $7E344A,X C3/EA23: 60 RTS ; [ Create Dancing Mini-Mog Thread ] ; mog C3/EA24: 20 D2 E9 JSR $E9D2 ; create generic animation thread C3/EA27: C2 20 REP #$20 C3/EA29: A9 15 F5 LDA #$F515 ; CF/F515 (sprite animation data) C3/EA2C: 9F C9 32 7E STA $7E32C9,X C3/EA30: E2 20 SEP #$20 C3/EA32: A9 CF LDA #$CF C3/EA34: 9F CA 35 7E STA $7E35CA,X C3/EA38: A9 E0 LDA #$E0 C3/EA3A: 9F CA 33 7E STA $7E33CA,X C3/EA3E: A9 6F LDA #$6F C3/EA40: 20 68 EA JSR $EA68 C3/EA43: 20 73 EA JSR $EA73 C3/EA46: A9 BA LDA #$BA C3/EA48: 9F CA 33 7E STA $7E33CA,X C3/EA4C: 20 73 EA JSR $EA73 C3/EA4F: A9 C6 LDA #$C6 C3/EA51: 9F CA 33 7E STA $7E33CA,X C3/EA55: 20 73 EA JSR $EA73 C3/EA58: A9 D1 LDA #$D1 C3/EA5A: 9F CA 33 7E STA $7E33CA,X C3/EA5E: 20 73 EA JSR $EA73 C3/EA61: A9 DC LDA #$DC C3/EA63: 9F CA 33 7E STA $7E33CA,X C3/EA67: 60 RTS C3/EA68: 9F 4A 34 7E STA $7E344A,X C3/EA6C: A9 01 LDA #$01 C3/EA6E: 9F 4A 36 7E STA $7E364A,X C3/EA72: 60 RTS C3/EA73: A9 02 LDA #$02 C3/EA75: A0 FC EA LDY #$EAFC C3/EA78: 20 73 11 JSR $1173 ; create thread C3/EA7B: 60 RTS ; [ Create Walking Mini-Mog Threads ] ; umaro C3/EA7C: 20 73 EA JSR $EA73 C3/EA7F: 20 F5 EA JSR $EAF5 C3/EA82: A9 3A LDA #$3A C3/EA84: 9F CA 33 7E STA $7E33CA,X C3/EA88: C2 20 REP #$20 C3/EA8A: A9 A4 01 LDA #$01A4 C3/EA8D: 9F 49 33 7E STA $7E3349,X C3/EA91: A9 7F F4 LDA #$F47F ; CF/F47F C3/EA94: 9F C9 37 7E STA $7E37C9,X C3/EA98: E2 20 SEP #$20 C3/EA9A: 20 73 EA JSR $EA73 C3/EA9D: 20 F5 EA JSR $EAF5 C3/EAA0: A9 2E LDA #$2E C3/EAA2: 9F CA 33 7E STA $7E33CA,X C3/EAA6: C2 20 REP #$20 C3/EAA8: A9 B8 01 LDA #$01B8 C3/EAAB: 9F 49 33 7E STA $7E3349,X C3/EAAF: A9 85 F4 LDA #$F485 ; CF/F485 C3/EAB2: 9F C9 37 7E STA $7E37C9,X C3/EAB6: E2 20 SEP #$20 C3/EAB8: 20 73 EA JSR $EA73 C3/EABB: 20 F5 EA JSR $EAF5 C3/EABE: A9 21 LDA #$21 C3/EAC0: 9F CA 33 7E STA $7E33CA,X C3/EAC4: C2 20 REP #$20 C3/EAC6: A9 CC 01 LDA #$01CC C3/EAC9: 9F 49 33 7E STA $7E3349,X C3/EACD: A9 8B F4 LDA #$F48B ; CF/F48B C3/EAD0: 9F C9 37 7E STA $7E37C9,X C3/EAD4: E2 20 SEP #$20 C3/EAD6: 20 73 EA JSR $EA73 C3/EAD9: 20 F5 EA JSR $EAF5 C3/EADC: A9 14 LDA #$14 C3/EADE: 9F CA 33 7E STA $7E33CA,X C3/EAE2: C2 20 REP #$20 C3/EAE4: A9 E0 01 LDA #$01E0 C3/EAE7: 9F 49 33 7E STA $7E3349,X C3/EAEB: A9 91 F4 LDA #$F491 ; CF/F491 C3/EAEE: 9F C9 37 7E STA $7E37C9,X C3/EAF2: E2 20 SEP #$20 C3/EAF4: 60 RTS C3/EAF5: A9 05 LDA #$05 C3/EAF7: 9F 49 36 7E STA $7E3649,X C3/EAFB: 60 RTS C3/EAFC: AA TAX C3/EAFD: 7C 00 EB JMP ($EB00,X) C3/EB00: .DW $EB10, $EB35, $EB5E, $EB7B, $EB97, $EB9C, $EBA9, $EBD0 C3/EB10: A6 2D LDX $2D C3/EB12: FE 49 36 INC $3649,X C3/EB15: C2 20 REP #$20 C3/EB17: A9 58 F4 LDA #$F458 ; $CFF458 (walking mini-mog animation data) C3/EB1A: 9D C9 32 STA $32C9,X C3/EB1D: A9 68 01 LDA #$0168 C3/EB20: 9D 49 33 STA $3349,X C3/EB23: E2 20 SEP #$20 C3/EB25: A9 64 LDA #$64 C3/EB27: 9D 4A 34 STA $344A,X C3/EB2A: A9 CF LDA #$CF C3/EB2C: 9D CA 35 STA $35CA,X C3/EB2F: 20 6C EA JSR $EA6C C3/EB32: 20 06 12 JSR $1206 ; init animation thread C3/EB35: A6 2D LDX $2D C3/EB37: BC 49 33 LDY $3349,X C3/EB3A: D0 1A BNE $EB56 C3/EB3C: FE 49 36 INC $3649,X C3/EB3F: C2 20 REP #$20 C3/EB41: A9 7C F4 LDA #$F47C ; CF/F47C C3/EB44: 9D C9 32 STA $32C9,X C3/EB47: E2 20 SEP #$20 C3/EB49: A9 CF LDA #$CF C3/EB4B: 9D CA 35 STA $35CA,X C3/EB4E: A9 10 LDA #$10 C3/EB50: 9D 49 33 STA $3349,X C3/EB53: 20 06 12 JSR $1206 ; init animation thread C3/EB56: 20 E5 CF JSR $CFE5 C3/EB59: 20 C0 DE JSR $DEC0 ; update animation thread position C3/EB5C: 38 SEC C3/EB5D: 60 RTS C3/EB5E: A6 2D LDX $2D C3/EB60: BC 49 33 LDY $3349,X C3/EB63: D0 08 BNE $EB6D C3/EB65: FE 49 36 INC $3649,X C3/EB68: A9 3C LDA #$3C C3/EB6A: 9D 49 33 STA $3349,X C3/EB6D: 20 E5 CF JSR $CFE5 C3/EB70: 20 F0 EB JSR $EBF0 C3/EB73: 20 C0 DE JSR $DEC0 ; update animation thread position C3/EB76: FE C9 35 INC $35C9,X C3/EB79: 38 SEC C3/EB7A: 60 RTS C3/EB7B: A6 2D LDX $2D C3/EB7D: BC 49 33 LDY $3349,X C3/EB80: D0 0D BNE $EB8F C3/EB82: 20 D5 EB JSR $EBD5 C3/EB85: C2 20 REP #$20 C3/EB87: A9 2C 01 LDA #$012C C3/EB8A: 9D 49 33 STA $3349,X C3/EB8D: E2 20 SEP #$20 C3/EB8F: 20 E5 CF JSR $CFE5 C3/EB92: 20 C0 DE JSR $DEC0 ; update animation thread position C3/EB95: 38 SEC C3/EB96: 60 RTS C3/EB97: 20 C0 DE JSR $DEC0 ; update animation thread position C3/EB9A: 38 SEC C3/EB9B: 60 RTS C3/EB9C: A6 2D LDX $2D C3/EB9E: 20 D5 EB JSR $EBD5 C3/EBA1: A9 70 LDA #$70 C3/EBA3: 9D 4A 34 STA $344A,X C3/EBA6: 20 6C EA JSR $EA6C C3/EBA9: A6 2D LDX $2D C3/EBAB: BC 49 33 LDY $3349,X C3/EBAE: D0 18 BNE $EBC8 C3/EBB0: FE 49 36 INC $3649,X C3/EBB3: C2 20 REP #$20 C3/EBB5: 9E C9 34 STZ $34C9,X C3/EBB8: BD C9 37 LDA $37C9,X C3/EBBB: 9D C9 32 STA $32C9,X C3/EBBE: E2 20 SEP #$20 C3/EBC0: A9 CF LDA #$CF C3/EBC2: 9D CA 35 STA $35CA,X C3/EBC5: 20 06 12 JSR $1206 ; init animation thread C3/EBC8: 20 E5 CF JSR $CFE5 C3/EBCB: 20 C0 DE JSR $DEC0 ; update animation thread position C3/EBCE: 38 SEC C3/EBCF: 60 RTS C3/EBD0: 20 C0 DE JSR $DEC0 ; update animation thread position C3/EBD3: 38 SEC C3/EBD4: 60 RTS C3/EBD5: FE 49 36 INC $3649,X C3/EBD8: C2 20 REP #$20 C3/EBDA: A9 73 F4 LDA #$F473 ; CF/F473 C3/EBDD: 9D C9 32 STA $32C9,X C3/EBE0: A9 40 00 LDA #$0040 C3/EBE3: 9D C9 34 STA $34C9,X C3/EBE6: E2 20 SEP #$20 C3/EBE8: A9 CF LDA #$CF C3/EBEA: 9D CA 35 STA $35CA,X C3/EBED: 4C 06 12 JMP $1206 ; init animation thread C3/EBF0: A6 2D LDX $2D C3/EBF2: BD C9 35 LDA $35C9,X C3/EBF5: 29 0F AND #$0F C3/EBF7: AA TAX C3/EBF8: BF 5E F5 CF LDA $CFF55E,X ; y-offsets C3/EBFC: 85 E0 STA $E0 C3/EBFE: 30 0D BMI $EC0D C3/EC00: A6 2D LDX $2D C3/EC02: BD 4A 34 LDA $344A,X C3/EC05: 18 CLC C3/EC06: 65 E0 ADC $E0 C3/EC08: 9D 4A 34 STA $344A,X C3/EC0B: 80 16 BRA $EC23 C3/EC0D: A6 2D LDX $2D C3/EC0F: AD E0 00 LDA $00E0 C3/EC12: 10 03 BPL $EC17 C3/EC14: 49 FF EOR #$FF C3/EC16: 1A INC C3/EC17: 8D E0 00 STA $00E0 C3/EC1A: BD 4A 34 LDA $344A,X C3/EC1D: 38 SEC C3/EC1E: E5 E0 SBC $E0 C3/EC20: 9D 4A 34 STA $344A,X C3/EC23: 60 RTS ; [ Create Spinning Coin Thread ] C3/EC24: A9 02 LDA #$02 C3/EC26: A0 39 ED LDY #$ED39 C3/EC29: 20 73 11 JSR $1173 ; create thread C3/EC2C: 60 RTS ; [ Create Paintbrush Glimmer Thread ] C3/EC2D: A9 00 LDA #$00 C3/EC2F: A0 48 EC LDY #$EC48 C3/EC32: 20 73 11 JSR $1173 ; create thread C3/EC35: 60 RTS ; [ Create Sword Glimmer Thread ] C3/EC36: A9 00 LDA #$00 C3/EC38: A0 AE EC LDY #$ECAE C3/EC3B: 20 73 11 JSR $1173 ; create thread C3/EC3E: 60 RTS ; [ Create Glimmer Thread ] C3/EC3F: A9 02 LDA #$02 C3/EC41: A0 14 ED LDY #$ED14 C3/EC44: 20 73 11 JSR $1173 ; create thread C3/EC47: 60 RTS ; [ Paintbrush Glimmer Thread ] ; relm C3/EC48: AA TAX C3/EC49: 7C 4C EC JMP ($EC4C,X) C3/EC4C: .DW $EC50, $EC67 C3/EC50: A6 2D LDX $2D C3/EC52: FE 49 36 INC $3649,X C3/EC55: C2 20 REP #$20 C3/EC57: A9 68 01 LDA #$0168 C3/EC5A: 9D 49 33 STA $3349,X C3/EC5D: E2 20 SEP #$20 C3/EC5F: A9 E4 LDA #$E4 C3/EC61: 85 C7 STA $C7 C3/EC63: A9 03 LDA #$03 C3/EC65: 85 C9 STA $C9 C3/EC67: A5 C9 LDA $C9 C3/EC69: F0 41 BEQ $ECAC C3/EC6B: A6 2D LDX $2D C3/EC6D: BC 49 33 LDY $3349,X C3/EC70: D0 35 BNE $ECA7 C3/EC72: A9 08 LDA #$08 C3/EC74: 9D 49 33 STA $3349,X C3/EC77: 8B PHB C3/EC78: A9 00 LDA #$00 C3/EC7A: 48 PHA C3/EC7B: AB PLB C3/EC7C: 20 3F EC JSR $EC3F C3/EC7F: A9 68 LDA #$68 C3/EC81: 9F 4A 34 7E STA $7E344A,X C3/EC85: C2 20 REP #$20 C3/EC87: A9 B4 F5 LDA #$F5B4 ; CF/F5B4 (paintbrush glimmer sprite data) C3/EC8A: 9F C9 32 7E STA $7E32C9,X C3/EC8E: E2 20 SEP #$20 C3/EC90: A9 CF LDA #$CF C3/EC92: 9F CA 35 7E STA $7E35CA,X C3/EC96: A5 C7 LDA $C7 C3/EC98: 9F CA 33 7E STA $7E33CA,X C3/EC9C: AB PLB C3/EC9D: C6 C7 DEC $C7 C3/EC9F: C6 C7 DEC $C7 C3/ECA1: C6 C7 DEC $C7 C3/ECA3: C6 C7 DEC $C7 C3/ECA5: C6 C9 DEC $C9 C3/ECA7: 20 E5 CF JSR $CFE5 C3/ECAA: 38 SEC C3/ECAB: 60 RTS C3/ECAC: 18 CLC C3/ECAD: 60 RTS ; [ Sword Glimmer Thread ] ; cyan C3/ECAE: AA TAX C3/ECAF: 7C B2 EC JMP ($ECB2,X) C3/ECB2: .DW $ECB6, $ECCD C3/ECB6: A6 2D LDX $2D C3/ECB8: FE 49 36 INC $3649,X C3/ECBB: C2 20 REP #$20 C3/ECBD: A9 68 01 LDA #$0168 C3/ECC0: 9D 49 33 STA $3349,X C3/ECC3: E2 20 SEP #$20 C3/ECC5: A9 C8 LDA #$C8 C3/ECC7: 85 C7 STA $C7 C3/ECC9: A9 04 LDA #$04 C3/ECCB: 85 C9 STA $C9 C3/ECCD: A5 C9 LDA $C9 C3/ECCF: F0 41 BEQ $ED12 C3/ECD1: A6 2D LDX $2D C3/ECD3: BC 49 33 LDY $3349,X C3/ECD6: D0 35 BNE $ED0D C3/ECD8: A9 08 LDA #$08 C3/ECDA: 9D 49 33 STA $3349,X C3/ECDD: 8B PHB C3/ECDE: A9 00 LDA #$00 C3/ECE0: 48 PHA C3/ECE1: AB PLB C3/ECE2: 20 3F EC JSR $EC3F C3/ECE5: A9 60 LDA #$60 C3/ECE7: 9F 4A 34 7E STA $7E344A,X C3/ECEB: C2 20 REP #$20 C3/ECED: A9 FA F5 LDA #$F5FA ; CF/F5FA (sword glimmer sprite data) C3/ECF0: 9F C9 32 7E STA $7E32C9,X C3/ECF4: E2 20 SEP #$20 C3/ECF6: A9 CF LDA #$CF C3/ECF8: 9F CA 35 7E STA $7E35CA,X C3/ECFC: A5 C7 LDA $C7 C3/ECFE: 9F CA 33 7E STA $7E33CA,X C3/ED02: AB PLB C3/ED03: C6 C7 DEC $C7 C3/ED05: C6 C7 DEC $C7 C3/ED07: C6 C7 DEC $C7 C3/ED09: C6 C7 DEC $C7 C3/ED0B: C6 C9 DEC $C9 C3/ED0D: 20 E5 CF JSR $CFE5 C3/ED10: 38 SEC C3/ED11: 60 RTS C3/ED12: 18 CLC C3/ED13: 60 RTS ; [ Glimmer Thread ] C3/ED14: AA TAX C3/ED15: 7C 18 ED JMP ($ED18,X) C3/ED18: .DW $ED1C, $ED29 C3/ED1C: A6 2D LDX $2D C3/ED1E: FE 49 36 INC $3649,X C3/ED21: A9 01 LDA #$01 C3/ED23: 9D 4A 36 STA $364A,X C3/ED26: 20 06 12 JSR $1206 ; init animation thread C3/ED29: A6 2D LDX $2D C3/ED2B: BD CA 36 LDA $36CA,X C3/ED2E: C9 FE CMP #$FE C3/ED30: F0 05 BEQ $ED37 C3/ED32: 20 C0 DE JSR $DEC0 ; update animation thread position C3/ED35: 38 SEC C3/ED36: 60 RTS C3/ED37: 18 CLC C3/ED38: 60 RTS ; [ Spinning Coin Thread ] C3/ED39: AA TAX C3/ED3A: 7C 3D ED JMP ($ED3D,X) C3/ED3D: .DW $ED41, $ED6D C3/ED41: A6 2D LDX $2D C3/ED43: FE 49 36 INC $3649,X C3/ED46: C2 20 REP #$20 C3/ED48: A9 93 EC LDA #$EC93 ; D8/EC93 (spinning coin animation data) C3/ED4B: 9D C9 32 STA $32C9,X C3/ED4E: A9 80 00 LDA #$0080 C3/ED51: 9D C9 34 STA $34C9,X C3/ED54: E2 20 SEP #$20 C3/ED56: A9 C8 LDA #$C8 C3/ED58: 9D 49 33 STA $3349,X C3/ED5B: A9 D8 LDA #$D8 C3/ED5D: 9D CA 35 STA $35CA,X C3/ED60: A9 10 LDA #$10 C3/ED62: 9D CA 33 STA $33CA,X C3/ED65: A9 64 LDA #$64 C3/ED67: 9D 4A 34 STA $344A,X C3/ED6A: 20 06 12 JSR $1206 ; init animation thread C3/ED6D: A6 2D LDX $2D C3/ED6F: BD 49 33 LDA $3349,X C3/ED72: D0 03 BNE $ED77 C3/ED74: 9E C9 34 STZ $34C9,X C3/ED77: DE 49 33 DEC $3349,X C3/ED7A: 20 C0 DE JSR $DEC0 ; update animation thread position C3/ED7D: 38 SEC C3/ED7E: 60 RTS C3/ED7F: 20 BE ED JSR $EDBE C3/ED82: C2 20 REP #$20 C3/ED84: A9 72 8B LDA #$8B72 C3/ED87: 9F C9 32 7E STA $7E32C9,X C3/ED8B: E2 20 SEP #$20 C3/ED8D: A9 C2 LDA #$C2 C3/ED8F: 9F CA 35 7E STA $7E35CA,X C3/ED93: 60 RTS C3/ED94: 20 BE ED JSR $EDBE C3/ED97: C2 20 REP #$20 C3/ED99: A9 63 8B LDA #$8B63 C3/ED9C: 9F C9 32 7E STA $7E32C9,X C3/EDA0: E2 20 SEP #$20 C3/EDA2: A9 C2 LDA #$C2 C3/EDA4: 9F CA 35 7E STA $7E35CA,X C3/EDA8: 60 RTS C3/EDA9: 20 BE ED JSR $EDBE C3/EDAC: C2 20 REP #$20 C3/EDAE: A9 45 8B LDA #$8B45 C3/EDB1: 9F C9 32 7E STA $7E32C9,X C3/EDB5: E2 20 SEP #$20 C3/EDB7: A9 C2 LDA #$C2 C3/EDB9: 9F CA 35 7E STA $7E35CA,X C3/EDBD: 60 RTS C3/EDBE: 7B TDC C3/EDBF: A8 TAY C3/EDC0: 85 99 STA $99 C3/EDC2: 84 60 STY $60 C3/EDC4: A9 01 LDA #$01 C3/EDC6: A0 04 EE LDY #$EE04 C3/EDC9: 20 73 11 JSR $1173 ; create thread C3/EDCC: 60 RTS C3/EDCD: 86 E7 STX $E7 C3/EDCF: A9 7F LDA #$7F C3/EDD1: 85 E9 STA $E9 C3/EDD3: 84 EB STY $EB C3/EDD5: A9 7E LDA #$7E C3/EDD7: 85 ED STA $ED C3/EDD9: A6 00 LDX $00 C3/EDDB: C2 20 REP #$20 C3/EDDD: 7B TDC C3/EDDE: A8 TAY C3/EDDF: B7 E7 LDA [$E7],Y C3/EDE1: 18 CLC C3/EDE2: 65 60 ADC $60 C3/EDE4: 97 EB STA [$EB],Y C3/EDE6: C8 INY C3/EDE7: C8 INY C3/EDE8: C4 E0 CPY $E0 C3/EDEA: D0 F3 BNE $EDDF C3/EDEC: A5 E7 LDA $E7 C3/EDEE: 18 CLC C3/EDEF: 69 40 00 ADC #$0040 C3/EDF2: 85 E7 STA $E7 C3/EDF4: A5 EB LDA $EB C3/EDF6: 18 CLC C3/EDF7: 69 40 00 ADC #$0040 C3/EDFA: 85 EB STA $EB C3/EDFC: E8 INX C3/EDFD: E4 E2 CPX $E2 C3/EDFF: D0 DC BNE $EDDD C3/EE01: E2 20 SEP #$20 C3/EE03: 60 RTS C3/EE04: AA TAX C3/EE05: 7C 08 EE JMP ($EE08,X) C3/EE08: .DW $EE0E, $EE18, $EE1C C3/EE0E: A6 2D LDX $2D C3/EE10: FE 49 36 INC $3649,X C3/EE13: 20 06 12 JSR $1206 ; init animation thread C3/EE16: 38 SEC C3/EE17: 60 RTS C3/EE18: A5 99 LDA $99 C3/EE1A: D0 3D BNE $EE59 C3/EE1C: A6 2D LDX $2D C3/EE1E: 20 27 12 JSR $1227 ; update animation data C3/EE21: A6 2D LDX $2D C3/EE23: E2 10 SEP #$10 C3/EE25: BD C9 36 LDA $36C9,X C3/EE28: A8 TAY C3/EE29: C2 20 REP #$20 C3/EE2B: B7 EB LDA [$EB],Y C3/EE2D: 85 E7 STA $E7 C3/EE2F: C8 INY C3/EE30: C8 INY C3/EE31: E2 20 SEP #$20 C3/EE33: BD CA 35 LDA $35CA,X C3/EE36: 85 E9 STA $E9 C3/EE38: C2 10 REP #$10 C3/EE3A: A4 00 LDY $00 C3/EE3C: C2 20 REP #$20 C3/EE3E: B7 E7 LDA [$E7],Y C3/EE40: 85 E0 STA $E0 C3/EE42: C8 INY C3/EE43: C8 INY C3/EE44: B7 E7 LDA [$E7],Y C3/EE46: 85 E2 STA $E2 C3/EE48: C8 INY C3/EE49: C8 INY C3/EE4A: B7 E7 LDA [$E7],Y C3/EE4C: AA TAX C3/EE4D: C8 INY C3/EE4E: C8 INY C3/EE4F: B7 E7 LDA [$E7],Y C3/EE51: A8 TAY C3/EE52: E2 20 SEP #$20 C3/EE54: 20 CD ED JSR $EDCD C3/EE57: 38 SEC C3/EE58: 60 RTS C3/EE59: 64 99 STZ $99 C3/EE5B: A6 2D LDX $2D C3/EE5D: FE 49 36 INC $3649,X C3/EE60: C2 20 REP #$20 C3/EE62: A9 54 8B LDA #$8B54 C3/EE65: 9D C9 32 STA $32C9,X C3/EE68: E2 20 SEP #$20 C3/EE6A: A9 C2 LDA #$C2 C3/EE6C: 9D CA 35 STA $35CA,X C3/EE6F: 20 06 12 JSR $1206 ; init animation thread C3/EE72: 80 A8 BRA $EE1C ; [ Load Ending Font Graphics ] C3/EE74: A0 00 BA LDY #$BA00 ; $C4BA00 (ending font, compressed) C3/EE77: A9 C4 LDA #$C4 C3/EE79: 20 61 DD JSR $DD61 ; decompress C3/EE7C: A0 00 C0 LDY #$C000 C3/EE7F: 84 E7 STY $E7 C3/EE81: A9 7E LDA #$7E C3/EE83: 85 E9 STA $E9 C3/EE85: A0 00 09 LDY #$0900 ; copy $0900 bytes to VRAM at $7000 C3/EE88: 84 EB STY $EB C3/EE8A: A0 00 70 LDY #$7000 C3/EE8D: 4C 86 DD JMP $DD86 ; copy to VRAM (2bpp -> 4bpp) ; [ Load Ending Graphics ] C3/EE90: A0 08 C0 LDY #$C008 ; $C4C008 (ending graphics and tile formation, compressed) C3/EE93: A9 C4 LDA #$C4 C3/EE95: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/EE98: A0 49 38 LDY #$3849 ; destination = $7E3849 (bg1 data, top left) C3/EE9B: 84 EB STY $EB C3/EE9D: A9 7E LDA #$7E C3/EE9F: 85 ED STA $ED C3/EEA1: 20 10 EF JSR $EF10 ; load bg data C3/EEA4: A0 49 40 LDY #$4049 ; destination = $7E3849 (bg1 data, top right) C3/EEA7: 84 EB STY $EB C3/EEA9: A9 7E LDA #$7E C3/EEAB: 85 ED STA $ED C3/EEAD: 20 10 EF JSR $EF10 ; load bg data C3/EEB0: A0 00 C0 LDY #$C000 ; source = $7EC000 C3/EEB3: 84 E7 STY $E7 C3/EEB5: A9 7E LDA #$7E C3/EEB7: 85 E9 STA $E9 C3/EEB9: A0 60 1F LDY #$1F60 ; size = $1F60 C3/EEBC: 84 EB STY $EB C3/EEBE: 64 ED STZ $ED C3/EEC0: 64 EE STZ $EE C3/EEC2: A0 00 30 LDY #$3000 ; destination = VRAM $3000 C3/EEC5: 20 B9 DD JSR $DDB9 ; copy data/graphics to VRAM C3/EEC8: A0 60 DF LDY #$DF60 ; source = $7EDF60 C3/EECB: 84 E7 STY $E7 C3/EECD: A9 7E LDA #$7E C3/EECF: 85 E9 STA $E9 C3/EED1: A0 40 0B LDY #$0B40 ; size = $0B40 C3/EED4: 84 EB STY $EB C3/EED6: 64 ED STZ $ED C3/EED8: 64 EE STZ $EE C3/EEDA: A0 00 40 LDY #$4000 ; destination = VRAM $4000 C3/EEDD: 20 B9 DD JSR $DDB9 ; copy data/graphics to VRAM C3/EEE0: A0 A0 EA LDY #$EAA0 ; source = $7EEAA0 C3/EEE3: 84 E7 STY $E7 C3/EEE5: A9 7E LDA #$7E C3/EEE7: 85 E9 STA $E9 C3/EEE9: A0 00 0E LDY #$0E00 ; size = $0E00 C3/EEEC: 84 EB STY $EB C3/EEEE: 64 ED STZ $ED C3/EEF0: 64 EE STZ $EE C3/EEF2: A0 00 50 LDY #$5000 ; destination = VRAM $5000 C3/EEF5: 20 B9 DD JSR $DDB9 ; copy data/graphics to VRAM C3/EEF8: A0 48 04 LDY #$0448 ; source = $7F0448 C3/EEFB: 84 E7 STY $E7 C3/EEFD: A9 7F LDA #$7F C3/EEFF: 85 E9 STA $E9 C3/EF01: A0 80 07 LDY #$0780 ; size = $0780 C3/EF04: 84 EB STY $EB C3/EF06: 64 ED STZ $ED C3/EF08: 64 EE STZ $EE C3/EF0A: A0 00 10 LDY #$1000 ; destination = VRAM $1000 C3/EF0D: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM ; [ Load BG Data (book cinematic) ] C3/EF10: A0 A0 F8 LDY #$F8A0 ; source = $7EF8A0 C3/EF13: 84 E7 STY $E7 C3/EF15: A9 7E LDA #$7E C3/EF17: 85 E9 STA $E9 C3/EF19: A0 80 07 LDY #$0780 ; size = $0780 C3/EF1C: 84 EF STY $EF C3/EF1E: 4C EE D6 JMP $D6EE ; copy data C3/EF21: A0 00 18 LDY #$1800 C3/EF24: 84 1B STY $1B C3/EF26: A0 49 78 LDY #$7849 C3/EF29: 84 1D STY $1D C3/EF2B: A9 7E LDA #$7E C3/EF2D: 85 1F STA $1F C3/EF2F: A0 00 08 LDY #$0800 C3/EF32: 84 19 STY $19 C3/EF34: A0 00 00 LDY #$0000 C3/EF37: 84 14 STY $14 C3/EF39: A0 49 38 LDY #$3849 C3/EF3C: 84 16 STY $16 C3/EF3E: A9 7E LDA #$7E C3/EF40: 85 18 STA $18 C3/EF42: A0 00 10 LDY #$1000 C3/EF45: 84 12 STY $12 C3/EF47: 60 RTS C3/EF48: A0 77 F4 LDY #$F477 C3/EF4B: A9 C4 LDA #$C4 C3/EF4D: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/EF50: A0 00 C0 LDY #$C000 C3/EF53: 84 E7 STY $E7 C3/EF55: A9 7E LDA #$7E C3/EF57: 85 E9 STA $E9 C3/EF59: A0 80 03 LDY #$0380 C3/EF5C: 84 EB STY $EB C3/EF5E: 64 ED STZ $ED C3/EF60: 64 EE STZ $EE C3/EF62: A0 00 60 LDY #$6000 C3/EF65: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM C3/EF68: 20 36 F0 JSR $F036 ; load ending sprite graphics 3 C3/EF6B: A0 26 00 LDY #$0026 C3/EF6E: 84 E0 STY $E0 C3/EF70: A0 02 00 LDY #$0002 C3/EF73: 84 E2 STY $E2 C3/EF75: A2 E0 03 LDX #$03E0 C3/EF78: A0 A1 3B LDY #$3BA1 C3/EF7B: 4C CD ED JMP $EDCD C3/EF7E: 20 87 EF JSR $EF87 C3/EF81: A0 00 60 LDY #$6000 C3/EF84: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM C3/EF87: A0 4B 9D LDY #$9D4B ; $D99D4B (ending graphics, coin and skull) C3/EF8A: A9 D9 LDA #$D9 C3/EF8C: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/EF8F: A0 00 C0 LDY #$C000 C3/EF92: 84 E7 STY $E7 C3/EF94: A9 7E LDA #$7E C3/EF96: 85 E9 STA $E9 C3/EF98: A0 00 08 LDY #$0800 C3/EF9B: 84 EB STY $EB C3/EF9D: 64 ED STZ $ED C3/EF9F: 64 EE STZ $EE C3/EFA1: 60 RTS C3/EFA2: 20 36 F0 JSR $F036 ; load ending sprite graphics 3 C3/EFA5: A0 0E 00 LDY #$000E C3/EFA8: 84 E0 STY $E0 C3/EFAA: A0 08 00 LDY #$0008 C3/EFAD: 84 E2 STY $E2 C3/EFAF: A2 20 00 LDX #$0020 C3/EFB2: A0 77 3A LDY #$3A77 C3/EFB5: 4C CD ED JMP $EDCD C3/EFB8: 20 36 F0 JSR $F036 ; load ending sprite graphics 3 C3/EFBB: A0 1C 00 LDY #$001C C3/EFBE: 84 E0 STY $E0 C3/EFC0: A0 09 00 LDY #$0009 C3/EFC3: 84 E2 STY $E2 C3/EFC5: A2 2E 00 LDX #$002E C3/EFC8: A0 2D 3A LDY #$3A2D C3/EFCB: 4C CD ED JMP $EDCD C3/EFCE: 20 56 F0 JSR $F056 C3/EFD1: A0 0C 00 LDY #$000C C3/EFD4: 84 E0 STY $E0 C3/EFD6: A0 07 00 LDY #$0007 C3/EFD9: 84 E2 STY $E2 C3/EFDB: A2 4A 00 LDX #$004A C3/EFDE: A0 B7 3A LDY #$3AB7 C3/EFE1: 4C CD ED JMP $EDCD C3/EFE4: 20 36 F0 JSR $F036 ; load ending sprite graphics 3 C3/EFE7: A0 0E 00 LDY #$000E C3/EFEA: 84 E0 STY $E0 C3/EFEC: A0 05 00 LDY #$0005 C3/EFEF: 84 E2 STY $E2 C3/EFF1: A2 20 02 LDX #$0220 C3/EFF4: A0 35 3B LDY #$3B35 C3/EFF7: 4C CD ED JMP $EDCD C3/EFFA: A0 18 00 LDY #$0018 C3/EFFD: 84 E0 STY $E0 C3/EFFF: A0 06 00 LDY #$0006 C3/F002: 84 E2 STY $E2 C3/F004: A2 74 02 LDX #$0274 C3/F007: A0 69 3B LDY #$3B69 C3/F00A: 4C CD ED JMP $EDCD C3/F00D: 20 36 F0 JSR $F036 ; load ending sprite graphics 3 C3/F010: A0 14 00 LDY #$0014 C3/F013: 84 E0 STY $E0 C3/F015: A0 02 00 LDY #$0002 C3/F018: 84 E2 STY $E2 C3/F01A: A2 60 03 LDX #$0360 C3/F01D: A0 F3 3B LDY #$3BF3 C3/F020: 4C CD ED JMP $EDCD C3/F023: A0 1C 00 LDY #$001C C3/F026: 84 E0 STY $E0 C3/F028: A0 06 00 LDY #$0006 C3/F02B: 84 E2 STY $E2 C3/F02D: A2 C8 0B LDX #$0BC8 C3/F030: A0 D9 3A LDY #$3AD9 C3/F033: 4C CD ED JMP $EDCD ; [ Load Ending Sprite Graphics 3 ] ; cards, sparkle, mini-mog, eyes, ... C3/F036: A0 FB F6 LDY #$F6FB ; $C4F6FB (ending sprite graphics 3) C3/F039: A9 C4 LDA #$C4 C3/F03B: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/F03E: A0 00 C0 LDY #$C000 C3/F041: 84 E7 STY $E7 C3/F043: A9 7E LDA #$7E C3/F045: 85 E9 STA $E9 C3/F047: A0 F0 0D LDY #$0DF0 C3/F04A: 84 EB STY $EB C3/F04C: 64 ED STZ $ED C3/F04E: 64 EE STZ $EE C3/F050: A0 00 60 LDY #$6000 C3/F053: 4C B9 DD JMP $DDB9 ; copy data/graphics to VRAM ; [ ] C3/F056: A0 E5 A4 LDY #$A4E5 C3/F059: A9 D9 LDA #$D9 C3/F05B: 20 61 DD JSR $DD61 ; decompress to $7EC000 C3/F05E: A0 00 C0 LDY #$C000 C3/F061: 84 E7 STY $E7 C3/F063: A9 7E LDA #$7E C3/F065: 85 E9 STA $E9 C3/F067: A0 C0 00 LDY #$00C0 C3/F06A: 84 EB STY $EB C3/F06C: A0 00 60 LDY #$6000 C3/F06F: 4C 86 DD JMP $DD86 ; copy graphics to vram (2bpp -> 4bpp) ; [ Load Skull Graphics (sprite) ] C3/F072: 20 36 F0 JSR $F036 ; load ending sprite graphics 3 C3/F075: 20 87 EF JSR $EF87 C3/F078: A0 00 68 LDY #$6800 C3/F07B: 20 B9 DD JSR $DDB9 ; copy data/graphics to VRAM C3/F07E: A0 0A 00 LDY #$000A C3/F081: 84 E0 STY $E0 C3/F083: A0 05 00 LDY #$0005 C3/F086: 84 E2 STY $E2 C3/F088: A2 56 00 LDX #$0056 C3/F08B: A0 37 3B LDY #$3B37 C3/F08E: 4C CD ED JMP $EDCD ; -------------------------------------------[ Sound: Main ]-------------------------------------------- C5/0000: 4C 34 00 JMP $0034 ; init SPC C5/0003: EA NOP C5/0004: 4C 31 01 JMP $0131 ; spc command C5/0007: EA NOP C5/0008: 4C 1C 03 JMP $031C ; transfer instruments and song data to spc C5/000B: EA NOP C5/000C: 4C EA 03 JMP $03EA ; transfer song data to spc C5/000F: EA NOP ; pointers to spc chunks (+$C50000) C5/0010: .DW $070E, $205C, $1EC7, $2016, $2038, $204A ; destination address of spc chunks C5/001C: .DW $0200, $2C00, $4800, $1B00, $1A80, $1A00 ; pointers to misc spc data (+$C50000, unused) C5/0028: .DW $3E96, $3C5F, $3D1C, $3E18, $3D9A, $3F95 ; [ Init SPC ] C5/0034: 8B PHB C5/0035: 0B PHD C5/0036: 08 PHP C5/0037: C2 20 REP #$20 C5/0039: C2 10 REP #$10 C5/003B: 48 PHA C5/003C: DA PHX C5/003D: 5A PHY C5/003E: E2 20 SEP #$20 C5/0040: A9 00 LDA #$00 C5/0042: 48 PHA C5/0043: AB PLB C5/0044: A2 00 13 LDX #$1300 ; set dp to $1300 C5/0047: DA PHX C5/0048: 2B PLD C5/0049: A2 AA BB LDX #$BBAA C5/004C: A0 FF F0 LDY #$F0FF ; interrupt command $FF, subcommand $F0 (reset spc) C5/004F: 8C 40 21 STY $2140 C5/0052: EC 40 21 CPX $2140 ; wait for acknowledgement from spc C5/0055: D0 F8 BNE $004F C5/0057: A2 00 00 LDX #$0000 C5/005A: AF 1C 00 C5 LDA $C5001C ; destination address of first spc chunk ($0200) C5/005E: 8D 42 21 STA $2142 C5/0061: AF 1D 00 C5 LDA $C5001D C5/0065: 8D 43 21 STA $2143 C5/0068: A9 CC LDA #$CC C5/006A: 8D 41 21 STA $2141 C5/006D: 8D 40 21 STA $2140 C5/0070: CD 40 21 CMP $2140 ; wait for acknowledgement from spc C5/0073: D0 FB BNE $0070 C5/0075: A9 00 LDA #$00 C5/0077: EB XBA C5/0078: BF 10 00 C5 LDA $C50010,X ; pointer to spc chunk C5/007C: 85 10 STA $10 C5/007E: BF 11 00 C5 LDA $C50011,X C5/0082: 85 11 STA $11 C5/0084: A9 C5 LDA #$C5 C5/0086: 85 12 STA $12 C5/0088: A0 00 00 LDY #$0000 C5/008B: B7 10 LDA [$10],Y C5/008D: 18 CLC C5/008E: 69 02 ADC #$02 C5/0090: 85 1C STA $1C ; +$1C = total length of chunk C5/0092: C8 INY C5/0093: B7 10 LDA [$10],Y C5/0095: 69 00 ADC #$00 C5/0097: 85 1D STA $1D C5/0099: C8 INY C5/009A: B7 10 LDA [$10],Y ; copy one byte C5/009C: 8D 41 21 STA $2141 C5/009F: EB XBA C5/00A0: 8D 40 21 STA $2140 C5/00A3: CD 40 21 CMP $2140 ; wait for acknowledgement from spc C5/00A6: D0 FB BNE $00A3 C5/00A8: 1A INC ; next byte C5/00A9: EB XBA C5/00AA: C8 INY C5/00AB: C4 1C CPY $1C C5/00AD: D0 EB BNE $009A C5/00AF: EB XBA ; next chunk C5/00B0: 1A INC C5/00B1: 1A INC C5/00B2: 1A INC C5/00B3: D0 01 BNE $00B6 C5/00B5: 1A INC C5/00B6: E8 INX C5/00B7: E8 INX C5/00B8: E0 0C 00 CPX #$000C C5/00BB: F0 1D BEQ $00DA C5/00BD: EB XBA C5/00BE: BF 1C 00 C5 LDA $C5001C,X ; destination address of next spc chunk C5/00C2: 8D 42 21 STA $2142 C5/00C5: BF 1D 00 C5 LDA $C5001D,X C5/00C9: 8D 43 21 STA $2143 C5/00CC: EB XBA C5/00CD: 8D 41 21 STA $2141 C5/00D0: 8D 40 21 STA $2140 C5/00D3: CD 40 21 CMP $2140 ; wait for acknowledgement from spc C5/00D6: D0 FB BNE $00D3 C5/00D8: 80 9B BRA $0075 C5/00DA: A0 00 02 LDY #$0200 ; spc start address = $0200 C5/00DD: 8C 42 21 STY $2142 C5/00E0: EB XBA C5/00E1: A9 00 LDA #$00 ; 0 indicates that this is the last chunk C5/00E3: 8D 41 21 STA $2141 C5/00E6: EB XBA C5/00E7: 8D 40 21 STA $2140 C5/00EA: CD 40 21 CMP $2140 ; wait for acknowledgement from spc C5/00ED: D0 FB BNE $00EA C5/00EF: EB XBA C5/00F0: 8D 40 21 STA $2140 C5/00F3: A2 00 01 LDX #$0100 C5/00F6: 9D FF 12 STA $12FF,X ; clear $1300-$13FF C5/00F9: CA DEX C5/00FA: D0 FA BNE $00F6 C5/00FC: A9 FF LDA #$FF ; clear current song index C5/00FE: 85 05 STA $05 C5/0100: C2 20 REP #$20 C5/0102: AF C7 1E C5 LDA $C51EC7 ; sound effect brr data C5/0106: 18 CLC C5/0107: 69 00 48 ADC #$4800 C5/010A: 85 F8 STA $F8 C5/010C: 85 A0 STA $A0 C5/010E: A2 00 08 LDX #$0800 ; wait for spc to initialize ??? C5/0111: CA DEX C5/0112: D0 FD BNE $0111 C5/0114: E2 20 SEP #$20 C5/0116: A9 00 LDA #$00 ; C5/0118: 85 FA STA $FA C5/011A: A9 C5 LDA #$C5 ; C5/011C: 85 FB STA $FB C5/011E: A9 05 LDA #$05 ; echo delay = 5 (80ms) C5/0120: 85 F0 STA $F0 C5/0122: 0A ASL C5/0123: 0A ASL C5/0124: 0A ASL C5/0125: 49 FF EOR #$FF C5/0127: 1A INC C5/0128: 18 CLC C5/0129: 69 F5 ADC #$F5 C5/012B: 85 F2 STA $F2 ; +$F1 = start of echo buffer C5/012D: 64 F1 STZ $F1 C5/012F: 80 40 BRA $0171 ; return ; [ SPC Command ] C5/0131: 8B PHB C5/0132: 0B PHD C5/0133: 08 PHP C5/0134: C2 20 REP #$20 C5/0136: C2 10 REP #$10 C5/0138: 48 PHA C5/0139: DA PHX C5/013A: 5A PHY C5/013B: E2 20 SEP #$20 C5/013D: A9 00 LDA #$00 C5/013F: 48 PHA C5/0140: AB PLB C5/0141: A2 00 13 LDX #$1300 ; set dp to $1300 C5/0144: DA PHX C5/0145: 2B PLD C5/0146: E2 20 SEP #$20 C5/0148: A5 00 LDA $00 ; spc interrupt command C5/014A: F0 25 BEQ $0171 ; return if no command C5/014C: 30 19 BMI $0167 C5/014E: C9 10 CMP #$10 C5/0150: 90 1F BCC $0171 ; return if < $10 C5/0152: C9 18 CMP #$18 C5/0154: B0 0D BCS $0163 ; branch if >= $18 C5/0156: 29 0F AND #$0F C5/0158: 0A ASL C5/0159: EB XBA C5/015A: A9 00 LDA #$00 C5/015C: 48 PHA C5/015D: EB XBA C5/015E: 48 PHA C5/015F: FA PLX C5/0160: 7C FE 06 JMP ($06FE,X) ; spc command $10-$17 jump table C5/0163: C9 30 CMP #$30 C5/0165: B0 03 BCS $016A C5/0167: 4C A6 05 JMP $05A6 ; spc interrupt (commands $18-$2F & $80-$FF) C5/016A: C9 40 CMP #$40 C5/016C: B0 03 BCS $0171 C5/016E: 4C 08 06 JMP $0608 ; (commands $30-$3F) ; return C5/0171: E2 20 SEP #$20 C5/0173: 64 00 STZ $00 C5/0175: C2 20 REP #$20 C5/0177: C2 10 REP #$10 C5/0179: 7A PLY C5/017A: FA PLX C5/017B: 68 PLA C5/017C: 28 PLP C5/017D: 2B PLD C5/017E: AB PLB C5/017F: 6B RTL ; [ Play Song ] C5/0180: E2 20 SEP #$20 C5/0182: A5 01 LDA $01 ; song index C5/0184: C5 05 CMP $05 ; current song C5/0186: F0 E9 BEQ $0171 ; return if it's the same song C5/0188: CF 5E 3C C5 CMP $C53C5E ; number of songs C5/018C: B0 E3 BCS $0171 ; return if song number is invalid C5/018E: 20 1F 06 JSR $061F ; check alternate start positions C5/0191: A5 01 LDA $01 C5/0193: C9 54 CMP #$54 C5/0195: D0 06 BNE $019D ; branch if not song $54 (ending theme 2) C5/0197: A5 05 LDA $05 C5/0199: C9 53 CMP #$53 C5/019B: F0 07 BEQ $01A4 ; branch if current song is $53 (ending theme 1) C5/019D: A5 F3 LDA $F3 C5/019F: F0 03 BEQ $01A4 ; branch if previous song was not > $1000 bytes C5/01A1: 20 40 06 JSR $0640 ; transfer pointers to type 2 sound effects to spc C5/01A4: E2 20 SEP #$20 C5/01A6: A5 02 LDA $02 ; C5/01A8: 8D 42 21 STA $2142 C5/01AB: A5 01 LDA $01 ; song number C5/01AD: 8D 41 21 STA $2141 C5/01B0: A5 00 LDA $00 ; spc command C5/01B2: 8D 40 21 STA $2140 C5/01B5: CD 40 21 CMP $2140 C5/01B8: D0 FB BNE $01B5 ; wait for acknowledgement from spc C5/01BA: 1A INC C5/01BB: 29 7F AND #$7F C5/01BD: 85 1E STA $1E C5/01BF: C2 20 REP #$20 C5/01C1: A2 20 00 LDX #$0020 C5/01C4: 9E 1E 14 STZ $141E,X ; clear $141F-$142E C5/01C7: CA DEX C5/01C8: D0 FA BNE $01C4 C5/01CA: A9 00 14 LDA #$1400 ; pointer to instruments used C5/01CD: 85 10 STA $10 C5/01CF: A9 20 14 LDA #$1420 ; pointer to instruments that need to be transferred C5/01D2: 85 12 STA $12 C5/01D4: A5 00 LDA $00 C5/01D6: 29 00 FF AND #$FF00 ; song number * 32 C5/01D9: 4A LSR C5/01DA: 4A LSR C5/01DB: 4A LSR C5/01DC: AA TAX C5/01DD: 69 20 00 ADC #$0020 C5/01E0: 85 1C STA $1C C5/01E2: BF 95 3F C5 LDA $C53F95,X ; instruments for each song C5/01E6: 92 10 STA ($10) C5/01E8: E6 10 INC $10 ; next instrument C5/01EA: E6 10 INC $10 C5/01EC: A0 40 00 LDY #$0040 C5/01EF: D9 1E 13 CMP $131E,Y ; check if that instrument was already loaded in the spc C5/01F2: F0 0A BEQ $01FE C5/01F4: 88 DEY C5/01F5: 88 DEY C5/01F6: D0 F7 BNE $01EF C5/01F8: 92 12 STA ($12) ; add to instruments that need to be transferred C5/01FA: E6 12 INC $12 C5/01FC: E6 12 INC $12 C5/01FE: E8 INX ; next instrument C5/01FF: E8 INX C5/0200: E4 1C CPX $1C C5/0202: D0 DE BNE $01E2 C5/0204: AD 20 14 LDA $1420 ; first instrument that needs to be transferred C5/0207: D0 03 BNE $020C ; branch if any instruments need to be transferred C5/0209: 4C EA 03 JMP $03EA ; transfer song data to spc ; skip instruments that are already loaded in the correct order C5/020C: A2 00 00 LDX #$0000 ; pointer to next instrument in spc C5/020F: 86 1C STX $1C C5/0211: BD 20 14 LDA $1420,X ; instrument number C5/0214: F0 3D BEQ $0253 ; branch if no instrument C5/0216: DA PHX C5/0217: 3A DEC C5/0218: 85 E2 STA $E2 C5/021A: 0A ASL C5/021B: 18 CLC C5/021C: 65 E2 ADC $E2 C5/021E: AA TAX C5/021F: E2 20 SEP #$20 C5/0221: BF 5F 3C C5 LDA $C53C5F,X ; pointer to instrument brr data C5/0225: 85 10 STA $10 C5/0227: BF 60 3C C5 LDA $C53C60,X C5/022B: 85 11 STA $11 C5/022D: BF 61 3C C5 LDA $C53C61,X C5/0231: 85 12 STA $12 C5/0233: A4 10 LDY $10 C5/0235: 64 10 STZ $10 C5/0237: 64 11 STZ $11 C5/0239: B7 10 LDA [$10],Y ; length of brr data C5/023B: EB XBA C5/023C: C8 INY C5/023D: D0 02 BNE $0241 C5/023F: E6 12 INC $12 C5/0241: B7 10 LDA [$10],Y C5/0243: EB XBA C5/0244: C2 20 REP #$20 C5/0246: 18 CLC C5/0247: 65 1C ADC $1C ; add to brr data pointer C5/0249: 85 1C STA $1C C5/024B: FA PLX C5/024C: E8 INX ; next instrument C5/024D: E8 INX C5/024E: E0 20 00 CPX #$0020 C5/0251: D0 BE BNE $0211 C5/0253: A2 40 00 LDX #$0040 ; find the last instrument that needs to be transferred C5/0256: B5 1E LDA $1E,X C5/0258: D0 06 BNE $0260 C5/025A: CA DEX C5/025B: CA DEX C5/025C: D0 F8 BNE $0256 C5/025E: 80 0B BRA $026B ; branch if no instruments need to be transferred C5/0260: B5 A0 LDA $A0,X ; pointer to C5/0262: 18 CLC C5/0263: 65 1C ADC $1C ; add brr data pointer C5/0265: B0 07 BCS $026E ; branch on overflow ??? C5/0267: C5 F1 CMP $F1 C5/0269: B0 03 BCS $026E ; branch if data is past the beginning of the echo buffer C5/026B: 4C 1C 03 JMP $031C ; transfer instruments and song data to spc ; move instruments that are already loaded (start at the end of the list) C5/026E: E2 20 SEP #$20 C5/0270: A9 07 LDA #$07 ; command $07 (move chunk) C5/0272: 8D 41 21 STA $2141 C5/0275: C2 20 REP #$20 C5/0277: A2 00 00 LDX #$0000 C5/027A: B5 20 LDA $20,X C5/027C: F0 18 BEQ $0296 C5/027E: A0 00 00 LDY #$0000 C5/0281: D9 00 14 CMP $1400,Y C5/0284: F0 09 BEQ $028F C5/0286: C8 INY C5/0287: C8 INY C5/0288: C0 20 00 CPY #$0020 C5/028B: D0 F4 BNE $0281 C5/028D: 74 20 STZ $20,X C5/028F: E8 INX C5/0290: E8 INX C5/0291: E0 40 00 CPX #$0040 C5/0294: D0 E4 BNE $027A C5/0296: A2 00 00 LDX #$0000 C5/0299: B5 20 LDA $20,X C5/029B: F0 07 BEQ $02A4 C5/029D: E8 INX C5/029E: E8 INX C5/029F: E0 40 00 CPX #$0040 C5/02A2: D0 F5 BNE $0299 C5/02A4: 86 1C STX $1C C5/02A6: A2 40 00 LDX #$0040 C5/02A9: B5 1E LDA $1E,X C5/02AB: D0 04 BNE $02B1 C5/02AD: CA DEX C5/02AE: CA DEX C5/02AF: D0 F8 BNE $02A9 C5/02B1: E4 1C CPX $1C C5/02B3: D0 03 BNE $02B8 C5/02B5: 4C 1C 03 JMP $031C ; transfer instruments and song data to spc ; C5/02B8: A0 00 00 LDY #$0000 C5/02BB: B9 20 13 LDA $1320,Y C5/02BE: D0 4D BNE $030D ; skip if instrument can't be moved C5/02C0: BB TYX C5/02C1: 80 04 BRA $02C7 C5/02C3: B5 20 LDA $20,X C5/02C5: D0 09 BNE $02D0 C5/02C7: E8 INX C5/02C8: E8 INX C5/02C9: E0 40 00 CPX #$0040 C5/02CC: D0 F5 BNE $02C3 C5/02CE: 80 46 BRA $0316 C5/02D0: 99 20 13 STA $1320,Y C5/02D3: 74 20 STZ $20,X C5/02D5: B5 A0 LDA $A0,X C5/02D7: 8D 42 21 STA $2142 ; source address C5/02DA: E2 20 SEP #$20 C5/02DC: A5 1E LDA $1E C5/02DE: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/02E1: 85 1E STA $1E C5/02E3: C2 20 REP #$20 C5/02E5: B9 A0 13 LDA $13A0,Y ; destination address C5/02E8: 8D 42 21 STA $2142 C5/02EB: 18 CLC C5/02EC: 75 60 ADC $60,X C5/02EE: 99 A2 13 STA $13A2,Y C5/02F1: E2 20 SEP #$20 C5/02F3: A5 1E LDA $1E C5/02F5: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/02F8: 85 1E STA $1E C5/02FA: C2 20 REP #$20 C5/02FC: B5 60 LDA $60,X C5/02FE: 8D 42 21 STA $2142 ; size C5/0301: 99 60 13 STA $1360,Y C5/0304: E2 20 SEP #$20 C5/0306: A5 1E LDA $1E C5/0308: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/030B: 85 1E STA $1E C5/030D: C2 20 REP #$20 C5/030F: C8 INY ; next instrument C5/0310: C8 INY C5/0311: C0 40 00 CPY #$0040 C5/0314: D0 A5 BNE $02BB C5/0316: E2 20 SEP #$20 C5/0318: A9 F0 LDA #$F0 C5/031A: 85 1E STA $1E ; fall through ; [ Transfer Instruments and Song Data to SPC ] C5/031C: E2 20 SEP #$20 C5/031E: A2 00 00 LDX #$0000 C5/0321: B5 20 LDA $20,X C5/0323: F0 0E BEQ $0333 C5/0325: E8 INX C5/0326: E8 INX C5/0327: E0 40 00 CPX #$0040 C5/032A: D0 F5 BNE $0321 C5/032C: A9 00 LDA #$00 C5/032E: 95 1F STA $1F,X C5/0330: CA DEX C5/0331: D0 FB BNE $032E C5/0333: A0 00 00 LDY #$0000 C5/0336: C2 20 REP #$20 C5/0338: B9 20 14 LDA $1420,Y C5/033B: F0 34 BEQ $0371 C5/033D: 95 20 STA $20,X C5/033F: 5A PHY C5/0340: DA PHX C5/0341: 3A DEC C5/0342: 85 E2 STA $E2 C5/0344: 0A ASL C5/0345: 18 CLC C5/0346: 65 E2 ADC $E2 C5/0348: AA TAX C5/0349: E2 20 SEP #$20 C5/034B: BF 5F 3C C5 LDA $C53C5F,X ; pointer to instrument brr data C5/034F: 85 10 STA $10 C5/0351: BF 60 3C C5 LDA $C53C60,X C5/0355: 85 11 STA $11 C5/0357: BF 61 3C C5 LDA $C53C61,X C5/035B: 85 12 STA $12 C5/035D: A4 10 LDY $10 C5/035F: 64 10 STZ $10 C5/0361: 64 11 STZ $11 C5/0363: FA PLX C5/0364: 20 74 03 JSR $0374 ; transfer instrument spc data to spc C5/0367: 7A PLY C5/0368: C8 INY C5/0369: C8 INY C5/036A: E8 INX C5/036B: E8 INX C5/036C: C0 20 00 CPY #$0020 C5/036F: D0 C5 BNE $0336 C5/0371: 4C EA 03 JMP $03EA ; transfer song data to spc ; [ Transfer Instrument BRR Data to SPC ] C5/0374: 08 PHP C5/0375: DA PHX C5/0376: E2 20 SEP #$20 C5/0378: FA PLX C5/0379: DA PHX C5/037A: B5 A0 LDA $A0,X ; destination address C5/037C: 8D 42 21 STA $2142 C5/037F: B5 A1 LDA $A1,X C5/0381: 8D 43 21 STA $2143 C5/0384: A9 03 LDA #$03 ; transfer 3 bytes at a time C5/0386: 8D 41 21 STA $2141 C5/0389: A5 1E LDA $1E C5/038B: 8D 40 21 STA $2140 C5/038E: CD 40 21 CMP $2140 C5/0391: D0 FB BNE $038E ; wait for acknowledgement from spc C5/0393: 1A INC C5/0394: 29 7F AND #$7F C5/0396: 85 1E STA $1E C5/0398: B7 10 LDA [$10],Y ; size C5/039A: 85 1C STA $1C C5/039C: 95 60 STA $60,X C5/039E: 18 CLC C5/039F: 75 A0 ADC $A0,X ; set pointer to next instrument brr data C5/03A1: 95 A2 STA $A2,X C5/03A3: C8 INY C5/03A4: D0 02 BNE $03A8 C5/03A6: E6 12 INC $12 C5/03A8: B7 10 LDA [$10],Y C5/03AA: 85 1D STA $1D C5/03AC: 95 61 STA $61,X C5/03AE: 75 A1 ADC $A1,X C5/03B0: 95 A3 STA $A3,X C5/03B2: C8 INY C5/03B3: D0 02 BNE $03B7 C5/03B5: E6 12 INC $12 C5/03B7: A6 1C LDX $1C ; X = bytes remaining to transfer C5/03B9: B7 10 LDA [$10],Y ; transfer 3 bytes C5/03BB: 8D 41 21 STA $2141 C5/03BE: C8 INY C5/03BF: D0 02 BNE $03C3 C5/03C1: E6 12 INC $12 C5/03C3: B7 10 LDA [$10],Y C5/03C5: 8D 42 21 STA $2142 C5/03C8: C8 INY C5/03C9: D0 02 BNE $03CD C5/03CB: E6 12 INC $12 C5/03CD: B7 10 LDA [$10],Y C5/03CF: 8D 43 21 STA $2143 C5/03D2: C8 INY C5/03D3: D0 02 BNE $03D7 C5/03D5: E6 12 INC $12 C5/03D7: A5 1E LDA $1E C5/03D9: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/03DC: 85 1E STA $1E C5/03DE: CA DEX ; next 3 bytes C5/03DF: CA DEX C5/03E0: CA DEX C5/03E1: D0 D6 BNE $03B9 C5/03E3: A9 F0 LDA #$F0 ; command $F0 (end of data transfer) C5/03E5: 85 1E STA $1E C5/03E7: FA PLX C5/03E8: 28 PLP C5/03E9: 60 RTS ; [ Transfer Song Data to SPC ] C5/03EA: C2 20 REP #$20 C5/03EC: A9 80 14 LDA #$1480 C5/03EF: 85 10 STA $10 C5/03F1: A2 00 00 LDX #$0000 C5/03F4: BD 00 14 LDA $1400,X C5/03F7: F0 2B BEQ $0424 ; branch if no instrument C5/03F9: A0 00 00 LDY #$0000 C5/03FC: D9 20 13 CMP $1320,Y C5/03FF: F0 0C BEQ $040D ; C5/0401: C8 INY C5/0402: C8 INY C5/0403: C0 40 00 CPY #$0040 C5/0406: D0 F4 BNE $03FC C5/0408: A9 00 00 LDA #$0000 C5/040B: 80 17 BRA $0424 C5/040D: DA PHX C5/040E: 3A DEC C5/040F: 0A ASL C5/0410: AA TAX C5/0411: B9 A0 13 LDA $13A0,Y ; pointer to instrument C5/0414: 92 10 STA ($10) C5/0416: E6 10 INC $10 C5/0418: E6 10 INC $10 C5/041A: 18 CLC C5/041B: 7F 1C 3D C5 ADC $C53D1C,X ; add instrument loop start position C5/041F: 92 10 STA ($10) C5/0421: FA PLX C5/0422: 80 08 BRA $042C C5/0424: 92 10 STA ($10) ; clear pointer to instrument C5/0426: E6 10 INC $10 C5/0428: E6 10 INC $10 C5/042A: 92 10 STA ($10) ; clear loop start pointer C5/042C: E6 10 INC $10 C5/042E: E6 10 INC $10 C5/0430: E8 INX ; next instrument C5/0431: E8 INX C5/0432: E0 20 00 CPX #$0020 C5/0435: D0 BD BNE $03F4 C5/0437: E2 20 SEP #$20 C5/0439: A2 80 1B LDX #$1B80 ; address of brr pointers in spc ram C5/043C: 8E 42 21 STX $2142 C5/043F: A9 02 LDA #$02 ; transfer 2 bytes at a time C5/0441: 8D 41 21 STA $2141 C5/0444: A5 1E LDA $1E C5/0446: 8D 40 21 STA $2140 C5/0449: CD 40 21 CMP $2140 C5/044C: D0 FB BNE $0449 C5/044E: 1A INC C5/044F: 29 7F AND #$7F C5/0451: 85 1E STA $1E C5/0453: A2 00 00 LDX #$0000 C5/0456: BD 80 14 LDA $1480,X ; transfer brr pointer and loop start C5/0459: 8D 42 21 STA $2142 C5/045C: BD 81 14 LDA $1481,X C5/045F: 8D 43 21 STA $2143 C5/0462: A5 1E LDA $1E C5/0464: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/0467: 85 1E STA $1E C5/0469: E8 INX ; next instrument C5/046A: E8 INX C5/046B: E0 40 00 CPX #$0040 C5/046E: D0 E6 BNE $0456 C5/0470: A9 F0 LDA #$F0 ; command $F0 (end of data transfer) C5/0472: 85 1E STA $1E C5/0474: E2 20 SEP #$20 C5/0476: A2 40 1A LDX #$1A40 ; address of instrument pitch multipliers in spc ram C5/0479: 8E 42 21 STX $2142 C5/047C: A9 02 LDA #$02 ; transfer 2 bytes at a time C5/047E: 8D 41 21 STA $2141 C5/0481: A5 1E LDA $1E C5/0483: 8D 40 21 STA $2140 C5/0486: CD 40 21 CMP $2140 C5/0489: D0 FB BNE $0486 C5/048B: 1A INC C5/048C: 29 7F AND #$7F C5/048E: 85 1E STA $1E C5/0490: A0 00 00 LDY #$0000 C5/0493: C2 20 REP #$20 C5/0495: B9 00 14 LDA $1400,Y ; instrument number C5/0498: 3A DEC C5/0499: 0A ASL C5/049A: AA TAX C5/049B: BF 9A 3D C5 LDA $C53D9A,X ; instrument pitch multiplier C5/049F: 8D 42 21 STA $2142 C5/04A2: E2 20 SEP #$20 C5/04A4: A5 1E LDA $1E C5/04A6: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/04A9: 85 1E STA $1E C5/04AB: C8 INY ; next instrument C5/04AC: C8 INY C5/04AD: C0 20 00 CPY #$0020 C5/04B0: D0 E1 BNE $0493 C5/04B2: A9 F0 LDA #$F0 ; command $F0 (end of data transfer) C5/04B4: 85 1E STA $1E C5/04B6: E2 20 SEP #$20 C5/04B8: A2 C0 1A LDX #$1AC0 ; address of adsr data in spc ram C5/04BB: 8E 42 21 STX $2142 C5/04BE: A9 02 LDA #$02 ; transfer 2 bytes at a time C5/04C0: 8D 41 21 STA $2141 C5/04C3: A5 1E LDA $1E C5/04C5: 8D 40 21 STA $2140 C5/04C8: CD 40 21 CMP $2140 C5/04CB: D0 FB BNE $04C8 C5/04CD: 1A INC C5/04CE: 29 7F AND #$7F C5/04D0: 85 1E STA $1E C5/04D2: A0 00 00 LDY #$0000 C5/04D5: C2 20 REP #$20 C5/04D7: B9 00 14 LDA $1400,Y ; instrument number C5/04DA: 3A DEC C5/04DB: 0A ASL C5/04DC: AA TAX C5/04DD: BF 18 3E C5 LDA $C53E18,X ; instrument adsr data C5/04E1: 8D 42 21 STA $2142 C5/04E4: E2 20 SEP #$20 C5/04E6: A5 1E LDA $1E C5/04E8: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/04EB: 85 1E STA $1E C5/04ED: C8 INY ; next instrument C5/04EE: C8 INY C5/04EF: C0 20 00 CPY #$0020 C5/04F2: D0 E1 BNE $04D5 C5/04F4: A9 F0 LDA #$F0 ; end of chunk C5/04F6: 85 1E STA $1E C5/04F8: E2 20 SEP #$20 C5/04FA: A5 05 LDA $05 ; previous song C5/04FC: 30 08 BMI $0506 ; branch if previous song invalid C5/04FE: A6 04 LDX $04 ; save previous song info C5/0500: 86 08 STX $08 C5/0502: A6 06 LDX $06 C5/0504: 86 0A STX $0A C5/0506: A6 00 LDX $00 ; set current song info C5/0508: 86 04 STX $04 C5/050A: A6 02 LDX $02 C5/050C: 86 06 STX $06 C5/050E: A2 00 1C LDX #$1C00 ; transfer destination = $1C00 (song data) C5/0511: 8E 42 21 STX $2142 C5/0514: A9 02 LDA #$02 ; transfer 2 bytes at a time C5/0516: 8D 41 21 STA $2141 C5/0519: A5 1E LDA $1E C5/051B: 8D 40 21 STA $2140 C5/051E: CD 40 21 CMP $2140 C5/0521: D0 FB BNE $051E ; wait for acknowledgement from spc C5/0523: 1A INC C5/0524: 29 7F AND #$7F C5/0526: 85 1E STA $1E C5/0528: C2 20 REP #$20 C5/052A: A5 01 LDA $01 ; song number C5/052C: 29 FF 00 AND #$00FF C5/052F: 85 E2 STA $E2 C5/0531: 0A ASL C5/0532: 18 CLC C5/0533: 65 E2 ADC $E2 C5/0535: AA TAX C5/0536: E2 20 SEP #$20 C5/0538: BF 96 3E C5 LDA $C53E96,X ; pointer to song data C5/053C: 85 10 STA $10 C5/053E: BF 97 3E C5 LDA $C53E97,X C5/0542: 85 11 STA $11 C5/0544: BF 98 3E C5 LDA $C53E98,X C5/0548: 85 12 STA $12 C5/054A: A4 10 LDY $10 C5/054C: 64 10 STZ $10 C5/054E: 64 11 STZ $11 C5/0550: B7 10 LDA [$10],Y ; +$1C = size C5/0552: 85 1C STA $1C C5/0554: C8 INY C5/0555: D0 02 BNE $0559 C5/0557: E6 12 INC $12 C5/0559: B7 10 LDA [$10],Y C5/055B: 85 1D STA $1D C5/055D: C8 INY C5/055E: D0 02 BNE $0562 C5/0560: E6 12 INC $12 C5/0562: A6 1C LDX $1C C5/0564: E0 00 10 CPX #$1000 C5/0567: 90 02 BCC $056B ; branch if size < $1000 C5/0569: E6 F3 INC $F3 ; data will overlap pointers to type 2 sound effects C5/056B: B7 10 LDA [$10],Y ; copy two bytes to spc C5/056D: 8D 42 21 STA $2142 C5/0570: C8 INY C5/0571: D0 02 BNE $0575 C5/0573: E6 12 INC $12 C5/0575: B7 10 LDA [$10],Y C5/0577: 8D 43 21 STA $2143 C5/057A: C8 INY C5/057B: D0 02 BNE $057F C5/057D: E6 12 INC $12 C5/057F: A5 1E LDA $1E C5/0581: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/0584: 85 1E STA $1E C5/0586: CA DEX ; next two bytes C5/0587: CA DEX C5/0588: 10 E1 BPL $056B C5/058A: A9 F0 LDA #$F0 ; command $F0 (end of data transfer) C5/058C: A2 00 04 LDX #$0400 C5/058F: 8D 41 21 STA $2141 C5/0592: 8D 40 21 STA $2140 C5/0595: CD 40 21 CMP $2140 C5/0598: F0 06 BEQ $05A0 ; wait for acknowledgement from spc C5/059A: CA DEX C5/059B: D0 F8 BNE $0595 C5/059D: A2 00 04 LDX #$0400 ; wait a little bit longer... C5/05A0: CA DEX C5/05A1: D0 FD BNE $05A0 C5/05A3: 4C 71 01 JMP $0171 ; return ; [ SPC Interrupt ] C5/05A6: E2 20 SEP #$20 C5/05A8: A5 03 LDA $03 ; copy data to spc ports C5/05AA: 8D 43 21 STA $2143 C5/05AD: A5 02 LDA $02 C5/05AF: 8D 42 21 STA $2142 C5/05B2: A5 01 LDA $01 C5/05B4: 8D 41 21 STA $2141 C5/05B7: A5 00 LDA $00 C5/05B9: A2 00 04 LDX #$0400 C5/05BC: 8D 40 21 STA $2140 C5/05BF: CD 40 21 CMP $2140 ; wait for acknowledgement from spc C5/05C2: F0 03 BEQ $05C7 C5/05C4: CA DEX C5/05C5: D0 F8 BNE $05BF ; check 1024 times, then give up and continue anyway C5/05C7: C9 F0 CMP #$F0 C5/05C9: 90 3A BCC $0605 ; return if command < $F0 C5/05CB: C9 F2 CMP #$F2 C5/05CD: B0 14 BCS $05E3 ; branch if command >= $F2 ; command $F0/$F1 (stop song) C5/05CF: A5 05 LDA $05 C5/05D1: 30 0A BMI $05DD ; branch if current song is invalid C5/05D3: 85 09 STA $09 ; save previous song info C5/05D5: A5 04 LDA $04 C5/05D7: 85 08 STA $08 C5/05D9: A6 06 LDX $06 C5/05DB: 86 0A STX $0A C5/05DD: A9 FF LDA #$FF ; clear current song C5/05DF: 85 05 STA $05 C5/05E1: 80 22 BRA $0605 ; command $F2-$FF C5/05E3: C9 FC CMP #$FC C5/05E5: D0 1E BNE $0605 ; return if not command $FC ; command $FC (set echo delay) C5/05E7: A5 01 LDA $01 C5/05E9: 29 0F AND #$0F C5/05EB: 85 F0 STA $F0 ; echo delay C5/05ED: 0A ASL C5/05EE: 0A ASL C5/05EF: 0A ASL C5/05F0: 49 FF EOR #$FF C5/05F2: 1A INC C5/05F3: 18 CLC C5/05F4: 69 F5 ADC #$F5 C5/05F6: 85 F2 STA $F2 ; start of echo delay buffer C5/05F8: A2 00 00 LDX #$0000 C5/05FB: A9 00 LDA #$00 C5/05FD: 95 20 STA $20,X ; clear $1320-$135F ??? C5/05FF: E8 INX C5/0600: E0 40 00 CPX #$0040 C5/0603: D0 F8 BNE $05FD C5/0605: 4C 71 01 JMP $0171 ; return ; [ SPC Command $30-$3F: Quick Load Song ] C5/0608: C2 20 REP #$20 C5/060A: 29 0F 00 AND #$000F C5/060D: 0A ASL C5/060E: 0A ASL C5/060F: AA TAX C5/0610: BF BB 06 C5 LDA $C506BB,X ; spc command data C5/0614: 85 02 STA $02 C5/0616: BF B9 06 C5 LDA $C506B9,X C5/061A: 85 00 STA $00 C5/061C: 4C 46 01 JMP $0146 ; execute spc command ; [ Check Alternate Start Position ] C5/061F: 08 PHP C5/0620: E2 20 SEP #$20 C5/0622: A5 00 LDA $00 C5/0624: C9 14 CMP #$14 C5/0626: B0 10 BCS $0638 ; branch if new song is loading from alternate start position C5/0628: A2 00 00 LDX #$0000 C5/062B: BF F9 06 C5 LDA $C506F9,X ; songs with alternate start positions C5/062F: 30 0D BMI $063E ; return if end of list is reached C5/0631: C5 01 CMP $01 C5/0633: F0 03 BEQ $0638 ; branch if new song has alternate start position C5/0635: E8 INX C5/0636: 80 F3 BRA $062B C5/0638: A9 04 LDA #$04 ; play song from alternate start position C5/063A: 05 00 ORA $00 C5/063C: 85 00 STA $00 C5/063E: 28 PLP C5/063F: 60 RTS ; [ Transfer Pointers to Type 2 Sound Effects to SPC ] ; ending theme 1 is too long to fit in the spc's ram, so it overlaps the pointers to type 2 sound ; effects that are stored right after. this function puts them back C5/0640: E2 20 SEP #$20 C5/0642: A9 FE LDA #$FE ; spc command $FE C5/0644: 8D 40 21 STA $2140 C5/0647: CD 40 21 CMP $2140 C5/064A: D0 F8 BNE $0644 ; wait for acknowledgement from spc C5/064C: 1A INC C5/064D: 29 7F AND #$7F C5/064F: EB XBA C5/0650: A2 00 2C LDX #$2C00 ; destination address (pointers to type 2 sound effects) C5/0653: 8E 42 21 STX $2142 C5/0656: A9 02 LDA #$02 ; transfer 2 bytes at a time C5/0658: 8D 41 21 STA $2141 C5/065B: EB XBA C5/065C: 8D 40 21 STA $2140 C5/065F: CD 40 21 CMP $2140 C5/0662: D0 FB BNE $065F C5/0664: 1A INC C5/0665: 29 7F AND #$7F C5/0667: 85 1E STA $1E C5/0669: AF 5C 20 C5 LDA $C5205C ; size of data ($1C00) C5/066D: 85 1C STA $1C C5/066F: AF 5D 20 C5 LDA $C5205D C5/0673: 85 1D STA $1D C5/0675: A2 00 00 LDX #$0000 C5/0678: BF 5E 20 C5 LDA $C5205E,X ; transfer data (pointers to sound effect data) C5/067C: 8D 42 21 STA $2142 C5/067F: BF 5F 20 C5 LDA $C5205F,X C5/0683: 8D 43 21 STA $2143 C5/0686: E8 INX ; next two bytes C5/0687: E8 INX C5/0688: A5 1E LDA $1E C5/068A: 20 A9 06 JSR $06A9 ; verify data transfer to spc C5/068D: 85 1E STA $1E C5/068F: E4 1C CPX $1C C5/0691: D0 E5 BNE $0678 C5/0693: A9 F0 LDA #$F0 ; command $F0 (end of data transfer) C5/0695: A2 00 04 LDX #$0400 C5/0698: 8D 41 21 STA $2141 C5/069B: 8D 40 21 STA $2140 C5/069E: CD 40 21 CMP $2140 C5/06A1: F0 03 BEQ $06A6 ; wait for acknowledgement from spc C5/06A3: CA DEX C5/06A4: D0 F8 BNE $069E C5/06A6: 64 F3 STZ $F3 ; data no longer overlaps pointers to type 2 sound effects C5/06A8: 60 RTS ; [ Verify Data Transfer to SPC ] C5/06A9: 08 PHP C5/06AA: E2 20 SEP #$20 C5/06AC: 8D 40 21 STA $2140 C5/06AF: CD 40 21 CMP $2140 C5/06B2: D0 FB BNE $06AF C5/06B4: 1A INC C5/06B5: 29 7F AND #$7F C5/06B7: 28 PLP C5/06B8: 60 RTS ; spc command data for command $30-$3F (quick load new song) C5/06B9: .DB $10, $00, $FF, $00, $10, $01, $FF, $00, $10, $02, $FF, $00, $10, $03, $FF, $00 C5/06C9: .DB $10, $04, $FF, $00, $10, $05, $FF, $00, $10, $06, $FF, $00, $10, $07, $FF, $00 C5/06D9: .DB $10, $08, $FF, $00, $10, $09, $FF, $00, $10, $0A, $FF, $00, $10, $0B, $FF, $00 C5/06E9: .DB $10, $0C, $FF, $00, $10, $0D, $FF, $00, $10, $0E, $FF, $00, $10, $0F, $FF, $00 ; songs with alternate start positions (none of these songs have an alternate start position) C5/06F9: .DB $24, $38, $14, $33, $FF ; spc command $10-$17 jump table (load new song) C5/06FE: .DW $0180, $0180, $0171, $0171, $0180, $0180, $0171, $0171 ; -------------------------------------------[ Menu: Misc. ]-------------------------------------------- ; [ Clear Party Character Data ] D4/CA00: 64 75 STZ $75 ; clear battle order D4/CA02: 64 76 STZ $76 D4/CA04: 64 77 STZ $77 D4/CA06: 64 78 STZ $78 D4/CA08: A4 00 LDY $00 D4/CA0A: 84 6D STY $6D ; clear character data pointers D4/CA0C: 84 6F STY $6F D4/CA0E: 84 71 STY $71 D4/CA10: 84 73 STY $73 D4/CA12: A9 FF LDA #$FF D4/CA14: 85 69 STA $69 ; set character numbers to $FF (no character) D4/CA16: 85 6A STA $6A D4/CA18: 85 6B STA $6B D4/CA1A: 85 6C STA $6C D4/CA1C: 6B RTL ; [ init hdma for menu window gradient bars ] ; A: 0 = normal, 1 = save select, 2 = colosseum D4/CA1D: EB XBA D4/CA1E: A5 00 LDA $00 D4/CA20: EB XBA D4/CA21: 0A ASL D4/CA22: AA TAX D4/CA23: C2 20 REP #$20 D4/CA25: BF 7C CA D4 LDA $D4CA7C,X D4/CA29: 8D 32 43 STA $4332 D4/CA2C: BF 71 CA D4 LDA $D4CA71,X D4/CA30: 8D 42 43 STA $4342 D4/CA33: E2 20 SEP #$20 D4/CA35: 9C 30 43 STZ $4330 D4/CA38: A9 32 LDA #$32 D4/CA3A: 8D 31 43 STA $4331 D4/CA3D: A9 D4 LDA #$D4 D4/CA3F: 8D 34 43 STA $4334 D4/CA42: 8D 37 43 STA $4337 D4/CA45: 8D 44 43 STA $4344 D4/CA48: 8D 47 43 STA $4347 D4/CA4B: 9C 40 43 STZ $4340 D4/CA4E: A9 31 LDA #$31 D4/CA50: 8D 41 43 STA $4341 D4/CA53: A9 18 LDA #$18 D4/CA55: 04 43 TSB $43 D4/CA57: A9 80 LDA #$80 D4/CA59: 8D 30 21 STA $2130 D4/CA5C: A9 82 LDA #$82 D4/CA5E: 8D 31 21 STA $2131 D4/CA61: A9 17 LDA #$17 D4/CA63: 8D 2C 21 STA $212C D4/CA66: A9 17 LDA #$17 D4/CA68: 8D 2D 21 STA $212D D4/CA6B: A9 E0 LDA #$E0 D4/CA6D: 8D 32 21 STA $2132 D4/CA70: 6B RTL D4/CA71: .DW $CA77, $CAB3, $CAC4 ; add/sub hdma data for normal menu window D4/CA77: .DB $70, $02, $70, $82, $00 D4/CA7C: .DW $CA82, $CACD, $CB42 ; fixed color hdma data for normal menu window D4/CA82: .DB $0A, $EB, $0A, $EA, $0A, $E9, $0A, $E8, $0A, $E7, $0A, $E6, $0A, $E5, $0A, $E4 D4/CA92: .DB $0A, $E3, $0A, $E2, $0A, $E1, $0A, $E0, $0A, $E1, $0A, $E2, $0A, $E3, $0A, $E4 D4/CAA2: .DB $0A, $E5, $0A, $E6, $0A, $E7, $0A, $E8, $0A, $E9, $0A, $EA, $0A, $EB, $0A, $EC D4/CAB2: .DB $00 ; add/sub hdma data for save select menu window D4/CAB3: .DB $1F, $02, $10, $82, $1C, $02, $1C, $82, $1C, $02, $1C, $82, $1C, $02, $1C, $82 D4/CAC3: .DB $00 ; add/sub hdma data for colosseum menu window D4/CAC4: .DB $17, $02, $78, $82, $24, $02, $24, $82, $00 ; fixed color hdma data for save select menu window D4/CACD: .DB $0F, $E0, $02, $E7, $02, $E6, $02, $E5, $02, $E4, $02, $E3, $02, $E2, $02, $E1 D4/CADD: .DB $02, $E0, $02, $E1, $02, $E2, $02, $E3, $02, $E4, $02, $E5, $02, $E6, $02, $E7 D4/CAED: .DB $04, $E7, $04, $E6, $04, $E5, $04, $E4, $04, $E3, $04, $E2, $04, $E1, $04, $E0 D4/CAFD: .DB $04, $E1, $04, $E2, $04, $E3, $04, $E4, $04, $E5, $04, $E6, $04, $E7, $04, $E6 D4/CB0D: .DB $04, $E5, $04, $E4, $04, $E3, $04, $E2, $04, $E1, $04, $E0, $04, $E1, $04, $E2 D4/CB1D: .DB $04, $E3, $04, $E4, $04, $E5, $04, $E6, $04, $E7, $04, $E6, $04, $E5, $04, $E4 D4/CB2D: .DB $04, $E3, $04, $E2, $04, $E1, $04, $E0, $04, $E1, $04, $E2, $04, $E3, $04, $E4 D4/CB3D: .DB $04, $E5, $04, $E6, $00 ; fixed color hdma data for colosseum menu window D4/CB42: .DB $07, $E0, $02, $E7, $02, $E6, $02, $E5, $02, $E4, $02, $E3, $02, $E2, $02, $E1 D4/CB52: .DB $02, $E0, $02, $E1, $02, $E2, $02, $E3, $02, $E4, $02, $E5, $02, $E6, $03, $E7 D4/CB62: .DB $67, $E0, $02, $EA, $04, $E9, $04, $E8, $04, $E7, $04, $E6, $04, $E5, $04, $E4 D4/CB72: .DB $04, $E3, $04, $E2, $04, $E1, $04, $E0, $04, $E1, $04, $E2, $04, $E3, $04, $E4 D4/CB82: .DB $04, $E5, $04, $E6, $04, $E7, $04, $E8, $04, $E9, $02, $EA, $00 ; [ Init HDMA for Mode 7 Variables ] D4/CB8F: A9 42 LDA #$42 D4/CB91: 8D 40 43 STA $4340 D4/CB94: 8D 50 43 STA $4350 D4/CB97: 8D 60 43 STA $4360 D4/CB9A: 8D 70 43 STA $4370 D4/CB9D: A9 1B LDA #$1B D4/CB9F: 8D 41 43 STA $4341 D4/CBA2: 1A INC D4/CBA3: 8D 51 43 STA $4351 D4/CBA6: 1A INC D4/CBA7: 8D 61 43 STA $4361 D4/CBAA: 1A INC D4/CBAB: 8D 71 43 STA $4371 D4/CBAE: A0 E7 CB LDY #$CBE7 D4/CBB1: 8C 42 43 STY $4342 D4/CBB4: A0 EE CB LDY #$CBEE D4/CBB7: 8C 52 43 STY $4352 D4/CBBA: A0 F5 CB LDY #$CBF5 D4/CBBD: 8C 62 43 STY $4362 D4/CBC0: A0 E7 CB LDY #$CBE7 D4/CBC3: 8C 72 43 STY $4372 D4/CBC6: A9 D4 LDA #$D4 D4/CBC8: 8D 44 43 STA $4344 D4/CBCB: 8D 54 43 STA $4354 D4/CBCE: 8D 64 43 STA $4364 D4/CBD1: 8D 74 43 STA $4374 D4/CBD4: A9 00 LDA #$00 D4/CBD6: 8D 47 43 STA $4347 D4/CBD9: 8D 57 43 STA $4357 D4/CBDC: 8D 67 43 STA $4367 D4/CBDF: 8D 77 43 STA $4377 D4/CBE2: A9 F0 LDA #$F0 D4/CBE4: 04 43 TSB $43 D4/CBE6: 6B RTL ; M7A & M7D HDMA table D4/CBE7: .DB $FB \ .DW $0604 .DB $E5 \ .DW $06F8 .DB $00 ; M7B HDMA table D4/CBEE: .DB $FB \ .DW $07C6 .DB $E5 \ .DW $08BA .DB $00 ; M7C HDMA table D4/CBF7: .DB $FB \ .DW $0988 .DB $E5 \ .DW $0A7C .DB $00 ; [ Init Mode 7 HDMA (credits, airship above clouds) ] D4/CBFC: A9 43 LDA #$43 D4/CBFE: 8D 10 43 STA $4310 D4/CC01: 8D 20 43 STA $4320 D4/CC04: A9 42 LDA #$42 D4/CC06: 8D 40 43 STA $4340 D4/CC09: 8D 50 43 STA $4350 D4/CC0C: 8D 60 43 STA $4360 D4/CC0F: 8D 70 43 STA $4370 D4/CC12: A9 0D LDA #$0D ; channel #1 destination = $210D, $210E (bg1 HScroll, vscroll) D4/CC14: 8D 11 43 STA $4311 D4/CC17: A9 1F LDA #$1F ; channel #2 destination = $211F, $2120 (center x, y) D4/CC19: 8D 21 43 STA $4321 D4/CC1C: A9 1B LDA #$1B ; channel #4 destination = $211B (M7A) D4/CC1E: 8D 41 43 STA $4341 D4/CC21: 1A INC ; channel #5 destination = $211C (M7B) D4/CC22: 8D 51 43 STA $4351 D4/CC25: 1A INC ; channel #6 destination = $211D (M7C) D4/CC26: 8D 61 43 STA $4361 D4/CC29: 1A INC ; channel #7 destination = $211E (M7D) D4/CC2A: 8D 71 43 STA $4371 D4/CC2D: A0 3A CD LDY #$CD3A ; channel #1 source = $D4CD3A D4/CC30: 8C 12 43 STY $4312 D4/CC33: A0 41 CD LDY #$CD41 ; channel #2 source = $D4CD41 D4/CC36: 8C 22 43 STY $4322 D4/CC39: A0 25 CD LDY #$CD25 ; channel #4 source = $D4CD25 D4/CC3C: 8C 42 43 STY $4342 D4/CC3F: A0 2C CD LDY #$CD2C ; channel #5 source = $D4CD2C D4/CC42: 8C 52 43 STY $4352 D4/CC45: A0 33 CD LDY #$CD33 ; channel #6 source = $D4CD33 D4/CC48: 8C 62 43 STY $4362 D4/CC4B: A0 25 CD LDY #$CD25 ; channel #7 source = $D4CD25 D4/CC4E: 8C 72 43 STY $4372 D4/CC51: A9 D4 LDA #$D4 D4/CC53: 8D 14 43 STA $4314 D4/CC56: 8D 24 43 STA $4324 D4/CC59: 8D 44 43 STA $4344 D4/CC5C: 8D 54 43 STA $4354 D4/CC5F: 8D 64 43 STA $4364 D4/CC62: 8D 74 43 STA $4374 D4/CC65: A9 00 LDA #$00 D4/CC67: 8D 47 43 STA $4347 D4/CC6A: 8D 57 43 STA $4357 D4/CC6D: 8D 67 43 STA $4367 D4/CC70: 8D 77 43 STA $4377 D4/CC73: A9 7E LDA #$7E D4/CC75: 8D 17 43 STA $4317 D4/CC78: 8D 27 43 STA $4327 D4/CC7B: A9 04 LDA #$04 D4/CC7D: 8D 30 43 STA $4330 D4/CC80: A9 30 LDA #$30 ; channel #3 destination = $2130, $2131, $2132, $2133 (fixed color) D4/CC82: 8D 31 43 STA $4331 D4/CC85: A0 98 CC LDY #$CC98 ; channel #3 source = $D4CC98 D4/CC88: 8C 32 43 STY $4332 D4/CC8B: A9 D4 LDA #$D4 D4/CC8D: 8D 34 43 STA $4334 D4/CC90: 8D 37 43 STA $4337 D4/CC93: A9 FE LDA #$FE D4/CC95: 04 43 TSB $43 D4/CC97: 6B RTL ; fixed color HDMA table D4/CC98: .DB $63, $80, $01, $E0, $00 D4/CC9D: .DB $01, $80, $01, $E1, $00 D4/CCA2: .DB $01, $80, $01, $E2, $00 D4/CCA7: .DB $01, $80, $01, $E3, $00 D4/CCAC: .DB $01, $80, $01, $E4, $00 D4/CCB1: .DB $01, $80, $01, $E5, $00 D4/CCB6: .DB $01, $80, $01, $E6, $00 D4/CCBB: .DB $01, $80, $01, $E7, $00 D4/CCC0: .DB $01, $80, $01, $E8, $00 D4/CCC5: .DB $01, $80, $01, $E9, $00 D4/CCCA: .DB $01, $80, $01, $EA, $00 D4/CCCF: .DB $01, $80, $01, $EB, $00 D4/CCD4: .DB $01, $80, $01, $EC, $00 D4/CCD9: .DB $02, $80, $01, $EE, $00 D4/CCDE: .DB $03, $80, $01, $F0, $00 D4/CCE3: .DB $03, $80, $01, $F3, $00 D4/CCE8: .DB $02, $80, $01, $F6, $00 D4/CCED: .DB $01, $80, $01, $FA, $00 D4/CCF2: .DB $01, $80, $01, $FB, $00 D4/CCF7: .DB $01, $80, $01, $FC, $00 D4/CCFC: .DB $01, $80, $01, $EF, $00 D4/CD01: .DB $01, $80, $01, $EC, $00 D4/CD06: .DB $01, $80, $01, $EA, $00 D4/CD0B: .DB $01, $80, $01, $E6, $00 D4/CD10: .DB $01, $80, $01, $E3, $00 D4/CD15: .DB $02, $80, $01, $E2, $00 D4/CD1A: .DB $03, $80, $01, $E1, $00 D4/CD1F: .DB $01, $82, $81, $E0, $00 D4/CD24: .DB $00 ; M7A & M7D HDMA table D4/CD25: .DB $7C \ .DW $0600 .DB $E4 \ .DW $06F8 .DB $00 ; M7B HDMA table D4/CD2C: .DB $7C \ .DW $07C2 .DB $E4 \ .DW $08BA .DB $00 ; M7C HDMA table D4/CD33: .DB $7C \ .DW $0984 .DB $E4 \ .DW $0A7C .DB $00 ; bg1 scroll HDMA table D4/CD3A: .DB $7C \ .DW $B68D .DB $64 \ .DW $B691 .DB $00 ; center x,y position HDMA table D4/CD41: .DB $7C \ .DW $B695 .DB $64 \ .DW $B699 .DB $00 ; [ Init Menu Hardware Registers ] ppu_init: D4/CD48: A9 01 LDA #$01 D4/CD4A: 8D 01 21 STA $2101 D4/CD4D: A6 00 LDX $00 D4/CD4F: 8E 02 21 STX $2102 D4/CD52: A9 09 LDA #$09 D4/CD54: 8D 05 21 STA $2105 D4/CD57: A9 00 LDA #$00 D4/CD59: 8D 06 21 STA $2106 D4/CD5C: A9 03 LDA #$03 D4/CD5E: 8D 07 21 STA $2107 D4/CD61: A9 13 LDA #$13 D4/CD63: 8D 08 21 STA $2108 D4/CD66: A9 43 LDA #$43 D4/CD68: 8D 09 21 STA $2109 D4/CD6B: A9 65 LDA #$65 D4/CD6D: 8D 0B 21 STA $210B D4/CD70: A9 66 LDA #$66 D4/CD72: 8D 0C 21 STA $210C D4/CD75: 7B TDC D4/CD76: 8D 0C 42 STA $420C D4/CD79: 8D 0B 42 STA $420B D4/CD7C: 8D 0D 21 STA $210D D4/CD7F: 8D 0D 21 STA $210D D4/CD82: 8D 0E 21 STA $210E D4/CD85: 8D 0E 21 STA $210E D4/CD88: 8D 0F 21 STA $210F D4/CD8B: 8D 0F 21 STA $210F D4/CD8E: 8D 10 21 STA $2110 D4/CD91: 8D 10 21 STA $2110 D4/CD94: 8D 11 21 STA $2111 D4/CD97: 8D 11 21 STA $2111 D4/CD9A: 8D 12 21 STA $2112 D4/CD9D: 8D 12 21 STA $2112 D4/CDA0: 8D 13 21 STA $2113 D4/CDA3: 8D 13 21 STA $2113 D4/CDA6: 8D 14 21 STA $2114 D4/CDA9: 8D 14 21 STA $2114 D4/CDAC: A9 80 LDA #$80 D4/CDAE: 8D 15 21 STA $2115 D4/CDB1: 7B TDC D4/CDB2: AA TAX D4/CDB3: 8E 16 21 STX $2116 D4/CDB6: 8D 21 21 STA $2121 D4/CDB9: A9 3F LDA #$3F D4/CDBB: 8D 23 21 STA $2123 D4/CDBE: A9 33 LDA #$33 D4/CDC0: 8D 24 21 STA $2124 D4/CDC3: 8D 25 21 STA $2125 D4/CDC6: A9 08 LDA #$08 D4/CDC8: 8D 26 21 STA $2126 D4/CDCB: 8D 28 21 STA $2128 D4/CDCE: A9 F7 LDA #$F7 D4/CDD0: 8D 27 21 STA $2127 D4/CDD3: 8D 29 21 STA $2129 D4/CDD6: 7B TDC D4/CDD7: 8D 2F 21 STA $212F D4/CDDA: 8D 33 21 STA $2133 D4/CDDD: 8D 2A 21 STA $212A D4/CDE0: 8D 2B 21 STA $212B D4/CDE3: A9 1F LDA #$1F D4/CDE5: 8D 2C 21 STA $212C D4/CDE8: A9 0F LDA #$0F D4/CDEA: 8D 2D 21 STA $212D D4/CDED: A9 0F LDA #$0F D4/CDEF: 8D 2E 21 STA $212E D4/CDF2: 6B RTL ; [ Init Menu RAM ] D4/CDF3: 7B TDC D4/CDF4: A8 TAY D4/CDF5: 84 BB STY $BB ; clear MODE7 registers D4/CDF7: 84 BD STY $BD D4/CDF9: 84 BF STY $BF D4/CDFB: 84 C1 STY $C1 D4/CDFD: 84 B7 STY $B7 D4/CDFF: 84 B9 STY $B9 D4/CE01: 84 06 STY $06 ; clear controller buttons D4/CE03: 84 08 STY $08 D4/CE05: 84 0C STY $0C D4/CE07: 84 0A STY $0A D4/CE09: 84 97 STY $97 ; D4/CE0B: 84 2B STY $2B ; clear current thread code pointer D4/CE0D: 85 43 STA $43 ; disable HDMA D4/CE0F: 85 26 STA $26 ; clear menu/cinematic state D4/CE11: 85 25 STA $25 ; clear main menu selection D4/CE13: 85 B4 STA $B4 ; use inverse credits palette D4/CE15: 85 B5 STA $B5 ; clear mosaic register D4/CE17: 85 28 STA $28 ; clear current selection D4/CE19: 85 29 STA $29 ; clear high byte of bg data D4/CE1B: 85 60 STA $60 ; clear portrait thread data pointers D4/CE1D: 85 61 STA $61 D4/CE1F: 85 62 STA $62 D4/CE21: 85 63 STA $63 D4/CE23: 85 46 STA $46 ; clear cursor/scrolling flags D4/CE25: 85 66 STA $66 ; clear current saved game slot D4/CE27: 85 AE STA $AE ; clear current sound effect D4/CE29: A9 FF LDA #$FF D4/CE2B: 85 86 STA $86 ; clear cursor positions D4/CE2D: 85 88 STA $88 D4/CE2F: 85 8A STA $8A D4/CE31: 85 8C STA $8C D4/CE33: A9 05 LDA #$05 ; D4/CE35: 85 45 STA $45 D4/CE37: 84 1B STY $1B ; DMA 1 destination = $0000 VRAM D4/CE39: A0 00 40 LDY #$4000 ; DMA 2 destination = $4000 VRAM D4/CE3C: 84 14 STY $14 D4/CE3E: A0 49 78 LDY #$7849 ; DMA 2 source = $7E7849 (bg3 data) D4/CE41: 84 16 STY $16 D4/CE43: A9 7E LDA #$7E D4/CE45: 85 18 STA $18 D4/CE47: 85 1F STA $1F D4/CE49: A0 00 10 LDY #$1000 ; DMA 1 & 2 size = $1000 D4/CE4C: 84 12 STY $12 D4/CE4E: 84 19 STY $19 D4/CE50: A9 0C LDA #$0C ; D4/CE52: 85 B6 STA $B6 D4/CE54: 6B RTL D4/CE55: A9 70 LDA #$70 D4/CE57: 8F 89 9D 7E STA $7E9D89 D4/CE5B: 8F 8B 9D 7E STA $7E9D8B D4/CE5F: A9 11 LDA #$11 D4/CE61: 8F 8A 9D 7E STA $7E9D8A D4/CE65: 8F 8C 9D 7E STA $7E9D8C D4/CE69: 9C 10 43 STZ $4310 D4/CE6C: A9 2C LDA #$2C D4/CE6E: 8D 11 43 STA $4311 D4/CE71: A0 89 9D LDY #$9D89 D4/CE74: 8C 12 43 STY $4312 D4/CE77: A9 7E LDA #$7E D4/CE79: 8D 14 43 STA $4314 D4/CE7C: A9 7E LDA #$7E D4/CE7E: 8D 17 43 STA $4317 D4/CE81: A9 02 LDA #$02 D4/CE83: 04 43 TSB $43 D4/CE85: 6B RTL D4/CE86: .DB $70, $89, $9D D4/CE89: .DB $70, $89, $9D ; [ Init Hardware Registers (ending character roll) ] D4/CE8C: A9 03 LDA #$03 D4/CE8E: 8D 01 21 STA $2101 D4/CE91: A6 00 LDX $00 D4/CE93: 8E 02 21 STX $2102 D4/CE96: A9 09 LDA #$09 D4/CE98: 8D 05 21 STA $2105 D4/CE9B: A9 03 LDA #$03 D4/CE9D: 8D 07 21 STA $2107 D4/CEA0: A9 11 LDA #$11 D4/CEA2: 8D 08 21 STA $2108 D4/CEA5: A9 19 LDA #$19 D4/CEA7: 8D 09 21 STA $2109 D4/CEAA: 8D 0A 21 STA $210A D4/CEAD: A9 33 LDA #$33 D4/CEAF: 8D 0B 21 STA $210B D4/CEB2: A9 22 LDA #$22 D4/CEB4: 8D 0C 21 STA $210C D4/CEB7: 20 22 CF JSR $CF22 D4/CEBA: 9C 30 21 STZ $2130 D4/CEBD: A9 E0 LDA #$E0 D4/CEBF: 8D 32 21 STA $2132 D4/CEC2: A9 17 LDA #$17 D4/CEC4: 8D 2C 21 STA $212C D4/CEC7: A9 02 LDA #$02 D4/CEC9: 8D 2D 21 STA $212D D4/CECC: A9 82 LDA #$82 D4/CECE: 8D 30 21 STA $2130 D4/CED1: A9 D1 LDA #$D1 D4/CED3: 8D 31 21 STA $2131 D4/CED6: 6B RTL ; [ Init Hardware Registers (ending credits) ] D4/CED7: A9 03 LDA #$03 D4/CED9: 8D 01 21 STA $2101 D4/CEDC: A6 00 LDX $00 D4/CEDE: 8E 02 21 STX $2102 D4/CEE1: A9 07 LDA #$07 D4/CEE3: 8D 05 21 STA $2105 D4/CEE6: A9 58 LDA #$58 D4/CEE8: 8D 07 21 STA $2107 D4/CEEB: A9 50 LDA #$50 D4/CEED: 8D 08 21 STA $2108 D4/CEF0: A9 7C LDA #$7C D4/CEF2: 8D 09 21 STA $2109 D4/CEF5: 8D 0A 21 STA $210A D4/CEF8: A9 44 LDA #$44 D4/CEFA: 8D 0B 21 STA $210B D4/CEFD: A9 77 LDA #$77 D4/CEFF: 8D 0C 21 STA $210C D4/CF02: 20 22 CF JSR $CF22 D4/CF05: 9C 1A 21 STZ $211A D4/CF08: A9 13 LDA #$13 D4/CF0A: 8D 2C 21 STA $212C D4/CF0D: A9 10 LDA #$10 D4/CF0F: 8D 2D 21 STA $212D D4/CF12: A9 E0 LDA #$E0 D4/CF14: 8D 32 21 STA $2132 D4/CF17: A9 82 LDA #$82 D4/CF19: 8D 30 21 STA $2130 D4/CF1C: A9 81 LDA #$81 D4/CF1E: 8D 31 21 STA $2131 D4/CF21: 6B RTL ; [ Init Window Settings ] D4/CF22: A9 33 LDA #$33 D4/CF24: 8D 23 21 STA $2123 D4/CF27: 8D 24 21 STA $2124 D4/CF2A: A9 08 LDA #$08 D4/CF2C: 8D 26 21 STA $2126 D4/CF2F: 8D 28 21 STA $2128 D4/CF32: A9 F7 LDA #$F7 D4/CF34: 8D 27 21 STA $2127 D4/CF37: 8D 29 21 STA $2129 D4/CF3A: 60 RTS ; [ Save Memory for Mode 7 HDMA Data ] m7push: D4/CF3B: A6 00 LDX $00 D4/CF3D: BD 00 06 LDA $0600,X D4/CF40: 9F 00 40 7F STA $7F4000,X D4/CF44: E8 INX D4/CF45: E0 4C 05 CPX #$054C D4/CF48: D0 F3 BNE $CF3D D4/CF4A: 6B RTL ; [ Restore Memory for Mode 7 HDMA Data ] m7_pop: D4/CF4B: A6 00 LDX $00 D4/CF4D: BF 00 40 7F LDA $7F4000,X D4/CF51: 9D 00 06 STA $0600,X D4/CF54: E8 INX D4/CF55: E0 4C 05 CPX #$054C D4/CF58: D0 F3 BNE $CF4D D4/CF5A: 6B RTL ; ----------------------------------------[ Cinematic: The End ]---------------------------------------- ; [ The End ] E5/F400: 18 CLC E5/F401: FB XCE E5/F402: E2 20 SEP #$20 E5/F404: C2 10 REP #$10 E5/F406: A9 00 LDA #$00 E5/F408: 48 PHA E5/F409: AB PLB E5/F40A: A2 00 05 LDX #$0500 ; set dp to $0500 E5/F40D: DA PHX E5/F40E: 2B PLD E5/F40F: A9 80 LDA #$80 ; disable interrupts E5/F411: 8D 00 21 STA $2100 E5/F414: A9 00 LDA #$00 E5/F416: 8D 00 42 STA $4200 E5/F419: 78 SEI E5/F41A: A9 5C LDA #$5C ; set up interrupt jump code E5/F41C: 8D 00 15 STA $1500 E5/F41F: A9 DF LDA #$DF ; nmi: E5/FCDF E5/F421: 8D 01 15 STA $1501 E5/F424: A9 FC LDA #$FC E5/F426: 8D 02 15 STA $1502 E5/F429: A9 E5 LDA #$E5 E5/F42B: 8D 03 15 STA $1503 E5/F42E: A9 5C LDA #$5C E5/F430: 8D 04 15 STA $1504 E5/F433: A9 15 LDA #$15 ; irq: E5/FE15 E5/F435: 8D 05 15 STA $1505 E5/F438: A9 FE LDA #$FE E5/F43A: 8D 06 15 STA $1506 E5/F43D: A9 E5 LDA #$E5 E5/F43F: 8D 07 15 STA $1507 E5/F442: A9 00 LDA #$00 ; init hardware registers E5/F444: 8D 01 21 STA $2101 E5/F447: A9 01 LDA #$01 E5/F449: 8D 05 21 STA $2105 E5/F44C: A9 00 LDA #$00 E5/F44E: 8D 06 21 STA $2106 E5/F451: A9 40 LDA #$40 E5/F453: 8D 07 21 STA $2107 E5/F456: A9 50 LDA #$50 E5/F458: 8D 08 21 STA $2108 E5/F45B: A9 60 LDA #$60 E5/F45D: 8D 09 21 STA $2109 E5/F460: 8D 0A 21 STA $210A E5/F463: A9 00 LDA #$00 E5/F465: 8D 0B 21 STA $210B E5/F468: 8D 0C 21 STA $210C E5/F46B: A9 B6 LDA #$B6 E5/F46D: 8D 0D 21 STA $210D E5/F470: A9 00 LDA #$00 E5/F472: 8D 0D 21 STA $210D E5/F475: A9 A8 LDA #$A8 E5/F477: 8D 0E 21 STA $210E E5/F47A: A9 00 LDA #$00 E5/F47C: 8D 0E 21 STA $210E E5/F47F: A9 B2 LDA #$B2 E5/F481: 8D 0F 21 STA $210F E5/F484: A9 00 LDA #$00 E5/F486: 8D 0F 21 STA $210F E5/F489: A9 AD LDA #$AD E5/F48B: 8D 10 21 STA $2110 E5/F48E: A9 00 LDA #$00 E5/F490: 8D 10 21 STA $2110 E5/F493: 8D 11 21 STA $2111 E5/F496: 8D 11 21 STA $2111 E5/F499: 8D 12 21 STA $2112 E5/F49C: 8D 12 21 STA $2112 E5/F49F: 8D 13 21 STA $2113 E5/F4A2: 8D 13 21 STA $2113 E5/F4A5: 8D 14 21 STA $2114 E5/F4A8: 8D 14 21 STA $2114 E5/F4AB: A9 80 LDA #$80 E5/F4AD: 8D 15 21 STA $2115 E5/F4B0: A9 00 LDA #$00 E5/F4B2: 8D 1A 21 STA $211A E5/F4B5: 8D 1B 21 STA $211B E5/F4B8: 8D 1B 21 STA $211B E5/F4BB: 8D 1C 21 STA $211C E5/F4BE: 8D 1C 21 STA $211C E5/F4C1: 8D 1D 21 STA $211D E5/F4C4: 8D 1D 21 STA $211D E5/F4C7: 8D 1E 21 STA $211E E5/F4CA: 8D 1E 21 STA $211E E5/F4CD: 8D 1F 21 STA $211F E5/F4D0: 8D 1F 21 STA $211F E5/F4D3: 8D 20 21 STA $2120 E5/F4D6: 8D 20 21 STA $2120 E5/F4D9: A9 33 LDA #$33 E5/F4DB: 8D 23 21 STA $2123 E5/F4DE: A9 00 LDA #$00 E5/F4E0: 8D 24 21 STA $2124 E5/F4E3: A9 08 LDA #$08 E5/F4E5: 8D 25 21 STA $2125 E5/F4E8: A9 4E LDA #$4E E5/F4EA: 8D 26 21 STA $2126 E5/F4ED: A9 B1 LDA #$B1 E5/F4EF: 8D 27 21 STA $2127 E5/F4F2: A9 00 LDA #$00 E5/F4F4: 8D 28 21 STA $2128 E5/F4F7: 8D 29 21 STA $2129 E5/F4FA: A9 00 LDA #$00 E5/F4FC: 8D 2A 21 STA $212A E5/F4FF: A9 00 LDA #$00 E5/F501: 8D 2B 21 STA $212B E5/F504: A9 13 LDA #$13 E5/F506: 8D 2C 21 STA $212C E5/F509: A9 00 LDA #$00 E5/F50B: 8D 2D 21 STA $212D E5/F50E: A9 13 LDA #$13 E5/F510: 8D 2E 21 STA $212E E5/F513: A9 00 LDA #$00 E5/F515: 8D 2F 21 STA $212F E5/F518: A9 02 LDA #$02 E5/F51A: 8D 30 21 STA $2130 E5/F51D: A9 00 LDA #$00 E5/F51F: 8D 31 21 STA $2131 E5/F522: A9 E0 LDA #$E0 E5/F524: 8D 32 21 STA $2132 E5/F527: A9 00 LDA #$00 E5/F529: 8D 33 21 STA $2133 E5/F52C: A9 FF LDA #$FF E5/F52E: 8D 01 42 STA $4201 E5/F531: A9 00 LDA #$00 E5/F533: 8D 02 42 STA $4202 E5/F536: 8D 03 42 STA $4203 E5/F539: 8D 04 42 STA $4204 E5/F53C: 8D 05 42 STA $4205 E5/F53F: 8D 06 42 STA $4206 E5/F542: 8D 07 42 STA $4207 E5/F545: 8D 08 42 STA $4208 E5/F548: 8D 09 42 STA $4209 E5/F54B: 8D 0A 42 STA $420A E5/F54E: 8D 0B 42 STA $420B E5/F551: 8D 0C 42 STA $420C E5/F554: A9 00 LDA #$00 E5/F556: 8D 16 21 STA $2116 E5/F559: 8D 17 21 STA $2117 E5/F55C: A9 01 LDA #$01 E5/F55E: 8D 00 43 STA $4300 E5/F561: A9 18 LDA #$18 E5/F563: 8D 01 43 STA $4301 E5/F566: A9 00 LDA #$00 ; $E96300 (the end graphics) E5/F568: 8D 02 43 STA $4302 E5/F56B: A9 63 LDA #$63 E5/F56D: 8D 03 43 STA $4303 E5/F570: A9 E9 LDA #$E9 E5/F572: 8D 04 43 STA $4304 E5/F575: A9 00 LDA #$00 ; size = $0D00 E5/F577: 8D 05 43 STA $4305 E5/F57A: A9 0D LDA #$0D E5/F57C: 8D 06 43 STA $4306 E5/F57F: A9 01 LDA #$01 ; enable dma E5/F581: 8D 0B 42 STA $420B E5/F584: A9 00 LDA #$00 ; $C9FE00 (last $100 bytes of graphics) E5/F586: 8D 02 43 STA $4302 E5/F589: A9 FE LDA #$FE E5/F58B: 8D 03 43 STA $4303 E5/F58E: A9 C9 LDA #$C9 E5/F590: 8D 04 43 STA $4304 E5/F593: A9 00 LDA #$00 ; size = $0100 E5/F595: 8D 05 43 STA $4305 E5/F598: A9 01 LDA #$01 E5/F59A: 8D 06 43 STA $4306 E5/F59D: A9 01 LDA #$01 ; enable dma E5/F59F: 8D 0B 42 STA $420B E5/F5A2: A9 00 LDA #$00 E5/F5A4: 8D 21 21 STA $2121 E5/F5A7: A9 00 LDA #$00 E5/F5A9: 8D 00 43 STA $4300 E5/F5AC: A9 22 LDA #$22 E5/F5AE: 8D 01 43 STA $4301 E5/F5B1: A9 00 LDA #$00 ; $C9FF00 (the end palettes) E5/F5B3: 8D 02 43 STA $4302 E5/F5B6: A9 FF LDA #$FF E5/F5B8: 8D 03 43 STA $4303 E5/F5BB: A9 C9 LDA #$C9 E5/F5BD: 8D 04 43 STA $4304 E5/F5C0: A9 00 LDA #$00 ; size = $0100 E5/F5C2: 8D 05 43 STA $4305 E5/F5C5: A9 01 LDA #$01 E5/F5C7: 8D 06 43 STA $4306 E5/F5CA: A9 01 LDA #$01 ; enable dma E5/F5CC: 8D 0B 42 STA $420B E5/F5CF: A9 00 LDA #$00 E5/F5D1: 8D 00 43 STA $4300 E5/F5D4: A9 22 LDA #$22 E5/F5D6: 8D 01 43 STA $4301 E5/F5D9: A9 00 LDA #$00 ; $C9FE00 (the end palettes) E5/F5DB: 8D 02 43 STA $4302 E5/F5DE: A9 FF LDA #$FF E5/F5E0: 8D 03 43 STA $4303 E5/F5E3: A9 C9 LDA #$C9 E5/F5E5: 8D 04 43 STA $4304 E5/F5E8: A9 00 LDA #$00 ; size = $0100 E5/F5EA: 8D 05 43 STA $4305 E5/F5ED: A9 01 LDA #$01 E5/F5EF: 8D 06 43 STA $4306 E5/F5F2: A9 01 LDA #$01 ; enable dma (why does it do this 3 times ??? ) E5/F5F4: 8D 0B 42 STA $420B E5/F5F7: A2 00 00 LDX #$0000 E5/F5FA: 9B TXY E5/F5FB: BF 80 FF C9 LDA $C9FF80,X ; load star color palette for fade in E5/F5FF: 85 24 STA $24 E5/F601: 29 1F AND #$1F ; isolate red component E5/F603: 0A ASL E5/F604: 0A ASL E5/F605: 99 C0 08 STA $08C0,Y ; red E5/F608: BF 81 FF C9 LDA $C9FF81,X ; isolate blue component E5/F60C: 4A LSR E5/F60D: 66 24 ROR $24 E5/F60F: 4A LSR E5/F610: 66 24 ROR $24 E5/F612: 0A ASL E5/F613: 0A ASL E5/F614: 99 C4 08 STA $08C4,Y ; green E5/F617: A5 24 LDA $24 E5/F619: 29 F8 AND #$F8 ; isolate green component E5/F61B: 4A LSR E5/F61C: 99 C2 08 STA $08C2,Y ; blue E5/F61F: A9 00 LDA #$00 E5/F621: 99 00 08 STA $0800,Y ; clear current color component values E5/F624: 99 01 08 STA $0801,Y E5/F627: 99 02 08 STA $0802,Y E5/F62A: 99 03 08 STA $0803,Y E5/F62D: 99 04 08 STA $0804,Y E5/F630: 99 05 08 STA $0805,Y E5/F633: 9D 80 09 STA $0980,X ; clear current color palette values E5/F636: 9D 81 09 STA $0981,X E5/F639: C8 INY ; next color (16 colors) E5/F63A: C8 INY E5/F63B: C8 INY E5/F63C: C8 INY E5/F63D: C8 INY E5/F63E: C8 INY E5/F63F: E8 INX E5/F640: E8 INX E5/F641: E0 20 00 CPX #$0020 E5/F644: D0 B5 BNE $F5FB E5/F646: A2 00 00 LDX #$0000 E5/F649: 9B TXY E5/F64A: BF 60 FF C9 LDA $C9FF60,X ; load The End palette for fade in (same as above) E5/F64E: 85 24 STA $24 E5/F650: 29 1F AND #$1F E5/F652: 0A ASL E5/F653: 99 20 09 STA $0920,Y E5/F656: BF 61 FF C9 LDA $C9FF61,X E5/F65A: 4A LSR E5/F65B: 66 24 ROR $24 E5/F65D: 4A LSR E5/F65E: 66 24 ROR $24 E5/F660: 0A ASL E5/F661: 99 24 09 STA $0924,Y E5/F664: A5 24 LDA $24 E5/F666: 29 F8 AND #$F8 E5/F668: 4A LSR E5/F669: 4A LSR E5/F66A: 99 22 09 STA $0922,Y E5/F66D: A9 00 LDA #$00 E5/F66F: 99 60 08 STA $0860,Y E5/F672: 99 61 08 STA $0861,Y E5/F675: 99 62 08 STA $0862,Y E5/F678: 99 63 08 STA $0863,Y E5/F67B: 99 64 08 STA $0864,Y E5/F67E: 99 65 08 STA $0865,Y E5/F681: 9D A0 09 STA $09A0,X E5/F684: 9D A1 09 STA $09A1,X E5/F687: C8 INY E5/F688: C8 INY E5/F689: C8 INY E5/F68A: C8 INY E5/F68B: C8 INY E5/F68C: C8 INY E5/F68D: E8 INX E5/F68E: E8 INX E5/F68F: E0 20 00 CPX #$0020 E5/F692: D0 B6 BNE $F64A E5/F694: A2 00 00 LDX #$0000 ; copy tilemap to vram E5/F697: A9 00 LDA #$00 E5/F699: 8D 16 21 STA $2116 E5/F69C: A9 40 LDA #$40 E5/F69E: 8D 17 21 STA $2117 E5/F6A1: A9 06 LDA #$06 E5/F6A3: 8D 18 21 STA $2118 E5/F6A6: A9 24 LDA #$24 E5/F6A8: 8D 19 21 STA $2119 E5/F6AB: E8 INX E5/F6AC: E0 0D 00 CPX #$000D E5/F6AF: D0 F0 BNE $F6A1 E5/F6B1: A2 00 00 LDX #$0000 E5/F6B4: A9 20 LDA #$20 E5/F6B6: 8D 16 21 STA $2116 E5/F6B9: A9 40 LDA #$40 E5/F6BB: 8D 17 21 STA $2117 E5/F6BE: A9 06 LDA #$06 E5/F6C0: 8D 18 21 STA $2118 E5/F6C3: A9 24 LDA #$24 E5/F6C5: 8D 19 21 STA $2119 E5/F6C8: E8 INX E5/F6C9: E0 0D 00 CPX #$000D E5/F6CC: D0 F0 BNE $F6BE E5/F6CE: A2 00 00 LDX #$0000 E5/F6D1: A9 40 LDA #$40 E5/F6D3: 8D 16 21 STA $2116 E5/F6D6: A9 40 LDA #$40 E5/F6D8: 8D 17 21 STA $2117 E5/F6DB: A9 06 LDA #$06 E5/F6DD: 8D 18 21 STA $2118 E5/F6E0: A9 24 LDA #$24 E5/F6E2: 8D 19 21 STA $2119 E5/F6E5: E8 INX E5/F6E6: E0 0D 00 CPX #$000D E5/F6E9: D0 F0 BNE $F6DB E5/F6EB: A9 60 LDA #$60 E5/F6ED: 8D 16 21 STA $2116 E5/F6F0: A9 40 LDA #$40 E5/F6F2: 8D 17 21 STA $2117 E5/F6F5: A9 00 LDA #$00 E5/F6F7: 8D 18 21 STA $2118 E5/F6FA: 48 PHA E5/F6FB: A9 24 LDA #$24 E5/F6FD: 8D 19 21 STA $2119 E5/F700: 68 PLA E5/F701: 1A INC E5/F702: C9 0D CMP #$0D E5/F704: D0 F1 BNE $F6F7 E5/F706: A9 80 LDA #$80 E5/F708: 8D 16 21 STA $2116 E5/F70B: A9 40 LDA #$40 E5/F70D: 8D 17 21 STA $2117 E5/F710: A9 10 LDA #$10 E5/F712: 8D 18 21 STA $2118 E5/F715: 48 PHA E5/F716: A9 24 LDA #$24 E5/F718: 8D 19 21 STA $2119 E5/F71B: 68 PLA E5/F71C: 1A INC E5/F71D: C9 1D CMP #$1D E5/F71F: D0 F1 BNE $F712 E5/F721: A9 A0 LDA #$A0 E5/F723: 8D 16 21 STA $2116 E5/F726: A9 40 LDA #$40 E5/F728: 8D 17 21 STA $2117 E5/F72B: A9 20 LDA #$20 E5/F72D: 8D 18 21 STA $2118 E5/F730: 48 PHA E5/F731: A9 24 LDA #$24 E5/F733: 8D 19 21 STA $2119 E5/F736: 68 PLA E5/F737: 1A INC E5/F738: C9 2D CMP #$2D E5/F73A: D0 F1 BNE $F72D E5/F73C: A9 00 LDA #$00 E5/F73E: 8D 16 21 STA $2116 E5/F741: A9 50 LDA #$50 E5/F743: 8D 17 21 STA $2117 E5/F746: A9 30 LDA #$30 E5/F748: 8D 18 21 STA $2118 E5/F74B: 48 PHA E5/F74C: A9 2C LDA #$2C E5/F74E: 8D 19 21 STA $2119 E5/F751: 68 PLA E5/F752: 1A INC E5/F753: C9 3E CMP #$3E E5/F755: D0 F1 BNE $F748 E5/F757: A9 20 LDA #$20 E5/F759: 8D 16 21 STA $2116 E5/F75C: A9 50 LDA #$50 E5/F75E: 8D 17 21 STA $2117 E5/F761: A9 40 LDA #$40 E5/F763: 8D 18 21 STA $2118 E5/F766: 48 PHA E5/F767: A9 2C LDA #$2C E5/F769: 8D 19 21 STA $2119 E5/F76C: 68 PLA E5/F76D: 1A INC E5/F76E: C9 4E CMP #$4E E5/F770: D0 F1 BNE $F763 E5/F772: A9 40 LDA #$40 E5/F774: 8D 16 21 STA $2116 E5/F777: A9 50 LDA #$50 E5/F779: 8D 17 21 STA $2117 E5/F77C: A9 50 LDA #$50 E5/F77E: 8D 18 21 STA $2118 E5/F781: 48 PHA E5/F782: A9 2C LDA #$2C E5/F784: 8D 19 21 STA $2119 E5/F787: 68 PLA E5/F788: 1A INC E5/F789: C9 5E CMP #$5E E5/F78B: D0 F1 BNE $F77E E5/F78D: A9 60 LDA #$60 E5/F78F: 8D 16 21 STA $2116 E5/F792: A9 50 LDA #$50 E5/F794: 8D 17 21 STA $2117 E5/F797: A9 60 LDA #$60 E5/F799: 8D 18 21 STA $2118 E5/F79C: 48 PHA E5/F79D: A9 2C LDA #$2C E5/F79F: 8D 19 21 STA $2119 E5/F7A2: 68 PLA E5/F7A3: 1A INC E5/F7A4: C9 6E CMP #$6E E5/F7A6: D0 F1 BNE $F799 E5/F7A8: A0 00 02 LDY #$0200 ; init all stars (128 total) E5/F7AB: 20 8E F9 JSR $F98E ; init star E5/F7AE: 88 DEY ; next star E5/F7AF: 88 DEY E5/F7B0: 88 DEY E5/F7B1: 88 DEY E5/F7B2: D0 F7 BNE $F7AB E5/F7B4: A2 20 00 LDX #$0020 E5/F7B7: 9E FF 19 STZ $19FF,X ; clear $1A00-$1A1F ??? E5/F7BA: CA DEX E5/F7BB: D0 FA BNE $F7B7 E5/F7BD: A9 57 LDA #$57 ; set up window position hdma table E5/F7BF: 8D 00 1B STA $1B00 E5/F7C2: A9 18 LDA #$18 E5/F7C4: 8D 01 1B STA $1B01 E5/F7C7: A9 10 LDA #$10 E5/F7C9: 8D 02 1B STA $1B02 E5/F7CC: A9 18 LDA #$18 E5/F7CE: 8D 03 1B STA $1B03 E5/F7D1: A9 4E LDA #$4E E5/F7D3: 8D 04 1B STA $1B04 E5/F7D6: A9 B1 LDA #$B1 E5/F7D8: 8D 05 1B STA $1B05 E5/F7DB: A9 01 LDA #$01 E5/F7DD: 8D 06 1B STA $1B06 E5/F7E0: A9 18 LDA #$18 E5/F7E2: 8D 07 1B STA $1B07 E5/F7E5: A9 10 LDA #$10 E5/F7E7: 8D 08 1B STA $1B08 E5/F7EA: A9 00 LDA #$00 E5/F7EC: 8D 09 1B STA $1B09 ; scroll up bg1 E5/F7EF: A2 02 00 LDX #$0002 ; update bg1 scroll every 2 frames E5/F7F2: 86 34 STX $34 E5/F7F4: A9 02 LDA #$02 ; no effect ??? E5/F7F6: 85 14 STA $14 E5/F7F8: A9 80 LDA #$80 E5/F7FA: 8D 00 42 STA $4200 E5/F7FD: A9 A8 LDA #$A8 ; set bg1 vertical scroll to $A8 E5/F7FF: 85 40 STA $40 E5/F801: 64 3A STZ $3A ; clear bg2 scroll value E5/F803: 64 3B STZ $3B E5/F805: A9 01 LDA #$01 ; set bg2 scroll counter (for hdma updates) E5/F807: 85 3C STA $3C E5/F809: 64 00 STZ $00 E5/F80B: 64 01 STZ $01 E5/F80D: 64 38 STZ $38 E5/F80F: A5 38 LDA $38 ; wait for vblank E5/F811: F0 FC BEQ $F80F E5/F813: A9 0F LDA #$0F ; screen on, full brightness E5/F815: 8D 00 21 STA $2100 E5/F818: A5 38 LDA $38 ; wait for vblank E5/F81A: F0 FC BEQ $F818 E5/F81C: 64 38 STZ $38 E5/F81E: 20 16 FA JSR $FA16 ; reset invalid stars E5/F821: AD 41 21 LDA $2141 E5/F824: F0 F2 BEQ $F818 ; wait for spc E5/F826: A5 38 LDA $38 ; wait for vblank E5/F828: F0 FC BEQ $F826 E5/F82A: 64 38 STZ $38 E5/F82C: C6 34 DEC $34 E5/F82E: D0 F6 BNE $F826 E5/F830: A9 02 LDA #$02 ; next 2 frames E5/F832: 85 34 STA $34 E5/F834: A5 40 LDA $40 E5/F836: 8D 0E 21 STA $210E ; bg1 vertical scroll E5/F839: A9 00 LDA #$00 E5/F83B: 8D 0E 21 STA $210E E5/F83E: A5 40 LDA $40 ; scroll up to to $C1 E5/F840: 1A INC E5/F841: 85 40 STA $40 E5/F843: C9 C1 CMP #$C1 E5/F845: D0 DF BNE $F826 ; fade in "The End" E5/F847: A5 38 LDA $38 ; wait for vblank E5/F849: F0 FC BEQ $F847 E5/F84B: 64 38 STZ $38 E5/F84D: 20 16 FA JSR $FA16 ; reset invalid stars E5/F850: A9 02 LDA #$02 E5/F852: CD 41 21 CMP $2141 E5/F855: D0 F0 BNE $F847 E5/F857: A9 80 LDA #$80 ; 128 frames E5/F859: 85 44 STA $44 E5/F85B: A5 38 LDA $38 ; wait for vblank E5/F85D: F0 FC BEQ $F85B E5/F85F: 64 38 STZ $38 E5/F861: A2 00 00 LDX #$0000 E5/F864: 9B TXY E5/F865: B9 20 09 LDA $0920,Y ; update palette 3 (fade in The End) E5/F868: 18 CLC E5/F869: 79 60 08 ADC $0860,Y E5/F86C: 99 60 08 STA $0860,Y E5/F86F: A9 00 LDA #$00 E5/F871: 79 61 08 ADC $0861,Y E5/F874: 99 61 08 STA $0861,Y E5/F877: 85 28 STA $28 E5/F879: B9 24 09 LDA $0924,Y E5/F87C: 18 CLC E5/F87D: 79 64 08 ADC $0864,Y E5/F880: 99 64 08 STA $0864,Y E5/F883: A9 00 LDA #$00 E5/F885: 79 65 08 ADC $0865,Y E5/F888: 99 65 08 STA $0865,Y E5/F88B: 9D A1 09 STA $09A1,X E5/F88E: B9 22 09 LDA $0922,Y E5/F891: 18 CLC E5/F892: 79 62 08 ADC $0862,Y E5/F895: 99 62 08 STA $0862,Y E5/F898: A9 00 LDA #$00 E5/F89A: 79 63 08 ADC $0863,Y E5/F89D: 99 63 08 STA $0863,Y E5/F8A0: 0A ASL E5/F8A1: 0A ASL E5/F8A2: 0A ASL E5/F8A3: 0A ASL E5/F8A4: 3E A1 09 ROL $09A1,X E5/F8A7: 0A ASL E5/F8A8: 3E A1 09 ROL $09A1,X E5/F8AB: 05 28 ORA $28 E5/F8AD: 9D A0 09 STA $09A0,X E5/F8B0: C8 INY ; next color E5/F8B1: C8 INY E5/F8B2: C8 INY E5/F8B3: C8 INY E5/F8B4: C8 INY E5/F8B5: C8 INY E5/F8B6: E8 INX E5/F8B7: E8 INX E5/F8B8: E0 20 00 CPX #$0020 E5/F8BB: D0 A8 BNE $F865 E5/F8BD: 20 16 FA JSR $FA16 ; reset invalid stars E5/F8C0: C6 44 DEC $44 ; decrement frame counter E5/F8C2: D0 97 BNE $F85B ; play song E5/F8C4: A5 38 LDA $38 ; wait for vblank E5/F8C6: F0 FC BEQ $F8C4 E5/F8C8: 64 38 STZ $38 E5/F8CA: 20 16 FA JSR $FA16 ; reset invalid stars E5/F8CD: AD 43 21 LDA $2143 E5/F8D0: D0 F2 BNE $F8C4 E5/F8D2: A9 10 LDA #$10 E5/F8D4: 8D 00 13 STA $1300 E5/F8D7: A9 01 LDA #$01 ; song $01 (the prelude) E5/F8D9: 8D 01 13 STA $1301 E5/F8DC: A9 00 LDA #$00 E5/F8DE: 8D 02 13 STA $1302 E5/F8E1: 22 04 00 C5 JSL $C50004 ; spc command E5/F8E5: A9 FF LDA #$FF E5/F8E7: 8D 05 13 STA $1305 E5/F8EA: A2 B0 04 LDX #$04B0 ; 1200 frames (20 seconds) E5/F8ED: 86 34 STX $34 E5/F8EF: A9 40 LDA #$40 ; 64 frames E5/F8F1: 85 44 STA $44 E5/F8F3: A5 38 LDA $38 ; wait for vblank E5/F8F5: F0 FC BEQ $F8F3 E5/F8F7: 64 38 STZ $38 E5/F8F9: 20 16 FA JSR $FA16 ; reset invalid stars E5/F8FC: A6 34 LDX $34 E5/F8FE: CA DEX E5/F8FF: 86 34 STX $34 E5/F901: D0 F0 BNE $F8F3 ; fade in stars E5/F903: A9 10 LDA #$10 E5/F905: 8D 00 13 STA $1300 E5/F908: A9 01 LDA #$01 ; song $01 (the prelude) E5/F90A: 8D 01 13 STA $1301 E5/F90D: A9 FF LDA #$FF E5/F90F: 8D 02 13 STA $1302 E5/F912: 22 04 00 C5 JSL $C50004 ; spc command E5/F916: A9 40 LDA #$40 ; 64 frames E5/F918: 85 44 STA $44 E5/F91A: A5 38 LDA $38 ; wait for vblank E5/F91C: F0 FC BEQ $F91A E5/F91E: 64 38 STZ $38 E5/F920: A2 00 00 LDX #$0000 E5/F923: 9B TXY E5/F924: B9 C0 08 LDA $08C0,Y ; update palette 12 (fade in stars) E5/F927: 18 CLC E5/F928: 79 00 08 ADC $0800,Y E5/F92B: 99 00 08 STA $0800,Y E5/F92E: A9 00 LDA #$00 E5/F930: 79 01 08 ADC $0801,Y E5/F933: 99 01 08 STA $0801,Y E5/F936: 85 28 STA $28 E5/F938: B9 C4 08 LDA $08C4,Y E5/F93B: 18 CLC E5/F93C: 79 04 08 ADC $0804,Y E5/F93F: 99 04 08 STA $0804,Y E5/F942: A9 00 LDA #$00 E5/F944: 79 05 08 ADC $0805,Y E5/F947: 99 05 08 STA $0805,Y E5/F94A: 9D 81 09 STA $0981,X E5/F94D: B9 C2 08 LDA $08C2,Y E5/F950: 18 CLC E5/F951: 79 02 08 ADC $0802,Y E5/F954: 99 02 08 STA $0802,Y E5/F957: A9 00 LDA #$00 E5/F959: 79 03 08 ADC $0803,Y E5/F95C: 99 03 08 STA $0803,Y E5/F95F: 0A ASL E5/F960: 0A ASL E5/F961: 0A ASL E5/F962: 0A ASL E5/F963: 3E 81 09 ROL $0981,X E5/F966: 0A ASL E5/F967: 3E 81 09 ROL $0981,X E5/F96A: 05 28 ORA $28 E5/F96C: 9D 80 09 STA $0980,X E5/F96F: C8 INY E5/F970: C8 INY E5/F971: C8 INY E5/F972: C8 INY E5/F973: C8 INY E5/F974: C8 INY E5/F975: E8 INX E5/F976: E8 INX E5/F977: E0 20 00 CPX #$0020 E5/F97A: D0 A8 BNE $F924 E5/F97C: 20 16 FA JSR $FA16 ; reset invalid stars E5/F97F: C6 44 DEC $44 ; decrement frame counter E5/F981: D0 97 BNE $F91A ; loop forever E5/F983: A5 38 LDA $38 ; wait for vblank E5/F985: F0 FC BEQ $F983 E5/F987: 64 38 STZ $38 E5/F989: 20 16 FA JSR $FA16 ; reset invalid stars E5/F98C: 80 F5 BRA $F983 ; infinite loop! ; [ Init Star ] ; +Y: pointer to star data E5/F98E: A6 00 LDX $00 E5/F990: E6 00 INC $00 E5/F992: BF 00 FD C0 LDA $C0FD00,X ; random number E5/F996: 85 02 STA $02 E5/F998: 29 07 AND #$07 E5/F99A: 85 24 STA $24 E5/F99C: 99 FC 0C STA $0CFC,Y ; horizontal speed E5/F99F: A5 02 LDA $02 E5/F9A1: 29 3F AND #$3F E5/F9A3: 18 CLC E5/F9A4: 69 60 ADC #$60 E5/F9A6: 99 FC 17 STA $17FC,Y ; x position E5/F9A9: A6 02 LDX $02 E5/F9AB: BF 00 FD C0 LDA $C0FD00,X ; random number E5/F9AF: 85 02 STA $02 E5/F9B1: 29 07 AND #$07 E5/F9B3: D0 01 BNE $F9B6 E5/F9B5: 1A INC E5/F9B6: 99 FD 0C STA $0CFD,Y ; vertical speed E5/F9B9: 05 24 ORA $24 E5/F9BB: 85 25 STA $25 E5/F9BD: A5 02 LDA $02 E5/F9BF: 29 1F AND #$1F E5/F9C1: 18 CLC E5/F9C2: 69 60 ADC #$60 E5/F9C4: 99 FD 17 STA $17FD,Y ; y position E5/F9C7: A6 02 LDX $02 E5/F9C9: BF 00 FD C0 LDA $C0FD00,X ; random number E5/F9CD: 29 3F AND #$3F E5/F9CF: 99 FE 0A STA $0AFE,Y E5/F9D2: 29 0F AND #$0F E5/F9D4: D0 01 BNE $F9D7 E5/F9D6: 1A INC E5/F9D7: 99 FE 0C STA $0CFE,Y E5/F9DA: A5 25 LDA $25 E5/F9DC: C9 04 CMP #$04 E5/F9DE: 90 26 BCC $FA06 E5/F9E0: B9 FE 0C LDA $0CFE,Y E5/F9E3: C9 07 CMP #$07 E5/F9E5: B0 1F BCS $FA06 E5/F9E7: 0A ASL E5/F9E8: 99 FE 0C STA $0CFE,Y E5/F9EB: B9 FE 0A LDA $0AFE,Y E5/F9EE: 4A LSR E5/F9EF: 99 FE 0A STA $0AFE,Y E5/F9F2: 80 12 BRA $FA06 E5/F9F4: B9 FE 0C LDA $0CFE,Y E5/F9F7: C9 08 CMP #$08 E5/F9F9: 90 0B BCC $FA06 E5/F9FB: 4A LSR E5/F9FC: 99 FE 0C STA $0CFE,Y E5/F9FF: B9 FE 0A LDA $0AFE,Y E5/FA02: 0A ASL E5/FA03: 99 FE 0A STA $0AFE,Y E5/FA06: A9 1F LDA #$1F ; graphics pointer E5/FA08: 99 FE 17 STA $17FE,Y E5/FA0B: A9 38 LDA #$38 ; vhoopppm (highest priority, palette 12) E5/FA0D: 99 FF 17 STA $17FF,Y E5/FA10: A9 00 LDA #$00 ; E5/FA12: 99 FF 0C STA $0CFF,Y E5/FA15: 60 RTS ; [ Reset Invalid Stars ] E5/FA16: A0 00 02 LDY #$0200 E5/FA19: B9 FC 0C LDA $0CFC,Y E5/FA1C: 10 03 BPL $FA21 ; branch if star is valid E5/FA1E: 20 8E F9 JSR $F98E ; init star E5/FA21: 88 DEY E5/FA22: 88 DEY E5/FA23: 88 DEY E5/FA24: 88 DEY E5/FA25: D0 F2 BNE $FA19 E5/FA27: 60 RTS ; [ Update BG2 Scroll HDMA Table ] ; +X: scroll value (from $3A, 0..12) E5/FA28: A9 50 LDA #$50 E5/FA2A: 8D 00 1C STA $1C00 E5/FA2D: 9C 01 1C STZ $1C01 E5/FA30: 9C 02 1C STZ $1C02 E5/FA33: A9 C0 LDA #$C0 E5/FA35: 8D 03 1C STA $1C03 E5/FA38: 64 05 STZ $05 E5/FA3A: 8A TXA E5/FA3B: 0A ASL E5/FA3C: 85 04 STA $04 E5/FA3E: A6 04 LDX $04 E5/FA40: A0 00 00 LDY #$0000 E5/FA43: BF 1E FE E5 LDA $E5FE1E,X ; bg2 scroll hdma data E5/FA47: 99 04 1C STA $1C04,Y E5/FA4A: E8 INX E5/FA4B: C8 INY E5/FA4C: C0 40 00 CPY #$0040 E5/FA4F: D0 F2 BNE $FA43 E5/FA51: A9 00 LDA #$00 E5/FA53: 99 04 1C STA $1C04,Y E5/FA56: 60 RTS ; [ Update Sprite Data ] E5/FA57: A0 80 00 LDY #$0080 E5/FA5A: A5 3E LDA $3E E5/FA5C: 29 03 AND #$03 E5/FA5E: 0A ASL E5/FA5F: 85 04 STA $04 E5/FA61: 64 05 STZ $05 E5/FA63: A6 04 LDX $04 E5/FA65: FC 16 FE JSR ($FE16,X) ; sprite data update jump table E5/FA68: E6 3E INC $3E E5/FA6A: 60 RTS ; [ Update Sprites 0-31 ] ; +Y: pointer to sprite data E5/FA6B: B9 FC 17 LDA $17FC,Y ; x position E5/FA6E: 30 0D BMI $FA7D ; branch if on right half of screen E5/FA70: 38 SEC E5/FA71: F9 FC 0C SBC $0CFC,Y ; subtract horizontal speed E5/FA74: B0 14 BCS $FA8A E5/FA76: A9 FF LDA #$FF E5/FA78: 99 FC 0C STA $0CFC,Y E5/FA7B: 80 67 BRA $FAE4 E5/FA7D: 18 CLC E5/FA7E: 79 FC 0C ADC $0CFC,Y ; add horizontal speed E5/FA81: 90 07 BCC $FA8A E5/FA83: A9 FF LDA #$FF E5/FA85: 99 FC 0C STA $0CFC,Y E5/FA88: 80 5A BRA $FAE4 E5/FA8A: 99 FC 17 STA $17FC,Y ; set new x position E5/FA8D: B9 FD 17 LDA $17FD,Y ; y position E5/FA90: C9 70 CMP #$70 E5/FA92: B0 0D BCS $FAA1 ; branch if on bottom half of screen E5/FA94: 38 SEC E5/FA95: F9 FD 0C SBC $0CFD,Y ; subtract vertical speed E5/FA98: B0 16 BCS $FAB0 E5/FA9A: A9 FF LDA #$FF E5/FA9C: 99 FC 0C STA $0CFC,Y E5/FA9F: 80 43 BRA $FAE4 E5/FAA1: 18 CLC E5/FAA2: 79 FD 0C ADC $0CFD,Y ; add vertical speed E5/FAA5: C9 E0 CMP #$E0 E5/FAA7: 90 07 BCC $FAB0 E5/FAA9: A9 FF LDA #$FF E5/FAAB: 99 FC 0C STA $0CFC,Y E5/FAAE: 80 34 BRA $FAE4 E5/FAB0: 99 FD 17 STA $17FD,Y ; set new y position E5/FAB3: B9 FE 0A LDA $0AFE,Y ; E5/FAB6: 18 CLC E5/FAB7: 79 FE 0C ADC $0CFE,Y ; E5/FABA: 90 02 BCC $FABE E5/FABC: A9 FF LDA #$FF E5/FABE: 99 FE 0A STA $0AFE,Y E5/FAC1: C9 40 CMP #$40 E5/FAC3: 90 1F BCC $FAE4 E5/FAC5: C9 C0 CMP #$C0 E5/FAC7: B0 04 BCS $FACD E5/FAC9: A9 0F LDA #$0F ; tile 15 E5/FACB: 80 14 BRA $FAE1 E5/FACD: C9 F0 CMP #$F0 E5/FACF: B0 09 BCS $FADA E5/FAD1: A9 01 LDA #$01 ; E5/FAD3: 20 6B FC JSR $FC6B ; E5/FAD6: A9 0E LDA #$0E ; tile 14 E5/FAD8: 80 07 BRA $FAE1 E5/FADA: A9 02 LDA #$02 ; E5/FADC: 20 6B FC JSR $FC6B ; E5/FADF: A9 0D LDA #$0D ; tile 13 E5/FAE1: 99 FE 17 STA $17FE,Y ; set graphics pointer E5/FAE4: 88 DEY ; next sprite E5/FAE5: 88 DEY E5/FAE6: 88 DEY E5/FAE7: 88 DEY E5/FAE8: D0 81 BNE $FA6B E5/FAEA: 60 RTS ; [ Update Sprites 32-63 ] E5/FAEB: B9 7C 18 LDA $187C,Y E5/FAEE: 30 0D BMI $FAFD E5/FAF0: 38 SEC E5/FAF1: F9 7C 0D SBC $0D7C,Y E5/FAF4: B0 14 BCS $FB0A E5/FAF6: A9 FF LDA #$FF E5/FAF8: 99 7C 0D STA $0D7C,Y E5/FAFB: 80 67 BRA $FB64 E5/FAFD: 18 CLC E5/FAFE: 79 7C 0D ADC $0D7C,Y E5/FB01: 90 07 BCC $FB0A E5/FB03: A9 FF LDA #$FF E5/FB05: 99 7C 0D STA $0D7C,Y E5/FB08: 80 5A BRA $FB64 E5/FB0A: 99 7C 18 STA $187C,Y E5/FB0D: B9 7D 18 LDA $187D,Y E5/FB10: C9 70 CMP #$70 E5/FB12: B0 0D BCS $FB21 E5/FB14: 38 SEC E5/FB15: F9 7D 0D SBC $0D7D,Y E5/FB18: B0 16 BCS $FB30 E5/FB1A: A9 FF LDA #$FF E5/FB1C: 99 7C 0D STA $0D7C,Y E5/FB1F: 80 43 BRA $FB64 E5/FB21: 18 CLC E5/FB22: 79 7D 0D ADC $0D7D,Y E5/FB25: C9 E0 CMP #$E0 E5/FB27: 90 07 BCC $FB30 E5/FB29: A9 FF LDA #$FF E5/FB2B: 99 7C 0D STA $0D7C,Y E5/FB2E: 80 34 BRA $FB64 E5/FB30: 99 7D 18 STA $187D,Y E5/FB33: B9 7E 0B LDA $0B7E,Y E5/FB36: 18 CLC E5/FB37: 79 7E 0D ADC $0D7E,Y E5/FB3A: 90 02 BCC $FB3E E5/FB3C: A9 FF LDA #$FF E5/FB3E: 99 7E 0B STA $0B7E,Y E5/FB41: C9 40 CMP #$40 E5/FB43: 90 1F BCC $FB64 E5/FB45: C9 C0 CMP #$C0 E5/FB47: B0 04 BCS $FB4D E5/FB49: A9 0F LDA #$0F E5/FB4B: 80 14 BRA $FB61 E5/FB4D: C9 F0 CMP #$F0 E5/FB4F: B0 09 BCS $FB5A E5/FB51: A9 01 LDA #$01 E5/FB53: 20 88 FC JSR $FC88 E5/FB56: A9 0E LDA #$0E E5/FB58: 80 07 BRA $FB61 E5/FB5A: A9 02 LDA #$02 E5/FB5C: 20 88 FC JSR $FC88 E5/FB5F: A9 0D LDA #$0D E5/FB61: 99 7E 18 STA $187E,Y E5/FB64: 88 DEY E5/FB65: 88 DEY E5/FB66: 88 DEY E5/FB67: 88 DEY E5/FB68: D0 81 BNE $FAEB E5/FB6A: 60 RTS ; [ Update Sprites 64-95 ] E5/FB6B: B9 FC 18 LDA $18FC,Y E5/FB6E: 30 0D BMI $FB7D E5/FB70: 38 SEC E5/FB71: F9 FC 0D SBC $0DFC,Y E5/FB74: B0 14 BCS $FB8A E5/FB76: A9 FF LDA #$FF E5/FB78: 99 FC 0D STA $0DFC,Y E5/FB7B: 80 67 BRA $FBE4 E5/FB7D: 18 CLC E5/FB7E: 79 FC 0D ADC $0DFC,Y E5/FB81: 90 07 BCC $FB8A E5/FB83: A9 FF LDA #$FF E5/FB85: 99 FC 0D STA $0DFC,Y E5/FB88: 80 5A BRA $FBE4 E5/FB8A: 99 FC 18 STA $18FC,Y E5/FB8D: B9 FD 18 LDA $18FD,Y E5/FB90: C9 70 CMP #$70 E5/FB92: B0 0D BCS $FBA1 E5/FB94: 38 SEC E5/FB95: F9 FD 0D SBC $0DFD,Y E5/FB98: B0 16 BCS $FBB0 E5/FB9A: A9 FF LDA #$FF E5/FB9C: 99 FC 0D STA $0DFC,Y E5/FB9F: 80 43 BRA $FBE4 E5/FBA1: 18 CLC E5/FBA2: 79 FD 0D ADC $0DFD,Y E5/FBA5: C9 E0 CMP #$E0 E5/FBA7: 90 07 BCC $FBB0 E5/FBA9: A9 FF LDA #$FF E5/FBAB: 99 FC 0D STA $0DFC,Y E5/FBAE: 80 34 BRA $FBE4 E5/FBB0: 99 FD 18 STA $18FD,Y E5/FBB3: B9 FE 0B LDA $0BFE,Y E5/FBB6: 18 CLC E5/FBB7: 79 FE 0D ADC $0DFE,Y E5/FBBA: 90 02 BCC $FBBE E5/FBBC: A9 FF LDA #$FF E5/FBBE: 99 FE 0B STA $0BFE,Y E5/FBC1: C9 40 CMP #$40 E5/FBC3: 90 1F BCC $FBE4 E5/FBC5: C9 C0 CMP #$C0 E5/FBC7: B0 04 BCS $FBCD E5/FBC9: A9 0F LDA #$0F E5/FBCB: 80 14 BRA $FBE1 E5/FBCD: C9 F0 CMP #$F0 E5/FBCF: B0 09 BCS $FBDA E5/FBD1: A9 01 LDA #$01 E5/FBD3: 20 A5 FC JSR $FCA5 E5/FBD6: A9 0E LDA #$0E E5/FBD8: 80 07 BRA $FBE1 E5/FBDA: A9 02 LDA #$02 E5/FBDC: 20 A5 FC JSR $FCA5 E5/FBDF: A9 0D LDA #$0D E5/FBE1: 99 FE 18 STA $18FE,Y E5/FBE4: 88 DEY E5/FBE5: 88 DEY E5/FBE6: 88 DEY E5/FBE7: 88 DEY E5/FBE8: D0 81 BNE $FB6B E5/FBEA: 60 RTS ; [ Update Sprites 96-127 ] E5/FBEB: B9 7C 19 LDA $197C,Y E5/FBEE: 30 0D BMI $FBFD E5/FBF0: 38 SEC E5/FBF1: F9 7C 0E SBC $0E7C,Y E5/FBF4: B0 14 BCS $FC0A E5/FBF6: A9 FF LDA #$FF E5/FBF8: 99 7C 0E STA $0E7C,Y E5/FBFB: 80 67 BRA $FC64 E5/FBFD: 18 CLC E5/FBFE: 79 7C 0E ADC $0E7C,Y E5/FC01: 90 07 BCC $FC0A E5/FC03: A9 FF LDA #$FF E5/FC05: 99 7C 0E STA $0E7C,Y E5/FC08: 80 5A BRA $FC64 E5/FC0A: 99 7C 19 STA $197C,Y E5/FC0D: B9 7D 19 LDA $197D,Y E5/FC10: C9 70 CMP #$70 E5/FC12: B0 0D BCS $FC21 E5/FC14: 38 SEC E5/FC15: F9 7D 0E SBC $0E7D,Y E5/FC18: B0 16 BCS $FC30 E5/FC1A: A9 FF LDA #$FF E5/FC1C: 99 7C 0E STA $0E7C,Y E5/FC1F: 80 43 BRA $FC64 E5/FC21: 18 CLC E5/FC22: 79 7D 0E ADC $0E7D,Y E5/FC25: C9 E0 CMP #$E0 E5/FC27: 90 07 BCC $FC30 E5/FC29: A9 FF LDA #$FF E5/FC2B: 99 7C 0E STA $0E7C,Y E5/FC2E: 80 34 BRA $FC64 E5/FC30: 99 7D 19 STA $197D,Y E5/FC33: B9 7E 0C LDA $0C7E,Y E5/FC36: 18 CLC E5/FC37: 79 7E 0E ADC $0E7E,Y E5/FC3A: 90 02 BCC $FC3E E5/FC3C: A9 FF LDA #$FF E5/FC3E: 99 7E 0C STA $0C7E,Y E5/FC41: C9 40 CMP #$40 E5/FC43: 90 1F BCC $FC64 E5/FC45: C9 C0 CMP #$C0 E5/FC47: B0 04 BCS $FC4D E5/FC49: A9 0F LDA #$0F E5/FC4B: 80 14 BRA $FC61 E5/FC4D: C9 F0 CMP #$F0 E5/FC4F: B0 09 BCS $FC5A E5/FC51: A9 01 LDA #$01 E5/FC53: 20 C2 FC JSR $FCC2 E5/FC56: A9 0E LDA #$0E E5/FC58: 80 07 BRA $FC61 E5/FC5A: A9 02 LDA #$02 E5/FC5C: 20 C2 FC JSR $FCC2 E5/FC5F: A9 0D LDA #$0D E5/FC61: 99 7E 19 STA $197E,Y E5/FC64: 88 DEY E5/FC65: 88 DEY E5/FC66: 88 DEY E5/FC67: 88 DEY E5/FC68: D0 81 BNE $FBEB E5/FC6A: 60 RTS ; [ ??? Sprites 0-31 ] E5/FC6B: D9 FF 0C CMP $0CFF,Y E5/FC6E: F0 17 BEQ $FC87 E5/FC70: 99 FF 0C STA $0CFF,Y E5/FC73: B9 FC 0C LDA $0CFC,Y E5/FC76: 4A LSR E5/FC77: 79 FC 0C ADC $0CFC,Y E5/FC7A: 99 FC 0C STA $0CFC,Y E5/FC7D: B9 FD 0C LDA $0CFD,Y E5/FC80: 4A LSR E5/FC81: 79 FD 0C ADC $0CFD,Y E5/FC84: 99 FD 0C STA $0CFD,Y E5/FC87: 60 RTS ; [ ??? Sprites 32-63 ] E5/FC88: D9 7F 0D CMP $0D7F,Y E5/FC8B: F0 17 BEQ $FCA4 E5/FC8D: 99 7F 0D STA $0D7F,Y E5/FC90: B9 7C 0D LDA $0D7C,Y E5/FC93: 4A LSR E5/FC94: 79 7C 0D ADC $0D7C,Y E5/FC97: 99 7C 0D STA $0D7C,Y E5/FC9A: B9 7D 0D LDA $0D7D,Y E5/FC9D: 4A LSR E5/FC9E: 79 7D 0D ADC $0D7D,Y E5/FCA1: 99 7D 0D STA $0D7D,Y E5/FCA4: 60 RTS ; [ ??? Sprites 64-95 ] E5/FCA5: D9 FF 0D CMP $0DFF,Y E5/FCA8: F0 17 BEQ $FCC1 E5/FCAA: 99 FF 0D STA $0DFF,Y E5/FCAD: B9 FC 0D LDA $0DFC,Y E5/FCB0: 4A LSR E5/FCB1: 79 FC 0D ADC $0DFC,Y E5/FCB4: 99 FC 0D STA $0DFC,Y E5/FCB7: B9 FD 0D LDA $0DFD,Y E5/FCBA: 4A LSR E5/FCBB: 79 FD 0D ADC $0DFD,Y E5/FCBE: 99 FD 0D STA $0DFD,Y E5/FCC1: 60 RTS ; [ ??? Sprites 96-127 ] E5/FCC2: D9 7F 0E CMP $0E7F,Y E5/FCC5: F0 17 BEQ $FCDE E5/FCC7: 99 7F 0E STA $0E7F,Y E5/FCCA: B9 7C 0E LDA $0E7C,Y E5/FCCD: 4A LSR E5/FCCE: 79 7C 0E ADC $0E7C,Y E5/FCD1: 99 7C 0E STA $0E7C,Y E5/FCD4: B9 7D 0E LDA $0E7D,Y E5/FCD7: 4A LSR E5/FCD8: 79 7D 0E ADC $0E7D,Y E5/FCDB: 99 7D 0E STA $0E7D,Y E5/FCDE: 60 RTS ; [ The End NMI ] E5/FCDF: 8B PHB E5/FCE0: 0B PHD E5/FCE1: 08 PHP E5/FCE2: C2 20 REP #$20 E5/FCE4: C2 10 REP #$10 E5/FCE6: 48 PHA E5/FCE7: DA PHX E5/FCE8: 5A PHY E5/FCE9: E2 20 SEP #$20 E5/FCEB: A9 00 LDA #$00 E5/FCED: 48 PHA E5/FCEE: AB PLB E5/FCEF: A2 00 05 LDX #$0500 ; set dp to $0500 E5/FCF2: DA PHX E5/FCF3: 2B PLD E5/FCF4: A9 10 LDA #$10 E5/FCF6: A9 00 LDA #$00 E5/FCF8: 8D 0C 42 STA $420C E5/FCFB: A9 00 LDA #$00 E5/FCFD: 8D 02 21 STA $2102 E5/FD00: 8D 03 21 STA $2103 E5/FD03: A9 00 LDA #$00 E5/FD05: 8D 00 43 STA $4300 E5/FD08: A9 04 LDA #$04 ; $1800 -> $2104 (sprite data) E5/FD0A: 8D 01 43 STA $4301 E5/FD0D: A9 00 LDA #$00 E5/FD0F: 8D 02 43 STA $4302 E5/FD12: A9 18 LDA #$18 E5/FD14: 8D 03 43 STA $4303 E5/FD17: A9 00 LDA #$00 E5/FD19: 8D 04 43 STA $4304 E5/FD1C: A9 20 LDA #$20 ; copy $0200 bytes E5/FD1E: 8D 05 43 STA $4305 E5/FD21: A9 02 LDA #$02 E5/FD23: 8D 06 43 STA $4306 E5/FD26: A9 00 LDA #$00 E5/FD28: 8D 07 43 STA $4307 E5/FD2B: A9 01 LDA #$01 E5/FD2D: 8D 0B 42 STA $420B ; enable dma E5/FD30: A9 C0 LDA #$C0 E5/FD32: 8D 21 21 STA $2121 ; update palette 12 E5/FD35: A9 00 LDA #$00 E5/FD37: 8D 00 43 STA $4300 E5/FD3A: A9 22 LDA #$22 ; $0980 -> $2122 (palette data) E5/FD3C: 8D 01 43 STA $4301 E5/FD3F: A9 80 LDA #$80 E5/FD41: 8D 02 43 STA $4302 E5/FD44: A9 09 LDA #$09 E5/FD46: 8D 03 43 STA $4303 E5/FD49: A9 00 LDA #$00 E5/FD4B: 8D 04 43 STA $4304 E5/FD4E: A9 20 LDA #$20 ; copy 32 bytes (16 colors) E5/FD50: 8D 05 43 STA $4305 E5/FD53: A9 00 LDA #$00 E5/FD55: 8D 06 43 STA $4306 E5/FD58: A9 00 LDA #$00 E5/FD5A: 8D 07 43 STA $4307 E5/FD5D: A9 01 LDA #$01 E5/FD5F: 8D 0B 42 STA $420B ; enable dma E5/FD62: A9 30 LDA #$30 E5/FD64: 8D 21 21 STA $2121 ; update palette 3 E5/FD67: A9 00 LDA #$00 E5/FD69: 8D 00 43 STA $4300 E5/FD6C: A9 22 LDA #$22 ; $09A0 -> $2122 (palette data) E5/FD6E: 8D 01 43 STA $4301 E5/FD71: A9 A0 LDA #$A0 E5/FD73: 8D 02 43 STA $4302 E5/FD76: A9 09 LDA #$09 E5/FD78: 8D 03 43 STA $4303 E5/FD7B: A9 00 LDA #$00 E5/FD7D: 8D 04 43 STA $4304 E5/FD80: A9 20 LDA #$20 ; copy 32 bytes (16 colors) E5/FD82: 8D 05 43 STA $4305 E5/FD85: A9 00 LDA #$00 E5/FD87: 8D 06 43 STA $4306 E5/FD8A: A9 00 LDA #$00 E5/FD8C: 8D 07 43 STA $4307 E5/FD8F: A9 01 LDA #$01 E5/FD91: 8D 0B 42 STA $420B ; enable dma E5/FD94: 20 57 FA JSR $FA57 ; update sprite data E5/FD97: E6 38 INC $38 ; set vblank flag E5/FD99: C6 3C DEC $3C ; decrement bg2 scroll counter E5/FD9B: D0 14 BNE $FDB1 E5/FD9D: A9 06 LDA #$06 E5/FD9F: 85 3C STA $3C E5/FDA1: A6 3A LDX $3A E5/FDA3: 20 28 FA JSR $FA28 ; update bg2 scroll hdma table (every 6 frames) E5/FDA6: A5 3A LDA $3A ; increment bg2 scroll value E5/FDA8: 1A INC E5/FDA9: C9 0C CMP #$0C E5/FDAB: 90 02 BCC $FDAF E5/FDAD: A9 00 LDA #$00 E5/FDAF: 85 3A STA $3A E5/FDB1: A9 01 LDA #$01 ; set up hdma channel #7 / $1B00 -> $2126 (window 1 position) E5/FDB3: 8D 70 43 STA $4370 E5/FDB6: A9 26 LDA #$26 E5/FDB8: 8D 71 43 STA $4371 E5/FDBB: A9 00 LDA #$00 E5/FDBD: 8D 72 43 STA $4372 E5/FDC0: A9 1B LDA #$1B E5/FDC2: 8D 73 43 STA $4373 E5/FDC5: A9 00 LDA #$00 E5/FDC7: 8D 74 43 STA $4374 E5/FDCA: 8D 77 43 STA $4377 E5/FDCD: A9 01 LDA #$01 ; set up hdma channel #6 / $1B00 -> $2128 (window 2 position) E5/FDCF: 8D 60 43 STA $4360 E5/FDD2: A9 28 LDA #$28 E5/FDD4: 8D 61 43 STA $4361 E5/FDD7: A9 00 LDA #$00 E5/FDD9: 8D 62 43 STA $4362 E5/FDDC: A9 1B LDA #$1B E5/FDDE: 8D 63 43 STA $4363 E5/FDE1: A9 00 LDA #$00 E5/FDE3: 8D 64 43 STA $4364 E5/FDE6: 8D 67 43 STA $4367 E5/FDE9: A9 02 LDA #$02 ; set up hdma channel #5 / $1C00 -> $2110 (bg2 vertical scroll) E5/FDEB: 8D 50 43 STA $4350 E5/FDEE: A9 10 LDA #$10 E5/FDF0: 8D 51 43 STA $4351 E5/FDF3: A9 00 LDA #$00 E5/FDF5: 8D 52 43 STA $4352 E5/FDF8: A9 1C LDA #$1C E5/FDFA: 8D 53 43 STA $4353 E5/FDFD: A9 00 LDA #$00 E5/FDFF: 8D 54 43 STA $4354 E5/FE02: 8D 57 43 STA $4357 E5/FE05: A9 E0 LDA #$E0 E5/FE07: 8D 0C 42 STA $420C ; enable hdma channel #5, #6, #7 E5/FE0A: C2 20 REP #$20 E5/FE0C: C2 10 REP #$10 E5/FE0E: 7A PLY E5/FE0F: FA PLX E5/FE10: 68 PLA E5/FE11: 28 PLP E5/FE12: 2B PLD E5/FE13: AB PLB E5/FE14: 40 RTI ; [ The End IRQ ] E5/FE15: 40 RTI ; sprite data update jump table E5/FE16: .DW $FA6B, $FAEB, $FB6B, $FBEB ; bg2 scroll hdma data E5/FE1E: .DW $00AC, $00AD, $00AE, $00AE, $00AE, $00AD, $00AC, $00AB E5/FE2E: .DW $00AA, $00AA, $00AA, $00AB, $00AC, $00AD, $00AE, $00AE E5/FE3E: .DW $00AE, $00AD, $00AC, $00AB, $00AA, $00AA, $00AA, $00AB E5/FE4E: .DW $00AC, $00AD, $00AE, $00AE, $00AE, $00AD, $00AC, $00AB E5/FE5E: .DW $00AA, $00AA, $00AA, $00AB, $00AC, $00AD, $00AE, $00AE E5/FE6E: .DW $00AE, $00AD, $00AC, $00AB, $00AA, $00AA, $00AA, $00AB E5/FE7E: .DW $00AC, $00AD, $00AE, $00AE, $00AE, $00AD, $00AC, $00AB E5/FE8E: .DW $00AA, $00AA, $00AA, $00AB, $00AC, $00AD, $00AE, $00AE E5/FE9E: .DW $00AE, $00AD, $00AC, $00AB, $00AA, $00AA, $00AA, $00AB E5/FEAE: .DW $00AC, $00AD, $00AE, $00AE, $00AE, $00AD, $00AC, $00AB E5/FEBE: .DW $00AA, $00AA, $00AA, $00AB ; -------------------------------------------[ World: Main ]-------------------------------------------- EE/0000: 4C 99 83 JMP $8399 ; init world map EE/0003: 4C 78 19 JMP $1978 ; update mode 7 variables EE/0006: 4C 80 19 JMP $1980 ; update mode 7 rotation EE/0009: 4C 90 19 JMP $1990 ; save mode 7 variables EE/000C: 4C 94 19 JMP $1994 ; restore mode 7 variables EE/000F: 4C 88 19 JMP $1988 ; EE/0012: 4C 48 8C JMP $8C48 ; init magitek train ride EE/0015: 4C D4 8E JMP $8ED4 ; init ending airship scene ; [ World Map (w/ vehicle) ] EE/0018: 20 69 05 JSR $0569 EE/001B: 20 3D 07 JSR $073D EE/001E: 20 7A 07 JSR $077A EE/0021: 20 C4 3F JSR $3FC4 EE/0024: 20 32 40 JSR $4032 EE/0027: 20 9E 07 JSR $079E EE/002A: 20 11 57 JSR $5711 EE/002D: 20 18 41 JSR $4118 EE/0030: C2 20 REP #$20 EE/0032: A9 00 80 LDA #$8000 EE/0035: 85 44 STA $44 EE/0037: 85 46 STA $46 EE/0039: AD F6 11 LDA $11F6 EE/003C: 89 40 00 BIT #$0040 EE/003F: D0 08 BNE $0049 EE/0041: 89 02 00 BIT #$0002 EE/0044: F0 09 BEQ $004F EE/0046: 4C CE 00 JMP $00CE EE/0049: 29 BF FF AND #$FFBF EE/004C: 8D F6 11 STA $11F6 EE/004F: A9 20 00 LDA #$0020 EE/0052: 85 93 STA $93 EE/0054: AD F2 11 LDA $11F2 EE/0057: 10 0F BPL $0068 EE/0059: 29 FF 7F AND #$7FFF EE/005C: 85 73 STA $73 EE/005E: 9C F2 11 STZ $11F2 EE/0061: AD F4 11 LDA $11F4 EE/0064: 85 2F STA $2F EE/0066: 80 05 BRA $006D EE/0068: A9 00 00 LDA #$0000 EE/006B: 85 73 STA $73 EE/006D: A9 00 A0 LDA #$A000 EE/0070: 85 8B STA $8B EE/0072: 85 91 STA $91 EE/0074: 64 8D STZ $8D EE/0076: A9 00 FF LDA #$FF00 EE/0079: 85 8F STA $8F EE/007B: A9 0F 00 LDA #$000F EE/007E: 85 22 STA $22 EE/0080: 64 23 STZ $23 EE/0082: A5 83 LDA $83 EE/0084: 10 03 BPL $0089 EE/0086: 49 FF FF EOR #$FFFF EE/0089: 4A LSR EE/008A: 18 CLC EE/008B: 65 85 ADC $85 EE/008D: 85 87 STA $87 EE/008F: E2 20 SEP #$20 EE/0091: A0 00 00 LDY #$0000 EE/0094: AF FD 11 00 LDA $0011FD EE/0098: F0 01 BEQ $009B EE/009A: C8 INY EE/009B: 85 EA STA $EA EE/009D: AF FE 11 00 LDA $0011FE EE/00A1: F0 01 BEQ $00A4 EE/00A3: C8 INY EE/00A4: 85 EB STA $EB EE/00A6: AF FF 11 00 LDA $0011FF EE/00AA: F0 01 BEQ $00AD EE/00AC: C8 INY EE/00AD: 85 EC STA $EC EE/00AF: C0 00 00 CPY #$0000 EE/00B2: F0 1A BEQ $00CE EE/00B4: 64 ED STZ $ED EE/00B6: 64 EE STZ $EE EE/00B8: 89 80 BIT #$80 EE/00BA: D0 0A BNE $00C6 EE/00BC: 09 80 ORA #$80 EE/00BE: 85 EC STA $EC EE/00C0: A5 E7 LDA $E7 EE/00C2: 09 41 ORA #$41 EE/00C4: 80 06 BRA $00CC EE/00C6: A5 E7 LDA $E7 EE/00C8: 09 01 ORA #$01 EE/00CA: 29 BF AND #$BF EE/00CC: 85 E7 STA $E7 EE/00CE: E2 20 SEP #$20 EE/00D0: A9 C8 LDA #$C8 EE/00D2: 8D 07 42 STA $4207 EE/00D5: E2 20 SEP #$20 EE/00D7: 58 CLI EE/00D8: A9 80 LDA #$80 EE/00DA: 8D 00 21 STA $2100 EE/00DD: CD 10 42 CMP $4210 EE/00E0: AD 12 42 LDA $4212 EE/00E3: 89 80 BIT #$80 EE/00E5: F0 F6 BEQ $00DD EE/00E7: A9 B1 LDA #$B1 EE/00E9: 8D 00 42 STA $4200 EE/00EC: A5 24 LDA $24 EE/00EE: F0 FC BEQ $00EC EE/00F0: 64 24 STZ $24 EE/00F2: AD F6 11 LDA $11F6 EE/00F5: 89 10 BIT #$10 EE/00F7: F0 03 BEQ $00FC EE/00F9: 20 43 95 JSR $9543 EE/00FC: E2 20 SEP #$20 EE/00FE: AD F6 11 LDA $11F6 ; disable battle EE/0101: 29 FD AND #$FD EE/0103: 8D F6 11 STA $11F6 EE/0106: 89 01 BIT #$01 EE/0108: D0 03 BNE $010D EE/010A: 20 2D 41 JSR $412D EE/010D: CD 10 42 CMP $4210 EE/0110: AD 12 42 LDA $4212 EE/0113: 89 80 BIT #$80 EE/0115: F0 F6 BEQ $010D EE/0117: A9 02 LDA #$02 EE/0119: 8D 05 21 STA $2105 ; screen mode 2 EE/011C: A5 24 LDA $24 EE/011E: F0 FC BEQ $011C EE/0120: 64 24 STZ $24 EE/0122: E2 20 SEP #$20 EE/0124: A9 02 LDA #$02 EE/0126: 8D 05 21 STA $2105 ; screen mode 2 EE/0129: AD 64 1F LDA $1F64 EE/012C: C9 02 CMP #$02 EE/012E: F0 04 BEQ $0134 EE/0130: A9 03 LDA #$03 EE/0132: 80 02 BRA $0136 EE/0134: A9 83 LDA #$83 EE/0136: 8D 31 21 STA $2131 EE/0139: 22 09 00 C3 JSL $C30009 ; update controller (field/world) EE/013D: A5 70 LDA $70 EE/013F: 8D 0F 21 STA $210F EE/0142: A5 71 LDA $71 EE/0144: 8D 0F 21 STA $210F EE/0147: 20 FF 39 JSR $39FF EE/014A: 20 B6 37 JSR $37B6 EE/014D: C2 20 REP #$20 EE/014F: A9 E0 00 LDA #$00E0 EE/0152: 38 SEC EE/0153: E5 87 SBC $87 EE/0155: 8D 09 42 STA $4209 EE/0158: 20 98 19 JSR $1998 ; EE/015B: AD F6 11 LDA $11F6 EE/015E: 89 02 00 BIT #$0002 EE/0161: F0 68 BEQ $01CB ; branch if battle is not enabled EE/0163: 20 75 18 JSR $1875 EE/0166: E2 20 SEP #$20 EE/0168: 20 B2 90 JSR $90B2 ; save direct page EE/016B: A9 80 LDA #$80 EE/016D: 8D 00 21 STA $2100 EE/0170: 9C 00 42 STZ $4200 EE/0173: 9C 0C 42 STZ $420C EE/0176: 78 SEI EE/0177: 08 PHP EE/0178: 8B PHB EE/0179: 22 00 00 C2 JSL $C20000 ; battle EE/017D: AB PLB EE/017E: 28 PLP EE/017F: A9 80 LDA #$80 EE/0181: 8D 00 21 STA $2100 EE/0184: 9C 00 42 STZ $4200 EE/0187: 9C 0C 42 STZ $420C EE/018A: 78 SEI EE/018B: AD D1 1D LDA $1DD1 EE/018E: 89 01 BIT #$01 EE/0190: F0 03 BEQ $0195 ; branch if party won the battle EE/0192: 4C 35 93 JMP $9335 ; terminate world map (game over) EE/0195: AD F6 11 LDA $11F6 EE/0198: 89 20 BIT #$20 EE/019A: F0 2C BEQ $01C8 EE/019C: AD D2 1D LDA $1DD2 EE/019F: 89 01 BIT #$01 EE/01A1: F0 1B BEQ $01BE EE/01A3: AF 7B B2 EE LDA $EEB27B ; CA/0096 (doom gaze defeated) EE/01A7: 8F FD 11 00 STA $0011FD ; set world map event pointer EE/01AB: AF 7C B2 EE LDA $EEB27C EE/01AF: 8F FE 11 00 STA $0011FE EE/01B3: AF 7D B2 EE LDA $EEB27D EE/01B7: 18 CLC EE/01B8: 69 4A ADC #$4A EE/01BA: 8F FF 11 00 STA $0011FF EE/01BE: AD F6 11 LDA $11F6 EE/01C1: 29 DF AND #$DF EE/01C3: 09 40 ORA #$40 EE/01C5: 8D F6 11 STA $11F6 EE/01C8: 4C F6 83 JMP $83F6 ; reload map EE/01CB: C2 20 REP #$20 EE/01CD: A5 83 LDA $83 EE/01CF: 10 03 BPL $01D4 EE/01D1: 49 FF FF EOR #$FFFF EE/01D4: 4A LSR EE/01D5: 18 CLC EE/01D6: 65 85 ADC $85 EE/01D8: 85 87 STA $87 EE/01DA: 20 88 38 JSR $3888 EE/01DD: 20 80 3A JSR $3A80 EE/01E0: 20 BD 43 JSR $43BD EE/01E3: 20 7C 42 JSR $427C EE/01E6: AD F6 11 LDA $11F6 EE/01E9: 89 01 00 BIT #$0001 EE/01EC: D0 03 BNE $01F1 EE/01EE: 20 B5 41 JSR $41B5 EE/01F1: A5 20 LDA $20 EE/01F3: C9 04 00 CMP #$0004 EE/01F6: F0 08 BEQ $0200 EE/01F8: 20 63 33 JSR $3363 EE/01FB: 20 AD AA JSR $AAAD EE/01FE: 80 03 BRA $0203 EE/0200: 20 8B 35 JSR $358B EE/0203: E2 20 SEP #$20 EE/0205: A5 19 LDA $19 EE/0207: C9 FF CMP #$FF EE/0209: D0 06 BNE $0211 EE/020B: 20 D7 22 JSR $22D7 EE/020E: 4C D2 91 JMP $91D2 EE/0211: A5 19 LDA $19 EE/0213: F0 23 BEQ $0238 EE/0215: 89 01 BIT #$01 EE/0217: F0 03 BEQ $021C EE/0219: 20 56 1C JSR $1C56 EE/021C: A5 19 LDA $19 EE/021E: 29 04 AND #$04 EE/0220: C9 04 CMP #$04 EE/0222: D0 14 BNE $0238 EE/0224: AD F6 11 LDA $11F6 EE/0227: 09 1C ORA #$1C EE/0229: 8D F6 11 STA $11F6 EE/022C: A5 20 LDA $20 EE/022E: C9 02 CMP #$02 EE/0230: F0 03 BEQ $0235 EE/0232: 20 53 96 JSR $9653 EE/0235: 4C D2 91 JMP $91D2 EE/0238: AD 24 00 LDA $0024 EE/023B: F0 FB BEQ $0238 EE/023D: 9C 24 00 STZ $0024 EE/0240: A5 23 LDA $23 EE/0242: C5 22 CMP $22 EE/0244: F0 06 BEQ $024C EE/0246: B0 03 BCS $024B EE/0248: 1A INC EE/0249: 80 01 BRA $024C EE/024B: 3A DEC EE/024C: 85 23 STA $23 EE/024E: 4C 22 01 JMP $0122 ; [ World Map (no vehicle) ] EE/0251: 20 5F 06 JSR $065F EE/0254: 20 15 40 JSR $4015 EE/0257: 20 BE 40 JSR $40BE EE/025A: 20 9E 07 JSR $079E EE/025D: 20 11 57 JSR $5711 EE/0260: 20 18 41 JSR $4118 EE/0263: C2 20 REP #$20 EE/0265: A9 00 80 LDA #$8000 EE/0268: 85 44 STA $44 EE/026A: 85 46 STA $46 EE/026C: A9 20 00 LDA #$0020 EE/026F: 85 93 STA $93 EE/0271: A9 00 00 LDA #$0000 EE/0274: 85 73 STA $73 EE/0276: A9 00 90 LDA #$9000 EE/0279: 85 8B STA $8B EE/027B: 85 91 STA $91 EE/027D: A9 FF 8F LDA #$8FFF EE/0280: 85 8D STA $8D EE/0282: A9 FF FF LDA #$FFFF EE/0285: 85 8F STA $8F EE/0287: A9 0F 00 LDA #$000F EE/028A: 85 22 STA $22 EE/028C: 64 23 STZ $23 EE/028E: A5 83 LDA $83 EE/0290: 10 04 BPL $0296 EE/0292: 49 FF FF EOR #$FFFF EE/0295: 1A INC EE/0296: 4A LSR EE/0297: 18 CLC EE/0298: 65 85 ADC $85 EE/029A: 85 87 STA $87 EE/029C: E2 20 SEP #$20 EE/029E: A0 00 00 LDY #$0000 EE/02A1: AF FD 11 00 LDA $0011FD EE/02A5: F0 01 BEQ $02A8 EE/02A7: C8 INY EE/02A8: 85 EA STA $EA EE/02AA: AF FE 11 00 LDA $0011FE EE/02AE: F0 01 BEQ $02B1 EE/02B0: C8 INY EE/02B1: 85 EB STA $EB EE/02B3: AF FF 11 00 LDA $0011FF EE/02B7: F0 01 BEQ $02BA EE/02B9: C8 INY EE/02BA: 85 EC STA $EC EE/02BC: C0 00 00 CPY #$0000 EE/02BF: F0 1A BEQ $02DB EE/02C1: 64 ED STZ $ED EE/02C3: 64 EE STZ $EE EE/02C5: 89 80 BIT #$80 EE/02C7: D0 0A BNE $02D3 EE/02C9: 09 80 ORA #$80 EE/02CB: 85 EC STA $EC EE/02CD: A5 E7 LDA $E7 EE/02CF: 09 41 ORA #$41 EE/02D1: 80 06 BRA $02D9 EE/02D3: A5 E7 LDA $E7 EE/02D5: 09 01 ORA #$01 EE/02D7: 29 BF AND #$BF EE/02D9: 85 E7 STA $E7 EE/02DB: AD 05 02 LDA $0205 EE/02DE: C9 02 CMP #$02 EE/02E0: D0 22 BNE $0304 ; branch if tent was not used EE/02E2: AF 6C B2 EE LDA $EEB26C ; event pointer for tent (world map) EE/02E6: 85 EA STA $EA EE/02E8: AF 6D B2 EE LDA $EEB26D EE/02EC: 85 EB STA $EB EE/02EE: AF 6E B2 EE LDA $EEB26E EE/02F2: 18 CLC EE/02F3: 69 CA ADC #$CA EE/02F5: 85 EC STA $EC EE/02F7: 64 ED STZ $ED EE/02F9: 64 EE STZ $EE EE/02FB: A5 E7 LDA $E7 EE/02FD: 09 41 ORA #$41 EE/02FF: 85 E7 STA $E7 EE/0301: 9C 05 02 STZ $0205 EE/0304: A9 04 LDA #$04 EE/0306: 85 58 STA $58 EE/0308: A0 00 00 LDY #$0000 EE/030B: B9 50 18 LDA $1850,Y EE/030E: 89 40 BIT #$40 EE/0310: F0 17 BEQ $0329 EE/0312: 29 07 AND #$07 EE/0314: CD 6D 1A CMP $1A6D EE/0317: D0 10 BNE $0329 EE/0319: B9 50 18 LDA $1850,Y EE/031C: 4A LSR EE/031D: 4A LSR EE/031E: 4A LSR EE/031F: 29 03 AND #$03 EE/0321: C5 58 CMP $58 EE/0323: B0 04 BCS $0329 EE/0325: 85 58 STA $58 EE/0327: 84 5A STY $5A EE/0329: C8 INY EE/032A: C0 10 00 CPY #$0010 EE/032D: D0 DC BNE $030B EE/032F: A5 5A LDA $5A EE/0331: 8D 02 42 STA $4202 EE/0334: A9 25 LDA #$25 EE/0336: 8D 03 42 STA $4203 EE/0339: EA NOP EE/033A: EA NOP EE/033B: EA NOP EE/033C: AE 16 42 LDX $4216 EE/033F: BD 01 16 LDA $1601,X EE/0342: 8D FB 11 STA $11FB EE/0345: A6 5A LDX $5A EE/0347: BD 70 1F LDA $1F70,X EE/034A: 4A LSR EE/034B: 8D FC 11 STA $11FC EE/034E: E2 20 SEP #$20 EE/0350: A9 C8 LDA #$C8 EE/0352: 8D 07 42 STA $4207 EE/0355: 9C 08 42 STZ $4208 EE/0358: A9 90 LDA #$90 EE/035A: 8D 09 42 STA $4209 EE/035D: 9C 0A 42 STZ $420A EE/0360: E2 20 SEP #$20 EE/0362: CD 10 42 CMP $4210 EE/0365: AD 12 42 LDA $4212 EE/0368: 89 80 BIT #$80 EE/036A: F0 F6 BEQ $0362 EE/036C: 58 CLI EE/036D: A9 80 LDA #$80 EE/036F: 8D 00 21 STA $2100 EE/0372: A9 B1 LDA #$B1 EE/0374: 8D 00 42 STA $4200 EE/0377: AD 24 00 LDA $0024 EE/037A: F0 FB BEQ $0377 EE/037C: 9C 24 00 STZ $0024 EE/037F: AD F6 11 LDA $11F6 EE/0382: 89 10 BIT #$10 EE/0384: F0 03 BEQ $0389 EE/0386: 20 76 97 JSR $9776 EE/0389: AD F6 11 LDA $11F6 EE/038C: 89 01 BIT #$01 EE/038E: D0 03 BNE $0393 EE/0390: 20 2D 41 JSR $412D EE/0393: C2 20 REP #$20 EE/0395: E2 20 SEP #$20 EE/0397: A5 20 LDA $20 EE/0399: C9 04 CMP #$04 EE/039B: D0 04 BNE $03A1 EE/039D: A9 A3 LDA #$A3 EE/039F: 80 02 BRA $03A3 EE/03A1: A9 63 LDA #$63 EE/03A3: 8D 31 21 STA $2131 EE/03A6: 22 09 00 C3 JSL $C30009 ; update controller EE/03AA: 20 0E 1D JSR $1D0E EE/03AD: A5 E9 LDA $E9 EE/03AF: 89 10 BIT #$10 EE/03B1: D0 3F BNE $03F2 EE/03B3: A5 E8 LDA $E8 EE/03B5: 89 01 BIT #$01 EE/03B7: F0 39 BEQ $03F2 EE/03B9: 20 92 22 JSR $2292 EE/03BC: A9 8F LDA #$8F EE/03BE: 8D 00 21 STA $2100 EE/03C1: 78 SEI EE/03C2: 9C 0C 42 STZ $420C EE/03C5: 9C 00 02 STZ $0200 EE/03C8: A9 80 LDA #$80 EE/03CA: 8D 01 02 STA $0201 EE/03CD: 9C 00 42 STZ $4200 EE/03D0: 9C FD 11 STZ $11FD EE/03D3: 9C FE 11 STZ $11FE EE/03D6: 9C FF 11 STZ $11FF EE/03D9: A5 E0 LDA $E0 EE/03DB: 8D 60 1F STA $1F60 EE/03DE: A5 E2 LDA $E2 EE/03E0: 8D 61 1F STA $1F61 EE/03E3: A5 F6 LDA $F6 EE/03E5: 8D 68 1F STA $1F68 EE/03E8: 20 9F 90 JSR $909F ; restore mode 7 variables EE/03EB: 22 00 00 C3 JSL $C30000 ; open menu EE/03EF: 4C F6 83 JMP $83F6 ; reload map EE/03F2: A5 E9 LDA $E9 EE/03F4: 29 EF AND #$EF EE/03F6: 85 E9 STA $E9 EE/03F8: A5 E8 LDA $E8 EE/03FA: 89 40 BIT #$40 EE/03FC: F0 2D BEQ $042B EE/03FE: AD F6 11 LDA $11F6 EE/0401: 09 10 ORA #$10 EE/0403: 8D F6 11 STA $11F6 EE/0406: 20 D4 94 JSR $94D4 EE/0409: A9 8F LDA #$8F EE/040B: 8D 00 21 STA $2100 EE/040E: 78 SEI EE/040F: 9C 0C 42 STZ $420C EE/0412: 9C FD 11 STZ $11FD EE/0415: 9C FE 11 STZ $11FE EE/0418: 9C FF 11 STZ $11FF EE/041B: A5 E0 LDA $E0 EE/041D: 8D 60 1F STA $1F60 EE/0420: A5 E2 LDA $E2 EE/0422: 8D 61 1F STA $1F61 EE/0425: 20 9F 90 JSR $909F ; restore mode 7 variables EE/0428: 4C 22 84 JMP $8422 EE/042B: E2 20 SEP #$20 EE/042D: A5 E8 LDA $E8 EE/042F: 89 10 BIT #$10 EE/0431: F0 2C BEQ $045F EE/0433: AD D1 1D LDA $1DD1 EE/0436: 89 01 BIT #$01 EE/0438: F0 03 BEQ $043D EE/043A: 4C 35 93 JMP $9335 ; terminate world map (game over) EE/043D: 89 80 BIT #$80 EE/043F: F0 1B BEQ $045C EE/0441: AF 78 B2 EE LDA $EEB278 ; CA/008F (enter gogo's lair) EE/0445: 8F FD 11 00 STA $0011FD EE/0449: AF 79 B2 EE LDA $EEB279 EE/044D: 8F FE 11 00 STA $0011FE EE/0451: AF 7A B2 EE LDA $EEB27A EE/0455: 18 CLC EE/0456: 69 4A ADC #$4A ; interesting, they use $4A instead of $CA here EE/0458: 8F FF 11 00 STA $0011FF EE/045C: 4C F6 83 JMP $83F6 ; reload map EE/045F: C2 30 REP #$30 EE/0461: A9 E0 00 LDA #$00E0 EE/0464: 85 87 STA $87 EE/0466: 20 51 3E JSR $3E51 EE/0469: A5 E9 LDA $E9 EE/046B: 09 04 00 ORA #$0004 EE/046E: 85 E9 STA $E9 EE/0470: 20 BD 43 JSR $43BD EE/0473: 20 02 43 JSR $4302 EE/0476: AD F6 11 LDA $11F6 EE/0479: 89 01 00 BIT #$0001 EE/047C: D0 03 BNE $0481 EE/047E: 20 B5 41 JSR $41B5 EE/0481: 20 63 33 JSR $3363 EE/0484: 20 AD AA JSR $AAAD EE/0487: E2 20 SEP #$20 EE/0489: A5 19 LDA $19 EE/048B: F0 0D BEQ $049A EE/048D: 30 05 BMI $0494 EE/048F: 20 92 22 JSR $2292 EE/0492: 80 03 BRA $0497 EE/0494: 20 B6 22 JSR $22B6 EE/0497: 4C 84 92 JMP $9284 EE/049A: A5 24 LDA $24 EE/049C: F0 FC BEQ $049A EE/049E: 64 24 STZ $24 EE/04A0: A5 23 LDA $23 EE/04A2: C5 22 CMP $22 EE/04A4: F0 06 BEQ $04AC EE/04A6: B0 03 BCS $04AB EE/04A8: 1A INC EE/04A9: 80 01 BRA $04AC EE/04AB: 3A DEC EE/04AC: 85 23 STA $23 EE/04AE: 4C 95 03 JMP $0395 ; [ Magitek Train Ride ] EE/04B1: E2 20 SEP #$20 EE/04B3: C2 10 REP #$10 EE/04B5: 20 15 40 JSR $4015 ; clear sprite data EE/04B8: 20 74 40 JSR $4074 ; copy sprite data to ppu EE/04BB: A9 0F LDA #$0F EE/04BD: 85 22 STA $22 ; target screen brightness EE/04BF: 64 23 STZ $23 ; current screen brightness EE/04C1: 64 24 STZ $24 ; clear vblank flag EE/04C3: AD F6 11 LDA $11F6 ; disable battle EE/04C6: 29 FD AND #$FD EE/04C8: 8D F6 11 STA $11F6 EE/04CB: A9 D0 LDA #$D0 ; set vertical irq counter to 208 EE/04CD: 8D 09 42 STA $4209 EE/04D0: 9C 0A 42 STZ $420A EE/04D3: A9 40 LDA #$40 ; set horizontal irq counter to 64 EE/04D5: 8D 07 42 STA $4207 EE/04D8: 9C 08 42 STZ $4208 EE/04DB: CD 11 42 CMP $4211 ; clear irq EE/04DE: A9 01 LDA #$01 EE/04E0: 8D 2C 21 STA $212C ; enable bg1 in main screen EE/04E3: 9C 2D 21 STZ $212D ; disable all layers in subscreen EE/04E6: E2 20 SEP #$20 EE/04E8: CD 10 42 CMP $4210 ; clear nmi EE/04EB: AD 12 42 LDA $4212 EE/04EE: 89 80 BIT #$80 EE/04F0: F0 F6 BEQ $04E8 ; wait for vblank EE/04F2: A9 00 LDA #$00 EE/04F4: 8D 00 21 STA $2100 ; clear screen brightness EE/04F7: A9 B1 LDA #$B1 EE/04F9: 8D 00 42 STA $4200 ; enable nmi, horizontal irq, vertical irq, and joypad EE/04FC: 58 CLI EE/04FD: E2 20 SEP #$20 EE/04FF: 22 09 00 C3 JSL $C30009 ; update controller EE/0503: 20 26 23 JSR $2326 ; execute magitek train ride command EE/0506: 20 14 9F JSR $9F14 ; update magitek train ride graphics EE/0509: AD F6 11 LDA $11F6 EE/050C: 89 02 BIT #$02 EE/050E: F0 35 BEQ $0545 ; branch if battle is not enabled EE/0510: 20 CE 18 JSR $18CE ; battle blur and sound effect EE/0513: E2 20 SEP #$20 EE/0515: 20 B2 90 JSR $90B2 ; save direct page EE/0518: A9 80 LDA #$80 EE/051A: 8D 00 21 STA $2100 EE/051D: 9C 00 42 STZ $4200 EE/0520: 9C 0C 42 STZ $420C EE/0523: 78 SEI EE/0524: 08 PHP EE/0525: 8B PHB EE/0526: 22 00 00 C2 JSL $C20000 ; battle EE/052A: AB PLB EE/052B: 28 PLP EE/052C: A9 80 LDA #$80 EE/052E: 8D 00 21 STA $2100 EE/0531: 9C 00 42 STZ $4200 EE/0534: 9C 0C 42 STZ $420C EE/0537: 78 SEI EE/0538: AD D1 1D LDA $1DD1 EE/053B: 89 01 BIT #$01 EE/053D: F0 03 BEQ $0542 ; branch if party didn't lose the battle EE/053F: 4C 35 93 JMP $9335 ; terminate world map (game over) EE/0542: 4C 48 8C JMP $8C48 ; init magitek train ride EE/0545: A5 19 LDA $19 EE/0547: F0 07 BEQ $0550 ; branch if fade out is disabled EE/0549: A5 23 LDA $23 EE/054B: D0 03 BNE $0550 ; branch if current screen brightness is not zero EE/054D: 4C 1A 93 JMP $931A ; terminate world map (end of magitek train ride) EE/0550: E2 20 SEP #$20 EE/0552: A5 FA LDA $FA EE/0554: C9 04 CMP #$04 EE/0556: 90 FA BCC $0552 ; wait 4 frames EE/0558: A5 23 LDA $23 EE/055A: C5 22 CMP $22 EE/055C: F0 06 BEQ $0564 ; branch if screen brightness has reached target EE/055E: B0 03 BCS $0563 ; branch if screen brightness is greater than target EE/0560: 1A INC ; increment screen brightness EE/0561: 80 01 BRA $0564 EE/0563: 3A DEC ; decrement screen brightness EE/0564: 85 23 STA $23 EE/0566: 4C FD 04 JMP $04FD ; [ ] setHdma0: EE/0569: E2 20 SEP #$20 EE/056B: A9 FC LDA #$FC EE/056D: 85 9F STA $9F EE/056F: 85 A6 STA $A6 EE/0571: 85 AD STA $AD EE/0573: 85 B4 STA $B4 EE/0575: 8F 00 60 7E STA $7E6000 EE/0579: 8F 07 62 7E STA $7E6207 EE/057D: A9 E4 LDA #$E4 EE/057F: 85 A2 STA $A2 EE/0581: 85 A9 STA $A9 EE/0583: 85 B0 STA $B0 EE/0585: 85 B7 STA $B7 EE/0587: 8F 03 60 7E STA $7E6003 EE/058B: 8F 0A 62 7E STA $7E620A EE/058F: 64 A5 STZ $A5 EE/0591: 64 AC STZ $AC EE/0593: 64 B3 STZ $B3 EE/0595: 64 BA STZ $BA EE/0597: 7B TDC EE/0598: 8F 06 60 7E STA $7E6006 EE/059C: 8F 0D 62 7E STA $7E620D EE/05A0: C2 20 REP #$20 EE/05A2: A9 9F 00 LDA #$009F EE/05A5: 8D 42 43 STA $4342 EE/05A8: A9 A6 00 LDA #$00A6 EE/05AB: 8D 52 43 STA $4352 EE/05AE: A9 AD 00 LDA #$00AD EE/05B1: 8D 62 43 STA $4362 EE/05B4: A9 B4 00 LDA #$00B4 EE/05B7: 8D 72 43 STA $4372 EE/05BA: A9 BB 00 LDA #$00BB EE/05BD: 8D 12 43 STA $4312 EE/05C0: A9 00 60 LDA #$6000 EE/05C3: 8D 22 43 STA $4322 EE/05C6: A9 07 62 LDA #$6207 EE/05C9: 8D 32 43 STA $4332 EE/05CC: A9 07 60 LDA #$6007 EE/05CF: 8F 01 60 7E STA $7E6001 EE/05D3: A9 FF 60 LDA #$60FF EE/05D6: 8F 04 60 7E STA $7E6004 EE/05DA: A9 0E 62 LDA #$620E EE/05DD: 8F 08 62 7E STA $7E6208 EE/05E1: A9 FE 63 LDA #$63FE EE/05E4: 8F 0B 62 7E STA $7E620B EE/05E8: E2 20 SEP #$20 EE/05EA: A9 42 LDA #$42 EE/05EC: 8D 40 43 STA $4340 EE/05EF: 8D 50 43 STA $4350 EE/05F2: 8D 60 43 STA $4360 EE/05F5: 8D 70 43 STA $4370 EE/05F8: A9 1B LDA #$1B EE/05FA: 8D 41 43 STA $4341 EE/05FD: A9 1C LDA #$1C EE/05FF: 8D 51 43 STA $4351 EE/0602: A9 1D LDA #$1D EE/0604: 8D 61 43 STA $4361 EE/0607: A9 1E LDA #$1E EE/0609: 8D 71 43 STA $4371 EE/060C: 9C 44 43 STZ $4344 EE/060F: 9C 54 43 STZ $4354 EE/0612: 9C 64 43 STZ $4364 EE/0615: 9C 74 43 STZ $4374 EE/0618: 9C 47 43 STZ $4347 EE/061B: 9C 57 43 STZ $4357 EE/061E: 9C 67 43 STZ $4367 EE/0621: 9C 77 43 STZ $4377 EE/0624: A9 42 LDA #$42 EE/0626: 8D 10 43 STA $4310 EE/0629: A9 0F LDA #$0F EE/062B: 8D 11 43 STA $4311 EE/062E: 9C 14 43 STZ $4314 EE/0631: A9 7E LDA #$7E EE/0633: 8D 17 43 STA $4317 EE/0636: A9 42 LDA #$42 EE/0638: 8D 20 43 STA $4320 EE/063B: A9 32 LDA #$32 EE/063D: 8D 21 43 STA $4321 EE/0640: A9 7E LDA #$7E EE/0642: 8D 24 43 STA $4324 EE/0645: A9 7E LDA #$7E EE/0647: 8D 27 43 STA $4327 EE/064A: A9 44 LDA #$44 EE/064C: 8D 30 43 STA $4330 EE/064F: A9 26 LDA #$26 EE/0651: 8D 31 43 STA $4331 EE/0654: A9 7E LDA #$7E EE/0656: 8D 34 43 STA $4334 EE/0659: A9 7E LDA #$7E EE/065B: 8D 37 43 STA $4337 EE/065E: 60 RTS ; [ ] setHdma1: EE/065F: E2 20 SEP #$20 EE/0661: A9 FC LDA #$FC EE/0663: 85 9F STA $9F EE/0665: 85 A6 STA $A6 EE/0667: 85 AD STA $AD EE/0669: 85 B4 STA $B4 EE/066B: 8F 00 60 7E STA $7E6000 EE/066F: 8F 07 62 7E STA $7E6207 EE/0673: A9 E4 LDA #$E4 EE/0675: 85 A2 STA $A2 EE/0677: 85 A9 STA $A9 EE/0679: 85 B0 STA $B0 EE/067B: 85 B7 STA $B7 EE/067D: 8F 03 60 7E STA $7E6003 EE/0681: 8F 0A 62 7E STA $7E620A EE/0685: 64 A5 STZ $A5 EE/0687: 64 AC STZ $AC EE/0689: 64 B3 STZ $B3 EE/068B: 64 BA STZ $BA EE/068D: 7B TDC EE/068E: 8F 06 60 7E STA $7E6006 EE/0692: 8F 0D 62 7E STA $7E620D EE/0696: C2 20 REP #$20 EE/0698: A9 9F 00 LDA #$009F EE/069B: 8D 42 43 STA $4342 EE/069E: A9 A6 00 LDA #$00A6 EE/06A1: 8D 52 43 STA $4352 EE/06A4: A9 AD 00 LDA #$00AD EE/06A7: 8D 62 43 STA $4362 EE/06AA: A9 B4 00 LDA #$00B4 EE/06AD: 8D 72 43 STA $4372 EE/06B0: A9 00 60 LDA #$6000 EE/06B3: 8D 22 43 STA $4322 EE/06B6: A9 07 62 LDA #$6207 EE/06B9: 8D 32 43 STA $4332 EE/06BC: A9 07 60 LDA #$6007 EE/06BF: 8F 01 60 7E STA $7E6001 EE/06C3: A9 FF 60 LDA #$60FF EE/06C6: 8F 04 60 7E STA $7E6004 EE/06CA: A9 0E 62 LDA #$620E EE/06CD: 8F 08 62 7E STA $7E6208 EE/06D1: A9 FE 63 LDA #$63FE EE/06D4: 8F 0B 62 7E STA $7E620B EE/06D8: E2 20 SEP #$20 EE/06DA: A9 42 LDA #$42 EE/06DC: 8D 40 43 STA $4340 EE/06DF: 8D 50 43 STA $4350 EE/06E2: 8D 60 43 STA $4360 EE/06E5: 8D 70 43 STA $4370 EE/06E8: A9 1B LDA #$1B EE/06EA: 8D 41 43 STA $4341 EE/06ED: A9 1C LDA #$1C EE/06EF: 8D 51 43 STA $4351 EE/06F2: A9 1D LDA #$1D EE/06F4: 8D 61 43 STA $4361 EE/06F7: A9 1E LDA #$1E EE/06F9: 8D 71 43 STA $4371 EE/06FC: 9C 44 43 STZ $4344 EE/06FF: 9C 54 43 STZ $4354 EE/0702: 9C 64 43 STZ $4364 EE/0705: 9C 74 43 STZ $4374 EE/0708: 9C 47 43 STZ $4347 EE/070B: 9C 57 43 STZ $4357 EE/070E: 9C 67 43 STZ $4367 EE/0711: 9C 77 43 STZ $4377 EE/0714: A9 42 LDA #$42 EE/0716: 8D 20 43 STA $4320 EE/0719: A9 32 LDA #$32 EE/071B: 8D 21 43 STA $4321 EE/071E: A9 7E LDA #$7E EE/0720: 8D 24 43 STA $4324 EE/0723: A9 7E LDA #$7E EE/0725: 8D 27 43 STA $4327 EE/0728: A9 44 LDA #$44 EE/072A: 8D 30 43 STA $4330 EE/072D: A9 26 LDA #$26 EE/072F: 8D 31 43 STA $4331 EE/0732: A9 7E LDA #$7E EE/0734: 8D 34 43 STA $4334 EE/0737: A9 7E LDA #$7E EE/0739: 8D 37 43 STA $4337 EE/073C: 60 RTS ; [ ] makeDDA: EE/073D: C2 20 REP #$20 EE/073F: C2 10 REP #$10 EE/0741: A9 01 00 LDA #$0001 EE/0744: 85 66 STA $66 EE/0746: A2 00 00 LDX #$0000 EE/0749: A0 20 00 LDY #$0020 EE/074C: A9 E0 FF LDA #$FFE0 EE/074F: 85 58 STA $58 EE/0751: 64 5A STZ $5A EE/0753: A5 66 LDA $66 EE/0755: 0A ASL EE/0756: 18 CLC EE/0757: 65 58 ADC $58 EE/0759: C9 20 00 CMP #$0020 EE/075C: 30 06 BMI $0764 EE/075E: E6 5A INC $5A EE/0760: 38 SEC EE/0761: E9 40 00 SBC #$0040 EE/0764: 85 58 STA $58 EE/0766: A5 5A LDA $5A EE/0768: 9F 62 B8 7E STA $7EB862,X EE/076C: E8 INX EE/076D: 88 DEY EE/076E: D0 E3 BNE $0753 EE/0770: E6 66 INC $66 EE/0772: A5 66 LDA $66 EE/0774: C9 20 00 CMP #$0020 EE/0777: D0 D0 BNE $0749 EE/0779: 60 RTS ; [ ] setbg3sc: EE/077A: E2 20 SEP #$20 EE/077C: C2 10 REP #$10 EE/077E: A9 80 LDA #$80 EE/0780: 8D 15 21 STA $2115 EE/0783: A2 00 4C LDX #$4C00 EE/0786: 8E 16 21 STX $2116 EE/0789: A9 40 LDA #$40 EE/078B: A2 20 00 LDX #$0020 EE/078E: 9C 19 21 STZ $2119 EE/0791: CA DEX EE/0792: D0 FA BNE $078E EE/0794: A2 20 00 LDX #$0020 EE/0797: 8D 19 21 STA $2119 EE/079A: CA DEX EE/079B: D0 FA BNE $0797 EE/079D: 60 RTS ; [ ] bg1sccl: EE/079E: A2 00 40 LDX #$4000 EE/07A1: 8E 16 21 STX $2116 EE/07A4: A2 00 00 LDX #$0000 EE/07A7: A0 00 04 LDY #$0400 EE/07AA: 8E 18 21 STX $2118 EE/07AD: 88 DEY EE/07AE: D0 FA BNE $07AA EE/07B0: A2 00 50 LDX #$5000 EE/07B3: 8E 16 21 STX $2116 EE/07B6: A2 00 00 LDX #$0000 EE/07B9: A0 20 00 LDY #$0020 EE/07BC: 8E 18 21 STX $2118 EE/07BF: 88 DEY EE/07C0: D0 FA BNE $07BC EE/07C2: 60 RTS ; [ Vector Approach ] doman: EE/07C3: E2 20 SEP #$20 EE/07C5: A9 8F LDA #$8F EE/07C7: 8D 00 21 STA $2100 EE/07CA: 9C 00 42 STZ $4200 EE/07CD: 9C 0C 42 STZ $420C EE/07D0: 78 SEI EE/07D1: A9 7E LDA #$7E EE/07D3: 48 PHA EE/07D4: AB PLB EE/07D5: AF 36 B2 EE LDA $EEB236 ; pointer to vector approach palette ($EFCE77) EE/07D9: 85 D2 STA $D2 EE/07DB: AF 37 B2 EE LDA $EEB237 EE/07DF: 85 D3 STA $D3 EE/07E1: AF 38 B2 EE LDA $EEB238 EE/07E5: 85 D4 STA $D4 EE/07E7: A0 00 00 LDY #$0000 EE/07EA: C2 20 REP #$20 EE/07EC: B7 D2 LDA [$D2],Y EE/07EE: 99 E0 E0 STA $E0E0,Y EE/07F1: C8 INY EE/07F2: C8 INY EE/07F3: C0 20 00 CPY #$0020 EE/07F6: D0 F4 BNE $07EC EE/07F8: E2 20 SEP #$20 EE/07FA: 7B TDC EE/07FB: 48 PHA EE/07FC: AB PLB EE/07FD: A2 B8 DF LDX #$DFB8 ; source = $D8DFB8 (vector panorama graphics) EE/0800: 86 D2 STX $D2 EE/0802: A9 D8 LDA #$D8 EE/0804: 85 D4 STA $D4 EE/0806: A2 00 20 LDX #$2000 ; destination = $7E2000 EE/0809: 86 D5 STX $D5 EE/080B: A9 7E LDA #$7E EE/080D: 85 D7 STA $D7 EE/080F: 20 76 A4 JSR $A476 ; decompress EE/0812: 20 80 AD JSR $AD80 ; copy backdrop graphics to vram EE/0815: A2 BF E5 LDX #$E5BF ; source = $D8E5BF (vector panorama tile formation) EE/0818: 86 D2 STX $D2 EE/081A: A9 D8 LDA #$D8 EE/081C: 85 D4 STA $D4 EE/081E: A2 00 20 LDX #$2000 ; destination = $7E2000 EE/0821: 86 D5 STX $D5 EE/0823: A9 7E LDA #$7E EE/0825: 85 D7 STA $D7 EE/0827: 20 76 A4 JSR $A476 ; decompress EE/082A: 20 A8 AD JSR $ADA8 ; copy backdrop tile formation to vram EE/082D: A9 80 LDA #$80 EE/082F: 8D 15 21 STA $2115 EE/0832: A2 00 48 LDX #$4800 EE/0835: 8E 16 21 STX $2116 EE/0838: A0 00 04 LDY #$0400 EE/083B: A2 00 00 LDX #$0000 EE/083E: 8E 18 21 STX $2118 EE/0841: 88 DEY EE/0842: D0 FA BNE $083E EE/0844: A9 7E LDA #$7E EE/0846: 48 PHA EE/0847: AB PLB EE/0848: 20 F0 40 JSR $40F0 EE/084B: C2 20 REP #$20 EE/084D: A2 00 00 LDX #$0000 EE/0850: E2 20 SEP #$20 EE/0852: 7B TDC EE/0853: 9F 07 60 7E STA $7E6007,X EE/0857: 9F 08 60 7E STA $7E6008,X EE/085B: C2 20 REP #$20 EE/085D: E8 INX EE/085E: E8 INX EE/085F: E0 9C 00 CPX #$009C EE/0862: D0 EC BNE $0850 EE/0864: A9 00 07 LDA #$0700 EE/0867: 85 58 STA $58 EE/0869: A9 00 0A LDA #$0A00 EE/086C: 85 5A STA $5A EE/086E: A5 58 LDA $58 EE/0870: 38 SEC EE/0871: E9 07 00 SBC #$0007 EE/0874: 85 58 STA $58 EE/0876: A5 5A LDA $5A EE/0878: 38 SEC EE/0879: E9 0A 00 SBC #$000A EE/087C: 85 5A STA $5A EE/087E: E2 20 SEP #$20 EE/0880: A5 59 LDA $59 EE/0882: 09 20 ORA #$20 EE/0884: 9F 07 60 7E STA $7E6007,X EE/0888: A5 5B LDA $5B EE/088A: 09 C0 ORA #$C0 EE/088C: 9F 08 60 7E STA $7E6008,X EE/0890: C2 20 REP #$20 EE/0892: E8 INX EE/0893: E8 INX EE/0894: E0 C0 01 CPX #$01C0 EE/0897: D0 D5 BNE $086E EE/0899: A9 92 00 LDA #$0092 EE/089C: 85 85 STA $85 EE/089E: A9 B4 00 LDA #$00B4 EE/08A1: 85 73 STA $73 EE/08A3: A9 00 30 LDA #$3000 EE/08A6: 85 8B STA $8B EE/08A8: 85 91 STA $91 EE/08AA: A9 00 18 LDA #$1800 EE/08AD: 85 8D STA $8D EE/08AF: A9 FF FE LDA #$FEFF EE/08B2: 85 8F STA $8F EE/08B4: A9 00 33 LDA #$3300 EE/08B7: 85 2F STA $2F EE/08B9: A9 80 09 LDA #$0980 EE/08BC: 8F 2E 6B 7E STA $7E6B2E EE/08C0: A9 00 F0 LDA #$F000 EE/08C3: 85 64 STA $64 EE/08C5: 64 31 STZ $31 EE/08C7: A9 00 00 LDA #$0000 EE/08CA: 8F 60 B6 7E STA $7EB660 EE/08CE: A9 64 00 LDA #$0064 EE/08D1: 8F 62 B6 7E STA $7EB662 EE/08D5: A9 03 00 LDA #$0003 EE/08D8: 8F 64 B6 7E STA $7EB664 EE/08DC: A9 07 00 LDA #$0007 EE/08DF: 8F 66 B6 7E STA $7EB666 EE/08E3: A9 1E 00 LDA #$001E EE/08E6: 8F 68 B6 7E STA $7EB668 EE/08EA: A9 8C 00 LDA #$008C EE/08ED: 8F 6A B6 7E STA $7EB66A EE/08F1: A9 02 00 LDA #$0002 EE/08F4: 8F 6C B6 7E STA $7EB66C EE/08F8: A9 07 00 LDA #$0007 EE/08FB: 8F 6E B6 7E STA $7EB66E EE/08FF: A9 28 00 LDA #$0028 EE/0902: 8F 70 B6 7E STA $7EB670 EE/0906: A9 A0 00 LDA #$00A0 EE/0909: 8F 72 B6 7E STA $7EB672 EE/090D: A9 04 00 LDA #$0004 EE/0910: 8F 74 B6 7E STA $7EB674 EE/0914: A9 04 00 LDA #$0004 EE/0917: 8F 76 B6 7E STA $7EB676 EE/091B: A9 19 00 LDA #$0019 EE/091E: 8F 78 B6 7E STA $7EB678 EE/0922: A9 6E 00 LDA #$006E EE/0925: 8F 7A B6 7E STA $7EB67A EE/0929: A9 02 00 LDA #$0002 EE/092C: 8F 7C B6 7E STA $7EB67C EE/0930: A9 03 00 LDA #$0003 EE/0933: 8F 7E B6 7E STA $7EB67E EE/0937: E2 20 SEP #$20 EE/0939: 7B TDC EE/093A: 8F 0F 6B 7E STA $7E6B0F EE/093E: 8F 13 6B 7E STA $7E6B13 EE/0942: 8F 17 6B 7E STA $7E6B17 EE/0946: 8F 1B 6B 7E STA $7E6B1B EE/094A: 8F 1F 6B 7E STA $7E6B1F EE/094E: 8F 23 6B 7E STA $7E6B23 EE/0952: 8F 27 6B 7E STA $7E6B27 EE/0956: 8F 2B 6B 7E STA $7E6B2B EE/095A: A9 4E LDA #$4E EE/095C: 8F 11 6B 7E STA $7E6B11 EE/0960: 8F 15 6B 7E STA $7E6B15 EE/0964: 8F 19 6B 7E STA $7E6B19 EE/0968: 8F 1D 6B 7E STA $7E6B1D EE/096C: 8F 21 6B 7E STA $7E6B21 EE/0970: 8F 25 6B 7E STA $7E6B25 EE/0974: 8F 29 6B 7E STA $7E6B29 EE/0978: 8F 2D 6B 7E STA $7E6B2D EE/097C: A9 65 LDA #$65 EE/097E: 8F 10 6B 7E STA $7E6B10 EE/0982: A9 67 LDA #$67 EE/0984: 8F 14 6B 7E STA $7E6B14 EE/0988: A9 8A LDA #$8A EE/098A: 8F 18 6B 7E STA $7E6B18 EE/098E: A9 8C LDA #$8C EE/0990: 8F 1C 6B 7E STA $7E6B1C EE/0994: A9 9A LDA #$9A EE/0996: 8F 20 6B 7E STA $7E6B20 EE/099A: A9 9B LDA #$9B EE/099C: 8F 24 6B 7E STA $7E6B24 EE/09A0: A9 70 LDA #$70 EE/09A2: 8F 28 6B 7E STA $7E6B28 EE/09A6: A9 71 LDA #$71 EE/09A8: 8F 2C 6B 7E STA $7E6B2C EE/09AC: A5 E9 LDA $E9 EE/09AE: 09 03 ORA #$03 EE/09B0: 85 E9 STA $E9 EE/09B2: 7B TDC EE/09B3: 48 PHA EE/09B4: AB PLB EE/09B5: 9C 23 21 STZ $2123 EE/09B8: 9C 24 21 STZ $2124 EE/09BB: A9 A0 LDA #$A0 EE/09BD: 8D 25 21 STA $2125 EE/09C0: A9 02 LDA #$02 EE/09C2: 8D 2D 21 STA $212D EE/09C5: 9C 2F 21 STZ $212F EE/09C8: CD 10 42 CMP $4210 EE/09CB: AD 12 42 LDA $4212 EE/09CE: 89 80 BIT #$80 EE/09D0: F0 F6 BEQ $09C8 EE/09D2: A9 B1 LDA #$B1 EE/09D4: 8D 00 42 STA $4200 EE/09D7: A2 07 A7 LDX #$A707 EE/09DA: 8E 05 15 STX $1505 EE/09DD: A9 EE LDA #$EE EE/09DF: 8D 07 15 STA $1507 EE/09E2: 58 CLI EE/09E3: A5 24 LDA $24 EE/09E5: F0 FC BEQ $09E3 EE/09E7: 64 24 STZ $24 EE/09E9: E2 20 SEP #$20 EE/09EB: A2 4E 00 LDX #$004E EE/09EE: 8E 09 42 STX $4209 EE/09F1: A2 C8 00 LDX #$00C8 EE/09F4: 8E 07 42 STX $4207 EE/09F7: A9 12 LDA #$12 EE/09F9: 8D 30 21 STA $2130 EE/09FC: A9 01 LDA #$01 EE/09FE: 8D 05 21 STA $2105 EE/0A01: A9 03 LDA #$03 EE/0A03: 8D 31 21 STA $2131 EE/0A06: A5 65 LDA $65 EE/0A08: 8D 10 21 STA $2110 EE/0A0B: 9C 10 21 STZ $2110 EE/0A0E: C2 21 REP #$21 EE/0A10: A5 64 LDA $64 EE/0A12: 69 07 00 ADC #$0007 EE/0A15: C9 00 30 CMP #$3000 EE/0A18: 10 02 BPL $0A1C EE/0A1A: 85 64 STA $64 EE/0A1C: A5 85 LDA $85 EE/0A1E: 85 87 STA $87 EE/0A20: A5 37 LDA $37 EE/0A22: 18 CLC EE/0A23: 69 60 00 ADC #$0060 EE/0A26: 85 37 STA $37 EE/0A28: A5 39 LDA $39 EE/0A2A: 69 00 00 ADC #$0000 EE/0A2D: 85 39 STA $39 EE/0A2F: A5 38 LDA $38 EE/0A31: 29 FF 0F AND #$0FFF EE/0A34: 85 38 STA $38 EE/0A36: A5 40 LDA $40 EE/0A38: 18 CLC EE/0A39: 69 60 00 ADC #$0060 EE/0A3C: 85 40 STA $40 EE/0A3E: 20 80 3A JSR $3A80 EE/0A41: 20 BD 43 JSR $43BD EE/0A44: 20 7C 42 JSR $427C EE/0A47: 20 63 33 JSR $3363 EE/0A4A: C2 20 REP #$20 EE/0A4C: A5 31 LDA $31 EE/0A4E: 1A INC EE/0A4F: 29 03 00 AND #$0003 EE/0A52: 85 31 STA $31 EE/0A54: 0A ASL EE/0A55: 0A ASL EE/0A56: 0A ASL EE/0A57: AA TAX EE/0A58: BF 0E 6B 7E LDA $7E6B0E,X EE/0A5C: 85 58 STA $58 EE/0A5E: BF 10 6B 7E LDA $7E6B10,X EE/0A62: 85 5A STA $5A EE/0A64: A5 31 LDA $31 EE/0A66: 0A ASL EE/0A67: 29 02 00 AND #$0002 EE/0A6A: 85 60 STA $60 EE/0A6C: DA PHX EE/0A6D: 20 5F 16 JSR $165F EE/0A70: FA PLX EE/0A71: C2 20 REP #$20 EE/0A73: BF 12 6B 7E LDA $7E6B12,X EE/0A77: 85 58 STA $58 EE/0A79: BF 14 6B 7E LDA $7E6B14,X EE/0A7D: 85 5A STA $5A EE/0A7F: A5 31 LDA $31 EE/0A81: 0A ASL EE/0A82: 29 02 00 AND #$0002 EE/0A85: 1A INC EE/0A86: 85 60 STA $60 EE/0A88: 20 5F 16 JSR $165F EE/0A8B: C2 20 REP #$20 EE/0A8D: A5 31 LDA $31 EE/0A8F: 0A ASL EE/0A90: 0A ASL EE/0A91: 0A ASL EE/0A92: AA TAX EE/0A93: 64 60 STZ $60 EE/0A95: BF 60 B6 7E LDA $7EB660,X EE/0A99: 18 CLC EE/0A9A: 7F 64 B6 7E ADC $7EB664,X EE/0A9E: C9 68 01 CMP #$0168 EE/0AA1: 90 03 BCC $0AA6 EE/0AA3: E9 68 01 SBC #$0168 EE/0AA6: 9F 60 B6 7E STA $7EB660,X EE/0AAA: C9 B4 00 CMP #$00B4 EE/0AAD: 90 05 BCC $0AB4 EE/0AAF: E9 B4 00 SBC #$00B4 EE/0AB2: C6 60 DEC $60 EE/0AB4: DA PHX EE/0AB5: AA TAX EE/0AB6: E2 20 SEP #$20 EE/0AB8: BF F1 FE EF LDA $EFFEF1,X EE/0ABC: FA PLX EE/0ABD: 4A LSR EE/0ABE: 4A LSR EE/0ABF: 4A LSR EE/0AC0: 85 5C STA $5C EE/0AC2: A5 60 LDA $60 EE/0AC4: 10 07 BPL $0ACD EE/0AC6: A5 5C LDA $5C EE/0AC8: 49 FF EOR #$FF EE/0ACA: 1A INC EE/0ACB: 85 5C STA $5C EE/0ACD: BF 62 B6 7E LDA $7EB662,X EE/0AD1: 18 CLC EE/0AD2: 65 5C ADC $5C EE/0AD4: 85 5D STA $5D EE/0AD6: 18 CLC EE/0AD7: 7F 66 B6 7E ADC $7EB666,X EE/0ADB: 9F 12 6B 7E STA $7E6B12,X EE/0ADF: A5 5D LDA $5D EE/0AE1: FF 66 B6 7E SBC $7EB666,X EE/0AE5: 9F 0E 6B 7E STA $7E6B0E,X EE/0AE9: E2 20 SEP #$20 EE/0AEB: A5 24 LDA $24 EE/0AED: F0 FC BEQ $0AEB EE/0AEF: 64 24 STZ $24 EE/0AF1: A5 23 LDA $23 EE/0AF3: C5 22 CMP $22 EE/0AF5: F0 06 BEQ $0AFD EE/0AF7: B0 03 BCS $0AFC EE/0AF9: 1A INC EE/0AFA: 80 01 BRA $0AFD EE/0AFC: 3A DEC EE/0AFD: 85 23 STA $23 EE/0AFF: C9 00 CMP #$00 EE/0B01: D0 02 BNE $0B05 EE/0B03: A9 80 LDA #$80 EE/0B05: 8D 00 21 STA $2100 EE/0B08: C2 20 REP #$20 EE/0B0A: AF 2E 6B 7E LDA $7E6B2E EE/0B0E: 3A DEC EE/0B0F: 8F 2E 6B 7E STA $7E6B2E EE/0B13: F0 10 BEQ $0B25 EE/0B15: C9 80 00 CMP #$0080 EE/0B18: B0 08 BCS $0B22 EE/0B1A: 4A LSR EE/0B1B: 4A LSR EE/0B1C: 4A LSR EE/0B1D: 4A LSR EE/0B1E: E2 20 SEP #$20 EE/0B20: 85 22 STA $22 EE/0B22: 4C E9 09 JMP $09E9 EE/0B25: E2 20 SEP #$20 EE/0B27: A9 8F LDA #$8F EE/0B29: 8D 00 21 STA $2100 EE/0B2C: 9C 0C 42 STZ $420C EE/0B2F: 60 RTS ; [ Airship Crash ] EE/0B30: E2 20 SEP #$20 EE/0B32: A9 8F LDA #$8F EE/0B34: 8D 00 21 STA $2100 EE/0B37: 9C 00 42 STZ $4200 EE/0B3A: 9C 0C 42 STZ $420C EE/0B3D: 78 SEI EE/0B3E: A9 01 LDA #$01 EE/0B40: 8D 2C 21 STA $212C EE/0B43: 8D 2D 21 STA $212D EE/0B46: C2 20 REP #$20 EE/0B48: A9 00 80 LDA #$8000 EE/0B4B: 8F 60 B6 7E STA $7EB660 EE/0B4F: A9 00 50 LDA #$5000 EE/0B52: 8F 62 B6 7E STA $7EB662 EE/0B56: A9 FF FE LDA #$FEFF EE/0B59: 85 8F STA $8F EE/0B5B: A9 E0 00 LDA #$00E0 EE/0B5E: 85 87 STA $87 EE/0B60: A9 00 00 LDA #$0000 EE/0B63: 8F 64 B6 7E STA $7EB664 EE/0B67: A9 00 00 LDA #$0000 EE/0B6A: 8F 66 B6 7E STA $7EB666 EE/0B6E: A9 02 00 LDA #$0002 EE/0B71: 8F 68 B6 7E STA $7EB668 EE/0B75: A9 00 01 LDA #$0100 EE/0B78: 8F 6A B6 7E STA $7EB66A EE/0B7C: A9 00 0F LDA #$0F00 EE/0B7F: 8F 6C B6 7E STA $7EB66C EE/0B83: A9 00 01 LDA #$0100 EE/0B86: 85 7D STA $7D EE/0B88: E2 20 SEP #$20 EE/0B8A: CD 10 42 CMP $4210 EE/0B8D: AD 12 42 LDA $4212 EE/0B90: 89 80 BIT #$80 EE/0B92: F0 F6 BEQ $0B8A EE/0B94: A9 B1 LDA #$B1 EE/0B96: 8D 00 42 STA $4200 EE/0B99: A9 07 LDA #$07 EE/0B9B: 8D 05 21 STA $2105 EE/0B9E: A5 24 LDA $24 EE/0BA0: F0 FC BEQ $0B9E EE/0BA2: 64 24 STZ $24 EE/0BA4: C2 20 REP #$20 EE/0BA6: A9 80 03 LDA #$0380 EE/0BA9: 85 26 STA $26 EE/0BAB: C2 31 REP #$31 EE/0BAD: AF 60 B6 7E LDA $7EB660 EE/0BB1: E9 41 00 SBC #$0041 EE/0BB4: C9 00 03 CMP #$0300 EE/0BB7: B0 07 BCS $0BC0 EE/0BB9: 7B TDC EE/0BBA: 8F 6C B6 7E STA $7EB66C EE/0BBE: 80 04 BRA $0BC4 EE/0BC0: 8F 60 B6 7E STA $7EB660 EE/0BC4: 8F 8B 00 00 STA $00008B EE/0BC8: AF 62 B6 7E LDA $7EB662 EE/0BCC: 8F 8D 00 00 STA $00008D EE/0BD0: AF 66 B6 7E LDA $7EB666 EE/0BD4: AA TAX EE/0BD5: 29 01 00 AND #$0001 EE/0BD8: F0 08 BEQ $0BE2 EE/0BDA: 85 58 STA $58 EE/0BDC: AF 64 B6 7E LDA $7EB664 EE/0BE0: 80 2F BRA $0C11 EE/0BE2: 64 58 STZ $58 EE/0BE4: BF 00 00 E0 LDA $E00000,X EE/0BE8: 29 03 00 AND #$0003 EE/0BEB: C9 03 00 CMP #$0003 EE/0BEE: D0 03 BNE $0BF3 EE/0BF0: A9 02 00 LDA #$0002 EE/0BF3: 38 SEC EE/0BF4: E9 01 00 SBC #$0001 EE/0BF7: 18 CLC EE/0BF8: 6F 64 B6 7E ADC $7EB664 EE/0BFC: 30 0B BMI $0C09 EE/0BFE: C9 68 01 CMP #$0168 EE/0C01: 90 0A BCC $0C0D EE/0C03: 38 SEC EE/0C04: E9 68 01 SBC #$0168 EE/0C07: 80 04 BRA $0C0D EE/0C09: 18 CLC EE/0C0A: 69 68 01 ADC #$0168 EE/0C0D: 8F 64 B6 7E STA $7EB664 EE/0C11: 18 CLC EE/0C12: 65 58 ADC $58 EE/0C14: C9 68 01 CMP #$0168 EE/0C17: 90 03 BCC $0C1C EE/0C19: E9 68 01 SBC #$0168 EE/0C1C: 85 73 STA $73 EE/0C1E: E8 INX EE/0C1F: 8A TXA EE/0C20: 8F 66 B6 7E STA $7EB666 EE/0C24: 08 PHP EE/0C25: 20 80 3A JSR $3A80 EE/0C28: 20 63 33 JSR $3363 EE/0C2B: 20 4E 17 JSR $174E EE/0C2E: 28 PLP EE/0C2F: 20 AD AA JSR $AAAD EE/0C32: E2 20 SEP #$20 EE/0C34: A5 24 LDA $24 EE/0C36: F0 FC BEQ $0C34 EE/0C38: 64 24 STZ $24 EE/0C3A: C2 20 REP #$20 EE/0C3C: AF 6A B6 7E LDA $7EB66A EE/0C40: CF 6C B6 7E CMP $7EB66C EE/0C44: F0 0A BEQ $0C50 EE/0C46: B0 05 BCS $0C4D EE/0C48: 69 40 00 ADC #$0040 EE/0C4B: 80 03 BRA $0C50 EE/0C4D: E9 40 00 SBC #$0040 EE/0C50: 8F 6A B6 7E STA $7EB66A EE/0C54: E2 20 SEP #$20 EE/0C56: EB XBA EE/0C57: C9 00 CMP #$00 EE/0C59: D0 02 BNE $0C5D EE/0C5B: A9 80 LDA #$80 EE/0C5D: 8D 00 21 STA $2100 EE/0C60: C9 80 CMP #$80 EE/0C62: F0 03 BEQ $0C67 EE/0C64: 4C A4 0B JMP $0BA4 EE/0C67: 9C 0C 42 STZ $420C EE/0C6A: A9 0F LDA #$0F EE/0C6C: 85 22 STA $22 EE/0C6E: 64 23 STZ $23 EE/0C70: 60 RTS ; [ Falcon Rising Out of Water ] falcon: EE/0C71: E2 20 SEP #$20 EE/0C73: A9 8F LDA #$8F EE/0C75: 8D 00 21 STA $2100 EE/0C78: 9C 00 42 STZ $4200 EE/0C7B: 9C 0C 42 STZ $420C EE/0C7E: 78 SEI EE/0C7F: 20 F0 40 JSR $40F0 EE/0C82: C2 20 REP #$20 EE/0C84: A2 00 00 LDX #$0000 EE/0C87: BF C0 E1 7E LDA $7EE1C0,X EE/0C8B: 9F 40 E1 7E STA $7EE140,X EE/0C8F: E8 INX EE/0C90: E8 INX EE/0C91: E0 20 00 CPX #$0020 EE/0C94: D0 F1 BNE $0C87 EE/0C96: A2 00 00 LDX #$0000 EE/0C99: BF 00 E1 7E LDA $7EE100,X EE/0C9D: 9F 20 E1 7E STA $7EE120,X EE/0CA1: BF 02 E1 7E LDA $7EE102,X EE/0CA5: 9F 22 E1 7E STA $7EE122,X EE/0CA9: E8 INX EE/0CAA: E8 INX EE/0CAB: E8 INX EE/0CAC: E8 INX EE/0CAD: E0 20 00 CPX #$0020 EE/0CB0: D0 E7 BNE $0C99 EE/0CB2: A9 E0 00 LDA #$00E0 EE/0CB5: 85 85 STA $85 EE/0CB7: 85 87 STA $87 EE/0CB9: A9 70 53 LDA #$5370 EE/0CBC: 85 8B STA $8B EE/0CBE: A9 CD 22 LDA #$22CD EE/0CC1: 85 8D STA $8D EE/0CC3: A9 FF FE LDA #$FEFF EE/0CC6: 85 8F STA $8F EE/0CC8: 20 80 3A JSR $3A80 EE/0CCB: A9 00 04 LDA #$0400 EE/0CCE: 85 26 STA $26 EE/0CD0: E2 20 SEP #$20 EE/0CD2: C2 10 REP #$10 EE/0CD4: 9C 2D 21 STZ $212D EE/0CD7: 9C 2F 21 STZ $212F EE/0CDA: 9C 30 21 STZ $2130 EE/0CDD: A9 30 LDA #$30 EE/0CDF: 8D 10 21 STA $2110 EE/0CE2: 9C 10 21 STZ $2110 EE/0CE5: A9 0E LDA #$0E EE/0CE7: 85 CA STA $CA EE/0CE9: A9 07 LDA #$07 EE/0CEB: 8D 05 21 STA $2105 EE/0CEE: A5 1E LDA $1E EE/0CF0: 09 20 ORA #$20 EE/0CF2: 85 1E STA $1E EE/0CF4: CD 10 42 CMP $4210 EE/0CF7: AD 12 42 LDA $4212 EE/0CFA: 89 80 BIT #$80 EE/0CFC: F0 F6 BEQ $0CF4 EE/0CFE: A9 81 LDA #$81 EE/0D00: 8D 00 42 STA $4200 EE/0D03: 58 CLI EE/0D04: A5 24 LDA $24 EE/0D06: F0 FC BEQ $0D04 EE/0D08: 64 24 STZ $24 EE/0D0A: E2 20 SEP #$20 EE/0D0C: A2 40 00 LDX #$0040 EE/0D0F: 8E 09 42 STX $4209 EE/0D12: A2 DC 00 LDX #$00DC EE/0D15: 8E 07 42 STX $4207 EE/0D18: 20 BD 43 JSR $43BD EE/0D1B: 20 02 43 JSR $4302 EE/0D1E: 20 AD AA JSR $AAAD EE/0D21: 20 4E 17 JSR $174E EE/0D24: 20 63 33 JSR $3363 EE/0D27: C2 20 REP #$20 EE/0D29: AF 50 B6 7E LDA $7EB650 EE/0D2D: C9 00 60 CMP #$6000 EE/0D30: B0 06 BCS $0D38 EE/0D32: E2 20 SEP #$20 EE/0D34: A9 00 LDA #$00 EE/0D36: 85 22 STA $22 EE/0D38: E2 20 SEP #$20 EE/0D3A: A5 24 LDA $24 EE/0D3C: F0 FC BEQ $0D3A EE/0D3E: 64 24 STZ $24 EE/0D40: A5 23 LDA $23 EE/0D42: C5 22 CMP $22 EE/0D44: F0 06 BEQ $0D4C EE/0D46: B0 03 BCS $0D4B EE/0D48: 1A INC EE/0D49: 80 01 BRA $0D4C EE/0D4B: 3A DEC EE/0D4C: 85 23 STA $23 EE/0D4E: A5 23 LDA $23 EE/0D50: F0 03 BEQ $0D55 EE/0D52: 4C 0A 0D JMP $0D0A EE/0D55: E2 20 SEP #$20 EE/0D57: 9C 0C 42 STZ $420C EE/0D5A: 78 SEI EE/0D5B: 60 RTS EE/0D5C: .DW $9C7A, $9D73, $9B71, $9B71, $996F, $996F, $976D, $976D EE/0D6C: .DW $956B, $956B, $9369, $9369, $9369, $9167, $9167, $9167 EE/0D7C: .DW $8F65, $8F65, $8F65, $8D63, $8D63, $8D63, $8D63, $8B63 EE/0D8C: .DW $8B63, $8B63, $8B63, $8962, $8962, $8962, $8962, $8761 EE/0D9C: .DW $8761, $8761, $8761, $8761, $8561, $8561, $8561, $8561 EE/0DAC: .DW $8561, $8561, $8360, $8360, $8360, $8360, $8360, $8360 ; [ Ending Airship Scene ] falcon_ending: EE/0DBC: E2 20 SEP #$20 EE/0DBE: A9 8F LDA #$8F EE/0DC0: 8D 00 21 STA $2100 EE/0DC3: 9C 00 42 STZ $4200 EE/0DC6: 9C 0C 42 STZ $420C EE/0DC9: 78 SEI EE/0DCA: 20 69 05 JSR $0569 EE/0DCD: 20 C4 3F JSR $3FC4 EE/0DD0: 20 BE 40 JSR $40BE EE/0DD3: 20 11 57 JSR $5711 EE/0DD6: 20 18 41 JSR $4118 EE/0DD9: C2 20 REP #$20 EE/0DDB: A9 00 80 LDA #$8000 EE/0DDE: 85 44 STA $44 EE/0DE0: 85 46 STA $46 EE/0DE2: 64 73 STZ $73 EE/0DE4: A9 E0 00 LDA #$00E0 EE/0DE7: 85 85 STA $85 EE/0DE9: 85 87 STA $87 EE/0DEB: A9 70 53 LDA #$5370 EE/0DEE: 85 8B STA $8B EE/0DF0: A9 CD 22 LDA #$22CD EE/0DF3: 85 8D STA $8D EE/0DF5: A9 FF FE LDA #$FEFF EE/0DF8: 85 8F STA $8F EE/0DFA: 20 80 3A JSR $3A80 EE/0DFD: C2 10 REP #$10 EE/0DFF: A9 64 00 LDA #$0064 EE/0E02: 85 75 STA $75 EE/0E04: A9 00 04 LDA #$0400 EE/0E07: 85 26 STA $26 EE/0E09: 20 30 19 JSR $1930 EE/0E0C: A5 E9 LDA $E9 EE/0E0E: 09 01 00 ORA #$0001 EE/0E11: 85 E9 STA $E9 EE/0E13: E2 20 SEP #$20 EE/0E15: A9 0F LDA #$0F EE/0E17: 85 22 STA $22 EE/0E19: 64 23 STZ $23 EE/0E1B: 9C 23 21 STZ $2123 EE/0E1E: 9C 2D 21 STZ $212D EE/0E21: 9C 2F 21 STZ $212F EE/0E24: 9C 30 21 STZ $2130 EE/0E27: A9 30 LDA #$30 EE/0E29: 8D 10 21 STA $2110 EE/0E2C: 9C 10 21 STZ $2110 EE/0E2F: A9 17 LDA #$17 EE/0E31: 85 CA STA $CA EE/0E33: A9 07 LDA #$07 EE/0E35: 8D 05 21 STA $2105 EE/0E38: A5 1E LDA $1E EE/0E3A: 09 20 ORA #$20 EE/0E3C: 85 1E STA $1E EE/0E3E: CD 10 42 CMP $4210 EE/0E41: AD 12 42 LDA $4212 EE/0E44: 89 80 BIT #$80 EE/0E46: F0 F6 BEQ $0E3E EE/0E48: A9 81 LDA #$81 EE/0E4A: 8D 00 42 STA $4200 EE/0E4D: 78 SEI EE/0E4E: A5 24 LDA $24 EE/0E50: F0 FC BEQ $0E4E EE/0E52: 64 24 STZ $24 EE/0E54: E2 20 SEP #$20 EE/0E56: A2 40 00 LDX #$0040 EE/0E59: 8E 09 42 STX $4209 EE/0E5C: A2 DC 00 LDX #$00DC EE/0E5F: 8E 07 42 STX $4207 EE/0E62: 20 BD 43 JSR $43BD EE/0E65: 20 02 43 JSR $4302 EE/0E68: 20 4E 17 JSR $174E EE/0E6B: C2 20 REP #$20 EE/0E6D: AF 50 B6 7E LDA $7EB650 EE/0E71: C9 00 38 CMP #$3800 EE/0E74: B0 06 BCS $0E7C EE/0E76: E2 20 SEP #$20 EE/0E78: A9 00 LDA #$00 EE/0E7A: 85 22 STA $22 EE/0E7C: E2 20 SEP #$20 EE/0E7E: A5 24 LDA $24 EE/0E80: F0 FC BEQ $0E7E EE/0E82: 64 24 STZ $24 EE/0E84: A5 23 LDA $23 EE/0E86: C5 22 CMP $22 EE/0E88: F0 06 BEQ $0E90 EE/0E8A: B0 03 BCS $0E8F EE/0E8C: 1A INC EE/0E8D: 80 01 BRA $0E90 EE/0E8F: 3A DEC EE/0E90: 85 23 STA $23 EE/0E92: A5 23 LDA $23 EE/0E94: F0 03 BEQ $0E99 EE/0E96: 4C 54 0E JMP $0E54 EE/0E99: E2 20 SEP #$20 EE/0E9B: A9 8F LDA #$8F EE/0E9D: 8D 00 21 STA $2100 EE/0EA0: 9C 00 42 STZ $4200 EE/0EA3: 9C 0C 42 STZ $420C EE/0EA6: 78 SEI EE/0EA7: 20 9F 90 JSR $909F ; restore mode 7 variables EE/0EAA: 6B RTL ; [ ] sabaki1: EE/0EAB: E2 20 SEP #$20 EE/0EAD: A9 8F LDA #$8F EE/0EAF: 8D 00 21 STA $2100 EE/0EB2: 9C 00 42 STZ $4200 EE/0EB5: 9C 0C 42 STZ $420C EE/0EB8: 78 SEI EE/0EB9: 20 F0 40 JSR $40F0 EE/0EBC: C2 30 REP #$30 EE/0EBE: A9 00 00 LDA #$0000 EE/0EC1: A2 00 00 LDX #$0000 EE/0EC4: 9F 0E 62 7E STA $7E620E,X EE/0EC8: E8 INX EE/0EC9: E8 INX EE/0ECA: E0 00 07 CPX #$0700 EE/0ECD: D0 F5 BNE $0EC4 EE/0ECF: A9 E0 00 LDA #$00E0 EE/0ED2: 85 85 STA $85 EE/0ED4: 85 87 STA $87 EE/0ED6: A9 00 70 LDA #$7000 EE/0ED9: 85 8B STA $8B EE/0EDB: A9 00 30 LDA #$3000 EE/0EDE: 85 8D STA $8D EE/0EE0: A9 FF FF LDA #$FFFF EE/0EE3: 85 8F STA $8F EE/0EE5: A9 00 FF LDA #$FF00 EE/0EE8: 8F 60 B6 7E STA $7EB660 EE/0EEC: A9 00 C0 LDA #$C000 EE/0EEF: 8F 62 B6 7E STA $7EB662 EE/0EF3: A9 00 F8 LDA #$F800 EE/0EF6: 8F 64 B6 7E STA $7EB664 EE/0EFA: A9 00 04 LDA #$0400 EE/0EFD: 8F 66 B6 7E STA $7EB666 EE/0F01: A9 00 00 LDA #$0000 EE/0F04: 8F 68 B6 7E STA $7EB668 EE/0F08: E2 20 SEP #$20 EE/0F0A: C2 10 REP #$10 EE/0F0C: A9 07 LDA #$07 EE/0F0E: 8D 05 21 STA $2105 EE/0F11: 9C 23 21 STZ $2123 EE/0F14: 9C 24 21 STZ $2124 EE/0F17: A9 A0 LDA #$A0 EE/0F19: 8D 25 21 STA $2125 EE/0F1C: 9C 2D 21 STZ $212D EE/0F1F: 9C 2F 21 STZ $212F EE/0F22: A9 10 LDA #$10 EE/0F24: 8D 30 21 STA $2130 EE/0F27: A9 F0 LDA #$F0 EE/0F29: 8D 32 21 STA $2132 EE/0F2C: A5 E9 LDA $E9 EE/0F2E: 09 02 ORA #$02 EE/0F30: 85 E9 STA $E9 EE/0F32: CD 10 42 CMP $4210 EE/0F35: AD 12 42 LDA $4212 EE/0F38: 89 80 BIT #$80 EE/0F3A: F0 F6 BEQ $0F32 EE/0F3C: A9 81 LDA #$81 EE/0F3E: 8D 00 42 STA $4200 EE/0F41: 78 SEI EE/0F42: A5 24 LDA $24 EE/0F44: F0 FC BEQ $0F42 EE/0F46: 64 24 STZ $24 EE/0F48: 20 80 3A JSR $3A80 EE/0F4B: C2 30 REP #$30 EE/0F4D: AF 60 B6 7E LDA $7EB660 EE/0F51: 38 SEC EE/0F52: E9 F0 0F SBC #$0FF0 EE/0F55: C9 00 20 CMP #$2000 EE/0F58: 90 1F BCC $0F79 EE/0F5A: 8F 60 B6 7E STA $7EB660 EE/0F5E: AF 62 B6 7E LDA $7EB662 EE/0F62: 38 SEC EE/0F63: E9 00 0A SBC #$0A00 EE/0F66: C9 00 20 CMP #$2000 EE/0F69: 8F 62 B6 7E STA $7EB662 EE/0F6D: AF 64 B6 7E LDA $7EB664 EE/0F71: 38 SEC EE/0F72: E9 80 0C SBC #$0C80 EE/0F75: 8F 64 B6 7E STA $7EB664 EE/0F79: 7B TDC EE/0F7A: 85 60 STA $60 EE/0F7C: E2 20 SEP #$20 EE/0F7E: AF 61 B6 7E LDA $7EB661 EE/0F82: 85 58 STA $58 EE/0F84: AF 63 B6 7E LDA $7EB663 EE/0F88: 85 59 STA $59 EE/0F8A: AF 65 B6 7E LDA $7EB665 EE/0F8E: 85 5A STA $5A EE/0F90: A9 DF LDA #$DF EE/0F92: 85 5B STA $5B EE/0F94: 20 5F 16 JSR $165F EE/0F97: E2 20 SEP #$20 EE/0F99: AF 61 B6 7E LDA $7EB661 EE/0F9D: 85 58 STA $58 EE/0F9F: AF 63 B6 7E LDA $7EB663 EE/0FA3: 18 CLC EE/0FA4: 6F 69 B6 7E ADC $7EB669 EE/0FA8: 85 59 STA $59 EE/0FAA: AF 65 B6 7E LDA $7EB665 EE/0FAE: 18 CLC EE/0FAF: 6F 67 B6 7E ADC $7EB667 EE/0FB3: 85 5A STA $5A EE/0FB5: A9 DF LDA #$DF EE/0FB7: 85 5B STA $5B EE/0FB9: A9 01 LDA #$01 EE/0FBB: 85 60 STA $60 EE/0FBD: 20 5F 16 JSR $165F EE/0FC0: E2 20 SEP #$20 EE/0FC2: A5 24 LDA $24 EE/0FC4: F0 FC BEQ $0FC2 EE/0FC6: 64 24 STZ $24 EE/0FC8: A5 23 LDA $23 EE/0FCA: C5 22 CMP $22 EE/0FCC: F0 06 BEQ $0FD4 EE/0FCE: B0 03 BCS $0FD3 EE/0FD0: 1A INC EE/0FD1: 80 01 BRA $0FD4 EE/0FD3: 3A DEC EE/0FD4: 85 23 STA $23 EE/0FD6: C9 00 CMP #$00 EE/0FD8: D0 02 BNE $0FDC EE/0FDA: A9 80 LDA #$80 EE/0FDC: 8D 00 21 STA $2100 EE/0FDF: C2 20 REP #$20 EE/0FE1: AF 60 B6 7E LDA $7EB660 EE/0FE5: C9 00 88 CMP #$8800 EE/0FE8: B0 21 BCS $100B EE/0FEA: AF 66 B6 7E LDA $7EB666 EE/0FEE: D0 13 BNE $1003 EE/0FF0: AF 68 B6 7E LDA $7EB668 EE/0FF4: 18 CLC EE/0FF5: 69 00 02 ADC #$0200 EE/0FF8: 8F 68 B6 7E STA $7EB668 EE/0FFC: C9 00 40 CMP #$4000 EE/0FFF: F0 79 BEQ $107A EE/1001: 80 08 BRA $100B EE/1003: 38 SEC EE/1004: E9 20 00 SBC #$0020 EE/1007: 8F 66 B6 7E STA $7EB666 EE/100B: 4C 4B 0F JMP $0F4B EE/100E: .DW $00FE, $00C0, $0100, $0200, $2000, $0001, $00D8, $00A0 EE/101E: .DW $0100, $0200, $1D00, $0006, $00B0, $0090, $0100, $0200 EE/102E: .DW $1E00, $000A, $0090, $0078, $0100, $0200, $1800, $000E EE/103E: .DW $0078, $0060, $0100, $0200, $1600, $0012, $0058, $0048 EE/104E: .DW $0100, $0200, $1500, $0016, $0042, $003C, $0100, $0200 EE/105E: .DW $1000, $001A, $002E, $0028, $0100, $0200, $0E00, $001A EE/106E: .DW $0020, $0020, $0100, $0200, $0D00, $001E ; [ ] EE/107A: C2 20 REP #$20 EE/107C: A2 00 00 LDX #$0000 EE/107F: BF 0E 10 EE LDA $EE100E,X EE/1083: 9F 60 B6 7E STA $7EB660,X EE/1087: E8 INX EE/1088: E8 INX EE/1089: E0 6C 00 CPX #$006C EE/108C: D0 F1 BNE $107F EE/108E: 7B TDC EE/108F: 8F 50 B6 7E STA $7EB650 EE/1093: E2 20 SEP #$20 EE/1095: A9 3F LDA #$3F EE/1097: 8D 32 21 STA $2132 EE/109A: A9 50 LDA #$50 EE/109C: 8D 32 21 STA $2132 EE/109F: A9 80 LDA #$80 EE/10A1: 8D 32 21 STA $2132 EE/10A4: 8B PHB EE/10A5: E2 20 SEP #$20 EE/10A7: A9 7E LDA #$7E EE/10A9: 48 PHA EE/10AA: AB PLB EE/10AB: C2 30 REP #$30 EE/10AD: AF 50 B6 7E LDA $7EB650 EE/10B1: 1A INC EE/10B2: 8F 50 B6 7E STA $7EB650 EE/10B6: 89 01 00 BIT #$0001 EE/10B9: D0 10 BNE $10CB EE/10BB: A9 0E 62 LDA #$620E EE/10BE: 8F 08 62 7E STA $7E6208 EE/10C2: A9 FE 63 LDA #$63FE EE/10C5: 8F 0B 62 7E STA $7E620B EE/10C9: 80 0E BRA $10D9 EE/10CB: A9 8E 65 LDA #$658E EE/10CE: 8F 08 62 7E STA $7E6208 EE/10D2: A9 7E 67 LDA #$677E EE/10D5: 8F 0B 62 7E STA $7E620B EE/10D9: AF 50 B6 7E LDA $7EB650 EE/10DD: 89 01 00 BIT #$0001 EE/10E0: F0 05 BEQ $10E7 EE/10E2: A2 00 00 LDX #$0000 EE/10E5: 80 03 BRA $10EA EE/10E7: A2 80 03 LDX #$0380 EE/10EA: 86 64 STX $64 EE/10EC: A0 38 00 LDY #$0038 EE/10EF: A9 00 00 LDA #$0000 EE/10F2: 9D 0E 62 STA $620E,X EE/10F5: 9D 7E 62 STA $627E,X EE/10F8: 9D EE 62 STA $62EE,X EE/10FB: 9D 5E 63 STA $635E,X EE/10FE: 9D CE 63 STA $63CE,X EE/1101: 9D 3E 64 STA $643E,X EE/1104: 9D AE 64 STA $64AE,X EE/1107: 9D 1E 65 STA $651E,X EE/110A: E8 INX EE/110B: E8 INX EE/110C: 88 DEY EE/110D: D0 E3 BNE $10F2 EE/110F: 7B TDC EE/1110: 8D 52 B6 STA $B652 EE/1113: A2 00 00 LDX #$0000 EE/1116: BD 6A B6 LDA $B66A,X EE/1119: F0 06 BEQ $1121 EE/111B: 3A DEC EE/111C: 9D 6A B6 STA $B66A,X EE/111F: 80 45 BRA $1166 EE/1121: BD 64 B6 LDA $B664,X EE/1124: 18 CLC EE/1125: 7D 66 B6 ADC $B666,X EE/1128: DD 68 B6 CMP $B668,X EE/112B: B0 03 BCS $1130 EE/112D: 9D 64 B6 STA $B664,X EE/1130: BD 64 B6 LDA $B664,X EE/1133: 85 58 STA $58 EE/1135: DA PHX EE/1136: 20 18 AC JSR $AC18 EE/1139: FA PLX EE/113A: BD 60 B6 LDA $B660,X EE/113D: 85 58 STA $58 EE/113F: BD 62 B6 LDA $B662,X EE/1142: 85 5A STA $5A EE/1144: AD 52 B6 LDA $B652 EE/1147: 89 01 00 BIT #$0001 EE/114A: D0 05 BNE $1151 EE/114C: A9 00 00 LDA #$0000 EE/114F: 80 03 BRA $1154 EE/1151: A9 02 00 LDA #$0002 EE/1154: 18 CLC EE/1155: 65 64 ADC $64 EE/1157: 85 5C STA $5C EE/1159: BD 65 B6 LDA $B665,X EE/115C: 29 FF 00 AND #$00FF EE/115F: 85 5E STA $5E EE/1161: DA PHX EE/1162: 20 A1 AC JSR $ACA1 EE/1165: FA PLX EE/1166: AD 52 B6 LDA $B652 EE/1169: 1A INC EE/116A: 8D 52 B6 STA $B652 EE/116D: 8A TXA EE/116E: 18 CLC EE/116F: 69 0C 00 ADC #$000C EE/1172: AA TAX EE/1173: E0 6C 00 CPX #$006C EE/1176: D0 9E BNE $1116 EE/1178: AB PLB EE/1179: E2 20 SEP #$20 EE/117B: A5 24 LDA $24 EE/117D: C9 02 CMP #$02 EE/117F: 90 FA BCC $117B EE/1181: 64 24 STZ $24 EE/1183: 4C A4 10 JMP $10A4 ; [ ] houkai0: EE/1186: E2 20 SEP #$20 EE/1188: A9 8F LDA #$8F EE/118A: 8D 00 21 STA $2100 EE/118D: 9C 00 42 STZ $4200 EE/1190: 9C 0C 42 STZ $420C EE/1193: 78 SEI EE/1194: A9 7E LDA #$7E EE/1196: 48 PHA EE/1197: AB PLB EE/1198: 20 F0 40 JSR $40F0 EE/119B: C2 30 REP #$30 EE/119D: A9 FF 00 LDA #$00FF EE/11A0: A2 00 00 LDX #$0000 EE/11A3: 9F 0E 62 7E STA $7E620E,X EE/11A7: E8 INX EE/11A8: E8 INX EE/11A9: E0 00 07 CPX #$0700 EE/11AC: D0 F5 BNE $11A3 EE/11AE: E2 20 SEP #$20 EE/11B0: 7B TDC EE/11B1: 48 PHA EE/11B2: AB PLB EE/11B3: C2 30 REP #$30 EE/11B5: 7B TDC EE/11B6: 8F 50 B6 7E STA $7EB650 EE/11BA: 8F 52 B6 7E STA $7EB652 EE/11BE: 8F 54 B6 7E STA $7EB654 EE/11C2: A9 F0 00 LDA #$00F0 EE/11C5: 8F 58 B6 7E STA $7EB658 EE/11C9: A9 10 00 LDA #$0010 EE/11CC: 8F 5A B6 7E STA $7EB65A EE/11D0: A9 E0 00 LDA #$00E0 EE/11D3: 85 85 STA $85 EE/11D5: 85 87 STA $87 EE/11D7: A9 00 70 LDA #$7000 EE/11DA: 85 8B STA $8B EE/11DC: A9 00 30 LDA #$3000 EE/11DF: 85 8D STA $8D EE/11E1: A9 FF FF LDA #$FFFF EE/11E4: 85 8F STA $8F EE/11E6: 20 80 3A JSR $3A80 EE/11E9: E2 20 SEP #$20 EE/11EB: C2 10 REP #$10 EE/11ED: A9 07 LDA #$07 EE/11EF: 8D 05 21 STA $2105 EE/11F2: 9C 23 21 STZ $2123 EE/11F5: 9C 24 21 STZ $2124 EE/11F8: A9 A0 LDA #$A0 EE/11FA: 8D 25 21 STA $2125 EE/11FD: 9C 2D 21 STZ $212D EE/1200: 9C 2F 21 STZ $212F EE/1203: A9 10 LDA #$10 EE/1205: 8D 30 21 STA $2130 EE/1208: A9 3F LDA #$3F EE/120A: 8D 32 21 STA $2132 EE/120D: A9 D4 LDA #$D4 EE/120F: 8D 32 21 STA $2132 EE/1212: A5 E9 LDA $E9 EE/1214: 09 02 ORA #$02 EE/1216: 85 E9 STA $E9 EE/1218: A9 03 LDA #$03 EE/121A: 85 23 STA $23 EE/121C: 20 C7 15 JSR $15C7 EE/121F: CD 10 42 CMP $4210 EE/1222: AD 12 42 LDA $4212 EE/1225: 89 80 BIT #$80 EE/1227: F0 F6 BEQ $121F EE/1229: A9 81 LDA #$81 EE/122B: 8D 00 42 STA $4200 EE/122E: 78 SEI EE/122F: A5 24 LDA $24 EE/1231: F0 FC BEQ $122F EE/1233: 64 24 STZ $24 EE/1235: E2 20 SEP #$20 EE/1237: AF 5A B6 7E LDA $7EB65A EE/123B: F0 1A BEQ $1257 EE/123D: 3A DEC EE/123E: D0 10 BNE $1250 EE/1240: A9 80 LDA #$80 EE/1242: 8D 42 21 STA $2142 EE/1245: A9 74 LDA #$74 EE/1247: 8D 41 21 STA $2141 EE/124A: A9 18 LDA #$18 EE/124C: 8D 40 21 STA $2140 EE/124F: 7B TDC EE/1250: 8F 5A B6 7E STA $7EB65A EE/1254: 4C 3A 13 JMP $133A EE/1257: 8B PHB EE/1258: A9 7E LDA #$7E EE/125A: 48 PHA EE/125B: AB PLB EE/125C: C2 30 REP #$30 EE/125E: AF 58 B6 7E LDA $7EB658 EE/1262: 38 SEC EE/1263: E9 0C 00 SBC #$000C EE/1266: C9 80 00 CMP #$0080 EE/1269: 90 04 BCC $126F EE/126B: 8F 58 B6 7E STA $7EB658 EE/126F: AF 58 B6 7E LDA $7EB658 EE/1273: C9 90 00 CMP #$0090 EE/1276: 90 05 BCC $127D EE/1278: 85 58 STA $58 EE/127A: 20 08 16 JSR $1608 EE/127D: AF 54 B6 7E LDA $7EB654 EE/1281: 1A INC EE/1282: 8F 54 B6 7E STA $7EB654 EE/1286: 89 01 00 BIT #$0001 EE/1289: D0 10 BNE $129B EE/128B: A9 0E 62 LDA #$620E EE/128E: 8F 08 62 7E STA $7E6208 EE/1292: A9 FE 63 LDA #$63FE EE/1295: 8F 0B 62 7E STA $7E620B EE/1299: 80 0E BRA $12A9 EE/129B: A9 8E 65 LDA #$658E EE/129E: 8F 08 62 7E STA $7E6208 EE/12A2: A9 7E 67 LDA #$677E EE/12A5: 8F 0B 62 7E STA $7E620B EE/12A9: AF 54 B6 7E LDA $7EB654 EE/12AD: 89 01 00 BIT #$0001 EE/12B0: F0 05 BEQ $12B7 EE/12B2: A2 00 00 LDX #$0000 EE/12B5: 80 03 BRA $12BA EE/12B7: A2 80 03 LDX #$0380 EE/12BA: A0 38 00 LDY #$0038 EE/12BD: A9 FF 00 LDA #$00FF EE/12C0: 9D 0E 62 STA $620E,X EE/12C3: 9D 7E 62 STA $627E,X EE/12C6: 9D EE 62 STA $62EE,X EE/12C9: 9D 5E 63 STA $635E,X EE/12CC: 9D CE 63 STA $63CE,X EE/12CF: 9D 3E 64 STA $643E,X EE/12D2: 9D AE 64 STA $64AE,X EE/12D5: 9D 1E 65 STA $651E,X EE/12D8: E8 INX EE/12D9: E8 INX EE/12DA: 88 DEY EE/12DB: D0 E3 BNE $12C0 EE/12DD: AB PLB EE/12DE: AF 54 B6 7E LDA $7EB654 EE/12E2: 89 01 00 BIT #$0001 EE/12E5: D0 05 BNE $12EC EE/12E7: A9 80 03 LDA #$0380 EE/12EA: 80 01 BRA $12ED EE/12EC: 7B TDC EE/12ED: 85 64 STA $64 EE/12EF: A9 30 00 LDA #$0030 EE/12F2: 85 58 STA $58 EE/12F4: A9 90 00 LDA #$0090 EE/12F7: 85 5A STA $5A EE/12F9: A9 00 00 LDA #$0000 EE/12FC: 18 CLC EE/12FD: 65 64 ADC $64 EE/12FF: 85 5C STA $5C EE/1301: AF 51 B6 7E LDA $7EB651 EE/1305: 85 5E STA $5E EE/1307: 20 A1 AC JSR $ACA1 EE/130A: A9 A0 00 LDA #$00A0 EE/130D: 85 58 STA $58 EE/130F: A9 60 00 LDA #$0060 EE/1312: 85 5A STA $5A EE/1314: A9 02 00 LDA #$0002 EE/1317: 18 CLC EE/1318: 65 64 ADC $64 EE/131A: 85 5C STA $5C EE/131C: AF 51 B6 7E LDA $7EB651 EE/1320: 85 5E STA $5E EE/1322: 20 A1 AC JSR $ACA1 EE/1325: C2 20 REP #$20 EE/1327: AF 50 B6 7E LDA $7EB650 EE/132B: 18 CLC EE/132C: 69 00 02 ADC #$0200 EE/132F: 8F 50 B6 7E STA $7EB650 EE/1333: 85 58 STA $58 EE/1335: 20 18 AC JSR $AC18 EE/1338: E2 20 SEP #$20 EE/133A: A5 24 LDA $24 EE/133C: C9 02 CMP #$02 EE/133E: 90 FA BCC $133A EE/1340: 64 24 STZ $24 EE/1342: A5 23 LDA $23 EE/1344: C5 22 CMP $22 EE/1346: F0 06 BEQ $134E EE/1348: B0 03 BCS $134D EE/134A: 1A INC EE/134B: 80 01 BRA $134E EE/134D: 3A DEC EE/134E: 85 23 STA $23 EE/1350: C9 00 CMP #$00 EE/1352: D0 02 BNE $1356 EE/1354: A9 80 LDA #$80 EE/1356: 8D 00 21 STA $2100 EE/1359: AF 51 B6 7E LDA $7EB651 EE/135D: C9 E0 CMP #$E0 EE/135F: 90 09 BCC $136A EE/1361: A9 FF LDA #$FF EE/1363: EF 51 B6 7E SBC $7EB651 EE/1367: 4A LSR EE/1368: 85 22 STA $22 EE/136A: A5 23 LDA $23 EE/136C: F0 03 BEQ $1371 EE/136E: 4C 35 12 JMP $1235 EE/1371: E2 20 SEP #$20 EE/1373: 9C 0C 42 STZ $420C EE/1376: 78 SEI EE/1377: 60 RTS ; [ Light of Judgement ] houkai2: EE/1378: E2 20 SEP #$20 EE/137A: A9 8F LDA #$8F EE/137C: 8D 00 21 STA $2100 EE/137F: 9C 00 42 STZ $4200 EE/1382: 9C 0C 42 STZ $420C EE/1385: 78 SEI EE/1386: A9 40 LDA #$40 EE/1388: 8D 6D 1F STA $1F6D EE/138B: 20 F0 40 JSR $40F0 EE/138E: C2 30 REP #$30 EE/1390: A9 01 00 LDA #$0001 EE/1393: A2 00 00 LDX #$0000 EE/1396: 9F 0E 62 7E STA $7E620E,X EE/139A: E8 INX EE/139B: E8 INX EE/139C: E0 00 07 CPX #$0700 EE/139F: D0 F5 BNE $1396 EE/13A1: A2 00 00 LDX #$0000 EE/13A4: BF D6 E1 7E LDA $7EE1D6,X EE/13A8: 9F 42 E1 7E STA $7EE142,X EE/13AC: E8 INX EE/13AD: E8 INX EE/13AE: E0 0A 00 CPX #$000A EE/13B1: D0 F1 BNE $13A4 EE/13B3: A9 E0 00 LDA #$00E0 EE/13B6: 85 85 STA $85 EE/13B8: 85 87 STA $87 EE/13BA: A9 70 73 LDA #$7370 EE/13BD: 85 8B STA $8B EE/13BF: A9 00 30 LDA #$3000 EE/13C2: 85 8D STA $8D EE/13C4: A9 FF FF LDA #$FFFF EE/13C7: 85 8F STA $8F EE/13C9: 20 80 3A JSR $3A80 EE/13CC: A9 00 04 LDA #$0400 EE/13CF: 85 26 STA $26 EE/13D1: A5 E9 LDA $E9 EE/13D3: 89 08 00 BIT #$0008 EE/13D6: D0 23 BNE $13FB EE/13D8: A9 36 01 LDA #$0136 EE/13DB: 85 75 STA $75 EE/13DD: A9 00 20 LDA #$2000 EE/13E0: 8F 50 B6 7E STA $7EB650 EE/13E4: A9 00 A0 LDA #$A000 EE/13E7: 8F 52 B6 7E STA $7EB652 EE/13EB: A9 00 20 LDA #$2000 EE/13EE: 8F 54 B6 7E STA $7EB654 EE/13F2: A9 00 E0 LDA #$E000 EE/13F5: 8F 56 B6 7E STA $7EB656 EE/13F9: 80 21 BRA $141C EE/13FB: A9 3C 00 LDA #$003C EE/13FE: 85 75 STA $75 EE/1400: A9 00 D0 LDA #$D000 EE/1403: 8F 50 B6 7E STA $7EB650 EE/1407: A9 00 70 LDA #$7000 EE/140A: 8F 52 B6 7E STA $7EB652 EE/140E: A9 00 F0 LDA #$F000 EE/1411: 8F 54 B6 7E STA $7EB654 EE/1415: A9 00 E0 LDA #$E000 EE/1418: 8F 56 B6 7E STA $7EB656 EE/141C: 7B TDC EE/141D: 8F 58 B6 7E STA $7EB658 EE/1421: A9 80 00 LDA #$0080 EE/1424: 8F 5A B6 7E STA $7EB65A EE/1428: E2 20 SEP #$20 EE/142A: C2 10 REP #$10 EE/142C: 9C 23 21 STZ $2123 EE/142F: 9C 24 21 STZ $2124 EE/1432: A9 30 LDA #$30 EE/1434: 8D 25 21 STA $2125 EE/1437: 9C 2D 21 STZ $212D EE/143A: 9C 2E 21 STZ $212E EE/143D: 9C 2F 21 STZ $212F EE/1440: A9 20 LDA #$20 EE/1442: 8D 30 21 STA $2130 EE/1445: A9 03 LDA #$03 EE/1447: 8D 31 21 STA $2131 EE/144A: A9 68 LDA #$68 EE/144C: 8D 32 21 STA $2132 EE/144F: A9 8F LDA #$8F EE/1451: 8D 32 21 STA $2132 EE/1454: A9 30 LDA #$30 EE/1456: 8D 10 21 STA $2110 EE/1459: 9C 10 21 STZ $2110 EE/145C: A9 15 LDA #$15 EE/145E: 85 CA STA $CA EE/1460: A9 07 LDA #$07 EE/1462: 8D 05 21 STA $2105 EE/1465: A9 80 LDA #$80 EE/1467: 8D 42 21 STA $2142 EE/146A: A9 51 LDA #$51 EE/146C: 8D 41 21 STA $2141 EE/146F: A9 18 LDA #$18 EE/1471: 8D 40 21 STA $2140 EE/1474: A5 1E LDA $1E EE/1476: 09 20 ORA #$20 EE/1478: 85 1E STA $1E EE/147A: A5 E9 LDA $E9 EE/147C: 09 02 ORA #$02 EE/147E: 85 E9 STA $E9 EE/1480: CD 10 42 CMP $4210 EE/1483: AD 12 42 LDA $4212 EE/1486: 89 80 BIT #$80 EE/1488: F0 F6 BEQ $1480 EE/148A: A9 81 LDA #$81 EE/148C: 8D 00 42 STA $4200 EE/148F: 78 SEI EE/1490: A5 24 LDA $24 EE/1492: F0 FC BEQ $1490 EE/1494: 64 24 STZ $24 EE/1496: E2 20 SEP #$20 EE/1498: 7B TDC EE/1499: AD 6D 1F LDA $1F6D EE/149C: AA TAX EE/149D: BF 00 FD C0 LDA $C0FD00,X EE/14A1: 29 0F AND #$0F EE/14A3: 09 60 ORA #$60 EE/14A5: 8D 32 21 STA $2132 EE/14A8: C2 20 REP #$20 EE/14AA: A5 E9 LDA $E9 EE/14AC: 89 08 00 BIT #$0008 EE/14AF: D0 26 BNE $14D7 EE/14B1: AF 50 B6 7E LDA $7EB650 EE/14B5: 18 CLC EE/14B6: 69 80 01 ADC #$0180 EE/14B9: 8F 50 B6 7E STA $7EB650 EE/14BD: AF 52 B6 7E LDA $7EB652 EE/14C1: 38 SEC EE/14C2: E9 00 01 SBC #$0100 EE/14C5: 8F 52 B6 7E STA $7EB652 EE/14C9: AF 54 B6 7E LDA $7EB654 EE/14CD: 18 CLC EE/14CE: 69 E0 00 ADC #$00E0 EE/14D1: 8F 54 B6 7E STA $7EB654 EE/14D5: 80 24 BRA $14FB EE/14D7: AF 50 B6 7E LDA $7EB650 EE/14DB: 38 SEC EE/14DC: E9 80 01 SBC #$0180 EE/14DF: 8F 50 B6 7E STA $7EB650 EE/14E3: AF 52 B6 7E LDA $7EB652 EE/14E7: 38 SEC EE/14E8: E9 60 00 SBC #$0060 EE/14EB: 8F 52 B6 7E STA $7EB652 EE/14EF: AF 54 B6 7E LDA $7EB654 EE/14F3: 38 SEC EE/14F4: E9 20 01 SBC #$0120 EE/14F7: 8F 54 B6 7E STA $7EB654 EE/14FB: 7B TDC EE/14FC: 85 60 STA $60 EE/14FE: AF 58 B6 7E LDA $7EB658 EE/1502: 1A INC EE/1503: 29 FF 00 AND #$00FF EE/1506: 8F 58 B6 7E STA $7EB658 EE/150A: AA TAX EE/150B: E2 20 SEP #$20 EE/150D: BF 00 FD C0 LDA $C0FD00,X EE/1511: 29 03 AND #$03 EE/1513: C9 03 CMP #$03 EE/1515: D0 01 BNE $1518 EE/1517: 7B TDC EE/1518: 8F 59 B6 7E STA $7EB659 EE/151C: AF 51 B6 7E LDA $7EB651 EE/1520: 38 SEC EE/1521: EF 59 B6 7E SBC $7EB659 EE/1525: 85 58 STA $58 EE/1527: AF 53 B6 7E LDA $7EB653 EE/152B: 85 59 STA $59 EE/152D: AF 55 B6 7E LDA $7EB655 EE/1531: 18 CLC EE/1532: EF 59 B6 7E SBC $7EB659 EE/1536: 85 5A STA $5A EE/1538: AF 57 B6 7E LDA $7EB657 EE/153C: 85 5B STA $5B EE/153E: 20 5F 16 JSR $165F EE/1541: E2 20 SEP #$20 EE/1543: AF 51 B6 7E LDA $7EB651 EE/1547: 18 CLC EE/1548: 6F 59 B6 7E ADC $7EB659 EE/154C: 85 58 STA $58 EE/154E: AF 53 B6 7E LDA $7EB653 EE/1552: 85 59 STA $59 EE/1554: AF 55 B6 7E LDA $7EB655 EE/1558: 38 SEC EE/1559: 6F 59 B6 7E ADC $7EB659 EE/155D: 85 5A STA $5A EE/155F: AF 57 B6 7E LDA $7EB657 EE/1563: 85 5B STA $5B EE/1565: A9 01 LDA #$01 EE/1567: 85 60 STA $60 EE/1569: 20 5F 16 JSR $165F EE/156C: E2 20 SEP #$20 EE/156E: 20 BD 43 JSR $43BD EE/1571: 20 02 43 JSR $4302 EE/1574: 20 AD AA JSR $AAAD EE/1577: 20 4E 17 JSR $174E EE/157A: 20 63 33 JSR $3363 EE/157D: C2 20 REP #$20 EE/157F: AF 5A B6 7E LDA $7EB65A EE/1583: 3A DEC EE/1584: 8F 5A B6 7E STA $7EB65A EE/1588: C9 08 00 CMP #$0008 EE/158B: B0 05 BCS $1592 EE/158D: E2 20 SEP #$20 EE/158F: 0A ASL EE/1590: 85 22 STA $22 EE/1592: E2 20 SEP #$20 EE/1594: A5 24 LDA $24 EE/1596: F0 FC BEQ $1594 EE/1598: 64 24 STZ $24 EE/159A: A5 23 LDA $23 EE/159C: C5 22 CMP $22 EE/159E: F0 06 BEQ $15A6 EE/15A0: B0 03 BCS $15A5 EE/15A2: 1A INC EE/15A3: 80 01 BRA $15A6 EE/15A5: 3A DEC EE/15A6: C5 22 CMP $22 EE/15A8: F0 06 BEQ $15B0 EE/15AA: B0 03 BCS $15AF EE/15AC: 1A INC EE/15AD: 80 01 BRA $15B0 EE/15AF: 3A DEC EE/15B0: 85 23 STA $23 EE/15B2: AF 5A B6 7E LDA $7EB65A EE/15B6: F0 03 BEQ $15BB EE/15B8: 4C 96 14 JMP $1496 EE/15BB: E2 20 SEP #$20 EE/15BD: A9 80 LDA #$80 EE/15BF: 8D 00 21 STA $2100 EE/15C2: 9C 0C 42 STZ $420C EE/15C5: 78 SEI EE/15C6: 60 RTS ; [ ] ; vehicle event command $F6 EE/15C7: 08 PHP EE/15C8: 8B PHB EE/15C9: E2 20 SEP #$20 EE/15CB: A9 7E LDA #$7E EE/15CD: 48 PHA EE/15CE: AB PLB EE/15CF: C2 20 REP #$20 EE/15D1: A2 00 00 LDX #$0000 EE/15D4: A0 00 00 LDY #$0000 EE/15D7: E2 20 SEP #$20 EE/15D9: BD 00 E0 LDA $E000,X EE/15DC: 29 1F AND #$1F EE/15DE: 99 62 BE STA $BE62,Y EE/15E1: C2 20 REP #$20 EE/15E3: BD 00 E0 LDA $E000,X EE/15E6: 4A LSR EE/15E7: 4A LSR EE/15E8: 4A LSR EE/15E9: 4A LSR EE/15EA: 4A LSR EE/15EB: 29 1F 00 AND #$001F EE/15EE: E2 20 SEP #$20 EE/15F0: 99 E2 BE STA $BEE2,Y EE/15F3: BD 01 E0 LDA $E001,X EE/15F6: 4A LSR EE/15F7: 4A LSR EE/15F8: 29 1F AND #$1F EE/15FA: 99 62 BF STA $BF62,Y EE/15FD: E8 INX EE/15FE: E8 INX EE/15FF: C8 INY EE/1600: C0 80 00 CPY #$0080 EE/1603: D0 D2 BNE $15D7 EE/1605: AB PLB EE/1606: 28 PLP EE/1607: 60 RTS ; [ ] EE/1608: 08 PHP EE/1609: 8B PHB EE/160A: E2 30 SEP #$30 EE/160C: A9 7E LDA #$7E EE/160E: 48 PHA EE/160F: AB PLB EE/1610: A2 FE LDX #$FE EE/1612: A0 00 LDY #$00 EE/1614: E2 20 SEP #$20 EE/1616: A5 58 LDA $58 EE/1618: 8F 02 42 00 STA $004202 EE/161C: B9 62 BE LDA $BE62,Y EE/161F: 8F 03 42 00 STA $004203 EE/1623: EA NOP EE/1624: EA NOP EE/1625: EA NOP EE/1626: AF 17 42 00 LDA $004217 EE/162A: 85 5A STA $5A EE/162C: B9 62 BF LDA $BF62,Y EE/162F: 8F 03 42 00 STA $004203 EE/1633: E8 INX EE/1634: E8 INX EE/1635: EA NOP EE/1636: AF 17 42 00 LDA $004217 EE/163A: 0A ASL EE/163B: 0A ASL EE/163C: 85 5B STA $5B EE/163E: B9 E2 BE LDA $BEE2,Y EE/1641: 8F 03 42 00 STA $004203 EE/1645: C8 INY EE/1646: EA NOP EE/1647: C2 20 REP #$20 EE/1649: AF 16 42 00 LDA $004216 EE/164D: 29 00 1F AND #$1F00 EE/1650: 4A LSR EE/1651: 4A LSR EE/1652: 4A LSR EE/1653: 05 5A ORA $5A EE/1655: 9D 00 E0 STA $E000,X EE/1658: C0 80 CPY #$80 EE/165A: D0 B8 BNE $1614 EE/165C: AB PLB EE/165D: 28 PLP EE/165E: 60 RTS EE/165F: E2 20 SEP #$20 EE/1661: A9 FF LDA #$FF EE/1663: 85 5C STA $5C EE/1665: A5 58 LDA $58 EE/1667: 38 SEC EE/1668: E5 5A SBC $5A EE/166A: B0 07 BCS $1673 EE/166C: E6 5C INC $5C EE/166E: E6 5C INC $5C EE/1670: 49 FF EOR #$FF EE/1672: 1A INC EE/1673: 85 5E STA $5E EE/1675: A9 FF LDA #$FF EE/1677: 85 5D STA $5D EE/1679: A5 59 LDA $59 EE/167B: 38 SEC EE/167C: E5 5B SBC $5B EE/167E: B0 07 BCS $1687 EE/1680: E6 5D INC $5D EE/1682: E6 5D INC $5D EE/1684: 49 FF EOR #$FF EE/1686: 1A INC EE/1687: 85 5F STA $5F EE/1689: C5 5E CMP $5E EE/168B: B0 36 BCS $16C3 EE/168D: C2 20 REP #$20 EE/168F: A5 5E LDA $5E EE/1691: 29 FF 00 AND #$00FF EE/1694: A8 TAY EE/1695: A5 59 LDA $59 EE/1697: 29 FF 00 AND #$00FF EE/169A: 0A ASL EE/169B: 0A ASL EE/169C: 18 CLC EE/169D: 65 60 ADC $60 EE/169F: AA TAX EE/16A0: E2 20 SEP #$20 EE/16A2: A5 58 LDA $58 EE/16A4: EB XBA EE/16A5: A5 5E LDA $5E EE/16A7: 4A LSR EE/16A8: 38 SEC EE/16A9: E5 5F SBC $5F EE/16AB: B0 0C BCS $16B9 EE/16AD: 65 5E ADC $5E EE/16AF: EB XBA EE/16B0: 9F 0E 62 7E STA $7E620E,X EE/16B4: EB XBA EE/16B5: E8 INX EE/16B6: E8 INX EE/16B7: E8 INX EE/16B8: E8 INX EE/16B9: EB XBA EE/16BA: 18 CLC EE/16BB: 65 5C ADC $5C EE/16BD: EB XBA EE/16BE: 88 DEY EE/16BF: D0 E7 BNE $16A8 EE/16C1: 80 32 BRA $16F5 EE/16C3: C2 20 REP #$20 EE/16C5: 29 FF 00 AND #$00FF EE/16C8: A8 TAY EE/16C9: A5 59 LDA $59 EE/16CB: 29 FF 00 AND #$00FF EE/16CE: 0A ASL EE/16CF: 0A ASL EE/16D0: 18 CLC EE/16D1: 65 60 ADC $60 EE/16D3: AA TAX EE/16D4: E2 20 SEP #$20 EE/16D6: A5 58 LDA $58 EE/16D8: EB XBA EE/16D9: A5 5F LDA $5F EE/16DB: 4A LSR EE/16DC: 38 SEC EE/16DD: E5 5E SBC $5E EE/16DF: B0 07 BCS $16E8 EE/16E1: 65 5F ADC $5F EE/16E3: EB XBA EE/16E4: 18 CLC EE/16E5: 65 5C ADC $5C EE/16E7: EB XBA EE/16E8: EB XBA EE/16E9: 9F 0E 62 7E STA $7E620E,X EE/16ED: EB XBA EE/16EE: E8 INX EE/16EF: E8 INX EE/16F0: E8 INX EE/16F1: E8 INX EE/16F2: 88 DEY EE/16F3: D0 E7 BNE $16DC EE/16F5: C2 20 REP #$20 EE/16F7: A5 59 LDA $59 EE/16F9: 29 FF 00 AND #$00FF EE/16FC: 0A ASL EE/16FD: 0A ASL EE/16FE: 18 CLC EE/16FF: 65 60 ADC $60 EE/1701: 85 62 STA $62 EE/1703: A6 60 LDX $60 EE/1705: E2 20 SEP #$20 EE/1707: A5 60 LDA $60 EE/1709: 89 01 BIT #$01 EE/170B: D0 04 BNE $1711 EE/170D: A9 FF LDA #$FF EE/170F: 80 01 BRA $1712 EE/1711: 7B TDC EE/1712: E4 62 CPX $62 EE/1714: F0 0A BEQ $1720 EE/1716: 9F 0E 62 7E STA $7E620E,X EE/171A: E8 INX EE/171B: E8 INX EE/171C: E8 INX EE/171D: E8 INX EE/171E: 80 F2 BRA $1712 EE/1720: C2 20 REP #$20 EE/1722: A5 5B LDA $5B EE/1724: 1A INC EE/1725: 29 FF 00 AND #$00FF EE/1728: 0A ASL EE/1729: 0A ASL EE/172A: 18 CLC EE/172B: 65 60 ADC $60 EE/172D: AA TAX EE/172E: 18 CLC EE/172F: 69 7F 03 ADC #$037F EE/1732: 85 62 STA $62 EE/1734: E2 20 SEP #$20 EE/1736: A5 60 LDA $60 EE/1738: 89 01 BIT #$01 EE/173A: D0 04 BNE $1740 EE/173C: A9 FF LDA #$FF EE/173E: 80 01 BRA $1741 EE/1740: 7B TDC EE/1741: 9F 0E 62 7E STA $7E620E,X EE/1745: E8 INX EE/1746: E8 INX EE/1747: E8 INX EE/1748: E8 INX EE/1749: E4 62 CPX $62 EE/174B: 90 F4 BCC $1741 EE/174D: 60 RTS movth: EE/174E: 08 PHP EE/174F: 8B PHB EE/1750: E2 20 SEP #$20 EE/1752: 7B TDC EE/1753: 48 PHA EE/1754: AB PLB EE/1755: C2 20 REP #$20 EE/1757: E2 10 SEP #$10 EE/1759: A5 1E LDA $1E EE/175B: 89 20 00 BIT #$0020 EE/175E: F0 04 BEQ $1764 EE/1760: A5 75 LDA $75 EE/1762: 80 02 BRA $1766 EE/1764: A5 73 LDA $73 EE/1766: C9 B4 00 CMP #$00B4 EE/1769: 90 03 BCC $176E EE/176B: E9 B4 00 SBC #$00B4 EE/176E: AA TAX EE/176F: BF F1 FE EF LDA $EFFEF1,X EE/1773: 85 9B STA $9B EE/1775: BF 4B FF EF LDA $EFFF4B,X EE/1779: 85 9D STA $9D EE/177B: A5 1E LDA $1E EE/177D: 89 20 00 BIT #$0020 EE/1780: F0 04 BEQ $1786 EE/1782: A5 75 LDA $75 EE/1784: 80 02 BRA $1788 EE/1786: A5 73 LDA $73 EE/1788: C9 B4 00 CMP #$00B4 EE/178B: 90 15 BCC $17A2 EE/178D: A2 00 LDX #$00 EE/178F: 86 5B STX $5B EE/1791: C9 0E 01 CMP #$010E EE/1794: 90 06 BCC $179C EE/1796: A2 01 LDX #$01 EE/1798: 86 5A STX $5A EE/179A: 80 11 BRA $17AD EE/179C: A2 00 LDX #$00 EE/179E: 86 5A STX $5A EE/17A0: 80 0B BRA $17AD EE/17A2: A2 01 LDX #$01 EE/17A4: 86 5B STX $5B EE/17A6: C9 5A 00 CMP #$005A EE/17A9: 90 EB BCC $1796 EE/17AB: 80 EF BRA $179C EE/17AD: 64 6B STZ $6B EE/17AF: A6 9D LDX $9D EE/17B1: 8E 02 42 STX $4202 EE/17B4: A6 26 LDX $26 EE/17B6: 8E 03 42 STX $4203 EE/17B9: EA NOP EE/17BA: EA NOP EE/17BB: EA NOP EE/17BC: AD 16 42 LDA $4216 EE/17BF: 85 6A STA $6A EE/17C1: A6 27 LDX $27 EE/17C3: 8E 03 42 STX $4203 EE/17C6: EA NOP EE/17C7: EA NOP EE/17C8: EA NOP EE/17C9: AD 16 42 LDA $4216 EE/17CC: 18 CLC EE/17CD: 65 6B ADC $6B EE/17CF: 85 6A STA $6A EE/17D1: A6 5A LDX $5A EE/17D3: D0 15 BNE $17EA EE/17D5: 18 CLC EE/17D6: 65 37 ADC $37 EE/17D8: 85 37 STA $37 EE/17DA: A5 39 LDA $39 EE/17DC: 69 00 00 ADC #$0000 EE/17DF: 85 39 STA $39 EE/17E1: 18 CLC EE/17E2: A5 40 LDA $40 EE/17E4: 65 6A ADC $6A EE/17E6: 85 40 STA $40 EE/17E8: 80 17 BRA $1801 EE/17EA: 85 6A STA $6A EE/17EC: A5 37 LDA $37 EE/17EE: 38 SEC EE/17EF: E5 6A SBC $6A EE/17F1: 85 37 STA $37 EE/17F3: A5 39 LDA $39 EE/17F5: E9 00 00 SBC #$0000 EE/17F8: 85 39 STA $39 EE/17FA: 38 SEC EE/17FB: A5 40 LDA $40 EE/17FD: E5 6A SBC $6A EE/17FF: 85 40 STA $40 EE/1801: A6 9B LDX $9B EE/1803: 8E 02 42 STX $4202 EE/1806: A6 26 LDX $26 EE/1808: 8E 03 42 STX $4203 EE/180B: EA NOP EE/180C: EA NOP EE/180D: EA NOP EE/180E: AD 16 42 LDA $4216 EE/1811: 85 6A STA $6A EE/1813: A6 27 LDX $27 EE/1815: 8E 03 42 STX $4203 EE/1818: EA NOP EE/1819: EA NOP EE/181A: EA NOP EE/181B: AD 16 42 LDA $4216 EE/181E: 18 CLC EE/181F: 65 6B ADC $6B EE/1821: 85 6A STA $6A EE/1823: A6 5B LDX $5B EE/1825: D0 15 BNE $183C EE/1827: 18 CLC EE/1828: 65 33 ADC $33 EE/182A: 85 33 STA $33 EE/182C: A5 35 LDA $35 EE/182E: 69 00 00 ADC #$0000 EE/1831: 85 35 STA $35 EE/1833: 18 CLC EE/1834: A5 3C LDA $3C EE/1836: 65 6A ADC $6A EE/1838: 85 3C STA $3C EE/183A: 80 17 BRA $1853 EE/183C: 85 6A STA $6A EE/183E: A5 33 LDA $33 EE/1840: 38 SEC EE/1841: E5 6A SBC $6A EE/1843: 85 33 STA $33 EE/1845: A5 35 LDA $35 EE/1847: E9 00 00 SBC #$0000 EE/184A: 85 35 STA $35 EE/184C: 38 SEC EE/184D: A5 3C LDA $3C EE/184F: E5 6A SBC $6A EE/1851: 85 3C STA $3C EE/1853: A5 34 LDA $34 EE/1855: 29 FF 0F AND #$0FFF EE/1858: 85 34 STA $34 EE/185A: A5 38 LDA $38 EE/185C: 29 FF 0F AND #$0FFF EE/185F: 85 38 STA $38 EE/1861: AB PLB EE/1862: 28 PLP EE/1863: 60 RTS ; [ ] poison_effect: EE/1864: A5 FF LDA $FF EE/1866: F0 05 BEQ $186D EE/1868: 38 SEC EE/1869: E9 08 SBC #$08 EE/186B: 85 FF STA $FF EE/186D: 29 F0 AND #$F0 EE/186F: 09 01 ORA #$01 EE/1871: 8D 06 21 STA $2106 EE/1874: 60 RTS ; [ ] encount_local: EE/1875: 08 PHP EE/1876: E2 20 SEP #$20 EE/1878: A9 80 LDA #$80 EE/187A: 8D 42 21 STA $2142 EE/187D: A9 C1 LDA #$C1 EE/187F: 8D 41 21 STA $2141 EE/1882: A9 18 LDA #$18 EE/1884: 8D 40 21 STA $2140 EE/1887: A5 24 LDA $24 EE/1889: F0 FC BEQ $1887 EE/188B: 64 24 STZ $24 EE/188D: A9 28 LDA #$28 EE/188F: 85 66 STA $66 EE/1891: E2 20 SEP #$20 EE/1893: A9 02 LDA #$02 EE/1895: 8D 05 21 STA $2105 ; screen mode 2 EE/1898: AD 64 1F LDA $1F64 EE/189B: C9 02 CMP #$02 EE/189D: F0 04 BEQ $18A3 EE/189F: A9 03 LDA #$03 EE/18A1: 80 02 BRA $18A5 EE/18A3: A9 83 LDA #$83 EE/18A5: 8D 31 21 STA $2131 EE/18A8: C2 20 REP #$20 EE/18AA: A9 E0 00 LDA #$00E0 EE/18AD: 38 SEC EE/18AE: E5 87 SBC $87 EE/18B0: 8D 09 42 STA $4209 EE/18B3: E2 20 SEP #$20 EE/18B5: A5 23 LDA $23 EE/18B7: F0 01 BEQ $18BA EE/18B9: 3A DEC EE/18BA: 85 23 STA $23 EE/18BC: A5 24 LDA $24 EE/18BE: F0 FC BEQ $18BC EE/18C0: 64 24 STZ $24 EE/18C2: C6 66 DEC $66 EE/18C4: D0 CB BNE $1891 EE/18C6: A5 E8 LDA $E8 EE/18C8: 29 7F AND #$7F EE/18CA: 85 E8 STA $E8 EE/18CC: 28 PLP EE/18CD: 60 RTS ; [ Battle Blur and Sound Effect ] EE/18CE: 08 PHP EE/18CF: E2 20 SEP #$20 EE/18D1: C2 10 REP #$10 EE/18D3: A9 80 LDA #$80 EE/18D5: 8D 42 21 STA $2142 EE/18D8: A9 C1 LDA #$C1 EE/18DA: 8D 41 21 STA $2141 EE/18DD: A9 18 LDA #$18 EE/18DF: 8D 40 21 STA $2140 EE/18E2: A2 00 00 LDX #$0000 EE/18E5: A9 01 LDA #$01 EE/18E7: 85 66 STA $66 EE/18E9: C6 66 DEC $66 EE/18EB: D0 0C BNE $18F9 EE/18ED: A9 01 LDA #$01 EE/18EF: 85 66 STA $66 EE/18F1: BF 07 19 EE LDA $EE1907,X EE/18F5: E8 INX EE/18F6: 8D 06 21 STA $2106 EE/18F9: C9 FF CMP #$FF EE/18FB: F0 08 BEQ $1905 EE/18FD: A5 FA LDA $FA EE/18FF: F0 FC BEQ $18FD EE/1901: 64 FA STZ $FA EE/1903: 80 E4 BRA $18E9 EE/1905: 28 PLP EE/1906: 60 RTS ; battle blur data EE/1907: .DB $0F, $1F, $2F, $3F, $4F, $5F, $6F, $7F, $8F, $9F, $AF, $BF, $CF, $CF, $BF, $AF EE/1917: .DB $9F, $8F, $7F, $6F, $5F, $4F, $3F, $2F, $1F, $0F, $1F, $2F, $3F, $4F, $5F, $6F EE/1927: .DB $7F, $8F, $9F, $AF, $BF, $CF, $DF, $EF, $FF cc_grad: EE/1930: 08 PHP EE/1931: C2 30 SEP #$30 EE/1933: A9 00 12 LDA #$1200 EE/1936: 85 58 STA $58 EE/1938: A9 00 09 LDA #$0900 EE/193B: 85 5A STA $5A EE/193D: A2 00 00 LDX #$0000 EE/1940: E2 20 SEP #$20 EE/1942: A5 59 LDA $59 EE/1944: 09 80 ORA #$80 EE/1946: 9F 07 60 7E STA $7E6007,X EE/194A: A5 5B LDA $5B EE/194C: 09 60 ORA #$60 EE/194E: 9F 08 60 7E STA $7E6008,X EE/1952: E8 INX EE/1953: E8 INX EE/1954: C2 20 REP #$20 EE/1956: A5 58 LDA $58 EE/1958: 38 SEC EE/1959: E9 20 00 SBC #$0020 EE/195C: 85 58 STA $58 EE/195E: A5 5A LDA $5A EE/1960: 38 SEC EE/1961: E9 10 00 SBC #$0010 EE/1964: 85 5A STA $5A EE/1966: D0 D8 BNE $1940 EE/1968: 7B TDC EE/1969: E0 00 02 CPX #$0200 EE/196C: F0 08 BEQ $1976 EE/196E: 9F 07 60 7E STA $7E6007,X EE/1972: E8 INX EE/1973: E8 INX EE/1974: 80 F3 BRA $1969 EE/1976: 28 PLP EE/1977: 60 RTS ; [ Update Mode 7 Variables (long access) ] jsl_m7effect: EE/1978: 20 51 3E JSR $3E51 EE/197B: E2 20 SEP #$20 EE/197D: C2 10 REP #$10 EE/197F: 6B RTL ; [ Update Mode 7 Rotation (long access) ] EE/1980: 20 80 3A JSR $3A80 ; update mode 7 rotation EE/1983: E2 20 SEP #$20 EE/1985: C2 10 REP #$10 EE/1987: 6B RTL ; [ ] jsl_circle: EE/1988: 20 18 AC JSR $AC18 EE/198B: E2 20 SEP #$20 EE/198D: C2 10 REP #$10 EE/198F: 6B RTL ; [ Save Mode 7 Variables (long access) ] naritawork_taihi: EE/1990: 20 8C 90 JSR $908C ; save mode 7 variables EE/1993: 6B RTL ; [ Restore Mode 7 Variables (long access) ] naritawork_hukki: EE/1994: 20 9F 90 JSR $909F ; restore mode 7 variables EE/1997: 6B RTL ; [ ] control: EE/1998: C2 20 REP #$20 EE/199A: C2 10 REP #$10 EE/199C: AD 64 1F LDA $1F64 EE/199F: 29 FF 01 AND #$01FF EE/19A2: C9 01 00 CMP #$0001 EE/19A5: F0 04 BEQ $19AB EE/19A7: 64 64 STZ $64 EE/19A9: 80 05 BRA $19B0 EE/19AB: A9 00 02 LDA #$0200 EE/19AE: 85 64 STA $64 EE/19B0: A5 38 LDA $38 EE/19B2: 0A ASL EE/19B3: 0A ASL EE/19B4: 0A ASL EE/19B5: 0A ASL EE/19B6: 29 00 FF AND #$FF00 EE/19B9: 85 58 STA $58 EE/19BB: A5 34 LDA $34 EE/19BD: 4A LSR EE/19BE: 4A LSR EE/19BF: 4A LSR EE/19C0: 4A LSR EE/19C1: 18 CLC EE/19C2: 65 58 ADC $58 EE/19C4: AA TAX EE/19C5: BF 00 00 7F LDA $7F0000,X EE/19C9: 29 FF 00 AND #$00FF EE/19CC: 85 C4 STA $C4 EE/19CE: 0A ASL EE/19CF: 18 CLC EE/19D0: 65 64 ADC $64 EE/19D2: AA TAX EE/19D3: BF 14 9B EE LDA $EE9B14,X ; tile properties EE/19D7: 85 C2 STA $C2 EE/19D9: A5 34 LDA $34 EE/19DB: 85 C6 STA $C6 EE/19DD: A5 38 LDA $38 EE/19DF: 85 C8 STA $C8 EE/19E1: A5 E7 LDA $E7 EE/19E3: 89 01 00 BIT #$0001 EE/19E6: F0 0A BEQ $19F2 EE/19E8: 64 60 STZ $60 EE/19EA: 20 84 70 JSR $7084 ; execute vehicle event command EE/19ED: 20 D3 75 JSR $75D3 EE/19F0: 80 11 BRA $1A03 EE/19F2: A5 E7 LDA $E7 EE/19F4: 89 01 00 BIT #$0001 EE/19F7: D0 0A BNE $1A03 EE/19F9: A5 1E LDA $1E EE/19FB: 89 01 00 BIT #$0001 EE/19FE: D0 03 BNE $1A03 EE/1A00: 20 EC 6B JSR $6BEC ; EE/1A03: E2 20 SEP #$20 EE/1A05: A5 E8 LDA $E8 EE/1A07: 89 04 BIT #$04 EE/1A09: F0 1C BEQ $1A27 ; branch if serpent trench arrows are not shown EE/1A0B: A5 05 LDA $05 EE/1A0D: 89 01 BIT #$01 EE/1A0F: F0 0A BEQ $1A1B ; branch if right direction is not pressed EE/1A11: AD B6 1E LDA $1EB6 EE/1A14: 29 7F AND #$7F EE/1A16: 8D B6 1E STA $1EB6 ; set serpent trench arrow direction EE/1A19: 80 0C BRA $1A27 EE/1A1B: 89 02 BIT #$02 EE/1A1D: F0 08 BEQ $1A27 ; branch if left direction is not pressed EE/1A1F: AD B6 1E LDA $1EB6 EE/1A22: 09 80 ORA #$80 EE/1A24: 8D B6 1E STA $1EB6 ; set serpent trench arrow direction EE/1A27: C2 20 REP #$20 EE/1A29: A5 1E LDA $1E EE/1A2B: 89 02 00 BIT #$0002 EE/1A2E: D0 22 BNE $1A52 ; EE/1A30: E2 20 SEP #$20 EE/1A32: A5 72 LDA $72 EE/1A34: 18 CLC EE/1A35: 65 29 ADC $29 EE/1A37: 85 72 STA $72 EE/1A39: C2 20 REP #$20 EE/1A3B: A5 73 LDA $73 EE/1A3D: 65 2A ADC $2A EE/1A3F: 10 06 BPL $1A47 EE/1A41: 18 CLC EE/1A42: 69 68 01 ADC #$0168 EE/1A45: 80 09 BRA $1A50 EE/1A47: C9 68 01 CMP #$0168 EE/1A4A: 90 04 BCC $1A50 EE/1A4C: 38 SEC EE/1A4D: E9 68 01 SBC #$0168 EE/1A50: 85 73 STA $73 EE/1A52: C2 20 REP #$20 EE/1A54: A5 1E LDA $1E EE/1A56: 89 04 00 BIT #$0004 EE/1A59: D0 38 BNE $1A93 EE/1A5B: E2 20 SEP #$20 EE/1A5D: A9 6C LDA #$6C EE/1A5F: 8D 02 42 STA $4202 EE/1A62: A5 73 LDA $73 EE/1A64: 8D 03 42 STA $4203 EE/1A67: EA NOP EE/1A68: EA NOP EE/1A69: EA NOP EE/1A6A: EA NOP EE/1A6B: AD 17 42 LDA $4217 EE/1A6E: 85 6A STA $6A EE/1A70: 64 6B STZ $6B EE/1A72: A5 74 LDA $74 EE/1A74: 8D 03 42 STA $4203 EE/1A77: EA NOP EE/1A78: EA NOP EE/1A79: EA NOP EE/1A7A: EA NOP EE/1A7B: C2 20 REP #$20 EE/1A7D: AD 16 42 LDA $4216 EE/1A80: 18 CLC EE/1A81: 65 6A ADC $6A EE/1A83: 65 73 ADC $73 EE/1A85: 0A ASL EE/1A86: 29 FF 01 AND #$01FF EE/1A89: 85 58 STA $58 EE/1A8B: A9 FF 01 LDA #$01FF EE/1A8E: 38 SEC EE/1A8F: E5 58 SBC $58 EE/1A91: 85 70 STA $70 EE/1A93: C2 20 REP #$20 EE/1A95: A5 1E LDA $1E EE/1A97: 89 08 00 BIT #$0008 EE/1A9A: D0 3E BNE $1ADA EE/1A9C: E2 10 SEP #$10 EE/1A9E: A5 29 LDA $29 EE/1AA0: 10 03 BPL $1AA5 EE/1AA2: 49 FF FF EOR #$FFFF EE/1AA5: 4A LSR EE/1AA6: 4A LSR EE/1AA7: 4A LSR EE/1AA8: AA TAX EE/1AA9: 8E 02 42 STX $4202 EE/1AAC: A5 26 LDA $26 EE/1AAE: 4A LSR EE/1AAF: 4A LSR EE/1AB0: 4A LSR EE/1AB1: 4A LSR EE/1AB2: AA TAX EE/1AB3: 8D 03 42 STA $4203 EE/1AB6: EA NOP EE/1AB7: EA NOP EE/1AB8: EA NOP EE/1AB9: AE 17 42 LDX $4217 EE/1ABC: 8E 02 42 STX $4202 EE/1ABF: A2 F0 LDX #$F0 EE/1AC1: 8E 03 42 STX $4203 EE/1AC4: A5 29 LDA $29 EE/1AC6: 10 06 BPL $1ACE EE/1AC8: AE 17 42 LDX $4217 EE/1ACB: 8A TXA EE/1ACC: 80 0A BRA $1AD8 EE/1ACE: AE 17 42 LDX $4217 EE/1AD1: 8A TXA EE/1AD2: 85 58 STA $58 EE/1AD4: 7B TDC EE/1AD5: 38 SEC EE/1AD6: E5 58 SBC $58 EE/1AD8: 85 83 STA $83 EE/1ADA: C2 20 REP #$20 EE/1ADC: E2 10 SEP #$10 EE/1ADE: A5 1E LDA $1E EE/1AE0: 89 10 00 BIT #$0010 EE/1AE3: D0 3E BNE $1B23 EE/1AE5: A5 2D LDA $2D EE/1AE7: 10 03 BPL $1AEC EE/1AE9: 49 FF FF EOR #$FFFF EE/1AEC: 4A LSR EE/1AED: 4A LSR EE/1AEE: 4A LSR EE/1AEF: 85 58 STA $58 EE/1AF1: A5 26 LDA $26 EE/1AF3: 4A LSR EE/1AF4: 4A LSR EE/1AF5: 4A LSR EE/1AF6: 4A LSR EE/1AF7: E2 20 SEP #$20 EE/1AF9: 8D 02 42 STA $4202 EE/1AFC: A5 58 LDA $58 EE/1AFE: 8D 03 42 STA $4203 EE/1B01: EA NOP EE/1B02: EA NOP EE/1B03: EA NOP EE/1B04: AD 17 42 LDA $4217 EE/1B07: 8D 02 42 STA $4202 EE/1B0A: A9 F0 LDA #$F0 EE/1B0C: 8D 03 42 STA $4203 EE/1B0F: A5 2E LDA $2E EE/1B11: 10 08 BPL $1B1B EE/1B13: A9 92 LDA #$92 EE/1B15: 18 CLC EE/1B16: 6D 17 42 ADC $4217 EE/1B19: 80 06 BRA $1B21 EE/1B1B: A9 92 LDA #$92 EE/1B1D: 38 SEC EE/1B1E: ED 17 42 SBC $4217 EE/1B21: 85 85 STA $85 EE/1B23: C2 20 REP #$20 EE/1B25: A5 33 LDA $33 EE/1B27: 85 48 STA $48 EE/1B29: A5 35 LDA $35 EE/1B2B: 85 4A STA $4A EE/1B2D: A5 37 LDA $37 EE/1B2F: 85 4C STA $4C EE/1B31: A5 39 LDA $39 EE/1B33: 85 4E STA $4E EE/1B35: A5 3C LDA $3C EE/1B37: 85 50 STA $50 EE/1B39: A5 3E LDA $3E EE/1B3B: 85 52 STA $52 EE/1B3D: A5 40 LDA $40 EE/1B3F: 85 54 STA $54 EE/1B41: A5 42 LDA $42 EE/1B43: 85 56 STA $56 EE/1B45: 20 4E 17 JSR $174E EE/1B48: C2 20 REP #$20 EE/1B4A: A5 20 LDA $20 EE/1B4C: C9 02 00 CMP #$0002 EE/1B4F: D0 10 BNE $1B61 EE/1B51: C2 10 REP #$10 EE/1B53: 20 B5 1C JSR $1CB5 ; get current tile properties EE/1B56: 89 01 00 BIT #$0001 EE/1B59: F0 06 BEQ $1B61 EE/1B5B: 20 EF 1C JSR $1CEF EE/1B5E: 20 9A 1B JSR $1B9A EE/1B61: E2 10 SEP #$10 EE/1B63: A5 1E LDA $1E EE/1B65: 89 40 00 BIT #$0040 EE/1B68: D0 2F BNE $1B99 EE/1B6A: A5 2D LDA $2D EE/1B6C: 18 CLC EE/1B6D: 65 2F ADC $2F EE/1B6F: C9 00 00 CMP #$0000 EE/1B72: 30 07 BMI $1B7B EE/1B74: C9 01 7E CMP #$7E01 EE/1B77: 10 02 BPL $1B7B EE/1B79: 85 2F STA $2F EE/1B7B: A5 2F LDA $2F EE/1B7D: 18 CLC EE/1B7E: 69 00 30 ADC #$3000 EE/1B81: 85 8B STA $8B EE/1B83: A6 30 LDX $30 EE/1B85: 8E 02 42 STX $4202 EE/1B88: A2 4F LDX #$4F EE/1B8A: 8E 03 42 STX $4203 EE/1B8D: EA NOP EE/1B8E: EA NOP EE/1B8F: EA NOP EE/1B90: AD 16 42 LDA $4216 EE/1B93: 18 CLC EE/1B94: 69 00 18 ADC #$1800 EE/1B97: 85 8D STA $8D EE/1B99: 60 RTS ; [ ] EE/1B9A: 08 PHP EE/1B9B: C2 30 REP #$30 EE/1B9D: A5 73 LDA $73 EE/1B9F: 48 PHA EE/1BA0: F0 0F BEQ $1BB1 EE/1BA2: C9 5A 00 CMP #$005A EE/1BA5: F0 0A BEQ $1BB1 EE/1BA7: C9 B4 00 CMP #$00B4 EE/1BAA: F0 05 BEQ $1BB1 EE/1BAC: C9 0E 01 CMP #$010E EE/1BAF: D0 03 BNE $1BB4 EE/1BB1: 4C 4F 1C JMP $1C4F EE/1BB4: C9 3B 01 CMP #$013B EE/1BB7: B0 5B BCS $1C14 EE/1BB9: C9 0E 01 CMP #$010E EE/1BBC: B0 19 BCS $1BD7 EE/1BBE: C9 E1 00 CMP #$00E1 EE/1BC1: B0 51 BCS $1C14 EE/1BC3: C9 B4 00 CMP #$00B4 EE/1BC6: B0 0F BCS $1BD7 EE/1BC8: C9 87 00 CMP #$0087 EE/1BCB: B0 47 BCS $1C14 EE/1BCD: C9 5A 00 CMP #$005A EE/1BD0: B0 05 BCS $1BD7 EE/1BD2: C9 2D 00 CMP #$002D EE/1BD5: B0 3D BCS $1C14 EE/1BD7: A5 73 LDA $73 EE/1BD9: 18 CLC EE/1BDA: 69 5A 00 ADC #$005A EE/1BDD: C9 68 01 CMP #$0168 EE/1BE0: 90 04 BCC $1BE6 EE/1BE2: 38 SEC EE/1BE3: E9 68 01 SBC #$0168 EE/1BE6: 85 73 STA $73 EE/1BE8: 20 4E 17 JSR $174E EE/1BEB: 20 B5 1C JSR $1CB5 ; get current tile properties EE/1BEE: 89 01 00 BIT #$0001 EE/1BF1: F0 5C BEQ $1C4F EE/1BF3: 20 EF 1C JSR $1CEF EE/1BF6: 68 PLA EE/1BF7: 48 PHA EE/1BF8: 38 SEC EE/1BF9: E9 5A 00 SBC #$005A EE/1BFC: B0 04 BCS $1C02 EE/1BFE: 18 CLC EE/1BFF: 69 68 01 ADC #$0168 EE/1C02: 85 73 STA $73 EE/1C04: 20 4E 17 JSR $174E EE/1C07: 20 B5 1C JSR $1CB5 ; get current tile properties EE/1C0A: 89 01 00 BIT #$0001 EE/1C0D: F0 40 BEQ $1C4F EE/1C0F: 20 EF 1C JSR $1CEF EE/1C12: 80 3B BRA $1C4F EE/1C14: A5 73 LDA $73 EE/1C16: 38 SEC EE/1C17: E9 5A 00 SBC #$005A EE/1C1A: B0 04 BCS $1C20 EE/1C1C: 18 CLC EE/1C1D: 69 68 01 ADC #$0168 EE/1C20: 85 73 STA $73 EE/1C22: 20 4E 17 JSR $174E EE/1C25: 20 B5 1C JSR $1CB5 ; get current tile properties EE/1C28: 89 01 00 BIT #$0001 EE/1C2B: F0 22 BEQ $1C4F EE/1C2D: 20 EF 1C JSR $1CEF EE/1C30: 68 PLA EE/1C31: 48 PHA EE/1C32: 18 CLC EE/1C33: 69 5A 00 ADC #$005A EE/1C36: C9 68 01 CMP #$0168 EE/1C39: 90 04 BCC $1C3F EE/1C3B: 38 SEC EE/1C3C: E9 68 01 SBC #$0168 EE/1C3F: 85 73 STA $73 EE/1C41: 20 4E 17 JSR $174E EE/1C44: 20 B5 1C JSR $1CB5 ; get current tile properties EE/1C47: 89 01 00 BIT #$0001 EE/1C4A: F0 03 BEQ $1C4F EE/1C4C: 20 EF 1C JSR $1CEF EE/1C4F: C2 20 REP #$20 EE/1C51: 68 PLA EE/1C52: 85 73 STA $73 EE/1C54: 28 PLP EE/1C55: 60 RTS down: EE/1C56: 08 PHP EE/1C57: C2 20 REP #$20 EE/1C59: A5 2F LDA $2F EE/1C5B: 18 CLC EE/1C5C: 65 2D ADC $2D EE/1C5E: C9 00 00 CMP #$0000 EE/1C61: 30 0F BMI $1C72 EE/1C63: A5 2D LDA $2D EE/1C65: 38 SEC EE/1C66: E9 20 00 SBC #$0020 EE/1C69: C9 00 FE CMP #$FE00 EE/1C6C: 30 10 BMI $1C7E EE/1C6E: 85 2D STA $2D EE/1C70: 80 0C BRA $1C7E EE/1C72: 64 2D STZ $2D EE/1C74: A5 19 LDA $19 EE/1C76: 29 FE 00 AND #$00FE EE/1C79: 09 04 00 ORA #$0004 EE/1C7C: 85 19 STA $19 EE/1C7E: 28 PLP EE/1C7F: 60 RTS EE/1C80: 08 PHP EE/1C81: C2 20 REP #$20 EE/1C83: A5 73 LDA $73 EE/1C85: C9 00 00 CMP #$0000 EE/1C88: F0 1F BEQ $1CA9 EE/1C8A: C9 B4 00 CMP #$00B4 EE/1C8D: B0 09 BCS $1C98 EE/1C8F: 3A DEC EE/1C90: 3A DEC EE/1C91: 29 FE 0F AND #$0FFE EE/1C94: 85 73 STA $73 EE/1C96: 80 1B BRA $1CB3 EE/1C98: 1A INC EE/1C99: 1A INC EE/1C9A: 29 FE 0F AND #$0FFE EE/1C9D: C9 68 01 CMP #$0168 EE/1CA0: D0 03 BNE $1CA5 EE/1CA2: A9 00 00 LDA #$0000 EE/1CA5: 85 73 STA $73 EE/1CA7: 80 0A BRA $1CB3 EE/1CA9: A5 19 LDA $19 EE/1CAB: 29 FD 00 AND #$00FD EE/1CAE: 09 08 00 ORA #$0008 EE/1CB1: 85 19 STA $19 EE/1CB3: 28 PLP EE/1CB4: 60 RTS ; [ Get Current Tile Properties ] EE/1CB5: AD 64 1F LDA $1F64 EE/1CB8: 29 FF 01 AND #$01FF EE/1CBB: F0 07 BEQ $1CC4 EE/1CBD: A9 00 02 LDA #$0200 EE/1CC0: 85 64 STA $64 EE/1CC2: 80 02 BRA $1CC6 EE/1CC4: 64 64 STZ $64 EE/1CC6: A5 38 LDA $38 EE/1CC8: 0A ASL EE/1CC9: 0A ASL EE/1CCA: 0A ASL EE/1CCB: 0A ASL EE/1CCC: 29 00 FF AND #$FF00 EE/1CCF: 85 58 STA $58 EE/1CD1: A5 34 LDA $34 EE/1CD3: 4A LSR EE/1CD4: 4A LSR EE/1CD5: 4A LSR EE/1CD6: 4A LSR EE/1CD7: 29 FF 00 AND #$00FF EE/1CDA: 18 CLC EE/1CDB: 65 58 ADC $58 EE/1CDD: AA TAX EE/1CDE: BF 00 00 7F LDA $7F0000,X EE/1CE2: 29 FF 00 AND #$00FF EE/1CE5: 0A ASL EE/1CE6: 18 CLC EE/1CE7: 65 64 ADC $64 EE/1CE9: AA TAX EE/1CEA: BF 14 9B EE LDA $EE9B14,X ; tile properties EE/1CEE: 60 RTS EE/1CEF: A5 48 LDA $48 EE/1CF1: 85 33 STA $33 EE/1CF3: A5 4A LDA $4A EE/1CF5: 85 35 STA $35 EE/1CF7: A5 4C LDA $4C EE/1CF9: 85 37 STA $37 EE/1CFB: A5 4E LDA $4E EE/1CFD: 85 39 STA $39 EE/1CFF: A5 50 LDA $50 EE/1D01: 85 3C STA $3C EE/1D03: A5 52 LDA $52 EE/1D05: 85 3E STA $3E EE/1D07: A5 54 LDA $54 EE/1D09: 85 40 STA $40 EE/1D0B: A5 56 LDA $56 EE/1D0D: 60 RTS ; [ ] wmmov: EE/1D0E: 08 PHP EE/1D0F: 8B PHB EE/1D10: C2 20 REP #$20 EE/1D12: C2 10 REP #$10 EE/1D14: A5 38 LDA $38 EE/1D16: 0A ASL EE/1D17: 0A ASL EE/1D18: 0A ASL EE/1D19: 0A ASL EE/1D1A: 29 00 FF AND #$FF00 EE/1D1D: 85 58 STA $58 EE/1D1F: A5 34 LDA $34 EE/1D21: 4A LSR EE/1D22: 4A LSR EE/1D23: 4A LSR EE/1D24: 4A LSR EE/1D25: 18 CLC EE/1D26: 65 58 ADC $58 EE/1D28: AA TAX EE/1D29: BF 00 00 7F LDA $7F0000,X EE/1D2D: 29 FF 00 AND #$00FF EE/1D30: 85 C4 STA $C4 EE/1D32: 0A ASL EE/1D33: AA TAX EE/1D34: BF 14 9B EE LDA $EE9B14,X ; tile properties EE/1D38: 85 C2 STA $C2 EE/1D3A: A5 34 LDA $34 EE/1D3C: 85 C6 STA $C6 EE/1D3E: A5 38 LDA $38 EE/1D40: 85 C8 STA $C8 EE/1D42: E2 20 SEP #$20 EE/1D44: A5 DF LDA $DF EE/1D46: D0 06 BNE $1D4E EE/1D48: A5 E1 LDA $E1 EE/1D4A: D0 02 BNE $1D4E EE/1D4C: 80 06 BRA $1D54 EE/1D4E: 20 64 18 JSR $1864 EE/1D51: 4C 56 1E JMP $1E56 EE/1D54: C2 20 REP #$20 EE/1D56: A2 00 00 LDX #$0000 EE/1D59: A0 00 00 LDY #$0000 EE/1D5C: 20 D7 21 JSR $21D7 ; get tile properties EE/1D5F: 89 20 00 BIT #$0020 EE/1D62: F0 07 BEQ $1D6B ; branch if not a forest EE/1D64: A5 E7 LDA $E7 EE/1D66: 09 10 00 ORA #$0010 EE/1D69: 85 E7 STA $E7 EE/1D6B: E2 20 SEP #$20 EE/1D6D: A5 E7 LDA $E7 EE/1D6F: 89 02 BIT #$02 EE/1D71: D0 03 BNE $1D76 EE/1D73: 4C 1F 1E JMP $1E1F EE/1D76: A5 E7 LDA $E7 EE/1D78: 29 FD AND #$FD EE/1D7A: 85 E7 STA $E7 EE/1D7C: A5 E7 LDA $E7 EE/1D7E: 89 01 BIT #$01 EE/1D80: F0 03 BEQ $1D85 ; branch if no event is running EE/1D82: 4C 1F 1E JMP $1E1F EE/1D85: 20 6C 21 JSR $216C ; check event triggers EE/1D88: 20 DF 20 JSR $20DF ; check entrance triggers EE/1D8B: F0 03 BEQ $1D90 EE/1D8D: 4C 1F 1E JMP $1E1F EE/1D90: E2 20 SEP #$20 EE/1D92: A5 E8 LDA $E8 EE/1D94: 89 08 BIT #$08 EE/1D96: F0 03 BEQ $1D9B EE/1D98: 4C 1F 1E JMP $1E1F EE/1D9B: 09 08 ORA #$08 EE/1D9D: 85 E8 STA $E8 EE/1D9F: AD B9 1E LDA $1EB9 EE/1DA2: 89 20 BIT #$20 EE/1DA4: D0 79 BNE $1E1F EE/1DA6: C2 20 REP #$20 EE/1DA8: 7B TDC EE/1DA9: AA TAX EE/1DAA: 9B TXY EE/1DAB: 20 D7 21 JSR $21D7 ; get tile properties EE/1DAE: E2 20 SEP #$20 EE/1DB0: 89 40 BIT #$40 EE/1DB2: F0 6B BEQ $1E1F ; branch if battles are disabled EE/1DB4: EB XBA EE/1DB5: 8D F9 11 STA $11F9 ; battle bg index EE/1DB8: 20 B2 90 JSR $90B2 ; save direct page EE/1DBB: 22 08 00 C0 JSL $C00008 ; update random battles EE/1DBF: C9 00 CMP #$00 EE/1DC1: F0 59 BEQ $1E1C ; branch if no random battle EE/1DC3: 20 FC 90 JSR $90FC ; restore direct page EE/1DC6: 9C FD 11 STZ $11FD ; clear event pointer EE/1DC9: 9C FE 11 STZ $11FE EE/1DCC: 9C FF 11 STZ $11FF EE/1DCF: AF E0 0A 00 LDA $000AE0 EE/1DD3: 8D 60 1F STA $1F60 EE/1DD6: AF E2 0A 00 LDA $000AE2 EE/1DDA: 8D 61 1F STA $1F61 EE/1DDD: A5 E8 LDA $E8 EE/1DDF: 09 20 ORA #$20 EE/1DE1: 85 E8 STA $E8 EE/1DE3: 20 08 22 JSR $2208 ; battle zoom and sound effect EE/1DE6: 20 9F 90 JSR $909F ; restore mode 7 variables EE/1DE9: A9 80 LDA #$80 EE/1DEB: 8D 00 21 STA $2100 EE/1DEE: 9C 00 42 STZ $4200 EE/1DF1: 9C 0C 42 STZ $420C EE/1DF4: 78 SEI EE/1DF5: A5 F6 LDA $F6 EE/1DF7: 8D 68 1F STA $1F68 ; facing direction EE/1DFA: 08 PHP EE/1DFB: 8B PHB EE/1DFC: 22 00 00 C2 JSL $C20000 ; battle EE/1E00: AB PLB EE/1E01: 28 PLP EE/1E02: A9 80 LDA #$80 EE/1E04: 8D 00 21 STA $2100 EE/1E07: 9C 00 42 STZ $4200 EE/1E0A: 9C 0C 42 STZ $420C EE/1E0D: 78 SEI EE/1E0E: A5 E8 LDA $E8 EE/1E10: 29 BE AND #$BE EE/1E12: 09 10 ORA #$10 EE/1E14: 85 E8 STA $E8 EE/1E16: 9C FA 11 STZ $11FA EE/1E19: 4C AA 1E JMP $1EAA EE/1E1C: 20 FC 90 JSR $90FC ; restore direct page EE/1E1F: A5 E7 LDA $E7 EE/1E21: 89 01 BIT #$01 EE/1E23: F0 03 BEQ $1E28 EE/1E25: 20 FB 78 JSR $78FB EE/1E28: A5 E7 LDA $E7 EE/1E2A: 89 01 BIT #$01 EE/1E2C: D0 28 BNE $1E56 EE/1E2E: 20 AD 1E JSR $1EAD EE/1E31: A5 E7 LDA $E7 EE/1E33: 89 02 BIT #$02 EE/1E35: F0 1F BEQ $1E56 EE/1E37: 9C F0 11 STZ $11F0 EE/1E3A: 22 0B 00 C0 JSL $C0000B ; update hp each step EE/1E3E: AD F0 11 LDA $11F0 EE/1E41: F0 13 BEQ $1E56 EE/1E43: A9 78 LDA #$78 EE/1E45: 85 FF STA $FF EE/1E47: A9 80 LDA #$80 EE/1E49: 8D 42 21 STA $2142 EE/1E4C: A9 EC LDA #$EC EE/1E4E: 8D 41 21 STA $2141 EE/1E51: A9 18 LDA #$18 EE/1E53: 8D 40 21 STA $2140 EE/1E56: C2 20 REP #$20 EE/1E58: A5 DF LDA $DF EE/1E5A: 18 CLC EE/1E5B: 65 E3 ADC $E3 EE/1E5D: 85 DF STA $DF EE/1E5F: A5 E1 LDA $E1 EE/1E61: 18 CLC EE/1E62: 65 E5 ADC $E5 EE/1E64: 85 E1 STA $E1 EE/1E66: A5 E3 LDA $E3 EE/1E68: D0 0D BNE $1E77 EE/1E6A: A5 E5 LDA $E5 EE/1E6C: D0 09 BNE $1E77 EE/1E6E: A5 E7 LDA $E7 EE/1E70: 29 F7 FF AND #$FFF7 EE/1E73: 85 E7 STA $E7 EE/1E75: 80 07 BRA $1E7E EE/1E77: A5 E7 LDA $E7 EE/1E79: 09 08 00 ORA #$0008 EE/1E7C: 85 E7 STA $E7 EE/1E7E: A5 E3 LDA $E3 EE/1E80: 0A ASL EE/1E81: 0A ASL EE/1E82: 0A ASL EE/1E83: 0A ASL EE/1E84: 18 CLC EE/1E85: 65 3C ADC $3C EE/1E87: 85 3C STA $3C EE/1E89: A5 E5 LDA $E5 EE/1E8B: 0A ASL EE/1E8C: 0A ASL EE/1E8D: 0A ASL EE/1E8E: 0A ASL EE/1E8F: 18 CLC EE/1E90: 65 40 ADC $40 EE/1E92: 85 40 STA $40 EE/1E94: A5 DF LDA $DF EE/1E96: 4A LSR EE/1E97: 4A LSR EE/1E98: 4A LSR EE/1E99: 4A LSR EE/1E9A: 29 FF 0F AND #$0FFF EE/1E9D: 85 34 STA $34 EE/1E9F: A5 E1 LDA $E1 EE/1EA1: 4A LSR EE/1EA2: 4A LSR EE/1EA3: 4A LSR EE/1EA4: 4A LSR EE/1EA5: 29 FF 0F AND #$0FFF EE/1EA8: 85 38 STA $38 EE/1EAA: AB PLB EE/1EAB: 28 PLP EE/1EAC: 60 RTS key_mov: EE/1EAD: 08 PHP EE/1EAE: C2 20 REP #$20 EE/1EB0: 64 E3 STZ $E3 EE/1EB2: 64 E5 STZ $E5 EE/1EB4: A5 04 LDA $04 EE/1EB6: A5 E7 LDA $E7 EE/1EB8: 29 7F FF AND #$FF7F EE/1EBB: 85 E7 STA $E7 EE/1EBD: A5 04 LDA $04 EE/1EBF: 89 00 01 BIT #$0100 EE/1EC2: F0 49 BEQ $1F0D EE/1EC4: E2 30 SEP #$30 EE/1EC6: A9 01 LDA #$01 EE/1EC8: 85 F6 STA $F6 EE/1ECA: 20 E3 47 JSR $47E3 EE/1ECD: C2 30 REP #$30 EE/1ECF: A5 E7 LDA $E7 EE/1ED1: 89 80 00 BIT #$0080 EE/1ED4: D0 23 BNE $1EF9 EE/1ED6: A2 01 00 LDX #$0001 EE/1ED9: A0 00 00 LDY #$0000 EE/1EDC: 20 D7 21 JSR $21D7 ; get tile properties EE/1EDF: 89 10 00 BIT #$0010 EE/1EE2: D0 26 BNE $1F0A ; branch if tile is impassable on foot EE/1EE4: 89 20 00 BIT #$0020 EE/1EE7: F0 02 BEQ $1EEB ; branch if not a forest EE/1EE9: 80 07 BRA $1EF2 EE/1EEB: A5 E7 LDA $E7 EE/1EED: 29 EF FF AND #$FFEF EE/1EF0: 85 E7 STA $E7 EE/1EF2: A5 E7 LDA $E7 EE/1EF4: 09 02 00 ORA #$0002 EE/1EF7: 85 E7 STA $E7 EE/1EF9: A2 10 00 LDX #$0010 EE/1EFC: 86 E3 STX $E3 EE/1EFE: A5 E8 LDA $E8 EE/1F00: 29 F7 FF AND #$FFF7 EE/1F03: 85 E8 STA $E8 EE/1F05: 20 B3 20 JSR $20B3 ; increment steps EE/1F08: C2 20 REP #$20 EE/1F0A: 4C F3 1F JMP $1FF3 EE/1F0D: 89 00 02 BIT #$0200 EE/1F10: F0 49 BEQ $1F5B EE/1F12: E2 30 SEP #$30 EE/1F14: A9 03 LDA #$03 EE/1F16: 85 F6 STA $F6 EE/1F18: 20 E3 47 JSR $47E3 EE/1F1B: C2 30 REP #$30 EE/1F1D: A5 E7 LDA $E7 EE/1F1F: 89 80 00 BIT #$0080 EE/1F22: D0 23 BNE $1F47 EE/1F24: A2 FF FF LDX #$FFFF EE/1F27: A0 00 00 LDY #$0000 EE/1F2A: 20 D7 21 JSR $21D7 ; get tile properties EE/1F2D: 89 10 00 BIT #$0010 EE/1F30: D0 26 BNE $1F58 ; branch if tile is impassable on foot EE/1F32: 89 20 00 BIT #$0020 EE/1F35: F0 02 BEQ $1F39 ; branch if not a forest EE/1F37: 80 07 BRA $1F40 EE/1F39: A5 E7 LDA $E7 EE/1F3B: 29 EF FF AND #$FFEF EE/1F3E: 85 E7 STA $E7 EE/1F40: A5 E7 LDA $E7 EE/1F42: 09 02 00 ORA #$0002 EE/1F45: 85 E7 STA $E7 EE/1F47: A2 F0 FF LDX #$FFF0 EE/1F4A: 86 E3 STX $E3 EE/1F4C: A5 E8 LDA $E8 EE/1F4E: 29 F7 FF AND #$FFF7 EE/1F51: 85 E8 STA $E8 EE/1F53: 20 B3 20 JSR $20B3 ; increment steps EE/1F56: C2 20 REP #$20 EE/1F58: 4C F3 1F JMP $1FF3 EE/1F5B: 89 00 04 BIT #$0400 EE/1F5E: F0 48 BEQ $1FA8 EE/1F60: E2 30 SEP #$30 EE/1F62: A9 02 LDA #$02 EE/1F64: 85 F6 STA $F6 EE/1F66: 20 E3 47 JSR $47E3 EE/1F69: C2 30 REP #$30 EE/1F6B: A5 E7 LDA $E7 EE/1F6D: 89 80 00 BIT #$0080 EE/1F70: D0 23 BNE $1F95 EE/1F72: A2 00 00 LDX #$0000 EE/1F75: A0 01 00 LDY #$0001 EE/1F78: 20 D7 21 JSR $21D7 ; get tile properties EE/1F7B: 89 10 00 BIT #$0010 EE/1F7E: D0 26 BNE $1FA6 EE/1F80: 89 20 00 BIT #$0020 EE/1F83: F0 02 BEQ $1F87 EE/1F85: 80 07 BRA $1F8E EE/1F87: A5 E7 LDA $E7 EE/1F89: 29 EF FF AND #$FFEF EE/1F8C: 85 E7 STA $E7 EE/1F8E: A5 E7 LDA $E7 EE/1F90: 09 02 00 ORA #$0002 EE/1F93: 85 E7 STA $E7 EE/1F95: A2 10 00 LDX #$0010 EE/1F98: 86 E5 STX $E5 EE/1F9A: A5 E8 LDA $E8 EE/1F9C: 29 F7 FF AND #$FFF7 EE/1F9F: 85 E8 STA $E8 EE/1FA1: 20 B3 20 JSR $20B3 ; increment steps EE/1FA4: C2 20 REP #$20 EE/1FA6: 80 4B BRA $1FF3 EE/1FA8: 89 00 08 BIT #$0800 EE/1FAB: F0 46 BEQ $1FF3 EE/1FAD: E2 30 SEP #$30 EE/1FAF: A9 00 LDA #$00 EE/1FB1: 85 F6 STA $F6 EE/1FB3: 20 E3 47 JSR $47E3 EE/1FB6: C2 30 REP #$30 EE/1FB8: A5 E7 LDA $E7 EE/1FBA: 89 80 00 BIT #$0080 EE/1FBD: D0 23 BNE $1FE2 EE/1FBF: A2 00 00 LDX #$0000 EE/1FC2: A0 FF FF LDY #$FFFF EE/1FC5: 20 D7 21 JSR $21D7 ; get tile properties EE/1FC8: 89 10 00 BIT #$0010 EE/1FCB: D0 26 BNE $1FF3 EE/1FCD: 89 20 00 BIT #$0020 EE/1FD0: F0 02 BEQ $1FD4 EE/1FD2: 80 07 BRA $1FDB EE/1FD4: A5 E7 LDA $E7 EE/1FD6: 29 EF FF AND #$FFEF EE/1FD9: 85 E7 STA $E7 EE/1FDB: A5 E7 LDA $E7 EE/1FDD: 09 02 00 ORA #$0002 EE/1FE0: 85 E7 STA $E7 EE/1FE2: A2 F0 FF LDX #$FFF0 EE/1FE5: 86 E5 STX $E5 EE/1FE7: A5 E8 LDA $E8 EE/1FE9: 29 F7 FF AND #$FFF7 EE/1FEC: 85 E8 STA $E8 EE/1FEE: 20 B3 20 JSR $20B3 ; increment steps EE/1FF1: C2 20 REP #$20 EE/1FF3: E2 20 SEP #$20 EE/1FF5: A9 10 LDA #$10 EE/1FF7: 85 F3 STA $F3 EE/1FF9: C2 20 REP #$20 EE/1FFB: A5 E5 LDA $E5 EE/1FFD: D0 20 BNE $201F EE/1FFF: A5 E3 LDA $E3 EE/2001: D0 1C BNE $201F EE/2003: E2 20 SEP #$20 EE/2005: A5 E9 LDA $E9 EE/2007: 89 10 BIT #$10 EE/2009: D0 14 BNE $201F EE/200B: A5 08 LDA $08 EE/200D: 89 40 BIT #$40 EE/200F: F0 0E BEQ $201F EE/2011: A5 E8 LDA $E8 EE/2013: 09 01 ORA #$01 EE/2015: 85 E8 STA $E8 EE/2017: AD F6 11 LDA $11F6 EE/201A: 09 04 ORA #$04 EE/201C: 8D F6 11 STA $11F6 EE/201F: C2 20 REP #$20 EE/2021: A5 32 LDA $32 EE/2023: 89 10 00 BIT #$0010 EE/2026: D0 26 BNE $204E EE/2028: A5 05 LDA $05 EE/202A: 89 10 00 BIT #$0010 EE/202D: F0 1F BEQ $204E EE/202F: AD F6 11 LDA $11F6 EE/2032: 89 01 00 BIT #$0001 EE/2035: D0 0E BNE $2045 EE/2037: 09 01 00 ORA #$0001 EE/203A: 8D F6 11 STA $11F6 EE/203D: 20 8F 41 JSR $418F EE/2040: 20 6C 42 JSR $426C EE/2043: 80 09 BRA $204E EE/2045: 29 FE FF AND #$FFFE EE/2048: 8D F6 11 STA $11F6 EE/204B: 20 2D 41 JSR $412D EE/204E: A5 04 LDA $04 EE/2050: 85 31 STA $31 EE/2052: E2 20 SEP #$20 EE/2054: A5 E8 LDA $E8 EE/2056: 89 01 BIT #$01 EE/2058: D0 57 BNE $20B1 EE/205A: A5 E9 LDA $E9 EE/205C: 89 04 BIT #$04 EE/205E: F0 51 BEQ $20B1 EE/2060: AD B7 1E LDA $1EB7 EE/2063: 89 02 BIT #$02 EE/2065: F0 4A BEQ $20B1 EE/2067: A5 08 LDA $08 EE/2069: 89 80 BIT #$80 EE/206B: F0 44 BEQ $20B1 EE/206D: A5 E0 LDA $E0 EE/206F: CD 62 1F CMP $1F62 EE/2072: D0 3D BNE $20B1 EE/2074: A5 E2 LDA $E2 EE/2076: CD 63 1F CMP $1F63 EE/2079: D0 36 BNE $20B1 EE/207B: AD B7 1E LDA $1EB7 EE/207E: 89 04 BIT #$04 EE/2080: D0 10 BNE $2092 EE/2082: A5 E8 LDA $E8 EE/2084: 09 40 ORA #$40 EE/2086: 85 E8 STA $E8 EE/2088: AD F6 11 LDA $11F6 EE/208B: 09 0C ORA #$0C EE/208D: 8D F6 11 STA $11F6 EE/2090: 80 1F BRA $20B1 EE/2092: AF 6F B2 EE LDA $EEB26F ; CA/0059 (enter blackjack, ground entrance) EE/2096: 85 EA STA $EA EE/2098: AF 70 B2 EE LDA $EEB270 EE/209C: 85 EB STA $EB EE/209E: AF 71 B2 EE LDA $EEB271 EE/20A2: 18 CLC EE/20A3: 69 CA ADC #$CA EE/20A5: 85 EC STA $EC EE/20A7: 64 ED STZ $ED EE/20A9: 64 EE STZ $EE EE/20AB: A5 E7 LDA $E7 EE/20AD: 09 41 ORA #$41 EE/20AF: 85 E7 STA $E7 EE/20B1: 28 PLP EE/20B2: 60 RTS ; [ Increment Steps ] EE/20B3: 08 PHP EE/20B4: C2 20 REP #$20 EE/20B6: AD 66 18 LDA $1866 ; increment steps (max 9999999) EE/20B9: C9 7F 96 CMP #$967F EE/20BC: D0 0B BNE $20C9 EE/20BE: AD 68 18 LDA $1868 EE/20C1: 29 FF 00 AND #$00FF EE/20C4: C9 98 00 CMP #$0098 EE/20C7: F0 14 BEQ $20DD EE/20C9: 18 CLC EE/20CA: AD 66 18 LDA $1866 EE/20CD: 69 01 00 ADC #$0001 EE/20D0: 8D 66 18 STA $1866 EE/20D3: E2 20 SEP #$20 EE/20D5: AD 68 18 LDA $1868 EE/20D8: 69 00 ADC #$00 EE/20DA: 8D 68 18 STA $1868 EE/20DD: 28 PLP EE/20DE: 60 RTS ; [ Check Entrance Triggers ] mapjump: EE/20DF: 08 PHP EE/20E0: C2 20 REP #$20 EE/20E2: A5 F4 LDA $F4 EE/20E4: 29 FF 00 AND #$00FF EE/20E7: 0A ASL EE/20E8: AA TAX EE/20E9: BF 00 BB DF LDA $DFBB00,X EE/20ED: 85 58 STA $58 EE/20EF: BF 02 BB DF LDA $DFBB02,X EE/20F3: 85 5A STA $5A EE/20F5: 38 SEC EE/20F6: E5 58 SBC $58 EE/20F8: F0 70 BEQ $216A EE/20FA: A6 58 LDX $58 EE/20FC: E2 20 SEP #$20 EE/20FE: BF 00 BB DF LDA $DFBB00,X EE/2102: C5 E0 CMP $E0 EE/2104: D0 5A BNE $2160 EE/2106: BF 01 BB DF LDA $DFBB01,X EE/210A: C5 E2 CMP $E2 EE/210C: D0 52 BNE $2160 EE/210E: C2 20 REP #$20 EE/2110: BF 02 BB DF LDA $DFBB02,X EE/2114: 85 F4 STA $F4 EE/2116: 89 00 02 BIT #$0200 EE/2119: F0 21 BEQ $213C EE/211B: AF 64 1F 00 LDA $001F64 EE/211F: 29 FF 01 AND #$01FF EE/2122: 8F 69 1F 00 STA $001F69 EE/2126: E2 20 SEP #$20 EE/2128: A5 E0 LDA $E0 EE/212A: 8F 6B 1F 00 STA $001F6B EE/212E: A5 E2 LDA $E2 EE/2130: 8F 6C 1F 00 STA $001F6C EE/2134: A5 F6 LDA $F6 EE/2136: 8F D2 1F 00 STA $001FD2 EE/213A: C2 20 REP #$20 EE/213C: BF 04 BB DF LDA $DFBB04,X EE/2140: 85 1C STA $1C EE/2142: A9 80 00 LDA #$0080 EE/2145: 85 F1 STA $F1 EE/2147: 64 EA STZ $EA EE/2149: A9 00 CA LDA #$CA00 EE/214C: 85 EB STA $EB EE/214E: E6 19 INC $19 EE/2150: A5 E9 LDA $E9 EE/2152: 09 10 00 ORA #$0010 EE/2155: 85 E9 STA $E9 EE/2157: A5 E8 LDA $E8 EE/2159: 09 08 00 ORA #$0008 EE/215C: 85 E8 STA $E8 EE/215E: 80 0A BRA $216A EE/2160: E8 INX EE/2161: E8 INX EE/2162: E8 INX EE/2163: E8 INX EE/2164: E8 INX EE/2165: E8 INX EE/2166: E4 5A CPX $5A EE/2168: D0 94 BNE $20FE EE/216A: 28 PLP EE/216B: 60 RTS ; [ Check Event Triggers ] eventcheck: EE/216C: 08 PHP EE/216D: C2 20 REP #$20 EE/216F: A5 F4 LDA $F4 EE/2171: 29 FF 00 AND #$00FF EE/2174: 0A ASL EE/2175: AA TAX EE/2176: BF 00 00 C4 LDA $C40000,X ; pointer to event triggers EE/217A: 85 58 STA $58 EE/217C: BF 02 00 C4 LDA $C40002,X ; pointer to next map's event triggers EE/2180: 85 5A STA $5A EE/2182: 38 SEC EE/2183: E5 58 SBC $58 EE/2185: F0 4E BEQ $21D5 ; branch if there are no event triggers EE/2187: A6 58 LDX $58 EE/2189: E2 20 SEP #$20 EE/218B: BF 00 00 C4 LDA $C40000,X ; trigger x position EE/218F: C5 E0 CMP $E0 EE/2191: D0 39 BNE $21CC EE/2193: BF 01 00 C4 LDA $C40001,X ; trigger y position EE/2197: C5 E2 CMP $E2 EE/2199: D0 31 BNE $21CC EE/219B: BF 02 00 C4 LDA $C40002,X ; set event pointer EE/219F: 18 CLC EE/21A0: 69 00 ADC #$00 EE/21A2: 85 EA STA $EA EE/21A4: BF 03 00 C4 LDA $C40003,X EE/21A8: 69 00 ADC #$00 EE/21AA: 85 EB STA $EB EE/21AC: BF 04 00 C4 LDA $C40004,X EE/21B0: 69 CA ADC #$CA EE/21B2: 85 EC STA $EC EE/21B4: A5 E7 LDA $E7 ; enable world event script and ??? EE/21B6: 09 41 ORA #$41 EE/21B8: 85 E7 STA $E7 EE/21BA: 64 ED STZ $ED ; clear event script offset EE/21BC: 64 EE STZ $EE EE/21BE: A5 E9 LDA $E9 ; EE/21C0: 09 10 ORA #$10 EE/21C2: 85 E9 STA $E9 EE/21C4: A5 E8 LDA $E8 ; EE/21C6: 09 08 ORA #$08 EE/21C8: 85 E8 STA $E8 EE/21CA: 80 09 BRA $21D5 EE/21CC: E8 INX ; next trigger EE/21CD: E8 INX EE/21CE: E8 INX EE/21CF: E8 INX EE/21D0: E8 INX EE/21D1: E4 5A CPX $5A EE/21D3: D0 B6 BNE $218B EE/21D5: 28 PLP EE/21D6: 60 RTS ; [ Get Tile Properties ] ; +X: horizontal offset (signed) ; +Y: vertical offset (signed) readID: EE/21D7: AF 64 1F 00 LDA $001F64 ; map index EE/21DB: 29 FF 00 AND #$00FF EE/21DE: EB XBA EE/21DF: 0A ASL EE/21E0: 85 64 STA $64 EE/21E2: 8A TXA EE/21E3: 18 CLC EE/21E4: 65 E0 ADC $E0 ; x position EE/21E6: 29 FF 00 AND #$00FF EE/21E9: 85 58 STA $58 EE/21EB: 98 TYA EE/21EC: 18 CLC EE/21ED: 65 E2 ADC $E2 ; y position EE/21EF: 29 FF 00 AND #$00FF EE/21F2: EB XBA EE/21F3: 18 CLC EE/21F4: 65 58 ADC $58 EE/21F6: AA TAX EE/21F7: BF 00 00 7F LDA $7F0000,X ; map formation EE/21FB: 29 FF 00 AND #$00FF EE/21FE: 0A ASL EE/21FF: 18 CLC EE/2200: 65 64 ADC $64 EE/2202: AA TAX EE/2203: BF 14 9B EE LDA $EE9B14,X ; tile properties EE/2207: 60 RTS ; [ Battle Zoom and Sound Effect ] encount: EE/2208: 8B PHB EE/2209: 08 PHP EE/220A: E2 20 SEP #$20 EE/220C: C2 10 REP #$10 EE/220E: A9 80 LDA #$80 EE/2210: 8D 42 21 STA $2142 EE/2213: A9 C1 LDA #$C1 EE/2215: 8D 41 21 STA $2141 EE/2218: A9 18 LDA #$18 EE/221A: 8D 40 21 STA $2140 EE/221D: A9 03 LDA #$03 EE/221F: 8D 2C 21 STA $212C EE/2222: 9C 2D 21 STZ $212D EE/2225: A2 00 00 LDX #$0000 EE/2228: BF 4E 22 EE LDA $EE224E,X ; zoom level EE/222C: 85 8C STA $8C EE/222E: BF 4F 22 EE LDA $EE224F,X ; screen brightness EE/2232: 8D 00 21 STA $2100 EE/2235: DA PHX EE/2236: 20 51 3E JSR $3E51 ; update mode 7 variables EE/2239: C2 10 REP #$10 EE/223B: FA PLX EE/223C: E2 20 SEP #$20 EE/223E: A5 24 LDA $24 EE/2240: F0 FC BEQ $223E ; wait for vblank EE/2242: 64 24 STZ $24 EE/2244: E8 INX EE/2245: E8 INX EE/2246: E0 44 00 CPX #$0044 EE/2249: D0 DD BNE $2228 EE/224B: 28 PLP EE/224C: AB PLB EE/224D: 60 RTS ; battle zoom data (2 bytes each, zoom level then screen brightness) zoomtbl: EE/224E: .DW $0F85, $0F70, $0F5C, $0F3A, $0F2D, $0F23, $0F19, $0F18 EE/225E: .DW $0F1B, $0F29, $0F32, $0F3D, $0F53, $0F5C, $0F64, $0F6D EE/226E: .DW $0F6D, $0F6C, $0F69, $0F68, $0F65, $0F5F, $0F5C, $0F58 EE/227E: .DW $0D4E, $0C49, $0B44, $0938, $0831, $072B, $051D, $0416 EE/228E: .DW $030F, $0100 ; [ ] fadeOutChr: EE/2292: 08 PHP EE/2293: 8B PHB EE/2294: E2 20 SEP #$20 EE/2296: 7B TDC EE/2297: 48 PHA EE/2298: AB PLB EE/2299: A5 23 LDA $23 EE/229B: F0 04 BEQ $22A1 EE/229D: 3A DEC EE/229E: F0 01 BEQ $22A1 EE/22A0: 3A DEC EE/22A1: 85 23 STA $23 EE/22A3: A5 24 LDA $24 EE/22A5: F0 FC BEQ $22A3 EE/22A7: 64 24 STZ $24 EE/22A9: A5 23 LDA $23 EE/22AB: D0 EC BNE $2299 EE/22AD: A5 E8 LDA $E8 EE/22AF: 29 7F AND #$7F EE/22B1: 85 E8 STA $E8 EE/22B3: AB PLB EE/22B4: 28 PLP EE/22B5: 60 RTS ; [ ] EE/22B6: 08 PHP EE/22B7: 8B PHB EE/22B8: E2 20 SEP #$20 EE/22BA: 7B TDC EE/22BB: 48 PHA EE/22BC: AB PLB EE/22BD: A5 23 LDA $23 EE/22BF: F0 01 BEQ $22C2 EE/22C1: 3A DEC EE/22C2: 85 23 STA $23 EE/22C4: A5 24 LDA $24 EE/22C6: F0 FC BEQ $22C4 EE/22C8: 64 24 STZ $24 EE/22CA: A5 23 LDA $23 EE/22CC: D0 EF BNE $22BD EE/22CE: A5 E8 LDA $E8 EE/22D0: 29 7F AND #$7F EE/22D2: 85 E8 STA $E8 EE/22D4: AB PLB EE/22D5: 28 PLP EE/22D6: 60 RTS ; [ ] fade_out: EE/22D7: 08 PHP EE/22D8: 8B PHB EE/22D9: E2 20 SEP #$20 EE/22DB: A9 00 LDA #$00 EE/22DD: 48 PHA EE/22DE: AB PLB EE/22DF: A5 24 LDA $24 EE/22E1: F0 FC BEQ $22DF EE/22E3: 64 24 STZ $24 EE/22E5: E2 20 SEP #$20 EE/22E7: A9 02 LDA #$02 EE/22E9: 8D 05 21 STA $2105 ; screen mode 2 EE/22EC: AD 64 1F LDA $1F64 EE/22EF: C9 02 CMP #$02 EE/22F1: F0 04 BEQ $22F7 EE/22F3: A9 03 LDA #$03 EE/22F5: 80 02 BRA $22F9 EE/22F7: A9 83 LDA #$83 EE/22F9: 8D 31 21 STA $2131 EE/22FC: C2 20 REP #$20 EE/22FE: A9 E0 00 LDA #$00E0 EE/2301: 38 SEC EE/2302: E5 87 SBC $87 EE/2304: 8D 09 42 STA $4209 EE/2307: E2 20 SEP #$20 EE/2309: A5 23 LDA $23 EE/230B: F0 04 BEQ $2311 EE/230D: 3A DEC EE/230E: F0 01 BEQ $2311 EE/2310: 3A DEC EE/2311: 85 23 STA $23 EE/2313: A5 24 LDA $24 EE/2315: F0 FC BEQ $2313 EE/2317: 64 24 STZ $24 EE/2319: A5 23 LDA $23 EE/231B: D0 C8 BNE $22E5 EE/231D: A5 E8 LDA $E8 EE/231F: 29 7F AND #$7F EE/2321: 85 E8 STA $E8 EE/2323: AB PLB EE/2324: 28 PLP EE/2325: 60 RTS ; ------------------------------------[ World: Magitek Train Ride ]------------------------------------- ; [ Execute Magitek Train Ride Command ] truck_control2: EE/2326: 08 PHP EE/2327: E2 20 SEP #$20 EE/2329: C2 10 REP #$10 EE/232B: A5 36 LDA $36 EE/232D: F0 07 BEQ $2336 ; branch at end of script command EE/232F: C9 20 CMP #$20 EE/2331: F0 03 BEQ $2336 EE/2333: 4C 4F 23 JMP $234F ; continue script command EE/2336: C2 21 REP #$21 EE/2338: A9 21 00 LDA #$0021 EE/233B: E5 36 SBC $36 EE/233D: 85 58 STA $58 EE/233F: A5 34 LDA $34 ; script pointer EE/2341: 85 64 STA $64 EE/2343: 20 F5 25 JSR $25F5 ; update magitek train ride script data EE/2346: C2 21 REP #$21 EE/2348: A5 34 LDA $34 ; increment script pointer EE/234A: 69 05 00 ADC #$0005 EE/234D: 85 34 STA $34 EE/234F: C2 20 REP #$20 EE/2351: A5 F0 LDA $F0 ; event command EE/2353: 29 FF 00 AND #$00FF EE/2356: 0A ASL EE/2357: AA TAX EE/2358: 7C F6 2F JMP ($2FF6,X) ; magitek train ride command jump table EE/235B: E2 20 SEP #$20 EE/235D: A9 00 LDA #$00 EE/235F: 48 PHA EE/2360: AB PLB EE/2361: 64 60 STZ $60 EE/2363: A6 36 LDX $36 EE/2365: 86 38 STX $38 EE/2367: BF 78 0B 7F LDA $7F0B78,X ; pitch data 2 EE/236B: 18 CLC EE/236C: 69 28 ADC #$28 EE/236E: 85 58 STA $58 EE/2370: A9 32 LDA #$32 EE/2372: 38 SEC EE/2373: E5 58 SBC $58 EE/2375: 10 05 BPL $237C EE/2377: 49 FF EOR #$FF EE/2379: 1A INC EE/237A: E6 60 INC $60 EE/237C: 8D 02 42 STA $4202 EE/237F: BF 38 0B 7F LDA $7F0B38,X ; pitch data 1 EE/2383: 85 5C STA $5C EE/2385: A0 18 00 LDY #$0018 EE/2388: BB TYX EE/2389: BF F9 29 EE LDA $EE29F9,X EE/238D: 8D 03 42 STA $4203 EE/2390: A6 38 LDX $38 EE/2392: BF 38 0B 7F LDA $7F0B38,X ; pitch data 1 EE/2396: 38 SEC EE/2397: E5 5C SBC $5C EE/2399: 85 5E STA $5E EE/239B: A5 60 LDA $60 EE/239D: F0 08 BEQ $23A7 EE/239F: A9 FF LDA #$FF EE/23A1: 4D 17 42 EOR $4217 EE/23A4: 1A INC EE/23A5: 80 03 BRA $23AA EE/23A7: AD 17 42 LDA $4217 EE/23AA: 38 SEC EE/23AB: E5 5E SBC $5E EE/23AD: 18 CLC EE/23AE: 65 58 ADC $58 EE/23B0: 9F F8 0A 7F STA $7F0AF8,X EE/23B4: 8A TXA EE/23B5: 1A INC EE/23B6: 29 3F AND #$3F EE/23B8: 85 38 STA $38 EE/23BA: AA TAX EE/23BB: F0 04 BEQ $23C1 EE/23BD: C9 20 CMP #$20 EE/23BF: D0 09 BNE $23CA EE/23C1: BF 38 0B 7F LDA $7F0B38,X ; pitch data 1 EE/23C5: 38 SEC EE/23C6: E5 5E SBC $5E EE/23C8: 85 5C STA $5C EE/23CA: 88 DEY EE/23CB: D0 BB BNE $2388 EE/23CD: 64 60 STZ $60 EE/23CF: A6 36 LDX $36 EE/23D1: 86 38 STX $38 EE/23D3: BF B8 0B 7F LDA $7F0BB8,X ; yaw data EE/23D7: 10 05 BPL $23DE EE/23D9: 49 FF EOR #$FF EE/23DB: 1A INC EE/23DC: E6 60 INC $60 EE/23DE: 8D 02 42 STA $4202 EE/23E1: A0 00 00 LDY #$0000 EE/23E4: BB TYX EE/23E5: BF F8 0B 7F LDA $7F0BF8,X ; yaw multiplier data ??? EE/23E9: 10 05 BPL $23F0 EE/23EB: 49 FF EOR #$FF EE/23ED: 1A INC EE/23EE: C6 60 DEC $60 EE/23F0: 8D 03 42 STA $4203 EE/23F3: A5 38 LDA $38 EE/23F5: AA TAX EE/23F6: 1A INC EE/23F7: 29 3F AND #$3F EE/23F9: 85 38 STA $38 EE/23FB: A5 60 LDA $60 EE/23FD: F0 08 BEQ $2407 EE/23FF: A9 FF LDA #$FF EE/2401: 4D 17 42 EOR $4217 EE/2404: 1A INC EE/2405: 80 03 BRA $240A EE/2407: AD 17 42 LDA $4217 EE/240A: 18 CLC EE/240B: 69 40 ADC #$40 EE/240D: 9F B8 0A 7F STA $7F0AB8,X EE/2411: C8 INY EE/2412: C0 18 00 CPY #$0018 EE/2415: D0 CD BNE $23E4 EE/2417: A0 16 00 LDY #$0016 ; 22 layers EE/241A: 84 66 STY $66 ; $66 = layer counter EE/241C: C2 21 REP #$21 EE/241E: A5 36 LDA $36 EE/2420: 69 17 00 ADC #$0017 EE/2423: 29 3F 00 AND #$003F EE/2426: 85 38 STA $38 EE/2428: E2 20 SEP #$20 EE/242A: A2 E0 01 LDX #$01E0 ; $7F01E0 (tile data) EE/242D: 8E 81 21 STX $2181 EE/2430: A9 7F LDA #$7F EE/2432: 8D 83 21 STA $2183 EE/2435: E2 30 SEP #$30 EE/2437: A6 38 LDX $38 EE/2439: BF B8 0A 7F LDA $7F0AB8,X EE/243D: 85 58 STA $58 EE/243F: BF F8 0A 7F LDA $7F0AF8,X EE/2443: 85 5A STA $5A EE/2445: A6 66 LDX $66 EE/2447: BF D1 29 EE LDA $EE29D1,X EE/244B: 8D 02 42 STA $4202 EE/244E: A6 38 LDX $38 EE/2450: C2 30 REP #$30 EE/2452: BF 18 0C 7F LDA $7F0C18,X ; background data EE/2456: 29 FF 00 AND #$00FF EE/2459: EB XBA EE/245A: 4A LSR EE/245B: 4A LSR EE/245C: 4A LSR EE/245D: 85 6A STA $6A EE/245F: 4A LSR EE/2460: 18 CLC EE/2461: 65 6A ADC $6A EE/2463: AA TAX EE/2464: A0 0C 00 LDY #$000C ; 12 tiles EE/2467: C2 20 REP #$20 EE/2469: BF 32 2B EE LDA $EE2B32,X EE/246D: F0 06 BEQ $2475 ; branch if tile is unused EE/246F: BF 34 2B EE LDA $EE2B34,X EE/2473: 80 11 BRA $2486 EE/2475: E2 20 SEP #$20 EE/2477: 9C 80 21 STZ $2180 ; clear tile EE/247A: 9C 80 21 STZ $2180 EE/247D: 9C 80 21 STZ $2180 EE/2480: 9C 80 21 STZ $2180 EE/2483: 4C E5 24 JMP $24E5 EE/2486: E2 21 SEP #$21 EE/2488: 64 5C STZ $5C EE/248A: BF 32 2B EE LDA $EE2B32,X ; x position EE/248E: E5 58 SBC $58 EE/2490: 10 05 BPL $2497 EE/2492: 49 FF EOR #$FF EE/2494: 1A INC EE/2495: E6 5C INC $5C EE/2497: 8D 03 42 STA $4203 EE/249A: A5 5C LDA $5C EE/249C: F0 08 BEQ $24A6 EE/249E: A9 FF LDA #$FF EE/24A0: 4D 17 42 EOR $4217 EE/24A3: 1A INC EE/24A4: 80 03 BRA $24A9 EE/24A6: AD 17 42 LDA $4217 EE/24A9: 18 CLC EE/24AA: 65 58 ADC $58 EE/24AC: 8D 80 21 STA $2180 EE/24AF: 64 5C STZ $5C EE/24B1: BF 33 2B EE LDA $EE2B33,X ; y position EE/24B5: 38 SEC EE/24B6: E5 5A SBC $5A EE/24B8: 10 05 BPL $24BF EE/24BA: 49 FF EOR #$FF EE/24BC: 1A INC EE/24BD: E6 5C INC $5C EE/24BF: 8D 03 42 STA $4203 EE/24C2: A5 5C LDA $5C EE/24C4: F0 08 BEQ $24CE EE/24C6: A9 FF LDA #$FF EE/24C8: 4D 17 42 EOR $4217 EE/24CB: 1A INC EE/24CC: 80 03 BRA $24D1 EE/24CE: AD 17 42 LDA $4217 EE/24D1: 18 CLC EE/24D2: 65 5A ADC $5A EE/24D4: 8D 80 21 STA $2180 EE/24D7: BF 34 2B EE LDA $EE2B34,X ; tile index EE/24DB: 8D 80 21 STA $2180 EE/24DE: BF 35 2B EE LDA $EE2B35,X EE/24E2: 8D 80 21 STA $2180 EE/24E5: E8 INX ; next tile EE/24E6: E8 INX EE/24E7: E8 INX EE/24E8: E8 INX EE/24E9: 88 DEY EE/24EA: F0 03 BEQ $24EF EE/24EC: 4C 67 24 JMP $2467 EE/24EF: A5 38 LDA $38 ; next layer EE/24F1: 3A DEC EE/24F2: 29 3F AND #$3F EE/24F4: 85 38 STA $38 EE/24F6: C6 66 DEC $66 EE/24F8: F0 03 BEQ $24FD EE/24FA: 4C 35 24 JMP $2435 EE/24FD: AD F6 11 LDA $11F6 EE/2500: 89 80 BIT #$80 EE/2502: F0 73 BEQ $2577 ; branch if not rotating EE/2504: A5 36 LDA $36 ; increment frame counter EE/2506: 1A INC EE/2507: 85 36 STA $36 EE/2509: A5 73 LDA $73 ; rotation frame counter EE/250B: D0 1F BNE $252C ; branch if it hasn't reached zero EE/250D: 7B TDC EE/250E: AD 74 00 LDA $0074 ; random number counter for rotation EE/2511: EE 74 00 INC $0074 EE/2514: AA TAX EE/2515: BF 00 FD C0 LDA $C0FD00,X EE/2519: 30 04 BMI $251F ; 50% chance to branch EE/251B: A9 00 LDA #$00 EE/251D: 80 02 BRA $2521 EE/251F: A9 FF LDA #$FF EE/2521: 85 2C STA $2C EE/2523: BF 00 FD C0 LDA $C0FD00,X EE/2527: 29 3F AND #$3F EE/2529: 1A INC EE/252A: 85 73 STA $73 ; rotation frame counter = [1..64] EE/252C: C6 73 DEC $73 ; decrement rotation frame counter EE/252E: A5 2C LDA $2C EE/2530: F0 14 BEQ $2546 ; 50% chance to branch (random) EE/2532: C2 20 REP #$20 EE/2534: 38 SEC EE/2535: A5 29 LDA $29 ; decrease rotation speed EE/2537: E9 02 00 SBC #$0002 EE/253A: 85 29 STA $29 EE/253C: E2 20 SEP #$20 EE/253E: A5 2B LDA $2B EE/2540: E9 00 SBC #$00 EE/2542: 85 2B STA $2B EE/2544: 80 11 BRA $2557 EE/2546: C2 21 REP #$21 EE/2548: A5 29 LDA $29 ; increase rotation speed EE/254A: 69 02 00 ADC #$0002 EE/254D: 85 29 STA $29 EE/254F: E2 20 SEP #$20 EE/2551: A5 2B LDA $2B EE/2553: 69 00 ADC #$00 EE/2555: 85 2B STA $2B EE/2557: A5 3A LDA $3A ; add to rotation angle EE/2559: 18 CLC EE/255A: 65 29 ADC $29 EE/255C: 85 3A STA $3A EE/255E: C2 20 REP #$20 EE/2560: A5 3B LDA $3B EE/2562: 65 2A ADC $2A EE/2564: 30 0B BMI $2571 ; branch if negative EE/2566: C9 68 01 CMP #$0168 EE/2569: 90 0A BCC $2575 ; branch if less than 360 degrees EE/256B: 38 SEC EE/256C: E9 68 01 SBC #$0168 ; subtract 360 degrees EE/256F: 80 04 BRA $2575 EE/2571: 18 CLC EE/2572: 69 68 01 ADC #$0168 ; add 360 degrees EE/2575: 85 3B STA $3B EE/2577: C2 20 REP #$20 EE/2579: A5 3B LDA $3B ; rotation angle EE/257B: C9 B4 00 CMP #$00B4 EE/257E: 90 04 BCC $2584 ; branch if less than 180 degrees EE/2580: 38 SEC EE/2581: E9 B4 00 SBC #$00B4 ; subtract 180 degrees EE/2584: AA TAX EE/2585: BF F1 FE EF LDA $EFFEF1,X ; sine table EE/2589: 29 FF 00 AND #$00FF EE/258C: 85 58 STA $58 EE/258E: BF 4B FF EF LDA $EFFF4B,X ; cosine table EE/2592: 29 FF 00 AND #$00FF EE/2595: 85 5A STA $5A EE/2597: A5 3B LDA $3B EE/2599: C9 B4 00 CMP #$00B4 EE/259C: B0 11 BCS $25AF ; branch if > 180 degrees EE/259E: C9 5A 00 CMP #$005A EE/25A1: B0 02 BCS $25A5 ; branch if > 90 degrees EE/25A3: 80 29 BRA $25CE EE/25A5: A5 5A LDA $5A EE/25A7: 49 FF FF EOR #$FFFF EE/25AA: 1A INC EE/25AB: 85 5A STA $5A EE/25AD: 80 1F BRA $25CE EE/25AF: C9 0E 01 CMP #$010E EE/25B2: B0 12 BCS $25C6 ; branch if > 270 degrees EE/25B4: A5 58 LDA $58 EE/25B6: 49 FF FF EOR #$FFFF EE/25B9: 1A INC EE/25BA: 85 58 STA $58 EE/25BC: A5 5A LDA $5A EE/25BE: 49 FF FF EOR #$FFFF EE/25C1: 1A INC EE/25C2: 85 5A STA $5A EE/25C4: 80 08 BRA $25CE EE/25C6: A5 58 LDA $58 EE/25C8: 49 FF FF EOR #$FFFF EE/25CB: 1A INC EE/25CC: 85 58 STA $58 EE/25CE: A5 5A LDA $5A EE/25D0: 0A ASL EE/25D1: 18 CLC EE/25D2: 65 5A ADC $5A EE/25D4: 8F 3D 00 00 STA $00003D ; m7a EE/25D8: A5 58 LDA $58 EE/25DA: 0A ASL EE/25DB: 18 CLC EE/25DC: 65 58 ADC $58 EE/25DE: 8F 3F 00 00 STA $00003F ; m7b EE/25E2: 49 FF FF EOR #$FFFF ; 2's complement EE/25E5: 1A INC EE/25E6: 8F 41 00 00 STA $000041 ; m7c EE/25EA: E2 20 SEP #$20 EE/25EC: A5 36 LDA $36 EE/25EE: 1A INC EE/25EF: 29 3F AND #$3F EE/25F1: 85 36 STA $36 EE/25F3: 28 PLP EE/25F4: 60 RTS ; [ Update Magitek Train Ride Script Data ] course_set: EE/25F5: 08 PHP EE/25F6: C2 20 REP #$20 EE/25F8: A6 64 LDX $64 EE/25FA: BF F2 2E EE LDA $EE2EF2,X ; pitch type EE/25FE: 29 FF 00 AND #$00FF EE/2601: EB XBA EE/2602: 4A LSR EE/2603: 4A LSR EE/2604: 4A LSR EE/2605: 85 5A STA $5A EE/2607: 18 CLC EE/2608: 69 92 26 ADC #$2692 ; $EE2692 (pitch data 1) EE/260B: AA TAX EE/260C: A5 58 LDA $58 EE/260E: 18 CLC EE/260F: 69 38 0B ADC #$0B38 EE/2612: A8 TAY EE/2613: A9 1F 00 LDA #$001F ; size = $0020 EE/2616: 54 7F EE MVN $7F,$EE EE/2619: A5 5A LDA $5A EE/261B: 18 CLC EE/261C: 69 32 28 ADC #$2832 ; $EE2832 (pitch data 2) EE/261F: AA TAX EE/2620: A5 58 LDA $58 EE/2622: 18 CLC EE/2623: 69 78 0B ADC #$0B78 EE/2626: A8 TAY EE/2627: A9 1F 00 LDA #$001F ; size = $0020 EE/262A: 54 7F EE MVN $7F,$EE EE/262D: A6 64 LDX $64 EE/262F: BF F3 2E EE LDA $EE2EF3,X ; yaw type EE/2633: 29 FF 00 AND #$00FF EE/2636: EB XBA EE/2637: 4A LSR EE/2638: 4A LSR EE/2639: 4A LSR EE/263A: 18 CLC EE/263B: 69 32 2A ADC #$2A32 ; $EE2A32 (yaw data) EE/263E: AA TAX EE/263F: A5 58 LDA $58 EE/2641: 18 CLC EE/2642: 69 B8 0B ADC #$0BB8 EE/2645: A8 TAY EE/2646: A9 1F 00 LDA #$001F ; size = $0020 EE/2649: 54 7F EE MVN $7F,$EE EE/264C: A6 64 LDX $64 EE/264E: BF F4 2E EE LDA $EE2EF4,X ; background type EE/2652: 29 FF 00 AND #$00FF EE/2655: EB XBA EE/2656: 4A LSR EE/2657: 4A LSR EE/2658: 4A LSR EE/2659: 18 CLC EE/265A: 69 92 2A ADC #$2A92 ; $EE2A92 (background data) EE/265D: AA TAX EE/265E: A5 58 LDA $58 EE/2660: 18 CLC EE/2661: 69 18 0C ADC #$0C18 EE/2664: A8 TAY EE/2665: A9 1F 00 LDA #$001F ; size = $0020 EE/2668: 54 7F EE MVN $7F,$EE EE/266B: A6 64 LDX $64 EE/266D: BF F5 2E EE LDA $EE2EF5,X ; ??? type (always zero) EE/2671: 29 FF 00 AND #$00FF EE/2674: EB XBA EE/2675: 4A LSR EE/2676: 4A LSR EE/2677: 4A LSR EE/2678: 18 CLC EE/2679: 69 12 2A ADC #$2A12 ; yaw multiplier data ??? EE/267C: AA TAX EE/267D: A0 F8 0B LDY #$0BF8 EE/2680: A9 1F 00 LDA #$001F ; size = $0020 EE/2683: 54 7F EE MVN $7F,$EE EE/2686: E2 20 SEP #$20 EE/2688: A6 64 LDX $64 EE/268A: BF F6 2E EE LDA $EE2EF6,X ; magitek train ride command EE/268E: 85 F0 STA $F0 EE/2690: 28 PLP EE/2691: 60 RTS ; pitch data 1 (13 items, 32 bytes each) sindat: EE/2692: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/26A2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/26B2: .DB $F4, $F4, $F4, $F4, $F4, $F5, $F6, $F6, $F7, $F8, $F9, $FA, $FB, $FC, $FD, $FE EE/26C2: .DB $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $09, $0A, $0B, $0B, $0B, $0B EE/26D2: .DB $0C, $0B, $0B, $0B, $0B, $0A, $09, $09, $08, $07, $06, $05, $04, $03, $02, $01 EE/26E2: .DB $FF, $FE, $FD, $FC, $FB, $FA, $F9, $F8, $F7, $F6, $F6, $F5, $F4, $F4, $F4, $F4 EE/26F2: .DB $F4, $F4, $F4, $F4, $F4, $F5, $F6, $F6, $F7, $F8, $F9, $FA, $FB, $FC, $FD, $FE EE/2702: .DB $00, $01, $03, $04, $06, $07, $09, $0A, $0C, $0E, $0F, $11, $12, $14, $15, $17 EE/2712: .DB $17, $15, $14, $12, $11, $0F, $0E, $0C, $0A, $09, $07, $06, $04, $03, $01, $00 EE/2722: .DB $FE, $FD, $FC, $FB, $FA, $F9, $F8, $F7, $F6, $F6, $F5, $F4, $F4, $F4, $F4, $F4 EE/2732: .DB $E9, $EB, $EC, $EE, $EF, $F1, $F2, $F4, $F5, $F7, $F8, $FA, $FB, $FD, $FE, $00 EE/2742: .DB $01, $03, $04, $06, $07, $09, $0A, $0C, $0D, $0F, $10, $12, $13, $15, $16, $18 EE/2752: .DB $17, $15, $14, $12, $11, $0F, $0E, $0C, $0B, $09, $08, $06, $05, $03, $02, $00 EE/2762: .DB $FF, $FD, $FC, $FA, $F9, $F8, $F7, $F5, $F4, $F2, $F1, $EF, $EE, $EC, $EB, $E9 EE/2772: .DB $E9, $EB, $EC, $EE, $EF, $F1, $F2, $F4, $F6, $F7, $F9, $FA, $FC, $FD, $FF, $00 EE/2782: .DB $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0A, $0B, $0C, $0C, $0C, $0C, $0C EE/2792: .DB $0C, $0C, $0C, $0C, $0C, $0B, $0A, $0A, $09, $08, $07, $06, $05, $04, $03, $02 EE/27A2: .DB $00, $FF, $FD, $FC, $FA, $F9, $F7, $F6, $F4, $F2, $F1, $EF, $EE, $EC, $EB, $E9 EE/27B2: .DB $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F5, $F5, $F5, $F6, $F6, $F6, $F7 EE/27C2: .DB $F7, $F7, $F8, $F8, $F9, $F9, $FA, $FA, $FB, $FB, $FC, $FD, $FD, $FE, $FE, $FF EE/27D2: .DB $00, $00, $01, $01, $02, $02, $03, $04, $04, $05, $05, $06, $06, $07, $07, $08 EE/27E2: .DB $08, $08, $09, $09, $09, $0A, $0A, $0A, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B EE/27F2: .DB $0C, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0A, $0A, $0A, $09, $09, $09, $08 EE/2802: .DB $08, $08, $07, $07, $06, $06, $05, $05, $04, $04, $03, $02, $02, $01, $01, $00 EE/2812: .DB $FF, $FF, $FE, $FE, $FD, $FD, $FC, $FB, $FB, $FA, $FA, $F9, $F9, $F8, $F8, $F7 EE/2822: .DB $F7, $F7, $F6, $F6, $F6, $F5, $F5, $F5, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4 ; pitch data 2 (13 items, 32 bytes each) cosdat: EE/2832: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2842: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2852: .DB $FF, $01, $03, $04, $06, $07, $08, $0A, $0B, $0C, $0D, $0E, $0E, $0F, $0F, $0F EE/2862: .DB $0F, $0F, $0F, $0F, $0E, $0E, $0D, $0C, $0B, $0A, $08, $07, $06, $04, $03, $01 EE/2872: .DB $FF, $FE, $FC, $FB, $F9, $F8, $F7, $F5, $F4, $F3, $F2, $F1, $F1, $F0, $F0, $F0 EE/2882: .DB $F0, $F0, $F0, $F0, $F1, $F1, $F2, $F3, $F4, $F5, $F7, $F8, $F9, $FB, $FC, $FE EE/2892: .DB $FF, $01, $03, $04, $06, $07, $08, $0A, $0B, $0C, $0D, $0E, $0E, $0F, $0F, $0F EE/28A2: .DB $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F EE/28B2: .DB $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1 EE/28C2: .DB $F1, $F1, $F1, $F2, $F2, $F3, $F4, $F5, $F6, $F8, $F9, $FA, $FC, $FD, $FF, $01 EE/28D2: .DB $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F EE/28E2: .DB $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F EE/28F2: .DB $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1 EE/2902: .DB $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1 EE/2912: .DB $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F EE/2922: .DB $0F, $0F, $0F, $0E, $0E, $0D, $0C, $0B, $0A, $08, $07, $06, $04, $03, $01, $FF EE/2932: .DB $01, $FF, $FD, $FC, $FA, $F9, $F8, $F6, $F5, $F4, $F3, $F2, $F2, $F1, $F1, $F1 EE/2942: .DB $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1, $F1 EE/2952: .DB $FF, $00, $01, $02, $03, $03, $04, $05, $06, $06, $07, $08, $08, $09, $0A, $0A EE/2962: .DB $0B, $0B, $0C, $0C, $0D, $0D, $0E, $0E, $0E, $0F, $0F, $0F, $0F, $0F, $0F, $0F EE/2972: .DB $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0F, $0E, $0E, $0E, $0D, $0D, $0C, $0C, $0B EE/2982: .DB $0B, $0A, $0A, $09, $08, $08, $07, $06, $06, $05, $04, $03, $03, $02, $01, $00 EE/2992: .DB $FF, $FF, $FE, $FD, $FC, $FC, $FB, $FA, $F9, $F9, $F8, $F7, $F7, $F6, $F5, $F5 EE/29A2: .DB $F4, $F4, $F3, $F3, $F2, $F2, $F1, $F1, $F1, $F0, $F0, $F0, $F0, $F0, $F0, $F0 EE/29B2: .DB $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F1, $F1, $F1, $F2, $F2, $F3, $F3, $F4 EE/29C2: .DB $F4, $F5, $F5, $F6, $F7, $F7, $F8, $F9, $F9, $FA, $FB, $FC, $FC, $FD, $FE, $FF ; position multipliers (64 items, 1 bytes each) reduce_rate: EE/29D2: .DB $FF, $E0, $C0, $B0, $A0, $90, $80, $80, $70, $70, $65, $65, $59, $59, $59, $59 EE/29E2: .DB $45, $45, $45, $45, $45, $45, $38, $38, $38, $38, $38, $38, $38, $38, $38, $38 EE/29F2: .DB $38, $38, $38, $38, $38, $38, $38, $38, $38, $38, $45, $45, $45, $45, $45, $45 EE/2A02: .DB $59, $59, $59, $59, $65, $65, $70, $70, $80, $80, $90, $A0, $B0, $C0, $E0, $FF ; yaw multiplier data ??? (1 item, 32 bytes) kyokuritu: EE/2A12: .DB $FC, $00, $03, $07, $0A, $0D, $11, $14, $17, $1A, $1D, $20, $22, $25, $27, $29 EE/2A22: .DB $2A, $2C, $2D, $2E, $2F, $2F, $2F, $2F, $2F, $2F, $2E, $2D, $2B, $2A, $28, $26 ; yaw data (3 items, 32 bytes each) ; 0: straight, 1: left turn, 2: right turn kyokup: EE/2A32: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2A42: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2A52: .DB $00, $0D, $19, $25, $31, $3C, $47, $51, $5B, $63, $6A, $71, $76, $7A, $7E, $7F EE/2A62: .DB $7F, $7F, $7E, $7A, $76, $71, $6A, $63, $5A, $51, $47, $3C, $31, $25, $19, $0D EE/2A72: .DB $00, $F3, $E7, $DB, $CF, $C4, $B9, $AF, $A5, $9D, $96, $8F, $8A, $85, $82, $81 EE/2A82: .DB $80, $81, $82, $86, $8A, $8F, $96, $9D, $A6, $AF, $B9, $C4, $CF, $DB, $E7, $F4 ; background data (5 items, 32 bytes each) ; 0: pipes w/ more beams, 1: pipes w/ fewer beams, 2: no pipes, 3: split track w/ more walls, 4: split track w/ fewer walls chrset EE/2A92: .DB $03, $01, $02, $03, $05, $01, $02, $03, $04, $01, $02, $04, $03, $01, $02, $05 EE/2AA2: .DB $03, $01, $02, $04, $03, $01, $02, $04, $05, $01, $02, $05, $05, $01, $02, $03 EE/2AB2: .DB $05, $03, $04, $01, $02, $03, $00, $03, $00, $03, $04, $01, $02, $00, $03, $05 EE/2AC2: .DB $05, $05, $05, $03, $02, $02, $02, $03, $03, $04, $05, $01, $02, $03, $00, $03 EE/2AD2: .DB $00, $01, $00, $02, $00, $02, $00, $00, $00, $01, $00, $02, $00, $01, $00, $00 EE/2AE2: .DB $02, $01, $00, $02, $00, $00, $00, $00, $00, $01, $00, $02, $00, $00, $02, $00 EE/2AF2: .DB $06, $06, $07, $07, $08, $08, $09, $09, $0A, $0A, $0B, $0B, $0C, $0C, $0D, $0D EE/2B02: .DB $0E, $0E, $0F, $0F, $10, $10, $11, $11, $12, $12, $13, $13, $12, $00, $00, $12 EE/2B12: .DB $00, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F, $10, $11, $00, $00, $00 EE/2B22: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; tile data (20 items, 12x4 bytes each) ; 5 left wall tiles, 5 right wall tiles, 1 ceiling tile, 1 rail tile truck_spset: EE/2B32: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2B42: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2B52: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $68, $50, $01 EE/2B62: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2B72: .DB $1C, $60, $60, $00, $64, $20, $98, $01, $64, $30, $B0, $01, $64, $40, $C8, $01 EE/2B82: .DB $64, $50, $E0, $01, $64, $60, $F8, $01, $00, $00, $00, $00, $40, $68, $68, $01 EE/2B92: .DB $28, $20, $78, $00, $28, $30, $90, $00, $28, $40, $A8, $00, $28, $50, $C0, $00 EE/2BA2: .DB $58, $20, $10, $02, $58, $30, $28, $02, $58, $40, $40, $02, $58, $50, $58, $02 EE/2BB2: .DB $38, $30, $38, $01, $48, $30, $38, $01, $00, $00, $00, $00, $40, $68, $50, $01 EE/2BC2: .DB $2C, $50, $D8, $00, $2C, $60, $F0, $00, $54, $50, $70, $02, $54, $60, $88, $02 EE/2BD2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2BE2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $68, $68, $01 EE/2BF2: .DB $30, $58, $08, $01, $50, $58, $A0, $02, $00, $00, $00, $00, $00, $00, $00, $00 EE/2C02: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2C12: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $68, $50, $01 EE/2C22: .DB $40, $18, $20, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2C32: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2C42: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $68, $68, $01 EE/2C52: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2C62: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2C72: .DB $00, $00, $00, $00, $00, $00, $00, $00, $44, $68, $50, $01, $40, $68, $68, $01 EE/2C82: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2C92: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2CA2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $48, $68, $50, $01, $40, $68, $68, $01 EE/2CB2: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2CC2: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2CD2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $4C, $68, $50, $01, $40, $68, $68, $01 EE/2CE2: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2CF2: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2D02: .DB $00, $00, $00, $00, $00, $00, $00, $00, $50, $68, $50, $01, $40, $68, $68, $01 EE/2D12: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2D22: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2D32: .DB $00, $00, $00, $00, $00, $00, $00, $00, $54, $68, $50, $01, $40, $68, $68, $01 EE/2D42: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2D52: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2D62: .DB $00, $00, $00, $00, $00, $00, $00, $00, $58, $68, $50, $01, $40, $68, $68, $01 EE/2D72: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2D82: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2D92: .DB $00, $00, $00, $00, $00, $00, $00, $00, $5C, $68, $50, $01, $40, $68, $68, $01 EE/2DA2: .DB $50, $20, $98, $01, $50, $30, $B0, $01, $50, $40, $C8, $01, $50, $50, $E0, $01 EE/2DB2: .DB $50, $60, $F8, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2DC2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $60, $68, $50, $01, $40, $68, $68, $01 EE/2DD2: .DB $50, $20, $98, $01, $50, $30, $B0, $01, $50, $40, $C8, $01, $50, $50, $E0, $01 EE/2DE2: .DB $50, $60, $F8, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2DF2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $64, $68, $50, $01, $40, $68, $68, $01 EE/2E02: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2E12: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2E22: .DB $00, $00, $00, $00, $00, $00, $00, $00, $68, $68, $50, $01, $40, $68, $68, $01 EE/2E32: .DB $50, $20, $98, $01, $50, $30, $B0, $01, $50, $40, $C8, $01, $50, $50, $E0, $01 EE/2E42: .DB $50, $60, $F8, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2E52: .DB $00, $00, $00, $00, $00, $00, $00, $00, $6C, $68, $50, $01, $40, $68, $68, $01 EE/2E62: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2E72: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2E82: .DB $00, $00, $00, $00, $00, $00, $00, $00, $70, $68, $50, $01, $40, $68, $68, $01 EE/2E92: .DB $50, $20, $98, $01, $50, $30, $B0, $01, $50, $40, $C8, $01, $50, $50, $E0, $01 EE/2EA2: .DB $50, $60, $F8, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2EB2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $74, $68, $50, $01, $40, $68, $68, $01 EE/2EC2: .DB $1C, $20, $00, $00, $1C, $30, $18, $00, $1C, $40, $30, $00, $1C, $50, $48, $00 EE/2ED2: .DB $1C, $60, $60, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/2EE2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $68, $68, $01 ; magitek train ride script (52 items, 5 bytes each) ; $00: pitch ; $01: yaw ; $02: background ; $03: yaw multiplier ??? (always zero) ; $04: command trcourse: EE/2EF2: .DB $01, $00, $00, $00, $00 EE/2EF7: .DB $08, $02, $02, $00, $00 EE/2EFC: .DB $04, $01, $01, $00, $00 EE/2F01: .DB $00, $00, $01, $00, $E0 EE/2F06: .DB $02, $00, $01, $00, $00 EE/2F0B: .DB $08, $01, $03, $00, $00 EE/2F10: .DB $06, $01, $02, $00, $00 EE/2F15: .DB $04, $02, $00, $00, $00 EE/2F1A: .DB $03, $00, $01, $00, $00 EE/2F1F: .DB $05, $00, $01, $00, $E1 EE/2F24: .DB $07, $00, $00, $00, $00 EE/2F29: .DB $01, $00, $00, $00, $00 EE/2F2E: .DB $03, $01, $01, $00, $00 EE/2F33: .DB $0A, $02, $02, $00, $00 EE/2F38: .DB $00, $00, $01, $00, $E0 EE/2F3D: .DB $01, $00, $01, $00, $00 EE/2F42: .DB $00, $01, $03, $00, $00 EE/2F47: .DB $03, $00, $00, $00, $00 EE/2F4C: .DB $05, $01, $02, $00, $00 EE/2F51: .DB $07, $00, $03, $00, $00 EE/2F56: .DB $08, $00, $01, $00, $00 EE/2F5B: .DB $02, $01, $00, $00, $00 EE/2F60: .DB $01, $00, $00, $00, $00 EE/2F65: .DB $09, $02, $01, $00, $00 EE/2F6A: .DB $01, $01, $02, $00, $E1 EE/2F6F: .DB $03, $02, $01, $00, $00 EE/2F74: .DB $04, $00, $03, $00, $00 EE/2F79: .DB $05, $00, $02, $00, $00 EE/2F7E: .DB $07, $02, $00, $00, $00 EE/2F83: .DB $05, $01, $02, $00, $00 EE/2F88: .DB $07, $00, $01, $00, $00 EE/2F8D: .DB $03, $01, $01, $00, $E1 EE/2F92: .DB $00, $00, $00, $00, $00 EE/2F97: .DB $00, $00, $00, $00, $00 EE/2F9C: .DB $01, $00, $01, $00, $00 EE/2FA1: .DB $02, $01, $02, $00, $E2 EE/2FA6: .DB $03, $00, $01, $00, $00 EE/2FAB: .DB $04, $01, $01, $00, $FF EE/2FB0: .DB $05, $02, $01, $00, $00 EE/2FB5: .DB $06, $01, $00, $00, $00 EE/2FBA: .DB $07, $00, $02, $00, $00 trcourse_exit: EE/2FBF: .DB $00, $00, $00, $00, $00 EE/2FC4: .DB $02, $01, $00, $00, $00 EE/2FC9: .DB $00, $00, $00, $00, $00 EE/2FCE: .DB $00, $00, $00, $00, $00 EE/2FD3: .DB $03, $02, $01, $00, $00 EE/2FD8: .DB $04, $00, $03, $00, $00 EE/2FDD: .DB $05, $00, $02, $00, $00 EE/2FE2: .DB $00, $00, $00, $00, $FF EE/2FE7: .DB $00, $00, $00, $00, $00 EE/2FEC: .DB $00, $00, $00, $00, $00 EE/2FF1: .DB $00, $00, $00, $00, $00 ; magitek train ride command jump table EE/2FF6: .DW $31F6, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3006: .DW $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3016: .DW $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3026: .DW $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3036: .DW $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3046: .DW $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3056: .DW $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3066: .DW $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9, $31F9 EE/3076: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/3086: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/3096: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/30A6: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/30B6: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/30C6: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/30D6: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/30E6: .DW $3217, $3217, $3217, $3217, $3217, $3217, $3217, $3217 EE/30F6: .DW $3232, $3232, $3232, $3232, $3232, $3232, $3232, $3232 EE/3106: .DW $3232, $3232, $3232, $3232, $3232, $3232, $3232, $3232 EE/3116: .DW $3232, $3232, $3232, $3232, $3232, $3232, $3232, $3232 EE/3126: .DW $3232, $3232, $3232, $3232, $3232, $3232, $3232, $3232 EE/3136: .DW $3257, $3257, $3257, $3257, $3257, $3257, $3257, $3257 EE/3146: .DW $3257, $3257, $3257, $3257, $3257, $3257, $3257, $3257 EE/3156: .DW $3257, $3257, $3257, $3257, $3257, $3257, $3257, $3257 EE/3166: .DW $3257, $3257, $3257, $3257, $3257, $3257, $3257, $3257 EE/3176: .DW $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6 EE/3186: .DW $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6 EE/3196: .DW $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6 EE/31A6: .DW $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6 EE/31B6: .DW $327A, $32C8, $3316, $31F6, $31F6, $31F6, $31F6, $31F6 EE/31C6: .DW $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6 EE/31D6: .DW $334A, $334D, $3350, $3353, $31F6, $31F6, $31F6, $31F6 EE/31E6: .DW $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $31F6, $3356 ; [ Magitek Train Ride Command: No Effect ] EE/31F6: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $01-$3F: Conditional Branch ] ; b0: number of commands to branch forward (multiply by 5) EE/31F9: A5 E7 LDA $E7 ; change this to $07 to check if the right button is down EE/31FB: 89 01 00 BIT #$0001 EE/31FE: F0 10 BEQ $3210 ; branch if ??? (turning left or right?) EE/3200: A5 F0 LDA $F0 EE/3202: 29 FF 00 AND #$00FF EE/3205: 85 6A STA $6A EE/3207: 0A ASL EE/3208: 0A ASL EE/3209: 18 CLC EE/320A: 65 6A ADC $6A EE/320C: 65 34 ADC $34 EE/320E: 85 34 STA $34 EE/3210: E2 20 SEP #$20 EE/3212: 64 F0 STZ $F0 EE/3214: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $40-$7F: Branch ] ; b0: number of commands to branch forward (multiply by 5) EE/3217: A5 F0 LDA $F0 EE/3219: 29 FF 00 AND #$00FF EE/321C: 38 SEC EE/321D: E9 3F 00 SBC #$003F EE/3220: 85 6A STA $6A EE/3222: 0A ASL EE/3223: 0A ASL EE/3224: 18 CLC EE/3225: 65 6A ADC $6A EE/3227: 65 34 ADC $34 EE/3229: 85 34 STA $34 EE/322B: E2 20 SEP #$20 EE/322D: 64 F0 STZ $F0 EE/322F: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $80-$9F: ] ; b0: 100aaabb ; a: rotation angle (degrees) ; b: rotation speed (degrees per frame) EE/3232: 7B TDC EE/3233: E2 21 SEP #$21 EE/3235: A5 F0 LDA $F0 EE/3237: 29 03 AND #$03 EE/3239: 1A INC EE/323A: 85 29 STA $29 ; rotation speed EE/323C: 64 2A STZ $2A EE/323E: A5 F0 LDA $F0 EE/3240: 4A LSR EE/3241: 4A LSR EE/3242: 29 07 AND #$07 EE/3244: 1A INC EE/3245: 0A ASL EE/3246: 85 73 STA $73 ; rotation frame counter EE/3248: E2 20 SEP #$20 EE/324A: 64 F0 STZ $F0 EE/324C: 4C 5B 23 JMP $235B ; rotation angles thcntdt: EE/324F: .DB $02, $04, $06, $1E, $2D, $3C, $4B, $5A ; [ Magitek Train Ride Command $A0-$BF: ] ; b0: 101aaabb ; a: rotation angle (pointer to data above) ; b: rotation speed (degrees per frame) EE/3257: 7B TDC EE/3258: E2 21 SEP #$21 EE/325A: A5 F0 LDA $F0 EE/325C: 29 03 AND #$03 EE/325E: 49 FF EOR #$FF EE/3260: 85 29 STA $29 ; rotation speed EE/3262: A9 FF LDA #$FF EE/3264: 85 2A STA $2A EE/3266: A5 F0 LDA $F0 EE/3268: 4A LSR EE/3269: 4A LSR EE/326A: 29 07 AND #$07 EE/326C: AA TAX EE/326D: BF 4F 32 EE LDA $EE324F,X ; rotation frame counter EE/3271: 85 73 STA $73 EE/3273: E2 20 SEP #$20 EE/3275: 64 F0 STZ $F0 EE/3277: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $E0: Battle 1 ] EE/327A: AD 6D 1F LDA $1F6D ; update random number EE/327D: 29 FF 00 AND #$00FF EE/3280: AA TAX EE/3281: BF 00 FD C0 LDA $C0FD00,X ; random number table EE/3285: 85 64 STA $64 EE/3287: A9 29 00 LDA #$0029 ; event battle #$29 EE/328A: 0A ASL EE/328B: 0A ASL EE/328C: AA TAX EE/328D: E2 20 SEP #$20 EE/328F: EE 6D 1F INC $1F6D ; increment random number EE/3292: A5 64 LDA $64 EE/3294: C9 C0 CMP #$C0 EE/3296: 90 02 BCC $329A ; 75% chance to branch EE/3298: E8 INX ; 25% chance to choose next battle EE/3299: E8 INX EE/329A: BF 00 50 CF LDA $CF5000,X ; event battle index EE/329E: 8F E0 11 00 STA $0011E0 EE/32A2: BF 01 50 CF LDA $CF5001,X EE/32A6: 8F E1 11 00 STA $0011E1 EE/32AA: A9 2C LDA #$2C ; battle bg $2C (magitek train car) EE/32AC: 8F E2 11 00 STA $0011E2 EE/32B0: 7B TDC EE/32B1: 8F E3 11 00 STA $0011E3 EE/32B5: A9 08 LDA #$08 ; continue current music EE/32B7: 8F E4 11 00 STA $0011E4 EE/32BB: AF F6 11 00 LDA $0011F6 ; enable battle EE/32BF: 09 02 ORA #$02 EE/32C1: 8F F6 11 00 STA $0011F6 EE/32C5: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $E1: Battle 2 ] EE/32C8: AD 6D 1F LDA $1F6D EE/32CB: 29 FF 00 AND #$00FF EE/32CE: AA TAX EE/32CF: BF 00 FD C0 LDA $C0FD00,X EE/32D3: 85 64 STA $64 EE/32D5: A9 90 00 LDA #$0090 ; event battle #$90 EE/32D8: 0A ASL EE/32D9: 0A ASL EE/32DA: AA TAX EE/32DB: E2 20 SEP #$20 EE/32DD: EE 6D 1F INC $1F6D EE/32E0: A5 64 LDA $64 EE/32E2: C9 C0 CMP #$C0 EE/32E4: 90 02 BCC $32E8 EE/32E6: E8 INX EE/32E7: E8 INX EE/32E8: BF 00 50 CF LDA $CF5000,X EE/32EC: 8F E0 11 00 STA $0011E0 EE/32F0: BF 01 50 CF LDA $CF5001,X EE/32F4: 8F E1 11 00 STA $0011E1 EE/32F8: A9 2C LDA #$2C EE/32FA: 8F E2 11 00 STA $0011E2 EE/32FE: 7B TDC EE/32FF: 8F E3 11 00 STA $0011E3 EE/3303: A9 08 LDA #$08 EE/3305: 8F E4 11 00 STA $0011E4 EE/3309: AF F6 11 00 LDA $0011F6 ; enable battle EE/330D: 09 02 ORA #$02 EE/330F: 8F F6 11 00 STA $0011F6 EE/3313: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $E2: Boss Battle ] EE/3316: A9 49 00 LDA #$0049 ; event battle #$49 (Number 128) EE/3319: 0A ASL EE/331A: 0A ASL EE/331B: AA TAX EE/331C: E2 20 SEP #$20 EE/331E: BF 00 50 CF LDA $CF5000,X EE/3322: 8F E0 11 00 STA $0011E0 EE/3326: BF 01 50 CF LDA $CF5001,X EE/332A: 8F E1 11 00 STA $0011E1 EE/332E: A9 2C LDA #$2C EE/3330: 8F E2 11 00 STA $0011E2 EE/3334: 7B TDC EE/3335: 8F E3 11 00 STA $0011E3 EE/3339: 8F E4 11 00 STA $0011E4 EE/333D: AF F6 11 00 LDA $0011F6 ; enable battle EE/3341: 09 02 ORA #$02 EE/3343: 8F F6 11 00 STA $0011F6 EE/3347: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $F0: Unused ] EE/334A: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $F1: Unused ] EE/334D: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $F2: Unused ] EE/3350: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $F3: Unused ] EE/3353: 4C 5B 23 JMP $235B ; [ Magitek Train Ride Command $FF: End of Script ] EE/3356: E2 20 SEP #$20 EE/3358: 64 F0 STZ $F0 ; clear script command EE/335A: 64 22 STZ $22 ; clear target screen brightness EE/335C: C2 20 REP #$20 EE/335E: E6 19 INC $19 ; enable fade out EE/3360: 4C 5B 23 JMP $235B ; ------------------------------------[ World: Light of Judgement ]------------------------------------- ; [ ] mapwrt256: EE/3363: E2 20 SEP #$20 EE/3365: C2 10 REP #$10 EE/3367: 8B PHB EE/3368: A9 7E LDA #$7E EE/336A: 48 PHA EE/336B: AB PLB EE/336C: A9 7F LDA #$7F EE/336E: 85 60 STA $60 EE/3370: C2 20 REP #$20 EE/3372: A5 34 LDA $34 EE/3374: 38 SEC EE/3375: E9 00 02 SBC #$0200 EE/3378: 29 FF 0F AND #$0FFF EE/337B: 85 5A STA $5A EE/337D: A5 38 LDA $38 EE/337F: 38 SEC EE/3380: E9 00 02 SBC #$0200 EE/3383: 29 FF 0F AND #$0FFF EE/3386: 85 5C STA $5C EE/3388: C2 20 REP #$20 EE/338A: A5 5A LDA $5A EE/338C: 4A LSR EE/338D: 4A LSR EE/338E: 4A LSR EE/338F: 29 7E 00 AND #$007E EE/3392: AA TAX EE/3393: A5 40 LDA $40 EE/3395: C9 00 10 CMP #$1000 EE/3398: 10 0D BPL $33A7 EE/339A: C9 00 00 CMP #$0000 EE/339D: 30 30 BMI $33CF EE/339F: A9 00 80 LDA #$8000 EE/33A2: 85 44 STA $44 EE/33A4: 4C 2A 34 JMP $342A EE/33A7: A5 40 LDA $40 EE/33A9: 38 SEC EE/33AA: E9 00 10 SBC #$1000 EE/33AD: 85 40 STA $40 EE/33AF: A5 5C LDA $5C EE/33B1: 0A ASL EE/33B2: 0A ASL EE/33B3: 0A ASL EE/33B4: 0A ASL EE/33B5: 18 CLC EE/33B6: 69 00 3F ADC #$3F00 EE/33B9: 29 00 FF AND #$FF00 EE/33BC: 85 5E STA $5E EE/33BE: A5 5C LDA $5C EE/33C0: 0A ASL EE/33C1: 0A ASL EE/33C2: 0A ASL EE/33C3: 0A ASL EE/33C4: 38 SEC EE/33C5: E9 00 01 SBC #$0100 EE/33C8: 29 00 3F AND #$3F00 EE/33CB: 85 44 STA $44 EE/33CD: 80 1E BRA $33ED EE/33CF: A5 40 LDA $40 EE/33D1: 18 CLC EE/33D2: 69 00 10 ADC #$1000 EE/33D5: 85 40 STA $40 EE/33D7: A5 5C LDA $5C EE/33D9: 0A ASL EE/33DA: 0A ASL EE/33DB: 0A ASL EE/33DC: 0A ASL EE/33DD: 29 00 FF AND #$FF00 EE/33E0: 85 5E STA $5E EE/33E2: A5 5C LDA $5C EE/33E4: 0A ASL EE/33E5: 0A ASL EE/33E6: 0A ASL EE/33E7: 0A ASL EE/33E8: 29 00 3F AND #$3F00 EE/33EB: 85 44 STA $44 EE/33ED: A5 5A LDA $5A EE/33EF: 4A LSR EE/33F0: 4A LSR EE/33F1: 4A LSR EE/33F2: 4A LSR EE/33F3: 29 FF 00 AND #$00FF EE/33F6: A8 TAY EE/33F7: A9 40 00 LDA #$0040 EE/33FA: 85 66 STA $66 EE/33FC: B7 5E LDA [$5E],Y EE/33FE: 5A PHY EE/33FF: 29 FF 00 AND #$00FF EE/3402: 0A ASL EE/3403: 0A ASL EE/3404: A8 TAY EE/3405: B9 50 6F LDA $6F50,Y EE/3408: 9D 50 6D STA $6D50,X EE/340B: B9 52 6F LDA $6F52,Y EE/340E: 9D D0 6D STA $6DD0,X EE/3411: 68 PLA EE/3412: 1A INC EE/3413: 29 FF 00 AND #$00FF EE/3416: A8 TAY EE/3417: 8A TXA EE/3418: 1A INC EE/3419: 1A INC EE/341A: 29 7F 00 AND #$007F EE/341D: AA TAX EE/341E: C6 66 DEC $66 EE/3420: D0 DA BNE $33FC EE/3422: A9 00 80 LDA #$8000 EE/3425: 85 46 STA $46 EE/3427: 4C D3 34 JMP $34D3 EE/342A: C2 20 REP #$20 EE/342C: A5 5C LDA $5C EE/342E: 4A LSR EE/342F: 4A LSR EE/3430: 4A LSR EE/3431: 29 7E 00 AND #$007E EE/3434: AA TAX EE/3435: A5 3C LDA $3C EE/3437: C9 00 10 CMP #$1000 EE/343A: 10 0D BPL $3449 EE/343C: C9 00 00 CMP #$0000 EE/343F: 30 2D BMI $346E EE/3441: A9 00 80 LDA #$8000 EE/3444: 85 46 STA $46 EE/3446: 4C D3 34 JMP $34D3 EE/3449: A5 3C LDA $3C EE/344B: 38 SEC EE/344C: E9 00 10 SBC #$1000 EE/344F: 85 3C STA $3C EE/3451: A5 5A LDA $5A EE/3453: 4A LSR EE/3454: 4A LSR EE/3455: 4A LSR EE/3456: 4A LSR EE/3457: 18 CLC EE/3458: 69 3F 00 ADC #$003F EE/345B: 29 FF 00 AND #$00FF EE/345E: 85 5E STA $5E EE/3460: A5 5A LDA $5A EE/3462: 4A LSR EE/3463: 4A LSR EE/3464: 4A LSR EE/3465: 3A DEC EE/3466: 3A DEC EE/3467: 29 7E 00 AND #$007E EE/346A: 85 46 STA $46 EE/346C: 80 1D BRA $348B EE/346E: A5 3C LDA $3C EE/3470: 18 CLC EE/3471: 69 00 10 ADC #$1000 EE/3474: 85 3C STA $3C EE/3476: A5 5A LDA $5A EE/3478: 4A LSR EE/3479: 4A LSR EE/347A: 4A LSR EE/347B: 4A LSR EE/347C: 29 FF 00 AND #$00FF EE/347F: 85 5E STA $5E EE/3481: A5 5A LDA $5A EE/3483: 4A LSR EE/3484: 4A LSR EE/3485: 4A LSR EE/3486: 29 7E 00 AND #$007E EE/3489: 85 46 STA $46 EE/348B: A5 5C LDA $5C EE/348D: 0A ASL EE/348E: 0A ASL EE/348F: 0A ASL EE/3490: 0A ASL EE/3491: 29 00 FF AND #$FF00 EE/3494: A8 TAY EE/3495: A9 40 00 LDA #$0040 EE/3498: 85 66 STA $66 EE/349A: B7 5E LDA [$5E],Y EE/349C: 5A PHY EE/349D: 29 FF 00 AND #$00FF EE/34A0: 0A ASL EE/34A1: 0A ASL EE/34A2: A8 TAY EE/34A3: E2 20 SEP #$20 EE/34A5: B9 50 6F LDA $6F50,Y EE/34A8: 9D 50 6E STA $6E50,X EE/34AB: B9 51 6F LDA $6F51,Y EE/34AE: 9D D0 6E STA $6ED0,X EE/34B1: B9 52 6F LDA $6F52,Y EE/34B4: 9D 51 6E STA $6E51,X EE/34B7: B9 53 6F LDA $6F53,Y EE/34BA: 9D D1 6E STA $6ED1,X EE/34BD: C2 20 REP #$20 EE/34BF: 68 PLA EE/34C0: 18 CLC EE/34C1: 69 00 01 ADC #$0100 EE/34C4: 29 00 FF AND #$FF00 EE/34C7: A8 TAY EE/34C8: 8A TXA EE/34C9: 1A INC EE/34CA: 1A INC EE/34CB: 29 7F 00 AND #$007F EE/34CE: AA TAX EE/34CF: C6 66 DEC $66 EE/34D1: D0 C7 BNE $349A EE/34D3: AB PLB EE/34D4: 60 RTS ; [ ] mapall256: EE/34D5: E2 20 SEP #$20 EE/34D7: C2 10 REP #$10 EE/34D9: 8B PHB EE/34DA: A9 7E LDA #$7E EE/34DC: 48 PHA EE/34DD: AB PLB EE/34DE: A9 7F LDA #$7F EE/34E0: 85 60 STA $60 EE/34E2: C2 20 REP #$20 EE/34E4: A5 38 LDA $38 EE/34E6: 38 SEC EE/34E7: E9 00 02 SBC #$0200 EE/34EA: 85 5C STA $5C EE/34EC: 0A ASL EE/34ED: 0A ASL EE/34EE: 0A ASL EE/34EF: 0A ASL EE/34F0: 29 00 FF AND #$FF00 EE/34F3: 85 5E STA $5E EE/34F5: 29 00 3F AND #$3F00 EE/34F8: 85 6A STA $6A EE/34FA: A5 34 LDA $34 EE/34FC: 38 SEC EE/34FD: E9 00 02 SBC #$0200 EE/3500: 29 FF 0F AND #$0FFF EE/3503: 85 5A STA $5A EE/3505: 4A LSR EE/3506: 4A LSR EE/3507: 4A LSR EE/3508: 29 7E 00 AND #$007E EE/350B: 05 6A ORA $6A EE/350D: AA TAX EE/350E: A5 5A LDA $5A EE/3510: 4A LSR EE/3511: 4A LSR EE/3512: 4A LSR EE/3513: 4A LSR EE/3514: 29 FF 00 AND #$00FF EE/3517: A8 TAY EE/3518: A9 40 00 LDA #$0040 EE/351B: 85 66 STA $66 EE/351D: A9 40 00 LDA #$0040 EE/3520: 85 68 STA $68 EE/3522: B7 5E LDA [$5E],Y EE/3524: 5A PHY EE/3525: 29 FF 00 AND #$00FF EE/3528: 0A ASL EE/3529: 0A ASL EE/352A: A8 TAY EE/352B: B9 50 6F LDA $6F50,Y EE/352E: 9D 00 20 STA $2000,X EE/3531: B9 52 6F LDA $6F52,Y EE/3534: 9D 80 20 STA $2080,X EE/3537: 68 PLA EE/3538: 1A INC EE/3539: 29 FF 00 AND #$00FF EE/353C: A8 TAY EE/353D: 8A TXA EE/353E: 1A INC EE/353F: 1A INC EE/3540: 29 7F 3F AND #$3F7F EE/3543: AA TAX EE/3544: C6 68 DEC $68 EE/3546: D0 DA BNE $3522 EE/3548: 98 TYA EE/3549: 38 SEC EE/354A: E9 40 00 SBC #$0040 EE/354D: 29 FF 00 AND #$00FF EE/3550: A8 TAY EE/3551: 8A TXA EE/3552: 18 CLC EE/3553: 69 00 01 ADC #$0100 EE/3556: 29 7F 3F AND #$3F7F EE/3559: AA TAX EE/355A: A5 5E LDA $5E EE/355C: 69 00 01 ADC #$0100 EE/355F: 85 5E STA $5E EE/3561: C6 66 DEC $66 EE/3563: D0 B8 BNE $351D EE/3565: AB PLB EE/3566: 9C 15 21 STZ $2115 EE/3569: 9C 16 21 STZ $2116 EE/356C: A9 00 18 LDA #$1800 EE/356F: 8D 00 43 STA $4300 EE/3572: A9 00 20 LDA #$2000 EE/3575: 8D 02 43 STA $4302 EE/3578: A9 7E 00 LDA #$007E EE/357B: 8D 04 43 STA $4304 EE/357E: A9 00 40 LDA #$4000 EE/3581: 8D 05 43 STA $4305 EE/3584: A9 00 01 LDA #$0100 EE/3587: 8D 0A 42 STA $420A EE/358A: 60 RTS ; [ ] mapwrt128: EE/358B: E2 20 SEP #$20 EE/358D: C2 10 REP #$10 EE/358F: 8B PHB EE/3590: A9 7E LDA #$7E EE/3592: 48 PHA EE/3593: AB PLB EE/3594: A9 7F LDA #$7F EE/3596: 85 60 STA $60 EE/3598: C2 20 REP #$20 EE/359A: A5 34 LDA $34 EE/359C: 38 SEC EE/359D: E9 00 02 SBC #$0200 EE/35A0: 29 FF 07 AND #$07FF EE/35A3: 85 5A STA $5A EE/35A5: A5 38 LDA $38 EE/35A7: 38 SEC EE/35A8: E9 00 02 SBC #$0200 EE/35AB: 29 FF 07 AND #$07FF EE/35AE: 85 5C STA $5C EE/35B0: C2 20 REP #$20 EE/35B2: A5 5A LDA $5A EE/35B4: 4A LSR EE/35B5: 4A LSR EE/35B6: 4A LSR EE/35B7: 29 7E 00 AND #$007E EE/35BA: AA TAX EE/35BB: A5 40 LDA $40 EE/35BD: C9 00 10 CMP #$1000 EE/35C0: 10 0D BPL $35CF EE/35C2: C9 00 00 CMP #$0000 EE/35C5: 30 2F BMI $35F6 EE/35C7: A9 00 80 LDA #$8000 EE/35CA: 85 44 STA $44 EE/35CC: 4C 50 36 JMP $3650 EE/35CF: A5 40 LDA $40 EE/35D1: 38 SEC EE/35D2: E9 00 10 SBC #$1000 EE/35D5: 85 40 STA $40 EE/35D7: A5 5C LDA $5C EE/35D9: 0A ASL EE/35DA: 0A ASL EE/35DB: 0A ASL EE/35DC: 18 CLC EE/35DD: 69 80 1F ADC #$1F80 EE/35E0: 29 80 3F AND #$3F80 EE/35E3: 85 5E STA $5E EE/35E5: A5 5C LDA $5C EE/35E7: 0A ASL EE/35E8: 0A ASL EE/35E9: 0A ASL EE/35EA: 0A ASL EE/35EB: 38 SEC EE/35EC: E9 00 01 SBC #$0100 EE/35EF: 29 00 3F AND #$3F00 EE/35F2: 85 44 STA $44 EE/35F4: 80 1D BRA $3613 EE/35F6: A5 40 LDA $40 EE/35F8: 18 CLC EE/35F9: 69 00 10 ADC #$1000 EE/35FC: 85 40 STA $40 EE/35FE: A5 5C LDA $5C EE/3600: 0A ASL EE/3601: 0A ASL EE/3602: 0A ASL EE/3603: 29 80 3F AND #$3F80 EE/3606: 85 5E STA $5E EE/3608: A5 5C LDA $5C EE/360A: 0A ASL EE/360B: 0A ASL EE/360C: 0A ASL EE/360D: 0A ASL EE/360E: 29 00 3F AND #$3F00 EE/3611: 85 44 STA $44 EE/3613: A5 5A LDA $5A EE/3615: 4A LSR EE/3616: 4A LSR EE/3617: 4A LSR EE/3618: 4A LSR EE/3619: 29 7F 00 AND #$007F EE/361C: A8 TAY EE/361D: A9 40 00 LDA #$0040 EE/3620: 85 66 STA $66 EE/3622: B7 5E LDA [$5E],Y EE/3624: 5A PHY EE/3625: 29 FF 00 AND #$00FF EE/3628: 0A ASL EE/3629: 0A ASL EE/362A: A8 TAY EE/362B: B9 50 6F LDA $6F50,Y EE/362E: 9D 50 6D STA $6D50,X EE/3631: B9 52 6F LDA $6F52,Y EE/3634: 9D D0 6D STA $6DD0,X EE/3637: 68 PLA EE/3638: 1A INC EE/3639: 29 7F 00 AND #$007F EE/363C: A8 TAY EE/363D: 8A TXA EE/363E: 1A INC EE/363F: 1A INC EE/3640: 29 7F 00 AND #$007F EE/3643: AA TAX EE/3644: C6 66 DEC $66 EE/3646: D0 DA BNE $3622 EE/3648: A9 00 80 LDA #$8000 EE/364B: 85 46 STA $46 EE/364D: 4C F8 36 JMP $36F8 EE/3650: C2 20 REP #$20 EE/3652: A5 5C LDA $5C EE/3654: 4A LSR EE/3655: 4A LSR EE/3656: 4A LSR EE/3657: 29 7E 00 AND #$007E EE/365A: AA TAX EE/365B: A5 3C LDA $3C EE/365D: C9 00 10 CMP #$1000 EE/3660: 10 0D BPL $366F EE/3662: C9 00 00 CMP #$0000 EE/3665: 30 2D BMI $3694 EE/3667: A9 00 80 LDA #$8000 EE/366A: 85 46 STA $46 EE/366C: 4C F8 36 JMP $36F8 EE/366F: A5 3C LDA $3C EE/3671: 38 SEC EE/3672: E9 00 10 SBC #$1000 EE/3675: 85 3C STA $3C EE/3677: A5 5A LDA $5A EE/3679: 4A LSR EE/367A: 4A LSR EE/367B: 4A LSR EE/367C: 4A LSR EE/367D: 18 CLC EE/367E: 69 3F 00 ADC #$003F EE/3681: 29 7F 00 AND #$007F EE/3684: 85 5E STA $5E EE/3686: A5 5A LDA $5A EE/3688: 4A LSR EE/3689: 4A LSR EE/368A: 4A LSR EE/368B: 3A DEC EE/368C: 3A DEC EE/368D: 29 7E 00 AND #$007E EE/3690: 85 46 STA $46 EE/3692: 80 1D BRA $36B1 EE/3694: A5 3C LDA $3C EE/3696: 18 CLC EE/3697: 69 00 10 ADC #$1000 EE/369A: 85 3C STA $3C EE/369C: A5 5A LDA $5A EE/369E: 4A LSR EE/369F: 4A LSR EE/36A0: 4A LSR EE/36A1: 4A LSR EE/36A2: 29 7F 00 AND #$007F EE/36A5: 85 5E STA $5E EE/36A7: A5 5A LDA $5A EE/36A9: 4A LSR EE/36AA: 4A LSR EE/36AB: 4A LSR EE/36AC: 29 7E 00 AND #$007E EE/36AF: 85 46 STA $46 EE/36B1: A5 5C LDA $5C EE/36B3: 0A ASL EE/36B4: 0A ASL EE/36B5: 0A ASL EE/36B6: 29 80 3F AND #$3F80 EE/36B9: A8 TAY EE/36BA: A9 40 00 LDA #$0040 EE/36BD: 85 66 STA $66 EE/36BF: B7 5E LDA [$5E],Y EE/36C1: 5A PHY EE/36C2: 29 FF 00 AND #$00FF EE/36C5: 0A ASL EE/36C6: 0A ASL EE/36C7: A8 TAY EE/36C8: E2 20 SEP #$20 EE/36CA: B9 50 6F LDA $6F50,Y EE/36CD: 9D 50 6E STA $6E50,X EE/36D0: B9 51 6F LDA $6F51,Y EE/36D3: 9D D0 6E STA $6ED0,X EE/36D6: B9 52 6F LDA $6F52,Y EE/36D9: 9D 51 6E STA $6E51,X EE/36DC: B9 53 6F LDA $6F53,Y EE/36DF: 9D D1 6E STA $6ED1,X EE/36E2: C2 20 REP #$20 EE/36E4: 68 PLA EE/36E5: 18 CLC EE/36E6: 69 80 00 ADC #$0080 EE/36E9: 29 80 3F AND #$3F80 EE/36EC: A8 TAY EE/36ED: 8A TXA EE/36EE: 1A INC EE/36EF: 1A INC EE/36F0: 29 7F 00 AND #$007F EE/36F3: AA TAX EE/36F4: C6 66 DEC $66 EE/36F6: D0 C7 BNE $36BF EE/36F8: AB PLB EE/36F9: 60 RTS EE/36FA: E2 20 SEP #$20 EE/36FC: C2 10 REP #$10 EE/36FE: 8B PHB EE/36FF: A9 7E LDA #$7E EE/3701: 48 PHA EE/3702: AB PLB EE/3703: A9 7F LDA #$7F EE/3705: 85 60 STA $60 EE/3707: C2 20 REP #$20 EE/3709: A5 38 LDA $38 EE/370B: 38 SEC EE/370C: E9 00 02 SBC #$0200 EE/370F: 29 FF 07 AND #$07FF EE/3712: 85 5C STA $5C EE/3714: 0A ASL EE/3715: 0A ASL EE/3716: 0A ASL EE/3717: 29 80 3F AND #$3F80 EE/371A: 85 5E STA $5E EE/371C: 0A ASL EE/371D: 29 00 3F AND #$3F00 EE/3720: 85 6A STA $6A EE/3722: A5 34 LDA $34 EE/3724: 38 SEC EE/3725: E9 00 02 SBC #$0200 EE/3728: 29 FF 07 AND #$07FF EE/372B: 85 5A STA $5A EE/372D: 4A LSR EE/372E: 4A LSR EE/372F: 4A LSR EE/3730: 29 7E 00 AND #$007E EE/3733: 05 6A ORA $6A EE/3735: AA TAX EE/3736: A5 5A LDA $5A EE/3738: 4A LSR EE/3739: 4A LSR EE/373A: 4A LSR EE/373B: 4A LSR EE/373C: 29 7F 00 AND #$007F EE/373F: A8 TAY EE/3740: A9 40 00 LDA #$0040 EE/3743: 85 66 STA $66 EE/3745: A9 40 00 LDA #$0040 EE/3748: 85 68 STA $68 EE/374A: B7 5E LDA [$5E],Y EE/374C: 5A PHY EE/374D: 29 FF 00 AND #$00FF EE/3750: 0A ASL EE/3751: 0A ASL EE/3752: A8 TAY EE/3753: B9 50 6F LDA $6F50,Y EE/3756: 9D 00 20 STA $2000,X EE/3759: B9 52 6F LDA $6F52,Y EE/375C: 9D 80 20 STA $2080,X EE/375F: 68 PLA EE/3760: 1A INC EE/3761: 29 7F 00 AND #$007F EE/3764: A8 TAY EE/3765: 8A TXA EE/3766: 1A INC EE/3767: 1A INC EE/3768: 29 7F 3F AND #$3F7F EE/376B: AA TAX EE/376C: C6 68 DEC $68 EE/376E: D0 DA BNE $374A EE/3770: 98 TYA EE/3771: 38 SEC EE/3772: E9 40 00 SBC #$0040 EE/3775: 29 7F 00 AND #$007F EE/3778: A8 TAY EE/3779: 8A TXA EE/377A: 18 CLC EE/377B: 69 00 01 ADC #$0100 EE/377E: 29 7F 3F AND #$3F7F EE/3781: AA TAX EE/3782: A5 5E LDA $5E EE/3784: 69 80 00 ADC #$0080 EE/3787: 29 80 3F AND #$3F80 EE/378A: 85 5E STA $5E EE/378C: C6 66 DEC $66 EE/378E: D0 B5 BNE $3745 EE/3790: AB PLB EE/3791: 9C 15 21 STZ $2115 EE/3794: 9C 16 21 STZ $2116 EE/3797: A9 00 18 LDA #$1800 EE/379A: 8D 00 43 STA $4300 EE/379D: A9 00 20 LDA #$2000 EE/37A0: 8D 02 43 STA $4302 EE/37A3: A9 7E 00 LDA #$007E EE/37A6: 8D 04 43 STA $4304 EE/37A9: A9 00 40 LDA #$4000 EE/37AC: 8D 05 43 STA $4305 EE/37AF: A9 00 01 LDA #$0100 EE/37B2: 8D 0A 42 STA $420A EE/37B5: 60 RTS EE/37B6: E2 20 SEP #$20 EE/37B8: 8B PHB EE/37B9: A9 7E LDA #$7E EE/37BB: 48 PHA EE/37BC: AB PLB EE/37BD: C2 20 REP #$20 EE/37BF: C2 10 REP #$10 EE/37C1: A5 83 LDA $83 EE/37C3: D0 03 BNE $37C8 EE/37C5: 4C 5E 38 JMP $385E EE/37C8: 30 4A BMI $3814 EE/37CA: EB XBA EE/37CB: 4A LSR EE/37CC: 4A LSR EE/37CD: 4A LSR EE/37CE: AA TAX EE/37CF: A9 E0 00 LDA #$00E0 EE/37D2: 38 SEC EE/37D3: E5 87 SBC $87 EE/37D5: 18 CLC EE/37D6: 69 08 00 ADC #$0008 EE/37D9: 4A LSR EE/37DA: 4A LSR EE/37DB: 4A LSR EE/37DC: 85 66 STA $66 EE/37DE: A0 00 00 LDY #$0000 EE/37E1: BF 62 B8 7E LDA $7EB862,X EE/37E5: 29 FF 00 AND #$00FF EE/37E8: 85 58 STA $58 EE/37EA: A5 70 LDA $70 EE/37EC: 38 SEC EE/37ED: E5 58 SBC $58 EE/37EF: 99 0E 69 STA $690E,Y EE/37F2: 99 10 69 STA $6910,Y EE/37F5: 99 12 69 STA $6912,Y EE/37F8: 99 14 69 STA $6914,Y EE/37FB: 99 16 69 STA $6916,Y EE/37FE: 99 18 69 STA $6918,Y EE/3801: 99 1A 69 STA $691A,Y EE/3804: 99 1C 69 STA $691C,Y EE/3807: 98 TYA EE/3808: 18 CLC EE/3809: 69 10 00 ADC #$0010 EE/380C: A8 TAY EE/380D: E8 INX EE/380E: C6 66 DEC $66 EE/3810: D0 CF BNE $37E1 EE/3812: 80 60 BRA $3874 EE/3814: 49 FF FF EOR #$FFFF EE/3817: 1A INC EE/3818: EB XBA EE/3819: 4A LSR EE/381A: 4A LSR EE/381B: 4A LSR EE/381C: AA TAX EE/381D: A9 E0 00 LDA #$00E0 EE/3820: 38 SEC EE/3821: E5 87 SBC $87 EE/3823: 18 CLC EE/3824: 69 08 00 ADC #$0008 EE/3827: 4A LSR EE/3828: 4A LSR EE/3829: 4A LSR EE/382A: 85 66 STA $66 EE/382C: A0 00 00 LDY #$0000 EE/382F: BF 62 B8 7E LDA $7EB862,X EE/3833: 29 FF 00 AND #$00FF EE/3836: 18 CLC EE/3837: 65 70 ADC $70 EE/3839: 99 0E 69 STA $690E,Y EE/383C: 99 10 69 STA $6910,Y EE/383F: 99 12 69 STA $6912,Y EE/3842: 99 14 69 STA $6914,Y EE/3845: 99 16 69 STA $6916,Y EE/3848: 99 18 69 STA $6918,Y EE/384B: 99 1A 69 STA $691A,Y EE/384E: 99 1C 69 STA $691C,Y EE/3851: 98 TYA EE/3852: 18 CLC EE/3853: 69 10 00 ADC #$0010 EE/3856: A8 TAY EE/3857: E8 INX EE/3858: C6 66 DEC $66 EE/385A: D0 D3 BNE $382F EE/385C: 80 16 BRA $3874 EE/385E: A9 E0 00 LDA #$00E0 EE/3861: 38 SEC EE/3862: E5 87 SBC $87 EE/3864: F0 0E BEQ $3874 EE/3866: AA TAX EE/3867: A0 00 00 LDY #$0000 EE/386A: A5 70 LDA $70 EE/386C: 99 0E 69 STA $690E,Y EE/386F: C8 INY EE/3870: C8 INY EE/3871: CA DEX EE/3872: D0 F8 BNE $386C EE/3874: A9 E0 00 LDA #$00E0 EE/3877: 38 SEC EE/3878: E5 87 SBC $87 EE/387A: 09 80 00 ORA #$0080 EE/387D: 8D BB 00 STA $00BB EE/3880: A9 0E 69 LDA #$690E EE/3883: 8D BC 00 STA $00BC EE/3886: AB PLB EE/3887: 60 RTS ; [ ] objcvr: EE/3888: E2 20 SEP #$20 EE/388A: C2 10 REP #$10 EE/388C: 8B PHB EE/388D: A9 7E LDA #$7E EE/388F: 48 PHA EE/3890: AB PLB EE/3891: C2 20 REP #$20 EE/3893: A5 83 LDA $83 EE/3895: D0 03 BNE $389A EE/3897: 4C C7 39 JMP $39C7 EE/389A: 10 03 BPL $389F EE/389C: 4C 33 39 JMP $3933 EE/389F: EB XBA EE/38A0: 4A LSR EE/38A1: 4A LSR EE/38A2: 4A LSR EE/38A3: AA TAX EE/38A4: A9 C0 00 LDA #$00C0 EE/38A7: 38 SEC EE/38A8: E5 87 SBC $87 EE/38AA: 18 CLC EE/38AB: 65 83 ADC $83 EE/38AD: 85 58 STA $58 EE/38AF: E2 20 SEP #$20 EE/38B1: A9 0F LDA #$0F EE/38B3: 85 66 STA $66 EE/38B5: A0 00 00 LDY #$0000 EE/38B8: BF 62 B8 7E LDA $7EB862,X EE/38BC: E8 INX EE/38BD: 85 5A STA $5A EE/38BF: A5 58 LDA $58 EE/38C1: 99 01 6C STA $6C01,Y EE/38C4: 18 CLC EE/38C5: 69 10 ADC #$10 EE/38C7: 99 3D 6C STA $6C3D,Y EE/38CA: 69 10 ADC #$10 EE/38CC: 99 79 6C STA $6C79,Y EE/38CF: 69 10 ADC #$10 EE/38D1: 99 B5 6C STA $6CB5,Y EE/38D4: 69 10 ADC #$10 EE/38D6: 99 F1 6C STA $6CF1,Y EE/38D9: BF 62 B8 7E LDA $7EB862,X EE/38DD: C5 5A CMP $5A EE/38DF: F0 1F BEQ $3900 EE/38E1: 85 5A STA $5A EE/38E3: C6 58 DEC $58 EE/38E5: A9 01 LDA #$01 EE/38E7: 99 02 6C STA $6C02,Y EE/38EA: A9 05 LDA #$05 EE/38EC: 99 3E 6C STA $6C3E,Y EE/38EF: A9 09 LDA #$09 EE/38F1: 99 7A 6C STA $6C7A,Y EE/38F4: A9 0D LDA #$0D EE/38F6: 99 B6 6C STA $6CB6,Y EE/38F9: A9 21 LDA #$21 EE/38FB: 99 F2 6C STA $6CF2,Y EE/38FE: 80 18 BRA $3918 EE/3900: 7B TDC EE/3901: 99 02 6C STA $6C02,Y EE/3904: A9 04 LDA #$04 EE/3906: 99 3E 6C STA $6C3E,Y EE/3909: A9 08 LDA #$08 EE/390B: 99 7A 6C STA $6C7A,Y EE/390E: A9 0C LDA #$0C EE/3910: 99 B6 6C STA $6CB6,Y EE/3913: A9 20 LDA #$20 EE/3915: 99 F2 6C STA $6CF2,Y EE/3918: E8 INX EE/3919: BF 62 B8 7E LDA $7EB862,X EE/391D: C5 5A CMP $5A EE/391F: F0 04 BEQ $3925 EE/3921: 85 5A STA $5A EE/3923: C6 58 DEC $58 EE/3925: C6 66 DEC $66 EE/3927: F0 07 BEQ $3930 EE/3929: C8 INY EE/392A: C8 INY EE/392B: C8 INY EE/392C: C8 INY EE/392D: E8 INX EE/392E: 80 8F BRA $38BF EE/3930: 4C FD 39 JMP $39FD EE/3933: 49 FF FF EOR #$FFFF EE/3936: 1A INC EE/3937: EB XBA EE/3938: 4A LSR EE/3939: 4A LSR EE/393A: 4A LSR EE/393B: AA TAX EE/393C: A9 C0 00 LDA #$00C0 EE/393F: 38 SEC EE/3940: E5 87 SBC $87 EE/3942: 85 58 STA $58 EE/3944: E2 20 SEP #$20 EE/3946: A9 0F LDA #$0F EE/3948: 85 66 STA $66 EE/394A: A0 00 00 LDY #$0000 EE/394D: BF 62 B8 7E LDA $7EB862,X EE/3951: E8 INX EE/3952: 85 5A STA $5A EE/3954: BF 62 B8 7E LDA $7EB862,X EE/3958: C5 5A CMP $5A EE/395A: F0 1F BEQ $397B EE/395C: 85 5A STA $5A EE/395E: E6 58 INC $58 EE/3960: A9 02 LDA #$02 EE/3962: 99 02 6C STA $6C02,Y EE/3965: A9 06 LDA #$06 EE/3967: 99 3E 6C STA $6C3E,Y EE/396A: A9 0A LDA #$0A EE/396C: 99 7A 6C STA $6C7A,Y EE/396F: A9 0E LDA #$0E EE/3971: 99 B6 6C STA $6CB6,Y EE/3974: A9 22 LDA #$22 EE/3976: 99 F2 6C STA $6CF2,Y EE/3979: 80 18 BRA $3993 EE/397B: 7B TDC EE/397C: 99 02 6C STA $6C02,Y EE/397F: A9 04 LDA #$04 EE/3981: 99 3E 6C STA $6C3E,Y EE/3984: A9 08 LDA #$08 EE/3986: 99 7A 6C STA $6C7A,Y EE/3989: A9 0C LDA #$0C EE/398B: 99 B6 6C STA $6CB6,Y EE/398E: A9 20 LDA #$20 EE/3990: 99 F2 6C STA $6CF2,Y EE/3993: A5 58 LDA $58 EE/3995: 99 01 6C STA $6C01,Y EE/3998: 18 CLC EE/3999: 69 10 ADC #$10 EE/399B: 99 3D 6C STA $6C3D,Y EE/399E: 69 10 ADC #$10 EE/39A0: 99 79 6C STA $6C79,Y EE/39A3: 69 10 ADC #$10 EE/39A5: 99 B5 6C STA $6CB5,Y EE/39A8: 69 10 ADC #$10 EE/39AA: 99 F1 6C STA $6CF1,Y EE/39AD: E8 INX EE/39AE: BF 62 B8 7E LDA $7EB862,X EE/39B2: C5 5A CMP $5A EE/39B4: F0 04 BEQ $39BA EE/39B6: 85 5A STA $5A EE/39B8: E6 58 INC $58 EE/39BA: C6 66 DEC $66 EE/39BC: F0 07 BEQ $39C5 EE/39BE: C8 INY EE/39BF: C8 INY EE/39C0: C8 INY EE/39C1: C8 INY EE/39C2: E8 INX EE/39C3: 80 8F BRA $3954 EE/39C5: 80 36 BRA $39FD EE/39C7: A9 C0 00 LDA #$00C0 EE/39CA: 38 SEC EE/39CB: E5 87 SBC $87 EE/39CD: 85 58 STA $58 EE/39CF: E2 20 SEP #$20 EE/39D1: 64 5A STZ $5A EE/39D3: A0 00 00 LDY #$0000 EE/39D6: A2 0F 00 LDX #$000F EE/39D9: A5 58 LDA $58 EE/39DB: 99 01 6C STA $6C01,Y EE/39DE: A5 5A LDA $5A EE/39E0: 99 02 6C STA $6C02,Y EE/39E3: C8 INY EE/39E4: C8 INY EE/39E5: C8 INY EE/39E6: C8 INY EE/39E7: CA DEX EE/39E8: D0 EF BNE $39D9 EE/39EA: 18 CLC EE/39EB: 69 14 ADC #$14 EE/39ED: 29 2F AND #$2F EE/39EF: 85 5A STA $5A EE/39F1: A5 58 LDA $58 EE/39F3: 18 CLC EE/39F4: 69 10 ADC #$10 EE/39F6: 85 58 STA $58 EE/39F8: C0 2C 01 CPY #$012C EE/39FB: D0 D9 BNE $39D6 EE/39FD: AB PLB EE/39FE: 60 RTS ; [ ] EE/39FF: C2 20 REP #$20 EE/3A01: C2 10 REP #$10 EE/3A03: 9C 15 21 STZ $2115 EE/3A06: A9 20 4C LDA #$4C20 EE/3A09: 8D 16 21 STA $2116 EE/3A0C: A5 83 LDA $83 EE/3A0E: F0 59 BEQ $3A69 EE/3A10: 30 2C BMI $3A3E EE/3A12: 85 5A STA $5A EE/3A14: EB XBA EE/3A15: 4A LSR EE/3A16: 4A LSR EE/3A17: 4A LSR EE/3A18: AA TAX EE/3A19: A5 87 LDA $87 EE/3A1B: E2 20 SEP #$20 EE/3A1D: 38 SEC EE/3A1E: E9 64 SBC #$64 EE/3A20: 38 SEC EE/3A21: E5 5A SBC $5A EE/3A23: 85 58 STA $58 EE/3A25: 8D 10 21 STA $2110 EE/3A28: 9C 10 21 STZ $2110 EE/3A2B: A0 20 00 LDY #$0020 EE/3A2E: A5 58 LDA $58 EE/3A30: 18 CLC EE/3A31: 7F 62 B8 7E ADC $7EB862,X EE/3A35: 8D 18 21 STA $2118 EE/3A38: E8 INX EE/3A39: 88 DEY EE/3A3A: D0 F2 BNE $3A2E EE/3A3C: 80 41 BRA $3A7F EE/3A3E: 49 FF FF EOR #$FFFF EE/3A41: 1A INC EE/3A42: EB XBA EE/3A43: 4A LSR EE/3A44: 4A LSR EE/3A45: 4A LSR EE/3A46: AA TAX EE/3A47: A5 87 LDA $87 EE/3A49: E2 20 SEP #$20 EE/3A4B: 38 SEC EE/3A4C: E9 64 SBC #$64 EE/3A4E: 85 58 STA $58 EE/3A50: 8D 10 21 STA $2110 EE/3A53: 9C 10 21 STZ $2110 EE/3A56: A0 20 00 LDY #$0020 EE/3A59: A5 58 LDA $58 EE/3A5B: 38 SEC EE/3A5C: FF 62 B8 7E SBC $7EB862,X EE/3A60: 8D 18 21 STA $2118 EE/3A63: E8 INX EE/3A64: 88 DEY EE/3A65: D0 F2 BNE $3A59 EE/3A67: 80 16 BRA $3A7F EE/3A69: A5 87 LDA $87 EE/3A6B: E2 20 SEP #$20 EE/3A6D: 38 SEC EE/3A6E: E9 64 SBC #$64 EE/3A70: 8D 10 21 STA $2110 EE/3A73: 9C 10 21 STZ $2110 EE/3A76: A0 20 00 LDY #$0020 EE/3A79: 8D 18 21 STA $2118 EE/3A7C: 88 DEY EE/3A7D: D0 FA BNE $3A79 EE/3A7F: 60 RTS ; [ Update Mode 7 Rotation ] m7efect2: EE/3A80: C2 20 REP #$20 EE/3A82: C2 10 REP #$10 EE/3A84: 64 6B STZ $6B EE/3A86: 64 6E STZ $6E EE/3A88: A5 87 LDA $87 EE/3A8A: C9 E1 00 CMP #$00E1 EE/3A8D: 90 0D BCC $3A9C EE/3A8F: A9 C0 01 LDA #$01C0 EE/3A92: 38 SEC EE/3A93: E5 87 SBC $87 EE/3A95: 85 89 STA $89 EE/3A97: A9 E0 00 LDA #$00E0 EE/3A9A: 80 02 BRA $3A9E EE/3A9C: 85 89 STA $89 EE/3A9E: 0A ASL EE/3A9F: AA TAX EE/3AA0: 18 CLC EE/3AA1: 69 40 01 ADC #$0140 EE/3AA4: 85 A0 STA $A0 EE/3AA6: 85 B5 STA $B5 EE/3AA8: 69 F8 00 ADC #$00F8 EE/3AAB: 85 A3 STA $A3 EE/3AAD: 85 B8 STA $B8 EE/3AAF: 8A TXA EE/3AB0: 69 00 03 ADC #$0300 EE/3AB3: 85 A7 STA $A7 EE/3AB5: 69 F8 00 ADC #$00F8 EE/3AB8: 85 AA STA $AA EE/3ABA: 8A TXA EE/3ABB: 69 C0 04 ADC #$04C0 EE/3ABE: 85 AE STA $AE EE/3AC0: 69 F8 00 ADC #$00F8 EE/3AC3: 85 B1 STA $B1 EE/3AC5: C2 20 REP #$20 EE/3AC7: E2 10 SEP #$10 EE/3AC9: A6 89 LDX $89 EE/3ACB: A5 8F LDA $8F EE/3ACD: 38 SEC EE/3ACE: E5 8D SBC $8D EE/3AD0: B0 04 BCS $3AD6 EE/3AD2: 49 FF FF EOR #$FFFF EE/3AD5: 1A INC EE/3AD6: 08 PHP EE/3AD7: 8D 04 42 STA $4204 EE/3ADA: 8E 06 42 STX $4206 EE/3ADD: AD 73 00 LDA $0073 EE/3AE0: C9 B4 00 CMP #$00B4 EE/3AE3: 90 03 BCC $3AE8 EE/3AE5: E9 B4 00 SBC #$00B4 EE/3AE8: AA TAX EE/3AE9: BF F1 FE EF LDA $EFFEF1,X EE/3AED: 85 9B STA $9B EE/3AEF: BF 4B FF EF LDA $EFFF4B,X EE/3AF3: 85 9D STA $9D EE/3AF5: 28 PLP EE/3AF6: AD 14 42 LDA $4214 EE/3AF9: B0 04 BCS $3AFF EE/3AFB: 49 FF FF EOR #$FFFF EE/3AFE: 1A INC EE/3AFF: 85 95 STA $95 EE/3B01: A5 89 LDA $89 EE/3B03: C9 7E 00 CMP #$007E EE/3B06: B0 06 BCS $3B0E EE/3B08: 85 66 STA $66 EE/3B0A: 64 68 STZ $68 EE/3B0C: 80 0B BRA $3B19 EE/3B0E: 64 66 STZ $66 EE/3B10: A2 7E LDX #$7E EE/3B12: 86 66 STX $66 EE/3B14: E9 7E 00 SBC #$007E EE/3B17: 85 68 STA $68 EE/3B19: A5 8B LDA $8B EE/3B1B: 85 97 STA $97 EE/3B1D: A5 8D LDA $8D EE/3B1F: 85 99 STA $99 EE/3B21: AD 73 00 LDA $0073 EE/3B24: C9 B4 00 CMP #$00B4 EE/3B27: 90 0B BCC $3B34 EE/3B29: C9 0E 01 CMP #$010E EE/3B2C: 90 03 BCC $3B31 EE/3B2E: 4C 8F 3D JMP $3D8F EE/3B31: 4C C6 3C JMP $3CC6 EE/3B34: C9 5A 00 CMP #$005A EE/3B37: 90 03 BCC $3B3C EE/3B39: 4C FD 3B JMP $3BFD EE/3B3C: A0 00 LDY #$00 EE/3B3E: A5 97 LDA $97 EE/3B40: 8D 04 42 STA $4204 EE/3B43: A6 9A LDX $9A EE/3B45: 8E 06 42 STX $4206 EE/3B48: A5 99 LDA $99 EE/3B4A: 18 CLC EE/3B4B: 65 95 ADC $95 EE/3B4D: 85 99 STA $99 EE/3B4F: C8 INY EE/3B50: A6 9D LDX $9D EE/3B52: 8E 02 42 STX $4202 EE/3B55: AD 14 42 LDA $4214 EE/3B58: 85 6D STA $6D EE/3B5A: AA TAX EE/3B5B: 8E 03 42 STX $4203 EE/3B5E: EB XBA EE/3B5F: AA TAX EE/3B60: AD 16 42 LDA $4216 EE/3B63: 85 6A STA $6A EE/3B65: 8E 03 42 STX $4203 EE/3B68: A5 6B LDA $6B EE/3B6A: 18 CLC EE/3B6B: 6D 16 42 ADC $4216 EE/3B6E: 99 FF 02 STA $02FF,Y EE/3B71: A6 9B LDX $9B EE/3B73: 8E 02 42 STX $4202 EE/3B76: A6 6D LDX $6D EE/3B78: 8E 03 42 STX $4203 EE/3B7B: A6 6E LDX $6E EE/3B7D: C8 INY EE/3B7E: AD 16 42 LDA $4216 EE/3B81: 85 6A STA $6A EE/3B83: 8E 03 42 STX $4203 EE/3B86: A5 6B LDA $6B EE/3B88: 18 CLC EE/3B89: 6D 16 42 ADC $4216 EE/3B8C: 99 BE 04 STA $04BE,Y EE/3B8F: 49 FF FF EOR #$FFFF EE/3B92: 1A INC EE/3B93: 99 7E 06 STA $067E,Y EE/3B96: C6 66 DEC $66 EE/3B98: D0 A4 BNE $3B3E EE/3B9A: A0 00 LDY #$00 EE/3B9C: C6 68 DEC $68 EE/3B9E: 30 5A BMI $3BFA EE/3BA0: A5 97 LDA $97 EE/3BA2: 8D 04 42 STA $4204 EE/3BA5: A6 9A LDX $9A EE/3BA7: 8E 06 42 STX $4206 EE/3BAA: A5 99 LDA $99 EE/3BAC: 18 CLC EE/3BAD: 65 95 ADC $95 EE/3BAF: 85 99 STA $99 EE/3BB1: C8 INY EE/3BB2: A6 9D LDX $9D EE/3BB4: 8E 02 42 STX $4202 EE/3BB7: AD 14 42 LDA $4214 EE/3BBA: 85 6D STA $6D EE/3BBC: AA TAX EE/3BBD: 8E 03 42 STX $4203 EE/3BC0: EB XBA EE/3BC1: AA TAX EE/3BC2: AD 16 42 LDA $4216 EE/3BC5: 85 6A STA $6A EE/3BC7: 8E 03 42 STX $4203 EE/3BCA: A5 6B LDA $6B EE/3BCC: 18 CLC EE/3BCD: 6D 16 42 ADC $4216 EE/3BD0: 99 FB 03 STA $03FB,Y EE/3BD3: A6 9B LDX $9B EE/3BD5: 8E 02 42 STX $4202 EE/3BD8: A6 6D LDX $6D EE/3BDA: 8E 03 42 STX $4203 EE/3BDD: A6 6E LDX $6E EE/3BDF: C8 INY EE/3BE0: AD 16 42 LDA $4216 EE/3BE3: 85 6A STA $6A EE/3BE5: 8E 03 42 STX $4203 EE/3BE8: A5 6B LDA $6B EE/3BEA: 18 CLC EE/3BEB: 6D 16 42 ADC $4216 EE/3BEE: 99 BA 05 STA $05BA,Y EE/3BF1: 49 FF FF EOR #$FFFF EE/3BF4: 1A INC EE/3BF5: 99 7A 07 STA $077A,Y EE/3BF8: 80 A2 BRA $3B9C EE/3BFA: 4C 50 3E JMP $3E50 EE/3BFD: A0 00 LDY #$00 EE/3BFF: A5 97 LDA $97 EE/3C01: 8D 04 42 STA $4204 EE/3C04: A6 9A LDX $9A EE/3C06: 8E 06 42 STX $4206 EE/3C09: A5 99 LDA $99 EE/3C0B: 18 CLC EE/3C0C: 65 95 ADC $95 EE/3C0E: 85 99 STA $99 EE/3C10: C8 INY EE/3C11: A6 9D LDX $9D EE/3C13: 8E 02 42 STX $4202 EE/3C16: AD 14 42 LDA $4214 EE/3C19: 85 6D STA $6D EE/3C1B: AA TAX EE/3C1C: 8E 03 42 STX $4203 EE/3C1F: EB XBA EE/3C20: AA TAX EE/3C21: AD 16 42 LDA $4216 EE/3C24: 85 6A STA $6A EE/3C26: 8E 03 42 STX $4203 EE/3C29: A5 6B LDA $6B EE/3C2B: 18 CLC EE/3C2C: 6D 16 42 ADC $4216 EE/3C2F: 49 FF FF EOR #$FFFF EE/3C32: 1A INC EE/3C33: 99 FF 02 STA $02FF,Y EE/3C36: A6 9B LDX $9B EE/3C38: 8E 02 42 STX $4202 EE/3C3B: A6 6D LDX $6D EE/3C3D: 8E 03 42 STX $4203 EE/3C40: A6 6E LDX $6E EE/3C42: C8 INY EE/3C43: AD 16 42 LDA $4216 EE/3C46: 85 6A STA $6A EE/3C48: 8E 03 42 STX $4203 EE/3C4B: A5 6B LDA $6B EE/3C4D: 18 CLC EE/3C4E: 6D 16 42 ADC $4216 EE/3C51: 99 BE 04 STA $04BE,Y EE/3C54: 49 FF FF EOR #$FFFF EE/3C57: 1A INC EE/3C58: 99 7E 06 STA $067E,Y EE/3C5B: C6 66 DEC $66 EE/3C5D: D0 A0 BNE $3BFF EE/3C5F: A0 00 LDY #$00 EE/3C61: C6 68 DEC $68 EE/3C63: 30 5E BMI $3CC3 EE/3C65: A5 97 LDA $97 EE/3C67: 8D 04 42 STA $4204 EE/3C6A: A6 9A LDX $9A EE/3C6C: 8E 06 42 STX $4206 EE/3C6F: A5 99 LDA $99 EE/3C71: 18 CLC EE/3C72: 65 95 ADC $95 EE/3C74: 85 99 STA $99 EE/3C76: C8 INY EE/3C77: A6 9D LDX $9D EE/3C79: 8E 02 42 STX $4202 EE/3C7C: AD 14 42 LDA $4214 EE/3C7F: 85 6D STA $6D EE/3C81: AA TAX EE/3C82: 8E 03 42 STX $4203 EE/3C85: EB XBA EE/3C86: AA TAX EE/3C87: AD 16 42 LDA $4216 EE/3C8A: 85 6A STA $6A EE/3C8C: 8E 03 42 STX $4203 EE/3C8F: A5 6B LDA $6B EE/3C91: 18 CLC EE/3C92: 6D 16 42 ADC $4216 EE/3C95: 49 FF FF EOR #$FFFF EE/3C98: 1A INC EE/3C99: 99 FB 03 STA $03FB,Y EE/3C9C: A6 9B LDX $9B EE/3C9E: 8E 02 42 STX $4202 EE/3CA1: A6 6D LDX $6D EE/3CA3: 8E 03 42 STX $4203 EE/3CA6: A6 6E LDX $6E EE/3CA8: C8 INY EE/3CA9: AD 16 42 LDA $4216 EE/3CAC: 85 6A STA $6A EE/3CAE: 8E 03 42 STX $4203 EE/3CB1: A5 6B LDA $6B EE/3CB3: 18 CLC EE/3CB4: 6D 16 42 ADC $4216 EE/3CB7: 99 BA 05 STA $05BA,Y EE/3CBA: 49 FF FF EOR #$FFFF EE/3CBD: 1A INC EE/3CBE: 99 7A 07 STA $077A,Y EE/3CC1: 80 9E BRA $3C61 EE/3CC3: 4C 50 3E JMP $3E50 EE/3CC6: A0 00 LDY #$00 EE/3CC8: A5 97 LDA $97 EE/3CCA: 8D 04 42 STA $4204 EE/3CCD: A6 9A LDX $9A EE/3CCF: 8E 06 42 STX $4206 EE/3CD2: A5 99 LDA $99 EE/3CD4: 18 CLC EE/3CD5: 65 95 ADC $95 EE/3CD7: 85 99 STA $99 EE/3CD9: C8 INY EE/3CDA: A6 9D LDX $9D EE/3CDC: 8E 02 42 STX $4202 EE/3CDF: AD 14 42 LDA $4214 EE/3CE2: 85 6D STA $6D EE/3CE4: AA TAX EE/3CE5: 8E 03 42 STX $4203 EE/3CE8: EB XBA EE/3CE9: AA TAX EE/3CEA: AD 16 42 LDA $4216 EE/3CED: 85 6A STA $6A EE/3CEF: 8E 03 42 STX $4203 EE/3CF2: A5 6B LDA $6B EE/3CF4: 18 CLC EE/3CF5: 6D 16 42 ADC $4216 EE/3CF8: 49 FF FF EOR #$FFFF EE/3CFB: 1A INC EE/3CFC: 99 FF 02 STA $02FF,Y EE/3CFF: A6 9B LDX $9B EE/3D01: 8E 02 42 STX $4202 EE/3D04: A6 6D LDX $6D EE/3D06: 8E 03 42 STX $4203 EE/3D09: A6 6E LDX $6E EE/3D0B: C8 INY EE/3D0C: AD 16 42 LDA $4216 EE/3D0F: 85 6A STA $6A EE/3D11: 8E 03 42 STX $4203 EE/3D14: A5 6B LDA $6B EE/3D16: 18 CLC EE/3D17: 6D 16 42 ADC $4216 EE/3D1A: 99 7E 06 STA $067E,Y EE/3D1D: 49 FF FF EOR #$FFFF EE/3D20: 1A INC EE/3D21: 99 BE 04 STA $04BE,Y EE/3D24: C6 66 DEC $66 EE/3D26: D0 A0 BNE $3CC8 EE/3D28: A0 00 LDY #$00 EE/3D2A: C6 68 DEC $68 EE/3D2C: 30 5E BMI $3D8C EE/3D2E: A5 97 LDA $97 EE/3D30: 8D 04 42 STA $4204 EE/3D33: A6 9A LDX $9A EE/3D35: 8E 06 42 STX $4206 EE/3D38: A5 99 LDA $99 EE/3D3A: 18 CLC EE/3D3B: 65 95 ADC $95 EE/3D3D: 85 99 STA $99 EE/3D3F: C8 INY EE/3D40: A6 9D LDX $9D EE/3D42: 8E 02 42 STX $4202 EE/3D45: AD 14 42 LDA $4214 EE/3D48: 85 6D STA $6D EE/3D4A: AA TAX EE/3D4B: 8E 03 42 STX $4203 EE/3D4E: EB XBA EE/3D4F: AA TAX EE/3D50: AD 16 42 LDA $4216 EE/3D53: 85 6A STA $6A EE/3D55: 8E 03 42 STX $4203 EE/3D58: A5 6B LDA $6B EE/3D5A: 18 CLC EE/3D5B: 6D 16 42 ADC $4216 EE/3D5E: 49 FF FF EOR #$FFFF EE/3D61: 1A INC EE/3D62: 99 FB 03 STA $03FB,Y EE/3D65: A6 9B LDX $9B EE/3D67: 8E 02 42 STX $4202 EE/3D6A: A6 6D LDX $6D EE/3D6C: 8E 03 42 STX $4203 EE/3D6F: A6 6E LDX $6E EE/3D71: C8 INY EE/3D72: AD 16 42 LDA $4216 EE/3D75: 85 6A STA $6A EE/3D77: 8E 03 42 STX $4203 EE/3D7A: A5 6B LDA $6B EE/3D7C: 18 CLC EE/3D7D: 6D 16 42 ADC $4216 EE/3D80: 99 7A 07 STA $077A,Y EE/3D83: 49 FF FF EOR #$FFFF EE/3D86: 1A INC EE/3D87: 99 BA 05 STA $05BA,Y EE/3D8A: 80 9E BRA $3D2A EE/3D8C: 4C 50 3E JMP $3E50 EE/3D8F: A0 00 LDY #$00 EE/3D91: A5 97 LDA $97 EE/3D93: 8D 04 42 STA $4204 EE/3D96: A6 9A LDX $9A EE/3D98: 8E 06 42 STX $4206 EE/3D9B: A5 99 LDA $99 EE/3D9D: 18 CLC EE/3D9E: 65 95 ADC $95 EE/3DA0: 85 99 STA $99 EE/3DA2: C8 INY EE/3DA3: A6 9D LDX $9D EE/3DA5: 8E 02 42 STX $4202 EE/3DA8: AD 14 42 LDA $4214 EE/3DAB: 85 6D STA $6D EE/3DAD: AA TAX EE/3DAE: 8E 03 42 STX $4203 EE/3DB1: EB XBA EE/3DB2: AA TAX EE/3DB3: AD 16 42 LDA $4216 EE/3DB6: 85 6A STA $6A EE/3DB8: 8E 03 42 STX $4203 EE/3DBB: A5 6B LDA $6B EE/3DBD: 18 CLC EE/3DBE: 6D 16 42 ADC $4216 EE/3DC1: 99 FF 02 STA $02FF,Y EE/3DC4: A6 9B LDX $9B EE/3DC6: 8E 02 42 STX $4202 EE/3DC9: A6 6D LDX $6D EE/3DCB: 8E 03 42 STX $4203 EE/3DCE: A6 6E LDX $6E EE/3DD0: C8 INY EE/3DD1: AD 16 42 LDA $4216 EE/3DD4: 85 6A STA $6A EE/3DD6: 8E 03 42 STX $4203 EE/3DD9: A5 6B LDA $6B EE/3DDB: 18 CLC EE/3DDC: 6D 16 42 ADC $4216 EE/3DDF: 99 7E 06 STA $067E,Y EE/3DE2: 49 FF FF EOR #$FFFF EE/3DE5: 1A INC EE/3DE6: 99 BE 04 STA $04BE,Y EE/3DE9: C6 66 DEC $66 EE/3DEB: D0 A4 BNE $3D91 EE/3DED: A0 00 LDY #$00 EE/3DEF: C6 68 DEC $68 EE/3DF1: 30 5A BMI $3E4D EE/3DF3: A5 97 LDA $97 EE/3DF5: 8D 04 42 STA $4204 EE/3DF8: A6 9A LDX $9A EE/3DFA: 8E 06 42 STX $4206 EE/3DFD: A5 99 LDA $99 EE/3DFF: 18 CLC EE/3E00: 65 95 ADC $95 EE/3E02: 85 99 STA $99 EE/3E04: C8 INY EE/3E05: A6 9D LDX $9D EE/3E07: 8E 02 42 STX $4202 EE/3E0A: AD 14 42 LDA $4214 EE/3E0D: 85 6D STA $6D EE/3E0F: AA TAX EE/3E10: 8E 03 42 STX $4203 EE/3E13: EB XBA EE/3E14: AA TAX EE/3E15: AD 16 42 LDA $4216 EE/3E18: 85 6A STA $6A EE/3E1A: 8E 03 42 STX $4203 EE/3E1D: A5 6B LDA $6B EE/3E1F: 18 CLC EE/3E20: 6D 16 42 ADC $4216 EE/3E23: 99 FB 03 STA $03FB,Y EE/3E26: A6 9B LDX $9B EE/3E28: 8E 02 42 STX $4202 EE/3E2B: A6 6D LDX $6D EE/3E2D: 8E 03 42 STX $4203 EE/3E30: A6 6E LDX $6E EE/3E32: C8 INY EE/3E33: AD 16 42 LDA $4216 EE/3E36: 85 6A STA $6A EE/3E38: 8E 03 42 STX $4203 EE/3E3B: A5 6B LDA $6B EE/3E3D: 18 CLC EE/3E3E: 6D 16 42 ADC $4216 EE/3E41: 99 7A 07 STA $077A,Y EE/3E44: 49 FF FF EOR #$FFFF EE/3E47: 1A INC EE/3E48: 99 BA 05 STA $05BA,Y EE/3E4B: 80 A2 BRA $3DEF EE/3E4D: 4C 50 3E JMP $3E50 EE/3E50: 60 RTS ; [ Update Mode 7 Variables ] EE/3E51: C2 20 REP #$20 EE/3E53: C2 10 REP #$10 EE/3E55: A5 87 LDA $87 EE/3E57: C9 E1 00 CMP #$00E1 EE/3E5A: 90 0D BCC $3E69 EE/3E5C: A9 C0 01 LDA #$01C0 EE/3E5F: 38 SEC EE/3E60: E5 87 SBC $87 EE/3E62: 85 89 STA $89 EE/3E64: A9 E0 00 LDA #$00E0 EE/3E67: 80 02 BRA $3E6B EE/3E69: 85 89 STA $89 EE/3E6B: 0A ASL EE/3E6C: AA TAX EE/3E6D: 18 CLC EE/3E6E: 69 40 01 ADC #$0140 EE/3E71: 85 A0 STA $A0 EE/3E73: 69 F8 00 ADC #$00F8 EE/3E76: 85 A3 STA $A3 EE/3E78: 8A TXA EE/3E79: 69 00 03 ADC #$0300 EE/3E7C: 85 A7 STA $A7 EE/3E7E: 69 F8 00 ADC #$00F8 EE/3E81: 85 AA STA $AA EE/3E83: 8A TXA EE/3E84: 69 C0 04 ADC #$04C0 EE/3E87: 85 AE STA $AE EE/3E89: 69 F8 00 ADC #$00F8 EE/3E8C: 85 B1 STA $B1 EE/3E8E: 8A TXA EE/3E8F: 69 80 06 ADC #$0680 EE/3E92: 85 B5 STA $B5 EE/3E94: 69 F8 00 ADC #$00F8 EE/3E97: 85 B8 STA $B8 EE/3E99: E2 10 SEP #$10 EE/3E9B: A6 89 LDX $89 EE/3E9D: A5 8F LDA $8F EE/3E9F: 38 SEC EE/3EA0: E5 8D SBC $8D EE/3EA2: B0 04 BCS $3EA8 EE/3EA4: 49 FF FF EOR #$FFFF EE/3EA7: 1A INC EE/3EA8: 08 PHP EE/3EA9: 8D 04 42 STA $4204 EE/3EAC: 8E 06 42 STX $4206 EE/3EAF: AD 73 00 LDA $0073 EE/3EB2: C9 B4 00 CMP #$00B4 EE/3EB5: 90 03 BCC $3EBA EE/3EB7: E9 B4 00 SBC #$00B4 EE/3EBA: AA TAX EE/3EBB: BF F1 FE EF LDA $EFFEF1,X EE/3EBF: 85 9B STA $9B EE/3EC1: BF 4B FF EF LDA $EFFF4B,X EE/3EC5: 85 9D STA $9D EE/3EC7: 28 PLP EE/3EC8: AD 14 42 LDA $4214 EE/3ECB: B0 04 BCS $3ED1 EE/3ECD: 49 FF FF EOR #$FFFF EE/3ED0: 1A INC EE/3ED1: 85 95 STA $95 EE/3ED3: A5 89 LDA $89 EE/3ED5: C9 7E 00 CMP #$007E EE/3ED8: B0 06 BCS $3EE0 EE/3EDA: 85 66 STA $66 EE/3EDC: 64 68 STZ $68 EE/3EDE: 80 09 BRA $3EE9 EE/3EE0: A2 7E LDX #$7E EE/3EE2: 86 66 STX $66 EE/3EE4: E9 7E 00 SBC #$007E EE/3EE7: 85 68 STA $68 EE/3EE9: A5 8B LDA $8B EE/3EEB: 85 97 STA $97 EE/3EED: A5 8D LDA $8D EE/3EEF: 85 99 STA $99 EE/3EF1: 9C 05 42 STZ $4205 EE/3EF4: A0 00 LDY #$00 EE/3EF6: A6 66 LDX $66 EE/3EF8: A5 97 LDA $97 EE/3EFA: 8D 04 42 STA $4204 EE/3EFD: A5 9A LDA $9A EE/3EFF: 8D 06 42 STA $4206 EE/3F02: A5 99 LDA $99 EE/3F04: 18 CLC EE/3F05: 65 95 ADC $95 EE/3F07: 85 99 STA $99 EE/3F09: A9 00 00 LDA #$0000 EE/3F0C: 99 C0 04 STA $04C0,Y EE/3F0F: 99 80 06 STA $0680,Y EE/3F12: AD 14 42 LDA $4214 EE/3F15: 99 00 03 STA $0300,Y EE/3F18: 99 40 08 STA $0840,Y EE/3F1B: C8 INY EE/3F1C: C8 INY EE/3F1D: CA DEX EE/3F1E: D0 D8 BNE $3EF8 EE/3F20: A0 00 LDY #$00 EE/3F22: A6 68 LDX $68 EE/3F24: CA DEX EE/3F25: 30 27 BMI $3F4E EE/3F27: A5 97 LDA $97 EE/3F29: 8D 04 42 STA $4204 EE/3F2C: A5 9A LDA $9A EE/3F2E: 8D 06 42 STA $4206 EE/3F31: A5 99 LDA $99 EE/3F33: 18 CLC EE/3F34: 65 95 ADC $95 EE/3F36: 85 99 STA $99 EE/3F38: A9 00 00 LDA #$0000 EE/3F3B: 99 BC 05 STA $05BC,Y EE/3F3E: 99 7C 07 STA $077C,Y EE/3F41: AD 14 42 LDA $4214 EE/3F44: 99 FC 03 STA $03FC,Y EE/3F47: 99 3C 09 STA $093C,Y EE/3F4A: C8 INY EE/3F4B: C8 INY EE/3F4C: 80 D6 BRA $3F24 EE/3F4E: 60 RTS ; [ ] decM7: EE/3F4F: 08 PHP EE/3F50: 8B PHB EE/3F51: E2 20 SEP #$20 EE/3F53: A9 00 LDA #$00 EE/3F55: 48 PHA EE/3F56: AB PLB EE/3F57: C2 20 REP #$20 EE/3F59: A9 50 73 LDA #$7350 EE/3F5C: 8D 81 21 STA $2181 EE/3F5F: 9C 16 21 STZ $2116 EE/3F62: E2 20 SEP #$20 EE/3F64: 9C 83 21 STZ $2183 EE/3F67: A9 80 LDA #$80 EE/3F69: 8D 15 21 STA $2115 EE/3F6C: E2 10 SEP #$10 EE/3F6E: A2 00 LDX #$00 EE/3F70: BF 50 93 7E LDA $7E9350,X EE/3F74: 29 0F AND #$0F EE/3F76: 0A ASL EE/3F77: 0A ASL EE/3F78: 0A ASL EE/3F79: 0A ASL EE/3F7A: 85 58 STA $58 EE/3F7C: DA PHX EE/3F7D: A2 20 LDX #$20 EE/3F7F: AD 80 21 LDA $2180 EE/3F82: A8 TAY EE/3F83: 29 0F AND #$0F EE/3F85: 05 58 ORA $58 EE/3F87: 8D 19 21 STA $2119 EE/3F8A: 98 TYA EE/3F8B: 4A LSR EE/3F8C: 4A LSR EE/3F8D: 4A LSR EE/3F8E: 4A LSR EE/3F8F: 05 58 ORA $58 EE/3F91: 8D 19 21 STA $2119 EE/3F94: CA DEX EE/3F95: D0 E8 BNE $3F7F EE/3F97: FA PLX EE/3F98: BF 50 93 7E LDA $7E9350,X EE/3F9C: 29 F0 AND #$F0 EE/3F9E: 85 58 STA $58 EE/3FA0: DA PHX EE/3FA1: A2 20 LDX #$20 EE/3FA3: AD 80 21 LDA $2180 EE/3FA6: A8 TAY EE/3FA7: 29 0F AND #$0F EE/3FA9: 05 58 ORA $58 EE/3FAB: 8D 19 21 STA $2119 EE/3FAE: 98 TYA EE/3FAF: 4A LSR EE/3FB0: 4A LSR EE/3FB1: 4A LSR EE/3FB2: 4A LSR EE/3FB3: 05 58 ORA $58 EE/3FB5: 8D 19 21 STA $2119 EE/3FB8: CA DEX EE/3FB9: D0 E8 BNE $3FA3 EE/3FBB: FA PLX EE/3FBC: E8 INX EE/3FBD: E0 80 CPX #$80 EE/3FBF: D0 AF BNE $3F70 EE/3FC1: AB PLB EE/3FC2: 28 PLP EE/3FC3: 60 RTS ; [ ] setOAM: EE/3FC4: 8B PHB EE/3FC5: A9 7E LDA #$7E EE/3FC7: 48 PHA EE/3FC8: AB PLB EE/3FC9: A2 00 00 LDX #$0000 EE/3FCC: A0 0F 00 LDY #$000F EE/3FCF: A9 08 LDA #$08 EE/3FD1: 85 58 STA $58 EE/3FD3: 9D 00 6C STA $6C00,X EE/3FD6: 9D 3C 6C STA $6C3C,X EE/3FD9: 9D 78 6C STA $6C78,X EE/3FDC: 9D B4 6C STA $6CB4,X EE/3FDF: 9D F0 6C STA $6CF0,X EE/3FE2: A9 16 LDA #$16 EE/3FE4: 9D 03 6C STA $6C03,X EE/3FE7: 9D 3F 6C STA $6C3F,X EE/3FEA: A9 08 LDA #$08 EE/3FEC: 9D 7B 6C STA $6C7B,X EE/3FEF: 9D B7 6C STA $6CB7,X EE/3FF2: 9D F3 6C STA $6CF3,X EE/3FF5: A5 58 LDA $58 EE/3FF7: 18 CLC EE/3FF8: 69 10 ADC #$10 EE/3FFA: E8 INX EE/3FFB: E8 INX EE/3FFC: E8 INX EE/3FFD: E8 INX EE/3FFE: 88 DEY EE/3FFF: D0 D0 BNE $3FD1 EE/4001: A0 80 00 LDY #$0080 EE/4004: A2 00 00 LDX #$0000 EE/4007: A9 E0 LDA #$E0 EE/4009: 9D 31 6B STA $6B31,X EE/400C: E8 INX EE/400D: E8 INX EE/400E: E8 INX EE/400F: E8 INX EE/4010: 88 DEY EE/4011: D0 F6 BNE $4009 EE/4013: AB PLB EE/4014: 60 RTS ; [ Clear Sprite Data ] setOAM1: EE/4015: E2 20 SEP #$20 EE/4017: C2 10 REP #$10 EE/4019: 8B PHB EE/401A: A9 7E LDA #$7E EE/401C: 48 PHA EE/401D: AB PLB EE/401E: A0 80 00 LDY #$0080 EE/4021: A2 00 00 LDX #$0000 EE/4024: A9 E0 LDA #$E0 EE/4026: 9D 31 6B STA $6B31,X EE/4029: E8 INX EE/402A: E8 INX EE/402B: E8 INX EE/402C: E8 INX EE/402D: 88 DEY EE/402E: D0 F6 BNE $4026 EE/4030: AB PLB EE/4031: 60 RTS ; [ ] hikuutei_oamsub: EE/4032: 08 PHP EE/4033: C2 20 REP #$20 EE/4035: A9 30 6D LDA #$6D30 EE/4038: 8D 81 21 STA $2181 EE/403B: E2 20 SEP #$20 EE/403D: 9C 83 21 STZ $2183 EE/4040: A9 AA LDA #$AA EE/4042: 8D 80 21 STA $2180 EE/4045: 8D 80 21 STA $2180 EE/4048: 8D 80 21 STA $2180 EE/404B: 8D 80 21 STA $2180 EE/404E: 8D 80 21 STA $2180 EE/4051: 9C 80 21 STZ $2180 EE/4054: 9C 80 21 STZ $2180 EE/4057: 9C 80 21 STZ $2180 EE/405A: 9C 80 21 STZ $2180 EE/405D: 9C 80 21 STZ $2180 EE/4060: 9C 80 21 STZ $2180 EE/4063: 9C 80 21 STZ $2180 EE/4066: 9C 80 21 STZ $2180 EE/4069: A2 13 00 LDX #$0013 EE/406C: 8D 80 21 STA $2180 EE/406F: CA DEX EE/4070: D0 FA BNE $406C EE/4072: 28 PLP EE/4073: 60 RTS ; [ Copy Sprite Data to PPU ] chr_oamsub: EE/4074: 08 PHP EE/4075: 8B PHB EE/4076: E2 20 SEP #$20 EE/4078: A9 00 LDA #$00 EE/407A: 48 PHA EE/407B: AB PLB EE/407C: C2 20 REP #$20 EE/407E: A9 30 6D LDA #$6D30 EE/4081: 8D 81 21 STA $2181 EE/4084: E2 20 SEP #$20 EE/4086: 9C 83 21 STZ $2183 EE/4089: A9 AA LDA #$AA EE/408B: 8D 80 21 STA $2180 EE/408E: 8D 80 21 STA $2180 EE/4091: 8D 80 21 STA $2180 EE/4094: 8D 80 21 STA $2180 EE/4097: 8D 80 21 STA $2180 EE/409A: 9C 80 21 STZ $2180 EE/409D: 9C 80 21 STZ $2180 EE/40A0: 9C 80 21 STZ $2180 EE/40A3: 9C 80 21 STZ $2180 EE/40A6: 9C 80 21 STZ $2180 EE/40A9: 9C 80 21 STZ $2180 EE/40AC: 9C 80 21 STZ $2180 EE/40AF: 9C 80 21 STZ $2180 EE/40B2: A2 13 00 LDX #$0013 EE/40B5: 8D 80 21 STA $2180 EE/40B8: CA DEX EE/40B9: D0 FA BNE $40B5 EE/40BB: AB PLB EE/40BC: 28 PLP EE/40BD: 60 RTS ; [ ] chr_oamsub2: EE/40BE: 08 PHP EE/40BF: E2 20 SEP #$20 EE/40C1: 8B PHB EE/40C2: A9 00 LDA #$00 EE/40C4: 48 PHA EE/40C5: AB PLB EE/40C6: C2 20 REP #$20 EE/40C8: A9 30 6D LDA #$6D30 EE/40CB: 8D 81 21 STA $2181 EE/40CE: E2 20 SEP #$20 EE/40D0: 9C 83 21 STZ $2183 EE/40D3: A9 AA LDA #$AA EE/40D5: 8D 80 21 STA $2180 EE/40D8: 8D 80 21 STA $2180 EE/40DB: 8D 80 21 STA $2180 EE/40DE: 8D 80 21 STA $2180 EE/40E1: 8D 80 21 STA $2180 EE/40E4: A2 1B 00 LDX #$001B EE/40E7: 9C 80 21 STZ $2180 EE/40EA: CA DEX EE/40EB: D0 FA BNE $40E7 EE/40ED: AB PLB EE/40EE: 28 PLP EE/40EF: 60 RTS ; [ ] grad_clear: EE/40F0: 08 PHP EE/40F1: 8B PHB EE/40F2: E2 20 SEP #$20 EE/40F4: A9 7E LDA #$7E EE/40F6: 48 PHA EE/40F7: AB PLB EE/40F8: A2 D0 00 LDX #$00D0 EE/40FB: A9 E0 LDA #$E0 EE/40FD: 9D 31 6B STA $6B31,X EE/4100: 9D 6D 6B STA $6B6D,X EE/4103: 9D A9 6B STA $6BA9,X EE/4106: 9D E5 6B STA $6BE5,X EE/4109: 9D 21 6C STA $6C21,X EE/410C: E8 INX EE/410D: E8 INX EE/410E: E8 INX EE/410F: E8 INX EE/4110: E0 0C 01 CPX #$010C EE/4113: D0 E8 BNE $40FD EE/4115: AB PLB EE/4116: 28 PLP EE/4117: 60 RTS ; [ ] objwk_clear: EE/4118: 08 PHP EE/4119: 8B PHB EE/411A: E2 30 SEP #$30 EE/411C: A9 7E LDA #$7E EE/411E: 48 PHA EE/411F: AB PLB EE/4120: A2 00 LDX #$00 EE/4122: 9E D0 B5 STZ $B5D0,X EE/4125: E8 INX EE/4126: E0 80 CPX #$80 EE/4128: D0 F8 BNE $4122 EE/412A: AB PLB EE/412B: 28 PLP EE/412C: 60 RTS ; [ ] radar_on: EE/412D: 8B PHB EE/412E: 08 PHP EE/412F: E2 20 SEP #$20 EE/4131: E2 10 SEP #$10 EE/4133: A9 7E LDA #$7E EE/4135: 48 PHA EE/4136: AB PLB EE/4137: 18 CLC EE/4138: A2 00 LDX #$00 EE/413A: A0 00 LDY #$00 EE/413C: 98 TYA EE/413D: 9D 42 6B STA $6B42,X EE/4140: 69 12 ADC #$12 EE/4142: 29 2E AND #$2E EE/4144: A8 TAY EE/4145: A9 0B LDA #$0B EE/4147: 9D 43 6B STA $6B43,X EE/414A: 8A TXA EE/414B: 69 04 ADC #$04 EE/414D: AA TAX EE/414E: C9 40 CMP #$40 EE/4150: 90 EA BCC $413C EE/4152: 18 CLC EE/4153: A2 00 LDX #$00 EE/4155: A0 B0 LDY #$B0 EE/4157: 98 TYA EE/4158: 9D 40 6B STA $6B40,X EE/415B: 9D 50 6B STA $6B50,X EE/415E: 9D 60 6B STA $6B60,X EE/4161: 9D 70 6B STA $6B70,X EE/4164: 69 10 ADC #$10 EE/4166: A8 TAY EE/4167: 8A TXA EE/4168: 69 04 ADC #$04 EE/416A: AA TAX EE/416B: C9 10 CMP #$10 EE/416D: 90 E8 BCC $4157 EE/416F: 18 CLC EE/4170: A2 00 LDX #$00 EE/4172: A0 9C LDY #$9C EE/4174: 98 TYA EE/4175: 9D 41 6B STA $6B41,X EE/4178: 9D 45 6B STA $6B45,X EE/417B: 9D 49 6B STA $6B49,X EE/417E: 9D 4D 6B STA $6B4D,X EE/4181: 69 10 ADC #$10 EE/4183: A8 TAY EE/4184: 8A TXA EE/4185: 69 10 ADC #$10 EE/4187: AA TAX EE/4188: C9 40 CMP #$40 EE/418A: 90 E8 BCC $4174 EE/418C: 28 PLP EE/418D: AB PLB EE/418E: 60 RTS ; [ ] radar_off: EE/418F: 8B PHB EE/4190: 08 PHP EE/4191: E2 20 SEP #$20 EE/4193: E2 10 SEP #$10 EE/4195: A9 7E LDA #$7E EE/4197: 48 PHA EE/4198: AB PLB EE/4199: 18 CLC EE/419A: A2 00 LDX #$00 EE/419C: A9 E0 LDA #$E0 EE/419E: 9D 41 6B STA $6B41,X EE/41A1: 9D 45 6B STA $6B45,X EE/41A4: 9D 49 6B STA $6B49,X EE/41A7: 9D 4D 6B STA $6B4D,X EE/41AA: 8A TXA EE/41AB: 69 10 ADC #$10 EE/41AD: AA TAX EE/41AE: C9 40 CMP #$40 EE/41B0: 90 EA BCC $419C EE/41B2: 28 PLP EE/41B3: AB PLB EE/41B4: 60 RTS ; [ ] radar_light: EE/41B5: 08 PHP EE/41B6: 8B PHB EE/41B7: E2 20 SEP #$20 EE/41B9: A9 7E LDA #$7E EE/41BB: 48 PHA EE/41BC: AB PLB EE/41BD: C2 30 REP #$30 EE/41BF: A5 34 LDA $34 EE/41C1: 4A LSR EE/41C2: 4A LSR EE/41C3: 4A LSR EE/41C4: 4A LSR EE/41C5: 4A LSR EE/41C6: 4A LSR EE/41C7: 18 CLC EE/41C8: 69 AF 00 ADC #$00AF EE/41CB: 85 6A STA $6A EE/41CD: 8D 30 6B STA $6B30 EE/41D0: A5 38 LDA $38 EE/41D2: 4A LSR EE/41D3: 4A LSR EE/41D4: 4A LSR EE/41D5: 4A LSR EE/41D6: 4A LSR EE/41D7: 4A LSR EE/41D8: 18 CLC EE/41D9: 69 9B 00 ADC #$009B EE/41DC: 85 6D STA $6D EE/41DE: 8D 31 6B STA $6B31 EE/41E1: A9 80 1B LDA #$1B80 EE/41E4: 8D 32 6B STA $6B32 EE/41E7: E2 20 SEP #$20 EE/41E9: A5 20 LDA $20 EE/41EB: C9 03 CMP #$03 EE/41ED: D0 03 BNE $41F2 EE/41EF: 4C 69 42 JMP $4269 EE/41F2: C2 20 REP #$20 EE/41F4: A5 9D LDA $9D EE/41F6: 0A ASL EE/41F7: 0A ASL EE/41F8: EB XBA EE/41F9: 29 03 00 AND #$0003 EE/41FC: 85 58 STA $58 EE/41FE: A5 9B LDA $9B EE/4200: 0A ASL EE/4201: 0A ASL EE/4202: EB XBA EE/4203: 29 03 00 AND #$0003 EE/4206: 85 5A STA $5A EE/4208: A5 73 LDA $73 EE/420A: C9 B4 00 CMP #$00B4 EE/420D: 90 2A BCC $4239 EE/420F: C9 0E 01 CMP #$010E EE/4212: 90 13 BCC $4227 EE/4214: A5 6A LDA $6A EE/4216: 38 SEC EE/4217: 65 5A ADC $5A EE/4219: 8D 34 6B STA $6B34 EE/421C: A5 6D LDA $6D EE/421E: 38 SEC EE/421F: E5 58 SBC $58 EE/4221: 1A INC EE/4222: 8D 35 6B STA $6B35 EE/4225: 80 3C BRA $4263 EE/4227: A5 6A LDA $6A EE/4229: 38 SEC EE/422A: 65 5A ADC $5A EE/422C: 8D 34 6B STA $6B34 EE/422F: A5 6D LDA $6D EE/4231: 38 SEC EE/4232: 65 58 ADC $58 EE/4234: 8D 35 6B STA $6B35 EE/4237: 80 2A BRA $4263 EE/4239: C9 5A 00 CMP #$005A EE/423C: 90 13 BCC $4251 EE/423E: A5 6A LDA $6A EE/4240: 38 SEC EE/4241: E5 5A SBC $5A EE/4243: 1A INC EE/4244: 8D 34 6B STA $6B34 EE/4247: A5 6D LDA $6D EE/4249: 38 SEC EE/424A: 65 58 ADC $58 EE/424C: 8D 35 6B STA $6B35 EE/424F: 80 12 BRA $4263 EE/4251: A5 6A LDA $6A EE/4253: 38 SEC EE/4254: E5 5A SBC $5A EE/4256: 1A INC EE/4257: 8D 34 6B STA $6B34 EE/425A: A5 6D LDA $6D EE/425C: 38 SEC EE/425D: E5 58 SBC $58 EE/425F: 1A INC EE/4260: 8D 35 6B STA $6B35 EE/4263: A9 82 1B LDA #$1B82 EE/4266: 8D 36 6B STA $6B36 EE/4269: AB PLB EE/426A: 28 PLP EE/426B: 60 RTS radar_light_off: EE/426C: 08 PHP EE/426D: C2 20 REP #$20 EE/426F: A9 E0 00 LDA #$00E0 EE/4272: 8F 31 6B 7E STA $7E6B31 EE/4276: 8F 35 6B 7E STA $7E6B35 EE/427A: 28 PLP EE/427B: 60 RTS ; [ ] object2: EE/427C: E2 20 SEP #$20 EE/427E: 8B PHB EE/427F: A9 7E LDA #$7E EE/4281: 48 PHA EE/4282: AB PLB EE/4283: C2 20 REP #$20 EE/4285: C2 10 REP #$10 EE/4287: A9 08 00 LDA #$0008 EE/428A: 85 66 STA $66 EE/428C: A2 50 00 LDX #$0050 EE/428F: 86 5C STX $5C EE/4291: A2 00 00 LDX #$0000 EE/4294: BD D2 B5 LDA $B5D2,X EE/4297: 85 58 STA $58 EE/4299: BD D4 B5 LDA $B5D4,X EE/429C: 85 5A STA $5A EE/429E: BD D0 B5 LDA $B5D0,X EE/42A1: DA PHX EE/42A2: F0 3C BEQ $42E0 EE/42A4: 0A ASL EE/42A5: A8 TAY EE/42A6: B9 D0 93 LDA $93D0,Y EE/42A9: A8 TAY EE/42AA: E2 20 SEP #$20 EE/42AC: B9 D0 95 LDA $95D0,Y EE/42AF: C8 INY EE/42B0: 85 68 STA $68 EE/42B2: A6 5C LDX $5C EE/42B4: B9 D0 95 LDA $95D0,Y EE/42B7: 18 CLC EE/42B8: 65 58 ADC $58 EE/42BA: 9D 30 6B STA $6B30,X EE/42BD: B9 D1 95 LDA $95D1,Y EE/42C0: 18 CLC EE/42C1: 65 5A ADC $5A EE/42C3: 9D 31 6B STA $6B31,X EE/42C6: C2 21 REP #$21 EE/42C8: B9 D2 95 LDA $95D2,Y EE/42CB: 9D 32 6B STA $6B32,X EE/42CE: 98 TYA EE/42CF: 69 04 00 ADC #$0004 EE/42D2: A8 TAY EE/42D3: 8A TXA EE/42D4: 69 04 00 ADC #$0004 EE/42D7: AA TAX EE/42D8: E2 20 SEP #$20 EE/42DA: C6 68 DEC $68 EE/42DC: D0 D6 BNE $42B4 EE/42DE: 86 5C STX $5C EE/42E0: C2 21 REP #$21 EE/42E2: 68 PLA EE/42E3: 69 08 00 ADC #$0008 EE/42E6: AA TAX EE/42E7: C9 40 00 CMP #$0040 EE/42EA: 90 A8 BCC $4294 EE/42EC: A5 5C LDA $5C EE/42EE: C9 D0 00 CMP #$00D0 EE/42F1: B0 0D BCS $4300 EE/42F3: AA TAX EE/42F4: A9 00 E0 LDA #$E000 EE/42F7: 9D 30 6B STA $6B30,X EE/42FA: 8A TXA EE/42FB: 69 04 00 ADC #$0004 EE/42FE: 80 EE BRA $42EE EE/4300: AB PLB EE/4301: 60 RTS ; [ ] object2_chr: EE/4302: E2 20 SEP #$20 EE/4304: 8B PHB EE/4305: A9 7E LDA #$7E EE/4307: 48 PHA EE/4308: AB PLB EE/4309: C2 20 REP #$20 EE/430B: C2 10 REP #$10 EE/430D: A2 50 00 LDX #$0050 EE/4310: 86 5C STX $5C EE/4312: A2 00 00 LDX #$0000 EE/4315: BD D2 B5 LDA $B5D2,X EE/4318: 85 58 STA $58 EE/431A: BD D4 B5 LDA $B5D4,X EE/431D: 85 5A STA $5A EE/431F: BD D0 B5 LDA $B5D0,X EE/4322: DA PHX EE/4323: F0 72 BEQ $4397 EE/4325: 0A ASL EE/4326: A8 TAY EE/4327: B9 D0 93 LDA $93D0,Y EE/432A: A8 TAY EE/432B: E2 20 SEP #$20 EE/432D: B9 D0 95 LDA $95D0,Y EE/4330: C8 INY EE/4331: 85 68 STA $68 EE/4333: A6 5C LDX $5C EE/4335: A5 59 LDA $59 EE/4337: F0 22 BEQ $435B EE/4339: 30 10 BMI $434B EE/433B: B9 D0 95 LDA $95D0,Y EE/433E: 30 03 BMI $4343 EE/4340: 7B TDC EE/4341: 80 2D BRA $4370 EE/4343: 18 CLC EE/4344: 65 58 ADC $58 EE/4346: 30 28 BMI $4370 EE/4348: 7B TDC EE/4349: 80 25 BRA $4370 EE/434B: B9 D0 95 LDA $95D0,Y EE/434E: 10 03 BPL $4353 EE/4350: 7B TDC EE/4351: 80 1D BRA $4370 EE/4353: 18 CLC EE/4354: 65 58 ADC $58 EE/4356: 10 18 BPL $4370 EE/4358: 7B TDC EE/4359: 80 15 BRA $4370 EE/435B: B9 D0 95 LDA $95D0,Y EE/435E: 30 08 BMI $4368 EE/4360: 18 CLC EE/4361: 65 58 ADC $58 EE/4363: 90 0B BCC $4370 EE/4365: 7B TDC EE/4366: 80 08 BRA $4370 EE/4368: 18 CLC EE/4369: 65 58 ADC $58 EE/436B: C5 58 CMP $58 EE/436D: 90 01 BCC $4370 EE/436F: 7B TDC EE/4370: 9D 30 6B STA $6B30,X EE/4373: B9 D1 95 LDA $95D1,Y EE/4376: 18 CLC EE/4377: 65 5A ADC $5A EE/4379: 9D 31 6B STA $6B31,X EE/437C: C2 20 REP #$20 EE/437E: B9 D2 95 LDA $95D2,Y EE/4381: 9D 32 6B STA $6B32,X EE/4384: 98 TYA EE/4385: 18 CLC EE/4386: 69 04 00 ADC #$0004 EE/4389: A8 TAY EE/438A: 8A TXA EE/438B: 69 04 00 ADC #$0004 EE/438E: AA TAX EE/438F: E2 20 SEP #$20 EE/4391: C6 68 DEC $68 EE/4393: D0 A0 BNE $4335 EE/4395: 86 5C STX $5C EE/4397: C2 20 REP #$20 EE/4399: 68 PLA EE/439A: 18 CLC EE/439B: 69 08 00 ADC #$0008 EE/439E: AA TAX EE/439F: C9 50 00 CMP #$0050 EE/43A2: B0 03 BCS $43A7 EE/43A4: 4C 15 43 JMP $4315 EE/43A7: A5 5C LDA $5C EE/43A9: C9 00 02 CMP #$0200 EE/43AC: B0 0D BCS $43BB EE/43AE: AA TAX EE/43AF: A9 00 E0 LDA #$E000 EE/43B2: 9D 30 6B STA $6B30,X EE/43B5: 8A TXA EE/43B6: 69 04 00 ADC #$0004 EE/43B9: 80 EE BRA $43A9 EE/43BB: AB PLB EE/43BC: 60 RTS ; [ Update Character Graphics ] objmov: EE/43BD: 08 PHP EE/43BE: 8B PHB EE/43BF: C2 20 REP #$20 EE/43C1: C2 10 REP #$10 EE/43C3: A2 00 00 LDX #$0000 EE/43C6: B5 CA LDA $CA,X ; character graphics index EE/43C8: F0 07 BEQ $43D1 EE/43CA: DA PHX EE/43CB: 0A ASL EE/43CC: AA TAX EE/43CD: FC DB 43 JSR ($43DB,X) ; character graphics jump table EE/43D0: FA PLX EE/43D1: E8 INX ; next character EE/43D2: E8 INX EE/43D3: E0 08 00 CPX #$0008 EE/43D6: D0 EE BNE $43C6 EE/43D8: AB PLB EE/43D9: 28 PLP EE/43DA: 60 RTS ; character graphic jump table EE/43DB: .DW $0000, $440F, $4606, $468E, $4A04, $4B57, $4BBA, $4C5B EE/43EB: .DW $4CC2, $4D34, $4DE8, $4F16, $4A8D, $4AD4, $4F26, $4F69 EE/43FB: .DW $51C1, $5211, $5354, $5394, $50D6, $53DC, $540D, $552F EE/440B: .DW $5584, $5711 EE/440F: 08 PHP EE/4410: 8B PHB EE/4411: E2 20 SEP #$20 EE/4413: A9 00 LDA #$00 EE/4415: 48 PHA EE/4416: AB PLB EE/4417: C2 20 REP #$20 EE/4419: A5 29 LDA $29 EE/441B: C9 AA 00 CMP #$00AA EE/441E: 10 0A BPL $442A EE/4420: C9 56 FF CMP #$FF56 EE/4423: 30 0A BMI $442F EE/4425: A9 01 00 LDA #$0001 EE/4428: 80 08 BRA $4432 EE/442A: A9 09 00 LDA #$0009 EE/442D: 80 03 BRA $4432 EE/442F: A9 05 00 LDA #$0005 EE/4432: 85 58 STA $58 EE/4434: A5 2D LDA $2D EE/4436: C9 AA 00 CMP #$00AA EE/4439: 10 0A BPL $4445 EE/443B: C9 56 FF CMP #$FF56 EE/443E: 30 0A BMI $444A EE/4440: A9 00 00 LDA #$0000 EE/4443: 80 08 BRA $444D EE/4445: A9 01 00 LDA #$0001 EE/4448: 80 03 BRA $444D EE/444A: A9 02 00 LDA #$0002 EE/444D: 18 CLC EE/444E: 65 58 ADC $58 EE/4450: AA TAX EE/4451: E2 20 SEP #$20 EE/4453: A9 08 LDA #$08 EE/4455: 38 SEC EE/4456: E5 27 SBC $27 EE/4458: 4A LSR EE/4459: 1A INC EE/445A: 8F 54 B6 7E STA $7EB654 EE/445E: AF 52 B6 7E LDA $7EB652 EE/4462: 3A DEC EE/4463: F0 06 BEQ $446B EE/4465: 8F 52 B6 7E STA $7EB652 EE/4469: 80 11 BRA $447C EE/446B: AF 50 B6 7E LDA $7EB650 EE/446F: 3A DEC EE/4470: 8F 50 B6 7E STA $7EB650 EE/4474: AF 54 B6 7E LDA $7EB654 EE/4478: 8F 52 B6 7E STA $7EB652 EE/447C: AF 50 B6 7E LDA $7EB650 EE/4480: 29 01 AND #$01 EE/4482: 18 CLC EE/4483: 7F 66 45 EE ADC $EE4566,X EE/4487: 8F D0 B5 7E STA $7EB5D0 EE/448B: A5 30 LDA $30 EE/448D: 8D 02 42 STA $4202 EE/4490: A9 51 LDA #$51 EE/4492: 8D 03 42 STA $4203 EE/4495: 38 SEC EE/4496: A9 80 LDA #$80 EE/4498: 8F D2 B5 7E STA $7EB5D2 EE/449C: ED 17 42 SBC $4217 EE/449F: 8F D4 B5 7E STA $7EB5D4 EE/44A3: A5 E7 LDA $E7 EE/44A5: 89 20 BIT #$20 EE/44A7: F0 06 BEQ $44AF EE/44A9: A9 F0 LDA #$F0 EE/44AB: 8F D4 B5 7E STA $7EB5D4 EE/44AF: A5 30 LDA $30 EE/44B1: 8D 02 42 STA $4202 EE/44B4: A9 10 LDA #$10 EE/44B6: 8D 03 42 STA $4203 EE/44B9: A5 C2 LDA $C2 ; airship shadow size EE/44BB: 29 0C AND #$0C EE/44BD: 4A LSR EE/44BE: 85 58 STA $58 EE/44C0: AD 17 42 LDA $4217 EE/44C3: 29 FE AND #$FE EE/44C5: 18 CLC EE/44C6: 69 28 ADC #$28 EE/44C8: 38 SEC EE/44C9: E5 58 SBC $58 EE/44CB: 8F 3A 6B 7E STA $7E6B3A EE/44CF: 8F 3E 6B 7E STA $7E6B3E EE/44D3: A9 74 LDA #$74 EE/44D5: 8F 38 6B 7E STA $7E6B38 EE/44D9: A9 7C LDA #$7C EE/44DB: 8F 3C 6B 7E STA $7E6B3C EE/44DF: A5 E7 LDA $E7 EE/44E1: 89 20 BIT #$20 EE/44E3: F0 04 BEQ $44E9 EE/44E5: A9 F0 LDA #$F0 EE/44E7: 80 02 BRA $44EB EE/44E9: A9 C8 LDA #$C8 EE/44EB: 8F 39 6B 7E STA $7E6B39 EE/44EF: 8F 3D 6B 7E STA $7E6B3D EE/44F3: A9 10 LDA #$10 EE/44F5: 8F 3B 6B 7E STA $7E6B3B EE/44F9: A9 50 LDA #$50 EE/44FB: 8F 3F 6B 7E STA $7E6B3F EE/44FF: A5 E8 LDA $E8 EE/4501: 89 02 BIT #$02 EE/4503: D0 08 BNE $450D ; branch if arrows are shown EE/4505: A9 00 LDA #$00 EE/4507: 8F E0 B5 7E STA $7EB5E0 EE/450B: 80 56 BRA $4563 EE/450D: AF 61 B6 7E LDA $7EB661 ; flashing arrows counter ??? EE/4511: 1A INC EE/4512: 8F 61 B6 7E STA $7EB661 EE/4516: C9 04 CMP #$04 EE/4518: 90 15 BCC $452F EE/451A: A9 00 LDA #$00 EE/451C: 8F 61 B6 7E STA $7EB661 EE/4520: AF 60 B6 7E LDA $7EB660 EE/4524: 1A INC EE/4525: C9 04 CMP #$04 EE/4527: 90 02 BCC $452B EE/4529: A9 00 LDA #$00 EE/452B: 8F 60 B6 7E STA $7EB660 EE/452F: AD B6 1E LDA $1EB6 EE/4532: 89 80 BIT #$80 EE/4534: D0 11 BNE $4547 EE/4536: A9 98 LDA #$98 EE/4538: 8F E2 B5 7E STA $7EB5E2 EE/453C: AF 60 B6 7E LDA $7EB660 EE/4540: F0 14 BEQ $4556 EE/4542: 18 CLC EE/4543: 69 3E ADC #$3E EE/4545: 80 0F BRA $4556 EE/4547: A9 60 LDA #$60 EE/4549: 8F E2 B5 7E STA $7EB5E2 EE/454D: AF 60 B6 7E LDA $7EB660 EE/4551: F0 03 BEQ $4556 EE/4553: 18 CLC EE/4554: 69 41 ADC #$41 EE/4556: 8F E0 B5 7E STA $7EB5E0 EE/455A: A9 FF LDA #$FF EE/455C: 38 SEC EE/455D: E5 85 SBC $85 EE/455F: 8F E4 B5 7E STA $7EB5E4 EE/4563: AB PLB EE/4564: 28 PLP EE/4565: 60 RTS EE/4566: .DB $00, $01, $07, $0D, $00, $05, $0B, $11, $00, $03, $09, $0F, $00, $00, $00, $00 EE/4576: 08 PHP EE/4577: 8B PHB EE/4578: E2 20 SEP #$20 EE/457A: A9 00 LDA #$00 EE/457C: 48 PHA EE/457D: AB PLB EE/457E: A2 01 00 LDX #$0001 EE/4581: A9 06 LDA #$06 EE/4583: 8F 54 B6 7E STA $7EB654 EE/4587: AF 52 B6 7E LDA $7EB652 EE/458B: 3A DEC EE/458C: F0 06 BEQ $4594 EE/458E: 8F 52 B6 7E STA $7EB652 EE/4592: 80 11 BRA $45A5 EE/4594: AF 50 B6 7E LDA $7EB650 EE/4598: 3A DEC EE/4599: 8F 50 B6 7E STA $7EB650 EE/459D: AF 54 B6 7E LDA $7EB654 EE/45A1: 8F 52 B6 7E STA $7EB652 EE/45A5: AF 50 B6 7E LDA $7EB650 EE/45A9: 29 01 AND #$01 EE/45AB: 18 CLC EE/45AC: 7F 66 45 EE ADC $EE4566,X EE/45B0: 8F D0 B5 7E STA $7EB5D0 EE/45B4: 4A LSR EE/45B5: 4A LSR EE/45B6: 18 CLC EE/45B7: 69 80 ADC #$80 EE/45B9: 8F D4 B5 7E STA $7EB5D4 EE/45BD: A5 30 LDA $30 EE/45BF: 8D 02 42 STA $4202 EE/45C2: A9 10 LDA #$10 EE/45C4: 8D 03 42 STA $4203 EE/45C7: A5 C2 LDA $C2 ; airship shadow size EE/45C9: 29 0C AND #$0C EE/45CB: 4A LSR EE/45CC: 85 58 STA $58 EE/45CE: AD 17 42 LDA $4217 EE/45D1: 29 FE AND #$FE EE/45D3: 18 CLC EE/45D4: 69 28 ADC #$28 EE/45D6: 38 SEC EE/45D7: E5 58 SBC $58 EE/45D9: 8F 3A 6B 7E STA $7E6B3A EE/45DD: 8F 3E 6B 7E STA $7E6B3E EE/45E1: A9 74 LDA #$74 EE/45E3: 8F 38 6B 7E STA $7E6B38 EE/45E7: A9 7C LDA #$7C EE/45E9: 8F 3C 6B 7E STA $7E6B3C EE/45ED: A9 C8 LDA #$C8 EE/45EF: 8F 39 6B 7E STA $7E6B39 EE/45F3: 8F 3D 6B 7E STA $7E6B3D EE/45F7: A9 10 LDA #$10 EE/45F9: 8F 3B 6B 7E STA $7E6B3B EE/45FD: A9 50 LDA #$50 EE/45FF: 8F 3F 6B 7E STA $7E6B3F EE/4603: AB PLB EE/4604: 28 PLP EE/4605: 60 RTS EE/4606: 08 PHP EE/4607: 8B PHB EE/4608: E2 20 SEP #$20 EE/460A: A9 00 LDA #$00 EE/460C: 48 PHA EE/460D: AB PLB EE/460E: C2 20 REP #$20 EE/4610: A5 29 LDA $29 EE/4612: C9 AA 00 CMP #$00AA EE/4615: 10 0A BPL $4621 EE/4617: C9 56 FF CMP #$FF56 EE/461A: 30 0A BMI $4626 EE/461C: A9 00 00 LDA #$0000 EE/461F: 80 08 BRA $4629 EE/4621: A9 06 00 LDA #$0006 EE/4624: 80 03 BRA $4629 EE/4626: A9 0C 00 LDA #$000C EE/4629: 85 5A STA $5A EE/462B: A5 29 LDA $29 EE/462D: D0 0F BNE $463E EE/462F: A5 26 LDA $26 EE/4631: D0 0E BNE $4641 EE/4633: A9 25 00 LDA #$0025 EE/4636: 8F 50 B6 7E STA $7EB650 EE/463A: E2 20 SEP #$20 EE/463C: 80 2A BRA $4668 EE/463E: A9 00 00 LDA #$0000 EE/4641: 0A ASL EE/4642: 0A ASL EE/4643: 85 58 STA $58 EE/4645: E2 20 SEP #$20 EE/4647: A9 07 LDA #$07 EE/4649: 38 SEC EE/464A: E5 59 SBC $59 EE/464C: 8F 54 B6 7E STA $7EB654 EE/4650: AF 52 B6 7E LDA $7EB652 EE/4654: 3A DEC EE/4655: 30 06 BMI $465D EE/4657: 8F 52 B6 7E STA $7EB652 EE/465B: 80 22 BRA $467F EE/465D: AF 50 B6 7E LDA $7EB650 EE/4661: 1A INC EE/4662: C9 19 CMP #$19 EE/4664: 90 02 BCC $4668 EE/4666: A9 13 LDA #$13 EE/4668: 8F 50 B6 7E STA $7EB650 EE/466C: AF 50 B6 7E LDA $7EB650 EE/4670: 18 CLC EE/4671: 65 5A ADC $5A EE/4673: 8F D0 B5 7E STA $7EB5D0 EE/4677: AF 54 B6 7E LDA $7EB654 EE/467B: 8F 52 B6 7E STA $7EB652 EE/467F: A9 B8 LDA #$B8 EE/4681: 8F D4 B5 7E STA $7EB5D4 EE/4685: A9 80 LDA #$80 EE/4687: 8F D2 B5 7E STA $7EB5D2 EE/468B: AB PLB EE/468C: 28 PLP EE/468D: 60 RTS EE/468E: 08 PHP EE/468F: 8B PHB EE/4690: E2 30 SEP #$30 EE/4692: A5 E7 LDA $E7 EE/4694: 89 08 BIT #$08 EE/4696: D0 05 BNE $469D EE/4698: 20 F3 47 JSR $47F3 EE/469B: 80 25 BRA $46C2 EE/469D: A9 02 LDA #$02 EE/469F: 8F 53 B6 7E STA $7EB653 EE/46A3: AF 52 B6 7E LDA $7EB652 EE/46A7: 18 CLC EE/46A8: 65 F3 ADC $F3 EE/46AA: C9 80 CMP #$80 EE/46AC: 90 0D BCC $46BB EE/46AE: AF 50 B6 7E LDA $7EB650 EE/46B2: 1A INC EE/46B3: 29 03 AND #$03 EE/46B5: 8F 50 B6 7E STA $7EB650 EE/46B9: A9 00 LDA #$00 EE/46BB: 8F 52 B6 7E STA $7EB652 EE/46BF: 20 E3 47 JSR $47E3 EE/46C2: C2 30 REP #$30 EE/46C4: AD 64 1F LDA $1F64 EE/46C7: 29 FF 01 AND #$01FF EE/46CA: F0 07 BEQ $46D3 EE/46CC: A9 1D 00 LDA #$001D EE/46CF: 85 64 STA $64 EE/46D1: 80 02 BRA $46D5 EE/46D3: 64 64 STZ $64 EE/46D5: AD B7 1E LDA $1EB7 EE/46D8: 89 02 00 BIT #$0002 EE/46DB: D0 03 BNE $46E0 EE/46DD: 4C A9 47 JMP $47A9 EE/46E0: AD 63 1F LDA $1F63 EE/46E3: 29 FF 00 AND #$00FF EE/46E6: 0A ASL EE/46E7: 0A ASL EE/46E8: 0A ASL EE/46E9: 0A ASL EE/46EA: 38 SEC EE/46EB: E5 38 SBC $38 EE/46ED: C9 86 FF CMP #$FF86 EE/46F0: 10 03 BPL $46F5 EE/46F2: 4C A9 47 JMP $47A9 EE/46F5: C9 38 00 CMP #$0038 EE/46F8: 30 03 BMI $46FD EE/46FA: 4C A9 47 JMP $47A9 EE/46FD: 18 CLC EE/46FE: 69 7A 00 ADC #$007A EE/4701: AA TAX EE/4702: BF 52 49 EE LDA $EE4952,X EE/4706: 29 FF 00 AND #$00FF EE/4709: 85 58 STA $58 EE/470B: 64 60 STZ $60 EE/470D: AD 62 1F LDA $1F62 EE/4710: 29 FF 00 AND #$00FF EE/4713: 0A ASL EE/4714: 0A ASL EE/4715: 0A ASL EE/4716: 0A ASL EE/4717: 38 SEC EE/4718: E5 34 SBC $34 EE/471A: E9 08 00 SBC #$0008 EE/471D: 10 06 BPL $4725 EE/471F: C6 60 DEC $60 EE/4721: 49 FF FF EOR #$FFFF EE/4724: 1A INC EE/4725: 85 5A STA $5A EE/4727: E2 20 SEP #$20 EE/4729: 8D 02 42 STA $4202 EE/472C: A9 C7 LDA #$C7 EE/472E: 8D 03 42 STA $4203 EE/4731: EA NOP EE/4732: EA NOP EE/4733: EA NOP EE/4734: AE 16 42 LDX $4216 EE/4737: 86 6A STX $6A EE/4739: A5 58 LDA $58 EE/473B: 8D 02 42 STA $4202 EE/473E: A5 6A LDA $6A EE/4740: 8D 03 42 STA $4203 EE/4743: EA NOP EE/4744: EA NOP EE/4745: A5 6B LDA $6B EE/4747: AE 16 42 LDX $4216 EE/474A: 86 6A STX $6A EE/474C: 8D 03 42 STA $4203 EE/474F: C2 21 REP #$21 EE/4751: A5 6B LDA $6B EE/4753: 29 FF 00 AND #$00FF EE/4756: 6D 16 42 ADC $4216 EE/4759: 8D 04 42 STA $4204 EE/475C: E2 20 SEP #$20 EE/475E: A9 EB LDA #$EB EE/4760: 8D 06 42 STA $4206 EE/4763: EA NOP EE/4764: EA NOP EE/4765: EA NOP EE/4766: EA NOP EE/4767: EA NOP EE/4768: EA NOP EE/4769: C2 21 REP #$21 EE/476B: AD 14 42 LDA $4214 EE/476E: 29 FF 00 AND #$00FF EE/4771: 65 5A ADC $5A EE/4773: C9 A0 00 CMP #$00A0 EE/4776: B0 31 BCS $47A9 EE/4778: A6 60 LDX $60 EE/477A: 10 04 BPL $4780 EE/477C: 49 FF FF EOR #$FFFF EE/477F: 1A INC EE/4780: 18 CLC EE/4781: 69 80 00 ADC #$0080 EE/4784: 8F DA B5 7E STA $7EB5DA EE/4788: E2 20 SEP #$20 EE/478A: A5 58 LDA $58 EE/478C: 38 SEC EE/478D: E9 08 SBC #$08 EE/478F: 8F DC B5 7E STA $7EB5DC EE/4793: A5 58 LDA $58 EE/4795: A0 FF FF LDY #$FFFF EE/4798: C8 INY EE/4799: 38 SEC EE/479A: E9 3C SBC #$3C EE/479C: B0 FA BCS $4798 EE/479E: 98 TYA EE/479F: 69 45 ADC #$45 EE/47A1: 65 64 ADC $64 EE/47A3: 8F D8 B5 7E STA $7EB5D8 EE/47A7: 80 0B BRA $47B4 EE/47A9: E2 20 SEP #$20 EE/47AB: 7B TDC EE/47AC: 8F D8 B5 7E STA $7EB5D8 EE/47B0: 8F DB B5 7E STA $7EB5DB EE/47B4: E2 30 SEP #$30 EE/47B6: A9 E6 LDA #$E6 EE/47B8: 48 PHA EE/47B9: AB PLB EE/47BA: A9 00 LDA #$00 EE/47BC: EB XBA EE/47BD: AF FC 11 00 LDA $0011FC EE/47C1: 29 07 AND #$07 EE/47C3: 0A ASL EE/47C4: 0A ASL EE/47C5: 0A ASL EE/47C6: 0A ASL EE/47C7: 0A ASL EE/47C8: A8 TAY EE/47C9: A2 00 LDX #$00 EE/47CB: C2 20 REP #$20 EE/47CD: B9 00 80 LDA $8000,Y EE/47D0: 9F 00 E1 7E STA $7EE100,X EE/47D4: 9F 80 E1 7E STA $7EE180,X EE/47D8: C8 INY EE/47D9: C8 INY EE/47DA: E8 INX EE/47DB: E8 INX EE/47DC: E0 20 CPX #$20 EE/47DE: D0 ED BNE $47CD EE/47E0: AB PLB EE/47E1: 28 PLP EE/47E2: 60 RTS EE/47E3: A5 F6 LDA $F6 EE/47E5: 0A ASL EE/47E6: 0A ASL EE/47E7: 18 CLC EE/47E8: 6F 50 B6 7E ADC $7EB650 EE/47EC: AA TAX EE/47ED: BF 42 48 EE LDA $EE4842,X EE/47F1: 85 F7 STA $F7 EE/47F3: A5 F7 LDA $F7 EE/47F5: AA TAX EE/47F6: BF 52 48 EE LDA $EE4852,X EE/47FA: D0 0E BNE $480A EE/47FC: BF D2 48 EE LDA $EE48D2,X EE/4800: D0 04 BNE $4806 EE/4802: A9 26 LDA #$26 EE/4804: 80 10 BRA $4816 EE/4806: A9 27 LDA #$27 EE/4808: 80 0C BRA $4816 EE/480A: BF D2 48 EE LDA $EE48D2,X EE/480E: D0 04 BNE $4814 EE/4810: A9 28 LDA #$28 EE/4812: 80 02 BRA $4816 EE/4814: A9 29 LDA #$29 EE/4816: 85 60 STA $60 EE/4818: A5 E7 LDA $E7 EE/481A: 89 10 BIT #$10 EE/481C: D0 04 BNE $4822 EE/481E: A5 60 LDA $60 EE/4820: 80 05 BRA $4827 EE/4822: A5 60 LDA $60 EE/4824: 18 CLC EE/4825: 69 04 ADC #$04 EE/4827: 8F D0 B5 7E STA $7EB5D0 EE/482B: A9 80 LDA #$80 EE/482D: 8F D2 B5 7E STA $7EB5D2 EE/4831: A5 E7 LDA $E7 EE/4833: 89 20 BIT #$20 EE/4835: D0 04 BNE $483B EE/4837: A9 80 LDA #$80 EE/4839: 80 02 BRA $483D EE/483B: A9 F8 LDA #$F8 EE/483D: 8F D4 B5 7E STA $7EB5D4 EE/4841: 60 RTS chr_animation: EE/4842: .DB $04, $05, $04, $03, $47, $48, $47, $46, $01, $02, $01, $00, $07, $08, $07, $06 obj_upper_shape_tbl: EE/4852: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/4862: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/4872: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/4882: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/4892: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 EE/48A2: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 EE/48B2: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 EE/48C2: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 obj_lower_shape_tbl: EE/48D2: .DB $00, $00, $01, $00, $00, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/48E2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/48F2: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/4902: .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 EE/4912: .DB $01, $01, $01, $00, $01, $00, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 EE/4922: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 EE/4932: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 EE/4942: .DB $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 EE/4952: .DB $00, $01, $02, $03, $04, $04, $05, $06, $06, $07, $08, $09, $0A, $0A, $0B, $0C EE/4962: .DB $0C, $0D, $0E, $0F, $10, $11, $12, $12, $13, $14, $15, $16, $16, $17, $18, $19 EE/4972: .DB $1A, $1A, $1B, $1C, $1D, $1E, $1F, $20, $21, $22, $22, $23, $24, $25, $26, $27 EE/4982: .DB $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $33, $34, $35, $36, $37 EE/4992: .DB $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, $40, $41, $42, $43, $45, $46, $47, $48 EE/49A2: .DB $49, $4A, $4B, $4C, $4E, $4F, $50, $51, $52, $54, $55, $56, $57, $58, $5A, $5B EE/49B2: .DB $5C, $5E, $5F, $60, $61, $63, $64, $65, $66, $68, $69, $6B, $6C, $6D, $6F, $70 EE/49C2: .DB $71, $73, $74, $76, $77, $78, $7A, $7C, $7D, $7E, $80, $81, $83, $85, $86, $88 EE/49D2: .DB $89, $8B, $8C, $8E, $90, $91, $93, $94, $96, $98, $9A, $9B, $9D, $9F, $A0, $A3 EE/49E2: .DB $A4, $A6, $A8, $A9, $AB, $AD, $AF, $B1, $B3, $B5, $B7, $B8, $BB, $BD, $BE, $C1 EE/49F2: .DB $C3, $C4, $C7, $C9, $CB, $CD, $CF, $D1, $D3, $D6, $D8, $DA, $DC, $DF, $E2, $E5 EE/4A02: .DB $E8, $EB EE/4A04: 08 PHP EE/4A05: E2 20 SEP #$20 EE/4A07: A5 E8 LDA $E8 EE/4A09: 89 02 BIT #$02 EE/4A0B: D0 0C BNE $4A19 EE/4A0D: A9 00 LDA #$00 EE/4A0F: 8F E0 B5 7E STA $7EB5E0 EE/4A13: 8F E8 B5 7E STA $7EB5E8 EE/4A17: 80 72 BRA $4A8B EE/4A19: AF 61 B6 7E LDA $7EB661 EE/4A1D: 1A INC EE/4A1E: 8F 61 B6 7E STA $7EB661 EE/4A22: C9 04 CMP #$04 EE/4A24: 90 15 BCC $4A3B EE/4A26: A9 00 LDA #$00 EE/4A28: 8F 61 B6 7E STA $7EB661 EE/4A2C: AF 60 B6 7E LDA $7EB660 EE/4A30: 1A INC EE/4A31: C9 04 CMP #$04 EE/4A33: 90 02 BCC $4A37 EE/4A35: A9 00 LDA #$00 EE/4A37: 8F 60 B6 7E STA $7EB660 EE/4A3B: AD B6 1E LDA $1EB6 EE/4A3E: 89 80 BIT #$80 EE/4A40: D0 1D BNE $4A5F EE/4A42: A9 60 LDA #$60 EE/4A44: 8F EA B5 7E STA $7EB5EA EE/4A48: A9 6B LDA #$6B EE/4A4A: 8F E8 B5 7E STA $7EB5E8 EE/4A4E: A9 98 LDA #$98 EE/4A50: 8F E2 B5 7E STA $7EB5E2 EE/4A54: AF 60 B6 7E LDA $7EB660 EE/4A58: F0 20 BEQ $4A7A EE/4A5A: 18 CLC EE/4A5B: 69 3E ADC #$3E EE/4A5D: 80 1B BRA $4A7A EE/4A5F: A9 98 LDA #$98 EE/4A61: 8F EA B5 7E STA $7EB5EA EE/4A65: A9 6A LDA #$6A EE/4A67: 8F E8 B5 7E STA $7EB5E8 EE/4A6B: A9 60 LDA #$60 EE/4A6D: 8F E2 B5 7E STA $7EB5E2 EE/4A71: AF 60 B6 7E LDA $7EB660 EE/4A75: F0 03 BEQ $4A7A EE/4A77: 18 CLC EE/4A78: 69 41 ADC #$41 EE/4A7A: 8F E0 B5 7E STA $7EB5E0 EE/4A7E: A9 FF LDA #$FF EE/4A80: 38 SEC EE/4A81: E5 85 SBC $85 EE/4A83: 8F E4 B5 7E STA $7EB5E4 EE/4A87: 8F EC B5 7E STA $7EB5EC EE/4A8B: 28 PLP EE/4A8C: 60 RTS EE/4A8D: 08 PHP EE/4A8E: 8B PHB EE/4A8F: E2 20 SEP #$20 EE/4A91: C2 10 REP #$10 EE/4A93: A9 7E LDA #$7E EE/4A95: 48 PHA EE/4A96: AB PLB EE/4A97: AF 3C B2 EE LDA $EEB23C EE/4A9B: 85 D2 STA $D2 EE/4A9D: AF 3D B2 EE LDA $EEB23D EE/4AA1: 85 D3 STA $D3 EE/4AA3: AF 3E B2 EE LDA $EEB23E EE/4AA7: 85 D4 STA $D4 EE/4AA9: A9 01 LDA #$01 EE/4AAB: 8F 60 B6 7E STA $7EB660 EE/4AAF: A0 00 00 LDY #$0000 EE/4AB2: C2 20 REP #$20 EE/4AB4: B7 D2 LDA [$D2],Y EE/4AB6: 99 40 E1 STA $E140,Y EE/4AB9: C8 INY EE/4ABA: C8 INY EE/4ABB: C0 20 00 CPY #$0020 EE/4ABE: D0 F4 BNE $4AB4 EE/4AC0: E2 20 SEP #$20 EE/4AC2: A9 0D LDA #$0D EE/4AC4: 8F CA 00 00 STA $0000CA EE/4AC8: A9 E0 LDA #$E0 EE/4ACA: 8F 39 6B 7E STA $7E6B39 EE/4ACE: 8F 3D 6B 7E STA $7E6B3D EE/4AD2: 80 02 BRA $4AD6 EE/4AD4: 08 PHP EE/4AD5: 8B PHB EE/4AD6: E2 20 SEP #$20 EE/4AD8: 7B TDC EE/4AD9: 48 PHA EE/4ADA: AB PLB EE/4ADB: C2 20 REP #$20 EE/4ADD: A5 29 LDA $29 EE/4ADF: C9 AA 00 CMP #$00AA EE/4AE2: 10 0A BPL $4AEE EE/4AE4: C9 56 FF CMP #$FF56 EE/4AE7: 30 0A BMI $4AF3 EE/4AE9: A9 4E 00 LDA #$004E EE/4AEC: 80 08 BRA $4AF6 EE/4AEE: A9 50 00 LDA #$0050 EE/4AF1: 80 03 BRA $4AF6 EE/4AF3: A9 52 00 LDA #$0052 EE/4AF6: 85 58 STA $58 EE/4AF8: E2 20 SEP #$20 EE/4AFA: A9 0C LDA #$0C EE/4AFC: 38 SEC EE/4AFD: E5 27 SBC $27 EE/4AFF: 4A LSR EE/4B00: 1A INC EE/4B01: 8F 54 B6 7E STA $7EB654 EE/4B05: AF 52 B6 7E LDA $7EB652 EE/4B09: 3A DEC EE/4B0A: F0 06 BEQ $4B12 EE/4B0C: 8F 52 B6 7E STA $7EB652 EE/4B10: 80 11 BRA $4B23 EE/4B12: AF 50 B6 7E LDA $7EB650 EE/4B16: 3A DEC EE/4B17: 8F 50 B6 7E STA $7EB650 EE/4B1B: AF 54 B6 7E LDA $7EB654 EE/4B1F: 8F 52 B6 7E STA $7EB652 EE/4B23: AF 50 B6 7E LDA $7EB650 EE/4B27: 29 01 AND #$01 EE/4B29: 18 CLC EE/4B2A: 65 58 ADC $58 EE/4B2C: 8F D0 B5 7E STA $7EB5D0 EE/4B30: A5 30 LDA $30 EE/4B32: 8D 02 42 STA $4202 EE/4B35: A9 51 LDA #$51 EE/4B37: 8D 03 42 STA $4203 EE/4B3A: 38 SEC EE/4B3B: A9 80 LDA #$80 EE/4B3D: 8F D2 B5 7E STA $7EB5D2 EE/4B41: ED 17 42 SBC $4217 EE/4B44: 8F D4 B5 7E STA $7EB5D4 EE/4B48: A5 E7 LDA $E7 EE/4B4A: 89 20 BIT #$20 EE/4B4C: F0 06 BEQ $4B54 EE/4B4E: A9 F0 LDA #$F0 EE/4B50: 8F D4 B5 7E STA $7EB5D4 EE/4B54: AB PLB EE/4B55: 28 PLP EE/4B56: 60 RTS EE/4B57: 8B PHB EE/4B58: 08 PHP EE/4B59: E2 30 SEP #$30 EE/4B5B: A9 02 LDA #$02 EE/4B5D: 8F 53 B6 7E STA $7EB653 EE/4B61: AF 52 B6 7E LDA $7EB652 EE/4B65: 18 CLC EE/4B66: 65 F3 ADC $F3 EE/4B68: C9 80 CMP #$80 EE/4B6A: 90 0D BCC $4B79 EE/4B6C: AF 50 B6 7E LDA $7EB650 EE/4B70: 1A INC EE/4B71: 29 01 AND #$01 EE/4B73: 8F 50 B6 7E STA $7EB650 EE/4B77: A9 00 LDA #$00 EE/4B79: 8F 52 B6 7E STA $7EB652 EE/4B7D: A5 F6 LDA $F6 EE/4B7F: 0A ASL EE/4B80: 18 CLC EE/4B81: 6F 50 B6 7E ADC $7EB650 EE/4B85: 69 37 ADC #$37 EE/4B87: 8F D0 B5 7E STA $7EB5D0 EE/4B8B: A9 80 LDA #$80 EE/4B8D: 8F D2 B5 7E STA $7EB5D2 EE/4B91: A9 80 LDA #$80 EE/4B93: 8F D4 B5 7E STA $7EB5D4 EE/4B97: A9 E6 LDA #$E6 EE/4B99: 48 PHA EE/4B9A: AB PLB EE/4B9B: A9 00 LDA #$00 EE/4B9D: EB XBA EE/4B9E: A0 80 LDY #$80 EE/4BA0: A2 00 LDX #$00 EE/4BA2: C2 20 REP #$20 EE/4BA4: B9 00 80 LDA $8000,Y EE/4BA7: 9F 00 E1 7E STA $7EE100,X EE/4BAB: 9F 80 E1 7E STA $7EE180,X EE/4BAF: C8 INY EE/4BB0: C8 INY EE/4BB1: E8 INX EE/4BB2: E8 INX EE/4BB3: E0 20 CPX #$20 EE/4BB5: D0 ED BNE $4BA4 EE/4BB7: 28 PLP EE/4BB8: AB PLB EE/4BB9: 60 RTS EE/4BBA: 08 PHP EE/4BBB: C2 20 REP #$20 EE/4BBD: AD 64 1F LDA $1F64 EE/4BC0: 29 FF 01 AND #$01FF EE/4BC3: F0 0C BEQ $4BD1 EE/4BC5: A9 64 00 LDA #$0064 EE/4BC8: 85 5A STA $5A EE/4BCA: A9 02 00 LDA #$0002 EE/4BCD: 85 5C STA $5C EE/4BCF: 80 0A BRA $4BDB EE/4BD1: A9 47 00 LDA #$0047 EE/4BD4: 85 5A STA $5A EE/4BD6: A9 06 00 LDA #$0006 EE/4BD9: 85 5C STA $5C EE/4BDB: AF 64 B6 7E LDA $7EB664 EE/4BDF: 3A DEC EE/4BE0: D0 21 BNE $4C03 EE/4BE2: AF 66 B6 7E LDA $7EB666 EE/4BE6: F0 03 BEQ $4BEB EE/4BE8: 7B TDC EE/4BE9: 80 02 BRA $4BED EE/4BEB: A5 5C LDA $5C EE/4BED: 8F 66 B6 7E STA $7EB666 EE/4BF1: AF 68 B6 7E LDA $7EB668 EE/4BF5: C9 02 00 CMP #$0002 EE/4BF8: 90 05 BCC $4BFF EE/4BFA: 3A DEC EE/4BFB: 8F 68 B6 7E STA $7EB668 EE/4BFF: AF 68 B6 7E LDA $7EB668 EE/4C03: 8F 64 B6 7E STA $7EB664 EE/4C07: AF 68 B6 7E LDA $7EB668 EE/4C0B: C9 02 00 CMP #$0002 EE/4C0E: 90 06 BCC $4C16 EE/4C10: AF 60 B6 7E LDA $7EB660 EE/4C14: 80 2C BRA $4C42 EE/4C16: AF 63 B6 7E LDA $7EB663 EE/4C1A: 29 FF 00 AND #$00FF EE/4C1D: 85 58 STA $58 EE/4C1F: AF 62 B6 7E LDA $7EB662 EE/4C23: 18 CLC EE/4C24: 69 20 00 ADC #$0020 EE/4C27: 8F 62 B6 7E STA $7EB662 EE/4C2B: AF 60 B6 7E LDA $7EB660 EE/4C2F: 38 SEC EE/4C30: E5 58 SBC $58 EE/4C32: 8F 60 B6 7E STA $7EB660 EE/4C36: C9 F8 FF CMP #$FFF8 EE/4C39: 10 07 BPL $4C42 EE/4C3B: A9 F8 FF LDA #$FFF8 EE/4C3E: 8F 60 B6 7E STA $7EB660 EE/4C42: E2 20 SEP #$20 EE/4C44: 8F D4 B5 7E STA $7EB5D4 EE/4C48: A9 75 LDA #$75 EE/4C4A: 8F D2 B5 7E STA $7EB5D2 EE/4C4E: A5 5A LDA $5A EE/4C50: 18 CLC EE/4C51: 6F 66 B6 7E ADC $7EB666 EE/4C55: 8F D0 B5 7E STA $7EB5D0 EE/4C59: 28 PLP EE/4C5A: 60 RTS EE/4C5B: 08 PHP EE/4C5C: C2 20 REP #$20 EE/4C5E: AF 64 B6 7E LDA $7EB664 EE/4C62: 3A DEC EE/4C63: D0 13 BNE $4C78 EE/4C65: AF 66 B6 7E LDA $7EB666 EE/4C69: F0 03 BEQ $4C6E EE/4C6B: 7B TDC EE/4C6C: 80 03 BRA $4C71 EE/4C6E: A9 01 00 LDA #$0001 EE/4C71: 8F 66 B6 7E STA $7EB666 EE/4C75: A9 05 00 LDA #$0005 EE/4C78: 8F 64 B6 7E STA $7EB664 EE/4C7C: AF 62 B6 7E LDA $7EB662 EE/4C80: 38 SEC EE/4C81: E9 20 00 SBC #$0020 EE/4C84: 8F 62 B6 7E STA $7EB662 EE/4C88: AF 63 B6 7E LDA $7EB663 EE/4C8C: 29 FF 00 AND #$00FF EE/4C8F: 85 58 STA $58 EE/4C91: AF 60 B6 7E LDA $7EB660 EE/4C95: 18 CLC EE/4C96: 65 58 ADC $58 EE/4C98: 8F 60 B6 7E STA $7EB660 EE/4C9C: C9 80 00 CMP #$0080 EE/4C9F: 30 08 BMI $4CA9 EE/4CA1: A9 01 00 LDA #$0001 EE/4CA4: 85 CA STA $CA EE/4CA6: A9 80 00 LDA #$0080 EE/4CA9: E2 20 SEP #$20 EE/4CAB: 8F D4 B5 7E STA $7EB5D4 EE/4CAF: A9 80 LDA #$80 EE/4CB1: 8F D2 B5 7E STA $7EB5D2 EE/4CB5: A9 01 LDA #$01 EE/4CB7: 18 CLC EE/4CB8: 6F 66 B6 7E ADC $7EB666 EE/4CBC: 8F D0 B5 7E STA $7EB5D0 EE/4CC0: 28 PLP EE/4CC1: 60 RTS EE/4CC2: 08 PHP EE/4CC3: C2 20 REP #$20 EE/4CC5: AF 64 B6 7E LDA $7EB664 EE/4CC9: 3A DEC EE/4CCA: D0 13 BNE $4CDF EE/4CCC: AF 66 B6 7E LDA $7EB666 EE/4CD0: F0 03 BEQ $4CD5 EE/4CD2: 7B TDC EE/4CD3: 80 03 BRA $4CD8 EE/4CD5: A9 01 00 LDA #$0001 EE/4CD8: 8F 66 B6 7E STA $7EB666 EE/4CDC: A9 05 00 LDA #$0005 EE/4CDF: 8F 64 B6 7E STA $7EB664 EE/4CE3: AF 63 B6 7E LDA $7EB663 EE/4CE7: 29 FF 00 AND #$00FF EE/4CEA: 85 58 STA $58 EE/4CEC: AF 62 B6 7E LDA $7EB662 EE/4CF0: 18 CLC EE/4CF1: 69 20 00 ADC #$0020 EE/4CF4: 8F 62 B6 7E STA $7EB662 EE/4CF8: AF 60 B6 7E LDA $7EB660 EE/4CFC: 38 SEC EE/4CFD: E5 58 SBC $58 EE/4CFF: 8F 60 B6 7E STA $7EB660 EE/4D03: C9 F8 FF CMP #$FFF8 EE/4D06: 10 13 BPL $4D1B EE/4D08: A9 F8 FF LDA #$FFF8 EE/4D0B: 8F 60 B6 7E STA $7EB660 EE/4D0F: A9 09 00 LDA #$0009 EE/4D12: 85 CA STA $CA EE/4D14: A9 40 06 LDA #$0640 EE/4D17: 8F 62 B6 7E STA $7EB662 EE/4D1B: E2 20 SEP #$20 EE/4D1D: 8F D4 B5 7E STA $7EB5D4 EE/4D21: A9 80 LDA #$80 EE/4D23: 8F D2 B5 7E STA $7EB5D2 EE/4D27: A9 01 LDA #$01 EE/4D29: 18 CLC EE/4D2A: 6F 66 B6 7E ADC $7EB666 EE/4D2E: 8F D0 B5 7E STA $7EB5D0 EE/4D32: 28 PLP EE/4D33: 60 RTS EE/4D34: 08 PHP EE/4D35: C2 20 REP #$20 EE/4D37: AD 64 1F LDA $1F64 EE/4D3A: 29 FF 01 AND #$01FF EE/4D3D: F0 0C BEQ $4D4B EE/4D3F: A9 64 00 LDA #$0064 EE/4D42: 85 5A STA $5A EE/4D44: A9 02 00 LDA #$0002 EE/4D47: 85 5C STA $5C EE/4D49: 80 0A BRA $4D55 EE/4D4B: A9 47 00 LDA #$0047 EE/4D4E: 85 5A STA $5A EE/4D50: A9 06 00 LDA #$0006 EE/4D53: 85 5C STA $5C EE/4D55: AF 64 B6 7E LDA $7EB664 EE/4D59: 3A DEC EE/4D5A: D0 2D BNE $4D89 EE/4D5C: AF 66 B6 7E LDA $7EB666 EE/4D60: F0 03 BEQ $4D65 EE/4D62: 7B TDC EE/4D63: 80 0E BRA $4D73 EE/4D65: AF 68 B6 7E LDA $7EB668 EE/4D69: C9 0F 00 CMP #$000F EE/4D6C: B0 04 BCS $4D72 EE/4D6E: A5 5C LDA $5C EE/4D70: 80 01 BRA $4D73 EE/4D72: 7B TDC EE/4D73: 8F 66 B6 7E STA $7EB666 EE/4D77: AF 68 B6 7E LDA $7EB668 EE/4D7B: C9 13 00 CMP #$0013 EE/4D7E: B0 05 BCS $4D85 EE/4D80: 1A INC EE/4D81: 8F 68 B6 7E STA $7EB668 EE/4D85: AF 68 B6 7E LDA $7EB668 EE/4D89: 8F 64 B6 7E STA $7EB664 EE/4D8D: AF 62 B6 7E LDA $7EB662 EE/4D91: C9 10 00 CMP #$0010 EE/4D94: 10 06 BPL $4D9C EE/4D96: AF 60 B6 7E LDA $7EB660 EE/4D9A: 80 21 BRA $4DBD EE/4D9C: AF 62 B6 7E LDA $7EB662 EE/4DA0: 38 SEC EE/4DA1: E9 08 00 SBC #$0008 EE/4DA4: 8F 62 B6 7E STA $7EB662 EE/4DA8: AF 62 B6 7E LDA $7EB662 EE/4DAC: 18 CLC EE/4DAD: 6F 60 B6 7E ADC $7EB660 EE/4DB1: 8F 60 B6 7E STA $7EB660 EE/4DB5: C9 00 78 CMP #$7800 EE/4DB8: 30 03 BMI $4DBD EE/4DBA: A9 00 78 LDA #$7800 EE/4DBD: E2 20 SEP #$20 EE/4DBF: EB XBA EE/4DC0: 8F D4 B5 7E STA $7EB5D4 EE/4DC4: A9 75 LDA #$75 EE/4DC6: 8F D2 B5 7E STA $7EB5D2 EE/4DCA: A5 5A LDA $5A EE/4DCC: 18 CLC EE/4DCD: 6F 66 B6 7E ADC $7EB666 EE/4DD1: 8F D0 B5 7E STA $7EB5D0 EE/4DD5: AF 68 B6 7E LDA $7EB668 EE/4DD9: C9 11 CMP #$11 EE/4DDB: D0 04 BNE $4DE1 EE/4DDD: A9 03 LDA #$03 EE/4DDF: 85 CA STA $CA EE/4DE1: 28 PLP EE/4DE2: 60 RTS EE/4DE3: .DB $49, $4A, $49, $4B, $4C EE/4DE8: 08 PHP EE/4DE9: 8B PHB EE/4DEA: E2 20 SEP #$20 EE/4DEC: AF 6C B6 7E LDA $7EB66C EE/4DF0: C9 28 CMP #$28 EE/4DF2: D0 0F BNE $4E03 EE/4DF4: A9 80 LDA #$80 EE/4DF6: 8D 42 21 STA $2142 EE/4DF9: A9 D9 LDA #$D9 EE/4DFB: 8D 41 21 STA $2141 EE/4DFE: A9 18 LDA #$18 EE/4E00: 8D 40 21 STA $2140 EE/4E03: C2 20 REP #$20 EE/4E05: AF 6C B6 7E LDA $7EB66C EE/4E09: C9 20 00 CMP #$0020 EE/4E0C: 90 3A BCC $4E48 EE/4E0E: C9 30 00 CMP #$0030 EE/4E11: B0 09 BCS $4E1C EE/4E13: A9 04 00 LDA #$0004 EE/4E16: 8F 62 B6 7E STA $7EB662 EE/4E1A: 80 2C BRA $4E48 EE/4E1C: AF 62 B6 7E LDA $7EB662 EE/4E20: 1A INC EE/4E21: 29 03 00 AND #$0003 EE/4E24: 8F 62 B6 7E STA $7EB662 EE/4E28: AF 6E B6 7E LDA $7EB66E EE/4E2C: 18 CLC EE/4E2D: 69 60 00 ADC #$0060 EE/4E30: 8F 6E B6 7E STA $7EB66E EE/4E34: AF 60 B6 7E LDA $7EB660 EE/4E38: 1A INC EE/4E39: 1A INC EE/4E3A: 8F 60 B6 7E STA $7EB660 EE/4E3E: C9 F0 00 CMP #$00F0 EE/4E41: 30 05 BMI $4E48 EE/4E43: A9 0B 00 LDA #$000B EE/4E46: 85 CA STA $CA EE/4E48: AF 68 B6 7E LDA $7EB668 EE/4E4C: C9 B8 00 CMP #$00B8 EE/4E4F: B0 1B BCS $4E6C EE/4E51: 18 CLC EE/4E52: 6F 66 B6 7E ADC $7EB666 EE/4E56: 8F 68 B6 7E STA $7EB668 EE/4E5A: AF 66 B6 7E LDA $7EB666 EE/4E5E: 1A INC EE/4E5F: 8F 66 B6 7E STA $7EB666 EE/4E63: AF 6A B6 7E LDA $7EB66A EE/4E67: 3A DEC EE/4E68: 8F 6A B6 7E STA $7EB66A EE/4E6C: AF 6C B6 7E LDA $7EB66C EE/4E70: C9 09 00 CMP #$0009 EE/4E73: B0 05 BCS $4E7A EE/4E75: A9 0F 00 LDA #$000F EE/4E78: 80 0D BRA $4E87 EE/4E7A: C9 10 00 CMP #$0010 EE/4E7D: B0 05 BCS $4E84 EE/4E7F: A9 09 00 LDA #$0009 EE/4E82: 80 03 BRA $4E87 EE/4E84: A9 01 00 LDA #$0001 EE/4E87: E2 20 SEP #$20 EE/4E89: 85 F7 STA $F7 EE/4E8B: AF 60 B6 7E LDA $7EB660 EE/4E8F: 8F D4 B5 7E STA $7EB5D4 EE/4E93: AF 6F B6 7E LDA $7EB66F EE/4E97: 8F D2 B5 7E STA $7EB5D2 EE/4E9B: AF 62 B6 7E LDA $7EB662 EE/4E9F: AA TAX EE/4EA0: BF E3 4D EE LDA $EE4DE3,X EE/4EA4: 8F D0 B5 7E STA $7EB5D0 EE/4EA8: AF 6A B6 7E LDA $7EB66A EE/4EAC: 8F DA B5 7E STA $7EB5DA EE/4EB0: AF 68 B6 7E LDA $7EB668 EE/4EB4: 8F DC B5 7E STA $7EB5DC EE/4EB8: 7B TDC EE/4EB9: A5 F7 LDA $F7 EE/4EBB: AA TAX EE/4EBC: BF 52 48 EE LDA $EE4852,X EE/4EC0: D0 0E BNE $4ED0 EE/4EC2: BF D2 48 EE LDA $EE48D2,X EE/4EC6: D0 04 BNE $4ECC EE/4EC8: A9 26 LDA #$26 EE/4ECA: 80 10 BRA $4EDC EE/4ECC: A9 27 LDA #$27 EE/4ECE: 80 0C BRA $4EDC EE/4ED0: BF D2 48 EE LDA $EE48D2,X EE/4ED4: D0 04 BNE $4EDA EE/4ED6: A9 28 LDA #$28 EE/4ED8: 80 02 BRA $4EDC EE/4EDA: A9 29 LDA #$29 EE/4EDC: 8F D8 B5 7E STA $7EB5D8 EE/4EE0: C2 20 REP #$20 EE/4EE2: AF 6C B6 7E LDA $7EB66C EE/4EE6: 1A INC EE/4EE7: 8F 6C B6 7E STA $7EB66C EE/4EEB: E2 30 SEP #$30 EE/4EED: A9 E6 LDA #$E6 EE/4EEF: 48 PHA EE/4EF0: AB PLB EE/4EF1: A9 00 LDA #$00 EE/4EF3: EB XBA EE/4EF4: AF FC 11 00 LDA $0011FC EE/4EF8: 29 07 AND #$07 EE/4EFA: 0A ASL EE/4EFB: 0A ASL EE/4EFC: 0A ASL EE/4EFD: 0A ASL EE/4EFE: 0A ASL EE/4EFF: A8 TAY EE/4F00: A2 00 LDX #$00 EE/4F02: C2 20 REP #$20 EE/4F04: B9 00 80 LDA $8000,Y EE/4F07: 9F 00 E1 7E STA $7EE100,X EE/4F0B: C8 INY EE/4F0C: C8 INY EE/4F0D: E8 INX EE/4F0E: E8 INX EE/4F0F: E0 20 CPX #$20 EE/4F11: D0 F1 BNE $4F04 EE/4F13: AB PLB EE/4F14: 28 PLP EE/4F15: 60 RTS EE/4F16: 08 PHP EE/4F17: C2 20 REP #$20 EE/4F19: A9 00 00 LDA #$0000 EE/4F1C: 8F D0 B5 7E STA $7EB5D0 EE/4F20: 8F D8 B5 7E STA $7EB5D8 EE/4F24: 28 PLP EE/4F25: 60 RTS EE/4F26: 08 PHP EE/4F27: 8B PHB EE/4F28: E2 20 SEP #$20 EE/4F2A: C2 10 REP #$10 EE/4F2C: A9 7E LDA #$7E EE/4F2E: 48 PHA EE/4F2F: AB PLB EE/4F30: A9 E0 LDA #$E0 EE/4F32: 8D 39 6B STA $6B39 EE/4F35: 8D 3D 6B STA $6B3D EE/4F38: 20 BE 40 JSR $40BE EE/4F3B: A2 00 80 LDX #$8000 EE/4F3E: 8E 50 B6 STX $B650 EE/4F41: A2 00 A7 LDX #$A700 EE/4F44: 8E 52 B6 STX $B652 EE/4F47: A2 00 01 LDX #$0100 EE/4F4A: 8E 5A B6 STX $B65A EE/4F4D: A2 00 00 LDX #$0000 EE/4F50: 8E 5C B6 STX $B65C EE/4F53: A2 00 00 LDX #$0000 EE/4F56: 7B TDC EE/4F57: 9D 60 B6 STA $B660,X EE/4F5A: 8A TXA EE/4F5B: 18 CLC EE/4F5C: 69 08 ADC #$08 EE/4F5E: AA TAX EE/4F5F: C9 80 CMP #$80 EE/4F61: D0 F3 BNE $4F56 EE/4F63: A9 0F LDA #$0F EE/4F65: 85 CA STA $CA EE/4F67: 80 02 BRA $4F6B EE/4F69: 08 PHP EE/4F6A: 8B PHB EE/4F6B: E2 20 SEP #$20 EE/4F6D: A9 7E LDA #$7E EE/4F6F: 48 PHA EE/4F70: AB PLB EE/4F71: AD 5B B6 LDA $B65B EE/4F74: 3A DEC EE/4F75: D0 0C BNE $4F83 EE/4F77: AD 5A B6 LDA $B65A EE/4F7A: 1A INC EE/4F7B: 1A INC EE/4F7C: 29 02 AND #$02 EE/4F7E: 8D 5A B6 STA $B65A EE/4F81: A9 04 LDA #$04 EE/4F83: 8D 5B B6 STA $B65B EE/4F86: AD 51 B6 LDA $B651 EE/4F89: 8D 02 B6 STA $B602 EE/4F8C: AD 53 B6 LDA $B653 EE/4F8F: 8D 04 B6 STA $B604 EE/4F92: A9 64 LDA #$64 EE/4F94: 18 CLC EE/4F95: 6D 5A B6 ADC $B65A EE/4F98: 8D 00 B6 STA $B600 EE/4F9B: C2 21 REP #$21 EE/4F9D: AD 52 B6 LDA $B652 EE/4FA0: E9 1F 00 SBC #$001F EE/4FA3: C9 00 78 CMP #$7800 EE/4FA6: B0 03 BCS $4FAB EE/4FA8: A9 00 78 LDA #$7800 EE/4FAB: 8D 52 B6 STA $B652 EE/4FAE: E2 21 SEP #$21 EE/4FB0: EB XBA EE/4FB1: E9 90 SBC #$90 EE/4FB3: B0 03 BCS $4FB8 EE/4FB5: 7B TDC EE/4FB6: 80 06 BRA $4FBE EE/4FB8: 4A LSR EE/4FB9: 4A LSR EE/4FBA: 4A LSR EE/4FBB: 18 CLC EE/4FBC: 69 67 ADC #$67 EE/4FBE: 8D 54 B6 STA $B654 EE/4FC1: AD 53 B6 LDA $B653 EE/4FC4: 38 SEC EE/4FC5: E9 78 SBC #$78 EE/4FC7: 29 F8 AND #$F8 EE/4FC9: 4A LSR EE/4FCA: 85 58 STA $58 EE/4FCC: 4A LSR EE/4FCD: 18 CLC EE/4FCE: 65 58 ADC $58 EE/4FD0: 8D 56 B6 STA $B656 EE/4FD3: A9 A7 LDA #$A7 EE/4FD5: 38 SEC EE/4FD6: ED 53 B6 SBC $B653 EE/4FD9: E9 14 SBC #$14 EE/4FDB: 8D 58 B6 STA $B658 EE/4FDE: AD 51 B6 LDA $B651 EE/4FE1: 8D FA B5 STA $B5FA EE/4FE4: A9 90 LDA #$90 EE/4FE6: 8D FC B5 STA $B5FC EE/4FE9: AD 54 B6 LDA $B654 EE/4FEC: 8D F8 B5 STA $B5F8 EE/4FEF: A0 00 00 LDY #$0000 EE/4FF2: AE 5C B6 LDX $B65C EE/4FF5: E2 20 SEP #$20 EE/4FF7: 7B TDC EE/4FF8: BD 60 B6 LDA $B660,X EE/4FFB: F0 1C BEQ $5019 EE/4FFD: BD 62 B6 LDA $B662,X EE/5000: 3A DEC EE/5001: D0 10 BNE $5013 EE/5003: BD 60 B6 LDA $B660,X EE/5006: 1A INC EE/5007: C9 07 CMP #$07 EE/5009: 90 02 BCC $500D EE/500B: A9 00 LDA #$00 EE/500D: 9D 60 B6 STA $B660,X EE/5010: BD 61 B6 LDA $B661,X EE/5013: 9D 62 B6 STA $B662,X EE/5016: BD 60 B6 LDA $B660,X EE/5019: DA PHX EE/501A: 18 CLC EE/501B: 6D 56 B6 ADC $B656 EE/501E: AA TAX EE/501F: BF 96 51 EE LDA $EE5196,X EE/5023: FA PLX EE/5024: 99 D0 B5 STA $B5D0,Y EE/5027: BD 63 B6 LDA $B663,X EE/502A: 99 D4 B5 STA $B5D4,Y EE/502D: C2 21 REP #$21 EE/502F: BD 64 B6 LDA $B664,X EE/5032: 6D 66 B6 ADC $B666 EE/5035: 9D 64 B6 STA $B664,X EE/5038: 99 D2 B5 STA $B5D2,Y EE/503B: 8A TXA EE/503C: 18 CLC EE/503D: 69 08 00 ADC #$0008 EE/5040: AA TAX EE/5041: 98 TYA EE/5042: 18 CLC EE/5043: 69 08 00 ADC #$0008 EE/5046: A8 TAY EE/5047: C9 28 00 CMP #$0028 EE/504A: D0 A9 BNE $4FF5 EE/504C: AC 5C B6 LDY $B65C EE/504F: E2 20 SEP #$20 EE/5051: AF 6D 1F 00 LDA $001F6D EE/5055: 1A INC EE/5056: 8F 6D 1F 00 STA $001F6D EE/505A: AA TAX EE/505B: 86 5A STX $5A EE/505D: B9 60 B6 LDA $B660,Y EE/5060: F0 0B BEQ $506D EE/5062: 98 TYA EE/5063: 18 CLC EE/5064: 69 08 ADC #$08 EE/5066: A8 TAY EE/5067: C9 28 CMP #$28 EE/5069: D0 F2 BNE $505D EE/506B: 80 40 BRA $50AD EE/506D: E6 5A INC $5A EE/506F: A6 5A LDX $5A EE/5071: BF 00 FD C0 LDA $C0FD00,X EE/5075: 29 03 AND #$03 EE/5077: 18 CLC EE/5078: 69 06 ADC #$06 EE/507A: 8D 66 B6 STA $B666 EE/507D: E6 5A INC $5A EE/507F: A6 5A LDX $5A EE/5081: BF 00 FD C0 LDA $C0FD00,X EE/5085: 29 01 AND #$01 EE/5087: 1A INC EE/5088: 99 61 B6 STA $B661,Y EE/508B: 99 62 B6 STA $B662,Y EE/508E: E6 5A INC $5A EE/5090: A6 5A LDX $5A EE/5092: BF 00 FD C0 LDA $C0FD00,X EE/5096: 29 07 AND #$07 EE/5098: 18 CLC EE/5099: 69 8C ADC #$8C EE/509B: 99 63 B6 STA $B663,Y EE/509E: AD 51 B6 LDA $B651 EE/50A1: 18 CLC EE/50A2: 6D 58 B6 ADC $B658 EE/50A5: 99 64 B6 STA $B664,Y EE/50A8: A9 01 LDA #$01 EE/50AA: 99 60 B6 STA $B660,Y EE/50AD: A9 28 LDA #$28 EE/50AF: 38 SEC EE/50B0: ED 5C B6 SBC $B65C EE/50B3: 8D 5C B6 STA $B65C EE/50B6: C2 20 REP #$20 EE/50B8: AD 52 B6 LDA $B652 EE/50BB: C9 00 78 CMP #$7800 EE/50BE: D0 13 BNE $50D3 EE/50C0: 9C 5C B6 STZ $B65C EE/50C3: 9C 54 B6 STZ $B654 EE/50C6: 9C 56 B6 STZ $B656 EE/50C9: 9C 58 B6 STZ $B658 EE/50CC: A9 14 00 LDA #$0014 EE/50CF: 8F CA 00 00 STA $0000CA EE/50D3: AB PLB EE/50D4: 28 PLP EE/50D5: 60 RTS EE/50D6: 08 PHP EE/50D7: 8B PHB EE/50D8: E2 20 SEP #$20 EE/50DA: A9 7E LDA #$7E EE/50DC: 48 PHA EE/50DD: AB PLB EE/50DE: C2 20 REP #$20 EE/50E0: 7B TDC EE/50E1: AD 5C B6 LDA $B65C EE/50E4: C9 B4 00 CMP #$00B4 EE/50E7: B0 05 BCS $50EE EE/50E9: 1A INC EE/50EA: 1A INC EE/50EB: 8D 5C B6 STA $B65C EE/50EE: AA TAX EE/50EF: E2 20 SEP #$20 EE/50F1: BF F1 FE EF LDA $EFFEF1,X EE/50F5: 8F 02 42 00 STA $004202 EE/50F9: A9 C0 LDA #$C0 EE/50FB: 8F 03 42 00 STA $004203 EE/50FF: EA NOP EE/5100: EA NOP EE/5101: EA NOP EE/5102: AF 17 42 00 LDA $004217 EE/5106: 85 58 STA $58 EE/5108: 64 59 STZ $59 EE/510A: C2 21 REP #$21 EE/510C: AD 50 B6 LDA $B650 EE/510F: 65 58 ADC $58 EE/5111: 8D 50 B6 STA $B650 EE/5114: AD 58 B6 LDA $B658 EE/5117: 69 00 00 ADC #$0000 EE/511A: 8D 58 B6 STA $B658 EE/511D: AD 5C B6 LDA $B65C EE/5120: C9 B4 00 CMP #$00B4 EE/5123: D0 31 BNE $5156 EE/5125: C2 20 REP #$20 EE/5127: 38 SEC EE/5128: AD 50 B6 LDA $B650 EE/512B: ED 54 B6 SBC $B654 EE/512E: 8D 50 B6 STA $B650 EE/5131: AD 58 B6 LDA $B658 EE/5134: E9 00 00 SBC #$0000 EE/5137: 8D 58 B6 STA $B658 EE/513A: AD 54 B6 LDA $B654 EE/513D: 69 10 00 ADC #$0010 EE/5140: 8D 54 B6 STA $B654 EE/5143: AD 52 B6 LDA $B652 EE/5146: 38 SEC EE/5147: ED 56 B6 SBC $B656 EE/514A: 8D 52 B6 STA $B652 EE/514D: AD 56 B6 LDA $B656 EE/5150: 69 04 00 ADC #$0004 EE/5153: 8D 56 B6 STA $B656 EE/5156: E2 20 SEP #$20 EE/5158: AD 5B B6 LDA $B65B EE/515B: 3A DEC EE/515C: D0 17 BNE $5175 EE/515E: AD 5A B6 LDA $B65A EE/5161: 1A INC EE/5162: 1A INC EE/5163: 29 02 AND #$02 EE/5165: 8D 5A B6 STA $B65A EE/5168: AD 5C B6 LDA $B65C EE/516B: C9 B4 CMP #$B4 EE/516D: F0 04 BEQ $5173 EE/516F: A9 06 LDA #$06 EE/5171: 80 02 BRA $5175 EE/5173: A9 02 LDA #$02 EE/5175: 8D 5B B6 STA $B65B EE/5178: AD 51 B6 LDA $B651 EE/517B: 8D 02 B6 STA $B602 EE/517E: AD 58 B6 LDA $B658 EE/5181: 8D 03 B6 STA $B603 EE/5184: AD 53 B6 LDA $B653 EE/5187: 8D 04 B6 STA $B604 EE/518A: A9 64 LDA #$64 EE/518C: 18 CLC EE/518D: 6D 5A B6 ADC $B65A EE/5190: 8D 00 B6 STA $B600 EE/5193: AB PLB EE/5194: 28 PLP EE/5195: 60 RTS EE/5196: .DB $00, $00, $00, $00, $00, $00 EE/519C: .DB $00, $56, $56, $56, $56, $56 EE/51A2: .DB $00, $57, $57, $56, $56, $56 EE/51A8: .DB $00, $59, $58, $57, $56, $56 EE/51AE: .DB $00, $58, $57, $57, $56, $56 EE/51B4: .DB $00, $57, $57, $56, $56, $56 EE/51BA: .DB $00, $57, $56, $56, $56, $56 EE/51C0: .DB $00 EE/51C1: 08 PHP EE/51C2: 8B PHB EE/51C3: E2 20 SEP #$20 EE/51C5: A9 7E LDA #$7E EE/51C7: 48 PHA EE/51C8: AB PLB EE/51C9: C2 30 REP #$30 EE/51CB: A2 00 00 LDX #$0000 EE/51CE: BD C0 E1 LDA $E1C0,X EE/51D1: 9D 40 E1 STA $E140,X EE/51D4: E8 INX EE/51D5: E8 INX EE/51D6: E0 20 00 CPX #$0020 EE/51D9: D0 F3 BNE $51CE EE/51DB: 7B TDC EE/51DC: 8D 5C B6 STA $B65C EE/51DF: E2 20 SEP #$20 EE/51E1: A9 0A LDA #$0A EE/51E3: 8D 52 B6 STA $B652 EE/51E6: 7B TDC EE/51E7: 8D 58 B6 STA $B658 EE/51EA: 8D 59 B6 STA $B659 EE/51ED: 8D 54 B6 STA $B654 EE/51F0: A9 02 LDA #$02 EE/51F2: 8D 56 B6 STA $B656 EE/51F5: A9 59 LDA #$59 EE/51F7: 8D 5B B6 STA $B65B EE/51FA: A2 00 00 LDX #$0000 EE/51FD: 7B TDC EE/51FE: 9D 60 B6 STA $B660,X EE/5201: 8A TXA EE/5202: 18 CLC EE/5203: 69 08 ADC #$08 EE/5205: AA TAX EE/5206: E0 30 00 CPX #$0030 EE/5209: D0 F2 BNE $51FD EE/520B: A9 11 LDA #$11 EE/520D: 85 CA STA $CA EE/520F: 80 02 BRA $5213 EE/5211: 08 PHP EE/5212: 8B PHB EE/5213: E2 20 SEP #$20 EE/5215: A9 7E LDA #$7E EE/5217: 48 PHA EE/5218: AB PLB EE/5219: AD 56 B6 LDA $B656 EE/521C: 3A DEC EE/521D: D0 31 BNE $5250 EE/521F: C2 20 REP #$20 EE/5221: AD 5A B6 LDA $B65A EE/5224: 18 CLC EE/5225: 69 20 00 ADC #$0020 EE/5228: 8D 5A B6 STA $B65A EE/522B: AD 54 B6 LDA $B654 EE/522E: AA TAX EE/522F: 1A INC EE/5230: 1A INC EE/5231: 8D 54 B6 STA $B654 EE/5234: E2 20 SEP #$20 EE/5236: BF 00 00 C5 LDA $C50000,X EE/523A: 29 03 AND #$03 EE/523C: 38 SEC EE/523D: E9 01 SBC #$01 EE/523F: 8D 58 B6 STA $B658 EE/5242: BF 01 00 C5 LDA $C50001,X EE/5246: 29 03 AND #$03 EE/5248: 38 SEC EE/5249: E9 01 SBC #$01 EE/524B: 8D 59 B6 STA $B659 EE/524E: A9 03 LDA #$03 EE/5250: 8D 56 B6 STA $B656 EE/5253: AD 52 B6 LDA $B652 EE/5256: 3A DEC EE/5257: F0 05 BEQ $525E EE/5259: 8D 52 B6 STA $B652 EE/525C: 80 0C BRA $526A EE/525E: AD 50 B6 LDA $B650 EE/5261: 3A DEC EE/5262: 8D 50 B6 STA $B650 EE/5265: A9 08 LDA #$08 EE/5267: 8D 52 B6 STA $B652 EE/526A: AD 50 B6 LDA $B650 EE/526D: 29 01 AND #$01 EE/526F: 1A INC EE/5270: 8D 00 B6 STA $B600 EE/5273: AD 58 B6 LDA $B658 EE/5276: 18 CLC EE/5277: 69 80 ADC #$80 EE/5279: 8D 02 B6 STA $B602 EE/527C: AD 59 B6 LDA $B659 EE/527F: 18 CLC EE/5280: 6D 5B B6 ADC $B65B EE/5283: 8D 04 B6 STA $B604 EE/5286: A0 00 00 LDY #$0000 EE/5289: 7B TDC EE/528A: AD 5C B6 LDA $B65C EE/528D: AA TAX EE/528E: E2 20 SEP #$20 EE/5290: BD 60 B6 LDA $B660,X EE/5293: F0 1C BEQ $52B1 EE/5295: BD 62 B6 LDA $B662,X EE/5298: 3A DEC EE/5299: D0 10 BNE $52AB EE/529B: BD 60 B6 LDA $B660,X EE/529E: 1A INC EE/529F: C9 5F CMP #$5F EE/52A1: 90 02 BCC $52A5 EE/52A3: A9 00 LDA #$00 EE/52A5: 9D 60 B6 STA $B660,X EE/52A8: BD 61 B6 LDA $B661,X EE/52AB: 9D 62 B6 STA $B662,X EE/52AE: BD 60 B6 LDA $B660,X EE/52B1: 99 D0 B5 STA $B5D0,Y EE/52B4: BD 67 B6 LDA $B667,X EE/52B7: 18 CLC EE/52B8: 69 03 ADC #$03 EE/52BA: 9D 67 B6 STA $B667,X EE/52BD: 99 D4 B5 STA $B5D4,Y EE/52C0: C2 21 REP #$21 EE/52C2: BD 63 B6 LDA $B663,X EE/52C5: 7D 65 B6 ADC $B665,X EE/52C8: 9D 65 B6 STA $B665,X EE/52CB: E2 20 SEP #$20 EE/52CD: EB XBA EE/52CE: 99 D2 B5 STA $B5D2,Y EE/52D1: C2 21 REP #$21 EE/52D3: 8A TXA EE/52D4: 69 08 00 ADC #$0008 EE/52D7: C9 28 00 CMP #$0028 EE/52DA: 90 01 BCC $52DD EE/52DC: 7B TDC EE/52DD: AA TAX EE/52DE: 98 TYA EE/52DF: 18 CLC EE/52E0: 69 08 00 ADC #$0008 EE/52E3: A8 TAY EE/52E4: C9 28 00 CMP #$0028 EE/52E7: D0 A5 BNE $528E EE/52E9: AD 5C B6 LDA $B65C EE/52EC: 18 CLC EE/52ED: 69 08 00 ADC #$0008 EE/52F0: C9 28 00 CMP #$0028 EE/52F3: 90 01 BCC $52F6 EE/52F5: 7B TDC EE/52F6: 8D 5C B6 STA $B65C EE/52F9: AA TAX EE/52FA: 8A TXA EE/52FB: 38 SEC EE/52FC: E9 10 00 SBC #$0010 EE/52FF: 10 03 BPL $5304 EE/5301: A9 20 00 LDA #$0020 EE/5304: A8 TAY EE/5305: E2 20 SEP #$20 EE/5307: B9 60 B6 LDA $B660,Y EE/530A: D0 41 BNE $534D EE/530C: AE 54 B6 LDX $B654 EE/530F: BF 00 00 C2 LDA $C20000,X EE/5313: C9 20 CMP #$20 EE/5315: 90 36 BCC $534D EE/5317: A9 5B LDA #$5B EE/5319: 99 60 B6 STA $B660,Y EE/531C: BF 00 00 EE LDA $EE0000,X EE/5320: 29 03 AND #$03 EE/5322: 1A INC EE/5323: 99 61 B6 STA $B661,Y EE/5326: 99 62 B6 STA $B662,Y EE/5329: AE 54 B6 LDX $B654 EE/532C: C2 20 REP #$20 EE/532E: BF 00 00 C1 LDA $C10000,X EE/5332: 29 FF 01 AND #$01FF EE/5335: 85 58 STA $58 EE/5337: A9 00 01 LDA #$0100 EE/533A: E5 58 SBC $58 EE/533C: 99 63 B6 STA $B663,Y EE/533F: A9 00 84 LDA #$8400 EE/5342: 99 65 B6 STA $B665,Y EE/5345: E2 20 SEP #$20 EE/5347: AD 04 B6 LDA $B604 EE/534A: 99 67 B6 STA $B667,Y EE/534D: AB PLB EE/534E: 28 PLP EE/534F: 60 RTS EE/5350: .DB $5F, $60, $61, $60 EE/5354: 8B PHB EE/5355: 08 PHP EE/5356: E2 20 SEP #$20 EE/5358: A9 E6 LDA #$E6 EE/535A: 48 PHA EE/535B: AB PLB EE/535C: A9 13 LDA #$13 EE/535E: 8F CA 00 00 STA $0000CA EE/5362: A9 E0 LDA #$E0 EE/5364: 8F 39 6B 7E STA $7E6B39 EE/5368: 8F 3D 6B 7E STA $7E6B3D EE/536C: A0 80 00 LDY #$0080 EE/536F: A2 00 00 LDX #$0000 EE/5372: C2 20 REP #$20 EE/5374: B9 00 80 LDA $8000,Y EE/5377: 9F 40 E1 7E STA $7EE140,X EE/537B: C8 INY EE/537C: C8 INY EE/537D: E8 INX EE/537E: E8 INX EE/537F: E0 20 00 CPX #$0020 EE/5382: D0 F0 BNE $5374 EE/5384: A9 00 00 LDA #$0000 EE/5387: 8F 60 B6 7E STA $7EB660 EE/538B: A9 01 00 LDA #$0001 EE/538E: 8F 62 B6 7E STA $7EB662 EE/5392: 80 02 BRA $5396 EE/5394: 8B PHB EE/5395: 08 PHP EE/5396: E2 20 SEP #$20 EE/5398: 7B TDC EE/5399: 48 PHA EE/539A: AB PLB EE/539B: AF 62 B6 7E LDA $7EB662 EE/539F: 3A DEC EE/53A0: D0 0D BNE $53AF EE/53A2: AF 60 B6 7E LDA $7EB660 EE/53A6: 1A INC EE/53A7: 29 03 AND #$03 EE/53A9: 8F 60 B6 7E STA $7EB660 EE/53AD: A9 03 LDA #$03 EE/53AF: 8F 62 B6 7E STA $7EB662 EE/53B3: 7B TDC EE/53B4: AF 60 B6 7E LDA $7EB660 EE/53B8: AA TAX EE/53B9: BF 50 53 EE LDA $EE5350,X EE/53BD: 8F D0 B5 7E STA $7EB5D0 EE/53C1: A5 30 LDA $30 EE/53C3: 8D 02 42 STA $4202 EE/53C6: A9 51 LDA #$51 EE/53C8: 8D 03 42 STA $4203 EE/53CB: 38 SEC EE/53CC: A9 80 LDA #$80 EE/53CE: 8F D2 B5 7E STA $7EB5D2 EE/53D2: ED 17 42 SBC $4217 EE/53D5: 8F D4 B5 7E STA $7EB5D4 EE/53D9: 28 PLP EE/53DA: AB PLB EE/53DB: 60 RTS EE/53DC: 08 PHP EE/53DD: 8B PHB EE/53DE: E2 20 SEP #$20 EE/53E0: C2 10 REP #$10 EE/53E2: A9 7E LDA #$7E EE/53E4: 48 PHA EE/53E5: AB PLB EE/53E6: A9 E0 LDA #$E0 EE/53E8: 8D 39 6B STA $6B39 EE/53EB: 8D 3D 6B STA $6B3D EE/53EE: 20 BE 40 JSR $40BE EE/53F1: A2 00 00 LDX #$0000 EE/53F4: 8E 5C B6 STX $B65C EE/53F7: 7B TDC EE/53F8: 9D 60 B6 STA $B660,X EE/53FB: 9D 65 B6 STA $B665,X EE/53FE: 8A TXA EE/53FF: 18 CLC EE/5400: 69 08 ADC #$08 EE/5402: AA TAX EE/5403: C9 80 CMP #$80 EE/5405: D0 F0 BNE $53F7 EE/5407: A9 16 LDA #$16 EE/5409: 85 CA STA $CA EE/540B: 80 02 BRA $540F EE/540D: 08 PHP EE/540E: 8B PHB EE/540F: E2 20 SEP #$20 EE/5411: A9 7E LDA #$7E EE/5413: 48 PHA EE/5414: AB PLB EE/5415: A0 00 00 LDY #$0000 EE/5418: AE 5C B6 LDX $B65C EE/541B: E2 20 SEP #$20 EE/541D: 7B TDC EE/541E: BD 60 B6 LDA $B660,X EE/5421: F0 1B BEQ $543E EE/5423: BD 62 B6 LDA $B662,X EE/5426: 3A DEC EE/5427: D0 0F BNE $5438 EE/5429: BD 60 B6 LDA $B660,X EE/542C: 1A INC EE/542D: C9 07 CMP #$07 EE/542F: 90 01 BCC $5432 EE/5431: 7B TDC EE/5432: 9D 60 B6 STA $B660,X EE/5435: BD 61 B6 LDA $B661,X EE/5438: 9D 62 B6 STA $B662,X EE/543B: BD 60 B6 LDA $B660,X EE/543E: DA PHX EE/543F: AA TAX EE/5440: BF A8 51 EE LDA $EE51A8,X EE/5444: FA PLX EE/5445: 99 D0 B5 STA $B5D0,Y EE/5448: A5 E9 LDA $E9 EE/544A: 89 08 BIT #$08 EE/544C: D0 0E BNE $545C EE/544E: BD 63 B6 LDA $B663,X EE/5451: 18 CLC EE/5452: 69 06 ADC #$06 EE/5454: 9D 63 B6 STA $B663,X EE/5457: 99 D4 B5 STA $B5D4,Y EE/545A: 80 0C BRA $5468 EE/545C: BD 63 B6 LDA $B663,X EE/545F: 18 CLC EE/5460: 69 04 ADC #$04 EE/5462: 9D 63 B6 STA $B663,X EE/5465: 99 D4 B5 STA $B5D4,Y EE/5468: C2 20 REP #$20 EE/546A: A5 E9 LDA $E9 EE/546C: 89 08 00 BIT #$0008 EE/546F: D0 0F BNE $5480 EE/5471: BD 64 B6 LDA $B664,X EE/5474: 38 SEC EE/5475: ED 66 B6 SBC $B666 EE/5478: 9D 64 B6 STA $B664,X EE/547B: 99 D2 B5 STA $B5D2,Y EE/547E: 80 0D BRA $548D EE/5480: 18 CLC EE/5481: BD 64 B6 LDA $B664,X EE/5484: 6D 66 B6 ADC $B666 EE/5487: 9D 64 B6 STA $B664,X EE/548A: 99 D2 B5 STA $B5D2,Y EE/548D: 8A TXA EE/548E: 18 CLC EE/548F: 69 08 00 ADC #$0008 EE/5492: AA TAX EE/5493: 98 TYA EE/5494: 18 CLC EE/5495: 69 08 00 ADC #$0008 EE/5498: A8 TAY EE/5499: C9 28 00 CMP #$0028 EE/549C: F0 03 BEQ $54A1 EE/549E: 4C 1B 54 JMP $541B EE/54A1: AC 5C B6 LDY $B65C EE/54A4: E2 20 SEP #$20 EE/54A6: AF 6D 1F 00 LDA $001F6D EE/54AA: 3A DEC EE/54AB: 8F 6D 1F 00 STA $001F6D EE/54AF: AA TAX EE/54B0: 86 5A STX $5A EE/54B2: B9 60 B6 LDA $B660,Y EE/54B5: F0 0B BEQ $54C2 EE/54B7: 98 TYA EE/54B8: 18 CLC EE/54B9: 69 08 ADC #$08 EE/54BB: A8 TAY EE/54BC: C9 28 CMP #$28 EE/54BE: D0 F2 BNE $54B2 EE/54C0: 80 61 BRA $5523 EE/54C2: C6 5A DEC $5A EE/54C4: A6 5A LDX $5A EE/54C6: BF 00 FD C0 LDA $C0FD00,X EE/54CA: 29 03 AND #$03 EE/54CC: 18 CLC EE/54CD: 69 05 ADC #$05 EE/54CF: 8D 66 B6 STA $B666 EE/54D2: C6 5A DEC $5A EE/54D4: A6 5A LDX $5A EE/54D6: BF 00 FD C0 LDA $C0FD00,X EE/54DA: 29 01 AND #$01 EE/54DC: 1A INC EE/54DD: 99 61 B6 STA $B661,Y EE/54E0: 99 62 B6 STA $B662,Y EE/54E3: C6 5A DEC $5A EE/54E5: A6 5A LDX $5A EE/54E7: BF 00 FD C0 LDA $C0FD00,X EE/54EB: 29 07 AND #$07 EE/54ED: 18 CLC EE/54EE: 69 07 ADC #$07 EE/54F0: 85 5C STA $5C EE/54F2: AD 53 B6 LDA $B653 EE/54F5: E5 5C SBC $5C EE/54F7: 99 63 B6 STA $B663,Y EE/54FA: C2 20 REP #$20 EE/54FC: A5 E9 LDA $E9 EE/54FE: 89 08 00 BIT #$0008 EE/5501: D0 0C BNE $550F EE/5503: AD 51 B6 LDA $B651 EE/5506: 29 FF 00 AND #$00FF EE/5509: 18 CLC EE/550A: 69 08 00 ADC #$0008 EE/550D: 80 0A BRA $5519 EE/550F: AD 51 B6 LDA $B651 EE/5512: 29 FF 00 AND #$00FF EE/5515: 38 SEC EE/5516: E9 08 00 SBC #$0008 EE/5519: 99 64 B6 STA $B664,Y EE/551C: E2 20 SEP #$20 EE/551E: A9 01 LDA #$01 EE/5520: 99 60 B6 STA $B660,Y EE/5523: A9 28 LDA #$28 EE/5525: 38 SEC EE/5526: ED 5C B6 SBC $B65C EE/5529: 8D 5C B6 STA $B65C EE/552C: AB PLB EE/552D: 28 PLP EE/552E: 60 RTS EE/552F: 08 PHP EE/5530: 8B PHB EE/5531: E2 20 SEP #$20 EE/5533: C2 10 REP #$10 EE/5535: A9 7E LDA #$7E EE/5537: 48 PHA EE/5538: AB PLB EE/5539: A9 E0 LDA #$E0 EE/553B: 8D 39 6B STA $6B39 EE/553E: 8D 3D 6B STA $6B3D EE/5541: 20 BE 40 JSR $40BE EE/5544: A2 00 C0 LDX #$C000 EE/5547: 8E 50 B6 STX $B650 EE/554A: A2 00 80 LDX #$8000 EE/554D: 8E 52 B6 STX $B652 EE/5550: A2 60 00 LDX #$0060 EE/5553: 8E 54 B6 STX $B654 EE/5556: A2 00 FF LDX #$FF00 EE/5559: 8E 56 B6 STX $B656 EE/555C: A2 00 01 LDX #$0100 EE/555F: 8E 5A B6 STX $B65A EE/5562: A2 00 00 LDX #$0000 EE/5565: 8E 5C B6 STX $B65C EE/5568: A2 00 00 LDX #$0000 EE/556B: 8E 5E B6 STX $B65E EE/556E: A2 00 00 LDX #$0000 EE/5571: 7B TDC EE/5572: 9D 60 B6 STA $B660,X EE/5575: 8A TXA EE/5576: 18 CLC EE/5577: 69 08 ADC #$08 EE/5579: AA TAX EE/557A: C9 80 CMP #$80 EE/557C: D0 F3 BNE $5571 EE/557E: A9 18 LDA #$18 EE/5580: 85 CA STA $CA EE/5582: 80 02 BRA $5586 EE/5584: 08 PHP EE/5585: 8B PHB EE/5586: E2 20 SEP #$20 EE/5588: A9 7E LDA #$7E EE/558A: 48 PHA EE/558B: AB PLB EE/558C: C2 20 REP #$20 EE/558E: AD 5E B6 LDA $B65E EE/5591: 1A INC EE/5592: 8D 5E B6 STA $B65E EE/5595: C9 98 00 CMP #$0098 EE/5598: 90 14 BCC $55AE EE/559A: C9 B8 00 CMP #$00B8 EE/559D: B0 0F BCS $55AE EE/559F: 38 SEC EE/55A0: E9 98 00 SBC #$0098 EE/55A3: 0A ASL EE/55A4: 0A ASL EE/55A5: 0A ASL EE/55A6: 0A ASL EE/55A7: 0A ASL EE/55A8: 18 CLC EE/55A9: 69 00 04 ADC #$0400 EE/55AC: 85 26 STA $26 EE/55AE: E2 20 SEP #$20 EE/55B0: AD 5B B6 LDA $B65B EE/55B3: 3A DEC EE/55B4: D0 1E BNE $55D4 EE/55B6: AD 5A B6 LDA $B65A EE/55B9: 1A INC EE/55BA: 1A INC EE/55BB: 29 02 AND #$02 EE/55BD: 8D 5A B6 STA $B65A EE/55C0: C2 20 REP #$20 EE/55C2: AD 5E B6 LDA $B65E EE/55C5: C9 98 00 CMP #$0098 EE/55C8: B0 06 BCS $55D0 EE/55CA: E2 20 SEP #$20 EE/55CC: A9 04 LDA #$04 EE/55CE: 80 04 BRA $55D4 EE/55D0: E2 20 SEP #$20 EE/55D2: A9 02 LDA #$02 EE/55D4: 8D 5B B6 STA $B65B EE/55D7: AD 51 B6 LDA $B651 EE/55DA: 8D 02 B6 STA $B602 EE/55DD: AD 53 B6 LDA $B653 EE/55E0: 8D 04 B6 STA $B604 EE/55E3: A9 64 LDA #$64 EE/55E5: 18 CLC EE/55E6: 6D 5A B6 ADC $B65A EE/55E9: 8D 00 B6 STA $B600 EE/55EC: C2 21 REP #$21 EE/55EE: AD 50 B6 LDA $B650 EE/55F1: 6D 54 B6 ADC $B654 EE/55F4: 8D 50 B6 STA $B650 EE/55F7: AD 52 B6 LDA $B652 EE/55FA: 18 CLC EE/55FB: 6D 56 B6 ADC $B656 EE/55FE: 8D 52 B6 STA $B652 EE/5601: AD 54 B6 LDA $B654 EE/5604: 38 SEC EE/5605: E9 01 00 SBC #$0001 EE/5608: 8D 54 B6 STA $B654 EE/560B: AD 5E B6 LDA $B65E EE/560E: C9 78 00 CMP #$0078 EE/5611: B0 1A BCS $562D EE/5613: AD 52 B6 LDA $B652 EE/5616: C9 00 80 CMP #$8000 EE/5619: B0 09 BCS $5624 EE/561B: AD 56 B6 LDA $B656 EE/561E: 18 CLC EE/561F: 69 05 00 ADC #$0005 EE/5622: 80 1A BRA $563E EE/5624: AD 56 B6 LDA $B656 EE/5627: 38 SEC EE/5628: E9 02 00 SBC #$0002 EE/562B: 80 11 BRA $563E EE/562D: AD 54 B6 LDA $B654 EE/5630: 38 SEC EE/5631: E9 03 00 SBC #$0003 EE/5634: 8D 54 B6 STA $B654 EE/5637: AD 56 B6 LDA $B656 EE/563A: 38 SEC EE/563B: E9 06 00 SBC #$0006 EE/563E: 8D 56 B6 STA $B656 EE/5641: A0 00 00 LDY #$0000 EE/5644: AE 5C B6 LDX $B65C EE/5647: E2 20 SEP #$20 EE/5649: 7B TDC EE/564A: BD 60 B6 LDA $B660,X EE/564D: F0 1C BEQ $566B EE/564F: BD 62 B6 LDA $B662,X EE/5652: 3A DEC EE/5653: D0 10 BNE $5665 EE/5655: BD 60 B6 LDA $B660,X EE/5658: 1A INC EE/5659: C9 07 CMP #$07 EE/565B: 90 02 BCC $565F EE/565D: A9 00 LDA #$00 EE/565F: 9D 60 B6 STA $B660,X EE/5662: BD 61 B6 LDA $B661,X EE/5665: 9D 62 B6 STA $B662,X EE/5668: BD 60 B6 LDA $B660,X EE/566B: DA PHX EE/566C: AA TAX EE/566D: BF 96 51 EE LDA $EE5196,X EE/5671: FA PLX EE/5672: 99 D0 B5 STA $B5D0,Y EE/5675: BD 63 B6 LDA $B663,X EE/5678: 99 D4 B5 STA $B5D4,Y EE/567B: C2 21 REP #$21 EE/567D: BD 64 B6 LDA $B664,X EE/5680: 6D 66 B6 ADC $B666 EE/5683: 9D 64 B6 STA $B664,X EE/5686: 99 D2 B5 STA $B5D2,Y EE/5689: 8A TXA EE/568A: 18 CLC EE/568B: 69 08 00 ADC #$0008 EE/568E: AA TAX EE/568F: 98 TYA EE/5690: 18 CLC EE/5691: 69 08 00 ADC #$0008 EE/5694: A8 TAY EE/5695: C9 28 00 CMP #$0028 EE/5698: D0 AD BNE $5647 EE/569A: AC 5C B6 LDY $B65C EE/569D: E2 20 SEP #$20 EE/569F: AF 6D 1F 00 LDA $001F6D EE/56A3: 1A INC EE/56A4: 8F 6D 1F 00 STA $001F6D EE/56A8: AA TAX EE/56A9: 86 5A STX $5A EE/56AB: B9 60 B6 LDA $B660,Y EE/56AE: F0 0B BEQ $56BB EE/56B0: 98 TYA EE/56B1: 18 CLC EE/56B2: 69 08 ADC #$08 EE/56B4: A8 TAY EE/56B5: C9 28 CMP #$28 EE/56B7: D0 F2 BNE $56AB EE/56B9: 80 40 BRA $56FB EE/56BB: E6 5A INC $5A EE/56BD: A6 5A LDX $5A EE/56BF: BF 00 FD C0 LDA $C0FD00,X EE/56C3: 29 03 AND #$03 EE/56C5: 18 CLC EE/56C6: 69 06 ADC #$06 EE/56C8: 8D 66 B6 STA $B666 EE/56CB: E6 5A INC $5A EE/56CD: A6 5A LDX $5A EE/56CF: BF 00 FD C0 LDA $C0FD00,X EE/56D3: 29 01 AND #$01 EE/56D5: 1A INC EE/56D6: 99 61 B6 STA $B661,Y EE/56D9: 99 62 B6 STA $B662,Y EE/56DC: E6 5A INC $5A EE/56DE: A6 5A LDX $5A EE/56E0: BF 00 FD C0 LDA $C0FD00,X EE/56E4: 29 07 AND #$07 EE/56E6: 18 CLC EE/56E7: 69 8C ADC #$8C EE/56E9: 99 63 B6 STA $B663,Y EE/56EC: AD 51 B6 LDA $B651 EE/56EF: 18 CLC EE/56F0: 6D 58 B6 ADC $B658 EE/56F3: 99 64 B6 STA $B664,Y EE/56F6: A9 01 LDA #$01 EE/56F8: 99 60 B6 STA $B660,Y EE/56FB: A9 28 LDA #$28 EE/56FD: 38 SEC EE/56FE: ED 5C B6 SBC $B65C EE/5701: 8D 5C B6 STA $B65C EE/5704: C2 20 REP #$20 EE/5706: AD 52 B6 LDA $B652 EE/5709: C9 00 78 CMP #$7800 EE/570C: D0 00 BNE $570E EE/570E: AB PLB EE/570F: 28 PLP EE/5710: 60 RTS ; [ ] wmshape_set: EE/5711: 08 PHP EE/5712: 8B PHB EE/5713: 4B PHK EE/5714: AB PLB EE/5715: C2 10 REP #$10 EE/5717: C2 20 REP #$20 EE/5719: A2 00 00 LDX #$0000 EE/571C: BD 3E 57 LDA $573E,X EE/571F: 9F D0 93 7E STA $7E93D0,X EE/5723: E8 INX EE/5724: E8 INX EE/5725: E0 D8 00 CPX #$00D8 EE/5728: D0 F2 BNE $571C EE/572A: A2 00 00 LDX #$0000 EE/572D: BD 16 58 LDA $5816,X EE/5730: 9F D0 95 7E STA $7E95D0,X EE/5734: E8 INX EE/5735: E8 INX EE/5736: E0 D6 13 CPX #$13D6 EE/5739: D0 F2 BNE $572D EE/573B: AB PLB EE/573C: 28 PLP EE/573D: 60 RTS EE/573E: .DW $0000, $0000, $0031, $0062, $0093, $00C4, $00F5, $0126 EE/574E: .DW $0157, $0188, $01B9, $01EA, $021B, $024C, $027D, $02AE EE/575E: .DW $02DF, $0310, $0341, $0372, $03CB, $0424, $047D, $04D6 EE/576E: .DW $052F, $0588, $05F5, $0662, $06CF, $073C, $07A9, $0816 EE/577E: .DW $0883, $08F0, $095D, $09CA, $0A37, $0AA4, $0AFD, $0B16 EE/578E: .DW $0B2F, $0B48, $0B61, $0B7A, $0B93, $0BAC, $0BC5, $0C22 EE/579E: .DW $0C6B, $0CA0, $0CC1, $0CCE, $0CDF, $0CF0, $0D01, $0D12 EE/57AE: .DW $0D23, $0D34, $0D45, $0D56, $0D67, $0D78, $0D89, $0D9A EE/57BE: .DW $0DAB, $0DBC, $0DCD, $0DDE, $0DEF, $0E00, $0E1D, $0E4E EE/57CE: .DW $0E87, $0ED0, $0F11, $0F52, $0F93, $0FD4, $100D, $1026 EE/57DE: .DW $103F, $1058, $1071, $108A, $10A3, $10AC, $10B5, $10CE EE/57EE: .DW $10FF, $1148, $1199, $1199, $119E, $11AB, $11BC, $11CD EE/57FE: .DW $11DE, $11E7, $11F0, $121D, $1256, $1293, $12EC, $1329 EE/580E: .DW $133E, $1367, $13A4, $13BD EE/5816: .DB $0C, $F4, $F0, $40, $10, $FC, $F0, $41, $10, $04, $F0, $40, $50, $F4, $F8, $50 EE/5826: .DB $10, $FC, $F8, $51, $10, $04, $F8, $50, $50, $F4, $00, $42, $10, $FC, $00, $43 EE/5836: .DB $10, $04, $00, $42, $50, $F4, $08, $52, $10, $FC, $08, $53, $10, $04, $08, $52 EE/5846: .DB $50, $0C, $F4, $F0, $44, $10, $FC, $F0, $45, $10, $04, $F0, $44, $50, $F4, $F8 EE/5856: .DB $54, $10, $FC, $F8, $55, $10, $04, $F8, $54, $50, $F4, $00, $46, $10, $FC, $00 EE/5866: .DB $47, $10, $04, $00, $46, $50, $F4, $08, $56, $10, $FC, $08, $57, $10, $04, $08 EE/5876: .DB $56, $50, $0C, $F4, $F0, $48, $10, $FC, $F0, $49, $10, $04, $F0, $4C, $10, $F4 EE/5886: .DB $F8, $58, $10, $FC, $F8, $59, $10, $04, $F8, $5C, $10, $F4, $00, $4A, $10, $FC EE/5896: .DB $00, $4B, $10, $04, $00, $4D, $10, $F4, $08, $5A, $10, $FC, $08, $5B, $10, $04 EE/58A6: .DB $08, $5D, $10, $0C, $F4, $F0, $4E, $10, $FC, $F0, $4F, $10, $04, $F0, $62, $10 EE/58B6: .DB $F4, $F8, $5E, $10, $FC, $F8, $5F, $10, $04, $F8, $72, $10, $F4, $00, $60, $10 EE/58C6: .DB $FC, $00, $61, $10, $04, $00, $63, $10, $F4, $08, $70, $10, $FC, $08, $71, $10 EE/58D6: .DB $04, $08, $73, $10, $0C, $F4, $F0, $4C, $50, $FC, $F0, $49, $50, $04, $F0, $48 EE/58E6: .DB $50, $F4, $F8, $5C, $50, $FC, $F8, $59, $50, $04, $F8, $58, $50, $F4, $00, $4D EE/58F6: .DB $50, $FC, $00, $4B, $50, $04, $00, $4A, $50, $F4, $08, $5D, $50, $FC, $08, $5B EE/5906: .DB $50, $04, $08, $5A, $50, $0C, $F4, $F0, $62, $50, $FC, $F0, $4F, $50, $04, $F0 EE/5916: .DB $4E, $50, $F4, $F8, $72, $50, $FC, $F8, $5F, $50, $04, $F8, $5E, $50, $F4, $00 EE/5926: .DB $63, $50, $FC, $00, $61, $50, $04, $00, $60, $50, $F4, $08, $73, $50, $FC, $08 EE/5936: .DB $71, $50, $04, $08, $70, $50, $0C, $F4, $F0, $64, $10, $FC, $F0, $65, $10, $04 EE/5946: .DB $F0, $64, $50, $F4, $F8, $74, $10, $FC, $F8, $75, $10, $04, $F8, $74, $50, $F4 EE/5956: .DB $00, $66, $10, $FC, $00, $67, $10, $04, $00, $66, $50, $F4, $08, $76, $10, $FC EE/5966: .DB $08, $77, $10, $04, $08, $76, $50, $0C, $F4, $F0, $68, $10, $FC, $F0, $69, $10 EE/5976: .DB $04, $F0, $68, $50, $F4, $F8, $78, $10, $FC, $F8, $79, $10, $04, $F8, $78, $50 EE/5986: .DB $F4, $00, $6A, $10, $FC, $00, $6B, $10, $04, $00, $6A, $50, $F4, $08, $7A, $10 EE/5996: .DB $FC, $08, $7B, $10, $04, $08, $7A, $50, $0C, $F4, $F0, $6C, $10, $FC, $F0, $6D EE/59A6: .DB $10, $04, $F0, $80, $10, $F4, $F8, $7C, $10, $FC, $F8, $7D, $10, $04, $F8, $90 EE/59B6: .DB $10, $F4, $00, $6E, $10, $FC, $00, $6F, $10, $04, $00, $81, $10, $F4, $08, $7E EE/59C6: .DB $10, $FC, $08, $7F, $10, $04, $08, $91, $10, $0C, $F4, $F0, $82, $10, $FC, $F0 EE/59D6: .DB $83, $10, $04, $F0, $86, $10, $F4, $F8, $92, $10, $FC, $F8, $93, $10, $04, $F8 EE/59E6: .DB $96, $10, $F4, $00, $84, $10, $FC, $00, $85, $10, $04, $00, $87, $10, $F4, $08 EE/59F6: .DB $94, $10, $FC, $08, $95, $10, $04, $08, $97, $10, $0C, $F4, $F0, $80, $50, $FC EE/5A06: .DB $F0, $6D, $50, $04, $F0, $6C, $50, $F4, $F8, $90, $50, $FC, $F8, $7D, $50, $04 EE/5A16: .DB $F8, $7C, $50, $F4, $00, $81, $50, $FC, $00, $6F, $50, $04, $00, $6E, $50, $F4 EE/5A26: .DB $08, $91, $50, $FC, $08, $7F, $50, $04, $08, $7E, $50, $0C, $F4, $F0, $86, $50 EE/5A36: .DB $FC, $F0, $83, $50, $04, $F0, $82, $50, $F4, $F8, $96, $50, $FC, $F8, $93, $50 EE/5A46: .DB $04, $F8, $92, $50, $F4, $00, $87, $50, $FC, $00, $85, $50, $04, $00, $84, $50 EE/5A56: .DB $F4, $08, $97, $50, $FC, $08, $95, $50, $04, $08, $94, $50, $0C, $F4, $F0, $88 EE/5A66: .DB $10, $FC, $F0, $89, $10, $04, $F0, $88, $50, $F4, $F8, $98, $10, $FC, $F8, $99 EE/5A76: .DB $10, $04, $F8, $98, $50, $F4, $00, $8A, $10, $FC, $00, $8B, $10, $04, $00, $8A EE/5A86: .DB $50, $F4, $08, $9A, $10, $FC, $08, $9B, $10, $04, $08, $9A, $50, $0C, $F4, $F0 EE/5A96: .DB $8C, $10, $FC, $F0, $8D, $10, $04, $F0, $8C, $50, $F4, $F8, $9C, $10, $FC, $F8 EE/5AA6: .DB $9D, $10, $04, $F8, $9C, $50, $F4, $00, $8E, $10, $FC, $00, $8F, $10, $04, $00 EE/5AB6: .DB $8E, $50, $F4, $08, $9E, $10, $FC, $08, $9F, $10, $04, $08, $9E, $50, $0C, $F4 EE/5AC6: .DB $F0, $A0, $10, $FC, $F0, $A1, $10, $04, $F0, $A4, $10, $F4, $F8, $B0, $10, $FC EE/5AD6: .DB $F8, $B1, $10, $04, $F8, $B4, $10, $F4, $00, $A2, $10, $FC, $00, $A3, $10, $04 EE/5AE6: .DB $00, $A5, $10, $F4, $08, $B2, $10, $FC, $08, $B3, $10, $04, $08, $B5, $10, $0C EE/5AF6: .DB $F4, $F0, $A6, $10, $FC, $F0, $A7, $10, $04, $F0, $AA, $10, $F4, $F8, $B6, $10 EE/5B06: .DB $FC, $F8, $B7, $10, $04, $F8, $BA, $10, $F4, $00, $A8, $10, $FC, $00, $A9, $10 EE/5B16: .DB $04, $00, $AB, $10, $F4, $08, $B8, $10, $FC, $08, $B9, $10, $04, $08, $BB, $10 EE/5B26: .DB $0C, $F4, $F0, $A4, $50, $FC, $F0, $A1, $50, $04, $F0, $A0, $50, $F4, $F8, $B4 EE/5B36: .DB $50, $FC, $F8, $B1, $50, $04, $F8, $B0, $50, $F4, $00, $A5, $50, $FC, $00, $A3 EE/5B46: .DB $50, $04, $00, $A2, $50, $F4, $08, $B5, $50, $FC, $08, $B3, $50, $04, $08, $B2 EE/5B56: .DB $50, $0C, $F4, $F0, $AA, $50, $FC, $F0, $A7, $50, $04, $F0, $A6, $50, $F4, $F8 EE/5B66: .DB $BA, $50, $FC, $F8, $B7, $50, $04, $F8, $B6, $50, $F4, $00, $AB, $50, $FC, $00 EE/5B76: .DB $A9, $50, $04, $00, $A8, $50, $F4, $08, $BB, $50, $FC, $08, $B9, $50, $04, $08 EE/5B86: .DB $B8, $50, $16, $F8, $00, $BC, $13, $00, $00, $BD, $13, $F8, $08, $CC, $13, $00 EE/5B96: .DB $08, $CD, $13, $F8, $F3, $AC, $14, $00, $F3, $AD, $14, $F8, $FB, $BC, $14, $00 EE/5BA6: .DB $FB, $BD, $14, $F8, $EC, $C0, $12, $00, $EC, $C1, $12, $F8, $F4, $D0, $12, $00 EE/5BB6: .DB $F4, $D1, $12, $F8, $FC, $E0, $12, $00, $FC, $E1, $12, $F8, $04, $D2, $12, $00 EE/5BC6: .DB $04, $D3, $12, $F8, $0C, $E2, $12, $00, $0C, $E3, $12, $F8, $0A, $A0, $13, $00 EE/5BD6: .DB $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $16, $F8, $01, $DC, $13 EE/5BE6: .DB $00, $01, $DD, $13, $F8, $09, $EC, $13, $00, $09, $ED, $13, $F8, $F1, $AC, $14 EE/5BF6: .DB $00, $F1, $AD, $14, $F8, $F9, $BC, $14, $00, $F9, $BD, $14, $F8, $EC, $D4, $12 EE/5C06: .DB $00, $EC, $D5, $12, $F8, $F4, $E4, $12, $00, $F4, $E5, $12, $F8, $FC, $84, $13 EE/5C16: .DB $00, $FC, $85, $13, $F8, $04, $94, $13, $00, $04, $95, $13, $F8, $0C, $A4, $13 EE/5C26: .DB $00, $0C, $A5, $13, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93 EE/5C36: .DB $00, $12, $A0, $D3, $16, $F8, $01, $DE, $13, $00, $01, $DF, $13, $F8, $09, $EE EE/5C46: .DB $13, $00, $09, $EF, $13, $F8, $F2, $AC, $14, $00, $F2, $AD, $14, $F8, $FA, $BC EE/5C56: .DB $14, $00, $FA, $BD, $14, $F8, $EC, $D6, $12, $00, $EC, $D7, $12, $F8, $F4, $E6 EE/5C66: .DB $12, $00, $F4, $E7, $12, $F8, $FC, $86, $13, $00, $FC, $87, $13, $F8, $04, $96 EE/5C76: .DB $13, $00, $04, $97, $13, $F8, $0C, $A6, $13, $00, $0C, $A7, $13, $F8, $0A, $A0 EE/5C86: .DB $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $16, $F8, $00 EE/5C96: .DB $BE, $13, $00, $00, $BF, $13, $F8, $08, $CE, $13, $00, $08, $CF, $13, $F8, $F3 EE/5CA6: .DB $AC, $14, $00, $F3, $AD, $14, $F8, $FB, $BC, $14, $00, $FB, $BD, $14, $F8, $EC EE/5CB6: .DB $D8, $12, $00, $EC, $D9, $12, $F8, $F4, $E8, $12, $00, $F4, $E9, $12, $F8, $FC EE/5CC6: .DB $88, $13, $00, $FC, $89, $13, $F8, $04, $98, $13, $00, $04, $99, $13, $F8, $0C EE/5CD6: .DB $A8, $13, $00, $0C, $A9, $13, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12 EE/5CE6: .DB $A0, $93, $00, $12, $A0, $D3, $16, $00, $01, $DC, $53, $F8, $01, $DD, $53, $00 EE/5CF6: .DB $09, $EC, $53, $F8, $09, $ED, $53, $F8, $F1, $AC, $14, $00, $F1, $AD, $14, $F8 EE/5D06: .DB $F9, $BC, $14, $00, $F9, $BD, $14, $00, $EC, $D4, $52, $F8, $EC, $D5, $52, $00 EE/5D16: .DB $F4, $E4, $52, $F8, $F4, $E5, $52, $00, $FC, $84, $53, $F8, $FC, $85, $53, $00 EE/5D26: .DB $04, $94, $53, $F8, $04, $95, $53, $00, $0C, $A4, $53, $F8, $0C, $A5, $53, $F8 EE/5D36: .DB $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $16 EE/5D46: .DB $00, $01, $DE, $53, $F8, $01, $DF, $53, $00, $09, $EE, $53, $F8, $09, $EF, $53 EE/5D56: .DB $F8, $F2, $AC, $14, $00, $F2, $AD, $14, $F8, $FA, $BC, $14, $00, $FA, $BD, $14 EE/5D66: .DB $00, $EC, $D6, $52, $F8, $EC, $D7, $52, $00, $F4, $E6, $52, $F8, $F4, $E7, $52 EE/5D76: .DB $00, $FC, $86, $53, $F8, $FC, $87, $53, $00, $04, $96, $53, $F8, $04, $97, $53 EE/5D86: .DB $00, $0C, $A6, $53, $F8, $0C, $A7, $53, $F8, $0A, $A0, $13, $00, $0A, $A0, $53 EE/5D96: .DB $F8, $12, $A0, $93, $00, $12, $A0, $D3, $1B, $FC, $FE, $BC, $13, $04, $FE, $BD EE/5DA6: .DB $13, $FC, $06, $CC, $13, $04, $06, $CD, $13, $FA, $F3, $AC, $14, $02, $F3, $AD EE/5DB6: .DB $14, $FA, $FB, $BC, $14, $02, $FB, $BD, $14, $F4, $EC, $DA, $12, $FC, $EC, $DB EE/5DC6: .DB $12, $04, $EC, $DC, $12, $F4, $F4, $EA, $12, $FC, $F4, $EB, $12, $04, $F4, $EC EE/5DD6: .DB $12, $F4, $FC, $8A, $13, $FC, $FC, $8B, $13, $04, $FC, $8C, $13, $F4, $04, $9A EE/5DE6: .DB $13, $FC, $04, $9B, $13, $04, $04, $9C, $13, $F4, $0C, $AA, $13, $FC, $0C, $AB EE/5DF6: .DB $13, $04, $0C, $AC, $13, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0 EE/5E06: .DB $93, $00, $12, $A0, $D3, $1B, $FC, $FF, $DC, $13, $04, $FF, $DD, $13, $FC, $07 EE/5E16: .DB $EC, $13, $04, $07, $ED, $13, $FA, $F1, $AC, $14, $02, $F1, $AD, $14, $FA, $F9 EE/5E26: .DB $BC, $14, $02, $F9, $BD, $14, $F4, $EC, $DD, $12, $FC, $EC, $DE, $12, $04, $EC EE/5E36: .DB $DF, $12, $F4, $F4, $ED, $12, $FC, $F4, $EE, $12, $04, $F4, $EF, $12, $F4, $FC EE/5E46: .DB $8D, $13, $FC, $FC, $8E, $13, $04, $FC, $8F, $13, $F4, $04, $9D, $13, $FC, $04 EE/5E56: .DB $9E, $13, $04, $04, $9F, $13, $F4, $0C, $AD, $13, $FC, $0C, $AE, $13, $04, $0C EE/5E66: .DB $AF, $13, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12 EE/5E76: .DB $A0, $D3, $1B, $FC, $FF, $DE, $13, $04, $FF, $DF, $13, $FC, $07, $EE, $13, $04 EE/5E86: .DB $07, $EF, $13, $FA, $F2, $AC, $14, $02, $F2, $AD, $14, $FA, $FA, $BC, $14, $02 EE/5E96: .DB $FA, $BD, $14, $F4, $EC, $B0, $13, $FC, $EC, $B1, $13, $04, $EC, $B2, $13, $F4 EE/5EA6: .DB $F4, $C0, $13, $FC, $F4, $C1, $13, $04, $F4, $C2, $13, $F4, $FC, $D0, $13, $FC EE/5EB6: .DB $FC, $D1, $13, $04, $FC, $D2, $13, $F4, $04, $E0, $13, $FC, $04, $E1, $13, $04 EE/5EC6: .DB $04, $E2, $13, $F4, $0C, $F0, $13, $FC, $0C, $F1, $13, $04, $0C, $F2, $13, $F8 EE/5ED6: .DB $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $1B EE/5EE6: .DB $FC, $FE, $BE, $13, $04, $FE, $BF, $13, $FC, $06, $CE, $13, $04, $06, $CF, $13 EE/5EF6: .DB $FA, $F3, $AC, $14, $02, $F3, $AD, $14, $FA, $FB, $BC, $14, $02, $FB, $BD, $14 EE/5F06: .DB $F4, $EC, $B3, $13, $FC, $EC, $B4, $13, $04, $EC, $B5, $13, $F4, $F4, $C3, $13 EE/5F16: .DB $FC, $F4, $C4, $13, $04, $F4, $C5, $13, $F4, $FC, $D3, $13, $FC, $FC, $D4, $13 EE/5F26: .DB $04, $FC, $D5, $13, $F4, $04, $E3, $13, $FC, $04, $E4, $13, $04, $04, $E5, $13 EE/5F36: .DB $F4, $0C, $F3, $13, $FC, $0C, $F4, $13, $04, $0C, $F5, $13, $F8, $0A, $A0, $13 EE/5F46: .DB $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $1B, $04, $FF, $DC EE/5F56: .DB $53, $FC, $FF, $DD, $53, $04, $07, $EC, $53, $FC, $07, $ED, $53, $FA, $F1, $AC EE/5F66: .DB $14, $02, $F1, $AD, $14, $FA, $F9, $BC, $14, $02, $F9, $BD, $14, $F4, $EC, $B6 EE/5F76: .DB $13, $FC, $EC, $B7, $13, $04, $EC, $B8, $13, $F4, $F4, $C6, $13, $FC, $F4, $C7 EE/5F86: .DB $13, $04, $F4, $C8, $13, $F4, $FC, $D6, $13, $FC, $FC, $D7, $13, $04, $FC, $D8 EE/5F96: .DB $13, $F4, $04, $E6, $13, $FC, $04, $E7, $13, $04, $04, $E8, $13, $F4, $0C, $F6 EE/5FA6: .DB $13, $FC, $0C, $F7, $13, $04, $0C, $F8, $13, $F8, $0A, $A0, $13, $00, $0A, $A0 EE/5FB6: .DB $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $1B, $04, $FF, $DE, $53, $FC, $FF EE/5FC6: .DB $DF, $53, $04, $07, $EE, $53, $FC, $07, $EF, $53, $FA, $F2, $AC, $14, $02, $F2 EE/5FD6: .DB $AD, $14, $FA, $FA, $BC, $14, $02, $FA, $BD, $14, $F4, $EC, $B9, $13, $FC, $EC EE/5FE6: .DB $BA, $13, $04, $EC, $BB, $13, $F4, $F4, $C9, $13, $FC, $F4, $CA, $13, $04, $F4 EE/5FF6: .DB $CB, $13, $F4, $FC, $D9, $13, $FC, $FC, $DA, $13, $04, $FC, $DB, $13, $F4, $04 EE/6006: .DB $E9, $13, $FC, $04, $EA, $13, $04, $04, $EB, $13, $F4, $0C, $F9, $13, $FC, $0C EE/6016: .DB $FA, $13, $04, $0C, $FB, $13, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12 EE/6026: .DB $A0, $93, $00, $12, $A0, $D3, $1B, $FC, $FE, $BC, $53, $F4, $FE, $BD, $53, $FC EE/6036: .DB $06, $CC, $53, $F4, $06, $CD, $53, $F6, $F3, $AC, $14, $FE, $F3, $AD, $14, $F6 EE/6046: .DB $FB, $BC, $14, $FE, $FB, $BD, $14, $04, $EC, $DA, $52, $FC, $EC, $DB, $52, $F4 EE/6056: .DB $EC, $DC, $52, $04, $F4, $EA, $52, $FC, $F4, $EB, $52, $F4, $F4, $EC, $52, $04 EE/6066: .DB $FC, $8A, $53, $FC, $FC, $8B, $53, $F4, $FC, $8C, $53, $04, $04, $9A, $53, $FC EE/6076: .DB $04, $9B, $53, $F4, $04, $9C, $53, $04, $0C, $AA, $53, $FC, $0C, $AB, $53, $F4 EE/6086: .DB $0C, $AC, $53, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00 EE/6096: .DB $12, $A0, $D3, $1B, $FC, $FF, $DC, $53, $F4, $FF, $DD, $53, $FC, $07, $EC, $53 EE/60A6: .DB $F4, $07, $ED, $53, $F6, $F1, $AC, $14, $FE, $F1, $AD, $14, $F6, $F9, $BC, $14 EE/60B6: .DB $FE, $F9, $BD, $14, $04, $EC, $DD, $52, $FC, $EC, $DE, $52, $F4, $EC, $DF, $52 EE/60C6: .DB $04, $F4, $ED, $52, $FC, $F4, $EE, $52, $F4, $F4, $EF, $52, $04, $FC, $8D, $53 EE/60D6: .DB $FC, $FC, $8E, $53, $F4, $FC, $8F, $53, $04, $04, $9D, $53, $FC, $04, $9E, $53 EE/60E6: .DB $F4, $04, $9F, $53, $04, $0C, $AD, $53, $FC, $0C, $AE, $53, $F4, $0C, $AF, $53 EE/60F6: .DB $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3 EE/6106: .DB $1B, $FC, $FF, $DE, $53, $F4, $FF, $DF, $53, $FC, $07, $EE, $53, $F4, $07, $EF EE/6116: .DB $53, $F6, $F2, $AC, $14, $FE, $F2, $AD, $14, $F6, $FA, $BC, $14, $FE, $FA, $BD EE/6126: .DB $14, $04, $EC, $B0, $53, $FC, $EC, $B1, $53, $F4, $EC, $B2, $53, $04, $F4, $C0 EE/6136: .DB $53, $FC, $F4, $C1, $53, $F4, $F4, $C2, $53, $04, $FC, $D0, $53, $FC, $FC, $D1 EE/6146: .DB $53, $F4, $FC, $D2, $53, $04, $04, $E0, $53, $FC, $04, $E1, $53, $F4, $04, $E2 EE/6156: .DB $53, $04, $0C, $F0, $53, $FC, $0C, $F1, $53, $F4, $0C, $F2, $53, $F8, $0A, $A0 EE/6166: .DB $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $1B, $FC, $FE EE/6176: .DB $BE, $53, $F4, $FE, $BF, $53, $FC, $06, $CE, $53, $F4, $06, $CF, $53, $F6, $F3 EE/6186: .DB $AC, $14, $FE, $F3, $AD, $14, $F6, $FB, $BC, $14, $FE, $FB, $BD, $14, $04, $EC EE/6196: .DB $B3, $53, $FC, $EC, $B4, $53, $F4, $EC, $B5, $53, $04, $F4, $C3, $53, $FC, $F4 EE/61A6: .DB $C4, $53, $F4, $F4, $C5, $53, $04, $FC, $D3, $53, $FC, $FC, $D4, $53, $F4, $FC EE/61B6: .DB $D5, $53, $04, $04, $E3, $53, $FC, $04, $E4, $53, $F4, $04, $E5, $53, $04, $0C EE/61C6: .DB $F3, $53, $FC, $0C, $F4, $53, $F4, $0C, $F5, $53, $F8, $0A, $A0, $13, $00, $0A EE/61D6: .DB $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $1B, $F4, $FF, $DC, $13, $FC EE/61E6: .DB $FF, $DD, $13, $F4, $07, $EC, $13, $FC, $07, $ED, $13, $F6, $F1, $AC, $14, $FE EE/61F6: .DB $F1, $AD, $14, $F6, $F9, $BC, $14, $FE, $F9, $BD, $14, $04, $EC, $B6, $53, $FC EE/6206: .DB $EC, $B7, $53, $F4, $EC, $B8, $53, $04, $F4, $C6, $53, $FC, $F4, $C7, $53, $F4 EE/6216: .DB $F4, $C8, $53, $04, $FC, $D6, $53, $FC, $FC, $D7, $53, $F4, $FC, $D8, $53, $04 EE/6226: .DB $04, $E6, $53, $FC, $04, $E7, $53, $F4, $04, $E8, $53, $04, $0C, $F6, $53, $FC EE/6236: .DB $0C, $F7, $53, $F4, $0C, $F8, $53, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8 EE/6246: .DB $12, $A0, $93, $00, $12, $A0, $D3, $1B, $F4, $FF, $DE, $13, $FC, $FF, $DF, $13 EE/6256: .DB $F4, $07, $EE, $13, $FC, $07, $EF, $13, $F6, $F2, $AC, $14, $FE, $F2, $AD, $14 EE/6266: .DB $F6, $FA, $BC, $14, $FE, $FA, $BD, $14, $04, $EC, $B9, $53, $FC, $EC, $BA, $53 EE/6276: .DB $F4, $EC, $BB, $53, $04, $F4, $C9, $53, $FC, $F4, $CA, $53, $F4, $F4, $CB, $53 EE/6286: .DB $04, $FC, $D9, $53, $FC, $FC, $DA, $53, $F4, $FC, $DB, $53, $04, $04, $E9, $53 EE/6296: .DB $FC, $04, $EA, $53, $F4, $04, $EB, $53, $04, $0C, $F9, $53, $FC, $0C, $FA, $53 EE/62A6: .DB $F4, $0C, $FB, $53, $F8, $0A, $A0, $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93 EE/62B6: .DB $00, $12, $A0, $D3, $16, $F8, $00, $CC, $12, $00, $00, $CD, $12, $F8, $08, $CE EE/62C6: .DB $12, $00, $08, $CF, $12, $F8, $F3, $AC, $14, $00, $F3, $AD, $14, $F8, $FB, $BC EE/62D6: .DB $14, $00, $FB, $BD, $14, $F8, $EC, $C2, $12, $00, $EC, $C3, $12, $F8, $F4, $C4 EE/62E6: .DB $12, $00, $F4, $C5, $12, $F8, $FC, $C6, $12, $00, $FC, $C7, $12, $F8, $04, $C8 EE/62F6: .DB $12, $00, $04, $C9, $12, $F8, $0C, $CA, $12, $00, $0C, $CB, $12, $F8, $0A, $A0 EE/6306: .DB $13, $00, $0A, $A0, $53, $F8, $12, $A0, $93, $00, $12, $A0, $D3, $06, $F8, $E8 EE/6316: .DB $F0, $10, $00, $E8, $F1, $10, $F8, $F0, $F2, $10, $00, $F0, $F3, $10, $F8, $F8 EE/6326: .DB $F4, $10, $00, $F8, $F5, $10, $06, $F8, $E8, $F0, $10, $00, $E8, $F1, $10, $F8 EE/6336: .DB $F0, $F2, $10, $00, $F0, $F3, $10, $00, $F8, $F4, $50, $F8, $F8, $F5, $50, $06 EE/6346: .DB $00, $E8, $F0, $50, $F8, $E8, $F1, $50, $00, $F0, $F2, $50, $F8, $F0, $F3, $50 EE/6356: .DB $F8, $F8, $F4, $10, $00, $F8, $F5, $10, $06, $00, $E8, $F0, $50, $F8, $E8, $F1 EE/6366: .DB $50, $00, $F0, $F2, $50, $F8, $F0, $F3, $50, $00, $F8, $F4, $50, $F8, $F8, $F5 EE/6376: .DB $50, $06, $F8, $E8, $F0, $10, $00, $E8, $F1, $10, $F8, $F0, $F2, $10, $00, $F0 EE/6386: .DB $F3, $10, $F8, $F8, $F4, $08, $00, $F8, $F5, $08, $06, $F8, $E8, $F0, $10, $00 EE/6396: .DB $E8, $F1, $10, $F8, $F0, $F2, $10, $00, $F0, $F3, $10, $00, $F8, $F4, $48, $F8 EE/63A6: .DB $F8, $F5, $48, $06, $00, $E8, $F0, $50, $F8, $E8, $F1, $50, $00, $F0, $F2, $50 EE/63B6: .DB $F8, $F0, $F3, $50, $F8, $F8, $F4, $08, $00, $F8, $F5, $08, $06, $00, $E8, $F0 EE/63C6: .DB $50, $F8, $E8, $F1, $50, $00, $F0, $F2, $50, $F8, $F0, $F3, $50, $00, $F8, $F4 EE/63D6: .DB $48, $F8, $F8, $F5, $48, $17, $08, $00, $41, $15, $10, $00, $42, $15, $18, $00 EE/63E6: .DB $43, $15, $00, $08, $50, $15, $08, $08, $51, $15, $10, $08, $52, $15, $18, $08 EE/63F6: .DB $53, $15, $20, $08, $54, $15, $00, $10, $60, $15, $08, $10, $61, $15, $10, $10 EE/6406: .DB $62, $15, $18, $10, $63, $15, $20, $10, $64, $15, $00, $18, $70, $15, $08, $18 EE/6416: .DB $71, $15, $10, $18, $72, $15, $18, $18, $73, $15, $20, $18, $74, $15, $00, $20 EE/6426: .DB $48, $15, $08, $20, $49, $15, $10, $20, $4A, $15, $18, $20, $4B, $15, $20, $20 EE/6436: .DB $4C, $15, $12, $08, $00, $41, $15, $10, $00, $42, $15, $18, $00, $43, $15, $00 EE/6446: .DB $08, $50, $15, $08, $08, $51, $15, $10, $08, $52, $15, $18, $08, $53, $15, $20 EE/6456: .DB $08, $54, $15, $00, $10, $60, $15, $08, $10, $61, $15, $10, $10, $62, $15, $18 EE/6466: .DB $10, $63, $15, $20, $10, $64, $15, $00, $18, $70, $15, $08, $18, $71, $15, $10 EE/6476: .DB $18, $72, $15, $18, $18, $73, $15, $20, $18, $74, $15, $0D, $08, $00, $41, $15 EE/6486: .DB $10, $00, $42, $15, $18, $00, $43, $15, $00, $08, $50, $15, $08, $08, $51, $15 EE/6496: .DB $10, $08, $52, $15, $18, $08, $53, $15, $20, $08, $54, $15, $00, $10, $60, $15 EE/64A6: .DB $08, $10, $61, $15, $10, $10, $62, $15, $18, $10, $63, $15, $20, $10, $64, $15 EE/64B6: .DB $08, $08, $00, $41, $15, $10, $00, $42, $15, $18, $00, $43, $15, $00, $08, $50 EE/64C6: .DB $15, $08, $08, $51, $15, $10, $08, $52, $15, $18, $08, $53, $15, $20, $08, $54 EE/64D6: .DB $15, $03, $08, $00, $41, $15, $10, $00, $42, $15, $18, $00, $43, $15, $04, $00 EE/64E6: .DB $00, $65, $15, $08, $00, $66, $15, $00, $08, $75, $15, $08, $08, $76, $15, $04 EE/64F6: .DB $08, $08, $65, $D5, $00, $08, $66, $D5, $08, $00, $75, $D5, $00, $00, $76, $D5 EE/6506: .DB $04, $00, $00, $45, $15, $08, $00, $46, $15, $00, $08, $55, $15, $08, $08, $56 EE/6516: .DB $15, $04, $08, $08, $45, $D5, $00, $08, $46, $D5, $08, $00, $55, $D5, $00, $00 EE/6526: .DB $56, $D5, $04, $F8, $F0, $5C, $11, $00, $F0, $5D, $11, $F8, $F8, $6C, $11, $00 EE/6536: .DB $F8, $6D, $11, $04, $F9, $F0, $78, $11, $01, $F0, $79, $11, $F9, $F8, $7A, $11 EE/6546: .DB $01, $F8, $7B, $11, $04, $F8, $F0, $59, $51, $00, $F0, $58, $51, $F8, $F8, $69 EE/6556: .DB $51, $00, $F8, $68, $51, $04, $F8, $F1, $4F, $51, $00, $F1, $4E, $51, $F8, $F9 EE/6566: .DB $5F, $51, $00, $F9, $5E, $51, $04, $F8, $F0, $5A, $11, $00, $F0, $5B, $11, $F8 EE/6576: .DB $F8, $6A, $11, $00, $F8, $6B, $11, $04, $F9, $F0, $6E, $11, $01, $F0, $6F, $11 EE/6586: .DB $F9, $F8, $7E, $11, $01, $F8, $7F, $11, $04, $F8, $F0, $58, $11, $00, $F0, $59 EE/6596: .DB $11, $F8, $F8, $68, $11, $00, $F8, $69, $11, $04, $F8, $F1, $4E, $11, $00, $F1 EE/65A6: .DB $4F, $11, $F8, $F9, $5E, $11, $00, $F9, $5F, $11, $02, $00, $F8, $7C, $13, $00 EE/65B6: .DB $00, $7C, $93, $0A, $F8, $7C, $13, $0A, $00, $7C, $93, $02, $0A, $F8, $7C, $13 EE/65C6: .DB $0A, $00, $7C, $93, $14, $F8, $7C, $13, $14, $00, $7C, $93, $02, $14, $F8, $7C EE/65D6: .DB $13, $14, $00, $7C, $93, $00, $F8, $7C, $13, $00, $00, $7C, $93, $02, $00, $F8 EE/65E6: .DB $7C, $53, $00, $00, $7C, $D3, $F6, $F8, $7C, $53, $F6, $00, $7C, $D3, $02, $F6 EE/65F6: .DB $F8, $7C, $53, $F6, $00, $7C, $D3, $EC, $F8, $7C, $53, $EC, $00, $7C, $D3, $02 EE/6606: .DB $EC, $F8, $7C, $53, $EC, $00, $7C, $D3, $00, $F8, $7C, $53, $00, $00, $7C, $D3 EE/6616: .DB $07, $F7, $F4, $EA, $12, $FF, $F4, $EB, $12, $07, $F4, $EC, $12, $0F, $F4, $ED EE/6626: .DB $12, $FF, $FC, $EE, $12, $07, $FC, $EF, $12, $0F, $FC, $BF, $12, $0C, $F8, $F0 EE/6636: .DB $E0, $12, $00, $F0, $E1, $12, $08, $F0, $E2, $12, $10, $F0, $E3, $12, $18, $F0 EE/6646: .DB $AE, $12, $F8, $F8, $E4, $12, $00, $F8, $E5, $12, $08, $F8, $E6, $12, $10, $F8 EE/6656: .DB $E7, $12, $18, $F8, $BE, $12, $00, $00, $E8, $12, $08, $00, $E9, $12, $0E, $F6 EE/6666: .DB $ED, $D2, $12, $FE, $ED, $D3, $12, $06, $ED, $D4, $12, $0E, $ED, $D5, $12, $16 EE/6676: .DB $ED, $D6, $12, $F6, $F5, $D7, $12, $FE, $F5, $D8, $12, $06, $F5, $D9, $12, $0E EE/6686: .DB $F5, $DA, $12, $16, $F5, $DB, $12, $FE, $FD, $DC, $12, $06, $FD, $DD, $12, $0E EE/6696: .DB $FD, $DE, $12, $16, $FD, $DF, $12, $12, $F8, $E8, $C0, $12, $00, $E8, $C1, $12 EE/66A6: .DB $08, $E8, $C2, $12, $10, $E8, $C3, $12, $18, $E8, $C4, $12, $F0, $F0, $C5, $12 EE/66B6: .DB $F8, $F0, $C6, $12, $00, $F0, $C7, $12, $08, $F0, $C8, $12, $10, $F0, $C9, $12 EE/66C6: .DB $18, $F0, $CA, $12, $F8, $F8, $CB, $12, $00, $F8, $CC, $12, $08, $F8, $CD, $12 EE/66D6: .DB $10, $F8, $CE, $12, $18, $F8, $CF, $12, $00, $00, $D0, $12, $08, $00, $D1, $12 EE/66E6: .DB $10, $F8, $F8, $A0, $12, $00, $F8, $A1, $12, $F8, $00, $B0, $12, $00, $00, $B1 EE/66F6: .DB $12, $F8, $F0, $A2, $12, $00, $F0, $A3, $12, $F8, $F8, $B2, $12, $00, $F8, $B3 EE/6706: .DB $12, $F8, $00, $A4, $12, $00, $00, $A5, $12, $F8, $08, $B4, $12, $00, $08, $B5 EE/6716: .DB $12, $F8, $04, $A0, $13, $00, $04, $A0, $53, $F8, $0C, $A0, $93, $00, $0C, $A0 EE/6726: .DB $D3, $10, $F9, $F8, $A0, $12, $01, $F8, $A1, $12, $F9, $00, $B0, $12, $01, $00 EE/6736: .DB $B1, $12, $F8, $F0, $A6, $12, $00, $F0, $A7, $12, $F8, $F8, $B6, $12, $00, $F8 EE/6746: .DB $B7, $12, $F8, $00, $A8, $12, $00, $00, $A9, $12, $F8, $08, $B8, $12, $00, $08 EE/6756: .DB $B9, $12, $F8, $04, $A0, $13, $00, $04, $A0, $53, $F8, $0C, $A0, $93, $00, $0C EE/6766: .DB $A0, $D3, $10, $F7, $F8, $A0, $12, $FF, $F8, $A1, $12, $F7, $00, $B0, $12, $FF EE/6776: .DB $00, $B1, $12, $F8, $F0, $A7, $52, $00, $F0, $A6, $52, $F8, $F8, $B7, $52, $00 EE/6786: .DB $F8, $B6, $52, $F8, $00, $A9, $52, $00, $00, $A8, $52, $F8, $08, $B9, $52, $00 EE/6796: .DB $08, $B8, $52, $F8, $04, $A0, $13, $00, $04, $A0, $53, $F8, $0C, $A0, $93, $00 EE/67A6: .DB $0C, $A0, $D3, $10, $F8, $F8, $98, $12, $00, $F8, $99, $12, $F8, $00, $9A, $12 EE/67B6: .DB $00, $00, $9B, $12, $F8, $F0, $A2, $12, $00, $F0, $A3, $12, $F8, $F8, $B2, $12 EE/67C6: .DB $00, $F8, $B3, $12, $F8, $00, $A4, $12, $00, $00, $A5, $12, $F8, $08, $B4, $12 EE/67D6: .DB $00, $08, $B5, $12, $F8, $04, $A0, $13, $00, $04, $A0, $53, $F8, $0C, $A0, $93 EE/67E6: .DB $00, $0C, $A0, $D3, $0E, $F6, $ED, $D2, $12, $FE, $ED, $D3, $12, $06, $ED, $D4 EE/67F6: .DB $12, $0E, $ED, $AC, $12, $16, $ED, $AD, $12, $F6, $F5, $D7, $12, $FE, $F5, $D8 EE/6806: .DB $12, $06, $F5, $D9, $12, $0E, $F5, $BC, $12, $16, $F5, $BD, $12, $FE, $FD, $DC EE/6816: .DB $12, $06, $FD, $DD, $12, $0E, $FD, $DE, $12, $16, $FD, $DF, $12, $06, $F8, $F4 EE/6826: .DB $84, $15, $00, $F4, $85, $15, $F8, $FC, $94, $15, $00, $FC, $95, $15, $F8, $04 EE/6836: .DB $A4, $15, $00, $04, $A5, $15, $06, $F8, $F4, $86, $15, $00, $F4, $87, $15, $F8 EE/6846: .DB $FC, $96, $15, $00, $FC, $97, $15, $F8, $04, $A6, $15, $00, $04, $A7, $15, $06 EE/6856: .DB $F8, $F4, $88, $15, $00, $F4, $89, $15, $F8, $FC, $98, $15, $00, $FC, $99, $15 EE/6866: .DB $F8, $04, $A8, $15, $00, $04, $A9, $15, $06, $F8, $F4, $8A, $15, $00, $F4, $8B EE/6876: .DB $15, $F8, $FC, $9A, $15, $00, $FC, $9B, $15, $F8, $04, $AA, $15, $00, $04, $AB EE/6886: .DB $15, $06, $F8, $F4, $89, $55, $00, $F4, $88, $55, $F8, $FC, $99, $55, $00, $FC EE/6896: .DB $98, $55, $F8, $04, $A9, $55, $00, $04, $A8, $55, $06, $F8, $F4, $8B, $55, $00 EE/68A6: .DB $F4, $8A, $55, $F8, $FC, $9B, $55, $00, $FC, $9A, $55, $F8, $04, $AB, $55, $00 EE/68B6: .DB $04, $AA, $55, $02, $FB, $FB, $0F, $07, $04, $04, $1F, $07, $02, $FB, $FB, $1F EE/68C6: .DB $07, $04, $04, $0F, $07, $06, $F8, $F8, $B1, $15, $00, $F8, $B1, $55, $F0, $00 EE/68D6: .DB $C0, $15, $F8, $00, $C1, $15, $00, $00, $C1, $55, $08, $00, $C0, $55, $0C, $F0 EE/68E6: .DB $F0, $D0, $15, $F8, $F0, $D1, $15, $00, $F0, $D1, $55, $08, $F0, $D0, $55, $F0 EE/68F6: .DB $F8, $B2, $15, $F8, $F8, $B3, $15, $00, $F8, $B3, $55, $08, $F8, $B2, $55, $F0 EE/6906: .DB $00, $C2, $15, $F8, $00, $C3, $15, $00, $00, $C3, $55, $08, $00, $C2, $55, $12 EE/6916: .DB $F8, $E0, $D3, $15, $00, $E0, $D3, $55, $F0, $E8, $B4, $15, $F8, $E8, $B5, $15 EE/6926: .DB $00, $E8, $B5, $55, $08, $E8, $B4, $55, $F0, $F0, $C4, $15, $F8, $F0, $C5, $15 EE/6936: .DB $00, $F0, $C5, $55, $08, $F0, $C4, $55, $F0, $F8, $D4, $15, $F8, $F8, $D5, $15 EE/6946: .DB $00, $F8, $D5, $55, $08, $F8, $D4, $55, $F0, $00, $B6, $15, $F8, $00, $B7, $15 EE/6956: .DB $00, $00, $B7, $55, $08, $00, $B6, $55, $14, $F8, $D8, $C7, $15, $00, $D8, $C7 EE/6966: .DB $55, $F8, $E0, $D7, $15, $00, $E0, $D7, $55, $F0, $E8, $B8, $15, $F8, $E8, $B9 EE/6976: .DB $15, $00, $E8, $B9, $55, $08, $E8, $B8, $55, $F0, $F0, $C8, $15, $F8, $F0, $C9 EE/6986: .DB $15, $00, $F0, $C9, $55, $08, $F0, $C8, $55, $F0, $F8, $D8, $15, $F8, $F8, $D9 EE/6996: .DB $15, $00, $F8, $D9, $55, $08, $F8, $D8, $55, $F0, $00, $BA, $15, $F8, $00, $BB EE/69A6: .DB $15, $00, $00, $BB, $55, $08, $00, $BA, $55, $01, $00, $00, $9F, $15, $03, $FB EE/69B6: .DB $FB, $8E, $15, $03, $FB, $8F, $15, $FB, $03, $9E, $15, $04, $F9, $F9, $8C, $15 EE/69C6: .DB $01, $F9, $8D, $15, $F9, $01, $9C, $15, $01, $01, $9D, $15, $04, $F8, $F8, $AC EE/69D6: .DB $15, $00, $F8, $AD, $15, $F8, $00, $AE, $15, $00, $00, $AF, $15, $04, $F8, $F8 EE/69E6: .DB $CA, $15, $00, $F8, $CA, $55, $F8, $00, $DA, $15, $00, $00, $DA, $55, $02, $F8 EE/69F6: .DB $00, $CB, $15, $00, $00, $CB, $55, $02, $F8, $00, $DB, $15, $00, $00, $DB, $55 EE/6A06: .DB $0B, $FA, $F0, $F9, $12, $02, $F0, $FA, $12, $0A, $F0, $FB, $12, $12, $F0, $FC EE/6A16: .DB $12, $FA, $F8, $FD, $12, $02, $F8, $FE, $12, $0A, $F8, $FF, $12, $12, $F8, $AE EE/6A26: .DB $12, $02, $00, $BC, $12, $0A, $00, $BD, $12, $12, $00, $BE, $12, $0E, $F6, $EF EE/6A36: .DB $E5, $12, $FE, $EF, $E6, $12, $06, $EF, $E7, $12, $0E, $EF, $E8, $12, $16, $EF EE/6A46: .DB $E9, $12, $F6, $F7, $EA, $12, $FE, $F7, $EB, $12, $06, $F7, $EC, $12, $0E, $F7 EE/6A56: .DB $ED, $12, $16, $F7, $EE, $12, $FE, $FF, $EF, $12, $06, $FF, $F6, $12, $0E, $FF EE/6A66: .DB $F7, $12, $16, $FF, $F8, $12, $0F, $F4, $EA, $D6, $12, $FC, $EA, $D7, $12, $04 EE/6A76: .DB $EA, $D8, $12, $0C, $EA, $D9, $12, $14, $EA, $DA, $12, $F4, $F2, $DB, $12, $FC EE/6A86: .DB $F2, $DC, $12, $04, $F2, $DD, $12, $0C, $F2, $DE, $12, $14, $F2, $DF, $12, $F4 EE/6A96: .DB $FA, $E0, $12, $FC, $FA, $E1, $12, $04, $FA, $E2, $12, $0C, $FA, $E3, $12, $14 EE/6AA6: .DB $FA, $E4, $12, $16, $F6, $E8, $C0, $12, $FE, $E8, $C1, $12, $06, $E8, $C2, $12 EE/6AB6: .DB $0E, $E8, $C3, $12, $16, $E8, $C4, $12, $EE, $F0, $C5, $12, $F6, $F0, $C6, $12 EE/6AC6: .DB $FE, $F0, $C7, $12, $06, $F0, $C8, $12, $0E, $F0, $C9, $12, $16, $F0, $CA, $12 EE/6AD6: .DB $EE, $F8, $CB, $12, $F6, $F8, $CC, $12, $FE, $F8, $CD, $12, $06, $F8, $CE, $12 EE/6AE6: .DB $0E, $F8, $CF, $12, $16, $F8, $D0, $12, $F6, $00, $D1, $12, $FE, $00, $D2, $12 EE/6AF6: .DB $06, $00, $D3, $12, $0E, $00, $D4, $12, $16, $00, $D5, $12, $0F, $F4, $EA, $D6 EE/6B06: .DB $12, $FC, $EA, $D7, $12, $04, $EA, $D8, $12, $0C, $EA, $D9, $12, $14, $EA, $DA EE/6B16: .DB $12, $F4, $F2, $DB, $12, $FC, $F2, $DC, $12, $04, $F2, $DD, $12, $0C, $F2, $DE EE/6B26: .DB $12, $14, $F2, $AF, $12, $F4, $FA, $E0, $12, $FC, $FA, $E1, $12, $04, $FA, $E2 EE/6B36: .DB $12, $0C, $FA, $E3, $12, $14, $FA, $BF, $12, $05, $F4, $02, $04, $00, $FC, $02 EE/6B46: .DB $04, $00, $04, $02, $04, $00, $0C, $02, $04, $00, $14, $02, $04, $00, $0A, $F4 EE/6B56: .DB $02, $04, $00, $FC, $02, $04, $00, $04, $02, $04, $00, $0C, $02, $04, $00, $14 EE/6B66: .DB $02, $04, $00, $F4, $0A, $04, $00, $FC, $0A, $04, $00, $04, $0A, $04, $00, $0C EE/6B76: .DB $0A, $04, $00, $14, $0A, $04, $00, $0F, $F4, $02, $04, $00, $FC, $02, $04, $00 EE/6B86: .DB $04, $02, $04, $00, $0C, $02, $04, $00, $14, $02, $04, $00, $F4, $0A, $04, $00 EE/6B96: .DB $FC, $0A, $04, $00, $04, $0A, $04, $00, $0C, $0A, $04, $00, $14, $0A, $04, $00 EE/6BA6: .DB $F4, $12, $04, $00, $FC, $12, $04, $00, $04, $12, $04, $00, $0C, $12, $04, $00 EE/6BB6: .DB $14, $12, $04, $00, $04, $00, $F8, $7C, $15, $00, $00, $7C, $95, $0A, $F8, $7C EE/6BC6: .DB $15, $0A, $00, $7C, $95, $14, $F8, $7C, $15, $14, $00, $7C, $95, $04, $00, $F8 EE/6BD6: .DB $7C, $55, $00, $00, $7C, $D5, $F6, $F8, $7C, $55, $F6, $00, $7C, $D5, $EC, $F8 EE/6BE6: .DB $7C, $55, $EC, $00, $7C, $D5 ; [ ] keyControl: EE/6BEC: 08 PHP EE/6BED: E2 20 SEP #$20 EE/6BEF: A5 20 LDA $20 EE/6BF1: C9 02 CMP #$02 EE/6BF3: D0 03 BNE $6BF8 EE/6BF5: 4C 6D 6F JMP $6F6D EE/6BF8: E2 20 SEP #$20 EE/6BFA: C2 10 REP #$10 EE/6BFC: A5 05 LDA $05 EE/6BFE: 89 40 BIT #$40 EE/6C00: F0 03 BEQ $6C05 EE/6C02: 4C 45 6D JMP $6D45 EE/6C05: E2 20 SEP #$20 EE/6C07: C2 10 REP #$10 EE/6C09: A5 05 LDA $05 EE/6C0B: 89 01 BIT #$01 EE/6C0D: F0 1F BEQ $6C2E EE/6C0F: C2 20 REP #$20 EE/6C11: A5 29 LDA $29 EE/6C13: 38 SEC EE/6C14: E9 20 00 SBC #$0020 EE/6C17: 85 29 STA $29 EE/6C19: A5 2B LDA $2B EE/6C1B: E9 00 00 SBC #$0000 EE/6C1E: 85 2B STA $2B EE/6C20: A9 00 FE LDA #$FE00 EE/6C23: C5 29 CMP $29 EE/6C25: 30 53 BMI $6C7A EE/6C27: A9 00 FE LDA #$FE00 EE/6C2A: 85 29 STA $29 EE/6C2C: 80 4C BRA $6C7A EE/6C2E: E2 20 SEP #$20 EE/6C30: A5 05 LDA $05 EE/6C32: 89 02 BIT #$02 EE/6C34: F0 20 BEQ $6C56 EE/6C36: C2 20 REP #$20 EE/6C38: C2 21 REP #$21 EE/6C3A: A5 29 LDA $29 EE/6C3C: 69 20 00 ADC #$0020 EE/6C3F: 85 29 STA $29 EE/6C41: A5 2B LDA $2B EE/6C43: 69 00 00 ADC #$0000 EE/6C46: 85 2B STA $2B EE/6C48: A9 01 02 LDA #$0201 EE/6C4B: C5 29 CMP $29 EE/6C4D: 10 2B BPL $6C7A EE/6C4F: A9 00 02 LDA #$0200 EE/6C52: 85 29 STA $29 EE/6C54: 80 24 BRA $6C7A EE/6C56: C2 20 REP #$20 EE/6C58: A5 29 LDA $29 EE/6C5A: F0 1E BEQ $6C7A EE/6C5C: 30 0F BMI $6C6D EE/6C5E: 38 SEC EE/6C5F: E9 10 00 SBC #$0010 EE/6C62: 85 29 STA $29 EE/6C64: A5 2B LDA $2B EE/6C66: E9 00 00 SBC #$0000 EE/6C69: 85 2B STA $2B EE/6C6B: 80 0D BRA $6C7A EE/6C6D: 18 CLC EE/6C6E: 69 10 00 ADC #$0010 EE/6C71: 85 29 STA $29 EE/6C73: A5 2B LDA $2B EE/6C75: 69 00 00 ADC #$0000 EE/6C78: 85 2B STA $2B EE/6C7A: C2 20 REP #$20 EE/6C7C: A5 04 LDA $04 EE/6C7E: 89 80 00 BIT #$0080 EE/6C81: F0 0F BEQ $6C92 EE/6C83: A5 26 LDA $26 EE/6C85: 18 CLC EE/6C86: 69 40 00 ADC #$0040 EE/6C89: C9 01 08 CMP #$0801 EE/6C8C: 10 14 BPL $6CA2 EE/6C8E: 85 26 STA $26 EE/6C90: 80 10 BRA $6CA2 EE/6C92: A5 26 LDA $26 EE/6C94: 38 SEC EE/6C95: E9 80 00 SBC #$0080 EE/6C98: C9 00 00 CMP #$0000 EE/6C9B: 10 03 BPL $6CA0 EE/6C9D: A9 00 00 LDA #$0000 EE/6CA0: 85 26 STA $26 EE/6CA2: E2 20 SEP #$20 EE/6CA4: A5 05 LDA $05 EE/6CA6: 89 08 BIT #$08 EE/6CA8: F0 11 BEQ $6CBB EE/6CAA: C2 20 REP #$20 EE/6CAC: A5 2D LDA $2D EE/6CAE: 38 SEC EE/6CAF: E9 20 00 SBC #$0020 EE/6CB2: C9 00 FE CMP #$FE00 EE/6CB5: 30 33 BMI $6CEA EE/6CB7: 85 2D STA $2D EE/6CB9: 80 2F BRA $6CEA EE/6CBB: E2 20 SEP #$20 EE/6CBD: A5 05 LDA $05 EE/6CBF: 89 04 BIT #$04 EE/6CC1: F0 11 BEQ $6CD4 EE/6CC3: C2 20 REP #$20 EE/6CC5: A5 2D LDA $2D EE/6CC7: 18 CLC EE/6CC8: 69 20 00 ADC #$0020 EE/6CCB: C9 01 02 CMP #$0201 EE/6CCE: 10 1A BPL $6CEA EE/6CD0: 85 2D STA $2D EE/6CD2: 80 16 BRA $6CEA EE/6CD4: C2 20 REP #$20 EE/6CD6: A5 2D LDA $2D EE/6CD8: 30 0A BMI $6CE4 EE/6CDA: 38 SEC EE/6CDB: E9 10 00 SBC #$0010 EE/6CDE: 90 0A BCC $6CEA EE/6CE0: 85 2D STA $2D EE/6CE2: 80 06 BRA $6CEA EE/6CE4: 18 CLC EE/6CE5: 69 10 00 ADC #$0010 EE/6CE8: 85 2D STA $2D EE/6CEA: C2 20 REP #$20 EE/6CEC: A5 04 LDA $04 EE/6CEE: 29 20 02 AND #$0220 EE/6CF1: C9 20 02 CMP #$0220 EE/6CF4: D0 11 BNE $6D07 EE/6CF6: AD 73 00 LDA $0073 EE/6CF9: 1A INC EE/6CFA: 1A INC EE/6CFB: C9 68 01 CMP #$0168 EE/6CFE: 30 04 BMI $6D04 EE/6D00: 38 SEC EE/6D01: E9 68 01 SBC #$0168 EE/6D04: 8D 73 00 STA $0073 EE/6D07: A5 04 LDA $04 EE/6D09: 29 10 01 AND #$0110 EE/6D0C: C9 10 01 CMP #$0110 EE/6D0F: D0 11 BNE $6D22 EE/6D11: AD 73 00 LDA $0073 EE/6D14: 3A DEC EE/6D15: 3A DEC EE/6D16: C9 00 00 CMP #$0000 EE/6D19: 10 04 BPL $6D1F EE/6D1B: 18 CLC EE/6D1C: 69 68 01 ADC #$0168 EE/6D1F: 8D 73 00 STA $0073 EE/6D22: A5 05 LDA $05 EE/6D24: 89 80 00 BIT #$0080 EE/6D27: F0 03 BEQ $6D2C ; branch if b button is not pressed EE/6D29: 20 6E 93 JSR $936E ; land airship EE/6D2C: 4C 7E 6E JMP $6E7E EE/6D2F: .DW $0000, $010E, $005A, $0000, $00B4, $00E1, $0087, $0000 EE/6D3F: .DW $0000, $013B, $002D EE/6D45: C2 20 REP #$20 EE/6D47: A5 05 LDA $05 EE/6D49: 29 0F 00 AND #$000F EE/6D4C: D0 03 BNE $6D51 EE/6D4E: 4C 38 6E JMP $6E38 EE/6D51: 0A ASL EE/6D52: AA TAX EE/6D53: BF 2F 6D EE LDA $EE6D2F,X EE/6D57: 18 CLC EE/6D58: 65 73 ADC $73 EE/6D5A: C9 68 01 CMP #$0168 EE/6D5D: 90 03 BCC $6D62 EE/6D5F: E9 68 01 SBC #$0168 EE/6D62: 85 58 STA $58 EE/6D64: C9 B4 00 CMP #$00B4 EE/6D67: 90 03 BCC $6D6C EE/6D69: E9 B4 00 SBC #$00B4 EE/6D6C: AA TAX EE/6D6D: BF F1 FE EF LDA $EFFEF1,X EE/6D71: 85 5E STA $5E EE/6D73: BF 4B FF EF LDA $EFFF4B,X EE/6D77: 85 60 STA $60 EE/6D79: C2 20 REP #$20 EE/6D7B: E2 10 SEP #$10 EE/6D7D: A5 58 LDA $58 EE/6D7F: C9 B4 00 CMP #$00B4 EE/6D82: 90 15 BCC $6D99 EE/6D84: A2 00 LDX #$00 EE/6D86: 86 5B STX $5B EE/6D88: C9 0E 01 CMP #$010E EE/6D8B: 90 06 BCC $6D93 EE/6D8D: A2 01 LDX #$01 EE/6D8F: 86 5A STX $5A EE/6D91: 80 11 BRA $6DA4 EE/6D93: A2 00 LDX #$00 EE/6D95: 86 5A STX $5A EE/6D97: 80 0B BRA $6DA4 EE/6D99: A2 01 LDX #$01 EE/6D9B: 86 5B STX $5B EE/6D9D: C9 5A 00 CMP #$005A EE/6DA0: 90 EB BCC $6D8D EE/6DA2: 80 EF BRA $6D93 EE/6DA4: 64 6B STZ $6B EE/6DA6: A6 60 LDX $60 EE/6DA8: 8E 02 42 STX $4202 EE/6DAB: A2 02 LDX #$02 EE/6DAD: 8E 03 42 STX $4203 EE/6DB0: EA NOP EE/6DB1: EA NOP EE/6DB2: EA NOP EE/6DB3: AD 16 42 LDA $4216 EE/6DB6: 85 6A STA $6A EE/6DB8: A6 5A LDX $5A EE/6DBA: D0 15 BNE $6DD1 EE/6DBC: 18 CLC EE/6DBD: 65 37 ADC $37 EE/6DBF: 85 37 STA $37 EE/6DC1: A5 39 LDA $39 EE/6DC3: 69 00 00 ADC #$0000 EE/6DC6: 85 39 STA $39 EE/6DC8: 18 CLC EE/6DC9: A5 40 LDA $40 EE/6DCB: 65 6A ADC $6A EE/6DCD: 85 40 STA $40 EE/6DCF: 80 17 BRA $6DE8 EE/6DD1: 85 6A STA $6A EE/6DD3: A5 37 LDA $37 EE/6DD5: 38 SEC EE/6DD6: E5 6A SBC $6A EE/6DD8: 85 37 STA $37 EE/6DDA: A5 39 LDA $39 EE/6DDC: E9 00 00 SBC #$0000 EE/6DDF: 85 39 STA $39 EE/6DE1: 38 SEC EE/6DE2: A5 40 LDA $40 EE/6DE4: E5 6A SBC $6A EE/6DE6: 85 40 STA $40 EE/6DE8: A6 5E LDX $5E EE/6DEA: 8E 02 42 STX $4202 EE/6DED: A2 02 LDX #$02 EE/6DEF: 8E 03 42 STX $4203 EE/6DF2: EA NOP EE/6DF3: EA NOP EE/6DF4: EA NOP EE/6DF5: AD 16 42 LDA $4216 EE/6DF8: 85 6A STA $6A EE/6DFA: A6 5B LDX $5B EE/6DFC: D0 15 BNE $6E13 EE/6DFE: 18 CLC EE/6DFF: 65 33 ADC $33 EE/6E01: 85 33 STA $33 EE/6E03: A5 35 LDA $35 EE/6E05: 69 00 00 ADC #$0000 EE/6E08: 85 35 STA $35 EE/6E0A: 18 CLC EE/6E0B: A5 3C LDA $3C EE/6E0D: 65 6A ADC $6A EE/6E0F: 85 3C STA $3C EE/6E11: 80 17 BRA $6E2A EE/6E13: 85 6A STA $6A EE/6E15: A5 33 LDA $33 EE/6E17: 38 SEC EE/6E18: E5 6A SBC $6A EE/6E1A: 85 33 STA $33 EE/6E1C: A5 35 LDA $35 EE/6E1E: E9 00 00 SBC #$0000 EE/6E21: 85 35 STA $35 EE/6E23: 38 SEC EE/6E24: A5 3C LDA $3C EE/6E26: E5 6A SBC $6A EE/6E28: 85 3C STA $3C EE/6E2A: A5 34 LDA $34 EE/6E2C: 29 FF 0F AND #$0FFF EE/6E2F: 85 34 STA $34 EE/6E31: A5 38 LDA $38 EE/6E33: 29 FF 0F AND #$0FFF EE/6E36: 85 38 STA $38 EE/6E38: A5 29 LDA $29 EE/6E3A: F0 1E BEQ $6E5A EE/6E3C: 30 0F BMI $6E4D EE/6E3E: 38 SEC EE/6E3F: E9 10 00 SBC #$0010 EE/6E42: 85 29 STA $29 EE/6E44: A5 2B LDA $2B EE/6E46: E9 00 00 SBC #$0000 EE/6E49: 85 2B STA $2B EE/6E4B: 80 0D BRA $6E5A EE/6E4D: 18 CLC EE/6E4E: 69 10 00 ADC #$0010 EE/6E51: 85 29 STA $29 EE/6E53: A5 2B LDA $2B EE/6E55: 69 00 00 ADC #$0000 EE/6E58: 85 2B STA $2B EE/6E5A: A5 2D LDA $2D EE/6E5C: 30 0A BMI $6E68 EE/6E5E: 38 SEC EE/6E5F: E9 10 00 SBC #$0010 EE/6E62: 90 0A BCC $6E6E EE/6E64: 85 2D STA $2D EE/6E66: 80 06 BRA $6E6E EE/6E68: 18 CLC EE/6E69: 69 10 00 ADC #$0010 EE/6E6C: 85 2D STA $2D EE/6E6E: A5 26 LDA $26 EE/6E70: 38 SEC EE/6E71: E9 80 00 SBC #$0080 EE/6E74: C9 00 00 CMP #$0000 EE/6E77: 10 03 BPL $6E7C EE/6E79: A9 00 00 LDA #$0000 EE/6E7C: 85 26 STA $26 EE/6E7E: C2 20 REP #$20 EE/6E80: A5 32 LDA $32 EE/6E82: 89 10 00 BIT #$0010 EE/6E85: D0 26 BNE $6EAD EE/6E87: A5 05 LDA $05 EE/6E89: 89 10 00 BIT #$0010 EE/6E8C: F0 1F BEQ $6EAD EE/6E8E: AD F6 11 LDA $11F6 EE/6E91: 89 01 00 BIT #$0001 EE/6E94: D0 0E BNE $6EA4 EE/6E96: 09 01 00 ORA #$0001 EE/6E99: 8D F6 11 STA $11F6 EE/6E9C: 20 8F 41 JSR $418F EE/6E9F: 20 6C 42 JSR $426C EE/6EA2: 80 09 BRA $6EAD EE/6EA4: 29 FE FF AND #$FFFE EE/6EA7: 8D F6 11 STA $11F6 EE/6EAA: 20 2D 41 JSR $412D EE/6EAD: A5 04 LDA $04 EE/6EAF: 85 31 STA $31 EE/6EB1: A5 19 LDA $19 EE/6EB3: D0 33 BNE $6EE8 EE/6EB5: A5 08 LDA $08 EE/6EB7: 89 40 00 BIT #$0040 EE/6EBA: F0 2C BEQ $6EE8 EE/6EBC: 64 ED STZ $ED EE/6EBE: A5 2F LDA $2F EE/6EC0: 8D F4 11 STA $11F4 EE/6EC3: A5 73 LDA $73 EE/6EC5: 09 00 80 ORA #$8000 EE/6EC8: 8D F2 11 STA $11F2 EE/6ECB: E2 20 SEP #$20 EE/6ECD: AF 69 B2 EE LDA $EEB269 ; CA/0068 (blackjack deck) EE/6ED1: 85 EA STA $EA EE/6ED3: AF 6A B2 EE LDA $EEB26A EE/6ED7: 85 EB STA $EB EE/6ED9: AF 6B B2 EE LDA $EEB26B EE/6EDD: 18 CLC EE/6EDE: 69 CA ADC #$CA EE/6EE0: 85 EC STA $EC EE/6EE2: A5 E7 LDA $E7 EE/6EE4: 09 41 ORA #$41 EE/6EE6: 85 E7 STA $E7 EE/6EE8: E2 20 SEP #$20 EE/6EEA: AD 64 1F LDA $1F64 EE/6EED: C9 01 CMP #$01 EE/6EEF: D0 7A BNE $6F6B EE/6EF1: A5 04 LDA $04 EE/6EF3: 89 80 BIT #$80 EE/6EF5: F0 74 BEQ $6F6B EE/6EF7: AD D2 1D LDA $1DD2 EE/6EFA: 89 01 BIT #$01 EE/6EFC: D0 6D BNE $6F6B EE/6EFE: C2 30 REP #$30 EE/6F00: A5 34 LDA $34 EE/6F02: 4A LSR EE/6F03: 4A LSR EE/6F04: 4A LSR EE/6F05: 4A LSR EE/6F06: 4A LSR EE/6F07: 4A LSR EE/6F08: 29 FF 00 AND #$00FF EE/6F0B: 85 58 STA $58 EE/6F0D: A5 38 LDA $38 EE/6F0F: 4A LSR EE/6F10: 4A LSR EE/6F11: 4A LSR EE/6F12: 4A LSR EE/6F13: 4A LSR EE/6F14: 4A LSR EE/6F15: 29 FF 00 AND #$00FF EE/6F18: 85 5A STA $5A EE/6F1A: A2 00 00 LDX #$0000 EE/6F1D: BF 00 0B 00 LDA $000B00,X EE/6F21: C5 58 CMP $58 EE/6F23: D0 0A BNE $6F2F EE/6F25: BF 02 0B 00 LDA $000B02,X EE/6F29: C5 5A CMP $5A EE/6F2B: D0 02 BNE $6F2F EE/6F2D: 80 0B BRA $6F3A EE/6F2F: E8 INX EE/6F30: E8 INX EE/6F31: E8 INX EE/6F32: E8 INX EE/6F33: E0 08 00 CPX #$0008 EE/6F36: D0 E5 BNE $6F1D EE/6F38: 80 31 BRA $6F6B EE/6F3A: 64 26 STZ $26 EE/6F3C: 64 28 STZ $28 EE/6F3E: 64 2A STZ $2A EE/6F40: 64 2C STZ $2C EE/6F42: 64 2D STZ $2D EE/6F44: C2 10 REP #$10 EE/6F46: A2 74 01 LDX #$0174 EE/6F49: BF 00 50 CF LDA $CF5000,X EE/6F4D: 8D E0 11 STA $11E0 EE/6F50: A9 29 00 LDA #$0029 ; battle bg $29 (doom gaze) EE/6F53: 8D E2 11 STA $11E2 EE/6F56: E2 20 SEP #$20 EE/6F58: 9C E4 11 STZ $11E4 EE/6F5B: AD F6 11 LDA $11F6 ; enable battle and ??? EE/6F5E: 09 22 ORA #$22 EE/6F60: 8D F6 11 STA $11F6 EE/6F63: AD FA 11 LDA $11FA EE/6F66: 09 01 ORA #$01 EE/6F68: 8D FA 11 STA $11FA EE/6F6B: 28 PLP EE/6F6C: 60 RTS EE/6F6D: E2 20 SEP #$20 EE/6F6F: C2 10 REP #$10 EE/6F71: A5 05 LDA $05 EE/6F73: 89 01 BIT #$01 EE/6F75: F0 1F BEQ $6F96 EE/6F77: C2 20 REP #$20 EE/6F79: A5 29 LDA $29 EE/6F7B: 38 SEC EE/6F7C: E9 20 00 SBC #$0020 EE/6F7F: 85 29 STA $29 EE/6F81: A5 2B LDA $2B EE/6F83: E9 00 00 SBC #$0000 EE/6F86: 85 2B STA $2B EE/6F88: A9 00 FE LDA #$FE00 EE/6F8B: C5 29 CMP $29 EE/6F8D: 30 51 BMI $6FE0 EE/6F8F: A9 00 FE LDA #$FE00 EE/6F92: 85 29 STA $29 EE/6F94: 80 4A BRA $6FE0 EE/6F96: E2 20 SEP #$20 EE/6F98: A5 05 LDA $05 EE/6F9A: 89 02 BIT #$02 EE/6F9C: F0 1E BEQ $6FBC EE/6F9E: C2 21 REP #$21 EE/6FA0: A5 29 LDA $29 EE/6FA2: 69 20 00 ADC #$0020 EE/6FA5: 85 29 STA $29 EE/6FA7: A5 2B LDA $2B EE/6FA9: 69 00 00 ADC #$0000 EE/6FAC: 85 2B STA $2B EE/6FAE: A9 01 02 LDA #$0201 EE/6FB1: C5 29 CMP $29 EE/6FB3: 10 2B BPL $6FE0 EE/6FB5: A9 00 02 LDA #$0200 EE/6FB8: 85 29 STA $29 EE/6FBA: 80 24 BRA $6FE0 EE/6FBC: C2 20 REP #$20 EE/6FBE: A5 29 LDA $29 EE/6FC0: F0 1E BEQ $6FE0 EE/6FC2: 30 0F BMI $6FD3 EE/6FC4: 38 SEC EE/6FC5: E9 20 00 SBC #$0020 EE/6FC8: 85 29 STA $29 EE/6FCA: A5 2B LDA $2B EE/6FCC: E9 00 00 SBC #$0000 EE/6FCF: 85 2B STA $2B EE/6FD1: 80 0D BRA $6FE0 EE/6FD3: 18 CLC EE/6FD4: 69 20 00 ADC #$0020 EE/6FD7: 85 29 STA $29 EE/6FD9: A5 2B LDA $2B EE/6FDB: 69 00 00 ADC #$0000 EE/6FDE: 85 2B STA $2B EE/6FE0: C2 20 REP #$20 EE/6FE2: A5 04 LDA $04 EE/6FE4: 89 00 08 BIT #$0800 EE/6FE7: D0 05 BNE $6FEE EE/6FE9: 89 80 00 BIT #$0080 EE/6FEC: F0 0F BEQ $6FFD EE/6FEE: A5 26 LDA $26 EE/6FF0: 18 CLC EE/6FF1: 69 40 00 ADC #$0040 EE/6FF4: C9 01 01 CMP #$0101 EE/6FF7: 10 14 BPL $700D EE/6FF9: 85 26 STA $26 EE/6FFB: 80 10 BRA $700D EE/6FFD: A5 26 LDA $26 EE/6FFF: 38 SEC EE/7000: E9 80 00 SBC #$0080 EE/7003: C9 00 00 CMP #$0000 EE/7006: 10 03 BPL $700B EE/7008: A9 00 00 LDA #$0000 EE/700B: 85 26 STA $26 EE/700D: C2 20 REP #$20 EE/700F: A5 04 LDA $04 EE/7011: 29 20 02 AND #$0220 EE/7014: C9 20 02 CMP #$0220 EE/7017: D0 11 BNE $702A EE/7019: AD 73 00 LDA $0073 EE/701C: 1A INC EE/701D: 1A INC EE/701E: C9 68 01 CMP #$0168 EE/7021: 30 04 BMI $7027 EE/7023: 38 SEC EE/7024: E9 68 01 SBC #$0168 EE/7027: 8D 73 00 STA $0073 EE/702A: A5 04 LDA $04 EE/702C: 29 10 01 AND #$0110 EE/702F: C9 10 01 CMP #$0110 EE/7032: D0 11 BNE $7045 EE/7034: AD 73 00 LDA $0073 EE/7037: 3A DEC EE/7038: 3A DEC EE/7039: C9 00 00 CMP #$0000 EE/703C: 10 04 BPL $7042 EE/703E: 18 CLC EE/703F: 69 68 01 ADC #$0168 EE/7042: 8D 73 00 STA $0073 EE/7045: A5 05 LDA $05 EE/7047: 89 80 00 BIT #$0080 EE/704A: F0 03 BEQ $704F ; branch if b button is not pressed EE/704C: 20 6E 93 JSR $936E ; land airship EE/704F: C2 20 REP #$20 EE/7051: A5 32 LDA $32 EE/7053: 89 10 00 BIT #$0010 EE/7056: D0 26 BNE $707E EE/7058: A5 05 LDA $05 EE/705A: 89 10 00 BIT #$0010 EE/705D: F0 1F BEQ $707E EE/705F: AD F6 11 LDA $11F6 EE/7062: 89 01 00 BIT #$0001 EE/7065: D0 0E BNE $7075 EE/7067: 09 01 00 ORA #$0001 EE/706A: 8D F6 11 STA $11F6 EE/706D: 20 8F 41 JSR $418F EE/7070: 20 6C 42 JSR $426C EE/7073: 80 09 BRA $707E EE/7075: 29 FE FF AND #$FFFE EE/7078: 8D F6 11 STA $11F6 EE/707B: 20 2D 41 JSR $412D EE/707E: A5 04 LDA $04 EE/7080: 85 31 STA $31 EE/7082: 28 PLP EE/7083: 60 RTS ; ------------------------------------------[ World: Events ]------------------------------------------- ; [ Execute Vehicle Event Command ] autoControl: EE/7084: 08 PHP EE/7085: E2 20 SEP #$20 EE/7087: C2 10 REP #$10 EE/7089: A5 E7 LDA $E7 ; EE/708B: 89 04 BIT #$04 EE/708D: F0 04 BEQ $7093 EE/708F: A5 F0 LDA $F0 EE/7091: 80 09 BRA $709C EE/7093: A4 ED LDY $ED EE/7095: B7 EA LDA [$EA],Y ; event script pointer EE/7097: 85 F0 STA $F0 EE/7099: C8 INY EE/709A: 84 ED STY $ED EE/709C: C2 20 REP #$20 EE/709E: 29 FF 00 AND #$00FF EE/70A1: 0A ASL EE/70A2: AA TAX EE/70A3: 7C FB 76 JMP ($76FB,X) ; vehicle event command jump table EE/70A6: 28 PLP EE/70A7: 60 RTS ; [ Vehicle Event Command $00-$7F: Move Vehicle ] ; b0: -dulrfkt ; d: go down ; u: go up ; l: go left ; r: go right ; f: go forward ; k: go backwards ; t: double speed turn EE/70A8: E2 20 SEP #$20 EE/70AA: C2 10 REP #$10 EE/70AC: A5 E7 LDA $E7 EE/70AE: 89 04 BIT #$04 EE/70B0: D0 0F BNE $70C1 ; branch if vehicle is already moving EE/70B2: A4 ED LDY $ED EE/70B4: B7 EA LDA [$EA],Y EE/70B6: 85 EF STA $EF ; movement distance EE/70B8: C8 INY EE/70B9: 84 ED STY $ED EE/70BB: A5 E7 LDA $E7 EE/70BD: 09 04 ORA #$04 EE/70BF: 85 E7 STA $E7 EE/70C1: 64 60 STZ $60 EE/70C3: 64 61 STZ $61 EE/70C5: A5 F0 LDA $F0 EE/70C7: 89 01 BIT #$01 EE/70C9: F0 06 BEQ $70D1 ; branch if not double speed turns EE/70CB: A9 30 LDA #$30 EE/70CD: 05 60 ORA $60 EE/70CF: 85 60 STA $60 EE/70D1: A5 F0 LDA $F0 EE/70D3: 89 02 BIT #$02 EE/70D5: F0 06 BEQ $70DD ; branch if not going backwards EE/70D7: A9 80 LDA #$80 EE/70D9: 05 61 ORA $61 EE/70DB: 85 61 STA $61 EE/70DD: A5 F0 LDA $F0 EE/70DF: 89 04 BIT #$04 EE/70E1: F0 06 BEQ $70E9 ; branch if not going forward EE/70E3: A9 80 LDA #$80 EE/70E5: 05 60 ORA $60 EE/70E7: 85 60 STA $60 EE/70E9: A5 F0 LDA $F0 EE/70EB: 4A LSR EE/70EC: 4A LSR EE/70ED: 4A LSR EE/70EE: 29 0F AND #$0F EE/70F0: 05 61 ORA $61 ; movement direction EE/70F2: 85 61 STA $61 EE/70F4: A5 EF LDA $EF EE/70F6: F0 06 BEQ $70FE ; branch if distance is zero EE/70F8: 3A DEC EE/70F9: 85 EF STA $EF EE/70FB: 4C A6 70 JMP $70A6 EE/70FE: A5 E7 LDA $E7 EE/7100: 29 FB AND #$FB EE/7102: 85 E7 STA $E7 EE/7104: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $80-$B7: Conditional Jump (or) ] EE/7107: E2 20 SEP #$20 EE/7109: A5 F0 LDA $F0 EE/710B: 29 07 AND #$07 EE/710D: 1A INC EE/710E: 85 58 STA $58 EE/7110: A4 ED LDY $ED EE/7112: C2 20 REP #$20 EE/7114: A5 F0 LDA $F0 EE/7116: 29 07 00 AND #$0007 EE/7119: 1A INC EE/711A: 0A ASL EE/711B: 18 CLC EE/711C: 65 ED ADC $ED EE/711E: 85 ED STA $ED EE/7120: C2 20 REP #$20 EE/7122: B7 EA LDA [$EA],Y EE/7124: C8 INY EE/7125: C8 INY EE/7126: 85 5A STA $5A EE/7128: 29 07 00 AND #$0007 EE/712B: AA TAX EE/712C: BF FA 7C EE LDA $EE7CFA,X EE/7130: 85 5C STA $5C EE/7132: A5 5A LDA $5A EE/7134: 29 FF 7F AND #$7FFF EE/7137: 4A LSR EE/7138: 4A LSR EE/7139: 4A LSR EE/713A: AA TAX EE/713B: E2 20 SEP #$20 EE/713D: A5 5B LDA $5B EE/713F: 30 09 BMI $714A EE/7141: BD 80 1E LDA $1E80,X EE/7144: 25 5C AND $5C EE/7146: F0 17 BEQ $715F EE/7148: 80 07 BRA $7151 EE/714A: BD 80 1E LDA $1E80,X EE/714D: 25 5C AND $5C EE/714F: D0 0E BNE $715F EE/7151: C6 58 DEC $58 EE/7153: D0 CB BNE $7120 EE/7155: A4 ED LDY $ED EE/7157: C8 INY EE/7158: C8 INY EE/7159: C8 INY EE/715A: 84 ED STY $ED EE/715C: 4C 93 70 JMP $7093 EE/715F: A4 ED LDY $ED EE/7161: B7 EA LDA [$EA],Y EE/7163: 18 CLC EE/7164: 69 00 ADC #$00 EE/7166: 85 6A STA $6A EE/7168: C8 INY EE/7169: B7 EA LDA [$EA],Y EE/716B: 69 00 ADC #$00 EE/716D: 85 6B STA $6B EE/716F: C8 INY EE/7170: B7 EA LDA [$EA],Y EE/7172: 69 CA ADC #$CA EE/7174: 85 EC STA $EC EE/7176: A4 6A LDY $6A EE/7178: 84 EA STY $EA EE/717A: 64 ED STZ $ED EE/717C: 64 EE STZ $EE EE/717E: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $B8-$BF: Conditional Jump (and) ] EE/7181: E2 20 SEP #$20 EE/7183: A5 F0 LDA $F0 EE/7185: 29 07 AND #$07 EE/7187: 1A INC EE/7188: 85 58 STA $58 EE/718A: A4 ED LDY $ED EE/718C: C2 20 REP #$20 EE/718E: A5 F0 LDA $F0 EE/7190: 29 07 00 AND #$0007 EE/7193: 1A INC EE/7194: 0A ASL EE/7195: 18 CLC EE/7196: 65 ED ADC $ED EE/7198: 85 ED STA $ED EE/719A: C2 20 REP #$20 EE/719C: B7 EA LDA [$EA],Y EE/719E: C8 INY EE/719F: C8 INY EE/71A0: 85 5A STA $5A EE/71A2: 29 07 00 AND #$0007 EE/71A5: AA TAX EE/71A6: BF FA 7C EE LDA $EE7CFA,X EE/71AA: 85 5C STA $5C EE/71AC: A5 5A LDA $5A EE/71AE: 29 FF 7F AND #$7FFF EE/71B1: 4A LSR EE/71B2: 4A LSR EE/71B3: 4A LSR EE/71B4: AA TAX EE/71B5: E2 20 SEP #$20 EE/71B7: A5 5B LDA $5B EE/71B9: 30 09 BMI $71C4 EE/71BB: BD 80 1E LDA $1E80,X EE/71BE: 25 5C AND $5C EE/71C0: D0 2F BNE $71F1 EE/71C2: 80 07 BRA $71CB EE/71C4: BD 80 1E LDA $1E80,X EE/71C7: 25 5C AND $5C EE/71C9: F0 26 BEQ $71F1 EE/71CB: C6 58 DEC $58 EE/71CD: D0 CB BNE $719A EE/71CF: A4 ED LDY $ED EE/71D1: B7 EA LDA [$EA],Y EE/71D3: 18 CLC EE/71D4: 69 00 ADC #$00 EE/71D6: 85 6A STA $6A EE/71D8: C8 INY EE/71D9: B7 EA LDA [$EA],Y EE/71DB: 69 00 ADC #$00 EE/71DD: 85 6B STA $6B EE/71DF: C8 INY EE/71E0: B7 EA LDA [$EA],Y EE/71E2: 69 CA ADC #$CA EE/71E4: 85 EC STA $EC EE/71E6: A4 6A LDY $6A EE/71E8: 84 EA STY $EA EE/71EA: 64 ED STZ $ED EE/71EC: 64 EE STZ $EE EE/71EE: 4C 93 70 JMP $7093 EE/71F1: A4 ED LDY $ED EE/71F3: C8 INY EE/71F4: C8 INY EE/71F5: C8 INY EE/71F6: 84 ED STY $ED EE/71F8: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C0: ] EE/71FB: E2 20 SEP #$20 EE/71FD: A4 ED LDY $ED EE/71FF: B7 EA LDA [$EA],Y EE/7201: 85 1E STA $1E EE/7203: C8 INY EE/7204: 84 ED STY $ED EE/7206: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C1: set camera direction ] EE/7209: E2 20 SEP #$20 EE/720B: A4 ED LDY $ED EE/720D: B7 EA LDA [$EA],Y EE/720F: 85 73 STA $73 EE/7211: C8 INY EE/7212: B7 EA LDA [$EA],Y EE/7214: 85 74 STA $74 EE/7216: C8 INY EE/7217: 84 ED STY $ED EE/7219: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C2: set movement direction ] EE/721C: E2 20 SEP #$20 EE/721E: A4 ED LDY $ED EE/7220: B7 EA LDA [$EA],Y EE/7222: 85 75 STA $75 EE/7224: C8 INY EE/7225: B7 EA LDA [$EA],Y EE/7227: 85 76 STA $76 EE/7229: C8 INY EE/722A: 84 ED STY $ED EE/722C: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C3: set ??? direction ] EE/722F: E2 20 SEP #$20 EE/7231: A4 ED LDY $ED EE/7233: B7 EA LDA [$EA],Y EE/7235: 85 83 STA $83 EE/7237: C8 INY EE/7238: B7 EA LDA [$EA],Y EE/723A: 85 84 STA $84 EE/723C: C8 INY EE/723D: 84 ED STY $ED EE/723F: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C4: set ??? direction ] EE/7242: E2 20 SEP #$20 EE/7244: A4 ED LDY $ED EE/7246: B7 EA LDA [$EA],Y EE/7248: 85 85 STA $85 EE/724A: C8 INY EE/724B: B7 EA LDA [$EA],Y EE/724D: 85 86 STA $86 EE/724F: C8 INY EE/7250: 84 ED STY $ED EE/7252: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C5: Set Altitude ] EE/7255: E2 20 SEP #$20 EE/7257: A4 ED LDY $ED EE/7259: B7 EA LDA [$EA],Y EE/725B: 85 2F STA $2F EE/725D: C8 INY EE/725E: B7 EA LDA [$EA],Y EE/7260: 85 30 STA $30 EE/7262: C8 INY EE/7263: 84 ED STY $ED EE/7265: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C6: Move Forward ] EE/7268: E2 20 SEP #$20 EE/726A: A4 ED LDY $ED EE/726C: B7 EA LDA [$EA],Y EE/726E: 85 26 STA $26 EE/7270: C8 INY EE/7271: B7 EA LDA [$EA],Y EE/7273: 85 27 STA $27 EE/7275: C8 INY EE/7276: 84 ED STY $ED EE/7278: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C7: Set Airship Position ] EE/727B: E2 20 SEP #$20 EE/727D: A4 ED LDY $ED EE/727F: B7 EA LDA [$EA],Y EE/7281: 8F 62 1F 00 STA $001F62 EE/7285: C8 INY EE/7286: B7 EA LDA [$EA],Y EE/7288: 8F 63 1F 00 STA $001F63 EE/728C: C8 INY EE/728D: 84 ED STY $ED EE/728F: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C8: Set Event Bit ] EE/7292: C2 30 REP #$30 EE/7294: A4 ED LDY $ED EE/7296: B7 EA LDA [$EA],Y EE/7298: C8 INY EE/7299: C8 INY EE/729A: 84 ED STY $ED EE/729C: 85 5A STA $5A EE/729E: 29 07 00 AND #$0007 EE/72A1: AA TAX EE/72A2: BF FA 7C EE LDA $EE7CFA,X EE/72A6: 85 5C STA $5C EE/72A8: A5 5A LDA $5A EE/72AA: 4A LSR EE/72AB: 4A LSR EE/72AC: 4A LSR EE/72AD: AA TAX EE/72AE: E2 20 SEP #$20 EE/72B0: BD 80 1E LDA $1E80,X EE/72B3: 05 5C ORA $5C EE/72B5: 9D 80 1E STA $1E80,X EE/72B8: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $C9: Clear Event Bit ] EE/72BB: C2 30 REP #$30 EE/72BD: A4 ED LDY $ED EE/72BF: B7 EA LDA [$EA],Y EE/72C1: C8 INY EE/72C2: C8 INY EE/72C3: 84 ED STY $ED EE/72C5: 85 5A STA $5A EE/72C7: 29 07 00 AND #$0007 EE/72CA: AA TAX EE/72CB: BF FA 7C EE LDA $EE7CFA,X EE/72CF: 85 5C STA $5C EE/72D1: A5 5A LDA $5A EE/72D3: 4A LSR EE/72D4: 4A LSR EE/72D5: 4A LSR EE/72D6: AA TAX EE/72D7: E2 20 SEP #$20 EE/72D9: A5 5C LDA $5C EE/72DB: 49 FF EOR #$FF EE/72DD: 85 5C STA $5C EE/72DF: BD 80 1E LDA $1E80,X EE/72E2: 25 5C AND $5C EE/72E4: 9D 80 1E STA $1E80,X EE/72E7: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $CA-$CF: Battle ] ; b1: battle group index ; b2: battle background EE/72EA: E2 20 SEP #$20 EE/72EC: 7B TDC EE/72ED: A4 ED LDY $ED EE/72EF: B7 EA LDA [$EA],Y EE/72F1: C2 20 REP #$20 EE/72F3: 0A ASL EE/72F4: 0A ASL EE/72F5: AA TAX EE/72F6: E2 20 SEP #$20 EE/72F8: AD 1E 02 LDA $021E ; low byte of game time (frames) EE/72FB: C9 2D CMP #$2D EE/72FD: 90 02 BCC $7301 ; 3/4 chance to branch EE/72FF: E8 INX EE/7300: E8 INX EE/7301: BF 00 50 CF LDA $CF5000,X ; event monster battle groups EE/7305: 8F E0 11 00 STA $0011E0 ; battle index EE/7309: BF 01 50 CF LDA $CF5001,X EE/730D: 8F E1 11 00 STA $0011E1 EE/7311: C8 INY EE/7312: B7 EA LDA [$EA],Y EE/7314: 8F E2 11 00 STA $0011E2 ; battle background EE/7318: C8 INY EE/7319: 84 ED STY $ED EE/731B: 7B TDC EE/731C: 8F E3 11 00 STA $0011E3 ; EE/7320: 8F E4 11 00 STA $0011E4 EE/7324: AD F6 11 LDA $11F6 ; enable battle EE/7327: 09 02 ORA #$02 EE/7329: 8D F6 11 STA $11F6 EE/732C: 4C A6 70 JMP $70A6 ; ; [ Vehicle Event Command $D0: Show Vehicle ] EE/732F: E2 20 SEP #$20 EE/7331: A5 E7 LDA $E7 EE/7333: 29 DF AND #$DF EE/7335: 85 E7 STA $E7 EE/7337: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $D1: Hide Vehicle ] EE/733A: E2 20 SEP #$20 EE/733C: A5 E7 LDA $E7 EE/733E: 09 20 ORA #$20 EE/7340: 85 E7 STA $E7 EE/7342: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $D2: Load Map ] EE/7345: C2 20 REP #$20 EE/7347: A4 ED LDY $ED EE/7349: B7 EA LDA [$EA],Y EE/734B: 85 F4 STA $F4 EE/734D: 89 00 02 BIT #$0200 EE/7350: F0 26 BEQ $7378 EE/7352: AF 64 1F 00 LDA $001F64 EE/7356: 29 FF 01 AND #$01FF EE/7359: 8F 69 1F 00 STA $001F69 EE/735D: A5 34 LDA $34 EE/735F: 4A LSR EE/7360: 4A LSR EE/7361: 4A LSR EE/7362: 4A LSR EE/7363: 29 FF 00 AND #$00FF EE/7366: 85 58 STA $58 EE/7368: A5 38 LDA $38 EE/736A: 0A ASL EE/736B: 0A ASL EE/736C: 0A ASL EE/736D: 0A ASL EE/736E: 29 00 FF AND #$FF00 EE/7371: 18 CLC EE/7372: 65 58 ADC $58 EE/7374: 8F 6B 1F 00 STA $001F6B EE/7378: C8 INY EE/7379: C8 INY EE/737A: B7 EA LDA [$EA],Y EE/737C: 85 1C STA $1C EE/737E: C8 INY EE/737F: C8 INY EE/7380: B7 EA LDA [$EA],Y EE/7382: 85 F1 STA $F1 EE/7384: C8 INY EE/7385: 84 ED STY $ED EE/7387: CE 19 00 DEC $0019 EE/738A: E2 20 SEP #$20 EE/738C: A5 EA LDA $EA EE/738E: 18 CLC EE/738F: 65 ED ADC $ED EE/7391: 85 EA STA $EA EE/7393: A5 EB LDA $EB EE/7395: 65 EE ADC $EE EE/7397: 85 EB STA $EB EE/7399: A5 EC LDA $EC EE/739B: 69 00 ADC #$00 EE/739D: 85 EC STA $EC EE/739F: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $D3: Load Map (w/ vehicle) ] EE/73A2: C2 20 REP #$20 EE/73A4: A4 ED LDY $ED EE/73A6: B7 EA LDA [$EA],Y EE/73A8: 85 F4 STA $F4 EE/73AA: 89 00 02 BIT #$0200 EE/73AD: F0 26 BEQ $73D5 EE/73AF: AF 64 1F 00 LDA $001F64 EE/73B3: 29 FF 01 AND #$01FF EE/73B6: 8F 69 1F 00 STA $001F69 EE/73BA: A5 34 LDA $34 EE/73BC: 4A LSR EE/73BD: 4A LSR EE/73BE: 4A LSR EE/73BF: 4A LSR EE/73C0: 29 FF 00 AND #$00FF EE/73C3: 85 58 STA $58 EE/73C5: A5 38 LDA $38 EE/73C7: 0A ASL EE/73C8: 0A ASL EE/73C9: 0A ASL EE/73CA: 0A ASL EE/73CB: 29 00 FF AND #$FF00 EE/73CE: 18 CLC EE/73CF: 65 58 ADC $58 EE/73D1: 8F 6B 1F 00 STA $001F6B EE/73D5: C8 INY EE/73D6: C8 INY EE/73D7: B7 EA LDA [$EA],Y EE/73D9: 85 1C STA $1C EE/73DB: C8 INY EE/73DC: C8 INY EE/73DD: B7 EA LDA [$EA],Y EE/73DF: 09 40 00 ORA #$0040 EE/73E2: 85 F1 STA $F1 EE/73E4: C8 INY EE/73E5: 84 ED STY $ED EE/73E7: CE 19 00 DEC $0019 EE/73EA: E2 20 SEP #$20 EE/73EC: A5 EA LDA $EA EE/73EE: 18 CLC EE/73EF: 65 ED ADC $ED EE/73F1: 85 EA STA $EA EE/73F3: A5 EB LDA $EB EE/73F5: 65 EE ADC $EE EE/73F7: 85 EB STA $EB EE/73F9: A5 EC LDA $EC EE/73FB: 69 00 ADC #$00 EE/73FD: 85 EC STA $EC EE/73FF: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $D4-$D8: Fade In ] EE/7402: E2 20 SEP #$20 EE/7404: A9 0F LDA #$0F EE/7406: 85 22 STA $22 ; target screen brightness EE/7408: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $D9: Fade Out ] EE/740B: E2 20 SEP #$20 EE/740D: 64 22 STZ $22 ; target screen brightness EE/740F: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $DA: Show Arrows ] EE/7412: E2 20 SEP #$20 EE/7414: A5 E8 LDA $E8 EE/7416: 09 06 ORA #$06 EE/7418: 85 E8 STA $E8 EE/741A: A9 00 LDA #$00 EE/741C: 8F 60 B6 7E STA $7EB660 EE/7420: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $DB: Lock Arrows ] EE/7423: E2 20 SEP #$20 EE/7425: A5 E8 LDA $E8 EE/7427: 29 FB AND #$FB EE/7429: 85 E8 STA $E8 EE/742B: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $DC: Hide Arrows ] EE/742E: E2 20 SEP #$20 EE/7430: A5 E8 LDA $E8 EE/7432: 29 FD AND #$FD EE/7434: 85 E8 STA $E8 EE/7436: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $DD: Hide Mini-Map ] EE/7439: E2 20 SEP #$20 EE/743B: AF F6 11 00 LDA $0011F6 EE/743F: 09 01 ORA #$01 EE/7441: 8F F6 11 00 STA $0011F6 EE/7445: 20 8F 41 JSR $418F EE/7448: 20 6C 42 JSR $426C EE/744B: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $DE: ] EE/744E: E2 20 SEP #$20 EE/7450: A4 ED LDY $ED EE/7452: B7 EA LDA [$EA],Y EE/7454: C8 INY EE/7455: 85 7B STA $7B EE/7457: B7 EA LDA [$EA],Y EE/7459: C8 INY EE/745A: 85 7D STA $7D EE/745C: 84 ED STY $ED EE/745E: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $DF: Show Mini-Map ] EE/7461: E2 20 SEP #$20 EE/7463: AF F6 11 00 LDA $0011F6 EE/7467: 29 FE AND #$FE EE/7469: 8F F6 11 00 STA $0011F6 EE/746D: 20 2D 41 JSR $412D EE/7470: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $E0: Pause ] ; b1: pause duration EE/7473: E2 20 SEP #$20 EE/7475: A5 EF LDA $EF EE/7477: D0 13 BNE $748C EE/7479: A4 ED LDY $ED EE/747B: B7 EA LDA [$EA],Y EE/747D: 85 EF STA $EF ; pause duration EE/747F: C8 INY EE/7480: 84 ED STY $ED EE/7482: A9 0F LDA #$0F EE/7484: 85 F1 STA $F1 EE/7486: A5 E7 LDA $E7 EE/7488: 09 04 ORA #$04 EE/748A: 85 E7 STA $E7 EE/748C: C6 F1 DEC $F1 EE/748E: D0 08 BNE $7498 EE/7490: C6 EF DEC $EF EE/7492: F0 07 BEQ $749B EE/7494: A9 04 LDA #$04 EE/7496: 85 F1 STA $F1 EE/7498: 4C A6 70 JMP $70A6 EE/749B: A5 E7 LDA $E7 EE/749D: 29 FB AND #$FB EE/749F: 85 E7 STA $E7 EE/74A1: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $E1-$F2: Ending Airship Scene ] EE/74A4: 08 PHP EE/74A5: 8B PHB EE/74A6: 20 BC 0D JSR $0DBC ; ending airship scene EE/74A9: AB PLB EE/74AA: 28 PLP EE/74AB: E2 20 SEP #$20 EE/74AD: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $F3: Light of Judgement 1 ] EE/74B0: 08 PHP EE/74B1: 8B PHB EE/74B2: E2 20 SEP #$20 EE/74B4: A5 E9 LDA $E9 EE/74B6: 09 08 ORA #$08 EE/74B8: 85 E9 STA $E9 EE/74BA: 20 78 13 JSR $1378 ; light of judgement EE/74BD: AB PLB EE/74BE: 28 PLP EE/74BF: E2 20 SEP #$20 EE/74C1: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $F4: Change Graphic to Falcon ] EE/74C4: 08 PHP EE/74C5: 8B PHB EE/74C6: E2 20 SEP #$20 EE/74C8: 9C 00 42 STZ $4200 EE/74CB: 9C 0C 42 STZ $420C EE/74CE: A9 80 LDA #$80 EE/74D0: 8D 00 21 STA $2100 EE/74D3: AF 51 B2 EE LDA $EEB251 EE/74D7: 85 D2 STA $D2 EE/74D9: AF 52 B2 EE LDA $EEB252 EE/74DD: 85 D3 STA $D3 EE/74DF: AF 53 B2 EE LDA $EEB253 EE/74E3: 85 D4 STA $D4 EE/74E5: A2 00 20 LDX #$2000 EE/74E8: 86 D5 STX $D5 EE/74EA: A9 7E LDA #$7E EE/74EC: 85 D7 STA $D7 EE/74EE: 20 76 A4 JSR $A476 ; decompress EE/74F1: A9 80 LDA #$80 EE/74F3: 8D 15 21 STA $2115 EE/74F6: A2 00 64 LDX #$6400 EE/74F9: 8E 16 21 STX $2116 EE/74FC: A2 01 18 LDX #$1801 EE/74FF: 8E 00 43 STX $4300 EE/7502: A2 00 20 LDX #$2000 EE/7505: 8E 02 43 STX $4302 EE/7508: A9 7E LDA #$7E EE/750A: 8D 04 43 STA $4304 EE/750D: A2 00 18 LDX #$1800 EE/7510: 8E 05 43 STX $4305 EE/7513: A9 01 LDA #$01 EE/7515: 8D 0B 42 STA $420B EE/7518: A2 00 00 LDX #$0000 EE/751B: BF 00 EF D2 LDA $D2EF00,X EE/751F: 9F 00 E1 7E STA $7EE100,X EE/7523: E8 INX EE/7524: E0 20 00 CPX #$0020 EE/7527: D0 F2 BNE $751B EE/7529: A9 B1 LDA #$B1 EE/752B: 8D 00 42 STA $4200 EE/752E: 64 24 STZ $24 EE/7530: A5 24 LDA $24 EE/7532: F0 FC BEQ $7530 EE/7534: 64 24 STZ $24 EE/7536: AB PLB EE/7537: 28 PLP EE/7538: E2 20 SEP #$20 EE/753A: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $F5: Light of Judgement 2 ] EE/753D: 08 PHP EE/753E: 8B PHB EE/753F: E2 20 SEP #$20 EE/7541: A5 E9 LDA $E9 EE/7543: 29 F7 AND #$F7 EE/7545: 85 E9 STA $E9 EE/7547: 20 78 13 JSR $1378 ; light of judgement EE/754A: AB PLB EE/754B: 28 PLP EE/754C: E2 20 SEP #$20 EE/754E: 4C A6 70 JMP $70A6 ; [ Vehicle Event Command $F6: ] EE/7551: 08 PHP EE/7552: 8B PHB EE/7553: 20 C7 15 JSR $15C7 EE/7556: AB PLB EE/7557: 28 PLP EE/7558: E2 20 SEP #$20 EE/755A: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $F7: Load Pigeon Graphics ] EE/755D: E2 20 SEP #$20 EE/755F: A9 12 LDA #$12 EE/7561: 8F CA 00 00 STA $0000CA EE/7565: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $F8: ] EE/7568: 08 PHP EE/7569: 8B PHB EE/756A: 20 86 11 JSR $1186 EE/756D: AB PLB EE/756E: 28 PLP EE/756F: E2 20 SEP #$20 EE/7571: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $F9: ] EE/7574: 08 PHP EE/7575: 8B PHB EE/7576: 20 AB 0E JSR $0EAB EE/7579: AB PLB EE/757A: 28 PLP EE/757B: E2 20 SEP #$20 EE/757D: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $FA: Falcon Rising Out of Water ] EE/7580: 08 PHP EE/7581: 8B PHB EE/7582: 20 71 0C JSR $0C71 EE/7585: AB PLB EE/7586: 28 PLP EE/7587: E2 20 SEP #$20 EE/7589: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $FB: Airship Smoking ] EE/758C: 08 PHP EE/758D: 8B PHB EE/758E: E2 20 SEP #$20 EE/7590: A9 10 LDA #$10 EE/7592: 85 CA STA $CA EE/7594: AB PLB EE/7595: 28 PLP EE/7596: E2 20 SEP #$20 EE/7598: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $FC: Airship Crash ] EE/759B: 08 PHP EE/759C: 8B PHB EE/759D: 0B PHD EE/759E: E2 20 SEP #$20 EE/75A0: A9 01 LDA #$01 EE/75A2: 85 CA STA $CA EE/75A4: 20 30 0B JSR $0B30 EE/75A7: 2B PLD EE/75A8: AB PLB EE/75A9: 28 PLP EE/75AA: E2 20 SEP #$20 EE/75AC: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $FD: Load Esper Terra Graphics ] EE/75AF: E2 20 SEP #$20 EE/75B1: A9 0C LDA #$0C EE/75B3: 8F CA 00 00 STA $0000CA EE/75B7: 4C 93 70 JMP $7093 ; [ Vehicle Event Command $FE: Vector Approach ] EE/75BA: 08 PHP EE/75BB: 8B PHB EE/75BC: 0B PHD EE/75BD: 20 C3 07 JSR $07C3 ; vector approach EE/75C0: 2B PLD EE/75C1: AB PLB EE/75C2: 28 PLP EE/75C3: E2 20 SEP #$20 EE/75C5: 4C 93 70 JMP $7093 ; ; [ Vehicle Event Command $FF: End of Script ] EE/75C8: E2 20 SEP #$20 EE/75CA: A5 E7 LDA $E7 EE/75CC: 29 FC AND #$FC EE/75CE: 85 E7 STA $E7 EE/75D0: 4C A6 70 JMP $70A6 ; [ ] autoControl2: EE/75D3: E2 20 SEP #$20 EE/75D5: A5 61 LDA $61 EE/75D7: 89 01 BIT #$01 EE/75D9: F0 1F BEQ $75FA EE/75DB: C2 20 REP #$20 EE/75DD: A5 29 LDA $29 EE/75DF: 38 SEC EE/75E0: E9 20 00 SBC #$0020 EE/75E3: 85 29 STA $29 EE/75E5: A5 2B LDA $2B EE/75E7: E9 00 00 SBC #$0000 EE/75EA: 85 2B STA $2B EE/75EC: A9 00 FE LDA #$FE00 EE/75EF: C5 29 CMP $29 EE/75F1: 30 53 BMI $7646 EE/75F3: A9 00 FE LDA #$FE00 EE/75F6: 85 29 STA $29 EE/75F8: 80 4C BRA $7646 EE/75FA: E2 20 SEP #$20 EE/75FC: A5 61 LDA $61 EE/75FE: 89 02 BIT #$02 EE/7600: F0 20 BEQ $7622 EE/7602: C2 20 REP #$20 EE/7604: C2 21 REP #$21 EE/7606: A5 29 LDA $29 EE/7608: 69 20 00 ADC #$0020 EE/760B: 85 29 STA $29 EE/760D: A5 2B LDA $2B EE/760F: 69 00 00 ADC #$0000 EE/7612: 85 2B STA $2B EE/7614: A9 01 02 LDA #$0201 EE/7617: C5 29 CMP $29 EE/7619: 10 2B BPL $7646 EE/761B: A9 00 02 LDA #$0200 EE/761E: 85 29 STA $29 EE/7620: 80 24 BRA $7646 EE/7622: C2 20 REP #$20 EE/7624: A5 29 LDA $29 EE/7626: F0 1E BEQ $7646 EE/7628: 30 0F BMI $7639 EE/762A: 38 SEC EE/762B: E9 10 00 SBC #$0010 EE/762E: 85 29 STA $29 EE/7630: A5 2B LDA $2B EE/7632: E9 00 00 SBC #$0000 EE/7635: 85 2B STA $2B EE/7637: 80 0D BRA $7646 EE/7639: 18 CLC EE/763A: 69 10 00 ADC #$0010 EE/763D: 85 29 STA $29 EE/763F: A5 2B LDA $2B EE/7641: 69 00 00 ADC #$0000 EE/7644: 85 2B STA $2B EE/7646: C2 20 REP #$20 EE/7648: A5 60 LDA $60 EE/764A: 89 80 00 BIT #$0080 EE/764D: F0 0F BEQ $765E EE/764F: A5 26 LDA $26 EE/7651: 18 CLC EE/7652: 69 40 00 ADC #$0040 EE/7655: C9 01 08 CMP #$0801 EE/7658: 10 04 BPL $765E EE/765A: 85 26 STA $26 EE/765C: 80 00 BRA $765E EE/765E: E2 20 SEP #$20 EE/7660: A5 61 LDA $61 EE/7662: 89 80 BIT #$80 EE/7664: F0 12 BEQ $7678 EE/7666: C2 20 REP #$20 EE/7668: A5 26 LDA $26 EE/766A: 38 SEC EE/766B: E9 80 00 SBC #$0080 EE/766E: C9 00 00 CMP #$0000 EE/7671: 10 03 BPL $7676 EE/7673: A9 00 00 LDA #$0000 EE/7676: 85 26 STA $26 EE/7678: E2 20 SEP #$20 EE/767A: A5 61 LDA $61 EE/767C: 89 08 BIT #$08 EE/767E: F0 11 BEQ $7691 EE/7680: C2 20 REP #$20 EE/7682: A5 2D LDA $2D EE/7684: 38 SEC EE/7685: E9 20 00 SBC #$0020 EE/7688: C9 00 FE CMP #$FE00 EE/768B: 30 33 BMI $76C0 EE/768D: 85 2D STA $2D EE/768F: 80 2F BRA $76C0 EE/7691: E2 20 SEP #$20 EE/7693: A5 61 LDA $61 EE/7695: 89 04 BIT #$04 EE/7697: F0 11 BEQ $76AA EE/7699: C2 20 REP #$20 EE/769B: A5 2D LDA $2D EE/769D: 18 CLC EE/769E: 69 20 00 ADC #$0020 EE/76A1: C9 01 02 CMP #$0201 EE/76A4: 10 1A BPL $76C0 EE/76A6: 85 2D STA $2D EE/76A8: 80 16 BRA $76C0 EE/76AA: C2 20 REP #$20 EE/76AC: A5 2D LDA $2D EE/76AE: 30 0A BMI $76BA EE/76B0: 38 SEC EE/76B1: E9 10 00 SBC #$0010 EE/76B4: 90 0A BCC $76C0 EE/76B6: 85 2D STA $2D EE/76B8: 80 06 BRA $76C0 EE/76BA: 18 CLC EE/76BB: 69 10 00 ADC #$0010 EE/76BE: 85 2D STA $2D EE/76C0: C2 20 REP #$20 EE/76C2: A5 60 LDA $60 EE/76C4: 29 20 02 AND #$0220 EE/76C7: C9 20 02 CMP #$0220 EE/76CA: D0 11 BNE $76DD EE/76CC: AD 73 00 LDA $0073 EE/76CF: 1A INC EE/76D0: 1A INC EE/76D1: C9 68 01 CMP #$0168 EE/76D4: 30 04 BMI $76DA EE/76D6: 38 SEC EE/76D7: E9 68 01 SBC #$0168 EE/76DA: 8D 73 00 STA $0073 EE/76DD: A5 60 LDA $60 EE/76DF: 29 10 01 AND #$0110 EE/76E2: C9 10 01 CMP #$0110 EE/76E5: D0 11 BNE $76F8 EE/76E7: AD 73 00 LDA $0073 EE/76EA: 3A DEC EE/76EB: 3A DEC EE/76EC: C9 00 00 CMP #$0000 EE/76EF: 10 04 BPL $76F5 EE/76F1: 18 CLC EE/76F2: 69 68 01 ADC #$0168 EE/76F5: 8D 73 00 STA $0073 EE/76F8: E2 20 SEP #$20 EE/76FA: 60 RTS ; vehicle event command jump table EE/76FB: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/770B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/771B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/772B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/773B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/774B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/775B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/776B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/777B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/778B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/779B: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/77AB: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/77BB: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/77CB: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/77DB: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/77EB: .DW $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8, $70A8 EE/77FB: .DW $7107, $7107, $7107, $7107, $7107, $7107, $7107, $7107 EE/780B: .DW $7107, $7107, $7107, $7107, $7107, $7107, $7107, $7107 EE/781B: .DW $7107, $7107, $7107, $7107, $7107, $7107, $7107, $7107 EE/782B: .DW $7107, $7107, $7107, $7107, $7107, $7107, $7107, $7107 EE/783B: .DW $7107, $7107, $7107, $7107, $7107, $7107, $7107, $7107 EE/784B: .DW $7107, $7107, $7107, $7107, $7107, $7107, $7107, $7107 EE/785B: .DW $7107, $7107, $7107, $7107, $7107, $7107, $7107, $7107 EE/786B: .DW $7181, $7181, $7181, $7181, $7181, $7181, $7181, $7181 EE/787B: .DW $71FB, $7209, $721C, $722F, $7242, $7255, $7268, $727B EE/788B: .DW $7292, $72BB, $72EA, $72EA, $72EA, $72EA, $72EA, $72EA EE/789B: .DW $732F, $733A, $7345, $73A2, $7402, $7402, $7402, $7402 EE/78AB: .DW $7402, $740B, $7412, $7423, $742E, $7439, $744E, $7461 EE/78BB: .DW $7473, $74A4, $74A4, $74A4, $74A4, $74A4, $74A4, $74A4 EE/78CB: .DW $74A4, $74A4, $74A4, $74A4, $74A4, $74A4, $74A4, $74A4 EE/78DB: .DW $74A4, $74A4, $74A4, $74B0, $74C4, $753D, $7551, $755D EE/78EB: .DW $7568, $7574, $7580, $758C, $759B, $75AF, $75BA, $75C8 ; [ Execute World Event Command ] event: EE/78FB: 08 PHP EE/78FC: A2 00 00 LDX #$0000 EE/78FF: 86 E3 STX $E3 EE/7901: 86 E5 STX $E5 EE/7903: A5 E7 LDA $E7 EE/7905: 89 04 BIT #$04 EE/7907: F0 04 BEQ $790D EE/7909: A5 F0 LDA $F0 EE/790B: 80 09 BRA $7916 EE/790D: A4 ED LDY $ED EE/790F: B7 EA LDA [$EA],Y EE/7911: 85 F0 STA $F0 EE/7913: C8 INY EE/7914: 84 ED STY $ED EE/7916: C2 20 REP #$20 EE/7918: 29 FF 00 AND #$00FF EE/791B: 0A ASL EE/791C: AA TAX EE/791D: 7C 89 81 JMP ($8189,X) ; world event command jump table EE/7920: 28 PLP EE/7921: 60 RTS ; [ World Event Command $00-$7F: Graphical Action ] EE/7922: E2 20 SEP #$20 EE/7924: A5 F0 LDA $F0 EE/7926: 85 F7 STA $F7 EE/7928: E2 10 SEP #$10 EE/792A: 20 F3 47 JSR $47F3 EE/792D: C2 10 REP #$10 EE/792F: 4C 0D 79 JMP $790D ; [ World Event Command $80-$9F: Move Character ] EE/7932: E2 20 SEP #$20 EE/7934: A5 EF LDA $EF EE/7936: D0 0F BNE $7947 EE/7938: A5 F0 LDA $F0 EE/793A: 4A LSR EE/793B: 4A LSR EE/793C: 29 07 AND #$07 EE/793E: 1A INC EE/793F: 85 EF STA $EF EE/7941: A5 E7 LDA $E7 EE/7943: 09 04 ORA #$04 EE/7945: 85 E7 STA $E7 EE/7947: A5 F0 LDA $F0 EE/7949: 29 03 AND #$03 EE/794B: F0 1E BEQ $796B EE/794D: C9 03 CMP #$03 EE/794F: F0 35 BEQ $7986 EE/7951: C9 01 CMP #$01 EE/7953: F0 4C BEQ $79A1 EE/7955: A5 F3 LDA $F3 EE/7957: 85 E5 STA $E5 EE/7959: 64 E6 STZ $E6 EE/795B: 64 E3 STZ $E3 EE/795D: 64 E4 STZ $E4 EE/795F: A9 02 LDA #$02 EE/7961: 85 F6 STA $F6 EE/7963: A2 00 00 LDX #$0000 EE/7966: A0 01 00 LDY #$0001 EE/7969: 80 4A BRA $79B5 EE/796B: A5 F3 LDA $F3 EE/796D: 49 FF EOR #$FF EE/796F: 1A INC EE/7970: 85 E5 STA $E5 EE/7972: A9 FF LDA #$FF EE/7974: 85 E6 STA $E6 EE/7976: 64 E3 STZ $E3 EE/7978: 64 E4 STZ $E4 EE/797A: A9 00 LDA #$00 EE/797C: 85 F6 STA $F6 EE/797E: A2 00 00 LDX #$0000 EE/7981: A0 FF FF LDY #$FFFF EE/7984: 80 2F BRA $79B5 EE/7986: A5 F3 LDA $F3 EE/7988: 49 FF EOR #$FF EE/798A: 1A INC EE/798B: 85 E3 STA $E3 EE/798D: A9 FF LDA #$FF EE/798F: 85 E4 STA $E4 EE/7991: 64 E5 STZ $E5 EE/7993: 64 E6 STZ $E6 EE/7995: A9 03 LDA #$03 EE/7997: 85 F6 STA $F6 EE/7999: A2 FF FF LDX #$FFFF EE/799C: A0 00 00 LDY #$0000 EE/799F: 80 14 BRA $79B5 EE/79A1: A5 F3 LDA $F3 EE/79A3: 85 E3 STA $E3 EE/79A5: 64 E4 STZ $E4 EE/79A7: 64 E5 STZ $E5 EE/79A9: 64 E6 STZ $E6 EE/79AB: A9 01 LDA #$01 EE/79AD: 85 F6 STA $F6 EE/79AF: A2 01 00 LDX #$0001 EE/79B2: A0 00 00 LDY #$0000 EE/79B5: C2 20 REP #$20 EE/79B7: 20 D7 21 JSR $21D7 ; get tile properties EE/79BA: 89 20 00 BIT #$0020 EE/79BD: D0 07 BNE $79C6 ; branch if a forest EE/79BF: A5 E7 LDA $E7 EE/79C1: 29 EF FF AND #$FFEF EE/79C4: 85 E7 STA $E7 EE/79C6: E2 20 SEP #$20 EE/79C8: C6 EF DEC $EF EE/79CA: D0 06 BNE $79D2 EE/79CC: A5 E7 LDA $E7 EE/79CE: 29 FB AND #$FB EE/79D0: 85 E7 STA $E7 EE/79D2: 4C 20 79 JMP $7920 ; [ World Event Command $A0: Move Character Right/Up 1x1 ] EE/79D5: E2 20 SEP #$20 EE/79D7: A5 F3 LDA $F3 EE/79D9: 85 E3 STA $E3 EE/79DB: 64 E4 STZ $E4 EE/79DD: 49 FF EOR #$FF EE/79DF: 1A INC EE/79E0: 85 E5 STA $E5 EE/79E2: A9 FF LDA #$FF EE/79E4: 85 E6 STA $E6 EE/79E6: A9 00 LDA #$00 EE/79E8: 85 F6 STA $F6 EE/79EA: C2 20 REP #$20 EE/79EC: A2 01 00 LDX #$0001 EE/79EF: A0 FF FF LDY #$FFFF EE/79F2: 20 D7 21 JSR $21D7 ; get tile properties EE/79F5: 89 20 00 BIT #$0020 EE/79F8: D0 07 BNE $7A01 ; branch if a forest EE/79FA: A5 E7 LDA $E7 EE/79FC: 29 EF FF AND #$FFEF ; make character opaque EE/79FF: 85 E7 STA $E7 EE/7A01: 4C 20 79 JMP $7920 ; [ World Event Command $A1: Move Character Right/Down 1x1 ] EE/7A04: E2 20 SEP #$20 EE/7A06: A5 F3 LDA $F3 EE/7A08: 85 E3 STA $E3 EE/7A0A: 64 E4 STZ $E4 EE/7A0C: 85 E5 STA $E5 EE/7A0E: 64 E6 STZ $E6 EE/7A10: A9 02 LDA #$02 EE/7A12: 85 F6 STA $F6 EE/7A14: C2 20 REP #$20 EE/7A16: A2 01 00 LDX #$0001 EE/7A19: A0 01 00 LDY #$0001 EE/7A1C: 20 D7 21 JSR $21D7 ; get tile properties EE/7A1F: 89 20 00 BIT #$0020 EE/7A22: D0 07 BNE $7A2B EE/7A24: A5 E7 LDA $E7 EE/7A26: 29 EF FF AND #$FFEF EE/7A29: 85 E7 STA $E7 EE/7A2B: 4C 20 79 JMP $7920 ; [ World Event Command $A2: Move Character Left/Down 1x1 ] EE/7A2E: E2 20 SEP #$20 EE/7A30: A5 F3 LDA $F3 EE/7A32: 85 E5 STA $E5 EE/7A34: 64 E6 STZ $E6 EE/7A36: 49 FF EOR #$FF EE/7A38: 1A INC EE/7A39: 85 E3 STA $E3 EE/7A3B: A9 FF LDA #$FF EE/7A3D: 85 E4 STA $E4 EE/7A3F: A9 02 LDA #$02 EE/7A41: 85 F6 STA $F6 EE/7A43: C2 20 REP #$20 EE/7A45: A2 FF FF LDX #$FFFF EE/7A48: A0 01 00 LDY #$0001 EE/7A4B: 20 D7 21 JSR $21D7 ; get tile properties EE/7A4E: 89 20 00 BIT #$0020 EE/7A51: D0 07 BNE $7A5A EE/7A53: A5 E7 LDA $E7 EE/7A55: 29 EF FF AND #$FFEF EE/7A58: 85 E7 STA $E7 EE/7A5A: 4C 20 79 JMP $7920 ; [ World Event Command $A3: Move Character Left/Up 1x1 ] EE/7A5D: E2 20 SEP #$20 EE/7A5F: A5 F3 LDA $F3 EE/7A61: 49 FF EOR #$FF EE/7A63: 1A INC EE/7A64: 85 E3 STA $E3 EE/7A66: 85 E5 STA $E5 EE/7A68: A9 FF LDA #$FF EE/7A6A: 85 E4 STA $E4 EE/7A6C: 85 E6 STA $E6 EE/7A6E: A9 00 LDA #$00 EE/7A70: 85 F6 STA $F6 EE/7A72: C2 20 REP #$20 EE/7A74: A2 FF FF LDX #$FFFF EE/7A77: A0 FF FF LDY #$FFFF EE/7A7A: 20 D7 21 JSR $21D7 ; get tile properties EE/7A7D: 89 20 00 BIT #$0020 EE/7A80: D0 07 BNE $7A89 EE/7A82: A5 E7 LDA $E7 EE/7A84: 29 EF FF AND #$FFEF EE/7A87: 85 E7 STA $E7 EE/7A89: 4C 20 79 JMP $7920 ; [ World Event Command $A4: Move Character Right/Up 1x2 ] EE/7A8C: E2 20 SEP #$20 EE/7A8E: A5 F3 LDA $F3 EE/7A90: 85 E3 STA $E3 EE/7A92: 64 E4 STZ $E4 EE/7A94: 0A ASL EE/7A95: 49 FF EOR #$FF EE/7A97: 1A INC EE/7A98: 85 E5 STA $E5 EE/7A9A: A9 FF LDA #$FF EE/7A9C: 85 E6 STA $E6 EE/7A9E: A9 00 LDA #$00 EE/7AA0: 85 F6 STA $F6 EE/7AA2: C2 20 REP #$20 EE/7AA4: A2 01 00 LDX #$0001 EE/7AA7: A0 FE FF LDY #$FFFE EE/7AAA: 20 D7 21 JSR $21D7 ; get tile properties EE/7AAD: 89 20 00 BIT #$0020 EE/7AB0: D0 07 BNE $7AB9 EE/7AB2: A5 E7 LDA $E7 EE/7AB4: 29 EF FF AND #$FFEF EE/7AB7: 85 E7 STA $E7 EE/7AB9: 4C 20 79 JMP $7920 ; [ World Event Command $A5: Move Character Right/Up 2x1 ] EE/7ABC: E2 20 SEP #$20 EE/7ABE: A5 F3 LDA $F3 EE/7AC0: 0A ASL EE/7AC1: 85 E3 STA $E3 EE/7AC3: 64 E4 STZ $E4 EE/7AC5: A5 F3 LDA $F3 EE/7AC7: 49 FF EOR #$FF EE/7AC9: 1A INC EE/7ACA: 85 E5 STA $E5 EE/7ACC: A9 FF LDA #$FF EE/7ACE: 85 E6 STA $E6 EE/7AD0: A9 01 LDA #$01 EE/7AD2: 85 F6 STA $F6 EE/7AD4: C2 20 REP #$20 EE/7AD6: A2 02 00 LDX #$0002 EE/7AD9: A0 FF FF LDY #$FFFF EE/7ADC: 20 D7 21 JSR $21D7 ; get tile properties EE/7ADF: 89 20 00 BIT #$0020 EE/7AE2: D0 07 BNE $7AEB EE/7AE4: A5 E7 LDA $E7 EE/7AE6: 29 EF FF AND #$FFEF EE/7AE9: 85 E7 STA $E7 EE/7AEB: 4C 20 79 JMP $7920 ; [ World Event Command $A6: Move Character Right/Down 2x1 ] EE/7AEE: E2 20 SEP #$20 EE/7AF0: A5 F3 LDA $F3 EE/7AF2: 85 E5 STA $E5 EE/7AF4: 64 E6 STZ $E6 EE/7AF6: 0A ASL EE/7AF7: 85 E3 STA $E3 EE/7AF9: 64 E4 STZ $E4 EE/7AFB: A9 01 LDA #$01 EE/7AFD: 85 F6 STA $F6 EE/7AFF: C2 20 REP #$20 EE/7B01: A2 02 00 LDX #$0002 EE/7B04: A0 01 00 LDY #$0001 EE/7B07: 20 D7 21 JSR $21D7 ; get tile properties EE/7B0A: 89 20 00 BIT #$0020 EE/7B0D: D0 07 BNE $7B16 EE/7B0F: A5 E7 LDA $E7 EE/7B11: 29 EF FF AND #$FFEF EE/7B14: 85 E7 STA $E7 EE/7B16: 4C 20 79 JMP $7920 ; [ World Event Command $A7: Move Character Right/Down 1x2 ] EE/7B19: E2 20 SEP #$20 EE/7B1B: A5 F3 LDA $F3 EE/7B1D: 85 E3 STA $E3 EE/7B1F: 64 E4 STZ $E4 EE/7B21: 0A ASL EE/7B22: 85 E5 STA $E5 EE/7B24: 64 E6 STZ $E6 EE/7B26: A9 02 LDA #$02 EE/7B28: 85 F6 STA $F6 EE/7B2A: C2 20 REP #$20 EE/7B2C: A2 01 00 LDX #$0001 EE/7B2F: A0 02 00 LDY #$0002 EE/7B32: 20 D7 21 JSR $21D7 ; get tile properties EE/7B35: 89 20 00 BIT #$0020 EE/7B38: D0 07 BNE $7B41 EE/7B3A: A5 E7 LDA $E7 EE/7B3C: 29 EF FF AND #$FFEF EE/7B3F: 85 E7 STA $E7 EE/7B41: 4C 20 79 JMP $7920 ; [ World Event Command $A8: Move Character Left/Down 1x2 ] EE/7B44: E2 20 SEP #$20 EE/7B46: A5 F3 LDA $F3 EE/7B48: 0A ASL EE/7B49: 85 E5 STA $E5 EE/7B4B: 64 E6 STZ $E6 EE/7B4D: A5 F3 LDA $F3 EE/7B4F: 49 FF EOR #$FF EE/7B51: 1A INC EE/7B52: 85 E3 STA $E3 EE/7B54: A9 FF LDA #$FF EE/7B56: 85 E4 STA $E4 EE/7B58: A9 02 LDA #$02 EE/7B5A: 85 F6 STA $F6 EE/7B5C: C2 20 REP #$20 EE/7B5E: A2 FF FF LDX #$FFFF EE/7B61: A0 02 00 LDY #$0002 EE/7B64: 20 D7 21 JSR $21D7 ; get tile properties EE/7B67: 89 20 00 BIT #$0020 EE/7B6A: D0 07 BNE $7B73 EE/7B6C: A5 E7 LDA $E7 EE/7B6E: 29 EF FF AND #$FFEF EE/7B71: 85 E7 STA $E7 EE/7B73: 4C 20 79 JMP $7920 ; [ World Event Command $A9: Move Character Left/Down 2x1 ] EE/7B76: E2 20 SEP #$20 EE/7B78: A5 F3 LDA $F3 EE/7B7A: 85 E5 STA $E5 EE/7B7C: 64 E6 STZ $E6 EE/7B7E: 0A ASL EE/7B7F: 49 FF EOR #$FF EE/7B81: 1A INC EE/7B82: 85 E3 STA $E3 EE/7B84: A9 FF LDA #$FF EE/7B86: 85 E4 STA $E4 EE/7B88: A9 03 LDA #$03 EE/7B8A: 85 F6 STA $F6 EE/7B8C: C2 20 REP #$20 EE/7B8E: A2 FE FF LDX #$FFFE EE/7B91: A0 01 00 LDY #$0001 EE/7B94: 20 D7 21 JSR $21D7 ; get tile properties EE/7B97: 89 20 00 BIT #$0020 EE/7B9A: D0 07 BNE $7BA3 EE/7B9C: A5 E7 LDA $E7 EE/7B9E: 29 EF FF AND #$FFEF EE/7BA1: 85 E7 STA $E7 EE/7BA3: 4C 20 79 JMP $7920 ; [ World Event Command $AA: Move Character Left/Up 2x1 ] EE/7BA6: E2 20 SEP #$20 EE/7BA8: A5 F3 LDA $F3 EE/7BAA: 49 FF EOR #$FF EE/7BAC: 1A INC EE/7BAD: 85 E5 STA $E5 EE/7BAF: 0A ASL EE/7BB0: 85 E3 STA $E3 EE/7BB2: A9 FF LDA #$FF EE/7BB4: 85 E4 STA $E4 EE/7BB6: 85 E6 STA $E6 EE/7BB8: A9 03 LDA #$03 EE/7BBA: 85 F6 STA $F6 EE/7BBC: C2 20 REP #$20 EE/7BBE: A2 FE FF LDX #$FFFE EE/7BC1: A0 FF FF LDY #$FFFF EE/7BC4: 20 D7 21 JSR $21D7 ; get tile properties EE/7BC7: 89 20 00 BIT #$0020 EE/7BCA: D0 07 BNE $7BD3 EE/7BCC: A5 E7 LDA $E7 EE/7BCE: 29 EF FF AND #$FFEF EE/7BD1: 85 E7 STA $E7 EE/7BD3: 4C 20 79 JMP $7920 ; [ World Event Command $AB: Move Character Left/Up 1x2 ] EE/7BD6: E2 20 SEP #$20 EE/7BD8: A5 F3 LDA $F3 EE/7BDA: 49 FF EOR #$FF EE/7BDC: 1A INC EE/7BDD: 85 E3 STA $E3 EE/7BDF: 0A ASL EE/7BE0: 85 E5 STA $E5 EE/7BE2: A9 FF LDA #$FF EE/7BE4: 85 E4 STA $E4 EE/7BE6: 85 E6 STA $E6 EE/7BE8: A9 00 LDA #$00 EE/7BEA: 85 F6 STA $F6 EE/7BEC: C2 20 REP #$20 EE/7BEE: A2 FF FF LDX #$FFFF EE/7BF1: A0 FE FF LDY #$FFFE EE/7BF4: 20 D7 21 JSR $21D7 ; get tile properties EE/7BF7: 89 20 00 BIT #$0020 EE/7BFA: D0 07 BNE $7C03 EE/7BFC: A5 E7 LDA $E7 EE/7BFE: 29 EF FF AND #$FFEF EE/7C01: 85 E7 STA $E7 EE/7C03: 4C 20 79 JMP $7920 ; [ World Event Command $AC-$B7: Conditional Jump (or) ] EE/7C06: E2 20 SEP #$20 EE/7C08: A5 F0 LDA $F0 EE/7C0A: 29 07 AND #$07 EE/7C0C: 1A INC EE/7C0D: 85 58 STA $58 EE/7C0F: A4 ED LDY $ED EE/7C11: C2 20 REP #$20 EE/7C13: A5 F0 LDA $F0 EE/7C15: 29 07 00 AND #$0007 EE/7C18: 1A INC EE/7C19: 0A ASL EE/7C1A: 18 CLC EE/7C1B: 65 ED ADC $ED EE/7C1D: 85 ED STA $ED EE/7C1F: C2 20 REP #$20 EE/7C21: B7 EA LDA [$EA],Y EE/7C23: C8 INY EE/7C24: C8 INY EE/7C25: 85 5A STA $5A EE/7C27: 29 07 00 AND #$0007 EE/7C2A: AA TAX EE/7C2B: BF FA 7C EE LDA $EE7CFA,X EE/7C2F: 85 5C STA $5C EE/7C31: A5 5A LDA $5A EE/7C33: 29 FF 7F AND #$7FFF EE/7C36: 4A LSR EE/7C37: 4A LSR EE/7C38: 4A LSR EE/7C39: AA TAX EE/7C3A: E2 20 SEP #$20 EE/7C3C: A5 5B LDA $5B EE/7C3E: 30 09 BMI $7C49 EE/7C40: BD 80 1E LDA $1E80,X EE/7C43: 25 5C AND $5C EE/7C45: F0 17 BEQ $7C5E EE/7C47: 80 07 BRA $7C50 EE/7C49: BD 80 1E LDA $1E80,X EE/7C4C: 25 5C AND $5C EE/7C4E: D0 0E BNE $7C5E EE/7C50: C6 58 DEC $58 EE/7C52: D0 CB BNE $7C1F EE/7C54: A4 ED LDY $ED EE/7C56: C8 INY EE/7C57: C8 INY EE/7C58: C8 INY EE/7C59: 84 ED STY $ED EE/7C5B: 4C 0D 79 JMP $790D EE/7C5E: A4 ED LDY $ED EE/7C60: B7 EA LDA [$EA],Y EE/7C62: 18 CLC EE/7C63: 69 00 ADC #$00 EE/7C65: 85 6A STA $6A EE/7C67: C8 INY EE/7C68: B7 EA LDA [$EA],Y EE/7C6A: 69 00 ADC #$00 EE/7C6C: 85 6B STA $6B EE/7C6E: C8 INY EE/7C6F: B7 EA LDA [$EA],Y EE/7C71: 69 CA ADC #$CA EE/7C73: 85 EC STA $EC EE/7C75: A4 6A LDY $6A EE/7C77: 84 EA STY $EA EE/7C79: 64 ED STZ $ED EE/7C7B: 64 EE STZ $EE EE/7C7D: 4C 0D 79 JMP $790D ; [ World Event Command $B8-$BF: Conditional Jump (and) ] EE/7C80: E2 20 SEP #$20 EE/7C82: A5 F0 LDA $F0 EE/7C84: 29 07 AND #$07 EE/7C86: 1A INC EE/7C87: 85 58 STA $58 EE/7C89: A4 ED LDY $ED EE/7C8B: C2 20 REP #$20 EE/7C8D: A5 F0 LDA $F0 EE/7C8F: 29 07 00 AND #$0007 EE/7C92: 1A INC EE/7C93: 0A ASL EE/7C94: 18 CLC EE/7C95: 65 ED ADC $ED EE/7C97: 85 ED STA $ED EE/7C99: C2 20 REP #$20 EE/7C9B: B7 EA LDA [$EA],Y EE/7C9D: C8 INY EE/7C9E: C8 INY EE/7C9F: 85 5A STA $5A EE/7CA1: 29 07 00 AND #$0007 EE/7CA4: AA TAX EE/7CA5: BF FA 7C EE LDA $EE7CFA,X EE/7CA9: 85 5C STA $5C EE/7CAB: A5 5A LDA $5A EE/7CAD: 29 FF 7F AND #$7FFF EE/7CB0: 4A LSR EE/7CB1: 4A LSR EE/7CB2: 4A LSR EE/7CB3: AA TAX EE/7CB4: E2 20 SEP #$20 EE/7CB6: A5 5B LDA $5B EE/7CB8: 30 09 BMI $7CC3 EE/7CBA: BD 80 1E LDA $1E80,X EE/7CBD: 25 5C AND $5C EE/7CBF: D0 2F BNE $7CF0 EE/7CC1: 80 07 BRA $7CCA EE/7CC3: BD 80 1E LDA $1E80,X EE/7CC6: 25 5C AND $5C EE/7CC8: F0 26 BEQ $7CF0 EE/7CCA: C6 58 DEC $58 EE/7CCC: D0 CB BNE $7C99 EE/7CCE: A4 ED LDY $ED EE/7CD0: B7 EA LDA [$EA],Y EE/7CD2: 18 CLC EE/7CD3: 69 00 ADC #$00 EE/7CD5: 85 6A STA $6A EE/7CD7: C8 INY EE/7CD8: B7 EA LDA [$EA],Y EE/7CDA: 69 00 ADC #$00 EE/7CDC: 85 6B STA $6B EE/7CDE: C8 INY EE/7CDF: B7 EA LDA [$EA],Y EE/7CE1: 69 CA ADC #$CA EE/7CE3: 85 EC STA $EC EE/7CE5: A4 6A LDY $6A EE/7CE7: 84 EA STY $EA EE/7CE9: 64 ED STZ $ED EE/7CEB: 64 EE STZ $EE EE/7CED: 4C 0D 79 JMP $790D EE/7CF0: A4 ED LDY $ED EE/7CF2: C8 INY EE/7CF3: C8 INY EE/7CF4: C8 INY EE/7CF5: 84 ED STY $ED EE/7CF7: 4C 0D 79 JMP $790D ; bitmasks EE/7CFA: .DB $01, $02, $04, $08, $10, $20, $40, $80 ; [ World Event Command $C0: Set Speed to Slower ] EE/7D02: E2 20 SEP #$20 EE/7D04: A9 04 LDA #$04 EE/7D06: 85 F3 STA $F3 EE/7D08: 4C 0D 79 JMP $790D ; [ World Event Command $C1: Set Speed to Slow ] EE/7D0B: E2 20 SEP #$20 EE/7D0D: A9 08 LDA #$08 EE/7D0F: 85 F3 STA $F3 EE/7D11: 4C 0D 79 JMP $790D ; [ World Event Command $C2: Set Speed to Normal ] EE/7D14: E2 20 SEP #$20 EE/7D16: A9 10 LDA #$10 EE/7D18: 85 F3 STA $F3 EE/7D1A: 4C 0D 79 JMP $790D ; [ World Event Command $C3: Set Speed to Fast ] EE/7D1D: E2 20 SEP #$20 EE/7D1F: A9 20 LDA #$20 EE/7D21: 85 F3 STA $F3 EE/7D23: 4C 0D 79 JMP $790D ; [ World Event Command $C4: Set Speed to Faster ] EE/7D26: E2 20 SEP #$20 EE/7D28: A9 40 LDA #$40 EE/7D2A: 85 F3 STA $F3 EE/7D2C: 4C 0D 79 JMP $790D ; [ World Event Command $C5-$C7: Set Airship Position ] EE/7D2F: E2 20 SEP #$20 EE/7D31: A4 ED LDY $ED EE/7D33: B7 EA LDA [$EA],Y EE/7D35: 8F 62 1F 00 STA $001F62 EE/7D39: C8 INY EE/7D3A: B7 EA LDA [$EA],Y EE/7D3C: 8F 63 1F 00 STA $001F63 EE/7D40: C8 INY EE/7D41: 84 ED STY $ED EE/7D43: 4C 0D 79 JMP $790D ; [ World Event Command $C8: Set Event Bit ] EE/7D46: C2 30 REP #$30 EE/7D48: A4 ED LDY $ED EE/7D4A: B7 EA LDA [$EA],Y EE/7D4C: C8 INY EE/7D4D: C8 INY EE/7D4E: 84 ED STY $ED EE/7D50: 85 5A STA $5A EE/7D52: 29 07 00 AND #$0007 EE/7D55: AA TAX EE/7D56: BF FA 7C EE LDA $EE7CFA,X EE/7D5A: 85 5C STA $5C EE/7D5C: A5 5A LDA $5A EE/7D5E: 4A LSR EE/7D5F: 4A LSR EE/7D60: 4A LSR EE/7D61: AA TAX EE/7D62: E2 20 SEP #$20 EE/7D64: BD 80 1E LDA $1E80,X EE/7D67: 05 5C ORA $5C EE/7D69: 9D 80 1E STA $1E80,X EE/7D6C: 4C 0D 79 JMP $790D ; [ World Event Command $C9: Clear Event Bit ] EE/7D6F: C2 30 REP #$30 EE/7D71: A4 ED LDY $ED EE/7D73: B7 EA LDA [$EA],Y EE/7D75: C8 INY EE/7D76: C8 INY EE/7D77: 84 ED STY $ED EE/7D79: 85 5A STA $5A EE/7D7B: 29 07 00 AND #$0007 EE/7D7E: AA TAX EE/7D7F: BF FA 7C EE LDA $EE7CFA,X EE/7D83: 85 5C STA $5C EE/7D85: A5 5A LDA $5A EE/7D87: 4A LSR EE/7D88: 4A LSR EE/7D89: 4A LSR EE/7D8A: AA TAX EE/7D8B: E2 20 SEP #$20 EE/7D8D: A5 5C LDA $5C EE/7D8F: 49 FF EOR #$FF EE/7D91: 85 5C STA $5C EE/7D93: BD 80 1E LDA $1E80,X EE/7D96: 25 5C AND $5C EE/7D98: 9D 80 1E STA $1E80,X EE/7D9B: 4C 0D 79 JMP $790D ; [ World Event Command $CA-$CC: Turn Character Up ] EE/7D9E: E2 20 SEP #$20 EE/7DA0: A9 00 LDA #$00 EE/7DA2: 85 F6 STA $F6 EE/7DA4: E2 10 SEP #$10 EE/7DA6: 20 E3 47 JSR $47E3 EE/7DA9: C2 10 REP #$10 EE/7DAB: 4C 0D 79 JMP $790D ; [ World Event Command $CD: Turn Character Right ] EE/7DAE: E2 20 SEP #$20 EE/7DB0: A9 01 LDA #$01 EE/7DB2: 85 F6 STA $F6 EE/7DB4: E2 10 SEP #$10 EE/7DB6: 20 E3 47 JSR $47E3 EE/7DB9: C2 10 REP #$10 EE/7DBB: 4C 0D 79 JMP $790D ; [ World Event Command $CE: Turn Character Down ] EE/7DBE: E2 20 SEP #$20 EE/7DC0: A9 02 LDA #$02 EE/7DC2: 85 F6 STA $F6 EE/7DC4: E2 10 SEP #$10 EE/7DC6: 20 E3 47 JSR $47E3 EE/7DC9: C2 10 REP #$10 EE/7DCB: 4C 0D 79 JMP $790D ; [ World Event Command $CF: Turn Character Left ] EE/7DCE: E2 20 SEP #$20 EE/7DD0: A9 03 LDA #$03 EE/7DD2: 85 F6 STA $F6 EE/7DD4: E2 10 SEP #$10 EE/7DD6: 20 E3 47 JSR $47E3 EE/7DD9: C2 10 REP #$10 EE/7DDB: 4C 0D 79 JMP $790D ; [ World Event Command $D0: Show Character ] EE/7DDE: E2 20 SEP #$20 EE/7DE0: A5 E7 LDA $E7 EE/7DE2: 29 DF AND #$DF EE/7DE4: 85 E7 STA $E7 EE/7DE6: 4C 0D 79 JMP $790D ; [ World Event Command $D1: Hide Character ] EE/7DE9: E2 20 SEP #$20 EE/7DEB: A5 E7 LDA $E7 EE/7DED: 09 20 ORA #$20 EE/7DEF: 85 E7 STA $E7 EE/7DF1: 4C 0D 79 JMP $790D ; [ World Event Command $D2: Load Map ] ; +b1: ??????pm mmmmmmmm ; p: save parent map ; m: map index ; b3: x position ; b4: y position ; b5: EE/7DF4: C2 20 REP #$20 EE/7DF6: A4 ED LDY $ED EE/7DF8: B7 EA LDA [$EA],Y EE/7DFA: 85 F4 STA $F4 EE/7DFC: 89 00 02 BIT #$0200 EE/7DFF: F0 21 BEQ $7E22 EE/7E01: AF 64 1F 00 LDA $001F64 ; map index EE/7E05: 29 FF 01 AND #$01FF EE/7E08: 8F 69 1F 00 STA $001F69 ; parent map index EE/7E0C: E2 20 SEP #$20 EE/7E0E: A5 E0 LDA $E0 EE/7E10: 8F 6B 1F 00 STA $001F6B ; parent x position EE/7E14: A5 E2 LDA $E2 EE/7E16: 8F 6C 1F 00 STA $001F6C ; parent y position EE/7E1A: A5 F6 LDA $F6 EE/7E1C: 8F D2 1F 00 STA $001FD2 ; parent facing direction EE/7E20: C2 20 REP #$20 EE/7E22: C8 INY EE/7E23: C8 INY EE/7E24: B7 EA LDA [$EA],Y EE/7E26: 85 1C STA $1C EE/7E28: C8 INY EE/7E29: C8 INY EE/7E2A: B7 EA LDA [$EA],Y EE/7E2C: 85 F1 STA $F1 EE/7E2E: C8 INY EE/7E2F: 84 ED STY $ED EE/7E31: CE 19 00 DEC $0019 EE/7E34: E2 20 SEP #$20 EE/7E36: A5 EA LDA $EA ; add event script offset to event script pointer EE/7E38: 18 CLC EE/7E39: 65 ED ADC $ED EE/7E3B: 85 EA STA $EA EE/7E3D: A5 EB LDA $EB EE/7E3F: 65 EE ADC $EE EE/7E41: 85 EB STA $EB EE/7E43: A5 EC LDA $EC EE/7E45: 69 00 ADC #$00 EE/7E47: 85 EC STA $EC EE/7E49: 4C 20 79 JMP $7920 ; [ World Event Command $D3: Load Map (w/ vehicle) ] EE/7E4C: C2 20 REP #$20 EE/7E4E: A4 ED LDY $ED EE/7E50: B7 EA LDA [$EA],Y EE/7E52: 85 F4 STA $F4 EE/7E54: 89 00 02 BIT #$0200 EE/7E57: F0 21 BEQ $7E7A EE/7E59: AF 64 1F 00 LDA $001F64 EE/7E5D: 29 FF 01 AND #$01FF EE/7E60: 8F 69 1F 00 STA $001F69 EE/7E64: E2 20 SEP #$20 EE/7E66: A5 E0 LDA $E0 EE/7E68: 8F 6B 1F 00 STA $001F6B EE/7E6C: A5 E2 LDA $E2 EE/7E6E: 8F 6C 1F 00 STA $001F6C EE/7E72: A5 F6 LDA $F6 EE/7E74: 8F D2 1F 00 STA $001FD2 EE/7E78: C2 20 REP #$20 EE/7E7A: C8 INY EE/7E7B: C8 INY EE/7E7C: B7 EA LDA [$EA],Y EE/7E7E: 85 1C STA $1C EE/7E80: C8 INY EE/7E81: C8 INY EE/7E82: B7 EA LDA [$EA],Y EE/7E84: 09 40 00 ORA #$0040 ; EE/7E87: 85 F1 STA $F1 EE/7E89: C8 INY EE/7E8A: 84 ED STY $ED EE/7E8C: CE 19 00 DEC $0019 EE/7E8F: E2 20 SEP #$20 EE/7E91: A5 EA LDA $EA EE/7E93: 18 CLC EE/7E94: 65 ED ADC $ED EE/7E96: 85 EA STA $EA EE/7E98: A5 EB LDA $EB EE/7E9A: 65 EE ADC $EE EE/7E9C: 85 EB STA $EB EE/7E9E: A5 EC LDA $EC EE/7EA0: 69 00 ADC #$00 EE/7EA2: 85 EC STA $EC EE/7EA4: 4C 20 79 JMP $7920 ; [ World Event Command $D4: Jump if A Button is Not Pressed ] ; the branch is kinda broken EE/7EA7: E2 20 SEP #$20 EE/7EA9: A5 08 LDA $08 EE/7EAB: 89 80 BIT #$80 EE/7EAD: D0 22 BNE $7ED1 ; branch if A button is pressed EE/7EAF: A4 ED LDY $ED EE/7EB1: B7 EA LDA [$EA],Y EE/7EB3: 18 CLC EE/7EB4: 69 00 ADC #$00 EE/7EB6: 85 6A STA $6A EE/7EB8: C8 INY EE/7EB9: B7 EA LDA [$EA],Y EE/7EBB: 69 00 ADC #$00 EE/7EBD: 85 6B STA $6B EE/7EBF: C8 INY EE/7EC0: B7 EA LDA [$EA],Y EE/7EC2: 69 CA ADC #$CA EE/7EC4: 85 EC STA $EC EE/7EC6: A6 6A LDX $6A EE/7EC8: 86 EA STX $EA EE/7ECA: 64 ED STZ $ED EE/7ECC: 64 EE STZ $EE EE/7ECE: 4C 0D 79 JMP $790D EE/7ED1: A4 ED LDY $ED EE/7ED3: C8 INY EE/7ED4: C8 INY EE/7ED5: C8 INY EE/7ED6: 84 ED STY $ED EE/7ED8: 4C 0D 79 JMP $790D ; [ World Event Command $D5: Jump Based on Facing Direction ] ; b1: facing direction (jump if current facing direction doesn't match) ; ++b2: jump address (has to be an absolute address) EE/7EDB: E2 20 SEP #$20 EE/7EDD: A4 ED LDY $ED EE/7EDF: B7 EA LDA [$EA],Y EE/7EE1: C8 INY EE/7EE2: 84 ED STY $ED EE/7EE4: C5 F6 CMP $F6 EE/7EE6: D0 08 BNE $7EF0 ; branch if facing direction doesn't match EE/7EE8: C8 INY EE/7EE9: C8 INY EE/7EEA: C8 INY EE/7EEB: 84 ED STY $ED EE/7EED: 4C 0D 79 JMP $790D EE/7EF0: B7 EA LDA [$EA],Y ; set new event pointer EE/7EF2: 18 CLC EE/7EF3: 69 00 ADC #$00 EE/7EF5: 85 6A STA $6A EE/7EF7: C8 INY EE/7EF8: B7 EA LDA [$EA],Y EE/7EFA: 69 00 ADC #$00 EE/7EFC: 85 6B STA $6B EE/7EFE: C8 INY EE/7EFF: B7 EA LDA [$EA],Y EE/7F01: 85 EC STA $EC EE/7F03: A4 6A LDY $6A EE/7F05: 84 EA STY $EA EE/7F07: 64 ED STZ $ED ; clear event script offset EE/7F09: 64 EE STZ $EE EE/7F0B: 4C 0D 79 JMP $790D ; [ World Event Command $D6-$D8: Fade In ] EE/7F0E: E2 20 SEP #$20 EE/7F10: A9 0F LDA #$0F EE/7F12: 85 22 STA $22 EE/7F14: 4C 0D 79 JMP $790D ; [ World Event Command $D9: Fade Out ] EE/7F17: E2 20 SEP #$20 EE/7F19: 64 22 STZ $22 EE/7F1B: 4C 0D 79 JMP $790D ; [ World Event Command $DA-$DD: Hide Mini-Map ] EE/7F1E: E2 20 SEP #$20 EE/7F20: AF F6 11 00 LDA $0011F6 EE/7F24: 09 01 ORA #$01 EE/7F26: 8F F6 11 00 STA $0011F6 EE/7F2A: 20 8F 41 JSR $418F EE/7F2D: 20 6C 42 JSR $426C EE/7F30: 4C 0D 79 JMP $790D ; [ World Event Command $DE-$DF: Show Mini-Map ] EE/7F33: E2 20 SEP #$20 EE/7F35: AF F6 11 00 LDA $0011F6 EE/7F39: 29 FE AND #$FE EE/7F3B: 8F F6 11 00 STA $0011F6 EE/7F3F: 20 2D 41 JSR $412D EE/7F42: 4C 0D 79 JMP $790D ; [ World Event Command $E0: Pause ] ; b1: pause duration EE/7F45: E2 20 SEP #$20 EE/7F47: A5 EF LDA $EF EE/7F49: D0 13 BNE $7F5E EE/7F4B: A4 ED LDY $ED EE/7F4D: B7 EA LDA [$EA],Y EE/7F4F: 85 EF STA $EF EE/7F51: C8 INY EE/7F52: 84 ED STY $ED EE/7F54: A9 0F LDA #$0F EE/7F56: 85 F1 STA $F1 EE/7F58: A5 E7 LDA $E7 EE/7F5A: 09 04 ORA #$04 EE/7F5C: 85 E7 STA $E7 EE/7F5E: C6 F1 DEC $F1 EE/7F60: D0 08 BNE $7F6A EE/7F62: C6 EF DEC $EF EE/7F64: F0 07 BEQ $7F6D EE/7F66: A9 04 LDA #$04 EE/7F68: 85 F1 STA $F1 EE/7F6A: 4C 20 79 JMP $7920 EE/7F6D: A5 E7 LDA $E7 EE/7F6F: 29 FB AND #$FB EE/7F71: 85 E7 STA $E7 EE/7F73: 4C 20 79 JMP $7920 ; [ World Event Command $E1-$FC: Change Graphic to Ship ] EE/7F76: E2 20 SEP #$20 EE/7F78: A9 05 LDA #$05 EE/7F7A: 85 CA STA $CA EE/7F7C: 4C 0D 79 JMP $790D ; [ World Event Command $FD: Show Figaro Castle Submerging ] EE/7F7F: E2 20 SEP #$20 EE/7F81: 8B PHB EE/7F82: A9 7E LDA #$7E EE/7F84: 48 PHA EE/7F85: AB PLB EE/7F86: A5 E7 LDA $E7 EE/7F88: 89 04 BIT #$04 EE/7F8A: D0 27 BNE $7FB3 EE/7F8C: A2 00 64 LDX #$6400 EE/7F8F: 86 F1 STX $F1 EE/7F91: A9 00 LDA #$00 EE/7F93: 85 EF STA $EF EE/7F95: C2 20 REP #$20 EE/7F97: A2 00 00 LDX #$0000 EE/7F9A: BF 66 80 EE LDA $EE8066,X ; figaro castle emerging/submerging data EE/7F9E: 9D 60 B6 STA $B660,X EE/7FA1: E8 INX EE/7FA2: E8 INX EE/7FA3: E0 24 00 CPX #$0024 EE/7FA6: D0 F2 BNE $7F9A EE/7FA8: E2 20 SEP #$20 EE/7FAA: A5 E7 LDA $E7 EE/7FAC: 09 04 ORA #$04 EE/7FAE: 85 E7 STA $E7 EE/7FB0: 20 BE 40 JSR $40BE EE/7FB3: A5 F2 LDA $F2 EE/7FB5: 8D 1C B6 STA $B61C EE/7FB8: E6 EF INC $EF EE/7FBA: C2 20 REP #$20 EE/7FBC: A5 EF LDA $EF EE/7FBE: 29 FF 00 AND #$00FF EE/7FC1: AA TAX EE/7FC2: E2 20 SEP #$20 EE/7FC4: BF F1 FE EF LDA $EFFEF1,X EE/7FC8: 29 03 AND #$03 EE/7FCA: C9 03 CMP #$03 EE/7FCC: D0 02 BNE $7FD0 EE/7FCE: A9 01 LDA #$01 EE/7FD0: 18 CLC EE/7FD1: 69 76 ADC #$76 EE/7FD3: 8D 1A B6 STA $B61A EE/7FD6: A5 F2 LDA $F2 EE/7FD8: 38 SEC EE/7FD9: E9 64 SBC #$64 EE/7FDB: 4A LSR EE/7FDC: 4A LSR EE/7FDD: 4A LSR EE/7FDE: 18 CLC EE/7FDF: 69 2E ADC #$2E EE/7FE1: 8D 18 B6 STA $B618 EE/7FE4: A0 00 00 LDY #$0000 EE/7FE7: A2 00 00 LDX #$0000 EE/7FEA: B9 60 B6 LDA $B660,Y EE/7FED: 18 CLC EE/7FEE: 79 65 B6 ADC $B665,Y EE/7FF1: 9D DA B5 STA $B5DA,X EE/7FF4: B9 61 B6 LDA $B661,Y EE/7FF7: 9D DC B5 STA $B5DC,X EE/7FFA: B9 62 B6 LDA $B662,Y EE/7FFD: 18 CLC EE/7FFE: 69 33 ADC #$33 EE/8000: 9D D8 B5 STA $B5D8,X EE/8003: DA PHX EE/8004: B9 63 B6 LDA $B663,Y EE/8007: 18 CLC EE/8008: 79 64 B6 ADC $B664,Y EE/800B: 99 63 B6 STA $B663,Y EE/800E: 90 15 BCC $8025 EE/8010: B9 62 B6 LDA $B662,Y EE/8013: 1A INC EE/8014: 29 03 AND #$03 EE/8016: 99 62 B6 STA $B662,Y EE/8019: A5 EF LDA $EF EE/801B: AA TAX EE/801C: BF F1 FE EF LDA $EFFEF1,X EE/8020: 29 01 AND #$01 EE/8022: 99 65 B6 STA $B665,Y EE/8025: FA PLX EE/8026: 8A TXA EE/8027: 18 CLC EE/8028: 69 08 ADC #$08 EE/802A: AA TAX EE/802B: 98 TYA EE/802C: 18 CLC EE/802D: 69 06 ADC #$06 EE/802F: A8 TAY EE/8030: C9 24 CMP #$24 EE/8032: D0 B6 BNE $7FEA EE/8034: C2 21 REP #$21 EE/8036: A5 F1 LDA $F1 EE/8038: 69 20 00 ADC #$0020 EE/803B: 85 F1 STA $F1 EE/803D: C9 00 8C CMP #$8C00 EE/8040: 90 20 BCC $8062 EE/8042: E2 20 SEP #$20 EE/8044: A5 E7 LDA $E7 EE/8046: 29 FB AND #$FB EE/8048: 85 E7 STA $E7 EE/804A: 20 74 40 JSR $4074 EE/804D: 20 18 41 JSR $4118 EE/8050: A2 D0 00 LDX #$00D0 EE/8053: A9 E0 LDA #$E0 EE/8055: 9F 31 6B 7E STA $7E6B31,X EE/8059: E8 INX EE/805A: E8 INX EE/805B: E8 INX EE/805C: E8 INX EE/805D: E0 2C 01 CPX #$012C EE/8060: D0 F3 BNE $8055 EE/8062: AB PLB EE/8063: 4C 20 79 JMP $7920 ; figaro castle emerging/submerging data EE/8066: .DW $876D, $0000, $0040 EE/806C: .DW $8974, $0003, $0030 EE/8072: .DW $8B7C, $0002, $0042 EE/8078: .DW $8B82, $0000, $0038 EE/807E: .DW $8B89, $0001, $0048 EE/8084: .DW $8790, $0000, $0034 ; [ World Event Command $FE: Show Figaro Castle Emerging ] EE/808A: E2 20 SEP #$20 EE/808C: 8B PHB EE/808D: A9 7E LDA #$7E EE/808F: 48 PHA EE/8090: AB PLB EE/8091: A5 E7 LDA $E7 EE/8093: 89 04 BIT #$04 EE/8095: D0 27 BNE $80BE EE/8097: A2 00 8B LDX #$8B00 EE/809A: 86 F1 STX $F1 EE/809C: A9 00 LDA #$00 EE/809E: 85 EF STA $EF EE/80A0: C2 20 REP #$20 EE/80A2: A2 00 00 LDX #$0000 EE/80A5: BF 66 80 EE LDA $EE8066,X ; figaro castle emerging/submerging data EE/80A9: 9D 60 B6 STA $B660,X EE/80AC: E8 INX EE/80AD: E8 INX EE/80AE: E0 24 00 CPX #$0024 EE/80B1: D0 F2 BNE $80A5 EE/80B3: E2 20 SEP #$20 EE/80B5: A5 E7 LDA $E7 EE/80B7: 09 04 ORA #$04 EE/80B9: 85 E7 STA $E7 EE/80BB: 20 BE 40 JSR $40BE EE/80BE: A5 F2 LDA $F2 EE/80C0: 8D 1C B6 STA $B61C EE/80C3: E6 EF INC $EF EE/80C5: C2 20 REP #$20 EE/80C7: A5 EF LDA $EF EE/80C9: 29 FF 00 AND #$00FF EE/80CC: AA TAX EE/80CD: E2 20 SEP #$20 EE/80CF: BF F1 FE EF LDA $EFFEF1,X EE/80D3: 29 03 AND #$03 EE/80D5: C9 03 CMP #$03 EE/80D7: D0 02 BNE $80DB EE/80D9: A9 01 LDA #$01 EE/80DB: 18 CLC EE/80DC: 69 76 ADC #$76 EE/80DE: 8D 1A B6 STA $B61A EE/80E1: A5 F2 LDA $F2 EE/80E3: 38 SEC EE/80E4: E9 64 SBC #$64 EE/80E6: 4A LSR EE/80E7: 4A LSR EE/80E8: 4A LSR EE/80E9: 18 CLC EE/80EA: 69 2E ADC #$2E EE/80EC: 8D 18 B6 STA $B618 EE/80EF: A0 00 00 LDY #$0000 EE/80F2: A2 00 00 LDX #$0000 EE/80F5: B9 60 B6 LDA $B660,Y EE/80F8: 18 CLC EE/80F9: 79 65 B6 ADC $B665,Y EE/80FC: 9D DA B5 STA $B5DA,X EE/80FF: B9 61 B6 LDA $B661,Y EE/8102: 9D DC B5 STA $B5DC,X EE/8105: B9 62 B6 LDA $B662,Y EE/8108: 18 CLC EE/8109: 69 33 ADC #$33 EE/810B: 9D D8 B5 STA $B5D8,X EE/810E: DA PHX EE/810F: B9 63 B6 LDA $B663,Y EE/8112: 18 CLC EE/8113: 79 64 B6 ADC $B664,Y EE/8116: 99 63 B6 STA $B663,Y EE/8119: 90 15 BCC $8130 EE/811B: B9 62 B6 LDA $B662,Y EE/811E: 1A INC EE/811F: 29 03 AND #$03 EE/8121: 99 62 B6 STA $B662,Y EE/8124: A5 EF LDA $EF EE/8126: AA TAX EE/8127: BF F1 FE EF LDA $EFFEF1,X EE/812B: 29 01 AND #$01 EE/812D: 99 65 B6 STA $B665,Y EE/8130: FA PLX EE/8131: 8A TXA EE/8132: 18 CLC EE/8133: 69 08 ADC #$08 EE/8135: AA TAX EE/8136: 98 TYA EE/8137: 18 CLC EE/8138: 69 06 ADC #$06 EE/813A: A8 TAY EE/813B: C9 24 CMP #$24 EE/813D: D0 B6 BNE $80F5 EE/813F: C2 20 REP #$20 EE/8141: A5 F1 LDA $F1 EE/8143: 38 SEC EE/8144: E9 20 00 SBC #$0020 EE/8147: 85 F1 STA $F1 EE/8149: C9 00 64 CMP #$6400 EE/814C: B0 2C BCS $817A EE/814E: A2 00 00 LDX #$0000 EE/8151: 7B TDC EE/8152: 9D D8 B5 STA $B5D8,X EE/8155: 8A TXA EE/8156: 18 CLC EE/8157: 69 08 00 ADC #$0008 EE/815A: AA TAX EE/815B: C9 30 00 CMP #$0030 EE/815E: D0 F1 BNE $8151 EE/8160: E2 20 SEP #$20 EE/8162: A5 E7 LDA $E7 EE/8164: 29 FB AND #$FB EE/8166: 85 E7 STA $E7 EE/8168: A2 D0 00 LDX #$00D0 EE/816B: A9 E0 LDA #$E0 EE/816D: 9F 31 6B 7E STA $7E6B31,X EE/8171: E8 INX EE/8172: E8 INX EE/8173: E8 INX EE/8174: E8 INX EE/8175: E0 2C 01 CPX #$012C EE/8178: D0 F3 BNE $816D EE/817A: AB PLB EE/817B: 4C 20 79 JMP $7920 ; [ World Event Command $FF: End of Script ] EE/817E: E2 20 SEP #$20 EE/8180: A5 E7 LDA $E7 EE/8182: 29 FC AND #$FC ; disable event scripts EE/8184: 85 E7 STA $E7 EE/8186: 4C 20 79 JMP $7920 ; world event command jump table EE/8189: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8199: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/81A9: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/81B9: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/81C9: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/81D9: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/81E9: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/81F9: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8209: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8219: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8229: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8239: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8249: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8259: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8269: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8279: .DW $7922, $7922, $7922, $7922, $7922, $7922, $7922, $7922 EE/8289: .DW $7932, $7932, $7932, $7932, $7932, $7932, $7932, $7932 EE/8299: .DW $7932, $7932, $7932, $7932, $7932, $7932, $7932, $7932 EE/82A9: .DW $7932, $7932, $7932, $7932, $7932, $7932, $7932, $7932 EE/82B9: .DW $7932, $7932, $7932, $7932, $7932, $7932, $7932, $7932 EE/82C9: .DW $79D5, $7A04, $7A2E, $7A5D, $7A8C, $7ABC, $7AEE, $7B19 EE/82D9: .DW $7B44, $7B76, $7BA6, $7BD6, $7C06, $7C06, $7C06, $7C06 EE/82E9: .DW $7C06, $7C06, $7C06, $7C06, $7C06, $7C06, $7C06, $7C06 EE/82F9: .DW $7C80, $7C80, $7C80, $7C80, $7C80, $7C80, $7C80, $7C80 EE/8309: .DW $7D02, $7D0B, $7D14, $7D1D, $7D26, $7D2F, $7D2F, $7D2F EE/8319: .DW $7D46, $7D6F, $7D9E, $7D9E, $7D9E, $7DAE, $7DBE, $7DCE EE/8329: .DW $7DDE, $7DE9, $7DF4, $7E4C, $7EA7, $7EDB, $7F0E, $7F0E EE/8339: .DW $7F0E, $7F17, $7F1E, $7F1E, $7F1E, $7F1E, $7F33, $7F33 EE/8349: .DW $7F45, $7F76, $7F76, $7F76, $7F76, $7F76, $7F76, $7F76 EE/8359: .DW $7F76, $7F76, $7F76, $7F76, $7F76, $7F76, $7F76, $7F76 EE/8369: .DW $7F76, $7F76, $7F76, $7F76, $7F76, $7F76, $7F76, $7F76 EE/8379: .DW $7F76, $7F76, $7F76, $7F76, $7F76, $7F7F, $808A, $817E ; -------------------------------------------[ World: Init ]-------------------------------------------- ; airship songs (blackjack, searching for friends) hikuutei_soundtbl: EE/8389: .DB $35, $35, $4C, $4C ; chocobo songs (techno de chocobo) chokobo_soundtbl: EE/838D: .DB $13, $13, $13, $13 ; world map songs (terra, veldt, dark world, searching for friends) chr_soundtbl: EE/8391: .DB $06, $19, $4F, $4C ; train ride songs (save them!) truck_soundtbl: EE/8395: .DB $1A, $1A ; serpent trench songs (the serpent trench) snake_soundtbl: EE/8397: .DB $28, $28 ; [ Init World Map ] m7start: EE/8399: E2 20 SEP #$20 EE/839B: A9 00 LDA #$00 EE/839D: 48 PHA EE/839E: AB PLB EE/839F: AD F6 11 LDA $11F6 ; disable battle EE/83A2: 29 FD AND #$FD EE/83A4: 8D F6 11 STA $11F6 EE/83A7: C2 20 REP #$20 EE/83A9: 64 04 STZ $04 ; clear pressed buttons EE/83AB: 64 06 STZ $06 EE/83AD: 64 08 STZ $08 EE/83AF: 64 0A STZ $0A EE/83B1: 64 0C STZ $0C EE/83B3: 64 0E STZ $0E EE/83B5: AD 64 1F LDA $1F64 ; map index EE/83B8: 29 FF 01 AND #$01FF EE/83BB: C9 02 00 CMP #$0002 EE/83BE: D0 03 BNE $83C3 ; branch if not serpent trench EE/83C0: 4C 48 8D JMP $8D48 EE/83C3: E2 20 SEP #$20 EE/83C5: AD 68 1F LDA $1F68 ; facing direction EE/83C8: 10 04 BPL $83CE EE/83CA: 29 7F AND #$7F EE/83CC: 80 09 BRA $83D7 EE/83CE: AD 65 1F LDA $1F65 EE/83D1: 4A LSR EE/83D2: 4A LSR EE/83D3: 4A LSR EE/83D4: 4A LSR EE/83D5: 29 03 AND #$03 EE/83D7: 8D 68 1F STA $1F68 EE/83DA: AD F3 11 LDA $11F3 EE/83DD: 10 03 BPL $83E2 EE/83DF: 4C 22 84 JMP $8422 EE/83E2: AD FA 11 LDA $11FA ; vehicle EE/83E5: 29 03 AND #$03 EE/83E7: F0 07 BEQ $83F0 EE/83E9: C9 02 CMP #$02 EE/83EB: F0 06 BEQ $83F3 EE/83ED: 4C 22 84 JMP $8422 ; airship EE/83F0: 4C E0 89 JMP $89E0 ; no vehicle EE/83F3: 4C CC 86 JMP $86CC ; chocobo ; [ Reload Map ] EE/83F6: E2 20 SEP #$20 EE/83F8: A9 00 LDA #$00 EE/83FA: 48 PHA EE/83FB: AB PLB EE/83FC: C2 20 REP #$20 EE/83FE: AD 64 1F LDA $1F64 EE/8401: 29 FF 01 AND #$01FF EE/8404: C9 02 00 CMP #$0002 EE/8407: D0 03 BNE $840C ; branch if not serpent trench EE/8409: 4C 48 8D JMP $8D48 EE/840C: E2 20 SEP #$20 EE/840E: AD FA 11 LDA $11FA ; vehicle EE/8411: 29 03 AND #$03 EE/8413: F0 07 BEQ $841C EE/8415: C9 02 CMP #$02 EE/8417: F0 06 BEQ $841F EE/8419: 4C 22 84 JMP $8422 ; airship EE/841C: 4C E0 89 JMP $89E0 ; no vehicle EE/841F: 4C CC 86 JMP $86CC ; chocobo ; [ Init World Map (airship) ] EE/8422: E2 20 SEP #$20 EE/8424: C2 10 REP #$10 EE/8426: A9 80 LDA #$80 EE/8428: 8D 00 21 STA $2100 EE/842B: 20 AF 8F JSR $8FAF ; init hardware registers EE/842E: AD B7 1E LDA $1EB7 EE/8431: 29 F7 AND #$F7 EE/8433: 8D B7 1E STA $1EB7 EE/8436: AD F6 11 LDA $11F6 EE/8439: 89 02 BIT #$02 EE/843B: F0 05 BEQ $8442 ; branch if battle is not enabled EE/843D: 20 FC 90 JSR $90FC ; restore direct page EE/8440: 80 27 BRA $8469 EE/8442: 20 8C 90 JSR $908C ; save mode 7 variables EE/8445: C2 20 REP #$20 EE/8447: AD 60 1F LDA $1F60 EE/844A: 4A LSR EE/844B: 4A LSR EE/844C: 4A LSR EE/844D: 4A LSR EE/844E: 29 F0 0F AND #$0FF0 EE/8451: 85 38 STA $38 EE/8453: AD 60 1F LDA $1F60 EE/8456: 0A ASL EE/8457: 0A ASL EE/8458: 0A ASL EE/8459: 0A ASL EE/845A: 29 F0 0F AND #$0FF0 EE/845D: 85 34 STA $34 EE/845F: E2 20 SEP #$20 EE/8461: A9 80 LDA #$80 EE/8463: 85 7B STA $7B EE/8465: A9 D0 LDA #$D0 EE/8467: 85 7D STA $7D EE/8469: A9 01 LDA #$01 EE/846B: 85 CA STA $CA EE/846D: A9 01 LDA #$01 EE/846F: 85 20 STA $20 EE/8471: A9 01 LDA #$01 EE/8473: 8F 52 B6 7E STA $7EB652 EE/8477: A9 10 LDA #$10 EE/8479: 8D 00 13 STA $1300 EE/847C: A9 FF LDA #$FF EE/847E: 8D 02 13 STA $1302 EE/8481: AD B9 1E LDA $1EB9 EE/8484: 89 10 BIT #$10 EE/8486: D0 28 BNE $84B0 EE/8488: AD B7 1E LDA $1EB7 EE/848B: 89 08 BIT #$08 EE/848D: F0 04 BEQ $8493 EE/848F: A9 19 LDA #$19 EE/8491: 80 15 BRA $84A8 EE/8493: 7B TDC EE/8494: EB XBA EE/8495: AD 64 1F LDA $1F64 EE/8498: 29 03 AND #$03 EE/849A: 0A ASL EE/849B: AA TAX EE/849C: AD B7 1E LDA $1EB7 EE/849F: 89 01 BIT #$01 EE/84A1: F0 01 BEQ $84A4 EE/84A3: E8 INX EE/84A4: BF 89 83 EE LDA $EE8389,X EE/84A8: 8D 80 1F STA $1F80 EE/84AB: 8D 01 13 STA $1301 EE/84AE: 80 06 BRA $84B6 EE/84B0: AD 80 1F LDA $1F80 EE/84B3: 8D 01 13 STA $1301 EE/84B6: 22 04 00 C5 JSL $C50004 ; spc command EE/84BA: E2 20 SEP #$20 EE/84BC: 8B PHB EE/84BD: A9 7E LDA #$7E EE/84BF: 48 PHA EE/84C0: AB PLB EE/84C1: AF 64 1F 00 LDA $001F64 EE/84C5: D0 05 BNE $84CC EE/84C7: A2 00 00 LDX #$0000 EE/84CA: 80 03 BRA $84CF EE/84CC: A2 00 01 LDX #$0100 EE/84CF: A0 00 00 LDY #$0000 EE/84D2: C2 20 REP #$20 EE/84D4: BF 00 EC D2 LDA $D2EC00,X EE/84D8: 99 00 E0 STA $E000,Y EE/84DB: C8 INY EE/84DC: C8 INY EE/84DD: E8 INX EE/84DE: E8 INX EE/84DF: C0 00 01 CPY #$0100 EE/84E2: D0 F0 BNE $84D4 EE/84E4: E2 20 SEP #$20 EE/84E6: AF 64 1F 00 LDA $001F64 EE/84EA: D0 05 BNE $84F1 EE/84EC: A2 00 02 LDX #$0200 EE/84EF: 80 03 BRA $84F4 EE/84F1: A2 00 03 LDX #$0300 EE/84F4: A0 00 00 LDY #$0000 EE/84F7: C2 20 REP #$20 EE/84F9: BF 00 EC D2 LDA $D2EC00,X EE/84FD: 99 00 E1 STA $E100,Y EE/8500: C8 INY EE/8501: C8 INY EE/8502: E8 INX EE/8503: E8 INX EE/8504: C0 00 01 CPY #$0100 EE/8507: D0 F0 BNE $84F9 EE/8509: AB PLB EE/850A: E2 20 SEP #$20 EE/850C: AF 06 B2 EE LDA $EEB206 EE/8510: 85 D2 STA $D2 EE/8512: AF 07 B2 EE LDA $EEB207 EE/8516: 85 D3 STA $D3 EE/8518: AF 08 B2 EE LDA $EEB208 EE/851C: 85 D4 STA $D4 EE/851E: A2 00 20 LDX #$2000 EE/8521: 86 D5 STX $D5 EE/8523: A9 7E LDA #$7E EE/8525: 85 D7 STA $D7 EE/8527: 20 76 A4 JSR $A476 ; decompress EE/852A: 20 80 AD JSR $AD80 ; copy backdrop graphics to vram EE/852D: AF 09 B2 EE LDA $EEB209 ; pointer to world map clouds tile formation EE/8531: 85 D2 STA $D2 EE/8533: AF 0A B2 EE LDA $EEB20A EE/8537: 85 D3 STA $D3 EE/8539: AF 0B B2 EE LDA $EEB20B EE/853D: 85 D4 STA $D4 EE/853F: A2 00 20 LDX #$2000 ; destination = $7E2000 EE/8542: 86 D5 STX $D5 EE/8544: A9 7E LDA #$7E EE/8546: 85 D7 STA $D7 EE/8548: 20 76 A4 JSR $A476 ; decompress EE/854B: 20 A8 AD JSR $ADA8 ; copy backdrop tile formation to vram EE/854E: AF 42 B2 EE LDA $EEB242 EE/8552: 85 D2 STA $D2 EE/8554: AF 43 B2 EE LDA $EEB243 EE/8558: 85 D3 STA $D3 EE/855A: AF 44 B2 EE LDA $EEB244 EE/855E: 85 D4 STA $D4 EE/8560: A2 00 20 LDX #$2000 EE/8563: 86 D5 STX $D5 EE/8565: A9 7E LDA #$7E EE/8567: 85 D7 STA $D7 EE/8569: 20 76 A4 JSR $A476 ; decompress EE/856C: AF 64 1F 00 LDA $001F64 EE/8570: D0 14 BNE $8586 EE/8572: AF 0C B2 EE LDA $EEB20C EE/8576: 85 D2 STA $D2 EE/8578: AF 0D B2 EE LDA $EEB20D EE/857C: 85 D3 STA $D3 EE/857E: AF 0E B2 EE LDA $EEB20E EE/8582: 85 D4 STA $D4 EE/8584: 80 12 BRA $8598 EE/8586: AF 51 B2 EE LDA $EEB251 EE/858A: 85 D2 STA $D2 EE/858C: AF 52 B2 EE LDA $EEB252 EE/8590: 85 D3 STA $D3 EE/8592: AF 53 B2 EE LDA $EEB253 EE/8596: 85 D4 STA $D4 EE/8598: A2 00 28 LDX #$2800 EE/859B: 86 D5 STX $D5 EE/859D: A9 7E LDA #$7E EE/859F: 85 D7 STA $D7 EE/85A1: 20 76 A4 JSR $A476 ; decompress EE/85A4: AF 64 1F 00 LDA $001F64 EE/85A8: D0 14 BNE $85BE EE/85AA: AF 4B B2 EE LDA $EEB24B EE/85AE: 85 D2 STA $D2 EE/85B0: AF 4C B2 EE LDA $EEB24C EE/85B4: 85 D3 STA $D3 EE/85B6: AF 4D B2 EE LDA $EEB24D EE/85BA: 85 D4 STA $D4 EE/85BC: 80 12 BRA $85D0 EE/85BE: AF 4E B2 EE LDA $EEB24E EE/85C2: 85 D2 STA $D2 EE/85C4: AF 4F B2 EE LDA $EEB24F EE/85C8: 85 D3 STA $D3 EE/85CA: AF 50 B2 EE LDA $EEB250 EE/85CE: 85 D4 STA $D4 EE/85D0: A2 00 40 LDX #$4000 EE/85D3: 86 D5 STX $D5 EE/85D5: A9 7E LDA #$7E EE/85D7: 85 D7 STA $D7 EE/85D9: 20 76 A4 JSR $A476 ; decompress EE/85DC: 20 F1 9A JSR $9AF1 EE/85DF: AF 45 B2 EE LDA $EEB245 EE/85E3: 85 D2 STA $D2 EE/85E5: AF 46 B2 EE LDA $EEB246 EE/85E9: 85 D3 STA $D3 EE/85EB: AF 47 B2 EE LDA $EEB247 EE/85EF: 85 D4 STA $D4 EE/85F1: A2 00 48 LDX #$4800 EE/85F4: 86 D5 STX $D5 EE/85F6: A9 7E LDA #$7E EE/85F8: 85 D7 STA $D7 EE/85FA: 20 76 A4 JSR $A476 ; decompress EE/85FD: 20 D0 AD JSR $ADD0 EE/8600: AD F6 11 LDA $11F6 EE/8603: 89 08 BIT #$08 EE/8605: F0 07 BEQ $860E EE/8607: 29 F7 AND #$F7 EE/8609: 8D F6 11 STA $11F6 EE/860C: 80 3E BRA $864C EE/860E: AF 64 1F 00 LDA $001F64 EE/8612: D0 14 BNE $8628 EE/8614: AF 12 B2 EE LDA $EEB212 EE/8618: 85 D2 STA $D2 EE/861A: AF 13 B2 EE LDA $EEB213 EE/861E: 85 D3 STA $D3 EE/8620: AF 14 B2 EE LDA $EEB214 EE/8624: 85 D4 STA $D4 EE/8626: 80 12 BRA $863A EE/8628: AF 1E B2 EE LDA $EEB21E EE/862C: 85 D2 STA $D2 EE/862E: AF 1F B2 EE LDA $EEB21F EE/8632: 85 D3 STA $D3 EE/8634: AF 20 B2 EE LDA $EEB220 EE/8638: 85 D4 STA $D4 EE/863A: A2 50 6F LDX #$6F50 EE/863D: 86 D5 STX $D5 EE/863F: A9 7E LDA #$7E EE/8641: 85 D7 STA $D7 EE/8643: 20 76 A4 JSR $A476 ; decompress EE/8646: 20 4F 3F JSR $3F4F EE/8649: 20 75 AE JSR $AE75 EE/864C: AD F6 11 LDA $11F6 EE/864F: 89 04 BIT #$04 EE/8651: F0 07 BEQ $865A EE/8653: 29 FB AND #$FB EE/8655: 8D F6 11 STA $11F6 EE/8658: 80 3B BRA $8695 EE/865A: AF 64 1F 00 LDA $001F64 EE/865E: D0 14 BNE $8674 EE/8660: AF 0F B2 EE LDA $EEB20F ; world of balance map layout EE/8664: 85 D2 STA $D2 EE/8666: AF 10 B2 EE LDA $EEB210 EE/866A: 85 D3 STA $D3 EE/866C: AF 11 B2 EE LDA $EEB211 EE/8670: 85 D4 STA $D4 EE/8672: 80 12 BRA $8686 EE/8674: AF 24 B2 EE LDA $EEB224 ; world of ruin map layout EE/8678: 85 D2 STA $D2 EE/867A: AF 25 B2 EE LDA $EEB225 EE/867E: 85 D3 STA $D3 EE/8680: AF 26 B2 EE LDA $EEB226 EE/8684: 85 D4 STA $D4 EE/8686: A2 00 00 LDX #$0000 EE/8689: 86 D5 STX $D5 EE/868B: A9 7F LDA #$7F EE/868D: 85 D7 STA $D7 EE/868F: 20 76 A4 JSR $A476 ; decompress EE/8692: 20 2F 94 JSR $942F ; apply map layout modifications EE/8695: 20 D5 34 JSR $34D5 EE/8698: E2 30 SEP #$30 EE/869A: AD 6D 1F LDA $1F6D EE/869D: 1A INC EE/869E: 1A INC EE/869F: 1A INC EE/86A0: 8D 6D 1F STA $1F6D EE/86A3: AA TAX EE/86A4: A0 00 LDY #$00 EE/86A6: BF 00 FD C0 LDA $C0FD00,X ; random number table EE/86AA: 29 3F AND #$3F EE/86AC: 99 00 0B STA $0B00,Y EE/86AF: 7B TDC EE/86B0: 99 01 0B STA $0B01,Y EE/86B3: E8 INX EE/86B4: BF 00 FD C0 LDA $C0FD00,X EE/86B8: 4A LSR EE/86B9: 4A LSR EE/86BA: 99 02 0B STA $0B02,Y EE/86BD: 7B TDC EE/86BE: 99 03 0B STA $0B03,Y EE/86C1: C8 INY EE/86C2: C8 INY EE/86C3: C8 INY EE/86C4: C8 INY EE/86C5: C0 10 CPY #$10 EE/86C7: D0 DD BNE $86A6 EE/86C9: 4C 46 91 JMP $9146 ; set interrupt jump code (w/ vehicle) ; [ Init World Map (chocobo) ] EE/86CC: E2 20 SEP #$20 EE/86CE: C2 10 REP #$10 EE/86D0: A9 80 LDA #$80 EE/86D2: 8D 00 21 STA $2100 EE/86D5: 20 8C 90 JSR $908C ; save mode 7 variables EE/86D8: 20 AF 8F JSR $8FAF ; init hardware registers EE/86DB: A9 10 LDA #$10 EE/86DD: 8D 00 13 STA $1300 EE/86E0: A9 FF LDA #$FF EE/86E2: 8D 02 13 STA $1302 EE/86E5: AD B9 1E LDA $1EB9 EE/86E8: 89 10 BIT #$10 EE/86EA: D0 28 BNE $8714 EE/86EC: AD B7 1E LDA $1EB7 EE/86EF: 89 08 BIT #$08 EE/86F1: F0 04 BEQ $86F7 EE/86F3: A9 19 LDA #$19 EE/86F5: 80 15 BRA $870C EE/86F7: 7B TDC EE/86F8: EB XBA EE/86F9: AD 64 1F LDA $1F64 EE/86FC: 29 03 AND #$03 EE/86FE: 0A ASL EE/86FF: AA TAX EE/8700: AD B7 1E LDA $1EB7 EE/8703: 89 01 BIT #$01 EE/8705: F0 01 BEQ $8708 EE/8707: E8 INX EE/8708: BF 8D 83 EE LDA $EE838D,X EE/870C: 8D 80 1F STA $1F80 EE/870F: 8D 01 13 STA $1301 EE/8712: 80 06 BRA $871A EE/8714: AD 80 1F LDA $1F80 EE/8717: 8D 01 13 STA $1301 EE/871A: 22 04 00 C5 JSL $C50004 ; spc command EE/871E: C2 20 REP #$20 EE/8720: AD 64 1F LDA $1F64 EE/8723: 29 00 60 AND #$6000 EE/8726: EB XBA EE/8727: 4A LSR EE/8728: 4A LSR EE/8729: 4A LSR EE/872A: 4A LSR EE/872B: E2 20 SEP #$20 EE/872D: 8D 02 42 STA $4202 EE/8730: A9 5A LDA #$5A EE/8732: 8D 03 42 STA $4203 EE/8735: EA NOP EE/8736: EA NOP EE/8737: C2 20 REP #$20 EE/8739: AD 16 42 LDA $4216 EE/873C: 09 00 80 ORA #$8000 EE/873F: 8D F2 11 STA $11F2 EE/8742: 9C F4 11 STZ $11F4 EE/8745: AF 60 1F 00 LDA $001F60 EE/8749: 4A LSR EE/874A: 4A LSR EE/874B: 4A LSR EE/874C: 4A LSR EE/874D: 29 F0 0F AND #$0FF0 EE/8750: 18 CLC EE/8751: 69 08 00 ADC #$0008 EE/8754: 85 38 STA $38 EE/8756: AF 60 1F 00 LDA $001F60 EE/875A: 0A ASL EE/875B: 0A ASL EE/875C: 0A ASL EE/875D: 0A ASL EE/875E: 29 F0 0F AND #$0FF0 EE/8761: 18 CLC EE/8762: 69 08 00 ADC #$0008 EE/8765: 85 34 STA $34 EE/8767: E2 20 SEP #$20 EE/8769: 8B PHB EE/876A: A9 7E LDA #$7E EE/876C: 48 PHA EE/876D: AB PLB EE/876E: AF 64 1F 00 LDA $001F64 EE/8772: D0 05 BNE $8779 EE/8774: A2 00 00 LDX #$0000 EE/8777: 80 03 BRA $877C EE/8779: A2 00 01 LDX #$0100 EE/877C: A0 00 00 LDY #$0000 EE/877F: C2 20 REP #$20 EE/8781: BF 00 EC D2 LDA $D2EC00,X EE/8785: 99 00 E0 STA $E000,Y EE/8788: C8 INY EE/8789: C8 INY EE/878A: E8 INX EE/878B: E8 INX EE/878C: C0 00 01 CPY #$0100 EE/878F: D0 F0 BNE $8781 EE/8791: E2 20 SEP #$20 EE/8793: AF 64 1F 00 LDA $001F64 EE/8797: D0 05 BNE $879E EE/8799: A2 00 02 LDX #$0200 EE/879C: 80 03 BRA $87A1 EE/879E: A2 00 03 LDX #$0300 EE/87A1: A0 00 00 LDY #$0000 EE/87A4: C2 20 REP #$20 EE/87A6: BF 00 EC D2 LDA $D2EC00,X EE/87AA: 99 00 E1 STA $E100,Y EE/87AD: C8 INY EE/87AE: C8 INY EE/87AF: E8 INX EE/87B0: E8 INX EE/87B1: C0 00 01 CPY #$0100 EE/87B4: D0 F0 BNE $87A6 EE/87B6: AB PLB EE/87B7: E2 20 SEP #$20 EE/87B9: AF 06 B2 EE LDA $EEB206 EE/87BD: 85 D2 STA $D2 EE/87BF: AF 07 B2 EE LDA $EEB207 EE/87C3: 85 D3 STA $D3 EE/87C5: AF 08 B2 EE LDA $EEB208 EE/87C9: 85 D4 STA $D4 EE/87CB: A2 00 20 LDX #$2000 EE/87CE: 86 D5 STX $D5 EE/87D0: A9 7E LDA #$7E EE/87D2: 85 D7 STA $D7 EE/87D4: 20 76 A4 JSR $A476 ; decompress EE/87D7: 20 80 AD JSR $AD80 ; copy backdrop graphics to vram EE/87DA: AF 09 B2 EE LDA $EEB209 ; pointer to world map clouds tile formation EE/87DE: 85 D2 STA $D2 EE/87E0: AF 0A B2 EE LDA $EEB20A EE/87E4: 85 D3 STA $D3 EE/87E6: AF 0B B2 EE LDA $EEB20B EE/87EA: 85 D4 STA $D4 EE/87EC: A2 00 20 LDX #$2000 EE/87EF: 86 D5 STX $D5 EE/87F1: A9 7E LDA #$7E EE/87F3: 85 D7 STA $D7 EE/87F5: 20 76 A4 JSR $A476 ; decompress EE/87F8: 20 A8 AD JSR $ADA8 ; copy backdrop tile formation to vram EE/87FB: AF 42 B2 EE LDA $EEB242 EE/87FF: 85 D2 STA $D2 EE/8801: AF 43 B2 EE LDA $EEB243 EE/8805: 85 D3 STA $D3 EE/8807: AF 44 B2 EE LDA $EEB244 EE/880B: 85 D4 STA $D4 EE/880D: A2 00 20 LDX #$2000 EE/8810: 86 D5 STX $D5 EE/8812: A9 7E LDA #$7E EE/8814: 85 D7 STA $D7 EE/8816: 20 76 A4 JSR $A476 ; decompress EE/8819: AF 30 B2 EE LDA $EEB230 EE/881D: 85 D2 STA $D2 EE/881F: AF 31 B2 EE LDA $EEB231 EE/8823: 85 D3 STA $D3 EE/8825: AF 32 B2 EE LDA $EEB232 EE/8829: 85 D4 STA $D4 EE/882B: A2 00 28 LDX #$2800 EE/882E: 86 D5 STX $D5 EE/8830: A9 7E LDA #$7E EE/8832: 85 D7 STA $D7 EE/8834: 20 76 A4 JSR $A476 ; decompress EE/8837: AF 64 1F 00 LDA $001F64 EE/883B: D0 14 BNE $8851 EE/883D: AF 4B B2 EE LDA $EEB24B EE/8841: 85 D2 STA $D2 EE/8843: AF 4C B2 EE LDA $EEB24C EE/8847: 85 D3 STA $D3 EE/8849: AF 4D B2 EE LDA $EEB24D EE/884D: 85 D4 STA $D4 EE/884F: 80 12 BRA $8863 EE/8851: AF 4E B2 EE LDA $EEB24E EE/8855: 85 D2 STA $D2 EE/8857: AF 4F B2 EE LDA $EEB24F EE/885B: 85 D3 STA $D3 EE/885D: AF 50 B2 EE LDA $EEB250 EE/8861: 85 D4 STA $D4 EE/8863: A2 00 40 LDX #$4000 EE/8866: 86 D5 STX $D5 EE/8868: A9 7E LDA #$7E EE/886A: 85 D7 STA $D7 EE/886C: 20 76 A4 JSR $A476 ; decompress EE/886F: 20 F1 9A JSR $9AF1 EE/8872: AF 48 B2 EE LDA $EEB248 EE/8876: 85 D2 STA $D2 EE/8878: AF 49 B2 EE LDA $EEB249 EE/887C: 85 D3 STA $D3 EE/887E: AF 4A B2 EE LDA $EEB24A EE/8882: 85 D4 STA $D4 EE/8884: A2 00 48 LDX #$4800 EE/8887: 86 D5 STX $D5 EE/8889: A9 7E LDA #$7E EE/888B: 85 D7 STA $D7 EE/888D: 20 76 A4 JSR $A476 ; decompress EE/8890: 20 D0 AD JSR $ADD0 EE/8893: AD F6 11 LDA $11F6 EE/8896: 89 08 BIT #$08 EE/8898: F0 07 BEQ $88A1 EE/889A: 29 F7 AND #$F7 EE/889C: 8D F6 11 STA $11F6 EE/889F: 80 3E BRA $88DF EE/88A1: AF 64 1F 00 LDA $001F64 EE/88A5: D0 14 BNE $88BB EE/88A7: AF 12 B2 EE LDA $EEB212 EE/88AB: 85 D2 STA $D2 EE/88AD: AF 13 B2 EE LDA $EEB213 EE/88B1: 85 D3 STA $D3 EE/88B3: AF 14 B2 EE LDA $EEB214 EE/88B7: 85 D4 STA $D4 EE/88B9: 80 12 BRA $88CD EE/88BB: AF 1E B2 EE LDA $EEB21E EE/88BF: 85 D2 STA $D2 EE/88C1: AF 1F B2 EE LDA $EEB21F EE/88C5: 85 D3 STA $D3 EE/88C7: AF 20 B2 EE LDA $EEB220 EE/88CB: 85 D4 STA $D4 EE/88CD: A2 50 6F LDX #$6F50 EE/88D0: 86 D5 STX $D5 EE/88D2: A9 7E LDA #$7E EE/88D4: 85 D7 STA $D7 EE/88D6: 20 76 A4 JSR $A476 ; decompress EE/88D9: 20 4F 3F JSR $3F4F EE/88DC: 20 75 AE JSR $AE75 EE/88DF: AD F6 11 LDA $11F6 EE/88E2: 89 04 BIT #$04 EE/88E4: F0 07 BEQ $88ED EE/88E6: 29 FB AND #$FB EE/88E8: 8D F6 11 STA $11F6 EE/88EB: 80 3B BRA $8928 EE/88ED: AF 64 1F 00 LDA $001F64 EE/88F1: D0 14 BNE $8907 EE/88F3: AF 0F B2 EE LDA $EEB20F EE/88F7: 85 D2 STA $D2 EE/88F9: AF 10 B2 EE LDA $EEB210 EE/88FD: 85 D3 STA $D3 EE/88FF: AF 11 B2 EE LDA $EEB211 EE/8903: 85 D4 STA $D4 EE/8905: 80 12 BRA $8919 EE/8907: AF 24 B2 EE LDA $EEB224 EE/890B: 85 D2 STA $D2 EE/890D: AF 25 B2 EE LDA $EEB225 EE/8911: 85 D3 STA $D3 EE/8913: AF 26 B2 EE LDA $EEB226 EE/8917: 85 D4 STA $D4 EE/8919: A2 00 00 LDX #$0000 EE/891C: 86 D5 STX $D5 EE/891E: A9 7F LDA #$7F EE/8920: 85 D7 STA $D7 EE/8922: 20 76 A4 JSR $A476 ; decompress EE/8925: 20 2F 94 JSR $942F ; apply map layout modifications EE/8928: 20 D5 34 JSR $34D5 EE/892B: E2 20 SEP #$20 EE/892D: A9 02 LDA #$02 EE/892F: 85 CA STA $CA EE/8931: A9 02 LDA #$02 EE/8933: 85 20 STA $20 EE/8935: A9 80 LDA #$80 EE/8937: 85 7B STA $7B EE/8939: A9 D0 LDA #$D0 EE/893B: 85 7D STA $7D EE/893D: 64 6A STZ $6A EE/893F: 64 6B STZ $6B EE/8941: 64 6C STZ $6C EE/8943: AD FB 11 LDA $11FB EE/8946: 8D 02 42 STA $4202 EE/8949: A9 A0 LDA #$A0 EE/894B: 8D 03 42 STA $4203 EE/894E: EA NOP EE/894F: EA NOP EE/8950: EA NOP EE/8951: AE 16 42 LDX $4216 EE/8954: 86 6A STX $6A EE/8956: A9 16 LDA #$16 EE/8958: 8D 03 42 STA $4203 EE/895B: EA NOP EE/895C: EA NOP EE/895D: EA NOP EE/895E: AD 16 42 LDA $4216 EE/8961: 18 CLC EE/8962: 65 6B ADC $6B EE/8964: 85 6B STA $6B EE/8966: AD 17 42 LDA $4217 EE/8969: 65 6C ADC $6C EE/896B: 85 6C STA $6C EE/896D: 18 CLC EE/896E: A5 6A LDA $6A EE/8970: 69 80 ADC #$80 EE/8972: 85 6A STA $6A EE/8974: A5 6B LDA $6B EE/8976: 69 01 ADC #$01 EE/8978: 85 6B STA $6B EE/897A: A5 6C LDA $6C EE/897C: 69 D5 ADC #$D5 EE/897E: 85 6C STA $6C EE/8980: A9 80 LDA #$80 EE/8982: 8D 15 21 STA $2115 EE/8985: C2 20 REP #$20 EE/8987: A9 C0 6A LDA #$6AC0 EE/898A: 8D 16 21 STA $2116 EE/898D: A0 00 00 LDY #$0000 EE/8990: B7 6A LDA [$6A],Y EE/8992: 8D 18 21 STA $2118 EE/8995: C8 INY EE/8996: C8 INY EE/8997: C0 40 00 CPY #$0040 EE/899A: D0 F4 BNE $8990 EE/899C: A9 C0 6B LDA #$6BC0 EE/899F: 8D 16 21 STA $2116 EE/89A2: A0 C0 00 LDY #$00C0 EE/89A5: B7 6A LDA [$6A],Y EE/89A7: 8D 18 21 STA $2118 EE/89AA: C8 INY EE/89AB: C8 INY EE/89AC: C0 00 01 CPY #$0100 EE/89AF: D0 F4 BNE $89A5 EE/89B1: E2 20 SEP #$20 EE/89B3: 8B PHB EE/89B4: A9 E6 LDA #$E6 EE/89B6: 48 PHA EE/89B7: AB PLB EE/89B8: A9 00 LDA #$00 EE/89BA: EB XBA EE/89BB: AF FC 11 00 LDA $0011FC EE/89BF: 29 07 AND #$07 EE/89C1: 0A ASL EE/89C2: 0A ASL EE/89C3: 0A ASL EE/89C4: 0A ASL EE/89C5: 0A ASL EE/89C6: A8 TAY EE/89C7: A2 00 00 LDX #$0000 EE/89CA: C2 20 REP #$20 EE/89CC: B9 00 80 LDA $8000,Y EE/89CF: 9F 40 E1 7E STA $7EE140,X EE/89D3: C8 INY EE/89D4: C8 INY EE/89D5: E8 INX EE/89D6: E8 INX EE/89D7: E0 20 00 CPX #$0020 EE/89DA: D0 F0 BNE $89CC EE/89DC: AB PLB EE/89DD: 4C 46 91 JMP $9146 ; set interrupt jump code (w/ vehicle) ; [ Init World Map (no vehicle) ] EE/89E0: E2 20 SEP #$20 EE/89E2: C2 10 REP #$10 EE/89E4: A9 80 LDA #$80 ; screen off EE/89E6: 8D 00 21 STA $2100 EE/89E9: 20 8C 90 JSR $909F ; restore mode 7 variables EE/89EC: 20 AF 8F JSR $8FAF ; init hardware registers EE/89EF: A9 10 LDA #$10 ; song command (play song) EE/89F1: 8D 00 13 STA $1300 EE/89F4: A9 FF LDA #$FF ; full volume EE/89F6: 8D 02 13 STA $1302 EE/89F9: AD B9 1E LDA $1EB9 ; don't change song when loading map EE/89FC: 89 10 BIT #$10 EE/89FE: D0 28 BNE $8A28 EE/8A00: AD B7 1E LDA $1EB7 ; branch if not on the veldt EE/8A03: 89 08 BIT #$08 EE/8A05: F0 04 BEQ $8A0B EE/8A07: A9 19 LDA #$19 ; veldt music EE/8A09: 80 15 BRA $8A20 EE/8A0B: 7B TDC EE/8A0C: EB XBA EE/8A0D: AD 64 1F LDA $1F64 ; map index EE/8A10: 29 03 AND #$03 EE/8A12: 0A ASL EE/8A13: AA TAX EE/8A14: AD B7 1E LDA $1EB7 ; alternative music flag EE/8A17: 89 01 BIT #$01 EE/8A19: F0 01 BEQ $8A1C EE/8A1B: E8 INX EE/8A1C: BF 91 83 EE LDA $EE8391,X ; song number EE/8A20: 8D 80 1F STA $1F80 EE/8A23: 8D 01 13 STA $1301 EE/8A26: 80 06 BRA $8A2E EE/8A28: AD 80 1F LDA $1F80 EE/8A2B: 8D 01 13 STA $1301 EE/8A2E: 22 04 00 C5 JSL $C50004 ; spc command EE/8A32: C2 20 REP #$20 EE/8A34: 64 08 STZ $08 ; EE/8A36: AF 60 1F 00 LDA $001F60 ; map position EE/8A3A: E2 20 SEP #$20 EE/8A3C: 85 E0 STA $E0 EE/8A3E: EB XBA EE/8A3F: 85 E2 STA $E2 EE/8A41: C2 20 REP #$20 EE/8A43: A5 DF LDA $DF EE/8A45: 4A LSR EE/8A46: 4A LSR EE/8A47: 4A LSR EE/8A48: 4A LSR EE/8A49: 85 34 STA $34 EE/8A4B: A5 E1 LDA $E1 EE/8A4D: 4A LSR EE/8A4E: 4A LSR EE/8A4F: 4A LSR EE/8A50: 4A LSR EE/8A51: 85 38 STA $38 EE/8A53: E2 20 SEP #$20 EE/8A55: 8B PHB EE/8A56: A9 7E LDA #$7E EE/8A58: 48 PHA EE/8A59: AB PLB EE/8A5A: AF 64 1F 00 LDA $001F64 EE/8A5E: D0 05 BNE $8A65 EE/8A60: A2 00 00 LDX #$0000 EE/8A63: 80 05 BRA $8A6A EE/8A65: A2 00 01 LDX #$0100 EE/8A68: 85 D2 STA $D2 EE/8A6A: A0 00 00 LDY #$0000 EE/8A6D: C2 20 REP #$20 EE/8A6F: BF 00 EC D2 LDA $D2EC00,X ; map palettes EE/8A73: 99 00 E0 STA $E000,Y EE/8A76: C8 INY EE/8A77: C8 INY EE/8A78: E8 INX EE/8A79: E8 INX EE/8A7A: C0 00 01 CPY #$0100 EE/8A7D: D0 F0 BNE $8A6F EE/8A7F: E2 20 SEP #$20 EE/8A81: AF 64 1F 00 LDA $001F64 EE/8A85: D0 05 BNE $8A8C EE/8A87: A2 00 02 LDX #$0200 EE/8A8A: 80 03 BRA $8A8F EE/8A8C: A2 00 03 LDX #$0300 EE/8A8F: A0 00 00 LDY #$0000 EE/8A92: C2 20 REP #$20 EE/8A94: BF 00 EC D2 LDA $D2EC00,X ; vehicle palettes EE/8A98: 99 00 E1 STA $E100,Y EE/8A9B: C8 INY EE/8A9C: C8 INY EE/8A9D: E8 INX EE/8A9E: E8 INX EE/8A9F: C0 00 01 CPY #$0100 EE/8AA2: D0 F0 BNE $8A94 EE/8AA4: AB PLB EE/8AA5: E2 20 SEP #$20 EE/8AA7: AF 42 B2 EE LDA $EEB242 EE/8AAB: 85 D2 STA $D2 EE/8AAD: AF 43 B2 EE LDA $EEB243 EE/8AB1: 85 D3 STA $D3 EE/8AB3: AF 44 B2 EE LDA $EEB244 EE/8AB7: 85 D4 STA $D4 EE/8AB9: A2 00 20 LDX #$2000 EE/8ABC: 86 D5 STX $D5 EE/8ABE: A9 7E LDA #$7E EE/8AC0: 85 D7 STA $D7 EE/8AC2: 20 76 A4 JSR $A476 ; decompress EE/8AC5: AF 64 1F 00 LDA $001F64 EE/8AC9: D0 14 BNE $8ADF EE/8ACB: AF 0C B2 EE LDA $EEB20C EE/8ACF: 85 D2 STA $D2 EE/8AD1: AF 0D B2 EE LDA $EEB20D EE/8AD5: 85 D3 STA $D3 EE/8AD7: AF 0E B2 EE LDA $EEB20E EE/8ADB: 85 D4 STA $D4 EE/8ADD: 80 12 BRA $8AF1 EE/8ADF: AF 51 B2 EE LDA $EEB251 EE/8AE3: 85 D2 STA $D2 EE/8AE5: AF 52 B2 EE LDA $EEB252 EE/8AE9: 85 D3 STA $D3 EE/8AEB: AF 53 B2 EE LDA $EEB253 EE/8AEF: 85 D4 STA $D4 EE/8AF1: A2 00 28 LDX #$2800 EE/8AF4: 86 D5 STX $D5 EE/8AF6: A9 7E LDA #$7E EE/8AF8: 85 D7 STA $D7 EE/8AFA: 20 76 A4 JSR $A476 ; decompress EE/8AFD: AF 64 1F 00 LDA $001F64 EE/8B01: D0 14 BNE $8B17 EE/8B03: AF 4B B2 EE LDA $EEB24B EE/8B07: 85 D2 STA $D2 EE/8B09: AF 4C B2 EE LDA $EEB24C EE/8B0D: 85 D3 STA $D3 EE/8B0F: AF 4D B2 EE LDA $EEB24D EE/8B13: 85 D4 STA $D4 EE/8B15: 80 12 BRA $8B29 EE/8B17: AF 4E B2 EE LDA $EEB24E EE/8B1B: 85 D2 STA $D2 EE/8B1D: AF 4F B2 EE LDA $EEB24F EE/8B21: 85 D3 STA $D3 EE/8B23: AF 50 B2 EE LDA $EEB250 EE/8B27: 85 D4 STA $D4 EE/8B29: A2 00 40 LDX #$4000 EE/8B2C: 86 D5 STX $D5 EE/8B2E: A9 7E LDA #$7E EE/8B30: 85 D7 STA $D7 EE/8B32: 20 76 A4 JSR $A476 ; decompress EE/8B35: 20 F1 9A JSR $9AF1 EE/8B38: AF 45 B2 EE LDA $EEB245 EE/8B3C: 85 D2 STA $D2 EE/8B3E: AF 46 B2 EE LDA $EEB246 EE/8B42: 85 D3 STA $D3 EE/8B44: AF 47 B2 EE LDA $EEB247 EE/8B48: 85 D4 STA $D4 EE/8B4A: A2 00 48 LDX #$4800 EE/8B4D: 86 D5 STX $D5 EE/8B4F: A9 7E LDA #$7E EE/8B51: 85 D7 STA $D7 EE/8B53: 20 76 A4 JSR $A476 ; decompress EE/8B56: 20 D0 AD JSR $ADD0 EE/8B59: AD F6 11 LDA $11F6 EE/8B5C: 89 08 BIT #$08 EE/8B5E: F0 07 BEQ $8B67 ; branch if map graphics are not loaded yet EE/8B60: 29 F7 AND #$F7 EE/8B62: 8D F6 11 STA $11F6 EE/8B65: 80 3E BRA $8BA5 EE/8B67: AF 64 1F 00 LDA $001F64 EE/8B6B: D0 14 BNE $8B81 ; branch if world of ruin EE/8B6D: AF 12 B2 EE LDA $EEB212 ; pointer to world of balance graphics EE/8B71: 85 D2 STA $D2 EE/8B73: AF 13 B2 EE LDA $EEB213 EE/8B77: 85 D3 STA $D3 EE/8B79: AF 14 B2 EE LDA $EEB214 EE/8B7D: 85 D4 STA $D4 EE/8B7F: 80 12 BRA $8B93 EE/8B81: AF 1E B2 EE LDA $EEB21E ; pointer to ruin of balance graphics EE/8B85: 85 D2 STA $D2 EE/8B87: AF 1F B2 EE LDA $EEB21F EE/8B8B: 85 D3 STA $D3 EE/8B8D: AF 20 B2 EE LDA $EEB220 EE/8B91: 85 D4 STA $D4 EE/8B93: A2 50 6F LDX #$6F50 ; destination = $7E6F50 EE/8B96: 86 D5 STX $D5 EE/8B98: A9 7E LDA #$7E EE/8B9A: 85 D7 STA $D7 EE/8B9C: 20 76 A4 JSR $A476 ; decompress EE/8B9F: 20 4F 3F JSR $3F4F ; EE/8BA2: 20 75 AE JSR $AE75 EE/8BA5: AD F6 11 LDA $11F6 EE/8BA8: 89 04 BIT #$04 EE/8BAA: F0 07 BEQ $8BB3 EE/8BAC: 29 FB AND #$FB EE/8BAE: 8D F6 11 STA $11F6 EE/8BB1: 80 3B BRA $8BEE EE/8BB3: AF 64 1F 00 LDA $001F64 EE/8BB7: D0 14 BNE $8BCD EE/8BB9: AF 0F B2 EE LDA $EEB20F ; pointer to world of balance map layout EE/8BBD: 85 D2 STA $D2 EE/8BBF: AF 10 B2 EE LDA $EEB210 EE/8BC3: 85 D3 STA $D3 EE/8BC5: AF 11 B2 EE LDA $EEB211 EE/8BC9: 85 D4 STA $D4 EE/8BCB: 80 12 BRA $8BDF EE/8BCD: AF 24 B2 EE LDA $EEB224 ; pointer to world of ruin map layout EE/8BD1: 85 D2 STA $D2 EE/8BD3: AF 25 B2 EE LDA $EEB225 EE/8BD7: 85 D3 STA $D3 EE/8BD9: AF 26 B2 EE LDA $EEB226 EE/8BDD: 85 D4 STA $D4 EE/8BDF: A2 00 00 LDX #$0000 EE/8BE2: 86 D5 STX $D5 EE/8BE4: A9 7F LDA #$7F EE/8BE6: 85 D7 STA $D7 EE/8BE8: 20 76 A4 JSR $A476 ; decompress EE/8BEB: 20 2F 94 JSR $942F ; apply map layout modifications EE/8BEE: 20 D5 34 JSR $34D5 EE/8BF1: A2 00 00 LDX #$0000 EE/8BF4: BF 00 E1 7E LDA $7EE100,X EE/8BF8: 9F 20 E1 7E STA $7EE120,X EE/8BFC: BF 01 E1 7E LDA $7EE101,X EE/8C00: 9F 21 E1 7E STA $7EE121,X EE/8C04: BF 02 E1 7E LDA $7EE102,X EE/8C08: 9F 22 E1 7E STA $7EE122,X EE/8C0C: BF 03 E1 7E LDA $7EE103,X EE/8C10: 9F 23 E1 7E STA $7EE123,X EE/8C14: E8 INX EE/8C15: E8 INX EE/8C16: E8 INX EE/8C17: E8 INX EE/8C18: E0 20 00 CPX #$0020 EE/8C1B: D0 D7 BNE $8BF4 EE/8C1D: AF 64 1F 00 LDA $001F64 EE/8C21: 85 F4 STA $F4 EE/8C23: E2 20 SEP #$20 EE/8C25: 7B TDC EE/8C26: EB XBA EE/8C27: AD 68 1F LDA $1F68 EE/8C2A: 85 F6 STA $F6 EE/8C2C: 0A ASL EE/8C2D: 0A ASL EE/8C2E: AA TAX EE/8C2F: BF 42 48 EE LDA $EE4842,X EE/8C33: 85 F7 STA $F7 EE/8C35: A9 03 LDA #$03 EE/8C37: 85 CA STA $CA EE/8C39: A9 03 LDA #$03 EE/8C3B: 85 20 STA $20 EE/8C3D: A9 80 LDA #$80 EE/8C3F: 85 7B STA $7B EE/8C41: A9 70 LDA #$70 EE/8C43: 85 7D STA $7D EE/8C45: 4C 81 91 JMP $9181 ; set interrupt jump code (no vehicle) ; [ Init Magitek Train Ride ] EE/8C48: E2 20 SEP #$20 EE/8C4A: C2 10 REP #$10 EE/8C4C: A9 80 LDA #$80 EE/8C4E: 8D 00 21 STA $2100 EE/8C51: 20 AF 8F JSR $8FAF ; init hardware registers EE/8C54: 64 73 STZ $73 EE/8C56: 64 74 STZ $74 EE/8C58: AD F6 11 LDA $11F6 EE/8C5B: 89 02 BIT #$02 EE/8C5D: F0 0C BEQ $8C6B ; branch if battle is not enabled EE/8C5F: 20 FC 90 JSR $90FC ; restore direct page EE/8C62: A5 34 LDA $34 EE/8C64: 38 SEC EE/8C65: E9 05 SBC #$05 EE/8C67: 85 34 STA $34 EE/8C69: 80 03 BRA $8C6E EE/8C6B: 20 8C 90 JSR $908C ; save mode 7 variables EE/8C6E: A9 10 LDA #$10 ; spc command $10 (play song) EE/8C70: 8D 00 13 STA $1300 EE/8C73: AF 95 83 EE LDA $EE8395 ; magitek train ride song EE/8C77: 8D 01 13 STA $1301 EE/8C7A: A9 FF LDA #$FF EE/8C7C: 8D 02 13 STA $1302 EE/8C7F: 22 04 00 C5 JSL $C50004 ; spc command EE/8C83: E2 20 SEP #$20 EE/8C85: AF 1B B2 EE LDA $EEB21B ; pointer to magitek train ride color palettes ($EF4846) EE/8C89: 85 6A STA $6A EE/8C8B: AF 1C B2 EE LDA $EEB21C EE/8C8F: 85 6B STA $6B EE/8C91: AF 1D B2 EE LDA $EEB21D EE/8C95: 85 6C STA $6C EE/8C97: 20 42 AD JSR $AD42 ; copy color palettes to ppu EE/8C9A: AF 0C B2 EE LDA $EEB20C ; pointer to setzer's airship graphics ($EEC702) EE/8C9E: 85 D2 STA $D2 EE/8CA0: AF 0D B2 EE LDA $EEB20D EE/8CA4: 85 D3 STA $D3 EE/8CA6: AF 0E B2 EE LDA $EEB20E EE/8CAA: 85 D4 STA $D4 EE/8CAC: A2 00 20 LDX #$2000 EE/8CAF: 86 D5 STX $D5 EE/8CB1: A9 7E LDA #$7E EE/8CB3: 85 D7 STA $D7 EE/8CB5: 20 76 A4 JSR $A476 ; decompress EE/8CB8: 20 D0 AD JSR $ADD0 ; copy sprite graphics to vram EE/8CBB: AF 15 B2 EE LDA $EEB215 ; pointer to magitek train ride graphics ($EF3250) EE/8CBF: 85 D2 STA $D2 EE/8CC1: AF 16 B2 EE LDA $EEB216 EE/8CC5: 85 D3 STA $D3 EE/8CC7: AF 17 B2 EE LDA $EEB217 EE/8CCB: 85 D4 STA $D4 EE/8CCD: A2 00 A0 LDX #$A000 ; destination = $7EA000 EE/8CD0: 86 D5 STX $D5 EE/8CD2: A9 7E LDA #$7E EE/8CD4: 85 D7 STA $D7 EE/8CD6: 20 76 A4 JSR $A476 ; decompress EE/8CD9: 20 05 9A JSR $9A05 ; init magitek train ride graphics EE/8CDC: A2 00 DD LDX #$DD00 ; $D8DD00 (pointers to magitek train ride tiles) EE/8CDF: 86 6A STX $6A EE/8CE1: A9 D8 LDA #$D8 EE/8CE3: 85 6C STA $6C EE/8CE5: 20 29 AE JSR $AE29 ; copy pointers to magitek train ride tiles to vram EE/8CE8: 20 F8 AD JSR $ADF8 ; init magitek train tile map in vram EE/8CEB: A2 08 18 LDX #$1808 EE/8CEE: 8E 00 43 STX $4300 EE/8CF1: A2 58 00 LDX #$0058 ; source = $000058 EE/8CF4: 8E 02 43 STX $4302 EE/8CF7: A9 00 LDA #$00 EE/8CF9: 8D 04 43 STA $4304 EE/8CFC: A2 00 40 LDX #$4000 ; size = $4000 EE/8CFF: 8E 05 43 STX $4305 EE/8D02: 64 58 STZ $58 EE/8D04: 9C 15 21 STZ $2115 EE/8D07: 9C 16 21 STZ $2116 EE/8D0A: 9C 17 21 STZ $2117 EE/8D0D: A9 01 LDA #$01 EE/8D0F: 8D 0B 42 STA $420B EE/8D12: C2 30 REP #$30 EE/8D14: A5 36 LDA $36 EE/8D16: 29 20 00 AND #$0020 EE/8D19: 48 PHA EE/8D1A: 85 58 STA $58 EE/8D1C: A5 34 LDA $34 EE/8D1E: 85 64 STA $64 EE/8D20: 20 F5 25 JSR $25F5 ; update magitek train ride script data EE/8D23: A5 34 LDA $34 EE/8D25: 18 CLC EE/8D26: 69 05 00 ADC #$0005 EE/8D29: 85 34 STA $34 EE/8D2B: 68 PLA EE/8D2C: 85 58 STA $58 EE/8D2E: A9 20 00 LDA #$0020 EE/8D31: 38 SEC EE/8D32: E5 58 SBC $58 EE/8D34: 85 58 STA $58 EE/8D36: A5 34 LDA $34 EE/8D38: 85 64 STA $64 EE/8D3A: 20 F5 25 JSR $25F5 ; update magitek train ride script data EE/8D3D: A5 34 LDA $34 EE/8D3F: 18 CLC EE/8D40: 69 05 00 ADC #$0005 EE/8D43: 85 34 STA $34 EE/8D45: 4C A8 91 JMP $91A8 ; set interrupt jump code (magitek train ride) ; [ Init World Map (serpent trench) ] EE/8D48: E2 20 SEP #$20 EE/8D4A: C2 10 REP #$10 EE/8D4C: A9 80 LDA #$80 EE/8D4E: 8D 00 21 STA $2100 EE/8D51: 20 AF 8F JSR $8FAF ; init hardware registers EE/8D54: AD F6 11 LDA $11F6 EE/8D57: 89 02 BIT #$02 EE/8D59: F0 0B BEQ $8D66 ; branch if battle is not enabled EE/8D5B: 20 FC 90 JSR $90FC ; restore direct page EE/8D5E: 64 23 STZ $23 EE/8D60: A9 0F LDA #$0F EE/8D62: 85 22 STA $22 EE/8D64: 80 27 BRA $8D8D EE/8D66: 20 8C 90 JSR $908C ; save mode 7 variables EE/8D69: C2 20 REP #$20 EE/8D6B: AD 60 1F LDA $1F60 EE/8D6E: 4A LSR EE/8D6F: 4A LSR EE/8D70: 4A LSR EE/8D71: 4A LSR EE/8D72: 29 F0 0F AND #$0FF0 EE/8D75: 85 38 STA $38 EE/8D77: AD 60 1F LDA $1F60 EE/8D7A: 0A ASL EE/8D7B: 0A ASL EE/8D7C: 0A ASL EE/8D7D: 0A ASL EE/8D7E: 29 F0 0F AND #$0FF0 EE/8D81: 85 34 STA $34 EE/8D83: E2 20 SEP #$20 EE/8D85: A9 80 LDA #$80 EE/8D87: 85 7B STA $7B EE/8D89: A9 D0 LDA #$D0 EE/8D8B: 85 7D STA $7D EE/8D8D: A9 04 LDA #$04 EE/8D8F: 85 CA STA $CA EE/8D91: A9 04 LDA #$04 EE/8D93: 85 20 STA $20 EE/8D95: AD B9 1E LDA $1EB9 EE/8D98: 89 10 BIT #$10 EE/8D9A: D0 23 BNE $8DBF EE/8D9C: A2 00 00 LDX #$0000 EE/8D9F: A9 10 LDA #$10 EE/8DA1: 8D 00 13 STA $1300 EE/8DA4: AD B7 1E LDA $1EB7 ; alternative world map song EE/8DA7: 89 01 BIT #$01 EE/8DA9: F0 01 BEQ $8DAC EE/8DAB: E8 INX EE/8DAC: BF 97 83 EE LDA $EE8397,X ; serpent trench song (both are the same) EE/8DB0: 8D 80 1F STA $1F80 EE/8DB3: 8D 01 13 STA $1301 EE/8DB6: A9 FF LDA #$FF EE/8DB8: 8D 02 13 STA $1302 EE/8DBB: 22 04 00 C5 JSL $C50004 ; spc command EE/8DBF: A9 A3 LDA #$A3 EE/8DC1: 8D 31 21 STA $2131 ; screen add/sub (half addition, affect sprites, bg1, bg2) EE/8DC4: E2 20 SEP #$20 EE/8DC6: 7B TDC EE/8DC7: 8F 00 20 7E STA $7E2000 EE/8DCB: 8F 01 20 7E STA $7E2001 EE/8DCF: A9 80 LDA #$80 EE/8DD1: 8D 15 21 STA $2115 EE/8DD4: A2 00 50 LDX #$5000 EE/8DD7: 8E 16 21 STX $2116 EE/8DDA: A2 09 18 LDX #$1809 EE/8DDD: 8E 00 43 STX $4300 EE/8DE0: A2 00 20 LDX #$2000 EE/8DE3: 8E 02 43 STX $4302 EE/8DE6: A9 7E LDA #$7E EE/8DE8: 8D 04 43 STA $4304 EE/8DEB: A2 00 40 LDX #$4000 EE/8DEE: 8E 05 43 STX $4305 EE/8DF1: A9 01 LDA #$01 EE/8DF3: 8D 0B 42 STA $420B EE/8DF6: A9 80 LDA #$80 EE/8DF8: 8D 15 21 STA $2115 EE/8DFB: A2 00 44 LDX #$4400 EE/8DFE: 8E 16 21 STX $2116 EE/8E01: A2 09 18 LDX #$1809 EE/8E04: 8E 00 43 STX $4300 EE/8E07: A2 00 20 LDX #$2000 EE/8E0A: 8E 02 43 STX $4302 EE/8E0D: A9 7E LDA #$7E EE/8E0F: 8D 04 43 STA $4304 EE/8E12: A2 00 10 LDX #$1000 EE/8E15: 8E 05 43 STX $4305 EE/8E18: A9 01 LDA #$01 EE/8E1A: 8D 0B 42 STA $420B EE/8E1D: A2 BA E6 LDX #$E6BA ; $D8E6BA (serpent trench palette) EE/8E20: 86 D2 STX $D2 EE/8E22: A9 D8 LDA #$D8 EE/8E24: 85 D4 STA $D4 EE/8E26: A2 00 E0 LDX #$E000 EE/8E29: 86 D5 STX $D5 EE/8E2B: A9 7E LDA #$7E EE/8E2D: 85 D7 STA $D7 EE/8E2F: 20 76 A4 JSR $A476 ; decompress EE/8E32: AF 42 B2 EE LDA $EEB242 ; airship shadow and perspective graphics EE/8E36: 85 D2 STA $D2 EE/8E38: AF 43 B2 EE LDA $EEB243 EE/8E3C: 85 D3 STA $D3 EE/8E3E: AF 44 B2 EE LDA $EEB244 EE/8E42: 85 D4 STA $D4 EE/8E44: A2 00 20 LDX #$2000 EE/8E47: 86 D5 STX $D5 EE/8E49: A9 7E LDA #$7E EE/8E4B: 85 D7 STA $D7 EE/8E4D: 20 76 A4 JSR $A476 ; decompress EE/8E50: AF 0C B2 EE LDA $EEB20C ; blackjack graphics EE/8E54: 85 D2 STA $D2 EE/8E56: AF 0D B2 EE LDA $EEB20D EE/8E5A: 85 D3 STA $D3 EE/8E5C: AF 0E B2 EE LDA $EEB20E EE/8E60: 85 D4 STA $D4 EE/8E62: A2 00 28 LDX #$2800 EE/8E65: 86 D5 STX $D5 EE/8E67: A9 7E LDA #$7E EE/8E69: 85 D7 STA $D7 EE/8E6B: 20 76 A4 JSR $A476 ; decompress EE/8E6E: AF 45 B2 EE LDA $EEB245 ; world map sprites EE/8E72: 85 D2 STA $D2 EE/8E74: AF 46 B2 EE LDA $EEB246 EE/8E78: 85 D3 STA $D3 EE/8E7A: AF 47 B2 EE LDA $EEB247 EE/8E7E: 85 D4 STA $D4 EE/8E80: A2 00 48 LDX #$4800 EE/8E83: 86 D5 STX $D5 EE/8E85: A9 7E LDA #$7E EE/8E87: 85 D7 STA $D7 EE/8E89: 20 76 A4 JSR $A476 ; decompress EE/8E8C: 20 D0 AD JSR $ADD0 EE/8E8F: AF 2A B2 EE LDA $EEB22A ; serpent trench graphics EE/8E93: 85 D2 STA $D2 EE/8E95: AF 2B B2 EE LDA $EEB22B EE/8E99: 85 D3 STA $D3 EE/8E9B: AF 2C B2 EE LDA $EEB22C EE/8E9F: 85 D4 STA $D4 EE/8EA1: A2 50 6F LDX #$6F50 EE/8EA4: 86 D5 STX $D5 EE/8EA6: A9 7E LDA #$7E EE/8EA8: 85 D7 STA $D7 EE/8EAA: 20 76 A4 JSR $A476 ; decompress EE/8EAD: 20 4F 3F JSR $3F4F EE/8EB0: AF 27 B2 EE LDA $EEB227 ; serpent trench map layout EE/8EB4: 85 D2 STA $D2 EE/8EB6: AF 28 B2 EE LDA $EEB228 EE/8EBA: 85 D3 STA $D3 EE/8EBC: AF 29 B2 EE LDA $EEB229 EE/8EC0: 85 D4 STA $D4 EE/8EC2: A2 00 00 LDX #$0000 EE/8EC5: 86 D5 STX $D5 EE/8EC7: A9 7F LDA #$7F EE/8EC9: 85 D7 STA $D7 EE/8ECB: 20 76 A4 JSR $A476 ; decompress EE/8ECE: 20 FA 36 JSR $36FA EE/8ED1: 4C 46 91 JMP $9146 ; set interrupt jump code (w/ vehicle) ; [ Init Ending Airship Scene ] last: EE/8ED4: E2 20 SEP #$20 EE/8ED6: C2 10 REP #$10 EE/8ED8: 22 18 00 C3 JSL $C30018 ; ending airship scene EE/8EDC: 7B TDC EE/8EDD: 48 PHA EE/8EDE: AB PLB EE/8EDF: A9 80 LDA #$80 EE/8EE1: 8D 00 21 STA $2100 EE/8EE4: 20 AF 8F JSR $8FAF ; init hardware registers EE/8EE7: 20 8C 90 JSR $908C ; save mode 7 variables EE/8EEA: E2 20 SEP #$20 EE/8EEC: A9 80 LDA #$80 EE/8EEE: 85 7B STA $7B EE/8EF0: A9 D0 LDA #$D0 EE/8EF2: 85 7D STA $7D EE/8EF4: A9 7E LDA #$7E EE/8EF6: 48 PHA EE/8EF7: AB PLB EE/8EF8: C2 20 REP #$20 EE/8EFA: A2 00 03 LDX #$0300 EE/8EFD: A0 00 00 LDY #$0000 EE/8F00: BF 00 EC D2 LDA $D2EC00,X EE/8F04: 99 00 E1 STA $E100,Y EE/8F07: C8 INY EE/8F08: C8 INY EE/8F09: E8 INX EE/8F0A: E8 INX EE/8F0B: C0 00 01 CPY #$0100 EE/8F0E: D0 F0 BNE $8F00 EE/8F10: A2 00 00 LDX #$0000 EE/8F13: BD C0 E1 LDA $E1C0,X EE/8F16: 9D 40 E1 STA $E140,X EE/8F19: E8 INX EE/8F1A: E8 INX EE/8F1B: E0 20 00 CPX #$0020 EE/8F1E: D0 F3 BNE $8F13 EE/8F20: E2 20 SEP #$20 EE/8F22: AF 54 B2 EE LDA $EEB254 EE/8F26: 85 D2 STA $D2 EE/8F28: AF 55 B2 EE LDA $EEB255 EE/8F2C: 85 D3 STA $D3 EE/8F2E: AF 56 B2 EE LDA $EEB256 EE/8F32: 85 D4 STA $D4 EE/8F34: C2 20 REP #$20 EE/8F36: A0 00 00 LDY #$0000 EE/8F39: B7 D2 LDA [$D2],Y EE/8F3B: 99 00 E0 STA $E000,Y EE/8F3E: C8 INY EE/8F3F: C8 INY EE/8F40: C0 00 01 CPY #$0100 EE/8F43: D0 F4 BNE $8F39 EE/8F45: 9C 00 E0 STZ $E000 EE/8F48: A2 00 00 LDX #$0000 EE/8F4B: BD 00 E1 LDA $E100,X EE/8F4E: 9D 20 E1 STA $E120,X EE/8F51: E8 INX EE/8F52: E8 INX EE/8F53: E0 20 00 CPX #$0020 EE/8F56: D0 F3 BNE $8F4B EE/8F58: E2 20 SEP #$20 EE/8F5A: 7B TDC EE/8F5B: 48 PHA EE/8F5C: AB PLB EE/8F5D: AF 51 B2 EE LDA $EEB251 EE/8F61: 85 D2 STA $D2 EE/8F63: AF 52 B2 EE LDA $EEB252 EE/8F67: 85 D3 STA $D3 EE/8F69: AF 53 B2 EE LDA $EEB253 EE/8F6D: 85 D4 STA $D4 EE/8F6F: A2 00 28 LDX #$2800 EE/8F72: 86 D5 STX $D5 EE/8F74: A9 7E LDA #$7E EE/8F76: 85 D7 STA $D7 EE/8F78: 20 76 A4 JSR $A476 ; decompress EE/8F7B: AF 45 B2 EE LDA $EEB245 EE/8F7F: 85 D2 STA $D2 EE/8F81: AF 46 B2 EE LDA $EEB246 EE/8F85: 85 D3 STA $D3 EE/8F87: AF 47 B2 EE LDA $EEB247 EE/8F8B: 85 D4 STA $D4 EE/8F8D: A2 00 48 LDX #$4800 EE/8F90: 86 D5 STX $D5 EE/8F92: A9 7E LDA #$7E EE/8F94: 85 D7 STA $D7 EE/8F96: 20 76 A4 JSR $A476 ; decompress EE/8F99: 20 D0 AD JSR $ADD0 EE/8F9C: A9 5C LDA #$5C EE/8F9E: 8D 00 15 STA $1500 EE/8FA1: A2 4D AB LDX #$AB4D EE/8FA4: 8E 01 15 STX $1501 EE/8FA7: A9 EE LDA #$EE EE/8FA9: 8D 03 15 STA $1503 EE/8FAC: 4C BC 0D JMP $0DBC ; ending airship scene ; [ Init Hardware Registers ] regset: EE/8FAF: 7B TDC EE/8FB0: 48 PHA EE/8FB1: AB PLB EE/8FB2: 8D 0C 42 STA $420C ; disable hdma EE/8FB5: A9 03 LDA #$03 EE/8FB7: 8D 01 21 STA $2101 ; sprite graphics at $6000 (vram) EE/8FBA: 9C 02 21 STZ $2102 ; clear sprite data address EE/8FBD: 9C 03 21 STZ $2103 EE/8FC0: A9 07 LDA #$07 EE/8FC2: 8D 05 21 STA $2105 ; screen mode 7 EE/8FC5: A9 40 LDA #$40 EE/8FC7: 9C 06 21 STZ $2106 ; clear pixelation register EE/8FCA: 8D 07 21 STA $2107 ; bg1 tile data at $4000 EE/8FCD: A9 45 LDA #$45 EE/8FCF: 8D 08 21 STA $2108 ; bg2 tile data at $4400 EE/8FD2: A9 4C LDA #$4C EE/8FD4: 8D 09 21 STA $2109 ; bg3 tile data at $4C00 EE/8FD7: 9C 0A 21 STZ $210A EE/8FDA: A9 55 LDA #$55 EE/8FDC: 8D 0B 21 STA $210B ; bg1/bg2 graphics at $5000 EE/8FDF: 9C 0C 21 STZ $210C ; bg3/bg4 graphics at $0000 EE/8FE2: 9C 11 21 STZ $2111 ; clear bg3 horizontal/vertical scroll EE/8FE5: 9C 11 21 STZ $2111 EE/8FE8: 9C 12 21 STZ $2112 EE/8FEB: 9C 12 21 STZ $2112 EE/8FEE: A9 80 LDA #$80 EE/8FF0: 8D 15 21 STA $2115 ; video port control EE/8FF3: 9C 1A 21 STZ $211A ; clear mode 7 settings EE/8FF6: A9 33 LDA #$33 EE/8FF8: 8D 23 21 STA $2123 ; enable bg1/bg2 in window 1 EE/8FFB: 9C 24 21 STZ $2124 ; disable bg3/bg4 EE/8FFE: A9 33 LDA #$33 EE/9000: 8D 25 21 STA $2125 ; enable color/sprites in window 1 EE/9003: A9 08 LDA #$08 EE/9005: 8D 26 21 STA $2126 ; window 1 left position = $08 EE/9008: A9 F7 LDA #$F7 EE/900A: 8D 27 21 STA $2127 ; window 1 right position = $F7 EE/900D: 9C 28 21 STZ $2128 EE/9010: 9C 29 21 STZ $2129 EE/9013: 9C 2A 21 STZ $212A EE/9016: 9C 2B 21 STZ $212B EE/9019: A9 13 LDA #$13 EE/901B: 8D 2C 21 STA $212C ; enable sprites, bg1, and bg2 in main screen EE/901E: A9 10 LDA #$10 EE/9020: 8D 2D 21 STA $212D ; enable sprites in subscreen (for transparency in forests) EE/9023: A9 13 LDA #$13 EE/9025: 8D 2E 21 STA $212E ; enable sprites, bg1, and bg2 masks in main screen EE/9028: A9 10 LDA #$10 EE/902A: 8D 2F 21 STA $212F ; enable sprites mask in subscreen EE/902D: A9 02 LDA #$02 EE/902F: 8D 30 21 STA $2130 ; enable subscreen add/sub EE/9032: A9 23 LDA #$23 EE/9034: 8D 31 21 STA $2131 ; add/sub affect back-area, bg1, and bg2 EE/9037: A9 E0 LDA #$E0 EE/9039: 8D 32 21 STA $2132 ; clear fixed color data EE/903C: 9C 33 21 STZ $2133 ; clear screen mode/video select EE/903F: 9C 00 42 STZ $4200 ; disable all counters EE/9042: A9 FF LDA #$FF EE/9044: 8D 01 42 STA $4201 ; i/o port EE/9047: 9C 02 42 STZ $4202 EE/904A: 9C 03 42 STZ $4203 EE/904D: 9C 04 42 STZ $4204 EE/9050: 9C 05 42 STZ $4205 EE/9053: 9C 06 42 STZ $4206 EE/9056: 9C 07 42 STZ $4207 ; clear horizontal irq counter EE/9059: 9C 08 42 STZ $4208 EE/905C: 9C 09 42 STZ $4209 ; clear vertical irq counter EE/905F: 9C 0A 42 STZ $420A EE/9062: 9C 0B 42 STZ $420B ; disable dma EE/9065: 9C 0C 42 STZ $420C ; disable hdma EE/9068: 8B PHB EE/9069: A9 7E LDA #$7E EE/906B: 48 PHA EE/906C: AB PLB EE/906D: C2 20 REP #$20 EE/906F: A2 00 00 LDX #$0000 EE/9072: 9E D0 B5 STZ $B5D0,X ; EE/9075: E8 INX EE/9076: E8 INX EE/9077: E0 80 01 CPX #$0180 EE/907A: D0 F6 BNE $9072 EE/907C: AB PLB EE/907D: E2 20 SEP #$20 EE/907F: A2 19 00 LDX #$0019 EE/9082: 9E 00 00 STZ $0000,X ; clear $0019-$00FF EE/9085: E8 INX EE/9086: E0 00 01 CPX #$0100 EE/9089: D0 F7 BNE $9082 EE/908B: 60 RTS ; [ Save Mode 7 Variables ] wktaihi: EE/908C: 8B PHB EE/908D: 08 PHP EE/908E: C2 30 REP #$30 EE/9090: A2 20 05 LDX #$0520 ; source = $000520 EE/9093: A0 20 F1 LDY #$F120 ; destination = $7EF120 EE/9096: A9 DF 06 LDA #$06DF ; size = $06E0 EE/9099: 54 7E 00 MVN $7E,$00 EE/909C: 28 PLP EE/909D: AB PLB EE/909E: 60 RTS ; [ Restore Mode 7 Variables ] wkhukki: EE/909F: 8B PHB EE/90A0: 08 PHP EE/90A1: C2 30 REP #$30 EE/90A3: A2 20 F1 LDX #$F120 ; source = $7EF120 EE/90A6: A0 20 05 LDY #$0520 ; destination = $000520 EE/90A9: A9 DF 06 LDA #$06DF ; size = $06E0 EE/90AC: 54 00 7E MVN $00,$7E EE/90AF: 28 PLP EE/90B0: AB PLB EE/90B1: 60 RTS ; [ Save Direct Page ] m7wktaihi: EE/90B2: 08 PHP EE/90B3: 8B PHB EE/90B4: E2 30 SEP #$30 EE/90B6: A9 00 LDA #$00 EE/90B8: 48 PHA EE/90B9: AB PLB EE/90BA: C2 21 REP #$21 EE/90BC: A9 00 00 LDA #$0000 EE/90BF: AA TAX EE/90C0: BD 00 00 LDA $0000,X EE/90C3: 9D 00 0A STA $0A00,X EE/90C6: BD 02 00 LDA $0002,X EE/90C9: 9D 02 0A STA $0A02,X EE/90CC: BD 04 00 LDA $0004,X EE/90CF: 9D 04 0A STA $0A04,X EE/90D2: BD 06 00 LDA $0006,X EE/90D5: 9D 06 0A STA $0A06,X EE/90D8: BD 08 00 LDA $0008,X EE/90DB: 9D 08 0A STA $0A08,X EE/90DE: BD 0A 00 LDA $000A,X EE/90E1: 9D 0A 0A STA $0A0A,X EE/90E4: BD 0C 00 LDA $000C,X EE/90E7: 9D 0C 0A STA $0A0C,X EE/90EA: BD 0E 00 LDA $000E,X EE/90ED: 9D 0E 0A STA $0A0E,X EE/90F0: 8A TXA EE/90F1: 69 10 00 ADC #$0010 EE/90F4: C9 00 01 CMP #$0100 EE/90F7: D0 C6 BNE $90BF EE/90F9: AB PLB EE/90FA: 28 PLP EE/90FB: 60 RTS ; [ Restore Direct Page ] m7wkhukki: EE/90FC: 08 PHP EE/90FD: 8B PHB EE/90FE: E2 30 SEP #$30 EE/9100: A9 00 LDA #$00 EE/9102: 48 PHA EE/9103: AB PLB EE/9104: C2 21 REP #$21 EE/9106: A9 00 00 LDA #$0000 EE/9109: AA TAX EE/910A: BD 00 0A LDA $0A00,X EE/910D: 9D 00 00 STA $0000,X EE/9110: BD 02 0A LDA $0A02,X EE/9113: 9D 02 00 STA $0002,X EE/9116: BD 04 0A LDA $0A04,X EE/9119: 9D 04 00 STA $0004,X EE/911C: BD 06 0A LDA $0A06,X EE/911F: 9D 06 00 STA $0006,X EE/9122: BD 08 0A LDA $0A08,X EE/9125: 9D 08 00 STA $0008,X EE/9128: BD 0A 0A LDA $0A0A,X EE/912B: 9D 0A 00 STA $000A,X EE/912E: BD 0C 0A LDA $0A0C,X EE/9131: 9D 0C 00 STA $000C,X EE/9134: BD 0E 0A LDA $0A0E,X EE/9137: 9D 0E 00 STA $000E,X EE/913A: 8A TXA EE/913B: 69 10 00 ADC #$0010 EE/913E: C9 00 01 CMP #$0100 EE/9141: D0 C6 BNE $9109 EE/9143: AB PLB EE/9144: 28 PLP EE/9145: 60 RTS ; [ Set Interrupt Jump Code (w/ vehicle) ] EE/9146: E2 20 SEP #$20 EE/9148: C2 10 REP #$10 EE/914A: A9 5C LDA #$5C EE/914C: 8D 00 15 STA $1500 EE/914F: A2 09 A5 LDX #$A509 ; nmi address = $EEA509 EE/9152: 8E 01 15 STX $1501 EE/9155: A9 EE LDA #$EE EE/9157: 8D 03 15 STA $1503 EE/915A: A9 5C LDA #$5C EE/915C: 8D 04 15 STA $1504 EE/915F: AD 20 00 LDA $0020 EE/9162: C9 02 CMP #$02 EE/9164: F0 0D BEQ $9173 EE/9166: A2 B7 A6 LDX #$A6B7 ; irq address = $EEA6B7 EE/9169: 8E 05 15 STX $1505 EE/916C: A9 EE LDA #$EE EE/916E: 8D 07 15 STA $1507 EE/9171: 80 0B BRA $917E EE/9173: A2 CF A6 LDX #$A6CF EE/9176: 8E 05 15 STX $1505 EE/9179: A9 EE LDA #$EE EE/917B: 8D 07 15 STA $1507 EE/917E: 4C 18 00 JMP $0018 ; world map (w/ vehicle) ; [ Set Interrupt Jump Code (no vehicle) ] EE/9181: E2 20 SEP #$20 EE/9183: C2 10 REP #$10 EE/9185: A9 5C LDA #$5C EE/9187: 8D 00 15 STA $1500 EE/918A: A2 28 A7 LDX #$A728 ; nmi address = $EEA728 EE/918D: 8E 01 15 STX $1501 EE/9190: A9 EE LDA #$EE EE/9192: 8D 03 15 STA $1503 EE/9195: A9 5C LDA #$5C EE/9197: 8D 04 15 STA $1504 EE/919A: A2 3A A9 LDX #$A93A ; irq address = $EEA93A EE/919D: 8E 05 15 STX $1505 EE/91A0: A9 EE LDA #$EE EE/91A2: 8D 07 15 STA $1507 EE/91A5: 4C 51 02 JMP $0251 ; world map (no vehicle) ; [ Set Interrupt Jump Code (magitek train ride) ] EE/91A8: E2 20 SEP #$20 EE/91AA: C2 10 REP #$10 EE/91AC: 7B TDC EE/91AD: 48 PHA EE/91AE: AB PLB EE/91AF: A9 5C LDA #$5C EE/91B1: 8D 00 15 STA $1500 EE/91B4: A2 4D A9 LDX #$A94D ; nmi address = $EEA94D EE/91B7: 8E 01 15 STX $1501 EE/91BA: A9 EE LDA #$EE EE/91BC: 8D 03 15 STA $1503 EE/91BF: A9 5C LDA #$5C EE/91C1: 8D 04 15 STA $1504 EE/91C4: A2 35 AA LDX #$AA35 ; irq address = $EEAA35 EE/91C7: 8E 05 15 STX $1505 EE/91CA: A9 EE LDA #$EE EE/91CC: 8D 07 15 STA $1507 EE/91CF: 4C B1 04 JMP $04B1 ; magitek train ride ; [ Terminate World Map (w/ vehicle) ] EE/91D2: E2 20 SEP #$20 EE/91D4: AD F6 11 LDA $11F6 EE/91D7: 89 10 BIT #$10 EE/91D9: F0 0B BEQ $91E6 EE/91DB: A5 20 LDA $20 EE/91DD: C9 02 CMP #$02 EE/91DF: F0 02 BEQ $91E3 EE/91E1: 80 03 BRA $91E6 EE/91E3: 20 FE 97 JSR $97FE EE/91E6: A9 80 LDA #$80 EE/91E8: 8D 00 21 STA $2100 EE/91EB: A9 00 LDA #$00 EE/91ED: 8D 00 42 STA $4200 EE/91F0: 8D 0C 42 STA $420C EE/91F3: 78 SEI EE/91F4: A5 19 LDA $19 EE/91F6: C9 FF CMP #$FF EE/91F8: F0 12 BEQ $920C EE/91FA: 20 9F 90 JSR $909F ; restore mode 7 variables EE/91FD: 9C FA 11 STZ $11FA EE/9200: 9C FD 11 STZ $11FD EE/9203: 9C FE 11 STZ $11FE EE/9206: 9C FF 11 STZ $11FF EE/9209: 4C F6 83 JMP $83F6 ; reload map EE/920C: C2 30 REP #$30 EE/920E: A5 F4 LDA $F4 EE/9210: 29 FF 01 AND #$01FF EE/9213: C9 03 00 CMP #$0003 EE/9216: B0 1B BCS $9233 EE/9218: E2 20 SEP #$20 EE/921A: A5 EA LDA $EA EE/921C: 48 PHA EE/921D: A5 EB LDA $EB EE/921F: 48 PHA EE/9220: A5 E7 LDA $E7 EE/9222: 89 40 BIT #$40 EE/9224: F0 08 BEQ $922E EE/9226: A5 EC LDA $EC EE/9228: 38 SEC EE/9229: E9 80 SBC #$80 EE/922B: 48 PHA EE/922C: 80 1F BRA $924D EE/922E: A5 EC LDA $EC EE/9230: 48 PHA EE/9231: 80 1A BRA $924D EE/9233: E2 20 SEP #$20 EE/9235: A5 E7 LDA $E7 EE/9237: 89 40 BIT #$40 EE/9239: D0 0B BNE $9246 EE/923B: A5 EA LDA $EA EE/923D: 48 PHA EE/923E: A5 EB LDA $EB EE/9240: 48 PHA EE/9241: A5 EC LDA $EC EE/9243: 48 PHA EE/9244: 80 07 BRA $924D EE/9246: A9 00 LDA #$00 EE/9248: 48 PHA EE/9249: 48 PHA EE/924A: A9 CA LDA #$CA EE/924C: 48 PHA EE/924D: A5 F1 LDA $F1 EE/924F: 48 PHA EE/9250: C2 20 REP #$20 EE/9252: A5 1C LDA $1C EE/9254: 48 PHA EE/9255: A5 F4 LDA $F4 EE/9257: 48 PHA EE/9258: 20 9F 90 JSR $909F ; restore mode 7 variables EE/925B: 68 PLA EE/925C: 8D 64 1F STA $1F64 EE/925F: 29 FF 01 AND #$01FF EE/9262: C9 02 00 CMP #$0002 EE/9265: B0 06 BCS $926D EE/9267: 68 PLA EE/9268: 8D 60 1F STA $1F60 EE/926B: 80 04 BRA $9271 EE/926D: 68 PLA EE/926E: 8D 66 1F STA $1F66 EE/9271: E2 20 SEP #$20 EE/9273: 68 PLA EE/9274: 8D FA 11 STA $11FA EE/9277: 68 PLA EE/9278: 8D FF 11 STA $11FF EE/927B: 68 PLA EE/927C: 8D FE 11 STA $11FE EE/927F: 68 PLA EE/9280: 8D FD 11 STA $11FD EE/9283: 6B RTL ; [ Terminate World Map (no vehicle) ] EE/9284: E2 20 SEP #$20 EE/9286: A9 7E LDA #$7E EE/9288: 48 PHA EE/9289: AB PLB EE/928A: A9 80 LDA #$80 EE/928C: 8F 00 21 00 STA $002100 EE/9290: A9 00 LDA #$00 EE/9292: 8F 00 42 00 STA $004200 EE/9296: 8F 0C 42 00 STA $00420C EE/929A: 78 SEI EE/929B: C2 30 REP #$30 EE/929D: A5 F4 LDA $F4 EE/929F: 29 FF 01 AND #$01FF EE/92A2: C9 03 00 CMP #$0003 EE/92A5: B0 1B BCS $92C2 EE/92A7: E2 20 SEP #$20 EE/92A9: A5 EA LDA $EA EE/92AB: 48 PHA EE/92AC: A5 EB LDA $EB EE/92AE: 48 PHA EE/92AF: A5 E7 LDA $E7 EE/92B1: 89 40 BIT #$40 EE/92B3: F0 08 BEQ $92BD EE/92B5: A5 EC LDA $EC EE/92B7: 38 SEC EE/92B8: E9 80 SBC #$80 EE/92BA: 48 PHA EE/92BB: 80 1F BRA $92DC EE/92BD: A5 EC LDA $EC EE/92BF: 48 PHA EE/92C0: 80 1A BRA $92DC EE/92C2: E2 20 SEP #$20 EE/92C4: A5 E7 LDA $E7 EE/92C6: 89 40 BIT #$40 EE/92C8: D0 0B BNE $92D5 EE/92CA: A5 EA LDA $EA EE/92CC: 48 PHA EE/92CD: A5 EB LDA $EB EE/92CF: 48 PHA EE/92D0: A5 EC LDA $EC EE/92D2: 48 PHA EE/92D3: 80 07 BRA $92DC EE/92D5: A9 00 LDA #$00 EE/92D7: 48 PHA EE/92D8: 48 PHA EE/92D9: A9 CA LDA #$CA EE/92DB: 48 PHA EE/92DC: A5 F1 LDA $F1 EE/92DE: 48 PHA EE/92DF: C2 20 REP #$20 EE/92E1: A5 1C LDA $1C EE/92E3: 48 PHA EE/92E4: A5 F4 LDA $F4 EE/92E6: 48 PHA EE/92E7: 20 9F 90 JSR $909F ; restore mode 7 variables EE/92EA: 68 PLA EE/92EB: 8F 64 1F 00 STA $001F64 EE/92EF: 29 FF 01 AND #$01FF EE/92F2: C9 02 00 CMP #$0002 EE/92F5: B0 07 BCS $92FE EE/92F7: 68 PLA EE/92F8: 8F 60 1F 00 STA $001F60 EE/92FC: 80 05 BRA $9303 EE/92FE: 68 PLA EE/92FF: 8F 66 1F 00 STA $001F66 EE/9303: E2 20 SEP #$20 EE/9305: 68 PLA EE/9306: 8F FA 11 00 STA $0011FA EE/930A: 68 PLA EE/930B: 8F FF 11 00 STA $0011FF EE/930F: 68 PLA EE/9310: 8F FE 11 00 STA $0011FE EE/9314: 68 PLA EE/9315: 8F FD 11 00 STA $0011FD EE/9319: 6B RTL ; [ Terminate World Map (end of magitek train ride) ] EE/931A: E2 20 SEP #$20 EE/931C: A9 00 LDA #$00 EE/931E: 48 PHA EE/931F: AB PLB EE/9320: A9 80 LDA #$80 EE/9322: 8D 00 21 STA $2100 EE/9325: 9C 00 42 STZ $4200 EE/9328: 9C 0C 42 STZ $420C EE/932B: 78 SEI EE/932C: A9 7E LDA #$7E EE/932E: 48 PHA EE/932F: AB PLB EE/9330: 78 SEI EE/9331: 20 9F 90 JSR $909F ; restore mode 7 variables EE/9334: 6B RTL ; [ Terminate World Map (game over) ] return_zenmetu: EE/9335: E2 20 SEP #$20 EE/9337: 7B TDC EE/9338: 48 PHA EE/9339: AB PLB EE/933A: A9 80 LDA #$80 EE/933C: 8D 00 21 STA $2100 EE/933F: 9C 00 42 STZ $4200 EE/9342: 9C 0C 42 STZ $420C EE/9345: 78 SEI EE/9346: 20 9F 90 JSR $909F ; restore mode 7 variables EE/9349: A9 03 LDA #$03 ; load map 3 EE/934B: 8F 64 1F 00 STA $001F64 EE/934F: 7B TDC EE/9350: 8F 65 1F 00 STA $001F65 EE/9354: A9 CA LDA #$CA ; CA/002E (game over) EE/9356: 8F FF 11 00 STA $0011FF EE/935A: 7B TDC EE/935B: 8F FE 11 00 STA $0011FE EE/935F: A9 2E LDA #$2E EE/9361: 8F FD 11 00 STA $0011FD EE/9365: AD F6 11 LDA $11F6 ; disable battle EE/9368: 29 FD AND #$FD EE/936A: 8D F6 11 STA $11F6 EE/936D: 6B RTL ; [ Land Airship ] chakuriku: EE/936E: 08 PHP EE/936F: 8B PHB EE/9370: E2 20 SEP #$20 EE/9372: A5 20 LDA $20 EE/9374: C9 02 CMP #$02 EE/9376: F0 5C BEQ $93D4 ; EE/9378: A5 C2 LDA $C2 EE/937A: 89 02 BIT #$02 EE/937C: F0 03 BEQ $9381 ; branch if airship can't land EE/937E: 4C 2C 94 JMP $942C ; return EE/9381: AD 64 1F LDA $1F64 EE/9384: C9 01 CMP #$01 EE/9386: D0 4C BNE $93D4 ; branch if not in WoR EE/9388: A5 C3 LDA $C3 EE/938A: 89 80 BIT #$80 EE/938C: F0 21 BEQ $93AF ; branch if not kefka's tower EE/938E: AF 75 B2 EE LDA $EEB275 ; CA/007F (enter kefka's tower) EE/9392: 85 EA STA $EA EE/9394: AF 76 B2 EE LDA $EEB276 EE/9398: 85 EB STA $EB EE/939A: AF 77 B2 EE LDA $EEB277 EE/939E: 18 CLC EE/939F: 69 CA ADC #$CA EE/93A1: 85 EC STA $EC EE/93A3: 64 ED STZ $ED EE/93A5: 64 EE STZ $EE EE/93A7: A5 E7 LDA $E7 EE/93A9: 09 41 ORA #$41 EE/93AB: 85 E7 STA $E7 EE/93AD: 80 7D BRA $942C EE/93AF: 89 40 BIT #$40 EE/93B1: F0 21 BEQ $93D4 ; branch if not phoenix cave EE/93B3: AF 72 B2 EE LDA $EEB272 ; CA/0088 (enter phoenix cave) EE/93B7: 85 EA STA $EA EE/93B9: AF 73 B2 EE LDA $EEB273 EE/93BD: 85 EB STA $EB EE/93BF: AF 74 B2 EE LDA $EEB274 EE/93C3: 18 CLC EE/93C4: 69 CA ADC #$CA EE/93C6: 85 EC STA $EC EE/93C8: 64 ED STZ $ED EE/93CA: 64 EE STZ $EE EE/93CC: A5 E7 LDA $E7 EE/93CE: 09 41 ORA #$41 EE/93D0: 85 E7 STA $E7 EE/93D2: 80 58 BRA $942C EE/93D4: A5 C3 LDA $C3 EE/93D6: 89 20 BIT #$20 EE/93D8: F0 08 BEQ $93E2 ; branch if not a veldt tile EE/93DA: AD B7 1E LDA $1EB7 EE/93DD: 09 08 ORA #$08 EE/93DF: 8D B7 1E STA $1EB7 EE/93E2: A9 03 LDA #$03 EE/93E4: 85 19 STA $19 EE/93E6: A5 1E LDA $1E EE/93E8: 09 01 ORA #$01 EE/93EA: 85 1E STA $1E EE/93EC: A2 00 00 LDX #$0000 EE/93EF: 86 29 STX $29 EE/93F1: 86 2B STX $2B EE/93F3: 86 26 STX $26 EE/93F5: 64 28 STZ $28 EE/93F7: 86 2D STX $2D EE/93F9: C2 20 REP #$20 EE/93FB: A5 34 LDA $34 EE/93FD: 4A LSR EE/93FE: 4A LSR EE/93FF: 4A LSR EE/9400: 4A LSR EE/9401: 29 FF 00 AND #$00FF EE/9404: 8F 60 1F 00 STA $001F60 EE/9408: A5 38 LDA $38 EE/940A: 0A ASL EE/940B: 0A ASL EE/940C: 0A ASL EE/940D: 0A ASL EE/940E: 29 00 FF AND #$FF00 EE/9411: 18 CLC EE/9412: 6F 60 1F 00 ADC $001F60 EE/9416: 8F 60 1F 00 STA $001F60 EE/941A: A5 20 LDA $20 EE/941C: 29 FF 00 AND #$00FF EE/941F: C9 01 00 CMP #$0001 EE/9422: D0 08 BNE $942C EE/9424: AF 60 1F 00 LDA $001F60 EE/9428: 8F 62 1F 00 STA $001F62 EE/942C: AB PLB EE/942D: 28 PLP EE/942E: 60 RTS ; [ Apply Map Layout Modifications ] mapredraw: EE/942F: 8B PHB EE/9430: 08 PHP EE/9431: E2 30 SEP #$30 EE/9433: AF 64 1F 00 LDA $001F64 ; map index EE/9437: 0A ASL EE/9438: 18 CLC EE/9439: 6F 64 1F 00 ADC $001F64 EE/943D: AA TAX EE/943E: BF 60 B2 EE LDA $EEB260,X ; pointer to modification data EE/9442: 85 6A STA $6A EE/9444: BF 61 B2 EE LDA $EEB261,X EE/9448: 85 6B STA $6B EE/944A: BF 62 B2 EE LDA $EEB262,X EE/944E: 85 6C STA $6C EE/9450: 48 PHA EE/9451: AB PLB EE/9452: C2 30 REP #$30 EE/9454: BF 63 B2 EE LDA $EEB263,X ; pointer to next map's modification data EE/9458: 38 SEC EE/9459: FF 60 B2 EE SBC $EEB260,X EE/945D: 85 66 STA $66 ; length of modification data EE/945F: A0 00 00 LDY #$0000 EE/9462: C2 20 REP #$20 EE/9464: B7 6A LDA [$6A],Y ; event bit index EE/9466: C8 INY EE/9467: C8 INY EE/9468: 85 5A STA $5A EE/946A: 29 07 00 AND #$0007 EE/946D: AA TAX EE/946E: BF FA 7C EE LDA $EE7CFA,X ; bit mask EE/9472: 85 5C STA $5C EE/9474: A5 5A LDA $5A EE/9476: 29 FF 7F AND #$7FFF EE/9479: 4A LSR EE/947A: 4A LSR EE/947B: 4A LSR EE/947C: AA TAX EE/947D: E2 20 SEP #$20 EE/947F: BF 80 1E 00 LDA $001E80,X ; event bit EE/9483: 25 5C AND $5C EE/9485: F0 44 BEQ $94CB ; skip this chunk if not set EE/9487: 5A PHY EE/9488: C2 21 REP #$21 EE/948A: B7 6A LDA [$6A],Y ; pointer to modified tiles EE/948C: 6F 60 B2 EE ADC $EEB260 ; +$CEF600 EE/9490: A8 TAY EE/9491: B9 00 00 LDA $0000,Y ; tile offset (x then y) EE/9494: AA TAX EE/9495: E2 20 SEP #$20 EE/9497: B9 02 00 LDA $0002,Y ; width (high nybble) EE/949A: 4A LSR EE/949B: 4A LSR EE/949C: 4A LSR EE/949D: 4A LSR EE/949E: 85 68 STA $68 EE/94A0: B9 02 00 LDA $0002,Y ; height (low nybble) EE/94A3: 29 0F AND #$0F EE/94A5: 85 69 STA $69 EE/94A7: E2 20 SEP #$20 EE/94A9: A5 68 LDA $68 EE/94AB: 85 5E STA $5E ; x EE/94AD: 86 60 STX $60 EE/94AF: B9 03 00 LDA $0003,Y EE/94B2: 9F 00 00 7F STA $7F0000,X EE/94B6: C8 INY ; next column EE/94B7: E8 INX EE/94B8: C6 5E DEC $5E EE/94BA: D0 F3 BNE $94AF EE/94BC: C2 21 REP #$21 ; next row EE/94BE: A5 60 LDA $60 EE/94C0: 69 00 01 ADC #$0100 EE/94C3: AA TAX EE/94C4: E2 20 SEP #$20 EE/94C6: C6 69 DEC $69 EE/94C8: D0 DF BNE $94A9 EE/94CA: 7A PLY EE/94CB: C8 INY ; next chunk EE/94CC: C8 INY EE/94CD: C4 66 CPY $66 EE/94CF: D0 91 BNE $9462 EE/94D1: 28 PLP EE/94D2: AB PLB EE/94D3: 60 RTS ; [ ] EE/94D4: 08 PHP EE/94D5: 8B PHB EE/94D6: C2 30 REP #$30 EE/94D8: A9 06 00 LDA #$0006 EE/94DB: 8F CA 00 00 STA $0000CA EE/94DF: A9 78 00 LDA #$0078 EE/94E2: 8F 60 B6 7E STA $7EB660 EE/94E6: A9 00 01 LDA #$0100 EE/94E9: 8F 62 B6 7E STA $7EB662 EE/94ED: A9 01 00 LDA #$0001 EE/94F0: 8F 64 B6 7E STA $7EB664 EE/94F4: A9 0A 00 LDA #$000A EE/94F7: 8F 68 B6 7E STA $7EB668 EE/94FB: 7B TDC EE/94FC: 8F 66 B6 7E STA $7EB666 EE/9500: 8F D8 B5 7E STA $7EB5D8 EE/9504: 20 BD 43 JSR $43BD EE/9507: 20 02 43 JSR $4302 EE/950A: 20 AD AA JSR $AAAD EE/950D: C2 20 REP #$20 EE/950F: AF 62 B6 7E LDA $7EB662 EE/9513: C9 C0 03 CMP #$03C0 EE/9516: D0 05 BNE $951D EE/9518: E2 20 SEP #$20 EE/951A: 7B TDC EE/951B: 85 22 STA $22 EE/951D: E2 20 SEP #$20 EE/951F: A5 24 LDA $24 EE/9521: F0 FC BEQ $951F EE/9523: 64 24 STZ $24 EE/9525: A5 23 LDA $23 EE/9527: C5 22 CMP $22 EE/9529: F0 06 BEQ $9531 EE/952B: B0 03 BCS $9530 EE/952D: 1A INC EE/952E: 80 01 BRA $9531 EE/9530: 3A DEC EE/9531: 85 23 STA $23 EE/9533: C9 00 CMP #$00 EE/9535: D0 02 BNE $9539 EE/9537: A9 80 LDA #$80 EE/9539: 8D 00 21 STA $2100 EE/953C: A5 23 LDA $23 EE/953E: D0 C4 BNE $9504 EE/9540: AB PLB EE/9541: 28 PLP EE/9542: 60 RTS ; [ ] w_h_effect: EE/9543: 08 PHP EE/9544: 8B PHB EE/9545: C2 30 REP #$30 EE/9547: A9 00 90 LDA #$9000 EE/954A: 85 8B STA $8B EE/954C: A9 FF 8F LDA #$8FFF EE/954F: 85 8D STA $8D EE/9551: A9 FF FF LDA #$FFFF EE/9554: 85 8F STA $8F EE/9556: A9 F2 00 LDA #$00F2 EE/9559: 85 62 STA $62 EE/955B: A9 70 00 LDA #$0070 EE/955E: 85 7D STA $7D EE/9560: A9 E0 00 LDA #$00E0 EE/9563: 85 85 STA $85 EE/9565: 85 87 STA $87 EE/9567: A9 07 00 LDA #$0007 EE/956A: 8F CA 00 00 STA $0000CA EE/956E: A9 40 06 LDA #$0640 EE/9571: 8F 62 B6 7E STA $7EB662 EE/9575: A9 01 00 LDA #$0001 EE/9578: 8F 64 B6 7E STA $7EB664 EE/957C: E2 20 SEP #$20 EE/957E: A5 24 LDA $24 EE/9580: F0 FC BEQ $957E EE/9582: 64 24 STZ $24 EE/9584: A2 00 00 LDX #$0000 EE/9587: DA PHX EE/9588: E2 20 SEP #$20 EE/958A: A5 62 LDA $62 EE/958C: C9 E0 CMP #$E0 EE/958E: B0 0C BCS $959C EE/9590: A9 E0 LDA #$E0 EE/9592: 38 SEC EE/9593: E5 87 SBC $87 EE/9595: 8D 09 42 STA $4209 EE/9598: A9 02 LDA #$02 EE/959A: 80 07 BRA $95A3 EE/959C: A9 01 LDA #$01 EE/959E: 8D 09 42 STA $4209 EE/95A1: A9 07 LDA #$07 EE/95A3: 8D 05 21 STA $2105 EE/95A6: A9 23 LDA #$23 EE/95A8: 8D 31 21 STA $2131 EE/95AB: 20 FF 39 JSR $39FF EE/95AE: 20 B6 37 JSR $37B6 EE/95B1: C2 20 REP #$20 EE/95B3: A5 85 LDA $85 EE/95B5: 85 87 STA $87 EE/95B7: 20 88 38 JSR $3888 EE/95BA: 20 80 3A JSR $3A80 EE/95BD: 20 BD 43 JSR $43BD EE/95C0: 20 7C 42 JSR $427C EE/95C3: 20 AD AA JSR $AAAD EE/95C6: FA PLX EE/95C7: BF F1 98 EE LDA $EE98F1,X EE/95CB: 85 58 STA $58 EE/95CD: A5 8B LDA $8B EE/95CF: 38 SEC EE/95D0: E5 58 SBC $58 EE/95D2: 85 8B STA $8B EE/95D4: BF F3 98 EE LDA $EE98F3,X EE/95D8: 85 58 STA $58 EE/95DA: A5 8D LDA $8D EE/95DC: 38 SEC EE/95DD: E5 58 SBC $58 EE/95DF: 85 8D STA $8D EE/95E1: BF F5 98 EE LDA $EE98F5,X EE/95E5: 29 FF 00 AND #$00FF EE/95E8: 85 58 STA $58 EE/95EA: A5 8F LDA $8F EE/95EC: 38 SEC EE/95ED: E5 58 SBC $58 EE/95EF: 85 8F STA $8F EE/95F1: BF F6 98 EE LDA $EE98F6,X EE/95F5: 29 FF 00 AND #$00FF EE/95F8: 85 58 STA $58 EE/95FA: A5 62 LDA $62 EE/95FC: 38 SEC EE/95FD: E5 58 SBC $58 EE/95FF: 85 62 STA $62 EE/9601: C9 E0 00 CMP #$00E0 EE/9604: 90 03 BCC $9609 EE/9606: A9 E0 00 LDA #$00E0 EE/9609: 85 85 STA $85 EE/960B: BF F6 98 EE LDA $EE98F6,X EE/960F: 29 FF 00 AND #$00FF EE/9612: 85 58 STA $58 EE/9614: A5 7D LDA $7D EE/9616: 18 CLC EE/9617: 65 58 ADC $58 EE/9619: 85 7D STA $7D EE/961B: 8A TXA EE/961C: 18 CLC EE/961D: 69 07 00 ADC #$0007 EE/9620: AA TAX EE/9621: E2 20 SEP #$20 EE/9623: A5 24 LDA $24 EE/9625: F0 FC BEQ $9623 EE/9627: 64 24 STZ $24 EE/9629: A5 23 LDA $23 EE/962B: C5 22 CMP $22 EE/962D: F0 06 BEQ $9635 EE/962F: B0 03 BCS $9634 EE/9631: 1A INC EE/9632: 80 01 BRA $9635 EE/9634: 3A DEC EE/9635: 85 23 STA $23 EE/9637: C9 00 CMP #$00 EE/9639: D0 02 BNE $963D EE/963B: A9 80 LDA #$80 EE/963D: 8D 00 21 STA $2100 EE/9640: E0 E0 00 CPX #$00E0 EE/9643: F0 03 BEQ $9648 EE/9645: 4C 87 95 JMP $9587 EE/9648: AD F6 11 LDA $11F6 EE/964B: 29 EF AND #$EF EE/964D: 8D F6 11 STA $11F6 EE/9650: AB PLB EE/9651: 28 PLP EE/9652: 60 RTS EE/9653: 08 PHP EE/9654: 8B PHB EE/9655: 20 8F 41 JSR $418F EE/9658: 20 6C 42 JSR $426C EE/965B: C2 30 REP #$30 EE/965D: A9 00 30 LDA #$3000 EE/9660: 85 8B STA $8B EE/9662: A9 00 18 LDA #$1800 EE/9665: 85 8D STA $8D EE/9667: A9 FF FE LDA #$FEFF EE/966A: 85 8F STA $8F EE/966C: A9 92 00 LDA #$0092 EE/966F: 85 62 STA $62 EE/9671: A9 D0 00 LDA #$00D0 EE/9674: 85 7D STA $7D EE/9676: A9 92 00 LDA #$0092 EE/9679: 85 85 STA $85 EE/967B: 85 87 STA $87 EE/967D: A9 08 00 LDA #$0008 EE/9680: 8F CA 00 00 STA $0000CA EE/9684: A9 80 00 LDA #$0080 EE/9687: 8F 60 B6 7E STA $7EB660 EE/968B: A9 00 01 LDA #$0100 EE/968E: 8F 62 B6 7E STA $7EB662 EE/9692: A9 E0 00 LDA #$00E0 EE/9695: 8F 39 6B 7E STA $7E6B39 EE/9699: 8F 3D 6B 7E STA $7E6B3D EE/969D: A5 24 LDA $24 EE/969F: F0 FC BEQ $969D EE/96A1: 64 24 STZ $24 EE/96A3: A2 D9 00 LDX #$00D9 EE/96A6: DA PHX EE/96A7: E2 20 SEP #$20 EE/96A9: A5 62 LDA $62 EE/96AB: C9 E0 CMP #$E0 EE/96AD: B0 0C BCS $96BB EE/96AF: A9 E0 LDA #$E0 EE/96B1: 38 SEC EE/96B2: E5 87 SBC $87 EE/96B4: 8D 09 42 STA $4209 EE/96B7: A9 02 LDA #$02 EE/96B9: 80 07 BRA $96C2 EE/96BB: A9 01 LDA #$01 EE/96BD: 8D 09 42 STA $4209 EE/96C0: A9 07 LDA #$07 EE/96C2: 8D 05 21 STA $2105 EE/96C5: A9 23 LDA #$23 EE/96C7: 8D 31 21 STA $2131 EE/96CA: 20 FF 39 JSR $39FF EE/96CD: 20 B6 37 JSR $37B6 EE/96D0: C2 20 REP #$20 EE/96D2: A5 85 LDA $85 EE/96D4: 85 87 STA $87 EE/96D6: 20 88 38 JSR $3888 EE/96D9: 20 80 3A JSR $3A80 EE/96DC: 20 BD 43 JSR $43BD EE/96DF: 20 7C 42 JSR $427C EE/96E2: 20 AD AA JSR $AAAD EE/96E5: FA PLX EE/96E6: 30 5A BMI $9742 EE/96E8: BF F1 98 EE LDA $EE98F1,X EE/96EC: 85 58 STA $58 EE/96EE: A5 8B LDA $8B EE/96F0: 18 CLC EE/96F1: 65 58 ADC $58 EE/96F3: 85 8B STA $8B EE/96F5: BF F3 98 EE LDA $EE98F3,X EE/96F9: 85 58 STA $58 EE/96FB: A5 8D LDA $8D EE/96FD: 18 CLC EE/96FE: 65 58 ADC $58 EE/9700: 85 8D STA $8D EE/9702: BF F5 98 EE LDA $EE98F5,X EE/9706: 29 FF 00 AND #$00FF EE/9709: 85 58 STA $58 EE/970B: A5 8F LDA $8F EE/970D: 18 CLC EE/970E: 65 58 ADC $58 EE/9710: 85 8F STA $8F EE/9712: BF F6 98 EE LDA $EE98F6,X EE/9716: 29 FF 00 AND #$00FF EE/9719: 85 58 STA $58 EE/971B: A5 62 LDA $62 EE/971D: 18 CLC EE/971E: 65 58 ADC $58 EE/9720: 85 62 STA $62 EE/9722: C9 E0 00 CMP #$00E0 EE/9725: 90 03 BCC $972A EE/9727: A9 E0 00 LDA #$00E0 EE/972A: 85 85 STA $85 EE/972C: BF F7 98 EE LDA $EE98F7,X EE/9730: 29 FF 00 AND #$00FF EE/9733: 85 58 STA $58 EE/9735: A5 7D LDA $7D EE/9737: 38 SEC EE/9738: E5 58 SBC $58 EE/973A: 85 7D STA $7D EE/973C: 8A TXA EE/973D: 38 SEC EE/973E: E9 07 00 SBC #$0007 EE/9741: AA TAX EE/9742: E2 20 SEP #$20 EE/9744: A5 24 LDA $24 EE/9746: F0 FC BEQ $9744 EE/9748: 64 24 STZ $24 EE/974A: A5 23 LDA $23 EE/974C: C5 22 CMP $22 EE/974E: F0 06 BEQ $9756 EE/9750: B0 03 BCS $9755 EE/9752: 1A INC EE/9753: 80 01 BRA $9756 EE/9755: 3A DEC EE/9756: 85 23 STA $23 EE/9758: C9 00 CMP #$00 EE/975A: D0 02 BNE $975E EE/975C: A9 80 LDA #$80 EE/975E: 8D 00 21 STA $2100 EE/9761: EA NOP EE/9762: EA NOP EE/9763: EA NOP EE/9764: EA NOP EE/9765: E0 69 00 CPX #$0069 EE/9768: D0 02 BNE $976C EE/976A: 64 22 STZ $22 EE/976C: A5 23 LDA $23 EE/976E: F0 03 BEQ $9773 EE/9770: 4C A6 96 JMP $96A6 EE/9773: AB PLB EE/9774: 28 PLP EE/9775: 60 RTS ; [ ] h_w_effect: EE/9776: 08 PHP EE/9777: 8B PHB EE/9778: C2 30 REP #$30 EE/977A: A9 00 90 LDA #$9000 EE/977D: 85 8B STA $8B EE/977F: A9 FF 8F LDA #$8FFF EE/9782: 85 8D STA $8D EE/9784: A9 FF FF LDA #$FFFF EE/9787: 85 8F STA $8F EE/9789: A9 F2 00 LDA #$00F2 EE/978C: 85 62 STA $62 EE/978E: A9 70 00 LDA #$0070 EE/9791: 85 7D STA $7D EE/9793: A9 E0 00 LDA #$00E0 EE/9796: 85 85 STA $85 EE/9798: 85 87 STA $87 EE/979A: A9 09 00 LDA #$0009 EE/979D: 8F CA 00 00 STA $0000CA EE/97A1: A9 A0 FD LDA #$FDA0 EE/97A4: 8F 60 B6 7E STA $7EB660 EE/97A8: A9 C8 02 LDA #$02C8 EE/97AB: 8F 62 B6 7E STA $7EB662 EE/97AF: A9 01 00 LDA #$0001 EE/97B2: 8F 64 B6 7E STA $7EB664 EE/97B6: E2 20 SEP #$20 EE/97B8: A9 0F LDA #$0F EE/97BA: 85 22 STA $22 EE/97BC: A5 24 LDA $24 EE/97BE: F0 FC BEQ $97BC EE/97C0: 64 24 STZ $24 EE/97C2: 20 51 3E JSR $3E51 ; update mode 7 variables EE/97C5: 20 BD 43 JSR $43BD EE/97C8: 20 02 43 JSR $4302 EE/97CB: 20 AD AA JSR $AAAD EE/97CE: E2 20 SEP #$20 EE/97D0: A5 24 LDA $24 EE/97D2: F0 FC BEQ $97D0 EE/97D4: 64 24 STZ $24 EE/97D6: A5 23 LDA $23 EE/97D8: C5 22 CMP $22 EE/97DA: F0 06 BEQ $97E2 EE/97DC: B0 03 BCS $97E1 EE/97DE: 1A INC EE/97DF: 80 01 BRA $97E2 EE/97E1: 3A DEC EE/97E2: 85 23 STA $23 EE/97E4: C9 00 CMP #$00 EE/97E6: D0 02 BNE $97EA EE/97E8: A9 80 LDA #$80 EE/97EA: 8D 00 21 STA $2100 EE/97ED: A5 CA LDA $CA EE/97EF: C9 03 CMP #$03 EE/97F1: D0 CF BNE $97C2 EE/97F3: AD F6 11 LDA $11F6 EE/97F6: 29 EF AND #$EF EE/97F8: 8D F6 11 STA $11F6 EE/97FB: AB PLB EE/97FC: 28 PLP EE/97FD: 60 RTS ; [ ] c_w_effect: EE/97FE: 08 PHP EE/97FF: 8B PHB EE/9800: C2 30 REP #$30 EE/9802: A9 00 30 LDA #$3000 EE/9805: 85 8B STA $8B EE/9807: A9 00 18 LDA #$1800 EE/980A: 85 8D STA $8D EE/980C: A9 FF FE LDA #$FEFF EE/980F: 85 8F STA $8F EE/9811: A9 92 00 LDA #$0092 EE/9814: 85 62 STA $62 EE/9816: A9 D0 00 LDA #$00D0 EE/9819: 85 7D STA $7D EE/981B: A9 92 00 LDA #$0092 EE/981E: 85 85 STA $85 EE/9820: 85 87 STA $87 EE/9822: A9 0A 00 LDA #$000A EE/9825: 8F CA 00 00 STA $0000CA EE/9829: A9 B8 00 LDA #$00B8 EE/982C: 8F 60 B6 7E STA $7EB660 EE/9830: A9 00 80 LDA #$8000 EE/9833: 8F 6E B6 7E STA $7EB66E EE/9837: A9 00 00 LDA #$0000 EE/983A: 8F 62 B6 7E STA $7EB662 EE/983E: A9 01 00 LDA #$0001 EE/9841: 8F 64 B6 7E STA $7EB664 EE/9845: A9 FD FF LDA #$FFFD EE/9848: 8F 66 B6 7E STA $7EB666 EE/984C: A9 A8 00 LDA #$00A8 EE/984F: 8F 68 B6 7E STA $7EB668 EE/9853: A9 78 00 LDA #$0078 EE/9856: 8F 6A B6 7E STA $7EB66A EE/985A: A9 00 00 LDA #$0000 EE/985D: 8F 6C B6 7E STA $7EB66C EE/9861: A9 E0 00 LDA #$00E0 EE/9864: 8F 39 6B 7E STA $7E6B39 EE/9868: 8F 3D 6B 7E STA $7E6B3D EE/986C: A5 24 LDA $24 EE/986E: F0 FC BEQ $986C EE/9870: 64 24 STZ $24 EE/9872: E2 20 SEP #$20 EE/9874: A5 62 LDA $62 EE/9876: C9 E0 CMP #$E0 EE/9878: B0 0C BCS $9886 EE/987A: A9 E0 LDA #$E0 EE/987C: 38 SEC EE/987D: E5 87 SBC $87 EE/987F: 8D 09 42 STA $4209 EE/9882: A9 02 LDA #$02 EE/9884: 80 07 BRA $988D EE/9886: A9 01 LDA #$01 EE/9888: 8D 09 42 STA $4209 EE/988B: A9 07 LDA #$07 EE/988D: 8D 05 21 STA $2105 EE/9890: A9 23 LDA #$23 EE/9892: 8D 31 21 STA $2131 EE/9895: 20 FF 39 JSR $39FF EE/9898: 20 B6 37 JSR $37B6 EE/989B: C2 20 REP #$20 EE/989D: A5 85 LDA $85 EE/989F: 85 87 STA $87 EE/98A1: 20 88 38 JSR $3888 EE/98A4: 20 80 3A JSR $3A80 EE/98A7: 20 BD 43 JSR $43BD EE/98AA: 20 7C 42 JSR $427C EE/98AD: 20 AD AA JSR $AAAD EE/98B0: E2 20 SEP #$20 EE/98B2: A5 24 LDA $24 EE/98B4: F0 FC BEQ $98B2 EE/98B6: 64 24 STZ $24 EE/98B8: A5 23 LDA $23 EE/98BA: C5 22 CMP $22 EE/98BC: F0 06 BEQ $98C4 EE/98BE: B0 03 BCS $98C3 EE/98C0: 1A INC EE/98C1: 80 01 BRA $98C4 EE/98C3: 3A DEC EE/98C4: 85 23 STA $23 EE/98C6: C9 00 CMP #$00 EE/98C8: D0 02 BNE $98CC EE/98CA: A9 80 LDA #$80 EE/98CC: 8D 00 21 STA $2100 EE/98CF: EA NOP EE/98D0: EA NOP EE/98D1: EA NOP EE/98D2: EA NOP EE/98D3: AF 6C B6 7E LDA $7EB66C EE/98D7: C9 3C CMP #$3C EE/98D9: D0 02 BNE $98DD EE/98DB: 64 22 STZ $22 EE/98DD: A5 CA LDA $CA EE/98DF: C9 0B CMP #$0B EE/98E1: F0 03 BEQ $98E6 EE/98E3: 4C 72 98 JMP $9872 EE/98E6: AD F6 11 LDA $11F6 EE/98E9: 29 EF AND #$EF EE/98EB: 8D F6 11 STA $11F6 EE/98EE: AB PLB EE/98EF: 28 PLP EE/98F0: 60 RTS EE/98F1: .DB $0E, $00, $12, $00, $00, $00, $00, $3A, $00, $49, $00, $00, $00, $00, $81, $00 EE/9901: .DB $A1, $00, $01, $00, $00, $E1, $00, $19, $01, $02, $01, $00, $55, $01, $AA, $01 EE/9911: .DB $03, $01, $01, $DA, $01, $50, $02, $05, $02, $01, $6A, $02, $04, $03, $06, $02 EE/9921: .DB $02, $00, $03, $BF, $03, $08, $03, $02, $96, $03, $7B, $04, $0A, $04, $03, $26 EE/9931: .DB $04, $2F, $05, $0B, $04, $04, $AB, $04, $D5, $05, $0D, $05, $04, $1F, $05, $66 EE/9941: .DB $06, $0E, $05, $05, $7F, $05, $DE, $06, $0F, $06, $05, $C6, $05, $36, $07, $10 EE/9951: .DB $06, $05, $F1, $05, $6D, $07, $10, $06, $05, $00, $06, $80, $07, $10, $06, $05 EE/9961: .DB $F1, $05, $6D, $07, $10, $06, $05, $C6, $05, $36, $07, $10, $06, $05, $7F, $05 EE/9971: .DB $DE, $06, $0F, $06, $05, $1F, $05, $66, $06, $0E, $05, $05, $AB, $04, $D5, $05 EE/9981: .DB $0D, $05, $04, $26, $04, $2F, $05, $0B, $04, $04, $96, $03, $7B, $04, $0A, $04 EE/9991: .DB $03, $00, $03, $C0, $03, $08, $03, $03, $6A, $02, $04, $03, $06, $02, $02, $DA EE/99A1: .DB $01, $50, $02, $05, $02, $01, $55, $01, $AA, $01, $03, $01, $01, $E1, $00, $19 EE/99B1: .DB $01, $02, $01, $00, $81, $00, $A1, $00, $01, $00, $00, $3A, $00, $49, $00, $00 EE/99C1: .DB $00, $00, $0E, $00, $12, $00, $00, $00, $00, $02, $00, $0F, $00, $00, $00, $00 ; pixels per tile (height * width) dtsize: EE/99D1: .DW $0000, $0009, $0010, $0019, $0024, $0031, $0040, $0051 EE/99E1: .DW $0064, $0079, $0090, $00C4, $0100 ; tile height/width for each layer chr_size: EE/99EB: .DW $0000, $0003, $0004, $0005, $0006, $0007, $0008, $0009 EE/99FB: .DW $000A, $000B, $000C, $000E, $0010 ; [ Init Magitek Train Ride Graphics ] decsp: EE/9A05: 08 PHP EE/9A06: 8B PHB EE/9A07: 0B PHD EE/9A08: C2 30 REP #$30 EE/9A0A: A9 00 21 LDA #$2100 ; set dp to $2100 EE/9A0D: 5B TCD EE/9A0E: E2 20 SEP #$20 EE/9A10: A2 00 20 LDX #$2000 ; $7E2000 EE/9A13: 86 81 STX $81 EE/9A15: A9 7E LDA #$7E EE/9A17: 85 83 STA $83 EE/9A19: A9 7E LDA #$7E EE/9A1B: 48 PHA EE/9A1C: AB PLB EE/9A1D: A0 00 00 LDY #$0000 EE/9A20: A9 1D LDA #$1D ; 29 tiles EE/9A22: 8D 66 00 STA $0066 EE/9A25: A2 18 00 LDX #$0018 EE/9A28: 8E 68 00 STX $0068 ; 24 layers EE/9A2B: C2 20 REP #$20 EE/9A2D: 9C 5A 00 STZ $005A EE/9A30: AE 68 00 LDX $0068 ; layer EE/9A33: BF D1 99 EE LDA $EE99D1,X ; pixels per tile EE/9A37: 89 01 00 BIT #$0001 EE/9A3A: F0 03 BEQ $9A3F ; branch if an even number of pixels per tile EE/9A3C: EE 5A 00 INC $005A ; $5A set if odd number of pixels per tile EE/9A3F: 4A LSR EE/9A40: AA TAX EE/9A41: E2 20 SEP #$20 EE/9A43: B9 00 A0 LDA $A000,Y ; $58 = high nybble of pixel EE/9A46: 8D 58 00 STA $0058 EE/9A49: C8 INY EE/9A4A: B9 00 A0 LDA $A000,Y ; first pixel EE/9A4D: 29 F0 AND #$F0 EE/9A4F: F0 0B BEQ $9A5C EE/9A51: 4A LSR EE/9A52: 4A LSR EE/9A53: 4A LSR EE/9A54: 4A LSR EE/9A55: 0D 58 00 ORA $0058 EE/9A58: 85 80 STA $80 EE/9A5A: 80 02 BRA $9A5E EE/9A5C: 64 80 STZ $80 EE/9A5E: B9 00 A0 LDA $A000,Y ; second pixel EE/9A61: 29 0F AND #$0F EE/9A63: F0 07 BEQ $9A6C ; branch if pixel is transparent EE/9A65: 0D 58 00 ORA $0058 EE/9A68: 85 80 STA $80 EE/9A6A: 80 02 BRA $9A6E EE/9A6C: 64 80 STZ $80 EE/9A6E: C8 INY ; next pair of pixels EE/9A6F: CA DEX EE/9A70: D0 D8 BNE $9A4A EE/9A72: AD 5A 00 LDA $005A EE/9A75: F0 15 BEQ $9A8C ; branch if an even number of pixels per tile EE/9A77: B9 00 A0 LDA $A000,Y EE/9A7A: 29 F0 AND #$F0 EE/9A7C: F0 0B BEQ $9A89 ; branch if pixel is transparent EE/9A7E: 4A LSR EE/9A7F: 4A LSR EE/9A80: 4A LSR EE/9A81: 4A LSR EE/9A82: 0D 58 00 ORA $0058 EE/9A85: 85 80 STA $80 EE/9A87: 80 02 BRA $9A8B EE/9A89: 64 80 STZ $80 EE/9A8B: C8 INY ; next size/layer EE/9A8C: CE 68 00 DEC $0068 EE/9A8F: CE 68 00 DEC $0068 EE/9A92: D0 97 BNE $9A2B EE/9A94: CE 66 00 DEC $0066 ; next tile EE/9A97: D0 8C BNE $9A25 EE/9A99: C2 20 REP #$20 EE/9A9B: A9 D9 68 LDA #$68D9 ; $7E68D9 EE/9A9E: 85 81 STA $81 EE/9AA0: E2 20 SEP #$20 EE/9AA2: A0 00 00 LDY #$0000 EE/9AA5: A2 0C 00 LDX #$000C ; EE/9AA8: 8E 66 00 STX $0066 EE/9AAB: A2 18 00 LDX #$0018 ; 24 layers EE/9AAE: 8E 68 00 STX $0068 EE/9AB1: AE 68 00 LDX $0068 EE/9AB4: BF EB 99 EE LDA $EE99EB,X ; tile height/width EE/9AB8: 8D 58 00 STA $0058 EE/9ABB: C2 21 REP #$21 EE/9ABD: AE 68 00 LDX $0068 EE/9AC0: BF EB 99 EE LDA $EE99EB,X ; tile height/width EE/9AC4: 8D 5A 00 STA $005A EE/9AC7: 98 TYA EE/9AC8: 7F EB 99 EE ADC $EE99EB,X ; tile height/width EE/9ACC: AA TAX EE/9ACD: A8 TAY EE/9ACE: E2 20 SEP #$20 EE/9AD0: BD FF 1F LDA $1FFF,X EE/9AD3: 85 80 STA $80 EE/9AD5: CA DEX EE/9AD6: CE 5A 00 DEC $005A ; next pixel EE/9AD9: D0 F5 BNE $9AD0 EE/9ADB: CE 58 00 DEC $0058 ; next row EE/9ADE: D0 DB BNE $9ABB EE/9AE0: CE 68 00 DEC $0068 ; next EE/9AE3: CE 68 00 DEC $0068 EE/9AE6: D0 C9 BNE $9AB1 EE/9AE8: CE 66 00 DEC $0066 ; next EE/9AEB: D0 BE BNE $9AAB EE/9AED: 2B PLD EE/9AEE: AB PLB EE/9AEF: 28 PLP EE/9AF0: 60 RTS ; [ Hide Floating Island in Mini-Map ] del_daisankaku: EE/9AF1: 08 PHP EE/9AF2: E2 20 SEP #$20 EE/9AF4: AD 64 1F LDA $1F64 EE/9AF7: D0 19 BNE $9B12 ; return if not world of balance EE/9AF9: AD 93 1E LDA $1E93 EE/9AFC: 89 40 BIT #$40 EE/9AFE: F0 12 BEQ $9B12 ; return if floating island has not lifted off EE/9B00: C2 20 REP #$20 EE/9B02: AF A2 E1 7E LDA $7EE1A2 ; hide floating island EE/9B06: 8F AC E1 7E STA $7EE1AC EE/9B0A: 8F AE E1 7E STA $7EE1AE EE/9B0E: 8F B0 E1 7E STA $7EE1B0 EE/9B12: 28 PLP EE/9B13: 60 RTS ; world of balance tile properties m7spnid: EE/9B14: .DW $0004, $0004, $0044, $0004, $0004, $0004, $0053, $0053 EE/9B24: .DW $0042, $0053, $0044, $0044, $0044, $0046, $0246, $0046 EE/9B34: .DW $0004, $0046, $001B, $0046, $0004, $0044, $0044, $0053 EE/9B44: .DW $0044, $0053, $0044, $0044, $0044, $0246, $0246, $0246 EE/9B54: .DW $0046, $001B, $001B, $001B, $0046, $0044, $0044, $0053 EE/9B64: .DW $0042, $0053, $0044, $0044, $0044, $0046, $0246, $0046 EE/9B74: .DW $0004, $0057, $001B, $0057, $0004, $0007, $0007, $0007 EE/9B84: .DW $0007, $0046, $0046, $0046, $0046, $0366, $0366, $0366 EE/9B94: .DW $0004, $0007, $0046, $0007, $0004, $0007, $0007, $0007 EE/9BA4: .DW $0007, $0046, $0046, $0044, $0044, $0366, $0366, $0366 EE/9BB4: .DW $001B, $001B, $0007, $0007, $0004, $0004, $0046, $0046 EE/9BC4: .DW $0017, $0017, $0017, $0046, $0046, $0366, $0366, $0366 EE/9BD4: .DW $001B, $001B, $0007, $0007, $0004, $0004, $0046, $0046 EE/9BE4: .DW $0017, $0017, $0017, $0246, $0246, $0004, $0004, $0004 EE/9BF4: .DW $0004, $0004, $0004, $0004, $0016, $0017, $0016, $0004 EE/9C04: .DW $0017, $0044, $0017, $0246, $0246, $0004, $0004, $0004 EE/9C14: .DW $0004, $0004, $0017, $0004, $0016, $0017, $0016, $0004 EE/9C24: .DW $0004, $0004, $0004, $0004, $0004, $0006, $0006, $0006 EE/9C34: .DW $0004, $0017, $0017, $0017, $0016, $0017, $0016, $0007 EE/9C44: .DW $0007, $0004, $0004, $0004, $0004, $0004, $0004, $0642 EE/9C54: .DW $0017, $0017, $0017, $0017, $0017, $0004, $0004, $0007 EE/9C64: .DW $0007, $0004, $0646, $0004, $2644, $0004, $0004, $2644 EE/9C74: .DW $0004, $0017, $0017, $0017, $0004, $0004, $0004, $0004 EE/9C84: .DW $2644, $0004, $0004, $0004, $0004, $0004, $0004, $0642 EE/9C94: .DW $0004, $0004, $0017, $0004, $0004, $0004, $0004, $0646 EE/9CA4: .DW $0004, $0646, $0646, $0004, $2646, $0004, $2644, $2644 EE/9CB4: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0646, $0004 EE/9CC4: .DW $0004, $0004, $0646, $2644, $2644, $2644, $2644, $2644 EE/9CD4: .DW $0046, $0046, $0004, $0004, $0004, $0004, $0004, $0004 EE/9CE4: .DW $0004, $0004, $0004, $2644, $2644, $2644, $2644, $2644 EE/9CF4: .DW $0046, $0046, $0004, $0004, $0004, $0004, $0004, $0004 EE/9D04: .DW $0646, $0004, $0004, $2644, $2644, $2644, $2644, $2644 ; world of ruin tile properties m7spnid2: EE/9D14: .DW $0004, $0004, $0444, $0004, $0004, $0004, $0753, $0553 EE/9D24: .DW $0544, $0553, $0444, $0544, $0444, $0546, $0246, $0546 EE/9D34: .DW $0004, $0446, $001B, $0446, $0004, $0544, $0544, $0544 EE/9D44: .DW $0544, $0544, $0544, $0544, $0544, $0246, $0246, $0246 EE/9D54: .DW $0446, $001B, $001B, $001B, $0446, $0544, $0544, $0553 EE/9D64: .DW $0544, $0553, $0444, $0544, $0444, $0546, $0246, $0546 EE/9D74: .DW $0004, $0417, $001B, $0417, $0007, $0007, $0007, $0007 EE/9D84: .DW $0007, $0546, $0546, $0546, $0546, $0166, $0166, $0166 EE/9D94: .DW $0004, $0007, $0446, $0007, $0004, $0007, $0007, $0007 EE/9DA4: .DW $0007, $0546, $0546, $0544, $0544, $0166, $0166, $0166 EE/9DB4: .DW $001B, $001B, $000B, $0007, $0004, $0006, $0546, $0007 EE/9DC4: .DW $0007, $0017, $0017, $0546, $0546, $0166, $0166, $0166 EE/9DD4: .DW $001B, $001B, $0007, $0007, $0444, $8019, $0546, $0007 EE/9DE4: .DW $0007, $0017, $0017, $0246, $0246, $0004, $0004, $0004 EE/9DF4: .DW $0553, $2544, $0553, $0004, $0016, $8019, $0016, $0004 EE/9E04: .DW $0017, $0544, $0057, $0246, $0246, $0004, $0004, $0004 EE/9E14: .DW $2544, $2544, $2544, $0004, $0016, $8015, $0016, $0004 EE/9E24: .DW $0004, $0004, $0004, $0004, $0004, $0006, $0006, $0006 EE/9E34: .DW $0553, $2544, $0553, $0017, $0016, $0017, $0016, $0004 EE/9E44: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0004, $0004 EE/9E54: .DW $0444, $0544, $0444, $0017, $0017, $0004, $2644, $2544 EE/9E64: .DW $2644, $0004, $0004, $2644, $0004, $0004, $4444, $4444 EE/9E74: .DW $0544, $0444, $0544, $0017, $0004, $0004, $2544, $2644 EE/9E84: .DW $2544, $0004, $0646, $001B, $0646, $0004, $4515, $4515 EE/9E94: .DW $0444, $0544, $0444, $0004, $0004, $0004, $2644, $2544 EE/9EA4: .DW $2644, $0646, $0004, $0646, $0004, $0646, $0004, $4019 EE/9EB4: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0004, $0004 EE/9EC4: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0004, $0004 EE/9ED4: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0004, $0004 EE/9EE4: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0004, $0004 EE/9EF4: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0004, $0004 EE/9F04: .DW $0004, $0004, $0004, $0004, $0004, $0004, $0004, $0004 ; [ Update Magitek Train Ride Graphics ] EE/9F14: 8B PHB EE/9F15: 08 PHP EE/9F16: 0B PHD EE/9F17: E2 20 SEP #$20 EE/9F19: A9 7F LDA #$7F EE/9F1B: 48 PHA EE/9F1C: AB PLB EE/9F1D: A9 00 LDA #$00 EE/9F1F: 8F 83 21 00 STA $002183 EE/9F23: A9 00 LDA #$00 EE/9F25: 8F 24 00 00 STA $000024 ; EE/9F29: 8F FA 00 00 STA $0000FA ; clear 4 frame counter EE/9F2D: C2 30 REP #$30 EE/9F2F: A9 00 21 LDA #$2100 ; set dp to $2100 EE/9F32: 5B TCD EE/9F33: A2 00 00 LDX #$0000 EE/9F36: 9E 18 96 STZ $9618,X ; clear magitek train ride graphics buffer EE/9F39: 9E 1A 96 STZ $961A,X EE/9F3C: 9E 1C 96 STZ $961C,X EE/9F3F: 9E 1E 96 STZ $961E,X EE/9F42: 9E 20 96 STZ $9620,X EE/9F45: 9E 22 96 STZ $9622,X EE/9F48: 9E 24 96 STZ $9624,X EE/9F4B: 9E 26 96 STZ $9626,X EE/9F4E: 9E 28 96 STZ $9628,X EE/9F51: 9E 2A 96 STZ $962A,X EE/9F54: 9E 2C 96 STZ $962C,X EE/9F57: 9E 2E 96 STZ $962E,X EE/9F5A: 9E 30 96 STZ $9630,X EE/9F5D: 9E 32 96 STZ $9632,X EE/9F60: 9E 34 96 STZ $9634,X EE/9F63: 9E 36 96 STZ $9636,X EE/9F66: 9E 38 96 STZ $9638,X EE/9F69: 9E 3A 96 STZ $963A,X EE/9F6C: 9E 3C 96 STZ $963C,X EE/9F6F: 9E 3E 96 STZ $963E,X EE/9F72: 9E 40 96 STZ $9640,X EE/9F75: 9E 42 96 STZ $9642,X EE/9F78: 9E 44 96 STZ $9644,X EE/9F7B: 9E 46 96 STZ $9646,X EE/9F7E: 9E 48 96 STZ $9648,X EE/9F81: 9E 4A 96 STZ $964A,X EE/9F84: 9E 4C 96 STZ $964C,X EE/9F87: 9E 4E 96 STZ $964E,X EE/9F8A: 9E 50 96 STZ $9650,X EE/9F8D: 9E 52 96 STZ $9652,X EE/9F90: 9E 54 96 STZ $9654,X EE/9F93: 9E 56 96 STZ $9656,X EE/9F96: 9E 58 96 STZ $9658,X EE/9F99: 9E 5A 96 STZ $965A,X EE/9F9C: 9E 5C 96 STZ $965C,X EE/9F9F: 9E 5E 96 STZ $965E,X EE/9FA2: 9E 60 96 STZ $9660,X EE/9FA5: 9E 62 96 STZ $9662,X EE/9FA8: 9E 64 96 STZ $9664,X EE/9FAB: 9E 66 96 STZ $9666,X EE/9FAE: 8A TXA ; next tile EE/9FAF: 18 CLC EE/9FB0: 69 00 01 ADC #$0100 EE/9FB3: AA TAX EE/9FB4: C9 00 50 CMP #$5000 EE/9FB7: F0 03 BEQ $9FBC EE/9FB9: 4C 36 9F JMP $9F36 EE/9FBC: A0 E0 01 LDY #$01E0 EE/9FBF: BE 02 00 LDX $0002,Y ; tile index EE/9FC2: BD 14 08 LDA $0814,X ; pointer to tile graphics (last layer) EE/9FC5: 85 81 STA $81 ; $2181 EE/9FC7: BE 00 00 LDX $0000,Y ; tile position EE/9FCA: F0 31 BEQ $9FFD ; branch if tile is not shown EE/9FCC: 8C 5C 0C STY $0C5C EE/9FCF: A0 04 00 LDY #$0004 EE/9FD2: E2 20 SEP #$20 EE/9FD4: A5 80 LDA $80 EE/9FD6: F0 03 BEQ $9FDB EE/9FD8: 9D FF 7F STA $7FFF,X EE/9FDB: A5 80 LDA $80 EE/9FDD: F0 03 BEQ $9FE2 EE/9FDF: 9D 00 80 STA $8000,X EE/9FE2: A5 80 LDA $80 EE/9FE4: F0 03 BEQ $9FE9 EE/9FE6: 9D 01 80 STA $8001,X EE/9FE9: A5 80 LDA $80 EE/9FEB: F0 03 BEQ $9FF0 EE/9FED: 9D 02 80 STA $8002,X EE/9FF0: C2 21 REP #$21 EE/9FF2: 8A TXA EE/9FF3: E9 FF 00 SBC #$00FF EE/9FF6: AA TAX EE/9FF7: 88 DEY EE/9FF8: D0 D8 BNE $9FD2 EE/9FFA: AC 5C 0C LDY $0C5C EE/9FFD: C8 INY ; next tile EE/9FFE: C8 INY EE/9FFF: C8 INY EE/A000: C8 INY EE/A001: C0 00 03 CPY #$0300 EE/A004: D0 B9 BNE $9FBF EE/A006: BE 02 00 LDX $0002,Y ; tile index EE/A009: BD 12 08 LDA $0812,X ; pointer to tile graphics (next to last layer) EE/A00C: 85 81 STA $81 EE/A00E: BE 00 00 LDX $0000,Y EE/A011: F0 38 BEQ $A04B EE/A013: 8C 5C 0C STY $0C5C EE/A016: A0 05 00 LDY #$0005 EE/A019: E2 20 SEP #$20 EE/A01B: A5 80 LDA $80 EE/A01D: F0 03 BEQ $A022 EE/A01F: 9D FE 7F STA $7FFE,X EE/A022: A5 80 LDA $80 EE/A024: F0 03 BEQ $A029 EE/A026: 9D FF 7F STA $7FFF,X EE/A029: A5 80 LDA $80 EE/A02B: F0 03 BEQ $A030 EE/A02D: 9D 00 80 STA $8000,X EE/A030: A5 80 LDA $80 EE/A032: F0 03 BEQ $A037 EE/A034: 9D 01 80 STA $8001,X EE/A037: A5 80 LDA $80 EE/A039: F0 03 BEQ $A03E EE/A03B: 9D 02 80 STA $8002,X EE/A03E: C2 21 REP #$21 EE/A040: 8A TXA EE/A041: E9 FF 00 SBC #$00FF EE/A044: AA TAX EE/A045: 88 DEY EE/A046: D0 D1 BNE $A019 EE/A048: AC 5C 0C LDY $0C5C EE/A04B: C8 INY EE/A04C: C8 INY EE/A04D: C8 INY EE/A04E: C8 INY EE/A04F: C0 C0 03 CPY #$03C0 EE/A052: D0 B2 BNE $A006 EE/A054: BE 02 00 LDX $0002,Y EE/A057: BD 10 08 LDA $0810,X EE/A05A: 85 81 STA $81 EE/A05C: BE 00 00 LDX $0000,Y EE/A05F: F0 3F BEQ $A0A0 EE/A061: 8C 5C 0C STY $0C5C EE/A064: A0 06 00 LDY #$0006 EE/A067: E2 20 SEP #$20 EE/A069: A5 80 LDA $80 EE/A06B: F0 03 BEQ $A070 EE/A06D: 9D FE 7F STA $7FFE,X EE/A070: A5 80 LDA $80 EE/A072: F0 03 BEQ $A077 EE/A074: 9D FF 7F STA $7FFF,X EE/A077: A5 80 LDA $80 EE/A079: F0 03 BEQ $A07E EE/A07B: 9D 00 80 STA $8000,X EE/A07E: A5 80 LDA $80 EE/A080: F0 03 BEQ $A085 EE/A082: 9D 01 80 STA $8001,X EE/A085: A5 80 LDA $80 EE/A087: F0 03 BEQ $A08C EE/A089: 9D 02 80 STA $8002,X EE/A08C: A5 80 LDA $80 EE/A08E: F0 03 BEQ $A093 EE/A090: 9D 03 80 STA $8003,X EE/A093: C2 21 REP #$21 EE/A095: 8A TXA EE/A096: E9 FF 00 SBC #$00FF EE/A099: AA TAX EE/A09A: 88 DEY EE/A09B: D0 CA BNE $A067 EE/A09D: AC 5C 0C LDY $0C5C EE/A0A0: C8 INY EE/A0A1: C8 INY EE/A0A2: C8 INY EE/A0A3: C8 INY EE/A0A4: C0 20 04 CPY #$0420 EE/A0A7: D0 AB BNE $A054 EE/A0A9: BE 02 00 LDX $0002,Y EE/A0AC: BD 0E 08 LDA $080E,X EE/A0AF: 85 81 STA $81 EE/A0B1: BE 00 00 LDX $0000,Y EE/A0B4: F0 46 BEQ $A0FC EE/A0B6: 8C 5C 0C STY $0C5C EE/A0B9: A0 07 00 LDY #$0007 EE/A0BC: E2 20 SEP #$20 EE/A0BE: A5 80 LDA $80 EE/A0C0: F0 03 BEQ $A0C5 EE/A0C2: 9D FD 7F STA $7FFD,X EE/A0C5: A5 80 LDA $80 EE/A0C7: F0 03 BEQ $A0CC EE/A0C9: 9D FE 7F STA $7FFE,X EE/A0CC: A5 80 LDA $80 EE/A0CE: F0 03 BEQ $A0D3 EE/A0D0: 9D FF 7F STA $7FFF,X EE/A0D3: A5 80 LDA $80 EE/A0D5: F0 03 BEQ $A0DA EE/A0D7: 9D 00 80 STA $8000,X EE/A0DA: A5 80 LDA $80 EE/A0DC: F0 03 BEQ $A0E1 EE/A0DE: 9D 01 80 STA $8001,X EE/A0E1: A5 80 LDA $80 EE/A0E3: F0 03 BEQ $A0E8 EE/A0E5: 9D 02 80 STA $8002,X EE/A0E8: A5 80 LDA $80 EE/A0EA: F0 03 BEQ $A0EF EE/A0EC: 9D 03 80 STA $8003,X EE/A0EF: C2 21 REP #$21 EE/A0F1: 8A TXA EE/A0F2: E9 FF 00 SBC #$00FF EE/A0F5: AA TAX EE/A0F6: 88 DEY EE/A0F7: D0 C3 BNE $A0BC EE/A0F9: AC 5C 0C LDY $0C5C EE/A0FC: C8 INY EE/A0FD: C8 INY EE/A0FE: C8 INY EE/A0FF: C8 INY EE/A100: C0 80 04 CPY #$0480 EE/A103: D0 A4 BNE $A0A9 EE/A105: BE 02 00 LDX $0002,Y EE/A108: BD 0C 08 LDA $080C,X EE/A10B: 85 81 STA $81 EE/A10D: BE 00 00 LDX $0000,Y EE/A110: F0 4D BEQ $A15F EE/A112: 8C 5C 0C STY $0C5C EE/A115: A0 08 00 LDY #$0008 EE/A118: E2 20 SEP #$20 EE/A11A: A5 80 LDA $80 EE/A11C: F0 03 BEQ $A121 EE/A11E: 9D FD 7F STA $7FFD,X EE/A121: A5 80 LDA $80 EE/A123: F0 03 BEQ $A128 EE/A125: 9D FE 7F STA $7FFE,X EE/A128: A5 80 LDA $80 EE/A12A: F0 03 BEQ $A12F EE/A12C: 9D FF 7F STA $7FFF,X EE/A12F: A5 80 LDA $80 EE/A131: F0 03 BEQ $A136 EE/A133: 9D 00 80 STA $8000,X EE/A136: A5 80 LDA $80 EE/A138: F0 03 BEQ $A13D EE/A13A: 9D 01 80 STA $8001,X EE/A13D: A5 80 LDA $80 EE/A13F: F0 03 BEQ $A144 EE/A141: 9D 02 80 STA $8002,X EE/A144: A5 80 LDA $80 EE/A146: F0 03 BEQ $A14B EE/A148: 9D 03 80 STA $8003,X EE/A14B: A5 80 LDA $80 EE/A14D: F0 03 BEQ $A152 EE/A14F: 9D 04 80 STA $8004,X EE/A152: C2 21 REP #$21 EE/A154: 8A TXA EE/A155: E9 FF 00 SBC #$00FF EE/A158: AA TAX EE/A159: 88 DEY EE/A15A: D0 BC BNE $A118 EE/A15C: AC 5C 0C LDY $0C5C EE/A15F: C8 INY EE/A160: C8 INY EE/A161: C8 INY EE/A162: C8 INY EE/A163: C0 E0 04 CPY #$04E0 EE/A166: D0 9D BNE $A105 EE/A168: BE 02 00 LDX $0002,Y EE/A16B: BD 0A 08 LDA $080A,X EE/A16E: 85 81 STA $81 EE/A170: BE 00 00 LDX $0000,Y EE/A173: F0 54 BEQ $A1C9 EE/A175: 8C 5C 0C STY $0C5C EE/A178: A0 09 00 LDY #$0009 EE/A17B: E2 20 SEP #$20 EE/A17D: A5 80 LDA $80 EE/A17F: F0 03 BEQ $A184 EE/A181: 9D FC 7F STA $7FFC,X EE/A184: A5 80 LDA $80 EE/A186: F0 03 BEQ $A18B EE/A188: 9D FD 7F STA $7FFD,X EE/A18B: A5 80 LDA $80 EE/A18D: F0 03 BEQ $A192 EE/A18F: 9D FE 7F STA $7FFE,X EE/A192: A5 80 LDA $80 EE/A194: F0 03 BEQ $A199 EE/A196: 9D FF 7F STA $7FFF,X EE/A199: A5 80 LDA $80 EE/A19B: F0 03 BEQ $A1A0 EE/A19D: 9D 00 80 STA $8000,X EE/A1A0: A5 80 LDA $80 EE/A1A2: F0 03 BEQ $A1A7 EE/A1A4: 9D 01 80 STA $8001,X EE/A1A7: A5 80 LDA $80 EE/A1A9: F0 03 BEQ $A1AE EE/A1AB: 9D 02 80 STA $8002,X EE/A1AE: A5 80 LDA $80 EE/A1B0: F0 03 BEQ $A1B5 EE/A1B2: 9D 03 80 STA $8003,X EE/A1B5: A5 80 LDA $80 EE/A1B7: F0 03 BEQ $A1BC EE/A1B9: 9D 04 80 STA $8004,X EE/A1BC: C2 21 REP #$21 EE/A1BE: 8A TXA EE/A1BF: E9 FF 00 SBC #$00FF EE/A1C2: AA TAX EE/A1C3: 88 DEY EE/A1C4: D0 B5 BNE $A17B EE/A1C6: AC 5C 0C LDY $0C5C EE/A1C9: C8 INY EE/A1CA: C8 INY EE/A1CB: C8 INY EE/A1CC: C8 INY EE/A1CD: C0 10 05 CPY #$0510 EE/A1D0: D0 96 BNE $A168 EE/A1D2: BE 02 00 LDX $0002,Y EE/A1D5: BD 08 08 LDA $0808,X EE/A1D8: 85 81 STA $81 EE/A1DA: BE 00 00 LDX $0000,Y EE/A1DD: F0 5B BEQ $A23A EE/A1DF: 8C 5C 0C STY $0C5C EE/A1E2: A0 0A 00 LDY #$000A EE/A1E5: E2 20 SEP #$20 EE/A1E7: A5 80 LDA $80 EE/A1E9: F0 03 BEQ $A1EE EE/A1EB: 9D FC 7F STA $7FFC,X EE/A1EE: A5 80 LDA $80 EE/A1F0: F0 03 BEQ $A1F5 EE/A1F2: 9D FD 7F STA $7FFD,X EE/A1F5: A5 80 LDA $80 EE/A1F7: F0 03 BEQ $A1FC EE/A1F9: 9D FE 7F STA $7FFE,X EE/A1FC: A5 80 LDA $80 EE/A1FE: F0 03 BEQ $A203 EE/A200: 9D FF 7F STA $7FFF,X EE/A203: A5 80 LDA $80 EE/A205: F0 03 BEQ $A20A EE/A207: 9D 00 80 STA $8000,X EE/A20A: A5 80 LDA $80 EE/A20C: F0 03 BEQ $A211 EE/A20E: 9D 01 80 STA $8001,X EE/A211: A5 80 LDA $80 EE/A213: F0 03 BEQ $A218 EE/A215: 9D 02 80 STA $8002,X EE/A218: A5 80 LDA $80 EE/A21A: F0 03 BEQ $A21F EE/A21C: 9D 03 80 STA $8003,X EE/A21F: A5 80 LDA $80 EE/A221: F0 03 BEQ $A226 EE/A223: 9D 04 80 STA $8004,X EE/A226: A5 80 LDA $80 EE/A228: F0 03 BEQ $A22D EE/A22A: 9D 05 80 STA $8005,X EE/A22D: C2 21 REP #$21 EE/A22F: 8A TXA EE/A230: E9 FF 00 SBC #$00FF EE/A233: AA TAX EE/A234: 88 DEY EE/A235: D0 AE BNE $A1E5 EE/A237: AC 5C 0C LDY $0C5C EE/A23A: C8 INY EE/A23B: C8 INY EE/A23C: C8 INY EE/A23D: C8 INY EE/A23E: C0 40 05 CPY #$0540 EE/A241: D0 8F BNE $A1D2 EE/A243: BE 02 00 LDX $0002,Y EE/A246: BD 06 08 LDA $0806,X EE/A249: 85 81 STA $81 EE/A24B: BE 00 00 LDX $0000,Y EE/A24E: F0 62 BEQ $A2B2 EE/A250: 8C 5C 0C STY $0C5C EE/A253: A0 0B 00 LDY #$000B EE/A256: E2 20 SEP #$20 EE/A258: A5 80 LDA $80 EE/A25A: F0 03 BEQ $A25F EE/A25C: 9D FB 7F STA $7FFB,X EE/A25F: A5 80 LDA $80 EE/A261: F0 03 BEQ $A266 EE/A263: 9D FC 7F STA $7FFC,X EE/A266: A5 80 LDA $80 EE/A268: F0 03 BEQ $A26D EE/A26A: 9D FD 7F STA $7FFD,X EE/A26D: A5 80 LDA $80 EE/A26F: F0 03 BEQ $A274 EE/A271: 9D FE 7F STA $7FFE,X EE/A274: A5 80 LDA $80 EE/A276: F0 03 BEQ $A27B EE/A278: 9D FF 7F STA $7FFF,X EE/A27B: A5 80 LDA $80 EE/A27D: F0 03 BEQ $A282 EE/A27F: 9D 00 80 STA $8000,X EE/A282: A5 80 LDA $80 EE/A284: F0 03 BEQ $A289 EE/A286: 9D 01 80 STA $8001,X EE/A289: A5 80 LDA $80 EE/A28B: F0 03 BEQ $A290 EE/A28D: 9D 02 80 STA $8002,X EE/A290: A5 80 LDA $80 EE/A292: F0 03 BEQ $A297 EE/A294: 9D 03 80 STA $8003,X EE/A297: A5 80 LDA $80 EE/A299: F0 03 BEQ $A29E EE/A29B: 9D 04 80 STA $8004,X EE/A29E: A5 80 LDA $80 EE/A2A0: F0 03 BEQ $A2A5 EE/A2A2: 9D 05 80 STA $8005,X EE/A2A5: C2 21 REP #$21 EE/A2A7: 8A TXA EE/A2A8: E9 FF 00 SBC #$00FF EE/A2AB: AA TAX EE/A2AC: 88 DEY EE/A2AD: D0 A7 BNE $A256 EE/A2AF: AC 5C 0C LDY $0C5C EE/A2B2: C8 INY EE/A2B3: C8 INY EE/A2B4: C8 INY EE/A2B5: C8 INY EE/A2B6: C0 70 05 CPY #$0570 EE/A2B9: D0 88 BNE $A243 EE/A2BB: BE 02 00 LDX $0002,Y EE/A2BE: BD 04 08 LDA $0804,X EE/A2C1: 85 81 STA $81 EE/A2C3: BE 00 00 LDX $0000,Y EE/A2C6: F0 69 BEQ $A331 EE/A2C8: 8C 5C 0C STY $0C5C EE/A2CB: A0 0C 00 LDY #$000C EE/A2CE: E2 20 SEP #$20 EE/A2D0: A5 80 LDA $80 EE/A2D2: F0 03 BEQ $A2D7 EE/A2D4: 9D FB 7F STA $7FFB,X EE/A2D7: A5 80 LDA $80 EE/A2D9: F0 03 BEQ $A2DE EE/A2DB: 9D FC 7F STA $7FFC,X EE/A2DE: A5 80 LDA $80 EE/A2E0: F0 03 BEQ $A2E5 EE/A2E2: 9D FD 7F STA $7FFD,X EE/A2E5: A5 80 LDA $80 EE/A2E7: F0 03 BEQ $A2EC EE/A2E9: 9D FE 7F STA $7FFE,X EE/A2EC: A5 80 LDA $80 EE/A2EE: F0 03 BEQ $A2F3 EE/A2F0: 9D FF 7F STA $7FFF,X EE/A2F3: A5 80 LDA $80 EE/A2F5: F0 03 BEQ $A2FA EE/A2F7: 9D 00 80 STA $8000,X EE/A2FA: A5 80 LDA $80 EE/A2FC: F0 03 BEQ $A301 EE/A2FE: 9D 01 80 STA $8001,X EE/A301: A5 80 LDA $80 EE/A303: F0 03 BEQ $A308 EE/A305: 9D 02 80 STA $8002,X EE/A308: A5 80 LDA $80 EE/A30A: F0 03 BEQ $A30F EE/A30C: 9D 03 80 STA $8003,X EE/A30F: A5 80 LDA $80 EE/A311: F0 03 BEQ $A316 EE/A313: 9D 04 80 STA $8004,X EE/A316: A5 80 LDA $80 EE/A318: F0 03 BEQ $A31D EE/A31A: 9D 05 80 STA $8005,X EE/A31D: A5 80 LDA $80 EE/A31F: F0 03 BEQ $A324 EE/A321: 9D 06 80 STA $8006,X EE/A324: C2 21 REP #$21 EE/A326: 8A TXA EE/A327: E9 FF 00 SBC #$00FF EE/A32A: AA TAX EE/A32B: 88 DEY EE/A32C: D0 A0 BNE $A2CE EE/A32E: AC 5C 0C LDY $0C5C EE/A331: C8 INY EE/A332: C8 INY EE/A333: C8 INY EE/A334: C8 INY EE/A335: C0 A0 05 CPY #$05A0 EE/A338: D0 81 BNE $A2BB EE/A33A: BE 02 00 LDX $0002,Y EE/A33D: BD 02 08 LDA $0802,X EE/A340: 85 81 STA $81 EE/A342: BE 00 00 LDX $0000,Y EE/A345: F0 77 BEQ $A3BE EE/A347: 8C 5C 0C STY $0C5C EE/A34A: A0 0E 00 LDY #$000E EE/A34D: E2 20 SEP #$20 EE/A34F: A5 80 LDA $80 EE/A351: F0 03 BEQ $A356 EE/A353: 9D FA 7F STA $7FFA,X EE/A356: A5 80 LDA $80 EE/A358: F0 03 BEQ $A35D EE/A35A: 9D FB 7F STA $7FFB,X EE/A35D: A5 80 LDA $80 EE/A35F: F0 03 BEQ $A364 EE/A361: 9D FC 7F STA $7FFC,X EE/A364: A5 80 LDA $80 EE/A366: F0 03 BEQ $A36B EE/A368: 9D FD 7F STA $7FFD,X EE/A36B: A5 80 LDA $80 EE/A36D: F0 03 BEQ $A372 EE/A36F: 9D FE 7F STA $7FFE,X EE/A372: A5 80 LDA $80 EE/A374: F0 03 BEQ $A379 EE/A376: 9D FF 7F STA $7FFF,X EE/A379: A5 80 LDA $80 EE/A37B: F0 03 BEQ $A380 EE/A37D: 9D 00 80 STA $8000,X EE/A380: A5 80 LDA $80 EE/A382: F0 03 BEQ $A387 EE/A384: 9D 01 80 STA $8001,X EE/A387: A5 80 LDA $80 EE/A389: F0 03 BEQ $A38E EE/A38B: 9D 02 80 STA $8002,X EE/A38E: A5 80 LDA $80 EE/A390: F0 03 BEQ $A395 EE/A392: 9D 03 80 STA $8003,X EE/A395: A5 80 LDA $80 EE/A397: F0 03 BEQ $A39C EE/A399: 9D 04 80 STA $8004,X EE/A39C: A5 80 LDA $80 EE/A39E: F0 03 BEQ $A3A3 EE/A3A0: 9D 05 80 STA $8005,X EE/A3A3: A5 80 LDA $80 EE/A3A5: F0 03 BEQ $A3AA EE/A3A7: 9D 06 80 STA $8006,X EE/A3AA: A5 80 LDA $80 EE/A3AC: F0 03 BEQ $A3B1 EE/A3AE: 9D 07 80 STA $8007,X EE/A3B1: C2 21 REP #$21 EE/A3B3: 8A TXA EE/A3B4: E9 FF 00 SBC #$00FF EE/A3B7: AA TAX EE/A3B8: 88 DEY EE/A3B9: D0 92 BNE $A34D EE/A3BB: AC 5C 0C LDY $0C5C EE/A3BE: C8 INY EE/A3BF: C8 INY EE/A3C0: C8 INY EE/A3C1: C8 INY EE/A3C2: C0 D0 05 CPY #$05D0 EE/A3C5: F0 03 BEQ $A3CA EE/A3C7: 4C 3A A3 JMP $A33A EE/A3CA: BE 02 00 LDX $0002,Y EE/A3CD: BD 00 08 LDA $0800,X ; pointer to tile graphics (first layer) EE/A3D0: 85 81 STA $81 EE/A3D2: BE 00 00 LDX $0000,Y EE/A3D5: D0 03 BNE $A3DA EE/A3D7: 4C 5F A4 JMP $A45F EE/A3DA: 8C 5C 0C STY $0C5C EE/A3DD: A0 10 00 LDY #$0010 EE/A3E0: E2 20 SEP #$20 EE/A3E2: A5 80 LDA $80 EE/A3E4: F0 03 BEQ $A3E9 EE/A3E6: 9D F9 7F STA $7FF9,X EE/A3E9: A5 80 LDA $80 EE/A3EB: F0 03 BEQ $A3F0 EE/A3ED: 9D FA 7F STA $7FFA,X EE/A3F0: A5 80 LDA $80 EE/A3F2: F0 03 BEQ $A3F7 EE/A3F4: 9D FB 7F STA $7FFB,X EE/A3F7: A5 80 LDA $80 EE/A3F9: F0 03 BEQ $A3FE EE/A3FB: 9D FC 7F STA $7FFC,X EE/A3FE: A5 80 LDA $80 EE/A400: F0 03 BEQ $A405 EE/A402: 9D FD 7F STA $7FFD,X EE/A405: A5 80 LDA $80 EE/A407: F0 03 BEQ $A40C EE/A409: 9D FE 7F STA $7FFE,X EE/A40C: A5 80 LDA $80 EE/A40E: F0 03 BEQ $A413 EE/A410: 9D FF 7F STA $7FFF,X EE/A413: A5 80 LDA $80 EE/A415: F0 03 BEQ $A41A EE/A417: 9D 00 80 STA $8000,X EE/A41A: A5 80 LDA $80 EE/A41C: F0 03 BEQ $A421 EE/A41E: 9D 01 80 STA $8001,X EE/A421: A5 80 LDA $80 EE/A423: F0 03 BEQ $A428 EE/A425: 9D 02 80 STA $8002,X EE/A428: A5 80 LDA $80 EE/A42A: F0 03 BEQ $A42F EE/A42C: 9D 03 80 STA $8003,X EE/A42F: A5 80 LDA $80 EE/A431: F0 03 BEQ $A436 EE/A433: 9D 04 80 STA $8004,X EE/A436: A5 80 LDA $80 EE/A438: F0 03 BEQ $A43D EE/A43A: 9D 05 80 STA $8005,X EE/A43D: A5 80 LDA $80 EE/A43F: F0 03 BEQ $A444 EE/A441: 9D 06 80 STA $8006,X EE/A444: A5 80 LDA $80 EE/A446: F0 03 BEQ $A44B EE/A448: 9D 07 80 STA $8007,X EE/A44B: A5 80 LDA $80 EE/A44D: F0 03 BEQ $A452 EE/A44F: 9D 08 80 STA $8008,X EE/A452: C2 21 REP #$21 EE/A454: 8A TXA EE/A455: E9 FF 00 SBC #$00FF EE/A458: AA TAX EE/A459: 88 DEY EE/A45A: D0 84 BNE $A3E0 EE/A45C: AC 5C 0C LDY $0C5C EE/A45F: C8 INY EE/A460: C8 INY EE/A461: C8 INY EE/A462: C8 INY EE/A463: C0 00 06 CPY #$0600 EE/A466: F0 03 BEQ $A46B EE/A468: 4C CA A3 JMP $A3CA EE/A46B: A9 01 00 LDA #$0001 EE/A46E: 8F 24 00 00 STA $000024 EE/A472: 2B PLD EE/A473: 28 PLP EE/A474: AB PLB EE/A475: 60 RTS ; [ Decompress ] ; ++$D2 = source ; ++$D5 = destination decode: EE/A476: 8B PHB EE/A477: 0B PHD EE/A478: A2 00 00 LDX #$0000 EE/A47B: DA PHX EE/A47C: 2B PLD EE/A47D: C2 20 REP #$20 EE/A47F: A7 D2 LDA [$D2] EE/A481: 85 DB STA $DB EE/A483: A5 D5 LDA $D5 EE/A485: 8F 81 21 00 STA $002181 EE/A489: E2 20 SEP #$20 EE/A48B: A5 D7 LDA $D7 EE/A48D: 29 01 AND #$01 EE/A48F: 8F 83 21 00 STA $002183 EE/A493: A9 01 LDA #$01 EE/A495: 85 DD STA $DD EE/A497: A0 02 00 LDY #$0002 EE/A49A: A9 7E LDA #$7E EE/A49C: 48 PHA EE/A49D: AB PLB EE/A49E: A2 00 F8 LDX #$F800 EE/A4A1: 7B TDC EE/A4A2: 9D 00 00 STA $0000,X EE/A4A5: E8 INX EE/A4A6: D0 FA BNE $A4A2 EE/A4A8: A2 DE FF LDX #$FFDE EE/A4AB: C6 DD DEC $DD EE/A4AD: D0 09 BNE $A4B8 EE/A4AF: A9 08 LDA #$08 EE/A4B1: 85 DD STA $DD EE/A4B3: B7 D2 LDA [$D2],Y EE/A4B5: 85 DE STA $DE EE/A4B7: C8 INY EE/A4B8: 46 DE LSR $DE EE/A4BA: 90 11 BCC $A4CD EE/A4BC: B7 D2 LDA [$D2],Y EE/A4BE: 8F 80 21 00 STA $002180 EE/A4C2: 9D 00 00 STA $0000,X EE/A4C5: E8 INX EE/A4C6: D0 37 BNE $A4FF EE/A4C8: A2 00 F8 LDX #$F800 EE/A4CB: 80 32 BRA $A4FF EE/A4CD: B7 D2 LDA [$D2],Y EE/A4CF: EB XBA EE/A4D0: C8 INY EE/A4D1: 84 D8 STY $D8 EE/A4D3: B7 D2 LDA [$D2],Y EE/A4D5: 4A LSR EE/A4D6: 4A LSR EE/A4D7: 4A LSR EE/A4D8: 18 CLC EE/A4D9: 69 03 ADC #$03 EE/A4DB: 85 DA STA $DA EE/A4DD: B7 D2 LDA [$D2],Y EE/A4DF: 09 F8 ORA #$F8 EE/A4E1: EB XBA EE/A4E2: A8 TAY EE/A4E3: B9 00 00 LDA $0000,Y EE/A4E6: 8F 80 21 00 STA $002180 EE/A4EA: 9D 00 00 STA $0000,X EE/A4ED: E8 INX EE/A4EE: D0 03 BNE $A4F3 EE/A4F0: A2 00 F8 LDX #$F800 EE/A4F3: C8 INY EE/A4F4: D0 03 BNE $A4F9 EE/A4F6: A0 00 F8 LDY #$F800 EE/A4F9: C6 DA DEC $DA EE/A4FB: D0 E6 BNE $A4E3 EE/A4FD: A4 D8 LDY $D8 EE/A4FF: C8 INY EE/A500: C4 DB CPY $DB EE/A502: D0 A7 BNE $A4AB EE/A504: 7B TDC EE/A505: EB XBA EE/A506: 2B PLD EE/A507: AB PLB EE/A508: 60 RTS ; [ World NMI (w/ vehicle) ] EE/A509: 08 PHP EE/A50A: 8B PHB EE/A50B: C2 20 REP #$20 EE/A50D: 48 PHA EE/A50E: C2 10 REP #$10 EE/A510: DA PHX EE/A511: 5A PHY EE/A512: 0B PHD EE/A513: E2 20 SEP #$20 EE/A515: 7B TDC EE/A516: 48 PHA EE/A517: AB PLB EE/A518: EE 24 00 INC $0024 EE/A51B: CD 10 42 CMP $4210 EE/A51E: 22 0C 00 C3 JSL $C3000C ; update game time EE/A522: A5 F7 LDA $F7 EE/A524: A2 00 6F LDX #$6F00 EE/A527: 22 00 00 C0 JSL $C00000 ; load character graphics (world map) EE/A52B: A6 44 LDX $44 EE/A52D: 30 26 BMI $A555 EE/A52F: 8E 16 21 STX $2116 EE/A532: A2 00 18 LDX #$1800 EE/A535: 8E 00 43 STX $4300 EE/A538: A2 50 6D LDX #$6D50 EE/A53B: 8E 02 43 STX $4302 EE/A53E: A9 7E LDA #$7E EE/A540: 8D 04 43 STA $4304 EE/A543: A2 00 01 LDX #$0100 EE/A546: 8E 05 43 STX $4305 EE/A549: A9 00 LDA #$00 EE/A54B: 8D 15 21 STA $2115 EE/A54E: A9 01 LDA #$01 EE/A550: 8D 0B 42 STA $420B EE/A553: 80 4F BRA $A5A4 EE/A555: A6 46 LDX $46 EE/A557: 30 4B BMI $A5A4 EE/A559: 8E 16 21 STX $2116 EE/A55C: A2 00 18 LDX #$1800 EE/A55F: 8E 00 43 STX $4300 EE/A562: A2 50 6E LDX #$6E50 EE/A565: 8E 02 43 STX $4302 EE/A568: A9 7E LDA #$7E EE/A56A: 8D 04 43 STA $4304 EE/A56D: A2 80 00 LDX #$0080 EE/A570: 8E 05 43 STX $4305 EE/A573: A9 02 LDA #$02 EE/A575: 8D 15 21 STA $2115 EE/A578: A9 01 LDA #$01 EE/A57A: 8D 0B 42 STA $420B EE/A57D: A6 46 LDX $46 EE/A57F: E8 INX EE/A580: 8E 16 21 STX $2116 EE/A583: A2 00 18 LDX #$1800 EE/A586: 8E 00 43 STX $4300 EE/A589: A2 D0 6E LDX #$6ED0 EE/A58C: 8E 02 43 STX $4302 EE/A58F: A9 7E LDA #$7E EE/A591: 8D 04 43 STA $4304 EE/A594: A2 80 00 LDX #$0080 EE/A597: 8E 05 43 STX $4305 EE/A59A: A9 02 LDA #$02 EE/A59C: 8D 15 21 STA $2115 EE/A59F: A9 01 LDA #$01 EE/A5A1: 8D 0B 42 STA $420B EE/A5A4: 9C 21 21 STZ $2121 EE/A5A7: A2 00 22 LDX #$2200 EE/A5AA: 8E 00 43 STX $4300 EE/A5AD: A2 00 E0 LDX #$E000 EE/A5B0: 8E 02 43 STX $4302 EE/A5B3: A9 7E LDA #$7E EE/A5B5: 8D 04 43 STA $4304 EE/A5B8: A2 00 02 LDX #$0200 EE/A5BB: 8E 05 43 STX $4305 EE/A5BE: A9 01 LDA #$01 EE/A5C0: 8D 0B 42 STA $420B EE/A5C3: C2 20 REP #$20 EE/A5C5: A5 34 LDA $34 EE/A5C7: 38 SEC EE/A5C8: E5 7B SBC $7B EE/A5CA: 29 FF 1F AND #$1FFF EE/A5CD: 8D 77 00 STA $0077 EE/A5D0: A5 38 LDA $38 EE/A5D2: 38 SEC EE/A5D3: E5 7D SBC $7D EE/A5D5: 29 FF 1F AND #$1FFF EE/A5D8: 8D 79 00 STA $0079 EE/A5DB: E2 20 SEP #$20 EE/A5DD: A5 77 LDA $77 EE/A5DF: 8D 0D 21 STA $210D EE/A5E2: A5 78 LDA $78 EE/A5E4: 8D 0D 21 STA $210D EE/A5E7: A5 79 LDA $79 EE/A5E9: 8D 0E 21 STA $210E EE/A5EC: A5 7A LDA $7A EE/A5EE: 8D 0E 21 STA $210E EE/A5F1: A5 34 LDA $34 EE/A5F3: 8D 1F 21 STA $211F EE/A5F6: A5 35 LDA $35 EE/A5F8: 8D 1F 21 STA $211F EE/A5FB: A5 38 LDA $38 EE/A5FD: 8D 20 21 STA $2120 EE/A600: A5 39 LDA $39 EE/A602: 8D 20 21 STA $2120 EE/A605: 9C 00 43 STZ $4300 EE/A608: A9 04 LDA #$04 EE/A60A: 8D 01 43 STA $4301 EE/A60D: A2 30 6B LDX #$6B30 EE/A610: 8E 02 43 STX $4302 EE/A613: A9 7E LDA #$7E EE/A615: 8D 04 43 STA $4304 EE/A618: A2 20 02 LDX #$0220 EE/A61B: 8E 05 43 STX $4305 EE/A61E: A9 01 LDA #$01 EE/A620: 8D 0B 42 STA $420B EE/A623: AF 64 1F 00 LDA $001F64 EE/A627: C9 02 CMP #$02 EE/A629: F0 49 BEQ $A674 EE/A62B: A9 80 LDA #$80 EE/A62D: 8D 15 21 STA $2115 EE/A630: A2 00 11 LDX #$1100 EE/A633: 8E 16 21 STX $2116 EE/A636: A2 00 19 LDX #$1900 EE/A639: 8E 00 43 STX $4300 EE/A63C: A2 50 B7 LDX #$B750 EE/A63F: 8E 02 43 STX $4302 EE/A642: A9 7E LDA #$7E EE/A644: 8D 04 43 STA $4304 EE/A647: A2 80 00 LDX #$0080 EE/A64A: 8E 05 43 STX $4305 EE/A64D: A9 01 LDA #$01 EE/A64F: 8D 0B 42 STA $420B EE/A652: A2 00 15 LDX #$1500 EE/A655: 8E 16 21 STX $2116 EE/A658: A2 00 19 LDX #$1900 EE/A65B: 8E 00 43 STX $4300 EE/A65E: A2 D0 B7 LDX #$B7D0 EE/A661: 8E 02 43 STX $4302 EE/A664: A9 7E LDA #$7E EE/A666: 8D 04 43 STA $4304 EE/A669: A2 80 00 LDX #$0080 EE/A66C: 8E 05 43 STX $4305 EE/A66F: A9 01 LDA #$01 EE/A671: 8D 0B 42 STA $420B EE/A674: A5 E7 LDA $E7 EE/A676: 89 01 BIT #$01 EE/A678: D0 06 BNE $A680 EE/A67A: A5 20 LDA $20 EE/A67C: C9 01 CMP #$01 EE/A67E: D0 00 BNE $A680 EE/A680: E2 20 SEP #$20 EE/A682: A5 23 LDA $23 EE/A684: D0 02 BNE $A688 EE/A686: A9 80 LDA #$80 EE/A688: 8D 00 21 STA $2100 EE/A68B: 64 FA STZ $FA EE/A68D: A5 E9 LDA $E9 EE/A68F: 89 01 BIT #$01 EE/A691: F0 06 BEQ $A699 EE/A693: A5 FA LDA $FA EE/A695: 09 04 ORA #$04 EE/A697: 85 FA STA $FA EE/A699: A5 E9 LDA $E9 EE/A69B: 89 02 BIT #$02 EE/A69D: F0 06 BEQ $A6A5 EE/A69F: A5 FA LDA $FA EE/A6A1: 09 08 ORA #$08 EE/A6A3: 85 FA STA $FA EE/A6A5: A9 F2 LDA #$F2 EE/A6A7: 05 FA ORA $FA EE/A6A9: 8D 0C 42 STA $420C EE/A6AC: 2B PLD EE/A6AD: C2 10 REP #$10 EE/A6AF: 7A PLY EE/A6B0: FA PLX EE/A6B1: C2 20 REP #$20 EE/A6B3: 68 PLA EE/A6B4: AB PLB EE/A6B5: 28 PLP EE/A6B6: 40 RTI ; [ World IRQ (airship) ] EE/A6B7: 08 PHP EE/A6B8: C2 20 REP #$20 EE/A6BA: 48 PHA EE/A6BB: 8B PHB EE/A6BC: E2 20 SEP #$20 EE/A6BE: 7B TDC EE/A6BF: 48 PHA EE/A6C0: AB PLB EE/A6C1: CD 11 42 CMP $4211 EE/A6C4: A9 07 LDA #$07 EE/A6C6: 8D 05 21 STA $2105 EE/A6C9: AB PLB EE/A6CA: C2 20 REP #$20 EE/A6CC: 68 PLA EE/A6CD: 28 PLP EE/A6CE: 40 RTI ; [ World IRQ (chocobo) ] EE/A6CF: 08 PHP EE/A6D0: C2 20 REP #$20 EE/A6D2: 48 PHA EE/A6D3: 8B PHB EE/A6D4: E2 20 SEP #$20 EE/A6D6: 7B TDC EE/A6D7: 48 PHA EE/A6D8: AB PLB EE/A6D9: CD 11 42 CMP $4211 EE/A6DC: AD 12 42 LDA $4212 EE/A6DF: 89 40 BIT #$40 EE/A6E1: D0 F9 BNE $A6DC EE/A6E3: CD 37 21 CMP $2137 EE/A6E6: AD 3D 21 LDA $213D EE/A6E9: CD 3D 21 CMP $213D EE/A6EC: C9 90 CMP #$90 EE/A6EE: B0 0C BCS $A6FC EE/A6F0: A9 9C LDA #$9C EE/A6F2: 8D 09 42 STA $4209 EE/A6F5: A9 07 LDA #$07 EE/A6F7: 8D 05 21 STA $2105 EE/A6FA: 80 05 BRA $A701 EE/A6FC: A9 63 LDA #$63 EE/A6FE: 8D 31 21 STA $2131 EE/A701: AB PLB EE/A702: C2 20 REP #$20 EE/A704: 68 PLA EE/A705: 28 PLP EE/A706: 40 RTI ; [ vector approach irq ] EE/A707: 08 PHP EE/A708: C2 20 REP #$20 EE/A70A: 48 PHA EE/A70B: E2 20 SEP #$20 EE/A70D: CF 11 42 00 CMP $004211 EE/A711: A9 07 LDA #$07 EE/A713: 8F 05 21 00 STA $002105 EE/A717: A9 02 LDA #$02 EE/A719: 8F 30 21 00 STA $002130 EE/A71D: A9 A3 LDA #$A3 EE/A71F: 8F 31 21 00 STA $002131 EE/A723: C2 20 REP #$20 EE/A725: 68 PLA EE/A726: 28 PLP EE/A727: 40 RTI ; [ World NMI (no vehicle) ] EE/A728: 08 PHP EE/A729: 8B PHB EE/A72A: C2 20 REP #$20 EE/A72C: 48 PHA EE/A72D: C2 10 REP #$10 EE/A72F: DA PHX EE/A730: 5A PHY EE/A731: 0B PHD EE/A732: E2 20 SEP #$20 EE/A734: 7B TDC EE/A735: 48 PHA EE/A736: AB PLB EE/A737: EE 24 00 INC $0024 EE/A73A: CD 10 42 CMP $4210 EE/A73D: 22 0C 00 C3 JSL $C3000C ; update game time EE/A741: A5 E8 LDA $E8 EE/A743: 89 20 BIT #$20 EE/A745: F0 03 BEQ $A74A EE/A747: 4C D2 A8 JMP $A8D2 EE/A74A: 89 80 BIT #$80 EE/A74C: F0 03 BEQ $A751 EE/A74E: 4C C7 A8 JMP $A8C7 EE/A751: A5 F7 LDA $F7 EE/A753: A2 00 6F LDX #$6F00 EE/A756: 22 00 00 C0 JSL $C00000 EE/A75A: A6 44 LDX $44 EE/A75C: 30 26 BMI $A784 EE/A75E: 8E 16 21 STX $2116 EE/A761: A2 00 18 LDX #$1800 EE/A764: 8E 00 43 STX $4300 EE/A767: A2 50 6D LDX #$6D50 EE/A76A: 8E 02 43 STX $4302 EE/A76D: A9 7E LDA #$7E EE/A76F: 8D 04 43 STA $4304 EE/A772: A2 00 01 LDX #$0100 EE/A775: 8E 05 43 STX $4305 EE/A778: A9 00 LDA #$00 EE/A77A: 8D 15 21 STA $2115 EE/A77D: A9 01 LDA #$01 EE/A77F: 8D 0B 42 STA $420B EE/A782: 80 4F BRA $A7D3 EE/A784: A6 46 LDX $46 EE/A786: 30 4B BMI $A7D3 EE/A788: 8E 16 21 STX $2116 EE/A78B: A2 00 18 LDX #$1800 EE/A78E: 8E 00 43 STX $4300 EE/A791: A2 50 6E LDX #$6E50 EE/A794: 8E 02 43 STX $4302 EE/A797: A9 7E LDA #$7E EE/A799: 8D 04 43 STA $4304 EE/A79C: A2 80 00 LDX #$0080 EE/A79F: 8E 05 43 STX $4305 EE/A7A2: A9 02 LDA #$02 EE/A7A4: 8D 15 21 STA $2115 EE/A7A7: A9 01 LDA #$01 EE/A7A9: 8D 0B 42 STA $420B EE/A7AC: A6 46 LDX $46 EE/A7AE: E8 INX EE/A7AF: 8E 16 21 STX $2116 EE/A7B2: A2 00 18 LDX #$1800 EE/A7B5: 8E 00 43 STX $4300 EE/A7B8: A2 D0 6E LDX #$6ED0 EE/A7BB: 8E 02 43 STX $4302 EE/A7BE: A9 7E LDA #$7E EE/A7C0: 8D 04 43 STA $4304 EE/A7C3: A2 80 00 LDX #$0080 EE/A7C6: 8E 05 43 STX $4305 EE/A7C9: A9 02 LDA #$02 EE/A7CB: 8D 15 21 STA $2115 EE/A7CE: A9 01 LDA #$01 EE/A7D0: 8D 0B 42 STA $420B EE/A7D3: 9C 21 21 STZ $2121 EE/A7D6: A2 00 22 LDX #$2200 EE/A7D9: 8E 00 43 STX $4300 EE/A7DC: A2 00 E0 LDX #$E000 EE/A7DF: 8E 02 43 STX $4302 EE/A7E2: A9 7E LDA #$7E EE/A7E4: 8D 04 43 STA $4304 EE/A7E7: A2 00 02 LDX #$0200 EE/A7EA: 8E 05 43 STX $4305 EE/A7ED: A9 01 LDA #$01 EE/A7EF: 8D 0B 42 STA $420B EE/A7F2: C2 20 REP #$20 EE/A7F4: A5 34 LDA $34 EE/A7F6: 18 CLC EE/A7F7: 69 08 00 ADC #$0008 EE/A7FA: 29 FF 0F AND #$0FFF EE/A7FD: 8D FA 00 STA $00FA EE/A800: A5 38 LDA $38 EE/A802: 38 SEC EE/A803: E9 02 00 SBC #$0002 EE/A806: 29 FF 0F AND #$0FFF EE/A809: 8D FC 00 STA $00FC EE/A80C: AD FA 00 LDA $00FA EE/A80F: 38 SEC EE/A810: E5 7B SBC $7B EE/A812: 29 FF 1F AND #$1FFF EE/A815: 8D 77 00 STA $0077 EE/A818: AD FC 00 LDA $00FC EE/A81B: 38 SEC EE/A81C: E5 7D SBC $7D EE/A81E: 29 FF 1F AND #$1FFF EE/A821: 8D 79 00 STA $0079 EE/A824: E2 20 SEP #$20 EE/A826: A5 77 LDA $77 EE/A828: 8D 0D 21 STA $210D EE/A82B: A5 78 LDA $78 EE/A82D: 8D 0D 21 STA $210D EE/A830: A5 79 LDA $79 EE/A832: 8D 0E 21 STA $210E EE/A835: A5 7A LDA $7A EE/A837: 8D 0E 21 STA $210E EE/A83A: AD FA 00 LDA $00FA EE/A83D: 8D 1F 21 STA $211F EE/A840: AD FB 00 LDA $00FB EE/A843: 8D 1F 21 STA $211F EE/A846: AD FC 00 LDA $00FC EE/A849: 8D 20 21 STA $2120 EE/A84C: AD FD 00 LDA $00FD EE/A84F: 8D 20 21 STA $2120 EE/A852: 9C 00 43 STZ $4300 EE/A855: A9 04 LDA #$04 EE/A857: 8D 01 43 STA $4301 EE/A85A: A2 30 6B LDX #$6B30 EE/A85D: 8E 02 43 STX $4302 EE/A860: A9 7E LDA #$7E EE/A862: 8D 04 43 STA $4304 EE/A865: A2 20 02 LDX #$0220 EE/A868: 8E 05 43 STX $4305 EE/A86B: A9 01 LDA #$01 EE/A86D: 8D 0B 42 STA $420B EE/A870: A9 80 LDA #$80 EE/A872: 8D 15 21 STA $2115 EE/A875: A2 00 11 LDX #$1100 EE/A878: 8E 16 21 STX $2116 EE/A87B: A2 00 19 LDX #$1900 EE/A87E: 8E 00 43 STX $4300 EE/A881: A2 50 B7 LDX #$B750 EE/A884: 8E 02 43 STX $4302 EE/A887: A9 7E LDA #$7E EE/A889: 8D 04 43 STA $4304 EE/A88C: A2 80 00 LDX #$0080 EE/A88F: 8E 05 43 STX $4305 EE/A892: A9 01 LDA #$01 EE/A894: 8D 0B 42 STA $420B EE/A897: A2 00 15 LDX #$1500 EE/A89A: 8E 16 21 STX $2116 EE/A89D: A2 00 19 LDX #$1900 EE/A8A0: 8E 00 43 STX $4300 EE/A8A3: A2 D0 B7 LDX #$B7D0 EE/A8A6: 8E 02 43 STX $4302 EE/A8A9: A9 7E LDA #$7E EE/A8AB: 8D 04 43 STA $4304 EE/A8AE: A2 80 00 LDX #$0080 EE/A8B1: 8E 05 43 STX $4305 EE/A8B4: A9 01 LDA #$01 EE/A8B6: 8D 0B 42 STA $420B EE/A8B9: A9 F0 LDA #$F0 EE/A8BB: 8D 0C 42 STA $420C EE/A8BE: A5 23 LDA $23 EE/A8C0: D0 02 BNE $A8C4 EE/A8C2: A9 80 LDA #$80 EE/A8C4: 8D 00 21 STA $2100 EE/A8C7: 2B PLD EE/A8C8: C2 10 REP #$10 EE/A8CA: 7A PLY EE/A8CB: FA PLX EE/A8CC: C2 20 REP #$20 EE/A8CE: 68 PLA EE/A8CF: AB PLB EE/A8D0: 28 PLP EE/A8D1: 40 RTI EE/A8D2: C2 20 REP #$20 EE/A8D4: A5 34 LDA $34 EE/A8D6: 18 CLC EE/A8D7: 69 08 00 ADC #$0008 EE/A8DA: 29 FF 0F AND #$0FFF EE/A8DD: 8D FA 00 STA $00FA EE/A8E0: A5 38 LDA $38 EE/A8E2: 38 SEC EE/A8E3: E9 02 00 SBC #$0002 EE/A8E6: 29 FF 0F AND #$0FFF EE/A8E9: 8D FC 00 STA $00FC EE/A8EC: AD FA 00 LDA $00FA EE/A8EF: 38 SEC EE/A8F0: E5 7B SBC $7B EE/A8F2: 29 FF 1F AND #$1FFF EE/A8F5: 8D 77 00 STA $0077 EE/A8F8: AD FC 00 LDA $00FC EE/A8FB: 38 SEC EE/A8FC: E5 7D SBC $7D EE/A8FE: 29 FF 1F AND #$1FFF EE/A901: 8D 79 00 STA $0079 EE/A904: E2 20 SEP #$20 EE/A906: A5 77 LDA $77 EE/A908: 8D 0D 21 STA $210D EE/A90B: A5 78 LDA $78 EE/A90D: 8D 0D 21 STA $210D EE/A910: A5 79 LDA $79 EE/A912: 8D 0E 21 STA $210E EE/A915: A5 7A LDA $7A EE/A917: 8D 0E 21 STA $210E EE/A91A: AD FA 00 LDA $00FA EE/A91D: 8D 1F 21 STA $211F EE/A920: AD FB 00 LDA $00FB EE/A923: 8D 1F 21 STA $211F EE/A926: AD FC 00 LDA $00FC EE/A929: 8D 20 21 STA $2120 EE/A92C: AD FD 00 LDA $00FD EE/A92F: 8D 20 21 STA $2120 EE/A932: A9 F0 LDA #$F0 EE/A934: 8D 0C 42 STA $420C EE/A937: 4C C7 A8 JMP $A8C7 ; [ World IRQ (no vehicle) ] EE/A93A: 08 PHP EE/A93B: C2 20 REP #$20 EE/A93D: 48 PHA EE/A93E: 8B PHB EE/A93F: E2 20 SEP #$20 EE/A941: 7B TDC EE/A942: 48 PHA EE/A943: AB PLB EE/A944: CD 11 42 CMP $4211 EE/A947: AB PLB EE/A948: C2 20 REP #$20 EE/A94A: 68 PLA EE/A94B: 28 PLP EE/A94C: 40 RTI ; [ Magitek Train Ride NMI ] EE/A94D: 08 PHP EE/A94E: 8B PHB EE/A94F: C2 20 REP #$20 EE/A951: 48 PHA EE/A952: C2 10 REP #$10 EE/A954: DA PHX EE/A955: 5A PHY EE/A956: 0B PHD EE/A957: A9 00 00 LDA #$0000 EE/A95A: 5B TCD EE/A95B: E2 20 SEP #$20 EE/A95D: 7B TDC EE/A95E: 48 PHA EE/A95F: AB PLB EE/A960: CD 10 42 CMP $4210 ; clear nmi EE/A963: EE FA 00 INC $00FA ; increment 4 frame counter EE/A966: 22 0C 00 C3 JSL $C3000C ; update game time EE/A96A: A9 02 LDA #$02 EE/A96C: 9C 1F 21 STZ $211F ; m7x = $0200 EE/A96F: 8D 1F 21 STA $211F EE/A972: A9 E0 LDA #$E0 EE/A974: 8D 20 21 STA $2120 ; m7y = $01E0 EE/A977: A9 01 LDA #$01 EE/A979: 8D 20 21 STA $2120 EE/A97C: A5 3D LDA $3D EE/A97E: 8D 1B 21 STA $211B ; m7a EE/A981: A5 3E LDA $3E EE/A983: 8D 1B 21 STA $211B EE/A986: A5 3F LDA $3F EE/A988: 8D 1C 21 STA $211C ; m7b EE/A98B: A5 40 LDA $40 EE/A98D: 8D 1C 21 STA $211C EE/A990: A5 41 LDA $41 EE/A992: 8D 1D 21 STA $211D ; m7c EE/A995: A5 42 LDA $42 EE/A997: 8D 1D 21 STA $211D EE/A99A: A5 3D LDA $3D EE/A99C: 8D 1E 21 STA $211E ; m7d EE/A99F: A5 3E LDA $3E EE/A9A1: 8D 1E 21 STA $211E EE/A9A4: A5 24 LDA $24 ; EE/A9A6: D0 38 BNE $A9E0 EE/A9A8: 9C 21 21 STZ $2121 EE/A9AB: A2 00 22 LDX #$2200 EE/A9AE: 8E 00 43 STX $4300 EE/A9B1: A2 00 E0 LDX #$E000 ; source = $7EE000 EE/A9B4: 8E 02 43 STX $4302 EE/A9B7: A9 7E LDA #$7E EE/A9B9: 8D 04 43 STA $4304 EE/A9BC: A2 00 02 LDX #$0200 ; size = $0200 EE/A9BF: 8E 05 43 STX $4305 EE/A9C2: A9 01 LDA #$01 EE/A9C4: 8D 0B 42 STA $420B EE/A9C7: E2 20 SEP #$20 EE/A9C9: A9 80 LDA #$80 EE/A9CB: 8D 0D 21 STA $210D ; bg1 horizontal scroll EE/A9CE: A9 01 LDA #$01 EE/A9D0: 8D 0D 21 STA $210D EE/A9D3: A9 70 LDA #$70 EE/A9D5: 8D 0E 21 STA $210E ; bg1 vertical scroll EE/A9D8: A9 01 LDA #$01 EE/A9DA: 8D 0E 21 STA $210E EE/A9DD: 4C 1C AA JMP $AA1C EE/A9E0: 9C 15 21 STZ $2115 EE/A9E3: A2 18 A6 LDX #$A618 ; source = $7FA618 (last $3E00 of graphics) EE/A9E6: A0 18 13 LDY #$1318 ; destination = $1318 (vram) EE/A9E9: E2 20 SEP #$20 EE/A9EB: 8C 16 21 STY $2116 EE/A9EE: 9C 00 43 STZ $4300 EE/A9F1: A9 18 LDA #$18 EE/A9F3: 8D 01 43 STA $4301 EE/A9F6: 8E 02 43 STX $4302 EE/A9F9: A9 7F LDA #$7F EE/A9FB: 8D 04 43 STA $4304 EE/A9FE: A9 50 LDA #$50 ; size = $0050 EE/AA00: 8D 05 43 STA $4305 EE/AA03: 9C 06 43 STZ $4306 EE/AA06: A9 01 LDA #$01 EE/AA08: 8D 0B 42 STA $420B EE/AA0B: C2 21 REP #$21 EE/AA0D: 98 TYA EE/AA0E: 69 80 00 ADC #$0080 EE/AA11: A8 TAY EE/AA12: 8A TXA EE/AA13: 69 00 01 ADC #$0100 EE/AA16: AA TAX EE/AA17: C9 18 E4 CMP #$E418 EE/AA1A: D0 CD BNE $A9E9 EE/AA1C: E2 20 SEP #$20 EE/AA1E: 64 FE STZ $FE ; EE/AA20: A9 10 LDA #$10 EE/AA22: 8D 09 42 STA $4209 ; vertical irq counter = 16 EE/AA25: A9 B1 LDA #$B1 EE/AA27: 8D 00 42 STA $4200 ; enable nmi, vertical irq, horizontal irq, and joypad EE/AA2A: 2B PLD EE/AA2B: C2 10 REP #$10 EE/AA2D: 7A PLY EE/AA2E: FA PLX EE/AA2F: C2 20 REP #$20 EE/AA31: 68 PLA EE/AA32: AB PLB EE/AA33: 28 PLP EE/AA34: 40 RTI ; [ Magitek Train Ride IRQ ] EE/AA35: 08 PHP EE/AA36: C2 30 REP #$30 EE/AA38: 48 PHA EE/AA39: DA PHX EE/AA3A: 5A PHY EE/AA3B: 8B PHB EE/AA3C: E2 20 SEP #$20 EE/AA3E: A9 00 LDA #$00 EE/AA40: 48 PHA EE/AA41: AB PLB EE/AA42: CD 11 42 CMP $4211 ; clear irq EE/AA45: AD FE 00 LDA $00FE EE/AA48: D0 10 BNE $AA5A EE/AA4A: EE FE 00 INC $00FE EE/AA4D: A9 D0 LDA #$D0 EE/AA4F: 8D 09 42 STA $4209 ; vertical irq counter = 208 EE/AA52: AD 23 00 LDA $0023 EE/AA55: 8D 00 21 STA $2100 ; set screen brightness EE/AA58: 80 4B BRA $AAA5 EE/AA5A: A9 81 LDA #$81 EE/AA5C: 8D 00 42 STA $4200 ; disable irq EE/AA5F: A9 80 LDA #$80 EE/AA61: 8D 00 21 STA $2100 ; screen off EE/AA64: AD 24 00 LDA $0024 EE/AA67: F0 3C BEQ $AAA5 ; return if not in vblank EE/AA69: 9C 15 21 STZ $2115 EE/AA6C: A2 18 96 LDX #$9618 ; source = $7F9618 (first $1000 bytes of graphics) EE/AA6F: A0 18 0B LDY #$0B18 ; destination = $0B18 (vram) EE/AA72: E2 20 SEP #$20 EE/AA74: 8C 16 21 STY $2116 EE/AA77: 9C 00 43 STZ $4300 EE/AA7A: A9 18 LDA #$18 EE/AA7C: 8D 01 43 STA $4301 EE/AA7F: 8E 02 43 STX $4302 EE/AA82: A9 7F LDA #$7F EE/AA84: 8D 04 43 STA $4304 EE/AA87: A9 50 LDA #$50 EE/AA89: 8D 05 43 STA $4305 ; size = $0050 EE/AA8C: 9C 06 43 STZ $4306 EE/AA8F: A9 01 LDA #$01 EE/AA91: 8D 0B 42 STA $420B EE/AA94: C2 21 REP #$21 EE/AA96: 98 TYA EE/AA97: 69 80 00 ADC #$0080 EE/AA9A: A8 TAY EE/AA9B: 8A TXA EE/AA9C: 69 00 01 ADC #$0100 EE/AA9F: AA TAX EE/AAA0: C9 18 A6 CMP #$A618 EE/AAA3: D0 CD BNE $AA72 EE/AAA5: AB PLB EE/AAA6: C2 30 REP #$30 EE/AAA8: 7A PLY EE/AAA9: FA PLX EE/AAAA: 68 PLA EE/AAAB: 28 PLP EE/AAAC: 40 RTI ; [ ] umianim: EE/AAAD: 08 PHP EE/AAAE: 8B PHB EE/AAAF: E2 20 SEP #$20 EE/AAB1: A9 7E LDA #$7E EE/AAB3: 48 PHA EE/AAB4: AB PLB EE/AAB5: A2 00 00 LDX #$0000 EE/AAB8: DA PHX EE/AAB9: A9 00 LDA #$00 EE/AABB: EB XBA EE/AABC: BD 50 B8 LDA $B850,X EE/AABF: 18 CLC EE/AAC0: 69 10 ADC #$10 EE/AAC2: 9D 50 B8 STA $B850,X EE/AAC5: 90 51 BCC $AB18 EE/AAC7: 8A TXA EE/AAC8: C9 08 CMP #$08 EE/AACA: 90 02 BCC $AACE EE/AACC: 69 07 ADC #$07 EE/AACE: 0A ASL EE/AACF: 0A ASL EE/AAD0: 0A ASL EE/AAD1: AA TAX EE/AAD2: BD 50 B7 LDA $B750,X EE/AAD5: 48 PHA EE/AAD6: C2 20 REP #$20 EE/AAD8: BD 51 B7 LDA $B751,X EE/AADB: 9D 50 B7 STA $B750,X EE/AADE: BD 53 B7 LDA $B753,X EE/AAE1: 9D 52 B7 STA $B752,X EE/AAE4: BD 55 B7 LDA $B755,X EE/AAE7: 9D 54 B7 STA $B754,X EE/AAEA: E2 20 SEP #$20 EE/AAEC: BD 57 B7 LDA $B757,X EE/AAEF: 9D 56 B7 STA $B756,X EE/AAF2: BD 90 B7 LDA $B790,X EE/AAF5: 9D 57 B7 STA $B757,X EE/AAF8: C2 20 REP #$20 EE/AAFA: BD 91 B7 LDA $B791,X EE/AAFD: 9D 90 B7 STA $B790,X EE/AB00: BD 93 B7 LDA $B793,X EE/AB03: 9D 92 B7 STA $B792,X EE/AB06: BD 95 B7 LDA $B795,X EE/AB09: 9D 94 B7 STA $B794,X EE/AB0C: E2 20 SEP #$20 EE/AB0E: BD 97 B7 LDA $B797,X EE/AB11: 9D 96 B7 STA $B796,X EE/AB14: 68 PLA EE/AB15: 9D 97 B7 STA $B797,X EE/AB18: FA PLX EE/AB19: E8 INX EE/AB1A: E0 10 00 CPX #$0010 EE/AB1D: D0 99 BNE $AAB8 EE/AB1F: C2 30 REP #$30 EE/AB21: AD 64 1F LDA $1F64 EE/AB24: 29 03 00 AND #$0003 EE/AB27: D0 21 BNE $AB4A EE/AB29: AD 60 B8 LDA $B860 EE/AB2C: 3A DEC EE/AB2D: 29 0F 00 AND #$000F EE/AB30: D0 15 BNE $AB47 EE/AB32: AE DA E0 LDX $E0DA EE/AB35: AD DE E0 LDA $E0DE EE/AB38: 8E DE E0 STX $E0DE EE/AB3B: AE DC E0 LDX $E0DC EE/AB3E: 8D DC E0 STA $E0DC EE/AB41: 8E DA E0 STX $E0DA EE/AB44: A9 10 00 LDA #$0010 EE/AB47: 8D 60 B8 STA $B860 EE/AB4A: AB PLB EE/AB4B: 28 PLP EE/AB4C: 60 RTS ; [ ending airship scene nmi ] EE/AB4D: 08 PHP EE/AB4E: 8B PHB EE/AB4F: C2 20 REP #$20 EE/AB51: 48 PHA EE/AB52: C2 10 REP #$10 EE/AB54: DA PHX EE/AB55: 5A PHY EE/AB56: 0B PHD EE/AB57: E2 20 SEP #$20 EE/AB59: 7B TDC EE/AB5A: 48 PHA EE/AB5B: AB PLB EE/AB5C: EE 24 00 INC $0024 EE/AB5F: CD 10 42 CMP $4210 EE/AB62: 9C 21 21 STZ $2121 EE/AB65: A2 00 22 LDX #$2200 EE/AB68: 8E 00 43 STX $4300 EE/AB6B: A2 00 E0 LDX #$E000 EE/AB6E: 8E 02 43 STX $4302 EE/AB71: A9 7E LDA #$7E EE/AB73: 8D 04 43 STA $4304 EE/AB76: A2 00 02 LDX #$0200 EE/AB79: 8E 05 43 STX $4305 EE/AB7C: A9 01 LDA #$01 EE/AB7E: 8D 0B 42 STA $420B EE/AB81: C2 20 REP #$20 EE/AB83: A5 34 LDA $34 EE/AB85: 38 SEC EE/AB86: E5 7B SBC $7B EE/AB88: 29 FF 1F AND #$1FFF EE/AB8B: 8D 77 00 STA $0077 EE/AB8E: A5 38 LDA $38 EE/AB90: 38 SEC EE/AB91: E5 7D SBC $7D EE/AB93: 29 FF 1F AND #$1FFF EE/AB96: 8D 79 00 STA $0079 EE/AB99: E2 20 SEP #$20 EE/AB9B: A5 77 LDA $77 EE/AB9D: 8D 0D 21 STA $210D EE/ABA0: A5 78 LDA $78 EE/ABA2: 8D 0D 21 STA $210D EE/ABA5: A5 79 LDA $79 EE/ABA7: 8D 0E 21 STA $210E EE/ABAA: A5 7A LDA $7A EE/ABAC: 8D 0E 21 STA $210E EE/ABAF: A5 34 LDA $34 EE/ABB1: 8D 1F 21 STA $211F EE/ABB4: A5 35 LDA $35 EE/ABB6: 8D 1F 21 STA $211F EE/ABB9: A5 38 LDA $38 EE/ABBB: 8D 20 21 STA $2120 EE/ABBE: A5 39 LDA $39 EE/ABC0: 8D 20 21 STA $2120 EE/ABC3: 9C 00 43 STZ $4300 EE/ABC6: A9 04 LDA #$04 EE/ABC8: 8D 01 43 STA $4301 EE/ABCB: A2 30 6B LDX #$6B30 EE/ABCE: 8E 02 43 STX $4302 EE/ABD1: A9 7E LDA #$7E EE/ABD3: 8D 04 43 STA $4304 EE/ABD6: A2 20 02 LDX #$0220 EE/ABD9: 8E 05 43 STX $4305 EE/ABDC: A9 01 LDA #$01 EE/ABDE: 8D 0B 42 STA $420B EE/ABE1: E2 20 SEP #$20 EE/ABE3: A5 23 LDA $23 EE/ABE5: D0 02 BNE $ABE9 EE/ABE7: A9 80 LDA #$80 EE/ABE9: 8D 00 21 STA $2100 EE/ABEC: 64 FA STZ $FA EE/ABEE: A5 E9 LDA $E9 EE/ABF0: 89 01 BIT #$01 EE/ABF2: F0 06 BEQ $ABFA EE/ABF4: A5 FA LDA $FA EE/ABF6: 09 04 ORA #$04 EE/ABF8: 85 FA STA $FA EE/ABFA: A5 E9 LDA $E9 EE/ABFC: 89 02 BIT #$02 EE/ABFE: F0 06 BEQ $AC06 EE/AC00: A5 FA LDA $FA EE/AC02: 09 08 ORA #$08 EE/AC04: 85 FA STA $FA EE/AC06: A9 F2 LDA #$F2 EE/AC08: 05 FA ORA $FA EE/AC0A: 8D 0C 42 STA $420C EE/AC0D: 2B PLD EE/AC0E: C2 10 REP #$10 EE/AC10: 7A PLY EE/AC11: FA PLX EE/AC12: C2 20 REP #$20 EE/AC14: 68 PLA EE/AC15: AB PLB EE/AC16: 28 PLP EE/AC17: 40 RTI ; [ ] circle: EE/AC18: 08 PHP EE/AC19: 8B PHB EE/AC1A: E2 30 SEP #$30 EE/AC1C: A5 59 LDA $59 EE/AC1E: F0 7E BEQ $AC9E EE/AC20: A9 7E LDA #$7E EE/AC22: 48 PHA EE/AC23: AB PLB EE/AC24: C2 20 REP #$20 EE/AC26: 64 6C STZ $6C EE/AC28: 64 6F STZ $6F EE/AC2A: A5 58 LDA $58 EE/AC2C: 85 6A STA $6A EE/AC2E: 64 6D STZ $6D EE/AC30: C9 00 80 CMP #$8000 EE/AC33: B0 07 BCS $AC3C EE/AC35: C9 00 40 CMP #$4000 EE/AC38: B0 1E BCS $AC58 EE/AC3A: 80 3E BRA $AC7A EE/AC3C: C2 21 REP #$21 EE/AC3E: A5 6D LDA $6D EE/AC40: 65 6B ADC $6B EE/AC42: 85 6D STA $6D EE/AC44: A5 6A LDA $6A EE/AC46: 38 SEC EE/AC47: E5 6E SBC $6E EE/AC49: 90 53 BCC $AC9E EE/AC4B: 85 6A STA $6A EE/AC4D: A6 6B LDX $6B EE/AC4F: E2 21 SEP #$21 EE/AC51: A5 6E LDA $6E EE/AC53: 9D 62 BC STA $BC62,X EE/AC56: 80 E4 BRA $AC3C EE/AC58: C2 21 REP #$21 EE/AC5A: A5 6B LDA $6B EE/AC5C: 0A ASL EE/AC5D: 65 6D ADC $6D EE/AC5F: 85 6D STA $6D EE/AC61: A5 6E LDA $6E EE/AC63: 0A ASL EE/AC64: 85 5A STA $5A EE/AC66: A5 6A LDA $6A EE/AC68: 38 SEC EE/AC69: E5 5A SBC $5A EE/AC6B: 90 31 BCC $AC9E EE/AC6D: 85 6A STA $6A EE/AC6F: A6 6B LDX $6B EE/AC71: E2 21 SEP #$21 EE/AC73: A5 6E LDA $6E EE/AC75: 9D 62 BC STA $BC62,X EE/AC78: 80 DE BRA $AC58 EE/AC7A: C2 21 REP #$21 EE/AC7C: A5 6B LDA $6B EE/AC7E: 0A ASL EE/AC7F: 0A ASL EE/AC80: 65 6D ADC $6D EE/AC82: 85 6D STA $6D EE/AC84: A5 6E LDA $6E EE/AC86: 0A ASL EE/AC87: 0A ASL EE/AC88: 85 5A STA $5A EE/AC8A: A5 6A LDA $6A EE/AC8C: 38 SEC EE/AC8D: E5 5A SBC $5A EE/AC8F: 90 0D BCC $AC9E EE/AC91: 85 6A STA $6A EE/AC93: A6 6B LDX $6B EE/AC95: E2 21 SEP #$21 EE/AC97: A5 6E LDA $6E EE/AC99: 9D 62 BC STA $BC62,X EE/AC9C: 80 DC BRA $AC7A EE/AC9E: AB PLB EE/AC9F: 28 PLP EE/ACA0: 60 RTS ; [ ] bomb: EE/ACA1: 08 PHP EE/ACA2: 8B PHB EE/ACA3: E2 20 SEP #$20 EE/ACA5: A9 7E LDA #$7E EE/ACA7: 48 PHA EE/ACA8: AB PLB EE/ACA9: C2 30 REP #$30 EE/ACAB: A5 5E LDA $5E EE/ACAD: D0 03 BNE $ACB2 EE/ACAF: 4C 3F AD JMP $AD3F EE/ACB2: A5 5A LDA $5A EE/ACB4: 0A ASL EE/ACB5: 0A ASL EE/ACB6: 18 CLC EE/ACB7: 65 5C ADC $5C EE/ACB9: A8 TAY EE/ACBA: A2 00 00 LDX #$0000 EE/ACBD: A5 5E LDA $5E EE/ACBF: C5 5A CMP $5A EE/ACC1: B0 06 BCS $ACC9 EE/ACC3: A5 5E LDA $5E EE/ACC5: 85 60 STA $60 EE/ACC7: 80 04 BRA $ACCD EE/ACC9: A5 5A LDA $5A EE/ACCB: 85 60 STA $60 EE/ACCD: E2 20 SEP #$20 EE/ACCF: A5 58 LDA $58 EE/ACD1: 38 SEC EE/ACD2: FD 62 BC SBC $BC62,X EE/ACD5: B0 02 BCS $ACD9 EE/ACD7: A9 00 LDA #$00 EE/ACD9: 99 0E 62 STA $620E,Y EE/ACDC: A5 58 LDA $58 EE/ACDE: 18 CLC EE/ACDF: 7D 62 BC ADC $BC62,X EE/ACE2: 90 02 BCC $ACE6 EE/ACE4: A9 FF LDA #$FF EE/ACE6: 99 0F 62 STA $620F,Y EE/ACE9: 88 DEY EE/ACEA: 88 DEY EE/ACEB: 88 DEY EE/ACEC: 88 DEY EE/ACED: E8 INX EE/ACEE: E4 60 CPX $60 EE/ACF0: D0 DB BNE $ACCD EE/ACF2: C2 20 REP #$20 EE/ACF4: A5 5A LDA $5A EE/ACF6: 0A ASL EE/ACF7: 0A ASL EE/ACF8: 18 CLC EE/ACF9: 65 5C ADC $5C EE/ACFB: A8 TAY EE/ACFC: A2 00 00 LDX #$0000 EE/ACFF: A9 E0 00 LDA #$00E0 EE/AD02: 38 SEC EE/AD03: E5 5A SBC $5A EE/AD05: 85 62 STA $62 EE/AD07: A5 5E LDA $5E EE/AD09: 4A LSR EE/AD0A: C5 62 CMP $62 EE/AD0C: B0 06 BCS $AD14 EE/AD0E: A5 5E LDA $5E EE/AD10: 85 60 STA $60 EE/AD12: 80 05 BRA $AD19 EE/AD14: A5 62 LDA $62 EE/AD16: 0A ASL EE/AD17: 85 60 STA $60 EE/AD19: E2 20 SEP #$20 EE/AD1B: A5 58 LDA $58 EE/AD1D: 38 SEC EE/AD1E: FD 62 BC SBC $BC62,X EE/AD21: B0 02 BCS $AD25 EE/AD23: A9 00 LDA #$00 EE/AD25: 99 0E 62 STA $620E,Y EE/AD28: A5 58 LDA $58 EE/AD2A: 18 CLC EE/AD2B: 7D 62 BC ADC $BC62,X EE/AD2E: 90 02 BCC $AD32 EE/AD30: A9 FF LDA #$FF EE/AD32: 99 0F 62 STA $620F,Y EE/AD35: C8 INY EE/AD36: C8 INY EE/AD37: C8 INY EE/AD38: C8 INY EE/AD39: E8 INX EE/AD3A: E8 INX EE/AD3B: E4 60 CPX $60 EE/AD3D: 90 DA BCC $AD19 EE/AD3F: AB PLB EE/AD40: 28 PLP EE/AD41: 60 RTS ; [ Copy Color Palettes to PPU ] ; ++$6A: source address colset: EE/AD42: 9C 21 21 STZ $2121 EE/AD45: A2 00 22 LDX #$2200 EE/AD48: 8E 00 43 STX $4300 EE/AD4B: A6 6A LDX $6A EE/AD4D: 8E 02 43 STX $4302 EE/AD50: A5 6C LDA $6C EE/AD52: 8D 04 43 STA $4304 EE/AD55: A2 00 02 LDX #$0200 ; size = $0200 EE/AD58: 8E 05 43 STX $4305 EE/AD5B: A9 01 LDA #$01 EE/AD5D: 8D 0B 42 STA $420B EE/AD60: 9C 21 21 STZ $2121 EE/AD63: A2 80 3B LDX #$3B80 EE/AD66: 8E 00 43 STX $4300 EE/AD69: A2 00 E0 LDX #$E000 ; destination = $7EE000 EE/AD6C: 8E 02 43 STX $4302 EE/AD6F: A9 7E LDA #$7E EE/AD71: 8D 04 43 STA $4304 EE/AD74: A2 00 02 LDX #$0200 ; size = $0200 EE/AD77: 8E 05 43 STX $4305 EE/AD7A: A9 01 LDA #$01 EE/AD7C: 8D 0B 42 STA $420B EE/AD7F: 60 RTS ; [ Copy Backdrop Graphics to VRAM ] bg2chrset: EE/AD80: A9 80 LDA #$80 EE/AD82: 8D 15 21 STA $2115 EE/AD85: A2 00 50 LDX #$5000 ; destination = $5000 (vram) EE/AD88: 8E 16 21 STX $2116 EE/AD8B: A2 01 18 LDX #$1801 EE/AD8E: 8E 00 43 STX $4300 EE/AD91: A2 00 20 LDX #$2000 ; source = $7E2000 EE/AD94: 8E 02 43 STX $4302 EE/AD97: A9 7E LDA #$7E EE/AD99: 8D 04 43 STA $4304 EE/AD9C: A2 00 20 LDX #$2000 ; size = $2000 EE/AD9F: 8E 05 43 STX $4305 EE/ADA2: A9 01 LDA #$01 EE/ADA4: 8D 0B 42 STA $420B ; enable dma EE/ADA7: 60 RTS ; [ Copy Backdrop Tile Formation to VRAM ] bg2scrset: EE/ADA8: A9 80 LDA #$80 EE/ADAA: 8D 15 21 STA $2115 EE/ADAD: A2 00 44 LDX #$4400 ; destination = $4400 (vram) EE/ADB0: 8E 16 21 STX $2116 EE/ADB3: A2 01 18 LDX #$1801 EE/ADB6: 8E 00 43 STX $4300 EE/ADB9: A2 00 20 LDX #$2000 ; source = $7E2000 EE/ADBC: 8E 02 43 STX $4302 EE/ADBF: A9 7E LDA #$7E EE/ADC1: 8D 04 43 STA $4304 EE/ADC4: A2 00 10 LDX #$1000 ; size = $1000 EE/ADC7: 8E 05 43 STX $4305 EE/ADCA: A9 01 LDA #$01 EE/ADCC: 8D 0B 42 STA $420B ; enable dma EE/ADCF: 60 RTS ; [ Copy Sprite Graphics to VRAM ] objchrset: EE/ADD0: A9 80 LDA #$80 EE/ADD2: 8D 15 21 STA $2115 EE/ADD5: A2 00 60 LDX #$6000 ; destination = $6000 (vram) EE/ADD8: 8E 16 21 STX $2116 EE/ADDB: A2 01 18 LDX #$1801 EE/ADDE: 8E 00 43 STX $4300 EE/ADE1: A2 00 20 LDX #$2000 ; source = $7E2000 EE/ADE4: 8E 02 43 STX $4302 EE/ADE7: A9 7E LDA #$7E EE/ADE9: 8D 04 43 STA $4304 EE/ADEC: A2 00 40 LDX #$4000 ; size = $4000 EE/ADEF: 8E 05 43 STX $4305 EE/ADF2: A9 01 LDA #$01 EE/ADF4: 8D 0B 42 STA $420B EE/ADF7: 60 RTS ; [ Init Magitek Train Ride Tile Map in VRAM ] beta: EE/ADF8: A9 80 LDA #$80 EE/ADFA: 8D 15 21 STA $2115 EE/ADFD: 9C 16 21 STZ $2116 EE/AE00: 9C 17 21 STZ $2117 EE/AE03: A0 00 00 LDY #$0000 EE/AE06: 84 58 STY $58 ; tile index EE/AE08: A2 08 19 LDX #$1908 EE/AE0B: 8E 00 43 STX $4300 EE/AE0E: A2 58 00 LDX #$0058 ; source = $000058 EE/AE11: 8E 02 43 STX $4302 EE/AE14: 9C 04 43 STZ $4304 EE/AE17: A2 40 00 LDX #$0040 ; size = $0040 EE/AE1A: 8E 05 43 STX $4305 EE/AE1D: A9 01 LDA #$01 EE/AE1F: 8D 0B 42 STA $420B EE/AE22: C8 INY ; next tile EE/AE23: C0 00 01 CPY #$0100 EE/AE26: D0 DE BNE $AE06 EE/AE28: 60 RTS ; [ Copy Pointers to Magitek Train Ride Tiles to VRAM ] ; ++$6A: source address vsptblset: EE/AE29: A9 80 LDA #$80 EE/AE2B: 8D 15 21 STA $2115 EE/AE2E: A2 00 00 LDX #$0000 ; destination = $0000 (vram) EE/AE31: 8E 16 21 STX $2116 EE/AE34: A2 00 19 LDX #$1900 EE/AE37: 8E 00 43 STX $4300 EE/AE3A: A6 6A LDX $6A EE/AE3C: 8E 02 43 STX $4302 EE/AE3F: A5 6C LDA $6C EE/AE41: 8D 04 43 STA $4304 EE/AE44: A2 B8 02 LDX #$02B8 ; size = $02B8 EE/AE47: 8E 05 43 STX $4305 EE/AE4A: A9 01 LDA #$01 EE/AE4C: 8D 0B 42 STA $420B EE/AE4F: A2 00 00 LDX #$0000 ; source = $0000 (vram) EE/AE52: 8E 16 21 STX $2116 EE/AE55: CD 3A 21 CMP $213A EE/AE58: A2 80 3A LDX #$3A80 EE/AE5B: 8E 00 43 STX $4300 EE/AE5E: A2 00 08 LDX #$0800 ; destination = $7F0800 EE/AE61: 8E 02 43 STX $4302 EE/AE64: A9 7F LDA #$7F EE/AE66: 8D 04 43 STA $4304 EE/AE69: A2 B8 02 LDX #$02B8 ; size = $02B8 EE/AE6C: 8E 05 43 STX $4305 EE/AE6F: A9 01 LDA #$01 EE/AE71: 8D 0B 42 STA $420B EE/AE74: 60 RTS ; [ ] umiset: EE/AE75: A9 80 LDA #$80 EE/AE77: 8D 15 21 STA $2115 EE/AE7A: A2 00 11 LDX #$1100 EE/AE7D: 8E 16 21 STX $2116 EE/AE80: CD 3A 21 CMP $213A EE/AE83: A2 80 3A LDX #$3A80 EE/AE86: 8E 00 43 STX $4300 EE/AE89: A2 50 B7 LDX #$B750 EE/AE8C: 8E 02 43 STX $4302 EE/AE8F: A9 7E LDA #$7E EE/AE91: 8D 04 43 STA $4304 EE/AE94: A2 80 00 LDX #$0080 EE/AE97: 8E 05 43 STX $4305 EE/AE9A: A9 01 LDA #$01 EE/AE9C: 8D 0B 42 STA $420B EE/AE9F: A2 00 15 LDX #$1500 EE/AEA2: 8E 16 21 STX $2116 EE/AEA5: CD 3A 21 CMP $213A EE/AEA8: A2 80 3A LDX #$3A80 EE/AEAB: 8E 00 43 STX $4300 EE/AEAE: A2 D0 B7 LDX #$B7D0 EE/AEB1: 8E 02 43 STX $4302 EE/AEB4: A9 7E LDA #$7E EE/AEB6: 8D 04 43 STA $4304 EE/AEB9: A2 80 00 LDX #$0080 EE/AEBC: 8E 05 43 STX $4305 EE/AEBF: A9 01 LDA #$01 EE/AEC1: 8D 0B 42 STA $420B EE/AEC4: C2 20 REP #$20 EE/AEC6: A9 80 00 LDA #$0080 EE/AEC9: 8F 50 B8 7E STA $7EB850 EE/AECD: A9 40 10 LDA #$1040 EE/AED0: 8F 52 B8 7E STA $7EB852 EE/AED4: A9 A0 60 LDA #$60A0 EE/AED7: 8F 54 B8 7E STA $7EB854 EE/AEDB: A9 30 B0 LDA #$B030 EE/AEDE: 8F 56 B8 7E STA $7EB856 EE/AEE2: A9 F0 20 LDA #$20F0 EE/AEE5: 8F 58 B8 7E STA $7EB858 EE/AEE9: A9 70 C0 LDA #$C070 EE/AEEC: 8F 5A B8 7E STA $7EB85A EE/AEF0: A9 D0 50 LDA #$50D0 EE/AEF3: 8F 5C B8 7E STA $7EB85C EE/AEF7: A9 90 E0 LDA #$E090 EE/AEFA: 8F 5E B8 7E STA $7EB85E EE/AEFE: E2 20 SEP #$20 EE/AF00: 60 RTS