some more animations

This commit is contained in:
Shoofle 2025-03-11 17:01:21 -04:00
parent a03204688a
commit 40073aefea
40 changed files with 1668 additions and 370 deletions

View File

@ -26,14 +26,6 @@ def Card_Offset_functions equ @-TheFool
dw .fUpdate dw .fUpdate
dw .fDraw dw .fDraw
; CVS: timer for dog
; CVS+2: frame for dog
; CVS+3: timer for zero
; CVS+5: frame for zero
; CVS+6: timer for cloud 1
; CVS+8: frame for cloud 1
; CVS+9: timer for cloud 2
; CVS+11: frame for cloud 2
.fInit: .fInit:
ld hl, CVS ld hl, CVS
ld a, 0 ld a, 0
@ -75,7 +67,7 @@ def Card_Offset_functions equ @-TheFool
; set up the palette for the clouds ; set up the palette for the clouds
ld hl, rOBP1 ld hl, rOBP1
ld [hl], %00_10_01_11 ld [hl], %11_10_01_00
ld hl, .cloud1 ld hl, .cloud1
; six sprites for the doggie, four for the zero, 4 bytes each ; six sprites for the doggie, four for the zero, 4 bytes each
@ -106,7 +98,7 @@ def Card_Offset_functions equ @-TheFool
ld hl, .cloud3 ld hl, .cloud3
ld de, MY_OAM + 16*4 ld de, MY_OAM + 16*4
ld bc, 90*$100 + 67 ld bc, 88*$100 + 67
ld a, $11 ld a, $11
call BuildMetaSprite call BuildMetaSprite
ld hl, MY_OAM + 16*4+3 ld hl, MY_OAM + 16*4+3
@ -119,7 +111,7 @@ def Card_Offset_functions equ @-TheFool
call IncrementTimer call IncrementTimer
ld a, [CVS+1] ; checking the high byte of the timer ld a, [CVS+1] ; checking the high byte of the timer
cp a, 06 ; $10 00 = 1 second cp a, $06 ; $10 00 = 1 second
jp c, .doneWithTimer1 ; if the timer is less than $0600, skip jp c, .doneWithTimer1 ; if the timer is less than $0600, skip
; if the timer is greater or equal to $0600, reset it ; if the timer is greater or equal to $0600, reset it
@ -134,7 +126,8 @@ def Card_Offset_functions equ @-TheFool
ld a, [CVS+3+1] ; check the high byte of the zero sprite timer ld a, [CVS+3+1] ; check the high byte of the zero sprite timer
cp a, $30 ; $10 00 = 1 second cp a, $30 ; $10 00 = 1 second
jp c, .doneWithTimer2 jp c, .doneWithTimer2
jp .doneWithTimer2
ld a, 0 ld a, 0
ld [CVS+3], a ld [CVS+3], a
@ -356,7 +349,7 @@ def Card_Offset_functions equ @-TheFool
.cloud3: .cloud3:
db $14 db $14
.cloud3Anim: .cloud3Anim:
db 2, 90, 66, 90, 67, db 2, 88, 66, 88, 67,

Binary file not shown.

View File

@ -18,41 +18,282 @@ TheMagician:
; CARD_VARS_START + 2 ; frame counter 1 ; CARD_VARS_START + 2 ; frame counter 1
; CARD_VARS_START + 3 ; frame counter 2 ; CARD_VARS_START + 3 ; frame counter 2
.fInit: .fInit:
ld a, [rLCDC] ld hl, CVS
and a, %1111_1011
ld [rLCDC], a
ld hl, CARD_VARS_START
ld a, 0 ld a, 0
ld [hl+], a ; timer for dog @ +0 ld [hl+], a ; CVS timer for flame
ld [hl+], a ld [hl+], a
ld [hl+], a ; frame of animation 1 ld [hl+], a ; CVS+2 frame of flame 1
ld [hl+], a ; frame of animation 2 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 ret
.fUpdate: .fUpdate:
ret 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: .fDraw:
ret ret
.SpriteTiles: .SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $01,$01,$01,$01,$01,$01,$01,$01,$1f,$1f,$1f,$10,$1f,$10,$1f,$1c db $20,$20,$30,$30,$38,$28,$3c,$24,$6c,$54,$c6,$fa,$6c,$54,$38,$38
db $f0,$f0,$fc,$5c,$fe,$06,$5f,$a3,$ff,$01,$ff,$00,$ff,$00,$ff,$00 db $0c,$0c,$18,$18,$38,$28,$3c,$24,$6c,$54,$c6,$fa,$6c,$54,$38,$38
db $00,$00,$00,$00,$00,$00,$07,$07,$87,$85,$ff,$fd,$ff,$01,$ff,$01 db $00,$d0,$00,$68,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $07,$07,$01,$01,$01,$01,$01,$01,$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
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$d2,$7e,$76,$1c,$1c
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$69,$3f,$3b,$0e,$0e
db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38
db $00,$00,$03,$03,$07,$07,$0c,$0c,$18,$18,$18,$18,$30,$30,$30,$30
db $00,$00,$c0,$c0,$e0,$e0,$30,$30,$18,$18,$18,$18,$0c,$0c,$0c,$0c
db $30,$30,$30,$30,$18,$18,$18,$18,$0c,$0c,$07,$07,$03,$03,$00,$00
db $0c,$0c,$0c,$0c,$18,$18,$18,$18,$30,$30,$e0,$e0,$c0,$c0,$00,$00
.SpriteTilesEnd: .SpriteTilesEnd:
MagicianTiles: MagicianTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$ff,$ff,$ff,$e0,$e0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff 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 $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 $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,$ff,$70,$df,$50,$df,$50,$df,$50,$57,$d8
@ -73,7 +314,7 @@ MagicianTiles:
db $70,$88,$e0,$10,$80,$70,$00,$f0,$e0,$10,$e0,$10,$00,$f0,$00,$20 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 $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 $48,$14,$40,$1c,$40,$1c,$40,$1e,$50,$0e,$50,$0e,$50,$0e,$50,$0f
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$e0,$e0,$ff,$ff,$ff,$ff 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 $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 $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 $c0,$20,$40,$b0,$b0,$48,$50,$ac,$ec,$13,$55,$aa,$aa,$55,$55,$aa
@ -100,13 +341,12 @@ MagicianTiles:
db $ff,$00,$ff,$00,$ff,$00,$77,$88,$fe,$01,$dc,$23,$ff,$00,$57,$a8 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,$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 $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,$00,$00,$02,$02,$06,$06,$3f,$7f 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,$00,$00,$ff,$ff 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,$00,$00,$ff,$ff 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,$18,$18,$f8,$ff db $01,$01,$00,$00,$00,$00,$fe,$fe,$01,$01,$07,$07,$f8,$f8,$38,$3f
db $46,$46,$3f,$7f,$06,$06,$02,$02,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$ff,$ff,$00,$00,$3e,$3e,$c1,$c9,$00,$77,$00,$1c,$c1,$f7 db $00,$00,$ff,$ff,$00,$00,$3e,$3e,$c1,$c9,$00,$77,$00,$1c,$c1,$f7
db $24,$24,$c2,$c2,$01,$01,$01,$01,$83,$83,$44,$45,$48,$48,$84,$84 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 $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 $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,$18,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff
@ -148,23 +388,24 @@ MagicianTiles:
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,$00,$ff,$00,$00,$00,$00
db $aa,$55,$44,$bb,$aa,$55,$00,$ff,$aa,$55,$04,$fb,$aa,$55,$00,$ff 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 $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: MagicianTilesEnd:
MagicianMap: MagicianMap:
db $70, $1e, $70, $70, $70, $70, $70, $70 db $6f, $1e, $6f, $6f, $6f, $6f, $6f, $6f
db $1f, $20, $48, $47, $49, $4a, $71, $71 db $1f, $20, $70, $70, $70, $70, $70, $70
db $21, $22, $23, $26, $27, $72, $72, $72 db $21, $22, $23, $26, $27, $71, $71, $71
db $73, $2b, $24, $28, $29, $74, $73, $73 db $72, $2b, $24, $28, $29, $73, $72, $72
db $75, $33, $25, $2c, $2d, $1d, $75, $75 db $74, $33, $25, $2c, $2d, $1d, $74, $74
db $76, $76, $34, $3c, $3e, $2a, $45, $76 db $75, $75, $34, $3c, $3e, $2a, $45, $75
db $77, $77, $6d, $3d, $1c, $2e, $46, $77 db $76, $76, $6c, $3d, $1c, $2e, $46, $76
db $78, $78, $35, $36, $37, $44, $3f, $79 db $77, $77, $35, $36, $37, $44, $3f, $78
db $4b, $4c, $4d, $4e, $38, $2f, $40, $6f db $4b, $4c, $4d, $4e, $38, $2f, $40, $6e
db $4f, $6e, $50, $51, $39, $3a, $41, $42 db $7a, $6d, $4f, $50, $39, $3a, $41, $42
db $54, $55, $57, $52, $53, $3b, $43, $5c db $53, $54, $56, $51, $52, $3b, $43, $5b
db $6b, $56, $58, $7a, $59, $5a, $5b, $5e db $6a, $55, $57, $79, $58, $59, $5a, $5d
db $6c, $66, $67, $68, $61, $62, $5d, $5f db $6b, $65, $66, $67, $60, $61, $5c, $5e
db $7a, $60, $69, $6a, $63, $64, $7a, $7a db $79, $5f, $68, $69, $62, $63, $79, $79
db $7a, $7a, $7a, $1b, $32, $65, $7a, $7a db $79, $79, $79, $1b, $32, $64, $79, $79
db $7a, $7a, $7a, $30, $31, $7a, $7a, $7a db $79, $79, $79, $30, $31, $79, $79, $79
MagicianMapEnd: MagicianMapEnd:

Binary file not shown.

View File

