Gens/GS
From Sega Retro
Gens/GS is a Sega Mega Drive emulator derived from Gens and maintained by GerbilSoft. Project goals include clean source code, combined features from various forks of Gens, and improved platform portability.
Download Gens/GS Gens/GS Release 7 (Source Code) (3.36 MB) (info) Gens/GS Release 7 (Ubuntu 8.04+, i386) (2.24 MB) (info) Gens/GS Release 7 (Win32, i386; Packaging Update 1) ("Gens-gs-r7-win32-pkg1.zip" does not exist) (info) Gens/GS Release 7 (Slackware 13.0, i486) (2.16 MB) (info)
|
Contents
In This Release
New Features
- Added an additional color scaling method, "Full with S/H". This method takes into account the Shadow and Highlight functionality of the Sega Mega Drive's VDP. With this method, MD color 0xEEE (white) is scaled to 0xEEEEEE for normal, 0xFFFFFF for highlight, and 0x777777 for shadow. This color scaling method is now the default.
- Initial reimplementation of "Full Screen Minimize". This allows the emulator to minimize itself from Full Screen when a dialog is open, e.g. to load a ROM image. It is currently only usable for a specific case on the Linux version.
- [Linux] Added Alt-Tab support in Full Screen. This uses the "Full Screen Minimize" infrastructure.
Bug Fixes
- [Win32] Added a workaround for an ASPI-related crash on Windows 98SE.
- [Win32] Fixed a regression from r7_pre3 that caused Gens/GS to crash if a ROM is loaded via File, Open ROM and a Saitek P580 gamepad is plugged in. Special thanks to NeKit from Sonic Retro for helping to diagnose and solve this problem.
- [Linux] Fixed a regression from r7_pre4 where starting Gens/GS in fullscreen mode with a ROM specified wouldn't work. This bug was reported by Zombie in #retro.
Miscellaneous
- [Win32] The custom debug console activated with "--debug" on the release build has been replaced with a standard Win32 console, which is created after initial startup.
- [MDP] Implemented mdp_host_t->emulator_control(MDP_EMUCTRL_RELOAD_INFO).
- Added "Manual" and "Report a Bug" items to the Help menu.
Low-Level Code Changes
- [libgsft] Added an implementation of strsep() and removed the strtok_r() implementation. All Gens/GS code that uses strtok_r() has been switched over to strsep().
- [libgsft] Added the BSD implementations of strlcpy() and strlcat(). Most Gens/GS code has been switched over to these functions.
- Initial infrastructure for dynamically loading libpng. This will be used to separate libpng on Gens/GS Win32 into a separate DLL. If libpng can't be found, Gens/GS will fall back to saving screenshots in BMP format.
- Eliminated most of the "DECL" macros from the x86 assembler files. This reduces the total symbol count in the resulting binaries.
- Added a new x86 assembler macro, SYM(), which prefixes symbols with the appropriate C symbol prefix for the platform.
For information about previous releases, see the ChangeLog.txt file included with Gens/GS.
Coming Soon
Release 7.1
- [Win32] Full Unicode support on Windows NT. Additionally, ANSI strings on Windows 9x will be converted to UTF-8 for cross-platform compatibility. (Note that Windows 95 doesn't support UTF-8, so Windows 95 is no longer supported.)
- Physical CD-ROM drive abstraction layer. BIN/CUE support may be added, too.
- ISO/MP3 and Linux CD-ROM support has been ported.
- Win32 ASPI support is in progress.
- Shift-JIS title decoder for some Japanese ROMs.
- [Linux] IRC Reporter plugin to report the current ROM to IRC clients.
- New onscreen display font, based on UNI-VGA and GNU Unifont, with support for most of the Unicode Basic Multilingual Plane. (ASCII characters [U+0000 - U+007F] will be included in the binary, but all other characters will be stored in external custom font files.)
- [Linux] Initial VDP Debugging plugin with all the functionality currently available in the built-in VDP debugger, plus a sprite viewer and Sonic sprite mapping viewer.
- Sprite viewer shows hardware sprites. [Not Started]
- Sonic sprite mapping viewer shows full sprites using the mapping system found in Sonic games. [Not Started]
- The VDP rendering and I/O code is being ported from x86 assembly language to C++. Some notable improvements in this port:
- The per-line sprite limit is now respected. (16 sprites per line in H32; 20 in H40.)
- Border color is now rendered in the VDP code instead of in the video drawing backends.
- V30 (240-line) resolution is now supported in NTSC. That is, it works like it does on the real console: VBlank is reduced to 30 Hz, and the picture rolls. (V30 still works normally in PAL.)
- All tests in Nemesis' Sprite Masking and Overflow Test ROM now pass.
- VDP ports are now correctly mirrored throughout the M68K's $C00000-$DFFFFF address space.
- SegaCD: The BRAM cartridge emulation now allows 128 KB, 256 KB, and 512 KB cartridges. (Default is still 64 KB)
- ROM images that use SRAM now have the SRAM initialized to 0xFF instead of 0x00. This fixes a few games, including Micro Machines 2 and Dino Dini's Soccer.
- The 2x C++ renderer no longer reads from the destination buffer when line-doubling the image. It also uses a single loop per source row instead of two.
- The 2x MMX renderers have been optimized to use a single loop for each source row instead of two.
Release 7.2
- Port the emulation code of mdZ80 to C.
Future Releases
- Cheat Search plugin.
- This makes it too easy for the average user to make a "hack" without knowing what they're doing, so it's unlikely that this plugin will be written by me. I will accept patches from anyone else who wants to write this plugin, however.
Other Information
Git Repository
Trivia
- 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.