It's an idea from a long time ago, and after a few silly ideas ideas ended up with something useful..
So, without further ado, here's a demo of it for the unexpanded VIC..
In the pacfollin.zip at https://sites.google.com/site/andym00/files
There's the original development of the idea here:
http://formatwar.net/forums/viewtopic.php?f=5&t=265
Although it started off on the Atari A8 since I really didn't think the ~1MHz machines would have the power for it, but a revelation in being able to (essentially) compress the output samples so we have way less interrupts than usual due to the nature of the pulse waves we're synthesising made for a game changer..
In this demo, the colours bars off the irq at the bottom of the screen do nothing other than..
Code: Select all
IRQ:
lda $9124
dec $900f
ldy #$0
-
inc $900f
inc $900f
inc $900f
dec $900f
dec $900f
dec $900f
dey
bne -
inc $900f
jmp $eb18
Also this version doesn't due the full NSF driver emulation.. It's simply playback a cached version of the registers, even so, this pacfollin tune still only comes to 1.5K.. Huge I know for what it is, but there's no way I can get the NSF driver working on the VIC due to the memory map.. But since using the NSF driver was merely a stepping stone to writing a proper music driver for this it did the job nicely..
I've also done a 64 version, which is exactly the same bar the VIAs make it some cycles quicker (and less memory) to setup the time to the next sample, it also show you more how much cpu time it actually uses..
http://noname.c64.org/csdb/release/?id=106466
And the code is there as well for the core of it..
http://noname.c64.org/csdb/forums/?room ... icid=90296
It's a lot less CPU time than you might imagine, and doesn't sound too bad, although the VICs volume register doesn't sound as nice as the SIDs..