1 unstable release
new 0.1.0 | May 4, 2025 |
---|
#638 in Game dev
135KB
3K
SLoC
gba_save
Tools for interacting with backup media on Game Boy Advance cartridges.
The Game Boy Advance has three forms of backup media for saving data: SRAM, EEPROM, and Flash. This library provides tools for interacting with all three different types.
Example Usage
To write and read save data using SRAM, use something like the following:
use deranged::RangedUsize;
use embedded_io::{Read, Write};
use gba_save::sram::Sram;
let mut sram = unsafe {Sram::new()};
let mut writer = sram.writer(RangedUsize::new_static<0>()..RangedUsize::new_static<15>());
// Write some data.
//
// Note that you'll usually want to handle the error here.
writer.write(b"hello, world!").expect("could not write to SRAM");
// Write some more data.
writer.write(b"123").expect("could not write to SRAM");
// Read the data back.
let mut reader = sram.reader(RangedUsize::new_static<0>()..RangedUsize::new_static<15>());
let mut buffer = [0; 16];
assert_eq!(reader.read(&mut buf), 16);
// Both things that were written will be read back.
assert_eq!(buffer, b"hello, world!123");
See the documentation for more details and examples for interacting with SRAM and the other backup media types.
Optional Features
serde
: Enable serializing and deserializing the variuos error types using theserde
library.log
: Enable log messages using thelog
library. Helpful for development. This is best used when paired with a logger likemgba_log
ornocash_gba_log
.
License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~135–305KB