Project

General

Profile

Actions

Emulator Issues #12943

closed

Datel titles require DSP LLE to boot

Added by pokechu22 almost 2 years ago. Updated almost 2 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:
5.0-16722

Description

Game Name?

Action Replay, MaxPlay, Advance Game Port, Max Drive, and Max Drive Pro

Game ID?

GNHE5d, DTLX01

What's the problem? Describe what went wrong.

Attempting to start Datel titles with DSP HLE results in a hang.

What steps will reproduce the problem?

Disable "skip main menu" (#8223) and then attempt to load one of those Datel titles while using DSP HLE.

Is the issue present in the latest development version?

Yes, 5.0-16526.

Is the issue present in the latest stable version?

Not tested, but yes according to the wiki.

What are your PC specifications?

  • CPU: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz, 2592 Mhz, 6 Core(s), 12 Logical Processor(s)
  • GPU: NVIDIA GeForce GTX 1650 Ti
  • OS: Windows 10 Home 10.0.19044.1706

Is there anything else that can help developers narrow down the issue?

The hang happens in Datel's version of __OSInitAudioSystem (libogc's __dsp_bootstrap). That function resets the DSP and magically causes some initialization code to run (that reads all of IROM and COEF and zero-initializes DRAM, and then sends back the mail 0x00543448). We're not properly detecting Datel's version of the function. I decompiled both functions and it seems like Datel's version has a typo; instead of clearing DSPCR_INIT (aka DSPCR_DSPRESET, with a value of 0x800) they clear DSPCR_DSPINT (with a value of 0x80), and thus the initialization code never runs and never sends back the mail, so Datel's code hangs forever. Their initialization code is also different (it doesn't zero DRAM) but I don't think that matters (and I'm not sure if Datel simply copied it from an older game, or what).

I don't know why it works on LLE, though; the initialization logic doesn't get triggered properly there either but it still works for some reason.


Related issues 1 (0 open1 closed)

Related to Emulator - Emulator Issues #8179: Datel Discs need INI changes, Bios forced on, LLE audio forced on.Won't fixkostamarino

Actions
Actions #1

Updated by pokechu22 almost 2 years ago

  • Related to Emulator Issues #8179: Datel Discs need INI changes, Bios forced on, LLE audio forced on. added
Actions #2

Updated by pokechu22 almost 2 years ago

As a workaround, you can pause the game while it's hung and then go to the code tab in the debugging UI. If you left click on the instruction reading lis r11, 0xCC00 a few lines after the highlighted line, and then select "set PC" on the main bar, the game will launch properly. (You also can instead right click on the instruction a few lines after the highlighted line that starts with beq+, and then select "insert NOP".) For the version of Advance Game Port that includes the Cheat Construction Kit, you will need to do this twice (once on initial startup, and a second time after choosing an entry in the menu).

After bypassing this hang, everything else seems to work properly with DSP HLE (apart from MaxPlay which is missing menu audio, but that also applies to LLE, see #12281).

Actions #3

Updated by pokechu22 almost 2 years ago

  • Status changed from New to Fix pending
Actions #4

Updated by pokechu22 almost 2 years ago

  • Status changed from Fix pending to Fixed
  • Fixed in set to 5.0-16722
Actions #5

Updated by pokechu22 almost 2 years ago

For reference, the fix was updated by PR 10784 (5.0-16732) and PR 10785 (5.0-16734).

Actions

Also available in: Atom PDF