Commit Graph
27 Commits
Author SHA1 Message Date
MrBruh fef8a582dd Fix release build crash on level load 2026-09-27 19:56:32 +13:00
MrBruh 755f610025 Fix 128-player multiplayer issues 2026-09-27 18:17:24 +13:00
Jonas VolmanandClaude Opus 5.5 9a376181f5 Port: grow the game state and object pools for 128 players
The Xbox game state (0x345000 bytes at 0x80061000) ends exactly where the
map-linked tag cache begins and has 948 bytes free, so a 128-player
session cannot even allocate its player datums. The native builds now
place a 16 MB game state (CPU 0xFC0000, GPU 0x40000) at 0x81A00000, above
the tag cache and below everything the Xbox memory window hands out
top-down, and grow the pools that scale with the number of players:

- objects: 2048 -> 8192 headers, 1 MB -> 8 MB pool; the garbage limits
  keep January's proportions (5/10/20 % of the pool, 2.5/5/10 % of the
  headers, 75/50/30 active garbage objects per 16 players)
- cluster partition reference lists 2048 -> 8192 (collideable and
  noncollideable objects, lights); a full list drops objects out of
  rendering, collision and sphere queries
- effects 256 -> 2048, effect locations 512 -> 4096
- particles 1024 -> 8192 (render_particles' visible list, filled without
  a bound check, follows), particle systems 64 -> 256, their particles
  512 -> 4096
- contrails 256 -> 1024, contrail points 1024 -> 8192
  (MAXIMUM_CONTRAIL_POINTS stays the pool size for the same reason)
- lights 896 -> 4096, object looping sounds 1024 -> 4096
- cached object render states and rendered objects 256 -> 1024
- script object-list references 128 -> 1024, objects one explosion can
  damage 64 -> 256

The values live in port/linux/include/halo_port_capacity.h, included by
halo_port_limits.h. With 128 player datums the CPU part holds 14,256,908
bytes (2,258,164 free). Saved games and cores grow to 16 MB. Every change
is under HALO_LINUX; the MSVC objects are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:18:07 -07:00
MrBruh a06ef74eec Detach framerate from gameplay simulation 2026-09-26 21:49:07 +12:00
Jonas VolmanandClaude Opus 5.5 7d92f97c9f Correct objects.obj private symbol ownership (zero credit)
cachebeta.pdb publics show 31 objects.obj symbols were file-static in
January, and no other January object references any of them. Only
symbols.json and our source disagreed with January.
- 29 functions were already static in our source; their symbols.json
  entries gain "static": true.
- object_memory_release_procs becomes static.
- object_update becomes static, and its public prototype leaves the
  shared objects.h. It is defined before every use in objects.c.

objects now matches January in all 225 symbols, all 121 functions stay
strict exact, and its 1,530-byte .data section is identical. It is
still held: five candidate-only helper COMDATs conflict with
hand-written NODUP providers (path_obstacles, action_charge,
player_control, bored_camera). It also emits the three stock D3D SDK
tables that keep rasterizer_xbox_profile held. No
semantic_data_matches entry, no credit.

Verification: full ninja (the objects.h edit rebuilt its 92
consumers); stable diff vs frozen 8,245-function baseline 0 gained /
0 regressions; parks 103/0/0; fake-match scan 0 -> 0; pytest 1154
passed; git diff --check clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 14:43:00 -07:00
Jonas Volman f8e8e6b6fb Complete objects object and harden progress accounting 2026-07-19 12:30:45 -07:00
Jonas Volman 110483d01a Match object garbage collection 2026-07-18 20:19:47 -07:00
Jonas Volman 561be66f78 Correct object creation failure ordering 2026-07-18 18:11:27 -07:00
Jonas Volman 9330763458 Correct objects data ownership and GC initialization 2026-07-18 17:40:20 -07:00
Jonas Volman 655e48fa28 Match object attachment to node 2026-07-16 11:16:32 -07:00
Jonas Volman a7120e7e0e Fix object garbage collection termination 2026-07-15 22:13:40 -07:00
Jonas Volman 5f8c9b3110 Improve point-vector object traversal match 2026-07-15 20:17:39 -07:00
Jonas Volman 07f41911ec Correct object node orientation fallback 2026-07-15 18:03:23 -07:00
Jonas Volman 38e8b5b315 Correct object garbage collection reconstruction 2026-07-15 18:03:22 -07:00
Jonas Volman 96e4002d5a Match objects update profile section ownership 2026-07-15 16:22:42 -07:00
Jonas Volman 50c2ff4d4f Match objects_dump_memory stack layout 2026-07-15 14:12:01 -07:00
Jonas Volman 159ffbb5d8 Match object change color computation 2026-07-15 14:09:21 -07:00
Berthalamew 37e96a1c2f ai_debug work (#37) 2026-07-13 14:34:27 +01:00
Berthalamew 4cb1519b3b objects work (#36)
* match attachments_new

* objects_garbage_collection work
2026-07-11 17:46:57 +01:00
Berthalamew 369b71e72e breakable surface work (#35)
- work on breakable surface functions
- fix `magnitude3d`
2026-07-02 00:31:52 +01:00
Berthalamew bc6663de55 unit additions (#34)
- add unit functions and associated dependencies
2026-07-01 00:15:19 +01:00
Berthalamew 11507e901f match object_export_function_values and attachments_delete (#27) 2026-06-16 14:49:20 +01:00
punpckhdq fb0d814535 Declare .comm data in TUs instead of headers (#26)
* Declare .comm data in TUs instead of headers

* Update files.h

* Include
2026-06-16 12:49:22 +01:00
Berthalamew 7b5b1f67f4 object_compute_node_matrices_work (#23)
* object_compute_node_matrices work

88.71% match

* main changes

* add misc definitions

* name private function

* requested changes
2026-06-08 21:55:40 +01:00
punpckhdq cce8ecb1f2 Use space before equals (#21) 2026-06-08 02:44:47 +01:00
Berthalamewandpunpckhdq eb93ce635e wip objects.c work (#12)
* wip objects.c work

* objects_disconnect_from_structure_bsp

* match more functions

* more objects work

* objects_update work

- 93.42% matching

* match matrix4x3_transform_point

* more objects work

- fix duplicate symbol name at 1870800

* match object_choose_random_change_colors

* match object_update

* objects_garbage_collection work

* match object_set_position

* more object work

* match objects_update

* more object work

* match object_select_random_region_permutations_by_variant

* objects_in_sphere work

99.90% match

* object name list calls

* match objects_in_sphere

* misc matches

* match structure_bsp_definitions object

* match objects_in_clusters_by_indices

* more object work

* match `edit_text_handle_key`

* mark edit_text as matching

* misc changes

- match get_next_character
- match data section in objects.c

* object_export_function_values work

* match object_compute_function_values

* match object_get_orientation

* added functions and adjust formatting

* fix profile macros

* formatting changes

* more formatting

* more formatting

---------

Co-authored-by: punpckhdq <121350336+punpckhdq@users.noreply.github.com>
2026-02-15 01:05:45 +00:00
punpckhdq e830efbd7c Initial commit 2025-11-27 02:27:27 +00:00