The Kong-Fu Masters title screen and main menu

The dream behind it

I have wanted to publish a game since I was a teenager, and I have been not quite managing it for forty years.

On the Amiga I wrote a couple, and we actually tried to sell them. I had contacts in Sweden who had contacts in the industry, or said they did, and we pitched. Nothing came of any of it. The one that got closest was a game inspired by Sega's Hot Rod, though it was not a conversion. It was its own thing, played differently, and it was enormous fun to build. Then in 1990 Activision published an official Amiga port of Hot Rod, and any interest in something that sat near it evaporated overnight. That was that.

Since coming back to the C64 I have written games, but always inside the scene rather than as products. Worms Borders 93%, which does what the name suggests and runs the whole thing in the borders of the screen, took a shared first place at the Borderline compo in 2021 alongside Camelot. Sir Arthur Preview, an all-PETSCII demake of the first level of Ghosts'n Goblins, won the Wild compo at Gubbdata 2022. Both were released, played and voted on. Neither was a thing you could buy in a box.

I have also had a long-standing admiration for Antonio Savona and what he has done with C64 games, and since he is a friend I have picked up a lot of good advice from him over the years. At some point admiring somebody else's work stops being enough and you want to do it properly yourself.

So when Mikael asked, the answer was never really in doubt.

This will be a commercial release, boxed, on a cartridge. It is not about money: if we sell a few hundred copies that will be a genuine result, and nobody is retiring on it. It is a thing I wanted at thirteen, finally getting done.

The invitation

Mikael has a habit of pulling me into interesting projects when a sharp coder is needed. This was another one.

In 2023 he and Lobo decided to make a “little” game for the C64: a brawler where you could pick your opponent up and carry them off a ledge, Smash Bros style. They needed someone to write it, so they asked me, and they asked DivertigO for the music. As Lobo tells it, we both said yes mainly because we also wanted to throw people off ledges.

Lobo built the world around it. The backstory, the characters, the look and the whole tone of the thing are his.

That became Kong-Fu Masters.

Les Ronrons

Les Ronrons is the name we publish under. It arrived when we needed something to put on the box, and it is a play on cats purring, which in French is ronron. Lobo loves cats, and it stuck.

A story screen: four-armed DJ Mega Kong-Fu announcing the tournament
The setup

The game

Four-armed DJ Mega Kong-Fu is holding a tournament. The prize is a golden floppy, spray painted. Three fighters, a cat, a dog and a fox, brawl through twelve rooms until one is left standing, and the winner claims a place in the Kong-Fu Hall of Fame.

One, two or three players, with the C64 taking over whoever is missing. Twelve rooms, all fully animated, from dojos and Chinatown to a waterfall and a dragon above the clouds. Collect the presents scattered through the levels and you unlock the minigames: defending noodle bowls with a slingshot, kicking vinyl thrown by a DJ, and an auto-scrolling run.

And at the end you fight the final boss, who is called Hon-Cho. That was Lobo's idea, not mine. I have coded my own boss fight against a version of my own handle, and I have made my peace with it.

The character select screen showing the Dog fighter
Pick your fighter: cat, dog or fox
A fight in the dojo room
Room one, the dojo

What a game asks that a demo does not

In a demo you control everything. You know which cycle you are on, and you can write code that only works in one situation, because that situation is the only one that will ever occur. It rewards tricks.

A game will not sit still for that. Three players do whatever they want, in whatever order, and the code has to hold up every time. So it needs structure rather than cleverness: a proper state machine, rules that survive every combination, and behaviour that stays correct when things happen in an order you never pictured. That shift, from tightly scripted to genuinely interactive, was the biggest adjustment coming from demos.

Three fighters battling in front of a huge dragon above the clouds
The hard part

Teaching the C64 to fight

The hardest part of the whole project was not the fighting engine. It was the opponents.

The design decision I would make again is that the computer players never move anybody directly. They write into a joystick variable, and the input layer feeds it to the game exactly as though a human were holding it. The AI goes through the identical state machine you do. It cannot cheat, it cannot take shortcuts, and anything you can do it can do.

On top of that sits a set of per-room tables: how likely this room's opponent is to punch, to throw a high kick or a low kick, to grab you and carry you off, how often it defends and which move it chooses when it does. Hon-Cho gets his own, for the fireball and the chain. Getting opponents that are fun to fight, and that feel different as you go deeper into the game, came down to tuning those numbers and then playing it again, over and over.

Three fighters on the platforms of the waterfall room
The delicate part

Eight sprites, three fighters

Each fighter is built from four sprites. Three fighters want twelve. The C64 has eight.

Player one keeps four of its own. Players two and three share the remaining four, swapped mid-screen by raster interrupts that fire a few lines before each one is needed. The difficult case is when those two fighters end up on top of each other, because then there is no time to reuse anything, and the code switches to a different interrupt chain built for the overlap. The timing is cycle-calibrated and patched into the code as it runs.

It is the most delicate thing in the game, and when it works nobody notices it at all.

A megabyte on a cartridge

We chose a cartridge because we wanted more graphics and music than a disk would hold. That gives us 1MB of EasyFlash, 128 banks of 8KB, all assembled as a single unit.

Some banks are decompressed into RAM and run from there. Others execute in place, straight out of the cartridge, because there is not enough RAM to spare. Every animated room is stored as the difference between one frame and the next, and the assembler generates code that writes only the bytes that actually change. That is how twelve animated rooms, three minigames, a story sequence and a tune per level fit at all.

Everything on the cart is compressed with TSCrunch, which Antonio wrote. I was one of the people who tested it for him back in 2022, which I did not think much about at the time. It is quietly satisfying that the compressor I helped shake down is now the thing squeezing my own game onto a cartridge.

The pace of a hobby

This runs on whatever time is left after work, family, the house, and the scene work we all keep doing on the side. So progress comes in bursts: a long push, a quiet stretch, then back at it with real momentum. That is simply how a project like this gets made, and I would rather be honest about it than pretend it was a steady march.

The half that is not code

A commercial release means box art, cartridges and burning them, packaging, shipping, and the whole logistics chain behind getting a physical object to somebody's door. Lobo has carried nearly all of that, including finding the partner who will make it real.

It turns out that “just” writing the game is roughly half the job.

Where it stands

The game is close, but it is not finished. This is a look at the journey from near the end of it rather than the story of a completed thing, and I will update it when we get there.

Forty years is a long run up.

← Back to the C64 Scene