adding drboy
This commit is contained in:
parent
76ae7e35fe
commit
a33a57bd49
6 changed files with 59 additions and 36 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -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
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
use crate::utils::Position;
|
|
||||||
pub struct Enemy {
|
|
||||||
counter: u8,
|
|
||||||
pos: Position,
|
|
||||||
bitmap: u8,
|
|
||||||
}
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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
1
run
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue