| Reject a downed skater as a pass target or stick pickup candidate.
| +0 replaces BTST #2,$63(A1) in native/cached human pass scans.
| +4 watches an actual native stick contact, before the existing pickup gate.
| Same Z contract: Z clear means unavailable. All registers and other CCR bits
| are preserved exactly. No RAM, puck movement or animation is written.
    .text
    .globl _start
_start:
    bra.w scan
    bra.w pickup
pickup:
    bsr.w collision
    beq.s native_pickup
    cmpi.l #0x14ECC,(%sp)           | sole game call: BSR puckstick from collision dispatcher
    bne.s blocked_direct
    addq.l #4,%sp                    | discard that BSR, retain native collision register frame
    jmp 0x14ED0                     | native body response: no intangible downed skater
blocked_direct:
    rts                             | defensive contract for an explicit isolated puckstick call
native_pickup:
    pea 0x150FC
    jmp 0x2FF380                     | exact original pickup/crit gate and its return stack

scan:
    move.w %sr,-(%sp)
    move.l %a0,-(%sp)
    movea.l %a1,%a0
    bra.s common
collision:
    move.w %sr,-(%sp)
    move.l %a0,-(%sp)
    movea.l %a2,%a0
common:
    move.l %d0,-(%sp)
    btst #2,0x63(%a0)
    bne.s blocked
    tst.w 0x34(%a0)
    ble.s allowed                    | keep native keeper and non-skater handling
    btst #5,0x64(%a0)
    bne.s blocked                    | native board-fall flag, through recovery
    move.w 0x58(%a0),%d0
    .irp animation,0xD26,0xDD8,0x136A,0x145C,0x1776,0x17E8,0x185A,0x18CC,0x193E,0x1A00,0x1AF4
    cmpi.w #\animation,%d0
    beq.s blocked                    | front/back/flip/injury/board fall animations
    .endr
allowed:
    ori.w #4,8(%sp)
    bra.s restore
blocked:
    andi.w #0xFFFB,8(%sp)
restore:
    move.l (%sp)+,%d0
    movea.l (%sp)+,%a0
    move.w (%sp)+,%sr
    rts
