| Author |
Message |
|
byuu
Joined: 2009-04-10 at 03:00 PM Posts: 1810
|
 bsnes v0.053 released
This release greatly polishes the user interface, adds a new cheat code search utility, adds the snesfilter library, and adds Qt-based GUI support to both snesfilter and snesreader. snesfilter gains 2xSaI, Super 2xSaI and Super Eagle support, plus full configuration for both the NTSC and scanline filters; and snesreader gains support support for multi-file ROM archives (eg GoodMerge sets.)
Statically linking Qt to bsnes, snesfilter and snesreader would be too prohibitive size-wise (~10MB or so.) I have to link dynamically so that all three can share the same Qt runtime, which gets all of bsnes and its modules to ~1MB (including the debugger build); and Qt itself to about ~2.5MB.
However, there is some bad news. There's a serious bug in MinGW 4.4+, where it is not generating profile-guided input files (*.gcno files.) There is also a serious bug in Qt 4.5.2/Windows when using dynamic linking: the library is hanging indefinitely, forcing me to manually terminate the process upon exit. This prevents the creation of profile-guided output files (*.gcda files.) It would be tough enough to work around one, but facing both of these issues at once is too much.
I'm afraid I have no choice but to disable profile-guided optimizations until these issues can be addressed. I did not know about these bugs until trying to build the official v053 release, so it's too late to revert to an all-in-one binary now. And I'm simply not willing to stop releasing new builds because of bugs in third-party software. As soon as I can work around this, I'll post a new optimized binary. In the mean time, despite the fact that this release is actually more optimized, please understand that the Windows binary will run approximately ~10% slower than previous releases. I recommend keeping v052 for now if you need the performance. Linux and OS X users are unaffected.
Changelog: * save RAM is initialized to 0xff again to work around Ken Griffey Jr Baseball issue * libco adds assembly-optimized targets for Win64 and PPC-ELF [the latter courtesy of Kernigh] * libco/x86 and libco/amd64 use pre-assembled blocks now, obviates need for custom compilation flags * added a new cheat code search utility to the tools menu * separated filters from main bsnes binary to libsnesfilter / snesfilter.dll * added 2xSaI, Super 2xSaI and Super Eagle filters [kode54] * added full configuration settings for NTSC and scanline filters (12+ new options) * further optimized HQ2x filter [blargg] * added Vsync support to the Mac OS X OpenGL driver * added folder creation button to custom file load dialog * fixed a few oddities with loading of "game folders" (see older news for an explanation on what this is) * updated to blargg's file_extractor v1.0.0 * added full support for multi-file archives (eg GoodMerge sets) * split multi-cart loading again (BS-X, Sufami Turbo, etc) as required for multi-file support * cleaned up handling of file placement detection for save files (.srm, .cht, etc) * file load dialog now remembers your previous folder path across runs even without a custom games folder assigned * windows now save their exact positioning and size across runs, they no longer forcibly center * menus now have radio button and check box icons where appropriate * debugger's hex editor now has a working scrollbar widget * added resize splitter to settings and tools windows * worked around Qt style sheet bug where subclassed widgets were not properly applying style properties
_________________ Elements of the past and the future, combining to make something not quite as good as either.
|
| 2009-10-18 at 09:25 AM |
|
 |
|
tetsuo55
Joined: 2009-06-01 at 09:57 PM Posts: 197
|
 Re: bsnes v0.053 released
Great work, unfortunate about those stupid PGO and QT bugs all the time (but at least you seem to be a great addition to the MinGW and QT tester staff  )
|
| 2009-10-18 at 09:48 AM |
|
 |
|
creaothceann
Joined: 2009-04-10 at 06:17 PM Posts: 427 Location: Germany
|
 Re: bsnes v0.053 released
On byuu.org, the link to the Windows binary still goes to the 0.52 build.  Manual correction works though.
_________________ vSNES | Delphi 10 BPLs
"When I die, since I'm a real skeptic, I'm gonna gripe to the lord and make sure I get back my original investment when I'm reincarnated..." - Batou
|
| 2009-10-18 at 11:05 AM |
|
 |
|
byuu
Joined: 2009-04-10 at 03:00 PM Posts: 1810
|
 Re: bsnes v0.053 released
