一个基于 Chrome Extension (MV3) 的 GBA 游戏库与启动器。核心模拟器采用 EmulatorJS(mGBA 核心),在弹窗内直接游玩,并提供 ROM 管理、缓存与存档功能。
- 弹窗内游玩:不跳转到新页面,所有交互都在扩展弹窗完成
- 游戏库:列表/网格视图、搜索、收藏、我的游戏
- ROM 缓存:Service Worker + Cache Storage 管理,支持缓存列表与清理
- 存档系统:
- SRAM 存档:导入/导出/删除,持久化
- Save State:多条存档,不覆盖,可下载/导入/删除,带时间戳
- 自动存档:弹窗关闭时自动保存(SRAM + 自动存档)
- 多语言:简体中文、繁体中文、英语、俄语、日语(默认英语,记录在 localStorage)
- 暗色 UI:支持游戏画布优先展示
popup.html/app.css/app.js:主界面与交互逻辑ejs.html/ejs.js:EmulatorJS 宿主与桥接逻辑ejs/data/:EmulatorJS 资源与 mGBA 核心sw.js:ROM 缓存与进度管理sample-games.json:内置 ROM 列表样例options.html/options.js:选项页(用于配置等)
扩展会优先读取已保存的游戏列表;若为空则加载 sample-games.json 作为示例数据。ROM 链接由 romUrl 提供。
字段示例(最小化):
[
{
"id": "pokemon-emerald",
"title": "Pokemon Emerald",
"romUrl": "https://example.com/roms/pokemon-emerald.gba",
"region": "US",
"version": "1.0",
"tags": ["rpg"]
}
]- 打开
chrome://extensions,开启“开发者模式” - 选择“加载已解压的扩展程序”,指向本项目目录
- 点击扩展图标打开弹窗并进入游戏库
- SRAM 使用 localStorage 保存,适合长期存档
- Save State 存为多个独立条目,带时间戳,可导出/导入
- 弹窗关闭时自动保存(SRAM + 自动存档)
ROM 缓存使用 Cache Storage。可在 “ROM Cache” 页面查看与删除缓存条目。
默认英语,可在首页语言下拉切换。选择会写入 localStorage 并持久化。
- 本扩展不提供 ROM 下载,只使用你提供的 ROM URL
- 大量存档占用 localStorage 空间,请定期清理
- EmulatorJS 资源在
ejs/data/,只保留 mGBA 核心可显著减小体积