don't click here

Gens/GS Milestone 6

Discussion in 'Engineering & Reverse Engineering' started by GerbilSoft, Aug 24, 2008.

  1. roxahris

    roxahris

    Everyone's a hypocrite. Take my word for it. Member
    1,224
    0
    0
    Doing anything at all
    Bug report from someone on IRC.
    Code (Text):
    1. <Zombie> In Full screen, Control+Q Will not exit.
    2. <djohe> for what OS?
    3. <Zombie> Linux.
    4. <Zombie> In Windowed mode it works.
    5. <Zombie> A reccommendation
    6. <Zombie> Slightly unrelated.
    7. <Zombie> Make the Exit key mappable, or escape.
    8. <Zombie> I launch Gens from a WahCade cabinet.
    9. <roxahrus> What distro?
    10. <Zombie> Mandriva 2008.1
    11. <Zombie> I have maintainer rank
    (Irrelevant parts snipped)
     
  2. not possible

    Fusion is not open source =P
     
  3. muteKi

    muteKi

    Fuck it Member
    7,852
    131
    43
    Was it just the one guy, though? (I mean, any project with enough publicity will attract crazies to it.)
     
  4. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,971
    76
    28
    USA
    rom-properties
    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.)
     
  5. Black Squirrel

    Black Squirrel

    no reverse gear Wiki Sysop
    8,659
    2,536
    93
    Northumberland, UK
    steamboat wiki
    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.
     
  6. Armada

    Armada

    Sometimes I do things Member
    338
    0
    0
    If I recall correctly, that happens. I haven't broken out my hardware in a good while, though.
     
  7. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,971
    76
    28
    USA
    rom-properties
    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.
     
  8. AamirM

    AamirM

    Tech Member
    Hi,

    Nice. Keep up the good work.

    stay safe,

    AamirM
     
  9. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,971
    76
    28
    USA
    rom-properties
    Random screenshot taken on Saturday while implementing hq2x:

    [​IMG]

    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. :thumbsup: )
     
  10. Axel Letterman

    Axel Letterman

    The Saiyan Hedgehog Member
    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.
     
  11. Ollie

    Ollie

    DIGGY DIGGY HOLE Member
    Wait.. But isn't that stealing?
     
  12. Overlord

    Overlord

    Now playable in Smash Bros Ultimate Moderator
    19,250
    980
    93
    Long-term happiness
    If it's OSS, then no, so long as it's properly attributed.
     
  13. Axel Letterman

    Axel Letterman

    The Saiyan Hedgehog Member
    Actually, no it's not.

    Because VBA-M's licence is GNU General Public License (GPL) according to it's Sourceforge page.
     
  14. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,971
    76
    28
    USA
    rom-properties
    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.)
     
  15. Axel Letterman

    Axel Letterman

    The Saiyan Hedgehog Member
    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.
     
  16. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,971
    76
    28
    USA
    rom-properties
    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.
     
  17. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,971
    76
    28
    USA
    rom-properties
    Milestone 6 version bump. See the first post for more information.
     
  18. Sappharad

    Sappharad

    Oldbie
    1,415
    70
    28
    Here's a new one for you:
    Code (Text):
    1. util/file/config_file.cpp:407:   instantiated from here
    2. /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> >&)’
    3. 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?
     
  19. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,971
    76
    28
    USA
    rom-properties
    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):
    1. commit dcf084300e7ab077c463ca25bfc9b8d553ab969e
    2. Author: David Korth <[email protected]>
    3. Date:   Tue Dec 9 21:25:14 2008 -0500
    4.  
    5.     macros/hashtable.hpp: Fixed a bug with __gnu_cxx::hash_map<string, int>.
    6.  
    7.     This bug was reported by sonicblur on the Sonic Retro forums:
    8.     http://forums.sonicretro.org/index.php?showtopic=11813&view=findpost&p=254683
    9.  
    10.     The fix for this bug was found on the gcc mailing list:
    11.     http://gcc.gnu.org/ml/libstdc++/2002-04/msg00107.html
    12.  
    13. diff —git a/src/gens/macros/hashtable.hpp b/src/gens/macros/hashtable.hpp
    14. index 9f2c681..61eb07c 100644
    15. --- a/src/gens/macros/hashtable.hpp
    16. +++ b/src/gens/macros/hashtable.hpp
    17. @@ -41,6 +41,21 @@
    18.  #include <ext/hash_map>
    19.  #define GENS_HASHTABLE __gnu_cxx::hash_map
    20.  
    21. +// Fix a bug with hash_map<string, int>
    22. +// See http://gcc.gnu.org/ml/libstdc++/2002-04/msg00107.html
    23. +
    24. +#include <string>
    25. +namespace __gnu_cxx
    26. +{
    27. +      template<> struct hash<std::string>
    28. +      {
    29. +              size_t operator() (const std::string& x) const
    30. +              {
    31. +                      return hash<const char*>()(x.c_str());
    32. +              }
    33. +      };
    34. +}
    35. +
    36.  #elif defined(GENS_HASHTABLE_STD_MAP)
    37.  
    38.  // Standard std::map
     
  20. Dr. Kylstein

    Dr. Kylstein

    Member
    86
    0
    6
    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.