adding drboy

This commit is contained in:
Zenn 2023-08-19 18:21:14 +02:00
parent 76ae7e35fe
commit a33a57bd49
6 changed files with 59 additions and 36 deletions

2
.gitignore vendored
View file

@ -1,6 +1,6 @@
/target /target
/.vscode /.vscode
localcommands.txt
arduboy-rust/Wrapper-Project/.pio arduboy-rust/Wrapper-Project/.pio
arduboy-rust/Wrapper-Project/lib/*.a arduboy-rust/Wrapper-Project/lib/*.a
arduboy-rust/Wrapper-Project/build/*.hex arduboy-rust/Wrapper-Project/build/*.hex

View file

@ -1,6 +0,0 @@
use crate::utils::Position;
pub struct Enemy {
counter: u8,
pos: Position,
bitmap: u8,
}

View file

@ -4,19 +4,21 @@
//Include the Arduboy Library //Include the Arduboy Library
#[allow(unused_imports)] #[allow(unused_imports)]
use arduboy_rust::prelude::*; use arduboy_rust::prelude::*;
#[allow(dead_code)] #[allow(dead_code)]
const arduboy: Arduboy2 = Arduboy2::new(); const arduboy: Arduboy2 = Arduboy2::new();
mod enemies;
mod utils;
// Progmem data // Progmem data
// 8x16
progmem!( progmem!(
static pills: [u8; _] = [ pub static pills: [u8; _] = [
// width, height, // width, height,
8, 8, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7e, // TILE 00 8, 8, 0x7e, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7e, // TILE 00
0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, // TILE 01 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, // TILE 01
0x7e, 0xd5, 0xab, 0xd5, 0xab, 0xd5, 0xab, 0x7e, // TILE 02 0x7e, 0xd5, 0xab, 0xd5, 0xab, 0xd5, 0xab, 0x7e, // TILE 02
]; ];
static enemies: [u8; _] = [ pub static enemies: [u8; _] = [
8, 8, // width, height, 8, 8, // width, height,
0xa3, 0x51, 0xa6, 0x51, 0xa1, 0x56, 0xa1, 0x53, // TILE 00 0xa3, 0x51, 0xa6, 0x51, 0xa1, 0x56, 0xa1, 0x53, // TILE 00
0x7e, 0xdf, 0xb3, 0xdf, 0xbf, 0xd3, 0xbf, 0x7e, // TILE 01 0x7e, 0xdf, 0xb3, 0xdf, 0xbf, 0xd3, 0xbf, 0x7e, // TILE 01
@ -24,15 +26,26 @@ progmem!(
]; ];
); );
// dynamic ram variables // dynamic ram variables
struct Player {
bitmap: *const u8,
bitmap_frame: u8,
x: i16,
y: i16,
}
#[link_section = ".progmem.data"]
static mut p: Player = Player {
bitmap: get_sprite_addr!(enemies),
bitmap_frame: 0,
x: 0,
y: 0,
};
// The setup() function runs once when you turn your Arduboy on // The setup() function runs once when you turn your Arduboy on
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn setup() { pub unsafe extern "C" fn setup() {
// put your setup code here, to run once: // put your setup code here, to run once:
arduboy.begin(); arduboy.begin();
arduboy.set_frame_rate(20); arduboy.set_frame_rate(30);
arduboy.clear();
arduboy.display();
} }
// The loop() function repeats forever after setup() is done // The loop() function repeats forever after setup() is done
@ -40,4 +53,30 @@ pub unsafe extern "C" fn setup() {
#[export_name = "loop"] #[export_name = "loop"]
pub unsafe extern "C" fn loop_() { pub unsafe extern "C" fn loop_() {
// put your main code here, to run repeatedly: // put your main code here, to run repeatedly:
if !arduboy.next_frame() {
return;
}
arduboy.clear();
sprites::draw_override(p.x, p.y, p.bitmap, p.bitmap_frame);
arduboy.poll_buttons();
if arduboy.pressed(UP) {
p.y -= 1;
}
if arduboy.pressed(DOWN) {
p.y += 1;
}
if arduboy.pressed(LEFT) {
p.x -= 1;
}
if arduboy.pressed(RIGHT) {
p.x += 1;
}
if arduboy.just_pressed(A) {
p.bitmap_frame += 1;
if p.bitmap_frame > 2 {
p.bitmap_frame = 0
}
}
arduboy.display();
} }

View file

@ -1,21 +0,0 @@
pub struct Position {
x: u8,
y: u8,
}
pub enum Color {
Black(Position),
White(Position),
Gray(Position),
}
pub enum Direction {
Up,
Right,
Down,
Left,
}
pub struct Pills {
pub first_field: Color,
pub second_field: Color,
pub direction: Direction,
}

View file

@ -31,6 +31,18 @@ macro_rules! progmem {
$($rest)* $($rest)*
} }
}; };
(
$( #[$attr:meta] )*
$v:vis $id:ident mut $name:ident: [$ty:ty; _] = $value:expr;
$($rest:tt)*
) => {
$( #[$attr] )*
#[link_section = ".progmem.data"]
$v $id mut $name: [$ty; $value.len()] = $value;
$crate::progmem!{
$($rest)*
}
};
() => () () => ()
} }

1
run
View file

@ -55,4 +55,3 @@ else
echo Usage: for uploading your game \|./run.sh echo Usage: for uploading your game \|./run.sh
echo Usage: for uploading an example game \| ./run.sh \<Example Game\> echo Usage: for uploading an example game \| ./run.sh \<Example Game\>
fi fi