一次移植 GBA 模拟器到微信小游戏的血泪史

2019-02-19 21:57:14 +08:00
 w88975

前言

开始动手

噩梦开始

结语

10929 次点击
所在节点    分享创造
65 条回复
iamsee
2019-02-19 22:28:52 +08:00
我。。。cao,看完了佩服楼主,我辈楷模
LevineChen
2019-02-19 23:14:01 +08:00
套个 webview 就完事了……
Captions
2019-02-19 23:42:59 +08:00
佩服之情,油然而生
Actrace
2019-02-19 23:54:28 +08:00
这,,技术黑,很高端啊。。。
虽然腾讯自己搞的生态也是没好到那里去就是了。
tanranran
2019-02-19 23:58:52 +08:00
特别佩服楼主的钻研精神,值得尊敬
qq292382270
2019-02-20 00:01:34 +08:00
真心佩服..
metalbug
2019-02-20 00:04:56 +08:00
你应该先搞 FC,有经验了再搞其他的
w88975
2019-02-20 00:15:02 +08:00
@metalbug 因为想玩 GBA 游戏 所以就弄 GBA 的了 FC 游戏可玩性太低了
azh7138m
2019-02-20 01:00:39 +08:00
ARMCoreArm 里面的函数看上去每次都会创建闭包。。。真酷炫,内存使用不会涨的很快吗?
pangtianyu
2019-02-20 01:16:30 +08:00
你的 stm 是怎么实现的
w88975
2019-02-20 01:40:49 +08:00
@LevineChen 虽然小游戏也是相当于跑在浏览器里,但不用单独打个包,跨平台,传播性和方便性都强于其他方式。最初的目的也是做个好用的 GBA 模拟器跑在小游戏平台上。
amazingrise
2019-02-20 01:47:49 +08:00
给楼主点个赞。。另外虽然我(出于爱好)做的项目没 lz 这么强,但是做项目的时候也有一样的感受。。lz 加油!
jswh
2019-02-20 02:15:27 +08:00
楼主有没有试过安卓上的执行速度,如果安卓上执行速度正常,那就说明不是硬件问题(理论上不应该,因为 safari 是好的)所以就是 js 引擎慢。微信的 webview 还是 uiwebview,是很慢的,以前做娃娃机直播的时候也遇性能问题(没有 Media Source Extensions API 只能用 jsmpeg, javascrip 性能低下,后来沟通过,只有白名单的一些网页可以开启 wkwebview,开了这个就好了。
jswh
2019-02-20 02:34:53 +08:00
另外,我不知道这个 js 库是怎么处理的,但是根据“原来是 ARM 的 STM 指令耗时,90%的时间都消耗在 STM 上了”这个,估计是直接用 js 进行内存数据到图像数据的计算的,jsmpeg 用 webgl 的相关指令来解析视频数据流到图像的计算可以大大加速这个过程,小游戏也有 webgl,我觉得楼主可以考虑下这个方向。
Mutoo
2019-02-20 06:35:44 +08:00
GBA 模拟器的本质是硬件模拟而不是游戏引擎,而 js 在手机上的运行速度是 PC 上的 1/50 左右,在这种效率下想要高帧率运行是很难的,除非用 wasm 去实现。不过现阶段 wasm 在手机平台上还不是很稳定。

附:GameBoy 模拟器 Javascript 实现完全解析
http://imrannazar.com/GameBoy-Emulation-in-JavaScript:-The-CPU
kios
2019-02-20 08:14:29 +08:00
厉害,钻研精神让人佩服
urmyfaith
2019-02-20 08:44:01 +08:00
看完了,初看还以为问题解决了呢,万万没想到系列...

= =


By the way, 赞楼主钻研精神!
jadec0der
2019-02-20 08:53:36 +08:00
我觉得 lz 还是很 nb 的
ssshooter
2019-02-20 08:58:18 +08:00
太强了,能不能做个模拟 cpu 的教程
yksoft1ex
2019-02-20 09:11:56 +08:00
@Mutoo wasm 和 js 在 js 引擎里用的后端都差不多吧,比起裸 js 的性能提升还是有限。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/536708

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX