ENES
Play with my files
ENES
Play with my files

Everything on this page is optional and can be switched off: the faithful 1988 game is the base mode.

The references to source files and binary offsets you'll see here are the provenance of each claim: they say where it comes from. The engine is published under GPL-3.0-or-later at github.com/kokoima/openu5, so you can go and look them up one by one.

What the port does differently

Three documents with before / after comparisons of what this port does differently from the Ultima V of 1988 and β€” the part that matters a year from now β€” why each thing is the way it is, and what was given up to get it.

18 things the port does differently from the 1988 Ultima V

Each one with its tag, its reason and what it cost. The full table is further down, and it can be filtered by tag.

What kind each one is

  • 18 ✨ Added
  • 0 βš–οΈ Declared divergence

18 entries Β· one tag per entry

Which document it is in

  • 4 1 Β· Image
  • 7 2 Β· Layouts
  • 7 3 Β· Experience

18 entries across 3 documents

Shown with a screenshot

29screenshots

  • 14 entries with a screenshot
  • 4 without one

14 of the 18 entries Β· before/after comparisons

DocumentWhat it covers
1 Β· ImageHow it looks: the two skins, the optional smoothing and the transparencies
2 Β· LayoutsHow it sits on your screen: desktop, phone, tablet and full screen β€” and what each one costs
3 Β· ExperienceHow it plays: by touch, saving, Spanish, and re-reading what scrolled off the console

The distinction that makes the rest useful

This section lists what the port offers: things the original did not do, each one optional and with its own switch. The defects of ours that we have been fixing β€” the ones that only put the game back the way 1988 had it β€” are no longer listed here as improvements: fixing what we broke does not improve the game, and mixing it in with the offer is what makes documents like this age badly. Every entry carries a tag:

TagWhat it means
✨ ADDEDThe original did not do this. It is a product decision, almost always with a switch to turn it off.
βš–οΈ DECLARED DIVERGENCEThe port knowingly does something different, and it is recorded as such.
🎯 FIDELITYThe "before" was a bug in the port; the "after" is closer to the 1988 DOS game. Today the table carries none: the fixes are history, not an offer.
πŸ—‘οΈ REMOVEDIt existed in the port, people liked it, and it was taken out for being unfaithful.

The ✨ entries are the ones that literally answer "improvements made by the port" β€” and today that is every entry in the table.

Everything the port does differently

βš–οΈ Declared divergence 0

The 0 next to βš–οΈ is shown on purpose, in grey: it is not a leftover cell, it is the claim that nothing here crosses the fidelity line today. The other tags only appear when they have something.

TagWhat it isHow it is turned on
Looks better
✨ADDEDYou can choose between the untouched 1988 image and a smoothed one, and switch between them instantly1 · Image
Technical detail

The two skins: "1988" and "smooth" β€” Two presentations you can swap live: the faithful 1988 one, and a "smooth" one that hosts it and filters the viewport only. Β· Switched live with F9 or from βš™ β†’ Video.

The F9 key, or the βš™ β†’ Video menu
✨ADDEDWith the smoothed image the world's edges look polished without redrawing a single graphic: menus and text stay pure 19881 · Image
Technical detail

The smoothing: xBR on the GPU β€” The viewport goes through an xBR edge filter running on the GPU; the chrome and the text are still the 1988 ones. Β· With the smooth skin (F9)

Comes with the smoothed image (F9)
✨ADDEDSome figures let you glimpse the ground they stand on, so they don't hide what's underneath1 · Image
Technical detail

Transparency I β€” the body at alpha .55 β€” The bodies of selected sprites are drawn at alpha .55 in the smooth skin, letting the floor underneath show through. Β· Shader skin Β· Kill switch ?transp=off

Only with the smoothed image; it can be turned off
✨ADDEDThe black box around figures is gone: you see the real floor around them, and never a wall painted as floor1 · Image
Technical detail

Transparency II β€” the outline cut-out β€” The black outside the sprite is cut away and replaced by a synthesised floor; the black inside is kept, and a wall is never painted as floor. Β· Shader skin Β· Kill switch ?contourTransp=off

Only with the smoothed image; it can be turned off
✨ADDEDThe smoothed image moves nothing around: the frame is the same and only what shows inside the view window changes2 · Layouts
Technical detail

The smooth skin, which is also a layout β€” The same skin filtered by xBR: it moves no boxes, but it changes quite a lot of what you see inside the viewport. Β· F9 Β· β—§ Β· βš™ β†’ Video

F9, the β—§ button, or βš™ β†’ Video
Fits your screen
✨ADDEDOn a monitor the whole game sits centered and enlarged: the 1988 screen, blown up2 · Layouts
Technical detail

The classic layout (desktop) β€” The starting point: the 1988 frame scaled by an integer factor and centred with letterboxing. Β· By default on desktop

How it starts on a desktop
✨ADDEDIf you want the proportions of an old tube monitor β€” everything a touch taller β€” you can have them2 Β· Layouts
Technical detail

Period 4:3 aspect β€” Stretches the 320Γ—200 to the geometry of a period CRT: everything looks 20 % taller, at the cost of surface. Β· βš™ β†’ Video β†’ "Period 4:3 aspect (1988 skin)"

βš™ β†’ Video
✨ADDEDOn a phone held upright, the map takes the full width and the controls sit below, within thumb's reach2 · Layouts
Technical detail

The split layout (portrait mobile) β€” In portrait the frame splits: a square map at full width, the roster and log band below, the button deck at the bottom. Β· Turned on with the β–€ button or from βš™ β†’ Video β†’ "Split layout (portrait)"

