Area536 :: Rebooted

Sep 5, 2023 - 2 minute read - C64 gamedev

Building my own tools in Rust

Not much time to work on Larry or its surrounding projects today. Read up on the cartridge formats most of yesterday and decided on implementing EasyFlash as a CRT image. The CRT format seems to be canonically defined by the VICE emulator nowadays, so that’s what I’m going to use. The main problem there is a lack of scriptable tooling. I will not proceed with a game of this size without the ability to automate the build process.

KickAssembler and VICE had enough tools between them to allow the building of D64 and D81 disk images from a Makefile, but that’s not the case for cartridges. I need a way to glue together a bunch of PRG’s into a usable cartridge image. I coded in Rust before to try and build an MS-DOS compatible FAT disk image generator.

That’s still somewhere on the back burner as well, and it’s what informs my choice of programming language in this case. Sure this could be done in something like C or even Python, but I’m not immediately interested in learning those languages. I want to keep my Rust knowledge fresh and it’s a reasonable fit for a CLI tool that’ll be used as part of a build pipeline.

Announced my plan on Twitter and got an unexpected number of likes on it already. I guess this could be useful for the retro community at large. Will try to build this tool in such a way that it can be expanded beyond my own immediate scope.

The state of the work at the end of this day: I can write .CRT files that contain a valid header. Working on the so-called CHIP segments which are the C64 payload. Asked on Twitter for a working known-good copy of an EasyFlash cartridge. The image generator doesn’t have any tests yet, nor does it have any sort of proper software design or even error handling to it. I’m back to the cowboy style I used when I started writing Larry initially.