ZP_C8 equ $C8 ZP_FC equ $FC ZP_FD equ $FD ZP_FE equ $FE ZP_FF equ $FF L_0224 equ $0224 L_0225 equ $0225 org $0500 L_0500 :3 nop L_0503 jmp L_0815 L_0506 jmp L_0F5C L_0509 dta $23,$05,$A9,$05,$AD,$05,$B8,$05 L_0511 dta $00,$00,$00,$00,$00,$00 L_0517 dta $00,$00,$00,$00,$00,$00 L_051D dta $80,$80,$80,$80,$80,$80 L_0523 dta $00,$00,$00 L_0526 dta $00,$00,$00 L_0529 dta $FF,$FF,$FF,$FF,$FF,$FF L_052F dta $00,$00,$00,$00,$00,$00 L_0535 dta $00 L_0536 dta $00 L_0537 dta $00 L_0538 dta $00,$00,$00 L_053B dta $00,$00,$00 L_053E dta $00,$00,$00 L_0541 dta $00,$00,$00 L_0544 dta $00,$00,$00 L_0547 dta $00,$00,$00,$00,$00,$00 L_054D dta $00,$00,$00,$00,$00,$00 L_0553 dta $00,$00,$00,$00,$00,$00 L_0559 dta $00,$00,$00 L_055C dta $00,$00,$00 L_055F dta $00,$00,$00 L_0562 dta $00,$00,$00 L_0565 dta $00,$00,$00,$00,$00,$00 L_056B dta $00,$00,$00,$00,$00,$00 L_0571 dta $00,$00,$00,$00,$00,$00 L_0577 dta $00,$00,$00,$00,$00,$00 L_057D dta $00,$00,$00,$00,$00,$00 L_0583 dta $00,$00,$00,$00,$00,$00 L_0589 dta $00,$00,$00 L_058C dta $00,$00,$00 L_058F dta $00 L_0590 dta $00 L_0591 dta $00 L_0592 dta $00 L_0593 dta $00 L_0594 dta $82 L_0595 dta $00 L_0596 dta $00 L_0597 dta $06 L_0598 dta $06 L_0599 dta $00 L_059A dta $80 L_059B dta $14 L_059C dta $80 L_059D dta $80 L_059E dta $00 L_059F dta $00 L_05A0 dta $00 L_05A1 dta $00 L_05A2 dta $00 L_05A3 dta $00 L_05A4 dta $00 L_05A5 dta $00 L_97A5 equ L_05A5 ; relocation bugfix by 0xF L_05A6 dta $00 L_05A7 dta $00 L_97A7 equ L_05A7 ; relocation bugfix by 0xF L_05A8 dta $00 L_05A9 dta $0F L_05AA dta $0F L_05AB dta $00 L_05AC dta $00 L_05AD dta $00,$00,$00 L_05B0 dta $00,$00,$00 L_05B3 dta $FF L_05B4 dta $00,$00,$00 L_05B7 dta $00 L_05B8 dta $00 L_05B9 dta $00,$01,$02,$83,$00,$01,$02,$03,$01,$00,$02,$83,$01,$00,$02,$03 dta $01,$02,$80,$03 L_05CD dta $80,$40,$20,$10,$08,$04,$02,$01 L_05D5 dta a(L_084B,L_0876,L_0985,L_0913,L_0950,L_096E,L_097C,L_091A) L_05E5 dta $80,$A0,$20,$40 L_05E9 dta $FF,$F1,$E4,$D7,$CB,$C0,$B5,$AA,$A1,$98,$8F,$87,$7F,$78,$72,$6B dta $65,$5F,$5A,$55,$50,$4B,$47,$43,$3F,$3C,$38,$35,$32,$2F,$2C,$2A dta $27,$25,$23,$21,$1F,$1D,$1C,$1A,$18,$17,$16,$14,$13,$12,$11,$10 dta $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00 dta $00 L_062A dta $00,$00,$00,$00,$F2,$E9,$DA,$CE,$BF,$B6,$AA,$A1,$98,$8F,$89 dta $80,$7A,$71,$6B,$65,$5F,$00,$56,$50,$67,$60,$5A,$55,$51,$4C,$48 dta $43,$3F,$3D,$39,$34,$33,$39,$2D,$2A,$28,$25,$24,$21,$1F,$1E,$00 dta $00,$0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01 dta $00,$00 L_066B dta $38,$0B,$8C,$0A,$00,$0A,$6A,$09,$E8,$08,$6A,$08,$EF,$07 dta $80,$07,$08,$07,$AE,$06,$46,$06,$E6,$05,$95,$05,$41,$05,$F6,$04 dta $B0,$04,$6E,$04,$30,$04,$F6,$03,$BB,$03,$84,$03,$52,$03,$22,$03 dta $F4,$02,$C8,$02,$A0,$02,$7A,$02,$55,$02,$34,$02,$14,$02,$F5,$01 dta $D8,$01,$BD,$01,$A4,$01,$8D,$01,$77,$01,$60,$01,$4E,$01,$38,$01 dta $27,$01,$15,$01,$06,$01,$F7,$00,$E8,$00,$DB,$00,$CF,$00,$C3,$00 dta $B8,$00,$AC,$00,$A2,$00,$9A,$00,$90,$00,$88,$00,$7F,$00,$78,$00 dta $70,$00,$6A,$00,$64,$00,$5E,$00,$57,$00,$52,$00,$32,$00,$0A,$00 L_06E9 dta $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 dta $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01 dta $00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$02,$02,$02,$02 dta $00,$00,$00,$00,$01,$01,$01,$01,$02,$02,$02,$02,$02,$03,$03,$03 dta $00,$00,$01,$01,$01,$02,$02,$02,$02,$02,$03,$03,$03,$03,$04,$04 dta $00,$00,$01,$01,$01,$02,$02,$02,$03,$03,$03,$04,$04,$04,$05,$05 dta $00,$00,$01,$01,$02,$02,$02,$03,$03,$04,$04,$04,$05,$05,$06,$06 dta $00,$00,$01,$01,$02,$02,$03,$03,$04,$04,$05,$05,$06,$06,$07,$07 dta $00,$01,$01,$02,$02,$03,$03,$04,$04,$05,$05,$06,$06,$07,$07,$08 dta $00,$01,$01,$02,$02,$03,$04,$04,$05,$05,$06,$07,$07,$08,$08,$09 dta $00,$01,$01,$02,$03,$03,$04,$05,$05,$06,$07,$07,$08,$09,$09,$0A dta $00,$01,$01,$02,$03,$04,$04,$05,$06,$07,$07,$08,$09,$0A,$0A,$0B dta $00,$01,$02,$02,$03,$04,$05,$06,$07,$08,$09,$09,$0A,$0B,$0B,$0C dta $00,$01,$02,$03,$04,$05,$05,$06,$07,$08,$09,$0A,$0A,$0B,$0C,$0D dta $00,$01,$02,$03,$04,$05,$06,$07,$07,$08,$09,$0A,$0B,$0C,$0D,$0E dta $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F L_07E9 dta a(L_0C06,L_0C0C,L_0C12,L_0C1C,L_0C26,L_0C32,L_0C4F) L_07F7 dta a(L_05E9,L_062A,L_066B) L_07FD dta a(L_0BA1,L_0BC4,L_0BB9,0,0,0,0,0) ; bugfix by 0xF L_080D dta $03,$03,$03,$03,$07,$0B,$0F,$13 ; bugfix by 0xF L_0815 sta L_058F stx L_0590 sty L_0591 and #$70 lsr @ lsr @ lsr @ tax lda #$03 sta $D20F lda L_05D5,X sta L_0849 lda L_05D5+1,X sta L_084A lda #$03 sta $D21F lda #$01 sta L_0592 ldy L_0591 ldx L_0590 lda L_058F jmp * L_0849 equ *-2 L_084A equ *-1 L_084B lda L_0593 sta ZP_FC lda L_0594 sta ZP_FD ldy #$00 txa beq L_0876 L_085A lda (ZP_FC),Y cmp #$8F beq L_0864 cmp #$EF bne L_0870 L_0864 dex bne L_0870 iny cpy #$54 bcs L_0875 tya tax bpl L_0876 L_0870 iny cpy #$54 bcc L_085A L_0875 rts L_0876 stx L_0595 lda #$00 ldx #$05 L_087D sta L_0511,X sta L_0517,X sta L_051D,X dex bpl L_087D sta L_0596 sta L_059D ldy #$FF sty L_059F lda L_0599 sta ZP_FC lda L_059A sta ZP_FD ldy #$13 lda (ZP_FC),Y tax lda L_0593 sta ZP_FC lda L_0594 sta ZP_FD ldy L_0595 tya pha lda #$0F sta L_05A9 sta L_05AA L_08BA lda (ZP_FC),Y cmp #$87 bne L_08E3 tya pha clc adc #$55 tay lda (ZP_FC),Y bpl L_08CC lda #$0F L_08CC and #$0F sta L_05A9 tya clc adc #$55 tay lda (ZP_FC),Y bpl L_08DD lda L_05A9 L_08DD and #$0F sta L_05AA pla L_08E3 jmp L_08F3 L_08E6 lda (ZP_FC),Y cmp #$8F beq L_08F3 cmp #$EF beq L_08F3 dey bpl L_08BA L_08F3 pla tay L_08F5 lda (ZP_FC),Y cmp #$CF bne L_0908 tya clc adc #$55 tay lda (ZP_FC),Y bmi L_0913 tax jmp L_0913 L_0908 cmp #$8F beq L_0913 cmp #$EF beq L_0913 dey bpl L_08F5 L_0913 stx L_0597 stx L_0598 rts L_091A stx L_0599 stx ZP_FC sty L_059A sty ZP_FD clc txa adc #$14 sta L_059B tya adc #$00 sta L_059C clc txa adc #$00 sta L_0593 tya adc #$02 sta L_0594 ldy #$13 lda (ZP_FC),Y sta L_0597 sta L_0598 ldx #$03 stx $D21F stx $D20F L_0950 lda #$00 sta L_0592 ldy #$08 L_0957 lda #$00 sta $D200,Y sta $D210,Y cpy #$06 bcs L_096B sta L_0523,Y lda #$FF sta L_0529,Y L_096B dey bpl L_0957 L_096E lda #$80 L_0970 ldx #$05 L_0972 sta L_051D,X dex bpl L_0972 sta L_059D rts L_097C lda #$00 beq L_0970 sta L_059D beq L_0990 L_0985 lda L_058F and #$07 tax lda #$80 sta L_051D,X L_0990 ldy L_0591 lda L_0590 L_0996 sta L_058F sty L_0591 lda #$00 sta L_0553,X sta L_0529,X sta L_054D,X tya asl @ asl @ asl @ sta ZP_FE clc lda L_0599 adc #$30 pha lda L_059A adc #$01 tay pla clc adc ZP_FE sta L_0565,X tya adc #$00 sta L_0547,X clc lda L_0599 adc #$94 sta ZP_FC lda L_059A adc #$00 sta ZP_FD lda L_0591 asl @ adc L_0591 asl @ tay sty L_0591 iny iny iny iny iny lda (ZP_FC),Y sta L_0571,X dey lda (ZP_FC),Y sta L_056B,X dey lda (ZP_FC),Y sta L_0577,X dey dey lda (ZP_FC),Y sta L_053B,X ldy #$00 and #$07 cmp #$03 bne L_0A09 ldy #$02 L_0A09 cmp #$07 bne L_0A0F ldy #$04 L_0A0F lda L_07F7,Y sta ZP_FE lda L_07F7+1,Y sta ZP_FF ldy L_0591 iny iny lda (ZP_FC),Y lsr @ lsr @ lsr @ lsr @ clc adc L_058F sta L_058F sta L_0A9F tay lda L_053B,X and #$07 cmp #$07 bne L_0A47 tya asl @ tay lda (ZP_FE),Y sta L_057D,X iny sty L_058F jmp L_0A5C L_0A47 lda (ZP_FE),Y sta L_057D,X ldy L_0591 iny iny lda (ZP_FC),Y and #$0F clc adc L_058F sta L_058F L_0A5C ldy L_058F lda L_053B,X and #$07 cmp #$05 php lda (ZP_FE),Y plp beq L_0A74 cmp L_057D,X bne L_0A74 sec sbc #$01 L_0A74 sta L_0559,X ldy L_0591 lda (ZP_FC),Y pha and #$03 tay lda L_05E5,Y sta L_0583,X pla lsr @ lsr @ lsr @ lsr @ ldy #$3E cmp #$0F beq L_0AA1 ldy #$37 cmp #$0E beq L_0AA1 ldy #$30 cmp #$0D beq L_0AA1 clc adc #$32 L_0A9F equ *-1 tay L_0AA1 lda L_05E9,Y sta L_0589,X rts L_0AA8 cld lda ZP_FC pha lda ZP_FD pha lda ZP_FE pha lda ZP_FF pha lda L_0592 bne L_0ABD jmp L_0F2F L_0ABD lda L_059D beq L_0AC5 jmp L_0CE1 L_0AC5 lda L_0598 cmp L_0597 bcs L_0AD0 jmp L_0CCE L_0AD0 lda L_0596 beq L_0AD8 jmp L_0B9E L_0AD8 ldx #$05 lda #$00 L_0ADC ldy L_051D,X bmi L_0AE4 sta L_051D,X L_0AE4 sta L_0511,X dex bpl L_0ADC lda L_0593 sta ZP_FC lda L_0594 sta ZP_FD ldy L_0595 sty L_05A1 L_0AFA cpy L_059F bne L_0B18 lda L_05A0 beq L_0B18 lda L_0595 ldy L_059E sty L_0595 dec L_05A0 bne L_0AFA sta L_0595 tay bpl L_0AFA L_0B18 ldx #$00 L_0B1A lda (ZP_FC),Y cmp #$FE beq L_0B3C sta L_0535,X inc ZP_FD lda (ZP_FC),Y dec ZP_FD cmp #$FE beq L_0B3C sta L_0538,X clc tya adc #$55 tay inx cpx #$03 bcc L_0B1A bcs L_0B5E L_0B3C ldy L_0595 iny cpy L_05A1 beq L_0B95 sty L_0595 L_0B48 jmp L_0AFA L_0B4B pla and #$0E tax lda L_07FD,X sta L_0B87 lda L_07FD+1,X sta L_0B88 jmp L_0B81 L_0B5E ldy L_0595 lda (ZP_FC),Y bpl L_0B9E cmp #$FF beq L_0B9E lsr @ lsr @ lsr @ pha and #$01 beq L_0B4B pla and #$0E tax lda L_07E9,X sta L_0B87 lda L_07E9+1,X sta L_0B88 L_0B81 lda L_0536 sta ZP_FE jsr * L_0B87 equ *-2 L_0B88 equ *-1 sty L_0595 cpy #$55 bcs L_0B95 cpy L_05A1 bne L_0B48 L_0B95 ldy L_05A1 sty L_0595 jmp L_0F2F L_0B9E jmp L_0C5E L_0BA1 lda ZP_FE bmi L_0BB7 and #$0F sta L_05A9 lda L_0537 bpl L_0BB2 lda L_05A9 L_0BB2 and #$0F sta L_05AA L_0BB7 iny rts L_0BB9 lda ZP_FE bmi L_0BB7 and #$01 sta L_05B8 iny rts L_0BC4 lda L_05B3 bmi L_0BDD dec L_05B4 bne L_0C01 lda #$32 sta L_05B4 dec L_05B3 bne L_0C01 dec L_05B3 iny rts L_0BDD lda ZP_FE bmi L_0BB7 sta L_05B4 inc L_05B4 lda ZP_FE bmi L_0BB7 sta L_05B4 inc L_05B4 lda L_0537 sta L_05B3 bpl L_0BFE lda #$00 sta L_05B3 L_0BFE inc L_05B3 L_0C01 pla pla jmp L_0CE1 L_0C06 jsr L_096E L_0C09 ldy #$FF rts L_0C0C lda ZP_FE bmi L_0C09 tay rts L_0C12 lda ZP_FE bmi L_0C09 sec tya sbc ZP_FE tay rts L_0C1C lda ZP_FE bmi L_0C09 clc tya adc ZP_FE tay rts L_0C26 lda ZP_FE bmi L_0C09 sta L_0597 sta L_0598 iny rts L_0C32 lda ZP_FE bmi L_0C09 lda L_0537 bmi L_0C09 iny sty L_059E clc tya adc ZP_FE sta L_059F lda L_0537 sta L_05A0 cpy #$54 rts L_0C4F dey bmi L_0C5C lda (ZP_FC),Y cmp #$8F beq L_0C5C cmp #$EF bne L_0C4F L_0C5C iny rts L_0C5E ldx #$05 L_0C60 lda L_0517,X beq L_0C6A dec L_0517,X bpl L_0CC1 L_0C6A lda L_051D,X bne L_0CC1 ldy L_0535,X cmp #$40 bcs L_0CC1 lda L_059B sta ZP_FC lda L_059C sta ZP_FD lda (ZP_FC),Y sta ZP_FE clc tya adc #$40 tay lda (ZP_FC),Y sta ZP_FF L_0C8D ldy L_0511,X lda (ZP_FE),Y and #$C0 bne L_0CA2 lda (ZP_FE),Y and #$3F sta L_052F,X inc L_0511,X bpl L_0C8D L_0CA2 cmp #$40 bne L_0CB3 lda (ZP_FE),Y and #$3F ldy L_052F,X jsr L_0996 jmp L_0CBE L_0CB3 cmp #$80 bne L_0CC1 lda (ZP_FE),Y and #$3F sta L_0517,X L_0CBE inc L_0511,X L_0CC1 dex bpl L_0C60 ldx L_0596 inx txa and #$3F sta L_0596 L_0CCE dec L_0598 bne L_0CE1 lda L_0597 sta L_0598 lda L_0596 bne L_0CE1 inc L_0595 L_0CE1 ldy L_0559 lda L_053B and #$07 cmp #$05 beq L_0CF1 cmp #$06 bne L_0CF2 L_0CF1 dey L_0CF2 sty L_05A2 ldy #$00 cmp #$05 beq L_0CFF cmp #$06 bne L_0D01 L_0CFF ldy #$02 L_0D01 cmp #$07 bne L_0D07 ldy #$28 L_0D07 sty L_05A4 ldy L_055C lda L_053E and #$07 cmp #$05 beq L_0D1A cmp #$06 bne L_0D1B L_0D1A dey L_0D1B sty L_05A3 ldy #$00 cmp #$05 beq L_0D28 cmp #$06 bne L_0D2A L_0D28 ldy #$02 L_0D2A cmp #$07 bne L_0D30 ldy #$28 L_0D30 sty L_05A5 ldx #$05 L_0D35 lda L_053B,X and #$E0 sta L_0541,X lda L_0565,X sta ZP_FC lda L_0547,X sta ZP_FD lda L_0529,X cmp #$FF beq L_0D85 cmp #$0F bne L_0D73 lda L_054D,X beq L_0D85 dec L_054D,X lda L_054D,X bne L_0D85 ldy L_0523,X beq L_0D65 dey L_0D65 tya sta L_0523,X lda L_0577,X sta L_054D,X dey jmp L_0D85 L_0D73 lda L_0529,X lsr @ tay lda (ZP_FC),Y bcc L_0D80 lsr @ lsr @ lsr @ lsr @ L_0D80 and #$0F sta L_0523,X L_0D85 ldy L_057D,X lda L_053B,X and #$07 cmp #$01 bne L_0DB0 dey tya iny cmp L_0559,X php lda #$01 plp bne L_0D9F asl @ asl @ L_0D9F and L_0553,X beq L_0DB0 ldy L_0559,X cpy #$FF bne L_0DB0 lda #$00 sta L_0523,X L_0DB0 tya sta L_055F,X lda #$01 sta L_05A8 lda L_0529,X cmp #$0F beq L_0E0C and #$07 tay lda L_05CD,Y sta ZP_FE lda L_0529,X and #$08 php txa plp clc beq L_0DD5 adc #$06 L_0DD5 tay lda L_056B,Y and ZP_FE beq L_0E0C lda L_0589,X sta L_055F,X stx L_05A8 dex cpx #$02 beq L_0DFA cpx #$FF bne L_0E05 sta L_05A2 lda #$00 sta L_05A4 jmp L_0E05 L_0DFA lda L_058C sta L_05A3 lda #$00 sta L_05A5 L_0E05 inx lda L_0583,X sta L_0541,X L_0E0C lda L_0529,X and #$0F cmp #$0F beq L_0E27 inc L_0529,X lda L_0529,X and #$0F cmp #$0F bne L_0E27 lda L_0577,X sta L_054D,X L_0E27 lda L_051D,X bpl L_0E36 lda L_0523,X bne L_0E36 lda #$40 sta L_051D,X L_0E36 inc L_0553,X ldy #$00 lda L_053B,X lsr @ lsr @ lsr @ lsr @ bcc L_0E45 dey L_0E45 lsr @ bcc L_0E49 iny L_0E49 clc tya adc L_057D,X sta L_057D,X lda L_0559,X cmp #$FF bne L_0E5A ldy #$00 L_0E5A clc tya adc L_0559,X sta L_0559,X dex bmi L_0E68 jmp L_0D35 L_0E68 jsr L_0F7B lda L_0541 sta L_05A6 lda L_0544 sta L_05A7 lda L_053B and #$07 jsr L_0FB5 L_0E7F tya pha lda L_05B9,Y php and #$7F tax tya and #$03 asl @ tay cpx #$03 bne L_0E94 jmp L_0EC4 L_0E94 lda L_05AD,X bne L_0EC0 lda L_055F,X sta $D200,Y lda L_0523,X ora L_0541,X plp bpl L_0EAA lda #$00 L_0EAA sta $D201,Y L_0EAD pla tay dey and #$03 beq L_0EB7 jmp L_0E7F L_0EB7 lda L_05A4 sta $D208 jmp L_0EE4 L_0EC0 plp jmp L_0EAD L_0EC4 lda L_05AD bne L_0EE0 lda L_05A2 sta $D200,Y lda L_0523 ora L_05A6 plp bpl L_0EDA lda #$00 L_0EDA sta $D201,Y jmp L_0EAD L_0EE0 plp jmp L_0EAD L_0EE4 lda L_053E and #$07 jsr L_0FB5 L_0EEC tya pha lda L_05B9,Y php and #$7F tax tya and #$03 asl @ tay cpx #$03 bne L_0F01 jmp L_0F3C L_0F01 lda L_05B0,X bne L_0F24 lda L_0562,X sta $D210,Y lda L_0526,X ora L_0544,X plp bpl L_0F17 lda #$00 L_0F17 sta $D211,Y L_0F1A pla tay dey and #$03 beq L_0F28 jmp L_0EEC L_0F24 plp jmp L_0F1A L_0F28 lda L_97A5 sta $D218 clc L_0F2F pla sta ZP_FF pla sta ZP_FE pla sta ZP_FD pla sta ZP_FC rts L_0F3C lda L_05B0 bne L_0F58 lda L_05A3 sta $D210,Y lda L_0526 ora L_97A7 plp bpl L_0F52 lda #$00 L_0F52 sta $D211,Y jmp L_0F1A L_0F58 plp jmp L_0F1A L_0F5C jsr L_0AA8 bcs L_0F7A lda L_05B8 beq L_0F7A lda L_059D sta L_05B7 lda #$01 sta L_059D jsr L_0AA8 lda L_05B7 sta L_059D L_0F7A rts L_0F7B lda L_05A9 asl @ asl @ asl @ asl @ sta L_05AB lda L_05AA asl @ asl @ asl @ asl @ sta L_05AC ldx #$02 L_0F91 stx ZP_C8 lda L_05AB ora L_0523,X tax lda L_06E9,X ldx ZP_C8 sta L_0523,X lda L_05AC ora L_0526,X tax lda L_06E9,X ldx ZP_C8 sta L_0526,X dex bpl L_0F91 rts L_0FB5 tay lda L_080D,Y tay rts end