mirror of
https://github.com/digarok/flapple.git
synced 2024-05-29 01:41:32 +00:00
reformatted all with radius for consistency
This commit is contained in:
parent
4c7cc709cd
commit
f1fb6a0dee
|
@ -1,23 +1,24 @@
|
||||||
**************************************************
|
**************************************************
|
||||||
* Apple Standard Memory Locations
|
* Apple Standard Memory Locations
|
||||||
**************************************************
|
**************************************************
|
||||||
CLRLORES equ $F832
|
CLRLORES equ $F832
|
||||||
LORES equ $C050
|
LORES equ $C050
|
||||||
TXTSET equ $C051
|
TXTSET equ $C051
|
||||||
MIXCLR equ $C052
|
MIXCLR equ $C052
|
||||||
MIXSET equ $C053
|
MIXSET equ $C053
|
||||||
TXTPAGE1 equ $C054
|
TXTPAGE1 equ $C054
|
||||||
TXTPAGE2 equ $C055
|
TXTPAGE2 equ $C055
|
||||||
KEY equ $C000
|
KEY equ $C000
|
||||||
C80STOREOFF equ $C000
|
C80STOREOFF equ $C000
|
||||||
C80STOREON equ $C001
|
C80STOREON equ $C001
|
||||||
STROBE equ $C010
|
STROBE equ $C010
|
||||||
SPEAKER equ $C030
|
SPEAKER equ $C030
|
||||||
VBL equ $C02E
|
VBL equ $C02E
|
||||||
RDVBLBAR equ $C019 ;not VBL (VBL signal low
|
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)
|
|
||||||
|
|
||||||
|
|
750
src/bird.s
750
src/bird.s
|
@ -1,470 +1,466 @@
|
||||||
|
|
||||||
SPRITE_X db 0
|
SPRITE_X db 0
|
||||||
SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry
|
SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry
|
||||||
SPRITE_W db 0
|
SPRITE_W db 0
|
||||||
SPRITE_W_D2 db 0
|
SPRITE_W_D2 db 0
|
||||||
SPRITE_H db 0 ; <- in bytes
|
SPRITE_H db 0 ; <- in bytes
|
||||||
|
|
||||||
SPRITE_MAIN da 0
|
SPRITE_MAIN da 0
|
||||||
SPRITE_AUX da 0
|
SPRITE_AUX da 0
|
||||||
SPRITE_MASK da 0
|
SPRITE_MASK da 0
|
||||||
SPRITE_IMASK da 0
|
SPRITE_IMASK da 0
|
||||||
SPRITE_COLLISION db 0
|
SPRITE_COLLISION db 0
|
||||||
SPRITE_Y_IDX dw 0
|
SPRITE_Y_IDX dw 0
|
||||||
SPRITE_X_IDX dw 0
|
SPRITE_X_IDX dw 0
|
||||||
|
|
||||||
SPRITE_SCREEN_P equ $00
|
SPRITE_SCREEN_P equ $00
|
||||||
SPRITE_DATA_P equ $02
|
SPRITE_DATA_P equ $02
|
||||||
SPRITE_SCREEN_P2 equ $02
|
SPRITE_SCREEN_P2 equ $02
|
||||||
SPRITE_AUX_P equ $04
|
SPRITE_AUX_P equ $04
|
||||||
SPRITE_SCREEN_P3 equ $04
|
SPRITE_SCREEN_P3 equ $04
|
||||||
SPRITE_MASK_P equ $FA
|
SPRITE_MASK_P equ $FA
|
||||||
SPRITE_SCREEN_P4 equ $FA
|
SPRITE_SCREEN_P4 equ $FA
|
||||||
SPRITE_IMASK_P equ $FC
|
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 db 0 ; in two's compliment {-3,3}
|
||||||
BIRD_VELOCITY_MAX equ #20
|
BIRD_VELOCITY_MAX equ #20
|
||||||
BIRD_VELOCITY_MIN equ #%111111111 ; -1
|
BIRD_VELOCITY_MIN equ #%111111111 ; -1
|
||||||
BIRD_WIDTH equ #5
|
BIRD_WIDTH equ #5
|
||||||
BIRD_X equ #17
|
BIRD_X equ #17
|
||||||
BIRD_Y_INIT equ #17
|
BIRD_Y_INIT equ #17
|
||||||
BIRD_Y db #BIRD_Y_INIT ; (0-47)
|
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_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 db #0 ; 0=down 1=up
|
||||||
BIRD_FLAP_RATE equ #5
|
BIRD_FLAP_RATE equ #5
|
||||||
BIRD_FLAP_CNT db 0
|
BIRD_FLAP_CNT db 0
|
||||||
|
|
||||||
**
|
**
|
||||||
|
|
||||||
FlapBird
|
FlapBird
|
||||||
inc BIRD_FLAP_CNT
|
inc BIRD_FLAP_CNT
|
||||||
lda BIRD_FLAP_CNT
|
lda BIRD_FLAP_CNT
|
||||||
cmp #BIRD_FLAP_RATE
|
cmp #BIRD_FLAP_RATE
|
||||||
bcs :flapIt
|
bcs :flapIt
|
||||||
rts
|
rts
|
||||||
:flapIt
|
:flapIt
|
||||||
lda #0
|
lda #0
|
||||||
sta BIRD_FLAP_CNT
|
sta BIRD_FLAP_CNT
|
||||||
inc BIRD_FLAP
|
inc BIRD_FLAP
|
||||||
lda BIRD_FLAP
|
lda BIRD_FLAP
|
||||||
cmp #2
|
cmp #2
|
||||||
bne :noFlip
|
bne :noFlip
|
||||||
lda #0
|
lda #0
|
||||||
sta BIRD_FLAP
|
sta BIRD_FLAP
|
||||||
:noFlip rts
|
:noFlip rts
|
||||||
|
|
||||||
|
|
||||||
***** EVEN then ODD, i.e. AUX then MAIN
|
***** EVEN then ODD, i.e. AUX then MAIN
|
||||||
BIRD_WUP_E_PIXEL
|
BIRD_WUP_E_PIXEL
|
||||||
DO MONO
|
DO MONO
|
||||||
hex 00,EA,EA,FF,F0,50,D5,A5,0F,00
|
hex 00,EA,EA,FF,F0,50,D5,A5,0F,00
|
||||||
hex AA,EA,EE,CF,CF,D5,55,8A,90,90
|
hex AA,EA,EE,CF,CF,D5,55,8A,90,90
|
||||||
hex 05,AD,A4,08,08,05,5D,51,01,00
|
hex 05,AD,A4,08,08,05,5D,51,01,00
|
||||||
ELSE
|
ELSE
|
||||||
hex BB,EA,EA,FF,FB,57,D5,A5,0F,77
|
hex BB,EA,EA,FF,FB,57,D5,A5,0F,77
|
||||||
hex AA,EA,EE,CF,CF,D5,55,8A,90,97
|
hex AA,EA,EE,CF,CF,D5,55,8A,90,97
|
||||||
hex B5,AD,A4,B8,B8,75,5D,51,71,77
|
hex B5,AD,A4,B8,B8,75,5D,51,71,77
|
||||||
FIN
|
FIN
|
||||||
|
|
||||||
BIRD_WUP_E_MASK
|
BIRD_WUP_E_MASK
|
||||||
hex FF,00,00,00,0F,0F,00,00,00,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,00,00,00,00,00,00,0F
|
||||||
hex F0,00,00,F0,F0,F0,00,00,F0,FF
|
hex F0,00,00,F0,F0,F0,00,00,F0,FF
|
||||||
|
|
||||||
|
|
||||||
BIRD_WUP_E_IMASK
|
BIRD_WUP_E_IMASK
|
||||||
hex 00,FF,FF,FF,F0,F0,FF,FF,FF,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,FF,FF,FF,FF,FF,FF,F0
|
||||||
hex 0F,FF,FF,0F,0F,0F,FF,FF,0F,00
|
hex 0F,FF,FF,0F,0F,0F,FF,FF,0F,00
|
||||||
|
|
||||||
***** EVEN then ODD, i.e. AUX then MAIN
|
***** EVEN then ODD, i.e. AUX then MAIN
|
||||||
BIRD_WDN_E_PIXEL
|
BIRD_WDN_E_PIXEL
|
||||||
DO MONO
|
DO MONO
|
||||||
hex 00,EA,EA,FF,F0,50,D5,A5,0F,00
|
hex 00,EA,EA,FF,F0,50,D5,A5,0F,00
|
||||||
hex AA,EE,EE,CF,CF,DD,5D,8A,90,90
|
hex AA,EE,EE,CF,CF,DD,5D,8A,90,90
|
||||||
hex 54,AE,A4,08,08,5D,55,51,01,00
|
hex 54,AE,A4,08,08,5D,55,51,01,00
|
||||||
ELSE
|
ELSE
|
||||||
hex BB,EA,EA,FF,FB,57,D5,A5,0F,77
|
hex BB,EA,EA,FF,FB,57,D5,A5,0F,77
|
||||||
hex AA,EE,EE,CF,CF,DD,5D,8A,90,97
|
hex AA,EE,EE,CF,CF,DD,5D,8A,90,97
|
||||||
hex 54,AE,A4,B8,B8,5D,55,51,71,77
|
hex 54,AE,A4,B8,B8,5D,55,51,71,77
|
||||||
FIN
|
FIN
|
||||||
|
|
||||||
BIRD_WDN_E_MASK
|
BIRD_WDN_E_MASK
|
||||||
hex FF,00,00,00,0F,0F,00,00,00,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,00,00,00,00,00,00,0F
|
||||||
hex 00,00,00,F0,F0,00,00,00,F0,FF
|
hex 00,00,00,F0,F0,00,00,00,F0,FF
|
||||||
|
|
||||||
|
|
||||||
BIRD_WDN_E_IMASK
|
BIRD_WDN_E_IMASK
|
||||||
hex 00,FF,FF,FF,F0,F0,FF,FF,FF,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,FF,FF,FF,FF,FF,FF,F0
|
||||||
hex FF,FF,FF,0F,0F,FF,FF,FF,0F,00
|
hex FF,FF,FF,0F,0F,FF,FF,FF,0F,00
|
||||||
|
|
||||||
|
|
||||||
***** EVEN then ODD, i.e. AUX then MAIN
|
***** EVEN then ODD, i.e. AUX then MAIN
|
||||||
BIRD_WUP_O_PIXEL
|
BIRD_WUP_O_PIXEL
|
||||||
DO MONO
|
DO MONO
|
||||||
hex 00,A0,A0,F0,00,00,50,50,F0,00
|
hex 00,A0,A0,F0,00,00,50,50,F0,00
|
||||||
hex A0,AE,EE,FF,FF,55,5D,AA,00,00
|
hex A0,AE,EE,FF,FF,55,5D,AA,00,00
|
||||||
hex 5A,DE,4E,8C,8C,5D,D5,18,19,09
|
hex 5A,DE,4E,8C,8C,5D,D5,18,19,09
|
||||||
hex 00,0A,0A,00,00,00,05,05,00,00
|
hex 00,0A,0A,00,00,00,05,05,00,00
|
||||||
ELSE
|
ELSE
|
||||||
hex BB,AB,AB,FB,BB,77,57,57,F7,77
|
hex BB,AB,AB,FB,BB,77,57,57,F7,77
|
||||||
hex AB,AE,EE,FF,FF,55,5D,AA,00,77
|
hex AB,AE,EE,FF,FF,55,5D,AA,00,77
|
||||||
hex 5A,DE,4E,8C,8C,5D,D5,18,19,79
|
hex 5A,DE,4E,8C,8C,5D,D5,18,19,79
|
||||||
hex BB,BA,BA,BB,BB,77,75,75,77,77
|
hex BB,BA,BA,BB,BB,77,75,75,77,77
|
||||||
|
FIN
|
||||||
FIN
|
|
||||||
|
|
||||||
BIRD_WUP_O_MASK
|
BIRD_WUP_O_MASK
|
||||||
hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF
|
hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF
|
||||||
hex 0F,00,00,00,00,00,00,00,00,FF
|
hex 0F,00,00,00,00,00,00,00,00,FF
|
||||||
hex 00,00,00,00,00,00,00,00,00,F0
|
hex 00,00,00,00,00,00,00,00,00,F0
|
||||||
hex FF,F0,F0,FF,FF,FF,F0,F0,FF,FF
|
hex FF,F0,F0,FF,FF,FF,F0,F0,FF,FF
|
||||||
|
|
||||||
|
|
||||||
BIRD_WUP_O_IMASK
|
BIRD_WUP_O_IMASK
|
||||||
hex 00,F0,F0,F0,00,00,F0,F0,F0,00
|
hex 00,F0,F0,F0,00,00,F0,F0,F0,00
|
||||||
hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00
|
hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00
|
||||||
hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F
|
hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F
|
||||||
hex 00,0F,0F,00,00,00,0F,0F,00,00
|
hex 00,0F,0F,00,00,00,0F,0F,00,00
|
||||||
|
|
||||||
|
|
||||||
***** EVEN then ODD, i.e. AUX then MAIN
|
***** EVEN then ODD, i.e. AUX then MAIN
|
||||||
BIRD_WDN_O_PIXEL
|
BIRD_WDN_O_PIXEL
|
||||||
DO MONO
|
DO MONO
|
||||||
hex 00,A0,A0,F0,00,00,50,50,F0,00
|
hex 00,A0,A0,F0,00,00,50,50,F0,00
|
||||||
hex A0,EE,EE,FF,FF,D5,DD,AA,00,00
|
hex A0,EE,EE,FF,FF,D5,DD,AA,00,00
|
||||||
hex 4A,EE,4E,8C,8C,DD,55,18,19,09
|
hex 4A,EE,4E,8C,8C,DD,55,18,19,09
|
||||||
hex 05,0A,0A,00,00,05,05,05,00,00
|
hex 05,0A,0A,00,00,05,05,05,00,00
|
||||||
ELSE
|
ELSE
|
||||||
hex BB,AB,AB,FB,BB,77,57,57,F7,77
|
hex BB,AB,AB,FB,BB,77,57,57,F7,77
|
||||||
hex AB,EE,EE,FF,FF,D5,DD,AA,00,77
|
hex AB,EE,EE,FF,FF,D5,DD,AA,00,77
|
||||||
hex 4A,EE,4E,8C,8C,DD,55,18,19,79
|
hex 4A,EE,4E,8C,8C,DD,55,18,19,79
|
||||||
hex B5,BA,BA,BB,BB,75,75,75,77,77
|
hex B5,BA,BA,BB,BB,75,75,75,77,77
|
||||||
FIN
|
FIN
|
||||||
|
|
||||||
BIRD_WDN_O_MASK
|
BIRD_WDN_O_MASK
|
||||||
hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF
|
hex FF,0F,0F,0F,FF,FF,0F,0F,0F,FF
|
||||||
hex 0F,00,00,00,00,00,00,00,00,FF
|
hex 0F,00,00,00,00,00,00,00,00,FF
|
||||||
hex 00,00,00,00,00,00,00,00,00,F0
|
hex 00,00,00,00,00,00,00,00,00,F0
|
||||||
hex F0,F0,F0,FF,FF,F0,F0,F0,FF,FF
|
hex F0,F0,F0,FF,FF,F0,F0,F0,FF,FF
|
||||||
|
|
||||||
|
|
||||||
BIRD_WDN_O_IMASK
|
BIRD_WDN_O_IMASK
|
||||||
hex 00,F0,F0,F0,00,00,F0,F0,F0,00
|
hex 00,F0,F0,F0,00,00,F0,F0,F0,00
|
||||||
hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00
|
hex F0,FF,FF,FF,FF,FF,FF,FF,FF,00
|
||||||
hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F
|
hex FF,FF,FF,FF,FF,FF,FF,FF,FF,0F
|
||||||
hex 0F,0F,0F,00,00,0F,0F,0F,00,00
|
hex 0F,0F,0F,00,00,0F,0F,0F,00,00
|
||||||
|
|
||||||
** y=line a=height x=col
|
** y=line a=height x=col
|
||||||
UndrawBird lda BIRD_Y_OLD
|
UndrawBird lda BIRD_Y_OLD
|
||||||
lsr
|
lsr
|
||||||
tay
|
tay
|
||||||
bne :oddBird
|
bne :oddBird
|
||||||
:evenBird lda #3
|
:evenBird lda #3
|
||||||
bne :continue
|
bne :continue
|
||||||
:oddBird lda #4
|
:oddBird lda #4
|
||||||
:continue ldx #BIRD_X
|
:continue ldx #BIRD_X
|
||||||
cmp #4
|
cmp #4
|
||||||
beq :undraw4
|
beq :undraw4
|
||||||
:undraw3 lda LoLineTableL,y
|
:undraw3 lda LoLineTableL,y
|
||||||
sta SPRITE_SCREEN_P
|
sta SPRITE_SCREEN_P
|
||||||
lda LoLineTableH,y
|
lda LoLineTableH,y
|
||||||
sta SPRITE_SCREEN_P+1
|
sta SPRITE_SCREEN_P+1
|
||||||
lda LoLineTableL+1,y
|
lda LoLineTableL+1,y
|
||||||
sta SPRITE_SCREEN_P2
|
sta SPRITE_SCREEN_P2
|
||||||
lda LoLineTableH+1,y
|
lda LoLineTableH+1,y
|
||||||
sta SPRITE_SCREEN_P2+1
|
sta SPRITE_SCREEN_P2+1
|
||||||
lda LoLineTableL+2,y
|
lda LoLineTableL+2,y
|
||||||
sta SPRITE_SCREEN_P3
|
sta SPRITE_SCREEN_P3
|
||||||
lda LoLineTableH+2,y
|
lda LoLineTableH+2,y
|
||||||
sta SPRITE_SCREEN_P3+1
|
sta SPRITE_SCREEN_P3+1
|
||||||
|
|
||||||
txa
|
txa
|
||||||
pha ; stash
|
pha ; stash
|
||||||
tay ; COL offset
|
tay ; COL offset
|
||||||
sta TXTPAGE2
|
sta TXTPAGE2
|
||||||
lda #BGCOLORAUX
|
lda #BGCOLORAUX
|
||||||
:wipe1 sta (SPRITE_SCREEN_P),y
|
:wipe1 sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
:wipe1b sta (SPRITE_SCREEN_P),y
|
:wipe1b sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
:wipe1c sta (SPRITE_SCREEN_P),y
|
:wipe1c sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
:wipe1d sta (SPRITE_SCREEN_P),y
|
:wipe1d sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
:wipe1e sta (SPRITE_SCREEN_P),y
|
:wipe1e sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
|
|
||||||
pla ; unstash
|
pla ; unstash
|
||||||
tay
|
tay
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
lda #BGCOLOR
|
lda #BGCOLOR
|
||||||
:wipe2 sta (SPRITE_SCREEN_P),y
|
:wipe2 sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
|
|
||||||
:wipe2b sta (SPRITE_SCREEN_P),y
|
:wipe2b sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
:wipe2c sta (SPRITE_SCREEN_P),y
|
:wipe2c sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
:wipe2d sta (SPRITE_SCREEN_P),y
|
:wipe2d sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
iny
|
iny
|
||||||
:wipe2e sta (SPRITE_SCREEN_P),y
|
:wipe2e sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
:undraw4 lda LoLineTableL,y
|
:undraw4 lda LoLineTableL,y
|
||||||
sta SPRITE_SCREEN_P
|
sta SPRITE_SCREEN_P
|
||||||
lda LoLineTableH,y
|
lda LoLineTableH,y
|
||||||
sta SPRITE_SCREEN_P+1
|
sta SPRITE_SCREEN_P+1
|
||||||
lda LoLineTableL+1,y
|
lda LoLineTableL+1,y
|
||||||
sta SPRITE_SCREEN_P2
|
sta SPRITE_SCREEN_P2
|
||||||
lda LoLineTableH+1,y
|
lda LoLineTableH+1,y
|
||||||
sta SPRITE_SCREEN_P2+1
|
sta SPRITE_SCREEN_P2+1
|
||||||
lda LoLineTableL+2,y
|
lda LoLineTableL+2,y
|
||||||
sta SPRITE_SCREEN_P3
|
sta SPRITE_SCREEN_P3
|
||||||
lda LoLineTableH+2,y
|
lda LoLineTableH+2,y
|
||||||
sta SPRITE_SCREEN_P3+1
|
sta SPRITE_SCREEN_P3+1
|
||||||
lda LoLineTableL+3,y
|
lda LoLineTableL+3,y
|
||||||
sta SPRITE_SCREEN_P4
|
sta SPRITE_SCREEN_P4
|
||||||
lda LoLineTableH+3,y
|
lda LoLineTableH+3,y
|
||||||
sta SPRITE_SCREEN_P4+1
|
sta SPRITE_SCREEN_P4+1
|
||||||
|
|
||||||
txa
|
txa
|
||||||
pha ; stash
|
pha ; stash
|
||||||
tay ; COL offset
|
tay ; COL offset
|
||||||
sta TXTPAGE2
|
sta TXTPAGE2
|
||||||
lda #BGCOLORAUX
|
lda #BGCOLORAUX
|
||||||
:wipe3 sta (SPRITE_SCREEN_P),y
|
:wipe3 sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe3b sta (SPRITE_SCREEN_P),y
|
:wipe3b sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe3c sta (SPRITE_SCREEN_P),y
|
:wipe3c sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe3d sta (SPRITE_SCREEN_P),y
|
:wipe3d sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe3e sta (SPRITE_SCREEN_P),y
|
:wipe3e sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
|
|
||||||
pla ; unstash
|
pla ; unstash
|
||||||
tay
|
tay
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
lda #BGCOLOR
|
lda #BGCOLOR
|
||||||
:wipe4 sta (SPRITE_SCREEN_P),y
|
:wipe4 sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe4b sta (SPRITE_SCREEN_P),y
|
:wipe4b sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe4c sta (SPRITE_SCREEN_P),y
|
:wipe4c sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe4d sta (SPRITE_SCREEN_P),y
|
:wipe4d sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
iny
|
iny
|
||||||
:wipe4e sta (SPRITE_SCREEN_P),y
|
:wipe4e sta (SPRITE_SCREEN_P),y
|
||||||
sta (SPRITE_SCREEN_P2),y
|
sta (SPRITE_SCREEN_P2),y
|
||||||
sta (SPRITE_SCREEN_P3),y
|
sta (SPRITE_SCREEN_P3),y
|
||||||
sta (SPRITE_SCREEN_P4),y
|
sta (SPRITE_SCREEN_P4),y
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawBird
|
DrawBird
|
||||||
lda BIRD_Y
|
lda BIRD_Y
|
||||||
lsr
|
lsr
|
||||||
bcs :oddHeight
|
bcs :oddHeight
|
||||||
:evenHeight
|
:evenHeight
|
||||||
sta SPRITE_Y
|
sta SPRITE_Y
|
||||||
lda #3
|
lda #3
|
||||||
sta SPRITE_H
|
sta SPRITE_H
|
||||||
lda BIRD_FLAP
|
lda BIRD_FLAP
|
||||||
beq :flapDownEven
|
beq :flapDownEven
|
||||||
:flapUpEven CopyPtr BIRD_WUP_E_PIXEL;SPRITE_DATA_P
|
:flapUpEven CopyPtr BIRD_WUP_E_PIXEL;SPRITE_DATA_P
|
||||||
CopyPtr BIRD_WUP_E_MASK;SPRITE_MASK_P
|
CopyPtr BIRD_WUP_E_MASK;SPRITE_MASK_P
|
||||||
CopyPtr BIRD_WUP_E_IMASK;SPRITE_IMASK_P
|
CopyPtr BIRD_WUP_E_IMASK;SPRITE_IMASK_P
|
||||||
jmp :drawSprite
|
jmp :drawSprite
|
||||||
:flapDownEven CopyPtr BIRD_WDN_E_PIXEL;SPRITE_DATA_P
|
:flapDownEven CopyPtr BIRD_WDN_E_PIXEL;SPRITE_DATA_P
|
||||||
CopyPtr BIRD_WDN_E_MASK;SPRITE_MASK_P
|
CopyPtr BIRD_WDN_E_MASK;SPRITE_MASK_P
|
||||||
CopyPtr BIRD_WDN_E_IMASK;SPRITE_IMASK_P
|
CopyPtr BIRD_WDN_E_IMASK;SPRITE_IMASK_P
|
||||||
jmp :drawSprite
|
jmp :drawSprite
|
||||||
|
|
||||||
:oddHeight
|
:oddHeight
|
||||||
sta SPRITE_Y
|
sta SPRITE_Y
|
||||||
lda #4
|
lda #4
|
||||||
sta SPRITE_H
|
sta SPRITE_H
|
||||||
lda BIRD_FLAP
|
lda BIRD_FLAP
|
||||||
beq :flapDownOdd
|
beq :flapDownOdd
|
||||||
:flapUpOdd CopyPtr BIRD_WUP_O_PIXEL;SPRITE_DATA_P
|
:flapUpOdd CopyPtr BIRD_WUP_O_PIXEL;SPRITE_DATA_P
|
||||||
CopyPtr BIRD_WUP_O_MASK;SPRITE_MASK_P
|
CopyPtr BIRD_WUP_O_MASK;SPRITE_MASK_P
|
||||||
CopyPtr BIRD_WUP_O_IMASK;SPRITE_IMASK_P
|
CopyPtr BIRD_WUP_O_IMASK;SPRITE_IMASK_P
|
||||||
jmp :drawSprite
|
jmp :drawSprite
|
||||||
:flapDownOdd CopyPtr BIRD_WDN_O_PIXEL;SPRITE_DATA_P
|
:flapDownOdd CopyPtr BIRD_WDN_O_PIXEL;SPRITE_DATA_P
|
||||||
CopyPtr BIRD_WDN_O_MASK;SPRITE_MASK_P
|
CopyPtr BIRD_WDN_O_MASK;SPRITE_MASK_P
|
||||||
CopyPtr BIRD_WDN_O_IMASK;SPRITE_IMASK_P
|
CopyPtr BIRD_WDN_O_IMASK;SPRITE_IMASK_P
|
||||||
jmp :drawSprite
|
jmp :drawSprite
|
||||||
:drawSprite
|
:drawSprite
|
||||||
jsr DrawSpriteBetter
|
jsr DrawSpriteBetter
|
||||||
rts
|
rts
|
||||||
|
|
||||||
* still does collision
|
* still does collision
|
||||||
DrawSpriteBetter
|
DrawSpriteBetter
|
||||||
lda #0
|
lda #0
|
||||||
sta SPRITE_X_IDX
|
sta SPRITE_X_IDX
|
||||||
:drawLine lda SPRITE_Y ;
|
:drawLine lda SPRITE_Y ;
|
||||||
tay
|
tay
|
||||||
lda LoLineTableL,y ; SET SCREEN LINE
|
lda LoLineTableL,y ; SET SCREEN LINE
|
||||||
sta SPRITE_SCREEN_P
|
sta SPRITE_SCREEN_P
|
||||||
lda LoLineTableH,y
|
lda LoLineTableH,y
|
||||||
sta SPRITE_SCREEN_P+1
|
sta SPRITE_SCREEN_P+1
|
||||||
|
|
||||||
lda #BIRD_X ;SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION
|
lda #BIRD_X ;SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION
|
||||||
clc ; I think the highest position is $f8
|
clc ; I think the highest position is $f8
|
||||||
adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8
|
adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8
|
||||||
sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY?
|
sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY?
|
||||||
|
|
||||||
|
|
||||||
jmp DrawSpriteLineC
|
jmp DrawSpriteLineC
|
||||||
]DSLCD_done
|
]DSLCD_done
|
||||||
inc SPRITE_Y
|
inc SPRITE_Y
|
||||||
dec SPRITE_H
|
dec SPRITE_H
|
||||||
lda SPRITE_H
|
lda SPRITE_H
|
||||||
bne :drawLine
|
bne :drawLine
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
DrawSpriteLineC
|
DrawSpriteLineC
|
||||||
; EVEN COLS
|
; EVEN COLS
|
||||||
DD_EVEN lda #0
|
DD_EVEN lda #0
|
||||||
sta SPRITE_SCREEN_IDX
|
sta SPRITE_SCREEN_IDX
|
||||||
sta TXTPAGE2
|
sta TXTPAGE2
|
||||||
|
|
||||||
:lineLoop
|
:lineLoop
|
||||||
|
|
||||||
:collisionCheckDrawer
|
:collisionCheckDrawer
|
||||||
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
||||||
lda (SPRITE_SCREEN_P),y
|
lda (SPRITE_SCREEN_P),y
|
||||||
|
|
||||||
ldy SPRITE_X_IDX ; PREP Y INDEX
|
ldy SPRITE_X_IDX ; PREP Y INDEX
|
||||||
cmp #BGCOLORAUX ; AUX BGCOLOR @TODO
|
cmp #BGCOLORAUX ; AUX BGCOLOR @TODO
|
||||||
beq :noCollisionSIMPLE
|
beq :noCollisionSIMPLE
|
||||||
pha ; SAVE -> STACK
|
pha ; SAVE -> STACK
|
||||||
and (SPRITE_IMASK_P),y
|
and (SPRITE_IMASK_P),y
|
||||||
cmp #BGCOLORAUX_0LO
|
cmp #BGCOLORAUX_0LO
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
cmp #BGCOLORAUX_0HI
|
cmp #BGCOLORAUX_0HI
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
lda #1
|
lda #1
|
||||||
sta SPRITE_COLLISION
|
sta SPRITE_COLLISION
|
||||||
:noCollision
|
:noCollision
|
||||||
:doPixels pla ; Y=SPRITE X A=BG DATA
|
:doPixels pla ; Y=SPRITE X A=BG DATA
|
||||||
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
||||||
ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA
|
ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
sta (SPRITE_SCREEN_P),y
|
sta (SPRITE_SCREEN_P),y
|
||||||
sec
|
sec
|
||||||
bcs :donePixel
|
bcs :donePixel
|
||||||
|
|
||||||
:noCollisionSIMPLE
|
:noCollisionSIMPLE
|
||||||
lda (SPRITE_DATA_P),y
|
lda (SPRITE_DATA_P),y
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
sta (SPRITE_SCREEN_P),y
|
sta (SPRITE_SCREEN_P),y
|
||||||
|
|
||||||
|
|
||||||
:donePixel inc SPRITE_X_IDX
|
:donePixel inc SPRITE_X_IDX
|
||||||
inc SPRITE_SCREEN_IDX
|
inc SPRITE_SCREEN_IDX
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
cpy SPRITE_W
|
cpy SPRITE_W
|
||||||
bcc :lineLoop
|
bcc :lineLoop
|
||||||
|
|
||||||
DD_ODD
|
DD_ODD
|
||||||
; ODD COLS
|
; ODD COLS
|
||||||
lda #0
|
lda #0
|
||||||
sta SPRITE_SCREEN_IDX
|
sta SPRITE_SCREEN_IDX
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
|
|
||||||
:lineLoop ;ldy SPRITE_X_IDX ;
|
|
||||||
;lda (SPRITE_IMASK_P),y
|
|
||||||
;beq :noPixel
|
|
||||||
|
|
||||||
|
:lineLoop
|
||||||
:collisionCheckDrawer
|
:collisionCheckDrawer
|
||||||
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
||||||
lda (SPRITE_SCREEN_P),y
|
lda (SPRITE_SCREEN_P),y
|
||||||
ldy SPRITE_X_IDX ; PREP Y INDEX
|
ldy SPRITE_X_IDX ; PREP Y INDEX
|
||||||
cmp #BGCOLOR ; MAIN BGCOLOR @TODO
|
cmp #BGCOLOR ; MAIN BGCOLOR @TODO
|
||||||
beq :noCollisionSIMPLE
|
beq :noCollisionSIMPLE
|
||||||
pha ; SAVE -> STACK
|
pha ; SAVE -> STACK
|
||||||
and (SPRITE_IMASK_P),y
|
and (SPRITE_IMASK_P),y
|
||||||
cmp #BGCOLOR_0LO
|
cmp #BGCOLOR_0LO
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
cmp #BGCOLOR_0HI
|
cmp #BGCOLOR_0HI
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
lda #1
|
lda #1
|
||||||
sta SPRITE_COLLISION
|
sta SPRITE_COLLISION
|
||||||
|
|
||||||
:noCollision
|
:noCollision
|
||||||
:doPixels pla ; Y=SPRITE X A=BG DATA
|
:doPixels pla ; Y=SPRITE X A=BG DATA
|
||||||
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
||||||
ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA
|
ora (SPRITE_DATA_P),y ; OVERLAY OUR SPRITE DATA
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
sta (SPRITE_SCREEN_P),y
|
sta (SPRITE_SCREEN_P),y
|
||||||
sec
|
sec
|
||||||
bcs :donePixel
|
bcs :donePixel
|
||||||
|
|
||||||
:noCollisionSIMPLE
|
:noCollisionSIMPLE
|
||||||
lda (SPRITE_DATA_P),y
|
lda (SPRITE_DATA_P),y
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
sta (SPRITE_SCREEN_P),y
|
sta (SPRITE_SCREEN_P),y
|
||||||
|
|
||||||
|
|
||||||
:donePixel inc SPRITE_X_IDX
|
:donePixel inc SPRITE_X_IDX
|
||||||
inc SPRITE_SCREEN_IDX
|
inc SPRITE_SCREEN_IDX
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
cpy SPRITE_W
|
cpy SPRITE_W
|
||||||
bcc :lineLoop
|
bcc :lineLoop
|
||||||
|
|
||||||
jmp ]DSLCD_done
|
jmp ]DSLCD_done
|
||||||
|
|
1630
src/dlrlib.s
1630
src/dlrlib.s
File diff suppressed because it is too large
Load Diff
346
src/numbers.s
346
src/numbers.s
|
@ -2,192 +2,192 @@
|
||||||
* Well... optimized number drawing because, why not
|
* Well... optimized number drawing because, why not
|
||||||
****
|
****
|
||||||
|
|
||||||
BB equ #$00
|
BB equ #$00
|
||||||
BW equ #$F0
|
BW equ #$F0
|
||||||
WB equ #$0F
|
WB equ #$0F
|
||||||
WW equ #$FF
|
WW equ #$FF
|
||||||
|
|
||||||
DrawNum_Table da DrawNum_0
|
DrawNum_Table da DrawNum_0
|
||||||
da DrawNum_1
|
da DrawNum_1
|
||||||
da DrawNum_2
|
da DrawNum_2
|
||||||
da DrawNum_3
|
da DrawNum_3
|
||||||
da DrawNum_4
|
da DrawNum_4
|
||||||
da DrawNum_5
|
da DrawNum_5
|
||||||
da DrawNum_6
|
da DrawNum_6
|
||||||
da DrawNum_7
|
da DrawNum_7
|
||||||
da DrawNum_8
|
da DrawNum_8
|
||||||
da DrawNum_9
|
da DrawNum_9
|
||||||
|
|
||||||
* y = x, a=val (0-9)
|
* y = x, a=val (0-9)
|
||||||
DrawNum
|
DrawNum
|
||||||
asl
|
asl
|
||||||
tax
|
tax
|
||||||
lda DrawNum_Table,x
|
lda DrawNum_Table,x
|
||||||
sta :jsrPtr+1
|
sta :jsrPtr+1
|
||||||
lda DrawNum_Table+1,x
|
lda DrawNum_Table+1,x
|
||||||
sta :jsrPtr+2
|
sta :jsrPtr+2
|
||||||
tya
|
tya
|
||||||
tax
|
tax
|
||||||
:jsrPtr jsr DrawNum_0
|
:jsrPtr jsr DrawNum_0
|
||||||
rts
|
rts
|
||||||
|
|
||||||
* x = x offset (even cols) 0-40
|
* x = x offset (even cols) 0-40
|
||||||
DrawNum_0 sta TXTPAGE2
|
DrawNum_0 sta TXTPAGE2
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,X
|
sta Lo02+1,X
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_1 sta TXTPAGE2
|
DrawNum_1 sta TXTPAGE2
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_2 sta TXTPAGE2
|
DrawNum_2 sta TXTPAGE2
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_3 sta TXTPAGE2
|
DrawNum_3 sta TXTPAGE2
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_4 sta TXTPAGE2
|
DrawNum_4 sta TXTPAGE2
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_5 sta TXTPAGE2
|
DrawNum_5 sta TXTPAGE2
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_6 sta TXTPAGE2
|
DrawNum_6 sta TXTPAGE2
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_7 sta TXTPAGE2
|
DrawNum_7 sta TXTPAGE2
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_8 sta TXTPAGE2
|
DrawNum_8 sta TXTPAGE2
|
||||||
lda #WB
|
lda #WB
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo02,X
|
sta Lo02,X
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DrawNum_9 sta TXTPAGE2
|
DrawNum_9 sta TXTPAGE2
|
||||||
lda #BB
|
lda #BB
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
lda #BW
|
lda #BW
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
sta Lo01,x
|
sta Lo01,x
|
||||||
sta Lo02,x
|
sta Lo02,x
|
||||||
lda #WW
|
lda #WW
|
||||||
sta Lo01+1,x
|
sta Lo01+1,x
|
||||||
sta Lo02+1,x
|
sta Lo02+1,x
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
2488
src/pipes.s
2488
src/pipes.s
File diff suppressed because it is too large
Load Diff
38
src/readme.s
38
src/readme.s
|
@ -3,25 +3,27 @@
|
||||||
*
|
*
|
||||||
* Flapple Bird - A de-make of Flappy Bird for the Apple II computer
|
* Flapple Bird - A de-make of Flappy Bird for the Apple II computer
|
||||||
*
|
*
|
||||||
* More information about this project is available at
|
* # Download releases here:
|
||||||
* http://dagenbrock.com/flappy
|
* https://github.com/digarok/flapple/releases
|
||||||
*
|
*
|
||||||
* How to run
|
* # How to run
|
||||||
* ==========
|
* You can download either disk image and run it with an emulator like GSplus
|
||||||
* You can download either disk image and run it with an emulator
|
* or transfer to the respective media and run on a real machine (recommended).
|
||||||
* or transfer it to the respective media and run it on a real
|
* - `flapple800.po` is the 3.5" ProDOS disk version (800KB)
|
||||||
* machine (recommended).
|
* - `flapple140.po` is the 5.25" ProDOS disk version (140KB)
|
||||||
* The 3.5" ProDOS disk version is "flapple800.po", and the
|
|
||||||
* 5.25" ProDOS disk version is "flapple140.po".
|
|
||||||
*
|
*
|
||||||
* How to build
|
* 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.
|
||||||
* This is written to compile on Merlin 8/16, but I believe should
|
* To run it, quit game with the `q` key, and from the ProDOS selector menu
|
||||||
* work with all later Merlin variants. Load Merlin, then 'L'oad
|
* run `fmono.system`.
|
||||||
* the file "flapple.s", finally hit OpenApple-A to assemble and
|
|
||||||
* it should build the "flap.system" file.
|
|
||||||
*
|
*
|
||||||
|
* # 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/).
|
||||||
*
|
*
|
||||||
*
|
* - Classic Merlin16+ on an Apple IIgs
|
||||||
* Again, more information about this project is available at
|
* - Load Merlin, then `L`oad the file "flapple.s", finally hit OpenApple-A to assemble and it should build the "flap.system" file.
|
||||||
* http://dagenbrock.com/flappy
|
* - 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.
|
||||||
|
|
226
src/sprite.s
226
src/sprite.s
|
@ -1,144 +1,144 @@
|
||||||
SPRITE_X db 0
|
SPRITE_X db 0
|
||||||
SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry
|
SPRITE_Y db 0 ; BYTE,not pixel. gotta be, sorry
|
||||||
SPRITE_W db 0
|
SPRITE_W db 0
|
||||||
SPRITE_W_D2 db 0
|
SPRITE_W_D2 db 0
|
||||||
SPRITE_H db 0 ; <- in bytes
|
SPRITE_H db 0 ; <- in bytes
|
||||||
|
|
||||||
SPRITE_MAIN da 0
|
SPRITE_MAIN da 0
|
||||||
SPRITE_AUX da 0
|
SPRITE_AUX da 0
|
||||||
SPRITE_MASK da 0
|
SPRITE_MASK da 0
|
||||||
SPRITE_IMASK da 0
|
SPRITE_IMASK da 0
|
||||||
SPRITE_COLLISION db 0
|
SPRITE_COLLISION db 0
|
||||||
SPRITE_Y_IDX dw 0
|
SPRITE_Y_IDX dw 0
|
||||||
SPRITE_X_IDX dw 0
|
SPRITE_X_IDX dw 0
|
||||||
|
|
||||||
SPRITE_SCREEN_P equz $00
|
SPRITE_SCREEN_P equz $00
|
||||||
SPRITE_MAIN_P equz $02
|
SPRITE_MAIN_P equz $02
|
||||||
SPRITE_SCREEN_P2 equz $02
|
SPRITE_SCREEN_P2 equz $02
|
||||||
SPRITE_AUX_P equz $04
|
SPRITE_AUX_P equz $04
|
||||||
SPRITE_SCREEN_P3 equz $04
|
SPRITE_SCREEN_P3 equz $04
|
||||||
SPRITE_MASK_P equz $FA
|
SPRITE_MASK_P equz $FA
|
||||||
SPRITE_SCREEN_P4 equz $FA
|
SPRITE_SCREEN_P4 equz $FA
|
||||||
SPRITE_IMASK_P equz $FC
|
SPRITE_IMASK_P equz $FC
|
||||||
|
|
||||||
SPRITE_SCREEN_IDX db #$0
|
SPRITE_SCREEN_IDX db #$0
|
||||||
AUX_BG_COLOR db #$BB
|
AUX_BG_COLOR db #$BB
|
||||||
MAIN_BG_COLOR db #$77
|
MAIN_BG_COLOR db #$77
|
||||||
|
|
||||||
* still does collision
|
* still does collision
|
||||||
DrawSpriteBetter
|
DrawSpriteBetter
|
||||||
lda #0
|
lda #0
|
||||||
sta SPRITE_X_IDX
|
sta SPRITE_X_IDX
|
||||||
:drawLine lda SPRITE_Y ;
|
:drawLine lda SPRITE_Y ;
|
||||||
tay
|
tay
|
||||||
lda LoLineTableL,y ; SET SCREEN LINE
|
lda LoLineTableL,y ; SET SCREEN LINE
|
||||||
sta SPRITE_SCREEN_P
|
sta SPRITE_SCREEN_P
|
||||||
lda LoLineTableH,y
|
lda LoLineTableH,y
|
||||||
sta SPRITE_SCREEN_P+1
|
sta SPRITE_SCREEN_P+1
|
||||||
|
|
||||||
lda SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION
|
lda SPRITE_X ; ADD IN X OFFSET TO SCREEN POSITION
|
||||||
clc ; I think the highest position is $f8
|
clc ; I think the highest position is $f8
|
||||||
adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8
|
adc SPRITE_SCREEN_P ; eg- Line 18, col 40= $4f8
|
||||||
sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY?
|
sta SPRITE_SCREEN_P ; SHOULD NEVER CARRY?
|
||||||
|
|
||||||
|
|
||||||
jmp DrawSpriteLineC
|
jmp DrawSpriteLineC
|
||||||
]DSLCD_done
|
]DSLCD_done
|
||||||
inc SPRITE_Y
|
inc SPRITE_Y
|
||||||
dec SPRITE_H
|
dec SPRITE_H
|
||||||
lda SPRITE_H
|
lda SPRITE_H
|
||||||
bne :drawLine
|
bne :drawLine
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
DrawSpriteLineC
|
DrawSpriteLineC
|
||||||
; EVEN COLS
|
; EVEN COLS
|
||||||
DD_EVEN lda #0
|
DD_EVEN lda #0
|
||||||
sta SPRITE_SCREEN_IDX
|
sta SPRITE_SCREEN_IDX
|
||||||
sta TXTPAGE2
|
sta TXTPAGE2
|
||||||
|
|
||||||
:lineLoop
|
:lineLoop
|
||||||
;ldy SPRITE_X_IDX ;
|
;ldy SPRITE_X_IDX ;
|
||||||
;lda (SPRITE_IMASK_P),y
|
;lda (SPRITE_IMASK_P),y
|
||||||
;beq :noPixel
|
;beq :noPixel
|
||||||
|
|
||||||
:collisionCheckDrawer
|
:collisionCheckDrawer
|
||||||
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
||||||
lda (SPRITE_SCREEN_P),y
|
lda (SPRITE_SCREEN_P),y
|
||||||
pha ; SAVE -> STACK
|
pha ; SAVE -> STACK
|
||||||
ldy SPRITE_X_IDX ; PREP Y INDEX
|
ldy SPRITE_X_IDX ; PREP Y INDEX
|
||||||
cmp #$BB ; AUX BGCOLOR @TODO
|
cmp #$BB ; AUX BGCOLOR @TODO
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
and (SPRITE_IMASK_P),y
|
and (SPRITE_IMASK_P),y
|
||||||
cmp #$B0
|
cmp #$B0
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
cmp #$0B
|
cmp #$0B
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
lda #1
|
lda #1
|
||||||
sta SPRITE_COLLISION
|
sta SPRITE_COLLISION
|
||||||
sta $c034
|
sta $c034
|
||||||
|
|
||||||
:noCollision
|
:noCollision
|
||||||
:doPixels pla ; Y=SPRITE X A=BG DATA
|
:doPixels pla ; Y=SPRITE X A=BG DATA
|
||||||
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
||||||
ora (SPRITE_AUX_P),y ; OVERLAY OUR SPRITE DATA
|
ora (SPRITE_AUX_P),y ; OVERLAY OUR SPRITE DATA
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
sta (SPRITE_SCREEN_P),y
|
sta (SPRITE_SCREEN_P),y
|
||||||
|
|
||||||
:noPixel inc SPRITE_X_IDX
|
:noPixel inc SPRITE_X_IDX
|
||||||
inc SPRITE_X_IDX
|
inc SPRITE_X_IDX
|
||||||
inc SPRITE_SCREEN_IDX
|
inc SPRITE_SCREEN_IDX
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
cpy SPRITE_W
|
cpy SPRITE_W
|
||||||
bcc :lineLoop
|
bcc :lineLoop
|
||||||
|
|
||||||
DD_ODD
|
DD_ODD
|
||||||
; ODD COLS
|
; ODD COLS
|
||||||
inc SPRITE_X_IDX ; + 1 column offset
|
inc SPRITE_X_IDX ; + 1 column offset
|
||||||
lda SPRITE_X_IDX
|
lda SPRITE_X_IDX
|
||||||
sec
|
sec
|
||||||
sbc SPRITE_W ; RESET DATA PTR
|
sbc SPRITE_W ; RESET DATA PTR
|
||||||
sbc SPRITE_W ; *2 due to pixel skip
|
sbc SPRITE_W ; *2 due to pixel skip
|
||||||
sta SPRITE_X_IDX
|
sta SPRITE_X_IDX
|
||||||
lda #0
|
lda #0
|
||||||
sta SPRITE_SCREEN_IDX
|
sta SPRITE_SCREEN_IDX
|
||||||
sta TXTPAGE1
|
sta TXTPAGE1
|
||||||
|
|
||||||
:lineLoop ;ldy SPRITE_X_IDX ;
|
:lineLoop ;ldy SPRITE_X_IDX ;
|
||||||
;lda (SPRITE_IMASK_P),y
|
;lda (SPRITE_IMASK_P),y
|
||||||
;beq :noPixel
|
;beq :noPixel
|
||||||
|
|
||||||
:collisionCheckDrawer
|
:collisionCheckDrawer
|
||||||
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
ldy SPRITE_SCREEN_IDX ; GET SCREEN PIXELS
|
||||||
lda (SPRITE_SCREEN_P),y
|
lda (SPRITE_SCREEN_P),y
|
||||||
pha ; SAVE -> STACK
|
pha ; SAVE -> STACK
|
||||||
ldy SPRITE_X_IDX ; PREP Y INDEX
|
ldy SPRITE_X_IDX ; PREP Y INDEX
|
||||||
cmp #$77 ; MAIN BGCOLOR @TODO
|
cmp #$77 ; MAIN BGCOLOR @TODO
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
and (SPRITE_IMASK_P),y
|
and (SPRITE_IMASK_P),y
|
||||||
cmp #$70
|
cmp #$70
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
cmp #$07
|
cmp #$07
|
||||||
beq :noCollision
|
beq :noCollision
|
||||||
lda #1
|
lda #1
|
||||||
sta SPRITE_COLLISION
|
sta SPRITE_COLLISION
|
||||||
sta $c034
|
sta $c034
|
||||||
|
|
||||||
:noCollision
|
:noCollision
|
||||||
:doPixels pla ; Y=SPRITE X A=BG DATA
|
:doPixels pla ; Y=SPRITE X A=BG DATA
|
||||||
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
and (SPRITE_MASK_P),y ; CUT OUT SPRITE IN BG DATA
|
||||||
ora (SPRITE_MAIN_P),y ; OVERLAY OUR SPRITE DATA
|
ora (SPRITE_MAIN_P),y ; OVERLAY OUR SPRITE DATA
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
sta (SPRITE_SCREEN_P),y
|
sta (SPRITE_SCREEN_P),y
|
||||||
|
|
||||||
:noPixel inc SPRITE_X_IDX
|
:noPixel inc SPRITE_X_IDX
|
||||||
inc SPRITE_X_IDX
|
inc SPRITE_X_IDX
|
||||||
inc SPRITE_SCREEN_IDX
|
inc SPRITE_SCREEN_IDX
|
||||||
ldy SPRITE_SCREEN_IDX
|
ldy SPRITE_SCREEN_IDX
|
||||||
cpy SPRITE_W
|
cpy SPRITE_W
|
||||||
bcc :lineLoop
|
bcc :lineLoop
|
||||||
dec SPRITE_X_IDX ; -1 column offset (for next row)
|
dec SPRITE_X_IDX ; -1 column offset (for next row)
|
||||||
|
|
||||||
jmp ]DSLCD_done
|
jmp ]DSLCD_done
|
||||||
|
|
||||||
|
|
||||||
|
|
64
src/util.s
64
src/util.s
|
@ -1,44 +1,44 @@
|
||||||
** Register preservation
|
** Register preservation
|
||||||
_sX dw 0
|
_sX dw 0
|
||||||
_sY dw 0
|
_sY dw 0
|
||||||
_sA dw 0
|
_sA dw 0
|
||||||
_storeReg sta _sA
|
_storeReg sta _sA
|
||||||
stx _sX
|
stx _sX
|
||||||
sty _sY
|
sty _sY
|
||||||
rts
|
rts
|
||||||
_loadReg lda _sA
|
_loadReg lda _sA
|
||||||
ldx _sX
|
ldx _sX
|
||||||
ldy _sY
|
ldy _sY
|
||||||
rts
|
rts
|
||||||
|
|
||||||
**************************************************
|
**************************************************
|
||||||
* Awesome PRNG thx to White Flame (aka David Holz)
|
* Awesome PRNG thx to White Flame (aka David Holz)
|
||||||
**************************************************
|
**************************************************
|
||||||
GetRand
|
GetRand
|
||||||
lda _randomByte
|
lda _randomByte
|
||||||
beq :doEor
|
beq :doEor
|
||||||
asl
|
asl
|
||||||
bcc :noEor
|
bcc :noEor
|
||||||
:doEor eor #$1d
|
:doEor eor #$1d
|
||||||
:noEor sta _randomByte
|
:noEor sta _randomByte
|
||||||
rts
|
rts
|
||||||
_randomByte db 0
|
_randomByte db 0
|
||||||
|
|
||||||
GetRandLow
|
GetRandLow
|
||||||
lda _randomByte2
|
lda _randomByte2
|
||||||
beq :doEor
|
beq :doEor
|
||||||
asl
|
asl
|
||||||
bcc :noEor
|
bcc :noEor
|
||||||
:doEor eor #$1d
|
:doEor eor #$1d
|
||||||
:noEor sta _randomByte2
|
:noEor sta _randomByte2
|
||||||
cmp #$80
|
cmp #$80
|
||||||
bcs :hot
|
bcs :hot
|
||||||
lda #$0
|
lda #$0
|
||||||
rts
|
rts
|
||||||
:hot lda #$04
|
:hot lda #$04
|
||||||
rts
|
rts
|
||||||
|
|
||||||
_randomByte2 db 0
|
_randomByte2 db 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user