summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_map_obj.s308
-rwxr-xr-x[-rw-r--r--]include/field_map_obj.h4
-rwxr-xr-xsrc/field_map_obj.c56
3 files changed, 57 insertions, 311 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index ea60b8293..d4f3040f5 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -6,314 +6,6 @@
.text
- thumb_func_start sub_805E5DC
-sub_805E5DC: @ 805E5DC
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E5F8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E5FC @ =sub_805E600
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E5F8: .4byte gMapObjects
-_0805E5FC: .4byte sub_805E600
- thumb_func_end sub_805E5DC
-
- thumb_func_start sub_805E600
-sub_805E600: @ 805E600
- push {r4,lr}
- ldr r3, _0805E61C @ =gUnknown_0837540C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E61C: .4byte gUnknown_0837540C
- thumb_func_end sub_805E600
-
- thumb_func_start sub_805E620
-sub_805E620: @ 805E620
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E664 @ =gUnknown_08375418
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E64C
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E64C
- movs r0, 0x3
- strb r0, [r2]
-_0805E64C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E664: .4byte gUnknown_08375418
- thumb_func_end sub_805E620
-
- thumb_func_start sub_805E668
-sub_805E668: @ 805E668
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E684 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E688 @ =sub_805E68C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E684: .4byte gMapObjects
-_0805E688: .4byte sub_805E68C
- thumb_func_end sub_805E668
-
- thumb_func_start sub_805E68C
-sub_805E68C: @ 805E68C
- push {r4,lr}
- ldr r3, _0805E6A8 @ =gUnknown_0837541C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E6A8: .4byte gUnknown_0837541C
- thumb_func_end sub_805E68C
-
- thumb_func_start sub_805E6AC
-sub_805E6AC: @ 805E6AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E6F0 @ =gUnknown_08375428
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E6D8
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E6D8
- movs r0, 0x2
- strb r0, [r2]
-_0805E6D8:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E6F0: .4byte gUnknown_08375428
- thumb_func_end sub_805E6AC
-
- thumb_func_start sub_805E6F4
-sub_805E6F4: @ 805E6F4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E710 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E714 @ =sub_805E718
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E710: .4byte gMapObjects
-_0805E714: .4byte sub_805E718
- thumb_func_end sub_805E6F4
-
- thumb_func_start sub_805E718
-sub_805E718: @ 805E718
- push {r4,lr}
- ldr r3, _0805E734 @ =gUnknown_0837542C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E734: .4byte gUnknown_0837542C
- thumb_func_end sub_805E718
-
- thumb_func_start sub_805E738
-sub_805E738: @ 805E738
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E77C @ =gUnknown_08375438
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E764
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E764
- movs r0, 0x2
- strb r0, [r2]
-_0805E764:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E77C: .4byte gUnknown_08375438
- thumb_func_end sub_805E738
-
- thumb_func_start sub_805E780
-sub_805E780: @ 805E780
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E79C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E7A0 @ =sub_805E7A4
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E79C: .4byte gMapObjects
-_0805E7A0: .4byte sub_805E7A4
- thumb_func_end sub_805E780
-
- thumb_func_start sub_805E7A4
-sub_805E7A4: @ 805E7A4
- push {r4,lr}
- ldr r3, _0805E7C0 @ =gUnknown_0837543C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E7C0: .4byte gUnknown_0837543C
- thumb_func_end sub_805E7A4
-
- thumb_func_start sub_805E7C4
-sub_805E7C4: @ 805E7C4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E808 @ =gUnknown_08375448
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E7F0
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E7F0
- movs r0, 0x3
- strb r0, [r2]
-_0805E7F0:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E808: .4byte gUnknown_08375448
- thumb_func_end sub_805E7C4
-
thumb_func_start sub_805E80C
sub_805E80C: @ 805E80C
push {lr}
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index c160f1c72..e66ffa28f 100644..100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -48,6 +48,10 @@ extern const u8 gUnknown_083753B0[2];
extern const u8 gUnknown_083753C8[2];
extern const u8 gUnknown_083753DC[5];
extern const u8 gUnknown_083753F4[5];
+extern const u8 gUnknown_08375418[4];
+extern const u8 gUnknown_08375428[4];
+extern const u8 gUnknown_08375438[4];
+extern const u8 gUnknown_08375448[4];
extern const u8 gUnknown_0837567B[9];
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 845f84a34..f91328805 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -2867,10 +2867,60 @@ u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-void sub_805E5DC(struct Sprite *sprite);
-void sub_805E668(struct Sprite *sprite);
-void sub_805E6F4(struct Sprite *sprite);
+fieldmap_object_cb(sub_805E5DC, sub_805E600, gUnknown_0837540C);
+
+u8 sub_805E620(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375418, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E668, sub_805E68C, gUnknown_0837541C);
+
+u8 sub_805E6AC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375428, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E6F4, sub_805E718, gUnknown_0837542C);
+
+u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375438, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
void sub_805E780(struct Sprite *sprite);
+
+fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C);
+
+u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375448, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
void sub_805E80C(struct Sprite *sprite);
void sub_805E898(struct Sprite *sprite);
void sub_805E924(struct Sprite *sprite);