summaryrefslogtreecommitdiff
path: root/src/code_8097670.c
blob: a918ac9382d4c11365fbf8d259e8f2773831c4a0 (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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#include "global.h"
#include "pokemon.h"

struct unkStruct_203B494
{
    // size: 0xC8?
    u32 unk0; // 32 bit bitfield, I think
    s32 numAdventures;
    s32 unk8;
    s32 unkC;
    struct unkPokeSubStruct_4 dungeonLocation;
    s16 unk14;
    s16 unk16;
    s16 unk18;
    u32 unk1C[0xE];
    u32 unk54[0xE];
    u32 unk8C[0xD];
    s32 unkC0;
};

extern struct unkStruct_203B494 *gUnknown_203B494;
extern struct unkStruct_203B494 gUnknown_2039778;
extern const u8 *gAdventureLogText[];
s16 GetBaseSpeciesNoUnown(s16 index);

void sub_8097670(void)
{
    gUnknown_203B494 = &gUnknown_2039778;
}

struct unkStruct_203B494 *sub_8097680(void)
{
    return &gUnknown_2039778;
}

void SetDungeonLocationInfo(struct unkPokeSubStruct_4 *r0)
{
    gUnknown_203B494->dungeonLocation.dungeonIndex = r0->dungeonIndex;
    gUnknown_203B494->dungeonLocation.dungeonFloor = r0->dungeonFloor;
}

struct unkPokeSubStruct_4 *GetDungeonLocationInfo(void)
{
    return &gUnknown_203B494->dungeonLocation;
}

void sub_80976A8(void)
{
    s32 iVar2;

    gUnknown_203B494->unk0 = 0;
    gUnknown_203B494->unk14 = 0;
    gUnknown_203B494->unk16 = 0;
    gUnknown_203B494->unk18 = 0;
    gUnknown_203B494->unkC0 = 0;
    gUnknown_203B494->unk8 = 0;
    gUnknown_203B494->unkC = 0;

    for(iVar2 = 0; iVar2 < 0xE; iVar2++)
    {
        gUnknown_203B494->unk1C[iVar2] = 0;
    }

    for(iVar2 = 0; iVar2 < 0xD; iVar2++)
    {
        gUnknown_203B494->unk8C[iVar2] = 0;
    }
}

void sub_80976F8(u8 r0)
{
    gUnknown_203B494->unk0 |= (1 << r0);
}

bool8 sub_8097710(u8 r0)
{
    if(gUnknown_203B494->unk0 & (1 << r0))
        return TRUE;
    else
        return FALSE;
}

const u8 *GetAdventureLogLine(u8 index)
{
    return gAdventureLogText[index];
}

void ResetNumAdventures(void)
{
    gUnknown_203B494->numAdventures = 0;
}

void IncrementNumAdventures(void)
{
    gUnknown_203B494->numAdventures++;
    if(gUnknown_203B494->numAdventures > 99999)
        gUnknown_203B494->numAdventures = 99999;
}

s32 GetNumAdventures(void)
{
    return gUnknown_203B494->numAdventures;
}

void SetNumAdventures(s32 numAdventures)
{
    gUnknown_203B494->numAdventures = numAdventures;
}

void sub_8097790(void)
{
    gUnknown_203B494->unk8++;
    if(gUnknown_203B494->unk8 > 99999)
        gUnknown_203B494->unk8 = 99999;
    sub_80976F8(8);
}

s32 sub_80977B8(void)
{
    return gUnknown_203B494->unk8;
}

void sub_80977C4(s32 r0)
{
    gUnknown_203B494->unk8 = r0;
}

void sub_80977D0(void)
{
    gUnknown_203B494->unkC++;
    if(gUnknown_203B494->unkC > 99999)
        gUnknown_203B494->unkC = 99999;
    sub_80976F8(9);
}

s32 sub_80977F8(void)
{
    return gUnknown_203B494->unkC;
}

void sub_8097804(s32 r0)
{
    gUnknown_203B494->unkC = r0;
}

void sub_8097810(void)
{
    if(gUnknown_203B494->unk14 < 9999)
        gUnknown_203B494->unk14++;
    sub_80976F8(11);
}

s16 sub_8097838(void)
{
    return gUnknown_203B494->unk14;
}

void sub_8097848(void)
{
    if(gUnknown_203B494->unk16 < 9999)
        gUnknown_203B494->unk16++;
    sub_80976F8(10);
}

s16 sub_8097870(void)
{
    return gUnknown_203B494->unk16;
}

s16 sub_8097880(void)
{
    return gUnknown_203B494->unk18;
}

void sub_8097890(void)
{
    if(gUnknown_203B494->unkC0 < 99999)
        gUnknown_203B494->unkC0++;
    sub_80976F8(12);
}

s16 sub_80978B8(void)
{
    return gUnknown_203B494->unkC0;
}

void sub_80978C8(s16 pokeIndex)
{
  s32 iVar2;
  struct unkStruct_203B494 *preload;
  s32 baseSpecies;

  baseSpecies = GetBaseSpeciesNoUnown(pokeIndex);
  preload = gUnknown_203B494;
  iVar2 = baseSpecies;
  if (baseSpecies < 0) {
    iVar2 = baseSpecies + 0x1f;
  }
  preload->unk54[iVar2 >> 5] |=  1 << (baseSpecies + (iVar2 >> 5) * -0x20);
}

bool8 sub_8097900(s16 pokeIndex)
{
  s32 iVar2;
  struct unkStruct_203B494 *preload;
  s32 baseSpecies;

  baseSpecies = GetBaseSpeciesNoUnown(pokeIndex);
  preload = gUnknown_203B494;
  iVar2 = baseSpecies;
  if (baseSpecies < 0) {
    iVar2 = baseSpecies + 0x1f;
  }
  if(preload->unk1C[iVar2 >> 5] & (1 << (baseSpecies + (iVar2 >> 5) * -0x20)))
    return TRUE;
  else
    return FALSE;
}