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