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.