diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2024-04-16 10:51:13 +1200 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2024-04-16 10:51:26 +1200 |
commit | 6b3796c9a0d3a2f1422bcbde4790c43417659722 (patch) | |
tree | 6429a5fa2f8c4d3b26790775e07e46e6338b61d3 /src/devices/screen/draw_sprite.rs | |
parent | 28101de56231252ca0cfa6a9f107b75112c9acad (diff) | |
download | bedrock-pc-6b3796c9a0d3a2f1422bcbde4790c43417659722.zip |
Update devices to match new specifications
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); + } + } +} |