summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scene/cable_car.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c
index 6e4fe608e..5a2f39a6f 100644
--- a/src/scene/cable_car.c
+++ b/src/scene/cable_car.c
@@ -16,6 +16,15 @@
// Static type declarations
+// Credits to Made (dolphin emoji)
+#define S16TOPOSFLOAT(val) \
+({ \
+ s16 v = (val); \
+ float f = (float)v; \
+ if(v < 0) f += 65536.0f; \
+ f; \
+})
+
struct Unk_2017000 {
u8 unk_0000;
u8 unk_0001;
@@ -446,3 +455,25 @@ void sub_8123C40(void)
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
+
+void nullsub_76(void)
+{
+
+}
+
+void sub_8123CB8(struct Sprite *sprite)
+{
+ if (gUnknown_02039274->unk_0001 != 255)
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ sprite->pos1.x = sprite->data0 - (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006));
+ sprite->pos1.y = sprite->data1 - (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006));
+ }
+ else
+ {
+ sprite->pos1.x = sprite->data0 + (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006));
+ sprite->pos1.y = sprite->data1 + (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006));
+ }
+ }
+}