Release 2026-11-04-r2 · SHA256 8abf07eca7774c77dd9ee48e4c54af40ab6e358f1b769bc4202f61eb22057c59 · Click a line number for a direct link.
1 .ifndef WITH_REFINEMENTS2 .equ WITH_REFINEMENTS,03 .endif4| Conditional Allstar records; no ordinary roster table or SRAM is rewritten.5 .ifndef WITH_TRANSFERS6 .equ WITH_TRANSFERS,07 .endif8 .include "season-symbols.inc"9 .equ ACTIVE,0xFFFFF85010 .equ OLDHOME,0xFFFFF85811 .equ OLDAWAY,0xFFFFF85A12 .text13 .globl _start14_start:15 bra.w enter16 bra.w leave17 bra.w table_a018 bra.w table_a119 bra.w table_a220 bra.w table_a521 bra.w photo_a022 bra.w crit_a023 bra.w goalie_a024 bra.w a0_shift_d025 bra.w a1_shift_d026 bra.w a1_shift_d327 bra.w a1_index_d028 bra.w a1_index_d129 bra.w a0_read_d030 bra.w crit_attribute31 bra.w strict_compare32 bra.w goalie_a133 bra.w team_title34 bra.w team_overall35enter:36 cmpi.w #1,ACTIVE37 beq.s entered38 move.w 0xFFFFD04C,OLDHOME39 move.w 0xFFFFD04E,OLDAWAY40 move.w #1,ACTIVE41entered:42 jsr 0x22900043 clr.w 0xFFFFD04C44 move.w #1,0xFFFFD04E45 rts46leave:47 cmpi.w #1,ACTIVE48 bne.s left49 clr.w ACTIVE50 move.w OLDHOME,0xFFFFD04C51 move.w OLDAWAY,0xFFFFD04E52left:53 rts5455| MOVEA/LEA preserve every CCR/IRQ bit. These selected bases do so too.56 .macro base name,reg,ordinary,special57\name:58 move.w %sr,-(%sp)59 movea.l #\ordinary,\reg60 cmpi.w #1,ACTIVE61 bne.s 9f62 cmpi.w #1,0xFFFFF84C63 bne.s 9f64 tst.w 0xFFFFF06C65 bne.s 9f66 movea.l #\special,\reg679: move.w (%sp)+,%sr68 .if WITH_TRANSFERS69 .ifc \name,goalie_a070 jsr 0x23602C71 .endif72 .ifc \name,goalie_a173 jsr 0x23603074 .endif75 .ifc \name,crit_a076 jsr 0x23603877 .endif78 .endif79 rts80 .endm81 base table_a0,%a0,0x30E,0x22C80082 base table_a1,%a1,0x30E,0x22C80083 base table_a2,%a2,0x30E,0x22C80084 base table_a5,%a5,0x30E,0x22C80085 base photo_a0,%a0,0x38E,0x22C88086 base crit_a0,%a0,0x2FF800,0x22C90087 base goalie_a0,%a0,GK_TAB,0x22CC4088 base goalie_a1,%a1,GK_TAB,0x22CC408990| Whole displaced native instruction sequences, including their exact flags.91a0_shift_d0:92 bsr.w table_a093 asl.w #2,%d094 rts95a1_shift_d0:96 bsr.w table_a197 asl.w #2,%d098 rts99a1_shift_d3:100 bsr.w table_a1101 asl.w #2,%d3102 rts103a1_index_d0:104 bsr.w table_a1105 movea.l (%a1,%d0.w),%a1106 rts107a1_index_d1:108 bsr.w table_a1109 movea.l (%a1,%d1.w),%a1110 rts111a0_read_d0:112 bsr.w table_a0113 move.w (%a2),%d0114 rts115crit_attribute:116 bsr.w table_a0117 movea.l 0x1E(%a2),%a1118 rts119strict_compare:120 bsr.w table_a0121 cmp.l (%a0,%d0.w),%d5122 rts123124| Cached city-title bitmaps still belong to the cosmetic club shells. Use the125| native text font in their same11x2 cell rectangle for actual Allstar names.126team_title:127 cmpi.w #1,ACTIVE128 bne.w original_title129 cmpi.w #1,0xFFFFF84C130 bne.w original_title131 tst.w 0xFFFFF06C132 bne.w original_title133 tst.w %d0134 beq.s title_home135 cmpi.w #44,%d0136 bne.w original_title137 cmpi.w #1,0xFFFFC332138 bhi.w original_title139 bra.s title_valid140title_home:141 cmpi.w #1,0xFFFFC330142 bhi.w original_title143title_valid:144 movem.l %d0-%d7/%a0-%a6,-(%sp)145 move.w 0xFFFFBF78,-(%sp)146 bset #2,0xFFFFBF78147 move.w 0xFFFFB028,%d6148 move.w 0xFFFFB02A,%d7149 move.w 0xFFFFB02C,%d4150 lea 0xFFFFC330,%a0151 tst.w %d0152 beq.s title_side153 addq.l #2,%a0154title_side:155 lea title_a(%pc),%a1156 tst.w (%a0)157 beq.s draw_title158 lea title_b(%pc),%a1159draw_title:160 jsr 0x11BA4161 move.w %d6,0xFFFFB028162 move.w %d7,0xFFFFB02A163 addq.w #1,0xFFFFB02A164 lea title_blank(%pc),%a1165 jsr 0x11BA4166 move.w %d4,0xFFFFB02C167 move.w %d6,0xFFFFB028168 move.w %d7,0xFFFFB02A169 addq.w #2,0xFFFFB02A170 addi.w #11,0xFFFFB028171 subq.w #2,0xFFFFB02A172 move.w (%sp)+,0xFFFFBF78173 movem.l (%sp)+,%d0-%d7/%a0-%a6174 rts175original_title:176 movem.l %d0-%d2/%a0-%a1,-(%sp)177 move.w 0xFFFFBF78,-(%sp)178 jmp 0x8080179title_a:180 .word 13181 .ascii " ALLSTAR A "182 .even183title_b:184 .word 13185 .ascii " ALLSTAR B "186 .even187title_blank:188 .word 13189 .ascii " "190 .even191192| Native FE172 otherwise reads a fixed original-club rating. Selected Allstar193| teams display floor(mean of their26 native zero-hot/cold player overalls).194team_overall:195 .if WITH_REFINEMENTS196 move.l %d0,-(%sp)197 jsr 0x25800C | current transferred roster mean, or -1 for ordinary/Allstar198 tst.w %d0199 bmi.s refined_overall_fallback200 move.w %d0,2(%sp) | native getter changes only D0's low word201 move.l (%sp)+,%d0202 tst.w %d0 | exact native MOVE.w N/Z/V/C; preserve caller's X203 rts204refined_overall_fallback:205 move.l (%sp)+,%d0 | -1 sentinel must not replace the caller's high word206 .endif207 cmpi.w #1,ACTIVE208 bne.w original_overall209 cmpi.w #1,0xFFFFF84C210 bne.w original_overall211 tst.w 0xFFFFF06C212 bne.w original_overall213 cmpa.l #0xFFFFC6CE,%a2214 beq.s overall_cache215 cmpa.l #0xFFFFCA32,%a2216 bne.s original_overall217overall_cache:218 cmpi.l #0x22D000,0x1E(%a2)219 beq.s overall_a220 cmpi.l #0x22D800,0x1E(%a2)221 bne.s original_overall222 move.w 0x22CD6A,%d0223 rts224overall_a:225 move.w 0x22CD68,%d0226 rts227original_overall:228 movem.l %d1-%d7/%a0-%a6,-(%sp)229 move.w 0x28(%a2),%d0230 jmp 0xFE17A231