isl: rename built-ins 8/9/93 to stopwatch_start/_elapsed/_stop
They are start / read / stop of one of 32 per-phase stopwatches, not flag operations. 123-127 keep timer_* -- that is the mission timer, five scalars at [phase+304..320], a different clock. Artefact check: 84 lines changed across 5 files and all 84 pair exactly with their old-name partners once column padding is normalised (0 removed lines without an old name, 0 added lines without a new one). data/isl-timers.txt reproduces the same 675/675, 11.2 % control, 82/1 and identical histograms, which is what shows the rename is cosmetic. Also withdraws a label from the previous commit: sub_8230C398 is NOT the message pump. It runs every frame but drains nothing -- a state machine on [0x828E1F8C] that only allocates, builds strings, looks up and PUSHES. And bus+8216 is weak evidence: sub_82254A08 is a generic map find with ~120 sites, and the key looked up is a pointer, not a tag. The open handle is now the ring buffer at bus+4, not bus+8216.
This commit is contained in:
@@ -86,7 +86,8 @@ KIND = {0: 'global', 1: 'imm', 2: 'special', 3: 'local'}
|
||||
# guess. See docs/re/structures/isl-builtins.md.
|
||||
BUILTIN = {
|
||||
1: 'start_coroutine', 2: 'deploy_squadron', 3: 'move_order', 4: 'wait_s',
|
||||
5: 'kill_coroutine', 6: 'END_PHASE', 8: 'set_flag', 9: 'read_freg',
|
||||
5: 'kill_coroutine', 6: 'END_PHASE', 8: 'stopwatch_start',
|
||||
9: 'stopwatch_elapsed',
|
||||
10: 'random', 11: 'end_coroutine', 12: 'activate_unit',
|
||||
13: 'play_se', 14: 'play_bgm',
|
||||
15: 'set_group_speed',
|
||||
@@ -108,7 +109,7 @@ BUILTIN = {
|
||||
77: 'banner_mission_start', 78: 'banner_mission_complete',
|
||||
81: 'banner_objective_update', 82: 'banner_mission_failed',
|
||||
135: 'banner_mission_restart',
|
||||
93: 'clear_flag', 94: 'is_engaged', 95: 'unit_hp_pct', 100: 'reset_phase_threads',
|
||||
93: 'stopwatch_stop', 94: 'is_engaged', 95: 'unit_hp_pct', 100: 'reset_phase_threads',
|
||||
102: 'prompt_yes_no', 108: 'deploy_squadron_ex',
|
||||
109: 'set_unit_flags', 115: 'named_event',
|
||||
120: 'wait_cmds_drained', 123: 'timer_resume', 124: 'timer_stop',
|
||||
@@ -174,7 +175,7 @@ def symbols(b, which):
|
||||
# makes the test discriminating -- plain range-checking cannot separate an index
|
||||
# from a bool, because every small integer is "in range".
|
||||
#
|
||||
# It also refutes one tempting entry: `set_flag`'s slot 0 passes the range and
|
||||
# It also refutes one tempting entry: `stopwatch_start`'s slot 0 passes the range and
|
||||
# spread tests but its maximum EXCEEDS the table (flag indices run 0..31 against
|
||||
# tables as small as 40), so it is excluded. Slots are only listed here when the
|
||||
# ratio stayed below 1.0.
|
||||
@@ -210,7 +211,7 @@ UNIT_SLOTS = {4: UNIT_ARG, 12: UNIT_ARG2, 20: UNIT_ARG3}
|
||||
# one taking a third;
|
||||
# * 24 built-ins have a slot 0 that is NOT the constant -- and every one of
|
||||
# them takes no symbol at slot 4 (`start_coroutine` a code offset, `wait_s`
|
||||
# a double, `set_flag` an index).
|
||||
# a double, `stopwatch_start` an index).
|
||||
#
|
||||
# The tag does NOT generalise to "every even slot is a tag": slot 8 is a bare
|
||||
# double for built-ins 4, 20, 24, 26, 28, 29, 90, 106 and 127, and built-in 75
|
||||
|
||||
Reference in New Issue
Block a user