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