Skip to content

Initial Settings Functionality - #1

Open
megabitt01 wants to merge 22 commits into
wouter51:masterfrom
megabitt01:master-chief
Open

Initial Settings Functionality#1
megabitt01 wants to merge 22 commits into
wouter51:masterfrom
megabitt01:master-chief

Conversation

@megabitt01

Copy link
Copy Markdown
  • added JSON interface and settings.json
  • added save/load functionality for spltiscreen settings (splitscreen enabled, use player1 profile, etc...)
  • added save/load functionality for profile settings (armor customization, name, tag, etc...)

@RoastCabose RoastCabose left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't downloaded these latest controller remapping changes, they look super promising. The work in general here on this PR is great, and it looks like there might simply be a new maintainer? Good to see, I was about to try and fork this myself.

I did see one bug, I couldn't get colors to apply to spartans in Halo 3. I haven't yet foudn the source of it, so I didn't label it in this review, but I'm pretty sure the bug predates this PR anyways.

Things I want to look into in the future is utilizing the detecting in game state, and loading game specific customizations.

I really appreciate all yall work, this is such a great utility, and these are some tasty changes for an upcoming Halo LAN bachelor party that would be way more annoying if we couldn't just use the PCs we already own lol.

ImGui::EndDisabled();

if (ImGui::Button("Load Profile")) {
if (ImGui::Button("Apply Profile")) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be a more clear "Load Profile from Game", and then the tooltip I redid as "Loads current player profile; can only be used in a match!".

Comment thread src/mcc/splitscreen/Splitscreen.cpp Outdated
}
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Use this in game!!!");
if (ImGui::Button("Save Profile")) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correspondingly, I labeled this as "Save Profile to File" & added a tool tip that said "This will be loaded on next startup."

@RoastCabose

Copy link
Copy Markdown

I also just realized that I started writing this review literally minutes after an update was pushed lmao.

if (state.Gamepad.wButtons & XINPUT_GAMEPAD_A) return CGamepadMapping::A;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_B) return CGamepadMapping::B;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_X) return CGamepadMapping::X;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_Y) return CGamepadMapping::Y;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This leaves out equipment/armor abilities/sprint binds, as well as all the default controls for stuff like vehicles.

@ZekeZDev

ZekeZDev commented May 9, 2026

Copy link
Copy Markdown

This seems like some really good additions and fixes, especially with kirklandsig's changes being merged now that should mean I can use it on proton.

However I don't have a windows pc to build based on your steps, so I have attempted to cross compile with a similar setup to what kadrim's AlphaRing #2 PR uses. It compiles successfully however actually running the game causes the mod to fail to load properly. I was able to successfully run kadrim's Linux PR previously.

I am unsure if this is an issue of merging kirklandsig's changes with yours or a failure in my cross compile set-up. Would it be at all possible to provide an updated binary in your forks releases that was built on windows so I can check if the issue persists or if I setup my cross compilation wrong. Thanks.

@softyoda

Copy link
Copy Markdown

Where is your discord ? I cannot install your lastest fix https://github.com/thejackbitt/AlphaRing/tree/master-chief on linux (may be related to vcredit?)

@megabitt01

Copy link
Copy Markdown
Author

@softyoda I'm going to be honest, I forgot I raised an MR with the original repo. I don't know if this fork should be merged with main because the new UI is radically different from the original design.

As far as the issue you're seeing, yes it probably is related to C++ Redistributable version. If you're on Linux. You'll need to download the 2015-2022 VS C++ Redistributable installer and install via Protontricks.

Here is my Discord server (it looks like the old one got nuked). This one is actively maintained and moderated.

https://discord.gg/DjrexnQgu

megabitt01 and others added 10 commits June 16, 2026 21:26
* fix: fixed UI scaling issues

* fix: resolved missing bindings issue
* fix: prevent debug menu flicker when holding F1

* added black bars H3, ODST, H4, H Reach

* fix: HaloReach 2p loadout invisible in stretched splitscreen

Root cause: the loadout menu's own layout-lookup function only ever
recognized resolution values 0, 2 and 3 - any other value (including 1,
used for fully-stretched no-black-bar splitscreen) fell through to "no
layout", so the loadout screen never got built. Added a hook that makes
resolution=1 reuse resolution=3's known-good layout instead.

This also surfaced a pre-existing wiring gap: HaloReach's CModule was
never given its EntrySet (passed nullptr), so none of its function hooks
(including the new one) were ever actually installed - fixed by wiring
in HaloReachEntrySet().

Also carries forward earlier changes from this investigation:
- fix F1 debug menu mouse cursor not auto-showing, and background
  mouse/keyboard input being fed to ImGui when no menu is open
- remove redundant player-count control from the splitscreen window
  (now set exclusively via the F4 Xbox menu)
- live Splitscreen Config Editor (Game -> Patch -> haloreach) for
  testing config table values without rebuilding
- HaloReach black-bar patch byte-length/resolution-value fixes and a
  new (disabled by default) vertical-split experiment patch

* feat: safe, clearly-scoped black-bar removal for HaloReach splitscreen

Replaces the three raw "Remove Black Bar1/2/3" checkboxes (Dev Tools ->
haloreach) with two controls scoped by which player/slot they actually
affect:
- "Player 1 (Top, 2 or 3 Player)" - toggles the 2p and 3p top slots
  together, since they're the same shape either way. Both now write the
  validated x0=0/x1=1/resolution=1 combo (previously 0.05/0.95/res=3),
  matching the resolution=1 loadout fix from the previous commit.
- "Player 2 (Bottom, 2 Player Only)" - only affects 2-player's bottom
  slot; disabled until Player 1 is also on, since the game's black-bar
  overlay painter only ever reads Player 1's bounds and can't visually
  remove Player 2's bar on its own. Auto-disables if Player 1 is turned
  back off, so it can't get stuck in that broken combination.

Also renames the "Patch" window to "Dev Tools" (still under Game),
matching its actual purpose better as it grows.
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