Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Modules and scenes

The scene table

scenes[22] (game.cpp, 0x4a26e8) maps a scene number to its Scene {open, close, frame, key}. currentScene is the running one (-1 before the first), pendingScene the next. The map's hotspots (picker.cpp:pickHotspot) are what send the player to a puzzle.

#ScenePlayer-facing nameModule (decomp/…)Archive (assets/…)Open / frame / click
0introthe logo movie, then ontown.cpp(Data\Logo025.MOV)openIntro / introFrame / introClicked
1mapthe world mappicker.cppMAPopenMap / mapFrame / mapClicked
2journeytravelling between placesxfer.cppXFERopenJourney / journeyFrame / journeyClicked
3isleZoombini Isle (making Zoombinis)isle.cppPICKERopenIsle / isleFrame / featureButtonClicked, isleButtonClicked
4campShelter Rockbasecamp.cppBASECAMPenterCamp / campIdle / campButtonClicked
5camp 2Shade Treebctwo.cppBCTWOopenCamp2 / camp2Frame / camp2Clicked
6townZoombinivilletown.cppTOWNopenTown / townFrame / townClicked
7bridgeAllergic Cliffsbridge.cppBRIDGEopenBridge / bridgeFrame / bridgeClicked
8tunnelsStone Cold Cavestunnels.cppTUNNELSopenTunnels / tunnelsFrame / tunnelsClicked
9pizzaPizza Passpizza.cppPIZZAopenPizza / pizzaFrame / pizzaButtonClicked
10ferryCaptain Cajun's Ferryboatferry.cppFERRYopenFerry / ferryFrame / ferryClicked
11lillyTitanic Tattooed Toadslilly.cppLILLYopenLilly / lillyFrame / lillyClicked
12slidesStone Riseslides.cppSLIDESopenStoneRise / stoneRiseFrame / stoneRiseClicked
13fleensFleens!fleens.cppFLEENSopenFleens / fleensFrame / fleensClicked
14hotelHotel Dimensiahotel.cppHOTELopenHotel / hotelFrame / hotelClicked
15netMudball Wallnet.cppNETopenNet / netFrame / netClicked
16cavesThe Lion's Lairroster.cppCAVESopenCaves / cavesFrame / cavesClicked
17smokeMirror Machinegame.cppSMOKEopenSmoke / smokeFrame / smokeClicked
18mazeBubblewonder Abyssmaze.cppMAZE2openMaze / mazeFrame / mazeButtonClicked
19, 21catcha hidden throwing mini-game (cheat only)picker.cppPICKERopenCatch / catchFrame / catchClicked
20targetsa hidden target-shooting mini-game (cheat only)picker.cppPICKERopenTargets / targetsFrame / targetsClicked

How the table was established: the player-facing names are the strings of placeNames (picker.cpp), which pickHotspot maps to scene numbers (hotspots 2-4 → 7-9, 6-11 → 10-15, 13-15 → 16-18, 5/12/16 → the camps and the town, 1 → the isle). Which module is which puzzle comes from the archive each opens and from its backdrop and its sound set (scenes 16-18 share a sound-pool set, and 13/12 share another). Module names that don't match the puzzle (net, roster, game, maze, picker) are named after the strings that identified the module, not the puzzle it contains.

The module town holds scene 0 (the intro) as well as scene 6; picker holds the map, the two hidden mini-games, and the practice-mode machinery; game holds WinMain and the Mirror Machine; roster holds the saved-game code and the Lion's Lair; isle was split from net by its data. Scene numbers 19-21 are reached only by typing a cheat code on the map.

Group structure of the journey

GroupPuzzlesCamp after
1Allergic Cliffs (7), Stone Cold Caves (8), Pizza Pass (9)Shelter Rock (4)
2Captain Cajun's Ferryboat (10), Titanic Tattooed Toads (11), Stone Rise (12)Shade Tree (5)
3Fleens (13), Hotel Dimensia (14), Mudball Wall (15)Shade Tree (5)
4Lion's Lair (16), Mirror Machine (17), Bubblewonder Abyss (18)Zoombiniville (6)

Groups 2 and 3 are alternatives chosen at Shelter Rock (its two set-out buttons go to scenes 10 and 13); finishing either opens Shade Tree. (Taken from each scene's sceneDue assignments and enterNextScene, which records puzzleLeft when the last puzzle of a group sends the party to a camp. The town's monument texts, featTexts, are written per group and level.) Each group has four levels (sceneLevel() 1-4).

The 42 game modules

AddressModuleWhat it is
0x41008canimthe opcode animation player (unused by the game)
0x411350soundgame-level sounds: channels, 'tWAV'/'tMID' by key
0x4121ccbuttonsgraphic buttons
0x4124a4focusinput groups, hover and press tracking
0x413c24jointexterror-message joining
0x413dc0eventsthe 32-entry event ring
0x4144d0graphicsscreen and work ports, palette, saved areas
0x414f30loadingformatter and "Unable to load" errors, MIDI sound functions
0x415514–0x415604random, skipstrings, nthstringRNG (an LCG seeded from time()), string helpers
0x415604debugbreakpoints, starvation warning, main-loop events
0x415a30basecampShelter Rock, plus wave-sound helpers, wipes, blinds, the cheat tracker
0x418698bctwoShade Tree and its book of waiting Zoombinis
0x41a404bridgeAllergic Cliffs
0x41c09crostersaved players, plus the Lion's Lair
0x41f8ccferryCaptain Cajun's Ferryboat
0x42160cfleensFleens!
0x424274hotelHotel Dimensia
0x4281b0lillyTitanic Tattooed Toads (lily pads)
0x42f920pickerthe map, practice mode, the hidden mini-games
0x433510mazeBubblewonder Abyss
0x439560netMudball Wall; enterNextScene; the per-scene remark pools
0x43e620isleZoombini Isle
0x4402c0pizzaPizza Pass
0x44695cconfigZoombi32.CFG, findGameData
0x446bf8slidesStone Rise
0x44b550gameWinMain, the Mirror Machine, cheats, memory statistics
0x455530platformthe Windows layer: window, procedure, input, cursor
0x456c00snoidsZoombini creation, names, drawing, paths, drag
0x45c0f4townthe intro scene and Zoombiniville
0x45e2d8tunnelsStone Cold Caves
0x4623b8mainloopone main-loop pass, game keys, cursors, about box
0x463034viewthe view list and scripts
0x465bd0featuresimage banks, cels, dialogs, save/load prompts
0x4696f0xferthe journey scene
0x46be28e2memorythe e2 layer over memory and resources

The OS layer (os_fixed … os_contexts) and the engine's 149 modules are described in OS layer, timers and audio, Graphics, Memory and resources and The engine's modules.