Skip to content
Were told Ultima 7 can't run with the CPU cache disabled? It can, with this patch!
Assembly
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images
src
LICENSE
README.md

README.md

Ultima VII DOS Cache Patch (u7dcp)

The Ultima VII DOS Cache Patch patches a bug in the original version of Ultima 7, where the game will force-enable the CPU's L1 cache on launch.

This can be an annoying bug if you'd like to run the game with L1 cache disabled as a means of slowing down the CPU and thus the execution of the game, which will otherwise run too fast on CPUs newer than the 486.

With the patch, the game will run on newer CPUs no worries.

You'll find a pre-compiled binary of u7dcp for DOS on Tarpeeksi Hyvae Soft's website, along with further instructions on usage.

Assembling

To assemble u7dcp for its native target, DOS, using the fasm assembler, do:

fasm src/main.asm u7dcp.exe

What the patch does

Ultima 7 uses the unreal memory addressing mode. Unfortunately, it seems that a side-effect of the game's way of entering this mode is the resetting of certain unrelated CPU flags, among them the one that controls whether L1 cache is enabled.

The patch modifies the parts of the game code that are used enter unreal mode, such that irrelevant CPU flags are no longer reset in the process.

You can find further details in the comments to the source file src/main.asm.

A screenshot of u7dcp

You can’t perform that action at this time.