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