mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-10 08:54:51 +00:00
ds: music, but not working
This commit is contained in:
parent
bb605fe988
commit
827a2d3656
@ -51,7 +51,7 @@ musictest.o: musictest.s \
|
|||||||
zp.inc hardware.inc \
|
zp.inc hardware.inc \
|
||||||
appleII_intro.s font.s \
|
appleII_intro.s font.s \
|
||||||
pt3_lib_init.s pt3_lib_core.s pt3_lib_mockingboard.s \
|
pt3_lib_init.s pt3_lib_core.s pt3_lib_mockingboard.s \
|
||||||
pt3_lib_play_frame.s \
|
pt3_lib_play_frame.s pt3_lib_write_frame.s \
|
||||||
interrupt_handler.s \
|
interrupt_handler.s \
|
||||||
dya_space_demo2.pt3
|
dya_space_demo2.pt3
|
||||||
ca65 -o musictest.o musictest.s -l musictest.lst
|
ca65 -o musictest.o musictest.s -l musictest.lst
|
||||||
|
@ -159,9 +159,9 @@ page1_loop: ; delay 115+(7 loop)+4 (bit)+4(extra)
|
|||||||
; -1174
|
; -1174
|
||||||
; -7 (keypress)
|
; -7 (keypress)
|
||||||
; -3 (jump)
|
; -3 (jump)
|
||||||
; -1182 (play_music)
|
; -1186 (play_music)
|
||||||
; =====
|
; =====
|
||||||
; 2183
|
; 2179
|
||||||
|
|
||||||
jsr do_nothing ; 6
|
jsr do_nothing ; 6
|
||||||
|
|
||||||
@ -414,7 +414,7 @@ intro_wipe_done:
|
|||||||
no_keypress2:
|
no_keypress2:
|
||||||
|
|
||||||
|
|
||||||
jsr play_frame_compressed ; 6+1176
|
jsr play_frame_compressed ; 6+1180
|
||||||
|
|
||||||
jmp display_loop ; 3
|
jmp display_loop ; 3
|
||||||
|
|
||||||
@ -426,13 +426,13 @@ appleii_done:
|
|||||||
;=================================
|
;=================================
|
||||||
; do nothing
|
; do nothing
|
||||||
;=================================
|
;=================================
|
||||||
; and take 2183-12 = 2171 cycles to do it
|
; and take 2179-12 = 2167 cycles to do it
|
||||||
do_nothing:
|
do_nothing:
|
||||||
|
|
||||||
; Try X=5 Y=70 cycles=2171
|
; Try X=71 Y=6 cycles=2167
|
||||||
|
|
||||||
ldy #70 ; 2
|
ldy #6 ; 2
|
||||||
loop1: ldx #5 ; 2
|
loop1: ldx #71 ; 2
|
||||||
loop2: dex ; 2
|
loop2: dex ; 2
|
||||||
bne loop2 ; 2nt/3
|
bne loop2 ; 2nt/3
|
||||||
dey ; 2
|
dey ; 2
|
||||||
|
@ -23,6 +23,25 @@ demosplash2019:
|
|||||||
; generate 4 patterns worth of music
|
; generate 4 patterns worth of music
|
||||||
; at address $9000
|
; at address $9000
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta FRAME_PAGE
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta FRAME_OFFSET
|
||||||
|
|
||||||
|
frame_decode_loop:
|
||||||
|
jsr pt3_make_frame
|
||||||
|
|
||||||
|
jsr pt3_write_frame
|
||||||
|
|
||||||
|
inc FRAME_OFFSET
|
||||||
|
bne frame_decode_loop
|
||||||
|
|
||||||
|
inc FRAME_PAGE
|
||||||
|
lda FRAME_PAGE
|
||||||
|
cmp #5
|
||||||
|
bne frame_decode_loop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; lda #1
|
; lda #1
|
||||||
@ -142,6 +161,7 @@ wait_until_keypressed:
|
|||||||
.include "pt3_lib_mockingboard.s"
|
.include "pt3_lib_mockingboard.s"
|
||||||
.include "interrupt_handler.s"
|
.include "interrupt_handler.s"
|
||||||
.include "pt3_lib_play_frame.s"
|
.include "pt3_lib_play_frame.s"
|
||||||
|
.include "pt3_lib_write_frame.s"
|
||||||
|
|
||||||
PT3_LOC = song
|
PT3_LOC = song
|
||||||
|
|
||||||
|
@ -2,19 +2,19 @@
|
|||||||
|
|
||||||
|
|
||||||
;0 $9000,$9100,$9200 = A Low (reg0)
|
;0 $9000,$9100,$9200 = A Low (reg0)
|
||||||
;1 $9300,$9400,$9500 = A high (reg1) B high (reg3)
|
;1 $9300,$9400,$9500 = A high (reg1) [top], B high (reg3) [bottom]
|
||||||
;2 $9600,$9700,$9800 = B Low (reg2)
|
;2 $9600,$9700,$9800 = B Low (reg2)
|
||||||
;3 $9900,$9A00,$9B00 = C Low (reg4)
|
;3 $9900,$9A00,$9B00 = C Low (reg4)
|
||||||
;4 $9C00,$9D00,$9E00 = C high (reg5), Envelope Shape (r13)
|
;4 $9C00,$9D00,$9E00 = Envelope Shape (r13) [top], C high (reg5) [bot]
|
||||||
;5 $9F00,$A000,$A100 = Noise (r6), bit7 = don't change envelope
|
;5 $9F00,$A000,$A100 = Noise (r6), bit7 = don't change envelope
|
||||||
;6 $A200,$A300,$A400 = Enable (r7)
|
;6 $A200,$A300,$A400 = Enable (r7)
|
||||||
;7 $A500,$A600,$A700 = A amp (r8), bit 5 of r8,r9,r10
|
;7 $A500,$A600,$A700 = A amp (r8), bit 5 of r8,r9,r10
|
||||||
;8 $A800,$A900,$AA00 = B/C amp (r9/r10)
|
;8 $A800,$A900,$AA00 = C amp (r10) [top], B amp (r9) [bottom]
|
||||||
;9 $AB00,$AC00,$AD00 = ENV low (r11)
|
;9 $AB00,$AC00,$AD00 = ENV low (r11)
|
||||||
;a $AE00,$AF00,$B000 = ENV high (r12)
|
;a $AE00,$AF00,$B000 = ENV high (r12)
|
||||||
|
|
||||||
; 3+ 72 + 72 + 83 + 74 + 72 + 77 + 19 + 70 + 74 + 72 +
|
; 3+ 72 + 72 + 83 + 74 + 72 + 77 + 19 + 70 + 74 + 72 +
|
||||||
; 77 + 14 + 82 + 85 + 72 + 72 + 8 + 72 + 6 = 1176
|
; 77 + 18 + 82 + 85 + 72 + 72 + 8 + 72 + 6 = 1180
|
||||||
|
|
||||||
play_frame_compressed:
|
play_frame_compressed:
|
||||||
|
|
||||||
@ -132,14 +132,16 @@ r8_smc:
|
|||||||
; 77
|
; 77
|
||||||
|
|
||||||
pla ; 4
|
pla ; 4
|
||||||
|
and #$e0 ; 2
|
||||||
lsr ; 2
|
lsr ; 2
|
||||||
sta AY_REGISTERS ; 3
|
sta AY_REGISTERS ; 3
|
||||||
lsr ; 2
|
lsr ; 2
|
||||||
|
and #$10 ; 2
|
||||||
sta AY_REGISTERS+1 ; 3
|
sta AY_REGISTERS+1 ; 3
|
||||||
;====
|
;====
|
||||||
; 14
|
; 18
|
||||||
|
|
||||||
; Register 9: b-amp
|
; Register 9: b-amp (bottom)
|
||||||
ldx #9 ; 2
|
ldx #9 ; 2
|
||||||
r9_smc:
|
r9_smc:
|
||||||
lda $A800,Y ; 4+
|
lda $A800,Y ; 4+
|
||||||
@ -151,7 +153,7 @@ r9_smc:
|
|||||||
;=======
|
;=======
|
||||||
; 82
|
; 82
|
||||||
|
|
||||||
; Register 10: c-amp
|
; Register 10: c-amp (top)
|
||||||
ldx #10 ; 2
|
ldx #10 ; 2
|
||||||
pla ; 4
|
pla ; 4
|
||||||
lsr ; 2
|
lsr ; 2
|
||||||
|
186
demosplash/pt3_lib_write_frame.s
Normal file
186
demosplash/pt3_lib_write_frame.s
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
; ZZ points to offset from pointer
|
||||||
|
|
||||||
|
|
||||||
|
;0 $9000,$9100,$9200 = A Low (reg0)
|
||||||
|
;1 $9300,$9400,$9500 = A high (reg1) [top], B high (reg3) [bottom]
|
||||||
|
;2 $9600,$9700,$9800 = B Low (reg2)
|
||||||
|
;3 $9900,$9A00,$9B00 = C Low (reg4)
|
||||||
|
;4 $9C00,$9D00,$9E00 = Envelope Shape (r13) [top], C high (reg5) [bot]
|
||||||
|
;5 $9F00,$A000,$A100 = Noise (r6), bit7 = don't change envelope
|
||||||
|
;6 $A200,$A300,$A400 = Enable (r7)
|
||||||
|
;7 $A500,$A600,$A700 = A amp (r8), bit 5 of r8,r9,r10
|
||||||
|
;8 $A800,$A900,$AA00 = C amp (r10) [top], B amp (r9) [bottom]
|
||||||
|
;9 $AB00,$AC00,$AD00 = ENV low (r11)
|
||||||
|
;a $AE00,$AF00,$B000 = ENV high (r12)
|
||||||
|
|
||||||
|
|
||||||
|
pt3_write_frame:
|
||||||
|
|
||||||
|
ldy FRAME_OFFSET ; 3
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; Register 0: A fine
|
||||||
|
lda A_FINE_TONE
|
||||||
|
r0_wrsmc:
|
||||||
|
sta $9000,Y
|
||||||
|
|
||||||
|
;==========================
|
||||||
|
; Register 1/3: A/B coarse
|
||||||
|
lda A_COARSE_TONE
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
ora B_COARSE_TONE
|
||||||
|
r1_wrsmc:
|
||||||
|
sta $9300,Y
|
||||||
|
|
||||||
|
;====================
|
||||||
|
; Register 2: B fine
|
||||||
|
lda B_FINE_TONE
|
||||||
|
r2_wrsmc:
|
||||||
|
sta $9600,Y
|
||||||
|
|
||||||
|
;====================
|
||||||
|
; Register 3: B coarse already done
|
||||||
|
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; Register 4: C fine
|
||||||
|
lda C_FINE_TONE
|
||||||
|
r4_wrsmc:
|
||||||
|
sta $9900,Y
|
||||||
|
|
||||||
|
;=======================================
|
||||||
|
; Register 5: Envelope Shape [top] / C coarse [bottom]
|
||||||
|
lda C_COARSE_TONE
|
||||||
|
and #$f
|
||||||
|
sta C_COARSE_TONE
|
||||||
|
|
||||||
|
lda ENVELOPE_SHAPE
|
||||||
|
cmp #$ff
|
||||||
|
beq no_envelope
|
||||||
|
yes_envelope:
|
||||||
|
|
||||||
|
lda ENVELOPE_SHAPE
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
ora C_COARSE_TONE
|
||||||
|
sta C_COARSE_TONE
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta ENVELOPE_SHAPE
|
||||||
|
jmp done_envelope
|
||||||
|
no_envelope:
|
||||||
|
lda #$80
|
||||||
|
sta ENVELOPE_SHAPE
|
||||||
|
|
||||||
|
done_envelope:
|
||||||
|
|
||||||
|
lda C_COARSE_TONE
|
||||||
|
r13_wrsmc:
|
||||||
|
sta $9C00,Y
|
||||||
|
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; Register 6: Noise
|
||||||
|
lda NOISE
|
||||||
|
and #$1f
|
||||||
|
ora ENVELOPE_SHAPE
|
||||||
|
r6_smcwr:
|
||||||
|
sta $9F00,Y
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; Register 7: Enable
|
||||||
|
lda ENABLE
|
||||||
|
r7_smcwr:
|
||||||
|
sta $A200,Y
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; Register 8: a-amp
|
||||||
|
|
||||||
|
lda A_VOLUME
|
||||||
|
and #$1f
|
||||||
|
sta A_VOLUME
|
||||||
|
|
||||||
|
lda B_VOLUME
|
||||||
|
and #$10
|
||||||
|
asl
|
||||||
|
ora A_VOLUME
|
||||||
|
sta A_VOLUME
|
||||||
|
|
||||||
|
lda C_VOLUME
|
||||||
|
and #$10
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
ora A_VOLUME
|
||||||
|
r8_wrsmc:
|
||||||
|
sta $A500,Y
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; Register 9/10: b-amp (bottom) , c-amp (top)
|
||||||
|
|
||||||
|
lda B_VOLUME
|
||||||
|
and #$f
|
||||||
|
sta B_VOLUME
|
||||||
|
|
||||||
|
lda C_VOLUME
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
ora B_VOLUME
|
||||||
|
r9_wrsmc:
|
||||||
|
sta $A800,Y
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; Register 10: c-amp already handled
|
||||||
|
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
; Register 11: E fine
|
||||||
|
lda ENVELOPE_FINE
|
||||||
|
r11_wrsmc:
|
||||||
|
sta $AB00,Y
|
||||||
|
|
||||||
|
;=======================
|
||||||
|
; Register 12: E coarse
|
||||||
|
lda ENVELOPE_COARSE
|
||||||
|
r12_wrsmc:
|
||||||
|
sta $AE00,Y
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; Register 13: already handled
|
||||||
|
|
||||||
|
|
||||||
|
.if 0
|
||||||
|
|
||||||
|
no_frame_wrap:
|
||||||
|
; -1
|
||||||
|
; delay 72+1-3=70
|
||||||
|
lda #43 ; 70-2-25=43
|
||||||
|
jsr delay_a
|
||||||
|
|
||||||
|
jmp done_frame_wrap ; 3
|
||||||
|
frame_wrap:
|
||||||
|
inc r0_smc+2 ; 6
|
||||||
|
inc r1_smc+2 ; 6
|
||||||
|
inc r2_smc+2 ; 6
|
||||||
|
inc r4_smc+2 ; 6
|
||||||
|
inc r5_smc+2 ; 6
|
||||||
|
inc r13_smc+2 ; 6
|
||||||
|
inc r6_smc+2 ; 6
|
||||||
|
inc r7_smc+2 ; 6
|
||||||
|
inc r8_smc+2 ; 6
|
||||||
|
inc r9_smc+2 ; 6
|
||||||
|
inc r11_smc+2 ; 6
|
||||||
|
inc r12_smc+2 ; 6
|
||||||
|
;=====
|
||||||
|
; 72
|
||||||
|
done_frame_wrap:
|
||||||
|
|
||||||
|
.endif
|
||||||
|
rts ; 6
|
||||||
|
|
@ -59,6 +59,7 @@ ZERO = $B0
|
|||||||
WASTE_CYCLES = $B1
|
WASTE_CYCLES = $B1
|
||||||
FOREVER_OFFSET = $B2
|
FOREVER_OFFSET = $B2
|
||||||
FRAME_OFFSET = $B3
|
FRAME_OFFSET = $B3
|
||||||
|
FRAME_PAGE = $B4
|
||||||
|
|
||||||
FRAMEL = $60
|
FRAMEL = $60
|
||||||
FRAMEH = $61
|
FRAMEH = $61
|
||||||
|
Loading…
Reference in New Issue
Block a user