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
|
#include "global.h"
#include "rescue_team_info.h"
#include "code_8092334.h"
extern struct RescueTeamData *gRescueTeamInfoRef;
EWRAM_DATA struct RescueTeamData gRescueTeamInfo;
extern u8 sub_80023E4(u32);
extern void sub_80922B4(u8 *buffer, u8 *string, s32 size);
extern void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size);
extern const char *gRescueTeamRanks[];
extern s32 gRescueRankMaxPoints[7];
extern u8 gTeamNamePlaceholder[0x8]; // Pokemon
void LoadRescueTeamInfo(void)
{
gRescueTeamInfoRef = &gRescueTeamInfo;
}
struct RescueTeamData *GetRescueTeamInfo(void)
{
return &gRescueTeamInfo;
}
void InitializeRescueTeamInfo(void)
{
BoundedCopyStringtoBuffer(gRescueTeamInfoRef->teamName, gTeamNamePlaceholder, TEAM_NAME_LENGTH);
gRescueTeamInfoRef->teamRankPts = 0;
gRescueTeamInfoRef->unk10 = 0;
}
void sub_80920B8(u8 *buffer)
{
s32 counter;
for(counter = 0; counter < TEAM_NAME_LENGTH; counter++)
{
*buffer++ = gRescueTeamInfoRef->teamName[counter];
}
}
void sub_80920D8(u8 *buffer)
{
sub_80922B4(buffer, gRescueTeamInfoRef->teamName, TEAM_NAME_LENGTH);
}
void SetRescueTeamName(u8 *buffer)
{
s32 counter;
for(counter = 0; counter < TEAM_NAME_LENGTH; counter++)
{
gRescueTeamInfoRef->teamName[counter] = *buffer++;
}
}
s32 GetTeamRankPts(void)
{
return gRescueTeamInfoRef->teamRankPts;
}
s32 GetPtsToNextRank(void)
{
u8 teamRank;
teamRank = GetRescueTeamRank();
if (teamRank == LUCARIO_RANK) {
return 0;
}
else
{
return (gRescueRankMaxPoints[teamRank] - gRescueTeamInfoRef->teamRankPts);
}
}
// Unused
void SetTeamRankPoints(s32 newPts)
{
gRescueTeamInfoRef->teamRankPts = newPts;
}
void AddToTeamRankPts(s32 newPts)
{
gRescueTeamInfoRef->teamRankPts += newPts;
if (gRescueTeamInfoRef->teamRankPts > 99999999) {
gRescueTeamInfoRef->teamRankPts = 99999999;
}
}
u8 GetRescueTeamRank(void)
{
s32 rank;
for(rank = NORMAL_RANK; rank < MAX_TEAM_RANKS; rank++){
if (gRescueTeamInfoRef->teamRankPts < gRescueRankMaxPoints[rank]) {
return rank;
}
}
return LUCARIO_RANK;
}
const char *GetTeamRankString(u8 index)
{
return gRescueTeamRanks[index];
}
// Unused
u8 sub_80921B8(void)
{
return gRescueTeamInfoRef->unk10;
}
u32 SaveRescueTeamInfo(u8 *param_1, u32 size)
{
struct unkStruct_8094924 auStack36;
u8 neg1;
u8 zero;
u8 *puVar2;
neg1 = -1;
zero = 0;
xxx_init_struct_8094924_save_809486C(&auStack36, param_1, size);
SaveIntegerBits(&auStack36, gRescueTeamInfoRef->teamName, 0x58);
SaveIntegerBits(&auStack36, (u8 *)&gRescueTeamInfoRef->teamRankPts, 0x20);
gRescueTeamInfoRef->unk10 = sub_80023E4(0);
if (gRescueTeamInfoRef->unk10 != 0)
{
puVar2 = &neg1;
}
else
{
puVar2 = &zero;
}
SaveIntegerBits(&auStack36,puVar2,1);
nullsub_102(&auStack36);
return auStack36.unk8;
}
u32 ReadRescueTeamInfo(u8 *param_1, u32 size)
{
struct unkStruct_8094924 auStack32;
u8 byteArray[4];
xxx_init_struct_8094924_restore_809485C(&auStack32, param_1, size);
RestoreIntegerBits(&auStack32, gRescueTeamInfoRef->teamName, 0x58);
RestoreIntegerBits(&auStack32, &gRescueTeamInfoRef->teamRankPts, 0x20);
RestoreIntegerBits(&auStack32, byteArray, 1);
gRescueTeamInfoRef->unk10 = byteArray[0] & 1;
nullsub_102(&auStack32);
return auStack32.unk8;
}
|