Read this first

Halo must run in Borderless Windowed. In MCC: Settings → Video → Window Mode → Borderless.

Nothing can draw on top of true fullscreen-exclusive. That is a Windows rule, not something the overlay can work around. It also has to see the screen to detect anything, so in fullscreen you lose the automatic features as well as the display. If the overlay seems not to work at all, this is almost always why.

## Start it and play

1. Extract the whole zip somewhere permanent, not straight out of the zip viewer. The exe writes `overlay_config.json` next to itself.
2. Run `h3_power_overlay.exe`. SmartScreen may warn on an unsigned exe: More info → Run anyway.
3. Put your name in when Settings opens, so the squad can tell which device is yours.
4. Play. It finds the map, starts its own clock, and follows the match.

There is no "set up the timers" step. Load into a game and it is already running.

Halo has to be visible

The overlay never touches Halo. It does not read the game's memory or hook into it at all. It simply looks at your screen, which is what makes it safe, and also what makes visibility a requirement rather than a nicety.

The map is read off the loading screen. That is a one-off moment. If you alt-tab, or a browser or Discord window is sitting on top while the map loads, the overlay sees that window instead and never gets a look at the schematic. There is no second chance that game, so press `F5` to set the map by hand if it happens.

If the match clock is hidden for more than 10 seconds, the overlay assumes the match is over and stands down. Something covering Halo mid-game will do it, so keep the game on top while you are playing.

Briefly covering the clock is harmless, though. The clock reader is built to fail closed, and the overlay counts down on its own between readings, so a window passing over it stops the corroboration for a moment rather than corrupting the time.

## What it works out on its own

All four of these are on by default, and between them they replace every key you used to have to press.

### It reads Halo's match clock

The overlay reads the clock straight off the HUD, so you never press start. It knows when the match began, and re-checks continuously so it cannot slowly drift.

It is built to fail closed. A half-read digit would turn 14:21 into 1:42 and wreck every timer, so a reading is only accepted when it is unambiguous; the overlay's own countdown carries between reads. One confident read is worth more than twenty hopeful ones. On the captured test corpus it reads correctly 99 times out of 99.

### It recognises the map

As the loading screen comes up it matches the blue schematic diagram, so you never cycle the map. Guardian, The Pit, Construct and Narrows.

It deliberately ignores the map name printed above the diagram, because that carries the gametype variant: the same map reads "CONSTRUCT" on a stock game and "MLG PIT 8" on the MLG one, so the text changes with the playlist while the diagram does not.

A guess is only accepted when it is both strong on its own and clearly ahead of the runner-up. Quietly switching to the wrong map would rewrite every timer on screen, which is far worse than asking you to press a key.

### It reads Halo's own callouts

The 1 minute remaining and 30 seconds remaining banners each mark an exact moment, so they confirm the clock at a known time. Game over matters most: it is a positive signal that the match has genuinely ended, rather than guessing from the clock disappearing, which also happens when you die, during loading, and in menus.

### It knows when you're playing King of the Hill

It reads the gametype off the HUD and shows the hill timer only on KOTH, so the display is not cluttered on Slayer or Ball.

The powerup no longer needs calling

It used to. The powerup really does restart from the moment someone touches it, and nothing on screen announces that, so it was a button you had to remember every game.

The trouble was that the button was per person. Everyone's overlay ran its own stopwatch from its own press, or from its own guess when nobody pressed. Two people watching the same powerup drifted apart without anyone doing a thing, and then the next press from either of them pulled everybody onto one of the two answers.

So it is a schedule now, like the weapons: every two minutes, starting fifteen seconds into the game. It is an estimate rather than the truth, but it is the same estimate on every screen, which is worth more in a fight than a number that is occasionally exact.

## How the timing works

The two kinds of item behave differently in Halo 3, which is exactly why one is automatic and the other is not:

- Weapons are scheduled. They respawn on a fixed cycle off the game clock whether or not anybody picks them up. Once the overlay knows the map and the clock (both of which it works out itself), it knows every weapon timer without being told.
- The powerup is scheduled too. In the game its cycle really does restart from the moment it is touched, which nothing on screen announces. Rather than have each person guess separately, it is pinned to a fixed two minutes starting fifteen seconds in, which is about when it goes in a real game.

The cycle runs slightly longer than the nominal setting, because a drop-spawned weapon has to fall and settle before it can be picked up. That lag is built in.

On Construct the custom does not exist until 2:00, so that is where its cycle starts, which is also what keeps it in step with the hill rotation.

## Rooms and channels

Everyone on the same room and channel shares one set of timers, so the map, the clock and every countdown read the same on a phone as on the overlay.

- Room is your group. Yours is set to `RJCM`.
- Channel is 1 to 4 inside that room, Discord-style, each an independent set of timers, so two teams at a LAN can play different games at once.

