.include "constants/gba_constants.s" .include "constants/species_constants.s" .include "asm/macros.s" .syntax unified .text thumb_func_start GetSafariZoneFlag GetSafariZoneFlag: @ 80C8184 push {lr} ldr r0, _080C8194 @ =0x0000082c bl FlagGet lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 .align 2, 0 _080C8194: .4byte 0x0000082c thumb_func_end GetSafariZoneFlag thumb_func_start SetSafariZoneFlag SetSafariZoneFlag: @ 80C8198 push {lr} ldr r0, _080C81A4 @ =0x0000082c bl FlagSet pop {r0} bx r0 .align 2, 0 _080C81A4: .4byte 0x0000082c thumb_func_end SetSafariZoneFlag thumb_func_start ResetSafariZoneFlag ResetSafariZoneFlag: @ 80C81A8 push {lr} ldr r0, _080C81B4 @ =0x0000082c bl FlagReset pop {r0} bx r0 .align 2, 0 _080C81B4: .4byte 0x0000082c thumb_func_end ResetSafariZoneFlag thumb_func_start sub_80C81B8 sub_80C81B8: @ 80C81B8 push {lr} movs r0, 0x11 bl sav12_xor_increment bl SetSafariZoneFlag bl sub_80C82D8 ldr r1, _080C81DC @ =gUnknown_02038808 movs r0, 0x1E strb r0, [r1] ldr r1, _080C81E0 @ =gUnknown_0203880A movs r2, 0xFA lsls r2, 1 adds r0, r2, 0 strh r0, [r1] pop {r0} bx r0 .align 2, 0 _080C81DC: .4byte gUnknown_02038808 _080C81E0: .4byte gUnknown_0203880A thumb_func_end sub_80C81B8 thumb_func_start sub_80C81E4 sub_80C81E4: @ 80C81E4 push {lr} bl ResetSafariZoneFlag bl sub_80C82D8 ldr r1, _080C8200 @ =gUnknown_02038808 movs r0, 0 strb r0, [r1] ldr r1, _080C8204 @ =gUnknown_0203880A movs r0, 0 strh r0, [r1] pop {r0} bx r0 .align 2, 0 _080C8200: .4byte gUnknown_02038808 _080C8204: .4byte gUnknown_0203880A thumb_func_end sub_80C81E4 thumb_func_start safari_step safari_step: @ 80C8208 push {lr} bl GetSafariZoneFlag cmp r0, 0 beq _080C8224 bl sub_80C8508 ldr r1, _080C8228 @ =gUnknown_0203880A ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] lsls r0, 16 cmp r0, 0 beq _080C822C _080C8224: movs r0, 0 b _080C8234 .align 2, 0 _080C8228: .4byte gUnknown_0203880A _080C822C: ldr r0, _080C8238 @ =gUnknown_081C3448 bl ScriptContext1_SetupScript movs r0, 0x1 _080C8234: pop {r1} bx r1 .align 2, 0 _080C8238: .4byte gUnknown_081C3448 thumb_func_end safari_step thumb_func_start sub_80C823C sub_80C823C: @ 80C823C push {lr} ldr r0, _080C8248 @ =gUnknown_081C342D bl ScriptContext1_SetupScript pop {r0} bx r0 .align 2, 0 _080C8248: .4byte gUnknown_081C342D thumb_func_end sub_80C823C thumb_func_start sub_80C824C sub_80C824C: @ 80C824C push {lr} ldr r0, _080C8260 @ =gUnknown_02038808 ldrb r0, [r0] cmp r0, 0 beq _080C8268 ldr r0, _080C8264 @ =c2_exit_to_overworld_2_switch bl SetMainCallback2 b _080C82B0 .align 2, 0 _080C8260: .4byte gUnknown_02038808 _080C8264: .4byte c2_exit_to_overworld_2_switch _080C8268: ldr r0, _080C8288 @ =gUnknown_02024D26 ldrb r0, [r0] cmp r0, 0x8 bne _080C829C ldr r0, _080C828C @ =gUnknown_081C340A bl ScriptContext2_RunNewScript bl warp_in ldr r1, _080C8290 @ =gUnknown_0300485C ldr r0, _080C8294 @ =sub_8080E44 str r0, [r1] ldr r0, _080C8298 @ =CB2_LoadMap bl SetMainCallback2 b _080C82B0 .align 2, 0 _080C8288: .4byte gUnknown_02024D26 _080C828C: .4byte gUnknown_081C340A _080C8290: .4byte gUnknown_0300485C _080C8294: .4byte sub_8080E44 _080C8298: .4byte CB2_LoadMap _080C829C: cmp r0, 0x7 bne _080C82B0 ldr r0, _080C82B4 @ =gUnknown_081C3459 bl ScriptContext1_SetupScript bl ScriptContext1_Stop ldr r0, _080C82B8 @ =c2_exit_to_overworld_1_continue_scripts_restart_music bl SetMainCallback2 _080C82B0: pop {r0} bx r0 .align 2, 0 _080C82B4: .4byte gUnknown_081C3459 _080C82B8: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music thumb_func_end sub_80C824C thumb_func_start sub_80C82BC sub_80C82BC: @ 80C82BC push {lr} lsls r0, 24 lsrs r0, 20 ldr r1, _080C82D4 @ =gUnknown_0203880C adds r0, r1 movs r1, 0 movs r2, 0x10 bl memset pop {r0} bx r0 .align 2, 0 _080C82D4: .4byte gUnknown_0203880C thumb_func_end sub_80C82BC thumb_func_start sub_80C82D8 sub_80C82D8: @ 80C82D8 push {lr} ldr r0, _080C82E8 @ =gUnknown_0203880C movs r1, 0 movs r2, 0xA0 bl memset pop {r0} bx r0 .align 2, 0 _080C82E8: .4byte gUnknown_0203880C thumb_func_end sub_80C82D8 thumb_func_start sub_80C82EC sub_80C82EC: @ 80C82EC push {r4-r6,lr} sub sp, 0x4 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer movs r3, 0 adds r5, r4, 0 ldr r4, _080C8344 @ =gSaveBlock1 _080C8302: ldr r1, _080C8348 @ =gUnknown_0203880C lsls r0, r3, 4 adds r2, r0, r1 movs r1, 0x5 ldrsb r1, [r4, r1] movs r0, 0x4 ldrsb r0, [r2, r0] cmp r1, r0 bne _080C8358 mov r0, sp movs r6, 0 ldrsh r1, [r2, r6] movs r6, 0 ldrsh r0, [r0, r6] cmp r1, r0 bne _080C8358 movs r0, 0x2 ldrsh r1, [r2, r0] movs r6, 0 ldrsh r0, [r5, r6] cmp r1, r0 bne _080C8358 ldr r0, _080C834C @ =gScriptResult strh r3, [r0] ldr r1, _080C8350 @ =gUnknown_083F7EB8 ldrb r0, [r2, 0x8] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldr r0, _080C8354 @ =gStringVar1 bl StringCopy b _080C836A .align 2, 0 _080C8344: .4byte gSaveBlock1 _080C8348: .4byte gUnknown_0203880C _080C834C: .4byte gScriptResult _080C8350: .4byte gUnknown_083F7EB8 _080C8354: .4byte gStringVar1 _080C8358: adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, 0x9 bls _080C8302 ldr r1, _080C8374 @ =gScriptResult ldr r2, _080C8378 @ =0x0000ffff adds r0, r2, 0 strh r0, [r1] _080C836A: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080C8374: .4byte gScriptResult _080C8378: .4byte 0x0000ffff thumb_func_end sub_80C82EC thumb_func_start sub_80C837C sub_80C837C: @ 80C837C push {r4-r7,lr} sub sp, 0x4 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords movs r5, 0 adds r6, r4, 0 ldr r0, _080C83E8 @ =gSaveBlock1 movs r7, 0x5 ldrsb r7, [r0, r7] mov r4, sp ldr r0, _080C83EC @ =gUnknown_0203880C mov r12, r0 _080C839C: lsls r0, r5, 4 mov r1, r12 adds r2, r0, r1 movs r0, 0x4 ldrsb r0, [r2, r0] cmp r7, r0 bne _080C83F4 ldrh r0, [r4] ldrh r1, [r2] subs r0, r1 strh r0, [r4] adds r3, r6, 0 ldrh r0, [r3] ldrh r1, [r2, 0x2] subs r0, r1 strh r0, [r3] movs r2, 0 ldrsh r0, [r4, r2] cmp r0, 0 bge _080C83C8 negs r0, r0 strh r0, [r4] _080C83C8: movs r2, 0 ldrsh r0, [r3, r2] cmp r0, 0 bge _080C83D4 negs r0, r0 strh r0, [r3] _080C83D4: movs r2, 0 ldrsh r0, [r4, r2] movs r2, 0 ldrsh r1, [r6, r2] adds r0, r1 cmp r0, 0x5 bgt _080C83F4 ldr r0, _080C83F0 @ =gScriptResult strh r5, [r0] b _080C8406 .align 2, 0 _080C83E8: .4byte gSaveBlock1 _080C83EC: .4byte gUnknown_0203880C _080C83F0: .4byte gScriptResult _080C83F4: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0x9 bls _080C839C ldr r1, _080C8410 @ =gScriptResult ldr r2, _080C8414 @ =0x0000ffff adds r0, r2, 0 strh r0, [r1] _080C8406: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080C8410: .4byte gScriptResult _080C8414: .4byte 0x0000ffff thumb_func_end sub_80C837C thumb_func_start unref_sub_80C8418 unref_sub_80C8418: @ 80C8418 push {lr} bl sub_80C82EC ldr r2, _080C8434 @ =gScriptResult ldrh r1, [r2] ldr r0, _080C8438 @ =0x0000ffff cmp r1, r0 beq _080C8440 adds r0, r1, 0 lsls r0, 4 ldr r1, _080C843C @ =gUnknown_02038814 adds r0, r1 b _080C8442 .align 2, 0 _080C8434: .4byte gScriptResult _080C8438: .4byte 0x0000ffff _080C843C: .4byte gUnknown_02038814 _080C8440: movs r0, 0 _080C8442: pop {r1} bx r1 thumb_func_end unref_sub_80C8418 thumb_func_start sub_80C8448 sub_80C8448: @ 80C8448 push {lr} bl sub_80C837C ldr r2, _080C8464 @ =gScriptResult ldrh r1, [r2] ldr r0, _080C8468 @ =0x0000ffff cmp r1, r0 beq _080C8470 adds r0, r1, 0 lsls r0, 4 ldr r1, _080C846C @ =gUnknown_02038814 adds r0, r1 b _080C8472 .align 2, 0 _080C8464: .4byte gScriptResult _080C8468: .4byte 0x0000ffff _080C846C: .4byte gUnknown_02038814 _080C8470: movs r0, 0 _080C8472: pop {r1} bx r1 thumb_func_end sub_80C8448 thumb_func_start sub_80C8478 sub_80C8478: @ 80C8478 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 lsls r0, 24 movs r2, 0 ldr r3, _080C84E8 @ =gUnknown_0203880C mov r6, sp adds r6, 0x2 ldr r7, _080C84EC @ =gSaveBlock1 movs r1, 0x8 adds r1, r3 mov r9, r1 movs r4, 0xFF lsls r4, 3 adds r1, r7, r4 lsrs r0, 21 adds r0, r1 mov r8, r0 _080C84A0: lsls r5, r2, 4 adds r4, r5, r3 movs r0, 0x4 ldrsb r0, [r4, r0] cmp r0, 0 bne _080C84F0 movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 bne _080C84F0 movs r1, 0x2 ldrsh r0, [r4, r1] cmp r0, 0 bne _080C84F0 mov r0, sp adds r1, r6, 0 bl GetXYCoordsOneStepInFrontOfPlayer ldrb r0, [r7, 0x5] strb r0, [r4, 0x4] mov r3, r9 adds r2, r5, r3 mov r3, r8 ldr r0, [r3] ldr r1, [r3, 0x4] str r0, [r2] str r1, [r2, 0x4] movs r0, 0x64 strb r0, [r4, 0x5] mov r0, sp ldrh r0, [r0] strh r0, [r4] ldrh r0, [r6] strh r0, [r4, 0x2] b _080C84FA .align 2, 0 _080C84E8: .4byte gUnknown_0203880C _080C84EC: .4byte gSaveBlock1 _080C84F0: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x9 bls _080C84A0 _080C84FA: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80C8478 thumb_func_start sub_80C8508 sub_80C8508: @ 80C8508 push {r4,r5,lr} movs r4, 0 ldr r5, _080C8538 @ =gUnknown_0203880C _080C850E: lsls r0, r4, 4 adds r1, r0, r5 ldrb r0, [r1, 0x5] cmp r0, 0 beq _080C8528 subs r0, 0x1 strb r0, [r1, 0x5] lsls r0, 24 cmp r0, 0 bne _080C8528 adds r0, r4, 0 bl sub_80C82BC _080C8528: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x9 bls _080C850E pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080C8538: .4byte gUnknown_0203880C thumb_func_end sub_80C8508 thumb_func_start unref_sub_80C853C unref_sub_80C853C: @ 80C853C push {lr} bl sub_80C82EC ldr r3, _080C8564 @ =gScriptResult ldrh r1, [r3] ldr r0, _080C8568 @ =0x0000ffff cmp r1, r0 beq _080C8574 ldr r0, _080C856C @ =gStringVar2 ldr r2, _080C8570 @ =gUnknown_0203880C lsls r1, 4 adds r1, r2 ldrb r1, [r1, 0x5] movs r2, 0x2 movs r3, 0x3 bl ConvertIntToDecimalStringN movs r0, 0x1 b _080C8576 .align 2, 0 _080C8564: .4byte gScriptResult _080C8568: .4byte 0x0000ffff _080C856C: .4byte gStringVar2 _080C8570: .4byte gUnknown_0203880C _080C8574: movs r0, 0 _080C8576: pop {r1} bx r1 thumb_func_end unref_sub_80C853C .align 2, 0 @ Don't pad with nop.