Serpent Shield

Ultima I Unity

Rebuilding the 1987 DOS Remake of

Ultima I: The First Age of Darkness

Pulling apart the original DOS binaries to figure out how they work, filling in the gaps where things aren't clear, and putting it back together in Unity, one commit at a time.

Playable download coming soon.

Read the Devlog

Please consider purchasing the official release of Ultima I from GOG.com before downloading this fan project.

Trying to Rebuild a Classic

This project works from the binary data files and decompiled executables of the 1987 DOS remake. Some things map cleanly, others take a lot of trial and error. Where the original data runs out, the project borrows assets and ideas from other versions of the game.

Binary Archaeology

Digging through the original DOS binary formats: EGA row-planar tiles, nibble-packed overworld maps, column-major town data. Some structures decoded cleanly; others required guesswork and testing against the running game.

Switchable Graphics

The original EGA and CGA palettes are in, but the project also supports tilesets from FM Towns, Ultima III, and Ultima V, switchable on the fly with F3. A way to see these worlds through different eras of the series.

Complete World

168×156 overworld, 40 enterable locations (8 castles, 32 cities), multi-level dungeons, and a full star system. Town coordinates came from cross-referencing multiple sources where the binary data alone wasn't conclusive.

Game Systems

Turn-based combat, space battles, XP-based leveling, inventory, vehicles, and NPC dialogue. Combat formulas were decompiled from the original EXE where possible. Some edge cases are best-effort recreations.

Community References

Where the binary data alone wasn't enough, these community resources helped fill in the gaps, documenting game mechanics, formulas, sprites, and quirks that would have taken far longer to reverse-engineer from scratch.

Ultima Dragons

Special thanks to members of the Ultima Dragons Discord who dug through their own archives and helped track down sprites that weren't available anywhere else:

TheGreyWandererGrantWChapmanDominusSergornBehindTimes

Music

Original music and arrangements contributed by community musicians, bringing the soundtrack to life beyond the original PC speaker beeps.

Uncle Willy Tracks on Majuularcade

Systems Implemented

Overworld Exploration

168×156 tile overworld with towns, castles, dungeons, and encounters. Spawn tables are approximated from observed behavior since the exact original logic isn't fully understood.

Towns & Castles

40 interior maps with NPCs, shops, kings, and princesses. Some NPC placement was reconstructed from partial data and cross-referenced with community maps.

Dungeon Crawling

First-person wireframe dungeons with trap doors, coffins, and treasure. Optional FM Towns and Ultima V textured wall modes for a different look.

Space Combat

Cockpit-view battles, station docking, and hyperspace jumps. The behavior is a best guess from decompiling SPACE.EXE, close but probably not byte-exact.

Sound & Music

SFX and music playback pulled from multiple versions of the game. The 1987 DOS original had PC speaker beeps, so the fuller soundtrack comes from later ports.

Multi-Tileset Rendering

Switch between EGA, CGA, FM Towns, Ultima III, and Ultima V tilesets with F3. Animated sprites and depth-based water shaders in the newer visual modes.

Latest Entries

View all

June 23, 2026

Space CombatPreserve ship trajectory/speed/position across top<->cockpit view switches; nudge stationary ship forward on cockpit entry; carry through hyperspace
Space CombatFix reticle centering (5x5 canvas); add cockpit log messages for maneuvers and enemy fire
Space CombatAdd top-down space log messages (CCW/CW/Thrust/Retro); prevent view toggle while docked

June 22, 2026

CombatCombat: enemies fire projectiles even when player is off-line (authentic), but damage only applies when aligned (fixes visual miss dealing damage)
DungeonsAdd dungeon compass HUD: Level N (top) and facing direction (bottom) flanked by inward arrowedge arrowheads
DungeonsRotate compass direction 90° left; add black background behind compass text

June 21, 2026

Space CombatAdd vacuum exposure death on space station dock without Reflect/Vacuum Suit
Space CombatImplement random resurrection on main continent after space death
Core EngineApply random resurrection to ALL death scenarios