Though I haven’t posted here on the blog since April, I’ve been busy working away on my Commodore 64 CRPG. Since I last posted I became a little side-tracked learning how to code certain things on the C64 as well as considering some different game styles.
At one point I was interested in creating some sort of CRPG / Adventure / Choose Your Own Adventure hybrid. I still like this idea but I eventually came back to the idea of doing a more traditional tile based CRPG – I think this is still my favourite style of CRPG although I was also tempted to go for an Alternate Reality or Bards Tale first person view – maybe next time!
I spent quite a lot of time experimenting with the various graphic modes on the C64, coding up examples thinking about their pros and cons which I’ve discussed here previously. I also worked out how to locate and reserve space for graphics and screen displays using CC65. This is the C programming environment for 8bit systems I’m using. It also includes a full assembler so I can freely mix my C and assembly language code as required in a single project. I’m only using it for the C64 currently, but it also supports platforms such as the Atari 8bit and Apple II machines. It’s taken me a bit of effort to get to grips with it but I’m enjoying working with it now.
I also spent some time using the tools in the C64 VICE emulator ( http://vice-emu.sourceforge.net/ ) and the CharPad software ( https://www.subchristsoftware.com/charpad.htm ) to analyse how some of the C64 games I liked worked and used the C64 to build their displays. Some like Alternate Reality use a mixture of modes with raster interrupts to split the screen, Ultima IV a single high-resolution bitmap screen and Legacy of the Ancients the C64’s character mode. As mentioned these can all make the game look different as well as provide different levels of flexibility, use of colour and use different amounts of memory.
In the end I’ve settled for using the C64’s character mode, initially with just high-resolution characters rather than multi-color mode. This mode allows you to display up to 256 unique characters on the screen at a time across the 1000 cells which make up the display (40 x 25 characters). Using CharPad these characters can be made up into tiles ( 2 x 2 in my case) and then used to build up a map. I can use all the C64’s 16 colours on the screen but I’m limited to a single colour on a common background for each screen location. I plan to get around the limited number of characters by loading in additional character sets for different regions.
Using CharPad I can now export my characters, tiles and map into binary files which I’m loading into my C64 program. Currently the tiles are heavily Ultima influenced but I’ll try and make them more unique as time and my limited artistic skill allows! I also hope to make use of the C64’s sprites for characters and possibly encounters. On the C64 you are limited to 8 of these without more complicated sprite-multiplexing coding which I suspect may be a bit of a challenge for me. Next time I’ll tell you a bit more about the game as it currently stands and pose a few questions I’d like to get your thoughts on.
Man, Windows gets all the good C64 utilities. Pixcen and CharPad look so helpful! Your CharPad link has a 404 error, BTW. They changed it to https://subchristsoftware.itch.io/charpad-free-edition ($0) or https://subchristsoftware.itch.io/charpad-pro-edition ($20). I’ve got to find equivalent software for Linux. Until now I’ve been writing my own command line converters, drawing in a paint program and saving as .BMP or writing hexadecimal values in a text file, then converting to binary data I can read.
I know what you mean about the utilities. I’m doing most of the coding on a Raspberry Pi 3B+ just now under Raspberry Pi OS. I’m using Code::blocks with some command lines to run Vice (that I had to install using PiKiss as I gave up trying to compile a working version of Vice from source). I’m actually thinking of trying to write some simple C64 graphics utilities myself that use C/C++ and SFML (which is working perfectly for me under Linux). I also thought of writing them for the C64 itself but thought the screen size might be a frustration. One issue with CharPad for me just now if that it’s maximum tile size is 10 x 10 which is smaller than some of my wall segments so I’m creating tiles and then having to convert the files into a single “wallset” and then print off specific rectangular sections within my code. Not ideal for this project – but it’s great for any tile based games. The compress / decompress confused me initially but now very useful to remove duplicate characters.