summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-21 10:01:47 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-05-21 10:01:47 -0400
commita584c604145189a31496d9f7303d8af7f22ee1ec (patch)
treed3965b61a91fd5320395b4a320de6b301ac3ac06
parent2e1932110b25757906c6a7c4124e1bf95c82aab8 (diff)
A few more functions for calculating map object facing directions
-rw-r--r--asm/field_map_obj.s332
-rw-r--r--src/field_map_obj.c133
2 files changed, 131 insertions, 334 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 23cbb1ac1..3103002d2 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -6,338 +6,6 @@
.text
- thumb_func_start sub_805CB00
-sub_805CB00: @ 805CB00
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB3C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CB56
- b _0805CB54
-_0805CB3C:
- cmp r0, 0x4
- bne _0805CB56
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB56
-_0805CB54:
- movs r0, 0x2
-_0805CB56:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CB00
-
- thumb_func_start sub_805CB5C
-sub_805CB5C: @ 805CB5C
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB98
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CBB2
- b _0805CBB0
-_0805CB98:
- cmp r0, 0x3
- bne _0805CBB2
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CBB2
-_0805CBB0:
- movs r0, 0x2
-_0805CBB2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CB5C
-
- thumb_func_start sub_805CBB8
-sub_805CBB8: @ 805CBB8
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CBF4
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CC0E
- b _0805CC0C
-_0805CBF4:
- cmp r0, 0x4
- bne _0805CC0E
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC0E
-_0805CC0C:
- movs r0, 0x1
-_0805CC0E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CBB8
-
- thumb_func_start sub_805CC14
-sub_805CC14: @ 805CC14
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC50
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CC6A
- b _0805CC68
-_0805CC50:
- cmp r0, 0x3
- bne _0805CC6A
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC6A
-_0805CC68:
- movs r0, 0x1
-_0805CC6A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CC14
-
- thumb_func_start sub_805CC70
-sub_805CC70: @ 805CC70
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CCA6
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
-_0805CCA6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CC70
-
- thumb_func_start sub_805CCAC
-sub_805CCAC: @ 805CCAC
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CCE2
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
-_0805CCE2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CCAC
-
- thumb_func_start sub_805CCE8
-sub_805CCE8: @ 805CCE8
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CD1E
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
-_0805CD1E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CCE8
-
- thumb_func_start sub_805CD24
-sub_805CD24: @ 805CD24
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CD5A
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
-_0805CD5A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CD24
-
thumb_func_start sub_805CD60
sub_805CD60: @ 805CD60
push {r4-r6,lr}
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index e5a50362a..f042b4af1 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1665,7 +1665,7 @@ u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3)
return dirn;
}
-u8 sub_805CADC(s16 a0, s16 a1)
+u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3)
{
u8 dirn;
dirn = DIR_SOUTH;
@@ -1676,7 +1676,7 @@ u8 sub_805CADC(s16 a0, s16 a1)
return dirn;
}
-u8 sub_805CAEC(s16 a0, s16 a1)
+u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3)
{
u8 dirn;
dirn = DIR_EAST;
@@ -1686,3 +1686,132 @@ u8 sub_805CAEC(s16 a0, s16 a1)
}
return dirn;
}
+
+u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ else if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ else if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ else if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ else if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+