But much progress has been made. There is now a working game which, I’m happy to say, seems to be great fun to play. After a couple of false starts with music it looks like that will be in within days.
The Commodore 64 used a 1 Megahertz 8 bit processor with 64 kb of 8 bit memory. To do 16 bit operations it had to do 2 reads of memory. In these days of 4ghz (4000 times faster), 64 bit buses (8 times more data for each read of memory), and typically 8GB of memory (125,000 times more), it seems unbelievably slow. Making the Commodore 64 sing and dance is a real challenge!
1 MHz 4000 MHz (4GHz) 4000
64 Kb 8,000,000 Kb (8Gb) 125,000
8 Bit Memory 64 Bit Memory 8
1 CPU 4 CPUs (Quad Core) 4
If I am correct, that makes a typical PC today 16 billion times more powerful than the Commodore 64!!! (4000*125,000*8*4). And that’s not taking other efficiencies into account!
To get Sleepwalker into 64kb I am compressing the screen data. Each uncompressed screen needs approx 1.5kb, if I have 60 screens that’s approximately 90kb, which of course won’t fit into 64kb! I don’t want to be loading from disk, so I’m compressing the screens. That’s great, but there is so much compressed information that it is getting slow to decompress and there is a visible glitch as the game decompresses the data. I am rewriting the screen compressor (again) so that the information will decompress much faster. We are now compressing 18 screens into 4kb, and, once this rewrite is done, it may be even less.
I’m loving the retro challenges of a 1mhz processor!
I’m having more game ideas than can possibly be implemented. The good news for me is that we are limited to 64 kilobytes, and so I’m restricted by that as to what can be put into a game. Else, I don’t think I would ever finish!
Sleepwalker has moved from many hours of writing code to perform various tasks, (these tasks are the building blocks of a game), to being closer to a real product.
If you didn’t know, I had lost every piece of source code to every game I wrote in the 80s. I’ve had to write everything for Sleepwalker 2016 from scratch. However, we are at a place where we can start putting the different building blocks together and focus on the player experience. There are many bugs which need to be isolated and removed, but there is a game taking shape. Sleepwalker has moved from a good idea to the beginnings a tangible product! Many hours to go before we have a beta version which will need game testers, but I can see that point approaching!!
I’d been worried that we might not get music for the game. I thought I had it sorted weeks ago, but it became apparent that the musician wasn’t going to be able to deliver. I was then pointed to another C64 musician, but emails I sent to him bounced back. So I posted on Lemon64 and CSDB, and, suddenly, the problem isn’t worrying about whether or not we’ll have music, but how not to upset people when I say “I’ve decided to go with someone else“!.
I was pointed to a genuine piece of fairground music done for the C64. It’s brilliant and I’ve put in the game, only to find out it’s not original but actually a copyrighted piece of music written especially for a travelling fairground in 1984! I emailed another musician a couple of days ago, he’s done similar music to what I want, but he hasn’t got back to me. I think we will have a professional piece of music fairly soon, I just hope I don’t upset/offend anyone on the way!
I’ve started work on the status area. I’m using 3 screens by 3 screens to test the game. Sleepy now goes Sleepwalking, and, when he’s off the current screen, we need a way to tell the player where he is. I started with simple arrows, but that looked bland, so I decided to animate the arrows to draw the players eye to them. This involves animating the bits used for the character. Unthinkingly, I multiplied the character number x8 to get the offset to the character bitmap. Since any character number greater than 32, when multiplied times 8, will give a result greater than 256, and 256 is the maximum offset that can be held in one byte, I accidentally started animating the character used for the lift piston. It looked so good that I just had to figure how I had done it (accident), and have kept it in the game. The arrows for Sleepy’s location are done, but here they are animating too quickly. See below…
It’s been a few weeks, matters that had to be attended to, but I’m back on the job. Many of the game elements are in place. Once I have the building blocks all working properly I can put them together and have a working game.
I now have 9 different test screens. Next is the code that switches the game to the adjacent screen when a game character reaches the edge.
I thought I had someone for the music, but I don’t. If you know someone out there who is a brilliant C64 musician, and they are itching to have their work in a new game, please let me know!
Gravity meant that Sleepwalker always ended up at the bottom of each screen. The solution? Put in a lift!! Hero and Sleepy don’t interact with it yet, but we now have a way to get Hero & Sleepy quickly back up to the top of the screen.