1138 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			1138 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| PUSHS UNION "Global Variables", WRAM0[GLOBAL_VARS_START]
 | |
| vCurrentSpread: dw
 | |
| vSelectedSpreadIndex: db
 | |
| vSelectedSpreadCard: db
 | |
| vSelectedCardIndex: db ; the number of the card which is currently selected and being displayed
 | |
| vCurrentCardReversed: db ; whether the card should be displayed reversed
 | |
| vFrameCountSquares: db
 | |
| vCurrentBackgroundTile: dw
 | |
| vTime: dw
 | |
| vBlocked: db
 | |
| println "vBlocked is ", vBlocked ;
 | |
| POPS
 | |
| 
 | |
| ; screen-specific variables 
 | |
| PUSHS UNION "Screen Variables", WRAM0[SCREEN_VARS_START]
 | |
| vFrameCount1: db 
 | |
| vFrameCount2: db 
 | |
| vFrameCount3: db 
 | |
| vMenuIndex: db 
 | |
| vMenuIndexPrevious: db 
 | |
| POPS
 | |
| 
 | |
| ScreenMainMenu:
 | |
|   dw MainMenuSetup
 | |
|   dw MainMenuUpdate
 | |
|   dw MainMenuDraw
 | |
|   dw MainMenuTeardown
 | |
| 
 | |
| MainMenuSetup:
 | |
|   ld hl, ZEROES
 | |
|   ld de, MY_OAM
 | |
|   ld bc, $100
 | |
|   call CopyRange
 | |
|   
 | |
|   ld a, BANK("Main Menu Data")
 | |
|   ld [rROMB0], a
 | |
|   
 | |
|   ld hl, MainMenuSetup.asyncTask
 | |
|   call Async_Spawn_HL
 | |
|   
 | |
|   ld a, 0 
 | |
|   ld [vFrameCount1], a ; first card starts at 0
 | |
|   ld [vTime], a 
 | |
|   ld [vTime+1], a 
 | |
|   ld [vMenuIndex], a
 | |
|   ld [vMenuIndexPrevious], a 
 | |
|   
 | |
|   ld [vSelectedSpreadCard], a
 | |
|   
 | |
|   ; second starts at 1/3 length which is approximately L/2 - L/4 - L/8 + L/16 ?
 | |
|   ld hl, Coords
 | |
|   ld a, [hl]
 | |
|   ld b, a 
 | |
|   srl b 
 | |
|   sub a, b ; L - L/2
 | |
|   srl b
 | |
|   sub a, b ; L - L/2 - L/4
 | |
|   srl b
 | |
|   add a, b ; L - L/2 - L/4 + L/8
 | |
|   srl b
 | |
|   sub a, b ; L - L/2 - L/4 + L/8 - L/16
 | |
|   srl b
 | |
|   add a, b ; L - L/2 - L/4 + L/8 - L/16 + L/32
 | |
|   srl b
 | |
|   sub a, b ; L - L/2 - L/4 + L/8 - L/16 + L/32 - L/64
 | |
|   srl b
 | |
|   add a, b ; L - L/2 - L/4 + L/8 - L/16 + L/32 - L/64 + L/128
 | |
|   ; that should be approx 1/3 of L !
 | |
|   ld [vFrameCount2], a 
 | |
|   
 | |
|   ; third starts at 2/3 length which is approximately L/2 - L/4 + L/8 - L/16 ?
 | |
|   ld hl, Coords
 | |
|   ld a, [hl]
 | |
|   ld b, a 
 | |
|   srl b 
 | |
|   sub a, b ; L - L/2
 | |
|   srl b
 | |
|   add a, b ; L - L/2 + L/4
 | |
|   srl b
 | |
|   sub a, b ; L - L/2 + L/4 - L/8
 | |
|   srl b
 | |
|   add a, b ; L - L/2 + L/4 - L/8 + L/16
 | |
|   srl b
 | |
|   sub a, b ; L - L/2 + L/4 - L/8 + L/16 - L/32
 | |
|   srl b
 | |
|   add a, b ; L - L/2 + L/4 - L/8 + L/16 - L/32 + L/64
 | |
|   srl b
 | |
|   sub a, b ; L - L/2 + L/4 - L/8 + L/16 - L/32 + L/64 - L/128
 | |
|   ; that should be just about 2/3 of L !
 | |
|   ld [vFrameCount3], a 
 | |
|   
 | |
|   ld a, 0
 | |
|   ld [vFrameCountSquares], a 
 | |
|   
 | |
|   
 | |
| 
 | |
|   ld a, %11100100
 | |
|   ldh [rBGP], a
 | |
|   ldh [rOBP0], a
 | |
|   call AdjustBGP
 | |
|   call AdjustOBP0
 | |
|   
 | |
|   ld a, LCDCF_BLK21 | LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDCF_OBJ16
 | |
|   ldh [rLCDC], a
 | |
|   
 | |
|   ret
 | |
| .asyncTask:
 | |
|   
 | |
|   ld hl, MainUITilemap
 | |
|   ld de, _SCRN0
 | |
|   ld b, 18
 | |
|   ld c, 20
 | |
|   call CopyTilesToMap
 | |
|   
 | |
|   ld hl, StringRead
 | |
|   ld de, _SCRN0 + 32*11 + 4
 | |
|   call PrintString
 | |
|   ld hl, StringShuffle
 | |
|   ld de, _SCRN0 + 32*13 + 4
 | |
|   call PrintString
 | |
|   ld hl, StringBrowse
 | |
|   ld de, _SCRN0 + 32*15 + 4
 | |
|   call PrintString
 | |
|   
 | |
|   ld hl, SquaresTileset8
 | |
|   ld de, _VRAM + $1000 + $10
 | |
|   ld bc, SquaresTilesetEnd - SquaresTileset8
 | |
|   call CopyRange
 | |
|   
 | |
|   def spacing equ $12
 | |
|   
 | |
|   ld hl, CardBackSprites24 ; source
 | |
|   def TileStartCardBackSprites24 equ 0
 | |
|   ld de, $8000 + TileStartCardBackSprites24*$10; destination of copy
 | |
