2.8 KiB
2.8 KiB
Rabbit Scooter — C64
A Commodore 64 port of rabbitroller, the Game & Watch style LCD mini game, written in 6502 assembly (built with the ACME assembler, using the same toolchain and layout as c64-demo).
Rabbits hop toward you on a five-lane road. Steer your scooter left and right to dodge them: a rabbit that reaches your lane is a miss, one that passes in any other lane is a point. Three misses end the round. The spawn rate and the rabbits' speed ramp up with your score, just like in the original.
Controls
| Input | Action |
|---|---|
Joystick port 2 left/right, or A / D |
change lane (auto-repeats while held) |
Fire (or SPACE) |
start / retry |
How it works
- PAL frame loop synced by polling the raster beam (no interrupts), one
state update per frame — intro, menu, play and game over are
updvecstates. Boot shows the giant TTG / Teletype Games logo with the gold color wash from the c64-demo; the menu and the game over screens are full-screen cards on black — big block-letter titles, fire = start game on the menu, the final score and fire = retry after a loss. - The background is raster-split at the horizon: sky above, grass below. The road is a grey wedge of inverse-space characters between painted white edge lines, with trees along both shoulders.
- The player is hardware sprite 0; up to seven rabbits live on sprites
1–7. Rabbits follow the road's perspective: a linear y ramp and a t²
horizontal fan-out, both precomputed into tables at assembly time
(
tables.asm). Far rabbits use small sprite frames, near ones switch to big frames and finally to double-sized expanded sprites. - Random lanes and speeds come from an 8-bit LFSR stirred with the free-running CIA timer.
- Sprite art sits below
$1000so the VIC never sees the character ROM shadow instead of it.
Files
| File | Contents |
|---|---|
main.asm |
BASIC stub, init, frame loop, state dispatch |
defs.asm |
registers, constants, zero page, macros |
intro.asm |
boot screen: giant TTG logo with the gold wash |
title.asm |
full-screen menu: big logo, start game, hopping rabbits |
play.asm |
gameplay: input, spawning, scoring, HUD |
over.asm |
full-screen game over: big title, score, retry |
common.asm |
shared routines: printing, road, input, RNG, rabbit positioning |
tables.asm |
assembly-time perspective and speed tables |
sprites.asm |
sprite art (scooter, 4+4 rabbit frames) |
Build & run
make deps # macOS: brew install acme vice
make build # -> rabbit.prg
make run # build + launch in VICE (x64sc)
The same targets are available as VS Code tasks. A test build that boots
straight into gameplay: acme -DAUTOPLAY=1 -f cbm -o test.prg main.asm.