60 lines
2.2 KiB
Markdown
60 lines
2.2 KiB
Markdown
# labyrinth (LabyrinTwo)
|
|
|
|
**LabyrinTwo** - a two-player maze duel for the Commodore 64
|
|
(ACME + VICE), in the same spirit as [rabbitc64](../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 machine
|
|
- `defs.asm` - registers, constants, zero page, macros
|
|
- `intro.asm` - TTG boot logo with the gold color wash
|
|
- `menu.asm` - main menu card
|
|
- `options.asm` - the optional extras and their toggle screen
|
|
- `rules.asm` - how to play
|
|
- `controls.asm` - joystick + keyboard mappings
|
|
- `credits.asm` - the crew
|
|
- `play.asm` - maze generation (recursive backtracker) + the game
|
|
- `win.asm` / `over.asm` - end screens
|
|
- `common.asm` - shared routines: printing, big block font, input, RNG
|
|
- `sound.asm` - single-voice SID SFX driver
|