|   ld bc, CardBackSprites24End - CardBackSprites24 ; length to copy
 | |
|   call CopyRange
 | |
|   
 | |
|   ld hl, CardBackSprites23
 | |
|   def TileStartCardBackSprites23 equ TileStartCardBackSprites24 + spacing
 | |
|   ld de, $8000 + TileStartCardBackSprites23*$10; destination of copy
 | |
|   ld bc, CardBackSprites23End - CardBackSprites23
 | |
|   call CopyRange
 | |
|   
 | |
|   ld hl, CardBackSprites22
 | |
|   def TileStartCardBackSprites22 equ TileStartCardBackSprites23 + spacing
 | |
|   ld de, $8000 + TileStartCardBackSprites22*$10; destination of copy
 | |
|   ld bc, CardBackSprites22End - CardBackSprites22
 | |
|   call CopyRange
 | |
|   
 | |
|   ld hl, CardBackSprites21
 | |
|   def TileStartCardBackSprites21 equ TileStartCardBackSprites22 + spacing
 | |
|   ld de, $8000 + TileStartCardBackSprites21*$10; destination of copy
 | |
|   ld bc, CardBackSprites21End - CardBackSprites21
 | |
|   call CopyRange
 | |
|   
 | |
|   ld hl, CardBackSprites20
 | |
|   def TileStartCardBackSprites20 equ TileStartCardBackSprites21 + spacing
 | |
|   ld de, $8000 + TileStartCardBackSprites20*$10
 | |
|   ld bc, CardBackSprites20End - CardBackSprites20
 | |
|   call CopyRange
 | |
|   
 | |
|   ld hl, CardBackSprites19
 | |
|   def TileStartCardBackSprites19 equ TileStartCardBackSprites20 + spacing
 | |
|   ld de, $8000 + TileStartCardBackSprites19*$10
 | |
|   ld bc, CardBackSprites19End - CardBackSprites19
 | |
|   call CopyRange
 | |
|   
 | |
|   ld hl, CardBackSprites18
 | |
|   def TileStartCardBackSprites18 equ TileStartCardBackSprites19 + spacing
 | |
|   ld de, $8000 + TileStartCardBackSprites18*$10
 | |
|   ld bc, CardBackSprites18End - CardBackSprites18
 | |
|   call CopyRange
 | |
|   
 | |
|   ld hl, CardBackSprites17
 | |
|   def TileStartCardBackSprites17 equ TileStartCardBackSprites18 + spacing
 | |
|   ld de, $8000 + TileStartCardBackSprites17*$10
 | |
|   ld bc, CardBackSprites17End - CardBackSprites17
 | |
|   call CopyRange
 | |
|   
 | |
|   def TileStartCardBackSprites16 equ TileStartCardBackSprites17 + spacing
 | |
|   
 | |
|   ret 
 | |
| 
 | |
| 
 | |
| MainMenuUpdate:
 | |
|   ld a, BANK("Main Menu Data")
 | |
|   ld [rROMB0], a
 | |
|   
 | |
|   ld hl, rMYBTNP
 | |
| 
 | |
|   ld a, [vMenuIndex]
 | |
|   bit 3, [hl]  ; select the down key
 | |
|   jp z, .doneWithDownInput ; skip the following code if down is not pressed
 | |
|     inc a 
 | |
|   .doneWithDownInput
 | |
|   bit 2, [hl] ; select up key %0000_0100
 | |
|   jp z, .doneWithUpInput ; skip the following code if up is not pressed
 | |
|     dec a 
 | |
|   .doneWithUpInput
 | |
|   ld hl, MenuCount
 | |
|   call ArrayClampLooping
 | |
|   ld [vMenuIndex], a 
 | |
|   
 | |
|   
 | |
|   ld hl, rMYBTNP
 | |
|   
 | |
|   bit 4, [hl] ; button a pressed?
 | |
|   jp z, .doneWithMenuSelect 
 | |
|     ld a, [vMenuIndex]
 | |
|     cp a, 0
 | |
|     jp z, .option1
 | |
|     cp a, 1
 | |
|     jp z, .option2
 | |
|     cp a, 2
 | |
|     jp z, .option3
 | |
|     jp .doneWithMenuSelect
 | |
|   .option1
 | |
|     ld hl, ScreenShuffle
 | |
|     call ChangeScene
 | |
|     ret
 | |
|   .option2
 | |
|     ld a, 0 
 | |
|     ld [vSelectedSpreadIndex], a
 | |
|     ld hl, ScreenSpreadSelect
 | |
|     call ChangeScene
 | |
|     ret
 | |
|   .option3
 | |
|     ld a, 0 
 | |
|     ld [vSelectedCardIndex], a 
 | |
|     ld [vCurrentCardReversed], a
 | |
|     ld hl, ScreenCardBrowse
 | |
|     call ChangeScene
 | |
|     ret
 | |
|   .doneWithMenuSelect
 | |
|   
 | |
|   ld a, [rDELTAT]
 | |
|   ld b, a 
 | |
|   ld a, [vTime]
 | |
|   add a, b
 | |
|   ld [vTime], a 
 | |
|   ld a, [vTime+1]
 | |
|   adc a, 0 
 | |
|   ld [vTime+1], a ; increment time. when the 16bit time register is greater 
 | |
|   ; than 4096 ($10_00) then one second has passed. so that's satisfied when
 | |
|   ; vTime+1 is equal to or greater than $10
 | |
|   
 | |
|   ld a, [vTime+1]
 | |
|   cp a, $01
 | |
|   jp c, .allDone ; if the timer is less than $0100, skip to end
 | |
|   
 | |
|   ;otherwise reset the timer
 | |
|   ld a, 0 
 | |
|   ld [vTime], a 
 | |
|   ld [vTime+1], a 
 | |
|   
 | |
|   ld hl, Coords
 | |
|   
 | |
|   ; and advance the frame counts
 | |
|   ld a, [vFrameCount1]
 | |
|   inc a
 | |
|   call ArrayClampLooping
 | |
|   ld [vFrameCount1], a 
 | |
|   
 | |
|   ld a, [vFrameCount2]
 | |
|   inc a
 | |
|   call ArrayClampLooping
 | |
