mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-10 03:01:56 -04:00
Ongoing gameplay dev (#49)
* launch.json cwd * bodge to load gci for testing * stub card stat * gameplay bodges * viewport, ub fixes * add release with debug info cmake variant * be fixes, sound stub * viewport h * d_msg_flow BE * be fopAcM_createItemFromEnemyID * update launch configuration to use iso * more audio stubs * Attempt to set viewport and get messages for brightness check * skip opening scene again, fixed JMessage::TResourceContainer::TCResource::Do_destroy * add guards for viewport changes * moar endian swapping to get Link sitting in PROC_OPENING_SCENE and for dialogues * BE d_msg_class i_data * stub bgm start * fix div by 0 error (for now) * TEMP_BROKEN in d_menu_ring * REQUIRES_GX_LINES * properly stub renderingAmap::draw with REQUIRES_GX_LINES * better stubbing outside of stubs * fix event data getting swapped multiple times * evil draw vp fix * Stub log imgui This redirects all spammy logs to an imgui window that is cleared per frame. This fixes the serious performance dip of the logging, and makes the regular log readable. * Oops move those optimization changes I accidentally committed behind a flag DUSK_SELECTED_OPT * gx_line macro in map * fix audio stubbing * switch to CARD API aurora impl * remove kabufuda from link libs * refactor imgui stuff and add input viewer * merge stub log with refactor * accidentally committed a metaforce header shh * basic map loader * ImGuiConsole: Add missing <thread> include * you may now play as luigi (you may now load stages with bridges) * bloom fix * bloom leak fix * cloud shadow fix * add soft reset button to imgui menu * if it broke dont not fix it * i swear i committed this * BE swap indMtx in JPAResource::setPTev * wnark ct fix * frsqrte implementation from kinoko * Fix Clang compile error in JAISeq::prepare_getSeqData_ * Add endian conversions to dMsgFlow_c::getInitNodeIndex This fixes a freeze when Fado tries to stop you from leaving the starting area. * Add RAII GXTexObj wrapper; fix almost all leaks * Update aurora for indirect texturing * Update aurora for CARD fix * Fix Clang build * More d_msg_flow endian fixes Fixes softlock when trying to talk to Fado and possibly other NPCs. * no frame limiter * get pause menu working * proper frame limiting * particle pointer size fix * improve map loader a bit --------- Co-authored-by: Jasper St. Pierre <jstpierre@mecheye.net> Co-authored-by: TakaRikka <takarikka@outlook.com> Co-authored-by: CraftyBoss <talibabdulmaalik@gmail.com> Co-authored-by: Luke Street <luke@street.dev> Co-authored-by: Lurs <2795933+Lurs@users.noreply.github.com> Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com> Co-authored-by: tgsm <doodrabbit@hotmail.com> Co-authored-by: Max Roncace <me@caseif.net> Co-authored-by: Phillip Stephens <antidote.crk@gmail.com>
This commit is contained in:
@@ -28,11 +28,11 @@ J2DWindowEx::J2DWindowEx(J2DPane* param_0, JSURandomInputStream* param_1, u32 pa
|
||||
mAnmVisibilityFull = NULL;
|
||||
mAnmVtxColor = NULL;
|
||||
s32 position = param_1->getPosition();
|
||||
int uStack_88[2];
|
||||
BE(int) uStack_88[2];
|
||||
param_1->read(uStack_88, 8);
|
||||
mKind = uStack_88[0];
|
||||
s32 iVar2 = param_1->getPosition();
|
||||
int auStack_90[2];
|
||||
BE(int) auStack_90[2];
|
||||
param_1->peek(auStack_90, 8);
|
||||
makePaneExStream(param_0, param_1);
|
||||
param_1->seek(iVar2 + auStack_90[1], JSUStreamSeekFrom_SET);
|
||||
|
||||
@@ -350,11 +350,8 @@ void J3DGDSetTexImgAttr(GXTexMapID id, u16 width, u16 height, GXTexFmt format) {
|
||||
}
|
||||
|
||||
void J3DGDSetTexImgPtr(GXTexMapID id, void* image_ptr) {
|
||||
#if TARGET_PC
|
||||
STUB_LOG();
|
||||
#else
|
||||
STUB_RET();
|
||||
J3DGDWriteBPCmd(BP_IMAGE_PTR(OSCachedToPhysical(image_ptr) >> 5, J3DGDTexImage3Ids[id]));
|
||||
#endif
|
||||
}
|
||||
|
||||
void J3DGDSetTexImgPtrRaw(GXTexMapID id, u32 image_ptr_raw) {
|
||||
@@ -372,10 +369,9 @@ void J3DGDLoadTlut(void* tlut_ptr, u32 tmem_addr, GXTlutSize size) {
|
||||
|
||||
J3DGDWriteBPCmd(0xFEFFFF00);
|
||||
J3DGDWriteBPCmd(0xF000000);
|
||||
#if TARGET_PC
|
||||
STUB_LOG();
|
||||
return;
|
||||
#endif
|
||||
|
||||
STUB_RET();
|
||||
|
||||
J3DGDWriteBPCmd(BP_LOAD_TLUT0(OSCachedToPhysical(tlut_ptr) >> 5, 0x64));
|
||||
J3DGDWriteBPCmd(BP_LOAD_TLUT1((tmem_addr - 0x80000) >> 9, size, 0x65));
|
||||
J3DGDWriteBPCmd(0xFEFFFF00);
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DFifo.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTevs.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTexture.h"
|
||||
#include "JSystem/J3DGraphBase/J3DFifo.h"
|
||||
#include "dusk/gx_helper.h"
|
||||
#include "global.h"
|
||||
|
||||
J3DSys j3dSys;
|
||||
@@ -265,14 +266,14 @@ void J3DSys::reinitTransform() {
|
||||
|
||||
void J3DSys::reinitTexture() {
|
||||
#if TARGET_PC
|
||||
static GXTexObj texObj;
|
||||
static TGXTexObj texObj;
|
||||
static bool initialized = false;
|
||||
if (!initialized) {
|
||||
GXInitTexObj(&texObj, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
||||
initialized = true;
|
||||
}
|
||||
#else
|
||||
GXTexObj texObj;
|
||||
TGXTexObj texObj;
|
||||
GXInitTexObj(&texObj, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
||||
#endif
|
||||
GXLoadTexObj(&texObj, GX_TEXMAP0);
|
||||
|
||||
@@ -22,7 +22,7 @@ void J3DTexture::loadGX(u16 idx, GXTexMapID texMapID) const {
|
||||
}
|
||||
GXLoadTexObj(&mpTexObj[idx], texMapID);
|
||||
#else
|
||||
GXTexObj texObj;
|
||||
TGXTexObj texObj;
|
||||
GXTlutObj tlutObj;
|
||||
|
||||
if (!timg->indexTexture) {
|
||||
@@ -54,7 +54,7 @@ void J3DTexture::loadGXTexObj(u16 idx) {
|
||||
ResTIMG* timg = getResTIMG(idx);
|
||||
|
||||
GXTlutObj& tlutObj = mpTlutObj[idx];
|
||||
GXTexObj& texObj = mpTexObj[idx];
|
||||
TGXTexObj& texObj = mpTexObj[idx];
|
||||
|
||||
if (!timg->indexTexture) {
|
||||
GXInitTexObj(&texObj, mpImgDataPtr[idx], timg->width, timg->height,
|
||||
@@ -88,7 +88,7 @@ void J3DTexture::entryNum(u16 num) {
|
||||
delete[] mpTlutObj;
|
||||
delete[] mpImgDataPtr;
|
||||
delete[] mpTlutDataPtr;
|
||||
mpTexObj = new GXTexObj[num]();
|
||||
mpTexObj = new TGXTexObj[num]();
|
||||
mpTlutObj = new GXTlutObj[num]();
|
||||
mpImgDataPtr = new u8*[num]();
|
||||
mpTlutDataPtr = new u8*[num]();
|
||||
|
||||
@@ -22,7 +22,7 @@ void J3DGQRSetup7(u32 r0, u32 r1, u32 r2, u32 r3) {
|
||||
}
|
||||
|
||||
// this uses a non-standard sqrtf, not sure why or how its supposed to be setup
|
||||
#if !PLATFORM_SHIELD
|
||||
#if !PLATFORM_SHIELD && !TARGET_PC
|
||||
inline f32 J3D_sqrtf(__REGISTER f32 x) {
|
||||
__REGISTER f32 recip;
|
||||
|
||||
|
||||
@@ -545,6 +545,8 @@ J3DTexMtx* J3DMaterialFactory::newTexMtx(int i_idx, int i_no) const {
|
||||
be_swap(tex_mtx_info.mSRT.mRotation);
|
||||
be_swap(tex_mtx_info.mSRT.mTranslationX);
|
||||
be_swap(tex_mtx_info.mSRT.mTranslationY);
|
||||
for (int i = 0; i < 16; i++)
|
||||
be_swap(tex_mtx_info.mEffectMtx[i / 4][i % 4]);
|
||||
tex_mtx = JKR_NEW J3DTexMtx(tex_mtx_info);
|
||||
#else
|
||||
tex_mtx = JKR_NEW J3DTexMtx(mpTexMtxInfo[mtl_init_data->mTexMtxIdx[i_no]]);
|
||||
|
||||
@@ -108,7 +108,7 @@ bool JAISeq::prepare_getSeqData_() {
|
||||
|
||||
switch (seqDataMgr->getSeqData(getID(), &inner_.mSeqData)) {
|
||||
case 0:
|
||||
OS_REPORT("Failed In Loading Sequence Data:SEQ(0x%08x)\n", getID());
|
||||
OS_REPORT("Failed In Loading Sequence Data:SEQ(0x%08x)\n", (u32)getID());
|
||||
status_.state.unk = 2;
|
||||
break;
|
||||
case 1:
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
|
||||
#include <dolphin/gx.h>
|
||||
#include <dolphin/vi.h>
|
||||
#include <gx.h>
|
||||
#include <stdint.h>
|
||||
#include <vi.h>
|
||||
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
||||
#include "JSystem/JFramework/JFWDisplay.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
@@ -10,13 +12,10 @@
|
||||
#include "JSystem/JUtility/JUTConsole.h"
|
||||
#include "JSystem/JUtility/JUTDbPrint.h"
|
||||
#include "JSystem/JUtility/JUTProcBar.h"
|
||||
#include <gx.h>
|
||||
#include <vi.h>
|
||||
#include "global.h"
|
||||
#include "aurora/aurora.h"
|
||||
#include "global.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "dusk/gx_helper.h"
|
||||
#include "dusk/logging.h"
|
||||
#include "global.h"
|
||||
|
||||
void JFWDisplay::ctor_subroutine(bool enableAlpha) {
|
||||
mEnableAlpha = enableAlpha;
|
||||
@@ -419,7 +418,7 @@ static u8 clear_z_TX[64] ATTRIBUTE_ALIGN(32) = {
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
|
||||
static GXTexObj clear_z_tobj;
|
||||
static TGXTexObj clear_z_tobj;
|
||||
|
||||
void JFWDisplay::clearEfb_init() {
|
||||
GXInitTexObj(&clear_z_tobj, &clear_z_TX, 4, 4, GX_TF_Z24X8, GX_REPEAT, GX_REPEAT, GX_FALSE);
|
||||
@@ -439,10 +438,8 @@ void JFWDisplay::clearEfb(GXColor color) {
|
||||
}
|
||||
|
||||
void JFWDisplay::clearEfb(int param_0, int param_1, int param_2, int param_3, GXColor color) {
|
||||
#if TARGET_PC
|
||||
STUB_LOG();
|
||||
return;
|
||||
#endif
|
||||
STUB_RET();
|
||||
|
||||
u16 width;
|
||||
u16 height;
|
||||
Mtx44 mtx;
|
||||
|
||||
@@ -14,6 +14,9 @@ u32 JKRArchive::sCurrentDirID;
|
||||
JKRArchive::JKRArchive() {
|
||||
mIsMounted = false;
|
||||
mMountDirection = MOUNT_DIRECTION_HEAD;
|
||||
#if TARGET_PC
|
||||
mFileData = nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
JKRArchive::JKRArchive(s32 entryNumber, JKRArchive::EMountMode mountMode) {
|
||||
@@ -21,6 +24,9 @@ JKRArchive::JKRArchive(s32 entryNumber, JKRArchive::EMountMode mountMode) {
|
||||
mMountMode = mountMode;
|
||||
mMountCount = 1;
|
||||
field_0x58 = 1;
|
||||
#if TARGET_PC
|
||||
mFileData = nullptr;
|
||||
#endif
|
||||
|
||||
mHeap = JKRHeap::findFromRoot(this);
|
||||
if (mHeap == NULL) {
|
||||
@@ -37,7 +43,7 @@ JKRArchive::JKRArchive(s32 entryNumber, JKRArchive::EMountMode mountMode) {
|
||||
JKRArchive::~JKRArchive() {
|
||||
#if TARGET_PC
|
||||
if (mFileData != nullptr) {
|
||||
mHeap->free(mFileData);
|
||||
JKRHeap::getSystemHeap()->free(mFileData);
|
||||
mFileData = nullptr;
|
||||
}
|
||||
#endif
|
||||
@@ -251,11 +257,12 @@ void JKRArchive::initFileDataPointers() {
|
||||
assert(mFiles);
|
||||
|
||||
if (mFileData != nullptr) {
|
||||
mHeap->free(mFileData);
|
||||
JKRHeap::getSystemHeap()->free(mFileData);
|
||||
mFileData = nullptr;
|
||||
}
|
||||
|
||||
mFileData = static_cast<void**>(
|
||||
mHeap->alloc(mArcInfoBlock->num_file_entries * sizeof(void*), alignof(void*)));
|
||||
JKRHeap::getSystemHeap()->alloc(mArcInfoBlock->num_file_entries * sizeof(void*), alignof(void*)));
|
||||
|
||||
memset(mFileData, 0, mArcInfoBlock->num_file_entries * sizeof(void*));
|
||||
|
||||
|
||||
@@ -103,8 +103,6 @@ void JMAVECScaleAdd(__REGISTER const Vec* vec1, __REGISTER const Vec* vec2, __RE
|
||||
dst->y = vec1->y * scale + vec2->y;
|
||||
dst->z = vec1->z * scale + vec2->z;
|
||||
#endif // clang-format on
|
||||
|
||||
OSPanic(__FILE__, __LINE__, "UNIMPLEMENTED");
|
||||
}
|
||||
|
||||
void JMAMTXApplyScale(__REGISTER const Mtx src, __REGISTER Mtx dst, __REGISTER f32 xScale,
|
||||
|
||||
@@ -65,12 +65,12 @@ u16 JMessage::TResource::toMessageIndex_messageID(u32 uMsgID, u32 upperHalf, boo
|
||||
|
||||
int nMsgNumber = oParse_TBlock_messageID_.get_number();
|
||||
|
||||
const u32* pContent = (u32*)oParse_TBlock_messageID_.getContent();
|
||||
const BE(u32)* pContent = (const BE(u32)*)oParse_TBlock_messageID_.getContent();
|
||||
JUT_ASSERT(131, pContent!=NULL);
|
||||
|
||||
const u32* pFirst = pContent;
|
||||
const u32* pLast = pFirst + nMsgNumber;
|
||||
const u32* pEntry;
|
||||
const BE(u32)* pFirst = pContent;
|
||||
const BE(u32)* pLast = pFirst + nMsgNumber;
|
||||
const BE(u32)* pEntry;
|
||||
|
||||
if (oParse_TBlock_messageID_.get_isOrdered()) {
|
||||
pEntry = std::lower_bound(pFirst, pLast, uMsgValue);
|
||||
|
||||
@@ -66,8 +66,20 @@ static void JPAVolumeSphere(JPAEmitterWorkData* work) {
|
||||
s16 phi, r28;
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
|
||||
phi = u16(work->mVolumeX * 0x8000 / (work->mDivNumber - 1) + 0x4000);
|
||||
|
||||
#if TARGET_PC
|
||||
// Fix div by 0 error here
|
||||
// TODO: maybe review a better way of handling div by 0 UB
|
||||
r28 = 0x8000;
|
||||
if (work->mVolumeAngleNum > 1) {
|
||||
u16 r26 = u16(work->mVolumeAngleNum * 0x10000 / (work->mVolumeAngleMax - 1));
|
||||
r28 += f32(r26) * work->mVolumeSweep + 0x8000;
|
||||
}
|
||||
#else
|
||||
u16 r26 = u16(work->mVolumeAngleNum * 0x10000 / (work->mVolumeAngleMax - 1));
|
||||
r28 = f32(r26) * work->mVolumeSweep + 0x8000;
|
||||
#endif
|
||||
|
||||
work->mVolumeAngleNum++;
|
||||
if (work->mVolumeAngleNum == work->mVolumeAngleMax) {
|
||||
work->mVolumeAngleNum = 0;
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
#include "JSystem/JSystem.h" // IWYU pragma: keep
|
||||
|
||||
#include "JSystem/JParticle/JPAResource.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include <gx.h>
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JParticle/JPABaseShape.h"
|
||||
#include "JSystem/JParticle/JPAChildShape.h"
|
||||
@@ -11,7 +15,6 @@
|
||||
#include "JSystem/JParticle/JPAKeyBlock.h"
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include <gx.h>
|
||||
#include "global.h"
|
||||
|
||||
JPAResource::JPAResource() {
|
||||
@@ -937,7 +940,10 @@ void JPAResource::setPTev() {
|
||||
if (pEts->isUseIndirect()) {
|
||||
GXSetIndTexOrder(GX_INDTEXSTAGE0, tex_coord, GX_TEXMAP2);
|
||||
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1);
|
||||
GXSetIndTexMtx(GX_ITM_0, (f32(*)[3])pEts->getIndTexMtx(), pEts->getExpScale());
|
||||
f32 indMtx[6];
|
||||
std::memcpy(indMtx, pEts->getIndTexMtx(), sizeof(indMtx));
|
||||
be_swap(indMtx);
|
||||
GXSetIndTexMtx(GX_ITM_0, indMtx, pEts->getExpScale());
|
||||
GXSetTevIndirect(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_STU, GX_ITM_0,
|
||||
GX_ITW_OFF, GX_ITW_OFF, 0, 0, GX_ITBA_OFF);
|
||||
ind_stages++;
|
||||
|
||||
@@ -261,17 +261,17 @@ void TObject::process_paragraph_reserved_(u32 arg1, const void* pContent, u32 uS
|
||||
case 0x1:
|
||||
ASSERT(pContent != NULL);
|
||||
ASSERT(uSize == 4);
|
||||
setFlag_operation_(*(u32*)pContent);
|
||||
setFlag_operation_(*(BE(u32)*)pContent);
|
||||
break;
|
||||
case 0x2:
|
||||
ASSERT(pContent != NULL);
|
||||
ASSERT(uSize == 4);
|
||||
setWait(*(u32*)pContent);
|
||||
setWait(*(BE(u32)*)pContent);
|
||||
break;
|
||||
case 0x3: {
|
||||
ASSERT(pContent != NULL);
|
||||
ASSERT(uSize == 4);
|
||||
const void* seq = getSequence_offset(*(s32*)pContent);
|
||||
const void* seq = getSequence_offset(*(BE(s32)*)pContent);
|
||||
setSequence_next(seq);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_SOUND(JStudio::data::TEOperatio
|
||||
case JStudio::data::UNK_0x19:
|
||||
JUT_ASSERT(283, pContent!=NULL);
|
||||
JUT_ASSERT(284, uSize==4);
|
||||
field_0x124 = *(u32*)pContent;
|
||||
field_0x124 = *(BE(u32)*)pContent;
|
||||
prepareSound_();
|
||||
break;
|
||||
}
|
||||
@@ -175,7 +175,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_BEGIN_FADE_IN(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(323, pContent!=NULL);
|
||||
JUT_ASSERT(324, uSize==4);
|
||||
beginSound_fadeIn_(*(f32*)pContent);
|
||||
beginSound_fadeIn_(*(BE(f32)*)pContent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -196,7 +196,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_END_FADE_OUT(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(364, pContent!=NULL);
|
||||
JUT_ASSERT(365, uSize==4);
|
||||
endSound_fadeOut_(*(f32*)pContent);
|
||||
endSound_fadeOut_(*(BE(f32)*)pContent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -235,7 +235,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_PARENT_NODE(JStudio::data::TEOp
|
||||
case JStudio::data::UNK_0x19:
|
||||
JUT_ASSERT(447, uSize==4);
|
||||
JUT_ASSERT(448, pContent!=NULL);
|
||||
field_0x140 = *(u32*)pContent;
|
||||
field_0x140 = *(BE(u32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -245,7 +245,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_PARENT_ENABLE(
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(468, uSize == 4);
|
||||
JUT_ASSERT(469, pContent != NULL);
|
||||
field_0x144 = *(u32*)pContent ? 1 : 0;
|
||||
field_0x144 = *(BE(u32)*)pContent ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_REPEAT(JStudio::data::TEOperati
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(490, uSize == 4);
|
||||
JUT_ASSERT(491, pContent != NULL);
|
||||
field_0x11e = *(u32*)pContent ? 1 : 0;
|
||||
field_0x11e = *(BE(u32)*)pContent ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_CONTINUOUS(JStudio::data::TEOpe
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(512, uSize == 4);
|
||||
JUT_ASSERT(513, pContent != NULL);
|
||||
field_0x11d = *(u32*)pContent ? 1 : 0;
|
||||
field_0x11d = *(BE(u32)*)pContent ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,7 +272,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_LOCATED(JStudio::data::TEOperat
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(534, pContent != NULL);
|
||||
JUT_ASSERT(535, uSize == 4);
|
||||
u32 val = *(u32*)pContent;
|
||||
u32 val = *(BE(u32)*)pContent;
|
||||
field_0x12c = NULL;
|
||||
if (val != 0) {
|
||||
field_0x12c = &field_0x130;
|
||||
@@ -285,7 +285,7 @@ void JStudio_JAudio2::TAdaptor_sound::adaptor_do_ON_EXIT_NOT_END(
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(512, uSize == 4);
|
||||
JUT_ASSERT(513, pContent != NULL);
|
||||
field_0x11f = *(u32*)pContent ? 1 : 0;
|
||||
field_0x11f = *(BE(u32)*)pContent ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARTICLE(
|
||||
if (param_1 == JStudio::data::UNK_0x19) {
|
||||
JUT_ASSERT(232, uSize==4);
|
||||
JUT_ASSERT(233, pContent!=NULL);
|
||||
field_0x1bc = *(u32*)pContent;
|
||||
field_0x1bc = *(BE(u32)*)pContent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_BEGIN_FADE_IN(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(272, pContent!=NULL);
|
||||
JUT_ASSERT(273, uSize==4);
|
||||
beginParticle_fadeIn_(*(f32*)pContent);
|
||||
beginParticle_fadeIn_(*(BE(f32)*)pContent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -143,7 +143,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_END_FADE_OUT(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(336, pContent!=NULL);
|
||||
JUT_ASSERT(337, uSize==4);
|
||||
endParticle_fadeOut_(*(f32*)pContent);
|
||||
endParticle_fadeOut_(*(BE(f32)*)pContent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -182,7 +182,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_NODE(
|
||||
case JStudio::data::UNK_0x19:
|
||||
JUT_ASSERT(397, uSize==4);
|
||||
JUT_ASSERT(396, pContent!=NULL);
|
||||
field_0x1d4 = *(u32*)pContent;
|
||||
field_0x1d4 = *(BE(u32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -192,7 +192,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::dat
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(417, uSize==4);
|
||||
JUT_ASSERT(418, pContent!=NULL);
|
||||
field_0x1d8 = *(u32*)pContent ? 1 : 0;
|
||||
field_0x1d8 = *(BE(u32)*)pContent ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_FUNCTION(JStudio::d
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(439, uSize==4);
|
||||
JUT_ASSERT(439, pContent!=NULL);
|
||||
field_0x1cc = *(u32*)pContent;
|
||||
field_0x1cc = *(BE(u32)*)pContent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_REPEAT(JStudio::data::TEOp
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(460, uSize==4);
|
||||
JUT_ASSERT(461, pContent!=NULL);
|
||||
field_0x1b5 = *(u32*)pContent ? 1 : 0;
|
||||
field_0x1b5 = *(BE(u32)*)pContent ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_ON_EXIT_NOT_END(JStudio::d
|
||||
if (param_1 == JStudio::data::UNK_0x2) {
|
||||
JUT_ASSERT(460, uSize==4);
|
||||
JUT_ASSERT(461, pContent!=NULL);
|
||||
field_0x1b6 = *(u32*)pContent ? 1 : 0;
|
||||
field_0x1b6 = *(BE(u32)*)pContent ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ void JStudio_JStage::TAdaptor_actor::adaptor_do_ANIMATION_MODE(JStudio::data::TE
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(153, uSize==4);
|
||||
JUT_ASSERT(154, pContent!=NULL);
|
||||
field_0x130 = *(u32*)pContent;
|
||||
field_0x130 = *(BE(u32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -114,7 +114,7 @@ void JStudio_JStage::TAdaptor_actor::adaptor_do_TEXTURE_ANIMATION_MODE(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(182, uSize==4);
|
||||
JUT_ASSERT(183, pContent!=NULL);
|
||||
field_0x134 = *(u32*)pContent;
|
||||
field_0x134 = *(BE(u32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -141,7 +141,7 @@ void JStudio_JStage::TAdaptor_actor::adaptor_do_PARENT_NODE(
|
||||
case JStudio::data::UNK_0x19:
|
||||
JUT_ASSERT(237, uSize==4);
|
||||
JUT_ASSERT(238, pContent!=NULL);
|
||||
field_0x140 = *(u32*)pContent;
|
||||
field_0x140 = *(BE(u32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -152,7 +152,7 @@ void JStudio_JStage::TAdaptor_actor::adaptor_do_PARENT_ENABLE(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(257, uSize==4);
|
||||
JUT_ASSERT(258, pContent!=NULL);
|
||||
bool v0 = (*(u32*)pContent != 0);
|
||||
bool v0 = (*(BE(u32)*)pContent != 0);
|
||||
if (field_0x144 != v0) {
|
||||
field_0x144 = v0;
|
||||
switch (field_0x138) {
|
||||
@@ -179,7 +179,7 @@ void JStudio_JStage::TAdaptor_actor::adaptor_do_PARENT_FUNCTION(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(303, uSize==4);
|
||||
JUT_ASSERT(304, pContent!=NULL);
|
||||
field_0x138 = *(u32*)pContent;
|
||||
field_0x138 = *(BE(u32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ void JStudio_JStage::TAdaptor_camera::adaptor_do_PARENT_NODE(JStudio::data::TEOp
|
||||
case JStudio::data::UNK_0x19:
|
||||
JUT_ASSERT(166, uSize==4);
|
||||
JUT_ASSERT(167, pContent!=NULL);
|
||||
field_0x110 = *(int*)pContent;
|
||||
field_0x110 = *(BE(s32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -111,7 +111,7 @@ JStudio_JStage::TAdaptor_camera::adaptor_do_PARENT_ENABLE(JStudio::data::TEOpera
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(185, uSize==4);
|
||||
JUT_ASSERT(186, pContent!=NULL);
|
||||
field_0x114 = *(u32*)pContent ? true : false;
|
||||
field_0x114 = *(BE(u32)*)pContent ? true : false;
|
||||
switch(field_0x108) {
|
||||
case 1: {
|
||||
JStage::TObject* parent = 0;
|
||||
@@ -137,7 +137,7 @@ JStudio_JStage::TAdaptor_camera::adaptor_do_PARENT_FUNCTION(JStudio::data::TEOpe
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(226, uSize==4);
|
||||
JUT_ASSERT(227, pContent!=NULL);
|
||||
field_0x108 = *(int*)pContent;
|
||||
field_0x108 = *(BE(s32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -164,7 +164,7 @@ void JStudio_JStage::TAdaptor_camera::adaptor_do_TARGET_PARENT_NODE(
|
||||
case JStudio::data::UNK_0x19:
|
||||
JUT_ASSERT(282, uSize==4);
|
||||
JUT_ASSERT(283, pContent!=NULL);
|
||||
field_0x11c = *(int*)pContent;
|
||||
field_0x11c = *(BE(s32)*)pContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -175,7 +175,7 @@ void JStudio_JStage::TAdaptor_camera::adaptor_do_TARGET_PARENT_ENABLE(
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(301, uSize==4);
|
||||
JUT_ASSERT(302, pContent!=NULL);
|
||||
field_0x120 = *(int*)pContent ? 1 : 0;
|
||||
field_0x120 = *(BE(s32)*)pContent ? 1 : 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ void JStudio_JStage::TAdaptor_light::adaptor_do_FACULTY(JStudio::data::TEOperati
|
||||
JUT_ASSERT(198, uSize==4);
|
||||
JUT_ASSERT(199, pContent!=NULL);
|
||||
JStage::TELight lightType;
|
||||
switch (*(u32*)pContent) {
|
||||
switch (*(BE(u32)*)pContent) {
|
||||
case 0x301:
|
||||
lightType = JStage::TELIGHT_1;
|
||||
break;
|
||||
|
||||
@@ -82,7 +82,7 @@ void JStudio_JStage::TAdaptor_object_::adaptor_object_data_(void const* param_1,
|
||||
if (param_2 == 0) {
|
||||
uVar3 = JStage::TActor::ID_NORMAL;
|
||||
} else {
|
||||
uVar3 = *(int*)param_1;
|
||||
uVar3 = *(BE(s32)*)param_1;
|
||||
}
|
||||
pJSGObject_->JSGSetData(uVar3, param_3, param_4);
|
||||
}
|
||||
@@ -113,7 +113,7 @@ JStudio_JStage::TAdaptor_object_::adaptor_object_ENABLE_(JStudio::data::TEOperat
|
||||
case JStudio::data::UNK_0x2:
|
||||
JUT_ASSERT(157, uSize==4);
|
||||
JUT_ASSERT(158, pContent!=NULL);
|
||||
if (*(u32*)pContent != 0) {
|
||||
if (*(BE(u32)*)pContent != 0) {
|
||||
pJSGObject_->JSGFEnableFlag(2);
|
||||
} else {
|
||||
pJSGObject_->JSGFDisableFlag(2);
|
||||
|
||||
@@ -431,6 +431,7 @@ void JUTCacheFont::invalidiateAllCache() {
|
||||
field_0xa4 = (TGlyphCacheInfo*)mCacheBuffer;
|
||||
field_0x9c = NULL;
|
||||
field_0xa0 = NULL;
|
||||
// TARGET_PC TODO: we're leaking all GXTexObj here
|
||||
}
|
||||
|
||||
void JUTCacheFont::unlink(JUTCacheFont::TGlyphCacheInfo* cacheInfo) {
|
||||
|
||||
@@ -417,6 +417,9 @@ void JUTResFont::loadImage(int code, GXTexMapID id){
|
||||
if (pageIdx != mTexPageIdx || i != field_0x66)
|
||||
{
|
||||
void* pImg = &mpGlyphBlocks[i]->data[pageIdx * mpGlyphBlocks[i]->textureSize];
|
||||
#ifdef TARGET_PC
|
||||
mTexObj.reset();
|
||||
#endif
|
||||
GXInitTexObj(&mTexObj, pImg, mpGlyphBlocks[i]->textureWidth,
|
||||
mpGlyphBlocks[i]->textureHeight, (GXTexFmt)(u16)mpGlyphBlocks[i]->textureFormat,
|
||||
GX_CLAMP, GX_CLAMP, 0);
|
||||
|
||||
@@ -15,7 +15,6 @@ JUTTexture::~JUTTexture() {
|
||||
if (getEmbPaletteDelFlag()) {
|
||||
JKR_DELETE(mEmbPalette);
|
||||
}
|
||||
GXDestroyTexObj(&mTexObj);
|
||||
}
|
||||
|
||||
void JUTTexture::storeTIMG(ResTIMG const* param_0, u8 param_1) {
|
||||
@@ -50,7 +49,7 @@ void JUTTexture::storeTIMG(ResTIMG const* param_0, u8 param_1) {
|
||||
tlut = (GXTlut)param_1;
|
||||
}
|
||||
|
||||
u32 palOffset = mTexInfo->paletteOffset;
|
||||
s32 palOffset = mTexInfo->paletteOffset;
|
||||
|
||||
if (mEmbPalette == NULL || !getEmbPaletteDelFlag()) {
|
||||
mEmbPalette = JKR_NEW JUTPalette(tlut, (GXTlutFmt)mTexInfo->colorFormat,
|
||||
@@ -148,6 +147,9 @@ void JUTTexture::initTexObj() {
|
||||
u8* image = ((u8*)mTexInfo);
|
||||
u32 imgOffset = mTexInfo->imageOffset;
|
||||
image += (imgOffset ? imgOffset : 0x20);
|
||||
#ifdef TARGET_PC
|
||||
mTexObj.reset();
|
||||
#endif
|
||||
GXInitTexObj(&mTexObj, image, mTexInfo->width, mTexInfo->height,
|
||||
(GXTexFmt)mTexInfo->format, (GXTexWrapMode)mWrapS, (GXTexWrapMode)mWrapT,
|
||||
mipmapEnabled);
|
||||
@@ -165,6 +167,9 @@ void JUTTexture::initTexObj(GXTlut param_0) {
|
||||
(u16)mTexInfo->height,
|
||||
(void*)mTexInfo);
|
||||
image += (imgOffset ? imgOffset : 0x20);
|
||||
#ifdef TARGET_PC
|
||||
mTexObj.reset();
|
||||
#endif
|
||||
GXInitTexObjCI(&mTexObj, image, mTexInfo->width, mTexInfo->height,
|
||||
(GXCITexFmt)mTexInfo->format, (GXTexWrapMode)mWrapS,
|
||||
(GXTexWrapMode)mWrapT, mipmapEnabled, param_0);
|
||||
|
||||
Reference in New Issue
Block a user