Recently I discovered that Personal Nightmare for DOS shipped with a CGA mode in glorious bubblegum tones.
Aside from a mention on the original box and in the manual, there’s basically no trace of it online. The GOG version doesn’t expose it at all, and without the original installer there’s no obvious way to enable it.
I've got the original US Box Office release, and after digging into the executables it turns out this mode is still fully functional in the GOG version, it just needs a bit of manual setup
Enabling CGA Mode
If you have an original copy of the game, you can enable CGA with a few steps:
- Edit PN.CFG so it contains:
0001 0000 0000 0000 0000
- Run UNPACK.EXE and let it finish
NOTE: The unpack step is destructive, so don’t run it from floppy disk or on your only copy.
- Launch TEST.EXE
At this point, the game will run in CGA mode.
How the Game Switches Modes
TEST.EXE checks a value loaded from PN.CFG and branches depending on whether CGA is enabled:
cmp [70DC], 0 [70DC] == 0 → EGA mode [70DC] != 0 → CGA mode
What UNPACK.EXE Does
Despite the name, UNPACK.EXE isn’t just decompressing files, it performs a graphics conversion pass.
The original game assets are designed for EGA, while CGA only supports 4 colors. To make this work, the game processes the graphics and rewrites them into a CGA compatible format.
After this step, the files are permanently changed, which is why the you shouldn't run it on your only copy and certainly don't run UNPACK.EXE directly from the floppy disk(Don't say I didn't warn you!)
ScummVM
My goal is to add proper CGA support for this game to ScummVM without requiring users to run UNPACK.EXE or modify their data files.
Instead, the conversion will happen at runtime, preserving the original data.
NOTE: If running in DOSBOX or on original hardware, you may need to patch 72.OUT prior to running UNPACK.EXE manually to fix a corruption bug in the Vicarage data. The GOG version already ships with this fix and ScummVM patches on the fly.
Documented here: https://sanguinehearts.blogspot.com/2009/05/personal-nightmare-72out-ips-patchfor.html
TLDR: Change the byte at position 53714(D1D2)in 72.OUT from 0x20 to 0x40, if that is already the case then you have a working copy.
Technical Note
As with Elvira I and Elvira II, the game executables are packed using EXEPACK.
No comments:
Post a Comment