experimental/pass_speed.s

Download file

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

1| Optional targeted B-pass speed. Normal is native; Slow solves the same2| intercept quadratic at floor(4/5 of the original power), minimum1. Native3| time bounds and lead/catch timers remain. Fast-receiver guards keep original4| timing when receiver speed meets/exceeds lower power. Lift uses original time.5| F0E8 active0Normal/1Slow; F0EA original-time transient for this pass only.6| Shared lift/speed tagged record50..53 plus complement is written by2DE410.7| Exports +0 flight wrapper at BF54, +4 menu writer.8    .equ VALUE,0xFFFFF0E89    .equ VIEW,0xFFFFF06C10    .equ MAP,0xA130F111    .text12    .globl _start13_start:14    bra.w flight15    bra.w writer16flight:17    jsr 0x2EF00C                     | retain native bounds/short-pass correction first18    move.w %sr,-(%sp)19    cmpi.w #1,VALUE20    bne.w flight_done21    move.w %d2,0xFFFFF0EA             | height remains independent of the slower time22    movem.l %d0-%d1/%d5,-(%sp)23    move.w 18(%sp),%d0               | conservative guard: fast receiver must keep original timing24    move.w 20(%sp),%d125    muls.w %d0,%d026    muls.w %d1,%d127    add.l %d1,%d028    move.w 0xFFFFBEDE,%d529    asr.w #2,%d530    mulu.w #4,%d531    divu.w #5,%d532    andi.l #0xFFFF,%d533    bne.s power_ready34    moveq #1,%d535power_ready:36    move.w %d5,%d137    muls.w %d1,%d138    cmp.l %d1,%d039    bcc.s retain_native40    move.w %d5,10(%sp)               | keep lower power while restoring all original scratch registers41    movem.l (%sp)+,%d0-%d1/%d542    move.w 10(%sp),%d2               | native saved target dx/dy below return+SR+velocity pair43    move.w 12(%sp),%d344    asr.w #2,%d245    asr.w #2,%d346    move.w 6(%sp),%d0                | native normalized receiver velocity, never fabricated47    move.w 8(%sp),%d148    bsr.w solve49    jsr 0x2EF00C                     | same native keeper/skater min/max time rules50    cmp.w 0xFFFFF0EA,%d251    bge.s flight_done52    move.w 0xFFFFF0EA,%d2              | native no-intercept/root fallback must never make Slow earlier53    bra.s flight_done54retain_native:55    movem.l (%sp)+,%d0-%d1/%d556flight_done:57    move.w (%sp)+,%sr58    rts5960solve:                               | exact native BF04..BF52 arithmetic, local velocity save61    movem.w %d0-%d1,-(%sp)62    muls.w %d2,%d063    muls.w %d3,%d164    add.w %d1,%d065    asl.w #1,%d066    move.w %d0,%d467    movem.w (%sp),%d0-%d168    muls.w %d0,%d069    muls.w %d1,%d170    muls.w %d5,%d571    neg.l %d572    add.l %d0,%d573    add.l %d1,%d574    muls.w %d2,%d275    muls.w %d3,%d376    add.l %d2,%d377    muls.w %d5,%d378    asl.l #2,%d379    move.w %d4,%d080    muls.w %d0,%d081    sub.l %d3,%d082    jsr 0x110BE83    moveq #1,%d384    asr.w #2,%d585    bne.s root86    moveq #1,%d587root:88    move.w %d0,%d289    neg.w %d090    sub.w %d4,%d291    ext.l %d292    divs.w %d5,%d293    dbpl %d3,root94    bne.s rounded95    addq.w #1,%d296rounded:97    addq.l #4,%sp98    rts99100writer:101    cmpi.w #1,%d3102    bhi.w flags103    tst.w VIEW104    beq.s writable105    tst.w 0xFFFFE3E8                  | completed-game index of the selected season header106    beq.s writable107    cmpi.w #1,0xFFFFE3F0108    beq.w flags109    cmpi.w #3,0xFFFFE3F0110    beq.w flags111    cmpi.w #4,0xFFFFE3F0112    beq.w flags113writable:114    cmp.w VALUE,%d3115    beq.w flags116    move.w %sr,-(%sp)117    movem.l %d0-%d1/%a0-%a1,-(%sp)118    ori.w #0x700,%sr119    move.w %d3,VALUE120    move.b #1,MAP121    jsr 0x2DE410122    lea 0x200001,%a0123    tst.w VIEW124    bne.s checksum125    lea 0x208001,%a0126checksum:127    moveq #0,%d0128    move.w #0x1FFE-1,%d1129sum:130    add.b (%a0),%d0131    addq.l #2,%a0132    dbra %d1,sum133    not.b %d0134    move.b %d0,(%a0)135    not.b %d0136    move.b %d0,2(%a0)137    move.b #0,MAP138    movem.l (%sp)+,%d0-%d1/%a0-%a1139    move.w (%sp)+,%sr140flags:141    tst.w %d2                        | native row writer return contract142    rts143