loveduck: more work

This commit is contained in:
Vince Weaver 2023-02-08 20:24:22 -05:00
parent 59b27359eb
commit 6e4d96942e
3 changed files with 110 additions and 24 deletions

View File

@ -27,15 +27,15 @@ HELLO: hello.bas
submit: blue_flame.zip
blue_flame.zip: BLUE_FLAME blue_flame.dsk
blue_flame.zip: BF blue_flame.dsk
mkdir -p lovebyte2023_blue_flame
mkdir -p lovebyte2023_blue_flame/src
cp BLUE_FLAME ./lovebyte2023_blue_flame
cp BF ./lovebyte2023_blue_flame
cp *.s ./lovebyte2023_blue_flame/src
cp *.inc ./lovebyte2023_blue_flame/src
cp file_id.diz ./lovebyte2023_blue_flame
cp blue_flame.dsk ./lovebyte2023_blue_flame
cp blue_flame.mp4 ./lovebyte2023_blue_flame
cp blue_flame_720p.mp4 ./lovebyte2023_blue_flame
cp blue_flame_screen.png ./lovebyte2023_blue_flame
zip -r blue_flame.zip lovebyte2023_blue_flame

View File

@ -7,17 +7,45 @@ PICTUREDSK = ~/research/picturedsk.git/picturedsk
LINKER_SCRIPTS = ../../../linker_scripts/
ZX02 = ~/research/6502_compression/zx02.git/build/zx02
all: love_duck.dsk
all: love_duck.dsk love_duck.woz love_duck_raw.dsk
###
love_duck.dsk: HELLO LOVE_DUCK
cp $(EMPTYDISK) love_duck.dsk
$(DOS33) -y love_duck.dsk SAVE A HELLO
$(DOS33) -y love_duck.dsk BSAVE -a 0xc00 LOVE_DUCK
love_duck.dsk: LD
# 0, 7, 14, 6, 13, 5, 12, 4, 11, 3, 10, 2, 9, 1, 8, 15
dd if=/dev/zero of=love_duck.dsk bs=256 count=560
dd conv=notrunc if=LD of=love_duck.dsk bs=256 count=1
dd conv=notrunc if=LD of=love_duck.dsk bs=256 count=1 seek=7 skip=1
###
love_duck.woz: LD
$(PICTUREDSK) ./flux_image/duck.bmp love_duck.woz LD
###
love_duck_raw.dsk: HELLO LOVE_DUCK LD
cp $(EMPTYDISK) love_duck_raw.dsk
$(DOS33) -y love_duck_raw.dsk SAVE A HELLO
$(DOS33) -y love_duck_raw.dsk BSAVE -a 0x1000 LOVE_DUCK
###
LOVE_DUCK.ZX02: LOVE_DUCK
$(ZX02) -f LOVE_DUCK LOVE_DUCK.ZX02
LD: ld.o
ld65 -o LD ld.o -C $(LINKER_SCRIPTS)/apple2_800.inc
ld.o: ld.s zx02_small.s LOVE_DUCK.ZX02
ca65 -o ld.o ld.s -l ld.lst
###
HELLO: hello.bas
$(TOKENIZE) < hello.bas > HELLO
@ -41,7 +69,7 @@ love_duck.zip: LOVE_DUCK love_duck.dsk
####
LOVE_DUCK: love_duck.o
ld65 -o LOVE_DUCK love_duck.o -C $(LINKER_SCRIPTS)/apple2_c00.inc
ld65 -o LOVE_DUCK love_duck.o -C $(LINKER_SCRIPTS)/apple2_1000.inc
love_duck.o: love_duck.s speaker_beeps.s dsr_lores.s
ca65 -o love_duck.o love_duck.s -l love_duck.lst

View File

@ -57,7 +57,11 @@ XX = $FF
love_duck:
jsr dsr_rotate
; .byte 2 ; number of sectors to load
; lda $C088,X ; turn off drive motor
; jsr dsr_rotate
bit SET_GR ; switch to lo-res mode
@ -129,16 +133,16 @@ inner_loop:
; A=color
;====================
; draw the stars
; draw the hearts
;====================
lda #32 ; start from right to save a byte
;======================
; draw 8x8 bitmap star
;======================
;=======================
; draw 8x8 bitmap hearts
;=======================
; A is XPOS on entry
draw_star:
draw_heart:
; calculate YPOS
sta XPOS
@ -152,6 +156,65 @@ draw_star:
lda bounce,X
sta YPOS
lda #<heart_bitmap
sta sprite_smc+1
lda #$11 ; red
sta color_smc+1
jsr draw_sprite
lda XPOS ; move to next position
; going right to left saves 2 bytes for cmp
sec
sbc #16
; X is $FF here
; Y is $FF here
; A is -16 here
bpl draw_heart
;===============
; draw duck
lda #32
sta XPOS
lda #1
sta YPOS
lda #$44 ; green
sta color_smc+1
lda #<duck_bitmap_left
sta sprite_smc+1
jsr draw_sprite
lda #24
sta XPOS
lda #$99 ; orange
sta color_smc+1
lda #<duck_bitmap_left_beak
sta sprite_smc+1
jsr draw_sprite
jmp main_loop
; bmi main_loop ; bra
;===========================
; draw_sprite
;===========================
draw_sprite:
ldx #7 ; draw 7 lines
boxloop:
@ -180,6 +243,7 @@ boxloop:
ldy #7 ; 8-bits wide
sprite_smc:
lda bitmap,X ; get low bit of bitmap into carry
draw_line_loop:
lsr
@ -188,6 +252,7 @@ draw_line_loop:
bcc its_transparent
color_smc:
lda #$11 ; red
sta (GBASL),Y ; draw on screen
its_transparent:
@ -200,17 +265,10 @@ its_transparent:
dex
bpl boxloop
lda XPOS ; move to next position
; going right to left saves 2 bytes for cmp
sec
sbc #16
rts
; X is $FF here
; Y is $FF here
; A is -16 here
bpl draw_star
bmi main_loop