old>GerbilSoft |
|
(84 intermediate revisions by 14 users not shown) |
Line 1: |
Line 1: |
− | [[Image:GensGS.png|right]]
| + | {{EmuBob |
− | '''Gens/GS''' is a version of Gens maintained by [[GerbilSoft]]. The main goal of Gens/GS is to clean up the source code and combine features from various forks of Gens. | + | | bobscreen=GensGS.png |
| + | | system=[[Sega Mega Drive]], [[Mega-CD]], [[32X]] |
| + | | os=Windows, Linux |
| + | | developer=Stéphane Dallongeville (Gens); David "GerbilSoft" Korth |
| + | | language=Assembly, C++ |
| + | | date=2009-11-22{{ref|http://www.dusers.drexel.edu/gitweb/gitweb.cgi/~korth/gens.git/commit/909e81d9a85fa378faba42d3a6bd121fdfe7c5e3}} |
| + | | version=r7 |
| + | }} |
| + | '''Gens/GS''' is a [[Sega Mega Drive]] emulator derived from [[Gens]] and maintained by [[GerbilSoft]]. It is based upon the Gens version 2.15.2 Linux source code. Project goals include clean source code, combined features from various forks of Gens, and improved platform portability. |
| | | |
− | ==Release 7, Preview 2==
| + | Development of the emulator was continued in [[Gens/GS II]]. |
| | | |
− | Release 7 introduces the following new features:
| + | ==Features== |
| + | Gens/GS has a number of bug fixes and low-level code changes, as well as the following updates: |
| + | * Accurate colour scaling so that white has the RGB value $FFFFFF. Older emulators usually displayed white as $E0E0E0. |
| + | * VDP options for disabling layers and locking palettes. |
| + | * ''Sonic'' game memory value viewer ported from [[sGens]]. |
| + | * Renderers ported from [[Gens Re-Recording]] and [[Gens Plus!]]. |
| | | |
− | * Mega Drive Plugins v1.0.0. This major update to the plugins system adds support for external plugins (.dll on Windows, .so on Linux), as well as support for more than just rendering plugins.
| + | ==Other versions== |
− | * doc/mdp/ contains the MDP Interface Specifiction Version 1.0.0. This document is licensed under the GNU Free Documentation License v1.3.
| + | [[Gens/GS II]] is a partial rewrite of Gens/GS written by GerbilSoft. Gens/GS II improves the basic framework of the emulator, which will allow for the addition of many new features. |
− | * A new manual for Gens/GS has been created. It is available in doc/manual/.
| |
− | * The Game Genie functionality has been moved to an MDP plugin. It now supports 8-bit, 16-bit, and 32-bit patch codes, and uses a new patch code file format. Old patch code files are supported for loading; however, they will be written in the new format when saved. Later versions will add support for patching CPU address spaces other than the main MC68000.
| |
− | * New MDP Plugin: VDP Layer Options. This lets you adjust the visible layers on screen, so e.g. you can hide sprites, swap scroll priorities, and lock the palette to prevent color changes.
| |
− | * New MDP Plugin: Sonic Gens. This lets you view various information in memory in several Sonic games. Sonic Gens was originally written by LOst as a standalone version of Gens.
| |
− | * New renderers:
| |
− | ** EPX (ported from Gens Rerecording)
| |
− | ** EPX Plus (ported from Gens Rerecording)
| |
− | ** Super 2xSaI (ported from Gens Plus)
| |
− | ** Super Eagle (ported from Gens Plus)
| |
− | ** Blargg's NTSC filter for MD
| |
− | * [Win32] Ported the GDI video backend from Gens Plus. It still has a few bugs, but it mostly works.
| |
− | * Extended controller configuration format. The new configuration format allows for up to 128 axes, 256 buttons, and 64 POV hats, whereas the old configuration format only allowed for 6 axes [5 axes on Win32], 112 buttons, and 4 POV hats. This mainly affects the Linux version, since Linux usually reports all axes as axes instead of mapping some axes to POV hats, and some newer controllers (e.g. the Xbox 360 controller) have more than 6 axes. Older configurations are automatically updated to use the new controller configuration format.
| |
− | * The reverse-engineered 32X firmware, written by DevSter, is now included in Gens/GS. If you do not have the original Sega 32X firmware files, the reverse-engineered ones are used instead.
| |
− | * Added SH2 DMA support for PWM audio. Thanks to Joseph Fenton for submitting a patch.
| |
− | * [Win32] Joysticks connected after loading Gens/GS will now be detected in the Controller Configuration dialog.
| |
− | * WAV dumping has been reimplemented.
| |
− | * ROM History now caches the ROM type (MD/MCD/32X), so it doesn't have to check the ROM type every time the ROM History menu is rebuilt. This improves performance significantly if some ROM images were loaded from network shares.
| |
− | * ROM History now keeps track of compressed files inside of multi-file archives. For example, if you have a 7z archive containing several different versions of a game, selecting version 1 will result in a ROM History entry for that specific version, and selecting version 2 will result in another ROM History entry.
| |
− | * Added initial support for the "Palette Select" bit in VDP register 0. If the "Palette Select" bit is cleared, only the LSBs of each color component in CRAM is used to determine the colors to display, resulting in a maximum of 8 colors onscreen. This isn't very useful, but is more accurate.
| |
− | * SRAM can now be disabled in the Options menu. This fixes Puggsy, which checks for the existance of SRAM and prevents the user from advancing past a certain point if it exists. (Puggsy uses a password system, not SRAM.)
| |
− | * Improved PWM scaling algorithm, provided by Chilly Willy on the Sonic Retro forums.
| |
− | * A new command line option, "--boot-cd", can be specified to tell Gens/GS to boot from an actual SegaCD CD-ROM on startup.
| |
− | * [Unix] Improved VSync support with the OpenGL backend. Both the MESA and SGI swap control methods are now supported.
| |
− | * The video subsystem now supports fallbacks. For example, on the Linux version, if SDL+OpenGL is selected but OpenGL isn't available, it will simply revert back to SDL instead of crashing. As an added bonus, this allows for Gens/GS to start up properly on Windows NT 4.0, since the default backend on Win32 is DirectDraw 4, but NT4 doesn't support it. Instead of crashing, it will fall back to the GDI backend.
| |
− | * Gens/GS no longer changes non-alphanumeric characters in SegaCD game names to spaces. This may cause some games to have different names, which will prevent their BRAM files from being loaded properly. If you have any of these games, you will need to rename the BRAM files in order to get them to load correctly.
| |
− | * [Unix] If a game has a Shift-JIS encoded title in the Japanese title field and the country code is set to Japan, the title will be converted to the system's native locale, e.g. UTF-8. (Win32 support for this feature will be added once Gens/GS fully supports Windows' Unicode implementation.)
| |
| | | |
− | Release 7 fixes the following bugs:
| + | A parody version of the emulator, [[Gens/GS S2HD Edition]], was released to mock the high overhead and bad effects of modern-day emulation compilations and poor-quality "HD" remakes. |
| | | |
− | * Dragging and dropping a ROM image onto the Gens/GS window will now synchronize the menus. This bug was reported by Tets on the Sonic Retro forums.
| + | ==Downloads== |
− | * Loading a GSX savestate file that is not in GSX format will now show an error instead of crashing. Apparently, Gens Plus GZips its savestate files when saving by default. This bug was reported by SoNick in #retro.
| + | {{Multidownload |
− | * [GTK+] Copied g_uri_unescape_string() (and dependent functions) from GLib 2.18.4 into Gens/GS. This function was introduced in GLib 2.16, but Gens/GS should be compatible with versions of GLib 2.4 and later.
| + | | file1=Gens-gs-r7.tar.gz |
− | * Two VDP DMA bugs have been fixed:
| + | | filename1=Gens/GS Release 7 (Source Code) |
− | ** Zero-length DMA operations are now handled as 65,536-word operations. This may break some poorly-written hacks.
| + | | file2=Gens_2.16.7_i386.deb |
− | ** DMA operations now wrap on a 128k boundary. This bug was reported by TmEE.
| + | | filename2=Gens/GS Release 7 (Ubuntu 8.04+, i386) |
− | * The VDP H_Int register is now initialized to 0xFF. This fixes Sik's test ROM that produced "rain" on Gens, but not on Regen or the actual hardware.
| + | | file3=Gens-gs-r7-win32-pkg1.7z |
| + | | filename3=Gens/GS Release 7 (Win32, i386; Packaging Update 1) |
| + | | file4=Gens-gs-r7-i486-4_SBo.tgz |
| + | | filename4=Gens/GS Release 7 (Slackware 13.0, i486) |
| + | | file5=Gens_2.16.8-r7orig_amd64.deb |
| + | | filename5=Gens/GS Release 7 (Ubuntu 18.04) |
| + | }} |
| | | |
− | Release 7 has the following low-level code changes:
| + | ===Ubuntu 18.04 Install Instructions=== |
| + | These packages are 32 bit, but modern Ubuntu is 64-bit. You can setup i386 architecture and install pretty easily, however: |
| | | |
− | * The video, audio, and input subsystems have been ported back to C. The C++ system was too awkward and had too much overhead.
| + | $ sudo dpkg --add-architecture i386 |
− | * Similarly, the decompression subsystem has been ported back to C. In addition, the LZMA SDK is now built into Gens/GS, so 7z archives can be read without an external 7z binary.
| + | $ sudo apt-get update |
− | * Initial port of the Z80 emulator to C. The Z80 emulator has been moved out of the src/gens directory and into its own directory, src/mdZ80. Currently, the only functions that have been ported to C are the helper functions. The actual emulation code is currently being worked on in the mdZ80 branch in the Gens/GS git repository.
| + | $ sudo apt-get install <this package>.deb |
− | * Many assembly-language files have been converted from Intel-style (nasm) assembly to AT&T-style (GNU `as`) assembly.
| |
− | * Many assembler functions have been ported to C/C++, including the UPDATE_PALETTE macros and Reset_VDP() (now VDP_Reset()).
| |
− | * Multitap support has been ported from x86 assembler to C. In the process, both Sega Teamplayer and 4-Way Play support have been improved. Notably, Teamplayer now works on "NBA Jam" and "NBA Jam TE", and 4-Way Play now works (sometimes) on "Triple Play '96". A complete list of tested multitap games can be found in doc/teamplayer.txt .
| |
− | * yasm is now supported as an alternative to nasm. To use yasm, add the option <tt>--with-nasm=yasm</tt> when using the <tt>./configure</tt> script.
| |
− | * Precompiled binaries are now compiled for i686 or higher. If you want to run Gens/GS on an original Intel Pentium or older, you will have to compile your own Gens/GS binary.
| |
| | | |
− | For information about previous releases, see the ChangeLog.txt file included with Gens/GS r7_pre2.
| + | ===Old versions=== |
− | | + | * {{file|GensGS old versions.7z|Versions r7 pre1, r7 pre2, r7 pre3, r7 pre4, r7 pre5 (Windows, Linux and source code).}} |
− | ==VDP Layer Options== | + | ** Version m6 is missing. |
− | | |
− | Milestone 6 adds a new feature that allows modifying VDP layer options; however, there is currently no GUI for this feature. (A GUI will be included as a plugin in r7.) If you're using Linux and have gdb installed, you can modify the VDP layer options manually. (This requires a non-stripped Gens/GS build; you may have to compile Gens/GS from source.)
| |
− | | |
− | To start Gens/GS in gdb, open a terminal and run the following command:
| |
− | <pre>gdb gens</pre>
| |
− | | |
− | gdb will load. To start the program, type "run" and press enter. Gens/GS will start.
| |
− | | |
− | To change the layer settings, go back to the terminal and press Ctrl-C. gdb will show the following:
| |
− | <pre>
| |
− | Program received signal SIGINT. Interrupt.
| |
− | 0x[numbers] in [function] ()
| |
− | (gdb)
| |
− | </pre>
| |
− | Ignore the [numbers] and [function] part. Type the following command:
| |
− | <pre>print /x VDP_Layers</pre>
| |
− | gdb should output 0xdb, which is the default VDP layers value.
| |
− | | |
− | This value is a bitfield. To set a new value, you will need to add flag values from the table below. Make sure to add the values for the flags that you want enabled, and ignore the values for the flags that you want disabled.
| |
− | <pre>
| |
− | VDP_LAYER_SCROLLA_LOW = 0x00000001
| |
− | VDP_LAYER_SCROLLA_HIGH = 0x00000002
| |
− | VDP_LAYER_SCROLLA_SWAP = 0x00000004
| |
− | VDP_LAYER_SCROLLB_LOW = 0x00000008
| |
− | VDP_LAYER_SCROLLB_HIGH = 0x00000010
| |
− | VDP_LAYER_SCROLLB_SWAP = 0x00000020
| |
− | VDP_LAYER_SPRITE_LOW = 0x00000040
| |
− | VDP_LAYER_SPRITE_HIGH = 0x00000080
| |
− | VDP_LAYER_SPRITE_SWAP = 0x00000100
| |
− | VDP_LAYER_SPRITE_ALWAYSONTOP = 0x00000200
| |
− | VDP_LAYER_PALETTE_LOCK = 0x00000400
| |
− | </pre>
| |
− | | |
− | The default value, 0xdb, corresponds to ScrollA Low, ScrollA High, ScrollB Low, ScrollB High, Sprite Low, and Sprite High.
| |
− | | |
− | Once you've come up with your new value, type the following commands into gdb:
| |
− | <pre>
| |
− | set VDP_Layers=0xdb
| |
− | continue
| |
− | </pre>
| |
− | Replace 0xdb with your new VDP layer options value.
| |
− | | |
− | ==Download==
| |
− | | |
− | ==Stable Release==
| |
− | {{Multidownload|file1=Gens-2.15.5-gs-m6.tar.gz|filename1=Gens/GS Milestone 6 (Source Code)|filesize1=1.45 MB|file2=Gens_2.15.5-gs-m6-1_i386.deb|filename2=Gens/GS Milestone 6 (Ubuntu 8.04+, 32-bit)|filesize2=622 KB|file3=Gens-2.15.5-gs-m6-win32.zip|filename3=Gens/GS Milestone 6 (Win32)|filesize3=855 KB}} | |
− | | |
− | ==Preview Release==
| |
− | {{Multidownload|file1=Gens-gs-r7_pre2.tar.gz|filename1=Gens/GS Release 7, Preview 2 (Source Code)|filesize1=2.04 MB|file2=Gens_2.15.5-gs-r7-pre2_i386.deb|filename2=Gens/GS Release 7, Preview 2 (Ubuntu 8.04+, i386)|filesize2=800 KB|file3=Gens-gs-r7_pre2-win32.zip|filename3=Gens/GS Release 7, Preview 2 (Win32, i386)|filesize3=1.33 MB}}
| |
| | | |
| + | ==External links== |
| ===Git Repository=== | | ===Git Repository=== |
− | The Gens/GS git repository is available at http://gs_server.gerbilsoft.ddns.info/cgi-bin/gitweb.cgi?p=gens.git;a=summary .
| + | * [http://www.dusers.drexel.edu/gitweb/gitweb.cgi?p=~korth/gens.git;a=summary Gens/GS Git Repository] |
| + | * [http://www.dusers.drexel.edu/gitweb/gitweb.cgi?p=~korth/gens-gs-ii.git;a=summary Gens/GS II Git Repository] |
| | | |
− | ===Prior Versions===
| + | ===Forum threads=== |
− | * {{file|Gens-2.15.5-gs-m5.3.tar.gz|Gens/GS Milestone 5.3 (Source Code)}} (1.35 MB, released 2008/11/16)
| |
− | * {{file|Gens_2.15.5-gs-m5.3-1_i386.deb|Gens/GS Milestone 5.3 (Ubuntu 8.04+, 32-bit)}} (582 KB, released 2008/11/17)
| |
− | * {{file|Gens-2.15.5-gs-m5.3-win32.zip|Gens/GS Milestone 5.3 (Win32)}} (756 KB, released 2008/11/16)
| |
− | * {{file|Gens-2.15.5_gs_m5.3-2.i386.rpm|Gens/GS Milestone 5.3 (RPM, 32-bit)}} (586 KB, released 2008/11/20)
| |
− | * {{file|Gens-2.15.5-gs-m5.3.tgz|Gens/GS Milestone 5.3 (Slackware, 32-bit)}} (583 KB, released 2008/11/20)
| |
− | * {{file|Gens-2.15.5-gs-m5.3.slp|Gens/GS Milestone 5.3 (Stampede Linux, 32-bit)}} (596 KB, released 2008/11/20)
| |
− | | |
− | * {{file|Gens-2.15.5-gs-m5.2.tar.gz|Gens/GS Milestone 5.2 (Source Code)}} (1.35 MB, released 2008/11/16)
| |
− | * {{file|Gens_2.15.5-gs-m5.2-1_i386.deb|Gens/GS Milestone 5.2 (Ubuntu 8.04+, 32-bit)}} (582 KB, released 2008/11/16)
| |
− | * {{file|Gens-2.15.5-gs-m5.2-win32.zip|Gens/GS Milestone 5.2 (Win32)}} (756 KB, released 2008/11/16)
| |
− | | |
− | * {{file|Gens-2.15.5-gs-m5.1.tar.gz|Gens/GS Milestone 5.1 (Source Code)}} (1.35 MB, released 2008/11/02)
| |
− | * {{file|Gens_2.15.5-gs-m5.1-1_i386.deb|Gens/GS Milestone 5.1 (Ubuntu 8.04+, 32-bit)}} (579 KB, released 2008/11/02)
| |
− | * {{file|Gens-2.15.5-gs-m5.1-win32.zip|Gens/GS Milestone 5.1 (Win32)}} (754 KB, released 2008/11/02)
| |
− | | |
− | * {{file|Gens-2.15.5-gs-m5.tar.gz|Gens/GS Milestone 5 (Source Code)}} (1.33 MB, released 2008/10/26)
| |
− | * {{file|Gens-2.15.5-gs-m5-1_i386.deb|Gens/GS Milestone 5 (Ubuntu 8.04+, 32-bit)}} (578 KB, released 2008/10/26)
| |
− | * {{file|Gens-2.15.5-gs-m5-win32.zip|Gens/GS Milestone 5 (Win32)}} (746 KB, released 2008/10/26)
| |
− | | |
− | * {{file|Gens-2.15.4-gs-m4.2.rar|Gens/GS Milestone 4.2}} (601 KB, released 2008/09/17)
| |
− | * {{file|Gens-2.15.4-gs-m4.1.rar|Gens/GS Milestone 4.1}} (601 KB, released 2008/09/16)
| |
− | * {{file|Gens-2.15.4-gs-m4.rar|Gens/GS Milestone 4}} (602 KB, released 2008/09/15)
| |
− | * {{file|Gens-2.15.2-gs-m3.rar|Gens/GS Milestone 3}} (613 KB, released 2008/09/02)
| |
− | * {{file|Gens-2.15.2-gs-m2.2.rar|Gens/GS Milestone 2.2}} (604 KB, released 2008/08/30)
| |
− | * {{file|Gens-2.15.2-gs-m2.1.rar|Gens/GS Milestone 2.1}} (607 KB, released 2008/08/29)
| |
− | * {{file|Gens-2.15.2-gs-m2.rar|Gens/GS Milestone 2}} (605 KB, released 2008/08/29)
| |
− | * {{file|Gens-2.15.2-gs-m1.rar|Gens/GS Milestone 1}} (446 KB, released 2008/08/26)
| |
− | | |
− | [[Category:Mega Drive Emulators]]
| |
− | | |
− | ==Other Information==
| |
− | ===Forum Threads=== | |
| * [http://ubuntuforums.org/showthread.php?t=1225491 Ubuntu Forums thread (r7_pre2)] | | * [http://ubuntuforums.org/showthread.php?t=1225491 Ubuntu Forums thread (r7_pre2)] |
| * {{LinkRetro|topic=16887|title=Sonic Retro thread (r7_pre2)}} | | * {{LinkRetro|topic=16887|title=Sonic Retro thread (r7_pre2)}} |
| | | |
− | ====Older Forum Threads====
| |
| * [http://ubuntuforums.org/showthread.php?t=959074 Ubuntu Forums thread (m5-m6)] | | * [http://ubuntuforums.org/showthread.php?t=959074 Ubuntu Forums thread (m5-m6)] |
| + | * [http://ubuntuforums.org/showthread.php?t=948708 Ubuntu Forums thread (m4.2)] |
| * {{LinkRetro|topic=11813|title=Sonic Retro thread (m6 and earlier)}} | | * {{LinkRetro|topic=11813|title=Sonic Retro thread (m6 and earlier)}} |
| + | |
| + | ==References== |
| + | <references/> |