Commit Graph
128 Commits
Author SHA1 Message Date
Jonas Volman c801d5ec6e Match game engine nondeterministic update cluster 2026-07-25 21:52:27 -07:00
Jonas Volman 5d7fd76ea6 Match game engine nav point rendering 2026-07-25 21:49:14 -07:00
Jonas Volman 14028884e1 Match player device action selection 2026-07-25 21:48:43 -07:00
Jonas Volman 579a81f221 Match game engine nonplayer post rasterize 2026-07-25 21:45:10 -07:00
Jonas Volman 341df109e4 Match player minor powerup handling 2026-07-25 21:41:58 -07:00
Jonas Volman 60314bc1f2 Match game engine vehicle remapping 2026-07-25 21:41:21 -07:00
Jonas Volman 484fb94158 Match player teleport debug rendering 2026-07-25 21:39:34 -07:00
Jonas Volman d276afc9ee Match game engine pickup dispatch 2026-07-25 21:34:32 -07:00
Jonas Volman 172cffa233 Match player spawn handling 2026-07-25 21:32:58 -07:00
Jonas Volman 49237466e7 Match player BSP reconnection 2026-07-25 21:29:30 -07:00
Jonas Volman 0c2ea667f5 Match game engine weapon fired hook 2026-07-25 21:19:59 -07:00
Jonas Volman fbd3ae7eac Match players equipment and powerup helpers 2026-07-25 21:19:59 -07:00
Jonas Volman a5e4031a7b Match game engine spawn distance rating 2026-07-25 21:13:03 -07:00
Jonas Volman 539517be38 Match game engine map initialization 2026-07-25 21:13:03 -07:00
Jonas Volman de011931d7 Match players starting location and unit helpers 2026-07-25 21:02:23 -07:00
Jonas Volman 3888a30f09 Match game engine man-out gate 2026-07-25 21:00:08 -07:00
Jonas Volman 047860ae91 Match players lane 2 predicates and math leaves 2026-07-25 20:46:55 -07:00
Jonas Volman c8a6ed6dda Match custom motion sensor goals 2026-07-25 20:35:06 -07:00
Jonas Volman 09031a9a45 Match players lane 1 functions 2026-07-25 20:34:09 -07:00
Jonas Volman fbde70888c Match game engine goal and color getters 2026-07-25 20:28:23 -07:00
Jonas Volman 69e845216e Match named game variant lookup 2026-07-25 20:11:37 -07:00
Jonas Volman ac9bc75f9e Match default game winner evaluation 2026-07-25 20:02:31 -07:00
Jonas Volman 87209fe0e7 Match game engine post-rasterize dispatch 2026-07-25 19:53:25 -07:00
Jonas Volman 23429c1137 Match Unicode game time formatting 2026-07-25 19:51:43 -07:00
Jonas Volman cf20559e0a Match dropped object cleanup pass 2026-07-25 19:37:14 -07:00
Jonas Volman 964b3636fd Match game engine live biped filter 2026-07-25 19:31:11 -07:00
Jonas Volman 2e7a5b4881 Match game engine flag policy and reset 2026-07-25 19:29:47 -07:00
Jonas Volman e42991ed51 Match empty game engine callback 2026-07-25 19:26:38 -07:00
Jonas Volman 1be1c4e700 Match statistic buffer comparator 2026-07-25 19:23:45 -07:00
Jonas Volman b964a94d6f Match game engine stealth weapon predicate 2026-07-25 19:11:48 -07:00
Jonas Volman 92e215e5c6 Match game engine playlist selection 2026-07-25 19:09:38 -07:00
Jonas Volman 9bd6db1d48 Match game engine math and flag leaves 2026-07-25 19:01:32 -07:00
Jonas Volman 136e297008 Document deferred game_engine_man_out schedule tie
Full logic recovered (all player_datum/game_statistics/game_variant fields
mapped, 7 relocations and both datum_get calls match) but January keeps the
conditional fallback code_00097250() call expanded (112B) where our CL
compacts it to 96B -- same optimiser-determinism class as atmospheric_fog.
Recorded in-source next to get_goal_position for a later schedule pass.
2026-07-25 18:44:31 -07:00
Jonas Volman e7fc71bb9b Match game_engine_initialize
Byte-exact (96 bytes / 8 relocations): zeroes game_engine_globals, clears
postgame_state, and when given a variant with an engine type copies it into
global_variant, runs game_engine_variant_cleanup, and points game_engine at
the matching handler table in game_engines[]. Adds the game_engines[] extern
and a forward prototype for game_engine_variant_cleanup (signature inferred
from this call site: takes struct game_variant *). game_engine exact 57 -> 58.
2026-07-25 18:44:31 -07:00
Jonas Volman d9f394bdd8 Match game_engine_display_team_indicators
Byte-exact (48 bytes / 3 relocations): returns whether team indicators
should display -- game_engine present, a game_variant flag set, and teams
enabled. Follows the game_engine_has_teams donor shape (if (game_engine)
result = <expr>;) rather than a flat && chain, which reproduces the
January register schedule (has_teams read into the AL result register).

