跳转到主要内容

gambatte游戏男孩颜色模拟器的终端前端

项目描述

gambatte-terminal

gambatte的终端前端,游戏男孩颜色模拟器。

它支持

  • 16色,256色和24位色终端
  • 从模拟器播放音频
  • 使用TAS输入文件作为游戏输入
  • 使用键盘按键作为游戏输入

安装

Linux,Windows和macos上提供python 3.6,3.7,3.8和3.9的轮子

$ pip3 install gambaterm

使用和参数

使用

usage: gambaterm [-h] [--input-file INPUT_FILE] [--frame-advance FRAME_ADVANCE] [--break-after BREAK_AFTER] [--speed-factor SPEED_FACTOR] [--force-gameboy]
                 [--skip-inputs SKIP_INPUTS] [--cpr-sync] [--disable-audio] [--color-mode COLOR_MODE]
                 ROM

位置参数

  • ROM

    GB或GBC rom文件的路径

可选参数

  • --input-file INPUT_FILE, -i INPUT_FILE

    bizhawk BK2输入文件的路径

  • --frame-advance FRAME_ADVANCE, --fa FRAME_ADVANCE

    运行下一个帧之前的帧数(默认为1)

  • --break-after BREAK_AFTER, --ba BREAK_AFTER

    在强制模拟器停止之前运行的帧数(默认不停止)

  • --speed-factor SPEED_FACTOR, --sf SPEED_FACTOR

    应用于模拟的速度因子(默认为1.0对应60 FPS)

  • --force-gameboy, --fg

    强制模拟器将rom视为GB文件

  • --skip-inputs SKIP_INPUTS, --si SKIP_INPUTS

    跳过帧输入的数量以补偿BIOS的缺乏(默认为188)

  • --cpr-sync, --cs

    使用CPR同步来防止视频缓冲

  • --enable-controller, --ec

    启用游戏控制器支持

  • --disable-audio, --da

    完全禁用音频

  • --color-mode COLOR_MODE, -c COLOR_MODE

    强制颜色模式(1:4灰度颜色,2:16颜色,3:256颜色,4:24位颜色)

SSH服务器

可以通过SSH提供模拟,尽管客户端没有X服务器和ssh -X选项将无法向模拟器发送输入。使用gambaterm-ssh --help获取更多信息。

终端支持

并非所有终端都能提供愉快的体验。主要标准包括

  • 支持基本的ANSI代码(VT100) 更具体地说,设置背景/前景颜色以及移动光标(绝对和相对)。这些通常都支持。

  • 支持至少256种颜色 这些通常都支持。16种颜色也可以工作,但看起来不太好。在这种情况下,最好使用灰度颜色,使用 --force-gameboy--color-mode=1

  • 支持UTF-8和良好的Unicode块元素渲染 更具体地说,以下字符 ▄ █ ▀。此外,对齐可能不准确(例如像素之间的小空隙)。这并不总是得到良好的支持。

  • 良好的渲染性能 终端必须能够每秒处理大约500KB的请求,以实现“强烈”帧的流畅渲染。通常,最强烈的帧发生在两个详细场景的屏幕转换期间。

下表总结了我尝试最常用的终端模拟器时的发现。以下是关于Linux的内容

Linux 状态 颜色 Unicode渲染 性能 评论
GNOME终端 优秀 24位颜色 良好 60 FPS
Terminator 优秀 24位颜色 良好 60 FPS
Kitty 优秀 24位颜色 良好 60 FPS
XTerm 良好 24位颜色 良好 60 FPS 没有调整大小快捷键
Termit 一般 24位颜色 良好 60 FPS 没有窗口标题
Rxvt 一般 256种颜色 良好 60 FPS 没有调整大小快捷键
Mlterm 一般 24位颜色 轻微对齐错误 60 FPS 没有调整大小快捷键
Terminology 一般 24位颜色 可能的对齐错误 30 FPS 奇怪的颜色

关于MacOS

MacOS 状态 颜色 Unicode渲染 性能 评论
iTerm2 良好 24位颜色 良好 30 FPS
终端 无法玩 256种颜色 对齐错误 20 FPS

关于Windows

Windows 状态 颜色 Unicode渲染 性能 评论
Windows终端 不愉快 24位颜色 良好 30 FPS 显示错误
Cmder 无法玩 24位颜色 良好 2 FPS 没有窗口标题
Terminus 无法玩 24位颜色 对齐错误 10 FPS
命令提示符 损坏 N/A N/A N/A 不支持ANSI代码
Git bash 损坏 N/A N/A N/A 与winpty不兼容

终端大小

