Skip to content

Commit f8f5e19

Browse files
authored
Merge pull request #13 from sabino/pages-fbneo-romset-launch
Fix FBNeo Pages romset launch
2 parents 7942275 + 55033d1 commit f8f5e19

10 files changed

Lines changed: 120 additions & 84 deletions

File tree

.github/workflows/build.yml

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ permissions:
1616
env:
1717
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
1818
PAGES_DOOM_IWAD: .tools/assets/freedoom-0.13.0.zip
19-
PAGES_DOOM_CROM_FILE_BYTES: "2097152"
19+
PAGES_DOOM_CROM_FILE_BYTES: "4194304"
2020

2121
concurrency:
2222
group: pages-${{ github.ref }}
@@ -258,12 +258,12 @@ jobs:
258258
import zipfile
259259
260260
expected_rom = {
261-
"202-p1.p1": 0x2B61415B,
262-
"202-s1.s1": 0xCD19264F,
263-
"202-c1.c1": 0xCC0095EF,
264-
"202-c2.c2": 0x42371307,
265-
"202-m1.m1": 0x9C0291EA,
266-
"202-v1.v1": 0xDEBEB8FB,
261+
"221-p1.p1": 0x7BE82353,
262+
"221-s1.s1": 0x2A4063A3,
263+
"221-c1.c1": 0x1F862A14,
264+
"221-c2.c2": 0x14B90536,
265+
"221-m1.m1": 0xBDDAE628,
266+
"221-v1.v1": 0x7E5E53E4,
267267
}
268268
expected_bios = {
269269
"sp-s3.sp1": 0x91B64BE3,
@@ -281,12 +281,23 @@ jobs:
281281
raise SystemExit(f"{path}:{name} CRC {actual:08x} != {crc:08x}")
282282
283283
main_rom = glob.glob("dist/pages/rom/web-*/doomgeo-aes.zip")
284+
main_launch_rom = glob.glob("dist/pages/rom/web-*/magdrop2.zip")
284285
main_bios = glob.glob("dist/pages/rom/web-*/neogeo.zip")
285286
asm_rom = glob.glob("dist/pages/rom/asm/web-*/doomgeo-aes-asm.zip")
286-
if len(main_rom) != 1 or len(main_bios) != 1 or len(asm_rom) != 1:
287-
raise SystemExit(f"unexpected web package layout: {main_rom=} {main_bios=} {asm_rom=}")
287+
asm_launch_rom = glob.glob("dist/pages/rom/asm/web-*/magdrop2.zip")
288+
if len(main_rom) != 1 or len(main_launch_rom) != 1 or len(main_bios) != 1 or len(asm_rom) != 1 or len(asm_launch_rom) != 1:
289+
raise SystemExit(
290+
"unexpected web package layout: "
291+
f"{main_rom=} {main_launch_rom=} {main_bios=} {asm_rom=} {asm_launch_rom=}"
292+
)
288293
check(main_rom[0], expected_rom)
294+
check(main_rom[0], expected_bios)
295+
check(main_launch_rom[0], expected_rom)
296+
check(main_launch_rom[0], expected_bios)
289297
check(asm_rom[0], expected_rom)
298+
check(asm_rom[0], expected_bios)
299+
check(asm_launch_rom[0], expected_rom)
300+
check(asm_launch_rom[0], expected_bios)
290301
check(main_bios[0], expected_bios)
291302
PY
292303

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,8 @@ gngeo gngeo-fullscreen: GNGEO_DATAFILE=$(GNGEO_RUN_DATAFILE)
275275
gngeo gngeo-fullscreen: $(GNGEO_RUN_DATAFILE)
276276

277277
# Keep the packaged C-ROM size explicit. Local GnGeo launches generate a
278-
# matching datafile because the stock puzzledp metadata only maps 1 MiB per
279-
# C-ROM and corrupts/omits larger generated sprite banks.
278+
# matching datafile because stock arcade metadata can map smaller C-ROM windows
279+
# than the generated sprite bank.
280280
CROMSIZE=$(DOOM_CROM_FILE_BYTES)
281281

282282

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,9 @@ python3 tools/inspect_map_specials.py --map E1M2
189189

190190
You must provide your own Neo Geo BIOS for local emulation. The browser package
191191
uses a separate Freedoom-based ROM and an FBNeo-compatible packaging path, but
192-
that does not rename the project: `DoomGeo-AES` is the game name; `puzzledp` is
193-
only the private FBNeo driver/chip identity used so the arcade core accepts the
194-
generated homebrew ROM zip.
192+
that does not rename the project: `DoomGeo-AES` is the game name. The browser
193+
player launches a `magdrop2` romset package internally so the arcade core
194+
accepts the generated homebrew ROM zip.
195195

196196
## Documentation
197197

docs/build-packaging.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,22 @@ expose the standalone 68000 assembly ROM at `asm.html`.
1616

1717
FBNeo is an arcade core and validates known romsets by filename, size, and CRC.
1818
For the Pages bundle only, `doomgeo-build pages` writes FBNeo-compatible launch
19-
zips against the `puzzledp` driver by adjusting unused padding bytes in the
20-
generated ROM chips and null BIOS aliases. The public Pages/download zip names
21-
are still `doomgeo-aes.zip` and `doomgeo-aes-asm.zip`; `puzzledp` remains only
22-
the private FBNeo driver/chip compatibility identity. The raw build artifacts
23-
under `build/rom/` are not rewritten this way; this compatibility package is
24-
only for the browser player.
19+
zips against the `magdrop2` driver by adjusting unused padding bytes in the
20+
generated ROM chips and null BIOS aliases. `magdrop2` is used because its FBNeo
21+
driver has 4 MiB C1/C2 graphics ROM windows, matching the generated web sprite
22+
bank without cutting assets back to a smaller romset shape. The browser
23+
player launches `magdrop2.zip` and sets `EJS_gameName = "magdrop2"` because
24+
FBNeo identifies arcade games by driver/romset name. The bundle also writes
25+
project-named copies
26+
(`doomgeo-aes.zip` and `doomgeo-aes-asm.zip`) for download links, but those are
27+
not the files passed to the emulator. The raw build artifacts under
28+
`build/rom/` are not rewritten this way; this compatibility package is only for
29+
the browser player.
2530

2631
The deployed Pages ROM is built separately from the normal native artifact. CI
27-
uses the redistributable Freedoom IWAD and `DOOM_CROM_FILE_BYTES=2097152` for
32+
uses the redistributable Freedoom IWAD and `DOOM_CROM_FILE_BYTES=4194304` for
2833
that job so the browser package does not embed proprietary Doom assets and still
29-
matches the fixed C-ROM chip sizes expected by FBNeo's `puzzledp` driver. The
34+
matches the fixed C-ROM chip sizes expected by FBNeo's `magdrop2` driver. The
3035
regular Linux, Windows, and local ROM artifacts are left on the normal build
3136
path.
3237

@@ -395,8 +400,10 @@ The Pages job consumes the Freedoom web ROM artifact and writes:
395400
```text
396401
dist/pages/index.html
397402
dist/pages/asm.html
403+
dist/pages/rom/web-<hash>/magdrop2.zip
398404
dist/pages/rom/web-<hash>/doomgeo-aes.zip
399405
dist/pages/rom/web-<hash>/neogeo.zip
406+
dist/pages/rom/asm/web-<hash>/magdrop2.zip
400407
dist/pages/rom/asm/web-<hash>/doomgeo-aes-asm.zip
401408
```
402409

docs/features.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -890,5 +890,6 @@ readable.
890890
- Windows builds are supported through MSYS2 UCRT64.
891891
- GitHub Actions builds Linux ROM, Windows ROM, standalone helper binaries, a
892892
Pages-playable FBNeo package, and a separate 68000 ASM ROM.
893-
- Browser packages are public `doomgeo-aes.zip` / `doomgeo-aes-asm.zip` files,
894-
while the internal FBNeo chip names/CRCs match the `puzzledp` driver.
893+
- Browser packages launch `magdrop2.zip` with internal FBNeo chip names/CRCs
894+
matching the `magdrop2` driver, with project-named copies available as
895+
download links.

docs/release-plan.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,23 @@ the other only accompanies and tracks the plan.
2020

2121
## Evidence
2222

23-
- Linux ROM builds are expected to produce `build/rom/puzzledp.zip` internally,
23+
- Linux ROM builds are expected to produce `build/rom/magdrop2.zip` internally,
2424
then package it as `dist/rom/doomgeo-aes.zip`.
25-
- ASM ROM builds are expected to produce `build/asm-rom/puzzledp.zip` from
25+
- ASM ROM builds are expected to produce `build/asm-rom/magdrop2.zip` from
2626
`asm/doomgeo_asm.S`, then package it as `dist/asm-rom/doomgeo-aes-asm.zip`.
2727
- Windows/MSYS2 ROM builds are expected to produce the same packaged
2828
`doomgeo-aes.zip` through the UCRT64 ngdevkit packages.
2929
- Standalone helper builds are expected to produce `doomgeo-build` and
3030
`doomgeo-plan` artifacts for Linux, plus `.exe` variants for Windows.
3131
- The Pages bundle is expected to publish `index.html`, `asm.html`,
32-
`rom/web-<hash>/doomgeo-aes.zip`, `rom/web-<hash>/neogeo.zip`, and
32+
`rom/web-<hash>/magdrop2.zip`, `rom/web-<hash>/doomgeo-aes.zip`,
33+
`rom/web-<hash>/neogeo.zip`, `rom/asm/web-<hash>/magdrop2.zip`, and
3334
`rom/asm/web-<hash>/doomgeo-aes-asm.zip`.
3435
- The Pages ROM zips are expected to be FBNeo-compatible launch packages with
35-
`puzzledp` driver chip filenames, sizes, and CRCs internally while preserving
36+
`magdrop2` driver chip filenames, sizes, and CRCs internally while preserving
3637
the generated homebrew data outside the final padding correction bytes.
3738
- The Pages main ROM is expected to come from a separate Freedoom-based build
38-
with 2 MiB C-ROM chips, not from the normal native/local ROM artifact.
39+
with 4 MiB C-ROM chips, not from the normal native/local ROM artifact.
3940
- Repo-local installs are removable with `doomgeo-build uninstall`; `--all`
4041
also removes cached WAD/package downloads under `.tools`.
4142
- The installer decision is MSYS2 UCRT64 for native Windows builds, with WSL

rom.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ BUILDDIR?=build
66
ROM?=$(BUILDDIR)/rom
77

88
# ROM name
9-
GAMEROM=puzzledp
9+
GAMEROM=magdrop2
1010

1111
# program ROM
1212
PROMSIZE=524288

tools/doomgeo_build.py

Lines changed: 64 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,21 @@
2424
PROJECT_NAME = "DoomGeo-AES"
2525
PACKAGE_ROM_ZIP = "doomgeo-aes.zip"
2626
PACKAGE_ASM_ROM_ZIP = "doomgeo-aes-asm.zip"
27-
FBNEO_COMPAT_ROM_ZIP = "puzzledp.zip"
27+
FBNEO_COMPAT_ROM_ZIP = "magdrop2.zip"
28+
FBNEO_DRIVER_NAME = "magdrop2"
2829
ROM_ZIP = Path("build") / "rom" / FBNEO_COMPAT_ROM_ZIP
2930
ROM_ELF = Path("build") / "rom.elf"
3031
BIOS_ZIP = Path("build") / "rom" / "neogeo.zip"
3132
ASM_ROM_ZIP = Path("build") / "asm-rom" / FBNEO_COMPAT_ROM_ZIP
3233
ASM_ROM_ELF = Path("build") / "asm" / "doomgeo_asm.elf"
3334
ASM_BIOS_ZIP = Path("build") / "asm-rom" / "neogeo.zip"
34-
FBNEO_PUZZLEDP_CRC = {
35-
"202-p1.p1": 0x2B61415B,
36-
"202-s1.s1": 0xCD19264F,
37-
"202-c1.c1": 0xCC0095EF,
38-
"202-c2.c2": 0x42371307,
39-
"202-m1.m1": 0x9C0291EA,
40-
"202-v1.v1": 0xDEBEB8FB,
41-
}
42-
FBNEO_PUZZLEDP_SIZE = {
43-
"202-p1.p1": 0x80000,
44-
"202-s1.s1": 0x20000,
45-
"202-c1.c1": 0x200000,
46-
"202-c2.c2": 0x200000,
47-
"202-m1.m1": 0x20000,
48-
"202-v1.v1": 0x80000,
35+
FBNEO_ROM_ENTRIES = {
36+
"221-p1.p1": ("202-p1.p1", 0x80000, 0x7BE82353),
37+
"221-s1.s1": ("202-s1.s1", 0x20000, 0x2A4063A3),
38+
"221-c1.c1": ("202-c1.c1", 0x400000, 0x1F862A14),
39+
"221-c2.c2": ("202-c2.c2", 0x400000, 0x14B90536),
40+
"221-m1.m1": ("202-m1.m1", 0x20000, 0xBDDAE628),
41+
"221-v1.v1": ("202-v1.v1", 0x200000, 0x7E5E53E4),
4942
}
5043
FBNEO_NEOGEO_CRC = {
5144
"sp-s3.sp1": 0x91B64BE3,
@@ -364,11 +357,13 @@ def force_crc32(data: bytes, desired: int, patch_offset: int | None = None) -> b
364357
return bytes(patched)
365358

366359

367-
def write_zip_entries(path: Path, entries: dict[str, bytes]) -> None:
360+
def write_zip_entries(path: Path, entries: dict[str, bytes], compression: int | None = None) -> None:
368361
import zipfile
369362

370363
path.parent.mkdir(parents=True, exist_ok=True)
371-
with zipfile.ZipFile(path, "w", compression=zipfile.ZIP_DEFLATED) as archive:
364+
if compression is None:
365+
compression = zipfile.ZIP_DEFLATED
366+
with zipfile.ZipFile(path, "w", compression=compression) as archive:
372367
for name, data in entries.items():
373368
archive.writestr(name, data)
374369

@@ -381,35 +376,20 @@ def web_asset_version(paths: list[Path]) -> str:
381376
return digest.hexdigest()[:12]
382377

383378

384-
def build_fbneo_rom_zip(source_zip: Path, out_zip: Path) -> None:
385-
import zipfile
386-
387-
if not source_zip.exists():
388-
raise BuildError(f"ROM not found: {source_zip}")
389-
entries: dict[str, bytes] = {}
390-
with zipfile.ZipFile(source_zip) as archive:
391-
for name, desired_crc in FBNEO_PUZZLEDP_CRC.items():
392-
try:
393-
data = archive.read(name)
394-
except KeyError as exc:
395-
raise BuildError(f"ROM entry missing for FBNeo package: {name}") from exc
396-
expected_size = FBNEO_PUZZLEDP_SIZE[name]
397-
if len(data) != expected_size:
398-
raise BuildError(
399-
f"ROM entry {name} is {len(data)} bytes, but the FBNeo puzzledp "
400-
f"web driver expects {expected_size} bytes; rebuild the Pages ROM "
401-
"with DOOM_CROM_FILE_BYTES=2097152"
402-
)
403-
entries[name] = force_crc32(data, desired_crc)
404-
write_zip_entries(out_zip, entries)
405-
print_step(f"wrote FBNeo-compatible ROM package to {out_zip}")
379+
def pad_rom_entry(data: bytes, expected_size: int, name: str) -> bytes:
380+
if len(data) > expected_size:
381+
raise BuildError(
382+
f"ROM entry {name} is {len(data)} bytes, but the FBNeo {FBNEO_DRIVER_NAME} "
383+
f"web driver expects {expected_size} bytes"
384+
)
385+
if len(data) < expected_size:
386+
return data + (b"\xff" * (expected_size - len(data)))
387+
return data
406388

407389

408-
def build_fbneo_bios_zip(source_zip: Path, out_zip: Path) -> None:
390+
def fbneo_bios_entries(source_zip: Path) -> dict[str, bytes]:
409391
import zipfile
410392

411-
if not source_zip.exists():
412-
raise BuildError(f"BIOS not found: {source_zip}")
413393
with zipfile.ZipFile(source_zip) as archive:
414394
source_names = set(archive.namelist())
415395

@@ -425,13 +405,41 @@ def read_first(*names: str) -> bytes:
425405
"sfix.sfix": force_crc32(read_first("sfix.sfix"), FBNEO_NEOGEO_CRC["sfix.sfix"]),
426406
"000-lo.lo": force_crc32(read_first("000-lo.lo"), FBNEO_NEOGEO_CRC["000-lo.lo"]),
427407
}
408+
return entries
409+
410+
411+
def build_fbneo_rom_zip(source_zip: Path, out_zip: Path, bios_zip: Path | None = None) -> None:
412+
import zipfile
413+
414+
if not source_zip.exists():
415+
raise BuildError(f"ROM not found: {source_zip}")
416+
entries: dict[str, bytes] = {}
417+
with zipfile.ZipFile(source_zip) as archive:
418+
for target_name, (source_name, expected_size, desired_crc) in FBNEO_ROM_ENTRIES.items():
419+
try:
420+
data = archive.read(source_name)
421+
except KeyError as exc:
422+
raise BuildError(f"ROM entry missing for FBNeo package: {source_name}") from exc
423+
data = pad_rom_entry(data, expected_size, target_name)
424+
entries[target_name] = force_crc32(data, desired_crc)
425+
if bios_zip:
426+
entries.update(fbneo_bios_entries(bios_zip))
427+
write_zip_entries(out_zip, entries, compression=zipfile.ZIP_STORED)
428+
print_step(f"wrote FBNeo-compatible ROM package to {out_zip}")
429+
430+
431+
def build_fbneo_bios_zip(source_zip: Path, out_zip: Path) -> None:
432+
if not source_zip.exists():
433+
raise BuildError(f"BIOS not found: {source_zip}")
434+
entries = fbneo_bios_entries(source_zip)
428435
write_zip_entries(out_zip, entries)
429436
print_step(f"wrote FBNeo-compatible BIOS package to {out_zip}")
430437

431438

432439
def html_page(
433440
game_name: str,
434441
subtitle: str,
442+
emulator_game_name: str,
435443
game_url: str,
436444
download_url: str,
437445
bios_url: str,
@@ -530,7 +538,7 @@ def html_page(
530538
<script>
531539
window.EJS_player = "#game";
532540
window.EJS_core = "fbneo";
533-
window.EJS_gameName = "__GAME_NAME__";
541+
window.EJS_gameName = "__EMULATOR_GAME_NAME__";
534542
window.EJS_gameUrl = "__GAME_URL__";
535543
window.EJS_biosUrl = "__BIOS_URL__";
536544
window.EJS_pathtodata = "https://cdn.emulatorjs.org/stable/data/";
@@ -542,6 +550,7 @@ def html_page(
542550
"""
543551
return (
544552
template.replace("__GAME_NAME__", game_name)
553+
.replace("__EMULATOR_GAME_NAME__", emulator_game_name)
545554
.replace("__SUBTITLE__", subtitle)
546555
.replace("__GAME_URL__", game_url)
547556
.replace("__DOWNLOAD_URL__", download_url)
@@ -570,16 +579,19 @@ def build_pages(
570579
rom_out = out_dir / "rom" / f"web-{version}"
571580
rom_out.mkdir(parents=True, exist_ok=True)
572581
main_rom_url = f"rom/web-{version}/{PACKAGE_ROM_ZIP}"
582+
main_launch_rom_url = f"rom/web-{version}/{FBNEO_COMPAT_ROM_ZIP}"
573583
bios_url = f"rom/web-{version}/neogeo.zip"
574-
build_fbneo_rom_zip(rom, rom_out / PACKAGE_ROM_ZIP)
584+
build_fbneo_rom_zip(rom, rom_out / FBNEO_COMPAT_ROM_ZIP, bios)
585+
shutil.copy2(rom_out / FBNEO_COMPAT_ROM_ZIP, rom_out / PACKAGE_ROM_ZIP)
575586
build_fbneo_bios_zip(bios, rom_out / "neogeo.zip")
576587
# FBNeo still matches the internal Neo Geo chip filenames and CRCs against
577-
# the Puzzle De Pon driver. The public zip name can be project-specific.
588+
# a known driver. The public page title and download copy stay project-specific.
578589
(out_dir / "index.html").write_text(
579590
html_page(
580591
PROJECT_NAME,
581592
"Neo Geo AES Doom prototype running in a browser through the EmulatorJS FBNeo WebAssembly core.",
582-
main_rom_url,
593+
FBNEO_DRIVER_NAME,
594+
main_launch_rom_url,
583595
main_rom_url,
584596
bios_url,
585597
"asm.html" if asm_rom_source else None,
@@ -593,12 +605,15 @@ def build_pages(
593605
asm_out = out_dir / "rom" / "asm" / f"web-{version}"
594606
asm_out.mkdir(parents=True, exist_ok=True)
595607
asm_rom_url = f"rom/asm/web-{version}/{PACKAGE_ASM_ROM_ZIP}"
596-
build_fbneo_rom_zip(asm_rom, asm_out / PACKAGE_ASM_ROM_ZIP)
608+
asm_launch_rom_url = f"rom/asm/web-{version}/{FBNEO_COMPAT_ROM_ZIP}"
609+
build_fbneo_rom_zip(asm_rom, asm_out / FBNEO_COMPAT_ROM_ZIP, bios)
610+
shutil.copy2(asm_out / FBNEO_COMPAT_ROM_ZIP, asm_out / PACKAGE_ASM_ROM_ZIP)
597611
(out_dir / "asm.html").write_text(
598612
html_page(
599613
f"{PROJECT_NAME} ASM",
600614
"A separate 68000 assembly cartridge build with a controller-driven Neo Geo sprite scene.",
601-
asm_rom_url,
615+
FBNEO_DRIVER_NAME,
616+
asm_launch_rom_url,
602617
asm_rom_url,
603618
bios_url,
604619
),

tools/simple_enemy_visibility_probe.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#!/usr/bin/env python3
22
"""Probe the authored simple-map live enemy visibility path.
33
4-
The texture-column experiment uses generated Doom sprites inside GnGeo's
5-
puzzledp C-ROM window. A full sprite bank can push live monster tiles past the
6-
visible C-ROM range while the earlier corpse frames still fit, producing an
7-
invisible live monster and a briefly visible death frame.
4+
The texture-column experiment uses generated Doom sprites inside the configured
5+
Neo Geo C-ROM window. A mismatched romset/datafile can push live monster tiles
6+
past the visible C-ROM range while the earlier corpse frames still fit,
7+
producing an invisible live monster and a briefly visible death frame.
88
"""
99

1010
from __future__ import annotations

tools/smoke_capture.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ WAIT_SECS="${SMOKE_WAIT_SECS:-8}"
1515
START_GAME="${SMOKE_START_GAME:-0}"
1616
EXTRAOPTS_VALUE="${SMOKE_EXTRAOPTS:-}"
1717
DIRECT_ROM="${SMOKE_DIRECT_ROM:-}"
18+
DIRECT_ROMSET="${SMOKE_DIRECT_ROMSET:-magdrop2}"
1819
CAPTURE_P1CONTROL="${SMOKE_P1CONTROL:-A=K122,B=K120,C=K97,D=K115,START=K49,COIN=K51,UP=K82,DOWN=K81,LEFT=K80,RIGHT=K79}"
1920
OUT="${SMOKE_OUTPUT:-.tools/screens/latest/smoke.png}"
2021
LOG="${SMOKE_LOG:-.tools/logs/smoke-gngeo.log}"
@@ -184,7 +185,7 @@ if [ -n "$DIRECT_ROM" ]; then
184185
"$ROOT/.tools/ngdevkit-local/usr/bin/ngdevkit-gngeo" \
185186
--datafile="$ROOT/.tools/ngdevkit-local/usr/share/ngdevkit-gngeo/gngeo_data.zip" \
186187
--p1control="$CAPTURE_P1CONTROL" \
187-
$EXTRAOPTS_VALUE --screen320 --scale 3 --no-resize -i "$DIRECT_ROM" puzzledp >"$LOG" 2>&1 < /dev/null &
188+
$EXTRAOPTS_VALUE --screen320 --scale 3 --no-resize -i "$DIRECT_ROM" "$DIRECT_ROMSET" >"$LOG" 2>&1 < /dev/null &
188189
RUN_PID="$!"
189190
else
190191
run_args=("$RUN_TARGET")

0 commit comments

Comments
 (0)