Release 2026-11-04-r2 · SHA256 5fff9e83614bffd50fbb3e5c6c8cc29ed95bd2202eb10a2c8f3fcfe00112c7b1 · Click a line number for a direct link.
1| Separate real keeper attacking G/SOG from the native overloaded GA/SA bytes.2| Transient only: six keepers x (G,SOG) at FFF800; no save-format changes.3 .include "season-symbols.inc"4 .equ COUNTS,0xFFFFF8005 .equ MAGIC,0xFFFFF80C6 .text7 .globl _start8_start:9 bra.w clear10 bra.w goal11 bra.w shot12 bra.w adjust13 bra.w game_reset14clear:15 clr.l COUNTS16 clr.l COUNTS+417 clr.l COUNTS+818 move.w #0x474B,MAGIC19 rts20| A2 real attacking team, D0 real roster. D1-D3/A0-A1 are caller-saved here.21| A0 -> own keeper G byte, carry clear if valid keeper, set otherwise.22locate:23 cmpi.w #2,%d024 bhi.s invalid25 moveq #0,%d126 lea 0xFFFFC331,%a127 cmpa.w #0xC6CE,%a228 beq.s side29 moveq #6,%d130 lea 0xFFFFC333,%a131 cmpa.w #0xCA32,%a232 bne.s invalid33side:34 moveq #0,%d235 move.b (%a1),%d236 cmpi.w #31,%d237 bhi.s invalid38 lsl.w #2,%d239 lea GK_TAB,%a140 .if WITH_TRANSFERS41 jsr 0x23603042 .endif43 moveq #0,%d344 move.b 2(%a1,%d2.w),%d345 cmp.w %d3,%d046 bcc.s invalid47 add.w %d0,%d148 add.w %d0,%d149 lea COUNTS,%a050 adda.w %d1,%a051 andi #0xFE,%ccr52 rts53invalid:54 ori #1,%ccr55 rts56track:57 btst #4,0xFFFFC2EA58 bne.s track_done59 btst #7,0xFFFFC2EC60 bne.s track_done61 bsr.s locate62 bcs.s track_done63 cmpi.w #0x474B,MAGIC64 beq.s initialized65 bsr.w clear66initialized:67 addq.b #1,(%a0)68track_done:69 rts70goal:71 move.w 0x18(%a2),%d0 | exact displaced native scoring roster72 move.w %sr,-(%sp)73 movem.l %d1-%d3/%a0-%a1,-(%sp)74 bsr.s track75 movem.l (%sp)+,%d1-%d3/%a0-%a176 move.w (%sp)+,%ccr77 move.b %d0,(%a0)+ | exact displaced goal-log write78 jmp 0x1496A79shot:80 clr.w %d081 move.b 0x66(%a3),%d0 | exact displaced native real shooter82 move.w %sr,-(%sp)83 movem.l %d1-%d3/%a0-%a1,-(%sp)84 btst #4,0xFFFFC2EA85 bne.s shot_done86 btst #7,0xFFFFC2EC87 bne.s shot_done88 bsr.w locate89 bcs.s shot_done90 cmpi.w #0x474B,MAGIC91 beq.s shot_initialized92 bsr.w clear93shot_initialized:94 addq.b #1,1(%a0)95shot_done:96 movem.l (%sp)+,%d1-%d3/%a0-%a197 move.w (%sp)+,%ccr98 jmp 0x1302299| Postgame: A1 team, D1 roster, D2 rawGA/D3 rawSA -> actual defensive GA/SA.100adjust:101 movem.l %d0/%d4/%a0,-(%sp)102 cmpi.w #0x474B,MAGIC103 bne.s adjusted104 move.w %d1,%d0105 add.w %d0,%d0106 cmpa.w #0xC6CE,%a1107 beq.s adjust_side108 addq.w #6,%d0109adjust_side:110 lea COUNTS,%a0111 adda.w %d0,%a0112 moveq #0,%d4113 move.b (%a0)+,%d4114 sub.w %d4,%d2115 move.b (%a0),%d4116 sub.w %d4,%d3117adjusted:118 movem.l (%sp)+,%d0/%d4/%a0119 rts120121| Preserve real-game keeper attack counters through another game's highlights.122game_reset:123 btst #4,0xFFFFC2EA124 beq.s real_game_reset125 move.l COUNTS,-(%sp)126 move.l COUNTS+4,-(%sp)127 move.l COUNTS+8,-(%sp)128 move.w MAGIC,-(%sp)129 jsr 0x169D0130 move.w (%sp)+,MAGIC131 move.l (%sp)+,COUNTS+8132 move.l (%sp)+,COUNTS+4133 move.l (%sp)+,COUNTS134 rts135real_game_reset:136 jsr 0x169D0137 bsr.w clear138 rts139