Skip to content

About

A Modding Tool For MCC - with tweaks to profile options

Resources

Stars

32 stars

Watchers

1 watching

Forks

 
 

Latest commit

 

History

219 Commits

Folders and files

Repository files navigation

AlphaRing - kirklandsig Fork

This is a personal fork of thejackbitt/AlphaRing for testing and development.

Based on: JackBitt's AlphaRing v1.2.1 (commit bdad7eb)

For the original project, see WinterSquire/AlphaRing


What's New in v2.0.2 (experimental)

Testing status: as with v2.0, tested only on one Batocera Linux machine (MCC 1.3528 on Steam through Proton, virtual Xbox 360 controllers, 1920x1080). Please report what you find on the AlphaRing Discord.

Fix

  • Halo 2 on Legendary or with the Iron skull: the mission kept going back to the checkpoint (#8) with 3-4 players, or with hot join on - even with one player in. Since v2.0, players 3 and 4 (and players who haven't joined yet) come in beside a teammate through Halo 2's co-op respawn instead of waiting for a free starting place. Legendary and the Iron skull turn the co-op respawn off and count a player waiting for one as dead, and on those settings any dead player sends everyone back to the checkpoint, so it happened again and again. They now come in beside a teammate only where the game allows co-op respawns; on Legendary and with Iron they wait for a starting place as in the stock game, and a player who joins in the middle of a mission comes in at one. Tested on the box: Legendary with 3 players (before: player 3 never spawned and the mission went back every 30-45 seconds; after: player 3 came in at once), hot join on Legendary (no reverts; a joiner came in at a starting place), and Normal with 4 players (players 3-4 still come in beside the others).

What's New in v2.0.1 (experimental)

Testing status: as with v2.0, tested only on one Batocera Linux machine (MCC 1.3528 on Steam through Proton, virtual Xbox 360 controllers, 1920x1080). Please report what you find on the AlphaRing Discord.

Fixes

  • Halo CE Anniversary with hot join on: one player saw a split screen. A hot-join mission starts with all four player slots, and Halo CE decides whether its Anniversary picture is split while the mission loads, so it stayed split for one player, with a frozen second view and the HUD laid out for the whole screen. When players left, it stayed split too. The split now follows the players in the mission: one player is full screen, a second splits it, a third brings quarters, and leaving goes back the same way. Tested on the box on a fresh start of Halo with one player, joining up to three, and leaving back down to one.
  • Halo CE hot join: new players come in beside a teammate, straight away. Halo CE only spawns players at a mission's starting places, and the built-in missions have two, often where the others still stand, so a new player could wait with a grey screen until someone walked off. A new player now spawns on a spot a teammate just walked through, facing them. If nobody has walked anywhere yet, they still come in at a starting place. Tested on the box: players 2 and 3 appeared 1-2 steps behind player 1 on Halo's opening path.
  • Spawn menus with 3 players in Halo CE Anniversary were in the wrong corners. Halo CE's Anniversary graphics show three players in quarters, but the menus were laid out for player 1 on the top half. Each menu now opens in its player's own quarter.
  • Halo CE Anniversary with 3-4 players: players 3 and 4's views and guns (#4). Players 3 and 4's views often used their camera from the frame before, because the list of views was built while their cameras were still being handed over, so their views jittered. They also shared the renderer's first-person gun models with players 1 and 2: player 3's assault rifle showed player 1's round count, and their own guns missed the effects the game sends to a player's gun. Players 3 and 4's cameras are now handed over before the list is built, and they have first-person models of their own. Tested on the box: stale cameras went from 56% of frames to none (two while player 3 was joining); player 3's and player 1's rifles each count their own rounds through firing and reloading; a two-minute soak, a player leaving and rejoining, and Back to Classic and back.
  • Halo 2 Anniversary with 3-4 players: brightness (#5). Each view adapts its brightness to its own previous frame, and with the pairs of players alternating, that was the other pair's frame. Player 3's view got darker or washed out depending on where player 1 looked, and pulsed as they both moved. Each pair now adapts to its own picture. Tested on the box: with player 3 standing still, player 3's brightness no longer follows player 1 (before: 71, 54, 65, 55 as player 1 turned between the sky and the ground; after: 62-63 throughout), and a 90-second soak.
  • Halo 4 side by side: the full-height view's gun and arms (#7). Halo 4 widens the first-person gun's field of view by how much narrower a view is than the screen. That keeps the gun's framing in its own wide split-screen views, but a full-height half doubled it, and the arms and gun were drawn big and stretched. While side by side is on screen, the gun is framed like the world, as Halo 3 and Reach draw it. Tested on the box with three players side by side.

Known issues (not fixed yet)

  • Halo 2 Anniversary with one player was black once (#6) during a long session with hot join on. It hasn't happened again in nine tries: hot join on and off, launched in Anniversary or switched with Back, after a Halo CE game in the same session, and with players joining afterwards. If you see it, please send your alpharing.log on Discord.

What's New in v2.0 (experimental)

Testing status: like v1.9, this build has only been tested on one Batocera Linux machine running the latest Batocera (MCC 1.3528 on Steam through Proton, virtual Xbox 360 controllers, 1920x1080). It needs a lot more testing on other machines and setups - expect bugs, and please report what you find on the AlphaRing Discord.

Ready for MCC updates

Until now, every MCC update broke AlphaRing until someone found hundreds of addresses again by hand. AlphaRing now carries a byte pattern for almost every address it uses (364 of 375), and finds them again in a new MCC build by itself.

  • On today's MCC (1.3528): nothing changes and nothing is searched.
  • On a new build: the game DLLs are searched once as they load. Anything that can't be found is logged and just that feature switches off, instead of AlphaRing refusing to start or hooking the wrong code.
  • Tested: every pattern finds exactly today's address, and a simulated update (code moved around, some patterns broken on purpose) never found a wrong address. On the box, the full split-screen check also passed with every address looked up from its pattern.
  • Not covered: the Windows Store version still needs its addresses by hand.

Players window: join with A

Opening the overlay at MCC's menus (F4, or Start + Back on the first controller) now shows a Players window.

  • Any controller presses A to join the next free slot, and B to leave (later players move up).
  • Start saves and closes it.
  • Each player gets a card in their colour, showing their controller, or when it's disconnected.
  • The player count follows who joined, so there's no need to set controllers and a count in the Splitscreen menu.
  • It's also under Players in the menu bar, and it can be set not to open by itself.
  • During a game it shows who's playing. Joining in the middle of a mission is Hot join, below.

The Players window at MCC's menus: three players in, player 4 free

Hot join: drop in mid-mission (experimental)

Turn on Splitscreen > Options > Hot join (experimental). Then, in the middle of a campaign mission, a controller nobody is playing with presses A to join: the screen splits and the new player comes in beside a teammate.

  • Every game: Halo CE, Halo 2, Halo 3, ODST, Reach and Halo 4.
  • Where you come in: Halo 3, ODST, Reach and Halo 4 take the new player the way they take a controller signing in. Halo 2 brings them in through its co-op respawn, beside a teammate who's out of combat. Halo CE has no such respawn, so AlphaRing moves the new player onto a spot a teammate stood on a moment before.
  • Leaving: in Halo CE the last player to join can leave in the middle of a mission with B in the Players window; their Spartan disappears and the screen goes back. The other games end the mission when a player signs out, so there players leave at MCC's menus.
  • The player count is saved, so Save & Quit and Resume keep everyone who joined.
  • Halo CE and Halo 2 make their players as a mission loads, so in those two the option takes effect from the next mission start (the extra players are held back until someone joins) and is changed at MCC's menus. In the other games it works right away.
  • Tested on the box: in every game a player joined in the middle of a mission, then turned, moved and fired, with their HUD drawn. Halo CE's player also left and joined again, Halo 3 went from one player to two after a fresh mission start, and Halo 2 and Halo 3 each ran a few minutes with everyone moving and firing. With the option off, A did nothing.
Splitscreen > Options: side by side, hot join and Anniversary with 3-4 players Two players joined in the middle of Halo CE, with the Players window open
Splitscreen > Options Two players joined mid-mission (Halo CE Anniversary)

Where things are

The overlay (F4, or Start + Back on the first controller) has a menu bar: Players (above), Splitscreen (player count, controllers, profiles and the options above), Spawn and HUD. In a campaign, each player can also press D-pad Down for their own menu in their part of the screen: vehicles, weapons, equipment and characters to spawn, and a page for their own HUD.

The HUD window: size, area, colour and each element per player Three players' own spawn menus, each in its quarter
HUD window Each player's spawn menu (D-pad Down)

Fixes

  • Halo 2: Save & Quit never finished (reported by SR388). It happened with a modded campaign (such as the Halo 2 3/4 Player Co-Op Fixes) and 2 or more players, and stayed on the loading screen. Halo 2 thought the game came from its own lobby and tried to go back there by loading its menu map, which doesn't exist under MCC. It now always quits to MCC. The fix is the Dev Tools patch Save & Quit to MCC, on by default.
  • Reach side by side: HUDs crowded toward the middle (reported by salty at 21:9). Reach built each half's HUD box against the whole screen's centre line, so each HUD sat against the middle of the screen. Each half's HUD is now centred in its own view.
  • Reach: the radar moved twice as far as its offset. A per-player radar offset, or a HUD area preset like "4:3 box", moved the radar dish twice as far as everything else. With "4:3 box" it ended up right of centre. The area presets also pushed Reach's grenade count off-screen.
  • Halo 2 Anniversary with 3-4 players: 60 fps instead of 30. Each view used to be drawn at the size of half the screen and then squeezed into its quarter. Now it's drawn at its quarter's size: on the test box the same spot went from 30 fps (GPU-bound) to a steady 60.
  • Back into Anniversary graphics works in Halo CE and Halo 2 with any number of players. With 3-4 players it gave a black screen unless Anniversary graphics with 3-4 players was on before the mission (and in Halo CE only if the mission had started in Anniversary), and with side by side chosen it never worked. Now Back always switches to Anniversary with every view drawn, and back again. Side by side is Classic's layout: Anniversary shows its stacked views with 2 players and quarters with 3-4, and Back to Classic brings side by side back. The option now only decides whether 3-4 player missions start in Anniversary.
  • Halo 2: players 3 and 4 in the wrong place at a mission start (reported by megabitt01). The built-in missions have starting places for two players, so players 3-4 waited on those places until players 1-2 walked off them, or came in at them even where the mission had put players 1-2 somewhere else (Delta Halo starts them in a drop pod far from its starting places). They now come in through the co-op respawn, beside a teammate. Tested on a fresh start of Delta Halo with four players: players 3-4 appeared next to players 1-2 straight away.
  • Halo 2 Anniversary with 2 players: no more black screen. Switching a two-player game to Anniversary graphics left both views black under the HUD. Each view is now drawn into its half the way 3-4 player mode does it (megabitt01 found this black screen too, in his #23).
  • Reach split screen: bodies stay. v1.9.1 made Reach clear bodies and dropped weapons early in split screen, because past a point the later views drew Spartans and first-person weapons black or not at all. The cause is now found: Reach keeps the bone data of every Spartan it draws in a frame in one small pool (about 55 Spartans' worth), shared by all the views. AlphaRing gives it a buffer about 18 times bigger, so bodies stay as long as they do in single player again. A big pile of bodies costs frame time with 4 players (about 45 fps on the test box).
  • SPECIES changes from the next game, not the next spawn. Halo 2, Halo 3 and Reach read a player's profile as the game loads, so a change made during a game shows from the next one; the menu now says so. Reach's Team Slayer variants (such as TU Team Slayer DMR) make everyone a Spartan, and v1.8's picture was taken in one; it's replaced with Reach Slayer. Checked on the box in Halo 2 Classic, Halo 3 and Reach.

Behind the scenes

  • Split-screen check on the test box: every game's campaign at 2 and 4 players, with screenshots. It flags black views, views without a HUD, and log errors, and it runs before each release.
  • Automatic builds: GitHub builds the DLL on every push (.github/workflows/build.yml), so a release's DLL can be matched to its source.

Known limitations

  • Everything under v1.9's known limitations still applies.
  • With built-in content, Halo CE missions have starting places for two players, so the last players to spawn wait a few seconds, until the others walk off them. The co-op fix mods add the places.
  • Hot join: leaving in the middle of a mission only works in Halo CE (above). In Halo CE a new player is moved to where a teammate stood in the last few seconds; if the whole team has stood still that long, they stay where Halo CE spawned them, at the mission's starting places. Hot join is made for campaigns and hasn't been tried in multiplayer.
  • Resuming with fewer players than the checkpoint was saved with: Halo 3 goes straight back to the menu (it does that with AlphaRing's split screen off too), and Reach shows a black screen until enough players are in (hot join can bring them in). Starting the mission again from MISSIONS works with any number of players.
  • Halo CE Anniversary with 3-4 players still draws two views per frame (players 1-2, then 3-4, so each view updates 30 times a second at 60 fps). Drawing all four every frame was the goal for v2.0 and isn't done: the Anniversary renderer keeps its lighting, visibility and first-person models for exactly two views, four views in one frame crash it, and MCC holds the game at 60 frames a second, so alternate frames can't simply be skipped. The details are in docs/REVERSE_ENGINEERING.md.

What's New in v1.9.1 (experimental)

Testing status: like v1.9.0, this build has only been tested on one Batocera Linux machine running the latest Batocera (MCC 1.3528 on Steam through Proton, virtual Xbox 360 controllers, 1920x1080). It needs a lot more testing on other machines and setups - expect bugs, and please report what you find in Issues.

Reach split screen: black or invisible Spartans after many deaths

Reported by XiaoDanny: after a lot of deaths in one place, players 3 and 4 saw Spartans and their own first-person weapon black, over-bright or invisible, and bodies flickered.

  • Cause: this is Reach itself. It still happens with all of AlphaRing's Reach hooks switched off, and even at two players. The render-quality patch only makes it happen sooner.
  • When it happens: once enough bodies and dropped weapons pile up, Reach stops drawing Spartans and first-person weapons properly in the later split-screen views, the last player's view first. At the start of The Package that's about 440 objects with four players, or 495 with two (roughly 30-40 deaths in one spot).
  • Why Reach doesn't fix it itself: Reach does clean up bodies and dropped weapons. But it only starts once more than 120 are lying around, and it stops again at 115, so the pile stays big enough to hit the limit.
  • The fix: in split screen, AlphaRing makes Reach start that cleanup much sooner: above 40 bodies and dropped weapons with three or four players, or 60 with two. Online games with players on other machines keep Reach's normal behaviour.
  • Tested: on the test box, every view kept drawing everyone through 100 deaths at two players and at four players. Before the fix, it broke after about 30-40.
  • Side effect: bodies and dropped weapons can vanish while you're looking at them. Reach picks what goes, starting with the biggest pile, so a weapon just dropped in a big pile can go too.

Still open

  • salty's Reach side-by-side HUD at 21:9 sits differently on the left and right of each half.
  • In Reach two-player top/bottom, the bottom view's HUD is squeezed toward the centre-right.
  • SR388's Halo 2 four-player Save & Quit hang and exit crash (more details welcome).
  • Everything under v1.9.0's known limitations still applies, except the Reach black Spartans, which are fixed.

What's New in v1.9.0 (experimental)

Testing status: like v1.8.0, this build has only been tested on one Batocera Linux machine running the latest Batocera (MCC 1.3528 on Steam through Proton, virtual Xbox 360 controllers, 1920x1080). It needs a lot more testing on other machines and setups - expect bugs, and please report what you find in Issues.

Anniversary graphics with 3-4 players - Halo CE and Halo 2 (experimental)

Both Anniversary renderers only ever drew two stacked views, so until now missions with three or four players started in Classic graphics. They can now stay in Anniversary. Each frame still draws two views, and the pairs take turns - players 1 and 2, then players 3 and 4 - so every player gets a live view of their own with their own HUD, first-person weapon and scope zoom, their own body hidden and everyone else's visible. Each view updates at half the frame rate.

  • Turn it on: Splitscreen > Options > Anniversary graphics with 3-4 players, or any player's menu (D-pad Down → MY HUD → ANNIV 3-4P). It's off by default (Classic, as before) and takes effect when a mission starts.
  • Graphics choice: MCC's own setting still decides - Halo 2's is Visuals and Audio in the mission lobby's options (Remastered). In Halo 2 the Back button still switches between Classic and Anniversary in the middle of a mission.
  • Three players: Halo 2 gives player 1 the wide top half; Halo CE uses quarters and leaves the fourth black.
  • Speed on the test box: Halo CE runs at 60 fps with four players (30 per view). Halo 2's Anniversary renderer is much heavier: about 30 fps with four players.
  • Halo 2's players 3 and 4 appear at the first co-op respawn, as soon as the others move off the spawn point (the missions only have starting places for two players); their views are black until then. The co-op fix mods can't help here, because MCC runs mod campaigns in Classic graphics.
Halo CE Anniversary with 4 players Halo 2 Anniversary with 4 players

Halo 4 with its black bars removed: the HUD fills each view

With Halo 4's black bars removed, each player's HUD stayed in the left three quarters of their view, and side by side it sat in the top half (reported by nanomohchine). Halo 4 already stretches its HUD to fit ultrawide screens; while a split view's HUD is drawn it now fits that view instead, so the HUD reaches the view's edges with the crosshair and nametags centred.

Halo 4 with the black bars removed

Other fixes and answers

  • Reach crosshair low in each view (reported by salty): this is MCC's own Crosshair Position setting. Under Settings > Gameplay > Halo: Reach, Lowered puts the reticle below the middle like the original Reach; pick Centered to have it in the middle of every view.
  • Side-by-side Reach drawing top/bottom with a side-by-side HUD: a Left/Right choice saved without its layout table entries is now completed when the settings load.

Known limitations

  • Anniversary with 3-4 players is experimental: each view updates at half the frame rate, and it has had far less testing than Classic. In Halo CE, start the mission in Anniversary; switching with Back in the middle of a 3-4 player mission isn't supported there.
  • Reach, players 3 and 4 seeing black or invisible Spartans (reported by XiaoDanny on his own build, after many deaths at the start of The Package): fixed in v1.9.1.
  • Everything under v1.8.0's known limitations still applies, except the Halo 4 black-bars HUD, which is fixed.

What's New in v1.8.0 (experimental)

Fixes from the community's v1.7.0 feedback on Discord - thanks to everyone who reported and posted screenshots.

Testing status: like v1.7.0, this build has only been tested on one Batocera Linux machine running the latest Batocera (MCC 1.3528 on Steam through Proton, virtual Xbox 360 controllers, 1920x1080). It needs a lot more testing on other machines and setups - expect bugs, and please report what you find in Issues.

Split-screen crosshair and HUD centred in each view - Halo 3, ODST, Halo 4 and Reach

These games clipped every split-screen view by the whole screen's TV-safe area, so each player's crosshair, aim and HUD were pulled toward the middle of the screen - on a screen spanning two monitors, toward the bezel (reported by Tuko Mas). Each view now gets its own safe area: the crosshair and aim sit in the centre of every half and quarter (2, 3 and 4 players, both layouts), and the HUD is centred with them. Halo 3 and ODST also clamped each HUD to a share of the whole screen, which trimmed a quarter only on its outer sides and pushed its HUD toward the middle; each HUD now fills its own view's safe area instead.

Halo 3 4-player, before and after

Halo CE side by side: zoom, divider and three players

  • Zooming works: with the pistol or sniper zoomed in, each player's scope showed a squeezed piece of the screen with the rest left unpainted (reported by salty). MCC's scope effect worked out where each view sits for the top/bottom layout only; it now uses the view's own window, so each scope shows its own view.
  • The divider runs down the middle (Halo CE and Halo 2): their top/bottom divider line was still drawn straight across both halves. With three players there's also one across the right half.
  • Three players side by side: player 1 gets the full-height left half and players 2 and 3 the right quarters, as in the other games (CE kept its own 3-player layout before).

Halo CE zoomed in side by side, before and after

Halo 4 side by side: the HUD fits each half

Halo 4 gave each half its two-player HUD layout, as wide as a top/bottom half, so the weapon panel ran off the right edge. Each half now takes the quarter-screen layout, which is exactly its width.

Halo 4 side by side

ODST with 3-4 players and side by side: the whole HUD

ODST never shipped four-player split screen, and its quarter-screen HUD shows only the ammo counter - no compass, health or grenades (reported by ArtoriusOPOr). Quarters and side-by-side halves now use ODST's full HUD.

ODST 4 players ODST 2 players side by side

Pick your species - Halo 2, Halo 3 and Reach

Each player's menu (D-pad Down → MY HUD) has a SPECIES row: Spartan or Elite, for that player alone, from the next game in multiplayer (requested by nanomohchine). It shows for each player with an AlphaRing profile of their own: players 2-4 unless "use player 1's profile" is on, and player 1 with "Override profile" on - otherwise player 1's species is MCC's own setting.

The SPECIES row Reach Slayer: player 2 an Elite, player 1 a Spartan

Halo CE spawn menu fixes

  • Allies are allies again: on levels whose script doesn't ally the human team with the players (The Maw), an "Ally" spawn turned on you. Allies now join the players' own team.
  • Spawns appear where you look, not where your body happens to face (it lags behind the camera by up to a right angle until you move) - no more allies spawning inside walls beside you.
  • Weapons a character can't hold: a CE Elite has no animations for human weapons (the shotgun, assault rifle, flamethrower...), so the game refuses them and it keeps its usual weapon. The menu now says so - Can't use Shotgun: Elite Minor.

A CE ally Elite on The Maw

Other fixes

  • Player 2-4 profile edits kept: a player's profile edited in the overlay only in, say, its look deadzones was replaced by player 1's settings at the next match (reported by OPOriginal). It now takes player 1's settings before the first edit instead.
  • Saving settings can't empty settings.json any more: saving a player's profile (the overlay's Save Profile, or the SPECIES row) stopped halfway when the profile held raw game data that isn't text, leaving the file empty and every saved profile gone. Settings are now written to a temporary file that replaces the old one only when complete, and that raw data (the game's own runtime pointers) is no longer stored.
  • Halo 3, ODST and Halo 4 black-bar settings can't be changed while Left/Right is chosen (as in Reach), so switching back to Top/Bottom always restores them correctly.
  • The MY HUD page's rows fit a half-height view (with SPECIES shown, the last row ran into the hint line).
  • Checked and already working in this fork: Reach's loadout menu with 3 players, wide top slot and side by side (XiaoDanny's fix; reported by RoastCabose), and LB/B in Halo CE (the flashlight-and-grenade double actions come from another build's presets).

Known limitations

  • Halo 4 with its black bars removed: its HUD stays in the left three quarters of each view (reported by nanomohchine). Keep Halo 4's bars on for now. Moving it with Halo 4's own ultrawide anchoring also moves the crosshair and the scope mask, so it needs more work.
  • Halo 4 side by side: the quarter layout is half as tall as the view, so the motion tracker sits at mid-height.
  • Anniversary graphics with 3-4 players (CE and Halo 2): still Classic only. Both Anniversary renderers are built for exactly two stacked views (two cameras, render targets split in two), so this is a separate, larger project.
  • Everything under v1.7.0's known limitations still applies.

What's New in v1.7.0 (experimental)

Halo 3, three players side by side

Testing status: like v1.6.0, this build has only been tested on one Batocera Linux machine running the latest Batocera (MCC 1.3528 on Steam through Proton, virtual Xbox 360 controllers, 1920x1080). It needs a lot more testing on other machines and setups - expect bugs, and please report what you find in Issues.

Side-by-side (Left/Right) split screen in every game

XiaoDanny's Left/Right split for Halo Reach now works in Halo CE, Halo 2, Halo 3 and ODST as well, with Halo 4 as a work in progress - one setting for all the games:

  • 2 players: two full-height halves. 3 players: player 1 on the left half, players 2 and 3 on the right.
  • Switch it: press D-pad Down, go to the MY HUD page (SCREEN in Halo 4) and change SPLIT with the D-pad - or overlay → Splitscreen → Options → Side-by-side split. It's saved, and applies to everyone. Halo 3, ODST, Halo 4 and Reach switch on the spot; Halo CE and Halo 2 switch when a mission starts or restarts.
  • The views aren't stretched: each half is drawn at its real size.
  • Each player's HUD stays in their own half. In Halo 3 and ODST a half uses the quarter-screen HUD, made as tall as the half, so the motion tracker sits at the bottom; Halo 2 and CE lay their HUD out for each view themselves.
  • Halo 2 and CE use Classic graphics side by side (their Anniversary renderer only draws stacked views).
  • Crosshairs sit in the middle of each half in Halo 2, CE and Halo 4. Halo 3 and ODST nudge each view's centre, and the crosshair and aim with it, toward the middle of the screen, as they do in their own 4-player split.
Halo 3, 2 players ODST, 3 players
Halo 2, 3 players Halo CE, 2 players

The SPLIT setting in a player's menu

Fixes

  • Dual wielding for players 2-4 with controls saved by older versions: mappings saved before v1.6.0 (and custom mapping profiles) had no button for Use Left Weapon, Swap/Reload Left Weapon or the vehicle functions, so players 2-4 still couldn't dual wield after updating. They now get their usual buttons when such a mapping loads. Rebinding Reload, Throw Grenade, Crouch or Jump also moves the actions that share its button (as in MegaBit's fork), unless you bound those separately.
  • The per-player menu now opens in Halo 4 too (for the SPLIT setting).

Known limitations

  • Halo 4 side by side is a work in progress: the views, aim and switching work, but Halo 4 keeps its two-player HUD layout - the lower HUD elements sit mid-height and the top-right weapon panel is cut off at the edge of the half. Not tested with 3 players yet.
  • Halo 2 and CE side by side: the stock divider line is still drawn straight across the middle of the screen.
  • Halo CE keeps its own 3-player layout.
  • Halo 2 and CE: switching to Anniversary graphics in the middle of a side-by-side mission isn't supported.

What's New in v1.6.0 (experimental)

Four players, four HUD layouts

Testing status: like v1.5.0, this build has only been tested on one Batocera Linux machine running the latest Batocera (MCC 1.3528 on Steam through Proton, four virtual Xbox 360 controllers, a 32:9 window for the ultrawide tests). It needs a lot more testing on other machines and setups (Windows, Steam Deck, real ultrawide and multi-monitor setups, different controllers) - expect bugs, and please report what you find in Issues.

Your own HUD, per player - Halo CE, 2, 3, ODST and Reach

Every player can lay out, resize, hide and recolour their own HUD, and pick a HUD area for their screen.

  • HUD area presets - Game default, Screen edges, 21:9 box, 16:9 box or 4:3 box: the HUD is laid out in a centered box of that shape inside the player's view. Pull it in from the far edges of an ultrawide or multi-monitor view, or spread Halo CE's HUD (always a centered 4:3 box) out to the edges of the screen.
  • Each element - motion tracker, shield/health, weapon/ammo, grenades, crosshair (size/hide), equipment and messages: move left/right/up/down, resize or hide.
  • Colour (Halo 3, ODST, Reach): shift the HUD toward any hue; enemy reds and whites keep their colour.
  • From the controller: press D-pad Down, then LB/RB to the MY HUD page - area, size and colour with the D-pad, A on Reset to start over. In Halo Reach, D-pad Down opens straight on this page.
  • With the mouse: overlay (F4) → HUD window, one tab per player. Everything is saved to alpha_ring_hud.cfg.
Player 1 green, player 2 orange, player 2's HUD menu Halo CE: default HUD (left) and "Screen edges" (right)

Ultrawide / multi-monitor: Halo 2 HUD bunching fixed

With MCC's HUD anchor: Centered (the default) on a screen wider than 16:9, Halo 2 squeezed every player's HUD into a 16:9 box in the middle of the whole screen: HUDs bunched toward the center and crosshairs off-center. Halo 2 now keeps each player's HUD at the edges of their own view (Dev Tools → halo2 → HUD at screen edges, on by default).

Before (4 players on 32:9, top row) After
Halo 2 before Halo 2 after

Halo Reach vertical split screen - by XiaoDanny

XiaoDanny (Daniel Coyle)'s Reach work from megabitt01/AlphaRing #17 and #20 is now part of this fork, with full credit - his code, comments and research notes (docs/REVERSE_ENGINEERING.md) are kept as he wrote them:

  • Left/Right split for 2 players (two full-height halves) and 3 players (player 1 on the left half, players 2 and 3 on the right) - made for ultrawide and two-monitor setups.
  • Per-player FOV in split screen (Reach normally forces 78 degrees on everyone).
  • Splitscreen Render Quality option: split screen normally drops grass, grenade glow, decals and dynamic lights; this restores the 1-player detail level (costs frame rate at 3-4 players).
  • The Reach loadout screen is no longer invisible in 2-3 player Firefight/customs, and Reach's menus are no longer stretched at 32:9.
  • Everything is in the overlay's Game → Dev Tools window (layout, FOV sliders, black bars, render quality, the Splitscreen Config Editor) and is saved.
Reach 2 players Left/Right Reach 3 players Left/Right

AI spawn with weapons - pick one for each spawn

  • Spawned AI now carry the weapon the mission gives that character. (Halo 3's AI used to spawn unarmed and could only melee.) Halo 3's Marines get Battle Rifles and its Brutes Spikers, for example.
  • Choose the weapon for every spawn: on the Characters page press LT / RT to go through the weapons the level has loaded, or back to Their usual weapon. In the overlay's Spawn window, use the Weapon list. Works in Halo CE, Halo 2, Halo 3 and ODST.

Choosing a weapon for a spawned Marine

Button (Characters page)
LT / RT the character's weapon
Left / Right their own side, ally, enemy

Fixes

  • Players 2-4 started with empty settings (no sound, FOV and look sensitivity at their minimum, HUD scale 0) unless you had saved profiles for them. They now start with player 1's MCC settings.
  • Look sensitivity in the profile editor is a 1-10 value again (it was saved as on/off, which made players 2-4 turn slowly) - the field fix is MegaBit's, from his fork.
  • Dual wielding and vehicle boost for players 2-4: the default controls now bind Use/Reload Left Weapon and the vehicle functions the way MCC does (defaults from MegaBit's fork).
  • Halo CE level-end freeze (attempted fix): while a Halo CE map loads, every controller slot now answers the way it does with the overlay open - the known workaround for the freeze between missions. Not yet confirmed: please report whether Halo CE still freezes after finishing a level.
  • Dev Tools patch settings are now actually restored on launch, and turning a default-on patch off really turns it off.
  • An unsupported MCC version now leaves the game unmodified instead of hooking the wrong code.
  • Proton: no console window (it could take focus and close MCC), XInput is loaded if MCC hasn't loaded it yet, the overlay scales with the screen (it was tiny on 4K TVs), and a build setting for older Proton runtimes.
  • Per-player menus open in the right place with 3 players and in Reach's Left/Right split; the overlay no longer queues mouse/keyboard input while it's hidden.

Known limitations

  • Only MCC 1.3528.0.0 (Steam). Campaign only. No spawning in Halo Reach and Halo 4 (HUD pages work in Reach).
  • HUD area presets move the HUD elements listed above (tracker, shield, weapon, grenades, equipment, messages); objective text, damage indicators and waypoints stay where the game puts them.
  • Players 3/4 can spawn outside the map on some Halo CE/Halo 2 levels (the games were made for 2): use the Workshop co-op fix mods.

What's New in v1.5.0 (experimental)

Four players, four spawn menus

Testing status: so far this build has only been tested on one Batocera Linux machine running the latest Batocera (MCC 1.3528 on Steam through Proton, driven by four virtual Xbox 360 controllers). It needs a lot more testing on other machines and setups (Windows, Steam Deck, other Linux distros, real and different controllers) - expect bugs, and please report what you find in Issues.

Spawn menu - Halo CE, Halo 2, Halo 3 and ODST campaigns

Spawn vehicles, weapons, equipment and AI characters in front of any player, in any mission. Characters are real AI: pick Enemy and they attack you, Ally and they fight on your side, or their own side (a Marine is friendly, an Elite hostile).

  • Every player gets their own menu. In game, press D-pad Down: a menu opens in your part of the split screen and your controller drives it while your Spartan holds still. The other players keep playing (or open their own menus at the same time).
  • The lists only show what the current area of the mission has loaded, so everything listed can spawn.
  • There is also a Spawn window in the F4 overlay for mouse users.
Button In the spawn menu
D-pad Down open the menu (configurable)
LB / RB vehicles, weapons, equipment, characters
Up / Down (or left stick) choose
A spawn in front of you
Left / Right characters: their own side, ally, enemy
Y refresh the list after reaching a new area
B close

Spawned Warthog and an enemy Elite in Halo CE

To change or turn off the spawn button, edit alpha_ring_menu.cfg next to the game exe:

spawn_menu_controller=DPAD_DOWN   # any button or combo like BACK+DPAD_DOWN, or NONE

How it works, briefly: objects are created with each engine's own object_placement_data_new + object_new. For characters, Halo CE attaches a free actor to a spawned body (ai_attach_free); Halo 2, 3 and ODST have no such function in their retail builds, so a spare spawn point of an empty squad in the loaded mission is pointed at you and the chosen character, placed with the engine's own ai_place, and put back.

4-player split screen fixes

  • Halo 4 with 3-4 players no longer renders black: the mission starts with two players and the others join a moment later, like controllers signing in mid-game.
  • Halo CE and Halo 2 Anniversary with 3-4 players: the Anniversary renderer only draws two views, so these sessions start in Classic graphics (your MCC setting is left alone). For proper player 3/4 spawns use the Workshop mods Halo CE 3/4 Player Co-Op Fixes and Halo 2 3/4 Player Co-Op Fixes.
  • Hang when loading a second game in one session fixed: MCC loads every game's DLL at the menu and later reloads them at new addresses; AlphaRing's hooks were never removed, so a stale one could be written into another game's code (seen as Halo 3 freezing on its second load). Hooks are now removed when a DLL unloads.
  • Boot hang under Proton fixed: the overlay no longer starts open and only swallows the mouse/keyboard input it actually uses.

Overlay

  • New look (dark theme, bigger readable fonts that also exist under Proton) and a Home panel that explains split screen, the spawn menu and the overlay controls the first time you open it.
Home panel Spawn window

Known limitations

  • Only MCC 1.3528.0.0 (Steam). Campaign only.
  • Spawned characters borrow a spare squad of the mission. In rare cases a mission script may wait on that squad; if a mission stops progressing, kill the characters you spawned.
  • Spawned allies fight but don't follow you around.
  • The game keeps running while a spawn menu is open, so find cover first.
  • Halo 2 with the co-op mod and 2+ players: Save & Quit can hang on the loading screen (progress is saved).

Earlier additions in this fork

1. Controller-to-Player Binding (Splitscreen)

  • Each player now has a "Bind" button next to the controller dropdown
  • Click "Bind" → Press any button on a controller → Automatically assigns that controller to the player
  • No more guessing which controller is "Controller 1" vs "Controller 2"

2. Button-to-Action Binding (Gamepad Mapping)

  • Each action in the Gamepad Mapping section has a "Bind" button
  • Click "Bind" → Press a button → That button is assigned to the action

3. Fixed Default Gamepad Mappings

  • Bug fixed: Previously, all actions defaulted to "Left Trigger" due to uninitialized memory
  • Now: New profiles initialize with standard Xbox Halo controls:
Action Button
Jump A
Melee B
Action/Interact X
Change Weapon Y
Reload RB
Switch Grenades LB
Shoot RT
Throw Grenade LT
Flashlight D-pad Up
Crouch Left Stick Click
Zoom Right Stick Click

Original Alpha Ring

A Modding Tool for MCC

Build status

Showcase

Camera Tool (H3)
Camera
Object Browser (H3)
Object
8 Players Campaign
Splitscreen 8 players
Splitscreen With Mod (By Priception)
H4

Features

  • Splitscreen (all games)
  • Camera Tool (H3)
  • Object Browser (H3)

Installation

Make sure you have the latest Microsoft Visual C++ Redistributable installed.

Download the latest stable build from the Releases page.

Place the DLL into the "Halo The Master Chief Collection\mcc\binaries\win64" directory and launch the game with EAC off.

For Running on Steam Deck/Linux, add the following command in the Steam Game Launch Options:

WINEDLLOVERRIDES="WTSAPI32=n,b" %command%

If you'd rather not edit that by hand, tools/install/install_linux.py (Python 3, run with Steam closed) installs the DLL and sets that launch option for you (--dry-run to preview, --uninstall to undo). For a full launcher with a window, see MegaBit's AlphaRing Launcher (it installs his AlphaRing builds).

Batocera Linux

For Batocera Linux users, additional setup is required:

  1. Download Proton GE: Get the latest tar.gz from the Proton GE releases page (Proton GE 10-15 or newer recommended)

  2. Install Proton GE: Unpack the archive to your Steam compatibility tools folder:

    ~/.steam/root/compatibilitytools.d/
    
  3. Restart Steam: Close and reopen the Steam client for it to detect the new Proton version

  4. Configure the game:

    • Right-click MCC → Properties → Compatibility
    • Enable "Force the use of a specific Steam Play compatibility tool"
    • Select Proton GE 10-15 (or your installed version)
  5. Set launch options: Add the following to Steam Launch Options:

    WINEDLLOVERRIDES="WTSAPI32=n,b" %command%
    
  6. Controller Setup (Important for non-Xbox controllers):

    • For 8BitDo and other third-party controllers, enable Steam Input for the controller
    • Go to Steam → Settings → Controller → Enable "Xbox Configuration Support"
    • This allows Steam to translate your controller inputs to XInput, which MCC and AlphaRing expect
    • Without this, some buttons (like A or stick clicks) may not be detected

Note: The unofficial Batocera add-ons version of the Steam client has been tested and works with this setup.

Usage

Toggle menu: F4 or Controller Back + Controller Start

To navigate using Controller use the Right Stick to move the mouse and RB to click.

When the menu is open, game input is disabled.

Spawn menu: in a campaign mission of Halo CE, Halo 2, Halo 3 or ODST, each player presses D-pad Down (see What's New).


Building from Source

Prerequisites

  • Visual Studio 2022 Build Tools
  • CMake 3.27+

Build Commands

# First time setup
mkdir build && cd build
cmake .. -G "Visual Studio 17 2022" -A x64

# Build
"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" WTSAPI32.vcxproj -p:Configuration=Release -p:Platform=x64

Output: build/Release/WTSAPI32.dll


Credits

  • Original AlphaRing: WinterSquire
  • Profile Tweaks Fork: thejackbitt
  • This Fork: kirklandsig (controller binding, spawn menus, split-screen fixes)
  • megabitt01 / thejackbitt for the configurable menu hotkeys, the look-sensitivity field fix and the dual-wield/vehicle control defaults.
  • XiaoDanny (Daniel Coyle) for Halo Reach vertical (Left/Right) split-screen, per-player split-screen FOV, split-screen render quality, per-player black-bar removal, the Reach loadout fix, Reach menu scaling at 32:9, persistent Dev Tools settings and the Splitscreen Config Editor (megabitt01/AlphaRing#17, #20) - ported into this fork with his research notes in docs/REVERSE_ENGINEERING.md. The side-by-side split for the other games (v1.7.0) follows the path his Reach work mapped out.
  • Everyone on the AlphaRing Discord who reported the v1.7.0 issues fixed in v1.8.0 - Tuko Mas, salty, nanomohchine, ArtoriusOPOr, OPOriginal, RoastCabose, SR388 and jbltecnicspr - and the v1.8.0 reports looked into for v1.9.0 - nanomohchine (Halo 4 HUD with the bars removed), salty (Reach crosshair) and XiaoDanny (Reach players 3 and 4).
  • Research references for the spawn system: Assembly plugins (scenario layouts), c20 (HaloScript), and the ManagedDonkey, ElDorito and Project Cartographer projects.
  • Assembly for the tag group research.
  • Blender for the bezier curve calculation.
  • Priception for adding UI controller support and helping with the interface and crash issue.

About

A Modding Tool For MCC - with tweaks to profile options

Resources

Stars

32 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages