1986 · Electric Dreams Software

About this page

This minisite was contributed by air. It’s agent-generated and needs a human editor. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to curate games/c64/spindizzy with me to Gold.

Footprint

Every byte of the C64's 64 KB, one pixel each, 512 to a row. Lit pixels are what this game is: its code, graphics, level data, sound, text, tables and variables, exactly where they sit in memory. Dim areas are screen and working memory; dark is unused.

Status

Tiersilver
Coverage100 % of the bytes the game uses have a description
Comments checkedNot audited. No audit has checked every comment, and the last sample of 80 comments had 18 wrong, so between 15 and 33 % of the listing’s comments are likely wrong. How listings are checked
Build analysedElectric Dreams' 1986 PAL disk, the G64 spindizzy[electric_dreams_1986](pal) from the C64 Preservation Project collection on the Internet Archive (SHA-256 07cf3a77…7de2d8)
Copyagent-draft
Toolsemulator: release v3.14.0, v3.14.0-linux-x86_64-gui.zip (VICE x64sc, PAL), disassembler: regenerator2000 0.9.20, host: Linux x86_64, Ubuntu 24.04.5 cloud container, four cores, no display, python: 3.13.18, node: 22.23.4
Modelclaude-opus-5-5
Kit version0.0.280

How the listing was checked

Every step that measured the Source tab’s comments or made them more accurate, in the order it happened, with the models that did it. Accuracy of the Source explains each step and what the row above makes of them.

StepByWhat it foundOf the listing
Researchclaude-opus-5-5Looked the game up online (its manual, reviews or wiki pages) before reading its code.
Annotationclaude-opus-5-5Wrote the listing’s comments. 100 % of the program is described, in 821 comments.
Sample 1claude-opus-5-518 of 80 comments wrong, so between 15 and 33 % of the listing is likely wrong. All 18 were then corrected.
60 of 303 hand-written comments and 20 of 518 generated ones; 21.2 % weighted by stratum
Port checkclaude-opus-5-5Checked a page’s port or widget against the game and corrected 1 comment it showed wrong.
the room renderer, the sound effects, the password check and the inhabitants' speeds, run on the game's own code; steer_speed's direction flag

likely wrong the sample’s range corrected right, or likely right not yet measured

Contributors

Other places to love this game

What the game does, and where we found it

Read this before annotating code. What the game is documented to do, with verification status against the binary. Statuses: open (documented, not found yet), traced (in the code, could not be exercised; say what was tried), confirmed (in the code, consistent with the emulator), live (observed directly), differs (the code does something else). "Absent" is not a status.

Sources:

Features

