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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
|
//
// Generated By: dol2asm
// Translation Unit: resource
//
#include "JSystem/JMessage/resource.h"
#include "string.h"
#include "dol2asm.h"
//
// Types:
//
namespace std {
template <typename A1, typename B1>
void lower_bound(/* ... */);
/* 802A94D4 */ /* std::lower_bound<u32 const*, u32> */
void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&);
}; // namespace std
//
// Forward References:
//
extern "C" void toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb();
extern "C" void __ct__Q38JMessage18TResourceContainer10TCResourceFv();
extern "C" void __dt__Q38JMessage18TResourceContainer10TCResourceFv();
extern "C" void Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs();
extern "C" void Do_create__Q38JMessage18TResourceContainer10TCResourceFv();
extern "C" void Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource();
extern "C" void __ct__Q28JMessage18TResourceContainerFv();
extern "C" void setEncoding__Q28JMessage18TResourceContainerFUc();
extern "C" void setEncoding___Q28JMessage18TResourceContainerFUc();
extern "C" void __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer();
extern "C" void __dt__Q28JMessage6TParseFv();
extern "C" void parseHeader_next__Q28JMessage6TParseFPPCvPUlUl();
extern "C" void parseBlock_next__Q28JMessage6TParseFPPCvPUlUl();
extern "C" void parseCharacter_1Byte__Q28JMessage6localeFPPCc();
extern "C" void parseCharacter_2Byte__Q28JMessage6localeFPPCc();
extern "C" void func_802A94D4(void* _this, u32 const*, u32 const*, u32 const&);
extern "C" void* sapfnParseCharacter___Q28JMessage18TResourceContainer[5];
//
// External References:
//
extern "C" void parseCharacter_ShiftJIS__Q28JMessage6localeFPPCc();
extern "C" void parseCharacter_UTF8__Q28JMessage6localeFPPCc();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv();
extern "C" void __dt__Q27JGadget13TNodeLinkListFv();
extern "C" void
Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode();
extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5];
extern "C" f32 ga4cSignature__Q28JMessage4data[1 + 1 /* padding */];
//
// Declarations:
//
/* 802A8CDC-802A8EC0 2A361C 01E4+00 0/0 1/1 0/0 .text
* toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u16 JMessage::TResource::toMessageIndex_messageID(u32 param_0, u32 param_1,
bool* param_2) const {
nofralloc
#include "asm/JSystem/JMessage/resource/toMessageIndex_messageID__Q28JMessage9TResourceCFUlUlPb.s"
}
#pragma pop
/* ############################################################################################## */
/* 803C9C80-803C9C94 -00001 0014+00 1/1 0/0 0/0 .data
* sapfnParseCharacter___Q28JMessage18TResourceContainer */
JMessage::locale::parseCharacter_function JMessage::TResourceContainer::sapfnParseCharacter_[5] = {
NULL,
JMessage::locale::parseCharacter_1Byte,
JMessage::locale::parseCharacter_2Byte,
JMessage::locale::parseCharacter_ShiftJIS,
JMessage::locale::parseCharacter_UTF8,
};
/* 803C9C94-803C9CA8 026DB4 0014+00 2/2 0/0 0/0 .data __vt__Q28JMessage6TParse */
SECTION_DATA extern void* __vt__Q28JMessage6TParse[5] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__Q28JMessage6TParseFv,
(void*)parseHeader_next__Q28JMessage6TParseFPPCvPUlUl,
(void*)parseBlock_next__Q28JMessage6TParseFPPCvPUlUl,
};
/* 803C9CA8-803C9CBC 026DC8 0014+00 2/2 0/0 0/0 .data
* __vt__Q38JMessage18TResourceContainer10TCResource */
SECTION_DATA extern void* __vt__Q38JMessage18TResourceContainer10TCResource[5] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__Q38JMessage18TResourceContainer10TCResourceFv,
(void*)Do_create__Q38JMessage18TResourceContainer10TCResourceFv,
(void*)Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource,
};
/* 803C9CBC-803C9CD0 026DDC 0014+00 2/2 0/0 0/0 .data
* __vt__Q27JGadget42TLinkList_factory<Q28JMessage9TResource,0> */
SECTION_DATA extern void* data_803C9CBC[5] = {
(void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL,
};
/* 802A8EC0-802A8EF8 2A3800 0038+00 1/1 0/0 0/0 .text
* __ct__Q38JMessage18TResourceContainer10TCResourceFv */
// need to fix TLinkList_factory vtable stuff
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JMessage::TResourceContainer::TCResource::TCResource() {
nofralloc
#include "asm/JSystem/JMessage/resource/__ct__Q38JMessage18TResourceContainer10TCResourceFv.s"
}
#pragma pop
/* 802A8EF8-802A8F6C 2A3838 0074+00 1/0 2/2 0/0 .text
* __dt__Q38JMessage18TResourceContainer10TCResourceFv */
// need to fix TLinkList_factory vtable stuff
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm JMessage::TResourceContainer::TCResource::~TCResource() {
extern "C" asm void __dt__Q38JMessage18TResourceContainer10TCResourceFv() {
nofralloc
#include "asm/JSystem/JMessage/resource/__dt__Q38JMessage18TResourceContainer10TCResourceFv.s"
}
#pragma pop
/* 802A8F6C-802A8FFC 2A38AC 0090+00 0/0 1/1 0/0 .text
* Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JMessage::TResource* JMessage::TResourceContainer::TCResource::Get_groupID(u16 param_0) {
nofralloc
#include "asm/JSystem/JMessage/resource/Get_groupID__Q38JMessage18TResourceContainer10TCResourceFUs.s"
}
#pragma pop
/* 802A8FFC-802A9048 2A393C 004C+00 1/0 0/0 0/0 .text
* Do_create__Q38JMessage18TResourceContainer10TCResourceFv */
JMessage::TResource* JMessage::TResourceContainer::TCResource::Do_create() {
TResource* new_res = new TResource();
return new_res;
}
/* 802A9048-802A906C 2A3988 0024+00 1/0 0/0 0/0 .text
* Do_destroy__Q38JMessage18TResourceContainer10TCResourceFPQ28JMessage9TResource */
void JMessage::TResourceContainer::TCResource::Do_destroy(JMessage::TResource* param_0) {
delete param_0;
}
/* 802A906C-802A90B8 2A39AC 004C+00 0/0 2/2 0/0 .text __ct__Q28JMessage18TResourceContainerFv */
JMessage::TResourceContainer::TResourceContainer() : mEncodingType(0), pfnParseCharacter_(NULL) {}
/* 802A90B8-802A90F0 2A39F8 0038+00 1/1 0/0 0/0 .text
* setEncoding__Q28JMessage18TResourceContainerFUc */
void JMessage::TResourceContainer::setEncoding(u8 e) {
if (e == 0) {
mEncodingType = e;
pfnParseCharacter_ = NULL;
} else {
setEncoding_(e);
}
}
/* 802A90F0-802A9130 2A3A30 0040+00 1/1 0/0 0/0 .text
* setEncoding___Q28JMessage18TResourceContainerFUc */
void JMessage::TResourceContainer::setEncoding_(u8 e) {
mEncodingType = e;
pfnParseCharacter_ = JGadget::toValueFromIndex<JMessage::locale::parseCharacter_function>(
e, sapfnParseCharacter_, 5, NULL);
}
/* 802A9130-802A9158 2A3A70 0028+00 0/0 2/2 0/0 .text
* __ct__Q28JMessage6TParseFPQ28JMessage18TResourceContainer */
JMessage::TParse::TParse(JMessage::TResourceContainer* pContainer) {
pContainer_ = pContainer;
pResource_ = NULL;
}
/* 802A9158-802A91B8 2A3A98 0060+00 1/0 0/0 0/0 .text __dt__Q28JMessage6TParseFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm JMessage::TParse::~TParse() {
extern "C" asm void __dt__Q28JMessage6TParseFv() {
nofralloc
#include "asm/JSystem/JMessage/resource/__dt__Q28JMessage6TParseFv.s"
}
#pragma pop
/* 802A91B8-802A92F4 2A3AF8 013C+00 1/0 0/0 0/0 .text
* parseHeader_next__Q28JMessage6TParseFPPCvPUlUl */
#ifdef NONMATCHING
bool JMessage::TParse::parseHeader_next(void const** ppData_inout, u32* puBlock_out, u32 param_2) {
const void* pData = *ppData_inout;
data::TParse_THeader header(pData);
*ppData_inout = header.getContent();
*puBlock_out = header.get_blockNumber();
if (memcmp(header.get_signature(), &data::ga4cSignature, sizeof(data::ga4cSignature))) {
return 0;
}
if (header.get_type() != 'bmg1') {
return 0;
}
u8 encoding = header.get_encoding();
if (encoding != 0) {
if (!pContainer_->isEncodingSettable(encoding)) {
return 0;
}
pContainer_->setEncoding(encoding);
}
if (param_2 & 0x10) {
return 1;
}
TResourceContainer::TCResource* resContainer = &pContainer_->resContainer_;
pResource_ = resContainer->Do_create();
if (pResource_ == NULL) {
return param_2 & 0x20;
} else {
resContainer->Push_back(pResource_);
pResource_->setData_header(header.getRaw());
return 1;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool JMessage::TParse::parseHeader_next(void const** param_0, u32* param_1, u32 param_2) {
nofralloc
#include "asm/JSystem/JMessage/resource/parseHeader_next__Q28JMessage6TParseFPPCvPUlUl.s"
}
#pragma pop
#endif
/* 802A92F4-802A9490 2A3C34 019C+00 1/0 0/0 0/0 .text
* parseBlock_next__Q28JMessage6TParseFPPCvPUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool JMessage::TParse::parseBlock_next(void const** param_0, u32* param_1, u32 param_2) {
nofralloc
#include "asm/JSystem/JMessage/resource/parseBlock_next__Q28JMessage6TParseFPPCvPUlUl.s"
}
#pragma pop
/* 802A9490-802A94A8 2A3DD0 0018+00 1/0 0/0 0/0 .text
* parseCharacter_1Byte__Q28JMessage6localeFPPCc */
int JMessage::locale::parseCharacter_1Byte(char const** string) {
u8 parse_char = **string;
*string = *string + 1;
return parse_char;
}
/* 802A94A8-802A94D4 2A3DE8 002C+00 1/0 0/0 0/0 .text
* parseCharacter_2Byte__Q28JMessage6localeFPPCc */
int JMessage::locale::parseCharacter_2Byte(char const** string) {
u8** tmp_str = (u8**)string;
u8 hi = **tmp_str;
*tmp_str = *tmp_str + 1;
u8 lo = **tmp_str;
int parse_char = (hi << 8) | lo;
*tmp_str = *tmp_str + 1;
return parse_char;
}
/* 802A94D4-802A9528 2A3E14 0054+00 1/1 0/0 0/0 .text lower_bound<PCUl,Ul>__3stdFPCUlPCUlRCUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802A94D4(void* _this, u32 const* param_0, u32 const* param_1,
u32 const& param_2) {
nofralloc
#include "asm/JSystem/JMessage/resource/func_802A94D4.s"
}
#pragma pop
|