summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--battle/core.asm8
-rw-r--r--constants/sprite_constants.asm2
-rwxr-xr-xdata/sprite_engine.asm3
-rwxr-xr-xengine/compose_mail.asm65
-rwxr-xr-xengine/crystal_intro.asm40
-rwxr-xr-xengine/intro_menu.asm6
-rwxr-xr-xengine/learn.asm2
-rwxr-xr-xengine/mon_icons.asm450
-rwxr-xr-xengine/namingscreen.asm46
-rwxr-xr-xengine/overworld.asm2
-rwxr-xr-xengine/pokegear.asm5
-rw-r--r--engine/predef.asm2
-rwxr-xr-xengine/sprite_anims.asm345
-rwxr-xr-xengine/sprites.asm527
-rwxr-xr-xengine/startmenu.asm40
-rwxr-xr-xengine/stats_screen.asm2
-rwxr-xr-xevent/field_moves.asm10
-rw-r--r--event/move_deleter.asm2
-rw-r--r--home.asm8
-rw-r--r--main.asm64
-rw-r--r--misc/mobile_40.asm34
-rw-r--r--misc/mobile_42.asm18
-rwxr-xr-xmisc/mobile_46.asm4
-rw-r--r--wram.asm18
24 files changed, 908 insertions, 795 deletions
diff --git a/battle/core.asm b/battle/core.asm
index e50537dfd..1822acc47 100644
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -5339,7 +5339,7 @@ BattleMenuPKMN_Loop:
call Function3d329
jr c, .Cancel
.loop
- callba Function8ea4a
+ callba FreezeMonIcons
call .GetMenu
jr c, .PressedB
call Function1bee
@@ -5674,7 +5674,7 @@ MoveSelectionScreen: ; 3e4bc
ld [MenuSelection2], a
ld a, $1
ld [wcfaa], a
- ld a, [wd0eb]
+ ld a, [wNumMoves]
inc a
ld [wcfa3], a
ld a, $1
@@ -5812,7 +5812,7 @@ MoveSelectionScreen: ; 3e4bc
ld a, [MenuSelection2]
and a
jp nz, .menu_loop
- ld a, [wd0eb]
+ ld a, [wNumMoves]
inc a
ld [MenuSelection2], a
jp .menu_loop
@@ -5821,7 +5821,7 @@ MoveSelectionScreen: ; 3e4bc
.pressed_down ; 3e62e
ld a, [MenuSelection2]
ld b, a
- ld a, [wd0eb]
+ ld a, [wNumMoves]
rept 2
inc a
endr
diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm
index b87ef330a..13070d89a 100644
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -358,7 +358,7 @@ MAX_OUTDOOR_SPRITES EQU 23
const SPRITEANIMSTRUCT_XOFFSET
const SPRITEANIMSTRUCT_YOFFSET
const SPRITEANIMSTRUCT_DURATION
- const SPRITEANIMSTRUCT_09
+ const SPRITEANIMSTRUCT_DURATIONOFFSET
const SPRITEANIMSTRUCT_FRAME
const SPRITEANIMSTRUCT_0B
const SPRITEANIMSTRUCT_0C
diff --git a/data/sprite_engine.asm b/data/sprite_engine.asm
index a2024808a..3a6c13d4f 100755
--- a/data/sprite_engine.asm
+++ b/data/sprite_engine.asm
@@ -67,7 +67,7 @@ Unknown_8d6e6: ; 8d6e6
dw Unknown_8d948 ; 41
; 8d76a
-Unknown_8d76a: db $00, $20
+Unknown_8d76a: db $00, $20 ; lowest 6 bits of second byte are duration, upper two bits are flags
db -1
Unknown_8d76d: db $00, $08
db $01, $08
@@ -1569,3 +1569,4 @@ Unknown_8e706: ; Broken 2bpp pointers
dbbw $10, $39, $672a ; 16-tile 2bpp at 39:672a (empty data)
dbbw $10, $24, $672a ; 16-tile 2bpp at 24:672a (inside Function926f7)
dbbw $10, $21, $672a ; 16-tile 2bpp at 21:672a (inside Function8671c)
+; 8e72a (23:672a)
diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm
index e02feb2a1..1e6318a3e 100755
--- a/engine/compose_mail.asm
+++ b/engine/compose_mail.asm
@@ -34,7 +34,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
ld a, BANK(.MailIcon)
call FarCopyBytes
xor a
- ld hl, wc300
+ ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], a
@@ -43,7 +43,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
ld a, SPRITE_ANIM_INDEX_00
call _InitSpriteAnimStruct
- ld hl, $2
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], $0
call .InitCharset
@@ -67,6 +67,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
add hl, de
ld [hl], $4e
ret
+
; 11ef4 (4:5ef4)
.MailIcon: ; 11ef4
@@ -77,6 +78,7 @@ INCBIN "gfx/icon/mail2.2bpp"
ld a, $21
ld [wc6d3], a
ret
+
; 11f7a (4:5f7a)
.Dummy: ; dummied out
@@ -128,6 +130,7 @@ INCBIN "gfx/icon/mail2.2bpp"
call DelayFrame
and a
ret
+
.exit_mail
callab ClearSpriteAnims
call ClearSprites
@@ -179,10 +182,10 @@ endr
ld [wc6d5], a
ld a, b
ld [wc6d6], a
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_01
add hl, bc
ld a, [hl]
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld [hl], a
ld hl, wJumptableIndex
@@ -232,10 +235,10 @@ endr
ld c, [hl]
inc hl
ld b, [hl]
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $9
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $5
ret
@@ -268,44 +271,47 @@ endr
ld de, MailEntry_Uppercase
call .PlaceMailCharset
ret
+
.switch_to_lowercase
ld de, MailEntry_Lowercase
call .PlaceMailCharset
ret
+; called from engine/sprite_anims.asm
Function120c1: ; 120c1 (4:60c1)
call Function1210c
- ld hl, SpriteAnim1Sprite0d - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
ld e, a
swap e
- ld hl, SpriteAnim1YOffset - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], e
cp $5
ld de, Unknown_120f8
- ld a, $0
+ ld a, 0
jr nz, .asm_120df
ld de, Unknown_12102
- ld a, $1
+ ld a, 1
.asm_120df
- ld hl, SpriteAnim1Sprite0e - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
add [hl]
- ld hl, SpriteAnim1Sprite01 - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_01
add hl, bc
ld [hl], a
- ld hl, SpriteAnim1Sprite0c - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld l, [hl]
- ld h, SpriteAnim1Index - SpriteAnim1
+ ld h, 0
add hl, de
ld a, [hl]
- ld hl, SpriteAnim1XOffset - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
+
; 120f8 (4:60f8)
Unknown_120f8: ; 120f8
@@ -329,20 +335,23 @@ Function1210c: ; 1210c (4:610c)
and D_RIGHT
jr nz, .right
ret
+
.right
call Function1218b
and a
jr nz, .asm_12138
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $9
jr nc, .asm_12135
inc [hl]
ret
+
.asm_12135
ld [hl], $0
ret
+
.asm_12138
cp $3
jr nz, .asm_1213d
@@ -351,24 +360,27 @@ Function1210c: ; 1210c (4:610c)
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
+
.left
call Function1218b
and a
jr nz, .asm_12159
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
jr z, .asm_12156
dec [hl]
ret
+
.asm_12156
ld [hl], $9
ret
+
.asm_12159
cp $1
jr nz, .asm_1215f
@@ -380,29 +392,33 @@ endr
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
+
.down
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $5
jr nc, .asm_12175
inc [hl]
ret
+
.asm_12175
ld [hl], $0
ret
+
.up
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
and a
jr z, .asm_12182
dec [hl]
ret
+
.asm_12182
ld [hl], $5
ret
@@ -414,12 +430,12 @@ Function12185: ; 12185 (4:6185)
ld b, [hl]
Function1218b: ; 1218b (4:618b)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $5
jr nz, .asm_121aa
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $3
@@ -428,12 +444,15 @@ Function1218b: ; 1218b (4:618b)
jr c, .asm_121a7
ld a, $3
ret
+
.asm_121a4
ld a, $1
ret
+
.asm_121a7
ld a, $2
ret
+
.asm_121aa
xor a
ret
diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm
index 0738464b4..c82d0544b 100755
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -213,7 +213,7 @@ PlaceGameFreakPresents_3: ; e46dd
GameFreakLogoJumper: ; e46ed (39:46ed)
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld e, [hl]
ld d, 0
@@ -234,19 +234,19 @@ GameFreakLogoScenes: ; e46fd (39:46fd)
dw GameFreakLogoScene5
GameFreakLogoScene1: ; e4707 (39:4707)
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
ret
GameFreakLogoScene2: ; e470d (39:470d)
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
jr z, .asm_e4747
ld d, a
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
and $3f
@@ -256,16 +256,16 @@ GameFreakLogoScene2: ; e470d (39:470d)
.asm_e4723
ld e, a
callba Functionce765
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], e
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
dec [hl]
and $1f
ret nz
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
sub $30
@@ -273,11 +273,12 @@ GameFreakLogoScene2: ; e470d (39:470d)
ld de, SFX_DITTO_BOUNCE
call PlaySFX
ret
+
.asm_e4747
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $0
ld de, SFX_DITTO_POP_UP
@@ -285,18 +286,19 @@ GameFreakLogoScene2: ; e470d (39:470d)
ret
GameFreakLogoScene3: ; e4759 (39:4759)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $20
jr nc, .asm_e4764
inc [hl]
ret
+
.asm_e4764
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $0
ld de, SFX_DITTO_TRANSFORM
@@ -304,7 +306,7 @@ GameFreakLogoScene3: ; e4759 (39:4759)
ret
GameFreakLogoScene4: ; e4776 (39:4776)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $40
@@ -331,12 +333,12 @@ endr
ld a, $1
ld [hCGBPalUpdate], a
ret
+
.asm_e47a3
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
call PlaceGameFreakPresents_AdvanceIndex
-
GameFreakLogoScene5: ; e47ab (39:47ab)
ret
; e47ac (39:47ac)
@@ -810,7 +812,7 @@ IntroScene8: ; e4bd3 (39:4bd3)
.finish
ld de, SFX_INTRO_SUICUNE_2
call PlaySFX
- callba Function8d03d
+ callba DeinitializeAllSprites
call NextIntroScene
ret
@@ -1101,7 +1103,7 @@ IntroScene14: ; e4dfa (39:4dfa)
ret
.asm_e4e2c
- callba Function8d03d
+ callba DeinitializeAllSprites
ret
.asm_e4e33
@@ -1313,7 +1315,7 @@ IntroScene19: ; e4f7e (39:4f7e)
ld a, $90
ld [hWY], a
callba ClearSpriteAnims
- ld hl, wc300
+ ld hl, wSpriteAnimDict
xor a
ld [hli], a
ld [hl], $7f
@@ -1394,7 +1396,7 @@ IntroScene22: ; e5072 (39:5072)
jr nc, .done
ret
.done
- callba Function8d03d
+ callba DeinitializeAllSprites
call NextIntroScene
ret
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index 9423b13c1..140233288 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -450,9 +450,9 @@ ConfirmContinue: ; 5e34
call DelayFrame
call GetJoypad
ld hl, hJoyPressed
- bit 0, [hl]
+ bit A_BUTTON_F, [hl]
jr nz, .PressA
- bit 1, [hl]
+ bit B_BUTTON_F, [hl]
jr z, .loop
scf
ret
@@ -1336,7 +1336,7 @@ Function639b: ; unreferenced
and $3
ret nz
ld bc, SpriteAnim10
- ld hl, SpriteAnim10FrameIndex - SpriteAnim10
+ ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc ; over-the-top compicated way to load wc3ae into hl
ld l, [hl]
ld h, 0
diff --git a/engine/learn.asm b/engine/learn.asm
index 260d50052..f6df570e7 100755
--- a/engine/learn.asm
+++ b/engine/learn.asm
@@ -150,7 +150,7 @@ ForgetMove: ; 65d3
ld [wcfa1], a
ld a, $6
ld [wcfa2], a
- ld a, [wd0eb]
+ ld a, [wNumMoves]
inc a
ld [wcfa3], a
ld a, $1
diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm
new file mode 100755
index 000000000..79924cba2
--- /dev/null
+++ b/engine/mon_icons.asm
@@ -0,0 +1,450 @@
+LoadOverworldMonIcon: ; 8e82b
+ ld a, e
+ call ReadMonMenuIcon
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, IconPointers
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ ld b, BANK(Icons)
+ ld c, 8
+ ret
+; 8e83f
+
+Function8e83f: ; 8e83f
+ push hl
+ push de
+ push bc
+ call Function8e849
+ pop bc
+ pop de
+ pop hl
+ ret
+; 8e849
+
+Function8e849: ; 8e849
+ ld d, 0
+ ld hl, .jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8e854
+
+
+.jumptable: ; 8e854 (23:6854)
+ dw Function8e8d5 ; init
+ dw Function8e961
+ dw Function8e97d
+ dw Function8e99a
+ dw Function8e898
+ dw Function8e8b1
+ dw Function8e862
+
+
+Function8e862: ; 8e862 (23:6862)
+ call InitPartyMenuIcon
+ call Function8e86c
+ call SetPartyMonIconAnimSpeed
+ ret
+
+Function8e86c: ; 8e86c (23:686c)
+ push bc
+ ld a, [hObjectStructIndexBuffer]
+ ld hl, PartyMon1Item
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ pop bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8e890
+ push hl
+ push bc
+ ld d, a
+ callab ItemIsMail
+ pop bc
+ pop hl
+ jr c, .asm_8e88e
+ ld a, $6
+ jr .asm_8e892
+.asm_8e88e
+ ld a, $5
+ ; jr .asm_8e892
+.asm_8e890
+ ld a, $4
+.asm_8e892
+ ld hl, SPRITEANIMSTRUCT_01
+ add hl, bc
+ ld [hl], a
+ ret
+
+Function8e898: ; 8e898 (23:6898)
+ call Function8e8d5
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld a, $0
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, 9 * 8
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, 9 * 8
+ ld [hl], a
+ ret
+
+Function8e8b1: ; 8e8b1 (23:68b1)
+ call InitPartyMenuIcon
+ call SetPartyMonIconAnimSpeed
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld a, $0
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, 3 * 8
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, 12 * 8
+ ld [hl], a
+ ld a, c
+ ld [wc608], a
+ ld a, b
+ ld [wc608 + 1], a
+ ret
+
+Function8e8d5: ; 8e8d5 (23:68d5)
+ call InitPartyMenuIcon
+ call .SpawnItemIcon
+ call SetPartyMonIconAnimSpeed
+ ret
+
+.SpawnItemIcon: ; 8e8df (23:68df)
+ push bc
+ ld a, [hObjectStructIndexBuffer]
+ ld hl, PartyMon1Item
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ pop bc
+ ld a, [hl]
+ and a
+ ret z
+ push hl
+ push bc
+ ld d, a
+ callab ItemIsMail
+ pop bc
+ pop hl
+ jr c, .mail
+ ld a, $3
+ jr .okay
+
+.mail
+ ld a, $2
+.okay
+ ld hl, SPRITEANIMSTRUCT_01
+ add hl, bc
+ ld [hl], a
+ ret
+
+InitPartyMenuIcon: ; 8e908 (23:6908)
+ ld a, [wCurIconTile]
+ push af
+ ld a, [hObjectStructIndexBuffer]
+ ld hl, PartySpecies
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ call GetMemIconGFX
+ ld a, [hObjectStructIndexBuffer]
+; y coord
+rept 4
+ add a
+endr
+ add $1c
+ ld d, a
+; x coord
+ ld e, $10
+; type is partymon icon
+ ld a, SPRITE_ANIM_INDEX_00
+ call InitSpriteAnimStruct
+ pop af
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
+ add hl, bc
+ ld [hl], a
+ ret
+
+SetPartyMonIconAnimSpeed: ; 8e936 (23:6936)
+ push bc
+ ld a, [hObjectStructIndexBuffer]
+ ld b, a
+ call .getspeed
+ ld a, b
+ pop bc
+ ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
+ add hl, bc
+ ld [hl], a
+ rlca
+ rlca
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld [hl], a
+ ret
+
+.getspeed: ; 8e94c (23:694c)
+ callba PlacePartymonHPBar
+ call GetHPPal
+ ld e, d
+ ld d, 0
+ ld hl, .speeds
+ add hl, de
+ ld b, [hl]
+ ret
+; 8e95e (23:695e)
+
+.speeds: ; 8e95e
+ db $00, $40, $80
+; 8e961
+
+Function8e961: ; 8e961 (23:6961)
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ xor a
+ call GetIconGFX
+ depixel 4, 4, 4, 0
+ ld a, SPRITE_ANIM_INDEX_00
+ call InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], $0
+ ret
+
+Function8e97d: ; 8e97d (23:697d)
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ xor a
+ call GetIconGFX
+ ld d, 3 * 8 + 2
+ ld e, 4 * 8 + 4
+ ld a, SPRITE_ANIM_INDEX_00
+ call InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_00
+ ret
+
+Function8e99a: ; 8e99a (23:699a)
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ ld a, $62
+ ld [wCurIconTile], a
+ call GetMemIconGFX
+ ret
+
+GetSpeciesIcon: ; 8e9ac
+; Load species icon into VRAM at tile a
+ push de
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ pop de
+ ld a, e
+ call GetIconGFX
+ ret
+; 8e9bc
+
+
+FlyFunction_GetMonIcon: ; 8e9bc (23:69bc)
+ push de
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ pop de
+ ld a, e
+ call GetIcon_a
+ ret
+; 8e9cc (23:69cc)
+
+GetMonIcon2: ; 8e9cc
+; unreferenced
+ push de
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ pop de
+ call GetIcon_de
+ ret
+; 8e9db
+
+GetMemIconGFX: ; 8e9db (23:69db)
+ ld a, [wCurIconTile]
+GetIconGFX: ; 8e9de
+ call GetIcon_a
+ ld de, $80 ; 8 tiles
+ add hl, de
+ ld de, HeldItemIcons
+ lb bc, BANK(HeldItemIcons), 2
+ call GetGFXUnlessMobile
+ ld a, [wCurIconTile]
+ add 10
+ ld [wCurIconTile], a
+ ret
+
+HeldItemIcons:
+INCBIN "gfx/icon/mail.2bpp"
+INCBIN "gfx/icon/item.2bpp"
+; 8ea17
+
+GetIcon_de: ; 8ea17
+; Load icon graphics into VRAM starting from tile de.
+ ld l, e
+ ld h, d
+ jr GetIcon
+
+GetIcon_a: ; 8ea1b
+; Load icon graphics into VRAM starting from tile a.
+ ld l, a
+ ld h, 0
+
+GetIcon: ; 8ea1e
+; Load icon graphics into VRAM starting from tile hl.
+
+; One tile is 16 bytes long.
+rept 4
+ add hl, hl
+endr
+
+ ld de, VTiles0
+ add hl, de
+ push hl
+
+; The icons are contiguous, in order and of the same
+; size, so the pointer table is somewhat redundant.
+ ld a, [CurIcon]
+ push hl
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, IconPointers
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ pop hl
+
+ lb bc, BANK(Icons), 8
+ call GetGFXUnlessMobile
+
+ pop hl
+ ret
+; 8ea3f
+
+GetGFXUnlessMobile: ; 8ea3f
+ ld a, [wLinkMode]
+ cp LINK_MOBILE
+ jp nz, Request2bpp
+ jp Get2bpp_2
+; 8ea4a
+
+FreezeMonIcons: ; 8ea4a
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+ ld a, [MenuSelection2]
+ ld d, a
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ cp d
+ jr z, .loadwithtwo
+ ld a, SPRITE_ANIM_SEQ_00
+ jr .ok
+
+.loadwithtwo
+ ld a, SPRITE_ANIM_SEQ_02
+
+.ok
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], a
+ pop hl
+
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+; 8ea71
+
+UnfreezeMonIcons: ; 8ea71
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_01
+ pop hl
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+; 8ea8c (23:6a8c)
+
+HoldSwitchmonIcon: ; 8ea8c
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+ ld a, [wSwitchMon]
+ ld d, a
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ cp d
+ jr z, .is_switchmon
+ ld a, SPRITE_ANIM_SEQ_03
+ jr .join_back
+
+.is_switchmon
+ ld a, SPRITE_ANIM_SEQ_02
+.join_back
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], a
+ pop hl
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+
+INCLUDE "menu/mon_icons.asm"
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index 8e3db5aea..c0e416c79 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -176,7 +176,7 @@ Function117f5: ; 117f5 (4:57f5)
depixel 4, 4, 4, 0
ld a, SPRITE_ANIM_INDEX_0A
call _InitSpriteAnimStruct
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_01
add hl, bc
ld [hl], $0
hlcoord 5, 2
@@ -411,10 +411,10 @@ Function1197b: ; 1197b (4:597b)
ld [wc6d5], a
ld a, b
ld [wc6d6], a
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_01
add hl, bc
ld a, [hl]
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld [hl], a
ld hl, wJumptableIndex
@@ -454,10 +454,10 @@ Function119a1: ; 119a1 (4:59a1)
ld c, [hl]
inc hl
ld b, [hl]
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $8
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $4
call Function1189c
@@ -497,7 +497,7 @@ Function11a0b: ; 11a0b (4:5a0b)
ld b, [hl]
Function11a11: ; 11a11 (4:5a11)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
push bc
@@ -509,7 +509,7 @@ Function11a11: ; 11a11 (4:5a11)
cp b
pop bc
jr nz, .asm_11a39
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $3
@@ -530,12 +530,12 @@ Function11a11: ; 11a11 (4:5a11)
Function11a3b: ; 11a3b (4:5a3b)
call Function11a8b
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
ld e, a
swap e
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], e
ld d, $4
@@ -550,19 +550,19 @@ Function11a3b: ; 11a3b (4:5a3b)
ld de, Unknown_11a82
ld a, $1
.asm_11a60
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
add [hl]
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_01
add hl, bc
ld [hl], a
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld l, [hl]
ld h, $0
add hl, de
ld a, [hl]
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
@@ -593,7 +593,7 @@ Function11a8b: ; 11a8b (4:5a8b)
call Function11a11
and a
jr nz, .asm_11ab7
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $8
@@ -611,7 +611,7 @@ Function11a8b: ; 11a8b (4:5a8b)
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
@@ -619,7 +619,7 @@ Function11a8b: ; 11a8b (4:5a8b)
call Function11a11
and a
jr nz, .asm_11ad8
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
@@ -640,12 +640,12 @@ endr
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
.down
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
call Function1189c
@@ -663,7 +663,7 @@ endr
ld [hl], $0
ret
.up
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
and a
@@ -826,10 +826,10 @@ Function11c11: ; 11c11 (4:5c11)
ld c, [hl]
inc hl
ld b, [hl]
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld a, [hl]
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
add [hl]
sub $8
@@ -837,10 +837,10 @@ Function11c11: ; 11c11 (4:5c11)
srl a
srl a
ld e, a
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld a, [hl]
- ld hl, $5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
add [hl]
sub $10
diff --git a/engine/overworld.asm b/engine/overworld.asm
index fa4d02e7c..748ab4649 100755
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -266,7 +266,7 @@ GetMonSprite: ; 14259
and a
jr z, .NoBreedmon
- callba Function8e82b
+ callba LoadOverworldMonIcon
ld l, 1
ld h, 0
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index 319640961..8eda1d9b8 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -1425,12 +1425,13 @@ INCBIN "gfx/unknown/0915db.tilemap.rle"
_UpdateRadioStation: ; 9163e (24:563e)
jr UpdateRadioStation
-Function91640: ; 91640 (24:5640)
+; called from engine/sprite_anims.asm
+AnimateTuningKnob: ; 91640 (24:5640)
push bc
call .TuningKnob
pop bc
ld a, [wRadioTuningKnob]
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
diff --git a/engine/predef.asm b/engine/predef.asm
index 51c057e4e..fcc347fa6 100644
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -65,7 +65,7 @@ PredefPointers:: ; 856b
add_predef ListMoves ; $20
add_predef PlaceNonFaintStatus
add_predef Function50cdb
- add_predef Function50c50
+ add_predef ListMovePP
add_predef GetGender
add_predef StatsScreenInit
add_predef DrawPlayerHP
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
index f93f43c58..3f6187275 100755
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -35,7 +35,7 @@ endr
dw .seventeen
dw .eighteen
dw .nineteen ; finish egg hatching animation
- dw .twenty
+ dw .twenty ; radio tuning knob
dw .twentyone
dw .twentytwo ; flying sprite
dw .twentythree ; flying leaves
@@ -57,33 +57,39 @@ endr
.one: ; 8d2a2 (23:52a2)
ld a, [MenuSelection2]
- ld hl, 0
+
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
cp [hl]
jr z, .two
- ld hl, $4
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], $10
- ld hl, $7
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], $0
ret
.two: ; 8d2b9 (23:52b9)
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], $18
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
ld d, a
inc [hl]
and $f
ret nz
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld e, [hl]
- ld hl, $7
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld a, d
and $10 ; bit 4
@@ -97,10 +103,12 @@ endr
xor a
ld [hl], a
ret
+
.asm_8d2e2
ld a, $ff
ld [hl], a
ret
+
.asm_8d2e6
ld a, $fe
ld [hl], a
@@ -108,16 +116,19 @@ endr
.three: ; 8d2ea (23:52ea)
ld a, [MenuSelection2]
- ld hl, 0
+
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
cp [hl]
jr z, .asm_8d2fb
- ld hl, $4
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], $10
ret
+
.asm_8d2fb
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], $18
ret
@@ -133,66 +144,76 @@ endr
; 8d30a
.four_zero: ; 8d30a
- call .asm_8d6d8
- ld hl, 0
+ call .IncrementSpriteAnimStruct0B
+
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld a, [hl]
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
and $3
ld [hl], a
inc [hl]
swap a
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
.four_one: ; 8d321
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $a4
jr nc, .asm_8d356
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
add $4
- ld hl, $4
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], a
- ld hl, $5
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
inc [hl]
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
sla a
sla a
ld d, $2
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
add $3
ld [hl], a
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ret
.asm_8d356
- call Function8d036
+ call DeinitializeSprite
ret
; 8d35a
.twentyfive: ; 8d35a (23:535a)
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
inc a
ld [hl], a
ld d, $2
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ret
@@ -210,7 +231,7 @@ endr
ret
.seven: ; 8d381 (23:5381)
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
@@ -221,69 +242,81 @@ endr
ld d, a
and $1f
jr nz, .asm_8d395
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
dec [hl]
.asm_8d395
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
push af
push de
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
pop de
pop af
- call .ApplyXOffset
- ld hl, $6
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
add [hl]
ld [hl], a
ret
+
.asm_8d3ba
ld a, $1
ld [wcf64], a
- call Function8d036
+ call DeinitializeSprite
ret
.eight: ; 8d3c3 (23:53c3)
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hli]
or [hl]
jr z, .asm_8d41e
- ld hl, $f
+
+ ld hl, SPRITEANIMSTRUCT_0F
add hl, bc
ld d, [hl]
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
push af
push de
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
pop de
pop af
- call .ApplyXOffset
- ld hl, $6
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
- ld hl, $e
+
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld a, [hli]
ld h, [hl]
@@ -291,12 +324,14 @@ endr
add hl, de
ld e, l
ld d, h
- ld hl, $e
+
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld [hl], e
inc hl
ld [hl], d
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hli]
ld h, [hl]
@@ -305,19 +340,22 @@ endr
add hl, de
ld e, l
ld d, h
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], e
inc hl
ld [hl], d
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
xor $20
ld [hl], a
ret
+
.asm_8d41e
- call Function8d036
+ call DeinitializeSprite
ret
.nine: ; 8d422 (23:5422)
@@ -336,31 +374,34 @@ endr
ret
.eleven: ; 8d43e (23:543e)
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
dec [hl]
ld e, a
and $1
jr z, .asm_8d462
- ld hl, $4
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $78
jr c, .asm_8d461
- call Function8d036
+ call DeinitializeSprite
ld a, $4
ld [wcf64], a
ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
call PlaySFX
ret
+
.asm_8d461
inc [hl]
.asm_8d462
ld a, e
ld d, $20
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ret
@@ -394,17 +435,19 @@ endr
.sixteen_zero: ; 8d493
ld a, $14
call Function8d120
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld [hl], $2
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $20
ret
; 8d4a5
.sixteen_two: ; 8d4a5
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
@@ -413,21 +456,23 @@ endr
ret
.asm_8d4af
- call .asm_8d6d8
- ld hl, $c
+ call .IncrementSpriteAnimStruct0B
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $40
.sixteen_three: ; 8d4b8
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $30
jr c, .asm_8d4cd
dec [hl]
ld d, $28
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ret
@@ -439,42 +484,49 @@ endr
; 8d4d5
.sixteen_one: ; 8d4d5
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld [hl], $4
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $30
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $24
ret
; 8d4e8
.sixteen_four: ; 8d4e8
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
and a
jr z, .asm_8d51c
ld d, a
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
- call ApplyYOffset
- ld hl, $7
+ call ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
inc [hl]
ld a, [hl]
and $3f
ret nz
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $20
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
sub $c
@@ -485,19 +537,20 @@ endr
.asm_8d51c
xor a
- ld hl, $7
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
- call .asm_8d6d8
+ call .IncrementSpriteAnimStruct0B
ret
.sixteen_five: ; 8d526
- call Function8d036
+ call DeinitializeSprite
ret
; 8d52a
.seventeen: ; 8d52a (23:552a)
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
rept 2
@@ -512,7 +565,7 @@ endr
ret
.asm_8d53f
- call Function8d036
+ call DeinitializeSprite
ret
.eighteen: ; 8d543 (23:5543)
@@ -520,7 +573,7 @@ endr
ret
.nineteen: ; 8d54a (23:554a)
- ld hl, SpriteAnim1Sprite0c - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $80
@@ -528,7 +581,8 @@ endr
ld d, a
add $8
ld [hl], a
- ld hl, SpriteAnim1Sprite0b - SpriteAnim1
+
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
xor $20
@@ -536,29 +590,31 @@ endr
push af
push de
- call .ApplyYOffset
- ld hl, SpriteAnim1YOffset - SpriteAnim1
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
pop de
pop af
- call .ApplyXOffset
- ld hl, SpriteAnim1XOffset - SpriteAnim1
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
.finish_nineteen
- call Function8d036
+ call DeinitializeSprite
ret
.twenty: ; 8d578 (23:5578)
- callab Function91640
+ callab AnimateTuningKnob
ret
.twentyone: ; 8d57f (23:557f)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld e, [hl]
inc hl
@@ -567,12 +623,14 @@ endr
add hl, de
ld e, l
ld d, h
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], e
inc hl
ld [hl], d
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
rept 3
@@ -580,36 +638,41 @@ rept 3
endr
push af
push de
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
pop de
pop af
- call .ApplyXOffset
- ld hl, $6
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
.twentytwo: ; 8d5b0 (23:55b0)
- ld hl, $5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
and a
ret z
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
inc [hl]
cp $40
ret c
- ld hl, $5
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
rept 2
dec [hl]
endr
- ld hl, $f
+
+ ld hl, SPRITEANIMSTRUCT_0F
add hl, bc
ld a, [hl]
ld d, a
@@ -618,18 +681,19 @@ endr
add $8
ld [hl], a
.asm_8d5d3
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld a, [hl]
inc [hl]
- call .ApplyXOffset
- ld hl, $6
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
.twentythree: ; 8d5e2 (23:55e2)
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $b8
@@ -637,35 +701,40 @@ endr
rept 2
inc [hl]
endr
- ld hl, $5
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
dec [hl]
ld d, $40
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
inc [hl]
- call .ApplyXOffset
- ld hl, $6
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
.asm_8d603
- call Function8d036
+ call DeinitializeSprite
ret
.twentyfour: ; 8d607 (23:5607)
- ld hl, $5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
cp $54
ret z
- ld hl, $5
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
rept 2
inc [hl]
endr
- ld hl, $f
+
+ ld hl, SPRITEANIMSTRUCT_0F
add hl, bc
ld a, [hl]
ld d, a
@@ -674,12 +743,13 @@ endr
sub $2
ld [hl], a
.asm_8d621
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld a, [hl]
inc [hl]
- call .ApplyXOffset
- ld hl, $6
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
@@ -698,10 +768,11 @@ endr
jr nz, .asm_8d645
ret
.asm_8d645
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], $0
- ld hl, $d
+
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
add $2
@@ -709,8 +780,9 @@ endr
xor $ff
inc a
ld d, $20
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ld a, $36
@@ -718,7 +790,7 @@ endr
ret
.thirty: ; 8d666 (23:5666)
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $14
@@ -728,33 +800,37 @@ endr
xor $ff
inc a
ld d, $20
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
.asm_8d67f
ret
.thirtytwo: ; 8d680 (23:5680)
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld d, [hl]
rept 3
inc [hl]
endr
- ld hl, $c
+
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
push af
push de
- call .ApplyYOffset
- ld hl, $7
+ call .ApplySineWaveY
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
pop de
pop af
- call .ApplyXOffset
- ld hl, $6
+ call .ApplySineWaveX
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
@@ -768,7 +844,7 @@ endr
ret
.thirtyfour: ; 8d6ae (23:56ae)
- ld hl, $5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
add $10
@@ -789,7 +865,8 @@ endr
inc hl
ld d, [hl]
inc de
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld l, [hl]
ld h, $0
@@ -801,18 +878,18 @@ endr
ret
; 8d6d8 (23:56d8)
-.asm_8d6d8: ; 8d6d8
- ld hl, $b
+.IncrementSpriteAnimStruct0B: ; 8d6d8
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
ret
; 8d6de
-.ApplyYOffset: ; 8d6de (23:56de)
- call ApplyYOffset
+.ApplySineWaveY: ; 8d6de (23:56de)
+ call ApplySineWaveY
ret
-.ApplyXOffset: ; 8d6e2 (23:56e2)
- call ApplyXOffset
+.ApplySineWaveX: ; 8d6e2 (23:56e2)
+ call ApplySineWaveX
ret
; 8d6e6 (23:56e6)
diff --git a/engine/sprites.asm b/engine/sprites.asm
index e71fc5686..c00d1e9fc 100755
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -114,6 +114,7 @@ DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8)
ret
InitSpriteAnimStruct:: ; 8cfd6
+; Initialize animation a at pixel x=e, y=d
; Find if there's any room in the wSpriteAnimationStructs array, which is 10x16
push de
push af
@@ -159,7 +160,7 @@ endr
ld e, l
ld d, h
; Set hl to the first field (field 0) in the current structure.
- ld hl, 0
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
; Load the index.
ld a, [wc3b4]
@@ -174,11 +175,11 @@ endr
; Look up the third field from the table in the wc300 array (10x2).
; Take the value and load it in
ld a, [de]
- call LookUpInwSpriteAnimDict
+ call GetSpriteAnimVTile
ld [hli], a
pop de
-; Set hl to field 4. Kinda pointless, because we're presumably already here.
- ld hl, $4
+; Set hl to field 4 (X coordinate). Kinda pointless, because we're presumably already here.
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
; Load the original value of de into here.
ld a, e
@@ -203,15 +204,15 @@ rept 4
ld [hli], a
endr
ld [hl], a
-; back up the address of the first field to wc3b8
+; back up the address of the first field to wSpriteAnimAddrBackup
ld a, c
- ld [wc3b8], a
+ ld [wSpriteAnimAddrBackup], a
ld a, b
- ld [wc3b8 + 1], a
+ ld [wSpriteAnimAddrBackup + 1], a
ret
; 8d036
-Function8d036: ; 8d036
+DeinitializeSprite: ; 8d036
; Clear the index field of the struct in bc.
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
@@ -220,7 +221,7 @@ Function8d036: ; 8d036
; 8d03d
-Function8d03d: ; 8d03d (23:503d)
+DeinitializeAllSprites: ; 8d03d (23:503d)
; Clear the index field of every struct in the wSpriteAnimationStructs array.
ld hl, wSpriteAnimationStructs
ld bc, $10
@@ -235,7 +236,7 @@ Function8d03d: ; 8d03d (23:503d)
Function8d04c: ; 8d04c
- call Function8d0ec ; init WRAM
+ call InitSpriteAnimBuffer ; init WRAM
call Function8d132 ; read from a memory array
cp -3
jr z, .done
@@ -259,7 +260,7 @@ Function8d04c: ; 8d04c
ld c, a ; number of objects
.loop
; first byte: y (px)
- ; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wGlobalAnimYOffset] + Function8d0be([hl])
+ ; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wGlobalAnimYOffset] + AddOrSubtractY([hl])
ld a, [wCurrAnimYCoord]
ld b, a
ld a, [wCurrAnimYOffset]
@@ -268,13 +269,13 @@ Function8d04c: ; 8d04c
ld a, [wGlobalAnimYOffset]
add b
ld b, a
- call Function8d0be
+ call AddOrSubtractY
add b
ld [de], a
inc hl
inc de
; second byte: x (px)
- ; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wGlobalAnimXOffset] + Function8d0ce([hl])
+ ; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wGlobalAnimXOffset] + AddOrSubtractX([hl])
ld a, [wCurrAnimXCoord]
ld b, a
ld a, [wCurrAnimXOffset]
@@ -283,7 +284,7 @@ Function8d04c: ; 8d04c
ld a, [wGlobalAnimXOffset]
add b
ld b, a
- call Function8d0ce
+ call AddOrSubtractX
add b
ld [de], a
inc hl
@@ -311,7 +312,7 @@ Function8d04c: ; 8d04c
jr .done
.delete
- call Function8d036
+ call DeinitializeSprite
.done
and a
@@ -323,12 +324,13 @@ Function8d04c: ; 8d04c
ret
; 8d0be
-Function8d0be: ; 8d0be
+AddOrSubtractY: ; 8d0be
push hl
ld a, [hl]
- ld hl, wc3b8
+ ld hl, wCurrSpriteAddSubFlags
bit 6, [hl]
jr z, .ok
+ ; 8 - a
add $8
xor $ff
inc a
@@ -338,12 +340,13 @@ Function8d0be: ; 8d0be
ret
; 8d0ce
-Function8d0ce: ; 8d0ce
+AddOrSubtractX: ; 8d0ce
push hl
ld a, [hl]
- ld hl, wc3b8
+ ld hl, wCurrSpriteAddSubFlags
bit 5, [hl]
jr z, .ok
+ ; 8 - a
add $8
xor $ff
inc a
@@ -354,7 +357,7 @@ Function8d0ce: ; 8d0ce
; 8d0de
Function8d0de: ; 8d0de
- ld a, [wc3b8]
+ ld a, [wCurrSpriteAddSubFlags]
ld b, a
ld a, [hl]
xor b
@@ -366,9 +369,9 @@ Function8d0de: ; 8d0de
ret
; 8d0ec
-Function8d0ec: ; 8d0ec
+InitSpriteAnimBuffer: ; 8d0ec
xor a
- ld [wc3b8], a
+ ld [wCurrSpriteAddSubFlags], a
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld a, [hli]
@@ -384,8 +387,9 @@ Function8d0ec: ; 8d0ec
ret
; 8d109
-LookUpInwSpriteAnimDict: ; 8d109
+GetSpriteAnimVTile: ; 8d109
; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else 0
+; VTiles offset
push hl
push bc
ld hl, wSpriteAnimDict
@@ -452,7 +456,7 @@ Function8d132: ; 8d132
ld a, [hl]
push hl
and $3f
- ld hl, SPRITEANIMSTRUCT_09
+ ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
add hl, bc
add [hl]
ld hl, SPRITEANIMSTRUCT_DURATION
@@ -463,7 +467,7 @@ Function8d132: ; 8d132
ld a, [hl]
and $c0
srl a
- ld [wc3b8], a
+ ld [wCurrSpriteAddSubFlags], a
pop af
ret
@@ -552,6 +556,7 @@ endr
; 8d1c4
Unknown_8d1c4: ; 8d1c4
+ ; ??, sequence, tile
db $01, SPRITE_ANIM_SEQ_01, $00 ; 00
db $07, SPRITE_ANIM_SEQ_04, $00 ; 01
db $08, SPRITE_ANIM_SEQ_05, $05 ; 02
@@ -562,7 +567,7 @@ Unknown_8d1c4: ; 8d1c4
db $0e, SPRITE_ANIM_SEQ_0A, $07 ; 07
db $10, SPRITE_ANIM_SEQ_0B, $07 ; 08
db $08, SPRITE_ANIM_SEQ_0C, $05 ; 09
- db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a
+ db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a flying sprite
db $12, SPRITE_ANIM_SEQ_0D, $08 ; 0b
db $12, SPRITE_ANIM_SEQ_0E, $08 ; 0c
db $12, SPRITE_ANIM_SEQ_0F, $08 ; 0d
@@ -572,11 +577,11 @@ Unknown_8d1c4: ; 8d1c4
db $17, SPRITE_ANIM_SEQ_12, $00 ; 11
db $18, SPRITE_ANIM_SEQ_12, $00 ; 12
db $19, SPRITE_ANIM_SEQ_13, $00 ; 13
- db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14
+ db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob
db $1b, SPRITE_ANIM_SEQ_00, $00 ; 15
db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16
db $1e, SPRITE_ANIM_SEQ_00, $00 ; 17
- db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18
+ db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18 flying leaves
db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19
db $24, SPRITE_ANIM_SEQ_19, $00 ; 1a
db $25, SPRITE_ANIM_SEQ_00, $00 ; 1b
@@ -605,26 +610,26 @@ INCLUDE "data/sprite_engine.asm"
; Unknown_8d6e6
; Unknown_8d94d
-ApplyXOffset: ; 8e72a
+ApplySineWaveX: ; 8e72a
add $10
-ApplyYOffset: ; 8e72c
+ApplySineWaveY: ; 8e72c
and $3f
cp $20
- jr nc, .xflip
- call Function8e741
+ jr nc, .flip
+ call .ApplyOffset
ld a, h
ret
-.xflip
+.flip
and $1f
- call Function8e741
+ call .ApplyOffset
ld a, h
xor $ff ; cpl
inc a
ret
; 8e741
-Function8e741: ; 8e741
+.ApplyOffset: ; 8e741
ld e, a
ld a, d
ld d, 0
@@ -696,7 +701,7 @@ endr
push de
push hl
- call ApplyYOffset
+ call ApplySineWaveY
pop hl
pop de
add 13 * 8
@@ -705,7 +710,7 @@ endr
pop af
push de
push hl
- call ApplyXOffset
+ call ApplySineWaveX
pop hl
pop de
add 10 * 8 + 4
@@ -743,451 +748,3 @@ ClearSpriteAnims2: ; 8e814
pop hl
ret
; 8e82b
-
-Function8e82b: ; 8e82b
- ld a, e
- call ReadMonMenuIcon
- ld l, a
- ld h, 0
- add hl, hl
- ld de, IconPointers
- add hl, de
- ld a, [hli]
- ld e, a
- ld d, [hl]
- ld b, BANK(Icons)
- ld c, 8
- ret
-; 8e83f
-
-Function8e83f: ; 8e83f
- push hl
- push de
- push bc
- call Function8e849
- pop bc
- pop de
- pop hl
- ret
-; 8e849
-
-Function8e849: ; 8e849
- ld d, 0
- ld hl, Jumptable_8e854
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 8e854
-
-
-Jumptable_8e854: ; 8e854 (23:6854)
- dw Function8e8d5
- dw Function8e961
- dw Function8e97d
- dw Function8e99a
- dw Function8e898
- dw Function8e8b1
- dw Function8e862
-
-
-Function8e862: ; 8e862 (23:6862)
- call Function8e908
- call Function8e86c
- call Function8e936
- ret
-
-Function8e86c: ; 8e86c (23:686c)
- push bc
- ld a, [hObjectStructIndexBuffer]
- ld hl, PartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- pop bc
- ld a, [hl]
- and a
- jr z, .asm_8e890
- push hl
- push bc
- ld d, a
- callab ItemIsMail
- pop bc
- pop hl
- jr c, .asm_8e88e
- ld a, $6
- jr .asm_8e892
-.asm_8e88e
- ld a, $5
-.asm_8e890
- ld a, $4
-.asm_8e892
- ld hl, $1
- add hl, bc
- ld [hl], a
- ret
-
-Function8e898: ; 8e898 (23:6898)
- call Function8e8d5
- ld hl, $2
- add hl, bc
- ld a, $0
- ld [hl], a
- ld hl, $4
- add hl, bc
- ld a, $48
- ld [hl], a
- ld hl, $5
- add hl, bc
- ld a, $48
- ld [hl], a
- ret
-
-Function8e8b1: ; 8e8b1 (23:68b1)
- call Function8e908
- call Function8e936
- ld hl, $2
- add hl, bc
- ld a, $0
- ld [hl], a
- ld hl, $4
- add hl, bc
- ld a, $18
- ld [hl], a
- ld hl, $5
- add hl, bc
- ld a, $60
- ld [hl], a
- ld a, c
- ld [wc608], a
- ld a, b
- ld [wc608 + 1], a
- ret
-
-Function8e8d5: ; 8e8d5 (23:68d5)
- call Function8e908
- call Function8e8df
- call Function8e936
- ret
-
-Function8e8df: ; 8e8df (23:68df)
- push bc
- ld a, [hObjectStructIndexBuffer]
- ld hl, PartyMon1Item
- ld bc, $30
- call AddNTimes
- pop bc
- ld a, [hl]
- and a
- ret z
- push hl
- push bc
- ld d, a
- callab ItemIsMail
- pop bc
- pop hl
- jr c, .asm_8e900
- ld a, $3
- jr .asm_8e902
-.asm_8e900
- ld a, $2
-.asm_8e902
- ld hl, $1
- add hl, bc
- ld [hl], a
- ret
-
-Function8e908: ; 8e908 (23:6908)
- ld a, [wc3b7]
- push af
- ld a, [hObjectStructIndexBuffer]
- ld hl, PartySpecies
- ld e, a
- ld d, $0
- add hl, de
- ld a, [hl]
- call ReadMonMenuIcon
- ld [CurIcon], a
- call Function8e9db
- ld a, [hObjectStructIndexBuffer]
-; y coord
-rept 4
- add a
-endr
- add $1c
- ld d, a
-; x coord
- ld e, $10
-; type is partymon icon
- ld a, SPRITE_ANIM_INDEX_00
- call InitSpriteAnimStruct
- pop af
- ld hl, $3
- add hl, bc
- ld [hl], a
- ret
-
-Function8e936: ; 8e936 (23:6936)
- push bc
- ld a, [hObjectStructIndexBuffer]
- ld b, a
- call Function8e94c
- ld a, b
- pop bc
- ld hl, $9
- add hl, bc
- ld [hl], a
- rlca
- rlca
- ld hl, $d
- add hl, bc
- ld [hl], a
- ret
-
-Function8e94c: ; 8e94c (23:694c)
- callba PlacePartymonHPBar
- call GetHPPal
- ld e, d
- ld d, 0
- ld hl, Unknown_8e95e
- add hl, de
- ld b, [hl]
- ret
-; 8e95e (23:695e)
-
-Unknown_8e95e: ; 8e95e
- db $00, $40, $80
-; 8e961
-
-Function8e961: ; 8e961 (23:6961)
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- xor a
- call GetIconGFX
- lb de, $24, $20
- ld a, SPRITE_ANIM_INDEX_00
- call InitSpriteAnimStruct
- ld hl, $2
- add hl, bc
- ld [hl], $0
- ret
-
-Function8e97d: ; 8e97d (23:697d)
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- xor a
- call GetIconGFX
- ld d, $1a
- ld e, $24
- ld a, SPRITE_ANIM_INDEX_00
- call InitSpriteAnimStruct
- ld hl, $2
- add hl, bc
- ld [hl], $0
- ret
-
-Function8e99a: ; 8e99a (23:699a)
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- ld a, $62
- ld [wc3b7], a
- call Function8e9db
- ret
-
-GetSpeciesIcon: ; 8e9ac
-; Load species icon into VRAM at tile a
- push de
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- pop de
- ld a, e
- call GetIconGFX
- ret
-; 8e9bc
-
-
-Function8e9bc: ; 8e9bc (23:69bc)
- push de
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- pop de
- ld a, e
- call GetIcon_a
- ret
-; 8e9cc (23:69cc)
-
-Function8e9cc: ; 8e9cc
- push de
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- pop de
- call GetIcon_de
- ret
-; 8e9db
-
-Function8e9db: ; 8e9db (23:69db)
- ld a, [wc3b7]
-
-GetIconGFX: ; 8e9de
- call GetIcon_a
- ld de, $80 ; 8 tiles
- add hl, de
- ld de, HeldItemIcons
- lb bc, BANK(HeldItemIcons), 2
- call GetGFXUnlessMobile
- ld a, [wc3b7]
- add 10
- ld [wc3b7], a
- ret
-
-HeldItemIcons:
-INCBIN "gfx/icon/mail.2bpp"
-INCBIN "gfx/icon/item.2bpp"
-; 8ea17
-
-GetIcon_de: ; 8ea17
-; Load icon graphics into VRAM starting from tile de.
- ld l, e
- ld h, d
- jr GetIcon
-
-GetIcon_a: ; 8ea1b
-; Load icon graphics into VRAM starting from tile a.
- ld l, a
- ld h, 0
-
-GetIcon: ; 8ea1e
-; Load icon graphics into VRAM starting from tile hl.
-
-; One tile is 16 bytes long.
-rept 4
- add hl, hl
-endr
-
- ld de, VTiles0
- add hl, de
- push hl
-
-; The icons are contiguous, in order and of the same
-; size, so the pointer table is somewhat redundant.
- ld a, [CurIcon]
- push hl
- ld l, a
- ld h, 0
- add hl, hl
- ld de, IconPointers
- add hl, de
- ld a, [hli]
- ld e, a
- ld d, [hl]
- pop hl
-
- lb bc, BANK(Icons), 8
- call GetGFXUnlessMobile
-
- pop hl
- ret
-; 8ea3f
-
-GetGFXUnlessMobile: ; 8ea3f
- ld a, [wLinkMode]
- cp LINK_MOBILE
- jp nz, Request2bpp
- jp Get2bpp_2
-; 8ea4a
-
-Function8ea4a: ; 8ea4a
- ld hl, wSpriteAnimationStructs
- ld e, $6
- ld a, [MenuSelection2]
- ld d, a
-.loop
- ld a, [hl]
- and a
- jr z, .next
- cp d
- jr z, .loadwithtwo
- ld a, $0
- jr .ok
-
-.loadwithtwo
- ld a, $2
-
-.ok
- push hl
- ld c, l
- ld b, h
- ld hl, $2
- add hl, bc
- ld [hl], a
- pop hl
-
-.next
- ld bc, $10
- add hl, bc
- dec e
- jr nz, .loop
- ret
-; 8ea71
-
-Function8ea71: ; 8ea71
- ld hl, wSpriteAnimationStructs
- ld e, $6
-.loop
- ld a, [hl]
- and a
- jr z, .zero
- push hl
- ld c, l
- ld b, h
- ld hl, $2
- add hl, bc
- ld [hl], $1
- pop hl
-.zero
- ld bc, $10
- add hl, bc
- dec e
- jr nz, .loop
- ret
-; 8ea8c (23:6a8c)
-
-Function8ea8c: ; 8ea8c
- ld hl, wSpriteAnimationStructs
- ld e, $6
- ld a, [wd0e3]
- ld d, a
-.asm_8ea95
- ld a, [hl]
- and a
- jr z, .asm_8eaab
- cp d
- jr z, .asm_8eaa0
- ld a, $3
- jr .asm_8eaa2
-.asm_8eaa0
- ld a, $2
-.asm_8eaa2
- push hl
- ld c, l
- ld b, h
- ld hl, $2
- add hl, bc
- ld [hl], a
- pop hl
-.asm_8eaab
- ld bc, $10
- add hl, bc
- dec e
- jr nz, .asm_8ea95
- ret
-
-INCLUDE "menu/mon_icons.asm"
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index 1a8f605ae..861389f9c 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -685,7 +685,7 @@ PartyMonItemName: ; 12a6c
CancelPokemonAction: ; 12a79
callba InitPartyMenuWithCancel
- callba Function8ea71
+ callba UnfreezeMonIcons
ld a, 1
ret
; 12a88
@@ -748,7 +748,7 @@ SwitchPartyMons: ; 12aec
inc a
ld [wSwitchMon], a
- callba Function8ea8c
+ callba HoldSwitchmonIcon
callba InitPartyMenuNoCancel
ld a, 4
@@ -1457,13 +1457,13 @@ MonMenu_SweetScent: ; 12f50
ret
; 12f5b
-Function12f5b: ; 12f5b
+ChooseMoveToDelete: ; 12f5b
ld hl, Options
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
call LoadFontsBattleExtra
- call Function12f73
+ call .asm_12f73
pop bc
ld a, b
ld [Options], a
@@ -1473,36 +1473,36 @@ Function12f5b: ; 12f5b
ret
; 12f73
-Function12f73: ; 12f73
+.asm_12f73: ; 12f73
call SetUpMoveScreenBG
ld de, Unknown_12fb2
call InitMenu3
- call Function131ef
+ call SetUpMoveList
ld hl, wcfa5
set 6, [hl]
- jr Function12f93
+ jr .asm_12f93
-Function12f86: ; 12f86
+.asm_12f86: ; 12f86
call Function1bd3
bit 1, a
- jp nz, Function12f9f
+ jp nz, .asm_12f9f
bit 0, a
- jp nz, Function12f9c
+ jp nz, .asm_12f9c
-Function12f93: ; 12f93
+.asm_12f93: ; 12f93
call PrepareToPlaceMoveData
call PlaceMoveData
- jp Function12f86
+ jp .asm_12f86
; 12f9c
-Function12f9c: ; 12f9c
+.asm_12f9c: ; 12f9c
and a
- jr Function12fa0
+ jr .asm_12fa0
-Function12f9f: ; 12f9f
+.asm_12f9f: ; 12f9f
scf
-Function12fa0: ; 12fa0
+.asm_12fa0: ; 12fa0
push af
xor a
ld [wSwitchMon], a
@@ -1545,7 +1545,7 @@ MoveScreenLoop: ; 12fd5
ld de, Unknown_13163
call InitMenu3
.loop
- call Function131ef
+ call SetUpMoveList
ld hl, wcfa5
set 6, [hl]
jr .skip_joy
@@ -1802,7 +1802,7 @@ SetUpMoveScreenBG: ; 13172
jp ClearBox
; 131ef
-Function131ef: ; 131ef
+SetUpMoveList: ; 131ef
xor a
ld [hBGMapMode], a
ld [wMoveSwapBuffer], a
@@ -1817,10 +1817,10 @@ Function131ef: ; 131ef
hlcoord 2, 3
predef ListMoves
hlcoord 10, 4
- predef Function50c50
+ predef ListMovePP
call WaitBGMap
call SetPalettes
- ld a, [wd0eb]
+ ld a, [wNumMoves]
inc a
ld [wcfa3], a
hlcoord 0, 11
diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm
index 766e05fe7..e0faa54a3 100755
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -697,7 +697,7 @@ Function4e147: ; 4e147 (13:6147)
hlcoord 12, 11
ld a, $28
ld [Buffer1], a
- predef Function50c50
+ predef ListMovePP
ret
Function4e189: ; 4e189 (13:6189)
diff --git a/event/field_moves.asm b/event/field_moves.asm
index 1322c4eae..398636451 100755
--- a/event/field_moves.asm
+++ b/event/field_moves.asm
@@ -325,7 +325,7 @@ FlyFromAnim: ; 8caed
push af
xor a
ld [VramState], a
- call Function8cb9b
+ call FlyFunction_InitGFX
depixel 10, 10, 4, 0
ld a, SPRITE_ANIM_INDEX_0A
call _InitSpriteAnimStruct
@@ -334,7 +334,7 @@ FlyFromAnim: ; 8caed
ld [hl], $84
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
- ld [hl], $16
+ ld [hl], SPRITE_ANIM_SEQ_16
ld a, $80
ld [wcf64], a
.loop
@@ -360,7 +360,7 @@ FlyToAnim: ; 8cb33
push af
xor a
ld [VramState], a
- call Function8cb9b
+ call FlyFunction_InitGFX
depixel 31, 10, 4, 0
ld a, SPRITE_ANIM_INDEX_0A
call _InitSpriteAnimStruct
@@ -410,7 +410,7 @@ endr
call ByteFill
ret
-Function8cb9b: ; 8cb9b (23:4b9b)
+FlyFunction_InitGFX: ; 8cb9b (23:4b9b)
callab ClearSpriteAnims
ld de, CutGrassGFX
ld hl, VTiles1 tile $00
@@ -424,7 +424,7 @@ Function8cb9b: ; 8cb9b (23:4b9b)
ld a, [hl]
ld [wd265], a
ld e, $84
- callba Function8e9bc
+ callba FlyFunction_GetMonIcon
xor a
ld [wJumptableIndex], a
ret
diff --git a/event/move_deleter.asm b/event/move_deleter.asm
index 617e3b86d..44226cca8 100644
--- a/event/move_deleter.asm
+++ b/event/move_deleter.asm
@@ -20,7 +20,7 @@ MoveDeletion:
ld hl, UnknownText_0x2c5ea
call PrintText
call LoadStandardMenuDataHeader
- callba Function12f5b
+ callba ChooseMoveToDelete
push af
call Function2b74
pop af
diff --git a/home.asm b/home.asm
index 8f014f26d..3eae8ca4a 100644
--- a/home.asm
+++ b/home.asm
@@ -2019,13 +2019,13 @@ Function3b0c:: ; 3b0c
_InitSpriteAnimStruct:: ; 3b2a
- ld [wc3b8], a
+ ld [wSpriteAnimIDBuffer], a
ld a, [hROMBank]
push af
ld a, BANK(InitSpriteAnimStruct)
rst Bankswitch
- ld a, [wc3b8]
+ ld a, [wSpriteAnimIDBuffer]
call InitSpriteAnimStruct
@@ -2038,13 +2038,13 @@ _InitSpriteAnimStruct:: ; 3b2a
Function3b3c:: ; 3b3c
- ld [wc3b8], a
+ ld [wSpriteAnimIDBuffer], a
ld a, [hROMBank]
push af
ld a, BANK(Function8d120)
rst Bankswitch
- ld a, [wc3b8]
+ ld a, [wSpriteAnimIDBuffer]
call Function8d120
diff --git a/main.asm b/main.asm
index 7d6521ad3..7d1b88ee3 100644
--- a/main.asm
+++ b/main.asm
@@ -10731,7 +10731,7 @@ MonSubmenu: ; 24d19
xor a
ld [hBGMapMode], a
call GetMonSubmenuItems
- callba Function8ea4a
+ callba FreezeMonIcons
ld hl, .MenuDataHeader
call LoadMenuDataHeader
call .GetTopCoord
@@ -15428,13 +15428,13 @@ MobileCheckOwnMonAnywhere: ; 4a843
ld hl, PartyMon1Species
ld bc, PartyMonOT
.asm_4a851
- call Function4a8dc
+ call .CheckMatch
ret c
push bc
ld bc, PARTYMON_STRUCT_LENGTH
add hl, bc
pop bc
- call Function4a91e
+ call .CopyName
dec d
jr nz, .asm_4a851
ld a, BANK(sBoxCount)
@@ -15446,7 +15446,7 @@ MobileCheckOwnMonAnywhere: ; 4a843
ld hl, sBoxMon1Species
ld bc, sBoxMonOT
.asm_4a873
- call Function4a8dc
+ call .CheckMatch
jr nc, .asm_4a87c
call CloseSRAM
ret
@@ -15456,7 +15456,7 @@ MobileCheckOwnMonAnywhere: ; 4a843
ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
pop bc
- call Function4a91e
+ call .CopyName
dec d
jr nz, .asm_4a873
@@ -15468,7 +15468,7 @@ MobileCheckOwnMonAnywhere: ; 4a843
and $f
cp c
jr z, .asm_4a8d1
- ld hl, BoxAddressTable2
+ ld hl, .BoxAddrs
ld b, 0
rept 3
add hl, bc
@@ -15496,7 +15496,7 @@ endr
pop hl
ld d, a
.asm_4a8ba
- call Function4a8dc
+ call .CheckMatch
jr nc, .asm_4a8c4
pop bc
call CloseSRAM
@@ -15507,7 +15507,7 @@ endr
ld bc, BOXMON_STRUCT_LENGTH
add hl, bc
pop bc
- call Function4a91e
+ call .CopyName
dec d
jr nz, .asm_4a8ba
pop bc
@@ -15522,7 +15522,7 @@ endr
ret
; 4a8dc
-Function4a8dc: ; 4a8dc
+.CheckMatch: ; 4a8dc
push bc
push hl
push de
@@ -15549,7 +15549,7 @@ Function4a8dc: ; 4a8dc
ret
; 4a8f4
-BoxAddressTable2: ; 4a8f4
+.BoxAddrs: ; 4a8f4
dba sBox1
dba sBox2
dba sBox3
@@ -15566,7 +15566,7 @@ BoxAddressTable2: ; 4a8f4
dba sBox14
; 4a91e
-Function4a91e: ; 4a91e
+.CopyName: ; 4a91e
push hl
ld hl, NAME_LENGTH
add hl, bc
@@ -15600,6 +15600,7 @@ FindItemInPCOrBag: ; 4a927
ret
; 4a94e
+; mobile battle selection
Function4a94e: ; 4a94e
call FadeToMenu
ld a, -1
@@ -16102,7 +16103,7 @@ Function4ac58: ; 4ac58
lb bc, 2, 18
hlcoord 1, 15
call ClearBox
- callba Function8ea4a
+ callba FreezeMonIcons
ld hl, MenuDataHeader_0x4aca2
call LoadMenuDataHeader
ld hl, wd019
@@ -16422,7 +16423,7 @@ SECTION "bank13", ROMX, BANK[$13]
SwapTextboxPalettes:: ; 4c000
hlcoord 0, 0
decoord 0, 0, AttrMap
- ld b, $12
+ ld b, SCREEN_HEIGHT
.loop
push bc
ld c, SCREEN_WIDTH
@@ -18868,27 +18869,27 @@ GetGender: ; 50bdd
ret
; 50c50
-Function50c50: ; 50c50
- ld a, [wd0eb]
+ListMovePP: ; 50c50
+ ld a, [wNumMoves]
inc a
ld c, a
- ld a, $4
+ ld a, NUM_MOVES
sub c
ld b, a
push hl
ld a, [Buffer1]
ld e, a
ld d, $0
- ld a, $3e
- call Function50cc9
+ ld a, $3e ; P
+ call .load_loop
ld a, b
and a
- jr z, .asm_50c6f
+ jr z, .skip
ld c, a
- ld a, $e3
- call Function50cc9
+ ld a, "-"
+ call .load_loop
-.asm_50c6f
+.skip
pop hl
rept 3
inc hl
@@ -18897,10 +18898,10 @@ endr
ld e, l
ld hl, TempMonMoves
ld b, 0
-.asm_50c7a
+.loop
ld a, [hli]
and a
- jr z, .asm_50cc8
+ jr z, .done
push bc
push hl
push de
@@ -18927,7 +18928,7 @@ endr
ld de, StringBuffer1 + 4
lb bc, 1, 2
call PrintNum
- ld a, $f3
+ ld a, "/"
ld [hli], a
ld de, wd265
lb bc, 1, 2
@@ -18944,19 +18945,18 @@ endr
inc b
ld a, b
cp NUM_MOVES
- jr nz, .asm_50c7a
+ jr nz, .loop
-.asm_50cc8
+.done
ret
; 50cc9
-Function50cc9: ; 50cc9
-.asm_50cc9
+.load_loop: ; 50cc9
ld [hli], a
ld [hld], a
add hl, de
dec c
- jr nz, .asm_50cc9
+ jr nz, .load_loop
ret
; 50cd0
@@ -19097,7 +19097,7 @@ ListMoves: ; 50d6f
call PlaceString
pop bc
ld a, b
- ld [wd0eb], a
+ ld [wNumMoves], a
inc b
pop hl
push bc
@@ -21435,9 +21435,9 @@ Function8cf4f: ; 8cf4f
ret
; 8cf53
-
INCLUDE "engine/sprites.asm"
+INCLUDE "engine/mon_icons.asm"
SECTION "bank24", ROMX, BANK[$24]
diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm
index 62d6f0d4f..251b2abd4 100644
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -1901,7 +1901,7 @@ Function100bc2: ; 100bc2
ld a, [MenuSelection2]
and a
jp nz, .asm_100bcb
- ld a, [wd0eb]
+ ld a, [wNumMoves]
inc a
ld [MenuSelection2], a
jp .asm_100bcb
@@ -1909,7 +1909,7 @@ Function100bc2: ; 100bc2
.asm_100c10
ld a, [MenuSelection2]
ld b, a
- ld a, [wd0eb]
+ ld a, [wNumMoves]
rept 2
inc a
endr
@@ -1989,7 +1989,7 @@ Function100c74: ; 100c74
Function100c98: ; 100c98
ld de, Unknown_100cad
call InitMenu3
- ld a, [wd0eb]
+ ld a, [wNumMoves]
inc a
ld [wcfa3], a
ld a, [CurMoveNum]
@@ -2553,10 +2553,10 @@ Unknown_10102c: ; 10102c
Function101050: ; 101050
call Function10107d
ld a, [OTPartyCount]
-rept 2
+rept 2 ; ???
ld hl, wc608
endr
- ld bc, $01b3
+ ld bc, wc7bb - wc608
call Function1010de
ld hl, wc7bb
ld [hl], e
@@ -2566,7 +2566,7 @@ endr
call GetSRAMBank
ld hl, wc608
ld de, $a001
- ld bc, $01b5
+ ld bc, wc7bd - wc608
call CopyBytes
call CloseSRAM
ret
@@ -2575,11 +2575,11 @@ endr
Function10107d: ; 10107d
xor a
ld hl, wc608
- ld bc, $01b5
+ ld bc, wc7bd - wc608
call ByteFill
ld hl, wd26b
ld de, wc608
- ld bc, $000b
+ ld bc, NAME_LENGTH
call CopyBytes
ld hl, wd271
ld a, [hli]
@@ -2588,16 +2588,16 @@ Function10107d: ; 10107d
ld [wc608 + 12], a
ld hl, OTPartyMonNicknames
ld de, wc608 + 13
- ld bc, $000b
- call Function1010cd
+ ld bc, NAME_LENGTH
+ call .CopyAllFromOT
ld hl, OTPartyMonOT
ld de, wc656 + 1
- ld bc, $000b
- call Function1010cd
+ ld bc, NAME_LENGTH
+ call .CopyAllFromOT
ld hl, OTPartyMon1Species
ld de, wc68a + 15
- ld bc, $0030
- call Function1010cd
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call .CopyAllFromOT
ld a, $50
ld [wc7b9], a
ld a, $33
@@ -2605,7 +2605,7 @@ Function10107d: ; 10107d
ret
; 1010cd
-Function1010cd: ; 1010cd
+.CopyAllFromOT: ; 1010cd
push hl
ld hl, 0
ld a, [OTPartyCount]
@@ -2621,7 +2621,7 @@ Function1010de: ; 1010de
push hl
push bc
ld de, 0
-.asm_1010e3
+.loop
ld a, [hli]
add e
ld e, a
@@ -2631,7 +2631,7 @@ Function1010de: ; 1010de
dec bc
ld a, b
or c
- jr nz, .asm_1010e3
+ jr nz, .loop
pop bc
pop hl
ret
diff --git a/misc/mobile_42.asm b/misc/mobile_42.asm
index d559b9419..1ae6a04ae 100644
--- a/misc/mobile_42.asm
+++ b/misc/mobile_42.asm
@@ -519,7 +519,7 @@ Function10839b: ; 10839b
ld de, VTiles2
call Function108201
call EnableLCD
- callba Function8d03d
+ callba DeinitializeAllSprites
xor a
ld [hSCX], a
ld [hSCY], a
@@ -654,7 +654,7 @@ Function1084d7: ; 1084d7
ld de, VTiles2
call Function108201
call EnableLCD
- callba Function8d03d
+ callba DeinitializeAllSprites
call DelayFrame
ld de, TradeBallGFX
ld hl, VTiles0
@@ -723,7 +723,7 @@ Function108589: ; 108589
ld de, VTiles2
call Function108201
call EnableLCD
- callba Function8d03d
+ callba DeinitializeAllSprites
call DelayFrame
ld de, TradeBallGFX
ld hl, VTiles0
@@ -780,7 +780,7 @@ Function108589: ; 108589
; 108638
Function108638: ; 108638
- callba Function8d03d
+ callba DeinitializeAllSprites
call ClearBGPalettes
call ClearSprites
call ClearTileMap
@@ -816,7 +816,7 @@ Function108638: ; 108638
; 108689
Function108689: ; 108689
- callba Function8d03d
+ callba DeinitializeAllSprites
call ClearBGPalettes
call ClearSprites
call ClearTileMap
@@ -1067,7 +1067,7 @@ Function108863: ; 108863
jr .asm_108868
.asm_108879
- callba Function8d03d
+ callba DeinitializeAllSprites
depixel 9, 10, 2, 0
ld a, SPRITE_ANIM_INDEX_25
call _InitSpriteAnimStruct
@@ -1161,7 +1161,7 @@ Function10890a: ; 10890a
Function108919: ; 108919
ld c, $28
call Function1082cc
- callba Function8d03d
+ callba DeinitializeAllSprites
call ClearBGPalettes
call ClearSprites
call ClearTileMap
@@ -1546,7 +1546,7 @@ Function108b98: ; 108b98
; 108bbd
Function108bbd: ; 108bbd
- callba Function8d03d
+ callba DeinitializeAllSprites
call ClearSprites
ret
; 108bc7
@@ -1564,7 +1564,7 @@ Function108bc7: ; 108bc7 (42:4bc7)
ld [hl], a
ret
.asm_108bd9
- callba Function8d036
+ callba DeinitializeSprite
ret
Function108be0: ; 108be0 (42:4be0)
diff --git a/misc/mobile_46.asm b/misc/mobile_46.asm
index 367465030..c48c87c8e 100755
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -5965,7 +5965,7 @@ Function11ad1b: ; 11ad1b
dec a
ld [hObjectStructIndexBuffer], a
ld a, $10
- ld [wc3b7], a
+ ld [wCurIconTile], a
ld hl, Function8e83f
ld a, BANK(Function8e83f)
ld e, $4
@@ -6884,7 +6884,7 @@ Function11b295: ; 11b295
ld hl, $0003
add hl, bc
ld e, [hl]
- callba Function8e9bc
+ callba FlyFunction_GetMonIcon
hlcoord 4, 14
push hl
call GetPokemonName
diff --git a/wram.asm b/wram.asm
index a51a01c2f..48f8d3314 100644
--- a/wram.asm
+++ b/wram.asm
@@ -392,8 +392,10 @@ TilePermissions:: ; c2fe
ds 1
-SECTION "c300", WRAM0 [$c300]
+SECTION "wSpriteAnims", WRAM0 [$c300]
; wc300 - wc313 is a 10x2 dictionary.
+; keys: taken from third column of Unknown_8d1c4
+; values: VTiles
wSpriteAnimDict:: ds 10 * 2
ds wSpriteAnimDict - @
wc300:: ds 1
@@ -469,8 +471,11 @@ CurIcon:: ; c3b6
ds 1
-wc3b7:: ds 1
-wc3b8:: ds 2
+wCurIconTile:: ds 1
+wSpriteAnimAddrBackup::
+wSpriteAnimIDBuffer::
+wCurrSpriteAddSubFlags::
+ ds 2
wCurrAnimVTile:: ds 1
wCurrAnimXCoord:: ds 1
wCurrAnimYCoord:: ds 1
@@ -1000,10 +1005,10 @@ wc74d:: ds 1
wc74e:: ds 107
wc7b9:: ds 1
wc7ba:: ds 1
-wc7bb:: ds 15
-wc7ca:: ds 6
+wc7bb:: ds 2
+wc7bd::
+ ds wc6d0 - @
- ds -$100
wPokedexDataStart::
wPokedexOrder:: ds NUM_POKEMON +- 1
wPokedexOrderEnd:: ds 6
@@ -1767,6 +1772,7 @@ wd0e3:: ds 1
wMenuScrollPosition:: ds 4
wQueuedScriptBank:: ds 1
wQueuedScriptAddr:: ds 2
+wNumMoves::
wd0eb:: ds 1
wFieldMoveSucceeded::
wPlayerAction::