Trash
master
D4VID 8 months ago
parent 8f50251660
commit accdeea9cc

@ -13,22 +13,74 @@ fn panic_handler(_info: &PanicInfo) -> ! {
}
const OUTPUT: *mut u32 = 0x2000_0000 as *mut u32;
// const BTNS: *mut u8 = 0x2000_0008 as *mut u8;
const BTNS: *mut u8 = 0x2000_0008 as *mut u8;
const SCREEN: *mut u32 = 0x2000_0080 as *mut u32;
#[entry]
fn main() -> ! {
let mut value: u32 = 1;
let mut offset: isize = 0;
let mut playerA: u8 = 1;
let mut playerB: u8 = 1;
let mut ballX: i8 = 16;
let mut ballY: i8 = 16;
let mut ballXvel: i8 = 1;
let mut vram: [u32; 32] = [0; 32];
vram[playerA as usize] |= 1 << 31;
vram[playerB as usize] |= 1;
vram[ballY as usize] |= 1 << ballX;
loop {
let btns;
unsafe {
SCREEN.offset(offset).write_volatile(value);
btns = BTNS.read_volatile();
}
// left up
if btns & (1 << 7) > 0 {
vram[playerA as usize] &= !(1 << 31);
playerA -= 1;
vram[playerA as usize] |= 1 << 31;
}
// left down
if btns & (1 << 5) > 0 {
vram[playerA as usize] &= !(1 << 31);
playerA += 1;
vram[playerA as usize] |= 1 << 31;
}
// right up
if btns & (1 << 3) > 0 {
vram[playerB as usize] &= !1;
playerB -= 1;
vram[playerB as usize] |= 1;
}
value <<= 1;
offset += 1;
if value == 0 {
panic!();
// right down
if btns & (1 << 1) > 0 {
vram[playerB as usize] &= !1;
playerB += 1;
vram[playerB as usize] |= 1;
}
if ballX >= 31 {
ballXvel = -1;
} else if ballX == 0 {
ballXvel = 1;
}
vram[ballY as usize] &= !(1 << ballX);
ballX += ballXvel;
vram[ballY as usize] |= 1 << ballX;
draw(&vram);
}
}
fn draw(vram: &[u32; 32]) {
for row_index in 0..32 {
unsafe {
SCREEN
.offset(row_index)
.write_volatile(vram[row_index as usize]);
}
}
}

Loading…
Cancel
Save