diff options
author | fl4shk <fl4shk@users.noreply.github.com> | 2016-11-09 02:51:59 -0500 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2016-11-08 23:51:59 -0800 |
commit | 926ecbe8226cb7dffdca2e91b0fe81de3ceafcd6 (patch) | |
tree | 068f62a28681a4c4ffb6e574909859eb5fc2205c | |
parent | ed1f329d168f398df644bebdc4904184c0eabe23 (diff) |
safari_zone.c (#94)
* about halfway through with safari_zone.c
* Figured out more of UnkSafariZoneStruct
* Finished safari_zone.c
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | asm/safari_zone.s | 544 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/safari_zone.c | 305 | ||||
-rw-r--r-- | sym_ewram.txt | 7 |
5 files changed, 309 insertions, 550 deletions
diff --git a/.gitignore b/.gitignore index 61d4c2d7a..79b9641a0 100644 --- a/.gitignore +++ b/.gitignore @@ -31,5 +31,6 @@ types_*.taghl *.swp *.swo *.s.old +*.s.old2 *.dump *.sa* diff --git a/asm/safari_zone.s b/asm/safari_zone.s deleted file mode 100644 index 6785c17af..000000000 --- a/asm/safari_zone.s +++ /dev/null @@ -1,544 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .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. diff --git a/ld_script.txt b/ld_script.txt index 730b534c1..fd8dbc72a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -135,7 +135,7 @@ SECTIONS { src/truck_scene.o(.text); asm/porthole.o(.text); asm/rotating_gate.o(.text); - asm/safari_zone.o(.text); + src/safari_zone.o(.text); asm/contest_link_80C857C.o(.text); asm/item_use.o(.text); asm/battle_anim_80CA710.o(.text); diff --git a/src/safari_zone.c b/src/safari_zone.c new file mode 100644 index 000000000..32cf35ca2 --- /dev/null +++ b/src/safari_zone.c @@ -0,0 +1,305 @@ +#include "global.h" +#include "flag.h" +#include "main.h" +#include "script.h" +#include "string_util.h" + + +#define FLAG_ID_SAFARI_ZONE 0x082C + +struct UnkSafariZoneStruct +{ + /*0x00*/ s16 x; + /*0x02*/ s16 y; + /*0x04*/ s8 mapNum; + /*0x05*/ u8 counter; + /*0x06*/ u8 field_4; + /*0x07*/ u8 field_5; + /*0x08*/ struct Pokeblock pokeblock; +}; + + +void ClearEveryUnkSafariZoneStruct(void); +void sub_80C8508(void); +extern void c2_exit_to_overworld_2_switch(void); +extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); +extern void sub_8080E44(void); +extern void CB2_LoadMap(void); +extern void sav12_xor_increment(u8); +extern void warp_in(void); +extern void GetXYCoordsOneStepInFrontOfPlayer(void *, void *); +extern void PlayerGetDestCoords(u16 *, u16 *); + +extern u8 gUnknown_02024D26; +extern u8 gUnknown_02038808; +extern u16 gUnknown_0203880A; + +extern struct UnkSafariZoneStruct gUnkSafariZoneStructArr[10]; + +extern void (*gUnknown_0300485C)(void); + +extern u8 gUnknown_081C340A; +extern u8 gUnknown_081C342D; +extern u8 gUnknown_081C3448; +extern u8 gUnknown_081C3459; +extern u8 *gUnknown_083F7EB8[]; + +extern u16 gScriptResult; + + +bool32 GetSafariZoneFlag(void) +{ + bool8 ret = FlagGet(FLAG_ID_SAFARI_ZONE); + + return ret; +} + +void SetSafariZoneFlag(void) +{ + FlagSet(FLAG_ID_SAFARI_ZONE); +} + +void ResetSafariZoneFlag(void) +{ + FlagReset(FLAG_ID_SAFARI_ZONE); +} + + +void sub_80C81B8(void) +{ + sav12_xor_increment(0x11); + SetSafariZoneFlag(); + ClearEveryUnkSafariZoneStruct(); + + gUnknown_02038808 = 0x1E; + gUnknown_0203880A = 0x1F4; +} + +void sub_80C81E4(void) +{ + ResetSafariZoneFlag(); + ClearEveryUnkSafariZoneStruct(); + + gUnknown_02038808 = 0; + gUnknown_0203880A = 0; +} + +bool8 safari_step(void) +{ + if (GetSafariZoneFlag() == FALSE) + { + return FALSE; + } + + sub_80C8508(); + + if (!(--gUnknown_0203880A)) + { + ScriptContext1_SetupScript(&gUnknown_081C3448); + return TRUE; + } + + return FALSE; +} + +void sub_80C823C(void) +{ + ScriptContext1_SetupScript(&gUnknown_081C342D); +} + +void sub_80C824C(void) +{ + if (gUnknown_02038808 != 0) + { + SetMainCallback2(c2_exit_to_overworld_2_switch); + } + else if (gUnknown_02024D26 == 8) + { + ScriptContext2_RunNewScript(&gUnknown_081C340A); + warp_in(); + gUnknown_0300485C = sub_8080E44; + SetMainCallback2(CB2_LoadMap); + } + else if (gUnknown_02024D26 == 7) + { + ScriptContext1_SetupScript(&gUnknown_081C3459); + ScriptContext1_Stop(); + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + } +} + +void ClearSingleUnkSafariZoneStruct(u8 index) +{ + memset(&gUnkSafariZoneStructArr[index], 0, + sizeof(struct UnkSafariZoneStruct)); +} + +void ClearEveryUnkSafariZoneStruct(void) +{ + // 10 is the number of struct UnkSafariZoneStruct's in + // gUnkSafariZoneStructArr. It might be a good idea to create a #define + // for it. + memset(gUnkSafariZoneStructArr, 0, sizeof(struct UnkSafariZoneStruct) + * 10); +} + +void sub_80C82EC(void) +{ + s16 x, y; + u16 i; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + + // 10 is the number of struct UnkSafariZoneStruct's in + // gUnkSafariZoneStructArr. It might be a good idea to create a #define + // for it. + for (i = 0; i < 10; i++) + { + if (gSaveBlock1.location.mapNum == gUnkSafariZoneStructArr[i].mapNum + && gUnkSafariZoneStructArr[i].x == x + && gUnkSafariZoneStructArr[i].y == y) + { + gScriptResult = i; + + StringCopy(gStringVar1, gUnknown_083F7EB8 + [gUnkSafariZoneStructArr[i].pokeblock.color]); + + return; + } + } + + gScriptResult = -1; +} + +void sub_80C837C(void) +{ + s16 x, y; + u16 i; + + PlayerGetDestCoords(&x, &y); + + // 10 is the number of struct UnkSafariZoneStruct's in + // gUnkSafariZoneStructArr. It might be a good idea to create a #define + // for it. + for (i = 0; i < 10; i++) + { + if (gSaveBlock1.location.mapNum + == gUnkSafariZoneStructArr[i].mapNum) + { + x -= gUnkSafariZoneStructArr[i].x; + y -= gUnkSafariZoneStructArr[i].y; + + if (x < 0) + { + x *= -1; + } + if (y < 0) + { + y *= -1; + } + + if ((x + y) <= 5) + { + gScriptResult = i; + return; + } + } + } + + gScriptResult = -1; +} + +struct Pokeblock *unref_sub_80C8418(void) +{ + sub_80C82EC(); + + if (gScriptResult == 0xFFFF) + { + return NULL; + } + + return &gUnkSafariZoneStructArr[gScriptResult].pokeblock; +} + + +struct Pokeblock *sub_80C8448(void) +{ + sub_80C837C(); + + if (gScriptResult == 0xFFFF) + { + return NULL; + } + + return &gUnkSafariZoneStructArr[gScriptResult].pokeblock; +} + + +void sub_80C8478(u8 pokeblock_index) +{ + s16 x, y; + u8 i; + + // 10 is the number of struct UnkSafariZoneStruct's in + // gUnkSafariZoneStructArr. It might be a good idea to create a #define + // for it. + for (i = 0; i < 10; i++) + { + if (gUnkSafariZoneStructArr[i].mapNum == 0 + && gUnkSafariZoneStructArr[i].x == 0 + && gUnkSafariZoneStructArr[i].y == 0) + { + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + + gUnkSafariZoneStructArr[i].mapNum + = gSaveBlock1.location.mapNum; + + gUnkSafariZoneStructArr[i].pokeblock + = gSaveBlock1.pokeblocks[pokeblock_index]; + + gUnkSafariZoneStructArr[i].counter = 0x64; + gUnkSafariZoneStructArr[i].x = x; + gUnkSafariZoneStructArr[i].y = y; + break; + } + } +} + +void sub_80C8508(void) +{ + u8 i; + + // 10 is the number of struct UnkSafariZoneStruct's in + // gUnkSafariZoneStructArr. It might be a good idea to create a #define + // for it. + for (i = 0; i < 10; i++) + { + if (gUnkSafariZoneStructArr[i].counter != 0) + { + gUnkSafariZoneStructArr[i].counter--; + + if (gUnkSafariZoneStructArr[i].counter == 0) + { + ClearSingleUnkSafariZoneStruct(i); + } + } + } +} + +bool8 unref_sub_80C853C(void) +{ + sub_80C82EC(); + + if (gScriptResult == 0xFFFF) + { + return FALSE; + } + + ConvertIntToDecimalStringN(gStringVar2, + gUnkSafariZoneStructArr[gScriptResult].counter, + STR_CONV_MODE_LEADING_ZEROS, 3); + + return TRUE; +} + + diff --git a/sym_ewram.txt b/sym_ewram.txt index 3e9526254..2978383f5 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -914,11 +914,8 @@ gUnknown_02038808: @ 2038808 gUnknown_0203880A: @ 203880A .space 0x2 -gUnknown_0203880C: @ 203880C - .space 0x8 - -gUnknown_02038814: @ 2038814 - .space 0x98 +gUnkSafariZoneStructArr: @ 203880C + .space 0xa0 gUnknown_020388AC: @ 20388AC .space 0x4 |