From 7b354ea6514adf3ba59e734bcf92b57cbd63b8f3 Mon Sep 17 00:00:00 2001 From: shoofle Date: Thu, 27 Mar 2025 09:45:01 -0400 Subject: [PATCH] every animation except the four cards i want to fully rework. the world was so hard --- .gitignore | 1 + 02TheHighPriestess.inc | 2 +- 07TheChariot.inc | 2 +- 08Strength.inc | 158 ++++++++-- 08strength.aseprite | Bin 6426 -> 3359 bytes 17TheStar.inc | 74 ++++- 18TheMoon.inc | 161 ++++++++++- 18themoon.aseprite | Bin 6020 -> 2677 bytes 19TheSun.inc | 376 ++++++++++++++++++------ 19thesun.aseprite | Bin 6356 -> 5273 bytes 20Judgement.inc | 415 ++++++++++++++++++++++++--- 20judgement.aseprite | Bin 6399 -> 4338 bytes 21TheWorld.inc | 635 +++++++++++++++++++++++++++++++++++++---- 21theworld.aseprite | Bin 5396 -> 3624 bytes CardHelpers.inc | 247 +++++++++++++++- CopyTilesSafe.inc | 98 +------ KeyArtTiles.asm | 130 +++++---- ScreenCardBrowse.inc | 8 +- SpriteTiles.asm | 87 ++++-- misc.py | 14 + source.zip | Bin 373809 -> 417441 bytes 21 files changed, 2003 insertions(+), 405 deletions(-) diff --git a/.gitignore b/.gitignore index e43b0f9..6a4dae1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .DS_Store +__pycache__ diff --git a/02TheHighPriestess.inc b/02TheHighPriestess.inc index ebce483..efe6288 100644 --- a/02TheHighPriestess.inc +++ b/02TheHighPriestess.inc @@ -27,7 +27,7 @@ TheHighPriestess: 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 + cp a, $03 ; $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 diff --git a/07TheChariot.inc b/07TheChariot.inc index 5fd2fc8..760135f 100644 --- a/07TheChariot.inc +++ b/07TheChariot.inc @@ -124,7 +124,7 @@ TheChariot: ld c, (1+7)*8 -2 ld de, MY_OAM + 4*(40-2) ld a, $21 - call BuildMetaSpriteHFlip + call BuildMetaSpritePackedHflip ret diff --git a/08Strength.inc b/08Strength.inc index 037ae13..2e92478 100644 --- a/08Strength.inc +++ b/08Strength.inc @@ -14,10 +14,139 @@ Strength: dw .fUpdate dw .fDraw -.fInit: ret -.fUpdate: ret +.fInit: + ld hl, CVS + ld a, 0 + ld [hl+], a ; CVS timer + ld [hl+], a ; + ld [hl+], a ; CVS + 2 frame index for clouds goin back and forth + ld [hl+], a ; CVS + 3 frame index for clouds goin back and forth + ld [hl+], a ; CVS + 4 frame index for clouds goin back and forth + ld [hl+], a ; CVS + 5 frame index for clouds goin back and forth + + ld a, %00_00_00_00 + ld [rOBP0], a + ret +.fUpdate: + ld hl, CVS + call IncrementTimer + + ld a, [CVS+1] ; checking the high byte of the timer + cp a, $28 ; $10 = 1 second, $02 = 1/8 of a second + ret c + + ; if the timer is greater or equal to $0600, reset it + ld a, 0 + ld [CVS], a + ld [CVS+1], a + + ld hl, .cloud1Anim + ld a, [CVS+2] + inc a + call ArrayClampLooping + ld [CVS+2], a + ld b, 0 + ld c, a + inc hl + add hl, bc + add hl, bc + ld b, [hl] + inc hl + ld c, [hl] + ld hl, .cloud1 + ld de, MY_OAM + ld a, $13 + call BuildMetaSprite + + ld hl, .cloud2Anim + ld a, [CVS+3] + inc a + call ArrayClampLooping + ld [CVS+3], a + ld b, 0 + ld c, a + inc hl + add hl, bc + add hl, bc + ld b, [hl] + inc hl + ld a, [hl] + add a, 5 + ld c, a + ld hl, .cloud2 + ld de, MY_OAM+3*4 + ld a, $13 + call BuildMetaSprite + + ld hl, .cloud3Anim + ld a, [CVS+4] + inc a + call ArrayClampLooping + ld [CVS+4], a + ld b, 0 + ld c, a + inc hl + add hl, bc + add hl, bc + ld b, [hl] + inc hl + ld c, [hl] + ld hl, .cloud3 + ld de, MY_OAM+6*4 + ld a, $13 + call BuildMetaSprite + + + ld hl, .cloud4Anim + ld a, [CVS+5] + inc a + call ArrayClampLooping + ld [CVS+5], a + ld b, 0 + ld c, a + inc hl + add hl, bc + add hl, bc + ld b, [hl] + inc hl + ld c, [hl] + ld hl, .cloud4 + ld de, MY_OAM+9*4 + ld a, $13 + call BuildMetaSprite + + + ret .fDraw: ret + +.cloud1 + db $09, $05, $06 +.cloud1Anim + db 8, 24, 16, 24, 17, 24, 18, 24, 19, 24, 19, 24, 18, 24, 17, 24, 16, + +.cloud2 + db $01, $03, $02 +.cloud2Anim + db 6, 28, 48, 28, 49, 28, 50, 28, 50, 28, 49, 28, 48, +.cloud3 + db $04, $07, $00 +.cloud3Anim + db 8, 48, 64, 48, 64, 48, 65, 48, 65, 48, 66, 48, 66, 48, 65, 48, 65, +.cloud4 + db $08, $00, $00 +.cloud4Anim + db 6, 69, 59, 69, 59, 69, 59, 69, 60, 69, 60, 69, 60, .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,$7f,$7f + db $00,$00,$00,$00,$00,$00,$00,$00,$f0,$f0,$f8,$f8,$fe,$fe,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$3f,$3f,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$3f,$3f,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$e0,$e0,$f8,$f8,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$70,$70,$f8,$f8 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3c,$3c + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$30,$30,$ff,$ff .SpriteTilesEnd: ; original export script by gabriel reis, modified by shoofle @@ -84,11 +213,8 @@ Strength: db $7f,$c0,$7f,$c0,$ff,$c0,$bf,$c0,$bf,$c0,$bf,$c0,$bf,$c0,$9f,$e0 db $ff,$e0,$3f,$30,$1f,$18,$0f,$0c,$0f,$0e,$07,$07,$01,$03,$00,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff,$c0 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$f8,$00,$00,$00,$00,$00 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$3f,$00,$1f,$00,$07,$00,$01,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$fc,$93,$ff,$41,$ff db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$3f,$c0,$ff,$e0 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$f8,$00 db $00,$00,$00,$0c,$00,$0b,$0d,$0f,$07,$07,$00,$00,$00,$00,$00,$00 db $23,$63,$67,$e5,$5f,$f9,$bf,$fb,$ff,$fb,$0f,$11,$07,$08,$07,$08 db $03,$0c,$07,$18,$07,$38,$07,$38,$07,$78,$3b,$c4,$f9,$06,$fc,$03 @@ -117,20 +243,20 @@ Strength: .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 - db $5b, $57, $58, $47, $47, $47, $47, $47 - db $47, $47, $48, $59, $5a, $5b, $57, $58 + db $47, $47, $47, $47, $47, $47, $47, $47 + db $47, $47, $48, $57, $58, $47, $47, $47 db $47, $47, $49, $43, $4a, $47, $47, $47 db $47, $4b, $4c, $40, $4d, $47, $47, $47 db $4e, $4f, $41, $44, $50, $47, $47, $47 db $51, $1b, $42, $38, $45, $52, $47, $47 db $53, $1c, $1d, $37, $39, $54, $47, $47 - db $5c, $5d, $3c, $3b, $3a, $55, $56, $47 - db $64, $3d, $3e, $36, $62, $63, $61, $6a - db $65, $2d, $2e, $2f, $2c, $3f, $46, $60 - db $67, $30, $31, $5e, $32, $1e, $1a, $5f - db $68, $33, $34, $6c, $35, $1f, $20, $1a - db $69, $1a, $1a, $6b, $21, $22, $23, $24 - db $66, $25, $26, $27, $28, $29, $2a, $2b - db $6a, $6a, $6d, $6e, $71, $73, $6a, $6a - db $6a, $6a, $6f, $70, $72, $74, $6a, $6a + db $59, $5a, $3c, $3b, $3a, $55, $56, $47 + db $61, $3d, $3e, $36, $5f, $60, $5e, $67 + db $62, $2d, $2e, $2f, $2c, $3f, $46, $5d + db $64, $30, $31, $5b, $32, $1e, $1a, $5c + db $65, $33, $34, $69, $35, $1f, $20, $1a + db $66, $1a, $1a, $68, $21, $22, $23, $24 + db $63, $25, $26, $27, $28, $29, $2a, $2b + db $67, $67, $6a, $6b, $6e, $70, $67, $67 + db $67, $67, $6c, $6d, $6f, $71, $67, $67 .BackgroundCopyEnd: diff --git a/08strength.aseprite b/08strength.aseprite index b0fdb2065e1dafbd6449a134249a6532a6f09a30..4582b98fc52b8d9cc61c6eae81378b04821c7439 100644 GIT binary patch delta 1468 zcmZWpdo)ZRLV32L!{lNN8$!&GXO`EE%wh{kc`I($E6Ti| zO)N=_(jD>$c|>7e*F!V!@;yEl{-D`0nYN$~9a`n_b}2&!Z4;=RG7Ov1F2s?< zC&eh=s6$sd?fk7c#@Z${W%*@|dO05%4ex2VZ01k;2zPbUvAsT2qPc?7Tm#j>Hsye8 zxNtGSc*S6-zk_e8ZV%DP26(hX9{ll2v^J#DCw&d#oxH+8N+ zSY?XP_GBn+5)|&|{)SggX{_82`vN_(Gfcx=d}Kz1Peuol)ot%;eY(o*0nt&BQ~CvK zHbV=q9R?HL7!*>-^5!Yo(@go6^&??z?`V(AX?E;BnFzCr<~hQKnpQ$5wIpmY$=Mve z7o8n9z}`HA;}*gGlDe{7eB}-3;%X$Z(%QV+OTE{QTIqB=$f$2z+Q}F9Fm8Y9oWU0J zeb!`pnGCtzCHf3I$640o!l0m0(h75t^P}GT>b~n+b$bzwwQtv|ACX=^K_}m;t@o$wtvZo^g69BM@EMU#bA9pXI7- zC=thZfNJb)w%FNuMEkRja|(_+-}mqsT(8Idrx6_tGtN`nnp}k!5SvRosl%uwmdUMS zXQjLYl!9$}%02Pjnn`}O{}^Gg1692pR*2t7@?`P%QjzX!H&xV}P%Kb86<~NR zT&o13xoHzWwmC4r=!Jcyg^oRb2P+NIQrEJX&N{lTKXe}*W#v>Y2X3DWX~m7Edy&&7 zM$j=GY%{~Gz9gk5!RMQ_ix4bt>lnS*x(SRutWXzhU<1A*{DCJ9j%!u4hZBbYN$W8;{=+&SAdXJQn zj}pI(AQBAx=<`!}d?N&0AVipuLVmmsWxoCzAq@PSCHP08>MtQ$d_)AmSRpOk@!o`x zV1T|WZ4LTHw>XF*_p$>_P2hl+kh%7YPrbLDZ}YM@O7q*77E|cRb4TrQN~7M6#C4G0!<=Q#|};E z3PMM*pf!}BKCvs(@f%dv?K!p1!z>q}B`_FDdM%M!V&9sQe*=H-fGfNt`P1B&+}^SN zVxNMH=lRW#ABr2y7v|^~nK)}i%%s}1u$F_C3=z?*^f$u|ZogAyuDkHpg79ym4(tPX z{73pzAb>C(2S*(9#Nlugf*uY?FHd8@9O)(Gp{k-SgY@z?h8%_tfdQ#GKr8jX3ShdW H%%A@PsmPR} delta 3073 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 Lg}SIZwYL8NNK31s diff --git a/19TheSun.inc b/19TheSun.inc index bf83e3d..316cc11 100644 --- a/19TheSun.inc +++ b/19TheSun.inc @@ -14,133 +14,321 @@ TheSun: dw .fUpdate dw .fDraw -.fInit: ret -.fUpdate: ret +.fInit: + ld hl, CVS + ld a, 0 + ld [hl+], a ; CVS timer for shimmer + ld [hl+], a + ld [hl+], a ; CVS+2 frame of shimmer + + ld a, %00_10_01_00 + ld [rOBP0], a + ret +.fUpdate: + ld hl, CVS + call IncrementTimer + + ld a, [CVS+1] ; checking the high byte of the timer + cp a, $05 ; $10 = 1 second, $02 = 1/8 of a second + ret c + + ld a, 0 + ld [CVS], a + ld [CVS+1], a + + ld b, 5 + ld a, [CVS+2] + inc a + call ArrayClampLoopingB + ld [CVS+2], a + + cp a, 0 + jp nz, :+ + ld hl, .frame1 +: cp a, 1 + jp nz, :+ + ld hl, .frame2 +: cp a, 2 + jp nz, :+ + ld hl, .frame3 +: cp a, 3 + jp nz, :+ + ld hl, .frame4 +: cp a, 4 + jp nz, :+ + ld hl, .frame5 +: + ld de, MY_OAM + ld b, (2+1+6)*8 + ld c, (1+1+0)*8 + ld a, $48 + call BuildMetaSprite + ret + .fDraw: ret + +.frame1 ; $48 + db $66, $66, $02, $21, $53, $12, $22, $66 + db $03, $00, $3b, $3c, $3d, $3e, $18, $14 + db $00, $1a, $1b, $1e, $1f, $20, $1c, $1d + db $17, $09, $00, $00, $00, $00, $10, $11 +.frame2 + db $34, $2e, $2f, $30, $31, $32, $33, $34 + db $69, $00, $2a, $2b, $2c, $2d, $18, $6a + db $00, $23, $24, $25, $26, $27, $28, $29 + db $17, $09, $00, $00, $00, $00, $10, $11 +.frame3 + db $6c, $3f, $40, $41, $42, $43, $44, $6c + db $03, $00, $3b, $3c, $3d, $3e, $18, $14 + db $00, $35, $36, $37, $38, $39, $3a, $0f + db $6d, $6e, $00, $00, $00, $00, $6f, $70 +.frame4 + db $45, $46, $47, $48, $49, $4a, $4b, $4c + db $03, $00, $2a, $2b, $2c, $2d, $18, $14 + db $00, $55, $56, $57, $58, $59, $5a, $67 + db $17, $09, $00, $00, $00, $00, $10, $11 +.frame5 + db $52, $64, $4e, $4f, $65, $50, $51, $4d + db $00, $00, $60, $61, $62, $63, $00, $00 + db $00, $68, $5b, $5c, $5d, $5e, $5f, $6b + db $00, $00, $00, $00, $00, $00, $00, $54 + .SpriteTiles: + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$e0,$e0 + db $f8,$f8,$f8,$f8,$fc,$fc,$fc,$fc,$f0,$f0,$c0,$c0,$00,$00,$00,$00 + db $fe,$fe,$f0,$f0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$0f,$0f,$1f,$1f,$3f,$3f + db $00,$00,$00,$00,$00,$00,$80,$80,$e0,$e0,$f8,$f8,$f0,$f0,$f1,$f1 + db $00,$00,$00,$00,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$3f,$3f,$ff,$ff + db $7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$e0,$e0 + db $e1,$e1,$e1,$e1,$e3,$e3,$c3,$c3,$c3,$c3,$83,$83,$07,$87,$00,$00 + db $fc,$fc,$84,$84,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $e0,$e0,$e0,$e0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f8,$f8,$00,$00 + db $00,$00,$00,$00,$00,$00,$07,$07,$03,$03,$01,$01,$01,$01,$e0,$e0 + db $00,$00,$00,$00,$00,$00,$f0,$f0,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff + db $3f,$3f,$1f,$1f,$1f,$1f,$0f,$0f,$07,$07,$03,$03,$01,$01,$00,$00 + db $e0,$e0,$f0,$f0,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$c0,$e0,$e0,$f0,$f0 + db $7f,$7f,$3e,$3e,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $98,$98,$1e,$1e,$0f,$0f,$0f,$0f,$0f,$0f,$07,$07,$01,$01,$00,$00 + db $3f,$3f,$3f,$3f,$7f,$7f,$7f,$7f,$0f,$0f,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$03,$03,$00,$00 + db $1f,$1f,$03,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$7f,$7f,$7f,$7f,$3f,$3f,$1f,$1f,$0f,$0f,$03,$03 + db $ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0,$c0,$c0 + db $01,$01,$03,$03,$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,$c0,$c0 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$03,$03,$07,$07,$0f,$0f,$1f,$1f,$00,$00,$00,$00 + db $00,$00,$00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00,$00 + db $00,$00,$00,$00,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$c0,$00,$00,$00,$00 + db $00,$00,$00,$00,$e3,$e3,$c3,$c3,$c3,$c3,$83,$83,$00,$00,$00,$00 + db $00,$00,$00,$00,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$00,$00,$00,$00 + db $00,$00,$00,$00,$1f,$1f,$0f,$0f,$07,$07,$03,$03,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$7f,$7f,$7f,$7f,$3f,$3f,$1f,$1f,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$00,$00,$00,$00 + db $00,$00,$00,$00,$03,$03,$07,$07,$00,$00,$00,$00,$00,$00,$ff,$ff + db $7f,$7f,$81,$81,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$00,$00,$e0,$e0 + db $e1,$e1,$e1,$e1,$e3,$e3,$c3,$c3,$00,$00,$00,$00,$00,$00,$00,$00 + db $e0,$e0,$e0,$e0,$f0,$f0,$f0,$f0,$00,$00,$00,$00,$00,$00,$00,$00 + db $30,$30,$1f,$1f,$1f,$1f,$0f,$0f,$00,$00,$00,$00,$00,$00,$00,$00 + db $60,$60,$f0,$f0,$fc,$fc,$fe,$fe,$00,$00,$00,$00,$00,$00,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f0,$f0 + db $00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$0f,$0f,$00,$00,$3f,$3f + db $00,$00,$00,$00,$00,$00,$80,$80,$e0,$e0,$f8,$f8,$00,$00,$f1,$f1 + db $00,$00,$00,$00,$00,$00,$07,$07,$03,$03,$01,$01,$00,$00,$e0,$e0 + db $00,$00,$00,$00,$00,$00,$f0,$f0,$fc,$fc,$fe,$fe,$00,$00,$ff,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$fe,$fe,$e0,$e0 + db $f8,$f8,$f8,$f8,$fc,$fc,$fc,$fc,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$7f,$7f,$7f,$7f,$00,$00,$00,$00,$0f,$0f,$03,$03 + db $ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$00,$00,$00,$00,$f0,$f0,$c0,$c0 + db $3f,$3f,$3f,$3f,$7f,$7f,$7f,$7f,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$03,$03,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00,$00,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$03,$03,$00,$00,$00,$00,$1f,$1f,$3f,$3f,$ff,$ff + db $7f,$7f,$00,$00,$ff,$ff,$00,$00,$00,$00,$ff,$ff,$03,$03,$e0,$e0 + db $e1,$e1,$00,$00,$e3,$e3,$00,$00,$00,$00,$83,$83,$00,$80,$00,$00 + db $e0,$e0,$00,$00,$f0,$f0,$00,$00,$00,$00,$f0,$f0,$38,$38,$00,$00 + db $3f,$3f,$00,$00,$1f,$1f,$00,$00,$00,$00,$03,$03,$01,$01,$00,$00 + db $e0,$e0,$00,$00,$fc,$fc,$00,$00,$00,$00,$ff,$ff,$f0,$f0,$ff,$ff + db $00,$00,$00,$00,$00,$00,$01,$01,$00,$00,$0f,$0f,$1f,$1f,$3f,$3f + db $00,$00,$00,$00,$00,$00,$80,$80,$00,$00,$f8,$f8,$f0,$f0,$f1,$f1 + db $00,$00,$00,$00,$00,$00,$07,$07,$00,$00,$01,$01,$01,$01,$e0,$e0 + db $00,$00,$00,$00,$00,$00,$f0,$f0,$00,$00,$fe,$fe,$ff,$ff,$ff,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$ff,$ff,$ff,$ff,$fe,$fe,$00,$00 + db $f8,$f8,$f8,$f8,$fc,$fc,$00,$00,$f0,$f0,$c0,$c0,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$7f,$7f,$00,$00,$3f,$3f,$1f,$1f,$0f,$0f,$00,$00 + db $ff,$ff,$ff,$ff,$fe,$fe,$00,$00,$fc,$fc,$f8,$f8,$f0,$f0,$00,$00 + db $3f,$3f,$3f,$3f,$7f,$7f,$00,$00,$0f,$0f,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$ff,$ff,$7f,$7f,$03,$03,$00,$00 + db $ff,$ff,$ff,$ff,$c0,$c0,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$ff,$ff + db $ff,$ff,$ff,$ff,$7c,$7c,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$e0,$e0 + db $f8,$f8,$f8,$f8,$1c,$1c,$fc,$fc,$f0,$f0,$c0,$c0,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$70,$70,$7f,$7f,$3f,$3f,$1f,$1f,$00,$00,$03,$03 + db $ff,$ff,$ff,$ff,$6e,$6e,$fe,$fe,$fc,$fc,$f8,$f8,$00,$00,$c0,$c0 + db $3f,$3f,$3f,$3f,$70,$70,$7f,$7f,$0f,$0f,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$07,$07,$ff,$ff,$ff,$ff,$7f,$7f,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$c3,$c3,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$ff,$ff + db $ff,$ff,$f7,$f7,$ff,$ff,$ff,$ff,$ff,$ff,$7c,$7c,$ff,$ff,$ff,$ff + db $f8,$f8,$78,$78,$fc,$fc,$fc,$fc,$f0,$f0,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$fb,$fb,$7f,$7f,$7f,$7f,$3f,$3f,$00,$00,$0f,$0f,$03,$03 + db $3f,$3f,$3e,$3e,$7f,$7f,$7f,$7f,$0f,$0f,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$3f,$3f,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$03,$03,$00,$00 + db $ff,$ff,$f1,$f1,$ff,$ff,$ff,$ff,$ff,$ff,$01,$01,$ff,$ff,$7f,$7f + db $ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$fc,$fc,$f8,$f8,$00,$00,$00,$00 + db $00,$00,$00,$00,$0f,$0f,$0f,$0f,$0f,$0f,$07,$07,$01,$01,$00,$00 + db $00,$00,$00,$00,$00,$00,$03,$03,$0f,$0f,$1f,$1f,$3f,$3f,$00,$00 + db $7f,$7f,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00 + db $e1,$e1,$00,$00,$00,$00,$c3,$c3,$c3,$c3,$83,$83,$07,$87,$00,$00 + db $e0,$e0,$00,$00,$00,$00,$f0,$f0,$f0,$f0,$f0,$f0,$f8,$f8,$00,$00 + db $3f,$3f,$00,$00,$00,$00,$0f,$0f,$07,$07,$03,$03,$01,$01,$00,$00 + db $e0,$e0,$00,$00,$00,$00,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00 + db $00,$00,$ff,$ff,$ff,$ff,$00,$00,$ff,$ff,$00,$00,$ff,$ff,$e0,$e0 + db $00,$00,$e1,$e1,$e3,$e3,$00,$00,$c3,$c3,$00,$00,$07,$87,$00,$00 + db $00,$00,$e0,$e0,$f0,$f0,$00,$00,$f0,$f0,$00,$00,$f8,$f8,$00,$00 + db $00,$00,$1f,$1f,$1f,$1f,$00,$00,$07,$07,$00,$00,$01,$01,$00,$00 + db $00,$00,$f0,$f0,$fc,$fc,$00,$00,$ff,$ff,$00,$00,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$0f,$0f,$1f,$1f,$00,$00 + db $00,$00,$00,$00,$00,$00,$80,$80,$e0,$e0,$f8,$f8,$f0,$f0,$00,$00 + db $00,$00,$00,$00,$00,$00,$07,$07,$03,$03,$01,$01,$01,$01,$00,$00 + db $00,$00,$00,$00,$00,$00,$f0,$f0,$fc,$fc,$fe,$fe,$ff,$ff,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$e0,$e0 + db $ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$fc,$fc,$00,$00,$f0,$f0,$c0,$c0 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$c0,$e0,$e0,$00,$00 + db $00,$00,$00,$00,$03,$03,$00,$00,$0f,$0f,$00,$00,$3f,$3f,$ff,$ff + db $fe,$fe,$80,$80,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $10,$10,$03,$03,$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,$e0,$e0,$f0,$f0 + db $ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00 + db $01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $fc,$fc,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $7f,$7f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $98,$98,$00,$00,$0f,$0f,$0f,$0f,$0f,$0f,$07,$07,$01,$01,$00,$00 .SpriteTilesEnd: ; original export script by gabriel reis, modified by shoofle .KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 - db $00,$ff,$00,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$3f,$ff,$7e,$ff,$78,$ff - db $03,$f3,$7f,$ff,$ff,$ff,$fe,$ff,$e0,$ff,$00,$ff,$00,$ff,$00,$ff - db $f0,$ff,$c1,$fe,$c6,$f9,$0c,$f3,$18,$e7,$30,$cf,$00,$ff,$00,$ff - db $ff,$ff,$ff,$fe,$f7,$f8,$03,$fc,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $f8,$ff,$ff,$ff,$ff,$3f,$7f,$81,$3f,$c0,$cf,$30,$7f,$80,$03,$fc - db $00,$80,$81,$ff,$ff,$ff,$ff,$ff,$ff,$1f,$fc,$03,$c0,$3f,$80,$7f - db $60,$7f,$e0,$ff,$f0,$ff,$f0,$ff,$f0,$ff,$f8,$ff,$3e,$ff,$0f,$ff - db $03,$ff,$01,$ff,$00,$ff,$00,$ff,$02,$ff,$0f,$ff,$03,$ff,$01,$ff - db $00,$ff,$aa,$55,$00,$00,$aa,$55,$00,$ff,$22,$dd,$00,$00,$1f,$1f - db $00,$ff,$aa,$55,$00,$e0,$aa,$55,$00,$ff,$22,$dd,$00,$fe,$c8,$f7 - db $ff,$ff,$ff,$00,$ff,$00,$f8,$07,$0e,$f1,$03,$fc,$00,$ff,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $54,$a8,$f0,$00,$40,$80,$c0,$00,$00,$80,$80,$00,$00,$00,$00,$00 - db $14,$2a,$0f,$00,$01,$02,$03,$00,$01,$00,$01,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$80,$80,$00,$40,$80,$a0,$40,$50,$a0,$a8,$54 - db $00,$00,$00,$00,$01,$00,$00,$01,$01,$02,$02,$05,$05,$0a,$2a,$15 - db $40,$80,$80,$40,$00,$80,$82,$01,$50,$a0,$aa,$55,$55,$aa,$aa,$55 - db $00,$00,$00,$00,$00,$00,$e0,$00,$00,$00,$aa,$55,$54,$a8,$aa,$55 - db $00,$e0,$a8,$54,$44,$bb,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55 - db $00,$00,$00,$00,$05,$8a,$ff,$00,$55,$aa,$bb,$44,$55,$aa,$c0,$00 - db $05,$0a,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$40,$80,$00,$00 - db $55,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$00,$00,$00,$00,$00,$00 - db $ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f8,$00,$f0,$00 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f0,$00 - db $e0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00 - db $f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $0f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$08,$1f,$00,$dc,$22,$fc,$00 - db $f0,$00,$f0,$00,$e0,$00,$c0,$00,$00,$80,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$1d,$02,$ff,$00 - db $55,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$00,$00,$00,$00 - db $54,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$15,$2a,$00,$00 - db $01,$00,$83,$00,$45,$a2,$ff,$00,$55,$aa,$bb,$44,$55,$aa,$0e,$01 - db $00,$00,$00,$00,$00,$00,$0e,$01,$00,$00,$aa,$55,$01,$00,$0a,$15 - db $05,$02,$03,$04,$01,$02,$c2,$01,$05,$0a,$aa,$55,$55,$aa,$aa,$55 - db $01,$00,$2a,$55,$55,$aa,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55 db $7f,$00,$3f,$00,$1f,$00,$1f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00 + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 + db $c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$e0,$00,$e0,$00,$e0,$00 + db $07,$00,$07,$00,$1f,$00,$1f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00 db $03,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$3f,$00 + db $e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00 + db $7f,$00,$7f,$00,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 + db $ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f8,$00,$f0,$00 db $1f,$00,$0f,$00,$0f,$00,$07,$00,$07,$00,$03,$00,$03,$00,$01,$00 + db $01,$00,$01,$00,$01,$00,$01,$00,$03,$00,$03,$00,$03,$00,$07,$00 + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00,$f0,$00 + db $e0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $ff,$00,$7f,$00,$7f,$00,$3f,$00,$1f,$00,$1f,$00,$0f,$00,$07,$00 + db $e0,$00,$e0,$00,$f0,$00,$f0,$00,$f0,$00,$f0,$00,$f0,$00,$f0,$00 + db $07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$0f,$00,$0f,$00 + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$fe,$00,$fc,$00,$f8,$00 + db $f0,$00,$e0,$00,$c0,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$c0,$00,$f0,$00,$74,$88,$ff,$00,$dd,$22,$ff,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$00,$f8,$00 db $07,$00,$03,$00,$03,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $f0,$00,$f0,$00,$f0,$00,$f0,$00,$70,$80,$f0,$00,$5d,$22,$ff,$00 - db $c0,$00,$c0,$00,$c0,$00,$c0,$00,$c0,$00,$e0,$00,$e0,$00,$e0,$00 - db $07,$00,$07,$00,$1f,$00,$1f,$00,$3f,$00,$3f,$00,$3f,$00,$3f,$00 - db $e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00,$e0,$00 - db $7f,$00,$7f,$00,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 - db $01,$00,$01,$00,$01,$00,$01,$00,$03,$00,$03,$00,$03,$00,$07,$00 - db $e0,$00,$e0,$00,$f0,$00,$f0,$00,$f0,$00,$f0,$00,$f0,$00,$f0,$00 - db $07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$07,$00,$0f,$00,$0f,$00 - db $00,$ff,$aa,$55,$00,$0f,$aa,$55,$00,$ff,$22,$dd,$00,$03,$ff,$ff + db $0f,$00,$0f,$00,$0f,$00,$0f,$00,$07,$08,$1f,$00,$dc,$22,$fc,$00 + db $f0,$00,$f0,$00,$e0,$00,$c0,$00,$00,$80,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$1d,$02,$ff,$00 + db $55,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$00,$00,$00,$00 + db $54,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$15,$2a,$00,$00 + db $01,$00,$83,$00,$45,$a2,$ff,$00,$55,$aa,$bb,$44,$55,$aa,$0e,$01 + db $54,$a8,$f0,$00,$40,$80,$c0,$00,$00,$80,$80,$00,$00,$00,$00,$00 + db $14,$2a,$0f,$00,$01,$02,$03,$00,$01,$00,$01,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$05,$8a,$ff,$00,$55,$aa,$bb,$44,$55,$aa,$c0,$00 + db $05,$0a,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$bb,$44,$40,$80,$00,$00 + db $55,$aa,$ff,$00,$55,$aa,$ff,$00,$55,$aa,$00,$00,$00,$00,$00,$00 + db $ff,$00,$ff,$00,$ff,$00,$ef,$10,$ff,$00,$aa,$55,$ff,$00,$ff,$00 + db $ff,$00,$ff,$00,$ff,$00,$fe,$01,$ff,$00,$aa,$55,$ff,$00,$ea,$15 + db $55,$aa,$bb,$44,$55,$aa,$aa,$55,$55,$aa,$aa,$55,$55,$aa,$aa,$55 + db $00,$00,$00,$00,$00,$80,$80,$00,$40,$80,$a0,$40,$50,$a0,$a8,$54 + db $00,$00,$00,$00,$01,$00,$00,$01,$01,$02,$02,$05,$05,$0a,$2a,$15 + db $40,$80,$80,$40,$00,$80,$82,$01,$50,$a0,$aa,$55,$55,$aa,$aa,$55 + db $00,$00,$00,$00,$00,$00,$e0,$00,$00,$00,$aa,$55,$54,$a8,$aa,$55 + db $00,$00,$00,$00,$00,$00,$ec,$10,$00,$00,$aa,$55,$00,$00,$00,$00 + db $11,$ee,$aa,$55,$55,$aa,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55 + db $11,$ee,$aa,$55,$44,$bb,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55 db $11,$ee,$aa,$55,$44,$bb,$aa,$54,$10,$ec,$aa,$55,$40,$a0,$80,$40 db $11,$ee,$aa,$55,$44,$bb,$2a,$55,$11,$0e,$aa,$55,$04,$0b,$0a,$05 - db $00,$ff,$aa,$55,$00,$fc,$aa,$55,$00,$ff,$22,$dd,$00,$c0,$80,$40 - db $00,$ff,$aa,$55,$00,$3c,$aa,$55,$00,$ff,$22,$dd,$00,$70,$ff,$ff db $11,$ee,$aa,$55,$44,$bb,$a8,$54,$10,$ec,$aa,$55,$44,$ba,$2a,$15 db $11,$ee,$aa,$55,$44,$bb,$0a,$05,$00,$07,$aa,$55,$00,$01,$00,$00 - db $00,$ff,$aa,$55,$00,$07,$aa,$55,$00,$ff,$22,$dd,$00,$00,$00,$00 - db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$1f,$08,$17 - db $00,$00,$00,$00,$00,$00,$6e,$10,$00,$00,$aa,$55,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$00,$ec,$10,$00,$00,$aa,$55,$00,$00,$00,$00 - db $11,$ee,$aa,$55,$44,$bb,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55 + db $00,$e0,$a8,$54,$44,$bb,$aa,$55,$11,$ee,$aa,$55,$44,$bb,$aa,$55 db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$88,$77 + db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$80,$7f + db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$1f,$ff + db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$ff,$ff + db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$c8,$f7 + db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$00,$ff + db $00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff,$08,$f7 + db $00,$ff,$00,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$3f,$ff,$7e,$ff,$78,$ff + db $03,$ff,$7f,$ff,$ff,$ff,$fe,$ff,$e0,$ff,$00,$ff,$00,$ff,$00,$ff + db $ff,$ff,$ff,$fe,$f7,$f8,$03,$fc,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $ff,$ff,$ff,$00,$ff,$00,$f9,$06,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $ff,$ff,$ff,$00,$ff,$00,$f8,$07,$0e,$f1,$03,$fc,$00,$ff,$00,$ff + db $f8,$ff,$ff,$ff,$ff,$3f,$7f,$81,$3f,$c0,$cf,$30,$7f,$80,$03,$fc + db $00,$ff,$81,$ff,$ff,$ff,$ff,$ff,$ff,$1f,$fc,$03,$c0,$3f,$80,$7f + db $60,$ff,$e0,$ff,$f0,$ff,$f0,$ff,$f0,$ff,$f8,$ff,$3e,$ff,$0f,$ff + db $f0,$ff,$c1,$fe,$c6,$f9,$0c,$f3,$18,$e7,$30,$cf,$00,$ff,$00,$ff db $00,$ff,$01,$ff,$01,$ff,$03,$ff,$06,$ff,$0e,$ff,$1f,$ff,$1f,$ff db $00,$ff,$c0,$ff,$e0,$ff,$70,$ff,$7c,$ff,$de,$ff,$ce,$ff,$fe,$ff - db $3f,$ff,$3f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $c1,$ff,$c1,$ff,$c3,$ff,$c3,$ff,$c7,$ff,$87,$ff,$87,$ff,$0f,$ff - db $0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$1f,$ff,$1f,$ff - db $fe,$ff,$fe,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff - db $f8,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$f0,$ff,$f0,$ff,$f0,$ff - db $1f,$ff,$1f,$ff,$1f,$ff,$1f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff - db $3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff - db $f0,$ff,$f0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff - db $e0,$ff,$e0,$fc,$e0,$fe,$e0,$fe,$e0,$ff,$e0,$ff,$e0,$ff,$c0,$ff - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $00,$ff,$00,$00,$00,$fa,$00,$72,$00,$76,$00,$26,$00,$ae,$00,$8e - db $00,$de,$00,$8e,$00,$ae,$00,$26,$00,$76,$00,$72,$00,$00,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$03,$ff,$03,$ff,$07,$ff,$07,$ff - db $02,$fd,$03,$fc,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff - db $07,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$01,$ff,$01,$ff - db $80,$ff,$c0,$ff,$c0,$ff,$e0,$ff,$e0,$ff,$f0,$ff,$f0,$ff,$f0,$ff - db $01,$ff,$01,$3f,$01,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $f8,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff - db $fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff - db $ff,$ff,$ff,$00,$ff,$00,$f9,$06,$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,$60,$9f,$fc,$03,$87,$78,$80,$7f,$80,$7f,$c0,$3f db $80,$7f,$c0,$3f,$20,$df,$10,$ef,$f0,$0f,$00,$ff,$00,$ff,$00,$ff + db $03,$ff,$01,$ff,$00,$ff,$00,$ff,$02,$ff,$0f,$ff,$03,$ff,$01,$ff + db $00,$ff,$60,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$c1,$ff + db $3f,$ff,$3f,$ff,$7f,$ff,$7f,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $fe,$ff,$fe,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff db $60,$9f,$38,$c7,$0e,$f1,$01,$fe,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$80,$7f,$e0,$1f,$18,$e7,$0c,$f3,$06,$f9 + db $c1,$ff,$c1,$ff,$c3,$ff,$c3,$ff,$c7,$ff,$87,$ff,$87,$ff,$0f,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $f8,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$f0,$ff,$f0,$ff,$f0,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$03,$ff,$03,$ff,$07,$ff,$07,$ff + db $02,$fd,$03,$fc,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$ff db $00,$ff,$00,$ff,$80,$7f,$c0,$3f,$40,$bf,$60,$9f,$30,$cf,$10,$ef + db $0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$1f,$ff,$1f,$ff + db $f0,$ff,$f0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff + db $07,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$01,$ff,$01,$ff + db $80,$ff,$c0,$ff,$c0,$ff,$e0,$ff,$e0,$ff,$f0,$ff,$f0,$ff,$f0,$ff db $10,$ef,$10,$ef,$18,$e7,$08,$f7,$0f,$f1,$07,$ff,$03,$ff,$01,$ff - db $00,$ff,$60,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$c1,$ff - db $c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$fe,$c0,$fc,$c0,$ff - db $00,$7b,$00,$71,$00,$75,$00,$64,$00,$6e,$00,$4e,$00,$00,$00,$ff + db $1f,$ff,$1f,$ff,$1f,$ff,$1f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff + db $e0,$ff,$e0,$fc,$e0,$fe,$e0,$fe,$e0,$ff,$e0,$ff,$e0,$ff,$c0,$ff + db $00,$ff,$00,$00,$00,$fa,$00,$72,$00,$76,$00,$26,$00,$ae,$00,$8e db $00,$ff,$00,$00,$00,$5f,$00,$4e,$00,$6e,$00,$64,$00,$75,$00,$71 + db $01,$ff,$01,$3f,$01,$7f,$00,$7f,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $f8,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff + db $3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$3f,$ff + db $c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$fe,$c0,$fc,$c0,$ff + db $00,$de,$00,$8e,$00,$ae,$00,$26,$00,$76,$00,$72,$00,$00,$00,$ff + db $00,$7b,$00,$71,$00,$75,$00,$64,$00,$6e,$00,$4e,$00,$00,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$3f,$00,$ff + db $fc,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 - db $41, $1b, $1b, $4a, $1a, $4b, $1b, $1b - db $42, $43, $1b, $4c, $39, $4d, $1b, $32 - db $1a, $44, $1b, $4c, $4e, $1b, $33, $34 - db $1a, $1a, $45, $4f, $50, $35, $36, $1a - db $46, $47, $48, $49, $37, $38, $39, $3a - db $3b, $3c, $3d, $28, $29, $2f, $30, $31 - db $5a, $3e, $3f, $2a, $2b, $2c, $2d, $5b - db $40, $5c, $52, $53, $56, $57, $5c, $2e - db $5d, $54, $24, $55, $51, $25, $58, $59 - db $1c, $1d, $1f, $73, $26, $20, $21, $22 - db $1e, $5e, $5f, $27, $27, $74, $75, $23 - db $7a, $60, $63, $27, $27, $76, $77, $27 - db $61, $69, $64, $27, $27, $6c, $6d, $78 - db $62, $69, $67, $27, $27, $6e, $6f, $79 - db $65, $69, $68, $6a, $7d, $70, $71, $27 - db $66, $69, $7b, $6b, $7c, $7e, $72, $27 + db $1b, $1c, $1c, $1d, $1a, $1e, $1c, $1c + db $1f, $20, $1c, $21, $22, $23, $1c, $24 + db $1a, $25, $1c, $21, $26, $1c, $27, $28 + db $1a, $1a, $29, $2a, $2b, $2c, $2d, $1a + db $2e, $2f, $30, $31, $32, $33, $22, $34 + db $35, $36, $37, $38, $39, $3a, $3b, $3c + db $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f + db $45, $46, $46, $46, $46, $46, $46, $46 + db $4c, $4d, $4e, $4f, $4f, $50, $51, $52 + db $53, $54, $55, $56, $57, $58, $59, $5a + db $5b, $5c, $5d, $5e, $5e, $5f, $60, $61 + db $62, $63, $64, $5e, $5e, $65, $66, $5e + db $67, $68, $69, $5e, $5e, $6a, $6b, $6c + db $6d, $68, $6e, $5e, $5e, $6f, $70, $71 + db $72, $68, $73, $74, $75, $76, $77, $5e + db $78, $68, $79, $7a, $7b, $7c, $7d, $5e .BackgroundCopyEnd: diff --git a/19thesun.aseprite b/19thesun.aseprite index 330baaa3a84ade6b828103f3b507c924fbf927ca..0d6f3644f5a81a8394e0be75efee04d1b2d68c19 100644 GIT binary patch literal 5273 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 l7gjV{Aa|NTTqpY^>1HSGgJPm(r)tUTTvKC literal 6356 zcmeGgXH-*J^M&54G#4ZSf&xOY&=yFf2#79Czy<^Y0!otr5<~(Bfwiy{&b5kJ8K zNRtvNQkEt`32mh*O$b#&&HG-^{dB)?_w&!5vuDq7&Y5}d-8=VAxo_^=JFmq7U@#j7 zWB`c(2LJ;Azy-oDzyiP+jZh!Qm&U*F?IDv8{-t!8+($ah;V`Nx`{Yn|)I>0PGZP*@2iJpokZWn4oZC`lxr z`4@W6mUJ5OjmR4cR#~%0Q=Rf~K&tn^P|~vkM829L)vRb9)rXs@^&6nF^)9k`D#@@< zweF<|+M^}phUsiS(TNx6wGCzA+`AH44{|}O!Ql`A{@HIB$m_D3%f?uWy%7GxH}Yp z{5VoEaGOcpr`}nT4?7$+(=9MHqf|bqICXfpx6#<*Qn~SQH{_!Yd6V&Jvr%Hbmg+IH zK0$*#5zE>jQ(A`(zJoI$(mnsR`kHR&!H6E@E_w|@hQJIn+sNaAZ|tYv%Aa8YnH75aZhma)PJN9j>YbpKDEmPZChE4brw(=z6wMT-*NH zKgf6O|Edu0Vq%0EL^gLl^q+(pAK>ZX@9*gf_xu!XY0v;D&W>^V)gd?*ct8-FPzQGj zpGfjZ$zwhk2KT0{CNxipEO9kE8jQX1U%}Bf7K+fOdd+*sM9JxAODhCfCT9X(Ex3#3 zoh0M+Z+(?*e<;WTYl^i-&oO(%Z-ES;?j^)_Knx-YirTN|MpN=59bY zmXtR!5u$nZ6ALp+G?olztwrdbB=U|qx3YF*0bZD5RT1iacUgkDb4k8k!=fa-JTRTI zT=F(|bZ%sU88ja>1AMDq7qm*x7C$Sg-?nz_4R=uPY{_)a@;)tOA{c}Dz#eu5Z;AYA zun8|IEU8zGHw#PG?s-aT!mA-4FDdz|a<@jEek-XxvrcO^#Sfd#*RJ2?Ihv`T_PW7_ zUX9tov)EjQOFoBA;!2Ks*1@lqHddfc0t3SP(li4W%-B7M(`;4E1e@@s^Je7WQ!lx# zc_aB?L!u#7&y7pRs}@z4U$IzG_e|7c>G^qN$GHgG+{f<2NEu7A===8;16-xE0YsgiNcu_CTQflXlFujaPd3o@jBgUq08}?>jupaxo9@(hSVQ#QBRd);n zqAqkfRP%w90yiyrqL`>N9q8I6T={)}_^bAZ@1FebNhm4&Z3jvrW=4L3$Yy?W{geE} z4Vby&4*2I|lT(rHmB2_iPuvg)mf848hn0IR70H^^xCk8$Q=Lw&7t_HA$V61n z5Im+3UekUE@#ThftE$stF+qw0dS*>sm=wycP>)}7t5sXwxVJruM30`Zw6ePwyuW)H ze=9m?TtiPKY#?JinXc0-T5Rou&?aUO=E(FT#z%|-Dh2U^(;nrC^td4DdXm2%g%}(3 zVHN!lH;Nap9i5pJ2sy-r^k-f=+0BP<3D4t_SAP-GAPo zUA!rqLZXz&cWP~Shm<~ zI(%+#il0se57HH`Kv^<7S~ImSJWe*V|~74J@2j!X|Un9RX7 zTYx8%J&!Q=ILtPayPuu%x9{e7p1t<$OkCha>LuO+P#`K=M18QnW`0YNk+S)5(S=7g z`BslYRnOpRCM0mF(Rk;bUR8AwJ(*EeoISSo6@=~a)> zv0^Vr&fdzhc_8dwWvrMU^hz6ZC4Fqc-k)DKu$^Cxrpsg^eLr#mJ5qIdOvCQg?iqe@ zgNzJq7``EYEu$GW?t9jF%;)2J@J3zi>e^NBLTzA za;t-&H70r-_rNL^Ia@2E@_k4C`*x%6zW?s~zcU-kK*Cwz{0tR70|-620DULSSvNnQ z0B;v1=$i$~my8?TCtz^!f5ibe@bSel5~@6eEYQ{O_pDrijVavN$;HjpAIq3P@ejH9 zfWx0IgrCbVj5!qkkdyoCDh;EWCjFU>@%{za0b@viU%1*%sO^&hzcDZj-~pVWT91>b zue+18t3RXXi=kih@&9&F{f(8Om@$N`aEL$v{>NHIjWQ^0x>}7fz9!?NxfiE-27~2) zA!zFf0Dx_S7+E)~QqVLE2W|o{AOyex5Cj=^g+Yjd5DwvI2ui!t)?meCDS)yxM1&nT zRlK?PYD|nF*46^W0z2>?B!!oczdZR0V`_Kjp@uH@Y-Np-7eETg=$e39Exkr{K1d_5bdk;h$2BO*Z}rYB?H-c;=ads;BzskKZm8^ii%4K$*y7JOleI2}}rIe-=LNEZ-b z24b3+2K_dbVFr!?h_96409e1VRMwC(zAVGQ&S{>ybd)4hT@p`ZxVpd^EFUQlZSXN- znQA!B3bTJu8ER4Kjhf=BtG3X9PNt!37_UuuG@8X(ooy;i zBIZ`uO_AsdZGiTuhcctgjUKj@5HvW-2KlsM#*VP1&mXPDRC3DSIEf{u(Eyi>Il(AZrkHTbs~r z^OL^^*{v;NmzL7O>ph0l{2YVb!N!VdStnQL2b+{O^z2mnOB)hs(lou__m&JbTXC*U(ZtY| P=>&WH#)34gL9pZB|B>(? diff --git a/20Judgement.inc b/20Judgement.inc index 076d95f..9b0c8c6 100644 --- a/20Judgement.inc +++ b/20Judgement.inc @@ -14,10 +14,350 @@ Judgement: dw .fUpdate dw .fDraw -.fInit: ret -.fUpdate: ret +.fInit: + ld hl, CVS + ld a, 0 + ld [hl+], a ; CVS timer + ld [hl+], a ; + ld [hl+], a ; CVS + 2 frame index for various sparks + + ld a, %00_00_00_00 + ld [rOBP0], a + ret +.fUpdate: + ld hl, CVS + call IncrementTimer + + ld a, [CVS+1] ; checking the high byte of the timer + cp a, $01 ; $10 = 1 second, $02 = 1/8 of a second + ret c + + ld a, 0 ; reset timer + ld [CVS], a + ld [CVS+1], a + + ld hl, .spark1Anim + ld a, [CVS+2] + inc a + call ArrayClampLooping + ld [CVS+2], a + + ld a, [CVS+2] + ld hl, .spark1Anim + ld d, 1 + ld e, 0 + call .drawSpark + + ld a, [CVS+2] + ld hl, .spark2Anim + ld d, 5 + ld e, 1 + call .drawSpark + + ld a, [CVS+2] + ld hl, .spark3Anim + ld d, 5 + ld e, 2 + call .drawSpark + + ld hl, .spark4Anim + ld a, [CVS+2] + ld d, 5 + ld e, 3 + call .drawSpark + + ld hl, .spark5Anim + ld a, [CVS+2] + ld d, 5 + ld e, 4 + call .drawSpark + + ld hl, .spark6Anim + ld a, [CVS+2] + ld d, 1 + ld e, 5 + call .drawSpark + + ld hl, .spark7Anim + ld a, [CVS+2] + ld d, 1 + ld e, 6 + call .drawSpark + + ld hl, .spark8Anim + ld a, [CVS+2] + ld d, 1 + ld e, 7 + call .drawSpark + + ld hl, .spark9Anim + ld a, [CVS+2] + ld d, 5 + ld e, 8 + call .drawSpark + + ld hl, .spark10Anim + ld a, [CVS+2] + ld d, 1 + ld e, 9 + call .drawSpark + + ld hl, .spark11Anim + ld a, [CVS+2] + ld d, 1 + ld e, 10 + call .drawSpark + + ld hl, .spark12Anim + ld a, [CVS+2] + ld d, 5 + ld e, 11 + call .drawSpark + + ld hl, .spark13Anim + ld a, [CVS+2] + ld d, 5 + ld e, 12 + call .drawSpark + + ld hl, .spark14Anim + ld a, [CVS+2] + ld d, 5 + ld e, 13 + call .drawSpark + + ld a, [CVS+2] + and a, $03 + sla a + sla a + sla a + ld b, 0 + ld c, a + ld hl, .smash + add hl, bc + ld de, MY_OAM + 14*4 + ld b, (2+1+7)*8 + ld c, (1+1+2)*8 + ld a, $24 + call BuildMetaSprite + + + ld hl, ZEROES + ld de, MY_OAM + 20*4 + ld bc, 20*4 + call CopyRange + + ld a, [CVS+2] + and a, %0000_0110 + sra a + cp a, 0 + jp nz, :+ + ld hl, .tail1 +: cp a, 1 + jp nz, :+ + ld hl, .tail2 +: cp a, 2 + jp nz, :+ + ld hl, .tail3 +: cp a, 3 + jp nz, :+ + ld hl, .tail4 +: + + + ld de, MY_OAM + 20*4 + ld b, (2+1+0)*8 + ld c, (1+1+4)*8 + ld a, $74 + call BuildMetaSpritePacked + + ret + .fDraw: ret + +.drawSpark: + ; hl should point to a curve animation + ; d should be the offset into the tile IDs for the sprite animation? + ; e should be the sprite ID number + ; a is the index into the curve + ld b, 0 + ld c, a + inc hl + add hl, bc + add hl, bc + + ld b, [hl] + inc hl + ld c, [hl] + + and a, $03 + add a, d ; get a tile ID from the animation index + + ld hl, MY_OAM + ld d, 0 + add hl, de + add hl, de + add hl, de + add hl, de ; step forward by 4*e steps to get the e'th OAM slot + + ld [hl], b + inc hl + ld [hl], c + inc hl + ld [hl], a + + ret + +.spark1Anim +db 16, 0, 0, 87, 50, 83, 53, 79, 56, 72, 57, 66, 57, 61, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +.spark2Anim +db 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 37, 78, 32, 74, 27, 70, 23, 66, 19, 62, 15, 0, 0, 0, 0, +.spark3Anim +db 16, 93, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 50, 91, 55, 91, 61, 92, 67, 93, 71, +.spark4Anim +db 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 35, 83, 27, 80, 21, 78, 16, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, +.spark5Anim +db 16, 110, 70, 114, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 51, 94, 55, 100, 60, 105, 65, +.spark6Anim +db 16, 0, 0, 0, 0, 0, 0, 0, 0, 81, 42, 75, 39, 67, 41, 58, 44, 52, 47, 44, 51, 35, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +.spark7Anim +db 16, 90, 45, 90, 43, 88, 40, 85, 37, 78, 32, 67, 27, 57, 23, 48, 20, 39, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +.spark8Anim +db 16, 78, 72, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 90, 47, 91, 51, 91, 54, 87, 61, +.spark9Anim +db 16, 0, 0, 0, 0, 90, 46, 94, 52, 97, 60, 100, 66, 103, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +.spark10Anim +db 16, 89, 44, 87, 40, 84, 34, 82, 26, 81, 17, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, +.spark11Anim +db 16, 68, 19, 63, 16, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 88, 41, 86, 36, 81, 32, 76, 28, 71, 24, +.spark12Anim +db 16, 70, 36, 62, 33, 54, 29, 45, 25, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 86, 44, 79, 39, +.spark13Anim +db 16, 0, 1, 0, 1, 0, 1, 0, 1, 89, 43, 91, 49, 93, 55, 95, 62, 96, 72, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, +.spark14Anim +db 16, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 89, 44, 95, 49, 99, 54, 104, 61, 0, 1, 0, 1, 0, 1, + + +.smash ; $24, 8 tiles + db $15, $16, $00, $00 + db $17, $18, $19, $1a + + db $09, $0a, $00, $00 + db $0b, $0c, $0d, $0e + + db $0f, $10, $00, $00 + db $11, $12, $13, $14 + + db $1b, $1c, $00, $00 + db $1d, $1e, $1f, $20 + +.tail1 ; $74 + db $00, $00, $00, $00 + db $00, $00, $00, $00 + db $00, $00, $00, $00 + db $00, $31, $33, $00 + db $28, $32, $35, $00 + db $30, $36, $00, $00 + db $34, $37, $00, $00 +.tail2 + db $00, $00, $00, $00 + db $00, $00, $00, $00 + db $00, $00, $38, $00 + db $00, $39, $3a, $00 + db $3b, $3c, $3e, $00 + db $3d, $3f, $40, $00 + db $34, $41, $00, $00 +.tail3 + db $00, $00, $00, $00 + db $00, $00, $26, $27 + db $00, $28, $29, $2a + db $00, $25, $2b, $00 + db $23, $24, $2c, $00 + db $21, $2d, $2e, $00 + db $22, $2f, $00, $00 +.tail4 + db $00, $00, $00, $00 + db $00, $00, $00, $00 + db $00, $00, $42, $00 + db $00, $43, $3a, $00 + db $44, $24, $46, $00 + db $45, $2d, $47, $00 + db $22, $48, $00, $00 + .SpriteTiles: + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $08,$00,$18,$00,$38,$00,$3c,$00,$1c,$00,$0c,$00,$0c,$00,$04,$00 + db $00,$00,$10,$00,$1c,$00,$0e,$00,$0c,$00,$1c,$00,$38,$00,$00,$00 + db $00,$00,$06,$00,$0e,$00,$1c,$00,$38,$00,$30,$00,$30,$00,$10,$00 + db $00,$00,$18,$00,$30,$00,$30,$00,$30,$00,$3c,$00,$1c,$00,$08,$00 + db $00,$00,$00,$00,$00,$20,$00,$30,$00,$30,$00,$3f,$00,$3e,$00,$1c + db $00,$00,$00,$40,$00,$70,$00,$38,$00,$38,$00,$3c,$00,$06,$00,$00 + db $00,$00,$00,$60,$00,$3e,$00,$1e,$00,$06,$00,$0c,$00,$08,$00,$00 + db $00,$40,$00,$40,$00,$60,$00,$38,$00,$38,$00,$1c,$00,$06,$00,$02 + db $00,$00,$00,$00,$00,$00,$00,$00,$0d,$0d,$07,$07,$27,$27,$1f,$1f + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$e0,$e0,$70,$70 + db $0f,$0f,$03,$03,$07,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $fc,$fc,$fc,$fc,$ff,$ff,$7f,$7f,$3f,$3f,$03,$03,$03,$03,$00,$00 + db $00,$00,$00,$00,$f0,$f0,$ff,$ff,$ff,$ff,$fe,$fe,$ff,$ff,$0e,$0e + db $00,$00,$60,$60,$80,$80,$00,$00,$e0,$e0,$c0,$c0,$c0,$c0,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$05,$05,$07,$07,$07,$07 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$c0,$c0,$c0 + db $03,$03,$07,$07,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $f0,$f0,$f8,$f8,$fc,$fc,$ff,$ff,$3f,$3f,$07,$07,$03,$03,$00,$00 + db $00,$00,$00,$00,$00,$00,$e7,$e7,$fe,$fe,$ff,$ff,$ff,$ff,$01,$01 + db $00,$00,$00,$00,$c0,$c0,$00,$00,$00,$00,$00,$00,$80,$80,$e0,$e0 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0c,$0c,$02,$02,$07,$07 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$e0,$e0 + db $1a,$1a,$0b,$0b,$03,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $f8,$f8,$fc,$fc,$ff,$ff,$7f,$7f,$3f,$3f,$0f,$0f,$00,$00,$00,$00 + db $00,$00,$00,$00,$80,$80,$e0,$e0,$fc,$fc,$ff,$ff,$fc,$fc,$7f,$7f + db $00,$00,$00,$00,$00,$00,$08,$08,$00,$00,$e0,$e0,$00,$00,$50,$50 + db $00,$00,$00,$00,$01,$01,$02,$02,$23,$23,$39,$39,$1d,$1d,$0f,$0f + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$c0,$e0,$e0 + db $7f,$7f,$1b,$1b,$07,$07,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00 + db $fc,$fc,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$01,$01,$00,$00,$00,$00 + db $00,$00,$00,$00,$1f,$1f,$ff,$ff,$ff,$ff,$ff,$ff,$7e,$7e,$07,$07 + db $00,$00,$00,$00,$c0,$c0,$00,$00,$80,$80,$80,$80,$20,$20,$00,$00 + db $0f,$0f,$0f,$0f,$1f,$1f,$3f,$3f,$7f,$7f,$7f,$7f,$7f,$7f,$ff,$ff + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$07,$03,$03 + db $00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$03,$03,$07,$07,$07,$07 + db $7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $03,$03,$07,$07,$0f,$0f,$0f,$0f,$1f,$1f,$3f,$3f,$3f,$3f,$7f,$7f + db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$07,$07 + db $00,$00,$40,$40,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$03,$03 + db $0f,$0f,$1f,$1f,$3f,$3f,$7f,$7f,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff + db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fc + db $fc,$fc,$fc,$fc,$f8,$f8,$f8,$f8,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe + db $e0,$e0,$e0,$e0,$c0,$c0,$c0,$c0,$80,$80,$80,$80,$00,$00,$00,$00 + db $fe,$fe,$fc,$fc,$fc,$fc,$f8,$f8,$f0,$f0,$f0,$f0,$e0,$e0,$c0,$c0 + db $03,$03,$07,$07,$07,$07,$0f,$0f,$0f,$0f,$3f,$3f,$3f,$3f,$7f,$7f + db $00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$07,$07,$0f,$0f + db $1f,$1f,$1f,$1f,$3f,$3f,$7f,$7f,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff + db $20,$20,$60,$60,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$c0,$c0,$c0,$c0 + db $7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$07,$03,$03 + db $c0,$c0,$c0,$c0,$c0,$c0,$80,$80,$80,$80,$80,$80,$80,$80,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fc,$f8,$f8 + db $f8,$f8,$f0,$f0,$f0,$f0,$e0,$e0,$e0,$e0,$c0,$c0,$c0,$c0,$00,$00 + db $00,$00,$02,$02,$0e,$0e,$1e,$1e,$3e,$3e,$3e,$3e,$7e,$7e,$fc,$fc + db $00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$0f,$0f,$1f,$1f,$3f,$3f + db $fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$f8,$f8,$f8,$f8,$f8,$f8,$f8,$f8 + db $00,$00,$00,$00,$00,$00,$01,$01,$03,$03,$03,$03,$03,$03,$07,$07 + db $3f,$3f,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $07,$07,$0f,$0f,$1f,$1f,$3f,$3f,$3f,$3f,$7f,$7f,$7f,$7f,$7f,$7f + db $f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$e0,$c0,$c0 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$fc,$fc,$f8,$f8 + db $c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $f8,$f8,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0,$e0,$e0,$e0,$e0,$c0,$c0 + db $03,$03,$06,$06,$0e,$0e,$0e,$0e,$1e,$1e,$7e,$7e,$fc,$fc,$fc,$fc + db $01,$01,$03,$03,$07,$07,$07,$07,$0f,$0f,$1f,$1f,$3f,$3f,$7f,$7f + db $00,$00,$00,$00,$01,$01,$01,$01,$03,$03,$03,$03,$07,$07,$0f,$0f + db $0f,$0f,$1f,$1f,$3f,$3f,$3f,$3f,$3f,$3f,$7f,$7f,$7f,$7f,$ff,$ff + db $f8,$f8,$f8,$f8,$f8,$f8,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0 + db $c0,$c0,$c0,$c0,$80,$80,$80,$80,$80,$80,$00,$00,$00,$00,$00,$00 + db $fc,$fc,$fc,$fc,$f8,$f8,$f0,$f0,$f0,$f0,$e0,$e0,$c0,$c0,$80,$80 .SpriteTilesEnd: ; original export script by gabriel reis, modified by shoofle ; sparks flying off @@ -34,8 +374,8 @@ Judgement: db $00,$ff,$00,$ff,$00,$ff,$80,$7f,$7f,$80,$30,$cf,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$fe,$01,$63,$9c,$01,$fe,$00,$ff db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fc,$fc,$f8,$f8,$e0,$e0 - db $fa,$fb,$fe,$fe,$ff,$ff,$c0,$c0,$00,$00,$00,$00,$07,$00,$3f,$00 - db $00,$f3,$00,$1f,$80,$83,$80,$80,$00,$00,$30,$00,$ff,$00,$ff,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$c0,$c0,$00,$00,$00,$00,$07,$00,$3f,$00 + db $80,$f3,$e0,$ff,$c0,$c3,$00,$00,$00,$00,$30,$00,$ff,$00,$ff,$00 db $00,$1c,$00,$f1,$00,$c3,$01,$fe,$00,$03,$00,$00,$b8,$00,$ff,$00 db $7f,$70,$7f,$80,$ff,$00,$ff,$07,$3c,$fc,$00,$00,$1c,$00,$f7,$00 db $ff,$00,$ff,$00,$ff,$00,$ff,$ff,$1f,$1f,$07,$07,$03,$03,$80,$40 @@ -62,7 +402,7 @@ Judgement: db $00,$3f,$00,$ff,$01,$ff,$03,$ff,$03,$ff,$07,$ff,$0f,$ff,$0f,$ff db $80,$60,$80,$78,$80,$7c,$18,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$0f,$ff db $93,$9f,$82,$9e,$c0,$dc,$c1,$58,$c1,$58,$81,$58,$80,$4c,$80,$66 - db $1c,$1c,$0d,$0d,$e7,$07,$13,$03,$13,$43,$12,$03,$e1,$07,$00,$0e + db $1c,$1c,$0c,$0c,$e7,$07,$13,$03,$13,$43,$12,$03,$e1,$07,$00,$0e db $80,$80,$80,$80,$80,$80,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01 db $01,$01,$03,$03,$03,$03,$03,$03,$07,$07,$07,$07,$07,$07,$07,$07 @@ -73,21 +413,16 @@ Judgement: db $70,$70,$e0,$e0,$c0,$c0,$80,$80,$80,$80,$03,$03,$07,$07,$1f,$1e db $01,$01,$03,$03,$0f,$0f,$3f,$3f,$ff,$fc,$ff,$e0,$ff,$00,$ff,$00 db $ff,$f8,$ff,$f8,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$fe,$ff,$fe,$ff,$fe - db $ff,$e1,$ff,$f0,$ff,$f0,$ff,$f8,$ff,$fc,$ff,$fe,$e7,$e6,$f3,$f3 + db $ff,$e1,$ff,$f0,$ff,$f0,$ff,$f8,$ff,$fc,$ff,$fe,$ff,$fe,$ff,$ff db $ff,$f8,$ff,$f0,$ff,$c0,$ff,$80,$ff,$00,$ff,$00,$ff,$00,$ff,$00 - db $ff,$01,$ff,$03,$ff,$07,$ff,$07,$fe,$0e,$fc,$1c,$f8,$18,$f8,$38 - db $ff,$f0,$bf,$b0,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$3f,$20 - db $f0,$70,$e0,$60,$c0,$c0,$80,$80,$80,$80,$00,$00,$00,$00,$00,$00 - db $7f,$60,$7f,$60,$7f,$40,$7f,$40,$7f,$40,$ff,$c0,$ff,$c0,$ff,$c0 - db $fc,$1c,$f8,$38,$f0,$30,$f0,$30,$e0,$60,$c0,$c0,$c0,$c0,$80,$80 - db $00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$03,$03,$03,$03 - db $ff,$c3,$ff,$c3,$ff,$c7,$fe,$c6,$fc,$cc,$fc,$cc,$f8,$d8,$f8,$f8 - db $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $03,$02,$03,$02,$07,$06,$07,$06,$0f,$0e,$0f,$0e,$0f,$0c,$1f,$1c - db $f0,$f0,$f0,$f0,$e0,$e0,$c0,$c0,$80,$80,$80,$80,$80,$80,$00,$00 - db $1f,$18,$1f,$18,$3f,$30,$3f,$20,$7f,$60,$7f,$61,$ff,$e7,$fe,$ce - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f8,$f8,$fc,$fc - db $01,$01,$03,$03,$03,$03,$07,$07,$0f,$0f,$0e,$0e,$1c,$1c,$38,$38 + db $ff,$01,$ff,$03,$ff,$07,$ff,$07,$ff,$0f,$ff,$1f,$ff,$1f,$ff,$3f + db $ff,$f0,$ff,$f0,$ff,$f0,$ff,$f0,$ff,$f0,$ff,$f0,$ff,$f0,$ff,$e0 + db $ff,$7f,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$1f,$ff,$3f,$ff,$3f,$ff,$3f,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$c3,$ff,$c3,$ff,$c7,$ff,$c7,$ff,$cf,$ff,$cf,$ff,$df,$ff,$ff + db $ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fe,$ff,$fc,$ff,$fc + db $ff,$f8,$ff,$f8,$ff,$f0,$ff,$e0,$ff,$e0,$ff,$e1,$ff,$e7,$fe,$ce + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$f8,$f8 db $f8,$f8,$f8,$f8,$f0,$f0,$f0,$f0,$f0,$f0,$e0,$e0,$e0,$e0,$e0,$e0 db $e0,$e0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$80,$80 db $ff,$e0,$ff,$e0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c0 @@ -102,7 +437,7 @@ Judgement: db $fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$10,$ff,$30,$ff,$70,$ff,$f0 db $ff,$f0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0 - db $ff,$00,$ff,$00,$ff,$00,$ff,$01,$ff,$03,$ff,$03,$fe,$06,$fc,$0c + db $ff,$00,$ff,$00,$ff,$00,$ff,$01,$ff,$03,$ff,$03,$ff,$07,$ff,$0f db $ff,$e0,$ff,$e0,$ff,$e0,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$c1,$ff,$c1 db $7f,$70,$ff,$f8,$ff,$f8,$ff,$f8,$ff,$f0,$ff,$f0,$ff,$f0,$ff,$f0 db $3f,$38,$3f,$38,$3f,$38,$3f,$38,$3f,$38,$7f,$70,$7f,$70,$7f,$70 @@ -111,39 +446,39 @@ Judgement: db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$c0,$ff,$70,$ff,$bc,$ff db $01,$ff,$01,$ff,$01,$ff,$01,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff db $07,$ff,$1f,$ff,$3f,$ff,$3f,$ff,$ff,$ff,$fd,$ff,$fb,$ff,$de,$ff - db $00,$ff,$00,$00,$00,$7d,$00,$39,$00,$bb,$00,$93,$00,$d7,$00,$c7 - db $00,$ff,$00,$00,$00,$be,$00,$9c,$00,$dd,$00,$c9,$00,$eb,$00,$e3 - db $00,$ff,$00,$7f,$07,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$10,$ff,$00,$ff + db $00,$ff,$ff,$00,$82,$7d,$c6,$39,$44,$bb,$6c,$93,$28,$d7,$38,$c7 + db $00,$ff,$ff,$00,$41,$be,$63,$9c,$22,$dd,$36,$c9,$14,$eb,$1c,$e3 + db $00,$ff,$80,$7f,$07,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$10,$ff,$00,$ff db $00,$ff,$00,$ff,$c0,$ff,$c0,$ff,$c0,$ff,$80,$ff,$00,$ff,$00,$ff - db $00,$ef,$00,$c7,$00,$d7,$00,$93,$00,$bb,$00,$39,$00,$00,$00,$ff - db $00,$f7,$00,$e3,$00,$eb,$00,$c9,$00,$dd,$00,$9c,$00,$00,$00,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$7f,$00,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01 + db $10,$ef,$38,$c7,$28,$d7,$6c,$93,$44,$bb,$c6,$39,$ff,$00,$00,$ff + db $08,$f7,$1c,$e3,$14,$eb,$36,$c9,$22,$dd,$63,$9c,$ff,$00,$00,$ff + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$80,$7f,$00,$ff db $ff,$c0,$ff,$c0,$ff,$80,$ff,$80,$ff,$00,$ff,$00,$ff,$00,$ff,$00 db $fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e,$fe,$1e,$fe,$0e,$fe,$0e db $ff,$fe,$ff,$fc,$ff,$fc,$ff,$fc,$ff,$f8,$ff,$f8,$ff,$f0,$ff,$f0 db $ff,$1f,$ff,$1f,$ff,$1f,$ff,$1f,$ff,$1f,$ff,$1f,$ff,$1f,$ff,$3f db $07,$ff,$01,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$01,$ff,$03,$ff,$03,$ff - db $00,$ff,$00,$fe,$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,$fe,$00,$ff + db $00,$ff,$01,$fe,$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,$01,$fe,$00,$ff .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 - db $3b, $7a, $7b, $59, $6a, $2c, $2c, $65 - db $3b, $5b, $5c, $5a, $69, $2c, $4c, $4d - db $3b, $5d, $5e, $40, $66, $67, $4e, $4f - db $3b, $5f, $63, $1a, $68, $50, $51, $78 - db $3b, $60, $64, $41, $52, $53, $54, $2c - db $3b, $49, $79, $42, $55, $77, $56, $44 - db $3b, $3b, $61, $43, $57, $58, $45, $46 + db $3b, $74, $75, $54, $65, $2c, $2c, $60 + db $3b, $56, $57, $55, $64, $2c, $4c, $4d + db $3b, $58, $59, $40, $61, $62, $4e, $56 + db $3b, $5a, $5e, $1a, $63, $4f, $3b, $72 + db $3b, $5b, $5f, $41, $50, $3b, $51, $2c + db $3b, $49, $73, $42, $3b, $3b, $52, $44 + db $3b, $3b, $5c, $43, $3b, $53, $45, $46 db $3b, $3b, $4a, $3e, $3f, $47, $48, $4b - db $3b, $22, $23, $24, $25, $26, $27, $62 + db $3b, $22, $23, $24, $25, $26, $27, $5d db $28, $29, $2c, $35, $36, $2d, $3d, $2a - db $2b, $30, $31, $32, $2f, $2f, $7c, $2e + db $2b, $30, $31, $32, $2f, $2f, $76, $2e db $3c, $39, $3a, $33, $2f, $2f, $2f, $2f db $1b, $1c, $1e, $1f, $34, $20, $21, $37 db $1d, $38, $2f, $2f, $2f, $2f, $2f, $2f - db $6b, $2f, $7e, $70, $71, $72, $73, $6e - db $6c, $6d, $7f, $74, $75, $76, $7d, $6f + db $66, $2f, $78, $6b, $6c, $6d, $6e, $69 + db $67, $68, $79, $6f, $70, $71, $77, $6a + .BackgroundCopyEnd: diff --git a/20judgement.aseprite b/20judgement.aseprite index ada5ad54388449a841709ad1f4aac0f5496343f4..5edd3a4f3242e49a058fd58c657006c24d03a917 100644 GIT binary patch literal 4338 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 CBJBDA diff --git a/21TheWorld.inc b/21TheWorld.inc index d9a7483..5e94e31 100644 --- a/21TheWorld.inc +++ b/21TheWorld.inc @@ -1,3 +1,11 @@ +; my magnum opus... my greatest work. gaze upon it and despair +; this is such a tangled (not really) mess of lookup tables and case switches +; which is impressive given thta i don't hvae those in assembly. +; there's a matrix of speesd that determines how fast sprites move across +; the globe to make it look like it's really rotating andd not just madde of +; sliding segments. i'm very proud of this not because it's good code but +; because it works. + TheWorld: db 10, "THE WORLD " db 10, " " @@ -14,85 +22,596 @@ TheWorld: dw .fUpdate dw .fDraw -.fInit: ret -.fUpdate: ret +.fInit: + ld hl, CVS + ld a, 0 + ld [hl+], a ; CVS timer + ld [hl+], a ; + ld [hl+], a ; CVS + 2 frame index for rotating earth + ld [hl+], a ; CVS + 3 flag for whether we've run out of OAM + + + + ld hl, MY_OAM +.priorityLoop + inc hl + inc hl + inc hl + set OAMB_PRI, [hl] + inc hl + ld a, l + cp a, $9F + jp c, .priorityLoop + + ret +.fUpdate: + ld hl, CVS + call IncrementTimer + + ld a, [CVS+1] ; checking the high byte of the timer + cp a, $01 ; $10 = 1 second, $02 = 1/8 of a second + ret c + + ld a, 0 + ld [CVS], a + ld [CVS+1], a + + ld b, 80 + ld a, [CVS+2] + dec a + call ArrayClampLoopingB + ld [CVS+2], a + + + call .rotate + + call .cleanNonVisibleTiles + + call .spawnNewTiles + + ret + +.spawnNewTiles: + ; spawn whatever new stripe of tiles is indicated in the map structure + ld a, [CVS+2] + ld b, a + ld hl, .map +.loopFindCurrentStripes + ld a, [CVS+2] + ld b, a + ld a, [hl] ; hl points at a timing index + cp a, 255 + jp z, .doneSpawningStripe ; if it's 255 then we've reached the end of the list + cp a, b + jp z, .foundOne ; if it's =[CVS+2] then we've found a stripe that should be spawned now + inc hl ; now hl points at LOW(stripe address) + inc hl ; now hl points at HIGH(stripe address) + inc hl ; now hl points at a timing index + jp .loopFindCurrentStripes ; look at the next one +.foundOne + inc hl ; now hl points at LOW(stripe address) + ld c, [hl] + inc hl ; now hl points at HIGH(strpie address) + ld b, [hl] + push hl ; save our location from the map list... + ld h, b + ld l, c + + ; hl holdds the addrerss of a map stripe in memory, linearly packed + call .BuildMapStripe + pop hl ; rerstore the map list memory location + inc hl ; now hl points at a timing index + jp .loopFindCurrentStripes ; look at the next one +.doneSpawningStripe + ret + +.BuildMapStripe: + ; go through MY_OAM aand fiind six unused sprites, and draw our candidate + ; sprites in those slots. + ; each time we need to check if our counter (b) is six + ; and also if we're outsidde the dedicated OAM space (not as important maybe) + + ; hl points to a list of six tile ids + ld b, 0 + ld d, h + ld e, l + ld hl, MY_OAM + +.spriteLoop + ld a, [hl] + cp a, 0 + jp nz, .skipToNextSlot ; if the y value of the slot we're in is not zero, + ; we have to skip this OAM slot + ld a, 6 ; STRPES ARE SIX TILIES TALLL + cp a, b + ret z ; if we'rer trying to draw sprite 6 in our stripe, we're done + + ld a, [de] + cp a, 0 + jp z, .doneDrawingSprite ; if the tile we're trying to draw is id 0, we're done + ; else, fill this slot with the correct sprite. + ; six way branch based on what position in the stripe we're at + ld a, b +: cp a, 0 + jp nz, :+ + + ld [hl], (2+1+5)*8 ; y + inc hl + ld [hl], (1+1+1)*8 + 2; x + inc hl + ld a, [de] + ld [hl], a + ld a, 255 +: cp a, 1 + jp nz, :+ + + ld [hl], (2+1+6)*8 ; y + inc hl + ld [hl], (1+1+0)*8+4; x + inc hl + ld a, [de] + ld [hl], a + + ld a, 255 +: cp a, 2 + jp nz, :+ + + ld [hl], (2+1+7)*8 ; y + inc hl + ld [hl], (1+1+0)*8+1; x + inc hl + ld a, [de] + ld [hl], a + + ld a, 255 +: cp a, 3 + jp nz, :+ + + ld [hl], (2+1+8)*8 ; y + inc hl + ld [hl], (1+1+0)*8+1; x + inc hl + ld a, [de] + ld [hl], a + + ld a, 255 +: cp a, 4 + jp nz, :+ + + ld [hl], (2+1+9)*8 ; y + inc hl + ld [hl], (1+1+0)*8+4; x + inc hl + ld a, [de] + ld [hl], a + + ld a, 255 +: cp a, 5 + jp nz, :+ + + ld [hl], (2+1+10)*8 ; y + inc hl + ld [hl], (1+1+1)*8 + 2; x + inc hl + ld a, [de] + ld [hl], a + + ld a, 255 +: + inc hl ; now it's pointing at the attributes + ;set OAMB_PRI, [hl] + inc hl ; now it's pointing at the next OAM slot +.doneDrawingSprite + inc de ; move to the next sprite in the strip + inc b ; increment our sprite-in-strip counter + jp .checkIfOutOfOAM + +.skipToNextSlot + inc hl + inc hl + inc hl + inc hl + jp .checkIfOutOfOAM + +.checkIfOutOfOAM + ld a, l + cp a, $9F + jp c, .spriteLoop + + ret ; if we're out of oam we're done! + + +.rotate: + ; move all currently visible sprites according to the rotation behavior. + ld hl, MY_OAM +.loop + ld a, [hl] ; y value + cp a, 0 + jp nz, :+ + inc hl ; x + inc hl ; tile id + inc hl ; attrs + inc hl ; next oam value + + ld a, l + cp a, $9F + ret nc + jp .loop +: + ld b, [hl] ; y value + inc hl + ld c, [hl] ; x value + + push hl + ld hl, .speedMatrix + call .GetOffsetForMatrix + pop hl + ld b, a ; b now holds the speed matrrix value + + ld a, [CVS+2] + and a, $01 + ld d, a ; every-other-frame bit + ld a, [CVS+2] + and a, $03 + inc a + sra a + sra a + ld e, a ; every-fourth-frame bit + + ld a, [hl] ; x value to modify + bit 0, b + jp z, :+ + add a, 1 +: bit 1, b + jp z, :+ + add a, d +: bit 2, b + jp z, :+ + add a, e +: + ld [hl], a + +.done + inc hl ; now ponting at tile id + inc hl ; now pointing at attrs + inc hl + ld a, l + cp a, $A0 + jp nz, .loop + + ret + +.cleanNonVisibleTiles: + ld hl, MY_OAM + ; go through MY_OAM and, for any which aren't still visible, set their + ; y value to zero. +.cleanUpLoop + ld a, [hl] ; a is the y value and hl points to y +: cp a, (2+1+5)*8 + jp nz, :+ ; if the y value doesn't match our target, try the next check + inc hl + ld a, [hl-] ; a is the x value and hl points to x + cp a, (1+1+5)*8+6 + jp c, .nextTile ; if x value is not less than the threshold, + ; skip this tile and look at the next tile + + ; else, the x value is <= the threshhold, so we put it in baby jail + ld [hl], 0 ; set y to zero + jp .nextTile +: cp a, (2+1+6)*8 + jp nz, :+ + inc hl + ld a, [hl-] ; a is the x value and hl points to x + cp a, (1+1+6)*8+4 + jp c, .nextTile ; if x value is not less than the threshold, + ; skip this tile and look at the next tile + + ; else, the x value is <= the threshhold, so we put it in baby jail + ld [hl], 0 ; set y to zero + jp .nextTile +: cp a, (2+1+7)*8 + jp nz, :+ + inc hl + ld a, [hl-] ; a is the x value and hl points to x + cp a, (1+1+7)*8+4 + jp c, .nextTile ; if x value is not less than the threshold, + ; skip this tile and look at the next tile + + ; else, the x value is <= the threshhold, so we put it in baby jail + ld [hl], 0 ; set y to zero + jp .nextTile +: cp a, (2+1+8)*8 + jp nz, :+ + inc hl + ld a, [hl-] ; a is the x value and hl points to x + cp a, (1+1+7)*8+4 + jp c, .nextTile ; if x value is not less than the threshold, + ; skip this tile and look at the next tile + + ; else, the x value is <= the threshhold, so we put it in baby jail + ld [hl], 0 ; set y to zero + jp .nextTile +: cp a, (2+1+9)*8 + jp nz, :+ + inc hl + ld a, [hl-] ; a is the x value and hl points to x + cp a, (1+1+6)*8+4 + jp c, .nextTile ; if x value is not less than the threshold, + ; skip this tile and look at the next tile + + ; else, the x value is <= the threshhold, so we put it in baby jail + ld [hl], 0 ; set y to zero + jp .nextTile +: cp a, (2+1+10)*8 + jp nz, :+ + inc hl + ld a, [hl-] ; a is the x value and hl points to y + cp a, (1+1+5)*8+6 + jp c, .nextTile ; if x value is not less than the threshold, + ; skip this tile and look at the next tile + + ; else, the x value is <= the threshhold, so we put it in baby jail + ld [hl], 0 ; set y to zero + jp .nextTile +: +.nextTile + inc hl + inc hl + inc hl + inc hl + ld a, $A0 + cp a, l + jp nz, .cleanUpLoop + ret + + + +.GetOffsetForMatrix: + ; b has y, c has x, hl has a 6x6 matrix of bytes. + ; when this is done hl will point to the individual byte we want + ; subtract (2+1+5)*8 from b, then divide by 8 + ; subtract (1+1+1)*8 from c, then divide by 8. + ld a, b + sub a, (2+1+5)*8 + sra a + sra a + sra a + cp a, 5 + jp c, :+ + ld a, 5 +: ld b, a + + ld a, c + sub a, (1+1+0)*8 + sra a + sra a + sra a + cp a, 6 + jp c, :+ + ld a, 6 +: ld c, a + + ld d, 0 + ld a, 0 + add a, b + add a, b + add a, b + add a, b + add a, b + add a, b ; a = 6*b + add a, b + ld e, a + + add hl, de + + ld d, 0 + ld e, c + + add hl, de + + ld a, [hl] + + ret + +.speedMatrix + ; bits are + ; 1s: normal speed, + ; 2s: 50% boost + ; 4s: 25% boost + db %0000_0111, %0000_0110, %0000_0110, %0000_0001, %0000_0110, %0000_0110, %0000_0111 + db %0000_0001, %0000_0101, %0000_0101, %0000_0101, %0000_0101, %0000_0101, %0000_0001 + db %0000_0101, %0000_0101, %0000_0011, %0000_0011, %0000_0011, %0000_0101, %0000_0101 + db %0000_0101, %0000_0101, %0000_0011, %0000_0011, %0000_0011, %0000_0101, %0000_0101 + db %0000_0001, %0000_0101, %0000_0101, %0000_0101, %0000_0101, %0000_0101, %0000_0001 + db %0000_0111, %0000_0110, %0000_0110, %0000_0001, %0000_0110, %0000_0110, %0000_0111 + + +.map + db 0 + dw .stripes + db 5 + dw .stripes + 6 + db 10 + dw .stripes + 12 + db 15 + dw .stripes + 18 + db 20 + dw .stripes + 24 + db 25 + dw .stripes + 30 + db 30 + dw .stripes + 36 + db 35 + dw .stripes + 42 + db 40 + dw .stripes + 48 + db 45 + dw .stripes + 54 + db 50 + dw .stripes + 60 + db 55 + dw .stripes + 66 + db 60 + dw .stripes + 72 + db 65 + dw .stripes + 78 + db 70 + dw .stripes + 84 + db 75 + dw .stripes + 90 + db 255 + +.stripes +db $02, $05, $00, $00, $00, $00 +db $03, $06, $07, $00, $00, $33 +db $04, $0a, $08, $0c, $00, $2c +db $09, $0b, $0d, $0e, $10, $00 +db $12, $00, $00, $0f, $11, $00 +db $00, $13, $17, $00, $00, $2d +db $1c, $14, $18, $1a, $00, $2e +db $1d, $15, $19, $1b, $00, $2f +db $24, $16, $00, $00, $00, $00 +db $25, $1e, $1f, $00, $00, $00 +db $26, $20, $21, $00, $00, $32 +db $22, $23, $2b, $27, $29, $30 +db $34, $37, $00, $28, $2a, $31 +db $35, $38, $00, $00, $39, $00 +db $36, $00, $00, $00, $00, $00 .fDraw: ret .SpriteTiles: + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$00,$03,$03,$0f,$0f,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$1f,$1f + db $00,$00,$f0,$f0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$3e,$3e,$ff,$ff,$f7,$ff,$d5,$ff,$ea,$ff,$d1,$ff,$ff,$ff + db $03,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $cf,$ff,$e7,$ff,$73,$7f,$19,$1f,$0f,$0f,$0e,$0f,$06,$07,$06,$05 + db $06,$05,$06,$05,$07,$04,$07,$04,$03,$03,$01,$01,$00,$00,$00,$00 + db $f2,$7e,$fe,$fe,$ee,$ee,$c6,$c6,$e0,$e0,$f0,$f0,$ff,$ff,$01,$01 + db $00,$00,$00,$00,$fc,$fc,$58,$f8,$b0,$f0,$60,$e0,$80,$80,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fa,$fa,$fd,$3d,$fd,$1f,$fb,$1f + db $80,$80,$e0,$e0,$e0,$e0,$e0,$e0,$c0,$c0,$80,$80,$00,$00,$00,$00 + db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$f8,$f8 + db $fe,$fe,$e3,$ff,$61,$ff,$60,$ff,$30,$ff,$b3,$ff,$bf,$ff,$bf,$ff + db $00,$00,$80,$80,$c0,$c0,$40,$c0,$e0,$e0,$e0,$e0,$c0,$c0,$c0,$c0 + db $5f,$7f,$5f,$7f,$5f,$73,$bc,$e4,$f0,$c0,$e0,$c0,$c0,$80,$80,$80 + db $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $7f,$41,$7f,$41,$7f,$40,$3f,$00,$3f,$31,$1f,$13,$1e,$12,$00,$00 + db $01,$01,$03,$03,$0f,$0f,$0e,$0e,$00,$00,$03,$03,$0f,$0e,$1f,$10 + db $ff,$ff,$f2,$f2,$02,$02,$00,$00,$00,$00,$ff,$ff,$ff,$06,$ff,$00 + db $ff,$ff,$bb,$ba,$3b,$3a,$1f,$1f,$3c,$34,$7f,$61,$df,$d0,$ef,$68 + db $ff,$e0,$ff,$00,$ff,$00,$ff,$c0,$3f,$3e,$07,$07,$81,$81,$01,$01 + db $1f,$10,$1f,$10,$1f,$18,$0f,$0f,$03,$03,$00,$00,$00,$00,$00,$00 + db $ff,$00,$ff,$00,$ff,$30,$ff,$fc,$cf,$cd,$0f,$0f,$07,$07,$0f,$0f + db $f2,$32,$f0,$00,$fa,$0a,$fe,$3e,$fe,$3e,$fe,$fe,$fe,$fe,$fc,$fc + db $07,$07,$0f,$0f,$07,$07,$07,$07,$0f,$0f,$0f,$0d,$07,$04,$03,$02 + db $fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fd,$fd,$f9,$99,$f1,$11,$e0,$00 + db $00,$00,$01,$01,$01,$01,$03,$03,$46,$46,$c0,$c0,$87,$87,$1f,$1f + db $00,$00,$80,$80,$df,$df,$fb,$ff,$73,$7f,$e7,$ff,$cf,$ff,$df,$ff + db $ff,$02,$ff,$04,$f3,$0c,$f9,$0f,$fc,$3f,$fe,$ff,$ff,$ff,$f8,$f8 + db $f0,$f0,$e0,$e0,$c0,$c0,$00,$00,$20,$20,$60,$60,$00,$00,$00,$00 + db $ff,$63,$ff,$03,$ff,$07,$ff,$0f,$fb,$8f,$76,$fe,$fc,$fc,$f8,$f8 + db $78,$78,$38,$38,$38,$38,$20,$20,$20,$20,$30,$30,$18,$18,$08,$08 + db $0c,$0c,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$ff,$fc,$fc,$e0,$e0,$c0,$c0,$70,$70,$18,$18,$00,$00,$00,$00 + db $00,$00,$0f,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $3f,$00,$ff,$00,$ff,$f0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $fc,$00,$ff,$00,$ff,$01,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f1 + db $03,$03,$00,$00,$e0,$e0,$07,$07,$1f,$1f,$3f,$31,$7f,$60,$ff,$e0 + db $fe,$fe,$00,$00,$00,$00,$08,$08,$08,$08,$9c,$9c,$fe,$fe,$ff,$07 + db $ff,$e4,$7f,$7f,$38,$38,$10,$10,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$03,$ff,$c3,$fe,$fe,$3c,$3c,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$18,$18,$10,$10,$c0,$c0,$8f,$8f + db $00,$00,$00,$00,$03,$03,$0e,$0e,$fc,$fc,$f8,$f8,$fe,$fe,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$ff,$ff,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$e0,$e0,$ff,$ff,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f3,$f3,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$f0,$f0,$f8,$f8,$d8,$d8,$c0,$c0,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$07,$07,$07,$07,$00,$00 + db $00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$e0,$e0 + db $00,$00,$e0,$e0,$fc,$fc,$fc,$fc,$f8,$f8,$e0,$e0,$00,$00,$00,$00 + db $f8,$f8,$00,$00,$00,$00,$00,$00,$20,$20,$20,$20,$60,$60,$c0,$c0 + db $60,$60,$60,$60,$60,$60,$c0,$c0,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$06,$06,$02,$02,$06,$06,$0c,$0c,$18,$18,$00,$00 .SpriteTilesEnd: ; original export script by gabriel reis, modified by shoofle .KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $03,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$ff,$3f,$3f,$07,$07,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f,$1f,$1f,$07,$07 - db $03,$03,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$7f,$7f,$3f,$3f,$1f,$1f,$0f,$0f - db $0f,$0f,$07,$07,$07,$07,$03,$03,$03,$03,$03,$03,$01,$01,$01,$01 - db $01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fc,$fc,$f8,$f8,$e0,$e0 - db $ff,$ff,$fc,$fc,$e0,$e0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00 - db $c0,$c0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe,$fe,$fe,$fc,$fc,$f8,$f8,$f0,$f0 - db $c0,$c0,$80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $f0,$f0,$e0,$e0,$e0,$e0,$c0,$c0,$c0,$c0,$c0,$c0,$80,$80,$80,$80 - db $80,$80,$80,$80,$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,$80,$80,$80,$80 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01 - db $80,$80,$80,$80,$c0,$c0,$c0,$c0,$c0,$c0,$e0,$e0,$e0,$e0,$f0,$f0 - db $01,$01,$01,$01,$03,$03,$03,$03,$03,$03,$07,$07,$07,$07,$0f,$0f - db $f0,$f0,$f8,$f8,$fc,$fc,$fe,$fe,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$c0,$c0 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$03,$03 - db $0f,$0f,$1f,$1f,$3f,$3f,$7f,$7f,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff - db $e0,$e0,$f8,$f8,$fc,$fc,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$e0,$e0,$fc,$fc,$ff,$ff - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$c0,$c0 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03 - db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$07,$07,$3f,$3f,$ff,$ff - db $07,$07,$1f,$1f,$3f,$3f,$7f,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 db $ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$07,$ff,$07,$ff,$07,$ff,$07 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$00,$ff,$00,$ff,$80,$ff,$80,$ff,$c0,$ff,$f8,$ff,$ff,$ff,$ff db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$04 db $ff,$00,$ff,$00,$ff,$07,$ff,$07,$ff,$07,$ff,$07,$ff,$07,$ff,$0f db $ff,$0f,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $ff,$06,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$07,$ff,$0f,$ff,$3f - db $ff,$3f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 - db $ff,$00,$ff,$00,$ff,$80,$ff,$80,$ff,$c0,$ff,$f8,$ff,$ff,$ff,$ff db $ff,$80,$ff,$80,$ff,$c0,$ff,$f0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$c0,$ff,$f0,$ff,$f8 + db $ff,$06,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$07,$ff,$0f,$ff,$3f + db $ff,$3f,$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,$fe,$fe + db $ff,$ff,$fe,$fe,$fd,$fd,$ea,$ea,$d4,$d4,$88,$88,$50,$50,$a0,$a0 + db $e0,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $07,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$7f,$7f,$1f,$1f,$07,$07,$03,$03,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f + db $fe,$fe,$fd,$fd,$fa,$fa,$f5,$f5,$ea,$ea,$d5,$d5,$ea,$ea,$d5,$d5 + db $a0,$a0,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$00,$00,$00,$00 + db $1f,$1f,$1f,$1f,$0f,$0f,$07,$07,$07,$07,$03,$03,$03,$03,$01,$01 + db $dc,$dc,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa,$54,$54,$aa,$aa + db $01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $dc,$dc,$aa,$aa,$54,$54,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01 + db $ee,$ee,$d5,$d5,$ea,$ea,$f5,$f5,$ea,$ea,$f5,$f5,$fa,$fa,$fd,$fd + db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$00,$00,$80,$80,$40,$40 + db $01,$01,$03,$03,$03,$03,$07,$07,$07,$07,$0f,$0f,$1f,$1f,$1f,$1f + db $ff,$ff,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $40,$40,$80,$80,$50,$50,$e8,$e8,$f4,$f4,$f8,$f8,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff + db $00,$00,$00,$00,$00,$00,$03,$03,$07,$07,$1f,$1f,$7f,$7f,$ff,$ff + db $3f,$3f,$7f,$7f,$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,$0f db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$ff,$f8,$ff,$f0,$ff,$f0 db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$e7,$ff,$00,$ff,$00,$ff,$00,$ff,$00 - db $ff,$ff,$1f,$1f,$3f,$3f,$3f,$3f,$3f,$3f,$3f,$3e,$3f,$38,$3f,$38 - db $ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$80,$ff,$00,$ff,$00,$ff,$00 - db $3f,$38,$3f,$38,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$1f,$10,$ff,$f0 - db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$0f db $ff,$07,$ff,$03,$ff,$03,$ff,$02,$ff,$00,$ff,$00,$ff,$00,$ff,$00 db $ff,$ff,$ff,$ff,$ff,$cf,$ff,$07,$ff,$03,$ff,$01,$ff,$00,$ff,$00 db $ff,$ff,$f8,$f8,$fd,$fd,$fc,$fc,$fe,$fe,$fe,$fe,$ff,$1f,$ff,$0f - db $ff,$0f,$ff,$0f,$ff,$0f,$fe,$0e,$fe,$0e,$fc,$0c,$f8,$08,$ff,$0f - db $df,$df,$8f,$8f,$af,$af,$27,$27,$77,$77,$73,$73,$00,$00,$ff,$ff - db $ff,$ff,$00,$00,$fb,$fb,$73,$73,$77,$77,$27,$27,$af,$af,$8f,$8f db $ff,$ff,$00,$00,$f6,$f6,$e6,$e6,$ef,$ef,$4f,$4f,$5f,$5f,$1f,$1f + db $ff,$ff,$00,$00,$fb,$fb,$73,$73,$77,$77,$27,$27,$af,$af,$8f,$8f + db $ff,$ff,$1f,$1f,$3f,$3f,$3f,$3f,$3f,$3f,$3f,$3e,$3f,$38,$3f,$38 + db $ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$80,$ff,$00,$ff,$00,$ff,$00 + db $ff,$0f,$ff,$0f,$ff,$0f,$fe,$0e,$fe,$0e,$fc,$0c,$f8,$08,$ff,$0f db $bf,$bf,$1f,$1f,$5f,$5f,$4f,$4f,$ef,$ef,$e6,$e6,$00,$00,$ff,$ff + db $df,$df,$8f,$8f,$af,$af,$27,$27,$77,$77,$73,$73,$00,$00,$ff,$ff + db $3f,$38,$3f,$38,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$1f,$10,$ff,$f0 + db $1f,$1f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $fd,$fd,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $dd,$dd,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $11,$11,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .KeyArtTilesEnd: .BackgroundCopy: ; tiles start at 26 - db $3e, $3e, $38, $1b, $1b, $3f, $3e, $3e - db $39, $3a, $3b, $1b, $1b, $1b, $40, $41 - db $3c, $3d, $1b, $1b, $1b, $1b, $1b, $1b - db $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b - db $1b, $23, $24, $25, $1c, $1d, $1e, $1b - db $26, $27, $1a, $1a, $1a, $1a, $1f, $20 - db $28, $1a, $1a, $1a, $1a, $1a, $1a, $21 - db $29, $1a, $1a, $1a, $1a, $1a, $1a, $22 - db $2a, $1a, $1a, $1a, $1a, $1a, $1a, $2b - db $2c, $1a, $1a, $1a, $1a, $1a, $1a, $2d - db $2e, $2f, $1a, $1a, $1a, $1a, $30, $31 - db $1b, $32, $33, $34, $35, $36, $37, $1b - db $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b - db $47, $1b, $1b, $1b, $1b, $1b, $42, $43 - db $48, $49, $4a, $4e, $4d, $44, $45, $3e - db $3e, $3e, $4b, $4f, $4c, $46, $3e, $3e + db $1b, $1b, $1c, $1d, $1d, $1e, $1b, $1b + db $1f, $20, $21, $1d, $1d, $1d, $22, $23 + db $24, $25, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $26, $27, $28, $29, $2a, $2b, $1d + db $1d, $2c, $2d, $1a, $1a, $1a, $2e, $1d + db $1d, $2f, $1a, $1a, $1a, $1a, $30, $1d + db $1d, $31, $1a, $1a, $1a, $1a, $32, $1d + db $1d, $33, $34, $1a, $1a, $1a, $35, $1d + db $1d, $36, $37, $38, $38, $39, $3a, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $3b, $1d, $1d, $1d, $1d, $1d, $3c, $3d + db $3e, $3f, $40, $41, $42, $43, $44, $1b + db $1b, $1b, $45, $46, $47, $48, $1b, $1b + .BackgroundCopyEnd: diff --git a/21theworld.aseprite b/21theworld.aseprite index f4a6ced565a1f9057a130a84633ec336d5939110..42a02c027de3a0a560004105bc91d8d1a9799eae 100644 GIT binary patch delta 1648 zcmV-$29NoaDySR+C=QVVehsJ%008>&ssLmF0063yjV}*T0RR9aAOHXW00sa604qxXNw;HrI2{F$y5R8+#-%-oBV`slc`07x3C zAQAQ0ZG+zdC=1WOyr3S+ZtlIW)=BtxZh86YGiXS@L+2sgPrvy?GtGA^{GA)%rWqOh z(UB3kqByLe3o0N2)M@=r9&*pN`)Bnde3icr{LSEYgLPH+vX0XhToHkS^u998!-OEe z**M)f((@rhV;>tr3Nmk#zp29qE|@B=mh4?^&X>4V4>j3}&c$}?P36jJh2vqq0pEr@i1|`R2shYGCxj{^8 z--td^)W$5&nrze9rsTcsR$oI69OOx#Br9DU527TGdfw5Y&y4{E3)_nDbldv)z%Z^S?kN)3fEjD-yTfe`V3ff&>X1nSLfL98GRK#Loo& z&L+09kM25=4CS4_@TPQJ^$L=AW|0pUAa!7(r7fIK-8$;O5_4Aav=s5MV#uS` z!pVk<7K{pdHM80KZk9uvT|{L(;-xx?@^Wf=bF>m4%u;A&w@AI2`;OT2AZFc(=pb7h zh}^AafA{mLvTV^p1XCZ(0_A9GyJ->iyiSBH0nX&^^yl~H2h6qZmAgiFboNr;r6V=K z7(F@%VFQltB8XQA&3V3no;S^T03!WMdKTf1zJBVwj+A z42FxzyJjXY;6*ryKhq`;yxOfO&x2Q z_skyV%|9u>(690DN7PR7OZp(6?Sr1S>$^H34?@rPz%muN*#Cv{gpWFd>OaYH5+e!# zld}Pov+x7B0S}1*001K(0ssI21^@s6HIrcsB!5x?004NLy;chr!XOL_kNe+Q5nE_l z28?NSM&|lS%2t6hOOII2mzc+RYOWGSt)yN&^WURAIzQ(vH7Onn5b;&s8~P2YMsfMa z#eGm+CI4OGj~L=L>PLB1DDTfvR|@6A!#nUS2osT0Htsn7UBSo`1R#I{uVG8$LKlQ_ zynh{kr-SP8t-1Eo_B&pK*S1W?h2m{~jz6tu&s?1%fbS3YPuKR#VnVkL+fMzV{!yQ= zw&${G=2nU1f+Rs6C!O&h>ayf-_=g0co%pY<%$ELgaq4|1G1|PG52w-GS#gch+IgMa zn2r6x-OxTOrfzhStL}^TP>_4G?LoQqcvvf%eH8@2BtW~b@)f2JzH1j`sT{7g&;K8) z2#fXqYAIIr)B1$EqSL+~gB|lQfaqlokj|n@r$@nbi7*_S?!SDF%>4HUN%O~%|J^}m zB5cfCwio$u6N{6v0hY7y1BL;U><=OVBa;sh6%GdgQ*d%=bY*h^0000YlVA`P2L=F3 zWqCnzlN}LE8NmPm00kfc01yBu0RIC3000000000I00@)e5+8r9&&LjeP!NS-V#f|x zP*Fj|-e{Khe=+{WEC>na#yH8hI5RhsxtjLBs-TJ*bePh2u*4PtcGw_6if3U@9SyY6 zk)DMS#+YCQ7d~Eim)z7u3q8qG*qBLP!^2tOe_ix3kUYnt@Me#L!mc5VFY_Z#_>|0J zTypt}8}7MYga;!+g?oOj41~c3b;|$%00kfd0Pz0+0RIC3000000000B027np5+8rH z(#Hw{K@dgJHs_qsXI#81Zn%37)jk1(at57>-wvDr literal 5396 zcmeHLc~q0f7XQK$R@p(LC@CUV*|)F=B!Yk`R#XI~J|rYiK-naKAW8s1u!w-7Sd0Xu zRw{_H$qvO(ki#Yc2@;e*Dw`05urK-Emsp>?w(t2*&*|wo-gE9f^Ud6u`#Xo< zAtaEvT`lbyDXxpxl{S&4LbcnGJT*AP@(}Y-{=P2&q(d!Xxx6D4RPTIxs(VlwW%UnVpoc=tvCb?iG&33&n^)luW#os8*eELApWzZ zkOi!KypRVxgM&STh{&TpzMe#NsACxUp%Z^?wvT~ewTB}HW7983+bSS_Z+m4GP;Hxa zcQ6D!$EqH zG6$kP z%9z~8(F6JBW1G#sn`XLUe?Ap?Ne+88TOsZFD_zv`#FO6hbx9+vfaTWl_6kPylhtFT zc-RA_zO42L{L>w5>*iGwn9mMXQA;uKXZ_ga4tpO`d$H7O*n8YR(=gVA6=Q#0g z|LhI&8U0@s;ynVqP=f^j)WiLcP?G|DeS(91J(0feqm2x8fa2`9SWttmC`S?miOCH} zkLa;fpY(h|+bEwmgHZc0(&MD!c^7F4kSakHhuWB|G&xQ;1>fRSYmCXJ+vsh_CjanSg z)mx*bJi&59Un$OAqU*?$$H0ZW#sOBBTe6|mO<&{}+VeSsR=v@zd! zt!#Y;$7LO}v0|G#h_+zdW~?s8Zx|O)1B+ld>Rqm}@u`|TN;V1M@?xW6N7LG#ex_#K zFv2BqOJ5v|O-Hz1$ceVOa2L>TSKT^h@nmR2X=cZWt1u1w^Xi7P`)(EM$)&1VT=TZ( z+9|8=-!He|*H0Q)9mHrx@M9dx?o--P)DLI?%UVOW>c#REm+bJc80ooSMq4K6}h{~ ziCa(DAvxPp5q|v)E>-+`TuG<29(kk)RR@MdGsq?(9D5NT$|StDCCMpz{;WOi+`oR2 zaNH0p1sha4Ut4KcK3Y4gv-n)-2wQ)QO5_&i)7++Gobw92htR5rX-aS294gXGq8o92 zI45W7#$4N6DRre6ZZDXDKvr>8SD9axhQ$3YakJ*psmiR83;J(9R3E%MrGm41Uo ztZhSr5qHnFp|^hIe8IMMZb(jSuM52`$1b`T3AApsHiAII?imxPfg>-Bj3pJvTD_=!1W@l^gu zVVl1J02mEw5az#-p<#FqhdcS_s2jW@3>`Q6Oc!)M94 z_~ltt|2u2r_#>P^SW37#rqux;%J^i;$Or-n%>v9IJ{UpZIH0@Ey`q5dC*11@fe92E z0=}G-Y{yH^#eA|J&D}GIp=6NnGHtr10~dQpX#`2~#z65H#sfm7s4n z`BhsRt8vc|*LY2g&?DL0Ta?4Z+%`+oAz=ayYRlX);YV~WYdsAxM oQ&T#4XTh>}wsR-NZ)qqm;K}47JDw7`G@0y5TH~m|nq)iw4c>?9V*mgE diff --git a/CardHelpers.inc b/CardHelpers.inc index f568202..31985ca 100644 --- a/CardHelpers.inc +++ b/CardHelpers.inc @@ -210,4 +210,249 @@ IncrementTimer: adc a, 0 ld [hl], a dec hl - ret \ No newline at end of file + ret + +SetUpEdgeMasks: + ld hl, EdgeMasks + ld de, _VRAM + 8*16*16 ; 8 rows of 16 tiles each, 16 bytes per tile + ld bc, EdgeMasks.end - EdgeMasks + call CopyRange + + ld a, %00_00_00_00 + ld [rOBP1], a + ret + + +EdgeMasks: + dw `00000000, `00000000, `00000000, `00000000, `00000000, `00000000, `00000000, `00000000, + dw `00000003, `00000003, `00000003, `00000003, `00000003, `00000003, `00000003, `00000003, + dw `00000033, `00000033, `00000033, `00000033, `00000033, `00000033, `00000033, `00000033, + dw `00000333, `00000333, `00000333, `00000333, `00000333, `00000333, `00000333, `00000333, + dw `00003333, `00003333, `00003333, `00003333, `00003333, `00003333, `00003333, `00003333, + dw `00033333, `00033333, `00033333, `00033333, `00033333, `00033333, `00033333, `00033333, + dw `00333333, `00333333, `00333333, `00333333, `00333333, `00333333, `00333333, `00333333, + dw `03333333, `03333333, `03333333, `03333333, `03333333, `03333333, `03333333, `03333333, + dw `33333333, `33333333, `33333333, `33333333, `33333333, `33333333, `33333333, `33333333, +.end + +CleanUpOutsideSprites: + ld hl, MY_OAM + 10*4 + +.processSprite + ;hl points at an OAM entry's y value + ld a, 17 ; sprites are visible if y value >= 17 + cp a, [hl] + jp c, :+ ; skip if 17-y < 0 + ld [hl], 0 +: + ld a, 152 ; sprites are visible if y value is < 152 + cp a, [hl] + jp nc, :+ ; skip if 152 - y < 0 + ld [hl], 0 +: + inc hl ; look at x value + ld a, 8 ; sprites are visible if y value >= 8 + cp a, [hl] + jp c, :+ ; skip if 8-y <= 0 + ld [hl], 0 +: + ld a, 80 ; sprites are visible if x value < 80 + cp a, [hl] + jp nc, :+ + ld [hl], 0 +: + inc hl ; now pointing at tile ID + inc hl ; now pointing at attributes + inc hl ; now pointing at next OAM y value + ld a, l + cp a, $A0 + jp nz, .processSprite + + + + ; now we hide the overlapping edges + ld hl, MY_OAM + 10*4 + ld de, MY_OAM +.hideEdges + ld a, 0 ; check if y value is zero; if so, skip this sprite + cp a, [hl] + jp nz, :+ + inc hl ; x + inc hl ; tile id + inc hl ; attr + inc hl ; next y + ld a, l + cp a, $A0 + jp nz, .hideEdges + ret +: + inc hl ; check if x value is zero; if so, skip this + ld a, 0 + cp a, [hl] + jp nz, :+ + inc hl + inc hl + inc hl + ld a, l + cp a, $A0 + jp nz, .hideEdges + ret +: dec hl + + ;hl points at an OAM entry's y value + ld a, 24 ; sprites are clear if y value > 24 + cp a, [hl] + jp c, :+ ; skip if 24-y < 0 + + + + ; writing an edge mask on the TOP + ; else write an edge sprite + ld a, 16 ; y value should be 16 (covers top row) + ld [de], a ; y value in first slot + inc de ;write head moves forward to x + inc hl ; read head moves forward to x + ld a, [hl] ; x value matches the sprite we're mirroring + ld [de], a + + inc de ; write head moves forward to tile ID + inc hl ; read head moves forward to tile id + ld a, 8*16 + 8 + ld [de], a ; tile ID 1 for the hidden ones + + inc de ; write head moves forward to attribute + inc hl ; read head moves forward to attributes + ld a, [de] + set OAMB_PRI, a + set OAMB_PAL1, a + ld [de], a + + inc de ; point at next slot for both mask and source + inc hl + + ld a, l + cp a, $A0 + jp nz, .hideEdges + ret +: + ld a, 145 ; sprites don't overlap edge if y value is <= 145 + cp a, [hl] + jp nc, :+ ; skip if 145 - y >= 0 + + + + ; writing an edge mask on the BOTTOM + ld a, 144 ; y value should be 144 (covers bottom row) + ld [de], a ; y value in first slot + inc de ;write head moves forward to x + inc hl ; read head moves forward to x + ld a, [hl] ; x value matches the sprite we're mirroring + ld [de], a + + inc de ; write head moves forward to tile ID + inc hl ; read head moves forward to tile id + ld a, 8*16 + 8 + ld [de], a ; tile ID 1 for the hidden ones + + inc de ; write head moves forward to attribute + inc hl ; read head moves forward to attributes + ld a, [de] + set OAMB_PRI, a + set OAMB_PAL1, a + ld [de], a + + inc de + inc hl + + ld a, l + cp a, $A0 + jp nz, .hideEdges + ret +: + inc hl ; look at x value + ld a, 16 ; sprites dno't need coverage if x value > 16 + cp a, [hl] + jp c, :+ ; skip if 16-y < 0 + + + + + ; else write an edge mask on the LEFT + dec hl ; step back so we're looking at y + ld a, [hl] ; copy y over from sprite + ld [de], a + + inc hl ; point at x now + inc de ; point at x now + + ld a, 8 ; x value should be 8 (covers left edge) + ld [de], a ; x value + + inc de ; write head moves forward to tile ID + inc hl ; read head moves forward to tile id + ld a, 1 + ld [de], a ; tile ID 1 for the hidden ones + + inc de ; write head moves forward to attribute + inc hl ; read head moves forward to attributes + ld a, [de] + set OAMB_PRI, a + set OAMB_PAL1, a + ld [de], a + + inc de + inc hl + + ld a, l + cp a, $A0 + jp nz, .hideEdges + ret + +: + ld a, 72 ; sprites dont needd coverage if x value < 72 + cp a, [hl] + jp nc, :+ + + + + ; else write an edge mask on the RIGHT + dec hl ; step back so we're looking at y + ld a, [hl] ; copy y over from sprite + ld [de], a + + inc hl ; point at x now + inc de ; point at x now + + ld a, [hl] ; x value should match the sprite we're masking... + ld [de], a ; x value + + inc de ; write head moves forward to tile ID + inc hl ; read head moves forward to tile id + ; a currently holds the x coordinate + sub a, 72 ; subtract off 72 to get the amount that we're overlapping + add a, 8*16 ; add the offset for the mask sprites... + ld [de], a ; that makes the tile ID for the mask we want! + + inc de ; write head moves forward to attribute + inc hl ; read head moves forward to attributes + ld a, [de] + set OAMB_PRI, a + set OAMB_PAL1, a + ld [de], a + + inc de + inc hl + + ld a, l + cp a, $A0 + jp nz, .hideEdges + ret +: + inc hl ; now pointing at tile ID + inc hl ; now pointing at attributes + inc hl ; now pointing at next OAM y value + ld a, l + cp a, $A0 + jp nz, .hideEdges + ret + \ No newline at end of file diff --git a/CopyTilesSafe.inc b/CopyTilesSafe.inc index 37bbfb6..6d80a1a 100644 --- a/CopyTilesSafe.inc +++ b/CopyTilesSafe.inc @@ -39,6 +39,9 @@ CopyTilesToMapUnsafe: jp nz, CopyTilesToMap ret +; this function is used by practically all the card animations and all over the place. +; it uses every register. this was a bad idea and i should have just used the stack. +; if i were rewriting this, i would like to do it differently. BuildMetaSprite: ; takkes similar args as copytilestomapunsafe but builds several sprites ; instead. @@ -110,97 +113,13 @@ BuildMetaSprite: ret -BuildMetaSpriteHFlip: - ; takkes similar args as copytilestomapunsafe but builds several sprites - ; instead. - ; location of source tile map: hl - ; location in memory to write to: de - ; y and x in b and c - ; height and width in a & %11110000 and a & %00001111 ??? that's deranged - push hl - push de - pop hl ; want hl and de to be swapped just for the sake of consistent apis - pop de ; hl now holds the OAM location, de holds the sprite map - push af ; save to the stack so we can retrieve it for row-wise decrement - and a, $0F - ;sla a ;times 2 - ;sla a ; times 4 - ;sla a ; times 8 - ;add a, c - - ;ld a, b - ;adc a, 0 - ;ld b, a - pop af - push af - push bc ; hold onto the upper-left corner so we can update it each row -.writeRow - pop bc - pop af - push af - push bc ; refresh af and bc from their authoritative stack versions - and a, $0F ; take only the horizontal tile count - -.buildSprite - ; - ld [hl], b ; write y byte - inc hl - ld [hl], c ; write x byte - inc hl - push af ; save a before we use it for transferring de to hl - ld a, [de] - inc de ; move to the next sprite - ld [hl], a - inc hl - set OAMB_XFLIP, [hl] ; make sure xflip is turned on - inc hl ; skip the attributes byte - ; we're going to wait to get our a value (number of tiles left to draw in this - ; row) until after we've used a for changing c - - ;we've written a whole sprite. hl and de are in the right state, we need to - ; update a and bc. - - ; update bc - ld a, c - sub a, 8 - ld c, a - pop af ; get back the number of tiles to draw in this row - dec a - jp nz, .buildSprite ; if there are still tiles left to draw in this row, do it! - - ; otherwise we have no more tiles to write this row bc needs to be updated - - - pop bc - ld a, b - add a, 8 - ld b, a ; add 8 to the y coordinate - - pop af - sub a, $10 - push af - push bc - - and a, $F0 - ; stakc has bc and af, ready for repeating from the top - jp nz, .writeRow ; last numerical operation was and a, $F0 so checking if upper byte is zero - - pop bc - pop af - - ret - BuildMetaSpritePackedHflip: - ; takkes similar args as copytilestomapunsafe but builds several sprites - ; instead. - ; location of source tile map: hl - ; location in memory to write to: de - ; y and x in b and c - ; height and width in a & %11110000 and a & %00001111 ??? that's deranged + ; same as BuildMetaSprite but it skips blank tiles aand also flips the + ; whole thing horizontally push hl push de pop hl ; want hl and de to be swapped just for the sake of consistent apis @@ -275,12 +194,7 @@ BuildMetaSpritePackedHflip: BuildMetaSpritePacked: - ; takkes similar args as copytilestomapunsafe but builds several sprites - ; instead. - ; location of source tile map: hl - ; location in memory to write to: de - ; y and x in b and c - ; height and width in a & %11110000 and a & %00001111 ??? that's deranged + ; same args as BuildMetaSprite but this one skips blank sprites. push hl push de pop hl ; want hl and de to be swapped just for the sake of consistent apis diff --git a/KeyArtTiles.asm b/KeyArtTiles.asm index 1fa81ed..772c323 100644 --- a/KeyArtTiles.asm +++ b/KeyArtTiles.asm @@ -4,71 +4,75 @@ KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $ff,$00,$55,$aa,$ff,$00,$55,$aa,$ff,$00,$5f,$a7,$df,$3f,$7f,$ff - db $ff,$c0,$fd,$f2,$ff,$fc,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $ff,$00,$55,$aa,$ff,$00,$55,$aa,$ff,$00,$5d,$a2,$ff,$00,$d5,$aa - db $9f,$7f,$1f,$ff,$3f,$df,$1f,$ff,$9f,$7f,$1f,$ff,$3f,$ff,$3f,$ff - db $ff,$7f,$7f,$ff,$ff,$7f,$7f,$ff,$ff,$7f,$7f,$ff,$ff,$7f,$ff,$ff - db $ab,$55,$45,$bb,$ab,$55,$11,$ef,$ab,$55,$45,$bb,$ab,$55,$11,$ef - db $ab,$55,$57,$ab,$ab,$57,$53,$af,$ab,$57,$57,$ab,$ab,$57,$57,$ab - db $eb,$17,$57,$ab,$af,$57,$57,$af,$af,$57,$57,$af,$af,$57,$57,$af - db $ef,$17,$57,$af,$bf,$4f,$5f,$af,$ef,$1f,$5f,$af,$bf,$4f,$5f,$af - db $ea,$15,$55,$aa,$aa,$55,$55,$aa,$ae,$51,$55,$aa,$aa,$d5,$d5,$aa - db $ee,$91,$d5,$aa,$bb,$c4,$d5,$aa,$ee,$91,$d5,$ea,$fb,$c4,$d5,$ea + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00 + db $ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$07,$ff,$07,$ff,$07,$ff,$07 db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $80,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $ff,$3f,$7f,$bf,$ff,$3f,$7f,$bf,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $fe,$c1,$d5,$ea,$fb,$c4,$d5,$ea,$ff,$e0,$f5,$ea,$ff,$e0,$f5,$ea - db $ff,$e0,$f5,$ea,$ff,$e0,$f5,$fa,$ff,$f0,$fd,$f2,$ff,$fc,$ff,$ff - db $ff,$0f,$5f,$af,$bf,$4f,$5f,$bf,$ff,$1f,$5f,$bf,$bf,$5f,$5f,$bf - db $e8,$d7,$c0,$ff,$e2,$dd,$c0,$ff,$ea,$d5,$e0,$ff,$e2,$fd,$e0,$ff - db $ea,$f5,$e0,$ff,$ea,$f5,$e0,$ff,$fa,$f5,$f0,$ff,$fa,$f5,$f0,$ff - db $fa,$f5,$f4,$fb,$fa,$f5,$f8,$ff,$fa,$fd,$fc,$fb,$fa,$fd,$f9,$fe - db $fa,$fd,$fc,$fb,$fe,$fd,$fd,$fe,$fe,$fd,$fd,$fe,$fe,$fd,$fd,$fe - db $fe,$ff,$ff,$fe,$fe,$ff,$ff,$fe,$fe,$ff,$ff,$fe,$fe,$ff,$ff,$ff - db $bf,$7f,$3f,$ff,$3f,$ff,$3f,$ff,$bf,$7f,$3f,$ff,$7f,$ff,$7f,$ff - db $88,$f7,$80,$ff,$a0,$df,$80,$ff,$88,$f7,$80,$ff,$e2,$dd,$c0,$ff - db $80,$7f,$00,$ff,$03,$ff,$0f,$ff,$0f,$ff,$1f,$ff,$1f,$ff,$1f,$ff - db $80,$7f,$00,$ff,$00,$ff,$00,$ff,$08,$f7,$00,$ff,$00,$ff,$80,$ff - db $80,$7f,$f0,$ff,$fc,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff - db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff - db $80,$7f,$00,$ff,$00,$ff,$00,$ff,$08,$f7,$00,$ff,$00,$ff,$00,$ff - db $88,$77,$00,$ff,$20,$df,$00,$ff,$88,$77,$00,$ff,$22,$dd,$00,$ff - db $a8,$57,$00,$ff,$22,$dd,$00,$ff,$aa,$55,$00,$ff,$22,$dd,$00,$ff - db $aa,$55,$00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff,$aa,$55,$00,$ff - db $aa,$55,$44,$bb,$aa,$55,$10,$ef,$aa,$55,$44,$bb,$aa,$55,$01,$fe - db $aa,$55,$44,$bb,$aa,$55,$11,$ee,$aa,$55,$45,$ba,$aa,$55,$11,$ee - db $aa,$55,$55,$aa,$aa,$55,$51,$ae,$aa,$55,$55,$aa,$aa,$55,$55,$aa - db $ea,$15,$55,$aa,$aa,$55,$55,$aa,$ae,$51,$55,$aa,$aa,$55,$55,$aa - db $ee,$11,$55,$aa,$bb,$44,$55,$aa,$ee,$11,$55,$aa,$bb,$44,$55,$aa - db $fe,$01,$55,$aa,$bb,$44,$55,$aa,$ff,$00,$55,$aa,$bf,$40,$55,$aa - db $ff,$ff,$ff,$fe,$fe,$fe,$fe,$fc,$fc,$fc,$fd,$fc,$f8,$f8,$ff,$ff - db $7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$3f,$3f,$ff,$ff - db $ff,$ff,$f8,$f8,$fd,$fc,$fc,$fc,$fe,$fc,$fe,$fe,$ff,$fe,$ff,$ff - db $ff,$ff,$00,$00,$f5,$e4,$e4,$e4,$ee,$e4,$4e,$4c,$5e,$4e,$3f,$1e - db $ff,$ff,$00,$00,$fb,$f2,$f3,$f2,$f7,$f2,$f7,$f2,$67,$66,$6f,$66 - db $ff,$ff,$3f,$3f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f,$7f - db $9f,$1e,$5f,$0f,$4f,$4f,$ef,$e7,$e7,$e7,$f7,$e7,$00,$00,$ff,$ff - db $6f,$66,$6f,$6e,$0f,$0e,$9f,$0e,$9f,$9e,$9f,$9e,$00,$00,$ff,$ff - db $ff,$ff,$ff,$ff,$f1,$ff,$ce,$ff,$de,$ff,$de,$ff,$be,$ff,$be,$ff - db $be,$ff,$be,$ff,$be,$ff,$be,$ff,$a0,$ff,$00,$ff,$01,$ff,$1f,$ff + db $ff,$00,$ff,$00,$ff,$80,$ff,$80,$ff,$c0,$ff,$f8,$ff,$ff,$ff,$ff + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$04 + db $ff,$00,$ff,$00,$ff,$07,$ff,$07,$ff,$07,$ff,$07,$ff,$07,$ff,$0f + db $ff,$0f,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$80,$ff,$80,$ff,$c0,$ff,$f0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$c0,$ff,$f0,$ff,$f8 + db $ff,$06,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$07,$ff,$0f,$ff,$3f + db $ff,$3f,$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,$fe,$fe + db $ff,$ff,$fe,$fe,$fd,$fd,$ea,$ea,$d4,$d4,$88,$88,$50,$50,$a0,$a0 + db $e0,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $07,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$7f,$7f,$1f,$1f,$07,$07,$03,$03,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f + db $fe,$fe,$fd,$fd,$fa,$fa,$f5,$f5,$ea,$ea,$d5,$d5,$ea,$ea,$d5,$d5 + db $a0,$a0,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$00,$00,$00,$00 + db $1f,$1f,$1f,$1f,$0f,$0f,$07,$07,$07,$07,$03,$03,$03,$03,$01,$01 + db $dc,$dc,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa,$54,$54,$aa,$aa + db $01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $dc,$dc,$aa,$aa,$54,$54,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01 + db $ee,$ee,$d5,$d5,$ea,$ea,$f5,$f5,$ea,$ea,$f5,$f5,$fa,$fa,$fd,$fd + db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$00,$00,$80,$80,$40,$40 + db $01,$01,$03,$03,$03,$03,$07,$07,$07,$07,$0f,$0f,$1f,$1f,$1f,$1f + db $ff,$ff,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $40,$40,$80,$80,$50,$50,$e8,$e8,$f4,$f4,$f8,$f8,$ff,$ff,$ff,$ff + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff + db $00,$00,$00,$00,$00,$00,$03,$03,$07,$07,$1f,$1f,$7f,$7f,$ff,$ff + db $3f,$3f,$7f,$7f,$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,$0f + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$ff,$f8,$ff,$f0,$ff,$f0 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$e7,$ff,$00,$ff,$00,$ff,$00,$ff,$00 + db $ff,$07,$ff,$03,$ff,$03,$ff,$02,$ff,$00,$ff,$00,$ff,$00,$ff,$00 + db $ff,$ff,$ff,$ff,$ff,$cf,$ff,$07,$ff,$03,$ff,$01,$ff,$00,$ff,$00 + db $ff,$ff,$f8,$f8,$fd,$fd,$fc,$fc,$fe,$fe,$fe,$fe,$ff,$1f,$ff,$0f + db $ff,$ff,$00,$00,$f6,$f6,$e6,$e6,$ef,$ef,$4f,$4f,$5f,$5f,$1f,$1f + db $ff,$ff,$00,$00,$fb,$fb,$73,$73,$77,$77,$27,$27,$af,$af,$8f,$8f + db $ff,$ff,$1f,$1f,$3f,$3f,$3f,$3f,$3f,$3f,$3f,$3e,$3f,$38,$3f,$38 + db $ff,$e0,$ff,$e0,$ff,$e0,$ff,$e0,$ff,$80,$ff,$00,$ff,$00,$ff,$00 + db $ff,$0f,$ff,$0f,$ff,$0f,$fe,$0e,$fe,$0e,$fc,$0c,$f8,$08,$ff,$0f + db $bf,$bf,$1f,$1f,$5f,$5f,$4f,$4f,$ef,$ef,$e6,$e6,$00,$00,$ff,$ff + db $df,$df,$8f,$8f,$af,$af,$27,$27,$77,$77,$73,$73,$00,$00,$ff,$ff + db $3f,$38,$3f,$38,$3f,$30,$3f,$30,$3f,$30,$3f,$30,$1f,$10,$ff,$f0 + db $1f,$1f,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$ff,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $fd,$fd,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $dd,$dd,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $55,$55,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $11,$11,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 KeyArt: - db $36, $36, $36, $36, $36, $36, $36, $36 - db $37, $37, $33, $27, $35, $34, $37, $37 - db $38, $38, $1e, $26, $26, $32, $38, $38 - db $39, $39, $31, $26, $26, $2c, $39, $39 - db $3a, $3a, $1f, $26, $26, $2d, $3a, $3a - db $3b, $3b, $26, $26, $26, $2e, $3b, $3b - db $3c, $20, $49, $26, $26, $2f, $3c, $3c - db $3d, $21, $4a, $26, $26, $30, $3d, $3d - db $3e, $22, $26, $26, $26, $26, $24, $3e - db $3f, $23, $26, $26, $26, $26, $25, $3f - db $40, $2b, $26, $26, $26, $26, $29, $40 - db $1b, $28, $26, $26, $26, $26, $2a, $1d - db $26, $26, $26, $26, $26, $26, $26, $1c - db $26, $26, $26, $26, $26, $26, $26, $26 - db $26, $26, $43, $44, $45, $46, $26, $26 - db $26, $26, $41, $47, $48, $42, $26, $26 + db $1b, $1b, $1c, $1d, $1d, $1e, $1b, $1b + db $1f, $20, $21, $1d, $1d, $1d, $22, $23 + db $24, $25, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $26, $27, $28, $29, $2a, $2b, $1d + db $1d, $2c, $2d, $1a, $1a, $1a, $2e, $1d + db $1d, $2f, $1a, $1a, $1a, $1a, $30, $1d + db $1d, $31, $1a, $1a, $1a, $1a, $32, $1d + db $1d, $33, $34, $1a, $1a, $1a, $35, $1d + db $1d, $36, $37, $38, $38, $39, $3a, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $1d, $1d, $1d, $1d, $1d, $1d, $1d, $1d + db $3b, $1d, $1d, $1d, $1d, $1d, $3c, $3d + db $3e, $3f, $40, $41, $42, $43, $44, $1b + db $1b, $1b, $45, $46, $47, $48, $1b, $1b diff --git a/ScreenCardBrowse.inc b/ScreenCardBrowse.inc index 9302d76..ecdfe5e 100644 --- a/ScreenCardBrowse.inc +++ b/ScreenCardBrowse.inc @@ -66,12 +66,12 @@ CardBrowseUpdate: ld a, [vSelectedCardIndex] ld hl, rMYBTNP - bit 3, [hl] - jp z, :+ ; skip the following code if down is not pressed + bit 0, [hl] + jp z, :+ ; skip the following code if left is not pressed inc a : - bit 2, [hl] - jp z, :+ ; skip the following code if up is not pressed + bit 1, [hl] + jp z, :+ ; skip the following code if right is not pressed dec a : ld [vSelectedCardIndex], a diff --git a/SpriteTiles.asm b/SpriteTiles.asm index e79f3e0..188115f 100644 --- a/SpriteTiles.asm +++ b/SpriteTiles.asm @@ -4,31 +4,70 @@ SpriteTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$20,$00,$50,$20,$88,$00,$50,$00,$20,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$20,$20,$50,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$00,$f0,$00,$0c,$f0,$f0,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$01,$00,$01,$00,$03,$00,$03,$00,$07,$00,$00,$00 - db $80,$7e,$80,$7f,$80,$7f,$3a,$c1,$62,$81,$c2,$01,$82,$01,$02,$01 - db $00,$00,$00,$00,$01,$00,$0f,$00,$38,$07,$0f,$00,$01,$00,$00,$00 - db $80,$7f,$00,$fe,$00,$f8,$00,$f0,$00,$f0,$00,$f0,$80,$70,$00,$78 - db $00,$00,$00,$00,$00,$00,$06,$00,$03,$00,$03,$00,$01,$00,$01,$00 - db $01,$00,$01,$00,$01,$00,$03,$00,$c2,$01,$62,$81,$32,$c1,$98,$67 - db $80,$00,$80,$00,$80,$00,$80,$00,$c3,$00,$4f,$80,$59,$86,$23,$dc - db $00,$00,$00,$00,$00,$00,$c0,$00,$80,$00,$80,$00,$00,$00,$00,$00 - db $02,$fc,$00,$7e,$01,$1e,$01,$0e,$00,$0f,$01,$0e,$03,$0c,$00,$1c - db $04,$78,$06,$f8,$02,$fc,$03,$fc,$59,$86,$4d,$82,$47,$80,$41,$80 - db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$00,$80,$00,$c0,$00 - db $40,$80,$40,$80,$40,$80,$40,$80,$40,$80,$c0,$00,$80,$00,$80,$00 - db $80,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $01,$00,$01,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - db $02,$01,$02,$01,$02,$01,$02,$01,$03,$00,$01,$00,$01,$00,$01,$00 + db $00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff,$00,$ff + db $00,$00,$03,$03,$0f,$0f,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$1f,$1f + db $00,$00,$f0,$f0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$3e,$3e,$ff,$ff,$f7,$ff,$d5,$ff,$ea,$ff,$d1,$ff,$ff,$ff + db $03,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $cf,$ff,$e7,$ff,$73,$7f,$19,$1f,$0f,$0f,$0e,$0f,$06,$07,$06,$05 + db $06,$05,$06,$05,$07,$04,$07,$04,$03,$03,$01,$01,$00,$00,$00,$00 + db $f2,$7e,$fe,$fe,$ee,$ee,$c6,$c6,$e0,$e0,$f0,$f0,$ff,$ff,$01,$01 + db $00,$00,$00,$00,$fc,$fc,$58,$f8,$b0,$f0,$60,$e0,$80,$80,$00,$00 + db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fa,$fa,$fd,$3d,$fd,$1f,$fb,$1f + db $80,$80,$e0,$e0,$e0,$e0,$e0,$e0,$c0,$c0,$80,$80,$00,$00,$00,$00 + db $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$f8,$f8 + db $fe,$fe,$e3,$ff,$61,$ff,$60,$ff,$30,$ff,$b3,$ff,$bf,$ff,$bf,$ff + db $00,$00,$80,$80,$c0,$c0,$40,$c0,$e0,$e0,$e0,$e0,$c0,$c0,$c0,$c0 + db $5f,$7f,$5f,$7f,$5f,$73,$bc,$e4,$f0,$c0,$e0,$c0,$c0,$80,$80,$80 + db $80,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + db $7f,$41,$7f,$41,$7f,$40,$3f,$00,$3f,$31,$1f,$13,$1e,$12,$00,$00 + db $01,$01,$03,$03,$0f,$0f,$0e,$0e,$00,$00,$03,$03,$0f,$0e,$1f,$10 + db $ff,$ff,$f2,$f2,$02,$02,$00,$00,$00,$00,$ff,$ff,$ff,$06,$ff,$00 + db $ff,$ff,$bb,$ba,$3b,$3a,$1f,$1f,$3c,$34,$7f,$61,$df,$d0,$ef,$68 + db $ff,$e0,$ff,$00,$ff,$00,$ff,$c0,$3f,$3e,$07,$07,$81,$81,$01,$01 + db $1f,$10,$1f,$10,$1f,$18,$0f,$0f,$03,$03,$00,$00,$00,$00,$00,$00 + db $ff,$00,$ff,$00,$ff,$30,$ff,$fc,$cf,$cd,$0f,$0f,$07,$07,$0f,$0f + db $f2,$32,$f0,$00,$fa,$0a,$fe,$3e,$fe,$3e,$fe,$fe,$fe,$fe,$fc,$fc + db $07,$07,$0f,$0f,$07,$07,$07,$07,$0f,$0f,$0f,$0d,$07,$04,$03,$02 + db $fc,$fc,$fc,$fc,$fc,$fc,$fc,$fc,$fd,$fd,$f9,$99,$f1,$11,$e0,$00 + db $00,$00,$01,$01,$01,$01,$03,$03,$46,$46,$c0,$c0,$87,$87,$1f,$1f + db $00,$00,$80,$80,$df,$df,$fb,$ff,$73,$7f,$e7,$ff,$cf,$ff,$df,$ff + db $ff,$02,$ff,$04,$f3,$0c,$f9,$0f,$fc,$3f,$fe,$ff,$ff,$ff,$f8,$f8 + db $f0,$f0,$e0,$e0,$c0,$c0,$00,$00,$20,$20,$60,$60,$00,$00,$00,$00 + db $ff,$63,$ff,$03,$ff,$07,$ff,$0f,$fb,$8f,$76,$fe,$fc,$fc,$f8,$f8 + db $78,$78,$38,$38,$38,$38,$20,$20,$20,$20,$30,$30,$18,$18,$08,$08 + db $0c,$0c,$ff,$7f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $ff,$ff,$fc,$fc,$e0,$e0,$c0,$c0,$70,$70,$18,$18,$00,$00,$00,$00 + db $00,$00,$0f,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $3f,$00,$ff,$00,$ff,$f0,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $fc,$00,$ff,$00,$ff,$01,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f1 + db $03,$03,$00,$00,$e0,$e0,$07,$07,$1f,$1f,$3f,$31,$7f,$60,$ff,$e0 + db $fe,$fe,$00,$00,$00,$00,$08,$08,$08,$08,$9c,$9c,$fe,$fe,$ff,$07 + db $ff,$e4,$7f,$7f,$38,$38,$10,$10,$00,$00,$00,$00,$00,$00,$00,$00 + db $ff,$03,$ff,$c3,$fe,$fe,$3c,$3c,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$18,$18,$10,$10,$c0,$c0,$8f,$8f + db $00,$00,$00,$00,$03,$03,$0e,$0e,$fc,$fc,$f8,$f8,$fe,$fe,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$ff,$ff,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$e0,$e0,$ff,$ff,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$f3,$f3,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$f0,$f0,$f8,$f8,$d8,$d8,$c0,$c0,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$ff,$ff,$00,$00 + db $00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$07,$07,$07,$07,$00,$00 + db $00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff + db $00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$e0,$e0 + db $00,$00,$e0,$e0,$fc,$fc,$fc,$fc,$f8,$f8,$e0,$e0,$00,$00,$00,$00 + db $f8,$f8,$00,$00,$00,$00,$00,$00,$20,$20,$20,$20,$60,$60,$c0,$c0 + db $60,$60,$60,$60,$60,$60,$c0,$c0,$00,$00,$00,$00,$00,$00,$00,$00 + db $00,$00,$00,$00,$06,$06,$02,$02,$06,$06,$0c,$0c,$18,$18,$00,$00 Sprites: - db $09, $0a, $0b, $0c - db $07, $08, $0d, $04 - db $05, $06, $0e, $0f - db $00, $13, $10, $00 - db $00, $12, $11, $00 + db $02, $03, $04, $09, $12, $00, $1c, $1d, $24, $25, $26, $22, $34, $35, $36 + db $05, $06, $0a, $0b, $00, $13, $14, $15, $16, $1e, $20, $23, $37, $38, $00 + db $00, $07, $08, $0d, $00, $17, $18, $19, $00, $1f, $21, $2b, $00, $00, $00 + db $00, $00, $0c, $0e, $0f, $00, $1a, $1b, $00, $00, $00, $27, $28, $00, $00 + db $00, $00, $00, $10, $11, $00, $00, $00, $00, $00, $00, $29, $2a, $39, $00 + db $00, $33, $2c, $00, $00, $2d, $2e, $2f, $00, $00, $32, $30, $31, $00, $00 diff --git a/misc.py b/misc.py index 7998537..9720805 100644 --- a/misc.py +++ b/misc.py @@ -28,3 +28,17 @@ def splitn(n, the_string): for d in out: print(d) return out + +def transpose_gb_tiles(the_string): + out = [[] for _ in range(max(map(lambda l: len(l.split(", ")), the_string.split("\n"))))] + + for l in the_string.split("\n"): + sub = list(l.strip()[3:].split(", ")) + for i, byte in enumerate(sub): + out[i].append(byte) + + for d in out: + print("db " + ", ".join(d)) + + return out + diff --git a/source.zip b/source.zip index 7f37dbdb71dc50cf83cd0fc286d127fdc83f0577..a935c13c7bd5dd8fc01eded3a25b32cf3a2ab2ba 100644 GIT binary patch delta 37001 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 delta 6759 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 B7bO4y