Impossible C64 Raycaster

c64.monster

9 min read Original article ↗

Demo disk 0_1_0 · PAL Commodore 64

A textured first-person shooter and a self-driving neon city, running on a stock Commodore 64. Sixty-four kilobytes, one megahertz, one floppy disk. No cartridge, no RAM expansion.

Machine
6510 · 1 MHz · 1541

On the disk
4 worlds, 1 floppy

Built
2020 → 2026

Impossible C64 Raycaster on a Commodore 64: the garden of ruins under an open sky, drawn by the C64 itself.
The garden of ruins — a real frame from the disk

01 The game

One floppy, four worlds

Put the disk in and type LOAD"*",8,1. The C64 takes you from a sunset over the sea to a Doom-style dungeon, then hands you a car in a neon city that drives itself through a six-minute day. Find the way out once more and the city comes back twice the size.

The intro: a fisherman and the devil in a boat at sunset, a speech bubble over them.
The intro · “I want to code a C64 game”

01 Part one

A sunset while the game loads

A fisherman and the devil sit in a boat at sunset. The fisherman wants to make a C64 game — a shooter, a city, all sixteen colours, and it has to run at seven to ten frames a second. The devil thinks he is crazy — until he is offered the part of the main villain. Twenty-one speech bubbles in a handwritten font, eight seagulls in the sky, a slow song on the SID.

Behind it all the game is loading. PRESS BUTTON appears as soon as it is ready; if nobody presses, the story plays to its end and the game starts by itself.

The dungeon: a soldier up close in the garden, seen through the game's textured 3D view.
The dungeon · 21 rooms, 35 demons

02 Part two

A shooter in the spirit of Doom

A menu in red letters with fire and smoke behind it, a melt, and you are in: a lobby, a hell hall, a nukage plant, an aqueduct, a gothic keep, a garden of ruins under the sky — 21 rooms, each with its own light. Imps, soldiers and blobs wait for you or come looking; grab a keycard and a new group wakes up somewhere.

Doors slide open when you shoot them, nine of them only with the right card. Seven teleport pads, medkits, armour, ammo boxes that come back a minute later, and your own face on the status bar turning pale as you get hurt. Press M for the map — the game keeps running underneath. The way out is the EXIT sign.

The city at 18:11: the sun setting between the buildings, the car in front.
The city · 18:11, sunset

03 Part three

A city that drives itself

Through the EXIT and you are at the wheel of a car in a neon city by the sea. Hold W and it follows the road; tap Q or E and it takes the next street left or right by itself. Touch the steering and you are driving again.

A whole day goes by in six minutes. Tall towers stand over the low houses in front of them. The sky changes colour step by step, the sun goes down between the towers, the windows go dark late at night and light up again before dawn. Six GPS marks to reach, with your split times on the status line.

The double-size city: low buildings under a pale sky, the car in front, the mini map in the corner.
The double-size city · four times the area

04 Part four

Then the city again, twice the size

Back to the dungeon, out through the EXIT once more, and the city returns at 144 by 126 cells — four times the area, on the same floppy, at about the same driving speed. One disk side takes you all the way: the intro, the dungeon, the city, the dungeon again and the big city.

02 Watch

How it works, played for real, and the whole disk

How disk 0_1_0 works, in seven chapters: the picture, the engine, the dungeon, the sound, the city, the floppy. A play-through with no cheats, from the menu to the EXIT: all 35 enemies, the four keycards, real damage. And the earlier disk in one take, from LOAD"$",8 to a night drive through the city.

Disk 0_1_0, no cheats: the menu, the melt, then the whole dungeon to the EXIT. 50 frames a second, an info panel on the left.
The earlier disk 0_0_3 in one take, from LOAD"$",8 to a night drive through the city.

How it works and the play-through show disk 0_1_0, the one you can download here. The whole-disk film shows the earlier disk 0_0_3. More films are on the channel: youtube.com/@C64.MonsteR. YouTube is only contacted when you press play.

03 Pictures

Real frames, no touch-ups

Every picture here is a frame of the game as the C64 draws it — the dungeon from one play-through, the city through one whole day.

04 Tech

Impossible, in numbers

