16 Commits
Author SHA1 Message Date
MrBruh 71bf206bd0 Sound tags from files over a map's, and a 16 MB sound cache
Our version of #147. With audio.loose_sounds (off by default), each of a map's sounds that has a Halo PC sound tag file of its name in the data root's tags folder plays from it (port/linux/game/loose_sounds.c); loose_sounds_reload and loose_sounds at the console read them again or give the map's back. The files' samples are made the Xbox ADPCM this build plays through the Custom Edition converter, so no channel pools change and stock maps play as before. The override is written into the map's definition in place, keeping the counters the game updates; a change stops every sound and flushes the sound cache first, and old samples are freed once no cache block holds them. A split sound's length is its chain's.

The sound cache is HALO_PORT_SOUND_CACHE_SIZE: 16 MB on desktop, the Xbox's 4 MB on Android, with the debug view's buffer sized to match.
2026-10-08 20:22:16 +13:00
MrBruh f66885861a Give the desktop builds a 512 MB memory window and texture cache 2026-10-07 19:00:29 +13:00
MrBruh 761210d405 Harden map and network input 2026-10-06 13:26:43 +13:00
MrBruh 4adc3a87a5 Remove matching tooling and HALO_LINUX ifdefs 2026-09-30 21:49:46 +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
Jonas Volman 540093129a Match physical_memory_map object exactly 2026-08-27 16:00:18 -07:00
bnunu 6e54eff7e4 Revert incomplete physical memory ownership wave 2026-08-27 15:12:36 -07:00
bnunu a86c35334c Advance physical_memory_map ownership exactness 2026-08-27 15:04:43 -07:00
Jonas Volman 171feb2757 Match physical_memory_verify 2026-07-14 15:20:46 -07:00
Jonas Volman cd3d69664c Match physical_memory_allocate 2026-07-14 15:20:46 -07:00
Jonas Volman 8870c37efb Match physical_memory_free 2026-07-14 15:10:37 -07:00
Jonas Volman 27e1bfd11f Match physical_memory_get_sound_cache_base_address 2026-07-14 14:32:10 -07:00
Jonas Volman b575b4262d Match physical_memory_get_texture_cache_base_address 2026-07-14 14:32:10 -07:00
Jonas Volman aedd84d99e Match physical_memory_get_tag_cache_base_address 2026-07-14 14:32:10 -07:00
Jonas Volman 0eaea7602c Match physical_memory_get_game_state_base_address 2026-07-14 14:32:10 -07:00
punpckhdq e830efbd7c Initial commit 2025-11-27 02:27:27 +00:00