summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Update version to 0.3.1v0.3.1Ben Bridle2024-04-16
|
* Fix memory, input, screen, and file devicesBen Bridle2024-04-16
| | | | | | | The memory device was never being allocated any memory, the input device wasn't scrolling correctly, the screen device was rendering sprites incorrectly, and the device ID of the file device had not been changed over from 0xA to 0x9.
* Update version to 0.3.0v0.3.0Ben Bridle2024-04-16
|
* Update devices to match new specificationsBen Bridle2024-04-16
|
* Implement new file device interfaceBen Bridle2024-01-31
| | | | | This is a complete redesign of the file device. The most notable addition is the ability to ascend and descend the file tree.
* Prevent overflow errors on stream device pointersBen Bridle2024-01-31
| | | | | The stream device pointers now use wrapping semantics in order to prevent overflow errors.
* Change stream device to use buffered streamsBen Bridle2024-01-31
| | | | | | | | Wrapping stdin and stdout with BufReader and BufWriter makes reads and writes more efficient by bundling multiple characters into a single read or write operation. In practice, this hasn't made a difference to running the numbers demo, but that demo spends the majority of processor time converting values to decimal strings.
* Refactor code without changing functionalityBen Bridle2024-01-31
| | | | | An effort to make the code shorter and more readable. This mostly affects the code for the clock device.
* Change clock cumulative timer to use 256th ticks instead of secondsBen Bridle2024-01-31
| | | | | | The "Cumulative seconds" port of the CLOCK device has been changed to be called "Cumulative timer", with the units changing from seconds to 1/256 second ticks.
* Release version 0.2.0v0.2.0Ben Bridle2024-01-31
| | | | | The bedrock_core update is a significant breaking change, so the version number needs to be incremented.
* Update bedrock_core dependency to v2.0.0Ben Bridle2024-01-20
| | | | | | | Version 2 of bedrock_core contains updated to the Bedrock instruction set, reflecting a recent change to the Bedrock specifications. Updating the dependency allows bytecode assembled by the most recent version of the assembler to evaluate correctly on this emulator.
* Make orthogonal line drawing operations work with signed coordinatesBen Bridle2024-01-06
| | | | | | | | | | | | | | | | | | The vector line drawing operation of the screen device uses optimised methods when drawing horizontal and vertical lines. The emulator now interprets the coordinates of these lines as signed values, to allow for the correct rendering of orthogonal lines where the coordinates of the left or top edges are off-screen. Diagonal lines are yet to be tackled. The bounding-box calculations shared by the rectangle and orthogonal line drawing methods have also been split off into their own method, significantly reducing the code duplication between all four of the methods which require this functionality. This commit also makes aesthetic changes to the code in the draw_diagonal_line method to improve readability and brevity, as a part of the changes made to the draw_line method when the points parameter was removed from each of the three lower line-drawing methods.
* Reduce width of ScreenDevice::draw_sprite methodBen Bridle2024-01-06
| | | | | This method was exceeding the 80-character line limit, which was interfering with the centering behaviour of my text editor.
* Move ScreenDevice::fill_layer methodBen Bridle2024-01-06
| | | | | The method was between the two draw_sprite methods, but it fits better just after draw_pixel.
* Make rectangle drawing operations work with signed valuesBen Bridle2024-01-05
| | | | | | | The vector+size draw operations of the screen device draw textured and untextured rectangles. The emulator now interprets the coordinates of a rectangle as signed values, to allow for the correct rendering of rectangles where the coordinates of the left or top edges are off-screen.
* Update screen device code to reflect specification changesBen Bridle2024-01-05
| | | | | | | 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.
* Fix Cargo.lock errorBen Bridle2024-01-03
| | | | | The Cargo.lock file previously referred to a commit of the geometry crate which had been overwritten and did not exist in the repository.
* Fix multiplication error in math deviceBen Bridle2023-12-28
| | | | | | The order of the two result values from the widening multiply operation in Rust was reversed, leading to incorrect multiplication results when using the math device.
* First commitv0.1.0Ben Bridle2023-12-24