Geartowns¶
Technical notes
FM Towns emulator by Ignacio Sanchez (drhelius). The same tree builds the
desktop application and the libretro core (platforms/libretro). The core
emulates the Model 1/2, 1F/2F, 10F/20F, II CX, UX, UG, HG and the Marty
(src/system/machine_profiles.h:61-75, emulated field). The version string
is git describe at build time (platforms/libretro/Makefile:369-371).
retro_load_game() fails when load_bios() finds no firmware (platforms/libretro/libretro.cpp:704-708). load_bios() searches system/geartowns first, then the system directory itself, each time accepting first only a set made for the selected model and then any set (platforms/libretro/libretro.cpp:798-825). Firmware::FindSources() takes as candidates the folder itself, every direct subfolder and every .zip in it (src/media/firmware.cpp:286-346). Folder and zip names are free. A candidate counts only when the System, OS, Font and Dictionary ROMs are all present at the right size, and the CRC32 of its System ROM names the set (src/media/firmware.cpp:375-414, src/media/firmware.h:114-123).
Six sets are known (src/media/firmware.h:114-123): fmtowns (Model 1/2), freetowns (Free FM Towns Project replacement ROMs, used by the Model 1/2), fmtownsux (UX, also used by 1F/2F, 10F/20F, CX and UG), fmtmarty (Marty), fmtownshr and fmtownsftv (both used by the HG, HR preferred). On Auto the model comes from the game database and falls back to the Model 1/2 or to the first model in release order that has a set (src/geartowns_core.cpp:1624-1649, src/geartowns_core.cpp:1691-1696). A set made for another model still loads in the second pass, with a warning (platforms/libretro/libretro.cpp:827-860).
File names are matched without case, inside a zip only at the archive root (src/media/firmware.cpp:614-663). Accepted names, one group per component, are (FMT_SYS.ROM, FMT_SYS_A.ROM, FMTHR_SYS.ROM), (FMT_DOS.ROM, FMT_DOS_A.ROM), (FMT_FNT.ROM), (FMT_DIC.ROM), (FMT_F20.ROM, FMT_F20_A.ROM), (MYTOWNS.ROM, MYTOWNSUX.ROM, MYTOWNSM2.ROM, MYTOWNSFTV.ROM, MYTOWNSHR.ROM) and (MAR_EX0.ROM to MAR_EX3.ROM) (src/media/firmware.cpp:28-42). Without separate files the Marty components are cut from MROM.M36 and MROM.M37, 2 MiB each (src/media/firmware.cpp:497-508): OS at 0 and the first three extension parts in M36, and the fourth extension part, 20-dot font at 0x80000, dictionary at 0x100000, font at 0x180000 and System ROM at 0x1C0000 in M37.
Each component must have its exact size or it is rejected (src/media/firmware.cpp:530-612, src/common/defines.h:47-54): System 256 KiB, OS 512 KiB, Font 256 KiB, Dictionary 512 KiB, 20-dot Font 512 KiB, Serial 32 bytes, Extension 2 MiB (four 512 KiB parts). System, OS, Font and Dictionary are required. A missing 20-dot Font or Extension is replaced by 0xFF, a missing Serial ROM is generated (src/media/firmware.cpp:73-163, src/media/firmware.cpp:258-261). The CRC32 of every component is looked up in game_db.h (src/media/firmware.cpp:165-182, src/media/game_db.h:303-335), and an unknown CRC only produces a warning. The Free FM Towns set is known by System 65DC3B1F, OS 43C18E92, Font 736D9CB1 and a blank Dictionary 504BF849. The Marty slices are known by System 937311F6, OS 2BC2AF96, Extension E1A9FA72 and 20-dot Font 75660AAC.
The CMOS is written by the core next to the saves (platforms/libretro/libretro.cpp:2753-2767). It is state, not a file to obtain.
5 files | 1 required, 4 optional | 5 in repo, 0 missing Categories: 5 BIOS ZIPs
fmtowns.zip required in repo bios_zip #
FM Towns Model 1/2 firmware set
- Path:
geartowns/fmtowns.zip - System: fmtowns
- Source:
platforms/libretro/libretro.cpp:704-708,platforms/libretro/libretro.cpp:807-825,src/media/firmware.h:116,src/media/firmware.cpp:28-33,src/media/firmware.cpp:286-346,src/media/game_db.h:303-307 - Collection copy:
bios/Fujitsu/FM Towns/fmtowns.zip - Platforms: batocera
fmtowns.zip, retrobatfmtowns.zip -
Set for the Model 1/2, the machine Auto falls back to. The same four files load from any subfolder of system/geartowns or from system/geartowns itself. The core has no CRC for a Model 1/2 20-dot Font, and fmt_f20.rom is read when present.
-
Contents (4 members):
fmt_sys.rom: 256.0 KB, CRC3253319e23fmt_dos.rom: 512.0 KB, CRC32112872eefmt_fnt.rom: 256.0 KB, CRC32955c6b75fmt_dic.rom: 512.0 KB, CRC32b314c659
fmtownsux.zip optional in repo bios_zip #
FM Towns II UX firmware set
- Path:
geartowns/fmtownsux.zip - System: fmtowns
- Source:
src/media/firmware.h:118-119,src/media/firmware.cpp:28-34,src/media/game_db.h:309-314 - Collection copy:
bios/Fujitsu/FM Towns/fmtownsux.zip - Platforms: batocera
fmtownsux.zip, retrobatfmtownsux.zip - Set for the UX, also used by the 1F/2F, 10F/20F, CX and UG.
- Contents (5 members):
fmt_sys_a.rom: 256.0 KB, CRC3292f3fa67fmt_dos_a.rom: 512.0 KB, CRC3222270e9ffmt_fnt.rom: 256.0 KB, CRC32dd6fd544fmt_dic.rom: 512.0 KB, CRC3282d1daa2mytownsux.rom: 32 B, CRC325cc7e6bc
fmtmarty.zip optional in repo bios_zip #
FM Towns Marty firmware set
- Path:
geartowns/fmtmarty.zip - System: fmtowns
- Source:
src/media/firmware.h:120,src/media/firmware.cpp:497-508,src/media/game_db.h:316-320 - Collection copy:
bios/Fujitsu/FM Towns/fmtmarty.zip - Platforms: batocera
fmtmarty.zip -
The core checks the CRC32 of the slices it cuts from the two mask ROMs, not of the files: System 937311F6, OS 2BC2AF96, Extension E1A9FA72, 20-dot Font 75660AAC. The Marty 2 layout with separate FMT_*.ROM and MAR_EX0.ROM to MAR_EX3.ROM files is read the same way.
-
Contents (2 members):
mrom.m36: 2.0 MBmrom.m37: 2.0 MB
fmtownshr.zip optional in repo bios_zip #
FM Towns II HR firmware set
- Path:
geartowns/fmtownshr.zip - System: fmtowns
- Source:
src/media/firmware.h:121,src/media/firmware.cpp:28-34,src/media/game_db.h:322-324 - Collection copy:
bios/Fujitsu/FM Towns/fmtownshr.zip - First choice for the HG. The HR itself is not emulated.
- Contents (5 members):
fmthr_sys.rom: 256.0 KB, CRC328aeff982fmt_dos.rom: 512.0 KBfmt_fnt.rom: 256.0 KBfmt_dic.rom: 512.0 KBmytownshr.rom: 32 B, CRC32c52f0e89
fmtownsftv.zip optional in repo bios_zip #
FM Towns II Fresh TV firmware set
- Path:
geartowns/fmtownsftv.zip - System: fmtowns
- Source:
src/media/firmware.h:122,src/media/firmware.cpp:28-34,src/media/game_db.h:326-329 - Collection copy:
bios/Fujitsu/FM Towns/fmtownsftv.zip - Second choice for the HG. The MF/Fresh itself is not emulated.
- Contents (6 members):
fmt_sys.rom: 256.0 KB, CRC32afe4ebcffmt_dos.rom: 512.0 KBfmt_fnt.rom: 256.0 KBfmt_dic.rom: 512.0 KBfmt_f20.rom: 512.0 KB, CRC329f55a20cmytownsftv.rom: 32 B, CRC32a961aae7
Generated on 2026-10-20T03:49:41Z