mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
Work on dvdlow, OSTime fix and various nonmatching
This commit is contained in:
@@ -152,7 +152,7 @@ SECTION_SDATA2 static f64 lit_650 = 4503601774854144.0 /* cast s32 to float */;
|
||||
/* 802F4468-802F4658 2EEDA8 01F0+00 1/1 0/0 0/0 .text
|
||||
* private_initiate__8J2DPrintFP7JUTFontffQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorb
|
||||
*/
|
||||
// close
|
||||
// matches with float literals
|
||||
#ifdef NONMATCHING
|
||||
void J2DPrint::private_initiate(JUTFont* pFont, f32 param_1, f32 param_2, JUtility::TColor param_3,
|
||||
JUtility::TColor param_4, JUtility::TColor param_5,
|
||||
@@ -165,10 +165,13 @@ void J2DPrint::private_initiate(JUTFont* pFont, f32 param_1, f32 param_2, JUtili
|
||||
field_0x4c = 32.0f;
|
||||
|
||||
if (mFont != NULL) {
|
||||
if (!param_7) {
|
||||
param_2 = mFont->getLeading();
|
||||
f32 temp;
|
||||
if (param_7 == false) {
|
||||
temp = param_2;
|
||||
} else {
|
||||
temp = mFont->getLeading();
|
||||
}
|
||||
field_0x4c = param_2;
|
||||
field_0x4c = temp;
|
||||
}
|
||||
|
||||
field_0x5a = 1;
|
||||
|
||||
@@ -92,34 +92,22 @@ J3DMaterialTable::~J3DMaterialTable() {}
|
||||
|
||||
/* 8032F64C-8032F6F8 329F8C 00AC+00 0/0 1/1 5/5 .text
|
||||
* removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor */
|
||||
#ifdef NONMATCHING
|
||||
int J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* pAnmColor) {
|
||||
int ret = false;
|
||||
u16 updateMatNum = pAnmColor->getUpdateMaterialNum();
|
||||
for (u16 i = 0; i < updateMatNum; i++) {
|
||||
if (pAnmColor->isValidUpdateMaterialID(i)) {
|
||||
u16 updateMatID = pAnmColor->getUpdateMaterialID(i);
|
||||
J3DMaterial* materialNode = getMaterialNodePointer(i);
|
||||
|
||||
if (materialNode->getMaterialAnm() == NULL) {
|
||||
J3DMaterial* materialNode = getMaterialNodePointer(pAnmColor->getUpdateMaterialID(i));
|
||||
J3DMaterialAnm* materialAnm = materialNode->getMaterialAnm();
|
||||
if (materialAnm == NULL) {
|
||||
ret = true;
|
||||
} else {
|
||||
materialNode->getMaterialAnm()->setMatColorAnm(0, NULL);
|
||||
materialAnm->setMatColorAnm(0, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8032F6F8-8032F7B4 32A038 00BC+00 0/0 5/5 10/10 .text
|
||||
* removeTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPattern */
|
||||
|
||||
@@ -55,7 +55,7 @@ asm void DSPReleaseHalt2(u32 param_0) {
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804512F8-80451300 0007F8 0004+04 2/2 0/0 0/0 .sbss flag */
|
||||
static u32 flag;
|
||||
static volatile BOOL flag;
|
||||
|
||||
/* 8029E540-8029E54C 298E80 000C+00 1/1 0/0 0/0 .text setup_callback__FUs */
|
||||
static void setup_callback(u16 param_0) {
|
||||
|
||||
@@ -152,8 +152,6 @@ JKRAram::~JKRAram() {
|
||||
}
|
||||
|
||||
/* 802D21DC-802D2248 2CCB1C 006C+00 1/0 0/0 0/0 .text run__7JKRAramFv */
|
||||
// almost full match
|
||||
#ifdef NONMATCHING
|
||||
void* JKRAram::run(void) {
|
||||
int result;
|
||||
JKRAMCommand* command;
|
||||
@@ -165,22 +163,13 @@ void* JKRAram::run(void) {
|
||||
command = message->command;
|
||||
delete message;
|
||||
|
||||
if (result != 1) {
|
||||
} else {
|
||||
switch (result) {
|
||||
case 1:
|
||||
JKRAramPiece::startDMA(command);
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void* JKRAram::run() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRAram/run__7JKRAramFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8039D078-8039D078 0296D8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
||||
@@ -127,7 +127,6 @@ JKRDvdArchive::~JKRDvdArchive() {
|
||||
}
|
||||
|
||||
/* 802D7DB4-802D8050 2D26F4 029C+00 1/1 0/0 0/0 .text open__13JKRDvdArchiveFl */
|
||||
#ifdef NONMATCHING
|
||||
bool JKRDvdArchive::open(s32 entryNum) {
|
||||
mArcInfoBlock = NULL;
|
||||
field_0x64 = NULL;
|
||||
@@ -151,12 +150,7 @@ bool JKRDvdArchive::open(s32 entryNum) {
|
||||
JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0, &mCompression, NULL);
|
||||
DCInvalidateRange(arcHeader, sizeof(SArcHeader));
|
||||
|
||||
int alignment;
|
||||
if (mMountDirection == MOUNT_DIRECTION_HEAD) {
|
||||
alignment = 0x20;
|
||||
} else {
|
||||
alignment = -0x20;
|
||||
}
|
||||
int alignment = mMountDirection == MOUNT_DIRECTION_HEAD ? 0x20 : -0x20;
|
||||
|
||||
mArcInfoBlock = (SArcDataInfo*)JKRAllocFromHeap(mHeap, arcHeader->file_data_offset, alignment);
|
||||
if (!mArcInfoBlock) {
|
||||
@@ -174,18 +168,18 @@ bool JKRDvdArchive::open(s32 entryNum) {
|
||||
mStringTable = (char*)((int)&mArcInfoBlock->num_nodes + mArcInfoBlock->string_table_offset);
|
||||
mExpandedSize = NULL;
|
||||
|
||||
bool useCompression = false;
|
||||
u8 useCompression = 0;
|
||||
SDIFileEntry* fileEntry = mFiles;
|
||||
for (u32 i = 0; i < mArcInfoBlock->num_file_entries; fileEntry++, i++) {
|
||||
if (!fileEntry->isUnknownFlag1()) {
|
||||
useCompression |= fileEntry->isCompressed();
|
||||
if (fileEntry->isUnknownFlag1()) {
|
||||
useCompression |= fileEntry->getCompressFlag();
|
||||
}
|
||||
}
|
||||
|
||||
if (useCompression) {
|
||||
mExpandedSize = (s32*)JKRAllocFromHeap(mHeap, sizeof(s32) * mArcInfoBlock->num_file_entries,
|
||||
abs(alignment));
|
||||
if (mExpandedSize) {
|
||||
if (!mExpandedSize) {
|
||||
// !@bug: mArcInfoBlock is allocated from mHeap but free'd to sSystemHeap. I don't know
|
||||
// what will happen if mHeap != sSystemHeap, but it's still a bug to free to the wrong
|
||||
// allocator.
|
||||
@@ -213,16 +207,6 @@ cleanup:
|
||||
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm bool JKRDvdArchive::open(s32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JKernel/JKRDvdArchive/open__13JKRDvdArchiveFl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802D8050-802D8168 2D2990 0118+00 1/0 0/0 0/0 .text
|
||||
* fetchResource__13JKRDvdArchiveFPQ210JKRArchive12SDIFileEntryPUl */
|
||||
|
||||
@@ -59,9 +59,8 @@ SECTION_SDATA2 static f32 lit_2289[1 + 1 /* padding */] = {
|
||||
};
|
||||
|
||||
/* 8027B144-8027B220 275A84 00DC+00 1/1 0/0 0/0 .text JPAVolumePoint__FP18JPAEmitterWorkData */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
|
||||
// bug in diff.py preventing me from seeing what's wrong
|
||||
void JPAVolumePoint(JPAEmitterWorkData* work) {
|
||||
work->mVolumePos.zero();
|
||||
work->mVelOmni.set(work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh(),
|
||||
@@ -86,15 +85,14 @@ static asm void JPAVolumePoint(JPAEmitterWorkData* param_0) {
|
||||
/* 80455320-80455328 003920 0008+00 6/6 0/0 0/0 .sdata2 @2321 */
|
||||
SECTION_SDATA2 static f64 lit_2321 = 4503601774854144.0 /* cast s32 to float */;
|
||||
|
||||
/* 8027B220-8027B33C 275B60 011C+00 1/1 0/0 0/0 .text JPAVolumeLine__FP18JPAEmitterWorkData */
|
||||
/* 8027B220-8027B33C 275B60 011C+00 1/1 0/0 0/0 .text JPAVolumeLine */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
|
||||
// bug in diff.py preventing me from seeing what's wrong
|
||||
void JPAVolumeLine(JPAEmitterWorkData* work) {
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
|
||||
work->mVolumePos.set(0.0f, 0.0f,
|
||||
work->mVolumeSize *
|
||||
(s32)((work->mVolumeEmitIdx / (work->mEmitCount - 1.0f) - 0.5f)));
|
||||
((work->mVolumeEmitIdx / (work->mEmitCount - 1.0f) - 0.5f)));
|
||||
work->mVolumeEmitIdx++;
|
||||
} else {
|
||||
work->mVolumePos.set(0.0f, 0.0f, work->mVolumeSize * work->mpEmtr->get_r_zh());
|
||||
@@ -117,17 +115,22 @@ static asm void JPAVolumeLine(JPAEmitterWorkData* param_0) {
|
||||
|
||||
#endif
|
||||
|
||||
/* 8027B33C-8027B4E8 275C7C 01AC+00 1/1 0/0 0/0 .text JPAVolumeCircle__FP18JPAEmitterWorkData */
|
||||
|
||||
/* 8027B33C-8027B4E8 275C7C 01AC+00 1/1 0/0 0/0 .text JPAVolumeCircle */
|
||||
// regalloc. Could be issue with mul asm implementations
|
||||
#ifdef NONMATCHING
|
||||
|
||||
// bug in diff.py preventing me from seeing what's wrong
|
||||
void JPAVolumeCircle(JPAEmitterWorkData* work) {
|
||||
f32 theta, distance, sizeXZ;
|
||||
s16 thetai;
|
||||
f32 theta;
|
||||
f32 distance;
|
||||
f32 sizeXZ;
|
||||
f32 temp;
|
||||
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
|
||||
theta = work->mVolumeSweep * (work->mVolumeEmitIdx++ / work->mEmitCount);
|
||||
theta = (s16)((work->mVolumeEmitIdx << 16) / work->mEmitCount);
|
||||
thetai = theta * work->mVolumeSweep;
|
||||
work->mVolumeEmitIdx++;
|
||||
} else {
|
||||
theta = work->mVolumeSweep * work->mpEmtr->get_r_ss();
|
||||
thetai = theta;
|
||||
}
|
||||
|
||||
distance = work->mpEmtr->get_r_f();
|
||||
@@ -136,7 +139,7 @@ void JPAVolumeCircle(JPAEmitterWorkData* work) {
|
||||
}
|
||||
|
||||
sizeXZ = work->mVolumeSize * (work->mVolumeMinRad + distance * (1.0f - work->mVolumeMinRad));
|
||||
work->mVolumePos.set(sizeXZ * JMASSin(theta), 0.0f, sizeXZ * JMASCos(theta));
|
||||
work->mVolumePos.set(sizeXZ * JMASSin(thetai), 0.0f, sizeXZ * JMASCos(thetai));
|
||||
work->mVelOmni.mul(work->mVolumePos, work->mGlobalScl);
|
||||
work->mVelAxis.set(work->mVolumePos.x, 0.0f, work->mVolumePos.z);
|
||||
}
|
||||
@@ -154,15 +157,13 @@ static asm void JPAVolumeCircle(JPAEmitterWorkData* param_0) {
|
||||
|
||||
#endif
|
||||
|
||||
/* 8027B4E8-8027B5F0 275E28 0108+00 1/1 0/0 0/0 .text JPAVolumeCube__FP18JPAEmitterWorkData */
|
||||
|
||||
/* 8027B4E8-8027B5F0 275E28 0108+00 1/1 0/0 0/0 .text JPAVolumeCube */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
|
||||
// bug in diff.py preventing me from seeing what's wrong
|
||||
void JPAVolumeCube(JPAEmitterWorkData* work) {
|
||||
f32 size = work->mVolumeSize;
|
||||
work->mVolumePos.set(size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh(),
|
||||
size * work->mpEmtr->get_r_zh());
|
||||
work->mVolumePos.set(work->mpEmtr->get_r_zh() * work->mVolumeSize,
|
||||
work->mpEmtr->get_r_zh() * work->mVolumeSize,
|
||||
work->mpEmtr->get_r_zh() * work->mVolumeSize);
|
||||
work->mVelOmni.mul(work->mVolumePos, work->mGlobalScl);
|
||||
work->mVelAxis.set(work->mVolumePos.x, 0.0f, work->mVolumePos.z);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user