Skip to content

Merge testing - #388

Merged
cybersecurity merged 11 commits into
mainfrom
testing
Oct 17, 2026
Merged

cybersecurity merged 11 commits into
mainfrom
testing

Conversation

@cybersecurity

Copy link
Copy Markdown
Collaborator

No description provided.

@cybersecurity
cybersecurity merged commit 01797c0 into main Oct 17, 2026
7 checks passed
FractumSeraph added a commit to FractumSeraph/OpenCE that referenced this pull request Oct 17, 2026
…ds menu, on the fork's Halo PC loader

OpenCE's pull request OpenCommunityEdition#388 (dd16971, 54c2d31, and its testing branch's
merge of OpenCommunityEdition#378, which this fork had already taken by hand): client-side mods,
folders of Halo PC tag files whose sounds, bitmaps and text play over a map's
on one machine, with a Mods menu, a load order (load_order.toml) and
incompatibility checks at startup. Every feature of both sides is kept.

The mods on the fork's loader. OpenCE's mods call its own Custom Edition
loader (cache_file_formats.c, custom_edition_bitmaps.c, custom_edition_*),
which this fork replaced with ChupathingyCE's (ce_*.c). Those files stay
deleted (the modify/delete conflicts); what the mods need is ported onto the
fork's code instead:
- custom_edition_hud_placements_walk: ce_hud_placements_walk, a new public
  walk in ce_hud.c (ce_hud.h) over the placements ce_hud.c's conversion
  halves, with its offsets; the conversion itself is left as it was (its
  harness test, test_ce_hud_scale.py, takes its functions by name).
- custom_edition_bitmap_drawable: bitmap_drawable in mod_bitmaps.c
  (OpenCE's check, which only the mods use now).
- custom_edition_loaded_reordered_bitmaps_find, _bitmap_channel_order and
  halo_custom_edition_texels_channels: the fork draws Halo PC's channel
  orders by texture flags (D3DCOMMON_PORT_PC_METER, _PC_MULTIPURPOSE), not by
  OpenCE's address table. mod_bitmaps.c finds, in the loaded map's tags,
  which of the mods' bitmaps are drawn as model shaders' multipurpose maps
  or HUD meters (and drawn otherwise too: kept as they are), as OpenCE's
  custom_edition_bitmaps.c did, and mod_bitmaps_channel_order gives
  xbox_texture_cache.c the flag for each.
- custom_edition_sounds_encode/decode: mod_sounds.c is the fork's
  loose_sounds.c (d73430a) renamed and moved onto mods.c as OpenCE did;
  it keeps the fork's own Xbox ADPCM encoder and ce_vorbis.c decoding.
- custom_edition_cache_tags_loaded: cache_file_tags_are_ce. A mod's bitmap
  is rebuilt into the Xbox's layout as it loads
  (rasterizer_xbox_bitmap_rebuild_hardware_format), so on a Custom Edition
  map xbox_texture_cache.c does not flag it D3DCOMMON_PORT_PC_LAYOUT.
- The fork's ce_tags_pointer reads a Custom Edition map's tags only inside
  its tag cache and gives zeroes elsewhere, which made every mod's block on
  a Custom Edition map read as zeroes. The mods now list the memory their
  tags make (mods_memory_add/remove/contains, mods.c), and ce_tags_pointer
  reads that too.
- Everything the mods store in the game's structures is an Xbox address
  (XBOX_ADDRESS, XBOX_NULL, xbox_pointer), for the 64-bit builds;
  mods_read_real reads 32 bits, as the fork's loose sounds did.
- A mod's maps are matched by the map file's name: mods_tags_loaded drops
  the family suffix (bloodgulch@ce is bloodgulch: map_family_parse).
- The dedicated servers play no mods: port_mods.c (SDL file I/O, the
  startup question) is left out of the server builds and
  server_platform.c answers for it (and platform_ask) with none.
- The Chupathingy menus' main menu (the native default) gets OpenCE's MODS
  row below SETTINGS, as the PC menus have it, so the Mods screen can be
  reached there too.

Conflicts:
- source/cache/cache_files.c, xbox_sound_cache.c, xbox_texture_cache.c,
  source/hs/hs.c: OpenCE's mods hooks and console functions (mods_reload,
  mods_enable, mods_list) in place of loose_sounds', on both load paths
  (the fork's Custom Edition path and the Xbox's), unconditional (they
  were under HALO_CUSTOM_EDITION as loose_sounds was); the fork's hs table
  of Halo PC's functions keeps its layout (418 + 3 + 24 + 3).
