summaryrefslogtreecommitdiff
path: root/asm/reshow_battle_screen.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/reshow_battle_screen.s')
-rw-r--r--asm/reshow_battle_screen.s1097
1 files changed, 1097 insertions, 0 deletions
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
new file mode 100644
index 000000000..59b08dd01
--- /dev/null
+++ b/asm/reshow_battle_screen.s
@@ -0,0 +1,1097 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start nullsub_14
+nullsub_14: @ 807AD54
+ bx lr
+ thumb_func_end nullsub_14
+
+ thumb_func_start ReshowBattleScreenAfterMenu
+ReshowBattleScreenAfterMenu: @ 807AD58
+ push {lr}
+ ldr r2, _0807AD90 @ =gPaletteFade
+ ldrb r0, [r2, 0x8]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2, 0x8]
+ movs r0, 0
+ bl SetHBlankCallback
+ movs r0, 0
+ bl SetVBlankCallback
+ ldr r0, _0807AD94 @ =REG_MOSAIC
+ movs r2, 0
+ strh r2, [r0]
+ ldr r0, _0807AD98 @ =0x02000000
+ ldr r3, _0807AD9C @ =0x0001ffff
+ adds r1, r0, r3
+ strb r2, [r1]
+ ldr r1, _0807ADA0 @ =0x0001fffe
+ adds r0, r1
+ strb r2, [r0]
+ ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807AD90: .4byte gPaletteFade
+_0807AD94: .4byte REG_MOSAIC
+_0807AD98: .4byte 0x02000000
+_0807AD9C: .4byte 0x0001ffff
+_0807ADA0: .4byte 0x0001fffe
+_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu
+ thumb_func_end ReshowBattleScreenAfterMenu
+
+ thumb_func_start CB2_ReshowBattleScreenAfterMenu
+CB2_ReshowBattleScreenAfterMenu: @ 807ADA8
+ push {r4-r7,lr}
+ sub sp, 0x8
+ ldr r0, _0807ADC4 @ =0x02000000
+ ldr r1, _0807ADC8 @ =0x0001ffff
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x13
+ bls _0807ADBA
+ b _0807B010
+_0807ADBA:
+ lsls r0, 2
+ ldr r1, _0807ADCC @ =_0807ADD0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0807ADC4: .4byte 0x02000000
+_0807ADC8: .4byte 0x0001ffff
+_0807ADCC: .4byte _0807ADD0
+ .align 2, 0
+_0807ADD0:
+ .4byte _0807AE20
+ .4byte _0807AE84
+ .4byte _0807AE9C
+ .4byte _0807AEC8
+ .4byte _0807AECE
+ .4byte _0807AEE0
+ .4byte _0807AEE6
+ .4byte _0807AF18
+ .4byte _0807AF1C
+ .4byte _0807AF20
+ .4byte _0807AF24
+ .4byte _0807AF48
+ .4byte _0807AF50
+ .4byte _0807AF58
+ .4byte _0807AF60
+ .4byte _0807AF68
+ .4byte _0807AF70
+ .4byte _0807AF78
+ .4byte _0807AF80
+ .4byte _0807AF88
+_0807AE20:
+ bl dp12_8087EA4
+ ldr r4, _0807AE5C @ =gWindowConfig_81E6C58
+ adds r0, r4, 0
+ bl SetUpWindowConfig
+ bl ResetPaletteFade
+ ldr r0, _0807AE60 @ =gUnknown_03004210
+ adds r1, r4, 0
+ bl InitWindowFromConfig
+ ldr r0, _0807AE64 @ =gUnknown_030042A4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _0807AE68 @ =gUnknown_030042A0
+ strh r1, [r0]
+ ldr r0, _0807AE6C @ =gUnknown_030042C0
+ strh r1, [r0]
+ ldr r0, _0807AE70 @ =gUnknown_030041B4
+ strh r1, [r0]
+ ldr r0, _0807AE74 @ =gUnknown_03004288
+ strh r1, [r0]
+ ldr r0, _0807AE78 @ =gUnknown_03004280
+ strh r1, [r0]
+ ldr r0, _0807AE7C @ =gUnknown_030041B0
+ strh r1, [r0]
+ ldr r0, _0807AE80 @ =gUnknown_030041B8
+ strh r1, [r0]
+ b _0807B040
+ .align 2, 0
+_0807AE5C: .4byte gWindowConfig_81E6C58
+_0807AE60: .4byte gUnknown_03004210
+_0807AE64: .4byte gUnknown_030042A4
+_0807AE68: .4byte gUnknown_030042A0
+_0807AE6C: .4byte gUnknown_030042C0
+_0807AE70: .4byte gUnknown_030041B4
+_0807AE74: .4byte gUnknown_03004288
+_0807AE78: .4byte gUnknown_03004280
+_0807AE7C: .4byte gUnknown_030041B0
+_0807AE80: .4byte gUnknown_030041B8
+_0807AE84:
+ movs r0, 0
+ str r0, [sp, 0x4]
+ movs r1, 0xC0
+ lsls r1, 19
+ ldr r2, _0807AE98 @ =0x01006000
+ add r0, sp, 0x4
+ bl CpuFastSet
+ b _0807B040
+ .align 2, 0
+_0807AE98: .4byte 0x01006000
+_0807AE9C:
+ ldr r5, _0807AEBC @ =0x02000000
+ ldr r0, _0807AEC0 @ =0x0001fffe
+ adds r4, r5, r0
+ ldrb r0, [r4]
+ bl sub_800E414
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807AEF8
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r0, _0807AEC4 @ =0x0001ffff
+ adds r1, r5, r0
+ b _0807AF38
+ .align 2, 0
+_0807AEBC: .4byte 0x02000000
+_0807AEC0: .4byte 0x0001fffe
+_0807AEC4: .4byte 0x0001ffff
+_0807AEC8:
+ bl ResetSpriteData
+ b _0807B040
+_0807AECE:
+ bl FreeAllSpritePalettes
+ ldr r1, _0807AEDC @ =gReservedSpritePaletteCount
+ movs r0, 0x4
+ strb r0, [r1]
+ b _0807B040
+ .align 2, 0
+_0807AEDC: .4byte gReservedSpritePaletteCount
+_0807AEE0:
+ bl sub_8031EE8
+ b _0807B040
+_0807AEE6:
+ ldr r5, _0807AF00 @ =0x02000000
+ ldr r1, _0807AF04 @ =0x0001fffe
+ adds r4, r5, r1
+ ldrb r0, [r4]
+ bl sub_8031C30
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AF08
+_0807AEF8:
+ movs r0, 0
+ strb r0, [r4]
+ b _0807B040
+ .align 2, 0
+_0807AF00: .4byte 0x02000000
+_0807AF04: .4byte 0x0001fffe
+_0807AF08:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r0, _0807AF14 @ =0x0001ffff
+ adds r1, r5, r0
+ b _0807AF38
+ .align 2, 0
+_0807AF14: .4byte 0x0001ffff
+_0807AF18:
+ movs r0, 0
+ b _0807AF26
+_0807AF1C:
+ movs r0, 0x1
+ b _0807AF26
+_0807AF20:
+ movs r0, 0x2
+ b _0807AF26
+_0807AF24:
+ movs r0, 0x3
+_0807AF26:
+ bl sub_807B094
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AF32
+ b _0807B040
+_0807AF32:
+ ldr r1, _0807AF40 @ =0x02000000
+ ldr r0, _0807AF44 @ =0x0001ffff
+ adds r1, r0
+_0807AF38:
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ b _0807B040
+ .align 2, 0
+_0807AF40: .4byte 0x02000000
+_0807AF44: .4byte 0x0001ffff
+_0807AF48:
+ movs r0, 0
+ bl sub_807B184
+ b _0807B040
+_0807AF50:
+ movs r0, 0x1
+ bl sub_807B184
+ b _0807B040
+_0807AF58:
+ movs r0, 0x2
+ bl sub_807B184
+ b _0807B040
+_0807AF60:
+ movs r0, 0x3
+ bl sub_807B184
+ b _0807B040
+_0807AF68:
+ movs r0, 0
+ bl sub_807B508
+ b _0807B040
+_0807AF70:
+ movs r0, 0x1
+ bl sub_807B508
+ b _0807B040
+_0807AF78:
+ movs r0, 0x2
+ bl sub_807B508
+ b _0807B040
+_0807AF80:
+ movs r0, 0x3
+ bl sub_807B508
+ b _0807B040
+_0807AF88:
+ bl sub_80327CC
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r7, _0807B000 @ =gBattlePartyID
+ lsls r0, r4, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _0807B004 @ =gEnemyParty
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_8032984
+ bl IsDoubleBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807AFEC
+ movs r0, 0x3
+ bl GetBankByPlayerAI
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, r4, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r4, 0
+ bl sub_8032984
+_0807AFEC:
+ ldr r1, _0807B008 @ =gActionSelectionCursor
+ ldr r0, _0807B00C @ =gBankInMenu
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_802E3E4
+ b _0807B040
+ .align 2, 0
+_0807B000: .4byte gBattlePartyID
+_0807B004: .4byte gEnemyParty
+_0807B008: .4byte gActionSelectionCursor
+_0807B00C: .4byte gBankInMenu
+_0807B010:
+ ldr r0, _0807B054 @ =sub_800FCD4
+ bl SetHBlankCallback
+ ldr r0, _0807B058 @ =sub_800FCFC
+ bl SetVBlankCallback
+ bl sub_807B06C
+ movs r0, 0x1
+ str r0, [sp]
+ movs r0, 0xFF
+ movs r1, 0
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginHardwarePaletteFade
+ ldr r2, _0807B05C @ =gPaletteFade
+ ldrb r1, [r2, 0x8]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2, 0x8]
+ ldr r0, _0807B060 @ =sub_800F808
+ bl SetMainCallback2
+_0807B040:
+ ldr r1, _0807B064 @ =0x02000000
+ ldr r0, _0807B068 @ =0x0001ffff
+ adds r1, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807B054: .4byte sub_800FCD4
+_0807B058: .4byte sub_800FCFC
+_0807B05C: .4byte gPaletteFade
+_0807B060: .4byte sub_800F808
+_0807B064: .4byte 0x02000000
+_0807B068: .4byte 0x0001ffff
+ thumb_func_end CB2_ReshowBattleScreenAfterMenu
+
+ thumb_func_start sub_807B06C
+sub_807B06C: @ 807B06C
+ push {lr}
+ bl sub_800D6D4
+ ldr r3, _0807B08C @ =REG_BG1CNT
+ ldrb r2, [r3]
+ movs r1, 0xD
+ negs r1, r1
+ adds r0, r1, 0
+ ands r0, r2
+ strb r0, [r3]
+ ldr r2, _0807B090 @ =REG_BG2CNT
+ ldrb r0, [r2]
+ ands r1, r0
+ strb r1, [r2]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807B08C: .4byte REG_BG1CNT
+_0807B090: .4byte REG_BG2CNT
+ thumb_func_end sub_807B06C
+
+ thumb_func_start sub_807B094
+sub_807B094: @ 807B094
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0807B0D8 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _0807B172
+ adds r0, r4, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B0F2
+ lsls r0, r4, 2
+ ldr r1, _0807B0DC @ =0x02017800
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _0807B0E8
+ ldr r1, _0807B0E0 @ =gBattlePartyID
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0807B0E4 @ =gEnemyParty
+ adds r0, r1
+ adds r1, r4, 0
+ bl sub_8031794
+ b _0807B168
+ .align 2, 0
+_0807B0D8: .4byte gNoOfAllBanks
+_0807B0DC: .4byte 0x02017800
+_0807B0E0: .4byte gBattlePartyID
+_0807B0E4: .4byte gEnemyParty
+_0807B0E8:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8032350
+ b _0807B168
+_0807B0F2:
+ ldr r2, _0807B108 @ =gBattleTypeFlags
+ ldrh r1, [r2]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B110
+ cmp r4, 0
+ bne _0807B110
+ ldr r0, _0807B10C @ =gSaveBlock2
+ ldrb r0, [r0, 0x8]
+ b _0807B122
+ .align 2, 0
+_0807B108: .4byte gBattleTypeFlags
+_0807B10C: .4byte gSaveBlock2
+_0807B110:
+ ldrh r1, [r2]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B12A
+ cmp r4, 0
+ bne _0807B12A
+ movs r0, 0x2
+_0807B122:
+ movs r1, 0
+ bl sub_8031AF4
+ b _0807B168
+_0807B12A:
+ lsls r0, r4, 2
+ ldr r1, _0807B154 @ =0x02017800
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _0807B160
+ ldr r1, _0807B158 @ =gBattlePartyID
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0807B15C @ =gPlayerParty
+ adds r0, r1
+ adds r1, r4, 0
+ bl sub_80318FC
+ b _0807B168
+ .align 2, 0
+_0807B154: .4byte 0x02017800
+_0807B158: .4byte gBattlePartyID
+_0807B15C: .4byte gPlayerParty
+_0807B160:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8032350
+_0807B168:
+ ldr r0, _0807B17C @ =0x02000000
+ ldr r1, _0807B180 @ =0x0001fffe
+ adds r0, r1
+ movs r1, 0
+ strb r1, [r0]
+_0807B172:
+ movs r0, 0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0807B17C: .4byte 0x02000000
+_0807B180: .4byte 0x0001fffe
+ thumb_func_end sub_807B094
+
+ thumb_func_start sub_807B184
+sub_807B184: @ 807B184
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _0807B1B8 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r7, r0
+ bcc _0807B19E
+ b _0807B4D8
+_0807B19E:
+ lsls r2, r7, 2
+ ldr r0, _0807B1BC @ =0x02017800
+ adds r0, r2, r0
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ str r2, [sp]
+ cmp r0, 0
+ beq _0807B1C0
+ adds r0, r7, 0
+ bl sub_8077F7C
+ b _0807B1C6
+ .align 2, 0
+_0807B1B8: .4byte gNoOfAllBanks
+_0807B1BC: .4byte 0x02017800
+_0807B1C0:
+ adds r0, r7, 0
+ bl sub_8077F68
+_0807B1C6:
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ adds r0, r7, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0807B1DA
+ b _0807B2D8
+_0807B1DA:
+ ldr r1, _0807B2BC @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r6, r0, r1
+ ldrh r0, [r6]
+ movs r1, 0x64
+ mov r10, r1
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ ldr r1, _0807B2C0 @ =gEnemyParty
+ mov r9, r1
+ add r0, r9
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ bne _0807B1FE
+ b _0807B4D8
+_0807B1FE:
+ ldrh r0, [r6]
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ add r0, r9
+ movs r1, 0xB
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r7, 0
+ bl GetBankIdentity
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl GetMonSpriteTemplate_803C56C
+ ldr r5, _0807B2C4 @ =gUnknown_02024E8C
+ adds r0, r7, 0
+ movs r1, 0x2
+ bl sub_8077ABC
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r7, 0
+ bl sub_8079E90
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r5, 0
+ adds r1, r4, 0
+ mov r2, r8
+ bl CreateSprite
+ ldr r4, _0807B2C8 @ =gObjectBankIDs
+ adds r4, r7, r4
+ strb r0, [r4]
+ ldr r5, _0807B2CC @ =gSprites
+ ldrb r0, [r4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ lsls r3, r7, 4
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1, 0x5]
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r5, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _0807B2D0 @ =SpriteCallbackDummy
+ str r1, [r0]
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ strh r7, [r0, 0x2E]
+ ldrh r0, [r6]
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ add r0, r9
+ movs r1, 0xB
+ bl GetMonData
+ ldrb r2, [r4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r5
+ strh r0, [r1, 0x32]
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldr r1, _0807B2D4 @ =gBattleMonForms
+ adds r1, r7, r1
+ ldrb r1, [r1]
+ bl StartSpriteAnim
+ b _0807B4AC
+ .align 2, 0
+_0807B2BC: .4byte gBattlePartyID
+_0807B2C0: .4byte gEnemyParty
+_0807B2C4: .4byte gUnknown_02024E8C
+_0807B2C8: .4byte gObjectBankIDs
+_0807B2CC: .4byte gSprites
+_0807B2D0: .4byte SpriteCallbackDummy
+_0807B2D4: .4byte gBattleMonForms
+_0807B2D8:
+ ldr r2, _0807B328 @ =gBattleTypeFlags
+ ldrh r1, [r2]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B338
+ cmp r7, 0
+ bne _0807B338
+ ldr r5, _0807B32C @ =gSaveBlock2
+ ldrb r4, [r5, 0x8]
+ movs r0, 0
+ bl GetBankIdentity
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl GetMonSpriteTemplate_803C5A0
+ ldr r6, _0807B330 @ =gUnknown_02024E8C
+ ldr r1, _0807B334 @ =gTrainerBackPicCoords
+ ldrb r0, [r5, 0x8]
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0]
+ movs r4, 0x8
+ subs r4, r0
+ lsls r4, 18
+ movs r0, 0xA0
+ lsls r0, 15
+ adds r4, r0
+ asrs r4, 16
+ movs r0, 0
+ bl sub_8079E90
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r6, 0
+ b _0807B37C
+ .align 2, 0
+_0807B328: .4byte gBattleTypeFlags
+_0807B32C: .4byte gSaveBlock2
+_0807B330: .4byte gUnknown_02024E8C
+_0807B334: .4byte gTrainerBackPicCoords
+_0807B338:
+ ldrh r1, [r2]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B3D0
+ cmp r7, 0
+ bne _0807B3D0
+ movs r0, 0
+ bl GetBankIdentity
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ movs r0, 0x2
+ bl GetMonSpriteTemplate_803C5A0
+ ldr r5, _0807B3BC @ =gUnknown_02024E8C
+ ldr r0, _0807B3C0 @ =gTrainerBackPicCoords
+ ldrb r0, [r0, 0x8]
+ movs r4, 0x8
+ subs r4, r0
+ lsls r4, 18
+ movs r1, 0xA0
+ lsls r1, 15
+ adds r4, r1
+ asrs r4, 16
+ movs r0, 0
+ bl sub_8079E90
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r5, 0
+_0807B37C:
+ movs r1, 0x50
+ adds r2, r4, 0
+ bl CreateSprite
+ ldr r3, _0807B3C4 @ =gObjectBankIDs
+ strb r0, [r3]
+ ldr r4, _0807B3C8 @ =gSprites
+ ldrb r0, [r3]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ strb r0, [r1, 0x5]
+ ldrb r1, [r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r4, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _0807B3CC @ =SpriteCallbackDummy
+ str r1, [r0]
+ ldrb r1, [r3]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ strh r7, [r0, 0x2E]
+ b _0807B4AC
+ .align 2, 0
+_0807B3BC: .4byte gUnknown_02024E8C
+_0807B3C0: .4byte gTrainerBackPicCoords
+_0807B3C4: .4byte gObjectBankIDs
+_0807B3C8: .4byte gSprites
+_0807B3CC: .4byte SpriteCallbackDummy
+_0807B3D0:
+ ldr r1, _0807B4E8 @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r6, r0, r1
+ ldrh r0, [r6]
+ movs r1, 0x64
+ mov r10, r1
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ ldr r1, _0807B4EC @ =gPlayerParty
+ mov r9, r1
+ add r0, r9
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ beq _0807B4D8
+ ldrh r0, [r6]
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ add r0, r9
+ movs r1, 0xB
+ bl GetMonData
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r7, 0
+ bl GetBankIdentity
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl GetMonSpriteTemplate_803C56C
+ ldr r5, _0807B4F0 @ =gUnknown_02024E8C
+ adds r0, r7, 0
+ movs r1, 0x2
+ bl sub_8077ABC
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r7, 0
+ bl sub_8079E90
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r5, 0
+ adds r1, r4, 0
+ mov r2, r8
+ bl CreateSprite
+ ldr r4, _0807B4F4 @ =gObjectBankIDs
+ adds r4, r7, r4
+ strb r0, [r4]
+ ldr r5, _0807B4F8 @ =gSprites
+ ldrb r0, [r4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ lsls r3, r7, 4
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1, 0x5]
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r5, 0
+ adds r1, 0x1C
+ adds r0, r1
+ ldr r1, _0807B4FC @ =SpriteCallbackDummy
+ str r1, [r0]
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ strh r7, [r0, 0x2E]
+ ldrh r0, [r6]
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ add r0, r9
+ movs r1, 0xB
+ bl GetMonData
+ ldrb r2, [r4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r5
+ strh r0, [r1, 0x32]
+ ldrb r1, [r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldr r1, _0807B500 @ =gBattleMonForms
+ adds r1, r7, r1
+ ldrb r1, [r1]
+ bl StartSpriteAnim
+_0807B4AC:
+ ldr r1, _0807B4F8 @ =gSprites
+ ldr r0, _0807B4F4 @ =gObjectBankIDs
+ adds r0, r7, r0
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ ldr r0, _0807B504 @ =0x02017800
+ ldr r1, [sp]
+ adds r0, r1, r0
+ ldr r1, [r0]
+ lsls r1, 31
+ adds r2, 0x3E
+ lsrs r1, 31
+ lsls r1, 2
+ ldrb r3, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+_0807B4D8:
+ 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
+_0807B4E8: .4byte gBattlePartyID
+_0807B4EC: .4byte gPlayerParty
+_0807B4F0: .4byte gUnknown_02024E8C
+_0807B4F4: .4byte gObjectBankIDs
+_0807B4F8: .4byte gSprites
+_0807B4FC: .4byte SpriteCallbackDummy
+_0807B500: .4byte gBattleMonForms
+_0807B504: .4byte 0x02017800
+ thumb_func_end sub_807B184
+
+ thumb_func_start sub_807B508
+sub_807B508: @ 807B508
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _0807B530 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcc _0807B518
+ b _0807B68A
+_0807B518:
+ ldr r2, _0807B534 @ =gBattleTypeFlags
+ ldrh r1, [r2]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B538
+ cmp r5, 0
+ bne _0807B538
+ bl battle_make_oam_safari_battle
+ b _0807B550
+ .align 2, 0
+_0807B530: .4byte gNoOfAllBanks
+_0807B534: .4byte gBattleTypeFlags
+_0807B538:
+ ldrh r1, [r2]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B54A
+ cmp r5, 0
+ bne _0807B54A
+ b _0807B68A
+_0807B54A:
+ adds r0, r5, 0
+ bl battle_make_oam_normal_battle
+_0807B550:
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _0807B58C @ =gHealthboxIDs
+ adds r4, r5, r0
+ strb r6, [r4]
+ adds r0, r5, 0
+ bl sub_8043F44
+ adds r0, r6, 0
+ bl sub_8043DFC
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B598
+ ldrb r0, [r4]
+ ldr r1, _0807B590 @ =gBattlePartyID
+ lsls r4, r5, 1
+ adds r1, r4, r1
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0807B594 @ =gEnemyParty
+ adds r1, r2
+ movs r2, 0
+ bl sub_8045A5C
+ b _0807B5E4
+ .align 2, 0
+_0807B58C: .4byte gHealthboxIDs
+_0807B590: .4byte gBattlePartyID
+_0807B594: .4byte gEnemyParty
+_0807B598:
+ ldr r0, _0807B5C0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0807B5CC
+ ldrb r0, [r4]
+ ldr r1, _0807B5C4 @ =gBattlePartyID
+ lsls r4, r5, 1
+ adds r1, r4, r1
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0807B5C8 @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0xA
+ bl sub_8045A5C
+ b _0807B5E4
+ .align 2, 0
+_0807B5C0: .4byte gBattleTypeFlags
+_0807B5C4: .4byte gBattlePartyID
+_0807B5C8: .4byte gPlayerParty
+_0807B5CC:
+ ldrb r0, [r4]
+ ldr r1, _0807B610 @ =gBattlePartyID
+ lsls r4, r5, 1
+ adds r1, r4, r1
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0807B614 @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0
+ bl sub_8045A5C
+_0807B5E4:
+ adds r0, r5, 0
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ beq _0807B600
+ adds r0, r5, 0
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x2
+ bne _0807B61C
+_0807B600:
+ ldr r0, _0807B618 @ =gHealthboxIDs
+ adds r0, r5, r0
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl nullsub_11
+ b _0807B628
+ .align 2, 0
+_0807B610: .4byte gBattlePartyID
+_0807B614: .4byte gPlayerParty
+_0807B618: .4byte gHealthboxIDs
+_0807B61C:
+ ldr r0, _0807B654 @ =gHealthboxIDs
+ adds r0, r5, r0
+ ldrb r0, [r0]
+ movs r1, 0
+ bl nullsub_11
+_0807B628:
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0807B660
+ ldr r0, _0807B658 @ =gBattlePartyID
+ adds r0, r4, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0807B65C @ =gEnemyParty
+ adds r0, r1
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ bne _0807B68A
+ adds r0, r6, 0
+ bl sub_8043DB0
+ b _0807B68A
+ .align 2, 0
+_0807B654: .4byte gHealthboxIDs
+_0807B658: .4byte gBattlePartyID
+_0807B65C: .4byte gEnemyParty
+_0807B660:
+ ldr r0, _0807B690 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0807B68A
+ ldr r0, _0807B694 @ =gBattlePartyID
+ adds r0, r4, r0
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0807B698 @ =gPlayerParty
+ adds r0, r1
+ movs r1, 0x39
+ bl GetMonData
+ cmp r0, 0
+ bne _0807B68A
+ adds r0, r6, 0
+ bl sub_8043DB0
+_0807B68A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0807B690: .4byte gBattleTypeFlags
+_0807B694: .4byte gBattlePartyID
+_0807B698: .4byte gPlayerParty
+ thumb_func_end sub_807B508
+
+ .align 2, 0 @ Don't pad with nop.