The tested flag is bit 1 of game_variant.flags, which had no name in the
enum; added as _game_variant_unknown1_bit = 1 (honest placeholder, matching
the codebase unused/unknown convention). game_engine exact 56 -> 57.
2026-07-25 18:44:31 -07:00
Jonas Volman 57708b65b0 Document deferred game_engine_get_goal_position schedule tie
get_goal_position reconstructs to the exact size (96 bytes) and relocations
(6) but the trailing real_point3d copy has a residual instruction-schedule
difference (January reuses ESI with redundant pointer moves; our builds
schedule tighter through EDX). ~8 source shapes tried. Recorded as an
in-source note at its January-order position for a later typed-local-alias
pass; representative of the getter-tuning tier (man_out, get_starting_
location_rating).
2026-07-25 18:44:31 -07:00
Jonas Volman 120941d994 Match game_engine message and statistics dispatchers
game_engine_statistics_append, game_engine_handle_client_message and
game_engine_handle_server_message: vtable tail-call dispatchers at handler
offsets 0x20/0x24/0x28, byte-exact (32 bytes / 1 relocation each). Total
game_engine exact 53 -> 56.

Each passes a single argument through to the handler, which is what forces
the /Oy- frame pointer that the no-argument dispatchers (e.g. game_ending)
omit. The argument type/count is byte-identical for any single 4-byte value
and is not constrained by any in-tree caller yet; typed as a best-effort
inference (long statistic / void *message).
2026-07-25 18:44:31 -07:00
Jonas Volman 92c47d32b9 Reconstruct scenario BSP and fog keystone functions 2026-07-21 13:21:45 -07:00
Jonas Volman 2c3e2c6459 Correct player datum layout and match initialization 2026-07-18 14:38:26 -07:00
Jonas Volman 2f67d9852c Tighten game kill statistics reconstruction 2026-07-18 09:04:19 -07:00
Jonas Volman 3015c59443 Match game engine object definition remap 2026-07-17 11:37:21 -07:00
Jonas Volman e09194cedd Match unit animation, flashlight, weapon, and seat queries 2026-07-16 15:47:06 -07:00
Jonas Volman 31e4945495 Match game engine team score and player count 2026-07-16 15:12:07 -07:00
Jonas Volman d12cd0f310 Match game engine visibility and score helpers 2026-07-16 14:47:32 -07:00
Jonas Volman 4328ae12f0 Match piecewise player control evaluation 2026-07-16 14:41:10 -07:00
Jonas Volman 0b7e8bfad0 Match game engine playlist and weapon helpers 2026-07-16 14:35:13 -07:00
Jonas Volman 67defb2112 Match game engine lifecycle and HUD helpers 2026-07-16 14:24:53 -07:00
Jonas Volman ea5a6f2cf3 Match player control lifecycle and camera helpers 2026-07-16 14:23:22 -07:00
Jonas Volman 242c1ec126 Match player control weapon and view accessors 2026-07-16 14:09:56 -07:00
Jonas Volman b1c28a3bcd Match game engine goal and override helpers 2026-07-16 14:09:56 -07:00