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