Shredz64 – SID playing implemented

After finishing up some other projects going on, I’ve finally been able to work on Shredz64 again, which I’m pretty happy about. Lots of good updates, and even a movie (please read disclaimer before watching!)

First off, I had to abandon my work with the SID converter. It was a neat idea and was kind of working, but the files it made were waaaay too huge for a C64, the timing didn’t work properly (and was never going to), and would require an extra step whenever I (or anyone else) wanted to add a new SID to the game. So instead I decided to focus more on having Shredz64 support (most) SID files with no conversion necessary.

As mentioned before, sid files, unlike other music files, are actually executable code (with a header) and not just music data. They have hard coded addresses in them and must be loaded at an exact address or nothing will work properly. I modified Shredz64 to reserve a 10K block in memory (leaving a little room for the loader, but up to $2FFF is for the SID) which allows most SIDs that execute within that space to work. I then wrote a few quick assembly routines to initialize and play the sid, and inserted them in the appropriate places in code. The result was that a sid file can now be placed on disk and read by Shredz64, and played, with correct timing (well, correct timing when nothing else is happening).

Below is a link to a video that shows Shredz64 in action. It’s fairly painful at the moment, but I was so excited to finally get the SID code working properly that I wanted to upload it. If you take a gander at it, please keep the following in mind:

1. I haven’t optimized any of the code yet, and it lags the song. There are a number of places where I can save a lot of processing time, so I’m not too worried.

2. Except for some note-buttons at the beginning, I just plugged in the same two notes over and over again for test purposes. Plus, the note-button timing is working off the old system and zips by. It will obviously go slower when the game is done.

3. I wasn’t playing the guitar while this demo was recording, so no score will increase and the crowd meter falls. Also, thanks to Marc Fischer for creating the SID

I’m very excited, I see this new sid code working out a lot better than the old. Also, I’ve got a few SIDs in mind for the final product that are going to be freaking sweet. 😉

Leave a Reply

Your email address will not be published.