summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-06-20 22:19:40 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-06-20 22:19:40 -0400
commit70300abee81a5b859533eff5537ebb7c926b4395 (patch)
treef78df1d57d3a376c18d4a76271690283819dfc30
parentf5e71601ec02e0d3826a47902c1d82c80426e369 (diff)
camera dummy
-rwxr-xr-xasm/field_specials.s59
-rwxr-xr-xinclude/field_map_obj.h1
-rwxr-xr-x[-rw-r--r--]src/field_map_obj.c4
-rwxr-xr-xsrc/field_specials.c13
4 files changed, 16 insertions, 61 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s
index 3bd35217a..fe57202f3 100755
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -6,65 +6,6 @@
.text
- thumb_func_start SpawnCameraDummy
-SpawnCameraDummy: @ 810F338
- push {lr}
- sub sp, 0x8
- ldr r0, _0810F380 @ =gSaveBlock1
- ldrh r3, [r0]
- adds r3, 0x7
- lsls r3, 16
- asrs r3, 16
- ldrh r0, [r0, 0x2]
- adds r0, 0x7
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0x7F
- bl SpawnSpecialFieldObjectParametrized
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810F384 @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r1, 0x4]
- bl CameraObjectSetFollowedObjectId
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0810F380: .4byte gSaveBlock1
-_0810F384: .4byte gMapObjects
- thumb_func_end SpawnCameraDummy
-
- thumb_func_start RemoveCameraDummy
-RemoveCameraDummy: @ 810F388
- push {lr}
- bl GetPlayerAvatarObjectId
- lsls r0, 24
- lsrs r0, 24
- bl CameraObjectSetFollowedObjectId
- ldr r0, _0810F3A8 @ =gSaveBlock1
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x7F
- bl RemoveFieldObjectByLocalIdAndMap
- pop {r0}
- bx r0
- .align 2, 0
-_0810F3A8: .4byte gSaveBlock1
- thumb_func_end RemoveCameraDummy
-
thumb_func_start GetPokeblockNameByMonNature
GetPokeblockNameByMonNature: @ 810F3AC
push {lr}
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 999c77401..5eaa15149 100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -198,5 +198,6 @@ u8 sub_8060B64(u8);
u8 GetOppositeDirection(u8);
void sub_80634D0(struct MapObject *, struct Sprite *);
u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
+void CameraObjectSetFollowedObjectId(u8);
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index ade72923d..bedb8db9c 100644..100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1265,13 +1265,13 @@ void CameraObjectReset1(void)
}
}
-void CameraObjectSetFollowedObjectId(u8 state)
+void CameraObjectSetFollowedObjectId(u8 spriteId)
{
struct Sprite *cameraSprite = FindCameraObject();
if (cameraSprite != NULL)
{
- cameraSprite->data0 = state;
+ cameraSprite->data0 = spriteId;
CameraObjectReset1();
}
}
diff --git a/src/field_specials.c b/src/field_specials.c
index ae73c0e25..610d421a1 100755
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1729,3 +1729,16 @@ void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems)
DestroyVerticalScrollIndicator(1);
}
}
+
+void SpawnCameraDummy(void)
+{
+ u8 mapObjectId = SpawnSpecialFieldObjectParametrized(7, 8, 0x7f, gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7, 3);
+ gMapObjects[mapObjectId].mapobj_bit_13 = 1;
+ CameraObjectSetFollowedObjectId(gMapObjects[mapObjectId].spriteId);
+}
+
+void RemoveCameraDummy(void)
+{
+ CameraObjectSetFollowedObjectId(GetPlayerAvatarObjectId());
+ RemoveFieldObjectByLocalIdAndMap(0x7f, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+}