|   ld [vFrameCount2], a 
 | |
|   
 | |
|   ld a, [vFrameCount3]
 | |
|   inc a
 | |
|   call ArrayClampLooping
 | |
|   ld [vFrameCount3], a 
 | |
|   
 | |
|   ld hl, SquaresTiles
 | |
|   ld a, [vFrameCountSquares]
 | |
|   inc a
 | |
|   call ArrayClampLooping
 | |
|   ld [vFrameCountSquares], a 
 | |
|   
 | |
|   sla a ; mulltiiply squares frame count by 2
 | |
|   ld b, 0
 | |
|   ld c, a 
 | |
|   ld hl, SquaresTiles + 1
 | |
|   add hl, bc 
 | |
|   ld a, [hl+]
 | |
|   ld [vCurrentBackgroundTile], a 
 | |
|   ld a, [hl+]
 | |
|   ld [vCurrentBackgroundTile+1], a
 | |
|   
 | |
|   ld hl, Coords
 | |
|   inc hl
 | |
|   ld b, 0 
 | |
|   ld a, [vFrameCount1]
 | |
|   ld c, a 
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   ld a, [hl+] 
 | |
|   ld b, a ; y coordinate
 | |
|   ld a, [hl+]
 | |
|   ld c, a ; x coordinate
 | |
|   ld a, [hl+]
 | |
|   ld e, a ; width
 | |
|   ld hl, MY_OAM
 | |
|   call DrawWholeCard
 | |
|   
 | |
|   ld hl, Coords
 | |
|   inc hl
 | |
|   ld b, 0 
 | |
|   ld a, [vFrameCount2]
 | |
|   ld c, a 
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   ld a, [hl+] 
 | |
|   ld b, a ; y coordinate
 | |
|   ld a, [hl+]
 | |
|   ld c, a ; x coordinate
 | |
|   ld a, [hl+]
 | |
|   ld e, a ; width
 | |
|   ld hl, MY_OAM + 9*4
 | |
|   call DrawWholeCard
 | |
|   
 | |
|   ld hl, Coords
 | |
|   inc hl
 | |
|   ld b, 0 
 | |
|   ld a, [vFrameCount3]
 | |
|   ld c, a 
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   ld a, [hl+] 
 | |
|   ld b, a ; y coordinate
 | |
|   ld a, [hl+]
 | |
|   ld c, a ; x coordinate
 | |
|   ld a, [hl+]
 | |
|   ld e, a ; width
 | |
|   ld hl, MY_OAM + 18*4
 | |
|   call DrawWholeCard
 | |
|   
 | |
| .allDone
 | |
|   ret
 | |
| 
 | |
| MainMenuDraw:
 | |
|   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
 | |
|   
 | |
|   ld b, 0
 | |
|   ld c, 32
 | |
|   
 | |
|   ; find the location of the last selected caret and make it blank
 | |
|   ld hl, _SCRN0 + 32*11 + 3 - 64
 | |
|   ld a, [vMenuIndexPrevious]
 | |
|   inc a
 | |
| .findLastCaret
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   dec a
 | |
|   jp nz, .findLastCaret
 | |
|   ld [hl], $0
 | |
| 
 | |
|   ;find the location of the new selected caret and make it a caret
 | |
|   ; bc contains 32 (row stride of bgmap)
 | |
|   ld hl, _SCRN0 + 32*11 + 3 - 64
 | |
|   ld a, [vMenuIndex]
 | |
|   inc a
 | |
| .findNewCaret
 | |
|   add hl, bc
 | |
|   add hl, bc
 | |
|   dec a
 | |
|   jp nz, .findNewCaret
 | |
|   ld [hl], $80 + $10 + $9
 | |
|   
 | |
|   ld a, [vMenuIndex]
 | |
|   ld [vMenuIndexPrevious], a 
 | |
|   ei
 | |
|   ret
 | |
|   
 | |
| MainMenuTeardown:
 | |
|   ret
 | |
| 
 | |
| DrawWholeCard: ; hl memory location, b y, c x, e width, d wiggle
 | |
|   ld a, e 
 | |
|   cp a, 32
 | |
|   ld e, TileStartCardBackSprites24
 | |
|   jp z, Draw4x4Card
 | |
|   cp a, 24
 | |
|   ld e, TileStartCardBackSprites24
 | |
|   jp z, Draw3x3Card
 | |
|   cp a, 23
 | |
|   ld e, TileStartCardBackSprites23
 | |
|   jp z, Draw3x3Card
 | |
|   cp a, 22
 | |
|   ld e, TileStartCardBackSprites22
 | |
|   jp z, Draw3x3Card
 | |
|   cp a, 21
 | |
|   ld e, TileStartCardBackSprites21
 | |
|   jp z, Draw3x3Card
 | |
|   cp a, 20
 | |
|   ld e, TileStartCardBackSprites20
 | |
|   jp z, Draw3x3Card
 | |
|   cp a, 19
 | |
|   ld e, TileStartCardBackSprites19
 | |
|   jp z, Draw3x3Card
 | |
|   cp a, 18
 | |
|   ld e, TileStartCardBackSprites18
 | |
|   jp z, Draw3x3Card
 | |
|   cp a, 17
 | |
|   ld e, TileStartCardBackSprites17
 | |
|   jp z, Draw3x3Card
 | |
| 
 | |
|   ; else fall through into 2x2card
 | |
|   ld e, TileStartCardBackSprites16
 | |
|   jp Draw2x2Card
 | |
|   
 | |
| Draw2x2Card:
 | |
| ; hl memory location, b y coord, c x coord, e tile start
 | |
|   ; top-left
 | |
|   ld a, $0 
 | |
|   call DrawTile
 | |
|   
 | |
|   xor a, a
 | |
|   ld [hl+], a
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld e, TileStartCardBackSprites16
 | |
|   ld a, $4
 | |
|   call DrawTile
 | |
| 
 | |
|   ld a, c 
 | |
|   sub a, 8
 | |
|   ld c, a ; step back to the left
 | |
|   
 | |
|   xor a, a 
 | |
|   ld [hl+], a
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   
 | |
|   ld [hl+], a
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   
 | |
|   ld [hl+], a
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   
 | |
