.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_807F620 sub_807F620: @ 807F620 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _0807F640 @ =gTasks+0x8 adds r4, r0, r1 movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 beq _0807F644 cmp r0, 0x1 beq _0807F65E b _0807F686 .align 2, 0 _0807F640: .4byte gTasks+0x8 _0807F644: bl FldEffPoison_IsActive cmp r0, 0 bne _0807F686 bl sub_812B478 ldrb r0, [r4, 0x2] bl sub_80D08B8 ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807F686 _0807F65E: bl sub_80D08F8 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0807F686 bl sub_812B484 bl CleanupOverworldWindowsAndTilemaps ldr r0, _0807F68C @ =sub_800FD9C bl SetMainCallback2 bl sub_806D7E8 bl ClearPoisonStepCounter adds r0, r5, 0 bl DestroyTask _0807F686: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807F68C: .4byte sub_800FD9C thumb_func_end sub_807F620 thumb_func_start sub_807F690 sub_807F690: @ 807F690 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 lsls r4, 24 lsrs r4, 24 lsls r5, 16 lsrs r5, 16 ldr r0, _0807F6C4 @ =sub_807F620 movs r1, 0x1 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _0807F6C8 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 strh r4, [r1, 0xA] adds r0, r5, 0 bl PlayMapChosenOrBattleBGM pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807F6C4: .4byte sub_807F620 _0807F6C8: .4byte gTasks thumb_func_end sub_807F690 thumb_func_start sub_807F6CC sub_807F6CC: @ 807F6CC push {lr} lsls r0, 16 lsrs r0, 16 lsls r1, 16 lsrs r1, 16 cmp r0, 0x1 bne _0807F6FC adds r0, r1, 0 subs r0, 0x58 lsls r0, 16 lsrs r0, 16 cmp r0, 0x6 bhi _0807F6FC ldr r0, _0807F6F8 @ =0x00000167 movs r1, 0x1 bl CheckBagHasItem lsls r0, 24 cmp r0, 0 bne _0807F6FC movs r0, 0x1 b _0807F6FE .align 2, 0 _0807F6F8: .4byte 0x00000167 _0807F6FC: movs r0, 0 _0807F6FE: pop {r1} bx r1 thumb_func_end sub_807F6CC thumb_func_start sub_807F704 sub_807F704: @ 807F704 push {lr} bl GetSafariZoneFlag cmp r0, 0 beq _0807F714 bl sub_807F7D8 b _0807F744 _0807F714: ldr r0, _0807F73C @ =gSaveBlock1Ptr ldr r1, [r0] movs r0, 0x4 ldrsb r0, [r1, r0] lsls r0, 16 lsrs r0, 16 ldrb r1, [r1, 0x5] lsls r1, 24 asrs r1, 24 lsls r1, 16 lsrs r1, 16 bl sub_807F6CC lsls r0, 24 cmp r0, 0 beq _0807F740 bl sub_807F810 b _0807F744 .align 2, 0 _0807F73C: .4byte gSaveBlock1Ptr _0807F740: bl sub_807F748 _0807F744: pop {r0} bx r0 thumb_func_end sub_807F704 thumb_func_start sub_807F748 sub_807F748: @ 807F748 push {lr} bl ScriptContext2_Enable bl player_bitmagic bl sub_805C780 ldr r1, _0807F780 @ =gMain ldr r0, _0807F784 @ =sub_807FB40 str r0, [r1, 0x8] ldr r1, _0807F788 @ =gBattleTypeFlags movs r0, 0 str r0, [r1] bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 .align 2, 0 _0807F780: .4byte gMain _0807F784: .4byte sub_807FB40 _0807F788: .4byte gBattleTypeFlags thumb_func_end sub_807F748 thumb_func_start sub_807F78C sub_807F78C: @ 807F78C push {lr} bl ScriptContext2_Enable bl player_bitmagic bl sub_805C780 ldr r1, _0807F7C8 @ =gMain ldr r0, _0807F7CC @ =sub_807FB40 str r0, [r1, 0x8] ldr r1, _0807F7D0 @ =gBattleTypeFlags movs r0, 0x80 lsls r0, 3 str r0, [r1] bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 ldr r1, _0807F7D4 @ =0x00000155 bl sub_807F690 movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 .align 2, 0 _0807F7C8: .4byte gMain _0807F7CC: .4byte sub_807FB40 _0807F7D0: .4byte gBattleTypeFlags _0807F7D4: .4byte 0x00000155 thumb_func_end sub_807F78C thumb_func_start sub_807F7D8 sub_807F7D8: @ 807F7D8 push {lr} bl ScriptContext2_Enable bl player_bitmagic bl sub_805C780 ldr r1, _0807F804 @ =gMain ldr r0, _0807F808 @ =CB2_EndSafariBattle str r0, [r1, 0x8] ldr r1, _0807F80C @ =gBattleTypeFlags movs r0, 0x80 str r0, [r1] bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 pop {r0} bx r0 .align 2, 0 _0807F804: .4byte gMain _0807F808: .4byte CB2_EndSafariBattle _0807F80C: .4byte gBattleTypeFlags thumb_func_end sub_807F7D8 thumb_func_start sub_807F810 sub_807F810: @ 807F810 push {lr} bl ScriptContext2_Enable bl player_bitmagic bl sub_805C780 ldr r1, _0807F854 @ =gMain ldr r0, _0807F858 @ =sub_807FB40 str r0, [r1, 0x8] ldr r1, _0807F85C @ =gBattleTypeFlags movs r0, 0x80 lsls r0, 8 str r0, [r1] bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 ldr r0, _0807F860 @ =gEnemyParty ldr r2, _0807F864 @ =gUnknown_841D148 movs r1, 0x2 bl SetMonData movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 .align 2, 0 _0807F854: .4byte gMain _0807F858: .4byte sub_807FB40 _0807F85C: .4byte gBattleTypeFlags _0807F860: .4byte gEnemyParty _0807F864: .4byte gUnknown_841D148 thumb_func_end sub_807F810 thumb_func_start sub_807F868 sub_807F868: @ 807F868 push {lr} bl sub_807FF80 lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 movs r0, 0x7 bl IncrementGameStat movs r0, 0x9 bl IncrementGameStat pop {r0} bx r0 thumb_func_end sub_807F868 thumb_func_start sub_807F888 sub_807F888: @ 807F888 push {lr} ldr r0, _0807F8B4 @ =gEnemyParty movs r1, 0xD movs r2, 0x5 bl CreateMaleMon bl ScriptContext2_Enable ldr r1, _0807F8B8 @ =gMain ldr r0, _0807F8BC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic str r0, [r1, 0x8] ldr r1, _0807F8C0 @ =gBattleTypeFlags movs r0, 0x80 lsls r0, 2 str r0, [r1] movs r0, 0x8 movs r1, 0 bl sub_807F690 pop {r0} bx r0 .align 2, 0 _0807F8B4: .4byte gEnemyParty _0807F8B8: .4byte gMain _0807F8BC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic _0807F8C0: .4byte gBattleTypeFlags thumb_func_end sub_807F888 thumb_func_start BattleSetup_StartScriptedWildBattle BattleSetup_StartScriptedWildBattle: @ 807F8C4 push {lr} bl ScriptContext2_Enable ldr r1, _0807F8F8 @ =gMain ldr r0, _0807F8FC @ =sub_807FBA0 str r0, [r1, 0x8] ldr r1, _0807F900 @ =gBattleTypeFlags movs r0, 0x80 lsls r0, 10 str r0, [r1] bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 .align 2, 0 _0807F8F8: .4byte gMain _0807F8FC: .4byte sub_807FBA0 _0807F900: .4byte gBattleTypeFlags thumb_func_end BattleSetup_StartScriptedWildBattle thumb_func_start sub_807F904 sub_807F904: @ 807F904 push {lr} sub sp, 0xC bl ScriptContext2_Enable ldr r1, _0807F944 @ =gMain ldr r0, _0807F948 @ =sub_807FBF0 str r0, [r1, 0x8] ldr r0, _0807F94C @ =0x00000167 movs r1, 0x1 bl CheckBagHasItem lsls r0, 24 cmp r0, 0 beq _0807F958 ldr r1, _0807F950 @ =gBattleTypeFlags movs r0, 0xA0 lsls r0, 8 str r0, [r1] ldr r0, _0807F954 @ =gEnemyParty movs r1, 0xFE str r1, [sp] movs r1, 0xC str r1, [sp, 0x4] movs r1, 0 str r1, [sp, 0x8] movs r1, 0x69 movs r2, 0x1E movs r3, 0x1F bl CreateMonWithGenderNatureLetter b _0807F960 .align 2, 0 _0807F944: .4byte gMain _0807F948: .4byte sub_807FBF0 _0807F94C: .4byte 0x00000167 _0807F950: .4byte gBattleTypeFlags _0807F954: .4byte gEnemyParty _0807F958: ldr r1, _0807F98C @ =gBattleTypeFlags movs r0, 0x80 lsls r0, 8 str r0, [r1] _0807F960: bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 ldr r0, _0807F990 @ =gEnemyParty ldr r2, _0807F994 @ =gUnknown_841D148 movs r1, 0x2 bl SetMonData movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat add sp, 0xC pop {r0} bx r0 .align 2, 0 _0807F98C: .4byte gBattleTypeFlags _0807F990: .4byte gEnemyParty _0807F994: .4byte gUnknown_841D148 thumb_func_end sub_807F904 thumb_func_start sub_807F998 sub_807F998: @ 807F998 push {lr} bl ScriptContext2_Enable ldr r1, _0807F9CC @ =gMain ldr r0, _0807F9D0 @ =sub_807FBA0 str r0, [r1, 0x8] ldr r1, _0807F9D4 @ =gBattleTypeFlags movs r0, 0x80 lsls r0, 6 str r0, [r1] bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 .align 2, 0 _0807F9CC: .4byte gMain _0807F9D0: .4byte sub_807FBA0 _0807F9D4: .4byte gBattleTypeFlags thumb_func_end sub_807F998 thumb_func_start sub_807F9D8 sub_807F9D8: @ 807F9D8 push {lr} bl ScriptContext2_Enable ldr r1, _0807FA0C @ =gMain ldr r0, _0807FA10 @ =sub_807FBA0 str r0, [r1, 0x8] ldr r1, _0807FA14 @ =gBattleTypeFlags movs r0, 0x84 lsls r0, 11 str r0, [r1] ldr r0, _0807FA18 @ =gEnemyParty movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 adds r1, r0, 0 cmp r0, 0x96 beq _0807FA2E cmp r0, 0x96 bgt _0807FA1C cmp r0, 0x92 bgt _0807FA4C cmp r0, 0x90 blt _0807FA4C b _0807FA3C .align 2, 0 _0807FA0C: .4byte gMain _0807FA10: .4byte sub_807FBA0 _0807FA14: .4byte gBattleTypeFlags _0807FA18: .4byte gEnemyParty _0807FA1C: cmp r1, 0xF9 blt _0807FA4C cmp r1, 0xFA ble _0807FA3C movs r0, 0xCD lsls r0, 1 cmp r1, r0 beq _0807FA34 b _0807FA4C _0807FA2E: movs r1, 0xAA lsls r1, 1 b _0807FA3E _0807FA34: ldr r1, _0807FA38 @ =0x00000153 b _0807FA3E .align 2, 0 _0807FA38: .4byte 0x00000153 _0807FA3C: ldr r1, _0807FA48 @ =0x00000155 _0807FA3E: movs r0, 0 bl sub_807F690 b _0807FA56 .align 2, 0 _0807FA48: .4byte 0x00000155 _0807FA4C: movs r1, 0x85 lsls r1, 1 movs r0, 0 bl sub_807F690 _0807FA56: movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 thumb_func_end sub_807F9D8 thumb_func_start sub_807FA68 sub_807FA68: @ 807FA68 push {lr} bl ScriptContext2_Enable ldr r1, _0807FA90 @ =gMain ldr r0, _0807FA94 @ =sub_807FBA0 str r0, [r1, 0x8] ldr r1, _0807FA98 @ =gBattleTypeFlags movs r0, 0xC0 lsls r0, 6 str r0, [r1] ldr r0, _0807FA9C @ =gGameVersion ldrb r0, [r0] cmp r0, 0x4 bne _0807FAA0 movs r1, 0x85 lsls r1, 1 movs r0, 0xB bl sub_807F690 b _0807FAAA .align 2, 0 _0807FA90: .4byte gMain _0807FA94: .4byte sub_807FBA0 _0807FA98: .4byte gBattleTypeFlags _0807FA9C: .4byte gGameVersion _0807FAA0: movs r1, 0x85 lsls r1, 1 movs r0, 0xB bl sub_807F690 _0807FAAA: movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 thumb_func_end sub_807FA68 thumb_func_start sub_807FABC sub_807FABC: @ 807FABC push {lr} bl ScriptContext2_Enable ldr r1, _0807FAEC @ =gMain ldr r0, _0807FAF0 @ =sub_807FBA0 str r0, [r1, 0x8] ldr r1, _0807FAF4 @ =gBattleTypeFlags movs r0, 0xC0 lsls r0, 7 str r0, [r1] movs r1, 0x85 lsls r1, 1 movs r0, 0 bl sub_807F690 movs r0, 0x7 bl IncrementGameStat movs r0, 0x8 bl IncrementGameStat pop {r0} bx r0 .align 2, 0 _0807FAEC: .4byte gMain _0807FAF0: .4byte sub_807FBA0 _0807FAF4: .4byte gBattleTypeFlags thumb_func_end sub_807FABC thumb_func_start sub_807FAF8 sub_807FAF8: @ 807FAF8 push {lr} bl LoadPlayerParty bl sub_807FB40 pop {r0} bx r0 thumb_func_end sub_807FAF8 thumb_func_start sub_807FB08 sub_807FB08: @ 807FB08 push {lr} bl ScriptContext2_Enable bl player_bitmagic bl sub_805C780 ldr r1, _0807FB38 @ =gMain ldr r0, _0807FB3C @ =sub_807FAF8 str r0, [r1, 0x8] bl SavePlayerParty bl sub_8159F40 bl GetWildBattleTransition lsls r0, 24 lsrs r0, 24 movs r1, 0 bl sub_807F690 pop {r0} bx r0 .align 2, 0 _0807FB38: .4byte gMain _0807FB3C: .4byte sub_807FAF8 thumb_func_end sub_807FB08 thumb_func_start sub_807FB40 sub_807FB40: @ 807FB40 push {lr} sub sp, 0x4 mov r1, sp movs r0, 0 strh r0, [r1] movs r1, 0xA0 lsls r1, 19 ldr r2, _0807FB74 @ =0x01000100 mov r0, sp bl CpuSet movs r0, 0 movs r1, 0x80 bl ResetOamRange ldr r0, _0807FB78 @ =gBattleOutcome ldrb r0, [r0] bl IsPlayerDefeated cmp r0, 0x1 bne _0807FB80 ldr r0, _0807FB7C @ =c2_whiteout bl SetMainCallback2 b _0807FB8C .align 2, 0 _0807FB74: .4byte 0x01000100 _0807FB78: .4byte gBattleOutcome _0807FB7C: .4byte c2_whiteout _0807FB80: ldr r0, _0807FB94 @ =CB2_ReturnToField bl SetMainCallback2 ldr r1, _0807FB98 @ =gFieldCallback ldr r0, _0807FB9C @ =sub_807E3EC str r0, [r1] _0807FB8C: add sp, 0x4 pop {r0} bx r0 .align 2, 0 _0807FB94: .4byte CB2_ReturnToField _0807FB98: .4byte gFieldCallback _0807FB9C: .4byte sub_807E3EC thumb_func_end sub_807FB40 thumb_func_start sub_807FBA0 sub_807FBA0: @ 807FBA0 push {lr} sub sp, 0x4 mov r1, sp movs r0, 0 strh r0, [r1] movs r1, 0xA0 lsls r1, 19 ldr r2, _0807FBD4 @ =0x01000100 mov r0, sp bl CpuSet movs r0, 0 movs r1, 0x80 bl ResetOamRange ldr r0, _0807FBD8 @ =gBattleOutcome ldrb r0, [r0] bl IsPlayerDefeated cmp r0, 0x1 bne _0807FBE0 ldr r0, _0807FBDC @ =c2_whiteout bl SetMainCallback2 b _0807FBE6 .align 2, 0 _0807FBD4: .4byte 0x01000100 _0807FBD8: .4byte gBattleOutcome _0807FBDC: .4byte c2_whiteout _0807FBE0: ldr r0, _0807FBEC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic bl SetMainCallback2 _0807FBE6: add sp, 0x4 pop {r0} bx r0 .align 2, 0 _0807FBEC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic thumb_func_end sub_807FBA0 thumb_func_start sub_807FBF0 sub_807FBF0: @ 807FBF0 push {r4,lr} sub sp, 0x4 mov r1, sp movs r0, 0 strh r0, [r1] movs r1, 0xA0 lsls r1, 19 ldr r2, _0807FC24 @ =0x01000100 mov r0, sp bl CpuSet movs r0, 0 movs r1, 0x80 bl ResetOamRange ldr r4, _0807FC28 @ =gBattleOutcome ldrb r0, [r4] bl IsPlayerDefeated adds r1, r0, 0 cmp r1, 0 beq _0807FC30 ldr r0, _0807FC2C @ =c2_whiteout bl SetMainCallback2 b _0807FC4C .align 2, 0 _0807FC24: .4byte 0x01000100 _0807FC28: .4byte gBattleOutcome _0807FC2C: .4byte c2_whiteout _0807FC30: ldrb r0, [r4] cmp r0, 0x1 bne _0807FC40 ldr r0, _0807FC3C @ =gSpecialVar_Result strh r1, [r0] b _0807FC46 .align 2, 0 _0807FC3C: .4byte gSpecialVar_Result _0807FC40: ldr r1, _0807FC54 @ =gSpecialVar_Result movs r0, 0x1 strh r0, [r1] _0807FC46: ldr r0, _0807FC58 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic bl SetMainCallback2 _0807FC4C: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0807FC54: .4byte gSpecialVar_Result _0807FC58: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic thumb_func_end sub_807FBF0 thumb_func_start sub_807FC5C sub_807FC5C: @ 807FC5C push {r4,r5,lr} sub sp, 0x4 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileBehaviorAt lsls r0, 16 lsrs r5, r0, 16 lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl MetatileBehavior_IsTallGrass_2 lsls r0, 24 cmp r0, 0 beq _0807FC92 movs r0, 0 b _0807FD88 _0807FC92: adds r0, r4, 0 bl MetatileBehavior_ReturnFalse_3 lsls r0, 24 cmp r0, 0 beq _0807FCA2 movs r0, 0x1 b _0807FD88 _0807FCA2: adds r0, r4, 0 bl MetatileBehavior_IsMB21OrWaterfallBottom lsls r0, 24 cmp r0, 0 beq _0807FCB2 movs r0, 0x2 b _0807FD88 _0807FCB2: ldr r0, _0807FCC8 @ =gMapHeader ldrb r0, [r0, 0x17] subs r0, 0x1 cmp r0, 0x8 bhi _0807FD2C lsls r0, 2 ldr r1, _0807FCCC @ =_0807FCD0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0807FCC8: .4byte gMapHeader _0807FCCC: .4byte _0807FCD0 .align 2, 0 _0807FCD0: .4byte _0807FD2C .4byte _0807FD2C .4byte _0807FD2C .4byte _0807FCF4 .4byte _0807FD18 .4byte _0807FD1C .4byte _0807FD2C .4byte _0807FD04 .4byte _0807FD04 _0807FCF4: lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl MetatileBehavior_IsMB0B lsls r0, 24 cmp r0, 0 beq _0807FD08 _0807FD04: movs r0, 0x8 b _0807FD88 _0807FD08: adds r0, r4, 0 bl MetatileBehavior_IsSurfable lsls r0, 24 cmp r0, 0 bne _0807FD70 movs r0, 0x7 b _0807FD88 _0807FD18: movs r0, 0x3 b _0807FD88 _0807FD1C: lsls r0, r5, 24 lsrs r0, 24 bl MetatileBehavior_IsSurfable lsls r0, 24 cmp r0, 0 bne _0807FD82 b _0807FD86 _0807FD2C: lsls r0, r5, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl MetatileBehavior_IsDeepSemiDeepOrSplashingWater lsls r0, 24 cmp r0, 0 bne _0807FD82 adds r0, r4, 0 bl MetatileBehavior_IsSurfable lsls r0, 24 cmp r0, 0 bne _0807FD70 adds r0, r4, 0 bl MetatileBehavior_IsMB0C lsls r0, 24 cmp r0, 0 beq _0807FD58 movs r0, 0x6 b _0807FD88 _0807FD58: movs r0, 0x8 bl TestPlayerAvatarFlags lsls r0, 24 cmp r0, 0 beq _0807FD86 adds r0, r4, 0 bl MetatileBehavior_ReturnFalse_7 lsls r0, 24 cmp r0, 0 beq _0807FD74 _0807FD70: movs r0, 0x5 b _0807FD88 _0807FD74: adds r0, r4, 0 bl MetatileBehavior_ReturnFalse_6 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0807FD86 _0807FD82: movs r0, 0x4 b _0807FD88 _0807FD86: movs r0, 0x9 _0807FD88: add sp, 0x4 pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_807FC5C thumb_func_start GetBattleTransitionTypeByMap GetBattleTransitionTypeByMap: @ 807FD90 push {r4,lr} sub sp, 0x4 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileBehaviorAt lsls r0, 16 lsrs r4, r0, 16 bl sav1_get_flash_used_on_map lsls r0, 24 cmp r0, 0 beq _0807FDC0 movs r0, 0x2 b _0807FDEA _0807FDC0: lsls r0, r4, 24 lsrs r0, 24 bl MetatileBehavior_IsSurfable lsls r0, 24 cmp r0, 0 bne _0807FDE8 ldr r0, _0807FDE0 @ =gMapHeader ldrb r0, [r0, 0x17] cmp r0, 0x4 beq _0807FDE4 cmp r0, 0x5 beq _0807FDE8 movs r0, 0 b _0807FDEA .align 2, 0 _0807FDE0: .4byte gMapHeader _0807FDE4: movs r0, 0x1 b _0807FDEA _0807FDE8: movs r0, 0x3 _0807FDEA: add sp, 0x4 pop {r4} pop {r1} bx r1 thumb_func_end GetBattleTransitionTypeByMap thumb_func_start GetSumOfPlayerPartyLevel GetSumOfPlayerPartyLevel: @ 807FDF4 push {r4-r7,lr} lsls r0, 24 lsrs r5, r0, 24 movs r7, 0 movs r6, 0 _0807FDFE: movs r0, 0x64 adds r1, r6, 0 muls r1, r0 ldr r0, _0807FE50 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x41 bl GetMonData adds r1, r0, 0 movs r0, 0xCE lsls r0, 1 cmp r1, r0 beq _0807FE42 cmp r1, 0 beq _0807FE42 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0807FE42 adds r0, r4, 0 movs r1, 0x38 bl GetMonData adds r0, r7, r0 lsls r0, 24 lsrs r7, r0, 24 subs r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0 beq _0807FE48 _0807FE42: adds r6, 0x1 cmp r6, 0x5 ble _0807FDFE _0807FE48: adds r0, r7, 0 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0807FE50: .4byte gPlayerParty thumb_func_end GetSumOfPlayerPartyLevel thumb_func_start reads_trainer_data_byte0 reads_trainer_data_byte0: @ 807FE54 push {r4,r5,lr} lsls r0, 16 lsrs r0, 16 lsls r1, 24 lsrs r4, r1, 24 ldr r5, _0807FE88 @ =gTrainers lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r2, r1, r5 adds r0, r2, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, r4 bcs _0807FE74 adds r4, r0, 0 _0807FE74: movs r3, 0 ldrb r0, [r2] cmp r0, 0x1 beq _0807FEBC cmp r0, 0x1 bgt _0807FE8C cmp r0, 0 beq _0807FE96 b _0807FF2C .align 2, 0 _0807FE88: .4byte gTrainers _0807FE8C: cmp r0, 0x2 beq _0807FEE2 cmp r0, 0x3 beq _0807FF08 b _0807FF2C _0807FE96: adds r0, r5, 0 adds r0, 0x24 adds r0, r1, r0 ldr r1, [r0] movs r2, 0 cmp r3, r4 bcs _0807FF2C _0807FEA4: lsls r0, r2, 3 adds r0, r1 ldrb r0, [r0, 0x2] adds r0, r3, r0 lsls r0, 24 lsrs r3, r0, 24 adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, r4 bcc _0807FEA4 b _0807FF2C _0807FEBC: adds r0, r5, 0 adds r0, 0x24 adds r0, r1, r0 ldr r1, [r0] movs r2, 0 cmp r3, r4 bcs _0807FF2C _0807FECA: lsls r0, r2, 4 adds r0, r1 ldrb r0, [r0, 0x2] adds r0, r3, r0 lsls r0, 24 lsrs r3, r0, 24 adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, r4 bcc _0807FECA b _0807FF2C _0807FEE2: adds r0, r5, 0 adds r0, 0x24 adds r0, r1, r0 ldr r1, [r0] movs r2, 0 cmp r3, r4 bcs _0807FF2C _0807FEF0: lsls r0, r2, 3 adds r0, r1 ldrb r0, [r0, 0x2] adds r0, r3, r0 lsls r0, 24 lsrs r3, r0, 24 adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, r4 bcc _0807FEF0 b _0807FF2C _0807FF08: adds r0, r5, 0 adds r0, 0x24 adds r0, r1, r0 ldr r1, [r0] movs r2, 0 cmp r3, r4 bcs _0807FF2C _0807FF16: lsls r0, r2, 4 adds r0, r1 ldrb r0, [r0, 0x2] adds r0, r3, r0 lsls r0, 24 lsrs r3, r0, 24 adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, r4 bcc _0807FF16 _0807FF2C: adds r0, r3, 0 pop {r4,r5} pop {r1} bx r1 thumb_func_end reads_trainer_data_byte0 thumb_func_start GetWildBattleTransition GetWildBattleTransition: @ 807FF34 push {r4,r5,lr} bl GetBattleTransitionTypeByMap lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0807FF64 @ =gEnemyParty movs r1, 0x38 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x1 bl GetSumOfPlayerPartyLevel lsls r0, 24 lsrs r0, 24 cmp r4, r0 bcc _0807FF6C ldr r0, _0807FF68 @ =gUnknown_83C68F0 lsls r1, r5, 1 adds r0, 0x1 b _0807FF70 .align 2, 0 _0807FF64: .4byte gEnemyParty _0807FF68: .4byte gUnknown_83C68F0 _0807FF6C: ldr r0, _0807FF7C @ =gUnknown_83C68F0 lsls r1, r5, 1 _0807FF70: adds r1, r0 ldrb r0, [r1] pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0807FF7C: .4byte gUnknown_83C68F0 thumb_func_end GetWildBattleTransition thumb_func_start sub_807FF80 sub_807FF80: @ 807FF80 push {r4-r6,lr} ldr r4, _0807FFB4 @ =gTrainerBattleOpponent_A ldrh r1, [r4] movs r0, 0x80 lsls r0, 3 cmp r1, r0 beq _0808000C ldr r1, _0807FFB8 @ =gTrainers ldrh r2, [r4] lsls r0, r2, 2 adds r0, r2 lsls r0, 3 adds r0, r1 ldrb r1, [r0, 0x1] cmp r1, 0x57 bne _08080008 adds r1, r2, 0 movs r0, 0xCD lsls r0, 1 cmp r1, r0 beq _0807FFB0 ldr r0, _0807FFBC @ =0x000002df cmp r1, r0 bne _0807FFC0 _0807FFB0: movs r0, 0xC b _08080054 .align 2, 0 _0807FFB4: .4byte gTrainerBattleOpponent_A _0807FFB8: .4byte gTrainers _0807FFBC: .4byte 0x000002df _0807FFC0: ldr r0, _0807FFD4 @ =0x0000019b cmp r1, r0 beq _0807FFCE movs r0, 0xB8 lsls r0, 2 cmp r1, r0 bne _0807FFD8 _0807FFCE: movs r0, 0xD b _08080054 .align 2, 0 _0807FFD4: .4byte 0x0000019b _0807FFD8: movs r0, 0xCE lsls r0, 1 cmp r1, r0 beq _0807FFE6 ldr r0, _0807FFEC @ =0x000002e1 cmp r1, r0 bne _0807FFF0 _0807FFE6: movs r0, 0xE b _08080054 .align 2, 0 _0807FFEC: .4byte 0x000002e1 _0807FFF0: ldr r0, _08080000 @ =0x0000019d cmp r1, r0 beq _0807FFFC ldr r0, _08080004 @ =0x000002e2 cmp r1, r0 bne _0808000C _0807FFFC: movs r0, 0xF b _08080054 .align 2, 0 _08080000: .4byte 0x0000019d _08080004: .4byte 0x000002e2 _08080008: cmp r1, 0x5A bne _08080010 _0808000C: movs r0, 0x10 b _08080054 _08080010: ldrb r0, [r0, 0x18] movs r5, 0x1 cmp r0, 0x1 bne _0808001A movs r5, 0x2 _0808001A: bl GetBattleTransitionTypeByMap lsls r0, 24 lsrs r6, r0, 24 ldrh r0, [r4] adds r1, r5, 0 bl reads_trainer_data_byte0 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r5, 0 bl GetSumOfPlayerPartyLevel lsls r0, 24 lsrs r0, 24 cmp r4, r0 bcc _0808004C ldr r0, _08080048 @ =gUnknown_83C68F8 lsls r1, r6, 1 adds r0, 0x1 b _08080050 .align 2, 0 _08080048: .4byte gUnknown_83C68F8 _0808004C: ldr r0, _0808005C @ =gUnknown_83C68F8 lsls r1, r6, 1 _08080050: adds r1, r0 ldrb r0, [r1] _08080054: pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0808005C: .4byte gUnknown_83C68F8 thumb_func_end sub_807FF80 thumb_func_start sub_8080060 sub_8080060: @ 8080060 push {r4,lr} ldr r0, _08080084 @ =gEnemyParty movs r1, 0x38 bl GetMonData adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x1 bl GetSumOfPlayerPartyLevel lsls r0, 24 lsrs r0, 24 cmp r4, r0 bcc _08080088 movs r0, 0x3 b _0808008A .align 2, 0 _08080084: .4byte gEnemyParty _08080088: movs r0, 0x4 _0808008A: pop {r4} pop {r1} bx r1 thumb_func_end sub_8080060 thumb_func_start TrainerBattleLoadArg32 TrainerBattleLoadArg32: @ 8080090 adds r2, r0, 0 ldrb r0, [r2] ldrb r1, [r2, 0x1] lsls r1, 8 orrs r0, r1 ldrb r1, [r2, 0x2] lsls r1, 16 orrs r0, r1 ldrb r1, [r2, 0x3] lsls r1, 24 orrs r0, r1 bx lr thumb_func_end TrainerBattleLoadArg32 thumb_func_start TrainerBattleLoadArg16 TrainerBattleLoadArg16: @ 80800A8 adds r1, r0, 0 ldrb r0, [r1] ldrb r1, [r1, 0x1] lsls r1, 8 orrs r0, r1 bx lr thumb_func_end TrainerBattleLoadArg16 thumb_func_start TrainerBattleLoadArg8 TrainerBattleLoadArg8: @ 80800B4 ldrb r0, [r0] bx lr thumb_func_end TrainerBattleLoadArg8 thumb_func_start trainerflag_opponent trainerflag_opponent: @ 80800B8 ldr r1, _080800CC @ =gTrainerBattleOpponent_A movs r2, 0xA0 lsls r2, 3 adds r0, r2, 0 ldrh r1, [r1] adds r0, r1 lsls r0, 16 lsrs r0, 16 bx lr .align 2, 0 _080800CC: .4byte gTrainerBattleOpponent_A thumb_func_end trainerflag_opponent thumb_func_start IsPlayerDefeated IsPlayerDefeated: @ 80800D0 push {lr} subs r0, 0x1 cmp r0, 0x6 bhi _08080108 lsls r0, 2 ldr r1, _080800E4 @ =_080800E8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080800E4: .4byte _080800E8 .align 2, 0 _080800E8: .4byte _08080108 .4byte _08080104 .4byte _08080104 .4byte _08080108 .4byte _08080108 .4byte _08080108 .4byte _08080108 _08080104: movs r0, 0x1 b _0808010A _08080108: movs r0, 0 _0808010A: pop {r1} bx r1 thumb_func_end IsPlayerDefeated thumb_func_start sub_8080110 sub_8080110: @ 8080110 ldr r0, _08080140 @ =gUnknown_20386AC movs r1, 0 strh r1, [r0] ldr r0, _08080144 @ =gTrainerBattleOpponent_A strh r1, [r0] ldr r0, _08080148 @ =gUnknown_20386B0 strh r1, [r0] ldr r0, _0808014C @ =gUnknown_20386B4 movs r1, 0 str r1, [r0] ldr r0, _08080150 @ =gUnknown_20386B8 str r1, [r0] ldr r0, _08080154 @ =gUnknown_20386BC str r1, [r0] ldr r0, _08080158 @ =gUnknown_20386C0 str r1, [r0] ldr r0, _0808015C @ =gUnknown_20386C4 str r1, [r0] ldr r0, _08080160 @ =gUnknown_20386C8 str r1, [r0] ldr r0, _08080164 @ =gUnknown_20386CC strh r1, [r0] bx lr .align 2, 0 _08080140: .4byte gUnknown_20386AC _08080144: .4byte gTrainerBattleOpponent_A _08080148: .4byte gUnknown_20386B0 _0808014C: .4byte gUnknown_20386B4 _08080150: .4byte gUnknown_20386B8 _08080154: .4byte gUnknown_20386BC _08080158: .4byte gUnknown_20386C0 _0808015C: .4byte gUnknown_20386C4 _08080160: .4byte gUnknown_20386C8 _08080164: .4byte gUnknown_20386CC thumb_func_end sub_8080110 thumb_func_start TrainerBattleLoadArgs TrainerBattleLoadArgs: @ 8080168 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 _0808016E: ldrb r0, [r4, 0x4] cmp r0, 0x6 bhi _080801E0 lsls r0, 2 ldr r1, _08080180 @ =_08080184 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08080180: .4byte _08080184 .align 2, 0 _08080184: .4byte _080801A0 .4byte _080801AE .4byte _080801BC .4byte _080801CA .4byte _080801D2 .4byte _080801DA .4byte _080801E4 _080801A0: adds r0, r5, 0 bl TrainerBattleLoadArg8 ldr r1, [r4] strb r0, [r1] adds r5, 0x1 b _080801E0 _080801AE: adds r0, r5, 0 bl TrainerBattleLoadArg16 ldr r1, [r4] strh r0, [r1] adds r5, 0x2 b _080801E0 _080801BC: adds r0, r5, 0 bl TrainerBattleLoadArg32 ldr r1, [r4] str r0, [r1] adds r5, 0x4 b _080801E0 _080801CA: ldr r1, [r4] movs r0, 0 strb r0, [r1] b _080801E0 _080801D2: ldr r1, [r4] movs r0, 0 strh r0, [r1] b _080801E0 _080801DA: ldr r1, [r4] movs r0, 0 str r0, [r1] _080801E0: adds r4, 0x8 b _0808016E _080801E4: ldr r0, [r4] str r5, [r0] pop {r4,r5} pop {r0} bx r0 thumb_func_end TrainerBattleLoadArgs thumb_func_start battle_80801F0 battle_80801F0: @ 80801F0 push {lr} ldr r0, _08080218 @ =gUnknown_20386B0 ldrh r1, [r0] cmp r1, 0 beq _08080212 ldr r0, _0808021C @ =gSpecialVar_LastTalked strh r1, [r0] lsls r0, r1, 24 lsrs r0, 24 ldr r1, _08080220 @ =gSaveBlock1Ptr ldr r2, [r1] ldrb r1, [r2, 0x5] ldrb r2, [r2, 0x4] bl GetFieldObjectIdByLocalIdAndMap ldr r1, _08080224 @ =gSelectedEventObject strb r0, [r1] _08080212: pop {r0} bx r0 .align 2, 0 _08080218: .4byte gUnknown_20386B0 _0808021C: .4byte gSpecialVar_LastTalked _08080220: .4byte gSaveBlock1Ptr _08080224: .4byte gSelectedEventObject thumb_func_end battle_80801F0 thumb_func_start BattleSetup_ConfigureTrainerBattle BattleSetup_ConfigureTrainerBattle: @ 8080228 push {r4,r5,lr} adds r5, r0, 0 bl sub_8080110 ldr r4, _08080250 @ =gUnknown_20386AC adds r0, r5, 0 bl TrainerBattleLoadArg8 lsls r0, 24 lsrs r0, 24 strh r0, [r4] ldrh r0, [r4] subs r0, 0x1 cmp r0, 0x8 bhi _08080318 lsls r0, 2 ldr r1, _08080254 @ =_08080258 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08080250: .4byte gUnknown_20386AC _08080254: .4byte _08080258 .align 2, 0 _08080258: .4byte _0808028C .4byte _0808028C .4byte _0808027C .4byte _08080284 .4byte _080802D8 .4byte _08080294 .4byte _080802AC .4byte _08080294 .4byte _08080304 _0808027C: ldr r0, _08080280 @ =gUnknown_83C69D8 b _08080306 .align 2, 0 _08080280: .4byte gUnknown_83C69D8 _08080284: ldr r0, _08080288 @ =gUnknown_83C6990 b _08080296 .align 2, 0 _08080288: .4byte gUnknown_83C6990 _0808028C: ldr r0, _08080290 @ =gUnknown_83C6948 b _0808031A .align 2, 0 _08080290: .4byte gUnknown_83C6948 _08080294: ldr r0, _080802A4 @ =gUnknown_83C6A68 _08080296: adds r1, r5, 0 bl TrainerBattleLoadArgs bl battle_80801F0 ldr r0, _080802A8 @ =gUnknown_81A4EE9 b _08080326 .align 2, 0 _080802A4: .4byte gUnknown_83C6A68 _080802A8: .4byte gUnknown_81A4EE9 _080802AC: bl sub_811231C ldr r0, _080802CC @ =gUnknown_83C6990 adds r1, r5, 0 bl TrainerBattleLoadArgs bl battle_80801F0 ldr r4, _080802D0 @ =gTrainerBattleOpponent_A ldrh r0, [r4] bl sub_810CE64 strh r0, [r4] ldr r0, _080802D4 @ =gUnknown_81A4F73 b _08080326 .align 2, 0 _080802CC: .4byte gUnknown_83C6990 _080802D0: .4byte gTrainerBattleOpponent_A _080802D4: .4byte gUnknown_81A4F73 _080802D8: bl sub_811231C ldr r0, _080802F8 @ =gUnknown_83C6900 adds r1, r5, 0 bl TrainerBattleLoadArgs bl battle_80801F0 ldr r4, _080802FC @ =gTrainerBattleOpponent_A ldrh r0, [r4] bl sub_810CE64 strh r0, [r4] ldr r0, _08080300 @ =gUnknown_81A4F3E b _08080326 .align 2, 0 _080802F8: .4byte gUnknown_83C6900 _080802FC: .4byte gTrainerBattleOpponent_A _08080300: .4byte gUnknown_81A4F3E _08080304: ldr r0, _08080310 @ =gUnknown_83C6A20 _08080306: adds r1, r5, 0 bl TrainerBattleLoadArgs ldr r0, _08080314 @ =gUnknown_81A4F21 b _08080326 .align 2, 0 _08080310: .4byte gUnknown_83C6A20 _08080314: .4byte gUnknown_81A4F21 _08080318: ldr r0, _0808032C @ =gUnknown_83C6900 _0808031A: adds r1, r5, 0 bl TrainerBattleLoadArgs bl battle_80801F0 ldr r0, _08080330 @ =gUnknown_81A4EC1 _08080326: pop {r4,r5} pop {r1} bx r1 .align 2, 0 _0808032C: .4byte gUnknown_83C6900 _08080330: .4byte gUnknown_81A4EC1 thumb_func_end BattleSetup_ConfigureTrainerBattle thumb_func_start TrainerWantsBattle TrainerWantsBattle: @ 8080334 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r2, _08080368 @ =gSelectedEventObject strb r0, [r2] ldr r4, _0808036C @ =gSpecialVar_LastTalked ldr r3, _08080370 @ =gMapObjects lsls r2, r0, 3 adds r2, r0 lsls r2, 2 adds r2, r3 ldrb r0, [r2, 0x8] strh r0, [r4] adds r1, 0x1 adds r0, r1, 0 bl BattleSetup_ConfigureTrainerBattle ldr r0, _08080374 @ =gUnknown_81A4EB4 bl ScriptContext1_SetupScript bl ScriptContext2_Enable pop {r4} pop {r0} bx r0 .align 2, 0 _08080368: .4byte gSelectedEventObject _0808036C: .4byte gSpecialVar_LastTalked _08080370: .4byte gMapObjects _08080374: .4byte gUnknown_81A4EB4 thumb_func_end TrainerWantsBattle thumb_func_start GetTrainerFlagFromScriptPointer GetTrainerFlagFromScriptPointer: @ 8080378 push {lr} adds r0, 0x2 bl TrainerBattleLoadArg16 lsls r0, 16 movs r1, 0xA0 lsls r1, 19 adds r0, r1 lsrs r0, 16 bl FlagGet lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end GetTrainerFlagFromScriptPointer thumb_func_start sub_8080398 sub_8080398: @ 8080398 push {r4,lr} ldr r0, _080803C4 @ =gSelectedEventObject ldrb r0, [r0] lsls r4, r0, 3 adds r4, r0 lsls r4, 2 ldr r0, _080803C8 @ =gMapObjects adds r4, r0 ldrb r0, [r4, 0x18] lsls r0, 28 lsrs r0, 28 bl npc_running_behaviour_by_direction adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 bl npc_set_running_behaviour_etc pop {r4} pop {r0} bx r0 .align 2, 0 _080803C4: .4byte gSelectedEventObject _080803C8: .4byte gMapObjects thumb_func_end sub_8080398 thumb_func_start sub_80803CC sub_80803CC: @ 80803CC ldr r0, _080803D4 @ =gUnknown_20386AC ldrb r0, [r0] bx lr .align 2, 0 _080803D4: .4byte gUnknown_20386AC thumb_func_end sub_80803CC thumb_func_start sub_80803D8 sub_80803D8: @ 80803D8 ldr r0, _080803E0 @ =gUnknown_20386CC ldrh r0, [r0] bx lr .align 2, 0 _080803E0: .4byte gUnknown_20386CC thumb_func_end sub_80803D8 thumb_func_start ScrSpecial_HasTrainerBeenFought ScrSpecial_HasTrainerBeenFought: @ 80803E4 push {lr} bl trainerflag_opponent lsls r0, 16 lsrs r0, 16 bl FlagGet lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end ScrSpecial_HasTrainerBeenFought thumb_func_start sub_80803FC sub_80803FC: @ 80803FC push {lr} bl trainerflag_opponent lsls r0, 16 lsrs r0, 16 bl FlagSet pop {r0} bx r0 thumb_func_end sub_80803FC thumb_func_start sub_8080410 sub_8080410: @ 8080410 push {lr} bl trainerflag_opponent lsls r0, 16 lsrs r0, 16 bl FlagSet pop {r0} bx r0 thumb_func_end sub_8080410 thumb_func_start HasTrainerAlreadyBeenFought HasTrainerAlreadyBeenFought: @ 8080424 push {lr} lsls r0, 16 movs r1, 0xA0 lsls r1, 19 adds r0, r1 lsrs r0, 16 bl FlagGet lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end HasTrainerAlreadyBeenFought thumb_func_start SetTrainerFlag SetTrainerFlag: @ 808043C push {lr} lsls r0, 16 movs r1, 0xA0 lsls r1, 19 adds r0, r1 lsrs r0, 16 bl FlagSet pop {r0} bx r0 thumb_func_end SetTrainerFlag thumb_func_start ClearTrainerFlag ClearTrainerFlag: @ 8080450 push {lr} lsls r0, 16 movs r1, 0xA0 lsls r1, 19 adds r0, r1 lsrs r0, 16 bl FlagClear pop {r0} bx r0 thumb_func_end ClearTrainerFlag thumb_func_start BattleSetup_StartTrainerBattle BattleSetup_StartTrainerBattle: @ 8080464 push {r4,lr} ldr r4, _080804A0 @ =gBattleTypeFlags movs r0, 0x8 str r0, [r4] bl sub_80803CC lsls r0, 24 lsrs r0, 24 cmp r0, 0x9 bne _0808048C bl sub_80803D8 movs r1, 0x3 ands r1, r0 cmp r1, 0 beq _0808048C ldr r0, [r4] movs r1, 0x10 orrs r0, r1 str r0, [r4] _0808048C: ldr r1, _080804A4 @ =gMain ldr r0, _080804A8 @ =sub_80804AC str r0, [r1, 0x8] bl sub_807F868 bl ScriptContext1_Stop pop {r4} pop {r0} bx r0 .align 2, 0 _080804A0: .4byte gBattleTypeFlags _080804A4: .4byte gMain _080804A8: .4byte sub_80804AC thumb_func_end BattleSetup_StartTrainerBattle thumb_func_start sub_80804AC sub_80804AC: @ 80804AC push {lr} ldr r0, _080804D8 @ =gUnknown_20386AC ldrh r0, [r0] cmp r0, 0x9 bne _08080508 ldr r0, _080804DC @ =gBattleOutcome ldrb r0, [r0] bl IsPlayerDefeated adds r1, r0, 0 cmp r1, 0x1 bne _080804E8 ldr r0, _080804E0 @ =gSpecialVar_Result strh r1, [r0] ldr r0, _080804E4 @ =gUnknown_20386CC ldrh r0, [r0] ands r1, r0 cmp r1, 0 beq _08080530 bl sp000_heal_pokemon b _080804EE .align 2, 0 _080804D8: .4byte gUnknown_20386AC _080804DC: .4byte gBattleOutcome _080804E0: .4byte gSpecialVar_Result _080804E4: .4byte gUnknown_20386CC _080804E8: ldr r0, _08080500 @ =gSpecialVar_Result movs r1, 0 strh r1, [r0] _080804EE: ldr r0, _08080504 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic bl SetMainCallback2 bl sub_80803FC bl sub_81139BC b _0808054E .align 2, 0 _08080500: .4byte gSpecialVar_Result _08080504: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic _08080508: ldr r0, _0808051C @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 bne _08080524 ldr r0, _08080520 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic bl SetMainCallback2 b _0808054E .align 2, 0 _0808051C: .4byte gTrainerBattleOpponent_A _08080520: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic _08080524: ldr r0, _08080538 @ =gBattleOutcome ldrb r0, [r0] bl IsPlayerDefeated cmp r0, 0x1 bne _08080540 _08080530: ldr r0, _0808053C @ =c2_whiteout bl SetMainCallback2 b _0808054E .align 2, 0 _08080538: .4byte gBattleOutcome _0808053C: .4byte c2_whiteout _08080540: ldr r0, _08080554 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic bl SetMainCallback2 bl sub_80803FC bl sub_81139BC _0808054E: pop {r0} bx r0 .align 2, 0 _08080554: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic thumb_func_end sub_80804AC thumb_func_start sub_8080558 sub_8080558: @ 8080558 push {lr} ldr r0, _08080570 @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 bne _08080578 ldr r0, _08080574 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic bl SetMainCallback2 b _080805A6 .align 2, 0 _08080570: .4byte gTrainerBattleOpponent_A _08080574: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic _08080578: ldr r0, _0808058C @ =gBattleOutcome ldrb r0, [r0] bl IsPlayerDefeated cmp r0, 0x1 bne _08080594 ldr r0, _08080590 @ =c2_whiteout bl SetMainCallback2 b _080805A6 .align 2, 0 _0808058C: .4byte gBattleOutcome _08080590: .4byte c2_whiteout _08080594: ldr r0, _080805AC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic bl SetMainCallback2 bl sub_80803FC bl sub_810CDE8 bl sub_81138F8 _080805A6: pop {r0} bx r0 .align 2, 0 _080805AC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic thumb_func_end sub_8080558 thumb_func_start sub_80805B0 sub_80805B0: @ 80805B0 push {lr} ldr r1, _080805CC @ =gBattleTypeFlags movs r0, 0x8 str r0, [r1] ldr r1, _080805D0 @ =gMain ldr r0, _080805D4 @ =sub_8080558 str r0, [r1, 0x8] bl sub_807F868 bl ScriptContext1_Stop pop {r0} bx r0 .align 2, 0 _080805CC: .4byte gBattleTypeFlags _080805D0: .4byte gMain _080805D4: .4byte sub_8080558 thumb_func_end sub_80805B0 thumb_func_start sub_80805D8 sub_80805D8: @ 80805D8 push {lr} bl sub_80806D8 bl ShowFieldMessage pop {r0} bx r0 thumb_func_end sub_80805D8 thumb_func_start BattleSetup_GetScriptAddrAfterBattle BattleSetup_GetScriptAddrAfterBattle: @ 80805E8 push {lr} ldr r0, _080805F8 @ =gUnknown_20386C4 ldr r0, [r0] cmp r0, 0 bne _080805F4 ldr r0, _080805FC @ =gUnknown_81C555B _080805F4: pop {r1} bx r1 .align 2, 0 _080805F8: .4byte gUnknown_20386C4 _080805FC: .4byte gUnknown_81C555B thumb_func_end BattleSetup_GetScriptAddrAfterBattle thumb_func_start BattleSetup_GetTrainerPostBattleScript BattleSetup_GetTrainerPostBattleScript: @ 8080600 push {lr} ldr r0, _08080610 @ =gUnknown_20386C8 ldr r0, [r0] cmp r0, 0 bne _0808060C ldr r0, _08080614 @ =gUnknown_81C555B _0808060C: pop {r1} bx r1 .align 2, 0 _08080610: .4byte gUnknown_20386C8 _08080614: .4byte gUnknown_81C555B thumb_func_end BattleSetup_GetTrainerPostBattleScript thumb_func_start sub_8080618 sub_8080618: @ 8080618 push {lr} bl sub_8080734 bl ShowFieldMessage pop {r0} bx r0 thumb_func_end sub_8080618 thumb_func_start sub_8080628 sub_8080628: @ 8080628 push {lr} ldr r0, _08080660 @ =gUnknown_203ADFA ldrb r0, [r0] subs r0, 0x2 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bls _080806BE ldr r0, _08080664 @ =gUnknown_20386AC ldrh r0, [r0] cmp r0, 0x1 beq _080806BE cmp r0, 0x8 beq _080806BE ldr r0, _08080668 @ =gTrainerBattleOpponent_A ldrh r0, [r0] bl GetTrainerEncounterMusicId lsls r0, 24 lsrs r0, 24 cmp r0, 0xD bhi _080806B8 lsls r0, 2 ldr r1, _0808066C @ =_08080670 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08080660: .4byte gUnknown_203ADFA _08080664: .4byte gUnknown_20386AC _08080668: .4byte gTrainerBattleOpponent_A _0808066C: .4byte _08080670 .align 2, 0 _08080670: .4byte _080806AE .4byte _080806A8 .4byte _080806A8 .4byte _080806B8 .4byte _080806AE .4byte _080806AE .4byte _080806B8 .4byte _080806B8 .4byte _080806AE .4byte _080806A8 .4byte _080806AE .4byte _080806AE .4byte _080806AE .4byte _080806AE _080806A8: movs r0, 0x8E lsls r0, 1 b _080806BA _080806AE: ldr r0, _080806B4 @ =0x0000011d b _080806BA .align 2, 0 _080806B4: .4byte 0x0000011d _080806B8: ldr r0, _080806C4 @ =0x0000011b _080806BA: bl PlayNewMapMusic _080806BE: pop {r0} bx r0 .align 2, 0 _080806C4: .4byte 0x0000011b thumb_func_end sub_8080628 thumb_func_start sub_80806C8 sub_80806C8: @ 80806C8 push {lr} cmp r0, 0 bne _080806D0 ldr r0, _080806D4 @ =gUnknown_84161CD _080806D0: pop {r1} bx r1 .align 2, 0 _080806D4: .4byte gUnknown_84161CD thumb_func_end sub_80806C8 thumb_func_start sub_80806D8 sub_80806D8: @ 80806D8 push {lr} ldr r0, _080806E8 @ =gUnknown_20386B4 ldr r0, [r0] bl sub_80806C8 pop {r1} bx r1 .align 2, 0 _080806E8: .4byte gUnknown_20386B4 thumb_func_end sub_80806D8 thumb_func_start sub_80806EC sub_80806EC: @ 80806EC push {r4,lr} ldr r0, _08080708 @ =gUnknown_20386B8 ldr r0, [r0] ldr r4, _0808070C @ =gStringVar4 bl sub_80806C8 adds r1, r0, 0 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _08080708: .4byte gUnknown_20386B8 _0808070C: .4byte gStringVar4 thumb_func_end sub_80806EC thumb_func_start sub_8080710 sub_8080710: @ 8080710 push {r4,lr} ldr r4, _0808072C @ =gStringVar4 ldr r0, _08080730 @ =gUnknown_20386BC ldr r0, [r0] bl sub_80806C8 adds r1, r0, 0 adds r0, r4, 0 bl StringExpandPlaceholders adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0808072C: .4byte gStringVar4 _08080730: .4byte gUnknown_20386BC thumb_func_end sub_8080710 thumb_func_start sub_8080734 sub_8080734: @ 8080734 push {lr} ldr r0, _08080744 @ =gUnknown_20386C0 ldr r0, [r0] bl sub_80806C8 pop {r1} bx r1 .align 2, 0 _08080744: .4byte gUnknown_20386C0 thumb_func_end sub_8080734 .align 2, 0 @ Don't pad with nop.