summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2017-05-21 10:41:33 -0400
committerGitHub <noreply@github.com>2017-05-21 10:41:33 -0400
commitbfe02a627f9f49a94f90835d4284ab89d4e5a6f9 (patch)
treea4f04fdf2aa813ba8e5b5e87d10e68cba39f3437
parent332fde6cb8820aa89fe759b50a65eb069cc63329 (diff)
parent31e07eb09163f40c3cb79e1b26f21ffde9446014 (diff)
Merge pull request #298 from camthesaxman/decompile_battle_2
decompile more of battle_2
-rw-r--r--asm/battle_2.s4792
-rw-r--r--include/battle.h27
-rw-r--r--src/battle_2.c2182
-rw-r--r--src/rom3.c48
-rw-r--r--src/rom_8077ABC.c1
5 files changed, 1943 insertions, 5107 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
index f1c865a49..cff6efe06 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -6,4798 +6,6 @@
.text
- thumb_func_start sub_800FCD4
-sub_800FCD4: @ 800FCD4
- push {lr}
- ldr r0, _0800FCF4 @ =REG_VCOUNT
- ldrh r0, [r0]
- subs r0, 0x6F
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x30
- bhi _0800FCEE
- ldr r1, _0800FCF8 @ =REG_BG0CNT
- movs r2, 0x98
- lsls r2, 8
- adds r0, r2, 0
- strh r0, [r1]
-_0800FCEE:
- pop {r0}
- bx r0
- .align 2, 0
-_0800FCF4: .4byte REG_VCOUNT
-_0800FCF8: .4byte REG_BG0CNT
- thumb_func_end sub_800FCD4
-
- thumb_func_start sub_800FCFC
-sub_800FCFC: @ 800FCFC
- push {lr}
- bl Random
- ldr r1, _0800FD78 @ =REG_BG0HOFS
- ldr r0, _0800FD7C @ =gUnknown_030042A4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD80 @ =gUnknown_030042A0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD84 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD88 @ =gUnknown_030041B4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD8C @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD90 @ =gUnknown_03004280
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD94 @ =gUnknown_030041B0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD98 @ =gUnknown_030041B8
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x22
- ldr r0, _0800FD9C @ =gUnknown_030042C4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x4
- ldr r0, _0800FDA0 @ =gUnknown_03004240
- ldrh r0, [r0]
- strh r0, [r1]
- subs r1, 0x2
- ldr r0, _0800FDA4 @ =gUnknown_03004200
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x4
- ldr r0, _0800FDA8 @ =gUnknown_03004244
- ldrh r0, [r0]
- strh r0, [r1]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8089668
- pop {r0}
- bx r0
- .align 2, 0
-_0800FD78: .4byte REG_BG0HOFS
-_0800FD7C: .4byte gUnknown_030042A4
-_0800FD80: .4byte gUnknown_030042A0
-_0800FD84: .4byte gUnknown_030042C0
-_0800FD88: .4byte gUnknown_030041B4
-_0800FD8C: .4byte gUnknown_03004288
-_0800FD90: .4byte gUnknown_03004280
-_0800FD94: .4byte gUnknown_030041B0
-_0800FD98: .4byte gUnknown_030041B8
-_0800FD9C: .4byte gUnknown_030042C4
-_0800FDA0: .4byte gUnknown_03004240
-_0800FDA4: .4byte gUnknown_03004200
-_0800FDA8: .4byte gUnknown_03004244
- thumb_func_end sub_800FCFC
-
- thumb_func_start nullsub_36
-nullsub_36: @ 800FDAC
- bx lr
- thumb_func_end nullsub_36
-
- thumb_func_start sub_800FDB0
-sub_800FDB0: @ 800FDB0
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0800FDD0
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- lsrs r0, 8
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x20]
- b _0800FDE2
-_0800FDD0:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- asrs r0, 8
- ldrh r1, [r5, 0x30]
- subs r1, r0
- strh r1, [r5, 0x20]
-_0800FDE2:
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0800FE16
- ldr r4, _0800FE1C @ =0x00002710
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- adds r0, r5, 0
- bl FreeSpriteOamMatrix
- adds r0, r5, 0
- bl DestroySprite
-_0800FE16:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800FE1C: .4byte 0x00002710
- thumb_func_end sub_800FDB0
-
- thumb_func_start sub_800FE20
-sub_800FE20: @ 800FE20
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _0800FE3C @ =sub_800FDB0
- str r0, [r4, 0x1C]
- movs r0, 0x68
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800FE3C: .4byte sub_800FDB0
- thumb_func_end sub_800FE20
-
- thumb_func_start sub_800FE40
-sub_800FE40: @ 800FE40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- ldr r0, _0800FE88 @ =0x02000000
- ldr r2, _0800FE8C @ =0x000160cb
- adds r0, r2
- ldrb r2, [r0]
- ldr r0, _0800FE90 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800FEB4
- ldr r1, _0800FE94 @ =gLinkPlayers
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x1
- beq _0800FEA0
- cmp r0, 0x1
- bgt _0800FE98
- cmp r0, 0
- beq _0800FEB4
- b _0800FEBC
- .align 2, 0
-_0800FE88: .4byte 0x02000000
-_0800FE8C: .4byte 0x000160cb
-_0800FE90: .4byte gBattleTypeFlags
-_0800FE94: .4byte gLinkPlayers
-_0800FE98:
- cmp r0, 0x2
- beq _0800FEB4
- cmp r0, 0x3
- bne _0800FEBC
-_0800FEA0:
- ldr r1, _0800FEAC @ =gEnemyParty
- str r1, [sp, 0x4]
- ldr r2, _0800FEB0 @ =gPlayerParty
- str r2, [sp, 0x8]
- b _0800FEBC
- .align 2, 0
-_0800FEAC: .4byte gEnemyParty
-_0800FEB0: .4byte gPlayerParty
-_0800FEB4:
- ldr r3, _08010008 @ =gPlayerParty
- str r3, [sp, 0x4]
- ldr r0, _0801000C @ =gEnemyParty
- str r0, [sp, 0x8]
-_0800FEBC:
- movs r7, 0
- movs r1, 0
- mov r8, r1
- ldr r2, [sp]
- lsls r2, 2
- str r2, [sp, 0xC]
- movs r3, 0xCE
- lsls r3, 1
- mov r10, r3
- mov r9, r1
-_0800FED0:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- ldr r0, [sp, 0x4]
- adds r4, r0, r4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- adds r1, r0, 0
- cmp r5, 0
- beq _0800FF40
- cmp r5, r10
- beq _0800FF14
- cmp r6, 0
- beq _0800FF14
- cmp r1, 0
- bne _0800FF14
- movs r0, 0x1
- mov r2, r9
- lsls r0, r2
- orrs r7, r0
-_0800FF14:
- cmp r5, 0
- beq _0800FF40
- cmp r6, 0
- beq _0800FF2C
- cmp r5, r10
- beq _0800FF24
- cmp r1, 0
- beq _0800FF2C
-_0800FF24:
- movs r0, 0x2
- mov r3, r9
- lsls r0, r3
- orrs r7, r0
-_0800FF2C:
- cmp r5, 0
- beq _0800FF40
- cmp r5, r10
- beq _0800FF40
- cmp r6, 0
- bne _0800FF40
- movs r0, 0x3
- mov r1, r9
- lsls r0, r1
- orrs r7, r0
-_0800FF40:
- movs r2, 0x2
- add r9, r2
- movs r3, 0x1
- add r8, r3
- mov r0, r8
- cmp r0, 0x5
- ble _0800FED0
- ldr r1, _08010010 @ =gTasks
- ldr r2, [sp, 0xC]
- ldr r3, [sp]
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0xE]
- movs r7, 0
- movs r0, 0
- mov r8, r0
- movs r1, 0xCE
- lsls r1, 1
- mov r10, r1
- mov r9, r0
-_0800FF6A:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- ldr r2, [sp, 0x8]
- adds r4, r2, r4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- adds r1, r0, 0
- cmp r5, 0
- beq _0800FFDA
- cmp r5, r10
- beq _0800FFAE
- cmp r6, 0
- beq _0800FFAE
- cmp r1, 0
- bne _0800FFAE
- movs r0, 0x1
- mov r3, r9
- lsls r0, r3
- orrs r7, r0
-_0800FFAE:
- cmp r5, 0
- beq _0800FFDA
- cmp r6, 0
- beq _0800FFC6
- cmp r5, r10
- beq _0800FFBE
- cmp r1, 0
- beq _0800FFC6
-_0800FFBE:
- movs r0, 0x2
- mov r1, r9
- lsls r0, r1
- orrs r7, r0
-_0800FFC6:
- cmp r5, 0
- beq _0800FFDA
- cmp r5, r10
- beq _0800FFDA
- cmp r6, 0
- bne _0800FFDA
- movs r0, 0x3
- mov r2, r9
- lsls r0, r2
- orrs r7, r0
-_0800FFDA:
- movs r3, 0x2
- add r9, r3
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x5
- ble _0800FF6A
- ldr r1, _08010010 @ =gTasks
- ldr r2, [sp, 0xC]
- ldr r3, [sp]
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0x10]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010008: .4byte gPlayerParty
-_0801000C: .4byte gEnemyParty
-_08010010: .4byte gTasks
- thumb_func_end sub_800FE40
-
- thumb_func_start c2_8011A1C
-c2_8011A1C: @ 8010014
- push {r4,r5,lr}
- sub sp, 0x4
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r4, 0
- str r4, [sp]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _08010144 @ =0x05006000
- mov r0, sp
- bl CpuSet
- ldr r0, _08010148 @ =REG_MOSAIC
- strh r4, [r0]
- subs r0, 0xC
- movs r2, 0xF0
- strh r2, [r0]
- adds r0, 0x4
- ldr r3, _0801014C @ =0x00005051
- adds r1, r3, 0
- strh r1, [r0]
- adds r0, 0x4
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r0, _08010150 @ =gUnknown_030042C4
- strh r2, [r0]
- ldr r0, _08010154 @ =gUnknown_03004240
- strh r1, [r0]
- bl dp12_8087EA4
- ldr r0, _08010158 @ =gUnknown_03004DE0
- movs r3, 0xF0
- movs r4, 0xF0
- lsls r4, 3
- adds r2, r0, r4
- movs r1, 0x4F
-_08010066:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _08010066
- movs r1, 0x50
- ldr r5, _0801015C @ =gWindowConfig_81E6C58
- ldr r0, _08010158 @ =gUnknown_03004DE0
- ldr r3, _08010160 @ =0x0000ff10
- movs r4, 0x82
- lsls r4, 4
- adds r2, r0, r4
- adds r0, 0xA0
-_08010084:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- adds r1, 0x1
- cmp r1, 0x9F
- ble _08010084
- adds r0, r5, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _08010164 @ =gUnknown_030042A4
- movs r4, 0
- strh r4, [r0]
- ldr r0, _08010168 @ =gUnknown_030042A0
- strh r4, [r0]
- ldr r0, _0801016C @ =gUnknown_030042C0
- strh r4, [r0]
- ldr r0, _08010170 @ =gUnknown_030041B4
- strh r4, [r0]
- ldr r0, _08010174 @ =gUnknown_03004288
- strh r4, [r0]
- ldr r0, _08010178 @ =gUnknown_03004280
- strh r4, [r0]
- ldr r0, _0801017C @ =gUnknown_030041B0
- strh r4, [r0]
- ldr r0, _08010180 @ =gUnknown_030041B8
- strh r4, [r0]
- ldr r0, _08010184 @ =gUnknown_03004210
- adds r1, r5, 0
- bl InitWindowFromConfig
- ldr r0, _08010188 @ =gUnknown_030041D0
- ldr r1, _0801018C @ =gWindowConfig_81E71D0
- bl InitWindowFromConfig
- ldr r0, _08010190 @ =gUnknown_03004250
- ldr r1, _08010194 @ =gWindowConfig_81E71EC
- bl InitWindowFromConfig
- bl sub_800D6D4
- ldr r0, _08010198 @ =gUnknown_08D004E0
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- bl sub_800D74C
- bl ResetSpriteData
- bl ResetTasks
- bl sub_800E23C
- ldr r1, _0801019C @ =REG_WINOUT
- movs r0, 0x37
- strh r0, [r1]
- bl FreeAllSpritePalettes
- ldr r1, _080101A0 @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, _080101A4 @ =sub_800FCFC
- bl SetVBlankCallback
- ldr r0, _080101A8 @ =sub_800DE30
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080101AC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x87
- lsls r2, 1
- strh r2, [r1, 0xA]
- movs r2, 0x5A
- strh r2, [r1, 0xC]
- movs r2, 0x1
- strh r2, [r1, 0x12]
- bl sub_800FE40
- ldr r0, _080101B0 @ =sub_80101B8
- bl SetMainCallback2
- ldr r0, _080101B4 @ =gUnknown_02024D1E
- strb r4, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08010144: .4byte 0x05006000
-_08010148: .4byte REG_MOSAIC
-_0801014C: .4byte 0x00005051
-_08010150: .4byte gUnknown_030042C4
-_08010154: .4byte gUnknown_03004240
-_08010158: .4byte gUnknown_03004DE0
-_0801015C: .4byte gWindowConfig_81E6C58
-_08010160: .4byte 0x0000ff10
-_08010164: .4byte gUnknown_030042A4
-_08010168: .4byte gUnknown_030042A0
-_0801016C: .4byte gUnknown_030042C0
-_08010170: .4byte gUnknown_030041B4
-_08010174: .4byte gUnknown_03004288
-_08010178: .4byte gUnknown_03004280
-_0801017C: .4byte gUnknown_030041B0
-_08010180: .4byte gUnknown_030041B8
-_08010184: .4byte gUnknown_03004210
-_08010188: .4byte gUnknown_030041D0
-_0801018C: .4byte gWindowConfig_81E71D0
-_08010190: .4byte gUnknown_03004250
-_08010194: .4byte gWindowConfig_81E71EC
-_08010198: .4byte gUnknown_08D004E0
-_0801019C: .4byte REG_WINOUT
-_080101A0: .4byte gReservedSpritePaletteCount
-_080101A4: .4byte sub_800FCFC
-_080101A8: .4byte sub_800DE30
-_080101AC: .4byte gTasks
-_080101B0: .4byte sub_80101B8
-_080101B4: .4byte gUnknown_02024D1E
- thumb_func_end c2_8011A1C
-
- thumb_func_start sub_80101B8
-sub_80101B8: @ 80101B8
- push {lr}
- bl c2_081284E0
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end sub_80101B8
-
- thumb_func_start c2_081284E0
-c2_081284E0: @ 80101D4
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080101EC @ =gUnknown_02024D1E
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _080101FC
- cmp r0, 0x1
- bgt _080101F0
- cmp r0, 0
- beq _080101F6
- b _08010236
- .align 2, 0
-_080101EC: .4byte gUnknown_02024D1E
-_080101F0:
- cmp r0, 0x2
- beq _08010222
- b _08010236
-_080101F6:
- movs r0, 0xFF
- strb r0, [r4, 0x1]
- b _0801021A
-_080101FC:
- ldrb r0, [r4, 0x1]
- subs r0, 0x1
- strb r0, [r4, 0x1]
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08010236
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0801021A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08010236
-_08010222:
- ldr r0, _08010240 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08010236
- ldr r0, _08010244 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08010236:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08010240: .4byte gPaletteFade
-_08010244: .4byte gMain
- thumb_func_end c2_081284E0
-
- thumb_func_start oac_poke_opponent
-oac_poke_opponent: @ 8010248
- push {lr}
- sub sp, 0x4
- ldr r1, _08010270 @ =sub_8010278
- str r1, [r0, 0x1C]
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- movs r0, 0x80
- lsls r0, 10
- ldr r1, _08010274 @ =0x00003def
- str r1, [sp]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0xA
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08010270: .4byte sub_8010278
-_08010274: .4byte 0x00003def
- thumb_func_end oac_poke_opponent
-
- thumb_func_start sub_8010278
-sub_8010278: @ 8010278
- push {lr}
- adds r2, r0, 0
- ldr r0, _080102A4 @ =gUnknown_02024DE8
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080102A0
- ldrh r0, [r2, 0x24]
- adds r0, 0x2
- strh r0, [r2, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _080102A0
- ldr r0, _080102A8 @ =sub_80102AC
- str r0, [r2, 0x1C]
- ldrh r0, [r2, 0x32]
- movs r1, 0x19
- bl PlayCry1
-_080102A0:
- pop {r0}
- bx r0
- .align 2, 0
-_080102A4: .4byte gUnknown_02024DE8
-_080102A8: .4byte sub_80102AC
- thumb_func_end sub_8010278
-
- thumb_func_start sub_80102AC
-sub_80102AC: @ 80102AC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080102F4
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- bl sub_804777C
- ldr r1, _080102FC @ =gUnknown_03004340
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DFC
- ldr r0, _08010300 @ =nullsub_37
- str r0, [r4, 0x1C]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- movs r0, 0x80
- lsls r0, 10
- ldr r1, _08010304 @ =0x00003def
- str r1, [sp]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0
- bl BeginNormalPaletteFade
-_080102F4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080102FC: .4byte gUnknown_03004340
-_08010300: .4byte nullsub_37
-_08010304: .4byte 0x00003def
- thumb_func_end sub_80102AC
-
- thumb_func_start nullsub_37
-nullsub_37: @ 8010308
- bx lr
- thumb_func_end nullsub_37
-
- thumb_func_start unref_sub_801030C
-unref_sub_801030C: @ 801030C
- movs r1, 0x6
- strh r1, [r0, 0x34]
- movs r1, 0x1
- strh r1, [r0, 0x36]
- ldr r1, _0801031C @ =sub_8010320
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_0801031C: .4byte sub_8010320
- thumb_func_end unref_sub_801030C
-
- thumb_func_start sub_8010320
-sub_8010320: @ 8010320
- push {r4,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x36]
- subs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08010374
- movs r0, 0x8
- strh r0, [r3, 0x36]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r4, 0x5
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bne _08010374
- ldrb r1, [r1]
- adds r0, r4, 0
- ands r0, r1
- mov r1, r12
- strb r0, [r1]
- ldr r0, _0801037C @ =nullsub_37
- str r0, [r3, 0x1C]
- ldr r0, _08010380 @ =gUnknown_03004284
- str r2, [r0]
-_08010374:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801037C: .4byte nullsub_37
-_08010380: .4byte gUnknown_03004284
- thumb_func_end sub_8010320
-
- thumb_func_start sub_8010384
-sub_8010384: @ 8010384
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, r6, 2
- ldr r0, _080103A4 @ =0x02017800
- adds r1, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _080103A8
- adds r4, r0, 0
- b _080103AC
- .align 2, 0
-_080103A4: .4byte 0x02017800
-_080103A8:
- mov r0, r9
- ldrh r4, [r0, 0x32]
-_080103AC:
- ldr r1, _08010414 @ =gUnknown_02024A6A
- lsls r0, r6, 1
- adds r5, r0, r1
- ldrh r0, [r5]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r7, _08010418 @ =gEnemyParty
- adds r0, r7
- movs r1, 0
- bl GetMonData
- cmp r4, SPECIES_UNOWN
- bne _08010430
- ldrh r0, [r5]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0801041C
- movs r0, SPECIES_UNOWN
- b _08010426
- .align 2, 0
-_08010414: .4byte gUnknown_02024A6A
-_08010418: .4byte gEnemyParty
-_0801041C:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08010426:
- ldr r1, _0801042C @ =gMonFrontPicCoords
- lsls r0, 2
- b _08010468
- .align 2, 0
-_0801042C: .4byte gMonFrontPicCoords
-_08010430:
- ldr r0, _08010448 @ =SPECIES_CASTFORM
- cmp r4, r0 @ Check if pokemon species is Castform
- bne _08010454
- ldr r0, _0801044C @ =gUnknownCastformCoords_0837F598
- ldr r1, _08010450 @ =gBattleMonForms
- adds r1, r6, r1
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _0801046C
- .align 2, 0
-_08010448: .4byte SPECIES_CASTFORM
-_0801044C: .4byte gUnknownCastformCoords_0837F598
-_08010450: .4byte gBattleMonForms
-_08010454:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08010464
- ldr r0, _08010460 @ =gMonFrontPicCoords
- b _0801046A
- .align 2, 0
-_08010460: .4byte gMonFrontPicCoords
-_08010464:
- ldr r1, _0801048C @ =gMonFrontPicCoords
- lsls r0, r4, 2
-_08010468:
- adds r0, r1
-_0801046A:
- ldrb r0, [r0, 0x1]
-_0801046C:
- lsrs r1, r0, 3
- movs r0, 0x8
- subs r0, r1
- mov r1, r9
- strh r0, [r1, 0x34]
- movs r0, 0x1
- strh r0, [r1, 0x36]
- ldr r0, _08010490 @ =sub_8010494
- str r0, [r1, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801048C: .4byte gMonFrontPicCoords
-_08010490: .4byte sub_8010494
- thumb_func_end sub_8010384
-
- thumb_func_start sub_8010494
-sub_8010494: @ 8010494
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- subs r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08010510
- movs r0, 0x2
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x26]
- adds r0, 0x8
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- cmp r0, 0
- bge _080104C8
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- b _08010510
-_080104C8:
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- bl battle_get_per_side_status
- ldr r1, _08010518 @ =gUnknown_081FAF4C
- lsls r0, 24
- lsrs r0, 22
- adds r0, r1
- ldr r2, _0801051C @ =gBattleMonForms
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 11
- ldr r2, [r0]
- adds r2, r1
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 8
- adds r2, r0
- movs r1, 0
- movs r0, 0xFF
-_080104F6:
- strb r1, [r2]
- adds r2, 0x1
- subs r0, 0x1
- cmp r0, 0
- bge _080104F6
- ldr r0, _0801051C @ =gBattleMonForms
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r4, 0
- bl StartSpriteAnim
-_08010510:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08010518: .4byte gUnknown_081FAF4C
-_0801051C: .4byte gBattleMonForms
- thumb_func_end sub_8010494
-
- thumb_func_start sub_8010520
-sub_8010520: @ 8010520
- movs r1, 0x8
- strh r1, [r0, 0x34]
- adds r1, r0, 0
- adds r1, 0x3E
- ldrb r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r0, 0x36]
- ldr r1, _08010538 @ =sub_801053C
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_08010538: .4byte sub_801053C
- thumb_func_end sub_8010520
-
- thumb_func_start sub_801053C
-sub_801053C: @ 801053C
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _0801056E
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r0, 0x8
- strh r0, [r3, 0x34]
-_0801056E:
- pop {r0}
- bx r0
- thumb_func_end sub_801053C
-
- thumb_func_start sub_8010574
-sub_8010574: @ 8010574
- movs r1, 0x3E
- adds r1, r0
- mov r12, r1
- movs r1, 0x1
- ldrh r2, [r0, 0x36]
- ands r2, r1
- lsls r2, 2
- mov r1, r12
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- movs r1, 0
- strh r1, [r0, 0x36]
- ldr r1, _0801059C @ =nullsub_37
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_0801059C: .4byte nullsub_37
- thumb_func_end sub_8010574
-
- thumb_func_start sub_80105A0
-sub_80105A0: @ 80105A0
- ldr r1, _080105A8 @ =oac_poke_ally_
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080105A8: .4byte oac_poke_ally_
- thumb_func_end sub_80105A0
-
- thumb_func_start oac_poke_ally_
-oac_poke_ally_: @ 80105AC
- push {lr}
- adds r2, r0, 0
- ldr r0, _080105D4 @ =gUnknown_02024DE8
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080105D0
- ldrh r0, [r2, 0x24]
- subs r0, 0x2
- strh r0, [r2, 0x24]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _080105D0
- ldr r0, _080105D8 @ =nullsub_86
- str r0, [r2, 0x1C]
- strh r1, [r2, 0x30]
-_080105D0:
- pop {r0}
- bx r0
- .align 2, 0
-_080105D4: .4byte gUnknown_02024DE8
-_080105D8: .4byte nullsub_86
- thumb_func_end oac_poke_ally_
-
- thumb_func_start sub_80105DC
-sub_80105DC: @ 80105DC
- ldr r1, _080105E4 @ =nullsub_86
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080105E4: .4byte nullsub_86
- thumb_func_end sub_80105DC
-
- thumb_func_start nullsub_86
-nullsub_86: @ 80105E8
- bx lr
- thumb_func_end nullsub_86
-
- thumb_func_start sub_80105EC
-sub_80105EC: @ 80105EC
- push {lr}
- adds r2, r0, 0
- ldr r0, _08010610 @ =gUnknown_02024DE8
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0801060C
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x26]
- adds r0, r1
- strh r0, [r2, 0x26]
-_0801060C:
- pop {r0}
- bx r0
- .align 2, 0
-_08010610: .4byte gUnknown_02024DE8
- thumb_func_end sub_80105EC
-
- thumb_func_start dp11b_obj_instanciate
-dp11b_obj_instanciate: @ 8010614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- cmp r1, 0
- beq _0801064C
- lsls r2, r4, 1
- adds r0, r2, r4
- lsls r0, 2
- ldr r1, _08010648 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- b _0801065A
- .align 2, 0
-_08010648: .4byte 0x02017810
-_0801064C:
- lsls r2, r4, 1
- adds r0, r2, r4
- lsls r0, 2
- ldr r1, _08010698 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
-_0801065A:
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- bne _080106FA
- ldr r0, _0801069C @ =objc_dp11b_pingpong
- bl CreateInvisibleSpriteWithCallback
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- cmp r0, 0x1
- bne _080106A8
- ldr r0, _080106A0 @ =gUnknown_03004340
- adds r0, r4, r0
- ldrb r7, [r0]
- adds r0, r6, r4
- lsls r0, 2
- ldr r1, _08010698 @ =0x02017810
- adds r0, r1
- strb r5, [r0, 0x2]
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
- ldr r2, _080106A4 @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0x80
- b _080106CC
- .align 2, 0
-_08010698: .4byte 0x02017810
-_0801069C: .4byte objc_dp11b_pingpong
-_080106A0: .4byte gUnknown_03004340
-_080106A4: .4byte gSprites
-_080106A8:
- ldr r0, _08010708 @ =gUnknown_02024BE0
- adds r0, r4, r0
- ldrb r7, [r0]
- adds r0, r6, r4
- lsls r0, 2
- ldr r1, _0801070C @ =0x02017810
- adds r0, r1
- strb r5, [r0, 0x3]
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r2, _08010710 @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0xC0
-_080106CC:
- strh r1, [r0, 0x2E]
- adds r4, r2, 0
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r4
- mov r2, r9
- lsls r0, r2, 24
- asrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x30]
- mov r3, r10
- lsls r0, r3, 24
- asrs r0, 24
- strh r0, [r1, 0x32]
- strh r7, [r1, 0x34]
- mov r0, r8
- strh r0, [r1, 0x36]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x24]
- strh r2, [r0, 0x26]
-_080106FA:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010708: .4byte gUnknown_02024BE0
-_0801070C: .4byte 0x02017810
-_08010710: .4byte gSprites
- thumb_func_end dp11b_obj_instanciate
-
- thumb_func_start dp11b_obj_free
-dp11b_obj_free: @ 8010714
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- bne _0801075C
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _08010754 @ =0x02017810
- adds r5, r0, r1
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080107A0
- ldr r2, _08010758 @ =gSprites
- ldrb r1, [r5, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x34]
- lsls r1, 24
- lsrs r4, r1, 24
- bl DestroySprite
- ldrb r1, [r5]
- movs r0, 0x3
- negs r0, r0
- b _0801078C
- .align 2, 0
-_08010754: .4byte 0x02017810
-_08010758: .4byte gSprites
-_0801075C:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _080107A8 @ =0x02017810
- adds r5, r0, r1
- ldrb r1, [r5]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080107A0
- ldr r2, _080107AC @ =gSprites
- ldrb r1, [r5, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x34]
- lsls r1, 24
- lsrs r4, r1, 24
- bl DestroySprite
- ldrb r1, [r5]
- movs r0, 0x5
- negs r0, r0
-_0801078C:
- ands r0, r1
- strb r0, [r5]
- ldr r0, _080107AC @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x24]
- strh r0, [r1, 0x26]
-_080107A0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080107A8: .4byte 0x02017810
-_080107AC: .4byte gSprites
- thumb_func_end dp11b_obj_free
-
- thumb_func_start objc_dp11b_pingpong
-objc_dp11b_pingpong: @ 80107B0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080107C8
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- b _080107CC
-_080107C8:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
-_080107CC:
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- ldr r2, _080107F8 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r4, 0x32]
- adds r0, r2
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080107F8: .4byte gSprites
- thumb_func_end objc_dp11b_pingpong
-
- thumb_func_start nullsub_41
-nullsub_41: @ 80107FC
- bx lr
- thumb_func_end nullsub_41
-
- thumb_func_start sub_8010800
-sub_8010800: @ 8010800
- push {lr}
- bl sub_8010874
- ldr r1, _08010818 @ =gUnknown_02024D1E
- movs r0, 0
- strb r0, [r1, 0x1]
- ldr r1, _0801081C @ =gUnknown_030042D4
- ldr r0, _08010820 @ =bc_8012FAC
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08010818: .4byte gUnknown_02024D1E
-_0801081C: .4byte gUnknown_030042D4
-_08010820: .4byte bc_8012FAC
- thumb_func_end sub_8010800
-
- thumb_func_start sub_8010824
-sub_8010824: @ 8010824
- push {r4,r5,lr}
- ldr r0, _08010864 @ =gUnknown_030042D4
- ldr r0, [r0]
- bl _call_via_r0
- ldr r1, _08010868 @ =gUnknown_02024A60
- movs r0, 0
- strb r0, [r1]
- ldr r0, _0801086C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801085E
- ldr r5, _08010870 @ =gUnknown_03004330
- adds r4, r1, 0
-_08010840:
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r5
- ldr r0, [r0]
- bl _call_via_r0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _0801086C @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08010840
-_0801085E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08010864: .4byte gUnknown_030042D4
-_08010868: .4byte gUnknown_02024A60
-_0801086C: .4byte gUnknown_02024A68
-_08010870: .4byte gUnknown_03004330
- thumb_func_end sub_8010824
-
- thumb_func_start sub_8010874
-sub_8010874: @ 8010874
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0
- bl sub_801365C
- bl sub_801377C
- movs r2, 0
- movs r3, 0
- ldr r0, _08010AC8 @ =gUnknown_02024C4C
- mov r10, r0
- ldr r1, _08010ACC @ =gUnknown_02024C44
- mov r9, r1
- ldr r4, _08010AD0 @ =gUnknown_02024C3C
- mov r8, r4
- ldr r0, _08010AD4 @ =gUnknown_02024C34
- mov r12, r0
- ldr r4, _08010AD8 @ =gUnknown_02024CA8
- movs r5, 0
- ldr r7, _08010ADC @ =gUnknown_02024C2C
- ldr r6, _08010AE0 @ =gUnknown_02024C54
-_080108A4:
- ldr r0, _08010AE4 @ =gUnknown_02024C98
- adds r0, r5, r0
- str r3, [r0]
- movs r1, 0
-_080108AC:
- adds r0, r4, r1
- strb r3, [r0]
- adds r1, 0x1
- cmp r1, 0x1B
- bls _080108AC
- movs r0, 0x2
- strb r0, [r4, 0x16]
- ldr r1, _08010AE8 @ =gUnknown_02024C70
- adds r0, r2, r1
- strb r3, [r0]
- mov r0, r12
- strh r3, [r0]
- mov r1, r8
- strh r3, [r1]
- mov r0, r9
- strh r3, [r0]
- mov r1, r10
- strh r3, [r1]
- ldr r0, _08010AEC @ =gUnknown_02024C5C
- adds r1, r2, r0
- movs r0, 0xFF
- strb r0, [r1]
- strh r3, [r6]
- strh r3, [r7]
- ldr r1, _08010AF0 @ =0x02017100
- adds r0, r5, r1
- str r3, [r0]
- movs r0, 0x2
- add r10, r0
- add r9, r0
- add r8, r0
- add r12, r0
- adds r4, 0x1C
- adds r5, 0x4
- adds r7, 0x2
- adds r6, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _080108A4
- movs r5, 0
- ldr r3, _08010AF4 @ =gUnknown_02024C80
- ldr r4, _08010AF8 @ =gUnknown_02024C7A
- movs r2, 0x1
-_08010902:
- strh r5, [r4]
- movs r1, 0
-_08010906:
- adds r0, r3, r1
- strb r5, [r0]
- adds r1, 0x1
- cmp r1, 0xB
- bls _08010906
- adds r3, 0xC
- adds r4, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _08010902
- movs r1, 0
- ldr r2, _08010AFC @ =gPlayerMonIndex
- strb r1, [r2]
- ldr r3, _08010B00 @ =gEnemyMonIndex
- strb r1, [r3]
- ldr r4, _08010B04 @ =gBattleWeather
- strh r1, [r4]
- ldr r1, _08010B08 @ =gUnknown_02024DBC
- movs r2, 0
- movs r3, 0
-_0801092E:
- adds r0, r1, r2
- strb r3, [r0]
- adds r2, 0x1
- cmp r2, 0x2B
- bls _0801092E
- movs r0, 0
- ldr r1, _08010B0C @ =gUnknown_02024C6C
- str r0, [r1]
- ldr r2, _08010B10 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0801095C
- ldr r3, _08010B14 @ =gSaveBlock2
- ldrb r1, [r3, 0x15]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801095C
- movs r0, 0x80
- ldr r4, _08010B0C @ =gUnknown_02024C6C
- str r0, [r4]
-_0801095C:
- ldr r1, _08010B14 @ =gSaveBlock2
- ldrb r0, [r1, 0x15]
- lsls r0, 30
- lsrs r0, 31
- ldr r3, _08010B18 @ =0x02000000
- ldr r4, _08010B1C @ =0x00016084
- adds r2, r3, r4
- movs r1, 0
- strb r0, [r2]
- ldr r0, _08010B20 @ =gUnknown_02024C0E
- strb r1, [r0]
- ldr r2, _08010B24 @ =gUnknown_02024D26
- strb r1, [r2]
- ldr r3, _08010B28 @ =gUnknown_02024A64
- str r1, [r3]
- movs r2, 0
- ldr r4, _08010B2C @ =gUnknown_02024D1A
- strh r1, [r4]
- ldr r1, _08010B18 @ =0x02000000
- ldr r3, _08010B30 @ =0x00017130
- adds r0, r1, r3
- strb r2, [r0]
- ldr r4, _08010B34 @ =0x00017160
- adds r0, r1, r4
- strb r2, [r0]
- ldr r1, _08010B38 @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x7
-_08010994:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08010994
- movs r5, 0
- ldr r0, _08010B3C @ =gUnknown_02024D18
- strh r5, [r0]
- movs r0, 0
- ldr r1, _08010B40 @ =gBattleMoveDamage
- str r0, [r1]
- ldr r2, _08010B44 @ =gUnknown_02024DE8
- strh r0, [r2]
- ldr r4, _08010B18 @ =0x02000000
- ldr r3, _08010B48 @ =0x00016002
- adds r0, r4, r3
- strb r5, [r0]
- ldr r1, _08010B4C @ =0x000160a1
- adds r0, r4, r1
- strb r5, [r0]
- ldr r2, _08010B50 @ =gUnknown_03004324
- strb r5, [r2]
- ldr r3, _08010B54 @ =gUnknown_02024C0C
- strb r5, [r3]
- subs r1, 0x29
- adds r0, r4, r1
- strb r5, [r0]
- ldr r2, _08010B58 @ =0x00016086
- adds r0, r4, r2
- strb r5, [r0]
- ldr r3, _08010B5C @ =0x00016087
- adds r0, r4, r3
- strb r5, [r0]
- ldr r0, _08010B60 @ =gEnemyParty
- movs r1, 0xB
- bl GetMonData
- ldr r2, _08010B64 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x8]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08010B68 @ =0x000004fb
- bl __divsi3
- ldr r2, _08010B6C @ =0x00016089
- adds r1, r4, r2
- strb r0, [r1]
- ldr r3, _08010B70 @ =0x00016088
- adds r1, r4, r3
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _08010B74 @ =0x0001601b
- adds r0, r4, r1
- strb r5, [r0]
- subs r2, 0x33
- adds r1, r4, r2
- movs r0, 0x1
- strb r0, [r1]
- movs r2, 0
- movs r1, 0
-_08010A12:
- ldr r3, _08010B78 @ =0x000160ac
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x20
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x1C
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x8
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x10
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x8
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x7
- ble _08010A12
- ldr r4, _08010B18 @ =0x02000000
- ldr r1, _08010B7C @ =0x000160c8
- adds r0, r4, r1
- movs r2, 0
- movs r1, 0x6
- strb r1, [r0]
- subs r3, 0x3F
- adds r0, r4, r3
- strb r1, [r0]
- ldr r1, _08010B80 @ =0x00016113
- adds r0, r4, r1
- strb r2, [r0]
- ldr r3, _08010B84 @ =gUnknown_030042E0
- movs r1, 0
- movs r2, 0xA
- adds r0, r3, 0
- adds r0, 0x40
-_08010A6A:
- strb r1, [r0]
- subs r0, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _08010A6A
- movs r1, 0
- strb r1, [r3, 0x13]
- strb r1, [r3]
- strb r1, [r3, 0x1]
- strb r1, [r3, 0x2]
- strb r1, [r3, 0x3]
- strb r1, [r3, 0x4]
- ldrb r2, [r3, 0x5]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- movs r2, 0x3
- negs r2, r2
- ands r0, r2
- strb r0, [r3, 0x5]
- strh r1, [r3, 0x20]
- strh r1, [r3, 0x22]
- strh r1, [r3, 0x24]
- strh r1, [r3, 0x6]
- strh r1, [r3, 0x26]
- strh r1, [r3, 0x28]
- movs r2, 0
- adds r5, r3, 0
- adds r5, 0x8
- movs r4, 0
- adds r1, r3, 0
- adds r1, 0x14
-_08010AAA:
- adds r0, r2, r5
- strb r4, [r0]
- strb r4, [r1]
- strb r4, [r1, 0x16]
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, 0x9
- ble _08010AAA
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010AC8: .4byte gUnknown_02024C4C
-_08010ACC: .4byte gUnknown_02024C44
-_08010AD0: .4byte gUnknown_02024C3C
-_08010AD4: .4byte gUnknown_02024C34
-_08010AD8: .4byte gUnknown_02024CA8
-_08010ADC: .4byte gUnknown_02024C2C
-_08010AE0: .4byte gUnknown_02024C54
-_08010AE4: .4byte gUnknown_02024C98
-_08010AE8: .4byte gUnknown_02024C70
-_08010AEC: .4byte gUnknown_02024C5C
-_08010AF0: .4byte 0x02017100
-_08010AF4: .4byte gUnknown_02024C80
-_08010AF8: .4byte gUnknown_02024C7A
-_08010AFC: .4byte gPlayerMonIndex
-_08010B00: .4byte gEnemyMonIndex
-_08010B04: .4byte gBattleWeather
-_08010B08: .4byte gUnknown_02024DBC
-_08010B0C: .4byte gUnknown_02024C6C
-_08010B10: .4byte gBattleTypeFlags
-_08010B14: .4byte gSaveBlock2
-_08010B18: .4byte 0x02000000
-_08010B1C: .4byte 0x00016084
-_08010B20: .4byte gUnknown_02024C0E
-_08010B24: .4byte gUnknown_02024D26
-_08010B28: .4byte gUnknown_02024A64
-_08010B2C: .4byte gUnknown_02024D1A
-_08010B30: .4byte 0x00017130
-_08010B34: .4byte 0x00017160
-_08010B38: .4byte gUnknown_02024D1E
-_08010B3C: .4byte gUnknown_02024D18
-_08010B40: .4byte gBattleMoveDamage
-_08010B44: .4byte gUnknown_02024DE8
-_08010B48: .4byte 0x00016002
-_08010B4C: .4byte 0x000160a1
-_08010B50: .4byte gUnknown_03004324
-_08010B54: .4byte gUnknown_02024C0C
-_08010B58: .4byte 0x00016086
-_08010B5C: .4byte 0x00016087
-_08010B60: .4byte gEnemyParty
-_08010B64: .4byte gBaseStats
-_08010B68: .4byte 0x000004fb
-_08010B6C: .4byte 0x00016089
-_08010B70: .4byte 0x00016088
-_08010B74: .4byte 0x0001601b
-_08010B78: .4byte 0x000160ac
-_08010B7C: .4byte 0x000160c8
-_08010B80: .4byte 0x00016113
-_08010B84: .4byte gUnknown_030042E0
- thumb_func_end sub_8010874
-
- thumb_func_start sub_8010B88
-sub_8010B88: @ 8010B88
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r4, _08010CEC @ =gUnknown_02024CA8
- ldr r5, _08010CF0 @ =gUnknown_02024A60
- ldrb r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r1, sp
- adds r0, r4
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, _08010CF4 @ =gBattleMoves
- ldr r3, _08010CF8 @ =gUnknown_02024BE6
- ldrh r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- mov r10, r4
- adds r7, r5, 0
- ldr r1, _08010CFC @ =gBattleMons
- mov r8, r1
- ldr r2, _08010D00 @ =gUnknown_02024C98
- mov r12, r2
- cmp r0, 0x7F
- beq _08010C66
- movs r5, 0
- adds r4, r7, 0
- movs r3, 0x58
- mov r2, r8
- adds r2, 0x18
- movs r1, 0x6
-_08010BDC:
- ldrb r0, [r4]
- muls r0, r3
- adds r0, r5, r0
- adds r0, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x7
- ble _08010BDC
- movs r5, 0
- ldr r3, _08010D04 @ =gUnknown_02024A68
- ldrb r3, [r3]
- cmp r5, r3
- bge _08010C52
- ldr r6, _08010D08 @ =gUnknown_02024AD0
- mov r9, r6
- ldr r3, _08010CEC @ =gUnknown_02024CA8
- ldr r4, _08010D00 @ =gUnknown_02024C98
-_08010BFE:
- movs r0, 0x58
- muls r0, r5
- add r0, r9
- str r0, [sp, 0x20]
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _08010C24
- ldrb r0, [r3, 0x14]
- ldr r2, _08010CF0 @ =gUnknown_02024A60
- ldrb r2, [r2]
- cmp r0, r2
- bne _08010C24
- ldr r0, _08010D0C @ =0xfbffffff
- ands r1, r0
- ldr r6, [sp, 0x20]
- str r1, [r6]
-_08010C24:
- ldr r1, [r4]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08010C44
- ldrb r0, [r3, 0x15]
- ldr r2, _08010CF0 @ =gUnknown_02024A60
- ldrb r2, [r2]
- cmp r0, r2
- bne _08010C44
- movs r0, 0x19
- negs r0, r0
- ands r1, r0
- str r1, [r4]
- movs r0, 0
- strb r0, [r3, 0x15]
-_08010C44:
- adds r3, 0x1C
- adds r4, 0x4
- adds r5, 0x1
- ldr r6, _08010D04 @ =gUnknown_02024A68
- ldrb r6, [r6]
- cmp r5, r6
- blt _08010BFE
-_08010C52:
- ldr r1, _08010CF8 @ =gUnknown_02024BE6
- ldrh r0, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _08010CF4 @ =gBattleMoves
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x7F
- bne _08010D18
-_08010C66:
- ldrb r1, [r7]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _08010D10 @ =0x15100007
- ands r0, r1
- str r0, [r2]
- ldrb r1, [r7]
- lsls r1, 2
- add r1, r12
- ldr r0, [r1]
- ldr r2, _08010D14 @ =0x0003043f
- ands r0, r2
- str r0, [r1]
- movs r5, 0
- ldr r3, _08010D04 @ =gUnknown_02024A68
- ldrb r3, [r3]
- cmp r5, r3
- bge _08010D30
- movs r6, 0
-_08010C96:
- ldrb r0, [r7]
- bl battle_side_get_owner
- adds r4, r0, 0
- lsls r0, r5, 24
- lsrs r0, 24
- bl battle_side_get_owner
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _08010CD6
- ldr r1, _08010D00 @ =gUnknown_02024C98
- lsls r0, r5, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08010CD6
- ldr r0, _08010CEC @ =gUnknown_02024CA8
- adds r0, r6, r0
- ldrb r0, [r0, 0x15]
- ldrb r3, [r7]
- cmp r0, r3
- bne _08010CD6
- movs r0, 0x19
- negs r0, r0
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- str r1, [r2]
-_08010CD6:
- adds r6, 0x1C
- adds r5, 0x1
- ldr r0, _08010D04 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- blt _08010C96
- ldr r6, _08010CEC @ =gUnknown_02024CA8
- mov r10, r6
- ldr r7, _08010CF0 @ =gUnknown_02024A60
- b _08010D30
- .align 2, 0
-_08010CEC: .4byte gUnknown_02024CA8
-_08010CF0: .4byte gUnknown_02024A60
-_08010CF4: .4byte gBattleMoves
-_08010CF8: .4byte gUnknown_02024BE6
-_08010CFC: .4byte gBattleMons
-_08010D00: .4byte gUnknown_02024C98
-_08010D04: .4byte gUnknown_02024A68
-_08010D08: .4byte gUnknown_02024AD0
-_08010D0C: .4byte 0xfbffffff
-_08010D10: .4byte 0x15100007
-_08010D14: .4byte 0x0003043f
-_08010D18:
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- mov r1, r8
- adds r1, 0x50
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- add r0, r12
- str r1, [r0]
-_08010D30:
- movs r5, 0
- ldr r6, _08010EFC @ =0x02000000
- ldr r0, _08010F00 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- bge _08010D92
- ldr r1, _08010F04 @ =gUnknown_02024AD0
- mov r9, r1
- ldr r2, _08010F08 @ =gBitTable
- mov r8, r2
- ldr r4, _08010F0C @ =gUnknown_02024A60
- mov r12, r6
-_08010D48:
- movs r0, 0x58
- muls r0, r5
- mov r1, r9
- adds r3, r0, r1
- ldrb r0, [r4]
- lsls r0, 2
- add r0, r8
- ldr r0, [r0]
- lsls r2, r0, 16
- ldr r1, [r3]
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _08010D68
- bics r1, r2
- str r1, [r3]
-_08010D68:
- ldr r1, [r3]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08010D88
- ldr r2, _08010F10 @ =0x00016020
- adds r0, r5, r2
- add r0, r12
- ldrb r0, [r0]
- ldrb r2, [r4]
- cmp r0, r2
- bne _08010D88
- ldr r0, _08010F14 @ =0xffff1fff
- ands r1, r0
- str r1, [r3]
-_08010D88:
- adds r5, 0x1
- ldr r3, _08010F00 @ =gUnknown_02024A68
- ldrb r3, [r3]
- cmp r5, r3
- blt _08010D48
-_08010D92:
- ldrb r0, [r7]
- ldr r1, _08010F18 @ =gUnknown_02024E60
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldrb r0, [r7]
- ldr r2, _08010F1C @ =gUnknown_02024E64
- adds r0, r2
- strb r1, [r0]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r3, r10
- adds r1, r0, r3
- movs r5, 0
- movs r2, 0
-_08010DB4:
- adds r0, r1, r5
- strb r2, [r0]
- adds r5, 0x1
- cmp r5, 0x1B
- bls _08010DB4
- ldr r1, _08010F20 @ =gUnknown_02024BE6
- ldrh r0, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _08010F24 @ =gBattleMoves
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x7F
- bne _08010E2C
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- mov r1, sp
- ldrb r1, [r1, 0xA]
- strb r1, [r0, 0xA]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- mov r1, sp
- ldrb r1, [r1, 0x15]
- strb r1, [r0, 0x15]
- ldrb r0, [r7]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r10
- mov r0, sp
- ldrb r2, [r0, 0xF]
- lsls r2, 28
- movs r4, 0xF
- lsrs r2, 28
- ldrb r3, [r1, 0xF]
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xF]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- mov r1, sp
- ldrb r1, [r1, 0xF]
- lsrs r1, 4
- lsls r1, 4
- ldrb r2, [r0, 0xF]
- ands r4, r2
- orrs r4, r1
- strb r4, [r0, 0xF]
-_08010E2C:
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- movs r3, 0
- movs r1, 0x2
- strb r1, [r0, 0x16]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F28 @ =gUnknown_02024C34
- adds r0, r1
- movs r2, 0
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F2C @ =gUnknown_02024C3C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F30 @ =gUnknown_02024C44
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F34 @ =gUnknown_02024C4C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F38 @ =gUnknown_02024C2C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- ldr r1, _08010F3C @ =gUnknown_02024C5C
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F40 @ =0x000160ac
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x53
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- subs r1, 0x1B
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldr r2, _08010F44 @ =0x00017100
- adds r1, r6, r2
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- str r3, [r0]
- ldr r6, _08010F20 @ =gUnknown_02024BE6
- strh r3, [r6]
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010EFC: .4byte 0x02000000
-_08010F00: .4byte gUnknown_02024A68
-_08010F04: .4byte gUnknown_02024AD0
-_08010F08: .4byte gBitTable
-_08010F0C: .4byte gUnknown_02024A60
-_08010F10: .4byte 0x00016020
-_08010F14: .4byte 0xffff1fff
-_08010F18: .4byte gUnknown_02024E60
-_08010F1C: .4byte gUnknown_02024E64
-_08010F20: .4byte gUnknown_02024BE6
-_08010F24: .4byte gBattleMoves
-_08010F28: .4byte gUnknown_02024C34
-_08010F2C: .4byte gUnknown_02024C3C
-_08010F30: .4byte gUnknown_02024C44
-_08010F34: .4byte gUnknown_02024C4C
-_08010F38: .4byte gUnknown_02024C2C
-_08010F3C: .4byte gUnknown_02024C5C
-_08010F40: .4byte 0x000160ac
-_08010F44: .4byte 0x00017100
- thumb_func_end sub_8010B88
-
- thumb_func_start sub_8010F48
-sub_8010F48: @ 8010F48
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r4, 0
- ldr r7, _08011268 @ =gUnknown_02024A60
- ldr r0, _0801126C @ =gUnknown_02024C98
- mov r9, r0
- ldr r1, _08011270 @ =gUnknown_02024A68
- mov r8, r1
- ldr r2, _08011274 @ =0x02000000
- mov r12, r2
- ldr r6, _08011278 @ =gUnknown_02024D28
- adds r5, r7, 0
- movs r3, 0x58
- ldr r2, _0801127C @ =gBattleMons
- adds r2, 0x18
- movs r1, 0x6
-_08010F70:
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4, r0
- adds r0, r2
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x7
- ble _08010F70
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- ldr r2, _0801127C @ =gBattleMons
- adds r2, 0x50
- adds r0, r2
- movs r1, 0
- str r1, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- add r0, r9
- str r1, [r0]
- movs r4, 0
- mov r0, r8
- ldrb r0, [r0]
- cmp r4, r0
- bge _08011012
- adds r3, r2, 0
- movs r5, 0
- ldr r1, _08011280 @ =gBitTable
- mov r10, r1
- ldr r2, _08011274 @ =0x02000000
- mov r9, r2
-_08010FAE:
- ldr r1, [r3]
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _08010FCC
- ldr r2, _08011284 @ =gUnknown_02024CA8
- adds r0, r5, r2
- ldrb r0, [r0, 0x14]
- ldrb r2, [r7]
- cmp r0, r2
- bne _08010FCC
- ldr r0, _08011288 @ =0xfbffffff
- ands r1, r0
- str r1, [r3]
-_08010FCC:
- ldrb r0, [r7]
- lsls r0, 2
- add r0, r10
- ldr r0, [r0]
- lsls r2, r0, 16
- ldr r1, [r3]
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _08010FE4
- bics r1, r2
- str r1, [r3]
-_08010FE4:
- ldr r1, [r3]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08011004
- ldr r2, _0801128C @ =0x00016020
- adds r0, r4, r2
- add r0, r9
- ldrb r0, [r0]
- ldrb r2, [r7]
- cmp r0, r2
- bne _08011004
- ldr r0, _08011290 @ =0xffff1fff
- ands r1, r0
- str r1, [r3]
-_08011004:
- adds r3, 0x58
- adds r5, 0x1C
- adds r4, 0x1
- mov r0, r8
- ldrb r0, [r0]
- cmp r4, r0
- blt _08010FAE
-_08011012:
- ldrb r0, [r7]
- ldr r1, _08011294 @ =gUnknown_02024E60
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldrb r0, [r7]
- ldr r2, _08011298 @ =gUnknown_02024E64
- adds r0, r2
- strb r1, [r0]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r2, _08011284 @ =gUnknown_02024CA8
- adds r1, r0, r2
- movs r4, 0
- movs r2, 0
-_08011034:
- adds r0, r1, r4
- strb r2, [r0]
- adds r4, 0x1
- cmp r4, 0x1B
- bls _08011034
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- mov r9, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- mov r8, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x9
- negs r0, r0
- mov r10, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r5, 0x21
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r4, 0x41
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r3, 0x7F
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- mov r0, r9
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- mov r0, r8
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- movs r0, 0x19
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r5, r1
- strb r5, [r0, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r4, r1
- strb r4, [r0, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r3, r1
- strb r3, [r0, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- mov r2, r9
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- mov r2, r8
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- movs r2, 0x5
- negs r2, r2
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- mov r2, r10
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _08011284 @ =gUnknown_02024CA8
- adds r0, r1
- movs r3, 0
- movs r1, 0x2
- strb r1, [r0, 0x16]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r2, _0801129C @ =gUnknown_02024C34
- adds r0, r2
- movs r2, 0
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112A0 @ =gUnknown_02024C3C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112A4 @ =gUnknown_02024C44
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112A8 @ =gUnknown_02024C4C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112AC @ =gUnknown_02024C2C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- ldr r1, _080112B0 @ =gUnknown_02024C5C
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112B4 @ =0x000160e8
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- subs r1, 0x3D
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x53
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldr r1, _080112B8 @ =0x00017100
- add r1, r12
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- str r3, [r0]
- ldrb r0, [r7]
- movs r3, 0x58
- adds r1, r0, 0
- muls r1, r3
- ldr r2, _0801127C @ =gBattleMons
- adds r1, r2
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- ldr r2, _080112BC @ =gBaseStats
- adds r0, r2
- ldrb r0, [r0, 0x6]
- adds r1, 0x21
- strb r0, [r1]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r3
- ldr r0, _0801127C @ =gBattleMons
- adds r1, r0
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- ldr r2, _080112BC @ =gBaseStats
- adds r0, r2
- ldrb r0, [r0, 0x7]
- adds r1, 0x22
- strb r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011268: .4byte gUnknown_02024A60
-_0801126C: .4byte gUnknown_02024C98
-_08011270: .4byte gUnknown_02024A68
-_08011274: .4byte 0x02000000
-_08011278: .4byte gUnknown_02024D28
-_0801127C: .4byte gBattleMons
-_08011280: .4byte gBitTable
-_08011284: .4byte gUnknown_02024CA8
-_08011288: .4byte 0xfbffffff
-_0801128C: .4byte 0x00016020
-_08011290: .4byte 0xffff1fff
-_08011294: .4byte gUnknown_02024E60
-_08011298: .4byte gUnknown_02024E64
-_0801129C: .4byte gUnknown_02024C34
-_080112A0: .4byte gUnknown_02024C3C
-_080112A4: .4byte gUnknown_02024C44
-_080112A8: .4byte gUnknown_02024C4C
-_080112AC: .4byte gUnknown_02024C2C
-_080112B0: .4byte gUnknown_02024C5C
-_080112B4: .4byte 0x000160e8
-_080112B8: .4byte 0x00017100
-_080112BC: .4byte gBaseStats
- thumb_func_end sub_8010F48
-
- thumb_func_start bc_8012FAC
-bc_8012FAC: @ 80112C0
- push {r4,r5,lr}
- ldr r5, _080112D0 @ =gUnknown_02024D1E
- ldrb r0, [r5]
- cmp r0, 0
- beq _080112D4
- cmp r0, 0x1
- beq _080112F8
- b _0801132E
- .align 2, 0
-_080112D0: .4byte gUnknown_02024D1E
-_080112D4:
- ldr r4, _080112F4 @ =gUnknown_02024A60
- ldrb r0, [r5, 0x1]
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl dp01_build_cmdbuf_x00_a_b_0
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0801132E
- .align 2, 0
-_080112F4: .4byte gUnknown_02024A60
-_080112F8:
- ldr r0, _0801131C @ =gUnknown_02024A64
- ldr r2, [r0]
- cmp r2, 0
- bne _0801132E
- ldrb r0, [r5, 0x1]
- adds r0, 0x1
- strb r0, [r5, 0x1]
- ldr r1, _08011320 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _0801132C
- ldr r1, _08011324 @ =gUnknown_030042D4
- ldr r0, _08011328 @ =bc_load_battlefield
- str r0, [r1]
- b _0801132E
- .align 2, 0
-_0801131C: .4byte gUnknown_02024A64
-_08011320: .4byte gUnknown_02024A68
-_08011324: .4byte gUnknown_030042D4
-_08011328: .4byte bc_load_battlefield
-_0801132C:
- strb r2, [r5]
-_0801132E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end bc_8012FAC
-
- thumb_func_start bc_load_battlefield
-bc_load_battlefield: @ 8011334
- push {r4,r5,lr}
- ldr r0, _0801136C @ =gUnknown_02024A64
- ldr r5, [r0]
- cmp r5, 0
- bne _08011364
- movs r0, 0
- bl battle_get_side_with_given_state
- ldr r4, _08011370 @ =gUnknown_02024A60
- strb r0, [r4]
- ldr r0, _08011374 @ =gBattleTerrain
- ldrb r1, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x2E_a
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- ldr r1, _08011378 @ =gUnknown_030042D4
- ldr r0, _0801137C @ =sub_8011384
- str r0, [r1]
- ldr r0, _08011380 @ =gUnknown_02024D1E
- strb r5, [r0]
- strb r5, [r0, 0x1]
-_08011364:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801136C: .4byte gUnknown_02024A64
-_08011370: .4byte gUnknown_02024A60
-_08011374: .4byte gBattleTerrain
-_08011378: .4byte gUnknown_030042D4
-_0801137C: .4byte sub_8011384
-_08011380: .4byte gUnknown_02024D1E
- thumb_func_end bc_load_battlefield
-
- thumb_func_start sub_8011384
-sub_8011384: @ 8011384
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _080113E0 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- beq _08011396
- b _080115DA
-_08011396:
- ldr r2, _080113E4 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _080113E8 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcc _080113A4
- b _080115D4
-_080113A4:
- movs r7, 0x58
- ldr r0, _080113EC @ =gBattleMons
- mov r9, r0
- mov r8, r2
-_080113AC:
- ldr r0, _080113F0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080113F4
- ldr r4, _080113E4 @ =gUnknown_02024A60
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _080113F4
- ldrb r0, [r4]
- muls r0, r7
- mov r1, r9
- adds r3, r0, r1
- movs r2, 0
- movs r1, 0
-_080113D2:
- adds r0, r3, r2
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x57
- bls _080113D2
- b _080114BE
- .align 2, 0
-_080113E0: .4byte gUnknown_02024A64
-_080113E4: .4byte gUnknown_02024A60
-_080113E8: .4byte gUnknown_02024A68
-_080113EC: .4byte gBattleMons
-_080113F0: .4byte gBattleTypeFlags
-_080113F4:
- mov r2, r8
- ldrb r0, [r2]
- muls r0, r7
- mov r1, r9
- adds r3, r0, r1
- movs r2, 0
- ldr r6, _08011530 @ =gBaseStats
- ldr r5, _08011534 @ =gUnknown_02024260
- ldr r4, _08011538 @ =gUnknown_02024A60
-_08011406:
- adds r0, r3, r2
- ldrb r1, [r4]
- lsls r1, 9
- adds r1, 0x4
- adds r1, r2, r1
- adds r1, r5
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x57
- bls _08011406
- mov r2, r8
- ldrb r0, [r2]
- adds r2, r0, 0
- muls r2, r7
- add r2, r9
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x6]
- adds r2, 0x21
- strb r0, [r2]
- mov r1, r8
- ldrb r0, [r1]
- adds r2, r0, 0
- muls r2, r7
- add r2, r9
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x7]
- adds r2, 0x22
- strb r0, [r2]
- mov r2, r8
- ldrb r0, [r2]
- adds r1, r0, 0
- muls r1, r7
- add r1, r9
- ldrh r0, [r1]
- ldrb r1, [r1, 0x17]
- lsrs r1, 7
- bl GetAbilityBySpecies
- mov r2, r8
- ldrb r1, [r2]
- muls r1, r7
- add r1, r9
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r2]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 23
- ldr r1, _0801153C @ =0x020160bc
- adds r0, r1
- mov r2, r8
- ldrb r1, [r2]
- muls r1, r7
- add r1, r9
- ldrh r1, [r1, 0x28]
- strh r1, [r0]
- movs r2, 0
- ldr r4, _08011538 @ =gUnknown_02024A60
- movs r5, 0x58
- ldr r1, _08011540 @ =gUnknown_02024A98
- adds r6, r4, 0
- movs r0, 0x18
- negs r0, r0
- adds r0, r1
- mov r12, r0
- movs r3, 0x6
-_0801149E:
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r2, r0
- adds r0, r1
- strb r3, [r0]
- adds r2, 0x1
- cmp r2, 0x7
- ble _0801149E
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r7
- mov r0, r12
- adds r0, 0x50
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080114BE:
- ldr r4, _08011538 @ =gUnknown_02024A60
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- cmp r0, 0
- bne _080114D8
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080114D8:
- ldr r5, _08011544 @ =gBattleTypeFlags
- ldrh r1, [r5]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801154C
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080114FE
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080114FE:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011588
- ldrh r1, [r5]
- ldr r2, _08011548 @ =0x00000902
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08011588
- ldrb r0, [r4]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl sub_8090D90
- b _08011588
- .align 2, 0
-_08011530: .4byte gBaseStats
-_08011534: .4byte gUnknown_02024260
-_08011538: .4byte gUnknown_02024A60
-_0801153C: .4byte 0x020160bc
-_08011540: .4byte gUnknown_02024A98
-_08011544: .4byte gBattleTypeFlags
-_08011548: .4byte 0x00000902
-_0801154C:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011588
- ldrh r1, [r5]
- ldr r2, _080115E8 @ =0x00000902
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08011588
- ldrb r0, [r4]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl sub_8090D90
- movs r0, 0
- bl dp01_build_cmdbuf_x04_4_4_4
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011588:
- ldr r0, _080115EC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080115BE
- ldr r4, _080115F0 @ =gUnknown_02024A60
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080115B2
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _080115BE
-_080115B2:
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080115BE:
- mov r1, r8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, _080115F4 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcs _080115D4
- b _080113AC
-_080115D4:
- ldr r1, _080115F8 @ =gUnknown_030042D4
- ldr r0, _080115FC @ =bc_801333C
- str r0, [r1]
-_080115DA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080115E8: .4byte 0x00000902
-_080115EC: .4byte gBattleTypeFlags
-_080115F0: .4byte gUnknown_02024A60
-_080115F4: .4byte gUnknown_02024A68
-_080115F8: .4byte gUnknown_030042D4
-_080115FC: .4byte bc_801333C
- thumb_func_end sub_8011384
-
- thumb_func_start bc_801333C
-bc_801333C: @ 8011600
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- ldr r0, _08011658 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- beq _08011612
- b _0801178C
-_08011612:
- ldr r0, _0801165C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08011620
- b _0801172C
-_08011620:
- movs r7, 0
- add r0, sp, 0x4
- mov r8, r0
- mov r6, r8
- mov r5, sp
-_0801162A:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08011660 @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08011650
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08011668
-_08011650:
- ldr r0, _08011664 @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0801167A
- .align 2, 0
-_08011658: .4byte gUnknown_02024A64
-_0801165C: .4byte gBattleTypeFlags
-_08011660: .4byte gEnemyParty
-_08011664: .4byte 0x0000ffff
-_08011668:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0801167A:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _0801162A
- movs r0, 0x1
- bl battle_get_side_with_given_state
- ldr r4, _080116D4 @ =gUnknown_02024A60
- strb r0, [r4]
- movs r0, 0
- mov r1, sp
- movs r2, 0x80
- bl dp01_build_cmdbuf_x30_TODO
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- movs r7, 0
- mov r6, r8
- mov r5, sp
-_080116A6:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _080116D8 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080116CC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _080116E0
-_080116CC:
- ldr r0, _080116DC @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _080116F2
- .align 2, 0
-_080116D4: .4byte gUnknown_02024A60
-_080116D8: .4byte gPlayerParty
-_080116DC: .4byte 0x0000ffff
-_080116E0:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_080116F2:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _080116A6
- movs r0, 0
- bl battle_get_side_with_given_state
- ldr r4, _08011720 @ =gUnknown_02024A60
- strb r0, [r4]
- movs r0, 0
- mov r1, sp
- movs r2, 0x80
- bl dp01_build_cmdbuf_x30_TODO
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- ldr r1, _08011724 @ =gUnknown_030042D4
- ldr r0, _08011728 @ =bc_battle_begin_message
- b _0801178A
- .align 2, 0
-_08011720: .4byte gUnknown_02024A60
-_08011724: .4byte gUnknown_030042D4
-_08011728: .4byte bc_battle_begin_message
-_0801172C:
- movs r7, 0
- add r6, sp, 0x4
- mov r5, sp
-_08011732:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08011760 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08011758
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08011768
-_08011758:
- ldr r0, _08011764 @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0801177A
- .align 2, 0
-_08011760: .4byte gPlayerParty
-_08011764: .4byte 0x0000ffff
-_08011768:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0801177A:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _08011732
- ldr r1, _08011798 @ =gUnknown_030042D4
- ldr r0, _0801179C @ =bc_8013568
-_0801178A:
- str r0, [r1]
-_0801178C:
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011798: .4byte gUnknown_030042D4
-_0801179C: .4byte bc_8013568
- thumb_func_end bc_801333C
-
- thumb_func_start bc_battle_begin_message
-bc_battle_begin_message: @ 80117A0
- push {lr}
- ldr r0, _080117C8 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _080117C2
- movs r0, 0x1
- bl battle_get_side_with_given_state
- ldr r1, _080117CC @ =gUnknown_02024A60
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0
- bl b_std_message
- ldr r1, _080117D0 @ =gUnknown_030042D4
- ldr r0, _080117D4 @ =sub_8011800
- str r0, [r1]
-_080117C2:
- pop {r0}
- bx r0
- .align 2, 0
-_080117C8: .4byte gUnknown_02024A64
-_080117CC: .4byte gUnknown_02024A60
-_080117D0: .4byte gUnknown_030042D4
-_080117D4: .4byte sub_8011800
- thumb_func_end bc_battle_begin_message
-
- thumb_func_start bc_8013568
-bc_8013568: @ 80117D8
- push {lr}
- ldr r0, _080117F4 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _080117F0
- ldr r1, _080117F8 @ =gUnknown_030042D4
- ldr r0, _080117FC @ =sub_8011970
- str r0, [r1]
- movs r0, 0
- movs r1, 0
- bl b_std_message
-_080117F0:
- pop {r0}
- bx r0
- .align 2, 0
-_080117F4: .4byte gUnknown_02024A64
-_080117F8: .4byte gUnknown_030042D4
-_080117FC: .4byte sub_8011970
- thumb_func_end bc_8013568
-
- thumb_func_start sub_8011800
-sub_8011800: @ 8011800
- push {lr}
- ldr r0, _08011828 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _08011822
- movs r0, 0x1
- bl battle_get_side_with_given_state
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- bl b_std_message
- ldr r1, _0801182C @ =gUnknown_030042D4
- ldr r0, _08011830 @ =sub_8011834
- str r0, [r1]
-_08011822:
- pop {r0}
- bx r0
- .align 2, 0
-_08011828: .4byte gUnknown_02024A64
-_0801182C: .4byte gUnknown_030042D4
-_08011830: .4byte sub_8011834
- thumb_func_end sub_8011800
-
- thumb_func_start sub_8011834
-sub_8011834: @ 8011834
- push {r4,lr}
- ldr r0, _080118AC @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _080118A4
- ldr r2, _080118B0 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _080118B4 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _0801189E
- adds r4, r2, 0
-_0801184C:
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011866
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011866:
- ldr r0, _080118B8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801188C
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0801188C
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_0801188C:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _080118B4 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0801184C
-_0801189E:
- ldr r1, _080118BC @ =gUnknown_030042D4
- ldr r0, _080118C0 @ =bc_801362C
- str r0, [r1]
-_080118A4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080118AC: .4byte gUnknown_02024A64
-_080118B0: .4byte gUnknown_02024A60
-_080118B4: .4byte gUnknown_02024A68
-_080118B8: .4byte gBattleTypeFlags
-_080118BC: .4byte gUnknown_030042D4
-_080118C0: .4byte bc_801362C
- thumb_func_end sub_8011834
-
- thumb_func_start bc_801362C
-bc_801362C: @ 80118C4
- push {r4,r5,lr}
- ldr r0, _08011930 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _0801192A
- ldr r2, _08011934 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _08011938 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08011924
- adds r4, r2, 0
- ldr r5, _0801193C @ =gBattleMons
-_080118DE:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011912
- ldr r0, _08011940 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r2, _08011944 @ =0x00000902
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08011912
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r5
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl sub_8090D90
-_08011912:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08011938 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _080118DE
-_08011924:
- ldr r1, _08011948 @ =gUnknown_030042D4
- ldr r0, _0801194C @ =sub_8011970
- str r0, [r1]
-_0801192A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08011930: .4byte gUnknown_02024A64
-_08011934: .4byte gUnknown_02024A60
-_08011938: .4byte gUnknown_02024A68
-_0801193C: .4byte gBattleMons
-_08011940: .4byte gBattleTypeFlags
-_08011944: .4byte 0x00000902
-_08011948: .4byte gUnknown_030042D4
-_0801194C: .4byte sub_8011970
- thumb_func_end bc_801362C
-
- thumb_func_start unref_sub_8011950
-unref_sub_8011950: @ 8011950
- push {lr}
- ldr r0, _08011964 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _08011960
- ldr r1, _08011968 @ =gUnknown_030042D4
- ldr r0, _0801196C @ =sub_8011970
- str r0, [r1]
-_08011960:
- pop {r0}
- bx r0
- .align 2, 0
-_08011964: .4byte gUnknown_02024A64
-_08011968: .4byte gUnknown_030042D4
-_0801196C: .4byte sub_8011970
- thumb_func_end unref_sub_8011950
-
- thumb_func_start sub_8011970
-sub_8011970: @ 8011970
- push {lr}
- ldr r0, _080119A4 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _0801199E
- ldr r0, _080119A8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08011998
- movs r0, 0
- bl battle_get_side_with_given_state
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- bl b_std_message
-_08011998:
- ldr r1, _080119AC @ =gUnknown_030042D4
- ldr r0, _080119B0 @ =sub_80119B4
- str r0, [r1]
-_0801199E:
- pop {r0}
- bx r0
- .align 2, 0
-_080119A4: .4byte gUnknown_02024A64
-_080119A8: .4byte gBattleTypeFlags
-_080119AC: .4byte gUnknown_030042D4
-_080119B0: .4byte sub_80119B4
- thumb_func_end sub_8011970
-
- thumb_func_start sub_80119B4
-sub_80119B4: @ 80119B4
- push {r4,lr}
- ldr r0, _08011A40 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _08011A38
- ldr r2, _08011A44 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _08011A48 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08011A1C
- adds r4, r2, 0
-_080119CC:
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- cmp r0, 0
- bne _080119E4
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080119E4:
- ldr r0, _08011A4C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08011A0A
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08011A0A
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011A0A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08011A48 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _080119CC
-_08011A1C:
- ldr r1, _08011A50 @ =0x02000000
- ldr r2, _08011A54 @ =0x00016058
- adds r0, r1, r2
- movs r2, 0
- strb r2, [r0]
- ldr r3, _08011A58 @ =0x000160f9
- adds r0, r1, r3
- strb r2, [r0]
- ldr r0, _08011A5C @ =0x000160e6
- adds r1, r0
- strb r2, [r1]
- ldr r1, _08011A60 @ =gUnknown_030042D4
- ldr r0, _08011A64 @ =sub_8011B00
- str r0, [r1]
-_08011A38:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08011A40: .4byte gUnknown_02024A64
-_08011A44: .4byte gUnknown_02024A60
-_08011A48: .4byte gUnknown_02024A68
-_08011A4C: .4byte gBattleTypeFlags
-_08011A50: .4byte 0x02000000
-_08011A54: .4byte 0x00016058
-_08011A58: .4byte 0x000160f9
-_08011A5C: .4byte 0x000160e6
-_08011A60: .4byte gUnknown_030042D4
-_08011A64: .4byte sub_8011B00
- thumb_func_end sub_80119B4
-
- thumb_func_start unref_sub_8011A68
-unref_sub_8011A68: @ 8011A68
- push {r4,r5,lr}
- ldr r0, _08011AD8 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _08011AD2
- ldr r2, _08011ADC @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _08011AE0 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08011AB6
- adds r4, r2, 0
- ldr r5, _08011AE4 @ =gUnknown_02024A6A
-_08011A82:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _08011AA4
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0
- bl sub_800C704
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011AA4:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08011AE0 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08011A82
-_08011AB6:
- ldr r1, _08011AE8 @ =0x02000000
- ldr r2, _08011AEC @ =0x00016058
- adds r0, r1, r2
- movs r2, 0
- strb r2, [r0]
- ldr r3, _08011AF0 @ =0x000160f9
- adds r0, r1, r3
- strb r2, [r0]
- ldr r0, _08011AF4 @ =0x000160e6
- adds r1, r0
- strb r2, [r1]
- ldr r1, _08011AF8 @ =gUnknown_030042D4
- ldr r0, _08011AFC @ =sub_8011B00
- str r0, [r1]
-_08011AD2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08011AD8: .4byte gUnknown_02024A64
-_08011ADC: .4byte gUnknown_02024A60
-_08011AE0: .4byte gUnknown_02024A68
-_08011AE4: .4byte gUnknown_02024A6A
-_08011AE8: .4byte 0x02000000
-_08011AEC: .4byte 0x00016058
-_08011AF0: .4byte 0x000160f9
-_08011AF4: .4byte 0x000160e6
-_08011AF8: .4byte gUnknown_030042D4
-_08011AFC: .4byte sub_8011B00
- thumb_func_end unref_sub_8011A68
-
- thumb_func_start sub_8011B00
-sub_8011B00: @ 8011B00
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r0, 0
- mov r9, r0
- ldr r0, _08011B44 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- beq _08011B18
- b _08011D6E
-_08011B18:
- ldr r0, _08011B48 @ =0x02000000
- ldr r1, _08011B4C @ =0x00016058
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08011BA2
- movs r5, 0
- ldr r1, _08011B50 @ =gUnknown_02024A68
- adds r3, r1, 0
- ldrb r2, [r1]
- cmp r5, r2
- bge _08011B3E
- ldr r2, _08011B54 @ =gUnknown_02024A7A
-_08011B32:
- adds r0, r5, r2
- strb r5, [r0]
- adds r5, 0x1
- ldrb r0, [r1]
- cmp r5, r0
- blt _08011B32
-_08011B3E:
- movs r5, 0
- b _08011B98
- .align 2, 0
-_08011B44: .4byte gUnknown_02024A64
-_08011B48: .4byte 0x02000000
-_08011B4C: .4byte 0x00016058
-_08011B50: .4byte gUnknown_02024A68
-_08011B54: .4byte gUnknown_02024A7A
-_08011B58:
- adds r4, r5, 0x1
- mov r8, r4
- ldrb r1, [r1]
- cmp r8, r1
- bge _08011B96
- ldr r6, _08011BC8 @ =gUnknown_02024A7A
- ldr r3, _08011BCC @ =gUnknown_02024A68
- lsls r7, r5, 24
-_08011B68:
- adds r0, r5, r6
- ldrb r0, [r0]
- adds r1, r4, r6
- ldrb r1, [r1]
- movs r2, 0x1
- str r3, [sp, 0x4]
- bl b_first_side
- lsls r0, 24
- ldr r3, [sp, 0x4]
- cmp r0, 0
- beq _08011B8C
- lsls r1, r4, 24
- lsrs r1, 24
- lsrs r0, r7, 24
- bl sub_8012FBC
- ldr r3, [sp, 0x4]
-_08011B8C:
- adds r4, 0x1
- ldr r0, _08011BCC @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r4, r0
- blt _08011B68
-_08011B96:
- mov r5, r8
-_08011B98:
- adds r1, r3, 0
- ldrb r0, [r3]
- subs r0, 0x1
- cmp r5, r0
- blt _08011B58
-_08011BA2:
- ldr r0, _08011BD0 @ =0x02000000
- ldr r1, _08011BD4 @ =0x000160e6
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _08011BD8
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl sub_8018324
- lsls r0, 24
- cmp r0, 0
- beq _08011BD8
- movs r0, 0x1
- strb r0, [r4]
- b _08011D6E
- .align 2, 0
-_08011BC8: .4byte gUnknown_02024A7A
-_08011BCC: .4byte gUnknown_02024A68
-_08011BD0: .4byte 0x02000000
-_08011BD4: .4byte 0x000160e6
-_08011BD8:
- ldr r0, _08011D7C @ =0x02000000
- ldr r3, _08011D80 @ =0x00016058
- adds r2, r0, r3
- ldr r1, _08011D84 @ =gUnknown_02024A68
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _08011C28
- ldr r5, _08011D88 @ =gUnknown_02024A7A
- adds r4, r2, 0
-_08011BEC:
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- cmp r0, 0
- beq _08011C0E
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08011C0E:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- mov r1, r9
- cmp r1, 0
- beq _08011C1C
- b _08011D6E
-_08011C1C:
- ldr r1, _08011D84 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08011BEC
-_08011C28:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08011C42
- b _08011D6E
-_08011C42:
- str r0, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- cmp r0, 0
- beq _08011C58
- b _08011D6E
-_08011C58:
- ldr r0, _08011D7C @ =0x02000000
- ldr r3, _08011D8C @ =0x000160f9
- adds r2, r0, r3
- ldr r0, _08011D84 @ =gUnknown_02024A68
- ldrb r1, [r2]
- adds r3, r0, 0
- ldrb r0, [r3]
- cmp r1, r0
- bcs _08011CA8
- ldr r5, _08011D88 @ =gUnknown_02024A7A
- adds r4, r2, 0
-_08011C6E:
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0
- str r3, [sp, 0x4]
- bl sub_801A02C
- lsls r0, 24
- ldr r3, [sp, 0x4]
- cmp r0, 0
- beq _08011C90
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08011C90:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- mov r1, r9
- cmp r1, 0
- bne _08011D6E
- ldr r1, _08011D84 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08011C6E
-_08011CA8:
- ldrb r0, [r3]
- cmp r0, 0
- beq _08011CB6
- adds r5, r0, 0
-_08011CB0:
- subs r5, 0x1
- cmp r5, 0
- bne _08011CB0
-_08011CB6:
- movs r5, 0
- ldr r0, _08011D7C @ =0x02000000
- mov r8, r5
- ldr r3, _08011D90 @ =gUnknown_02024C60
- ldr r1, _08011D94 @ =0x00016068
- adds r2, r0, r1
- movs r7, 0x6
- ldr r6, _08011D98 @ =gUnknown_02024C18
- movs r4, 0xFF
-_08011CC8:
- strb r7, [r2]
- adds r1, r5, r6
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- mov r0, r8
- strh r0, [r3]
- adds r3, 0x2
- adds r2, 0x1
- adds r5, 0x1
- cmp r5, 0x3
- ble _08011CC8
- movs r0, 0
- bl sub_801365C
- bl sub_801377C
- ldr r0, _08011D7C @ =0x02000000
- ldr r1, _08011D9C @ =gUnknown_02024C0C
- ldrb r1, [r1]
- ldr r2, _08011DA0 @ =0x000160a6
- adds r0, r2
- strb r1, [r0]
- ldr r1, _08011DA4 @ =gUnknown_030042D4
- ldr r0, _08011DA8 @ =sub_8012324
- str r0, [r1]
- bl sub_80156DC
- ldr r1, _08011DAC @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x7
-_08011D06:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08011D06
- movs r5, 0
- ldr r3, _08011D84 @ =gUnknown_02024A68
- ldr r2, _08011D7C @ =0x02000000
- ldr r6, _08011DB0 @ =gBattleMoveFlags
- ldrb r0, [r3]
- cmp r5, r0
- bge _08011D36
- ldr r0, _08011DB4 @ =gBattleMons
- movs r4, 0x9
- negs r4, r4
- adds r1, r0, 0
- adds r1, 0x50
-_08011D26:
- ldr r0, [r1]
- ands r0, r4
- str r0, [r1]
- adds r1, 0x58
- adds r5, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- blt _08011D26
-_08011D36:
- movs r1, 0xB0
- lsls r1, 9
- adds r0, r2, r1
- movs r1, 0
- strb r1, [r0]
- ldr r3, _08011DB8 @ =0x00016001
- adds r0, r2, r3
- strb r1, [r0]
- ldr r3, _08011DBC @ =0x00016110
- adds r0, r2, r3
- strb r1, [r0]
- adds r3, 0x1
- adds r0, r2, r3
- strb r1, [r0]
- ldr r3, _08011DC0 @ =0x0001600c
- adds r0, r2, r3
- strb r1, [r0]
- adds r3, 0x4D
- adds r0, r2, r3
- strb r1, [r0]
- subs r3, 0x4B
- adds r0, r2, r3
- strb r1, [r0]
- strb r1, [r6]
- bl Random
- ldr r1, _08011DC4 @ =gUnknown_02024D1C
- strh r0, [r1]
-_08011D6E:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011D7C: .4byte 0x02000000
-_08011D80: .4byte 0x00016058
-_08011D84: .4byte gUnknown_02024A68
-_08011D88: .4byte gUnknown_02024A7A
-_08011D8C: .4byte 0x000160f9
-_08011D90: .4byte gUnknown_02024C60
-_08011D94: .4byte 0x00016068
-_08011D98: .4byte gUnknown_02024C18
-_08011D9C: .4byte gUnknown_02024C0C
-_08011DA0: .4byte 0x000160a6
-_08011DA4: .4byte gUnknown_030042D4
-_08011DA8: .4byte sub_8012324
-_08011DAC: .4byte gUnknown_02024D1E
-_08011DB0: .4byte gBattleMoveFlags
-_08011DB4: .4byte gBattleMons
-_08011DB8: .4byte 0x00016001
-_08011DBC: .4byte 0x00016110
-_08011DC0: .4byte 0x0001600c
-_08011DC4: .4byte gUnknown_02024D1C
- thumb_func_end sub_8011B00
-
- thumb_func_start bc_8013B1C
-bc_8013B1C: @ 8011DC8
- push {r4-r6,lr}
- ldr r0, _08011E60 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _08011E5A
- ldr r1, _08011E64 @ =gUnknown_030042D4
- ldr r0, _08011E68 @ =sub_8011E8C
- str r0, [r1]
- ldr r3, _08011E6C @ =gUnknown_02024A68
- ldr r1, _08011E70 @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x7
-_08011DE0:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08011DE0
- movs r4, 0
- ldrb r3, [r3]
- cmp r4, r3
- bge _08011E32
- ldr r5, _08011E74 @ =gBattleMons
- adds r6, r5, 0
- adds r6, 0x4C
-_08011DF6:
- movs r0, 0x58
- adds r2, r4, 0
- muls r2, r0
- adds r1, r5, 0
- adds r1, 0x50
- adds r1, r2, r1
- ldr r3, [r1]
- subs r0, 0x61
- ands r3, r0
- str r3, [r1]
- adds r2, r6
- ldr r0, [r2]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08011E28
- movs r0, 0x80
- lsls r0, 5
- ands r3, r0
- cmp r3, 0
- beq _08011E28
- lsls r0, r4, 24
- lsrs r0, 24
- bl b_cancel_multi_turn_move_maybe
-_08011E28:
- adds r4, 0x1
- ldr r0, _08011E6C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r4, r0
- blt _08011DF6
-_08011E32:
- ldr r0, _08011E78 @ =0x02000000
- movs r2, 0xB0
- lsls r2, 9
- adds r1, r0, r2
- movs r2, 0
- strb r2, [r1]
- ldr r3, _08011E7C @ =0x00016001
- adds r1, r0, r3
- strb r2, [r1]
- ldr r3, _08011E80 @ =0x00016110
- adds r1, r0, r3
- strb r2, [r1]
- adds r3, 0x1
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, _08011E84 @ =0x0001600e
- adds r0, r1
- strb r2, [r0]
- ldr r0, _08011E88 @ =gBattleMoveFlags
- strb r2, [r0]
-_08011E5A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08011E60: .4byte gUnknown_02024A64
-_08011E64: .4byte gUnknown_030042D4
-_08011E68: .4byte sub_8011E8C
-_08011E6C: .4byte gUnknown_02024A68
-_08011E70: .4byte gUnknown_02024D1E
-_08011E74: .4byte gBattleMons
-_08011E78: .4byte 0x02000000
-_08011E7C: .4byte 0x00016001
-_08011E80: .4byte 0x00016110
-_08011E84: .4byte 0x0001600e
-_08011E88: .4byte gBattleMoveFlags
- thumb_func_end bc_8013B1C
-
- thumb_func_start sub_8011E8C
-sub_8011E8C: @ 8011E8C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0x1
- bl sub_801365C
- ldr r0, _08011F3C @ =gUnknown_02024D26
- ldrb r0, [r0]
- cmp r0, 0
- bne _08011EBC
- bl sub_8015DFC
- lsls r0, 24
- cmp r0, 0
- beq _08011EB0
- b _08011FEE
-_08011EB0:
- bl sub_8016558
- lsls r0, 24
- cmp r0, 0
- beq _08011EBC
- b _08011FEE
-_08011EBC:
- bl sub_80173A4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08011ECA
- b _08011FEE
-_08011ECA:
- ldr r5, _08011F40 @ =0x02000000
- ldr r2, _08011F44 @ =0x00016059
- adds r0, r5, r2
- strb r1, [r0]
- bl sub_80170DC
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _08011EE0
- b _08011FEE
-_08011EE0:
- movs r0, 0
- bl sub_801365C
- ldr r2, _08011F48 @ =gUnknown_02024C6C
- ldr r0, [r2]
- ldr r1, _08011F4C @ =0xfffffdff
- ands r0, r1
- ldr r1, _08011F50 @ =0xfff7ffff
- ands r0, r1
- ldr r1, _08011F54 @ =0xffbfffff
- ands r0, r1
- ldr r1, _08011F58 @ =0xffefffff
- ands r0, r1
- str r0, [r2]
- ldr r3, _08011F5C @ =0x00016002
- adds r0, r5, r3
- strb r4, [r0]
- ldr r1, _08011F60 @ =0x000160a1
- adds r0, r5, r1
- strb r4, [r0]
- ldr r2, _08011F64 @ =0x0001600c
- adds r0, r5, r2
- strb r4, [r0]
- ldr r0, _08011F68 @ =gBattleMoveDamage
- str r4, [r0]
- ldr r0, _08011F6C @ =gBattleMoveFlags
- strb r4, [r0]
- ldr r1, _08011F70 @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x4
-_08011F1C:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08011F1C
- ldr r0, _08011F3C @ =gUnknown_02024D26
- ldrb r0, [r0]
- cmp r0, 0
- beq _08011F80
- ldr r1, _08011F74 @ =gUnknown_02024A7F
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, _08011F78 @ =gUnknown_030042D4
- ldr r0, _08011F7C @ =sub_80138F0
- str r0, [r1]
- b _08011FEE
- .align 2, 0
-_08011F3C: .4byte gUnknown_02024D26
-_08011F40: .4byte 0x02000000
-_08011F44: .4byte 0x00016059
-_08011F48: .4byte gUnknown_02024C6C
-_08011F4C: .4byte 0xfffffdff
-_08011F50: .4byte 0xfff7ffff
-_08011F54: .4byte 0xffbfffff
-_08011F58: .4byte 0xffefffff
-_08011F5C: .4byte 0x00016002
-_08011F60: .4byte 0x000160a1
-_08011F64: .4byte 0x0001600c
-_08011F68: .4byte gBattleMoveDamage
-_08011F6C: .4byte gBattleMoveFlags
-_08011F70: .4byte gUnknown_02024D1E
-_08011F74: .4byte gUnknown_02024A7F
-_08011F78: .4byte gUnknown_030042D4
-_08011F7C: .4byte sub_80138F0
-_08011F80:
- ldr r1, _08011FFC @ =gUnknown_030042E0
- ldrb r0, [r1, 0x13]
- cmp r0, 0xFE
- bhi _08011F8C
- adds r0, 0x1
- strb r0, [r1, 0x13]
-_08011F8C:
- movs r2, 0
- ldr r4, _08012000 @ =gUnknown_02024A68
- ldr r3, _08012004 @ =0x02000000
- mov r9, r3
- ldr r0, _08012008 @ =gUnknown_030042D4
- mov r10, r0
- ldr r1, _0801200C @ =gUnknown_02024C0C
- mov r12, r1
- ldr r3, _08012010 @ =sub_8012324
- mov r8, r3
- ldrb r0, [r4]
- cmp r2, r0
- bge _08011FC2
- ldr r7, _08012014 @ =gUnknown_02024C18
- movs r6, 0xFF
- movs r5, 0
- ldr r3, _08012018 @ =gUnknown_02024C60
-_08011FAE:
- adds r1, r2, r7
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- strh r5, [r3]
- adds r3, 0x2
- adds r2, 0x1
- ldrb r1, [r4]
- cmp r2, r1
- blt _08011FAE
-_08011FC2:
- ldr r0, _08012004 @ =0x02000000
- movs r1, 0x6
- movs r2, 0x3
- ldr r3, _0801201C @ =0x0001606b
- adds r0, r3
-_08011FCC:
- strb r1, [r0]
- subs r0, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _08011FCC
- mov r0, r12
- ldrb r1, [r0]
- ldr r0, _08012020 @ =0x000160a6
- add r0, r9
- strb r1, [r0]
- mov r1, r8
- mov r2, r10
- str r1, [r2]
- bl Random
- ldr r1, _08012024 @ =gUnknown_02024D1C
- strh r0, [r1]
-_08011FEE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011FFC: .4byte gUnknown_030042E0
-_08012000: .4byte gUnknown_02024A68
-_08012004: .4byte 0x02000000
-_08012008: .4byte gUnknown_030042D4
-_0801200C: .4byte gUnknown_02024C0C
-_08012010: .4byte sub_8012324
-_08012014: .4byte gUnknown_02024C18
-_08012018: .4byte gUnknown_02024C60
-_0801201C: .4byte 0x0001606b
-_08012020: .4byte 0x000160a6
-_08012024: .4byte gUnknown_02024D1C
- thumb_func_end sub_8011E8C
-
- thumb_func_start sub_8012028
-sub_8012028: @ 8012028
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, _0801204C @ =gBattleMons
- ldr r0, _08012050 @ =gUnknown_02024A60
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _08012058
- ldr r1, _08012054 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x7]
- b _08012062
- .align 2, 0
-_0801204C: .4byte gBattleMons
-_08012050: .4byte gUnknown_02024A60
-_08012054: .4byte gEnigmaBerries
-_08012058:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r2, r0, 24
-_08012062:
- ldr r1, _0801217C @ =gUnknown_02024C0B
- ldr r3, _08012180 @ =gUnknown_02024A60
- ldrb r0, [r3]
- strb r0, [r1]
- cmp r2, 0x25
- bne _08012070
- b _080121F4
-_08012070:
- ldr r0, _08012184 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801207E
- b _080121F4
-_0801207E:
- ldr r1, _08012188 @ =gBattleMons
- ldrb r2, [r3]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x32
- bne _08012092
- b _080121F4
-_08012092:
- adds r0, r2, 0
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r0, _0801218C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- bge _08012126
- movs r7, 0
-_080120A8:
- lsrs r4, r7, 24
- adds r0, r4, 0
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _080120CC
- ldr r1, _08012188 @ =gBattleMons
- movs r0, 0x58
- muls r0, r5
- adds r0, r1
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r0, [r2]
- cmp r0, 0x17
- bne _080120CC
- b _080121FC
-_080120CC:
- adds r0, r4, 0
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _08012116
- ldr r3, _08012188 @ =gBattleMons
- ldr r0, _08012180 @ =gUnknown_02024A60
- ldrb r0, [r0]
- movs r2, 0x58
- muls r0, r2
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- beq _08012116
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08012116
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08012116
- adds r0, r5, 0
- muls r0, r2
- adds r0, r3
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r0, [r2]
- cmp r0, 0x47
- bne _08012116
- b _08012220
-_08012116:
- movs r0, 0x80
- lsls r0, 17
- adds r7, r0
- adds r5, 0x1
- ldr r0, _0801218C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- blt _080120A8
-_08012126:
- ldr r4, _08012180 @ =gUnknown_02024A60
- ldrb r1, [r4]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xF
- movs r2, 0x2A
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080121A0
- ldr r6, _08012188 @ =gBattleMons
- ldrb r0, [r4]
- movs r3, 0x58
- muls r0, r3
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- beq _0801215E
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080121A0
-_0801215E:
- ldr r0, _08012190 @ =0x02000000
- subs r1, r5, 0x1
- ldr r2, _08012194 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- ldr r2, _08012198 @ =byte_2024C06
- adds r0, r1, 0
- muls r0, r3
- adds r0, r6
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, _0801219C @ =gUnknown_02024D1E
- movs r0, 0x2
- b _08012248
- .align 2, 0
-_0801217C: .4byte gUnknown_02024C0B
-_08012180: .4byte gUnknown_02024A60
-_08012184: .4byte gBattleTypeFlags
-_08012188: .4byte gBattleMons
-_0801218C: .4byte gUnknown_02024A68
-_08012190: .4byte 0x02000000
-_08012194: .4byte 0x00016003
-_08012198: .4byte byte_2024C06
-_0801219C: .4byte gUnknown_02024D1E
-_080121A0:
- ldr r1, _080121D4 @ =gBattleMons
- ldr r0, _080121D8 @ =gUnknown_02024A60
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080121DC @ =0x0400e000
- ands r0, r1
- cmp r0, 0
- bne _080121CA
- ldr r1, _080121E0 @ =gUnknown_02024C98
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _080121E8
-_080121CA:
- ldr r1, _080121E4 @ =gUnknown_02024D1E
- movs r0, 0
- strb r0, [r1, 0x5]
- movs r0, 0x1
- b _0801224A
- .align 2, 0
-_080121D4: .4byte gBattleMons
-_080121D8: .4byte gUnknown_02024A60
-_080121DC: .4byte 0x0400e000
-_080121E0: .4byte gUnknown_02024C98
-_080121E4: .4byte gUnknown_02024D1E
-_080121E8:
- ldr r0, _080121F8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08012244
-_080121F4:
- movs r0, 0
- b _0801224A
- .align 2, 0
-_080121F8: .4byte gBattleTypeFlags
-_080121FC:
- ldr r0, _08012210 @ =0x02000000
- ldr r1, _08012214 @ =0x00016003
- adds r0, r1
- strb r5, [r0]
- ldr r1, _08012218 @ =byte_2024C06
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r1, _0801221C @ =gUnknown_02024D1E
- movs r0, 0x2
- b _08012248
- .align 2, 0
-_08012210: .4byte 0x02000000
-_08012214: .4byte 0x00016003
-_08012218: .4byte byte_2024C06
-_0801221C: .4byte gUnknown_02024D1E
-_08012220:
- ldr r0, _08012234 @ =0x02000000
- ldr r1, _08012238 @ =0x00016003
- adds r0, r1
- strb r5, [r0]
- ldr r1, _0801223C @ =byte_2024C06
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r1, _08012240 @ =gUnknown_02024D1E
- movs r0, 0x2
- b _08012248
- .align 2, 0
-_08012234: .4byte 0x02000000
-_08012238: .4byte 0x00016003
-_0801223C: .4byte byte_2024C06
-_08012240: .4byte gUnknown_02024D1E
-_08012244:
- ldr r1, _08012254 @ =gUnknown_02024D1E
- movs r0, 0x1
-_08012248:
- strb r0, [r1, 0x5]
-_0801224A:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08012254: .4byte gUnknown_02024D1E
- thumb_func_end sub_8012028
-
- thumb_func_start sub_8012258
-sub_8012258: @ 8012258
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- ldr r7, _080122E4 @ =gUnknown_02024A6A
- ldr r4, _080122E8 @ =gUnknown_02038470
- ldr r1, _080122EC @ =0x02000000
- lsls r6, r5, 1
- ldr r2, _080122F0 @ =0x0001606c
- adds r0, r5, r2
- adds r0, r6, r0
- adds r2, r0, r1
-_08012270:
- adds r1, r3, r4
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _08012270
- adds r0, r6, r7
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, _080122EC @ =0x02000000
- ldr r1, _080122F4 @ =0x00016068
- adds r0, r5, r1
- adds r0, r7
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8094C98
- ldr r0, _080122F8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080122FC
- movs r3, 0
- ldr r2, _080122F0 @ =0x0001606c
- movs r0, 0x2
- adds r1, r5, 0
- eors r1, r0
- adds r0, r5, r2
- adds r0, r6, r0
- adds r4, r0, r7
- ldr r5, _080122E8 @ =gUnknown_02038470
- lsls r0, r1, 1
- adds r0, r1
- adds r0, r2
- adds r2, r0, r7
-_080122CC:
- adds r0, r3, r5
- ldrb r1, [r0]
- strb r1, [r4]
- ldrb r0, [r0]
- strb r0, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _080122CC
- b _08012316
- .align 2, 0
-_080122E4: .4byte gUnknown_02024A6A
-_080122E8: .4byte gUnknown_02038470
-_080122EC: .4byte 0x02000000
-_080122F0: .4byte 0x0001606c
-_080122F4: .4byte 0x00016068
-_080122F8: .4byte gBattleTypeFlags
-_080122FC:
- movs r3, 0
- ldr r2, _0801231C @ =0x0001606c
- adds r0, r5, r2
- adds r0, r6, r0
- adds r1, r0, r7
- ldr r2, _08012320 @ =gUnknown_02038470
-_08012308:
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _08012308
-_08012316:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801231C: .4byte 0x0001606c
-_08012320: .4byte gUnknown_02038470
- thumb_func_end sub_8012258
-
thumb_func_start sub_8012324
sub_8012324: @ 8012324
push {r4-r7,lr}
diff --git a/include/battle.h b/include/battle.h
index f05c7369d..be474b59f 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -124,17 +124,22 @@ struct BattleStruct /* 0x2000000 */
struct UnknownStruct4
{
- u8 filler0[0x3];
- u16 unk4;
- u16 unk6;
- u8 unk8;
- u8 unk9;
- u8 fillerA[0x9];
- u8 taunt:4;
- u8 unkC:4;
- u8 fillerD[0x2];
- u8 unk16;
- u8 filler17[0x4];
+ /*0x00*/ u8 filler0[0x3];
+ /*0x04*/ u16 unk4;
+ /*0x06*/ u16 unk6;
+ /*0x08*/ u8 unk8;
+ /*0x09*/ u8 unk9;
+ /*0x0A*/ u8 unkA;
+ u8 fillerB[4];
+ u8 unkF_0:4;
+ u8 unkF_4:4;
+ u8 filler10[3];
+ /*0x13*/ u8 taunt:4;
+ /*0x13*/ u8 unkC:4;
+ /*0x14*/ u8 unk14;
+ /*0x15*/ u8 unk15;
+ /*0x16*/ u8 unk16;
+ /*0x17*/ u8 filler17[0x4];
};
extern struct UnknownStruct1 unk_2016A00;
diff --git a/src/battle_2.c b/src/battle_2.c
index a9f0fd57a..f2ce737d6 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "asm.h"
#include "battle.h"
#include "main.h"
#include "text.h"
@@ -10,6 +11,16 @@
#include "link.h"
#include "name_string_util.h"
#include "battle_setup.h"
+#include "rng.h"
+#include "sound.h"
+#include "songs.h"
+#include "trig.h"
+#include "abilities.h"
+
+struct MonCoords
+{
+ u8 x, y;
+};
struct UnknownStruct5
{
@@ -55,35 +66,198 @@ struct UnknownPokemonStruct2
/*0x1D*/ u8 language;
};
+struct UnknownStruct9
+{
+ u8 unk0;
+ u16 unk2;
+};
+
+struct UnknownStruct10
+{
+ u8 unk0_0:1;
+ u8 unk0_1:1;
+ u8 unk0_2:1;
+ u8 filler1[1];
+ u8 unk2;
+ u8 unk3;
+ u8 filler4[8];
+};
+
+struct UnknownStruct11
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5_0:1;
+ u8 unk5_1:1;
+ u16 unk6;
+ u8 unk8[10];
+ u8 unk12;
+ u8 unk13;
+ u8 unk14[10];
+ u8 filler1E[2];
+ u16 unk20;
+ u16 unk22;
+ u16 unk24;
+ u16 unk26;
+ u16 unk28;
+ u8 unk2A[10];
+ u8 filler34[2];
+ u8 unk36[10];
+};
+
+struct UnknownStruct12
+{
+ u32 unk0;
+ u8 filler4[0x54];
+};
+
+struct UnknownStruct13
+{
+ u32 unk0_0:1;
+ u32 unk0_1:1;
+ u32 unk0_2:1;
+ u32 unk0_3:1;
+ u32 unk0_4:1;
+ u32 unk0_5:1;
+ u32 unk0_6:1;
+ u32 unk0_7:1;
+ u32 unk1_0:1;
+ u32 unk1_1:1;
+ u32 unk1_2:1;
+ u32 unk1_3:2;
+ u32 unk1_5:1;
+ u32 unk1_6:1;
+ u32 unk1_7:1;
+ u32 unk2_0:1;
+ u32 unk2_1:1;
+ u32 unk2_2:1;
+ u32 unk2_3:1;
+ u8 filler4[12];
+};
+
extern const struct UnknownStruct5 gUnknown_081F9674;
extern const u8 gUnknown_081F96C8[];
+extern void *const gUnknown_081FAF4C[];
+extern const u16 gUnknown_08D004E0[];
extern const struct Trainer gTrainers[];
extern const u8 gSpeciesNames[][11];
extern const struct BattleMove gBattleMoves[];
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct MonCoords gCastformFrontSpriteCoords[];
+extern const struct BaseStats gBaseStats[];
+extern const u32 gBitTable[];
extern u8 ewram[];
#define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0))
#define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4))
+#define ewram16000 (ewram[0x16000])
+#define ewram16001 (ewram[0x16001])
+#define ewram16002 (ewram[0x16002])
+#define ewram16003 (ewram[0x16003])
+#define ewram1600C (ewram[0x1600C])
+#define ewram1600E (ewram[0x1600E])
+#define ewram1601B (ewram[0x1601B])
+#define ewram16020 ((u8 *)(ewram + 0x16020))
+#define ewram16056 (ewram[0x16056])
+#define ewram16058 (ewram[0x16058])
+#define ewram16059 (ewram[0x16059])
+#define ewram16078 (ewram[0x16078])
+#define ewram16084 (ewram[0x16084])
+#define ewram16086 (ewram[0x16086])
+#define ewram16087 (ewram[0x16087])
+#define ewram16088 (ewram[0x16088])
+#define ewram16089 (ewram[0x16089])
+#define ewram160A1 (ewram[0x160A1])
+#define ewram160A6 (ewram[0x160A6])
+#define ewram160AC ((u8 *)(ewram + 0x160AC))
+#define ewram160BC ((u16 *)(ewram + 0x160BC)) // hp
+#define ewram160C8 (ewram[0x160C8])
+#define ewram160C9 (ewram[0x160C9])
#define ewram160CB (ewram[0x160CB])
+#define ewram160CC ((u8 *)(ewram + 0x160CC))
+#define ewram160E6 (ewram[0x160E6])
+#define ewram160E8 ((u8 *)(ewram + 0x160E8))
+#define ewram160F0 ((u8 *)(ewram + 0x160F0))
+#define ewram160F9 (ewram[0x160F9])
+#define ewram16100 ((u8 *)(ewram + 0x16100))
+#define ewram16108 ((u8 *)(ewram + 0x16108))
+#define ewram16110 (ewram[0x16110])
+#define ewram16111 (ewram[0x16111])
+#define ewram16113 (ewram[0x16113])
+#define ewram17100 ((u32 *)(ewram + 0x17100))
+#define ewram17130 (ewram[0x17130])
+#define ewram17160 (ewram[0x17160])
+#define ewram17800 ((struct UnknownStruct9 *)(ewram + 0x17800))
+#define ewram17810 ((struct UnknownStruct10 *)(ewram + 0x17810))
#define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000))
extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
+extern u8 gUnknown_02024260[][0x200];
+extern u8 gUnknown_02024A60;
+extern u32 gUnknown_02024A64;
+extern u8 gUnknown_02024A68;
+extern u16 gUnknown_02024A6A[];
+extern u8 gUnknown_02024A7F;
+extern u8 gUnknown_02024A7A[];
+extern struct UnknownStruct12 gUnknown_02024AD0[];
+extern u8 gUnknown_02024BE0[];
+extern u16 gUnknown_02024BE6;
+extern u8 byte_2024C06;
+extern u8 gUnknown_02024C0B;
+extern u8 gUnknown_02024C0C;
+extern u8 gUnknown_02024C0E;
+extern u8 gUnknown_02024C18[];
+extern u16 gUnknown_02024C2C[];
+extern u16 gUnknown_02024C34[];
+extern u16 gUnknown_02024C3C[];
+extern u16 gUnknown_02024C44[];
+extern u16 gUnknown_02024C4C[];
+extern u16 gUnknown_02024C54[];
+extern u8 gUnknown_02024C5C[];
+extern u16 gUnknown_02024C60[];
+extern u32 gUnknown_02024C6C;
+extern u8 gUnknown_02024C70[];
+extern u16 gUnknown_02024C7A[];
+extern u8 gUnknown_02024C80[][12];
+extern u32 gUnknown_02024C98[];
+//extern u8 gUnknown_02024CA8[][0x1C];
+extern u16 gUnknown_02024D18;
+extern u16 gUnknown_02024D1A;
+extern u16 gUnknown_02024D1C;
extern u8 gUnknown_02024D1E[];
extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is.
+extern u8 gUnknown_02024D26;
+extern struct UnknownStruct13 gUnknown_02024D28[];
+extern u8 gUnknown_02024DBC[];
+extern u16 gUnknown_02024DE8;
+extern u8 gUnknown_02024E60[];
+extern u8 gUnknown_02024E64[];
+extern u8 gUnknown_02038470[];
extern u16 gUnknown_030041B0;
extern u16 gUnknown_030041B4;
extern u16 gUnknown_030041B8;
extern struct Window gUnknown_030041D0;
+extern u16 gUnknown_03004200;
extern struct Window gUnknown_03004210;
+extern u16 gUnknown_03004244;
extern struct Window gUnknown_03004250;
extern u16 gUnknown_03004240;
extern u16 gUnknown_03004280;
+extern u32 gUnknown_03004284;
extern u16 gUnknown_03004288;
extern u16 gUnknown_030042A0;
extern u16 gUnknown_030042A4;
extern u16 gUnknown_030042C0;
extern u16 gUnknown_030042C4;
extern MainCallback gUnknown_030042D0;
+extern void (*gUnknown_030042D4)(void);
+extern struct UnknownStruct11 gUnknown_030042E0;
+extern u8 gUnknown_03004324;
+extern void (*gUnknown_03004330[])(void);
+extern u8 gUnknown_03004340[];
extern struct UnknownStruct6 gUnknown_03004DE0;
//extern u16 gUnknown_03004DE0[][0xA0]; // possibly?
extern u16 gBattleTypeFlags;
@@ -92,6 +266,13 @@ extern u8 gReservedSpritePaletteCount;
extern u16 gTrainerBattleOpponent;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
+extern u8 gBattleMonForms[];
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
+extern u16 gBattleWeather;
+extern u32 gBattleMoveDamage;
+extern struct BattlePokemon gBattleMons[];
+extern u8 gBattleMoveFlags;
extern void sub_800B858(void);
extern void dp12_8087EA4(void);
@@ -106,6 +287,29 @@ extern void sub_800DE30(u8);
extern void sub_800B950(void);
extern u8 battle_load_something();
extern void OpenPartyMenu();
+extern void sub_8089668();
+extern void sub_800D74C();
+extern void sub_804777C(u8);
+extern void sub_8043DFC();
+extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
+extern void dp01_build_cmdbuf_x00_a_b_0(u8 a, u8 b, u8 c);
+extern void dp01_build_cmdbuf_x04_4_4_4(u8 a);
+extern void dp01_build_cmdbuf_x07_7_7_7(u8 a);
+extern void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c);
+extern void dp01_build_cmdbuf_x2E_a(u8 a, u8 b);
+extern void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);
+extern void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c);
+extern void dp01_battle_side_mark_buffer_for_execution();
+extern u8 sub_8090D90();
+extern void sub_800C704(u8, u8, u8);
+extern u8 sub_8018324();
+extern u8 sub_801A02C();
+extern u8 sub_8015DFC();
+extern u8 sub_8016558();
+extern u8 sub_80173A4();
+extern u8 sub_80170DC();
+extern u8 ItemId_GetHoldEffect(u16);
+extern void sub_8094C98();
void sub_800E7F8(void);
void sub_800EC9C(void);
@@ -116,6 +320,40 @@ void sub_800F838(struct Sprite *);
u8 CreateNPCTrainerParty(struct Pokemon *, u16);
void sub_800FCFC(void);
void sub_8010824(void);
+void sub_80101B8(void);
+void c2_081284E0(void);
+void sub_8010278(struct Sprite *);
+void sub_80102AC(struct Sprite *);
+void nullsub_37(struct Sprite *);
+void sub_8010320(struct Sprite *);
+void sub_8010494(struct Sprite *);
+void sub_801053C(struct Sprite *);
+void oac_poke_ally_(struct Sprite *);
+void nullsub_86(struct Sprite *);
+void objc_dp11b_pingpong(struct Sprite *);
+void sub_8010874(void);
+void bc_8012FAC(void);
+void bc_load_battlefield(void);
+void sub_8011384(void);
+void bc_801333C(void);
+void bc_battle_begin_message(void);
+void bc_8013568(void);
+void sub_8011800(void);
+void sub_8011834(void);
+void bc_801362C(void);
+void sub_8011970(void);
+void sub_80119B4(void);
+void sub_8011B00(void);
+void sub_8011E8C(void);
+void sub_8012324(void);
+void sub_8012FBC(u8, u8);
+u8 b_first_side();
+void sub_801365C(u8);
+void sub_801377C(void);
+void sub_80138F0(void);
+void b_cancel_multi_turn_move_maybe(u8);
+void b_std_message();
+void sub_80156DC();
void sub_800E7C4(void)
{
@@ -565,25 +803,42 @@ void sub_800F298(void)
BuildOamBuffer();
switch (gUnknown_02024D1E[0])
{
- case 0:
- if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC())
+ case 0:
+ if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC())
+ {
+ ewram0.unk0 = 1;
+ ewram0.unk1 = 1;
+ sub_800E9EC();
+ sub_800EAAC();
+ SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20);
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 1:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ u8 taskId;
+
+ ResetBlockReceivedFlags();
+ id = 0;
+ if (gBlockRecvBuffer[0][0] == 0x100)
{
- ewram0.unk0 = 1;
- ewram0.unk1 = 1;
- sub_800E9EC();
- sub_800EAAC();
- SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20);
- gUnknown_02024D1E[0]++;
+ if (playerId == 0)
+ gBattleTypeFlags |= 12;
+ else
+ gBattleTypeFlags |= 8;
+ id++;
}
- break;
- case 1:
- if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ if (id == 0)
{
- u8 taskId;
+ s32 i;
- ResetBlockReceivedFlags();
- id = 0;
- if (gBlockRecvBuffer[0][0] == 0x100)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0])
+ break;
+ }
+ if (i == MAX_LINK_PLAYERS)
{
if (playerId == 0)
gBattleTypeFlags |= 12;
@@ -593,231 +848,214 @@ void sub_800F298(void)
}
if (id == 0)
{
- s32 i;
-
- for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ while (id < MAX_LINK_PLAYERS)
{
- if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0])
+ if (gBlockRecvBuffer[id][0] == 0x0101 && id != playerId)
+ if (id < playerId)
+ break;
+ if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId)
break;
- }
- if (i == MAX_LINK_PLAYERS)
- {
- if (playerId == 0)
- gBattleTypeFlags |= 12;
- else
- gBattleTypeFlags |= 8;
id++;
}
- if (id == 0)
- {
- while (id < MAX_LINK_PLAYERS)
- {
- if (gBlockRecvBuffer[id][0] == 0x0101 && id != playerId)
- if (id < playerId)
- break;
- if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId)
- break;
- id++;
- }
- if (id == MAX_LINK_PLAYERS)
- gBattleTypeFlags |= 12;
- else
- gBattleTypeFlags |= 8;
- }
+ if (id == MAX_LINK_PLAYERS)
+ gBattleTypeFlags |= 12;
+ else
+ gBattleTypeFlags |= 8;
+ }
+ }
+ sub_800EB08();
+ memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3);
+ taskId = CreateTask(sub_800DE30, 0);
+ gTasks[taskId].data[1] = 0x10E;
+ gTasks[taskId].data[2] = 0x5A;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 0;
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F;
+ break;
+ case 1:
+ gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F;
+ break;
+ case 2:
+ gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
+ break;
+ case 3:
+ gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
+ break;
}
- sub_800EB08();
- memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3);
- taskId = CreateTask(sub_800DE30, 0);
- gTasks[taskId].data[1] = 0x10E;
- gTasks[taskId].data[2] = 0x5A;
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = 0;
- for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ }
+ ZeroPlayerPartyMons();
+ ZeroEnemyPartyMons();
+ gUnknown_02024D1E[0]++;
+ goto step_2;
+ }
+ break;
+ case 2:
+ step_2:
+ if (sub_8007ECC())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 3:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ {
+ if (id == playerId)
{
switch (gLinkPlayers[id].lp_field_18)
{
- case 0:
- gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F;
- break;
- case 1:
- gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F;
- break;
- case 2:
- gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
- break;
- case 3:
- gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
- break;
+ case 0:
+ case 3:
+ memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
}
}
- ZeroPlayerPartyMons();
- ZeroEnemyPartyMons();
- gUnknown_02024D1E[0]++;
- goto step_2;
- }
- break;
- case 2:
- step_2:
- if (sub_8007ECC())
- {
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
- gUnknown_02024D1E[0]++;
- }
- break;
- case 3:
- if ((GetBlockReceivedStatus() & 0xF) == 0xF)
- {
- ResetBlockReceivedFlags();
- for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ else
{
- if (id == playerId)
+ if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
+ || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
{
switch (gLinkPlayers[id].lp_field_18)
{
- case 0:
- case 3:
- memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
+ case 0:
+ case 3:
+ memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
}
}
else
{
- if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
- || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
- {
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- }
- }
- else
+ switch (gLinkPlayers[id].lp_field_18)
{
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- case 1:
- case 2:
- memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- }
+ case 0:
+ case 3:
+ memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
}
}
}
- gUnknown_02024D1E[0]++;
}
- break;
- case 4:
- if (sub_8007ECC())
- {
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon));
- gUnknown_02024D1E[0]++;
- }
- break;
- case 5:
- if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 4:
+ if (sub_8007ECC())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon));
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 5:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
{
- ResetBlockReceivedFlags();
- for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ if (id == playerId)
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ }
+ }
+ else
{
- if (id == playerId)
+ if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
+ || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
{
switch (gLinkPlayers[id].lp_field_18)
{
- case 0:
- case 3:
- memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
+ case 0:
+ case 3:
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
}
}
else
{
- if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
- || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
- {
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- }
- }
- else
+ switch (gLinkPlayers[id].lp_field_18)
{
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- case 1:
- case 2:
- memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- }
+ case 0:
+ case 3:
+ memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
}
}
}
+ }
- shedinja_something(&gPlayerParty[0]);
- shedinja_something(&gPlayerParty[1]);
- shedinja_something(&gPlayerParty[2]);
- shedinja_something(&gPlayerParty[3]);
- shedinja_something(&gPlayerParty[4]);
- shedinja_something(&gPlayerParty[5]);
+ shedinja_something(&gPlayerParty[0]);
+ shedinja_something(&gPlayerParty[1]);
+ shedinja_something(&gPlayerParty[2]);
+ shedinja_something(&gPlayerParty[3]);
+ shedinja_something(&gPlayerParty[4]);
+ shedinja_something(&gPlayerParty[5]);
- shedinja_something(&gEnemyParty[0]);
- shedinja_something(&gEnemyParty[1]);
- shedinja_something(&gEnemyParty[2]);
- shedinja_something(&gEnemyParty[3]);
- shedinja_something(&gEnemyParty[4]);
- shedinja_something(&gEnemyParty[5]);
+ shedinja_something(&gEnemyParty[0]);
+ shedinja_something(&gEnemyParty[1]);
+ shedinja_something(&gEnemyParty[2]);
+ shedinja_something(&gEnemyParty[3]);
+ shedinja_something(&gEnemyParty[4]);
+ shedinja_something(&gEnemyParty[5]);
- gUnknown_02024D1E[0]++;
- }
- break;
- case 6:
- sub_800B950();
gUnknown_02024D1E[0]++;
- gUnknown_02024D1E[1] = 0;
- gUnknown_02024D1E[2] = 0;
- break;
- case 7:
- if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0)
+ }
+ break;
+ case 6:
+ sub_800B950();
+ gUnknown_02024D1E[0]++;
+ gUnknown_02024D1E[1] = 0;
+ gUnknown_02024D1E[2] = 0;
+ break;
+ case 7:
+ if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0)
+ {
+ gUnknown_030042D0 = gMain.callback1;
+ gMain.callback1 = sub_8010824;
+ SetMainCallback2(sub_800F808);
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- gUnknown_030042D0 = gMain.callback1;
- gMain.callback1 = sub_8010824;
- SetMainCallback2(sub_800F808);
- if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- {
- gTrainerBattleOpponent = 0x800;
- gBattleTypeFlags |= BATTLE_TYPE_20;
- }
+ gTrainerBattleOpponent = 0x800;
+ gBattleTypeFlags |= BATTLE_TYPE_20;
}
- break;
+ }
+ break;
}
}
@@ -842,42 +1080,42 @@ void sub_800F838(struct Sprite *sprite)
switch (sprite->data0)
{
- case 0:
- sprite->data0++;
- sprite->data1 = 0;
- sprite->data2 = 0x281;
- sprite->data3 = 0;
- sprite->data4 = 1;
- // fall through
- case 1:
- sprite->data4--;
- if (sprite->data4 == 0)
- {
- s32 i;
- s32 r2;
- s32 r0;
+ case 0:
+ sprite->data0++;
+ sprite->data1 = 0;
+ sprite->data2 = 0x281;
+ sprite->data3 = 0;
+ sprite->data4 = 1;
+ // fall through
+ case 1:
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ s32 i;
+ s32 r2;
+ s32 r0;
- sprite->data4 = 2;
- r2 = sprite->data1 + sprite->data3 * 32;
- r0 = sprite->data2 - sprite->data3 * 32;
- for (i = 0; i < 29; i += 2)
- {
- arr[r2 + i] = 0x3D;
- arr[r0 + i] = 0x3D;
- }
- sprite->data3++;
- if (sprite->data3 == 21)
- {
- sprite->data0++;
- sprite->data1 = 32;
- }
+ sprite->data4 = 2;
+ r2 = sprite->data1 + sprite->data3 * 32;
+ r0 = sprite->data2 - sprite->data3 * 32;
+ for (i = 0; i < 29; i += 2)
+ {
+ arr[r2 + i] = 0x3D;
+ arr[r0 + i] = 0x3D;
}
- break;
- case 2:
- sprite->data1--;
- if (sprite->data1 == 20)
- SetMainCallback2(sub_800E7C4);
- break;
+ sprite->data3++;
+ if (sprite->data3 == 21)
+ {
+ sprite->data0++;
+ sprite->data1 = 32;
+ }
+ }
+ break;
+ case 2:
+ sprite->data1--;
+ if (sprite->data1 == 20)
+ SetMainCallback2(sub_800E7C4);
+ break;
}
}
@@ -910,68 +1148,1454 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
switch (gTrainers[trainerNum].partyFlags)
{
- case 0:
+ case 0:
+ {
+ struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+ break;
+ }
+ case 1:
+ {
+ struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+
+ for (j = 0; j < 4; j++)
{
- struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
+ SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
+ SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
+ }
+ break;
+ }
+ case 2:
+ {
+ struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
- break;
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+
+ SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
+ break;
+ }
+ case 3:
+ {
+ struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+
+ SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
+ for (j = 0; j < 4; j++)
+ {
+ SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
+ SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
}
- case 1:
+ break;
+ }
+ }
+ }
+ gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle;
+ }
+ return gTrainers[trainerNum].partySize;
+}
+
+void sub_800FCD4(void)
+{
+ if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F )
+ REG_BG0CNT = 0x9800;
+}
+
+void sub_800FCFC(void)
+{
+ Random(); // unused return value
+ REG_BG0HOFS = gUnknown_030042A4;
+ REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+ REG_BG3HOFS = gUnknown_030041B0;
+ REG_BG3VOFS = gUnknown_030041B8;
+ REG_WIN0H = gUnknown_030042C4;
+ REG_WIN0V = gUnknown_03004240;
+ REG_WIN1H = gUnknown_03004200;
+ REG_WIN1V = gUnknown_03004244;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8089668();
+}
+
+void nullsub_36(struct Sprite *sprite)
+{
+}
+
+void sub_800FDB0(struct Sprite *sprite)
+{
+ if (sprite->data0 != 0)
+ sprite->pos1.x = sprite->data1 + ((sprite->data2 & 0xFF00) >> 8);
+ else
+ sprite->pos1.x = sprite->data1 - ((sprite->data2 & 0xFF00) >> 8);
+ sprite->data2 += 0x180;
+ if (sprite->affineAnimEnded)
+ {
+ FreeSpriteTilesByTag(0x2710);
+ FreeSpritePaletteByTag(0x2710);
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_800FE20(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_800FDB0;
+ PlaySE(SE_BT_START);
+}
+
+void sub_800FE40(u8 taskId)
+{
+ struct Pokemon *sp4 = NULL;
+ struct Pokemon *sp8 = NULL;
+ u8 r2 = ewram160CB;
+ u32 r7;
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ switch (gLinkPlayers[r2].lp_field_18)
+ {
+ case 0:
+ case 2:
+ sp4 = gPlayerParty;
+ sp8 = gEnemyParty;
+ break;
+ case 1:
+ case 3:
+ sp4 = gEnemyParty;
+ sp8 = gPlayerParty;
+ break;
+ }
+ }
+ else
+ {
+ sp4 = gPlayerParty;
+ sp8 = gEnemyParty;
+ }
+
+ r7 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2);
+ u16 hp = GetMonData(&sp4[i], MON_DATA_HP);
+ u32 status = GetMonData(&sp4[i], MON_DATA_STATUS);
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp != 0 && status == 0)
+ r7 |= 1 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (hp != 0 && (species == SPECIES_EGG || status != 0))
+ r7 |= 2 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp == 0)
+ r7 |= 3 << i * 2;
+ }
+ gTasks[taskId].data[3] = r7;
+
+ r7 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2);
+ u16 hp = GetMonData(&sp8[i], MON_DATA_HP);
+ u32 status = GetMonData(&sp8[i], MON_DATA_STATUS);
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp != 0 && status == 0)
+ r7 |= 1 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (hp != 0 && (species == SPECIES_EGG || status != 0))
+ r7 |= 2 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp == 0)
+ r7 |= 3 << i * 2;
+ }
+ gTasks[taskId].data[4] = r7;
+}
+
+void c2_8011A1C(void)
+{
+ s32 i;
+ u8 taskId;
+
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void *)VRAM, VRAM_SIZE);
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0xF0;
+ REG_WIN0V = 0x5051;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ gUnknown_030042C4 = 0xF0;
+ gUnknown_03004240 = 0x5051;
+ dp12_8087EA4();
+
+ for (i = 0; i < 80; i++)
+ {
+ gUnknown_03004DE0.unk0[i] = 0xF0;
+ gUnknown_03004DE0.unk780[i] = 0xF0;
+ }
+ for (i = 80; i < 160; i++)
+ {
+ asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
+ gUnknown_03004DE0.unk0[i] = 0xFF10;
+ gUnknown_03004DE0.unk780[i] = 0xFF10;
+ }
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 0;
+ gUnknown_030041B8 = 0;
+
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0);
+ InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC);
+ sub_800D6D4();
+ LoadCompressedPalette(gUnknown_08D004E0, 0, 64);
+ sub_800D74C();
+ ResetSpriteData();
+ ResetTasks();
+ sub_800E23C();
+ REG_WINOUT = 0x37;
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ SetVBlankCallback(sub_800FCFC);
+ taskId = CreateTask(sub_800DE30, 0);
+ gTasks[taskId].data[1] = 0x10E;
+ gTasks[taskId].data[2] = 0x5A;
+ gTasks[taskId].data[5] = 1;
+ sub_800FE40(taskId);
+ SetMainCallback2(sub_80101B8);
+ gUnknown_02024D1E[0] = 0;
+}
+
+void sub_80101B8(void)
+{
+ c2_081284E0();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+void c2_081284E0(void)
+{
+ switch (gUnknown_02024D1E[0])
+ {
+ case 0:
+ gUnknown_02024D1E[1] = 0xFF;
+ gUnknown_02024D1E[0]++;
+ break;
+ case 1:
+ gUnknown_02024D1E[1]--;
+ if (gUnknown_02024D1E[1] == 0)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ SetMainCallback2(gMain.savedCallback);
+ break;
+ }
+}
+
+void oac_poke_opponent(struct Sprite *sprite)
+{
+ sprite->callback = sub_8010278;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ BeginNormalPaletteFade(0x00020000, 0, 10, 10, 0x3DEF);
+}
+
+void sub_8010278(struct Sprite *sprite)
+{
+ if ((gUnknown_02024DE8 & 1) == 0)
+ {
+ sprite->pos2.x += 2;
+ if (sprite->pos2.x == 0)
+ {
+ sprite->callback = sub_80102AC;
+ PlayCry1(sprite->data2, 25);
+ }
+ }
+}
+
+void sub_80102AC(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ sub_804777C(sprite->data0);
+ sub_8043DFC(gUnknown_03004340[sprite->data0]);
+ sprite->callback = nullsub_37;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ BeginNormalPaletteFade(0x00020000, 0, 10, 0, 0x3DEF);
+ }
+}
+
+void nullsub_37(struct Sprite *sprite)
+{
+}
+
+void unref_sub_801030C(struct Sprite *sprite)
+{
+ sprite->data3 = 6;
+ sprite->data4 = 1;
+ sprite->callback = sub_8010320;
+}
+
+void sub_8010320(struct Sprite *sprite)
+{
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ sprite->data4 = 8;
+ sprite->invisible ^= 1;
+ sprite->data3--;
+ if (sprite->data3 == 0)
+ {
+ sprite->invisible = FALSE;
+ sprite->callback = nullsub_37;
+ gUnknown_03004284 = 0;
+ }
+ }
+}
+
+void sub_8010384(struct Sprite *sprite)
+{
+ u8 r6 = sprite->data0;
+ u16 species;
+ u8 yOffset;
+
+ if (ewram17800[r6].unk2 != 0)
+ species = ewram17800[r6].unk2;
+ else
+ species = sprite->data2;
+
+ GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); // Unused return value
+
+ if (species == SPECIES_UNOWN)
+ {
+ u32 personalityValue = GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY);
+ u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C);
+ u16 unownSpecies;
+
+ if (unownForm == 0)
+ unownSpecies = SPECIES_UNOWN; // Use the A Unown form
+ else
+ unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters
+
+ yOffset = gMonFrontPicCoords[unownSpecies].y;
+ }
+ else if (species == SPECIES_CASTFORM)
+ {
+ yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y;
+ }
+ else if (species > NUM_SPECIES)
+ {
+ yOffset = gMonFrontPicCoords[SPECIES_NONE].y;
+ }
+ else
+ {
+ yOffset = gMonFrontPicCoords[species].y;
+ }
+
+ sprite->data3 = 8 - yOffset / 8;
+ sprite->data4 = 1;
+ sprite->callback = sub_8010494;
+}
+
+void sub_8010494(struct Sprite *sprite)
+{
+ s32 i;
+
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ sprite->data4 = 2;
+ sprite->pos2.y += 8;
+ sprite->data3--;
+ if (sprite->data3 < 0)
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+ else
+ {
+ u8 *dst = (u8 *)gUnknown_081FAF4C[battle_get_per_side_status(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8);
+
+ for (i = 0; i < 0x100; i++)
+ *(dst++) = 0;
+ StartSpriteAnim(sprite, gBattleMonForms[sprite->data0]);
+ }
+ }
+}
+
+void sub_8010520(struct Sprite *sprite)
+{
+ sprite->data3 = 8;
+ sprite->data4 = sprite->invisible;
+ sprite->callback = sub_801053C;
+}
+
+void sub_801053C(struct Sprite *sprite)
+{
+ sprite->data3--;
+ if (sprite->data3 == 0)
+ {
+ sprite->invisible ^= 1;
+ sprite->data3 = 8;
+ }
+}
+
+void sub_8010574(struct Sprite *sprite)
+{
+ sprite->invisible = sprite->data4;
+ sprite->data4 = FALSE;
+ sprite->callback = nullsub_37;
+}
+
+void sub_80105A0(struct Sprite *sprite)
+{
+ sprite->callback = oac_poke_ally_;
+}
+
+void oac_poke_ally_(struct Sprite *sprite)
+{
+ if ((gUnknown_02024DE8 & 1) == 0)
+ {
+ sprite->pos2.x -= 2;
+ if (sprite->pos2.x == 0)
+ {
+ sprite->callback = nullsub_86;
+ sprite->data1 = 0;
+ }
+ }
+}
+
+void sub_80105DC(struct Sprite *sprite)
+{
+ sprite->callback = nullsub_86;
+}
+
+void nullsub_86(struct Sprite *sprite)
+{
+}
+
+void sub_80105EC(struct Sprite *sprite)
+{
+ if ((gUnknown_02024DE8 & 1) == 0)
+ {
+ sprite->pos2.x += sprite->data1;
+ sprite->pos2.y += sprite->data2;
+ }
+}
+
+void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d)
+{
+ u8 spriteId;
+ u8 r7;
+
+ if (b)
+ {
+ if (ewram17810[a].unk0_1)
+ return;
+ }
+ else
+ {
+ if (ewram17810[a].unk0_2)
+ return;
+ }
+
+ spriteId = CreateInvisibleSpriteWithCallback(objc_dp11b_pingpong);
+ if (b == TRUE)
+ {
+ r7 = gUnknown_03004340[a];
+ ewram17810[a].unk2 = spriteId;
+ ewram17810[a].unk0_1 = 1;
+ gSprites[spriteId].data0 = 0x80;
+ }
+ else
+ {
+ r7 = gUnknown_02024BE0[a];
+ ewram17810[a].unk3 = spriteId;
+ ewram17810[a].unk0_2 = 1;
+ gSprites[spriteId].data0 = 0xC0;
+ }
+ gSprites[spriteId].data1 = c;
+ gSprites[spriteId].data2 = d;
+ gSprites[spriteId].data3 = r7;
+ gSprites[spriteId].data4 = b;
+ gSprites[r7].pos2.x = 0;
+ gSprites[r7].pos2.y = 0;
+}
+
+void dp11b_obj_free(u8 a, u8 b)
+{
+ u8 r4;
+
+ if (b == TRUE)
+ {
+ if (!ewram17810[a].unk0_1)
+ return;
+ r4 = gSprites[ewram17810[a].unk2].data3;
+ DestroySprite(&gSprites[ewram17810[a].unk2]);
+ ewram17810[a].unk0_1 = 0;
+ }
+ else
+ {
+ if (!ewram17810[a].unk0_2)
+ return;
+ r4 = gSprites[ewram17810[a].unk3].data3;
+ DestroySprite(&gSprites[ewram17810[a].unk3]);
+ ewram17810[a].unk0_2 = 0;
+ }
+ gSprites[r4].pos2.x = 0;
+ gSprites[r4].pos2.y = 0;
+}
+
+void objc_dp11b_pingpong(struct Sprite *sprite)
+{
+ u8 spriteId = sprite->data3;
+ s32 var;
+
+ if (sprite->data4 == 1)
+ var = sprite->data0;
+ else
+ var = sprite->data0;
+
+ gSprites[spriteId].pos2.y = Sin(var, sprite->data2) + sprite->data2;
+ sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF;
+}
+
+void nullsub_41(void)
+{
+}
+
+void sub_8010800(void)
+{
+ sub_8010874();
+ gUnknown_02024D1E[1] = 0;
+ gUnknown_030042D4 = bc_8012FAC;
+}
+
+void sub_8010824(void)
+{
+ gUnknown_030042D4();
+ gUnknown_02024A60 = 0;
+
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ gUnknown_03004330[gUnknown_02024A60]();
+}
+
+void sub_8010874(void)
+{
+ s32 i;
+ s32 j;
+ u8 *r4;
+
+ sub_801365C(0);
+ sub_801377C();
+
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_02024C98[i] = 0;
+
+ r4 = (u8 *)&gUnknown_02024CA8[i];
+ for (j = 0; j < (u32)0x1C; j++)
+ r4[j] = 0;
+
+ gUnknown_02024CA8[i].unk16 = 2;
+ gUnknown_02024C70[i] = 0;
+ gUnknown_02024C34[i] = 0;
+ gUnknown_02024C3C[i] = 0;
+ gUnknown_02024C44[i] = 0;
+ gUnknown_02024C4C[i] = 0;
+ gUnknown_02024C5C[i] = 0xFF;
+ gUnknown_02024C54[i] = 0;
+ gUnknown_02024C2C[i] = 0;
+ ewram17100[i] = 0;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ gUnknown_02024C7A[i] = 0;
+
+ r4 = (u8 *)&gUnknown_02024C80[i];
+ for (j = 0; j < (u32)12; j++)
+ r4[j] = 0;
+ }
+
+ gPlayerMonIndex = 0;
+ gEnemyMonIndex = 0;
+ gBattleWeather = 0;
+
+ r4 = (u8 *)&gUnknown_02024DBC;
+ for (i = 0; i < (u32)0x2C; i++)
+ r4[i] = 0;
+
+ gUnknown_02024C6C = 0;
+ if ((gBattleTypeFlags & 2) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE)
+ gUnknown_02024C6C = 0x80;
+ ewram16084 = gSaveBlock2.optionsBattleStyle;
+ gUnknown_02024C0E = 0;
+ gUnknown_02024D26 = 0;
+ gUnknown_02024A64 = 0;
+ gUnknown_02024D1A = 0;
+ ewram17130 = 0;
+ ewram17160 = 0;
+ for (i = 0; i < 8; i++)
+ gUnknown_02024D1E[i] = 0;
+ gUnknown_02024D18 = 0;
+ gBattleMoveDamage = 0;
+ gUnknown_02024DE8 = 0;
+ ewram16002 = 0;
+ ewram160A1 = 0;
+ gUnknown_03004324 = 0;
+ gUnknown_02024C0C = 0;
+ ewram16078 = 0;
+ ewram16086 = 0;
+ ewram16087 = 0;
+ ewram16089 = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275;
+ ewram16088 = 3;
+ ewram1601B = 0;
+ ewram16056 = 1;
+
+ for (i = 0; i < 8; i++)
+ {
+ ewram[i + 0x160AC] = 0;
+ ewram[i + 0x160CC] = 0;
+ ewram[i + 0x160E8] = 0;
+ ewram[i + 0x160F0] = 0;
+ ewram[i + 0x16100] = 0;
+ ewram[i + 0x16108] = 0;
+ }
+
+ ewram160C8 = 6;
+ ewram160C9 = 6;
+ ewram16113 = 0;
+ for (i = 0; i < 11; i++)
+ gUnknown_030042E0.unk36[i] = 0;
+ gUnknown_030042E0.unk13 = 0;
+ gUnknown_030042E0.unk0 = 0;
+ gUnknown_030042E0.unk1 = 0;
+ gUnknown_030042E0.unk2 = 0;
+ gUnknown_030042E0.unk3 = 0;
+ gUnknown_030042E0.unk4 = 0;
+ gUnknown_030042E0.unk5_0 = 0;
+ gUnknown_030042E0.unk5_1 = 0;
+ gUnknown_030042E0.unk20 = 0;
+ gUnknown_030042E0.unk22 = 0;
+ gUnknown_030042E0.unk24 = 0;
+ gUnknown_030042E0.unk6 = 0;
+ gUnknown_030042E0.unk26 = 0;
+ gUnknown_030042E0.unk28 = 0;
+ for (i = 0; i < 10; i++)
+ {
+ gUnknown_030042E0.unk8[i] = 0;
+ gUnknown_030042E0.unk14[i] = 0;
+ gUnknown_030042E0.unk2A[i] = 0;
+ }
+}
+
+void sub_8010B88(void)
+{
+ struct UnknownStruct4 sp0 = gUnknown_02024CA8[gUnknown_02024A60];
+ s32 i;
+ u8 *ptr;
+ u32 *ptr2;
+
+ if (gBattleMoves[gUnknown_02024BE6].effect != 0x7F)
+ {
+ for (i = 0; i < 8; i++)
+ gBattleMons[gUnknown_02024A60].statStages[i] = 6;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i];
+
+ if ((sp20->unk0 & 0x04000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60)
+ sp20->unk0 &= ~0x04000000;
+ if ((gUnknown_02024C98[i] & 0x18) && gUnknown_02024CA8[i].unk15 == gUnknown_02024A60)
+ {
+ gUnknown_02024C98[i] &= ~0x18;
+ gUnknown_02024CA8[i].unk15 = 0;
+ }
+ }
+ }
+ if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F)
+ {
+ gBattleMons[gUnknown_02024A60].status2 &= 0x15100007;
+ gUnknown_02024C98[gUnknown_02024A60] &= 0x3043F;
+
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) != battle_side_get_owner(i)
+ && (gUnknown_02024C98[i] & 0x18) != 0
+ && (gUnknown_02024CA8[i].unk15 == gUnknown_02024A60))
+ {
+ gUnknown_02024C98[i] &= ~0x18;
+ gUnknown_02024C98[i] |= 0x10;
+ }
+ }
+ }
+ else
+ {
+ gBattleMons[gUnknown_02024A60].status2 = 0;
+ gUnknown_02024C98[gUnknown_02024A60] = 0;
+ }
+
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if (gUnknown_02024AD0[i].unk0 & (gBitTable[gUnknown_02024A60] << 16))
+ gUnknown_02024AD0[i].unk0 &= ~(gBitTable[gUnknown_02024A60] << 16);
+ if ((gUnknown_02024AD0[i].unk0 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60)
+ gUnknown_02024AD0[i].unk0 &= ~0xE000;
+ }
+
+ gUnknown_02024E60[gUnknown_02024A60] = 0;
+ gUnknown_02024E64[gUnknown_02024A60] = 0;
+
+ ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x1C; i++)
+ ptr[i] = 0;
+
+ if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F)
+ {
+ gUnknown_02024CA8[gUnknown_02024A60].unkA = sp0.unkA;
+ gUnknown_02024CA8[gUnknown_02024A60].unk15 = sp0.unk15;
+ gUnknown_02024CA8[gUnknown_02024A60].unkF_0 = sp0.unkF_0;
+ gUnknown_02024CA8[gUnknown_02024A60].unkF_4 = sp0.unkF_4;
+ }
+
+ gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2;
+ gUnknown_02024C34[gUnknown_02024A60] = 0;
+ gUnknown_02024C3C[gUnknown_02024A60] = 0;
+ gUnknown_02024C44[gUnknown_02024A60] = 0;
+ gUnknown_02024C4C[gUnknown_02024A60] = 0;
+ gUnknown_02024C2C[gUnknown_02024A60] = 0;
+ gUnknown_02024C5C[gUnknown_02024A60] = 0xFF;
+
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0;
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0;
+
+ ptr2 = (u32 *)(ewram + 0x17100);
+ ptr2[gUnknown_02024A60] = 0;
+
+ gUnknown_02024BE6 = 0;
+}
+
+void sub_8010F48(void)
+{
+ s32 i;
+ u8 *ptr;
+ u32 *ptr2;
+
+ for (i = 0; i < 8; i++)
+ gBattleMons[gUnknown_02024A60].statStages[i] = 6;
+ gBattleMons[gUnknown_02024A60].status2 = 0;
+ gUnknown_02024C98[gUnknown_02024A60] = 0;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if ((gBattleMons[i].status2 & 0x4000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60)
+ gBattleMons[i].status2 &= ~0x4000000;
+ if (gBattleMons[i].status2 & (gBitTable[gUnknown_02024A60] << 16))
+ gBattleMons[i].status2 &= ~(gBitTable[gUnknown_02024A60] << 16);
+ if ((gBattleMons[i].status2 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60)
+ gBattleMons[i].status2 &= ~0xE000;
+ }
+ gUnknown_02024E60[gUnknown_02024A60] = 0;
+ gUnknown_02024E64[gUnknown_02024A60] = 0;
+
+ ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x1C; i++)
+ ptr[i] = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_0 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_1 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_2 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_3 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_4 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_5 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_6 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_7 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_0 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_1 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_2 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_3 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_5 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_6 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_7 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_0 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_1 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_2 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_3 = 0;
+
+ gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2;
+ gUnknown_02024C34[gUnknown_02024A60] = 0;
+ gUnknown_02024C3C[gUnknown_02024A60] = 0;
+ gUnknown_02024C44[gUnknown_02024A60] = 0;
+ gUnknown_02024C4C[gUnknown_02024A60] = 0;
+ gUnknown_02024C2C[gUnknown_02024A60] = 0;
+ gUnknown_02024C5C[gUnknown_02024A60] = 0xFF;
+
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0;
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0;
+
+ ptr2 = (u32 *)(ewram + 0x17100);
+ ptr2[gUnknown_02024A60] = 0;
+
+ gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1;
+ gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2;
+}
+
+void bc_8012FAC(void)
+{
+ switch (gUnknown_02024D1E[0])
+ {
+ case 0:
+ gUnknown_02024A60 = gUnknown_02024D1E[1];
+ dp01_build_cmdbuf_x00_a_b_0(0, 0, 0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ gUnknown_02024D1E[0]++;
+ break;
+ case 1:
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_02024D1E[1]++;
+ if (gUnknown_02024D1E[1] == gUnknown_02024A68)
+ gUnknown_030042D4 = bc_load_battlefield;
+ else
+ gUnknown_02024D1E[0] = 0;
+ }
+ break;
+ }
+}
+
+void bc_load_battlefield(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_02024A60 = battle_get_side_with_given_state(0);
+ dp01_build_cmdbuf_x2E_a(0, gBattleTerrain);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ gUnknown_030042D4 = sub_8011384;
+ gUnknown_02024D1E[0] = 0;
+ gUnknown_02024D1E[1] = 0;
+ }
+}
+
+void sub_8011384(void)
+{
+ u8 *ptr;
+ s32 i;
+
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ && battle_side_get_owner(gUnknown_02024A60) == 0)
+ {
+ ptr = (u8 *)&gBattleMons[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x58; i++)
+ ptr[i] = 0;
+ }
+ else
+ {
+ u8 r0;
+
+ ptr = (u8 *)&gBattleMons[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x58; i++)
+ ptr[i] = gUnknown_02024260[gUnknown_02024A60][4 + i];
+
+ gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1;
+ gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2;
+ gBattleMons[gUnknown_02024A60].ability = GetAbilityBySpecies(gBattleMons[gUnknown_02024A60].species, gBattleMons[gUnknown_02024A60].altAbility);
+ r0 = battle_side_get_owner(gUnknown_02024A60);
+ ewram160BC[r0] = gBattleMons[gUnknown_02024A60].hp;
+ for (i = 0; i < 8; i++)
+ gBattleMons[gUnknown_02024A60].statStages[i] = 6;
+ gBattleMons[gUnknown_02024A60].status2 = 0;
+ }
+
+ if (battle_get_per_side_status(gUnknown_02024A60) == 0)
+ {
+ dp01_build_cmdbuf_x07_7_7_7(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 1)
{
- struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
+ dp01_build_cmdbuf_x07_7_7_7(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ if (battle_side_get_owner(gUnknown_02024A60) == 1
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
+ sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2);
+ }
+ else
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) == 1
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
+ {
+ sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2);
+ dp01_build_cmdbuf_x04_4_4_4(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 2
+ || battle_get_per_side_status(gUnknown_02024A60) == 3)
+ {
+ dp01_build_cmdbuf_x07_7_7_7(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ }
+ gUnknown_030042D4 = bc_801333C;
+ }
+}
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+void bc_801333C(void)
+{
+ s32 i;
- for (j = 0; j < 4; j++)
- {
- SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
- SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
- }
- break;
+ if (gUnknown_02024A64 == 0)
+ {
+ struct
+ {
+ u16 hp;
+ u32 status;
+ } sp0[6];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == 0
+ || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ sp0[i].hp = 0xFFFF;
+ sp0[i].status = 0;
}
- case 2:
+ else
{
- struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
+ sp0[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ sp0[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS);
+ }
+ }
+ gUnknown_02024A60 = battle_get_side_with_given_state(1);
+ dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == 0
+ || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ sp0[i].hp = 0xFFFF;
+ sp0[i].status = 0;
+ }
+ else
+ {
+ sp0[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ sp0[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+ }
+ }
+ gUnknown_02024A60 = battle_get_side_with_given_state(0);
+ dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
- SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
- break;
+ gUnknown_030042D4 = bc_battle_begin_message;
+ }
+ else
+ {
+ // The array gets set here, but nothing is ever done with it.
+ // Likely unfinished code.
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == 0
+ || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ sp0[i].hp = 0xFFFF;
+ sp0[i].status = 0;
}
- case 3:
+ else
{
- struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
+ sp0[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ sp0[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+ }
+ }
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+ gUnknown_030042D4 = bc_8013568;
+ }
+ }
+}
- SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
- for (j = 0; j < 4; j++)
- {
- SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
- SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
- }
- break;
+void bc_battle_begin_message(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_02024A60 = battle_get_side_with_given_state(1);
+ b_std_message(0, gUnknown_02024A60);
+ gUnknown_030042D4 = sub_8011800;
+ }
+}
+
+void bc_8013568(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_030042D4 = sub_8011970;
+ b_std_message(0, 0);
+ }
+}
+
+void sub_8011800(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ b_std_message(1, battle_get_side_with_given_state(1));
+ gUnknown_030042D4 = sub_8011834;
+ }
+}
+
+void sub_8011834(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 1)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ && battle_get_per_side_status(gUnknown_02024A60) == 3)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ gUnknown_030042D4 = bc_801362C;
+ }
+}
+
+void bc_801362C(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) == 1
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
+ sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2);
+ }
+ gUnknown_030042D4 = sub_8011970;
+ }
+}
+
+void unref_sub_8011950(void)
+{
+ if (gUnknown_02024A64 == 0)
+ gUnknown_030042D4 = sub_8011970;
+}
+
+void sub_8011970(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
+ b_std_message(1, battle_get_side_with_given_state(0));
+ gUnknown_030042D4 = sub_80119B4;
+ }
+}
+
+void sub_80119B4(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 0)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ && battle_get_per_side_status(gUnknown_02024A60) == 2)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ ewram16058 = 0;
+ ewram160F9 = 0;
+ ewram160E6 = 0;
+ gUnknown_030042D4 = sub_8011B00;
+ }
+}
+
+void unref_sub_8011A68(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) == 0)
+ {
+ sub_800C704(0, gUnknown_02024A6A[gUnknown_02024A60], 0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ ewram16058 = 0;
+ ewram160F9 = 0;
+ ewram160E6 = 0;
+ gUnknown_030042D4 = sub_8011B00;
+ }
+}
+
+void sub_8011B00(void)
+{
+ s32 i;
+ s32 j;
+ u8 r9 = 0;
+
+ if (gUnknown_02024A64 == 0)
+ {
+ if (ewram16058 == 0)
+ {
+ for (i = 0; i < gUnknown_02024A68; i++)
+ gUnknown_02024A7A[i] = i;
+ for (i = 0; i < gUnknown_02024A68 - 1; i++)
+ {
+ for (j = i + 1; j < gUnknown_02024A68; j++)
+ {
+ if (b_first_side(gUnknown_02024A7A[i], gUnknown_02024A7A[j], 1) != 0)
+ sub_8012FBC(i, j);
}
}
}
- gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle;
+ if (ewram160E6 == 0 && sub_8018324(0, 0, 0, 0xFF, 0) != 0)
+ {
+ ewram160E6 = 1;
+ return;
+ }
+ while (ewram16058 < gUnknown_02024A68)
+ {
+ if (sub_8018324(0, gUnknown_02024A7A[ewram16058], 0, 0, 0) != 0)
+ r9++;
+ ewram16058++;
+ if (r9 != 0)
+ return;
+ }
+ if (sub_8018324(9, 0, 0, 0, 0) != 0)
+ return;
+ if (sub_8018324(11, 0, 0, 0, 0) != 0)
+ return;
+ while (ewram160F9 < gUnknown_02024A68)
+ {
+ if (sub_801A02C(0, gUnknown_02024A7A[ewram160F9], 0) != 0)
+ r9++;
+ ewram160F9++;
+ if (r9 != 0)
+ return;
+ }
+ // Absolutely pointless for-loop that somehow doesn't get optimized out
+ for (i = 0; i < gUnknown_02024A68; i++)
+ ;
+ for (i = 0; i < 4; i++)
+ {
+ ewram[0x16068 + i] = 6;
+ gUnknown_02024C18[i] = 0xFF;
+ gUnknown_02024C60[i] = 0;
+ }
+ sub_801365C(0);
+ sub_801377C();
+ ewram160A6 = gUnknown_02024C0C;
+ gUnknown_030042D4 = sub_8012324;
+ sub_80156DC();
+ for (i = 0; i < 8; i++)
+ gUnknown_02024D1E[i] = 0;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ gBattleMons[i].status2 &= ~8;
+ ewram16000 = 0;
+ ewram16001 = 0;
+ ewram16110 = 0;
+ ewram16111 = 0;
+ ewram1600C = 0;
+ ewram16059 = 0;
+ ewram1600E = 0;
+ gBattleMoveFlags = 0;
+ gUnknown_02024D1C = Random();
}
- return gTrainers[trainerNum].partySize;
-} \ No newline at end of file
+}
+
+void bc_8013B1C(void)
+{
+ s32 i;
+
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_030042D4 = sub_8011E8C;
+ for (i = 0; i < 8; i++)
+ gUnknown_02024D1E[i] = 0;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ gBattleMons[i].status2 &= ~8;
+ if ((gBattleMons[i].status1 & 7) && (gBattleMons[i].status2 & 0x1000))
+ b_cancel_multi_turn_move_maybe(i);
+ }
+ ewram16000 = 0;
+ ewram16001 = 0;
+ ewram16110 = 0;
+ ewram16111 = 0;
+ ewram1600E = 0;
+ gBattleMoveFlags = 0;
+ }
+}
+
+void sub_8011E8C(void)
+{
+ s32 i;
+
+ sub_801365C(1);
+ if (gUnknown_02024D26 == 0)
+ {
+ if (sub_8015DFC() != 0)
+ return;
+ if (sub_8016558() != 0)
+ return;
+ }
+ if (sub_80173A4() != 0)
+ return;
+ ewram16059 = 0;
+ if (sub_80170DC() != 0)
+ return;
+ sub_801365C(0);
+ gUnknown_02024C6C &= ~0x200;
+ gUnknown_02024C6C &= ~0x80000;
+ gUnknown_02024C6C &= ~0x400000;
+ gUnknown_02024C6C &= ~0x100000;
+ ewram16002 = 0;
+ ewram160A1 = 0;
+ ewram1600C = 0;
+ gBattleMoveDamage = 0;
+ gBattleMoveFlags = 0;
+ for (i = 0; i < 5; i++)
+ gUnknown_02024D1E[i] = 0;
+ if (gUnknown_02024D26 != 0)
+ {
+ gUnknown_02024A7F = 12;
+ gUnknown_030042D4 = sub_80138F0;
+ return;
+ }
+ if (gUnknown_030042E0.unk13 < 0xFF)
+ gUnknown_030042E0.unk13++;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ gUnknown_02024C18[i] = 0xFF;
+ gUnknown_02024C60[i] = 0;
+ }
+ for (i = 0; i < 4; i++)
+ ewram[0x16068 + i] = 6;
+ ewram160A6 = gUnknown_02024C0C;
+ gUnknown_030042D4 = sub_8012324;
+ gUnknown_02024D1C = Random();
+}
+
+u8 sub_8012028(void)
+{
+ u8 r2;
+ u8 r6;
+ s32 i;
+
+ if (gBattleMons[gUnknown_02024A60].item == 0xAF)
+ r2 = gEnigmaBerries[gUnknown_02024A60].holdEffect;
+ else
+ r2 = ItemId_GetHoldEffect(gBattleMons[gUnknown_02024A60].item);
+ gUnknown_02024C0B = gUnknown_02024A60;
+ if (r2 == 0x25)
+ return 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ return 0;
+ if (gBattleMons[gUnknown_02024A60].ability == ABILITY_RUN_AWAY)
+ return 0;
+ r6 = battle_side_get_owner(gUnknown_02024A60);
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if (r6 != battle_side_get_owner(i)
+ && gBattleMons[i].ability == 0x17)
+ {
+ ewram16003 = i;
+ byte_2024C06 = gBattleMons[i].ability;
+ gUnknown_02024D1E[5] = 2;
+ return 2;
+ }
+ if (r6 != battle_side_get_owner(i)
+ && gBattleMons[gUnknown_02024A60].ability != ABILITY_LEVITATE
+ && gBattleMons[gUnknown_02024A60].type1 != 2
+ && gBattleMons[gUnknown_02024A60].type2 != 2
+ && gBattleMons[i].ability == 0x47)
+ {
+ ewram16003 = i;
+ byte_2024C06 = gBattleMons[i].ability;
+ gUnknown_02024D1E[5] = 2;
+ return 2;
+ }
+ }
+ i = sub_8018324(15, gUnknown_02024A60, 0x2A, 0, 0);
+ if (i != 0 && (gBattleMons[gUnknown_02024A60].type1 == 8 || gBattleMons[gUnknown_02024A60].type2 == 8))
+ {
+ ewram16003 = i - 1;
+ byte_2024C06 = gBattleMons[i - 1].ability;
+ gUnknown_02024D1E[5] = 2;
+ return 2;
+ }
+ if ((gBattleMons[gUnknown_02024A60].status2 & 0x0400E000) || (gUnknown_02024C98[gUnknown_02024A60] & 0x400))
+ {
+ gUnknown_02024D1E[5] = 0;
+ return 1;
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
+ {
+ gUnknown_02024D1E[5] = 1;
+ return 1;
+ }
+ return 0;
+}
+
+void sub_8012258(u8 a)
+{
+ s32 i;
+ u8 r4;
+ u8 r1;
+
+ for (i = 0; i < 3; i++)
+ gUnknown_02038470[i] = ewram[0x1606C + i + a * 3];
+ r4 = pokemon_order_func(gUnknown_02024A6A[a]);
+ r1 = pokemon_order_func(ewram[0x16068 + a]);
+ sub_8094C98(r4, r1);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ ewram[0x1606C + i + a * 3] = gUnknown_02038470[i];
+ ewram[0x1606C + i + (a ^ 2) * 3] = gUnknown_02038470[i];
+ }
+ }
+ else
+ {
+ for (i = 0; i < 3; i++)
+ {
+ ewram[0x1606C + i + a * 3] = gUnknown_02038470[i];
+ }
+ }
+}
+
+/*
+void sub_8012324(void)
+{
+ u8 r5;
+
+ gUnknown_02024D1E[4] = 0;
+ // inverted loop
+ //_0801234C
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ r5 = battle_get_per_side_status(gUnknown_02024A60);
+ switch (gUnknown_02024D1E[gUnknown_02024A60])
+ {
+ case 0:
+ ewram[0x016068 + gUnknown_02024A60] = 6;
+ if (!(gBattleTypeFlags & 0x40)
+ && (r5 & 2)
+ && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)])
+ && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4)
+ break;
+ //_080123F8
+ if (ewram160A6 & gBitTable[gUnknown_02024A60])
+ {
+ gUnknown_02024C18[gUnknown_02024A60] = 13;
+ if (!(gBattleTypeFlags & 0x40))
+ gUnknown_02024D1E[gUnknown_02024A60] = 4;
+ //_08012454
+ else
+ gUnknown_02024D1E[gUnknown_02024A60] = 3;
+ break;
+ }
+ //_08012468
+ if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000)
+ || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000))
+ {
+ gUnknown_02024C18[gUnknown_02024A60] = 0;
+ gUnknown_02024D1E[gUnknown_02024A60] = 3;
+ }
+ else
+ {
+ dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8));
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ gUnknown_02024D1E[gUnknown_02024A60]++;
+ }
+ break;
+ case 1:
+ }
+ }
+}
+*/
diff --git a/src/rom3.c b/src/rom3.c
index 0169128cb..ef7b9a7ed 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -582,7 +582,7 @@ void sub_800C47C(u8 taskId)
}
}
-void dp01_build_cmdbuf_x00_a_b_0(u8 a, int b, int c)
+void dp01_build_cmdbuf_x00_a_b_0(u8 a, u8 b, u8 c)
{
gUnknown_03004040[0] = 0;
gUnknown_03004040[1] = b;
@@ -591,7 +591,7 @@ void dp01_build_cmdbuf_x00_a_b_0(u8 a, int b, int c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, int b, int c)
+void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c)
{
gUnknown_03004040[0] = 1;
gUnknown_03004040[1] = b;
@@ -600,7 +600,7 @@ void dp01_build_cmdbuf_x01_a_b_0(u8 a, int b, int c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, int b, int c, u8 d, u8 *e)
+void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, u8 b, u8 c, u8 d, u8 *e)
{
int i;
@@ -612,7 +612,7 @@ void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, int b, int c, u8 d, u8 *e)
dp01_prepare_buffer(a, gUnknown_03004040, d + 3);
}
-void unref_sub_800C6A4(u8 a, int b, u8 c, u8 *d)
+void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
{
int i;
@@ -633,7 +633,7 @@ void dp01_build_cmdbuf_x04_4_4_4(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void sub_800C704(u8 a, int b, int c)
+void sub_800C704(u8 a, u8 b, u8 c)
{
gUnknown_03004040[0] = 5;
gUnknown_03004040[1] = b;
@@ -642,7 +642,7 @@ void sub_800C704(u8 a, int b, int c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x06_a(u8 a, int b)
+void dp01_build_cmdbuf_x06_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 6;
gUnknown_03004040[1] = b;
@@ -703,7 +703,7 @@ void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x0D_a(u8 a, int b)
+void dp01_build_cmdbuf_x0D_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 13;
gUnknown_03004040[1] = b;
@@ -721,7 +721,7 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c)
dp01_prepare_buffer(a, gUnknown_03004040, b * 3 + 2);
}
-void dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes(u8 a, u16 b, u8 c, u16 d, int e, u8 f, u8 *g)
+void dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
{
gUnknown_03004040[0] = 15;
gUnknown_03004040[1] = b;
@@ -1039,7 +1039,7 @@ _0800CB54: .4byte gUnknown_030041C0\n\
.syntax divided\n");
}
-void dp01_build_cmdbuf_x12_a_bb(u8 a, int b, u16 c)
+void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c)
{
gUnknown_03004040[0] = 18;
gUnknown_03004040[1] = b;
@@ -1048,14 +1048,14 @@ void dp01_build_cmdbuf_x12_a_bb(u8 a, int b, u16 c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void unref_sub_800CB84(u8 a, int b)
+void unref_sub_800CB84(u8 a, u8 b)
{
gUnknown_03004040[0] = 19;
gUnknown_03004040[1] = b;
dp01_prepare_buffer(a, gUnknown_03004040, 2);
}
-void sub_800CBA4(u8 a, int b, int c, u8 *d)
+void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
{
u32 i;
@@ -1078,7 +1078,7 @@ void sub_800CBE0(u8 a, u8 *b)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, int b, int c, int d, u8 *e)
+void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
{
int i;
@@ -1109,7 +1109,7 @@ void dp01_build_cmdbuf_x18_0_aa_health_bar_update(u8 a, s16 b)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x19_a_bb(u8 a, int b, s16 c)
+void dp01_build_cmdbuf_x19_a_bb(u8 a, u8 b, s16 c)
{
gUnknown_03004040[0] = 25;
gUnknown_03004040[1] = b;
@@ -1132,7 +1132,7 @@ void dp01_build_cmdbuf_x1A_aaaa_bbbb(u8 a, u32 b, u32 c)
dp01_prepare_buffer(a, gUnknown_03004040, 9);
}
-void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, int b, u32 c)
+void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, u8 b, u32 c)
{
gUnknown_03004040[0] = 27;
gUnknown_03004040[1] = b;
@@ -1143,7 +1143,7 @@ void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, int b, u32 c)
dp01_prepare_buffer(a, gUnknown_03004040, 6);
}
-void dp01_build_cmdbuf_x1C_a(u8 a, int b)
+void dp01_build_cmdbuf_x1C_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 28;
gUnknown_03004040[1] = b;
@@ -1203,7 +1203,7 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c)
dp01_prepare_buffer(a, gUnknown_03004040, b + 3);
}
-void dp01_build_cmdbuf_x21_a_bb(u8 a, int b, u16 c)
+void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c)
{
gUnknown_03004040[0] = 33;
gUnknown_03004040[1] = b;
@@ -1212,7 +1212,7 @@ void dp01_build_cmdbuf_x21_a_bb(u8 a, int b, u16 c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, int b, u8 *c)
+void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
{
int i;
@@ -1250,7 +1250,7 @@ void dp01_build_cmdbuf_x25_25_25_25(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x26_a(u8 a, int b)
+void dp01_build_cmdbuf_x26_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 38;
gUnknown_03004040[1] = b;
@@ -1320,7 +1320,7 @@ void dp01_build_cmdbuf_x2D_2D_2D_2D(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x2E_a(u8 a, int b)
+void dp01_build_cmdbuf_x2E_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 46;
gUnknown_03004040[1] = b;
@@ -1367,7 +1367,7 @@ void dp01_build_cmdbuf_x32_32_32_32(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x33_a_33_33(u8 a, int b)
+void dp01_build_cmdbuf_x33_a_33_33(u8 a, u8 b)
{
gUnknown_03004040[0] = 51;
gUnknown_03004040[1] = b;
@@ -1376,7 +1376,7 @@ void dp01_build_cmdbuf_x33_a_33_33(u8 a, int b)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, int b, u16 c)
+void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, u8 b, u16 c)
{
gUnknown_03004040[0] = 52;
gUnknown_03004040[1] = b;
@@ -1385,21 +1385,21 @@ void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, int b, u16 c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void sub_800D1D8(u8 a, int b)
+void sub_800D1D8(u8 a, u8 b)
{
gUnknown_03004040[0] = 53;
gUnknown_03004040[1] = b;
dp01_prepare_buffer(a, gUnknown_03004040, 2);
}
-void dp01_build_cmdbuf_x38_a(u8 a, int b)
+void dp01_build_cmdbuf_x38_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 54;
gUnknown_03004040[1] = b;
dp01_prepare_buffer(a, gUnknown_03004040, 2);
}
-void dp01_build_cmdbuf_x37_a(u8 a, int b)
+void dp01_build_cmdbuf_x37_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 55;
gUnknown_03004040[1] = b;
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index b216bbe97..437c62400 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 gCastformFrontSpriteCoords gUnknownCastformCoords_0837F598
#define gCastformElevations gUnknownCastformData_0837F5A8
#define gCastformBackSpriteYCoords gUnknown_0837F5AC
#define gTransformPersonalities gUnknown_02024E70