Category Archives: My Projects

Shredz64 – Button Two Enabled for Amiga/SMS

I needed to incorporate a few safety features into the final (for now) revision of the PSX64 design, so while I was changing hardware around, I decided to add support for the second button on Amiga and Sega systems which required more than just a firmware change (I needed to share pin 9 with both the second digital pot and a direct mapping into the MCU, so now in guitar mode the digital pot takes control of pin 9 and the MCU goes into high impedance on that pin, and vice versa when in normal controller mode.)

I tested it out with a little Mortal Kombat II on my A1200. Button one is mapped over to X, and button two is mapped over to square. Both kicking and punching worked great in MKII! I’ll be putting the schematics of this final version up tonight/tomorrow. Back to the PCB printers again!

Shredz64 – Thanks For All the Positive Feedback!

First off, I want to thank everyone who has sent me letters through this site, SynthDreams.com and YouTube comments. It’s always exciting to know there are other people out there who appreciate having fun with older computers (especially the C64!).

Also, just a heads up, don’t be upset if I don’t respond to you quickly this week – I am extremely sick right now with a bad fever and am pretty much in bed all day except when I work up enough energy to sit at the computer for a few minutes. Once my brain clears up I’ll be sure to respond to everyone that I haven’t already.

Thanks guys!

Shredz64 – YouTube Video, EGM Interview, Updates

First off, as you can see, I’ve moved the Shredz64 project to ToniWestbrook.com, along with my other projects. I’m not quite sure why I didn’t use blogging software in the first place, but no matter now. I’ve tried to make sure everything on the old site is here on the new, along with all the new items (mentioned below). The website for my development business Synthetic Dreams is done as well, and linked at the top (www.synthdreams.com). Special thanks to Leah Shaver for a great job on the website.

From SynthDreams.com, users can download both the NTSC and PAL versions of Shredz64, as well as look for user uploaded songs. The PSX64 interface is available for preorder from the site as well. Schematics and firmware will be up within the next week.

Other big updates – I was fortunate enough to be interviewed by Michael Donahoe from Electronic Gaming Monthly (EGM) about Shredz64 a while back – the interview is in April’s issue (now out). Check it out, page 16. Just a quick interview, but very exciting none-the-less!

Also, want to actually see Shredz64 in action? Check out two YouTube videos I uploaded, one with the Zelda Overworld Theme SID by Sascha Zeidler, and the continuation with “Ex State of Mind” by Michal Hoffmann

Shredz64 in Action – Part 1
Shredz64 in Action – Part 2

Shredz64 – All Songs Done, PSX64 Updates

More updates – things are moving along nicely. All the songs are done now, and any bugs that I can find have been fixed up, so Shredz64 is good to go now. I made an image of the NTSC version of it, I need to make a PAL version as well, but I need to test out the PAL values a little more before thats ready.

Additionally, I uploaded a new version of firmware to the PSX64 that has a couple fixes in it. First, I put the lines out to the C64 into a high impedence state now when they’re not active, which allows you to type on the keyboard when the joystick is plugged on (before it would keep the lines high in a low-impedence state, which would block most keyboard input due to the way the CIAs work). It was irritating as you’d have to unplug the adapter while typing, then plug it back in when it was time to use it. No more of that. Also, I moved the encoding of the lift-up sensor from the pot that handles the strumming to the pot that handles the whammy bar. This allows the user to strum while lifting the guitar up, which wasn’t possible before. This is pretty necessary, as when you activate shred mode, you want to be able to play while the guitar is still lifted up, lest you miss some buttons coming quickly. This is much more important than being able to lift the guitar up while using the whammy bar, especially since the whammy bar is only used in edit mode.

So two things left to do with the next PSX64 prototype – I need to add diodes in on both the DC plug so people can’t plug an adapter with reverse polarity in, and also add diodes to the power on the digital pots. For some reason, it appears that the adapter still works when you don’t have it plugged into DC power. The only power is coming from the C64 5v line (and logic lines). The logic lines go directly into the MCU, so I don’t think that is the issue, but the 5v line goes into the digital pots to drive the pot pins on the C64. I think the digital pots are leaking this power up through their Vdd line into the rest of the circuit, which is bad – most 9 pin joystick ports put out max 50 mA, and the total power consumpution of the interface (and any playstation adapters plugged in) is more than this. If someone accidentally forgot to plug in dc power, it would work fine and they wouldn’t realize it, but there would be a chance of damaging the device/computer. Hopefully by blocking current in the opposite direction of the power pin of the digital pots it will fix this. We’ll see, I have an order in for more playstation extender cables to build another prototype. Once that design checks out, I’ll put the schematics up and get PCBs printed.

