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: /xmil/ # retro_init() builds: retro_system_conf = "/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: /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"