tmc/src/fade.c

75 lines
1.9 KiB
C

#include "global.h"
#include "functions.h"
#include "screen.h"
typedef struct {
u8 field_0x0;
u8 field_0x1;
u8 spritesOffset;
} struct_03000000;
extern struct_03000000 gUnk_03000000;
extern u32 gUsedPalettes;
void sub_08050024() {
sub_0801E104();
DoFade(5, 0x80 << 1);
}
void sub_08050038(u32 arg0) {
if ((gFadeControl.fadeType & 1) != 0) {
gFadeControl.field_0xe = arg0;
} else {
gFadeControl.fadeDuration = arg0;
}
}
void DoFade(u32 fadeType, u32 fadeSpeed) {
gFadeControl.fadeSpeed = fadeSpeed;
gFadeControl.fadeType = fadeType;
gFadeControl.active = 1;
gFadeControl.fadeDuration = 0x100;
gFadeControl.field_0xe = 0;
if ((gFadeControl.fadeType & 2) != 0) {
gFadeControl.field_0x2 = 0xf8;
} else {
gFadeControl.field_0x2 = 0;
}
if ((fadeType & 8) != 0) {
gUnk_03000000.spritesOffset = 1;
gScreen.bg.bg1Control |= 0x40;
gScreen.affine.bg2Control |= 0x40;
gScreen.affine.bg3Control |= 0x40;
}
if ((fadeType & 0x10) != 0) {
sub_0801E1B8(gFadeControl.field_0x16, gFadeControl.field_0x18);
sub_0801E1EC(gFadeControl.field_0x12, gFadeControl.field_0x14, gFadeControl.field_0x10);
if ((fadeType & 1) == 0) {
gFadeControl.fadeType &= 0xfffb;
sub_08050008();
gUsedPalettes = 0xffffffff;
}
}
}
void sub_080500F4(u32 arg0) {
gFadeControl.fadeSpeed = arg0;
gFadeControl.fadeType ^= 1;
gFadeControl.active = 1;
gFadeControl.fadeDuration = 0x100;
}
void sub_08050110(u32 param_1, u32 param_2, u32 fadeType, u32 fadeSpeed) {
if ((fadeType & 1) != 0) {
gFadeControl.field_0x10 = 0x96;
} else {
gFadeControl.field_0x10 = 0;
}
gFadeControl.field_0x12 = param_1;
gFadeControl.field_0x14 = param_2;
gFadeControl.field_0x16 = 0x3f3f;
gFadeControl.field_0x18 = 0;
DoFade(fadeType, fadeSpeed);
}