mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-13 07:29:54 +00:00
chiptune: big break before trying to add copy code
This commit is contained in:
parent
5f14b954f4
commit
f0c93935e2
@ -36,7 +36,7 @@
|
||||
;COUNT EQU $06
|
||||
;DELTA EQU $08
|
||||
|
||||
orgoff EQU $5C00 ; offset of first unpacked byte
|
||||
orgoff EQU $5E00 ; offset of first unpacked byte
|
||||
|
||||
;======================
|
||||
; LZ4 decode
|
||||
|
@ -1,5 +1,4 @@
|
||||
+ Print time
|
||||
+ LZ4 decompression
|
||||
+ Loop support
|
||||
+ Right/Left arrows on screen
|
||||
|
||||
+ Keyboard, Right/Left/Pause
|
||||
+ Calculate maximum decode time for songs
|
||||
|
BIN
chiptune_player/chiptune_glitch.dsk
Normal file
BIN
chiptune_player/chiptune_glitch.dsk
Normal file
Binary file not shown.
@ -1,11 +1,10 @@
|
||||
; VMW Chiptune Player
|
||||
|
||||
.include "zp.inc"
|
||||
; program is 4k, so from 0xc00 to 0x1C00
|
||||
|
||||
LZ4_BUFFER EQU $1C00 ; 16k for now, FIXME: expand
|
||||
CHUNK_BUFFER EQU $5C00 ; $5C00 - $9600, 14k, $3A00
|
||||
; trying not to hit DOS at 9600
|
||||
; program is ~4k, so from 0xc00 to 0x1C00
|
||||
LZ4_BUFFER EQU $1C00 ; $1C00 - $5C00, 16k for now
|
||||
CHUNK_BUFFER EQU $5E00 ; $5E00 - $9600, 14k, $3800
|
||||
; trying not to hit DOS at $9600
|
||||
; Reserve 3 chunks plus spare (14k)
|
||||
CHUNKSIZE EQU $3
|
||||
|
||||
@ -375,6 +374,8 @@ new_song:
|
||||
sta A_VOLUME
|
||||
sta B_VOLUME
|
||||
sta C_VOLUME
|
||||
sta COPY_OFFSET
|
||||
sta DECODER_STATE
|
||||
|
||||
;===========================
|
||||
; Print loading message
|
||||
@ -516,10 +517,24 @@ bloop22:
|
||||
; PLAY B (copying C)
|
||||
; PLAY D (decompressing A/B/C)
|
||||
|
||||
|
||||
;========================
|
||||
; page copy
|
||||
;========================
|
||||
; want to copy:
|
||||
; SRC: chunk_buffer+(2*256)+(COPY_OFFSET*3*256)
|
||||
; DST: chunk_buffer+$2A00+(COPY_OFFSET*256)
|
||||
page_copy:
|
||||
clc ; 2
|
||||
lda #>(CHUNK_BUFFER+512) ; 3
|
||||
adc COPY_OFFSET ; 3
|
||||
adc COPY_OFFSET ; 3
|
||||
adc COPY_OFFSET ; 3
|
||||
sta page_copy_loop+2 ; self modify ; 5
|
||||
|
||||
lda #>(CHUNK_BUFFER+$2A00) ; 2
|
||||
adc COPY_OFFSET ; 3
|
||||
sta page_copy_loop+5 ; self modify ; 5
|
||||
|
||||
ldx #$00 ; 2
|
||||
page_copy_loop:
|
||||
@ -529,7 +544,7 @@ page_copy_loop:
|
||||
bne page_copy_loop ; 2nt/3
|
||||
rts ; 6
|
||||
;======================
|
||||
; 2+14*256+6= 3592
|
||||
; 2+14*256+6+29= 3621
|
||||
|
||||
;==========
|
||||
; filenames
|
||||
|
@ -5,49 +5,48 @@
|
||||
;==============================
|
||||
|
||||
volume_bars:
|
||||
|
||||
|
||||
; hline Y,V2 at A
|
||||
|
||||
; top line
|
||||
|
||||
lda #COLOR_BOTH_GREY
|
||||
sta COLOR ; remove for crazy effect
|
||||
ldy #12
|
||||
lda #26
|
||||
sta V2
|
||||
lda #6
|
||||
jsr hlin_double
|
||||
|
||||
lda #COLOR_BOTH_GREY ; 2
|
||||
sta COLOR ; remove for crazy effect ; 3
|
||||
ldy #12 ; 2
|
||||
lda #26 ; 2
|
||||
sta V2 ; 3
|
||||
lda #6 ; 2
|
||||
jsr hlin_double ; 6
|
||||
; 63+14*16=287
|
||||
;=====================
|
||||
; 307
|
||||
; middle
|
||||
|
||||
lda #8
|
||||
lda #8 ; 2
|
||||
middle_loop:
|
||||
pha
|
||||
pha ; 3
|
||||
|
||||
cmp #8
|
||||
beq middle_black
|
||||
cmp #26
|
||||
beq middle_black
|
||||
cmp #8 ; 2
|
||||
beq middle_black ; 2nt/3
|
||||
cmp #26 ; 2
|
||||
beq middle_black ; 2nt/3
|
||||
|
||||
cmp #10
|
||||
bne not_top
|
||||
cmp #10 ; 2
|
||||
bne not_top ; 2nt/3
|
||||
|
||||
ldx #$3B ; pink/purple
|
||||
stx A_COLOR
|
||||
ldx #$7E ; light-blue/aqua
|
||||
stx B_COLOR
|
||||
ldx #$CD ; light-green/yellow
|
||||
stx C_COLOR
|
||||
jmp calc_volume
|
||||
ldx #$3B ; pink/purple ; 2
|
||||
stx A_COLOR ; 3
|
||||
ldx #$7E ; light-blue/aqua ; 2
|
||||
stx B_COLOR ; 3
|
||||
ldx #$CD ; light-green/yellow ; 2
|
||||
stx C_COLOR ; 3
|
||||
jmp calc_volume ; 3
|
||||
|
||||
not_top:
|
||||
ldx #COLOR_BOTH_RED
|
||||
stx A_COLOR
|
||||
ldx #COLOR_BOTH_DARKBLUE
|
||||
stx B_COLOR
|
||||
ldx #COLOR_BOTH_DARKGREEN
|
||||
stx C_COLOR
|
||||
ldx #COLOR_BOTH_RED ; 2
|
||||
stx A_COLOR ; 3
|
||||
ldx #COLOR_BOTH_DARKBLUE ; 2
|
||||
stx B_COLOR ; 3
|
||||
ldx #COLOR_BOTH_DARKGREEN ; 2
|
||||
stx C_COLOR ; 3
|
||||
|
||||
calc_volume:
|
||||
|
||||
@ -63,159 +62,165 @@ calc_volume:
|
||||
; FIXME: there must be a way to make this faster
|
||||
|
||||
mod_a:
|
||||
pha
|
||||
sec
|
||||
eor #$ff ; negate
|
||||
adc #24 ; 24-A
|
||||
sec
|
||||
sbc A_VOLUME
|
||||
bmi mod_b
|
||||
beq mod_a_bottom
|
||||
pha ; 3
|
||||
sec ; 2
|
||||
eor #$ff ; negate ; 2
|
||||
adc #24 ; 24-A ; 2
|
||||
sec ; 2
|
||||
sbc A_VOLUME ; 2
|
||||
bmi mod_b ; 2nt/3
|
||||
beq mod_a_bottom ; 2nt/3
|
||||
mod_a_zero:
|
||||
lda #0
|
||||
beq done_a
|
||||
lda #0 ; 2
|
||||
beq done_a ; 2nt/3
|
||||
mod_a_bottom:
|
||||
lda A_COLOR
|
||||
and #$f0
|
||||
lda A_COLOR ; 2
|
||||
and #$f0 ; 2
|
||||
done_a:
|
||||
sta A_COLOR
|
||||
sta A_COLOR ; 2
|
||||
|
||||
mod_b:
|
||||
pla
|
||||
pha
|
||||
sec
|
||||
eor #$ff ; negate
|
||||
adc #24 ; 24-A
|
||||
sec
|
||||
sbc B_VOLUME
|
||||
bmi mod_c
|
||||
beq mod_b_bottom
|
||||
pla ; 4
|
||||
pha ; 3
|
||||
sec ; 2
|
||||
eor #$ff ; negate ; 2
|
||||
adc #24 ; 24-A ; 2
|
||||
sec ; 2
|
||||
sbc B_VOLUME ; 2
|
||||
bmi mod_c ; 2nt/3
|
||||
beq mod_b_bottom ; 2nt/3
|
||||
mod_b_zero:
|
||||
lda #0
|
||||
beq done_b
|
||||
lda #0 ; 2
|
||||
beq done_b ; 2nt/3
|
||||
mod_b_bottom:
|
||||
lda B_COLOR
|
||||
and #$f0
|
||||
lda B_COLOR ; 3
|
||||
and #$f0 ; 2
|
||||
done_b:
|
||||
sta B_COLOR
|
||||
sta B_COLOR ; 3
|
||||
|
||||
mod_c:
|
||||
pla
|
||||
pha
|
||||
sec
|
||||
eor #$ff ; negate
|
||||
adc #24 ; 24-A
|
||||
sec
|
||||
sbc C_VOLUME
|
||||
bmi mod_d
|
||||
beq mod_c_bottom
|
||||
pla ; 4
|
||||
pha ; 3
|
||||
sec ; 2
|
||||
eor #$ff ; negate ; 2
|
||||
adc #24 ; 24-A ; 2
|
||||
sec ; 2
|
||||
sbc C_VOLUME ; 2
|
||||
bmi mod_d ; 2nt/3
|
||||
beq mod_c_bottom ; 2nt/3
|
||||
mod_c_zero:
|
||||
lda #0
|
||||
beq done_c
|
||||
lda #0 ; 2
|
||||
beq done_c ; 2nt/3
|
||||
mod_c_bottom:
|
||||
lda C_COLOR
|
||||
and #$f0
|
||||
lda C_COLOR ; 3
|
||||
and #$f0 ; 2
|
||||
done_c:
|
||||
sta C_COLOR
|
||||
sta C_COLOR ; 3
|
||||
|
||||
mod_d:
|
||||
pla
|
||||
pla ; 4
|
||||
|
||||
jmp middle_color_done
|
||||
jmp middle_color_done ; 3
|
||||
|
||||
middle_black:
|
||||
ldx #COLOR_BOTH_BLACK
|
||||
stx A_COLOR
|
||||
stx B_COLOR
|
||||
stx C_COLOR
|
||||
ldx #COLOR_BOTH_BLACK ; 2
|
||||
stx A_COLOR ; 3
|
||||
stx B_COLOR ; 3
|
||||
stx C_COLOR ; 3
|
||||
|
||||
middle_color_done:
|
||||
|
||||
; left border
|
||||
ldy #COLOR_BOTH_GREY
|
||||
sty COLOR
|
||||
ldy #COLOR_BOTH_GREY ; 2
|
||||
sty COLOR ; 3
|
||||
|
||||
ldy #12
|
||||
sty V2
|
||||
ldy #12
|
||||
|
||||
jsr hlin_double
|
||||
ldy #12 ; 2
|
||||
sty V2 ; 3
|
||||
ldy #12 ; 2
|
||||
|
||||
jsr hlin_double ; 6
|
||||
; 63+1*16=79
|
||||
; border space
|
||||
lda #COLOR_BOTH_BLACK
|
||||
sta COLOR
|
||||
lda #COLOR_BOTH_BLACK ; 2
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #1
|
||||
jsr hlin_double_continue
|
||||
ldx #1 ; 2
|
||||
jsr hlin_double_continue ; 10+1*16=27
|
||||
|
||||
; A volume
|
||||
lda A_COLOR
|
||||
sta COLOR
|
||||
lda A_COLOR ; 3
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #3
|
||||
jsr hlin_double_continue
|
||||
ldx #3 ; 2
|
||||
jsr hlin_double_continue ; 10+3*16=58
|
||||
|
||||
; A space
|
||||
lda #COLOR_BOTH_BLACK
|
||||
sta COLOR
|
||||
|
||||
ldx #1
|
||||
jsr hlin_double_continue
|
||||
lda #COLOR_BOTH_BLACK ; 2
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #1 ; 2
|
||||
jsr hlin_double_continue ; 6
|
||||
; 10+1*16=27
|
||||
; B volume
|
||||
lda B_COLOR
|
||||
sta COLOR
|
||||
|
||||
ldx #3
|
||||
jsr hlin_double_continue
|
||||
lda B_COLOR ; 3
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #3 ; 2
|
||||
jsr hlin_double_continue ; 6
|
||||
; 10+3*16=58
|
||||
; B space
|
||||
lda #COLOR_BOTH_BLACK
|
||||
sta COLOR
|
||||
lda #COLOR_BOTH_BLACK ; 2
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #1
|
||||
jsr hlin_double_continue
|
||||
ldx #1 ; 2
|
||||
jsr hlin_double_continue ; 6
|
||||
; 10+1*16=27
|
||||
|
||||
; C volume
|
||||
lda C_COLOR
|
||||
sta COLOR
|
||||
lda C_COLOR ; 3
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #3
|
||||
jsr hlin_double_continue
|
||||
ldx #3 ; 2
|
||||
jsr hlin_double_continue ; 6
|
||||
; 10+3*16=58
|
||||
|
||||
; C space
|
||||
lda #COLOR_BOTH_BLACK
|
||||
sta COLOR
|
||||
|
||||
ldx #1
|
||||
jsr hlin_double_continue
|
||||
lda #COLOR_BOTH_BLACK ; 2
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #1 ; 2
|
||||
jsr hlin_double_continue ; 6
|
||||
; 10+1*16=27
|
||||
; Right border
|
||||
|
||||
lda #COLOR_BOTH_GREY
|
||||
sta COLOR
|
||||
lda #COLOR_BOTH_GREY ; 2
|
||||
sta COLOR ; 3
|
||||
|
||||
ldx #1
|
||||
jsr hlin_double_continue
|
||||
ldx #1 ; 2
|
||||
jsr hlin_double_continue ; 6
|
||||
; 10+1*16=27
|
||||
|
||||
pla
|
||||
clc
|
||||
adc #2
|
||||
cmp #28
|
||||
beq bottom_line
|
||||
jmp middle_loop
|
||||
pla ; 4
|
||||
clc ; 2
|
||||
adc #2 ; 2
|
||||
cmp #28 ; 2
|
||||
beq bottom_line ; 2nt/3
|
||||
jmp middle_loop ; 3
|
||||
|
||||
bottom_line:
|
||||
; bottom line
|
||||
|
||||
lda #COLOR_BOTH_GREY
|
||||
sta COLOR
|
||||
ldy #12
|
||||
lda #26
|
||||
sta V2
|
||||
lda #28
|
||||
jsr hlin_double
|
||||
lda #COLOR_BOTH_GREY ; 2
|
||||
sta COLOR ; 3
|
||||
ldy #12 ; 2
|
||||
lda #26 ; 2
|
||||
sta V2 ; 3
|
||||
lda #28 ; 2
|
||||
jsr hlin_double ; 6
|
||||
; 63+14*16=287
|
||||
|
||||
rts
|
||||
rts ; 6
|
||||
|
||||
|
||||
|
||||
; 309+ 684*10 + 313 = roughly worst case 7462
|
||||
|
@ -66,7 +66,8 @@ C_VOLUME EQU $7A
|
||||
ENVELOPE_FINE EQU $7B
|
||||
ENVELOPE_COARSE EQU $7C
|
||||
ENVELOPE_SHAPE EQU $7D
|
||||
|
||||
COPY_OFFSET EQU $7E
|
||||
DECODER_STATE EQU $7F
|
||||
;SPACEY_I EQU $70
|
||||
;SPACEY_F EQU $71
|
||||
;CY_I EQU $72
|
||||
|
Loading…
x
Reference in New Issue
Block a user