I've been messing with the Debugger lately and found a common factor in most crashes
in Brawl.
-1- there is some sort of corruption in the Jit at some part of the game.
-2- trying to advance after that corruption happened Jit or Interpreter will crash.
So trying to debug this at the moment of the crash is useless.
This is a simple one, SSBB, main menu, choose group.
When pressing the "Brawl" button, -1- happens, then when you press back -2- happens.
Now, before choosing "Brawl", pause and switch to Interpreter, once you are in the
character selection menu, switch again to Jit (or leave it on Interpreter), press
"Back", it won't crash.
In SSE, entering the door to the Giant Diddy Kong fight triggers -1-, after choosing
characters, it crashes.
Same here, switching to interpreter as the character crosses the door makes the game
continue without problems.
This is for those situations where a crash will happen all the time, I bet that with
normal crashes that can be avoided enabled Unlimited Jit cache it is the same.
Fixing the 100% sure crashes will fix these as well, and most of the crashes in many,
many games.
Now, I don't have the slightest idea on how to debug this any further, is it even
possible to compare memory/instructions from Jit and Interpreter after loading a save
state and advancing a X(fixed) amount of frames?
I was planning on loading at the menu, pressing A to choose and let it move on like
30 or 60 frames and then compare memory with both cores.
Is it possible to make the emulator advance frame by frame on both cores? Or to
program it to advance a x amount of frames and then pause?