8个版本
0.1.7 | 2022年8月10日 |
---|---|
0.1.6 | 2022年8月9日 |
0.1.5 | 2022年7月25日 |
0.1.4 | 2021年11月9日 |
0.0.1 | 2021年10月11日 |
#77 in 模拟器
26KB
368 行
Termin-8
终端运行的CHIP-8模拟器,且符合Octo规范。
由deca
提供支持,它支持CHIP-8、SUPER-CHIP(SCHIP)和XO-CHIP程序。
它还会自动调整其显示以适应您的终端(以牺牲广泛字体支持和XO-CHIP在最小尺寸的颜色为代价)。
安装
首先,安装Rust。然后,在您的终端
cargo install termin-8
用法
Termin-8应在Windows、Linux和macOS上工作。如果不工作,请提交问题。
从互联网下载CHIP-8 ROM,如Chip8社区存档,或使用Octo制作自己的。
然后在您的终端中运行Termin-8
termin-8 ROM
有一些命令行选项
termin-8 --help
十六进制CHIP-8键盘通常映射到以下键盘键
1 | 2 | 3 | 4 |
q | w | e | r |
a | s | d | f |
z | x | c | v |
此外,箭头键绑定到WASD。
您可以按Esc键退出。
调试功能
Termin-8可以用作测试开发CHIP-8游戏,作为Octo(网页)和C-Octo(SDL)的替代品。然而,Termin-8还不能自行编译Octo代码。在全部终端工作流程中,使用C-Octo的octo-cli
工具来编译您的代码。
当Termin-8运行时,按以下键进行进一步调试
- i:中断执行并显示寄存器内容(或中断后继续执行)
- o:单步(中断时)
终端要求
请注意,终端要求取决于您尝试运行的程序类型。
这里有一个表格,列出了运行CHIP-8程序时所需的终端大小和Unicode支持,以便获得XO-CHIP颜色支持等功能,这取决于您运行CHIP-8程序的分辨率和字体对Unicode区块元素的支持
CHIP-8分辨率 | Unicode版本 | 最小终端大小 | 像素大小 | XO-CHIP颜色 |
---|---|---|---|---|
64x32 (低分辨率) CHIP-8, SCHIP, XO-CHIP |
1.0.0 | 128x32 | ██ | ✔ |
64x32 | █ | ✔ | ||
64x16 | ▀ | ✔ | ||
3.2 | 32x16 | ▘ | ❌ | |
128x64 (高分辨率) SCHIP, XO-CHIP |
1.0.0 | 256x64 | ██ | ✔ |
128x64 | █ | ✔ | ||
128x32 | ▀ | ✔ | ||
3.2 | 64x32 | ▘ | ❌ |
CHIP-8分辨率 | Unicode版本 | 最小终端大小 | 像素大小 | XO-CHIP颜色 |
---|---|---|---|---|
64x32 (低分辨率) CHIP-8, SCHIP, XO-CHIP |
1.0.0 | 128x32 | ██ | ✔ |
64x32 | █ | ✔ | ||
64x16 | ▀ | ✔ | ||
3.2 | 32x16 | ▘ | ❌ | |
3.0 | 32x8 | ⠁ | ❌ | |
128x64 (高分辨率) SCHIP, XO-CHIP |
1.0.0 | 256x64 | ██ | ✔ |
128x64 | █ | ✔ | ||
128x32 | ▀ | ✔ | ||
3.2 | 64x32 | ▘ | ❌ | |
3.0 | 64x16 | ⠁ | ❌ |
注意事项
- 在您的浏览器中,最小的像素块(▘)可能看起来是方形的,但您的等宽终端字体可能会有所不同。
- 几乎所有字体都支持Unicode 1.0.0中的基本Unicode区块元素,这些元素用于较大的像素块(█, ▀ 和 ▄),但Unicode 3.0和3.2中最小块(如▘)的支持要少得多。例如,DejaVu和Fira Code字体支持它们。
- 最小的像素块(如⠁)是Unicode盲文符号,它们不太常见。修改过的Nerd Fonts支持它们。
限制
- 有些游戏可能无法正确检测按键。这是因为在终端中检测按键释放非常困难。Termin-8对按键持续时间进行了近似,但您的操作系统“按键重复”设置将影响它可以多频繁地轮询按键。
- 当有声音时,您的终端的蜂鸣声会响,但XO-CHIP音乐不受支持(因为终端本身不能播放声音)。
配置文件
Termin-8将在用户主目录中寻找名为.octo.rc
的文件,该文件可用于配置一些有用的设置。此文件也由C-Octo使用。
您还可以通过命令行选项-c
提供配置文件。这可以用于为特定游戏设置一些选项——颜色,以匹配作者的视觉艺术,或“古怪”的行为,以便游戏正常运行。
该文件具有传统的.INI
结构——空行或以#
开头的行将被忽略,其余部分由用=
分隔的键和值组成。有意义的键如下
-
core.tickrate
:每60Hz帧要执行的CHIP-8指令数量。 -
core.max_rom
:编译器在汇编ROM时允许的最大字节数。 -
core.font
:以下之一{octo
,vip
,dream_6800
,eti_660
,schip
,fish
}用于选择内置的CHIP-8字体。 -
color.plane0
,color.plane1
,color.plane2
,color.plane3
:4个XO-CHIP“平面”颜色。 -
color.background
:当没有播放声音时,绘制在CHIP-8显示背后的边框。 -
color.sound
:播放声音时的交替边框颜色。 -
quirks.shift
:如果为1
,则vx <<= vy
和vx >>= vy
将在原地对vx
进行修改并忽略vy
,类似于SCHIP。 -
quirks.loadstore
:如果为1
,则load
和store
不会在i
上进行后增量,类似于SCHIP。 -
quirks.jump0
:如果为1
,模拟SCHIP在HP-48上的一个错误行为:jump0
的目标地址的高4位决定了使用的偏移寄存器(而不是始终使用v0
)。 -
quirks.logic
:如果为1
,在&=
、|=
和^=
之后清除vf
。在VIP上,这些指令会使vf
处于未知状态。 -
quirks.clip
:如果为1
,则不会将精灵绘制“绕过”显示的边缘。 -
quirks.vblank
:如果为1
,则绘制精灵将阻塞,直到60Hz帧的结束,类似于VIP。
所有颜色均指定为六位十六进制RGB,如 996600
。默认的quirks设置、调色板和其他选项与web-octo相同。
依赖项
~8-21MB
~251K SLoC