mirror of https://github.com/zeldaret/tmc.git
129 lines
3.0 KiB
C
129 lines
3.0 KiB
C
#include "global.h"
|
|
#include "entity.h"
|
|
#include "structures.h"
|
|
#include "functions.h"
|
|
#include "game.h"
|
|
|
|
extern void sub_08080BC4(void);
|
|
|
|
extern u32 gUnk_0200B650;
|
|
extern u32 gUnk_02025EB0;
|
|
extern u8 gUpdateVisibleTiles;
|
|
|
|
void sub_080808D8(void) {
|
|
gScreenTransition.transitionType = TRANSITION_DEFAULT;
|
|
}
|
|
|
|
void sub_080808E4(void) {
|
|
if (sub_08052638(gScreenTransition.player_status.area_next)) {
|
|
gScreenTransition.transitionType = TRANSITION_DEFAULT;
|
|
} else {
|
|
gScreenTransition.transitionType = TRANSITION_FADE_BLACK;
|
|
}
|
|
}
|
|
|
|
void sub_08080904(void) {
|
|
gScreenTransition.transitionType = TRANSITION_CUT;
|
|
}
|
|
|
|
void sub_08080910(void) {
|
|
gScreenTransition.transitionType = TRANSITION_CUT;
|
|
}
|
|
|
|
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.unk_10 = 0;
|
|
SetInitializationPriority();
|
|
}
|
|
|
|
u32* GetLayerByIndex(u32 param_1) {
|
|
if (param_1 == 2) {
|
|
return &gUnk_0200B650;
|
|
} else {
|
|
return &gUnk_02025EB0;
|
|
}
|
|
}
|
|
|
|
void InitScreenShake(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();
|
|
gUpdateVisibleTiles = 1;
|
|
}
|
|
|
|
void sub_080809D4(void) {
|
|
register Entity* target asm("r4");
|
|
int x, y;
|
|
int var1, var0;
|
|
RoomControls* roomControls = &gRoomControls;
|
|
roomControls->scroll_flags &= ~4;
|
|
|
|
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();
|
|
gUpdateVisibleTiles = 1;
|
|
}
|