Utopia’s Secrets revealed!

Intellivision’s Utopia has been reverse engineered by Intvnut a.k.a. Joe Zbiciak. you can check out Joe’s Space Patrol website or his original site. Here are the highlights, in case you don’t want to look through all of the code. This is a great source of information in helping you to master this game:

Do protect a 1 unit radius against rebels
Will protect parked ships that have the same owner as the fort. Radius of 1 card.
Will protect both players ships when they’re under active control. Radius of 1 card.
Do not otherwise contribute to your score
Scoring will overflow, if you have more than 65 crops + fishing boats combined.
It will also overflow if you earn more than 255 gold bars in a single turn. (Is that possible?)
The “float off bottom of screen” bug is likely due to island/status collision detection interacting poorly with EXEC’s boundary detection. The game can “nudge” a boat across the boundary the EXEC checks for. There is a check for this, but it only has been applied properly to the left/right edges.
Delay loop in scoring display appear to want to update random number generator, but they don’t actually.
Code quality:
Let’s just say it’s likely the priority was to have a compelling game, and have it out quickly, as opposed to writing the tightest, cleanest possible code.
Pirates will never sail toward a parked PT boat on purpose. The “nudge” code, though, can nudge them through a tangle of PT boats.
Hurricanes are 5 times more destructive as tropical storms. All three forms of weather water crops at the same rate, though.
There’s two copies of the “sinking fishing boat” animation in the ROM, due to how the EXEC distinguishes between background cards and MOB animations
Each island has precisely 29 squares.
When weather takes out something on your island, it will incur 0 to 101 casualties.

If you want more details, you’ll have to dig through the code unless it’s covered in the slightly more detailed review below. Code attached.

Code Structure

The bulk of the main game code can be put into one of three categories — The Timer Tic Task, Dispatches, Scoring Logic. The rest of the code is either initialization code, or support code for those three categories.

Timer Tic Task

The bulk of the game logic hangs off the the Timer Tic Task. This task runs 20 times a second, and it handles everything from spawning weather to collision detection to animating certain sinking ships. It’s quite a lot of code and is fairly linear. The rough order of execution:

Update the weather, possibly creating new weather
Update the fish, possibly creating new schools of fish
Update the pirates, possibly spawning new pirates
Island vs. boat collision detection
Update the game clock
If not end of round / end of game:
Update the status line at bottom of screen
Update parked sinking ships
At end-of-round, fire off the scoring code and then show the scores
At end-of-game, show final score and halt


The next big set of code is the set of Dispatches. The EXEC mostly works by calling various functions in response to various events. Dispatches fall into a few categories:

Controller input dispatches. The action-button and disc handlers are pretty simple. The keypad dispatch is amazingly convoluted, but that makes sense when you consider everything that it has to account for.
Object vs. object dispatches. These handle pirates vs. PT boats and similar such things.
Object vs. land dispatches. This is what handles rain on crops, pirates sinking parked ships, or parked ships going fishing.

Scoring Logic

The final big piece of code is the scoring logic. Scoring happens in four phases: Income Computation, Population Update, Round Score Calculation, Rebellion.

