mirror of
https://github.com/zeldaret/tww.git
synced 2026-10-27 19:22:28 -04:00
Work on JAS inlines, fix limits/climits headers
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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; }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define RANDOM_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include <limits>
|
||||
|
||||
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<f32>::epsilon());
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace JMath
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 <stddef.h> // IWYU pragma: export
|
||||
#include <stdint.h> // IWYU pragma: export
|
||||
#include <limits.h> // IWYU pragma: export
|
||||
#include <float.h> // IWYU pragma: export
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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++;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ JKRHeap* JASystem::TBank::sCurrentHeap;
|
||||
|
||||
/* 80284548-8028455C .text getCurrentHeap__Q28JASystem5TBankFv */
|
||||
JKRHeap* JASystem::TBank::getCurrentHeap() {
|
||||
/* Nonmatching */
|
||||
if (sCurrentHeap) {
|
||||
return sCurrentHeap;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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_<JMath::TRandom_fast_> oRandom(0);
|
||||
f32 tmp = oRandom.get_float(2.0f);
|
||||
tmp *= mWidth;
|
||||
return tmp + mBase;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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<JKRAramBlock>* list = &sAramList;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef MSL_LIMITS
|
||||
#define MSL_LIMITS
|
||||
|
||||
#include <climits>
|
||||
#include <float.h>
|
||||
|
||||
namespace std {
|
||||
template <typename T>
|
||||
class numeric_limits {
|
||||
@@ -65,6 +68,15 @@ public:
|
||||
inline static unsigned long max() { return 0xFFFFFFFF; }
|
||||
};
|
||||
|
||||
template <>
|
||||
class numeric_limits<float> {
|
||||
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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -300,7 +300,7 @@ void daArrow_c::arrowShooting() {
|
||||
|
||||
clrAtHitNormal();
|
||||
setAtHitPosBuff(&end);
|
||||
mNearestHitDist = FLOAT_MAX;
|
||||
mNearestHitDist = FLT_MAX;
|
||||
}
|
||||
|
||||
/* 800D4D98-800D4DC0 .text arrowUseMp__9daArrow_cFv */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
+3
-3
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -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) {
|
||||
|
||||
+1
-1
@@ -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++) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user