- port/linux/game/mod_sounds.c: see above; Vorbis behind
  HALO_CUSTOM_EDITION.
- port/linux/src/port_config.c, port/linux/README.md: audio.loose_sounds
  goes, as OpenCE removed it (the mods folder replaces the tags folder);
  both copies of it (git had kept one outside the conflict) are gone, and
  audio.resampling stays.
- port/linux/src/xbox_textures.c: the fork's swizzle comment; OpenCE's
  HALO_WEB channel reordering (decoded textures put in order before upload)
  kept for its web build, driven by the fork's pc_meter/pc_multipurpose.
- platform.h, sdl_platform.c, menu_tags.c, port_settings.py, bitmaps.xml:
  both sides. menus.json: OpenCE's mods entries, without the pause art the
  fork left out of OpenCommunityEdition#378. port/web/licenses.py and tools/ci_build.py: the
  fork's stb path with OpenCE's wording; the opus and Lucide notices copied
  again (the fork had lost them).
- Android (host_imports.list, guest_host.h, guest_sdl.c, host_sdl.c): both
  added host_sdl_show_message_box; the fork's general one (any buttons, ids
  and flags) serves OpenCE's platform_ask too, so it is kept alone.
- README.md, AGENTS.md, port/android/README.md, port/linux/README.md,
  docs/mods.md: OpenCE's text, the fork's tables and names (the Android
  package net.fractumseraph.halo, the logs folder, ninja browser having no
  way to add mods yet).
- tools/test_mods.py reads debug.txt from the fork's logs folder.

The menus: tools/port_settings.py's screens written again (scratchpad
regen.py, as for the earlier merges): nothing changed, main_menu.mods.xml
as OpenCE's. ce_menus.py's full run needs the PC version's tags, which are
not here; its outputs (main_menu.xml, bitmaps.xml, menus.json, the MODS
pictures) are OpenCE's, merged by hand.

Checked: python tools/network_format.py --record leaves
port/linux/network_format.txt as it was (no wire change; network version
unchanged). No function or setting is defined twice. In Docker (Arch):
ninja linux linux64 server builds (64-bit -Werror; no new warnings);
pytest (test_linux_port with assets/maps, test_touch_menu, test_p2p_copies,
test_save_folder, test_server_control, test_delta, test_delta_peer,
test_profile, test_map_torrents, test_map_families, test_bmp_files,
test_host_watch_hash, test_virtual_keyboard_input, test_settings_sections,
test_loading_picture, tools/harness with OpenCE's test_mod_files.py,
test_map_download, test_ping, test_update_manifest, and OpenCE's
test_mods.py playing a mod over Blood Gulch under Xvfb): 779 passed, 34
skipped, 1 failed, the known test_profile.py
test_check_program_has_no_data_races (ThreadSanitizer cannot run in
Docker); node --test port/web/tests/*.test.js: 18 passed. A mod played
over a Custom Edition map (bloodislands@ce): its sound, string list and
four bitmaps played, one of them a multipurpose map sampled in Halo PC's
channels, a HUD meter of another shape left out, no read outside the tags,
and the game ran and exited cleanly. The browser build (ninja browser,
emsdk) builds and links; OpenCE's web build's units that changed
(xbox_textures.c, the mods, sdl_platform.c, menu_functions.c, ce_hud.c,
ce_map_checks.c, xbox_texture_cache.c) compile with its flags (its full
build needs a POSIX host). Not built here: Android (ninja android) and
Windows. tools/test_map_fuzz.py does not link here: references the merge
did not add (ce_map_checks.c's ce_map_refused_verify to map_family_* and
map_archive_*, bitmaps.c's to release_assert_failed) are not in its unit
list; its own stub of mods_memory_contains links.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants