summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/field_tasks.s69
-rwxr-xr-x[-rw-r--r--]include/vars.h9
-rwxr-xr-xsrc/field_tasks.c79
3 files changed, 61 insertions, 96 deletions
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index 83e0a8371..ab4d75609 100755
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -6,75 +6,6 @@
.text
- thumb_func_start sub_8069CFC
-sub_8069CFC: @ 8069CFC
- push {r4,r5,lr}
- lsls r0, 16
- asrs r5, r0, 16
- lsls r1, 16
- asrs r4, r1, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8069CB8
- cmp r0, 0
- beq _08069D2A
- ldr r1, _08069D30 @ =gUnknown_083763E4
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- bl GetVarPointer
- subs r2, r5, 0x3
- movs r1, 0x1
- lsls r1, r2
- ldrh r2, [r0]
- orrs r1, r2
- strh r1, [r0]
-_08069D2A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08069D30: .4byte gUnknown_083763E4
- thumb_func_end sub_8069CFC
-
- thumb_func_start sub_8069D34
-sub_8069D34: @ 8069D34
- push {r4,r5,lr}
- lsls r0, 16
- asrs r5, r0, 16
- lsls r1, 16
- asrs r4, r1, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8069CB8
- cmp r0, 0
- beq _08069D66
- ldr r1, _08069D6C @ =gUnknown_083763E4
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- bl VarGet
- lsls r0, 16
- subs r2, r5, 0x3
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r2
- ands r1, r0
- cmp r1, 0
- bne _08069D70
-_08069D66:
- movs r0, 0
- b _08069D72
- .align 2, 0
-_08069D6C: .4byte gUnknown_083763E4
-_08069D70:
- movs r0, 0x1
-_08069D72:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8069D34
-
thumb_func_start sub_8069D78
sub_8069D78: @ 8069D78
push {r4-r7,lr}
diff --git a/include/vars.h b/include/vars.h
index cb5bb3296..eb527ec09 100644..100755
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,7 +1,16 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
+#define VAR_0x4001 0x4001
+#define VAR_0x4002 0x4002
#define VAR_0x4003 0x4003
+#define VAR_0x4004 0x4004
+#define VAR_0x4005 0x4005
+#define VAR_0x4006 0x4006
+#define VAR_0x4007 0x4007
+#define VAR_0x4008 0x4008
+#define VAR_0x4009 0x4009
+#define VAR_0x400A 0x400A
#define VAR_0x401F 0x401F
#define VAR_RECYCLE_GOODS 0x4020
#define VAR_REPEL_STEP_COUNT 0x4021
diff --git a/src/field_tasks.c b/src/field_tasks.c
index 88dd025cc..92b8d3bb8 100755
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -5,6 +5,8 @@
#include "global.h"
#include "task.h"
#include "main.h"
+#include "vars.h"
+#include "event_data.h"
#include "rom4.h"
#include "clock.h"
#include "script.h"
@@ -537,35 +539,35 @@ void PerStepCallback_8069AA0(u8 taskId)
}
const u16 gUnknown_083763E4[] = {
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x4001,
- 0x4002,
- 0x4003,
- 0x4004,
- 0,
- 0,
- 0x4005,
- 0x4006,
- 0x4007,
- 0,
- 0,
- 0x4008,
- 0x4009,
- 0x400A,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ VAR_0x4001,
+ VAR_0x4002,
+ VAR_0x4003,
+ VAR_0x4004,
+ 0,
+ 0,
+ VAR_0x4005,
+ VAR_0x4006,
+ VAR_0x4007,
+ 0,
+ 0,
+ VAR_0x4008,
+ VAR_0x4009,
+ VAR_0x400A,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
};
-bool8 sub_8069CB8(s16 x, s16 y)
+bool32 sub_8069CB8(s16 x, s16 y)
{
if ((u16)(x - 3) < 11 && (u16)(y - 6) < 14 && gUnknown_083763E4[y])
{
@@ -573,3 +575,26 @@ bool8 sub_8069CB8(s16 x, s16 y)
}
return FALSE;
}
+
+void sub_8069CFC(s16 x, s16 y)
+{
+ if (sub_8069CB8(x, y))
+ {
+ *GetVarPointer(gUnknown_083763E4[y]) |= (1 << (x - 3));
+ }
+}
+
+bool32 sub_8069D34(s16 x, s16 y)
+{
+ u32 var;
+ if (!sub_8069CB8(x, y))
+ {
+ return FALSE;
+ }
+ var = VarGet(gUnknown_083763E4[y]) << 16;
+ if (((1 << 16) << (x - 3)) & var)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}