On the timers page at `https://anzhalostats.au/timers.html` the link button shows all four channels and who is on each. Click a channel to join it, or drag someone onto another channel to move them. If someone moves you, the overlay follows.

Your room is already private

The code above was generated for you and nobody else has it, so out of the box you are timing on your own.

To play together, one person reads their four characters out and everybody else types them into the room field. That is the whole process. Entering a code is treated as the request to sync, so there is no separate switch to remember, and the link button on the timers page does the same thing in one tap while also landing people on your channel.

## Manual controls

These are fallbacks. With detection on you should not need them, but they are there for when it is off, when something has been misread, or when you are setting up off a real match.

Key | Does | When you'd want it
--- | --- | ---
`F1` | Nothing, as of 1.8.36 | The powerup is on a schedule now. The key is still bound so old configs keep working, but it no longer does anything
`F2` | Start / pause the clock | Clock detection off, or a scrim not on a normal timer
`F3` | Reset | Starting over
`F4` | Hide / show | Getting it out of the way
`F5` | Cycle map | Map detection off, or it never saw the loading screen

Right-click the overlay for Settings, Hide and Quit, and to download an update when one is out. That menu is the way out: it has no title bar, and Escape only works when it has keyboard focus, which it never has while you are in a game.

### On a controller

Nothing needs a pad button any more, but start, reset and cycle-map can all be bound to one if you want them to hand. Pick carefully: the pad is read while you are in the game, so a button Halo 3 already uses will do both things at once. D-Pad Up and Down are the ones to avoid, because they change who you are spectating while dead.

Button | Safe? | Why
--- | --- | ---
`D-Pad Right` | Yes | Unbound in game and in the death cam
`D-Pad Left` | Yes | Unbound in Halo 3
`D-Pad Up` | Careful | MLG strips equipment, but it still changes your death-cam target
`D-Pad Down` | No | Switches grenades

Elite paddles do not report themselves. The Xbox Accessories app remaps a paddle onto an ordinary button, so bind the paddle to something Halo 3 does not use and set that button in Settings. Combos work too, e.g. `LB+DPAD_LEFT`. Reading the pad is read-only; Halo still receives every button normally.

## Appearance and settings

Right-click (or double-click) to open Settings. Everything is there, so you should not need to touch the JSON. It all applies immediately except size, which needs a relaunch.

- Style. `hud` anchors it to Halo's own HUD and is the default. `strip` is the older draggable panel. The automatic detection runs in `hud` mode, so switching to `strip` means going back to pressing the keys yourself.
- Between games it shrinks to just the map name, so it is not shouting at you in the lobby. Set it to hide completely if you prefer.
- Detection. Each of the four can be turned off individually if you want manual control of that one thing.
- Fallback map. Used only when map detection is off or has not yet seen a loading screen.

## If something is wrong

I can't see it in game
  Halo is in fullscreen. Switch to Borderless Windowed, which also restores detection, which needs to see the screen.
It isn't detecting the map
  It reads the loading screen, so it has to be running and Halo has to be visible while the map loads. Alt-tabbing, or any window sitting on top at that moment, means it never sees the schematic. Press `F5` to set the map for that game.
It's showing just a dot
  It does not know which map you are on, so it is showing you that rather than guessing at timers or disappearing. Press `F5` to set the map and the rows come straight back. Before 1.8.38 this case hid the strip completely, which was impossible to tell apart from a crash.
It stopped by itself part-way through a game
  The match clock went out of sight for more than 10 seconds, so it assumed the match had ended. Usually something was covering Halo. Press `F2` to start it again.
The powerup timer disagrees with what I'm seeing
  Expected, within a few seconds. It is a fixed two-minute cycle anchored fifteen seconds into the game, not a reading of the actual pickup, so a powerup that gets left sitting there will be out by however long it sat. The weapons are exact; the powerup is a best guess that everybody shares.
A hotkey does nothing
  Another app already owns that key. The overlay says so along the bottom rather than failing silently. Pick a different key in Settings.
It says "no pad"
  The controller was not found. Connect it before launching the overlay, then relaunch.
My timers don't match the rest of the squad
  Check everyone has the same room code and the same channel number.
How do I quit?
  Right-click → Quit overlay.
The text is tiny, or the window shrinks
  Update. Versions before 1.8.33 mis-handled Windows display scaling. Right-click to download when it tells you a new version is out.

## What it sends back

The overlay talks to https://anzhalostats.au to keep everyone's timers in sync. Alongside that, the site counts how many times the overlay has been downloaded, and records the id this copy generated for itself, the name you set in Settings, and your sync room, so the number of people actually using it is known.

That is deleted 90 days after you last run it. There is no account, no email, and nothing about your PC.

On reading the screen: the detection works by matching small regions of the picture: the clock digits, the loading-screen diagram, Halo's banners. Nothing is recorded, nothing is uploaded, and no screenshot ever leaves your machine. It does not read or touch the Halo process either; it is a window that floats on top and a hotkey registered with Windows.