I wanted to push an update to this blog as I finally ripped out Google Analytics from these pages. The GA scripts got out of date and I didn’t need the analytics anyway. Haven’t touched the blog code since 2021 so it took some catching up to get the Haskell Hakyll based blog to build. If you’ve followed me on Twitter, you may have noticed I’ve gone silent there. I’m not a fan of the X site so you…
This is a tutorial on how to export debug info from projects compiled with c64jasm for use with VICE and C64Debugger . C64jasm 0.9.1 added debug symbol output support for VICE and C64Debugger. The debug info files come in two flavors: --vice-moncommands : VICE monitor commands file to show label names in the monitor. --c64debugger-symbols : KickAss debug symbols for C64Debugger. Maps program…
This post recaps some of the C64 coding tricks used in my little Commodore 64 coding competition . The competition rules were simple: make a C64 executable (PRG) that draws two lines to form the below image. The objective was to do this in as few bytes as possible. Entries were posted as Twitter replies and DMs, containing only the PRG byte-length and an MD5 hash of the PRG file. Here’s a list of…
The latest c64jasm v0.6.0 added support for JavaScript style object literals. This turned out to be surprisingly useful! Here we’ll go over this feature and some tricks that it enables. This post assumes you’re already familiar with the c64jasm assembler (see: c64jasm manual ). Object literals An object in JavaScript and c64jasm is just a dict that maps keys to values. For example, in JavaScript:…
This post is a walkthrough of a small assembly example project for c64jasm . The example project was written to illustrate the use of following types of assets in an assembly program: PETSCII (using Petmate .json exported files) Sprites (authored in Spritemate , saved as .spd v2.0) SID music files Project source code can be found in the c64jasm git repo under the examples/content-pipe folder. This…
Introduction For the past couple of months I’ve worked on the C64 VISIO 2018 invitation intro (YouTube capture at the bottom of this post). I upped the difficulty level a bit by first designing and implementing a new 6502 macro assembler called c64jasm , and then using that to develop my demo. While I haven’t had the time to polish the assembler to, say, KickAssembler level, my tool turned out to…
A collection of random C64 tool tricks. VICE Capturing the ROM charset Make ROM visible to the monitor and save data from $d000 onwards: bank rom bs "data.bin" 0 $d000 $d7fff Using exomizer to crunch executables Installation Download and extract exomizer Build it by mkdir exomizer cd exomizer make -C src The command line tools will reside under the src directory. Packing a .prg file To pack a .prg…
(Looking for the BINTRIS C64 disk image? Find it here .) Introduction This post discusses how BINTRIS uses YSCROLL manipulation to implement bad line suppression and full-screen vertical scrolling (flexible line distance, or FLD). Here are the effects in action: Vertical scrolling. BINTRIS logo warp effect. Note: all timing values in this post are for specific to PAL-B C64 models. Bad Lines To…
So I recently made this little sinewave demo effect on the Commodore 64: This generated a lot of lively discussion on twitter and /r/c64 . A bunch of people were curious as to how it works and I promised to explain it on my blog. The main idea is to use character mode with a custom character set. I sample y-coordinate every 8 pixels to produce a list of line segments [(0, y 0 ),(8, y 1 ),(16, y 2…