Very simple converter for uncompressed KoalaPainter pictures to KickAssembler-compatible code fragments.
Go to file
Bas Wiel, van de 2db48d6b91 Add build instructions. 2023-09-06 15:16:40 +02:00
src Does what it's supposed to do. 2023-09-06 15:07:34 +02:00
.gitignore Initial commit 2023-09-06 11:29:40 +02:00
Cargo.lock First working draft. 2023-09-06 13:43:10 +02:00
Cargo.toml Initial commit 2023-09-06 11:29:40 +02:00
LICENSE Initial commit 2023-09-06 11:29:40 +02:00 Add build instructions. 2023-09-06 15:16:40 +02:00


Convert KoalaPainter files to KickAssembler ASM files. Tool built as the final stage in an integration pipeline. Most C64 graphics tools output to KLA, but that format is unwieldy to use from Assembler. Converting into sequences of bytes that KickAssembler can read permits me to put the graphics in PRG files and put them into cartridge memory banks.

It's impossible to know beforehand where in memory you'll want to assemble your bytes, so the KLA-file gets split into three parts. As an example image.kla would get converted into image_screen.asm, image_color.asm and image_bitmap.asm.

It's up to you to import these .asm files into your own code. You can use the KickAssembler #import for that.

Build instructions

Install Rust. Either through your machine's package management or have a look at for generic instructions. I'm assuming you have the cargo tool available.

From the project's cloned directory, run a production build:

cargo build --release

You'll have a binary in target/release/kla2kick that you can run.


Your input file must be a valid uncompressed KoalaPainter file. Kla2kick does NOT check for validity of the source file at all. In fact: whatever you feed it, as long as it ends in .kla, will get its bytes read and converted to byte-statement that you can use in KickAssembler. It'll most likely be complete garbage, but that's your own responsibility.

Assuming you're using it from a root directory with a graphics/ subdir, the invocation looks like this:

kla2kick graphics/picture.kla

The result will be three new files inside graphics/

  • graphics/picture_bitmap.asm
  • graphics/picture_screen.asm
  • graphics/picture_color.asm

You can use an Assembly file in your root directory to load these fragments.

#import "graphics/picture_bitmap.asm"
#import "graphics/picture_screen.asm"
#import "graphics/picture_color.asm"

..or do whatever else you want with your chunk of bytes.