|   ld a, b
 | |
|   add a, 16
 | |
|   ld b, a 
 | |
|   ld e, TileStartCardBackSprites16
 | |
|   ld a, $c ; TileStartCardBackSprites8 + $12
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, 0
 | |
|   ld [hl+], a
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld e, TileStartCardBackSprites16
 | |
|   ld a, $10
 | |
|   call DrawTile
 | |
|   ret
 | |
| 
 | |
| Draw3x3Card:
 | |
| ; hl memory location, b y coord, c x coord, e base for tiles, d wiggle
 | |
| 
 | |
|   ;first row
 | |
|   ; top-left
 | |
|   ld a, 0
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8 ; add stride to x
 | |
|   ld c, a
 | |
|   ld a, $2
 | |
|   call DrawTile
 | |
| 
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $4
 | |
|   call DrawTile
 | |
|  
 | |
|   ;second row 
 | |
|   ld a, b
 | |
|   add a, 16
 | |
|   ld b, a ; add 16 to y coord
 | |
|   ld a, c 
 | |
|   sub a, 16
 | |
|   ld c, a ; restore the state to before we drew the first row
 | |
|   ld a, $6
 | |
|   call DrawTile
 | |
|   
 | |
|  
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a 
 | |
|   ld a, $8
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $a
 | |
|   call DrawTile
 | |
|   
 | |
|   ; third row
 | |
|   ld a, b
 | |
|   add a, 16
 | |
|   ld b, a ; add stridex2 to y coord
 | |
|   ld a, c 
 | |
|   sub a, 16
 | |
|   ld c, a ; subtract stridex2 from x
 | |
|   ld a, $c
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $e
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $10
 | |
|   call DrawTile
 | |
|   ret
 | |
|   
 | |
| Draw4x4Card:
 | |
| ; hl memory location, b y coord, c x coord, e base for tiles, d wiggle
 | |
| 
 | |
|   ;first row
 | |
|   ; top-left
 | |
|   ld a, 0
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8 ; add stride to x
 | |
|   ld c, a
 | |
|   ld a, $2
 | |
|   call DrawTile
 | |
| 
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $2
 | |
|   call DrawTile
 | |
| 
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $4
 | |
|   call DrawTile
 | |
|  
 | |
|   ;second row 
 | |
|   ld a, b
 | |
|   add a, 16
 | |
|   ld b, a ; add 16 to y coord
 | |
|   ld a, c 
 | |
|   sub a, 24
 | |
|   ld c, a ; restore the state to before we drew the first row
 | |
|   ld a, $6
 | |
|   call DrawTile
 | |
|  
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a 
 | |
|   ld a, $8
 | |
|   call DrawTile
 | |
|  
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a 
 | |
|   ld a, $8
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $a
 | |
|   call DrawTile
 | |
|   
 | |
|   
 | |
|   ;second row 
 | |
|   ld a, b
 | |
|   add a, 16
 | |
|   ld b, a ; add 16 to y coord
 | |
|   ld a, c 
 | |
|   sub a, 24
 | |
|   ld c, a ; restore the state to before we drew the first row
 | |
|   ld a, $6
 | |
|   call DrawTile
 | |
|  
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a 
 | |
|   ld a, $8
 | |
|   call DrawTile
 | |
|  
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a 
 | |
|   ld a, $8
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $a
 | |
|   call DrawTile
 | |
|   
 | |
|   ; third row
 | |
|   ld a, b
 | |
|   add a, 16
 | |
|   ld b, a ; add stridex2 to y coord
 | |
|   ld a, c 
 | |
|   sub a, 24
 | |
|   ld c, a ; subtract stridex2 from x
 | |
|   ld a, $c
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $e
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $e
 | |
|   call DrawTile
 | |
|   
 | |
|   ld a, c 
 | |
|   add a, 8
 | |
|   ld c, a
 | |
|   ld a, $10
 | |
|   call DrawTile
 | |
|   ret
 | |
|   
 | |
| DrawTile: ; b: y. c: x. a: part id. hl: location of sprite in OAM
 | |
|   ; e: sprite bank
 | |
|   ld d, a ; immediateely put the card part id into d
 | |
|   ld a, e 
 | |
| .testFor16
 | |
|   cp a, TileStartCardBackSprites16
 | |
|   jp nz, .testFor17
 | |
|   
 | |
|   ; we're in a 16-width card sprite
 | |
|   ld a, d 
 | |
|   cp a, $0
 | |
|   jp z, .leftSideThreshholds16
 | |
|   cp a, $6
 | |
|   jp z, .leftSideThreshholds16
 | |
|   cp a, $c
 | |
|   jp z, .leftSideThreshholds16
 | |
|   cp a, $4
 | |
|   jp z, .rightSideThreshholds16
 | |
|   cp a, $a
 | |
|   jp z, .rightSideThreshholds16
 | |
|   cp a, $10
 | |
|   jp z, .rightSideThreshholds16
 | |
|   jp .skipThisTile
 | |
|   
 | |
|   
 | |
|   
 | |
| .leftSideThreshholds16
 | |
|   ld a, c 
 | |
|   ;cp a, 8+16
 | |
|   ;jp c, .dontSkip ; we don't have to worry about activating it when it's far to
 | |
|   ; the left because it'll never be drawn far to the left
 | |
|   cp a, 8+52
 | |
|   jp c, .skipThisTile ; left edge < 48 => dont draw
 | |
|   cp a, 8-8+105 ; right edge < 120 => do draw
 | |
|   jp c, .dontSkip
 | |
|   jp .skipThisTile
 | |
|   
 | |
| .rightSideThreshholds16
 | |
|   ld a, c 
 | |
|   ;cp a, 8+16
 | |
|   ;jp c, .dontSkip ; we don't have to worry about activating it when it's far to
 | |
|   ; the left because it'll never be drawn far to the left
 | |
|   cp a, 8+54
 | |
|   jp c, .skipThisTile ; left edge < 48 => dont draw
 | |
|   cp a, 8-8+109 ; right edge < 120 => do draw
 | |
|   jp c, .dontSkip
 | |
|   jp .skipThisTile
 | |
|   
 | |
