C64 Dreams Deluxe (work-in-progress)
For the past 6 months or so, I've been working on a massive side project of completely revamping, reworking, and expanding my C64 Dreams collection into a much, much larger set, which I'm calling C64 Dreams (Deluxe). It's been reworked from the ground up and no longer uses DOSBox + CCS64, it now uses Retroarch, and has a number of new features. There's a discussion thread about the project on the Launchbox forums here.
TLDR / What is it?
This is a huge work-in-progress collection of hand-picked C64 games (1000 currently), demoscene demos, SID music and C64 magazines. 100% of the collection has been tested, streamlined and custom-tailored to get you into the games and playing as easily and quickly as possible. It's also portable and doesn't require any front-end to function (though it does come packaged with Launchbox).
I've always been extremely picky when it came to C64 emulation. Having done my time with a real C64 as a kid, I have no desire to go back to the hassles that that entails (extremely long load times, cumbersome disk swapping, constantly swapping joystick ports from game to game, etc.) and, having been into emulation since the late 90's, I've messed around with a lot of different C64 emulators over the years. In nearly all cases there was always something that just rubbed me the wrong way; something that kept it from being exactly what I wanted. That said, CCS64 had always been my emulator of choice, because it got the closest to what I wanted. The Windows version of CCS64 has some significant... idiosyncrasies (more like bugs) however. What I ended up doing was using an admittedly rather convoluted method of setting up the DOS version of CCS64 (yes, it's that old) in DOSBox Daum which actually worked a lot better than you'd probably expect. I had custom joystick controls that allowed me to swap ports, swap disks, fast forward, have a dedicated button for up on the joystick (useful for platformers), and it had the massive boon of "Maximum 1541 Speed", an awesome auto-warp feature in CCS64. I was relatively satisfied with that collection, but knew that eventually I was going to have to expand it into a larger project. And thus began C64 Dreams (Deluxe).
For the first month or two I continued to do the same thing I had done with the original collection but simply expanded the library. The further I got, however, the more some things started to creep through and bother me. There were a few things that I just could not remedy no matter what I did. Fairly frequent, inescapable vsync flaws were basically the final straw for me. After literally months of work and an insane amount of testing, I finally came to the conclusion that I just needed something else. It just wasn't where I wanted it to be. I was at about 600 games completed when I decided I was just going to have to burn it all down and rework the whole thing. feelsbadman.jpg
I kindof went back to the drawing board at that point and decided to do a fresh sweep of a bunch of different emulators to see if anything would be satisfactory. I used Vice (both SDL and GTK3), Hoxs64, micro64, C64 Forever, Yace64, Frodo, and several versions of CCS64. CCS64 2.0B in DOSBox was still better than basically all of these options, which didn't exactly bode well. Finally I tried Vice in Retroarch. I love Retroarch and I've used it for years, but computer platforms is something that can pose an issue, as that tends to introduce a lot of additional complications; moreso than a typical console. After a fair bit of fiddling, however, I could see that there was real potential there. Something that Retroarch excels at is giving you the ability to custom-tailor your settings for individual games, which is really essential for this project. Fast forward a couple weeks and I had something working really well that was actually shaping up to be what I wanted.
Breaking down the features of my prior setup and the new one, it's a pretty clear choice. It doesn't have savestates (yet), but if that's my only complaint, I can live with that. I've actually spoken with Hidden Asbestos (he's worked on a number of Retroarch cores) about potentially adding savestate support, and he said it's something he wants to do, but didn't have a definitive time on when this would be done. C64 games are generally short to the point that a lack of savestates isn't necessarily a huge deal, and the ones that are long typically have their own save system. It would be nice to help cut out initial loads/cracktros however, as you could just load straight to a state after that.
At this point, you're probably saying "Well that's great and all... but what about the games? What's in it and why should I care?"
Something you have to understand about the C64 is that its library is absolutely massive. There are literally around 30,000 C64 games. To put it into perspective, if you took the entire libraries of NES, SNES, Genesis, N64, Dreamcast, Playstation, and Playstation 2, combined all the games together and then multiplied them three times it still would be less games. Think you have a hard time deciding which Playstation game to play? Try diving into the C64 library some time. It's insane. My goal with this project is to bring some semblance of order to all that chaos, while providing a play experience that's as simple, streamlined, and pain-free as possible.
Gamebase64 is a collection of essentially every known C64 game. It's one release per game (often times several different cracking groups would release their own version of any given game, in some cases with 10+ groups releasing their own version of the same game), although it does include alternate regional/language versions as well. The end result is about 27,000 games in the library. It's an incredible accomplishment and an awesome resource, but it presents an obvious problem - where do you even begin with all that? For every Last Ninja or Bruce Lee there are at least 10 games that look like this.
This presents a ton of noise to have to filter out. Sure, you could find a top 50 or top 100 list of "greatest C64 games of all time" or some such and call it close (even though you honestly can't even scratch the surface with that few games), but I wanted to do a genuinely deep dive. It's a platform I've loved since I was a kid, and one that I want to help more people experience, including lesser known games; the C64 is packed with hidden gems that have never had the honor of finding their way into some paltry little best of list. When I was a kid, I had the benefit of having literally boxes and boxes full of generic hand-written label C64 disks (clearly entirely legit) that I would just pore over like an absolute treasure trove, and I found all kinds of neat and weird stuff. I guess it's all come full-circle.
So how am I going about the selection process? Well, I'm literally going through the alphabetical screenshot folders in the Gamebase64 collection by hand and picking out anything that looks interesting. There are over forty two thousand images in there... I'm currently making my way through "D". To put into perspective the amount of filtering I'm doing, there are 9227 images between # and C, and I have 529 games in the collection within that range. Once I find a game that looks interesting, I don't actually pull out the Gamebase64 version (not typically anyway). I source most of the games from csdb.dk because I like to individually pick and choose which group to use (and sometimes there are newer/better versions than what's on Gamebase64, like an Easyflash version) - I sortof have a mental flow chart of group priority, which is something like Remember > Triad > Genesis Project > Nostalgia > Hokotu Force > Laxity > Ikari > whatever else. Then I set the game up and test it. In some cases there might be some issue with a particular version of a game, like it might not work with True Drive off whereas a different version would (with True Drive enabled, it emulates the original drive read speeds, which is required for some games to work, but results in significantly longer load times), so then I'll try a different version and see if I can get around that. Only 5.7% of the games currently in the collection have True Drive enabled, which means speedy load times for the vast majority of them. In some cases I've gone through 10 different versions of the same game to find the one I want. I also set each game up to use the correct joystick port (which varies from game to game) so you don't have to guess every time you load up a game whether or not you'll need to switch it - it's done for you already. In some cases I'll add in my own custom joystick controls like with Spellbound Dizzy, a game that's ordinarily keyboard input only. I've also mapped a number of handy functions to the controller, but more on that later.
I'm currently at 1000 games complete and, as I said, I have a long way to go. This is something that I will be continually working on for, very likely, several years. However, I thought this would be a good point to put out a sortof "alpha" release to get it out there for people to play around with, see what they think, and give me some feedback. The full list of all currently available games, along with game-specific notes can be found here:
The collection can be imported into existing Launchbox libraries, but this requires a bit of additional work. I'll be providing some instructions on how to do this and will streamline a separate import-only version in the future, but the current version is just a standalone LB package. You can copy your existing license file, if you have one, into the folder and it'll function just like your normal version of LB. It's functional without that though. If you're really set on importing it into your existing library as-is, we can walk through how to do that.
I've tried to incorporate as many useful functions into the controls as possible. These will take care of the most common situations, but it should be noted that a keyboard will still be required because you'll need access to things like the F# keys on occasion as well as other specific things in one-off cases. Disk swapping works using .m3us and, as such, functions just like any other platform in Retroarch that has .m3u support, like Beetle PSX. If y ou want to swap from disk 1 to 2, you would use Eject/Insert Disk > Next Disk > Eject/Insert Disk. In this case that means you simply press (on a 360/XB1 controller) Back+RB > Back+Y > Back+RB and then you just keep on truckin'.
Many games have cracktros and trainers (cheats) before the game starts. Ordinarily you'll press space (or B on the controller) to bypass these. You'll often press N or Y to indicate yes or no on a trainer screen, and this can be accomplished with the left and right joystick buttons. Some games have doc screens (explanation of a game's story, controls, etc.) and will say to press "Runstop" in order to proceed - this is mapped to the start button. The C64 only had one fire button on the joystick, so it was somewhat common practice in platformers to use up on the joystick to jump - this will most likely feel pretty awkward for new players, so I've added an additional mapping to send an up input on the X button - giving you a dedicated jump button. If you need a reminder of the mappings, you can press Back+Start to display the above screen in-game, then press it again to go back to the game.
The keyboard can be used for joystick input as well.
8456 on the numpad = Up, Left, Down, Right Left Alt = Fire Left Ctrl = C= Key ESC = Runstop Numpad * is the combo key Numpad * + Numpad 0 = Eject/Insert Disk Numpad * + Numpad 8 = Next Disk Numpad * + Numpad 7 = Previous Disk Numpad * + Space = Fast Forward Numpad * + ESC = Quit
While not exactly a primary feature, it's probably worth noting here that this collection does not in any way require Launchbox or any front-end for that matter in order to function. Launchbox is and will continue to be my front-end of choice, so it's what it will be packaged with, and what I use it with personally, but this collection is setup in such a way that it can function independently of the front-end, because it's all setup with .bats. Each game, each demoscene demo, etc. has its own .bat in their folders, these .bats are setup with relative paths so all you have to do is start the .bat and it does everything else for you. As far as the front-end is concerned, these are just like starting a PC game - no emulator is specified in LB, as the .bats already take care of starting programs, directing files, etc. So if you want to use something else, go for it.
The thought occurred to me while I was working on this that I could expand it beyond just games, and incorporate Demoscene demos, SID music, and even C64 magazines into the collection as well. One C64 collection to rule them all, as it were. I really liked the idea of doing this because the C64 scene is still huge, and very much alive and kicking, and there's a ton of great stuff out there outside of the games themselves. This aspect of the collection is still very much in its infancy, but there's some interesting stuff here f o r you to check out. There are currently 25 demoscene demos, 25 SID tracks, and 66 magazines available. The SID tracks are setup both with the disk version (default launch) as well as standalone .sid files with a built-in player (accessible via the right-click menu).
The library is broken into Games, Demoscene, SID, and Magazines, some of which are further broken out into specific playlists. There are separate playlists for Commodore Force, Commodore Format, and Zzap!64 in Magazines, for example. Games has playlists of favorites, Best Of Vol. 1 (this is the 128 games featured in the original release of C64 Dreams), and Best Of Vol. 2 (this is a new set of 128 games). I'll be creating more Best Of playlists as I continue to expand the library.
A number of additional tools were needed to brin g all this together, so I wanted to take a bit of time to go over those.
AutoHotkey: This one's kindof a given. I used it extensively in the previous version of C64 Dreams, which brought about its own set of complications. The current version pared this back significantly and at this point basically all it's used for is to 1) move the mouse cursor out of the way on launch (the mouse is always visible in Retroarch if overlays are used, so this moves it off screen) 2) to start Antimicro as well as specify the Antimicro profile to use (customized in the case of certain games like Spellbound Dizzy) 3) close Antimicro and AHK once Retroarch closes. I've converted these to .exes (via Ahk2Exe) so that you do not need AHK installed on your computer for this to work, but if you want to know what's in the scripts specifically, they're available for your perusal in the C64 Dreams > C64 Dreams > Utilities > AHK Script Compiler > Completed folder.
Antimicro: This is an open-source joystick mapper, similar to something like Xpadder. I use this to map the arrow keys to the right stick for all games as well as pipe in custom controls in one-off cases.
CDisplay Ex: This is a great comic book viewer that, in this case, I'm using to display the magazines.
BZRPlayer: This a lightweight, portable music player that supports a huge range of audio formats. I use it to play the standalone .sid files in the SID platform.
FastStone Image Viewer: This is a lightweight, portable image viewer. I use it to display the commercial game message, which is actually just an animated .gif.
This is designed, by default, for 1080p resolution. If you use something else, it will still work, but is going to need a bit of adjustment. I have the base resolutions covered for 1080p, 1440p, and 4k. You can switch between these by going to the C64 Dreams > C64 Dreams > Utilities > Screen Resolution Adjustment folder and starting 1080p.bat, 1440p.bat, or 4k.bat (I'll be adding these to a separate "Utilities" category in LB later). Thanks to a couple users on the Launchbox forums, I was able to get 1440p and 4k mostly sorted. However, while this takes care of the vast majority of cases, there are 13 specific games where I do some custom cropping because the games made weird use of the overscan space. The base settings cover all but those 13 games. The games in question are as follows:
Alien Syndrome Another World Bangkok Knights Cyberall Draconus Heatseaker It's Magic It's Magic 2 Mega Phoenix No Mercy Phobia Tiger Claw Wizball
This means that if you're on a non-1080p resolution, the cropping is going to be a bit off on these games. This is something that I want to remedy, and will be able to incorporate into the resolution change .bats, but only with the help of someone who has a 1440p/4k monitor at their disposal and is willing to help me test and fiddle with numbers. If you're using something other than 1080p, 1440p, or 4k, I can incorporate that as well but again will need your assistance in testing in order to do so.
If you're using Windows 10 and are using 1080p but most of the screen is cropped off, you may need to adjust your "high DPI settings". Go to the C64 Dreams\C64 Dreams\Retroarch folder, right-click on Retroarch.exe and select "change high DPI settings", select the checkmark "override high DPI scaling behavior performed by" and select "application".
There are a number of modern C64 games in the collection (as I said, the C64 scene is still very much alive), and a few of these are still commercially available - 8 of them, to be exact. Because of this, the roms for these games are not included in this collection. The game details spreadsheet has links to where these can be purchased where relevant. Then you simply drop the .d64 file into the relevant folder, name it "Disk1.d64", then start the "Install Real Config.bat" in the folder and you'll be good to go. Until you do this, when you start those games, you'll just see the following message:
As I said though, this only accounts for 8 games in the entire collection. The specific games in question are as follows:
At this point I just need to keep moving forward picking out and adding more games. That's priority number one. More music, demos, and magazines will be added as well, but that's of secondary importance. 12% of the games don't have covers, and I'm using a screenshot in lieu of one - I've been in the process of coming up with some form of generic cover that I can slot game-specific stuff into to address these, but it's not done yet. I actually really like Lassiveran's cover project and use those wherever available. That doesn't cover everything in here though. While I'd certainly be thrilled if he were able to take care of the missing ones, I know that's a lot to ask, so I'm not expecting that, which is why I've been trying to come up with something on my own. That's basically priority number three. Beyond that, I'm also creating video snaps for all of these. That's at the absolute bottom of the pile though and will have to remain on the backburner for a while as it's just not as important as the other stuff.
This is basically where I'm at content-wise, which I realize makes it looks like there's nothing here, but it's just that there's still a long way to go from what is already a lot of stuff.
So that's pretty much it! I'm looking forward to having some more people test it out, provide some feedback, and let me know if there are any issues that I need to get sorted out. Have fun!