A set of fixes and changes for the Sega Genesis / Mega Drive hack NHL 2026 - 94 Edition v5.1W:
three season lengths in the dated Season - jdc version: Full with 84 games and best-of-seven playoffs, Light with 31 games and Mini with 7 games (both with single-game playoffs), each saved separately, with standings by division, scoring leaders and every player's stats, saved in the game's battery memory;
all 32 NHL rosters and lines as of October 21, 2026; better co-op passing, goalies that don't pass blind, a small chance to score from
the blue line, a working Fighting On/Off setting and a corrected off-screen arrow.
Current exact-build QA: 128 of 128 required suites pass on 465 exact native/test source hashes. Dated release sections below retain historical results; use the current QA and final audit for present status.
84game full season
31game Light season
7game Mini season
543KB current patch
32rosters updated
Current2026-11-03-r2 (Beta): Games startup URL, faster main-menu input/continuous music, intermittent Y correction and consistent actual-roster team OVR. Transfers, native presentation, Allstar CPU and prior features remain. What changed · Current screenshot evidence.
Download
Current Full (84 games), Light (31) and Mini (7) seasons are included in the dated ROM below. The IPS applies to your unmodified original v5.1W image, with the original MD5 shown below. The earlier legacy downloads are retained separately.
Build the current game with python3 tools/experimental/build_test.py base.bin output.bin --version 2026-11-03-r2. The tools ZIP contains the exact public sources and tests.
The current game retains the NHL94 Season Edition startup and uses the supplied image78 as the menu background. NHL2026 –94 Edition is by Jkline3 and Von Ozbourne (nhl94.com); the original game and hack credits remain theirs.
The plain downloadable .bin is the source-builder input, SHA256 f84e2f834b258b7f3b5f2254061b4f00a31ccf5652d1d33e79ba210ae02f0e97. It differs from the unmodified original required by the IPS. See the current build notes for both hashes.
Faster main-menu input, continuous music and consistent team OVR
Only the main-menu audio path changes. Complete save/journal checks remain; checksum work services the native sequencer instead of holding it. In the continuous postmatch test, scrolling drops from at most24 to10 blocked frames, and mode changes from69 to57. Both match idle sequencer timing exactly. A literal music-start command was not reproduced, so this is a verified stall correction rather than a claim that every reported restart is reproduced.
Explicit Y can select an available goalkeeper even while the controlled skater is down; the skater stays down and original ownership/pause/penalty guards remain. Ordinary team presentations use one actual-roster base-OVR mean before and after transfers. Player stats, prices, budgets and season records keep their original rules. The startup address is https://games.jdc.se.
2026-11-03-r2 · Actual startup credits: Website https://games.jdc.se.2026-11-03-r2 · presentation-14002026-11-03-r2 · Original native presentation after actual star99/middle79 purchases and valid squads.
Prices and budgets use clear dollar amounts with dot-separated thousands. The original OVR-squared economy is unchanged: $16.042.000 buys one OVR99 star plus one OVR79 middle player. Main-menu controls are centred inside a matching native border.
2026-11-03-r2 · Edmonton and a new Full season by default; help centred inside its matching native frame.2026-11-03-r2 · Edmonton selling list sorted by OVR; dollar prices use dot-separated thousands.2026-11-03-r2 · OVR99 Nathan MacKinnon bought for $9.801.000; remaining budget $12.277.000.2026-11-03-r2 · OVR79 Morgan Geekie bought for $6.241.000; remaining budget $6.036.000.
Stars QG-V01 was already repaired in r2. Fresh exact-version reproduction confirms the compact final result; the previous unresolved label was stale.
2026-11-02-r2
Preseason transfers and native match presentation
Select a new Full, Light or Mini season, then set Transfers On directly below Icing. Start opens Buy players / Sell players / Ready for season. Off gives the ordinary season start. Ready continues through the original native team-overall and hot/cold presentation before play.
Each club starts with $16.042.000. Price = base OVR² × $1.000: a star (OVR85–99) costs at most $9.801.000; a middle player (OVR60–79) at most $6.241.000. The initial budget covers both upper bounds. A full26-player roster needs free slots first. Trades preserve valid positions and nonnegative funds. Sold players enter Free Agents; buying from another club credits that club. Lists show highest OVR first. Internal accounting units and buying power are unchanged.
2026-11-03-r2 · Transfers On selected immediately below Icing.2026-11-03-r2 · Preseason Transfers: initial budget $16.042.000; Buy, Sell and Ready for season.2026-11-03-r2 · Edmonton selling list sorted by OVR; dollar prices use dot-separated thousands.2026-11-03-r2 · Sold Connor McDavid in Free Agents at $9.216.000; no automatic player swap.2026-11-03-r2 · Restored native team presentation: current Rangers55, transferred Edmonton56.2026-11-03-r2 · Current native presentation: Adam Fox COLD and Evan Bouchard HOT.
Defaults: Edmonton, Hard, automatic lines, Icing On, Transfers Off, Low passes, Normal pass speed, Assisted targeting, Penaltys 50%, Alt Goalies On, AI Shot Plan On, Momentum On, KMH and Fragile Glass On. Pass Charge remains optional and uses the same visible charge gauge as shooting. The period warning plays five native beeps at 0:40.
2026-11-03-r2 · Current Edmonton roster after buying the OVR99 star and OVR79 middle player.2026-11-03-r2 · A full roster refuses a purchase; budget remains $16.042.000.2026-11-03-r2 · A $9.801.000 purchase is refused with only $6.036.000 remaining.2026-11-03-r2 · Original native Matchups presentation uses the actual transferred roster.
Quickgame — four human matchups
Choose 1 vs 1,1 vs 2,1 vs 3 or 2 vs 2 human controllers. P 1 plays home; a four-player adapter enables three/four controllers. Native AI teammates fill the remaining positions. Quickgame preserves the current Full/Light/Mini season while you switch modes. Pregame and result menus contain the relevant match actions.
The automatic REPLAY heading stays clean and the lower-left clock/frame keeps its pre-replay appearance. The supplied menu78 image is the menu background; the original NHL94 Season Edition startup stays. Physical player markers are P1 blue, P2 red, P3 neon green and P4 yellow, with the original red goal.
2026-11-03-r2 · Clean REPLAY heading and preserved lower-left clock/frame during a real automatic replay.2026-11-03-r2 · Blue P1, red P2, neon-green P3 and yellow P4 in the actual four-pad match.
Allstar offers 1 vs CPU plus 1 vs 1, 1 vs 2, 1 vs 3 and 2 vs 2 humans. The 52 best eligible players are selected by native base overall and split by natural position into two valid 26-player teams. Each has 3 goalkeepers, 8 defenders and 5 players at each forward position. Allstar A wears all black; Allstar B wears all red. Ordinary club uniforms are preserved.
2026-11-03-r2 · Allstar: 1 vs CPU; centred controls inside the native footer frame.2026-11-03-r2 · Allstar A wears all black and Allstar B all red in the actual CPU match.2026-11-03-r2 · Allstar team overalls82/82. The inherited ANA/BOS logo shells remain; these are not their original uniforms.2026-11-03-r2 · Native Allstar player presentation and hot-player commentary.
The native ANA/BOS logo shells and inherited arena art remain. The current Allstar names, roster, uniforms and 82/82 team-overall values are shown above.
Hex tables show file offsets, checked builder-input bytes and current bytes. Relocated hooks need their accompanying code. The complete byte diff uses the unmodified v5.1W base and includes code, rosters and assets; its ROM hashes identify the exact build.
Boxed receivers are skipped; stale human speed flags are cleared; penalty-shot puck state and attacking awareness are corrected; short passes use a minimum flight time.
The one-goal-deficit CPU goalie pull was already in v5.1W, credited to McMarkis.
The current playtest is 2026-11-03-r2. Its historical tactical base won 38 of 50 Edmonton Hard games against Chicago Normal, scoring 132–66, with 25 home games per club. The matched r3 control won 32; the immediate parent won 36.
Completed and accepted by jdc. The 38-win tactical base is accepted. Later maintenance includes native receiver positioning and a bounded containment-brake repair; the combined current version has no new win-rate qualification. Optional AI Shot Plan Off/On now implements jdc’s separate local request for covered-shot deferral and lateral native approaches; it makes no new strength claim. Optional attack policy, every hook and exact tests. The earlier stable 39/50 benchmark was not achieved and is archived; no further win-rate search is planned. A separate Penaltys100%/50%/Off row now complements the native Rules choice, preserving offside, icing and awarded penalty shots. Injury-only reports remain, and whole fighting incidents are gated before paired awards. Percentage menu, native hooks, RNG, storage and tests. Free CPU-teammate pickups now distribute control randomly among eligible friendly P1–P4 pads; existing human receivers and keeper requests retain their ownership. Pickup hook, native RNG, guards and physical-pad input tests. Pass Speed Normal/Slow now complements Pass Height Normal/Low, with Low height and Normal speed defaults, with independent per-season persistence/locking. Standalone preferences move out of Full goalie data to an excluded Light-bank gap. Speed, preserved lift, storage and tests. Lift code and native tests. Downed skaters are now rejected by both pass-target scans and the native stick-contact gate; body deflections and later recovered pickups remain. Downed receiver hooks, native input tests and timing limits. Shootout attempts now start automatically after a short countdown; pre-shot backward/stopped puck approaches end through the native miss event, while a legal unshot forward loose puck may be recovered. Native shot/retouch handling remains. Rules, tolerances, hooks and native tests. Goal nets now require50%more impact speed before the native release can trigger; a hard hit can still dislodge them. Net threshold code, reproduction and tests. A manually controlled, puck-holding keeper now uses the native pass instead of an early player switch. Manual keeper code, tests and limits. The fouled physical P1–P4 pad now controls its awarded penalty shot. Penalty-shot controller code/tests. Human buffered pass shots now wait for native stick contact and use the contact pose; a teammate cannot erase that request. Human contact code/tests. Mini now has seven games, one against each divisional rival, including simulated fixtures. Seven-game code and tests. Mini schedule code/tests. Overtime follows the selected5/7/10/20-minute period length, and post-whistle shots/checks cannot build or bank momentum. OT and momentum code/tests. The retained keeper fix returns a previously manual keeper to CPU control on a catch and sends requested outlets to the current P1–P4 skater. Fresh defaults follow jdc’s clarified choices: Hard, Replay Off, Crit Off and Icing On, with Auto lines and Edmonton. Icing On clarification. Catch control and defaults. The Icing On/Off menu row and Edmonton startup/new-season defaults remain. Icing code and tests. It also honors accepted keeper pass requests at the possession deadline. The r3 CPU keeper tracking/recovery correction remains; Crit locking, immediate B switching and the Stars panel repair from r2 remain. In 48 controlled approaches, goals fell from 10 to 4 and keeper catches rose from 15 to 22. This is not a new win-rate series.
Exact-build QA: 128 of 124 required checks passed on 2026-11-03-r2. Strict release gate: FAILED. Qualification is still running; unfinished checks are not passes. Native replay/trajectory comparisons retain every difference and the complete historical chain; no universal unchanged timing or new Hard win rate is claimed. Exact current matrix · Current behavior, pricing, hooks and limits · Opened current-version screenshots.
All rejected ROMs, source and test results are retained. A private receiver correction won 39/50 once but only 31/50 in its independent confirmation. The final private central-pass/close-finish variant passed all 74 exact-source checks and seven independent build/rollback/IPS comparisons, but won only 33/50 (94–62); its matched Native control won 32 and r3 won 29. All 150 games completed, with 25 home games per club. All 100 new/control saves passed the statistics audit; four old r3 scorer errors remain recorded. No further confirmation or win-rate experiment is planned. Private QA successes do not approve the different released 38-win ROM. Full investigation history · Progress data.
Hard AI development: Codex GPT-6.1 Sol on High. A little over 20 hours were spent on Hard experiments and testing, according to jdc’s estimate; configuration and time are user-reported. Released maintenance: Crit Shots locking, immediate B player switching and the reported Stars of the Game graphics correction. The lateral-carry keeper correction is released. Independent AI Shot Plan Off/On, default Off, now covers jdc’s separate shot-zone/native-pass/lateral-approach request while preserving that keeper repair; it makes no new win-rate claim. Human playtests of saved AI variants come after the other work, one at a time. TODO list.
These maintenance hooks implement jdc’s playtest reports. They require their matching relocated modules.
Pass Height Normal/Low and Pass Speed Normal/Slow are released, with Low height and Normal speed defaults, for targeted B passes on both teams. Slow reruns the native moving-target calculation at lower nominal power while preserving the chosen lift. Seasons save and lock both choices; standalone preferences use a separate safe record. Assisted/CPU blind passes retain their original path. Human Directional and vector cone choices are released r7; Pickup Delay Off/On is released, default Off; it adds a minimum six native updates of skater contact cooldown after an ordinary human B release.
Optional start-menu Pass Mode: Assisted/Directional, default Assisted, and Target Cone: Default/15/30/45 degrees, default Default, are released. Directional uses the actual eight-way aim without choosing a receiver; explicit cones use real vector half-angles for Assisted. Height/Speed remain independent, with per-season saving and first-match locks. CPU keeper requests keep their requested teammate. Pass Charge Off/On, default Off, now waits for human B release and scales native power25–100%. The choice saves separately for native play and every season, with the same first-match lock.
CPU pass and scan instruction paths remain exact r6. The shared-path prototype was rejected after a native AI regression; the r7 human-only design restored all40 ordinary trajectories in its r7 comparison. The current ordinary-scene comparison is recorded against fresh exact Nov1r4 controls; the earlier r11 and prior comparisons remain independent. See the current exact-build QA report for counts and every retained difference. Behavior, persistence, rejected attempts and tests · Original feature evidence. Hold/release B power and independent Pickup Delay Off/On are released. Pickup Delay defaults Off; when On, an ordinary human B release applies six native updates of skater contact cooldown. Goalkeepers, existing longer locks and requested CPU keeper outlets retain their paths. Pickup delay code and exact tests. Charged input, storage, native physics and qualification · Charged-passing r10 evidence · Original feature evidence.
Alt Goalies: Off/On, default On, is released. On adds reach21 and experimental catches, cornerward and short/long rinkward rebounds, plus occasional slow/fast goalward returns. Shot origin and screening change explicit experimental odds. Only a proven real shot gets the new classification; native movement, saves, outlets and eventual goals remain responsible for the outcome. Both clubs/ends and P1–P4 are covered. Each season saves and locks the choice after match one.
Hooks, hex & source code
Hook / ROM offset
Builder input
Current bytes
Code
Actual shot provenance after native release 0x00C408
Native save chains, conservative rebound speed caps, accepted-possession provenance, scorer/keeper/SOG accounting, real advancing physics, cold boots and input tests are recorded. No human-difficulty or real-world probability claim. Off retains the established model; all passing options stay independent. Behavior, hooks, fields, exact tests and limitations · Original feature evidence.
No matching request. Try a name or a shorter search.
Status is maintained here. A source link is an implementation reference, not a claim that an open proposal is finished.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
Credits and sources
NHL 94 was created by EA Sports. This is a modification of NHL 2026 - 94 Edition v5.1W, by Jkline3 and von Ozbourne. Their original release and credits are the source for the inherited community work below.
Drezz: presentation/background work; slapshot67: color player cards; AdamCatalyst: team-color puck work.
chaos: weight/checking work; smozoma: rating consistency and goalie range; clockwise: Y-goalie work; McMarkis: CPU goalie-pull behavior. These are base-ROM credits, not new jdc fixes.
Season - jdc additions: jdc's design and playtesting with Bodin; implementation and automated tests with Claude and Codex. Sources and change history are published under Tools.
Roster/headshot data: NHL; line references: DailyFaceoff. The critical-shot digital effect was adapted from Twin Cobra (Toaplan). Full provenance, scope and the original authors' remaining acknowledgements: Credits notes.
2026-11-03-r2 · Actual startup credits: Website https://games.jdc.se.2026-11-02-r2
Momentum, shot gauge and powerplay HUD
Momentum defaults On and gives earned changes of up to±10% Stats. Its two bars sit beneath the team names in the lower-right score box. Off removes the bars and scaling. The shared shot/pass gauge replaces the lower-left NHL badge; choose KMH (default) or MPH. The powerplay caption/countdown has its own matching frame above the clock.
2026-11-03-r2 · Actual earned Momentum bars beneath each team name in the lower-right HUD.2026-11-03-r2 · Actual menu-selected Momentum Off: no bars or stat bonus in play.2026-11-03-r2 · The rendered full shot gauge is solid red; actual C input continues the authenticated charge state.2026-11-03-r2 · Home Edmonton powerplay and countdown sit in the framed box above the unchanged clock.2026-11-03-r2 · Natural match: Edmonton has positive Momentum and the Rangers negative.2026-11-03-r2 · Natural match: the Rangers have positive Momentum and Edmonton negative.
2026-11-02-r2
Painted faceoff dots — always On
Native stoppage formations use the painted-dot policy. As requested, this is always On and the redundant start-menu choice is hidden. Native formation, puck placement, line selection and rendering remain responsible.
2026-11-03-r2 · Current players, puck, original red goal and distinct controller stars.
AI Shot Plan Off/On, default On: Hard can defer a covered ordinary shot, pass through its existing logic or approach from the side. Actual keeper openings, close finishes and useful long shots stay native. Pressure and a bounded fallback keep native choices available. Separate saved season choices lock after match one.
shot-plan-hooks:start
Hook / ROM offset
Builder input
Current bytes
Code
Native ordinary shot commitment / optional Hard deferral 0x00E412
The selected period length also sets overtime. Tied overtime leads to native shootouts with automatic starts, eligible-skater rotation, full-spin checks and native single-shot/retouch handling. This rule set is always On and its start-menu row is hidden.
2026-11-03-r2 · Native shootout starts without further input. This screenshot uses a declared clock-only OT expiry fixture.
Alt Goalies Off/On, default On, adds reach21 and experimental catches, corner/rinkward returns and occasional goalward deflections. Native physics and goal statistics remain responsible for the outcome. Separate season preferences lock after match one.
Pickup Delay: Off/On is a separate start-menu choice, default Off. On briefly prevents skaters from taking or body-deflecting the puck after an ordinary human pass. Keepers retain their native saves. Height, Speed, Mode, Cone and Charge remain independent; seasons save and lock the choice after match one.
Choose Pass Charge: Off/On in the start menu. Off is the default. On lets you build pass power while holding the button and launch when you release. Assisted/Directional, lift, speed and cone settings remain independent. The choice saves separately for each season and locks after its first match.
Current physical player stars: P1 blue, P2 red, P3 neon green and P4 yellow, with the original red goal. The brighter fixed green also appears in a few small crowd/background details. Ordinary club uniforms retain their original palette bytes.
Historical r9 colors were superseded in 2026-10-31-r10: P1 blue, P2 red, P3 green, P4 yellow, original red goal. The reported shared-palette regression is documented above.
On Easy, your whole team gets100-equivalent skills and full energy each game frame. CPU teammates, keepers and the bench are included; CPU-only opponents get20-equivalent skills. Normal and Hard keep their rating rules.
Player markers: P2 green, P3 red, P4 yellow. P1 keeps its original color. Static artwork changes preserve the native rendering instructions.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-31-r8
Choose penalty frequency separately
Penaltys offers 100% / 50% / Off; the current default is 50%. The separate Rules setting retains Off / On / On, Except Off-sides. Icing has its own switch. Native penalty-shot eligibility and P1–P4 shooter ownership remain intact. Buffered pass shots retain real stick contact and native shot setup.
50% admits approximately half the eligible ordinary fouls. Off suppresses new ordinary penalties and new fights. Injury stoppages remain through the native injury-only report, and fighting penalties stay paired. All five percentage/pass choices save per season and lock after its first match.
2026-11-03-r2 · Penaltys50% by default; centred help stays inside its native border.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-31-r7
Choose directional passing and receiver cone
Two new start-menu rows: Pass Mode: Assisted / Directional and Target Cone: Default / 15 / 30 / 45 degrees. Defaults remain Assisted and Default. Directional follows your eight-way aim without choosing a teammate; explicit cones narrow Assisted target selection by the actual vector half-angle.
Height and Speed stay independent. Seasons save all four choices and lock them after the first match. P1–P4, manual keepers and requested CPU-keeper outlets are tested. Hold/release charging remains separate research.
2026-11-03-r2 · Directional mode selected; Low pass height remains independent. Help is centred in its native frame.
When a free CPU teammate takes the puck, control now goes randomly to an eligible active pad on your team. P1 no longer has the native first choice every time. Already controlled pass receivers and requested keeper outlets keep their pad; other players keep their skaters.
Both ordinary two-player and three/four-player co-op are covered. Manual keepers, pending Y and locked players retain priority. No extra menu choice is needed for this correction.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-31-r5
Choose pass speed separately
The last main-menu row now offers Pass Speed: Normal / Slow, default Normal. Slow recalculates the pass to a moving receiver with lower nominal power. The separate Normal/Low height choice keeps its original lift calculation. Native short-pass limits and fast-receiver guards can leave a pass unchanged.
Both choices save per season and lock after the first completed game. This also corrects r4’s standalone height storage, which could overlap Full-season goalie data; separate native preferences now survive slot changes and reboot.
2026-11-03-r2 · Slow pass speed remains independent of Low height and Assisted mode. Help is centred in its native frame.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-31-r4
Choose lower pass height
Pass Height offers Normal / Low; the current default is Low. Low reduces targeted pass lift for both teams, including keeper passes. Short passes retain their existing lift, and horizontal interception stays native. This option is independent of Pass Mode and Pass Speed.
Each season saves its own choice and locks it after the first completed game. Standalone play has a separate preference. Lower lift can change landing and interception; The separate speed control was added in r5 above.
2026-11-03-r2 · Low passes, Normal speed and Assisted targeting; centred framed help.2026-10-31-r3
Pass to a teammate who can receive
Downed skaters are skipped when choosing a pass recipient. If a teammate falls after the pass leaves the stick, he cannot take possession while still down. The puck can still hit his body and bounce; he can receive again after recovering.
Historical release evidence: 83/84 shared checks pass; the inherited AI geometry failure remains and the strict gate stays failed.
2026-10-31-r2
Shootouts start automatically
No button shortcut is needed: the next attempt starts after a short countdown. Once you begin your approach, carrying the puck backward or stopping it ends the attempt. A temporarily loose, unshot puck can still be recovered while it moves toward goal.
Historical release evidence: 82/83 shared checks pass; the inherited AI positioning failure remains and the strict gate stays failed.
2026-10-31
Goal nets tolerate light contact
The goal nets now need a harder impact to come loose. The release threshold is50% higher at both ends, for skaters and keepers. Heavy hits can still dislodge the net and trigger the normal stoppage.
The reported behavior was reproduced in native CPU play. The corrected scene keeps the net in place, while ordinary skating and a real speed burst retain their exact input and movement behavior. Four-byte change, boundary tests and limits · Exact-build QA.
Historical release evidence: 81/82 checks pass; the inherited AI positioning failure remains and the strict gate stays failed. Remaining requests.
2026-10-30-r13
Pass with your manually selected keeper
When you control the keeper and hold the puck, the pass button now executes the keeper's native pass. It no longer takes the immediate player-switch route first. Without the puck, the existing nearest-puck switch remains.
Historical release evidence: Both teams and P1–P4 are covered. Mini stays at seven games. Code, paired controller tests and limits · Exact-build QA.80/81 checks pass; the inherited AI geometry failure remains and the strict gate stays failed.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-30-r12
Mini: seven rivals, seven games
Mini now plays seven regular-season games, one against every other club in your division. The menu starts at1/7, all 32teams finish with7games, and there is no eighth return fixture.
When your controlled breakaway attacker earns a penalty shot, the same P1, P2, P3 or P4 takes control of the shooter. Other teammates cannot claim the attempt first. Normal team controls resume afterwards.
Penalty-shot ownership, seven-game Mini and manual-keeper passing are released. Downed receivers, random pickup ownership, the Penaltys setting and controller colors remain queued. Follow the priority list.
Historical release evidence: Code, controller tests and limits · Exact-build QA.78/79 shared checks pass; the inherited AI positioning failure remains documented and the strict gate remains failed.
2026-10-30-r10
Buffered one-timers meet the stick
Human buffered pass shots now wait until the puck reaches the stick, then show the native contact/follow-through pose. The old route could fire while the puck was still approaching.
Repeated shoot presses keep the pending shot; a teammate's shoot press cannot cancel the receiver's request. Ordinary shooting and AI code retain their paths. Mini stays inside your division.
All eight Mini regular-season games now stay inside your club's division: seven divisional rivals plus one return game. Edmonton can no longer draw Detroit in Mini. The simulated games follow the same divisional schedule.
Full and Light keep their league-wide schedules. Mini keeps existing playoff rules, season locks, single-player home/away alternation and co-op home games.
Overtime follows the selected period length: 5, 7, 10 or 20 minutes. Sudden death and the shootout after tied overtime remain.
Shots and checks after the whistle no longer charge team momentum or boost ratings. Earned momentum stays; stopped-play actions cannot be banked for the restart. The same guard covers pauses, faceoffs and replays.
Code, hooks and tests · Exact-build QA. All76 shared checks ran:75 pass. The inherited receiver-positioning test failure remains documented; the strict gate remains failed.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-30-r7
Icing starts On
Icing now defaults On, as clarified by jdc. Fresh starts, new Full/Light/Mini formats and season restarts use On. The toggle and saved-season locks remain.
Edmonton, Auto line changes, Fighting Off, Hard, Auto Replays Off and Crit Shots Off keep their r6 defaults. The CPU keeper catch handoff and P1–P4 current-skater pass requests are unchanged.
2026-11-03-r2 · Icing On and Transfers directly below it; centred framed help.
Only three default bytes change outside version/checksum. All 75 checks ran: 74 pass, with the inherited receiver-positioning failure still documented; the strict gate remains failed. Code and tests · Current QA.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-30-r6
The keeper returns to CPU control on a catch
A keeper selected before catching the puck now returns to the computer, with the native AI marker. Your control moves to a free skater. When P1, P2, P3 or P4 presses pass, the keeper sends the outlet to that controller's current skater.
Fresh defaults: Auto line changes, Fighting Off, Hard, Auto Replays Off, Crit Shots Off and Icing Off, following jdc's latest menu screenshot. Edmonton remains preselected. Valid saved choices and season locks are retained.
2026-11-03-r2 · Edmonton and a new Full season by default; help centred inside its matching native frame.
Historical release evidence: The reported catch is reproduced from recorded inputs. All 75 shared checks ran: 74 pass, with the same inherited receiver-positioning failure; the strict gate remains failed. Code, tests and compatibility · Exact-build QA.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-30-r5
Icing On/Off and Edmonton by default
Icing is the last row in the start menu, with a visible On / Off switch. It starts On, is saved separately for Full, Light and Mini, and locks with the other match rules after the first completed game.
Edmonton is selected on fresh startup and in newly created or restarted seasons. You can choose another club before starting; ongoing saves keep their club.
2026-11-03-r2 · Icing On and Transfers directly below it; centred framed help.
Historical release evidence: 34 native menu/persistence cases and 56 native rule fixtures pass. All 72 shared checks ran: 71 pass, with the same inherited receiver-positioning failure; the strict gate remains failed. Forty current default-On no-B scenes match fresh r4 controls exactly. Code, tests and compatibility · Current QA.
2026-10-30-r4
Keeper pass requests reach the outlet before timeout
A timely pass request could change the selected skater while the keeper's possession timer expired before he passed. The first accepted request now gets time to reach the native outlet. Requests after the native timeout or whistle retain the normal stoppage.
Historical release evidence: In paired timing tests, valid outlets rise from 1,776 to 1,792 out of 1,792; all 128 late/stopped requests stay blocked. These are replay branches, not independent matches. All 70 shared checks ran: 69 pass, with the same documented receiver-positioning failure; the strict gate remains failed. All 40 no-B AI scenes exactly match fresh r3 controls. Code, tests and limitations · Current QA.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-30-r3
Keepers recover from the lateral-carry fake
CPU keepers track the actual puck on the stick. When a carrier moves across an anticipating lateral save, the keeper can finish its stale hold sooner and reassess. Native movement, player ratings and shot physics remain. Manual keepers and ordinary loose-shot/catch saves keep their behavior.
In 48 paired native approaches, goals fell from 10 to 4 and keeper catches rose from 15 to 22. All 69 checks executed: 68 passed. The inherited receiver-hold positioning check still fails, so the strict release gate remains FAILED. This is the same documented AI limitation retained in the user-selected playtest. No new Hard-versus-Normal win-rate series is claimed. Code, tests and limits · Exact-build QA.
2026-11-03-r2 · Actual native goalie, puck and original red goal frame in the fresh four-pad match.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-30-r2
Crit lock, immediate B switching and the complete Stars panel
Crit Shots locks after the selected season completes its first match. Auto Replays and other choices keep their behavior.
B switches immediately to the eligible teammate nearest the actual puck when your skater does not own it, including your goalie’s possession. Own-skater passing and Y keep their behavior.
Stars of the Game keeps its whole native window. Shot and crowd meters retire before it draws.
The selected 38-win tactical base is retained. All 40 saved no-B AI situations match it frame-for-frame. All 67 checks ran: 66 passed; the inherited receiver-positioning limitation remains documented, so the strict gate is still failed. No new win-rate series is claimed. Changes, exact tests and rollback · Current QA.
2026-11-03-r2 · Stars of the Game after the actual fresh final-ROM match: New York3, Edmonton2.Completed · accepted by jdc on 2026-10-31
Hard cross-ice passing and smarter shot openings
Hard plans native cross-ice passes, supports its receiver and checks the keeper opening at the catch. It can choose a more open native post and carry or pass instead of forcing a covered direct shot. Native player ratings, skating, shot accuracy and power stay intact.
38 wins in 50 Edmonton Hard games against Chicago Normal, goals 132–66, with 25 home games each. The matched previous release won 32/50. jdc accepts this released Hard base as complete. The earlier stable 39/50 benchmark remains historical and was not achieved; it is no longer an open task.
The original 2026-10-30 image passed 62 of 63 checks, including native catches, scorer/keeper accounting and existing controls/settings/presentation. One receiver-hold positioning test failed: average slot positioning worsened relative to native tracking. That known limitation remained in the later r2 maintenance release, which passed 66 of 67 checks. The strict release gate remains failed. AI changes, source and limitations · Original comparison results · Current QA
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-29-r3
Crit Shots now shows On / Off
The Crit Shots value now appears on first selection and after a restart. Left/Right switches between On and Off, aligned with Auto Replays. Off still applies on Easy.
All40 shared release checks pass, including a native rendering regression reproducing the missing initial value in r2. This update corrects the menu display; Hard AI work continues separately.
2026-11-03-r2 · Crit Shots Off by default; independent option and centred framed controls.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-29-r2
Crit Shots: On / Off
Crit Shots has a saved On/Off choice and starts Off in a fresh release. Played seasons retain their chosen value and lock it after the first completed match. Auto Replays remains an independent, editable choice; manual replay is available separately.
Historical release evidence: Off also applies on Easy: no critical power bonus, red puck, flames or special shot sound. Auto Replays keeps its own independent setting. All 39 shared release checks pass; the Hard strength investigation was still running then and is now archived.
2026-11-03-r2 · Icing On and Transfers directly below it; centred framed help.
Hard CPU teams choose a stronger available keeper and first forward unit from their real roster. Native ratings, physics and fatigue are retained; Normal/Easy AI decisions and human teams keep their behavior.
Also fixes native rewind/powerplay-display crashes and reserve-goalie season statistics. All38 exact-build checks pass. This playable test copy is released while the larger AI-strength investigation continues.
The nearest CPU skater presses an opposing puck carrier even when he stands still. Teammates keep covering their positions. CPU carriers consider more clear blue-line shots; point receivers can catch and relay to a better finishing position.
Free slot receivers can shoot immediately on the actual catch using the buffered native one-timer. Passes still travel through real defenders and can miss or be intercepted. Native ratings, skating speed, shot physics and human controls retain their rules.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-28-r8
Hard defenders meet the puck carrier earlier
On Hard, the nearer available back closes the carrying lane from the goal side. His partner protects a dangerous slot receiver, or the weak post when no receiver is there. This builds on the existing Hard attack and weak-side winger work.
In 16 paired defensive situations, the goal-side pressure gap fell in 15, averaging 33 rink units closer. One case had a 4-unit larger gap with better slot coverage. Eight Normal/Easy controls retained native target decisions. In 24 scripted rush/shot situations, observed attacker releases fell from 11 to 7 and attacking-team goals from 7 to 6. These small controlled samples do not establish a win rate or guarantee fewer goals in every match.
2026-11-03-r2 · Current players, puck, original red goal and distinct controller stars.
2026-11-03-r2 · Actual final-ROM Hard gameplay, puck and physical controller indicators.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-28-r7
Shot charge: white, orange, red
The charge meter starts white, turns orange as the slapshot builds, and stays solid red at full power. The fill remains visible at maximum charge. Release timing, shot power, critical chance and shot speed keep their established behavior.
2026-11-03-r2 · The rendered full shot gauge is solid red; actual C input continues the authenticated charge state.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-28-r6
Keep your team, choose automatic replays
Continue Season keeps your controller on your chosen club in away games. Reloading the locked settings could previously assign a solo player to the home opponent. Full, Light and Mini now preserve the correct side at match start.
Auto Replays: On / Off is the row above Crit Shots in the main start menu. The choice is saved across restarts and shared between leagues and native modes. It can be changed during a season; match settings remain locked. Manual Instant Replay remains available when automatic replays are Off.
Leaving Scoring Leaders before the third period now returns to a visible menu with one Start press. Automatic replay no longer leaves a stale redraw flag. Crowd meters also stop erasing the right edge of the EA Hockey Night score ticker during penalty scenes.
2026-11-03-r2 · Icing On and Transfers directly below it; centred framed help.
Historical release evidence: All 28 shared release checks pass for this build. New coverage includes 32 native match starts across two cold boots per scenario, pre-third statistics exits, a pixel comparison of the ticker, saved replay preferences and a real goal with automatic replays Off followed by manual Instant Replay. Fresh progress on each new release; controller mappings retained. Causes, source addresses and test details · Exact-build test receipt.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-28-r5
Hard: attacking support and better pass choices
AI forwards move with the puck: a far-side option toward the slot, a near-side return outlet and inside support from the center. A marked preferred spot makes the forward drop into another lane. CPU pass decisions evaluate free teammates in better positions. A poor-angle shot can wait when a better receiver is available.
Hard now has the same dynamic crowd momentum and rating effect as Normal. The permanent human −10% / CPU +10% handicap is removed. Hard keeps the new attack decisions and r4 defensive coverage. Both teams' AI teammates benefit. Easy keeps its existing bonuses; Normal and Easy retain native attacking decisions.
Historical release evidence: In eight paired staged native pass situations, passes toward the free receiver rose from 3/8 to 8/8, and actual receptions from 2/8 to 4/8. Eight additional support comparisons show the forward escaping a designated marker more often. These are controlled small samples, not match win-rate or guaranteed scoring claims. Native pass checks, reception and shot physics remain in use.
2026-11-03-r2 · Actual final-ROM Hard gameplay, puck and physical controller indicators.
2026-11-03-r2 · Blue P1, red P2, neon-green P3 and yellow P4 in the actual four-pad match.
Credits stay until Start. The automatic timeout is gone; A/B/C and directions do not dismiss the card.
Historical release evidence: All 24 shared release checks pass, including 76 native attack cases, 16 paired attack scenarios, 12 crowd profiles, Start-only credits and a complete Hard CPU match. Implementation, backup and test limits · Exact-build test receipt.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-28-r4
Hard AI covers the far-side threat
On Hard, when the opponent carries deep along the boards, the AI winger on the other side now drops into the low slot. He chooses a dangerous receiver, anticipates a short movement and covers from slightly inside and goal-side. Without a receiver he protects the weak post.
This applies to both teams and both ends, including your AI teammates. Easy and Normal keep native positioning. Human controls, player ratings, skating speed, shot chances and goalie reach keep their established behavior. Native steering and checking still run.
In 11 paired native Hard skating situations, the winger moved closer to the receiver in every comparison. Average coverage distance on Hard fell by 27 rink units over the measured frames. Eight Normal/Easy controls retain the baseline positioning. This measures positioning, not a guaranteed scoring or win-rate change. 44 target/guard cases and the full 20-check shared release gate also pass. Tests use scripted native input.
2026-11-03-r2 · Actual native goalie, puck and original red goal frame in the fresh four-pad match.
2026-11-03-r2 · Current players, puck, original red goal and distinct controller stars.
Implementation, exact comparison limits, rollback backup and research credits: AI coverage notes. Current test receipt: QA_STATUS.json.
2026-10-13
1Co-op passing to your teammate
In Players: Two – Teammates, player 1's passes rarely went to player 2. The pass routine picks the
teammate with the lowest "cost" (distance² plus a penalty if he isn't in the stick direction, ±45°) and makes no
difference between humans and the computer, so a closer CPU player almost always won. A CPU receiver also skates
into the pass by itself, a human doesn't, so passes to player 2 looked worse too.
When a human passes and the candidate is the other human, the cost is set to 0, so your friend is chosen whenever he's roughly in the right direction. Single-player is unaffected. Works both ways.
The human who is the pass target may receive the puck at distance 40 from the stick instead of 14, only while the pass is on its way to him (20 until 2026-10-22).
Bot test, 100 passes
Before
After
Pass target was player 2
55 %
86 %
Player 2 actually got the puck
30 %
44 %
2026-10-22: reach 20 → 40
New bot test (player 2 standing still, ±35° aim error, about 80 passes per version). Faster passes between the humans were tried too and were worse: the puck was gone before it could be taken.
Reach of the human pass target
Player 2 got the puck
The other team got it
20 (before)
48 %
31 %
32
55 %
25 %
40 (now)
59 %
18 %
2026-10-19
2Goalie passes are never blind
How it works today (2026-10-26): when your goalie has the puck he waits until you ask for it. Press pass (Xbox A / Genesis B) and he passes to the player you control, in co-op to the player of the pad that pressed. A press you are still holding when he catches the puck counts too. While his pass is on its way, extra presses no longer switch your player, so you keep the receiver. Y takes control of the goalie himself (manual goalie) and gives you the normal controls. If nobody presses, the game's own hold timer and whistle apply as usual. The text below is the original fix from 19 October.
If no teammate was inside the stick cone, the goalie just fired the puck straight out, often onto an opponent's stick.
Short passes could also fly up to twice as fast because the flight time is rounded down.
The goalie still aims with the stick (±45°, and the other human is preferred inside the cone).
With nobody in that direction, he passes to the other human (co-op) or else to the nearest teammate.
Goalie passes get one extra frame of flight time, minimum 3, so they are softer.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-20
3Shots from the blue line can score
A set goalie saves everything below height 15 within 12–15 pixels, and the crossbar is at height 13. So a
goalie in position was practically unbeatable from distance: 0.3 % of blue-line shots went in.
The shot routine stores the distance to the net. From distance 160 or more (the green zone, starting about 20 pixels inside the blue line) the game's own
random generator decides, once per shot, whether the goalie misses it: 15 % chance.
While that is active the goalie can't reach or pick up the puck. It still has to go under the bar and between the posts.
Long shots get 1/8 less lift so fewer of them sail over the bar.
Applies to both teams, CPU included. You don't have to stand exactly on the line, anywhere in the green works.
The zone started at distance 140 at first and was moved out to 160 to make it a bit harder.
Measured
288 bot shots from 12 blue-line spots
Goals
Original
1 (0.3 %)
Only shrinking the goalie's reach
2–5
25 % miss chance
12 (4.2 %)
40 % miss chance
21
Historical 15 % estimate (before crit/Easy)
≈ 2.8 %
The table above records the original pre-crit experiment, not current Easy scoring odds. The r32 audit verifies the current 15% roll separately. In that older experiment, about 17 % of shots where the goalie misses actually go in, so 15 % × 17 % + 0.3 % ≈ 2.8 %, close to the
real NHL's ~3 % from the point. With 25 %, ten CPU games with Edmonton gave 8.7 % from the green zone versus 7.8 % from
closer in, which was too generous. Better shooters score more: with the same 288 shots and the 25 % chance, McDavid's ratings
scored 7.3 %, Draisaitl's 5.9 %, an average player's 4.2 %.
2026-11-03-r2 · The current critical puck during actual native flight.
2026-11-03-r2 · The actual current critical puck and separated flame trail.
Shootouts
Shootouts (Play Mode → Shootout) are decided close to the net, so the change does not touch them. 810 bot attempts per ROM:
original 20 goals, patched 19, none from long range in either. Almost every goal came from the same move: skate straight,
cut left briefly, shoot about 38 pixels from the goal line. CPU vs CPU barely ever scores (0 in 85 attempts on the original).
2026-11-03-r2 · Native shootout starts without further input. This screenshot uses a declared clock-only OT expiry fixture.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-21
4Off-screen arrow points the right way
When the goalie is off screen an arrow at the top edge shows where he is. In shootouts with a manual goalie it said the goalie was
to the left, but when the shooter got there he was in the middle of the net. The arrow code comes from the original NHL 94,
whose screen was 256 pixels wide (centre 128). This hack runs at 320 pixels (centre 160), so every edge arrow was drawn 32 pixels
too far left. One constant changed ($16590: +$100 → +$120). Measured: the arrow for a goalie at x = 0
now sits at screen x 159 instead of 127.
2026-11-03-r2 · Actual final-ROM Hard gameplay, puck and physical controller indicators.
2026-11-03-r2 · Blue P1, red P2, neon-green P3 and yellow P4 in the actual four-pad match.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-21
5Fighting: just Off and On, and it sticks
How fights work in this hack
Fights are added by the hack (the original NHL 94 has none). A fight can only start from a body check, and then the game checks:
Fighting is on and Penalties is not Off.
Neither player is a goalie and play is live.
Both players' fighting rating beats a threshold. The threshold drops as the game gets heated and when the players already have penalty minutes.
Finally a 25 % random chance.
Most players have a fighting rating of 0–6 and rarely pass the threshold, enforcers around 14 do. So fights are rare by design.
The bug
The setting was stored in RAM $FFDF00, which lies inside an event log the hack writes during the game (14 bytes per entry from
$FFDEF6). After the first entry the setting held player data such as $0D12, so the menu choice stopped
meaning anything mid-game. Value 0, which disables fights in the code, was labelled "Also On" in the menu.
The fix
The setting moved to free RAM $FFF004 (6 code references and 3 menu references changed). The menu now has two choices, Off and On.
When Penalties is Off, Fighting shows N/A (fights need penalties on anyway). Tested: Off stays 0 and On stays 1 for whole CPU games. With everyone's fighting rating forced to max, a real fight happened (Beauvillier vs Toews).
2026-11-03-r2 · Hard and native match settings, with framed centred help.2026-11-03-r2 · Hard and native match settings, with framed centred help.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
2026-10-21
6All 32 rosters, October 21, 2026
Every team was rebuilt from the NHL's official API (rosters and prospects) and the current DailyFaceoff line combinations.
Each team keeps the hack's 26 slots and its number of goalies, forwards and defencemen. Players are chosen in this order: in tonight's lines,
rest of the roster, injured, prospects with NHL games, other prospects. The lines keep DailyFaceoff's trios and pairs, turned so every player
plays his official NHL position (centre in the middle, left and right wings on their sides). Click a team under Teams to see its lines and ratings.
Edmonton was done first, by hand: lineup from the 4–3 win over Minnesota on October 20, Max Jones (not playing) and Mattias Janmark (injured) left out.
2026-11-03-r2 · Draisaitl placed at Scoring Line1 RW, with McDavid retained at centre.
Ratings for new players
EA's public NHL 27 ratings only list the top 300 players, and the 8 Oilers there are already in the ROM. So the new players got ratings from
their NHL stats (points, goals, shots, ice time, hits, blocks, penalty minutes, weight): each one gets the average of the 12 ROM players with the most
similar stats, which keeps them on the hack's own scale. Tested on the players already in the ROM, it usually lands within half a step of their real ratings.
Players who were already somewhere in the ROM keep the hack's ratings. Players with fewer than 20 NHL games are pulled toward a
depth-player template, players without NHL games get the template. New goalies get the average of the 8 ROM goalies with the closest save percentage. Example, Edmonton:
Player
Wgt
Agi
Spd
Off
Def
Pwr
Chk
Fight
Stk
Acc
End
Pas
Agg
Similar to
Formenton 26
6
3
3
3
3
3
3
1
3
2
3
3
2
Dewar, Luostarinen, Evans
Michaels 43
5
3
3
2
3
2
2
1
3
3
3
3
2
Östlund, Kerfoot, Yamamoto
Hallander 19
8
2
3
2
3
2
2
1
2
2
2
2
2
Kotkaniemi, Eller, Pearson
Levi 27 (G)
Same level as Demko, Tarasov, Ingram, Schmid (save % ≈ .893)
Scale 1–6, weight 1–14, fight 0–7. For comparison McDavid has 6 in speed, offence, stickhandling and passing.
Tested: all 32 rosters read back exactly from the ROM, and full CPU games (WPG–EDM, BOS–CAR, CBJ–OTT, NSH–TOR, SEA–ANA) ran without errors.
Later fixes
No player is in two lines any more: each line has a 7th "extra skater" slot, which used line 2's centre; it now uses a 4th-line player.
Some players had the hack's placeholder ratings (all 1s: Frondell, L'Heureux, Lindstein, Holl, Cole Hutson). They are now rated from their NHL stats.
Anton Frondell and Ivar Stenberg have hand-set star ratings (about Connor Bedard's level), kept in rosters/overrides.json.
Current game screenshots: 2026-11-03-r2. Earlier dated images and audit archives retain their historical versions.
Current behavior ·2026-11-02-r2
7A full season
Regular Season is now a season. In the dated Season - jdc version, pick your team, play an 84-game schedule, and follow the standings and the
stats of every player. Everything is saved in the game's battery memory, so it works in any emulator (RetroArch saves it as a
.srm file) and on real hardware with a flash cart.
The main menu
Play Mode shows Continue Season when a season is saved. Move right to New Full Season (84 games), then New Season Light (31) and New Season Mini (7). Left and Right cycle through the available modes and wrap around.
New Season Light: 31 games. Each of the 32 teams meets every other team once. After game 31, the 16 qualifying teams enter a single-elimination playoff: one game decides each pairing.
New Full Season: select your club before starting. Erasing an existing season uses the native confirmed restart; cancelling preserves the saved progress.
Players supports One or Two - Teammates, plus Three/Four - Teammates with a4-Way Play adapter. Controllers follow the selected club. Season settings remain locked after the first completed game.
Game shows your next game: 5/84 vs CAR (home) or at CGY (away). The schedule has every opponent 2–3 times, home and away alternating.
After the first game, match settings stay locked across restarts and slot changes. Players and Auto Replays retain their separate editable behavior. Full, Light and Mini progress are saved independently; Quickgame and Allstar preserve those seasons.
2026-11-03-r2 · Edmonton and a new Full season by default; help centred inside its matching native frame.
The season menu
Press Start in the main menu to see the restored native Matchups presentation for the current teams and players, followed by the pre-game menu. There:
Start Game: play your next game.
Season Standings: one division per page (Atlantic, Metropolitan, Central, Pacific), sorted by points then goal difference; opens on your team's division. Left/Right = division, Up/Down = choose a team, C = that team's players.
Scoring Leaders: the league's top 32 by points (goals break ties), 16 per page.
Restart Season: asks first (A+C = yes, Start = back; on a pad with X/A/B the Genesis A is X and C is B), then deletes the season and takes you to the main menu.
Season Standings and Scoring Leaders are also in the pause menu and after each game (they replaced Other Scores and Record Holders).
2026-11-03-r2 · Native division standings and player/statistics controls.
The division table after every game
When a season game is over you get the standings drawn with the team banners from the game's own playoff tree (no cup),
one division per screen: its 8 teams by points, with games played, points and the gap to the division leader (the leader shows his lead over number 2).
It opens on your division, your team is marked with an arrow and blinks. Left/Right = the other divisions, Start goes on to the main menu.
The font's shadow colour is darkened on this screen (the game's light shadow made the digits look blurry on dark blue).
2026-11-03-r2 · Native division standings and player/statistics controls.
2026-11-03-r2 · Current player statistics and sorting controls.
2026-11-03-r2 · Current scoring leaders with native sorting controls.
2026-11-03-r2 · Edmonton and a new Full season by default; help centred inside its matching native frame.
Season - jdc - 2026-10-31
Current version: 2026-11-03-r2 (Beta). Each new release replaces the preceding jdc download with a new version name; Full, Light and Mini are included in this one ROM. jdc and Bodin start each new version with fresh progress; controller mappings are retained.
Shared QA checklist: Claude and Codex now follow the same test and release plan, with results bound to the exact ROM version.
Settings remain locked (28 October, r3): Continue Full/Light/Mini keeps its match settings after reboot. The temporary legacy unlock is removed, and Auto line changes are saved correctly. Details and tests.
Forum fixes and boot credits (28 October, r2): five gameplay corrections, including penalty-shot collision recovery and boxed-player pass selection. Reports and results; credits and sources.
Season settings kept, penalty minutes saved (28 October, from the NHL94 forum): a season now remembers its own Period Length, Goalie Control, Penalties, Line Changes and Fighting. Before, after leaving the emulator these came back as the start-up defaults and were locked for the rest of the season. r3 correction: older started seasons also stay locked. Saved choices are validated and recovered; choices for a new season are captured before match setup so Auto line changes remain Auto. Penalty minutes per player are now saved for the league and the playoffs and shown as a PM column on the season's club statistics pages.
Restart a finished season from the main menu (27 October): for a finished Full/Light/Mini season the Play Mode row now has a second choice next to See Old Full Season: Restart Full Season (Right). Start on it asks for X + B, like the finished-season menu, and starts a fresh season in that slot only. Also: the shot-power bar has no see-through lines above and below any more, and the crowd-bar graphics moved out of the window-plane area a broken glass panel uses (garbled ice and boards in that corner).
Meters in front of the players, flames after menus (26 October, r37/r38): the crowd meters and the shot-power bar are now drawn into the scoreboard layer like the score box, so skaters pass behind them instead of over them. And crit flames no longer go missing: text from the season menus could leave the flame timer at a huge value, so the flame graphics were not loaded for minutes of play; it is now reset at every face-off of a new game.
Difficulty kept per season (26 October, r36): the Difficulty setting was only in memory, so after a restart a season played on Easy came back as Normal, and could not be changed because it locks after the first game. Each season now saves its own Difficulty when a game starts and gets it back on start-up or when you switch seasons.
Faster Scoring Leaders (26 October, r35): opening the list and every sort now ranks the 800 players in one quick pass instead of 32 slow ones (about 1.5 s with no input before, so a Start press got lost and you had to press twice). Same order as before.
Sortable Scoring Leaders between games (26 October, r34): the season's Scoring Leaders in the pre-game menu now sorts by points, goals or assists with C (Xbox B), the chosen column in red, like the browser after a finished season. Left/Right still pages, Start goes back.
Crit flames follow the puck (26 October, r33): a crit could have its red puck and bomb sound but almost no visible flame trail. When the camera followed the shot, the six circles overlapped. They now follow the puck's path across the ice while the camera scrolls. Reproduced and checked in Mini, Easy, 5-minute periods, Fighting Off, Edmonton–Chicago. Shot power and goal bonuses are unchanged. Source, tests and before/after pictures.
2026-11-03-r2 · The current critical puck during actual native flight.
2026-11-03-r2 · The actual current critical puck and separated flame trail.
Strong crits fixed and measured (26 October, r32): the very hardest crits could become slower and swerve the wrong way because the original velocity calculation overflowed. That is fixed. Tested Edmonton, Colorado and Toronto on Easy, Normal and Hard with 5, 7, 10 and 20-minute periods: 14,400 matched shots before/after. Bouchard #2 scored 32/100 full crit shots from the long-shot zone on Easy against an active goalie. The goalie-miss bonus activated 15.03% beyond distance 160 and never below it; Easy produced 2,400/2,400 actual crits. These are isolated goalie tests with other skaters out of the lane, not normal match scoring odds. Method, source and results · Full comparison CSV.
2026-11-03-r2 · Measured shot speed is displayed below the clock, using the selected unit.
2026-11-03-r2 · The current critical puck during actual native flight.
Shot panel stays through the replay (26 October, r31): the speed box now sits directly above the team/score box and has the same width and height. The charge meter is inside. The recorded km/h and mph stay visible throughout the goal replay, then disappear when play returns (also when skipped). The full-charge display now follows the complete wind-up. Source and tests.
2026-11-03-r2 · Measured shot speed is displayed below the clock, using the selected unit.2026-11-03-r2 · Clean REPLAY heading and preserved lower-left clock/frame during a real automatic replay.
No replay after the final horn (26 October, r30): the automatic goal replay could start after the game was over even though nobody had scored; fixed.
Shot speed in a score box (26 October, r29): the km/h and mph readout under the shot meter is now a real score-box panel, drawn with the game's own HUD frame and font exactly like the "COL 0 / WAS 0" box; it disappears after four seconds, at the next wind-up or when a replay starts.
Shot meter lower and steady; score-box skip hint (26 October, r28): the meter sits lower (the GOAL banner covered its text), the speed uses a narrow font on black plates in graphics memory nothing else touches (a broken glass used to scramble it), and the replay's "X+B SKIP" now looks like the score box (black plate, grey frame, blocky letters).
Shot meter and Easy difficulty (26 October, r27): a small meter top right fills while you wind up a slapshot; full = red and blinking in that release. Since 2026-10-28-r7 it starts white, turns orange and stays solid red at full charge. After the shot its speed shows under it in km/h and mph, measured honestly from the rink (centre line to goal line = 89 ft): the hardest normal slapshot is about 148-153 km/h (92-95 mph), a crit up to about 176-184 km/h (109-114 mph), above Zdeno Chara's NHL record of 108.8 mph (2012 All-Star Skills). Difficulty now has Easy too: your meters are always full (CPU empty), and every forehand slapshot of yours is a crit (backhands and quick wrists never crit).
2026-11-03-r2 · The rendered full shot gauge is solid red; actual C input continues the authenticated charge state.
More crits, better co-op passes (26 October, r26): every crit-eligible shot gets 3 percentage points more crit chance (rating 100: 13%, 50: 8%). A pass now finds your human teammate even when he stands up to 90° off the direction you aim (it was 45°, so a CPU skater straight ahead took the pass), and with three or four players the nearest human gets it.
Skip hint, no menu flash after the replay (26 October, r25): under REPLAY a smaller "X+B SKIP" shows how to skip it (Mega Drive A + C). When the replay ends or is skipped it now goes straight back to the game; the replay's Options / Reverse Angle box no longer flashes up.
Y takes the goalie with four players (26 October, r24): with 3-4 teammates Y now takes your goalie also while a teammate skater has the puck (it switched skaters instead). Y is still a pass when you carry the puck, and the outlet request while your own goalie holds it; B brings you back to a skater.
REPLAY title (26 October, r23): the automatic goal replay shows a big chrome "REPLAY" in the corner, in the style of the NHL'94 logo, instead of the grey A/B/C VCR box. The Instant Replay from the pause menu keeps its controls.
2026-11-03-r2 · Clean REPLAY heading and preserved lower-left clock/frame during a real automatic replay.
Skater switching with four players; settings locked in a season (26 October, r22): with 3-4 teammates on 4-Way Play, B (pass) switches to the nearest free skater again, also from a goalie you took with Y. Fighting and Difficulty can be set before a season's first game and are then locked like every other row.
Three/Four in original playoffs (26 October, r21): original New Playoffs, New Playoffs /7 and Continue Playoffs now also offer Three/Four - Teammates. The player count is remembered separately from Full/Light/Mini, and Two - Head to Head remains available. Source and tests.
Choose and remember players in playoffs (26 October, r20): select Continue Full/Light/Mini PO, move down to Players and choose One, Two, Three or Four - Teammates. Each season now remembers its own player count when you switch series or close and reopen the game, in both league and playoffs. Your qualified team, results and playoff tree stay the same. Three/Four requires the 4-Way Play configuration below. Source and restart tests.
Goalie controls for all four teammates (26 October, r19): your goalie stays under AI control after catching the puck. Tap the pass button to request a pass to your own skater, including players 3 and 4; a tap during the catch or dive waits for his recovery. Y takes the goalie manually. Changing to a season showing One now starts one player, and players 3/4 are inactive during the two-player shootout rotation and restored after it.
Tested with three and four players: Full, Light and Mini matches, switching player counts, menus, pause/resume and repeated cold starts. Two complete Mini games produced 27 goalie passes and 17 receptions; automated checks also cover catches, diving recovery, short taps, all requesting controllers and all playoff formats. Source, tests and technical notes.
Menu no longer freezes with 4-Way Play (26 October, r18): switching Play Mode onto a season saved without the adapter made the game forget the adapter, and the menu stopped taking input. Fixed.
Three / Four - Teammates in a season (26 October, r17): the first season game with three or four players no longer breaks the season (it was saved without your team, and the main menu could hang afterwards).
Up to four players on one team (26 October, r16): with a 4-Way Play adapter the Players row offers One, Two - Teammates, Three - Teammates and Four - Teammates; three or four of you then control the same team, also in a season (every game at home, as co-op). In RetroArch: Quick Menu → Controls → Port 1 and Port 2 Controls → Device Type "MD Joypad 6 Button + 4-WayPlay" (Port 2 is the one the game detects), then Quick Menu → Restart. With the adapter on, ordinary skater switching uses the game’s native behavior; r19 adds the goalie hold/pass/Y controls for all teammates.
Grey menu picture for every team, menu music back (26 October, r15): the main menu picture no longer takes the away team's colours, and the menu music plays again (it had been silent since the Season Edition intro replaced the title screen).
Season Edition main menu (26 October, r14): the main menu now shows the same "NHL'94 Season Edition" picture as the start-up screen behind its panels, instead of the old sunset skyline.
2026-11-03-r2 · Edmonton and a new Full season by default; help centred inside its matching native frame.
Goalie outlet during the catch (26 October, r13): a quick B tap while your goalie is still catching the puck no longer switches skaters; it is kept, and the goalie passes to you as soon as he has the puck.
Top 100 scoring leaders (26 October, r12): the Scoring Leaders list now goes to place 100; Up/Down pages through it 18 at a time. Changing tab or sort there rewrites the list in place.
Scoring Leaders in the Season Complete menu (26 October, r11): a finished season's menu now has See Results, Scoring Leaders (that season's top scorers), Start New Season and Back to Main Menu. Start on a statistics page goes straight back to this menu.
Cleaner statistics screens (26 October, r10): the dark boxes behind every letter on the Season Complete menu and the statistics pages are gone; the text now sits on a slightly darker SPORTS background.
Fast team browsing (26 October, r9): switching club (Left/Right) or tab (A) on the statistics page now also rewrites the page in place, as fast as changing the sort.
Quiet, quicker statistics (26 October, r8): changing the sort (G / A / PTS) on the statistics pages rewrites the list in place instead of redrawing and fading the whole screen, and the menu music stops while you look at the statistics.
No freeze before the faceoff (26 October, r7): a match could stop on the "Resume Game" menu right after Start Game. The game's own intro uses almost the whole sprite list; the crowd meters, drawn first, pushed it into the game's pause flag. The meters are now drawn last, only while there is room, and the crit flames only after a real crit.
Season Complete menu first (26 October, r6): choosing See Old Full/Light/Mini Season now opens the Season Complete menu straight away (See Results / Start New Season / Back to Main Menu); the statistics open from See Results.
Faster Season Complete menu (26 October, r5): moving up and down in the menu after a finished season (See Results Again / Start New Season / Back to Main Menu) now only moves the marker; it no longer redraws and fades the whole screen on every step.
Goal replays play again (26 October, r4): the automatic replay after a goal now actually plays the goal; it only showed a still picture. A finished season's menu no longer shows your club against itself (for example Edmonton vs Edmonton).
No hang after viewing old season results (26 October, r3): after looking at a finished season's results and starting a new season in the same session, the first match could freeze on its start menu. Fixed.
Longer crit flames, crits in shootouts (26 October, r2): the crit tail is now six flames that follow the puck through the whole shot and burn out slowly afterwards, and it no longer disappears when many players are on screen. In shootouts a crit now also turns the puck red with flames (before, it only got the extra power and the effect stopped after one frame).
2026-11-03-r2 · The actual current critical puck and separated flame trail.
Finished seasons show their saved results (26 October): completed slots say See Old Full Season / See Old Light Season / See Old Mini Season. Start opens the saved statistics instead of an extra match. After Scoring Leaders, choose to view again, start a new season in that slot, or return. Xbox X + B confirms a new season; Start cancels. Other seasons are kept. Code and native tests.
2026-11-03-r2 · Completed Mini review menu, from an explicitly declared completed-save fixture. Centred native-frame help.2026-11-03-r2 · Native New Playoffs selected from the current fresh menu. Centred native-frame help.
Clear statistics selection (r29): the selected G, A or PTS column heading turns orange when you change sorting. Up on the first page and Down on the last page keep the display still. Column headings now align with their numbers, and a blank row separates the player list from the controls. Both pages show Sort: Xbox B / Mega Drive C so Xbox players can identify the button. Code and verification.
Goalie pass input across a catch (r26): a pass press still held when the keeper catches the puck now requests the outlet, even if that press had just switched skaters. It reaches the requesting player's controlled skater after recovery. With no pass input he still holds the puck.
Browse every club after the season (r26): Left/Right cycles all 32 teams. A switches Season + Playoffs / Regular Season / Playoffs, C sorts points/goals/assists, Up/Down shows page2 with goalies. Start opens league Scoring Leaders; B there returns to your selected club. Both controllers work. On the Xbox layout A/B/C mean X/A/B. Code and verification.
2026-11-03-r2 · Current completed-season player browser, from a declared saved-season fixture.
Automatic goal replays (25 October, r25): about a second and a half after every goal, the game's own Instant Replay starts by itself and plays the goal, then the game continues to the faceoff. Hold X + B (Genesis A + C, the same as Abandon Season) to skip it. No replays in shootouts.
Flame trail on crits (25 October, r23, fixed in r24): a critical slapshot now leaves a red and orange flame tail behind the puck while it flashes. In r23 it was sometimes missing when many sprites were on screen; since r24 it always shows.
2026-11-03-r2 · The actual current critical puck and separated flame trail.
Mashing pass for the goalie outlet (25 October, r22): when your goalie holds the puck, the first pass press already makes him pass to you. Extra presses while the puck was travelling used to switch your player back and forth, so the cursor jumped around. Now the pass button does not switch players until the pass has arrived.
Season statistics with tabs and scoring leaders (25 October, r21): after the Season Summary you can browse all 32 teams' players and then the league's top18 Scoring Leaders. Both have three tabs, switched with A (also Left/Right on Scoring Leaders): Season + Playoffs, Regular Season and Playoffs; C changes the sorting between points, goals and assists; Up/Down shows page2 of the selected team with the goalies. Playoff statistics are now stored separately from the league. All the other playoff series get games and statistics too, and if you are knocked out the rest of the playoffs is simulated to the end in the background, so the playoff leaders are complete.
2026-11-03-r2 · Current completed-season browser sorted by goals, from a declared saved-season fixture.2026-11-03-r2 · Current scoring leaders with native sorting controls.
Co-op game row (25 October, r20): with Players set to Two - Teammates every season game is played at home (the game's co-op mode controls the home team). The Game row now says so, e.g. 84/84 FLA (co-op), instead of switching from "at" to a misleading "vs".
End-of-season summary (25 October, r19): when your season ends, the game now wraps it up. If you win the Stanley Cup you first see the game's own Playoff Stats and Champions page with the cup; if you are knocked out, the playoff bracket; if you miss the playoffs, the league table after your last game. Press Start and a Season Summary follows (record, points, goals for and against, and how it ended), then Start again for every player's statistics for the whole run, regular season and playoffs together (goals, assists, points, shots; page 2 with the goalies: games, wins, goals against, shots against). Playoff games now count in the season's player and goalie statistics.
2026-11-03-r2 · Completed-season actions and the native Back/Select controls, from a declared fixture.2026-11-03-r2 · Current Player Cards: Tristan Jarry, matching the actual bought-back goalkeeper.
Season test run (25 October, r18): all three season lengths were run to the playoffs and through them (won to the end and lost in round one). One bug fixed: after a season in which your team missed the playoffs, extra games you started were still counted into that season. They no longer are.
One-timers without stopping (25 October, r17): when a teammate passes to you (for example P1 to P2 in co-op) and you press or hold shoot while the pass is on its way, you no longer stop and wind up early, which used to make the pass slide past. You keep skating, take the pass, and a full-power forehand one-timer goes off the moment the puck reaches you. It can crit like any full slapshot. The crowd meter now also raises or lowers Crit Chance, and Team Roster shows it.
Meter effect in Team Roster (25 October, r16): during a game, Team Roster (pause menu) shows Overall and the 0–99 ratings with the team's current meter bonus or penalty included. After every game the meter starts over from the middle, and Roster outside a game shows the normal values.
2026-11-03-r2 · Current on-ice and bench roster status.
Historical difficulty behavior (25 October, r15; superseded by r5):Current Hard uses Normal-style momentum and improved AI. In r15, a new last row in the main menu. Normal is the momentum meter described below. Hard locks it for the whole game: human-controlled teams are always at the bottom (−10% ratings) and computer teams always full (+10%). It can be changed even during a season (the other settings stay locked) and starts as Normal after power-on.
2026-11-03-r2 · Hard and native match settings, with framed centred help.
Team stats screen (25 October, r14): the season team stats page no longer shows the CRT column and its footnote, and the small black gap in the title frame (seen above "CH" in CHICAGO and other odd-length names) is gone.
Meter rows fixed (25 October, r13): in r12 the two bars were drawn next to the wrong team names (the bonus itself always went to the right team). Each bar now sits on its own team's row.
Crowd momentum meters (25 October, r12): two live bars beside the score box, one per team. Shots on goal and body checks pull the momentum toward your team (and away from the other); it slowly fades back toward the middle with every second on the game clock, so it works the same for 5, 10 or 20 minute periods. The bar's position is a rating modifier for everyone on the ice: full bar +10%, middle 0%, empty −10% (red when your team is below the middle). Players coming on the ice get the current modifier straight away. Before this, the native crowd meter only drove the crowd noise and the "Current/Peak Level" stats; it never changed ratings.
2026-11-03-r2 · Actual earned Momentum bars beneath each team name in the lower-right HUD.
Bright red crit puck (25 October, r11): a critical slapshot now turns the puck fully bright red instead of the dull pinkish rink-line colour. A few spectators' dark-green shirts in the crowd use the same colour slot and are now red.
2026-11-03-r2 · The current critical puck during actual native flight.
New start-up (25 October, r10): the EA Sports logo is gone; the game opens directly with the new NHL'94 Season Edition picture, then the main menu (any button skips it).
2026-11-03-r2 · The preserved NHL94 Season Edition startup.
Standalone New Playoffs get their own save (25 October, r9): an original New Playoffs tournament is now saved separately from your Full, Light and Mini seasons. You can have a season in its playoffs and a standalone tournament at the same time; Continue Full/Light/Mini PO and Continue Playoffs each continue their own bracket, also after switching seasons or restarting. User profiles (User Records users) are now shared by all seasons instead of being copied into each one.
No duplicate Continue Playoffs (25 October, r8): while a Full, Light or Mini season is in its playoffs, the original Continue Playoffs entry no longer appears next to Continue Full/Light/Mini PO. It showed the same season playoff a second time, outside the season. A standalone New Playoffs tournament still shows Continue Playoffs after its first game.
Abandon Season during a game (25 October, r6): the in-game pause menu (also after a timeout and between periods) now ends with Abandon Season. A + C discards the current season and goes to the main menu to pick a new team; Start returns to the pause menu and the game can be resumed. Outside a season game (Shootout, standalone playoffs) the entry does nothing.
Xbox-style pads with RetroArch's six-button setting: pad A = Genesis B (pass / switch player), pad B = Genesis C (shoot), pad X = Genesis A (speed / check), pad Y = Genesis Y (goalie). "A + C" means pad X + B; the Abandon Season dialog now says A + C (Xbox X + B) (r7).
Abandon Season (25 October, r5): the pre-game entry formerly called Restart Season is renamed, so it is clear the current season is discarded. A + C confirms and returns to the main menu with a new season of the same format, where you pick a new team; Start cancels. Other seasons are kept.
Simulated games follow Per. Length (25 October, r4): the other clubs' games (and Simulate Match) now produce goals and shots matching the period length you play. Calibrated from 118 complete CPU-vs-CPU games in the emulator: per team, about 1.3 goals / 12 shots with 5-minute periods, 1.9 / 17 with 7, 2.8 / 25 with 10 and 5.7 / 50 with 20. Previously every simulated game scored like a 10-minute game (2.8 goals, ~30 shots). Team strength still decides who scores more.
Per. Length
Played CPU games: goals / shots per team
Simulated (8-round check): goals / shots
5 min
1.32 / 11.7
1.50 / 11.5
7 min
1.93 / 16.8
2.14 / 16.6
10 min
2.82 / 24.8
2.80 / 24.1
20 min
5.70 / 49.5
5.55 / 48.6
Played-game goals are regulation only; simulated totals include the one overtime goal of tied games.
Clean SOG column in team statistics (25 October, r3): after viewing the goalie page and returning, stray characters from the goalies' SV% (for example 141% or 1289) no longer appear after skaters' shots on goal. The saved statistics were always correct; only the display was affected.
Schedule locked after game 1 (25 October, r2): Left/Right on the Game row now only changes the opponent before the first game of a new Full, Light or Mini season. Once a game has been played or simulated, the next fixture follows the fixed schedule. Saves carry over unchanged.
Correct player-card portraits (25 October): faces now follow the player identity after roster changes, in both the main-menu slideshow and Player Cards. All 832 card associations are checked: 702 reuse existing portraits, 123 use newly converted official NHL photos and seven show a neutral silhouette where NHL has no usable headshot. Names, ratings, statistics and saved seasons carry over.
2026-11-03-r2 · Current Player Cards: Tristan Jarry, matching the actual bought-back goalkeeper.
2026-11-03-r2 · Current Player Cards: Ryan Nugent-Hopkins and his actual in-game rating.
2026-11-03-r2 · Current Player Cards team cover and starting line.
Local test save: Dallas has completed the84-game Full season and won the Cup in16 playoff wins. The game is prepared at the all-team statistics browser; Mini's Edmonton championship is retained. This progress is local, separately from ROM downloads.
10-minute OT and shootouts (25 October): both league games and playoff games now use ten minutes of sudden-death overtime. Still tied? Play three shootout attempts per club, then one each until decided; an unreachable lead ends it early. In Two - Teammates, P1 and P2 take alternate attempts for your club, home or away.
The winner receives one deciding goal in the final score. Shootout attempts do not add player goals, assists, shots or goalie goals against. League points and playoff progress are saved normally; Full keeps best-of-seven series and Light/Mini keep single-game pairings. Existing saves carry over.
2026-11-03-r2 · Native shootout starts without further input. This screenshot uses a declared clock-only OT expiry fixture.
Sharp menu text when switching modes: original menu values now keep the correct small font when cycling between seasons, playoffs and Shootout.
2026-11-03-r2 · Native New Playoffs selected from the current fresh menu. Centred native-frame help.
2026-11-03-r2 · Native New Playoffs selected from the current fresh menu. Centred native-frame help.
Startup menu freeze fixed: cycling past Mini now skips Continue Playoffs when no playoff is saved. The menu keeps responding and can return to your season; all three saves stay intact.
Three separate season saves (25 October): keep a Full, Light and Mini season at the same time. On Play Mode, use Left/Right to resume each one's team, next fixture, standings, player statistics and playoffs. A saved slot shows Continue Full Season, Continue Light or Continue Mini; an empty slot shows New. Existing seasons carry over automatically.
Abandon Season (formerly Restart Season) resets only the selected series, with confirmation, including from its playoff pre-game menu. The other two seasons stay saved. Full keeps best-of-seven playoffs; Light and Mini keep single-game playoffs.
2026-11-03-r2 · Edmonton and a new Full season by default; help centred inside its matching native frame.
2026-11-03-r2 · Light season:31 games and framed centred help. Help is centred in its native frame.
2026-11-03-r2 · Mini season: seven divisional games; framed centred help. Help is centred in its native frame.
Critical slapshots + Twin Cobra sound (25 October): only fully wound-up forehand slapshots can crit, including forehand one-timers. Quick wrist shots and backhands keep their ordinary power and sound. A critical slapshot flashes the puck red and plays the selected Twin Cobra digital explosion once. The Crit Chance rating and 25% bonus still apply to qualifying shots.
Correct team-selection logos: Full, Light and Mini now immediately show your club and its scheduled opponent when you change Team. This fixes both logos sometimes showing Edmonton even though the actual fixture was Edmonton–Detroit. Switching between One and Teammates also refreshes both sides correctly.
2026-11-03-r2 · Mini season: seven divisional games; framed centred help. Help is centred in its native frame.
Critical shots: every skater now has a separate Crit Chance rating from 0 to 100. At 100, 13% of full forehand slapshots get 25% extra shot power; at 50, the chance is 8% (since r26: rating/10 + 3 percentage points; a rating of 0 never crits on Normal/Hard; with Crit Shots On, Easy human full forehand slapshots always crit). Better offensive players receive higher ratings. Find it with Left/Right in Team Roster, in the CRT column of season player statistics, and on this site's team pages.
Historical r16 crit experiment (25 October): This earlier setup produced about a quarter more goals; current Easy and strong-shot behavior is measured in the r32 audit above. 4,800 fully wound-up forehand slapshots were fired in a copy of the game where every such shot crits, and 4,800 in a copy where none do; everything else was identical. Shots came from 20 positions 60–180 pixels from the goal line, three aims, against the goalie alone.
No crit
Crit
Puck speed
18,364
22,912 (+25%)
Goal
4.9%
6.2%
Save
76.4%
67.6%
Over the bar
1.0%
1.7%
Wide or deflected away
17.7%
24.5%
+1.3 percentage points, about 27% more goals per shot (statistically clear, z = 2.8). The faster puck beats the goalie more often but also misses the net and goes over the bar more often. The biggest gain is at medium range (140 px: 2.0% → 7.1%); from the blue line the existing blue-line bonus dominates either way (13–14%). The test is simplified (empty ice, skater placed directly in position), so real games differ, but the direction should hold.
Red crit puck: a critical shot now makes the puck briefly blink red and normal. It returns to normal when someone takes possession, play is stopped or a new shot starts. The Crit Chance rating and 25% power bonus stay the same.
2026-11-03-r2 · The actual current critical puck and separated flame trail.2026-11-03-r2 · Current on-ice and bench roster status.
New Full Season: 84 league games, then best-of-seven playoffs. Existing saved 82-game seasons finish at 82. New full seasons use 84, matching the NHL's 2026/27 game count.
Fixed an empty old Mini save making New Full Season show 1/8: it now correctly shows 1/84 without resetting any saved season.
2026-11-03-r2 · Edmonton and a new Full season by default; help centred inside its matching native frame.
New Season Mini: eight league games against different opponents, then the usual 16 qualifying teams enter the playoffs. One game decides each playoff pairing.
On the main menu's Game row, Left/Right selects a different first opponent before game 1 of a new season, for some variety. After the first game the schedule is locked. The choice survives power-off, and the rest of the league plays the matching round.
2026-11-03-r2 · Mini season: seven divisional games; framed centred help. Help is centred in its native frame.
The private test build adds Simulate Match directly below Start Game. Select it with C to get an instant result, including player and goalie statistics. Press Start on the result screen to continue to the next fixture.
Tested through complete 8-, 31- and 84-game league schedules, plus continued legacy 82-game saves, including the final-game transition to the correct playoff format. Use the dated test download below for these changes; the earlier release downloads above are preserved.
The private test also fixes an Address Error when opening a team's players from Season Standings. All 32 teams, both player pages and goalie statistics have been checked.
Additional single-player checks covered 192 statistics screen entries and pause/resume. An obsolete statistics exit path was removed; Bodin's exact one-off freeze has not been reproduced. The separate co-op input fix lets both pads browse custom statistics.
More breakable glass: hard, high puck impacts on the straight glass behind the far goal now have a 50% chance to shatter the hit pane. The original break sound, whistle and faceoff remain. Low or soft shots and the other boards keep their normal behavior.
Period warning only at 0:40: the three warning beeps no longer repeat when a penalty expires, including at 1:00. Penalty release and its normal final-five-second ticks still work.
Call for a goalie pass: your AI goalie holds the puck until you press B. In One, he passes to player 1; in Teammates, he passes to the skater controlled by whichever player pressed B. A tap during a diving save waits until he gets up. The first request wins; a prolonged hold still causes a faceoff. Y/manual controls remain as before.
Diving goalie recovery: a goalie who catches the puck while sprawling now gets the same possession window as a standing catch, allowing time to get up and play it. A prolonged hold still causes a faceoff.
Faster player switching: without the puck, B selects another available skater when pressed. It avoids taking your teammate's player. With the puck, B still passes; Y selects the goalie.
The same private copy also tests automatic goalie control with explicit Y selection, a three-beep warning at 0:40 each period, and 1-minute ordinary / 2-minute fighting or injury penalties with 5-minute periods.
2026-11-03-r2 · The actual current match scoring summary.
What is counted
Column
Meaning
GP W L
Games played, won and lost in regulation time
OTW
Games won in overtime or a shootout
OTL
Overtime or shootout losses; historical saved ties are retained
GF GA
Goals for and against
PTS
2 per win (regulation, overtime or shootout), 1 per overtime/shootout loss or historical tie
G A PTS
A player's goals, assists (up to two per goal) and points
SOG
A player's shots on goal
GP W (goalie)
Games the goalie started and won (overtime wins included)
GA
Goals against while he was in net
SV%
Save percentage: (shots against − goals against) / shots against, shown as .912
Your games count exactly what happened: the game's own goal, assist and shot counts for every player on both teams.
The rest of the league plays one round with every game of yours: the other 30 teams are paired and get simulated results, weighted by team strength from the ratings. Each goal gets a scorer and up to two assists, each team 22–37 shots, all weighted by the players' ratings, so the stars score most. A tie goes to overtime with a coin flip.
Checked with CPU games: player goals add up to the team's goals for all 32 teams, never more than two assists per goal, no player with fewer shots than goals; every team's goalies add up to the team's games, wins and goals against.
2026-11-03-r2 · The actual native16-team playoff tree after real Start input.2026-11-03-r2 · Current Player Cards: Tristan Jarry, matching the actual bought-back goalkeeper.
Goalies (page 2 of a team screen, Right): in your games the goalie in net gets the game's own goals-against and shots-against counts;
in the simulated games the starter plays four games in five and the backup the rest, facing the other team's simulated shots.
Playoffs after the full season
After game 84 (82 for an older saved full season), Play Mode shows Continue to Playoffs. Press Start to open the playoff tree with your team and the season's qualified teams. The full season uses best-of-seven series,
and the playoff tree is filled with the season's 16 best teams, NHL style: the top 3 of each division plus 2 wild cards per conference
(the best of the rest). East (Atlantic + Metropolitan) is on the right, West (Central + Pacific) on the left. The better division winner
meets the second wild card, the other winner the first, 2nd meets 3rd. From then on it is the game's own playoffs, including
Continue Playoffs after a power-off. If your team didn't make it, the menu is just free after the season.
New Season Light: after game 31, select Continue to Playoffs and press Start to see the qualified teams in the playoff tree. Each pairing takes one game, including the final.
2026-11-03-r2 · Native New Playoffs selected from the current fresh menu. Centred native-frame help.
The division table after each game shows who is in right now: green = top 3 of the division, dark teal = wild card. Season Standings marks the same teams with a light blue band.
2026-10-22
8Y takes your goalie
With a 6-button pad and Goalie Ctrl: Manual Control, press Y when your team doesn't have the puck (loose puck or the other team has it)
and you take control of your own goalie straight away. When your team has the puck, Y works like B, as before (pass). Works for the home and the away team,
for player 1 and player 2, in the season and in single games. With a 3-button pad nothing changes.
The hack already read 6-button pads and turned Y into a B press. Tested in MAME with a 6-button pad: Y passed with the puck and switched to the
nearest skater without it.
Now the pad reader checks Goalie Ctrl and who has the puck when Y goes down. Without the puck it asks the game to switch to the goalie, using the same
route as the game's own manual-goalie switch (finds your goalie, skips if he is pulled or the other human controls him).
One press does one thing: if Y took the goalie, keeping it held does nothing more (your goalie won't pass by accident when he catches the puck).
Tested: home team (goalie = object 5) and away team (object 11), plain and season ROM; with the puck Y still passed.
Teams
Click a team for its lines, roster and ratings as they are in the patched ROM.
Everything used to make and test the patch is in tools/ (or all of it at once: nhl94-tools.zip, rebuilt with every release), and further work is done from there. The current ROM is built with experimental/build_test.py to an explicit output. Canonical work and private test evidence stay in the project's HTTP-blocked .workspace/ directory. The older build.sh workflow below is for the plain historical patch.
The season mode in 68000 assembly (season.s, standings.s, leaders.s, teamstats.s, seasonmenu.s, newseason.s), built onto the patched ROM by build_season.py; readsram.py prints and checks a save file; mknv.py makes test saves
All experimental glass, player-switching, goalie/Y, warning, penalty and match-simulation code, a complete explicit-output builder, headless two-pad test harness and example cases. Build and continuation guide.
Rating model (kNN on NHL stats), ROM reader, EA ratings reader, disassembler, IPS maker, rink image
cd tools
./build.sh # build the plain ROM + the season ROM, rewrite the IPS and the team pages
./update_rosters.sh # refresh all rosters from the NHL, then build
python3 make_site_data.py # refresh the team pages
The current release is qualified with the headless Genesis Plus GX core used by RetroArch: 128 required suites, 465 exact native/test source hashes, real native controller input and opened current screenshots. Current graphical proof is recorded separately from historical MAME measurements.
Tech
The following table summarizes the historical plain patch. The current season ROM uses experimental/build_test.py and its relocated modules; the current hook exports cover every named change and the complete byte diff. Plain changes are made by patch.py from the unmodified v5.1W ROM. It checks the original bytes at every address and refuses
to patch a different version. New code lives in free ROM ($20963E–$2FFFBF is empty in the original) and uses free RAM from $FFF000.
Historical measurement workflow: Everything was tested headless in MAME with Lua scripts: bots that press buttons from saved positions, breakpoints that log every shot and goal,
and full CPU games as a stability check. Same position + same input = same result, so before/after comparisons are exact.