summaryrefslogtreecommitdiff
path: root/src/fade.c
blob: fe77e3d081ef77bee2ed7931f69088333cc4e8b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#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);
}