mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-14 05:53:47 -06:00
Refs leaned on the PDF manual and pointed inside instructions. Each now names the loader, the system file table index and the init path in xm6g.exe 3.38. SCSIINROM.DAT is needed on the base model only, and RTC.DAT and the YM2608 ROM take their read sizes.
434 lines
23 KiB
YAML
434 lines
23 KiB
YAML
emulator: "XM6 TypeG"
|
|
type: standalone
|
|
core_classification: enhanced_fork
|
|
source: "http://retropc.net/pi/xm6/index.html"
|
|
upstream: closed-source
|
|
version_source:
|
|
url: "http://retropc.net/pi/xm6/index.html"
|
|
pattern: '\(version [0-9.]+ \S+ version ([0-9.]+)\)'
|
|
based_on: "XM6 v2.06 by PI."
|
|
profiled_date: "2026-11-10"
|
|
core_version: "3.38"
|
|
version_basis:
|
|
kind: package
|
|
url: "http://retropc.net/pi/xm6/index.html"
|
|
pattern: 'xm6_typeg_(\d)(\d+)_\d+\.zip'
|
|
format: "{1}.{2}"
|
|
artifact: "xm6_typeg_338_20260223.zip"
|
|
display_name: "XM6 TypeG (Sharp X68000)"
|
|
mode: standalone
|
|
cores:
|
|
- xm6typeg
|
|
- XM6TYPEG
|
|
- XM6TYPEG-WINDOWS
|
|
systems:
|
|
- sharp-x68000
|
|
|
|
notes: |
|
|
Closed-source Windows fork of XM6 v2.06 by GIMONS, maintained again by PI.
|
|
Distributed from PI's XM6 page as one archive, xm6_typeg_338_20260223.zip
|
|
(sha256 71c2b3429163128f...), holding an x64 xm6g.exe (sha256
|
|
3d50aab23ce6c8ae1677b1ca8adaa8b0c6c9dabb1c06b98d0f2ea10fe44ac5de), the Visual
|
|
C++ 2015-2019 runtime it imports (mfc140u.dll, msvcp140.dll, vcruntime140.dll,
|
|
vcruntime140_1.dll, loader-resolved) and a PDF manual. No source is published.
|
|
Every address below is a virtual address in that xm6g.exe, function bounds taken
|
|
from its .pdata. ES-DE launches it through the XM6TYPEG and XM6TYPEG-WINDOWS find
|
|
rules with the working directory set to the emulator folder, on Linux under Wine
|
|
or Proton.
|
|
|
|
System files sit in a twenty-entry pointer table at 0x140592350 (IPLROM.DAT
|
|
first, STATE.XM6 last). Filepath::SysFile at 0x1404e76d0 indexes it, copies the
|
|
name, splits it and jumps to 0x1404e7950, which refills drive and directory from
|
|
GetModuleFileNameW, so every system file is read beside xm6g.exe and no
|
|
configured directory takes part. LoadROM inlines the same sequence for index 0
|
|
(0x1404fca8d-0x1404fcb52). Fileio::Open is 0x1404e7390 (CreateFileW) and
|
|
Fileio::Load 0x1404e7200 (ReadFile, success only when the full count is read).
|
|
|
|
LoadROM (0x1404fc990) takes a memory type set by Memory::ApplyCfg
|
|
(0x1404fe390): types 1 to 3 are the base X68000 with no SCSI, internal SCSI or
|
|
external SCSI, 4 is XVI, 5 Compact, 6 X68030 and 7 X68030 with the expansion ROM
|
|
option on. It reads the IPL ROM, then the CG ROM, then the SCSI ROM, and a short
|
|
ReadFile count fails the load, so every min_size below is a floor and a longer
|
|
file loads with its tail ignored. Memory::Init (0x1404fc5d0) calls LoadROM(1) at
|
|
0x1404fc669 and returns 0 on failure. VM::Init failing at 0x140471218 sets error
|
|
state 1 (0x140471221), and the startup handler at 0x1404737a0 then shows string
|
|
47002 or 42002, "XM6 requires two ROM files, IPLROM.DAT file and CGROM.DAT(or
|
|
CGROM.TMP) file", with MB_ICONSTOP and posts WM_CLOSE. Memory::Reset (0x1404fd610)
|
|
loads any other type on demand: type 7 falls back to 6 (0x1404fd682), and any
|
|
failure falls back to type 1 (0x1404fd6bc), so a missing model ROM only loses
|
|
that machine.
|
|
|
|
The options page (0x140428f80) offers XVI, Compact and X68030 only when
|
|
IPLROMXV.DAT, IPLROMCO.DAT and IPLROM30.DAT have GetFileSizeEx exactly 0x20000.
|
|
Three startup checks run from 0x1404738b5 through 0x140472860, each skippable by
|
|
its option. The IPL check (0x140472a99) reads the IOCS date bytes at 0x1000a,
|
|
0x1000c and 0x1000d of the base IPL and warns unless they spell 87/05/07. The CG
|
|
check (0x14047296e) sums and XORs 0x1000 bytes at 0x3a800 of the font and warns
|
|
unless they give 0xec and 0x84. The SCSI check (0x140501290) reads 0x2000 bytes of
|
|
SCSIINROM.DAT (0x14050142d) and SCSIEXROM.DAT (0x140501599) and warns when
|
|
0x1ff8 holds "XM6 ", the stamp of the XM6 Utility replacements (0x14050147c,
|
|
0x1405015da). Each warning dialog (0x140487730) continues on OK and closes XM6 on
|
|
Cancel. No genuine ROM is hashed anywhere in the executable.
|
|
|
|
XM6 Utility, published separately at the same address, synthesises CGROM.TMP
|
|
from the installed Windows fonts and SCSIINROM.DAT or SCSIEXROM.DAT from the
|
|
Human68k version 3.02 disk image HUMAN302.XDF, which it requires at 0x134000
|
|
bytes (XM6Util scsirom.cpp:86-90), and stamps "XM6 " at offset 0x1ff8 and a
|
|
version at 0x1ffc (XM6Util scsirom.cpp:243-245).
|
|
|
|
The Mercury Unit OPN (YMF288) samples its rhythm section from files. The fmgen
|
|
and X68Sound engines read six WAV files named from a table at 0x1405c0090
|
|
(0x1404ed610), and the ymfm engine reads ym2608_adpcm_rom.bin instead
|
|
(0x140574eb0).
|
|
|
|
xm6g.ini and the state file STATE.XM6, the twentieth table entry, are written by
|
|
the program and are not listed below. RTC.DAT and the SRAM files are listed
|
|
because they are battery-backed images with hardware counterparts that preload
|
|
settings when supplied. XM6 TypeG writes them back on exit (SRAM 0x140556498,
|
|
RTC 0x1405321a9), so it creates them when they are absent.
|
|
|
|
files:
|
|
# -- IPL ROMs, one per emulated model, read at 0x20000 bytes and byte-swapped --
|
|
|
|
- name: IPLROM.DAT
|
|
system: sharp-x68000
|
|
required: true
|
|
size: 131072
|
|
validation: [size]
|
|
description: "X68000 boot ROM version 1.0, base models"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: 0x1404fca8d-0x1404fcb52 (table entry 0 joined to the module directory), 0x1404fcb90 (Fileio::Open), 0x1404fcbb7-0x1404fcbc4 (ReadFile 0x20000, short count exits through 0x1404fd159), 0x1404fcc00 (16-bit swap), Memory::Init 0x1404fc5d0 0x1404fc669 (LoadROM(1), failure returns 0), 0x140471221 and 0x1404737a0 (fatal message 47002, WM_CLOSE), options page 0x140428f80 0x14042920a (GetFileSizeEx == 0x20000)"
|
|
note: >-
|
|
Memory types 1 to 3, the first model, ACE, EXPERT, PRO and SUPER. Memory::Init
|
|
loads it first and the program closes when it fails. The IPL check at
|
|
0x140472a99 warns when the IOCS date is not 87/05/07 and does not reject the
|
|
file. The options page requires exactly 131072 bytes, while the loader only
|
|
needs at least that many.
|
|
|
|
- name: IPLROMXV.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
size: 131072
|
|
validation: [size]
|
|
description: "X68000 XVI boot ROM version 1.1"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: jump table 0x1404fd4f4 case 4, 0x1404fcb5a (index 1), 0x1404fcb77 (Filepath::SysFile 0x1404e76d0), 0x1404fcbb7 (ReadFile 0x20000), options page 0x140428f80 0x140429279 (table entry 1), 0x1404293de (GetFileSizeEx == 0x20000)"
|
|
note: >-
|
|
Memory type 4. The options page offers the XVI machine only when this file
|
|
is exactly 131072 bytes, and Memory::Reset falls back to the base machine
|
|
when it fails to load.
|
|
|
|
- name: IPLROMCO.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
size: 131072
|
|
validation: [size]
|
|
description: "X68000 Compact boot ROM version 1.2"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: jump table 0x1404fd4f4 case 5, 0x1404fcb5f (index 2), 0x1404fcb77 (Filepath::SysFile 0x1404e76d0), 0x1404fcbb7 (ReadFile 0x20000), options page 0x140428f80 0x140429468 (table entry 2), 0x1404295cd (GetFileSizeEx == 0x20000)"
|
|
note: >-
|
|
Memory type 5, offered and loaded under the same rules as IPLROMXV.DAT.
|
|
|
|
- name: IPLROM30.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
size: 131072
|
|
validation: [size]
|
|
description: "X68030 boot ROM version 1.3, $FE0000-$FFFFFF half"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: jump table 0x1404fd4f4 case 6, 0x1404fcb66 (index 3), 0x1404fcb77 (Filepath::SysFile 0x1404e76d0), 0x1404fcbb7 (ReadFile 0x20000), options page 0x140428f80 0x140429657 (table entry 3), 0x1404297bc (GetFileSizeEx == 0x20000)"
|
|
note: >-
|
|
Memory type 6, the X68030, paired with ROM30.DAT. Its SCSI ROM is
|
|
ROM30.DAT, so SCSIINROM.DAT and SCSIEXROM.DAT are not read for this
|
|
machine.
|
|
|
|
- name: ROM30.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
min_size: 131072
|
|
validation: [size]
|
|
description: "X68030 boot ROM version 1.3, $FC0000-$FDFFFF half"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: jump table 0x1404fd510 case 6, 0x1404fd1f5 (table entry 12), 0x1404fd304 (Fileio::Open), 0x1404fd327-0x1404fd334 (ReadFile 0x20000), 0x1404fd354-0x1404fd35b (types 6 and 7 fail on a short read)"
|
|
note: >-
|
|
Loaded into the SCSI ROM slot and the only file of that slot that must
|
|
deliver the full 0x20000 bytes. Without it LoadROM(6) fails and
|
|
Memory::Reset falls back to the base machine.
|
|
The copy here is the X68000 Firmware set's ROM30.DAT (SCSIIN, ROM Human 2.x, ROM FLOAT and the SCSI-IOCS binary), read out of an X68030 by the XM6 2.06 utility, which stamps its name at the tail of the image.
|
|
|
|
- name: IPLROM30S.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
min_size: 131072
|
|
validation: [size]
|
|
description: "Expansion boot ROM, $FE0000-$FEFFFF"
|
|
source_ref: "xm6g.exe 3.38 Memory::ApplyCfg 0x1404fe390 0x1404fe3d1-0x1404fe3ff (X68030 with the expansion ROM flag gives type 7), LoadROM 0x1404fc990: jump table 0x1404fd4f4 case 7, 0x1404fcb6d (index 4), 0x1404fcb77 (Filepath::SysFile 0x1404e76d0, table entry 4 at 0x140592370), 0x1404fcbb7 (ReadFile 0x20000), Memory::Reset 0x1404fd610 0x1404fd672-0x1404fd694 (type 7 failure retries type 6)"
|
|
note: >-
|
|
Read in place of IPLROM30.DAT when the X68030 expansion ROM option is on,
|
|
the setting stored as EXTROM. Paired with ROM30S.DAT. When either fails,
|
|
Memory::Reset loads the plain X68030 instead.
|
|
The copy here is XEIJIPLROM30.DAT written by XEiJ 0.26.08.08 with -model=X68030 -iplrom16=on -memory=12 -cgrom=CGROM30.DAT: IPLROM 1.6 of 2025-08-03, the patched IPL its documentation names for the 060turbo, since no dump of the Mankai replacement ROM circulates.
|
|
|
|
- name: ROM30S.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
min_size: 131072
|
|
validation: [size]
|
|
description: "Expansion boot ROM, lower half"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: jump table 0x1404fd510 case 7, 0x1404fd1fe (table entry 13), 0x1404fd304 (Fileio::Open), 0x1404fd327-0x1404fd334 (ReadFile 0x20000), 0x1404fd354-0x1404fd35b (short read fails type 7)"
|
|
note: >-
|
|
The other half of the expansion pair, loaded into the SCSI ROM slot and
|
|
read at the same size as ROM30.DAT.
|
|
The copy here is XEIJROM30.DAT from the same XEiJ run: SCSIINROM 16, ROM Human 2.60, ROM FLOAT 2.03 and ROM Debugger 3.60.
|
|
|
|
# -- CG ROMs, read at 0xc0000 bytes, model specific first then CGROM.DAT then CGROM.TMP --
|
|
|
|
- name: CGROM.DAT
|
|
system: sharp-x68000
|
|
required: true
|
|
min_size: 786432
|
|
validation: [size]
|
|
description: "X68000 character generator ROM"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: 0x1404fcf0e (table entry 5), 0x1404fcfed (Fileio::Open), 0x1404fd013-0x1404fd023 (ReadFile 0xc0000), 0x1404fd03e (falls back to CGROM.TMP), 0x1404fd1a0 (16-bit swap), Memory::Init 0x1404fc5d0 0x1404fc669 (failure returns 0, fatal message at 0x1404737a0), CG check 0x14047296e"
|
|
note: >-
|
|
Supplies the glyphs the X68000 renders, mapped at $F00000-$FBFFFF. Used by
|
|
the base models and as the fallback for every machine whose own CG ROM is
|
|
absent. LoadROM(1) fails when neither this file nor CGROM.TMP loads, and
|
|
the program closes. The startup CG check only warns.
|
|
|
|
- name: CGROMXV.DAT
|
|
system: sharp-x68000
|
|
aliases:
|
|
- CGROM.DAT
|
|
required: false
|
|
min_size: 786432
|
|
validation: [size]
|
|
description: "X68000 XVI character generator ROM"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: 0x1404fcd90-0x1404fcd96 (type 4, table entry 6), 0x1404fce88 (Fileio::Open), 0x1404fceb8-0x1404fcec8 (ReadFile 0xc0000, a short read continues at CGROM.DAT 0x1404fcf0e)"
|
|
note: >-
|
|
Preferred when the XVI machine is selected. CGROM.DAT is used when it is
|
|
missing or short.
|
|
|
|
- name: CGROMCO.DAT
|
|
system: sharp-x68000
|
|
aliases:
|
|
- CGROM.DAT
|
|
required: false
|
|
min_size: 786432
|
|
validation: [size]
|
|
description: "X68000 Compact character generator ROM"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: 0x1404fcd9f-0x1404fcda9 (type 5, table entry 7), 0x1404fce88 (Fileio::Open), 0x1404fceb8-0x1404fcec8 (ReadFile 0xc0000, fallback to CGROM.DAT 0x1404fcf0e)"
|
|
note: >-
|
|
Preferred when the Compact machine is selected, with the same fallback to
|
|
CGROM.DAT.
|
|
|
|
- name: CGROM30.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
min_size: 786432
|
|
validation: [size]
|
|
description: "X68030 character generator ROM"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: 0x1404fcc23-0x1404fcc33 (types 6 and 7, table entry 8), 0x1404fcd12 (Fileio::Open), 0x1404fcd42-0x1404fcd52 (ReadFile 0xc0000, fallback through 0x1404fcd90 to CGROM.DAT)"
|
|
note: >-
|
|
Preferred for the X68030 with or without the expansion ROM, with the same
|
|
fallback to CGROM.DAT.
|
|
|
|
- name: CGROM.TMP
|
|
system: sharp-x68000
|
|
required: false
|
|
unsourceable: "synthesised from the fonts installed on the host, no canonical file"
|
|
min_size: 786432
|
|
validation: [size]
|
|
description: "Synthesised font ROM, fallback when no CG ROM is present"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: 0x1404fd03e (table entry 9, reached only after CGROM.DAT fails), 0x1404fd11d (Fileio::Open, failure exits LoadROM), 0x1404fd147-0x1404fd157 (ReadFile 0xc0000, short read exits LoadROM)"
|
|
note: >-
|
|
Read at the same size, only after CGROM.DAT fails. XM6 Utility builds it
|
|
from the fonts installed on the machine that generated it, so no hash is
|
|
declared. A synthesised font fails the CG sum and XOR check at
|
|
0x14047296e, which raises the startup warning.
|
|
|
|
# -- SCSI ROMs, tried at 0x20000 then 0x2000, external also at 0x1fe0 --
|
|
|
|
- name: SCSIINROM.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
min_size: 8192
|
|
validation: [size]
|
|
description: "Internal SCSI interface ROM, SUPER and later"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: jump table 0x1404fd510 cases 2, 4 and 5, 0x1404fd1ec (table entry 10), 0x1404fd327 (ReadFile 0x20000), 0x1404fd361-0x1404fd391 and 0x1404fd442-0x1404fd44f (type 2 reopens and must read 0x2000), 0x1404fd39a (types 4 and 5 continue without the file), SCSI check 0x140501290 0x14050131e, 0x14050142d, 0x14050147c"
|
|
note: >-
|
|
Read for the internal SCSI option on the base machine (memory type 2),
|
|
where a missing file or a read under 0x2000 bytes fails the load and
|
|
Memory::Reset falls back to the plain base machine. XVI and Compact read it
|
|
with one 0x20000-byte ReadFile whose count is not checked, so a shorter
|
|
file still fills the slot, and without the file those machines start with
|
|
the slot left at 0xff.
|
|
|
|
- name: SCSIEXROM.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
min_size: 8160
|
|
validation: [size]
|
|
description: "External SCSI interface ROM, CZ-6BS1 board"
|
|
source_ref: "xm6g.exe 3.38 LoadROM 0x1404fc990: jump table 0x1404fd510 case 3, 0x1404fd207 (table entry 11), 0x1404fd327 (ReadFile 0x20000), 0x1404fd3a0-0x1404fd3ea (ReadFile 0x2000), 0x1404fd401-0x1404fd44f (retry 0x1fe0 bytes at buffer offset 0x20, a short read fails the load), SCSI check 0x140501290 0x14050148a, 0x140501599, 0x1405015da"
|
|
note: >-
|
|
Read only for the external SCSI option on the base machine (memory type
|
|
3). After 0x20000 and 0x2000 the loader retries at 0x1fe0 bytes into buffer
|
|
offset 0x20, the WinX68k layout, so 8160 is the real floor. Missing, the
|
|
load fails and Memory::Reset falls back to the plain base machine.
|
|
|
|
# -- Battery-backed images, read at startup, written on exit when changed --
|
|
|
|
- name: SRAM.DAT
|
|
unsourceable: "written by the emulator on exit, no canonical file"
|
|
system: sharp-x68000
|
|
required: false
|
|
size: [16384, 65536]
|
|
description: "SRAM image for EXPERT and the other base models"
|
|
source_ref: "xm6g.exe 3.38 SRAM::Init 0x140556320: 0x140556373-0x14055637c (Filepath::SysFile index 14), 0x140556397 (Fileio::Load 0x10000, result ignored), SRAM::Reset 0x140556510 0x14055662a (machine index 0), 0x140556667 (ReadFile 0x10000, count not checked), SRAM cleanup 0x140556420 0x140556498 (writes the configured size in KB)"
|
|
note: >-
|
|
Holds the boot device and memory switch settings for the base models. The
|
|
buffer is filled with 0xff first and up to 64 KB is read with no size
|
|
check. The program writes the configured SRAM size back, 16 KB as standard
|
|
and 64 KB with the 62C256 SRAM option.
|
|
|
|
- name: SRAMXVI.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
unsourceable: "written by the emulator on exit, no canonical file"
|
|
size: [16384, 65536]
|
|
description: "SRAM image for XVI"
|
|
source_ref: "xm6g.exe 3.38 SRAM::Reset 0x140556510: 0x1405565f3-0x140556623 (machine index 1 gives Filepath::SysFile index 15), 0x140556632 (Filepath::SysFile 0x1404e76d0), 0x140556643 (Fileio::Open), 0x140556667 (ReadFile 0x10000)"
|
|
note: >-
|
|
Per-model SRAM introduced by XM6 TypeG, which keeps one image per machine
|
|
instead of the single SRAM.DAT of XM6 v2.06.
|
|
|
|
- name: SRAMCMP.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
unsourceable: "written by the emulator on exit, no canonical file"
|
|
size: [16384, 65536]
|
|
description: "SRAM image for Compact"
|
|
source_ref: "xm6g.exe 3.38 SRAM::Reset 0x140556510: 0x14055661c (machine index 2 gives Filepath::SysFile index 16), 0x140556632 (Filepath::SysFile 0x1404e76d0), 0x140556643 (Fileio::Open), 0x140556667 (ReadFile 0x10000)"
|
|
note: >-
|
|
Read when the Compact machine is selected.
|
|
|
|
- name: SRAM030.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
unsourceable: "written by the emulator on exit, no canonical file"
|
|
size: [16384, 65536]
|
|
description: "SRAM image for X68030"
|
|
source_ref: "xm6g.exe 3.38 SRAM::Reset 0x140556510: 0x140556615 (machine index 3 gives Filepath::SysFile index 17), 0x140556632 (Filepath::SysFile 0x1404e76d0), 0x140556643 (Fileio::Open), 0x140556667 (ReadFile 0x10000)"
|
|
note: >-
|
|
Read when the X68030 machine class is selected, with or without the
|
|
expansion ROM.
|
|
|
|
- name: RTC.DAT
|
|
system: sharp-x68000
|
|
required: false
|
|
unsourceable: "written by the emulator on exit, no canonical file"
|
|
size: 120
|
|
description: "RTC alarm settings for timer start"
|
|
source_ref: "xm6g.exe 3.38 RTC::Init 0x140531ee0: 0x14053210b-0x140532117 (Filepath::SysFile index 18), 0x140532132 (Fileio::Load 0x78 bytes, result ignored), RTC cleanup 0x140532170 0x1405321a9 (writes 0x78 bytes)"
|
|
note: >-
|
|
Alarm registers of the battery-backed clock, applying to every machine.
|
|
The program reads and writes 120 bytes and runs with defaults when the file
|
|
is absent.
|
|
|
|
# -- Mercury Unit rhythm samples, read by the OPN (YMF288) section --
|
|
|
|
- name: ym2608_adpcm_rom.bin
|
|
system: sharp-x68000
|
|
required: false
|
|
size: 8192
|
|
description: "YM2608 ADPCM-A rhythm ROM, ymfm engine"
|
|
source_ref: "xm6g.exe 3.38 0x140574eb0: 0x140574fac-0x140574fbe (clears the 0x2000-byte buffer), 0x140574fdb-0x140574fec (wcscat_s of the name onto the directory argument), 0x14057506e (Fileio::Open, failure skips the read), 0x140575095 (ReadFile 0x2000, count not checked)"
|
|
note: >-
|
|
Rhythm source for the Mercury Unit OPN when the FM engine is ymfm. When it
|
|
is absent the buffer stays zeroed, the rhythm section is silent and the
|
|
emulator runs.
|
|
|
|
- name: 2608_BD.WAV
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "Mercury Unit rhythm sample, bass drum"
|
|
source_ref: "xm6g.exe 3.38 0x1404ed610: 0x1404ed677 (name table 0x1405c0090 entry 0), 0x1404ed6fa-0x1404ed76d (directory + 2608_ + name + .WAV), 0x1404ed7af (CreateFileW), 0x1404ed7cf-0x1404ed7d8 (ERROR_FILE_NOT_FOUND handled), 0x1404ed950 (ReadFile)"
|
|
note: >-
|
|
One of the six rhythm samples the fmgen and X68Sound engines read for the
|
|
Mercury Unit OPN. A missing file is handled through ERROR_FILE_NOT_FOUND
|
|
and leaves that instrument silent.
|
|
|
|
- name: 2608_SD.WAV
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "Mercury Unit rhythm sample, snare drum"
|
|
source_ref: "xm6g.exe 3.38 0x1404ed610: name table 0x1405c0090 entry 1, 0x1404ed6fa-0x1404ed76d (name built), 0x1404ed7af (CreateFileW)"
|
|
|
|
- name: 2608_TOP.WAV
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "Mercury Unit rhythm sample, top cymbal"
|
|
source_ref: "xm6g.exe 3.38 0x1404ed610: name table 0x1405c0090 entry 2, 0x1404ed6fa-0x1404ed76d (name built), 0x1404ed7af (CreateFileW)"
|
|
|
|
- name: 2608_HH.WAV
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "Mercury Unit rhythm sample, hi-hat"
|
|
source_ref: "xm6g.exe 3.38 0x1404ed610: name table 0x1405c0090 entry 3, 0x1404ed6fa-0x1404ed76d (name built), 0x1404ed7af (CreateFileW)"
|
|
|
|
- name: 2608_TOM.WAV
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "Mercury Unit rhythm sample, tom-tom"
|
|
source_ref: "xm6g.exe 3.38 0x1404ed610: name table 0x1405c0090 entry 4, 0x1404ed6fa-0x1404ed76d (name built), 0x1404ed7af (CreateFileW)"
|
|
|
|
- name: 2608_RIM.WAV
|
|
system: sharp-x68000
|
|
aliases:
|
|
- 2608_RYM.WAV
|
|
required: false
|
|
description: "Mercury Unit rhythm sample, rim shot"
|
|
source_ref: "xm6g.exe 3.38 0x1404ed610: name table 0x1405c0090 entry 5, 0x1404ed7af (CreateFileW of 2608_RIM.WAV), 0x1404ed808 (entry 5 not found), 0x1404ed841-0x1404ed8bf (CreateFileW of 2608_RYM.WAV)"
|
|
note: >-
|
|
Last of the six. This entry alone has a second accepted name,
|
|
2608_RYM.WAV, opened when 2608_RIM.WAV is not found.
|
|
|
|
# -- Libraries looked up by name at runtime, absent from the import directory --
|
|
|
|
- name: X68Sound.dll
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "FM synthesis engine by m_puusan"
|
|
source_ref: "xm6g.exe 3.38 0x140488a50: 0x140488df4-0x140488dfb (LoadLibraryW), 0x140488e0d-0x140488e65 (absent: stub entry points), 0x140488e6a-0x140488e74 (GetProcAddress X68Sound_Reset and the rest)"
|
|
note: >-
|
|
One of the three FM engines, alongside the built-in fmgen and ymfm. Not
|
|
shipped in the archive. Without it the engine object is wired to internal
|
|
stubs and the emulator continues.
|
|
|
|
- name: c86ctl.dll
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "Control library for external OPM hardware"
|
|
source_ref: "xm6g.exe 3.38 0x1404b2d60: 0x1404b2da3-0x1404b2daa (GetFileVersionInfoSizeW, absent exits at 0x1404b3057), 0x1404b2e62-0x1404b2e69 (LoadLibraryW), 0x1404b2e89 (GetProcAddress CreateInstance)"
|
|
note: >-
|
|
Loaded by name to drive a real YM2151 through a C86BOX class device
|
|
instead of software synthesis. The executable reads its file version
|
|
before loading it.
|
|
|
|
- name: pcidebug.dll
|
|
system: sharp-x68000
|
|
required: false
|
|
description: "PCI bus bridge library, used to reach a ROMEO sound board"
|
|
source_ref: "xm6g.exe 3.38 0x1404fa2e0: 0x1404fa2f5 (FreeLibrary of the previous handle), 0x1404fa31a-0x1404fa344 (LoadLibraryW), 0x1404fa354 (absent skips the setup)"
|
|
note: >-
|
|
Loaded on demand and freed again. Absent, the ROMEO output is unavailable
|
|
and the emulator continues.
|
|
|
|
- name: SOUND Canvas VA.dll
|
|
system: sharp-x68000
|
|
required: false
|
|
path: "%ProgramFiles%/Roland/Sound Canvas VA/SOUND Canvas VA.dll"
|
|
description: "Roland Sound Canvas VA plugin used as MIDI output"
|
|
source_ref: "xm6g.exe 3.38 0x140484170: 0x140484181-0x14048418e (empty VstSCVA setting gives the default path), 0x14048421e (ExpandEnvironmentStringsW), 0x1404823d0 0x14048249e (PathFileExistsW), 0x14048258a and 0x140482891 (VST host 0x1404aea40), 0x1404afd30 0x1404afd6c (LoadLibraryW)"
|
|
note: >-
|
|
Hosted as the MIDI output device when the VSTi option is selected. The
|
|
path defaults to the Roland installation directory and the setting is
|
|
stored as VstSCVA.
|
|
The plugin does not synthesise on its own: the Roland installer places SCCore.dll and eleven data files (GM, GM2 and SC-VSC .drk, .tnf and .drf sets, parameter1.dat to parameter3.dat) beside it, and the DLL loads them from its own directory.
|