mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-23 20:29:06 -05:00
The pins moved past a newer release: dice v0.4.3, geargrafx 1.8.4, gearlynx 1.2.35, izapple2 v2.5.0, lightspark 0.10.0 (its CMake version at the pin). The drhelius cores take their version from git describe, dice and izapple2 carry none, so the release tag is the version.
193 lines
9.3 KiB
YAML
193 lines
9.3 KiB
YAML
emulator: Geargrafx
|
|
type: libretro
|
|
core_classification: official_port
|
|
source: "https://github.com/drhelius/Geargrafx"
|
|
upstream: "https://github.com/drhelius/Geargrafx"
|
|
profiled_date: "2026-10-04"
|
|
source_commit: "57c257dda25f441fff3c63a63bbc4ba7cbb713e3"
|
|
core_version: "1.8.4"
|
|
display_name: "NEC - PC Engine / SuperGrafx / CD (Geargrafx)"
|
|
cores:
|
|
- geargrafx
|
|
systems:
|
|
- nec-pc-engine
|
|
- nec-supergrafx
|
|
- nec-pc-engine-cd
|
|
- laseractive
|
|
|
|
notes: |
|
|
Geargrafx is a PC Engine / TurboGrafx-16 / SuperGrafx / CD-ROM emulator by
|
|
Ignacio Sanchez (drhelius). HuCard games run without any external file.
|
|
|
|
CD-ROM content (cue, chd, mmi) needs a System Card image from the frontend
|
|
system directory. load_bios() in platforms/libretro/libretro.cpp:721-762
|
|
picks the file name from the core option geargrafx_cdrom_bios
|
|
(platforms/libretro/libretro.cpp:1605-1628): System Card 1 loads
|
|
syscard1.pce, System Card 2 loads syscard2.pce, System Card 3 (the default)
|
|
and Force Game Express load syscard3.pce. The older values Auto and Game
|
|
Express are still accepted and map to the same. The path is
|
|
"{system_directory}/{name}" (platforms/libretro/libretro.cpp:748). When the
|
|
card is missing the core posts "CD-ROM BIOS not found" and continues
|
|
(platforms/libretro/libretro.cpp:749-758). gexpress.pce is then always
|
|
attempted from the same directory (platforms/libretro/libretro.cpp:760-761).
|
|
load_bios() runs from retro_load_game() for CD content only
|
|
(platforms/libretro/libretro.cpp:520-521) and again on retro_reset() when a
|
|
CD is loaded (platforms/libretro/libretro.cpp:357-358). With the libretro
|
|
VFS the file goes through load_bios_file() into LoadBiosFromBuffer(),
|
|
otherwise through Media::LoadBios() (platforms/libretro/libretro.cpp:684-719,
|
|
src/media.cpp:457-500).
|
|
|
|
Media::LoadBiosData() (src/media.cpp:671-714) strips a 512-byte header when
|
|
the size is the expected size plus 512, then rejects any image whose size
|
|
is not GG_BIOS_SYSCARD_SIZE (0x40000) or GG_BIOS_GAME_EXPRESS_SIZE (0x8000)
|
|
(src/defines.h:51-52). CRC32 is computed over the accepted image.
|
|
GatherBIOSInfoFromDB() (src/media.cpp:1052-1086) looks the CRC up in
|
|
k_game_database entries flagged GG_GAMEDB_BIOS_SYSCARD or
|
|
GG_GAMEDB_BIOS_GAME_EXPRESS (src/game_db.h:48-56). An unknown CRC marks the
|
|
image "Unknown" and invalid but it is still used.
|
|
|
|
For CD content the ROM banks map onto the System Card buffer, or onto the
|
|
Game Express buffer when the disc is a Game Express title
|
|
(src/media.cpp:1119-1128). A Game Express disc is detected by its CRC in
|
|
game_db.h (GG_GAMEDB_GAME_EXPRESS, src/media.cpp:1018-1022), named by the
|
|
card field of an MMI image (src/media.cpp:846-848) or forced by the option
|
|
(src/media.cpp:860-864). With no card loaded the buffer is zeros and the CD
|
|
does not boot. Arcade Card titles are also detected from game_db.h and run
|
|
on the selected System Card.
|
|
|
|
MMI content is a LaserActive LD-ROM2 image. retro_load_game() also calls
|
|
load_pac_bios() for it (platforms/libretro/libretro.cpp:523-524), which
|
|
reads the NEC PAC firmware from the system directory according to the core
|
|
option geargrafx_laseractive_region (platforms/libretro/libretro.cpp:1640-1651):
|
|
Japan loads pac-n1.bin and falls back to pce-lp1.bin, US loads pac-n10.bin,
|
|
Auto (the default) loads both regions
|
|
(platforms/libretro/libretro.cpp:787-809). Media::LoadPacBiosData()
|
|
(src/media.cpp:579-641) accepts 0x80000 bytes (GG_BIOS_LASERACTIVE_SIZE,
|
|
src/defines.h:53), with or without a 512-byte header, and compares the
|
|
CRC32 with the values hardcoded for the region. An unknown CRC is logged
|
|
and the image is still used. SelectPacBios() (src/media.cpp:643-669) follows
|
|
the option, then the regionCode of the MMI image, then whichever region is
|
|
loaded. An MMI image that names no card maps the PAC firmware
|
|
(src/media.cpp:1119-1128), and one that names a card uses the System Card or
|
|
Game Express buffer. retro_load_game() fails when the firmware the MMI
|
|
image needs is not loaded (platforms/libretro/libretro.cpp:546-561).
|
|
|
|
Backup RAM is exposed through RETRO_MEMORY_SAVE_RAM
|
|
(platforms/libretro/libretro.cpp:644-652) and saved by the frontend. A
|
|
connected Memory Base 128 is persisted by the core itself as
|
|
geargrafx_mb128.sav in the frontend save directory
|
|
(platforms/libretro/libretro.cpp:811-891). Both are state the core writes,
|
|
not files a user obtains.
|
|
|
|
files:
|
|
- name: "syscard3.pce"
|
|
system: nec-pc-engine-cd
|
|
description: "Super CD-ROM System Card 3.0"
|
|
size: [262144, 262656]
|
|
required: true
|
|
crc32: ["6d9a73ef", "0ecea1f3", "2b5b75fe"]
|
|
validation: [size]
|
|
source_ref: "platforms/libretro/libretro.cpp:726, platforms/libretro/libretro.cpp:738-743, platforms/libretro/libretro.cpp:748-758, src/media.cpp:671-714, src/defines.h:51, src/game_db.h:51-52, src/game_db.h:54"
|
|
note: >
|
|
Loaded for the default option value System Card 3 and for Force Game
|
|
Express. game_db.h accepts three images under this name: Japan
|
|
(CRC32 6D9A73EF), the Japan NuFont Hack (CRC32 0ECEA1F3, syscard3.pce
|
|
patched with xlateFont-JPN.ips from dshadoff/SYSCARD_Translatefont)
|
|
and USA (CRC32 2B5B75FE).
|
|
|
|
- name: "syscard2.pce"
|
|
system: nec-pc-engine-cd
|
|
description: "CD-ROM System Card 2.0 / 2.1"
|
|
size: [262144, 262656]
|
|
required: false
|
|
crc32: ["52520bc6", "283b74e0", "ff2a5ec3"]
|
|
validation: [size]
|
|
source_ref: "platforms/libretro/libretro.cpp:725, platforms/libretro/libretro.cpp:735-736, src/media.cpp:671-714, src/defines.h:51, src/game_db.h:49-50, src/game_db.h:53"
|
|
note: >
|
|
Loaded when geargrafx_cdrom_bios is System Card 2. game_db.h accepts
|
|
v2.0 Japan (CRC32 52520BC6), v2.1 Japan (CRC32 283B74E0) and USA
|
|
(CRC32 FF2A5EC3).
|
|
|
|
- name: "syscard1.pce"
|
|
system: nec-pc-engine-cd
|
|
description: "CD-ROM System Card 1.0 (Japan)"
|
|
size: [262144, 262656]
|
|
crc32: "3F9F95A4"
|
|
required: false
|
|
validation: [size]
|
|
source_ref: "platforms/libretro/libretro.cpp:724, platforms/libretro/libretro.cpp:732-733, src/media.cpp:671-714, src/defines.h:51, src/game_db.h:48"
|
|
note: "Loaded when geargrafx_cdrom_bios is System Card 1."
|
|
|
|
- name: "gexpress.pce"
|
|
system: nec-pc-engine-cd
|
|
description: "Games Express CD Card"
|
|
size: [32768, 33280]
|
|
required: false
|
|
crc32: ["51a12d90", "16aaf05a"]
|
|
validation: [size]
|
|
source_ref: "platforms/libretro/libretro.cpp:727, platforms/libretro/libretro.cpp:760-761, src/media.cpp:671-714, src/media.cpp:846-848, src/media.cpp:860-864, src/media.cpp:1018-1022, src/defines.h:52, src/game_db.h:55-56"
|
|
note: >
|
|
Always attempted after the System Card, used for discs flagged
|
|
GG_GAMEDB_GAME_EXPRESS in game_db.h, for MMI images whose card is
|
|
Games Express, or when the option is Force Game Express. game_db.h
|
|
accepts the Blue Version (CRC32 51A12D90) and the Green Version
|
|
(CRC32 16AAF05A). Both CRCs are of 32768-byte images: the 16384-byte
|
|
Green dump (CRC32 20E0A364) is rejected on size and matches 16AAF05A
|
|
once zero-padded to 32768 bytes.
|
|
|
|
- name: "pac-n1.bin"
|
|
system: laseractive
|
|
description: "LaserActive NEC PAC-N1 v1.02 (Japan)"
|
|
size: [524288, 524800]
|
|
crc32: "A8CB694C"
|
|
region: [japan]
|
|
required: true
|
|
validation: [size]
|
|
source_ref: "platforms/libretro/libretro.cpp:509, platforms/libretro/libretro.cpp:523-524, platforms/libretro/libretro.cpp:792-796, platforms/libretro/libretro.cpp:546-561, src/media.cpp:579-641, src/defines.h:53"
|
|
note: >
|
|
Japanese PAC firmware, read for MMI content when
|
|
geargrafx_laseractive_region is Auto or Japan. The Japanese slot
|
|
accepts the PAC-N1 and PCE-LP1 images under either file name.
|
|
|
|
- name: "pce-lp1.bin"
|
|
system: laseractive
|
|
description: "LaserActive NEC PCE-LP1 v1.02 (Japan)"
|
|
size: [524288, 524800]
|
|
crc32: "76116A02"
|
|
region: [japan]
|
|
required: false
|
|
validation: [size]
|
|
source_ref: "platforms/libretro/libretro.cpp:797-801, src/media.cpp:579-641, src/defines.h:53"
|
|
note: "Read only when pac-n1.bin did not load."
|
|
|
|
- name: "pac-n10.bin"
|
|
system: laseractive
|
|
description: "LaserActive NEC PAC-N10 v1.02 (US)"
|
|
size: [524288, 524800]
|
|
crc32: "01223DD5"
|
|
region: [north-america]
|
|
required: true
|
|
validation: [size]
|
|
source_ref: "platforms/libretro/libretro.cpp:509, platforms/libretro/libretro.cpp:523-524, platforms/libretro/libretro.cpp:804-808, platforms/libretro/libretro.cpp:546-561, src/media.cpp:579-641, src/defines.h:53"
|
|
note: >
|
|
US PAC firmware, read for MMI content when
|
|
geargrafx_laseractive_region is Auto or US.
|
|
|
|
valid_bios_crc32:
|
|
syscard:
|
|
- { crc32: "3F9F95A4", name: "CD-ROM System Card 1.0 (J)" }
|
|
- { crc32: "52520BC6", name: "CD-ROM System Card 2.0 (J)" }
|
|
- { crc32: "283B74E0", name: "CD-ROM System Card 2.1 (J)" }
|
|
- { crc32: "6D9A73EF", name: "Super CD-ROM System 3.0 (J)" }
|
|
- { crc32: "0ECEA1F3", name: "Super CD-ROM System 3.0 (J) NuFont Hack" }
|
|
- { crc32: "FF2A5EC3", name: "TurboGrafx CD System Card 2.0 (USA)" }
|
|
- { crc32: "2B5B75FE", name: "TurboGrafx CD Super System 3.0 (USA)" }
|
|
game_express:
|
|
- { crc32: "51A12D90", name: "Games Express CD Card Blue Version (J)" }
|
|
- { crc32: "16AAF05A", name: "Games Express CD Card Green Version (J)" }
|
|
laseractive_japan:
|
|
- { crc32: "A8CB694C", name: "PAC-N1 v1.02" }
|
|
- { crc32: "76116A02", name: "PCE-LP1 v1.02" }
|
|
laseractive_us:
|
|
- { crc32: "01223DD5", name: "PAC-N10 v1.02" }
|