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:
byuu 2009-10-19 16:58:29 +00:00
parent 8135dfdac9
commit 6a17b5ed4f
4 changed files with 9 additions and 5 deletions

View File

@ -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;

View File

@ -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);

View File

@ -114,6 +114,7 @@ void Application::init() {
inputManager.refresh();
inputManager.onInput = bind(&Utility::inputEvent, &utility);
utility.resizeMainWindow();
utility.updateAvSync();
utility.updateVideoMode();
utility.updateColorFilter();

View File

@ -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;
}