diff options
Diffstat (limited to 'src/JSystem/J2DGraph/J2DScreen.cpp')
| -rw-r--r-- | src/JSystem/J2DGraph/J2DScreen.cpp | 57 |
1 files changed, 24 insertions, 33 deletions
diff --git a/src/JSystem/J2DGraph/J2DScreen.cpp b/src/JSystem/J2DGraph/J2DScreen.cpp index 0529954e1a..b1bb28a34c 100644 --- a/src/JSystem/J2DGraph/J2DScreen.cpp +++ b/src/JSystem/J2DGraph/J2DScreen.cpp @@ -18,7 +18,7 @@ /* 802F8498-802F8540 2F2DD8 00A8+00 0/0 59/59 4/4 .text __ct__9J2DScreenFv */ J2DScreen::J2DScreen() - : J2DPane(NULL, true, 'root', JGeometry::TBox2<f32>(JGeometry::TVec2<f32>(0.0f, 0.0f), JGeometry::TVec2<f32>(640.0f, 480.0f))), mColor() { + : J2DPane(NULL, true, 'root', JGeometry::TBox2<f32>(JGeometry::TVec2<f32>(0, 0), JGeometry::TVec2<f32>(640, 480))), mColor() { field_0x4 = -1; mScissor = false; mMaterialNum = 0; @@ -59,10 +59,9 @@ bool J2DScreen::setPriority(char const* resName, u32 param_1, JKRArchive* p_arch return false; } - void* res = JKRFileLoader::getGlbResource(resName, p_archive); + void* res = JKRGetNameResource(resName, p_archive); if (res != NULL) { - u32 size = p_archive->getExpandedResSize(res); - JSUMemoryInputStream stream(res, size); + JSUMemoryInputStream stream(res, p_archive->getExpandedResSize(res)); return setPriority(&stream, param_1, p_archive); } @@ -96,11 +95,7 @@ bool J2DScreen::private_set(JSURandomInputStream* p_stream, u32 param_1, JKRArch clean(); } - if (make_end) { - return p_stream->isGood(); - } - - return false; + return make_end ? p_stream->isGood() : false; } /* 802F8834-802F8894 2F3174 0060+00 1/1 0/0 0/0 .text @@ -110,6 +105,7 @@ bool J2DScreen::checkSignature(JSURandomInputStream* p_stream) { p_stream->read(&header, sizeof(J2DScrnHeader)); if (header.mTag != 'SCRN' || (header.mType != 'blo1' && header.mType != 'blo2')) { + JUT_WARN(257, "%s", "SCRN resource is broken.\n") return false; } else { return true; @@ -123,14 +119,13 @@ bool J2DScreen::getScreenInformation(JSURandomInputStream* p_stream) { p_stream->read(&info, sizeof(J2DScrnInfoHeader)); if (info.mTag != 'INF1') { + JUT_WARN(282, "%s", "SCRN resource is broken.\n") return false; } - JGeometry::TBox2<f32> dimensions(0.0f, 0.0f, info.mWidth, info.mHeight); - place(dimensions); + place(JGeometry::TBox2<f32>(0.0f, 0.0f, info.mWidth, info.mHeight)); - JUtility::TColor color(info.mColor); - mColor = color; + mColor = info.mColor; if (info.mSize > 0x10) { p_stream->skip(info.mSize - 0x10); @@ -156,7 +151,7 @@ s32 J2DScreen::makeHierarchyPanes(J2DPane* p_basePane, JSURandomInputStream* p_s case 'BGN1': p_stream->seek(header.mSize, JSUStreamSeekFrom_CUR); - int ret = makeHierarchyPanes(next_pane, p_stream, param_2, p_archive); + s32 ret = makeHierarchyPanes(next_pane, p_stream, param_2, p_archive); if (ret != 0) { return ret; } @@ -165,18 +160,12 @@ s32 J2DScreen::makeHierarchyPanes(J2DPane* p_basePane, JSURandomInputStream* p_s p_stream->seek(header.mSize, JSUStreamSeekFrom_CUR); return 0; case 'TEX1': - J2DResReference* texRes = getResReference(p_stream, param_2); - mTexRes = texRes; - - if (texRes == NULL) { + if ((mTexRes = getResReference(p_stream, param_2)) == NULL) { return 2; } break; case 'FNT1': - J2DResReference* fntRes = getResReference(p_stream, param_2); - mFontRes = fntRes; - - if (fntRes == NULL) { + if ((mFontRes = getResReference(p_stream, param_2)) == NULL) { return 2; } break; @@ -389,9 +378,10 @@ bool J2DScreen::createMaterial(JSURandomInputStream* p_stream, u32 param_1, JKRA u8* buffer = new (-4) u8[header.mSize]; if (mMaterials != NULL && buffer != NULL) { + J2DMaterialBlock* pBlock = (J2DMaterialBlock*)buffer; p_stream->seek(position, JSUStreamSeekFrom_SET); p_stream->read(buffer, header.mSize); - J2DMaterialFactory factory(*(J2DMaterialBlock*)buffer); + J2DMaterialFactory factory(*pBlock); for (u16 i = 0; i < mMaterialNum; i++) { factory.create(&mMaterials[i], i, param_1, mTexRes, mFontRes, p_archive); @@ -400,19 +390,20 @@ bool J2DScreen::createMaterial(JSURandomInputStream* p_stream, u32 param_1, JKRA if (param_1 & 0x1F0000) { u32 offset = buffer[0x14] << 0x18 | buffer[0x15] << 0x10 | buffer[0x16] << 8 | buffer[0x17]; - char* sec = (char*)buffer + offset; - u16* sec_s = ((u16*)sec); - u32 size = ((u16*)sec)[0]*2; - u16 num = sec_s[size + 1]; - while (sec[num] != 0) { - num++; + ResNTAB* sec_s = (ResNTAB*)((u8*)buffer + offset); + u16 entryNum = sec_s->mEntryNum; + u16 lastOffset = sec_s->mEntries[entryNum - 1].mOffs; + char* ptr = (char*)sec_s; + u16 size = lastOffset; + while (ptr[size] != 0) { + size++; } - num++; + size++; - u8* nametab = new u8[num]; + u8* nametab = new u8[size]; if (nametab != NULL) { - for (u16 i = 0; i < num; i++) { - nametab[i] = sec[i]; + for (u16 i = 0; i < size; i++) { + nametab[i] = ((u8*)sec_s)[i]; } mNameTable = new JUTNameTab((ResNTAB*)nametab); |