Redoing the manual. Trying to make it really fancy and comprehensive this time. http://www.byuu.org/bsnes/manual/Taking forever ... creaothceann wrote: On byuu.org, the link to the Windows binary still goes to the 0.52 build. ;) Manual correction works though. That's intentional. I'm recommending Windows users stick with v052, but I'm not going to stop releasing because of bugs in my development toolchain that aren't my fault :(
_________________ Elements of the past and the future, combining to make something not quite as good as either.
|
| 2009-10-18 at 11:16 AM |
|
 |
|
Grinch
Joined: 2009-10-12 at 09:29 AM Posts: 6
|
 Re: bsnes v0.053 released
Yeah shame about the PGO issues for the windows versions, it adds 10-13% for me on my rig, but atleast it works in Linux  . Also interesting to see what the new link time optimizations in gcc 4.5 can bring to BSnes later on. Thanks for all the great work on this release!
|
| 2009-10-18 at 03:31 PM |
|
 |
|
tukuyomi
Joined: 2009-04-10 at 11:56 PM Posts: 69
|
 Re: bsnes v0.053 released
Here is a deb package. http://88.191.30.201/~tukuyomi/stuff/bs ... 1_i386.debIt works on Debian testing+ and should work on Ubuntu 9.04+ (I have not tested)
_________________ FitzRoy - I recommend posting questions like this on nesdev as well where more eyes can see it. If you're still unsure, that is. byuu - " Hi, I'm working on SuperFX. Please bug the shit out of me now until it's supported. Thanks :) "
|
| 2009-10-18 at 05:42 PM |
|
 |
|
echoes
Joined: 2009-09-29 at 05:54 PM Posts: 18
|
 Re: bsnes v0.053 released
segfault on linux with the last version is gone. yay.
not sure if this is one purpose or not but it sure seems like an oversight... but it is apparently impossible to set/view hidden directories on linux, also because inline editing isn't possible...
|
| 2009-10-18 at 10:20 PM |
|
 |
|
Screwtape
Joined: 2009-04-11 at 04:21 AM Posts: 186
|
 Re: bsnes v0.053 released
byuu wrote: I did not know about these bugs until trying to build the official v053 release, so it's too late to revert to an all-in-one binary now. This vaguely worries me - it sounds like there's no way for even byuu to tell exactly which changes in a release caused which changes in the code, which makes it nearly impossible to track down problems like this. This sort of thing is exactly the reason I use source-control on every project I start, even if nobody else is ever going to use it - every project is a collaboration between at least two people (Past You and Future You), and attaching notes to every change you make helps immensely when you get to release time a month later and realise that one of the twenty-three things you changed has tickled a compiler bug.
|
| 2009-10-18 at 11:42 PM |
|
 |
|
kode54
Joined: 2009-04-10 at 08:54 PM Posts: 256
|
 Re: bsnes v0.053 released
The process terminates cleanly with the latest Qt SDK, 2009.04, which claims to be 4.5.3. The self-termination hack has been removed as it is no longer necessary. I've bundled the included mingw binaries as well as a profiled SPC dumping build and related snesfilter/snesreader binaries. [ Qt runtime] [ bsnes v0.053 Windows binary] [ source patch]
|
| 2009-10-19 at 01:41 AM |
|
 |
|
Dullaron
Joined: 2009-04-10 at 06:40 PM Posts: 91
|
 Re: bsnes v0.053 released