| 
 | |
| .testFor17
 | |
|   cp a, TileStartCardBackSprites17
 | |
|   jp nz, .dontSkip ; if it's not 16 or 17, draw it
 | |
|   
 | |
|   ld a, d 
 | |
|   cp a, $0
 | |
|   jp z, .leftSideThreshholds17
 | |
|   cp a, $6
 | |
|   jp z, .leftSideThreshholds17
 | |
|   cp a, $c
 | |
|   jp z, .leftSideThreshholds17
 | |
|   cp a, $2
 | |
|   jp z, .middleThreshholds17
 | |
|   cp a, $8
 | |
|   jp z, .middleThreshholds17
 | |
|   cp a, $e
 | |
|   jp z, .middleThreshholds17
 | |
|   cp a, $4
 | |
|   jp z, .rightSideThreshholds17
 | |
|   cp a, $a
 | |
|   jp z, .rightSideThreshholds17
 | |
|   cp a, $10
 | |
|   jp z, .rightSideThreshholds17
 | |
|   jp .skipThisTile
 | |
|   
 | |
|   
 | |
| .leftSideThreshholds17
 | |
|   ld a, c 
 | |
|   cp a, 8+37 
 | |
|   jp c, .dontSkip
 | |
|   cp a, 8+80 
 | |
|   jp c, .skipThisTile
 | |
|   ;cp a, 8-17 + 100 ; right edge < 100 => draw
 | |
|   ;jp c, .dontSkip ; we can comment this one out because wee dont atm need to 
 | |
|   ; worry about drawing 17-wides in the middle
 | |
|   cp a, 8-8 + 118 
 | |
|   jp c, .skipThisTile
 | |
|   jp .dontSkip ; right edge edge < 168 => draw
 | |
|   
 | |
| .middleThreshholds17
 | |
| 
 | |
|   ld a, c 
 | |
|   cp a, 8+42 ; left edge < 10 => draw 
 | |
|   jp c, .dontSkip
 | |
|   cp a, 8+80 ; left edge < 80 => skip
 | |
|   jp c, .skipThisTile
 | |
|   ;cp a, 8-17 + 100 ; right edge < 100 => draw
 | |
|   ;jp c, .dontSkip ; we can comment this one out because wee dont atm need to 
 | |
|   ; worry about drawing 17-wides in the middle
 | |
|   cp a, 8-8 + 121 ; right edge < 120 => skip
 | |
|   jp c, .skipThisTile
 | |
|   jp .dontSkip ; right edge edge < 168 => draw
 | |
|   
 | |
| .rightSideThreshholds17
 | |
|   ld a, c 
 | |
|   cp a, 8+80 ; left edge < 10 => draw 
 | |
|   jp c, .dontSkip
 | |
|   cp a, 8+80 ; left edge < 80 => skip
 | |
|   jp c, .skipThisTile
 | |
|   ;cp a, 8-17 + 100 ; right edge < 100 => draw
 | |
|   ;jp c, .dontSkip ; we can comment this one out because wee dont atm need to 
 | |
|   ; worry about drawing 17-wides in the middle
 | |
|   cp a, 8-8 + 121 ; right edge < 120 => skip
 | |
|   jp c, .skipThisTile
 | |
|   jp .dontSkip ; right edge edge < 168 => draw
 | |
|   
 | |
|   
 | |
| .dontSkip
 | |
|   ld a, e 
 | |
|   cp a, TileStartCardBackSprites16
 | |
|   jp nz, .goAheadAndDraw
 | |
|   ld e, TileStartCardBackSprites24
 | |
| .goAheadAndDraw
 | |
|   ld a, b
 | |
|   ld [hl+], a 
 | |
|   ld a, c 
 | |
|   ld [hl+], a 
 | |
|   ld a, d
 | |
|   add a, e
 | |
|   ld [hl+], a 
 | |
|   inc hl
 | |
|   ret 
 | |
|   
 | |
| .skipThisTile
 | |
|   ld a, 0 
 | |
|   ld [hl+], a 
 | |
|   ld [hl+], a 
 | |
|   inc hl
 | |
|   inc hl 
 | |
|   ret
 | |
|   
 | |
| PUSHS "Main Menu Data", ROMX
 | |
| MenuCount:
 | |
|   db 3
 | |
| StringRead:
 | |
|   db 7, "Shuffle"
 | |
| StringShuffle:
 | |
|   db 11, "Read Spread"
 | |
| StringBrowse:
 | |
|   db 11, "Browse Deck"
 | |
| Coords: ; y, x, spread
 | |