Shredz64 – More Songs Done

I’ve been working every night on this, but I haven’t had time to update the blog until tonight. First off, I have notes done for 4 songs now, so 6 more to go. I’ve noticed that I’ve made every song I’ve done so far akin to hard/expert level on Guitar Hero in complexity, so I’m going to tone it down for the last 4 songs or so to more like medium level. Since you can’t choose different levels, this at least gives a good mix of difficult songs and easier songs, and then if people want harder/easier for the other songs, they can simply make their own notes (and upload them for others :)).

Also, I quickly found out that the note editor still needed some design issues worked out. I found that unless I was dealing with a tricky part, it was actually easier to record at full speed than in 1/3X slow-mo, as in slow mode you’re always hitting the button too soon, and its so slow you can’t always tell if the sounds you’re hearing are the actual note or just a weird effect before the note, or another note, just due to the way people generally craft SIDs to get lots of good sounds out of 3 channels. So I reversed the functionality of the whammy bar. When you’re not pressing it, the song plays at full speed – the harder you press it, the slower the song goes. So fully depressed it goes at 1/3X slow-mo and half depressed its at 1/2X. Also – I found a constant need to wipe out all notes after a certain point – like, I would finish a section up, and the next section would start up, and I wouldn’t be ready and I’d play notes waay off base and then I would need to delete 5-6 of them. So, I changed the functionality of the full-clear to clear past the current point. E.g. if I was at tick 5600 and I hit the Green,Red,Yellow and Blue and strummed up, it would delete any notes recorded after tick 5600 and restart the song. This still allowed me to use it as a full song clear – if I wanted to fully clear the song, I simply did this right when the song started, so everything past tick 1 was deleted. Double the functionality!

In PSX64 news, I have the plans into Eagle and I’m working out the two issues I was having – both (I believe, I need to wire up a test on a protoboard) are due to sinking lines off the atmega8 instead of floating them. We’ll see – I’m looking to get it debugged and some safety features put on (i.e. diodes) and it put off for a prototype PCB printing asap so we can get some boards printed up. I suspect I will have the fixes and final plans done by this weekend, so I’ll be putting the plans and firmware up soon for those handy with a soldering iron.

Lastly, with the game mere days away from “complete completion” (e.g. all the note data recorded), I’ve been readying both a nice wordpress version of this blog for more behind-the-scenes stuff as well as a beautiful site developed by my girlfriend Leah for Synthetic Dreams (since the current website is a bit lame). All plans, downloads (game and songs), and purchase info for the PSX64 will be available between those two sites within the next week or so. I hope everyone enjoys the game as much as I do! ๐Ÿ™‚

Shredz64 – Started Recording Notes

I started recording note data tonight, but I quickly ran into a weird problem that I hadn’t seen before, mainly because I hadn’t previously been loading in so many songs (in the past I’d loaded in 4-5, now I’m loading in 10). Anyway, after a debug session of good length I found a just plain stupid mistake I’d made with pointer arithmetic – it happens to us all sometimes. The issue was I was saving high score data into the area of RAM where I’d copied the kernel into, and needless to say things weren’t working right.

Anyway, fixed that and got the notes recorded for 1 song, 9 more to go. Most will be fairly easy to record for, but there are a few SIDs from the demo scene that will be a little more difficult. Hopefully it won’t be too bad overall.

Shredz64 – SID speed handler

Okayyyy, so I added a little more in. I got more space by taking all the text for the credits screen out of the program and putting it onto disk, then writing a very lightweight loader for it to pop directly into screen memory. That freed up 300 bytes. I needed space as I wanted to add support for playing PAL SIDs on NTSC systems at the right speed and vice versa. Don’t get too excited, it only works for SIDs that have the system speed specified in the file (which isn’t all of them by any means), and it doesn’t alter the frequency, only the playing speed. So NTSC users playing PAL songs will hear the song at a slightly higher frequency, but the song will still play the right speed (and the notes will go at the right speed). Not a big deal, but there were a few really great SIDs I’m including in the game that are PAL and have their system speed specified in the file, and they sounded so much better at their right speed, so it was worth it just for those (and future) SIDs.

So, I will be distributing a NTSC binary and a PAL binary of the game. They’re the exact same thing except a few constants defined which allow what’s mentioned above to work right. Again, this is only for a very small subset of SIDs, but at least its a help for those.

Shredz64 – Pretty much done!

