summaryrefslogtreecommitdiff
path: root/home
diff options
context:
space:
mode:
authorTauwasser <Tauwasser@tauwasser.eu>2018-05-31 14:45:54 +0200
committerTauwasser <Tauwasser@tauwasser.eu>2018-05-31 14:45:54 +0200
commit8a1fcb95a5db9c70746ad3171e9c18614e4138c7 (patch)
treea037edfbdaaa7513bed07aa781f9c6156a10b026 /home
parent83bf91908554ae1ec1f6d287679e58987ed3bc0a (diff)
home/pokemon: disassemble Pokémon sprite uncompression routine
Signed-off-by: Tauwasser <Tauwasser@tauwasser.eu>
Diffstat (limited to 'home')
-rw-r--r--home/pokemon.asm57
1 files changed, 56 insertions, 1 deletions
diff --git a/home/pokemon.asm b/home/pokemon.asm
index d38e1a0..9b1eec2 100644
--- a/home/pokemon.asm
+++ b/home/pokemon.asm
@@ -43,9 +43,64 @@ GetMonHeader:: ; 3a4b (0:3a4b)
pop bc
ret
-SECTION "3B3F", ROM0[$3b3f]
+SECTION "3AED", ROM0[$3aed]
+; Uncompresses the front or back sprite of the specified mon
+; assumes the corresponding mon header is already loaded
+; hl contains offset to sprite pointer ($b for front or $d for back)
+UncompressMonSprite:: ; 3aed (0:3aed)
+ ld a, [wMonDexIndex]
+ and a
+ ret z
+ ld bc, wMonHeader
+ add hl, bc
+ cp DEX_ANNON
+ jr z, .uncompress_annon
+ ld a, [hli]
+ ld [wSpriteInputPtr], a
+ ld a, [hl]
+ ld [wSpriteInputPtr + 1], a
+ ld hl, MonSpriteBankList
+ ld a, [wMonDexIndex]
+ ld b, a
+ ; get Pokémon picture bank pointer from list
+.loop
+ ld a, BANK(MonSpriteBankList)
+ call GetFarByte
+ inc hl
+ inc hl
+ cp b
+ jr c, .loop
+ dec hl
+ ld a, BANK(MonSpriteBankList)
+ call GetFarByte
+ jp UncompressSpriteData
+.uncompress_annon
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wAnnonID]
+ dec a
+ add a
+ add a
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, BANK(AnnonPicPtrs)
+ call GetFarByte
+ ld [wSpriteInputPtr], a
+ inc hl
+ ld a, BANK(AnnonPicPtrs)
+ call GetFarByte
+ ld [wSpriteInputPtr + 1], a
+ ld a, BANK(AnnonPics)
+ jp UncompressSpriteData
+
+; Uncompress Pokémon Front Srite for
+; mon currently loaded in wMonHeader
+; to 0x9000
; de: destination location
+; returns the sprite dimension in c
LoadMonFrontSprite:: ; 3b3f
push de
ld hl, wMonHFrontSprite - wMonHeader