summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Add colours to info and error messagesBen Bridle2024-10-30
| | | | | | This is to match the message format printed by the bedrock-asm crate. fix
* Load and display symbols in debug informationBen Bridle2024-10-30
| | | | | | The assembler saves out symbols files, which are loaded automatically by the emulator when present. The name and location of the most recent label is displayed with the debug information when symbols are loaded.
* Add option to show mouse cursorBen Bridle2024-10-29
| | | | | | This is to assist with debugging, when a program hasn't yet implemented its own mouse cursor. Phosphor had to be updated to properly support this.
* Divide the default screen dimensions by the zoom factorBen Bridle2024-10-29
| | | | | Without this, the otherwise normal default screen dimensions of 800x600 would be scaled to a physical size of 2400x1800 at a zoom factor of 3.
* Canonicalize the source path for the assemblerBen Bridle2024-10-29
| | | | | | | | | | When a relative path with only one path component is passed to the assembler, the parent of that path cannot be determined and so the project libraries descending from that parent cannot be included in the program. To fix this, we canonicalize the path before it is used. This also makes the path comments generated for the project source files more stable and readable.
* Make configuration code less confusingBen Bridle2024-10-29
| | | | | | | | The unwrap_or for the the dimensions value was to get around the fact that we don't have guaranteed dimensions at this point. It makes it look like something more important is happening though, so instead we just make the config struct mutable and overwrite the dimensions field with the real value when we get access to it.
* Rename --encode-stdin option to --decode-stdinBen Bridle2024-10-29
| | | | This more accurately reflects its function.
* Rewrite emulatorv1.0.0-alpha1Ben Bridle2024-10-28
| | | | | | | | | | | | | | | This is a complete rewrite and restructure of the entire emulator project, as part of the effort in locking down the Bedrock specification and in creating much better tooling for creating and using Bedrock programs. This commit adds a command-line argument scheme, an embedded assembler, a headless emulator for use in non-graphical environments, deferred window creation for programs that do not access the screen device, and new versions of phosphor and bedrock-core. The new version of phosphor supports multi-window programs, which will make it possible to implement program forking in the system device later on, and the new version of bedrock-core implements the final core specification.
* Fix mapping of draw operations in screen deviceBen Bridle2024-09-10
| | | | | The mapping of draw codes to draw operations didn't match the screen device specification. This error was introduced in commit 6b3796c.
* Update version to 0.5.0v0.5.0Ben Bridle2024-09-07
|
* Update bedrock_core dependency to v4.0.0Ben Bridle2024-09-07
| | | | | This version of bedrock_core conforms to the final Bedrock core specification, which will not be changed from this point forward.
* Implement DB4 instruction for unit testsBen Bridle2024-09-07
| | | | | | | | | | When the DB4 instruction is evaluated, a single '.' character will be printed to stdout if the return stack is empty and the working stack contains a single 0xff byte, otherwise a single 'X' character will be printed to stdout. This is to facilitate unit testing the instruction set with a Bedrock program, from within the emulator.
* Update version to 0.4.1v0.4.1Ben Bridle2024-08-19
|
* Improve performance of hierarchical file navigationBen Bridle2024-08-13
| | | | | | | | The most recently closed directory listing is cached instead of being discarded. The next time a directory is to be opened, if the file path is the same as the cached directory, the cached directory listing is used in order to save the entire listing from having to be regenerated. This is expected to result in performance gains on Windows.
* Prevent unused variable warning on LinuxBen Bridle2024-08-11
| | | | | The base variable is only used when compiling on Windows, so an unused variable warning is raised when compiling on Linux.
* Update version to 0.4.0v0.4.0Ben Bridle2024-08-10
|
* Update phosphor dependency to v2.0.0Ben Bridle2024-08-10
|
* Fix panic in ReadOnlyTextBufferBen Bridle2024-08-10
| | | | | | | | | Previously when reading from a ReadOnlyTextBuffer the pointer would fall off the end and crash the emulator. This commit also makes the ReadOnlyTextBuffer Unicode-compatible, rather than the previous behaviour of clamping every character into the ASCII range.
* Fix ascend-to-parent behaviour of file deviceBen Bridle2024-08-10
| | | | | | | We were finding the parent of the relative path and then passing this to the BedrockFilePath::from_path constructor, but this constructor expects to be passed an absolute path and so was unconditionally returning None.
* Refactor the file deviceBen Bridle2024-08-07
| | | | | | | | This is the Windows side of the refactoring job. The windows crate has been added as a dependency in order to get a list of available drives by drive letter, and a virtual top-level root directory has been implemented in the Windows code to make it possible for programs to hierarchically navigate between available drives.
* Refactor the file deviceBen Bridle2024-08-06
| | | | | | | | | | | | | | | | The major feature of this refactor is the creation of BedrockFilePath, a type which can be losslessly converted into an operating-system specific path or a Bedrock-style byte path. It also prevents file paths which can't be represented as Bedrock-style byte paths from being constructed, and allows the use of a base directory which acts as an inescapable sandbox. BedrockFilePath will support the creation of a virtual root directory on Windows which will allow navigation between drive letters via the standard hierarchical navigation ports. This commit has been tested on Linux, but not yet Windows. Further work is expected before the new code will work on Windows.
* Increase frame time to 8msBen Bridle2024-08-05
| | | | | This is slightly more efficient on the CPU, while not making any visible difference to the user.
* Update cursor callback to latest version of PhosphorBen Bridle2024-08-04
| | | | | The most recent Phosphor commit c141d8f unified the is_cursor_visible and cursor_icon callbacks.
* Set error flag when file device cannot ascend to parent directoryBen Bridle2024-08-04
| | | | This should have been happening previously, but was missed.
* Fix compilation on LinuxBen Bridle2024-08-04
| | | | | Some Windows-only library functions were added in during a previous commit while I was developing on Windows.
* Implement fullscreen modeBen Bridle2024-07-31
| | | | Pressing F11 toggles emulator fullscreen mode.
* Improve frame-rate stabilityBen Bridle2024-07-31
| | | | | | | | | | | | | | | | | | Some frames would sporadically lag between on_process and on_render, because on_process would bail once one frame had elapsed since the end of the previous on_process, and the processor would not always reach a sleep point in this time. This was really an issue to do with with the time taken between the end of the previous on_process and the start of the current on_process. To fix this, the on_process invocation will run the processor for a full frame, without subtracting the time elapsed between frames. This seems to have no negative effects. It also allows us to remove end_of_process from the emulator. The sleep in the Signal::Sleep handler has also been removed, because it serves no real purpose and will most likely cause issues in the future.
* Expose window title of emulatorBen Bridle2024-07-30
| | | | | | The window title of the emulator can be set when constructing a new instance of the emulator. This is useful when a Bedrock program is baked into the emulator for distribution.
* Rework main loop timingsBen Bridle2024-07-30
| | | | | | | The program is vastly more efficient to run, consuming only 1.5% CPU instead of 13% during testing on Windows 10. Input events are handled four times as frequently now, which makes for smoother lines when drawing in Cobalt.
* Improve comment clarityBen Bridle2024-07-30
|
* Update file device to compile on WindowsBen Bridle2024-07-30
| | | | | | | | Construction of OsStrings is handled differently between Windows and Unix, using platform-specific APIs. The method OsStr::as_bytes was also changed to OsStr::as_encoded_bytes at some point between Rust versions 1.69 and 1.80.
* Fix crash when loading a directory containing weird entriesBen Bridle2024-06-30
| | | | | | | It was previously assumed that every entry in a directory would be either a file or a directory, but a non-file and non-directory entry has been encountered in the wild. In this case, just ignore the file, leaving it out of the directory listing.
* Set file operation success flag when ascending and descendingBen Bridle2024-06-30
| | | | | This is to allow the program to detect whether the previous ascend or descend operation succeeded.
* Prevent clock device from locking out all other devicesBen Bridle2024-06-30
| | | | | | | When the clock device was first in order to be responded to, a fast enough recurring timer could successfully prevent any other device from being able to wake the emulator, if a timer was able to expire in the time it took to run the clock wake handler.
* Improve error messageBen Bridle2024-06-09
|
* Hide all dot-prefixed files from directory listingsBen Bridle2024-06-09
| | | | | | This is a temporary fix to make directories more navigable. This will be removed when Cobalt can hide dot-prefixed filenames from directory listings by itself.
* Update file device for releaseBen Bridle2024-06-09
| | | | | | | | | | | | | | Removed the sandbox directory of the file device, so the file device is now sandboxed to the root directory. The sandboxing code has been left intact for future use. Permission flags have been added to the file device to allow each category of file operation to be enabled or disabled in the emulator. The default directory is set to be the current working directory from when the emulator boots. This is the directory which is used when the program attempts to ascend to the parent directory when no entry is currently open.
* Update dependenciesBen Bridle2024-06-09
|
* Simplify scroll value access codeBen Bridle2024-06-01
|
* Flush stream device before printing debug informationBen Bridle2024-06-01
| | | | | | Without this, text pushed to the stream device before a debug instruction would often display after the output for that debug instruction.
* Sort directory children in case-agnostic alphabetic orderBen Bridle2024-05-30
|
* Simplify file device debug messagesBen Bridle2024-04-24
|
* Flush file contents each frame and when closing the fileBen Bridle2024-04-24
|
* Remove unused constantsBen Bridle2024-04-22
|
* Fix memory deviceBen Bridle2024-04-22
| | | | | | | | | | | There was confusion between the role of the page_limit variable in the memory device, where it was being used to mean both the absolute upper limit of pages that are allowed to be allocated, but also to mean the number of pages that the program would like to be allocated when needed. To fix this, the program is now just told the full number of pages that it is allowed to use, without first requiring that the program request a particular number of pages.
* 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.