https://github.com/aaronc81/delta-pico-sim
Desktop simulator for the Delta Pico
https://github.com/aaronc81/delta-pico-sim
Last synced: 6 months ago
JSON representation
Desktop simulator for the Delta Pico
- Host: GitHub
- URL: https://github.com/aaronc81/delta-pico-sim
- Owner: AaronC81
- Created: 2022-07-01T23:24:07.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-08-24T21:01:01.000Z (over 3 years ago)
- Last Synced: 2025-03-06T15:17:08.365Z (10 months ago)
- Language: Rust
- Size: 78.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Delta Pico Simulator
This is a desktop simulator for my [Delta Pico](https://github.com/AaronC81/delta-pico) graphing
calculator.
This works by providing an implementation of `ApplicationFramework` (the Delta Pico firmware's HAL
trait), which draws to a window backed by `minifb` and translates keystrokes into keypad buttons.
## Button Mapping
Buttons are directly mapped to their keyboard equivalents where possible (e.g. digit buttons are
mapped to the number keys). Other important keys are mapped as follows:
| Physical button | Keyboard key |
|---|---|
| EXE | Enter |
| MENU | Escape |
| SHIFT | Tab |
| LIST | Space |
See the `BUTTON_MAPPING` constant in the source for a full list.
## Usage
1. Check out the main Delta Pico repository
2. Check out this repository
3. Adjust the `delta-pico-rust` crate path in `Cargo.toml` to match the location of the `rust`
subfolder in your main Delta Pico checkout
4. `cargo run` in this repository
## Functionality
Most features work fine, with these (known) exceptions:
- The simulator doesn't have a bootloader
- Colours don't show up exactly the same on the simulator - what looks grey on the real thing shows
up as a dark green on the simulator
Also, `minifb` doesn't seem to like not being updated for long periods, on macOS at least. If you
move the window between displays, you might end up with artifacts until the screen updates again.
## Why isn't this in the main repo?
Unfortunately, rust-analyzer does not seem to like mixed `std` and `no-std` targets in the same
workspace! Including this crate in the main repository makes rust-analyzer stop working almost
completely, so I've kept it separate instead, and just open a second VS Code window for this crate.