How the original program was taken apart and rebuilt for the web
There were two shareware archives. fgodmom.zip holds version 3.0 (December 1991) and fgodmom4.zip holds version 4.0 (July 1992). Each one has a manual, an order form, a READ.ME and a single FGODMOM.EXE of about 95 KB. That executable is the whole game: the levels, every picture, the sounds and all the help text are inside it.
The executable starts with the signature LZ91, which means it was packed with LZEXE 0.91, a popular DOS-era compressor that unpacks itself in memory when the program runs. Writing a small unpacker turns the 95 KB file into the 194 KB program that actually ran.
The unpacked code shows it was written in Borland Turbo Pascal with Borland's BGI graphics library. The EGA/VGA, CGA and AT&T graphics drivers and the Gothic title font are all linked into the program. The code is organized in Pascal "units", and the startup code shows where the data segment begins. That segment holds everything worth extracting.
Every sprite is stored in the format of BGI's PutImage call: a width and height, then the pixel rows. EGA images use four bit-planes, one bit per pixel per plane. CGA images pack four pixels into each byte. Version 4.0 has a full set of 32×32 EGA tiles drawn by Tom Hall and Adrian Carmack of id Software, plus 16×16 tiles for CGA screens. Version 3.0 has John Blackwell's own artwork.
A startup routine fills a table of image pointers, one per "object number". That table is the key to everything else: object 22 is a brick wall, 27 a ladder, 29 a penny, 19–21 are the crab's animation frames, and so on.
All 51 screens (50 levels plus the special warp level #51) fit in just 4,361 bytes. Each screen is 19 tiles across and 9 tiles down. Each tile is a 4-bit code, and a small lookup table turns the code into an object number. The program stores the levels interleaved: for each column, for each row, the tile for every level in a row. That makes the raw bytes look like noise until you know the trick.
To play the same way the original did, the web version follows the original program's logic step by step. Some of what the disassembly showed:
The PC-speaker effects come from Nels Anderson's "Sound Tools". Each effect is a list of (duration, frequency) pairs played from the timer interrupt, so they map directly onto Web Audio square waves. The "Dance of Joy" tune is 88 notes stored as frequency and millisecond pairs.
ML (99 lives), LT (ten-second transformations), AW (start with the warp key), JIG (make the fairies dance), SLO/FST (game speed), SCARE (crabs run away) and MESSY.FGODMOM EDIT, mouse and EGA required). It saves to FGSCREEN.DAT.Registering at $10 or $20 got you a disk with EXTRASCR.FGM, "fifty extra levels for the game F.Godmom", which the game loads when started with the LNS option. That disk wasn't in these archives, but a copy of the registered game, bonus file included, was preserved on the Internet Archive in 2022.
The file starts with a page of text (a title and the registration address) ending in a DOS end-of-file mark. The game skips the first 1,243 bytes and reads 8,721 more: 51 screens of 171 bytes, one plain object number per tile, with no packing. That's fifty levels plus a warp level of their own. The hints were in the shareware EXE all along, as the second half of the hint routine. The registered EXE turned out to be the same program, with the same fifty built-in levels.
A few of the extra levels lean on quirks. The original never clears the door's position between levels, so #42, which has no door tile, gets its door from #41. That lands on a penny walled in by iron, which looks deliberate. Two levels can't be finished as preserved: #12 (the castle) has no key, and #37's borrowed door position is covered by an iron ladder. A warp key carried in from another level gets you past either one.
The original editor writes FGSCREEN.DAT, which is the extra-levels file without the text header. The web editor reads and writes that same layout, so its files should also work with the DOS game in DOSBox (not yet tried). It also opens EXTRASCR.FGM. Levels you make are kept in your browser, can be play-tested straight away, and can be shared as a link: the level is packed into the address, two tiles per byte, so it needs no server.
SAVEGAME.DAT. Sign in with your name and a 4-digit code and they follow you to any computer, phone or tablet.