PUSHS UNION "Screen Variables", WRAM0[SCREEN_VARS_START] ds 16 ; why are we putting this so far in? i don't remember but whatever vPreviousCardIndex: db POPS ScreenCardRead: dw CardReadSetup dw CardReadUpdate dw CardReadDraw dw CardReadTeardown CardReadSetup: ld a, 1 ld [vBlocked], a ld [vTooBusyForPrinter], a ld hl, .asyncTask call Async_Spawn_HL ld hl, ZEROES ld de, MY_OAM ld bc, $100 call CopyRange call CheckForPrinter ret .asyncTask: ld hl, CardRead.UITilemap ; origin ld de, _SCRN0 ; destination ld b, 18 ; height ld c, 20 ; width call CopyTilesToMap ld hl, CardRead.PrinterTiles ld de, _VRAM + $1000 - $10*16 ld bc, CardRead.PrinterTilesEnd - CardRead.PrinterTiles call CopyRange ld a, 0 ld [vBlocked], a call ChangedCardTask ret CardReadUpdate: 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, CardRead.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, ScreenSpreadSelect call ChangeScene ret .doneWithB ld a, [vSelectedSpreadCard] ld hl, rMYBTNP bit 1, [hl] jp z, :+ ; skip the following code if left is not pressed dec a : bit 0, [hl] jp z, :+ ; skip the following code if right is not pressed inc a : ld [vSelectedSpreadCard], a ld a, [vCurrentSpread] ld l, a ld a, [vCurrentSpread+1] ld h, a ld a, [vSelectedSpreadCard] call ArrayClampLooping ld [vSelectedSpreadCard], a ld hl, vPreviousSpreadCard 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, ChangedCardTask call Async_Spawn_HL ret CardReadDraw: 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 CardReadTeardown: ret ChangedCardTask: ld a, [vSelectedSpreadCard] ld [vPreviousSpreadCard], a ld a, [vCurrentSpread] ld c, a ld a, [vCurrentSpread+1] ld b, a ; gett bc as cuurrent spread address ld hl, _SCRN0 + (32*1)+11 ld a, [vSelectedSpreadCard] call DrawSpreadMinimap ld a, [vCurrentSpread] ld l, a ld a, [vCurrentSpread+1] ld h, a call PassList ; skip spread layout ld a, [vSelectedSpreadCard] or a, a .loopThroughSpreadPositions jp z, .foundSpreadPositionDescription call PassList call PassList dec a jp .loopThroughSpreadPositions .foundSpreadPositionDescription ld de, _SCRN0 + 32*5 + 11 call PrintString ld de, _SCRN0 + 32*6 + 11 call PrintString ld hl, SHUFFLED_DECK+1 ld a, [vSelectedSpreadCard] ld c, a ld b, 0 add hl, bc ld a, [hl] ld [vSelectedCardIndex], a ld [vPreviousCardIndex], a call LoadCardData call CardRead.UpdatePrintUIImmediate ld a, 0 ld [vTooBusyForPrinter], a ret CardRead.UpdatePrintUI: ld a, [vPrinterState] ld hl, vPreviousPrinterState cp a, [hl] ret z ; if the printer state has not changed, return. ; otherwise updae previous printer state and we're good ld [hl], a ld hl, CardRead.UpdatePrintUIImmediate call Async_Spawn_HL ret CardRead.UpdatePrintUIImmediate: ld a, [vPrinterState] ld hl, CardRead.PrinterNotDetected cp a, PS_NONE jp z, .setIt ld hl, CardRead.PrinterAvailable cp a, PS_READY jp z, .setIt ld hl, CardRead.PrinterFull cp a, PS_FULL jp z, .setIt ld hl, CardRead.PrinterPrinting cp a, PS_PRINTING jp z, .setIt ld hl, CardRead.PrinterError cp a, PS_ERROR jp z, .setIt .setIt ld de, _SCRN0 + 32*7 + 10 ld b, 2 ld c, 9 call CopyTilesToMap ret CardRead.PrinterNotDetected: db $06, $05, $05, $05, $05, $05, $05, $05, $07 db $01, $01, $01, $01, $01, $01, $01, $01, $01 CardRead.PrinterAvailable: db $03, $00, $f1, $f2, $00, $f3, $f4, $00, $04 db $06, $05, $05, $05, $05, $05, $05, $05, $07 CardRead.PrinterFull: db $03, $00, $f1, $f2, $00, $f9, $fa, $00, $04 db $06, $05, $05, $05, $05, $05, $05, $05, $07 CardRead.PrinterPrinting: db $03, $00, $f1, $f2, $00, $f7, $f8, $00, $04 db $06, $05, $05, $05, $05, $05, $05, $05, $07 CardRead.PrinterError: db $03, $00, $f1, $f2, $00, $f5, $f6, $00, $04 db $06, $05, $05, $05, $05, $05, $05, $05, $07 CardRead.PrinterTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$1c,$00,$0e,$38,$3f,$64,$7f,$7f,$7f,$7f,$40,$7f,$40,$3f,$3f db $00,$00,$00,$00,$00,$00,$06,$b6,$ff,$ff,$ff,$11,$ff,$11,$fe,$fe db $00,$00,$00,$00,$0e,$0e,$12,$1e,$24,$3c,$38,$38,$00,$00,$00,$00 db $00,$00,$00,$00,$5a,$5a,$92,$92,$5a,$5a,$52,$52,$9b,$9b,$00,$00 db $00,$00,$18,$18,$18,$18,$18,$18,$18,$18,$00,$00,$18,$18,$00,$00 db $00,$00,$00,$00,$d8,$d8,$94,$94,$d8,$d8,$94,$94,$d2,$d2,$00,$00 db $00,$00,$00,$00,$19,$19,$15,$15,$19,$19,$11,$11,$11,$11,$00,$00 db $00,$00,$00,$00,$92,$92,$5a,$5a,$96,$96,$52,$52,$52,$52,$00,$00 db $00,$00,$00,$00,$1d,$1d,$11,$11,$19,$19,$11,$11,$11,$11,$00,$00 db $00,$00,$00,$00,$52,$52,$52,$52,$52,$52,$52,$52,$db,$db,$00,$00 CardRead.PrinterTilesEnd: CardRead.UITilemap: db $0e, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0f, $09, $02, $02, $02, $02, $02, $02, $02, $08, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $04, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $04, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $04, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $04, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $04, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $04, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $06, $05, $05, $05, $05, $05, $05, $05, $07, $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 CardRead.UITilemapEnd: