mr.zero 1ac6a1e93f
ci/woodpecker/push/woodpecker Pipeline was successful
Align the publish log message with the step name
2026-08-05 22:07:46 +02:00
2026-07-15 21:31:51 +02:00
2026-07-16 17:07:04 +02:00
2026-07-16 15:53:33 +02:00
2026-07-16 12:50:21 +02:00
2026-07-16 15:53:33 +02:00
2026-07-16 09:32:07 +02:00
2026-07-16 15:53:33 +02:00
2026-07-16 15:16:46 +02:00
2026-08-02 12:47:08 +02:00
2026-07-16 12:50:21 +02:00
2026-07-16 15:53:33 +02:00
2026-07-18 15:24:50 +02:00
2026-07-15 23:17:11 +02:00
2026-07-16 10:42:57 +02:00
2026-07-16 15:37:38 +02:00
2026-07-16 10:28:42 +02:00
2026-07-16 15:53:33 +02:00

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.

In multiplayer the rabbits still spawn on their own, but player 2 steers the closest one left and right, trying to run the scooter down.

Controls

Input Action
Menu: joystick up/down, or the S / M / C keys pick single player / multiplayer / credits
Menu: fire (or SPACE); the 1 / 2 keys pick and start at once open the picked line
P1: joystick port 2 left/right, or A / D move the scooter (auto-repeats while held)
P2: joystick port 1 left/right, or J / L steer the closest rabbit (multiplayer)
Fire (or SPACE) start; on the game over screen: back to the menu

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 updvec states. 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 17. 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 $1000 so 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, mode picker, hopping rabbits
credits.asm demo-style credits: pixel scroller, gold wash, rainbow crew, sprite parade + AI warning
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.

S
Description
No description provided
Readme
224 KiB
Languages
Assembly 98.7%
Makefile 1.3%