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 of the 18 entries Β· before/after comparisons
| Document | What it covers |
|---|---|
| 1 Β· Image | How it looks: the two skins, the optional smoothing and the transparencies |
| 2 Β· Layouts | How it sits on your screen: desktop, phone, tablet and full screen β and what each one costs |
| 3 Β· Experience | How 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:
| Tag | What it means |
|---|---|
| β¨ ADDED | The original did not do this. It is a product decision, almost always with a switch to turn it off. |
| βοΈ DECLARED DIVERGENCE | The port knowingly does something different, and it is recorded as such. |
| π― FIDELITY | The "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. |
| ποΈ REMOVED | It 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
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.
| Tag | What it is | How it is turned on |
|---|---|---|
| Looks better | ||
| β¨ADDED | You can choose between the untouched 1988 image and a smoothed one, and switch between them instantly1 Β· ImageTechnical detailThe 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 |
| β¨ADDED | With the smoothed image the world's edges look polished without redrawing a single graphic: menus and text stay pure 19881 Β· ImageTechnical detailThe 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) |
| β¨ADDED | Some figures let you glimpse the ground they stand on, so they don't hide what's underneath1 Β· ImageTechnical detailTransparency 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 | Only with the smoothed image; it can be turned off |
| β¨ADDED | The black box around figures is gone: you see the real floor around them, and never a wall painted as floor1 Β· ImageTechnical detailTransparency 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 | Only with the smoothed image; it can be turned off |
| β¨ADDED | The smoothed image moves nothing around: the frame is the same and only what shows inside the view window changes2 Β· LayoutsTechnical detailThe 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 | ||
| β¨ADDED | On a monitor the whole game sits centered and enlarged: the 1988 screen, blown up2 Β· LayoutsTechnical detailThe 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 |
| β¨ADDED | If you want the proportions of an old tube monitor β everything a touch taller β you can have them2 Β· LayoutsTechnical detailPeriod 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 |
| β¨ADDED | On a phone held upright, the map takes the full width and the controls sit below, within thumb's reach2 Β· LayoutsTechnical detailThe 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 |
| β¨ADDED | With the phone on its side, the game stays centered and the controls split to both sides2 Β· LayoutsTechnical detailLandscape β 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 |
| β¨ADDED | On an upright tablet everything fits with room to spare: the big map and the full panels below2 Β· LayoutsTechnical detailTablet, 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 |
| β¨ADDED | The game can fill the whole screen, browser bars gone2 Β· LayoutsTechnical detailFullscreen β Toggles browser fullscreen, and never throws: without support it is a silent no-op. Β· β β Video β "Fullscreen" | β β Video β Full screen |
| Play by touch | ||
| β¨ADDED | Tap a square on the map and the party walks there, just as if you had used the arrow keys3 Β· ExperienceTechnical detailTapping 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 |
| β¨ADDED | On 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 Β· ExperienceTechnical detailTouch 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 ( | Appears by itself on touch screens |
| More convenient | ||
| β¨ADDED | As many named saves as you want β and they can be taken out to a file and brought back3 Β· ExperienceTechnical detailMultiple save slots β Named, unlimited slots, with export and import, instead of the original's single | F5 key |
| β¨ADDED | Every line of the game, in Spanish β and you can switch back to English whenever you like3 Β· ExperienceTechnical detailSpanish β 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 |
| β¨ADDED | You can re-read what already scrolled off the console: wheel up or drag3 Β· ExperienceTechnical detailThe scrollable log β The console keeps a scrollback: wheel or drag to reread what scrolled off, with the | Wheel or drag on the console |
| β¨ADDED | You can edit your game with the developer console β gold, position, clock, anything. Fair warning: editing marks the save as touched, forever3 Β· ExperienceTechnical detailThe 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. Β· ` | The ` key or F4, or β β Debug (QA) |
| β¨ADDED | Bring 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 Β· ExperienceTechnical detailThe 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 | β β Help Β· Atlas & guide |
No entry carries that tag.
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.
| Request | Why not |
|---|---|
| A quest marker or a compass to the objective | Working 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 dungeons | Graph paper was part of playing this. Bring some. |
| Rebalanced combat or difficulty | It 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 one | The panels stay where they were. The touch keypad is the only concession, and only where there is no keyboard. |
| A conversation journal or a minimap | The 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
- Every claim comes from one of two sources: code read in this tree (with path and line), or an internal engineering record cited by name. Where one of those sources has turned out to be stale, that is said.
- Trade-offs get written down. If something was gained at the cost of something else, it is in the text. A comparison without the cost is advertising.
- Figures carry a date. A number without its moment is a snapshot someone will read as the present.
- Every
## N Β·entry declares its tag and its summary, in that order and before the first###: first a line that STARTS with π―/β¨/βοΈ/ποΈ, then a whole line in italics saying in one sentence what it is. That is where the table above comes from, and it builds itself: an entry with no tag or no summary turns the build red instead of quietly dropping out of the table. (If the tag line already carries that sentence right after the emoji β with noTAGβ the sentence serves as the summary.)
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.