Skip to content

gb64-next v1.0 — M64 + SummerCart64

Latest

Choose a tag to compare

@UsaRandom UsaRandom released this 14 Aug 21:22

A fork of lambertjamesd/gb64 — the Game Boy / Game Boy Color emulator that runs as an N64 ROM — tuned for the ModRetro M64 and SummerCart64-family flashcarts, and buildable natively on macOS.

All changes verified on real hardware (M64 + SummerCart64 clone).

What's different from upstream

Controller input fixed on the M64. Upstream's controller poll could return before ever starting a read on some hosts, leaving every button dead. Input now works on the M64.

In-game saves persist, automatically. The save type is 96 KB banked SRAM (the flash path reads back nothing on this hardware), and cart RAM is flushed to the save file the moment a game finishes writing it — detected on the MBC RAM-disable edge, checksum-gated so idle toggles cost nothing. Save in game, power off, continue. No save-state juggling required.

A real real-time clock. MBC3 timer carts get actual wall time. Within a session the clock is derived from the console's own CPU counter at every latch — it can no longer drift or be corrupted by anything that happens between reads. Across power-offs, the SummerCart64's RTC supplies the elapsed time as a bounded, forward-only delta. Set the in-game clock once and it keeps real time from then on, including while the console is off.

On carts without a SummerCart64 RTC (EverDrive and friends), everything above still works; the clock is exact within a session and frozen across power-offs — the one failure mode MBC3 games accept silently.

Builds natively on macOS. tools/macbuild.sh drives a full build with the mips64-elf toolchain — no Linux box, no container. See the README's "Building on macOS" section, including the assembler traps that make this toolchain interesting (sd/ld register-pair expansion under -mabi=32 among them).

Assets

gb.v64 / gbc.v64 are identical, menu-ready cores: save type pre-stamped (SVID + ED64 header byte, 96 KB banked SRAM) and CIC-6102 checksum valid for real hardware. Drop them into menu/emulators/ on your SD card.