|  db 255, $24, $12, $14, $24, $12, $14, $24, $12, $14, $24, $12, $14, $24, $12, $14, $24, $12, $14, $23, $12, $15, $23, $13, $15, $23, $13, $15, $23, $13, $15, $23, $13, $15, $23, $14, $15, $23, $14, $15, $23, $14, $15, $23, $15, $15, $23, $15, $15, $22, $16, $16, $22, $16, $16, $22, $17, $16, $22, $18, $16, $22, $18, $16, $22, $19, $16, $22, $1a, $16, $22, $1a, $16, $22, $1b, $16, $22, $1c, $16, $22, $1d, $16, $22, $1e, $16, $21, $1e, $17, $21, $1f, $17, $21, $20, $17, $21, $21, $17, $21, $22, $17, $21, $23, $17, $21, $24, $17, $21, $25, $17, $21, $27, $17, $21, $28, $17, $21, $29, $17, $21, $2a, $17, $21, $2b, $17, $21, $2c, $17, $21, $2e, $17, $21, $2f, $17, $20, $30, $18, $20, $31, $18, $20, $33, $18, $20, $34, $18, $20, $35, $18, $20, $37, $18, $20, $38, $18, $20, $3a, $18, $20, $3b, $18, $20, $3c, $18, $20, $3e, $18, $20, $3f, $18, $20, $41, $18, $20, $42, $18, $20, $44, $18, $20, $45, $18, $20, $46, $18, $20, $48, $18, $20, $49, $18, $20, $4b, $18, $20, $4c, $18, $20, $4e, $18, $20, $4f, $18, $20, $51, $18, $20, $52, $18, $20, $54, $18, $20, $55, $18, $20, $57, $18, $20, $58, $18, $20, $5a, $18, $20, $5b, $18, $20, $5c, $18, $20, $5e, $18, $20, $5f, $18, $20, $61, $18, $20, $62, $18, $20, $64, $18, $20, $65, $18, $20, $66, $18, $20, $68, $18, $20, $69, $18, $21, $6a, $17, $21, $6c, $17, $21, $6d, $17, $21, $6e, $17, $21, $6f, $17, $21, $71, $17, $21, $72, $17, $21, $73, $17, $21, $74, $17, $21, $75, $17, $21, $76, $17, $21, $77, $17, $21, $78, $17, $21, $7a, $17, $21, $7b, $17, $21, $7b, $17, $22, $7c, $16, $22, $7d, $16, $22, $7e, $16, $22, $7f, $16, $22, $80, $16, $22, $81, $16, $22, $82, $16, $22, $82, $16, $22, $83, $16, $22, $84, $16, $22, $84, $16, $23, $85, $15, $23, $86, $15, $23, $86, $15, $23, $87, $15, $23, $87, $15, $23, $87, $15, $23, $88, $15, $23, $88, $15, $23, $89, $15, $23, $89, $15, $23, $89, $15, $24, $89, $14, $24, $8a, $14, $24, $8a, $14, $24, $8a, $14, $24, $8a, $14, $24, $8a, $14, $24, $8a, $14, $24, $8a, $14, $24, $8a, $14, $24, $8a, $14, $25, $8a, $13, $25, $8a, $13, $25, $89, $13, $25, $89, $13, $25, $89, $13, $25, $89, $13, $25, $88, $13, $25, $88, $13, $25, $87, $13, $25, $87, $13, $25, $86, $13, $26, $86, $12, $26, $85, $12, $26, $85, $12, $26, $84, $12, $26, $83, $12, $26, $83, $12, $26, $82, $12, $26, $81, $12, $26, $81, $12, $26, $80, $12, $26, $7f, $12, $27, $7e, $11, $27, $7d, $11, $27, $7c, $11, $27, $7b, $11, $27, $7a, $11, $27, $79, $11, $27, $78, $11, $27, $77, $11, $27, $76, $11, $27, $75, $11, $27, $74, $11, $27, $73, $11, $27, $71, $11, $27, $70, $11, $27, $6f, $11, $27, $6e, $11, $28, $6c, $10, $28, $6b, $10, $28, $6a, $10, $28, $69, $10, $28, $67, $10, $28, $66, $10, $28, $65, $10, $28, $63, $10, $28, $62, $10, $28, $60, $10, $28, $5f, $10, $28, $5e, $10, $28, $5c, $10, $28, $5b, $10, $28, $59, $10, $28, $58, $10, $28, $56, $10, $28, $55, $10, $28, $53, $10, $28, $52, $10, $28, $50, $10, $28, $4f, $10, $28, $4d, $10, $28, $4c, $10, $28, $4a, $10, $28, $49, $10, $28, $48, $10, $28, $46, $10, $28, $45, $10, $28, $43, $10, $28, $42, $10, $28, $40, $10, $28, $3f, $10, $28, $3d, $10, $28, $3c, $10, $28, $3b, $10, $28, $39, $10, $28, $38, $10, $28, $36, $10, $28, $35, $10, $28, $34, $10, $27, $32, $11, $27, $31, $11, $27, $30, $11, $27, $2f, $11, $27, $2d, $11, $27, $2c, $11, $27, $2b, $11, $27, $2a, $11, $27, $28, $11, $27, $27, $11, $27, $26, $11, $27, $25, $11, $27, $24, $11, $27, $23, $11, $27, $22, $11, $27, $21, $11, $26, $20, $12, $26, $1f, $12, $26, $1e, $12, $26, $1d, $12, $26, $1c, $12, $26, $1c, $12, $26, $1b, $12, $26, $1a, $12, $26, $19, $12, $26, $19, $12, $26, $18, $12, $26, $17, $12, $25, $17, $13, $25, $16, $13, $25, $16, $13, $25, $15, $13, $25, $15, $13, $25, $14, $13, $25, $14, $13, $25, $14, $13, $25, $13, $13, $25, $13, $13, $24, $13, $14, $24, $12, $14, $24, $12, $14, $24, $12, $14, $24, $12, $14
 | |
| 
 | |
| 
 | |
| CardBackSprites16:
 | |
| CardBackSprites24:
 | |
| 	db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa ; top-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$aa,$aa,$55,$55,$aa ; top-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 	
 | |
| 	db $00,$ff,$fe,$ff,$fe,$ff,$06,$ff,$f6,$ff,$56,$bf,$b6,$5f,$56,$bf ; top-right
 | |
| 	db $b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf ; middle-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 
 | |
| 	db $b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf ; middle-right
 | |
| 	db $b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf ; middle-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff,$60,$ff,$7f,$ff,$7f,$ff,$00,$ff ; bottom-left
 | |
| 	
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$ff,$ff,$00,$ff,$ff,$ff,$ff,$ff,$00,$ff ; bottom-middle
 | |
| 	
 | |
| 	db $b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf ; middle-right
 | |
| 	db $b6,$5f,$56,$bf,$b6,$5f,$f6,$ff,$06,$ff,$fe,$ff,$fe,$ff,$00,$ff ; bottom-right
 | |
| CardBackSprites16End:
 | |
| CardBackSprites24End:
 | |
| CardBackSprites23:
 | |
| 	db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa ; top-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$aa,$aa,$55,$55,$aa ; top-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 	
 | |
| 	db $00,$fe,$fc,$fe,$fc,$fe,$0c,$fe,$ec,$fe,$6c,$be,$ac,$7e,$6c,$be ; top-right
 | |
| 	db $ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be ; middle-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 	
 | |
| 	db $ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be ; middle-right
 | |
| 	db $ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be ; middle-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	db $6a,$fd,$6f,$ff,$60,$ff,$7f,$ff,$7f,$ff,$00,$ff,$00,$00,$00,$00 ; bottom-left
 | |
| 	
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; middle-middle
 | |