@ -8,30 +8,161 @@ TheHighPriestess:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle
.fInit:
ld hl, CVS
ld a, 0
ld [hl+], a ; CVS timer for smoke
ld [hl+], a
ld [hl+], a ; CVS+2 frame of smoke
ret
.fUpdate:
ld hl, CVS
call IncrementTimer
ld a, [CVS+1] ; checking the high byte of the timer
cp a, $07 ; $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 .updateSmoke
.doneWithTimer1
ret
.updateSmoke:
ld b, 4
ld a, [CVS+2]
inc a
call ArrayClampLoopingB
ld [CVS+2], a
; multiply a by 4 bc the lower smoke is rows of four tiles
ld b, a
add a, b
add a, b
add a, b
ld b, 0
ld c, a
; add offset to .lowerSmoke to get the line we're interested in
ld hl, .lowerSmoke
add hl, bc
ld de, MY_OAM
ld bc, $100*(2+3)*8 + (1+3)*8
ld a, $14
call BuildMetaSprite
ld a, [CVS+2]
; multiply by 10 bc tthe upper smoke is pairs of rows of six tiles
ld b, a
add a, b ; a = 2b
add a, b ; a = 3b
add a, a ; a = 6b
add a, a ; a = 12b
ld b, 0
ld c, a
; add offset to .upperSmoke to get the metatile we're interested in.
ld hl, .upperSmoke
add hl, bc
ld de, MY_OAM+4*4
ld bc, $100*(2+1)*8 + (1+3)*8
ld a, $26
call BuildMetaSprite
ret
.upperSmoke:
db $24, $25, $13, $13, $13, $13
db $00, $2b, $26, $27, $28, $29
db $11, $12, $13, $13, $13, $13
db $00, $14, $15, $16, $17, $18
db $19, $1a, $13, $13, $13, $13
db $00, $1b, $1c, $1d, $1e, $1f
db $2a, $13, $13, $13, $13, $13
db $00, $20, $1c, $21, $22, $23
.lowerSmoke:
db $01, $02, $03, $04
db $05, $06, $07, $08
db $09, $0a, $0b, $0c
db $0d, $0e, $0f, $10
.fDraw:
ret
.SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$7e,$00,$fc,$00,$78,$00,$30,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$0f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $e0,$00,$f0,$00,$f8,$00,$f0,$00,$60,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$3f,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$bf,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$3e,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $e0,$00,$f0,$00,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$7f,$00,$3f,$00,$1e,$00,$0c,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$6e,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$07,$00,$07,$00,$03,$00
db $e0,$00,$f0,$00,$f0,$00,$f0,$00,$c0,$00,$c0,$00,$80,$00,$00,$00
db $1f,$00,$3f,$00,$7f,$00,$7f,$00,$7e,$00,$7c,$00,$20,$00,$00,$00
db $ff,$00,$ff,$00,$fc,$00,$78,$00,$20,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$3f,$00,$07,$00,$02,$00,$00,$00,$00,$00
db $e0,$00,$f0,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$78,$00,$30,$00
db $ff,$00,$ff,$00,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$0f,$00,$0f,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00
db $07,$00,$03,$00,$01,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$03,$00
db $ff,$00,$ff,$00,$fe,$00,$f8,$00,$f0,$00,$e0,$00,$e0,$00,$60,$00
db $ff,$00,$ff,$00,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $3f,$00,$7f,$00,$7f,$00,$3f,$00,$1f,$00,$0c,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00
db $3f,$00,$3f,$00,$1f,$00,$1f,$00,$1f,$00,$0f,$00,$03,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$bf,$00,$1f,$00
db $ff,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00
db $ff,$00,$0f,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$fe,$00,$fc,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $3f,$00,$1f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$03,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$f8,$00,$e0,$00
db $ff,$00,$fe,$00,$f8,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $df,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$1f,$00,$0f,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$0f,$00,$07,$00,$03,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$01,$00,$00,$00
db $ff,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00
db $ff,$00,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $86,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$3f,$00,$1f,$00,$03,$00,$03,$00,$01,$00,$00,$00
db $03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.SpriteTilesEnd:
.KeyArtTiles: .KeyArtTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $02,$fd,$02,$fd,$02,$fd,$02,$fd,$02,$fd,$02,$fd,$1f,$e0,$00,$ff db $06,$f9,$06,$f9,$06,$f9,$06,$f9,$06,$f9,$06,$f9,$1f,$e0,$00,$ff
db $40,$bf,$40,$bf,$40,$bf,$40,$bf,$40,$bf,$40,$bf,$f8,$07,$00,$ff db $60,$9f,$60,$9f,$60,$9f,$60,$9f,$60,$9f,$60,$9f,$f8,$07,$00,$ff
db $00,$ff,$0f,$ff,$39,$fe,$e7,$f8,$7f,$80,$ff,$00,$ff,$00,$ff,$00 db $00,$ff,$0f,$ff,$38,$ff,$e7,$f8,$7f,$80,$ff,$00,$ff,$00,$ff,$00
db $7f,$80,$ff,$80,$ff,$00,$ff,$00,$fc,$03,$fe,$01,$ff,$00,$ff,$00 db $00,$ff,$c0,$ff,$78,$ff,$8f,$7f,$fc,$03,$fe,$01,$ff,$00,$ff,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$c7,$f8,$60,$ff,$b8,$7f,$cc,$3f db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$c0,$ff,$60,$ff,$b8,$7f,$cc,$3f
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$f8,$07,$c0,$3f,$00,$ff,$00,$ff db $00,$ff,$01,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$80,$1c,$e3,$00,$ff,$00,$ff db $df,$ff,$ff,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff
db $00,$ff,$01,$ff,$03,$ff,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00 db $e4,$ff,$f6,$ff,$f2,$ff,$f0,$ff,$f8,$ff,$f8,$ff,$fc,$ff,$fc,$ff
db $df,$e0,$bf,$c0,$7f,$80,$ff,$00,$3f,$c0,$6f,$d6,$7f,$ef,$7f,$ff
db $ff,$00,$ff,$00,$ff,$00,$ff,$17,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$fc,$ff,$fc,$ff,$ff,$ff,$ff
db $e4,$1f,$f6,$0f,$f3,$0f,$f0,$0f,$f8,$07,$f8,$07,$fc,$03,$fc,$9b
db $00,$ff,$00,$ff,$80,$ff,$00,$e0,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$01,$00,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 db $00,$01,$00,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01
db $7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$ff,$ff db $7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$ff,$ff
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f8,$ff,$e0,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f8,$ff,$e0,$ff
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$3f,$ff,$1f,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$3f,$ff,$1f,$ff
db $fe,$df,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$ff,$ff db $fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$ff,$ff
db $00,$80,$00,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80 db $00,$80,$00,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80
db $00,$00,$00,$00,$00,$ff,$00,$49,$00,$49,$00,$49,$00,$49,$00,$49 db $00,$00,$00,$00,$00,$ff,$00,$49,$00,$49,$00,$49,$00,$49,$00,$49
db $01,$03,$03,$0f,$0f,$ff,$0f,$3f,$0f,$3f,$0f,$3f,$0f,$3f,$0f,$3f db $01,$03,$03,$0f,$0f,$ff,$0f,$3f,$0f,$3f,$0f,$3f,$0f,$3f,$0f,$3f
@ -43,41 +174,40 @@ TheHighPriestess:
db $0f,$3f,$0f,$3f,$0f,$3f,$0f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f db $0f,$3f,$0f,$3f,$0f,$3f,$0f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fc,$ff,$f8,$fe,$f0,$fc db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fc,$ff,$f8,$fe,$f0,$fc
db $1f,$e0,$0c,$f3,$0f,$f0,$07,$f8,$03,$ec,$00,$77,$00,$7b,$00,$37 db $1f,$e0,$0c,$f3,$0f,$f0,$07,$f8,$03,$ec,$00,$77,$00,$7b,$00,$37
db $cf,$3f,$cf,$3f,$c7,$3f,$87,$7f,$07,$ff,$03,$d7,$00,$a3,$00,$80 db $cf,$3f,$cf,$3f,$c7,$3f,$87,$7f,$07,$ff,$01,$d7,$00,$a3,$00,$80
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff
db $e0,$fc,$e0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc db $e0,$fc,$e0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc
db $00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92 db $00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92
db $1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f db $1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f
db $e0,$f8,$c0,$f0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e1,$c0,$e1,$c0,$e1 db $e0,$f8,$c0,$f0,$c0,$e0,$c0,$e0,$c0,$e0,$c0,$e1,$c0,$e1,$c0,$e1
db $00,$30,$00,$30,$00,$30,$00,$30,$00,$30,$00,$30,$00,$30,$00,$30 db $00,$30,$00,$30,$00,$30,$00,$30,$00,$30,$00,$30,$00,$30,$00,$30
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$06,$00,$03,$00,$03,$00,$03 db $00,$00,$00,$00,$00,$00,$00,$00,$01,$06,$00,$07,$01,$07,$01,$07
db $3f,$7f,$1f,$3f,$0f,$1f,$0f,$1f,$07,$0f,$03,$07,$03,$87,$01,$83 db $7f,$ff,$3f,$7f,$1f,$3f,$0f,$1f,$07,$0f,$83,$07,$43,$87,$41,$83
db $f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f8,$fc,$f8,$fc,$f8,$fc db $f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f0,$fc,$f8,$fc,$f8,$fc,$f8,$fc
db $1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$17,$3f,$16,$3f,$0c,$3f db $1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$1f,$3f,$17,$3f,$16,$3f,$0c,$3f
db $c0,$e1,$c0,$e1,$c0,$f1,$a0,$f0,$a0,$f0,$20,$f0,$20,$e8,$20,$e8 db $c0,$e1,$c0,$e1,$c0,$f1,$a0,$f0,$a0,$f0,$20,$f0,$20,$e8,$20,$e8
db $00,$70,$00,$70,$00,$40,$00,$81,$01,$87,$00,$8c,$04,$9c,$0e,$5e db $00,$70,$00,$70,$00,$40,$00,$81,$01,$87,$00,$8c,$04,$9c,$0e,$5e
db $00,$03,$00,$03,$00,$03,$00,$fb,$f8,$fe,$fc,$fe,$7c,$7e,$3c,$3e db $01,$07,$01,$07,$00,$0f,$00,$ff,$f8,$fe,$fc,$fe,$7c,$7e,$3c,$3e
db $01,$c3,$01,$c3,$01,$03,$03,$07,$01,$0f,$01,$1f,$30,$3f,$48,$7f db $81,$c3,$01,$c3,$01,$03,$03,$07,$01,$0f,$01,$1f,$30,$3f,$48,$7f
db $f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$78,$fc db $f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$f8,$fc,$78,$fc
db $08,$3f,$08,$3f,$0f,$3f,$10,$3f,$10,$3f,$0e,$3f,$02,$3f,$02,$3f db $08,$3f,$08,$3f,$0f,$3f,$10,$3f,$10,$3f,$0e,$3f,$02,$3f,$02,$3f
db $20,$e8,$40,$c4,$80,$c4,$80,$82,$80,$81,$80,$80,$c0,$c0,$c0,$c0 db $20,$e8,$40,$c4,$80,$c4,$80,$82,$80,$81,$80,$80,$c0,$c0,$c0,$c0
db $0f,$5f,$07,$3f,$00,$0f,$00,$03,$00,$00,$00,$80,$00,$40,$00,$30 db $0f,$5f,$07,$3f,$00,$0f,$00,$03,$00,$80,$00,$c0,$10,$60,$07,$38
db $18,$1f,$87,$99,$ce,$f3,$01,$ff,$03,$0c,$07,$08,$07,$08,$07,$08 db $18,$1f,$87,$99,$ce,$f3,$01,$ff,$03,$0c,$07,$08,$07,$08,$f7,$08
db $84,$ff,$02,$ff,$01,$ff,$01,$ff,$c1,$ff,$e1,$3f,$e1,$3f,$e1,$3f db $84,$ff,$02,$ff,$01,$ff,$01,$ff,$c1,$ff,$e1,$3f,$e1,$3f,$e1,$3f
db $38,$fc,$30,$fc,$f0,$fc,$08,$fc,$08,$fc,$70,$fc,$40,$fc,$40,$fc db $38,$fc,$30,$fc,$f0,$fc,$08,$fc,$08,$fc,$70,$fc,$40,$fc,$40,$fc
db $c0,$c0,$c0,$c0,$a0,$e0,$a0,$e0,$90,$f0,$88,$f8,$86,$fe,$81,$ff db $c0,$c0,$c0,$c0,$a0,$e0,$a0,$e0,$90,$f8,$88,$ff,$86,$ff,$81,$ff
db $00,$0f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$e0 db $00,$0f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$80,$fe
db $00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $19,$ff,$0d,$0f,$05,$07,$05,$07,$05,$07,$05,$07,$05,$07,$05,$07 db $19,$ff,$0d,$0f,$05,$07,$05,$07,$05,$07,$05,$07,$05,$07,$05,$07
db $80,$ff,$ff,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $80,$ff,$ff,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff
db $70,$fe,$e0,$f2,$00,$f0,$00,$f8,$00,$f8,$00,$fc,$00,$fc,$00,$fc db $70,$fe,$ec,$f2,$0c,$f0,$04,$f8,$04,$f8,$00,$fc,$00,$fc,$00,$fc
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00
db $0d,$0f,$1f,$1f,$10,$1f,$30,$3f,$20,$3f,$00,$7f,$00,$7f,$00,$7f db $0d,$0f,$1f,$1f,$10,$1f,$30,$3f,$20,$3f,$00,$7f,$00,$7f,$00,$7f
db $00,$49,$00,$49,$00,$49,$00,$49,$00,$49,$00,$49,$00,$c9,$00,$49 db $00,$49,$00,$49,$00,$49,$00,$49,$00,$49,$00,$49,$00,$c9,$00,$49
db $02,$3f,$02,$3f,$02,$3f,$03,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$27 db $02,$3f,$02,$3f,$02,$3f,$03,$3f,$00,$3f,$00,$3f,$00,$3f,$00,$27
db $00,$ff,$00,$ff,$00,$ff,$ff,$ff,$01,$ff,$06,$ff,$38,$fc,$e0,$e0 db $00,$ff,$00,$ff,$00,$ff,$ff,$ff,$01,$ff,$06,$ff,$38,$fc,$e0,$e0
db $00,$fc,$00,$fc,$00,$f8,$c0,$f0,$80,$c0,$00,$80,$00,$00,$00,$01 db $00,$fc,$00,$fc,$00,$f8,$c0,$f0,$80,$c0,$00,$80,$00,$00,$00,$01
db $00,$00,$00,$03,$02,$03,$07,$07,$04,$1f,$06,$37,$07,$e7,$00,$81 db $00,$00,$00,$03,$02,$03,$07,$07,$04,$1f,$0e,$37,$1f,$e7,$70,$81
db $00,$ff,$00,$ff,$00,$ff,$ff,$ff,$00,$ff,$00,$ff,$80,$ff,$c0,$ff db $00,$ff,$00,$ff,$00,$ff,$ff,$ff,$00,$ff,$00,$ff,$80,$ff,$c0,$ff
db $40,$fc,$40,$fc,$40,$fc,$c0,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$e4 db $40,$fc,$40,$fc,$40,$fc,$c0,$fc,$00,$fc,$00,$fc,$00,$fc,$00,$e4
db $00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$93,$00,$92 db $00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$92,$00,$93,$00,$92
@ -91,8 +221,8 @@ TheHighPriestess:
db $00,$92,$00,$93,$00,$92,$00,$92,$00,$92,$00,$96,$00,$f9,$00,$00 db $00,$92,$00,$93,$00,$92,$00,$92,$00,$92,$00,$96,$00,$f9,$00,$00
db $00,$07,$00,$ff,$00,$03,$00,$03,$00,$03,$00,$03,$00,$ff,$00,$ff db $00,$07,$00,$ff,$00,$03,$00,$03,$00,$03,$00,$03,$00,$ff,$00,$ff
db $00,$e0,$00,$ff,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$ff,$00,$ff db $00,$e0,$00,$ff,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$ff,$00,$ff
db $00,$ff,$1f,$e0,$02,$fd,$02,$fd,$02,$fd,$02,$fd,$02,$fd,$02,$fd db $00,$ff,$1f,$e0,$06,$f9,$06,$f9,$06,$f9,$06,$f9,$06,$f9,$06,$f9
db $00,$ff,$f8,$07,$40,$bf,$40,$bf,$40,$bf,$40,$bf,$40,$bf,$40,$bf db $00,$ff,$f8,$07,$60,$9f,$60,$9f,$60,$9f,$60,$9f,$60,$9f,$60,$9f
db $00,$00,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$00,$ff db $00,$00,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$00,$ff
db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff
db $00,$ff,$00,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$ff,$00,$ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
@ -102,25 +232,23 @@ TheHighPriestess:
db $40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc db $40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc,$40,$fc
db $0a,$3f,$0a,$3f,$0a,$3f,$0a,$3f,$0a,$3f,$02,$3f,$02,$3f,$02,$3f db $0a,$3f,$0a,$3f,$0a,$3f,$0a,$3f,$0a,$3f,$02,$3f,$02,$3f,$02,$3f
db $58,$fc,$50,$fc,$50,$fc,$50,$fc,$50,$fc,$50,$fc,$40,$fc,$40,$fc db $58,$fc,$50,$fc,$50,$fc,$50,$fc,$50,$fc,$50,$fc,$40,$fc,$40,$fc
db $ff,$00,$ff,$00,$ff,$00,$3f,$c0,$03,$fc,$03,$fc,$01,$fe,$00,$ff
db $ff,$00,$ff,$00,$7f,$80,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff
.KeyArtTilesEnd: .KeyArtTilesEnd:
.BackgroundCopy: ; tiles start at 26 .BackgroundCopy: ; tiles start at 26
db $6c, $6c, $75, $74, $55, $55, $55, $55 db $66, $66, $66, $66, $66, $66, $66, $66
db $6c, $6c, $6e, $1d, $1e, $1f, $20, $21 db $66, $66, $68, $1d, $1e, $1f, $66, $66
db $6d, $22, $23, $24, $25, $26, $27, $6d db $67, $20, $21, $69, $69, $22, $67, $67
db $28, $29, $2a, $2b, $2c, $2d, $2e, $28 db $23, $24, $25, $26, $27, $28, $29, $23
db $2f, $30, $6f, $31, $32, $6f, $33, $34 db $2a, $2b, $69, $2c, $2d, $69, $2e, $2f
db $35, $36, $37, $38, $39, $3a, $3b, $3c db $30, $31, $32, $33, $34, $35, $36, $37
db $35, $3d, $3e, $3f, $40, $41, $42, $3c db $30, $38, $39, $3a, $3b, $3c, $3d, $37
db $35, $43, $44, $45, $46, $47, $48, $3c db $30, $3e, $3f, $40, $41, $42, $43, $37
db $35, $49, $4a, $4b, $4c, $4d, $4e, $3c db $30, $44, $45, $46, $47, $48, $49, $37
db $35, $72, $4f, $50, $51, $52, $73, $3c db $30, $6c, $4a, $4b, $4c, $4d, $6d, $37
db $35, $70, $53, $54, $1a, $56, $71, $3c db $30, $6a, $4e, $4f, $1a, $50, $6b, $37
db $57, $58, $59, $5a, $5b, $5c, $5d, $5e db $51, $52, $53, $54, $55, $56, $57, $58
db $5f, $60, $61, $62, $63, $64, $65, $66 db $59, $5a, $5b, $5c, $5d, $5e, $5f, $60
db $6b, $67, $6c, $6c, $6c, $6c, $68, $6b db $65, $61, $66, $66, $66, $66, $62, $65
db $6c, $6c, $6c, $69, $6a, $6c, $6c, $6c db $66, $66, $66, $63, $64, $66, $66, $66
db $6c, $6c, $6c, $1b, $1c, $6c, $6c, $6c db $66, $66, $66, $1b, $1c, $66, $66, $66
.BackgroundCopyEnd: .BackgroundCopyEnd:

Binary file not shown.

View File

@ -8,7 +8,17 @@ TheEmpress:
dw EmpressMap dw EmpressMap
dw EmpressTilesEnd - EmpressTiles dw EmpressTilesEnd - EmpressTiles
dw EmpressTiles dw EmpressTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
EmpressMap: EmpressMap:
db $7e, $1b, $1c, $1d, $1a, $1a, $78, $79 db $7e, $1b, $1c, $1d, $1a, $1a, $78, $79
db $75, $1e, $5f, $1f, $20, $21, $7d, $7a db $75, $1e, $5f, $1f, $20, $21, $7d, $7a

Binary file not shown.

View File

