the cutting room mirror

Ougon Yuusha Goldran Himitsu Daihyakka

A game based on the Ougon Yuusha Goldran anime series.

Interrupt Handler#

A generic error handler for displaying an error message, called by interrupt vectors.

To activate it, we can replace one of the function calls for page 0 to instead call one of the interrupt vectors, by applying patch 00004a10 = 02 00.

Error strings:

BAS ERROR
ADDRESS ERROR
ILLEGAL INSTRUCTION
ZERO DIVIDE
PRIVILEGE VIOLATION
LINE 1010 EMULATOR
LINE 1111 EMULATOR
ADDRESS BOUNDS ERROR
#0 WINDOW TOO MANY OPEN/CLOSE
#1 WINDOW SAVE AREA OVER FLOW

(Source: Original TCRF research)

Sound Test#

The unreferenced function 0000d024 contains a sound test that would have appeared in page 5. The 2 bottom rows display the pen position, either on pad or Storyware.

There's 2 changes that prevent this screen from loading:

  • The page address table at offset 0000089a has the same address for page 6 in both indexes 5 and 6. Therefore, switching to page 5 loads the same scene as page 6;
  • Function 00000dfa reads the page from its I/O data address, but when the index is 5, it's overridden with index 6:
00000e32 0c 47 00 05     cmpi.w     #0x5,D7w
00000e36 66 00 00 06     bne.w      LAB_00000e3e
00000e3a 3e 3c 00 06     move.w     #0x6,D7w

We can set the correct address on the page address table and turn the above override into a no-op instruction with the following patch:

000008b0 = d0 24
00000e3a = 4e 71 4e 71

Controls:

Right/Left

Increment / Decrement ID

Up/Down

Select entry

Red Button

Play

Pen Button

Fade-out sound

(Source: Original TCRF research)