Bug report from someone on IRC. Code (Text): <Zombie> In Full screen, Control+Q Will not exit. <djohe> for what OS? <Zombie> Linux. <Zombie> In Windowed mode it works. <Zombie> A reccommendation <Zombie> Slightly unrelated. <Zombie> Make the Exit key mappable, or escape. <Zombie> I launch Gens from a WahCade cabinet. <roxahrus> What distro? <Zombie> Mandriva 2008.1 <Zombie> I have maintainer rank (Irrelevant parts snipped)
Was it just the one guy, though? (I mean, any project with enough publicity will attract crazies to it.)
Yeah, it was just the one moron. I was expecting someone to say something stupid like that eventually :P roxahris: I'll take a look at that later today. I believe "Escape" does map to Exit if Gens is started with the —quickexit parameter, though. (In which case, if you want to pause the game, you can press Pause, which also works if —quickexit isn't specified.)
Just out of interest, the spinning-intro part of a Knuckles Chaotix level (I.e. the part where you and your partner spin around horizontally before the level beings) - in both Gens and Kega Fusion the characters seem to just jump to their starting positions after the title card has loaded, and I've always wondered - is this an emulation bug that can be fixed? It always struck me as odd that the transition wasn't smooth. Though I don't have a working 32X or Knuckles Chaotix so I don't know if this happens on real hardware.
Quick status report for Gens/GS m6: - The initial implementation of the plugin system works well. So far, it only supports rendering plugins, but this will be expanded later on. Also, all plugins are built into the executable right now, but later I will add support for external plugins. - Renderers ported over to the new plugin system so far: Normal, Double, Scanline, 50% Scanline, 25% Scanline, Scale2x, Scale3x, and Scale4x. (Scale3x and Scale4x are new.) I've noticed a slight performance issue with Scale3x and Scale4x. Specifically, if using OpenGL mode in 32-bit color, it slows down. OpenGL in 16-bit, SDL in 16-bit, and SDL in 32-bit don't have this problem, so I'm assuming it's a bug in the GL driver. (Mesa R500 DRI) I plan on reimplementing all the original Gens renderers plus hq2x, hq3x, and hq4x for the m6 release. EDIT 1: The Normal and Double renderers now have SSE2-optimized versions. EDIT 2: I removed the SSE2-optimized versions. I did a few benchmarks and it turns out that the SSE2-optimized versions are *slower* than the MMX-optimized versions. EDIT 3: I added hq2x (16-bit). I also revamped the rest of the code to allow separate color depths for the MD surface and the output surface, since hq2x requires a 16-bit source image. Also, I believe I found the problem with hq2x on Win32, so I'll attempt to fix that.
Random screenshot taken on Saturday while implementing hq2x: I did manage to fix it, though. hq2x, hq3x, and hq4x are all implemented now. I only have three more renderers to port over to MDP: Interpolated Scanline, Interpolated 50% Scanline, and Interpolated 25% Scanline. Then just some cleaning up of the code, a few more bugfixes, and Gens/GS m6 will be out. (Unfortunately, it won't be ready for tomorrow, which is the 16-year anniversary of the release of Sonic 2. )
It's true that Kega Fusion is closed source and that Steve Snake ain't updating much these days, his rpi plugin though still lives on. While I was checking out the VBA-M source code, I discovered the rpi plugin code in /trunk/win32/selectplugin.cpp and it's .h file. http://vba-m.ngemu.com/vbam/vbasources/vbamSRC245.rar I mean, it wouldn't hurt to put it in Gens/GS.
Actually, no it's not. Because VBA-M's licence is GNU General Public License (GPL) according to it's Sourceforge page.
I'm not implementing support for "RPI" render plugins for two reasons: 1. It's only for renderers. The Gens/GS plugin system will support more than just renderers. I'm planning on adding stuff like netplay, movie playback/recording, debugging, etc. via the plugin system. 2. It's Windows only. Gens/GS plugins will be OS-specific for the compiled binary, but the interface will be mostly the same for different platforms, so all that's needed is a recompile. (The exception may be UIs, but I might add a relatively simple cross-platform UI language to solve this problem.)
Well, that's understandable. If you don't want to add it in that's ok, I respect your choice. Anyway, I hope you get the 32x compatibility for most of the 32x games working, but that'll be the last thing to do on the list.
If you'd like to port an open-source rendering plugin to MDP, it's fairly simple. I'm going to include a fairly comprehensive MDP document with the m6 release. (Alternatively, you could recommend a rendering plugin for me to port, and I"ll include it in an upcoming release.) Note that m6 will have internal plugins only. I plan on adding external plugins in m6.1. With regards to improving 32X compatibility: It'll happen, eventually.
Here's a new one for you: Code (Text): util/file/config_file.cpp:407: instantiated from here /usr/include/c++/4.0.0/ext/hashtable.h:596: error: no match for call to ‘(const __gnu_cxx::hash<std::string>) (const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’ make[3]: *** [util/file/gens-config_file.o] Error 1 A search for this error turned up this post from 2002: http://gcc.gnu.org/ml/libstdc++/2002-04/msg00107.html How would you suggest approaching this one? Implement the suggested work-around, or find a way to fix the underlying problem?
Probably the best thing to do there is to put that fix in src/gens/macros/hashtable.hpp in the GNU hash_map section after #include <ext/hash_map>. I'll try it out and post a patch if I'm successful. EDIT: Here's a patch: Code (Text): commit dcf084300e7ab077c463ca25bfc9b8d553ab969e Author: David Korth <[email protected]> Date: Tue Dec 9 21:25:14 2008 -0500 macros/hashtable.hpp: Fixed a bug with __gnu_cxx::hash_map<string, int>. This bug was reported by sonicblur on the Sonic Retro forums: http://forums.sonicretro.org/index.php?showtopic=11813&view=findpost&p=254683 The fix for this bug was found on the gcc mailing list: http://gcc.gnu.org/ml/libstdc++/2002-04/msg00107.html diff —git a/src/gens/macros/hashtable.hpp b/src/gens/macros/hashtable.hpp index 9f2c681..61eb07c 100644 --- a/src/gens/macros/hashtable.hpp +++ b/src/gens/macros/hashtable.hpp @@ -41,6 +41,21 @@ #include <ext/hash_map> #define GENS_HASHTABLE __gnu_cxx::hash_map +// Fix a bug with hash_map<string, int> +// See http://gcc.gnu.org/ml/libstdc++/2002-04/msg00107.html + +#include <string> +namespace __gnu_cxx +{ + template<> struct hash<std::string> + { + size_t operator() (const std::string& x) const + { + return hash<const char*>()(x.c_str()); + } + }; +} + #elif defined(GENS_HASHTABLE_STD_MAP) // Standard std::map
This is probably more of a Linux problem, but: When I try to run it I am told that there is no such file as /usr/bin/gens when there in fact is such a file. I have checked the permissions, tried sudo, tried running from that directory, tried launching it in both Nautilus and bash, all with no effect. I am using Ubuntu 8.10 amd64.