@ -8,6 +8,340 @@ TheEmperor:
dw EmperorMap dw EmperorMap
dw EmperorTilesEnd - EmperorTiles dw EmperorTilesEnd - EmperorTiles
dw EmperorTiles dw EmperorTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit:
ld hl, CVS
ld a, 0
ld [hl+], a ; CVS timer for smoke
ld [hl+], a
ld [hl+], a ; CVS+2 frame of animation
ld hl, MY_OAM+3 ; attributes
ld bc, 4
ld d, 30
.priorityLoop
set OAMB_PRI, [hl]
add hl, bc
dec d
jp nz, .priorityLoop ; set the priority bt for all sprites
ld hl, .flash
ld de, MY_OAM+2*4
ld b, 160
ld c, 0
ld a, $22
call BuildMetaSprite
ld hl, .flash
ld de, MY_OAM+6*4
ld b, 160
ld c, 0
ld a, $22
call BuildMetaSprite
ld hl, .flash
ld de, MY_OAM+10*4
ld b, 160
ld c, 0
ld a, $22
call BuildMetaSprite
ld hl, .flash
ld de, MY_OAM+14*4
ld b, 160
ld c, 0
ld a, $22
call BuildMetaSprite
ret
; oam 0-1 gorget
; oam 2-5 gauntlet left
; oam 6-9 foot left
; oam 10-13 gauntlet right
; oam 14-17 foot right
.fUpdate:
ld hl, CVS
call IncrementTimer
ld a, [CVS+1] ; checking the high byte of the timer
cp a, $30 ; $10 = 1 second, $02 = 1/8 of a second
jp c, .doneWithTimer1
; reset timer
ld a, 0
ld [CVS], a
ld [CVS+1], a
ld a, 1
ld [CVS+2], a
.doneWithTimer1
ld a, [CVS+2]
cp a, 0
call nz, .animate
ret
.animate:
ld b, 50 ; length of animation
ld a, [CVS+2]
inc a
call ArrayClampLoopingB
ld [CVS+2], a
; gorget flash
ld a, [CVS+2]
sub a, 24
jp c, .doneWithGorget ; a < 24 ----> skip gorget
cp a, 6
jp nc, .doneWithGorget ; a >= 6 ---> skip gorget
add a, a ; double to make an offset into gorgetsheen
ld b, 0
ld c, a
ld hl, .gorgetSheen
add hl, bc ; sprites
ld de, MY_OAM
ld b, 8*6
ld c, 8*5
ld a, $12
call BuildMetaSprite
.doneWithGorget
; stage-left foot animation
ld a, [CVS+2]
sub a, 2
jp c, .doneWithLeftFoot ; a < 2 -----> skip left foot
jp z, .startLeftFoot ; a == 2 -------> start left foot
cp a, 8
jp nc, .killLeftFoot ; after 8-1 frames, kill the left foot
ld hl, MY_OAM + 2*4
dec [hl]
inc hl
inc [hl]
inc [hl]
ld hl, MY_OAM + 3*4
dec [hl]
inc hl
inc [hl]
inc [hl]
ld hl, MY_OAM + 4*4
dec [hl]
inc hl
inc [hl]
inc [hl]
ld hl, MY_OAM + 5*4
dec [hl]
inc hl
inc [hl]
inc [hl]
jp .doneWithLeftFoot
.killLeftFoot
ld hl, MY_OAM + 2*4
ld [hl], 160
ld hl, MY_OAM + 3*4
ld [hl], 160
ld hl, MY_OAM + 4*4
ld [hl], 160
ld hl, MY_OAM + 5*4
ld [hl], 160
jp .doneWithLeftFoot
.startLeftFoot
ld hl, .flash
ld de, MY_OAM + 2*4
ld b, 104+16
ld c, 8+8
ld a, $22
call BuildMetaSprite
.doneWithLeftFoot
; stage-right foot animation
ld a, [CVS+2]
cp a, 20
jp nc, .killRightFoot
cp a, 11
jp c, .doneWithRightFoot
jp z, .startRightFoot
jp .continueRightFoot
.startRightFoot
ld hl, .flash
ld de, MY_OAM+6*4
ld b, 104+16
ld c, 40+8
ld a, $22
call BuildMetaSprite
jp .doneWithRightFoot
.continueRightFoot
ld hl, MY_OAM + 6*4
dec [hl]
inc hl
inc [hl]
inc [hl]
ld hl, MY_OAM + 7*4
dec [hl]
inc hl
inc [hl]
inc [hl]
ld hl, MY_OAM + 8*4
dec [hl]
inc hl
inc [hl]
inc [hl]
ld hl, MY_OAM + 9*4
dec [hl]
inc hl
inc [hl]
inc [hl]
jp .doneWithRightFoot
.killRightFoot
ld hl, MY_OAM+6*4
ld [hl], 160
ld hl, MY_OAM+7*4
ld [hl], 160
ld hl, MY_OAM+8*4
ld [hl], 160
ld hl, MY_OAM+9*4
ld [hl], 160
jp .doneWithRightFoot
.doneWithRightFoot
; stage-left hand animation
ld a, [CVS+2]
sub a, 11
jp c, .doneWithLeftHand
cp a, 7+1
jp nc, .doneWithLeftHand
add a, a ; double
add a, a ; double again to make an offset into lefthandsheen
ld b, 0
ld c, a
ld hl, .leftHandSheen
add hl, bc ; sprites
ld de, MY_OAM+10*4
ld b, 8*10
ld c, 8*2
ld a, $22
call BuildMetaSprite
.doneWithLeftHand
; right hand
ld a, [CVS+2]
sub a, 19
jp z, .startRightHand
jp c, .doneWithRightHand
cp a, 20
jp nc, .killRightHand
ld hl, MY_OAM + 14*4
dec [hl]
dec [hl]
dec [hl]
;dec [hl]
ld hl, MY_OAM + 15*4
dec [hl]
dec [hl]
dec [hl]
;dec [hl]
ld hl, MY_OAM + 16*4
dec [hl]
dec [hl]
dec [hl]
;dec [hl]
ld hl, MY_OAM + 17*4
dec [hl]
dec [hl]
dec [hl]
;dec [hl]
jp .doneWithRightHand
.killRightHand
ld hl, MY_OAM+14*4
ld [hl], 160
ld hl, MY_OAM+15*4
ld [hl], 160
ld hl, MY_OAM+16*4
ld [hl], 160
ld hl, MY_OAM+17*4
ld [hl], 160
jp .doneWithRightHand
.startRightHand
ld hl, .flash
ld de, MY_OAM+14*4
ld b, 107+16
ld c, 62+8
ld a, $22
call BuildMetaSprite
.doneWithRightHand
ret
.flash:
db $13, $00
db $01, $13
.gorgetSheen:
db $08, $00
db $07, $00
db $05, $06
db $03, $04
db $00, $02
db $00, $00
.leftHandSheen:
db $00, $00
db $17, $00
db $14, $00
db $15, $16
db $14, $00
db $15, $16
db $0b, $0d
db $0c, $0a
db $0f, $0e
db $00, $00
db $11, $10
db $00, $00
db $00, $12
db $00, $00
db $00, $00
db $00, $00
.fDraw: ret
.SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$40,$00,$38,$00,$1c,$00,$08,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$80,$00,$c0,$00,$e0,$00,$70,$00,$38,$00,$00,$00,$00,$00
db $00,$00,$18,$00,$0e,$00,$07,$00,$03,$00,$01,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$20,$00,$00,$00
db $00,$00,$00,$00,$70,$00,$38,$00,$1c,$00,$0e,$00,$06,$00,$00,$00
db $00,$00,$00,$00,$80,$00,$c0,$00,$e0,$00,$70,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $c0,$00,$e0,$00,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$04,$00,$06,$00,$07,$00,$03,$00
db $01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$40,$00
db $00,$00,$00,$00,$00,$00,$03,$00,$03,$00,$01,$00,$00,$00,$00,$00
db $00,$00,$80,$00,$c0,$00,$e0,$00,$70,$00,$38,$00,$04,$00,$04,$00
db $00,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$40,$00,$38,$00,$1c,$00,$0c,$00,$04,$00,$00,$00,$00,$00
db $80,$00,$c0,$00,$e0,$00,$70,$00,$38,$00,$1c,$00,$0e,$00,$07,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$0c,$00
db $0e,$00,$07,$00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$80,$00,$c0,$00,$c0,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$08,$00,$0c,$00,$06,$00,$07,$00,$00,$00,$00,$00,$00,$00
.SpriteTilesEnd:
EmperorMap: EmperorMap:
db $1b, $1c, $1d, $1e, $1f, $20, $21, $62 db $1b, $1c, $1d, $1e, $1f, $20, $21, $62
@ -19,13 +353,13 @@ EmperorMap:
db $37, $38, $6b, $77, $73, $39, $3a, $69 db $37, $38, $6b, $77, $73, $39, $3a, $69
db $3b, $3c, $3d, $77, $77, $3e, $3f, $40 db $3b, $3c, $3d, $77, $77, $3e, $3f, $40
db $41, $42, $43, $77, $44, $45, $46, $47 db $41, $42, $43, $77, $44, $45, $46, $47
db $6c, $48, $49, $4a, $4b, $77, $4c, $7a db $6c, $48, $49, $4a, $4b, $77, $4c, $79
db $6c, $4e, $77, $77, $77, $4f, $50, $79 db $6c, $4e, $77, $77, $77, $4f, $50, $79
db $6c, $51, $52, $53, $54, $55, $56, $79 db $6c, $51, $52, $53, $54, $55, $56, $79
db $67, $57, $58, $59, $5a, $5b, $5c, $68 db $67, $57, $58, $59, $5a, $5b, $5c, $68
db $5d, $5e, $5f, $71, $71, $60, $61, $78 db $5d, $5e, $5f, $71, $71, $60, $61, $78
db $71, $71, $71, $7c, $7d, $71, $71, $71 db $71, $71, $71, $7b, $7c, $71, $71, $71
db $71, $71, $71, $7b, $7e, $71, $71, $71 db $71, $71, $71, $7a, $7d, $71, $71, $71
EmperorMapEnd: EmperorMapEnd:
EmperorTiles: EmperorTiles:
@ -61,20 +395,20 @@ EmperorTiles:
db $00,$ff,$aa,$ff,$04,$ff,$aa,$ff,$00,$ff,$a9,$ff,$03,$ff,$a7,$fa db $00,$ff,$aa,$ff,$04,$ff,$aa,$ff,$00,$ff,$a9,$ff,$03,$ff,$a7,$fa
db $0d,$f8,$95,$f0,$35,$e0,$55,$c0,$d5,$80,$55,$00,$55,$00,$54,$01 db $0d,$f8,$95,$f0,$35,$e0,$55,$c0,$d5,$80,$55,$00,$55,$00,$54,$01
db $ff,$ff,$35,$f0,$35,$f0,$35,$f0,$35,$f0,$35,$f0,$35,$f8,$39,$7c db $ff,$ff,$35,$f0,$35,$f0,$35,$f0,$35,$f0,$35,$f0,$35,$f8,$39,$7c
db $71,$6f,$62,$3f,$7c,$33,$5e,$11,$5f,$18,$5f,$08,$57,$04,$56,$07 db $71,$6f,$72,$3f,$5c,$1b,$56,$07,$57,$03,$55,$01,$55,$00,$55,$00
db $0f,$f3,$1e,$e2,$3e,$c6,$7c,$8c,$f8,$18,$f8,$18,$f0,$30,$30,$f0 db $0f,$f3,$1e,$e2,$3e,$c6,$7c,$8c,$f8,$1f,$f8,$18,$f0,$30,$30,$f0
db $f4,$e3,$3d,$3b,$05,$07,$03,$03,$02,$03,$02,$03,$3a,$3b,$2a,$3b db $f4,$e3,$3d,$3b,$05,$07,$03,$0b,$02,$f3,$02,$13,$3a,$3b,$2a,$3b
db $c1,$fc,$91,$fc,$11,$fc,$11,$fc,$15,$f8,$35,$f0,$35,$f0,$75,$e0 db $c1,$fc,$91,$fc,$11,$fc,$11,$fc,$15,$f8,$35,$f0,$35,$f0,$75,$e0
db $39,$7e,$1c,$7f,$16,$7f,$13,$7f,$49,$3f,$4c,$3f,$46,$1f,$53,$0f db $39,$7e,$1e,$7f,$17,$7f,$12,$7f,$49,$3f,$4c,$3f,$46,$1f,$53,$0f
db $57,$03,$55,$01,$57,$87,$1c,$ec,$c8,$f8,$68,$f8,$3c,$fc,$18,$f8 db $55,$00,$55,$00,$f5,$e1,$3d,$fd,$87,$ff,$41,$ff,$21,$ff,$19,$ff
db $f0,$0f,$fa,$87,$fc,$c3,$7e,$71,$0f,$08,$07,$04,$07,$04,$06,$07 db $fd,$fd,$83,$8b,$01,$09,$01,$09,$01,$09,$01,$09,$01,$09,$81,$89
db $70,$b0,$70,$90,$70,$90,$78,$98,$78,$98,$7f,$8f,$7f,$80,$7f,$80 db $70,$bf,$70,$90,$70,$90,$78,$98,$78,$98,$7f,$8f,$7f,$80,$7f,$80
db $26,$3f,$11,$1f,$13,$1f,$33,$3e,$37,$3e,$ed,$fc,$ed,$18,$fd,$18 db $26,$ff,$11,$1f,$13,$1f,$33,$3e,$37,$3e,$ed,$fc,$ed,$18,$fd,$18
db $d5,$c0,$d5,$80,$55,$00,$55,$00,$55,$00,$55,$20,$45,$30,$41,$1c db $d5,$c0,$d5,$80,$55,$00,$55,$00,$55,$00,$55,$20,$45,$30,$41,$1c
db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$54,$01,$50,$07 db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$54,$01,$50,$07
db $51,$07,$54,$03,$54,$01,$54,$01,$55,$00,$00,$7f,$15,$c0,$55,$00 db $51,$07,$54,$03,$54,$01,$54,$01,$55,$00,$00,$7f,$15,$c0,$55,$00
db $8b,$fb,$8a,$fb,$ca,$fb,$6e,$ff,$33,$ff,$1e,$fe,$18,$f8,$1f,$7f db $8f,$ff,$8f,$ff,$cf,$ff,$6f,$fa,$37,$f8,$1f,$f8,$1f,$f8,$1f,$78
db $86,$87,$86,$87,$86,$87,$86,$87,$8e,$8f,$8b,$8b,$f8,$f8,$ff,$ff db $c3,$cb,$fe,$ff,$fe,$ff,$9e,$95,$9e,$91,$9e,$91,$9e,$91,$9e,$91
db $f5,$10,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20 db $f5,$10,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20,$f5,$20
db $54,$03,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00 db $54,$03,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00
db $15,$e0,$05,$f0,$45,$30,$40,$1f,$55,$00,$55,$00,$55,$00,$55,$00 db $15,$e0,$05,$f0,$45,$30,$40,$1f,$55,$00,$55,$00,$55,$00,$55,$00
@ -108,7 +442,7 @@ EmperorTiles:
db $f4,$0f,$f7,$0f,$f5,$0f,$f7,$0f,$f5,$0f,$f6,$0f,$f5,$0f,$f7,$0f db $f4,$0f,$f7,$0f,$f5,$0f,$f7,$0f,$f5,$0f,$f6,$0f,$f5,$0f,$f7,$0f
db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$ff,$ff db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$ff,$ff
db $9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9f,$9f db $9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9f,$9f
db $01,$ff,$aa,$ff,$44,$ff,$aa,$ff,$00,$ff,$aa,$7f,$c0,$3f,$ea,$1f db $01,$ff,$aa,$ff,$e4,$ff,$9a,$9f,$98,$9f,$fe,$ff,$94,$b7,$92,$93
db $c0,$c0,$70,$30,$58,$18,$5c,$0e,$57,$07,$55,$07,$54,$07,$54,$07 db $c0,$c0,$70,$30,$58,$18,$5c,$0e,$57,$07,$55,$07,$54,$07,$54,$07
db $54,$0f,$45,$1e,$4d,$1e,$49,$3e,$19,$7e,$39,$7e,$21,$fe,$61,$fc db $54,$0f,$45,$1e,$4d,$1e,$49,$3e,$19,$7e,$39,$7e,$21,$fe,$61,$fc
db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80 db $7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80,$7f,$80
@ -125,10 +459,9 @@ EmperorTiles:
db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00 db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00
db $b0,$bf,$e0,$ff,$c0,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $b0,$bf,$e0,$ff,$c0,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff
db $9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91 db $9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91,$9e,$91
db $9e,$91,$9e,$91,$de,$91,$be,$91,$be,$91,$de,$91,$de,$91,$be,$91 db $00,$e6,$00,$e7,$00,$e7,$00,$e7,$00,$80,$00,$ff,$00,$ff,$00,$ff
db $00,$ef,$00,$ef,$00,$ef,$00,$ef,$00,$c0,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$80,$00,$e5,$00,$e4,$00,$e6,$00,$e6
db $00,$ff,$00,$ff,$00,$ff,$00,$c0,$00,$ed,$00,$ee,$00,$ee,$00,$ee db $00,$ff,$00,$ff,$00,$ff,$00,$01,$00,$f7,$00,$e7,$00,$ef,$00,$ef
db $00,$ff,$00,$ff,$00,$ff,$00,$03,$00,$f7,$00,$ef,$00,$ef,$00,$ef db $00,$4f,$00,$5f,$00,$1f,$00,$bf,$00,$07,$00,$ff,$00,$ff,$00,$ff
db $00,$5f,$00,$5f,$00,$1f,$00,$bf,$00,$03,$00,$ff,$00,$ff,$00,$ff
EmperorTilesEnd: EmperorTilesEnd:

Binary file not shown.

View File

