; Disassembly of maze.bin ; Disassembled Fri Feb 08 23:31:38 2002 ; Using DiStella v2.0 ; ; Command Line: D:\MYDOCU~1\DESKTOP\ATARI2~1\_EMULA~1\DISTELLA\DISTELLA.EXE -a maze.bin ; VSYNC = $00 VBLANK = $01 WSYNC = $02 RSYNC = $03 NUSIZ0 = $04 NUSIZ1 = $05 COLUPF = $08 COLUBK = $09 CTRLPF = $0A REFP0 = $0B REFP1 = $0C PF0 = $0D PF1 = $0E PF2 = $0F RESP0 = $10 AUDC0 = $15 AUDF0 = $17 AUDV0 = $19 AUDV1 = $1A GRP0 = $1B GRP1 = $1C ENAM0 = $1D ENAM1 = $1E ENABL = $1F HMP0 = $20 HMBL = $24 VDELP0 = $25 VDELBL = $27 HMOVE = $2A SWCHA = $0280 SWCHB = $0282 INTIM = $0284 TIM8T = $0295 TIM64T = $0296 LFEAD = $FEAD LFEEB = $FEEB LFEF8 = $FEF8 LFF19 = $FF19 ORG $F000 LF000: .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$60,$F0,$60,$90 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$77,$22,$22,$33 .byte $22,$77,$11,$77,$44,$77,$77,$44,$66,$44,$77,$44,$44,$77,$55,$55 .byte $77,$44,$77,$11,$77,$77,$55,$77,$11,$77,$44,$44,$44,$44,$77,$77 .byte $55,$77,$55,$77,$77,$44,$77,$55,$77,$77,$55,$55,$55,$77 LF0EE: .byte $BC,$C1,$C6,$CB,$D0,$D5,$DA,$DF,$E4,$E9,$BC,$C1,$C6,$CB,$D0,$D5 .byte $EA,$EA ;Start of Screen? ;F0 seems to be used as indirect pointers for Playfield data. This initializes it. LF100: LDA #$F0 LDX #$07 LF104: STA $F0,X DEX BNE LF104 LDX $BD TXA AND #$03 TAY LDA LF0EE,Y STA $F6 TXA ROL ROL ROL AND #$03 TAY LDA LF0EE,Y STA $F0 TXA LSR LSR AND #$0F TAY LDA LF0EE,Y STA $F4 LDA #$B4 CPY #$09 BCC LF133 LDA #$BC LF133: STA $F2 ; draw the numbers (game select info) LDY #$04 LF137: LDX #$02 LF139: STA WSYNC LDA #$00 STA PF1 LDA ($F0),Y STA PF0 LDA ($F2),Y AND #$F0 STA PF2 LDA ($F4),Y STA PF0 JSR LF931 LDA ($F6),Y AND #$0F STA PF2 DEX BNE LF139 DEY BPL LF137 ; clear the playfield INY STY PF0 STY PF1 STY PF2 STA WSYNC STX $F4 STX $F5 LDA $DF AND #$03 BEQ LF17E LDX #$01 LF171: LDA $EA,X AND #$07 TAY LDA LFEFD,Y STA $F4,X DEX BPL LF171 ; Loop here. Hmmm. LF17E: LDA #$05 STA $F0 LF182: STA WSYNC LDA $C0 STA COLUPF LDA $F4 STA PF1 JSR LF931 LDX $C1 LDY $C2 STX COLUPF STY COLUPF LDA $F5 STA PF1 LDA $C0 STA COLUPF NOP NOP NOP NOP STX COLUPF STY COLUPF DEC $F0 BPL LF182 ; probably setup for drawing the maze LDA #$00 STA PF1 LDA #$F0 STA $F9 ; setting the high bytes of the GRP indirect addressing STA $FB ; LDA $C7 ASL CLC ADC #$00 STA $F8 LDA $C8 ASL CLC ADC #$00 STA $FA LDX #$02 LF1C7: LDA $C9,X SEC SBC #$2E STA $C9,X DEX BPL LF1C7 ; Set the background color. Must be about to draw the maze. LDA $C4 STA COLUBK BIT $B0 BMI LF1DB LDA $C2 LF1DB: STA WSYNC STA COLUPF STX $F2 STX $F3 LDY #$07 LF1E5: DEY BNE LF1E5 LDX #$1E ; Here's the key to the PHP trick. Set the top of the stack to TXS ; ENAM1. LDX #$0B ; 11 LDA $F0 ; DRAW THE MAZE. Here's the good stuff. ; ; X is used as the main counter. ; Y indexes the player graphics ; ; The playfield is not reflected. ; ; Ball/Missiles drawn using PHP trick ; ; No WSyncs used in here. ; ; I think the loop starts a bit before the edge of the first line. ; ; Playfield temp variables: ; $F2 = PF0 ; $F3 = PF0 ; $F4 = PF1 ; $F5 = PF1 ; $F6 = PF2 ; $F7 = PF2 ; ; $C9 = M0 ; $CA = M1 ; $CB = BL ; ; $F8 = indirect GRP0 ; $FA = indirect GRP1 ; ; ; ****************************************************************************************** LF1EF: LDA $8C,X ORA #$AA ; 10101010 This explains how the maze is so big. STA $F4 ; He's only using every other byte for the PF data. STA PF1 LDA $CA AND #$FE ; 11111110 PHP ; Enable M1 LDA $C9 AND #$FE ; 11111110 PHP ; Enable M0 LDA $F2 ; The first line probably starts about here. STA PF0 LDA ($FA),Y STA GRP1 LDA $98,X ORA #$55 ; 01010101 Here's another instance of his trick of STA $F6 ; using every other byte for PF data. STA PF2 LDA $F3 ; pf0 STA PF0 LDA $A4,X ; pf1 ORA #$AA ; 10101010 STA $F5 STA PF1 LDA $B0,X ; pf2 ORA #$55 ; 01010101 AND #$7F ; 01111111 STA PF2 STA $F7 INY LDA ($F8),Y STA GRP0 LDA ($FA),Y STA GRP1 LDA $F2 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 LDA $F3 STA PF0 PLA PLA PLA ; Roll the stack back to ENABL LDA $F5 STA PF1 LDA $F7 STA PF2 INC $CB ; What's this part? LDA $B0,X ; Something to do with changing the color BMI LF255 ; of the playfield... LDA $C2 BNE LF258 LF255: NOP LDA $C4 LF258: STA COLUPF LDA $F2 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 INC $CA ; M0 INC $C9 ; M1 INY LDA ($F8),Y STA GRP0 LDA $F3 STA PF0 LDA $F5 STA PF1 LDA $F7 STA PF2 LDA $CB AND #$FE PHP LDA $F2 STA PF0 LDA $CA AND #$FE PHP LDA $C9 AND #$FE PHP LDA ($FA),Y STA GRP1 LDA $F4 STA PF1 LDA $F6 STA PF2 INY LDA ($F8),Y STA GRP0 LDA $F3 STA PF0 LDA $F5 STA PF1 LDA $F7 STA PF2 LDA $80,X AND #$55 STA $F0 ASL ASL ASL ASL STA $F1 LDA ($FA),Y STA GRP1 LDA $F2 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 LDA $F3 STA PF0 LDA $F5 STA PF1 PLA PLA PLA LDA $F7 STA PF2 INC $CB INC $CA INC $C9 LDA $F2 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 INY LDA ($F8),Y STA GRP0 LDA $CB AND #$FE PHP LDA $F3 STA PF0 LDA $F5 STA PF1 LDA $F7 STA PF2 NOP LDA $F0 LDA $8C,X AND #$AA STA $F4 STA PF1 LDA $CA AND #$FE PHP LDA $C9 AND #$FE PHP LDA ($FA),Y STA GRP1 LDA $F0 STA PF0 LDA $98,X AND #$55 STA $F6 STA PF2 LDA $F1 STA PF0 LDA $A4,X AND #$AA STA $F5 STA PF1 LDA $B0,X AND #$55 STA PF2 STA $F7 INY LDA ($F8),Y STA GRP0 LDA ($FA),Y STA GRP1 LDA $F0 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 LDA $F1 STA PF0 PLA PLA PLA LDA $F5 STA PF1 LDA $F7 STA PF2 LDA $7F,X ORA #$55 STA $F2 ASL ASL ASL ASL STA $F3 LDA $F0 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 INC $CB INC $CA INC $C9 LDA $F1 STA PF0 LDA $F5 STA PF1 LDA $F7 STA PF2 INY LDA ($F8),Y STA GRP0 LDA $CB AND #$FE PHP LDA $F0 STA PF0 LDA $CA AND #$FE PHP LDA $C9 AND #$FE PHP LDA ($FA),Y STA GRP1 LDA $F4 STA PF1 LDA $F6 STA PF2 LDA $F1 STA PF0 LDA $F5 STA PF1 LDA $F7 STA PF2 INY LDA ($F8),Y STA GRP0 INC $CB INC $CA INC $C9 LDA ($FA),Y STA GRP1 LDA $F0 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 LDA $F1 STA PF0 PLA PLA PLA LDA $F5 STA PF1 LDA $F7 STA PF2 INY LDA ($F8),Y STA GRP0 LDA $F0 STA PF0 LDA $F4 STA PF1 LDA $F6 STA PF2 LDA $CB AND #$FE PHP DEC $F4 DEC $F4 DEC $F4 LDA $F1 STA PF0 LDA $F5 STA PF1 LDA $F7 DEX BMI LF40D STA PF2 JMP LF1EF ; done drawing maze LF40D: LDX #$06 STA PF2 LF411: LDA #$00 STA WSYNC STA ENAM0 STA ENAM1 STA ENABL STA GRP0 STA GRP1 LDA #$FF STA PF0 STA PF1 STA PF2 LDY #$04 LF429: DEY BPL LF429 LSR STA PF2 DEX BNE LF411 LDA $C3 STA COLUBK STX PF0 STX PF1 STX PF2 LDX #$02 LF43E: DEC $C9,X DEC $C9,X DEX BPL LF43E TXS LDA #$26 STA TIM64T JSR LF945 LF44E: LDA $E1 LSR BCS LF492 LDA $BC AND #$01 BEQ LF460 LDA SWCHB AND #$01 BNE LF48F LF460: LDA SWCHB AND #$03 CMP #$02 BNE LF476 LDA $BC ORA #$01 STA $BC LDA #$00 STA $DC JMP LF4BE LF476: LDA SWCHB AND #$02 BEQ LF495 LDA #$50 STA $E2 LDA $BC AND #$60 CMP #$40 BNE LF492 LDA REFP1 AND PF0 BMI LF492 LF48F: JMP LFA7E LF492: JMP LF4BE LF495: LDA $BC ORA #$50 AND #$FE STA $BC INC $E2 LDA $E2 CMP #$0D BCC LF4BE LDA SWCHB LSR LDA #$0C BCC LF4AF LDA #$02 LF4AF: STA $E2 INC $BD JSR LF967 LDA #$0A JSR LFB89 JMP LF764 LF4BE: LDA REFP1 AND PF0 ORA #$7F AND SWCHA CMP #$FF BEQ LF4CF LDA #$00 STA $DC LF4CF: LDX #$01 LF4D1: LDA REFP1,X BPL LF4DB LDA $EA,X ORA #$10 STA $EA,X LF4DB: DEX BPL LF4D1 LDA $BD ROL ROL ROL AND #$03 TAY LDA $E3 AND #$07 BNE LF504 BIT $E3 LDA $E3 BMI LF4F8 BVS LF4F8 LDA #$40 ORA $E3 LF4F8: CLC ADC LFEE7,Y STA $E3 LDA $BC AND #$60 BEQ LF507 LF504: JMP LF6C7 LF507: LDX #$01 LDA SWCHA ASL ASL ASL ASL LF510: EOR #$F0 STA $F3 LDA $E0 AND #$04 BEQ LF535 LDA $DD,X BEQ LF523 DEC $DD,X JMP LF535 LF523: LDA REFP1,X BMI LF535 LDA #$7D STA $DD,X LDA #$14 STA $E1 LDA $BC ORA #$02 STA $BC LF535: LDA SWCHB AND LFED3,X BEQ LF546 LDA $E3 AND #$C0 BNE LF546 JMP LF638 LF546: LDA $EA,X AND #$40 BNE LF55A LDA $E4,X BEQ LF581 LDA $EA,X EOR #$20 STA $EA,X AND #$20 BEQ LF55D LF55A: JMP LF632 LF55D: DEC $E4,X LDA #$0F STA $F0 LDA $E4,X CMP #$C8 BCS LF55A CMP #$96 BCS LF57B LSR $F0 CMP #$64 BCS LF57B LSR $F0 CMP #$32 BCS LF57B LSR $F0 LF57B: AND $F0 CMP $F0 BNE LF55A LF581: LDA $D5,X AND #$07 BEQ LF5DA CMP #$02 BNE LF5D7 LDA $E0 AND #$80 BEQ LF5D7 LDA $EA,X AND #$10 BEQ LF5D7 LDA REFP1,X BMI LF5D7 LDA $EA,X AND #$EF STA $EA,X LDA $E6,X CMP #$19 BEQ LF5BA LDA $E6,X STA $C2 LDA $E8,X STA $C3 JSR LF9F1 LDA $C4 EOR #$FF AND ($C5),Y STA ($C5),Y LF5BA: LDA $CE,X LSR LSR STA $E8,X STA $C3 LDA $C7,X LSR STA $E6,X STA $C2 JSR LF9F1 LDA $C4 ORA ($C5),Y STA ($C5),Y LDA #$05 JSR LFEA3 LF5D7: JMP LF62F LF5DA: LDA $F3 BEQ LF632 LDY #$FF STY $F1 LDY #$03 LF5E4: STY $F2 ASL $F3 BCC LF5FF LDA LFEE3,Y JSR LF990 BNE LF5FF LDY $F2 LDA LFEE3,Y EOR $D5,X AND #$C0 BNE LF620 STY $F1 LF5FF: LDY $F2 DEY BPL LF5E4 LDY $F1 BPL LF620 LDA $EC,X BNE LF61D LDA #$1F CPX #$00 BEQ LF613 LSR LF613: STA AUDF0,X LDA #$0C STA AUDC0,X LDA #$05 STA AUDV0,X LF61D: JMP LF638 LF620: LDA $EC,X BNE LF628 LDA #$01 STA $EC,X LF628: LDA LFEE3,Y ORA #$04 STA $D5,X LF62F: JSR LFD91 LF632: LDA $EC,X BNE LF638 STA AUDV0,X LF638: DEX BMI LF643 LDA SWCHA AND #$F0 JMP LF510 LF643: LDA $DF AND #$03 BEQ LF686 LDX #$01 LF64B: LDA #$02 STA $F5 LF64F: LDY $F5 JSR LFCFB BCC LF66D LDA LFECD,Y AND $EA,X BNE LF66D LDA LFECD,Y ORA $EA,X STA $EA,X AND #$07 TAY LDA LFF21,Y JSR LFEA3 LF66D: DEC $F5 BPL LF64F DEX BPL LF64B LDX #$02 LF676: LDA LFECD,X AND $EA AND $EB BEQ LF683 LDA #$AA STA $C9,X LF683: DEX BPL LF676 LF686: LDA $DF AND #$94 BEQ LF6C7 LDX #$01 LF68E: LDY #$04 LF690: JSR LFCFB BCC LF6C1 LDA $E0 AND #$20 BEQ LF6A1 JSR LFDFD JMP LF6C4 LF6A1: LDA $EA,X AND #$40 BNE LF6C4 LDA $EA,X ORA #$40 STA $EA,X LDA $EA AND $EB AND #$40 BEQ LF6BB LDA $BC ORA #$40 STA $BC LF6BB: JSR LFDDB JMP LF6C4 LF6C1: DEY BPL LF690 LF6C4: DEX BPL LF68E LF6C7: LDA $E0 AND #$40 BEQ LF6ED DEC $DE BNE LF6ED LDA $BC AND #$60 BNE LF6ED LDA $DD CMP #$1E BCC LF6E1 SBC #$04 STA $DD LF6E1: STA $DE LDA #$1E STA $E1 LDA $BC ORA #$02 STA $BC LF6ED: JSR LF8D5 DEC $E3 LDA $E0 AND #$10 BEQ LF73B LDX #$03 LF6FA: LDA $BC AND #$10 BNE LF711 LDA CTRLPF,X BPL LF711 LDA #$AA STA $C7,X LDA $E8,X AND #$F7 STA $E8,X JMP LF734 LF711: LDA $E8,X AND #$08 BEQ LF71F LDA $E1 AND #$1F CMP #$1F BNE LF731 LF71F: LDA $D3,X STA $D5,X LDA $CC,X STA $CE,X LDA $C5,X STA $C7,X LDA $E8,X ORA #$08 STA $E8,X LF731: JSR LFD50 LF734: DEX CPX #$02 BPL LF6FA BMI LF764 LF73B: LDA $BC AND #$20 BNE LF764 LDA $E3 AND #$07 BNE LF764 LDA $E3 AND #$C0 BEQ LF764 LDX #$06 JSR LFD50 DEX LDA #$40 JSR LFD3D DEX JSR LFD50 DEX JSR LFD50 DEX JSR LFD3B LF764: LDA $E3 EOR #$20 STA $E3 JSR LF945 LDX #$01 LF76F: LDA $EC,X CMP #$01 BNE LF77D LDA #$00 STA AUDC0,X LDA #$08 STA AUDV0,X LF77D: DEX BPL LF76F LDX #$04 LF782: LDA $CE,X CPX #$02 ADC #$18 PHA LSR LSR LSR LSR TAY STY $F0 PLA AND #$0F CLC ADC $F0 CMP #$0F BCC LF79D SBC #$0F INY LF79D: CMP #$08 EOR #$0F BCS LF7A6 ADC #$01 DEY LF7A6: ASL STA WSYNC ASL ASL ASL STA HMP0,X LF7AE: DEY BPL LF7AE STA RESP0,X DEX BPL LF782 LDX #$01 LF7B8: LDA $EC,X CMP #$01 BNE LF7C6 LDA #$00 STA $EC,X STA AUDV0,X STA $EE,X LF7C6: DEX BPL LF7B8 LDA $BD AND #$03 STA $F1 DEC $E1 BNE LF7E7 LDA $BC AND #$DD STA $BC LDA #$00 STA AUDV0 STA AUDV1 INC $DC INC $DC BNE LF7E7 INC $DC LF7E7: LDA $BC AND #$02 BEQ LF7F1 LDA #$00 STA $F1 LF7F1: LDY #$02 STY $F2 LDA $BC AND #$01 BNE LF82B LDA $BC AND #$10 BNE LF831 LDA $BC AND #$60 BEQ LF831 CMP #$20 BNE LF822 LDA $DF AND #$94 BEQ LF822 LDA $E1 AND #$04 BNE LF82B LDY #$01 LDA $E3 AND #$10 BEQ LF82B DEY BPL LF82B LF822: LDY #$01 LDA $CE CMP #$9C BCC LF82B DEY LF82B: LDA #$00 STA $F1 STY $F2 LF831: LDY $F1 LDX #$0B LF835: TXA CMP LFF19,Y BCS LF846 CMP LFF1D,Y BCC LF846 LDA $B0,X ORA #$80 BNE LF84A LF846: LDA $B0,X AND #$7F LF84A: STA $B0,X DEX BPL LF835 LDA $BC AND #$51 BEQ LF87D LDX #$01 LF857: LDA $E6,X STA $C2 CMP #$19 BEQ LF87A LDA $E8,X STA $C3 JSR LF9F1 LDA $E1 AND #$20 BEQ LF872 LDA $C4 ORA ($C5),Y BNE LF878 LF872: LDA $C4 EOR #$FF AND ($C5),Y LF878: STA ($C5),Y LF87A: DEX BPL LF857 LF87D: LDA SWCHB AND #$08 TAY BEQ LF887 LDA #$F7 LF887: ORA #$07 STA $F3 LDA $DC STA $F4 LSR BCS LF89F LDX #$FF LDA $BC AND #$10 BNE LF89C STX $F3 LF89C: INX STX $F4 LF89F: LDX #$FB LF8A1: LDA LFEEB,Y EOR $F4 AND $F3 STA REFP0,X STA $C5,X INY INX BMI LF8A1 JSR LFE2C INX JSR LFE2C LDA #$20 STA CTRLPF STA NUSIZ0 STA NUSIZ1 LDX $F2 LDA $C0,X STA $C2 STA WSYNC STA HMOVE LF8C9: LDA INTIM BNE LF8C9 STA WSYNC STA VBLANK JMP LF100 LF8D5: STA WSYNC LF8D7: LDA INTIM BNE LF8D7 STA WSYNC LDA #$02 STA VBLANK STA WSYNC STA WSYNC STA WSYNC STA VSYNC JSR LF8FD STA WSYNC LDA #$00 STA WSYNC STA VSYNC LDA #$3C STA WSYNC STA TIM64T RTS LF8FD: LDA $BF STA $C0 LDA $BE STA $C1 ASL $C1 ROL $C0 ASL $C1 ROL $C0 LDA $BE ROR ROR AND #$80 EOR $C0 STA $C0 LDA $BE CLC ADC $C1 BCC LF921 INC $BF CLC LF921: ADC #$19 STA $BE LDA $BF ADC $C0 CLC ADC #$36 STA $BF CLC ADC $BD LF931: RTS LF932: STY $F1 JSR LF8FD LDY #$00 TYA LF93A: CLC ADC $BF BCC LF940 INY LF940: DEC $F1 BPL LF93A RTS LF945: LDA $E3 AND #$20 BEQ LF966 LDA $DF AND #$10 BEQ LF966 LDX #$01 LF953: LDY $C9,X LDA $CC,X STA $C9,X STY $CC,X LDY $D0,X LDA $D3,X STA $D0,X STY $D3,X DEX BPL LF953 LF966: RTS LF967: LDA $BD LSR LSR AND #$0F TAY LDA LFF29,Y STA $DF LDA LFF39,Y STA $E0 LDA $BD AND #$3F TAY LDA #$94 CPY #$14 BEQ LF989 LDA #$D4 CPY #$18 BNE LF98F LF989: STA $DF LDA #$00 STA $E0 LF98F: RTS LF990: STA $C4 LDA $CE,X LSR LSR STA $C3 LDA $C7,X LSR STA $C2 LDA $C4 JSR LFA1F LDY #$01 LF9A4: LDA $00E6,Y CMP $C2 BNE LF9B6 LDA $00E8,Y CMP $C3 BNE LF9B6 LDA #$00 CLC RTS LF9B6: DEY BPL LF9A4 LDA $C2 CMP #$17 BCS LF9DF LDA $C3 BEQ LF9DF CMP #$26 BCC LF9F1 CPX #$02 BCS LF9DF LDA $DF AND #$40 BNE LF9DF LDA $DF AND #$03 BEQ LF9F1 LDA $EA,X AND #$07 CMP #$07 BEQ LF9F1 LF9DF: SEC LDA #$FF RTS LF9E3: LDA $C2 CMP #$17 BCS LF9DF LDA $C3 BEQ LF9DF CMP $CB BCS LF9DF LF9F1: LDY $C3 LDA LFEC1,Y CPY #$18 BCC LF9FD LDA LFEAD,Y LF9FD: STA $C4 TYA LSR LSR TAY LDA LFED9,Y STA $C5 LDA $C2 LSR TAY LDA #$00 STA $C6 CLC LDA $C4 AND ($C5),Y RTS LFA16: LDA $C9 LFA18: EOR #$80 JMP LFA1F LFA1D: LDA $C9 LFA1F: ASL BCS LFA2A BMI LFA27 INC $C3 RTS LFA27: DEC $C2 RTS LFA2A: BPL LFA2F INC $C2 RTS LFA2F: DEC $C3 RTS LFA32: JSR LF9E3 BCS LFA43 BNE LFA3D LDA #$3F BNE LFA3F LFA3D: LDA #$7F LFA3F: AND $BC STA $BC LFA43: RTS LFA44: LDA $BC ORA #$C0 STA $BC INC $C2 JSR LFA32 DEC $C2 DEC $C2 JSR LFA32 INC $C2 INC $C3 JSR LFA32 DEC $C3 DEC $C3 JSR LFA32 INC $C3 RTS LFA67: JSR LF8FD AND #$0F CMP #$0C BCS LFA67 ASL RTS LFA72: .byte $20,$FD,$F8,$29,$1F,$C9,$13,$B0,$F7,$38,$2A,$60 LFA7E: LDY #$00 STY AUDV0 STY AUDV1 LDX #$3B DEY LFA87: STY $80,X DEX BPL LFA87 LDA $BF AND #$0F STA $CE JSR LFA67 STA $C2 ASL STA $C7 STA $C8 LDA #$01 STA $C3 STA $D0 STA $CD LDA #$06 STA $CF LDA #$28 STA $CB LDA #$0A STA $D3 LDX #$10 STX $D4 LFAB4: LDA $C2 STA $D6,X LDA $C3 STA $E7,X DEX BPL LFAB4 JSR LFC68 LDA #$26 STA $CB LDA $C2 STA $D2 LDA $C7 LSR STA $C2 LDA #$01 STA $C3 LDA #$50 STA $CD JSR LFC68 LDX #$10 STX $D5 LFADE: LDX $D5 LDA $D6,X STA $C2 LDA $E7,X STA $C3 LDA #$18 STA $CD JSR LFC68 DEC $D5 BPL LFADE LDA #$FF STA $D4 LDA #$16 STA $D7 LDA #$25 STA $D6 LFAFF: LDA $D7 STA $C2 LDA $D6 STA $C3 JSR LFA44 LDA $BC AND #$40 BEQ LFB56 JSR LF8FD STA $C9 LSR LDA #$40 BCS LFB1C LDA #$C0 LFB1C: STA $D8 LFB1E: LDA $C9 CLC ADC $D8 STA $C9 LDA $D7 STA $C2 LDA $D6 STA $C3 LFB2D: JSR LFA1D JSR LFA1D JSR LFA44 LDA $BC AND #$80 BNE LFB1E LDA $BC AND #$40 BNE LFB2D LDA #$05 STA $CD LDA $C9 EOR #$80 AND #$C0 ORA #$01 STA $C9 JSR LFC77 JMP LFAFF LFB56: DEC $D6 DEC $D6 BPL LFAFF LDA #$25 STA $D6 DEC $D7 DEC $D7 BPL LFAFF LDA #$00 STA $BC JSR LF967 LDA $DF AND #$03 TAY LDA LFF05,Y STA $EA STA $EB LDA $D2 JSR LFB89 LDA #$00 STA $EC STA $ED STA $DC JMP LF44E LFB89: STA $C4 LDX #$04 TXA LFB8E: STA $CE,X DEX BPL LFB8E LDA #$AA LDX #$04 LFB97: STA $C9,X DEX BPL LFB97 LDX #$04 LFB9E: LDA $DF AND LFEF8,X BEQ LFBAE LDA #$94 STA $D0,X LDA $C4 ASL STA $C9,X LFBAE: DEX BPL LFB9E LDA $DF AND #$01 BEQ LFBD7 LDX #$01 LDA #$54 LFBBB: STA $D0,X JSR LFA67 ASL STA $C9,X LDA #$64 DEX BPL LFBBB LDA $DF AND #$02 BEQ LFBD7 LDA $C4 ASL STA $CB LDA #$94 STA $D2 LFBD7: LDA #$80 LDX #$06 LFBDB: STA $D5,X DEX BPL LFBDB LDX #$04 JSR LFD50 JSR LFD50 JSR LFD50 JSR LF8D5 DEX JSR LFD50 DEX JSR LFD3B JSR LFD3B LDX #$00 STX $E4 STX $E5 STX $DD STX $DE INX STX $E3 STX VDELP0 STX VDELBL LDA $E0 AND #$40 BEQ LFC16 LDA #$FA STA $DD STA $DE LFC16: LDA #$19 STA $E6 STA $E7 RTS LFC1D: JSR LFA16 JSR LF9F1 EOR ($C5),Y STA ($C5),Y LDA $BF ORA #$02 STA COLUBK JSR LFA1D LDA $C3 CMP $D0 BCC LFC44 STA $D0 LDA $C2 STA $D1 LDA #$40 CMP $CD BCC LFC44 STA $CD LFC44: LDA $C3 CMP #$27 BCS LFC81 DEC $D3 BNE LFC60 LDA #$0A STA $D3 LDX $D4 BMI LFC60 LDA $C2 STA $D6,X LDA $C3 STA $E7,X DEC $D4 LFC60: DEC $C9 LDA $C9 AND #$03 BNE LFC77 LFC68: LDA $BF AND $CE TAY JSR LF8FD AND #$C0 ORA LFF09,Y STA $C9 LFC77: DEC $CD BNE LFC96 LDA $CB CMP #$28 BCS LFC82 LFC81: RTS LFC82: DEC $CF BNE LFC96 LDA $D1 STA $C2 LDA $D0 STA $C3 INC $CF LDA #$40 STA $CD BNE LFC68 LFC96: LDA $C9 STA $CA LDA #$40 BIT $BE BPL LFCA2 LDA #$C0 LFCA2: STA $CC LFCA4: JSR LFA1D JSR LFA1D JSR LFA44 LDA $BC AND #$80 BNE LFCBC LDA $BC AND #$40 BEQ LFCBC JMP LFC1D LFCBC: JSR LFA16 JSR LFA16 LDA $C9 CLC ADC $CC STA $C9 CMP $CA BNE LFCA4 JSR LF8FD STA $CA LFCD2: JSR LFA1F JSR LF9E3 BCS LFCDC BEQ LFCF3 LFCDC: LDA $CA JSR LFA18 LDA $BF ASL ASL ASL LDA #$40 BCC LFCEC LDA #$BF LFCEC: ADC $CA STA $CA JMP LFCD2 LFCF3: LDA $CA JSR LFA1F JMP LFC68 LFCFB: LDA $00C9,Y CLC ADC #$01 CMP $C7,X BCC LFD1D LDA $C7,X ADC #$00 CMP $00C9,Y BCC LFD1D LDA $00D0,Y SBC #$03 CMP $CE,X BCS LFD1C ADC #$05 CMP $CE,X RTS LFD1C: CLC LFD1D: RTS START: SEI CLD LDX #$00 TXA LFD23: STA VSYNC,X INX BNE LFD23 DEX TXS LDA INTIM AND #$0F TAY LDA LFFE5,Y STA $BF STA TIM8T JMP LFA7E LFD3B: LDA #$C0 LFD3D: STA $F1 JSR LFDBE LFD42: LDA $D5,X CLC ADC $F1 STA $D5,X JSR LF990 BNE LFD42 BEQ LFD8B LFD50: JSR LFDBE STA $F1 LDA #$FF STA $F2 LFD59: LDA $D5,X CLC ADC #$40 STA $D5,X CMP $F1 BEQ LFD76 JSR LF990 BNE LFD59 INC $F2 LDA $F3 LSR LSR ORA $D5,X STA $F3 JMP LFD59 LFD76: LDY $F2 BMI LFD87 JSR LF932 LDA $F3 LFD7F: DEY BMI LFD87 ASL ASL JMP LFD7F LFD87: AND #$C0 STA $D5,X LFD8B: LDA $D5,X ORA #$04 STA $D5,X LFD91: DEC $D5,X LDA $D5,X ASL BCS LFDB4 BMI LFDB1 INC $CE,X INC $CE,X LDA $CE,X CMP #$9C BCC LFDBD LDA #$FF STA $EC,X LDA #$00 STA $EE,X LDA #$60 JMP LFDF4 LFDB1: DEC $C7,X RTS LFDB4: BPL LFDB9 INC $C7,X RTS LFDB9: DEC $CE,X DEC $CE,X LFDBD: RTS LFDBE: LDA $C7,X CMP #$2D BCC LFDC7 PLA PLA RTS LFDC7: LDA $D5,X AND #$07 BEQ LFDD2 PLA PLA JMP LFD91 LFDD2: LDA $D5,X EOR #$80 AND #$C0 STA $D5,X RTS LFDDB: LDA $DF AND #$BF STA $DF LDA #$03 LFDE3: JSR LFEA3 LDA $E3 AND #$EF CPX #$00 BNE LFDF0 ORA #$10 LFDF0: STA $E3 LDA #$20 LFDF4: ORA $BC STA $BC LDA #$40 STA $E1 LFDFC: RTS LFDFD: LDA $E4,X CMP #$D2 BCS LFDFC LDA #$FA STA $E4,X LDA #$02 BNE LFDE3 LFE0B: LDA #$15 CPX #$00 BEQ LFE12 LSR LFE12: STA AUDF0,X LDA $EE,X LSR LSR STA $F0 LDA #$0C STA AUDC0,X SEC SBC $F0 STA AUDV0,X INC $EE,X LDA $EE,X CMP #$28 BCS LFEA1 RTS LFE2C: LDA $DC LSR BCS LFEA1 LDA $BC AND #$10 BNE LFEA1 LDA $EC,X BEQ LFE90 CMP #$FF BEQ LFEAC CMP #$05 BEQ LFE0B ROL ROL ROL ROL AND #$07 TAY LDA LFF49,Y STA $F6 LDA $EC,X AND #$0F TAY LDA $EE,X CPY #$03 BNE LFE5B LSR LFE5B: CLC ADC LFFE0,Y TAY LDA LFF4C,Y BMI LFE91 CLC ADC $F6 CPX #$00 BEQ LFE6D LSR LFE6D: STA AUDF0,X LDA $EC,X CMP #$03 BNE LFE7B LDA LFF6C,Y JMP LFE7D LFE7B: LDA #$08 LFE7D: STA AUDV0,X LDA $EC,X CMP #$03 BEQ LFE89 LDA #$0C BNE LFE8C LFE89: LDA LFFA7,Y LFE8C: STA AUDC0,X INC $EE,X LFE90: RTS LFE91: LDA $EC,X AND #$F0 BEQ LFEA1 LDA $EC,X SEC SBC #$20 STA $EC,X JMP LFEA5 LFEA1: LDA #$00 LFEA3: STA $EC,X LFEA5: LDA #$00 STA $EE,X STA AUDV0,X RTS LFEAC: LDA $EE,X CMP #$40 BCS LFEA1 JSR LF8FD CPX #$00 BEQ LFEBB AND #$07 LFEBB: STA AUDF0,X LDA #$0F BNE LFE7D LFEC1: BPL LFEE3 RTI LFEC4: .byte $80,$80,$40,$20,$10,$08,$04,$02,$01 LFECD: .byte $01,$02,$04,$08,$10,$20 LFED3: .byte $40,$80,$01,$02,$04,$08 LFED9: .byte $80,$8C,$8C,$98,$98,$80,$A4,$A4,$B0,$B0 LFEE3: CPY #$40 .byte $80 ;.NOOP BRK LFEE7: .byte $42 ;.JAM EOR ($43,X) EOR PF2 ORA ($02,X) .byte $0C ;.NOOP ASL VSYNC BRK BRK .byte $42 ;.JAM .byte $92 ;.JAM CPY VSYNC ROL $80 .byte $80 ;.NOOP .byte $04 ;.NOOP BPL LFF0D LFEFD: EOR #$09 EOR ($01,X) PHA PHP RTI LFF04: .byte $00 LFF05: .byte $00,$04,$00,$00 LFF09: .byte $01,$01,$02,$03 LFF0D: .byte $02 ;.JAM .byte $02 ;.JAM .byte $03 ;.SLO .byte $03 ;.SLO ORA ($03,X) .byte $02 ;.JAM ORA ($03,X) ORA ($01,X) ORA ($00,X) PHP ASL .byte $0F ;.SLO LFF1D: ORA ($04,X) .byte $02 ;.JAM BRK LFF21: BRK .byte $04 ;.NOOP .byte $04 ;.NOOP BIT NUSIZ0 BIT HMBL .byte $44 ;.NOOP LFF29: BRK .byte $80 ;.NOOP CPY #$C4 .byte $03 ;.SLO .byte $80 ;.NOOP