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
|
#ifndef D_D_RESORCE_H
#define D_D_RESORCE_H
#include "m_Do/m_Do_dvd_thread.h"
#include "m_Do/m_Do_ext.h"
class JKRArchive;
class JKRHeap;
class JKRSolidHeap;
class dRes_info_c {
public:
dRes_info_c();
~dRes_info_c();
int set(char const* i_arcName, char const* i_path, u8 i_mountDirection, JKRHeap* i_heap);
int loadResource();
void deleteArchiveRes();
int setRes(JKRArchive* i_archive, JKRHeap* i_heap);
int setRes();
static void onWarpMaterial(J3DModelData* i_modelData);
static void offWarpMaterial(J3DModelData* i_modelData);
static void setWarpSRT(J3DModelData* i_modelData, const cXyz& i_pos, f32 i_transX, f32 i_transY);
static J3DModelData* loaderBasicBmd(u32 i_tag, void* i_data);
static void dump_long(dRes_info_c* i_resInfo, int i_infoNum);
static void dump(dRes_info_c* i_resInfo, int i_infoNum);
static void dumpTag(dRes_info_c*, int, int, int);
static void dump(char*, dRes_info_c*, int);
void* getRes(s32 i_index) {
JUT_ASSERT(25, i_index >= 0 && i_index < getResNum());
return *(mRes + i_index);
}
s32 getResNum() { return mArchive->countFile(); }
int getCount() { return mCount; }
char* getArchiveName() { return mArchiveName; }
mDoDvdThd_mountArchive_c* getDMCommand() { return mDMCommand; }
JKRArchive* getArchive() { return mArchive; }
JKRSolidHeap* getDataHeap() { return mDataHeap; }
u32 incCount() { return ++mCount; }
u32 decCount() { return --mCount; }
#if DEBUG
int getSize() { return mSize; }
#endif
#ifdef __MWERKS__
static const int NAME_MAX = 9;
#endif
private:
/* 0x00 */ char mArchiveName[11];
/* 0x0C */ u16 mCount;
/* 0x10 */ mDoDvdThd_mountArchive_c* mDMCommand;
/* 0x14 */ JKRArchive* mArchive;
/* 0x18 */ JKRHeap* heap;
/* 0x1C */ JKRSolidHeap* mDataHeap;
/* 0x20 */ void** mRes;
#if DEBUG
/* 0x24 */ int mSize;
#endif
}; // Size: 0x24
STATIC_ASSERT(sizeof(dRes_info_c) == 0x24);
class dRes_control_c {
public:
dRes_control_c() {}
~dRes_control_c();
int getSize(const char*, dRes_info_c*, int);
int getStageAllSize();
int getObjectAllSize();
int setObjectRes(char const* i_arcName, void* i_archiveRes, u32 i_bufferSize, JKRHeap* i_heap);
int setStageRes(char const* i_arcName, JKRHeap* i_heap);
void dump();
void dumpTag();
void dump(char*);
int getObjectResName2Index(char const* i_arcName, char const* i_resName);
static int setRes(char const* i_arcName, dRes_info_c* i_resInfo, int i_infoNum, char const* i_path, u8 i_mountDirection, JKRHeap* i_heap);
static int syncRes(char const* i_arcName, dRes_info_c* i_resInfo, int i_infoNum);
static int deleteRes(char const* i_arcName, dRes_info_c* i_resInfo, int i_infoNum);
static void* getRes(char const* i_arcName, char const* i_resName, dRes_info_c* i_resInfo, int i_infoNum);
static dRes_info_c* getResInfo(char const* i_arcName, dRes_info_c* i_resInfo, int i_infoNum);
static dRes_info_c* newResInfo(dRes_info_c* i_resInfo, int i_infoNum);
static dRes_info_c* getResInfoLoaded(char const* i_arcName, dRes_info_c* i_resInfo, int i_infoNum);
static void* getRes(char const* i_arcName, s32 i_index, dRes_info_c* i_resInfo, int i_infoNum);
static void* getIDRes(char const* i_arcName, u16 i_resID, dRes_info_c* i_resInfo, int i_infoNum);
static int syncAllRes(dRes_info_c* i_resInfo, int i_infoNum);
int setObjectRes(const char* i_arcName, u8 i_mountDirection, JKRHeap* i_heap) {
return setRes(i_arcName, mObjectInfo, ARRAY_SIZEU(mObjectInfo), "/res/Object/", i_mountDirection,
i_heap);
}
void* getObjectRes(const char* i_arcName, const char* resName) {
return getRes(i_arcName, resName, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
}
void* getObjectRes(const char* i_arcName, s32 i_index) {
return getRes(i_arcName, i_index, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
}
void* getObjectIDRes(const char* i_arcName, u16 i_resID) {
return getIDRes(i_arcName, i_resID, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
}
int syncObjectRes(const char* i_arcName) {
return syncRes(i_arcName, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
}
int syncStageRes(const char* i_arcName) {
return syncRes(i_arcName, mStageInfo, ARRAY_SIZEU(mStageInfo));
}
int syncAllObjectRes() { return syncAllRes(mObjectInfo, ARRAY_SIZEU(mObjectInfo)); }
int deleteObjectRes(const char* i_arcName) {
return deleteRes(i_arcName, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
}
int deleteStageRes(const char* i_arcName) {
return deleteRes(i_arcName, mStageInfo, ARRAY_SIZEU(mStageInfo));
}
void* getStageRes(const char* i_arcName, const char* i_resName) {
return getRes(i_arcName, i_resName, mStageInfo, ARRAY_SIZEU(mStageInfo));
}
dRes_info_c* getObjectResInfo(const char* i_arcName) {
return getResInfo(i_arcName, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
}
dRes_info_c* getStageResInfo(const char* i_arcName) {
return getResInfo(i_arcName, mStageInfo, ARRAY_SIZEU(mStageInfo));
}
u32 getObjectSize(const char* i_arcName) {
return getSize(i_arcName, mObjectInfo, ARRAY_SIZEU(mObjectInfo));
}
u32 getStageSize(const char* i_arcName) {
return getSize(i_arcName, mStageInfo, ARRAY_SIZEU(mStageInfo));
}
/* 0x0000 */ dRes_info_c mObjectInfo[128];
/* 0x1200 */ dRes_info_c mStageInfo[64];
}; // Size: 0x1B00
#endif /* D_D_RESORCE_H */
|