TheMagician: db 10, "THE " db 10, "MAGICIAN " db 9, "capacity " db 9, "knowing " db 9, "manifest " dw MagicianMapEnd - MagicianMap dw MagicianMap dw MagicianTilesEnd - MagicianTiles dw MagicianTiles dw .SpriteTilesEnd - .SpriteTiles dw .SpriteTiles dw .fInit dw .fUpdate dw .fDraw dw .fPrintPrep ; CARD_VARS_START + 0 ; timer for lemniscate ; CARD_VARS_START + 2 ; frame counter 1 ; CARD_VARS_START + 3 ; frame counter 2 .fInit: ld hl, CVS ld a, 0 ld [hl+], a ; CVS timer for flame ld [hl+], a ld [hl+], a ; CVS+2 frame of flame 1 ld [hl+], a ; CVS+3 frame of flame 2 ld [hl+], a ; CVS+4 color cycling frame ld [hl+], a ; CVS+5 sprite frame ld [hl+], a ; CVS+6 delay timer for sheen ld [hl+], a ld [hl+], a ; CVS+8 frame of sheen animation ; starting values for flame 1 ld a, 0 ; starting frame number for flame 1 ld [CVS+2], a ld hl, MY_OAM ld [hl], 36 ; y inc hl ld [hl], 39 ; x inc hl ld [hl], 1 ; tile inc hl set OAMB_PAL1, [hl] ; srtarting values for flame 2 ld a, 10 ld [CVS+3], a ld hl, MY_OAM + 1*4 ; pre-populate with flame 2 ld [hl], 36 ; y inc hl ld [hl], 59 ; x inc hl ld [hl], 2 ; tile inc hl set OAMB_PAL1, [hl] ; starting values for sheens ld hl, MY_OAM + 2*4 ; sword sheen sprite goes in OAM+2 ld [hl], 0 inc hl ld [hl], 0 inc hl ld [hl], 3 ; sword sheen sprite ld hl, MY_OAM + 3*4 ; pentaacle sheen ggoes in OAM+3 ld [hl], 0 inc hl ld [hl], 0 inc hl ld [hl], 4 ; pentacle sheen sprite inc hl set OAMB_PRI, [hl] ret .fUpdate: ld hl, CVS call IncrementTimer ld a, [CVS+1] ; checking the high byte of the timer cp a, $01 ; $10 = 1 second, $02 = 1/8 of a second jp c, .doneWithTimer1 ; if the timer is less than $0600, skip ; if the timer is greater or equal to $0600, reset it ld a, 0 ld [CVS], a ld [CVS+1], a call .drawFlames .doneWithTimer1 ld hl, CVS+6 call IncrementTimer ld a, [CVS+6+1] cp a, $40 ; this should go off every four seconds jp c, .doneWithTimer2 ld a, 0 ld [CVS+6], a ld [CVS+6+1], a ld a, 1 ld [CVS+8], a ; set the sheen animation to run .doneWithTimer2 ld a, [CVS+8] cp a, 0 jp z, .doneWithTimer3 ; play the sheen animation call .runSheen .doneWithTimer3 ret .drawFlames: ;update positions based on animation data ;draw frame 1 ld hl, .flameAnimation ld a, [CVS+2] inc a call ArrayClampLooping ld [CVS+2], a ld b, 0 ld c, a ld hl, .flameAnimation+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b inc hl ld c, [hl] ; load x into c ld hl, MY_OAM ld [hl], b inc hl ld [hl], c inc hl ;draw frame 2 ld hl, .flameAnimation ld a, [CVS+3] inc a call ArrayClampLooping ld [CVS+3], a ld b, 0 ld c, a ld hl, .flameAnimation+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b inc hl ld c, [hl] ; load x into c ld hl, MY_OAM + 1*4 ld [hl], b inc hl ld [hl], c inc hl ; advance the three-frame palette cyclling animation ld b, 12 ld a, [CVS+4] inc a call ArrayClampLoopingB ld [CVS+4], a cp a, 0 jp z, :+ cp a, 4 jp z, :++ cp a, 8 jp z, :+++ jp .doneWithPalette : ld a, %10_10_00_00 ld [rOBP1], a jp .doneWithPalette : ld a, %00_10_10_00 ld [rOBP1], a jp .doneWithPalette : ld a, %10_00_10_00 ld [rOBP1], a jp .doneWithPalette .doneWithPalette ; advance the two-frame sprite swapping animation ld b, 8 ld a, [CVS+5] inc a call ArrayClampLoopingB ld [CVS+5], a cp a, 0 jp z, :+ cp a, 4 jp z, :++ jp .doneWithSpriteSwap : ld hl, MY_OAM + 0*4 + 2 ld [hl], 1 ld hl, MY_OAM + 1*4 + 2 ld [hl], 2 jp .doneWithSpriteSwap : ld hl, MY_OAM + 0*4 + 2 ld [hl], 2 ld hl, MY_OAM + 1*4 + 2 ld [hl], 1 jp .doneWithSpriteSwap .doneWithSpriteSwap ; two-frame left-right animation ld a, [CVS+5] bit 0, a jp z, :+ jp :++ : ld hl, MY_OAM + 0*4 + 3 ld a, OAMF_XFLIP xor a, [hl] ld [hl], a ld hl, MY_OAM + 1*4 + 3 ld a, OAMF_XFLIP xor a, [hl] ld [hl], a : ret .flameAnimation: db 32, 29, 35, 28, 35, 26, 36, 25, 37, 24, 39, 24, 40, 25, 42, 27, 44, 29, 45, 31, 46, 33, 48, 34, 50, 34, 51, 33, 53, 32, 54, 30, 55, 29, 55, 28, 55, 26, 54, 25, 53, 24, 51, 24, 50, 25, 48, 27, 46, 29, 45, 31, 44, 33, 42, 34, 40, 34, 39, 33, 37, 32, 36, 30, 35 .runSheen: ld hl, .swordSheen ld a, [CVS+8] inc a call ArrayClampLooping ld [CVS+8], a ld b, 0 ld c, a ld hl, .swordSheen+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b dec b inc hl ld c, [hl] ; load x into c ld hl, MY_OAM + 2*4 ld [hl], b inc hl ld [hl], c ld a, [CVS+8] ld b, 0 ld c, a ld hl, .pentacleSheen+1 add hl, bc ; add bc twice (it's a list of pairs) to jump to the bc'th element add hl, bc ; of the list ld b, [hl] ; load y into b inc hl ld c, [hl] ; load x into c ld hl, MY_OAM + 3*4 ld [hl], b inc hl ld [hl], c inc hl ret .swordSheen: db 22, 96, 0, 96, 21, 96, 22, 96, 23, 96, 24, 96, 25, 96, 26, 96, 27, 96, 28, 96, 29, 96, 30, 96, 31, 96, 32, 96, 33, 96, 34, 96, 35, 96, 36, 96, 37, 96, 38, 96, 39, 96, 40, 96, 41, .pentacleSheen: db 22, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 0, 96, 32, 96, 33, 96, 34, 96, 35, 96, 36, 96, 37, 96, 38, 96, 39, 96, 40, 96, 41, .fDraw: ret .fPrintPrep: ret .SpriteTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $20,$20,$30,$30,$38,$28,$3c,$24,$6c,$54,$c6,$fa,$6c,$54,$38,$38 db $0c,$0c,$18,$18,$38,$28,$3c,$24,$6c,$54,$c6,$fa,$6c,$54,$38,$38 db $00,$d0,$00,$68,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$80,$00,$80,$00,$80 .SpriteTilesEnd: MagicianTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $ff,$ff,$ff,$ff,$f0,$f0,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe db $01,$23,$03,$27,$03,$3e,$3f,$3e,$01,$3e,$01,$16,$01,$06,$01,$06 db $fe,$81,$d5,$aa,$bb,$c4,$d5,$aa,$ae,$d1,$d5,$aa,$c2,$9d,$d1,$8e db $ff,$00,$ff,$00,$ff,$00,$ff,$70,$df,$50,$df,$50,$df,$50,$57,$d8 db $ff,$00,$ff,$00,$ff,$00,$77,$88,$ff,$01,$dd,$23,$ff,$01,$57,$a9 db $df,$50,$df,$50,$df,$50,$d7,$d8,$df,$58,$dd,$56,$fb,$26,$fb,$96 db $ff,$01,$dd,$23,$ff,$01,$55,$aa,$ff,$00,$5d,$a2,$ff,$00,$55,$aa db $fb,$56,$f2,$ad,$f0,$4b,$c0,$b1,$c0,$60,$00,$e0,$80,$60,$00,$e0 db $ff,$00,$dd,$22,$ff,$00,$55,$aa,$7f,$80,$5d,$a2,$7f,$80,$15,$6a db $3f,$40,$15,$6a,$3b,$44,$15,$2a,$0f,$10,$05,$0a,$00,$07,$01,$04 db $01,$04,$01,$04,$01,$04,$01,$c4,$01,$fc,$85,$f8,$c5,$78,$65,$b0 db $ff,$00,$dd,$22,$e0,$1f,$40,$a0,$80,$40,$00,$c0,$00,$8f,$03,$9c db $ff,$00,$dd,$22,$03,$fc,$01,$06,$01,$02,$00,$03,$00,$f1,$c0,$39 db $07,$98,$0f,$90,$0f,$96,$09,$96,$0f,$91,$0f,$91,$0f,$90,$87,$9b db $e0,$19,$f0,$09,$f0,$69,$91,$69,$f1,$09,$71,$89,$f1,$09,$e0,$d9 db $d0,$8b,$d0,$89,$50,$89,$50,$08,$50,$08,$40,$18,$40,$18,$40,$18 db $80,$60,$00,$e0,$c0,$20,$40,$b0,$c0,$30,$40,$b0,$80,$70,$40,$b8 db $86,$99,$83,$8c,$81,$86,$84,$87,$83,$87,$80,$87,$80,$c7,$80,$c5 db $60,$98,$c0,$30,$80,$70,$20,$f0,$c0,$f0,$00,$f1,$00,$f1,$00,$a1 db $40,$18,$40,$18,$40,$18,$40,$18,$40,$18,$40,$18,$40,$1c,$40,$1c db $4c,$17,$44,$1f,$44,$1f,$43,$1f,$53,$0f,$53,$0f,$53,$0f,$51,$0f db $ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$f0,$f0,$ff,$ff,$ff,$ff db $7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$0f,$0f,$ff,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$0f,$0f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f db $e0,$3c,$50,$be,$b8,$4f,$54,$af,$ef,$13,$55,$aa,$aa,$55,$55,$aa db $e5,$10,$45,$b0,$85,$70,$55,$a0,$95,$60,$55,$a0,$95,$60,$15,$e0 db $b5,$60,$75,$a0,$b5,$60,$35,$e0,$b5,$60,$ff,$ff,$00,$00,$7f,$7f db $40,$30,$40,$30,$40,$30,$40,$10,$40,$10,$ff,$ff,$00,$00,$fe,$fe db $01,$06,$01,$06,$01,$06,$01,$06,$01,$06,$e1,$e6,$21,$3e,$11,$1e db $91,$9e,$51,$de,$49,$ce,$49,$ce,$89,$8e,$c5,$c6,$35,$36,$25,$e6 db $c3,$42,$83,$82,$03,$02,$01,$01,$81,$81,$c1,$41,$e0,$20,$c0,$40 db $51,$0f,$50,$0f,$52,$0d,$50,$07,$54,$07,$54,$07,$d4,$87,$d4,$87 db $d4,$87,$d4,$87,$d4,$87,$04,$f7,$60,$ff,$f8,$ff,$fc,$ff,$fe,$ff db $80,$c4,$80,$c4,$80,$c2,$80,$c2,$80,$c2,$80,$c2,$80,$c2,$80,$c2 db $80,$c2,$80,$e2,$40,$7e,$7e,$3e,$40,$3e,$40,$34,$40,$30,$40,$30 db $00,$21,$00,$21,$01,$23,$01,$23,$01,$23,$01,$23,$01,$23,$01,$23 db $02,$05,$00,$07,$02,$05,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03 db $3e,$bf,$41,$ff,$81,$ff,$9e,$e3,$be,$c3,$be,$c3,$ff,$81,$ff,$80 db $ff,$84,$ff,$a3,$ff,$a9,$7f,$fd,$8f,$7d,$07,$fd,$07,$fd,$05,$ff db $e8,$57,$c0,$ff,$20,$df,$00,$ff,$80,$7f,$00,$ff,$00,$ff,$00,$ff db $8a,$77,$00,$ff,$00,$ff,$00,$ff,$07,$ff,$0f,$ff,$1f,$ff,$3f,$ff db $40,$1e,$40,$1e,$40,$1e,$48,$1e,$48,$1f,$48,$1f,$48,$1f,$48,$1f db $ee,$11,$55,$aa,$aa,$55,$55,$aa,$2a,$d5,$15,$6a,$2a,$55,$11,$6e db $0a,$35,$15,$2a,$0a,$35,$01,$1e,$0a,$15,$04,$1b,$02,$0d,$01,$0e db $ff,$00,$ff,$00,$8f,$70,$03,$8c,$01,$02,$00,$03,$03,$8c,$07,$f8 db $ff,$00,$ff,$00,$ff,$00,$77,$88,$fe,$01,$dc,$23,$ff,$00,$57,$a8 db $ff,$00,$ff,$00,$f1,$0e,$40,$b1,$00,$c0,$80,$40,$c0,$31,$51,$ae db $ff,$00,$ff,$00,$ff,$00,$77,$88,$7f,$80,$5d,$a2,$ff,$00,$57,$a8 db $1f,$1f,$3f,$20,$1f,$1f,$00,$00,$02,$02,$06,$06,$3f,$7f,$46,$56 db $ff,$ff,$ff,$00,$ff,$ff,$00,$00,$00,$00,$00,$00,$ff,$ff,$00,$00 db $ff,$80,$f5,$0a,$80,$ff,$7f,$7f,$00,$00,$00,$00,$ff,$ff,$00,$00 db $ff,$01,$55,$aa,$00,$ff,$fe,$ff,$01,$01,$07,$07,$f8,$f8,$38,$3f db $00,$00,$ff,$ff,$00,$00,$3e,$3e,$c1,$c9,$00,$77,$00,$1c,$c1,$f7 db $67,$64,$c3,$c2,$01,$01,$01,$01,$83,$83,$46,$45,$4f,$48,$87,$84 db $03,$03,$00,$00,$01,$ff,$fc,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $80,$80,$00,$00,$ff,$ff,$00,$ff,$38,$ff,$83,$ff,$c7,$ff,$af,$ff db $00,$00,$00,$00,$ff,$ff,$00,$ff,$e7,$ff,$f0,$ff,$ff,$ff,$ff,$ff db $00,$00,$00,$00,$ff,$ff,$00,$ff,$ff,$ff,$00,$ff,$80,$ff,$c0,$ff db $c3,$ff,$c7,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$3f,$ff,$1f,$bf,$1f,$3f db $3e,$3e,$00,$00,$fc,$ff,$01,$ff,$f3,$ff,$07,$ff,$07,$ff,$f3,$ff db $f9,$ff,$fd,$ff,$fc,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$ff,$ff,$ff,$ff db $2f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$fe,$ff,$fc,$ff,$fd,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $3f,$ff,$7f,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$e0,$ff,$c0,$fc,$d8,$e4 db $80,$7f,$00,$ff,$00,$ff,$f0,$ff,$fc,$ff,$fc,$ff,$ff,$ff,$ff,$ff db $99,$e4,$80,$fd,$8a,$c5,$88,$c6,$88,$c4,$90,$eb,$c1,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff,$3f,$ff,$bf,$7f db $3f,$ff,$3f,$7f,$3f,$7f,$3f,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f9,$ff,$f0,$f9,$f0,$f8 db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff,$07,$ff db $f2,$f8,$f1,$fe,$e3,$f8,$e5,$f0,$e0,$f1,$e0,$f9,$f0,$ff,$fe,$ff db $07,$8f,$a7,$0f,$c7,$0f,$87,$7f,$4f,$1f,$4f,$1f,$0f,$1f,$1f,$3f db $3f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $9f,$3f,$1f,$ff,$1f,$7f,$1f,$3f,$1f,$7f,$3f,$ff,$ff,$ff,$fe,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$c1,$ff,$80,$ef,$20,$cf,$03,$dc,$03,$d4 db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$1f,$ff,$9f,$7f,$8f,$7f db $21,$56,$00,$63,$11,$20,$04,$38,$08,$97,$08,$90,$08,$d1,$80,$ff db $8f,$7f,$0f,$ff,$cf,$3f,$1f,$3f,$1f,$ff,$3f,$ff,$7f,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fb,$f9,$f3,$f0,$e1,$e2,$f9 db $f3,$fc,$c7,$f0,$81,$e2,$80,$c6,$c0,$ec,$ec,$ff,$ff,$ff,$ff,$ff db $95,$60,$55,$a0,$95,$60,$35,$e0,$b5,$60,$75,$a0,$b5,$60,$35,$e0 db $00,$00,$ff,$ff,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$00,$00 db $aa,$55,$00,$ff,$a2,$5d,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$80,$ff db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$77,$88 db $ff,$00,$ff,$00,$ff,$00,$77,$88,$ff,$00,$dd,$22,$ff,$00,$57,$a8 db $ff,$00,$dd,$22,$ff,$00,$55,$aa,$ff,$00,$5d,$a2,$ff,$00,$55,$aa db $ff,$00,$55,$aa,$fb,$04,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$55,$aa db $ff,$00,$55,$aa,$fb,$04,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$d5,$aa db $fe,$01,$55,$aa,$bb,$44,$55,$aa,$ee,$11,$55,$aa,$aa,$55,$55,$aa db $ee,$11,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$11,$ee db $aa,$55,$55,$aa,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55,$01,$fe db $aa,$55,$44,$bb,$aa,$55,$00,$ff,$aa,$55,$04,$fb,$aa,$55,$00,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $46,$6e,$3f,$7f,$06,$06,$02,$02,$00,$00,$00,$00,$00,$00,$00,$00 db $aa,$55,$44,$bb,$aa,$55,$00,$ff,$aa,$55,$ff,$ff,$00,$00,$00,$00 MagicianTilesEnd: MagicianMap: db $6f, $1e, $6f, $6f, $6f, $6f, $6f, $6f db $1f, $20, $70, $70, $70, $70, $70, $70 db $21, $22, $23, $26, $27, $71, $71, $71 db $72, $2b, $24, $28, $29, $73, $72, $72 db $74, $33, $25, $2c, $2d, $1d, $74, $74 db $75, $75, $34, $3c, $3e, $2a, $45, $75 db $76, $76, $6c, $3d, $1c, $2e, $46, $76 db $7a, $7a, $35, $36, $37, $44, $3f, $77 db $4b, $4c, $4d, $4e, $38, $2f, $40, $6e db $79, $6d, $4f, $50, $39, $3a, $41, $42 db $53, $54, $56, $51, $52, $3b, $43, $5b db $6a, $55, $57, $78, $58, $59, $5a, $5d db $6b, $65, $66, $67, $60, $61, $5c, $5e db $78, $5f, $68, $69, $62, $63, $78, $78 db $78, $78, $78, $1b, $32, $64, $78, $78 db $78, $78, $78, $30, $31, $78, $78, $78 MagicianMapEnd: