8 个稳定版本
| 1.1.6 | 2024 年 8 月 14 日 |
|---|---|
| 1.1.5 | 2024 年 8 月 12 日 |
| 1.0.3 | 2024 年 7 月 21 日 |
在 图形 API 中排名第 96
每月下载量 755 次
485KB
978 行代码(不包括注释)行
rust-chip8-opengl
使用 Rust 编写的 CHIP-8 模拟器。可以作为独立应用程序使用,在终端或单独的窗口中运行 CHIP-8 ROM,或者作为库模拟 CHIP-8 处理器。
安装
cargo安装 rust-chip8-opengl --全部特性
或仅使用一个接口安装
cargo安装 rust-chip8-opengl --特性终端
cargo安装 rust-chip8-opengl --特性OpenGL
使用方法
作为模拟器的使用方法
Rust-chip8-opengl[选项]
可用选项
-f, --file [FILE]:要运行的 CHIP-8 文件,例如-f ./my_game.ch8。如果省略,则模拟器将以交互模式运行,用户可以手动输入指令。-m, --mode [MODE]:运行模拟器的模式,可以是终端或OpenGL。--debug-file [FILE]:记录指令的文件。如果省略,则不记录任何指令。
键盘映射
| CHIP-8 键 | 键盘键 |
|---|---|
| 0 | X |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | Q |
| 5 | W |
| 6 | E |
| 7 | A |
| 8 | S |
| 9 | D |
| A | Z |
| B | C |
| C | 4 |
| D | R |
| E | F |
| F | V |
注意,如果以终端模式运行,则每次按键都会切换该键的状态。因此,按下 W 将切换芯片的 5 键,用户必须再次按下 W 以释放该键。
作为库的使用
cargo添加 rust-chip8-opengl
示例代码
extern crate rust_chip8_opengl;
use rust_chip8_opengl::processor::Processor;
fn main() {
let mut p = Processor::new();
// Execute individual opcodes
p.execute(0x60FF);
p.execute(0x6118);
assert_eq!(p.get_register_value(0x0), 0xFF);
assert_eq!(p.get_register_value(0x1), 0x18);
// Load a program and execute it step by step
let program = [0x6005, 0x6105, 0x8014];
// load_program also available for u8
p.load_program_u16(&program);
p.step();
p.step();
p.step();
assert_eq!(p.get_register_value(0x0), 0xA);
println!("Done");
}
请参阅Processor Docs.rs文档获取更多信息。
模拟器输出
cargo运行 ---f ./Chip8Picture.ch8 -m terminal
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
[][] [][]
[][] [][]
[][] [][]
[][] [][]
[][] [][]
[][] [][]
[][] [][][][][][][][] [] [] [] [][][][][][][][] [][][][][][][][] [][]
[][] [] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [] [][]
[][] [] [][][][][][][][] [] [][][][][][][][] [][][][][][][][] [][]
[][] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [][]
[][] [] [] [] [] [] [] [] [][]
[][] [][][][][][][][] [] [] [] [] [][][][][][][][] [][]
[][] [][]
[][] [][]
[][] [][]
[][] [][]
[][] [][]
[][] [][]
[][] [][]
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
PC | I | V0 | V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 | V9 | Va | Vb | Vc | Vd | Ve | Vf |
0x246| 0x294| 0x2C | 0x8 | 0x10 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 |
DT | ST | I0 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | I9 | IA | IB | IC | ID | IE | IF
0x0 | 0x0 | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F | F
cargo运行 ---f Chip8Picture.ch8 -m open-gl

依赖项
~2–35MB
~532K SLoC