summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bridle <bridle.benjamin@gmail.com>2024-01-05 18:10:59 +1300
committerBen Bridle <bridle.benjamin@gmail.com>2024-01-05 18:10:59 +1300
commitb655cb39a445f91ca122c8504d0378e2c3b94b69 (patch)
tree560a7c1b4c7e96f83fb32f56cda95a67d399f9b4
parent6d98b6831aac1eec6f5b9ebfc51403ca34d50f54 (diff)
downloadbedrock-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.rs2
-rw-r--r--src/devices/screen/vector_points.rs13
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
}
}