loveduck: add some sound

This commit is contained in:
Vince Weaver 2023-02-08 21:20:51 -05:00
parent 6e4d96942e
commit 123f76aa70
4 changed files with 67 additions and 16 deletions

View File

@ -40,7 +40,7 @@ LOVE_DUCK.ZX02: LOVE_DUCK
LD: ld.o
ld65 -o LD ld.o -C $(LINKER_SCRIPTS)/apple2_800.inc
ld.o: ld.s zx02_small.s LOVE_DUCK.ZX02
ld.o: ld.s LOVE_DUCK
ca65 -o ld.o ld.s -l ld.lst

View File

@ -2,6 +2,7 @@
; by deater (Vince Weaver) <vince@deater.net>
; 510h
dsr_rotate:
@ -26,7 +27,7 @@ dsr_rotate:
stx HGR_SCALE ; scale of drawings
;===================
; int tables
; init hgr tables
; lookup for HGR lines 0..47 stored in zero page
ldx #47
@ -41,6 +42,23 @@ init_loop:
dex
bpl init_loop
;===================
; init gr tables
; lookup for GR lines 0..23 stored in zero page
ldx #23
init_gr_loop:
txa
jsr GBASCALC
lda GBASL
sta gr_lookup_l,X
lda GBASH
sta gr_lookup_h,X
dex
bpl init_gr_loop
@ -86,10 +104,10 @@ lsier_outer:
lsr
tax
lda gr_offsets_l,X
lda gr_lookup_l,X
sta GBASL
lda gr_offsets_h,X
lda gr_lookup_h,X
clc
draw_page_smc:
adc #$0
@ -195,11 +213,8 @@ done_page:
; inc FRAMEH
;no_frame_oflo:
; lda FRAMEH
; cmp #2
lda FRAME
; bpl big_loop
cmp #66
beq done_this
@ -213,4 +228,3 @@ shape_dsr:
.byte $24,$ad,$22,$24,$94,$21,$2c,$4d
.byte $91,$3f,$36,$00
.include "gr_offsets.s"

View File

@ -0,0 +1,26 @@
; Wrapper to load loveduck high
;
; by deater (Vince Weaver) <vince@deater.net>
; the problem is the boot loader loads things to $800 by default
; that's lo-res page 2 which we want to use later
ld_start:
.byte 2 ; number of sectors to load
lda $C088,X ; turn off drive motor
ldy #0
loop1:
lda binary,Y
sta $1000,Y
lda binary+256,Y
sta $1000+256,Y
dey
bne loop1
jmp $1000 ; jump to entry pint
binary:
.incbin "LOVE_DUCK"

View File

@ -1,4 +1,4 @@
; bouncing hearts
; love duck + bouncing hearts
; by Vince `deater` Weaver <vince@deater.net>
; -- dSr--
@ -35,10 +35,8 @@ COLOR = $30
hgr_lookup_h = $40 ; $40-$70
hgr_lookup_l = $70 ; $70-$A0
YPOS = $56
XPOS = $57
PO = $58
gr_lookup_l = $A0 ; $A0-$B8
gr_lookup_h = $B8 ; $B8-$C0
HGR_X = $E0
HGR_Y = $E2
@ -47,6 +45,8 @@ HGR_HORIZ = $E5
HGR_PAGE = $E6
HGR_SCALE = $E7
YPOS = $F0
XPOS = $F1
ROTATION = $FA
FRAME = $FB
FRAMEH = $FC
@ -58,9 +58,6 @@ XX = $FF
love_duck:
; .byte 2 ; number of sectors to load
; lda $C088,X ; turn off drive motor
; jsr dsr_rotate
@ -101,6 +98,20 @@ page_smc:
no_color_cycle:
lda FRAME
and #$3
bne no_beep
; every 4th cycle beep
lda #NOTE_C3
sta speaker_frequency
lda #10
sta speaker_duration
jsr speaker_tone
; Y zero here?
no_beep:
lda #100 ; pause a bit
jsr WAIT