From 82e28a2a76e61b6217a720d3635f1099874ecf1a Mon Sep 17 00:00:00 2001 From: D4VID Date: Tue, 20 May 2025 20:45:25 +0200 Subject: [PATCH] Add RNG and buttons --- lwcpu/src/lib.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lwcpu/src/lib.rs b/lwcpu/src/lib.rs index 7d2c9f4..2c89c5c 100644 --- a/lwcpu/src/lib.rs +++ b/lwcpu/src/lib.rs @@ -68,3 +68,31 @@ impl NumberDisplay { } } +pub struct RNG {} +impl RNG { + #[inline] + pub fn next() -> u32 { + return unsafe { read_volatile(RANDOM_NUMBER_POINTER) }; + } + #[inline] + pub fn next_range(min: u32, max: u32) -> u32 { + return RNG::next() % (max - min) + min; + } +} + +pub struct Buttons {} +impl Buttons { + pub const RIGHT_RIGHT: u8 = 0b00000001; + pub const RIGHT_DOWN : u8 = 0b00000010; + pub const RIGHT_LEFT : u8 = 0b00000100; + pub const RIGHT_UP : u8 = 0b00001000; + pub const LEFT_RIGHT : u8 = 0b00010000; + pub const LEFT_DOWN : u8 = 0b00100000; + pub const LEFT_LEFT : u8 = 0b01000000; + pub const LEFT_UP : u8 = 0b10000000; + + #[inline] + pub fn read() -> u8 { + return unsafe { read_volatile(BUTTONS_POINTER) }; + } +}