diff options
Diffstat (limited to 'src/devices/screen/draw_sprite.rs')
-rw-r--r-- | src/devices/screen/draw_sprite.rs | 25 |
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); + } + } +} |