Files
libretro/emulators/x1.yml
2026-03-25 15:41:36 +01:00

93 lines
3.5 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"
core_version: "0.60a"
display_name: "Sharp X1 (X Millennium)"
cores:
- x1
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 incorrectly says "8x8 Font ROM" (actually 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: 32768
required: false
hle_fallback: true
description: "X1 IPL ROM. Loaded when ROM_TYPE=1 (X1 model)."
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"