@ -1,3 +1,5 @@
nop
nop
TheHierophant: TheHierophant:
db 10, "THE " db 10, "THE "
db 10, "HIEROPHANT" db 10, "HIEROPHANT"
@ -8,10 +10,151 @@ TheHierophant:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit:
ld hl, CVS
ld a, 0
ld [hl+], a ; CVS timer for halo
ld [hl+], a
ld [hl+], a ; CVS+2 frame of halo
ret
.fUpdate:
ld hl, CVS
call IncrementTimer
ld a, [CVS+1] ; checking the high byte of the timer
cp a, $07 ; $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 $0700, reset it
ld a, 0
ld [CVS], a
ld [CVS+1], a
; and increment frame number
ld b, 4
ld a, [CVS+2]
inc a
call ArrayClampLoopingB
ld [CVS+2], a
.doneWithTimer1
call .updateHalo
ret
.updateHalo
ld a, [CVS+2] ; this is the frame number, we need to multiply it by 35
; to get the memory index
ld b, a ; a = b
add a, b ;a = 2b
add a, a ; a = 4b
add a, a ; a = 8b
add a, a ; a = 16b
add a, a ; a = 32b
add a, b
add a, b
add a, b ; a = 35b
ld b, 0
ld c, a
; add offset to .halo to get the metasprite we're interested in
ld hl, .halo
add hl, bc
ld de, MY_OAM
ld b, 3*8
ld c, 2*8
ld a, $57
call BuildMetaSprite
ret
.fDraw:
ret
.halo ; 5 tall 7 wide sprites
db $00, $01, $02, $0d, $03, $04, $00
db $05, $06, $0e, $00, $19, $0f, $00
db $07, $10, $14, $00, $16, $11, $08
db $09, $12, $15, $00, $17, $18, $0a
db $0b, $00, $00, $00, $00, $13, $0c
db $00, $01, $02, $0d, $03, $04, $00
db $05, $1c, $1b, $00, $23, $24, $00
db $07, $1d, $1a, $00, $22, $21, $08
db $09, $12, $1e, $00, $1f, $20, $0a
db $0b, $00, $00, $00, $00, $13, $0c
db $00, $01, $02, $0d, $03, $04, $00
db $05, $27, $28, $00, $29, $2f, $00
db $07, $25, $26, $00, $22, $2e, $31
db $09, $30, $2a, $00, $2b, $2c, $2d
db $0b, $00, $00, $00, $00, $13, $0c
db $00, $01, $02, $0d, $03, $04, $00
db $05, $1c, $1b, $00, $23, $24, $00
db $07, $1d, $1a, $00, $22, $21, $08
db $09, $12, $1e, $00, $1f, $20, $0a
db $0b, $00, $00, $00, $00, $13, $0c
.SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$01,$01,$03,$02,$07,$04,$0f,$08,$1f,$10
db $07,$07,$1f,$18,$7f,$60,$ff,$80,$ff,$00,$ff,$03,$fc,$0c,$f0,$30
db $1c,$1c,$1f,$03,$1f,$00,$1f,$00,$0f,$00,$0f,$08,$07,$06,$01,$01
db $00,$00,$00,$00,$c0,$c0,$f0,$30,$f8,$08,$fc,$04,$fc,$00,$fc,$80
db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$03,$02,$03,$02
db $3f,$20,$7f,$40,$ff,$81,$fe,$82,$fc,$05,$f8,$08,$f8,$08,$f0,$10
db $07,$04,$07,$04,$07,$04,$07,$04,$0f,$08,$0f,$08,$0f,$08,$0f,$08
db $00,$00,$00,$00,$00,$00,$00,$00,$60,$40,$60,$40,$60,$40,$60,$40
db $0f,$08,$0f,$08,$0f,$08,$0f,$08,$0f,$08,$07,$04,$07,$04,$06,$04
db $60,$c0,$60,$40,$60,$40,$60,$40,$60,$40,$e0,$80,$e0,$80,$e0,$80
db $06,$04,$02,$02,$02,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $c0,$00,$c0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $80,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $c0,$40,$80,$80,$00,$00,$00,$00,$00,$e0,$60,$98,$38,$c4,$3c,$40
db $7c,$40,$3c,$20,$1c,$10,$00,$00,$00,$00,$00,$60,$60,$80,$c0,$20
db $f0,$10,$e0,$20,$e0,$20,$e0,$20,$c0,$40,$c0,$40,$c0,$70,$c0,$40
db $80,$00,$80,$00,$00,$80,$00,$80,$00,$00,$00,$c0,$c0,$30,$f0,$0c
db $c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$80,$00,$00,$00,$00,$00
db $01,$01,$01,$01,$03,$02,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1c,$20,$0c,$30,$0c,$10,$04,$18,$04,$78,$7c,$80,$7c,$00,$3c,$00
db $3e,$00,$3e,$00,$0f,$30,$03,$0c,$00,$03,$00,$00,$00,$00,$00,$00
db $03,$00,$03,$00,$03,$00,$03,$00,$02,$01,$02,$01,$03,$00,$03,$00
db $03,$00,$07,$00,$07,$00,$00,$07,$00,$0c,$00,$00,$00,$00,$00,$00
db $fc,$03,$e0,$1c,$00,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$00
db $3c,$40,$1c,$60,$1c,$20,$0c,$70,$7c,$80,$fc,$00,$7c,$00,$3c,$00
db $c0,$40,$80,$80,$00,$00,$00,$00,$00,$f8,$f0,$0c,$fc,$00,$7c,$80
db $3f,$20,$7f,$40,$ff,$81,$fe,$82,$fc,$05,$f8,$09,$f8,$09,$f0,$10
db $f0,$10,$e0,$20,$e0,$20,$e0,$20,$c0,$43,$c3,$4c,$c0,$70,$c0,$40
db $3e,$00,$3e,$00,$3f,$00,$07,$00,$03,$04,$00,$03,$00,$00,$00,$00
db $03,$00,$07,$00,$07,$00,$06,$01,$0c,$02,$00,$0c,$00,$00,$00,$00
db $fe,$01,$f8,$06,$c0,$38,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00
db $80,$00,$80,$00,$80,$00,$80,$00,$00,$80,$80,$60,$e0,$18,$f8,$06
db $03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$00,$03,$00
db $7c,$40,$3c,$20,$1c,$10,$00,$00,$00,$60,$60,$80,$e0,$00,$e0,$10
db $f0,$10,$e0,$20,$e0,$20,$e0,$21,$c1,$4e,$cf,$70,$f0,$40,$e0,$40
db $7c,$80,$7c,$80,$3c,$40,$7c,$80,$fc,$00,$fc,$00,$7c,$00,$3c,$00
db $3f,$20,$7f,$40,$ff,$81,$fe,$83,$fd,$06,$f9,$0a,$f8,$09,$f0,$11
db $c0,$40,$80,$80,$00,$00,$00,$f0,$f0,$0c,$fc,$00,$fc,$00,$fc,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$00,$03,$00,$03,$00
db $3e,$00,$3e,$00,$3f,$00,$07,$00,$07,$00,$03,$04,$00,$00,$00,$00
db $03,$00,$07,$00,$07,$00,$07,$00,$0e,$01,$0c,$02,$00,$00,$00,$00
db $ff,$00,$fe,$01,$f8,$06,$c0,$38,$00,$c0,$00,$00,$00,$00,$00,$00
db $e0,$40,$60,$c0,$60,$40,$60,$40,$60,$40,$e0,$80,$e0,$80,$e0,$80
db $80,$00,$80,$00,$80,$00,$80,$00,$80,$60,$e0,$18,$f8,$06,$fe,$01
db $7c,$40,$3c,$20,$1c,$10,$00,$60,$60,$80,$e0,$00,$e0,$00,$f0,$08
db $c0,$60,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$80,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$60,$40,$60,$40,$60,$40,$60,$c0
.SpriteTilesEnd:
.KeyArtTiles: .KeyArtTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$02,$00,$02,$00,$02,$00,$01,$00,$01,$00,$0f,$00,$00,$00,$00 db $06,$06,$02,$02,$02,$02,$03,$03,$01,$01,$0f,$0f,$00,$00,$00,$00
db $00,$00,$18,$19,$3c,$3f,$26,$27,$42,$43,$43,$43,$41,$41,$40,$40 db $00,$00,$18,$19,$3c,$3f,$26,$27,$42,$43,$43,$43,$41,$41,$40,$40
db $00,$00,$00,$80,$00,$80,$00,$c0,$00,$c0,$00,$e0,$80,$e0,$80,$f0 db $00,$00,$00,$80,$00,$80,$00,$c0,$00,$c0,$00,$e0,$80,$e0,$80,$f0
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01
@ -25,57 +168,56 @@ TheHierophant:
db $f8,$f8,$00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$00,$00,$00,$00 db $f8,$f8,$00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$07 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$07
db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00 db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00
db $00,$00,$00,$3f,$1e,$61,$3f,$c0,$7f,$80,$76,$89,$66,$99,$7f,$80 db $00,$00,$00,$3f,$1e,$61,$3f,$c0,$7f,$80,$76,$89,$7f,$99,$7f,$80
db $08,$08,$08,$08,$08,$c8,$88,$68,$c8,$38,$e8,$18,$70,$88,$e0,$18 db $08,$08,$08,$08,$08,$c8,$88,$68,$c8,$38,$e8,$18,$f0,$88,$e0,$18
db $00,$00,$3f,$3f,$3f,$3f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$3f,$3f,$3f,$3f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $0f,$09,$ff,$f9,$ff,$f9,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09 db $0f,$09,$ff,$f9,$ff,$f9,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09
db $00,$00,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $0d,$0b,$0d,$0a,$0d,$0a,$0d,$0a,$0d,$0a,$1d,$1a,$3f,$38,$7e,$41 db $0d,$0b,$0d,$0a,$0d,$0a,$0d,$0a,$0d,$0a,$1d,$1a,$3f,$38,$7e,$41
db $80,$80,$80,$80,$80,$80,$80,$80,$b0,$b0,$d0,$f0,$90,$d0,$e0,$a3 db $80,$80,$80,$80,$80,$80,$80,$80,$b0,$b0,$d0,$f0,$90,$d0,$e0,$a3
db $39,$c6,$3f,$40,$18,$67,$1f,$20,$0f,$30,$00,$1f,$00,$18,$00,$f1 db $39,$c6,$3f,$40,$18,$67,$1f,$20,$0f,$30,$0f,$1f,$00,$18,$00,$f1
db $e0,$10,$e0,$10,$c0,$30,$c0,$20,$80,$40,$00,$80,$00,$80,$00,$ff db $e0,$10,$e0,$10,$c0,$30,$e0,$20,$c0,$40,$80,$80,$00,$80,$00,$ff
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0
db $0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$19 db $0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$19
db $f7,$88,$d7,$a8,$d7,$a8,$7f,$70,$3f,$60,$3f,$30,$1f,$18,$0b,$0c db $f7,$88,$d7,$a8,$d7,$a8,$7f,$70,$3f,$60,$3f,$30,$1f,$18,$0b,$0c
db $ec,$2e,$f4,$7a,$f4,$72,$e4,$73,$54,$c1,$54,$c1,$d4,$40,$94,$40 db $ec,$2e,$f4,$7a,$f4,$7a,$e4,$7b,$54,$eb,$54,$eb,$d5,$6a,$95,$6a
db $00,$30,$00,$10,$00,$10,$00,$10,$00,$1f,$04,$89,$04,$89,$04,$89 db $00,$30,$00,$10,$00,$10,$00,$10,$00,$1f,$04,$8b,$04,$8b,$04,$8b
db $01,$84,$01,$84,$01,$84,$01,$8c,$05,$88,$05,$18,$05,$10,$05,$12 db $01,$86,$01,$86,$01,$86,$01,$8e,$05,$8a,$05,$1a,$05,$1a,$07,$1a
db $00,$60,$40,$10,$50,$08,$50,$08,$54,$0c,$54,$06,$56,$02,$56,$02 db $00,$e0,$40,$b0,$50,$a8,$50,$a8,$54,$ac,$54,$ae,$56,$aa,$56,$aa
db $0e,$1f,$1b,$1f,$3f,$37,$1f,$3c,$30,$5f,$3f,$50,$71,$9e,$7f,$90 db $0e,$1f,$1b,$1f,$3f,$37,$1f,$3c,$30,$5f,$3f,$50,$71,$9e,$7f,$90
db $00,$00,$80,$80,$c0,$c0,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40 db $00,$00,$80,$80,$c0,$c0,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40
db $0b,$0c,$1f,$18,$17,$18,$1f,$10,$1f,$10,$3f,$30,$3f,$20,$3f,$20 db $0b,$0c,$1f,$18,$17,$18,$1f,$10,$1f,$10,$3f,$30,$3f,$20,$3f,$20
db $94,$40,$94,$40,$94,$40,$84,$50,$84,$50,$44,$90,$44,$90,$44,$90 db $95,$6a,$95,$6a,$95,$6a,$95,$7a,$95,$7a,$55,$ba,$55,$ba,$55,$ba
db $04,$89,$04,$89,$04,$89,$04,$89,$04,$89,$04,$89,$04,$89,$04,$89 db $04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b
db $05,$12,$05,$12,$05,$12,$05,$12,$05,$12,$05,$12,$05,$12,$05,$12 db $07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a
db $56,$02,$54,$03,$51,$06,$53,$0c,$63,$3c,$67,$78,$4f,$70,$5f,$60 db $56,$aa,$54,$af,$59,$ae,$53,$bc,$63,$bc,$67,$f8,$4f,$f0,$5f,$e0
db $71,$9e,$ff,$1f,$e9,$19,$e9,$19,$df,$39,$df,$39,$bf,$79,$af,$69 db $71,$9e,$ff,$1f,$ef,$19,$ef,$19,$df,$39,$df,$39,$bf,$79,$af,$69
db $c0,$40,$c0,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $c0,$40,$c0,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $3f,$20,$7e,$61,$7e,$41,$fe,$c1,$be,$c1,$be,$c1,$be,$c1,$bc,$c3 db $3f,$20,$7e,$61,$7e,$41,$fe,$c1,$be,$c1,$be,$c1,$be,$c1,$bc,$c3
db $44,$90,$44,$90,$44,$90,$44,$b0,$b4,$f1,$b4,$e1,$b4,$e1,$f4,$e1 db $55,$ba,$55,$ba,$55,$ba,$55,$ba,$b4,$fb,$b4,$eb,$b4,$eb,$f4,$eb
db $04,$89,$04,$89,$04,$89,$04,$89,$04,$09,$04,$09,$04,$09,$04,$09 db $04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$0b,$04,$0b,$04,$0b,$04,$0b
db $05,$12,$05,$12,$05,$12,$05,$12,$04,$09,$04,$09,$04,$09,$05,$09 db $07,$1a,$07,$1a,$07,$1a,$07,$1a,$05,$0b,$05,$0b,$05,$0b,$05,$0b
db $7f,$40,$7f,$40,$7e,$41,$7e,$41,$7d,$43,$5b,$67,$47,$7f,$ff,$ff db $7f,$c0,$7f,$c0,$7e,$c1,$7e,$c1,$7d,$c3,$5b,$e7,$47,$ff,$ff,$ff
db $4f,$c9,$4f,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9 db $4f,$c9,$4f,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9
db $91,$ef,$c7,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$7f,$7f db $91,$ef,$c7,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$7f,$7f
db $f4,$e1,$f4,$e1,$f4,$e1,$b4,$a1,$b4,$a1,$34,$21,$34,$21,$34,$21 db $f4,$eb,$f4,$eb,$d4,$eb,$94,$ab,$94,$ab,$14,$2b,$14,$2b,$14,$2b
db $04,$09,$04,$09,$04,$09,$04,$09,$04,$09,$04,$09,$04,$09,$04,$09 db $04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b
db $05,$08,$05,$08,$05,$08,$05,$08,$05,$08,$05,$08,$05,$08,$05,$08 db $05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a
db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff,$7f,$ff,$7f,$7f,$7f,$3f,$7f,$3f db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$bf,$7f,$bf
db $8f,$89,$8f,$89,$8f,$89,$8f,$89,$8f,$89,$8f,$89,$0f,$09,$0f,$09 db $8f,$89,$8f,$89,$8f,$89,$8f,$89,$8f,$89,$8f,$89,$0f,$09,$0f,$09
db $3e,$3e,$1e,$1e,$0c,$0c,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $3e,$3e,$1e,$1e,$0c,$0c,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $34,$23,$74,$62,$54,$42,$54,$42,$54,$43,$54,$41,$54,$41,$55,$40 db $14,$2b,$14,$6a,$14,$6a,$14,$6a,$14,$6b,$14,$6b,$14,$6b,$15,$6a
db $04,$09,$04,$09,$04,$09,$04,$09,$04,$09,$04,$19,$05,$90,$05,$f0 db $04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$1b,$05,$9a,$05,$fa
db $01,$0c,$01,$04,$01,$04,$01,$04,$01,$0c,$05,$88,$05,$98,$05,$f0 db $01,$0e,$01,$06,$01,$06,$01,$06,$01,$0e,$05,$8a,$05,$9a,$05,$fa
db $5e,$3e,$5c,$1c,$50,$10,$50,$10,$50,$10,$50,$10,$58,$08,$58,$08 db $5e,$be,$5c,$bc,$40,$b0,$40,$b0,$40,$b0,$40,$b0,$50,$a8,$50,$a8
db $0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09 db $0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09
db $55,$40,$55,$40,$55,$40,$55,$40,$55,$40,$55,$40,$55,$40,$55,$40 db $15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a
db $55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00,$55,$00 db $50,$a8,$50,$a8,$50,$a8,$50,$a8,$50,$a8,$50,$a8,$50,$ac,$50,$ac
db $58,$08,$58,$08,$58,$08,$58,$08,$58,$08,$58,$08,$54,$04,$54,$04 db $15,$6a,$15,$6a,$15,$6a,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa
db $55,$40,$55,$40,$55,$40,$d5,$80,$d5,$80,$d5,$80,$d5,$80,$d5,$80 db $50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac
db $54,$04,$54,$04,$54,$04,$54,$04,$54,$04,$54,$04,$54,$04,$54,$04 db $55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$15,$ea,$15,$ea
db $d5,$80,$d5,$80,$d5,$80,$d5,$80,$d5,$80,$55,$80,$15,$c0,$15,$c0 db $55,$aa,$55,$aa,$41,$80,$08,$88,$1c,$1c,$3e,$36,$1f,$0f,$1b,$19
db $55,$00,$55,$00,$41,$00,$08,$08,$1c,$1c,$3e,$36,$1f,$0f,$1b,$19 db $55,$aa,$55,$aa,$05,$02,$11,$12,$38,$38,$7c,$6c,$f8,$f0,$d8,$98
db $55,$00,$55,$00,$05,$00,$11,$10,$38,$38,$7c,$6c,$f8,$f0,$d8,$98
db $03,$03,$07,$06,$7e,$7e,$4c,$7c,$44,$4c,$64,$6c,$7c,$3c,$00,$00 db $03,$03,$07,$06,$7e,$7e,$4c,$7c,$44,$4c,$64,$6c,$7c,$3c,$00,$00
db $c0,$c0,$e0,$60,$7e,$7e,$32,$3e,$22,$32,$26,$36,$3e,$3c,$00,$00 db $c0,$c0,$e0,$60,$7e,$7e,$32,$3e,$22,$32,$26,$36,$3e,$3c,$00,$00
db $00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02 db $00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02
@ -84,7 +226,7 @@ TheHierophant:
db $00,$01,$00,$1e,$04,$3b,$14,$6b,$30,$4e,$30,$4c,$20,$5e,$20,$57 db $00,$01,$00,$1e,$04,$3b,$14,$6b,$30,$4e,$30,$4c,$20,$5e,$20,$57
db $00,$61,$00,$40,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0 db $00,$61,$00,$40,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0
db $00,$81,$00,$81,$00,$83,$00,$82,$00,$86,$00,$fe,$00,$02,$00,$02 db $00,$81,$00,$81,$00,$83,$00,$82,$00,$86,$00,$fe,$00,$02,$00,$02
db $54,$04,$54,$04,$54,$04,$54,$04,$54,$05,$54,$05,$55,$06,$55,$06 db $50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ad,$50,$ad,$51,$ae,$51,$ae
db $0f,$09,$0f,$09,$00,$3f,$0e,$f1,$7f,$80,$ff,$00,$ff,$00,$80,$7f db $0f,$09,$0f,$09,$00,$3f,$0e,$f1,$7f,$80,$ff,$00,$ff,$00,$80,$7f
db $00,$00,$00,$00,$00,$00,$00,$80,$80,$40,$80,$40,$00,$c0,$00,$c0 db $00,$00,$00,$00,$00,$00,$00,$80,$80,$40,$80,$40,$00,$c0,$00,$c0
db $3c,$c3,$3c,$c2,$7c,$82,$18,$e6,$00,$3c,$00,$00,$00,$00,$00,$00 db $3c,$c3,$3c,$c2,$7c,$82,$18,$e6,$00,$3c,$00,$00,$00,$00,$00,$00
@ -105,9 +247,10 @@ TheHierophant:
db $00,$81,$00,$81,$00,$c1,$00,$41,$00,$61,$00,$7f,$00,$40,$00,$40 db $00,$81,$00,$81,$00,$c1,$00,$41,$00,$61,$00,$7f,$00,$40,$00,$40
db $01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02 db $01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02
db $80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40 db $80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40
db $00,$40,$00,$40,$00,$40,$00,$80,$00,$80,$00,$f0,$00,$00,$00,$00 db $60,$60,$40,$40,$40,$40,$c0,$c0,$80,$80,$f0,$f0,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$1f,$00,$08,$00,$08,$00,$04,$00,$04,$00,$04 db $00,$00,$00,$00,$1f,$1f,$08,$08,$08,$08,$0c,$0c,$04,$04,$04,$04
db $00,$00,$00,$00,$00,$f8,$00,$10,$00,$10,$00,$20,$00,$20,$00,$20 db $00,$00,$00,$00,$f8,$f8,$10,$10,$10,$10,$30,$30,$20,$20,$20,$20
db $55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa
.KeyArtTilesEnd: .KeyArtTilesEnd:
.BackgroundCopy: ; tiles start at 26 .BackgroundCopy: ; tiles start at 26
@ -120,11 +263,11 @@ TheHierophant:
db $1a, $42, $43, $44, $45, $46, $47, $1a db $1a, $42, $43, $44, $45, $46, $47, $1a
db $1a, $48, $49, $4a, $4b, $4c, $4d, $1a db $1a, $48, $49, $4a, $4b, $4c, $4d, $1a
db $1a, $4e, $4f, $50, $51, $52, $53, $1a db $1a, $4e, $4f, $50, $51, $52, $53, $1a
db $1a, $1a, $54, $55, $55, $56, $53, $1a db $1a, $1a, $54, $7b, $7b, $55, $53, $1a
db $1a, $1a, $57, $55, $55, $58, $53, $1a db $1a, $1a, $56, $7b, $7b, $57, $53, $1a
db $6b, $6c, $59, $5a, $5b, $64, $65, $66 db $6a, $6b, $58, $59, $5a, $63, $64, $65
db $6d, $6e, $78, $5c, $5d, $77, $5f, $60 db $6c, $6d, $77, $5b, $5c, $76, $5e, $5f
db $70, $71, $72, $1a, $1a, $61, $67, $68 db $6f, $70, $71, $1a, $1a, $60, $66, $67
db $73, $74, $75, $7a, $7b, $62, $69, $6a db $72, $73, $74, $79, $7a, $61, $68, $69
db $6f, $1a, $76, $1b, $79, $63, $1a, $5e db $6e, $1a, $75, $1b, $78, $62, $1a, $5d
.BackgroundCopyEnd: .BackgroundCopyEnd:

