diff --git a/chiptune_player/Makefile b/chiptune_player/Makefile index b4e78f42..5915b4dd 100644 --- a/chiptune_player/Makefile +++ b/chiptune_player/Makefile @@ -7,7 +7,21 @@ all: chiptune_player.dsk chiptune_player.dsk: CHIPTUNE_PLAYER OUT.0 $(DOS33) -y chiptune_player.dsk BSAVE -a 0x1000 CHIPTUNE_PLAYER - $(DOS33) -y chiptune_player.dsk SAVE B INTRO2.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/INTRO2.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/CRMOROS.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/FIGHTING.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/LYRA2.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/SDEMO.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/UNIVERSE.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/CAMOUFLAGE.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/DEATH2.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/SPUTNIK.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/WAVE.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/CHRISTMAS.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/DEMO4.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/KORO.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/ROBOT.KRW + $(DOS33) -y chiptune_player.dsk SAVE B ./krw/TECHNO.KRW # $(DOS33) -y chiptune_player.dsk SAVE B OUT.LZ4 # $(DOS33) -y chiptune_player.dsk BSAVE -a 0x6000 OUT.0 diff --git a/chiptune_player/README.chiptune b/chiptune_player/README.chiptune index be96cf2a..46c126e2 100644 --- a/chiptune_player/README.chiptune +++ b/chiptune_player/README.chiptune @@ -25,6 +25,30 @@ it doesn't compress as well so it takes up more disk/memory space for the raw file. +As can be seen from the memory map, if we assume our player can fit in 4k +we have roughly from $2000 to $9600 for memory. That's $7600 (29.5k). + +If we could have single buffered, we could have had 256*3*14 (10.5k) for +decompress and 19k for file size which would let us play most of the +reasonable sized songs on our play list (KRW(3) in table at end). + +If we need to double buffer, then we need 256*2*14*2 (14k) for decompress +and 15.5k for file size which still works, at least if the move to KRW(2) +sized files doesn't bloat things too much. + + +Proposed plan + + Decompress 3, but in the room of 4? + + 1234 in memory + ABCC decode as ABC, then copy C to 4 + when playing C, play from 4, bring in next 3 + DEFF + + This lets us have 14k of buffer, allowing 15.5k of compressed file. + Do we have the spare cycles for this? + Memory Map (not to scale) @@ -54,28 +78,39 @@ Memory Map Sizes + Disk + time ym5 KRW(3) KRW(2) Blocks(3) + ~~~~ ~~~ ~~~~~~ ~~~~~~ ~~~~~~ +KORO.KRW 0:54 ? 2740 3039 12 12 +FIGHTING.KRW 1:40 ? 3086 3316 14 14 +CAMOUFLAGE.KRW 1:32 1162 4054 4972 17 17 +DEMO4.KRW 2:05 1393 4061 6336 17 17 +SDEMO.KRW 2:12 1635 5266 7598 22 22 +CHRISTMAS.KRW 1:32 1751 4975 5811 21 21 +SPUTNIK.KRW 2:05 2164 8422 10779 34 34 +DEATH2.KRW 2:27 2560 8064 10295 33 33 +CRMOROS.KRW 1:29 2566 8045 9565 33 33 +TECHNO.KRW 2:23 2630 8934 11126 36 36 +WAVE.KRW 2:52 2655 8368 11318 34 34 +LYRA2.KRW 3:04 2870 9826 14418 40 40 +INTRO2.KRW 2:59 3217 9214 9294 37 37 +ROBOT.KRW 1:26 3448 7724 8337 32 32 +UNIVERSE.KRW 1:49 4320 9990 11225 41 41 +NEURO.KRW 3:47 8681 22376 25168 89 +AXELF.KRW 10:55 9692 47989 54420 189 + ----- ----- + 423 30:29 - time ym5 KRW(3) KRW(2) - ~~~~ ~~~ ~~~~~~ ~~~~~~ -KORO.KRW 0:54 ? 2740 -FIGHTING.KRW 1:40 ? 3086 -CAMOUFLAGE.KRW 1:32 1162 4054 -DEMO4.KRW 2:05 1393 4061 -SDEMO.KRW 2:12 1635 5266 -CHRISTMAS.KRW 1:32 1751 4975 -SPUTNIK.KRW 2:05 2164 8422 -DEATH2.KRW 2:27 2560 8064 -CRMOROS.KRW 1:29 2566 8045 -TECHNO.KRW 2:23 2630 8934 -WAVE.KRW 2:52 2655 8368 -LYRA2.KRW 3:04 2870 9826 -INTRO2.KRW 2:59 3217 9214 -ROBOT.KRW 1:26 3448 7724 -UNIVERSE.KRW 1:49 4320 9990 -NEURO.KRW 3:47 8681 22376 -AXELF.KRW 10:55 9692 47989 +Notes: my home-made songs don't have ym5 sizes as I don't have a +working LHA encoder to make a real size. +Apple II disk file sizes: uses 256 byte blocks. Needs an extra +for the catalog entry (and an additional for every X blocks used) +The Disk II / DOS3.3 can in theory hold 140k, but first 3 tracks +are reserved for DOS (12k) and the Catalog track (4k) and the +Hello program (512 bytes) and our chiptune player (4k), totalling +24.5k of overhead, with 115.5k free (462 blocks) diff --git a/chiptune_player/chiptune_player.dsk b/chiptune_player/chiptune_player.dsk index 21920aeb..0fc5d3bc 100644 Binary files a/chiptune_player/chiptune_player.dsk and b/chiptune_player/chiptune_player.dsk differ diff --git a/chiptune_player/chiptune_player.s b/chiptune_player/chiptune_player.s index 1d240d81..13015c2a 100644 --- a/chiptune_player/chiptune_player.s +++ b/chiptune_player/chiptune_player.s @@ -509,6 +509,7 @@ next_subsong: ;========== krw_file: .asciiz "INTRO2.KRW" + .asciiz "TECHNO.KRW" ;========= ;routines diff --git a/chiptune_player/krw/AXELF.KRW b/chiptune_player/krw/AXELF.KRW new file mode 100644 index 00000000..bdbb6ab0 Binary files /dev/null and b/chiptune_player/krw/AXELF.KRW differ diff --git a/chiptune_player/krw/CAMOUFLAGE.KRW b/chiptune_player/krw/CAMOUFLAGE.KRW new file mode 100644 index 00000000..a21920b6 Binary files /dev/null and b/chiptune_player/krw/CAMOUFLAGE.KRW differ diff --git a/chiptune_player/krw/CHRISTMAS.KRW b/chiptune_player/krw/CHRISTMAS.KRW new file mode 100644 index 00000000..623a44f4 Binary files /dev/null and b/chiptune_player/krw/CHRISTMAS.KRW differ diff --git a/chiptune_player/krw/CRMOROS.KRW b/chiptune_player/krw/CRMOROS.KRW new file mode 100644 index 00000000..ea159682 Binary files /dev/null and b/chiptune_player/krw/CRMOROS.KRW differ diff --git a/chiptune_player/krw/DEATH2.KRW b/chiptune_player/krw/DEATH2.KRW new file mode 100644 index 00000000..0a2e4d67 Binary files /dev/null and b/chiptune_player/krw/DEATH2.KRW differ diff --git a/chiptune_player/krw/DEMO4.KRW b/chiptune_player/krw/DEMO4.KRW new file mode 100644 index 00000000..effaf430 Binary files /dev/null and b/chiptune_player/krw/DEMO4.KRW differ diff --git a/chiptune_player/krw/FIGHTING.KRW b/chiptune_player/krw/FIGHTING.KRW new file mode 100644 index 00000000..24887fc9 Binary files /dev/null and b/chiptune_player/krw/FIGHTING.KRW differ diff --git a/chiptune_player/krw/INTRO2.KRW b/chiptune_player/krw/INTRO2.KRW new file mode 100644 index 00000000..d2837521 Binary files /dev/null and b/chiptune_player/krw/INTRO2.KRW differ diff --git a/chiptune_player/krw/KORO.KRW b/chiptune_player/krw/KORO.KRW new file mode 100644 index 00000000..b603469d Binary files /dev/null and b/chiptune_player/krw/KORO.KRW differ diff --git a/chiptune_player/krw/LYRA2.KRW b/chiptune_player/krw/LYRA2.KRW new file mode 100644 index 00000000..0e1ee4c5 Binary files /dev/null and b/chiptune_player/krw/LYRA2.KRW differ diff --git a/chiptune_player/krw/NEURO.KRW b/chiptune_player/krw/NEURO.KRW new file mode 100644 index 00000000..b9b0d172 Binary files /dev/null and b/chiptune_player/krw/NEURO.KRW differ diff --git a/chiptune_player/krw/ROBOT.KRW b/chiptune_player/krw/ROBOT.KRW new file mode 100644 index 00000000..1be5d02f Binary files /dev/null and b/chiptune_player/krw/ROBOT.KRW differ diff --git a/chiptune_player/krw/SDEMO.KRW b/chiptune_player/krw/SDEMO.KRW new file mode 100644 index 00000000..1335e985 Binary files /dev/null and b/chiptune_player/krw/SDEMO.KRW differ diff --git a/chiptune_player/krw/SPUTNIK.KRW b/chiptune_player/krw/SPUTNIK.KRW new file mode 100644 index 00000000..e5c1de77 Binary files /dev/null and b/chiptune_player/krw/SPUTNIK.KRW differ diff --git a/chiptune_player/krw/TECHNO.KRW b/chiptune_player/krw/TECHNO.KRW new file mode 100644 index 00000000..ee41ebe8 Binary files /dev/null and b/chiptune_player/krw/TECHNO.KRW differ diff --git a/chiptune_player/krw/UNIVERSE.KRW b/chiptune_player/krw/UNIVERSE.KRW new file mode 100644 index 00000000..6ec9b19d Binary files /dev/null and b/chiptune_player/krw/UNIVERSE.KRW differ diff --git a/chiptune_player/krw/WAVE.KRW b/chiptune_player/krw/WAVE.KRW new file mode 100644 index 00000000..603ac338 Binary files /dev/null and b/chiptune_player/krw/WAVE.KRW differ