一个可以在多平台运行的任天堂GameBoy模拟器

今天为大家带来一个很有趣的游戏模拟器GoBoy

GoBoy
GoBoy是一个可以在多平台运行的任天堂GameBoy和GameBoy Color的模拟器,目前这个模拟器可以运行大多数的GameBoy游戏和一部分GameBoy Color的游戏。同时还有声音和颜色的支持,是不是很多80后小时候偷偷玩GameBoy的回忆涌上心头了?
这个模拟器是作者当初作为一个开发练习用的项目,目前仍然在不断更新中。
模拟器包含了调试函数,便于使用者理解该如何使用操作这个模拟器,方便自己个性化的写一个类似的模拟器出来。
这些调试函数会将每一步的操作码及数值打到控制台显示,不过这个可是会降低模拟器速度的哟。
是不是很心动?赶紧来看下具体怎么弄!
如何安装
想知道怎么用吗?首先我们要去github上下载一个最新版本的GoBoy,地址如下:
https://github.com/Humpheh/goboy/releases/tag/v0.5
安装go后,可以通过运行以下命令将GoBoy安装到自己的go bin中:
go get github.com/Humpheh/goboy/cmd/goboy
如果你有1.11.版本的Go,你也可以这么做
git clone https://github.com/Humpheh/goboy.git
cd goboy
go build -o goboy cmd/goboy/main.go
GoBoy可以在MacOS、windows、linux多个平台上运行,不过需要注意的是在win10上运行需要安装MinGW ,在Linux上安装则需要安装gtk。
GoBoy使用go的库像素进行控件的绑定和图形渲染,所以需要安装OpenGL。
用法
goboy zelda.gb
控制键有: ← ↑ ↓ → Z X Enter Backspace;在DMG模式下调色板可以被=循环调用,游戏时可以用F切换为全屏显示。
另外,一些要知道的设置命令:
-dmg
set to force dmg mode
-mute
mute sound output
调试或者实验的设置命令:
-cpuprofile string
write cpu profile to file (debugging)
-disableVsync
set to disable vsync (debugging)
-stepthrough
step through opcodes (debugging)
-unlocked
if to unlock the cpu speed (debugging)
调试
有一些很有用的键盘快捷键用于调试:
Q-强制切换背景
W-强制切换精灵
A-打印gb背景调色板数据(cgb)
S-打印精灵调色板数据(cgb)
D-打印背景地图到日志
E-切换操作码打印到控制台(将减慢执行速度)
7,8,9,0-切换声道1到4。
本文首发一个可以在多平台运行的任天堂GameBoy的模拟器,转载清著名出处。
保存
如果加载的游戏rom是支持电池存储的,则记住要用<rom name>.sav(例如:塞尔达.gb.sav)文件,和加载的rom放在一起保存,其中会包含盒带中RAM的转储。
程序中会默认循环在游戏运行时每秒更新一次这个保存文件。
测试
GoBoy目前通过了Blargg的“cpu指令”和“指令定时”测试ROM中的所有测试。
最后
整个项目的地址如下:https://github.com/Humpheh/goboy
如果你还想深入了解,这里有一些关于GameBoy的资料供参考:
- http://www.codeslinger.co.uk/pages/projects/gameboy/files/GB.pdf
- https://github.com/retrio/gb-test-roms
- http://www.codeslinger.co.uk/pages/projects/gameboy/beginning.html
- http://bgb.bircd.org/ - invaluable for debugging
- https://github.com/AntonioND/giibiiadvance/tree/master/docs
- https://github.com/trekawek/coffee-gb
欢迎关注我的公众号:程序猿DD,获得独家整理的免费学习资源助力你的Java学习之路!另每周赠书不停哦~
一个可以在多平台运行的任天堂GameBoy模拟器的更多相关文章
- JDBC + SAP云平台 = 运行在云端的数据库应用
在前一篇文章JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用我介绍了如何通过JPA和EclipseLink操作部署在SAP云平台上的HANA数据库实例. 在这篇文章里, ...
- 转:一个跨WINDOWS LINUX平台的线程类
来源:http://blog.csdn.net/dengxu11/article/details/7232681 继Windows下实现一个CThread封装类之后,这里我再实现一个跨WINDOWS ...
- ImageSharp一个专注于NetCore平台图像处理的开源项目
今天大家分享的是一个专注于NetCore平台图像处理的开源项目,老实说为这篇文章取名字想了5分钟,可能是词穷亦或是想更好的表达出这款开源项目的作用:这个项目在图像处理方面有很多功能,如:缩放,裁剪,绘 ...
- delphi 线程教学第七节:在多个线程时空中,把各自的代码塞到一个指定的线程时空运行
第七节:在多个线程时空中,把各自的代码塞到一个指定的线程时空运行 以 Ado 为例,常见的方法是拖一个 AdoConnection 在窗口上(或 DataModule 中), 再配合 AdoQ ...
- IDEA如何导入一个web+maven以及如何运行项目
IDEA如何导入一个web+maven以及如何运行项目 然后就可以运行你的maven项目了....
- 用代码如何检测一个android程序是否在运行
/** * 检测一个android程序是否在运行 * @param context * @param PackageName * @return */ public static boolean is ...
- 教你如何检查一个函数是否为JavaScript运行时环境内建函数
在开发过程中,对于某些API在现有的JavaScript运行时环境不支持的时候,我们大都会采用加入polyfill来解决这个问题.但有些时候我们可能需要知道现在某个API到底是否为运行时环境所原生支持 ...
- 在windows系统下打包linux平台运行的go程序
在windows系统下打包linux平台运行的go程序 1.先在main.go下打包成.exe可执行程序测试代码是否正确 //cd到main.go目录 go build //打包命令 如果打包成功则表 ...
- JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇
JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...
随机推荐
- 【python接口自动化】- DDT数据驱动测试
简单介绍 DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...
- MAC与ARP缓存中毒介绍
ARP 协议 用于地址解析,请求MAC地址. arp -a 或者 -n 查看ARP缓存表 ls(ARP) 查看scapy里的协议字段 ARP缓存中毒原理 ARP收到ARP请求报文,会将发送方的mac地 ...
- Istio 知多少 | 下一代微服务的守护者
1. 引言 在写完eShopOnContainers 知多少[12]:Envoy gateways后,就一直想进一步探索Service Mesh,最近刚在极客时间上学完<Service Mesh ...
- flask socketio 踩坑记录
在使用python3的flask-socketio+socket.io.js的时候报错 在使用python3的flask-socketio+socket.io.js的时候报错"unsuppo ...
- C语言实现蛇形矩阵
今天大一考试C语言的时候看见了这道题,下面是我转载的一个大佬的博客,自认为分析的很清楚,特来分享一下. **原文地址: https://blog.csdn.net/jack22333/article/ ...
- wpf 通过为DataGrid所绑定的数据源类型的属性设置Attribute改变DataGrid自动生成列的顺序
环境Win10 VS2019 .Net Framework4.8 在wpf中,如果为一个DataGrid绑定到一个数据源,默认情况下DataGrid会为数据源类型的每个属性生成一个列(Column)对 ...
- 【项目实践】手把手带你搞定SSM
以项目驱动学习,以实践检验真知 前言 现在使用Java后端开发使用的技术栈基本上比较统一:Spring + SpringMVC + Mybatis,即大家常说的SSM.虽然现在流行的做法是使用Spri ...
- 目前用下来最溜的MacOS微信多开工具!
一个生活微信,一个工作微信是很多上班族的基本配置. 但由于微信客户端在PC端上只能打开一个,这使得在上班时候就非常不便,一个号在PC端上登录,一个在手机上使用,但是上班时候又不能一直看手机,不然老板还 ...
- VL02N发货过账BAPI
使用BAPI函数: BAPI_OUTB_DELIVERY_CONFIRM_DEC 进行delivery的发货过账,可能会有如此的需求,就是修改实际的发货日期.规划的GI.交货日期.装载日期.传输计划日 ...
- USB过压保护芯片,高输入电压充电器(OVP)
PW2606B是一种前端过电压和过电流保护装置.它实现了广泛的输入电压范围从2.5VDC到40VDC.过电压阈值可在外部或外部编程设置为内部默认设置.集成功率路径nFET开关的低电阻确保了更好的性能电 ...