summaryrefslogtreecommitdiff
path: root/src/devices/screen/draw_sprite.rs
blob: 5676335dfe0992c79e91f47f188ba86c123c8e9d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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.y.wrapping_add(1);
        }
    }
}