Binary file not shown.

View File

@ -8,6 +8,17 @@ TheChariot:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,7 +8,17 @@ Strength:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,7 +8,17 @@ TheHermit:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,7 +8,17 @@ WheelOfFortune:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,7 +8,17 @@ Justice:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,7 +8,17 @@ TheHangedMan:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,7 +8,18 @@ Death:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
.KeyArtTiles: .KeyArtTiles:

View File

@ -8,7 +8,18 @@ Temperance:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,7 +8,18 @@ TheDevil:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
.KeyArtTiles: .KeyArtTiles:

View File

@ -8,7 +8,18 @@ TheTower:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
.KeyArtTiles: .KeyArtTiles:

View File

@ -8,7 +8,18 @@ TheStar:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
.KeyArtTiles: .KeyArtTiles:

View File

@ -8,7 +8,18 @@ TheMoon:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
.KeyArtTiles: .KeyArtTiles:

View File

@ -8,7 +8,18 @@ TheSun:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
.KeyArtTiles: .KeyArtTiles:

View File

@ -8,7 +8,18 @@ Judgement:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
; sparks flying off ; sparks flying off
; original export script by gabriel reis, modified by shoofle ; original export script by gabriel reis, modified by shoofle

View File

@ -8,8 +8,18 @@ TheWorld:
dw .BackgroundCopy dw .BackgroundCopy
dw .KeyArtTilesEnd - .KeyArtTiles dw .KeyArtTilesEnd - .KeyArtTiles
dw .KeyArtTiles dw .KeyArtTiles
; original export script by gabriel reis, modified by shoofle dw .SpriteTilesEnd - .SpriteTiles
; continents dw .SpriteTiles
dw .fInit
dw .fUpdate
dw .fDraw
.fInit: ret
.fUpdate: ret
.fDraw: ret
.SpriteTiles:
.SpriteTilesEnd:
; original export script by gabriel reis, modified by shoofle
.KeyArtTiles: .KeyArtTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00

View File

@ -18,7 +18,7 @@ def ASYNC_STACK_TOP equ $ffc0
; second value is the destination of the async call, at ffbc = ffbe-2 = ffc0-2-2 ; second value is the destination of the async call, at ffbc = ffbe-2 = ffc0-2-2
def ASYNC_THREAD_CALL equ ASYNC_STACK_TOP - 2 - 2 def ASYNC_THREAD_CALL equ ASYNC_STACK_TOP - 2 - 2
def SAFE_ASYNC_START EQU 150 def SAFE_ASYNC_START EQU 148
def SAFE_ASYNC_END EQU 153 def SAFE_ASYNC_END EQU 153
Async_Spawn_HL: Async_Spawn_HL:
@ -161,6 +161,11 @@ Async_Spawn:
ei ei
ret ret
Async_Kill:
ld hl, EndOfInstructions
call Async_Spawn_HL
ret
Async_EnterThread: Async_EnterThread:
;stack looks like: ;stack looks like:
;c113 (SMC int @ LYC 90 pc), 004b (hw int @ LYC 90 pc), outer context pc ;c113 (SMC int @ LYC 90 pc), 004b (hw int @ LYC 90 pc), outer context pc

View File

@ -1,5 +1,6 @@
; CARD_HELPER_VARS_START defines the beginning of the $100 bytes set aside for system usage ; CARD_HELPER_VARS_START defines the beginning of the $100 bytes set aside for system usage
def cvCardAddress equ 0 ; location of the current card's struct def cvCardBank equ 0
def cvCardAddress equ 1 ; location of the current card's struct
LoadCardData: LoadCardData:
LoadCardDataAsync: LoadCardDataAsync:
@ -30,6 +31,7 @@ LoadCardDataAsync:
add hl, bc ; triple add bc entries are bank, addr, addr add hl, bc ; triple add bc entries are bank, addr, addr
ld a, [hl+] ld a, [hl+]
ld [CARD_HELPER_VARS_START + cvCardBank], a
ld [rROMB0], a ; select the specified bank ld [rROMB0], a ; select the specified bank
; follow the pointer we're looking at, and write it to cvCardAddress ; follow the pointer we're looking at, and write it to cvCardAddress
ld a, [hl+] ld a, [hl+]
@ -76,7 +78,7 @@ LoadCardDataAsync:
ld b, 16 ; height ld b, 16 ; height
ld c, 8 ; width ld c, 8 ; width
call CopyTilesToMapUnsafe call CopyTilesToMap
ld a, [CARD_HELPER_VARS_START + cvCardAddress] ld a, [CARD_HELPER_VARS_START + cvCardAddress]
ld l, a ld l, a
@ -100,7 +102,7 @@ LoadCardDataAsync:
ld l, e ; hl takes the source ld l, e ; hl takes the source
ld de, $9000 + VARIABLE_TILES_START*$10 ; always load tile data into the same spot in vram ld de, $9000 + VARIABLE_TILES_START*$10 ; always load tile data into the same spot in vram
call CopyRangeUnsafe call CopyRange
ld a, [CARD_HELPER_VARS_START + cvCardAddress] ld a, [CARD_HELPER_VARS_START + cvCardAddress]
@ -125,7 +127,7 @@ LoadCardDataAsync:
ld l, e ; hl takes the source ld l, e ; hl takes the source
ld de, $8000 ; sprite tiles get loaded into the bottom of vram ld de, $8000 ; sprite tiles get loaded into the bottom of vram
call CopyRangeUnsafe call CopyRange
ld a, [CARD_HELPER_VARS_START + cvCardAddress] ld a, [CARD_HELPER_VARS_START + cvCardAddress]
ld l, a ld l, a
@ -133,8 +135,7 @@ LoadCardDataAsync:
ld h, a ; hl now contains the address of the card data. ld h, a ; hl now contains the address of the card data.
ld b, 0 ld b, 0
ld c, Card_Offset_functions ; jump straight to sprite tiles length and location! ld c, Card_Offset_functions ; jump straight to function handles
add hl, bc ; hl now points to the card functions add hl, bc ; hl now points to the card functions
ld a, [hl+] ld a, [hl+]
@ -158,6 +159,12 @@ CardInit:
ld a, [rLCDC] ld a, [rLCDC]
and a, %1111_1011 and a, %1111_1011
ld [rLCDC], a ld [rLCDC], a
ld hl, ZEROES
ld de, MY_OAM
ld bc, $100
call CopyRange
call CARD_INIT - 1 call CARD_INIT - 1
ret ret

View File

@ -177,24 +177,30 @@ INCLUDE "01TheMagician.inc"
INCLUDE "02TheHighPriestess.inc" INCLUDE "02TheHighPriestess.inc"
INCLUDE "03TheEmpress.inc" INCLUDE "03TheEmpress.inc"
INCLUDE "04TheEmperor.inc" INCLUDE "04TheEmperor.inc"
SECTION "Second Eight Cards", ROMX
INCLUDE "05TheHierophant.inc" INCLUDE "05TheHierophant.inc"
INCLUDE "06TheLovers.inc" INCLUDE "06TheLovers.inc"
INCLUDE "07TheChariot.inc" INCLUDE "07TheChariot.inc"
SECTION "Second Eight Cards", ROMX
INCLUDE "08Strength.inc" INCLUDE "08Strength.inc"
INCLUDE "09TheHermit.inc" INCLUDE "09TheHermit.inc"
SECTION "Third Eight Cards", ROMX
INCLUDE "10WheelOfFortune.inc" INCLUDE "10WheelOfFortune.inc"
INCLUDE "11Justice.inc" INCLUDE "11Justice.inc"
INCLUDE "12TheHangedMan.inc" INCLUDE "12TheHangedMan.inc"
INCLUDE "13Death.inc" INCLUDE "13Death.inc"
INCLUDE "14Temperance.inc" INCLUDE "14Temperance.inc"
INCLUDE "15TheDevil.inc"
SECTION "Third Eight Cards", ROMX SECTION "Fourth Eight Cards", ROMX
INCLUDE "15TheDevil.inc"
INCLUDE "16TheTower.inc" INCLUDE "16TheTower.inc"
INCLUDE "17TheStar.inc" INCLUDE "17TheStar.inc"
INCLUDE "18TheMoon.inc" INCLUDE "18TheMoon.inc"
INCLUDE "19TheSun.inc" INCLUDE "19TheSun.inc"
SECTION "FIFTH EIGHT CARDS", ROMX
INCLUDE "20Judgement.inc" INCLUDE "20Judgement.inc"
INCLUDE "21TheWorld.inc" INCLUDE "21TheWorld.inc"

View File

@ -14,17 +14,21 @@ DEF SAFE_TRANSFER_END EQU 153
CopyRange: CopyRange:
CopyRangeUnsafe: ; this is threadsafe but not vblank safe CopyRangeUnsafe:
; hl is source ; hl is source
; de is destination ; de is destination
; bc is length to copy ; bc is length to copy
ld a, b
or a, c
ret z
.loop
ld a, [hl+] ld a, [hl+]
ld [de], a ld [de], a
inc de inc de
dec bc dec bc
ld a, b ld a, b
or a, c ; check if bc is zero or a, c ; check if bc is zero
jp nz, CopyRange jp nz, .loop
ret ret
@ -34,7 +38,10 @@ CopyRangeUnsafeBy8s:
; de is destination ; de is destination
; bc is 1/8 of length to copy!!! ; bc is 1/8 of length to copy!!!
; so like this will copy 8*bc bytes! ; so like this will copy 8*bc bytes!
ld a, b
or a, c
ret z
.loop
ld a, [hl+] ld a, [hl+]
ld [de], a ld [de], a
inc de inc de
@ -62,7 +69,5 @@ CopyRangeUnsafeBy8s:
dec bc dec bc
ld a, b ld a, b
or a, c ; check if bc is zero or a, c ; check if bc is zero
jp nz, CopyRangeBy8s jp nz, .loop
nop
nop
ret ret

View File

