diff options
| author | Noah McQueen <nzmcqueen1996@gmail.com> | 2023-09-10 23:17:07 -0600 |
|---|---|---|
| committer | Noah McQueen <nzmcqueen1996@gmail.com> | 2023-09-10 23:17:07 -0600 |
| commit | da415ac542ccdb4379cc4e35a2c636c4e42f84a2 (patch) | |
| tree | 817957f6fab201846138c48d795256459c667345 /src/JSystem/JUtility | |
| parent | b82520becb16fa83e53c93fe7c1eebf2856c68aa (diff) | |
Several JSystem file matches
Diffstat (limited to 'src/JSystem/JUtility')
| -rw-r--r-- | src/JSystem/JUtility/JUTFont.cpp | 42 | ||||
| -rw-r--r-- | src/JSystem/JUtility/JUTGraphFifo.cpp | 32 | ||||
| -rw-r--r-- | src/JSystem/JUtility/JUTResource.cpp | 33 | ||||
| -rw-r--r-- | src/JSystem/JUtility/JUTTexture.cpp | 103 |
4 files changed, 185 insertions, 25 deletions
diff --git a/src/JSystem/JUtility/JUTFont.cpp b/src/JSystem/JUtility/JUTFont.cpp index 42bdbe58..26523995 100644 --- a/src/JSystem/JUtility/JUTFont.cpp +++ b/src/JSystem/JUtility/JUTFont.cpp @@ -8,25 +8,51 @@ /* 802C1DA4-802C1DD0 .text __ct__7JUTFontFv */ JUTFont::JUTFont() { - /* Nonmatching */ + mValid = false; } /* 802C1DD0-802C1E1C .text initialize_state__7JUTFontFv */ void JUTFont::initialize_state() { - /* Nonmatching */ + setCharColor(JUtility::TColor()); + mFixed = false; + mFixedWidth = 0; + mValid = false; } /* 802C1E1C-802C1EA0 .text setCharColor__7JUTFontFQ28JUtility6TColor */ -void JUTFont::setCharColor(JUtility::TColor) { - /* Nonmatching */ +void JUTFont::setCharColor(JUtility::TColor col1) { + mColor1 = col1; + mColor2 = col1; + mColor3 = col1; + mColor4 = col1; } /* 802C1EA0-802C1F24 .text setGradColor__7JUTFontFQ28JUtility6TColorQ28JUtility6TColor */ -void JUTFont::setGradColor(JUtility::TColor, JUtility::TColor) { - /* Nonmatching */ +void JUTFont::setGradColor(JUtility::TColor col1, JUtility::TColor col2) { + mColor1 = col1; + mColor2 = col1; + mColor3 = col2; + mColor4 = col2; } /* 802C1F24-802C2044 .text drawString_size_scale__7JUTFontFffffPCcUlb */ -void JUTFont::drawString_size_scale(float, float, float, float, const char*, unsigned long, bool) { - /* Nonmatching */ +f32 JUTFont::drawString_size_scale(f32 a1, f32 a2, f32 a3, f32 a4, const char* str, u32 usz, + bool a7) { + f32 temp = a1; + + for (; usz > 0; usz--, str++) { + u32 c = *(u8*)str; + u32 b = c; + if (isLeadByte(b)) { + str++; + b <<= 8; + b |= *(u8*)str; + usz--; + } + + a1 += drawChar_scale(a1, a2, a3, a4, b, a7); + a7 = 1; + } + + return a1 - temp; } diff --git a/src/JSystem/JUtility/JUTGraphFifo.cpp b/src/JSystem/JUtility/JUTGraphFifo.cpp index 40b9bcad..a5aabbf5 100644 --- a/src/JSystem/JUtility/JUTGraphFifo.cpp +++ b/src/JSystem/JUtility/JUTGraphFifo.cpp @@ -4,14 +4,40 @@ // #include "JSystem/JUtility/JUTGraphFifo.h" +#include "JSystem/JKernel/JKRHeap.h" #include "dolphin/types.h" +bool JUTGraphFifo::sInitiated; +JUTGraphFifo* JUTGraphFifo::sCurrentFifo; + /* 802C1C04-802C1CE0 .text __ct__12JUTGraphFifoFUl */ -JUTGraphFifo::JUTGraphFifo(unsigned long) { - /* Nonmatching */ +JUTGraphFifo::JUTGraphFifo(u32 size) { + mSize = size + 0x1F & ~0x1F; + if (sInitiated) { + mFifo = (GXFifoObj*)JKRAllocFromSysHeap(mSize + 0x80, 32); + mBase = mFifo + 1; + GXInitFifoBase(mFifo, mBase, mSize); + GXInitFifoPtrs(mFifo, mBase, mBase); + } else { + mBase = JKRAllocFromSysHeap(mSize + 0xA0, 32); + mBase = (void*)((int)mBase + 0x1F & ~0x1F); + mFifo = GXInit(mBase, mSize); + sInitiated = true; + sCurrentFifo = this; + } } +bool JUTGraphFifo::mGpStatus[5]; + /* 802C1CE0-802C1DA4 .text __dt__12JUTGraphFifoFv */ JUTGraphFifo::~JUTGraphFifo() { - /* Nonmatching */ + sCurrentFifo->save(); + + do { + } while (isGPActive()); + + if (sCurrentFifo == this) { + sCurrentFifo = NULL; + } + JKRFreeToSysHeap(mBase); } diff --git a/src/JSystem/JUtility/JUTResource.cpp b/src/JSystem/JUtility/JUTResource.cpp index e1dec9d5..a47d1ee5 100644 --- a/src/JSystem/JUtility/JUTResource.cpp +++ b/src/JSystem/JUtility/JUTResource.cpp @@ -4,14 +4,39 @@ // #include "JSystem/JUtility/JUTResource.h" +#include "JSystem/JKernel/JKRArchive.h" +#include "JSystem/JSupport/JSUInputStream.h" #include "dolphin/types.h" /* 802C12DC-802C1384 .text getResource__15JUTResReferenceFP14JSUInputStreamUlP10JKRArchive */ -void JUTResReference::getResource(JSUInputStream*, unsigned long, JKRArchive*) { - /* Nonmatching */ +void* JUTResReference::getResource(JSUInputStream* stream, u32 resType, JKRArchive* archive) { + stream->read(&mType, 1); + stream->read(&mNameLength, 1); + stream->read(&mName, mNameLength); + + if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4) { + mName[mNameLength] = 0; + } + + return getResource(resType, archive); } /* 802C1384-802C13FC .text getResource__15JUTResReferenceFUlP10JKRArchive */ -void JUTResReference::getResource(unsigned long, JKRArchive*) { - /* Nonmatching */ +void* JUTResReference::getResource(u32 resType, JKRArchive* archive) { + void* res = NULL; + switch (mType) { + case RESTYPE_Unk1: + break; + case RESTYPE_Unk2: + res = JKRArchive::getGlbResource(resType, mName, archive); + break; + case RESTYPE_Unk3: + res = JKRFileLoader::getGlbResource(mName, archive); + break; + case RESTYPE_Unk4: + res = JKRFileLoader::getGlbResource(mName); + break; + } + + return res; } diff --git a/src/JSystem/JUtility/JUTTexture.cpp b/src/JSystem/JUtility/JUTTexture.cpp index 353378bd..7a8dfe6e 100644 --- a/src/JSystem/JUtility/JUTTexture.cpp +++ b/src/JSystem/JUtility/JUTTexture.cpp @@ -4,34 +4,117 @@ // #include "JSystem/JUtility/JUTTexture.h" +#include "JSystem/JUtility/JUTPalette.h" +#include "dolphin/gx/GX.h" #include "dolphin/types.h" /* 802C13FC-802C1470 .text __dt__10JUTTextureFv */ JUTTexture::~JUTTexture() { - /* Nonmatching */ + if (getCaptureFlag()) { + delete[] field_0x3c; + } + if (getEmbPaletteDelFlag()) { + delete mEmbPalette; + } } /* 802C1470-802C15FC .text storeTIMG__10JUTTextureFPC7ResTIMGUc */ -void JUTTexture::storeTIMG(const ResTIMG*, unsigned char) { - /* Nonmatching */ +void JUTTexture::storeTIMG(const ResTIMG* pTimg, u8 param_1) { + _GXTlut tlut; + + if (pTimg && param_1 < 0x10) { + mTexInfo = pTimg; + mTexData = (void*)((int)mTexInfo + mTexInfo->imageOffset); + + if (mTexInfo->imageOffset == 0) { + mTexData = (void*)((int)mTexInfo + 0x20); + } + + if (getEmbPaletteDelFlag()) { + delete mEmbPalette; + } + mEmbPalette = NULL; + mAttachedPalette = 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; + + if (mTexInfo->numColors == 0) { + initTexObj(); + } else { + if (mTexInfo->numColors > 0x100) { + tlut = (_GXTlut)((param_1 % 4) + GX_BIGTLUT0); + } else { + tlut = (_GXTlut)param_1; + } + + mEmbPalette = new JUTPalette( + tlut, (_GXTlutFmt)mTexInfo->colorFormat, (JUTTransparency)mTexInfo->alphaEnabled, + mTexInfo->numColors, (void*)(&mTexInfo->format + mTexInfo->paletteOffset)); + + mFlags = mFlags & 1 | 2; + attachPalette(mEmbPalette); + } + } } /* 802C15FC-802C1654 .text attachPalette__10JUTTextureFP10JUTPalette */ -void JUTTexture::attachPalette(JUTPalette*) { - /* Nonmatching */ +void JUTTexture::attachPalette(JUTPalette* pPalette) { + if (mTexInfo->indexTexture) { + if (pPalette == NULL && mEmbPalette != NULL) { + mAttachedPalette = mEmbPalette; + } else { + mAttachedPalette = pPalette; + } + _GXTlut name = (_GXTlut)mAttachedPalette->getTlutName(); + initTexObj(name); + } } /* 802C1654-802C1740 .text initTexObj__10JUTTextureFv */ void JUTTexture::initTexObj() { - /* Nonmatching */ + GXBool mipmapEnabled; + if (mTexInfo->mipmapEnabled != 0) { + mipmapEnabled = 1; + } else { + mipmapEnabled = 0; + } + u8* image = ((u8*)mTexInfo); + image += (mTexInfo->imageOffset ? mTexInfo->imageOffset : 0x20); + GXInitTexObj(&mTexObj, image, mTexInfo->width, mTexInfo->height, (GXTexFmt)mTexInfo->format, + (GXTexWrapMode)mWrapS, (GXTexWrapMode)mWrapT, mipmapEnabled); + GXInitTexObjLOD(&mTexObj, (GXTexFilter)mMinFilter, (GXTexFilter)mMagFilter, mMinLOD / 8.0f, + mMaxLOD / 8.0f, mLODBias / 100.0f, mTexInfo->biasClamp, mTexInfo->doEdgeLOD, + (GXAnisotropy)mTexInfo->maxAnisotropy); } /* 802C1740-802C183C .text initTexObj__10JUTTextureF7_GXTlut */ -void JUTTexture::initTexObj(_GXTlut) { - /* Nonmatching */ +void JUTTexture::initTexObj(_GXTlut tlut) { + GXBool mipmapEnabled; + if (mTexInfo->mipmapEnabled != 0) { + mipmapEnabled = 1; + } else { + mipmapEnabled = 0; + } + mTlutName = tlut; + u8* image = ((u8*)mTexInfo); + image += (mTexInfo->imageOffset ? mTexInfo->imageOffset : 0x20); + GXInitTexObjCI(&mTexObj, image, mTexInfo->width, mTexInfo->height, (GXCITexFmt)mTexInfo->format, + (GXTexWrapMode)mWrapS, (GXTexWrapMode)mWrapT, mipmapEnabled, tlut); + GXInitTexObjLOD(&mTexObj, (GXTexFilter)mMinFilter, (GXTexFilter)mMagFilter, mMinLOD / 8.0f, + mMaxLOD / 8.0f, mLODBias / 100.0f, mTexInfo->biasClamp, mTexInfo->doEdgeLOD, + (GXAnisotropy)mTexInfo->maxAnisotropy); } /* 802C183C-802C188C .text load__10JUTTextureF11_GXTexMapID */ -void JUTTexture::load(_GXTexMapID) { - /* Nonmatching */ +void JUTTexture::load(_GXTexMapID id) { + if (mAttachedPalette) { + mAttachedPalette->load(); + } + GXLoadTexObj(&mTexObj, id); } |
