summaryrefslogtreecommitdiff
path: root/src/code_8040094.c
blob: bd3c1048eba241712d8ef024933f6aadcb61b8b2 (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "global.h"
#include "play_time.h"
#include "file_system.h"

struct unkStruct_203B418
{
    u8 fill0[0x181FC];
    u32 unk181FC;
    u32 unk18200;
    u32 unk18204;
    u8 unk18208[3];
    u8 unk1820B;
    u32 unk1820C;
    u32 unk18210;
    u8 padding2[3];
    u8 unk18217;
};

extern struct PlayTimeStruct *gPlayTimeRef;
extern struct unkStruct_203B418 *gUnknown_203B418;
extern s32 gUnknown_80F6568[];
extern u8 gUnknown_202EE01;
extern const char gUnknown_80F6604; // "zmappat"
extern struct FileArchive gDungeonFileArchive;
extern struct OpenedFile *gUnknown_202EE04;

extern void sub_803F7BC(void);
extern void sub_80060EC(void);
extern void sub_800CB20(void);
extern void LoadBufferedInputs(void);
extern void xxx_call_update_bg_sound_input(void);
extern void sub_8083F58(void);
extern void sub_8011860(void);

extern void sub_803F580(u32);
extern void sub_8049ED4();
extern void sub_8040A84();
extern void sub_80522A8(u32, const char *);

extern const char *gUnknown_80FD040; // It became brighter on the floor

struct unk8049590
{
    u32 unk0;
    u16 unk4;
};

extern struct unk8049590 *sub_8049590(u32, u32);

// Luminous Orb???
void sub_804002C(u32 param_1)
{
  struct unk8049590 *iVar1;
  int innerCounter;
  int iVar3;
  int iVar4;
  
  gUnknown_203B418->unk1820B = 1;
  iVar3 = 0;
  do {
    innerCounter = 0;
    iVar4 = iVar3 + 1;
    do {
      iVar1 = sub_8049590(innerCounter, iVar3);
      iVar1->unk4 = iVar1->unk4 | 1;
      innerCounter++;
    } while (innerCounter < 0x38);
    iVar3 = iVar4;
  } while (iVar4 < 0x20);
  sub_803F580(0);
  sub_8049ED4();
  sub_8040A84();
  sub_80522A8(param_1, gUnknown_80FD040);
}

void sub_8040094(u8 r0)
{
    gUnknown_203B418->unk18217 = r0;
    sub_803F7BC();
    sub_80060EC();
    IncrementPlayTime(gPlayTimeRef);
    sub_800CB20();
    LoadBufferedInputs();
    xxx_call_update_bg_sound_input();
    sub_8083F58();
    sub_8011860();
}

void sub_80400D4(void)
{
    s32 temp;
    temp = gUnknown_203B418->unk18200;
    if(temp == 0)
        return;
    if(temp > 0x1E)
        temp = 0x1F;
    gUnknown_203B418->unk181FC = gUnknown_80F6568[temp];
    gUnknown_203B418->unk18200--;
    if(gUnknown_203B418->unk18200 == 0)
        gUnknown_203B418->unk18200 = gUnknown_203B418->unk18204;
}

void sub_8040124(void)
{
    gUnknown_202EE01 = 0;
}

void sub_8040130(void)
{
    gUnknown_202EE04 = OpenFileAndGetFileDataPtr(&gUnknown_80F6604, &gDungeonFileArchive);
}