gameboy-rust/docs
0xrsydn 652ea397f2 feat(cartridge): add 512-byte and 8 KiB serial EEPROM saves
Select them with --save-type eeprom512 or eeprom8k. The part follows GBATEK's
protocol on Game Pak data bit 0: DMA3 sends one bit per halfword, '11' +
address + '0' requests a 64-bit block that reads back after four dummy bits,
and '10' + address + data + '0' writes one. A write reports busy for a nominal
108,368 cycles before the block is stored. 8 KiB parts decode the low 10
address bits. ROMs above 16 MiB map EEPROM only at 0x0dffff00..0x0dffffff.

Bits shift out only inside machine steps, so failed steps roll back. CPU
stores, byte/word accesses, CPU reads during a read-out, and malformed or
overlapping requests are diagnostics. Blocks are stored first-bit-as-MSB,
matching common .sav layouts, and work with save files and save states.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HhfHfHEuzv2AUTd6erW1gU
2026-10-14 14:28:41 +07:00
..
hardware feat(cartridge): add 512-byte and 8 KiB serial EEPROM saves 2026-10-14 14:28:41 +07:00
research fix(memory): return the Game Pak address pattern beyond the ROM chip 2026-10-14 14:28:41 +07:00
architecture.md feat(cartridge): add 512-byte and 8 KiB serial EEPROM saves 2026-10-14 14:28:41 +07:00
demos.md fix(timers): apply machine accesses at bus completion 2026-10-06 21:52:09 +07:00
development.md feat(desktop): add safe explicit Flash save-file persistence 2026-10-07 08:36:12 +07:00
jev-debugging.md feat(tooling): add bounded Jev game-debugging workflow 2026-10-07 01:19:19 +07:00
public-arm-tests.md fix(bios): preserve documented protected-read words at firmware exits 2026-10-06 00:45:28 +07:00
public-bios-tests.md feat(memory): retain aligned Thumb BIOS prefetch words 2026-10-06 01:02:31 +07:00
public-memory-tests.md fix(bios): preserve documented protected-read words at firmware exits 2026-10-06 00:45:28 +07:00
public-pong.md test(compat): pin independent Pong gameplay checks 2026-10-06 22:39:56 +07:00
public-thumb-tests.md fix(bios): preserve documented protected-read words at firmware exits 2026-10-06 00:45:28 +07:00
references.md feat(cartridge): add 512-byte and 8 KiB serial EEPROM saves 2026-10-14 14:28:41 +07:00
rom-tests.md test(compat): pin independent Pong gameplay checks 2026-10-06 22:39:56 +07:00
status.md feat(cartridge): add 512-byte and 8 KiB serial EEPROM saves 2026-10-14 14:28:41 +07:00
testing.md fix(bios): return cleanly for empty LZ77 streams 2026-10-07 09:06:00 +07:00
usability-roadmap.md fix(memory): return the Game Pak address pattern beyond the ROM chip 2026-10-14 14:28:41 +07:00