| Independent existing momentum switch:0On(default),1Off. Easy assistance separate.
    .equ VALUE,0xFFFFF84A
    .text
    .globl _start
_start:
    bra.w load
    bra.w put
    bra.w reset
    bra.w disabled
    bra.w gate_d0
    bra.w gate_d2
    bra.w gate_d4
record:
    lea 0x209AA5,%a0              | native/Full/Light/Mini logical4D52..59
    tst.w 0xFFFFF06C
    beq.s record_done
    move.w 0xFFFFF06A,%d0
    subq.w #1,%d0
    cmpi.w #2,%d0
    bhi.s record_done
    addq.w #1,%d0
    lsl.w #2,%d0
    adda.w %d0,%a0
record_done:
    rts
load:
    move.w %sr,-(%sp)
    movem.l %d0-%d1/%a0,-(%sp)
    clr.w VALUE
    bsr.s record
    moveq #0,%d0
    move.b (%a0),%d0
    move.w %d0,%d1
    andi.w #0xFE,%d1
    cmpi.w #0x7A,%d1
    bne.s loaded
    not.b %d0
    cmp.b 2(%a0),%d0
    bne.s loaded
    not.b %d0
    andi.w #1,%d0
    move.w %d0,VALUE
loaded:
    movem.l (%sp)+,%d0-%d1/%a0
    move.w (%sp)+,%sr
    rts
put:
    move.w %sr,-(%sp)
    movem.l %d0-%d1/%a0,-(%sp)
    bsr.w record
    moveq #0x7A,%d0
    cmpi.w #1,VALUE
    bne.s write
    addq.w #1,%d0
write:
    move.b %d0,(%a0)
    not.b %d0
    move.b %d0,2(%a0)
    lea 0x208001,%a0
    moveq #0,%d0
    move.w #0x1FFD,%d1
sum:
    add.b (%a0),%d0
    addq.l #2,%a0
    dbra %d1,sum
    not.b %d0
    move.b %d0,(%a0)
    not.b %d0
    move.b %d0,2(%a0)
    movem.l (%sp)+,%d0-%d1/%a0
    move.w (%sp)+,%sr
    rts
reset:
    move.w %sr,-(%sp)
    move.w 0xFFFFF06C,-(%sp)
    move.w #1,0xFFFFF06C
    clr.w VALUE
    bsr.w put
    move.w (%sp)+,0xFFFFF06C
    move.w (%sp)+,%sr
    rts

| Consume actual counters while Off; no banked event or stale applied percent.
| Full GPR/SR preserved. Native frame rescales cached active actors from BASE;
| the loader/roster/crit gates independently enforce zero effective percentage.
disabled:
    move.w %sr,-(%sp)
    clr.w 0xFFFFF702
    clr.w 0xFFFFF70E
    clr.w 0xFFFFF72A
    clr.w 0xFFFFF72C
    clr.w 0xFFFFF72E
    move.w 0xFFFFC6CE,0xFFFFF704
    move.w 0xFFFFC6DE,0xFFFFF706
    move.w 0xFFFFCA32,0xFFFFF708
    move.w 0xFFFFCA42,0xFFFFF70A
    move.w 0xFFFFC468,0xFFFFF70C
    move.w (%sp)+,%sr
    rts
gate_d0:
    move.w %sr,-(%sp)
    cmpi.w #1,VALUE
    bne.s gate_d0_done
    moveq #0,%d0
gate_d0_done:
    move.w (%sp)+,%sr
    rts
gate_d2:
    move.w %sr,-(%sp)
    cmpi.w #1,VALUE
    bne.s gate_d2_done
    moveq #0,%d2
gate_d2_done:
    move.w (%sp)+,%sr
    rts
gate_d4:
    move.w %sr,-(%sp)
    cmpi.w #1,VALUE
    bne.s gate_d4_done
    moveq #0,%d4
gate_d4_done:
    move.w (%sp)+,%sr
    rts
