BoE Locked Door Keyboard Shortcuts
Motivation

In both Exile 3 and Blades of Exile, walking into a locked door triggers a
dialog that presents Bash Door, Pick Lock, and Leave buttons.
In Exile 3, the desired action can quickly be selected from the keyboard with
b and p shortcut keys. However in Blades of Exile, these handy shortcuts
are inexplicably missing, and opening locked doors requires reaching for the
mouse to click the dialog buttons.
Remedy
Make locked door dialogs in Blades of Exile respond to b and p key presses the
way Exile 3 does.
Method
In order to restore the keyboard shortcuts in Blades of Exile, we simply insert
the ascii bytes b and p at the appropriate location in the executable.
Windows 3.1 Version
Patching the Windows version of Blades of Exile v1.0.1 requires modifying two
bytes in the file BLADES.EXE. The shortcut keys for the Bash Door and Pick
Lock buttons are at offset 0x72912 and 0x72913. Use a hex editor to replace
the two 0x00 bytes at those offsets with the two bytes 0x62 and 0x70
(ascii for b and p). Alternatively, use xxd or dd as a command line hex
editor. For example:
echo -n bp |xxd -o 0x72912 |xxd -r -c 2 '-' BLADES.EXE
-or-
echo -n bp |dd iflag=count_bytes oflag=seek_bytes count=2 seek=$((0x72912)) conv=notrunc of=BLADES.EXE
Macintosh Version (68k1)
Patching the Mac version is a bit more complicated because the data are in a
compressed format within the Blades of Exile (fat) v1.0.2 file. For the 68k
executable, the resource of type DATA with id 0 must be modified using a
resource editor2 such as ResEdit. Two changes are required:
- at offset
0x0003, the byte0x7bmust be changed to0x7fto account for the increased size of the resource in step 2. - at offset
0x777b, the byte0x4cmust be replaced with the five bytes0x46 0x81 0x62 0x70 0x43This will cause everything after0x777bto shift forward increasing the size of the resource by four bytes.
Conclusion
Now we can open doors without reaching for the mouse.
Happy Adventuring!
Footnotes:
-
Although the executable is FAT, this patch only changes the 68k part. Patching the PPC part requires similar shenanigans to the data fork. I don’t currently have any way to run PPC code, so I won’t speculate on the procedure. ↩
-
Be sure to use a resource-aware editor and not a simple hex editor when modifying resources. ↩