// // Generated By: dol2asm // Translation Unit: JUTTexture // #include "JSystem/JUtility/JUTTexture.h" #include "dol2asm.h" #include "dolphin/types.h" // // Forward References: // extern "C" void __dt__10JUTTextureFv(); extern "C" void storeTIMG__10JUTTextureFPC7ResTIMGUc(); extern "C" void storeTIMG__10JUTTextureFPC7ResTIMGP10JUTPalette(); extern "C" void storeTIMG__10JUTTextureFPC7ResTIMGP10JUTPalette7_GXTlut(); extern "C" void attachPalette__10JUTTextureFP10JUTPalette(); extern "C" void init__10JUTTextureFv(); extern "C" void initTexObj__10JUTTextureFv(); extern "C" void initTexObj__10JUTTextureF7_GXTlut(); extern "C" void load__10JUTTextureF11_GXTexMapID(); // // External References: // extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void __dla__FPv(); extern "C" void storeTLUT__10JUTPaletteF7_GXTlut10_GXTlutFmt15JUTTransparencyUsPv(); extern "C" void load__10JUTPaletteFv(); extern "C" void _savegpr_29(); extern "C" void _restgpr_29(); // // Declarations: // /* 802DE234-802DE2A8 2D8B74 0074+00 0/0 30/30 0/0 .text __dt__10JUTTextureFv */ JUTTexture::~JUTTexture() { if (getCaptureFlag()) { delete[] field_0x3c; } if (getEmbPaletteDelFlag()) { delete mEmbPalette; } } /* 802DE2A8-802DE44C 2D8BE8 01A4+00 0/0 18/18 0/0 .text storeTIMG__10JUTTextureFPC7ResTIMGUc */ #ifdef NONMATCHING void JUTTexture::storeTIMG(ResTIMG const* param_0, u8 param_1) { _GXTlut tlut; if (param_0 && param_1 < 0x10) { mTexInfo = param_0; mTexData = (void*)((int)mTexInfo + mTexInfo->texDataOffset); if (mTexInfo->texDataOffset == 0) { mTexData = (void*)((int)mTexInfo + 0x20); } field_0x2c = NULL; mTlutName = 0; mWrapS = mTexInfo->wrapS; mWrapT = mTexInfo->wrapT; mMinFilter = mTexInfo->minFilter; mMagFilter = mTexInfo->magFilter; mMinLOD = (s8)mTexInfo->minLOD; mMaxLOD = (s8)mTexInfo->maxLOD; mLODBias = mTexInfo->LODBias; ResTIMG* tmp = (ResTIMG*)mTexInfo; if (mTexInfo->paletteCount == 0) { initTexObj(); } else { if (mTexInfo->paletteCount > 0x100) { tlut = (_GXTlut)param_1; } else { tlut = (_GXTlut)((param_1 & 3) + GX_BIGTLUT0); } if (mEmbPalette == NULL || !getEmbPaletteDelFlag()) { JUTPalette* palette = new JUTPalette(); if (palette) { palette->storeTLUT(tlut, (_GXTlutFmt)tmp->paletteFormat, (JUTTransparency)tmp->alphaEnabled, tmp->paletteCount, (void*)(tmp->format + tmp->paletteOffset)); } mEmbPalette = palette; mFlags = mFlags & 1 | 2; } else { mEmbPalette->storeTLUT(tlut, (_GXTlutFmt)tmp->paletteFormat, (JUTTransparency)tmp->alphaEnabled, tmp->paletteCount, (void*)(tmp->format + tmp->paletteOffset)); } attachPalette(mEmbPalette); } } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JUTTexture::storeTIMG(ResTIMG const* param_0, u8 param_1) { nofralloc #include "asm/JSystem/JUtility/JUTTexture/storeTIMG__10JUTTextureFPC7ResTIMGUc.s" } #pragma pop #endif /* 802DE44C-802DE480 2D8D8C 0034+00 0/0 6/6 0/0 .text * storeTIMG__10JUTTextureFPC7ResTIMGP10JUTPalette */ void JUTTexture::storeTIMG(ResTIMG const* param_0, JUTPalette* param_1) { _GXTlut type; if (param_1 != NULL) { type = (_GXTlut)param_1->getTlutName(); } else { type = GX_TLUT0; } storeTIMG(param_0, param_1, type); } /* 802DE480-802DE5B0 2D8DC0 0130+00 1/1 3/3 0/0 .text * storeTIMG__10JUTTextureFPC7ResTIMGP10JUTPalette7_GXTlut */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JUTTexture::storeTIMG(ResTIMG const* param_0, JUTPalette* param_1, _GXTlut param_2) { nofralloc #include "asm/JSystem/JUtility/JUTTexture/storeTIMG__10JUTTextureFPC7ResTIMGP10JUTPalette7_GXTlut.s" } #pragma pop /* 802DE5B0-802DE608 2D8EF0 0058+00 1/1 7/7 0/0 .text attachPalette__10JUTTextureFP10JUTPalette */ void JUTTexture::attachPalette(JUTPalette* param_0) { if (mTexInfo->palettesEnabled) { if (param_0 == NULL && mEmbPalette != NULL) { field_0x2c = mEmbPalette; } else { field_0x2c = param_0; } _GXTlut name = (_GXTlut)field_0x2c->getTlutName(); initTexObj(name); } } /* 802DE608-802DE658 2D8F48 0050+00 1/1 0/0 0/0 .text init__10JUTTextureFv */ void JUTTexture::init() { if (mTexInfo->paletteCount == 0) { initTexObj(); } else { if (mEmbPalette != NULL) { field_0x2c = mEmbPalette; _GXTlut name = (_GXTlut)field_0x2c->getTlutName(); initTexObj(name); } } } /* ############################################################################################## */ /* 80455FD8-80455FDC 0045D8 0004+00 2/2 0/0 0/0 .sdata2 @453 */ SECTION_SDATA2 static f32 lit_453 = 0.125f; /* 80455FDC-80455FE0 0045DC 0004+00 2/2 0/0 0/0 .sdata2 @454 */ SECTION_SDATA2 static f32 lit_454 = 100.0f; /* 80455FE0-80455FE8 0045E0 0008+00 2/2 0/0 0/0 .sdata2 @456 */ SECTION_SDATA2 static f64 lit_456 = 4503599627370496.0 /* cast u32 to float */; /* 80455FE8-80455FF0 0045E8 0008+00 2/2 0/0 0/0 .sdata2 @459 */ SECTION_SDATA2 static f64 lit_459 = 4503601774854144.0 /* cast s32 to float */; /* 802DE658-802DE744 2D8F98 00EC+00 2/2 0/0 0/0 .text initTexObj__10JUTTextureFv */ #ifdef NONMATCHING void JUTTexture::initTexObj() { int offset; if (mTexInfo->mipmapEnabled) { offset = mTexInfo->texDataOffset; } else { offset = 0x20; } GXInitTexObj(mTexObj, &mTexInfo + offset, mTexInfo->width, mTexInfo->height, (GXTexFmt)mTexInfo->format, (GXTexWrapMode)mTexInfo->wrapS, (GXTexWrapMode)mTexInfo->wrapT, mTexInfo->mipmapEnabled); GXInitTexObjLOD(mTexObj, (GXTexFilter)mTexInfo->minFilter, (GXTexFilter)mTexInfo->magFilter, mTexInfo->minLOD, mTexInfo->maxLOD, mTexInfo->LODBias, mTexInfo->biasClamp, mTexInfo->doEdgeLOD, (GXAnisotropy)mTexInfo->maxAnisotropy); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JUTTexture::initTexObj() { nofralloc #include "asm/JSystem/JUtility/JUTTexture/initTexObj__10JUTTextureFv.s" } #pragma pop #endif /* 802DE744-802DE840 2D9084 00FC+00 2/2 0/0 0/0 .text initTexObj__10JUTTextureF7_GXTlut */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JUTTexture::initTexObj(_GXTlut param_0) { nofralloc #include "asm/JSystem/JUtility/JUTTexture/initTexObj__10JUTTextureF7_GXTlut.s" } #pragma pop /* 802DE840-802DE890 2D9180 0050+00 0/0 14/14 0/0 .text load__10JUTTextureF11_GXTexMapID */ void JUTTexture::load(_GXTexMapID param_0) { if (field_0x2c) { field_0x2c->load(); } GXLoadTexObj(&mTexObj, param_0); }