I'm having issues on these 2 on Vista. Using qt-win-opensource-4.5.3-mingw, tdm-mingw-1.908.0-4.4.1-2 and Microsoft DirectX SDK (March 2009). snesfilter Code: process_begin: CreateProcess(NULL, uname -a, ...) failed. moc -f ntsc/ntsc.moc.hpp -o ntsc/ntsc.moc moc -f scanline/scanline.moc.hpp -o scanline/scanline.moc g++ -O3 -I. -fomit-frame-pointer -Ic:/qt/4.5.3/include -Ic:/qt/4.5.3/include/QtC ore -Ic:/qt/4.5.3/include/QtGui -c snesfilter.cpp -o obj/snesfilter.o g++ -s -o snesfilter.dll -shared -Wl,--out-implib,libsnesfilter.a obj/snesfilter .o -Lc:/qt/4.5.3/lib -Lc:/qt/4.5.3/plugins/imageformats -lmingw32 -lqtmain -lQtG ui4 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore4 -lole32 -ladvapi32 -lws2_32 -luuid -lgdi32 Info: resolving QObject::staticMetaObject by linking to __imp___ZN7QObject 16staticMetaObjectE (auto-import) Creating library file: libsnesfilter.a c:/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: warning: a uto-importing has been activated without --enable-auto-import specified on the c ommand line. This should work unless it involves constant data structures referencing symbols from auto-imported DLLs. Press any key to continue . . . snesreader Code: process_begin: CreateProcess(NULL, uname -a, ...) failed. moc -f filechooser.moc.hpp -o filechooser.moc g++ -O3 -I. -fomit-frame-pointer -Ic:/qt/4.5.3/include -Ic:/qt/4.5.3/include/QtC ore -Ic:/qt/4.5.3/include/QtGui -c snesreader.cpp -o obj/snesreader.o g++ -O3 -I. -fomit-frame-pointer -c fex/Binary_Extractor.cpp -o obj/Binary_Extra ctor.o g++ -O3 -I. -fomit-frame-pointer -c fex/blargg_common.cpp -o obj/blargg_common.o
g++ -O3 -I. -fomit-frame-pointer -c fex/blargg_errors.cpp -o obj/blargg_errors.o
g++ -O3 -I. -fomit-frame-pointer -c fex/Data_Reader.cpp -o obj/Data_Reader.o g++ -O3 -I. -fomit-frame-pointer -c fex/fex.cpp -o obj/fex.o g++ -O3 -I. -fomit-frame-pointer -c fex/File_Extractor.cpp -o obj/File_Extractor .o g++ -O3 -I. -fomit-frame-pointer -c fex/Gzip_Extractor.cpp -o obj/Gzip_Extractor .o g++ -O3 -I. -fomit-frame-pointer -c fex/Gzip_Reader.cpp -o obj/Gzip_Reader.o g++ -O3 -I. -fomit-frame-pointer -c fex/Rar_Extractor.cpp -o obj/Rar_Extractor.o
g++ -O3 -I. -fomit-frame-pointer -c fex/Zip7_Extractor.cpp -o obj/Zip7_Extractor .o g++ -O3 -I. -fomit-frame-pointer -c fex/Zip_Extractor.cpp -o obj/Zip_Extractor.o
g++ -O3 -I. -fomit-frame-pointer -c fex/Zlib_Inflater.cpp -o obj/Zlib_Inflater.o
gcc -O3 -I. -fomit-frame-pointer -c zlib/adler32.c -o obj/adler32.o gcc -O3 -I. -fomit-frame-pointer -c zlib/crc32.c -o obj/crc32.o gcc -O3 -I. -fomit-frame-pointer -c zlib/inffast.c -o obj/inffast.o gcc -O3 -I. -fomit-frame-pointer -c zlib/inflate.c -o obj/inflate.o gcc -O3 -I. -fomit-frame-pointer -c zlib/inftrees.c -o obj/inftrees.o gcc -O3 -I. -fomit-frame-pointer -c zlib/zutil.c -o obj/zutil.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zAlloc.c -o obj/7zAlloc.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zBuf.c -o obj/7zBuf.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zCrc.c -o obj/7zCrc.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zDecode.c -o obj/7zDecode.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zExtract.c -o obj/7zExtract.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zHeader.c -o obj/7zHeader.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zIn.c -o obj/7zIn.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zItem.c -o obj/7zItem.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/7zStream.c -o obj/7zStream.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/Bcj2.c -o obj/Bcj2.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/Bra86.c -o obj/Bra86.o gcc -O3 -I. -fomit-frame-pointer -c 7z_C/LzmaDec.c -o obj/LzmaDec.o g++ -O3 -I. -fomit-frame-pointer -c unrar/archive.cpp -o obj/archive.o g++ -O3 -I. -fomit-frame-pointer -c unrar/arcread.cpp -o obj/arcread.o g++ -O3 -I. -fomit-frame-pointer -c unrar/coder.cpp -o obj/coder.o g++ -O3 -I. -fomit-frame-pointer -c unrar/crc.cpp -o obj/crc.o g++ -O3 -I. -fomit-frame-pointer -c unrar/encname.cpp -o obj/encname.o g++ -O3 -I. -fomit-frame-pointer -c unrar/extract.cpp -o obj/extract.o g++ -O3 -I. -fomit-frame-pointer -c unrar/getbits.cpp -o obj/getbits.o g++ -O3 -I. -fomit-frame-pointer -c unrar/model.cpp -o obj/model.o g++ -O3 -I. -fomit-frame-pointer -c unrar/rarvm.cpp -o obj/rarvm.o g++ -O3 -I. -fomit-frame-pointer -c unrar/rarvmtbl.cpp -o obj/rarvmtbl.o g++ -O3 -I. -fomit-frame-pointer -c unrar/rawread.cpp -o obj/rawread.o g++ -O3 -I. -fomit-frame-pointer -c unrar/suballoc.cpp -o obj/suballoc.o g++ -O3 -I. -fomit-frame-pointer -c unrar/unicode.cpp -o obj/unicode.o g++ -O3 -I. -fomit-frame-pointer -c unrar/unpack.cpp -o obj/unpack.o g++ -O3 -I. -fomit-frame-pointer -c unrar/unpack15.cpp -o obj/unpack15.o g++ -O3 -I. -fomit-frame-pointer -c unrar/unpack20.cpp -o obj/unpack20.o g++ -O3 -I. -fomit-frame-pointer -c unrar/unrar.cpp -o obj/unrar.o g++ -O3 -I. -fomit-frame-pointer -c unrar/unrar_misc.cpp -o obj/unrar_misc.o g++ -O3 -I. -fomit-frame-pointer -c unrar/unrar_open.cpp -o obj/unrar_open.o gcc -O3 -I. -fomit-frame-pointer -c micro-bunzip/micro-bunzip.c -o obj/micro-bun zip.o g++ -O3 -I. -fomit-frame-pointer -c libjma/jma.cpp -o obj/jma.o g++ -O3 -I. -fomit-frame-pointer -c libjma/jcrc32.cpp -o obj/jcrc32.o g++ -O3 -I. -fomit-frame-pointer -c libjma/lzmadecode.cpp -o obj/lzmadecode.o g++ -O3 -I. -fomit-frame-pointer -c libjma/7zlzma.cpp -o obj/7zlzma.o g++ -O3 -I. -fomit-frame-pointer -c libjma/iiostrm.cpp -o obj/iiostrm.o g++ -O3 -I. -fomit-frame-pointer -c libjma/inbyte.cpp -o obj/inbyte.o g++ -O3 -I. -fomit-frame-pointer -c libjma/lzma.cpp -o obj/lzma.o g++ -O3 -I. -fomit-frame-pointer -c libjma/winout.cpp -o obj/winout.o g++ -s -o snesreader.dll -shared -Wl,--out-implib,libsnesreader.a obj/snesreader .o obj/Binary_Extractor.o obj/blargg_common.o obj/blargg_errors.o obj/Data_Reade r.o obj/fex.o obj/File_Extractor.o obj/Gzip_Extractor.o obj/Gzip_Reader.o obj/Ra r_Extractor.o obj/Zip7_Extractor.o obj/Zip_Extractor.o obj/Zlib_Inflater.o obj/a dler32.o obj/crc32.o obj/inffast.o obj/inflate.o obj/inftrees.o obj/zutil.o obj/ 7zAlloc.o obj/7zBuf.o obj/7zCrc.o obj/7zDecode.o obj/7zExtract.o obj/7zHeader.o obj/7zIn.o obj/7zItem.o obj/7zStream.o obj/Bcj2.o obj/Bra86.o obj/LzmaDec.o obj/ archive.o obj/arcread.o obj/coder.o obj/crc.o obj/encname.o obj/extract.o obj/ge tbits.o obj/model.o obj/rarvm.o obj/rarvmtbl.o obj/rawread.o obj/suballoc.o obj/ unicode.o obj/unpack.o obj/unpack15.o obj/unpack20.o obj/unrar.o obj/unrar_misc. o obj/unrar_open.o obj/micro-bunzip.o obj/jma.o obj/jcrc32.o obj/lzmadecode.o ob j/7zlzma.o obj/iiostrm.o obj/inbyte.o obj/lzma.o obj/winout.o -Lc:/qt/4.5.3/lib -Lc:/qt/4.5.3/plugins/imageformats -lmingw32 -lqtmain -lQtGui4 -lcomdlg32 -lolea ut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore4 -lole32 -ladvapi32 -lws2_32 -luuid -lgdi32 Info: resolving QDialog::staticMetaObject by linking to __imp___ZN7QDialog 16staticMetaObjectE (auto-import) Creating library file: libsnesreader.a c:/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: warning: a uto-importing has been activated without --enable-auto-import specified on the c ommand line. This should work unless it involves constant data structures referencing symbols from auto-imported DLLs. Press any key to continue . . . What the problem is that bsnes.exe won't read these. Both seem disabled or not made right. Is this what your talking about byuu? bsnes made just fine.
_________________ Window 7 Home Premium 32-bit / Intel Core 2 Quad Q6600 2.40Ghz / 3.00 GB RAM / ATI Radeon HD 4670 1GB Memories bsnes compilation guide for Windows by Ver Greeneyes - viewtopic.php?f=3&t=74
|
| 2009-10-19 at 04:12 AM |
|
 |