模拟器使用屏幕上的单个字符来显示两个垂直对齐的像素,如下所示 ▄▀。由于Gameboy的宽度为160像素,高度为144像素,因此您需要将终端设置为至少160个字符宽,72个字符高才能显示整个屏幕。将终端设置为全屏通常就足够了,但您可能需要调整字符大小,通常使用 ctrl - / ctrl +ctrl wheel 快捷键。

键盘、游戏控制器和文件输入

默认启用了键盘控制,而游戏控制器控制必须使用 --enable-controller--ec 启用。目前无法配置按键绑定

按钮 键盘 控制器
方向 箭头 左帽/左棒
A F / V / Space 按钮0/按钮3
B D / C / Alt 按钮1/按钮2
开始 右Ctrl/Enter 按钮7
选择 右Shift/删除 按钮6

键释放,通常对于玩游戏是必需的,不能通过 stdin 检测到。然后需要访问窗口系统来获取按键。这有几个问题

  • 检测与终端对应的窗口可能很困难。对于X11,最佳解决方案是查找当前聚焦的窗口。对于其他系统,后备解决方案是使用全局热键。

  • 它仅通过使用 ssh -X 的客户端与具有X服务器的SSH进行工作,这意味着Windows和MacOS用户必须运行X服务器。此外,与不信任的服务器连接使用 -X 是一个坏主意。

  • 可能需要额外的权限来访问窗口系统,特别是在MacOS上(参见 此指南

还可以使用bizhawk BK2输入文件,通过使用 --input-file(或 -i)选项来玩辅助速度运行。

动机

说实话,使用这款Gameboy模拟器并没有真正的原因,除非你可能会觉得它很有趣。这个项目的动机只是尽可能地将视频游戏机模拟器在终端中运行的想法推到极致。似乎已经有一个类似的尝试,它使用了不同的方法来显示视频流。无论如何,我对这个项目非常满意,也有些惊讶,我能够将它推进到玩游戏实际上很有趣的程度。特别是,我已经在XTerm中以60 FPS完成了《弹跳球》,现在我正在期待玩更多自制游戏 :)

依赖项

以下是本项目使用的依赖项列表,所有都是非常优秀的开源库

联系方式

Vincent Michel

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

gambaterm-0.12.7.tar.gz (144.6 kB 查看哈希值)

上传时间

构建分布

gambaterm-0.12.7-cp312-cp312-win_amd64.whl (194.0 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

gambaterm-0.12.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

gambaterm-0.12.7-cp312-cp312-macosx_11_0_arm64.whl (221.8 kB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

gambaterm-0.12.7-cp312-cp312-macosx_10_9_x86_64.whl (226.1 kB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86-64

gambaterm-0.12.7-cp311-cp311-win_amd64.whl (193.1 kB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

gambaterm-0.12.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

gambaterm-0.12.7-cp311-cp311-macosx_11_0_arm64.whl (221.4 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

gambaterm-0.12.7-cp311-cp311-macosx_10_9_x86_64.whl (225.7 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

gambaterm-0.12.7-cp310-cp310-win_amd64.whl (193.0 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

gambaterm-0.12.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

gambaterm-0.12.7-cp310-cp310-macosx_11_0_arm64.whl (221.4 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

gambaterm-0.12.7-cp310-cp310-macosx_10_9_x86_64.whl (225.6 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

gambaterm-0.12.7-cp39-cp39-win_amd64.whl (193.5 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

gambaterm-0.12.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

gambaterm-0.12.7-cp39-cp39-macosx_11_0_arm64.whl (222.3 kB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ ARM64

gambaterm-0.12.7-cp39-cp39-macosx_10_9_x86_64.whl (226.8 kB 查看哈希值)

上传时间 CPython 3.9 macOS 10.9+ x86-64

gambaterm-0.12.7-cp38-cp38-win_amd64.whl (194.2 kB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

gambaterm-0.12.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

gambaterm-0.12.7-cp38-cp38-macosx_11_0_arm64.whl (222.5 kB 查看哈希值)

上传时间 CPython 3.8 macOS 11.0+ ARM64

gambaterm-0.12.7-cp38-cp38-macosx_10_9_x86_64.whl (227.4 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.9+ x86-64

gambaterm-0.12.7-cp37-cp37m-win_amd64.whl (193.8 kB 查看哈希值)

上传时间 CPython 3.7m Windows x86-64

gambaterm-0.12.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB 查看哈希值)

上传时间 CPython 3.7m manylinux: glibc 2.17+ x86-64

gambaterm-0.12.7-cp37-cp37m-macosx_10_9_x86_64.whl (227.0 kB 查看哈希值)

上传时间 CPython 3.7m macOS 10.9+ x86-64

支持者