SimCity ran a whole city simulation on a 16 MHz CPU by skipping most of it

How to run a city builder on 16 MHz

SimCity ran a whole city simulation on a 16 MHz CPU by skipping most of it

The original SimCity lists a 16 MHz Intel 386SX among its requirements, yet it simulated traffic, fire, power, and crime every frame. The open-sourced Micropolis code reveals the trick: a mod16 counter cycles 0–15, so each frame updates only one slice of the simulation. The author argues this frame-distribution pattern, also used in Assetto Corsa's cubemap reflections and Unreal's Lumen, belongs in gameplay code too.

The solution: Not calling every function every frame. Yep, SimCity just skips most of the simulation.
  1. sgt

    > Even the cheapest CPUs have at least 4 cores nowadays, running billions of operations per second.

    It's ironic that modern programs often have latency and response times in the 10s and 100s of milliseconds. I know the reasons why, but it's still a bit ridiculous to think about it. Just the tons of layers of abstractions we introduce.

  2. prosaic-hacker

    This is a good revelation but is a technique that is old as the hills. My first post university programming job was working for CAE Electronics, a Flight Simulator company. The simulations ran on a variety minicomputers of the era, primarily DEC Vax 780 and successors or Gould SEL during my time there.

    If memory serves me correctly the simulation ran like a super loop on a microcontroller every 50ms or 33ms. On each loop the dispatcher would run a selection of the core simulation functions some every loop, some at every 2nd, 4th or more loops. The system was called banding. The dispatch table was redone to optimize the needs of that particular simulator.

    There were various optimization outside of the main cpu as the peripheral devices did computation as well. Also as the systems got faster there was time left over for the normal OS to run low priority function with non real-time requirements.

    The technique was not new in my time and had been used on the previous generation of Xerox systems about a decade earlier.

  3. phire

    > The original SimCity for example lists Intel’s 386SX as the CPU in it’s system requirements.

    Not sure where that comes from. The original release box art [1] says it will work on any PC with 512KB of ram. So that's an 8088 running at just 4.77 MHz.

    But that's far from the lowest spec port of the game. The Commodore 64 version might have been missing quite a few features (like stadiums, police/fire stations and railways), but the main city simulation loop was there in just 64KB of ram and a 1MHz 6502.

    And the BBC Micro/Acorn Election port was even more impressive. Had basically all the features of the full Amiga/PC/Mac version, only missing Music/Sound/Animation. With a 2Mhz 6502 (or 1Mhz on the Election) and just 32KB of ram.

    [1] https://images.launchbox-app.com/79861ce4-75ea-46dd-b46e-521...

More from this day

2026-10-24