4 releases (2 breaking)

0.3.1 Dec 11, 2023
0.3.0 Dec 7, 2023
0.2.0 Oct 12, 2023
0.1.0 Aug 28, 2023

#338 in Game dev

28 downloads per month

MIT/Apache

62KB
1.5K SLoC

gba_clock

GitHub Workflow Status crates.io docs.rs License

A real-time clock library for the GBA.

Provides access to the RTC for programs running on a Game Boy Advance, returning dates and times that are interoperable with the time library.

Features

  • Storing and reading of any valid time representable by the time crate (i.e. any year within the range ±9999, or ±999,999 if time's large-dates feature is enabled).
  • Works out of the box on real hardware and popular emulators (including mGBA).
  • Serializable with the serde library (by enabling the serde feature).

Usage

Access to the RTC is done through the Clock type. Create a Clock using the current time and use the returned instance to access the current time.

use gba_clock::Clock;
use time::{
    Date,
    Month,
    PrimitiveDateTime,
    Time,
};

let current_time = PrimitiveDateTime::new(
    Date::from_calendar_date(2001, Month::March, 21).expect("invalid date"),
    Time::from_hms(11, 30, 0).expect("invalid time"),
);
let clock = Clock::new(current_time).expect("could not communicate with the RTC");

// Read the current time whenever you need.
let time = clock
    .read_datetime()
    .expect("could not read the current time");

License

This project is licensed under either of

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

~0.7–1MB
~17K SLoC