summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--[-rwxr-xr-x]asm/field_tasks.s53
-rw-r--r--data/field_tasks.s17
-rw-r--r--include/field_tasks.h6
-rw-r--r--[-rwxr-xr-x]src/field_specials.c0
-rw-r--r--[-rwxr-xr-x]src/field_tasks.c48
5 files changed, 54 insertions, 70 deletions
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index 2d2c0abe6..b869f2ad1 100755..100644
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -6,59 +6,6 @@
.text
- thumb_func_start DummyPerStepCallback
-DummyPerStepCallback: @ 80695DC
- bx lr
- thumb_func_end DummyPerStepCallback
-
- thumb_func_start sub_80695E0
-sub_80695E0: @ 80695E0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- adds r0, r4, 0
- bl sub_80576A0
- lsls r0, 24
- cmp r0, 0
- beq _080695F8
- adds r0, r5, 0
- b _08069630
-_080695F8:
- adds r0, r4, 0
- bl sub_80576B4
- lsls r0, 24
- cmp r0, 0
- beq _0806960A
- adds r0, r5, 0
- adds r0, 0x8
- b _08069630
-_0806960A:
- adds r0, r4, 0
- bl sub_80576C8
- lsls r0, 24
- cmp r0, 0
- beq _0806961C
- adds r0, r5, 0
- adds r0, 0x10
- b _08069630
-_0806961C:
- adds r0, r4, 0
- bl sub_80576DC
- lsls r0, 24
- cmp r0, 0
- bne _0806962C
- movs r0, 0
- b _08069630
-_0806962C:
- adds r0, r5, 0
- adds r0, 0x18
-_08069630:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80695E0
-
thumb_func_start sub_8069638
sub_8069638: @ 8069638
push {r4-r7,lr}
diff --git a/data/field_tasks.s b/data/field_tasks.s
index d8b4f1146..a4b78df2e 100644
--- a/data/field_tasks.s
+++ b/data/field_tasks.s
@@ -3,23 +3,6 @@
.section .rodata
-gUnknown_08376384:: @ 8376384
- .byte 0, 0,0x59, 2, 0, 1,0x61, 2
- .byte 0, -1,0x59, 2, 0, 0,0x61, 2
- .byte 0, 0,0x52, 2, 1, 0,0x53, 2
- .byte -1, 0,0x52, 2, 0, 0,0x53, 2
-
-gUnknown_083763A4:: @ 83763A4
- .byte 0, 0,0x5A, 2, 0, 1,0x62, 2
- .byte 0, -1,0x5A, 2, 0, 0,0x62, 2
- .byte 0, 0,0x54, 2, 1, 0,0x55, 2
- .byte -1, 0,0x54, 2, 0, 0,0x55, 2
-
-gUnknown_083763C4:: @ 83763C4
- .byte 0, 0,0x58, 2, 0, 1,0x60, 2
- .byte 0, -1,0x58, 2, 0, 0,0x60, 2
- .byte 0, 0,0x50, 2, 1, 0,0x51, 2
- .byte -1, 0,0x50, 2, 0, 0,0x51, 2
.align 1
gUnknown_083763E4:: @ 83763E4
diff --git a/include/field_tasks.h b/include/field_tasks.h
index 53e704395..761d69ada 100644
--- a/include/field_tasks.h
+++ b/include/field_tasks.h
@@ -1,6 +1,12 @@
#ifndef GUARD_FIELD_TASKS_H
#define GUARD_FIELD_TASKS_H
+struct MetatileOffset {
+ s8 x;
+ s8 y;
+ u16 tileId;
+};
+
void SetUpFieldTasks();
void ActivatePerStepCallback(u8);
void ResetFieldTasksArgs(void);
diff --git a/src/field_specials.c b/src/field_specials.c
index 2cb2cf795..2cb2cf795 100755..100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
diff --git a/src/field_tasks.c b/src/field_tasks.c
index d52bafe1c..39c2146d6 100755..100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -10,6 +10,7 @@
#include "script.h"
#include "field_special_scene.h"
#include "secret_base.h"
+#include "metatile_behavior.h"
#include "field_tasks.h"
void DummyPerStepCallback(u8);
@@ -128,3 +129,50 @@ void ResetFieldTasksArgs(void)
taskData[2] = 0;
}
}
+
+const struct MetatileOffset gUnknown_08376384[][2] = {
+ {{ 0, 0,0x259}, { 0, 1,0x261}},
+ {{ 0, -1,0x259}, { 0, 0,0x261}},
+ {{ 0, 0,0x252}, { 1, 0,0x253}},
+ {{ -1, 0,0x252}, { 0, 0,0x253}}
+};
+
+const struct MetatileOffset gUnknown_083763A4[][2] = {
+ {{ 0, 0,0x25A}, { 0, 1,0x262}},
+ {{ 0, -1,0x25A}, { 0, 0,0x262}},
+ {{ 0, 0,0x254}, { 1, 0,0x255}},
+ {{ -1, 0,0x254}, { 0, 0,0x255}}
+};
+
+const struct MetatileOffset gUnknown_083763C4[][2] = {
+ {{ 0, 0,0x258}, { 0, 1,0x260}},
+ {{ 0, -1,0x258}, { 0, 0,0x260}},
+ {{ 0, 0,0x250}, { 1, 0,0x251}},
+ {{ -1, 0,0x250}, { 0, 0,0x251}}
+};
+
+void DummyPerStepCallback(u8 taskId) {}
+
+const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 a1)
+{
+ if (sub_80576A0(a1))
+ {
+ return a0[0];
+ }
+ else if (sub_80576B4(a1))
+ {
+ return a0[1];
+ }
+ else if (sub_80576C8(a1))
+ {
+ return a0[2];
+ }
+ else if (sub_80576DC(a1))
+ {
+ return a0[3];
+ }
+ else
+ {
+ return NULL;
+ }
+}