Begin documenting TextureResourceManager

This commit is contained in:
Fexty12573 2024-06-27 13:26:20 +02:00
parent 1ac80e5ead
commit 7e231694fb
14 changed files with 288 additions and 305 deletions

View File

@ -31,8 +31,8 @@ UnkStruct_02020C44 * ov5_021EDC8C(UnkStruct_ov5_021ED0A4 * param0);
void ov5_021EDC94(UnkStruct_ov5_021ED0A4 * param0, int param1);
ResourceManager * ov5_021EDC98(const UnkStruct_ov5_021ED0A4 * param0);
ResourceManager * ov5_021EDCA0(const UnkStruct_ov5_021ED0A4 * param0);
void ov5_021EDCA8(UnkStruct_ov5_021ED0A4 * param0, UnkStruct_02022BD8 * param1);
UnkStruct_02022BD8 * ov5_021EDCB0(const UnkStruct_ov5_021ED0A4 * param0);
void ov5_021EDCA8(UnkStruct_ov5_021ED0A4 * param0, TextureResourceManager * param1);
TextureResourceManager * ov5_021EDCB0(const UnkStruct_ov5_021ED0A4 * param0);
void ov5_021EDD78(MapObject * param0, int param1);
int ov5_021EDD94(MapObject * param0);
BOOL ov5_021EDEB4(MapObject * param0, UnkStruct_020216E0 * param1);

View File

@ -26,7 +26,7 @@ typedef struct UnkStruct_ov5_021ED0A4_t {
UnkStruct_ov5_021DF84C * unk_E4;
ResourceManager * unk_E8;
ResourceManager * unk_EC;
UnkStruct_02022BD8 * unk_F0;
TextureResourceManager * unk_F0;
UnkStruct_ov5_021ED110 * unk_F4;
UnkStruct_ov5_021F06D8 * unk_F8;
UnkStruct_ov5_021F06D8 * unk_FC;

View File

@ -7,7 +7,7 @@ typedef struct {
u32 unk_00;
int unk_04;
int unk_08;
UnkStruct_02022BD8 * unk_0C;
TextureResourceManager * unk_0C;
} UnkStruct_ov5_021EDFBC;
#endif // POKEPLATINUM_STRUCT_OV5_021EDFBC_H

View File

@ -6,7 +6,7 @@
typedef struct {
vu32 unk_00;
int unk_04;
UnkStruct_02022BD8 * unk_08;
TextureResourceManager * unk_08;
} UnkStruct_ov5_021EE134;
#endif // POKEPLATINUM_STRUCT_OV5_021EE134_H

View File

@ -10,6 +10,11 @@
#include <nnsys.h>
enum TextureResourceMode {
TEX_RESOURCE_MODE_NORMAL = 0, // Texture data is contained in the actual resource
TEX_RESOURCE_MODE_STRIPPED, // Texture data is stripped from the resource and stored in a separate buffer
};
ResourceManager *ResourceManager_New(s32 maxResources, enum HeapId heapID);
void ResourceManager_Delete(ResourceManager *resMgr);
BOOL ResourceManager_IsIDUnused(ResourceManager *resMgr, int id);
@ -21,25 +26,25 @@ Resource *ResourceManager_FindResource(ResourceManager *resMgr, int id);
void *Resource_GetData(Resource *resource);
void Resource_SetData(Resource *resource, void *data);
int Resource_GetID(Resource *resource);
UnkStruct_02022BD8 * sub_02022BD8(int param0, int param1);
void sub_02022C1C(UnkStruct_02022BD8 * param0);
BOOL sub_02022C40(const UnkStruct_02022BD8 * param0, int param1);
UnkStruct_02022BD8_2 * sub_02022C58(const UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, u32 param4);
UnkStruct_02022BD8_2 * sub_02022C9C(UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, int param4);
void sub_02022CB4(UnkStruct_02022BD8 * param0, UnkStruct_02022BD8_2 * param1);
void sub_02022D38(UnkStruct_02022BD8 * param0, int param1);
void sub_02022D58(UnkStruct_02022BD8 * param0);
UnkStruct_02022BD8_2 * sub_02022D98(const UnkStruct_02022BD8 * param0, int param1);
int sub_02022DE0(const UnkStruct_02022BD8_2 * param0);
NNSG3dResTex * sub_02022DF4(const UnkStruct_02022BD8_2 * param0);
void sub_02022E08(UnkStruct_02022BD8_2 * param0);
void sub_02022E38(UnkStruct_02022BD8 * param0, int param1);
void sub_02022E54(UnkStruct_02022BD8_2 * param0);
void sub_02022EA0(UnkStruct_02022BD8 * param0, int param1);
void sub_02022EBC(UnkStruct_02022BD8_2 * param0);
NNSGfdTexKey sub_02022EF4(const UnkStruct_02022BD8_2 * param0);
NNSGfdTexKey sub_02022F04(const UnkStruct_02022BD8_2 * param0);
NNSGfdPlttKey sub_02022F14(const UnkStruct_02022BD8_2 * param0);
TextureResourceManager *TextureResourceManager_New(s32 maxTextures, enum HeapId heapID);
void TextureResourceManager_Delete(TextureResourceManager * param0);
BOOL TextureResourceManager_IsIDUnused(const TextureResourceManager * param0, int param1);
TextureResource * sub_02022C58(const TextureResourceManager * param0, void * param1, int param2, enum TextureResourceMode param3, enum HeapId param4);
TextureResource * sub_02022C9C(TextureResourceManager * param0, void * param1, int param2, u32 param3, int param4);
void sub_02022CB4(TextureResourceManager * param0, TextureResource * param1);
void sub_02022D38(TextureResourceManager * param0, int param1);
void sub_02022D58(TextureResourceManager * param0);
TextureResource * sub_02022D98(const TextureResourceManager * param0, int param1);
int TextureResource_GetID(const TextureResource * param0);
NNSG3dResTex * sub_02022DF4(const TextureResource * param0);
void sub_02022E08(TextureResource * param0);
void sub_02022E38(TextureResourceManager * param0, int param1);
void sub_02022E54(TextureResource * param0);
void sub_02022EA0(TextureResourceManager * param0, int param1);
void sub_02022EBC(TextureResource * param0);
NNSGfdTexKey sub_02022EF4(const TextureResource * param0);
NNSGfdTexKey sub_02022F04(const TextureResource * param0);
NNSGfdPlttKey sub_02022F14(const TextureResource * param0);
u32 sub_02022F24(NNSG3dResFileHeader * param0);
#endif // POKEPLATINUM_UNK_0202298C_H

View File

@ -1,6 +1,6 @@
#ifndef POKEPLATINUM_STRUCT_02022BD8_2_DECL_H
#define POKEPLATINUM_STRUCT_02022BD8_2_DECL_H
typedef struct UnkStruct_02022BD8_2_t UnkStruct_02022BD8_2;
typedef struct TextureResource TextureResource;
#endif // POKEPLATINUM_STRUCT_02022BD8_2_DECL_H

View File

@ -1,6 +1,6 @@
#ifndef POKEPLATINUM_STRUCT_02022BD8_DECL_H
#define POKEPLATINUM_STRUCT_02022BD8_DECL_H
typedef struct UnkStruct_02022BD8_t UnkStruct_02022BD8;
typedef struct TextureResourceManager TextureResourceManager;
#endif // POKEPLATINUM_STRUCT_02022BD8_DECL_H

View File

@ -19,25 +19,25 @@ Resource * ResourceManager_FindResource(ResourceManager * param0, int param1);
void * Resource_GetData(Resource * param0);
void Resource_SetData(Resource * param0, void * param1);
int Resource_GetID(Resource * param0);
UnkStruct_02022BD8 * sub_02022BD8(int param0, int param1);
void sub_02022C1C(UnkStruct_02022BD8 * param0);
BOOL sub_02022C40(const UnkStruct_02022BD8 * param0, int param1);
UnkStruct_02022BD8_2 * sub_02022C58(const UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, u32 param4);
UnkStruct_02022BD8_2 * sub_02022C9C(UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, int param4);
void sub_02022CB4(UnkStruct_02022BD8 * param0, UnkStruct_02022BD8_2 * param1);
void sub_02022D38(UnkStruct_02022BD8 * param0, int param1);
void sub_02022D58(UnkStruct_02022BD8 * param0);
UnkStruct_02022BD8_2 * sub_02022D98(const UnkStruct_02022BD8 * param0, int param1);
int sub_02022DE0(const UnkStruct_02022BD8_2 * param0);
NNSG3dResTex * sub_02022DF4(const UnkStruct_02022BD8_2 * param0);
void sub_02022E08(UnkStruct_02022BD8_2 * param0);
void sub_02022E38(UnkStruct_02022BD8 * param0, int param1);
void sub_02022E54(UnkStruct_02022BD8_2 * param0);
void sub_02022EA0(UnkStruct_02022BD8 * param0, int param1);
void sub_02022EBC(UnkStruct_02022BD8_2 * param0);
NNSGfdTexKey sub_02022EF4(const UnkStruct_02022BD8_2 * param0);
NNSGfdTexKey sub_02022F04(const UnkStruct_02022BD8_2 * param0);
NNSGfdPlttKey sub_02022F14(const UnkStruct_02022BD8_2 * param0);
TextureResourceManager * TextureResourceManager_New(int param0, int param1);
void TextureResourceManager_Delete(TextureResourceManager * param0);
BOOL TextureResourceManager_IsIDUnused(const TextureResourceManager * param0, int param1);
TextureResource * sub_02022C58(const TextureResourceManager * param0, void * param1, int param2, u32 param3, u32 param4);
TextureResource * sub_02022C9C(TextureResourceManager * param0, void * param1, int param2, u32 param3, int param4);
void sub_02022CB4(TextureResourceManager * param0, TextureResource * param1);
void sub_02022D38(TextureResourceManager * param0, int param1);
void sub_02022D58(TextureResourceManager * param0);
TextureResource * sub_02022D98(const TextureResourceManager * param0, int param1);
int TextureResource_GetID(const TextureResource * param0);
NNSG3dResTex * sub_02022DF4(const TextureResource * param0);
void sub_02022E08(TextureResource * param0);
void sub_02022E38(TextureResourceManager * param0, int param1);
void sub_02022E54(TextureResource * param0);
void sub_02022EA0(TextureResourceManager * param0, int param1);
void sub_02022EBC(TextureResource * param0);
NNSGfdTexKey sub_02022EF4(const TextureResource * param0);
NNSGfdTexKey sub_02022F04(const TextureResource * param0);
NNSGfdPlttKey sub_02022F14(const TextureResource * param0);
u32 sub_02022F24(NNSG3dResFileHeader * param0);
#endif // POKEPLATINUM_UNK_0202298C_H

View File

@ -68,7 +68,7 @@ typedef struct UnkStruct_ov5_021DF8FC_t {
UnkStruct_02020C44 * unk_0C;
UnkStruct_ov5_021F06D8 * unk_10;
UnkStruct_ov5_021F06D8 * unk_14;
UnkStruct_02022BD8 * unk_18;
TextureResourceManager * unk_18;
UnkStruct_ov5_021DF8C8 * unk_1C;
UnkStruct_ov5_021DF84C * unk_20;
} UnkStruct_ov5_021DF8FC;
@ -81,7 +81,7 @@ typedef struct UnkStruct_ov5_021DF8C8_t {
typedef struct {
u32 unk_00;
u32 unk_04;
UnkStruct_02022BD8 * unk_08;
TextureResourceManager * unk_08;
} UnkStruct_ov5_021DFA88;
static u32 ov5_021DF584(const UnkStruct_ov5_021DF47C * param0);
@ -106,8 +106,8 @@ static void ov5_021DF8C8(UnkStruct_ov5_021DF47C * param0, UnkStruct_ov5_021DF8FC
static void ov5_021DF8FC(UnkStruct_ov5_021DF8FC * param0);
static UnkStruct_ov5_021DF84C * ov5_021DF9B4(UnkStruct_ov5_021DF8FC * param0, u32 param1);
static void ov5_021DF910(UnkStruct_ov5_021DF8FC * param0, u32 param1);
static UnkStruct_ov5_021DF84C * ov5_021DF930(UnkStruct_ov5_021DF8FC * param0, u32 param1, void * param2, UnkStruct_02024184 * param3, void * param4, UnkStruct_02022BD8_2 * param5, const UnkStruct_020217F4 * param6);
static void ov5_021DFA88(UnkStruct_ov5_021DF47C * param0, u32 param1, UnkStruct_02022BD8 * param2);
static UnkStruct_ov5_021DF84C * ov5_021DF930(UnkStruct_ov5_021DF8FC * param0, u32 param1, void * param2, UnkStruct_02024184 * param3, void * param4, TextureResource * param5, const UnkStruct_020217F4 * param6);
static void ov5_021DFA88(UnkStruct_ov5_021DF47C * param0, u32 param1, TextureResourceManager * param2);
static void ov5_021DFAC0(SysTask * param0, void * param1);
static void ov5_021DFADC(SysTask * param0, void * param1);
@ -435,7 +435,7 @@ static void ov5_021DF754 (UnkStruct_ov5_021DF47C * param0, u32 param1, u32 param
v0->unk_0A = param5;
v0->unk_10 = ov5_021F067C(param1, 69, param6, param3);
v0->unk_14 = ov5_021F067C(param1, 70, param7, param4);
v0->unk_18 = sub_02022BD8(param5, param1);
v0->unk_18 = TextureResourceManager_New(param5, param1);
ov5_021DF8C8(param0, v0, param2);
@ -453,7 +453,7 @@ static void ov5_021DF7C4 (UnkStruct_ov5_021DF47C * param0)
ov5_021DF8FC(v0);
ov5_021F06D8(v0->unk_10);
ov5_021F06D8(v0->unk_14);
sub_02022C1C(v0->unk_18);
TextureResourceManager_Delete(v0->unk_18);
ov5_021DF554(v0);
param0->unk_20 = NULL;
@ -497,7 +497,7 @@ UnkStruct_ov5_021DF84C * ov5_021DF864 (UnkStruct_ov5_021DF47C * param0, u32 para
{
void * v0, * v1, * v2;
UnkStruct_02024184 v3;
UnkStruct_02022BD8_2 * v4;
TextureResource * v4;
UnkStruct_ov5_021DF84C * v5;
UnkStruct_ov5_021DF8FC * v6;
@ -563,7 +563,7 @@ static void ov5_021DF910 (UnkStruct_ov5_021DF8FC * param0, u32 param1)
GF_ASSERT(FALSE);
}
static UnkStruct_ov5_021DF84C * ov5_021DF930 (UnkStruct_ov5_021DF8FC * param0, u32 param1, void * param2, UnkStruct_02024184 * param3, void * param4, UnkStruct_02022BD8_2 * param5, const UnkStruct_020217F4 * param6)
static UnkStruct_ov5_021DF84C * ov5_021DF930 (UnkStruct_ov5_021DF8FC * param0, u32 param1, void * param2, UnkStruct_02024184 * param3, void * param4, TextureResource * param5, const UnkStruct_020217F4 * param6)
{
UnkStruct_ov5_021DF84C * v0;
@ -675,7 +675,7 @@ void ov5_021DFA3C (UnkStruct_ov5_021DF47C * param0, u32 param1, u32 param2, u32
{
UnkStruct_ov5_021DF8FC * v0 = param0->unk_20;
void * v1 = ov5_021DF5C0(param0, param2, 1);
UnkStruct_02022BD8_2 * v2 = sub_02022C9C(v0->unk_18, v1, param1, param3, ov5_021DF584(param0));
TextureResource * v2 = sub_02022C9C(v0->unk_18, v1, param1, param3, ov5_021DF584(param0));
GF_ASSERT(v2 != NULL);
ov5_021DFA88(param0, param1, v0->unk_18);
@ -687,7 +687,7 @@ void ov5_021DFA7C (UnkStruct_ov5_021DF47C * param0, u32 param1)
sub_02022D38(v0->unk_18, param1);
}
static void ov5_021DFA88 (UnkStruct_ov5_021DF47C * param0, u32 param1, UnkStruct_02022BD8 * param2)
static void ov5_021DFA88 (UnkStruct_ov5_021DF47C * param0, u32 param1, TextureResourceManager * param2)
{
UnkStruct_ov5_021DFA88 * v0 = ov5_021DF528(param0, (sizeof(UnkStruct_ov5_021DFA88)), 1);

View File

@ -516,9 +516,9 @@ static void ov5_021ED224 (UnkStruct_ov5_021ED0A4 * param0, int param1, int param
}
{
UnkStruct_02022BD8 * v0;
TextureResourceManager * v0;
v0 = sub_02022BD8(param5, 4);
v0 = TextureResourceManager_New(param5, 4);
ov5_021EDCA8(param0, v0);
ov5_021ED7D0(param0);
@ -531,7 +531,7 @@ static void ov5_021ED2AC (UnkStruct_ov5_021ED0A4 * param0)
{
ov5_021F06D8(param0->unk_F8);
ov5_021F06D8(param0->unk_FC);
sub_02022C1C(ov5_021EDCB0(param0));
TextureResourceManager_Delete(ov5_021EDCB0(param0));
}
static const UnkStruct_ov5_021ED2D0 * ov5_021ED2D0 (int param0, int param1, const UnkStruct_ov5_021ED2D0 * param2)
@ -568,9 +568,9 @@ static int ov5_021ED2E8 (UnkStruct_ov5_021ED0A4 * param0, UnkStruct_ov5_021F06D8
static UnkEnum_ov5_021ED334 ov5_021ED334 (UnkStruct_ov5_021ED0A4 * param0, int param1, int param2, const UnkStruct_ov5_021ED2D0 * param3)
{
UnkStruct_02022BD8 * v0 = param0->unk_F0;
TextureResourceManager * v0 = param0->unk_F0;
if (sub_02022C40(v0, param2) == 0) {
if (TextureResourceManager_IsIDUnused(v0, param2) == 0) {
return UnkEnum_ov5_021ED334_00;
}
@ -579,7 +579,7 @@ static UnkEnum_ov5_021ED334 ov5_021ED334 (UnkStruct_ov5_021ED0A4 * param0, int p
}
{
UnkStruct_02022BD8_2 * v1;
TextureResource * v1;
const UnkStruct_ov5_021ED2D0 * v2 = ov5_021ED2D0(param2, 0xffff, param3);
if (v2 == NULL) {
@ -983,7 +983,7 @@ static void ov5_021ED8B8 (MapObjectManager * param0, UnkStruct_ov5_021ED0A4 * pa
{
int v0, v1;
int * v2;
UnkStruct_02022BD8 * v3;
TextureResourceManager * v3;
v3 = ov5_021EDCB0(param1);
v2 = ov5_021EDCB8(param1);
@ -1226,7 +1226,7 @@ void ov5_021EDBC4 (const MapObjectManager * param0, int param1, MapObject * para
if (ov5_021ED94C(v1, param1) == 1) {
if (ov5_021EDA54(param0, param1, param2) == 0) {
UnkStruct_02022BD8 * v2 = ov5_021EDCB0(v1);
TextureResourceManager * v2 = ov5_021EDCB0(v1);
sub_02022D38(v2, param1);
ov5_021ED88C(v1, param1);
@ -1261,12 +1261,12 @@ ResourceManager * ov5_021EDCA0 (const UnkStruct_ov5_021ED0A4 * param0)
return param0->unk_EC;
}
void ov5_021EDCA8 (UnkStruct_ov5_021ED0A4 * param0, UnkStruct_02022BD8 * param1)
void ov5_021EDCA8 (UnkStruct_ov5_021ED0A4 * param0, TextureResourceManager * param1)
{
param0->unk_F0 = param1;
}
UnkStruct_02022BD8 * ov5_021EDCB0 (const UnkStruct_ov5_021ED0A4 * param0)
TextureResourceManager * ov5_021EDCB0 (const UnkStruct_ov5_021ED0A4 * param0)
{
return param0->unk_F0;
}
@ -1483,8 +1483,8 @@ static void ov5_021EDE3C (UnkStruct_ov5_021ED0A4 * param0, u32 param1, UnkStruct
}
{
UnkStruct_02022BD8 * v4 = ov5_021EDCB0(param0);
UnkStruct_02022BD8_2 * v5 = sub_02022D98(v4, param1);
TextureResourceManager * v4 = ov5_021EDCB0(param0);
TextureResource * v5 = sub_02022D98(v4, param1);
param2->unk_04 = sub_02022DF4(v5);
@ -1684,7 +1684,7 @@ static void ov5_021EE030 (SysTask * param0, void * param1)
static void ov5_021EE0E8 (UnkStruct_ov5_021ED0A4 * param0, int param1, void * param2, int param3)
{
UnkStruct_02022BD8_2 * v0 = sub_02022C9C(param0->unk_F0, param2, param1, 1, 4);
TextureResource * v0 = sub_02022C9C(param0->unk_F0, param2, param1, 1, 4);
GF_ASSERT(v0 != NULL);
ov5_021EE134(param0, param1);
@ -1944,7 +1944,7 @@ static UnkStruct_020216E0 * ov5_021EE454 (MapObject * param0, int param1, UnkFun
{
VecFx32 v0;
int v1, v2, v3, v4;
UnkStruct_02022BD8_2 * v5;
TextureResource * v5;
UnkStruct_020216E0 * v6;
const UnkStruct_ov5_021ED2D0 * v7;
UnkStruct_ov5_021ED0A4 * v8 = ov5_021EDEA8(param0);

View File

@ -8811,8 +8811,8 @@ void ov9_02250780 (FieldSystem * fieldSystem)
if (v0->unk_1EC0 == 1) {
UnkStruct_ov9_0225074C * v1 = ov9_0224E39C(v0);
UnkStruct_ov5_021ED0A4 * v2 = sub_0206285C(v0->fieldSystem->mapObjMan);
UnkStruct_02022BD8 * v3 = ov5_021EDCB0(v2);
UnkStruct_02022BD8_2 * v4 = sub_02022D98(v3, 0xe6);
TextureResourceManager * v3 = ov5_021EDCB0(v2);
TextureResource * v4 = sub_02022D98(v3, 0xe6);
NNSGfdPlttKey v5 = sub_02022F14(v4);
u32 v6 = NNS_GfdGetPlttKeyAddr(v5);

View File

@ -66,7 +66,7 @@ typedef struct UnkStruct_ov66_02234798_t {
typedef struct UnkStruct_ov66_02234548_t {
ResourceManager * unk_00;
ResourceManager * unk_04;
UnkStruct_02022BD8 * unk_08;
TextureResourceManager * unk_08;
UnkStruct_02020C44 * unk_0C;
UnkStruct_ov66_02234798 * unk_10;
u32 unk_14;
@ -168,7 +168,7 @@ UnkStruct_ov66_02234548 * ov66_022343A8 (u32 param0, u32 param1, u32 param2, u32
v0->unk_00 = ResourceManager_New(1, param2);
v0->unk_04 = ResourceManager_New(2, param2);
v0->unk_08 = sub_02022BD8(20, param2);
v0->unk_08 = TextureResourceManager_New(20, param2);
{
UnkStruct_ov5_021EDDAC v2;
@ -212,7 +212,7 @@ UnkStruct_ov66_02234548 * ov66_022343A8 (u32 param0, u32 param1, u32 param2, u32
}
{
UnkStruct_02022BD8_2 * v9;
TextureResource * v9;
int v10;
BOOL v11;
@ -266,7 +266,7 @@ void ov66_02234548 (UnkStruct_ov66_02234548 * param0)
sub_02020BD0();
}
sub_02022C1C(param0->unk_08);
TextureResourceManager_Delete(param0->unk_08);
ResourceManager_Delete(param0->unk_00);
ResourceManager_Delete(param0->unk_04);
Heap_FreeToHeap(param0->unk_10);
@ -321,7 +321,7 @@ UnkStruct_ov66_02234798 * ov66_0223461C (UnkStruct_ov66_02234548 * param0, const
UnkStruct_ov5_021DF84C v2;
UnkStruct_ov5_021DF7F8 v3;
Resource * v4;
UnkStruct_02022BD8_2 * v5;
TextureResource * v5;
u32 v6;
void * v7;
const NNSG3dResTex * v8;

View File

@ -1,6 +1,7 @@
#include <nitro.h>
#include <string.h>
#include "constants/heap.h"
#include "unk_02017728.h"
#include "heap.h"
#include "resource_manager.h"
@ -11,7 +12,7 @@
typedef struct Resource {
int id;
void * data;
void *data;
} Resource;
typedef struct ResourceManager {
@ -20,33 +21,33 @@ typedef struct ResourceManager {
int resourceCount;
} ResourceManager;
typedef struct UnkStruct_02022BD8_2_t {
Resource * unk_00;
typedef struct TextureResource {
Resource *resource;
NNSGfdTexKey unk_04;
NNSGfdTexKey unk_08;
NNSGfdPlttKey unk_0C;
void * unk_10;
void *textureData; // Only used when mode is TEX_RESOURCE_MODE_STRIPPED
u16 unk_14;
u16 unk_16;
} UnkStruct_02022BD8_2;
u16 mode;
} TextureResource;
typedef struct UnkStruct_02022BD8_t {
ResourceManager * unk_00;
UnkStruct_02022BD8_2 * unk_04;
} UnkStruct_02022BD8;
typedef struct TextureResourceManager {
ResourceManager *resMgr;
TextureResource *textures;
} TextureResourceManager;
static Resource *ResourceManager_AllocResource(ResourceManager *resMgr);
static void Resource_Init(Resource *resource);
static UnkStruct_02022BD8_2 * sub_02022F2C(const UnkStruct_02022BD8 * param0);
static void sub_02022F5C(UnkStruct_02022BD8_2 * param0);
static TextureResource * TextureResourceManager_AllocTexture(const TextureResourceManager * param0);
static void TextureResource_Init(TextureResource * param0);
static void sub_02022F98(const NNSG3dResTex * param0, NNSGfdTexKey * param1, NNSGfdTexKey * param2, NNSGfdPlttKey * param3);
static NNSG3dResTex * sub_02022F70(const UnkStruct_02022BD8_2 * param0);
static NNSG3dResTex * sub_02022F80(const UnkStruct_02022BD8_2 * param0);
static void sub_02023008(NNSG3dResTex * param0, UnkStruct_02022BD8_2 * param1);
static NNSG3dResTex * TextureResource_GetTexture(const TextureResource * param0);
static NNSG3dResTex * TextureResource_GetTextureSafe(const TextureResource * param0);
static void sub_02023008(NNSG3dResTex * param0, TextureResource * param1);
static void sub_02023034(NNSG3dResTex * param0, NNSGfdTexKey param1, NNSGfdTexKey param2, NNSGfdPlttKey param3);
static void sub_02023048(NNSG3dResTex * param0);
static void * sub_02023060(void * param0, u32 param1);
static u32 sub_02023084(const void * param0);
static void * CreateStrippedTexture(void * param0, enum HeapId param1);
static u32 GetStrippedTextureResourceSize(const void * param0);
ResourceManager *ResourceManager_New(s32 maxResources, enum HeapId heapID)
{
@ -199,65 +200,62 @@ static void Resource_Init(Resource *resource)
resource->data = NULL;
}
UnkStruct_02022BD8 * sub_02022BD8 (int param0, int param1)
TextureResourceManager *TextureResourceManager_New(s32 maxTextures, enum HeapId heapID)
{
UnkStruct_02022BD8 * v0;
int v1;
TextureResourceManager *texMgr = Heap_AllocFromHeap(heapID, sizeof(TextureResourceManager));
v0 = Heap_AllocFromHeap(param1, sizeof(UnkStruct_02022BD8));
texMgr->resMgr = ResourceManager_New(maxTextures, heapID);
texMgr->textures = Heap_AllocFromHeap(heapID, sizeof(TextureResource) * maxTextures);
v0->unk_00 = ResourceManager_New(param0, param1);
v0->unk_04 = Heap_AllocFromHeap(param1, sizeof(UnkStruct_02022BD8_2) * param0);
for (v1 = 0; v1 < param0; v1++) {
sub_02022F5C(v0->unk_04 + v1);
for (int i = 0; i < maxTextures; i++) {
TextureResource_Init(texMgr->textures + i);
}
return v0;
return texMgr;
}
void sub_02022C1C (UnkStruct_02022BD8 * param0)
void TextureResourceManager_Delete(TextureResourceManager *texMgr)
{
GF_ASSERT(param0);
GF_ASSERT(texMgr);
sub_02022D58(param0);
ResourceManager_Delete(param0->unk_00);
Heap_FreeToHeap(param0->unk_04);
Heap_FreeToHeap(param0);
sub_02022D58(texMgr);
ResourceManager_Delete(texMgr->resMgr);
Heap_FreeToHeap(texMgr->textures);
Heap_FreeToHeap(texMgr);
}
BOOL sub_02022C40 (const UnkStruct_02022BD8 * param0, int param1)
BOOL TextureResourceManager_IsIDUnused(const TextureResourceManager *texMgr, int id)
{
GF_ASSERT(param0);
return ResourceManager_IsIDUnused(param0->unk_00, param1);
GF_ASSERT(texMgr);
return ResourceManager_IsIDUnused(texMgr->resMgr, id);
}
UnkStruct_02022BD8_2 * sub_02022C58 (const UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, u32 param4)
TextureResource *sub_02022C58(const TextureResourceManager *texMgr, void *data, int id, enum TextureResourceMode mode, enum HeapId heapID)
{
UnkStruct_02022BD8_2 * v0;
void * v1;
TextureResource * texResource;
void * resourceData;
GF_ASSERT(param0);
GF_ASSERT(texMgr);
v0 = sub_02022F2C(param0);
v0->unk_16 = param3;
texResource = TextureResourceManager_AllocTexture(texMgr);
texResource->mode = mode;
if (v0->unk_16 == 1) {
v1 = sub_02023060(param1, param4);
v0->unk_10 = param1;
if (texResource->mode == TEX_RESOURCE_MODE_STRIPPED) {
resourceData = CreateStrippedTexture(data, heapID);
texResource->textureData = data;
} else {
v1 = param1;
v0->unk_10 = NULL;
resourceData = data;
texResource->textureData = NULL;
}
v0->unk_00 = ResourceManager_AddResource(param0->unk_00, v1, param2);
texResource->resource = ResourceManager_AddResource(texMgr->resMgr, resourceData, id);
return v0;
return texResource;
}
UnkStruct_02022BD8_2 * sub_02022C9C (UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, int param4)
TextureResource * sub_02022C9C (TextureResourceManager * param0, void * param1, int param2, u32 param3, int param4)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
v0 = sub_02022C58(param0, param1, param2, param3, param4);
sub_02022EBC(v0);
@ -265,20 +263,20 @@ UnkStruct_02022BD8_2 * sub_02022C9C (UnkStruct_02022BD8 * param0, void * param1,
return v0;
}
void sub_02022CB4 (UnkStruct_02022BD8 * param0, UnkStruct_02022BD8_2 * param1)
void sub_02022CB4 (TextureResourceManager * param0, TextureResource * param1)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(param1);
if ((param1->unk_16 == 1) && (param1->unk_14 == 0)) {
Heap_FreeToHeap(param1->unk_10);
param1->unk_16 = NULL;
if ((param1->mode == 1) && (param1->unk_14 == 0)) {
Heap_FreeToHeap(param1->textureData);
param1->mode = NULL;
}
if (param1->unk_00) {
ResourceManager_RemoveResource(param0->unk_00, param1->unk_00);
if (param1->resource) {
ResourceManager_RemoveResource(param0->resMgr, param1->resource);
}
if (param1->unk_04 != NNS_GFD_ALLOC_ERROR_TEXKEY) {
@ -296,12 +294,12 @@ void sub_02022CB4 (UnkStruct_02022BD8 * param0, UnkStruct_02022BD8_2 * param1)
GF_ASSERT(v0 == 0);
}
sub_02022F5C(param1);
TextureResource_Init(param1);
}
void sub_02022D38 (UnkStruct_02022BD8 * param0, int param1)
void sub_02022D38 (TextureResourceManager * param0, int param1)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
GF_ASSERT(param0);
@ -309,33 +307,33 @@ void sub_02022D38 (UnkStruct_02022BD8 * param0, int param1)
sub_02022CB4(param0, v0);
}
void sub_02022D58 (UnkStruct_02022BD8 * param0)
void sub_02022D58 (TextureResourceManager * param0)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(param0->unk_04);
GF_ASSERT(param0->textures);
for (v0 = 0; v0 < param0->unk_00->maxResources; v0++) {
if (param0->unk_04[v0].unk_00) {
sub_02022CB4(param0, param0->unk_04 + v0);
for (v0 = 0; v0 < param0->resMgr->maxResources; v0++) {
if (param0->textures[v0].resource) {
sub_02022CB4(param0, param0->textures + v0);
}
}
}
UnkStruct_02022BD8_2 * sub_02022D98 (const UnkStruct_02022BD8 * param0, int param1)
TextureResource * sub_02022D98 (const TextureResourceManager *texMgr, int param1)
{
int v0;
int v1;
GF_ASSERT(param0);
GF_ASSERT(texMgr);
for (v0 = 0; v0 < param0->unk_00->maxResources; v0++) {
if (param0->unk_04[v0].unk_00) {
v1 = sub_02022DE0(param0->unk_04 + v0);
for (v0 = 0; v0 < texMgr->resMgr->maxResources; v0++) {
if (texMgr->textures[v0].resource) {
v1 = TextureResource_GetID(texMgr->textures + v0);
if (v1 == param1) {
return param0->unk_04 + v0;
return texMgr->textures + v0;
}
}
}
@ -343,19 +341,19 @@ UnkStruct_02022BD8_2 * sub_02022D98 (const UnkStruct_02022BD8 * param0, int para
return NULL;
}
int sub_02022DE0 (const UnkStruct_02022BD8_2 * param0)
int TextureResource_GetID(const TextureResource *texResource)
{
GF_ASSERT(param0);
return Resource_GetID(param0->unk_00);
GF_ASSERT(texResource);
return Resource_GetID(texResource->resource);
}
NNSG3dResTex * sub_02022DF4 (const UnkStruct_02022BD8_2 * param0)
NNSG3dResTex * sub_02022DF4 (const TextureResource * param0)
{
GF_ASSERT(param0);
return sub_02022F70(param0);
return TextureResource_GetTexture(param0);
}
void sub_02022E08 (UnkStruct_02022BD8_2 * param0)
void sub_02022E08 (TextureResource * param0)
{
NNSG3dResTex * v0;
@ -367,13 +365,13 @@ void sub_02022E08 (UnkStruct_02022BD8_2 * param0)
return;
}
v0 = sub_02022F80(param0);
v0 = TextureResource_GetTextureSafe(param0);
sub_02023008(v0, param0);
}
void sub_02022E38 (UnkStruct_02022BD8 * param0, int param1)
void sub_02022E38 (TextureResourceManager * param0, int param1)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
GF_ASSERT(param0);
@ -381,13 +379,13 @@ void sub_02022E38 (UnkStruct_02022BD8 * param0, int param1)
sub_02022E08(v0);
}
void sub_02022E54 (UnkStruct_02022BD8_2 * param0)
void sub_02022E54 (TextureResource * param0)
{
void * v0;
GF_ASSERT(param0);
if (param0->unk_16 == 0) {
if (param0->mode == 0) {
GF_ASSERT(0);
return;
}
@ -397,17 +395,17 @@ void sub_02022E54 (UnkStruct_02022BD8_2 * param0)
return;
}
sub_02023048(sub_02022F80(param0));
sub_02023034(sub_02022F70(param0), param0->unk_04, param0->unk_08, param0->unk_0C);
Heap_FreeToHeap(param0->unk_10);
sub_02023048(TextureResource_GetTextureSafe(param0));
sub_02023034(TextureResource_GetTexture(param0), param0->unk_04, param0->unk_08, param0->unk_0C);
Heap_FreeToHeap(param0->textureData);
param0->unk_10 = NULL;
param0->textureData = NULL;
param0->unk_14 = 1;
}
void sub_02022EA0 (UnkStruct_02022BD8 * param0, int param1)
void sub_02022EA0 (TextureResourceManager * param0, int param1)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
GF_ASSERT(param0);
@ -415,7 +413,7 @@ void sub_02022EA0 (UnkStruct_02022BD8 * param0, int param1)
sub_02022E54(v0);
}
void sub_02022EBC (UnkStruct_02022BD8_2 * param0)
void sub_02022EBC (TextureResource * param0)
{
NNSG3dResTex * v0;
@ -427,23 +425,23 @@ void sub_02022EBC (UnkStruct_02022BD8_2 * param0)
return;
}
v0 = sub_02022F80(param0);
v0 = TextureResource_GetTextureSafe(param0);
sub_02022F98(v0, &param0->unk_04, &param0->unk_08, &param0->unk_0C);
}
NNSGfdTexKey sub_02022EF4 (const UnkStruct_02022BD8_2 * param0)
NNSGfdTexKey sub_02022EF4 (const TextureResource * param0)
{
GF_ASSERT(param0);
return param0->unk_04;
}
NNSGfdTexKey sub_02022F04 (const UnkStruct_02022BD8_2 * param0)
NNSGfdTexKey sub_02022F04 (const TextureResource * param0)
{
GF_ASSERT(param0);
return param0->unk_08;
}
NNSGfdPlttKey sub_02022F14 (const UnkStruct_02022BD8_2 * param0)
NNSGfdPlttKey sub_02022F14 (const TextureResource * param0)
{
GF_ASSERT(param0);
return param0->unk_0C;
@ -451,57 +449,44 @@ NNSGfdPlttKey sub_02022F14 (const UnkStruct_02022BD8_2 * param0)
u32 sub_02022F24 (NNSG3dResFileHeader * param0)
{
return sub_02023084(param0);
return GetStrippedTextureResourceSize(param0);
}
static UnkStruct_02022BD8_2 * sub_02022F2C (const UnkStruct_02022BD8 * param0)
static TextureResource * TextureResourceManager_AllocTexture(const TextureResourceManager *texMgr)
{
int v0;
for (v0 = 0; v0 < param0->unk_00->maxResources; v0++) {
if (param0->unk_04[v0].unk_00 == NULL) {
return param0->unk_04 + v0;
for (int i = 0; i < texMgr->resMgr->maxResources; i++) {
if (texMgr->textures[i].resource == NULL) {
return texMgr->textures + i;
}
}
return NULL;
}
static void sub_02022F5C (UnkStruct_02022BD8_2 * param0)
static void TextureResource_Init(TextureResource *texResource)
{
param0->unk_00 = NULL;
param0->unk_04 = NNS_GFD_ALLOC_ERROR_TEXKEY;
param0->unk_08 = NNS_GFD_ALLOC_ERROR_TEXKEY;
param0->unk_0C = NNS_GFD_ALLOC_ERROR_PLTTKEY;
param0->unk_14 = 0;
param0->unk_10 = NULL;
param0->unk_14 = 0;
texResource->resource = NULL;
texResource->unk_04 = NNS_GFD_ALLOC_ERROR_TEXKEY;
texResource->unk_08 = NNS_GFD_ALLOC_ERROR_TEXKEY;
texResource->unk_0C = NNS_GFD_ALLOC_ERROR_PLTTKEY;
texResource->unk_14 = 0;
texResource->textureData = NULL;
texResource->unk_14 = 0;
}
static NNSG3dResTex * sub_02022F70 (const UnkStruct_02022BD8_2 * param0)
// Assumes that the texture resource is in TEX_RESOURCE_MODE_NORMAL
static NNSG3dResTex *TextureResource_GetTexture(const TextureResource *texResource)
{
void * v0;
NNSG3dResTex * v1;
v0 = Resource_GetData(param0->unk_00);
v1 = NNS_G3dGetTex(v0);
return v1;
return NNS_G3dGetTex(Resource_GetData(texResource->resource));
}
static NNSG3dResTex * sub_02022F80 (const UnkStruct_02022BD8_2 * param0)
static NNSG3dResTex *TextureResource_GetTextureSafe(const TextureResource *texResource)
{
void * v0;
NNSG3dResTex * v1;
void *texData = texResource->mode == TEX_RESOURCE_MODE_NORMAL
? Resource_GetData(texResource->resource)
: texResource->textureData;
if (param0->unk_16 == 0) {
v0 = Resource_GetData(param0->unk_00);
} else {
v0 = param0->unk_10;
}
v1 = NNS_G3dGetTex(v0);
return v1;
return NNS_G3dGetTex(texData);
}
static void sub_02022F98 (const NNSG3dResTex * param0, NNSGfdTexKey * param1, NNSGfdTexKey * param2, NNSGfdPlttKey * param3)
@ -527,7 +512,7 @@ static void sub_02022F98 (const NNSG3dResTex * param0, NNSGfdTexKey * param1, NN
}
}
static void sub_02023008 (NNSG3dResTex * param0, UnkStruct_02022BD8_2 * param1)
static void sub_02023008 (NNSG3dResTex * param0, TextureResource * param1)
{
sub_02023034(param0, param1->unk_04, param1->unk_08, param1->unk_0C);
@ -553,29 +538,22 @@ static void sub_02023048 (NNSG3dResTex * param0)
v2 = NNS_G3dPlttReleasePlttKey(param0);
}
static void * sub_02023060 (void * param0, u32 param1)
// Duplicates a texture resource without the actual texture data
static void *CreateStrippedTexture(void *resFile, enum HeapId heapID)
{
u32 v0;
void * v1;
u32 size = GetStrippedTextureResourceSize(resFile);
void *duplicated = Heap_AllocFromHeap(heapID, size);
memcpy(duplicated, resFile, size);
v0 = sub_02023084(param0);
v1 = Heap_AllocFromHeap(param1, v0);
memcpy(v1, param0, v0);
return v1;
return duplicated;
}
static u32 sub_02023084 (const void * param0)
// Calculates the size of a texture resource without the actual texture data
static u32 GetStrippedTextureResourceSize(const void *resFile)
{
NNSG3dResTex * v0;
u8 * v1;
u32 v2;
NNSG3dResTex *texture = NNS_G3dGetTex(resFile);
GF_ASSERT(texture);
v0 = NNS_G3dGetTex(param0);
GF_ASSERT(v0);
v1 = (u8 *)v0 + v0->texInfo.ofsTex;
v2 = (u32)(v1 - (u8 *)param0);
return v2;
u8 *texData = (u8 *)texture + texture->texInfo.ofsTex;
return (u32)(texData - (u8 *)resFile);
}

View File

@ -18,29 +18,29 @@ typedef struct ResourceManager {
int resourceCount;
} UnkStruct_0202298C;
typedef struct UnkStruct_02022BD8_2_t {
Resource * unk_00;
typedef struct TextureResource {
Resource * resource;
NNSGfdTexKey unk_04;
NNSGfdTexKey unk_08;
NNSGfdPlttKey unk_0C;
void * unk_10;
void * textureData;
u16 unk_14;
u16 unk_16;
} UnkStruct_02022BD8_2;
u16 mode;
} TextureResource;
typedef struct UnkStruct_02022BD8_t {
UnkStruct_0202298C * unk_00;
UnkStruct_02022BD8_2 * unk_04;
} UnkStruct_02022BD8;
typedef struct TextureResourceManager {
UnkStruct_0202298C * resMgr;
TextureResource * textures;
} TextureResourceManager;
static Resource * sub_02022B90(UnkStruct_0202298C * param0);
static void sub_02022BC0(Resource * param0);
static UnkStruct_02022BD8_2 * sub_02022F2C(const UnkStruct_02022BD8 * param0);
static void sub_02022F5C(UnkStruct_02022BD8_2 * param0);
static TextureResource * sub_02022F2C(const TextureResourceManager * param0);
static void sub_02022F5C(TextureResource * param0);
static void sub_02022F98(const NNSG3dResTex * param0, NNSGfdTexKey * param1, NNSGfdTexKey * param2, NNSGfdPlttKey * param3);
static NNSG3dResTex * sub_02022F70(const UnkStruct_02022BD8_2 * param0);
static NNSG3dResTex * sub_02022F80(const UnkStruct_02022BD8_2 * param0);
static void sub_02023008(NNSG3dResTex * param0, UnkStruct_02022BD8_2 * param1);
static NNSG3dResTex * sub_02022F70(const TextureResource * param0);
static NNSG3dResTex * sub_02022F80(const TextureResource * param0);
static void sub_02023008(NNSG3dResTex * param0, TextureResource * param1);
static void sub_02023034(NNSG3dResTex * param0, NNSGfdTexKey param1, NNSGfdTexKey param2, NNSGfdPlttKey param3);
static void sub_02023048(NNSG3dResTex * param0);
static void * sub_02023060(void * param0, u32 param1);
@ -217,65 +217,65 @@ static void sub_02022BC0 (Resource * param0)
param0->unk_04 = NULL;
}
UnkStruct_02022BD8 * sub_02022BD8 (int param0, int param1)
TextureResourceManager * TextureResourceManager_New (int param0, int param1)
{
UnkStruct_02022BD8 * v0;
TextureResourceManager * v0;
int v1;
v0 = Heap_AllocFromHeap(param1, sizeof(UnkStruct_02022BD8));
v0 = Heap_AllocFromHeap(param1, sizeof(TextureResourceManager));
v0->unk_00 = ResourceManager_New(param0, param1);
v0->unk_04 = Heap_AllocFromHeap(param1, sizeof(UnkStruct_02022BD8_2) * param0);
v0->resMgr = ResourceManager_New(param0, param1);
v0->textures = Heap_AllocFromHeap(param1, sizeof(TextureResource) * param0);
for (v1 = 0; v1 < param0; v1++) {
sub_02022F5C(v0->unk_04 + v1);
sub_02022F5C(v0->textures + v1);
}
return v0;
}
void sub_02022C1C (UnkStruct_02022BD8 * param0)
void TextureResourceManager_Delete (TextureResourceManager * param0)
{
GF_ASSERT(param0);
sub_02022D58(param0);
ResourceManager_Delete(param0->unk_00);
Heap_FreeToHeap(param0->unk_04);
ResourceManager_Delete(param0->resMgr);
Heap_FreeToHeap(param0->textures);
Heap_FreeToHeap(param0);
}
BOOL sub_02022C40 (const UnkStruct_02022BD8 * param0, int param1)
BOOL TextureResourceManager_IsIDUnused (const TextureResourceManager * param0, int param1)
{
GF_ASSERT(param0);
return ResourceManager_IsIDUnused(param0->unk_00, param1);
return ResourceManager_IsIDUnused(param0->resMgr, param1);
}
UnkStruct_02022BD8_2 * sub_02022C58 (const UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, u32 param4)
TextureResource * sub_02022C58 (const TextureResourceManager * param0, void * param1, int param2, u32 param3, u32 param4)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
void * v1;
GF_ASSERT(param0);
v0 = sub_02022F2C(param0);
v0->unk_16 = param3;
v0->mode = param3;
if (v0->unk_16 == 1) {
if (v0->mode == 1) {
v1 = sub_02023060(param1, param4);
v0->unk_10 = param1;
v0->textureData = param1;
} else {
v1 = param1;
v0->unk_10 = NULL;
v0->textureData = NULL;
}
v0->unk_00 = ResourceManager_AddResource(param0->unk_00, v1, param2);
v0->resource = ResourceManager_AddResource(param0->resMgr, v1, param2);
return v0;
}
UnkStruct_02022BD8_2 * sub_02022C9C (UnkStruct_02022BD8 * param0, void * param1, int param2, u32 param3, int param4)
TextureResource * sub_02022C9C (TextureResourceManager * param0, void * param1, int param2, u32 param3, int param4)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
v0 = sub_02022C58(param0, param1, param2, param3, param4);
sub_02022EBC(v0);
@ -283,20 +283,20 @@ UnkStruct_02022BD8_2 * sub_02022C9C (UnkStruct_02022BD8 * param0, void * param1,
return v0;
}
void sub_02022CB4 (UnkStruct_02022BD8 * param0, UnkStruct_02022BD8_2 * param1)
void sub_02022CB4 (TextureResourceManager * param0, TextureResource * param1)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(param1);
if ((param1->unk_16 == 1) && (param1->unk_14 == 0)) {
Heap_FreeToHeap(param1->unk_10);
param1->unk_16 = NULL;
if ((param1->mode == 1) && (param1->unk_14 == 0)) {
Heap_FreeToHeap(param1->textureData);
param1->mode = NULL;
}
if (param1->unk_00) {
ResourceManager_RemoveResource(param0->unk_00, param1->unk_00);
if (param1->resource) {
ResourceManager_RemoveResource(param0->resMgr, param1->resource);
}
if (param1->unk_04 != NNS_GFD_ALLOC_ERROR_TEXKEY) {
@ -317,9 +317,9 @@ void sub_02022CB4 (UnkStruct_02022BD8 * param0, UnkStruct_02022BD8_2 * param1)
sub_02022F5C(param1);
}
void sub_02022D38 (UnkStruct_02022BD8 * param0, int param1)
void sub_02022D38 (TextureResourceManager * param0, int param1)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
GF_ASSERT(param0);
@ -327,33 +327,33 @@ void sub_02022D38 (UnkStruct_02022BD8 * param0, int param1)
sub_02022CB4(param0, v0);
}
void sub_02022D58 (UnkStruct_02022BD8 * param0)
void sub_02022D58 (TextureResourceManager * param0)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(param0->unk_04);
GF_ASSERT(param0->textures);
for (v0 = 0; v0 < param0->unk_00->unk_04; v0++) {
if (param0->unk_04[v0].unk_00) {
sub_02022CB4(param0, param0->unk_04 + v0);
for (v0 = 0; v0 < param0->resMgr->unk_04; v0++) {
if (param0->textures[v0].resource) {
sub_02022CB4(param0, param0->textures + v0);
}
}
}
UnkStruct_02022BD8_2 * sub_02022D98 (const UnkStruct_02022BD8 * param0, int param1)
TextureResource * sub_02022D98 (const TextureResourceManager * param0, int param1)
{
int v0;
int v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->unk_00->unk_04; v0++) {
if (param0->unk_04[v0].unk_00) {
v1 = sub_02022DE0(param0->unk_04 + v0);
for (v0 = 0; v0 < param0->resMgr->unk_04; v0++) {
if (param0->textures[v0].resource) {
v1 = TextureResource_GetID(param0->textures + v0);
if (v1 == param1) {
return param0->unk_04 + v0;
return param0->textures + v0;
}
}
}
@ -361,19 +361,19 @@ UnkStruct_02022BD8_2 * sub_02022D98 (const UnkStruct_02022BD8 * param0, int para
return NULL;
}
int sub_02022DE0 (const UnkStruct_02022BD8_2 * param0)
int TextureResource_GetID (const TextureResource * param0)
{
GF_ASSERT(param0);
return Resource_GetID(param0->unk_00);
return Resource_GetID(param0->resource);
}
NNSG3dResTex * sub_02022DF4 (const UnkStruct_02022BD8_2 * param0)
NNSG3dResTex * sub_02022DF4 (const TextureResource * param0)
{
GF_ASSERT(param0);
return sub_02022F70(param0);
}
void sub_02022E08 (UnkStruct_02022BD8_2 * param0)
void sub_02022E08 (TextureResource * param0)
{
NNSG3dResTex * v0;
@ -389,9 +389,9 @@ void sub_02022E08 (UnkStruct_02022BD8_2 * param0)
sub_02023008(v0, param0);
}
void sub_02022E38 (UnkStruct_02022BD8 * param0, int param1)
void sub_02022E38 (TextureResourceManager * param0, int param1)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
GF_ASSERT(param0);
@ -399,13 +399,13 @@ void sub_02022E38 (UnkStruct_02022BD8 * param0, int param1)
sub_02022E08(v0);
}
void sub_02022E54 (UnkStruct_02022BD8_2 * param0)
void sub_02022E54 (TextureResource * param0)
{
void * v0;
GF_ASSERT(param0);
if (param0->unk_16 == 0) {
if (param0->mode == 0) {
GF_ASSERT(0);
return;
}
@ -417,15 +417,15 @@ void sub_02022E54 (UnkStruct_02022BD8_2 * param0)
sub_02023048(sub_02022F80(param0));
sub_02023034(sub_02022F70(param0), param0->unk_04, param0->unk_08, param0->unk_0C);
Heap_FreeToHeap(param0->unk_10);
Heap_FreeToHeap(param0->textureData);
param0->unk_10 = NULL;
param0->textureData = NULL;
param0->unk_14 = 1;
}
void sub_02022EA0 (UnkStruct_02022BD8 * param0, int param1)
void sub_02022EA0 (TextureResourceManager * param0, int param1)
{
UnkStruct_02022BD8_2 * v0;
TextureResource * v0;
GF_ASSERT(param0);
@ -433,7 +433,7 @@ void sub_02022EA0 (UnkStruct_02022BD8 * param0, int param1)
sub_02022E54(v0);
}
void sub_02022EBC (UnkStruct_02022BD8_2 * param0)
void sub_02022EBC (TextureResource * param0)
{
NNSG3dResTex * v0;
@ -449,19 +449,19 @@ void sub_02022EBC (UnkStruct_02022BD8_2 * param0)
sub_02022F98(v0, &param0->unk_04, &param0->unk_08, &param0->unk_0C);
}
NNSGfdTexKey sub_02022EF4 (const UnkStruct_02022BD8_2 * param0)
NNSGfdTexKey sub_02022EF4 (const TextureResource * param0)
{
GF_ASSERT(param0);
return param0->unk_04;
}
NNSGfdTexKey sub_02022F04 (const UnkStruct_02022BD8_2 * param0)
NNSGfdTexKey sub_02022F04 (const TextureResource * param0)
{
GF_ASSERT(param0);
return param0->unk_08;
}
NNSGfdPlttKey sub_02022F14 (const UnkStruct_02022BD8_2 * param0)
NNSGfdPlttKey sub_02022F14 (const TextureResource * param0)
{
GF_ASSERT(param0);
return param0->unk_0C;
@ -472,50 +472,50 @@ u32 sub_02022F24 (NNSG3dResFileHeader * param0)
return sub_02023084(param0);
}
static UnkStruct_02022BD8_2 * sub_02022F2C (const UnkStruct_02022BD8 * param0)
static TextureResource * sub_02022F2C (const TextureResourceManager * param0)
{
int v0;
for (v0 = 0; v0 < param0->unk_00->unk_04; v0++) {
if (param0->unk_04[v0].unk_00 == NULL) {
return param0->unk_04 + v0;
for (v0 = 0; v0 < param0->resMgr->unk_04; v0++) {
if (param0->textures[v0].resource == NULL) {
return param0->textures + v0;
}
}
return NULL;
}
static void sub_02022F5C (UnkStruct_02022BD8_2 * param0)
static void sub_02022F5C (TextureResource * param0)
{
param0->unk_00 = NULL;
param0->resource = NULL;
param0->unk_04 = NNS_GFD_ALLOC_ERROR_TEXKEY;
param0->unk_08 = NNS_GFD_ALLOC_ERROR_TEXKEY;
param0->unk_0C = NNS_GFD_ALLOC_ERROR_PLTTKEY;
param0->unk_14 = 0;
param0->unk_10 = NULL;
param0->textureData = NULL;
param0->unk_14 = 0;
}
static NNSG3dResTex * sub_02022F70 (const UnkStruct_02022BD8_2 * param0)
static NNSG3dResTex * sub_02022F70 (const TextureResource * param0)
{
void * v0;
NNSG3dResTex * v1;
v0 = Resource_GetData(param0->unk_00);
v0 = Resource_GetData(param0->resource);
v1 = NNS_G3dGetTex(v0);
return v1;
}
static NNSG3dResTex * sub_02022F80 (const UnkStruct_02022BD8_2 * param0)
static NNSG3dResTex * sub_02022F80 (const TextureResource * param0)
{
void * v0;
NNSG3dResTex * v1;
if (param0->unk_16 == 0) {
v0 = Resource_GetData(param0->unk_00);
if (param0->mode == 0) {
v0 = Resource_GetData(param0->resource);
} else {
v0 = param0->unk_10;
v0 = param0->textureData;
}
v1 = NNS_G3dGetTex(v0);
@ -545,7 +545,7 @@ static void sub_02022F98 (const NNSG3dResTex * param0, NNSGfdTexKey * param1, NN
}
}
static void sub_02023008 (NNSG3dResTex * param0, UnkStruct_02022BD8_2 * param1)
static void sub_02023008 (NNSG3dResTex * param0, TextureResource * param1)
{
sub_02023034(param0, param1->unk_04, param1->unk_08, param1->unk_0C);