| Fixes reported on the NHL94 forum (2026-10-28), found in the community disassembly
| (abdulahmad/NHL94Genesis, routine names below) and the mechanics notes of
| nhl94dotcom/NHL94MatchViewer docs/GENESIS_MECHANICS.md.
| +0 friction ($AC12, updateplayers): "runaway speed" - the deceleration-off flag (pflags bit 0)
|    leaks onto a person's skater after a fall into the boards or a takeover during a pass, so
|    bursts stack past 20,000. A pad-controlled skater (bit 3) never keeps it.
| +4 penalty shot awarded ($ED96, puckshootout): the puck also loses its vertical speed and is put
|    in no-collision mode (bit 2), so a puck still moving in a net cannot score after the whistle.
| +8 penalty shot set up ($EF92, puckpenshot, first call): no-collision mode off again - it was
|    only cleared by a faceoff puck drop, so a puck flipped over the glass after the award
|    whistle stayed a "ghost" through the net and boards for the whole shot.
    .text
    .globl _start
_start:
    bra.w friction
    bra.w psaward
    bra.w pssetup
    bra.w passflight
friction:                              | replaces btst #0,$62(a3) / beq.w +4 / moveq #9,d2
    btst #3,0x62(%a3)
    beq.s 1f
    bclr #0,0x62(%a3)                  | a person's skater: normal friction
1:  btst #0,0x62(%a3)
    beq.s 2f
    moveq #9,%d2
2:  rts
psaward:                               | replaces clr.w $B772 / clr.w $B774
    clr.w 0xFFFFB772
    clr.w 0xFFFFB774
    clr.w 0xFFFFB776
    bset #2,0x62(%a3)
    rts
pssetup:                               | replaces bclr #1,$62(a3) (pfna); the caller's beq.w stays
    bclr #1,0x62(%a3)
    beq.s 9f
    bclr #2,0x62(%a3)
    andi.b #0xFB,%ccr                  | Z clear: "it was a new assignment"
9:  rts

| The experimental builder consumes a cached plain-patched ROM, so changes in
| patch.py alone do not reach this build. Wrap its existing goalie timing code;
| retain that exact path for goalies and clamp only skater flight times.
passflight:
    jsr 0x2FF140
    tst.w 0x34(%a3)
    beq.s 8f
    cmp.w #2,%d2
    bge.s 8f
    moveq #2,%d2
8:  rts
