Description
The ROM 3GO.nes (三国志中原之霸者 / Sangokushi 1) displays with garbled graphics, misaligned tiles, and incorrect colors when loaded in FCEUX. The same ROM runs correctly in SMynes on Windows.
Root Cause
After analyzing the ROM, I found that the iNES header incorrectly declares Mapper 0 (NROM), but the actual cartridge hardware is Mapper 252 (BNROM-like with IRQ). Since Mapper 0 has no bank switching, the 256KB PRG ROM is mapped incorrectly, causing all the display issues.
ROM Information
| Property |
Value |
| Game |
三国志中原之霸者 (Sangokushi / 3GO) |
| Filename |
3GO.nes |
| CRC32 |
F3C85DC3 |
| MD5 |
50a88a24a6b345b8d79de0573d04d3ac |
| SHA1 |
0f47f98e2da7adefe1a244fa844cae9181384fed |
| File size |
393,232 bytes |
| PRG ROM |
16 × 16KB = 256KB |
| CHR ROM |
16 × 8KB = 128KB |
| Mirroring |
Vertical |
| Battery |
Yes |
| Header mapper |
0 (NROM) ← incorrect |
| Actual mapper |
252 |
Header Hex Dump
Flags6 = 0x03 (vertical mirroring + battery), Flags7 = 0x00 → mapper = 0
Why FCEUX Doesn't Detect Mapper 252
Looking at the FCEUX source code:
src/boards/252.cpp — Mapper 252 implementation exists and works
src/ines.cpp line 710 — The board database has {"SAN GUO ZHI PIRATE", 252, Mapper252_Init}, but this matching relies on NES 2.0 board name strings
src/ines-correct.h — This ROM's CRC32 (F3C85DC3) is not in the CRC correction database
- The ROM does not contain the string "SAN GUO ZHI PIRATE" internally, so board name matching also fails
As a result, FCEUX falls back to the header-declared Mapper 0, which has no bank switching → garbled output.
Why SMynes Works
SMynes (Windows-only emulator) has its own internal ROM database that correctly identifies this ROM as Mapper 252, bypassing the incorrect header.
Possible Fix
Add this ROM's CRC32 to the ines-correct.h correction database so FCEUX can auto-detect the correct mapper, something like:
{0xF3C85DC3, 252, -1}, /* 3GO - Sangokushi / 三国志中原之霸者 */
Environment
FCEUX version: 2.6.6 (also tested 2.6.0 source)
OS: macOS 14 (Apple Silicon), homebrew install
Works in: SMynes (Windows)
Screenshots
(I can provide screenshots of the garbled display if needed)
Thank you for maintaining FCEUX! Any help would be greatly appreciated.
归档.zip
Description
The ROM 3GO.nes (三国志中原之霸者 / Sangokushi 1) displays with garbled graphics, misaligned tiles, and incorrect colors when loaded in FCEUX. The same ROM runs correctly in SMynes on Windows.
Root Cause
After analyzing the ROM, I found that the iNES header incorrectly declares Mapper 0 (NROM), but the actual cartridge hardware is Mapper 252 (BNROM-like with IRQ). Since Mapper 0 has no bank switching, the 256KB PRG ROM is mapped incorrectly, causing all the display issues.
ROM Information
F3C85DC350a88a24a6b345b8d79de0573d04d3ac0f47f98e2da7adefe1a244fa844cae9181384fedHeader Hex Dump
Flags6 =
0x03(vertical mirroring + battery), Flags7 =0x00→ mapper = 0Why FCEUX Doesn't Detect Mapper 252
Looking at the FCEUX source code:
src/boards/252.cpp— Mapper 252 implementation exists and workssrc/ines.cppline 710 — The board database has{"SAN GUO ZHI PIRATE", 252, Mapper252_Init}, but this matching relies on NES 2.0 board name stringssrc/ines-correct.h— This ROM's CRC32 (F3C85DC3) is not in the CRC correction databaseAs a result, FCEUX falls back to the header-declared Mapper 0, which has no bank switching → garbled output.
Why SMynes Works
SMynes (Windows-only emulator) has its own internal ROM database that correctly identifies this ROM as Mapper 252, bypassing the incorrect header.
Possible Fix
Add this ROM's CRC32 to the
ines-correct.hcorrection database so FCEUX can auto-detect the correct mapper, something like:{0xF3C85DC3, 252, -1}, /* 3GO - Sangokushi / 三国志中原之霸者 */
Environment
FCEUX version: 2.6.6 (also tested 2.6.0 source)
OS: macOS 14 (Apple Silicon), homebrew install
Works in: SMynes (Windows)
Screenshots
(I can provide screenshots of the garbled display if needed)
Thank you for maintaining FCEUX! Any help would be greatly appreciated.
归档.zip