This weekend saw a few updates - nothing spectacular:
1) Some VIC fixes to adhere with proper data values (such as color registers and the upper 4 bits always being set)
2) Im now using the timer interrupt to slow things down for fast machines. The easter egg game is actually playable now. Timing isnt perfect, but its much closer. (If you are running an older machine and it's too slow, I have removed frame skipping in this build. If you complain enough, I can add it back in).
3) All three SID voices cause the speaker to make noise now. And its not very pleasant. For simple notes, the speaker works, but for (more commonly) SID music and such, it just doesnt even come close. Eventually...
4) A new color palette - the last one seemed a little dark. Also, I added scan lines. I may map that to an ALT-S or something down the road as its more personal preference. (or memory map it?)
5) Found a bug hiding inside the screen render code. I have a test machine that gives a junk screen when it boots. Something to do with the screen_refresh() function in the IO class. Im thinking that that machine's video is higher and outside the range for whatever variable Im using when Im scaling the screen. Ill come back to that, but if you have that problem, let me know. QEMU, VirtualBox and other test machines I have dont do this, so not exactly sure just yet.
Spent most of my free time working on timing and testing various programs to see how well the VIC emulation is working. There's still a few strange things which I hope to work through. A good example is when relocating the screen to bank 3 and copying the character ROM. Something goes goofy when it gets to the later 128 characters. Any programmers out there want to take a shot at this, I'd appreciate it:
And here's the program:
120 fori=0to255:poke51400+i,i:poke55496+i,1: next
310 data169,0,133,251,133,253,169,208,133,252,169, 240,133,254,162,16
320 data160,0,177,251,145,253,136,208,249,230,252, 230,254,202,208,240,96