Files
libretro/emulators/xm7.yml
T
Abdessamad Derraz 3199bc2a55 fix: state standalone versions from their code
Each standalone profile records where its version is read: the source
at its pin (clk 2026-07-23-136-g9020107, shadps4 0.20.1 WIP, eden
v0.2.0-401-g26a03d2), the APK, binary or archive read (kind package),
or, where no reading can be made, kind unverified with the reason: a
host the tools cannot read, a forge gone or not answering, no build
recorded as read, a pin on another branch. Those keep their value,
unconfirmed.
2026-10-27 19:21:40 +01:00

159 lines
6.1 KiB
YAML

emulator: XM7
display_name: "Fujitsu - FM-7 (XM7/SDL)"
type: standalone
core_classification: other
source: "https://github.com/nakatamaho/XM7-for-SDL"
upstream: "http://retropc.net/ryu/xm7/"
profiled_date: "2026-10-20"
source_commit: "2a48dceaf8a3a0de92cf369b039ac5fab2bb351a"
core_version: "V3.4 L61a SDL/Agar 0.3.2pre2"
version_basis:
kind: file
path: "linux-sdl/vm/xm7.h"
pattern: '#if XM7_VER >= 3\n#define\s+VERSION\s+"(V[^"]+)"[\s\S]*?#else\n#define\s+LEVEL\s+"([^"]+)"[\s\S]*?#else\n#define\s+LOCALVER\s+"(SDL/Agar [^"]+)"'
format: "{1} {2} {3}"
cores:
- xm7
systems:
- fm7
- fm77av
mode: standalone
notes: |
K.Ohta's SDL and Agar port of PI.'s XM7, an FM-7, FM-77 and FM77AV series
emulator. The CMake build sets XM7_VERSION 3 (linux-sdl/CMakeLists.txt:23,
linux-sdl/cmake/config_xm7.cmake:20), the FM77AV40EX/SX level, so every ROM
path below is the XM7_VER >= 3 branch. RetroPie builds this repository with
OpenGL and OpenCL off.
ROMs are read by file_load (linux-sdl/sdl/sdl_file.c:21-59), which prepends
ModuleDir and reads a fixed byte count. A file shorter than that count is
refused and anything past it is ignored. main sets ModuleDir to $HOME/.xm7/,
or ./.xm7/ when HOME is unset (linux-sdl/sdl/windows_main.cpp:79-94). No hash
or checksum of any ROM is computed.
system_init stops at the first device whose init returns FALSE
(linux-sdl/vm/system.c:124-127, 171, 203). MainLoop then sets error code 1
and shows "Error init VM. Please check ROMS and system-memory."
(linux-sdl/ui-agar/agar_main.cpp:166-168, 546-548), and no machine runs. A
ROM whose absence makes its init return FALSE is required below.
The three drive sound effects are read with SDL_LoadWAV from RSSDIR, which
defaults to SHAREDIR, /usr/local/share/xm7/ (linux-sdl/sdl/build_config.h:76-86,
linux-sdl/sdl/api_snd2.cpp:660). The name is appended to that directory
without a separator, and each name is tried in lower case, upper case,
capitalized and as written (linux-sdl/sdl/api_snd2.cpp:213-267). A missing
WAV leaves its slot silent. HEADUP.WAV and HEADDOWN.WAV are compiled out
(linux-sdl/sdl/api_snd2.cpp:160-163).
USERDIC.DAT is the FM77-211 learning RAM. It is filled with 0xFF when absent
and written back by the emulator (linux-sdl/vm/jcard.c:77-82), so it is not
listed. JSUBMON.ROM, SUBSYS_8.ROM, SUBSYSL4.ROM, ANKCG16.ROM, the FM-8 and
FM-7 boot ROMs and FBASIC10.ROM are only read when XM7_VER is 1.
files:
- name: FBASIC30.ROM
description: "F-BASIC V3.0 ROM"
required: true
min_size: 31744
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:240, linux-sdl/vm/mainmem.c:211-217"
- name: INITIATE.ROM
description: "FM77AV initiator ROM"
required: true
min_size: 8192
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:241, linux-sdl/vm/mainmem.c:225-227"
note: "Patched in memory after loading to skip the boot delay of the old and new boot sequences (linux-sdl/vm/mainmem.c:229-262)."
- name: BOOT_MMR.ROM
description: "FM-77 MMR boot ROM"
required: false
min_size: 512
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:246, linux-sdl/vm/mainmem.c:287-290, linux-sdl/vm/jcard.c:100-108"
note: "Without it the hidden boot area of the extended ROM is filled from INITIATE.ROM offset 0x1a00."
- name: SUBSYS_C.ROM
description: "FM-7 sub system ROM"
required: true
min_size: 10240
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:252, linux-sdl/vm/submem.c:212-218"
- name: SUBSYS_A.ROM
description: "FM77AV type A sub system ROM"
required: true
min_size: 8192
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:255, linux-sdl/vm/submem.c:220-222"
- name: SUBSYS_B.ROM
description: "FM77AV type B sub system ROM"
required: true
min_size: 8192
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:256, linux-sdl/vm/submem.c:223-225"
- name: SUBSYSCG.ROM
description: "FM77AV character generator and sub system ROM"
required: true
min_size: 8192
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:257, linux-sdl/vm/submem.c:226-228"
- name: KANJI1.ROM
description: "JIS83 first standard kanji ROM"
required: true
min_size: 131072
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:259, linux-sdl/vm/kanji.c:85-87"
unsourceable: "XM7 checks no hash and its upstream distributes no dump. The KANJI1.ROM the collection holds is the PC-88 kanji ROM, another machine's font."
- name: KANJI2.ROM
description: "JIS83 second standard kanji ROM"
required: true
min_size: 131072
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:263, linux-sdl/vm/kanji.c:98-102"
unsourceable: "XM7 checks no hash and its upstream distributes no dump. The KANJI2.ROM the collection holds is the PC-88 second level kanji ROM, another machine's font."
- name: KANJI.ROM
description: "JIS78 first standard kanji ROM"
required: false
min_size: 131072
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:260, linux-sdl/vm/kanji.c:71-81, 128-133"
unsourceable: "XM7 checks no hash and its upstream distributes no dump. The KANJI.ROM files the collection holds are MSX and FPseNG fonts, not the Fujitsu ROM."
note: "Without it a JIS78 table is generated from KANJI1.ROM."
- name: DICROM.ROM
description: "FM77-101/FM77-211 dictionary ROM"
required: true
min_size: 262144
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:264, linux-sdl/vm/jcard.c:66-68"
- name: EXTSUB.ROM
description: "FM77AV40EX/SX extended sub system ROM"
required: true
min_size: 49152
validation: [size]
source_ref: "linux-sdl/vm/xm7.h:266, linux-sdl/vm/jcard.c:92-94"
- name: relay_on.wav
description: "Cassette relay on sound"
required: false
source_ref: "linux-sdl/sdl/api_snd2.cpp:155-157, 213-267, 660"
- name: relayoff.wav
description: "Cassette relay off sound"
required: false
source_ref: "linux-sdl/sdl/api_snd2.cpp:155-158, 213-267, 660"
- name: fddseek.wav
description: "Floppy drive seek sound"
required: false
source_ref: "linux-sdl/sdl/api_snd2.cpp:155-159, 213-267, 660"