From 81ebe0dfd449166e00de31ce9be2d7449e31536c Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 27 Oct 2026 00:29:52 -0400 Subject: [PATCH] Work on JAS inlines, fix limits/climits headers --- include/JSystem/JAudio/JASAiCtrl.h | 10 +- include/JSystem/JAudio/JASAudioThread.h | 3 + include/JSystem/JAudio/JASHardStream.h | 27 ++-- include/JSystem/JAudio/JASRegisterParam.h | 34 +++-- include/JSystem/JAudio/JASSeqCtrl.h | 8 +- include/JSystem/JKernel/JKRThread.h | 13 -- include/JSystem/JMath/random.h | 9 ++ include/JSystem/JUtility/JUTException.h | 2 + include/dolphin/types.h | 12 +- src/JSystem/JAudio/JAISeMgr.cpp | 1 - src/JSystem/JAudio/JAISound.cpp | 2 +- src/JSystem/JAudio/JASAiCtrl.cpp | 74 +---------- src/JSystem/JAudio/JASBank.cpp | 1 - src/JSystem/JAudio/JASDSPBuf.cpp | 2 +- src/JSystem/JAudio/JASDSPChannel.cpp | 2 +- src/JSystem/JAudio/JASDvdThread.cpp | 2 +- src/JSystem/JAudio/JASHardStream.cpp | 121 +++++++++--------- src/JSystem/JAudio/JASInstRand.cpp | 4 +- src/JSystem/JAudio/JASRegisterParam.cpp | 34 ++--- src/JSystem/JAudio/JASSeqParser.cpp | 11 +- src/JSystem/JAudio/JASTrack.cpp | 91 +++++++------ src/JSystem/JAudio/JASTrackInterrupt.cpp | 1 - src/JSystem/JAudio/JASTrackPort.cpp | 1 - src/JSystem/JAudio/dsptask.c | 2 +- src/JSystem/JKernel/JKRAramHeap.cpp | 2 +- src/JSystem/JStage/JSGCamera.cpp | 2 +- src/JSystem/JStage/JSGFog.cpp | 2 +- .../MSL/MSL_C++/MSL_Common/Include/limits | 12 ++ .../MSL/MSL_C/MSL_Common/Include/climits | 37 ++++++ .../MSL/MSL_C/MSL_Common/Include/float.h | 5 +- src/SSystem/SComponent/c_m3d_g_sph.cpp | 1 - src/d/actor/d_a_arrow.cpp | 2 +- src/d/actor/d_a_npc_nz.cpp | 2 +- src/d/actor/d_a_npc_nz_cut.inc | 2 +- src/d/actor/d_a_obj_YLzou.cpp | 1 - src/d/actor/d_a_obj_barrel2.cpp | 8 +- src/d/actor/d_a_obj_movebox.cpp | 4 +- src/d/actor/d_a_ship.cpp | 2 +- src/d/actor/d_a_ykgr.cpp | 2 +- src/d/d_attention.cpp | 4 +- src/d/d_demo.cpp | 6 +- src/d/d_envse.cpp | 6 +- src/d/d_map.cpp | 2 +- src/d/d_vibration.cpp | 2 +- src/m_Do/m_Do_graphic.cpp | 12 +- 45 files changed, 286 insertions(+), 297 deletions(-) create mode 100644 src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/climits diff --git a/include/JSystem/JAudio/JASAiCtrl.h b/include/JSystem/JAudio/JASAiCtrl.h index d6701af51..4f9d892cd 100644 --- a/include/JSystem/JAudio/JASAiCtrl.h +++ b/include/JSystem/JAudio/JASAiCtrl.h @@ -32,7 +32,15 @@ namespace JASystem { extern s16* (*extMixCallback)(s32); extern u8 extMixMode; - inline void JASAiMixLimit16(s32) {} // TODO + inline s16 JASAiMixLimit16(s32 val) { + if (val < -0x8000) { + return -0x7fff; + } else if (val > 0x7fff) { + return 0x7fff; + } else { + return val; + } + } } } diff --git a/include/JSystem/JAudio/JASAudioThread.h b/include/JSystem/JAudio/JASAudioThread.h index acb06c71c..d2fde5992 100644 --- a/include/JSystem/JAudio/JASAudioThread.h +++ b/include/JSystem/JAudio/JASAudioThread.h @@ -25,6 +25,9 @@ namespace JASystem { extern OSPriority sDVDPrio; extern vs32 snIntCount; extern int sbIsDSPBoot; + + inline u32 getDSPSyncCount() { return snIntCount; } + inline void setDSPSyncCount(u32 count) { snIntCount = count; } }; } diff --git a/include/JSystem/JAudio/JASHardStream.h b/include/JSystem/JAudio/JASHardStream.h index 94e60b4d0..cce3aa303 100644 --- a/include/JSystem/JAudio/JASHardStream.h +++ b/include/JSystem/JAudio/JASHardStream.h @@ -59,23 +59,24 @@ namespace JASystem { void calcCurVolume(); u8 volFloatToU8(f32); - void getLastAddrBefore() {} TPlayList* getList() { return mpList; } - void getPlayArea() {} - void getRestart() {} - void getState() {} void setList(TPlayList* list) { mpList = list; } - void setPlayArea(u16) {} - void setRestart(u8) {} - void setState(u8) {} + u16 getPlayArea() { return mPlayArea; } + void setPlayArea(u16 area) { mPlayArea = area; } + u8 getRestart() { return mRestart; } + void setRestart(u8 restart) { mRestart = restart; } + u8 getState() { return mState; } + void setState(u8 state) { mState = state; } + u32 getLastAddrBefore() { return mAddrs[mAddrIdx ^ 1]; } + private: /* 0x00 */ int field_0x0; /* 0x04 */ TPlayList* mpList; - /* 0x08 */ u16 field_0x8; - /* 0x0A */ u8 field_0xa; - /* 0x0B */ u8 field_0xb; + /* 0x08 */ u16 mPlayArea; + /* 0x0A */ u8 mRestart; + /* 0x0B */ u8 mState; /* 0x0C */ f32 field_0xc; - /* 0x10 */ f32 field_0x10; + /* 0x10 */ f32 mCurVolume; /* 0x14 */ u32 field_0x14; /* 0x18 */ u32 field_0x18; /* 0x1C */ u32 field_0x1c; @@ -88,8 +89,8 @@ namespace JASystem { /* 0x38 */ u32 field_0x38; /* 0x3C */ u32 field_0x3c; /* 0x40 */ u32 field_0x40; - /* 0x44 */ u32 field_0x44[2]; - /* 0x4C */ u8 field_0x4c; + /* 0x44 */ u32 mAddrs[2]; + /* 0x4C */ u8 mAddrIdx; }; extern TControl strCtrl; diff --git a/include/JSystem/JAudio/JASRegisterParam.h b/include/JSystem/JAudio/JASRegisterParam.h index 96145686c..2990717a4 100644 --- a/include/JSystem/JAudio/JASRegisterParam.h +++ b/include/JSystem/JAudio/JASRegisterParam.h @@ -7,9 +7,13 @@ namespace JASystem { class TRegisterParam { public: - static const u8 PARAM_REG_XY = 0x23; - static const u8 PARAM_REG_AR0 = 0x28; - static const u8 PARAM_REG_AR3 = 0x2B; + enum { + /* 0x23 */ PARAM_REG_XY = 0x23, + /* 0x28 */ PARAM_REG_AR0 = 0x28, + /* 0x29 */ PARAM_REG_AR1 = 0x29, + /* 0x2A */ PARAM_REG_AR2 = 0x2A, + /* 0x2B */ PARAM_REG_AR3 = 0x2B, + }; TRegisterParam(); void init(); @@ -20,15 +24,14 @@ namespace JASystem { u32 getAddress(int index) const { JUT_ASSERT(130, index >= 0); JUT_ASSERT(131, index < 4); - return field_0x20[index]; + return mAddress[index]; } void setAddress(int index, u32 value) { JUT_ASSERT(124, index >= 0); JUT_ASSERT(125, index < 4); - field_0x20[index] = value; + mAddress[index] = value; } - void getBendSense() const {} u16 getPanPowerBank() const { return mPanPower[0]; } @@ -44,18 +47,23 @@ namespace JASystem { u16 getPanPowerTrack() const { return mPanPower[4]; } - void getPriority() const {} - u16 getFlag() const { return field_0x0[3]; } - void setFlag(u16 flag) { field_0x0[3] = flag; } void setPanPower(int i, u16 power) { mPanPower[i] = power; } - /* 0x00 */ u16 field_0x0[6]; + u16 getFlag() const { return field_0x0[3]; } + void setFlag(u16 flag) { field_0x0[3] = flag; } + + // TODO + void getBendSense() const {} + void getPriority() const {} + + // private: + /* 0x00 */ u16 field_0x0[6]; // TODO unsure how long this array really is /* 0x0C */ u16 field_0xc; - /* 0x0E */ u16 field_0xe; + /* 0x0E */ u16 field_0xe; // BendSense? /* 0x10 */ u16 mPanPower[5]; - /* 0x1A */ u16 field_0x1a; + /* 0x1A */ u16 field_0x1a; // Priority? /* 0x1C */ int field_0x1c; - /* 0x20 */ u32 field_0x20[4]; + /* 0x20 */ u32 mAddress[4]; }; } diff --git a/include/JSystem/JAudio/JASSeqCtrl.h b/include/JSystem/JAudio/JASSeqCtrl.h index 3c5b3c09b..123e6a139 100644 --- a/include/JSystem/JAudio/JASSeqCtrl.h +++ b/include/JSystem/JAudio/JASSeqCtrl.h @@ -12,7 +12,8 @@ namespace JASystem { mLoopStartPositions[mLoopIndex++] = mCurrentFilePtr; mCurrentFilePtr = mRawFilePtr + offset; } - void clrIntr() { mPreviousFilePtr = 0; } + void clrIntr() { mPreviousFilePtr = NULL; } + bool isIntr() const { return mPreviousFilePtr != NULL; } u8* getAddr(u32 offset) { return mRawFilePtr + offset; } u8* getBase() { return mRawFilePtr; } u8 getByte(u32 offset) const { return mRawFilePtr[offset]; } @@ -23,7 +24,6 @@ namespace JASystem { return mLoopTimers[mLoopIndex - 1]; } s32 getWait() const { return mWaitTimer; } - void isIntr() const {} void jump(u32 offset) { mCurrentFilePtr = mRawFilePtr + offset; } @@ -33,6 +33,9 @@ namespace JASystem { } u8 readByte() { return *mCurrentFilePtr++; } bool ret() { + if (mLoopIndex == 0) { + return false; + } mCurrentFilePtr = mLoopStartPositions[--mLoopIndex]; return true; } @@ -52,6 +55,7 @@ namespace JASystem { u16 read16(); u32 read24(); + // private: /* 0x00 */ u8* mRawFilePtr; /* 0x04 */ u8* mCurrentFilePtr; /* 0x08 */ s32 mWaitTimer; diff --git a/include/JSystem/JKernel/JKRThread.h b/include/JSystem/JKernel/JKRThread.h index c8645a8db..b239cd282 100644 --- a/include/JSystem/JKernel/JKRThread.h +++ b/include/JSystem/JKernel/JKRThread.h @@ -10,7 +10,6 @@ struct JKRThreadName_ { char* name; }; -class JUTConsole; class JKRThread : public JKRDisposer { public: JKRThread(u32 stack_size, int message_count, int param_3); @@ -20,7 +19,6 @@ public: /* vt[03] */ virtual void* run() { return NULL; } OSThread* getThreadRecord() const { return mThreadRecord; } - void* getStack() const { return mStackMemory; } JKRHeap* getCurrentHeap() const { return mCurrentHeap; } s32 getCurrentHeapError() const { return mCurrentHeapError; } @@ -30,25 +28,14 @@ public: void resume() { OSResumeThread(mThreadRecord); } protected: - BOOL sendMessage(OSMessage message) { - return OSSendMessage(&mMessageQueue, message, OS_MESSAGE_NOBLOCK); - } BOOL sendMessageBlock(OSMessage message) { return OSSendMessage(&mMessageQueue, message, OS_MESSAGE_BLOCK); } OSMessage waitMessage() { - OSMessage message; - OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_NOBLOCK); - return message; - } - OSMessage waitMessageBlock() { OSMessage message; OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_BLOCK); return message; } - void jamMessageBlock(OSMessage message) { - OSJamMessage(&mMessageQueue, message, OS_MESSAGE_BLOCK); - } private: /* 0x00 */ // vtable diff --git a/include/JSystem/JMath/random.h b/include/JSystem/JMath/random.h index 2d4382e60..c5d42ea32 100644 --- a/include/JSystem/JMath/random.h +++ b/include/JSystem/JMath/random.h @@ -2,6 +2,7 @@ #define RANDOM_H #include "dolphin/types.h" +#include namespace JMath { struct TRandom_fast_ { @@ -56,6 +57,14 @@ public: u32 get_uint32(u32 param_0) { return this->get_ufloat_1() * param_0; } + + f32 get_ufloat(f32 param_0) { + return this->get_ufloat_1() * param_0; + } + + f32 get_float(f32 param_0) { + return this->get_ufloat(param_0) - ((param_0 / 2.0f) - std::numeric_limits::epsilon()); + } }; } // namespace JMath diff --git a/include/JSystem/JUtility/JUTException.h b/include/JSystem/JUtility/JUTException.h index aa3ad31a7..e3ef995f3 100644 --- a/include/JSystem/JUtility/JUTException.h +++ b/include/JSystem/JUtility/JUTException.h @@ -3,12 +3,14 @@ #include "JSystem/JKernel/JKRThread.h" #include "JSystem/JUtility/JUTGamePad.h" +#include "dolphin/gx/GX.h" #include "stdarg.h" #include "dolphin/gx/GXEnum.h" #include "dolphin/os/OSError.h" #include "global.h" class JUTDirectPrint; +class JUTConsole; class JUTExternalFB { public: diff --git a/include/dolphin/types.h b/include/dolphin/types.h index 7fddbfaf5..8be45190f 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -84,13 +84,9 @@ typedef unsigned int uint; #define __REGISTER #endif -#include "stddef.h" // IWYU pragma: export -#include "stdint.h" // IWYU pragma: export - -#define INT32_MAX (0x7fffffff) -#define UINT32_MAX (0xffffffff) - -#define FLOAT_MIN (1.175494351e-38f) -#define FLOAT_MAX (3.40282346638528860e+38f) +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export +#include // IWYU pragma: export #endif diff --git a/src/JSystem/JAudio/JAISeMgr.cpp b/src/JSystem/JAudio/JAISeMgr.cpp index 8f388b96e..89cee8daf 100644 --- a/src/JSystem/JAudio/JAISeMgr.cpp +++ b/src/JSystem/JAudio/JAISeMgr.cpp @@ -14,7 +14,6 @@ #include "JSystem/JAudio/JAISoundTable.h" #include "JSystem/JAudio/JAISystemInterface.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "limits.h" #include "math.h" #include "dolphin/mtx/mtxvec.h" diff --git a/src/JSystem/JAudio/JAISound.cpp b/src/JSystem/JAudio/JAISound.cpp index 475533f9d..b87b23810 100644 --- a/src/JSystem/JAudio/JAISound.cpp +++ b/src/JSystem/JAudio/JAISound.cpp @@ -517,7 +517,7 @@ void JAISound::setTrackPortData(u8 param_1, u8 param_2, u16 param_3) { /* 80299CD4-80299DE8 .text setSeInterRandomPara__8JAISoundFPfUlff */ void JAISound::setSeInterRandomPara(f32* param_1, u32 param_2, f32 param_3, f32 param_4) { - u32 uVar3 = JAInter::Const::random.get_uint32(UINT32_MAX); + u32 uVar3 = JAInter::Const::random.get_uint32(UINT_MAX); u32 term = uVar3 / (param_2 * 2); f32 fVar2 = ((f32)(uVar3 - term * (param_2 * 2) + 1) - param_2) / 1000.0f; diff --git a/src/JSystem/JAudio/JASAiCtrl.cpp b/src/JSystem/JAudio/JASAiCtrl.cpp index 41ded9e07..67007cfbd 100644 --- a/src/JSystem/JAudio/JASAiCtrl.cpp +++ b/src/JSystem/JAudio/JASAiCtrl.cpp @@ -124,25 +124,8 @@ void JASystem::Kernel::mixMonoTrack(s16* dest, s32 size, s16* (*cb)(s32)) { s16* destPtr = dest; s16* srcPtr = src; for (int i = 0; i < size; i++) { - s32 var1 = destPtr[0] + srcPtr[0]; - s16 var2; - if (var1 < -0x8000) { - var2 = -0x7fff; - } else if (var1 > 0x7fff) { - var2 = 0x7fff; - } else { - var2 = var1; - } - destPtr[0] = var2; - var1 = destPtr[1] + srcPtr[0]; - if (var1 < -0x8000) { - var2 = -0x7fff; - } else if (var1 > 0x7fff) { - var2 = 0x7fff; - } else { - var2 = var1; - } - destPtr[1] = var2; + destPtr[0] = JASAiMixLimit16(destPtr[0] + srcPtr[0]); + destPtr[1] = JASAiMixLimit16(destPtr[1] + srcPtr[0]); destPtr += 2; srcPtr++; } @@ -159,25 +142,8 @@ void JASystem::Kernel::mixMonoTrackWide(s16* dest, s32 size, s16* (*cb)(s32)) { s16* destPtr = dest; s16* srcPtr = src; for (int i = 0; i < size; i++) { - s32 var1 = destPtr[0] + srcPtr[0]; - s16 var2; - if (var1 < -0x8000) { - var2 = -0x7fff; - } else if (var1 > 0x7fff) { - var2 = 0x7fff; - } else { - var2 = var1; - } - destPtr[0] = var2; - var1 = destPtr[1] - srcPtr[0]; - if (var1 < -0x8000) { - var2 = -0x7fff; - } else if (var1 > 0x7fff) { - var2 = 0x7fff; - } else { - var2 = var1; - } - destPtr[1] = var2; + destPtr[0] = JASAiMixLimit16(destPtr[0] + srcPtr[0]); + destPtr[1] = JASAiMixLimit16(destPtr[1] - srcPtr[0]); destPtr += 2; srcPtr++; } @@ -196,25 +162,8 @@ void JASystem::Kernel::mixExtraTrack(s16* dest, s32 size, s16* (*cb)(s32)) { s16* srcPtr = src; s16* srcPtr2 = src + getFrameSamples(); for (int i = 0; i < size; i++) { - s32 var1 = destPtr[0] + srcPtr2[0]; - s16 var2; - if (var1 < -0x8000) { - var2 = -0x7fff; - } else if (var1 > 0x7fff) { - var2 = 0x7fff; - } else { - var2 = var1; - } - destPtr[0] = var2; - var1 = destPtr[1] + srcPtr[0]; - if (var1 < -0x8000) { - var2 = -0x7fff; - } else if (var1 > 0x7fff) { - var2 = 0x7fff; - } else { - var2 = var1; - } - destPtr[1] = var2; + destPtr[0] = JASAiMixLimit16(destPtr[0] + srcPtr2[0]); + destPtr[1] = JASAiMixLimit16(destPtr[1] + srcPtr[0]); destPtr += 2; srcPtr2++; srcPtr++; @@ -230,16 +179,7 @@ void JASystem::Kernel::mixInterleaveTrack(s16* dest, s32 size, s16* (*cb)(s32)) } s16* destPtr = dest; for (int i = 0; i < size * 2 ; i++) { - s32 var1 = destPtr[0] + src[0]; - s16 var2; - if (var1 < -0x8000) { - var2 = -0x7fff; - } else if (var1 > 0x7fff) { - var2 = 0x7fff; - } else { - var2 = var1; - } - destPtr[0] = var2; + destPtr[0] = JASAiMixLimit16(destPtr[0] + src[0]); destPtr++; src++; } diff --git a/src/JSystem/JAudio/JASBank.cpp b/src/JSystem/JAudio/JASBank.cpp index 60c2faed8..171cadc18 100644 --- a/src/JSystem/JAudio/JASBank.cpp +++ b/src/JSystem/JAudio/JASBank.cpp @@ -14,7 +14,6 @@ JKRHeap* JASystem::TBank::sCurrentHeap; /* 80284548-8028455C .text getCurrentHeap__Q28JASystem5TBankFv */ JKRHeap* JASystem::TBank::getCurrentHeap() { - /* Nonmatching */ if (sCurrentHeap) { return sCurrentHeap; } diff --git a/src/JSystem/JAudio/JASDSPBuf.cpp b/src/JSystem/JAudio/JASDSPBuf.cpp index 54c41fc9b..3ca015009 100644 --- a/src/JSystem/JAudio/JASDSPBuf.cpp +++ b/src/JSystem/JAudio/JASDSPBuf.cpp @@ -106,7 +106,7 @@ void JASystem::TDSP_DACBuffer::finishDSPFrame() { return; } writeBuffer = var2; - TAudioThread::snIntCount = Kernel::getSubFrames(); + TAudioThread::setDSPSyncCount(Kernel::getSubFrames()); Kernel::probeStart(7, "DSP-MAIN"); DsyncFrame2(Kernel::getSubFrames(), u32(dsp_buf[writeBuffer]), u32(&dsp_buf[writeBuffer][frameSamples])); dspStatus = 1; diff --git a/src/JSystem/JAudio/JASDSPChannel.cpp b/src/JSystem/JAudio/JASDSPChannel.cpp index 9a3981e0f..d45cb6e5f 100644 --- a/src/JSystem/JAudio/JASDSPChannel.cpp +++ b/src/JSystem/JAudio/JASDSPChannel.cpp @@ -254,7 +254,7 @@ void JASystem::TDSPChannel::updateAll() { u32 var2; OSTick var3 = time - old_time; old_time = time; - var2 = Kernel::getSubFrames() - TAudioThread::snIntCount; + var2 = Kernel::getSubFrames() - TAudioThread::getDSPSyncCount(); history[var2] = var3; if (var2) { if (f32(history[0]) / var3 < DSP_LIMIT_RATIO) { diff --git a/src/JSystem/JAudio/JASDvdThread.cpp b/src/JSystem/JAudio/JASDvdThread.cpp index 30cfbde90..42391cb7c 100644 --- a/src/JSystem/JAudio/JASDvdThread.cpp +++ b/src/JSystem/JAudio/JASDvdThread.cpp @@ -38,7 +38,7 @@ BOOL JASTaskThread::sendCmdMsg(s32 (*param_1)(void*), void* param_2, u32 param_3 void* JASTaskThread::run() { OSMessage msg; while (true) { - msg = waitMessageBlock(); + msg = waitMessage(); TCallStack* callStack = (TCallStack*)msg; if (mPaused) { OSSleepThread(&mQ); diff --git a/src/JSystem/JAudio/JASHardStream.cpp b/src/JSystem/JAudio/JASHardStream.cpp index bc4aaf014..a13c7ce6f 100644 --- a/src/JSystem/JAudio/JASHardStream.cpp +++ b/src/JSystem/JAudio/JASHardStream.cpp @@ -45,7 +45,7 @@ void JASystem::HardStream::main() { } while (true) { u16 introNum; - switch (strCtrl.field_0xb) { + switch (strCtrl.getState()) { case 1: if (!strCtrl.getList()) { return; @@ -53,62 +53,62 @@ void JASystem::HardStream::main() { introNum = strCtrl.getIntroNum(); if (introNum != 0xffff) { if (!strCtrl.startFirst(introNum, finfo, &cur_finfo)) { - strCtrl.field_0xb = 0; + strCtrl.setState(0); return; } - strCtrl.field_0x8 = 0; + strCtrl.setPlayArea(0); } else { if (!strCtrl.startFirst(strCtrl.getLoopNum(), finfo, &cur_finfo)) { - strCtrl.field_0xb = 0; + strCtrl.setState(0); return; } strCtrl.clearListOne(); - strCtrl.field_0x8 = 1; + strCtrl.setPlayArea(1); } - strCtrl.field_0xb = 3; + strCtrl.setState(3); return; case 2: - if (strCtrl.field_0x8 == 0) { + if (strCtrl.getPlayArea() == 0) { u16 loopNum = strCtrl.getLoopNum(); if (loopNum != 0xffff) { if (!strCtrl.startSecond(loopNum, finfo, &cur_finfo)) { - strCtrl.field_0xb = 0; + strCtrl.setState(0); return; } strCtrl.clearListOne(); - strCtrl.field_0x8 = 1; - strCtrl.field_0xb = 4; + strCtrl.setPlayArea(1); + strCtrl.setState(4); return; } } strCtrl.clearListOne(); if (!strCtrl.getList()) { - if (strCtrl.field_0x8 == 0) { + if (strCtrl.getPlayArea() == 0) { DVDStopStreamAtEndAsync(&stop_cmd, 0); - strCtrl.field_0xb = 4; - strCtrl.field_0x8 = 2; + strCtrl.setState(4); + strCtrl.setPlayArea(2); return; } - strCtrl.field_0x8 = 3; - strCtrl.field_0xb = 4; + strCtrl.setPlayArea(3); + strCtrl.setState(4); return; } introNum = strCtrl.getIntroNum(); if (introNum != 0xffff) { if (!strCtrl.startSecond(introNum, finfo, &cur_finfo)) { - strCtrl.field_0xb = 0; + strCtrl.setState(0); return; } - strCtrl.field_0x8 = 0; + strCtrl.setPlayArea(0); } else { if (!strCtrl.startSecond(strCtrl.getLoopNum(), finfo, &cur_finfo)) { - strCtrl.field_0xb = 0; + strCtrl.setState(0); return; } strCtrl.clearListOne(); - strCtrl.field_0x8 = 1; + strCtrl.setPlayArea(1); } - strCtrl.field_0xb = 4; + strCtrl.setState(4); return; case 4: { u8 currentVol = strCtrl.getCurVol(); @@ -122,47 +122,47 @@ void JASystem::HardStream::main() { case 5: { TPlayList* list = strCtrl.getList(); if (!list) { - if (strCtrl.field_0x8 != 2) { - strCtrl.field_0x8 = 3; + if (strCtrl.getPlayArea() != 2) { + strCtrl.setPlayArea(3); } - strCtrl.field_0xb = 4; + strCtrl.setState(4); return; } - if (strCtrl.field_0x8 == 0) { + if (strCtrl.getPlayArea() == 0) { if (list->getPair()->getLoop() == 0xffff) { if (list->getNext() == NULL) { DVDStopStreamAtEndAsync(&stop_cmd, 0); strCtrl.clearListOne(); - strCtrl.field_0x8 = 2; + strCtrl.setPlayArea(2); } else { strCtrl.clearListOne(); - strCtrl.field_0x8 = 1; + strCtrl.setPlayArea(1); break; } } else { if (!strCtrl.startSecond(strCtrl.getLoopNum(), finfo, &cur_finfo)) { - strCtrl.field_0xb = 0; + strCtrl.setState(0); return; } strCtrl.clearListOne(); - strCtrl.field_0x8 = 1; + strCtrl.setPlayArea(1); } } else if (!list) { - strCtrl.field_0x8 = 3; - strCtrl.field_0xb = 4; + strCtrl.setPlayArea(3); + strCtrl.setState(4); } else { introNum = strCtrl.getIntroNum(); if (introNum == 0xffff) { - strCtrl.field_0x8 = 0; + strCtrl.setPlayArea(0); break; } if (!strCtrl.startSecond(introNum, finfo, &cur_finfo)) { - strCtrl.field_0xb = 0; + strCtrl.setState(0); return; } - strCtrl.field_0x8 = 0; + strCtrl.setPlayArea(0); } - strCtrl.field_0xb = 4; + strCtrl.setState(4); return; } case 6: @@ -170,10 +170,10 @@ void JASystem::HardStream::main() { AISetStreamVolRight(0); AISetStreamPlayState(0); DVDCancelStreamAsync(&finish_cmd, NULL); - strCtrl.field_0xb = 0; - strCtrl.field_0x8 = 0; + strCtrl.setState(0); + strCtrl.setPlayArea(0); strCtrl.resetFader(); - strCtrl.field_0xa = 0; + strCtrl.setRestart(0); return; case 0: case 3: @@ -185,40 +185,40 @@ void JASystem::HardStream::main() { /* 8027C318-8027C39C .text firstBgmCallback__Q28JASystem10HardStreamFlP11DVDFileInfo */ void JASystem::HardStream::firstBgmCallback(s32, DVDFileInfo*) { - if (strCtrl.field_0xa == 0) { + if (strCtrl.getRestart() == 0) { u8 vol = strCtrl.getCurVol(); AISetStreamVolLeft(vol); AISetStreamVolRight(vol); AISetStreamSampleRate(1); AIResetStreamSampleCount(); AISetStreamPlayState(1); - strCtrl.field_0xb = 2; + strCtrl.setState(2); } else { - strCtrl.field_0xb = 4; - strCtrl.field_0xa = 0; + strCtrl.setState(4); + strCtrl.setRestart(0); } } /* 8027C39C-8027C3B0 .text secondBgmCallback__Q28JASystem10HardStreamFlP11DVDFileInfo */ void JASystem::HardStream::secondBgmCallback(s32, DVDFileInfo*) { - strCtrl.field_0xb = 4; + strCtrl.setState(4); } /* 8027C3B0-8027C4E4 .text getAddrCallback__Q28JASystem10HardStreamFlP15DVDCommandBlock */ void JASystem::HardStream::getAddrCallback(s32 param_1, DVDCommandBlock* param_2) { static BOOL last_frame = 0; - if (strCtrl.field_0x8 == 3) { - if (param_1 == strCtrl.field_0x44[strCtrl.field_0x4c ^ 1]) { + if (strCtrl.getPlayArea() == 3) { + if (param_1 == strCtrl.getLastAddrBefore()) { last_frame = true; } else if (last_frame) { last_frame = false; - strCtrl.field_0xb = 5; + strCtrl.setState(5); } - } else if (strCtrl.field_0x8 == 2) { - if (param_1 == strCtrl.field_0x44[strCtrl.field_0x4c ^ 1] - 0x8000) { + } else if (strCtrl.getPlayArea() == 2) { + if (param_1 == strCtrl.getLastAddrBefore() - 0x8000) { last_frame = true; } else if (last_frame) { - strCtrl.field_0xb = 6; + strCtrl.setState(6); unregistBgmAll(); last_frame = false; } @@ -227,7 +227,7 @@ void JASystem::HardStream::getAddrCallback(s32 param_1, DVDCommandBlock* param_2 last_frame = true; } else if (last_frame) { last_frame = false; - strCtrl.field_0xb = 5; + strCtrl.setState(5); } } } @@ -240,11 +240,11 @@ static f32 dummy1() { JASystem::HardStream::TControl::TControl() { field_0x0 = 0; mpList = NULL; - field_0xa = 0; - field_0x8 = 0; - field_0xb = 0; + mRestart = 0; + mPlayArea = 0; + mState = 0; field_0xc = 1.0f; - field_0x10 = 0.0f; + mCurVolume = 0.0f; field_0x14 = 0; field_0x18 = 0; field_0x1c = 0; @@ -257,7 +257,7 @@ JASystem::HardStream::TControl::TControl() { field_0x38 = 0; field_0x3c = 0; field_0x40 = 0; - field_0x4c = 0; + mAddrIdx = 0; } /* 8027C544-8027C57C .text getIntroNum__Q38JASystem10HardStream8TControlFv */ @@ -331,13 +331,13 @@ BOOL JASystem::HardStream::TControl::clearListOne() { /* 8027C67C-8027C710 .text setLastAddr__Q38JASystem10HardStream8TControlFP11DVDFileInfo */ void JASystem::HardStream::TControl::setLastAddr(DVDFileInfo* finfo) { JUT_ASSERT(906, finfo != NULL); - field_0x44[field_0x4c] = finfo->start_address + finfo->length - 0x8000; - field_0x4c ^= 1; + mAddrs[mAddrIdx] = finfo->start_address + finfo->length - 0x8000; + mAddrIdx ^= 1; } /* 8027C710-8027C724 .text getLastAddr__Q38JASystem10HardStream8TControlFv */ u32 JASystem::HardStream::TControl::getLastAddr() { - return field_0x44[field_0x4c]; + return mAddrs[mAddrIdx]; } /* 8027C724-8027C7D8 .text startFirst__Q38JASystem10HardStream8TControlFUsP11DVDFileInfoPUl */ @@ -382,7 +382,7 @@ void JASystem::HardStream::TControl::resetFader() { /* 8027C8C8-8027C900 .text getCurVol__Q38JASystem10HardStream8TControlFv */ u8 JASystem::HardStream::TControl::getCurVol() { calcCurVolume(); - return volFloatToU8(field_0x10); + return volFloatToU8(mCurVolume); } /* 8027C900-8027CB5C .text calcCurVolume__Q38JASystem10HardStream8TControlFv */ @@ -417,7 +417,7 @@ void JASystem::HardStream::TControl::calcCurVolume() { f29 = 0.0f; resetFader(); - field_0xb = 6; + mState = 6; unregistBgmAll(); } else { @@ -445,12 +445,11 @@ void JASystem::HardStream::TControl::calcCurVolume() { f0 *= field_0x2c * (f30 * f29); f0 *= field_0xc; - field_0x10 = f0; + mCurVolume = f0; } /* 8027CB5C-8027CB9C .text volFloatToU8__Q38JASystem10HardStream8TControlFf */ u8 JASystem::HardStream::TControl::volFloatToU8(f32 param_1) { - /* Nonmatching */ if (param_1 > 1.0f) { param_1 = 1.0f; } diff --git a/src/JSystem/JAudio/JASInstRand.cpp b/src/JSystem/JAudio/JASInstRand.cpp index 91103ed4b..e0617ecfe 100644 --- a/src/JSystem/JAudio/JASInstRand.cpp +++ b/src/JSystem/JAudio/JASInstRand.cpp @@ -10,8 +10,8 @@ /* 80286B58-80286BF4 .text getY__Q28JASystem9TInstRandCFii */ f32 JASystem::TInstRand::getY(int, int) const { - static JMath::TRandom_fast_ oRandom(0); - f32 tmp = (oRandom.get_ufloat_1() * 2.0f - 0.9999999f); + static JMath::TRandom_ oRandom(0); + f32 tmp = oRandom.get_float(2.0f); tmp *= mWidth; return tmp + mBase; } diff --git a/src/JSystem/JAudio/JASRegisterParam.cpp b/src/JSystem/JAudio/JASRegisterParam.cpp index 2652f18c6..7621237fd 100644 --- a/src/JSystem/JAudio/JASRegisterParam.cpp +++ b/src/JSystem/JAudio/JASRegisterParam.cpp @@ -24,10 +24,10 @@ JASystem::TRegisterParam::TRegisterParam() { mPanPower[2] = 0; mPanPower[3] = 0; mPanPower[4] = 0; - field_0x20[0] = 0; - field_0x20[1] = 0; - field_0x20[2] = 0; - field_0x20[3] = 0; + mAddress[0] = 0; + mAddress[1] = 0; + mAddress[2] = 0; + mAddress[3] = 0; } /* 8027E310-8027E378 .text init__Q28JASystem14TRegisterParamFv */ @@ -46,30 +46,30 @@ void JASystem::TRegisterParam::init() { mPanPower[2] = 1; mPanPower[3] = 0x7fff; mPanPower[4] = 0x4000; - field_0x20[0] = 0; - field_0x20[1] = 0; - field_0x20[2] = 0; - field_0x20[3] = 0; + mAddress[0] = 0; + mAddress[1] = 0; + mAddress[2] = 0; + mAddress[3] = 0; } /* 8027E378-8027E3E0 .text inherit__Q28JASystem14TRegisterParamFRCQ28JASystem14TRegisterParam */ -void JASystem::TRegisterParam::inherit(const JASystem::TRegisterParam& param_1) { +void JASystem::TRegisterParam::inherit(const JASystem::TRegisterParam& other) { field_0x0[0] = 0; field_0x0[1] = 0; field_0x0[2] = 0; field_0x0[3] = 0; field_0x0[4] = 0; field_0x0[5] = 0; - field_0xc = param_1.field_0xc; - field_0xe = param_1.field_0xe; - field_0x1a = param_1.field_0x1a; + field_0xc = other.field_0xc; + field_0xe = other.field_0xe; + field_0x1a = other.field_0x1a; for (int i = 0; i < 5; i++) { - mPanPower[i] = param_1.mPanPower[i]; + mPanPower[i] = other.mPanPower[i]; } - field_0x20[0] = 0; - field_0x20[1] = 0; - field_0x20[2] = 0; - field_0x20[3] = 0; + mAddress[0] = 0; + mAddress[1] = 0; + mAddress[2] = 0; + mAddress[3] = 0; } /* 8027E3E0-8027E3EC .text getBankNumber__Q28JASystem14TRegisterParamCFv */ diff --git a/src/JSystem/JAudio/JASSeqParser.cpp b/src/JSystem/JAudio/JASSeqParser.cpp index 17e41d75b..909f00a65 100644 --- a/src/JSystem/JAudio/JASSeqParser.cpp +++ b/src/JSystem/JAudio/JASSeqParser.cpp @@ -212,14 +212,7 @@ int JASystem::TSeqParser::cmdCall(TTrack* track, u32* args) { /* 8027E90C-8027E9AC .text cmdRet__Q28JASystem10TSeqParserFPQ28JASystem6TTrackPUl */ int JASystem::TSeqParser::cmdRet(TTrack* track, u32* args) { if (conditionCheck(track, args[0])) { - u32 var1 = track->getSeq()->mLoopIndex; - bool tmp; - if (var1 == 0) { - tmp = false; - } else { - tmp = track->getSeq()->ret(); - } - if (!tmp) { + if (!track->getSeq()->ret()) { JUT_WARN(335, "%s", "cannot ret for call-stack is NULL"); return 3; } @@ -801,7 +794,7 @@ int JASystem::TSeqParser::cmdWait(TTrack* track, u8 flag) { val <<= 8; val |= track->getSeq()->readByte(); } - track->getSeq()->mWaitTimer = val; + track->getSeq()->wait(val); if (val != 0) { return 1; } else { diff --git a/src/JSystem/JAudio/JASTrack.cpp b/src/JSystem/JAudio/JASTrack.cpp index dffe5b0d6..53a951b69 100644 --- a/src/JSystem/JAudio/JASTrack.cpp +++ b/src/JSystem/JAudio/JASTrack.cpp @@ -193,7 +193,7 @@ void JASystem::TTrack::setInterrupt(u16 param_1) { /* 80280FA8-80281004 .text tryInterrupt__Q28JASystem6TTrackFv */ bool JASystem::TTrack::tryInterrupt() { - if (mSeqCtrl.mPreviousFilePtr) { + if (mSeqCtrl.isIntr()) { return false; } void* var1 = mIntrMgr.checkIntr(); @@ -415,7 +415,7 @@ void JASystem::TTrack::oscSetupFull(u8 param_1, u32 param_2, u32 param_3) { if (param_2 == 0) { field_0x2cc[r8].table = NULL; } - field_0x2cc[r8].table = (s16*)(mSeqCtrl.mRawFilePtr + param_2); + field_0x2cc[r8].table = (s16*)mSeqCtrl.getAddr(param_2); } if (!r10) { return; @@ -423,7 +423,7 @@ void JASystem::TTrack::oscSetupFull(u8 param_1, u32 param_2, u32 param_3) { if (param_3 == 0) { field_0x2cc[r8].rel_table = Player::sRelTable; } - field_0x2cc[r8].rel_table = (s16*)(mSeqCtrl.mRawFilePtr + param_3); + field_0x2cc[r8].rel_table = (s16*)mSeqCtrl.getAddr(param_3); } /* 802817E4-80281850 .text oscSetupSimpleEnv__Q28JASystem6TTrackFUcUl */ @@ -431,10 +431,10 @@ void JASystem::TTrack::oscSetupSimpleEnv(u8 param_1, u32 param_2) { switch (param_1) { case 0: field_0x2cc[0] = Player::sEnvelopeDef; - field_0x2cc[0].table = (s16*)(mSeqCtrl.mRawFilePtr + param_2); + field_0x2cc[0].table = (s16*)mSeqCtrl.getAddr(param_2); break; case 1: - field_0x2cc[0].rel_table = (s16*)(mSeqCtrl.mRawFilePtr + param_2); + field_0x2cc[0].rel_table = (s16*)mSeqCtrl.getAddr(param_2); break; } } @@ -990,7 +990,7 @@ int JASystem::TTrack::loadTbl(u32 param_1, u32 param_2, u32 param_3) { switch (param_3) { case 4: - return mSeqCtrl.mRawFilePtr[param_1 + param_2]; + return mSeqCtrl.getByte(param_1 + param_2); case 5: return mSeqCtrl.get16(param_1 + param_2 * 2); case 6: @@ -1020,13 +1020,13 @@ int JASystem::TTrack::exchangeRegisterValue(u8 target) { u32 JASystem::TTrack::readReg32(u8 target) { u32 result; switch(target) { - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - result = mRegisterParam.getAddress(target - 0x28); + case TRegisterParam::PARAM_REG_AR0: + case TRegisterParam::PARAM_REG_AR1: + case TRegisterParam::PARAM_REG_AR2: + case TRegisterParam::PARAM_REG_AR3: + result = mRegisterParam.getAddress(target - TRegisterParam::PARAM_REG_AR0); break; - case 0x23: + case TRegisterParam::PARAM_REG_XY: result = readReg16(0x4) << 16; result |= readReg16(0x5); break; @@ -1114,8 +1114,7 @@ void JASystem::TTrack::writeRegDirect(u8 target, u16 value) { /* 80283164-802836FC .text writeRegParam__Q28JASystem6TTrackFUc */ void JASystem::TTrack::writeRegParam(u8 param) { u8 curr_file_byte; - u8 bVar0; - u8 bVar1; + u8 target; u32 iVar1; u32 iVar2; @@ -1124,7 +1123,7 @@ void JASystem::TTrack::writeRegParam(u8 param) { s16 sVar0; s16 sVar1; - u32 extended_sVar1; + u32 r23; u32 tbl_return; switch (param & 0xF) { @@ -1133,13 +1132,13 @@ void JASystem::TTrack::writeRegParam(u8 param) { iVar2 = 11; break; case 10: - curr_file_byte = *mSeqCtrl.mCurrentFilePtr++; + curr_file_byte = mSeqCtrl.readByte(); iVar1 = curr_file_byte & 0xC; tbl_param_3 = (curr_file_byte >> 4) + 4; iVar2 = 10; break; case 9: - curr_file_byte = *mSeqCtrl.mCurrentFilePtr++; + curr_file_byte = mSeqCtrl.readByte(); iVar1 = curr_file_byte & 0xC; iVar2 = curr_file_byte & 0xF0; if (iVar1 == 8) { @@ -1152,25 +1151,23 @@ void JASystem::TTrack::writeRegParam(u8 param) { break; } - bVar0 = *mSeqCtrl.mCurrentFilePtr++; + target = mSeqCtrl.readByte(); if (iVar2 == 10) { - u8 next_file_byte = *mSeqCtrl.mCurrentFilePtr++; - tbl_param_1 = readReg32(next_file_byte); + tbl_param_1 = readReg32(mSeqCtrl.readByte()); } switch (iVar1) { case 0: - bVar1 = *mSeqCtrl.mCurrentFilePtr++; - sVar0 = readReg16(bVar1); + sVar0 = readReg16(mSeqCtrl.readByte()); break; case 4: - sVar0 = *mSeqCtrl.mCurrentFilePtr++; + sVar0 = mSeqCtrl.readByte(); break; case 12: sVar0 = mSeqCtrl.read16(); break; case 8: { - u32 byte = (u32) *mSeqCtrl.mCurrentFilePtr++; + u32 byte = mSeqCtrl.readByte(); if (byte & 0x80) { sVar0 = byte << 8; } else { @@ -1183,8 +1180,8 @@ void JASystem::TTrack::writeRegParam(u8 param) { break; } - sVar1 = readReg16(bVar0); - extended_sVar1 = sVar1; + sVar1 = readReg16(target); + r23 = sVar1; switch (iVar2) { case 0x0: @@ -1196,15 +1193,15 @@ void JASystem::TTrack::writeRegParam(u8 param) { sVar0 += sVar1; break; case 0x2: - extended_sVar1 *= sVar0; - writeRegDirect(4, JSUHiHalf(extended_sVar1)); - writeRegDirect(5, JSULoHalf(extended_sVar1)); + r23 *= sVar0; + writeRegDirect(4, JSUHiHalf(r23)); + writeRegDirect(5, JSULoHalf(r23)); return; case 0x3: mRegisterParam.setFlag(sVar1 - sVar0); return; case 0xB: - sVar0 = extended_sVar1 - (u32)sVar0; + sVar0 = r23 - (u32)sVar0; break; case 0x10: if (iVar1 == 4) { @@ -1250,56 +1247,54 @@ void JASystem::TTrack::writeRegParam(u8 param) { // Bug: reg_flags is uninitialized in several of these cases. u16 reg_flags; - switch (bVar0) { + switch (target) { case 0: case 1: case 2: { - u8 val3 = sVar0 & 0xFF; - sVar0 = val3; - reg_flags = Player::extend8to16(val3); + sVar0 = sVar0 & 0xFF; + reg_flags = Player::extend8to16(sVar0); break; } case 0x21: { u8 bank = mRegisterParam.getBankNumber(); sVar0 = (bank << 8) | (sVar0 & 0xFF); - bVar0 = 6; + target = 6; break; } case 0x20: sVar0 = mRegisterParam.getProgramNumber() | ((s16)sVar0 << 8); - bVar0 = 6; + target = 6; break; case 0x2E: sVar0 = (mRegisterParam.field_0x1a & 0xFF00) | (sVar0 & 0xFF); - bVar0 = 13; + target = 13; break; case 0x2F: { - s16 tmp = (mRegisterParam.field_0x1a & 0xFF); - sVar0 = tmp | (sVar0 << 8); - bVar0 = 13; + sVar0 = (s16)(mRegisterParam.field_0x1a & 0xFF) | (sVar0 << 8); + target = 13; break; } case 0x22: writeRegDirect(0, sVar0 >> 8); - bVar0 = 1; + target = 1; sVar0 = sVar0 & 0xFF; reg_flags = sVar0; break; - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - mRegisterParam.setAddress(bVar0 - 0x28, tbl_return); + case TRegisterParam::PARAM_REG_AR0: + case TRegisterParam::PARAM_REG_AR1: + case TRegisterParam::PARAM_REG_AR2: + case TRegisterParam::PARAM_REG_AR3: + mRegisterParam.setAddress(target - TRegisterParam::PARAM_REG_AR0, tbl_return); return; default: reg_flags = sVar0; break; } - mRegisterParam.field_0x0[bVar0] = sVar0; + mRegisterParam.field_0x0[target] = sVar0; mRegisterParam.setFlag(reg_flags); - switch (bVar0) { + switch (target) { case 6: for (s32 i = 0; i < (s32)ARRAY_SIZE(mOscRoute); i++) { mOscRoute[i] = 0xF; diff --git a/src/JSystem/JAudio/JASTrackInterrupt.cpp b/src/JSystem/JAudio/JASTrackInterrupt.cpp index 438a86624..6cc78ded7 100644 --- a/src/JSystem/JAudio/JASTrackInterrupt.cpp +++ b/src/JSystem/JAudio/JASTrackInterrupt.cpp @@ -36,7 +36,6 @@ void JASystem::TIntrMgr::setIntr(u32 param_1, void* param_2) { /* 802841A0-802841B8 .text resetInter__Q28JASystem8TIntrMgrFUl */ void JASystem::TIntrMgr::resetInter(u32 param_1) { - /* Nonmatching */ field_0x2 &= ~(1 << param_1); } diff --git a/src/JSystem/JAudio/JASTrackPort.cpp b/src/JSystem/JAudio/JASTrackPort.cpp index 150a5d8a9..c7f51b0aa 100644 --- a/src/JSystem/JAudio/JASTrackPort.cpp +++ b/src/JSystem/JAudio/JASTrackPort.cpp @@ -12,7 +12,6 @@ const u32 MAX_PORTS = 16; /* 802842A8-802842E8 .text init__Q28JASystem10TTrackPortFv */ void JASystem::TTrackPort::init() { - /* Nonmatching */ for (int i = 0; i < 16; i++) { mImportFlag[i] = 0; mExportFlag[i] = 0; diff --git a/src/JSystem/JAudio/dsptask.c b/src/JSystem/JAudio/dsptask.c index 02193e2bd..98640c569 100644 --- a/src/JSystem/JAudio/dsptask.c +++ b/src/JSystem/JAudio/dsptask.c @@ -19,7 +19,7 @@ void DspHandShake(void* param_1) { Dsp_Running_Start(); } -static u8 jdsp[] = { +static u8 jdsp[] ATTRIBUTE_ALIGN(32) = { 0x02, 0x9F, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0x9F, 0x05, 0xB8, 0x02, 0x9F, 0x00, 0x4E, 0x12, 0x05, 0x02, 0xBF, 0x00, 0x57, 0x81, 0x00, 0x00, 0x9F, 0x10, 0x00, diff --git a/src/JSystem/JKernel/JKRAramHeap.cpp b/src/JSystem/JKernel/JKRAramHeap.cpp index 0c881beaa..69c47c6f4 100644 --- a/src/JSystem/JKernel/JKRAramHeap.cpp +++ b/src/JSystem/JKernel/JKRAramHeap.cpp @@ -52,7 +52,7 @@ JKRAramBlock* JKRAramHeap::alloc(u32 size, JKRAramHeap::EAllocMode allocationMod /* 802B55D8-802B5660 .text allocFromHead__11JKRAramHeapFUl */ JKRAramBlock* JKRAramHeap::allocFromHead(u32 size) { u32 alignedSize = ALIGN_NEXT(size, 0x20); - u32 bestFreeSize = UINT32_MAX; + u32 bestFreeSize = UINT_MAX; JKRAramBlock* bestBlock = NULL; JSUList* list = &sAramList; diff --git a/src/JSystem/JStage/JSGCamera.cpp b/src/JSystem/JStage/JSGCamera.cpp index cb668dfaf..8a904524d 100644 --- a/src/JSystem/JStage/JSGCamera.cpp +++ b/src/JSystem/JStage/JSGCamera.cpp @@ -37,7 +37,7 @@ void JStage::TCamera::JSGSetProjectionNear(f32) { /* 8026DD94-8026DD9C .text JSGGetProjectionFar__Q26JStage7TCameraCFv */ f32 JStage::TCamera::JSGGetProjectionFar() const { - return FLOAT_MAX; + return FLT_MAX; } /* 8026DD9C-8026DDA0 .text JSGSetProjectionFar__Q26JStage7TCameraFf */ diff --git a/src/JSystem/JStage/JSGFog.cpp b/src/JSystem/JStage/JSGFog.cpp index 755033771..adb404a99 100644 --- a/src/JSystem/JStage/JSGFog.cpp +++ b/src/JSystem/JStage/JSGFog.cpp @@ -37,7 +37,7 @@ void JStage::TFog::JSGSetStartZ(f32) { /* 8026DE70-8026DE78 .text JSGGetEndZ__Q26JStage4TFogCFv */ f32 JStage::TFog::JSGGetEndZ() const { - return FLOAT_MAX; + return FLT_MAX; } /* 8026DE78-8026DE7C .text JSGSetEndZ__Q26JStage4TFogFf */ diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/limits b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/limits index 88c1d0a72..4a08271ab 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/limits +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/limits @@ -1,6 +1,9 @@ #ifndef MSL_LIMITS #define MSL_LIMITS +#include +#include + namespace std { template class numeric_limits { @@ -65,6 +68,15 @@ public: inline static unsigned long max() { return 0xFFFFFFFF; } }; +template <> +class numeric_limits { +public: + inline static float min() { return FLT_MIN; } + inline static float max() { return FLT_MAX; } + inline static float epsilon() { return FLT_EPSILON; } + inline static float signaling_NaN(); +}; + } // namespace std #endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/climits b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/climits new file mode 100644 index 000000000..bae336179 --- /dev/null +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/climits @@ -0,0 +1,37 @@ +#ifndef _MSL_CLIMITS_H +#define _MSL_CLIMITS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define CHAR_BIT 8 + +#define SCHAR_MIN (-0x7F - 1) +#define SCHAR_MAX 0x7F +#define UCHAR_MAX 0xFF + +#define CHAR_MIN 0 +#define CHAR_MAX SCHAR_MAX + +#define SHRT_MIN (-0x7FFF - 1) +#define SHRT_MAX 0x7FFF +#define USHRT_MAX 0xFFFF + +#define INT_MIN (-0x7FFFFFFF - 1) +#define INT_MAX 0x7FFFFFFF +#define UINT_MAX 0xFFFFFFFF + +#define LONG_MIN (-0x7FFFFFFFL - 1) +#define LONG_MAX 0x7FFFFFFFL +#define ULONG_MAX 0xFFFFFFFFUL + +#define LLONG_MIN (-0x7FFFFFFFFFFFFFFFLL - 1) +#define LLONG_MAX 0x7FFFFFFFFFFFFFFFLL +#define ULLONG_MAX 0xFFFFFFFFFFFFFFFFULL + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h index 0f271e4c7..6d0199a3f 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/float.h @@ -75,8 +75,9 @@ inline int __fpclassifyd(double __value) { #define FLT_MAX_EXP 128 #define FLT_MAX_10_EXP 38 -#define FLT_MAX (*(float*) __float_max) -#define FLT_EPSILON (*(float*) __float_epsilon) +#define FLT_MIN 1.175494351e-38f +#define FLT_MAX 3.40282346638528860e+38f +#define FLT_EPSILON 1.1920929e-7f #define DBL_MANT_DIG 53 #define DBL_DIG 15 diff --git a/src/SSystem/SComponent/c_m3d_g_sph.cpp b/src/SSystem/SComponent/c_m3d_g_sph.cpp index 4a07cde47..07f52360c 100644 --- a/src/SSystem/SComponent/c_m3d_g_sph.cpp +++ b/src/SSystem/SComponent/c_m3d_g_sph.cpp @@ -6,7 +6,6 @@ #include "SSystem/SComponent/c_m3d_g_sph.h" #include "SSystem/SComponent/c_m3d.h" #include "JSystem/JUtility/JUTAssert.h" -#include "float.h" #define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f); #define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f) diff --git a/src/d/actor/d_a_arrow.cpp b/src/d/actor/d_a_arrow.cpp index 53a4f5707..fee0ccb99 100644 --- a/src/d/actor/d_a_arrow.cpp +++ b/src/d/actor/d_a_arrow.cpp @@ -300,7 +300,7 @@ void daArrow_c::arrowShooting() { clrAtHitNormal(); setAtHitPosBuff(&end); - mNearestHitDist = FLOAT_MAX; + mNearestHitDist = FLT_MAX; } /* 800D4D98-800D4DC0 .text arrowUseMp__9daArrow_cFv */ diff --git a/src/d/actor/d_a_npc_nz.cpp b/src/d/actor/d_a_npc_nz.cpp index 30e4625ce..fae827998 100644 --- a/src/d/actor/d_a_npc_nz.cpp +++ b/src/d/actor/d_a_npc_nz.cpp @@ -825,7 +825,7 @@ bool daNpc_Nz_c::_execute() { TailControl(); mAcch.CrrPos(*dComIfG_Bgsp()); mpBait = NULL; - field_0x910 = FLOAT_MAX; + field_0x910 = FLT_MAX; setMtx(); return false; diff --git a/src/d/actor/d_a_npc_nz_cut.inc b/src/d/actor/d_a_npc_nz_cut.inc index 22acae4dd..018093661 100644 --- a/src/d/actor/d_a_npc_nz_cut.inc +++ b/src/d/actor/d_a_npc_nz_cut.inc @@ -197,7 +197,7 @@ void daNpc_Nz_c::cutEatesaProc() { if(pBait) { fopAcM_delete(pBait); mpBait = NULL; - field_0x910 = FLOAT_MAX; + field_0x910 = FLT_MAX; } else { if(mpMorf->checkFrame(mpMorf->getEndFrame() - 1.0f)) { diff --git a/src/d/actor/d_a_obj_YLzou.cpp b/src/d/actor/d_a_obj_YLzou.cpp index ca8eacb61..8b0c66d64 100644 --- a/src/d/actor/d_a_obj_YLzou.cpp +++ b/src/d/actor/d_a_obj_YLzou.cpp @@ -6,7 +6,6 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_obj_YLzou.h" #include "res/Object/YLzou.h" -#include "limits.h" enum YLzouAction { /* 0x00 */ ACTION_MOVE_YLZOU_DEMO_START_WAIT = 0x00, diff --git a/src/d/actor/d_a_obj_barrel2.cpp b/src/d/actor/d_a_obj_barrel2.cpp index dfc404651..e483e9f29 100644 --- a/src/d/actor/d_a_obj_barrel2.cpp +++ b/src/d/actor/d_a_obj_barrel2.cpp @@ -279,7 +279,7 @@ cPhs_State daObjBarrel2::Act_c::_create() { &sp24, prm_get_coming() ? 1 : 0 ); - m45C = FLOAT_MAX; + m45C = FLT_MAX; m468 = 0; m470 = 0; m460 = fpcM_ERROR_PROCESS_ID_e; @@ -763,7 +763,7 @@ void daObjBarrel2::Act_c::set_item_position() { raceItem->startOffsetPos(); m45C = fopAcM_searchPlayerDistance2(raceItem); } else { - m45C = FLOAT_MAX; + m45C = FLT_MAX; } } @@ -777,7 +777,7 @@ void daObjBarrel2::Act_c::item_drop_init(float arg1) { raceItem->endOffsetPos(-7.0f, &sp08, arg1, 0.0f, (csXyz*)&csXyz::Zero); m45C = fopAcM_searchPlayerDistance2(raceItem); } else { - m45C = FLOAT_MAX; + m45C = FLT_MAX; } } @@ -786,7 +786,7 @@ void daObjBarrel2::Act_c::item_drop() { if (M_tmp_item_actor != NULL) { m45C = fopAcM_searchPlayerDistance2(M_tmp_item_actor); } else { - m45C = FLOAT_MAX; + m45C = FLT_MAX; } } diff --git a/src/d/actor/d_a_obj_movebox.cpp b/src/d/actor/d_a_obj_movebox.cpp index 83fb6478c..84bb6128b 100644 --- a/src/d/actor/d_a_obj_movebox.cpp +++ b/src/d/actor/d_a_obj_movebox.cpp @@ -105,7 +105,7 @@ Bgc_c::Bgc_c() { } mMaxGroundIdx = -1; mWallIdx = -1; - mNearestWallDist = FLOAT_MAX; + mNearestWallDist = FLT_MAX; mWaterY = 0.0f; mStateFlags = (State_e)0; } @@ -163,7 +163,7 @@ void Bgc_c::wall_pos(const Act_c* movebox, const BgcSrc_c* bgcSrc, int bgcSrcCou const s16 angle = movebox->home.angle.y + param_4; mWallIdx = -1; - mNearestWallDist = FLOAT_MAX; + mNearestWallDist = FLT_MAX; mDoMtx_stack_c::YrotS(angle); mDoMtx_stack_c::XrotM(0x4000); mDoMtx_stack_c::multVec(&cXyz::BaseY, &temp_20); diff --git a/src/d/actor/d_a_ship.cpp b/src/d/actor/d_a_ship.cpp index f76e4ca02..351f8d28f 100644 --- a/src/d/actor/d_a_ship.cpp +++ b/src/d/actor/d_a_ship.cpp @@ -999,7 +999,7 @@ BOOL daShip_c::checkOutRange() { } } - f32 minDist = FLOAT_MAX; + f32 minDist = FLT_MAX; for (int i = 0; i < path->m_num; pnt++, i++) { f32 dx = current.pos.x - pnt->m_position.x; diff --git a/src/d/actor/d_a_ykgr.cpp b/src/d/actor/d_a_ykgr.cpp index 9c6db6687..ee7911045 100644 --- a/src/d/actor/d_a_ykgr.cpp +++ b/src/d/actor/d_a_ykgr.cpp @@ -92,7 +92,7 @@ f32 daYkgr_c::getPosRate() { return 0.0f; } - f32 fVar4 = FLOAT_MAX; + f32 fVar4 = FLT_MAX; fopAc_ac_c* player = dComIfGp_getPlayer(0); cXyz sp30 = player->current.pos; dPnt* pdVar7 = m_path->m_points; diff --git a/src/d/d_attention.cpp b/src/d/d_attention.cpp index aa96d1bca..8a53d0a23 100644 --- a/src/d/d_attention.cpp +++ b/src/d/d_attention.cpp @@ -437,14 +437,14 @@ void dAttention_c::initList(u32 flagMask) { for (i = 0; i < (s32)ARRAY_SIZE(mLockOnList); i++) { mLockOnList[i].setActor(NULL); - mLockOnList[i].mWeight = FLOAT_MAX; + mLockOnList[i].mWeight = FLT_MAX; } mLockOnOffset = 0; mLockonCount = 0; for (i = 0; i < (s32)ARRAY_SIZE(mActionList); i++) { mActionList[i].setActor(NULL); - mActionList[i].mWeight = FLOAT_MAX; + mActionList[i].mWeight = FLT_MAX; } mActionOffset = 0; mActionCount = 0; diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index 2d1a33a48..7898798e9 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -17,8 +17,8 @@ dDemo_actor_c::dDemo_actor_c() { mScale.setall(1.0f); mRotate.setall(0); mModel = NULL; - mAnmFrameMax = FLOAT_MAX; - mTexAnimationFrameMax = FLOAT_MAX; + mAnmFrameMax = FLT_MAX; + mTexAnimationFrameMax = FLT_MAX; } /* 80069330-800693C0 .text __dt__13dDemo_actor_cFv */ @@ -238,7 +238,7 @@ void dDemo_actor_c::JSGSetShape(u32 id) { /* 80069CA4-80069CC0 .text JSGSetAnimation__13dDemo_actor_cFUl */ void dDemo_actor_c::JSGSetAnimation(u32 no) { mAnmId = no; - mAnmFrameMax = FLOAT_MAX; + mAnmFrameMax = FLT_MAX; onEnable(ENABLE_ANM_e); } diff --git a/src/d/d_envse.cpp b/src/d/d_envse.cpp index 843bf5fee..02507a3e9 100644 --- a/src/d/d_envse.cpp +++ b/src/d/d_envse.cpp @@ -25,7 +25,7 @@ void dEnvSe_getNearPathPos(cXyz* r30, cXyz* r31, dPath* r26) { BOOL spc[2] = {FALSE, FALSE}; cXyz sp30[2]; f32 sp8; - f32 f31 = FLOAT_MAX; + f32 f31 = FLT_MAX; dPnt* point = r26->m_points; cM3dGLin lin; @@ -94,7 +94,7 @@ BOOL dEnvSe_c::execute() { } mDoAud_seaEnvSePlay(sound_data->field_0x14); } else if (sound_data->field_0x17 == 1) { - f32 f31 = FLOAT_MAX; + f32 f31 = FLT_MAX; int r27; mPos = sp2c; path = dPath_GetRoomPath(sound_data->field_0x18, roomNo); @@ -131,7 +131,7 @@ BOOL dEnvSe_c::execute() { } mDoAud_riverSePlay(sound_data->field_0x14, dComIfGp_getReverb(roomNo)); } else if (sound_data->field_0x17 == 3) { - f32 f31 = FLOAT_MAX; + f32 f31 = FLT_MAX; mPos = sp2c; path = dPath_GetRoomPath(sound_data->field_0x18, roomNo); while (path != NULL) { diff --git a/src/d/d_map.cpp b/src/d/d_map.cpp index e5b6a46d4..6a4c7f43c 100644 --- a/src/d/d_map.cpp +++ b/src/d/d_map.cpp @@ -361,7 +361,7 @@ u8 dMap_GetFloorNoForDmap(dStage_dt_c* stag, int param_2, f32 param_3) { } if (!var3) { - f32 var1 = FLOAT_MAX; + f32 var1 = FLT_MAX; floorData = floor->m_entries; for (int i = 0; i < floor->num; i++, floorData++) { diff --git a/src/d/d_vibration.cpp b/src/d/d_vibration.cpp index 1a743b6ff..4ecdfdc08 100644 --- a/src/d/d_vibration.cpp +++ b/src/d/d_vibration.cpp @@ -151,7 +151,7 @@ int dVibration_c::Run() { loopLen = mMotor.mQuake.mLength; pattern = rollshift(mMotor.mQuake.mPattern, loopLen, mFrameIdx); pattern |= randombit(mMotor.mQuake.mRounds, loopLen); - mMotor.mQuake.mStopFrame = INT32_MAX; + mMotor.mQuake.mStopFrame = INT_MAX; pBuf = makedata(data, pattern, loopLen); g_mDoCPd_gamePad[0]->startMotorWave(pBuf, JUTGamePad::CRumble::LOOP_FOREVER, 60); break; diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 659cd18fb..76373a4d3 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -970,7 +970,7 @@ void blockenc(u8* block) { color_1_idx = 0; // r16 if (color_num > 1) { r23 = 0; - r18 = INT32_MAX; + r18 = INT_MAX; for (; r23 < color_num*3 - 3; r23 += 3) { c0[0] = colors[r23+0] * 30; c0[1] = colors[r23+1] * 59; @@ -993,7 +993,7 @@ void blockenc(u8* block) { color_mags[3] = COLOR_SQUARE_MAG(c3[0], c3[1], c3[2], block[offs2+0] * 30, block[offs2+1] * 59, block[offs2+2] * 11); r5 = 0; - u32 r6_r25 = INT32_MAX; + u32 r6_r25 = INT_MAX; for (; r5 < 4; r5++) { if (color_mags[r5] < r6_r25) { r6_r25 = color_mags[r5]; @@ -1051,7 +1051,7 @@ void blockenc(u8* block) { color_mags[3] = COLOR_SQUARE_MAG(c3[0], c3[1], c3[2], block[offs1+0] * 30, block[offs1+1] * 59, block[offs1+2] * 11); r5 = r24 = 0; - u32 r6_r25 = INT32_MAX; + u32 r6_r25 = INT_MAX; for (; r5 < 4; r5++) { if (color_mags[r5] < r6_r25) { r6_r25 = color_mags[r5]; @@ -1089,7 +1089,7 @@ void blockenc(u8* block) { // color_1_idx = 0; // r16 if (color_num > 1) { r23 = 0; - r18 = INT32_MAX; + r18 = INT_MAX; for (; r23 < color_num*3 - 3; r23 += 3) { c0[0] = colors[r23+0] * 30; c0[1] = colors[r23+1] * 59; @@ -1109,7 +1109,7 @@ void blockenc(u8* block) { color_mags[2] = COLOR_SQUARE_MAG(c2[0], c2[1], c2[2], block[offs2+0] * 30, block[offs2+1] * 59, block[offs2+2] * 11); r5 = 0; - u32 r6_r25 = INT32_MAX; + u32 r6_r25 = INT_MAX; for (; r5 < 3; r5++) { if (color_mags[r5] < r6_r25) { r6_r25 = color_mags[r5]; @@ -1171,7 +1171,7 @@ void blockenc(u8* block) { color_mags[2] = COLOR_SQUARE_MAG(c2[0], c2[1], c2[2], block[offs2+0] * 30, block[offs2+1] * 59, block[offs2+2] * 11); r24 = r5 = 0; - u32 r6_r25 = INT32_MAX; + u32 r6_r25 = INT_MAX; for (; r24 < 3; r24++) { if (color_mags[r24] < r6_r25) { r6_r25 = color_mags[r24];