OpenHuey

OpenHuey is a PC port and decompilation of Haunting Ground for PlayStation 2 that allows playing the game with mods and features a Forth console.

README

OpenHuey

h

Another kind of Hewie (Discord setup at https://discord.gg/7sMGvfBAE)

Download: OpenHuey latest (Linux and Windows, rebuilt on every merge) · all releases. You need your own copy of Haunting Ground (USA) for the PS2: start openhuey and pick its disc image (.iso) the first time - it is imported once into library/ beside it. No game data is included. To update: UPDATE on the title (or openhuey --update). When an update reads more of the game than your library has (0.1.18: faces and hands), OpenHuey says so as it starts and offers to import the disc again - pick the .iso once more; saves and settings are kept (or openhuey --import disc.iso). Mods: mods/ beside it (openhuey-src/docs/modding.md).

OpenHuey rebuilds Haunting Ground (Capcom, PS2, 2005, SLUS_210.75) for PC, in three parts:

PartPathWhat it is
The decompilationsrc/, include/The executable as C, each function checked against the original in an emulated PS2 CPU (tools/difftest.py). Functional, not byte-matching. docs/decomp.md
hgnative/That C running natively (SDL3, OpenGL, libavcodec): the reference for how the game behaves.
openhuey (once hga)openhuey-src/ (once new-src-actors/)The game rewritten for clarity and modding: a C engine, with Fiona, Hewie, the stalkers and the story as actors passing messages, written in Forth. A console runs Forth live. openhuey-src/README.md

openhuey plays the whole story: the title, the rooms and their scripts and cutscenes, Fiona, Hewie, the stalkers, items and the menu, saving, the game over and the endings, the mini-game where you play as Hewie, and the extras room's movies and galleries. Not yet: a few of the model gallery's details (some figures' second textures and idles).

Building

Needs CMake, a C compiler and SDL3 (movies: libavcodec, loaded at run time). Data: openhuey imports the disc image (.iso) once into its library (chosen in a file dialog the first time, or openhuey --import disc.iso); a disc image, its DATA.CVM or the extracted folder can also be given as an argument. hg reads the disc image, DATA.CVM or folder as an argument, or chosen and remembered.

# OpenHuey
cmake -S openhuey-src -B build/openhuey-src -G Ninja
cmake --build build/openhuey-src
build/openhuey-src/openhuey                # (or --import disc.iso, or [disc.iso | data folder])
ctest --test-dir build/openhuey-src        # the tests, headless

# hg (first: tools/setup.sh, then .venv/bin/python configure.py --split; the executable
# SLUS_210.75, sha1 e0867d2ec83e6e2fccf147ad9e645a9a662d1c15, in baserom/)
cmake -S native -B build/native/cmake
cmake --build build/native/cmake -j8
build/native/cmake/hg [disc.iso | data folder]

In openhuey: ` opens the Forth console (free-play skips the opening, castle-2f-3 room! goes to a room, more in openhuey-src/scripts/debug.fs; Ctrl+V pastes, Ctrl+C copies the line or the last output, Ctrl+Shift+C the whole log); F1 the settings (the picture - presets enhanced, the default, and as on the PS2 - fullscreen, the controls); F11 or Alt+Return fullscreen; F2 shows the debug meters, the actors and the version; F3 frees the camera; F5 / F9 quicksave and load; F12 keeps a bug report (in user/bugs/: a report, a screenshot and a save, and the console opened for a note - or bug <what happened> at the console). In hg: F5 / F9 quicksave and load; HG_EVLOG=1 traces the room scripts, HG_ROOM=2A starts at a room, HG_HEADLESS=1 HG_MAXFRAMES=n runs without a window.

Controls

A gamepad works too, through SDL.

KeyPadIn playIn menus
WASDLeft stickMove
ArrowsD-padMove the cursor
X / SpaceCrossHold to runConfirm
C / BackspaceCircleAct: examine, doors
ZSquareShove / kick
VTriangleThrow / set downCancel; skip a paused movie
Q / EL1 / R1Q: crouch; E: fleeTurn pages
I J K L, FRight stick, R3Hewie's commands
ReturnStartPausePause a movie
TabSelectThe menuClose it

The earlier rewrite new-src/ (hg2) is retired, kept at the tag new-src-final.