diff --git a/docs/references.md b/docs/references.md index 741926b..2a28bd0 100644 --- a/docs/references.md +++ b/docs/references.md @@ -237,6 +237,7 @@ General gameplay and boot graphics: - [mGBA I/O initialization at 3a5e34be](https://github.com/mgba-emu/mgba/blob/3a5e34be33dc7f8f707e5bc9db69e8a430046f21/src/gba/io.c), cross-checked with its BIOS reset implementation for identity affine scales. - [gbadoc register summary](https://gbadev.net/gbadoc/registers.html), for affine coefficient meanings. See [boot graphics evidence](research/boot-video.md). - [tolik518/GBA_Pong](https://github.com/tolik518/GBA_Pong/tree/422e22a5d1f7d11710e03ffc19d5bff6ac95240f): a future homebrew candidate found during research. It has not been built or tested here. +- [Paperdomo101/2048-GBA at ae36800d](https://github.com/Paperdomo101/2048-GBA/tree/ae36800dfa1314f96c4c8785b5c2d077fb731aff): reviewed its CC0 license, README, `main.c`, `global.h`, and `storage.c` for SRAM byte accesses and Maxmod initialization. This is a source-level requirement, not a runtime result. The [linked release page](https://basil-termini.itch.io/2048-advance) returned HTTP 522 during download research. Use [GBATEK](https://problemkaputt.de/gbatek.htm) and ARM7TDMI documentation for further hardware work. Only use game ROMs that you may lawfully use. Do not commit game ROMs, BIOS files, or game assets. diff --git a/docs/usability-roadmap.md b/docs/usability-roadmap.md index 35882e2..0e54164 100644 --- a/docs/usability-roadmap.md +++ b/docs/usability-roadmap.md @@ -39,7 +39,22 @@ The [pinned Pong homebrew](public-pong.md) passes scripted menus, ball movement, The native Darwin window also starts and presents frames without a diagnostic. This exposed and corrected missing firmware affine-scale initialization, without a game-specific patch. Frame-based scenarios and the preparation adapter now make the result repeatable. -Next, select an independent game with different device requirements. Cartridge saves and audio remain unimplemented. +The next selected requirement is cartridge SRAM, followed by safe host save persistence. +SRAM is byte-addressable battery-backed save memory. Flash and EEPROM remain separate protocols. + +[Paperdomo101/2048-GBA at ae36800d](https://github.com/Paperdomo101/2048-GBA/tree/ae36800dfa1314f96c4c8785b5c2d077fb731aff) is the next independent candidate. +Its CC0 source calls `load_state()` before audio initialization and reads/writes `sram_mem` one byte at a time. +It also uses Maxmod audio, so SRAM alone will not establish compatibility. +This candidate has not been run: the pinned tree has no ROM, GitHub has no release asset, and the linked download returned HTTP 522. +A reproducible source build or an accessible upstream ROM is needed before recording a runtime result. + +Next implementation steps: + +1. Verify SRAM bus widths, mirroring, erased state, and wait-state behavior against independent references. +2. Add explicit cartridge save-device selection and original core regressions. Keep absent-device accesses diagnostic. +3. Add bounded save loading and safe persistence in the desktop crate. Do not put file operations in the core. +4. Test a save/restart/load cycle across processes with original ROM instructions before external-game validation. +5. Resume the second-game run and implement demonstrated audio requirements rather than accepting writes without behavior. ## Development loop