summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfl4shk <fl4shk@users.noreply.github.com>2016-11-09 02:51:59 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2016-11-08 23:51:59 -0800
commit926ecbe8226cb7dffdca2e91b0fe81de3ceafcd6 (patch)
tree068f62a28681a4c4ffb6e574909859eb5fc2205c
parented1f329d168f398df644bebdc4904184c0eabe23 (diff)
safari_zone.c (#94)
* about halfway through with safari_zone.c * Figured out more of UnkSafariZoneStruct * Finished safari_zone.c
-rw-r--r--.gitignore1
-rw-r--r--asm/safari_zone.s544
-rw-r--r--ld_script.txt2
-rw-r--r--src/safari_zone.c305
-rw-r--r--sym_ewram.txt7
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