diff --git a/asm/battle_2.s b/asm/battle_2.s index 8035335254..b2d61ef42d 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 e95a37bdce..fd8c3b4a54 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 c7a4934104..fc2c36fc82 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 67270f2f46..df4cd5035b 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 2d95b042c0..8812282797 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 8b140c88c5..26b8c89ece 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 b3680e75c0..f70b840b99 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 a0c9c63601..6b5a14f956 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 9b9070416b..af5110d9bf 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 f00feb3a68..b2769671c5 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 ced5242bea..c8eab6684e 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 683c74c8dd..b44ec0ed33 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 133443bef0..e85ed2d217 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 c23a956a66..cfca378da3 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 7bf3c75d9c..42cdf68020 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 829c749d52..e4a8e6cc2c 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 3b7078e27b..01a522d40a 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 af9b0a7459..ad3eb9e936 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 a38379935a..a0ba98d776 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 45a863c67c..119a360e38 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 b6eb5a7bcb..a13c6951c4 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 7c8d430403..f83a11ff17 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 547f061025..8107917aec 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 42387318f8..ea75d4e2b9 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 c58388b926..442c83cfa3 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 b114c38c7e..253f253374 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 d0143fabb1..fb7027a590 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 429128056d..ca0b04e630 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 8b8a496b20..56fba40c30 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 d1bd0c8ef8..93a921b5e7 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 94cf82c591..4adbf17bdd 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 61270bed08..01d89fc355 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 12b58ba9f9..a7d89ea290 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 d508533837..aba2f35f1a 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 2ec6d08d04..e85aa72a0c 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 5ce6e59f84..22f87fc721 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