fm1-smsggdj
SMSGGDJ on the M-VAVE FM-1: a Game Gear emulator that boots the tracker, maps the FM1 keyboard to step entry through emulated RAM, and includes a browser cartridge manager.
- Custom firmware
- Alpha
- Low brick risk
Source codeWebsite: github.com
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
Before you start
- How hard is it?
- HardUses the command line or developer tools.
- What you need
- A USB or MIDI cable
- Comfort with the command line
- A computer
- Can it break my device?
- Very unlikely to break anything.
- Can I undo it?
- The project doesn't say. Assume you can't.
Did it work for you?
Did fm1-smsggdj work on your M-VAVE FM-1?
No reports yet.
One-tap reports from owners. Bricked reports are checked before they count.
Compatibility
Devices: M-VAVE FM-1.
No compatibility information yet.
Getting started
From the project's README ("Build and try"):
Use Python 3.11+, Pillow (python3 -m pip install Pillow), Clang and Node.js. The browser build also needs Emscripten (emcc on PATH). Follow the pinned platform's build documentation for the JieLi Linux x86-64 toolchain and Docker setup on macOS. Set JIELITOOLCHAIN to the installed toolchain, and JIELIDOCKER=1 when using Docker. SDK dependencies are external and are not committed here.
python3 tools/build.py --host # native build + full panel scenario python3 tools/test.py # real-core UBSan and persistence tests python3 tools/build.py --web # WASM build + browser/manager/format tests python3 tools/preview.py # emulator at http://127.0.0.1:8765/ python3 tools/preview.py --manager # cartridge manager python3 tools/build.py --device # builds only; never installs or flashes
On the configured Mac workspace, double-click Preview-GGDJ.command, Manager-GGDJ.command, Verify-GGDJ.command, or Build-GGDJ.command. The launchers optionally load a sibling workspace's setup/env.sh; a fresh checkout uses the tools on PATH. FM1BASE can explicitly select another platform checkout; the default is the pinned submodule.
In the preview, click Switch on. Shift-click a panel button to hold it for a chord; click again to release. The browser runs the real C application but does not emulate the FM1 processor's speed. Its CPU meter cannot validate hardware timing.
The prospective device package is build/ggdj-fm1.fwsc, identity FM-19500. …
Risk and recovery
- Brick risk
- Low
- Requires opening the device
- No
From the project's README ("Browser cartridge manager"):
Launch Manager-GGDJ.command, or serve the built preview and open http://127.0.0.1:8765/manager/ in Chrome/Edge. Files can be edited offline. Device transfer uses Web MIDI with SysEx permission; select the FM1's MIDI input and output and connect. The browser-preview connection uses the same compiled C transfer handler. Physical USB transfer is implemented but not yet tested on an FM1.
- SRAM: open/download a standard .sav, read from the device, or send to the device. Raw 8/16/32 KiB saves are accepted and normalized to 32 KiB.
- Songs: import/export individual .smdj4 songs (legacy single .smdj imports also work), rename, reorder, replace or delete slots. Checksums, compressed capacity and the 32-song limit are checked before writing.
- ROM: download the active ROM, upload a compatible .gg, or restore the firmware's built-in ROM. Uploads are verified by CRC and read-back.
A read/open creates a browser-side copy; song edits change that copy. Download it to a file or explicitly send SRAM to apply it to the device. Device writes restart the ROM and discard unsaved working edits; the page confirms this. Stop playback before transferring. A stale-SRAM check rejects changes if the device has saved since it was read. Whole older SMDJ3 SRAM images need the upstream migration tool.
Sample-bank-only edits to the known v0.48 ROM are recognized automatically. Changed program code needs an exact SHA-256-matched JSON profile, generated from the matching WLA symbol file: …
Credits, license and support
- License
- MIT