mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-24 04:39:06 -05:00
Every cited block was read again at HEAD: no ref left to review, no file name or hash literal added to a cited file since the pin (--detect-new-files --watch-hashes), refs recaled with their pins. Profiles built by a platform at a fixed commit, or whose bump would leave prose under an older pin, stay where they were.
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.1"
|
|
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" }
|