| |
MagerValp
Registered: Dec 2001 Posts: 1074 |
Longest sample?
So who has managed to pack the longest sample into the C64? Has anyone implemented realtime playback of packed data? Macbeth/PSW invented a simple delta packer (0/10/11 for no change/down one/up one), but I think he only implemented it on the SuperCPU.
Hmm, since there's an obvious tradeoff between quality and size, I guess you'd have to count the number of samples, and not the number of seconds...
|
|
... 13 posts hidden. Click here to view all posts.... |
| |
MagerValp
Registered: Dec 2001 Posts: 1074 |
I guess what I'm really after is what interesting techniques have been used to play long samples. Streaming from disk is definitely cool!
|
| |
tlr
Registered: Sep 2003 Posts: 1787 |
I think there is some 87-ish game using disk streaming samples in the intro too. Don't remember the name.
Street Tuff used Amiga style fibonacci delta compression on the 1541 version of 22050 HERTZ. I don't think it's real time though.
Fibonacci delta (and Macbeth's one) falls into the Delta Modulation category.
In this category, I think CVSDM looks promising.
I've seen it used on late 80's Williams/Bally pinball machines.
For it to be useful for $d418, some linearising scheme might be required.
Usual tricks are bit depth only. 2 and 4 are quite common.
|
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Speaking of streaming samples, if anyone is planning to do a demo with that, i can provide the loader technology (tm). :D 170kB of compressed samples can be quite long, i reckon. And some ADPCM variant similar to Streetuff/Benson's (?) for 4-bit playback should be replayable at a sample every other line easily. |
| |
MagerValp
Registered: Dec 2001 Posts: 1074 |
170 kB streamed with Macbeth's 1.5-bit delta would give nearly two miutes at 7.8 kHz.
|
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Does anyone have a link to $d418 -> output measurements?
I know I have seen voltage measurements somewhere, but couldn't find it now...
I'd like to give CVSDM a go. |
| |
Street Tuff
Registered: Feb 2002 Posts: 88 |
@tlr
yup. 4bit fibonacci -> 8bit pcm decoding was done while loading in 22050 hertz. it could be done realtime but not at 22khz anymore.
quite simple routine...
more_data
jsr getbyte
bcs end ;carry is set when loading is done
tay
and #$0f
tax
lda delta,x
clc
adc current_sample
sta current_sample
jsr writebyte
tya
lsr
lsr
lsr
lsr
tax
lda delta,x
clc
adc current_sample
sta current_sample
jsr writebyte
jmp more_data
;--------------------------------------------------
current_sample =$ff
delta !byte 222,235,243,248,251,253,254,255,0,1,2,3,5,8,13,21
;-------------------------------------------------- |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
22050 Hz is roughly 45 cycles per sample.
Should definately be doable in realtime if desired, even with the routine you show here. |
| |
Street Tuff
Registered: Feb 2002 Posts: 88 |
but not with the fancy sprites in the background ;) |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Depends how you do it, but timed loop is the way if speed is critical.
Maybe the sprites can be stretched continously onto the next frame?
(avoiding the need for Y-pos stuff) |
| |
Street Tuff
Registered: Feb 2002 Posts: 88 |
thats what i already do. :)
seems like this is getting off topic...
anyone got voltage measurements for tlr? |
Previous - 1 | 2 | 3 - Next |