Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rust-n64/n64-pac
Low-level CPU and register abstractions for the N64 console
https://github.com/rust-n64/n64-pac
embedded n64 no-std rust
Last synced: about 23 hours ago
JSON representation
Low-level CPU and register abstractions for the N64 console
- Host: GitHub
- URL: https://github.com/rust-n64/n64-pac
- Owner: rust-n64
- License: mit
- Created: 2022-11-02T23:15:48.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-09-22T05:04:21.000Z (about 1 year ago)
- Last Synced: 2024-05-02T02:16:17.576Z (7 months ago)
- Topics: embedded, n64, no-std, rust
- Language: Rust
- Homepage:
- Size: 66.4 KB
- Stars: 10
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)
[![Crates.io](https://img.shields.io/crates/v/n64-pac?style=flat-square)](https://crates.io/crates/n64-pac)
[![Documentation](https://img.shields.io/docsrs/n64-pac?style=flat-square)](https://docs.rs/n64-pac)### Description
This crate is a low-level abstraction (aka a [Peripheral Access Crate](https://rust-embedded.github.io/book/start/registers.html))
over the CPU and memory-mapped registers available on the Nintendo 64 console.Due to the low-level nature of the API, most projects (games especially) are unlikely to use this crate directly.
### API Coverage
| Peripheral | Registers | Complete |
|:----------:|:---------:|:--------:|
| CP0 | 32 of 32 | ✓ |
| CP1 | 2 of 2* | ✓ |
| MI | 4 of 4 | ✓ |
| VI | 16 of 16 | ✓ |
| AI | 6 of 6 | ✓ |
| PI | 13 of 13 | ✓ |
| RI | 0 of ? | ✕ |
| SI | 6 of 6** | ✓ |_* The CP1/FPU has two control registers. The general purpose floating-point registers are manually accessible, but are
typically handled by the compiler when using `f32` or `f64` types._
_** The SI might contain more registers that haven't been fully researched._### Usage
In your project's `Cargo.toml`:
```Toml
[dependencies]
n64-pac = "0.x.y"
```Refer to the [docs](https://docs.rs/n64-pac) for examples and details regarding safety.
This crate is only intended to be used in the N64 embedded environment.
### Nightly Rust
Please note this crate requires a nightly rust toolchain in order to use nightly-only inline assembly features and
arbitrary discriminants.