| 	db $aa,$55,$ff,$ff,$00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$00,$00,$00 ; bottom-middle
 | |
| 	
 | |
| 	db $ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be,$ac,$7e,$6c,$be ; middle-right
 | |
| 	db $ac,$7e,$ec,$fe,$0c,$fe,$fc,$fe,$fc,$fe,$00,$fe,$00,$00,$00,$00 ; bottom-right
 | |
| CardBackSprites23End:
 | |
| CardBackSprites22:
 | |
| 	db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa ; top-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 	
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$aa,$aa,$55,$55,$aa ; top-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; upper-middle
 | |
| 
 | |
| 	db $00,$fc,$f8,$fc,$f8,$fc,$18,$fc,$d8,$fc,$58,$fc,$d8,$7c,$58,$fc ; top-right
 | |
| 	db $d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$58,$fc ; upper-right
 | |
| 
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; upper-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; upper-middle
 | |
| 
 | |
| 	db $d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$58,$fc ; upper-right
 | |
| 	db $d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$58,$fc ; upper-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff ; lower-left
 | |
| 	db $60,$ff,$7f,$ff,$7f,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-left
 | |
| 	
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$ff,$ff ; lower-middle
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-middle
 | |
| 	
 | |
| 	db $d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$58,$fc,$d8,$7c,$d8,$fc ; lower-right
 | |
| 	db $18,$fc,$f8,$fc,$f8,$fc,$00,$fc,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-right
 | |
| CardBackSprites22End:
 | |
| 
 | |
| CardBackSprites21:
 | |
| 	db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa ; top-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$aa,$aa,$55,$55,$aa ; top-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; upper-middle
 | |
| 	
 | |
| 	db $00,$f8,$f0,$f8,$f0,$f8,$30,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8 ; top-right
 | |
| 	db $b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8 ; upper-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 	
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; upper-middle
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa ; upper-middle
 | |
| 	
 | |
| 	db $b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8 ; upper-right
 | |
| 	db $b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8 ; upper-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff,$60,$ff,$7f,$ff ; lowere-left
 | |
| 	db $7f,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-left
 | |
| 	
 | |
| 	db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$ff,$ff,$00,$ff,$ff,$ff ; lower-middle
 | |
| 	db $ff,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; bottmo-middle
 | |
| 	
 | |
| 	db $b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$b0,$f8,$30,$f8,$f0,$f8 ; lower-right
 | |
| 	db $f0,$f8,$00,$f8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-right
 | |
| CardBackSprites21End:
 | |
| CardBackSprites20:
 | |
| 	db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa; top-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middel-left
 | |
| 	
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$ab,$ab,$55,$55,$ab ; top-middle
 | |
| 	db $ab,$55,$55,$ab,$ab,$55,$55,$ab,$ab,$55,$55,$ab,$ab,$55,$55,$ab ; middle-middle
 | |
| 	
 | |
| 	db $00,$f0,$e0,$f0,$e0,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0 ; top-right
 | |
| 	db $60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0 ; middle-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middel-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middel-left
 | |
| 	
 | |
| 	db $ab,$55,$55,$ab,$ab,$55,$55,$ab,$ab,$55,$55,$ab,$ab,$55,$55,$ab ; middle-middle
 | |
| 	db $ab,$55,$55,$ab,$ab,$55,$55,$ab,$ab,$55,$55,$ab,$ab,$55,$55,$ab ; middle-middle
 | |
| 	
 | |
| 	db $60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0 ; middle-right
 | |
| 	db $60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0 ; middle-right
 | |
| 
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff,$60,$ff,$7f,$ff,$7f,$ff,$00,$ff ; bottom-left
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| 
 | |
| 	db $ab,$55,$55,$ab,$ab,$55,$ff,$ff,$00,$ff,$ff,$ff,$ff,$ff,$00,$ff ; bottom-middle
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| 	
 | |
| 	db $60,$f0,$60,$f0,$60,$f0,$60,$f0,$60,$f0,$e0,$f0,$e0,$f0,$00,$f0 ; bottom-right
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| CardBackSprites20End:
 | |
| CardBackSprites19:
 | |
| db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa ; top-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$fe,$ff,$56,$ab,$aa,$57,$56,$ab ; top-middle
 | |
| 	db $aa,$57,$56,$ab,$aa,$57,$56,$ab,$aa,$57,$56,$ab,$aa,$57,$56,$ab ; middle-middle
 | |
| 
 | |
| 	db $00,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0 ; top-rihgt
 | |
| 	db $c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0 ; middle-right
 | |
| 
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 
 | |
| 	db $aa,$57,$56,$ab,$aa,$57,$56,$ab,$aa,$57,$56,$ab,$aa,$57,$56,$ab ; middle-middle
 | |
| 	db $aa,$57,$56,$ab,$aa,$57,$56,$ab,$aa,$57,$56,$ab,$aa,$57,$56,$ab ; middle-middle
 | |
| 
 | |
| 	db $c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0 ; middle-right
 | |
| 	db $c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0 ; middle-right
 | |
| 
 | |
| 	db $6a,$fd,$6f,$ff,$60,$ff,$7f,$ff,$7f,$ff,$00,$ff,$00,$00,$00,$00 ; lower-left
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| 
 | |
| 	db $aa,$57,$fe,$ff,$00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$00,$00,$00 ; lower-middle
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| 
 | |
| 	db $c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e0,$00,$e0,$00,$00,$00,$00 ; lower-right
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| CardBackSprites19End:
 | |
| CardBackSprites18:
 | |
| 	db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa; top-left 
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 	
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$01,$ff,$fd,$ff,$55,$af,$ad,$57,$55,$af ; top-middle
 | |
| 	db $ad,$57,$55,$af,$ad,$57,$55,$af,$ad,$57,$55,$af,$ad,$57,$55,$af ; upper-m,iddle
 | |
| 	
 | |
| 	db $00,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0 ; top-right
 | |
| 	db $80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0 ; upper-right
 | |
| 	
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; upper-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff ; lower-left
 | |
| 	
 | |
| 	db $ad,$57,$55,$af,$ad,$57,$55,$af,$ad,$57,$55,$af,$ad,$57,$55,$af ; upper-m,iddle
 | |
