Firmware Hero
0

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.
Get itOpens github.com

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. …

Read the full instructions

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: …

Read the full instructions

Credits, license and support

License
MIT