Emulator Issues #14099
openTiming issues with DSP HLE cause a deadlock in Super Mario 64 Homebrew GameCube/Wii port
0%
Description
Game Name?
Super Mario 64
Game ID? (right click the game in the game list, Properties, Info tab)
N/A
MD5 Hash? (right click the game in the game list, Properties, Verify tab, Verify Integrity button)
N/A
What's the problem? Describe what went wrong.
I've messed around with this homebrew port of SM64 and recently experienced some random unexplained "crashes" with no debug screen, so I've looked into the code tab to see that it was getting stuck on __dsp_def_taskcb with this assembly code:
801036d0 lha r9, 0 (r10)
801036d4 cmpwi r9, 0
801036d8 bge+ ->0x801036D0
Then I looked at the register tab on r10 and the hex is cc005004
So I then looked at what this corresponds to in source code form and land on libogc's dsp.c with this line of code:
{
u32 mail;
#ifdef _DSP_DEBUG
printf("__dsp_def_taskcb()\n");
#endif
while(!DSP_CheckMailFrom());
...
So it seems that there is a timing issue where the homebrew port waits for DSP mailbox forever
What steps will reproduce the problem?
This deadlock is random and can happen at any point in time while it runs, so just boot the game and wait until it freezes
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
I can send a log file if that helps narrow things down even further:
Files
No data to display