decompile more pokemon functions

This commit is contained in:
YamaArashi
2017-05-07 18:12:24 -07:00
parent 5ac20d9896
commit 964520bca5
18 changed files with 172 additions and 512 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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]

View File

@@ -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

View File

@@ -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}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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)
{

View File

@@ -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

View File

@@ -296,7 +296,7 @@ gBattleMovePower: @ 2024E80
word_2024E82: @ 2024E82
.space 0x2
gUnknown_02024E84: @ 2024E84
gBattleMonForms: @ 2024E84
.space 0x4
byte_2024E88: @ 2024E88