0
FM-1 Doom
Watch it: Can it run Doom?
- Custom firmware
- Alpha
- Medium brick risk
- Reversible
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?
- EasyCopy a file or use a web page. No extra software.
- What you need
- A USB or MIDI cable
- Comfort with the command line
- A computer
- Can it break my device?
- Small chance of trouble, with a way to recover.
- Can I undo it?
- Yes. You can go back to the official software.
Get itOpens github.com
Did it work for you?
Did FM-1 Doom 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 ("FM-1 Doom"):
Doom on the M-VAVE FM-1 (JieLi AC791N, 1 MiB flash, ~430 KB RAM, 240×240 LCD). A side project of sloopDX.
Watch it: Can it run Doom? (YouTube Short) · Try it: web installer (Chrome / Edge, USB)
- Engine: doomgeneric (Chocolate Doom, GPL-2.0-or-later) in src/, changed for a small WAD (missing switch textures and music are skipped) and a zone in KiB (-kb).
- Data: one arena of FreeDM (Freedoom project, BSD-3-Clause), MAP12 made a single-player level: tools/mkwad.py freedm.wad MAP12 build/freedm.wad keeps only its textures (rare ones painted with common ones: 17 textures from 25 patches), its flats, the imp, fist / pistol / shotgun and the status bar: 562 KB raw, 276 KB with zlib per lump. The installer writes only the app area (0x4000..0x93000, ~570 KB), which the engine (~280 KB) and the data share.
- Host build: sh host/build.sh, then build/fm1doom-host : headless, a virtual clock, scripted keys, every 35th frame a PPM.
Status
- The engine runs the mini WAD on the host (renders, monsters fight back).
- RAM: lumps read in place, no wipe, the screen outside the zone; renderer limits for one small arena (FM1SMALL: 48 visplanes, openings ×28, 128 drawsegs, viewangletox as short); no Doom status bar or HUD font: health, armour, ammo, weapon and messages are the FM-1's own HUD in the strips above and below the picture; the sky is four copies of a 64-column slice. The host runs the level for 100 s in a 150 KB zone. …
Risk and recovery
- Brick risk
- Medium
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Status"):
- The engine runs the mini WAD on the host (renders, monsters fight back).
- RAM: lumps read in place, no wipe, the screen outside the zone; renderer limits for one small arena (FM1SMALL: 48 visplanes, openings ×28, 128 drawsegs, viewangletox as short); no Doom status bar or HUD font: health, armour, ammo, weapon and messages are the FM-1's own HUD in the strips above and below the picture; the sky is four copies of a 64-column slice. The host runs the level for 100 s in a 150 KB zone.
- The WAD image (raw deflate per lump, PLAYPAL / COLORMAP raw): 239 KB in the app's flash.
- The firmware: ./build.sh -> build/fm1doom.fwsc (identity FM-1980): sloopDX's boot guard, USB-MIDI, M-UPGRADE updater and USB rescue (OCT- at power-on), so the web installer can always put sloopDX back; the SDK's trimmed newlib plus firmware/src/fm1libc.c (printf family, a growing heap, no files); the finale, intermission, savegames and the network checksum stubbed (the arena restarts at its exit). Flash 549 of 581 KB, RAM 227 KB + zone 195 KB.
- On the device (0.1). 0.3: Freedoom's logo at boot, then the controls.
- Sound (0.4): the effects synthesized (src/fm1sfx.c: a sweeping oscillator plus filtered noise per effect, 8 voices at 44.1 kHz in the audio interrupt); no music. host/sfxdemo.c writes them all to a WAV.
Credits, license and support
- License
- GPL-2.0