传统的 Gameboy 游戏模拟:
当然,正如标题描述,只需要一条命令,无需额外安装软件,你就能在命令行下游玩 Gameboy 游戏了:
telnet gameboy.live 1989
要注意的是,云游戏只能在支持 ANSI 标准和 UTF-8 编码的终端下游玩。Windows 下可以在 WSL 里玩。如果提示命令未找到,安装 telnet 就行了。
GitHub: https://github.com/HFO4/gameboy.live
(刚好赶上成为平成最后的 Gameboy 模拟器)
这个项目呢,并不是为了模拟器本身,毕竟更完善更稳定的模拟器有不少。完成这个项目更偏向是自我学习吧,楼主目前大二,上学期刚学了汇编和计组,老师也劝我们大学期前写一点成型的项目出来,再加上我是个任天堂粉丝,虽然没有经历过那个时代,但又对老式家用机和掌机有着额外的兴趣,特别是 Gameboy。给 Gameboy 写模拟器一直算是我的一个梦想吧,之前也稍微研究过 Gameboy 通信接口(有关相机和打印机外设的,有兴趣的可以去看下之前写的文章:用树莓派模拟 Game Boy 打印机及相机外设),对 Gameboy 硬件有了基本的了解,那个时候突然发现用刚学的计组好像...可以对模拟器原理理解个大概了,然后就跳入了这个深坑。
开始写代码之前我构思了很久,虽然大概理解了基本结构,但是具体的实现还是无从下手。但是我偶然间看到一篇关于 Gameboy 模拟器的 Tutorial,看完后感到醍醐灌顶,思路上就很清晰了。
真正写代码的过程,真的一言难尽。大体上就是写半小时代码,Debug 一整天。模拟器这玩意儿 Debug 起来挺麻烦的,我采用的办法是和其他模拟器对比,单步执行每条指令,在对比寄存器和各种状态,缩小锁定出现偏差的位置。有好几天我在梦里都在用人脑模拟 CPU,基本上除了上课吃饭睡觉,别的时间都在搞这个了 QAQ 最难的部分不是 CPU,也不是图形,而是声音的模拟。因为没有相关知识储备,看着文档里的 envelope sweep 这些词不知所措。弄了好久最后终于算是能听的级别了,但是跟真机相比还是有区别。
总的来说写这个收获真的很大,原本以为用不到的汇编和计组课程知识在这里也派上了用场。第一次看到游戏画面展示出来的那一刻,真的很爽。
1
oott123 2019-05-01 09:54:49 +08:00 via Android
模拟器不错,命令行串流太天才了(不知道 FPS 有没有 5 …
|
2
AaronLiu00 OP @oott123 命令行我锁了 10fps,网络理想情况下大概 5-10 之间吧(肉眼观测)
|
3
BreezeInWind 2019-05-01 09:56:27 +08:00 via Android 13
呵呵呵就这破玩意,不是我吹,给我五百年我也整不明白
|
4
0312birdzhang 2019-05-01 10:00:13 +08:00
好顶赞! 已 star
|
5
pakro888 2019-05-01 10:04:14 +08:00 via Android
厉害厉害 支持一下
|
6
shihira 2019-05-01 10:23:28 +08:00 via Android
才大二就做出这种东西好厉害啊,我大二的时候他妈都在干什么。已星
|
7
Mayuri 2019-05-01 10:33:30 +08:00 via Android
支持!!
|
8
AaronLiu00 OP |
9
vanishcode 2019-05-01 10:46:29 +08:00 via Android
嘻嘻,喜欢你的树洞外链,很方便
一看头像就知道是你~ |
10
Tink 2019-05-01 11:19:37 +08:00 via iPhone
大佬
|
11
zwpaper 2019-05-01 11:24:48 +08:00 via iPhone
真是个人才,已 star,研究一下能不能回味一下水浒神兽
|
12
acupnocup 2019-05-01 11:41:16 +08:00 via iPhone
我大二在干嘛...
在玩骨头🦴 |
13
jon 2019-05-01 11:45:07 +08:00
膜拜大佬
|
14
YuuuZeee 2019-05-01 11:48:22 +08:00 via Android
大佬大佬 居然才大二
|
15
abmin521 2019-05-01 11:49:53 +08:00 via Android
大佬
|
16
Doodlister 2019-05-01 12:05:25 +08:00 via Android
很厉害 支持支持
|
17
zhihaofans 2019-05-01 12:26:38 +08:00 via Android
厉害
|
18
isnowify 2019-05-01 13:02:03 +08:00 via iPad
哈哈哈标签页很皮啊 是怎么实现的呢
|
19
AaronLiu00 OP @isnowify 标签页指的是?
|
20
kidtest 2019-05-01 14:25:48 +08:00
厉害
|
21
isnowify 2019-05-01 14:39:16 +08:00 via iPad
@AaronLiu00 切换到其他选项卡后 你的网站标题栏会故意乱码
|
22
AaronLiu00 OP @isnowify 哦哦这个 可以参考 https://diygod.me/2153/
|
23
tony601818 2019-05-01 15:03:18 +08:00 via Android
太厉害了,赶紧 star
|
24
zuokanyunqishi 2019-05-01 15:12:22 +08:00 via Android
厉害,star
|
25
Mantext1989 2019-05-01 18:07:13 +08:00 via Android
这也太强了
|
26
Mystic 2019-05-01 18:09:12 +08:00 via Android
nb
|
27
Archeb 2019-05-01 18:21:24 +08:00
厉害,star 了
|
28
FDKevin 2019-05-01 18:58:34 +08:00 via Android
Star
|
29
daweii 2019-05-01 19:10:11 +08:00 via iPhone
居然是命令行显示,lz 厉害了
|
30
daweii 2019-05-01 19:24:44 +08:00 via iPhone
“但是我偶然间看到一篇关于 Gameboy 模拟器的 Tutorial ”
能发一下地址吗 |
31
AaronLiu00 OP @daweii Reference 下面的几个都挺不错的。我这里指的是这个: http://www.codeslinger.co.uk/pages/projects/gameboy/beginning.html
|
32
zhanwh9 2019-05-01 21:28:36 +08:00 via Android
好强。。佩服
|
33
Ayersneo 2019-05-02 03:31:47 +08:00 via Android
C...Cloudreve
|
34
kyokuheishin 2019-05-02 08:13:06 +08:00
恭喜上榜 Github Trending
|
35
AaronLiu00 OP @kyokuheishin 一觉醒来,看到这个惊呆了😂
|
36
YiferHuang 2019-05-02 10:46:53 +08:00
太强了
|
37
Dawnki 2019-05-02 17:25:01 +08:00
哈哈哈,这个有意思! star 了!
|
38
good1uck 2019-05-03 11:30:52 +08:00 via Android
什么是串流?(真诚问
|
39
GitHubDaily 2019-05-03 23:28:47 +08:00
厉害,已推荐到微博 https://weibo.com/5722964389/Hsrt1vVMt
|
40
zhensjoke 2019-05-05 09:35:52 +08:00
前段时间还在看 JS 的 nes 模拟器。
没想到这个更厉害。 |
41
sailei 2019-05-08 15:44:21 +08:00
NB
|
42
1ychee 2019-06-10 15:38:43 +08:00
人才啊 ...
|