Emulator Issues #12241
Project M or LXP launcher freezes
Project M or LXP launcher for Super Smash Bros. Brawl mods
What's the problem? Describe what went wrong.
Note: These launchers need DSPLLE.
See attached logs. Things seem to differ after Core\HW\EXI\EXI_DeviceIPL.cpp:306 N[OSREPORT]: << RVL_SDK - DVD release build: Aug 2 2007 13:46:28 (0x4199_60831) >>
What steps will reproduce the problem?
- Enable DSPLLE
- Run Project M launcher or LXP launcher to load Brawl mods. Let me know if an explanation for how to set this up is needed.
- Observe freeze.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Is the issue present in the latest stable version?
If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)
What are your PC specifications? (CPU, GPU, Operating System, more)
Win 10 Pro x64
Intel Core i7-4702MQ CPU @2.20GHz
GeForce GT 750M
2x 8GB Hynix 1600MHz
GeForce Game Ready Driver 425.31
#1 Updated by Pikachu025 7 months ago
For reference, that bisect points to: https://dolphin-emu.org/download/dev/07a0d44b36c487967cbd957ed9bd20384bf3e33a/
Which yeah, seems plausible.
Looks like the issue is in the game's antipiracy "Error #001" check, which attempts to make a read past the end of the disc, expecting it to fail with an out of bounds result (which wouldn't happen with DVD-Rs apparently). But instead of giving an out of bounds error, the disc drive wants the disc ID to be read since it was just reset (something that was only implemented in 5.0-12436). Testing the normal game, I don't see the write to
PI_RESET_CODE happening, so it's probably something to do with the mod.
There are two possibilities:
- The write to
PI_RESET_CODEshouldn't be happening but is for some reason
- The out-of-bounds error is supposed to take priority over the disc ID not read error (which seems unlikely to me)
I'll do some further testing. The one thing that strikes me as odd is that I'd expect the "Error #001" message to show up in this case instead of just a freeze.
I was able to reproduce, but it sent me back to the System Menu instead of freezing. Do you have a System Menu installed?
Project M is definitely intentionally writing 1 to
PI_RESET_CODE (it actually logs
0xCC003024 = 1, but none of its log messages show up after
WDVD OpenPartion because (as far as I can tell) after Dolphin detects a game switch, it resets the HLE patches since they usually don't apply anymore; in this case Project M has a few more log messages before it actually starts Smash). I don't see anything else that writes something else back to
PI_RESET_CODE (Project M doesn't do it, and Smash only does it in one place that doesn't seem to apply and wasn't hit when launching the game normally).
It also turns out that the "Error #001" message won't show up in this case, because it actually checks the top byte of the error result (in this case
0x05020401) and returns
false immediately if it's nonzero (it only performs further checking of the error code, which might result in the message, if the top byte is zero). Since the top byte is the drive state (with 5 being disc ID not read), it won't give the message. I'm guessing Nintendo did this so that if someone ejected the disc right after it started, it wouldn't make the claim about an unauthorized device. The
false return value causes the calling code to run
OSReturnToMenu(), so the System Menu part makes sense at least.
Unfortunately, I don't fully understand what's happening here. My first possibility doesn't apply (the write is clearly intended), and the second one also doesn't (even if the out-of-bounds error took priority in the no disc ID state, that'd result in a return of
0x05052100 because it still includes the state value of 5, and thus it would still return to menu). Possibly the implementation of
PI_RESET_CODE is backwards (right now, we reset the drive when bit 2 (0x4) is cleared, but instead it should be reset when it's set), but that doesn't seem quite right to me since libogc's (and Nintendo's) DVD_LowReset clears it, waits, and then enables it again; I'd expect the reset signal to be the period when it's unset.
#8 Updated by ryanebola16 7 months ago
- Operating system deleted (
Great, I'm using a NAND dump and my system menu no longer works. Since you were able to reproduce the rest of the problem I doubt that it's related. I'll file a new issue if redumping doesn't help and I find a bug relating to why the system menu no longer works for me. Thanks!
- Fixed in set to 5.0-12565
- Status changed from Fix pending to Fixed