Originally Posted by gundamwfan
Everything else is secondary now to getting rid of the crashing bug that occurs after loading more than one ROM by making use of the Quit ROM function.
I've also tracked where it hangs every time, BTW - it's at Memory.LoadROM (a SNES9x function to load a ROM) - it does this after having played the first ROM for more than 10/20 minutes, then quitting back to the ROM browser menu and reinserting another ROM.
I've tried all kinds of different possibilities - deinitializing Snes9x, deinitializing Snes9x AND the audio server of the PS3 AND everything I could think of, NOT deinitializing anything and letting everything stay in memory (the audio server, Snes9x) - it keeps locking up AFTER I have loaded the first ROM into the emulator, playing for longer than 10 minutes, then me quitting the game through a button shortcut and selecting another ROM to load. It will then hang at Memory.LoadROM().
Perhaps byuu is lurking around here - since you have contributed to SNES9x you must be aware of its overall structure - when I look at unix/unix.cpp and take a look at the specific UNIX implementation of SNES9x, I get the sense that the way SNES9x works is by basically staying resident in memory all the time while the UI (GTK/Qt/whatever) basically keeps feeding it ROM images or anything it wants to for example.
I don't get the sense that after resetting a ROM or unloading a ROM, they deinitialize the entire emulator and then re-initialize everything again after loading another ROM. SNES9x only triggers S9xExit at the debugger's request or when really exiting the entire emulator. Am I correct in that assumption, and if so, if SNES9x has to remain resident in memory all the time, then that means that this is obviously going to create memory problems if I actually want to create a bSNES/SNES9x combo emulator in the future.