From 6b3796c9a0d3a2f1422bcbde4790c43417659722 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Tue, 16 Apr 2024 10:51:13 +1200 Subject: Update devices to match new specifications --- src/devices/screen/draw_sprite.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/devices/screen/draw_sprite.rs (limited to 'src/devices/screen/draw_sprite.rs') diff --git a/src/devices/screen/draw_sprite.rs b/src/devices/screen/draw_sprite.rs new file mode 100644 index 0000000..9b0658c --- /dev/null +++ b/src/devices/screen/draw_sprite.rs @@ -0,0 +1,25 @@ +use super::*; + +impl ScreenDevice { + pub fn draw_sprite_1bit(&mut self, params: u8, layer: ScreenLayer) { + let sprite = self.sprite_buffer.get_1bit_sprite(params); + self.draw_sprite(sprite, layer); + } + + pub fn draw_sprite_2bit(&mut self, params: u8, layer: ScreenLayer) { + let sprite = self.sprite_buffer.get_2bit_sprite(params); + self.draw_sprite(sprite, layer); + } + + fn draw_sprite(&mut self, sprite: Sprite, layer: ScreenLayer) { + let mut pos = self.cursor; + for row in sprite { + for colour in row { + self.draw_pixel(colour, layer, pos); + pos.x = pos.x.wrapping_add(1); + } + pos.x = pos.x.wrapping_sub(8); + pos.y = pos.x.wrapping_add(1); + } + } +} -- cgit v1.2.3-70-g09d2