- nact.h and xsystem35.h no longer include scenario.h
- Removed `sys_*` aliases in nact.h
- sys_getString() and sys_getConstString() are moved to
scenario.c as sl_getString() and sl_getConstString()
- DEBUG_COMMAND macros are now defined in scenario.h
- `break function` sets a breakpoint to the entry of `function`, which
is either a global function or a local function in current page.
- `break number` sets a breakpoint to the specified line in current
file.
If -debug option is specified, xsystem35 enables built-in debugger. It
optionally loads debug information from *SA.ALD.symbols file (generated
by xsys35c), and drops into a debugger REPL.
Currently the debugger supports:
- Simple breakpoints
- Backtrace
- Single-step execution (step into / step over)
- Printing variables
Also, when the debugger is enabled SIGINT breaks execution and enters a
REPL.
This fixes a bug in various games where waiting for sound effects to
finish was not working.
`SU var1, var2:` should set var1 to 1 if sound is playing. Before this
fix, it was set to the return value of mus_pcm_get_playposition(), which
is usually 0 (OK).
Before this, color values above 255 were directly used as the pixel
color. After this, its lower 8 bits are used as the palette index. The
new behavior matches System 3.9.
- ags_drawString() returns a bounding box of the text so that callers
can update the screen appropriately.
- Use total font height (not only ascent) for vertical positioning.
- Any key input detected in skippable wait functions will cancel the
skip mode (regardless of skipModeInterruptable value).
- Space key (right click) in sys_getInputInfo() will no longer cancel
the skip mode.
- Add 30ms wait in sys_hit_any_key() (used by the 'A' command) so that
users can see what's going on while skipping.
- Cancel the skip mode when opening a menu, not when closing it.
This adds functionality equivalent to the MsgSkip module, for older
games. It is enabled if "MsgSkip" file is specified in the game resource
file.
Since messages in pre-system3.9 games don't have IDs, it uses a Bloom
filter to test whether a message has been already seen or not.