FeatureStatusWhere
Title screen: fire starts, S scores, O options, H help (reference/title.png)live
Help screen naming the world's pieces: lift, switch, water, jewel, ice, clue, trampoline, compass (reference/help.png)live
Options: F1 speed slow or fast, F3 one or two joysticks, F7 back to the title (reference/options.png)live
Two-player mode: one player steers up and down, the other left and right (wiki)traced: with option F3 set ($77), up and down come from port 1 and left and right from port 2; not played with two joysticksread_joystick $8028
Gerald, a spinning top steered with the joystick in port 2, in eight directions; fire for more speedlive: each direction adds 1 to his speed a pass while he touches a surface, 2 with fire; a push of 0.3 seconds gave a speed of 16main_loop $8DD4
Space brakes Gerald on a rough surface, and costs time (manual: hold it until the time runs out to abandon the mission)traced: while he stands, space zeroes his X and Y speeds and takes 1 off the time each pass it is readbrake $8F0A
F1, F3, F5, F7 choose the view: north, turn clockwise, turn anticlockwise, the opposite side (reference/play-view-rotated.png)live
A compass in the bottom right corner points northlive
M shows the map, which fills in as rooms are visited; yellow mapped, red unmapped, purple holds a jewel, black is not part of the world; time stops while it shows (reference/play-map.png)live
S shows the score: per cent of screens, of jewels and of the game (reference/play-scores.png)live
C switches the colour scheme (wiki and manual: colour or monochrome) (reference/play-colour-scheme.png)live
P pauses; the border flashes until a key is pressed (reference/play-pause.png)live
I changes Gerald's shape: top, ball, pyramid (reference/play-shape-ball.png)live
Q abandons the game and goes back to the title (wiki)livemain_loop $8EA8
TIME counts down; finding a new room or a jewel adds time; falling costs timelive: 1 every 64 passes of the main loop, 8 for a new room, 10 for a jewel, 5 for a restart, never above 150add_to_time $9533, add_time_capped $9C8E
TO MAP counts the rooms not yet visited; the start shows 385live
JEWELS counts the jewels collectedlivejewel_piece $A12C
The world: about 386 rooms, each a screen, joined at their edgesconfirmed: 386 records in the room directory, counted by the game at each startcount_rooms $92BC, room_directory $0A00
Ramps, stairs, jumps, bridges, gangways, one-way paths, water, trampolines, icelive for water (Gerald falls through it and restarts), ice (no friction and no steering; his speed held at 4 across it) and floors; traced for slopes and trampolinessurface_response $8F46, on_ice $9116
Switches and lifts: a switch turns on a lift or moves a block; a lift and its switch share a symbol and may be in different roomstraced: 64 lifts and 70 switched blocks, each naming a switch number 0-11press_switch $916A, lift_piece $A37F, switched_block_piece $A0FF
At most two switches active at once; a "clear" switch turns both offtraced: pad 0 clears both; pads 1-7 leave only themselves on; pads 8-11 share the two slotspress_switch $916A
The bottom-left box shows the switches that are on, or a clue: the switch a room needstraced: the box shows the two switches on; a room whose switched block is off shows that switch's symbol in its cornerdraw_switch_box $91FA, add_switched_block $A052
Inhabitants that home in on Gerald and drain time when they touch himlive: in room (65, 66) the time fell from 99 to 27 in under two secondsinhabitant_piece $A622
A beginners' area east of the start where time runs more slowly (manual)live: the start room and seven rooms east of it run the clock at a quarter speed; 7 ticks in 1,838 passes in the start roomroom_header $8B57
Every game starts in the same room (wiki)confirmed: map row 64, column 64new_game_state $84B7
Game over when the time runs out, followed by the score screenlive: "Mission Aborted", then the scoregame_end $856D

Beyond the documentation

Found in the code, not in the manual.

FeatureStatusWhere
A cheat: "I LIED!" in the RAM at $DF00 when the game starts stops the time going down; the credits screen says there is no cheat modelivecheck_cheat_password $6076
RUN/STOP on the title shows a screen of credits and hints, which the title does not mentionlivecredits_screen $70F0
RESTORE, alone or with RUN/STOP, goes back to the title from anywherelivecbm80_cold_vector $8000
Inhabitants are drawn from Gerald's two spare shapes, so I changes their shape as well as hislivedraw_object $A535, change_shape $7223
The clock counts passes of the main loop, not frames, so at the fast speed it runs about twice as fast in real timelivemain_loop $8DA1
Gerald stopped dead on ice is restarted, since he could never move againliveon_ice $9116
Inhabitants run faster than their top speed in the minus directions of X and Y: only a top speed of 64 holds both wayslive: in room (55, 73) an inhabitant with a top speed of 24 reached -64 in 0.6 secondssteer_speed $A818
Walls make no sound: the bounce asks for a noise too quiet to playlive: 18 bounces in the start room started no noisebounce_speed $9421
Switch 6 has two pads in the world but no lift or block uses itconfirmed from the world datapress_switch $916A
Two structures nothing places, and second copies of two structures that the search never reachesconfirmed from the world datastructure_list $0400
Survey complete (every room and all 220 jewels) offers to go on exploring with the time at 150live, with the counters pokedsurvey_complete $85DB

Open questions

None.

The symbol map for this game is symbols.json; the listing behind the Source tab is listing.json. Write-ups, facts and symbol maps are CC BY-SA 4.0. The game itself is not hosted here.