Cogwheel
A software emulator primarily for 8-bit Sega hardware, such as the Sega Master System, Sega Game Gear and SG-1000. The ColecoVision is also supported.
Summary
The project uses a modular design based around a Z80 core emulator class library. The rest of the Sega-specific emulation is implemented in another class library, and the user interface is implemented as a separate application. This would allow the main emulator to be easily adapted to different interfaces.
The code is written in C#3 (targetting .NET 2.0). The user interface uses Windows Forms, with SlimDX being used to render the graphical output to the form as quickly as possible.
Features
The following features are currently supported:
- Z80 CPU (emulates all documented and most undocumented features).
- TMS9918A video with custom Sega VDP Master System and Game Gear extensions. Supports multiple versions (hardware revisions, PAL/NTSC) and emulates bugs depending on version.
- SN76489 (PSG) sound.
- Standard ROM mapper, Codemasters mapper and various simple flat-memory RAM and ROM mappers.
- More accurate memory emulation than usual allowing you to boot a BIOS (disabled by default).
- Sega joypad emulation and control via keyboard or joysticks.
- ColecoVision joypad emulation via keyboard with limited joystick support.
- Hardware profiles for SG-1000, SC-3000, SMS1, SMS2, Game Gear and ColecoVision.
- Japanese/Export hardware differences.
The following features are planned:
- A decent Windows front-end GUI with debugging features.
- More input devices (light gun, rollerball).
The following features would be nice, but are a bit beyond me:
- SF-7000 emulation; I can handle the SMS as I've programmed it myself, and the SG-1000 isn't too different. Having never worked with the SF-7000 hardware, I have to try and make sense of the system from very limited data and a few datasheets, and as such have no idea what I'm doing.
Download
You will need to download and install the latest SlimDX end-user runtime if you have not already.
Version | Windows Installer | Zipped Binaries |
---|---|---|
1.0.4.0 | Download | Download |
1.0.3.0 beta 3 | Download | |
1.0.3.0 beta 2 | Download | |
1.0.3.0 beta 1 | Download | |
1.0.2.0 | Download | |
1.0.1.0 | Download | Download |
1.0.0.0 | Download | Download |
1.0.0.0 beta 5 | Download | Download |
1.0.0.0 beta 4 | Download | Download |
1.0.0.0 beta 3 | Download | Download |
1.0.0.0 beta 2 | Download | Download |
1.0.0.0 beta 1 | Download |
Journal Posts
The following journal posts have a lot of pictures and information on the project. They are arranged in ascending date order, so start at the top and work your way down if you want to follow the progress!
- And now for something completely different
- Sega: Enter the Pies
- Screenshots galore
- Compatibility increases further...
- New Z80 emulator
- Kids, just say No to bilinear filtering
- Turning Japanese
- Real 3D on classic 2D hardware
- VDP Interrupts
- SG-1000
- Sega BASIC
- Parallel-Port SMS Control Pad
- Necromancy
- Game Gear LCD Scaling
- Loading ROMs
- Interrupts: A Fresh Start
- /INTerminable Interrupt Problems
- Cogwheel on Google Code
- Joysticks and Game Genie codes
- Sound, at long last.
- Fun with IThumbnailProvider
- SaveStates and Key Names
- ColecoVision and TMS9918 Multicolor
- 3D glasses and CPU cycle counting
- SC-3000 keyboard and a final release
- New 3D renderer in Cogwheel
- Cogwheel 1.0.3.0 beta 1
- Cogwheel 1.0.3.0 beta 3
Source Code
The source code (and issue tracking) is available on Google Code.