Release 2026-11-04-r2 · SHA256 f59e07a0791025fb40c448d526e8b8c41cce9c060c29bf5d44855a081db48bf9 · Click a line number for a direct link.
1| Private cosmetic preview: scoped VRAM/palette/UI scratch writes only; no game-rule or SRAM engine changes.2 .ifndef WITH_NATIVE_FOOTER_WIDTH3 .equ WITH_NATIVE_FOOTER_WIDTH,14 .endif5 .text6 .globl _start7_start:8 bra.w transfer9 bra.w center_footer10 bra.w common11 bra.w custom12 bra.w open_common13 bra.w close_common14 bra.w write_char15 bra.w footer_background16center_footer:17 movem.l %d0-%d1/%a0,-(%sp)18 move.w (%a1),%d019 subq.w #2,%d020center_trim:21 tst.w %d022 beq.w center_position23 tst.b 1(%a1,%d0.w)24 beq.w center_remove25 cmpi.b #32,1(%a1,%d0.w)26 bne.w center_position27center_remove:28 subq.w #1,%d029 bra.w center_trim30center_position:31 moveq #40,%d132 .if WITH_NATIVE_FOOTER_WIDTH33 | Native BF78 BYTE bit1 selects H32 (word mask0200). Other menus use H40.34 | Read the same native flag as credits/VDP mode setup; do not alter the mode.35 btst #1,0xFFFFBF7836 beq.s center_width_ready37 moveq #32,%d138center_width_ready:39 .endif40 sub.w %d0,%d141 lsr.w #1,%d142 move.w %d1,0xFFFFB02843 lea 0xFFFFF9A0,%a044 move.w %d0,%d145 addq.w #2,%d146 move.w %d1,(%a0)+47 addq.l #2,%a148 subq.w #1,%d049 bmi.w center_copied50center_copy:51 move.b (%a1)+,(%a0)+52 dbra %d0,center_copy53center_copied:54 clr.b (%a0)55 lea 0xFFFFF9A0,%a156 movem.l (%sp)+,%d0-%d1/%a057 rts58open_common:59 jsr restore_common60 movem.l %d0-%d1/%a2,-(%sp)61 jsr 0x10F3262 jmp 0x9BE063close_common:64 | Both native9CD8(fade) and9CDC(no fade, automatic/manual replay)65 | must enter here without overwriting either original public entry.66 jsr restore_common67 move.w 0xFFFFBF78,-(%sp)68 bset #2,0xFFFFBF7869 jmp 0x9CE670restore_common:71 move.w %sr,-(%sp)72 movem.l %d0-%d7/%a0-%a6,-(%sp)73 cmpi.l #0x47525931,0xFFFFF93874 bne.w restore_done75 ori.w #0x700,%sr76 cmpi.w #1,0xFFFFF93E77 bne.w restore_cards78 move.w 0xFFFFF93C,%d079 move.w %d0,0xFFFFBD6C80 move.l #0xC0440000,0xC0000481 move.w %d0,0xC0000082 move.w 0xFFFFF980,%d083 move.w %d0,0xFFFFBD6E84 move.l #0xC0460000,0xC0000485 move.w %d0,0xC0000086 move.w 0xFFFFF98E,%d087 move.w %d0,0xFFFFBD8E88 move.l #0xC0660000,0xC0000489 move.w %d0,0xC0000090 bra.w restore_clear91restore_cards:92 move.w 0xFFFFF994,%d093 move.w %d0,0xFFFFBD9A94 move.l #0xC0720000,0xC0000495 move.w %d0,0xC0000096 move.w #0x8F02,0xC0000497 move.l #0x4B800001,0xC0000498 lea 0xFFFFF940,%a099 moveq #15,%d0100restore_two_tiles:101 move.l (%a0)+,0xC00000102 dbra %d0,restore_two_tiles103restore_clear:104 clr.w 0xFFFFF990105 clr.l 0xFFFFF938106 clr.w 0xFFFFF93E107restore_done:108 movem.l (%sp)+,%d0-%d7/%a0-%a6109 move.w (%sp)+,%sr110 rts111common:112 move.w %sr,-(%sp)113 movem.l %d0-%d7/%a0-%a6,-(%sp)114 cmpi.w #0x408,0xFFFFB012115 bne.w common_done116 cmpi.w #0xF000,0xFFFFB00C117 bne.w common_done118 ori.w #0x700,%sr119 move.w #0x8F02,0xC00004120 move.l #0x30000003,0xC00004121 move.w 0xC00000,%d0122 andi.w #0x7FF,%d0123 cmpi.w #1,%d0124 beq.w common_detect125 cmpi.l #0x47525931,0xFFFFF938126 bne.w common_done127 bra.w common_done128common_detect:129 cmpi.l #0x47525931,0xFFFFF938130 beq.w common_refresh131 move.w 0xFFFFBD6C,0xFFFFF93C132 move.w 0xFFFFBD6E,0xFFFFF980133 move.w 0xFFFFBD8E,0xFFFFF98E134 move.w #1,0xFFFFF93E135 cmpi.w #0x41,0xFFFFB014136 beq.w common_tag137 move.w #2,0xFFFFF93E138 move.w 0xFFFFBD9A,0xFFFFF994139 move.w #0xEE,0xFFFFBD9A140 move.l #0xC0720000,0xC00004141 move.w #0xEE,0xC00000142 | 200..25B is restored by native9CD8/16CD2 (1E6..25B).143 | Save the only two extra glyph tiles25C..25D and restore them ourselves.144 move.l #0x0B800001,0xC00004145 lea 0xFFFFF940,%a0146 moveq #31,%d0147backup_two_tiles:148 move.w 0xC00000,(%a0)+149 dbra %d0,backup_two_tiles150common_tag:151 clr.w 0xFFFFF990152 | Native period statistics uses complete club palettes2/3. Identify its153 | original first logo's two map words, not a stale pause-menu selection.154 cmpi.w #1,0xFFFFF93E155 bne.w no_period_palette156 move.l #0x06040003,0xC00004157 move.w 0xC00000,%d0158 swap %d0159 move.w 0xC00000,%d0160 cmpi.l #0xE09FE0A0,%d0161 bne.w no_period_palette162 move.w #1,0xFFFFF990163no_period_palette:164 move.l #0x47525931,0xFFFFF938165common_refresh:166 move.w #0xE9,%d6167 move.w #0x2244,%d5168 lea common_art(%pc),%a0169 cmpi.w #1,0xFFFFF93E170 beq.w common_load_frame171 move.w #0x200,%d6172 move.w #0x61F0,%d5173 lea cards_art(%pc),%a0174common_load_frame:175 move.w %d5,%d0176 andi.l #0x7FF,%d0177 lsl.w #5,%d0178 bsr.w command179 moveq #71,%d0180upload_common_frame:181 move.l (%a0)+,0xC00000182 dbra %d0,upload_common_frame183 | Preserve complete native72-tile badges9F..E6; atlasesE9..1A4/1E6..243184 | and frame244..24C are restored by nativeclose.185 | Cards need that area for NHL26 art, so retain their protected200 atlas.186 move.w #0x408,%d7187 moveq #0,%d3188 moveq #0x23,%d4189 cmpi.w #2,0xFFFFF93E190 bne.w large_pattern_ready191 moveq #0x64,%d4192large_pattern_ready:193 bsr.w duplicate_font194 cmpi.w #1,0xFFFFF93E195 bne.w common_ready196 move.w #0x41,%d7197 move.w #0x147,%d6198 moveq #13,%d3199 moveq #0x32,%d4200 bsr.w duplicate_font201 move.w #0x41,%d7202 move.w #0x1E6,%d6203 moveq #13,%d3204 moveq #0x23,%d4205 bsr.w duplicate_font206 | Native yellow palette2/3 small letters also get a checker, never a flat fill.207 move.w #0x41,%d7208 move.w #0x41,%d6209 moveq #13,%d3210 moveq #0x23,%d4211 bsr.w duplicate_font212common_ready:213 move.w #0xE9,%d6214 move.w #0x2244,%d5215 cmpi.w #1,0xFFFFF93E216 bne.w ready_cards217 tst.w 0xFFFFF990218 bne.w ready_scan219 move.w #0x444,0xFFFFBD6C220 move.w #0x888,0xFFFFBD6E221 move.w #0x888,0xFFFFBD8E222 move.l #0xC0440000,0xC00004223 move.w #0x444,0xC00000224 move.w #0x888,0xC00000225 move.l #0xC0660000,0xC00004226 move.w #0x888,0xC00000227 bra.w ready_scan228ready_cards:229 move.w #0x200,%d6230 move.w #0x61F0,%d5231ready_scan:232 suba.w #80,%sp233 moveq #0,%d7234common_row:235 move.l #0xF000,%d0236 cmpi.w #24,%d7237 blo.w read_map_ready238 move.l #0xE000,%d0239read_map_ready:240 move.w %d7,%d1241 lsl.w #7,%d1242 add.l %d1,%d0243 bsr.w read_command244 movea.l %sp,%a0245 moveq #39,%d0246read_window:247 move.w 0xC00000,(%a0)+248 dbra %d0,read_window249 movea.l %sp,%a0250 moveq #0,%d4251common_cell:252 move.w (%a0),%d0253 move.w %d0,%d1254 andi.w #0x7FF,%d1255 cmpi.w #2,0xFFFFF93E256 bne.w cards_background_done257 cmpi.w #7,%d7258 blo.w cards_background_done259 cmpi.w #0xB7,%d1260 blo.w cards_background_done261 cmpi.w #0x114,%d1262 bls.w grey_background263 cmpi.w #0x157,%d1264 beq.w grey_background265 cmpi.w #0x158,%d1266 beq.w grey_background267cards_background_done:268 cmpi.w #24,%d7269 blo.w common_font_range270 cmpi.w #0x403,%d1271 beq.w grey_background272common_font_range:273 cmpi.w #0x408,%d1274 blo.w maybe_small275 cmpi.w #0x465,%d1276 bhi.w next_cell277 cmpi.w #24,%d7278 blo.w check_font_palette279 cmpi.w #0x403,%d1280 beq.w grey_background281check_font_palette:282 | Palette1's original black title/banners remain native. Body palette0,283 | yellow2 and alternate3 get the grey-backed white-font atlas.284 move.w %d0,%d2285 andi.w #0x6000,%d2286 cmpi.w #0x2000,%d2287 bne.w large_remap288 cmpi.w #24,%d7289 blo.w next_cell290large_remap:291 cmpi.w #2,0xFFFFF93E292 bne.w large_remap_attr_ready293 andi.w #0x9FFF,%d0294 ori.w #0x6000,%d0295large_remap_attr_ready:296 subi.w #0x408,%d1297 add.w %d6,%d1298 andi.w #0xF800,%d0299 or.w %d1,%d0300 move.w %d0,(%a0)301 bra.w next_cell302maybe_small:303 cmpi.w #1,0xFFFFF93E304 bne.w maybe_background305 cmpi.w #0x41,%d1306 blo.w maybe_background307 cmpi.w #0x9E,%d1308 bhi.w next_cell309 move.w %d0,%d2310 andi.w #0x6000,%d2311 cmpi.w #0x2000,%d2312 beq.w small_one313 tst.w %d2314 bne.w next_cell315 subi.w #0x41,%d1316 addi.w #0x1E6,%d1317 bra.w small_remap318small_one:319 subi.w #0x41,%d1320 addi.w #0x147,%d1321small_remap:322 andi.w #0xF800,%d0323 or.w %d1,%d0324 move.w %d0,(%a0)325 bra.w next_cell326maybe_background:327 cmpi.w #0x7FF,%d1328 beq.w grey_background329 cmpi.w #0x40,%d1330 bhi.w next_cell331grey_background:332 move.w %d0,%d2333 andi.w #0x8000,%d2334 | Native NHL texture cells and transparent blanks become the grey panel;335 | photos, club badges, lettering and existing title-frame cells stay intact.336 move.w %d5,%d0337 addq.w #3,%d0338 tst.w %d7339 bne.w grey_row340 move.w %d5,%d0341grey_row:342 cmpi.w #27,%d7343 bne.w grey_column344 move.w %d5,%d0345 addq.w #6,%d0346grey_column:347 tst.w %d4348 beq.w set_grey349 addq.w #2,%d0350 cmpi.w #39,%d4351 beq.w set_grey352 subq.w #1,%d0353set_grey:354 or.w %d2,%d0355 move.w %d0,(%a0)356next_cell:357 addq.l #2,%a0358 addq.w #1,%d4359 cmpi.w #40,%d4360 blo.w common_cell361 move.l #0xF000,%d0362 cmpi.w #24,%d7363 blo.w write_map_ready364 move.l #0xE000,%d0365write_map_ready:366 move.w %d7,%d1367 lsl.w #7,%d1368 add.l %d1,%d0369 bsr.w command370 movea.l %sp,%a0371 moveq #39,%d0372write_window:373 move.w (%a0)+,0xC00000374 dbra %d0,write_window375 addq.w #1,%d7376 cmpi.w #28,%d7377 blo.w common_row378 adda.w #80,%sp379 | Window is visible through row23. Its bottom edge belongs on fixed planeA380 | row24, above centred native help25/26. No rink plane is erased.381 move.l #0x6C000003,0xC00004382 move.w %d5,%d0383 ori.w #0x8000,%d0384 addq.w #6,%d0385 move.w %d0,0xC00000386 addq.w #1,%d0387 moveq #37,%d1388bottom_fill:389 move.w %d0,0xC00000390 dbra %d1,bottom_fill391 addq.w #1,%d0392 move.w %d0,0xC00000393 jsr 0x11952394common_done:395 movem.l (%sp)+,%d0-%d7/%a0-%a6396 move.w (%sp)+,%sr397 rts398write_char:399 add.w %d2,%d0400 movem.l %d1-%d2,-(%sp)401 cmpi.l #0x47525931,0xFFFFF938402 bne.w char_done403 move.w %d0,%d1404 andi.w #0x7FF,%d1405 cmpi.w #0x408,%d1406 blo.w char_small407 cmpi.w #0x465,%d1408 bhi.w char_done409 move.w %d0,%d2410 andi.w #0x6000,%d2411 cmpi.w #0x2000,%d2412 bne.w char_large413 cmpi.w #24,0xFFFFB02A414 blo.w char_done415char_large:416 subi.w #0x408,%d1417 addi.w #0xE9,%d1418 cmpi.w #2,0xFFFFF93E419 bne.w char_apply420 addi.w #0x117,%d1421 andi.w #0x9FFF,%d0422 ori.w #0x6000,%d0423 bra.w char_apply424char_small:425 cmpi.w #1,0xFFFFF93E426 bne.w char_done427 cmpi.w #0x41,%d1428 blo.w char_done429 cmpi.w #0x9E,%d1430 bhi.w char_done431 move.w %d0,%d2432 andi.w #0x6000,%d2433 cmpi.w #0x2000,%d2434 beq.w char_small_one435 tst.w %d2436 bne.w char_done437 subi.w #0x41,%d1438 addi.w #0x1E6,%d1439 bra.w char_apply440char_small_one:441 subi.w #0x41,%d1442 addi.w #0x147,%d1443char_apply:444 andi.w #0xF800,%d0445 or.w %d1,%d0446char_done:447 movem.l (%sp)+,%d1-%d2448 move.w %d0,(%a0)449 addq.w #1,0xFFFFB028450 jmp 0x11C5A451footer_background:452 cmpi.l #0x47525931,0xFFFFF938453 bne.w footer_bg_done454 movem.l %d0-%d7,-(%sp)455 move.w #0xA244,%d5456 cmpi.w #2,0xFFFFF93E457 bne.w footer_bg_normal458 move.w #0xE1F0,%d5459footer_bg_normal:460 moveq #24,%d7461footer_bg_row:462 move.l #0xE000,%d0463 move.w %d7,%d1464 lsl.w #7,%d1465 add.l %d1,%d0466 bsr.w command467 move.w %d5,%d3468 addq.w #3,%d3469 cmpi.w #24,%d7470 beq.w footer_bg_bottom471 cmpi.w #27,%d7472 bne.w footer_bg_inside473footer_bg_bottom:474 addq.w #3,%d3475footer_bg_inside:476 move.w %d3,0xC00000477 addq.w #1,%d3478 moveq #37,%d4479footer_bg_fill:480 move.w %d3,0xC00000481 dbra %d4,footer_bg_fill482 move.w %d5,%d3483 addq.w #5,%d3484 cmpi.w #24,%d7485 beq.w footer_edge_bottom486 cmpi.w #27,%d7487 bne.w footer_edge_ready488footer_edge_bottom:489 addq.w #3,%d3490footer_edge_ready:491 move.w %d3,0xC00000492 addq.w #1,%d7493 cmpi.w #28,%d7494 blo.w footer_bg_row495 movem.l (%sp)+,%d0-%d7496footer_bg_done:497 rts498duplicate_font:499 suba.w #32,%sp500 movea.w #94,%a3501 lea card_foremap(%pc),%a4502copy_glyph:503 move.w %d7,%d0504 andi.l #0xFFFF,%d0505 lsl.w #5,%d0506 bsr.w read_command507 movea.l %sp,%a0508 moveq #15,%d0509read_glyph:510 move.w 0xC00000,(%a0)+511 dbra %d0,read_glyph512 movea.l %sp,%a0513 moveq #31,%d2514replace_background:515 move.w %d4,%d5516 btst #2,%d2517 bne.w pattern_row_ready518 ror.b #4,%d5519pattern_row_ready:520 move.b (%a0),%d0521 move.w %d0,%d1522 lsr.w #4,%d1523 andi.w #15,%d1524 cmp.w %d3,%d1525 beq.w upper_pattern526 cmpi.w #2,0xFFFFF93E527 bne.w upper_present528 move.b (%a4,%d1.w),%d1529 lsl.w #4,%d1530 andi.b #15,%d0531 or.b %d1,%d0532 bra.w upper_present533upper_pattern:534 andi.b #15,%d0535 move.w %d5,%d1536 andi.b #0xF0,%d1537 or.b %d1,%d0538upper_present:539 move.w %d0,%d1540 andi.w #15,%d1541 cmp.w %d3,%d1542 beq.w lower_pattern543 cmpi.w #2,0xFFFFF93E544 bne.w lower_present545 move.b (%a4,%d1.w),%d1546 andi.b #0xF0,%d0547 or.b %d1,%d0548 bra.w lower_present549lower_pattern:550 andi.b #0xF0,%d0551 move.w %d5,%d1552 andi.b #15,%d1553 or.b %d1,%d0554lower_present:555 move.b %d0,(%a0)+556 dbra %d2,replace_background557 move.w %d6,%d0558 andi.l #0xFFFF,%d0559 lsl.w #5,%d0560 bsr.w command561 movea.l %sp,%a0562 moveq #7,%d0563write_glyph:564 move.l (%a0)+,0xC00000565 dbra %d0,write_glyph566 addq.w #1,%d7567 addq.w #1,%d6568 subq.l #1,%a3569 cmpa.w #0,%a3570 bne.w copy_glyph571 adda.w #32,%sp572 rts573card_foremap:574 .byte 0,8,5,4,2,1,10,9,8,9,10,11,12,13,14,15575 .even576read_command:577 move.l %d0,%d1578 andi.l #0x3FFF,%d0579 swap %d0580 lsr.l #8,%d1581 lsr.l #6,%d1582 andi.l #3,%d1583 or.l %d1,%d0584 move.l %d0,0xC00004585 rts586custom:587 move.w %sr,-(%sp)588 movem.l %d0-%d7/%a0-%a6,-(%sp)589 ori.w #0x700,%sr590 | Native tile0/glyph transparency in the custom canvas now reveals grey,591 | not the old blue backdrop. Native palette loading restores this on exit.592 move.w #0x444,0xFFFFBD28593 move.l #0xC0000000,0xC00004594 move.w #0x444,0xC00000595 move.w #0x8F02,0xC00004596 move.l #0x60000002,0xC00004597 lea custom_art(%pc),%a0598 move.w #71,%d0599custom_upload:600 move.l (%a0)+,0xC00000601 dbra %d0,custom_upload602 moveq #0,%d7603custom_row:604 move.l #0xC000,%d0605 move.w %d7,%d1606 lsl.w #8,%d1607 add.l %d1,%d0608 bsr.w command609 move.w #0x503,%d3610 tst.w %d7611 bne.w custom_not_top612 move.w #0x500,%d3613custom_not_top:614 cmpi.w #27,%d7615 bne.w custom_type616 move.w #0x506,%d3617custom_type:618 move.w %d3,0xC00000619 addq.w #1,%d3620 moveq #37,%d4621custom_inside:622 move.w %d3,0xC00000623 dbra %d4,custom_inside624 addq.w #1,%d3625 move.w %d3,0xC00000626 addq.w #1,%d7627 cmpi.w #28,%d7628 blo.w custom_row629 jsr 0x11952630 movem.l (%sp)+,%d0-%d7/%a0-%a6631 move.w (%sp)+,%sr632 rts633transfer:634 move.w %sr,-(%sp)635 movem.l %d0-%d7/%a0-%a6,-(%sp)636 ori.w #0x700,%sr637 move.w #0x8F02,0xC00004638 move.l #0x60000002,0xC00004639 lea transfer_art(%pc),%a0640 move.w #79,%d0641upload:642 move.l (%a0)+,0xC00000643 dbra %d0,upload644 moveq #0,%d7645row:646 move.l #0xE000,%d0647 move.w %d7,%d1648 lsl.w #8,%d1649 add.l %d1,%d0650 bsr.w command651 move.w #0x503,%d3652 tst.w %d7653 bne.w not_top654 move.w #0x500,%d3655not_top:656 cmpi.w #27,%d7657 bne.w row_type658 move.w #0x506,%d3659row_type:660 move.w %d3,0xC00000661 addq.w #1,%d3662 moveq #37,%d4663inside:664 move.w %d3,0xC00000665 dbra %d4,inside666 addq.w #1,%d3667 move.w %d3,0xC00000668 addq.w #1,%d7669 cmpi.w #28,%d7670 blo.w row671 | Keep the native selected marker; a darker grey band adds contrast.672 move.w 0xFFFFF104,%d1673 tst.w 0xFFFFF102674 bne.w roster675 mulu.w #3,%d1676 addi.w #10,%d1677 bra.w band678roster:679 tst.w 0xFFFFF10C680 beq.w done681 sub.w 0xFFFFF10E,%d1682 add.w %d1,%d1683 addi.w #9,%d1684band:685 lsl.w #8,%d1686 move.l #0xE002,%d0687 add.l %d1,%d0688 bsr.w command689 moveq #37,%d4690band_loop:691 move.w #0x504,0xC00000692 dbra %d4,band_loop693done:694 jsr 0x11952695 movem.l (%sp)+,%d0-%d7/%a0-%a6696 move.w (%sp)+,%sr697 rts698command:699 move.l %d0,%d1700 andi.l #0x3FFF,%d0701 swap %d0702 lsr.l #8,%d1703 lsr.l #6,%d1704 andi.l #3,%d1705 or.l %d1,%d0706 ori.l #0x40000000,%d0707 move.l %d0,0xC00004708 rts709 .even710transfer_art:711 .byte 0x22,0x22,0x22,0x22,0x23,0x33,0x33,0x33,0x23,0x55,0x55,0x55,0x23,0x55,0x55,0x55712 .byte 0x23,0x55,0x55,0x55,0x23,0x55,0x57,0x77,0x23,0x55,0x57,0xB7,0x23,0x55,0x57,0x7B713 .byte 0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x33,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55714 .byte 0x55,0x55,0x55,0x55,0x77,0x77,0x77,0x77,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B715 .byte 0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x52,0x55,0x55,0x55,0x72,0x55,0x55,0x55,0x72716 .byte 0x55,0x55,0x55,0x72,0x77,0x75,0x55,0x72,0xB7,0x35,0x55,0x72,0x7B,0x35,0x55,0x72717 .byte 0x23,0x55,0x57,0xB7,0x23,0x55,0x57,0x7B,0x23,0x55,0x57,0xB7,0x23,0x55,0x57,0x7B718 .byte 0x23,0x55,0x57,0xB7,0x23,0x55,0x57,0x7B,0x23,0x55,0x57,0xB7,0x23,0x55,0x57,0x7B719 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B720 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B721 .byte 0xB7,0x35,0x55,0x72,0x7B,0x35,0x55,0x72,0xB7,0x35,0x55,0x72,0x7B,0x35,0x55,0x72722 .byte 0xB7,0x35,0x55,0x72,0x7B,0x35,0x55,0x72,0xB7,0x35,0x55,0x72,0x7B,0x35,0x55,0x72723 .byte 0x23,0x55,0x57,0xB7,0x23,0x55,0x57,0x7B,0x23,0x55,0x57,0x33,0x23,0x55,0x55,0x55724 .byte 0x23,0x55,0x55,0x55,0x23,0x55,0x55,0x55,0x25,0x77,0x77,0x77,0x22,0x22,0x22,0x22725 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0x33,0x33,0x33,0x33,0x55,0x55,0x55,0x55726 .byte 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x77,0x77,0x77,0x77,0x22,0x22,0x22,0x22727 .byte 0xB7,0x35,0x55,0x72,0x7B,0x35,0x55,0x72,0x33,0x35,0x55,0x72,0x55,0x55,0x55,0x72728 .byte 0x55,0x55,0x55,0x72,0x55,0x55,0x55,0x72,0x77,0x77,0x77,0x72,0x22,0x22,0x22,0x22729 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B730 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B731732 card_greys: .word 0x444,0xCCC,0x888,0x666,0x444,0x222733 common_art:734 .byte 0x77,0x77,0x77,0x77,0x71,0x11,0x11,0x11,0x71,0x22,0x22,0x22,0x71,0x22,0x22,0x22735 .byte 0x71,0x22,0x22,0x22,0x71,0x22,0x22,0x22,0x71,0x22,0x22,0x32,0x71,0x22,0x22,0x23736 .byte 0x77,0x77,0x77,0x77,0x11,0x11,0x11,0x11,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22737 .byte 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x32,0x32,0x32,0x32,0x23,0x23,0x23,0x23738 .byte 0x77,0x77,0x77,0x77,0x11,0x11,0x11,0x27,0x22,0x22,0x22,0x27,0x22,0x22,0x22,0x27739 .byte 0x22,0x22,0x22,0x27,0x22,0x22,0x22,0x27,0x32,0x12,0x22,0x27,0x23,0x12,0x22,0x27740 .byte 0x71,0x22,0x22,0x32,0x71,0x22,0x22,0x23,0x71,0x22,0x22,0x32,0x71,0x22,0x22,0x23741 .byte 0x71,0x22,0x22,0x32,0x71,0x22,0x22,0x23,0x71,0x22,0x22,0x32,0x71,0x22,0x22,0x23742 .byte 0x32,0x32,0x32,0x32,0x23,0x23,0x23,0x23,0x32,0x32,0x32,0x32,0x23,0x23,0x23,0x23743 .byte 0x32,0x32,0x32,0x32,0x23,0x23,0x23,0x23,0x32,0x32,0x32,0x32,0x23,0x23,0x23,0x23744 .byte 0x32,0x12,0x22,0x27,0x23,0x12,0x22,0x27,0x32,0x12,0x22,0x27,0x23,0x12,0x22,0x27745 .byte 0x32,0x12,0x22,0x27,0x23,0x12,0x22,0x27,0x32,0x12,0x22,0x27,0x23,0x12,0x22,0x27746 .byte 0x71,0x22,0x22,0x32,0x71,0x22,0x22,0x23,0x71,0x22,0x22,0x11,0x71,0x22,0x22,0x22747 .byte 0x71,0x22,0x22,0x22,0x71,0x22,0x22,0x22,0x72,0x22,0x22,0x22,0x77,0x77,0x77,0x77748 .byte 0x32,0x32,0x32,0x32,0x23,0x23,0x23,0x23,0x11,0x11,0x11,0x11,0x22,0x22,0x22,0x22749 .byte 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x77,0x77,0x77,0x77750 .byte 0x32,0x12,0x22,0x27,0x23,0x12,0x22,0x27,0x11,0x12,0x22,0x27,0x22,0x22,0x22,0x27751 .byte 0x22,0x22,0x22,0x27,0x22,0x22,0x22,0x27,0x22,0x22,0x22,0x27,0x77,0x77,0x77,0x77752753 cards_art:754 .byte 0x88,0x88,0x88,0x88,0x82,0x22,0x22,0x22,0x82,0x33,0x33,0x33,0x82,0x33,0x33,0x33755 .byte 0x82,0x33,0x33,0x33,0x82,0x33,0x34,0x44,0x82,0x33,0x34,0x64,0x82,0x33,0x34,0x46756 .byte 0x88,0x88,0x88,0x88,0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33757 .byte 0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44,0x64,0x64,0x64,0x64,0x46,0x46,0x46,0x46758 .byte 0x88,0x88,0x88,0x88,0x22,0x22,0x22,0x38,0x33,0x33,0x33,0x48,0x33,0x33,0x33,0x48759 .byte 0x33,0x33,0x33,0x48,0x44,0x43,0x33,0x48,0x64,0x23,0x33,0x48,0x46,0x23,0x33,0x48760 .byte 0x82,0x33,0x34,0x64,0x82,0x33,0x34,0x46,0x82,0x33,0x34,0x64,0x82,0x33,0x34,0x46761 .byte 0x82,0x33,0x34,0x64,0x82,0x33,0x34,0x46,0x82,0x33,0x34,0x64,0x82,0x33,0x34,0x46762 .byte 0x64,0x64,0x64,0x64,0x46,0x46,0x46,0x46,0x64,0x64,0x64,0x64,0x46,0x46,0x46,0x46763 .byte 0x64,0x64,0x64,0x64,0x46,0x46,0x46,0x46,0x64,0x64,0x64,0x64,0x46,0x46,0x46,0x46764 .byte 0x64,0x23,0x33,0x48,0x46,0x23,0x33,0x48,0x64,0x23,0x33,0x48,0x46,0x23,0x33,0x48765 .byte 0x64,0x23,0x33,0x48,0x46,0x23,0x33,0x48,0x64,0x23,0x33,0x48,0x46,0x23,0x33,0x48766 .byte 0x82,0x33,0x34,0x64,0x82,0x33,0x34,0x46,0x82,0x33,0x34,0x22,0x82,0x33,0x33,0x33767 .byte 0x82,0x33,0x33,0x33,0x82,0x33,0x33,0x33,0x83,0x44,0x44,0x44,0x88,0x88,0x88,0x88768 .byte 0x64,0x64,0x64,0x64,0x46,0x46,0x46,0x46,0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x33769 .byte 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44,0x88,0x88,0x88,0x88770 .byte 0x64,0x23,0x33,0x48,0x46,0x23,0x33,0x48,0x22,0x23,0x33,0x48,0x33,0x33,0x33,0x48771 .byte 0x33,0x33,0x33,0x48,0x33,0x33,0x33,0x48,0x44,0x44,0x44,0x48,0x88,0x88,0x88,0x88772773 .even774custom_art:775 .byte 0x35,0x33,0x33,0x33,0x55,0x55,0x55,0x55,0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B776 .byte 0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B,0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B777 .byte 0x33,0x33,0x33,0x33,0x55,0x55,0x55,0x55,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B778 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B779 .byte 0x33,0x33,0x33,0x72,0x55,0x55,0x55,0x72,0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72780 .byte 0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72,0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72781 .byte 0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B,0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B782 .byte 0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B,0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B783 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B784 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B785 .byte 0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72,0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72786 .byte 0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72,0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72787 .byte 0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B,0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B788 .byte 0x35,0xB7,0xB7,0xB7,0x35,0x7B,0x7B,0x7B,0x77,0x77,0x77,0x77,0x22,0x22,0x22,0x22789 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B790 .byte 0xB7,0xB7,0xB7,0xB7,0x7B,0x7B,0x7B,0x7B,0x77,0x77,0x77,0x77,0x22,0x22,0x22,0x22791 .byte 0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72,0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72792 .byte 0xB7,0xB7,0xB7,0x72,0x7B,0x7B,0x7B,0x72,0x77,0x77,0x77,0x77,0x22,0x22,0x22,0x72793