Following the README, a first-time user typically runs:
git clone ...
cd 00-template
make gngeo
They expect to see their cart in the emulator. Instead, gngeo launches and prints Couldn't open build/rom/puzzledp.zip — because emu.mk declares gngeo: with no prerequisites, so the cart never got built.
A beginner can spend a while wondering whether the emulator is broken before realising the cart wasn't built.
Two ways to fix, both beginner-friendly:
Add cart as a prerequisite of gngeo:
gngeo: cart
$(GNGEO) ... $(GAMEROM)
make gngeo from a clean state builds first, then launches. Backwards-compatible — anyone already running make && make gngeo sees no change. Anyone running just make gngeo now gets the expected behaviour.
Add a new play (or run) target that builds-then-runs, leaving gngeo alone:
play: cart
$(MAKE) gngeo
Documents the build-then-run flow as an explicit target. I manage my own build cadence and I keep gngeo as the raw launcher.
Following the README, a first-time user typically runs:
git clone ...
cd 00-template
make gngeo
They expect to see their cart in the emulator. Instead, gngeo launches and prints Couldn't open build/rom/puzzledp.zip — because emu.mk declares gngeo: with no prerequisites, so the cart never got built.
A beginner can spend a while wondering whether the emulator is broken before realising the cart wasn't built.
Two ways to fix, both beginner-friendly:
Add cart as a prerequisite of gngeo:
$(GNGEO) ... $ (GAMEROM)
gngeo: cart
make gngeo from a clean state builds first, then launches. Backwards-compatible — anyone already running make && make gngeo sees no change. Anyone running just make gngeo now gets the expected behaviour.
Add a new play (or run) target that builds-then-runs, leaving gngeo alone:
play: cart
$(MAKE) gngeo
Documents the build-then-run flow as an explicit target. I manage my own build cadence and I keep gngeo as the raw launcher.