summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-09-11 18:27:54 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-09-11 18:27:54 +0200
commit8e88f2790af8e98d695c35088cf7b493356ae03c (patch)
tree649249b1d5e4f6cc396a473f9b18d6bd22053c34
parent5394435520c4942ec9935454ff420acbab2ff4e4 (diff)
pokemon2 get mon data troubles
-rw-r--r--asm/battle_2.s2
-rw-r--r--asm/battle_7.s38
-rw-r--r--asm/battle_anim_80FE840.s16
-rw-r--r--asm/battle_controller_linkopponent.s4
-rw-r--r--asm/battle_controller_linkpartner.s2
-rw-r--r--asm/battle_controller_opponent.s4
-rw-r--r--asm/battle_controller_player.s4
-rw-r--r--asm/battle_controller_player_partner.s2
-rw-r--r--asm/battle_controller_recorded_opponent.s2
-rw-r--r--asm/battle_controller_recorded_player.s2
-rw-r--r--asm/battle_controller_safari.s2
-rw-r--r--asm/battle_controller_wally.s4
-rw-r--r--asm/contest.s6
-rw-r--r--asm/contest_link_80F57C4.s2
-rw-r--r--asm/contest_painting.s4
-rw-r--r--asm/egg_hatch.s2
-rw-r--r--asm/evolution_scene.s10
-rw-r--r--asm/mystery_event_script.s2
-rw-r--r--asm/pokeblock_feed.s2
-rw-r--r--asm/pokemon_1.s6
-rw-r--r--asm/pokemon_2.s1138
-rw-r--r--asm/reshow_battle_screen.s4
-rw-r--r--asm/rom_8072304.s16
-rw-r--r--asm/rom_80A5C6C.s12
-rw-r--r--asm/rom_80C6FA0.s2
-rw-r--r--asm/rom_815A0D4.s2
-rw-r--r--asm/rom_81BE66C.s14
-rw-r--r--asm/script_pokemon_util_80F87D8.s4
-rw-r--r--asm/trade.s8
-rw-r--r--data/battle_message.s2
-rw-r--r--data/strings.s2
-rw-r--r--include/battle.h11
-rw-r--r--include/pokemon.h8
-rw-r--r--src/pokemon_2.c352
-rw-r--r--src/pokemon_3.c4
-rw-r--r--sym_ewram.txt2
36 files changed, 463 insertions, 1234 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
index 803533525..b2d61ef42 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -5708,7 +5708,7 @@ _08039A7C:
lsls r0, 24
lsrs r0, 24
bl GetBankIdentity
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsls r0, 24
lsrs r0, 22
diff --git a/asm/battle_7.s b/asm/battle_7.s
index e95a37bdc..fd8c3b4a5 100644
--- a/asm/battle_7.s
+++ b/asm/battle_7.s
@@ -1371,7 +1371,7 @@ _0805DC58:
lsls r2, r5, 3
ldr r1, =gMonFrontPicTable
adds r2, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsrs r0, 22
adds r1, 0x4
@@ -1543,7 +1543,7 @@ _0805DE00:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsls r2, r7, 2
adds r1, 0x4
@@ -1558,7 +1558,7 @@ _0805DE2C:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsls r2, r7, 2
adds r1, 0x4
@@ -1684,7 +1684,7 @@ sub_805DF38: @ 805DF38
lsls r4, 3
ldr r2, =gTrainerFrontPicTable
adds r2, r4, r2
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsrs r0, 22
adds r1, 0x4
@@ -1718,7 +1718,7 @@ sub_805DF84: @ 805DF84
lsls r5, 3
ldr r2, =gTrainerBackPicTable
adds r2, r5, r2
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsrs r0, 22
adds r1, 0x4
@@ -1959,7 +1959,7 @@ _0805E1AE:
load_gfxc_health_bar: @ 805E1B8
push {lr}
ldr r0, =gUnknown_08C093F0
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
movs r2, 0xBA
lsls r2, 1
@@ -2364,7 +2364,7 @@ _0805E51C:
lsls r0, r1, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x4]
ldr r3, [r2, 0x10]
@@ -2434,7 +2434,7 @@ _0805E59C:
lsls r0, r1, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
mov r3, r10
lsls r2, r3, 2
@@ -2472,7 +2472,7 @@ _0805E618:
lsls r0, r1, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
mov r3, r10
lsls r2, r3, 2
@@ -2486,7 +2486,7 @@ _0805E618:
mov r2, r8
bl HandleLoadSpecialPokePic_DontHandleDeoxys
_0805E662:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
mov r2, r10
lsls r1, r2, 2
@@ -2666,7 +2666,7 @@ _0805E814:
beq _0805E83C
ldr r0, =gUnknown_08C2CEE0
_0805E822:
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsls r4, 2
adds r1, 0x4
@@ -2677,7 +2677,7 @@ _0805E822:
.pool
_0805E83C:
ldr r0, =gUnknown_08C2D120
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
lsls r4, 2
adds r1, 0x4
@@ -2688,7 +2688,7 @@ _0805E84E:
movs r3, 0x1
lsls r6, r5, 4
ldr r7, =gUnknown_08C2CEBC
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
adds r0, 0x4
adds r4, r0, r4
@@ -3608,7 +3608,7 @@ init_uns_table_pokemon_copy: @ 805EFBC
mov r5, r8
push {r5-r7}
movs r6, 0
- ldr r4, =gBattleDecompressedSprites
+ ldr r4, =gBattleSpritesGfx
str r6, [r4]
movs r0, 0xC0
lsls r0, 1
@@ -3620,7 +3620,7 @@ init_uns_table_pokemon_copy: @ 805EFBC
ldr r1, [r4]
str r0, [r1]
_0805EFE2:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r1, [r0]
lsls r4, r6, 2
adds r2, r1, 0x4
@@ -3649,7 +3649,7 @@ _0805EFE2:
mov r12, r8
adds r7, r4, 0
_0805F01A:
- ldr r2, =gBattleDecompressedSprites
+ ldr r2, =gBattleSpritesGfx
ldr r1, [r2]
lsls r4, r5, 3
add r4, r12
@@ -3672,7 +3672,7 @@ _0805F01A:
lsrs r5, r0, 24
cmp r5, 0x3
bls _0805F01A
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r2, [r1]
mov r5, r9
adds r0, r5, r6
@@ -3692,7 +3692,7 @@ _0805F01A:
movs r0, 0x80
lsls r0, 5
bl AllocZeroed
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
movs r2, 0xBA
lsls r2, 1
@@ -3711,7 +3711,7 @@ _0805F01A:
thumb_func_start sub_805F094
sub_805F094: @ 805F094
push {r4-r6,lr}
- ldr r6, =gBattleDecompressedSprites
+ ldr r6, =gBattleSpritesGfx
ldr r0, [r6]
cmp r0, 0
beq _0805F106
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index c7a493410..fc2c36fc8 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -14561,7 +14561,7 @@ _08105CCC:
lsls r0, 6
bl AllocZeroed
adds r1, r0, 0
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
movs r2, 0xBE
lsls r2, 1
@@ -14571,7 +14571,7 @@ _08105CCC:
bl LZDecompressWram
movs r4, 0
_08105D00:
- ldr r5, =gBattleDecompressedSprites
+ ldr r5, =gBattleSpritesGfx
ldr r0, [r5]
movs r1, 0xBE
lsls r1, 1
@@ -49777,7 +49777,7 @@ sub_8117C44: @ 8117C44
movs r0, 0x80
lsls r0, 6
bl AllocZeroed
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
@@ -49797,7 +49797,7 @@ sub_8117C70: @ 8117C70
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r6, =gBattleDecompressedSprites
+ ldr r6, =gBattleSpritesGfx
ldr r0, [r6]
movs r5, 0xBE
lsls r5, 1
@@ -49866,7 +49866,7 @@ _08117CF6:
adds r4, r0, 0
adds r4, 0x10
_08117CFC:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r1, [r0]
ldr r0, =gBattleAnimArgs
movs r2, 0x2
@@ -49944,7 +49944,7 @@ _08117D98:
lsls r0, r4, 5
ldr r1, =gPlttBufferUnfaded
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r2, [r1]
ldr r1, =gBattleAnimArgs
movs r3, 0x2
@@ -52081,7 +52081,7 @@ sub_8118FBC: @ 8118FBC
bl GetBankByPlayerAI
lsls r0, 24
lsrs r0, 24
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r2, [r1]
lsls r4, 2
adds r2, 0x4
@@ -52189,7 +52189,7 @@ sub_8119094: @ 8119094
lsls r0, 24
mov r9, r0
ldr r4, =0x040000d4
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
lsrs r2, 22
adds r0, 0x4
diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s
index 67270f2f4..df4cd5035 100644
--- a/asm/battle_controller_linkopponent.s
+++ b/asm/battle_controller_linkopponent.s
@@ -4280,7 +4280,7 @@ _0806694C:
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
ldr r1, =gUnknown_083054E0
@@ -4409,7 +4409,7 @@ _08066A76:
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r0, =gUnknown_0202499C
ldr r2, =gUnknown_083054E0
mov r3, r8
diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s
index 2d95b042c..881228279 100644
--- a/asm/battle_controller_linkpartner.s
+++ b/asm/battle_controller_linkpartner.s
@@ -3703,7 +3703,7 @@ _0814D002:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r8, r7
ldr r0, =gUnknown_08305D2C
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 8b140c88c..26b8c89ec 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -4336,7 +4336,7 @@ _080617CA:
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
ldr r1, =gUnknown_083054E0
@@ -4562,7 +4562,7 @@ _080619DE:
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r0, =gUnknown_0202499C
ldr r2, =gUnknown_083054E0
mov r3, r8
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index b3680e75c..f70b840b9 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -7549,7 +7549,7 @@ _0805B794:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r8, r9
lsls r4, r7, 16
@@ -7731,7 +7731,7 @@ _0805B926:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r0, =gUnknown_0202499C
ldr r1, =gUnknown_08305D2C
lsls r4, 2
diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s
index a0c9c6360..6b5a14f95 100644
--- a/asm/battle_controller_player_partner.s
+++ b/asm/battle_controller_player_partner.s
@@ -4220,7 +4220,7 @@ _081BD3BE:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r8, r9
lsls r4, r7, 16
diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s
index 9b9070416..af5110d9b 100644
--- a/asm/battle_controller_recorded_opponent.s
+++ b/asm/battle_controller_recorded_opponent.s
@@ -4093,7 +4093,7 @@ _0818892C:
lsls r1, 24
lsrs r1, 24
mov r0, r8
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
ldr r1, =gUnknown_083054E0
diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s
index f00feb3a6..b2769671c 100644
--- a/asm/battle_controller_recorded_player.s
+++ b/asm/battle_controller_recorded_player.s
@@ -4189,7 +4189,7 @@ _0818BEDC:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r8, r9
lsls r4, r7, 16
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index ced5242be..c8eab6684 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -578,7 +578,7 @@ sub_8159800: @ 8159800
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r0, =gUnknown_0202499C
ldr r2, =gUnknown_08305D2C
ldr r1, [r4]
diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s
index 683c74c8d..b44ec0ed3 100644
--- a/asm/battle_controller_wally.s
+++ b/asm/battle_controller_wally.s
@@ -3037,7 +3037,7 @@ sub_8169EC8: @ 8169EC8
lsls r1, 24
lsrs r1, 24
movs r0, 0x6
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r0, =gUnknown_0202499C
ldr r1, =gUnknown_08305D2C
ldrb r1, [r1, 0x18]
@@ -3122,7 +3122,7 @@ dp01t_07_6_: @ 8169F94
lsls r1, 24
lsrs r1, 24
movs r0, 0x6
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r0, =gUnknown_0202499C
ldr r1, =gUnknown_08305D2C
ldrb r1, [r1, 0x18]
diff --git a/asm/contest.s b/asm/contest.s
index 133443bef..e85ed2d21 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -547,7 +547,7 @@ _080D7B4E:
strb r5, [r0]
bl sub_80D7988
bl init_uns_table_pokemon_copy
- ldr r4, =gBattleDecompressedSprites
+ ldr r4, =gBattleSpritesGfx
ldr r0, [r4]
ldr r0, [r0]
bl Free
@@ -6741,7 +6741,7 @@ sub_80DB174: @ 80DB174
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x4]
adds r2, r5, 0
@@ -6753,7 +6753,7 @@ _080DB1B8:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x4]
adds r2, r5, 0
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s
index c23a956a6..cfca378da 100644
--- a/asm/contest_link_80F57C4.s
+++ b/asm/contest_link_80F57C4.s
@@ -1364,7 +1364,7 @@ _080F6454:
mov r9, r4
ldr r4, =gMonFrontPicTable
mov r12, r4
- ldr r4, =gBattleDecompressedSprites
+ ldr r4, =gBattleSpritesGfx
mov r8, r4
cmp r0, 0
beq _080F648C
diff --git a/asm/contest_painting.s b/asm/contest_painting.s
index 7bf3c75d9..42cdf6802 100644
--- a/asm/contest_painting.s
+++ b/asm/contest_painting.s
@@ -581,7 +581,7 @@ sub_81302E8: @ 81302E8
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r4, =gBattleDecompressedSprites
+ ldr r4, =gBattleSpritesGfx
ldr r1, [r4]
ldr r1, [r1, 0x8]
ldr r2, [r6]
@@ -600,7 +600,7 @@ _08130348:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r4, =gBattleDecompressedSprites
+ ldr r4, =gBattleSpritesGfx
ldr r1, [r4]
ldr r1, [r1, 0x4]
ldr r2, [r6]
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
index 829c749d5..e4a8e6cc2 100644
--- a/asm/egg_hatch.s
+++ b/asm/egg_hatch.s
@@ -399,7 +399,7 @@ _08071688:
lsls r0, r4, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r2, [r1]
mov r6, r8
lsls r1, r6, 1
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index 3b7078e27..01a522d40 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -235,7 +235,7 @@ evolution_cutscene: @ 813DA8C
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r2, =gBattleDecompressedSprites
+ ldr r2, =gBattleSpritesGfx
ldr r1, [r2]
ldr r1, [r1, 0x8]
adds r2, r5, 0
@@ -291,7 +291,7 @@ evolution_cutscene: @ 813DA8C
lsls r0, r1, 3
ldr r2, =gMonFrontPicTable
adds r0, r2
- ldr r2, =gBattleDecompressedSprites
+ ldr r2, =gBattleSpritesGfx
ldr r1, [r2]
ldr r1, [r1, 0x10]
mov r2, r10
@@ -492,7 +492,7 @@ sub_813DD7C: @ 813DD7C
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x10]
adds r2, r5, 0
@@ -697,7 +697,7 @@ _0813E0A8:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x10]
adds r2, r6, 0
@@ -867,7 +867,7 @@ sub_813E1D4: @ 813E1D4
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r5, 0
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
index af9b0a745..ad3eb9e93 100644
--- a/asm/mystery_event_script.s
+++ b/asm/mystery_event_script.s
@@ -669,7 +669,7 @@ sub_8153CC8: @ 8153CC8
cmp r4, r0
bne _08153D18
ldr r0, =gStringVar1
- ldr r1, =gUnknown_085E8264
+ ldr r1, =gEggNickname
movs r2, 0xB
bl StringCopyN
b _08153D22
diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s
index a38379935..a0ba98d77 100644
--- a/asm/pokeblock_feed.s
+++ b/asm/pokeblock_feed.s
@@ -322,7 +322,7 @@ _08179E48:
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r5, 0
diff --git a/asm/pokemon_1.s b/asm/pokemon_1.s
index 45a863c67..119a360e3 100644
--- a/asm/pokemon_1.s
+++ b/asm/pokemon_1.s
@@ -823,8 +823,8 @@ _08068A02:
.pool
thumb_func_end sub_80688F8
- thumb_func_start get_pokemon_data_3
-get_pokemon_data_3: @ 8068A10
+ thumb_func_start GetDeoxysStat
+GetDeoxysStat: @ 8068A10
push {r4-r6,lr}
adds r5, r0, 0
adds r6, r1, 0
@@ -895,7 +895,7 @@ _08068A9A:
pop {r1}
bx r1
.pool
- thumb_func_end get_pokemon_data_3
+ thumb_func_end GetDeoxysStat
thumb_func_start sub_8068AA4
sub_8068AA4: @ 8068AA4
diff --git a/asm/pokemon_2.s b/asm/pokemon_2.s
index b6eb5a7bc..a13c6951c 100644
--- a/asm/pokemon_2.s
+++ b/asm/pokemon_2.s
@@ -5,1140 +5,6 @@
.text
- thumb_func_start CountAliveMonsInBattle
-CountAliveMonsInBattle: @ 8069DEC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- movs r6, 0
- cmp r0, 0x1
- beq _08069E40
- cmp r0, 0x1
- bgt _08069E04
- cmp r0, 0
- beq _08069E0A
- b _08069EC2
-_08069E04:
- cmp r1, 0x2
- beq _08069E88
- b _08069EC2
-_08069E0A:
- movs r5, 0
- ldr r0, =gActiveBank
- ldrb r3, [r0]
- ldr r4, =gAbsentBankFlags
- ldr r2, =gBitTable
-_08069E14:
- cmp r5, r3
- beq _08069E28
- ldrb r0, [r4]
- ldr r1, [r2]
- ands r0, r1
- cmp r0, 0
- bne _08069E28
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08069E28:
- adds r2, 0x4
- adds r5, 0x1
- cmp r5, 0x3
- ble _08069E14
- b _08069EC2
- .pool
-_08069E40:
- movs r5, 0
-_08069E42:
- lsls r0, r5, 24
- lsrs r0, 24
- bl GetBankSide
- adds r4, r0, 0
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _08069E74
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08069E74
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08069E74:
- adds r5, 0x1
- cmp r5, 0x3
- ble _08069E42
- b _08069EC2
- .pool
-_08069E88:
- movs r5, 0
-_08069E8A:
- lsls r0, r5, 24
- lsrs r0, 24
- bl GetBankSide
- adds r4, r0, 0
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _08069EBC
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08069EBC
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08069EBC:
- adds r5, 0x1
- cmp r5, 0x3
- ble _08069E8A
-_08069EC2:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end CountAliveMonsInBattle
-
- thumb_func_start ShouldGetStatBadgeBoost
-ShouldGetStatBadgeBoost: @ 8069ED8
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r2, r1, 24
- ldr r4, =gBattleTypeFlags
- ldr r0, [r4]
- ldr r1, =0x023f0902
- ands r0, r1
- cmp r0, 0
- bne _08069F1C
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08069F1C
- ldr r0, [r4]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08069F10
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _08069F1C
-_08069F10:
- adds r0, r5, 0
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08069F2C
-_08069F1C:
- movs r0, 0
- b _08069F2E
- .pool
-_08069F2C:
- movs r0, 0x1
-_08069F2E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ShouldGetStatBadgeBoost
-
- thumb_func_start sub_8069F34
-sub_8069F34: @ 8069F34
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- bl GetBankIdentity
- movs r1, 0x1
- movs r6, 0x1
- adds r4, r6, 0
- ands r4, r0
- eors r4, r1
- adds r5, r4, 0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ands r0, r6
- cmp r0, 0
- bne _08069F5C
- adds r0, r4, 0
- b _08069FA6
- .pool
-_08069F5C:
- movs r0, 0
- bl CountAliveMonsInBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08069F80
- bl Random
- adds r1, r6, 0
- ands r1, r0
- cmp r1, 0
- bne _08069F7C
- movs r0, 0x2
- eors r0, r4
- b _08069FA6
-_08069F7C:
- adds r0, r4, 0
- b _08069FA6
-_08069F80:
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r4, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08069FA0
- adds r0, r4, 0
- b _08069FA6
- .pool
-_08069FA0:
- movs r0, 0x2
- eors r5, r0
- adds r0, r5, 0
-_08069FA6:
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8069F34
-
- thumb_func_start GetMonGender
-GetMonGender: @ 8069FB4
- push {lr}
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetMonGender
-
- thumb_func_start GetBoxMonGender
-GetBoxMonGender: @ 8069FC4
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0xB
- movs r2, 0
- bl GetBoxMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl GetBoxMonData
- adds r2, r0, 0
- ldr r1, =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x10]
- cmp r0, 0
- beq _0806A01A
- cmp r0, 0
- blt _08069FFC
- cmp r0, 0xFF
- bgt _08069FFC
- cmp r0, 0xFE
- bge _0806A01A
-_08069FFC:
- ldr r1, =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x10]
- movs r0, 0xFF
- ands r0, r2
- cmp r1, r0
- bhi _0806A018
- movs r0, 0
- b _0806A01A
- .pool
-_0806A018:
- movs r0, 0xFE
-_0806A01A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetBoxMonGender
-
- thumb_func_start GetGenderFromSpeciesAndPersonality
-GetGenderFromSpeciesAndPersonality: @ 806A020
- push {lr}
- adds r3, r1, 0
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r1, =gBaseStats
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x10]
- cmp r0, 0
- beq _0806A062
- cmp r0, 0
- blt _0806A044
- cmp r0, 0xFF
- bgt _0806A044
- cmp r0, 0xFE
- bge _0806A062
-_0806A044:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x10]
- movs r0, 0xFF
- ands r0, r3
- cmp r1, r0
- bhi _0806A060
- movs r0, 0
- b _0806A062
- .pool
-_0806A060:
- movs r0, 0xFE
-_0806A062:
- pop {r1}
- bx r1
- thumb_func_end GetGenderFromSpeciesAndPersonality
-
- thumb_func_start sub_806A068
-sub_806A068: @ 806A068
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, =gBattleDecompressedSprites
- ldr r2, [r0]
- cmp r2, 0
- beq _0806A09C
- ldr r0, =gUnknown_0202499C
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 3
- adds r1, r2, r1
- adds r2, r0, 0
- adds r1, 0x14
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- adds r3, r0, 0
- b _0806A0DA
- .pool
-_0806A09C:
- ldr r1, =gUnknown_020249B4
- ldr r0, [r1]
- cmp r0, 0
- beq _0806A0B4
- ldr r3, =gUnknown_0202499C
- ldr r2, [r0, 0xC]
- b _0806A0C8
- .pool
-_0806A0B4:
- ldr r0, [r1, 0x4]
- cmp r0, 0
- beq _0806A0C4
- ldr r3, =gUnknown_0202499C
- ldr r2, [r0, 0xC]
- b _0806A0C8
- .pool
-_0806A0C4:
- ldr r3, =gUnknown_0202499C
- ldr r2, =gUnknown_08329D98
-_0806A0C8:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r1, r3, 0
- adds r0, r2
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
-_0806A0DA:
- adds r2, r3, 0
- strh r5, [r2, 0x2]
- cmp r4, 0
- beq _0806A0E6
- cmp r4, 0x2
- bne _0806A0F8
-_0806A0E6:
- ldr r0, =gUnknown_082FF70C
- str r0, [r2, 0x8]
- b _0806A122
- .pool
-_0806A0F8:
- movs r0, 0xFA
- lsls r0, 1
- cmp r5, r0
- bls _0806A118
- ldr r0, =gUnknown_08309AAC
- ldr r3, =0xfffffe0c
- adds r1, r5, r3
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2, 0x8]
- b _0806A122
- .pool
-_0806A118:
- ldr r0, =gUnknown_08309AAC
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r3, 0x8]
-_0806A122:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806A068
-
- thumb_func_start template_build_for_pokemon_or_trainer
-template_build_for_pokemon_or_trainer: @ 806A12C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r0, =gUnknown_0202499C
- strh r4, [r0, 0x2]
- adds r5, r0, 0
- cmp r3, 0
- beq _0806A144
- cmp r3, 0x2
- bne _0806A170
-_0806A144:
- ldr r2, =gUnknown_08329DF8
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r1, r5, 0
- adds r0, r2
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldr r1, =gUnknown_08305D0C
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- b _0806A1B0
- .pool
-_0806A170:
- ldr r0, =gBattleDecompressedSprites
- ldr r1, [r0]
- cmp r1, 0
- beq _0806A194
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r0, r1, r0
- adds r1, r5, 0
- adds r0, 0x14
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- b _0806A1A8
- .pool
-_0806A194:
- ldr r0, =gUnknown_08329D98
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 3
- adds r2, r5, 0
- adds r1, r0
- ldm r1!, {r0,r3,r6}
- stm r2!, {r0,r3,r6}
- ldm r1!, {r0,r3,r6}
- stm r2!, {r0,r3,r6}
-_0806A1A8:
- ldr r0, =gUnknown_0830536C
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
-_0806A1B0:
- str r0, [r5, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end template_build_for_pokemon_or_trainer
-
- thumb_func_start sub_806A1C0
-sub_806A1C0: @ 806A1C0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, =gBattleDecompressedSprites
- ldr r2, [r0]
- cmp r2, 0
- beq _0806A1F4
- ldr r0, =gUnknown_0202499C
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 3
- adds r1, r2, r1
- adds r2, r0, 0
- adds r1, 0x14
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- adds r3, r0, 0
- b _0806A20A
- .pool
-_0806A1F4:
- ldr r3, =gUnknown_0202499C
- ldr r2, =gUnknown_08329D98
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r1, r3, 0
- adds r0, r2
- ldm r0!, {r2,r4,r6}
- stm r1!, {r2,r4,r6}
- ldm r0!, {r2,r4,r6}
- stm r1!, {r2,r4,r6}
-_0806A20A:
- strh r5, [r3, 0x2]
- ldr r0, =gUnknown_0830536C
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r3, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806A1C0
-
- thumb_func_start EncryptBoxMon
-@ void EncryptBoxMon(pokemon *mon)
-EncryptBoxMon: @ 806A228
- push {r4,lr}
- adds r3, r0, 0
- movs r4, 0
- adds r2, r3, 0
- adds r2, 0x20
-_0806A232:
- ldr r0, [r2]
- ldr r1, [r3]
- eors r0, r1
- str r0, [r2]
- ldr r1, [r3, 0x4]
- eors r0, r1
- stm r2!, {r0}
- adds r4, 0x1
- cmp r4, 0xB
- bls _0806A232
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end EncryptBoxMon
-
- thumb_func_start DecryptBoxMon
-@ void DecryptBoxMon(pokemon *mon)
-DecryptBoxMon: @ 806A24C
- push {r4,lr}
- adds r3, r0, 0
- movs r4, 0
- adds r2, r3, 0
- adds r2, 0x20
-_0806A256:
- ldr r0, [r2]
- ldr r1, [r3, 0x4]
- eors r0, r1
- str r0, [r2]
- ldr r1, [r3]
- eors r0, r1
- stm r2!, {r0}
- adds r4, 0x1
- cmp r4, 0xB
- bls _0806A256
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end DecryptBoxMon
-
- thumb_func_start GetSubstruct
-@ int GetSubstruct(pokemon *mon, int a2, u8 a3)
-GetSubstruct: @ 806A270
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r0, r1, 0
- lsls r2, 24
- lsrs r4, r2, 24
- movs r6, 0
- movs r1, 0x18
- bl __umodsi3
- cmp r0, 0x17
- bls _0806A288
- b _0806A510
-_0806A288:
- lsls r0, 2
- ldr r1, =_0806A298
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0806A298:
- .4byte _0806A2F8
- .4byte _0806A31C
- .4byte _0806A338
- .4byte _0806A34E
- .4byte _0806A364
- .4byte _0806A380
- .4byte _0806A396
- .4byte _0806A3AC
- .4byte _0806A3BC
- .4byte _0806A3DA
- .4byte _0806A3F2
- .4byte _0806A402
- .4byte _0806A416
- .4byte _0806A428
- .4byte _0806A43A
- .4byte _0806A44C
- .4byte _0806A45E
- .4byte _0806A470
- .4byte _0806A482
- .4byte _0806A498
- .4byte _0806A4AC
- .4byte _0806A4BA
- .4byte _0806A4CC
- .4byte _0806A4E0
-_0806A2F8:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A302
- b _0806A508
-_0806A302:
- cmp r4, 0x1
- bgt _0806A30E
-_0806A306:
- cmp r4, 0
- bne _0806A30C
- b _0806A50E
-_0806A30C:
- b _0806A510
-_0806A30E:
- cmp r4, 0x2
- bne _0806A314
- b _0806A502
-_0806A314:
- cmp r4, 0x3
- beq _0806A31A
- b _0806A510
-_0806A31A:
- b _0806A4FC
-_0806A31C:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A326
- b _0806A508
-_0806A326:
- cmp r4, 0x1
- ble _0806A306
-_0806A32A:
- cmp r4, 0x2
- bne _0806A330
- b _0806A4FC
-_0806A330:
- cmp r4, 0x3
- beq _0806A336
- b _0806A510
-_0806A336:
- b _0806A502
-_0806A338:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A342
- b _0806A502
-_0806A342:
- cmp r4, 0x1
- ble _0806A306
- cmp r4, 0x2
- bne _0806A34C
- b _0806A508
-_0806A34C:
- b _0806A314
-_0806A34E:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A358
- b _0806A4FC
-_0806A358:
- cmp r4, 0x1
- ble _0806A306
- cmp r4, 0x2
- bne _0806A362
- b _0806A508
-_0806A362:
- b _0806A330
-_0806A364:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A36E
- b _0806A502
-_0806A36E:
- cmp r4, 0x1
- ble _0806A306
-_0806A372:
- cmp r4, 0x2
- bne _0806A378
- b _0806A4FC
-_0806A378:
- cmp r4, 0x3
- beq _0806A37E
- b _0806A510
-_0806A37E:
- b _0806A508
-_0806A380:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A38A
- b _0806A4FC
-_0806A38A:
- cmp r4, 0x1
- ble _0806A306
- cmp r4, 0x2
- bne _0806A394
- b _0806A502
-_0806A394:
- b _0806A378
-_0806A396:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A3A0
- b _0806A50E
-_0806A3A0:
- cmp r4, 0x1
- bgt _0806A30E
-_0806A3A4:
- cmp r4, 0
- bne _0806A3AA
- b _0806A508
-_0806A3AA:
- b _0806A510
-_0806A3AC:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A3B6
- b _0806A50E
-_0806A3B6:
- cmp r4, 0x1
- ble _0806A3A4
- b _0806A32A
-_0806A3BC:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A3C6
- b _0806A50E
-_0806A3C6:
- cmp r4, 0x1
- bgt _0806A3D2
-_0806A3CA:
- cmp r4, 0
- bne _0806A3D0
- b _0806A502
-_0806A3D0:
- b _0806A510
-_0806A3D2:
- cmp r4, 0x2
- bne _0806A3D8
- b _0806A508
-_0806A3D8:
- b _0806A314
-_0806A3DA:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A3E4
- b _0806A50E
-_0806A3E4:
- cmp r4, 0x1
- bgt _0806A3EA
- b _0806A4EC
-_0806A3EA:
- cmp r4, 0x2
- bne _0806A3F0
- b _0806A508
-_0806A3F0:
- b _0806A330
-_0806A3F2:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A3FC
- b _0806A50E
-_0806A3FC:
- cmp r4, 0x1
- ble _0806A3CA
- b _0806A372
-_0806A402:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- bne _0806A40C
- b _0806A50E
-_0806A40C:
- cmp r4, 0x1
- ble _0806A4EC
- cmp r4, 0x2
- beq _0806A502
- b _0806A378
-_0806A416:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A502
- cmp r4, 0x1
- ble _0806A3A4
- cmp r4, 0x2
- beq _0806A50E
- b _0806A314
-_0806A428:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A4FC
- cmp r4, 0x1
- ble _0806A3A4
- cmp r4, 0x2
- beq _0806A50E
- b _0806A330
-_0806A43A:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A508
- cmp r4, 0x1
- ble _0806A3CA
- cmp r4, 0x2
- beq _0806A50E
- b _0806A314
-_0806A44C:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A508
- cmp r4, 0x1
- ble _0806A4EC
- cmp r4, 0x2
- beq _0806A50E
- b _0806A330
-_0806A45E:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A4FC
- cmp r4, 0x1
- ble _0806A3CA
- cmp r4, 0x2
- beq _0806A50E
- b _0806A378
-_0806A470:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A502
- cmp r4, 0x1
- ble _0806A4EC
- cmp r4, 0x2
- beq _0806A50E
- b _0806A378
-_0806A482:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A502
- cmp r4, 0x1
- ble _0806A3A4
-_0806A48E:
- cmp r4, 0x2
- beq _0806A4FC
-_0806A492:
- cmp r4, 0x3
- bne _0806A510
- b _0806A50E
-_0806A498:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A4FC
- cmp r4, 0x1
- bgt _0806A4A6
- b _0806A3A4
-_0806A4A6:
- cmp r4, 0x2
- beq _0806A502
- b _0806A492
-_0806A4AC:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A508
- cmp r4, 0x1
- ble _0806A3CA
- b _0806A48E
-_0806A4BA:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A508
- cmp r4, 0x1
- ble _0806A4EC
- cmp r4, 0x2
- beq _0806A502
- b _0806A492
-_0806A4CC:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A4FC
- cmp r4, 0x1
- bgt _0806A4DA
- b _0806A3CA
-_0806A4DA:
- cmp r4, 0x2
- beq _0806A508
- b _0806A492
-_0806A4E0:
- adds r0, r5, 0
- adds r0, 0x20
- cmp r4, 0x1
- beq _0806A502
- cmp r4, 0x1
- bgt _0806A4F2
-_0806A4EC:
- cmp r4, 0
- beq _0806A4FC
- b _0806A510
-_0806A4F2:
- cmp r4, 0x2
- beq _0806A508
- cmp r4, 0x3
- beq _0806A50E
- b _0806A510
-_0806A4FC:
- adds r6, r5, 0
- adds r6, 0x44
- b _0806A510
-_0806A502:
- adds r6, r5, 0
- adds r6, 0x38
- b _0806A510
-_0806A508:
- adds r6, r5, 0
- adds r6, 0x2C
- b _0806A510
-_0806A50E:
- adds r6, r0, 0
-_0806A510:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetSubstruct
-
- thumb_func_start GetMonData
-@ int GetMonData(pokemon *mon, enum pokemon_data_request req, void *data)
-GetMonData: @ 806A518
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r1, 0
- adds r0, r3, 0
- subs r0, 0x37
- cmp r0, 0x21
- bls _0806A528
- b _0806A666
-_0806A528:
- lsls r0, 2
- ldr r1, =_0806A538
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0806A538:
- .4byte _0806A5C0
- .4byte _0806A5C4
- .4byte _0806A5CC
- .4byte _0806A5D4
- .4byte _0806A5DC
- .4byte _0806A5EE
- .4byte _0806A600
- .4byte _0806A612
- .4byte _0806A624
- .4byte _0806A65E
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A666
- .4byte _0806A636
- .4byte _0806A63E
- .4byte _0806A646
- .4byte _0806A64E
- .4byte _0806A656
-_0806A5C0:
- ldr r0, [r4, 0x50]
- b _0806A66E
-_0806A5C4:
- adds r0, r4, 0
- adds r0, 0x54
- ldrb r0, [r0]
- b _0806A66E
-_0806A5CC:
- adds r0, r4, 0
- adds r0, 0x56
- ldrh r0, [r0]
- b _0806A66E
-_0806A5D4:
- adds r0, r4, 0
- adds r0, 0x58
- ldrh r0, [r0]
- b _0806A66E
-_0806A5DC:
- adds r0, r4, 0
- movs r1, 0x1
- bl get_pokemon_data_3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0806A66E
- b _0806A636
-_0806A5EE:
- adds r0, r4, 0
- movs r1, 0x2
- bl get_pokemon_data_3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0806A66E
- b _0806A63E
-_0806A600:
- adds r0, r4, 0
- movs r1, 0x3
- bl get_pokemon_data_3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0806A66E
- b _0806A646
-_0806A612:
- adds r0, r4, 0
- movs r1, 0x4
- bl get_pokemon_data_3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0806A66E
- b _0806A64E
-_0806A624:
- adds r0, r4, 0
- movs r1, 0x5
- bl get_pokemon_data_3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0806A66E
- b _0806A656
-_0806A636:
- adds r0, r4, 0
- adds r0, 0x5A
- ldrh r0, [r0]
- b _0806A66E
-_0806A63E:
- adds r0, r4, 0
- adds r0, 0x5C
- ldrh r0, [r0]
- b _0806A66E
-_0806A646:
- adds r0, r4, 0
- adds r0, 0x5E
- ldrh r0, [r0]
- b _0806A66E
-_0806A64E:
- adds r0, r4, 0
- adds r0, 0x60
- ldrh r0, [r0]
- b _0806A66E
-_0806A656:
- adds r0, r4, 0
- adds r0, 0x62
- ldrh r0, [r0]
- b _0806A66E
-_0806A65E:
- adds r0, r4, 0
- adds r0, 0x55
- ldrb r0, [r0]
- b _0806A66E
-_0806A666:
- adds r0, r4, 0
- adds r1, r3, 0
- bl GetBoxMonData
-_0806A66E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMonData
-
thumb_func_start GetBoxMonData
@ int GetBoxMonData(pokemon *mon, enum pokemon_data_request req, void *data)
GetBoxMonData: @ 806A674
@@ -1313,7 +179,7 @@ _0806A864:
cmp r0, 0
beq _0806A89C
movs r4, 0
- ldr r0, =gUnknown_085CCB90
+ ldr r0, =gBadEggNickname
ldrb r1, [r0]
adds r2, r0, 0
cmp r1, 0xFF
@@ -1338,7 +204,7 @@ _0806A89C:
ands r0, r1
cmp r0, 0
beq _0806A8BC
- ldr r1, =gUnknown_085E8264
+ ldr r1, =gEggNickname
adds r0, r6, 0
bl StringCopy
adds r0, r6, 0
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
index 7c8d43040..f83a11ff1 100644
--- a/asm/reshow_battle_screen.s
+++ b/asm/reshow_battle_screen.s
@@ -616,7 +616,7 @@ _080A986C:
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r6, =gUnknown_0202499C
ldr r1, =gUnknown_08305D2C
ldr r0, [r5]
@@ -654,7 +654,7 @@ _080A98D0:
lsls r1, 24
lsrs r1, 24
movs r0, 0x6
- bl template_build_for_pokemon_or_trainer
+ bl sub_806A12C
ldr r5, =gUnknown_0202499C
ldr r0, =gUnknown_08305D2C
ldrb r0, [r0, 0x18]
diff --git a/asm/rom_8072304.s b/asm/rom_8072304.s
index 547f06102..8107917ae 100644
--- a/asm/rom_8072304.s
+++ b/asm/rom_8072304.s
@@ -1317,7 +1317,7 @@ _08072D86:
movs r2, 0x1
movs r3, 0x3
bl ConvertIntToDecimalStringN
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
movs r1, 0xBA
lsls r1, 1
@@ -1333,7 +1333,7 @@ _08072D86:
lsls r0, 2
adds r5, r0, r1
_08072DB8:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
movs r1, 0xBA
lsls r1, 1
@@ -1536,7 +1536,7 @@ _08072F52:
ldr r1, =gUnknown_085E8D3E
bl StringCopy
_08072F82:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
movs r1, 0xBA
lsls r1, 1
@@ -1556,7 +1556,7 @@ _08072F82:
_08072FA6:
cmp r4, 0x2
bhi _08072FF0
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
movs r2, 0xBA
lsls r2, 1
@@ -1579,7 +1579,7 @@ _08072FA6:
b _0807301A
.pool
_08072FF0:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
movs r1, 0xBA
lsls r1, 1
@@ -1609,7 +1609,7 @@ _08073024:
mov r3, r8
cmp r3, 0
bne _08073084
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
movs r1, 0xBA
lsls r1, 1
@@ -1702,7 +1702,7 @@ sub_80730D4: @ 80730D4
lsls r0, 24
lsrs r0, 24
bl GetBankIdentity
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r2, [r1]
movs r3, 0xBA
lsls r3, 1
@@ -1877,7 +1877,7 @@ _08073236:
strb r0, [r1, 0x5]
movs r0, 0xBA
strb r0, [r1, 0x8]
- ldr r5, =gBattleDecompressedSprites
+ ldr r5, =gBattleSpritesGfx
ldr r0, [r5]
movs r2, 0xBA
lsls r2, 1
diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s
index 42387318f..ea75d4e2b 100644
--- a/asm/rom_80A5C6C.s
+++ b/asm/rom_80A5C6C.s
@@ -5155,7 +5155,7 @@ sub_80A8394: @ 80A8394
bl AllocSpritePalette
lsls r0, 24
lsrs r5, r0, 24
- ldr r4, =gBattleDecompressedSprites
+ ldr r4, =gBattleSpritesGfx
ldr r0, [r4]
cmp r0, 0
beq _080A8412
@@ -5213,7 +5213,7 @@ _080A845E:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
movs r3, 0xBE
lsls r3, 1
@@ -5226,7 +5226,7 @@ _080A8488:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
@@ -5276,7 +5276,7 @@ _080A84F6:
lsls r0, r6, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
@@ -5294,7 +5294,7 @@ _080A8524:
lsls r0, r6, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
movs r3, 0xBE
lsls r3, 1
@@ -5305,7 +5305,7 @@ _080A8524:
mov r3, r8
bl LoadSpecialPokePic_2
_080A8540:
- ldr r5, =gBattleDecompressedSprites
+ ldr r5, =gBattleSpritesGfx
ldr r0, [r5]
movs r4, 0xBE
lsls r4, 1
diff --git a/asm/rom_80C6FA0.s b/asm/rom_80C6FA0.s
index c58388b92..442c83cfa 100644
--- a/asm/rom_80C6FA0.s
+++ b/asm/rom_80C6FA0.s
@@ -14847,7 +14847,7 @@ _080CEE94:
_080CEEC0:
ldr r2, =0x00000cf9
adds r0, r1, r2
- ldr r1, =gUnknown_085E8264
+ ldr r1, =gEggNickname
movs r2, 0
movs r3, 0x8
bl StringCopyPadded
diff --git a/asm/rom_815A0D4.s b/asm/rom_815A0D4.s
index b114c38c7..253f25337 100644
--- a/asm/rom_815A0D4.s
+++ b/asm/rom_815A0D4.s
@@ -3024,7 +3024,7 @@ _0815B8E0:
lsls r0, 24
lsrs r1, r0, 24
_0815B8EA:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r2, [r0]
lsls r0, r1, 2
adds r2, 0x4
diff --git a/asm/rom_81BE66C.s b/asm/rom_81BE66C.s
index d0143fabb..fb7027a59 100644
--- a/asm/rom_81BE66C.s
+++ b/asm/rom_81BE66C.s
@@ -2290,7 +2290,7 @@ _081BF9EE:
strb r1, [r0]
movs r0, 0xFF
bl sub_81C488C
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
cmp r0, 0
bne _081BFA12
@@ -3447,7 +3447,7 @@ sub_81C0484: @ 81C0484
movs r2, 0x80
lsls r2, 1
bl m4aMPlayVolumeControl
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r0, [r0]
cmp r0, 0
bne _081C04E2
@@ -10970,7 +10970,7 @@ _081C4620:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x8]
b _081C46D6
@@ -10980,12 +10980,12 @@ _081C4668:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
b _081C46B0
.pool
_081C4680:
- ldr r0, =gBattleDecompressedSprites
+ ldr r0, =gBattleSpritesGfx
ldr r3, [r0]
adds r4, r0, 0
cmp r3, 0
@@ -28902,7 +28902,7 @@ sub_81CD624: @ 81CD624
bl sub_81D2C68
cmp r0, 0
beq _081CD690
- ldr r1, =gUnknown_085E8264
+ ldr r1, =gEggNickname
adds r0, r5, 0
movs r2, 0
movs r3, 0xC
@@ -39944,7 +39944,7 @@ sub_81D2CD0: @ 81D2CD0
bl sub_81D2C68
cmp r0, 0
beq _081D2D20
- ldr r1, =gUnknown_085E8264
+ ldr r1, =gEggNickname
adds r0, r5, 0
movs r2, 0
movs r3, 0xC
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index 429128056..ca0b04e63 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -710,7 +710,7 @@ _080F8D44:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r6, 0
@@ -722,7 +722,7 @@ _080F8DC4:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r6, 0
diff --git a/asm/trade.s b/asm/trade.s
index 8b8a496b2..56fba40c3 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -7128,7 +7128,7 @@ _0807AD58:
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r5, 0
@@ -7141,7 +7141,7 @@ _0807AD94:
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r2, [r1]
lsls r4, r6, 1
adds r1, r4, 0x1
@@ -10369,7 +10369,7 @@ _0807CCEE:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
@@ -12474,7 +12474,7 @@ _0807E13A:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleDecompressedSprites
+ ldr r1, =gBattleSpritesGfx
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
diff --git a/data/battle_message.s b/data/battle_message.s
index d1bd0c8ef..93a921b5e 100644
--- a/data/battle_message.s
+++ b/data/battle_message.s
@@ -679,7 +679,7 @@ gUnknown_085CCB88:: @ 85CCB88
gUnknown_085CCB8C:: @ 85CCB8C
.incbin "baserom.gba", 0x5ccb8c, 0x4
-gUnknown_085CCB90:: @ 85CCB90
+gBadEggNickname:: @ 85CCB90
.incbin "baserom.gba", 0x5ccb90, 0x8
BattleText_Wally:: @ 85CCB98
diff --git a/data/strings.s b/data/strings.s
index 94cf82c59..4adbf17bd 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -45,7 +45,7 @@ gExpandedPlaceholder_Brendan:: @ 85E8258
gExpandedPlaceholder_May:: @ 85E8260
.string "MAY$"
-gUnknown_085E8264:: @ 85E8264
+gEggNickname:: @ 85E8264
.string "EGG$"
diff --git a/include/battle.h b/include/battle.h
index 61270bed0..01d89fc35 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -33,9 +33,13 @@
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define STEVEN_PARTNER_ID 0xC03
+#define SECRET_BASE_OPPONENT 0x400
#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
+#define SIDE_PLAYER 0x0
+#define SIDE_OPPONENT 0x1
+
#define BATTLE_WON 0x1
#define BATTLE_LOST 0x2
#define BATTLE_DREW 0x3
@@ -513,12 +517,15 @@ struct BattleScripting
extern struct BattleScripting gBattleScripting;
-struct BattleDecompressedSprites
+#include "sprite.h"
+
+struct BattleSpritesGfx
{
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
+ struct SpriteTemplate templates[4];
};
-extern struct BattleDecompressedSprites* gBattleDecompressedSprites;
+extern struct BattleSpritesGfx* gBattleSpritesGfx;
#endif // GUARD_BATTLE_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 12b58ba9f..a7d89ea29 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -89,7 +89,7 @@
#define MON_DATA_DEF2 85
#define MON_DATA_SPD2 86
#define MON_DATA_SPATK2 87
-#define MON_DATA_SPDEF2 88
+#define MON_DATA_SPDEF2 88
#define OT_ID_RANDOM_NO_SHINY 2
#define OT_ID_PRESET 1
@@ -279,7 +279,7 @@ struct Pokemon
struct BoxPokemon box;
u32 status;
u8 level;
- u8 pokerus;
+ u8 mail;
u16 hp;
u16 maxHP;
u16 attack;
@@ -495,6 +495,10 @@ extern struct PokemonStorage* gPokemonStoragePtr;
extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
+#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
+#define BATTLE_ALIVE_ATK_SIDE 1
+#define BATTLE_ALIVE_DEF_SIDE 2
+
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
void ZeroPlayerPartyMons(void);
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index d50853383..aba2f35f1 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -1,4 +1,356 @@
#include "global.h"
#include "pokemon.h"
+#include "battle.h"
+#include "event_data.h"
+#include "rng.h"
+#include "sprite.h"
+#include "species.h"
+#include "text.h"
+#include "string_util.h"
+struct Unknown_020249B4
+{
+ u8 unk0[0xC];
+ struct SpriteTemplate* templates;
+};
+extern u8 gAbsentBankFlags;
+extern u8 gActiveBank;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u16 gTrainerBattleOpponent_A;
+extern u32 gBattleTypeFlags;
+extern struct SpriteTemplate gUnknown_0202499C;
+extern struct Unknown_020249B4* gUnknown_020249B4[2];
+
+extern const u32 gBitTable[];
+extern const struct SpriteTemplate gUnknown_08329D98[];
+extern const struct SpriteTemplate gUnknown_08329DF8[];
+extern const struct SpriteTemplate gUnknown_08329D98[];
+extern const union AnimCmd* gUnknown_082FF70C[];
+extern const union AnimCmd* const * const gUnknown_08309AAC[];
+extern const union AnimCmd* const * const gUnknown_08305D0C[];
+extern const union AnimCmd* const * const gUnknown_0830536C[];
+extern const u8 gBadEggNickname[];
+extern const u8 gEggNickname[];
+
+extern u8 GetBankSide(u8 bank);
+extern u8 GetBankByPlayerAI(u8 bank);
+extern u8 GetBankIdentity(u8 bank);
+
+u8 CountAliveMonsInBattle(u8 caseId)
+{
+ s32 i;
+ u8 retVal = 0;
+
+ switch (caseId)
+ {
+ case BATTLE_ALIVE_EXCEPT_ACTIVE:
+ for (i = 0; i < 4; i++)
+ {
+ if (i != gActiveBank && !(gAbsentBankFlags & gBitTable[i]))
+ retVal++;
+ }
+ break;
+ case BATTLE_ALIVE_ATK_SIDE:
+ for (i = 0; i < 4; i++)
+ {
+ if (GetBankSide(i) == GetBankSide(gBankAttacker) && !(gAbsentBankFlags & gBitTable[i]))
+ retVal++;
+ }
+ break;
+ case BATTLE_ALIVE_DEF_SIDE:
+ for (i = 0; i < 4; i++)
+ {
+ if (GetBankSide(i) == GetBankSide(gBankTarget) && !(gAbsentBankFlags & gBitTable[i]))
+ retVal++;
+ }
+ break;
+ }
+
+ return retVal;
+}
+
+bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 bank)
+{
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
+ return FALSE;
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ return FALSE;
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ return FALSE;
+ if (FlagGet(badgeFlag))
+ return TRUE;
+ return FALSE;
+}
+
+u8 sub_8069F34(u8 bank)
+{
+ u8 status = GetBankIdentity(bank) & 1;
+
+ status ^= 1;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ return GetBankByPlayerAI(status);
+ if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) > 1)
+ {
+ u8 val;
+
+ if ((Random() & 1) == 0)
+ val = status ^ 2;
+ else
+ val = status;
+ return GetBankByPlayerAI(val);
+ }
+ else
+ {
+ if ((gAbsentBankFlags & gBitTable[status]))
+ return GetBankByPlayerAI(status ^ 2);
+ else
+ return GetBankByPlayerAI(status);
+ }
+}
+
+u8 GetMonGender(struct Pokemon *mon)
+{
+ return GetBoxMonGender(&mon->box);
+}
+
+u8 GetBoxMonGender(struct BoxPokemon *boxMon)
+{
+ u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
+ u32 personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL);
+
+ switch (gBaseStats[species].genderRatio)
+ {
+ case MON_MALE:
+ case MON_FEMALE:
+ case MON_GENDERLESS:
+ return gBaseStats[species].genderRatio;
+ }
+
+ if (gBaseStats[species].genderRatio > (personality & 0xFF))
+ return MON_FEMALE;
+ else
+ return MON_MALE;
+}
+
+u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
+{
+ switch (gBaseStats[species].genderRatio)
+ {
+ case MON_MALE:
+ case MON_FEMALE:
+ case MON_GENDERLESS:
+ return gBaseStats[species].genderRatio;
+ }
+
+ if (gBaseStats[species].genderRatio > (personality & 0xFF))
+ return MON_FEMALE;
+ else
+ return MON_MALE;
+}
+
+void sub_806A068(u16 species, u8 bankIdentity)
+{
+ if (gBattleSpritesGfx != NULL)
+ gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity];
+ else if (gUnknown_020249B4[0])
+ gUnknown_0202499C = gUnknown_020249B4[0]->templates[bankIdentity];
+ else if (gUnknown_020249B4[1])
+ gUnknown_0202499C = gUnknown_020249B4[1]->templates[bankIdentity];
+ else
+ gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
+
+ gUnknown_0202499C.paletteTag = species;
+ if (bankIdentity == 0 || bankIdentity == 2)
+ gUnknown_0202499C.anims = gUnknown_082FF70C;
+ else if (species > 500)
+ gUnknown_0202499C.anims = gUnknown_08309AAC[species - 500];
+ else
+ gUnknown_0202499C.anims = gUnknown_08309AAC[species];
+}
+
+void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity)
+{
+ gUnknown_0202499C.paletteTag = trainerSpriteId;
+ if (bankIdentity == 0 || bankIdentity == 2)
+ {
+ gUnknown_0202499C = gUnknown_08329DF8[trainerSpriteId];
+ gUnknown_0202499C.anims = gUnknown_08305D0C[trainerSpriteId];
+ }
+ else
+ {
+ if (gBattleSpritesGfx != NULL)
+ gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity];
+ else
+ gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
+ gUnknown_0202499C.anims = gUnknown_0830536C[trainerSpriteId];
+ }
+}
+
+void sub_806A1C0(u16 arg0, u8 bankIdentity)
+{
+ if (gBattleSpritesGfx != NULL)
+ gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity];
+ else
+ gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
+ gUnknown_0202499C.paletteTag = arg0;
+ gUnknown_0202499C.anims = gUnknown_0830536C[arg0];
+}
+
+void EncryptBoxMon(struct BoxPokemon *boxMon)
+{
+ u32 i;
+ for (i = 0; i < 12; i++)
+ {
+ boxMon->secure.raw[i] ^= boxMon->personality;
+ boxMon->secure.raw[i] ^= boxMon->otId;
+ }
+}
+
+void DecryptBoxMon(struct BoxPokemon *boxMon)
+{
+ u32 i;
+ for (i = 0; i < 12; i++)
+ {
+ boxMon->secure.raw[i] ^= boxMon->otId;
+ boxMon->secure.raw[i] ^= boxMon->personality;
+ }
+}
+
+#define SUBSTRUCT_CASE(n, v1, v2, v3, v4) \
+case n: \
+ { \
+ union PokemonSubstruct *substructs0 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs1 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs2 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs3 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs4 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs5 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs6 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs7 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs8 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs9 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs10 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs11 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs12 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs13 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs14 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs15 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs16 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs17 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs18 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs19 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs20 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs21 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs22 = boxMon->secure.substructs; \
+ union PokemonSubstruct *substructs23 = boxMon->secure.substructs; \
+ \
+ switch (substructType) \
+ { \
+ case 0: \
+ substruct = &substructs ## n [v1]; \
+ break; \
+ case 1: \
+ substruct = &substructs ## n [v2]; \
+ break; \
+ case 2: \
+ substruct = &substructs ## n [v3]; \
+ break; \
+ case 3: \
+ substruct = &substructs ## n [v4]; \
+ break; \
+ } \
+ break; \
+ } \
+
+
+union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType)
+{
+ union PokemonSubstruct *substruct = NULL;
+
+ switch (personality % 24)
+ {
+ SUBSTRUCT_CASE( 0,0,1,2,3)
+ SUBSTRUCT_CASE( 1,0,1,3,2)
+ SUBSTRUCT_CASE( 2,0,2,1,3)
+ SUBSTRUCT_CASE( 3,0,3,1,2)
+ SUBSTRUCT_CASE( 4,0,2,3,1)
+ SUBSTRUCT_CASE( 5,0,3,2,1)
+ SUBSTRUCT_CASE( 6,1,0,2,3)
+ SUBSTRUCT_CASE( 7,1,0,3,2)
+ SUBSTRUCT_CASE( 8,2,0,1,3)
+ SUBSTRUCT_CASE( 9,3,0,1,2)
+ SUBSTRUCT_CASE(10,2,0,3,1)
+ SUBSTRUCT_CASE(11,3,0,2,1)
+ SUBSTRUCT_CASE(12,1,2,0,3)
+ SUBSTRUCT_CASE(13,1,3,0,2)
+ SUBSTRUCT_CASE(14,2,1,0,3)
+ SUBSTRUCT_CASE(15,3,1,0,2)
+ SUBSTRUCT_CASE(16,2,3,0,1)
+ SUBSTRUCT_CASE(17,3,2,0,1)
+ SUBSTRUCT_CASE(18,1,2,3,0)
+ SUBSTRUCT_CASE(19,1,3,2,0)
+ SUBSTRUCT_CASE(20,2,1,3,0)
+ SUBSTRUCT_CASE(21,3,1,2,0)
+ SUBSTRUCT_CASE(22,2,3,1,0)
+ SUBSTRUCT_CASE(23,3,2,1,0)
+ }
+
+ return substruct;
+}
+
+extern u16 GetDeoxysStat(struct Pokemon *mon, s32 statId);
+
+#define TRY_GET_DEOXYS_STAT(mon, stat, LABEL) \
+{ \
+ u32 ret = GetDeoxysStat(mon, stat); \
+ if (ret) \
+ return ret; \
+ else \
+ goto LABEL; \
+}
+
+u32 GetMonData(struct Pokemon *mon, s32 field, u8 *data)
+{
+ switch (field)
+ {
+ case MON_DATA_STATUS:
+ return mon->status;
+ case MON_DATA_LEVEL:
+ return mon->level;
+ case MON_DATA_HP:
+ return mon->hp;
+ case MON_DATA_MAX_HP:
+ return mon->maxHP;
+ case MON_DATA_ATK:
+ TRY_GET_DEOXYS_STAT(mon, 1, GET_ATK)
+ case MON_DATA_DEF:
+ TRY_GET_DEOXYS_STAT(mon, 2, GET_DEF)
+ case MON_DATA_SPD:
+ TRY_GET_DEOXYS_STAT(mon, 3, GET_SPD)
+ case MON_DATA_SPATK:
+ TRY_GET_DEOXYS_STAT(mon, 4, GET_SPATK)
+ case MON_DATA_SPDEF:
+ TRY_GET_DEOXYS_STAT(mon, 5, GET_SPDEF)
+ GET_ATK:
+ case MON_DATA_ATK2:
+ return mon->attack;
+ GET_DEF:
+ case MON_DATA_DEF2:
+ return mon->defense;
+ GET_SPD:
+ case MON_DATA_SPD2:
+ return mon->speed;
+ GET_SPATK:
+ case MON_DATA_SPATK2:
+ return mon->spAttack;
+ GET_SPDEF:
+ case MON_DATA_SPDEF2:
+ return mon->spDefense;
+ case MON_DATA_MAIL:
+ return mon->mail;
+ default:
+ return GetBoxMonData(&mon->box, field, data);
+ }
+}
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 2ec6d08d0..e85aa72a0 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -475,8 +475,8 @@ u16 SpeciesToCryId(u16 species)
void sub_806D544(u16 species, u32 personality, u8 *dest)
{
if (species == SPECIES_SPINDA
- && dest != gBattleDecompressedSprites->sprites[0]
- && dest != gBattleDecompressedSprites->sprites[2])
+ && dest != gBattleSpritesGfx->sprites[0]
+ && dest != gBattleSpritesGfx->sprites[2])
{
int i;
for (i = 0; i < 4; i++)
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 5ce6e59f8..22f87fc72 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -526,7 +526,7 @@ gUnknown_020244CC: @ 20244CC
gUnknown_020244D0: @ 20244D0
.space 0x4
-gBattleDecompressedSprites: @ 20244D4
+gBattleSpritesGfx: @ 20244D4
.space 0x4
gUnknown_020244D8: @ 20244D8