| 	db $ad,$57,$55,$af,$ad,$57,$55,$af,$ad,$57,$55,$af,$ad,$57,$fd,$ff ; lower-middle
 | |
| 	
 | |
| 	db $80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0 ; lower-right
 | |
| 	db $80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0,$80,$c0 ; upper-right
 | |
| 	
 | |
| 	db $60,$ff,$7f,$ff,$7f,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-left
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; under-left
 | |
| 	
 | |
| 	db $01,$ff,$ff,$ff,$ff,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-middle
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; under-middle
 | |
| 	
 | |
| 	db $80,$c0,$80,$c0,$80,$c0,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-right
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; under-right
 | |
| 	
 | |
| 
 | |
| 	
 | |
| CardBackSprites18End:
 | |
| CardBackSprites17:
 | |
| 
 | |
| 	db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa ; top-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	
 | |
| 	db $00,$ff,$ff,$ff,$ff,$ff,$03,$ff,$fb,$ff,$5b,$af,$ab,$5f,$5b,$af ; top-middle
 | |
| 	db $ab,$5f,$5b,$af,$ab,$5f,$5b,$af,$ab,$5f,$5b,$af,$ab,$5f,$5b,$af ; middle-middle
 | |
| 	
 | |
| 	db $00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80 ; top-rihgt
 | |
| 	db $00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80 ; middle-rihgt
 | |
| 
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa ; middle-left
 | |
| 	db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff,$60,$ff,$7f,$ff ; lower-left
 | |
| 	
 | |
| 	db $ab,$5f,$5b,$af,$ab,$5f,$5b,$af,$ab,$5f,$5b,$af,$ab,$5f,$5b,$af ; middle-middle
 | |
| 	db $ab,$5f,$5b,$af,$ab,$5f,$5b,$af,$ab,$5f,$fb,$ff,$03,$ff,$ff,$ff ; lower-middle
 | |
| 	
 | |
| 	db $00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80 ; middle-rihgt
 | |
|   db $00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80 ; lower-rihgt
 | |
| 
 | |
| 	db $7f,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-left 
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| 	
 | |
| 	db $ff,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-middle
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| 	
 | |
| 	db $00,$80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; bottom-right
 | |
| 	db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; empty
 | |
| CardBackSprites17End:
 | |
| 
 | |
| MainUITilemap:
 | |
|   db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	db $01, $01, $09, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $08, $01, $01
 | |
| 	db $01, $01, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $01, $01
 | |
| 	db $01, $01, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $01, $01
 | |
| 	db $01, $01, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $01, $01
 | |
| 	db $01, $01, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $01, $01
 | |
| 	db $01, $01, $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $04, $01, $01
 | |
| 	db $01, $01, $06, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $07, $01, $01
 | |
| 	db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
 | |
| 	
 | |
| MainUITilemapEnd:
 | |
| 
 | |
| POPS
 | |
| 
 | |
| ScrollBackgroundTile:
 | |
|   ld hl, vTime
 | |
|   call IncrementTimer
 | |
|   
 | |
|   ld a, [vTime+1]
 | |
|   cp a, $01
 | |
|   ret c ; if the timer hasn't passed $0100, don't do anythhiing.
 | |
|   
 | |
|   ld a, 0 
 | |
|   ld [vTime], a 
 | |
|   ld [vTime+1], a 
 | |
|   
 | |
|   ld hl, SquaresTiles
 | |
|   ld a, [vFrameCountSquares]
 | |
|   inc a
 | |
|   call ArrayClampLooping
 | |
|   ld [vFrameCountSquares], a
 | |
|   
 | |
|   sla a ; mulltiiply by 2
 | |
|   ld b, 0
 | |
|   ld c, a 
 | |
|   ld hl, SquaresTiles + 1
 | |
|   add hl, bc 
 | |
|   ld a, [hl+]
 | |
|   ld [vCurrentBackgroundTile], a 
 | |
|   ld a, [hl+]
 | |
|   ld [vCurrentBackgroundTile+1], a
 | |
|   
 | |
|   ret
 | |
| SquaresTiles:
 | |
|   db 8
 | |
|   dw SquaresTileset1
 | |
|   dw SquaresTileset2
 | |
|   dw SquaresTileset3
 | |
|   dw SquaresTileset4
 | |
|   dw SquaresTileset5
 | |
|   dw SquaresTileset6
 | |
|   dw SquaresTileset7
 | |
|   dw SquaresTileset8
 | |
| 
 | |
| SquaresTileset1:
 | |
| 	db $fe,$00,$82,$00,$82,$00,$82,$00,$82,$00,$82,$00,$fe,$00,$00,$00
 | |
| 
 | |
| SquaresTileset2:
 | |
| 	db $00,$00,$7f,$00,$41,$00,$41,$00,$41,$00,$41,$00,$41,$00,$7f,$00
 | |
| 
 | |
| SquaresTileset3:
 | |
| 	db $bf,$00,$00,$00,$bf,$00,$a0,$00,$a0,$00,$a0,$00,$a0,$00,$a0,$00
 | |
| 	
 | |
| SquaresTileset4:
 | |
| 	db $50,$00,$df,$00,$00,$00,$df,$00,$50,$00,$50,$00,$50,$00,$50,$00
 | |
| 	
 | |
| SquaresTileset5:
 | |
| 	db $28,$00,$28,$00,$ef,$00,$00,$00,$ef,$00,$28,$00,$28,$00,$28,$00
 | |
| 
 | |
| SquaresTileset6:
 | |
| 	db $14,$00,$14,$00,$14,$00,$f7,$00,$00,$00,$f7,$00,$14,$00,$14,$00
 | |
| 
 | |
| SquaresTileset7:
 | |
| 	db $0a,$00,$0a,$00,$0a,$00,$0a,$00,$fb,$00,$00,$00,$fb,$00,$0a,$00
 | |
| 
 | |
| SquaresTileset8:
 | |
| 	db $05,$00,$05,$00,$05,$00,$05,$00,$05,$00,$fd,$00,$00,$00,$fd,$00
 | |
| 
 | |
| SquaresTilesetEnd:
 | |
| 
 | |
| 
 |