The β–€ button, or βš™ β†’ Video
✨ADDEDWith the phone on its side, the game stays centered and the controls split to both sides2 · Layouts
Technical detail

Landscape β€” With the device on its side the game sits centred and the deck splits to both sides of the screen. Β· Automatic when you turn the device

Happens by itself when you turn the phone
✨ADDEDOn an upright tablet everything fits with room to spare: the big map and the full panels below2 · Layouts
Technical detail

Tablet, portrait β€” The split layout with room to spare: the square map fills the surface and the band fits underneath whole. Β· The same split layout: the β–€ button or βš™ β†’ Video

The β–€ button, or βš™ β†’ Video
✨ADDEDThe game can fill the whole screen, browser bars gone2 · Layouts
Technical detail

Fullscreen β€” Toggles browser fullscreen, and never throws: without support it is a silent no-op. Β· βš™ β†’ Video β†’ "Fullscreen"

βš™ β†’ Video β†’ Full screen
Play by touch
✨ADDEDTap a square on the map and the party walks there, just as if you had used the arrow keys3 · Experience
Technical detail

Tapping the map to walk β€” You tap a cell in the viewport and the party walks there, along the same code path an arrow key takes. Β· By tapping or clicking a cell in the viewport

Tap (or click) the map
✨ADDEDOn touch screens a button deck appears with every command in the game β€” censused against the original β€” and buttons fire when you lift your finger, not when it lands3 Β· Experience
Technical detail

Touch controls: the deck β€” A touch deck with every command in the game, censused against the binary, that fires as the finger lifts and appears when the pointer is coarse. Β· On its own, where the pointer is coarse (pointer: coarse)

Appears by itself on touch screens
More convenient
✨ADDEDAs many named saves as you want β€” and they can be taken out to a file and brought back3 Β· Experience
Technical detail

Multiple save slots β€” Named, unlimited slots, with export and import, instead of the original's single SAVED.GAM. Β· F5

F5 key
✨ADDEDEvery line of the game, in Spanish β€” and you can switch back to English whenever you like3 Β· Experience
Technical detail

Spanish β€” The whole game text in Spanish, as a substitution table over the English of the transcription, switchable live. Β· Switched live with the 🌐 / ES button

The 🌐 / ES button
✨ADDEDYou can re-read what already scrolled off the console: wheel up or drag3 · Experience
Technical detail

The scrollable log β€” The console keeps a scrollback: wheel or drag to reread what scrolled off, with the >HISTORY< band of the 1988 frame. Β· Wheel or drag over the console

Wheel or drag on the console
✨ADDEDYou can edit your game with the developer console β€” gold, position, clock, anything. Fair warning: editing marks the save as touched, forever3 Β· Experience
Technical detail

The developer console β€” The project's own debug panel, open to everyone: edit almost any field of your game β€” and editing marks the save as touched, forever. Β· ` `` key or F4, or βš™ β†’ "Debug (QA)"

The ` key or F4, or βš™ β†’ Debug (QA)
✨ADDEDBring your copy and the atlas draws itself: guide, bestiary, magic tables and navigable maps. Without a copy you still get the whole book, just without the plates3 · Experience
Technical detail

The atlas your browser builds β€” A full guide β€” walkthrough, bestiary, spell and reagent tables, navigable maps β€” that stores none of the game's data: the maps, the interiors and the portraits are drawn by your browser, from your copy. Β· βš™ β†’ "Help Β· Atlas & guide", or straight to /companion

βš™ β†’ Help Β· Atlas & guide

All of this is changed from the SYSTEM menu (F10 or βš™) β†’


The rule that decides what belongs here

An improvement may change how you reach the game. It may never change what the game does.

Nothing in these four documents touches a rule: not a roll, not a price, not a schedule, not an outcome. That is the line, and when something crosses it, it stops being an improvement and becomes a declared divergence, with its βš–οΈ tag and its reason written down.

The check is concrete, not a statement of intent: the engine is deterministic, so a session recorded with touch controls replays identically on a keyboard. If an improvement changed what the engine computes, that replay would stop matching.


What we will not improve

These are the things we have been asked for and will not do. They are written here so the boundary is visible rather than a matter of taste, and so nobody has to ask twice.

RequestWhy not
A quest marker or a compass to the objectiveWorking out where to go from a conversation is the game. An arrow would replace it. The companion panel is reference material: it never reads your save and never marks an objective.
An automap of the dungeonsGraph paper was part of playing this. Bring some.
Rebalanced combat or difficultyIt is precisely what the project exists to preserve. Not negotiable β€” and it would break the comparison against the original, which is where all the verification comes from.
A modern interface on top of the 1988 oneThe panels stay where they were. The touch keypad is the only concession, and only where there is no keyboard.
A conversation journal or a minimapThe port had both (F6 and Tab) and removed them: the original has no journal on any key, and the map is only seen through (V)iew with the gem. The minimap gave away for free what the game charges for.

And one that needs more care than the others, because the answer is not "no": upscaled art. The tiles come out of your files and are never redrawn β€” but the port does offer xBR smoothing, and today that is the default skin on startup. That is not new art: it is a filter over the same pixels, reversible with a switch, and the faithful skin leaves the image byte-for-byte as the original. It is documented in 1 Β· Image improvements with what it gains and what it costs. What we will not do is upscale with a generative model: that would be another game's art.


Rules these documents follow


A note on the images

The screenshots on these pages contain graphics from the original game. They are shown here, on this site, because seeing the difference is the entire point of a before/after.

They do not travel to the source repository. The two destinations diverge on purpose, and the reason is worth stating plainly: a deployed site can show screenshots of the work it describes; a repository published under a free software licence cannot carry third-party artwork. Same project, two rules, each declared where it applies.