[1F 61] - Supreme Lord of Nightmares... the start-prepared-movements-code. Incomplete. References a LOT of text box related stuff... :P C1/84EC: 20 D0 02 JSR $02D0 C1/02D0: C2 31 REP #$31 Flags. C1/02D2: 9C 41 96 STZ $9641 7E9641 = 0. C1/02D5: 22 CA E4 C3 JSR $C3E4CA C3/E4CA: C2 31 REP #$31 C3/E4CC: E2 20 SEP #$20 C3/E4CE: 9C 22 96 STZ $9622 7E9622 = 0; C3/E4D1: C2 20 REP #$20 C3/E4D3: 6B RTL C1/02D9: 22 D5 2D C1 JSR $C12DD5 C1/2DD5: C2 31 REP #$31 C1/2DD7: 22 9A 8E C0 JSR $C08E9A C0/8E9A: 08 PHP This mess tweaks $0024 and $0026. To what end? C0/8E9B: C2 20 REP #$20 C0/8E9D: AD 24 00 LDA $0024 C0/8EA0: E2 20 SEP #$20 C0/8EA2: EB XBA C0/8EA3: AD 26 00 LDA $0026 A = <$0024><$0026> C0/8EA6: C2 20 REP #$20 C0/8EA8: 8F 02 42 00 STA $004202 C0/8EAC: 18 CLC C0/8EAD: 69 6D 00 ADC #$006D C0/8EB0: 8D 26 00 STA $0026 Add 0x6D to <$0024><$0026>, store back to $0026. C0/8EB3: AF 16 42 00 LDA $004216 Retrieve multiplication result. C0/8EB7: 6A ROR Divide by 4; lowest two bits end up in carry/highest C0/8EB8: 6A ROR C0/8EB9: 48 PHA Store this division C0/8EBA: 29 03 00 AND #$0003 Ensure lowest two bits are on. C0/8EBD: 18 CLC C0/8EBE: 6D 24 00 ADC $0024 Add $0024. C0/8EC1: 6A ROR Divide by two; lowest bit ends up in carry. C0/8EC2: 90 03 BCC $8EC7 If the number before division by two was even, skip ahead. C0/8EC4: 09 00 80 ORA #$8000 If the number before division by two was odd, turn on bit 15 (negative?). C0/8EC7: 8D 24 00 STA $0024 Store to $0024. C0/8ECA: 68 PLA A = multiplication/division from earlier. C0/8ECB: 6A ROR Divide by four again (lowest two bits to carry/highest as before) C0/8ECC: 6A ROR C0/8ECD: 29 FF 00 AND #$00FF Truncate high order. C0/8ED0: 28 PLP C0/8ED1: 6B RTL C1/2DDB: AD 8C 96 LDA $968C C1/2DDE: 29 FF 00 AND #$00FF C1/2DE1: F0 07 BEQ $2DEA If 7E968C is zero, continue. C1/2DE3: E2 20 SEP #$20 Else, zero it and return. C1/2DE5: 9C 8C 96 STZ $968C C1/2DE8: 80 55 BRA $2E3F C1/2DEA: AD 22 96 LDA $9622 If 7E9622 is zero, continue. C1/2DED: 29 FF 00 AND #$00FF Else, return. C1/2DF0: D0 4D BNE $2E3F C1/2DF2: AD 23 96 LDA $9623 7E9623 case. C1/2DF5: 29 FF 00 AND #$00FF C1/2DF8: D0 11 BNE $2E0B C1/2DFA: AD E0 88 LDA $88E0 7E9623 zero case. C1/2DFD: C9 FF FF CMP #$FFFF C1/2E00: F0 12 BEQ $2E14 If 7E88E0 is 0xFFFF, go to 2E14. C1/2E02: AD E2 88 LDA $88E2 Else, A = 7E88E2, JSR, and go to 2E14. C1/2E05: 22 AF 07 C1 JSR $C107AF C1/07AF: C2 31 REP #$31 Flags and direct page. C1/07B1: 0B PHD C1/07B2: 48 PHA C1/07B3: 7B TDC C1/07B4: 69 DE FF ADC #$FFDE C1/07B7: 5B TCD C1/07B8: 68 PLA C1/07B9: 85 20 STA $20 A, $20 = 7E88E2 C1/07BB: A0 52 00 LDY #$0052 C1/07BE: 22 F7 8F C0 JSR $C08FF7 C1/07C2: A8 TAY Y = (7E88E2 * 0x52) C1/07C3: B9 85 86 LDA $8685,Y C1/07C6: 85 1E STA $1E $1E = unknown part of window stats table (root + 0x35, two bytes) C1/07C8: B9 56 86 LDA $8656,Y C1/07CB: 0A ASL C1/07CC: 85 02 STA $02 $02 = (2 * Text box's top left X coordinate) C1/07CE: B9 58 86 LDA $8658,Y C1/07D1: 0A ASL C1/07D2: 0A ASL C1/07D3: 0A ASL C1/07D4: 0A ASL C1/07D5: 0A ASL C1/07D6: 0A ASL C1/07D7: 18 CLC C1/07D8: 65 02 ADC $02 A = $02 + (64 * Text box's top left Y coordinate) C1/07DA: 18 CLC TBTL#C = Text box's top left # coordinate. C1/07DB: 69 FE 7D ADC #$7DFE C1/07DE: AA TAX X = (2 * TBTLXC) + (64 * TBTLYC) + 0x7DFE C1/07DF: B9 5A 86 LDA $865A,Y C1/07E2: 85 04 STA $04 C1/07E4: 85 1C STA $1C $04, 1C = Text box width. C1/07E6: B9 5C 86 LDA $865C,Y C1/07E9: 85 1A STA $1A $1A = Text box height. C1/07EB: BD 00 00 LDA $0000,X A = value at (2 * TBTLXC) + (64 * TBTLYC) + 0x7DFE C1/07EE: F0 05 BEQ $07F5 C1/07F0: C9 10 3C CMP #$3C10 Nonzero case continued below. C1/07F3: D0 0D BNE $0802 C1/07F5: A9 10 3C LDA #$3C10 Zero and 0x3C10 case C1/07F8: 9D 00 00 STA $0000,X Store 0x3C10 to (2 * TBTLXC) + (64 * TBTLYC) + 0x7DFE C1/07FB: 9B TXY C1/07FC: C8 INY C1/07FD: C8 INY C1/07FE: 84 18 STY $18 Y, $18 = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E00 C1/0800: 80 0B BRA $080D C1/0802: A9 13 3C LDA #$3C13 Nonzero case continued. C1/0805: 9D 00 00 STA $0000,X Store 0x3C13 to (2 * TBTLXC) + (64 * TBTLYC) + 0x7DFE. C1/0808: 9B TXY C1/0809: C8 INY C1/080A: C8 INY C1/080B: 84 18 STY $18 Y, $18 = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E00 C1/080D: A5 20 LDA $20 Common code. A = 7E88E2. C1/080F: A0 52 00 LDY #$0052 C1/0812: 22 F7 8F C0 JSR $C08FF7 C1/0816: 85 16 STA $16 C1/0818: AA TAX X, $16 = (7E88E2 * 0x52) C1/0819: E2 20 SEP #$20 C1/081B: BD 8B 86 LDA $868B,X C1/081E: 85 00 STA $00 $00 = unknown part of window stats table (root + 0x3B, one byte) C1/0820: C2 20 REP #$20 C1/0822: A5 00 LDA $00 C1/0824: 29 FF 00 AND #$00FF C1/0827: D0 03 BNE $082C C1/0829: 4C B8 08 JMP $08B8 If the unknown part is zero, skip WAY ahead. Look for --- JUMP1 --- C1/082C: A5 16 LDA $16 C1/082E: 18 CLC C1/082F: 69 8C 86 ADC #$868C C1/0832: 85 14 STA $14 $14 = 0x868C + (7E88E2 * 0x52) C1/0834: A5 00 LDA $00 A = unknown part of window stats table (root + 0x3B, one byte) C1/0836: 29 FF 00 AND #$00FF C1/0839: 3A DEC Subtract 1, multiply by 16. C1/083A: 0A ASL C1/083B: 0A ASL C1/083C: 0A ASL C1/083D: 0A ASL C1/083E: 18 CLC C1/083F: 69 E0 02 ADC #$02E0 C1/0842: 85 02 STA $02 $02 = 0x2E0 + (((root + 0x3B unknown) - 1) * 16) C1/0844: A9 16 3C LDA #$3C16 C1/0847: A4 18 LDY $18 Y = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E00 C1/0849: 99 00 00 STA $0000,Y Store 0x3C16 at the address in Y. C1/084C: BB TYX C1/084D: E8 INX C1/084E: E8 INX C1/084F: 86 18 STX $18 X, $18 = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E02 C1/0851: A5 04 LDA $04 C1/0853: 3A DEC C1/0854: 85 04 STA $04 Decrement $04 (text box width), store to $04 and $12. C1/0856: 85 12 STA $12 C1/0858: A5 14 LDA $14 C1/085A: 85 06 STA $06 $06 = 0x868C + (7E88E2 * 0x52) C1/085C: 8B PHB C1/085D: E2 20 SEP #$20 C1/085F: 68 PLA C1/0860: 85 08 STA $08 $08 = eight-bit contents of data bank register (7E?). C1/0862: 64 09 STZ $09 C1/0864: C2 20 REP #$20 C1/0866: A5 06 LDA $06 C1/0868: 85 0E STA $0E C1/086A: A5 08 LDA $08 C1/086C: 85 10 STA $10 Copy $06+08 to $0E+10. C1/086E: 22 22 8F C0 JSR $C08F22 C0/8F22: E2 30 SEP #$30 C0/8F24: A0 FF LDY #$FF C0/8F26: C8 INY C0/8F27: B7 0E LDA [$0E],Y C0/8F29: D0 FB BNE $8F26 C0/8F2B: C2 30 REP #$30 C0/8F2D: 98 TYA A = Value to add to the $0E+10 address to get the nearest 0 after $0E+10. C0/8F2E: 6B RTL C1/0872: 85 04 STA $04 $04 = A (see above) C1/0874: 0A ASL C1/0875: 65 04 ADC $04 C1/0877: 0A ASL C1/0878: 18 CLC C1/0879: 69 07 00 ADC #$0007 A = (6 * $04) + 0x7 C1/087C: 4A LSR C1/087D: 4A LSR C1/087E: 4A LSR C1/087F: 85 14 STA $14 $14 = ((6 * $04) + 0x7) / 8 C1/0881: 80 1F BRA $08A2 Start of a loop, go to 08A2. C1/0883: A5 02 LDA $02 A = 0x2E0 + (((root + 0x3B unknown) - 1) * 16) + loopvarA C1/0885: 18 CLC C1/0886: 69 00 20 ADC #$2000 C1/0889: A6 18 LDX $18 A = 0x22E0 + (((root + 0x3B unknown) - 1) * 16) + loopvarA C1/088B: 9D 00 00 STA $0000,X Store A at (2 * TBTLXC) + (64 * TBTLYC) + 0x7E02 + loopvarX C1/088E: E6 02 INC $02 Increment $02 (increases loopvarA). C1/0890: E8 INX C1/0891: E8 INX C1/0892: 86 18 STX $18 $18 += 2 (increases loopvarX by 2). C1/0894: A5 12 LDA $12 A = Text box width. C1/0896: 85 04 STA $04 C1/0898: 3A DEC C1/0899: 85 04 STA $04 C1/089B: 85 12 STA $12 $04, $12 = Decremented text box width. C1/089D: A5 14 LDA $14 C1/089F: 3A DEC C1/08A0: 85 14 STA $14 Decrement $14 C1/08A2: D0 DF BNE $0883 While A ($14) is nonzero, loop. C1/08A4: A9 16 7C LDA #$7C16 C1/08A7: A6 18 LDX $18 X = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E02 + (2 * prev_loop_iterations) C1/08A9: 9D 00 00 STA $0000,X Store 0x7C16 at the address held in X. C1/08AC: 9B TXY C1/08AD: C8 INY C1/08AE: C8 INY C1/08AF: 84 18 STY $18 Y, $18 = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E04 + (2 * prev_loop_iterations) C1/08B1: A5 12 LDA $12 C1/08B3: 85 04 STA $04 C1/08B5: 3A DEC C1/08B6: 85 04 STA $04 $04 = text box width (one less than $12's width reading) C1/08B8: A5 20 LDA $20 --- JUMP1 --- C1/08BA: A0 52 00 LDY #$0052 C1/08BD: 22 F7 8F C0 JSR $C08FF7 C1/08C1: AA TAX X = (7E88E2 * 0x52) C1/08C2: BD 54 86 LDA $8654,X A = Window entry in 7E88E4 for current window. C1/08C5: CD 7A 5E CMP $5E7A Compare A to 7E5E7A. C1/08C8: D0 10 BNE $08DA C1/08CA: AD 7C 5E LDA $5E7C A = 7E5E7A case C1/08CD: C9 FF FF CMP #$FFFF Check 7E5E7C for 0xFFFF. C1/08D0: F0 08 BEQ $08DA C1/08D2: A5 04 LDA $04 If not equal, subtract 4 and store back. C1/08D4: 38 SEC C1/08D5: E9 04 00 SBC #$0004 C1/08D8: 85 04 STA $04 C1/08DA: A6 04 LDX $04 A != 7E5E7A case C1/08DC: 80 0D BRA $08EB Start of a loop; X = text box width (lower value). C1/08DE: A9 11 3C LDA #$3C11 C1/08E1: A4 18 LDY $18 Y = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E04 + (2 * prev_loop_iterations) C1/08E3: 99 00 00 STA $0000,Y Store 0x3C11 at the address held in Y. C1/08E6: C8 INY C1/08E7: C8 INY C1/08E8: 84 18 STY $18 $18 = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E06 + (2 * prev_loop_iterations) C1/08EA: CA DEX Decrement X (text box width - lower value). C1/08EB: D0 F1 BNE $08DE While nonzero, loop. C1/08ED: A5 20 LDA $20 C1/08EF: A0 52 00 LDY #$0052 C1/08F2: 22 F7 8F C0 JSR $C08FF7 C1/08F6: AA TAX X = (7E88E2 * 0x52) C1/08F7: BD 54 86 LDA $8654,X A = Window entry in 7E88E4 for current window. C1/08FA: CD 7A 5E CMP $5E7A Compare A to 7E5E7A. Again. C1/08FD: D0 42 BNE $0941 C1/08FF: AD 7C 5E LDA $5E7C A = 7E5E7C case C1/0902: C9 FF FF CMP #$FFFF Check 7E5E7C for 0xFFFF. C1/0905: F0 3A BEQ $0941 C1/0907: A9 3C E4 LDA #$E43C If 7E5E7A is equal to A and 7E5E7C isn't 0xFFFF... C1/090A: 85 0A STA $0A ...load a pointer. C1/090C: A9 C3 00 LDA #$00C3 C1/090F: 85 0C STA $0C C1/0911: AD 7C 5E LDA $5E7C C1/0914: 0A ASL C1/0915: 0A ASL C1/0916: 18 CLC C1/0917: 65 0A ADC $0A C1/0919: 85 0A STA $0A $0A+0C = C35E7C + (4 * 7E5E7C). C1/091B: A0 02 00 LDY #$0002 C1/091E: B7 0A LDA [$0A],Y C1/0920: A8 TAY C1/0921: A7 0A LDA [$0A] C1/0923: 85 06 STA $06 C1/0925: 84 08 STY $08 $06+08 = values at C35E7C + (4 * 7E5E7C); a pointer load. C1/0927: A2 00 00 LDX #$0000 C1/092A: 80 10 BRA $093C X = 0, start of a loop. C1/092C: A7 06 LDA [$06] A = two bytes from the address held in $06+08. C1/092E: A4 18 LDY $18 Y = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E06 + (2 * prev_loop_iterations) C1/0930: 99 00 00 STA $0000,Y Store A to the address held in Y. C1/0933: E6 06 INC $06 C1/0935: E6 06 INC $06 C1/0937: C8 INY C1/0938: C8 INY C1/0939: 84 18 STY $18 C1/093B: E8 INX C1/093C: E0 04 00 CPX #$0004 While X < 4, loop. C1/093F: 90 EB BCC $092C This loop gets eight bytes from the address at C35E7C + (4 * 7E5E7C). C1/0941: A4 18 LDY $18 --- A != 7E5E7A, 7E5E7C = 0xFFFF, and loop end cases. --- C1/0943: B9 00 00 LDA $0000,Y A = value at address held in Y. C1/0946: F0 05 BEQ $094D C1/0948: C9 10 7C CMP #$7C10 C1/094B: D0 0D BNE $095A C1/094D: A9 10 7C LDA #$7C10 0/0x7C10 case. Store 0x7C10 to the address held in Y. C1/0950: 99 00 00 STA $0000,Y C1/0953: 98 TYA C1/0954: 1A INC C1/0955: 1A INC A = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E08 + (2 * prev_loop_iterations)? C1/0956: 85 20 STA $20 $20 = A (hideousness above) C1/0958: 80 0B BRA $0965 C1/095A: A9 13 7C LDA #$7C13 Nonzero/Non-0x7C10 case. Store 0x7C13 to the address held in Y. C1/095D: 99 00 00 STA $0000,Y C1/0960: 98 TYA C1/0961: 1A INC C1/0962: 1A INC A = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E08 + (2 * prev_loop_iterations)? C1/0963: 85 20 STA $20 $20 = A (hideousness above) C1/0965: A9 20 00 LDA #$0020 Common code. A = 0x20. C1/0968: 38 SEC C1/0969: E5 1C SBC $1C C1/096B: 3A DEC C1/096C: 3A DEC C1/096D: 0A ASL A = 2 * (0x1E - text box width higher reading) C1/096E: 85 02 STA $02 C1/0970: A5 20 LDA $20 C1/0972: 18 CLC C1/0973: 65 02 ADC $02 C1/0975: AA TAX X = (2 * TBTLXC) + (64 * TBTLYC) + 0x7E08 + C1/0976: A4 1A LDY $1A (2 * prev_loop_iterations) + (2 * (0x1E - text box width higher reading))? C1/0978: 80 41 BRA $09BB Y = Text box height. Loop starts here. C1/097A: A9 12 3C LDA #$3C12 C1/097D: 9D 00 00 STA $0000,X === Screw it, this is hideous and nonsensical. Return with C1/0980: E8 INX === greater WRAM knowledge and try again later. Or if you C1/0981: E8 INX === feel like misery: this loop is where to begin. I'm going C1/0982: A5 1C LDA $1C === to continue documenting later portions of this code. C1/0984: 85 18 STA $18 C1/0986: 80 14 BRA $099C C1/0988: B2 1E LDA ($1E) C1/098A: 18 CLC C1/098B: 69 00 20 ADC #$2000 C1/098E: 9D 00 00 STA $0000,X C1/0991: E6 1E INC $1E C1/0993: E6 1E INC $1E C1/0995: E8 INX C1/0996: E8 INX C1/0997: A5 18 LDA $18 C1/0999: 3A DEC C1/099A: 85 18 STA $18 C1/099C: D0 EA BNE $0988 C1/099E: A9 12 7C LDA #$7C12 C1/09A1: 9D 00 00 STA $0000,X C1/09A4: 8A TXA C1/09A5: 1A INC C1/09A6: 1A INC C1/09A7: 85 16 STA $16 C1/09A9: A9 20 00 LDA #$0020 C1/09AC: 38 SEC C1/09AD: E5 1C SBC $1C C1/09AF: 3A DEC C1/09B0: 3A DEC C1/09B1: 0A ASL C1/09B2: 85 02 STA $02 C1/09B4: A5 16 LDA $16 C1/09B6: 18 CLC C1/09B7: 65 02 ADC $02 C1/09B9: AA TAX C1/09BA: 88 DEY C1/09BB: D0 BD BNE $097A C1/09BD: BD 00 00 LDA $0000,X C1/09C0: F0 05 BEQ $09C7 C1/09C2: C9 10 BC CMP #$BC10 C1/09C5: D0 0B BNE $09D2 C1/09C7: A9 10 BC LDA #$BC10 C1/09CA: 9D 00 00 STA $0000,X C1/09CD: 9B TXY C1/09CE: C8 INY C1/09CF: C8 INY C1/09D0: 80 09 BRA $09DB C1/09D2: A9 13 BC LDA #$BC13 C1/09D5: 9D 00 00 STA $0000,X C1/09D8: 9B TXY C1/09D9: C8 INY C1/09DA: C8 INY C1/09DB: A6 1C LDX $1C C1/09DD: 80 09 BRA $09E8 C1/09DF: A9 11 BC LDA #$BC11 C1/09E2: 99 00 00 STA $0000,Y C1/09E5: C8 INY C1/09E6: C8 INY C1/09E7: CA DEX C1/09E8: D0 F5 BNE $09DF C1/09EA: B9 00 00 LDA $0000,Y C1/09ED: F0 05 BEQ $09F4 C1/09EF: C9 10 FC CMP #$FC10 C1/09F2: D0 08 BNE $09FC C1/09F4: A9 10 FC LDA #$FC10 C1/09F7: 99 00 00 STA $0000,Y C1/09FA: 80 06 BRA $0A02 C1/09FC: A9 13 FC LDA #$FC13 C1/09FF: 99 00 00 STA $0000,Y C1/0A02: 2B PLD C1/0A03: 6B RTL C1/2E09: 80 09 BRA $2E14 C1/2E0B: 22 7C 08 C2 JSR $C2087C 7E9623 nonzero case. C1/2E0F: E2 20 SEP #$20 C1/2E11: 9C 23 96 STZ $9623 C1/2E14: 22 9F 10 C2 JSR $C2109F C1/2E18: E2 20 SEP #$20 C1/2E1A: A9 01 LDA #$01 C1/2E1C: 8D 24 96 STA $9624 C1/2E1F: 22 AC 13 C2 JSR $C213AC C1/2E23: AD B6 B4 LDA $B4B6 C1/2E26: D0 0C BNE $2E34 C1/2E28: 20 2C FF JSR $FF2C C1/2E2B: C9 00 00 CMP #$0000 C1/2E2E: F0 04 BEQ $2E34 C1/2E30: 22 87 7F C4 JSR $C47F87 C1/2E34: 9C 49 96 STZ $9649 C1/2E37: 22 8B 03 C2 JSR $C2038B C1/2E3B: 22 4E 00 C1 JSR $C1004E C1/2E3F: C2 20 REP #$20 C1/2E41: 6B RTL C1/02DD: 80 19 BRA $02F8 Start of a loop. C1/02DF: AD 6C 43 LDA $436C A = 7E436C. C1/02E2: F0 10 BEQ $02F4 If 7E436C is nonzero, continue below. C1/02E4: AD 65 00 LDA $0065 C1/02E7: 29 00 10 AND #$1000 C1/02EA: F0 08 BEQ $02F4 If 7E0065 bit 12 (0x1000) was on, continue below. C1/02EC: AD 65 00 LDA $0065 C1/02EF: 29 00 20 AND #$2000 If 7E0065 bit 13 (0x2000) was on, end. C1/02F2: D0 0C BNE $0300 C1/02F4: 22 4E 00 C1 JSR $C1004E 7E436C zero, 7E0065 bit 12 off, 7E0065 bit 13 off cases. C1/004E: C2 31 REP #$31 C1/0050: AD C9 89 LDA $89C9 C1/0053: 29 FF 00 AND #$00FF C1/0056: F0 04 BEQ $005C C1/0058: 22 50 E4 C3 JSR $C3E450 C3/E450: C2 31 REP #$31 Do this if 7E89C9 is nonzero. C3/E452: 0B PHD Flags and direct page. C3/E453: 7B TDC C3/E454: 69 EE FF ADC #$FFEE C3/E457: 5B TCD C3/E458: AD 02 00 LDA $0002 C3/E45B: 29 FF 00 AND #$00FF C3/E45E: 29 04 00 AND #$0004 C3/E461: F0 26 BEQ $E489 C3/E463: A9 C8 1F LDA #$1FC8 C3/E466: 85 06 STA $06 C3/E468: A9 E0 00 LDA #$00E0 C3/E46B: 85 08 STA $08 C3/E46D: AD CD 99 LDA $99CD C3/E470: 29 FF 00 AND #$00FF C3/E473: 3A DEC C3/E474: 85 04 STA $04 C3/E476: 0A ASL C3/E477: 65 04 ADC $04 C3/E479: AA TAX C3/E47A: BF B9 1F E0 LDA $E01FB9,X C3/E47E: 18 CLC C3/E47F: 69 08 00 ADC #$0008 C3/E482: 18 CLC C3/E483: 65 06 ADC $06 C3/E485: 85 06 STA $06 C3/E487: 80 24 BRA $E4AD C3/E489: A9 C8 1F LDA #$1FC8 C3/E48C: 85 06 STA $06 C3/E48E: A9 E0 00 LDA #$00E0 C3/E491: 85 08 STA $08 C3/E493: AD CD 99 LDA $99CD C3/E496: 29 FF 00 AND #$00FF C3/E499: 3A DEC C3/E49A: 85 04 STA $04 C3/E49C: 0A ASL C3/E49D: 65 04 ADC $04 C3/E49F: AA TAX C3/E4A0: BF B9 1F E0 LDA $E01FB9,X C3/E4A4: 18 CLC C3/E4A5: 69 28 00 ADC #$0028 C3/E4A8: 18 CLC C3/E4A9: 65 06 ADC $06 C3/E4AB: 85 06 STA $06 C3/E4AD: A5 06 LDA $06 C3/E4AF: 85 0E STA $0E C3/E4B1: A5 08 LDA $08 C3/E4B3: 85 10 STA $10 C3/E4B5: A2 08 00 LDX #$0008 C3/E4B8: A9 28 02 LDA #$0228 C3/E4BB: 22 D2 8E C0 JSR $C08ED2 C3/E4BF: E2 20 SEP #$20 C3/E4C1: A9 18 8D LDA #$8D18 C3/E4C4: 30 00 BMI $E4C6 C3/E4C6: C2 20 REP #$20 C3/E4C8: 2B PLD C3/E4C9: 6B RTL C1/005C: AD 43 96 LDA $9643 Check if in battle or not. C1/005F: F0 06 BEQ $0067 C1/0061: 22 68 35 C4 JSR $C43568 C4/3568: C2 31 REP #$31 Execute these if in battle. A = 1. C4/356A: 22 56 87 C0 JSR $C08756 <<< EXAMINE THESE JSRS. >>> C4/356E: 22 3F DB C2 JSR $C2DB3F C4/3572: 6B RTL C1/0065: 80 10 BRA $0077 In battle case end; skip the next JSRs. C1/0067: 22 B1 88 C0 JSR $C088B1 Out of battle case. A = 0. C1/006B: 22 66 94 C0 JSR $C09466 <<< EXAMINE THESE JSRS. >>> C1/006F: 22 26 8B C0 JSR $C08B26 C1/0073: 22 56 87 C0 JSR $C08756 C1/0077: 6B RTL C1/02F8: AD 41 96 LDA $9641 C1/02FB: F0 E2 BEQ $02DF While 7E9641 = 0, iterate. C1/02FD: 9C 41 96 STZ $9641 C1/0300: 60 RTS C1/84EF: 4C 68 86 JMP $8668 C1/8668: A9 00 00 LDA #$0000 C1/866B: 2B PLD C1/866C: 60 RTS