mirror of https://github.com/zeldaret/tmc.git
104 lines
2.3 KiB
C
104 lines
2.3 KiB
C
#include "global.h"
|
|
#include "functions.h"
|
|
#include "screen.h"
|
|
|
|
typedef struct {
|
|
u8 field_0x0;
|
|
u8 field_0x1;
|
|
u8 field_0x2;
|
|
u8 field_0x3;
|
|
u32 field_0x4;
|
|
u16 fadeType; // fade in or out, are there others?
|
|
u16 fadeSpeed; // subtracted from duration
|
|
u16 fadeDuration;
|
|
u16 field_0xe;
|
|
s16 field_0x10;
|
|
s16 field_0x12;
|
|
s16 field_0x14;
|
|
u16 field_0x16;
|
|
u16 field_0x18;
|
|
} struct_03000FD0;
|
|
|
|
extern struct_03000FD0 gUnk_03000FD0;
|
|
|
|
typedef struct {
|
|
u8 field_0x0;
|
|
u8 field_0x1;
|
|
u8 spritesOffset;
|
|
} struct_03000000;
|
|
|
|
extern struct_03000000 gUnk_03000000;
|
|
|
|
extern u32 gUnk_0200B644;
|
|
|
|
extern void sub_0801E104();
|
|
extern void DoFade(u32, u32);
|
|
|
|
void sub_08050024() {
|
|
sub_0801E104();
|
|
DoFade(5, 0x80 << 1);
|
|
return;
|
|
}
|
|
|
|
void sub_08050038(u32 arg0)
|
|
{
|
|
if ((gUnk_03000FD0.fadeType & 1) != 0) {
|
|
gUnk_03000FD0.field_0xe = arg0;
|
|
}
|
|
else {
|
|
gUnk_03000FD0.fadeDuration = arg0;
|
|
}
|
|
}
|
|
|
|
void DoFade(u32 fadeType, u32 fadeSpeed)
|
|
{
|
|
gUnk_03000FD0.fadeSpeed = fadeSpeed;
|
|
gUnk_03000FD0.fadeType = fadeType;
|
|
gUnk_03000FD0.field_0x0 = 1;
|
|
gUnk_03000FD0.fadeDuration = 0x100;
|
|
gUnk_03000FD0.field_0xe = 0;
|
|
if ((gUnk_03000FD0.fadeType & 2) != 0) {
|
|
gUnk_03000FD0.field_0x2 = 0xf8;
|
|
}
|
|
else {
|
|
gUnk_03000FD0.field_0x2 = 0;
|
|
}
|
|
if ((fadeType & 8) != 0) {
|
|
gUnk_03000000.spritesOffset = 1;
|
|
gScreen.bg1.unk |= 0x40;
|
|
gScreen.bg2.unk |= 0x40;
|
|
gScreen.affine.unk2 |= 0x40;
|
|
}
|
|
if ((fadeType & 0x10) != 0) {
|
|
sub_0801E1B8(gUnk_03000FD0.field_0x16, gUnk_03000FD0.field_0x18);
|
|
sub_0801E1EC(gUnk_03000FD0.field_0x12, gUnk_03000FD0.field_0x14, gUnk_03000FD0.field_0x10);
|
|
if ((fadeType & 1) == 0) {
|
|
gUnk_03000FD0.fadeType &= 0xfffb;
|
|
sub_08050008();
|
|
gUnk_0200B644 = 0xffffffff;
|
|
}
|
|
}
|
|
}
|
|
|
|
void sub_080500F4(u32 arg0)
|
|
{
|
|
gUnk_03000FD0.fadeSpeed = arg0;
|
|
gUnk_03000FD0.fadeType ^= 1;
|
|
gUnk_03000FD0.field_0x0 = 1;
|
|
gUnk_03000FD0.fadeDuration = 0x100;
|
|
}
|
|
|
|
void sub_08050110(u32 param_1, u32 param_2, u32 fadeType, u32 fadeSpeed)
|
|
{
|
|
if ((fadeType & 1) != 0) {
|
|
gUnk_03000FD0.field_0x10 = 0x96;
|
|
}
|
|
else {
|
|
gUnk_03000FD0.field_0x10 = 0;
|
|
}
|
|
gUnk_03000FD0.field_0x12 = param_1;
|
|
gUnk_03000FD0.field_0x14 = param_2;
|
|
gUnk_03000FD0.field_0x16 = 0x3f3f;
|
|
gUnk_03000FD0.field_0x18 = 0;
|
|
DoFade(fadeType, fadeSpeed);
|
|
} |