|
byuu
Joined: 2009-04-10 at 03:00 PM Posts: 1810
|
 Re: bsnes v0.053 released
kode54 wrote: The process terminates cleanly with the latest Qt SDK, 2009.04, which claims to be 4.5.3. The self-termination hack has been removed as it is no longer necessary. It does the exact same thing with Qt 4.5.3, the process hangs forever upon close. Here's my build profile: Code: mkspecs/win32-g++/qmake.conf: QMAKE_CFLAGS_RELEASE = -Os -fomit-frame-pointer
configure -release -opensource -shared -no-exceptions -no-accessibility -no-stl -no-qt3support -no-rtti -no-openssl -no-dbus -no-phonon -no-phonon-backend -no-webkit -no-scripttools -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde make -j 2 sub-src Tried again with just: Code: configure -release -opensource -shared -no-webkit No custom build flags, nothing. It doesn't work. If you're using the official SDK's GCC 3 version, you may as well be using GCC 4 without the profiling. GCC 3 produces much, much slower code.
_________________ Elements of the past and the future, combining to make something not quite as good as either.
|
| 2009-10-19 at 05:17 AM |
|
 |
|
kode54
Joined: 2009-04-10 at 08:54 PM Posts: 256
|
 Re: bsnes v0.053 released
I'm using the Qt binaries that came with the installer, but using GCC 4 to compile bsnes. Heh, I must be out of it, I was wondering why the GCC they bundled couldn't even compile bsnes.
I tried compiling Qt itself with my copy of GCC, and it failed with some obscure error trying to build the WebKit library, so I gave up on that. The resulting QtCore and QtGui were smaller, but I didn't test if they worked or not. Hmm...
|
| 2009-10-19 at 06:22 AM |
|
 |