Full-screen textured 3D, colour, music and sound on a machine from 1982 that has no graphics card. The 6510 draws every column of the picture itself, at about one megahertz.

  • 1MHz6510, PAL, 64 KB of RAM, a 1541 drive
  • ~11fpsin the dungeon over a whole game · below 7 for only 0.6 % of the time
  • ~9.5fpsdriving through the city · 13.6 while steering
  • 42colour rows in the dungeon's picture (38 in the city)
  • 21rooms, 35 demons, 4 keycards, 32 doors, 7 teleports
  • 33wall textures and 8 light schemes
  • 2buildings in one screen column: in the city a ray goes on past a low house to the tower behind it
  • 138bytesfree in the dungeon's 64 KB
  • 45blocksfree on the floppy, after everything

Colour every few lines

A normal C64 screen gives each block of 8 × 8 pixels its own few colours. ICRC changes the colours every few lines instead — a trick called FLI — so the 3D view gets fine colour rows at eye height, where the walls, the doors and the demons are, and wide rows up at the ceiling and down on the floor. The interrupts that set the rows, the status bar and the sound take about 4,000 of each frame's 19,656 CPU cycles; the rest goes to drawing.

One ray, more than one wall

Most raycasters stop at the first wall a ray meets. In the city a ray can go on: a building that may hide something taller carries a flag in its map cell, and a ray that hits it walks on to the next wall. One screen column then holds two buildings at different heights, each with its own distance, texture and light — the tall towers you see standing over the low houses in front of them. Which cells get the flag was worked out in advance from thousands of views.

Written by hand

Pure 6502 assembly, assembled with Kick Assembler, with every precalculated table generated by QBasic programs. Standing still costs almost nothing: a view that does not change is not drawn again.

The dungeon's 3D view with a coloured bar beside it showing its 42 colour rows: fine rows at eye height, wide rows at the top and the bottom.
The dungeon's picture and its colour rows: the thinner the row, the finer the colour.

All the numbers, the charts and the memory maps are in the tech sheet: ICRC tech sheet (PDF, 17 pages). And the film shows them moving: How it works (22:42).

05 The disk

LOAD"$",8

The directory of the real disk, as the C64 lists it: nineteen files, then the hero's face in PETSCII — twenty-one extra lines that are not files at all.

Loading with the lights on

On a 1541 the game first sends its own small loader into the drive, and the main program arrives in about ten seconds. After that Krill's loader takes over: the picture, the music and the sprites keep running while the next part loads, with colour stripes in the border.

Any drive

A 1571, a 1581, an SD2IEC or JiffyDOS: the same disk still works, with the computer's own loader. Every part is packed and unpacks itself; the city unpacks in about two seconds.

Controls
MenuControl: 1351 mouse, joystick in port 2 or keyboard · sensitivity: how fast you turn
Dungeon · mouseMove the mouse to turn, left button fires, right button walks · WS walk · AD strafe (step sideways) · Space run on / off
Dungeon · joystickPort 2: left and right turn, up and down walk, fire fires · AD strafe · Space run on / off
Dungeon · keyboardWS walk · AD turn · QE strafe (step sideways) · Space fires · hold Shift to run
Dungeon extrasM map: off, small, big · N music · T the next room · Return hide the map, the gun and your face · X leave
CheatI in the dungeon: on / off. Full ammo and life, no damage, and every key door opens on touch.
CityW gas, S brake and reverse, AD steer · Q/E drive itself to the next street left or right · M mini map · T to the GPS mark

06 Download

Take it home

The demo disk, the four games as single files, and the tech sheet. Direct downloads — no form, no email.

How to play

  1. In VICE: start x64sc (PAL) with true drive emulation, attach the disk image.
  2. Type LOAD"*",8,1 and then RUN. Want to see the face first? LOAD"$",8 and LIST.
  3. On a real C64: write the image to a 1541 floppy, or put it on an SD2IEC — it loads with the computer's own loader there.

Pick the mouse, the joystick or the keyboard in the menu, then START GAME. Stuck? In the dungeon press I: full ammo and life, no damage, and every key door opens. Press I again to turn it off.

Credits: game by C64 MonsteR · dungeon music “Floor It” by Fjaru, arranged for the SID · city music “Neon Outrun” and the intro's song by C64 MonsteR · Loader by Krill · ZX0 by Einar Saukas. This is a demo disk, not the finished game.

07 Who

C64 MonsteR

I'm Denis. ICRC started on 8 September 2020 as a hobby project; the autumn of 2026 turned it into this demo disk.

It is a demo, not the finished game. If you make videos, run a magazine or just have a C64 on the desk, I'd like to hear what you think — and if it runs on your machine, tell me which one.