Disassebmly of C5, dated - September 30, 2006 C5/0000: 4C3400 JMP $0034 (from C0/004F) C5/0003: EA NOP C5/0004: 4C3101 JMP $0131 (from C0/02E0, C0/036F, C0/B79C, C0/B7C6, C0/B7F0, C0/B803, C0/B81E, C0/B838 C0/B84B, C0/B86D, C0/B880, C0/B898, C0/B8A6, C1/0044, C1/00D0, C1/015C C1/92BD, C2/AAD3, C3/0190, C3/0EE0, and C3/3E49) C5/0007: EA NOP C5/0008: 4C1C03 JMP $03C1 C5/000B: EA NOP C5/000C: 4CEA03 JMP $03EA C5/000F: EA NOP Data: "Pointers to the 6 main chunks of SPC data" - Evil Peer, add $50200 to each C5/0010: 0E07 C5/0012: 5C20 C5/0014: C71E C5/0016: 1620 C5/0018: 3820 C5/001A: 4A20 Data: "SPC addresses for 6 main chunks of SPC data" - Evil Peer C5/001C: 0002 C5/001E: 002C C5/0020: 0048 C5/0022: 001B C5/0024: 801A C5/0026: 001A Data: "Pointers to song data" - Evil Peer C5/0028: 963E C5/002A: 5F3C C5/002C: 1C3D C5/002E: 183E C5/0030: 9A3D C5/0032: 953F C5/0034: 8B PHB (from C5/0000) C5/0035: 0B PHD C5/0036: 08 PHP C5/0037: C220 REP #$20 C5/0039: C210 REP #$10 C5/003B: 48 PHA C5/003C: DA PHX C5/003D: 5A PHY C5/003E: E220 SEP #$20 C5/0040: A900 LDA #$00 C5/0042: 48 PHA C5/0043: AB PLB C5/0044: A20013 LDX #$1300 C5/0047: DA PHX C5/0048: 2B PLD (set direct page register to $1300) C5/0049: A2AABB LDX #$BBAA C5/004C: A0FFF0 LDY #$F0FF C5/004F: 8C4021 STY $2140 C5/0052: EC4021 CPX $2140 C5/0055: D0F8 BNE $004F C5/0057: A20000 LDX #$0000 C5/005A: AF1C00C5 LDA $C5001C ($00 at that address) C5/005E: 8D4221 STA $2142 C5/0061: AF1D00C5 LDA $C5001D ($02 at that address) C5/0065: 8D4321 STA $2143 C5/0068: A9CC LDA #$CC C5/006A: 8D4121 STA $2141 C5/006D: 8D4121 STA $2141 C5/0070: CD4021 CMP $2140 C5/0073: D0FB BNE $0070 (infinite loop?) C5/0075: A900 LDA #$00 C5/0077: EB XBA C5/0078: BF1000C5 LDA $C50010,X (Pointers to the 6 main chunks of SPC data, low byte) C5/007C: 8510 STA $10 C5/007E: BF1100C5 LDA $C50011,X (Pointers to the 6 main chunks of SPC data, high byte) C5/0082: 8511 STA $11 C5/0084: A9C5 LDA #$C5 C5/0086: 8512 STA $12 C5/0088: A00000 LDY #$0000 C5/008B: B710 LDA [$10],Y C5/008D: 18 CLC C5/008E: 6902 ADC #$02 C5/0090: 851C STA $1C C5/0092: C8 INY C5/0093: B710 LDA [$10],Y C5/0095: 6900 ADC #$00 C5/0097: 851D STA $1D C5/0099: C8 INY C5/009A: B710 LDA [$10],Y C5/009C: 8D4121 STA $2141 C5/009F: EB XBA C5/00A0: 8D4021 STA $2140 C5/00A3: CD4021 CMP $2140 C5/00A6: D0FB BNE $00A3 (infinite loop?) C5/00A8: 1A INC C5/00A9: EB XBA C5/00AA: C8 INY C5/00AB: C41C CPY $1C C5/00AD: D0EB BNE $009A C5/00AF: EB XBA C5/00B0: 1A INC C5/00B1: 1A INC C5/00B2: 1A INC C5/00B3: D001 BNE $00B6 C5/00B5: 1A INC C5/00B6: E8 INX C5/00B7: E8 INX C5/00B8: E00C00 CPX #$000C C5/00BB: F01D BEQ $00DA C5/00BD: EB XBA C5/00BE: BF1C00C5 LDA $C5001C,X (SPC addresses for 6 main chunks of SPC data, low byte) C5/00C2: 8D4221 STA $2142 C5/00C5: BF1D00C5 LDA $C5001D,X (SPC addresses for 6 main chunks of SPC data, high byte) C5/00C9: 8D4321 STA $2143 C5/00CC: EB XBA C5/00CD: 8D4121 STA $2141 C5/00D0: 8D4021 STA $2140 C5/00D3: CD4021 CMP $2140 C5/00D6: D0FB BNE $00D3 (infinite loop?) C5/00D8: 809B BRA $0075 C5/00DA: A00002 LDY #$0200 C5/00DD: 8C4121 STY $2141 C5/00E0: EB XBA C5/00E1: A900 LDA #$00 C5/00E3: 8D4121 STA $2141 C5/00E6: EB XBA C5/00E7: 8D4021 STA $2140 C5/00EA: CD4021 CMP $2140 C5/00ED: D0FB BNE $00EA (infinite loop? this is getting old...) C5/00EF: EB XBA C5/00F0: 8D4021 STA $2140 C5/00F3: A20001 LDX #$0100 C5/00F6: 9DFF12 STA $12FF,X C5/00F9: CA DEX C5/00FA: D0FA BNE $00F6 C5/00FC: A9FF LDA #$FF C5/00FE: 8505 STA $05 C5/0100: C220 REP #$20 C5/0102: AFC71EC5 LDA $C51EC7 (#$014D at that address) C5/0106: 18 CLC C5/0107: 690048 ADC #$4800 (#$494D?) C5/010A: 85F8 STA $F8 C5/010C: 85A0 STA $A0 C5/010E: A20008 LDX #$0800 C5/0111: CA DEX C5/0112: D0FD BNE $0111 (let's waste some cycles...) C5/0114: E220 SEP #$20 C5/0115: A900 LDA #$00 C5/0118: 85FA STA $FA C5/011A: A9C5 LDA #$C5 C5/011C: 85FB STA $FB C5/011E: A905 LDA #$05 C5/0120: 85F0 STA $F0 C5/0122: 0A ASL A C5/0123: 0A ASL A C5/0124: 0A ASL A C5/0125: 49FF EOR #$FF (#$28 becomes #$D7) C5/0127: 1A INC A C5/0128: 18 CLC C5/0129: 69F5 ADC #$F5 C5/012B: 85F2 STA $F2 (#$CD is the result if math is correct) C5/012D: 64F1 STZ $F1 C5/012F: 8040 BRA $0171 C5/0131: 8B PHB (from C5/0004, a lot of sound effect calls jump here) C5/0132: 0B PHD C5/0133: 08 PHP C5/0134: C220 REP #$20 C5/0136: C210 REP #$10 C5/0138: 48 PHA C5/0139: DA PHX C5/013A: 5A PHY C5/013B: E220 SEP #$20 C5/013D: A900 LDA #$00 C5/013F: 48 PHA C5/0140: AB PLB C5/0141: A20013 LDX #$1300 C5/0144: DA PHX C5/0145: 2B PLD C5/0146: E220 SEP #$20 C5/0148: A500 LDA $00 C5/014A: F025 BEQ $0171 C5/014C: 3019 BMI $0167 C5/014E: C910 CMP #$10 C5/0150: 901F BCC $0171 C5/0152: C918 CMP #$18 C5/0154: B00D BCS $0163 C5/0156: 290F AND #$0F C5/0158: 0A ASL C5/0159: EB XBA C5/015A: A900 LDA #$00 C5/015C: 48 PHA C5/015D: EB XBA C5/015E: 48 PHA C5/015F: FA PLX C5/0160: 7CFE06 JMP ($06FE,X) (ultimately jumps to either $0171 or $0180) C5/0163: C930 CMP #$30 C5/0165: B003 BCS $016A C5/0167: 4CA605 JMP $05A6 C5/016A: C940 CMP #$40 C5/016C: B003 BCS $0171 C5/016E: 4C0806 JMP $0608 C5/0171: E220 SEP #$20 C5/0173: 6400 STZ $00 C5/0175: C220 REP #$20 C5/0177: C210 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 C5/0180: E220 SEP #$20 C5/0182: A501 LDA $01 C5/0184: C505 CMP $05 C5/0186: F0E9 BEQ $0171 C5/0188: CF5E3CC5 CMP $C53C5E ($55, the number of songs) C5/018C: B0E3 BCS $0171 (song is greater than number of total songs, so branch?) C5/018E: 201F06 JSR $061F C5/0191: A501 LDA $01 C5/0193: C954 CMP #$54 (number of songs minus 1?) C5/0195: D006 BNE $01A6 (branch if not Ending #2?) C5/019D: A5F3 LDA $F3 C5/019F: F003 BEQ $01A4 C5/01A4: E220 SEP #$20 C5/01A6: A502 LDA $02 C5/01A8: 8D4221 STA $2142 C5/01AB: A501 LDA $01 C5/01AD: 8D4121 STA $2141 C5/01B0: A500 LDA $00 C5/01B2: 8D4021 STA $2140 C5/01B5: CD4021 CMP $2140 C5/01B8: D0FB BNE $01B5 C5/01BA: 1A INC A C5/01BB: 297F AND #$7F C5/01BD: 851E STA $1E C5/01BF: C220 REP #$20 C5/01C1: A22000 LDX #$0020 C5/01C4: 9E1E14 STZ $141E,X C5/01C7: CA DEX C5/01C8: D0FA BNE $01C4 C5/01CA: A90014 LDA #$1400 C5/01CD: 8510 STA $10 C5/01CF: A92014 LDA #$1420 C5/01D2: 8512 STA $12 C5/01D4: A500 LDA $00 C5/01D6: 2900FF AND #$FF00 C5/01D9: 4A LSR A C5/01DA: 4A LSR A C5/01DB: 4A LSR A C5/01DC: AA TAX C5/01DD: 692000 ADC #$0020 C5/01E0: 851C STA $1C C5/01E2: BF953FC5 LDA $C53F95,X (Table of Sample Indexes For Each Song, this determines which BRR samples to load) C5/01E6: 9210 STA ($10) C5/01E8: E610 INC $10 C5/01EA: E610 INC $10 C5/01EC: A04000 LDY #$0040 C5/01EF: D91E13 CMP $131E,Y C5/01F2: F00A BEQ $01FE C5/01F4: 88 DEY C5/01F5: 88 DEY C5/01F6: D0F7 BNE $01EF C5/01F8: 9212 STA ($12) C5/01FA: E612 INC $12 C5/01FC: E612 INC $12 C5/01FE: E8 INX C5/01FF: E8 INX C5/0200: E41C CPX $1C C5/0202: D0DE BNE $01E2 C5/0204: AD2014 LDA $1420 C5/0207: D003 BNE $020C C5/0209: 4CEA03 JMP $03EA C5/020C: A20000 LDX #$0000 C5/020F: 861C STX $1C C5/0211: BD2014 LDA $1420,X C5/0214: F03D BEQ $0253 C5/0216: DA PHX C5/0217: 3A DEC A C5/0218: 85E2 STA $E2 C5/021A: 0A ASL A C5/021B: 18 CLC C5/021C: 65E2 ADC $E2 C5/021E: AA TAX C5/021F: E220 SEP #$20 C5/0221: BF5F3CC5 LDA $C53C5F,X (BRR pointer low byte) C5/0225: 8510 STA $10 C5/0227: BF603CC5 LDA $C53C60,X (BRR pointer middle byte) C5/022B: 8511 STA $11 C5/022D: BF613CC5 LDA $C53C61,X (BRR pointer high byte) C5/0231: 8512 STA $12 C5/0233: A410 LDY $10 C5/0235: 6410 STZ $10 C5/0237: 6411 STZ $11 C5/0239: B710 LDA [$10],Y C5/023B: EB XBA C5/023C: C8 INY C5/023D: D002 BNE $0241 C5/023F: E612 INC $12 C5/0241: B710 LDA [$10],Y C5/0243: EB XBA C5/0244: C220 REP #$20 C5/0246: 18 CLC C5/0247: 651C ADC $1C C5/0249: 851C STA $1C C5/024B: FA PLX C5/024C: E8 INX C5/024D: E8 INX C5/024E: E02000 CPX #$0020 C5/0251: D0BE BNE $0211 C5/0253: A24000 LDX #$0040 C5/0256: B51E LDA $1E,X C5/0258: D006 BNE $0260 C5/025A: CA DEX C5/025B: CA DEX C5/025C: D0F8 BNE $0256 C5/025E: 800B BRA $026B C5/0260: B5A0 LDA $A0,X C5/0262: 18 CLC C5/0263: 651C ADC $1C C5/0265: B007 BCS $026E C5/0267: C5F1 CMP $F1 C5/0269: B003 BCS $026E C5/026B: 4C1C03 JMP $031C C5/026E: E220 SEP #$20 C5/0270: A907 LDA #$07 C5/0272: 8D4121 STA $2141 C5/0275: C220 REP #$20 C5/0277: A20000 LDX #$0000 C5/027A: B520 LDA $20,X C5/027C: F018 BEQ $0296 C5/027E: A00000 LDY #$0000 C5/0281: D90014 CMP $1400,Y C5/0284: F009 BEQ $028F C5/0286: C8 INY C5/0287: C8 INY C5/0288: C02000 CPY #$0020 C5/028B: D0F4 BNE $2081 C5/028D: 7420 STZ $20,X C5/028F: E8 INX C5/0290: E8 INX C5/0291: E04000 CPX #$0040 C5/0294: D0E4 BNE $2077 C5/0296: A20000 LDX #$0000 C5/0299: B520 LDA $20,X C5/029B: F007 BEQ $20A4 C5/029D: E8 INX C5/029E: E8 INX C5/029F: E04000 CPX #$0040 C5/02A2: D0F5 BNE $0299 C5/02A4: 861C STX $1C C5/02A6: A24000 LDX #$0040 C5/02A9: B51E LDA $1E,X C5/02AB: D004 BNE $02B1 C5/02AD: CA DEX C5/02AE: CA DEX C5/02AF: D0F8 BNE $02A9 C5/02B1: E41C CPX $1E C5/02B3: D003 BNE $02B8 C5/02B5: 4C1C03 JMP $031C (BRA would work here) C5/02B8: A00000 LDY #$0000 C5/02BB: B92013 LDA $1320,Y C5/02BE: D04D BNE $030D C5/02C0: BB TYX C5/02C1: 8004 BRA $02C7 C5/02C3: B520 LDA $20,X C5/02C5: D009 BNE $02D0 C5/02C7: E8 INX C5/02C8: E8 INX C5/02C9: E04000 CPX #$0040 C5/02CC: D0F5 BNE $02C3 C5/02CE: 8046 BRA $0316 C5/02D0: 992013 STA $1320,Y C5/02D3: 7420 STZ $20,X C5/02D5: B5A0 LDA $A0,X C5/02D7: 8D4221 STA $2142 C5/02DA: E220 SEP #$20 C5/02DC: A51E LDA $1E C5/02DE: 20A906 JSR $06A9 C5/02E1: 851E STA $1E C5/02E3: C220 REP #$20 C5/02E5: B9A013 LDA $13A0,Y C5/02E8: 8D4221 STA $2142 C5/02EB: 18 CLC C5/02EC: 7560 ADC $60,X C5/02EE: 99A213 STA $13A2,Y C5/02F1: E220 SEP #$20 C5/02F3: A51E LDA $1E C5/02F5: 20A906 JSR $06A9 C5/02F8: 851E STA $1E C5/02FA: C220 REP #$20 C5/02FC: B560 LDA $60,X C5/02FE: 8D4221 STA $2142 C5/0301: 996013 STA $1399,Y C5/0304: E220 SEP #$20 C5/0306: A51E LDA $1E C5/0308: 20A906 JSR $06A9 C5/030B: 851E STA $1E C5/030D: C220 REP #$20 C5/030F: C8 INY C5/0310: C8 INY C5/0311: C04000 CPY #$0040 C5/0314: D0A5 BNE $03BB C5/0316: E220 SEP #$20 C5/0318: A9F0 LDA #$F0 C5/031A: 851E STA $1E C5/031C: E220 SEP #$20 C5/031E: A20000 LDX #$0000 C5/0321: B520 LDA $20,X C5/0323: F00E BEQ $0333 C5/0333: A00000 LDY #$0000 C5/0336: C220 REP #$20 C5/0338: B92014 LDA $1420,Y C5/033B: F034 BEQ $0371 C5/033D: 9520 STA $20,X C5/033F: 5A PHY C5/0340: DA PHX C5/0341: 3A DEC A C5/0342: 85E2 STA $E2 C5/0344: 0A ASL A C5/0345: 18 CLC C5/0346: 65E2 ADC $E2 C5/0348: AA TAX C5/0349: E220 SEP #$20 C5/034B: BF5F3CC5 LDA $C53C5F,X (BRR pointer low byte) C5/034F: 8510 STA $10 C5/0351: BF603CC5 LDA $C53C60,X (BRR pointer middle byte) C5/0355: 8511 STA $11 C5/0357: BF613CC5 LDA $C53C61,X (BRR pointer high byte) C5/035B: 8512 STA $12 C5/035D: A410 LDY $10 C5/035F: 6410 STZ $10 C5/0361: 6411 STZ $11 C5/0363: FA PLX C5/0364: 207403 JSR $0374 C5/0367: 7A PLY C5/0368: C8 INY C5/0369: C8 INY C5/036A: E8 INX C5/036B: E8 INX C5/036C: C02000 CPY #$0020 C5/036F: D0C5 BNE $0336 C5/0371: 4CEA03 JMP $03EA (a BRA would work here) C5/0374: 08 PHP C5/0375: DA PHX C5/0376: E220 SEP #$20 C5/0378: FA PLX C5/0379: DA PHX C5/037A: B5A0 LDA $A0,X C5/037C: 8D4221 STA $2142 C5/037F: B5A1 LDA $A1,X C5/0381: 8D4321 STA $2143 C5/0384: A903 LDA #$03 C5/0386: 8D4121 STA $2141 C5/0389: A51E LDA $1E C5/038B: 8D4021 STA $2140 C5/038E: CD4021 CMP $2140 C5/0391: D0FB BNE $038E C5/0393: 1A INC A C5/0394: 297F AND #$7F C5/0396: 851E STA $1E C5/0398: B710 LDA [$10],Y C5/039A: 851C STA $1C C5/039C: 9560 STA $60,X C5/039E: 18 CLC C5/039F: 75A0 ADC $A0,X C5/03A1: 95A2 STA $A2,X C5/03A3: C8 INY C5/03A4: D002 BNE $03A8 C5/03A6: E612 INC $12 C5/03A8: B710 LDA [$10],Y C5/03AA: 851D STA $1D C5/03AC: 9561 STA $61,X C5/03AE: 75A1 ADC $A1,X C5/03B0: 95A3 STA $A3,X C5/03B2: C8 INY C5/03B3: D002 BNE $03B7 C5/03B5: E612 INC $12 C5/03B7: A61C LDX $1C C5/03B9: B710 LDA [$10],Y C5/03BB: 8D4121 STA $2141 C5/03BE: C8 INY C5/03BF: D002 BNE $03C3 C5/03C1: E612 INC $12 C5/03C3: B710 LDA [$10],Y C5/03C5: 8D4221 STA $2142 C5/03C8: C8 INY C5/03C9: D002 BNE $03CD C5/03CB: E612 INC $12 C5/03CD: B710 LDA [$10],Y C5/03CF: 8D4321 STA $2143 C5/03D2: C8 INY C5/03D3: D002 BNE $03D7 C5/03D5: E612 INC $12 C5/03D7: A51E LDA $1E C5/03D9: 20A906 JSR $06A9 C5/03DC: 851E STA $1E C5/03DE: CA DEX C5/03DF: CA DEX C5/03E0: CA DEX C5/03E1: D0D6 BNE $03B9 C5/03E3: A9F0 LDA #$F0 C5/03E5: 851E STA $1E C5/03E7: FA PLX C5/03E8: 28 PLP C5/03E9: 60 RTS C5/03EA: C220 REP #$20 C5/03EC: A98014 LDA #$1480 C5/03EF: 8510 STA $10 C5/03F1: A20000 LDX #$0000 C5/03F4: BD0014 LDA $1400,X C5/03F7: F02B BEQ $0424 C5/03F9: A00000 LDY #$0000 C5/03FC: D92013 CMP $1320,Y C5/03FF: F00C BEQ $040D C5/0401: C8 INY C5/0402: C8 INY C5/0403: C04000 CPY #$0040 C5/0406: D0F4 BNE $03FC C5/0408: A90000 LDA #$0000 C5/040B: 8017 BRA $0424 C5/040D: DA PHX C5/040E: 3A DEC A C5/040F: 0A ASL A C5/0410: AA TAX C5/0411: B9A013 LDA $13A0,Y C5/0414: 9210 STA ($10) C5/0416: E610 INC $10 C5/0418: E610 INC $10 C5/041A: 18 CLC C5/041B: 7F1C3DC5 ADC $C53D1C,X (loop start info for samples) C5/041F: 9210 STA ($10) C5/0421: FA PLX C5/0422: 8008 BRA $042C C5/0424: 9210 STA ($10) C5/0426: E610 INC $10 C5/0428: E610 INC $10 C5/042A: 9210 STA ($10) C5/042C: E610 INC $10 C5/042E: E610 INC $10 C5/0430: E8 INX C5/0431: E8 INX C5/0432: E02000 CPX #$0020 C5/0435: D0BD BNE $03F4 C5/0437: E220 SEP #$20 C5/0439: A2801B LDX #$1B80 C5/043C: 8E4221 STX $2142 C5/043F: A902 LDA #$02 C5/0441: 8D4121 STA $2141 C5/0444: A51E LDA $1E C5/0446: 8D4021 STA $2140 C5/0449: CD4021 CMP $2140 C5/044C: D0FB BNE $0449 C5/044E: 1A INC A C5/044F: 297F AND #$7F C5/0451: 851E STA $1E C5/0453: A20000 LDX #$0000 C5/0456: BD8014 LDA $1480,X C5/0459: 8D4221 STA $2142 C5/045C: BD8114 LDA $1481,X C5/045F: 8D4321 STA $2143 C5/0462: A51E LDA $1E C5/0464: 20A906 JSR $06A9 C5/0467: 851E STA $1E C5/0469: E8 INX C5/046A: E8 INX C5/046B: E04000 CPX #$0040 C5/046E: D0E6 BNE $0456 C5/0470: A9F0 LDA #$F0 C5/0472: 851E STA $1E C5/0474: E220 SEP #$20 C5/0476: A2401A LDX #$1A40 C5/0479: 8E4221 STX $2142 C5/047C: A902 LDA #$02 C5/047E: 8D4121 STA $2141 C5/0481: A51E LDA $1E C5/0483: 8D4021 STA $2140 C5/0486: CD4021 CMP $2140 C5/0489: D0FB BNE $0486 C5/048B: 1A INC A C5/048C: 297F AND #$7F C5/048E: 851E STA $1E C5/0490: A00000 LDY #$0000 C5/0493: C220 REP #$20 C5/0495: B90014 LDA $1400,Y C5/0498: 3A DEC A C5/0499: 0A ASL A C5/049A: AA TAX C5/049B: BF9A3DC5 LDA $C53D9A,X (wave rate multiplying for samples) C5/049F: 8D4221 STA $2142 C5/04A2: E220 SEP #$20 C5/04A4: A51E LDA $1E C5/04A6: 20A906 JSR $06A9 C5/04A9: 851E STA $1E C5/04AB: C8 INY C5/04AC: C8 INY C5/04AD: C02000 CPY #$0020 C5/04B0: D0E1 BNE $0493 C5/04B2: A9F0 LDA #$F0 C5/04B4: 851E STA $1E C5/04B6: E220 SEP #$20 C5/04B8: A2C01A LDX #$1AC0 C5/04BB: 8E4221 STX $2142 C5/04BE: A902 LDA #$02 C5/04C0: 8D4121 STA $2141 C5/04C3: A51E LDA $1E C5/04C5: 8D4021 STA $2140 C5/04C8: CD4021 CMP $2140 C5/04CB: D0FB BNE $04C8 C5/04CD: 1A INC A C5/04CE: 297F AND #$7F C5/04D0: 851E STA $1E C5/04D2: A00000 LDY #$0000 C5/04D5: C220 REP #$20 C5/04D7: B90014 LDA $1400,Y C5/04DA: 3A DEC A C5/04DB: 0A ASL A C5/04DC: AA TAX C5/04DD: BF183EC5 LDA $C53E18,X (ADSR data) C5/04E1: 8D4221 STA $2142 C5/04E4: E220 SEP #$20 C5/04E6: A51E LDA $1E C5/04E8: 20A906 JSR $06A9 C5/04EB: 851E STA $1E C5/04ED: C8 INY C5/04EE: C8 INY C5/04EF: C02000 CPY #$0020 C5/04F2: D0E1 BNE $04D5 C5/04F4: A9F0 LDA #$F0 C5/04F6: 851E STA $1E C5/04F8: E220 SEP #$20 C5/04FA: A505 LDA $05 C5/04FC: 3008 BMI $08 C5/0506: A600 LDX $00 C5/0508: 8604 STX $04 C5/050A: A602 LDX $02 C5/050C: 8606 STX $06 C5/050E: A2001C LDX #$1C00 C5/0511: 8E4221 STX $2142 C5/0514: A902 LDA #$02 C5/0516: 8D4121 STA $2141 C5/0519: A51E LDA $1E C5/051B: 8D4021 STA $2140 C5/051E: CD4021 CMP $2140 C5/0521: D0FB BNE $051E C5/0523: 1A INC A C5/0524: 297F AND #$7F C5/0526: 851E STA $1E C5/0528: C220 REP #$20 C5/052A: A501 LDA $01 C5/052C: 29FF00 AND #$00FF C5/052F: 85E2 STA $E2 C5/0531: 0A ASL A C5/0532: 18 CLC C5/0533: 65E2 ADC $E2 C5/0535: AA TAX C5/0536: E220 SEP #$20 C5/0538: BF963EC5 LDA $C53E96,X (SPC pointer low byte) C5/053C: 8510 STA $10 C5/053E: BF973EC5 LDA $C53E97,X (SPC pointer middle byte) C5/0542: 8511 STA $11 C5/0544: BF983EC5 LDA $C53E98,X (SPC pointer high byte) C5/0548: 8512 STA $12 C5/054A: A410 LDY $10 C5/054C: 6410 STZ $10 C5/054E: 6411 STZ $11 C5/0550: B710 LDA [$10],Y C5/0552: 851C STA $1C C5/0554: C8 INY C5/0555: D002 BNE $0559 C5/0557: E612 INC $12 C5/0559: B710 LDA [$10],Y C5/055B: 851D STA $1D C5/055D: C8 INY C5/055E: D002 BNE $0562 C5/0560: E612 INC $12 C5/0562: A61C LDX $1C C5/0564: E00010 CPX #$1000 C5/0567: 9002 BCC $056B C5/0569: E6F3 INC $F3 C5/056B: B710 LDA [$10],Y C5/056D: 8D4221 STA $2142 C5/0570: C8 INY C5/0571: D002 BNE $0575 C5/0575: B710 LDA [$10],Y C5/0577: 8D4321 STA $2143 C5/057A: C8 INY C5/057B: D002 BNE $02 C5/057F: A51E LDA $1E C5/0581: 20A906 JSR $06A9 C5/0584: 851E STA $1E C5/0586: CA DEX C5/0587: CA DEX C5/0588: 10E1 BPL $056B C5/058A: A9F0 LDA #$F0 C5/058C: A20004 LDX #$0400 C5/058F: 8D4121 STA $2141 C5/0592: 8D4021 STA $2140 C5/0595: CD4021 CMP $2140 C5/0598: F006 BEQ $05A0 C5/059A: CA DEX C5/059B: D0F8 BNE $0595 C5/05A0: CA DEX C5/05A1: D0FD BNE $05A0 C5/05A3: 4C7101 JMP $0171 C5/05A6: E220 SEP #$20 C5/05A8: A503 LDA $03 C5/05AA: 8D4321 STA $2143 C5/05AD: A502 LDA $02 C5/05AF: 8D4221 STA $2142 C5/05B2: A501 LDA $01 C5/05B4: 8D4121 STA $2141 C5/05B7: A500 LDA $00 C5/05B9: A20004 LDX #$0400 C5/05BC: 8D4021 STA $2140 C5/05BF: CD4021 CMP $2140 C5/05C2: F003 BEQ $05C7 C5/05C4: CA DEX C5/05C5: D0F8 BNE $F8 C5/05C7: C9F0 CMP #$F0 C5/05C9: 903A BCC $0605 C5/05CB: C9F2 CMP #$F2 C5/05CD: B014 BCS $05E3 C5/05CF: A505 LDA $05 C5/05D1: 300A BMI $05DD C5/05D3: 8509 STA $09 C5/05D5: A504 LDA $04 C5/05D7: 8508 STA $08 C5/05D9: A606 LDX $06 C5/05DB: 860A STX $0A C5/05DD: A9FF LDA #$FF C5/05DF: 8505 STA $05 C5/05E1: 8022 BRA $0605 C5/05E3: C9FC CMP #$FC C5/05E5: D01E BNE $0605 C5/05E7: A501 LDA $01 C5/05E9: 290F AND #$0F C5/05EB: 85F0 STA $F0 C5/05ED: 0A ASL A C5/05EE: 0A ASL A C5/05EF: 0A ASL A C5/05F0: 49FF EOR #$FF C5/05F2: 1A INC A C5/05F3: 18 CLC C5/05F4: 69F5 ADC #$F5 C5/05F6: 85F2 STA $F2 C5/05F8: A20000 LDX #$0000 C5/05FB: A900 LDA #$00 C5/05FD: 9520 STA $20,X C5/05FF: E8 INX C5/0600: E04000 CPX #$0040 C5/0603: D0F8 BNE $ C5/0605: 4C7101 JMP $0171 C5/0608: C220 REP #$20 C5/060A: 290F00 AND #$000F C5/060D: 0A ASL A C5/060E: 0A ASL A C5/060F: AA TAX C5/0610: BFBB06C5 LDA $C506BB,X (data for SPC codes $30-$3F) C5/0614: 8502 STA $02 C5/0616: BFB906C5 LDA $C506B9,X (data for SPC codes $30-$3F) C5/061A: 8500 STA $00 C5/061C: 4C4601 JMP $0146 C5/061F: 08 PHP C5/0620: E220 SEP #$20 C5/0622: A500 LDA $00 C5/0624: C914 CMP #$14 C5/0626: B010 BCS $0638 C5/0628: A20000 LDX #$0000 C5/062B: BFF906C5 LDA $C506F9,X (Song indexes which need the current song to be paused then resumed) C5/062F: 300D BMI $063E (branch if song is not on list?) C5/0631: C501 CMP $01 C5/0633: F003 BEQ $0638 (branch if song on list matched?) C5/0635: E8 INX C5/0636: 80F3 BRA $062B (loop for all songs?) C5/0638: A904 LDA #$04 C5/063A: 0500 ORA $00 C5/063C: 8500 STA $00 C5/063E: 28 PLP C5/063F: 60 RTS C5/06A9: 08 PHP C5/06AA: E220 SEP #$20 C5/06AC: 8D4021 STA $2140 C5/06AF: CD4021 CMP $2140 C5/06B2: D0FB BNE $06AF (infinite loop?) C5/06B4: 1A INC A C5/06B5: 297F AND #$7F C5/06B7: 28 PLP C5/06B8: 60 RTS Data: SPC codes $30-3F (shortcuts to play songs $00-$0F) - Evil Peer C5/06B9: 1000 (from C5/0616) C5/06BB: FF00 (from C5/0610) C5/06BD: 1001 C5/06BF: FF00 C5/06C1: 1002 C5/06C3: FF00 C5/06C5: 1003 C5/06C7: FF00 C5/06C9: 1004 C5/06CB: FF00 C5/06CD: 1005 C5/06CF: FF00 C5/06D1: 1006 C5/06D3: FF00 C5/06D5: 1007 C5/06D7: FF00 C5/06D9: 1008 C5/06DB: FF00 C5/06DD: 1009 C5/06DF: FF00 C5/06E1: 100A C5/06E3: FF00 C5/06E5: 100B C5/06E7: FF00 C5/06E9: 100C C5/06EB: FF00 C5/06ED: 100D C5/06EF: FF00 C5/06F1: 100E C5/06F3: FF00 C5/06F5: 100F C5/06F7: FF00 Data: Song indexes which need the current song to be paused then resumed - Evil Peer C5/06F9: 24 (Battle, from C5/062B) C5/06FA: 38 (Nighty Night) C5/06FB: 14 (Decisive battle) C5/06FC: 33 (Fierce battle) C5/06FD: FF (Silence?) Data: Jump table for SPC codes $10-$17 - Evil Peer C5/06FE: 8001 (from C5/0160) C5/0700: 8001 C5/0702: 7101 C5/0704: 7101 C5/0706: 8001 C5/0708: 8001 C5/070A: 7101 C5/070C: 7101 Data: Length of SPC loop code - Evil Peer C5/070E: B717 Main SPC code loop - Evil Peer C5/0710: 20 ... C5/1EC6: 74 Data: Length of sound effect sample data - Evil Peer C5/1EC7: 4D01 Data: Sound effect sample data - Evil Peer C5/1EC9: 02 ... C5/2015: 12 Data: Length of pointer table to sound effect sample data - Evil Peer (that's a long ass explanation) C5/2016: 2000 Data: Pointer table to sound effect sample data - Evil Peer C5/2018: 0048 C5/201A: 0048 C5/201C: 2448 C5/201E: 2448 C5/2020: 4848 C5/2022: 4848 C5/2024: 6C48 C5/2026: 8748 C5/2028: AB48 C5/202A: C648 C5/202C: D848 C5/202E: D848 C5/2030: EA48 C5/2032: EA48 C5/2034: FC48 C5/2036: 1749 Data: Length of ADSR data for sound effect samples - Evil Peer C5/2038: 1000 Data: ADSR data for sound effect samples - Evil Peer C5/203A: FFE0 (no matter how you slice it, this is inefficient. well unless it's 24-bit...) C5/203C: FFE0 C5/203E: FFE0 C5/2040: FFE0 C5/2042: FFE0 C5/2044: FFE0 C5/2046: FFE0 C5/2048: FFE0 Data: Length of wave rate multiplying values for sound effect samples - Evil Peer C5/204A: 1000 Data: Wave rate multiplying values for sound effect samples C5/204C: E1A0 C5/204E: E1A0 C5/2050: E1A0 C5/2052: E1A0 C5/2054: 0000 C5/2056: E1A0 C5/2058: E1A0 C5/205A: 0000 Data: Length of type 1 sound effect instruction pointers and instructions - Evil Peer C5/205C: 001C Data: Type 1 sound effect instruction pointers and instructions - Evil Peer C5/205E: 00 ... C5/3C5D: FF Data: Number of songs - Evil Peer C5/3C5E: 55 Data: Pointers to BRR's - Evil Peer C5/3C5F: 354AC5 C5/3C62: Data: Loop start info for samples, constants to be added to wave table pointers, index 0 = sample 1 - Evil Peer C5/3C1C: Data: Wave rate multiplying data for samples - Evil Peer C5/3C9A: Data: ADSR data for samples - Evil Peer C5/3E18: Data: Pointers to SPC's - Evil Peer C5/3E96: 7A5CC8 Data: Table of sample indexes for each song - Evil Peer C5/3F95: Data: BRR samples - Evil Peer C5/4A35 - C8/5C79