experimental/allstar.s

Download file

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