mirror of https://github.com/bsnes-emu/bsnes.git
Update to bsnes v054 release.
After a half-dozen hours of installing and compiling various combinations of MinGW and Qt, I've finally found a combination that once again allows for profile-guided optimizations: MinGW GCC 4.3.3 and Qt 4.6.0-beta 1. Though Qt 4.4 still has broken PGO, the latest Qt beta no longer has the process freeze issue upon termination. This release is essentially the same as v053, but it's now at least as fast as v052 was, and ~10% faster than v053, which lacked profiling. I did add in two quick changes, however: first, when starting in fullscreen mode, the video output size was being incorrectly set to the windowed size; second, by requiring save states to match the CRC32 of games, it made debugging with them impossible, so I've turned off the CRC32 matching.
This commit is contained in:
parent
8135dfdac9
commit
6a17b5ed4f
|
@ -1,4 +1,4 @@
|
|||
static const char bsnesVersion[] = "0.053";
|
||||
static const char bsnesVersion[] = "0.054";
|
||||
static const char bsnesTitle[] = "bsnes";
|
||||
static const unsigned bsnesSaveStateVersion = 3;
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ bool System::unserialize(serializer &s) {
|
|||
|
||||
if(signature != 0x31545342) return false;
|
||||
if(version != bsnesSaveStateVersion) return false;
|
||||
if(crc32 != cartridge.crc32()) return false;
|
||||
//if(crc32 != cartridge.crc32()) return false;
|
||||
scheduler.init();
|
||||
|
||||
serialize_all(s);
|
||||
|
|
|
@ -114,6 +114,7 @@ void Application::init() {
|
|||
inputManager.refresh();
|
||||
inputManager.onInput = bind(&Utility::inputEvent, &utility);
|
||||
|
||||
utility.resizeMainWindow();
|
||||
utility.updateAvSync();
|
||||
utility.updateVideoMode();
|
||||
utility.updateColorFilter();
|
||||
|
|
|
@ -50,9 +50,12 @@ const char defaultStylesheet[] =
|
|||
int main(int argc, char **argv) {
|
||||
application.main(argc, argv);
|
||||
#if defined(PLATFORM_WIN)
|
||||
//workaround: one of the Qt DLLs hangs during its termination, well after main() returns.
|
||||
//to prevent the process from remaining open in the background, it must be forcefully terminated.
|
||||
TerminateProcess(GetCurrentProcess(), 0);
|
||||
//Qt/Windows has a few bugs that cause the process to hang and/or crash when
|
||||
//unloading DLLs. 4.5.x always hangs, and 4.6.x crashes under certain
|
||||
//circumstances. However, all DLLs must unload for profiling to work.
|
||||
//The below code bypasses Qt DLL unloading, but only when the binary is named
|
||||
//as such to indicate that profile generation is taking place.
|
||||
if(strpos(argv[0], "bsnes-profile") < 0) TerminateProcess(GetCurrentProcess(), 0);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue