mirror of https://github.com/zeldaret/tmc.git
135 lines
3.0 KiB
C
135 lines
3.0 KiB
C
#include "global.h"
|
|
#include "entity.h"
|
|
#include "structures.h"
|
|
#include "functions.h"
|
|
#include "room.h"
|
|
|
|
extern void sub_08080BC4(void);
|
|
|
|
extern u32 gUnk_0200B650;
|
|
extern u32 gUnk_02025EB0;
|
|
extern u8 gUnk_02000070;
|
|
|
|
extern void DoExitTransition(ScreenTransitionData*);
|
|
|
|
void sub_080808D8(void) {
|
|
gScreenTransition.transitionType = 0;
|
|
}
|
|
|
|
void sub_080808E4(void) {
|
|
|
|
if (sub_08052638(gScreenTransition.areaID)) {
|
|
gScreenTransition.transitionType = 0;
|
|
} else {
|
|
gScreenTransition.transitionType = 5;
|
|
}
|
|
}
|
|
|
|
void sub_08080904(void) {
|
|
gScreenTransition.transitionType = 1;
|
|
}
|
|
|
|
void sub_08080910(void) {
|
|
gScreenTransition.transitionType = 1;
|
|
}
|
|
|
|
void sub_0808091C(ScreenTransitionData* param_1, u32 param_2) {
|
|
DoExitTransition(param_1);
|
|
gScreenTransition.transitionType = param_2;
|
|
}
|
|
|
|
void sub_08080930(void)
|
|
|
|
{
|
|
gRoomControls.unk3 = 5;
|
|
gRoomControls.unk4 = 0;
|
|
gRoomControls.unk2 = 2;
|
|
gRoomControls.filler[0] = 0;
|
|
sub_0805E5A8();
|
|
}
|
|
|
|
u32* GetLayerByIndex(u32 param_1) {
|
|
|
|
if (param_1 == 2) {
|
|
return &gUnk_0200B650;
|
|
} else {
|
|
return &gUnk_02025EB0;
|
|
}
|
|
}
|
|
|
|
void sub_08080964(u32 time, u32 magnitude) {
|
|
gRoomControls.screenShakeTime = time;
|
|
gRoomControls.screenShakeMagnitude = magnitude & 7;
|
|
}
|
|
|
|
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;
|
|
}
|