Dolphin, the GameCube and Wii emulator - Forums
Microphone Related Crashes - Printable Version

+- Dolphin, the GameCube and Wii emulator - Forums (https://forums.dolphin-emu.org)
+-- Forum: Dolphin Emulator Discussion and Support (https://forums.dolphin-emu.org/Forum-dolphin-emulator-discussion-and-support)
+--- Forum: Support (https://forums.dolphin-emu.org/Forum-support)
+--- Thread: Microphone Related Crashes (/Thread-microphone-related-crashes)



Microphone Related Crashes - SpirrwellTech - 12-07-2016

Hello there!

This is the first time I've messed around with microphone emulation in Dolphin, and I've been running into crashes. I came across this here: https://forums.dolphin-emu.org/Thread-enabling-gcn-microphone-crashes-dolphin-exe?highlight=microphone+crashes

But, my crashes aren't as instantaneous as described in that thread, and that person reported that the issue was fixed in a later revision, but that was 4 years ago. Like that person, I'm trying to also run Mario Party 7 with the microphone.

The microphone seems to work, but it will randomly crash, sometimes as I go to push the microphone button, sometimes during use, whatever. I haven't been able to find an exact reproduction of the issue. I haven't tried the stable versions of Dolphin, as I always opt for the latest development build when I see it. But I did try a couple different builds and I had the same results.

Debugging with Visual Studio has brought me to MMU.cpp pointing to line 400 in the TryReadInstruction() function:

Code:
// TODO: Refactor this. This icache implementation is totally wrong if used with the fake vmem.
  if (Memory::m_pFakeVMEM && ((address & 0xFE000000) == 0x7E000000))
  {
    hex = bswap(*(const u32*)&Memory::m_pFakeVMEM[address & Memory::FAKEVMEM_MASK]);
  }

The code that appears to crash is when you're trying to set hex to a value. I don't even have a clue what in the world this code means as it's a bit too low level for me. Doing some sort of a byteswap that passes m_pFakeVMEM casted to what I assume is an unsigned 32 bit integer pointer in a dereferenced form, and just saying that makes my head hurt, and I just feel like I'm spouting gibberish. My only particular guess is that it has something to do with the TODO: comment.

Also, before you ask, I did follow the instructions here: https://wiki.dolphin-emu.org/index.php?title=Mario_Party_7#Microphone_Configuration Though the way the microphone input is handled seems rather uh... not so good to put it lightly. Though I suppose it works.

Anyhow, to reproduce the issue, just load up Mario Party 7 and load up the minigame Balloon Busters, and play it a few times. Sometimes it will crash on the first try, sometimes it won't, but it happens often enough to where it's easy to reproduce. I haven't tried it with the other minigames, but it did crash when it went to load up a microphone game during normal party play, and well, a crash is a crash.

If you can't reproduce the issue, I can supply my dolphin PDB file along with a minidump I already created. If you need any more information, please let me know!