From 3b78407194676f853777a01819f759366bb842de Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 24 Sep 2020 19:33:15 -0500 Subject: Decompile itemOnGround.c --- src/code_0808091C.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 2 deletions(-) (limited to 'src/code_0808091C.c') diff --git a/src/code_0808091C.c b/src/code_0808091C.c index dcb86728..ae04dcad 100644 --- a/src/code_0808091C.c +++ b/src/code_0808091C.c @@ -5,10 +5,12 @@ #include "room.h" extern void sub_0805E5A8(); +extern void sub_08080BC4(void); extern RoomControls gRoomControls; extern u32 gUnk_0200B650; extern u32 gUnk_02025EB0; +extern u8 gUnk_02000070; extern void DoExitTransition(ScreenTransitionData*); extern void sub_080809D4(); @@ -53,7 +55,6 @@ void sub_08080930(void) } u32* GetLayerByIndex(u32 param_1) - { if (param_1 == 2) { @@ -64,9 +65,79 @@ u32* GetLayerByIndex(u32 param_1) } void sub_08080964(u16 time, u32 magnitude) - { gRoomControls.screenShakeTime = time; gRoomControls.screenShakeMagnitude = magnitude & 7; return; } + +void sub_08080974(u32 arg0, u32 arg1) { + u32 var0, var1; + RoomControls* roomControls = &gRoomControls; + + var0 = roomControls->roomOriginX; + if (arg0 <= var0 + 120) { + roomControls->roomScrollX = var0; + } else { + var0 += roomControls->width; + var1 = var0 - 120; + if (arg0 < var1) { + var1 = arg0; + } + roomControls->roomScrollX = var1 - 120; + } + + var0 = roomControls->roomOriginY; + if (arg1 <= var0 + 80) { + roomControls->roomScrollY = var0; + } else { + var0 += roomControls->height; + var1 = var0 - 80; + if (arg1 < var1) { + var1 = arg1; + } + roomControls->roomScrollY = var1 - 80; + } + + sub_080809D4(); + gUnk_02000070 = 1; +} + +void sub_080809D4(void) { + register Entity* target asm("r4"); + int x, y; + int var1, var0; + RoomControls* roomControls = &gRoomControls; + roomControls->unk6 &= 0xFB; + + target = roomControls->cameraTarget; + x = target->x.HALF.HI; + var0 = roomControls->roomOriginX; + if (x <= var0 + 120) { + roomControls->roomScrollX = var0; + } else { + var0 += roomControls->width; + var1 = var0 - 120; + if (x < var1) { + var1 = (u16)target->x.HALF.HI; + } + roomControls->roomScrollX = var1 - 120; + } + + target = roomControls->cameraTarget; + y = target->y.HALF.HI; + var0 = roomControls->roomOriginY; + if (y <= var0 + 80) { + roomControls->roomScrollY = var0; + } else { + var0 += roomControls->height; + var1 = var0 - 80; + if (y < var1) { + var1 = (u16)target->y.HALF.HI; + } + roomControls->roomScrollY = var1 - 80; + } + + sub_08080BC4(); + gUnk_02000070 = 1; +} -- cgit v1.2.3