仓库地址:lcc-gba
lcc-gba
Cocos Creator 嵌入GBA模拟器插件。
前言
前段时间做了一个FC模拟器的插件lcc-nes,又在网上找到了js实现的GBA模拟器gbajs,既然做了,就做全面点吧,所以就有了这个GBA模拟器的插件。同样当前插件只有在web平台有声音。
插件的模拟器部分使用typescript整理过,并不是使用的原来github上面的js代码
安装
安装十分简单,只要把这个项目作为Creator插件放到插件目录就可以了,具体请查看Creator插件包。
使用
使用也很简单,所有组件在LCC GBA组件组里面,如下图:

第一步,先添加Emulator组件到节点上。
如下图:

图片里面有个火焰纹章-封印之剑.gba的二进制文件,这是插件里面测试用的,你可以在插件roms目录里面找到,这个目录可能后面会删除。所以ROM可以自己下载,因为creator二进制文件必须是.bin结尾的,所以你应该需要修改文件后缀名,测试rom位置如下图:

Bios可以是默认的,好像这个一般不需要改动。
第二步,添加显示对象。
Emulator组件有getTexture() 函数可以获得渲染的纹理,你可以用在需要的地方。插件也提供Sprite组件的显示方式,可以在节点上添加DisplaySprites组件,然后把Sprite组件拖到里面的数组中。如下图:

现在应该就可以看到显示的内容了,大概如下图:

第三步,添加手柄控制器。
把Controller组件添加到里面去,里面可以选择玩家的数量,目前jsgba支持2个玩家,然后就可以修改按键映射。如下图:

你也可以在代码里面控制,可以直接看源码:
// 常量定义,注意模块嵌套
module lcc.gba {
/**
* 游戏按钮
*/
export enum Button {
A = 0,
B = 1,
SELECT = 2,
START = 3,
RIGHT = 4,
LEFT = 5,
UP = 6,
DOWN = 7,
R = 8,
L = 9,
}
}
- 通过节点事件控制游戏: gba_button_event
// 游戏按钮A, 按下
this.emit("gba_button_event", lcc.gba.Button.A, true);
// 游戏按钮A, 放开
this.emit("gba_button_event", lcc.gba.Button.A, false);
// 注意: 虽然是直接通过代码控制,但是控制器必须存在。也就是说必须有Controller在节点上。
- 也可以直接获取
Controller组件,调用onButtonEvent(lcc.gba.Button.A, true)这种方式实现。
更多功能
比如一些自定义存储等功能,请看源码。core目录中的代码时整理后的gba模拟器ts实现。
结束语
不管能不能用上,先储备起来。。。