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

Zoombini Isle

Where the game begins: the player builds the Zoombinis who will make the journey.

On screen

📷 Screenshot: isle-overview Zoombini Isle: the panel of feature buttons (four rows of five) at lower left, the Zoombini being made in the middle, and the queue of finished Zoombinis waiting along the shore. Capture: start a new game; you arrive here after the logo.

📷 Screenshot: isle-feature-panel Close-up of the feature panel: hair, eyes, nose and feet choices (5 each) and the seven panel buttons below it. Capture: same scene, crop to the panel (isleButtons, x 3-198, y 304-478).

📷 Screenshot: isle-sending-off A party of Zoombinis walking off toward the map after the player clicks the "send off" button. Capture: make at least the minimum party, click button 6.

Scene facts

Scene3
Module / archivedecomp/isle.cpp / PICKER (Picker.MHK)
InputisleGroups[2]: feature buttons → featureButtonClicked, panel buttons → isleButtonClicked
Rolesmakes Zoombinis; holds a waiting party (waitingParties()); starting point of the journey

Entry points

FunctionAddressRole
openIsle0x43e6b6loads Picker.MHK's backdrop, images, scripts and sounds; adds views and the queue's places; brings the waiting party back; sets up the Zoombini being made; offers to load a saved game first if asked; plays a hint (or, from the camp, a remark about how many Zoombinis are left to make)
isleFrame0x43ebf4leaves once asked (sceneDue) and sound 996 has finished
featureButtonClicked0x43ecbbfeature buttons 1-20 (four groups of five): pick or drop that feature for the Zoombini being made
isleButtonClicked0x43ee5dpanel buttons 1-7 (below)
isleKeykeyboard shortcuts
closeIslefrees everything

The panel's seven buttons

ButtonDoes
1makes the chosen Zoombini and sends it to the queue's first free place (while fewer than 625 exist)
2the Zoombini says something
3renames it
4picks another at random (with Ctrl, fills the queue with random ones)
5goes to the map
6with a full enough party, sends it off and leaves; otherwise may remark on Zoombinis left to make
7takes a Zoombini from the queue back to be remade

Where the rules live

  • How many are enough: checkEnoughChosen sets enoughToLeaveChosen when the chosen count reaches enoughToLeave, or the whole population (625) has been made.
  • Which kinds exist: zoombiniCounts() in gameState counts how many of each of 5⁴ kinds have been made; pickZoombiniMade picks random features until it hits a kind with fewer than two.
  • Drawing the Zoombini being made: drawZoombiniParts composes it from the feature images in the isle's image bank (drawIsleImage, by hot spot); drawFeatureButtons and drawIsleButtons draw the panel from isleButtonImages.
  • The queue: isleQueue (0x43ffd5) gives each place the nearest spot no earlier place has taken (isleQueuePlaces).

Things to know

  • isleAllowsFeature allows every feature, and the "refused" sound (1008) is never played: a hook for something the shipped game doesn't do.
  • With Ctrl held and debugging on, button 1 first sets the count to 624, to test the "population full" ending.
  • Names are built from syllable tables in snoids.cpp (vowelSounds, consonants, nameEndings, consonantPairs).