Files
libretro/emulators/x1.yml
T
Abdessamad Derraz 37a5bd05ff docs: state .info facts in profile notes
Ten notes and comments called .info entries phantom, misleading or
incorrectly written. They now say what the .info declares and what
the code reads, and a prose test refuses those verdicts in profiles.
2026-10-21 05:10:45 +02:00

97 lines
3.7 KiB
YAML

emulator: "X Millennium"
type: libretro
core_classification: community_fork
source: "https://github.com/libretro/xmil-libretro"
upstream: "http://amethyst.yui.ne.jp/svn/x1/xmil/trunk/"
profiled_date: "2026-03-25"
source_commit: "3106aa54ffb244cca4019a6e95dacaa698781bc3"
core_version: "0.60a"
display_name: "Sharp X1 (X Millennium)"
cores:
- x1
- xmil
systems:
- sharp-x1
# X Millennium (XMIL) is a Sharp X1 series emulator by yui, ported to libretro
# by r-type. Supports X1, X1 Turbo, and X1 TurboZ models via the "X1_ROMTYPE"
# core option (X1 = ROM_TYPE 1, TURBO = 2, TURBOZ = 3).
#
# SUPPORT_TURBOZ is not compiled in the libretro build (compiler.h), so TurboZ
# extended color modes are unavailable. ROM_TYPE 3 still selects IPLROM.X1T.
#
# All system files go under: <system_dir>/xmil/
# retro_init() builds: retro_system_conf = "<system_dir>/xmil" (libretro.c:597)
#
# IPL ROM loading (memio.c:87-121):
# biosmem is initialized with defaultiplrom (575-byte boot stub from defipl.res).
# ROM_TYPE >= 1: loads external IPL ROM into biosmem, overwriting the stub.
# ROM_TYPE 1 (X1): xmil/IPLROM.X1
# ROM_TYPE >= 2 (Turbo/TurboZ): xmil/IPLROM.X1T
# Path built explicitly: sprintf(rtmp, "%s%c%s", retro_system_conf, slash, iplfile)
# If file missing, the 575-byte stub remains (limited boot capability).
#
# Font loading (fontx1.c:69-122, font.c:89-127):
# font_load(NULL, TRUE) called from pccore_initialize() (pccore.c:67).
# Built-in defaults (defrom_ank, defrom_txt from fontdata.c) provide basic ASCII.
# x1fontread() tries to load external font files via fontopen().
# Font path resolution uses file_getcd() which defaults to "./" in the libretro
# port (file_setcd() is never called). Upstream win9x/sdl2 calls file_setcd()
# to set the working dir. Fonts may not be found from xmil/ in practice.
#
# .info declares firmware_count=2 (IPL ROMs only). Font files are not declared.
# .info firmware1_desc reads "8x8 Font ROM". The core loads IPLROM.X1T as the
# Turbo IPL ROM.
notes: |
Place all files in: <system_dir>/xmil/
The core selects between IPLROM.X1 and IPLROM.X1T based on the "X1_ROMTYPE"
core option. A 575-byte built-in IPL stub provides limited boot without the
real ROMs. Font files add Japanese character support. The libretro port has a
path resolution quirk where fonts are searched in "./" instead of "xmil/"
(missing file_setcd call).
files:
- name: IPLROM.X1
path: xmil/IPLROM.X1
size: 4096
required: false
hle_fallback: true
description: "X1 IPL ROM. Loaded when ROM_TYPE=1 (X1 model)."
note: "file_read copies up to 0x8000 bytes into biosmem, unchecked. The X1 IPL dump is 4 KiB."
source_ref: "io/memio.c:82,96-108"
- name: IPLROM.X1T
path: xmil/IPLROM.X1T
size: 32768
required: false
hle_fallback: true
description: "X1 Turbo/TurboZ IPL ROM. Loaded when ROM_TYPE=2 or 3."
source_ref: "io/memio.c:83,97-108"
- name: FNT0808.X1
path: xmil/FNT0808.X1
size: 2048
validation: [size]
required: false
hle_fallback: true
description: "8x8 ANK font ROM. Built-in defrom_ank fallback provides basic ASCII."
source_ref: "font/fontdata.c:6, font/fontx1.c:79-87"
- name: FNT0816.X1
path: xmil/FNT0816.X1
size: 4096
validation: [size]
required: false
hle_fallback: true
description: "8x16 ANK font ROM. Built-in fallback derived from defrom_ank/defrom_txt."
source_ref: "font/fontdata.c:7, font/fontx1.c:89-103"
- name: FNT1616.X1
path: xmil/FNT1616.X1
size: 306176
validation: [size]
required: false
description: "16x16 Kanji font ROM. No built-in kanji data (zeroed). Required for Japanese text."
source_ref: "font/fontdata.c:8, font/fontx1.c:105-120"