; screen variables shared with screencardread PUSHS UNION "Screen Variables", WRAM0[SCREEN_VARS_START] ds 32 ; why are we putting this so far in? i don't remember but whatever vPrintJobState: db ; start, wait til ready, top row, row a, wait, printing, bottom row vPrintingRow: db vExposureSetting: db POPS ScreenCardBrowse: dw CardBrowseSetup dw CardBrowseUpdate dw CardBrowseDraw dw CardBrowseTeardown CardBrowseSetup: ld a, 1 ld [vBlocked], a ld [vTooBusyForPrinter], a ; make sure working oam is clear ld hl, ZEROES ld de, MY_OAM ld bc, $100 call CopyRange ld hl, .asyncTask call Async_Spawn_HL ret .asyncTask: ld hl, PrinterTiles ld de, _VRAM + $1000 - $10*16 ld bc, PrinterTiles.End - PrinterTiles call CopyRange ld hl, CardBrowse.UITilemap ; origin ld de, _SCRN0 ; destination ld b, 18 ; height ld c, 20 ; width call CopyTilesToMap ld a, 0 ld [vBlocked], a call RefreshCardTask ret CardBrowseUpdate: ld a, [vPrinterStart] cp a, 0 call z, CardUpdate call ScrollBackgroundTile ld a, [vTooBusyForPrinter] cp a, 0 jp nz, .donePrinter .checkForPrinter ld a, [vPrinterStart] cp a, 0 call z, CheckForPrinter .updatePrintUI ld a, [vPrinterStart] cp a, 0 call z, UpdatePrintUI .runPrintJob ld a, [vPrinterStart] cp a, 0 call nz, RunPrintJob .printButton ld hl, rMYBTNP bit 6, [hl] ; check select? jp z, .donePrinter ld a, [vPrinterState] cp a, PS_READY jp nz, .donePrinter call KickOffPrintJob ret .donePrinter ld hl, rMYBTNP bit 5, [hl] jp z, .doneWithB ld hl, ScreenMainMenu call ChangeScene ret .doneWithB ld a, [vSelectedCardIndex] ld hl, rMYBTNP bit 0, [hl] jp z, :+ ; skip the following code if left is not pressed inc a : bit 1, [hl] jp z, :+ ; skip the following code if right is not pressed dec a : ld [vSelectedCardIndex], a ld hl, Cards call ArrayClampLooping ld [vSelectedCardIndex], a ld a, [vSelectedCardIndex] ld hl, vPreviousCardIndex cp a, [hl] ret z ; if the selected card diddn't change, nothing to do ld a, [vBlocked] cp a, 0 ret nz ld a, 1 ld [vTooBusyForPrinter], a ld hl, RefreshCardTask call Async_Spawn_HL ; make sure working oam is clear ld hl, ZEROES ld de, MY_OAM ld bc, $100 call CopyRange ret CardBrowseDraw: ld a, [vCurrentBackgroundTile] ld l, a ld a, [vCurrentBackgroundTile+1] ld h, a ld de, _VRAM + $1000 + 1*16 call CopyOneTileData call CardDraw ld de, SAFE_DMA_LOCATION ld a, HIGH(MY_OAM) call RunDMA ret RefreshCardTask: ld a, [vSelectedCardIndex] ld [vPreviousCardIndex], a call DrawDeckMinimap call LoadCardData call UpdatePrintUIImmediate ld a, 0 ld [vTooBusyForPrinter], a ret DrawDeckMinimap: ld hl, Cards ld c, [hl] ; count of cards srl c set 0, c ld hl, vSelectedCardIndex ld d, [hl] ; selected card! ld b, $ff ; start at -1 lol ld hl, _SCRN0 + 32 + 11 .loop inc b ld a, b cp a, 5 jp nz, .noNewLine ld [hl], $13 ld hl, _SCRN0 + 32*2 + 11 .noNewLine ld a, b cp a, c jp nc, .doneDrawing ld a, d srl a cp a, b jp z, .drawSelectedCard .drawUnselectedCards ld [hl], $12 inc hl jp .loop .drawSelectedCard bit 0, d jp nz, .drawSelectedSecond ld [hl], $14 inc hl jp .loop .drawSelectedSecond ld [hl], $15 inc hl jp .loop .doneDrawing ld [hl], $13 ret CardBrowseTeardown: ret CardBrowse.UITilemap: db $0e, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0f, $09, $02, $02, $02, $02, $02, $02, $02, $02, $08 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $00, $04 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $00, $04 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $06, $05, $05, $05, $05, $05, $05, $05, $05, $07 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $11, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 CardBrowse.UITilemapEnd: