Skip to content
forked from xdanieldzd/Essgee

8-bit Sega game system emulator

License

Notifications You must be signed in to change notification settings

hiroshica/Essgee

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Essgee

Essgee is an emulator for various 8-bit consoles and handhelds by Sega, supporting the SG-1000, SC-3000 (partially), Mark III/Master System and Game Gear. It is written in C# and uses .NET Framework v4.7.1, OpenTK and OpenTK.GLControl for graphics and sound output, as well as Newtonsoft.Json for JSON parsing.

It also improves just enough on its predecessors to no longer be called "fudged", hence its new, pun-y name.

Table of Contents

Usage

Run Essgee.exe to start the emulator. Open a ROM to run via the File menu, recently opened files can also be found there. The emulator recognizes ROMs for each emulated system by the file extension, so ensure SG-1000 ROMs are suffixed .sg, SC-3000 ones .sc, Mark III/Master System ones .sms and Game Gear ones .gg. Zipped files can be loaded as well; in that case, the first file in the archive recognized as a valid ROM will be loaded.

Emulator settings can be changed via the Options menu, each option should be self-explanatory. System-specific settings can be found in the Settings dialog. These include controller configurations, region and TV standard selection, bootstrap ROM paths and similar things.

The emulation can be controlled via the Emulation menu. Once a game is running, it can be paused, reset or stopped from there. This menu also contains the Power On submenu, which allows powering up a system with no cartridge inserted, if a bootstrap ROM image is selected. Systems that do not contain a bootstrap ROM cannot be booted like this.

Fullscreen mode can be toggled via the F11 key. This is currently hardcoded and thus cannot be configured.

Certain ROMs have configuration overrides, stored in the file Assets\MetadataDatabase.json, which are automatically applied when loading such a file. These include, for example, specific mappers (ex. for Codemasters games), region and TV standard overrides, and RAM size settings. These games might otherwise not work or misbehave, hence the need for this file. They're not game-specific hacks, but rather workaround for when the game won't work with ex. the default TV standard specified in the settings, because it was made for 50 Hz PAL systems and does not run correctly at 60 Hz.

The shader Basic is integrated into the emulator, while the others are stored in the Assets\Shaders directory. Essgee's shader system is comparatively limited in features and not compatible with shaders from other emulators.

The SC-3000 keyboard is (currently) not configurable; the current layout can be found in the source code, in the file Essgee\Emulation\Machines\SC3000.cs, although you'll also need the layout of the SC-3000 keyboard matrix to make sense of it like this. Because the controllers and keyboard are both emulated via the PC keyboard, a toggle has been added to allow either the emulated keyboard or the controllers to be active. Press the input mode key (as configured via the SC-3000 tab in the Settings dialog) to switch between keyboard or controller inputs.

Status

CPUs

  • Zilog Z80: All opcodes implemented, documented and undocumented; the two undocumented flags are (possibly?) not fully supported yet; disassembly features incomplete

VDPs

  • Texas Instruments TMS9918A: Scanline-based, not fully accurate and possibly with some bugs here and there; still missing the multicolor graphics mode
    • Sega 315-5124 and 315-5246: Mark III/Master System and Master System II VDPs, TMS9918A with additional graphics mode, line interrupts, etc.; also not fully accurate, also currently emulating a bit of a hybrid of both
    • Sega 315-5378: Game Gear VDP based on Master System II VDP, with higher color depth, etc.; also not fully accurate

PSGs

  • Texas Instruments SN76489: Fully emulated, accuracy is probably not very high, but still sounds decent enough
    • Sega 315-5246: Master System II PSG (integrated into VDP chip), SN76489 with minor differences in noise channel; same issues as SN76489
    • Sega 315-5378: Game Gear PSG (integrated into VDP) based on Master System II PSG, with stereo output extension; same issues as other PSGs

Support Chips

  • Intel 8255: Peripheral interface chip used in SG-1000 and SC-3000; not fully tested nor accurate, enough for controller and keyboard support where applicable

Media

  • Support for various cartridge types, ex. standard Sega mapper, Codemasters mapper and various Korean mappers

Input Devices

  • SG-1000: Standard controllers
  • SC-3000: Standard controllers and integrated keyboard
    • Switch between controller and keyboard input using the Change Input Mode key, defaults to F1
    • Keyboard layout is (currently?) not user-configurable
  • Mark III/Master System: Standard controllers and/or Light Phaser
    • Light Phaser support is still somewhat rudimentary
  • Game Gear: Integrated controls

Notes

  • Overall accuracy of the emulation is nowhere near exact, but it is certainly accurate enough to play many games quite well
  • Sound output might stutter from time to time, the corresponding sound management code isn't too great
  • The framerate limiter and FPS counter are somewhat inaccurate and might contribute to the aforementioned sound stuttering issues

Screenshots

  • Girl's Garden (SG-1000):

    Screenshot 1

  • Sega SC-3000 BASIC Level 3 (SC-3000):

    Screenshot 2

  • Sonic the Hedgehog (Master System):

    Screenshot 3

  • GG Aleste II / Power Strike II (Game Gear):

    Screenshot 4

Acknowledgements & Attribution

  • Essgee uses DejaVu Sans Condensed as its OSD font; see the DejaVu Fonts License for applicable information.
  • The XML data files in Assets\No-Intro were created by the No-Intro project; see the DAT-o-MATIC website for official downloads.
  • The file EssgeeIcon.ico is derived from "Sg1000.jpg" on Sega Retro, in revision from 16 March 2011 by Black Squirrel, and used under CC BY 4.0. The image was edited to remove the controller and text, then resized for use as the application icon.

About

8-bit Sega game system emulator

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 99.4%
  • GLSL 0.6%