| |
Credits :
Download :
Look for downloads on external sites:
Pokefinder.org
Production Info Submitted by algorithm on 22 November 2011
Some more indepth information in regards to the demo..
Encoder
The encoder seperates each 256 byte chunk and finds two optimum step values for the sequence. It packs the 256
bytes into 68 bytes (first byte=first sample data, second byte=last sample data, third and fourth byte=two step values.
the rest of the bytes are two bit chunks of the following
00=subtract previous sample using step 1
01=subtract previous sample using step 2
10=add previous sample using step 1
11=add previous sample using step 2
The usual method of adpcm would increase/decrease step values based on the succession of whether the prediction
would be up or down more than once. The method of fixed optimum step sizes for each given chunk has shown to
give better results however
C64 decoder
On the c64 side, the full decoding is done via NMI. Originally the decoder would decode two bits at a time.
In order to increase the performance dramatically, I have opted to use predefined code for each possibility of
the whole byte. eg a byte value of 0100101011 using the usual method would have been to do something such as
rol the byte, check carry flag etc and jump to either subtract or add, then another rol to determine step size etc
The optimized version just reads the whole byte and removes the necessity of the above. Downside is that it
requires 8k of code (with each byte possibility using around 29 bytes or so)
The actual decode uses only one raster line (63 cycles or so) and this extracts 4 bytes from a byte of data.
There is ample time left for the c64 to do other things such as load data and run other routines.
The video decode is via IRQ. Nothing special here. Video sequences converted using my CSAM V3 converter.
Thanks for Krills loader, there is no issue with interleave on drives. Using a previous loader, some sample chunks
would load in time and others would fail (even though they were the same size and contained the same type of
data.
Uses the great 8 bit invention by Sounddemon/Mixer (At the expense of using over 20 cycles extra for the playback)
Was planning on fitting the demo in a single load (This could have been done via my other hybrid VQ/SPDPCM routine but sample routine uses too much processing time to display or load anything useful. May optimise it somewhat |
|
|
|
| Search CSDb |
| Navigate | |
|
| Detailed Info | |
|
| Fun Stuff | |
· Goofs · Hidden Parts · Trivia
|
|
| Forum | |
|
| Info on other sites | |
|
| Support CSDb | |
|
| |
|