summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2018-10-10 00:47:44 -0400
committerProjectRevoTPP <projectrevotpp@hotmail.com>2018-10-10 00:47:44 -0400
commit05d03f7f3256b143a01506421c19964bcceaea5c (patch)
treed45390654cd3f80ffccd4af95760133ef77366bd
parent799a9ccfe28999477776cd3ae79ff0d32c836565 (diff)
decompile up to sub_80444C4
-rw-r--r--asm/battle_2.s10
-rw-r--r--asm/battle_anim_8074480.s16
-rw-r--r--asm/battle_anim_80A22E8.s4
-rw-r--r--asm/battle_anim_80DE2C0.s4
-rw-r--r--asm/battle_controller_link_opponent.s8
-rw-r--r--asm/battle_controller_link_partner.s8
-rw-r--r--asm/battle_controller_oak.s4
-rw-r--r--asm/battle_controller_opponent.s8
-rw-r--r--asm/battle_controller_player.s4
-rw-r--r--asm/battle_controller_pokedude.s8
-rw-r--r--asm/battle_controllers.s2
-rw-r--r--asm/battle_gfx_sfx_util.s34
-rw-r--r--asm/battle_message.s8
-rw-r--r--asm/field_effect.s4
-rw-r--r--asm/pokemon_3.s1306
-rw-r--r--asm/reshow_battle_screen.s8
-rw-r--r--data/data.s10
-rw-r--r--data/data_84827AC.s2
-rw-r--r--include/battle.h6
-rw-r--r--src/pokemon.c411
-rw-r--r--sym_ewram.txt2
21 files changed, 482 insertions, 1385 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
index 4775fc06b..8e620bd18 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -4155,7 +4155,7 @@ _08011F50:
cmp r4, r0
bne _08011F74
ldr r0, _08011F6C @ =gUnknown_83AE03C
- ldr r1, _08011F70 @ =gUnknown_2024024
+ ldr r1, _08011F70 @ =gBattleMonForms
adds r1, r6, r1
ldrb r1, [r1]
lsls r1, 2
@@ -4165,7 +4165,7 @@ _08011F50:
.align 2, 0
_08011F68: .4byte 0x00000181
_08011F6C: .4byte gUnknown_83AE03C
-_08011F70: .4byte gUnknown_2024024
+_08011F70: .4byte gBattleMonForms
_08011F74:
movs r0, 0xCE
lsls r0, 1
@@ -4240,7 +4240,7 @@ _08011FE8:
lsrs r0, 22
adds r1, 0x4
adds r1, r0
- ldr r2, _08012040 @ =gUnknown_2024024
+ ldr r2, _08012040 @ =gBattleMonForms
movs r3, 0x2E
ldrsh r0, [r4, r3]
adds r0, r2
@@ -4260,7 +4260,7 @@ _0801201A:
subs r0, 0x1
cmp r0, 0
bge _0801201A
- ldr r0, _08012040 @ =gUnknown_2024024
+ ldr r0, _08012040 @ =gBattleMonForms
movs r3, 0x2E
ldrsh r1, [r4, r3]
adds r1, r0
@@ -4273,7 +4273,7 @@ _08012034:
bx r0
.align 2, 0
_0801203C: .4byte gMonSpritesGfxPtr
-_08012040: .4byte gUnknown_2024024
+_08012040: .4byte gBattleMonForms
thumb_func_end sub_8011FB4
thumb_func_start sub_8012044
diff --git a/asm/battle_anim_8074480.s b/asm/battle_anim_8074480.s
index a80d7f759..1881e7a8f 100644
--- a/asm/battle_anim_8074480.s
+++ b/asm/battle_anim_8074480.s
@@ -227,7 +227,7 @@ _08074638:
cmp r4, r0
bne _08074658
ldr r0, _08074650 @ =gUnknown_83AE050
- ldr r1, _08074654 @ =gUnknown_2024024
+ ldr r1, _08074654 @ =gBattleMonForms
adds r1, r5, r1
ldrb r1, [r1]
adds r1, r0
@@ -236,7 +236,7 @@ _08074638:
.align 2, 0
_0807464C: .4byte 0x00000181
_08074650: .4byte gUnknown_83AE050
-_08074654: .4byte gUnknown_2024024
+_08074654: .4byte gBattleMonForms
_08074658:
movs r0, 0xCE
lsls r0, 1
@@ -328,7 +328,7 @@ _08074704:
cmp r4, r0
bne _08074728
ldr r0, _08074720 @ =gUnknown_83AE03C
- ldr r1, _08074724 @ =gUnknown_2024024
+ ldr r1, _08074724 @ =gBattleMonForms
adds r1, r6, r1
ldrb r1, [r1]
lsls r1, 2
@@ -338,7 +338,7 @@ _08074704:
.align 2, 0
_0807471C: .4byte 0x00000181
_08074720: .4byte gUnknown_83AE03C
-_08074724: .4byte gUnknown_2024024
+_08074724: .4byte gBattleMonForms
_08074728:
movs r0, 0xCE
lsls r0, 1
@@ -382,7 +382,7 @@ sub_807474C: @ 807474C
cmp r4, r0
bne _08074788
ldr r0, _08074780 @ =gUnknown_83AE04C
- ldr r1, _08074784 @ =gUnknown_2024024
+ ldr r1, _08074784 @ =gBattleMonForms
adds r1, r6, r1
ldrb r1, [r1]
adds r1, r0
@@ -391,7 +391,7 @@ sub_807474C: @ 807474C
.align 2, 0
_0807477C: .4byte 0x00000181
_08074780: .4byte gUnknown_83AE04C
-_08074784: .4byte gUnknown_2024024
+_08074784: .4byte gBattleMonForms
_08074788:
movs r0, 0xCE
lsls r0, 1
@@ -5431,7 +5431,7 @@ _08076CA6:
ldr r0, _08076CBC @ =0x00000181
cmp r7, r0
bne _08076CC8
- ldr r0, _08076CC0 @ =gUnknown_2024024
+ ldr r0, _08076CC0 @ =gBattleMonForms
add r0, r8
ldrb r0, [r0]
lsls r0, 2
@@ -5440,7 +5440,7 @@ _08076CA6:
b _08076CDE
.align 2, 0
_08076CBC: .4byte 0x00000181
-_08076CC0: .4byte gUnknown_2024024
+_08076CC0: .4byte gBattleMonForms
_08076CC4: .4byte gUnknown_83AE03C
_08076CC8:
movs r0, 0xCE
diff --git a/asm/battle_anim_80A22E8.s b/asm/battle_anim_80A22E8.s
index 7eaeff07e..2c5feb2f1 100644
--- a/asm/battle_anim_80A22E8.s
+++ b/asm/battle_anim_80A22E8.s
@@ -55250,7 +55250,7 @@ sub_80BCEF4: @ 80BCEF4
lsls r4, 2
adds r2, 0x4
adds r2, r4
- ldr r1, _080BCFC8 @ =gUnknown_2024024
+ ldr r1, _080BCFC8 @ =gBattleMonForms
adds r0, r1
ldrb r1, [r0]
lsls r1, 11
@@ -55320,7 +55320,7 @@ _080BCFA0:
bx r0
.align 2, 0
_080BCFC4: .4byte gMonSpritesGfxPtr
-_080BCFC8: .4byte gUnknown_2024024
+_080BCFC8: .4byte gBattleMonForms
thumb_func_end sub_80BCEF4
thumb_func_start sub_80BCFCC
diff --git a/asm/battle_anim_80DE2C0.s b/asm/battle_anim_80DE2C0.s
index 7ee2d2075..9b56509a2 100644
--- a/asm/battle_anim_80DE2C0.s
+++ b/asm/battle_anim_80DE2C0.s
@@ -3164,7 +3164,7 @@ _080DFAC6:
lsls r0, r1, 2
adds r2, 0x4
adds r2, r0
- ldr r1, _080DFB0C @ =gUnknown_2024024
+ ldr r1, _080DFB0C @ =gBattleMonForms
ldr r0, _080DFB10 @ =gUnknown_2037F1A
ldrb r0, [r0]
adds r0, r1
@@ -3193,7 +3193,7 @@ _080DFB00:
b _080DFBCE
.align 2, 0
_080DFB08: .4byte gMonSpritesGfxPtr
-_080DFB0C: .4byte gUnknown_2024024
+_080DFB0C: .4byte gBattleMonForms
_080DFB10: .4byte gUnknown_2037F1A
_080DFB14: .4byte 0x04000200
_080DFB18: .4byte gTasks
diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s
index 564fb7e3c..d5a9b8ae6 100644
--- a/asm/battle_controller_link_opponent.s
+++ b/asm/battle_controller_link_opponent.s
@@ -3641,7 +3641,7 @@ LinkOpponentHandleLoadPokeSprite: @ 803C3B4
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _0803C4F8 @ =gUnknown_2024024
+ ldr r1, _0803C4F8 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
@@ -3681,7 +3681,7 @@ _0803C4E8: .4byte gMultiuseSpriteTemplate
_0803C4EC: .4byte gUnknown_2023D44
_0803C4F0: .4byte gSprites
_0803C4F4: .4byte 0x0000ff10
-_0803C4F8: .4byte gUnknown_2024024
+_0803C4F8: .4byte gBattleMonForms
_0803C4FC: .4byte gUnknown_3004FE0
_0803C500: .4byte sub_803AC14
thumb_func_end LinkOpponentHandleLoadPokeSprite
@@ -3844,7 +3844,7 @@ sub_803C550: @ 803C550
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _0803C6CC @ =gUnknown_2024024
+ ldr r1, _0803C6CC @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -3895,7 +3895,7 @@ _0803C6BC: .4byte gUnknown_3004FFC
_0803C6C0: .4byte gMultiuseSpriteTemplate
_0803C6C4: .4byte gUnknown_2023D44
_0803C6C8: .4byte gSprites
-_0803C6CC: .4byte gUnknown_2024024
+_0803C6CC: .4byte gBattleMonForms
_0803C6D0: .4byte SpriteCallbackDummy
thumb_func_end sub_803C550
diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s
index 57c231075..7480e8b12 100644
--- a/asm/battle_controller_link_partner.s
+++ b/asm/battle_controller_link_partner.s
@@ -3435,7 +3435,7 @@ LinkPartnerHandleLoadPokeSprite: @ 80D5DB4
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _080D5EC4 @ =gUnknown_2024024
+ ldr r1, _080D5EC4 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
@@ -3458,7 +3458,7 @@ _080D5EB4: .4byte gMultiuseSpriteTemplate
_080D5EB8: .4byte gUnknown_2023D44
_080D5EBC: .4byte gSprites
_080D5EC0: .4byte 0x0000ff10
-_080D5EC4: .4byte gUnknown_2024024
+_080D5EC4: .4byte gBattleMonForms
_080D5EC8: .4byte gUnknown_3004FE0
_080D5ECC: .4byte sub_80D4590
thumb_func_end LinkPartnerHandleLoadPokeSprite
@@ -3626,7 +3626,7 @@ sub_80D5F40: @ 80D5F40
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _080D60A4 @ =gUnknown_2024024
+ ldr r1, _080D60A4 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -3677,7 +3677,7 @@ _080D6094: .4byte gUnknown_3004FFC
_080D6098: .4byte gMultiuseSpriteTemplate
_080D609C: .4byte gUnknown_2023D44
_080D60A0: .4byte gSprites
-_080D60A4: .4byte gUnknown_2024024
+_080D60A4: .4byte gBattleMonForms
_080D60A8: .4byte SpriteCallbackDummy
thumb_func_end sub_80D5F40
diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s
index 83bbdd333..16fb18cdf 100644
--- a/asm/battle_controller_oak.s
+++ b/asm/battle_controller_oak.s
@@ -7135,7 +7135,7 @@ sub_80EAF34: @ 80EAF34
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _080EB0A0 @ =gUnknown_2024024
+ ldr r1, _080EB0A0 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -7187,7 +7187,7 @@ _080EB090: .4byte gUnknown_3004FFC
_080EB094: .4byte gMultiuseSpriteTemplate
_080EB098: .4byte gUnknown_2023D44
_080EB09C: .4byte gSprites
-_080EB0A0: .4byte gUnknown_2024024
+_080EB0A0: .4byte gBattleMonForms
_080EB0A4: .4byte SpriteCallbackDummy
thumb_func_end sub_80EAF34
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 0c57693bf..0405efdf1 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -3717,7 +3717,7 @@ _080378AA:
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _080379B0 @ =gUnknown_2024024
+ ldr r1, _080379B0 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
@@ -3762,7 +3762,7 @@ _080379A0: .4byte gMultiuseSpriteTemplate
_080379A4: .4byte gUnknown_2023D44
_080379A8: .4byte gSprites
_080379AC: .4byte 0x0000ff10
-_080379B0: .4byte gUnknown_2024024
+_080379B0: .4byte gBattleMonForms
_080379B4: .4byte gBattleTypeFlags
_080379B8: .4byte gBattlerPartyIndexes
_080379BC: .4byte gEnemyParty
@@ -3936,7 +3936,7 @@ sub_8037A28: @ 8037A28
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08037BA4 @ =gUnknown_2024024
+ ldr r1, _08037BA4 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -3987,7 +3987,7 @@ _08037B94: .4byte gUnknown_3004FFC
_08037B98: .4byte gMultiuseSpriteTemplate
_08037B9C: .4byte gUnknown_2023D44
_08037BA0: .4byte gSprites
-_08037BA4: .4byte gUnknown_2024024
+_08037BA4: .4byte gBattleMonForms
_08037BA8: .4byte SpriteCallbackDummy
thumb_func_end sub_8037A28
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index 9b9c5f21d..1ae03fe5e 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -7506,7 +7506,7 @@ sub_8031FF4: @ 8031FF4
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08032158 @ =gUnknown_2024024
+ ldr r1, _08032158 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -7557,7 +7557,7 @@ _08032148: .4byte gUnknown_3004FFC
_0803214C: .4byte gMultiuseSpriteTemplate
_08032150: .4byte gUnknown_2023D44
_08032154: .4byte gSprites
-_08032158: .4byte gUnknown_2024024
+_08032158: .4byte gBattleMonForms
_0803215C: .4byte SpriteCallbackDummy
thumb_func_end sub_8031FF4
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s
index 1f01cec2d..5c3c0ebf0 100644
--- a/asm/battle_controller_pokedude.s
+++ b/asm/battle_controller_pokedude.s
@@ -4001,7 +4001,7 @@ sub_81580E0: @ 81580E0
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08158230 @ =gUnknown_2024024
+ ldr r1, _08158230 @ =gBattleMonForms
adds r2, r1
ldrb r1, [r2]
bl StartSpriteAnim
@@ -4041,7 +4041,7 @@ _08158220: .4byte gMultiuseSpriteTemplate
_08158224: .4byte gUnknown_2023D44
_08158228: .4byte gSprites
_0815822C: .4byte 0x0000ff10
-_08158230: .4byte gUnknown_2024024
+_08158230: .4byte gBattleMonForms
_08158234: .4byte gUnknown_3004FE0
_08158238: .4byte sub_8156184
thumb_func_end sub_81580E0
@@ -6400,7 +6400,7 @@ sub_8159478: @ 8159478
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _081595E4 @ =gUnknown_2024024
+ ldr r1, _081595E4 @ =gBattleMonForms
adds r6, r1
ldrb r1, [r6]
bl StartSpriteAnim
@@ -6452,7 +6452,7 @@ _081595D4: .4byte gUnknown_3004FFC
_081595D8: .4byte gMultiuseSpriteTemplate
_081595DC: .4byte gUnknown_2023D44
_081595E0: .4byte gSprites
-_081595E4: .4byte gUnknown_2024024
+_081595E4: .4byte gBattleMonForms
_081595E8: .4byte SpriteCallbackDummy
thumb_func_end sub_8159478
diff --git a/asm/battle_controllers.s b/asm/battle_controllers.s
index 3305979c3..71c39120f 100644
--- a/asm/battle_controllers.s
+++ b/asm/battle_controllers.s
@@ -81,7 +81,7 @@ _0800D298:
movs r4, 0
str r4, [r0]
bl ClearBattleAnimationVars
- bl sub_8043FBC
+ bl ClearBattleMonForms
bl BattleAI_HandleItemUseBeforeAISetup
ldr r0, _0800D304 @ =gUnknown_2022B54
str r4, [r0]
diff --git a/asm/battle_gfx_sfx_util.s b/asm/battle_gfx_sfx_util.s
index 1aa87e8a4..dd319645e 100644
--- a/asm/battle_gfx_sfx_util.s
+++ b/asm/battle_gfx_sfx_util.s
@@ -348,7 +348,7 @@ TryHandleLaunchBattleTableAnimation: @ 803401C
ands r0, r7
cmp r0, 0
beq _08034064
- ldr r0, _08034060 @ =gUnknown_2024024
+ ldr r0, _08034060 @ =gBattleMonForms
adds r0, r6, r0
movs r2, 0x7F
adds r1, r7, 0
@@ -357,7 +357,7 @@ TryHandleLaunchBattleTableAnimation: @ 803401C
movs r0, 0x1
b _08034132
.align 2, 0
-_08034060: .4byte gUnknown_2024024
+_08034060: .4byte gBattleMonForms
_08034064:
ldr r0, _08034090 @ =gUnknown_2024018
mov r9, r0
@@ -829,7 +829,7 @@ _080343DA:
adds r1, r4
adds r0, r6, 0
bl LZDecompressWram
- ldr r0, _08034480 @ =gUnknown_2024024
+ ldr r0, _08034480 @ =gBattleMonForms
add r0, r8
ldrb r1, [r0]
lsls r1, 5
@@ -872,7 +872,7 @@ _08034468:
.align 2, 0
_08034478: .4byte 0x00000181
_0803447C: .4byte gBattleStruct
-_08034480: .4byte gUnknown_2024024
+_08034480: .4byte gBattleMonForms
_08034484: .4byte gUnknown_2024018
_08034488: .4byte 0x00007fff
_0803448C: .4byte gUnknown_20375F8
@@ -1035,7 +1035,7 @@ _0803459A:
adds r1, r4
adds r0, r6, 0
bl LZDecompressWram
- ldr r0, _08034640 @ =gUnknown_2024024
+ ldr r0, _08034640 @ =gBattleMonForms
add r0, r8
ldrb r1, [r0]
lsls r1, 5
@@ -1077,7 +1077,7 @@ _08034626:
.align 2, 0
_08034638: .4byte 0x00000181
_0803463C: .4byte gBattleStruct
-_08034640: .4byte gUnknown_2024024
+_08034640: .4byte gBattleMonForms
_08034644: .4byte gUnknown_2024018
_08034648: .4byte 0x00007fff
_0803464C: .4byte gUnknown_20375F8
@@ -1927,7 +1927,7 @@ _08034C16:
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08034D7C @ =gUnknown_2024024
+ ldr r1, _08034D7C @ =gBattleMonForms
add r1, r9
ldrb r1, [r1]
bl StartSpriteAnim
@@ -1968,7 +1968,7 @@ _08034D6C: .4byte gUnknown_2023D44
_08034D70: .4byte 0x06010000
_08034D74: .4byte 0x040000d4
_08034D78: .4byte 0x84000200
-_08034D7C: .4byte gUnknown_2024024
+_08034D7C: .4byte gBattleMonForms
_08034D80: .4byte gSpeciesNames
_08034D84: .4byte gUnknown_3004FF0
_08034D88:
@@ -2008,7 +2008,7 @@ _08034D88:
mov r1, r10
movs r2, 0x20
bl LoadPalette
- ldr r1, _08034E38 @ =gUnknown_2024024
+ ldr r1, _08034E38 @ =gBattleMonForms
add r1, r9
ldr r0, [r4]
ldr r0, [r0, 0x8]
@@ -2052,7 +2052,7 @@ _08034E28: .4byte gUnknown_2023D44
_08034E2C: .4byte gSprites
_08034E30: .4byte gUnknown_2024018
_08034E34: .4byte gBattleStruct
-_08034E38: .4byte gUnknown_2024024
+_08034E38: .4byte gBattleMonForms
_08034E3C: .4byte 0x00007fff
_08034E40: .4byte gUnknown_20375F8
_08034E44: .4byte gUnknown_20371F8
@@ -2244,7 +2244,7 @@ _08034F5E:
adds r1, r4
adds r0, r6, 0
bl LZDecompressWram
- ldr r0, _080350A4 @ =gUnknown_2024024
+ ldr r0, _080350A4 @ =gBattleMonForms
ldr r1, [sp]
adds r0, r1, r0
ldrb r1, [r0]
@@ -2276,7 +2276,7 @@ _08034FFC:
adds r0, r3, r0
mov r1, r8
strh r1, [r0, 0x2]
- ldr r0, _080350A4 @ =gUnknown_2024024
+ ldr r0, _080350A4 @ =gBattleMonForms
mov r2, r9
adds r4, r2, r0
ldr r3, [sp]
@@ -2325,7 +2325,7 @@ _08035094: .4byte 0x040000d4
_08035098: .4byte 0x84000200
_0803509C: .4byte 0x00000181
_080350A0: .4byte gBattleStruct
-_080350A4: .4byte gUnknown_2024024
+_080350A4: .4byte gBattleMonForms
_080350A8: .4byte 0x00007fff
_080350AC: .4byte gUnknown_20375F8
_080350B0: .4byte gUnknown_20371F8
@@ -2465,7 +2465,7 @@ LoadBattleMonGfxAndAnimate: @ 80351A8
lsls r0, 2
ldr r1, _080351E4 @ =gSprites
adds r4, r0, r1
- ldr r0, _080351E8 @ =gUnknown_2024024
+ ldr r0, _080351E8 @ =gBattleMonForms
adds r0, r6, r0
ldrb r1, [r0]
adds r0, r4, 0
@@ -2477,7 +2477,7 @@ LoadBattleMonGfxAndAnimate: @ 80351A8
b _080351F2
.align 2, 0
_080351E4: .4byte gSprites
-_080351E8: .4byte gUnknown_2024024
+_080351E8: .4byte gBattleMonForms
_080351EC:
adds r0, r6, 0
bl GetBankSpriteDefault_Y
@@ -3371,7 +3371,7 @@ ClearTemporarySpeciesSpriteData: @ 803589C
movs r3, 0
movs r2, 0
strh r2, [r0, 0x2]
- ldr r0, _080358D0 @ =gUnknown_2024024
+ ldr r0, _080358D0 @ =gBattleMonForms
adds r0, r4, r0
strb r3, [r0]
cmp r1, 0
@@ -3384,7 +3384,7 @@ _080358C4:
bx r0
.align 2, 0
_080358CC: .4byte gUnknown_2024018
-_080358D0: .4byte gUnknown_2024024
+_080358D0: .4byte gBattleMonForms
thumb_func_end ClearTemporarySpeciesSpriteData
thumb_func_start AllocateMonSpritesGfx
diff --git a/asm/battle_message.s b/asm/battle_message.s
index 9e2e38828..0b58fd3fb 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -707,7 +707,7 @@ _080D77F0: .4byte gUnknown_83FDF3C
BattleStringExpandPlaceholdersToDisplayedString: @ 80D77F4
push {lr}
ldr r1, _080D7800 @ =gDisplayedStringBattle
- bl sub_80D7868
+ bl BattleStringExpandPlaceholders
pop {r1}
bx r1
.align 2, 0
@@ -770,8 +770,8 @@ _080D785E:
bx r1
thumb_func_end TryGetStatusString
- thumb_func_start sub_80D7868
-sub_80D7868: @ 80D7868
+ thumb_func_start BattleStringExpandPlaceholders
+BattleStringExpandPlaceholders: @ 80D7868
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -2177,7 +2177,7 @@ _080D83FA:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80D7868
+ thumb_func_end BattleStringExpandPlaceholders
thumb_func_start ExpandBattleTextBuffPlaceholders
ExpandBattleTextBuffPlaceholders: @ 80D8418
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 1382a6dae..df8562b04 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -734,7 +734,7 @@ sub_8083970: @ 8083970
str r2, [sp, 0x4]
movs r1, 0
str r1, [sp, 0x8]
- ldr r1, _080839C0 @ =gUnknown_823730C
+ ldr r1, _080839C0 @ =gMonPaletteTable
lsls r4, r0, 3
adds r4, r1
ldrh r1, [r4, 0x4]
@@ -758,7 +758,7 @@ sub_8083970: @ 8083970
lsrs r0, 24
b _080839CA
.align 2, 0
-_080839C0: .4byte gUnknown_823730C
+_080839C0: .4byte gMonPaletteTable
_080839C4: .4byte 0x0000ffff
_080839C8:
movs r0, 0x40
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index 870757af8..42ab9387b 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -5,1312 +5,6 @@
.text
- thumb_func_start sub_8043B48
-sub_8043B48: @ 8043B48
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- str r3, [sp]
- ldr r2, _08043B88 @ =gExperienceTables
- ldr r3, _08043B8C @ =gBaseStats
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r1
- movs r1, 0xC8
- lsls r1, 1
- adds r2, r1
- adds r0, r2
- ldr r1, [r0]
- ldr r0, [sp]
- cmp r0, r1
- bls _08043B80
- str r1, [sp]
- adds r0, r4, 0
- movs r1, 0x19
- mov r2, sp
- bl SetMonData
-_08043B80:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08043B88: .4byte gExperienceTables
-_08043B8C: .4byte gBaseStats
- thumb_func_end sub_8043B48
-
- thumb_func_start sub_8043B90
-sub_8043B90: @ 8043B90
- push {r4-r7,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r7, r0, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x19
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- cmp r7, 0x63
- bhi _08043C14
- ldr r3, _08043C0C @ =gExperienceTables
- mov r0, sp
- ldrb r1, [r0]
- lsls r1, 2
- ldr r2, _08043C10 @ =gBaseStats
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r2
- adds r1, r0
- adds r1, r3
- ldr r0, [r1]
- cmp r5, r0
- bls _08043C20
- adds r0, r4, 0
- movs r1, 0x38
- mov r2, sp
- bl SetMonData
- mov r0, sp
- ldrb r2, [r0]
- adds r0, r4, 0
- adds r1, r6, 0
- adds r3, r5, 0
- bl sub_8043B48
- movs r0, 0x1
- b _08043C22
- .align 2, 0
-_08043C0C: .4byte gExperienceTables
-_08043C10: .4byte gBaseStats
-_08043C14:
- adds r0, r4, 0
- adds r1, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl sub_8043B48
-_08043C20:
- movs r0, 0
-_08043C22:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8043B90
-
- thumb_func_start CanMonLearnTMHM
-CanMonLearnTMHM: @ 8043C2C
- push {r4,r5,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- adds r5, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- adds r3, r1, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _08043C4E
- movs r0, 0
- b _08043C7A
-_08043C4E:
- cmp r4, 0x1F
- bls _08043C6C
- adds r0, r4, 0
- subs r0, 0x20
- movs r2, 0x1
- lsls r2, r0
- ldr r0, _08043C68 @ =gUnknown_8252BC8
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- ands r0, r2
- b _08043C7A
- .align 2, 0
-_08043C68: .4byte gUnknown_8252BC8
-_08043C6C:
- movs r1, 0x1
- lsls r1, r5
- ldr r2, _08043C80 @ =gUnknown_8252BC8
- lsls r0, r3, 3
- adds r0, r2
- ldr r0, [r0]
- ands r0, r1
-_08043C7A:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08043C80: .4byte gUnknown_8252BC8
- thumb_func_end CanMonLearnTMHM
-
- thumb_func_start GetMoveRelearnerMoves
-GetMoveRelearnerMoves: @ 8043C84
- 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
-_08043CBA:
- 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 _08043CBA
- movs r5, 0
- ldr r6, _08043DC8 @ =gLevelUpLearnsets
- lsls r1, r7, 2
- adds r2, r1, r6
- ldr r3, [r2]
- ldrh r0, [r3]
- ldr r4, _08043DCC @ =0x0000ffff
- str r1, [sp, 0x14]
- cmp r0, r4
- beq _08043DB4
- mov r9, r2
- str r3, [sp, 0x10]
-_08043CE8:
- 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 _08043D9E
- movs r4, 0
- mov r0, sp
- ldrh r1, [r0]
- ldr r0, _08043DD0 @ =0x000001ff
- ands r0, r3
- cmp r1, r0
- beq _08043D38
- ldr r0, [sp, 0x14]
- ldr r1, _08043DC8 @ =gLevelUpLearnsets
- adds r6, r0, r1
- ldr r2, _08043DD0 @ =0x000001ff
- mov r8, r2
- mov r3, sp
- adds r5, r7, 0
-_08043D20:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08043D38
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _08043D20
-_08043D38:
- cmp r4, 0x4
- bne _08043D9E
- movs r4, 0
- cmp r4, r10
- bge _08043D7C
- mov r1, r9
- ldr r0, [r1]
- adds r0, r7, r0
- ldrh r1, [r0]
- ldr r0, [sp, 0x8]
- ldrh r2, [r0]
- ldr r0, _08043DD0 @ =0x000001ff
- ands r0, r1
- cmp r2, r0
- beq _08043D7C
- ldr r1, [sp, 0x14]
- ldr r2, _08043DC8 @ =gLevelUpLearnsets
- adds r6, r1, r2
- ldr r0, _08043DD0 @ =0x000001ff
- mov r8, r0
- ldr r3, [sp, 0x8]
- adds r5, r7, 0
-_08043D64:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, r10
- bge _08043D7C
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _08043D64
-_08043D7C:
- cmp r4, r10
- bne _08043D9E
- 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, _08043DD0 @ =0x000001ff
- ands r0, r1
- strh r0, [r2]
-_08043D9E:
- mov r5, r12
- cmp r5, 0x13
- bgt _08043DB4
- mov r1, r9
- ldr r0, [r1]
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r2, _08043DCC @ =0x0000ffff
- cmp r0, r2
- bne _08043CE8
-_08043DB4:
- 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
-_08043DC8: .4byte gLevelUpLearnsets
-_08043DCC: .4byte 0x0000ffff
-_08043DD0: .4byte 0x000001ff
- thumb_func_end GetMoveRelearnerMoves
-
- thumb_func_start GetLevelUpMovesBySpecies
-GetLevelUpMovesBySpecies: @ 8043DD4
- push {r4-r7,lr}
- adds r6, r1, 0
- lsls r0, 16
- movs r5, 0
- movs r4, 0
- ldr r1, _08043E20 @ =gLevelUpLearnsets
- lsrs r0, 14
- adds r0, r1
- ldr r2, [r0]
- ldrh r0, [r2]
- ldr r1, _08043E24 @ =0x0000ffff
- cmp r0, r1
- beq _08043E18
- ldr r0, _08043E28 @ =0x000001ff
- mov r12, r0
- adds r7, r1, 0
- adds r3, r2, 0
-_08043DF6:
- 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 _08043E18
- ldrh r0, [r3]
- cmp r0, r7
- bne _08043DF6
-_08043E18:
- adds r0, r5, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08043E20: .4byte gLevelUpLearnsets
-_08043E24: .4byte 0x0000ffff
-_08043E28: .4byte 0x000001ff
- thumb_func_end GetLevelUpMovesBySpecies
-
- thumb_func_start GetNumberOfRelearnableMoves
-GetNumberOfRelearnableMoves: @ 8043E2C
- 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 _08043E68
- movs r0, 0
- b _08043F72
-_08043E68:
- movs r5, 0
- lsls r4, 2
- str r4, [sp, 0x38]
- mov r4, sp
-_08043E70:
- 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 _08043E70
- movs r5, 0
- ldr r3, _08043F84 @ =gLevelUpLearnsets
- ldr r2, [sp, 0x38]
- adds r1, r2, r3
- ldr r0, [r1]
- ldrh r0, [r0]
- ldr r2, _08043F88 @ =0x0000ffff
- cmp r0, r2
- beq _08043F70
- mov r9, r1
- mov r4, sp
- adds r4, 0x8
- str r4, [sp, 0x34]
-_08043EA0:
- 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 _08043F5A
- movs r4, 0
- mov r0, sp
- ldrh r1, [r0]
- ldr r0, _08043F8C @ =0x000001ff
- ands r0, r3
- cmp r1, r0
- beq _08043EF2
- ldr r0, [sp, 0x38]
- ldr r1, _08043F84 @ =gLevelUpLearnsets
- adds r6, r0, r1
- ldr r2, _08043F8C @ =0x000001ff
- mov r8, r2
- mov r3, sp
- adds r5, r7, 0
-_08043EDA:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08043EF2
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _08043EDA
-_08043EF2:
- cmp r4, 0x4
- bne _08043F5A
- movs r4, 0
- cmp r4, r10
- bge _08043F38
- mov r1, r9
- ldr r0, [r1]
- adds r0, r7, r0
- ldrh r1, [r0]
- ldr r0, [sp, 0x34]
- ldrh r2, [r0]
- ldr r0, _08043F8C @ =0x000001ff
- ands r0, r1
- add r1, sp, 0x8
- cmp r2, r0
- beq _08043F38
- ldr r2, [sp, 0x38]
- ldr r0, _08043F84 @ =gLevelUpLearnsets
- adds r6, r2, r0
- ldr r2, _08043F8C @ =0x000001ff
- mov r8, r2
- adds r3, r1, 0
- adds r5, r7, 0
-_08043F20:
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, r10
- bge _08043F38
- ldr r0, [r6]
- adds r0, r5, r0
- ldrh r1, [r0]
- ldrh r2, [r3]
- mov r0, r8
- ands r0, r1
- cmp r2, r0
- bne _08043F20
-_08043F38:
- cmp r4, r10
- bne _08043F5A
- 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, _08043F8C @ =0x000001ff
- ands r0, r1
- strh r0, [r2]
-_08043F5A:
- mov r5, r12
- cmp r5, 0x13
- bgt _08043F70
- mov r2, r9
- ldr r0, [r2]
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r4, _08043F88 @ =0x0000ffff
- cmp r0, r4
- bne _08043EA0
-_08043F70:
- mov r0, r10
-_08043F72:
- 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
-_08043F84: .4byte gLevelUpLearnsets
-_08043F88: .4byte 0x0000ffff
-_08043F8C: .4byte 0x000001ff
- thumb_func_end GetNumberOfRelearnableMoves
-
- thumb_func_start sub_8043F90
-sub_8043F90: @ 8043F90
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- bl sub_806E25C
- cmp r0, 0
- bne _08043FB4
- cmp r4, 0x97
- bls _08043FB4
- ldr r0, _08043FB0 @ =0x0000ffff
- b _08043FB6
- .align 2, 0
-_08043FB0: .4byte 0x0000ffff
-_08043FB4:
- adds r0, r4, 0
-_08043FB6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8043F90
-
- thumb_func_start sub_8043FBC
-sub_8043FBC: @ 8043FBC
- push {lr}
- ldr r1, _08043FD0 @ =gUnknown_2024024
- movs r2, 0
- adds r0, r1, 0x3
-_08043FC4:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08043FC4
- pop {r0}
- bx r0
- .align 2, 0
-_08043FD0: .4byte gUnknown_2024024
- thumb_func_end sub_8043FBC
-
- thumb_func_start sub_8043FD4
-sub_8043FD4: @ 8043FD4
- push {lr}
- ldr r0, _08043FFC @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 5
- ands r0, r1
- cmp r0, 0
- bne _0804406C
- movs r0, 0x80
- lsls r0, 7
- ands r0, r1
- cmp r0, 0
- bne _08043FF6
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08044000
-_08043FF6:
- movs r0, 0x85
- lsls r0, 1
- b _08044070
- .align 2, 0
-_08043FFC: .4byte gBattleTypeFlags
-_08044000:
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- beq _0804406C
- ldr r2, _08044028 @ =gTrainers
- ldr r0, _0804402C @ =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x1]
- subs r0, 0x53
- cmp r0, 0x7
- bhi _08044062
- lsls r0, 2
- ldr r1, _08044030 @ =_08044034
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08044028: .4byte gTrainers
-_0804402C: .4byte gTrainerBattleOpponent_A
-_08044030: .4byte _08044034
- .align 2, 0
-_08044034:
- .4byte _08044062
- .4byte _0804405C
- .4byte _08044062
- .4byte _08044062
- .4byte _0804405C
- .4byte _08044062
- .4byte _08044062
- .4byte _08044054
-_08044054:
- ldr r0, _08044058 @ =0x0000012b
- b _08044070
- .align 2, 0
-_08044058: .4byte 0x0000012b
-_0804405C:
- movs r0, 0x94
- lsls r0, 1
- b _08044070
-_08044062:
- ldr r0, _08044068 @ =0x00000129
- b _08044070
- .align 2, 0
-_08044068: .4byte 0x00000129
-_0804406C:
- movs r0, 0x95
- lsls r0, 1
-_08044070:
- pop {r1}
- bx r1
- thumb_func_end sub_8043FD4
-
- thumb_func_start PlayBattleBGM
-PlayBattleBGM: @ 8044074
- push {lr}
- bl ResetMapMusic
- bl m4aMPlayAllStop
- bl sub_8043FD4
- lsls r0, 16
- lsrs r0, 16
- bl PlayBGM
- pop {r0}
- bx r0
- thumb_func_end PlayBattleBGM
-
- thumb_func_start PlayMapChosenOrBattleBGM
-PlayMapChosenOrBattleBGM: @ 8044090
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl ResetMapMusic
- bl m4aMPlayAllStop
- cmp r4, 0
- beq _080440AA
- adds r0, r4, 0
- bl PlayNewMapMusic
- b _080440B6
-_080440AA:
- bl sub_8043FD4
- lsls r0, 16
- lsrs r0, 16
- bl PlayNewMapMusic
-_080440B6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PlayMapChosenOrBattleBGM
-
- thumb_func_start GetMonFrontSpritePal
-GetMonFrontSpritePal: @ 80440BC
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- adds r2, r0, 0
- adds r0, r4, 0
- adds r1, r6, 0
- bl GetFrontSpritePalFromSpeciesAndPersonality
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetMonFrontSpritePal
-
- thumb_func_start GetFrontSpritePalFromSpeciesAndPersonality
-GetFrontSpritePalFromSpeciesAndPersonality: @ 80440F4
- push {r4,r5,lr}
- adds r3, r2, 0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r5, r4, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08044110
- ldr r0, _0804410C @ =gUnknown_823730C
- ldr r0, [r0]
- b _0804413C
- .align 2, 0
-_0804410C: .4byte gUnknown_823730C
-_08044110:
- lsrs r0, r1, 16
- ldr r2, _0804412C @ =0x0000ffff
- ands r1, r2
- eors r0, r1
- lsrs r1, r3, 16
- eors r0, r1
- ands r3, r2
- eors r0, r3
- cmp r0, 0x7
- bls _08044134
- ldr r0, _08044130 @ =gUnknown_823730C
- lsls r1, r4, 3
- b _08044138
- .align 2, 0
-_0804412C: .4byte 0x0000ffff
-_08044130: .4byte gUnknown_823730C
-_08044134:
- ldr r0, _08044144 @ =gUnknown_82380CC
- lsls r1, r5, 3
-_08044138:
- adds r1, r0
- ldr r0, [r1]
-_0804413C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08044144: .4byte gUnknown_82380CC
- thumb_func_end GetFrontSpritePalFromSpeciesAndPersonality
-
- thumb_func_start GetMonSpritePalStruct
-GetMonSpritePalStruct: @ 8044148
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- adds r2, r0, 0
- adds r0, r4, 0
- adds r1, r6, 0
- bl GetMonSpritePalStructFromOtIdPersonality
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetMonSpritePalStruct
-
- thumb_func_start GetMonSpritePalStructFromOtIdPersonality
-GetMonSpritePalStructFromOtIdPersonality: @ 8044180
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsrs r0, r1, 16
- ldr r3, _080441A0 @ =0x0000ffff
- ands r1, r3
- eors r0, r1
- lsrs r1, r2, 16
- eors r0, r1
- ands r2, r3
- eors r0, r2
- cmp r0, 0x7
- bls _080441A8
- lsls r0, r4, 3
- ldr r1, _080441A4 @ =gUnknown_823730C
- b _080441AC
- .align 2, 0
-_080441A0: .4byte 0x0000ffff
-_080441A4: .4byte gUnknown_823730C
-_080441A8:
- lsls r0, r4, 3
- ldr r1, _080441B4 @ =gUnknown_82380CC
-_080441AC:
- adds r0, r1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080441B4: .4byte gUnknown_82380CC
- thumb_func_end GetMonSpritePalStructFromOtIdPersonality
-
- thumb_func_start IsHMMove2
-IsHMMove2: @ 80441B8
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r2, _080441DC @ =gUnknown_825E014
- ldrh r0, [r2]
- ldr r1, _080441E0 @ =0x0000ffff
- cmp r0, r1
- beq _080441EA
- adds r4, r1, 0
- adds r1, r2, 0
-_080441CC:
- ldrh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- cmp r0, r3
- bne _080441E4
- movs r0, 0x1
- b _080441EC
- .align 2, 0
-_080441DC: .4byte gUnknown_825E014
-_080441E0: .4byte 0x0000ffff
-_080441E4:
- ldrh r0, [r1]
- cmp r0, r4
- bne _080441CC
-_080441EA:
- movs r0, 0
-_080441EC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsHMMove2
-
- thumb_func_start IsPokeSpriteNotFlipped
-IsPokeSpriteNotFlipped: @ 80441F4
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08044208 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x19]
- lsrs r0, 7
- bx lr
- .align 2, 0
-_08044208: .4byte gBaseStats
- thumb_func_end IsPokeSpriteNotFlipped
-
- thumb_func_start GetMonFlavorRelation
-GetMonFlavorRelation: @ 804420C
- push {r4,lr}
- lsls r4, r1, 24
- lsrs r4, 24
- bl GetNature
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08044230 @ =gUnknown_825DE24
- lsls r1, r0, 2
- adds r1, r0
- adds r1, r4
- adds r1, r2
- movs r0, 0
- ldrsb r0, [r1, r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08044230: .4byte gUnknown_825DE24
- thumb_func_end GetMonFlavorRelation
-
- thumb_func_start GetFlavorRelationByPersonality
-GetFlavorRelationByPersonality: @ 8044234
- push {r4,lr}
- lsls r4, r1, 24
- lsrs r4, 24
- bl GetNatureFromPersonality
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08044258 @ =gUnknown_825DE24
- lsls r1, r0, 2
- adds r1, r0
- adds r1, r4
- adds r1, r2
- movs r0, 0
- ldrsb r0, [r1, r0]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08044258: .4byte gUnknown_825DE24
- thumb_func_end GetFlavorRelationByPersonality
-
- thumb_func_start IsTradedMon
-IsTradedMon: @ 804425C
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- movs r1, 0x7
- mov r2, sp
- bl GetMonData
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- mov r1, sp
- bl IsOtherTrainer
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsTradedMon
-
- thumb_func_start IsOtherTrainer
-IsOtherTrainer: @ 8044288
- push {r4,r5,lr}
- adds r5, r1, 0
- ldr r1, _080442CC @ =gSaveBlock2Ptr
- ldr r3, [r1]
- ldrb r2, [r3, 0xA]
- ldrb r1, [r3, 0xB]
- lsls r1, 8
- orrs r2, r1
- ldrb r1, [r3, 0xC]
- lsls r1, 16
- orrs r2, r1
- ldrb r1, [r3, 0xD]
- lsls r1, 24
- orrs r2, r1
- cmp r0, r2
- bne _080442D0
- movs r4, 0
- ldrb r0, [r5]
- cmp r0, 0xFF
- beq _080442C6
- adds r2, r5, 0
-_080442B2:
- adds r1, r3, r4
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _080442D0
- adds r2, 0x1
- adds r4, 0x1
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _080442B2
-_080442C6:
- movs r0, 0
- b _080442D2
- .align 2, 0
-_080442CC: .4byte gSaveBlock2Ptr
-_080442D0:
- movs r0, 0x1
-_080442D2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end IsOtherTrainer
-
- thumb_func_start MonRestorePP
-MonRestorePP: @ 80442D8
- push {lr}
- bl BoxMonRestorePP
- pop {r0}
- bx r0
- thumb_func_end MonRestorePP
-
- thumb_func_start BoxMonRestorePP
-BoxMonRestorePP: @ 80442E4
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r6, 0
-_080442EC:
- adds r4, r6, 0
- adds r4, 0xD
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl GetBoxMonData
- cmp r0, 0
- beq _08044338
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- bl GetBoxMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x15
- movs r2, 0
- bl GetBoxMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, r6, 24
- lsrs r2, 24
- adds r0, r4, 0
- bl CalculatePPWithBonus
- mov r1, sp
- strb r0, [r1]
- adds r1, r6, 0
- adds r1, 0x11
- adds r0, r5, 0
- mov r2, sp
- bl SetBoxMonData
-_08044338:
- adds r6, 0x1
- cmp r6, 0x3
- ble _080442EC
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end BoxMonRestorePP
-
- thumb_func_start sub_8044348
-sub_8044348: @ 8044348
- push {r4,r5,lr}
- ldr r2, _0804438C @ =gLastUsedAbility
- ldr r5, _08044390 @ =gBattleStruct
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0xAC
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r4, _08044394 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r4]
- movs r0, 0x4
- strb r0, [r4, 0x1]
- adds r1, 0x49
- ldrb r0, [r1]
- strb r0, [r4, 0x2]
- movs r0, 0xFF
- strb r0, [r4, 0x4]
- ldrb r0, [r1]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0804439C
- ldr r1, _08044398 @ =gBattlerPartyIndexes
- ldr r0, [r5]
- adds r0, 0x49
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- bl pokemon_order_func
- b _080443AA
- .align 2, 0
-_0804438C: .4byte gLastUsedAbility
-_08044390: .4byte gBattleStruct
-_08044394: .4byte gBattleTextBuff1
-_08044398: .4byte gBattlerPartyIndexes
-_0804439C:
- ldr r1, _080443E0 @ =gBattlerPartyIndexes
- ldr r0, [r5]
- adds r0, 0x49
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
-_080443AA:
- strb r0, [r4, 0x3]
- ldr r4, _080443E4 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r4]
- movs r0, 0x4
- strb r0, [r4, 0x1]
- ldr r1, _080443E8 @ =gBattlerInMenuId
- ldrb r0, [r1]
- strb r0, [r4, 0x2]
- ldr r2, _080443E0 @ =gBattlerPartyIndexes
- ldrb r0, [r1]
- lsls r0, 1
- adds r0, r2
- ldrb r0, [r0]
- bl pokemon_order_func
- strb r0, [r4, 0x3]
- movs r0, 0xFF
- strb r0, [r4, 0x4]
- ldr r0, _080443EC @ =gUnknown_83FCA2C
- ldr r1, _080443F0 @ =gStringVar4
- bl sub_80D7868
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080443E0: .4byte gBattlerPartyIndexes
-_080443E4: .4byte gBattleTextBuff2
-_080443E8: .4byte gBattlerInMenuId
-_080443EC: .4byte gUnknown_83FCA2C
-_080443F0: .4byte gStringVar4
- thumb_func_end sub_8044348
-
- thumb_func_start SetWildMonHeldItem
-SetWildMonHeldItem: @ 80443F4
- push {r4,r5,lr}
- ldr r0, _0804444C @ =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, _08044450 @ =0x00012008
- ands r0, r1
- cmp r0, 0
- bne _08044468
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r4, _08044454 @ =gEnemyParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08044458 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r3, r1, 2
- adds r1, r3, r2
- ldrh r0, [r1, 0xC]
- ldrh r1, [r1, 0xE]
- cmp r0, r1
- beq _0804443E
- cmp r5, 0x2C
- bls _08044468
- cmp r5, 0x5E
- bhi _0804445C
-_0804443E:
- adds r2, 0xC
- adds r2, r3, r2
- adds r0, r4, 0
- movs r1, 0xC
- bl SetMonData
- b _08044468
- .align 2, 0
-_0804444C: .4byte gBattleTypeFlags
-_08044450: .4byte 0x00012008
-_08044454: .4byte gEnemyParty
-_08044458: .4byte gBaseStats
-_0804445C:
- adds r2, 0xE
- adds r2, r3, r2
- adds r0, r4, 0
- movs r1, 0xC
- bl SetMonData
-_08044468:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end SetWildMonHeldItem
-
- thumb_func_start IsMonShiny
-IsMonShiny: @ 8044470
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- adds r1, r0, 0
- adds r0, r5, 0
- bl IsShinyOtIdPersonality
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end IsMonShiny
-
- thumb_func_start IsShinyOtIdPersonality
-IsShinyOtIdPersonality: @ 804449C
- push {r4,lr}
- movs r4, 0
- lsrs r2, r0, 16
- ldr r3, _080444C0 @ =0x0000ffff
- ands r0, r3
- eors r2, r0
- lsrs r0, r1, 16
- eors r2, r0
- ands r1, r3
- eors r2, r1
- cmp r2, 0x7
- bhi _080444B6
- movs r4, 0x1
-_080444B6:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080444C0: .4byte 0x0000ffff
- thumb_func_end IsShinyOtIdPersonality
-
- thumb_func_start sub_80444C4
-sub_80444C4: @ 80444C4
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080444F4 @ =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x18]
- movs r0, 0x2
- eors r0, r1
- bl GetBankMultiplayerId
- adds r1, r0, 0
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r4, 0x8
- adds r0, r4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080444F4: .4byte gLinkPlayers
- thumb_func_end sub_80444C4
-
thumb_func_start sub_80444F8
sub_80444F8: @ 80444F8
push {r4-r6,lr}
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
index e946e5087..a30d8e833 100644
--- a/asm/reshow_battle_screen.s
+++ b/asm/reshow_battle_screen.s
@@ -726,7 +726,7 @@ _08077CD2:
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08077DA8 @ =gUnknown_2024024
+ ldr r1, _08077DA8 @ =gBattleMonForms
adds r1, r7, r1
ldrb r1, [r1]
bl StartSpriteAnim
@@ -738,7 +738,7 @@ _08077D98: .4byte gMultiuseSpriteTemplate
_08077D9C: .4byte gUnknown_2023D44
_08077DA0: .4byte gSprites
_08077DA4: .4byte SpriteCallbackDummy
-_08077DA8: .4byte gUnknown_2024024
+_08077DA8: .4byte gBattleMonForms
_08077DAC:
ldr r0, _08077E00 @ =gBattleTypeFlags
ldr r1, [r0]
@@ -952,7 +952,7 @@ _08077EA8:
adds r0, r1
lsls r0, 2
adds r0, r5
- ldr r1, _08077FDC @ =gUnknown_2024024
+ ldr r1, _08077FDC @ =gBattleMonForms
adds r1, r7, r1
ldrb r1, [r1]
bl StartSpriteAnim
@@ -996,7 +996,7 @@ _08077FCC: .4byte gMultiuseSpriteTemplate
_08077FD0: .4byte gUnknown_2023D44
_08077FD4: .4byte gSprites
_08077FD8: .4byte SpriteCallbackDummy
-_08077FDC: .4byte gUnknown_2024024
+_08077FDC: .4byte gBattleMonForms
_08077FE0: .4byte gUnknown_2024018
thumb_func_end sub_8077C38
diff --git a/data/data.s b/data/data.s
index 12499d26a..c8b79e61a 100644
--- a/data/data.s
+++ b/data/data.s
@@ -79,13 +79,13 @@ gUnknown_8235E6C:: @ 8235E6C
gUnknown_823654C:: @ 823654C
.incbin "baserom.gba", 0x23654C, 0xDC0
-gUnknown_823730C:: @ 823730C
+gMonPaletteTable:: @ 823730C
.incbin "baserom.gba", 0x23730C, 0xE8
gUnknown_82373F4:: @ 82373F4
.incbin "baserom.gba", 0x2373F4, 0xCD8
-gUnknown_82380CC:: @ 82380CC
+gMonShinyPaletteTable:: @ 82380CC
.incbin "baserom.gba", 0x2380CC, 0x1010
gTrainerFrontAnimsPtrTable:: @ 82390DC
@@ -316,7 +316,7 @@ gItemEffectTable:: @ 82528BC
gNatureStatTable:: @ 8252B48
.incbin "baserom.gba", 0x252B48, 0x80
-gUnknown_8252BC8:: @ 8252BC8
+gTMHMLearnsets:: @ 8252BC8
.incbin "baserom.gba", 0x252BC8, 0xCE0
gFacilityClassToPicIndex:: @ 82538A8
@@ -343,7 +343,7 @@ gEvolutionTable:: @ 8259754
gLevelUpLearnsets:: @ 825D7B4
.incbin "baserom.gba", 0x25D7B4, 0x670
-gUnknown_825DE24:: @ 825DE24
+gPokeblockFlavorCompatibilityTable:: @ 825DE24
.incbin "baserom.gba", 0x25DE24, 0x7D
gUnknown_825DEA1:: @ 825DEA1
@@ -379,7 +379,7 @@ gUnknown_825DFF0:: @ 825DFF0
sFriendshipEventDeltas:: @ 825DFF6
.incbin "baserom.gba", 0x25DFF6, 0x1E
-gUnknown_825E014:: @ 825E014
+sHMMoves:: @ 825E014
.incbin "baserom.gba", 0x25E014, 0x12
gUnknown_825E026:: @ 825E026
diff --git a/data/data_84827AC.s b/data/data_84827AC.s
index 880c97ae1..9d3e5a38c 100644
--- a/data/data_84827AC.s
+++ b/data/data_84827AC.s
@@ -282,7 +282,7 @@ BattleText_MistShroud:: @ 83FBBB4
BattleText_GetPumped:: @ 83FBBE9
.incbin "baserom.gba", 0x3FBBE9, 0xE43
-gUnknown_83FCA2C:: @ 83FCA2C
+gText_PkmnsXPreventsSwitching:: @ 83FCA2C
.incbin "baserom.gba", 0x3FCA2C, 0x11E
BattleText_Rose:: @ 83FCB4A
diff --git a/include/battle.h b/include/battle.h
index b1d442c73..ee707f78b 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -47,7 +47,7 @@
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
-#define BATTLE_TYPE_DOME 0x10000
+#define BATTLE_TYPE_DOME 0x10000 // this is used in pokemon.c, but its clearly not the correct name for FR/LG. TODO: Fix these
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
@@ -545,7 +545,7 @@ struct BattleStruct
u8 field_46;
u8 field_47;
u8 focusPunchBank;
- u8 field_49;
+ u8 battlerPreventingSwitchout;
u8 moneyMultiplier;
u8 savedTurnActionNumber;
u8 switchInAbilitiesCounter;
@@ -598,7 +598,7 @@ struct BattleStruct
u8 field_A7;
u16 hpOnSwitchout[2];
u32 savedBattleTypeFlags;
- u8 field_B0;
+ u8 abilityPreventingSwitchout;
u8 hpScale;
u8 synchronizeMoveEffect;
u8 field_B3;
diff --git a/src/pokemon.c b/src/pokemon.c
index f4e712b46..ff7c907ca 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -15,6 +15,8 @@
#include "evolution_scene.h"
#include "battle_message.h"
#include "link.h"
+#include "m4a.h"
+#include "sound.h"
#include "constants/items.h"
#include "constants/species.h"
#include "constants/pokemon.h"
@@ -51,14 +53,13 @@ extern const u8 gUnknown_825DEA1[];
extern const u8 gPPUpWriteMasks[];
extern u8 *gUnknown_83FD5D0[];
extern const u8 gUnknown_825DFF0[];
-extern u8 gBattleTextBuff1[];
-extern u8 gBattleTextBuff2[];
extern const u8 gText_EggNickname[];
extern const u8 gText_BadEgg[];
extern const u8 BattleText_Rose[];
extern const u8 BattleText_UnknownString3[];
extern const u8 BattleText_GetPumped[];
extern const u8 BattleText_MistShroud[];
+extern const u8 gText_PkmnsXPreventsSwitching[];
extern const u8 sHoldEffectToType[][2];
extern u8 sLearningMoveTableID;
extern const u8 sSecretBaseFacilityClasses[2][5];
@@ -69,6 +70,12 @@ extern u16 gUnknown_82539D4[];
extern struct SpindaSpot gSpindaSpotGraphics[];
extern s8 gNatureStatTable[][5];
extern const s8 sFriendshipEventDeltas[][3];
+extern u32 gTMHMLearnsets[][2];
+extern u8 gBattleMonForms[4];
+extern const struct CompressedSpritePalette gMonPaletteTable[];
+extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
+extern const u16 sHMMoves[];
+extern s8 gPokeblockFlavorCompatibilityTable[];
// External functions
extern u8 sav1_map_get_name(void); // overworld
@@ -4577,7 +4584,7 @@ u8 GetNatureFromPersonality(u32 personality)
return personality % 25;
}
-extern bool32 sub_806E25C(u16 targetSpecies);
+extern bool32 sub_806E25C(void);
u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
{
@@ -4679,7 +4686,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
if (gEvolutionTable[species][i].param == heldItem)
{
targetSpecies = gEvolutionTable[species][i].targetSpecies;
- if (sub_806E25C(targetSpecies) || targetSpecies <= 151)
+ if (sub_806E25C() || targetSpecies <= 151)
{
heldItem = 0;
SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem);
@@ -5204,3 +5211,399 @@ void sub_8043B40(void)
{
u8 foo[4]; // huh?
}
+
+void sub_8043B48(struct Pokemon *mon, int species, u8 unused, u32 data)
+{
+ if (data > gExperienceTables[gBaseStats[species].growthRate][100])
+ {
+ data = gExperienceTables[gBaseStats[species].growthRate][100];
+ SetMonData(mon, MON_DATA_EXP, &data);
+ }
+}
+
+bool32 sub_8043B90(struct Pokemon *mon)
+{
+ u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL);
+ u8 newLevel = level + 1;
+ u32 exp = GetMonData(mon, MON_DATA_EXP, NULL);
+
+ if(level < 100)
+ {
+ if(exp > gExperienceTables[gBaseStats[species].growthRate][newLevel])
+ {
+ SetMonData(mon, MON_DATA_LEVEL, &newLevel);
+ sub_8043B48(mon, species, newLevel, exp);
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+ else
+ {
+ sub_8043B48(mon, species, level, exp);
+ return FALSE;
+ }
+}
+
+u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm)
+{
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
+ if (species == SPECIES_EGG)
+ {
+ return 0;
+ }
+ else if (tm < 32)
+ {
+ u32 mask = 1 << tm;
+ return gTMHMLearnsets[species][0] & mask;
+ }
+ else
+ {
+ u32 mask = 1 << (tm - 32);
+ 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 GetNumberOfRelearnableMoves(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;
+}
+
+// SpeciesToPokedexNum?
+u16 sub_8043F90(u16 species)
+{
+ species = SpeciesToNationalPokedexNum(species);
+
+ if (!sub_806E25C() && species > 151)
+ return 0xFFFF;
+ return species;
+}
+
+void ClearBattleMonForms(void)
+{
+ int i;
+ for(i = 0; i < 4; i++)
+ gBattleMonForms[i] = 0;
+}
+
+u16 GetMUS_ForBattle(void)
+{
+ if(gBattleTypeFlags & 0x1000)
+ return 0x12A;
+ if(gBattleTypeFlags & 0x4000)
+ return 0x10A;
+ if(gBattleTypeFlags & 0x2)
+ return 0x10A;
+ if(gBattleTypeFlags & 0x8)
+ {
+ switch (gTrainers[gTrainerBattleOpponent_A].trainerClass)
+ {
+ case 0x5A:
+ return 0x12B;
+ case 0x54:
+ case 0x57:
+ return 0x128;
+ case 0x53:
+ case 0x55:
+ case 0x56:
+ case 0x58:
+ case 0x59:
+ default:
+ return 0x129;
+ }
+ }
+ return 0x12A;
+}
+
+void PlayBattleBGM(void)
+{
+ ResetMapMusic();
+ m4aMPlayAllStop();
+ PlayBGM(GetMUS_ForBattle());
+}
+
+void PlayMapChosenOrBattleBGM(u16 songId)
+{
+ ResetMapMusic();
+ m4aMPlayAllStop();
+ if (songId)
+ PlayNewMapMusic(songId);
+ else
+ PlayNewMapMusic(GetMUS_ForBattle());
+}
+
+const u8 *GetMonFrontSpritePal(struct Pokemon *mon)
+{
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
+ u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
+ u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
+ return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality);
+}
+
+const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
+{
+ u32 shinyValue;
+
+ if (species > SPECIES_EGG)
+ return gMonPaletteTable[0].data;
+
+ shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
+ if (shinyValue < 8)
+ return gMonShinyPaletteTable[species].data;
+ else
+ return gMonPaletteTable[species].data;
+}
+
+const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon)
+{
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
+ u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
+ u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
+ return GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
+}
+
+const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality)
+{
+ u32 shinyValue;
+
+ shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
+ if (shinyValue < 8)
+ return &gMonShinyPaletteTable[species];
+ else
+ return &gMonPaletteTable[species];
+}
+
+bool32 IsHMMove2(u16 move)
+{
+ int i = 0;
+ while (sHMMoves[i] != 0xFFFF)
+ {
+ if (sHMMoves[i++] == move)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 IsPokeSpriteNotFlipped(u16 species)
+{
+ return gBaseStats[species].noFlip;
+}
+
+s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor)
+{
+ u8 nature = GetNature(mon);
+ return gPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
+}
+
+s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor)
+{
+ u8 nature = GetNatureFromPersonality(personality);
+ return gPokeblockFlavorCompatibilityTable[nature * 5 + flavor];
+}
+
+bool8 IsTradedMon(struct Pokemon *mon)
+{
+ u8 otName[7 + 1]; // change PLAYER_NAME_LENGTH to 7
+ u32 otId;
+ GetMonData(mon, MON_DATA_OT_NAME, otName);
+ otId = GetMonData(mon, MON_DATA_OT_ID, 0);
+ return IsOtherTrainer(otId, otName);
+}
+
+bool8 IsOtherTrainer(u32 otId, u8 *otName)
+{
+ if (otId ==
+ (gSaveBlock2Ptr->playerTrainerId[0]
+ | (gSaveBlock2Ptr->playerTrainerId[1] << 8)
+ | (gSaveBlock2Ptr->playerTrainerId[2] << 16)
+ | (gSaveBlock2Ptr->playerTrainerId[3] << 24)))
+ {
+ int i;
+
+ for (i = 0; otName[i] != EOS; i++)
+ if (otName[i] != gSaveBlock2Ptr->playerName[i])
+ return TRUE;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void MonRestorePP(struct Pokemon *mon)
+{
+ BoxMonRestorePP(&mon->box);
+}
+
+void BoxMonRestorePP(struct BoxPokemon *boxMon)
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (GetBoxMonData(boxMon, MON_DATA_MOVE1 + i, 0))
+ {
+ u16 move = GetBoxMonData(boxMon, MON_DATA_MOVE1 + i, 0);
+ u16 bonus = GetBoxMonData(boxMon, MON_DATA_PP_BONUSES, 0);
+ u8 pp = CalculatePPWithBonus(move, bonus, i);
+ SetBoxMonData(boxMon, MON_DATA_PP1 + i, &pp);
+ }
+ }
+}
+
+// SetMonPreventsSwitchingString
+void sub_8044348(void)
+{
+#ifdef NONMATCHING
+ gLastUsedAbility = gBattleStruct -> abilityPreventingSwitchout; // fixed from the original
+#else
+ gLastUsedAbility = ((u8 *) gBattleStruct)[0xac]; // huh? why is this wrong?
+#endif
+
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MON_NICK_WITH_PREFIX;
+ gBattleTextBuff1[2] = gBattleStruct->battlerPreventingSwitchout;
+ gBattleTextBuff1[4] = B_BUFF_EOS;
+
+ if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER)
+ gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]);
+ else
+ gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout];
+
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, pokemon_order_func(gBattlerPartyIndexes[gBattlerInMenuId]))
+
+ BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4);
+}
+
+void SetWildMonHeldItem(void)
+{
+ // TODO: Replace 0x00010000 with the right flag that isnt BATTLE_TYPE_DOME
+ if (!(gBattleTypeFlags & (0x00010000 | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER)))
+ {
+ u16 rnd = Random() % 100;
+ u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0);
+ if (gBaseStats[species].item1 == gBaseStats[species].item2)
+ {
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1);
+ return;
+ }
+
+ if (rnd > 44)
+ {
+ if (rnd <= 94)
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item1);
+ else
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &gBaseStats[species].item2);
+ }
+ }
+}
+
+bool8 IsMonShiny(struct Pokemon *mon)
+{
+ u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
+ u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0);
+ return IsShinyOtIdPersonality(otId, personality);
+}
+
+bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
+{
+ bool8 retVal = FALSE;
+ u32 shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
+ if (shinyValue < 8)
+ retVal = TRUE;
+ return retVal;
+}
+
+u8 *sub_80444C4(void)
+{
+ u8 id = GetMultiplayerId();
+ return gLinkPlayers[GetBankMultiplayerId(gLinkPlayers[id].id ^ 2)].name;
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 059b4b8f5..93d27674a 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -464,7 +464,7 @@ gBattleMovePower: @ 2024020
gMoveToLearn: @ 2024022
.space 0x2
-gUnknown_2024024: @ 2024024
+gBattleMonForms: @ 2024024
.space 0x4
sLearningMoveTableID: @ 2024028