experimental/ai_gap.s

Download file

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

1    .ifndef WITH_GAP_BRAKE2    .equ WITH_GAP_BRAKE,03    .endif4| Hard defensive pair: nearer back contains the carrier goal-side;5| partner protects a dangerous slot receiver. Native skating/checking retained.6    .text7    .globl _start8_start:9    lea 0xE594,%a010    movem.l %d2-%d7/%a1-%a2,-(%sp)11    link.w %a6,#-2412    move.w %d0,-2(%a6)13    move.w %d1,-4(%a6)14    cmpi.w #1,0xFFFFF07A15    bne.w native16    btst #3,0x62(%a3)17    bne.w native18    btst #5,0x62(%a3)19    bne.w native20    btst #2,0x63(%a3)21    bne.w native22    cmpi.w #1,0x34(%a3)23    blt.w native24    cmpi.w #2,0x34(%a3)25    bgt.w native26    btst #0,0xFFFFC2EA27    bne.w native28    btst #7,0xFFFFC2EC29    bne.w native30    btst #7,0xFFFFC2EE31    bne.w native32    btst #2,0xFFFFC2F233    bne.w native34    btst #0,0xFFFFC2FA35    bne.w native36    btst #2,0xFFFFC2FA37    bne.w native38    .if WITH_PASS_CONTINUITY39    bsr.w flight_owner40    .else41    move.w 0xFFFFB7AA,%d242    .endif43    cmpi.w #11,%d244    bhi.w native45    move.w 0x52(%a3),%d346    subi.w #6,%d247    subi.w #6,%d348    eor.w %d3,%d249    bpl.w native50    move.w 0xFFFFB75E,%d351    btst #7,0x62(%a3)52    bne.s depth_ready53    neg.w %d354depth_ready:55    cmpi.w #-80,%d356    bgt.w native57    cmpi.w #-264,%d358    blt.w native59    move.w 0xFFFFB74A,%d460    cmpi.w #-144,%d461    blt.w native62    cmpi.w #144,%d463    bgt.w native64    move.w %d4,-6(%a6)              | actual carrier world X, own attack-oriented depth65    move.w %d3,-8(%a6)66    lea 0xFFFFB04A,%a167    cmpi.w #6,0x52(%a3)68    bcs.s own_base69    adda.w #768,%a170own_base:71    move.l #0x7FFFFFFF,%d672    moveq #-1,%d573    .if WITH_REAL_ACTORS74    moveq #5,%d775    .else76    moveq #4,%d777    .endif78nearest:79    cmpi.w #1,0x34(%a1)80    blt.s next_back81    cmpi.w #2,0x34(%a1)82    bgt.s next_back83    btst #2,0x63(%a1)84    bne.s next_back85    btst #5,0x62(%a1)86    bne.s next_back87    move.w (%a1),%d088    sub.w %d4,%d089    muls.w %d0,%d090    move.w 0x14(%a1),%d191    sub.w 0xFFFFB75E,%d192    muls.w %d1,%d193    add.l %d1,%d094    cmp.l %d6,%d095    bge.s next_back96    move.l %d0,%d697    move.w 0x52(%a1),%d598next_back:99    adda.w #128,%a1100    dbra %d7,nearest101    cmp.w 0x52(%a3),%d5102    bne.w cover103    move.w -6(%a6),%d0104    move.w %d0,%d1105    asr.w #3,%d1106    sub.w %d1,%d0                    | stay slightly inside the carrying lane107    move.w -8(%a6),%d1108    subi.w #20,%d1                   | goal-side containment gap109    .if WITH_GAP_BRAKE110    jsr 0x228000111    lea 0x228040,%a0                 | retain the native target-arrival brake command112    .endif113    cmpi.w #-238,%d1114    bge.w store115    move.w #-238,%d1116    bra.w store117cover:118    moveq #30,%d0                    | weak post if there is no dangerous receiver119    tst.w -6(%a6)120    bmi.s cover_depth121    neg.w %d0122cover_depth:123    move.w -8(%a6),%d1124    subi.w #32,%d1125    cmpi.w #-224,%d1126    bge.s cover_min127    move.w #-224,%d1128cover_min:129    cmpi.w #-140,%d1130    ble.s find_threat131    move.w #-140,%d1132find_threat:133    move.w #0x7FFF,%d6134    lea 0xFFFFB04A,%a1135    cmpi.w #6,0x52(%a3)136    bcc.s opp_base137    adda.w #768,%a1138opp_base:139    .if WITH_REAL_ACTORS140    moveq #5,%d7141    .else142    moveq #4,%d7143    .endif144threat:145    tst.w 0x34(%a1)146    ble.w next_threat147    btst #2,0x63(%a1)148    bne.w next_threat149    move.w 0x52(%a1),%d2150    cmp.w 0xFFFFB7AA,%d2151    beq.w next_threat152    move.w (%a1),%d2153    move.w %d2,%d4154    bpl.s threat_abs155    neg.w %d4156threat_abs:157    cmpi.w #92,%d4158    bgt.w next_threat159    move.w 0x14(%a1),%d3160    btst #7,0x62(%a3)161    bne.s threat_depth162    neg.w %d3163threat_depth:164    cmpi.w #-140,%d3165    bgt.w next_threat166    cmpi.w #-252,%d3167    blt.w next_threat168    move.w %d3,%d5169    addi.w #224,%d5170    bpl.s threat_cost171    neg.w %d5172threat_cost:173    add.w %d5,%d5174    add.w %d4,%d5175    cmp.w %d6,%d5176    bge.s next_threat177    move.w %d5,%d6178    move.w %d2,%d0179    asr.w #2,%d2180    sub.w %d2,%d0                    | shadow inside the receiver, protect the pass lane181    move.w %d3,%d1182    subi.w #12,%d1183    cmpi.w #-236,%d1184    bge.s next_threat185    move.w #-236,%d1186next_threat:187    adda.w #128,%a1188    dbra %d7,threat189store:190    btst #7,0x62(%a3)191    bne.s output192    neg.w %d1193output:194    move.w %d0,-2(%a6)195    move.w %d1,-4(%a6)196native:197    move.w -2(%a6),%d0198    move.w -4(%a6),%d1199    unlk %a6200    movem.l (%sp)+,%d2-%d7/%a1-%a2201    jmp 0x103C8202203    .if WITH_PASS_CONTINUITY204flight_owner:205    jsr 0x2DD680206    rts207    .endif208