Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39d5e5e91e | ||
|
|
b177277d40 | ||
|
|
2a1d9e9bc1 | ||
|
|
7bac794dd8 | ||
|
|
627b388615 | ||
|
|
4736b305f9 | ||
|
|
868747e3c3 | ||
|
|
74c2b492f0 | ||
|
|
0d05dbf24c |
@@ -1,7 +1,7 @@
|
|||||||
# Raspberry Casket
|
# Raspberry Casket
|
||||||
A fast and small open source Pretracker replayer
|
A fast and small open source Pretracker replayer
|
||||||
|
|
||||||
## Raspberry Casket Player V1.0 (26-Dec-2022)
|
## Raspberry Casket Player V1.1 (28-Dec-2022)
|
||||||
|
|
||||||
Provided by Chris 'platon42' Hodges <chrisly@platon42.de>
|
Provided by Chris 'platon42' Hodges <chrisly@platon42.de>
|
||||||
|
|
||||||
@@ -83,12 +83,15 @@ The original code compressed with *Blueberry's* Shrinkler goes from
|
|||||||
18052 bytes down to 9023 bytes.
|
18052 bytes down to 9023 bytes.
|
||||||
|
|
||||||
Raspberry Casket, depending on the features compiled in, is about
|
Raspberry Casket, depending on the features compiled in, is about
|
||||||
6374 bytes and goes down to ~4410 bytes (in isolation).
|
6216 bytes and goes down to ~4348 bytes (in isolation).
|
||||||
|
|
||||||
So this means that the optimization is not just "on the outside".
|
So this means that the optimization is not just "on the outside".
|
||||||
|
|
||||||
### Timing
|
### Timing
|
||||||
|
|
||||||
|
Sample generation is a bit faster (I guess around 10-15%), but most of the time is spent on muls operations, so this is the limiting factor.
|
||||||
|
Raspberry Casket is about twice as fast as the old replayer for playback.
|
||||||
|
|
||||||
Unfortunately, the replayer is still pretty slow and has high
|
Unfortunately, the replayer is still pretty slow and has high
|
||||||
jitter compared to other standard music replayers.
|
jitter compared to other standard music replayers.
|
||||||
|
|
||||||
@@ -99,3 +102,36 @@ about 34 on average!).
|
|||||||
|
|
||||||
Watch out for *Presto*, the [LightSpeedPlayer](https://github.com/arnaud-carre/LSPlayer) variant that should
|
Watch out for *Presto*, the [LightSpeedPlayer](https://github.com/arnaud-carre/LSPlayer) variant that should
|
||||||
solve this problem.
|
solve this problem.
|
||||||
|
|
||||||
|
### Known issues
|
||||||
|
|
||||||
|
- Behaviour for undefined volume slides with both up- and down nibble specified is different (e.g. A9A, hi Rapture!). Don't do that.
|
||||||
|
- Don't use loops with odd lengths and offsets (even if Pretracker allows this when dragging the loop points).
|
||||||
|
- Don't stop the music with F00 and use a note delay (EDx) in the same line.
|
||||||
|
- Don't try to play music with no waves, instruments or patterns.
|
||||||
|
- Pattern breaks with target row >= $7f will be ignored.
|
||||||
|
- Shinobi seemed to have used an early beta version of Pretracker where it was possible to specify a Subloop Wait of 0. That's illegal and unsupported.
|
||||||
|
- Pattern break (Dxx) + Song pos (Bxx) on the same line does not work in original Pretracker & Player: New Dxx position is ignored.
|
||||||
|
There is code to enable it in the player, so you could in theory make backwards running tracks like in Protracker.
|
||||||
|
But this doesn't make sense as long as the tracker itself does not support it.
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
### V1.1 (28-Dec-22)
|
||||||
|
- Optimized base displacement by reordering variables.
|
||||||
|
- Further optimized ADSR code.
|
||||||
|
- Optimized wave loop code.
|
||||||
|
- Bake in this strange vibrato speed multiplication to precalculated vibrato value (where possible).
|
||||||
|
- Various small optimizations.
|
||||||
|
- Store instrument number * 4 on loading to avoid using two adds every frame.
|
||||||
|
- Optimized speed/shuffle code. Idea of using xor turned out to make things too complicated for pattern breaks/jumps.
|
||||||
|
- Rearranged code for more short branches.
|
||||||
|
- Optimized track delay code further.
|
||||||
|
- Optimized pattern / song advance code.
|
||||||
|
- Maximum jitter now about one rasterline less, average about 0.5 rasterlines less (measurements, your mileage may vary).
|
||||||
|
- Drop-in replacement code size: 6228 bytes.
|
||||||
|
|
||||||
|
### V1.0 (26-Dec-22)
|
||||||
|
|
||||||
|
- Initial release.
|
||||||
|
- Drop-in replacement code size: 6446 bytes.
|
||||||
Binary file not shown.
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
This file "raspberry_casket.bin" can replace the original "player.bin"
|
This file "raspberry_casket.bin" can replace the original "player.bin"
|
||||||
provided that you used the 16 KB + 16 KB allocation for player
|
provided that you used the 16 KB + 16 KB allocation for player
|
||||||
variables as in the original player.
|
variables as in the original player (you need only about 2 + 12 KB).
|
||||||
|
|
||||||
It has been assembled from src/drop_in_replacement.asm.
|
It has been assembled from src/drop_in_replacement.asm (version V1.1).
|
||||||
Binary file not shown.
+2
-2
@@ -3,7 +3,7 @@ It features Pink's song Plastic Dove (from the Coda Intro).
|
|||||||
|
|
||||||
Even though it features the full replayer code and tune,
|
Even though it features the full replayer code and tune,
|
||||||
the replayer including my demo framework and the song only
|
the replayer including my demo framework and the song only
|
||||||
takes a mere 6560 bytes (shrinkled), which is even smaller
|
takes a mere 6448 bytes (shrinkled), which is even smaller
|
||||||
than the new streaming replayer used in Pink's new streaming
|
than the new streaming replayer used in Pink's new streaming
|
||||||
player demonstrated (closed source) in
|
player demonstrated (closed source) in
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ https://www.pouet.net/prod.php?which=91551
|
|||||||
|
|
||||||
which is 6860 bytes.
|
which is 6860 bytes.
|
||||||
|
|
||||||
The Raspberry Casket replayer takes an average of 14
|
The Raspberry Casket replayer takes an average of 13.5
|
||||||
rasterlines while Pink's new streaming player takes
|
rasterlines while Pink's new streaming player takes
|
||||||
only about 10 rasterlines.
|
only about 10 rasterlines.
|
||||||
|
|
||||||
|
|||||||
+564
-618
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user