Skip to content

pokeemerald-wasm 学习笔记 — 知识地图

项目概览

pokeemerald-wasm 是将 pret/pokeemerald(Pokemon Emerald 的完整反编译项目)重新编译为 WebAssembly 的项目。通过 Clang 的 wasm32-unknown-unknown 目标将 C 源码编译为 WASM;WASM 模块自身在 256MB 线性内存中复刻 GBA 硬件(VRAM、OAM、调色板、I/O 寄存器),并由 src/wasm_display.c 合成 240×160 RGBA 帧。宿主端(浏览器 app.js 或经 wasm2c 的 Raylib / Kindle 原生前端)只负责输入、帧调度和把 RGBA 搬到屏幕。

架构全景

学习路径

知识索引

构建与编译知识点

概念主题术语
Makefile WASM 构建规则[[topics/wasm-compilation/WASM 编译管线]]
Clang wasm32 目标编译[[topics/wasm-compilation/conceptsWASM 编译概念]]
wasm-ld 链接配置[[topics/wasm-compilation/conceptsWASM 编译概念]]
WASM 模块导出(AgbMain, WasmRunFrame)[[topics/wasm-compilation/conceptsWASM 编译概念]]

硬件模拟知识点

概念主题术语
GBA 地址空间映射[[topics/gba-hardware/GBA 硬件模拟]]
VRAM 视频内存结构[[topics/gba-hardware/conceptsGBA 硬件概念]]
OAM 精灵属性内存[[topics/gba-hardware/conceptsGBA 硬件概念]]
调色板与颜色格式[[topics/gba-hardware/conceptsGBA 硬件概念]]
I/O 寄存器模拟[[topics/gba-hardware/conceptsGBA 硬件概念]]

资源与数据知识点

概念主题术语
INCGFX/INCBIN 资源扫描[[topics/asset-pipeline/资源转换管线]]
GBA 汇编数据转 WASM[[topics/asset-pipeline/concepts资源转换概念]]
地图/事件/脚本数据转换[[topics/asset-pipeline/concepts资源转换概念]]
音频数据生成(wasm_sound.h)[[topics/asset-pipeline/concepts资源转换概念]]
256MB 扁平内存模型[[topics/memory-model/WASM 内存模型]]

交互与渲染知识点

概念主题术语
键盘/触摸输入映射[[topics/input-system/输入系统]]
GBA 按键 → 宿主事件[[topics/input-system/concepts输入系统概念]]
软件 PPU(wasm_display.c)[[topics/rendering/渲染管线]]
Tile 图块渲染[[topics/rendering/concepts渲染概念]]
Sprite 精灵渲染[[topics/rendering/concepts渲染概念]]
HBlank DMA 扫描线[[topics/rendering/concepts渲染概念]]
RGBA 帧导出 → 宿主搬运[[topics/rendering/code-walkthrough渲染代码走读]]

持久化与部署知识点

概念主题术语
Flash 存档 → localStorage[[topics/save-system/存档系统]]
Base64 序列化/反序列化[[topics/save-system/concepts存档概念]]
.sav 文件导入/导出[[topics/save-system/concepts存档概念]]
存档迁移与规范化[[topics/save-system/code-walkthrough存档代码导读]]
存档结构对齐(#if WASM padding)[[topics/save-system/concepts存档概念]]
Cloudflare Workers 部署[[topics/build-deploy/构建与部署]]
Wrangler 打包配置[[topics/build-deploy/concepts构建部署概念]]
wasm2c 原生构建(raylib/bench/kindle)[[topics/build-deploy/concepts构建部署概念]]
无头基准测试与黄金哈希[[topics/build-deploy/concepts构建部署概念]]
#if WASM 条件编译守卫[[topics/source-compat/源码兼容与适配]]

学习进度

  • 项目架构概览
  • WASM 编译管线
  • GBA 硬件模拟
  • 资源转换管线
  • WASM 内存模型
  • 输入系统
  • 存档系统
  • 渲染管线
  • 构建与部署
  • 源码兼容与适配