PUSHS UNION "Screen Variables", WRAM0[SCREEN_VARS_START] vAnimationFrame: db ;def vAnimationFrame EQU SCREEN_VARS_START vState: db ;def vState EQU vAnimationFrame+1 vCurrentAnimation: dw ;def vCurrentAnimation EQU vState+1 ; 2 bytes vShuffleIndex: db ;def vShuffleIndex equ vCurrentAnimation+2 vShuffleTime: dw ;def vShuffleTime equ vShuffleIndex+1 ; 2 bytes vShuffleCount: db def cShuffleMax equ 9 ; the number of times you have to shuffle before you've "fully shuffled" POPS def S_Center = 0 def S_RightOut = 1 def S_Right = 2 def S_RightIn = 3 def S_LeftOut = 4 def S_Left = 5 def S_LeftIn = 6 def S_UpOut = 7 def S_Up = 8 def S_UpIn = 9 def S_DownOut = 10 def S_Down = 11 def S_DownIn = 12 ScreenShuffle: dw ShuffleSetup dw ShuffleUpdate dw ShuffleDraw dw ShuffleTeardown ShuffleSetup: ld a, [SHUFFLED_DECK] dec a ld [vShuffleIndex], a ld a, 0 ld [vAnimationFrame], a ld [vShuffleCount], a ld a, S_Center ld [vState], a ld hl, .asyncTask call Async_Spawn_HL ld hl, ZEROES ld de, MY_OAM ld bc, $100 call CopyRange ret .asyncTask ld hl, ONES ; origin ld de, _SCRN0 ; destination ld b, 18 ; height ld c, 20 ; width call CopyTilesToMap ld hl, Shuffle.BigCard ld de, _SCRN0 + 32*4 + 7 ld b, 10 ld c, 6 call CopyTilesToMap ld hl, Shuffle.ShuffledEdges ld de, _SCRN0 + 32*5 + 7 ld b, 8 ld c, 1 call CopyTilesToMap ld hl, Shuffle.ShuffledEdges + 8 ld de, _SCRN0 + 32*5 + 12 ld b, 8 ld c, 1 call CopyTilesToMap ; draw left arrow ld a, VARIABLE_TILES_START + 18 ld [_SCRN0 + 32*8 + 3], a ld a, VARIABLE_TILES_START + 20 ld [_SCRN0 + 32*9 + 3], a ; right arrow ld a, VARIABLE_TILES_START + 19 ld [_SCRN0 + 32*8 + 16], a ld a, VARIABLE_TILES_START + 21 ld [_SCRN0 + 32*9 + 16], a ; up arrow ld a, VARIABLE_TILES_START + 22 ld [_SCRN0 + 32*2 + 9], a ld a, VARIABLE_TILES_START + 23 ld [_SCRN0 + 32*2 + 10], a ; down arrow ld a, VARIABLE_TILES_START + 24 ld [_SCRN0 + 32*15 + 9], a ld a, VARIABLE_TILES_START + 25 ld [_SCRN0 + 32*15 + 10], a ld hl, Shuffle.UITileData ld de, _VRAM + $1000 + VARIABLE_TILES_START*16 ld bc, Shuffle.UITileDataEnd - Shuffle.UITileData call CopyRange ret ShuffleUpdate: ; incrrement vShuffleTime so we can use it for seeding RNG ld hl, vShuffleTime call IncrementTimer call ScrollBackgroundTile ld a, [rMYBTNP] cp a, 0 jr z, .doneWithButtons ld a, [rLFSR] ld [rLFSR+1], a ; lfsr = (lfsr << 8) + (vShuffleTime & $ff) ld a, [vShuffleTime] ld [rLFSR], a ; check for A button press and change scene ld hl, rMYBTNP bit 5, [hl] jp z, .doneWithB ld hl, ScreenMainMenu call ChangeScene ret .doneWithB call ShuffleButtonHandler .doneWithButtons call ShufflePickAnimation ld a, [vAnimationFrame] inc a ld [vAnimationFrame], a cp a, [hl] call z, ShuffleAdvanceState call ShufflePickAnimation ld a, [vAnimationFrame] call ArrayClamp ld [vAnimationFrame], a call ShufflePickAnimation call ShuffleAnimate ret ShuffleButtonHandler: ld a, [vState] cp a, S_Center jp z, CenterButtonHandler ld a, [vState] cp a, S_Right jp z, RightButtonHandler ld a, [vState] cp a, S_RightOut jp z, RightButtonHandler ld a, [vState] cp a, S_RightIn jp z, CenterButtonHandler ld a, [vState] cp a, S_Left jp z, LeftButtonHandler ld a, [vState] cp a, S_LeftOut jp z, LeftButtonHandler ld a, [vState] cp a, S_LeftIn jp z, CenterButtonHandler ld a, [vState] cp a, S_Up jp z, UpButtonHandler ld a, [vState] cp a, S_UpOut jp z, UpButtonHandler ld a, [vState] cp a, S_UpIn jp z, CenterButtonHandler ld a, [vState] cp a, S_Down jp z, DownButtonHandler ld a, [vState] cp a, S_DownOut jp z, DownButtonHandler ld a, [vState] cp a, S_DownIn jp z, CenterButtonHandler ret CenterButtonHandler: ld hl, rMYBTNP : bit 0, [hl] jp z, :+ ld a, S_RightOut ld [vState], a : bit 1, [hl] jp z, :+ ld a, S_LeftOut ld [vState], a : bit 2, [hl] jp z, :+ ld a, S_UpOut ld [vState], a : bit 3, [hl] jp z, :+ ld a, S_DownOut ld [vState], a : ret RightButtonHandler: ld hl, rMYBTNP : bit 1, [hl] jp z, :+ call DoSomeShuffling ; shuffle whenever we move into an inward state ld a, S_RightIn ld [vState], a : ret LeftButtonHandler: ld hl, rMYBTNP : bit 0, [hl] jp z, :+ call DoSomeShuffling ld a, S_LeftIn ld [vState], a : ret UpButtonHandler: ld hl, rMYBTNP : bit 3, [hl] jp z, :+ call DoSomeShuffling ld a, S_UpIn ld [vState], a : ret DownButtonHandler: ld hl, rMYBTNP : bit 2, [hl] jp z, :+ call DoSomeShuffling ld a, S_DownIn ld [vState], a : ret ShuffleAdvanceState: ld a, [vState] ld hl, ShuffleNextStates + 1 ld b, 0 ld c, a add hl, bc ld a, [hl] ld [vState], a ld a, 0 ld [vAnimationFrame], a ret ShufflePickAnimation: ld a, [vState] ld b, 0 ld c, a ld hl, ShuffleAnimations + 1 add hl, bc add hl, bc ld c, [hl] inc hl ld b, [hl] ld h, b ld l, c ret ShuffleAnimate: ; hl has to hold the address of the animation inc hl ld b, 0 ld a, [vAnimationFrame] ld c, a add hl, bc add hl, bc ; two bytes per entry ; hl points to xy offsets ld b, [hl] inc hl ld c, [hl] ld a, 32 ld e, a ld hl, MY_OAM call DrawWholeCard ; hl memory location, b y, c x, e width, d wiggle ld a, [vState] cp a, S_RightIn jp z, HideSprites cp a, S_LeftIn jp z, HideSprites cp a, S_UpIn jp z, HideSprites cp a, S_DownIn jp z, HideSprites call ShowSprites ret HideSprites: ld hl, MY_OAM .testTile ld a, [hl] cp a, (2+4)*8 ; y < 5*8 => skip jp c, .goToNextTile cp a, (2+5+8)*8 ; y > (5+8)*8 => skip jp nc, .goToNextTile inc hl ld a, [hl] ; x value dec hl cp a, (1+7)*8 ; x < 7*8 => skip jp c, .goToNextTile cp a, (1+12)*8 ; x > 12*8 => skip jp nc, .goToNextTile inc hl inc hl inc hl set OAMB_PRI, [hl] dec hl dec hl dec hl .goToNextTile inc hl inc hl inc hl inc hl ld a, $A0 cp a, l jp nz, .testTile ret ShowSprites: ld hl, MY_OAM .loop inc hl inc hl inc hl res OAMB_PRI, [hl] inc hl ld a, $A0 cp a, l jp nz, .loop ret ShuffleDraw: ld a, [vCurrentBackgroundTile] ld l, a ld a, [vCurrentBackgroundTile+1] ld h, a ld de, _VRAM + $1000 + 1*16 call CopyOneTileData ld de, SAFE_DMA_LOCATION ld a, HIGH(MY_OAM) call RunDMA ret ShuffleTeardown: ret DoSomeShuffling: call OneSwap call OneSwap call OneSwap call OneSwap call OneSwap call OneSwap call OneSwap call OneSwap call OneSwap call OneSwap; 10 shuffles ld hl, vShuffleCount inc [hl] ld hl, vAsyncIsBusy xor a, a cp a, [hl] ld hl, .asyncTask call z, Async_Spawn_HL ret .asyncTask ld hl, vShuffleCount ld a, cShuffleMax cp a, [hl] jr nc, .drawFrame ; if shufflemax-shufflecount doesn't carry, then draw a frame of animation ret c ; if shufflemax - shufflecount does carry, then we don't have to draw anything .drawFrame ld a, [vShuffleCount] ld hl, Shuffle.ShuffledEdges ld bc, 16 : ; step forward by 16, vShuffleCount times add hl, bc dec a jr nz, :- ; hl now points to the appropriate starting Shuffle Edge ld de, _SCRN0 + 32*5 + 7 ld b, 8 ld c, 1 call CopyTilesToMap ; now do the same thing but stepped forward 8 tiles to draw the right sides of the things ld a, [vShuffleCount] ld hl, Shuffle.ShuffledEdges + 8 ld bc, 16 : ; step forward by 16, vShuffleCount times add hl, bc dec a jr nz, :- ; hl now points to the appropriate starting Shuffle Edge ld de, _SCRN0 + 32*5 + 12 ld b, 8 ld c, 1 call CopyTilesToMap ld hl, vShuffleCount ld a, cShuffleMax cp a, [hl] ret nz ld hl, Shuffle.ShuffledPopup ld de, _SCRN0 + 32*15 + 5 ld b, 3 ld c, 11 call CopyTilesToMap ld hl, Shuffle.ShuffledText ld de, _SCRN0 + 32*16 + 6 call PrintString ret OneSwap: ; shuffles once and decrements vshuffleindex ; vShuffleIndex holds the index of the next card to swap with something ld a, [vShuffleIndex] cp a, 1 jp z, .zeroIndex ; if we're swapping index 1 with index 0 skip it ld d, a dec d ; this holds the highest index we could want to swap with call RandomUnderD ; takes d as limit (inclusive) ld e, a ; shuffle 2 is randint(vshuffleindex-1) ld c, d ; shuffle 1 is vshuffleindex ld hl, SHUFFLED_DECK call SwapCards ; arguments c and e as indices to swap, hl as array in memory call ClockLFSR ld a, [vShuffleIndex] ld b, 0 ld c, a ld hl, DECK_FLIPS+1 add hl, bc ld a, [rLFSR] and a, %10000000 ld [hl], a ld a, [vShuffleIndex] dec a ld [vShuffleIndex], a ; decrement vshuffleindex so the next time around ; we do the next step of the shuffle ret .zeroIndex ld a, [SHUFFLED_DECK] dec a ld [vShuffleIndex], a ret ShuffleNextStates: db 13, db S_Center db S_Right ;def S_RightOut = 1 db S_Right ; def S_Right = 2 db S_Center ;def S_RightIn = 3 db S_Left ;def S_LeftOut = 4 db S_Left ;def S_Left = 5 db S_Center ;def S_LeftIn = 6 db S_Up ;def S_UpOut = 7 db S_Up ;def S_Up = 8 db S_Center ;def S_UpIn = 9 db S_Down ;def S_DownOut = 10 db S_Down ;def S_Down = 11 db S_Center ;def S_DownIn = 12 ShuffleAnimations: db 13, dw ShuffleAnimationNone ; def S_Center = 0 dw ShuffleAnimationRightOut ;def S_RightOut = 1 dw ShuffleAnimationRight ; def S_Right = 2 dw ShuffleAnimationRightIn ;def S_RightIn = 3 dw ShuffleAnimationLeftOut ;def S_LeftOut = 4 dw ShuffleAnimationLeft ;def S_Left = 5 dw ShuffleAnimationLeftIn ;def S_LeftIn = 6 dw ShuffleAnimationUpOut ;def S_UpOut = 7 dw ShuffleAnimationUp ;def S_Up = 8 dw ShuffleAnimationUpIn ;def S_UpIn = 9 dw ShuffleAnimationDownOut ;def S_DownOut = 10 dw ShuffleAnimationDown ;def S_Down = 11 dw ShuffleAnimationDownIn ;def S_DownIn = 12 ShuffleAnimationNone: db 1, 56, 72 ShuffleAnimationRight: db 1, 56, 117 ShuffleAnimationRightOut: db 9, 56, 72, 56, 80, 56, 88, 56, 96, 56, 103, 56, 108, 56, 112, 56, 116, 56, 117, ShuffleAnimationRightIn: db 8, 56, 115, 56, 104, 56, 96, 56, 88, 56, 80, 56, 76, 56, 73, 56, 72, ShuffleAnimationLeft: db 1, 56, 27 ShuffleAnimationLeftOut: db 9, 56, 72, 56, 64, 56, 56, 56, 49, 56, 42, 56, 36, 56, 33, 56, 29, 56, 28, ShuffleAnimationLeftIn: db 8, 56, 32, 56, 40, 56, 49, 56, 57, 56, 62, 56, 67, 56, 71, 56, 72, ShuffleAnimationUp: db 1, -24, 72 ShuffleAnimationUpOut: db 13, 56, 72, 48, 72, 40, 72, 32, 72, 24, 72, 16, 72, 8, 72, 0, 72, -7, 72, -14, 72, -18, 72, -23, 72, -24, 72 ShuffleAnimationUpIn: db 10, 1, 72, 8, 72, 16, 72, 24, 72, 32, 72, 40, 72, 46, 72, 52, 72, 55, 72, 56, 72, ShuffleAnimationDown: db 1, 136, 72 ShuffleAnimationDownOut: db 13, 56, 72, 64, 72, 72, 72, 80, 72, 88, 72, 96, 72, 105, 72, 112, 72, 119, 72, 125, 72, 129, 72, 134, 72, 136, 72, ShuffleAnimationDownIn: db 12, 136, 72, 128, 72, 120, 72, 112, 72, 104, 72, 96, 72, 88, 72, 80, 72, 68, 72, 61, 72, 58, 72, 56, 72, Shuffle.UITileData: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$ff,$3f,$ff,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0 db $00,$ff,$ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$ff,$fc,$ff,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03 db $40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0 db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$aa,$aa,$55,$55,$aa db $00,$ff,$fe,$ff,$fe,$ff,$06,$ff,$f6,$ff,$56,$bf,$b6,$5f,$56,$bf db $02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03 db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa db $b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf db $6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff,$60,$ff,$7f,$ff,$7f,$ff,$00,$ff db $aa,$55,$55,$aa,$aa,$55,$ff,$ff,$00,$ff,$ff,$ff,$ff,$ff,$00,$ff db $b6,$5f,$56,$bf,$b6,$5f,$f6,$ff,$06,$ff,$fe,$ff,$fe,$ff,$00,$ff db $40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$3f,$ff,$00,$ff db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff,$00,$ff db $02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$fc,$ff,$00,$ff db $60,$1f,$ce,$3f,$d2,$33,$92,$73,$a2,$63,$22,$e3,$4a,$cb,$5a,$db db $06,$f8,$73,$fc,$4b,$cc,$49,$ce,$45,$c6,$44,$c7,$52,$d3,$5a,$db db $5a,$db,$4a,$cb,$22,$e3,$a2,$63,$92,$73,$d2,$33,$ce,$3f,$60,$1f db $5a,$db,$52,$d3,$44,$c7,$45,$c6,$49,$ce,$4b,$cc,$73,$fc,$06,$f8 db $78,$07,$e3,$1f,$8c,$7c,$31,$f1,$43,$c3,$40,$c0,$7f,$ff,$00,$ff db $1e,$e0,$c7,$f8,$31,$3e,$8c,$8f,$c2,$c3,$02,$03,$fe,$ff,$00,$ff db $00,$ff,$7f,$ff,$40,$c0,$43,$c3,$31,$f1,$8c,$7c,$e3,$1f,$78,$07 db $00,$ff,$fe,$ff,$02,$03,$c2,$c3,$8c,$8f,$31,$3e,$c7,$f8,$1e,$e0 db $40,$c7,$47,$ff,$5f,$ff,$1c,$ff,$5b,$ff,$5b,$fe,$6a,$ff,$6b,$fe db $02,$ff,$ec,$ff,$ee,$ff,$e6,$ff,$66,$ff,$6c,$ff,$6c,$ff,$6c,$ff db $40,$c0,$40,$c0,$40,$c7,$07,$ff,$7f,$ff,$7c,$ff,$63,$ff,$6f,$fe db $02,$ff,$fc,$ff,$fe,$ff,$06,$ff,$f6,$ff,$ac,$7f,$6c,$bf,$ac,$7f db $02,$ff,$fc,$ff,$fe,$ff,$06,$ff,$f6,$ff,$ac,$7f,$6c,$bf,$ec,$7f db $40,$c0,$40,$c0,$40,$c3,$41,$c3,$41,$c3,$41,$c3,$41,$c3,$41,$c3 db $2d,$ff,$2d,$ff,$2d,$ff,$2d,$ff,$2d,$ff,$2d,$ff,$26,$ff,$36,$ff db $6a,$ff,$60,$ff,$6c,$ff,$6e,$ff,$66,$ff,$6c,$ff,$ec,$ff,$ec,$ff db $2a,$fd,$2d,$fe,$36,$fd,$35,$fe,$36,$fd,$35,$fe,$36,$fd,$35,$fe db $0a,$ff,$f0,$ff,$fc,$ff,$0e,$ff,$e6,$ff,$ac,$7f,$6c,$bf,$ac,$7f db $5a,$ff,$da,$7f,$5a,$ff,$da,$7f,$da,$ff,$b2,$fb,$b2,$fb,$b2,$fb db $41,$c3,$41,$c3,$41,$c3,$41,$c3,$43,$c7,$43,$c7,$43,$c7,$43,$c7 db $36,$ff,$36,$ff,$57,$ff,$57,$ff,$57,$ff,$57,$ff,$57,$ff,$52,$ff db $cc,$ff,$dc,$ff,$da,$ff,$da,$ff,$da,$ff,$da,$ff,$da,$ff,$d2,$fb db $36,$fd,$37,$fe,$5a,$ff,$5b,$fe,$5a,$ff,$5b,$fe,$5a,$ff,$5a,$ff db $6c,$ff,$dc,$7f,$5a,$ff,$da,$7f,$5a,$ff,$da,$ff,$ba,$ff,$b2,$fb db $36,$fd,$37,$fe,$5a,$ff,$5b,$fe,$5a,$ff,$5b,$fe,$5a,$ff,$5b,$fe db $b2,$fb,$b2,$fb,$b2,$fb,$62,$f3,$62,$f3,$62,$f3,$62,$f3,$62,$f3 db $43,$c7,$43,$c7,$43,$c7,$43,$c7,$43,$c7,$43,$c7,$43,$c7,$43,$c7 db $5a,$ff,$5a,$ff,$5a,$ff,$49,$df,$49,$df,$49,$df,$49,$df,$49,$df db $d2,$fb,$d2,$fb,$d2,$fb,$d2,$fb,$c2,$f3,$c2,$f3,$c2,$f3,$c2,$f3 db $5a,$ff,$5a,$ff,$5a,$ff,$4d,$df,$4d,$df,$4d,$df,$4d,$df,$4d,$df db $b2,$fb,$b2,$fb,$b2,$fb,$72,$fb,$62,$f3,$62,$f3,$62,$f3,$62,$f3 db $5a,$ff,$5b,$fe,$5b,$ff,$4d,$df,$4d,$df,$4d,$df,$4d,$df,$4d,$df db $62,$f3,$c2,$e3,$c2,$e3,$c2,$e3,$42,$e3,$42,$e3,$42,$e3,$02,$c3 db $02,$03,$02,$03,$02,$03,$02,$03,$02,$83,$02,$83,$02,$83,$02,$83 db $4d,$df,$4b,$df,$4b,$df,$4a,$df,$4a,$df,$42,$cf,$40,$cf,$40,$cf db $c2,$f3,$c2,$e3,$c2,$e3,$c2,$e3,$c2,$e3,$c2,$e3,$c2,$e3,$c2,$e3 db $a2,$f3,$82,$e3,$82,$e3,$82,$e3,$c2,$e3,$c2,$e3,$c2,$e3,$c2,$e3 db $4d,$df,$4d,$df,$4d,$df,$4c,$df,$4c,$df,$46,$cf,$46,$cf,$46,$cf db $82,$c3,$82,$c3,$82,$c3,$82,$c3,$c2,$e3,$c2,$e3,$c2,$e3,$c2,$e3 db $4d,$df,$4d,$df,$4d,$df,$4d,$df,$4d,$df,$46,$cf,$46,$cf,$46,$cf db $43,$c7,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf db $40,$cf,$40,$cf,$44,$cf,$44,$cf,$44,$cf,$45,$cf,$45,$cf,$4d,$df db $c2,$f3,$c2,$f3,$c2,$f3,$c2,$f3,$d2,$fb,$d2,$fb,$b2,$fb,$ba,$ff db $62,$f3,$62,$f3,$62,$f3,$62,$f3,$b2,$fb,$b2,$fb,$b2,$fb,$ba,$ff db $46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$45,$cf,$45,$cf,$45,$cf db $46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf db $4d,$df,$4d,$df,$4d,$df,$4b,$df,$5b,$ff,$5b,$ff,$5b,$ff,$5b,$ff db $9a,$ff,$9a,$ff,$9a,$ff,$9c,$ff,$ac,$ff,$8c,$ff,$be,$ff,$be,$ff db $da,$ff,$da,$7f,$5a,$ff,$dc,$7f,$ec,$ff,$8c,$ff,$7c,$ff,$fe,$ff db $41,$cf,$41,$cf,$41,$cf,$43,$cf,$43,$cf,$4b,$df,$4b,$df,$4b,$df db $43,$cf,$43,$cf,$43,$cf,$43,$cf,$43,$cf,$4b,$df,$4b,$df,$4d,$df db $46,$cf,$46,$cf,$46,$cf,$46,$cf,$46,$cf,$4d,$df,$4d,$df,$4d,$df db $5b,$ff,$5b,$ff,$33,$ff,$3b,$ff,$1b,$ff,$43,$df,$4b,$df,$40,$df db $80,$ff,$ac,$ff,$8c,$ff,$bc,$ff,$bc,$ff,$80,$ff,$82,$c3,$02,$c3 db $80,$ff,$6c,$ff,$8c,$ff,$7c,$ff,$fc,$ff,$80,$ff,$02,$83,$02,$03 db $4b,$df,$4b,$df,$4b,$df,$4b,$df,$4b,$df,$4b,$df,$4b,$df,$40,$df db $4d,$df,$4d,$df,$4d,$df,$4d,$df,$4d,$df,$4d,$df,$4d,$df,$40,$df db $80,$ff,$02,$83,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03 db $4d,$df,$4d,$df,$4d,$df,$4d,$df,$4c,$df,$4f,$df,$4f,$df,$40,$df Shuffle.UITileDataEnd: Shuffle.BigCard: ; 6 wide by 10 tall db $1b, $1c, $1c, $1c, $1c, $1d db $1e, $1f, $20, $20, $21, $22 db $1e, $23, $24, $24, $25, $22 db $1e, $23, $24, $24, $25, $22 db $1e, $23, $24, $24, $25, $22 db $1e, $23, $24, $24, $25, $22 db $1e, $23, $24, $24, $25, $22 db $1e, $23, $24, $24, $25, $22 db $1e, $26, $27, $27, $28, $22 db $29, $2a, $2a, $2a, $2a, $2b Shuffle.ShuffledEdges: ; this is a list of 10 pairs of 1x8 tall sprites, edges for the messy pile of cards db $34, $3a, $40, $47, $4e, $55, $5a, $60 db $35, $3b, $41, $48, $4f, $56, $5b, $61 db $36, $3c, $42, $49, $4e, $55, $5a, $60 db $35, $3b, $41, $48, $4f, $56, $5b, $61 db $36, $3c, $42, $49, $4e, $55, $5a, $60 db $37, $3d, $43, $4a, $50, $57, $5c, $62 db $36, $3c, $44, $4b, $51, $58, $5d, $63 db $37, $3d, $43, $4a, $50, $57, $5c, $62 db $36, $3c, $44, $4b, $51, $58, $5d, $63 db $38, $3e, $45, $4c, $52, $57, $5c, $62 db $36, $3c, $44, $4b, $53, $59, $5e, $64 db $22, $22, $22, $4d, $52, $57, $5c, $62 db $36, $3c, $44, $4b, $53, $59, $5e, $64 db $22, $22, $22, $4d, $52, $57, $5c, $65 db $39, $3f, $46, $46, $54, $59, $5f, $66 db $22, $22, $22, $4d, $52, $57, $5c, $65 db $39, $3f, $46, $46, $54, $59, $5f, $66 db $22, $22, $22, $22, $22, $22, $22, $22 db $1e, $1e, $1e, $1e, $1e, $1e, $1e, $1e db $22, $22, $22, $22, $22, $22, $22, $22 Shuffle.ShuffledText: db 9, "Shuffled!" Shuffle.ShuffledPopup1: db 9, 8 db 3, 4 db 6, 7 Shuffle.ShuffledPopup2: db 9, 2, 8 db 3, 0, 4 db 6, 5, 7 Shuffle.ShuffledPopup: db 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 8 db 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4 db 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7