summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-10 15:35:21 -0400
committerscnorton <scnorton@biociphers.org>2017-09-10 15:35:21 -0400
commit79b19a36b864abb359f7ec2122dea851f8ac5e7b (patch)
tree899613c967df55c395480740eb6eac949f093cd9
parent5bb58867748b91de2c20860d73b1a36896f11dd1 (diff)
UpdateFieldObjectCoordsForCameraUpdate
-rw-r--r--asm/field_effect_helpers.s4
-rw-r--r--asm/field_map_obj.s56
-rw-r--r--asm/field_tasks.s2
-rw-r--r--asm/fieldmap.s14
-rw-r--r--include/global.fieldmap.h3
-rw-r--r--src/field_map_obj.c25
-rw-r--r--sym_ewram.txt2
7 files changed, 38 insertions, 68 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index cef6287ff..04307fde5 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -827,7 +827,7 @@ unc_grass_normal: @ 8154550
lsrs r4, r0, 8
lsls r0, 24
lsrs r7, r0, 24
- ldr r3, =gUnknown_02037334
+ ldr r3, =gCamera
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
@@ -1166,7 +1166,7 @@ unc_grass_tall: @ 8154800
lsrs r7, r0, 8
lsls r0, 24
lsrs r6, r0, 24
- ldr r3, =gUnknown_02037334
+ ldr r3, =gCamera
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index c15cd3320..927625ff3 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -5,62 +5,6 @@
.text
- thumb_func_start UpdateFieldObjectCoordsForCameraUpdate
-@ void UpdateFieldObjectCoordsForCameraUpdate()
-UpdateFieldObjectCoordsForCameraUpdate: @ 808EC10
- push {r4,r5,lr}
- ldr r2, =gUnknown_02037334
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0808EC68
- movs r3, 0
- ldr r5, =gMapObjects
- movs r0, 0x4
- ldrsh r4, [r2, r0]
- movs r0, 0x8
- ldrsh r1, [r2, r0]
-_0808EC2A:
- lsls r0, r3, 3
- adds r0, r3
- lsls r0, 2
- adds r2, r0, r5
- ldrb r0, [r2]
- lsls r0, 31
- cmp r0, 0
- beq _0808EC5E
- ldrh r0, [r2, 0xC]
- subs r0, r4
- strh r0, [r2, 0xC]
- ldrh r0, [r2, 0xE]
- subs r0, r1
- strh r0, [r2, 0xE]
- ldrh r0, [r2, 0x10]
- subs r0, r4
- strh r0, [r2, 0x10]
- ldrh r0, [r2, 0x12]
- subs r0, r1
- strh r0, [r2, 0x12]
- ldrh r0, [r2, 0x14]
- subs r0, r4
- strh r0, [r2, 0x14]
- ldrh r0, [r2, 0x16]
- subs r0, r1
- strh r0, [r2, 0x16]
-_0808EC5E:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _0808EC2A
-_0808EC68:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end UpdateFieldObjectCoordsForCameraUpdate
-
thumb_func_start GetFieldObjectIdByXYZ
@ u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z)
GetFieldObjectIdByXYZ: @ 808EC78
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index fb99bbc0e..d053f565f 100644
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -1858,7 +1858,7 @@ _0809E6F8:
cmp r6, 0xD
ble _0809E6F8
_0809E708:
- ldr r2, =gUnknown_02037334
+ ldr r2, =gCamera
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
diff --git a/asm/fieldmap.s b/asm/fieldmap.s
index d2416248f..dbb8a3fa3 100644
--- a/asm/fieldmap.s
+++ b/asm/fieldmap.s
@@ -1508,12 +1508,12 @@ CameraMove: @ 808887C
push {r5-r7}
mov r10, r0
mov r9, r1
- ldr r1, =gUnknown_02037334
+ ldr r1, =gCamera
ldrb r0, [r1]
movs r1, 0x2
negs r1, r1
ands r1, r0
- ldr r2, =gUnknown_02037334
+ ldr r2, =gCamera
strb r1, [r2]
mov r0, r10
mov r1, r9
@@ -1556,23 +1556,23 @@ _080888C4:
ldrb r0, [r4, 0x8]
ldrb r1, [r4, 0x9]
bl mliX_load_map
- ldr r1, =gUnknown_02037334
+ ldr r1, =gCamera
ldrb r0, [r1]
movs r1, 0x1
orrs r0, r1
- ldr r2, =gUnknown_02037334
+ ldr r2, =gCamera
strb r0, [r2]
ldr r0, =gSaveBlock1Ptr
ldr r1, [r0]
movs r2, 0
ldrsh r0, [r1, r2]
subs r5, r0
- ldr r0, =gUnknown_02037334
+ ldr r0, =gCamera
str r5, [r0, 0x4]
movs r2, 0x2
ldrsh r0, [r1, r2]
subs r6, r0
- ldr r0, =gUnknown_02037334
+ ldr r0, =gCamera
str r6, [r0, 0x8]
ldrh r0, [r1]
add r0, r10
@@ -1583,7 +1583,7 @@ _080888C4:
mov r0, r8
bl sub_80885C4
_08088932:
- ldr r0, =gUnknown_02037334
+ ldr r0, =gCamera
ldrb r0, [r0]
lsls r0, 31
lsrs r0, 31
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index b0a36aa55..5a7a75ccb 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -379,7 +379,7 @@ struct PlayerAvatar /* 0x202E858 */
struct Camera
{
- bool8 field_0:1;
+ bool8 active:1;
s32 x;
s32 y;
};
@@ -388,5 +388,6 @@ extern struct MapObject gMapObjects[NUM_FIELD_OBJECTS];
extern u8 gSelectedMapObject;
extern struct MapHeader gMapHeader;
extern struct PlayerAvatar gPlayerAvatar;
+extern struct Camera gCamera;
#endif // GUARD_GLOBAL_FIELDMAP_H
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 1a4ab1a74..ced0ecb27 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1279,3 +1279,28 @@ void npc_coords_shift_still(struct MapObject *mapObject)
npc_coords_shift(mapObject, mapObject->coords2.x, mapObject->coords2.y);
}
+void UpdateFieldObjectCoordsForCameraUpdate(void)
+{
+ u8 i;
+ s16 dx;
+ s16 dy;
+
+ if (gCamera.active)
+ {
+ dx = gCamera.x;
+ dy = gCamera.y;
+ for (i = 0; i < NUM_FIELD_OBJECTS; i ++)
+ {
+ if (gMapObjects[i].active)
+ {
+ gMapObjects[i].coords1.x -= dx;
+ gMapObjects[i].coords1.y -= dy;
+ gMapObjects[i].coords2.x -= dx;
+ gMapObjects[i].coords2.y -= dy;
+ gMapObjects[i].coords3.x -= dx;
+ gMapObjects[i].coords3.y -= dy;
+ }
+ }
+ }
+}
+
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f1a138b7a..ccbb7f3b6 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -749,7 +749,7 @@ gUnknown_02032318: @ 2032318
gMapHeader: @ 2037318
.space 0x1C
-gUnknown_02037334: @ 2037334
+gCamera: @ 2037334
.space 0xC
gUnknown_02037340: @ 2037340