mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-10 23:54:33 +00:00
chiptune: working on being able to auto-switch to next file
This commit is contained in:
parent
4e2e314fbc
commit
2f4e90f4ab
@ -330,8 +330,9 @@ Thought it only took 1s max? Not in face of interrupts.
|
||||
Every 20,000 an interrupt
|
||||
1,500 for music
|
||||
7,500 for volume bars
|
||||
1,794 for raster bars
|
||||
16,200 (!)for raster bars
|
||||
2,000 for misc rest
|
||||
|
||||
Roughly 13,000 cycles, leaving only 7000 to userspace
|
||||
|
||||
If takes 700,000 cycles to decode a block, will take 100
|
||||
|
@ -7,6 +7,8 @@ UNPACK_BUFFER EQU $5E00 ; $5E00 - $9600, 14k, $3800
|
||||
; trying not to hit DOS at $9600
|
||||
; Reserve 3 chunks plus spare (14k)
|
||||
|
||||
NUM_FILES EQU 15
|
||||
|
||||
;=============================
|
||||
; Setup
|
||||
;=============================
|
||||
@ -24,6 +26,9 @@ UNPACK_BUFFER EQU $5E00 ; $5E00 - $9600, 14k, $3800
|
||||
sta MB_CHUNK_OFFSET
|
||||
sta DECODE_ERROR
|
||||
|
||||
lda #1
|
||||
sta WHICH_FILE
|
||||
|
||||
; print detection message
|
||||
|
||||
lda #<mocking_message ; load loading message
|
||||
@ -76,6 +81,8 @@ mockingboard_found:
|
||||
; Enable 50Hz clock on 6522
|
||||
;============================
|
||||
|
||||
sei ; disable interrupts just in case
|
||||
|
||||
lda #$40 ; Continuous interrupts, don't touch PB7
|
||||
sta $C40B ; ACR register
|
||||
lda #$7F ; clear all interrupt flags
|
||||
@ -136,7 +143,7 @@ mockingboard_found:
|
||||
; Enable 6502 interrupts
|
||||
;============================
|
||||
|
||||
cli ; clear interrupt mask
|
||||
;cli ; clear interrupt mask
|
||||
|
||||
|
||||
;============================
|
||||
@ -201,33 +208,37 @@ check_done:
|
||||
|
||||
done_play:
|
||||
|
||||
; FIXME: disable timer on 6522
|
||||
; FIXME: unhook interrupt handler
|
||||
|
||||
; ; FIXME: disable timer on 6522
|
||||
; ; FIXME: unhook interrupt handler
|
||||
;
|
||||
sei ; disable interrupts
|
||||
|
||||
;
|
||||
jsr clear_ay_both
|
||||
|
||||
lda #0
|
||||
sta CH
|
||||
|
||||
jsr clear_bottoms
|
||||
;
|
||||
; lda #21
|
||||
; sta CV
|
||||
; lda #<done_message
|
||||
; sta OUTL
|
||||
; lda #>done_message
|
||||
; sta OUTH
|
||||
|
||||
lda #21
|
||||
sta CV
|
||||
lda #<done_message
|
||||
sta OUTL
|
||||
lda #>done_message
|
||||
sta OUTH
|
||||
; jsr print_both_pages
|
||||
|
||||
jsr print_both_pages
|
||||
jsr increment_file
|
||||
jsr new_song
|
||||
|
||||
jmp main_loop
|
||||
|
||||
forever_loop:
|
||||
jmp forever_loop
|
||||
|
||||
|
||||
|
||||
|
||||
;=================
|
||||
; load a new song
|
||||
;=================
|
||||
@ -271,10 +282,23 @@ new_song:
|
||||
; Load in KRW file
|
||||
;===========================
|
||||
|
||||
lda #<krw_file ; point to filename
|
||||
sta INL
|
||||
lda #>krw_file
|
||||
sta INH
|
||||
jsr get_filename
|
||||
|
||||
lda #8
|
||||
sta CH
|
||||
lda #21
|
||||
sta CV
|
||||
|
||||
lda INL
|
||||
sta OUTL
|
||||
lda INH
|
||||
sta OUTH
|
||||
jsr print_both_pages
|
||||
|
||||
; lda #<krw_file ; point to filename
|
||||
; sta INL
|
||||
; lda #>krw_file
|
||||
; sta INH
|
||||
|
||||
disk_buff EQU LZ4_BUFFER
|
||||
read_size EQU $4000
|
||||
@ -337,7 +361,7 @@ read_size EQU $4000
|
||||
|
||||
jsr setup_next_subsong
|
||||
|
||||
|
||||
cli ; start playing
|
||||
|
||||
rts
|
||||
|
||||
@ -437,11 +461,79 @@ page_copy_loop:
|
||||
;======================
|
||||
; 2+14*256+6+29= 3621
|
||||
|
||||
|
||||
;==================
|
||||
; Get filename
|
||||
;==================
|
||||
; WHICH_FILE holds number
|
||||
; MAX_FILES has max
|
||||
; Scroll through until find
|
||||
; point INH:INL to it
|
||||
get_filename:
|
||||
|
||||
ldy #0
|
||||
ldx WHICH_FILE
|
||||
|
||||
lda #<krw_file ; point to filename
|
||||
sta INL
|
||||
lda #>krw_file
|
||||
sta INH
|
||||
|
||||
get_filename_loop:
|
||||
cpx #0
|
||||
beq filename_found
|
||||
|
||||
inner_loop:
|
||||
iny
|
||||
lda (INL),Y
|
||||
bne inner_loop
|
||||
|
||||
iny
|
||||
|
||||
dex
|
||||
jmp get_filename_loop
|
||||
|
||||
filename_found:
|
||||
tya
|
||||
clc
|
||||
adc INL
|
||||
sta INL
|
||||
lda INH
|
||||
adc #0
|
||||
sta INH
|
||||
|
||||
rts
|
||||
|
||||
;===============================
|
||||
; Increment file we want to load
|
||||
;===============================
|
||||
increment_file:
|
||||
inc WHICH_FILE
|
||||
lda WHICH_FILE
|
||||
cmp NUM_FILES
|
||||
bne done_increment
|
||||
lda #0
|
||||
sta WHICH_FILE
|
||||
done_increment:
|
||||
rts
|
||||
|
||||
;===============================
|
||||
; Decrement file we want to load
|
||||
;===============================
|
||||
decrement_file:
|
||||
dec WHICH_FILE
|
||||
bpl done_decrement
|
||||
lda #(NUM_FILES-1)
|
||||
sta WHICH_FILE
|
||||
done_decrement:
|
||||
rts
|
||||
|
||||
;==========
|
||||
; filenames
|
||||
;==========
|
||||
krw_file:
|
||||
.asciiz "INTRO2.KRW"
|
||||
.asciiz "KORO.KRW"
|
||||
.asciiz "DEATH2.KRW"
|
||||
.asciiz "DEMO4.KRW"
|
||||
.asciiz "WAVE.KRW"
|
||||
@ -482,7 +574,7 @@ mocking_message: .asciiz "LOOKING FOR MOCKINGBOARD IN SLOT #4"
|
||||
not_message: .byte "NOT "
|
||||
found_message: .asciiz "FOUND"
|
||||
done_message: .asciiz "DONE PLAYING"
|
||||
loading_message: .asciiz "LOADING..."
|
||||
loading_message: .asciiz "LOADING"
|
||||
|
||||
;============
|
||||
; graphics
|
||||
|
@ -22,11 +22,13 @@ draw_rasters:
|
||||
|
||||
ldy #(NUM_ROWS-1) ; 2
|
||||
lda #0 ; 2
|
||||
|
||||
init_rows:
|
||||
sta row_color,Y ; 5
|
||||
dey ; 2
|
||||
bpl init_rows ; 2nt/3
|
||||
;==============
|
||||
; 4+20*10 = 204
|
||||
|
||||
|
||||
;================
|
||||
; set colors
|
||||
@ -55,6 +57,9 @@ init_rows:
|
||||
|
||||
lda #COLOR_BOTH_RED ; red ; 2
|
||||
jsr set_row_color ; 6+136
|
||||
;==============
|
||||
; 8 * 144
|
||||
; 1152
|
||||
|
||||
;=================
|
||||
; draw rows
|
||||
@ -80,7 +85,9 @@ draw_rows_loop:
|
||||
draw_rows_skip:
|
||||
dey ; 2
|
||||
bpl draw_rows_loop ; 3/2nt
|
||||
|
||||
;=============
|
||||
; 20 * 741
|
||||
; 14,820
|
||||
;==================
|
||||
; update y pointer
|
||||
;==================
|
||||
@ -93,8 +100,13 @@ not_there:
|
||||
sty SCREEN_Y ; 3
|
||||
|
||||
rts ; 6
|
||||
|
||||
;===========
|
||||
; 1794
|
||||
; 24
|
||||
|
||||
;=============================
|
||||
; total= 16,200
|
||||
|
||||
;===================
|
||||
;===================
|
||||
; set_row_color
|
||||
|
@ -35,7 +35,9 @@ FILEML EQU $64
|
||||
FILEMH EQU $65
|
||||
;TURNING EQU $60
|
||||
;SCREEN_X EQU $61 ; not used?
|
||||
SCREEN_Y EQU $62
|
||||
SCREEN_Y EQU $67
|
||||
WHICH_FILE EQU $68
|
||||
|
||||
;ANGLE EQU $63
|
||||
;HORIZ_SCALE_I EQU $64
|
||||
;HORIZ_SCALE_F EQU $65
|
||||
|
Loading…
Reference in New Issue
Block a user