@ -4,42 +4,120 @@
KeyArtTiles: KeyArtTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa db $06,$06,$02,$02,$02,$02,$03,$03,$01,$01,$0f,$0f,$00,$00,$00,$00
db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$aa,$aa,$55,$55,$aa db $00,$00,$18,$19,$3c,$3f,$26,$27,$42,$43,$43,$43,$41,$41,$40,$40
db $00,$ff,$fe,$ff,$fe,$ff,$06,$ff,$f6,$ff,$56,$bf,$b6,$5f,$56,$bf db $00,$00,$00,$80,$00,$80,$00,$c0,$00,$c0,$00,$e0,$80,$e0,$80,$f0
db $6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa,$6a,$fd,$6d,$fa db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01
db $aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa db $00,$00,$00,$00,$00,$00,$0f,$0f,$0f,$09,$0f,$09,$0f,$09,$ff,$f9
db $b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf,$b6,$5f,$56,$bf db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f8,$f8
db $6a,$fd,$6d,$fa,$6a,$fd,$6f,$ff,$60,$ff,$7f,$ff,$7f,$ff,$00,$ff db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01
db $aa,$55,$55,$aa,$aa,$55,$ff,$ff,$00,$ff,$ff,$ff,$ff,$ff,$00,$ff db $80,$80,$80,$80,$80,$80,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00
db $b6,$5f,$56,$bf,$b6,$5f,$f6,$ff,$06,$ff,$fe,$ff,$fe,$ff,$00,$ff db $c0,$f0,$40,$78,$60,$78,$20,$38,$30,$38,$10,$18,$18,$18,$08,$08
db $ff,$00,$80,$7f,$80,$7f,$9f,$7f,$9f,$7f,$98,$78,$99,$79,$9a,$7a db $01,$01,$00,$00,$00,$00,$00,$00,$0f,$0f,$0f,$0f,$00,$00,$00,$00
db $ff,$00,$01,$fe,$01,$fe,$f9,$fe,$f9,$fe,$19,$1e,$19,$1e,$d9,$de db $ff,$f9,$0f,$09,$0f,$09,$0f,$09,$ff,$f9,$ff,$f9,$0f,$09,$0f,$09
db $9a,$7a,$99,$79,$98,$78,$9c,$78,$99,$78,$9b,$79,$9b,$7a,$9b,$7a db $f8,$f8,$00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$00,$00,$00,$00
db $d9,$de,$99,$9e,$d9,$de,$f9,$de,$99,$9e,$d9,$9e,$d9,$9e,$d9,$5e db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$07
db $98,$78,$98,$7b,$99,$7a,$9a,$7c,$9f,$7b,$99,$79,$99,$79,$98,$78 db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00
db $59,$5e,$19,$fe,$f9,$1e,$19,$1e,$d9,$de,$d9,$de,$59,$5e,$19,$1e db $00,$00,$00,$3f,$1e,$61,$3f,$c0,$7f,$80,$76,$89,$7f,$99,$7f,$80
db $98,$79,$98,$79,$98,$78,$9f,$7f,$9f,$7f,$80,$7f,$80,$7f,$ff,$00 db $08,$08,$08,$08,$08,$c8,$88,$68,$c8,$38,$e8,$18,$f0,$88,$e0,$18
db $19,$9e,$19,$9e,$19,$1e,$f9,$fe,$f9,$fe,$01,$fe,$01,$fe,$ff,$00 db $00,$00,$3f,$3f,$3f,$3f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $0f,$09,$ff,$f9,$ff,$f9,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09
db $00,$00,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $0d,$0b,$0d,$0a,$0d,$0a,$0d,$0a,$0d,$0a,$1d,$1a,$3f,$38,$7e,$41
db $80,$80,$80,$80,$80,$80,$80,$80,$b0,$b0,$d0,$f0,$90,$d0,$e0,$a3
db $39,$c6,$3f,$40,$18,$67,$1f,$20,$0f,$30,$0f,$1f,$00,$18,$00,$f1
db $e0,$10,$e0,$10,$c0,$30,$e0,$20,$c0,$40,$80,$80,$00,$80,$00,$ff
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0
db $0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$19
db $f7,$88,$d7,$a8,$d7,$a8,$7f,$70,$3f,$60,$3f,$30,$1f,$18,$0b,$0c
db $ec,$2e,$f4,$7a,$f4,$7a,$e4,$7b,$54,$eb,$54,$eb,$d5,$6a,$95,$6a
db $00,$30,$00,$10,$00,$10,$00,$10,$00,$1f,$04,$8b,$04,$8b,$04,$8b
db $01,$86,$01,$86,$01,$86,$01,$8e,$05,$8a,$05,$1a,$05,$1a,$07,$1a
db $00,$e0,$40,$b0,$50,$a8,$50,$a8,$54,$ac,$54,$ae,$56,$aa,$56,$aa
db $0e,$1f,$1b,$1f,$3f,$37,$1f,$3c,$30,$5f,$3f,$50,$71,$9e,$7f,$90
db $00,$00,$80,$80,$c0,$c0,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40
db $0b,$0c,$1f,$18,$17,$18,$1f,$10,$1f,$10,$3f,$30,$3f,$20,$3f,$20
db $95,$6a,$95,$6a,$95,$6a,$95,$7a,$95,$7a,$55,$ba,$55,$ba,$55,$ba
db $04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$8b
db $07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a,$07,$1a
db $56,$aa,$54,$af,$59,$ae,$53,$bc,$63,$bc,$67,$f8,$4f,$f0,$5f,$e0
db $71,$9e,$ff,$1f,$ef,$19,$ef,$19,$df,$39,$df,$39,$bf,$79,$af,$69
db $c0,$40,$c0,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $3f,$20,$7e,$61,$7e,$41,$fe,$c1,$be,$c1,$be,$c1,$be,$c1,$bc,$c3
db $55,$ba,$55,$ba,$55,$ba,$55,$ba,$b4,$fb,$b4,$eb,$b4,$eb,$f4,$eb
db $04,$8b,$04,$8b,$04,$8b,$04,$8b,$04,$0b,$04,$0b,$04,$0b,$04,$0b
db $07,$1a,$07,$1a,$07,$1a,$07,$1a,$05,$0b,$05,$0b,$05,$0b,$05,$0b
db $7f,$c0,$7f,$c0,$7e,$c1,$7e,$c1,$7d,$c3,$5b,$e7,$47,$ff,$ff,$ff
db $4f,$c9,$4f,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9,$cf,$c9
db $91,$ef,$c7,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$7f,$7f
db $f4,$eb,$f4,$eb,$d4,$eb,$94,$ab,$94,$ab,$14,$2b,$14,$2b,$14,$2b
db $04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b
db $05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a,$05,$0a
db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$7f,$bf,$7f,$bf
db $8f,$89,$8f,$89,$8f,$89,$8f,$89,$8f,$89,$8f,$89,$0f,$09,$0f,$09
db $3e,$3e,$1e,$1e,$0c,$0c,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $14,$2b,$14,$6a,$14,$6a,$14,$6a,$14,$6b,$14,$6b,$14,$6b,$15,$6a
db $04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$0b,$04,$1b,$05,$9a,$05,$fa
db $01,$0e,$01,$06,$01,$06,$01,$06,$01,$0e,$05,$8a,$05,$9a,$05,$fa
db $5e,$be,$5c,$bc,$40,$b0,$40,$b0,$40,$b0,$40,$b0,$50,$a8,$50,$a8
db $0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09,$0f,$09
db $15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a,$15,$6a
db $50,$a8,$50,$a8,$50,$a8,$50,$a8,$50,$a8,$50,$a8,$50,$ac,$50,$ac
db $15,$6a,$15,$6a,$15,$6a,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa
db $50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ac
db $55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$15,$ea,$15,$ea
db $55,$aa,$55,$aa,$41,$80,$08,$88,$1c,$1c,$3e,$36,$1f,$0f,$1b,$19
db $55,$aa,$55,$aa,$05,$02,$11,$12,$38,$38,$7c,$6c,$f8,$f0,$d8,$98
db $03,$03,$07,$06,$7e,$7e,$4c,$7c,$44,$4c,$64,$6c,$7c,$3c,$00,$00
db $c0,$c0,$e0,$60,$7e,$7e,$32,$3e,$22,$32,$26,$36,$3e,$3c,$00,$00
db $00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02,$00,$02
db $80,$7f,$00,$ff,$00,$ff,$03,$fc,$7f,$80,$fe,$01,$fc,$03,$fc,$02
db $00,$c0,$00,$c0,$80,$40,$80,$40,$00,$80,$00,$00,$00,$00,$00,$00
db $00,$01,$00,$1e,$04,$3b,$14,$6b,$30,$4e,$30,$4c,$20,$5e,$20,$57
db $00,$61,$00,$40,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0
db $00,$81,$00,$81,$00,$83,$00,$82,$00,$86,$00,$fe,$00,$02,$00,$02
db $50,$ac,$50,$ac,$50,$ac,$50,$ac,$50,$ad,$50,$ad,$51,$ae,$51,$ae
db $0f,$09,$0f,$09,$00,$3f,$0e,$f1,$7f,$80,$ff,$00,$ff,$00,$80,$7f
db $00,$00,$00,$00,$00,$00,$00,$80,$80,$40,$80,$40,$00,$c0,$00,$c0
db $3c,$c3,$3c,$c2,$7c,$82,$18,$e6,$00,$3c,$00,$00,$00,$00,$00,$00
db $00,$fc,$00,$3e,$00,$16,$00,$12,$00,$12,$00,$33,$00,$23,$00,$61
db $00,$e1,$00,$3f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$c3,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$03,$00,$02
db $00,$00,$00,$00,$00,$00,$00,$01,$01,$02,$01,$02,$00,$03,$00,$03
db $00,$00,$00,$00,$00,$fc,$70,$8f,$fe,$01,$ff,$00,$ff,$00,$01,$fe
db $00,$03,$00,$03,$01,$02,$01,$02,$00,$01,$00,$00,$00,$00,$00,$00
db $01,$fe,$00,$ff,$00,$ff,$c0,$3f,$fe,$01,$7f,$80,$3f,$c0,$3f,$c0
db $00,$40,$00,$40,$00,$40,$00,$40,$00,$40,$00,$40,$00,$40,$00,$40
db $00,$3f,$00,$7c,$00,$68,$00,$48,$00,$48,$00,$cc,$00,$c4,$00,$86
db $3c,$c3,$3c,$43,$3e,$41,$18,$67,$00,$3c,$00,$00,$00,$00,$00,$00
db $00,$80,$00,$78,$20,$dc,$28,$d6,$0c,$72,$0c,$32,$04,$7a,$04,$ea
db $00,$c3,$00,$80,$00,$80,$00,$80,$00,$80,$00,$80,$00,$c0,$00,$40
db $00,$87,$00,$fc,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$86,$00,$02,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03
db $00,$81,$00,$81,$00,$c1,$00,$41,$00,$61,$00,$7f,$00,$40,$00,$40
db $01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02,$01,$02
db $80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$40
db $60,$60,$40,$40,$40,$40,$c0,$c0,$80,$80,$f0,$f0,$00,$00,$00,$00
db $00,$00,$00,$00,$1f,$1f,$08,$08,$08,$08,$0c,$0c,$04,$04,$04,$04
db $00,$00,$00,$00,$f8,$f8,$10,$10,$10,$10,$30,$30,$20,$20,$20,$20
db $55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa,$55,$aa
BackgroundCopy: BackgroundCopy:
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $1a, $1a, $1c, $1d, $1e, $1f, $20
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $1a, $21, $22, $23, $24, $25, $26
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $27, $28, $29, $2a, $2b, $2c, $2d
db $01, $02, $03, $0a, $0b, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $2e, $2f, $30, $31, $32, $33, $1a
db $04, $05, $06, $0c, $0d, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $34, $35, $36, $37, $38, $39, $3a
db $04, $05, $06, $0e, $0f, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $3b, $3c, $3d, $3e, $3f, $40, $41
db $04, $05, $06, $10, $11, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $42, $43, $44, $45, $46, $47, $1a
db $07, $08, $09, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $48, $49, $4a, $4b, $4c, $4d, $1a
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $4e, $4f, $50, $51, $52, $53, $1a
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $1a, $54, $7b, $7b, $55, $53, $1a
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $1a, $1a, $56, $7b, $7b, $57, $53, $1a
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $6a, $6b, $58, $59, $5a, $63, $64, $65
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $6c, $6d, $77, $5b, $5c, $76, $5e, $5f
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $6f, $70, $71, $1a, $1a, $60, $66, $67
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $72, $73, $74, $79, $7a, $61, $68, $69
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $6e, $1a, $75, $1b, $78, $62, $1a, $5d
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00

View File

@ -11,15 +11,15 @@ CardBrowseSetup:
ld a, 1 ld a, 1
ld [vBlocked], a ld [vBlocked], a
ld hl, .asyncTask
call Async_Spawn_HL
; make sure working oam is clear ; make sure working oam is clear
ld hl, ZEROES ld hl, ZEROES
ld de, MY_OAM ld de, MY_OAM
ld bc, $100 ld bc, $100
call CopyRange call CopyRange
ld hl, .asyncTask
call Async_Spawn_HL
ret ret
.asyncTask: .asyncTask:
@ -91,6 +91,12 @@ CardBrowseUpdate:
ld hl, RefreshCardTask ld hl, RefreshCardTask
call Async_Spawn_HL call Async_Spawn_HL
; make sure working oam is clear
ld hl, ZEROES
ld de, MY_OAM
ld bc, $100
call CopyRange
ret ret

View File