|
byuu
Joined: 2009-04-10 at 03:00 PM Posts: 1810
|
 Re: bsnes v0.053 released
I found an interesting workaround.
Installed Qt 4.6.0-beta1. It works, but there's a strange invalid memory access issue when closing the program if you navigate to a large folder like c:\windows\system32 and then close the program. The TerminateProcess() trick works around that.
So the solution, oh boy ...
MinGW-GCC 4.3.3 + Qt 4.6.0-beta1 Check argv[0], if it contains "bsnes-profile", then exit normally. Use this to perform instrumentation. If it doesn't contain that string, then use TerminateProcess() to make sure there's never any error box upon close.
Too bad we can't force GCC 4.4 to output gcno files, that release runs at 160fps prior to profiling, versus 150fps with 4.3.3 and no profiling, or 178fps with profiling. So 4.4 with profiling should give us ~190fps. Throw in 64-bit and we could break 200fps easy.
_________________ Elements of the past and the future, combining to make something not quite as good as either.
|
| 2009-10-19 at 06:43 AM |
|
 |
|
Dullaron
Joined: 2009-04-10 at 06:40 PM Posts: 91
|
 Re: bsnes v0.053 released
Thanks byuu. I finally got it to make with the QT 4.6.0-beta1.  I did what you post below my post.
_________________ Window 7 Home Premium 32-bit / Intel Core 2 Quad Q6600 2.40Ghz / 3.00 GB RAM / ATI Radeon HD 4670 1GB Memories bsnes compilation guide for Windows by Ver Greeneyes - viewtopic.php?f=3&t=74
|
| 2009-10-19 at 08:06 AM |
|
 |
|
kode54
Joined: 2009-04-10 at 08:54 PM Posts: 256
|
 Re: bsnes v0.053 released
Too bad this is all mingw only, because gdb absolutely sucks ass. Or at least, all I know how to do with it is open the executable, run it, and dump a backtrace when it crashes. I prefer something that can step through code by source lines, and also stop on breakpoints by source line, and maybe also display source where crash occurred. I bet a nice gdb frontend would do all that, too, so I was probably wrong in saying that gdb sucks ass.
Then it would be possible to debug the exact cause of the crash and fix it, and maybe even submit a patch to Nokia.
Does it even happen when you link against the debug version of Qt?
|
| 2009-10-19 at 08:25 AM |
|
|