Add car sprites

This commit is contained in:
Stephen Seo 2023-04-29 12:20:04 +09:00
parent 1febaba023
commit 8b37eeaddf
3 changed files with 100 additions and 0 deletions

View file

@ -1,3 +1,7 @@
static mut car_state: u8 = 0;
static mut car_state_frames: u8 = 0;
const CAR_FRAMES: u8 = 10;
pub fn fill(color: u8) {
if color > 3 {
crate::trace("ERROR: Invalid value passed to helper \"fill\"");
@ -22,3 +26,18 @@ pub fn draw_mouse() -> Option<(i16, i16)> {
None
}
}
pub fn toggle_car_state() -> bool {
unsafe {
car_state_frames += 1;
if car_state_frames >= CAR_FRAMES {
car_state_frames = 0;
if car_state == 0 {
car_state = 1;
} else {
car_state = 0;
}
}
car_state != 0
}
}

View file

@ -4,6 +4,7 @@ mod wasm4;
use wasm4::*;
mod helpers;
mod sprites;
#[rustfmt::skip]
const SMILEY: [u8; 8] = [
@ -32,5 +33,25 @@ fn update() {
blit(&SMILEY, 76, 76, 8, 8, BLIT_1BPP);
text("Press X to blink", 16, 90);
unsafe { *DRAW_COLORS = 0x312 }
if helpers::toggle_car_state() {
blit(
&sprites::CAR0,
50,
40,
sprites::CAR0_WIDTH,
sprites::CAR0_HEIGHT,
sprites::CAR0_FLAGS,
);
} else {
blit(
&sprites::CAR1,
50,
40,
sprites::CAR1_WIDTH,
sprites::CAR1_HEIGHT,
sprites::CAR1_FLAGS,
);
}
if let Some((x, y)) = helpers::draw_mouse() {}
}

60
src/sprites.rs Normal file
View file

@ -0,0 +1,60 @@
// car0
pub const CAR0_WIDTH: u32 = 48;
pub const CAR0_HEIGHT: u32 = 32;
pub const CAR0_FLAGS: u32 = 1; // BLIT_2BPP
pub const CAR0: [u8; 384] = [
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xff, 0xff, 0xfc, 0xa8, 0x0a, 0xaa, 0xaa, 0x00, 0x00, 0xaa, 0xaa, 0x1f, 0xff, 0xff,
0xf0, 0x00, 0x0a, 0xaa, 0xaa, 0x80, 0x02, 0xaa, 0xaa, 0x1f, 0xff, 0xff, 0xf2, 0xa8, 0x0a, 0xaa,
0xaa, 0x80, 0x02, 0xaa, 0xaa, 0x17, 0xff, 0xff, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x15, 0xff, 0xff, 0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0xff, 0xff,
0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x7f, 0xff, 0xca, 0xa8, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x5f, 0xff, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x15, 0x5f, 0xff, 0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x57, 0xff,
0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x55, 0xff, 0xca, 0xa8, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x55, 0xff, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x05, 0x55, 0x7f, 0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x05, 0x55, 0x5f,
0xc0, 0x00, 0x0a, 0xaa, 0xa0, 0x20, 0x08, 0x0a, 0xaa, 0x00, 0x15, 0x5f, 0xca, 0xa8, 0x0a, 0xaa,
0xaa, 0x20, 0x08, 0xaa, 0xaa, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x00, 0xaa, 0xa3, 0xca, 0xa0, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x00, 0x00, 0x03,
0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x00, 0xaa, 0xa3, 0xca, 0xa0, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x00, 0x2a, 0xa3, 0xca, 0x80, 0x00, 0x0a, 0xaa, 0xa0, 0x0a, 0xaa, 0x00, 0x00, 0x00, 0x03,
0xc0, 0x00, 0xaa, 0x82, 0xaa, 0xa0, 0x0a, 0xa8, 0x2a, 0xa0, 0x2a, 0xa3, 0xca, 0x02, 0xff, 0xe0,
0xaa, 0xa0, 0x0a, 0xa0, 0xbf, 0xf8, 0x00, 0x03, 0xc0, 0x0b, 0x00, 0x38, 0x00, 0x00, 0x00, 0x02,
0xc0, 0x0e, 0x0a, 0xa3, 0xc0, 0x2c, 0x40, 0x4e, 0x00, 0x00, 0x00, 0x0b, 0x10, 0x13, 0x80, 0x03,
0xc0, 0xb1, 0x00, 0x13, 0x80, 0x00, 0x00, 0x2c, 0x40, 0x04, 0xe2, 0xa3, 0xc0, 0xb1, 0x00, 0x13,
0x80, 0x00, 0x00, 0x2c, 0x40, 0x04, 0xe0, 0x03, 0xff, 0xfc, 0x40, 0x4f, 0xff, 0xff, 0xff, 0xff,
0x10, 0x13, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff,
];
// car1
pub const CAR1_WIDTH: u32 = 48;
pub const CAR1_HEIGHT: u32 = 32;
pub const CAR1_FLAGS: u32 = 1; // BLIT_2BPP
pub const CAR1: [u8; 384] = [
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfc, 0xa8, 0x0a, 0xaa, 0xaa, 0x00, 0x00, 0xaa,
0xaa, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x0a, 0xaa, 0xaa, 0x80, 0x02, 0xaa, 0xaa, 0x1f, 0xff, 0xff,
0xf2, 0xa8, 0x0a, 0xaa, 0xaa, 0x80, 0x02, 0xaa, 0xaa, 0x17, 0xff, 0xff, 0xc0, 0x00, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0xff, 0xff, 0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x15, 0xff, 0xff, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x7f, 0xff,
0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x5f, 0xff, 0xc0, 0x00, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x5f, 0xff, 0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x15, 0x57, 0xff, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x55, 0xff,
0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x15, 0x55, 0xff, 0xc0, 0x00, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x05, 0x55, 0x7f, 0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x05, 0x55, 0x5f, 0xc0, 0x00, 0x0a, 0xaa, 0xa0, 0x20, 0x08, 0x0a, 0xaa, 0x00, 0x15, 0x5f,
0xca, 0xa8, 0x0a, 0xaa, 0xaa, 0x20, 0x08, 0xaa, 0xaa, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x00, 0xaa, 0xa3, 0xca, 0xa0, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa,
0xaa, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x00, 0xaa, 0xa3,
0xca, 0xa0, 0x0a, 0xaa, 0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x0a, 0xaa,
0xaa, 0xa0, 0x0a, 0xaa, 0xaa, 0x00, 0x2a, 0xa3, 0xca, 0x80, 0x00, 0x0a, 0xaa, 0xa0, 0x0a, 0xaa,
0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0xaa, 0x82, 0xaa, 0xa0, 0x0a, 0xa8, 0x2a, 0xa0, 0x2a, 0xa3,
0xca, 0x02, 0xff, 0xe0, 0xaa, 0xa0, 0x0a, 0xa0, 0xbf, 0xf8, 0x00, 0x03, 0xc0, 0x0b, 0xff, 0xf8,
0x00, 0x00, 0x00, 0x02, 0xff, 0xfe, 0x0a, 0xa3, 0xc0, 0x2f, 0x04, 0x3e, 0x00, 0x00, 0x00, 0x0b,
0xc1, 0x0f, 0x80, 0x03, 0xc0, 0xbc, 0x51, 0x4f, 0x80, 0x00, 0x00, 0x2f, 0x14, 0x53, 0xe2, 0xa3,
0xc0, 0xb0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x2c, 0x00, 0x00, 0xe0, 0x03, 0xff, 0xf0, 0x00, 0x03,
0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x51, 0x4f, 0xff, 0xff, 0xff, 0xff,
0x14, 0x53, 0xff, 0xff, 0xff, 0xff, 0x04, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x0f, 0xff, 0xff,
];