@ -26,21 +26,21 @@ MainMenuSetup:
; Turn the LCD off ; Turn the LCD off
ld hl, rLCDC ld hl, rLCDC
bit 7, [hl] bit 7, [hl]
jp z, MainMenuSetup_ScreenOff jp z, .screenOff
MainMenuSetup_BusyWait: .busyWait
ld a, [rLY] ld a, [rLY]
cp a, 143 cp a, 143
jp c, MainMenuSetup_BusyWait ;jp c, .busyWait
ld [hl], 0
MainMenuSetup_ScreenOff: .screenOff:
ld a, 0 ld a, 0
ldh [rLCDC], a ldh [rLCDC], a
ld hl, SquaresTileset8 ld hl, SquaresTileset8
ld de, $8010 + $80*16 ld de, $8010 + $80*16
ld bc, (SquaresTilesetEnd - SquaresTileset8) ld bc, 16
call CopyRangeUnsafe ;println "the diff is ", SquaresTilesetEnd - SquaresTileset8
call CopyRange
def spacing equ $12 def spacing equ $12
@ -48,7 +48,7 @@ MainMenuSetup_ScreenOff:
def TileStartCardBackSprites24 equ 0 def TileStartCardBackSprites24 equ 0
ld de, $8000 + TileStartCardBackSprites24*$10; destination of copy ld de, $8000 + TileStartCardBackSprites24*$10; destination of copy
ld bc, CardBackSprites24End - CardBackSprites24 ; length to copy ld bc, CardBackSprites24End - CardBackSprites24 ; length to copy
call CopyRangeUnsafe call CopyRange
ld hl, CardBackSprites23 ld hl, CardBackSprites23
def TileStartCardBackSprites23 equ TileStartCardBackSprites24 + spacing def TileStartCardBackSprites23 equ TileStartCardBackSprites24 + spacing
@ -60,45 +60,45 @@ MainMenuSetup_ScreenOff:
def TileStartCardBackSprites22 equ TileStartCardBackSprites23 + spacing def TileStartCardBackSprites22 equ TileStartCardBackSprites23 + spacing
ld de, $8000 + TileStartCardBackSprites22*$10; destination of copy ld de, $8000 + TileStartCardBackSprites22*$10; destination of copy
ld bc, CardBackSprites22End - CardBackSprites22 ld bc, CardBackSprites22End - CardBackSprites22
call CopyRangeUnsafe call CopyRange
ld hl, CardBackSprites21 ld hl, CardBackSprites21
def TileStartCardBackSprites21 equ TileStartCardBackSprites22 + spacing def TileStartCardBackSprites21 equ TileStartCardBackSprites22 + spacing
ld de, $8000 + TileStartCardBackSprites21*$10; destination of copy ld de, $8000 + TileStartCardBackSprites21*$10; destination of copy
ld bc, CardBackSprites21End - CardBackSprites21 ld bc, CardBackSprites21End - CardBackSprites21
call CopyRangeUnsafe call CopyRange
ld hl, CardBackSprites20 ld hl, CardBackSprites20
def TileStartCardBackSprites20 equ TileStartCardBackSprites21 + spacing def TileStartCardBackSprites20 equ TileStartCardBackSprites21 + spacing
ld de, $8000 + TileStartCardBackSprites20*$10 ld de, $8000 + TileStartCardBackSprites20*$10
ld bc, CardBackSprites20End - CardBackSprites20 ld bc, CardBackSprites20End - CardBackSprites20
call CopyRangeUnsafe call CopyRange
ld hl, CardBackSprites19 ld hl, CardBackSprites19
def TileStartCardBackSprites19 equ TileStartCardBackSprites20 + spacing def TileStartCardBackSprites19 equ TileStartCardBackSprites20 + spacing
ld de, $8000 + TileStartCardBackSprites19*$10 ld de, $8000 + TileStartCardBackSprites19*$10
ld bc, CardBackSprites19End - CardBackSprites19 ld bc, CardBackSprites19End - CardBackSprites19
call CopyRangeUnsafe call CopyRange
ld hl, CardBackSprites18 ld hl, CardBackSprites18
def TileStartCardBackSprites18 equ TileStartCardBackSprites19 + spacing def TileStartCardBackSprites18 equ TileStartCardBackSprites19 + spacing
ld de, $8000 + TileStartCardBackSprites18*$10 ld de, $8000 + TileStartCardBackSprites18*$10
ld bc, CardBackSprites18End - CardBackSprites18 ld bc, CardBackSprites18End - CardBackSprites18
call CopyRangeUnsafe call CopyRange
ld hl, CardBackSprites17 ld hl, CardBackSprites17
def TileStartCardBackSprites17 equ TileStartCardBackSprites18 + spacing def TileStartCardBackSprites17 equ TileStartCardBackSprites18 + spacing
ld de, $8000 + TileStartCardBackSprites17*$10 ld de, $8000 + TileStartCardBackSprites17*$10
ld bc, CardBackSprites17End - CardBackSprites17 ld bc, CardBackSprites17End - CardBackSprites17
call CopyRangeUnsafe call CopyRange
def TileStartCardBackSprites16 equ TileStartCardBackSprites17 + spacing def TileStartCardBackSprites16 equ TileStartCardBackSprites17 + spacing
ld hl, SquaresTilemap ld hl, MainUITilemap
ld de, $9800 ld de, $9800
ld b, 18 ld b, 18
ld c, 20 ld c, 20
call CopyTilesToMapUnsafe call CopyTilesToMap
ld hl, StringRead ld hl, StringRead
ld de, $9800 + 32*11 + 4 ld de, $9800 + 32*11 + 4
@ -112,15 +112,16 @@ MainMenuSetup_ScreenOff:
; clear out the dma source ; clear out the dma source
ld hl, $c000 ld hl, MY_OAM
ld a, 0 ld a, 0
: :
ld [hl+], a ld [hl+], a
cp a, l cp a, l
jp nz, :- jp nz, :- ; this was clever. as long as a (0) doesn't equal l (low bit of address) we loop
; so this goes until l loops around to 0
ld de, SAFE_DMA_LOCATION ld de, SAFE_DMA_LOCATION
ld a, $c0 ld a, HIGH(MY_OAM)
call RunDMA call RunDMA
; set LCD and display registers ; set LCD and display registers
@ -262,7 +263,7 @@ MainMenuUpdate:
ld a, [vTime+1] ld a, [vTime+1]
cp a, $01 cp a, $01
jp c, MainMenuUpdate_Done ; if the timer is less than $0100, skip to end jp c, .allDone ; if the timer is less than $0100, skip to end
;otherwise reset the timer ;otherwise reset the timer
ld a, 0 ld a, 0
@ -310,7 +311,7 @@ MainMenuUpdate:
ld c, a ; x coordinate ld c, a ; x coordinate
ld a, [hl+] ld a, [hl+]
ld e, a ; width ld e, a ; width
ld hl, $c000 ld hl, MY_OAM
call DrawWholeCard call DrawWholeCard
ld hl, Coords ld hl, Coords
@ -327,7 +328,7 @@ MainMenuUpdate:
ld c, a ; x coordinate ld c, a ; x coordinate
ld a, [hl+] ld a, [hl+]
ld e, a ; width ld e, a ; width
ld hl, $c000 + 9*4 ld hl, MY_OAM + 9*4
call DrawWholeCard call DrawWholeCard
ld hl, Coords ld hl, Coords
@ -344,43 +345,18 @@ MainMenuUpdate:
ld c, a ; x coordinate ld c, a ; x coordinate
ld a, [hl+] ld a, [hl+]
ld e, a ; width ld e, a ; width
ld hl, $c000 + 18*4 ld hl, MY_OAM + 18*4
call DrawWholeCard call DrawWholeCard
MainMenuUpdate_Done: .allDone
ret ret
MainMenuDraw: MainMenuDraw:
ld hl, $9800 + 32*11 + 3 - 64 ld de, SAFE_DMA_LOCATION
ld a, [vMenuIndexPrevious] ld a, HIGH(MY_OAM)
inc a
ld b, 0
ld c, 32
.findLastCaret
add hl, bc
add hl, bc
dec a
jp nz, .findLastCaret
ld [hl], $0
ld hl, $9800 + 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
ld de, vMenuIndexPrevious+2
ld a, $c0
call RunDMA call RunDMA
di
ld hl, SquaresTiles ld hl, SquaresTiles
inc hl inc hl
ld b, 0 ld b, 0
@ -397,6 +373,35 @@ MainMenuDraw:
ld bc, (SquaresTileset8 - SquaresTileset7) / 8 ld bc, (SquaresTileset8 - SquaresTileset7) / 8
call CopyRangeUnsafeBy8s call CopyRangeUnsafeBy8s
ld b, 0
ld c, 32
; find the location of the last selected caret and make it blank
ld hl, $9800 + 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, $9800 + 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 ret
MainMenuTeardown: MainMenuTeardown:
@ -431,10 +436,10 @@ DrawWholeCard: ; hl memory location, b y, c x, e width, d wiggle
cp a, 17 cp a, 17
ld e, TileStartCardBackSprites17 ld e, TileStartCardBackSprites17
jp z, Draw3x3Card jp z, Draw3x3Card
; else fall through into 2x2card
ld e, TileStartCardBackSprites16 ld e, TileStartCardBackSprites16
jp Draw2x2Card jp Draw2x2Card
; else fall through into 2x2card
Draw2x2Card: Draw2x2Card:
; hl memory location, b y coord, c x coord, e tile start ; hl memory location, b y coord, c x coord, e tile start
@ -824,7 +829,7 @@ StringShuffle:
StringBrowse: StringBrowse:
db 11, "Browse Deck" db 11, "Browse Deck"
Coords: ; y, x, spread 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 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: CardBackSprites16:
@ -1096,7 +1101,7 @@ SquaresTileset8:
SquaresTilesetEnd: SquaresTilesetEnd:
SquaresTilemap: 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
@ -1116,4 +1121,4 @@ SquaresTilemap:
db $01, $01, $06, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $05, $07, $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 db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
SquaresTilemapEnd: MainUITilemapEnd:

View File

@ -4,45 +4,71 @@
SpriteTiles: SpriteTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $01,$01,$01,$01,$01,$01,$01,$01,$1f,$1f,$1f,$10,$1f,$10,$1f,$1c db $00,$00,$00,$00,$00,$00,$01,$01,$03,$02,$07,$04,$0f,$08,$1f,$10
db $f0,$f0,$fc,$5c,$fe,$06,$5f,$a3,$ff,$01,$ff,$00,$ff,$00,$ff,$00 db $07,$07,$1f,$18,$7f,$60,$ff,$80,$ff,$00,$ff,$03,$fc,$0c,$f0,$30
db $00,$00,$00,$00,$00,$00,$07,$07,$87,$85,$ff,$fd,$ff,$01,$ff,$01 db $1c,$1c,$1f,$03,$1f,$00,$1f,$00,$0f,$00,$0f,$08,$07,$06,$01,$01
db $07,$07,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$c0,$c0,$f0,$30,$f8,$08,$fc,$04,$fc,$00,$fc,$80
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$d2,$7e,$76,$1c,$1c db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$03,$02,$03,$02
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$69,$3f,$3b,$0e,$0e db $3f,$20,$7f,$40,$ff,$81,$fe,$82,$fc,$05,$f8,$08,$f8,$08,$f0,$10
db $00,$00,$00,$00,$00,$00,$0e,$0e,$8f,$8b,$ff,$fd,$ff,$01,$ff,$01 db $07,$04,$07,$04,$07,$04,$07,$04,$0f,$08,$0f,$08,$0f,$08,$0f,$08
db $ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$93,$fe,$96,$fc,$dc,$70,$70 db $00,$00,$00,$00,$00,$00,$00,$00,$60,$40,$60,$40,$60,$40,$60,$40
db $ff,$01,$ff,$01,$ff,$01,$ff,$01,$ff,$c9,$7f,$4b,$7e,$6e,$38,$38 db $0f,$08,$0f,$08,$0f,$08,$0f,$08,$0f,$08,$07,$04,$07,$04,$06,$04
db $00,$00,$03,$03,$07,$07,$0c,$0c,$18,$18,$18,$18,$30,$30,$30,$30 db $60,$c0,$60,$40,$60,$40,$60,$40,$60,$40,$e0,$80,$e0,$80,$e0,$80
db $00,$00,$c0,$c0,$e0,$e0,$30,$30,$18,$18,$18,$18,$0c,$0c,$0c,$0c db $06,$04,$02,$02,$02,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $30,$30,$30,$30,$18,$18,$18,$18,$0c,$0c,$07,$07,$03,$03,$00,$00 db $c0,$00,$c0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $0c,$0c,$0c,$0c,$18,$18,$18,$18,$30,$30,$e0,$e0,$c0,$c0,$00,$00 db $80,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$3f db $c0,$40,$80,$80,$00,$00,$00,$00,$00,$e0,$60,$98,$38,$c4,$3c,$40
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$1f,$00,$ff,$00,$ff db $7c,$40,$3c,$20,$1c,$10,$00,$00,$00,$00,$00,$60,$60,$80,$c0,$20
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$c0,$00,$f0,$00,$fc db $f0,$10,$e0,$20,$e0,$20,$e0,$20,$c0,$40,$c0,$40,$c0,$70,$c0,$40
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07 db $80,$00,$80,$00,$00,$80,$00,$80,$00,$00,$00,$c0,$c0,$30,$f0,$0c
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$78,$00,$ff,$00,$ff db $c0,$40,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$80,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$00,$f0 db $01,$01,$01,$01,$03,$02,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff db $1c,$20,$0c,$30,$0c,$10,$04,$18,$04,$78,$7c,$80,$7c,$00,$3c,$00
db $3e,$00,$3e,$00,$0f,$30,$03,$0c,$00,$03,$00,$00,$00,$00,$00,$00
db $03,$00,$03,$00,$03,$00,$03,$00,$02,$01,$02,$01,$03,$00,$03,$00
db $03,$00,$07,$00,$07,$00,$00,$07,$00,$0c,$00,$00,$00,$00,$00,$00
db $fc,$03,$e0,$1c,$00,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$00
db $3c,$40,$1c,$60,$1c,$20,$0c,$70,$7c,$80,$fc,$00,$7c,$00,$3c,$00
db $c0,$40,$80,$80,$00,$00,$00,$00,$00,$f8,$f0,$0c,$fc,$00,$7c,$80
db $3f,$20,$7f,$40,$ff,$81,$fe,$82,$fc,$05,$f8,$09,$f8,$09,$f0,$10
db $f0,$10,$e0,$20,$e0,$20,$e0,$20,$c0,$43,$c3,$4c,$c0,$70,$c0,$40
db $3e,$00,$3e,$00,$3f,$00,$07,$00,$03,$04,$00,$03,$00,$00,$00,$00
db $03,$00,$07,$00,$07,$00,$06,$01,$0c,$02,$00,$0c,$00,$00,$00,$00
db $fe,$01,$f8,$06,$c0,$38,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00
db $80,$00,$80,$00,$80,$00,$80,$00,$00,$80,$80,$60,$e0,$18,$f8,$06
db $03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00,$03,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$00,$03,$00
db $7c,$40,$3c,$20,$1c,$10,$00,$00,$00,$60,$60,$80,$e0,$00,$e0,$10
db $f0,$10,$e0,$20,$e0,$20,$e0,$21,$c1,$4e,$cf,$70,$f0,$40,$e0,$40
db $7c,$80,$7c,$80,$3c,$40,$7c,$80,$fc,$00,$fc,$00,$7c,$00,$3c,$00
db $3f,$20,$7f,$40,$ff,$81,$fe,$83,$fd,$06,$f9,$0a,$f8,$09,$f0,$11
db $c0,$40,$80,$80,$00,$00,$00,$f0,$f0,$0c,$fc,$00,$fc,$00,$fc,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$00,$03,$00,$03,$00
db $3e,$00,$3e,$00,$3f,$00,$07,$00,$07,$00,$03,$04,$00,$00,$00,$00
db $03,$00,$07,$00,$07,$00,$07,$00,$0e,$01,$0c,$02,$00,$00,$00,$00
db $ff,$00,$fe,$01,$f8,$06,$c0,$38,$00,$c0,$00,$00,$00,$00,$00,$00
db $e0,$40,$60,$c0,$60,$40,$60,$40,$60,$40,$e0,$80,$e0,$80,$e0,$80
db $80,$00,$80,$00,$80,$00,$80,$00,$80,$60,$e0,$18,$f8,$06,$fe,$01
db $7c,$40,$3c,$20,$1c,$10,$00,$60,$60,$80,$e0,$00,$e0,$00,$f0,$08
db $c0,$60,$c0,$40,$c0,$40,$c0,$40,$c0,$40,$80,$00,$00,$00,$00,$00
db $00,$00,$00,$00,$00,$00,$00,$00,$60,$40,$60,$40,$60,$40,$60,$c0
Sprites: Sprites:
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $00, $01, $02, $0d, $03, $04, $00
db $00, $00, $00, $00, $0a, $0b, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $05, $06, $0e, $00, $19, $0f, $00
db $00, $00, $00, $00, $0c, $0d, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $07, $10, $14, $00, $16, $11, $08
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $09, $12, $15, $00, $17, $18, $0a
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $13, $0c
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $00, $01, $02, $0d, $03, $04, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $05, $1c, $1b, $00, $23, $24, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $07, $1d, $1a, $00, $22, $21, $08
db $00, $0e, $0f, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $09, $12, $1e, $00, $1f, $20, $0a
db $00, $00, $00, $00, $00, $00, $11, $12, $13, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $13, $0c
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $00, $01, $02, $0d, $03, $04, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $05, $27, $28, $00, $29, $2f, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $07, $25, $26, $00, $22, $2e, $31
db $00, $00, $00, $00, $00, $00, $00, $14, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $09, $30, $2a, $00, $2b, $2c, $2d
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $13, $0c
db $00, $00, $00, $01, $02, $03, $01, $02, $07, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $04, $08, $06, $04, $05, $09, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00

30
Sprites.asm Normal file
View File

@ -0,0 +1,30 @@
; original export script by gabriel reis, modified by shoofle
Sprites:
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
SpritesLayer:
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $01, $02, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $03, $04, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00

61
SpritesLayer.asm Normal file
View File

@ -0,0 +1,61 @@
; original export script by gabriel reis, modified by shoofle
SpritesLayer:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$7e,$00,$fc,$00,$78,$00,$30,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$0f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $e0,$00,$f0,$00,$f8,$00,$f0,$00,$60,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$3f,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$bf,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$3e,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $e0,$00,$f0,$00,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$7f,$00,$3f,$00,$1e,$00,$0c,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$6e,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$07,$00,$07,$00,$03,$00
db $e0,$00,$f0,$00,$f0,$00,$f0,$00,$c0,$00,$c0,$00,$80,$00,$00,$00
db $1f,$00,$3f,$00,$7f,$00,$7f,$00,$7e,$00,$7c,$00,$20,$00,$00,$00
db $ff,$00,$ff,$00,$fc,$00,$78,$00,$20,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$3f,$00,$07,$00,$02,$00,$00,$00,$00,$00
db $e0,$00,$f0,$00,$f8,$00,$f8,$00,$f8,$00,$f8,$00,$78,$00,$30,$00
db $ff,$00,$ff,$00,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$1f,$00,$0f,$00,$0f,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00
db $07,$00,$03,$00,$01,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$03,$00
db $ff,$00,$ff,$00,$fe,$00,$f8,$00,$f0,$00,$e0,$00,$e0,$00,$60,$00
db $ff,$00,$ff,$00,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $3f,$00,$7f,$00,$7f,$00,$3f,$00,$1f,$00,$0c,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00
db $3f,$00,$3f,$00,$1f,$00,$1f,$00,$1f,$00,$0f,$00,$03,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$bf,$00,$1f,$00
db $ff,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00
db $ff,$00,$0f,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$fe,$00,$fc,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $3f,$00,$1f,$00,$0f,$00,$07,$00,$07,$00,$07,$00,$03,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fc,$00,$f8,$00,$e0,$00
db $ff,$00,$fe,$00,$f8,$00,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $df,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$1f,$00,$0f,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$0f,$00,$07,$00,$03,$00
db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$01,$00,$00,$00
db $ff,$00,$fc,$00,$f8,$00,$f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00
db $ff,$00,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $86,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
db $1f,$00,$3f,$00,$3f,$00,$1f,$00,$03,$00,$03,$00,$01,$00,$00,$00
db $03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Sprites:
db $24, $25, $13, $13, $13, $13
db $00, $2b, $26, $27, $28, $29
db $11, $12, $13, $13, $13, $13
db $00, $14, $15, $16, $17, $18
db $19, $1a, $13, $13, $13, $13
db $00, $1b, $1c, $1d, $1e, $1f
db $2a, $13, $13, $13, $13, $13
db $00, $20, $1c, $21, $22, $23

