------------------------------------------------------------------------ Soul Blazer COP-instruction Functions ------------------------------------------------------------------------ Functions are indexed by the argument that causes their use. The number in parentheses after the function name indicates the number of bytes used as arguments for that function. $38 is the parser location. COP-00 (0) ------------------------------------------------------------------------ 00/D79E: BB TYX 00/D79F: 82 27 0D BRL $00E4C9 COP-01 (+2) Invoke the text parser on the given address. Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/D7A2: BB TYX 00/D7A3: A7 38 LDA [$38] 00/D7A5: E6 38 INC $38 00/D7A7: E6 38 INC $38 00/D7A9: A8 TAY 00/D7AA: E2 20 SEP #$20 00/D7AC: DA PHX 00/D7AD: 8B PHB 00/D7AE: A5 3A LDA $3A 00/D7B0: 48 PHA 00/D7B1: AB PLB 00/D7B2: 22 27 AC 02 JSR $02AC27 This is the text parser. 00/D7B6: AB PLB 00/D7B7: FA PLX 00/D7B8: C2 20 REP #$20 00/D7BA: 82 02 0D BRL $00E4BF COP-02 (+2) Related to menus somehow? Maybe something like "Display Yes/No, branch on one outcome"? ------------------------------------------------------------------------ 00/D7BD: BB TYX 00/D7BE: DA PHX 00/D7BF: A0 02 CF LDY #$CF02 00/D7C2: 22 69 A7 02 JSR $02A769 00/D7C6: E2 20 SEP #$20 00/D7C8: A9 00 LDA #$00 00/D7CA: EB XBA 00/D7CB: A9 02 LDA #$02 00/D7CD: 22 81 A2 02 JSR $02A281 00/D7D1: 08 PHP 00/D7D2: AE F7 03 LDX $03F7 00/D7D5: 22 DA AB 02 JSR $02ABDA 00/D7D9: A9 01 LDA #$01 00/D7DB: 8D B8 03 STA $03B8 00/D7DE: 28 PLP 00/D7DF: C2 20 REP #$20 00/D7E1: FA PLX 00/D7E2: B0 08 BCS $D7EC 00/D7E4: 29 FF 00 AND #$00FF 00/D7E7: D0 03 BNE $D7EC 00/D7E9: 82 CF 0C BRL $00E4BB 00/D7EC: A7 38 LDA [$38] 00/D7EE: E6 38 INC $38 00/D7F0: E6 38 INC $38 00/D7F2: 82 CC 0C BRL $00E4C1 COP-03 (+1) Start of a simple loop? ------------------------------------------------------------------------ 00/D7F5: BB TYX 00/D7F6: A7 38 LDA [$38] 00/D7F8: E6 38 INC $38 00/D7FA: 29 FF 00 AND #$00FF 00/D7FD: 9D 2E 00 STA $002E,X 00/D800: A5 38 LDA $38 00/D802: 9D 2C 00 STA $002C,X 00/D805: 9D 18 00 STA $0018,X 00/D808: 82 B6 0C BRL $00E4C1 COP-04 (0) End of a simple loop? ------------------------------------------------------------------------ 00/D80B: BB TYX 00/D80C: DE 2E 00 DEC $002E,X 00/D80F: D0 03 BNE $D814 00/D811: 82 AB 0C BRL $00E4BF 00/D814: BD 2C 00 LDA $002C,X 00/D817: 9D 18 00 STA $0018,X 00/D81A: 82 AC 0C BRL $00E4C9 COP-05 (+2) Related to event flags somehow... "Don't continue until flag whatever is in the proper state"? No pointers. Control flow just bumps up against this over and over until the flag is right, then it moves on to the next instruction. ------------------------------------------------------------------------ 00/D81D: BB TYX 00/D81E: A7 38 LDA [$38] 00/D820: 30 07 BMI $D829 00/D822: 20 F8 E4 JSR $E4F8 00/D825: 90 07 BCC $D82E 00/D827: 80 0C BRA $D835 00/D829: 20 F8 E4 JSR $E4F8 00/D82C: 90 07 BCC $D835 00/D82E: C6 38 DEC $38 00/D830: C6 38 DEC $38 00/D832: 82 8F 0C BRL $00E4C4 00/D835: 82 83 0C BRL $00E4BB COP-06 (+2) Unconditional short jump. Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/D838: BB TYX 00/D839: A7 38 LDA [$38] 00/D83B: 82 83 0C BRL $00E4C1 COP-07 (+4) Branch if event flag is unset. The first byte is which bit to read (00-07, corresponding to 2^n). The second byte is which flag byte to read. The 0x80 bit of the second byte should be 0. The last two bytes are a pointer. ------------------------------------------------------------------------ 00/D83E: BB TYX 00/D83F: A7 38 LDA [$38] 00/D841: 80 06 BRA $D849 00/D849: 30 07 BMI $D852 00/D84B: 20 F8 E4 JSR $E4F8 00/D84E: B0 07 BCS $D857 00/D850: 80 08 BRA $D85A 00/D852: 20 F8 E4 JSR $E4F8 00/D855: B0 03 BCS $D85A 00/D857: 82 5D 0C BRL $00E4B7 00/D85A: E6 38 INC $38 00/D85C: E6 38 INC $38 00/D85E: A7 38 LDA [$38] 00/D860: E6 38 INC $38 00/D862: E6 38 INC $38 00/D864: 82 5A 0C BRL $00E4C1 COP-08 (+4) Branch if event flag is set. The first byte is which bit to read (00-07, corresponding to 2^n). The second byte is which flag byte to read. The 0x80 bit of the second byte should be 0. The last two bytes are a pointer. ------------------------------------------------------------------------ 00/D843: BB TYX 00/D844: A7 38 LDA [$38] 00/D846: 49 00 80 EOR #$8000 00/D849: 30 07 BMI $D852 00/D84B: 20 F8 E4 JSR $E4F8 00/D84E: B0 07 BCS $D857 00/D850: 80 08 BRA $D85A 00/D852: 20 F8 E4 JSR $E4F8 00/D855: B0 03 BCS $D85A 00/D857: 82 5D 0C BRL $00E4B7 00/D85A: E6 38 INC $38 00/D85C: E6 38 INC $38 00/D85E: A7 38 LDA [$38] 00/D860: E6 38 INC $38 00/D862: E6 38 INC $38 00/D864: 82 5A 0C BRL $00E4C1 COP-09 (+2) Set or clear an event flag. The first byte is which bit to change (00-07, corresponding to 2^n). The second byte is which flag byte to change. The 0x80 bit of the second byte indicates whether to set or clear. Set the flag if it is set, clear the flag if it is clear. ------------------------------------------------------------------------ 00/D867: BB TYX 00/D868: A7 38 LDA [$38] 00/D86A: E6 38 INC $38 00/D86C: E6 38 INC $38 00/D86E: 20 CC E4 JSR $E4CC 00/D871: 82 4B 0C BRL $00E4BF COP-0A (+1) Give an asset to the player. Argument is an asset-ID. ------------------------------------------------------------------------ 00/D874: BB TYX 00/D875: A7 38 LDA [$38] 00/D877: E6 38 INC $38 00/D879: 29 FF 00 AND #$00FF 00/D87C: 20 1E E5 JSR $E51E 00/D87F: 90 04 BCC $D885 Skip to the end if you already have the asset 00/D881: 22 F9 A0 02 JSR $02A0F9 00/D885: 82 37 0C BRL $00E4BF COP-0B (+1) Take an asset away from the player. Argument is an asset-ID. ------------------------------------------------------------------------ 00/D888: BB TYX 00/D889: A7 38 LDA [$38] 00/D88B: E6 38 INC $38 00/D88D: 29 FF 00 AND #$00FF 00/D890: 20 1E E5 JSR $E51E 00/D893: B0 11 BCS $D8A6 Skip to the end if you don't have the asset 00/D895: E2 20 SEP #$20 00/D897: 10 05 BPL $D89E 00/D899: 29 7F AND #$7F 00/D89B: 9C 64 1B STZ $1B64 00/D89E: 59 1E 1B EOR $1B1E,Y 00/D8A1: 99 1E 1B STA $1B1E,Y 00/D8A4: C2 20 REP #$20 00/D8A6: 82 16 0C BRL $00E4BF COP-0C (+4) Some kind of conditional branch. ------------------------------------------------------------------------ 00/D8A9: BB TYX 00/D8AA: A7 38 LDA [$38] 00/D8AC: E6 38 INC $38 00/D8AE: 29 FF 00 AND #$00FF 00/D8B1: 20 17 E6 JSR $E617 00/D8B4: A7 38 LDA [$38] 00/D8B6: E6 38 INC $38 00/D8B8: 29 FF 00 AND #$00FF 00/D8BB: 20 28 E6 JSR $E628 00/D8BE: 85 00 STA $00 00/D8C0: BD 00 00 LDA $0000,X 00/D8C3: 38 SEC 00/D8C4: E5 00 SBC $00 00/D8C6: 85 16 STA $16 00/D8C8: A5 00 LDA $00 00/D8CA: 0A ASL 00/D8CB: 18 CLC 00/D8CC: 7D 10 00 ADC $0010,X 00/D8CF: 38 SEC 00/D8D0: E9 0F 00 SBC #$000F 00/D8D3: 85 18 STA $18 00/D8D5: B9 00 00 LDA $0000,Y 00/D8D8: 38 SEC 00/D8D9: E5 16 SBC $16 00/D8DB: C5 18 CMP $18 00/D8DD: 90 03 BCC $D8E2 00/D8DF: 82 D9 0B BRL $00E4BB 00/D8E2: BD 02 00 LDA $0002,X 00/D8E5: 18 CLC 00/D8E6: 65 00 ADC $00 00/D8E8: 85 16 STA $16 00/D8EA: A5 00 LDA $00 00/D8EC: 0A ASL 00/D8ED: 18 CLC 00/D8EE: 7D 12 00 ADC $0012,X 00/D8F1: 38 SEC 00/D8F2: E9 0F 00 SBC #$000F 00/D8F5: 85 18 STA $18 00/D8F7: A5 16 LDA $16 00/D8F9: 38 SEC 00/D8FA: F9 02 00 SBC $0002,Y 00/D8FD: C5 18 CMP $18 00/D8FF: 90 03 BCC $D904 00/D901: 82 B7 0B BRL $00E4BB 00/D904: A7 38 LDA [$38] 00/D906: E6 38 INC $38 00/D908: E6 38 INC $38 00/D90A: 82 B4 0B BRL $00E4C1 COP-0D (+5) Some kind of conditional branch. First byte is an index into the 7E0800 enemy/NPC WRAM table. Branch if the enemy/NPC running this code is at a specific pixel? ------------------------------------------------------------------------ 00/D90D: BB TYX 00/D90E: A7 38 LDA [$38] 00/D910: E6 38 INC $38 00/D912: 29 FF 00 AND #$00FF 00/D915: 20 17 E6 JSR $E617 00/D918: A7 38 LDA [$38] 00/D91A: E6 38 INC $38 00/D91C: 29 FF 00 AND #$00FF 00/D91F: 20 28 E6 JSR $E628 00/D922: D9 00 00 CMP $0000,Y 00/D925: F0 03 BEQ $D92A 00/D927: 82 8F 0B BRL $00E4B9 00/D92A: A7 38 LDA [$38] 00/D92C: E6 38 INC $38 00/D92E: 29 FF 00 AND #$00FF 00/D931: 1A INC 00/D932: 20 28 E6 JSR $E628 00/D935: D9 02 00 CMP $0002,Y 00/D938: F0 03 BEQ $D93D 00/D93A: 82 7E 0B BRL $00E4BB 00/D93D: A7 38 LDA [$38] 00/D93F: E6 38 INC $38 00/D941: E6 38 INC $38 00/D943: 82 7B 0B BRL $00E4C1 COP-10 (+7) Teleport player to another location? Same format as door data? (Destination map, facing direction, destination X and Y) First two bytes are map number (see soul_map_metadata.txt) Sample usage: 0x194D7 - [02 10 03 01 01 78 00 E0 03] - Dragged into Leo's Painting Sample usage: 0x19853 - [02 10 03 04 00 78 00 70 00] - Grass Valley sleeping tulip Sample usage: 0x20FD0 - [02 10 0B 06 01 00 02 F0 02] - Sleeping mushroom Sample usage: 0x218E6 - [02 10 0B 03 01 A0 00 E0 00] - Sleeping old man (Mt Souls) Sample usage: 0xF804B - [02 10 09 02 01 78 00 10 04] - Servas the dolphin Sample usage: 0xF87EF - [02 10 07 01 02 A0 06 40 00] - Blester unlock Sample usage: 0xF8AC4 - [02 10 07 01 02 B0 05 40 02] - Rockbird unlock Sample usage: 0xF8EDF - [02 10 07 01 02 40 02 B0 02] - Durean unlock Sample usage: 0xF9662 - [02 10 07 01 02 40 01 40 00] - Ghost ship unlock ------------------------------------------------------------------------ 00/D946: BB TYX 00/D947: A7 38 LDA [$38] 00/D949: E6 38 INC $38 00/D94B: E6 38 INC $38 00/D94D: EB XBA 00/D94E: 8D 18 03 STA $0318 00/D951: A7 38 LDA [$38] 00/D953: E6 38 INC $38 00/D955: 29 FF 00 AND #$00FF 00/D958: 8D 80 03 STA $0380 00/D95B: A7 38 LDA [$38] 00/D95D: E6 38 INC $38 00/D95F: E6 38 INC $38 00/D961: 8D 7C 03 STA $037C 00/D964: A7 38 LDA [$38] 00/D966: E6 38 INC $38 00/D968: E6 38 INC $38 00/D96A: 8D 7E 03 STA $037E 00/D96D: 82 4F 0B BRL $00E4BF COP-11 (+3) First byte is an index into the 7E0800 enemy/NPC WRAM table. Teleport the selected enemy/NPC to pixel coordinates: X = 0x10 * arg2 Y = 0x10 * arg3 On the current map. ------------------------------------------------------------------------ 00/D970: BB TYX 00/D971: A7 38 LDA [$38] 00/D973: E6 38 INC $38 00/D975: 29 FF 00 AND #$00FF 00/D978: 20 17 E6 JSR $E617 00/D97B: A7 38 LDA [$38] 00/D97D: E6 38 INC $38 00/D97F: 29 FF 00 AND #$00FF 00/D982: 20 28 E6 JSR $E628 00/D985: 99 00 00 STA $0000,Y 00/D988: A7 38 LDA [$38] 00/D98A: E6 38 INC $38 00/D98C: 29 FF 00 AND #$00FF 00/D98F: 20 28 E6 JSR $E628 00/D992: 99 02 00 STA $0002,Y 00/D995: DA PHX 00/D996: BB TYX 00/D997: 20 A7 E5 JSR $E5A7 00/D99A: FA PLX 00/D99B: 82 21 0B BRL $00E4BF COP-12 (+3) First byte is an index into the 7E0800 enemy/NPC WRAM table. Change the selected enemy/NPC's program counter? ------------------------------------------------------------------------ 00/D99E: BB TYX 00/D99F: A7 38 LDA [$38] 00/D9A1: E6 38 INC $38 00/D9A3: 29 FF 00 AND #$00FF 00/D9A6: 20 17 E6 JSR $E617 00/D9A9: A7 38 LDA [$38] 00/D9AB: E6 38 INC $38 00/D9AD: E6 38 INC $38 00/D9AF: 99 18 00 STA $0018,Y 00/D9B2: 82 0A 0B BRL $00E4BF COP-13 (+3) First byte is an index into the 7E0800 enemy/NPC WRAM table. Change the selected enemy/NPC's talk pointer? ------------------------------------------------------------------------ 00/D9B5: BB TYX 00/D9B6: A7 38 LDA [$38] 00/D9B8: E6 38 INC $38 00/D9BA: 29 FF 00 AND #$00FF 00/D9BD: 20 17 E6 JSR $E617 00/D9C0: A7 38 LDA [$38] 00/D9C2: E6 38 INC $38 00/D9C4: E6 38 INC $38 00/D9C6: 99 30 00 STA $0030,Y 00/D9C9: 82 F3 0A BRL $00E4BF COP-14 (+4) If the lair is sealed, jump. The first two bytes are a lair number, the second two are a pointer. Note that a lair is considered "sealed" once you step on it, so it's "sealed" during the lair's resurrection sequence. ------------------------------------------------------------------------ 00/D9CC: BB TYX 00/D9CD: A7 38 LDA [$38] 00/D9CF: E6 38 INC $38 00/D9D1: E6 38 INC $38 00/D9D3: 20 2D E6 JSR $E62D 00/D9D6: A0 DE 1A LDY #$1ADE 00/D9D9: 22 A2 F3 04 JSR $04F3A2 00/D9DD: 90 12 BCC $D9F1 00/D9DF: BD 16 00 LDA $0016,X 00/D9E2: 29 FF DF AND #$DFFF 00/D9E5: 9D 16 00 STA $0016,X 00/D9E8: A7 38 LDA [$38] 00/D9EA: E6 38 INC $38 00/D9EC: E6 38 INC $38 00/D9EE: 82 D0 0A BRL $00E4C1 00/D9F1: 82 C7 0A BRL $00E4BB COP-15 (0) ------------------------------------------------------------------------ 00/D9F4: BB TYX 00/D9F5: 20 37 E5 JSR $E537 00/D9F8: 82 C4 0A BRL $00E4BF COP-16 (0) ------------------------------------------------------------------------ 00/D9FB: BB TYX 00/D9FC: 20 A7 E5 JSR $E5A7 00/D9FF: 82 BD 0A BRL $00E4BF COP-17 (+2) Assign a "talk" pointer, triggered by using the B Button. Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/DA02: BB TYX 00/DA03: A7 38 LDA [$38] 00/DA05: E6 38 INC $38 00/DA07: E6 38 INC $38 00/DA09: 9D 30 00 STA $0030,X 00/DA0C: 82 B0 0A BRL $00E4BF COP-18 (+3) Jump if you DON'T have a specified asset. The first byte is an asset-ID, the second and third are a pointer. ------------------------------------------------------------------------ 00/DA0F: BB TYX 00/DA10: A7 38 LDA [$38] 00/DA12: E6 38 INC $38 00/DA14: 29 FF 00 AND #$00FF 00/DA17: 20 1E E5 JSR $E51E 00/DA1A: B0 03 BCS $DA1F 00/DA1C: 82 9C 0A BRL $00E4BB 00/DA1F: A7 38 LDA [$38] 00/DA21: E6 38 INC $38 00/DA23: E6 38 INC $38 00/DA25: 82 99 0A BRL $00E4C1 COP-19 (+3) Jump if you DON'T have a specified asset equipped. The first byte is an asset-ID, the second and third are a pointer. ------------------------------------------------------------------------ 00/DA28: BB TYX 00/DA29: A7 38 LDA [$38] 00/DA2B: E6 38 INC $38 00/DA2D: 29 FF 00 AND #$00FF 00/DA30: 20 1E E5 JSR $E51E 00/DA33: B0 05 BCS $DA3A 00/DA35: 10 03 BPL $DA3A 00/DA37: 82 81 0A BRL $00E4BB 00/DA3A: A7 38 LDA [$38] 00/DA3C: E6 38 INC $38 00/DA3E: E6 38 INC $38 00/DA40: 82 7E 0A BRL $00E4C1 COP-1A (+5) Related to menus? First two bytes are a short pointer to the menu text. Third byte might be "number of options", unsure. The last two bytes are a short pointer to code. ------------------------------------------------------------------------ 00/DA43: BB TYX 00/DA44: DA PHX 00/DA45: A7 38 LDA [$38] 00/DA47: E6 38 INC $38 00/DA49: E6 38 INC $38 00/DA4B: A8 TAY 00/DA4C: 22 69 A7 02 JSR $02A769 00/DA50: E2 20 SEP #$20 00/DA52: A9 00 LDA #$00 00/DA54: EB XBA 00/DA55: A7 38 LDA [$38] 00/DA57: E6 38 INC $38 00/DA59: D0 02 BNE $DA5D 00/DA5B: E6 39 INC $39 00/DA5D: 22 81 A2 02 JSR $02A281 00/DA61: 48 PHA 00/DA62: 08 PHP 00/DA63: AE F7 03 LDX $03F7 00/DA66: 22 DA AB 02 JSR $02ABDA 00/DA6A: A9 01 LDA #$01 00/DA6C: 8D B8 03 STA $03B8 00/DA6F: 28 PLP 00/DA70: 68 PLA 00/DA71: C2 20 REP #$20 00/DA73: FA PLX 00/DA74: B0 09 BCS $DA7F 00/DA76: 29 FF 00 AND #$00FF 00/DA79: 8D D0 03 STA $03D0 00/DA7C: 82 3C 0A BRL $00E4BB 00/DA7F: A7 38 LDA [$38] 00/DA81: E6 38 INC $38 00/DA83: E6 38 INC $38 00/DA85: 82 39 0A BRL $00E4C1 COP-1B (+4) Jump after the specified number of frames have passed. The first two bytes are the short pointer. The second two are the count of frames. ------------------------------------------------------------------------ 00/DA88: BB TYX 00/DA89: A7 38 LDA [$38] 00/DA8B: E6 38 INC $38 00/DA8D: E6 38 INC $38 00/DA8F: 9D 18 00 STA $0018,X 00/DA92: A7 38 LDA [$38] 00/DA94: E6 38 INC $38 00/DA96: E6 38 INC $38 00/DA98: 9D 14 00 STA $0014,X 00/DA9B: 82 2B 0A BRL $00E4C9 COP-1C (+4) ------------------------------------------------------------------------ 00/DA9E: BB TYX 00/DA9F: A7 38 LDA [$38] 00/DAA1: E6 38 INC $38 00/DAA3: E6 38 INC $38 00/DAA5: 3D 16 00 AND $0016,X 00/DAA8: D0 03 BNE $DAAD 00/DAAA: 82 0E 0A BRL $00E4BB 00/DAAD: A7 38 LDA [$38] 00/DAAF: E6 38 INC $38 00/DAB1: E6 38 INC $38 00/DAB3: 82 0B 0A BRL $00E4C1 COP-1D (+2) ------------------------------------------------------------------------ 00/DAB6: BB TYX 00/DAB7: A7 38 LDA [$38] 00/DAB9: E6 38 INC $38 00/DABB: E6 38 INC $38 00/DABD: 1D 16 00 ORA $0016,X 00/DAC0: 9D 16 00 STA $0016,X 00/DAC3: 82 F9 09 BRL $00E4BF COP-1E (+2) ------------------------------------------------------------------------ 00/DAC6: BB TYX 00/DAC7: A7 38 LDA [$38] 00/DAC9: E6 38 INC $38 00/DACB: E6 38 INC $38 00/DACD: 3D 16 00 AND $0016,X 00/DAD0: 9D 16 00 STA $0016,X 00/DAD3: 82 E9 09 BRL $00E4BF COP-1F (0) ------------------------------------------------------------------------ 00/DAD6: 5A PHY 00/DAD7: E2 20 SEP #$20 00/DAD9: A2 0F 00 LDX #$000F 00/DADC: A9 00 LDA #$00 00/DADE: EB XBA 00/DADF: 18 CLC 00/DAE0: BD 02 03 LDA $0302,X 00/DAE3: 7D 01 03 ADC $0301,X 00/DAE6: 9D 01 03 STA $0301,X 00/DAE9: CA DEX 00/DAEA: D0 F4 BNE $DAE0 00/DAEC: A2 10 00 LDX #$0010 00/DAEF: FE 01 03 INC $0301,X 00/DAF2: D0 03 BNE $DAF7 00/DAF4: CA DEX 00/DAF5: D0 F8 BNE $DAEF 00/DAF7: C2 20 REP #$20 00/DAF9: FA PLX 00/DAFA: 82 C2 09 BRL $00E4BF COP-20 (+2) Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/DAFD: BB TYX 00/DAFE: AD 74 03 LDA $0374 00/DB01: 0D 76 03 ORA $0376 00/DB04: 29 0F 00 AND #$000F 00/DB07: F0 09 BEQ $DB12 00/DB09: A7 38 LDA [$38] 00/DB0B: E6 38 INC $38 00/DB0D: E6 38 INC $38 00/DB0F: 82 AF 09 BRL $00E4C1 00/DB12: 82 A6 09 BRL $00E4BB COP-21 (+2) Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/DB15: BB TYX 00/DB16: BD 00 00 LDA $0000,X 00/DB19: 85 16 STA $16 00/DB1B: BD 02 00 LDA $0002,X 00/DB1E: 38 SEC 00/DB1F: E9 10 00 SBC #$0010 00/DB22: 38 SEC 00/DB23: FD 12 00 SBC $0012,X 00/DB26: 85 18 STA $18 00/DB28: 82 A5 00 BRL $00DBD0 Inside COP-28 COP-22 (+2) Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/DB2B: BB TYX 00/DB2C: BD 00 00 LDA $0000,X 00/DB2F: 85 16 STA $16 00/DB31: BD 02 00 LDA $0002,X 00/DB34: 85 18 STA $18 00/DB36: 82 97 00 BRL $00DBD0 Inside COP-28 COP-23 (+2) Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/DB39: BB TYX 00/DB3A: BD 00 00 LDA $0000,X 00/DB3D: 38 SEC 00/DB3E: E9 10 00 SBC #$0010 00/DB41: 85 16 STA $16 00/DB43: BD 02 00 LDA $0002,X 00/DB46: 38 SEC 00/DB47: E9 10 00 SBC #$0010 00/DB4A: 85 18 STA $18 00/DB4C: 82 81 00 BRL $00DBD0 Inside COP-28 COP-24 (+2) Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/DB4F: BB TYX 00/DB50: BD 00 00 LDA $0000,X 00/DB53: 18 CLC 00/DB54: 7D 10 00 ADC $0010,X 00/DB57: 85 16 STA $16 00/DB59: BD 02 00 LDA $0002,X 00/DB5C: 38 SEC 00/DB5D: E9 10 00 SBC #$0010 00/DB60: 85 18 STA $18 00/DB62: 82 6B 00 BRL $00DBD0 Inside COP-28 COP-25 (+2) Give the player the specified number of GEMs. Argument is a two-byte amount in binary-coded decimal. ------------------------------------------------------------------------ 00/DB65: BB TYX 00/DB66: A7 38 LDA [$38] 00/DB68: E6 38 INC $38 00/DB6A: E6 38 INC $38 00/DB6C: 22 A5 F6 04 JSR $04F6A5 00/DB70: A9 10 00 LDA #$0010 00/DB73: 0C 32 03 TSB $0332 00/DB76: 82 46 09 BRL $00E4BF COP-26 (+4) Related to the GEM cost of magic? First argument is a two-byte amount of GEMs in binary-coded decimal. Second argument is a short pointer. ------------------------------------------------------------------------ 00/DB79: BB TYX 00/DB7A: A7 38 LDA [$38] A = The given amount of GEMs 00/DB7C: E6 38 INC $38 00/DB7E: E6 38 INC $38 00/DB80: AC 64 1B LDY $1B64 00/DB83: C0 40 00 CPY #$0040 Is the Magic Bell equipped? 00/DB86: D0 05 BNE $DB8D If yes, A = 0. 00/DB88: A9 00 00 LDA #$0000 00/DB8B: 80 0C BRA $DB99 00/DB8D: AC 60 1B LDY $1B60 00/DB90: C0 0C 00 CPY #$000C Is the Magic Armor equipped? 00/DB93: D0 04 BNE $DB99 If yes, divide A by 2. 00/DB95: 4A LSR 00/DB96: D0 01 BNE $DB99 00/DB98: 1A INC Don't let the Magic Armor drive A to zero. 00/DB99: 22 C9 F6 04 JSR $04F6C9 00/DB9D: B0 09 BCS $DBA8 00/DB9F: A9 10 00 LDA #$0010 00/DBA2: 0C 32 03 TSB $0332 00/DBA5: 82 13 09 BRL $00E4BB 00/DBA8: A7 38 LDA [$38] 00/DBAA: E6 38 INC $38 00/DBAC: E6 38 INC $38 00/DBAE: 82 10 09 BRL $00E4C1 COP-27 (+2) Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/DBB1: BB TYX 00/DBB2: A7 38 LDA [$38] 00/DBB4: E6 38 INC $38 00/DBB6: E6 38 INC $38 00/DBB8: 9D 18 00 STA $0018,X 00/DBBB: 9E 14 00 STZ $0014,X 00/DBBE: 82 08 09 BRL $00E4C9 COP-28 (+2) ------------------------------------------------------------------------ 00/DBC1: BB TYX 00/DBC2: BD 00 00 LDA $0000,X 00/DBC5: 85 16 STA $16 00/DBC7: BD 02 00 LDA $0002,X 00/DBCA: 38 SEC 00/DBCB: E9 10 00 SBC #$0010 00/DBCE: 85 18 STA $18 00/DBD0: DA PHX 00/DBD1: 22 B8 F2 04 JSR $04F2B8 00/DBD5: BF 00 80 7F LDA $7F8000,X 00/DBD9: FA PLX 00/DBDA: 29 FF 00 AND #$00FF 00/DBDD: D0 03 BNE $DBE2 00/DBDF: 82 D9 08 BRL $00E4BB 00/DBE2: A7 38 LDA [$38] 00/DBE4: E6 38 INC $38 00/DBE6: E6 38 INC $38 00/DBE8: 82 D6 08 BRL $00E4C1 COP-29 (+3) Not sure what the first argument byte does. The latter two are a short pointer. ------------------------------------------------------------------------ 00/DBEB: BB TYX 00/DBEC: BD 00 00 LDA $0000,X 00/DBEF: 85 16 STA $16 00/DBF1: BD 02 00 LDA $0002,X 00/DBF4: 38 SEC 00/DBF5: E9 10 00 SBC #$0010 00/DBF8: 85 18 STA $18 00/DBFA: DA PHX 00/DBFB: 22 B8 F2 04 JSR $04F2B8 00/DBFF: E2 20 SEP #$20 00/DC01: A7 38 LDA [$38] 00/DC03: E6 38 INC $38 00/DC05: D0 02 BNE $DC09 00/DC07: E6 39 INC $39 00/DC09: DF 00 80 7E CMP $7E8000,X 00/DC0D: C2 20 REP #$20 00/DC0F: D0 04 BNE $DC15 00/DC11: FA PLX 00/DC12: 82 A6 08 BRL $00E4BB 00/DC15: FA PLX 00/DC16: A7 38 LDA [$38] 00/DC18: E6 38 INC $38 00/DC1A: E6 38 INC $38 00/DC1C: 82 A2 08 BRL $00E4C1 COP-2A (+4) ------------------------------------------------------------------------ 00/DC1F: BB TYX 00/DC20: DA PHX 00/DC21: A7 38 LDA [$38] 00/DC23: E6 38 INC $38 00/DC25: E6 38 INC $38 00/DC27: 18 CLC 00/DC28: 7D 00 00 ADC $0000,X 00/DC2B: 85 16 STA $16 00/DC2D: A7 38 LDA [$38] 00/DC2F: E6 38 INC $38 00/DC31: E6 38 INC $38 00/DC33: 18 CLC 00/DC34: 7D 02 00 ADC $0002,X 00/DC37: 38 SEC 00/DC38: E9 10 00 SBC #$0010 00/DC3B: 85 18 STA $18 00/DC3D: 22 B8 F2 04 JSR $04F2B8 00/DC41: BF 00 80 7F LDA $7F8000,X 00/DC45: 09 F0 00 ORA #$00F0 00/DC48: 9F 00 80 7F STA $7F8000,X 00/DC4C: FA PLX 00/DC4D: 82 6F 08 BRL $00E4BF COP-2B (+4) ------------------------------------------------------------------------ 00/DC50: BB TYX 00/DC51: DA PHX 00/DC52: A7 38 LDA [$38] 00/DC54: E6 38 INC $38 00/DC56: E6 38 INC $38 00/DC58: 18 CLC 00/DC59: 7D 00 00 ADC $0000,X 00/DC5C: 85 16 STA $16 00/DC5E: A7 38 LDA [$38] 00/DC60: E6 38 INC $38 00/DC62: E6 38 INC $38 00/DC64: 18 CLC 00/DC65: 7D 02 00 ADC $0002,X 00/DC68: 38 SEC 00/DC69: E9 10 00 SBC #$0010 00/DC6C: 85 18 STA $18 00/DC6E: 22 B8 F2 04 JSR $04F2B8 00/DC72: BF 00 80 7F LDA $7F8000,X 00/DC76: 29 00 FF AND #$FF00 00/DC79: 9F 00 80 7F STA $7F8000,X 00/DC7D: FA PLX 00/DC7E: 82 3E 08 BRL $00E4BF COP-2E (+5) First byte is an index into the 7E0800 enemy/NPC WRAM table. ------------------------------------------------------------------------ 00/DC81: BB TYX 00/DC82: A7 38 LDA [$38] 00/DC84: E6 38 INC $38 00/DC86: 29 FF 00 AND #$00FF 00/DC89: 20 17 E6 JSR $E617 00/DC8C: A7 38 LDA [$38] 00/DC8E: E6 38 INC $38 00/DC90: E6 38 INC $38 00/DC92: 85 00 STA $00 00/DC94: 82 29 FC BRL $00D8C0 Inside COP-0C COP-2F (+4) ------------------------------------------------------------------------ 00/DC97: BB TYX 00/DC98: A7 38 LDA [$38] 00/DC9A: E6 38 INC $38 00/DC9C: E6 38 INC $38 00/DC9E: 85 16 STA $16 00/DCA0: A7 38 LDA [$38] 00/DCA2: E6 38 INC $38 00/DCA4: E6 38 INC $38 00/DCA6: 85 18 STA $18 00/DCA8: AC 9C 03 LDY $039C 00/DCAB: B9 00 00 LDA $0000,Y 00/DCAE: 18 CLC 00/DCAF: 65 16 ADC $16 00/DCB1: 99 00 00 STA $0000,Y 00/DCB4: B9 02 00 LDA $0002,Y 00/DCB7: 18 CLC 00/DCB8: 65 18 ADC $18 00/DCBA: 99 02 00 STA $0002,Y 00/DCBD: B9 3E 00 LDA $003E,Y 00/DCC0: A8 TAY 00/DCC1: B9 00 00 LDA $0000,Y 00/DCC4: 18 CLC 00/DCC5: 65 16 ADC $16 00/DCC7: 99 00 00 STA $0000,Y 00/DCCA: B9 02 00 LDA $0002,Y 00/DCCD: 18 CLC 00/DCCE: 65 18 ADC $18 00/DCD0: 99 02 00 STA $0002,Y 00/DCD3: 82 E9 07 BRL $00E4BF COP-30 (+5) If the lair's resurrection sequence is playing, jump (call?). The first two bytes are a lair number, the last three a long pointer. This is used for resurrection-sequence texts. eg. "You hear a sigh coming from inside the house." ------------------------------------------------------------------------ 00/DCD6: BB TYX 00/DCD7: AD FB 03 LDA $03FB Check if you're in a resurrection sequence 00/DCDA: D0 03 BNE $DCDF If yes, continue 00/DCDC: 82 D6 07 BRL $00E4B5 If no, end 00/DCDF: A7 38 LDA [$38] 00/DCE1: E6 38 INC $38 00/DCE3: E6 38 INC $38 00/DCE5: CD 05 04 CMP $0405 Check if the lair matches the first argument 00/DCE8: F0 03 BEQ $DCED 00/DCEA: 82 CC 07 BRL $00E4B9 00/DCED: 82 FE 01 BRL $00DEEE COP-85 COP-31 (+1) ------------------------------------------------------------------------ 00/DCF0: BB TYX 00/DCF1: 20 62 E6 JSR $E662 00/DCF4: A9 9B AC LDA #$AC9B 00/DCF7: 99 18 00 STA $0018,Y 00/DCFA: E2 20 SEP #$20 00/DCFC: A9 00 LDA #$00 00/DCFE: 99 36 00 STA $0036,Y 00/DD01: C2 20 REP #$20 00/DD03: A7 38 LDA [$38] 00/DD05: E6 38 INC $38 00/DD07: 29 FF 00 AND #$00FF 00/DD0A: 99 30 00 STA $0030,Y 00/DD0D: 82 AF 07 BRL $00E4BF COP-32 (+1) ------------------------------------------------------------------------ 00/DD10: BB TYX 00/DD11: 20 62 E6 JSR $E662 00/DD14: A9 CB AC LDA #$ACCB 00/DD17: 99 18 00 STA $0018,Y 00/DD1A: E2 20 SEP #$20 00/DD1C: A9 00 LDA #$00 00/DD1E: 99 36 00 STA $0036,Y 00/DD21: C2 20 REP #$20 00/DD23: A7 38 LDA [$38] 00/DD25: E6 38 INC $38 00/DD27: 29 FF 00 AND #$00FF 00/DD2A: 99 30 00 STA $0030,Y 00/DD2D: 82 8F 07 BRL $00E4BF COP-33 (0) ------------------------------------------------------------------------ 00/DD30: BB TYX 00/DD31: AC 9C 03 LDY $039C 00/DD34: 20 49 DD JSR $DD49 00/DD37: AC 9E 03 LDY $039E 00/DD3A: 20 49 DD JSR $DD49 00/DD3D: AC A0 03 LDY $03A0 00/DD40: 20 49 DD JSR $DD49 00/DD43: 9C 64 04 STZ $0464 00/DD46: 82 76 07 BRL $00E4BF 00/DD49: B9 1A 00 LDA $001A,Y 00/DD4C: 29 7F FF AND #$FF7F 00/DD4F: 99 1A 00 STA $001A,Y 00/DD52: 60 RTS COP-34 (0) ------------------------------------------------------------------------ 00/DD53: BB TYX 00/DD54: AC 9C 03 LDY $039C 00/DD57: 20 6C DD JSR $DD6C 00/DD5A: AC 9E 03 LDY $039E 00/DD5D: 20 6C DD JSR $DD6C 00/DD60: AC A0 03 LDY $03A0 00/DD63: 20 6C DD JSR $DD6C 00/DD66: EE 64 04 INC $0464 00/DD69: 82 53 07 BRL $00E4BF 00/DD6C: B9 1A 00 LDA $001A,Y 00/DD6F: 09 80 00 ORA #$0080 00/DD72: 99 1A 00 STA $001A,Y 00/DD75: 60 RTS COP-35 (+1) ------------------------------------------------------------------------ 00/DD76: BB TYX 00/DD77: A7 38 LDA [$38] 00/DD79: E6 38 INC $38 00/DD7B: 29 FF 00 AND #$00FF 00/DD7E: 85 00 STA $00 00/DD80: AD 02 03 LDA $0302 00/DD83: 29 FF 00 AND #$00FF 00/DD86: 38 SEC 00/DD87: E5 00 SBC $00 00/DD89: 10 FB BPL $DD86 00/DD8B: 18 CLC 00/DD8C: 65 00 ADC $00 00/DD8E: 8D 37 04 STA $0437 00/DD91: 82 2B 07 BRL $00E4BF COP-36 (+2) Give the player the specified amount of EXP. Argument is a two-byte amount in binary-coded decimal. ------------------------------------------------------------------------ 00/DD94: BB TYX 00/DD95: A7 38 LDA [$38] 00/DD97: E6 38 INC $38 00/DD99: E6 38 INC $38 00/DD9B: F8 SED 00/DD9C: 18 CLC 00/DD9D: 6D 78 1B ADC $1B78 00/DDA0: 8D 78 1B STA $1B78 00/DDA3: AD 7A 1B LDA $1B7A 00/DDA6: 69 00 00 ADC #$0000 00/DDA9: 8D 7A 1B STA $1B7A 00/DDAC: D8 CLD 00/DDAD: 82 0F 07 BRL $00E4BF COP-37 (0) Restore player to full health. ------------------------------------------------------------------------ 00/DDB0: BB TYX 00/DDB1: AD 8A 1B LDA $1B8A 00/DDB4: 38 SEC 00/DDB5: ED 88 1B SBC $1B88 00/DDB8: 8D 3B 04 STA $043B 00/DDBB: 82 01 07 BRL $00E4BF COP-38 (+2) Give the player the specified amount of EXP. Argument is a two-byte amount in binary-coded decimal. ------------------------------------------------------------------------ 00/DDBE: BB TYX 00/DDBF: A7 38 LDA [$38] 00/DDC1: E6 38 INC $38 00/DDC3: E6 38 INC $38 00/DDC5: 8D 3D 04 STA $043D 00/DDC8: 82 F4 06 BRL $00E4BF COP-39 (+1) Adjusts current HP somehow? ------------------------------------------------------------------------ 00/DDCB: BB TYX 00/DDCC: DA PHX 00/DDCD: A7 38 LDA [$38] 00/DDCF: E6 38 INC $38 00/DDD1: 29 FF 00 AND #$00FF 00/DDD4: E2 20 SEP #$20 00/DDD6: 48 PHA 00/DDD7: AD 88 1B LDA $1B88 00/DDDA: 38 SEC 00/DDDB: E3 01 SBC $01,S 00/DDDD: 10 02 BPL $DDE1 00/DDDF: A9 00 LDA #$00 00/DDE1: 8D 88 1B STA $1B88 00/DDE4: 68 PLA 00/DDE5: C2 20 REP #$20 00/DDE7: A9 04 00 LDA #$0004 00/DDEA: 0C 32 03 TSB $0332 00/DDED: AE 9C 03 LDX $039C 00/DDF0: A9 E0 FF LDA #$FFE0 00/DDF3: 9D 26 00 STA $0026,X 00/DDF6: 00 04 BRK $04 00/DDF8: BD 16 00 LDA $0016,X 00/DDFB: 09 00 08 ORA #$0800 00/DDFE: 9D 16 00 STA $0016,X 00/DE01: FA PLX 00/DE02: 82 BA 06 BRL $00E4BF COP-3A (0) Related to player naming? ------------------------------------------------------------------------ 00/DE05: BB TYX 00/DE06: 22 EE A4 02 JSR $02A4EE 00/DE0A: 82 B2 06 BRL $00E4BF COP-3B (+4) Related to lairs somehow. Possibly connected to lair dependencies? The last two argument bytes are a pointer. ------------------------------------------------------------------------ 00/DE0D: BB TYX 00/DE0E: A7 38 LDA [$38] 00/DE10: 20 2D E6 JSR $E62D 00/DE13: 0A ASL 00/DE14: 0A ASL 00/DE15: 0A ASL 00/DE16: 0A ASL 00/DE17: 0A ASL 00/DE18: A8 TAY 00/DE19: B9 2B BA LDA $BA2B,Y 00/DE1C: F0 09 BEQ $DE27 00/DE1E: A0 DE 1A LDY #$1ADE 00/DE21: 22 A2 F3 04 JSR $04F3A2 00/DE25: 90 24 BCC $DE4B 00/DE27: A7 38 LDA [$38] 00/DE29: E6 38 INC $38 00/DE2B: E6 38 INC $38 00/DE2D: A0 DE 1A LDY #$1ADE 00/DE30: 22 A2 F3 04 JSR $04F3A2 00/DE34: 90 12 BCC $DE48 00/DE36: BD 16 00 LDA $0016,X 00/DE39: 29 FF DF AND #$DFFF 00/DE3C: 9D 16 00 STA $0016,X 00/DE3F: A7 38 LDA [$38] 00/DE41: E6 38 INC $38 00/DE43: E6 38 INC $38 00/DE45: 82 79 06 BRL $00E4C1 00/DE48: 82 7E 06 BRL $00E4C9 00/DE4B: A7 38 LDA [$38] 00/DE4D: E6 38 INC $38 00/DE4F: E6 38 INC $38 00/DE51: 9D 34 00 STA $0034,X 00/DE54: DA PHX 00/DE55: AA TAX 00/DE56: BF 03 02 7F LDA $7F0203,X 00/DE5A: FA PLX 00/DE5B: 89 40 00 BIT #$0040 00/DE5E: F0 E8 BEQ $DE48 00/DE60: BD 16 00 LDA $0016,X 00/DE63: 09 10 00 ORA #$0010 00/DE66: 9D 16 00 STA $0016,X 00/DE69: 82 4F 06 BRL $00E4BB COP-3C (+1) Related to dreams? Maybe "disable enemies"? Sample usage: Servas' text (0xF8048, [02 3C 04]) The argument seems to always be 04. ------------------------------------------------------------------------ 00/DE6C: BB TYX 00/DE6D: A7 38 LDA [$38] 00/DE6F: E6 38 INC $38 00/DE71: 29 FF 00 AND #$00FF 00/DE74: 8D E3 03 STA $03E3 00/DE77: 82 45 06 BRL $00E4BF COP-80 (+1) ------------------------------------------------------------------------ 00/DE7A: BB TYX 00/DE7B: A7 38 LDA [$38] 00/DE7D: E6 38 INC $38 00/DE7F: 29 FF 00 AND #$00FF 00/DE82: 9D 1E 00 STA $001E,X 00/DE85: 9E 20 00 STZ $0020,X 00/DE88: A5 38 LDA $38 00/DE8A: 9D 18 00 STA $0018,X 00/DE8D: 82 2F 06 BRL $00E4BF COP-81 (+2) ------------------------------------------------------------------------ 00/DE90: BB TYX 00/DE91: A7 38 LDA [$38] 00/DE93: E6 38 INC $38 00/DE95: 29 FF 00 AND #$00FF 00/DE98: 9D 1E 00 STA $001E,X 00/DE9B: 9E 20 00 STZ $0020,X 00/DE9E: A7 38 LDA [$38] 00/DEA0: E6 38 INC $38 00/DEA2: 29 FF 00 AND #$00FF 00/DEA5: 9D 2A 00 STA $002A,X 00/DEA8: A5 38 LDA $38 00/DEAA: 9D 18 00 STA $0018,X 00/DEAD: 82 0F 06 BRL $00E4BF COP-82 (0) ------------------------------------------------------------------------ 00/DEB0: BB TYX 00/DEB1: 22 F3 88 00 JSR $0088F3 00/DEB5: 90 03 BCC $DEBA 00/DEB7: 82 05 06 BRL $00E4BF 00/DEBA: 82 0C 06 BRL $00E4C9 COP-83 (0) ------------------------------------------------------------------------ 00/DEBD: BB TYX 00/DEBE: 22 F3 88 00 JSR $0088F3 00/DEC2: 90 08 BCC $DECC 00/DEC4: DE 2A 00 DEC $002A,X 00/DEC7: D0 F5 BNE $DEBE 00/DEC9: 82 F3 05 BRL $00E4BF 00/DECC: 82 FA 05 BRL $00E4C9 COP-84 (+3) ------------------------------------------------------------------------ 00/DECF: BB TYX 00/DED0: 20 3A E6 JSR $E63A 00/DED3: A7 38 LDA [$38] 00/DED5: E6 38 INC $38 00/DED7: E6 38 INC $38 00/DED9: 99 18 00 STA $0018,Y 00/DEDC: 8A TXA 00/DEDD: A7 38 LDA [$38] 00/DEDF: E6 38 INC $38 00/DEE1: 29 FF 00 AND #$00FF 00/DEE4: E2 20 SEP #$20 00/DEE6: 99 36 00 STA $0036,Y 00/DEE9: C2 20 REP #$20 00/DEEB: 82 D1 05 BRL $00E4BF COP-85 (+3) Unconditional long call? The three bytes are a long pointer. ------------------------------------------------------------------------ 00/DEEE: BB TYX 00/DEEF: 20 62 E6 JSR $E662 00/DEF2: A7 38 LDA [$38] 00/DEF4: E6 38 INC $38 00/DEF6: E6 38 INC $38 00/DEF8: 99 18 00 STA $0018,Y 00/DEFB: 8A TXA 00/DEFC: A7 38 LDA [$38] 00/DEFE: E6 38 INC $38 00/DF00: 29 FF 00 AND #$00FF 00/DF03: E2 20 SEP #$20 00/DF05: 99 36 00 STA $0036,Y 00/DF08: C2 20 REP #$20 00/DF0A: 82 B2 05 BRL $00E4BF COP-86 (0) ------------------------------------------------------------------------ 00/DF0D: BB TYX 00/DF0E: BC 3C 00 LDY $003C,X 00/DF11: D0 10 BNE $DF23 00/DF13: BC 3E 00 LDY $003E,X 00/DF16: 8C A6 06 STY $06A6 00/DF19: F0 1C BEQ $DF37 00/DF1B: A9 00 00 LDA #$0000 00/DF1E: 99 3C 00 STA $003C,Y 00/DF21: 80 14 BRA $DF37 00/DF23: BD 3E 00 LDA $003E,X 00/DF26: 99 3E 00 STA $003E,Y 00/DF29: D0 05 BNE $DF30 00/DF2B: 8C A8 06 STY $06A8 00/DF2E: 80 07 BRA $DF37 00/DF30: A8 TAY 00/DF31: BD 3C 00 LDA $003C,X 00/DF34: 99 3C 00 STA $003C,Y 00/DF37: E2 20 SEP #$20 00/DF39: C6 4A DEC $4A 00/DF3B: C6 4A DEC $4A 00/DF3D: C2 20 REP #$20 00/DF3F: 8A TXA 00/DF40: 92 4A STA ($4A) 00/DF42: 82 7A 05 BRL $00E4BF COP-87 (0) Horizontal flip. ------------------------------------------------------------------------ 00/DF45: BB TYX 00/DF46: BD 1C 00 LDA $001C,X 00/DF49: 49 00 40 EOR #$4000 00/DF4C: 9D 1C 00 STA $001C,X 00/DF4F: 82 6D 05 BRL $00E4BF COP-88 (0) Vertical flip. ------------------------------------------------------------------------ 00/DF52: BB TYX 00/DF53: BD 1C 00 LDA $001C,X 00/DF56: 49 00 80 EOR #$8000 00/DF59: 9D 1C 00 STA $001C,X 00/DF5C: 82 60 05 BRL $00E4BF COP-89 (+4) ------------------------------------------------------------------------ 00/DF5F: BB TYX 00/DF60: AD 74 03 LDA $0374 00/DF63: 38 SEC 00/DF64: FD 00 00 SBC $0000,X 00/DF67: 10 04 BPL $DF6D 00/DF69: 49 FF FF EOR #$FFFF 00/DF6C: 1A INC 00/DF6D: 85 00 STA $00 00/DF6F: A7 38 LDA [$38] 00/DF71: E6 38 INC $38 00/DF73: E6 38 INC $38 00/DF75: C5 00 CMP $00 00/DF77: B0 03 BCS $DF7C 00/DF79: 82 3F 05 BRL $00E4BB 00/DF7C: A7 38 LDA [$38] 00/DF7E: E6 38 INC $38 00/DF80: E6 38 INC $38 00/DF82: 82 3C 05 BRL $00E4C1 COP-8A (+4) ------------------------------------------------------------------------ 00/DF85: BB TYX 00/DF86: AD 76 03 LDA $0376 00/DF89: 38 SEC 00/DF8A: FD 02 00 SBC $0002,X 00/DF8D: 10 04 BPL $DF93 00/DF8F: 49 FF FF EOR #$FFFF 00/DF92: 1A INC 00/DF93: 85 00 STA $00 00/DF95: A7 38 LDA [$38] 00/DF97: E6 38 INC $38 00/DF99: E6 38 INC $38 00/DF9B: C5 00 CMP $00 00/DF9D: B0 03 BCS $DFA2 00/DF9F: 82 19 05 BRL $00E4BB 00/DFA2: A7 38 LDA [$38] 00/DFA4: E6 38 INC $38 00/DFA6: E6 38 INC $38 00/DFA8: 82 16 05 BRL $00E4C1 COP-8B (+4) ------------------------------------------------------------------------ 00/DFAB: BB TYX 00/DFAC: AD 74 03 LDA $0374 00/DFAF: 38 SEC 00/DFB0: FD 00 00 SBC $0000,X 00/DFB3: 10 04 BPL $DFB9 00/DFB5: 49 FF FF EOR #$FFFF 00/DFB8: 1A INC 00/DFB9: 85 00 STA $00 00/DFBB: A7 38 LDA [$38] 00/DFBD: E6 38 INC $38 00/DFBF: E6 38 INC $38 00/DFC1: C5 00 CMP $00 00/DFC3: 90 03 BCC $DFC8 00/DFC5: 82 F3 04 BRL $00E4BB 00/DFC8: A7 38 LDA [$38] 00/DFCA: E6 38 INC $38 00/DFCC: E6 38 INC $38 00/DFCE: 82 F0 04 BRL $00E4C1 COP-8C (+4) ------------------------------------------------------------------------ 00/DFD1: BB TYX 00/DFD2: AD 76 03 LDA $0376 00/DFD5: 38 SEC 00/DFD6: FD 02 00 SBC $0002,X 00/DFD9: 10 04 BPL $DFDF 00/DFDB: 49 FF FF EOR #$FFFF 00/DFDE: 1A INC 00/DFDF: 85 00 STA $00 00/DFE1: A7 38 LDA [$38] 00/DFE3: E6 38 INC $38 00/DFE5: E6 38 INC $38 00/DFE7: C5 00 CMP $00 00/DFE9: 90 03 BCC $DFEE 00/DFEB: 82 CD 04 BRL $00E4BB 00/DFEE: A7 38 LDA [$38] 00/DFF0: E6 38 INC $38 00/DFF2: E6 38 INC $38 00/DFF4: 82 CA 04 BRL $00E4C1 COP-8D (+2) ------------------------------------------------------------------------ 00/DFF7: BB TYX 00/DFF8: BD 16 00 LDA $0016,X 00/DFFB: 89 00 80 BIT #$8000 00/DFFE: F0 03 BEQ $E003 00/E000: 82 BC 04 BRL $00E4BF 00/E003: A7 38 LDA [$38] 00/E005: E6 38 INC $38 00/E007: E6 38 INC $38 00/E009: 82 B5 04 BRL $00E4C1 COP-8E (+2) ------------------------------------------------------------------------ 00/E00C: BB TYX 00/E00D: BD 16 00 LDA $0016,X 00/E010: 89 00 80 BIT #$8000 00/E013: D0 03 BNE $E018 00/E015: 82 A7 04 BRL $00E4BF 00/E018: A7 38 LDA [$38] 00/E01A: E6 38 INC $38 00/E01C: E6 38 INC $38 00/E01E: 82 A0 04 BRL $00E4C1 COP-8F (0) ------------------------------------------------------------------------ 00/E021: BB TYX 00/E022: AD 74 03 LDA $0374 00/E025: DD 00 00 CMP $0000,X 00/E028: 90 0C BCC $E036 00/E02A: BD 1C 00 LDA $001C,X 00/E02D: 09 00 40 ORA #$4000 00/E030: 9D 1C 00 STA $001C,X 00/E033: 82 89 04 BRL $00E4BF 00/E036: BD 1C 00 LDA $001C,X 00/E039: 29 FF BF AND #$BFFF 00/E03C: 9D 1C 00 STA $001C,X 00/E03F: 82 7D 04 BRL $00E4BF COP-90 (0) ------------------------------------------------------------------------ 00/E042: BB TYX 00/E043: AD 76 03 LDA $0376 00/E046: DD 02 00 CMP $0002,X 00/E049: 90 0C BCC $E057 00/E04B: BD 1C 00 LDA $001C,X 00/E04E: 09 00 80 ORA #$8000 00/E051: 9D 1C 00 STA $001C,X 00/E054: 82 68 04 BRL $00E4BF 00/E057: BD 1C 00 LDA $001C,X 00/E05A: 29 FF 7F AND #$7FFF 00/E05D: 9D 1C 00 STA $001C,X 00/E060: 82 5C 04 BRL $00E4BF COP-91 (0) ------------------------------------------------------------------------ 00/E063: BB TYX 00/E064: E2 20 SEP #$20 00/E066: A5 3A LDA $3A 00/E068: 9D 36 00 STA $0036,X 00/E06B: C2 20 REP #$20 00/E06D: A5 38 LDA $38 00/E06F: 9D 18 00 STA $0018,X 00/E072: 82 4C 04 BRL $00E4C1 COP-92 (+1) ------------------------------------------------------------------------ 00/E075: BB TYX 00/E076: A7 38 LDA [$38] 00/E078: E6 38 INC $38 00/E07A: 29 FF 00 AND #$00FF 00/E07D: 9D 1E 00 STA $001E,X 00/E080: 9E 20 00 STZ $0020,X 00/E083: 22 5B 86 02 JSR $02865B 00/E087: 22 CD 86 02 JSR $0286CD 00/E08B: 82 36 04 BRL $00E4C4 COP-93 (+2) ------------------------------------------------------------------------ 00/E08E: BB TYX 00/E08F: A7 38 LDA [$38] 00/E091: E6 38 INC $38 00/E093: 29 FF 00 AND #$00FF 00/E096: 9D 1E 00 STA $001E,X 00/E099: 9E 20 00 STZ $0020,X 00/E09C: A7 38 LDA [$38] 00/E09E: E6 38 INC $38 00/E0A0: 29 FF 00 AND #$00FF 00/E0A3: 9D 2A 00 STA $002A,X 00/E0A6: 22 5B 86 02 JSR $02865B 00/E0AA: 22 CD 86 02 JSR $0286CD 00/E0AE: 82 13 04 BRL $00E4C4 COP-94 (0) ------------------------------------------------------------------------ 00/E0B1: BB TYX 00/E0B2: DE 26 00 DEC $0026,X 00/E0B5: 10 09 BPL $E0C0 00/E0B7: 22 5B 86 02 JSR $02865B 00/E0BB: 90 09 BCC $E0C6 00/E0BD: 82 FF 03 BRL $00E4BF 00/E0C0: BD 0E 00 LDA $000E,X 00/E0C3: 9D 14 00 STA $0014,X 00/E0C6: 22 CD 86 02 JSR $0286CD 00/E0CA: 82 FC 03 BRL $00E4C9 COP-95 (0) ------------------------------------------------------------------------ 00/E0CD: BB TYX 00/E0CE: DE 26 00 DEC $0026,X 00/E0D1: 10 0E BPL $E0E1 00/E0D3: 22 5B 86 02 JSR $02865B 00/E0D7: 90 0E BCC $E0E7 00/E0D9: DE 2A 00 DEC $002A,X 00/E0DC: D0 F5 BNE $E0D3 00/E0DE: 82 DE 03 BRL $00E4BF 00/E0E1: BD 0E 00 LDA $000E,X 00/E0E4: 9D 14 00 STA $0014,X 00/E0E7: 22 CD 86 02 JSR $0286CD 00/E0EB: 82 DB 03 BRL $00E4C9 COP-96 (0) Paired with 97 somehow? ------------------------------------------------------------------------ 00/E0EE: BB TYX 00/E0EF: BD 1C 00 LDA $001C,X 00/E0F2: 89 00 40 BIT #$4000 00/E0F5: D0 06 BNE $E0FD 00/E0F7: 09 00 40 ORA #$4000 00/E0FA: 9D 1C 00 STA $001C,X 00/E0FD: 82 BF 03 BRL $00E4BF COP-97 (0) Paired with 96 somehow? ------------------------------------------------------------------------ 00/E100: BB TYX 00/E101: BD 1C 00 LDA $001C,X 00/E104: 89 00 40 BIT #$4000 00/E107: F0 06 BEQ $E10F 00/E109: 29 FF BF AND #$BFFF 00/E10C: 9D 1C 00 STA $001C,X 00/E10F: 82 AD 03 BRL $00E4BF COP-98 (0) ------------------------------------------------------------------------ 00/E112: BB TYX 00/E113: BD 1C 00 LDA $001C,X 00/E116: 89 00 80 BIT #$8000 00/E119: D0 06 BNE $E121 00/E11B: 09 00 80 ORA #$8000 00/E11E: 9D 1C 00 STA $001C,X 00/E121: 82 9B 03 BRL $00E4BF COP-99 (0) ------------------------------------------------------------------------ 00/E124: BB TYX 00/E125: BD 1C 00 LDA $001C,X 00/E128: 89 00 80 BIT #$8000 00/E12B: F0 06 BEQ $E133 00/E12D: 29 FF 7F AND #$7FFF 00/E130: 9D 1C 00 STA $001C,X 00/E133: 82 89 03 BRL $00E4BF COP-9A (+8) Branch based on player proximity to enemy/NPC (X coordinate) The first two bytes are the proximity value. The next six are three short pointers for various cases: - Player is out of proximity (Player is too far to the left) - Player is in proximity - Player is out of proximity (Player is too far to the right) ------------------------------------------------------------------------ 00/E136: BB TYX 00/E137: A0 04 00 LDY #$0004 00/E13A: AD 74 03 LDA $0374 00/E13D: 38 SEC 00/E13E: FD 00 00 SBC $0000,X 00/E141: F0 15 BEQ $E158 00/E143: 10 0C BPL $E151 00/E145: 49 FF FF EOR #$FFFF 00/E148: C7 38 CMP [$38] 00/E14A: 90 0C BCC $E158 00/E14C: A0 02 00 LDY #$0002 00/E14F: 80 07 BRA $E158 00/E151: C7 38 CMP [$38] 00/E153: 90 03 BCC $E158 00/E155: A0 06 00 LDY #$0006 00/E158: B7 38 LDA [$38],Y 00/E15A: 82 64 03 BRL $00E4C1 COP-9B (+8) Branch based on player proximity to enemy/NPC (Y coordinate) The first two bytes are the proximity value. The next six are three short pointers for various cases: - Player is out of proximity (Player is too far to the top) - Player is in proximity - Player is out of proximity (Player is too far to the bottom) ------------------------------------------------------------------------ 00/E15D: BB TYX 00/E15E: A0 04 00 LDY #$0004 00/E161: AD 76 03 LDA $0376 00/E164: 38 SEC 00/E165: FD 02 00 SBC $0002,X 00/E168: F0 15 BEQ $E17F 00/E16A: 10 0C BPL $E178 00/E16C: 49 FF FF EOR #$FFFF 00/E16F: C7 38 CMP [$38] 00/E171: 90 0C BCC $E17F 00/E173: A0 02 00 LDY #$0002 00/E176: 80 07 BRA $E17F 00/E178: C7 38 CMP [$38] 00/E17A: 90 03 BCC $E17F 00/E17C: A0 06 00 LDY #$0006 00/E17F: B7 38 LDA [$38],Y 00/E181: 82 3D 03 BRL $00E4C1 COP-9C (+4) Even more mysterious branching :| ------------------------------------------------------------------------ 00/E184: BB TYX 00/E185: A0 00 00 LDY #$0000 00/E188: AD 74 03 LDA $0374 00/E18B: 38 SEC 00/E18C: FD 00 00 SBC $0000,X 00/E18F: 10 04 BPL $E195 00/E191: 49 FF FF EOR #$FFFF 00/E194: 1A INC 00/E195: 48 PHA 00/E196: AD 76 03 LDA $0376 00/E199: 38 SEC 00/E19A: FD 02 00 SBC $0002,X 00/E19D: 10 04 BPL $E1A3 00/E19F: 49 FF FF EOR #$FFFF 00/E1A2: 1A INC 00/E1A3: C3 01 CMP $01,S 00/E1A5: 90 05 BCC $E1AC 00/E1A7: A0 02 00 LDY #$0002 00/E1AA: 80 00 BRA $E1AC 00/E1AC: 68 PLA 00/E1AD: B7 38 LDA [$38],Y 00/E1AF: 82 0F 03 BRL $00E4C1 COP-9D (+1) ------------------------------------------------------------------------ 00/E1B2: BB TYX 00/E1B3: A7 38 LDA [$38] 00/E1B5: E6 38 INC $38 00/E1B7: 29 FF 00 AND #$00FF 00/E1BA: 9D 1E 00 STA $001E,X 00/E1BD: 9E 20 00 STZ $0020,X 00/E1C0: A5 38 LDA $38 00/E1C2: 9D 18 00 STA $0018,X 00/E1C5: BD 16 00 LDA $0016,X 00/E1C8: 29 FB FF AND #$FFFB 00/E1CB: 9D 16 00 STA $0016,X 00/E1CE: 82 EE 02 BRL $00E4BF COP-9E (+2) Argument is a two-byte pointer. ------------------------------------------------------------------------ 00/E1D1: BB TYX 00/E1D2: BD 16 00 LDA $0016,X 00/E1D5: 89 04 00 BIT #$0004 00/E1D8: D0 0C BNE $E1E6 00/E1DA: 22 F3 88 00 JSR $0088F3 00/E1DE: 90 03 BCC $E1E3 00/E1E0: 82 D8 02 BRL $00E4BB 00/E1E3: 82 E3 02 BRL $00E4C9 00/E1E6: A7 38 LDA [$38] 00/E1E8: E6 38 INC $38 00/E1EA: E6 38 INC $38 00/E1EC: 82 D2 02 BRL $00E4C1 COP-9F (+2) ------------------------------------------------------------------------ 00/E1EF: BB TYX 00/E1F0: A7 38 LDA [$38] 00/E1F2: E6 38 INC $38 00/E1F4: E6 38 INC $38 00/E1F6: 18 CLC 00/E1F7: 7D 00 00 ADC $0000,X 00/E1FA: 9D 00 00 STA $0000,X 00/E1FD: 82 BF 02 BRL $00E4BF COP-A0 (+2) ------------------------------------------------------------------------ 00/E200: BB TYX 00/E201: A7 38 LDA [$38] 00/E203: E6 38 INC $38 00/E205: E6 38 INC $38 00/E207: 18 CLC 00/E208: 7D 02 00 ADC $0002,X 00/E20B: 9D 02 00 STA $0002,X 00/E20E: 82 AE 02 BRL $00E4BF COP-A1 (+4) Teleport the NPC/enemy running this code? ------------------------------------------------------------------------ 00/E211: BB TYX 00/E212: A7 38 LDA [$38] 00/E214: E6 38 INC $38 00/E216: E6 38 INC $38 00/E218: 18 CLC 00/E219: 7D 00 00 ADC $0000,X 00/E21C: 9D 00 00 STA $0000,X 00/E21F: A7 38 LDA [$38] 00/E221: E6 38 INC $38 00/E223: E6 38 INC $38 00/E225: 18 CLC 00/E226: 7D 02 00 ADC $0002,X 00/E229: 9D 02 00 STA $0002,X 00/E22C: 82 90 02 BRL $00E4BF COP-A2 (+1) ------------------------------------------------------------------------ 00/E22F: BB TYX 00/E230: BD 1C 00 LDA $001C,X 00/E233: 29 FF CF AND #$CFFF 00/E236: 48 PHA 00/E237: A7 38 LDA [$38] 00/E239: E6 38 INC $38 00/E23B: 29 FF 00 AND #$00FF 00/E23E: EB XBA 00/E23F: 03 01 ORA $01,S 00/E241: 9D 1C 00 STA $001C,X 00/E244: 68 PLA 00/E245: 82 77 02 BRL $00E4BF COP-A3 (0) ------------------------------------------------------------------------ 00/E248: BB TYX 00/E249: BD 1A 00 LDA $001A,X 00/E24C: 09 00 40 ORA #$4000 00/E24F: 9D 1A 00 STA $001A,X 00/E252: 82 6A 02 BRL $00E4BF COP-A4 (0) ------------------------------------------------------------------------ 00/E255: BB TYX 00/E256: BD 1A 00 LDA $001A,X 00/E259: 09 00 20 ORA #$2000 00/E25C: 9D 1A 00 STA $001A,X 00/E25F: 82 5D 02 BRL $00E4BF COP-A5 (+8) Speculation - Branch based on facing direction? Arguments: Four short pointers. ------------------------------------------------------------------------ 00/E262: BB TYX 00/E263: BD 1C 00 LDA $001C,X 00/E266: 48 PHA 00/E267: 29 FF 3F AND #$3FFF 00/E26A: 9D 1C 00 STA $001C,X 00/E26D: 68 PLA 00/E26E: A0 00 00 LDY #$0000 00/E271: 29 00 C0 AND #$C000 00/E274: F0 10 BEQ $E286 00/E276: C8 INY 00/E277: C8 INY 00/E278: C9 00 40 CMP #$4000 00/E27B: F0 09 BEQ $E286 00/E27D: C8 INY 00/E27E: C8 INY 00/E27F: C9 00 80 CMP #$8000 00/E282: F0 02 BEQ $E286 00/E284: C8 INY 00/E285: C8 INY 00/E286: B7 38 LDA [$38],Y 00/E288: 82 36 02 BRL $00E4C1 COP-A6 (0) ------------------------------------------------------------------------ 00/E28B: BB TYX 00/E28C: BD 1A 00 LDA $001A,X 00/E28F: 29 FF BF AND #$BFFF 00/E292: 9D 1A 00 STA $001A,X 00/E295: 82 27 02 BRL $00E4BF COP-A7 (0) ------------------------------------------------------------------------ 00/E298: BB TYX 00/E299: BD 1A 00 LDA $001A,X 00/E29C: 29 FF DF AND #$DFFF 00/E29F: 9D 1A 00 STA $001A,X 00/E2A2: 82 1A 02 BRL $00E4BF COP-A8 (+3) Loads a pointer into $0022+24? ------------------------------------------------------------------------ 00/E2A5: BB TYX 00/E2A6: A7 38 LDA [$38] 00/E2A8: E6 38 INC $38 00/E2AA: E6 38 INC $38 00/E2AC: 9D 22 00 STA $0022,X 00/E2AF: E2 20 SEP #$20 00/E2B1: A7 38 LDA [$38] 00/E2B3: E6 38 INC $38 00/E2B5: D0 02 BNE $E2B9 00/E2B7: E6 39 INC $39 00/E2B9: 9D 24 00 STA $0024,X 00/E2BC: C2 20 REP #$20 00/E2BE: 82 FE 01 BRL $00E4BF COP-A9 (+3) ------------------------------------------------------------------------ 00/E2C1: BB TYX 00/E2C2: A7 38 LDA [$38] 00/E2C4: E6 38 INC $38 00/E2C6: E6 38 INC $38 00/E2C8: 9D 34 00 STA $0034,X 00/E2CB: E2 20 SEP #$20 00/E2CD: A7 38 LDA [$38] 00/E2CF: E6 38 INC $38 00/E2D1: D0 02 BNE $E2D5 00/E2D3: E6 39 INC $39 00/E2D5: 9D 2C 00 STA $002C,X 00/E2D8: C2 20 REP #$20 00/E2DA: BD 1A 00 LDA $001A,X 00/E2DD: 09 00 80 ORA #$8000 00/E2E0: 9D 1A 00 STA $001A,X 00/E2E3: 82 D9 01 BRL $00E4BF COP-AA (+1) ------------------------------------------------------------------------ 00/E2E6: BB TYX 00/E2E7: BD 1C 00 LDA $001C,X 00/E2EA: 29 FF F1 AND #$F1FF 00/E2ED: 48 PHA 00/E2EE: A7 38 LDA [$38] 00/E2F0: E6 38 INC $38 00/E2F2: 29 FF 00 AND #$00FF 00/E2F5: EB XBA 00/E2F6: 03 01 ORA $01,S 00/E2F8: 9D 1C 00 STA $001C,X 00/E2FB: 68 PLA 00/E2FC: 82 C0 01 BRL $00E4BF COP-AB (+9) ------------------------------------------------------------------------ 00/E2FF: BB TYX 00/E300: 20 3A E6 JSR $E63A 00/E303: A7 38 LDA [$38] 00/E305: E6 38 INC $38 00/E307: E6 38 INC $38 00/E309: 99 18 00 STA $0018,Y 00/E30C: 8A TXA 00/E30D: A7 38 LDA [$38] 00/E30F: E6 38 INC $38 00/E311: 29 FF 00 AND #$00FF 00/E314: E2 20 SEP #$20 00/E316: 99 36 00 STA $0036,Y 00/E319: C2 20 REP #$20 00/E31B: A7 38 LDA [$38] 00/E31D: E6 38 INC $38 00/E31F: E6 38 INC $38 00/E321: 99 00 00 STA $0000,Y 00/E324: A7 38 LDA [$38] 00/E326: E6 38 INC $38 00/E328: E6 38 INC $38 00/E32A: 99 02 00 STA $0002,Y 00/E32D: A7 38 LDA [$38] 00/E32F: E6 38 INC $38 00/E331: E6 38 INC $38 00/E333: 99 16 00 STA $0016,Y 00/E336: 82 86 01 BRL $00E4BF COP-AC (+9) ------------------------------------------------------------------------ 00/E339: BB TYX 00/E33A: 20 62 E6 JSR $E662 00/E33D: A7 38 LDA [$38] 00/E33F: E6 38 INC $38 00/E341: E6 38 INC $38 00/E343: 99 18 00 STA $0018,Y 00/E346: 8A TXA 00/E347: A7 38 LDA [$38] 00/E349: E6 38 INC $38 00/E34B: 29 FF 00 AND #$00FF 00/E34E: E2 20 SEP #$20 00/E350: 99 36 00 STA $0036,Y 00/E353: C2 20 REP #$20 00/E355: A7 38 LDA [$38] 00/E357: E6 38 INC $38 00/E359: E6 38 INC $38 00/E35B: 99 00 00 STA $0000,Y 00/E35E: A7 38 LDA [$38] 00/E360: E6 38 INC $38 00/E362: E6 38 INC $38 00/E364: 99 02 00 STA $0002,Y 00/E367: A7 38 LDA [$38] 00/E369: E6 38 INC $38 00/E36B: E6 38 INC $38 00/E36D: 99 16 00 STA $0016,Y 00/E370: 82 4C 01 BRL $00E4BF COP-AD (+1) ------------------------------------------------------------------------ 00/E373: BB TYX 00/E374: BD 16 00 LDA $0016,X 00/E377: 89 00 80 BIT #$8000 00/E37A: D0 03 BNE $E37F 00/E37C: 82 3E 01 BRL $00E4BD 00/E37F: BD 00 00 LDA $0000,X 00/E382: CD 42 03 CMP $0342 00/E385: 90 03 BCC $E38A 00/E387: 82 33 01 BRL $00E4BD 00/E38A: BD 02 00 LDA $0002,X 00/E38D: CD 44 03 CMP $0344 00/E390: 90 03 BCC $E395 00/E392: 82 28 01 BRL $00E4BD 00/E395: A5 38 LDA $38 00/E397: 3A DEC 00/E398: 3A DEC 00/E399: 9D 18 00 STA $0018,X 00/E39C: A7 38 LDA [$38] 00/E39E: E6 38 INC $38 00/E3A0: 29 FF 00 AND #$00FF 00/E3A3: 9D 14 00 STA $0014,X 00/E3A6: 82 20 01 BRL $00E4C9 COP-AE (+6) ------------------------------------------------------------------------ 00/E3A9: BB TYX 00/E3AA: DA PHX 00/E3AB: A7 38 LDA [$38] 00/E3AD: E6 38 INC $38 00/E3AF: E6 38 INC $38 00/E3B1: 18 CLC 00/E3B2: 7D 00 00 ADC $0000,X 00/E3B5: 85 16 STA $16 00/E3B7: A7 38 LDA [$38] 00/E3B9: E6 38 INC $38 00/E3BB: E6 38 INC $38 00/E3BD: 18 CLC 00/E3BE: 7D 02 00 ADC $0002,X 00/E3C1: 38 SEC 00/E3C2: E9 10 00 SBC #$0010 00/E3C5: 85 18 STA $18 00/E3C7: 22 B8 F2 04 JSR $04F2B8 00/E3CB: BF 00 80 7F LDA $7F8000,X 00/E3CF: FA PLX 00/E3D0: 29 0F 00 AND #$000F 00/E3D3: F0 09 BEQ $E3DE 00/E3D5: A7 38 LDA [$38] 00/E3D7: E6 38 INC $38 00/E3D9: E6 38 INC $38 00/E3DB: 82 E3 00 BRL $00E4C1 00/E3DE: 82 DA 00 BRL $00E4BB COP-AF (+5) ------------------------------------------------------------------------ 00/E3E1: BB TYX 00/E3E2: 20 3A E6 JSR $E63A 00/E3E5: A7 38 LDA [$38] 00/E3E7: E6 38 INC $38 00/E3E9: E6 38 INC $38 00/E3EB: 99 18 00 STA $0018,Y 00/E3EE: 8A TXA 00/E3EF: A7 38 LDA [$38] 00/E3F1: E6 38 INC $38 00/E3F3: 29 FF 00 AND #$00FF 00/E3F6: E2 20 SEP #$20 00/E3F8: 99 36 00 STA $0036,Y 00/E3FB: C2 20 REP #$20 00/E3FD: A7 38 LDA [$38] 00/E3FF: E6 38 INC $38 00/E401: E6 38 INC $38 00/E403: 99 16 00 STA $0016,Y 00/E406: 82 B6 00 BRL $00E4BF COP-B0 (+5) ------------------------------------------------------------------------ 00/E409: BB TYX 00/E40A: 20 62 E6 JSR $E662 00/E40D: A7 38 LDA [$38] 00/E40F: E6 38 INC $38 00/E411: E6 38 INC $38 00/E413: 99 18 00 STA $0018,Y 00/E416: 8A TXA 00/E417: A7 38 LDA [$38] 00/E419: E6 38 INC $38 00/E41B: 29 FF 00 AND #$00FF 00/E41E: E2 20 SEP #$20 00/E420: 99 36 00 STA $0036,Y 00/E423: C2 20 REP #$20 00/E425: A7 38 LDA [$38] 00/E427: E6 38 INC $38 00/E429: E6 38 INC $38 00/E42B: 99 16 00 STA $0016,Y 00/E42E: 82 8E 00 BRL $00E4BF COP-B1 (+9) ------------------------------------------------------------------------ 00/E431: BB TYX 00/E432: 20 3A E6 JSR $E63A 00/E435: A7 38 LDA [$38] 00/E437: E6 38 INC $38 00/E439: E6 38 INC $38 00/E43B: 99 18 00 STA $0018,Y 00/E43E: 8A TXA 00/E43F: A7 38 LDA [$38] 00/E441: E6 38 INC $38 00/E443: 29 FF 00 AND #$00FF 00/E446: E2 20 SEP #$20 00/E448: 99 36 00 STA $0036,Y 00/E44B: C2 20 REP #$20 00/E44D: A7 38 LDA [$38] 00/E44F: E6 38 INC $38 00/E451: E6 38 INC $38 00/E453: 18 CLC 00/E454: 7D 00 00 ADC $0000,X 00/E457: 99 00 00 STA $0000,Y 00/E45A: A7 38 LDA [$38] 00/E45C: E6 38 INC $38 00/E45E: E6 38 INC $38 00/E460: 18 CLC 00/E461: 7D 02 00 ADC $0002,X 00/E464: 99 02 00 STA $0002,Y 00/E467: A7 38 LDA [$38] 00/E469: E6 38 INC $38 00/E46B: E6 38 INC $38 00/E46D: 99 16 00 STA $0016,Y 00/E470: 82 4C 00 BRL $00E4BF COP-B2 (+9) ------------------------------------------------------------------------ 00/E473: BB TYX 00/E474: 20 62 E6 JSR $E662 00/E477: A7 38 LDA [$38] 00/E479: E6 38 INC $38 00/E47B: E6 38 INC $38 00/E47D: 99 18 00 STA $0018,Y 00/E480: 8A TXA 00/E481: A7 38 LDA [$38] 00/E483: E6 38 INC $38 00/E485: 29 FF 00 AND #$00FF 00/E488: E2 20 SEP #$20 00/E48A: 99 36 00 STA $0036,Y 00/E48D: C2 20 REP #$20 00/E48F: A7 38 LDA [$38] 00/E491: E6 38 INC $38 00/E493: E6 38 INC $38 00/E495: 18 CLC 00/E496: 7D 00 00 ADC $0000,X 00/E499: 99 00 00 STA $0000,Y 00/E49C: A7 38 LDA [$38] 00/E49E: E6 38 INC $38 00/E4A0: E6 38 INC $38 00/E4A2: 18 CLC 00/E4A3: 7D 02 00 ADC $0002,X 00/E4A6: 99 02 00 STA $0002,Y 00/E4A9: A7 38 LDA [$38] 00/E4AB: E6 38 INC $38 00/E4AD: E6 38 INC $38 00/E4AF: 99 16 00 STA $0016,Y 00/E4B2: 82 0A 00 BRL $00E4BF .