grumpycoders / grumpycoders/pcsx-redux

Thousand Arms (SLUS-00845) soft-locks at first in-engine cutscene: script waits for SPU IRQ that never fires

Open
#2,058 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
994
Forks
151
Avg merge
1d 15h
Merged PRs (30d)
18

Description

### Describe the bug

The game loads the first in-engine scripted scene (night village, main character going on a road).

### Expected behavior

The scripted scene starts: dialogue window opens with voiced text
("Be quiet, already." etc.), scene proceeds.

### Steps to reproduce the bug

1. Start new game.
2. The game loads the first in-engine scripted scene
3. Wait.

### Operating System

Windows 11

### PCSX-Redux version

Version: 24734.20260713.10.x64
Build: 345
Changeset: f22e4c122cd8d2e84dc6d2782de3def75d0014ff
Date & time: 2026-07-13 22:49:36

### CPU model

Core I7-860

### GPU model & Drivers

Nvidia RTX 5070 TI, version 610.74

### BIOS version

retail BIOS (SCPH-101, sha-known `171bdcec`) and bundled OpenBIOS

### Options

- [x] Dynarec CPU
- [ ] 8MB
- [ ] OpenGL GPU
- [x] Fastboot
- [ ] Debugger

### Iso checks

_No response_

### Logs

_No response_

### Additional information

- The scene loads fine (the overlay with dialogue text is present in RAM at
0x8009F000, character idle animation plays), but the dialogue window never
appears and the scene never advances.
- In the debugger the game is spinning in a loop waiting for an SPU IRQ that
is never delivered.
- If **"Always enable SPU IRQ"** is toggled ON while the game is stuck: exactly
one dialogue window is displayed (with voice), after which the game freezes
completely.
- If "Always enable SPU IRQ" is enabled from boot: the game hangs right at the
start of gameplay, before the scene.

This matches the game's known reliance on SPU IRQ for streaming dialogue voice
data: Thousand Arms is listed among SPU-IRQ-dependent titles in Mednafen's
SPU-IRQ notes (https://github.com/libretro/beetle-psx-libretro/blob/master/mednafen/psx/notes/SPU-IRQ),
and TODO.md in this repo mentions pending work on IRQ integration.

Contributor guide

Open the contributing guide

Research direction

Start with TODO.md and reproduce the first in-engine scene under the debugger, following the loop that waits for the SPU IRQ. Compare normal boot, enabling “Always enable SPU IRQ” while stuck, and enabling it from boot. Done means the dialogue window opens, voiced playback proceeds, and the scene advances without introducing the reported boot hang.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.