fix: split the np2 V98 font from font.bmp

NP2kai and meowPC98 read font.bmp (PC-98 bitmap) and FONT.ROM (V98) as
separate files, each through its own reader (NP2kai font/font.c:192-195,
meowPC98 font/font.c:180-181). The V98 names hung on font.bmp as aliases
let a collection without font.bmp serve the PC-88 2 KB font.rom there.
FONT.ROM is now its own entry, at least 0x46800 bytes (fontv98.c:8, 51).

Manifests: np2/FONT.ROM and np2kai/FONT.ROM are added where the platform
did not declare them, served by the V98 font bios/NEC/PC-98/font.rom.
This commit is contained in:
Abdessamad Derraz committed 2026-11-05 19:33:04 +01:00
1 parent 3b0112001e
commit 439b2cdaba
16 files changed
+406 -60

No files matched your search

+4 -4
View File
@@ -1,6 +1,6 @@
{ {
"schema_version": 1, "schema_version": 1,
"generated_at": "2026-11-05T14:56:18Z", "generated_at": "2026-11-05T18:31:29Z",
"total_files": 19944, "total_files": 19944,
"total_size": 16892646538, "total_size": 16892646538,
"bios_dir": "bios", "bios_dir": "bios",
@@ -281984,12 +281984,12 @@
"Parallel.rom": [ "Parallel.rom": [
"c75c751589cbcc1ad4ab4f63676af7abadd86f5b" "c75c751589cbcc1ad4ab4f63676af7abadd86f5b"
], ],
"POCKSTAT.ROM": [
"6ae880493ddde880827d1e9f08e9cb2c38f9f2ec"
],
"FONT.BMP": [ "FONT.BMP": [
"b4f14e58030ed40fff2dc312b58ea4440bdf8cc5" "b4f14e58030ed40fff2dc312b58ea4440bdf8cc5"
], ],
"POCKSTAT.ROM": [
"6ae880493ddde880827d1e9f08e9cb2c38f9f2ec"
],
"bank3.bin": [ "bank3.bin": [
"0877ffb4b4d1c18283468be3579b72ed8c22e3ac" "0877ffb4b4d1c18283468be3579b72ed8c22e3ac"
], ],
+14 -4
View File
@@ -77,12 +77,22 @@ files:
path: "np2/font.bmp" path: "np2/font.bmp"
required: false required: false
hle_fallback: true hle_fallback: true
aliases: ["FONT.ROM"] aliases: ["FONT.BMP"]
note: > note: >
PC-98 font bitmap (288 KB). Required for correct Japanese kanji display. PC-98 font bitmap. Required for correct Japanese kanji display.
Without this, only basic ASCII renders using built-in 8x8 data. Without this, only basic ASCII renders using built-in 8x8 data.
FONT.ROM (V98 format) is also accepted. source_ref: "libretro/libretro.c:872, font/font.c:74-104, 180, font/fontdata.c:11"
source_ref: "libretro/libretro.c:872, font/font.c:113, font/fontdata.c:12"
- name: "FONT.ROM"
path: "np2/FONT.ROM"
required: false
hle_fallback: true
min_size: 288768
validation: [size]
note: >
V98 font, read after font.bmp and filling only the glyphs it left
out. fontv98_read refuses a file shorter than 0x46800 bytes.
source_ref: "libretro/libretro.c:196, 868, font/font.c:181, font/fontdata.c:12, font/fontv98.c:8, 45-51"
# -- Sound BIOS ROM -- # -- Sound BIOS ROM --
# Loaded by soundrom_load() via loadsoundrom() in sound/soundrom.c:21-55. # Loaded by soundrom_load() via loadsoundrom() in sound/soundrom.c:21-55.
+14 -3
View File
@@ -66,12 +66,23 @@ files:
path: "np2kai/font.bmp" path: "np2kai/font.bmp"
required: false required: false
hle_fallback: true hle_fallback: true
aliases: ["FONT.ROM", "font.rom", "FONT.BMP"] aliases: ["FONT.BMP"]
note: > note: >
PC-98 font bitmap. Required for correct Japanese kanji display. PC-98 font bitmap. Required for correct Japanese kanji display.
Without this, only basic ASCII renders using built-in 8x8 data. Without this, only basic ASCII renders using built-in 8x8 data.
FONT.ROM (V98 format) is also accepted. source_ref: "source sdl/libretro/libretro.c:1830, source font/font.c:77-116, 192-193, source font/fontdata.c:11-12"
source_ref: "source sdl/libretro/libretro.c:1830, source font/font.c:86-125, upstream font/fontdata.c:11"
- name: "FONT.ROM"
path: "np2kai/FONT.ROM"
required: false
hle_fallback: true
min_size: 288768
validation: [size]
aliases: ["font.rom"]
note: >
V98 font, read after font.bmp and filling only the glyphs it left
out. fontv98_read refuses a file shorter than 0x46800 bytes.
source_ref: "source sdl/libretro/libretro.c:1830-1831, source font/font.c:194-195, source font/fontdata.c:13-14, source font/fontv98.c:8, 45-51"
# -- Sound BIOS ROM -- # -- Sound BIOS ROM --
# Loaded by soundrom_load() in soundrom.c:93-106 via loadsoundrom(). # Loaded by soundrom_load() in soundrom.c:93-106 via loadsoundrom().
+25 -5
View File
@@ -6,7 +6,7 @@
"platform": "amberelec", "platform": "amberelec",
"display_name": "AmberELEC", "display_name": "AmberELEC",
"version": "prerelease-20261019_1835", "version": "prerelease-20261019_1835",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "", "base_destination": "",
"detect": [ "detect": [
{ {
@@ -29,10 +29,10 @@
} }
], ],
"standalone_copies": [], "standalone_copies": [],
"total_files": 4956, "total_files": 4958,
"total_size": 5347524625, "total_size": 5348102161,
"pack_files": 5150, "pack_files": 5152,
"pack_size": 5347624969, "pack_size": 5348202505,
"total_omitted": 285, "total_omitted": 285,
"omitted_files": [ "omitted_files": [
{ {
@@ -63632,6 +63632,16 @@
"nekop2" "nekop2"
] ]
}, },
{
"dest": "bios/np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
]
},
{ {
"dest": "bios/np2/sound.rom", "dest": "bios/np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
@@ -63869,6 +63879,16 @@
"np2kai" "np2kai"
] ]
}, },
{
"dest": "bios/np2kai/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
},
{ {
"dest": "bios/np2kai/sound.rom", "dest": "bios/np2kai/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+12 -1
View File
@@ -6,7 +6,7 @@
"platform": "batocera", "platform": "batocera",
"display_name": "Batocera", "display_name": "Batocera",
"version": "43.1", "version": "43.1",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "bios", "base_destination": "bios",
"detect": [ "detect": [
{ {
@@ -10343,6 +10343,17 @@
"cores": null, "cores": null,
"systems": [ "systems": [
"nec-pc-98" "nec-pc-98"
],
"alternatives": [
{
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
}
] ]
}, },
{ {
+25 -5
View File
@@ -6,7 +6,7 @@
"platform": "emudeck", "platform": "emudeck",
"display_name": "EmuDeck", "display_name": "EmuDeck",
"version": "2.7EA", "version": "2.7EA",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "bios", "base_destination": "bios",
"detect": [ "detect": [
{ {
@@ -305,10 +305,10 @@
} }
} }
], ],
"total_files": 8430, "total_files": 8432,
"total_size": 7887249450, "total_size": 7887826986,
"pack_files": 8432, "pack_files": 8434,
"pack_size": 7887249450, "pack_size": 7887826986,
"total_omitted": 37, "total_omitted": 37,
"omitted_files": [ "omitted_files": [
{ {
@@ -89584,6 +89584,16 @@
"nekop2" "nekop2"
] ]
}, },
{
"dest": "np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
]
},
{ {
"dest": "np2/sound.rom", "dest": "np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
@@ -89863,6 +89873,16 @@
"np2kai" "np2kai"
] ]
}, },
{
"dest": "np2kai/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
},
{ {
"dest": "np2kai/sound.rom", "dest": "np2kai/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+25 -5
View File
@@ -6,7 +6,7 @@
"platform": "emuelec", "platform": "emuelec",
"display_name": "EmuELEC", "display_name": "EmuELEC",
"version": "4.8", "version": "4.8",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "", "base_destination": "",
"detect": [ "detect": [
{ {
@@ -20,10 +20,10 @@
} }
], ],
"standalone_copies": [], "standalone_copies": [],
"total_files": 5295, "total_files": 5297,
"total_size": 4142496885, "total_size": 4143074421,
"pack_files": 5489, "pack_files": 5491,
"pack_size": 4142597229, "pack_size": 4143174765,
"total_omitted": 389, "total_omitted": 389,
"omitted_files": [ "omitted_files": [
{ {
@@ -67528,6 +67528,16 @@
"nekop2" "nekop2"
] ]
}, },
{
"dest": "bios/np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
]
},
{ {
"dest": "bios/np2/sound.rom", "dest": "bios/np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
@@ -67765,6 +67775,16 @@
"np2kai" "np2kai"
] ]
}, },
{
"dest": "bios/np2kai/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
},
{ {
"dest": "bios/np2kai/sound.rom", "dest": "bios/np2kai/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+12 -1
View File
@@ -6,7 +6,7 @@
"platform": "knulli", "platform": "knulli",
"display_name": "KNULLI", "display_name": "KNULLI",
"version": "20260511", "version": "20260511",
"generated": "2026-11-05T12:13:24Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "bios", "base_destination": "bios",
"detect": [ "detect": [
{ {
@@ -9186,6 +9186,17 @@
"cores": null, "cores": null,
"systems": [ "systems": [
"nec-pc-98" "nec-pc-98"
],
"alternatives": [
{
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
}
] ]
}, },
{ {
+29 -5
View File
@@ -6,7 +6,7 @@
"platform": "lakka", "platform": "lakka",
"display_name": "Lakka", "display_name": "Lakka",
"version": "v6.1", "version": "v6.1",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "system", "base_destination": "system",
"detect": [ "detect": [
{ {
@@ -20,10 +20,10 @@
} }
], ],
"standalone_copies": [], "standalone_copies": [],
"total_files": 8342, "total_files": 8343,
"total_size": 7039319693, "total_size": 7039608461,
"pack_files": 8652, "pack_files": 8653,
"pack_size": 7061212577, "pack_size": 7061501345,
"total_omitted": 37, "total_omitted": 37,
"omitted_files": [ "omitted_files": [
{ {
@@ -5747,6 +5747,17 @@
"cores": null, "cores": null,
"systems": [ "systems": [
"nec-pc-98" "nec-pc-98"
],
"alternatives": [
{
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
}
] ]
}, },
{ {
@@ -113637,6 +113648,19 @@
"nec-pc-98" "nec-pc-98"
] ]
}, },
{
"dest": "np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
],
"systems": [
"nec-pc-98"
]
},
{ {
"dest": "np2/sound.rom", "dest": "np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+29 -5
View File
@@ -6,7 +6,7 @@
"platform": "retroarch", "platform": "retroarch",
"display_name": "RetroArch", "display_name": "RetroArch",
"version": "v1.22.2", "version": "v1.22.2",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "system", "base_destination": "system",
"detect": [ "detect": [
{ {
@@ -631,10 +631,10 @@
} }
} }
], ],
"total_files": 8350, "total_files": 8351,
"total_size": 7132502545, "total_size": 7132791313,
"pack_files": 10993, "pack_files": 10994,
"pack_size": 7174694399, "pack_size": 7174983167,
"total_omitted": 37, "total_omitted": 37,
"omitted_files": [ "omitted_files": [
{ {
@@ -6312,6 +6312,17 @@
"cores": null, "cores": null,
"systems": [ "systems": [
"nec-pc-98" "nec-pc-98"
],
"alternatives": [
{
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
}
] ]
}, },
{ {
@@ -114694,6 +114705,19 @@
"nec-pc-98" "nec-pc-98"
] ]
}, },
{
"dest": "np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
],
"systems": [
"nec-pc-98"
]
},
{ {
"dest": "np2/sound.rom", "dest": "np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+29 -5
View File
@@ -6,7 +6,7 @@
"platform": "retrobat", "platform": "retrobat",
"display_name": "RetroBat", "display_name": "RetroBat",
"version": "8.3.1", "version": "8.3.1",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "bios", "base_destination": "bios",
"detect": [ "detect": [
{ {
@@ -284,10 +284,10 @@
} }
} }
], ],
"total_files": 5561, "total_files": 5562,
"total_size": 8544495803, "total_size": 8544784571,
"pack_files": 5563, "pack_files": 5564,
"pack_size": 8544495803, "pack_size": 8544784571,
"total_omitted": 203, "total_omitted": 203,
"omitted_files": [ "omitted_files": [
{ {
@@ -8239,6 +8239,17 @@
"cores": null, "cores": null,
"systems": [ "systems": [
"nec-pc-98" "nec-pc-98"
],
"alternatives": [
{
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
}
] ]
}, },
{ {
@@ -73066,6 +73077,19 @@
"nec-pc-98" "nec-pc-98"
] ]
}, },
{
"dest": "np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
],
"systems": [
"nec-pc-98"
]
},
{ {
"dest": "ps2-0230a-20080220.bin", "dest": "ps2-0230a-20080220.bin",
"sha1": "f9229fe159d0353b9f0632f3fdc66819c9030458", "sha1": "f9229fe159d0353b9f0632f3fdc66819c9030458",
+31 -5
View File
@@ -6,7 +6,7 @@
"platform": "retrodeck", "platform": "retrodeck",
"display_name": "RetroDECK", "display_name": "RetroDECK",
"version": "0.10.10b", "version": "0.10.10b",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "", "base_destination": "",
"detect": [ "detect": [
{ {
@@ -292,10 +292,10 @@
"source": "bios/dc/dc_nvmem.bin" "source": "bios/dc/dc_nvmem.bin"
} }
], ],
"total_files": 8904, "total_files": 8906,
"total_size": 9019527558, "total_size": 9020105094,
"pack_files": 8906, "pack_files": 8908,
"pack_size": 9019527558, "pack_size": 9020105094,
"total_omitted": 66, "total_omitted": 66,
"omitted_files": [ "omitted_files": [
{ {
@@ -133242,6 +133242,19 @@
"nec-pc-98" "nec-pc-98"
] ]
}, },
{
"dest": "bios/np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
],
"systems": [
"nec-pc-98"
]
},
{ {
"dest": "bios/np2/sound.rom", "dest": "bios/np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
@@ -133411,6 +133424,19 @@
"nec-pc-98" "nec-pc-98"
] ]
}, },
{
"dest": "bios/np2kai/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
],
"systems": [
"nec-pc-98"
]
},
{ {
"dest": "bios/np2kai/sound.rom", "dest": "bios/np2kai/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+29 -5
View File
@@ -6,7 +6,7 @@
"platform": "retropie", "platform": "retropie",
"display_name": "RetroPie", "display_name": "RetroPie",
"version": "4.8.12", "version": "4.8.12",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "BIOS", "base_destination": "BIOS",
"detect": [ "detect": [
{ {
@@ -16,10 +16,10 @@
} }
], ],
"standalone_copies": [], "standalone_copies": [],
"total_files": 8725, "total_files": 8726,
"total_size": 8826568678, "total_size": 8826857446,
"pack_files": 11281, "pack_files": 11282,
"pack_size": 8859935748, "pack_size": 8860224516,
"total_omitted": 347, "total_omitted": 347,
"omitted_files": [ "omitted_files": [
{ {
@@ -9247,6 +9247,17 @@
"cores": null, "cores": null,
"systems": [ "systems": [
"nec-pc-98" "nec-pc-98"
],
"alternatives": [
{
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
}
] ]
}, },
{ {
@@ -119963,6 +119974,19 @@
"nec-pc-98" "nec-pc-98"
] ]
}, },
{
"dest": "np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
],
"systems": [
"nec-pc-98"
]
},
{ {
"dest": "np2/sound.rom", "dest": "np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+25 -5
View File
@@ -6,7 +6,7 @@
"platform": "rocknix", "platform": "rocknix",
"display_name": "ROCKNIX", "display_name": "ROCKNIX",
"version": "20261001", "version": "20261001",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "bios", "base_destination": "bios",
"detect": [ "detect": [
{ {
@@ -21,10 +21,10 @@
} }
], ],
"standalone_copies": [], "standalone_copies": [],
"total_files": 7355, "total_files": 7357,
"total_size": 8271344313, "total_size": 8271921849,
"pack_files": 7357, "pack_files": 7359,
"pack_size": 8271344313, "pack_size": 8271921849,
"total_omitted": 115, "total_omitted": 115,
"omitted_files": [ "omitted_files": [
{ {
@@ -76166,6 +76166,16 @@
"nekop2" "nekop2"
] ]
}, },
{
"dest": "np2/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"nekop2"
]
},
{ {
"dest": "np2/sound.rom", "dest": "np2/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
@@ -76409,6 +76419,16 @@
"np2kai" "np2kai"
] ]
}, },
{
"dest": "np2kai/FONT.ROM",
"sha1": "78ba9960f135372825ab7244b5e4e73a810002ff",
"sha256": "8db165d567e13bce3f50ee495975671faa5a0ff332dcb08e187aa91125c81ec6",
"size": 288768,
"repo_path": "bios/NEC/PC-98/font.rom",
"cores": [
"np2kai"
]
},
{ {
"dest": "np2kai/sound.rom", "dest": "np2kai/sound.rom",
"sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef", "sha1": "d5dbc4fea3b8367024d363f5351baecd6adcd8ef",
+22 -2
View File
@@ -6,7 +6,7 @@
"platform": "romm", "platform": "romm",
"display_name": "RomM", "display_name": "RomM",
"version": "5.4.0", "version": "5.4.0",
"generated": "2026-11-05T14:56:18Z", "generated": "2026-11-05T18:31:29Z",
"base_destination": "bios", "base_destination": "bios",
"detect": [ "detect": [
{ {
@@ -26,7 +26,7 @@
"total_size": 872654387, "total_size": 872654387,
"pack_files": 467, "pack_files": 467,
"pack_size": 872654387, "pack_size": 872654387,
"total_omitted": 775, "total_omitted": 777,
"omitted_files": [ "omitted_files": [
{ {
"dest": "32X_G_BIOS.BIN", "dest": "32X_G_BIOS.BIN",
@@ -4072,6 +4072,16 @@
"fbneo" "fbneo"
] ]
}, },
{
"dest": "np2/FONT.ROM",
"name": "FONT.ROM",
"system": "",
"required": false,
"reason": "below_platform_folder",
"cores": [
"nekop2"
]
},
{ {
"dest": "np2/bios9821.rom", "dest": "np2/bios9821.rom",
"name": "bios9821.rom", "name": "bios9821.rom",
@@ -4162,6 +4172,16 @@
"np2kai" "np2kai"
] ]
}, },
{
"dest": "np2kai/FONT.ROM",
"name": "FONT.ROM",
"system": "",
"required": false,
"reason": "below_platform_folder",
"cores": [
"np2kai"
]
},
{ {
"dest": "np2kai/ide.rom", "dest": "np2kai/ide.rom",
"name": "ide.rom", "name": "ide.rom",
+81
View File
@@ -0,0 +1,81 @@
"""NP2kai and meowPC98 read font.bmp and FONT.ROM as two files.
font_load reads the PC-98 bitmap (font.bmp, FONT.BMP) and then the V98 ROM
(FONT.ROM, font.rom), each through its own reader (NP2kai font/font.c:192-195,
meowPC98 font/font.c:180-181). Hung on font.bmp as aliases, the V98 names let
a collection without font.bmp serve the PC-88's 2 KB font.rom as np2kai/font.bmp,
which fontpc98_read cannot parse, and FONT.ROM was never placed under its name.
"""
from __future__ import annotations
import hashlib
import os
import shutil
import sys
import tempfile
import unittest
from pathlib import Path
import yaml
REPO_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(REPO_ROOT / "scripts"))
from common import resolve_local_file # noqa: E402
V98_SIZE = 0x46800
def _entry(profile: str, name: str) -> dict:
with open(REPO_ROOT / "emulators" / f"{profile}.yml") as handle:
files = yaml.safe_load(handle)["files"]
entry = next(f for f in files if f.get("name") == name)
return {**entry, "source_profile": profile}
class FontFormatsAreSeparateFiles(unittest.TestCase):
def setUp(self):
(REPO_ROOT / "tmp").mkdir(exist_ok=True)
self.root = Path(tempfile.mkdtemp(dir=REPO_ROOT / "tmp"))
self.addCleanup(shutil.rmtree, self.root, True)
self.addCleanup(os.chdir, os.getcwd())
os.chdir(self.root)
self.db = {"files": {}, "indexes": {
"by_md5": {}, "by_name": {}, "by_crc32": {}, "by_path_suffix": {},
}}
self.pc88 = self._hold("bios/NEC/PC-88/font.rom", b"8" * 2048)
self.v98 = self._hold("bios/NEC/PC-98/font.rom", b"V" * V98_SIZE)
def _hold(self, rel: str, data: bytes) -> str:
target = self.root / rel
target.parent.mkdir(parents=True, exist_ok=True)
target.write_bytes(data)
sha1 = hashlib.sha1(data).hexdigest()
name = rel.rsplit("/", 1)[-1]
self.db["files"][sha1] = {
"path": rel, "name": name, "size": len(data),
"md5": hashlib.md5(data).hexdigest(), "crc32": "",
}
self.db["indexes"]["by_name"].setdefault(name, []).append(sha1)
return rel
def test_no_v98_name_answers_for_the_bitmap(self):
for profile in ("np2kai", "nekop2"):
with self.subTest(profile=profile):
entry = _entry(profile, "font.bmp")
self.assertEqual(resolve_local_file(entry, self.db), (None, "not_found"))
def test_the_v98_font_is_its_own_entry_and_skips_the_pc88_font(self):
for profile in ("np2kai", "nekop2"):
with self.subTest(profile=profile):
entry = _entry(profile, "FONT.ROM")
self.db["indexes"]["by_name"]["FONT.ROM"] = (
self.db["indexes"]["by_name"]["font.rom"]
)
path, _status = resolve_local_file(entry, self.db)
self.assertEqual(path, self.v98)
if __name__ == "__main__":
unittest.main()