Hello! Sorry for not posting for almost 3 years. I've been busy making games. Here's one of them:
I just released it to the public and decided to write a blog post about it. If you want to try it out, you can download
TULT 64 for free from Itch.io.
TULT 64 on itch.io
TULT 64 is a puzzle game based on a rather obscure Atari ST title that gained some infamy a couple of years ago. But let me start from the beginning:
A BRIEF HISTORY OF TULT

TULT was a puzzle game created by Walter Siracusa in 1990 for the Atari ST. It was briefly available as a standalone title (published by Pressimage, mail-order only). Later that year, Walter created a point-and-click adventure game called Pentacle (also published by Pressimage) and put TULT in it as a bonus game.
Decades later, in 2020, TULT reached a larger audience when Twitch streamer Macaw45 encountered it while playing Pentacle and figured out how to play it, despite the somewhat rough instructions.
This, in turn, inspired MP83, a fellow retro game enthusiast, to create a modern version of the game for Windows. The remake came out in December 2020, and this is how I got to experience TULT.
|
As someone who enjoys puzzle games, I found
TULT's design quite fascinating and unique. While the first level felt rather difficult as an introduction, I eventually grasped the rules well enough to advance further. It's a compelling game!
On a lark, I felt inspired to sketch a mockup screen of a C64 version. I went with an old TV aesthetic because the original had something similar going. If the game had a backstory, it would be about fixing broken TVs by moving electronic components around. That's how it worked, right?
If you've read this blog before, you know that I like to analyze how games handle the C64's hardware restrictions. The mockup gave me an opportunity to think about those kinds of details, like how to display square blocks that can have up to four differently colored sides. I already knew the game would have to use Multicolor Bitmap Mode to allow for more colors.
 |
| The first mockup of TULT 64 |
I posted the image on hayesmaker64's Discord server in May 2021 and then promptly forgot about it for almost five years.
BUT THEN...
Over the past few years I've worked on several C64 games in parallel, in various spurts of productivity (or lack thereof). At one point, I came across my test graphics for
TULT 64 again. The clear scope of the project made me realize that I had a realistic chance to actually finish it within a timeframe that didn't consist of months of inactivity.
For once, I was right, and here's the result:
So, what's this game about?
THE RULES

Blocks in a grid must be pushed together to form one or several connected shapes. Each block has one or more colored sides. These sides must be connected with the color-matching sides of other blocks.
Each block also has a digit printed on it that goes down each time the block is moved one orthogonal grid step. When the digit reaches 0, it disappears, and the block is locked and can't be moved anymore. A stage is solved when every block is locked and all colored sides match.
Blocks can't jump over other blocks, so the order in which they are moved is an important factor in solving a stage.
|
Compared to the original
TULT, the C64 remake has some additional features:
- 60 stages (19 original + 41 new)
- Password system
- Unlimited undo function
- Funny hats
Ok, I made the last one up.
PLEASE UNDO

I am particularly chuffed about the undo function. Not because it was hard to implement (it wasn't), but because of the roundabout way that made me realize the game needed one:
To test the game's stages, I copied it onto my phone and played it through RetroArch during my daily train commute. I am well aware that playing on a phone with touch controls is not ideal, but the game doesn't require fast reflexes, so that shouldn't be a problem. Or so I thought.
You wouldn't believe how many times I had to restart stages because I accidentally touched the wrong button and moved a block in the wrong direction. At one point, I started furiously savestating before every move, and that's when I figured the game could use an undo function.
At first glance, Unlimited Undo sounds like a memory nightmare. Thankfully, TULT's gameplay rules make the feature much simpler: Since every block has only a limited number of moves, the total number of undo steps that need to be kept in memory is just the sum of all move tallies. The most complex stage has a total move tally of 41, so I settled on 50 as a maximum number of undo steps.
|
The original
TULT includes digitized speech samples (spoken by Walter Siracusa himself), and I wanted to keep them in
TULT 64 as well. I had no idea how to do that on a C64, but luckily there's
Codebase 64, which has a whole section for sample playback. I ended up using the NMI Sample Player by Groepaz/Hitmen.
The result is rather scratchy (as expected with the low bitrate), but I think it's intelligible enough. I also use a common trick to make the samples easier to understand: Subtitles!
Even if you can't make out what's being said by audio alone, the large text kind of forces the meaning upon you.
While I don't want this blog entry to turn into a full-fledged making-of, I'd like to point out one technical detail that is sort of hidden in plain sight:
IMPOSTORS!

Multicolor Bitmap Mode offers more color variety but can be quite slow when lots of pixel information needs to change at once.
This is fine for a puzzle game with a largely static screen. However, if you see TULT 64 in action, you might be wondering how I made the blocks glide between grid tiles.
It's sprites, acting as block impostors.
Whenever a block is moved, it is temporarily portrayed by a stack of four sprites. This allows me to easily create smooth movement between grid points. The sprites also conveniently hide the slow removal and redrawing of the bitmap block.
The reason I need a stack is that a single sprite can't display enough colors to fully impersonate a block. Multicolor sprites can have three colors, but of these, only one is unique (the foreground color), and two are shared among all sprites (multicolor 1 and 2).
Thus, I need to split the colored sides of a block into two separate sprites. One displays the colors of the top, left, and bottom sides (using the sprite's foreground color and the two shared colors), and the second sprite displays the right side's color (using only its foreground color).
Below that, an additional sprite displays the block's gray base color with the digit in the center as transparent pixels.
And finally, a y-expanded sprite represents the block's black background that also acts as a pseudo-shadow. It's y-expanded because a sprite is normally only 21 pixels high, and I need 24 pixels to fully cover a block's height.
|

The new stages I made are interspersed between the original ones. I tried to create a gradual difficulty curve, with the first few stages acting as a tutorial. Although gauging a stage's difficulty is very subjective, I could at least order them by the number of blocks they contain. The range goes from two blocks to thirteen. The last couple of stages are some real head-scratchers.
A stage's
YEAR in the HUD indicates whether it's an Atari ST original (1990) or new to
TULT 64 (2026). The originals still appear in the same order, but new stages are wedged in between, where I thought appropriate.
CONCLUSION
TULT 64 is my first officially released C64 game. I created many (BASIC) games in the distant past when the C64 was still my primary computer. None of them are available for download, for good reason. Except for
V, which I wrote about in the
previous blog entry.
It's kind of fitting that my previous post was about my first C64 game, and now I'm writing about my latest. In any case, if you have a penchant for puzzle games, I'd be happy if you gave
TULT 64 a whirl. Both .d64 and .prg files are available for download, and a manual is included as well.
Click here to achieve TULT!
No comments:
Post a Comment