Control the Yamaha YM2612 and PSG of the Sega Mega Drive via MIDI.
- On-screen per-channel activity indicators & log
- Built-in FM presets for General MIDI compatibility
- Built-in PSG envelopes based on the EEF format
- Supports MIDI 1.0 CCs & events (e.g. panning, volume, pitch bending)
- Loading of user-defined presets via SysEx
- Memoisation of a MIDI channel's current FM parameters as a user-defined preset
- Auto-saving & loading of user-defined presets in SRAM (EverDrive X7 & PRO only)
- Polyphony via dynamic FM channel mapping
- Portamento (glide)
- Experimental DAC support
- Connectivity via:
- Mega EverDrive X7 USB port.
- Mega EverDrive PRO USB port.
- Controller or ext/modem port via custom USB serial cable.
- MegaWiFi cartridge / BlastEm emulator (experimental)
- Control of YM2612 registers via GenMDM-style CCs
- Supplementary CLI for helping load/dump presets from/to TFI/DMP/WOPN files
Head over to the Wiki for more information and detailed reference pages.
Unit & system tests are compiled and ran as x86 binaries using CMocka. Mega Drive interfaces are mocked.
There are two flavours of ROM:
- Standard: for EverDrives or other flash cart.
- MegaWiFi: for use with the BlastEm emulator or MegaWiFi hardware.
Build Standard ROM:
./docker-make release
Build MegaWiFi ROM:
./docker-make release ROM_TYPE=MEGAWIFI
You'll need to configure SGDK in your environment accordingly and make changes to the Makefile to support building outside of Docker. I've never tried to build it outside of Docker :)
make
Warning
Building this project requires certain modifications to be applied to the SGDK. If you are not building using Docker you will need to manually apply patches from the docker-sgdk repo (*.patch files in the root) otherwise the build or tests may fail.
- This project uses a pixel font and colour scheme from MDPlayer by kuma4649 licensed under the GNU General Public License v3.0.
- The built-in FM presets are based on Wohlstand's XG bank from libOPNMIDI
Pull requests are welcome, as are donations!