diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2024-01-05 18:10:59 +1300 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2024-01-05 18:10:59 +1300 |
commit | b655cb39a445f91ca122c8504d0378e2c3b94b69 (patch) | |
tree | 560a7c1b4c7e96f83fb32f56cda95a67d399f9b4 | |
parent | 6d98b6831aac1eec6f5b9ebfc51403ca34d50f54 (diff) | |
download | bedrock-pc-b655cb39a445f91ca122c8504d0378e2c3b94b69.zip |
Update screen device code to reflect specification changes
The vector+size+sprite draw operation of the screen device has been
changed in the specification from drawing a 1-bit textured triangle to
drawing a 1-bit textured line. This draw operation had not yet been
implemented, so this commit does not affect emulator functionality.
-rw-r--r-- | src/devices/screen.rs | 2 | ||||
-rw-r--r-- | src/devices/screen/vector_points.rs | 13 |
2 files changed, 4 insertions, 11 deletions
diff --git a/src/devices/screen.rs b/src/devices/screen.rs index df9539a..0b5e571 100644 --- a/src/devices/screen.rs +++ b/src/devices/screen.rs @@ -204,7 +204,7 @@ impl ScreenDevice { 0x30 => self.draw_sprite_2bit(params, layer), 0x40 => self.draw_line(params, layer), 0x50 => self.draw_rect(params, layer), - 0x60 => todo!("Draw 1-bit sprite triangle"), + 0x60 => todo!("Draw 1-bit textured line"), 0x70 => self.draw_rect_1bit(params, layer), _ => unreachable!(), }; diff --git a/src/devices/screen/vector_points.rs b/src/devices/screen/vector_points.rs index 97d95b6..e6c28ef 100644 --- a/src/devices/screen/vector_points.rs +++ b/src/devices/screen/vector_points.rs @@ -1,28 +1,21 @@ use crate::*; pub struct VectorPoints { - points: [ScreenPosition; 3], + points: [ScreenPosition; 2], pointer: usize, } impl VectorPoints { pub fn new() -> Self { - Self { points: [ScreenPosition::ZERO; 3], pointer: 0 } + Self { points: [ScreenPosition::ZERO; 2], pointer: 0 } } pub fn push(&mut self, point: ScreenPosition) { self.points[self.pointer] = point; - self.pointer = (self.pointer + 1) % 3; + self.pointer = (self.pointer + 1) % 2; } pub fn get_pair(&self) -> [ScreenPosition; 2] { - [ - self.points[(self.pointer + 1) % 3], - self.points[(self.pointer + 2) % 3], - ] - } - - pub fn get_triple(&self) -> [ScreenPosition; 3] { self.points } } |