Tony Albrecht
@tonyalbrecht
Aussie Game Dev of 25+ years. Principal Engineer at Riot Games. Brews beer, plays games, lives life. he/him
It's almost GCAP time again! The talks are up (registration.crowdcomms.com/gcap2026/sch...) and I'll be speaking again this year, following up on last year's talk on refactoring League's Particle System. I suspect this might be part 2 of 3 as we're still not finished yet!
I finally got my cable so I can experience C64 graphics the way they were designed to be seen.
I keep telling myself I'm not going to write an emulator. But this will be one step closer to writing an emulator. So, in order to avoid the problem, I'm writing a SID visualiser. I have no idea what I'm doing yet, so I'm just displaying all the things.
C64U Debug Tool update: Added zooming in the screen view as well as an overlay for VIC behaviour (like sprite data and ptr fetches, bad lines etc) Also made it easier to find the instructions that perform the writes to registers. The Stream view now colours cycles- Red for bad lines, Grn for stack
Everything was going fine until I hit a compiler bug. It was failing to inline some of my code correctly and was overwriting my stack. That took some time and hair tearing to figure out.
I've rewritten the sprite emulation for my C64U debug tool. I'm now (more) correctly processing sprites like the VICII does - reading the data at the correct cycles, handling when they are dawn more accurately. I've been stress testing it with some of the latest demos:
Here’s a video of Comaland demo running on the C64U and my debug tool. No latency at all!
More work on my #c64 Tool. This video is of data captured live from the C64U. Sprite info moved to above the screen view. I've now got better visualisation of VIC and SID changes in the activity view to the right of the screen view - hover to show the raster line and even cycle of the change.
I've also had to rejigger the entire layout as I had the cycle counts wrong according to this diagram and incredibly useful doc from www.zimmers.net/cbmpics/cbm/...
The VIC view (cycle view) has the Sprite setup on the left and right (purple), light blue for the DMA refresh zone, green for video processing, red for when the VIC is stealing from the 6510. It's still a little buggy, but sprites in the border and open borders in general _mostly_ work.
I'm still working on my C64 too. I've been getting per cycle processing of video and memory so I can handle sprites in the border etc. I've got the basics working now, but I've also improved the VIC view (green and purple view). I'm also showing the entire processing space including overscan
It was consistently, randomly wrong. Re-prompting moved it closer to correct, but it was never even close to useful. If Google AI search is no better, why would you use it?
My precious code for my C64 tool was a little naive, so I’m rewriting it to be cycle accurate. The intent is to get the cool VICII demo abuses like open borders and FLI and DMA delay working. This is where I am now, counting pixels between my old and new code and C64 and Vice.
I've just spent a couple weeks refactoring my #C64U Tool code. Save files are now 35% of the previous size and code is much nicer. Added register view to the activity, showing which VIC (green) and SID (blue) registers have been written to on which scan line. And, even better....
#C64 Tool - I've managed to get some Hotel programming time in. Added sprite details including a sprite view of the memory. Next thing I want to do is add the ability to step through the code, instruction at a time and to set breakpoints in code and on memory read/writes.
I'm heading to the States next week, and I wanted to be able to keep working on this while I'm there. So I made a way to save and load a couple minutes of gameplay. As I side effect, I can now scrub backwards and forwards! Great for hunting down those one frame glitches!
To be clear, I have spent WAY too much time programming this Easter weekend. My #C64 Ultimate tool now does a lot more - it shows sprites, toggles the different view modes, shows interrupts, reads(green)/writes(red) and VIC 2(blue) access in the memory view. Testing it on Demos now...
Good Friday is a Good Day for C64 programming! Added raster interrupts and sprites to my #C64 Ultimate Tool! I can connect to the C64U with this from my PC and inspect games and demos in realtime. It's still a little flakey but it works!
I am having way too much fun. Screen view in text and bitmap modes is working. Added a disassembly mode which syncs with all the views. So, you can click on the memory map and see the hex and disasm, or click on the screen view and see the memory in the hex and disasm views.
My C64 Ultimate tool now has a screen view mode. It shows whatever is on the C64's screen (well, almost). Colour is wrong but its definitely close. Runs in realtime (Karateka is crazy slow).
I now have realtime views of the full memory map of my C64U! In this video you can see the memory map (mono hires), VICII view and Hex View memory, all running async. I'm using the Debug stream functionality - consuming UDP output of every instruction on the C64 and decoding it in realtime.
On the weekend I saw Bloodywood supporting BABYMETAL. So much fun. Good to see a younger, more diverse crowd too.
After a productive hour, I have a VIC II view window working. Each entry updates live, and you can change it and see the C64 react accordingly. You wanna change the border colour, just + the 53280 value and watch it change. Next I'll add bitviews so its easy to toggle individual bits in a register.