diff options
Diffstat (limited to 'src/scroll.c')
| -rw-r--r-- | src/scroll.c | 94 |
1 files changed, 42 insertions, 52 deletions
diff --git a/src/scroll.c b/src/scroll.c index 051ee4a4..8e4d4018 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -83,92 +83,83 @@ void sub_0807FC64(RoomControls* controls) { UpdateIsDiggingCave(); } -NONMATCH("asm/non_matching/scroll/sub_0807FC7C.inc", void sub_0807FC7C(RoomControls* controls)) { - u32 uVar1; - u32 uVar2; - u32 uVar3; - int iVar4; - u32 uVar5; - u32 temp; - u32 temp2; - u32 uVar6; +void sub_0807FC7C(RoomControls* controls) { + s32 uVar2; + s32 uVar3; + s32 iVar4; + s32 uVar5; + s32 temp; if (controls->camera_target != NULL) { - iVar4 = (int)controls->scroll_x; + iVar4 = controls->scroll_x; temp = controls->camera_target->x.HALF.HI - 0x78; - uVar3 = iVar4 - temp; + uVar3 = controls->scroll_x - temp; if (uVar3 != 0) { - uVar1 = (u16)controls->scroll_x; - uVar5 = uVar1 & 7; - uVar6 = uVar1; - if ((int)uVar3 >= 1) { - uVar2 = controls->origin_x; - if ((int)uVar2 < iVar4) { - if ((int)controls->unk5 <= (int)uVar3) { + uVar5 = controls->scroll_x & 7; + if (uVar3 >= 1) { + if (controls->origin_x < controls->scroll_x) { + if (controls->unk5 <= uVar3) { uVar3 = controls->unk5; - controls->scroll_flags = controls->scroll_flags | 4; + controls->scroll_flags |= 4; } - controls->scroll_x = uVar6 - uVar3; - if ((int)((uVar5)-uVar3) < 1) { + controls->scroll_x = controls->scroll_x - uVar3; + if (uVar5 - uVar3 < 1) { gUpdateVisibleTiles = 1; } - if ((int)uVar2 >= (int)controls->scroll_x) { - controls->scroll_x = (s16)uVar2; + if (controls->origin_x >= controls->scroll_x) { + controls->scroll_x = controls->origin_x; } } } else { - uVar2 = (controls->origin_x + controls->width) - 0xf0; - if (iVar4 < (int)uVar2) { - if ((int)-controls->unk5 >= (int)uVar3) { + uVar2 = controls->origin_x + controls->width - 0xf0; + if (controls->scroll_x < uVar2) { + if (-controls->unk5 >= uVar3) { uVar3 = -controls->unk5; controls->scroll_flags |= 4; } - controls->scroll_x = uVar1 - (short)uVar3; - if (7 < (int)((uVar5)-uVar3)) { + controls->scroll_x -= uVar3; + if (uVar5 - uVar3 > 7) { gUpdateVisibleTiles = 1; } - if ((int)controls->scroll_x >= (int)uVar2) { - controls->scroll_x = (s16)uVar2; + if (controls->scroll_x >= uVar2) { + controls->scroll_x = uVar2; } } } } - iVar4 = (int)controls->scroll_y; + iVar4 = controls->scroll_y; temp = controls->camera_target->y.HALF.HI - 0x50; - uVar3 = iVar4 - (temp); + uVar3 = controls->scroll_y - (temp); if (uVar3 != 0) { - uVar1 = (u16)controls->scroll_y; - uVar5 = uVar1 & 7; - uVar6 = uVar1; - if ((int)uVar3 >= 1) { - uVar2 = temp2 = (u16)controls->origin_y; - if ((int)uVar2 < iVar4) { - if ((int)controls->unk5 <= (int)uVar3) { + uVar5 = controls->scroll_y & 7; + if (uVar3 >= 1) { + if (controls->origin_y < controls->scroll_y) { + if (controls->unk5 <= uVar3) { uVar3 = controls->unk5; controls->scroll_flags |= 4; } - controls->scroll_y = uVar6 - uVar3; - if ((int)((uVar5)-uVar3) < 1) { + controls->scroll_y = controls->scroll_y - uVar3; + if (uVar5 - uVar3 < 1) { gUpdateVisibleTiles = 1; } - if ((int)uVar2 >= (int)controls->scroll_y) { - controls->scroll_y = (s16)uVar2; + if (controls->origin_y >= controls->scroll_y) { + controls->scroll_y = controls->origin_y; } } } else { - uVar2 = (controls->origin_y + controls->height) - DISPLAY_HEIGHT; - if (iVar4 < (int)uVar2) { - if ((int)-controls->unk5 >= (int)uVar3) { + uVar2 = controls->origin_y + controls->height - DISPLAY_HEIGHT; + if (controls->scroll_y < uVar2) { + if (-controls->unk5 >= uVar3) { uVar3 = -controls->unk5; - controls->scroll_flags = controls->scroll_flags | 4; + controls->scroll_flags |= 4; } - controls->scroll_y = uVar1 - (short)uVar3; - if (7 < (int)((uVar1 & 7) - uVar3)) { + controls->scroll_y -= uVar3; + if (uVar5 - uVar3 > 7) { gUpdateVisibleTiles = 1; } - if ((int)controls->scroll_y >= (int)uVar2) { - controls->scroll_y = (s16)uVar2; + if (controls->scroll_y >= uVar2) { + controls->scroll_y = uVar2; } } } @@ -176,7 +167,6 @@ NONMATCH("asm/non_matching/scroll/sub_0807FC7C.inc", void sub_0807FC7C(RoomContr } sub_08080BC4(); } -END_NONMATCH void sub_0807FDB0(RoomControls* controls) { static void (*const gUnk_0811E780[])(RoomControls*) = { |
