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 ; 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 .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,$e0,$e0,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$fe db $01,$21,$03,$23,$03,$22,$03,$3e,$01,$02,$01,$02,$01,$02,$01,$02 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,$b3,$c0,$60,$40,$a0,$c0,$20,$40,$a0 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,$04,$01,$0c,$05,$88,$85,$58,$45,$b0 db $ff,$00,$dd,$22,$ff,$3f,$60,$a0,$c0,$60,$40,$c0,$80,$df,$8f,$90 db $ff,$00,$dd,$22,$ff,$fc,$03,$06,$03,$02,$01,$01,$01,$f1,$e1,$19 db $8f,$90,$8f,$90,$8f,$96,$89,$96,$8f,$91,$8f,$91,$8f,$90,$8f,$93 db $f1,$09,$f1,$09,$f1,$69,$91,$69,$f1,$09,$71,$89,$f1,$09,$f0,$c9 db $d0,$8b,$d0,$89,$50,$89,$50,$08,$50,$08,$40,$18,$40,$10,$40,$10 db $c0,$20,$40,$a0,$c0,$20,$40,$a0,$c0,$20,$40,$a0,$80,$60,$40,$a0 db $8e,$91,$87,$88,$81,$86,$80,$87,$83,$84,$83,$84,$80,$87,$80,$84 db $70,$88,$e0,$10,$80,$70,$00,$f0,$e0,$10,$e0,$10,$00,$f0,$00,$20 db $40,$10,$40,$10,$40,$10,$40,$10,$40,$10,$40,$10,$40,$10,$40,$10 db $48,$14,$40,$1c,$40,$1c,$40,$1e,$50,$0e,$50,$0e,$50,$0e,$50,$0f db $fe,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$e0,$e0,$ff,$ff,$ff,$ff db $7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$07,$07,$ff,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$07,$07,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f db $c0,$20,$40,$b0,$b0,$48,$50,$ac,$ec,$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 $95,$60,$55,$a0,$95,$60,$15,$e0,$95,$60,$00,$ff,$00,$00,$7f,$7f db $40,$20,$40,$20,$40,$20,$40,$10,$40,$10,$00,$ff,$00,$00,$fe,$fe db $01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$e2,$01,$22,$01,$12 db $81,$92,$41,$52,$41,$4a,$41,$4a,$81,$8a,$c1,$ca,$31,$36,$21,$e6 db $41,$46,$81,$82,$00,$03,$00,$03,$80,$81,$40,$40,$20,$20,$40,$40 db $50,$0f,$50,$0f,$52,$0d,$50,$87,$50,$87,$50,$87,$50,$87,$50,$87 db $50,$87,$50,$87,$50,$87,$00,$77,$60,$ff,$f8,$ff,$fc,$ff,$fe,$ff db $80,$84,$80,$84,$80,$82,$80,$82,$80,$82,$80,$82,$80,$82,$80,$82 db $80,$82,$80,$c2,$40,$62,$60,$3e,$40,$20,$40,$20,$40,$20,$40,$20 db $00,$20,$00,$20,$01,$21,$01,$21,$01,$21,$01,$21,$01,$21,$01,$21 db $02,$05,$00,$07,$02,$05,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03 db $00,$03,$00,$03,$00,$3f,$1e,$63,$3e,$43,$3e,$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,$10,$40,$10,$40,$10,$40,$10,$40,$18,$40,$18,$40,$18,$40,$18 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,$20,$20,$1f,$1f,$00,$00,$02,$02,$06,$06,$3f,$7f,$46,$46 db $ff,$ff,$00,$00,$ff,$ff,$00,$00,$00,$00,$00,$00,$ff,$ff,$00,$00 db $80,$80,$00,$00,$80,$80,$7f,$7f,$00,$00,$00,$00,$ff,$ff,$00,$00 db $01,$01,$00,$00,$00,$00,$fe,$fe,$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 $64,$64,$c2,$c2,$01,$01,$01,$01,$83,$83,$44,$45,$48,$48,$84,$84 db $03,$03,$00,$00,$00,$ff,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $80,$80,$00,$00,$00,$ff,$00,$81,$00,$ff,$83,$ff,$c7,$ff,$af,$ff db $00,$00,$00,$00,$00,$ff,$00,$18,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $00,$00,$00,$00,$00,$ff,$00,$00,$00,$ff,$80,$ff,$80,$ff,$c0,$ff db $c3,$ff,$c7,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$1f,$ff,$1f,$bf,$1f,$3f db $3e,$3e,$00,$00,$00,$ff,$01,$07,$03,$ff,$03,$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,$fe,$c0,$e6 db $80,$7f,$00,$ff,$00,$ff,$f0,$ff,$fc,$ff,$fc,$ff,$ff,$ff,$ff,$ff db $80,$e4,$80,$fd,$80,$fd,$80,$e6,$80,$cc,$80,$eb,$c1,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff,$3f,$ff,$1f,$7f db $1f,$bf,$1f,$7f,$3f,$7f,$3f,$ff,$3f,$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,$ff,$f0,$f8 db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff,$07,$ff db $f0,$f8,$f0,$fe,$e0,$fc,$e0,$f0,$e0,$f1,$e0,$fb,$f0,$ff,$fe,$ff db $07,$8f,$07,$0f,$07,$0f,$07,$7f,$0f,$1f,$0f,$1f,$0f,$3f,$1f,$ff db $3f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $1f,$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,$00,$cf,$00,$dc,$00,$d4 db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$1f,$ff,$1f,$7f,$0f,$7f db $00,$56,$00,$63,$00,$61,$00,$38,$00,$97,$00,$90,$00,$d1,$80,$ff db $0f,$7f,$0f,$ff,$0f,$ff,$1f,$3f,$1f,$ff,$3f,$ff,$7f,$ff,$ff,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f1,$ff,$e1,$fb,$e0,$f1,$e0,$f9 db $f0,$fc,$c0,$f0,$80,$e2,$80,$c6,$80,$ec,$c0,$ff,$ff,$ff,$ff,$ff db $95,$60,$55,$a0,$95,$60,$15,$e0,$95,$60,$55,$a0,$95,$60,$15,$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,$00,$ff,$00,$00,$00,$00 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,$46,$3f,$7f,$06,$06,$02,$02,$00,$00,$00,$00,$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 $77, $77, $35, $36, $37, $44, $3f, $78 db $4b, $4c, $4d, $4e, $38, $2f, $40, $6e db $7a, $6d, $4f, $50, $39, $3a, $41, $42 db $53, $54, $56, $51, $52, $3b, $43, $5b db $6a, $55, $57, $79, $58, $59, $5a, $5d db $6b, $65, $66, $67, $60, $61, $5c, $5e db $79, $5f, $68, $69, $62, $63, $79, $79 db $79, $79, $79, $1b, $32, $64, $79, $79 db $79, $79, $79, $30, $31, $79, $79, $79 MagicianMapEnd: