Skip to content

Running

Sinan Karakaya edited this page Oct 8, 2026 · 4 revisions

Running

Build from your own NTSC-U disc dump as described in Building, or let the launcher build it and start it with Play. A game the launcher started logs to dq8.log in its game files folder, and keeps its memory cards in Extracted_Usa/mc0 there. To start a build by hand, from the repository root:

./build/game/src/runtime/dq8 ../Extracted_Usa/SLUS_212.07 \
  --iso=../DQ8_USA.iso --gs=sdlgpu

Supply both the extracted ELF and ISO. The runtime needs sector reads from the disc, not just the executable. Run dq8 --help for launch options. Use --gs=sw for the software reference renderer and --scale=N to change SDL GPU internal resolution. Higher resolution does not change game logic timing.

Sound comes from the game's own IOP drivers, loaded from the disc, and plays on the default audio device. --mute silences it without stopping the drivers: the game waits on them, so they keep running either way.

The macOS app wrapper logs to its build directory's logs/dq8.log. A direct launch prints diagnostics to the terminal. Run only one instance against a save directory at a time, and back up your existing memory-card data before testing. The default memory-card root is mc0 beside the supplied ELF, for example ../Extracted_Usa/mc0. Saves are directory-backed; the runtime does not import PCSX2 memory-card images automatically.

Keyboard controls

PS2 control Keyboard
D-pad Arrow keys
Left stick W, A, S, D
Right stick I, J, K, L
Cross X or Space
Circle C or Escape
Triangle V or keypad 1
Square Z or keypad 0
L1 / R1 Q / E
L2 / R2 Left Shift / Right Shift
L3 / R3 R / F
Start / Select Return / Tab

In field gameplay, Circle opens the menu, Cross confirms, and Triangle cancels. Arrow keys walk; the left stick provides analog movement.

The SDL GPU renderer accepts SDL-supported gamepads and hotplug. Face buttons map by position: south/east/west/north to Cross/Circle/Square/Triangle. Both sticks, D-pad, shoulders, triggers, stick clicks, Start, and Back are mapped. Keyboard directions override the corresponding controller axis while held. Input is cleared when the window loses focus. Rumble is not implemented. Every binding above can be changed in the in-game menu.

In-game menu

Press F1 (or Guide, or Back + Start, on a controller) to open a menu bar over the game. The game pauses while it is open. Mouse, keyboard and controller all work in it: arrow keys or the D-pad move, Enter, Space or Cross choose, Escape or Circle go back, and L1/R1 switch settings pages.

Menu What it holds
Game Pause (F2), fast-forward (F4) and its speed, mute, screenshots (F12; Shift+F12 includes the menu), and the screenshots folder
Settings The Display, Sound, Controls and Interface pages
View Fullscreen (F11 or Alt+Enter), the frame-rate counter (F3) and renderer statistics
Help Keyboard shortcuts, the project page, reporting a problem, and About
  • Display: window or fullscreen; vertical sync (On, Fast where the driver offers mailbox presentation, Off); internal resolution from 1x to 8x, changed while playing; aspect ratio (Auto follows the game's own Screen Size option, or 4:3, 16:9, Native and Stretch); the scaling filter (Sharp, Smooth or Nearest); integer scaling; and Sharper picture, which drops the PS2's one-line deflicker blend (on by default).
  • Sound: volume, mute, and mute while the window is in the background.
  • Controls: the keyboard on or off; which controller plays (any, one in particular, or none); every PS2 input, with two bindings each for controller and keyboard (choose a binding, then press the new button, key, stick direction or trigger; Escape cancels, right-click or Clear empties it); stick dead zone, trigger threshold and camera inversion. A pad diagram lights up with what the game would read.
  • Interface: menu size, notifications, hiding the idle mouse cursor, the Back + Start shortcut, pausing with the menu open or the window in the background, the fast-forward speed (2x, 3x, 4x or unlimited), and the frame-rate counter's position.

Settings are saved as they change, to settings.ini in SDL's per-user preferences folder: ~/Library/Application Support/DQ8Recomp/DQ8Recomp/ on macOS, %APPDATA%\DQ8Recomp\DQ8Recomp\ on Windows and ~/.local/share/DQ8Recomp/DQ8Recomp/ on Linux. Screenshots go to screenshots/ beside it. DQ8_SETTINGS_FILE points elsewhere, and --scale=N sets the internal resolution for one run without saving it.

Fast-forward removes the waits between frames, so it cannot speed up a scene that already runs below full speed. Movies keep their own pace and music keeps its tempo.

Troubleshooting

  • The executable only prints a stub message: regenerate the game code and configure with DQ8_LINK_GENERATED=ON and DQ8_LINK_OVERLAYS=ON.
  • SDL GPU is unavailable: check that SDL3 was found at configure time and that the graphics driver supports an SDL GPU backend.
  • Movies are skipped: check the FFmpeg detection message when configuring.
  • Gameplay is slow: a build without compiled VU1 programs runs the VU interpreter, which cannot keep up in the field. Record and compile them as described in Vector Units. Lowering resolution cannot solve a VU CPU bottleneck.
  • No sound: check the log for [iop] lines about the sound modules, and that --mute is not set. Game code generated before sound support has to be generated again, since the stub list changed.
  • Speech cuts in and out: the game feeds streamed speech a little every frame, so it breaks up whenever the game runs below its frame rate.

F3 shows a frame-rate counter of completed game renders; for a frame-rate window title instead, set DQ8_GFX_SHOW_FPS=1 before launching. Completed game renders and presentations are separate counters. Repeated presentations of an unchanged image do not demonstrate playable gameplay. Leave capture, trace, and profiling options off during ordinary play.

Read Project Status before reporting a known limitation. For new issues, include the commit, game revision, OS, renderer, reproduction steps, and relevant trimmed logs; omit game files and private data.

Clone this wiki locally