diff --git a/src/applerom.s b/src/applerom.s index d54d19b..63e8a14 100644 --- a/src/applerom.s +++ b/src/applerom.s @@ -1,23 +1,24 @@ ************************************************** * Apple Standard Memory Locations ************************************************** -CLRLORES equ $F832 -LORES equ $C050 -TXTSET equ $C051 -MIXCLR equ $C052 -MIXSET equ $C053 -TXTPAGE1 equ $C054 -TXTPAGE2 equ $C055 -KEY equ $C000 -C80STOREOFF equ $C000 -C80STOREON equ $C001 -STROBE equ $C010 -SPEAKER equ $C030 -VBL equ $C02E -RDVBLBAR equ $C019 ;not VBL (VBL signal low +CLRLORES equ $F832 +LORES equ $C050 +TXTSET equ $C051 +MIXCLR equ $C052 +MIXSET equ $C053 +TXTPAGE1 equ $C054 +TXTPAGE2 equ $C055 +KEY equ $C000 +C80STOREOFF equ $C000 +C80STOREON equ $C001 +STROBE equ $C010 +SPEAKER equ $C030 +VBL equ $C02E +RDVBLBAR equ $C019 ;not VBL (VBL signal low + +RAMWRTAUX equ $C005 +RAMWRTMAIN equ $C004 +SETAN3 equ $C05E ;Set annunciator-3 output to 0 +SET80VID equ $C00D ;enable 80-column display mode (WR-only) -RAMWRTAUX equ $C005 -RAMWRTMAIN equ $C004 -SETAN3 equ $C05E ;Set annunciator-3 output to 0 -SET80VID equ $C00D ;enable 80-column display mode (WR-only) diff --git a/src/bird.s b/src/bird.s index 49b2984..16f99be 100644 --- a/src/bird.s +++ b/src/bird.s @@ -1,470 +1,466 @@ -SPRITE_X db 0 -SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry -SPRITE_W db 0 -SPRITE_W_D2 db 0 -SPRITE_H db 0 ; <- in bytes +SPRITE_X db 0 +SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry +SPRITE_W db 0 +SPRITE_W_D2 db 0 +SPRITE_H db 0 ; <- in bytes -SPRITE_MAIN da 0 -SPRITE_AUX da 0 -SPRITE_MASK da 0 -SPRITE_IMASK da 0 -SPRITE_COLLISION db 0 -SPRITE_Y_IDX dw 0 -SPRITE_X_IDX dw 0 +SPRITE_MAIN da 0 +SPRITE_AUX da 0 +SPRITE_MASK da 0 +SPRITE_IMASK da 0 +SPRITE_COLLISION db 0 +SPRITE_Y_IDX dw 0 +SPRITE_X_IDX dw 0 -SPRITE_SCREEN_P equ $00 -SPRITE_DATA_P equ $02 -SPRITE_SCREEN_P2 equ $02 -SPRITE_AUX_P equ $04 -SPRITE_SCREEN_P3 equ $04 -SPRITE_MASK_P equ $FA -SPRITE_SCREEN_P4 equ $FA -SPRITE_IMASK_P equ $FC +SPRITE_SCREEN_P equ $00 +SPRITE_DATA_P equ $02 +SPRITE_SCREEN_P2 equ $02 +SPRITE_AUX_P equ $04 +SPRITE_SCREEN_P3 equ $04 +SPRITE_MASK_P equ $FA +SPRITE_SCREEN_P4 equ $FA +SPRITE_IMASK_P equ $FC -SPRITE_SCREEN_IDX db #$0 +SPRITE_SCREEN_IDX db #$0 -BIRD_VELOCITY db 0 ; in two's compliment {-3,3} -BIRD_VELOCITY_MAX equ #20 -BIRD_VELOCITY_MIN equ #%111111111 ; -1 -BIRD_WIDTH equ #5 -BIRD_X equ #17 -BIRD_Y_INIT equ #17 -BIRD_Y db #BIRD_Y_INIT ; (0-47) -BIRD_Y_OLD db #BIRD_Y_INIT ; used for undraw - to decouple input routine from sequence -BIRD_FLAP db #0 ; 0=down 1=up -BIRD_FLAP_RATE equ #5 -BIRD_FLAP_CNT db 0 +BIRD_VELOCITY db 0 ; in two's compliment {-3,3} +BIRD_VELOCITY_MAX equ #20 +BIRD_VELOCITY_MIN equ #%111111111 ; -1 +BIRD_WIDTH equ #5 +BIRD_X equ #17 +BIRD_Y_INIT equ #17 +BIRD_Y db #BIRD_Y_INIT ; (0-47) +BIRD_Y_OLD db #BIRD_Y_INIT ; used for undraw - to decouple input routine from sequence +BIRD_FLAP db #0 ; 0=down 1=up +BIRD_FLAP_RATE equ #5 +BIRD_FLAP_CNT db 0 ** FlapBird - inc BIRD_FLAP_CNT - lda BIRD_FLAP_CNT - cmp #BIRD_FLAP_RATE - bcs :flapIt - rts + inc BIRD_FLAP_CNT + lda BIRD_FLAP_CNT + cmp #BIRD_FLAP_RATE + bcs :flapIt + rts :flapIt - lda #0 - sta BIRD_FLAP_CNT - inc BIRD_FLAP - lda BIRD_FLAP - cmp #2 - bne :noFlip - lda #0 - sta BIRD_FLAP -:noFlip rts + lda #0 + sta BIRD_FLAP_CNT + inc BIRD_FLAP + lda BIRD_FLAP + cmp #2 + bne :noFlip + lda #0 + sta BIRD_FLAP +:noFlip rts ***** EVEN then ODD, i.e. AUX then MAIN BIRD_WUP_E_PIXEL - DO MONO - hex 00,EA,EA,FF,F0,50,D5,A5,0F,00 - hex AA,EA,EE,CF,CF,D5,55,8A,90,90 - hex 05,AD,A4,08,08,05,5D,51,01,00 - ELSE - hex BB,EA,EA,FF,FB,57,D5,A5,0F,77 - hex AA,EA,EE,CF,CF,D5,55,8A,90,97 - hex B5,AD,A4,B8,B8,75,5D,51,71,77 - FIN + DO MONO + hex 00,EA,EA,FF,F0,50,D5,A5,0F,00 + hex AA,EA,EE,CF,CF,D5,55,8A,90,90 + hex 05,AD,A4,08,08,05,5D,51,01,00 + ELSE + hex BB,EA,EA,FF,FB,57,D5,A5,0F,77 + hex AA,EA,EE,CF,CF,D5,55,8A,90,97 + hex B5,AD,A4,B8,B8,75,5D,51,71,77 + FIN BIRD_WUP_E_MASK - hex FF,00,00,00,0F,0F,00,00,00,FF - hex 00,00,00,00,00,00,00,00,00,0F - hex F0,00,00,F0,F0,F0,00,00,F0,FF + hex FF,00,00,00,0F,0F,00,00,00,FF + hex 00,00,00,00,00,00,00,00,00,0F + hex F0,00,00,F0,F0,F0,00,00,F0,FF BIRD_WUP_E_IMASK - hex 00,FF,FF,FF,F0,F0,FF,FF,FF,00 - hex FF,FF,FF,FF,FF,FF,FF,FF,FF,F0 - hex 0F,FF,FF,0F,0F,0F,FF,FF,0F,00 + hex 00,FF,FF,FF,F0,F0,FF,FF,FF,00 + hex FF,FF,FF,FF,FF,FF,FF,FF,FF,F0 + hex 0F,FF,FF,0F,0F,0F,FF,FF,0F,00 ***** EVEN then ODD, i.e. AUX then MAIN BIRD_WDN_E_PIXEL - DO MONO - hex 00,EA,EA,FF,F0,50,D5,A5,0F,00 - hex AA,EE,EE,CF,CF,DD,5D,8A,90,90 - hex 54,AE,A4,08,08,5D,55,51,01,00 - ELSE - hex BB,EA,EA,FF,FB,57,D5,A5,0F,77 - hex AA,EE,EE,CF,CF,DD,5D,8A,90,97 - hex 54,AE,A4,B8,B8,5D,55,51,71,77 - FIN + DO MONO + hex 00,EA,EA,FF,F0,50,D5,A5,0F,00 + hex AA,EE,EE,CF,CF,DD,5D,8A,90,90 + hex 54,AE,A4,08,08,5D,55,51,01,00 + ELSE + hex BB,EA,EA,FF,FB,57,D5,A5,0F,77 + hex AA,EE,EE,CF,CF,DD,5D,8A,90,97 + hex 54,AE,A4,B8,B8,5D,55,51,71,77 + FIN BIRD_WDN_E_MASK - hex FF,00,00,00,0F,0F,00,00,00,FF - hex 00,00,00,00,00,00,00,00,00,0F - hex 00,00,00,F0,F0,00,00,00,F0,FF + hex FF,00,00,00,0F,0F,00,00,00,FF + hex 00,00,00,00,00,00,00,00,00,0F + hex 00,00,00,F0,F0,00,00,00,F0,FF BIRD_WDN_E_IMASK - hex 00,FF,FF,FF,F0,F0,FF,FF,FF,00 - hex FF,FF,FF,FF,FF,FF,FF,FF,FF,F0 - hex FF,FF,FF,0F,0F,FF,FF,FF,0F,00 + hex 00,FF,FF,FF,F0,F0,FF,FF,FF,00 + hex FF,FF,FF,FF,FF,FF,FF,FF,FF,F0 + hex FF,FF,FF,0F,0F,FF,FF,FF,0F,00 ***** EVEN then ODD, i.e. AUX then MAIN BIRD_WUP_O_PIXEL - DO MONO - hex 00,A0,A0,F0,00,00,50,50,F0,00 - hex A0,AE,EE,FF,FF,55,5D,AA,00,00 - hex 5A,DE,4E,8C,8C,5D,D5,18,19,09 - hex 00,0A,0A,00,00,00,05,05,00,00 - ELSE - hex BB,AB,AB,FB,BB,77,57,57,F7,77 - hex AB,AE,EE,FF,FF,55,5D,AA,00,77 - hex 5A,DE,4E,8C,8C,5D,D5,18,19,79 - hex BB,BA,BA,BB,BB,77,75,75,77,77 - - FIN + DO MONO + hex 00,A0,A0,F0,00,00,50,50,F0,00 + hex A0,AE,EE,FF,FF,55,5D,AA,00,00 + hex 5A,DE,4E,8C,8C,5D,D5,18,19,09 + hex 00,0A,0A,00,00,00,05,05,00,00 + ELSE + hex BB,AB,AB,FB,BB,77,57,57,F7,77 + hex AB,AE,EE,FF,FF,55,5D,AA,00,77 + hex 5A,DE,4E,8C,8C,5D,D5,18,19,79 + hex BB,BA,BA,BB,BB,77,75,75,77,77 + FIN BIRD_WUP_O_MASK - hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF - hex 0F,00,00,00,00,00,00,00,00,FF - hex 00,00,00,00,00,00,00,00,00,F0 - hex FF,F0,F0,FF,FF,FF,F0,F0,FF,FF + hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF + hex 0F,00,00,00,00,00,00,00,00,FF + hex 00,00,00,00,00,00,00,00,00,F0 + hex FF,F0,F0,FF,FF,FF,F0,F0,FF,FF BIRD_WUP_O_IMASK - hex 00,F0,F0,F0,00,00,F0,F0,F0,00 - hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00 - hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F - hex 00,0F,0F,00,00,00,0F,0F,00,00 + hex 00,F0,F0,F0,00,00,F0,F0,F0,00 + hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00 + hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F + hex 00,0F,0F,00,00,00,0F,0F,00,00 ***** EVEN then ODD, i.e. AUX then MAIN BIRD_WDN_O_PIXEL - DO MONO - hex 00,A0,A0,F0,00,00,50,50,F0,00 - hex A0,EE,EE,FF,FF,D5,DD,AA,00,00 - hex 4A,EE,4E,8C,8C,DD,55,18,19,09 - hex 05,0A,0A,00,00,05,05,05,00,00 - ELSE - hex BB,AB,AB,FB,BB,77,57,57,F7,77 - hex AB,EE,EE,FF,FF,D5,DD,AA,00,77 - hex 4A,EE,4E,8C,8C,DD,55,18,19,79 - hex B5,BA,BA,BB,BB,75,75,75,77,77 - FIN + DO MONO + hex 00,A0,A0,F0,00,00,50,50,F0,00 + hex A0,EE,EE,FF,FF,D5,DD,AA,00,00 + hex 4A,EE,4E,8C,8C,DD,55,18,19,09 + hex 05,0A,0A,00,00,05,05,05,00,00 + ELSE + hex BB,AB,AB,FB,BB,77,57,57,F7,77 + hex AB,EE,EE,FF,FF,D5,DD,AA,00,77 + hex 4A,EE,4E,8C,8C,DD,55,18,19,79 + hex B5,BA,BA,BB,BB,75,75,75,77,77 + FIN BIRD_WDN_O_MASK - hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF - hex 0F,00,00,00,00,00,00,00,00,FF - hex 00,00,00,00,00,00,00,00,00,F0 - hex F0,F0,F0,FF,FF,F0,F0,F0,FF,FF + hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF + hex 0F,00,00,00,00,00,00,00,00,FF + hex 00,00,00,00,00,00,00,00,00,F0 + hex F0,F0,F0,FF,FF,F0,F0,F0,FF,FF BIRD_WDN_O_IMASK - hex 00,F0,F0,F0,00,00,F0,F0,F0,00 - hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00 - hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F - hex 0F,0F,0F,00,00,0F,0F,0F,00,00 + hex 00,F0,F0,F0,00,00,F0,F0,F0,00 + hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00 + hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F + hex 0F,0F,0F,00,00,0F,0F,0F,00,00 ** y=line a=height x=col -UndrawBird lda BIRD_Y_OLD - lsr - tay - bne :oddBird -:evenBird lda #3 - bne :continue -:oddBird lda #4 -:continue ldx #BIRD_X - cmp #4 - beq :undraw4 -:undraw3 lda LoLineTableL,y - sta SPRITE_SCREEN_P - lda LoLineTableH,y - sta SPRITE_SCREEN_P+1 - lda LoLineTableL+1,y - sta SPRITE_SCREEN_P2 - lda LoLineTableH+1,y - sta SPRITE_SCREEN_P2+1 - lda LoLineTableL+2,y - sta SPRITE_SCREEN_P3 - lda LoLineTableH+2,y - sta SPRITE_SCREEN_P3+1 +UndrawBird lda BIRD_Y_OLD + lsr + tay + bne :oddBird +:evenBird lda #3 + bne :continue +:oddBird lda #4 +:continue ldx #BIRD_X + cmp #4 + beq :undraw4 +:undraw3 lda LoLineTableL,y + sta SPRITE_SCREEN_P + lda LoLineTableH,y + sta SPRITE_SCREEN_P+1 + lda LoLineTableL+1,y + sta SPRITE_SCREEN_P2 + lda LoLineTableH+1,y + sta SPRITE_SCREEN_P2+1 + lda LoLineTableL+2,y + sta SPRITE_SCREEN_P3 + lda LoLineTableH+2,y + sta SPRITE_SCREEN_P3+1 - txa - pha ; stash - tay ; COL offset - sta TXTPAGE2 - lda #BGCOLORAUX -:wipe1 sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny -:wipe1b sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny -:wipe1c sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny -:wipe1d sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny -:wipe1e sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y + txa + pha ; stash + tay ; COL offset + sta TXTPAGE2 + lda #BGCOLORAUX +:wipe1 sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny +:wipe1b sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny +:wipe1c sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny +:wipe1d sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny +:wipe1e sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y - pla ; unstash - tay - sta TXTPAGE1 - lda #BGCOLOR -:wipe2 sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny + pla ; unstash + tay + sta TXTPAGE1 + lda #BGCOLOR +:wipe2 sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny -:wipe2b sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny -:wipe2c sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny -:wipe2d sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - iny -:wipe2e sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - rts +:wipe2b sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny +:wipe2c sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny +:wipe2d sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + iny +:wipe2e sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + rts -:undraw4 lda LoLineTableL,y - sta SPRITE_SCREEN_P - lda LoLineTableH,y - sta SPRITE_SCREEN_P+1 - lda LoLineTableL+1,y - sta SPRITE_SCREEN_P2 - lda LoLineTableH+1,y - sta SPRITE_SCREEN_P2+1 - lda LoLineTableL+2,y - sta SPRITE_SCREEN_P3 - lda LoLineTableH+2,y - sta SPRITE_SCREEN_P3+1 - lda LoLineTableL+3,y - sta SPRITE_SCREEN_P4 - lda LoLineTableH+3,y - sta SPRITE_SCREEN_P4+1 +:undraw4 lda LoLineTableL,y + sta SPRITE_SCREEN_P + lda LoLineTableH,y + sta SPRITE_SCREEN_P+1 + lda LoLineTableL+1,y + sta SPRITE_SCREEN_P2 + lda LoLineTableH+1,y + sta SPRITE_SCREEN_P2+1 + lda LoLineTableL+2,y + sta SPRITE_SCREEN_P3 + lda LoLineTableH+2,y + sta SPRITE_SCREEN_P3+1 + lda LoLineTableL+3,y + sta SPRITE_SCREEN_P4 + lda LoLineTableH+3,y + sta SPRITE_SCREEN_P4+1 - txa - pha ; stash - tay ; COL offset - sta TXTPAGE2 - lda #BGCOLORAUX -:wipe3 sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe3b sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe3c sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe3d sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe3e sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y + txa + pha ; stash + tay ; COL offset + sta TXTPAGE2 + lda #BGCOLORAUX +:wipe3 sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe3b sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe3c sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe3d sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe3e sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y - pla ; unstash - tay - sta TXTPAGE1 - lda #BGCOLOR -:wipe4 sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe4b sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe4c sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe4d sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - iny -:wipe4e sta (SPRITE_SCREEN_P),y - sta (SPRITE_SCREEN_P2),y - sta (SPRITE_SCREEN_P3),y - sta (SPRITE_SCREEN_P4),y - rts + pla ; unstash + tay + sta TXTPAGE1 + lda #BGCOLOR +:wipe4 sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe4b sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe4c sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe4d sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + iny +:wipe4e sta (SPRITE_SCREEN_P),y + sta (SPRITE_SCREEN_P2),y + sta (SPRITE_SCREEN_P3),y + sta (SPRITE_SCREEN_P4),y + rts DrawBird - lda BIRD_Y - lsr - bcs :oddHeight + lda BIRD_Y + lsr + bcs :oddHeight :evenHeight - sta SPRITE_Y - lda #3 - sta SPRITE_H - lda BIRD_FLAP - beq :flapDownEven -:flapUpEven CopyPtr BIRD_WUP_E_PIXEL;SPRITE_DATA_P - CopyPtr BIRD_WUP_E_MASK;SPRITE_MASK_P - CopyPtr BIRD_WUP_E_IMASK;SPRITE_IMASK_P - jmp :drawSprite -:flapDownEven CopyPtr BIRD_WDN_E_PIXEL;SPRITE_DATA_P - CopyPtr BIRD_WDN_E_MASK;SPRITE_MASK_P - CopyPtr BIRD_WDN_E_IMASK;SPRITE_IMASK_P - jmp :drawSprite + sta SPRITE_Y + lda #3 + sta SPRITE_H + lda BIRD_FLAP + beq :flapDownEven +:flapUpEven CopyPtr BIRD_WUP_E_PIXEL;SPRITE_DATA_P + CopyPtr BIRD_WUP_E_MASK;SPRITE_MASK_P + CopyPtr BIRD_WUP_E_IMASK;SPRITE_IMASK_P + jmp :drawSprite +:flapDownEven CopyPtr BIRD_WDN_E_PIXEL;SPRITE_DATA_P + CopyPtr BIRD_WDN_E_MASK;SPRITE_MASK_P + CopyPtr BIRD_WDN_E_IMASK;SPRITE_IMASK_P + jmp :drawSprite :oddHeight - sta SPRITE_Y - lda #4 - sta SPRITE_H - lda BIRD_FLAP - beq :flapDownOdd -:flapUpOdd CopyPtr BIRD_WUP_O_PIXEL;SPRITE_DATA_P - CopyPtr BIRD_WUP_O_MASK;SPRITE_MASK_P - CopyPtr BIRD_WUP_O_IMASK;SPRITE_IMASK_P - jmp :drawSprite -:flapDownOdd CopyPtr BIRD_WDN_O_PIXEL;SPRITE_DATA_P - CopyPtr BIRD_WDN_O_MASK;SPRITE_MASK_P - CopyPtr BIRD_WDN_O_IMASK;SPRITE_IMASK_P - jmp :drawSprite + sta SPRITE_Y + lda #4 + sta SPRITE_H + lda BIRD_FLAP + beq :flapDownOdd +:flapUpOdd CopyPtr BIRD_WUP_O_PIXEL;SPRITE_DATA_P + CopyPtr BIRD_WUP_O_MASK;SPRITE_MASK_P + CopyPtr BIRD_WUP_O_IMASK;SPRITE_IMASK_P + jmp :drawSprite +:flapDownOdd CopyPtr BIRD_WDN_O_PIXEL;SPRITE_DATA_P + CopyPtr BIRD_WDN_O_MASK;SPRITE_MASK_P + CopyPtr BIRD_WDN_O_IMASK;SPRITE_IMASK_P + jmp :drawSprite :drawSprite - jsr DrawSpriteBetter - rts + jsr DrawSpriteBetter + rts * still does collision DrawSpriteBetter - lda #0 - sta SPRITE_X_IDX -:drawLine lda SPRITE_Y ; - tay - lda LoLineTableL,y ; SET SCREEN LINE - sta SPRITE_SCREEN_P - lda LoLineTableH,y - sta SPRITE_SCREEN_P+1 + lda #0 + sta SPRITE_X_IDX +:drawLine lda SPRITE_Y ; + tay + lda LoLineTableL,y ; SET SCREEN LINE + sta SPRITE_SCREEN_P + lda LoLineTableH,y + sta SPRITE_SCREEN_P+1 - lda #BIRD_X ;SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION - clc ; I think the highest position is $f8 - adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8 - sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY? + lda #BIRD_X ;SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION + clc ; I think the highest position is $f8 + adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8 + sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY? - jmp DrawSpriteLineC + jmp DrawSpriteLineC ]DSLCD_done - inc SPRITE_Y - dec SPRITE_H - lda SPRITE_H - bne :drawLine - rts + inc SPRITE_Y + dec SPRITE_H + lda SPRITE_H + bne :drawLine + rts DrawSpriteLineC - ; EVEN COLS -DD_EVEN lda #0 - sta SPRITE_SCREEN_IDX - sta TXTPAGE2 + ; EVEN COLS +DD_EVEN lda #0 + sta SPRITE_SCREEN_IDX + sta TXTPAGE2 :lineLoop :collisionCheckDrawer - ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS - lda (SPRITE_SCREEN_P),y + ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS + lda (SPRITE_SCREEN_P),y - ldy SPRITE_X_IDX ; PREP Y INDEX - cmp #BGCOLORAUX ; AUX BGCOLOR @TODO - beq :noCollisionSIMPLE - pha ; SAVE -> STACK - and (SPRITE_IMASK_P),y - cmp #BGCOLORAUX_0LO - beq :noCollision - cmp #BGCOLORAUX_0HI - beq :noCollision - lda #1 - sta SPRITE_COLLISION + ldy SPRITE_X_IDX ; PREP Y INDEX + cmp #BGCOLORAUX ; AUX BGCOLOR @TODO + beq :noCollisionSIMPLE + pha ; SAVE -> STACK + and (SPRITE_IMASK_P),y + cmp #BGCOLORAUX_0LO + beq :noCollision + cmp #BGCOLORAUX_0HI + beq :noCollision + lda #1 + sta SPRITE_COLLISION :noCollision -:doPixels pla ; Y=SPRITE X A=BG DATA - and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA - ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA - ldy SPRITE_SCREEN_IDX - sta (SPRITE_SCREEN_P),y - sec - bcs :donePixel +:doPixels pla ; Y=SPRITE X A=BG DATA + and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA + ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA + ldy SPRITE_SCREEN_IDX + sta (SPRITE_SCREEN_P),y + sec + bcs :donePixel :noCollisionSIMPLE - lda (SPRITE_DATA_P),y - ldy SPRITE_SCREEN_IDX - sta (SPRITE_SCREEN_P),y + lda (SPRITE_DATA_P),y + ldy SPRITE_SCREEN_IDX + sta (SPRITE_SCREEN_P),y -:donePixel inc SPRITE_X_IDX - inc SPRITE_SCREEN_IDX - ldy SPRITE_SCREEN_IDX - cpy SPRITE_W - bcc :lineLoop +:donePixel inc SPRITE_X_IDX + inc SPRITE_SCREEN_IDX + ldy SPRITE_SCREEN_IDX + cpy SPRITE_W + bcc :lineLoop DD_ODD - ; ODD COLS - lda #0 - sta SPRITE_SCREEN_IDX - sta TXTPAGE1 - -:lineLoop ;ldy SPRITE_X_IDX ; - ;lda (SPRITE_IMASK_P),y - ;beq :noPixel + ; ODD COLS + lda #0 + sta SPRITE_SCREEN_IDX + sta TXTPAGE1 +:lineLoop :collisionCheckDrawer - ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS - lda (SPRITE_SCREEN_P),y - ldy SPRITE_X_IDX ; PREP Y INDEX - cmp #BGCOLOR ; MAIN BGCOLOR @TODO - beq :noCollisionSIMPLE - pha ; SAVE -> STACK - and (SPRITE_IMASK_P),y - cmp #BGCOLOR_0LO - beq :noCollision - cmp #BGCOLOR_0HI - beq :noCollision - lda #1 - sta SPRITE_COLLISION + ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS + lda (SPRITE_SCREEN_P),y + ldy SPRITE_X_IDX ; PREP Y INDEX + cmp #BGCOLOR ; MAIN BGCOLOR @TODO + beq :noCollisionSIMPLE + pha ; SAVE -> STACK + and (SPRITE_IMASK_P),y + cmp #BGCOLOR_0LO + beq :noCollision + cmp #BGCOLOR_0HI + beq :noCollision + lda #1 + sta SPRITE_COLLISION :noCollision -:doPixels pla ; Y=SPRITE X A=BG DATA - and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA - ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA - ldy SPRITE_SCREEN_IDX - sta (SPRITE_SCREEN_P),y - sec - bcs :donePixel +:doPixels pla ; Y=SPRITE X A=BG DATA + and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA + ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA + ldy SPRITE_SCREEN_IDX + sta (SPRITE_SCREEN_P),y + sec + bcs :donePixel :noCollisionSIMPLE - lda (SPRITE_DATA_P),y - ldy SPRITE_SCREEN_IDX - sta (SPRITE_SCREEN_P),y + lda (SPRITE_DATA_P),y + ldy SPRITE_SCREEN_IDX + sta (SPRITE_SCREEN_P),y -:donePixel inc SPRITE_X_IDX - inc SPRITE_SCREEN_IDX - ldy SPRITE_SCREEN_IDX - cpy SPRITE_W - bcc :lineLoop +:donePixel inc SPRITE_X_IDX + inc SPRITE_SCREEN_IDX + ldy SPRITE_SCREEN_IDX + cpy SPRITE_W + bcc :lineLoop - jmp ]DSLCD_done + jmp ]DSLCD_done diff --git a/src/dlrlib.s b/src/dlrlib.s index c31d4ab..9629b56 100644 --- a/src/dlrlib.s +++ b/src/dlrlib.s @@ -1,280 +1,280 @@ -LOGO_Y db 1 -LOGO_X db 3 -LOGO_CURLINE db 0 +LOGO_Y db 1 +LOGO_X db 3 +LOGO_CURLINE db 0 -SPR_SP equ $00 -SPR_DP equ $02 -SPR_PIXEL db 00 -SPR_MASKCOLOR db 0 -SPR_MASKCOLORH db 0 -SPR_MASKCOLORL db 0 -SPR_X db 0 -SPR_Y db 0 +SPR_SP equ $00 +SPR_DP equ $02 +SPR_PIXEL db 00 +SPR_MASKCOLOR db 0 +SPR_MASKCOLORH db 0 +SPR_MASKCOLORL db 0 +SPR_X db 0 +SPR_Y db 0 -SPR_CURLINE db 0 -SPR_WIDTH db 0 -SPR_HEIGHT db 0 +SPR_CURLINE db 0 +SPR_WIDTH db 0 +SPR_HEIGHT db 0 -SPR_Y_STASH db 0 ;used by big number routines +SPR_Y_STASH db 0 ;used by big number routines -DL_SetDLRMode lda LORES ;set lores - lda SETAN3 ;enables DLR - sta SET80VID +DL_SetDLRMode lda LORES ;set lores + lda SETAN3 ;enables DLR + sta SET80VID - sta C80STOREON ; enable aux/page1,2 mapping - sta MIXCLR ;make sure graphics-only mode - rts -DL_SetDLRMixMode lda LORES ;set lores - lda SETAN3 ;enables DLR - sta SET80VID + sta C80STOREON ; enable aux/page1,2 mapping + sta MIXCLR ;make sure graphics-only mode + rts +DL_SetDLRMixMode lda LORES ;set lores + lda SETAN3 ;enables DLR + sta SET80VID - sta C80STOREON ; enable aux/page1,2 mapping - sta MIXSET ;turn on mixed text/graphics mode - rts + sta C80STOREON ; enable aux/page1,2 mapping + sta MIXSET ;turn on mixed text/graphics mode + rts -DL_MixClearText sta TXTPAGE1 - ldx #40 -:loop dex - sta Lo24,x - sta Lo23,x - sta Lo22,x - sta Lo21,x - bne :loop - sta TXTPAGE2 - ldx #40 -:loop2 dex - sta Lo24,x - sta Lo23,x - sta Lo22,x - sta Lo21,x - bne :loop2 - rts +DL_MixClearText sta TXTPAGE1 + ldx #40 +:loop dex + sta Lo24,x + sta Lo23,x + sta Lo22,x + sta Lo21,x + bne :loop + sta TXTPAGE2 + ldx #40 +:loop2 dex + sta Lo24,x + sta Lo23,x + sta Lo22,x + sta Lo21,x + bne :loop2 + rts ** A = lo-res color byte -DL_Clear sta TXTPAGE1 - ldx #40 -:loop dex - sta Lo01,x - sta Lo02,x - sta Lo03,x - sta Lo04,x - sta Lo05,x - sta Lo06,x - sta Lo07,x - sta Lo08,x - sta Lo09,x - sta Lo10,x - sta Lo11,x - sta Lo12,x - sta Lo13,x - sta Lo14,x - sta Lo15,x - sta Lo16,x - sta Lo17,x - sta Lo18,x - sta Lo19,x - sta Lo20,x - sta Lo21,x - sta Lo22,x - sta Lo23,x - sta Lo24,x - bne :loop - tax ; get aux color value - lda MainAuxMap,x - sta TXTPAGE2 ; turn on p2 - ldx #40 -:loop2 dex - sta Lo01,x - sta Lo02,x - sta Lo03,x - sta Lo04,x - sta Lo05,x - sta Lo06,x - sta Lo07,x - sta Lo08,x - sta Lo09,x - sta Lo10,x - sta Lo11,x - sta Lo12,x - sta Lo13,x - sta Lo14,x - sta Lo15,x - sta Lo16,x - sta Lo17,x - sta Lo18,x - sta Lo19,x - sta Lo20,x - sta Lo21,x - sta Lo22,x - sta Lo23,x - sta Lo24,x - bne :loop2 - rts +DL_Clear sta TXTPAGE1 + ldx #40 +:loop dex + sta Lo01,x + sta Lo02,x + sta Lo03,x + sta Lo04,x + sta Lo05,x + sta Lo06,x + sta Lo07,x + sta Lo08,x + sta Lo09,x + sta Lo10,x + sta Lo11,x + sta Lo12,x + sta Lo13,x + sta Lo14,x + sta Lo15,x + sta Lo16,x + sta Lo17,x + sta Lo18,x + sta Lo19,x + sta Lo20,x + sta Lo21,x + sta Lo22,x + sta Lo23,x + sta Lo24,x + bne :loop + tax ; get aux color value + lda MainAuxMap,x + sta TXTPAGE2 ; turn on p2 + ldx #40 +:loop2 dex + sta Lo01,x + sta Lo02,x + sta Lo03,x + sta Lo04,x + sta Lo05,x + sta Lo06,x + sta Lo07,x + sta Lo08,x + sta Lo09,x + sta Lo10,x + sta Lo11,x + sta Lo12,x + sta Lo13,x + sta Lo14,x + sta Lo15,x + sta Lo16,x + sta Lo17,x + sta Lo18,x + sta Lo19,x + sta Lo20,x + sta Lo21,x + sta Lo22,x + sta Lo23,x + sta Lo24,x + bne :loop2 + rts ** A = lo-res color byte Y = line byte (0-23) -DL_HLine tax - lda LoLineTableL,y - sta SPR_DP - lda LoLineTableH,y - sta SPR_DP+1 - txa +DL_HLine tax + lda LoLineTableL,y + sta SPR_DP + lda LoLineTableH,y + sta SPR_DP+1 + txa - sta TXTPAGE1 - ldy #39 -:loopMain sta (SPR_DP),y - dey - bpl :loopMain + sta TXTPAGE1 + ldy #39 +:loopMain sta (SPR_DP),y + dey + bpl :loopMain - sta TXTPAGE2 - tax - lda MainAuxMap,x - ldy #39 -:loopAux sta (SPR_DP),y - dey - bpl :loopAux - rts + sta TXTPAGE2 + tax + lda MainAuxMap,x + ldy #39 +:loopAux sta (SPR_DP),y + dey + bpl :loopAux + rts * A X Y = 0 1 2 ?? -DL_WipeLn0 db 0 -DL_WipeLn1 db 0 -DL_WipeLn2 db 0 -DL_WipeLn0_I db 0 ; inverted patterns for bottom up -DL_WipeLn1_I db 0 -DL_WipeLn2_I db 0 -DL_WipeCnt db 0 -DL_WipeDelay db #4 +DL_WipeLn0 db 0 +DL_WipeLn1 db 0 +DL_WipeLn2 db 0 +DL_WipeLn0_I db 0 ; inverted patterns for bottom up +DL_WipeLn1_I db 0 +DL_WipeLn2_I db 0 +DL_WipeCnt db 0 +DL_WipeDelay db #4 DL_NibSwap - asl ; nibble swap - rol - rol - rol - sta $00 - and #07 - adc $00 - rts + asl ; nibble swap + rol + rol + rol + sta $00 + and #07 + adc $00 + rts DL_WipeInNoNib - sty DL_WipeLn2 ; set up color bytes to write - sty DL_WipeLn2_I - stx DL_WipeLn1 - stx DL_WipeLn1_I - sta DL_WipeLn0 - sta DL_WipeLn0_I - jmp DL_WipeIt + sty DL_WipeLn2 ; set up color bytes to write + sty DL_WipeLn2_I + stx DL_WipeLn1 + stx DL_WipeLn1_I + sta DL_WipeLn0 + sta DL_WipeLn0_I + jmp DL_WipeIt DL_WipeIn - sty DL_WipeLn2 ; set up color bytes to write - stx DL_WipeLn1 - sta DL_WipeLn0 - jsr DL_NibSwap ; and their A/B swapped equivalents - sta DL_WipeLn0_I ; for mirroring the lines below + sty DL_WipeLn2 ; set up color bytes to write + stx DL_WipeLn1 + sta DL_WipeLn0 + jsr DL_NibSwap ; and their A/B swapped equivalents + sta DL_WipeLn0_I ; for mirroring the lines below - lda DL_WipeLn1 - jsr DL_NibSwap - sta DL_WipeLn1_I + lda DL_WipeLn1 + jsr DL_NibSwap + sta DL_WipeLn1_I - lda DL_WipeLn2 - jsr DL_NibSwap - sta DL_WipeLn2_I + lda DL_WipeLn2 + jsr DL_NibSwap + sta DL_WipeLn2_I DL_WipeIt - ldx DL_WipeDelay - jsr VBlankX ; Frame 1 - special case (clipped) - lda DL_WipeLn0 - ldy #0 - jsr DL_HLine - lda DL_WipeLn0_I - ldy #23 - jsr DL_HLine + ldx DL_WipeDelay + jsr VBlankX ; Frame 1 - special case (clipped) + lda DL_WipeLn0 + ldy #0 + jsr DL_HLine + lda DL_WipeLn0_I + ldy #23 + jsr DL_HLine - ldx DL_WipeDelay - jsr VBlankX ; Frame 2 - special case (clipped) - lda DL_WipeLn0 - ldy #1 - jsr DL_HLine - lda DL_WipeLn1 - ldy #0 - jsr DL_HLine + ldx DL_WipeDelay + jsr VBlankX ; Frame 2 - special case (clipped) + lda DL_WipeLn0 + ldy #1 + jsr DL_HLine + lda DL_WipeLn1 + ldy #0 + jsr DL_HLine - lda DL_WipeLn0_I - ldy #22 - jsr DL_HLine - lda DL_WipeLn1_I - ldy #23 - jsr DL_HLine + lda DL_WipeLn0_I + ldy #22 + jsr DL_HLine + lda DL_WipeLn1_I + ldy #23 + jsr DL_HLine - lda #0 - sta DL_WipeCnt + lda #0 + sta DL_WipeCnt -:wiper ldx DL_WipeDelay - jsr VBlankX - lda DL_WipeLn2 - ldy DL_WipeCnt - jsr DL_HLine - lda DL_WipeLn1 - ldy DL_WipeCnt - iny - jsr DL_HLine - lda DL_WipeLn0 - ldy DL_WipeCnt - iny - iny - jsr DL_HLine - lda #23 - sec - sbc DL_WipeCnt - pha - pha - tay - lda DL_WipeLn2_I - jsr DL_HLine - pla - tay - dey - lda DL_WipeLn1_I - jsr DL_HLine - pla - tay - dey - dey - lda DL_WipeLn0_I - jsr DL_HLine - inc DL_WipeCnt - lda DL_WipeCnt - cmp #10 - bne :wiper +:wiper ldx DL_WipeDelay + jsr VBlankX + lda DL_WipeLn2 + ldy DL_WipeCnt + jsr DL_HLine + lda DL_WipeLn1 + ldy DL_WipeCnt + iny + jsr DL_HLine + lda DL_WipeLn0 + ldy DL_WipeCnt + iny + iny + jsr DL_HLine + lda #23 + sec + sbc DL_WipeCnt + pha + pha + tay + lda DL_WipeLn2_I + jsr DL_HLine + pla + tay + dey + lda DL_WipeLn1_I + jsr DL_HLine + pla + tay + dey + dey + lda DL_WipeLn0_I + jsr DL_HLine + inc DL_WipeCnt + lda DL_WipeCnt + cmp #10 + bne :wiper - ldx DL_WipeDelay - jsr VBlankX ; Frame end-1 - special case (smashed) - lda DL_WipeLn2 - ldy #10 - jsr DL_HLine - lda DL_WipeLn1 - ldy #11 - jsr DL_HLine + ldx DL_WipeDelay + jsr VBlankX ; Frame end-1 - special case (smashed) + lda DL_WipeLn2 + ldy #10 + jsr DL_HLine + lda DL_WipeLn1 + ldy #11 + jsr DL_HLine - lda DL_WipeLn1_I - ldy #12 - jsr DL_HLine - lda DL_WipeLn2_I - ldy #13 - jsr DL_HLine + lda DL_WipeLn1_I + ldy #12 + jsr DL_HLine + lda DL_WipeLn2_I + ldy #13 + jsr DL_HLine - ldx DL_WipeDelay - jsr VBlankX ; Frame end - special case (last fill line) - lda DL_WipeLn2 - ldy #11 - jsr DL_HLine + ldx DL_WipeDelay + jsr VBlankX ; Frame end - special case (last fill line) + lda DL_WipeLn2 + ldy #11 + jsr DL_HLine - lda DL_WipeLn2_I - ldy #12 - jsr DL_HLine - rts + lda DL_WipeLn2_I + ldy #12 + jsr DL_HLine + rts @@ -284,685 +284,671 @@ DL_WipeIt ************************************************** * Lores/Text lines ************************************************** -Lo01 equ $400 -Lo02 equ $480 -Lo03 equ $500 -Lo04 equ $580 -Lo05 equ $600 -Lo06 equ $680 -Lo07 equ $700 -Lo08 equ $780 -Lo09 equ $428 -Lo10 equ $4a8 -Lo11 equ $528 -Lo12 equ $5a8 -Lo13 equ $628 -Lo14 equ $6a8 -Lo15 equ $728 -Lo16 equ $7a8 -Lo17 equ $450 -Lo18 equ $4d0 -Lo19 equ $550 -Lo20 equ $5d0 +Lo01 equ $400 +Lo02 equ $480 +Lo03 equ $500 +Lo04 equ $580 +Lo05 equ $600 +Lo06 equ $680 +Lo07 equ $700 +Lo08 equ $780 +Lo09 equ $428 +Lo10 equ $4a8 +Lo11 equ $528 +Lo12 equ $5a8 +Lo13 equ $628 +Lo14 equ $6a8 +Lo15 equ $728 +Lo16 equ $7a8 +Lo17 equ $450 +Lo18 equ $4d0 +Lo19 equ $550 +Lo20 equ $5d0 * the "plus four" lines -Lo21 equ $650 -Lo22 equ $6d0 -Lo23 equ $750 -Lo24 equ $7d0 +Lo21 equ $650 +Lo22 equ $6d0 +Lo23 equ $750 +Lo24 equ $7d0 -LoLineTable da Lo01,Lo02,Lo03,Lo04,Lo05,Lo06 - da Lo07,Lo08,Lo09,Lo10,Lo11,Lo12 - da Lo13,Lo14,Lo15,Lo16,Lo17,Lo18 - da Lo19,Lo20,Lo21,Lo22,Lo23,Lo24 +LoLineTable da Lo01,Lo02,Lo03,Lo04,Lo05,Lo06 + da Lo07,Lo08,Lo09,Lo10,Lo11,Lo12 + da Lo13,Lo14,Lo15,Lo16,Lo17,Lo18 + da Lo19,Lo20,Lo21,Lo22,Lo23,Lo24 ** Here we split the table for an optimization ** We can directly get our line numbers now ** Without using ASL -LoLineTableH db >Lo01,>Lo02,>Lo03,>Lo04,>Lo05,>Lo06 - db >Lo07,>Lo08,>Lo09,>Lo10,>Lo11,>Lo12 - db >Lo13,>Lo14,>Lo15,>Lo16,>Lo17,>Lo18 - db >Lo19,>Lo20,>Lo21,>Lo22,>Lo23,>Lo24 -LoLineTableL db Lo01,>Lo02,>Lo03,>Lo04,>Lo05,>Lo06 + db >Lo07,>Lo08,>Lo09,>Lo10,>Lo11,>Lo12 + db >Lo13,>Lo14,>Lo15,>Lo16,>Lo17,>Lo18 + db >Lo19,>Lo20,>Lo21,>Lo22,>Lo23,>Lo24 +LoLineTableL db QRCodeData - sta SPR_SP+1 - lda #QRCodeHeight - sta SPR_HEIGHT - lda #QRCodeWidth - sta SPR_WIDTH - lda #13 ; @todo rename 'flogo' - sta SPR_X - lda #3 - sta SPR_Y - lda #0 - sta SPR_CURLINE - jsr DrawSprite - rts + lda #QRCodeData + sta SPR_SP+1 + lda #QRCodeHeight + sta SPR_HEIGHT + lda #QRCodeWidth + sta SPR_WIDTH + lda #13 ; @todo rename 'flogo' + sta SPR_X + lda #3 + sta SPR_Y + lda #0 + sta SPR_CURLINE + jsr DrawSprite + rts -DrawFlogo lda #flogoMaskColor - sta SPR_MASKCOLOR +DrawFlogo lda #flogoMaskColor + sta SPR_MASKCOLOR - lda #flogoData - sta SPR_SP+1 - lda #flogoHeight - sta SPR_HEIGHT - lda #flogoWidth - sta SPR_WIDTH - lda LOGO_X ; @todo rename 'flogo' - sta SPR_X - lda LOGO_Y - sta SPR_Y - lda #0 - sta SPR_CURLINE - jsr DrawSprite - rts + lda #flogoData + sta SPR_SP+1 + lda #flogoHeight + sta SPR_HEIGHT + lda #flogoWidth + sta SPR_WIDTH + lda LOGO_X ; @todo rename 'flogo' + sta SPR_X + lda LOGO_Y + sta SPR_Y + lda #0 + sta SPR_CURLINE + jsr DrawSprite + rts -DrawTap lda #tapMaskColor - sta SPR_MASKCOLOR +DrawTap lda #tapMaskColor + sta SPR_MASKCOLOR - lda #tapData - sta SPR_SP+1 - lda #tapHeight - sta SPR_HEIGHT - lda #tapWidth - sta SPR_WIDTH - lda #8 - sta SPR_X - lda #16 - sta SPR_Y - lda #0 - sta SPR_CURLINE - jsr DrawSprite - rts + lda #tapData + sta SPR_SP+1 + lda #tapHeight + sta SPR_HEIGHT + lda #tapWidth + sta SPR_WIDTH + lda #8 + sta SPR_X + lda #16 + sta SPR_Y + lda #0 + sta SPR_CURLINE + jsr DrawSprite + rts DrawYou - sty SPR_Y - lda #youMaskColor - sta SPR_MASKCOLOR + sty SPR_Y + lda #youMaskColor + sta SPR_MASKCOLOR - lda #youData - sta SPR_SP+1 - lda #youHeight - sta SPR_HEIGHT - lda #youWidth - sta SPR_WIDTH - lda #13 - sta SPR_X - lda #0 - sta SPR_CURLINE - jsr DrawSprite - rts + lda #youData + sta SPR_SP+1 + lda #youHeight + sta SPR_HEIGHT + lda #youWidth + sta SPR_WIDTH + lda #13 + sta SPR_X + lda #0 + sta SPR_CURLINE + jsr DrawSprite + rts * y = Y DrawHi - sty SPR_Y - lda #hiMaskColor - sta SPR_MASKCOLOR + sty SPR_Y + lda #hiMaskColor + sta SPR_MASKCOLOR - lda #hiData - sta SPR_SP+1 - lda #hiHeight - sta SPR_HEIGHT - lda #hiWidth - sta SPR_WIDTH - lda #13 - sta SPR_X - lda #0 - sta SPR_CURLINE - jsr DrawSprite - rts + lda #hiData + sta SPR_SP+1 + lda #hiHeight + sta SPR_HEIGHT + lda #hiWidth + sta SPR_WIDTH + lda #13 + sta SPR_X + lda #0 + sta SPR_CURLINE + jsr DrawSprite + rts DrawHiScore - stx SPR_X - sty SPR_Y - sty SPR_Y_STASH - lda HiScoreHi - sta DrawNumberHi - lda HiScoreLo - sta DrawNumberLo - jsr DrawBigNumbersFancy - rts + stx SPR_X + sty SPR_Y + sty SPR_Y_STASH + lda HiScoreHi + sta DrawNumberHi + lda HiScoreLo + sta DrawNumberLo + jsr DrawBigNumbersFancy + rts DrawYouScore - stx SPR_X - sty SPR_Y - sty SPR_Y_STASH - lda ScoreHi - sta DrawNumberHi - lda ScoreLo - sta DrawNumberLo - jsr DrawBigNumbersFancy - rts + stx SPR_X + sty SPR_Y + sty SPR_Y_STASH + lda ScoreHi + sta DrawNumberHi + lda ScoreLo + sta DrawNumberLo + jsr DrawBigNumbersFancy + rts * Draws in natural format from 0 to 9999 DrawBigNumbersFancy - lda #NumHeight - sta SPR_HEIGHT - lda #NumWidth - sta SPR_WIDTH - lda #NumMaskColor - sta SPR_MASKCOLOR + lda #NumHeight + sta SPR_HEIGHT + lda #NumWidth + sta SPR_WIDTH + lda #NumMaskColor + sta SPR_MASKCOLOR - lda DrawNumberHi - bne :hiDigits - lda SPR_X - clc - adc #NumWidth*2 ; skip two spaces - sta SPR_X - bcc :loDigits + lda DrawNumberHi + bne :hiDigits + lda SPR_X + clc + adc #NumWidth*2 ; skip two spaces + sta SPR_X + bcc :loDigits :hiDigits - lsr - lsr - lsr - lsr - beq :noThousandDigit - jsr DrawBigNumber ; draw "thousands" digit -:noThousandDigit lda SPR_X - clc - adc #NumWidth ; advance one space - sta SPR_X - ldy SPR_Y_STASH - sty SPR_Y - lda DrawNumberHi - and #$0F - jsr DrawBigNumber ; draw "hundreds" digit - lda SPR_X - clc - adc #NumWidth ; advance one space - sta SPR_X - ldy SPR_Y_STASH - sty SPR_Y -:loDigits lda DrawNumberLo - lsr - lsr - lsr - lsr - beq :tensZero - ldy SPR_Y_STASH - sty SPR_Y - jsr DrawBigNumber ; draw "tens" digit (1-9) - clc - bcc :tensDone + lsr + lsr + lsr + lsr + beq :noThousandDigit + jsr DrawBigNumber ; draw "thousands" digit +:noThousandDigit lda SPR_X + clc + adc #NumWidth ; advance one space + sta SPR_X + ldy SPR_Y_STASH + sty SPR_Y + lda DrawNumberHi + and #$0F + jsr DrawBigNumber ; draw "hundreds" digit + lda SPR_X + clc + adc #NumWidth ; advance one space + sta SPR_X + ldy SPR_Y_STASH + sty SPR_Y +:loDigits lda DrawNumberLo + lsr + lsr + lsr + lsr + beq :tensZero + ldy SPR_Y_STASH + sty SPR_Y + jsr DrawBigNumber ; draw "tens" digit (1-9) + clc + bcc :tensDone :tensZero ; we need to know if we drew anything above - lda DrawNumberHi - beq :noTensDigit - ldy SPR_Y_STASH - sty SPR_Y - lda #0 - jsr DrawBigNumber ; draw "tens" digit (0) + lda DrawNumberHi + beq :noTensDigit + ldy SPR_Y_STASH + sty SPR_Y + lda #0 + jsr DrawBigNumber ; draw "tens" digit (0) :noTensDigit :tensDone - lda SPR_X - clc - adc #NumWidth - sta SPR_X + lda SPR_X + clc + adc #NumWidth + sta SPR_X - ldy SPR_Y_STASH - sty SPR_Y - lda DrawNumberLo - and #$0F - jsr DrawBigNumber - rts + ldy SPR_Y_STASH + sty SPR_Y + lda DrawNumberLo + and #$0F + jsr DrawBigNumber + rts -DrawNumberHi db 0 -DrawNumberLo db 0 +DrawNumberHi db 0 +DrawNumberLo db 0 * All params should be set prior to this. Just pass digit (0-9) in A DrawBigNumber - asl - tay - lda NumList,y - sta SPR_SP - lda NumList+1,y - sta SPR_SP+1 - lda #0 - sta SPR_CURLINE + asl + tay + lda NumList,y + sta SPR_SP + lda NumList+1,y + sta SPR_SP+1 + lda #0 + sta SPR_CURLINE - jsr DrawSprite - rts + jsr DrawSprite + rts DrawPlaqueShared - lda #11 - sta SPR_X - lda #plaqueMaskColor - sta SPR_MASKCOLOR - lda #plaqueData - sta SPR_SP+1 - lda #plaqueHeight - sta SPR_HEIGHT - lda #plaqueWidth - sta SPR_WIDTH - lda #0 - sta SPR_CURLINE - jsr DrawSprite - rts + lda #11 + sta SPR_X + lda #plaqueMaskColor + sta SPR_MASKCOLOR + lda #plaqueData + sta SPR_SP+1 + lda #plaqueHeight + sta SPR_HEIGHT + lda #plaqueWidth + sta SPR_WIDTH + lda #0 + sta SPR_CURLINE + jsr DrawSprite + rts -DrawSplosion lda #splosionMaskColor - sta SPR_MASKCOLOR +DrawSplosion lda #splosionMaskColor + sta SPR_MASKCOLOR - lda #splosionData - sta SPR_SP+1 - lda #splosionHeight - sta SPR_HEIGHT - lda #splosionWidth - sta SPR_WIDTH - lda #BIRD_X - clc - adc #2 - sta SPR_X - lda BIRD_Y - lsr - sec - sbc #1 - sta SPR_Y - lda #0 - sta SPR_CURLINE - jsr DrawSprite - rts + lda #splosionData + sta SPR_SP+1 + lda #splosionHeight + sta SPR_HEIGHT + lda #splosionWidth + sta SPR_WIDTH + lda #BIRD_X + clc + adc #2 + sta SPR_X + lda BIRD_Y + lsr + sec + sbc #1 + sta SPR_Y + lda #0 + sta SPR_CURLINE + jsr DrawSprite + rts -DrawSprite lda SPR_MASKCOLOR - and #$F0 - sta SPR_MASKCOLORH - lsr - lsr - lsr - lsr - sta SPR_MASKCOLORL +DrawSprite lda SPR_MASKCOLOR + and #$F0 + sta SPR_MASKCOLORH + lsr + lsr + lsr + lsr + sta SPR_MASKCOLORL :lineLoop - ldy SPR_CURLINE - cpy SPR_HEIGHT ;last line? - bcc :doLine - rts ; !! ROUTINE ENDS HERE -:doLine ldy SPR_Y - lda LoLineTableL,y - clc - adc SPR_X ;; X OFFSET - sta SPR_DP - lda LoLineTableH,y - sta SPR_DP+1 - sta TXTPAGE2 - ldy #$0 + ldy SPR_CURLINE + cpy SPR_HEIGHT ;last line? + bcc :doLine + rts ; !! ROUTINE ENDS HERE +:doLine ldy SPR_Y + lda LoLineTableL,y + clc + adc SPR_X ;; X OFFSET + sta SPR_DP + lda LoLineTableH,y + sta SPR_DP+1 + sta TXTPAGE2 + ldy #$0 :auxLoop - lda (SPR_SP),y - cmp SPR_MASKCOLOR - beq :auxNoData - and #$F0 - cmp SPR_MASKCOLORH - bne :auxNoMask1 - lda (SPR_DP),y - and #$F0 - sta SPR_PIXEL - lda (SPR_SP),y - and #$0F - ora SPR_PIXEL - bne :auxData -:auxNoMask1 lda (SPR_SP),y - and #$0F - cmp SPR_MASKCOLORL - bne :auxNoMask2 - lda (SPR_DP),y - and #$0F - sta SPR_PIXEL - lda (SPR_SP),y - and #$F0 - ora SPR_PIXEL - bne :auxData -:auxNoMask2 lda (SPR_SP),y -:auxData sta (SPR_DP),y -:auxNoData iny - cpy SPR_WIDTH - bcc :auxLoop - lda SPR_SP - clc - adc SPR_WIDTH - sta SPR_SP - bcc :noCarry - inc SPR_SP+1 -:noCarry sta TXTPAGE1 - ldy #0 + lda (SPR_SP),y + cmp SPR_MASKCOLOR + beq :auxNoData + and #$F0 + cmp SPR_MASKCOLORH + bne :auxNoMask1 + lda (SPR_DP),y + and #$F0 + sta SPR_PIXEL + lda (SPR_SP),y + and #$0F + ora SPR_PIXEL + bne :auxData +:auxNoMask1 lda (SPR_SP),y + and #$0F + cmp SPR_MASKCOLORL + bne :auxNoMask2 + lda (SPR_DP),y + and #$0F + sta SPR_PIXEL + lda (SPR_SP),y + and #$F0 + ora SPR_PIXEL + bne :auxData +:auxNoMask2 lda (SPR_SP),y +:auxData sta (SPR_DP),y +:auxNoData iny + cpy SPR_WIDTH + bcc :auxLoop + lda SPR_SP + clc + adc SPR_WIDTH + sta SPR_SP + bcc :noCarry + inc SPR_SP+1 +:noCarry sta TXTPAGE1 + ldy #0 :mainLoop - lda (SPR_SP),y - cmp SPR_MASKCOLOR - beq :mainNoData - and #$F0 - cmp SPR_MASKCOLORH - bne :mainNoMask1 - lda (SPR_DP),y - and #$F0 - sta SPR_PIXEL - lda (SPR_SP),y - and #$0F - ora SPR_PIXEL - bne :mainData -:mainNoMask1 lda (SPR_SP),y - and #$0F - cmp SPR_MASKCOLORL - bne :mainNoMask2 - lda (SPR_DP),y - and #$0F - sta SPR_PIXEL - lda (SPR_SP),y - and #$F0 - ora SPR_PIXEL - bne :mainData -:mainNoMask2 lda (SPR_SP),y -:mainData sta (SPR_DP),y -:mainNoData iny - cpy SPR_WIDTH - bcc :mainLoop - lda SPR_SP - clc - adc SPR_WIDTH - sta SPR_SP - bcc :noCarry2 - inc SPR_SP+1 + lda (SPR_SP),y + cmp SPR_MASKCOLOR + beq :mainNoData + and #$F0 + cmp SPR_MASKCOLORH + bne :mainNoMask1 + lda (SPR_DP),y + and #$F0 + sta SPR_PIXEL + lda (SPR_SP),y + and #$0F + ora SPR_PIXEL + bne :mainData +:mainNoMask1 lda (SPR_SP),y + and #$0F + cmp SPR_MASKCOLORL + bne :mainNoMask2 + lda (SPR_DP),y + and #$0F + sta SPR_PIXEL + lda (SPR_SP),y + and #$F0 + ora SPR_PIXEL + bne :mainData +:mainNoMask2 lda (SPR_SP),y +:mainData sta (SPR_DP),y +:mainNoData iny + cpy SPR_WIDTH + bcc :mainLoop + lda SPR_SP + clc + adc SPR_WIDTH + sta SPR_SP + bcc :noCarry2 + inc SPR_SP+1 :noCarry2 - inc SPR_CURLINE - inc SPR_Y - jmp :lineLoop + inc SPR_CURLINE + inc SPR_Y + jmp :lineLoop -flogoMaskColor equ #$11 -flogoHeight equ #$16 -flogoWidth equ #$21 +flogoMaskColor equ #$11 +flogoHeight equ #$16 +flogoWidth equ #$21 ** Remember: Data is Aux cols, then main cols, next line, repeat flogoData - hex FF,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,FF,11,11,11,11,11,11,11 - hex 11,FF,0F,0F,0F,0F,0F,0F,0F,0F,0F,FF,0F,0F,0F,0F,0F,0F,0F,0F,0F - hex 0F,0F,0F,0F,11,11,11,11,11,11,11,11,11,0F,0F,0F,0F,0F,0F,0F,0F - hex 0F,0F,11 - hex FF,77,77,77,77,77,77,77,00,77,77,77,77,FF,F1,F1,F1,F1,F1,F1,F1 - hex F1,FF,77,77,00,77,77,77,77,77,77,FF,00,EE,EE,EE,EE,00,EE,EE,EE - hex EE,EE,EE,00,F1,F1,F1,F1,F1,F1,F1,F1,F1,00,EE,EE,EE,EE,00,EE,EE - hex EE,00,11 - hex FF,77,77,F7,F7,F7,77,77,00,F7,F7,77,77,70,70,70,70,70,70,70,70 - hex 70,70,77,77,00,77,77,77,77,F7,F7,FF,00,EE,EE,FE,FE,00,EE,EE,FE - hex FE,EE,EE,00,E0,E0,E0,E0,00,E0,E0,E0,E0,00,EE,EE,EE,EE,00,EE,FE - hex FE,00,F1 - hex FF,77,77,70,70,70,77,77,70,70,70,77,77,77,77,77,77,77,77,77,77 - hex 77,77,77,77,00,77,77,77,77,70,70,00,00,EE,EE,E0,E0,00,EE,00,E0 - hex E0,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,E0 - hex E0,E0,FF - hex FF,77,77,77,77,77,77,77,77,77,77,77,77,77,77,0F,77,77,77,77,0F - hex 77,77,77,77,00,77,77,77,77,77,77,00,00,EE,EE,EE,EE,00,EE,00,EE - hex EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE - hex EE,EE,FF - hex FF,66,66,F6,F6,F6,66,66,66,66,F6,66,66,66,66,00,66,66,66,66,00 - hex 66,66,66,66,00,66,66,66,66,F6,F6,00,00,CC,CC,FC,FC,00,CC,00,CC - hex CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC - hex FC,FC,FF - hex FF,66,66,00,F0,F0,66,66,66,66,60,66,66,66,66,66,66,66,66,66,66 - hex 66,66,66,66,00,66,66,66,66,60,60,00,00,CC,CC,F0,F0,00,CC,00,CC - hex CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC - hex C0,C0,FF - hex FF,66,66,00,11,FF,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66 - hex 66,66,66,66,00,66,66,66,66,66,66,00,00,CC,CC,FF,11,00,CC,00,CC - hex CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC - hex CC,CC,FF - hex FF,0F,0F,00,11,FF,0F,0F,0F,0F,0F,0F,0F,66,66,0F,0F,0F,66,66,0F - hex 0F,0F,0F,0F,00,0F,0F,0F,0F,0F,0F,00,00,0F,0F,FF,11,00,0F,00,0F - hex 0F,0F,0F,00,CC,CC,0F,0F,00,CC,CC,0F,0F,00,0F,0F,0F,0F,00,0F,0F - hex 0F,0F,FF - hex 1F,1F,1F,1F,11,1F,1F,1F,1F,1F,1F,1F,FF,F6,F6,00,1F,FF,F6,F6,00 - hex 1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,11,1F,1F,1F,1F - hex 1F,1F,1F,00,FC,FC,FF,1F,00,FC,FC,FF,1F,1F,1F,1F,1F,1F,1F,1F,1F - hex 1F,1F,1F - hex 11,11,11,11,11,11,11,11,11,11,11,11,FF,F0,F0,F0,11,FF,F0,F0,F0 - hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 - hex 11,11,11,F0,F0,F0,FF,11,F0,F0,F0,FF,11,11,11,11,11,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 - hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 - hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,0F,0F,0F,0F,0F,0F,0F,0F,FF,F1,F1,F1,F1 - hex F1,11,0F,0F,0F,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,0F - hex 0F,0F,0F,0F,0F,0F,0F,F1,F1,F1,F1,F1,11,FF,0F,0F,0F,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,77,77,70,70,70,70,70 - hex FF,F1,00,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE - hex EE,EE,EE,EE,EE,EE,00,E0,E0,E0,E0,00,F1,FF,EE,EE,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,F7,F7,77,77,77,77,77 - hex 70,70,70,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE - hex EE,FE,EE,EE,FE,FE,00,EE,EE,EE,EE,00,E0,E0,EE,EE,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,70,70,77,77,07,77,77 - hex 77,77,77,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE - hex EE,E0,EE,EE,E0,E0,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,77,77,77,77,00,F7,F7 - hex 77,77,F7,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE - hex EE,EE,EE,0F,EE,EE,00,EE,EE,FE,FE,00,EE,EE,EE,EE,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,66,66,66,66,00,66,66,66,66,00,F0,F0 - hex 66,66,00,66,66,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,CC - hex CC,FC,CC,CC,CC,CC,00,CC,CC,F0,F0,00,CC,CC,CC,CC,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,66,66,66,66,00,66,66,66,66,00,11,FF - hex 66,66,60,66,66,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,CC - hex CC,C0,CC,CC,CC,CC,00,CC,CC,FF,11,00,CC,CC,CC,CC,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,66,66,66,66,00,66,66,66,66,00,11,FF - hex 66,66,66,66,66,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,CC - hex CC,CC,CC,CC,CC,CC,00,CC,CC,FF,11,00,CC,CC,CC,CC,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,00,0F,0F,0F,0F,00,0F,0F,0F,0F,00,11,FF - hex 0F,0F,0F,0F,0F,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,0F - hex 0F,0F,0F,0F,0F,0F,00,0F,0F,FF,11,00,0F,0F,0F,0F,00,11,11,11,11 - hex 11,11,11 - hex 11,11,11,11,11,11,11,11,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,11,1F - hex 1F,1F,1F,1F,1F,1F,11,11,11,11,11,11,11,11,11,11,11,11,11,1F,1F - hex 1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,11,1F,1F,1F,1F,1F,1F,11,11,11,11 - hex 11,11,11 + hex FF,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,0F,FF,11,11,11,11,11,11,11 + hex 11,FF,0F,0F,0F,0F,0F,0F,0F,0F,0F,FF,0F,0F,0F,0F,0F,0F,0F,0F,0F + hex 0F,0F,0F,0F,11,11,11,11,11,11,11,11,11,0F,0F,0F,0F,0F,0F,0F,0F + hex 0F,0F,11 + hex FF,77,77,77,77,77,77,77,00,77,77,77,77,FF,F1,F1,F1,F1,F1,F1,F1 + hex F1,FF,77,77,00,77,77,77,77,77,77,FF,00,EE,EE,EE,EE,00,EE,EE,EE + hex EE,EE,EE,00,F1,F1,F1,F1,F1,F1,F1,F1,F1,00,EE,EE,EE,EE,00,EE,EE + hex EE,00,11 + hex FF,77,77,F7,F7,F7,77,77,00,F7,F7,77,77,70,70,70,70,70,70,70,70 + hex 70,70,77,77,00,77,77,77,77,F7,F7,FF,00,EE,EE,FE,FE,00,EE,EE,FE + hex FE,EE,EE,00,E0,E0,E0,E0,00,E0,E0,E0,E0,00,EE,EE,EE,EE,00,EE,FE + hex FE,00,F1 + hex FF,77,77,70,70,70,77,77,70,70,70,77,77,77,77,77,77,77,77,77,77 + hex 77,77,77,77,00,77,77,77,77,70,70,00,00,EE,EE,E0,E0,00,EE,00,E0 + hex E0,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,E0 + hex E0,E0,FF + hex FF,77,77,77,77,77,77,77,77,77,77,77,77,77,77,0F,77,77,77,77,0F + hex 77,77,77,77,00,77,77,77,77,77,77,00,00,EE,EE,EE,EE,00,EE,00,EE + hex EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,EE,EE + hex EE,EE,FF + hex FF,66,66,F6,F6,F6,66,66,66,66,F6,66,66,66,66,00,66,66,66,66,00 + hex 66,66,66,66,00,66,66,66,66,F6,F6,00,00,CC,CC,FC,FC,00,CC,00,CC + hex CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC + hex FC,FC,FF + hex FF,66,66,00,F0,F0,66,66,66,66,60,66,66,66,66,66,66,66,66,66,66 + hex 66,66,66,66,00,66,66,66,66,60,60,00,00,CC,CC,F0,F0,00,CC,00,CC + hex CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC + hex C0,C0,FF + hex FF,66,66,00,11,FF,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66 + hex 66,66,66,66,00,66,66,66,66,66,66,00,00,CC,CC,FF,11,00,CC,00,CC + hex CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC,CC,CC,00,CC,CC + hex CC,CC,FF + hex FF,0F,0F,00,11,FF,0F,0F,0F,0F,0F,0F,0F,66,66,0F,0F,0F,66,66,0F + hex 0F,0F,0F,0F,00,0F,0F,0F,0F,0F,0F,00,00,0F,0F,FF,11,00,0F,00,0F + hex 0F,0F,0F,00,CC,CC,0F,0F,00,CC,CC,0F,0F,00,0F,0F,0F,0F,00,0F,0F + hex 0F,0F,FF + hex 1F,1F,1F,1F,11,1F,1F,1F,1F,1F,1F,1F,FF,F6,F6,00,1F,FF,F6,F6,00 + hex 1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,11,1F,1F,1F,1F + hex 1F,1F,1F,00,FC,FC,FF,1F,00,FC,FC,FF,1F,1F,1F,1F,1F,1F,1F,1F,1F + hex 1F,1F,1F + hex 11,11,11,11,11,11,11,11,11,11,11,11,FF,F0,F0,F0,11,FF,F0,F0,F0 + hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 + hex 11,11,11,F0,F0,F0,FF,11,F0,F0,F0,FF,11,11,11,11,11,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 + hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 + hex 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,0F,0F,0F,0F,0F,0F,0F,0F,FF,F1,F1,F1,F1 + hex F1,11,0F,0F,0F,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,0F + hex 0F,0F,0F,0F,0F,0F,0F,F1,F1,F1,F1,F1,11,FF,0F,0F,0F,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,77,77,70,70,70,70,70 + hex FF,F1,00,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE + hex EE,EE,EE,EE,EE,EE,00,E0,E0,E0,E0,00,F1,FF,EE,EE,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,F7,F7,77,77,77,77,77 + hex 70,70,70,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE + hex EE,FE,EE,EE,FE,FE,00,EE,EE,EE,EE,00,E0,E0,EE,EE,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,70,70,77,77,07,77,77 + hex 77,77,77,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE + hex EE,E0,EE,EE,E0,E0,00,EE,EE,EE,EE,00,EE,EE,EE,EE,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,77,77,77,77,00,77,77,77,77,00,F7,F7 + hex 77,77,F7,77,77,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,EE + hex EE,EE,EE,0F,EE,EE,00,EE,EE,FE,FE,00,EE,EE,EE,EE,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,66,66,66,66,00,66,66,66,66,00,F0,F0 + hex 66,66,00,66,66,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,CC + hex CC,FC,CC,CC,CC,CC,00,CC,CC,F0,F0,00,CC,CC,CC,CC,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,66,66,66,66,00,66,66,66,66,00,11,FF + hex 66,66,60,66,66,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,CC + hex CC,C0,CC,CC,CC,CC,00,CC,CC,FF,11,00,CC,CC,CC,CC,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,66,66,66,66,00,66,66,66,66,00,11,FF + hex 66,66,66,66,66,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,CC + hex CC,CC,CC,CC,CC,CC,00,CC,CC,FF,11,00,CC,CC,CC,CC,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,00,0F,0F,0F,0F,00,0F,0F,0F,0F,00,11,FF + hex 0F,0F,0F,0F,0F,FF,11,11,11,11,11,11,11,11,11,11,11,11,11,FF,0F + hex 0F,0F,0F,0F,0F,0F,00,0F,0F,FF,11,00,0F,0F,0F,0F,00,11,11,11,11 + hex 11,11,11 + hex 11,11,11,11,11,11,11,11,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,11,1F + hex 1F,1F,1F,1F,1F,1F,11,11,11,11,11,11,11,11,11,11,11,11,11,1F,1F + hex 1F,1F,1F,1F,1F,1F,1F,1F,1F,1F,11,1F,1F,1F,1F,1F,1F,11,11,11,11 + hex 11,11,11 -tapMaskColor equ #$11 -tapHeight equ #$06 -tapWidth equ #$18 +tapMaskColor equ #$11 +tapHeight equ #$06 +tapWidth equ #$18 ** Remember: Data is Aux cols, then main cols, next line, repeat tapData - hex 11,F1,F1,11,11,11,11,11,11,11,F1,11,11,11,11,11,AF,FF,FF,11,11,11,11,11 - hex 11,F1,11,11,11,11,11,11,11,F1,F1,11,11,11,11,FF,0F,5F,11,11,11,11,11,11 - hex F1,FF,0F,FF,F1,F1,F1,F1,11,F1,00,AF,F1,F1,11,F1,00,FF,FF,F1,F1,F1,F1,F1 - hex F1,00,5F,F1,F1,F1,F1,F1,F1,FF,0F,FF,F1,11,11,FF,0F,00,F1,F1,F1,F1,F1,F1 - hex FF,F0,FF,AF,F0,FF,AF,0A,11,FA,00,FF,FA,0F,11,FF,00,FF,FF,AF,F0,FF,AF,00 - hex F5,00,FF,F5,00,00,F5,FF,FF,F0,FF,5F,F0,FF,11,F5,FF,00,FF,F5,00,00,F5,FF - hex 11,FF,0F,00,0F,FF,0F,F0,11,11,00,FF,0F,F0,11,FF,00,FF,0F,00,0F,FF,0F,F0 - hex 11,50,FF,0F,00,00,0F,FF,11,FF,0F,F0,0F,FF,11,0F,0F,00,FF,0F,00,00,0F,FF - hex 11,1F,1F,1F,1F,FF,0F,1F,11,11,1F,1F,1F,1F,11,1F,1F,1F,1F,1F,1F,FF,0F,1F - hex 11,1F,1F,1F,1F,00,FF,11,11,1F,1F,1F,1F,11,11,1F,1F,1F,1F,1F,1F,00,FF,11 - hex 11,11,11,11,11,1F,1F,11,11,11,11,11,11,11,11,11,11,11,11,11,11,1F,1F,11 - hex 11,11,11,11,11,1F,1F,11,11,11,11,11,11,11,11,11,11,11,11,11,11,1F,1F,11 + hex 11,F1,F1,11,11,11,11,11,11,11,F1,11,11,11,11,11,AF,FF,FF,11,11,11,11,11 + hex 11,F1,11,11,11,11,11,11,11,F1,F1,11,11,11,11,FF,0F,5F,11,11,11,11,11,11 + hex F1,FF,0F,FF,F1,F1,F1,F1,11,F1,00,AF,F1,F1,11,F1,00,FF,FF,F1,F1,F1,F1,F1 + hex F1,00,5F,F1,F1,F1,F1,F1,F1,FF,0F,FF,F1,11,11,FF,0F,00,F1,F1,F1,F1,F1,F1 + hex FF,F0,FF,AF,F0,FF,AF,0A,11,FA,00,FF,FA,0F,11,FF,00,FF,FF,AF,F0,FF,AF,00 + hex F5,00,FF,F5,00,00,F5,FF,FF,F0,FF,5F,F0,FF,11,F5,FF,00,FF,F5,00,00,F5,FF + hex 11,FF,0F,00,0F,FF,0F,F0,11,11,00,FF,0F,F0,11,FF,00,FF,0F,00,0F,FF,0F,F0 + hex 11,50,FF,0F,00,00,0F,FF,11,FF,0F,F0,0F,FF,11,0F,0F,00,FF,0F,00,00,0F,FF + hex 11,1F,1F,1F,1F,FF,0F,1F,11,11,1F,1F,1F,1F,11,1F,1F,1F,1F,1F,1F,FF,0F,1F + hex 11,1F,1F,1F,1F,00,FF,11,11,1F,1F,1F,1F,11,11,1F,1F,1F,1F,1F,1F,00,FF,11 + hex 11,11,11,11,11,1F,1F,11,11,11,11,11,11,11,11,11,11,11,11,11,11,1F,1F,11 + hex 11,11,11,11,11,1F,1F,11,11,11,11,11,11,11,11,11,11,11,11,11,11,1F,1F,11 -splosionMaskColor equ #$22 -splosionHeight equ #$06 -splosionWidth equ #$06 +splosionMaskColor equ #$22 +splosionHeight equ #$06 +splosionWidth equ #$06 ** Remember: Data is Aux cols, then main cols, next line, repeat splosionData - hex 28,82,22,22,22,82,12,22,22,22,12,21 - hex 22,CC,E8,C2,EC,28,21,D9,92,D1,99,22 - hex 22,28,EF,FE,8E,22,22,1D,FD,DF,21,22 - hex 22,C8,EF,8E,EE,22,22,DD,1D,DF,91,22 - hex 22,8C,28,22,2C,88,11,29,22,21,19,22 - hex 28,22,22,22,22,22,22,22,22,22,22,21 + hex 28,82,22,22,22,82,12,22,22,22,12,21 + hex 22,CC,E8,C2,EC,28,21,D9,92,D1,99,22 + hex 22,28,EF,FE,8E,22,22,1D,FD,DF,21,22 + hex 22,C8,EF,8E,EE,22,22,DD,1D,DF,91,22 + hex 22,8C,28,22,2C,88,11,29,22,21,19,22 + hex 28,22,22,22,22,22,22,22,22,22,22,21 -plaqueMaskColor equ #$22 -plaqueHeight equ #$06 -plaqueWidth equ #$13 +plaqueMaskColor equ #$22 +plaqueHeight equ #$06 +plaqueWidth equ #$13 ** Remember: Data is Aux cols, then main cols, next line, repeat plaqueData - hex E2,CE,CE,CE,CE,CE,CE,CE,CE,CE,DE,DE,DE,DE,DE,DE,DE,DE,E2,DD,9D,9D,9D,9D - hex 9D,9D,9D,BD,9D,9D,9D,9D,9D,9D,9D,9D,DD,22 - hex EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,99,DD,DD,DD,DD - hex DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,FB,62 - hex EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,B9,DD,DD,DD,DD - hex DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,FB,66 - hex EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,B9,DD,DD,DD,DD - hex DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,BF,66 - hex 2E,ED,ED,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,ED,ED,3E,DD,DF,DF,DB,DF - hex DF,DF,DF,DF,DF,DF,DF,DF,DB,DF,DF,DF,DD,26 - hex 22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,26,26,26,26 - hex 26,26,26,26,26,26,26,26,26,26,26,26,26,22 + hex E2,CE,CE,CE,CE,CE,CE,CE,CE,CE,DE,DE,DE,DE,DE,DE,DE,DE,E2,DD,9D,9D,9D,9D + hex 9D,9D,9D,BD,9D,9D,9D,9D,9D,9D,9D,9D,DD,22 + hex EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,99,DD,DD,DD,DD + hex DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,FB,62 + hex EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,B9,DD,DD,DD,DD + hex DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,FB,66 + hex EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,EE,B9,DD,DD,DD,DD + hex DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,DD,BF,66 + hex 2E,ED,ED,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,EF,ED,ED,3E,DD,DF,DF,DB,DF + hex DF,DF,DF,DF,DF,DF,DF,DF,DB,DF,DF,DF,DD,26 + hex 22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,26,26,26,26 + hex 26,26,26,26,26,26,26,26,26,26,26,26,26,22 -youMaskColor equ #$11 -youHeight equ #$03 -youWidth equ #$06 +youMaskColor equ #$11 +youHeight equ #$03 +youWidth equ #$06 youData - hex 01,01,11,11,11,11,11,11,11,11,11,11 - hex 10,10,01,01,00,00,01,11,10,11,11,11 - hex 11,11,11,11,11,10,10,11,10,11,10,11 + hex 01,01,11,11,11,11,11,11,11,11,11,11 + hex 10,10,01,01,00,00,01,11,10,11,11,11 + hex 11,11,11,11,11,10,10,11,10,11,10,11 -hiMaskColor equ #$11 -hiHeight equ #$03 -hiWidth equ #$03 +hiMaskColor equ #$11 +hiHeight equ #$03 +hiWidth equ #$03 hiData - hex 01,01,01,11,11,11 - hex 00,00,01,10,11,11 - hex 10,10,10,11,11,11 + hex 01,01,01,11,11,11 + hex 00,00,01,10,11,11 + hex 10,10,10,11,11,11 -NumMaskColor equ #$11 -NumHeight equ #$03 -NumWidth equ #$02 -NumList da N0Data - da N1Data - da N2Data - da N3Data - da N4Data - da N5Data - da N6Data - da N7Data - da N8Data - da N9Data +NumMaskColor equ #$11 +NumHeight equ #$03 +NumWidth equ #$02 +NumList da N0Data + da N1Data + da N2Data + da N3Data + da N4Data + da N5Data + da N6Data + da N7Data + da N8Data + da N9Data N0Data - hex 01,01,10,11 - hex 00,00,11,11 - hex 10,10,01,11 + hex 01,01,10,11 + hex 00,00,11,11 + hex 10,10,01,11 N1Data - hex 01,11,00,11 - hex 11,11,00,11 - hex 01,01,00,11 + hex 01,11,00,11 + hex 11,11,00,11 + hex 01,01,00,11 N2Data - hex 01,01,10,11 - hex 11,10,01,11 - hex 00,01,01,11 + hex 01,01,10,11 + hex 11,10,01,11 + hex 00,01,01,11 N3Data - hex 10,01,10,11 - hex 11,01,10,11 - hex 01,10,01,11 + hex 10,01,10,11 + hex 11,01,10,11 + hex 01,10,01,11 N4Data - hex 00,01,11,11 - hex 00,00,01,11 - hex 11,00,11,11 + hex 00,01,11,11 + hex 00,00,01,11 + hex 11,00,11,11 N5Data - hex 00,10,10,11 - hex 10,01,10,11 - hex 10,10,01,11 + hex 00,10,10,11 + hex 10,01,10,11 + hex 10,10,01,11 N6Data - hex 01,11,10,11 - hex 00,01,10,11 - hex 10,10,01,11 + hex 01,11,10,11 + hex 00,01,10,11 + hex 10,10,01,11 N7Data - hex 10,00,10,11 - hex 11,10,01,11 - hex 11,11,00,11 + hex 10,00,10,11 + hex 11,10,01,11 + hex 11,11,00,11 N8Data - hex 01,01,10,11 - hex 01,01,10,11 - hex 10,10,01,11 + hex 01,01,10,11 + hex 01,01,10,11 + hex 10,10,01,11 N9Data - hex 01,01,10,11 - hex 10,00,01,11 - hex 11,10,01,11 + hex 01,01,10,11 + hex 10,00,01,11 + hex 11,10,01,11 -QRCodeMaskColor equ #$88 -QRCodeHeight equ #$0e -QRCodeWidth equ #$0e +QRCodeMaskColor equ #$88 +QRCodeHeight equ #$0e +QRCodeWidth equ #$0e QRCodeData - hex FF,0F,0F,0F,FF,FF,FF,0F,FF,FF,0F,0F,0F,FF,0F,0F,0F,0F,FF,FF,0F,FF,FF,0F - hex 0F,0F,0F,FF - hex FF,FF,0F,FF,FF,FF,FF,F0,F0,FF,FF,0F,FF,FF,00,0F,0F,00,F0,F0,FF,F0,F0,00 - hex 0F,0F,00,FF - hex FF,FF,00,FF,FF,00,0F,F0,FF,FF,FF,00,FF,FF,00,00,00,00,F0,F0,F0,F0,0F,00 - hex 00,00,00,FF - hex FF,0F,0F,0F,FF,F0,FF,F0,F0,FF,0F,0F,0F,FF,00,0F,0F,00,00,0F,00,0F,00,00 - hex 0F,0F,00,FF - hex FF,0F,0F,FF,0F,00,0F,0F,0F,0F,0F,0F,0F,FF,0F,0F,0F,0F,0F,F0,0F,00,FF,FF - hex FF,FF,FF,FF - hex FF,00,0F,FF,00,FF,F0,00,0F,0F,00,0F,00,FF,F0,F0,FF,0F,F0,00,0F,0F,00,0F - hex FF,FF,0F,FF - hex FF,00,F0,00,0F,0F,FF,0F,FF,00,FF,FF,0F,FF,F0,0F,FF,0F,00,0F,F0,00,F0,0F - hex 0F,0F,00,FF - hex FF,F0,00,F0,00,FF,F0,F0,0F,0F,F0,00,00,FF,00,0F,0F,0F,FF,0F,0F,0F,F0,0F - hex FF,FF,0F,FF - hex FF,FF,00,0F,F0,00,FF,0F,0F,00,00,F0,FF,FF,00,00,00,0F,FF,00,F0,F0,0F,00 - hex 0F,0F,F0,FF - hex FF,0F,0F,0F,FF,FF,F0,00,FF,FF,FF,00,0F,FF,0F,0F,0F,0F,00,FF,FF,0F,00,0F - hex 00,00,0F,FF - hex FF,FF,0F,FF,FF,00,FF,0F,0F,0F,0F,00,00,FF,00,0F,0F,00,0F,FF,00,00,00,0F - hex 00,0F,F0,FF - hex FF,FF,00,FF,FF,FF,F0,0F,00,F0,0F,FF,F0,FF,00,00,00,00,00,FF,0F,0F,F0,F0 - hex F0,00,00,FF - hex FF,0F,0F,0F,FF,00,0F,0F,F0,F0,00,00,0F,FF,00,0F,0F,00,00,F0,0F,0F,F0,FF - hex 00,0F,00,FF - hex FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF - hex FF,FF,FF,FF + hex FF,0F,0F,0F,FF,FF,FF,0F,FF,FF,0F,0F,0F,FF,0F,0F,0F,0F,FF,FF,0F,FF,FF,0F,0F,0F,0F,FF + hex FF,FF,0F,FF,FF,FF,FF,F0,F0,FF,FF,0F,FF,FF,00,0F,0F,00,F0,F0,FF,F0,F0,00,0F,0F,00,FF + hex FF,FF,00,FF,FF,00,0F,F0,FF,FF,FF,00,FF,FF,00,00,00,00,F0,F0,F0,F0,0F,00,00,00,00,FF + hex FF,0F,0F,0F,FF,F0,FF,F0,F0,FF,0F,0F,0F,FF,00,0F,0F,00,00,0F,00,0F,00,00,0F,0F,00,FF + hex FF,0F,0F,FF,0F,00,0F,0F,0F,0F,0F,0F,0F,FF,0F,0F,0F,0F,0F,F0,0F,00,FF,FF,FF,FF,FF,FF + hex FF,00,0F,FF,00,FF,F0,00,0F,0F,00,0F,00,FF,F0,F0,FF,0F,F0,00,0F,0F,00,0F,FF,FF,0F,FF + hex FF,00,F0,00,0F,0F,FF,0F,FF,00,FF,FF,0F,FF,F0,0F,FF,0F,00,0F,F0,00,F0,0F,0F,0F,00,FF + hex FF,F0,00,F0,00,FF,F0,F0,0F,0F,F0,00,00,FF,00,0F,0F,0F,FF,0F,0F,0F,F0,0F,FF,FF,0F,FF + hex FF,FF,00,0F,F0,00,FF,0F,0F,00,00,F0,FF,FF,00,00,00,0F,FF,00,F0,F0,0F,00,0F,0F,F0,FF + hex FF,0F,0F,0F,FF,FF,F0,00,FF,FF,FF,00,0F,FF,0F,0F,0F,0F,00,FF,FF,0F,00,0F,00,00,0F,FF + hex FF,FF,0F,FF,FF,00,FF,0F,0F,0F,0F,00,00,FF,00,0F,0F,00,0F,FF,00,00,00,0F,00,0F,F0,FF + hex FF,FF,00,FF,FF,FF,F0,0F,00,F0,0F,FF,F0,FF,00,00,00,00,00,FF,0F,0F,F0,F0,F0,00,00,FF + hex FF,0F,0F,0F,FF,00,0F,0F,F0,F0,00,00,0F,FF,00,0F,0F,00,00,F0,0F,0F,F0,FF,00,0F,00,FF + hex FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF diff --git a/src/numbers.s b/src/numbers.s index dff9153..c01cb94 100644 --- a/src/numbers.s +++ b/src/numbers.s @@ -2,192 +2,192 @@ * Well... optimized number drawing because, why not **** -BB equ #$00 -BW equ #$F0 -WB equ #$0F -WW equ #$FF +BB equ #$00 +BW equ #$F0 +WB equ #$0F +WW equ #$FF -DrawNum_Table da DrawNum_0 - da DrawNum_1 - da DrawNum_2 - da DrawNum_3 - da DrawNum_4 - da DrawNum_5 - da DrawNum_6 - da DrawNum_7 - da DrawNum_8 - da DrawNum_9 +DrawNum_Table da DrawNum_0 + da DrawNum_1 + da DrawNum_2 + da DrawNum_3 + da DrawNum_4 + da DrawNum_5 + da DrawNum_6 + da DrawNum_7 + da DrawNum_8 + da DrawNum_9 * y = x, a=val (0-9) DrawNum - asl - tax - lda DrawNum_Table,x - sta :jsrPtr+1 - lda DrawNum_Table+1,x - sta :jsrPtr+2 - tya - tax -:jsrPtr jsr DrawNum_0 - rts + asl + tax + lda DrawNum_Table,x + sta :jsrPtr+1 + lda DrawNum_Table+1,x + sta :jsrPtr+2 + tya + tax +:jsrPtr jsr DrawNum_0 + rts * x = x offset (even cols) 0-40 -DrawNum_0 sta TXTPAGE2 - lda #BB - sta Lo01,x - sta Lo02,x - sta Lo01+1,x - sta Lo02+1,X - sta TXTPAGE1 - lda #BW - sta Lo01,x - lda #WB - sta Lo02,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_0 sta TXTPAGE2 + lda #BB + sta Lo01,x + sta Lo02,x + sta Lo01+1,x + sta Lo02+1,X + sta TXTPAGE1 + lda #BW + sta Lo01,x + lda #WB + sta Lo02,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_1 sta TXTPAGE2 - lda #BW - sta Lo01,x - lda #WB - sta Lo02,x - sta Lo02+1,x - lda #WW - sta Lo01+1,x - sta TXTPAGE1 - sta Lo01+1,x - sta Lo02+1,x - lda #BB - sta Lo01,x - sta Lo02,x - rts +DrawNum_1 sta TXTPAGE2 + lda #BW + sta Lo01,x + lda #WB + sta Lo02,x + sta Lo02+1,x + lda #WW + sta Lo01+1,x + sta TXTPAGE1 + sta Lo01+1,x + sta Lo02+1,x + lda #BB + sta Lo01,x + sta Lo02,x + rts -DrawNum_2 sta TXTPAGE2 - lda #BW - sta Lo01,x - lda #WB - sta Lo02+1,x - lda #BB - sta Lo02,x - sta Lo01+1,x - sta TXTPAGE1 - sta Lo01,x - sta Lo02,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_2 sta TXTPAGE2 + lda #BW + sta Lo01,x + lda #WB + sta Lo02+1,x + lda #BB + sta Lo02,x + sta Lo01+1,x + sta TXTPAGE1 + sta Lo01,x + sta Lo02,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_3 sta TXTPAGE2 - lda #BW - sta Lo01,x - lda #WB - sta Lo02,x - lda #BB - sta Lo01+1,x - sta Lo02+1,x - sta TXTPAGE1 - sta Lo01,x - lda #WB - sta Lo02,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_3 sta TXTPAGE2 + lda #BW + sta Lo01,x + lda #WB + sta Lo02,x + lda #BB + sta Lo01+1,x + sta Lo02+1,x + sta TXTPAGE1 + sta Lo01,x + lda #WB + sta Lo02,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_4 sta TXTPAGE2 - lda #BB - sta Lo01,x - sta Lo01+1,x - sta Lo02+1,x - lda #BW - sta Lo02,x - sta TXTPAGE1 - sta Lo02,x - lda #WW - sta Lo01,x - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_4 sta TXTPAGE2 + lda #BB + sta Lo01,x + sta Lo01+1,x + sta Lo02+1,x + lda #BW + sta Lo02,x + sta TXTPAGE1 + sta Lo02,x + lda #WW + sta Lo01,x + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_5 sta TXTPAGE2 - lda #BW - sta Lo01+1,x - lda #WB - sta Lo02,x - lda #BB - sta Lo01,x - sta Lo02+1,x - sta TXTPAGE1 - sta Lo01,x - sta Lo02,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_5 sta TXTPAGE2 + lda #BW + sta Lo01+1,x + lda #WB + sta Lo02,x + lda #BB + sta Lo01,x + sta Lo02+1,x + sta TXTPAGE1 + sta Lo01,x + sta Lo02,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_6 sta TXTPAGE2 - lda #BB - sta Lo01,x - sta Lo02,x - sta Lo02+1,x - lda #WB - sta Lo01+1,x - sta TXTPAGE1 - sta Lo01,x - sta Lo02,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_6 sta TXTPAGE2 + lda #BB + sta Lo01,x + sta Lo02,x + sta Lo02+1,x + lda #WB + sta Lo01+1,x + sta TXTPAGE1 + sta Lo01,x + sta Lo02,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_7 sta TXTPAGE2 - lda #BW - sta Lo01,x - lda #WW - sta Lo02,x - sta Lo02+1,x - lda #BB - sta Lo01+1,x - sta TXTPAGE1 - sta Lo02,x - lda #BW - sta Lo01,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_7 sta TXTPAGE2 + lda #BW + sta Lo01,x + lda #WW + sta Lo02,x + sta Lo02+1,x + lda #BB + sta Lo01+1,x + sta TXTPAGE1 + sta Lo02,x + lda #BW + sta Lo01,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_8 sta TXTPAGE2 - lda #WB - sta Lo01,x - lda #BB - sta Lo02,X - sta Lo01+1,x - sta Lo02+1,x - sta TXTPAGE1 - sta Lo02,x - lda #BW - sta Lo01,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_8 sta TXTPAGE2 + lda #WB + sta Lo01,x + lda #BB + sta Lo02,X + sta Lo01+1,x + sta Lo02+1,x + sta TXTPAGE1 + sta Lo02,x + lda #BW + sta Lo01,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts -DrawNum_9 sta TXTPAGE2 - lda #BB - sta Lo01,x - sta Lo01+1,x - sta Lo02+1,x - lda #BW - sta Lo02,x - sta TXTPAGE1 - sta Lo01,x - sta Lo02,x - lda #WW - sta Lo01+1,x - sta Lo02+1,x - rts +DrawNum_9 sta TXTPAGE2 + lda #BB + sta Lo01,x + sta Lo01+1,x + sta Lo02+1,x + lda #BW + sta Lo02,x + sta TXTPAGE1 + sta Lo01,x + sta Lo02,x + lda #WW + sta Lo01+1,x + sta Lo02+1,x + rts diff --git a/src/pipes.s b/src/pipes.s index cde5f55..33cb34a 100644 --- a/src/pipes.s +++ b/src/pipes.s @@ -1,6 +1,6 @@ ************************************************** * Pipe Drawing Routines -* These are custom built to draw pipes that +* These are custom built to draw pipes that * move right-to-left only. There is no undraw. * It simply copies a blue pixel in the area to the * right of the column to restore the background. @@ -17,60 +17,60 @@ * hex bb,aa,77,77,66,77,66,66,22,66,22,22,aa,bb,bb ** "interleave" format - DO MONO -PipeBody_Main_E hex 55,ee,ee,cc,cc,44,00 -PipeBody_Main_O hex 00,ee,cc,cc,44,44,55,00 -PipeBody_Aux_E hex 00,77,66,66,22,22,aa,00 -PipeBody_Aux_O hex aa,77,77,66,66,22,00 - ELSE -PipeBody_Main_E hex 55,ee,ee,cc,cc,44,77 -PipeBody_Main_O hex 77,ee,cc,cc,44,44,55,77 -PipeBody_Aux_E hex bb,77,66,66,22,22,aa,bb -PipeBody_Aux_O hex aa,77,77,66,66,22,bb + DO MONO +PipeBody_Main_E hex 55,ee,ee,cc,cc,44,00 +PipeBody_Main_O hex 00,ee,cc,cc,44,44,55,00 +PipeBody_Aux_E hex 00,77,66,66,22,22,aa,00 +PipeBody_Aux_O hex aa,77,77,66,66,22,00 + ELSE +PipeBody_Main_E hex 55,ee,ee,cc,cc,44,77 +PipeBody_Main_O hex 77,ee,cc,cc,44,44,55,77 +PipeBody_Aux_E hex bb,77,66,66,22,22,aa,bb +PipeBody_Aux_O hex aa,77,77,66,66,22,bb - FIN + FIN -PipeInterval equ #60 ; game ticks to spawn new pipe -PipeSpawn db #45 ; our counter, starting point for spawning -PipeSpawnSema db 0 ; points to next spot (even if currently unavailable) -MaxPipes equ 2 -PipeSet ds MaxPipes*3 ; array of pipe{x,y1,y2} +PipeInterval equ #60 ; game ticks to spawn new pipe +PipeSpawn db #45 ; our counter, starting point for spawning +PipeSpawnSema db 0 ; points to next spot (even if currently unavailable) +MaxPipes equ 2 +PipeSet ds MaxPipes*3 ; array of pipe{x,y1,y2} -TopPipes ds MaxPipes*2 ; Space for pipe X,Y -BotPipes ds MaxPipes*2 ; " +TopPipes ds MaxPipes*2 ; Space for pipe X,Y +BotPipes ds MaxPipes*2 ; " -PIPE_SP equ $F0 +PIPE_SP equ $F0 -PIPE_DP equ $00 -PIPE_DP0 equ $00 -PIPE_DP1 equ $02 -PIPE_DP2 equ $04 -PIPE_DP3 equ $06 -PIPE_DP4 equ $08 +PIPE_DP equ $00 +PIPE_DP0 equ $00 +PIPE_DP1 equ $02 +PIPE_DP2 equ $04 +PIPE_DP3 equ $06 +PIPE_DP4 equ $08 -PIPE_RCLIP equ #40 -PIPE_WIDTH equ #15 -PIPE_UNDERVAL db 0 +PIPE_RCLIP equ #40 +PIPE_WIDTH equ #15 +PIPE_UNDERVAL db 0 -PIPE_X db 0 ; the 0-96? X value (screen = 16-95) -PIPE_TOP_Y db 0 ; MEMORY DLR Y index, 0-24 -PIPE_BOT_Y db 0 ; MEMORY DLR Y index, 0-24 +PIPE_X db 0 ; the 0-96? X value (screen = 16-95) +PIPE_TOP_Y db 0 ; MEMORY DLR Y index, 0-24 +PIPE_BOT_Y db 0 ; MEMORY DLR Y index, 0-24 -PIPE_X_IDX db 0 ; MEMORY DLR X index, 0-39 -PIPE_Y_IDX db 0 ; Y*2 for lookups in Lo-Res line table -PIPE_BODY_TOP db 0 ; Y val -PIPE_BODY_BOT db 0 ; Y val +PIPE_X_IDX db 0 ; MEMORY DLR X index, 0-39 +PIPE_Y_IDX db 0 ; Y*2 for lookups in Lo-Res line table +PIPE_BODY_TOP db 0 ; Y val +PIPE_BODY_BOT db 0 ; Y val -PipeXScore equ 50 ; pipe at this value causes score increase +PipeXScore equ 50 ; pipe at this value causes score increase ** LEGACY ! DELETE AFTER REWRITE ! -PIPE_X_FULL db 0 -PIPE_Y db 0 -PIPE_T_B db 0 -PIPE_TOP equ 0 ; enum for top pipe type -PIPE_BOT equ 1 ; enum for bottom pipe type +PIPE_X_FULL db 0 +PIPE_Y db 0 +PIPE_T_B db 0 +PIPE_TOP equ 0 ; enum for top pipe type +PIPE_BOT equ 1 ; enum for bottom pipe type * pipe min = 15x6 pixels = 15x3 bytes * playfield = 80x48 pixels = 80x24 bytes @@ -79,281 +79,281 @@ PIPE_BOT equ 1 ; enum for bottom pipe type * we don't care about screen pixel X/Y though we could translate * the drawing routine will handle it, and we will do collision * in the bird drawing routine -UpdatePipes inc PipeSpawn - lda PipeSpawn - cmp #PipeInterval - bne :noSpawn - jsr SpawnPipe - lda #0 - sta PipeSpawn +UpdatePipes inc PipeSpawn + lda PipeSpawn + cmp #PipeInterval + bne :noSpawn + jsr SpawnPipe + lda #0 + sta PipeSpawn :noSpawn MovePipes - ldx #2 ;MaxPipes*2? -:loop lda TopPipes,x - beq :noPipe - dec TopPipes,x - cmp #PipeXScore+1 ; A should still be set - bne :noScore -:ScoreUp sed - lda ScoreLo - clc - adc #1 - sta ScoreLo - bcc :noFlip - lda ScoreHi - adc #0 - sta ScoreHi -:noFlip cld + ldx #2 ;MaxPipes*2? +:loop lda TopPipes,x + beq :noPipe + dec TopPipes,x + cmp #PipeXScore+1 ; A should still be set + bne :noScore +:ScoreUp sed + lda ScoreLo + clc + adc #1 + sta ScoreLo + bcc :noFlip + lda ScoreHi + adc #0 + sta ScoreHi +:noFlip cld :noScore -:noPipe dex - dex - bpl :loop - jmp UpdatePipesDone +:noPipe dex + dex + bpl :loop + jmp UpdatePipesDone -SpawnPipe lda PipeSpawnSema - asl ; convert to word index - tax - jsr GetRand ; Build Y Value - and #$0F ; @todo - this doesn't check bounds.. just for testing - lsr ; even smaller - sta TopPipes+1,x - clc - adc #13 - sta BotPipes+1,x - lda #95 ; Build X Value ;) - sta TopPipes,x - inc PipeSpawnSema - lda PipeSpawnSema - cmp #MaxPipes - bne :done - lda #0 ; flip our semaphore/counter to 0 - sta PipeSpawnSema -:done rts +SpawnPipe lda PipeSpawnSema + asl ; convert to word index + tax + jsr GetRand ; Build Y Value + and #$0F ; @todo - this doesn't check bounds.. just for testing + lsr ; even smaller + sta TopPipes+1,x + clc + adc #13 + sta BotPipes+1,x + lda #95 ; Build X Value ;) + sta TopPipes,x + inc PipeSpawnSema + lda PipeSpawnSema + cmp #MaxPipes + bne :done + lda #0 ; flip our semaphore/counter to 0 + sta PipeSpawnSema +:done rts * A= x coord X=top y Y=bot y DrawPipes - lda TopPipes ;Pipe X - beq :noPipes0 - ldx TopPipes+1 ;top Y - ldy BotPipes+1 ;bottom y - jsr DrawPipe + lda TopPipes ;Pipe X + beq :noPipes0 + ldx TopPipes+1 ;top Y + ldy BotPipes+1 ;bottom y + jsr DrawPipe :noPipes0 - lda TopPipes+2 ;Pipe X - beq :noPipes1 - ldx TopPipes+3 ;top Y - ldy BotPipes+3 ;bottom y - jsr DrawPipe + lda TopPipes+2 ;Pipe X + beq :noPipes1 + ldx TopPipes+3 ;top Y + ldy BotPipes+3 ;bottom y + jsr DrawPipe :noPipes1 - rts -*jmp DrawPipesDone ;Back to main + rts + * Used by all of the routines that draw the pipe caps SetPipeCapPtrs - ldy PIPE_TOP_Y - lda LoLineTableL,y - sta PIPE_DP0 - lda LoLineTableH,y - sta PIPE_DP0+1 ; cap top line - lda LoLineTableL+1,y - sta PIPE_DP1 - lda LoLineTableH+1,y - sta PIPE_DP1+1 ; cap bottom line + ldy PIPE_TOP_Y + lda LoLineTableL,y + sta PIPE_DP0 + lda LoLineTableH,y + sta PIPE_DP0+1 ; cap top line + lda LoLineTableL+1,y + sta PIPE_DP1 + lda LoLineTableH+1,y + sta PIPE_DP1+1 ; cap bottom line - ldy PIPE_BOT_Y - lda LoLineTableL,y - sta PIPE_DP2 - lda LoLineTableH,y - sta PIPE_DP2+1 ; cap top line - lda LoLineTableL+1,y - sta PIPE_DP3 - lda LoLineTableH+1,y - sta PIPE_DP3+1 ; cap bottom line - rts + ldy PIPE_BOT_Y + lda LoLineTableL,y + sta PIPE_DP2 + lda LoLineTableH,y + sta PIPE_DP2+1 ; cap top line + lda LoLineTableL+1,y + sta PIPE_DP3 + lda LoLineTableH+1,y + sta PIPE_DP3+1 ; cap bottom line + rts * A= x coord X=top y Y=bot y -DrawPipe sta PIPE_X - stx PIPE_TOP_Y - sty PIPE_BOT_Y - cmp #95-13 - bcc :notOver -:over sec ; clipped on right - sbc #16 - lsr - sta PIPE_X_IDX - bcc :evenR -:oddR jmp DrawPipeOddR -:evenR jmp DrawPipeEvenR +DrawPipe sta PIPE_X + stx PIPE_TOP_Y + sty PIPE_BOT_Y + cmp #95-13 + bcc :notOver +:over sec ; clipped on right + sbc #16 + lsr + sta PIPE_X_IDX + bcc :evenR +:oddR jmp DrawPipeOddR +:evenR jmp DrawPipeEvenR -:notOver cmp #16 - bcs :NOCLIP +:notOver cmp #16 + bcs :NOCLIP :under - ; clipped on left - ; X = 0-16 - sta PIPE_UNDERVAL ; we're going to flip it around - lda #16 ; and move backwards from 0. - sec - sbc PIPE_UNDERVAL - pha - lsr - sta PIPE_UNDERVAL - lda #0 - sec - sbc PIPE_UNDERVAL - tax - pla - lsr - bcc :evenL -:oddL dex ; downshift * 1 - txa - sta PIPE_X_IDX - jmp DrawPipeOddL -:evenL txa - sta PIPE_X_IDX - jmp DrawPipeEvenL + ; clipped on left + ; X = 0-16 + sta PIPE_UNDERVAL ; we're going to flip it around + lda #16 ; and move backwards from 0. + sec + sbc PIPE_UNDERVAL + pha + lsr + sta PIPE_UNDERVAL + lda #0 + sec + sbc PIPE_UNDERVAL + tax + pla + lsr + bcc :evenL +:oddL dex ; downshift * 1 + txa + sta PIPE_X_IDX + jmp DrawPipeOddL +:evenL txa + sta PIPE_X_IDX + jmp DrawPipeEvenL -:NOCLIP lda PIPE_X - sec - sbc #16 - lsr - sta PIPE_X_IDX - bcc :even -:odd jmp DrawPipeOdd -:even jmp DrawPipeEven +:NOCLIP lda PIPE_X + sec + sbc #16 + lsr + sta PIPE_X_IDX + bcc :even +:odd jmp DrawPipeOdd +:even jmp DrawPipeEven DrawPipeEven - jsr SetPipeCapPtrs + jsr SetPipeCapPtrs - sta TXTPAGE2 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ; optimized by hand, not perfect, but big help - ;col 0 - lda #$AA - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - iny ;col 2 - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A7 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 4 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 6 - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 8 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 10 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 12 - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 14 (final!) - lda #BGCOLORAUX ; BGCOLOR! Last column, no need to undraw whole pipe - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + sta TXTPAGE2 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ; optimized by hand, not perfect, but big help + ;col 0 + lda #$AA + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + iny ;col 2 + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A7 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 4 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 6 + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 8 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 10 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 12 + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 14 (final!) + lda #BGCOLORAUX ; BGCOLOR! Last column, no need to undraw whole pipe + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y - sta TXTPAGE1 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ;col 1 - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5E - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 3 - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 5 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 7 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 9 - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$54 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 11 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 13 - lda #$55 - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + sta TXTPAGE1 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ;col 1 + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5E + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 3 + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 5 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 7 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 9 + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$54 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 11 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 13 + lda #$55 + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y -* Handle body - lda #0 - sta PIPE_Y ; current line - lda PIPE_TOP_Y - sta PIPE_BODY_BOT - jsr DrawPipeBodyEven +* Handle body + lda #0 + sta PIPE_Y ; current line + lda PIPE_TOP_Y + sta PIPE_BODY_BOT + jsr DrawPipeBodyEven - ldy PIPE_BOT_Y - iny - iny - sty PIPE_Y ; current line - lda #22 - sta PIPE_BODY_BOT - jsr DrawPipeBodyEven + ldy PIPE_BOT_Y + iny + iny + sty PIPE_Y ; current line + lda #22 + sta PIPE_BODY_BOT + jsr DrawPipeBodyEven - rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! - ; !!! We are actually returning for parent DrawPipe + rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! + ; !!! We are actually returning for parent DrawPipe @@ -361,68 +361,68 @@ DrawPipeEven DrawPipeBodyEven -:loop ldy PIPE_Y - cpy PIPE_BODY_BOT - bcs :done +:loop ldy PIPE_Y + cpy PIPE_BODY_BOT + bcs :done - lda LoLineTableL,y - sta PIPE_DP - lda LoLineTableH,y - sta PIPE_DP+1 ; pointer to line on screen + lda LoLineTableL,y + sta PIPE_DP + lda LoLineTableH,y + sta PIPE_DP+1 ; pointer to line on screen - sta TXTPAGE1 + sta TXTPAGE1 *** Version 3 - FULL OPTIMIZATION - ldy PIPE_X_IDX - lda #$55 ; PipeBody_Main_E - sta (PIPE_DP),y - iny - lda #$EE - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$CC - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$44 - sta (PIPE_DP),y - iny - lda #BGCOLOR - sta (PIPE_DP),y + ldy PIPE_X_IDX + lda #$55 ; PipeBody_Main_E + sta (PIPE_DP),y + iny + lda #$EE + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$CC + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$44 + sta (PIPE_DP),y + iny + lda #BGCOLOR + sta (PIPE_DP),y - sta TXTPAGE2 + sta TXTPAGE2 *** Version 3 - FULL OPTIMIZATION - ldy PIPE_X_IDX - ;lda #$BB ; PipeBody_Aux_E - ;sta (PIPE_DP),y - iny - lda #$77 - sta (PIPE_DP),y - iny - lda #$66 - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$22 - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$AA - sta (PIPE_DP),y - iny - lda #BGCOLORAUX - sta (PIPE_DP),y + ldy PIPE_X_IDX + ;lda #$BB ; PipeBody_Aux_E + ;sta (PIPE_DP),y + iny + lda #$77 + sta (PIPE_DP),y + iny + lda #$66 + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$22 + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$AA + sta (PIPE_DP),y + iny + lda #BGCOLORAUX + sta (PIPE_DP),y - inc PIPE_Y - jmp :loop + inc PIPE_Y + jmp :loop -:done rts +:done rts @@ -431,1014 +431,1014 @@ DrawPipeBodyEven DrawPipeOdd - jsr SetPipeCapPtrs - sta TXTPAGE1 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ; for this "odd" routine, we add 1 for TXTPAGE2 + jsr SetPipeCapPtrs + sta TXTPAGE1 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ; for this "odd" routine, we add 1 for TXTPAGE2 - ; optimized by hand, not perfect, but big help - ;col 0 - lda #$55 - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - iny ;col 2 - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5E - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 4 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 6 - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 8 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 10 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 12 - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$54 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 14 (final!) - lda #BGCOLOR - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + ; optimized by hand, not perfect, but big help + ;col 0 + lda #$55 + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + iny ;col 2 + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5E + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 4 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 6 + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 8 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 10 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 12 + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$54 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 14 (final!) + lda #BGCOLOR + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP - sta TXTPAGE2 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - iny ; TXTPAGE2 is +1 in "odd" mode - ;col 1 - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A7 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 3 - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 5 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 7 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 9 - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 11 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 13 - lda #$AA - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + sta TXTPAGE2 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + iny ; TXTPAGE2 is +1 in "odd" mode + ;col 1 + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A7 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 3 + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 5 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 7 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 9 + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 11 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 13 + lda #$AA + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP2 -* Handle body - lda #0 - sta PIPE_Y ; current line - lda PIPE_TOP_Y - sta PIPE_BODY_BOT - jsr DrawPipeBodyOdd +* Handle body + lda #0 + sta PIPE_Y ; current line + lda PIPE_TOP_Y + sta PIPE_BODY_BOT + jsr DrawPipeBodyOdd - ldy PIPE_BOT_Y - iny - iny - sty PIPE_Y ; current line - lda #22 - sta PIPE_BODY_BOT - jsr DrawPipeBodyOdd + ldy PIPE_BOT_Y + iny + iny + sty PIPE_Y ; current line + lda #22 + sta PIPE_BODY_BOT + jsr DrawPipeBodyOdd DrawPipeBodyOdd -:loop ldy PIPE_Y - cpy PIPE_BODY_BOT - bcs :done +:loop ldy PIPE_Y + cpy PIPE_BODY_BOT + bcs :done - lda LoLineTableL,y - sta PIPE_DP - lda LoLineTableH,y - sta PIPE_DP+1 ; pointer to line on screen + lda LoLineTableL,y + sta PIPE_DP + lda LoLineTableH,y + sta PIPE_DP+1 ; pointer to line on screen - sta TXTPAGE1 + sta TXTPAGE1 *** Version 3 - FULL OPTIMIZATION - ldy PIPE_X_IDX - ;lda #$77 ; PipeBody_Main_O - ;sta (PIPE_DP),y - iny - lda #$EE - sta (PIPE_DP),y - iny - lda #$CC - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$44 - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$55 - sta (PIPE_DP),y - iny - lda #BGCOLOR - sta (PIPE_DP),y + ldy PIPE_X_IDX + ;lda #$77 ; PipeBody_Main_O + ;sta (PIPE_DP),y + iny + lda #$EE + sta (PIPE_DP),y + iny + lda #$CC + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$44 + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$55 + sta (PIPE_DP),y + iny + lda #BGCOLOR + sta (PIPE_DP),y - sta TXTPAGE2 + sta TXTPAGE2 *** Version 3 - FULL OPTIMIZATION - ldy PIPE_X_IDX - iny - lda #$AA ; PipeBody_Aux_O - sta (PIPE_DP),y - iny - lda #$77 - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$66 - sta (PIPE_DP),y - iny - sta (PIPE_DP),y - iny - lda #$22 - sta (PIPE_DP),y - iny - lda #BGCOLORAUX - sta (PIPE_DP),y + ldy PIPE_X_IDX + iny + lda #$AA ; PipeBody_Aux_O + sta (PIPE_DP),y + iny + lda #$77 + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$66 + sta (PIPE_DP),y + iny + sta (PIPE_DP),y + iny + lda #$22 + sta (PIPE_DP),y + iny + lda #BGCOLORAUX + sta (PIPE_DP),y - inc PIPE_Y - jmp :loop - ;sec - ;bcs :loop -:done rts + inc PIPE_Y + jmp :loop + ;sec + ;bcs :loop +:done rts DrawPipeEvenR - jsr SetPipeCapPtrs + jsr SetPipeCapPtrs - sta TXTPAGE2 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ; optimized by hand, not perfect, but big help - ;col 0 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$AA - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - iny ;col 2 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A7 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 4 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 6 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 8 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 10 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 12 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 14 (final!) - cpy #PIPE_RCLIP - bcs :RCLIP - lda #BGCOLORAUX - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + sta TXTPAGE2 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ; optimized by hand, not perfect, but big help + ;col 0 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$AA + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + iny ;col 2 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A7 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 4 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 6 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 8 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 10 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 12 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 14 (final!) + cpy #PIPE_RCLIP + bcs :RCLIP + lda #BGCOLORAUX + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP - sta TXTPAGE1 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ;col 1 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5E - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 3 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 5 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 7 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 9 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$54 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 11 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 13 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$55 - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + sta TXTPAGE1 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ;col 1 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5E + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 3 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 5 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 7 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 9 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$54 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 11 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 13 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$55 + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP2 -* Handle body - lda #0 - sta PIPE_Y ; current line - lda PIPE_TOP_Y - sta PIPE_BODY_BOT - jsr DrawPipeBodyEvenR +* Handle body + lda #0 + sta PIPE_Y ; current line + lda PIPE_TOP_Y + sta PIPE_BODY_BOT + jsr DrawPipeBodyEvenR - ldy PIPE_BOT_Y - iny - iny - sty PIPE_Y ; current line - lda #22 - sta PIPE_BODY_BOT - jsr DrawPipeBodyEvenR + ldy PIPE_BOT_Y + iny + iny + sty PIPE_Y ; current line + lda #22 + sta PIPE_BODY_BOT + jsr DrawPipeBodyEvenR - rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! - ; !!! We are actually returning for parent DrawPipe + rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! + ; !!! We are actually returning for parent DrawPipe DrawPipeBodyEvenR -:loop ldy PIPE_Y - cpy PIPE_BODY_BOT - bcs :done +:loop ldy PIPE_Y + cpy PIPE_BODY_BOT + bcs :done - lda LoLineTableL,y - sta PIPE_DP - lda LoLineTableH,y - sta PIPE_DP+1 ; pointer to line on screen + lda LoLineTableL,y + sta PIPE_DP + lda LoLineTableH,y + sta PIPE_DP+1 ; pointer to line on screen - sta TXTPAGE1 + sta TXTPAGE1 *** Version 2.1 - lda PIPE_X_IDX - clc - adc #PIPE_WIDTH/2-1 - pha ;PHA for below loop - tay - ldx #PIPE_WIDTH/2-1 -:oddLoop cpy #PIPE_RCLIP - bcs :oddBreak - lda PipeBody_Main_E,x - sta (PIPE_DP),y + lda PIPE_X_IDX + clc + adc #PIPE_WIDTH/2-1 + pha ;PHA for below loop + tay + ldx #PIPE_WIDTH/2-1 +:oddLoop cpy #PIPE_RCLIP + bcs :oddBreak + lda PipeBody_Main_E,x + sta (PIPE_DP),y :oddBreak - dey - dex - bpl :oddLoop + dey + dex + bpl :oddLoop - sta TXTPAGE2 + sta TXTPAGE2 *** Version 2.1 - pla - tay ;PHA from above - iny - ldx #PIPE_WIDTH/2 -:evenLoop cpy #PIPE_RCLIP - bcs :evenBreak - lda PipeBody_Aux_E,x - sta (PIPE_DP),y + pla + tay ;PHA from above + iny + ldx #PIPE_WIDTH/2 +:evenLoop cpy #PIPE_RCLIP + bcs :evenBreak + lda PipeBody_Aux_E,x + sta (PIPE_DP),y :evenBreak - dey - dex - bpl :evenLoop - inc PIPE_Y - jmp :loop + dey + dex + bpl :evenLoop + inc PIPE_Y + jmp :loop -:done rts +:done rts DrawPipeOddR - jsr SetPipeCapPtrs - sta TXTPAGE1 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ; for this "odd" routine, we add 1 for TXTPAGE2 + jsr SetPipeCapPtrs + sta TXTPAGE1 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ; for this "odd" routine, we add 1 for TXTPAGE2 - ; optimized by hand, not perfect, but big help - ;col 0 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$55 - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - iny ;col 2 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5E - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 4 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 6 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 8 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 10 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 12 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$54 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 14 (final!) - cpy #PIPE_RCLIP - bcs :RCLIP - lda #BGCOLOR - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + ; optimized by hand, not perfect, but big help + ;col 0 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$55 + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + iny ;col 2 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5E + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 4 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 6 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 8 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 10 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 12 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$54 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 14 (final!) + cpy #PIPE_RCLIP + bcs :RCLIP + lda #BGCOLOR + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP - sta TXTPAGE2 - ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - iny ; TXTPAGE2 is +1 in "odd" mode - ;col 1 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A7 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 3 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 5 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 7 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 9 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - iny ;col 11 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - iny ;col 13 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$AA - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + sta TXTPAGE2 + ldy PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + iny ; TXTPAGE2 is +1 in "odd" mode + ;col 1 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A7 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 3 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 5 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 7 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 9 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + iny ;col 11 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + iny ;col 13 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$AA + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP2 -* Handle body - lda #0 - sta PIPE_Y ; current line - lda PIPE_TOP_Y - sta PIPE_BODY_BOT - jsr DrawPipeBodyOddR +* Handle body + lda #0 + sta PIPE_Y ; current line + lda PIPE_TOP_Y + sta PIPE_BODY_BOT + jsr DrawPipeBodyOddR - ldy PIPE_BOT_Y - iny - iny - sty PIPE_Y ; current line - lda #22 - sta PIPE_BODY_BOT - jsr DrawPipeBodyOddR + ldy PIPE_BOT_Y + iny + iny + sty PIPE_Y ; current line + lda #22 + sta PIPE_BODY_BOT + jsr DrawPipeBodyOddR - rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! - ; !!! We are actually returning for parent DrawPipe + rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! + ; !!! We are actually returning for parent DrawPipe DrawPipeBodyOddR -:loop ldy PIPE_Y - cpy PIPE_BODY_BOT - bcs :done +:loop ldy PIPE_Y + cpy PIPE_BODY_BOT + bcs :done - lda LoLineTableL,y - sta PIPE_DP - lda LoLineTableH,y - sta PIPE_DP+1 ; pointer to line on screen + lda LoLineTableL,y + sta PIPE_DP + lda LoLineTableH,y + sta PIPE_DP+1 ; pointer to line on screen - sta TXTPAGE1 + sta TXTPAGE1 *** Version 2.1 - lda PIPE_X_IDX - clc - adc #PIPE_WIDTH/2 - pha ;PHA for below loop - tay ;\_ skip col 0 (bg color) - iny ;/ - ldx #PIPE_WIDTH/2+1 -:oddLoop cpy #PIPE_RCLIP - bcs :oddBreak - lda PipeBody_Main_O,x - sta (PIPE_DP),y + lda PIPE_X_IDX + clc + adc #PIPE_WIDTH/2 + pha ;PHA for below loop + tay ;\_ skip col 0 (bg color) + iny ;/ + ldx #PIPE_WIDTH/2+1 +:oddLoop cpy #PIPE_RCLIP + bcs :oddBreak + lda PipeBody_Main_O,x + sta (PIPE_DP),y :oddBreak - dey - dex - bne :oddLoop ; we can skip the first pixel, transparent + dey + dex + bne :oddLoop ; we can skip the first pixel, transparent - sta TXTPAGE2 + sta TXTPAGE2 *** Version 2.1 - pla - tay ;PHA from above - ldx #PIPE_WIDTH/2-1 -:evenLoop cpy #PIPE_RCLIP - bcs :evenBreak - lda PipeBody_Aux_O,x - sta (PIPE_DP),y + pla + tay ;PHA from above + ldx #PIPE_WIDTH/2-1 +:evenLoop cpy #PIPE_RCLIP + bcs :evenBreak + lda PipeBody_Aux_O,x + sta (PIPE_DP),y :evenBreak - dey - dex - bpl :evenLoop + dey + dex + bpl :evenLoop - inc PIPE_Y - jmp :loop -:done rts + inc PIPE_Y + jmp :loop +:done rts DrawPipeEvenL - jsr SetPipeCapPtrs - sta TXTPAGE2 - lda PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ; optimized by hand, not perfect, but big help - clc - adc #PIPE_WIDTH/2 - tax ;stash for below loop - tay - ;col 14 (rightmost) - cpy #PIPE_RCLIP - bcs :RCLIP - lda #BGCOLORAUX - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - dey ;col 12 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 10 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 8 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 6 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 4 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A7 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 2 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 0 (final! leftmost) - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$AA - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + jsr SetPipeCapPtrs + sta TXTPAGE2 + lda PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ; optimized by hand, not perfect, but big help + clc + adc #PIPE_WIDTH/2 + tax ;stash for below loop + tay + ;col 14 (rightmost) + cpy #PIPE_RCLIP + bcs :RCLIP + lda #BGCOLORAUX + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + dey ;col 12 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 10 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 8 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 6 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 4 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A7 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 2 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 0 (final! leftmost) + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$AA + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP - sta TXTPAGE1 - txa - tay - dey - ;col 13 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$55 - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - dey ;col 11 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$54 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 9 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 7 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 5 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 3 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 1 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5E - sta (PIPE_DP1),y - sta (PIPE_DP3),y + sta TXTPAGE1 + txa + tay + dey + ;col 13 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$55 + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + dey ;col 11 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$54 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 9 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 7 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 5 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 3 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 1 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5E + sta (PIPE_DP1),y + sta (PIPE_DP3),y :RCLIP2 -* Handle body - lda #0 - sta PIPE_Y ; current line - lda PIPE_TOP_Y - sta PIPE_BODY_BOT - jsr DrawPipeBodyEvenL +* Handle body + lda #0 + sta PIPE_Y ; current line + lda PIPE_TOP_Y + sta PIPE_BODY_BOT + jsr DrawPipeBodyEvenL - ldy PIPE_BOT_Y - iny - iny - sty PIPE_Y ; current line - lda #22 - sta PIPE_BODY_BOT - jsr DrawPipeBodyEvenL + ldy PIPE_BOT_Y + iny + iny + sty PIPE_Y ; current line + lda #22 + sta PIPE_BODY_BOT + jsr DrawPipeBodyEvenL - rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! - ; !!! We are actually returning for parent DrawPipe + rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! + ; !!! We are actually returning for parent DrawPipe DrawPipeBodyEvenL -:loop ldy PIPE_Y - cpy PIPE_BODY_BOT - beq :done +:loop ldy PIPE_Y + cpy PIPE_BODY_BOT + beq :done - lda LoLineTableL,y - sta PIPE_DP - lda LoLineTableH,y - sta PIPE_DP+1 ; pointer to line on screen + lda LoLineTableL,y + sta PIPE_DP + lda LoLineTableH,y + sta PIPE_DP+1 ; pointer to line on screen - sta TXTPAGE2 - lda PIPE_X_IDX - clc - adc #PIPE_WIDTH/2 - bmi :done - pha ;PHA for below loop - tay - ldx #PIPE_WIDTH/2 + sta TXTPAGE2 + lda PIPE_X_IDX + clc + adc #PIPE_WIDTH/2 + bmi :done + pha ;PHA for below loop + tay + ldx #PIPE_WIDTH/2 -:evenLoop lda PipeBody_Aux_E,x - sta (PIPE_DP),y - dex - dey - bpl :evenLoop +:evenLoop lda PipeBody_Aux_E,x + sta (PIPE_DP),y + dex + dey + bpl :evenLoop - sta TXTPAGE1 - pla ;PLA from above - tay - ldx #PIPE_WIDTH/2 + sta TXTPAGE1 + pla ;PLA from above + tay + ldx #PIPE_WIDTH/2 -:oddLoop lda PipeBody_Main_E,x - sta (PIPE_DP),y - dex - dey - bpl :oddLoop +:oddLoop lda PipeBody_Main_E,x + sta (PIPE_DP),y + dex + dey + bpl :oddLoop - inc PIPE_Y - jmp :loop -:done rts + inc PIPE_Y + jmp :loop +:done rts DrawPipeOddL - jsr SetPipeCapPtrs - sta TXTPAGE1 - lda PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 - ; optimized by hand, not perfect, but big help - clc - adc #PIPE_WIDTH/2 - tax ;stash for below loop - tay - ;col 14 (rightmost) - cpy #PIPE_RCLIP - bcs :RCLIP - lda #BGCOLOR - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - dey ;col 12 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$45 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$54 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 10 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 8 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$C5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 6 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5C - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 4 - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$5E - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 2 - cpy #PIPE_RCLIP - bcs :RCLIP - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$E5 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 0 (final! leftmost) - cpy #PIPE_RCLIP - bcs :RCLIP - lda #$55 - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y + jsr SetPipeCapPtrs + sta TXTPAGE1 + lda PIPE_X_IDX ; y= the x offset... yay dp indexing on 6502 + ; optimized by hand, not perfect, but big help + clc + adc #PIPE_WIDTH/2 + tax ;stash for below loop + tay + ;col 14 (rightmost) + cpy #PIPE_RCLIP + bcs :RCLIP + lda #BGCOLOR + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + dey ;col 12 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$45 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$54 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 10 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 8 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$C5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 6 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5C + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 4 + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$5E + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 2 + cpy #PIPE_RCLIP + bcs :RCLIP + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$E5 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 0 (final! leftmost) + cpy #PIPE_RCLIP + bcs :RCLIP + lda #$55 + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y :RCLIP - sta TXTPAGE2 - txa - tay - ;col 13 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$AA - sta (PIPE_DP0),y - sta (PIPE_DP1),y - sta (PIPE_DP2),y - sta (PIPE_DP3),y - dey ;col 11 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 9 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$2A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 7 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 5 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - lda #$6A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - dey ;col 3 - cpy #PIPE_RCLIP - bcs :RCLIP2 - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A6 - sta (PIPE_DP1),y - sta (PIPE_DP3),y - dey ;col 1 - cpy #PIPE_RCLIP - bcs :RCLIP2 - lda #$7A - sta (PIPE_DP0),y - sta (PIPE_DP2),y - lda #$A7 - sta (PIPE_DP1),y - sta (PIPE_DP3),y + sta TXTPAGE2 + txa + tay + ;col 13 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$AA + sta (PIPE_DP0),y + sta (PIPE_DP1),y + sta (PIPE_DP2),y + sta (PIPE_DP3),y + dey ;col 11 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 9 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$2A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 7 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 5 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + lda #$6A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + dey ;col 3 + cpy #PIPE_RCLIP + bcs :RCLIP2 + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A6 + sta (PIPE_DP1),y + sta (PIPE_DP3),y + dey ;col 1 + cpy #PIPE_RCLIP + bcs :RCLIP2 + lda #$7A + sta (PIPE_DP0),y + sta (PIPE_DP2),y + lda #$A7 + sta (PIPE_DP1),y + sta (PIPE_DP3),y :RCLIP2 -* Handle body - lda #0 - sta PIPE_Y ; current line - lda PIPE_TOP_Y - sta PIPE_BODY_BOT - jsr DrawPipeBodyOddL +* Handle body + lda #0 + sta PIPE_Y ; current line + lda PIPE_TOP_Y + sta PIPE_BODY_BOT + jsr DrawPipeBodyOddL - ldy PIPE_BOT_Y - iny - iny - sty PIPE_Y ; current line - lda #22 - sta PIPE_BODY_BOT - jsr DrawPipeBodyOddL + ldy PIPE_BOT_Y + iny + iny + sty PIPE_Y ; current line + lda #22 + sta PIPE_BODY_BOT + jsr DrawPipeBodyOddL - rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! - ; !!! We are actually returning for parent DrawPipe + rts ; !!! FORMERLY WAS 'jmp DrawPipeDone' !!! + ; !!! We are actually returning for parent DrawPipe DrawPipeBodyOddL -:loop ldy PIPE_Y - cpy PIPE_BODY_BOT - beq :done +:loop ldy PIPE_Y + cpy PIPE_BODY_BOT + beq :done - lda LoLineTableL,y - sta PIPE_DP - lda LoLineTableH,y - sta PIPE_DP+1 ; pointer to line on screen + lda LoLineTableL,y + sta PIPE_DP + lda LoLineTableH,y + sta PIPE_DP+1 ; pointer to line on screen - sta TXTPAGE1 - lda PIPE_X_IDX - clc - adc #PIPE_WIDTH/2 - bmi :done - pha ;PHA for below loop - tay - ldx #PIPE_WIDTH/2 + sta TXTPAGE1 + lda PIPE_X_IDX + clc + adc #PIPE_WIDTH/2 + bmi :done + pha ;PHA for below loop + tay + ldx #PIPE_WIDTH/2 -:evenLoop lda PipeBody_Main_O,x - sta (PIPE_DP),y - dex - dey - bpl :evenLoop +:evenLoop lda PipeBody_Main_O,x + sta (PIPE_DP),y + dex + dey + bpl :evenLoop - sta TXTPAGE2 - pla ;PLA from above - tay - ldx #PIPE_WIDTH/2-1 + sta TXTPAGE2 + pla ;PLA from above + tay + ldx #PIPE_WIDTH/2-1 -:oddLoop lda PipeBody_Aux_O,x - sta (PIPE_DP),y - dex - dey - bpl :oddLoop +:oddLoop lda PipeBody_Aux_O,x + sta (PIPE_DP),y + dex + dey + bpl :oddLoop - inc PIPE_Y - jmp :loop + inc PIPE_Y + jmp :loop -:done rts +:done rts diff --git a/src/readme.s b/src/readme.s index f040e7c..c5b2230 100644 --- a/src/readme.s +++ b/src/readme.s @@ -3,25 +3,27 @@ * * Flapple Bird - A de-make of Flappy Bird for the Apple II computer * -* More information about this project is available at -* http://dagenbrock.com/flappy +* # Download releases here: +* https://github.com/digarok/flapple/releases * -* How to run -* ========== -* You can download either disk image and run it with an emulator -* or transfer it to the respective media and run it on a real -* machine (recommended). -* The 3.5" ProDOS disk version is "flapple800.po", and the -* 5.25" ProDOS disk version is "flapple140.po". +* # How to run +* You can download either disk image and run it with an emulator like GSplus +* or transfer to the respective media and run on a real machine (recommended). +* - `flapple800.po` is the 3.5" ProDOS disk version (800KB) +* - `flapple140.po` is the 5.25" ProDOS disk version (140KB) * -* How to build -* ============ -* This is written to compile on Merlin 8/16, but I believe should -* work with all later Merlin variants. Load Merlin, then 'L'oad -* the file "flapple.s", finally hit OpenApple-A to assemble and -* it should build the "flap.system" file. +* It should automatically boot ProDOS and load the color version of the game. +* There is a Monochrome version of the game included on the disk. +* To run it, quit game with the `q` key, and from the ProDOS selector menu +* run `fmono.system`. * +* # How to build +* This was originally written to compile on Merlin 8/16, but it's now +* maintained using Merlin32 (https://github.com/digarok/merlin32/). * -* -* Again, more information about this project is available at -* http://dagenbrock.com/flappy +* - Classic Merlin16+ on an Apple IIgs +* - Load Merlin, then `L`oad the file "flapple.s", finally hit OpenApple-A to assemble and it should build the "flap.system" file. +* - Modern PC builds: +* - Assemble with `merlin32 src/flapple.s` +* - Make disks with `./make_po.sh` +* * Requires having `merlin32` and `cadius` commands available on your system. diff --git a/src/sprite.s b/src/sprite.s index 707533f..be2d730 100644 --- a/src/sprite.s +++ b/src/sprite.s @@ -1,144 +1,144 @@ -SPRITE_X db 0 -SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry -SPRITE_W db 0 -SPRITE_W_D2 db 0 -SPRITE_H db 0 ; <- in bytes +SPRITE_X db 0 +SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry +SPRITE_W db 0 +SPRITE_W_D2 db 0 +SPRITE_H db 0 ; <- in bytes -SPRITE_MAIN da 0 -SPRITE_AUX da 0 -SPRITE_MASK da 0 -SPRITE_IMASK da 0 -SPRITE_COLLISION db 0 -SPRITE_Y_IDX dw 0 -SPRITE_X_IDX dw 0 +SPRITE_MAIN da 0 +SPRITE_AUX da 0 +SPRITE_MASK da 0 +SPRITE_IMASK da 0 +SPRITE_COLLISION db 0 +SPRITE_Y_IDX dw 0 +SPRITE_X_IDX dw 0 -SPRITE_SCREEN_P equz $00 -SPRITE_MAIN_P equz $02 -SPRITE_SCREEN_P2 equz $02 -SPRITE_AUX_P equz $04 -SPRITE_SCREEN_P3 equz $04 -SPRITE_MASK_P equz $FA -SPRITE_SCREEN_P4 equz $FA -SPRITE_IMASK_P equz $FC +SPRITE_SCREEN_P equz $00 +SPRITE_MAIN_P equz $02 +SPRITE_SCREEN_P2 equz $02 +SPRITE_AUX_P equz $04 +SPRITE_SCREEN_P3 equz $04 +SPRITE_MASK_P equz $FA +SPRITE_SCREEN_P4 equz $FA +SPRITE_IMASK_P equz $FC -SPRITE_SCREEN_IDX db #$0 -AUX_BG_COLOR db #$BB -MAIN_BG_COLOR db #$77 +SPRITE_SCREEN_IDX db #$0 +AUX_BG_COLOR db #$BB +MAIN_BG_COLOR db #$77 * still does collision DrawSpriteBetter - lda #0 - sta SPRITE_X_IDX -:drawLine lda SPRITE_Y ; - tay - lda LoLineTableL,y ; SET SCREEN LINE - sta SPRITE_SCREEN_P - lda LoLineTableH,y - sta SPRITE_SCREEN_P+1 + lda #0 + sta SPRITE_X_IDX +:drawLine lda SPRITE_Y ; + tay + lda LoLineTableL,y ; SET SCREEN LINE + sta SPRITE_SCREEN_P + lda LoLineTableH,y + sta SPRITE_SCREEN_P+1 - lda SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION - clc ; I think the highest position is $f8 - adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8 - sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY? + lda SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION + clc ; I think the highest position is $f8 + adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8 + sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY? - jmp DrawSpriteLineC + jmp DrawSpriteLineC ]DSLCD_done - inc SPRITE_Y - dec SPRITE_H - lda SPRITE_H - bne :drawLine - rts + inc SPRITE_Y + dec SPRITE_H + lda SPRITE_H + bne :drawLine + rts DrawSpriteLineC - ; EVEN COLS -DD_EVEN lda #0 - sta SPRITE_SCREEN_IDX - sta TXTPAGE2 + ; EVEN COLS +DD_EVEN lda #0 + sta SPRITE_SCREEN_IDX + sta TXTPAGE2 :lineLoop - ;ldy SPRITE_X_IDX ; - ;lda (SPRITE_IMASK_P),y - ;beq :noPixel + ;ldy SPRITE_X_IDX ; + ;lda (SPRITE_IMASK_P),y + ;beq :noPixel :collisionCheckDrawer - ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS - lda (SPRITE_SCREEN_P),y - pha ; SAVE -> STACK - ldy SPRITE_X_IDX ; PREP Y INDEX - cmp #$BB ; AUX BGCOLOR @TODO - beq :noCollision - and (SPRITE_IMASK_P),y - cmp #$B0 - beq :noCollision - cmp #$0B - beq :noCollision - lda #1 - sta SPRITE_COLLISION - sta $c034 + ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS + lda (SPRITE_SCREEN_P),y + pha ; SAVE -> STACK + ldy SPRITE_X_IDX ; PREP Y INDEX + cmp #$BB ; AUX BGCOLOR @TODO + beq :noCollision + and (SPRITE_IMASK_P),y + cmp #$B0 + beq :noCollision + cmp #$0B + beq :noCollision + lda #1 + sta SPRITE_COLLISION + sta $c034 :noCollision -:doPixels pla ; Y=SPRITE X A=BG DATA - and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA - ora (SPRITE_AUX_P),y ; OVERLAY OUR SPRITE DATA - ldy SPRITE_SCREEN_IDX - sta (SPRITE_SCREEN_P),y +:doPixels pla ; Y=SPRITE X A=BG DATA + and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA + ora (SPRITE_AUX_P),y ; OVERLAY OUR SPRITE DATA + ldy SPRITE_SCREEN_IDX + sta (SPRITE_SCREEN_P),y -:noPixel inc SPRITE_X_IDX - inc SPRITE_X_IDX - inc SPRITE_SCREEN_IDX - ldy SPRITE_SCREEN_IDX - cpy SPRITE_W - bcc :lineLoop +:noPixel inc SPRITE_X_IDX + inc SPRITE_X_IDX + inc SPRITE_SCREEN_IDX + ldy SPRITE_SCREEN_IDX + cpy SPRITE_W + bcc :lineLoop DD_ODD - ; ODD COLS - inc SPRITE_X_IDX ; + 1 column offset - lda SPRITE_X_IDX - sec - sbc SPRITE_W ; RESET DATA PTR - sbc SPRITE_W ; *2 due to pixel skip - sta SPRITE_X_IDX - lda #0 - sta SPRITE_SCREEN_IDX - sta TXTPAGE1 + ; ODD COLS + inc SPRITE_X_IDX ; + 1 column offset + lda SPRITE_X_IDX + sec + sbc SPRITE_W ; RESET DATA PTR + sbc SPRITE_W ; *2 due to pixel skip + sta SPRITE_X_IDX + lda #0 + sta SPRITE_SCREEN_IDX + sta TXTPAGE1 -:lineLoop ;ldy SPRITE_X_IDX ; - ;lda (SPRITE_IMASK_P),y - ;beq :noPixel +:lineLoop ;ldy SPRITE_X_IDX ; + ;lda (SPRITE_IMASK_P),y + ;beq :noPixel :collisionCheckDrawer - ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS - lda (SPRITE_SCREEN_P),y - pha ; SAVE -> STACK - ldy SPRITE_X_IDX ; PREP Y INDEX - cmp #$77 ; MAIN BGCOLOR @TODO - beq :noCollision - and (SPRITE_IMASK_P),y - cmp #$70 - beq :noCollision - cmp #$07 - beq :noCollision - lda #1 - sta SPRITE_COLLISION - sta $c034 + ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS + lda (SPRITE_SCREEN_P),y + pha ; SAVE -> STACK + ldy SPRITE_X_IDX ; PREP Y INDEX + cmp #$77 ; MAIN BGCOLOR @TODO + beq :noCollision + and (SPRITE_IMASK_P),y + cmp #$70 + beq :noCollision + cmp #$07 + beq :noCollision + lda #1 + sta SPRITE_COLLISION + sta $c034 :noCollision -:doPixels pla ; Y=SPRITE X A=BG DATA - and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA - ora (SPRITE_MAIN_P),y ; OVERLAY OUR SPRITE DATA - ldy SPRITE_SCREEN_IDX - sta (SPRITE_SCREEN_P),y +:doPixels pla ; Y=SPRITE X A=BG DATA + and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA + ora (SPRITE_MAIN_P),y ; OVERLAY OUR SPRITE DATA + ldy SPRITE_SCREEN_IDX + sta (SPRITE_SCREEN_P),y -:noPixel inc SPRITE_X_IDX - inc SPRITE_X_IDX - inc SPRITE_SCREEN_IDX - ldy SPRITE_SCREEN_IDX - cpy SPRITE_W - bcc :lineLoop - dec SPRITE_X_IDX ; -1 column offset (for next row) +:noPixel inc SPRITE_X_IDX + inc SPRITE_X_IDX + inc SPRITE_SCREEN_IDX + ldy SPRITE_SCREEN_IDX + cpy SPRITE_W + bcc :lineLoop + dec SPRITE_X_IDX ; -1 column offset (for next row) - jmp ]DSLCD_done + jmp ]DSLCD_done diff --git a/src/util.s b/src/util.s index 5fb9bf8..3bed85f 100644 --- a/src/util.s +++ b/src/util.s @@ -1,44 +1,44 @@ ** Register preservation -_sX dw 0 -_sY dw 0 -_sA dw 0 -_storeReg sta _sA - stx _sX - sty _sY - rts -_loadReg lda _sA - ldx _sX - ldy _sY - rts +_sX dw 0 +_sY dw 0 +_sA dw 0 +_storeReg sta _sA + stx _sX + sty _sY + rts +_loadReg lda _sA + ldx _sX + ldy _sY + rts ************************************************** * Awesome PRNG thx to White Flame (aka David Holz) ************************************************** GetRand - lda _randomByte - beq :doEor - asl - bcc :noEor -:doEor eor #$1d -:noEor sta _randomByte - rts -_randomByte db 0 + lda _randomByte + beq :doEor + asl + bcc :noEor +:doEor eor #$1d +:noEor sta _randomByte + rts +_randomByte db 0 GetRandLow - lda _randomByte2 - beq :doEor - asl - bcc :noEor -:doEor eor #$1d -:noEor sta _randomByte2 - cmp #$80 - bcs :hot - lda #$0 - rts -:hot lda #$04 - rts + lda _randomByte2 + beq :doEor + asl + bcc :noEor +:doEor eor #$1d +:noEor sta _randomByte2 + cmp #$80 + bcs :hot + lda #$0 + rts +:hot lda #$04 + rts -_randomByte2 db 0 +_randomByte2 db 0