Features
Web
- first pass on wasm JIT backend for web
08254299c
Adds a new backend to convert ZASM to WebAssembly. This also includes some utility methods for analyzing the structure (finding the functions) and control flow of a ZASM script, which was necessary to split ZASM scripts into multiple WebAssembly functions and implement the control flow of a ZASM script into WebAssembly structure control ops.
Although
prime.zs
is ~10x faster, scripts from real quests aren't any faster than the normal ZASM interpreter, since a very naive and poorly performing method was used to transform the ZASM control flow graph.The utility methods for analyzing ZASM should be useful for improving the x64 backend too, for example, to similarly compile only one function at a time.
- support more ZASM ops for wasm jit
53d5bc9a7
Bug Fixes
- deleting subscreens resulting in invalid/crashy data
f0d8830a0
Player
- remove accidental double compilation for global scripts
1648daea9
- draw to correct bitmap when showing button clear prompt
44bf4b63d
ZScript
- 'Screen->SetExDoor()'/'mapdata->SetExDoor()' not opening matching doors
886f44ed1
- grab correct value from stack for POPARGS JIT x64
6f0b3e2a0
This didn't seem to break anything, but it showed up as a difference when comparing registers from JIT w/ non-JIT.
- Hero->WarpEx not using dmap xoff when setting continue screen
419a8ddde
Tests
- fix local webserver when offline
e9d7846d4
- include js script in web replay test stdout/stderr
2790c4fe8
Misc.
- add jit_runtime_debug.py for debugging jit bugs
781ffbc00