How to use the current local browser arena.
1. Load your game
Select your legally obtained original NHL94 Genesis ROM in the arena.
The emulator runs locally in your browser; your ROM is not uploaded or included with this site.
This version accepts the original raw .bin, .md or .gen ROM, up to 4 MiB.
ZIP files, interleaved SMD files, roster hacks and other ROM revisions are not supported yet.
2. Configure controllers
Controller 1 defaults to Human/Home and controller 2 to no ml bot/Away.
Each active slot can be Human, an available bot, or None.
All four slots are available; controllers 3 and 4 default to None.
Loading your ROM restores the bundled Sabres vs Mighty Ducks manual-goalie
match. Choose Home or Away beside each slot to change its in-game controller
assignment immediately, without selecting players in the game's menus.
With one Human slot, keyboard, on-screen controls and your selected gamepad
all control that slot. With two Human slots, keyboard/on-screen input goes to
the first Human slot and the gamepad to the second Human slot (in controller-number order).
Up to two Human slots are supported. ROM AI and None release a controller;
teams with no assigned controller return to the game's built-in CPU.
ROM AI does not send scripted button inputs. Its Home/Away selector is disabled
because it does not assign a controller to a team.
For Bot vs Bot, choose a bot for each slot and press Play.
Changing controller setup pauses playback and applies the new ownership
before the next frame. For three bots against the CPU, set controllers 1, 2 and 3
to no ml bot/Home and leave controller 4 as None. For a human opponent,
set controller 4 to Human/Away; keyboard and the selected gamepad control it.
no ml bot teammates automatically coordinate carrier, receiving, passing-option
and deep-coverage roles.
3. Choose an input device
Use the keyboard or select a browser-detected gamepad in Step 3.
- Arrow keys: D-pad.
- Z / X / C: Genesis A / B / C.
- Enter: Genesis Start, including the in-game pause menu.
- Standard gamepad X / A / B: Genesis A / B / C; Start: Genesis Start.
If your gamepad does not appear, click inside the arena and press a controller
button. Browser activation may be required even when Linux recognizes the device.
Standard gamepads and the M30 / 6B receiver (0ca3:0024 with 10 buttons and 3 axes)
are mapped automatically. For that receiver, physical A/B/C map directly to Genesis A/B/C;
A/B/C use buttons 0/1/5, Start uses button 9 and the D-pad uses axes 0/1.
For another raw layout or a custom override, expand Gamepad setup and live inputs,
select Set up buttons / D-pad, and follow the eight prompts.
Custom mappings are saved locally in this browser and restored after reload or reconnection.
Reset mapping removes the saved override and restores the automatic preset when available.
If browser storage is blocked, the arena warns that custom mappings only last for this tab.
Setup pauses the match; press Play after finishing.
Playback and game statistics
Play/Pause starts or pauses emulation.
Step one frame advances exactly one native frame.
Restart match restores the default match and starts a new recording.
Sound is optional and begins after a user action.
The Game Stats table beneath Bot Configuration shows Home/Away totals from
the game's native team counters, including every pause-menu Game Statistics row.
Bot Configuration applies to no ml bot. Defaults come from
the project's bot JSON configuration: 60 Hz, AI Goalie on and player ratings on.
At 60 Hz no ml bot reacts and plans each native frame, preserving four-frame
shot holds and its tactical time budgets. 15, 10 and 6 Hz hold all inputs for 4, 6 and 10 native
frames, including goalie inputs.
AI Goalie enables selective manual goalie control on teams with a no ml bot slot.
Turning it off restores native automatic goalies on those teams.
Teams with multiple assigned controllers always use automatic goalies, matching
no ml bot's teammate mode; manual goalie AI is for a sole no ml bot controller.
Turning player ratings off gives no ml bot neutral ratings for both teams without
changing actual game ratings, energy, handedness, positions or physics.
These settings do not affect Human inputs or ROM AI.
Changing a setting pauses the match and resets no ml bot's pending decisions.
Hiding the arena tab pauses emulation. The arena's Bots, Leaderboards, Help and About links
open a new tab so reading them does not unload your match.
4. Record and replay
Download the input replay in Step 4. Load it again with the same ROM,
starting state and emulator build, then press Play. Replays restore the saved
start, apply recorded controller-assignment and goalie-mode changes and reproduce the recorded
inputs without running the bots again.
Replay playback disables live controller setup and no ml bot settings. Recordings are limited to
108,000 native frames and replay files to 4 MiB. Replays contain inputs and
compatibility identifiers, not the ROM or bot source.
Current scope
This is a local browser test arena using Genesis Plus GX WebAssembly.
no ml bot is the Genesis baseline TypeScript port with passing, one-timers,
possession, defense and selective manual goalies. Each bot slot has independent
execution state; two or three same-team no ml bot slots share a tactical plan.
Experimental Python policies and optional experimental support planners are not included.
Learned models, online challenges and
ranked competitions are not implemented yet.