summaryrefslogtreecommitdiff
path: root/src/devices/screen/draw_sprite.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/screen/draw_sprite.rs')
-rw-r--r--src/devices/screen/draw_sprite.rs25
1 files changed, 25 insertions, 0 deletions
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);
+ }
+ }
+}