docs: move geartowns to 0.0.10

Same five firmware sets and CRCs. On Auto a 1.44 MB floppy now selects the HG, the first model with a three-mode drive (src/geartowns_core.cpp:1968-1976).
This commit is contained in:
Abdessamad Derraz committed 2026-10-23 15:52:34 +02:00
1 parent 11e9837614
commit 5a705c4a32
1 file changed
+28 -24
+28 -24
View File
@@ -3,9 +3,9 @@ type: libretro
core_classification: official_port
source: "https://github.com/drhelius/Geartowns"
upstream: "https://github.com/drhelius/Geartowns"
profiled_date: "2026-10-17"
source_commit: "25d2025be28e9fcc319f597a516f21e0778f770b"
core_version: "0.0.6-8-g25d2025"
profiled_date: "2026-10-23"
source_commit: "d157715112589aeb7e88319b2f2b4ac4e2cafc5f"
core_version: "0.0.10"
display_name: "Fujitsu - FM Towns (Geartowns)"
cores:
- "geartowns"
@@ -16,56 +16,60 @@ 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
(src/system/machine_profiles.h:108-122, `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
(platforms/libretro/libretro.cpp:736-740). 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
(platforms/libretro/libretro.cpp:842-869). 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
it (src/media/firmware.cpp:288-348). 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).
(src/media/firmware.cpp:377-416, src/media/firmware.h:115-124).
Six sets are known (src/media/firmware.h:114-123): fmtowns (Model 1/2),
Six sets are known (src/media/firmware.h:115-124): 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).
(src/geartowns_core.cpp:1958-1991, src/geartowns_core.cpp:2050-2055). A
1.44 MB floppy (2HD at 300 rpm) inserted on Auto replaces a model without a
three-mode drive by the first one in release order that has it, the HG
(src/geartowns_core.cpp:768-771, src/geartowns_core.cpp:1968-1976), which
uses the fmtownshr or fmtownsftv set. A set made for another model still
loads in the second pass, with a warning
(platforms/libretro/libretro.cpp:871-904).
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,
(src/media/firmware.cpp:617-666). 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
(src/media/firmware.cpp:500-511): 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
(src/media/firmware.cpp:533-615, src/common/defines.h:48-55): 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),
0xFF, a missing Serial ROM is generated (src/media/firmware.cpp:76-165,
src/media/firmware.cpp:260-263). The CRC32 of every component is looked up
in game_db.h (src/media/firmware.cpp:167-184, src/media/game_db.h:337-369),
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
(platforms/libretro/libretro.cpp:3001-3015). It is state, not a file to
obtain.
files:
@@ -80,7 +84,7 @@ files:
- { name: "fmt_dos.rom", size: 524288, crc32: "112872ee" }
- { name: "fmt_fnt.rom", size: 262144, crc32: "955c6b75" }
- { name: "fmt_dic.rom", size: 524288, crc32: "b314c659" }
source_ref: "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"
source_ref: "platforms/libretro/libretro.cpp:736-740, platforms/libretro/libretro.cpp:851-869, src/media/firmware.h:117, src/media/firmware.cpp:28-33, src/media/firmware.cpp:288-348, src/media/game_db.h:337-341"
note: >
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
@@ -99,7 +103,7 @@ files:
- { name: "fmt_fnt.rom", size: 262144, crc32: "dd6fd544" }
- { name: "fmt_dic.rom", size: 524288, crc32: "82d1daa2" }
- { name: "mytownsux.rom", size: 32, crc32: "5cc7e6bc" }
source_ref: "src/media/firmware.h:118-119, src/media/firmware.cpp:28-34, src/media/game_db.h:309-314"
source_ref: "src/media/firmware.h:119-120, src/media/firmware.cpp:28-34, src/media/game_db.h:343-348"
note: "Set for the UX, also used by the 1F/2F, 10F/20F, CX and UG."
- name: "fmtmarty.zip"
@@ -111,7 +115,7 @@ files:
contents:
- { name: "mrom.m36", size: 2097152 }
- { name: "mrom.m37", size: 2097152 }
source_ref: "src/media/firmware.h:120, src/media/firmware.cpp:497-508, src/media/game_db.h:316-320"
source_ref: "src/media/firmware.h:121, src/media/firmware.cpp:500-511, src/media/game_db.h:350-354"
note: >
The core checks the CRC32 of the slices it cuts from the two mask
ROMs, not of the files: System 937311F6, OS 2BC2AF96, Extension
@@ -130,7 +134,7 @@ files:
- { name: "fmt_fnt.rom", size: 262144 }
- { name: "fmt_dic.rom", size: 524288 }
- { name: "mytownshr.rom", size: 32, crc32: "c52f0e89" }
source_ref: "src/media/firmware.h:121, src/media/firmware.cpp:28-34, src/media/game_db.h:322-324"
source_ref: "src/media/firmware.h:122, src/media/firmware.cpp:28-34, src/media/game_db.h:356-358"
note: "First choice for the HG. The HR itself is not emulated."
- name: "fmtownsftv.zip"
@@ -146,5 +150,5 @@ files:
- { name: "fmt_dic.rom", size: 524288 }
- { name: "fmt_f20.rom", size: 524288, crc32: "9f55a20c" }
- { name: "mytownsftv.rom", size: 32, crc32: "a961aae7" }
source_ref: "src/media/firmware.h:122, src/media/firmware.cpp:28-34, src/media/game_db.h:326-329"
source_ref: "src/media/firmware.h:123, src/media/firmware.cpp:28-34, src/media/game_db.h:360-363"
note: "Second choice for the HG. The MF/Fresh itself is not emulated."