BunsMS WASM Client Development
BunsMS WASM Client Development
WebAssembly port of the MapleStory v83 client. Forked from the open-source WASM client at github.com/joshhmann/maplestory-wasm.
Dev Server
- URL:
dev.buns.asslorde.com - CT125 (workhorse/gpu01), port 8081
Milestones
| # | Milestone | Status |
|---|---|---|
| 1 | Quest Log | ✅ Working |
| 2 | ESC Menu | 🔄 In progress |
| 3 | Buddy List + QuickSlot | ⏳ |
| 4 | Trade + Enhance | ⏳ |
Reference Materials
| Asset | Path | Size | Use |
|---|---|---|---|
| v83 IDB | /root/v83.idb |
120MB | Basic dispatch, function naming |
| Angel IDB | /root/Angel.idb |
32MB | Full mangled C++ class hierarchy |
| Original EXE | /root/MapleStory.exe |
— | Reference behavior |
| Ghidra 12.1 | /opt/ghidra_12.1_PUBLIC on CT125 |
— | Decompilation |
Key Technical Details
- Resolution: WASM was hardcoded 800x600 — fixed to dynamic in
Window.cpp - Q key conflict: Q key maps to server skill by default. Use Home for Quest Log
- NPC messages: All 9 types handled (0-5, 7, 12, 14)
- Server keymap overrides client fallbacks — important when debugging input
Known Pitfalls
- Shell heredocs mangle JSON — use write_file or Python for structured data
- Ghidra scripts need Java available at
Base/ghidra_scripts/ - WASM pixel measurements may not match the 800x600 reference layout anymore
Future: Desktop Client
Josh is interested in building a desktop client from the same codebase too.