View File

@ -1,4 +1,5 @@
<!doctype html> <!doctype html>
<!-- prototyped this in ~24 hours to help so i don't have to manually enter lists of coordinates for gameboy sprite animations -->
<html> <html>
<head> <head>
<title>curve editor for gameboy animation</title> <title>curve editor for gameboy animation</title>
@ -18,12 +19,13 @@
<body> <body>
<svg <svg
viewBox="0 0 176 176" viewBox="0 0 176 176"
style="border: 1px solid black; display: block; max-height: 700px"> style="border: 1px solid black; display: block; max-height: 700px"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs> <defs>
<g id="point"> <g id="point">
<circle cx="0.5" cy="0.5" r="0.5" fill="black" fill-opacity="100%"/> <rect id="sprite" x="-0.5" y="-0.5" width="8" height="8" stroke="none" fill="gray" fill-opacity="25%"/>
<circle cx="0.5" cy="0.5" r="2" fill="black" fill-opacity="25%"/> <circle cx="0.5" cy="0.5" r="2" fill="black" fill-opacity="25%"/>
<rect id="sprite" x="-0.5" y="-0.5" width="8" height="8" stroke="none" fill="gray" fill-opacity="50%"/> <circle cx="0.5" cy="0.5" r="0.5" fill="black" fill-opacity="100%"/>
</g> </g>
<pattern id="smallGrid" width="1" height="1" patternUnits="userSpaceOnUse"> <pattern id="smallGrid" width="1" height="1" patternUnits="userSpaceOnUse">
<path d="M 1 0 L 0 0 0 1" fill="none" stroke="darkseagreen" stroke-width="0.25"/> <path d="M 1 0 L 0 0 0 1" fill="none" stroke="darkseagreen" stroke-width="0.25"/>
@ -34,28 +36,36 @@
</pattern> </pattern>
</defs> </defs>
<image
<g id="sequence"> id="background-container"
</g> width="160"
<g id="lines"> height="144"
</g> x="8" y="16"
opacity="50%"
xlink:href="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" />
<rect width="100%" height="100%" fill="url(#grid)" /> <rect width="100%" height="100%" fill="url(#grid)" />
<rect x="8" y="16" width="160" height="144" style="fill: none; stroke: darkseagreen; stroke-width: 0.5"/> <rect x="8" y="16" width="160" height="144" style="fill: none; stroke: darkseagreen; stroke-width: 0.5"/>
<g id="lines">
</g>
<g id="sequence">
</g>
</svg> </svg>
<div id="controls"> <div id="controls">
<label for="background-selector">file for background</label>
<input type="file" id="background-selector" name="background-selector"/>
<fieldset> <fieldset>
<legend>control mode</legend> <legend>control mode</legend>
<div> <div>
<input type="radio" name="mode" id="add" value="add" checked/> <input type="radio" name="mode" id="add" value="add" checked/>
<label for="add">add points</label> <label for="add"><strong>a</strong>dd points</label>
</div> </div>
<div> <div>
<input type="radio" name="mode" id="delete" value="delete"/> <input type="radio" name="mode" id="delete" value="delete"/>
<label for="delete">delete points</label> <label for="delete"><strong>d</strong>elete points</label>
</div> </div>
<div> <div>
<input type="radio" name="mode" id="move" value="move"/> <input type="radio" name="mode" id="move" value="move"/>
<label for="move">drag points around</label> <label for="move"><strong>g</strong>rab and move points</label>
</div> </div>
</fieldset> </fieldset>
<div> <div>
@ -85,9 +95,8 @@
var moving_point_index = -1; var moving_point_index = -1;
var the_list = []; var the_list = [];
function length(dx, dy) { function length(dx, dy) {return Math.sqrt(dx*dx + dy*dy);}
return Math.sqrt(dx*dx + dy*dy);
}
const clicksvg = (event) => { const clicksvg = (event) => {
const mode = document.querySelector('input[name=mode]:checked').value; // either 'add', 'delete', or 'move' const mode = document.querySelector('input[name=mode]:checked').value; // either 'add', 'delete', or 'move'
const {x, y} = dom_to_svg_coords(svg, event.clientX, event.clientY); const {x, y} = dom_to_svg_coords(svg, event.clientX, event.clientY);
@ -253,6 +262,36 @@
text_output = document.querySelector('textarea#output'); text_output = document.querySelector('textarea#output');
text_output.onchange = changetextarea; text_output.onchange = changetextarea;
sprite_dims_change(); sprite_dims_change();
let filePicker = document.querySelector('input#background-selector');
filePicker.onchange = (event) => {
var file = event.target.files[0];
// setting up the reader
var reader = new FileReader();
reader.readAsDataURL(file,'UTF-8');
// here we tell the reader what to do when it's done reading...
reader.onload = readerEvent => {
var content = readerEvent.target.result; // this is the content!
document
.querySelector('image#background-container')
.setAttributeNS("http://www.w3.org/1999/xlink", "href", content);
}
}
if (filePicker.files[0]) {
filePicker.onchange( {target: filePicker} );
}
document.onkeyup = (event) => {
const add_radio = document.querySelector('input[name=mode]#add'); // either 'add', 'delete', or 'move'
const delete_radio = document.querySelector('input[name=mode]#delete');
const move_radio = document.querySelector('input[name=mode]#move');
if (event.key == 'a') { add_radio.checked = true; }
if (event.key == 'd') { delete_radio.checked = true; }
if (event.key == 'g') { move_radio.checked = true; }
}
} }
</script> </script>
</html> </html>

View File

@ -6,14 +6,15 @@
def MY_OAM equ $c000
; $c100 - c120 call handles, scene stack, interrupt, card functions
; 0xc100 CALL ; 0xc100 CALL
; 0xc101 LOW - SCENE_SETUP points to this ; 0xc101 LOW - SCENE_SETUP points to this
; 0xc102 HIGH ; 0xc102 HIGH
; 0xc103 RET ; 0xc103 RET
; 0xc104 CALL ... ; 0xc104 CALL ...
def MY_OAM equ $c000
; $c100 - c120 call handles, scene stack, interrupt, card functions
DEF SCENE_SETUP EQU $c101 DEF SCENE_SETUP EQU $c101
DEF SCENE_UPDATE EQU SCENE_SETUP + 4 ; call then ret is 3+1 bytes DEF SCENE_UPDATE EQU SCENE_SETUP + 4 ; call then ret is 3+1 bytes
DEF SCENE_DRAW EQU SCENE_UPDATE + 4 DEF SCENE_DRAW EQU SCENE_UPDATE + 4
@ -47,7 +48,7 @@ def rLFSR equ rDELTAT + 1 ; 16 bit
def SAFE_DMA_LOCATION equ $ffc1 def SAFE_DMA_LOCATION equ $ffc0
def VARIABLE_TILES_START equ 26 def VARIABLE_TILES_START equ 26
@ -73,6 +74,8 @@ EntryPoint:
ldh [rNR52], a ; shut down audio ldh [rNR52], a ; shut down audio
ldh [rDIV], a ; reset timer just in case?? ldh [rDIV], a ; reset timer just in case??
ldh [rLCDC], a ; shut down screen ldh [rLCDC], a ; shut down screen
ldh [rIE], a
ldh [rIF], a
ld a, 0 ld a, 0
ld hl, ZEROES ld hl, ZEROES
@ -88,7 +91,6 @@ EntryPoint:
ld a, 1 ld a, 1
ld hl, ONES ld hl, ONES
ld bc, $200 ld bc, $200
.buildOnes .buildOnes
ld a, 1 ld a, 1
ld [hl+], a ld [hl+], a
@ -99,13 +101,13 @@ EntryPoint:
ld hl, UITiles ld hl, UITiles
ld de, $8000 + $100*16 ld de, $8000 + $100*16
ld bc, (UITilesEnd - UITiles) ld bc, UITiles.end - UITiles
call CopyRangeUnsafe call CopyRange
ld hl, LetterTiles ; map the small font into vram at ascii locations ld hl, LetterTiles ; map the small font into vram at ascii locations
ld de, $8000 + (127 + $11)*16 ld de, $8000 + (127 + $11)*16
ld bc, LetterTilesEnd - LetterTiles ld bc, LetterTiles.end - LetterTiles
call CopyRangeUnsafe call CopyRange
; initialize global variables ; initialize global variables
ld a, 0 ld a, 0
@ -132,7 +134,7 @@ EntryPoint:
ld a, [hl] ; get the value of a call instruction so we can shove it into our handles ld a, [hl] ; get the value of a call instruction so we can shove it into our handles
ld hl, SCENE_SETUP - 1 ld hl, SCENE_SETUP - 1
ld [SCENE_SETUP - 1], a ld [hl], a
ld hl, SCENE_UPDATE - 1 ld hl, SCENE_UPDATE - 1
ld [hl], a ld [hl], a
ld hl, SCENE_DRAW - 1 ld hl, SCENE_DRAW - 1
@ -196,7 +198,7 @@ EntryPoint:
inc hl inc hl
inc hl inc hl
ld a, [hl] ; get the value of a call instruction so we can shove it into our handles ld a, [hl] ; get the value of a ret instruction so we can shove it into our handles
ld hl, SCENE_SETUP + 2 ld hl, SCENE_SETUP + 2
ld [hl], a ld [hl], a
ld hl, SCENE_UPDATE + 2 ld hl, SCENE_UPDATE + 2
@ -265,12 +267,15 @@ Loop:
ld a, b ; select buttons which were pressed this frame ld a, b ; select buttons which were pressed this frame
ld [rMYBTN], a ; save that as btn state ld [rMYBTN], a ; save that as btn state
println "scene update is ", SCENE_UPDATE - 1
call SCENE_UPDATE - 1 ; hope this takes not too many scanlines! call SCENE_UPDATE - 1 ; hope this takes not too many scanlines!
ld b, 144 ld b, 144
call AwaitLine call AwaitLine
println "scene draw is ", SCENE_DRAW - 1
call SCENE_DRAW - 1 ; hope this takes fewer than 9 scanlines! call SCENE_DRAW - 1 ; hope this takes fewer than 9 scanlines!
println "scenee draw call is at ", @
; either way it's going to eat into the update timing ; either way it's going to eat into the update timing
; at this point we want to make sure that scanline 153 has passed ; at this point we want to make sure that scanline 153 has passed
; we should check if we're past there and skip this await if necessary ; we should check if we're past there and skip this await if necessary
@ -280,7 +285,7 @@ Loop:
jp Loop jp Loop
ChangeScene: ; hl should be a pointer to, in sequence, setup update draw teardown ChangeScene: ; hl should be a pointer to, in sequence, setup update draw teardown
call SCENE_TEARDOWN - 1 ;call SCENE_TEARDOWN - 1
ld a, [hl+] ld a, [hl+]
ld [SCENE_SETUP], a ld [SCENE_SETUP], a
@ -309,6 +314,17 @@ AwaitLine: ; put the line you want to reach in b
jp nz, AwaitLine jp nz, AwaitLine
ret ret
ArrayClampLoopingB:
cp a, b
jp nz, :+
ld a, 0
:
cp a, $FF
jp nz, :+
ld a, b
dec a
:
ret
ArrayClampLooping: ; loops a to be in the array, assuming hl points to the length ArrayClampLooping: ; loops a to be in the array, assuming hl points to the length
cp a, [hl] ; if a == length... cp a, [hl] ; if a == length...
jp nz, :+ jp nz, :+
@ -350,32 +366,39 @@ PrintBChars: ;write ascii characters. will not respect newlines or anything like
;thanks to https://gbdev.io/pandocs/OAM_DMA_Transfer.html for this routine ;thanks to https://gbdev.io/pandocs/OAM_DMA_Transfer.html for this routine
; a should be the high byte of where we're DMAing from (ld a, $c0 in my case probably) ; a should be the high byte of where we're DMAing from (ld a, $c0 in my case probably)
; de should have the address in hram for where to paste to ; de should have the address in hram for where to paste to (SAFE_DMA_LOCATION probably)
RunDMA: RunDMA:
di di
push de push de
push af push af
ld hl, run_dma_tail ld hl, run_dma_tail
ld bc, run_dma_tail.run_dma_tail_end - run_dma_tail ld bc, run_dma_tail.run_dma_tail_end - run_dma_tail
call CopyRangeUnsafe call CopyRange
pop af pop af
run_dma: ; This part must be in ROM. run_dma: ; This part must be in ROM.
ld bc, $2846 ; B: wait time; C: LOW($FF46) ld bc, $2846 ; B: wait time; C: LOW($FF46)
ret ; we pushed de before, so this should "return" to execute that (HRAM) address ret ; we pushed de before, so this should "return" to execute that (HRAM) address
run_dma_tail: ; This part must be in HRAM. run_dma_tail: ; This part must live in HRAM.
ldh [c], a ldh [c], a
.wait .wait
dec b dec b
jr nz, .wait jr nz, .wait
ei ei
ret z ; Conditional `ret` is 1 M-cycle slower, which avoids ret z ; Conditional `ret` is 1 M-cycle slower, which avoids reading from the
; reading from the stack on the last M-cycle of DMA. ; stack on the last M-cycle of DMA.
.run_dma_tail_end .run_dma_tail_end
nop
nop
nop
halt
nop
nop
Instructions: Instructions:
call Instructions+3 call .rett
.rett:
ret ret
EndOfInstructions:
@ -408,7 +431,7 @@ UITiles:
db $00,$ff,$7e,$ff,$56,$c3,$6a,$c3,$56,$c3,$6a,$c3,$56,$c3,$6a,$c3 db $00,$ff,$7e,$ff,$56,$c3,$6a,$c3,$56,$c3,$6a,$c3,$56,$c3,$6a,$c3
db $99,$5a,$99,$5a,$99,$5a,$99,$5a,$99,$5a,$81,$42,$81,$7e,$ff,$00 db $99,$5a,$99,$5a,$99,$5a,$99,$5a,$99,$5a,$81,$42,$81,$7e,$ff,$00
db $ff,$00,$81,$7e,$81,$42,$99,$5a,$99,$5a,$99,$5a,$99,$5a,$99,$5a db $ff,$00,$81,$7e,$81,$42,$99,$5a,$99,$5a,$99,$5a,$99,$5a,$99,$5a
UITilesEnd: .end
LetterTiles: LetterTiles:
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
@ -507,7 +530,7 @@ LetterTiles:
db $3c,$3c,$06,$06,$0c,$0c,$06,$06,$06,$06,$0c,$0c,$06,$06,$3c,$3c db $3c,$3c,$06,$06,$0c,$0c,$06,$06,$06,$06,$0c,$0c,$06,$06,$3c,$3c
db $00,$00,$00,$00,$31,$31,$7b,$7b,$de,$de,$8c,$8c,$00,$00,$00,$00 db $00,$00,$00,$00,$31,$31,$7b,$7b,$de,$de,$8c,$8c,$00,$00,$00,$00
db $c0,$c0,$a0,$a0,$b8,$b8,$b0,$b0,$da,$da,$12,$12,$1a,$1a,$03,$03 db $c0,$c0,$a0,$a0,$b8,$b8,$b0,$b0,$da,$da,$12,$12,$1a,$1a,$03,$03
LetterTilesEnd: .end
INCLUDE "Async.inc" INCLUDE "Async.inc"
INCLUDE "Random.inc" INCLUDE "Random.inc"

Binary file not shown.