NHL ’94 Season Edition is jdc’s expanded beta, built on NHL 2026 – 94 Edition v5.1W by Jkline3 and von Ozbourne. It combines updated NHL teams with Full, Light and Mini seasons, standings, scoring leaders and playoffs. Play with friends in Quickgame, try black-versus-red Allstar teams, or reshape your roster through optional preseason transfers with dollar prices and team budgets. Other additions include adjustable passing, charged shots, Crit Shots, goalkeeper controls and a revised match display. Changes are documented with source code, automated checks and screenshots. The video below highlights visible features; hands-on multiplayer testing and feedback remain part of development.
Short feature tour — with real game sound
Recorded from 2026-11-03-r2 Beta · 4:57 · 45 chapters. This earlier film does not show the new grey menus or player-blue-line penalty rule.
Video recorded from 2026-11-03-r2: framed centred menu help, dollar transfers and actual-roster presentation. Standings/scoring scenes are explicitly labelled demo sample data in a separate save.
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 472 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
568KB current patch
32rosters updated
Latest qualified beta 2026-11-04-r2: grey menus with complete centred H32/H40 help, restored native team-OVR scale, automatic replay correction and player-centre blue-line penalty rules. 128/128 required groups plus 13 supplemental groups passed. Physical multiplayer testing remains part of beta development.
Previous2026-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-04-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.
Current beta: grey menus and player-blue-line penalty shots
2026-11-04-r2 · 128/128 required groups plus 13 supplemental groups passed. Grey menu fields, complete H32/H40 help, the restored native team-OVR scale and replay continuation are qualified on this exact ROM.
2026-11-04-r2 · Main-menu Icing and Transfers choices, with centred help inside the grey frame.2026-11-04-r2 · 32-column Change Goalie menu: the complete A Back / B Select / Start Back help now fits and is centred.2026-11-04-r2 · 40-column Line Editor: original player names and colours, grey background and centred controls.2026-11-04-r2 · Preseason transfer home: $16.042.000 budget, Buy players, Sell players and Ready for season.2026-11-04-r2 · OVR-sorted Boston buying list with dollar prices and the shared grey background.2026-11-04-r2 · Edmonton selling list: player names, positions, OVR and dollar prices on the same grey background.2026-11-04-r2 · Native player statistics with the grey background and centred scrolling controls.2026-11-04-r2 · Period statistics retain both complete team logos above the centred footer.
Penalty shots: free before blue, no backward skating after crossing
Before the shooter first crosses the attacking blue line, movement is unrestricted. After that first crossing, forward and purely sideways movement are allowed. Any actual backward movement toward centre ice ends the attempt as a miss. The shooter’s position activates the rule, not the puck’s position or the direction the player is facing. The rule covers awarded penalty shots, overtime shootouts and standalone Shootout, in both attack directions, including CPU attempts where available. Existing possession, shot and retouch rules remain.
2026-11-04-r2 · Overtime shootout before the shooter has crossed the attacking blue line.2026-11-04-r2 · Lateral-movement test after the shooter has crossed the attacking blue line.2026-11-04-r2 · Native ending frame from the post-blue backward-movement miss test; movement and the miss are verified by input/position traces.2026-11-04-r2 · Allstar shootout with a red Allstar B CPU skater facing the black Allstar A goalkeeper.
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. Current ordinary-team OVR uses the original native club grade plus the actual-roster mean delta: fresh Edmonton94, with qualifying improvements reaching99. The Nov3 mean-only display below is historical. 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.
Historical Nov3-r2 OVR pictures — superseded display scale2026-11-03-r2 · Native Matchups Overall: New York Rangers55, Edmonton57.2026-11-03-r2 · Native Matchups Overall: New York Rangers55, Edmonton62.
Transfer dollars and centred menu controls
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-04-r2 · Main-menu Icing and Transfers choices, with centred help inside the grey frame.2026-11-04-r2 · Edmonton selling list: player names, positions, OVR and dollar prices on the same grey background.2026-11-03-r2 · Edmonton owned roster: Nathan MacKinnon C99 at$9.801.000; remaining budget$12.277.000.2026-11-03-r2 · Edmonton owned roster includes Morgan Geekie C79 at$6.241.000 and Nathan MacKinnon C99; 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.
How purchases and sales change the teams
Buying from another club moves that player out of the selling club’s squad and into yours. The selling club receives the purchase money. It does not automatically receive players you sold or any other replacement players. Your own sales put those players into Free Agents.
CPU clubs do not automatically buy replacements in the current version. A club can therefore become weaker when you buy its stars; it continues with its remaining squad and the money it received.
Every deal must leave both clubs with valid squads: 20–26 players, 2–3 goalkeepers, at least 6 defenders and 12 forwards. You also need a free roster slot and enough money. A purchase or sale that violates these limits is refused before funds or ownership change.
Example: if your budget, roster space and both teams’ position limits allow you to buy McDavid and Draisaitl from Edmonton, they join your club and Edmonton receives their fees. Players you sold stay in Free Agents; they do not move to Edmonton. The example does not guarantee that both purchases are affordable or legal in every squad.
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-04-r2 · Main-menu Icing and Transfers choices, with centred help inside the grey frame.2026-11-04-r2 · Preseason transfer home: $16.042.000 budget, Buy players, Sell players and Ready for season.2026-11-04-r2 · Edmonton selling list: player names, positions, OVR and dollar prices on the same grey background.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 · Native centre presentation after the documented trades: Zibanejad68 versus Edmonton’s MacKinnon98.
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 · The SAME native fixture during automatic REPLAY:172KMH, solid red bar and1st4:36 clock remain below; no speed text covers the REPLAY heading.2026-11-03-r2 · Centre-ice faceoff at1st5:00: blue P1, red P2, neon-green P3 and yellow P4 stars are separated around the formation.
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 skaters wear solid black and Allstar B solid red; ASB0 ASA0 at1st4:57.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 · Allstar left-forward presentation: #97 Kaprizov marked HOT versus #41 Stenberg, with their native rating display and 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.
Current penalty-shot movement: skate freely before the shooter first crosses the attacking blue line. After the first crossing, forward and sideways movement are legal; actual backward movement toward centre ice ends the attempt as a miss. Shooter position activates this rule, not puck position or facing. Awarded penalties, overtime and standalone shootouts cover both directions and CPU where relevant. Current rules and qualification.
The one-goal-deficit CPU goalie pull was already in v5.1W, credited to McMarkis.
The current playtest is 2026-11-04-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 128 required checks passed on 2026-11-04-r2. Strict release gate: PASSED. Every required suite executed freshly, including transfers, native overview, Allstar CPU/humans, controls, HUD/replay and friendly-pass catch regression checks. 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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 · Momentum strips beneath NYR and EDM at2nd0:17, NYR1 EDM0; a separate native match moment.2026-11-03-r2 · Native play with Momentum Off: the lower-right scoreboard has no Momentum strips. Stat scaling is checked separately.2026-11-03-r2 · Full shot-charge gauge: a solid red bar beneath the lower-left1st4:40 clock.2026-11-03-r2 · Home Edmonton powerplay and countdown sit in the framed box above the unchanged clock.2026-11-03-r2 · Momentum strips beneath both team names at3rd3:02, NYR1 EDM2. The visible bars are separate from the lower-left clock.2026-11-03-r2 · Momentum strips beneath NYR and EDM at2nd0:17, NYR1 EDM0; a separate native match moment.
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 · Centre-ice faceoff at1st5:00: blue P1, red P2, neon-green P3 and yellow P4 stars are separated around the formation.
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 automatically started native shootouts with eligible-skater rotation and native shot/retouch handling. Before the shooter first crosses the attacking blue line, movement is unrestricted. After that first crossing, forward and purely sideways movement are allowed. Any actual backward movement toward centre ice ends the attempt as a miss. The shooter’s position activates the rule, not the puck’s position or the direction the player is facing. The rule covers awarded penalty shots, overtime shootouts and standalone Shootout, in both attack directions, including CPU attempts where available. Existing possession, shot and retouch rules remain. The permanent rule set has no start-menu row.
2026-11-03-r2 · Native shootout scene: one shooter at centre ice and a0:20 attempt timer. Declared clock-only overtime fixture; automatic start is verified separately.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 Pass Charge is implemented as a separate optional setting, with the shared visible gauge.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
Current fresh defaults: Auto line changes, Fighting Off, Hard, Auto Replays Off, Crit Shots Off and Icing On. Edmonton is preselected; valid saved choices and season locks remain.
2026-11-03-r2 · Edmonton goalkeeper35 holds the puck with a pale-blue marker at2nd2:35; the NYR powerplay frame remains above the clock.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 · Goalkeeper and red crease during native play at3rd3:42. This is rink context; recovery timing and defensive policy require native QA.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 is selected and visibly rendered in the main menu; the help is centred inside its native border.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 · Crit Shots Off is selected and visibly rendered in the main menu; the help is centred inside its native border.
2026-11-03-r2 · Critical-shot flight: the puck is blue in this captured animation frame, with orange trailing effect discs at2nd3:51.2026-11-03-r2 · Critical-shot animation at2nd3:50: separated orange trail discs follow the puck toward the net.
2026-10-29
Hard CPU coaching and stability
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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. Representative native play; this still does not measure the AI policy.
2026-11-03-r2 · Actual final-ROM Hard gameplay, puck and physical controller indicators. Representative native play; this still does not measure the AI policy.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 · Full shot-charge gauge: a solid red bar beneath the lower-left1st4:40 clock.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 · Auto Replays Off selected in the main menu, independent of Crit Shots; centred controls inside the native footer frame.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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. Representative native play; this still does not measure the AI policy.
2026-11-03-r2 · Centre-ice faceoff at1st5:00: blue P1, red P2, neon-green P3 and yellow P4 stars are separated around the formation. Representative native play; this still does not measure the AI policy.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 · Goalkeeper and red crease during native play at3rd3:42. This is rink context; recovery timing and defensive policy require native QA. Representative native play; this still does not measure the AI policy.
2026-11-03-r2 · Current players, puck, original red goal and distinct controller stars. Representative native play; this still does not measure the AI policy.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 %.
Shootouts
Historical standalone Shootout measurements used810 bot attempts per ROM (20 original goals,19 patched; no long-range goals). The current image below instead shows a tied-overtime shootout attempt from the declared clock fixture. It illustrates the native shootout scene, not that historical measurement or the blue-line bonus.
2026-11-03-r2 · Native shootout scene: one shooter at centre ice and a0:20 attempt timer. Declared clock-only overtime fixture; automatic start is verified separately.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
2026-10-21
4Off-screen arrow points the right way
Offscreen controller arrows use the320-pixel screen centre. The originally reported manual-goalie shootout case was displaced32 pixels left by a256-pixel assumption. The corrected constant at$16590 is documented and tested separately. The current pictures below show the blue arrow for a real Y-selected offscreen goalkeeper at the lower rink edge; they are not the original top-edge comparison.
2026-11-03-r2 · Blue goalkeeper arrow near the lower rink edge, alongside red arrows for other offscreen players.
2026-11-03-r2 · Blue goalkeeper arrow near the lower rink edge, alongside red arrows for other offscreen players.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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 · Fighting Off selected in the main menu; Auto line changes and centred framed controls remain visible.2026-11-03-r2 · Fighting Off selected in the main menu; Auto line changes and centred framed controls remain visible.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
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.
New grey-menu and penalty screenshots are from 2026-11-04-r2 above. Earlier illustrations below retain their visible capture dates and are not relabelled as this build.
Current behavior ·2026-11-02-r2
7A full season
Current images below are from independent exact-ROM sessions. Transfer, card and completed-save examples retain their declared individual provenance; they are not one continuous season or a before/after test unless explicitly paired.
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, B = that team's players.
Scoring Leaders: the league's top 32 by points (goals break ties), 16 per page.
Abandon Season: B confirms, A/Start cancels. Confirming clears only the selected season and returns to the main menu; other saved seasons are kept.
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 · Ordinary season pregame: New York0, Edmonton0,1st5:00 and Start Game. This is not the Quickgame action menu.
Division standings, player statistics and leaders
Current standings and statistics views: the native in-season Standings page lists eight teams per division with W/OTW/OTL/L, goals and points. The Player Stats and Scoring Leaders pages show their own player tables and navigation. These screenshots show the initial tables, not the separate automatic postgame banner presentation or a played full-season history.
2026-11-03-r2 · Native Atlantic Division standings with eight clubs and initial zero records; division/team/player controls are visible.
2026-11-03-r2 · Current player statistics and sorting controls.
2026-11-03-r2 · Current scoring leaders with native sorting controls.
Current views of earlier season changes
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 · Critical-shot flight: the puck is blue in this captured animation frame, with orange trailing effect discs at2nd3:51.
2026-11-03-r2 · Critical-shot animation at2nd3:50: separated orange trail discs follow the puck toward the net.
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 · Critical-shot flight: the puck is blue in this captured animation frame, with orange trailing effect discs at2nd3:51.
Shot panel through replay (introduced26 October,r31; current layout shown): the selected KMH or MPH value and shot bar stay in the lower-left clock panel during replay. The upper-left REPLAY heading is separate. Earlier dual-unit/right-side layouts are historical.
2026-11-03-r2 · Declared native shot/goal fixture before replay:172KMH and the solid red shot bar below the1st4:36 clock, LAK0 WAS1.2026-11-03-r2 · The SAME native fixture during automatic REPLAY:172KMH, solid red bar and1st4:36 clock remain below; no speed text covers the REPLAY heading.
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 panel (introduced26 October,r29; current layout shown): the selected KMH or MPH value is in the lower-left clock panel. A measured shot and its charge bar remain visible through automatic replay. The earlier dual-unit/right-side placement and replay expiry were historical layouts.
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 (introduced26 October,r27; current layout shown): the shot gauge sits inside the lower-left clock panel. It starts with a small white fill, turns orange and reaches solid red. Easy separately retains100-equivalent human-team skills and full energy.
2026-11-03-r2 · Full shot-charge gauge: a solid red bar beneath the lower-left1st4:40 clock.
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 · The SAME native fixture during automatic REPLAY:172KMH, solid red bar and1st4:36 clock remain below; no speed text covers the REPLAY heading.
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 (introduced26 October,r14; current layout shown): the current menu uses the supplied image78 texture behind its panels. The original greyscale NHL94 Season Edition startup is preserved separately.
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 · Critical-shot animation at2nd3:50: separated orange trail discs follow the puck toward the net.
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 · Season Complete: See Results, Scoring Leaders, Start New Mini Season and Back to Main Menu. Declared completed-save fixture.
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 (introducedr26; current controls shown): Left/Right changes the team, X changes the Season+Playoffs/RegularSeason/Playoffs tab, B sorts, and Up/Down changes the page. A goes back and Start finishes the browser. The illustrated saved-season fixture and the original introduction are separate from a naturally played full season.
2026-11-03-r2 · Season+Playoffs browser for Dallas, sorted by points, from the declared completed-season save 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 · Critical-shot animation at2nd3:50: separated orange trail discs follow the puck toward the net.
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 and scoring leaders (introduced25 October,r21; current controls shown): the completed-season browser offers team/statistic pages with X for tabs and B for sorting. The live league Scoring Leaders page separately uses Left/Right for pages, B to sort and A/Start to go back. Current help is shown at the bottom of each illustrated page.
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 · Season Complete: See Results, Scoring Leaders, Start New Mini Season and Back to Main Menu. Declared completed-save fixture.2026-11-03-r2 · Season+Playoffs browser for Dallas, sorted by points, from the declared completed-season save fixture.
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 · Team Roster: Overall selected for Scoring2; Draisaitl79 and the other current player ratings are visible.
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.
Momentum indicators (introduced25 October,r12; current layout shown): a small strip sits beneath each team name in the lower-right scoreboard. Native shots/checks and decay change the values. The screenshot shows their location; the stat effect and temporal change are tested separately.
2026-11-03-r2 · Momentum strips beneath NYR and EDM at2nd0:17, NYR1 EDM0; a separate native match moment.
Critical-shot visual effects (earlier releases described red flashes): the current screenshots show the actual captured animation phase and separated orange trail. The flight frame below has a blue puck; no red frame or altered scoring probability is claimed by that still.
2026-11-03-r2 · Critical-shot flight: the puck is blue in this captured animation frame, with orange trailing effect discs at2nd3:51.
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 · Edmonton player card: Tristan Jarry35, Overall70,2 saves and50% save percentage. This independent card scene does not show a transfer history.
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 scene: one shooter at centre ice and a0:20 attempt timer. Declared clock-only overtime fixture; automatic start is verified separately.
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 · Abandon Season confirmation: B confirms; A/Start cancels. The notice distinguishes this season from the other saved seasons.
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.
Critical-shot visual effects (earlier releases described red flashes): the current screenshots show the actual captured animation phase and separated orange trail. The flight frame below has a blue puck; no red frame or altered scoring probability is claimed by that still.
2026-11-03-r2 · Critical-shot animation at2nd3:50: separated orange trail discs follow the puck toward the net.2026-11-03-r2 · Critical-shot flight: the puck is blue in this captured animation frame, with orange trailing effect discs at2nd3:51.
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.
Current keeper controls and period warning: native goalkeeper catches return to CPU handling, with explicit Y selection retained. The current alarm plays five beeps at0:40. The screenshot shows the clock moment; the exact-ROM audio tests separately verify the sound. It is not a Scoring Summary screen.
2026-11-03-r2 · The native second-period clock at0:40. The five warning beeps are audio, verified separately; they cannot be heard in this still.
What is counted
2026-11-03-r2 · Scoring Summary: first-period New York goals by Dorofeyev at0:55 and Gavrikov at1:43, with their assists.
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 · Edmonton player card: Tristan Jarry35, Overall70,2 saves and50% save percentage. This independent card scene does not show a transfer history.
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.
Playoff continuation and native bracket
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 · Native16-team playoff bracket around the Stanley Cup; this representative standalone scene does not establish season-qualification history.
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.
2026-11-03-r2 · Blue goalkeeper arrow near the lower rink edge, alongside red arrows for other offscreen players.
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, 472 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.