experimental/downed_receiver.s

Download file

Release 2026-11-04-r2 · SHA256 90a14c25e9db910d9036d23d019082354da2c15b7caeec805f4ac4e7b4d11bee · Click a line number for a direct link.

1| Reject a downed skater as a pass target or stick pickup candidate.2| +0 replaces BTST #2,$63(A1) in native/cached human pass scans.3| +4 watches an actual native stick contact, before the existing pickup gate.4| Same Z contract: Z clear means unavailable. All registers and other CCR bits5| are preserved exactly. No RAM, puck movement or animation is written.6    .text7    .globl _start8_start:9    bra.w scan10    bra.w pickup11pickup:12    bsr.w collision13    beq.s native_pickup14    cmpi.l #0x14ECC,(%sp)           | sole game call: BSR puckstick from collision dispatcher15    bne.s blocked_direct16    addq.l #4,%sp                    | discard that BSR, retain native collision register frame17    jmp 0x14ED0                     | native body response: no intangible downed skater18blocked_direct:19    rts                             | defensive contract for an explicit isolated puckstick call20native_pickup:21    pea 0x150FC22    jmp 0x2FF380                     | exact original pickup/crit gate and its return stack2324scan:25    move.w %sr,-(%sp)26    move.l %a0,-(%sp)27    movea.l %a1,%a028    bra.s common29collision:30    move.w %sr,-(%sp)31    move.l %a0,-(%sp)32    movea.l %a2,%a033common:34    move.l %d0,-(%sp)35    btst #2,0x63(%a0)36    bne.s blocked37    tst.w 0x34(%a0)38    ble.s allowed                    | keep native keeper and non-skater handling39    btst #5,0x64(%a0)40    bne.s blocked                    | native board-fall flag, through recovery41    move.w 0x58(%a0),%d042    .irp animation,0xD26,0xDD8,0x136A,0x145C,0x1776,0x17E8,0x185A,0x18CC,0x193E,0x1A00,0x1AF443    cmpi.w #\animation,%d044    beq.s blocked                    | front/back/flip/injury/board fall animations45    .endr46allowed:47    ori.w #4,8(%sp)48    bra.s restore49blocked:50    andi.w #0xFFFB,8(%sp)51restore:52    move.l (%sp)+,%d053    movea.l (%sp)+,%a054    move.w (%sp)+,%sr55    rts56