Stick a fork in it, it’s done. Well, the program is anyway, I still need to record button data for all of the songs. That will take me a week or so. I’m sure there are bugs in the game, I haven’t done a super in depth testing session yet. However, while having to fight 3 times tonight to reclaim 200 bytes from the heap, I realized that only having (less than) 64K to work with is kind of a blessing. It definitely prevents feature creep, which is a pet peeve of mine, even when I cause it. I was thinking of including a easy/medium/hard selection on each song, but the amount of code involved would push me waaay over, especially considering I have 7 bytes free in memory right now. Really, it comes down to if I ever want to make major additions to the game, I’ll have to take the note editor out and put it in its own executable. For now though its nice to have both the game and the editor in the same program, and until I need the space that’s how it will remain.

More updates when the note data has been recorded!

Shredz64 – Note editor finished

I pretty much finished up the note editor tonight, except a few bugs in the delete function. Due to memory issues (e.g. I am completely out, I really had to go through every inch of code, substitute bytes for words under all (possible) circumstances, reduce the maximum number of notes (which was too large anyway)) and due to usability, I changed the way the editor works slightly from whats listed in yesterdays entry. Its mostly the same, with a few differences:

1. Instead of strumming up and pressing keys to delete those keys and strumming down and pressing keys to add notes, you just always strum down and hit the buttons you want. If there are no notes there, it creates them, and if there are notes there, it deletes them (i.e. xor). This saved a LOT of coding and actually makes there fewer things to memorize on the note editor.
2. I changed it so you press the first four buttons and strum up to clear all notes from the song. This is easier than trying to hit all five buttons.
3. The whammy goes from 1/3rd speed to full speed – not to double speed.

Everything except for a few bugs in the delete functionality works like a champ – the whammy bar functionality is pretty neat, I’m glad I could include it in the game, even if just in the editor – it at least works well as a fast forward. The only part I’m not too pleased with is due to speed requirements while recording, notes can’t be recorded in their final organized order – they have to be thrown into the end of the array and then packed when completely finished – or when the song is restarted. It takes about 15 seconds to pack, so whenever you want to restart the song in edit mode it takes 15 seconds. Not a huge huge deal, but a little irritating. I tried to optimize the algorithm, but when push comes to shove, its just a sort over 5 arrays of about 150 items each, it just simply takes a little while on a 1mhz processor. At least I don’t have to reload it off disk again though, its all done in memory until the save is performed.

I’ll be fixing up the bugs tomorrow, off to bed now!

Shredz64 – Planning the Note Editor

One of the small fixes I made today was allowing the notes to start scrolling before the song starts – e.g. if the first note appears on the board when the song starts, if this is immediately once the playboard appears, it wouldn’t give the player time to press it. In this way, there is a 2 second lead in when it shows the first note scrolling down the board, and when it hits the bottom is when the song starts (assuming the first note was recorded when the song starts). You wouldn’t think this would be such a hard thing to implement, but because of a lot of little things it was way too much time. The devil is always in the details. Anyway, its working now.

Also, I think I figured out a way to implement a usable note editor on the C64. Using the following features, I think it will work even with the limitations of SID files:
1. When editing a song, it loads whatever note data it has for a song. If no note file is found, it just starts with blank. Notes are shown on the board just like in regular play mode.
2. Song plays at 1/4th speed to allow recording notes a bit easier. However, the more the whammy bar is pressed, the faster the song plays, up to double speed (e.g. fast forward).
3. If the player strums down while pressing buttons, those buttons are recorded at that position in the song.
4. If the player strums up while pressing buttons, those buttons are deleted at that position in the song (if they’re there. If they’re not nothing happens).
5. If the player strums down while pressing no buttons, the song is saved.
6. If the player strums up while pressing no buttons, the song restarts (since its pretty much impossible to “rewind” a sid, restarting and then using the fast forward function is a good alternative, especially considering SIDs aren’t that long generally.
7. If all 5 buttons are pressed and player strums up, the entire song is blanked out and restarted.

I think this will allow the player to keep restarting and recording things just the way he/she likes them and then continue on to the next section and do the same, and finally save. I think this will work and I won’t have to make a windows editor, which I really didn’t want to do (because of wanting this to be done and wanting to keep everything on the C64 platform). Anyway, work on the note editor will start this week! It will probably take me a couple days. Then I’ll be picking out sids and recording notes (now that I have a nice note editor), which will take a couple days. I have a vacation coming up on the 25th, so by the end of that week, everything should be done (except firmware updates on the PSX64) and a video should be up! We’re almost there!