labyrinth (LabyrinTwo)
LabyrinTwo - a two-player maze duel for the Commodore 64 (ACME + VICE), in the same spirit as rabbitc64.
A fresh maze is carved every round on a 39x23 lattice where the walls
are exactly as wide as the corridors. Player 1 (joystick 2, or
w a s d) runs the corridors toward the green diamond exit while
dodging the roaming colored enemies. Player 2 (joystick 1, or
i j k l) rides the corners of the walls with a blinking cursor -
fire (or return) spins the four wall pieces around the cursor by
90 degrees, reshaping the maze in real time. A spin is denied while
anyone is standing in one of the four slots.
The options screen adds two optional twists:
- runner gun - player 1 shoots a bullet with fire/
space; a hit enemy respawns on a random cell after a pause. - spin cooldown - each spin starts a recharge; further spins are denied until the draining bar on the status row runs out and the readout flips back from wait to ready (the cursor also dims while recharging).
Screens: TTG intro (ported from rabbitc64) -> main menu
(play / options / rules / controls / credits) -> game -> win (back
to the menu) or game over (fire retries with a fresh maze, m backs
out to the menu).
Build & run
make deps # macOS: brew install acme vice
make build # -> labyrinth.prg
make run # build + launch in x64sc
Test builds can boot straight into one state:
acme -DAUTOPLAY=1 -f cbm -o labyrinth.prg main.asm
# also: AUTOOPTIONS, AUTORULES, AUTOCONTROLS, AUTOCREDITS,
# AUTOWIN, AUTOLOSE; add -DFORCEOPTS=1 to start with both
# options turned on
Files
main.asm- entry point, BASIC stub, per-frame state machinedefs.asm- registers, constants, zero page, macrosintro.asm- TTG boot logo with the gold color washmenu.asm- main menu cardoptions.asm- the optional extras and their toggle screenrules.asm- how to playcontrols.asm- joystick + keyboard mappingscredits.asm- the crewplay.asm- maze generation (recursive backtracker) + the gamewin.asm/over.asm- end screenscommon.asm- shared routines: printing, big block font, input, RNGsound.asm- single-voice SID SFX driver