Income Computation
During the round, every gold bar you earn (say due to fishing, rain on crops, etc.) gets tallied in this round’s Gross Domestic Product (Round GDP), separate from your actual gold bar balance. That is, spending does not subtract from GDP even though it lowers your treasury balance.
At the end of the round, you get awarded additional gold as follows. Each of these contributes to the Round GDP except for the “baseline 10 bars.”
4 gold bars per factory
1 gold bar per fishing boat
Productivity bonus: ((Schools + Hospitals) * Factories) + Hospitals, clamped to a maximum of 30 gold bars.
10 gold bars of baseline income (does not contribute to the Round GDP).
Population computation — expressed as a growth rate, resulting in exponential growth.
Fertility computation
Start with a baseline fertility rate of 5.0%
Increase fertility by 0.3% for every crop
Increase fertility by 0.3% for every hospital
Increase fertility by 0.1% for every house
Decrease fertility by 0.3% for every school
Clamp fertility to a minimum of 4.0%. You can’t have fertility below 4% even if you filled the island with schools.
Mortality computation
Start with a baseline mortality rate of 1.1%
Decrease mortality by 0.3% for every hospital, but not below 0.2%. (This limit is applied before the next step.)
Increase mortality by 0.1% for every factory. If you fill the island with factories, your mortality rate will be 4.0%, matching the minimum allowed fertility.
New population: Population + Population * Fertility – Population * Mortality. Maximum allowed population is limited to 9999.
Round Score Calculation — roughly, “approval rating”, 0-100%
First compute the following four subscores
Housing score: ((Houses * 500) / (Population / 100)) / 3. If larger than 30, clamp it to 30.
Per-capita GDP score: ((Round GDP * 100) / (Population / 100)) / 12. If larger than 30, clamp it at 30.
Food supply score: (((Fishing boats + Crops) * 500) / (Population / 100)) / 3. If this value is larger than 30, clamp it to 30.
Note: 65 * 500 = 32500. So, if you have more than 65 fishing boats + crops, this score can go negative. This is fixable by changing the BLE at $5B1E to a BNC, I think, so it treats the overflow case as a case that needs to clamp to 30.
General welfare score: 1 point for every school or hospital
Add up the four subscores, limiting the total to 100 or less. That’s the per-round score.
Compare this round’s score to the previous round, and consider it in absolute terms as well
If it dropped by more than 10 points or is below 30 points, add a rebel
If it increased by more than 10 points or is above 70 points, remove a rebel

If you want to see the exact details of how these pieces work, look at the code. For example, in the scoring section, some divides are rounding divides, and some are truncating divides. The population computation is actually carried out with scaled arithmetic (ie. fertility/mortality rates are multiplied by 10, and population divided by 10 when computing numbers of births and deaths.)

Download the Utopia code for yourself. Visit the original forum post here.



Same Game & Robots is now Shipping

Intelligentvision’s newly improved re-release Same Game & Robots is now shipping, there may still be some copies available from Here is a description of the game: Strategy and planning is the name of the game regardless which title you choose to test your wits against. Learn to analyze and predict how the game will unfold to achieve the most points and successful completion. Welcome to the peaceful world of SameGame and the tense world of Robots. Either choice is an addicting path.

SAMEGAME – There are three different pieces on the board. Connect as many shapes of one type to score higher points and clear the board. The two variations of the game only have different game rules.

ROBOTS– Move the cursor to destroy all the Robots on the screen by making them collide into each other, by making them hit their left over scrap, or by using a bomb.

Michael Hayes programmed SameGame as a standalone game in 2001. By early 2004, Robots was added to give the game value. Intelligentvision was looking for homebrew games to produce and SameGame & Robots was scheduled as the 4th release. David did not believe the game was finished and began “enhancing” it. The following 6 months was a tumultuous period for Intelligentvision. David continued providing updated versions of the game but by the end of August, decided to quit from Intelligentvision. He continued coding the game though. By the end of September, Chris and Roger released the game unbeknown to David. The current version of the game, provided to Chris and Roger, made it to production of carts numbered after 100. David never felt that the game was really finished but stopped coding since the game went to production.

Fast forwarding to 2011, David was asked by Darren, a collector and gamer, to fix/finish FUBAR which is another game by Michael Hayes. Once deep into programming, he only saw fit to revisit SameGame & Robots and to really finish it. Being a big fan of the Intellivoice module, it was only fitting to add human voices to the game. With the 2004 version seeing a very limited release, the updates made to the game, and higher quality production, a 2012 release was believe to be warranted.

Leave a comment

Posted by on March 29, 2012 in Uncategorized

1 Comment

Posted by on February 5, 2012 in Uncategorized


Nice Intellivision Console picture!

Leave a comment

Posted by on January 15, 2012 in Uncategorized


Hello world!

Welcome to the Intellivision Revolution!






Leave a comment

Posted by on January 3, 2012 in Uncategorized