summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2017-05-07 18:12:24 -0700
committerYamaArashi <shadow962@live.com>2017-05-07 18:12:24 -0700
commit964520bca5d11f68b4f3fa169499e2d3bb1d20ea (patch)
treea52264435e15739bb004cc524cd9fc297764ae02
parent5ac20d9896d1e3d3323311d7181e8c425ae6942a (diff)
decompile more pokemon functions
-rw-r--r--asm/battle_10.s8
-rw-r--r--asm/battle_2.s10
-rw-r--r--asm/battle_6.s4
-rw-r--r--asm/battle_7.s32
-rw-r--r--asm/battle_8.s8
-rw-r--r--asm/battle_811DA74.s8
-rw-r--r--asm/battle_anim_80CA710.s4
-rw-r--r--asm/battle_anim_812C144.s4
-rw-r--r--asm/battle_anim_8137220.s4
-rw-r--r--asm/contest.s10
-rw-r--r--asm/daycare.s2
-rw-r--r--asm/learn_move.s2
-rw-r--r--asm/pokemon_3.s456
-rw-r--r--asm/rom5.s8
-rw-r--r--src/pokemon_3.c117
-rw-r--r--src/rom3.c4
-rw-r--r--src/rom_8077ABC.c1
-rw-r--r--sym_ewram.txt2
18 files changed, 172 insertions, 512 deletions
diff --git a/asm/battle_10.s b/asm/battle_10.s
index f4a9aa486..f7844a25a 100644
--- a/asm/battle_10.s
+++ b/asm/battle_10.s
@@ -2257,7 +2257,7 @@ sub_8039294: @ 8039294
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _080393D8 @ =gUnknown_02024E84
+ ldr r1, _080393D8 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
@@ -2297,7 +2297,7 @@ _080393C8: .4byte gUnknown_02024E8C
_080393CC: .4byte gUnknown_02024BE0
_080393D0: .4byte gSprites
_080393D4: .4byte 0x0000ff10
-_080393D8: .4byte gUnknown_02024E84
+_080393D8: .4byte gBattleMonForms
_080393DC: .4byte gUnknown_03004330
_080393E0: .4byte sub_8037A74
thumb_func_end sub_8039294
@@ -2460,7 +2460,7 @@ sub_8039430: @ 8039430
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _080395AC @ =gUnknown_02024E84
+ ldr r1, _080395AC @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -2511,7 +2511,7 @@ _0803959C: .4byte gUnknown_0300434C
_080395A0: .4byte gUnknown_02024E8C
_080395A4: .4byte gUnknown_02024BE0
_080395A8: .4byte gSprites
-_080395AC: .4byte gUnknown_02024E84
+_080395AC: .4byte gBattleMonForms
_080395B0: .4byte SpriteCallbackDummy
thumb_func_end sub_8039430
diff --git a/asm/battle_2.s b/asm/battle_2.s
index ecfb58ae8..c29f10487 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -3528,7 +3528,7 @@ _08010430:
cmp r4, r0 @ Check if pokemon species is Castform
bne _08010454
ldr r0, _0801044C @ =gUnknownCastformCoords_0837F598
- ldr r1, _08010450 @ =gUnknown_02024E84
+ ldr r1, _08010450 @ =gBattleMonForms
adds r1, r6, r1
ldrb r1, [r1]
lsls r1, 2
@@ -3538,7 +3538,7 @@ _08010430:
.align 2, 0
_08010448: .4byte SPECIES_CASTFORM
_0801044C: .4byte gUnknownCastformCoords_0837F598
-_08010450: .4byte gUnknown_02024E84
+_08010450: .4byte gBattleMonForms
_08010454:
movs r0, 0xCE
lsls r0, 1
@@ -3611,7 +3611,7 @@ _080104C8:
lsls r0, 24
lsrs r0, 22
adds r0, r1
- ldr r2, _0801051C @ =gUnknown_02024E84
+ ldr r2, _0801051C @ =gBattleMonForms
movs r3, 0x2E
ldrsh r1, [r4, r3]
adds r1, r2
@@ -3631,7 +3631,7 @@ _080104F6:
subs r0, 0x1
cmp r0, 0
bge _080104F6
- ldr r0, _0801051C @ =gUnknown_02024E84
+ ldr r0, _0801051C @ =gBattleMonForms
movs r2, 0x2E
ldrsh r1, [r4, r2]
adds r1, r0
@@ -3644,7 +3644,7 @@ _08010510:
bx r0
.align 2, 0
_08010518: .4byte gUnknown_081FAF4C
-_0801051C: .4byte gUnknown_02024E84
+_0801051C: .4byte gBattleMonForms
thumb_func_end sub_8010494
thumb_func_start sub_8010520
diff --git a/asm/battle_6.s b/asm/battle_6.s
index fbd1db0bc..0ba1783a1 100644
--- a/asm/battle_6.s
+++ b/asm/battle_6.s
@@ -2530,7 +2530,7 @@ sub_802F934: @ 802F934
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _0802FA98 @ =gUnknown_02024E84
+ ldr r1, _0802FA98 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -2581,7 +2581,7 @@ _0802FA88: .4byte gUnknown_0300434C
_0802FA8C: .4byte gUnknown_02024E8C
_0802FA90: .4byte gUnknown_02024BE0
_0802FA94: .4byte gSprites
-_0802FA98: .4byte gUnknown_02024E84
+_0802FA98: .4byte gBattleMonForms
_0802FA9C: .4byte SpriteCallbackDummy
thumb_func_end sub_802F934
diff --git a/asm/battle_7.s b/asm/battle_7.s
index 79a0bca2b..593a5bbb1 100644
--- a/asm/battle_7.s
+++ b/asm/battle_7.s
@@ -280,7 +280,7 @@ move_anim_start_t3: @ 80314C8
ands r0, r7
cmp r0, 0
beq _0803150C
- ldr r0, _08031508 @ =gUnknown_02024E84
+ ldr r0, _08031508 @ =gBattleMonForms
adds r0, r6, r0
movs r2, 0x7F
adds r1, r7, 0
@@ -289,7 +289,7 @@ move_anim_start_t3: @ 80314C8
movs r0, 0x1
b _080315C2
.align 2, 0
-_08031508: .4byte gUnknown_02024E84
+_08031508: .4byte gBattleMonForms
_0803150C:
lsls r1, r6, 2
ldr r0, _08031530 @ =0x02017800
@@ -732,7 +732,7 @@ _08031856:
adds r0, r5, 0
adds r1, r4, 0
bl sub_800D238
- ldr r0, _080318E8 @ =gUnknown_02024E84
+ ldr r0, _080318E8 @ =gBattleMonForms
add r0, r9
ldrb r0, [r0]
lsls r0, 5
@@ -773,7 +773,7 @@ _080318CE:
.align 2, 0
_080318E0: .4byte 0x02000000
_080318E4: .4byte SPECIES_CASTFORM
-_080318E8: .4byte gUnknown_02024E84
+_080318E8: .4byte gBattleMonForms
_080318EC: .4byte 0x00007fff
_080318F0: .4byte gPlttBufferFaded
_080318F4: .4byte gPlttBufferUnfaded
@@ -896,7 +896,7 @@ _080319BE:
adds r0, r5, 0
adds r1, r4, 0
bl sub_800D238
- ldr r0, _08031A50 @ =gUnknown_02024E84
+ ldr r0, _08031A50 @ =gBattleMonForms
add r0, r9
ldrb r0, [r0]
lsls r0, 5
@@ -937,7 +937,7 @@ _08031A36:
.align 2, 0
_08031A48: .4byte 0x02000000
_08031A4C: .4byte SPECIES_CASTFORM
-_08031A50: .4byte gUnknown_02024E84
+_08031A50: .4byte gBattleMonForms
_08031A54: .4byte 0x00007fff
_08031A58: .4byte gPlttBufferFaded
_08031A5C: .4byte gPlttBufferUnfaded
@@ -1675,7 +1675,7 @@ sub_8031FC4: @ 8031FC4
adds r1, r5, 0
movs r2, 0x20
bl LoadPalette
- ldr r0, _08032074 @ =gUnknown_02024E84
+ ldr r0, _08032074 @ =gBattleMonForms
add r0, r8
ldrh r1, [r4]
strb r1, [r0]
@@ -1715,7 +1715,7 @@ _08032064: .4byte gUnknown_02024BE0
_08032068: .4byte gSprites
_0803206C: .4byte 0x02017840
_08032070: .4byte 0xffffebc0
-_08032074: .4byte gUnknown_02024E84
+_08032074: .4byte gBattleMonForms
_08032078: .4byte 0x00007fff
_0803207C: .4byte gPlttBufferFaded
_08032080: .4byte gPlttBufferUnfaded
@@ -1949,7 +1949,7 @@ _08032202:
adds r0, r6, 0
adds r1, r4, 0
bl sub_800D238
- ldr r0, _0803233C @ =gUnknown_02024E84
+ ldr r0, _0803233C @ =gBattleMonForms
ldr r1, [sp, 0xC]
adds r0, r1, r0
ldrb r0, [r0]
@@ -1982,7 +1982,7 @@ _08032288:
add r1, r9
adds r0, r1
strh r7, [r0, 0x2]
- ldr r0, _0803233C @ =gUnknown_02024E84
+ ldr r0, _0803233C @ =gBattleMonForms
adds r1, r2, r0
ldr r4, [sp, 0xC]
adds r0, r4, r0
@@ -2006,7 +2006,7 @@ _080322C8:
adds r0, r1
lsls r0, 2
adds r0, r2
- ldr r1, _0803233C @ =gUnknown_02024E84
+ ldr r1, _0803233C @ =gBattleMonForms
add r1, r8
ldrb r1, [r1]
bl StartSpriteAnim
@@ -2033,7 +2033,7 @@ _0803232C: .4byte 0x040000d4
_08032330: .4byte 0x84000200
_08032334: .4byte 0x02000000
_08032338: .4byte SPECIES_CASTFORM
-_0803233C: .4byte gUnknown_02024E84
+_0803233C: .4byte gBattleMonForms
_08032340: .4byte 0x00007fff
_08032344: .4byte gPlttBufferFaded
_08032348: .4byte gPlttBufferUnfaded
@@ -2192,7 +2192,7 @@ refresh_graphics_maybe: @ 8032464
lsls r0, 2
ldr r1, _080324A0 @ =gSprites
adds r4, r0, r1
- ldr r0, _080324A4 @ =gUnknown_02024E84
+ ldr r0, _080324A4 @ =gBattleMonForms
adds r0, r6, r0
ldrb r1, [r0]
adds r0, r4, 0
@@ -2204,7 +2204,7 @@ refresh_graphics_maybe: @ 8032464
b _080324AE
.align 2, 0
_080324A0: .4byte gSprites
-_080324A4: .4byte gUnknown_02024E84
+_080324A4: .4byte gBattleMonForms
_080324A8:
adds r0, r6, 0
bl sub_8077F68
@@ -3001,7 +3001,7 @@ sub_8032AA8: @ 8032AA8
movs r3, 0
movs r0, 0
strh r0, [r2, 0x2]
- ldr r0, _08032AD8 @ =gUnknown_02024E84
+ ldr r0, _08032AD8 @ =gBattleMonForms
adds r0, r4, r0
strb r3, [r0]
cmp r1, 0
@@ -3014,7 +3014,7 @@ _08032ACC:
bx r0
.align 2, 0
_08032AD4: .4byte 0x02017800
-_08032AD8: .4byte gUnknown_02024E84
+_08032AD8: .4byte gBattleMonForms
thumb_func_end sub_8032AA8
thumb_func_start nullsub_45
diff --git a/asm/battle_8.s b/asm/battle_8.s
index c0a33970f..0e4925dfb 100644
--- a/asm/battle_8.s
+++ b/asm/battle_8.s
@@ -2323,7 +2323,7 @@ sub_80347B8: @ 80347B8
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08034904 @ =gUnknown_02024E84
+ ldr r1, _08034904 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
@@ -2362,7 +2362,7 @@ _080348F4: .4byte gUnknown_02024E8C
_080348F8: .4byte gUnknown_02024BE0
_080348FC: .4byte gSprites
_08034900: .4byte 0x0000ff10
-_08034904: .4byte gUnknown_02024E84
+_08034904: .4byte gBattleMonForms
_08034908: .4byte gUnknown_03004330
_0803490C: .4byte sub_8033018
thumb_func_end sub_80347B8
@@ -2525,7 +2525,7 @@ sub_803495C: @ 803495C
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08034AD8 @ =gUnknown_02024E84
+ ldr r1, _08034AD8 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -2576,7 +2576,7 @@ _08034AC8: .4byte gUnknown_0300434C
_08034ACC: .4byte gUnknown_02024E8C
_08034AD0: .4byte gUnknown_02024BE0
_08034AD4: .4byte gSprites
-_08034AD8: .4byte gUnknown_02024E84
+_08034AD8: .4byte gBattleMonForms
_08034ADC: .4byte SpriteCallbackDummy
thumb_func_end sub_803495C
diff --git a/asm/battle_811DA74.s b/asm/battle_811DA74.s
index 3bdc8e243..4190b2400 100644
--- a/asm/battle_811DA74.s
+++ b/asm/battle_811DA74.s
@@ -1301,7 +1301,7 @@ sub_811F6D8: @ 811F6D8
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _0811F7E8 @ =gUnknown_02024E84
+ ldr r1, _0811F7E8 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
@@ -1324,7 +1324,7 @@ _0811F7D8: .4byte gUnknown_02024E8C
_0811F7DC: .4byte gUnknown_02024BE0
_0811F7E0: .4byte gSprites
_0811F7E4: .4byte 0x0000ff10
-_0811F7E8: .4byte gUnknown_02024E84
+_0811F7E8: .4byte gBattleMonForms
_0811F7EC: .4byte gUnknown_03004330
_0811F7F0: .4byte sub_811DDE8
thumb_func_end sub_811F6D8
@@ -1492,7 +1492,7 @@ sub_811F864: @ 811F864
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _0811F9C8 @ =gUnknown_02024E84
+ ldr r1, _0811F9C8 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -1543,7 +1543,7 @@ _0811F9B8: .4byte gUnknown_0300434C
_0811F9BC: .4byte gUnknown_02024E8C
_0811F9C0: .4byte gUnknown_02024BE0
_0811F9C4: .4byte gSprites
-_0811F9C8: .4byte gUnknown_02024E84
+_0811F9C8: .4byte gBattleMonForms
_0811F9CC: .4byte SpriteCallbackDummy
thumb_func_end sub_811F864
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s
index e0e92a074..be80cc44f 100644
--- a/asm/battle_anim_80CA710.s
+++ b/asm/battle_anim_80CA710.s
@@ -54891,7 +54891,7 @@ sub_80E4EF8: @ 80E4EF8
ldr r1, _080E4FD0 @ =gUnknown_081FAF4C
lsls r4, 2
adds r4, r1
- ldr r1, _080E4FD4 @ =gUnknown_02024E84
+ ldr r1, _080E4FD4 @ =gBattleMonForms
adds r0, r1
ldrb r1, [r0]
lsls r1, 11
@@ -54962,7 +54962,7 @@ _080E4FBC:
.align 2, 0
_080E4FCC: .4byte 0x040000d4
_080E4FD0: .4byte gUnknown_081FAF4C
-_080E4FD4: .4byte gUnknown_02024E84
+_080E4FD4: .4byte gBattleMonForms
_080E4FD8: .4byte 0x80000400
thumb_func_end sub_80E4EF8
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
index e89de30c1..28f6f9ada 100644
--- a/asm/battle_anim_812C144.s
+++ b/asm/battle_anim_812C144.s
@@ -3144,7 +3144,7 @@ _0812D906:
ldr r0, _0812D9CC @ =gUnknown_081FAF4C
lsls r1, 2
adds r1, r0
- ldr r2, _0812D9D0 @ =gUnknown_02024E84
+ ldr r2, _0812D9D0 @ =gBattleMonForms
ldr r0, _0812D9D4 @ =gBattleAnimPlayerMonIndex
ldrb r0, [r0]
adds r0, r2
@@ -3243,7 +3243,7 @@ _0812D9A2:
b _0812DA0A
.align 2, 0
_0812D9CC: .4byte gUnknown_081FAF4C
-_0812D9D0: .4byte gUnknown_02024E84
+_0812D9D0: .4byte gBattleMonForms
_0812D9D4: .4byte gBattleAnimPlayerMonIndex
_0812D9D8: .4byte 0x040000d4
_0812D9DC: .4byte 0x84000200
diff --git a/asm/battle_anim_8137220.s b/asm/battle_anim_8137220.s
index 016548a1f..134e18e6f 100644
--- a/asm/battle_anim_8137220.s
+++ b/asm/battle_anim_8137220.s
@@ -4812,7 +4812,7 @@ sub_81398BC: @ 81398BC
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08139A24 @ =gUnknown_02024E84
+ ldr r1, _08139A24 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -4864,7 +4864,7 @@ _08139A14: .4byte gUnknown_0300434C
_08139A18: .4byte gUnknown_02024E8C
_08139A1C: .4byte gUnknown_02024BE0
_08139A20: .4byte gSprites
-_08139A24: .4byte gUnknown_02024E84
+_08139A24: .4byte gBattleMonForms
_08139A28: .4byte SpriteCallbackDummy
thumb_func_end sub_81398BC
diff --git a/asm/contest.s b/asm/contest.s
index fe3536218..3f53a31e9 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -420,7 +420,7 @@ _080AB4E0:
adds r0, r1
movs r1, 0
strb r1, [r0]
- bl sub_8040710
+ bl ClearBattleMonForms
bl sub_80AB398
ldr r1, _080AB54C @ =gMain
ldr r0, _080AB550 @ =0x0000043c
@@ -2294,7 +2294,7 @@ _080AC534:
lsls r4, 2
mov r9, r4
ldr r4, _080AC5C4 @ =0x02019348
- ldr r1, _080AC5C8 @ =gUnknown_02024E84
+ ldr r1, _080AC5C8 @ =gBattleMonForms
movs r2, 0
adds r0, r1, 0x3
_080AC542:
@@ -2358,7 +2358,7 @@ _080AC542:
bl _080AD8CA
.align 2, 0
_080AC5C4: .4byte 0x02019348
-_080AC5C8: .4byte gUnknown_02024E84
+_080AC5C8: .4byte gBattleMonForms
_080AC5CC: .4byte 0xfffffebc
_080AC5D0: .4byte gContestMons
_080AC5D4: .4byte gSprites
@@ -15035,7 +15035,7 @@ sub_80B2790: @ 80B2790
movs r2, 0x14
bl memset
bl battle_anim_clear_some_data
- ldr r1, _080B27F8 @ =gUnknown_02024E84
+ ldr r1, _080B27F8 @ =gBattleMonForms
movs r2, 0
adds r0, r1, 0x3
_080B27D0:
@@ -15057,7 +15057,7 @@ _080B27D0:
.align 2, 0
_080B27F0: .4byte 0x02019260
_080B27F4: .4byte gContestMons
-_080B27F8: .4byte gUnknown_02024E84
+_080B27F8: .4byte gBattleMonForms
_080B27FC:
cmp r5, 0x82
beq _080B2898
diff --git a/asm/daycare.s b/asm/daycare.s
index 886643fce..86beb9ca3 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -1202,7 +1202,7 @@ _08041C18:
lsls r0, 16
lsrs r0, 16
ldr r1, _08041CD8 @ =gUnknown_03000470
- bl sub_804051C
+ bl GetLevelUpMovesBySpecies
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
diff --git a/asm/learn_move.s b/asm/learn_move.s
index d10cc5cd5..84d244fe8 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -1815,7 +1815,7 @@ sub_8133558: @ 8133558
ldr r2, _081335FC @ =gPlayerParty
adds r0, r2
adds r1, 0x20
- bl sub_80403CC
+ bl GetMoveRelearnerMoves
ldr r1, [r5]
strb r0, [r1, 0x1A]
movs r4, 0
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index 7596de54f..53015de14 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -6,462 +6,6 @@
.text
- thumb_func_start sub_80403CC
-sub_80403CC: @ 80403CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r6, r0, 0
- str r1, [sp, 0x8]
- movs r0, 0
- mov r10, r0
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r6, 0
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- movs r5, 0
- mov r4, sp
-_08040402:
- adds r1, r5, 0
- adds r1, 0xD
- adds r0, r6, 0
- movs r2, 0
- bl GetMonData
- strh r0, [r4]
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _08040402
- movs r5, 0
- ldr r6, _08040510 @ =gLevelUpLearnsets
- lsls r1, r7, 2
- adds r2, r1, r6
- ldr r3, [r2]
- ldrh r0, [r3]
- ldr r4, _08040514 @ =0x0000ffff
- str r1, [sp, 0x14]
- cmp r0, r4
- beq _080404FC
- mov r9, r2
- str r3, [sp, 0x10]
-_08040430:
- lsls r2, r5, 1
- ldr r1, [sp, 0x10]
- adds r0, r2, r1
- ldrh r3, [r0]
- movs r0, 0xFE
- lsls r0, 8
- ands r0, r3
- ldr r4, [sp, 0xC]
- lsls r1, r4, 9
- adds r7, r2, 0
- adds r5, 0x1
- mov r12, r5
- cmp r0, r1
- bgt _080404E6
- movs r4, 0
- mov r0, sp
- ldrh r1, [r0]
- ldr r0, _08040518 @ =0x000001ff
- ands r0, r3
- cmp r1, r0
- beq _08040480
- ldr r0, [sp, 0x14]
- ldr r1, _08040510 @ =gLevelUpLearnsets
- adds r6, r0, r1
- ldr r2, _08040518 @ =0x000001ff
- mov r8, r2
- mov r3, sp
- adds r5, r7, 0
-_08040468:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08040480
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _08040468
-_08040480:
- cmp r4, 0x4
- bne _080404E6
- movs r4, 0
- cmp r4, r10
- bge _080404C4
- mov r1, r9
- ldr r0, [r1]
- adds r0, r7, r0
- ldrh r1, [r0]
- ldr r0, [sp, 0x8]
- ldrh r2, [r0]
- ldr r0, _08040518 @ =0x000001ff
- ands r0, r1
- cmp r2, r0
- beq _080404C4
- ldr r1, [sp, 0x14]
- ldr r2, _08040510 @ =gLevelUpLearnsets
- adds r6, r1, r2
- ldr r0, _08040518 @ =0x000001ff
- mov r8, r0
- ldr r3, [sp, 0x8]
- adds r5, r7, 0
-_080404AC:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, r10
- bge _080404C4
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _080404AC
-_080404C4:
- cmp r4, r10
- bne _080404E6
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r2, r4, 1
- ldr r1, [sp, 0x8]
- adds r2, r1
- mov r4, r9
- ldr r0, [r4]
- adds r0, r7, r0
- ldrh r1, [r0]
- ldr r0, _08040518 @ =0x000001ff
- ands r0, r1
- strh r0, [r2]
-_080404E6:
- mov r5, r12
- cmp r5, 0x13
- bgt _080404FC
- mov r1, r9
- ldr r0, [r1]
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r2, _08040514 @ =0x0000ffff
- cmp r0, r2
- bne _08040430
-_080404FC:
- mov r0, r10
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08040510: .4byte gLevelUpLearnsets
-_08040514: .4byte 0x0000ffff
-_08040518: .4byte 0x000001ff
- thumb_func_end sub_80403CC
-
- thumb_func_start sub_804051C
-sub_804051C: @ 804051C
- push {r4-r7,lr}
- adds r6, r1, 0
- lsls r0, 16
- movs r5, 0
- movs r4, 0
- ldr r1, _08040568 @ =gLevelUpLearnsets
- lsrs r0, 14
- adds r0, r1
- ldr r2, [r0]
- ldrh r0, [r2]
- ldr r1, _0804056C @ =0x0000ffff
- cmp r0, r1
- beq _08040560
- ldr r0, _08040570 @ =0x000001ff
- mov r12, r0
- adds r7, r1, 0
- adds r3, r2, 0
-_0804053E:
- adds r1, r5, 0
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 1
- adds r1, r6
- ldrh r2, [r3]
- mov r0, r12
- ands r0, r2
- strh r0, [r1]
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x13
- bgt _08040560
- ldrh r0, [r3]
- cmp r0, r7
- bne _0804053E
-_08040560:
- adds r0, r5, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08040568: .4byte gLevelUpLearnsets
-_0804056C: .4byte 0x0000ffff
-_08040570: .4byte 0x000001ff
- thumb_func_end sub_804051C
-
- thumb_func_start sub_8040574
-sub_8040574: @ 8040574
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x3C
- adds r6, r0, 0
- movs r0, 0
- mov r10, r0
- adds r0, r6, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r6, 0
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x30]
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bne _080405B0
- movs r0, 0
- b _080406BA
-_080405B0:
- movs r5, 0
- lsls r4, 2
- str r4, [sp, 0x38]
- mov r4, sp
-_080405B8:
- adds r1, r5, 0
- adds r1, 0xD
- adds r0, r6, 0
- movs r2, 0
- bl GetMonData
- strh r0, [r4]
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _080405B8
- movs r5, 0
- ldr r3, _080406CC @ =gLevelUpLearnsets
- ldr r2, [sp, 0x38]
- adds r1, r2, r3
- ldr r0, [r1]
- ldrh r0, [r0]
- ldr r2, _080406D0 @ =0x0000ffff
- cmp r0, r2
- beq _080406B8
- mov r9, r1
- mov r4, sp
- adds r4, 0x8
- str r4, [sp, 0x34]
-_080405E8:
- mov r1, r9
- ldr r0, [r1]
- lsls r2, r5, 1
- adds r0, r2, r0
- ldrh r3, [r0]
- movs r0, 0xFE
- lsls r0, 8
- ands r0, r3
- ldr r4, [sp, 0x30]
- lsls r1, r4, 9
- adds r7, r2, 0
- adds r5, 0x1
- mov r12, r5
- cmp r0, r1
- bgt _080406A2
- movs r4, 0
- mov r0, sp
- ldrh r1, [r0]
- ldr r0, _080406D4 @ =0x000001ff
- ands r0, r3
- cmp r1, r0
- beq _0804063A
- ldr r0, [sp, 0x38]
- ldr r1, _080406CC @ =gLevelUpLearnsets
- adds r6, r0, r1
- ldr r2, _080406D4 @ =0x000001ff
- mov r8, r2
- mov r3, sp
- adds r5, r7, 0
-_08040622:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0804063A
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _08040622
-_0804063A:
- cmp r4, 0x4
- bne _080406A2
- movs r4, 0
- cmp r4, r10
- bge _08040680
- mov r1, r9
- ldr r0, [r1]
- adds r0, r7, r0
- ldrh r1, [r0]
- ldr r0, [sp, 0x34]
- ldrh r2, [r0]
- ldr r0, _080406D4 @ =0x000001ff
- ands r0, r1
- add r1, sp, 0x8
- cmp r2, r0
- beq _08040680
- ldr r2, [sp, 0x38]
- ldr r0, _080406CC @ =gLevelUpLearnsets
- adds r6, r2, r0
- ldr r2, _080406D4 @ =0x000001ff
- mov r8, r2
- adds r3, r1, 0
- adds r5, r7, 0
-_08040668:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, r10
- bge _08040680
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _08040668
-_08040680:
- cmp r4, r10
- bne _080406A2
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r2, r4, 1
- ldr r4, [sp, 0x34]
- adds r2, r4, r2
- mov r1, r9
- ldr r0, [r1]
- adds r0, r7, r0
- ldrh r1, [r0]
- ldr r0, _080406D4 @ =0x000001ff
- ands r0, r1
- strh r0, [r2]
-_080406A2:
- mov r5, r12
- cmp r5, 0x13
- bgt _080406B8
- mov r2, r9
- ldr r0, [r2]
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r4, _080406D0 @ =0x0000ffff
- cmp r0, r4
- bne _080405E8
-_080406B8:
- mov r0, r10
-_080406BA:
- add sp, 0x3C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080406CC: .4byte gLevelUpLearnsets
-_080406D0: .4byte 0x0000ffff
-_080406D4: .4byte 0x000001ff
- thumb_func_end sub_8040574
-
- thumb_func_start SpeciesToPokedexNum
-SpeciesToPokedexNum: @ 80406D8
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _080406F2
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- b _0804070A
-_080406F2:
- adds r0, r4, 0
- bl SpeciesToHoennPokedexNum
- adds r4, r0, 0
- cmp r4, 0xCA
- bls _08040708
- ldr r0, _08040704 @ =0x0000ffff
- b _0804070A
- .align 2, 0
-_08040704: .4byte 0x0000ffff
-_08040708:
- adds r0, r4, 0
-_0804070A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end SpeciesToPokedexNum
-
- thumb_func_start sub_8040710
-sub_8040710: @ 8040710
- push {lr}
- ldr r1, _08040724 @ =gUnknown_02024E84
- movs r2, 0
- adds r0, r1, 0x3
-_08040718:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08040718
- pop {r0}
- bx r0
- .align 2, 0
-_08040724: .4byte gUnknown_02024E84
- thumb_func_end sub_8040710
-
thumb_func_start sub_8040728
sub_8040728: @ 8040728
push {lr}
diff --git a/asm/rom5.s b/asm/rom5.s
index 3e0ebe208..93f73dca8 100644
--- a/asm/rom5.s
+++ b/asm/rom5.s
@@ -636,7 +636,7 @@ _0807B1FE:
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _0807B2D4 @ =gUnknown_02024E84
+ ldr r1, _0807B2D4 @ =gBattleMonForms
adds r1, r7, r1
ldrb r1, [r1]
bl StartSpriteAnim
@@ -648,7 +648,7 @@ _0807B2C4: .4byte gUnknown_02024E8C
_0807B2C8: .4byte gUnknown_02024BE0
_0807B2CC: .4byte gSprites
_0807B2D0: .4byte SpriteCallbackDummy
-_0807B2D4: .4byte gUnknown_02024E84
+_0807B2D4: .4byte gBattleMonForms
_0807B2D8:
ldr r2, _0807B328 @ =gBattleTypeFlags
ldrh r1, [r2]
@@ -860,7 +860,7 @@ _0807B3D0:
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _0807B500 @ =gUnknown_02024E84
+ ldr r1, _0807B500 @ =gBattleMonForms
adds r1, r7, r1
ldrb r1, [r1]
bl StartSpriteAnim
@@ -903,7 +903,7 @@ _0807B4F0: .4byte gUnknown_02024E8C
_0807B4F4: .4byte gUnknown_02024BE0
_0807B4F8: .4byte gSprites
_0807B4FC: .4byte SpriteCallbackDummy
-_0807B500: .4byte gUnknown_02024E84
+_0807B500: .4byte gBattleMonForms
_0807B504: .4byte 0x02017800
thumb_func_end sub_807B184
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 857eb5935..3f857a599 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -84,6 +84,8 @@ extern struct BaseStats gBaseStats[];
extern u32 gBitTable[];
extern u32 gExperienceTables[8][101];
extern u32 gTMHMLearnsets[][2];
+extern const u16 *gLevelUpLearnsets[];
+extern u8 gBattleMonForms[];
extern u8 gUnknown_082082F8[];
extern u8 gUnknown_083FFDB3[];
@@ -1013,3 +1015,118 @@ u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm)
return gTMHMLearnsets[species][1] & mask;
}
}
+
+u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves)
+{
+ u16 learnedMoves[4];
+ u8 numMoves = 0;
+ u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
+ u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
+ int i, j, k;
+
+ for (i = 0; i < 4; i++)
+ learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0);
+
+ for (i = 0; i < 20; i++)
+ {
+ u16 moveLevel;
+
+ if (gLevelUpLearnsets[species][i] == 0xFFFF)
+ break;
+
+ moveLevel = gLevelUpLearnsets[species][i] & 0xFE00;
+
+ if (moveLevel <= (level << 9))
+ {
+ for (j = 0; j < 4 && learnedMoves[j] != (gLevelUpLearnsets[species][i] & 0x1FF); j++)
+ ;
+
+ if (j == 4)
+ {
+ for (k = 0; k < numMoves && moves[k] != (gLevelUpLearnsets[species][i] & 0x1FF); k++)
+ ;
+
+ if (k == numMoves)
+ moves[numMoves++] = gLevelUpLearnsets[species][i] & 0x1FF;
+ }
+ }
+ }
+
+ return numMoves;
+}
+
+u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves)
+{
+ u8 numMoves = 0;
+ int i;
+
+ for (i = 0; i < 20 && gLevelUpLearnsets[species][i] != 0xFFFF; i++)
+ moves[numMoves++] = gLevelUpLearnsets[species][i] & 0x1FF;
+
+ return numMoves;
+}
+
+u8 sub_8040574(struct Pokemon *mon)
+{
+ u16 learnedMoves[4];
+ u16 moves[20];
+ u8 numMoves = 0;
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
+ u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
+ int i, j, k;
+
+ if (species == SPECIES_EGG)
+ return 0;
+
+ for (i = 0; i < 4; i++)
+ learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0);
+
+ for (i = 0; i < 20; i++)
+ {
+ u16 moveLevel;
+
+ if (gLevelUpLearnsets[species][i] == 0xFFFF)
+ break;
+
+ moveLevel = gLevelUpLearnsets[species][i] & 0xFE00;
+
+ if (moveLevel <= (level << 9))
+ {
+ for (j = 0; j < 4 && learnedMoves[j] != (gLevelUpLearnsets[species][i] & 0x1FF); j++)
+ ;
+
+ if (j == 4)
+ {
+ for (k = 0; k < numMoves && moves[k] != (gLevelUpLearnsets[species][i] & 0x1FF); k++)
+ ;
+
+ if (k == numMoves)
+ moves[numMoves++] = gLevelUpLearnsets[species][i] & 0x1FF;
+ }
+ }
+ }
+
+ return numMoves;
+}
+
+u16 SpeciesToPokedexNum(u16 species)
+{
+ if (IsNationalPokedexEnabled())
+ {
+ return SpeciesToNationalPokedexNum(species);
+ }
+ else
+ {
+ species = SpeciesToHoennPokedexNum(species);
+ if (species <= 202)
+ return species;
+ return 0xFFFF;
+ }
+}
+
+void ClearBattleMonForms(void)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ gBattleMonForms[i] = 0;
+}
diff --git a/src/rom3.c b/src/rom3.c
index 351d5d44b..b0ef7f088 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -56,7 +56,7 @@ extern void sub_8083C50(u8);
extern void nullsub_41(void);
extern void nullsub_91(void);
extern void battle_anim_clear_some_data(void);
-extern void sub_8040710(void);
+extern void ClearBattleMonForms(void);
extern void BattleAI_HandleItemUseBeforeAISetup(void);
extern void sub_8094978(u8, int);
extern void sub_800BA78(void);
@@ -102,7 +102,7 @@ void setup_poochyena_battle(void)
sub_800B858();
gUnknown_02024A64 = 0;
battle_anim_clear_some_data();
- sub_8040710();
+ ClearBattleMonForms();
BattleAI_HandleItemUseBeforeAISetup();
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 2d7691033..b216bbe97 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -20,7 +20,6 @@
#define NUM_BATTLE_SLOTS 4
#define gBattleMonPartyPositions gUnknown_02024A6A
-#define gBattleMonForms gUnknown_02024E84
#define gCastformFrontSpriteCoords gUnknownCastformCoords_0837F598
#define gCastformElevations gUnknownCastformData_0837F5A8
#define gCastformBackSpriteYCoords gUnknown_0837F5AC
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f4a688968..c42ba4c5b 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -296,7 +296,7 @@ gBattleMovePower: @ 2024E80
word_2024E82: @ 2024E82
.space 0x2
-gUnknown_02024E84: @ 2024E84
+gBattleMonForms: @ 2024E84
.space 0x4
byte_2024E88: @ 2024E88