This commit is contained in:
TakaRikka
2026-03-30 02:21:28 -07:00
48 changed files with 2563 additions and 1046 deletions
+2 -2
View File
@@ -18,10 +18,10 @@ public:
SpkTable(void);
void setResource(void* res);
inline s32 getName(s32 num) {
inline const char* getName(s32 num) {
JUT_ASSERT(0x35, num >= 0);
JUT_ASSERT(0x36, num < mNumOfSound);
return *(mDataOffsets + num);
return (const char*)*(mDataOffsets + num);
}
inline s32 getNumOfSound() const { return mNumOfSound; }
inline bool isValid(void) const { return mIsInitialized; }
+1 -1
View File
@@ -19,7 +19,7 @@ public:
static SpkSoundHandle* getHandleSoundID(s32 soundNum);
static SpkSoundHandle* start(s32 id, s32 chan);
static SpkSoundHandle* startLevel(s32 id, s32 chan);
static s32 getName(s32 num);
static const char* getName(s32 num);
static s32 getNumOfSound(void);
static void stopAll(s32 chan, s32 msec);
static void stop(s32 chan);
+22 -32
View File
@@ -3,6 +3,7 @@
#include "JSystem/JAWExtSystem/JAWWindow.h"
#include "JSystem/JAudio2/JAISoundHandles.h"
#include "JSystem/JAudio2/JAUSoundTable.h"
class Z2SoundPlayer : public JAWWindow {
public:
@@ -24,43 +25,32 @@ public:
virtual void onKeyRight(const JUTGamePad&);
u32 getCursorMoveMax(const JUTGamePad&);
int getMenuNumberMax();
void correctSeNumber();
/* 0x3ED */ u8 field_0x3ed;
/* 0x3EE */ u8 field_0x3ee;
/* 0x3EF */ u8 field_0x3ef;
/* 0x3F0 */ u8 field_0x3f0;
/* 0x3F4 */ const char* field_0x3f4;
/* 0x3F8 */ short field_0x3f8;
/* 0x3FA */ short field_0x3fa;
/* 0x3FC */ short field_0x3fc;
/* 0x3FE */ short field_0x3fe;
/* 0x400 */ short field_0x400;
/* 0x402 */ short field_0x402;
/* 0x404 */ const char* field_0x404;
/* 0x408 */ const char* field_0x408;
/* 0x40C */ const char* field_0x40c;
/* 0x410 */ const char* field_0x410;
/* 0x414 */ const char* field_0x414;
/* 0x418 */ const char* field_0x418;
/* 0x41C */ const char* field_0x41c;
/* 0x420 */ const char* field_0x420;
/* 0x424 */ const char* field_0x424;
/* 0x428 */ const char* field_0x428;
/* 0x42C */ const char* field_0x42c;
/* 0x430 */ const char* field_0x430;
/* 0x434 */ const char* field_0x434;
/* 0x438 */ const char* field_0x438;
/* 0x43C */ const char* field_0x43c;
/* 0x440 */ const char* field_0x440;
/* 0x444 */ short field_0x444;
void onDrawSoundItem(JAWGraphContext*, JAUSoundNameTable*, int, const JUtility::TColor&, const JUtility::TColor&, const char*, u32, u32, u32);
/* 0x3ED */ bool field_0x3ed;
/* 0x3EE */ bool field_0x3ee;
/* 0x3EF */ bool field_0x3ef;
/* 0x3F0 */ bool field_0x3f0;
/* 0x3F4 */ const char* m_name;
/* 0x3F8 */ s16 field_0x3f8;
/* 0x3FA */ s16 field_0x3fa;
/* 0x3FC */ s16 field_0x3fc;
/* 0x3FE */ s16 field_0x3fe;
/* 0x400 */ s16 field_0x400;
/* 0x402 */ s16 m_portNum;
/* 0x404 */ const char* m_portNames[16];
/* 0x444 */ s16 m_portVal;
/* 0x446 */ u8 field_0x446;
/* 0x448 */ short* field_0x448[7];
/* 0x464 */ int field_0x464;
/* 0x468 */ int field_0x468;
/* 0x448 */ s16* field_0x448[7];
/* 0x464 */ u32 m_cursorY;
/* 0x468 */ int m_cursorMax;
/* 0x46C */ JAISoundHandle field_0x46c[8];
/* 0x48C */ JAISoundHandles field_0x48c;
/* 0x494 */ JAISoundHandle field_0x494;
/* 0x498 */ JAISoundHandle* field_0x498;
/* 0x498 */ JAISoundHandle* mp_subBgmHandle;
/* 0x49C */ JAISoundHandle field_0x49c;
/* 0x4A0 */ int field_0x4a0;
/* 0x4A4 */ f32 field_0x4a4;
+29
View File
@@ -2,10 +2,39 @@
#define Z2WAVEARCLOADER_H
#include "JSystem/JAWExtSystem/JAWWindow.h"
#include "JSystem/JAudio2/JASWaveArcLoader.h"
#include "JSystem/JAudio2/JASWaveInfo.h"
class Z2WaveArcLoader : public JAWWindow {
public:
Z2WaveArcLoader();
virtual ~Z2WaveArcLoader();
virtual void onDraw(JAWGraphContext*);
void checkWaveBank();
void checkWaveArc();
virtual void onKeyUp(const JUTGamePad&);
virtual void onKeyDown(const JUTGamePad&);
virtual void onKeyLeft(const JUTGamePad&);
virtual void onKeyRight(const JUTGamePad&);
virtual void onTrigA(const JUTGamePad&);
virtual void onTrigB(const JUTGamePad&);
virtual void onTrigZ(const JUTGamePad&);
/* 0x3F0 */ JASWaveBank* mpWaveBank;
/* 0x3F4 */ JASWaveArc* mpWaveArc;
/* 0x3F8 */ u32 mWaveUsedSize;
/* 0x3FC */ int mTotalUsedSize;
/* 0x400 */ u8 mBankNo;
/* 0x404 */ u32 mArcCount;
/* 0x408 */ u32 field_0x408;
/* 0x40C */ u32 field_0x40c;
/* 0x410 */ u32 field_0x410;
/* 0x414 */ u8 field_0x414;
/* 0x415 */ u8 field_0x415;
/* 0x416 */ bool mIsLoadTail;
};
#endif /* Z2WAVEARCLOADER_H */
+11 -11
View File
@@ -50,30 +50,30 @@ public:
int create();
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ mDoExt_McaMorfSO* mpModelMorf;
/* 0x5B4 */ mDoExt_McaMorfSO* mAnm_p;
/* 0x5B8 */ Z2CreatureEnemy mSound;
/* 0x65C */ cXyz field_0x65c;
/* 0x668 */ csXyz field_0x668;
/* 0x66E */ csXyz field_0x66e;
/* 0x65C */ cXyz mHomePos;
/* 0x668 */ csXyz mTargetWallAngle;
/* 0x66E */ csXyz mWallAngle;
/* 0x674 */ f32 mDownColor;
/* 0x678 */ f32 mBodyScale;
/* 0x67C */ int mAction;
/* 0x680 */ int mMode;
/* 0x684 */ u32 mShadowId;
/* 0x688 */ s16 mTargetAngle;
/* 0x68A */ s16 mTargetStep;
/* 0x68C */ u8 mMoveWaitTimer;
/* 0x68A */ s16 mStepAngle;
/* 0x68C */ u8 mWaitTimer;
/* 0x68E */ s16 mInvulnerabilityTimer;
/* 0x690 */ u8 field_0x690;
/* 0x691 */ u8 field_0x691;
/* 0x692 */ u8 mSwbit;
/* 0x694 */ dBgS_AcchCir mAcchCir;
/* 0x690 */ u8 mIsReturnHome;
/* 0x691 */ u8 arg0;
/* 0x692 */ u8 bitSw;
/* 0x694 */ dBgS_AcchCir mBgc;
/* 0x6D4 */ dBgS_ObjAcch mAcch;
/* 0x8AC */ dCcD_Stts mCcStts;
/* 0x8E8 */ dCcD_Sph mCcSph;
/* 0xA20 */ dCcD_Sph mCcBokkuriSph;
/* 0xB58 */ dCcU_AtInfo mAtInfo;
/* 0xB7C */ u8 mHIOInit;
/* 0xB7C */ u8 mHioSet;
};
STATIC_ASSERT(sizeof(daE_WS_c) == 0xb80);
+1 -1
View File
@@ -77,7 +77,7 @@ public:
int CreateHeap();
int Delete();
int Execute();
void Draw();
int Draw();
static BOOL createHeapCallBack(fopAc_ac_c*);
static BOOL ctrlJointCallBack(J3DJoint*, int);
bool getType();
+1 -4
View File
@@ -321,6 +321,7 @@ int dMeter2Info_setNewLetterSender();
bool dMeter2Info_isItemOpenCheck();
bool dMeter2Info_isMapOpenCheck();
s16 dMeter2Info_getNowLifeGauge();
bool dMeter2Info_isNextStage(const char*, s16, s16, s16);
#if WIDESCREEN_SUPPORT
void dMeter2Info_onWide2D();
@@ -844,10 +845,6 @@ inline void dMeter2Info_onTempBit(int i_bit) {
g_meter2_info.onTempBit(i_bit);
}
inline bool dMeter2Info_isNextStage(const char*, s16, s16, s16) {
return false;
}
inline void dMeter2Info_setFloatingMessage(u16 i_msgID, s16 i_msgTimer, bool i_wakuVisible) {
g_meter2_info.setFloatingMessage(i_msgID, i_msgTimer, i_wakuVisible);
}
+4
View File
@@ -562,6 +562,10 @@ inline void dMsgObject_setOffering(u16 i_num) {
dComIfGs_setEventReg(0xF8FF, i_num & 0xFF);
}
inline void dMsgObject_setLetterNameID(u16 id) {
dMsgObject_getMsgObjectClass()->setLetterNameID(id);
}
class dMsgObject_HowlHIO_c {
public:
dMsgObject_HowlHIO_c();
+1 -1
View File
@@ -20,7 +20,7 @@ struct dPath {
/* 0x2 */ BE(u16) m_nextID;
/* 0x4 */ u8 field_0x4;
/* 0x5 */ bool m_closed;
/* 0x6 */ u8 field_0x6;
/* 0x6 */ u8 swbit;
/* 0x7 */ u8 field_0x7;
/* 0x8 */ OFFSET_PTR(dPnt) m_points;
};
+1 -1
View File
@@ -267,7 +267,7 @@ struct dStage_MemoryConfig_c {
// PATH / RPAT
struct dPath;
struct dStage_dPath_c {
/* 0x0 */ BE(int) m_num;
/* 0x0 */ BE(int) num;
/* 0x4 */ OFFSET_PTR(dPath) m_path;
};
+13 -3
View File
@@ -47,18 +47,21 @@ class dVibTest_c : public JORReflexible {
public:
dVibTest_c();
void Init();
void setDefault();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual ~dVibTest_c() {}
virtual ~dVibTest_c();
/* 0x04 */ s8 field_0x4;
/* 0x04 */ s8 id;
/* 0x06 */ u16 m_pattern;
/* 0x08 */ u16 m_pattern2;
/* 0x0A */ u16 field_0xa;
/* 0x0C */ s16 m_randombit;
/* 0x0E */ s16 m_length;
/* 0x10 */ int field_0x10;
/* 0x14 */ int m_vibswitch;
/* 0x14 */ s32 m_vibswitch;
/* 0x18 */ u16 m_displayDbg;
};
@@ -82,6 +85,10 @@ public:
void Pause();
void Remove();
#if DEBUG
int testShake();
#endif
static const vib_pattern MS_patt[VIBMODE_S_MAX];
static const vib_pattern CS_patt[VIBMODE_S_MAX];
static const vib_pattern MQ_patt[VIBMODE_Q_MAX];
@@ -123,4 +130,7 @@ private:
/* 0x8C */ s32 mMode;
}; // Size: 0x90
extern const char* shock_names[VIBMODE_S_MAX];
extern const char* quake_names[VIBMODE_Q_MAX];
#endif /* D_D_VIBRATION_H */
+1 -1
View File
@@ -61,7 +61,7 @@ public:
static f32 getAnalogR(u32 pad) { return getCpadInfo(pad).mTriggerRight; }
static f32 getAnalogL(u32 pad) { return getCpadInfo(pad).mTriggerLeft; }
static BOOL isConnect(u32 pad) { return JUTGamePad::getPortStatus((JUTGamePad::EPadPort)pad) == 0; }
static void startMotorWave(u32 pad, void* data, JUTGamePad::CRumble::ERumble rumble, u32 length) {
static void startMotorWave(u32 pad, u8* data, JUTGamePad::CRumble::ERumble rumble, u32 length) {
m_gamePad[pad]->startMotorWave(data, rumble, length);
}
static void stopMotor(u32 pad) { m_gamePad[pad]->stopMotor(); }
@@ -24,6 +24,15 @@ public:
void setGXforPrint();
void setGXforDraw();
void color(const JUtility::TColor& color0, const JUtility::TColor& color1) {
color(color0, color1, color0, color1);
}
void lineWidth(u8 width) {
field_0x16 = width;
GXSetLineWidth(field_0x16, GX_TO_ZERO);
}
/* 0x00 */ J2DPrint* field_0x0;
/* 0x04 */ JUtility::TColor field_0x4;
/* 0x08 */ JUtility::TColor field_0x8;
@@ -16,8 +16,8 @@ public:
y = i_y;
}
/* 0x00*/ int x;
/* 0x04*/ int y;
/* 0x00 */ int x;
/* 0x04 */ int y;
};
class JAWWindow {
@@ -29,9 +29,9 @@ public:
virtual void drawSelf(f32, f32);
virtual void drawSelf(f32, f32, Mtx*);
/* 0x0FC */ JAWGraphContext field_0xfc;
/* 0x0FC */ JAWGraphContext m_graf;
/* 0x118 */ JAWWindow* m_pParent;
/* 0x11C */ JUTPoint field_0x11c;
/* 0x11C */ JUTPoint m_point;
};
class TJ2DWindowDraw : public J2DWindow {
@@ -94,21 +94,29 @@ public:
static JUtility::TColor convJudaColor(u16);
void padProc(const JUTGamePad&);
void setWindowColor(const JUtility::TColor& color) {
setWindowColor(color, color, color, color);
}
void setWindowColor(u8 r, u8 g, u8 b, u8 a) {
setWindowColor(JUtility::TColor(r, g, b, a));
}
/* 0x004 */ Mtx mMatrix;
/* 0x034 */ u8 field_0x34[0x38 - 0x34];
/* 0x038 */ TJ2DWindowDraw field_0x38;
/* 0x180 */ J2DTextBox field_0x180;
/* 0x2B0 */ TWindowText field_0x2b0;
/* 0x3D8 */ JUtility::TColor field_0x3d8;
/* 0x3DC */ JUtility::TColor field_0x3dc;
/* 0x3E0 */ JUtility::TColor field_0x3e0;
/* 0x3E4 */ JUtility::TColor field_0x3e4;
/* 0x038 */ TJ2DWindowDraw m_drawWindow;
/* 0x180 */ J2DTextBox m_titleText;
/* 0x2B0 */ TWindowText m_windowText;
/* 0x3D8 */ JUtility::TColor m_windowColor0;
/* 0x3DC */ JUtility::TColor m_windowColor1;
/* 0x3E0 */ JUtility::TColor m_windowColor2;
/* 0x3E4 */ JUtility::TColor m_windowColor3;
/* 0x3E8 */ int field_0x3e8;
/* 0x3EC */ u8 field_0x3ec;
/* 0x3EC */ u8 m_isInit;
void setMatrix(Mtx mtx) { MTXCopy(mtx, mMatrix); }
void setAlpha(u8 alpha) { field_0x38.setAlpha(alpha); }
void draw(int x, int y, const J2DGrafContext* p_grafCtx) { field_0x38.drawPane(x, y, p_grafCtx); }
void setAlpha(u8 alpha) { m_drawWindow.setAlpha(alpha); }
void draw(int x, int y, const J2DGrafContext* p_grafCtx) { m_drawWindow.drawPane(x, y, p_grafCtx); }
};
#endif /* JAWWINDOW_H */
@@ -50,6 +50,12 @@ public:
JAISoundID(const JAISoundID& other) { id_.composite_ = other.id_.composite_; };
JAISoundID(unsigned int sectionID, unsigned int groupID, unsigned int waveID) {
id_.info.type.parts.sectionID = sectionID;
id_.info.type.parts.groupID = groupID;
id_.info.waveID = waveID;
}
JAISoundID() {}
bool isAnonymous() const { return id_.composite_ == -1; }
@@ -323,6 +329,8 @@ public:
status_.field_0x0.flags.paused = param_0;
}
bool isPaused() const { return status_.field_0x0.flags.paused; }
void updateLifeTime(u32 lifeTime) {
if (lifeTime > lifeTime_) {
lifeTime_ = lifeTime;
@@ -33,6 +33,9 @@ public:
bool isAllocated() const { return mBase; }
u32 getSize() const { return mSize; }
JSUTree<JASHeap>* getFirstChild() { return mTree.getFirstChild(); }
JSUTree<JASHeap>* getEndChild() { return mTree.getEndChild(); }
/* 0x00 */ JSUTree<JASHeap> mTree;
/* 0x1C */ OSMutex mMutex;
/* 0x34 */ JASDisposer* mDisposer;
@@ -54,6 +54,8 @@ struct JASWaveArc : JASDisposer {
virtual void onEraseDone() {}
s32 getStatus() const { return mStatus; }
u32 getFileSize() const { return mFileLength; }
JASHeap* getHeap() { return &mHeap; }
struct loadToAramCallbackParams {
// not official struct name
@@ -149,6 +149,8 @@ struct JAUSoundTable : public JASGlobalInstance<JAUSoundTable> {
void init(void const*);
u8 getTypeID(JAISoundID) const;
JAUSoundTableItem* getData(JAISoundID) const;
int getNumGroups_inSection(u8) const;
int getNumItems_inGroup(u8, u8) const;
JAUSoundTableItem* getItem(JAUSoundTableGroup* group, int index) const {
u32 offset = group->getItemOffset(index);
@@ -230,6 +230,8 @@ public:
return *this;
}
operator int() { return (int)mTree; }
T* getObject() const { return this->mTree->getObject(); }
bool operator==(const JSUTree<T>* other) const { return this->mTree == other; }
@@ -117,7 +117,7 @@ public:
}
void stopMotorWave() { mRumble.stopPatternedRumbleAtThePeriod(); }
void stopMotor() { mRumble.stopMotor(mPortNum, false); }
void stopMotor() { mRumble.stopMotor(mPortNum); }
void stopMotorHard() { CRumble::stopMotorHard(mPortNum); }
static s8 getPortStatus(EPadPort port) {
@@ -233,7 +233,7 @@ public:
/* 0x10 */ u8* field_0x10;
}; // Size: 0x14
void startMotorWave(void* data, CRumble::ERumble rumble, u32 length) {
void startMotorWave(u8* data, CRumble::ERumble rumble, u32 length) {
mRumble.startPatternedRumble(data, rumble, length);
}
+31 -31
View File
@@ -6,29 +6,29 @@
#include "JSystem/JGeometry.h"
JAWWindow::JAWWindow(const char* param_1, int param_2, int param_3) :
field_0x38('WIN1', JGeometry::TBox2<f32>(0.0f, 0.0f, param_2, param_3), "frame_lu.bti"),
field_0x180('TITL', JGeometry::TBox2<f32>(10.0f, 10.0f, 640.0f, 170.0f), (const ResFONT*)JUTResFONT_Ascfont_fix16, param_1, -1, HBIND_LEFT, VBIND_TOP),
field_0x2b0(this),
field_0x3d8(JUtility::TColor(0, 0, 0, 255)),
field_0x3dc(JUtility::TColor(0, 0, 0, 255)),
field_0x3e0(JUtility::TColor(0, 0, 0, 255)),
field_0x3e4(JUtility::TColor(0, 0, 0, 255)) {
m_drawWindow('WIN1', JGeometry::TBox2<f32>(0.0f, 0.0f, param_2, param_3), "frame_lu.bti"),
m_titleText('TITL', JGeometry::TBox2<f32>(10.0f, 10.0f, 640.0f, 170.0f), (const ResFONT*)JUTResFONT_Ascfont_fix16, param_1, -1, HBIND_LEFT, VBIND_TOP),
m_windowText(this),
m_windowColor0(JUtility::TColor(0, 0, 0, 255)),
m_windowColor1(JUtility::TColor(0, 0, 0, 255)),
m_windowColor2(JUtility::TColor(0, 0, 0, 255)),
m_windowColor3(JUtility::TColor(0, 0, 0, 255)) {
field_0x3e8 = 0;
field_0x3ec = 0;
field_0x38.setContentsColor(field_0x3d8, field_0x3e0, field_0x3dc, field_0x3e4);
field_0x180.setCharColor(JUtility::TColor(0, 255, 0, 255));
field_0x180.setGradColor(JUtility::TColor(255, 255, 255, 255));
field_0x38.appendChild(&field_0x180);
field_0x38.appendChild(&field_0x2b0);
m_isInit = FALSE;
m_drawWindow.setContentsColor(m_windowColor0, m_windowColor2, m_windowColor1, m_windowColor3);
m_titleText.setCharColor(JUtility::TColor(0, 255, 0, 255));
m_titleText.setGradColor(JUtility::TColor(255, 255, 255, 255));
m_drawWindow.appendChild(&m_titleText);
m_drawWindow.appendChild(&m_windowText);
}
JAWWindow::~JAWWindow() {}
BOOL JAWWindow::initIf() {
if (field_0x3ec) {
if (m_isInit) {
return TRUE;
} else {
field_0x3ec = TRUE;
m_isInit = TRUE;
return onInit();
}
}
@@ -36,30 +36,30 @@ BOOL JAWWindow::initIf() {
BOOL JAWWindow::onInit() { return TRUE; }
void JAWWindow::setTitleColor(const JUtility::TColor& param_1, const JUtility::TColor& param_2) {
field_0x180.setCharColor(param_1);
field_0x180.setGradColor(param_2);
m_titleText.setCharColor(param_1);
m_titleText.setGradColor(param_2);
}
void JAWWindow::setWindowColor(const JUtility::TColor& param_1, const JUtility::TColor& param_2, const JUtility::TColor& param_3, const JUtility::TColor& param_4) {
field_0x3d8 = param_1;
field_0x3dc = param_2;
field_0x3e0 = param_3;
field_0x3e4 = param_4;
field_0x38.setContentsColor(field_0x3d8, field_0x3e0, field_0x3dc, field_0x3e4);
m_windowColor0 = param_1;
m_windowColor1 = param_2;
m_windowColor2 = param_3;
m_windowColor3 = param_4;
m_drawWindow.setContentsColor(m_windowColor0, m_windowColor2, m_windowColor1, m_windowColor3);
}
void JAWWindow::onDraw(JAWGraphContext*) {}
void JAWWindow::move(f32 param_1, f32 param_2) {
field_0x38.move(param_1, param_2);
m_drawWindow.move(param_1, param_2);
}
void JAWWindow::addPosition(f32 param_1, f32 param_2) {
field_0x38.add(param_1, param_2);
m_drawWindow.add(param_1, param_2);
}
void JAWWindow::addSize(f32 width, f32 height) {
JGeometry::TBox2<f32> bounds = field_0x38.getBounds();
JGeometry::TBox2<f32> bounds = m_drawWindow.getBounds();
f32 newWidth = width + bounds.getWidth();
f32 newHeight = height + bounds.getHeight();
if (newWidth < 36.0f) {
@@ -72,7 +72,7 @@ void JAWWindow::addSize(f32 width, f32 height) {
} else if (newHeight > 480.0f) {
newHeight = 480.0f;
}
field_0x38.resize(newWidth, newHeight);
m_drawWindow.resize(newWidth, newHeight);
}
JUtility::TColor JAWWindow::convJudaColor(u16 param_1) {
@@ -189,7 +189,7 @@ void JAWWindow::padProc(const JUTGamePad& pad) {
JAWWindow::TWindowText::TWindowText(JAWWindow* window) :
J2DPane('TEXT', JGeometry::TBox2<f32>(10.0f, 30.0f, 650.0f, 510.0f)),
m_pParent(window),
field_0x11c(0, 0) {
m_point(0, 0) {
}
JAWWindow::TWindowText::~TWindowText() {}
@@ -201,15 +201,15 @@ void JAWWindow::TWindowText::drawSelf(f32 param_1, f32 param_2) {
}
void JAWWindow::TWindowText::drawSelf(f32, f32, Mtx* param_3) {
field_0xfc.reset();
MTXTrans(*param_3, -field_0x11c.x, -field_0x11c.y, 0.0f);
m_graf.reset();
MTXTrans(*param_3, -m_point.x, -m_point.y, 0.0f);
Mtx stack_48;
MTXConcat(*param_3, mGlobalMtx, stack_48);
GXLoadPosMtxImm(stack_48, 0);
field_0xfc.setParentAlpha(mColorAlpha);
m_graf.setParentAlpha(mColorAlpha);
JUT_ASSERT(209, m_pParent != NULL);
m_pParent->setMatrix(stack_48);
m_pParent->onDraw(&field_0xfc);
m_pParent->onDraw(&m_graf);
}
static void dummy(J2DPane* pane, J2DWindow* window) {
+19 -8
View File
@@ -6,6 +6,8 @@
#include "SSystem/SComponent/c_m3d_g_cyl.h"
#include "SSystem/SComponent/c_m3d.h"
#include "JSystem/JUtility/JUTAssert.h"
cM3dGCyl::cM3dGCyl(const cXyz* center, f32 radius, f32 height) {
SetC(*center);
SetR(radius);
@@ -24,21 +26,30 @@ void cM3dGCyl::Set(const cXyz& center, f32 radius, f32 height) {
SetH(height);
}
void cM3dGCyl::SetC(const cXyz& center) {
mCenter = center;
void cM3dGCyl::SetC(const cXyz& pos) {
JUT_ASSERT(67, !isnan(pos.x));
JUT_ASSERT(68, !isnan(pos.y));
JUT_ASSERT(69, !isnan(pos.z));
JUT_ASSERT(72, -1.0e32f < pos.x && pos.x < 1.0e32f && -1.0e32f < pos.y && pos.y < 1.0e32f && -1.0e32f < pos.z && pos.z < 1.0e32f);
mCenter = pos;
}
void cM3dGCyl::SetH(f32 height) {
mHeight = height;
void cM3dGCyl::SetH(f32 h) {
JUT_ASSERT(82, !isnan(h));
JUT_ASSERT(83, -1.0e32f < h && h < 1.0e32f);
mHeight = h;
}
void cM3dGCyl::SetR(f32 radius) {
mRadius = radius;
void cM3dGCyl::SetR(f32 r) {
JUT_ASSERT(106, !isnan(r));
JUT_ASSERT(107, -1.0e32f < r && r < 1.0e32f);
mRadius = r;
}
bool cM3dGCyl::cross(const cM3dGSph* other, cXyz* out) const {
f32 f;
return cM3d_Cross_CylSph(this, other, out, &f);
return cM3d_Cross_CylSph(this, other, out);
}
bool cM3dGCyl::cross(const cM3dGCyl* other, cXyz* out) const {
+14 -4
View File
@@ -6,8 +6,16 @@
#include "SSystem/SComponent/c_m3d_g_sph.h"
#include "SSystem/SComponent/c_m3d.h"
void cM3dGSph::SetC(const cXyz& center) {
mCenter = center;
#include "JSystem/JUtility/JUTAssert.h"
void cM3dGSph::SetC(const cXyz& p) {
JUT_ASSERT(19, !isnan(p.x));
JUT_ASSERT(20, !isnan(p.y));
JUT_ASSERT(21, !isnan(p.z));
JUT_ASSERT(24, -1.0e32f < p.x && p.x < 1.0e32f && -1.0e32f < p.y && p.y < 1.0e32f && -1.0e32f < p.z && p.z < 1.0e32f);
mCenter = p;
}
void cM3dGSph::Set(const cXyz& center, f32 radius) {
@@ -20,8 +28,10 @@ void cM3dGSph::Set(const cM3dGSphS& other) {
SetR(other.mRadius);
}
void cM3dGSph::SetR(f32 radius) {
mRadius = radius;
void cM3dGSph::SetR(f32 r) {
JUT_ASSERT(54, !isnan(r));
JUT_ASSERT(55, -1.0e32f < r && r < 1.0e32f);
mRadius = r;
}
bool cM3dGSph::cross(const cM3dGSph* other, cXyz* out) const {
+3 -3
View File
@@ -127,12 +127,12 @@ SpkSoundHandle* Z2AudioCS::startLevel(s32 id, s32 chan) {
return handle;
}
s32 Z2AudioCS::getName(s32 num) {
const char* Z2AudioCS::getName(s32 num) {
if (JASGlobalInstance<SpkSystem>::getInstance() == NULL) {
return 0;
return NULL;
}
if (JASGlobalInstance<SpkSystem>::getInstance()->getData() == NULL) {
return 0;
return NULL;
}
return JASGlobalInstance<SpkSystem>::getInstance()->getData()->getTableMgr().getName(num);
View File
+444 -54
View File
@@ -1,46 +1,55 @@
#include "Z2AudioLib/Z2SoundPlayer.h"
#include "Z2AudioLib/Z2SeqMgr.h"
#include "Z2AudioLib/Z2AudioMgr.h"
#include "Z2AudioCS/Z2AudioCS.h"
#include "JSystem/JUtility/JUTGamePad.h"
Z2SoundPlayer::Z2SoundPlayer(const char* param_1) : JAWWindow("Player for JAudio2", 500, 140), field_0x48c(field_0x46c, 8) {
field_0x3ed = 0;
field_0x3ee = 0;
field_0x3ef = 0;
field_0x3f0 = 0;
field_0x3f4 = param_1;
Z2SoundPlayer::Z2SoundPlayer(const char* projectName)
: JAWWindow("Player for JAudio2", 500, 140),
field_0x48c(field_0x46c, 8)
{
field_0x3ed = false;
field_0x3ee = false;
field_0x3ef = false;
field_0x3f0 = false;
m_name = projectName;
field_0x3f8 = 0;
field_0x3fc = 0;
field_0x3fa = 0;
field_0x3fe = 0;
field_0x400 = 0;
field_0x402 = 0;
field_0x444 = 0;
m_portNum = 0;
m_portVal = 0;
field_0x446 = 0;
field_0x404 = "CMD_PORT";
field_0x408 = "END_PORT";
field_0x40c = "STA_PORT";
field_0x410 = "WAIT_PORT";
field_0x414 = "NUM_PORT";
field_0x418 = "PORT_5";
field_0x41c = "MAP_PORT";
field_0x420 = "NOTE_PORT";
field_0x424 = "SE_SELECT_PORT";
field_0x428 = "BGM_STATUS_PORT";
field_0x42c = "BGM_PORT2";
field_0x430 = "BGM_PORT3";
field_0x434 = "PORT12";
field_0x438 = "PORT13";
field_0x43c = "FILTER_PORT";
field_0x440 = "FX_PORT";
m_portNames[0] = "CMD_PORT";
m_portNames[1] = "END_PORT";
m_portNames[2] = "STA_PORT";
m_portNames[3] = "WAIT_PORT";
m_portNames[4] = "NUM_PORT";
m_portNames[5] = "PORT_5";
m_portNames[6] = "MAP_PORT";
m_portNames[7] = "NOTE_PORT";
m_portNames[8] = "SE_SELECT_PORT";
m_portNames[9] = "BGM_STATUS_PORT";
m_portNames[10] = "BGM_PORT2";
m_portNames[11] = "BGM_PORT3";
m_portNames[12] = "PORT12";
m_portNames[13] = "PORT13";
m_portNames[14] = "FILTER_PORT";
m_portNames[15] = "FX_PORT";
u8 r30 = 0;
field_0x448[r30++] = &field_0x3f8;
field_0x448[r30++] = &field_0x3fa;
field_0x448[r30++] = &field_0x3fc;
field_0x448[r30++] = &field_0x3fe;
field_0x448[r30++] = &field_0x400;
field_0x448[r30++] = &field_0x402;
field_0x448[r30] = &field_0x444;
field_0x464 = 0;
field_0x468 = 7;
field_0x448[r30++] = &m_portNum;
field_0x448[r30] = &m_portVal;
m_cursorY = 0;
m_cursorMax = 7;
field_0x4a0 = 0;
field_0x4a4 = 1.0f;
field_0x4a8 = 0.5f;
@@ -48,65 +57,446 @@ Z2SoundPlayer::Z2SoundPlayer(const char* param_1) : JAWWindow("Player for JAudio
field_0x4b0 = 0.0f;
field_0x4b4 = 0.0f;
field_0x4b8 = 1.0f;
field_0x498 = Z2GetSeqMgr()->getSubBgmHandle();
mp_subBgmHandle = Z2GetSeqMgr()->getSubBgmHandle();
}
void Z2SoundPlayer::onDraw(JAWGraphContext*) {
void Z2SoundPlayer::onDraw(JAWGraphContext* graf) {
JAUSoundNameTable* soundTable = JASGlobalInstance<JAUSoundNameTable>::getInstance();
int var_r27 = 0;
if (field_0x3ed) {
var_r27 = 2;
}
u8 cursorY = 0;
graf->color(JUtility::TColor(0, 0x7F, 0xFF, 0xFF), JUtility::TColor(0, 0xFF, 0x7F, 0xFF));
graf->print(1, cursorY++, "Project: %s", m_name);
graf->color(0xFF >> (u8)var_r27, 0xFF >> (u8)var_r27, 0xFF >> (u8)var_r27, 0xFF);
graf->print(0, m_cursorY + 1, ">");
JUtility::TColor sp28(0xFF >> (u8)var_r27, 0xFF >> (u8)var_r27, 0xFF >> (u8)var_r27, 0xFF);
JUtility::TColor sp24(0, 0xFF >> (u8)var_r27, 0, 0xFF);
onDrawSoundItem(graf, soundTable, cursorY++,
sp28,
sp24,
"SEQ NUM ",
1, 0, field_0x3f8
);
graf->color(sp28);
const char* cateName;
if (soundTable != NULL) {
cateName = soundTable->getGroupName(JAISoundID(0, field_0x3fa & 0xFF, 0));
} else {
cateName = "";
}
graf->print(1, cursorY++, "SE CATE %03x %s", field_0x3fa, cateName);
onDrawSoundItem(graf, soundTable, cursorY++,
sp28,
sp24,
"SE NUM ",
0, field_0x3fa & 0xFF, field_0x3fc
);
onDrawSoundItem(graf, soundTable, cursorY++,
sp28,
sp24,
"STRM NUM",
2, 0, field_0x3fe
);
graf->color(sp28);
graf->print(1, cursorY++, "CORE_SPK %03x %s", field_0x400, Z2AudioCS::getName(field_0x400));
graf->color(field_0x446 + 0xC0, 0xC0, 0xC0, 0xFF);
graf->print(1, cursorY++, "PORT NUM %03x %s", m_portNum, m_portNames[m_portNum]);
graf->print(1, cursorY++, "PORT VAL %03x", m_portVal);
graf->color(0, 0x50, 0xC8, 0xFF);
if (field_0x3ee) {
graf->print(1, cursorY, "DOLBY ON\n");
}
graf->color(0xC8, 0x50, 0, 0xFF);
if (field_0x3f0) {
graf->print(10, cursorY, "LEVEL SE CALL");
}
graf->color(0xFF, 0, 0, 0xFF);
graf->print(0x16, cursorY, "%s", field_0x3ed ? "PAUSE ON" : "");
graf->color(0, 0xC8, (field_0x4a0 * 200) / 30, 0xFF);
if (field_0x3ef) {
graf->print(0x16, cursorY, "RESET %d\n", field_0x4a0);
}
}
void Z2SoundPlayer::onTrigA(const JUTGamePad&) {
void Z2SoundPlayer::onTrigA(const JUTGamePad& pad) {
switch (m_cursorY) {
case 0: {
JAISoundID sp24(1, 0, (u16)field_0x3f8);
switch (sp24) {
case 0x100000a:
case 0x100000b:
case 0x100000f:
case 0x1000012:
case 0x1000014:
case 0x100001b:
case 0x100001c:
case 0x1000024:
Z2GetSoundMgr()->startSound(sp24, mp_subBgmHandle, NULL);
break;
default:
Z2GetSoundMgr()->startSound(sp24, &field_0x494, NULL);
break;
}
break;
}
case 1:
case 2:
if (!field_0x3f0) {
JAISoundHandle* handle = field_0x48c.getFreeHandle();
JAISoundID sp20(0, field_0x3fa & 0xFF, (u16)field_0x3fc);
if (handle != NULL) {
Z2GetSoundStarter()->startSound(sp20, handle, NULL);
if (*handle) {
Z2GetSoundStarter()->setPortData(handle, m_portNum, m_portVal, -1);
}
}
}
break;
case 3:
Z2GetSoundMgr()->startSound(JAISoundID(2, 0, (u16)field_0x3fe), &field_0x49c, NULL);
break;
case 4:
if (!field_0x3f0) {
Z2AudioCS::start(field_0x400, 0);
}
break;
case 5:
case 6:
field_0x446 = 64;
if (m_portNum < 9) {
JAISoundHandle* handle = field_0x48c.getFreeHandle();
JAISoundID sp1C(0, field_0x3fa & 0xFF, (u16)field_0x3fc);
if (handle != NULL) {
Z2GetSoundStarter()->startSound(sp1C, handle, NULL);
if (*handle) {
Z2GetSoundStarter()->setPortData(handle, m_portNum, m_portVal, -1);
}
}
} else {
if (field_0x494) {
Z2GetSoundStarter()->setPortData(&field_0x494, m_portNum, m_portVal, -1);
}
if (mp_subBgmHandle->isSoundAttached()) {
Z2GetSoundStarter()->setPortData(mp_subBgmHandle, m_portNum, m_portVal, -1);
}
}
break;
}
}
void Z2SoundPlayer::onTrigB(const JUTGamePad&) {
void Z2SoundPlayer::onTrigB(const JUTGamePad& pad) {
switch (m_cursorY) {
case 0: {
if (field_0x494) {
field_0x494->stop(0);
}
field_0x494.releaseSound();
if (mp_subBgmHandle->isSoundAttached()) {
(*mp_subBgmHandle)->stop();
}
break;
}
case 1:
case 2: {
JAISoundHandle* handle = field_0x48c.getHandleSoundID(JAISoundID(0, field_0x3fa & 0xFF, (u16)field_0x3fc));
if (handle) {
(*handle)->stop();
handle->releaseSound();
}
break;
}
case 3:
if (field_0x49c) {
field_0x49c->stop();
}
field_0x49c.releaseSound();
break;
case 4:
Z2AudioCS::stop(0);
break;
case 5:
case 6:
m_portVal = 0;
field_0x446 = 0;
if (field_0x494) {
Z2GetSoundStarter()->setPortData(&field_0x494, m_portNum, m_portVal, -1);
}
if (mp_subBgmHandle->isSoundAttached()) {
Z2GetSoundStarter()->setPortData(mp_subBgmHandle, m_portNum, m_portVal, -1);
}
break;
}
}
void Z2SoundPlayer::frameWork() {
switch (m_cursorY) {
case 0:
case 1:
case 2:
case 3:
case 4:
break;
}
if (field_0x3ef) {
field_0x4a0++;
if (Z2GetAudioMgr()->hasReset()) {
Z2GetAudioMgr()->resetRecover();
field_0x3ef = false;
OS_REPORT("RESET END \n");
}
}
}
void Z2SoundPlayer::onPadProc(const JUTGamePad&) {
void Z2SoundPlayer::onPadProc(const JUTGamePad& pad) {
if (field_0x3f0 && pad.testButton(PAD_BUTTON_A)) {
switch (m_cursorY) {
case 2: {
JAISoundID sp14(0, field_0x3fa & 0xFF, (u16)field_0x3fc);
JAISoundHandle* handle = field_0x48c.getHandleSoundID(sp14);
if (handle == NULL) {
handle = field_0x48c.getFreeHandle();
}
if (handle != NULL) {
Z2GetAudioMgr()->startLevelSound(sp14, handle, NULL);
}
if (*handle) {
Z2GetSoundStarter()->setPortData(handle, m_portNum, m_portVal, -1);
}
break;
}
case 4:
Z2AudioCS::startLevel(field_0x400, 0);
break;
}
}
}
void Z2SoundPlayer::onTrigX(const JUTGamePad&) {
void Z2SoundPlayer::onTrigX(const JUTGamePad& pad) {
switch (m_cursorY) {
case 0: {
if (field_0x494) {
field_0x494->pause(!field_0x494->isPaused());
}
if (mp_subBgmHandle->isSoundAttached()) {
(*mp_subBgmHandle)->pause(!(*mp_subBgmHandle)->isPaused());
}
break;
}
case 1:
case 2: {
JAISoundHandle* handle = field_0x48c.getHandleSoundID(JAISoundID(0, field_0x3fa & 0xFF, (u16)field_0x3fc));
if (handle) {
(*handle)->pause(!(*handle)->isPaused());
}
break;
}
case 3:
if (field_0x49c) {
(field_0x49c)->pause(!(field_0x49c)->isPaused());
}
break;
case 4:
Z2AudioCS::stop(0);
break;
}
}
void Z2SoundPlayer::onTrigY(const JUTGamePad&) {
}
void Z2SoundPlayer::onTrigZ(const JUTGamePad&) {
}
void Z2SoundPlayer::onTrigL(const JUTGamePad&) {
void Z2SoundPlayer::onTrigY(const JUTGamePad& pad) {
if (!field_0x3ef) {
Z2GetAudioMgr()->resetProcess(30, false);
field_0x3ef = true;
field_0x4a0 = 0;
}
}
void Z2SoundPlayer::onKeyLeft(const JUTGamePad&) {
void Z2SoundPlayer::onTrigZ(const JUTGamePad& pad) {
bool* pvar = &field_0x3f0;
bool newValue = *pvar ^ 1;
*pvar = newValue;
}
void Z2SoundPlayer::onKeyRight(const JUTGamePad&) {
void Z2SoundPlayer::onTrigL(const JUTGamePad& pad) {
bool* pvar = &field_0x3ee;
bool newValue = *pvar ^ 1;
*pvar = newValue;
if (field_0x3ee) {
Z2GetAudioMgr()->setOutputMode(2);
} else {
Z2GetAudioMgr()->setOutputMode(1);
}
}
void Z2SoundPlayer::onKeyUp(const JUTGamePad&) {
void Z2SoundPlayer::onKeyLeft(const JUTGamePad& pad) {
int moveMax = getCursorMoveMax(pad);
int menuMax = getMenuNumberMax();
if (moveMax >= menuMax) {
moveMax = 1;
}
if (*field_0x448[m_cursorY] > moveMax - 1) {
*field_0x448[m_cursorY] -= (s16)moveMax;
} else {
*field_0x448[m_cursorY] = (*field_0x448[m_cursorY] + menuMax) - moveMax;
}
if (m_cursorY == 1) {
correctSeNumber();
}
}
void Z2SoundPlayer::onKeyDown(const JUTGamePad&) {
void Z2SoundPlayer::onKeyRight(const JUTGamePad& pad) {
int moveMax = getCursorMoveMax(pad);
int menuMax = getMenuNumberMax();
if (moveMax >= menuMax) {
moveMax = 1;
}
if (*field_0x448[m_cursorY] < menuMax - moveMax) {
*field_0x448[m_cursorY] += (s16)moveMax;
} else {
*field_0x448[m_cursorY] = (*field_0x448[m_cursorY] + moveMax) - menuMax;
}
if (m_cursorY == 1) {
correctSeNumber();
}
}
void Z2SoundPlayer::onKeyMenu(const JUTGamePad&) {
void Z2SoundPlayer::onKeyUp(const JUTGamePad& pad) {
if (m_cursorY != 0) {
m_cursorY--;
} else {
m_cursorY = m_cursorMax - 1;
}
}
u32 Z2SoundPlayer::getCursorMoveMax(const JUTGamePad&) {
void Z2SoundPlayer::onKeyDown(const JUTGamePad& pad) {
if (m_cursorY < m_cursorMax - 1) {
m_cursorY++;
} else {
m_cursorY = 0;
}
}
void Z2SoundPlayer::onKeyMenu(const JUTGamePad& pad) {
bool* pvar = &field_0x3ed;
bool newValue = *pvar ^ 1;
*pvar = newValue;
Z2GetSoundMgr()->pauseAllGameSound(field_0x3ed);
}
u32 Z2SoundPlayer::getCursorMoveMax(const JUTGamePad& pad) {
u32 num = 1;
if (pad.testButton(PAD_TRIGGER_Z) && pad.testButton(PAD_BUTTON_X)) {
num = 128;
} else if (pad.testButton(PAD_TRIGGER_Z)) {
num = 16;
} else if (pad.testButton(PAD_BUTTON_X)) {
num = 8;
}
return num;
}
int Z2SoundPlayer::getMenuNumberMax() {
JAUSoundTable* soundTable = JASGlobalInstance<JAUSoundTable>::getInstance();
JUT_ASSERT(550, soundTable);
int num = 0;
switch (m_cursorY) {
case 0:
num = soundTable->getNumItems_inGroup(1, 0);
break;
case 1:
num = soundTable->getNumGroups_inSection(0);
break;
case 2:
num = soundTable->getNumItems_inGroup(0, field_0x3fa);
break;
case 3:
num = soundTable->getNumItems_inGroup(2, 0);
break;
case 4:
num = Z2AudioCS::getNumOfSound();
break;
case 5:
num = 16;
break;
case 6:
num = 128;
break;
}
return num;
}
void Z2SoundPlayer::correctSeNumber() {
JAUSoundTable* soundTable = JASGlobalInstance<JAUSoundTable>::getInstance();
JUT_ASSERT(594, soundTable);
int num = soundTable->getNumItems_inGroup(0, field_0x3fa);
if (num == 0) {
field_0x3fc = 0;
} else if (field_0x3fc >= num) {
field_0x3fc = num - 1;
}
}
void Z2SoundPlayer::onDrawSoundItem(JAWGraphContext* graf, JAUSoundNameTable* nameTable, int cursorY,
const JUtility::TColor& color0, const JUtility::TColor& color1,
const char* label, u32 sectionID, u32 groupID, u32 waveID)
{
static const char szNoEntry[] = "(NO ENTRY)";
const char* soundName = "";
if (nameTable != NULL) {
soundName = nameTable->getName(JAISoundID(sectionID, groupID, waveID));
if (*soundName == 0) {
soundName = szNoEntry;
}
} else {
soundName = "";
}
// !@bug comparing strings directly instead of using strcmp
if (soundName == szNoEntry) {
graf->color(color1);
} else {
graf->color(color0);
}
graf->print(1, cursorY, "%s %03x %s", label, waveID, soundName);
}
View File
+335
View File
@@ -0,0 +1,335 @@
#include "Z2AudioLib/Z2WaveArcLoader.h"
#include "JSystem/JAudio2/JAUSectionHeap.h"
#include "JSystem/JAudio2/JASWaveInfo.h"
#include <bitset>
static f32 cStatusBar_X1 = 8.0f;
static f32 cStatusBar_X2 = 16.0f;
static f32 cWaveBar_X1 = 30.0f;
static f32 cWaveBar_X2 = 80.0f;
static f32 cBar_Y = 5.0f;
static f32 cBarHeight = 310.0f;
static u8 lbl_8074A738 = 10;
static u8 lbl_8074A739 = 23;
static u32 cWaveArcListSize = 10;
Z2WaveArcLoader::Z2WaveArcLoader() :
JAWWindow("Z2WaveArcLoader", 420, 365)
{
setWindowColor(0, 0, 0x50, 0xFF);
mpWaveBank = NULL;
mpWaveArc = NULL;
mWaveUsedSize = 0;
mTotalUsedSize = 0;
mBankNo = 0;
mArcCount = 0;
field_0x408 = 0;
field_0x40c = 0;
field_0x410 = 0;
field_0x414 = 0;
mIsLoadTail = false;
checkWaveBank();
checkWaveArc();
}
Z2WaveArcLoader::~Z2WaveArcLoader() {}
// nonmatching with tree iterator stuff
void Z2WaveArcLoader::onDraw(JAWGraphContext* graf) {
int cursorX = 8;
JASHeap* rootheap = JASWaveArcLoader::getRootHeap();
u32 aramsize = JASKernel::getAramSize();
mWaveUsedSize = 0;
for (u32 i = 0; i < 255; i++) {
JASWaveBank* bank = JASGlobalInstance<JAUSectionHeap>::getInstance()->getWaveBankTable().getWaveBank(i);
if (bank != NULL) {
u32 arcCount = bank->getArcCount();
for (int j = 0; j < arcCount; j++) {
JASWaveArc* arc = bank->getWaveArc(j);
if (arc != NULL && arc->getStatus() == 2) {
mWaveUsedSize += arc->getFileSize();
}
}
}
}
u32 otherUsedSize = mTotalUsedSize - mWaveUsedSize;
u32 totalFree = rootheap->getTotalFreeSize();
u32 linearFreeSize = rootheap->getFreeSize();
u32 sp54 = totalFree - linearFreeSize;
graf->color(JUtility::TColor(0x32, 0x96, 0xFF, 0xFF), JUtility::TColor(0xC8, 0xC8, 0xFF, 0xFF));
graf->print(cursorX, 0, "ARAM STATUS\n");
graf->color(0xFF, 0xFF, 0xFF, 0xFF);
graf->print(cursorX, 1, " total used : %8d\n", mTotalUsedSize);
graf->color(0xFF, 0x40, 0x40, 0xFF);
graf->print(cursorX, 2, " wave used : %8d\n", mWaveUsedSize);
graf->color(0xFF, 0xFF, 0x40, 0xFF);
graf->print(cursorX, 3, " other used : %8d\n", otherUsedSize);
graf->color(0x40, 0xFF, 0x40, 0xFF);
graf->print(cursorX, 4, " linear free : %8d\n", linearFreeSize);
graf->color(0xFF, 0xFF, 0xFF, 0xFF);
graf->print(cursorX, 5, " total free : %8d\n", totalFree);
graf->print(cursorX, 6, " ------------------------\n");
graf->print(cursorX, 7, " aram size : %8d\n", aramsize);
graf->color(0xFF, 0xFF, 0x20, 0xFF);
f32 var_f30 = cBar_Y;
f32 var_f31 = var_f30 + (((f32)otherUsedSize / (f32)aramsize) * cBarHeight);
graf->fillBox(JGeometry::TBox2<f32>(cStatusBar_X1, var_f30, cStatusBar_X2, var_f31));
graf->color(0xFF, 0x20, 0x20, 0xFF);
var_f30 = var_f31;
var_f31 += ((f32)mWaveUsedSize / (f32)aramsize) * cBarHeight;
graf->fillBox(JGeometry::TBox2<f32>(cStatusBar_X1, var_f30, cStatusBar_X2, var_f31));
graf->color(0x20, 0xFF, 0x20, 0xFF);
var_f30 = var_f31;
var_f31 += ((f32)linearFreeSize / (f32)aramsize) * cBarHeight;
graf->fillBox(JGeometry::TBox2<f32>(cStatusBar_X1, var_f30, cStatusBar_X2, var_f31));
graf->color(0x20, 0x20, 0xFF, 0xFF);
var_f30 = var_f31;
var_f31 += ((f32)sp54 / (f32)aramsize) * cBarHeight;
graf->fillBox(JGeometry::TBox2<f32>(cStatusBar_X1, var_f30, cStatusBar_X2, var_f31));
graf->color(0x40, 0x40, 0xFF, 0xFF);
graf->fillBox(JGeometry::TBox2<f32>(cWaveBar_X1, cBar_Y, cWaveBar_X2, cBar_Y + cBarHeight));
void* pbase = rootheap->getBase();
u32 heapSize = rootheap->getSize();
int sp48 = 0;
mTotalUsedSize = 0;
for (JSUTreeIterator<JASHeap> i = rootheap->getFirstChild(); (int)i != (int)rootheap->getEndChild(); ++i) {
intptr_t sp40 = (char*)i->getBase() - (char*)pbase;
u32 sp3C = i->getSize();
mTotalUsedSize += sp3C;
int sp38 = (sp40 * cBarHeight) / heapSize;
int sp34 = (sp3C * cBarHeight) / heapSize;
JGeometry::TBox2<f32> spD0(cWaveBar_X1, cBar_Y + (f32)sp38, cWaveBar_X2, (f32)sp34 + (cBar_Y + (f32)sp38));
u8 sp9 = 0xFF;
sp9 = sp48 % 2 ? (u8)0xC0 : (u8)0x80;
graf->color(0xFF, sp9, 0x40, 0xFF);
graf->fillBox(spD0);
if (mpWaveArc != NULL) {
if (mpWaveArc->getHeap() == i.getObject()) {
graf->color(0xFF, 0xFF, 0xFF, 0xFF);
graf->lineWidth(15);
graf->drawFrame(spD0);
}
}
sp48++;
}
graf->color(JUtility::TColor(0xC8, 0xC8, 0xFF, 0xFF), JUtility::TColor(0x32, 0x96, 0xFF, 0xFF));
if (mIsLoadTail) {
graf->print(cursorX, 9, "WAVE BANK LOAD:Tail");
} else {
graf->print(cursorX, 9, "WAVE BANK LOAD:Linear");
}
int var_r26 = lbl_8074A738;
if (mpWaveBank == NULL) {
graf->color(0x64, 0x64, 0x64, 0xFF);
graf->print(cursorX, var_r26, " ws:%3d Not Registerd", mBankNo);
graf->color(0xFF, 0xFF, 0xFF, 0xFF);
graf->print(cursorX, var_r26, ">");
} else {
graf->color(0xFF, 0xFF, 0xFF, 0xFF);
if (field_0x414 < 2) {
graf->print(cursorX, field_0x414 + var_r26, ">");
} else {
graf->print(cursorX, field_0x414 + (var_r26 + 1), ">");
}
graf->print(cursorX, var_r26++, " ws:%3d", mBankNo);
graf->print(cursorX, var_r26++, " aw:%3d-%3d /%3d", field_0x40c, field_0x410, mArcCount - 1);
graf->color(0xFF, 0xA0, 0x64, 0xFF);
graf->print(cursorX, var_r26++, " aw_status aw_size");
graf->color(0xFF, 0xFF, 0xFF, 0xFF);
for (int i = field_0x40c; i < field_0x410 + 1; i++) {
JASWaveArc* arc = mpWaveBank->getWaveArc(i);
if (arc == NULL) {
break;
}
switch (arc->getStatus()) {
case 0:
graf->color(0x64, 0x64, 0x64, 0xFF);
graf->print(cursorX, var_r26, "%3d: NOT_LOAD %8d", i, arc->getFileSize());
break;
case 1:
graf->color(0xFF, 0x64, 0x64, 0xFF);
graf->print(cursorX, var_r26, "%3d: WAIT_LOAD %8d", i, arc->getFileSize());
break;
case 2:
graf->color(0xFF, 0xFF, 0xC8, 0xFF);
graf->print(cursorX, var_r26, "%3d: LOAD %8d", i, arc->getFileSize());
break;
}
var_r26++;
}
}
var_r26 = lbl_8074A739;
graf->color(0x96, 0x96, 0xE1, 0xFF);
graf->print(cursorX, var_r26++, "-----------------");
graf->print(cursorX, var_r26++, " A -> LOAD WAVE");
graf->print(cursorX, var_r26++, " B -> ERASE WAVE");
graf->print(cursorX, var_r26++, "-----------------");
}
void Z2WaveArcLoader::checkWaveBank() {
JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
const JAUSectionHeap::TSectionHeapData& heapData = sectionHeap->getSectionHeapData();
const JAUSection::TSectionData& sectionData = sectionHeap->getSectionData();
if (sectionData.registeredWaveBankTables.test(mBankNo)) {
mpWaveBank = heapData.waveBankTable.getWaveBank(mBankNo);
mArcCount = mpWaveBank->getArcCount();
} else {
mpWaveBank = NULL;
mArcCount = 0;
}
if (mBankNo == 1) {
mIsLoadTail = true;
} else {
mIsLoadTail = false;
}
}
void Z2WaveArcLoader::checkWaveArc() {
field_0x40c = field_0x408 * cWaveArcListSize;
if (field_0x40c > mArcCount - 1) {
field_0x408--;
field_0x40c = field_0x408 * cWaveArcListSize;
}
field_0x410 = (field_0x408 + 1) * cWaveArcListSize - 1;
if (field_0x410 > mArcCount - 1) {
field_0x410 = mArcCount - 1;
}
if (field_0x414 > 1) {
if ((field_0x40c + field_0x414) - 2 > field_0x410) {
field_0x414 = (field_0x410 - field_0x40c) + 2;
}
mpWaveArc = mpWaveBank->getWaveArc(field_0x40c + field_0x414 - 2);
} else {
mpWaveArc = NULL;
}
}
void Z2WaveArcLoader::onKeyUp(const JUTGamePad&) {
if (mpWaveBank == NULL) {
field_0x414 = 0;
} else {
if (field_0x414 != 0) {
field_0x414--;
} else {
field_0x414 = 11;
}
checkWaveArc();
}
}
void Z2WaveArcLoader::onKeyDown(const JUTGamePad&) {
if (mpWaveBank == NULL) {
field_0x414 = 0;
} else {
if (field_0x414 < 11) {
field_0x414++;
} else {
field_0x414 = 0;
}
checkWaveArc();
}
}
void Z2WaveArcLoader::onKeyLeft(const JUTGamePad&) {
if (field_0x414 == 0) {
if (mBankNo != 0) {
mBankNo--;
} else {
mBankNo = 0;
}
checkWaveBank();
} else if (mpWaveBank != NULL) {
if (field_0x408 != 0) {
field_0x408--;
} else {
field_0x408 = 0;
}
checkWaveArc();
}
}
void Z2WaveArcLoader::onKeyRight(const JUTGamePad&) {
if (field_0x414 == 0) {
if (mBankNo < 255) {
mBankNo++;
} else {
mBankNo = 255;
}
checkWaveBank();
} else if (mpWaveBank != NULL) {
if (field_0x408 < 255) {
field_0x408++;
} else {
field_0x408 = 255;
}
checkWaveArc();
}
}
void Z2WaveArcLoader::onTrigA(const JUTGamePad&) {
if (mpWaveArc != NULL && mpWaveArc->getStatus() == 0) {
if (mIsLoadTail) {
mpWaveArc->loadTail(NULL);
} else {
mpWaveArc->load(NULL);
}
}
}
void Z2WaveArcLoader::onTrigB(const JUTGamePad&) {
if (mpWaveArc != NULL && mpWaveArc->getStatus() == 2) {
mpWaveArc->erase();
}
}
void Z2WaveArcLoader::onTrigZ(const JUTGamePad&) {
mIsLoadTail = !mIsLoadTail;
}
+513 -515
View File
File diff suppressed because it is too large Load Diff
+9 -17
View File
@@ -189,8 +189,8 @@ int daE_OC_c::draw() {
return 1;
}
static void daE_OC_Draw(daE_OC_c* i_this) {
i_this->draw();
static int daE_OC_Draw(daE_OC_c* i_this) {
return i_this->draw();
}
daE_OC_c* E_OC_n::m_battle_oc;
@@ -2639,12 +2639,12 @@ int daE_OC_c::execute() {
return 1;
}
static void daE_OC_Execute(daE_OC_c* i_this) {
i_this->execute();
static int daE_OC_Execute(daE_OC_c* i_this) {
return i_this->execute();
}
static BOOL daE_OC_IsDelete(daE_OC_c* param_0) {
return TRUE;
static int daE_OC_IsDelete(daE_OC_c* param_0) {
return 1;
}
int daE_OC_c::_delete() {
@@ -2662,18 +2662,10 @@ int daE_OC_c::_delete() {
return 1;
}
#if TARGET_PC
static int daE_OC_Delete(daE_OC_c* i_this) {
fopAcM_RegisterDeleteID(i_this, "E_OC");
i_this->_delete();
return 1;
return i_this->_delete();
}
#else
static void daE_OC_Delete(daE_OC_c* i_this) {
fopAcM_RegisterDeleteID(i_this, "E_OC");
i_this->_delete();
}
#endif
int daE_OC_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*) dComIfG_getObjectRes(mName, 0x3);
@@ -2841,8 +2833,8 @@ cPhs_Step daE_OC_c::create() {
return phase;
}
static void daE_OC_Create(daE_OC_c* i_this) {
i_this->create();
static int daE_OC_Create(daE_OC_c* i_this) {
return i_this->create();
}
static actor_method_class l_daE_OC_Method = {
+201 -181
View File
@@ -10,6 +10,10 @@
#include <cmath>
#include "f_op/f_op_actor_enemy.h"
#define PLAYER_NOT_FOUND 0
#define PLAYER_TARGET 1
#define PLAYER_NEAR 2
class daE_WS_HIO_c : public JORReflexible {
public:
daE_WS_HIO_c();
@@ -28,6 +32,7 @@ public:
/* 0x24 */ u8 debug_ON;
};
namespace {
static dCcD_SrcSph cc_ws_src = {
{
@@ -66,13 +71,27 @@ daE_WS_HIO_c::daE_WS_HIO_c() {
attack_speed = 10.0f;
}
#if DEBUG
void daE_WS_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel("スタルウォーーーーーーーール", 0x80000001);
ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f);
ctx->genSlider("サーチ角度", &search_angle, 0.0f, 30000.0f);
ctx->genSlider("攻撃速度", &attack_speed, 0.0f, 100.0f);
ctx->genSlider("移動範囲", &move_range, 0.0f, 1000.0f);
ctx->genSlider("サーチ範囲", &search_range, 0.0f, 1000.0f);
ctx->genSlider("サーチY上下範囲", &search_y_range, 0.0f, 1000.0f);
ctx->genSlider("地面までの距離", &dist_to_ground, 0.0f, 1000.0f);
ctx->genCheckBox("デバック表示", &debug_ON, 0x1);
}
#endif
int daE_WS_c::draw() {
J3DModel* model_p = mpModelMorf->getModel();
J3DModel* model = mAnm_p->getModel();
g_env_light.settingTevStruct(0, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(model_p, &tevStr);
g_env_light.setLightTevColorType_MAJI(model, &tevStr);
if (mDownColor) {
J3DModelData* modelData_p = model_p->getModelData();
J3DModelData* modelData_p = model->getModelData();
for (u16 i = 0; i < modelData_p->getMaterialNum(); i++) {
J3DMaterial* material_p = modelData_p->getMaterialNodePointer(i);
material_p->getTevColor(0)->r = mDownColor;
@@ -81,48 +100,48 @@ int daE_WS_c::draw() {
}
}
mpModelMorf->entryDL();
mAnm_p->entryDL();
cXyz sp8;
sp8.set(current.pos.x, 100.0f + current.pos.y, current.pos.z);
mShadowId = dComIfGd_setShadow(mShadowId, 1, model_p, &sp8, 400.0f, 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
mShadowId = dComIfGd_setShadow(mShadowId, 1, model, &sp8, 400.0f, 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
return 1;
}
static int daE_WS_Draw(daE_WS_c* a_this) {
return a_this->draw();
static int daE_WS_Draw(daE_WS_c* i_this) {
return i_this->draw();
}
void daE_WS_c::setBck(int i_anm, u8 i_mode, f32 i_morf, f32 i_speed) {
mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_WS", i_anm), i_mode, i_morf, i_speed, 0.0f, -1.0f);
mAnm_p->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_WS", i_anm), i_mode, i_morf, i_speed, 0.0f, -1.0f);
}
void daE_WS_c::setFootSound() {
if (mpModelMorf->getAnm() == dComIfG_getObjectRes("E_WS", 7)) {
if (mpModelMorf->checkFrame(0.0f) ||
mpModelMorf->checkFrame(4.5f) ||
mpModelMorf->checkFrame(7.5f) ||
mpModelMorf->checkFrame(9.0f) ||
mpModelMorf->checkFrame(13.5f) ||
mpModelMorf->checkFrame(16.0f) ||
mpModelMorf->checkFrame(19.0f) ||
mpModelMorf->checkFrame(23.5f) ||
mpModelMorf->checkFrame(25.0f) ||
mpModelMorf->checkFrame(28.0f) ||
mpModelMorf->checkFrame(32.5f) ||
mpModelMorf->checkFrame(36.0f) ||
mpModelMorf->checkFrame(39.5f))
if (mAnm_p->getAnm() == dComIfG_getObjectRes("E_WS", 7)) {
if (mAnm_p->checkFrame(0.0f) ||
mAnm_p->checkFrame(4.5f) ||
mAnm_p->checkFrame(7.5f) ||
mAnm_p->checkFrame(9.0f) ||
mAnm_p->checkFrame(13.5f) ||
mAnm_p->checkFrame(16.0f) ||
mAnm_p->checkFrame(19.0f) ||
mAnm_p->checkFrame(23.5f) ||
mAnm_p->checkFrame(25.0f) ||
mAnm_p->checkFrame(28.0f) ||
mAnm_p->checkFrame(32.5f) ||
mAnm_p->checkFrame(36.0f) ||
mAnm_p->checkFrame(39.5f))
{
mSound.startCreatureSound(Z2SE_EN_WS_FOOTNOTE, 0, -1);
}
} else if (mpModelMorf->getAnm() == dComIfG_getObjectRes("E_WS", 8)) {
if (mpModelMorf->checkFrame(0.5f) ||
mpModelMorf->checkFrame(6.0f) ||
mpModelMorf->checkFrame(11.0f) ||
mpModelMorf->checkFrame(16.0f) ||
mpModelMorf->checkFrame(21.0f) ||
mpModelMorf->checkFrame(26.5f) ||
mpModelMorf->checkFrame(31.0f))
} else if (mAnm_p->getAnm() == dComIfG_getObjectRes("E_WS", 8)) {
if (mAnm_p->checkFrame(0.5f) ||
mAnm_p->checkFrame(6.0f) ||
mAnm_p->checkFrame(11.0f) ||
mAnm_p->checkFrame(16.0f) ||
mAnm_p->checkFrame(21.0f) ||
mAnm_p->checkFrame(26.5f) ||
mAnm_p->checkFrame(31.0f))
{
mSound.startCreatureSound(Z2SE_EN_WS_FOOTNOTE, 0, -1);
}
@@ -141,13 +160,13 @@ f32 daE_WS_c::calcTargetDist(cXyz i_basePos, cXyz i_targetPos) {
}
s16 daE_WS_c::calcTargetAngle(cXyz i_basePos, cXyz i_targetPos) {
cXyz sp1C;
cXyz sp10 = i_targetPos - i_basePos;
cXyz mae;
cXyz ato = i_targetPos - i_basePos;
mDoMtx_stack_c::XrotS(-field_0x668.x);
mDoMtx_stack_c::YrotM(-field_0x668.y);
mDoMtx_stack_c::multVec(&sp10, &sp1C);
return cM_atan2s(sp1C.x, sp1C.z);
mDoMtx_stack_c::XrotS(-mTargetWallAngle.x);
mDoMtx_stack_c::YrotM(-mTargetWallAngle.y);
mDoMtx_stack_c::multVec(&ato, &mae);
return cM_atan2s(mae.x, mae.z);
}
static u8 hio_set;
@@ -171,13 +190,13 @@ int daE_WS_c::checkPlayerPos() {
dComIfGp_checkPlayerStatus1(0, 0x2000000) ||
dComIfGp_checkPlayerStatus1(0, 0x10000) ||
calcTargetDist(current.pos, player_pos) < 150.0f) &&
checkInSearchRange(player_pos, field_0x65c) && checkInSearchRange(current.pos, field_0x65c))
checkInSearchRange(player_pos, mHomePos) && checkInSearchRange(current.pos, mHomePos))
{
dBgS_GndChk gndchk;
cXyz gndpos;
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(field_0x66e);
mDoMtx_stack_c::ZXYrotM(mWallAngle);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f);
mDoMtx_stack_c::multVecZero(&gndpos);
@@ -187,17 +206,17 @@ int daE_WS_c::checkPlayerPos() {
if (current.pos.y - gndpos.y > l_HIO.dist_to_ground) {
// Return 1 if walltula is looking towards player
if (cLib_distanceAngleS(shape_angle.y, calcTargetAngle(current.pos, player_pos)) < l_HIO.search_angle) {
return 1;
return PLAYER_TARGET;
}
// otherwise return 2 if player is near the walltula
if (calcTargetDist(current.pos, player_pos) < 150.0f) {
return 2;
return PLAYER_NEAR;
}
}
}
return 0;
return PLAYER_NOT_FOUND;
}
bool daE_WS_c::checkAttackEnd() {
@@ -205,17 +224,17 @@ bool daE_WS_c::checkAttackEnd() {
mDoMtx_stack_c::copy(daPy_getLinkPlayerActorClass()->getModelJointMtx(0));
mDoMtx_stack_c::multVecZero(&player_pos);
BOOL r30 = false;
BOOL checkPlayerNear = FALSE;
if (
daPy_getPlayerActorClass()->checkClimbMove() ||
dComIfGp_checkPlayerStatus1(0, 0x02000000) ||
dComIfGp_checkPlayerStatus1(0, 0x10000) ||
calcTargetDist(current.pos, player_pos) < 200.0f
) {
r30 = true;
checkPlayerNear = TRUE;
}
if (!r30 ||
!checkInSearchRange(current.pos, field_0x65c) ||
if (!checkPlayerNear ||
!checkInSearchRange(current.pos, mHomePos) ||
checkBeforeBg(shape_angle.y)
)
{
@@ -228,41 +247,41 @@ bool daE_WS_c::checkAttackEnd() {
}
void daE_WS_c::executeWait() {
int temp_r3 = checkPlayerPos();
if (temp_r3 == 1) {
int playerCheck = checkPlayerPos();
if (playerCheck == PLAYER_TARGET) {
setActionMode(ACTION_ATTACK_e);
return;
}
if (temp_r3 == 2 && mMode != 3 && mMode != 4) {
if (playerCheck == PLAYER_NEAR && mMode != 3 && mMode != 4) {
mMode = 2;
}
switch (mMode) {
case 0:
mMoveWaitTimer = 50.0f + cM_rndF(50.0f);
mWaitTimer = 50.0f + cM_rndF(50.0f);
setBck(9, 2, 3.0f, 1.0f);
mMode = 1;
/* fallthrough */
case 1:
if (mMoveWaitTimer == 0) {
if (mWaitTimer == 0) {
mMode = 2;
}
break;
case 2:
speedF = 0.0f;
field_0x690 = 0;
mTargetAngle = shape_angle.y + cM_rndFX(32768.0f);
mIsReturnHome = 0;
mTargetAngle = shape_angle.y + cM_rndFX(32768.0f); // random turn up to ±180°
if (temp_r3 == 2) {
mTargetStep = 0x200;
if (playerCheck == PLAYER_NEAR) {
mStepAngle = 0x200;
setBck(8, 2, 3.0f, 2.4f);
} else {
if (calcTargetDist(current.pos, field_0x65c) >= l_HIO.move_range) {
mTargetAngle = calcTargetAngle(current.pos, field_0x65c);
field_0x690 = 1;
if (calcTargetDist(current.pos, mHomePos) >= l_HIO.move_range) {
mTargetAngle = calcTargetAngle(current.pos, mHomePos);
mIsReturnHome = 1;
}
mTargetStep = 0x100;
mStepAngle = 0x100;
setBck(8, 2, 3.0f, 1.2f);
}
@@ -271,37 +290,37 @@ void daE_WS_c::executeWait() {
case 3:
setFootSound();
if (cLib_chaseAngleS(&shape_angle.y, mTargetAngle, mTargetStep)) {
if (cLib_chaseAngleS(&shape_angle.y, mTargetAngle, mStepAngle)) {
mMode = 4;
mMoveWaitTimer = 10;
mWaitTimer = 10;
setBck(9, 2, 3.0f, 1.0f);
}
break;
case 4:
if (mMoveWaitTimer == 0) {
if (mWaitTimer == 0) {
mMode = 5;
}
break;
case 5:
mMode = 6;
speedF = 3.0f;
mMoveWaitTimer = 20.0f + cM_rndF(10.0f);
mWaitTimer = 20.0f + cM_rndF(10.0f);
setBck(7, 2, 3.0f, 1.0f);
/* fallthrough */
case 6:
setFootSound();
if (field_0x690 == 0) {
if (calcTargetDist(current.pos, field_0x65c) >= l_HIO.move_range) {
mMoveWaitTimer = 0;
if (mIsReturnHome == 0) {
if (calcTargetDist(current.pos, mHomePos) >= l_HIO.move_range) {
mWaitTimer = 0;
}
}
if (checkBeforeBg(shape_angle.y)) {
mMoveWaitTimer = 0;
mWaitTimer = 0;
}
if (mMoveWaitTimer == 0) {
if (mWaitTimer == 0) {
speedF = 0.0f;
mMode = 0;
}
@@ -333,11 +352,11 @@ void daE_WS_c::executeAttack() {
mMode = 2;
setBck(10, 2, 3.0f, 1.0f);
mSound.startCreatureVoice(Z2SE_EN_WS_V_YOKOKU, -1);
mMoveWaitTimer = 10;
mWaitTimer = 10;
}
break;
case 2:
if (mMoveWaitTimer == 0) {
if (mWaitTimer == 0) {
speedF = l_HIO.attack_speed * mBodyScale;
setBck(7, 2, 3.0f, 3.0f);
mMode = 3;
@@ -352,20 +371,20 @@ void daE_WS_c::executeAttack() {
setFootSound();
cLib_chaseAngleS(&shape_angle.y, calcTargetAngle(current.pos, player_pos), 0x400);
BOOL r28 = false;
BOOL checkAttackStart = FALSE;
if (checkBeforeBg(shape_angle.y)) {
r28 = true;
checkAttackStart = TRUE;
}
if (mCcSph.ChkAtHit()) {
cCcD_Obj* r27 = mCcSph.GetAtHitObj();
if (fopAcM_GetName(dCc_GetAc(r27->GetAc())) == fpcNm_ALINK_e) {
r28 = true;
cCcD_Obj* hitObj = mCcSph.GetAtHitObj();
if (fopAcM_GetName(dCc_GetAc(hitObj->GetAc())) == fpcNm_ALINK_e) {
checkAttackStart = TRUE;
}
}
if (!checkInSearchRange(current.pos, field_0x65c)) {
r28 = true;
if (!checkInSearchRange(current.pos, mHomePos)) {
checkAttackStart = TRUE;
}
if (r28) {
if (checkAttackStart) {
mMode = 4;
speedF = 0.0f;
setBck(4, 0, 3.0f, 1.0f);
@@ -378,11 +397,11 @@ void daE_WS_c::executeAttack() {
break;
}
case 4:
if (mpModelMorf->checkFrame(7.5f)) {
if (mAnm_p->checkFrame(7.5f)) {
mSound.startCreatureVoice(Z2SE_EN_WS_V_ATTACK, -1);
}
if (mpModelMorf->isStop()) {
if (mAnm_p->isStop()) {
setActionMode(ACTION_WAIT_e);
}
/* fallthrough */
@@ -408,9 +427,9 @@ void daE_WS_c::executeDown() {
mSound.startCreatureVoice(Z2SE_EN_WS_V_DAMAGE, -1);
/* fallthrough */
case 1:
if (mpModelMorf->isStop()) {
mAcchCir.SetWall(0.0f, 4.0f);
current.angle.y = field_0x668.y;
if (mAnm_p->isStop()) {
mBgc.SetWall(0.0f, 4.0f);
current.angle.y = mTargetWallAngle.y;
setBck(6, 0, 3.0f, 0.0f);
mSound.startCreatureVoice(Z2SE_EN_WS_V_DEATH, -1);
speedF = 5.0f;
@@ -433,7 +452,7 @@ void daE_WS_c::executeDown() {
speedF = 3.0f + cM_rndF(2.0f);
speed.y = 12.0f;
mMode = 3;
mMoveWaitTimer = 30;
mWaitTimer = 30;
setBck(6, 0, 5.0f, 1.0f);
mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1);
}
@@ -467,8 +486,8 @@ void daE_WS_c::executeDown() {
case 4:
cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f);
if (mpModelMorf->isStop()) {
mMoveWaitTimer = 15;
if (mAnm_p->isStop()) {
mWaitTimer = 15;
mMode = 5;
return;
}
@@ -476,12 +495,12 @@ void daE_WS_c::executeDown() {
case 5:
cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f);
if (mMoveWaitTimer == 0) {
if (mWaitTimer == 0) {
fopAcM_delete(this);
fopAcM_createDisappear(this, &current.pos, 7, 0, 7);
if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) {
dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this));
if (bitSw != 0xFF && !dComIfGs_isSwitch(bitSw, fopAcM_GetRoomNo(this))) {
dComIfGs_onSwitch(bitSw, fopAcM_GetRoomNo(this));
}
}
break;
@@ -497,36 +516,36 @@ void daE_WS_c::executeWindDown() {
mCcSph.OffTgSetBit();
mCcBokkuriSph.OffTgSetBit();
mAcchCir.SetWall(0.0f, 4.0f);
mBgc.SetWall(0.0f, 4.0f);
mMode = 1;
setBck(7, 2, 3.0f, 1.0f);
mSound.startCreatureVoice(Z2SE_EN_WS_V_DAMAGE, -1);
mMoveWaitTimer = 5;
mWaitTimer = 5;
mAcch.SetGroundUpY(20.0f);
attention_info.flags = 0;
speed.y = 0.0f;
speedF = 5.0f;
current.angle.y = field_0x668.y;
mTargetStep = -0x800;
current.angle.y = mTargetWallAngle.y;
mStepAngle = -0x800;
break;
case 1:
shape_angle.y += mTargetStep;
cLib_chaseAngleS(&field_0x66e.y, 0, 0x400);
cLib_chaseAngleS(&field_0x66e.x, 0, 0x400);
shape_angle.y += mStepAngle;
cLib_chaseAngleS(&mWallAngle.y, 0, 0x400);
cLib_chaseAngleS(&mWallAngle.x, 0, 0x400);
shape_angle.x += 0x800;
shape_angle.z += 0x800;
speed.y = 30.0f;
if (mMoveWaitTimer == 0) {
if (mWaitTimer == 0) {
mMode = 2;
gravity = -3.0f;
}
break;
case 2:
shape_angle.y += mTargetStep;
cLib_chaseAngleS(&field_0x66e.y, 0, 0x400);
cLib_chaseAngleS(&field_0x66e.x, 0, 0x400);
shape_angle.y += mStepAngle;
cLib_chaseAngleS(&mWallAngle.y, 0, 0x400);
cLib_chaseAngleS(&mWallAngle.x, 0, 0x400);
cLib_chaseAngleS(&shape_angle.x, -0x8000, 0x400);
cLib_chaseAngleS(&shape_angle.z, 0, 0x400);
@@ -534,15 +553,15 @@ void daE_WS_c::executeWindDown() {
speedF = 3.0f + cM_rndF(2.0f);
speed.y = 12.0f;
mMode = 3;
mMoveWaitTimer = 30;
mWaitTimer = 30;
setBck(6, 0, 5.0f, 1.0f);
mSound.startCreatureVoice(Z2SE_EN_WS_V_DEATH, -1);
mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1);
}
break;
case 3:
shape_angle.y += mTargetStep;
cLib_chaseAngleS(&mTargetStep, 0, 0x80);
shape_angle.y += mStepAngle;
cLib_chaseAngleS(&mStepAngle, 0, 0x80);
cLib_chaseAngleS(&shape_angle.x, -0x8000, 0x400);
cLib_chaseAngleS(&shape_angle.z, 0, 0x400);
@@ -556,23 +575,23 @@ void daE_WS_c::executeWindDown() {
break;
case 4:
cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f);
shape_angle.y += mTargetStep;
cLib_chaseAngleS(&mTargetStep, 0, 0x80);
shape_angle.y += mTargetStep;
shape_angle.y += mStepAngle;
cLib_chaseAngleS(&mStepAngle, 0, 0x80);
shape_angle.y += mStepAngle;
if (mpModelMorf->isStop()) {
mMoveWaitTimer = 15;
if (mAnm_p->isStop()) {
mWaitTimer = 15;
mMode = 5;
}
break;
case 5:
cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f);
if (mMoveWaitTimer == 0) {
if (mWaitTimer == 0) {
fopAcM_delete(this);
fopAcM_createDisappear(this, &current.pos, 7, 0, 7);
if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) {
dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this));
if (bitSw != 0xFF && !dComIfGs_isSwitch(bitSw, fopAcM_GetRoomNo(this))) {
dComIfGs_onSwitch(bitSw, fopAcM_GetRoomNo(this));
}
}
break;
@@ -653,47 +672,47 @@ void daE_WS_c::action() {
mSound.setLinkSearch(field_0x566);
if (mAction != ACTION_DOWN_e && mAction != ACTION_WIND_DOWN_e) {
cXyz sp14;
mDoMtx_stack_c::YrotS(field_0x668.y);
mDoMtx_stack_c::XrotM(field_0x668.x);
cXyz ato;
mDoMtx_stack_c::YrotS(mTargetWallAngle.y);
mDoMtx_stack_c::XrotM(mTargetWallAngle.x);
mDoMtx_stack_c::YrotM(current.angle.y);
cXyz sp8(0.0f, 0.0f, speedF);
mDoMtx_stack_c::multVec(&sp8, &sp14);
speed = sp14;
cXyz mae(0.0f, 0.0f, speedF);
mDoMtx_stack_c::multVec(&mae, &ato);
speed = ato;
current.pos += speed;
} else {
fopAcM_posMoveF(this, NULL);
}
mAcch.CrrPos(dComIfG_Bgsp());
mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
mAnm_p->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
}
void daE_WS_c::mtx_set() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(field_0x66e);
mDoMtx_stack_c::ZXYrotM(mWallAngle);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::scaleM(mBodyScale, mBodyScale, mBodyScale);
J3DModel* model_p = mpModelMorf->getModel();
J3DModel* model_p = mAnm_p->getModel();
model_p->setBaseTRMtx(mDoMtx_stack_c::get());
mpModelMorf->modelCalc();
mAnm_p->modelCalc();
}
void daE_WS_c::cc_set() {
cXyz mae;
cXyz ato;
J3DModel* model_p = mpModelMorf->getModel();
J3DModel* model = mAnm_p->getModel();
mDoMtx_stack_c::YrotS(field_0x668.y);
mDoMtx_stack_c::XrotM(field_0x668.x);
mDoMtx_stack_c::YrotS(mTargetWallAngle.y);
mDoMtx_stack_c::XrotM(mTargetWallAngle.x);
mae.set(0.0f, 15.0f + nREG_F(10), 0.0f);
mDoMtx_stack_c::multVec(&mae, &ato);
attention_info.position = current.pos + ato;
attention_info.position.y += 90.0f * mBodyScale;
MTXCopy(model_p->getAnmMtx(1), mDoMtx_stack_c::get());
MTXCopy(model->getAnmMtx(1), mDoMtx_stack_c::get());
mae.set(-15.0f + nREG_F(5), -10.0f + nREG_F(6), nREG_F(7));
mDoMtx_stack_c::multVec(&mae, &eyePos);
@@ -707,8 +726,8 @@ void daE_WS_c::cc_set() {
}
int daE_WS_c::execute() {
if (mMoveWaitTimer != 0) {
mMoveWaitTimer--;
if (mWaitTimer != 0) {
mWaitTimer--;
}
if (mInvulnerabilityTimer != 0) {
@@ -725,8 +744,8 @@ int daE_WS_c::execute() {
return 1;
}
static int daE_WS_Execute(daE_WS_c* a_this) {
return a_this->execute();
static int daE_WS_Execute(daE_WS_c* i_this) {
return i_this->execute();
}
void daE_WS_c::checkInitialWall() {
@@ -739,7 +758,7 @@ void daE_WS_c::checkInitialWall() {
linchk.Set(&current.pos, &endpos, NULL);
if (dComIfG_Bgsp().LineCross(&linchk)) {
if (field_0x691 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) {
if (arg0 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) {
return;
}
@@ -749,9 +768,9 @@ void daE_WS_c::checkInitialWall() {
dComIfG_Bgsp().GetTriPla(linchk, &tri);
cXyz* tri_np = tri.GetNP();
field_0x668.y = cM_atan2s(tri_np->x, tri_np->z);
field_0x668.x = cM_atan2s(tri_np->absXZ(), tri_np->y);
field_0x66e = field_0x668;
mTargetWallAngle.y = cM_atan2s(tri_np->x, tri_np->z);
mTargetWallAngle.x = cM_atan2s(tri_np->absXZ(), tri_np->y);
mWallAngle = mTargetWallAngle;
return;
}
}
@@ -759,8 +778,8 @@ void daE_WS_c::checkInitialWall() {
bool daE_WS_c::checkBeforeBg(s16 i_angle) {
dBgS_LinChk linchk;
cXyz sp68;
cXyz sp5C;
cXyz mae;
cXyz ato;
cXyz endpos;
cXyz startpos;
@@ -768,56 +787,56 @@ bool daE_WS_c::checkBeforeBg(s16 i_angle) {
return false;
}
mDoMtx_stack_c::YrotS(field_0x668.y);
mDoMtx_stack_c::XrotM(field_0x668.x);
mDoMtx_stack_c::YrotS(mTargetWallAngle.y);
mDoMtx_stack_c::XrotM(mTargetWallAngle.x);
mDoMtx_stack_c::YrotM(i_angle);
sp68.set(0.0f, 50.0f * mBodyScale, 0.0f);
mDoMtx_stack_c::multVec(&sp68, &startpos);
mae.set(0.0f, 50.0f * mBodyScale, 0.0f);
mDoMtx_stack_c::multVec(&mae, &startpos);
startpos += current.pos;
mDoMtx_stack_c::YrotS(field_0x668.y);
mDoMtx_stack_c::XrotM(field_0x668.x);
mDoMtx_stack_c::YrotS(mTargetWallAngle.y);
mDoMtx_stack_c::XrotM(mTargetWallAngle.x);
mDoMtx_stack_c::YrotM(i_angle);
sp68.set(0.0f, 0.0f, 50.0f * mBodyScale);
mDoMtx_stack_c::multVec(&sp68, &sp5C);
mae.set(0.0f, 0.0f, 50.0f * mBodyScale);
mDoMtx_stack_c::multVec(&mae, &ato);
sp68.set(sp5C.x, 0.0f, sp5C.z);
endpos = startpos + sp68;
mae.set(ato.x, 0.0f, ato.z);
endpos = startpos + mae;
linchk.Set(&startpos, &endpos, NULL);
if (dComIfG_Bgsp().LineCross(&linchk)) {
return 1;
}
if (sp5C.y > 0.0f) {
sp68.set(0.0f, 50.0f * mBodyScale, 0.0f);
if (ato.y > 0.0f) {
mae.set(0.0f, 50.0f * mBodyScale, 0.0f);
} else {
sp68.set(0.0f, -l_HIO.dist_to_ground, 0.0f);
mae.set(0.0f, -l_HIO.dist_to_ground, 0.0f);
}
endpos = startpos + sp68;
endpos = startpos + mae;
linchk.Set(&startpos, &endpos, NULL);
if (dComIfG_Bgsp().LineCross(&linchk)) {
return true;
}
mDoMtx_stack_c::YrotS(field_0x668.y);
mDoMtx_stack_c::XrotM(field_0x668.x);
mDoMtx_stack_c::YrotS(mTargetWallAngle.y);
mDoMtx_stack_c::XrotM(mTargetWallAngle.x);
mDoMtx_stack_c::YrotM(i_angle);
sp68.set(0.0f, 50.0f * mBodyScale, 100.0f * mBodyScale);
mDoMtx_stack_c::multVec(&sp68, &sp5C);
startpos = current.pos + sp5C;
mae.set(0.0f, 50.0f * mBodyScale, 100.0f * mBodyScale);
mDoMtx_stack_c::multVec(&mae, &ato);
startpos = current.pos + ato;
cXyz sp38(0.0f, -40.0f * mBodyScale, 100.0f * mBodyScale);
mDoMtx_stack_c::multVec(&sp38, &sp5C);
endpos = current.pos + sp5C;
mDoMtx_stack_c::multVec(&sp38, &ato);
endpos = current.pos + ato;
linchk.Set(&startpos, &endpos, NULL);
if (!dComIfG_Bgsp().LineCross(&linchk)) {
return true;
}
if (field_0x691 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) {
if (arg0 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) {
return true;
}
@@ -825,7 +844,7 @@ bool daE_WS_c::checkBeforeBg(s16 i_angle) {
dComIfG_Bgsp().GetTriPla(linchk, &tri);
cXyz* tri_np = tri.GetNP();
cLib_chaseAngleS(&field_0x66e.y, cM_atan2s(tri_np->x, tri_np->z), 0x100);
cLib_chaseAngleS(&mWallAngle.y, cM_atan2s(tri_np->x, tri_np->z), 0x100);
checkWall();
return false;
}
@@ -834,7 +853,7 @@ bool daE_WS_c::checkWall() {
cXyz startpos;
cXyz endpos;
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(field_0x66e);
mDoMtx_stack_c::ZXYrotM(mWallAngle);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f);
@@ -846,7 +865,7 @@ bool daE_WS_c::checkWall() {
dBgS_LinChk linchk;
linchk.Set(&startpos, &endpos, NULL);
if (dComIfG_Bgsp().LineCross(&linchk)) {
if (field_0x691 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) {
if (arg0 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) {
return false;
}
@@ -856,8 +875,8 @@ bool daE_WS_c::checkWall() {
dComIfG_Bgsp().GetTriPla(linchk, &tri);
cXyz* tri_np = tri.GetNP();
field_0x668.y = cM_atan2s(tri_np->x, tri_np->z);
field_0x668.x = cM_atan2s(tri_np->absXZ(), tri_np->y);
mTargetWallAngle.y = cM_atan2s(tri_np->x, tri_np->z);
mTargetWallAngle.x = cM_atan2s(tri_np->absXZ(), tri_np->y);
return true;
}
@@ -871,8 +890,8 @@ static int daE_WS_IsDelete(daE_WS_c* a_this) {
int daE_WS_c::_delete() {
dComIfG_resDelete(&mPhase, "E_WS");
if (mHIOInit) {
hio_set = false;
if (mHioSet) {
hio_set = FALSE;
mDoHIO_DELETE_CHILD(l_HIO.id);
}
@@ -883,24 +902,25 @@ int daE_WS_c::_delete() {
return 1;
}
static int daE_WS_Delete(daE_WS_c* a_this) {
return a_this->_delete();
static int daE_WS_Delete(daE_WS_c* i_this) {
fopAcM_RegisterDeleteID(i_this, "E_WS");
return i_this->_delete();
}
int daE_WS_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_WS", 0xD);
JUT_ASSERT(1401, modelData != NULL);
mpModelMorf = JKR_NEW mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_WS", 7), 0, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084);
if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) {
mAnm_p = JKR_NEW mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_WS", 7), 0, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084);
if (mAnm_p == NULL || mAnm_p->getModel() == NULL) {
return 0;
}
return 1;
}
static int useHeapInit(fopAc_ac_c* i_this) {
return ((daE_WS_c*)i_this)->CreateHeap();
static int useHeapInit(fopAc_ac_c* actor) {
return ((daE_WS_c*)actor)->CreateHeap();
}
int daE_WS_c::create() {
@@ -910,8 +930,8 @@ int daE_WS_c::create() {
if (phase_state == cPhs_COMPLEATE_e) {
OS_REPORT("E_WS PARAM %x\n", fopAcM_GetParam(this));
mSwbit = (fopAcM_GetParam(this) & 0xFF00) >> 8;
if (mSwbit != 0xFF && dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) {
bitSw = (fopAcM_GetParam(this) & 0xFF00) >> 8;
if (bitSw != 0xFF && dComIfGs_isSwitch(bitSw, fopAcM_GetRoomNo(this))) {
OS_REPORT("E_WS やられ後なので再セットしません\n");
return cPhs_ERROR_e;
}
@@ -922,13 +942,13 @@ int daE_WS_c::create() {
if (!hio_set) {
hio_set = true;
mHIOInit = true;
mHioSet = true;
l_HIO.id = mDoHIO_CREATE_CHILD("スタルウォール", &l_HIO);
}
field_0x691 = fopAcM_GetParam(this);
if (field_0x691 == 0xFF) {
field_0x691 = 0;
arg0 = fopAcM_GetParam(this);
if (arg0 == 0xFF) {
arg0 = 0;
}
if (((fopAcM_GetParam(this) & 0xFF0000) >> 0x10) == 1) {
@@ -938,12 +958,12 @@ int daE_WS_c::create() {
}
attention_info.flags = fopAc_AttnFlag_BATTLE_e;
fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx());
fopAcM_SetMtx(this, mAnm_p->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
mAcchCir.SetWall(0.0f, 0.0f);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mBgc, fopAcM_GetSpeed_p(this), NULL, NULL);
mBgc.SetWall(0.0f, 0.0f);
health = 10;
field_0x560 = 10;
@@ -963,7 +983,7 @@ int daE_WS_c::create() {
setActionMode(ACTION_WAIT_e);
checkInitialWall();
field_0x65c = current.pos;
mHomePos = current.pos;
speed.y = 0.0f;
gravity = 0.0f;
mtx_set();
@@ -972,8 +992,8 @@ int daE_WS_c::create() {
return phase_state;
}
static int daE_WS_Create(daE_WS_c* a_this) {
return a_this->create();
static int daE_WS_Create(daE_WS_c* i_this) {
return i_this->create();
}
static actor_method_class l_daE_WS_Method = {
+3 -3
View File
@@ -495,8 +495,8 @@ int daE_ZS_c::CreateHeap() {
return 1;
}
static void useHeapInit(fopAc_ac_c* i_this) {
static_cast<daE_ZS_c*>(i_this)->CreateHeap();
static int useHeapInit(fopAc_ac_c* i_this) {
return static_cast<daE_ZS_c*>(i_this)->CreateHeap();
}
int daE_ZS_c::create() {
@@ -504,7 +504,7 @@ int daE_ZS_c::create() {
int phase = dComIfG_resLoad(&mPhase, "E_ZS");
if (phase == cPhs_COMPLEATE_e) {
OS_REPORT("E_ZS PARAM %x\n", fopAcM_GetParam(this));
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)useHeapInit, 0xFC0)) {
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0xFC0)) {
return cPhs_ERROR_e;
}
+3 -3
View File
@@ -74,9 +74,9 @@ static char* l_bckFileNameTBL[] = {
static char* l_btpFileNameTBL[] = {"MYNA.btp"};
static void createHeapCallBack(fopAc_ac_c* i_this) {
static int createHeapCallBack(fopAc_ac_c* i_this) {
daMyna_c* a_this = static_cast<daMyna_c*>(i_this);
a_this->createHeap();
return a_this->createHeap();
}
static int jntNodeCallBack(J3DJoint* i_jnt, int param_1) {
@@ -339,7 +339,7 @@ int daMyna_c::create() {
return phase;
}
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)&createHeapCallBack, 0x21F0)) {
if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x21F0)) {
return cPhs_ERROR_e;
}
+6 -7
View File
@@ -194,14 +194,13 @@ int daNpc_solA_c::Execute() {
return execute();
}
void daNpc_solA_c::Draw() {
int daNpc_solA_c::Draw() {
if (mpMatAnm[0] != NULL) {
J3DModelData* mdlData_p = mpMorf[0]->getModel()->getModelData();
mdlData_p->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]);
}
draw(FALSE, FALSE, mpHIO->m.common.real_shadow_size, NULL, 100.0f, FALSE, FALSE,
FALSE);
return;
return draw(FALSE, FALSE, mpHIO->m.common.real_shadow_size, NULL, 100.0f, FALSE, FALSE, FALSE);
}
BOOL daNpc_solA_c::createHeapCallBack(fopAc_ac_c* a_this) {
@@ -481,12 +480,12 @@ static int daNpc_solA_Execute(void* param_0) {
return static_cast<daNpc_solA_c*>(param_0)->Execute();
}
static void daNpc_solA_Draw(void* param_0) {
static int daNpc_solA_Draw(void* param_0) {
return static_cast<daNpc_solA_c*>(param_0)->Draw();
}
static BOOL daNpc_solA_IsDelete(void* param_0) {
return TRUE;
static int daNpc_solA_IsDelete(void* param_0) {
return 1;
}
static actor_method_class daNpc_solA_MethodTable = {
+1 -1
View File
@@ -2014,7 +2014,7 @@ void daNPC_TK_c::executeWolfPerch() {
mWolfPathData = dPath_GetRoomPath(mpPath1->m_nextID, fopAcM_GetRoomNo(this));
JUT_ASSERT(2498, mWolfPathData != NULL);
field_0x6ea = mWolfPathData->field_0x6;
field_0x6ea = mWolfPathData->swbit;
field_0x6e8 = mWolfPathData->field_0x4;
field_0x6e9 = mWolfPathData->field_0x7;
field_0x6d0.Init(mWolfPathData);
+8 -8
View File
@@ -356,21 +356,21 @@ int daObjYtaihou_c::Delete() {
return 1;
}
static void daObjYtaihou_create1st(daObjYtaihou_c* i_this) {
static int daObjYtaihou_create1st(daObjYtaihou_c* i_this) {
fopAcM_ct(i_this, daObjYtaihou_c);
i_this->create1st();
return i_this->create1st();
}
static void daObjYtaihou_MoveBGDelete(daObjYtaihou_c* i_this) {
i_this->MoveBGDelete();
static int daObjYtaihou_MoveBGDelete(daObjYtaihou_c* i_this) {
return i_this->MoveBGDelete();
}
static void daObjYtaihou_MoveBGExecute(daObjYtaihou_c* i_this) {
i_this->MoveBGExecute();
static int daObjYtaihou_MoveBGExecute(daObjYtaihou_c* i_this) {
return i_this->MoveBGExecute();
}
static void daObjYtaihou_MoveBGDraw(daObjYtaihou_c* i_this) {
i_this->Draw();
static int daObjYtaihou_MoveBGDraw(daObjYtaihou_c* i_this) {
return i_this->Draw();
}
static actor_method_class daObjYtaihou_METHODS = {
+2 -2
View File
@@ -310,9 +310,9 @@ int daObjFan_c::Delete() {
return 1;
}
static void daObjFan_create1st(daObjFan_c* param_0) {
static int daObjFan_create1st(daObjFan_c* param_0) {
fopAcM_ct(param_0, daObjFan_c);
param_0->create1st();
return param_0->create1st();
}
static int daObjFan_MoveBGDelete(daObjFan_c* param_0) {
+3 -3
View File
@@ -89,8 +89,8 @@ static void* s_boar_sub(void* i_actor, void* i_data) {
return NULL;
}
static void CheckCreateHeap(fopAc_ac_c* i_this) {
static_cast<daObjIBone_c*>(i_this)->CreateHeap();
static int CheckCreateHeap(fopAc_ac_c* i_this) {
return static_cast<daObjIBone_c*>(i_this)->CreateHeap();
}
void daObjIBone_c::initBaseMtx() {
@@ -150,7 +150,7 @@ int daObjIBone_c::create() {
int result = dComIfG_resLoad(&mPhase, l_arcName);
if (result == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckCreateHeap, 0x860)) {
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x860)) {
return cPhs_ERROR_e;
} else if (!Create()) {
return cPhs_ERROR_e;
+13 -20
View File
@@ -198,32 +198,25 @@ void daObj_Stick_c::setMtx() {
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
static u32 daObj_Stick_Create(void* i_this) {
static int daObj_Stick_Create(void* i_this) {
return static_cast<daObj_Stick_c*>(i_this)->create();
}
#if TARGET_PC
static int daObj_Stick_Delete(void* param_0) {
static_cast<daObj_Stick_c*>(param_0)->Delete();
return static_cast<daObj_Stick_c*>(param_0)->Delete();
}
static int daObj_Stick_Execute(void* param_0) {
return static_cast<daObj_Stick_c*>(param_0)->Execute();
}
static int daObj_Stick_Draw(void* param_0) {
return static_cast<daObj_Stick_c*>(param_0)->Draw();
}
static int daObj_Stick_IsDelete(void* param_0) {
return 1;
}
#else
static void daObj_Stick_Delete(void* param_0) {
static_cast<daObj_Stick_c*>(param_0)->Delete();
}
#endif
static void daObj_Stick_Execute(void* param_0) {
static_cast<daObj_Stick_c*>(param_0)->Execute();
}
static void daObj_Stick_Draw(void* param_0) {
static_cast<daObj_Stick_c*>(param_0)->Draw();
}
static BOOL daObj_Stick_IsDelete(void* param_0) {
return TRUE;
}
static actor_method_class daObj_Stick_MethodTable = {
(process_method_func)daObj_Stick_Create,
+1 -1
View File
@@ -59,7 +59,7 @@ static daNpcT_motionAnmData_c l_motionAnmData[11] = {
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[20] = {
{1, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {2, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {3, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{4, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{4, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
};
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[40] = {
+3 -11
View File
@@ -44,23 +44,15 @@ int daTagMagne_c::_delete() {
return 1;
}
#if TARGET_PC
static int daTagMagne_Delete(daTagMagne_c* i_this) {
int id = fopAcM_GetID(i_this);
i_this->_delete();
return 1;
return i_this->_delete();
}
#else
static void daTagMagne_Delete(daTagMagne_c* i_this) {
int id = fopAcM_GetID(i_this);
i_this->_delete();
}
#endif
static void daTagMagne_Create(fopAc_ac_c* i_this) {
static int daTagMagne_Create(fopAc_ac_c* i_this) {
daTagMagne_c* magne = static_cast<daTagMagne_c*>(i_this);
int id = fopAcM_GetID(i_this);
magne->create();
return magne->create();
}
static actor_method_class l_daTagMagne_Method = {
+1 -1
View File
@@ -189,7 +189,7 @@ int daTagSppath_c::execute() {
}
if (mpBestPath->field_0x4 == 0) {
if (mpBestPath->field_0x6 == 0xff || fopAcM_isSwitch(this, mpBestPath->field_0x6) == 0) {
if (mpBestPath->swbit == 0xff || fopAcM_isSwitch(this, mpBestPath->swbit) == 0) {
field_0x6e8 = 1;
} else {
field_0x6e8 = 2;
+2 -2
View File
@@ -318,7 +318,7 @@ void dCsr_mng_c::bloObj_c::calcPaneObjNum(J2DPane* i_pane) {
}
JSUTreeIterator<J2DPane> iter = i_pane->getPaneTree()->getFirstChild();
while (iter != NULL) {
while (iter) {
calcPaneObjNum(*iter);
++iter;
}
@@ -334,7 +334,7 @@ void dCsr_mng_c::bloObj_c::createPaneObj(paneObj_c** i_panes, J2DPane* i_pane) {
}
JSUTreeIterator<J2DPane> iter = i_pane->getPaneTree()->getFirstChild();
while (iter != NULL) {
while (iter) {
createPaneObj(i_panes, *iter);
++iter;
}
+254 -10
View File
@@ -11,6 +11,8 @@
#include "d/d_meter_map.h"
#include "d/d_msg_class.h"
#include "d/d_msg_object.h"
#include "d/d_meter_HIO.h"
#include <cstring>
enum ITEMICON_RES_FILE_ID {
@@ -362,19 +364,18 @@ void dMeter2Info_c::getString(u32 i_stringID, char* o_string, JMSMesgEntry_c* i_
}
JMSMesgInfo_c* bmg_inf = (JMSMesgInfo_c*)(msgRes + sizeof(bmg_header_t));
u8* bmg_data = (u8*)bmg_inf + bmg_inf->header.size + sizeof(bmg_section_t); // pointer to start of message data
u8* bmg_data = (u8*)bmg_inf + bmg_inf->header.size;
u8* string_data = bmg_data + sizeof(bmg_section_t); // pointer to start of message data
char* string_ptr = NULL;
for (u16 i = 0; i < bmg_inf->entry_num; i++) {
u8* entry = ((u8*)bmg_inf + (i * sizeof(JMSMesgEntry_c)));
// check if i_stringID equals the message entry "Message ID"
if (i_stringID == *(BE(u16)*)(entry + 0x14)) {
string_ptr = (char*)(bmg_data + *(BE(u32)*)(entry + 0x10)); // use entry "String Offset" to get string pointer
if (i_stringID == bmg_inf->entries[i].message_id) {
string_ptr = (char*)(string_data + bmg_inf->entries[i].string_offset); // use entry "String Offset" to get string pointer
strcpy(o_string, string_ptr);
if (i_msgEntry != NULL) {
memcpy(i_msgEntry, entry + 0x10, sizeof(JMSMesgEntry_c));
memcpy(i_msgEntry, &bmg_inf->entries[i], sizeof(JMSMesgEntry_c));
}
return;
@@ -508,6 +509,10 @@ void dMeter2Info_c::getStringKanji(u32 i_stringID, char* o_string, JMSMesgEntry_
}
}
static void dummyString() {
OS_REPORT("レボ用ID=====>%d, %d\n");
}
f32 dMeter2Info_c::getStringLength(J2DTextBox* i_textbox, char* i_string) {
f32 str_width = 0.0f;
f32 str_len = 0.0f;
@@ -1003,6 +1008,104 @@ s16 dMeter2Info_c::get4thTexture(u8 i_itemType) {
}
void dMeter2Info_c::set1stColor(u8 i_itemType, J2DPicture* i_pic) {
// TODO: probably some way to rectify this for both versions
#if VERSION == VERSION_SHIELD_DEBUG
static JUtility::TColor const black_color[37] = {
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x60, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0xC0, 0x00),
JUtility::TColor(0xA0, 0x60, 0x00, 0x00), JUtility::TColor(0xA0, 0x00, 0x00, 0x00), JUtility::TColor(0x40, 0x00, 0x60, 0x00),
JUtility::TColor(0xE0, 0x00, 0x00, 0x00), JUtility::TColor(0x40, 0x40, 0x40, 0x00), JUtility::TColor(0x6E, 0x6E, 0x64, 0x00),
JUtility::TColor(0x32, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x7F, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x7F, 0x00),
JUtility::TColor(0xAF, 0x9B, 0x6E, 0x00), JUtility::TColor(0xAA, 0x9B, 0x6E, 0x00), JUtility::TColor(0x55, 0x37, 0x14, 0x00),
JUtility::TColor(0x6E, 0x6E, 0x6E, 0x00), JUtility::TColor(0x6E, 0x6E, 0x6E, 0x00), JUtility::TColor(0xFF, 0x58, 0x00, 0x00),
JUtility::TColor(0x6C, 0x3E, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x32, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x7F, 0x00), JUtility::TColor(0x00, 0x7F, 0x00, 0x00), JUtility::TColor(0x55, 0x37, 0x14, 0x00),
JUtility::TColor(0x00, 0x00, 0x22, 0x00), JUtility::TColor(0x2B, 0x18, 0x22, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x46, 0x46, 0x41, 0x00), JUtility::TColor(0x46, 0x46, 0x41, 0x00), JUtility::TColor(0x46, 0x46, 0x41, 0x00),
JUtility::TColor(0x46, 0x46, 0x41, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00),
};
static JUtility::TColor const white_color[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x60, 0xFF, 0x00, 0xFF), JUtility::TColor(0x00, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF), JUtility::TColor(0xFF, 0x80, 0x80, 0xFF), JUtility::TColor(0xBE, 0x40, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xC0, 0x00, 0xFF), JUtility::TColor(0xC0, 0xC0, 0xC0, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xD2, 0xAA, 0xFF), JUtility::TColor(0xEF, 0xF5, 0xC9, 0xFF), JUtility::TColor(0xB0, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xF0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xF0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xD7, 0xFF),
JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xC2, 0xFF),
JUtility::TColor(0xFF, 0x9D, 0x00, 0xFF), JUtility::TColor(0xC8, 0xC8, 0xC8, 0xFF), JUtility::TColor(0xFF, 0xD2, 0xAA, 0xFF),
JUtility::TColor(0xB0, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xEF, 0xF5, 0xC9, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xD7, 0xFF),
JUtility::TColor(0xD7, 0xCF, 0xF5, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x33, 0xFF), JUtility::TColor(0xC8, 0xC8, 0xC8, 0xFF),
JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF),
JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_lu[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0x78, 0xAF, 0xFF), JUtility::TColor(0x5C, 0xB4, 0x16, 0xFF), JUtility::TColor(0xA4, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0x78, 0xAF, 0xFF),
JUtility::TColor(0xA4, 0xFF, 0x00, 0xFF), JUtility::TColor(0x5C, 0xB4, 0x16, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xC9, 0xB4, 0xFF, 0xFF), JUtility::TColor(0x3C, 0x0A, 0x00, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xA0, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ru[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0xFF, 0x73, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x2A, 0xFF), JUtility::TColor(0x98, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x73, 0xFF),
JUtility::TColor(0x98, 0xFF, 0x00, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x2A, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0x39, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xA0, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ld[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x78, 0x6E, 0x3C, 0xFF),
JUtility::TColor(0xFF, 0x00, 0x00, 0xFF), JUtility::TColor(0x3C, 0x32, 0x50, 0xFF), JUtility::TColor(0x00, 0x00, 0x74, 0xFF),
JUtility::TColor(0xFA, 0xC8, 0x9B, 0xFF), JUtility::TColor(0xFA, 0xC8, 0x9B, 0xFF), JUtility::TColor(0x46, 0x87, 0x00, 0xFF),
JUtility::TColor(0x5A, 0xB4, 0xB4, 0xFF), JUtility::TColor(0x5A, 0xB4, 0xB4, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xFF, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x74, 0xFF), JUtility::TColor(0x3C, 0x32, 0x50, 0xFF), JUtility::TColor(0x46, 0x87, 0x00, 0xFF),
JUtility::TColor(0x3C, 0x32, 0x50, 0x49), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xE0, 0x00, 0xE0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_rd[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x78, 0x6E, 0x3C, 0xFF),
JUtility::TColor(0xFF, 0x96, 0x00, 0xFF), JUtility::TColor(0x55, 0x42, 0x00, 0xFF), JUtility::TColor(0x61, 0x48, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xAA, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xAA, 0xFF), JUtility::TColor(0xAF, 0x91, 0x23, 0xFF),
JUtility::TColor(0xE6, 0xFA, 0xFF, 0xFF), JUtility::TColor(0xE6, 0xFA, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xFF, 0x96, 0x00, 0xFF),
JUtility::TColor(0x61, 0x48, 0xFF, 0xFF), JUtility::TColor(0x55, 0x42, 0x00, 0xFF), JUtility::TColor(0xAF, 0x91, 0x23, 0xFF),
JUtility::TColor(0x3C, 0x09, 0x4E, 0xFF), JUtility::TColor(0xBA, 0x98, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xE0, 0x00, 0xE0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
#else
static GXColor const black_color[37] = {
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x60, 0x00, 0x00}, {0x00, 0x00, 0xC0, 0x00},
{0xA0, 0x60, 0x00, 0x00}, {0xA0, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x60, 0x00},
@@ -1098,6 +1201,7 @@ void dMeter2Info_c::set1stColor(u8 i_itemType, J2DPicture* i_pic) {
{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF},
};
#endif
i_pic->setBlackWhite(*(JUtility::TColor*)&black_color[i_itemType],
*(JUtility::TColor*)&white_color[i_itemType]);
@@ -1108,6 +1212,104 @@ void dMeter2Info_c::set1stColor(u8 i_itemType, J2DPicture* i_pic) {
}
void dMeter2Info_c::set2ndColor(u8 i_itemType, J2DPicture* i_pic) {
// TODO: probably some way to rectify this for both versions
#if VERSION == VERSION_SHIELD_DEBUG
static JUtility::TColor const black_color[37] = {
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x86, 0xD4, 0x00), JUtility::TColor(0xE6, 0x1E, 0xFF, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00),
};
static JUtility::TColor const white_color[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xF5, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xC8, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_lu[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0x00, 0x00, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ru[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0x00, 0xFF, 0xFF, 0x58), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x58), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x58),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x58), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ld[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_rd[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xCD, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xCD, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
#else
static GXColor const black_color[37] = {
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},
@@ -1203,6 +1405,7 @@ void dMeter2Info_c::set2ndColor(u8 i_itemType, J2DPicture* i_pic) {
{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF},
};
#endif
i_pic->setBlackWhite(*(JUtility::TColor*)&black_color[i_itemType],
*(JUtility::TColor*)&white_color[i_itemType]);
@@ -1235,6 +1438,8 @@ void dMeter2Info_c::set3rdColor(u8 i_itemType, J2DPicture* i_pic) {
}
void dMeter2Info_c::set4thColor(u8 i_itemType, J2DPicture* i_pic) {
UNUSED(i_itemType);
i_pic->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0xff, 0xff, 0xff, 0xff));
i_pic->setCornerColor(
JUtility::TColor(0xff, 0xff, 0xff, 0xff), JUtility::TColor(0xff, 0xff, 0xff, 0xff),
@@ -1443,6 +1648,18 @@ u8 dMeter2Info_getPixel(f32 i_posX, f32 i_posY, f32 param_2, f32 param_3, f32 i_
return (var_r24 & 0x7000) != 0;
}
bool dMeter2Info_isNextStage(const char* i_name, s16 i_roomNo, s16 i_point, s16 i_layer) {
if (strcmp(dComIfGp_getNextStageName(), i_name) == 0
&& dComIfGp_getNextStageRoomNo() == i_roomNo
&& dComIfGp_getNextStagePoint() == i_point
&& dComIfGp_getNextStageLayer() == i_layer
) {
return true;
}
return false;
}
void dMeter2Info_setCloth(u8 i_clothId, bool i_offItemBit) {
switch (i_clothId) {
case dItemNo_WEAR_CASUAL_e:
@@ -1586,6 +1803,7 @@ u8 dMeter2Info_getNewLetterNum() {
}
int dMeter2Info_setNewLetterSender() {
int ret = 0;
u8 check = 0;
for (int i = 0; i < 0x40; i++) {
@@ -1593,10 +1811,9 @@ int dMeter2Info_setNewLetterSender() {
u16 letterEvent = dMenu_Letter::getLetterEventFlag(i);
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[letterEvent])) {
if (check == 0) {
u16 letterName = dMenu_Letter::getLetterName(i);
dMsgObject_c::setLetterNameID(letterName);
dMsgObject_setLetterNameID(dMenu_Letter::getLetterName(i));
} else {
dMsgObject_c::setLetterNameID(0);
dMsgObject_setLetterNameID(0);
return 0;
}
check++;
@@ -1604,7 +1821,7 @@ int dMeter2Info_setNewLetterSender() {
}
}
return 0;
return ret;
}
int dMeter2Info_recieveLetter() {
@@ -1636,6 +1853,33 @@ int dMeter2Info_recieveLetter() {
return rv;
}
#if WIDESCREEN_SUPPORT
f32 dMeter2Info_getWide2DPosX(f32* param_0) {
J2DOrthoGraph graf(0.0f, 0.0f, 640.0f, 456.0f, -1.0f, 1.0f);
graf.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(), -1.0f, 1.0f);
JGeometry::TBox2<f32>* bounds = graf.getBounds();
const JGeometry::TBox2<f32>* ortho = graf.getOrtho();
f32 var_f31 = 304.0f;
f32 var_f30 = 608.0f / (ortho->f.x - ortho->i.x);
f32 var_f29 = *param_0 - var_f31;
*param_0 = var_f29 * var_f30 + var_f31;
return *param_0;
}
void dMeter2Info_onWide2D() {
g_ringHIO.updateOnWide();
g_drawHIO.updateOnWide();
}
void dMeter2Info_offWide2D() {
g_ringHIO.updateOffWide();
g_drawHIO.updateOffWide();
}
#endif
void dMeter2Info_set2DVibrationT() {}
void dMeter2Info_set2DVibration() {}
void dMeter2Info_set2DVibrationM() {}
+161 -34
View File
@@ -8,7 +8,38 @@
#include "d/d_path.h"
#include "d/d_com_inf_game.h"
dPnt* dPath_GetPnt(dPath const* path, int pnt_index) {
#if DEBUG
#include "d/d_debug_viewer.h"
#endif
class dPath_HIO : public JORReflexible {
public:
dPath_HIO() {}
~dPath_HIO();
void genMessage(JORMContext* mctx) {
mctx->genCheckBox("デバッグ表示", &flags, 2);
mctx->genSlider("部屋番号", &roomNo, -2, 64);
mctx->genLabel("-3=現在プレイヤーのいる部屋, -2=旧常駐、-1=常駐", 0);
}
void Ct() {
flags = 0;
roomNo = -3;
}
int GetRoomNo() { return roomNo; }
bool ChkDispLine() { return flags & 2; }
/* 0x4 */ s8 id;
/* 0x6 */ u16 flags;
/* 0x8 */ s16 roomNo;
};
dPnt* dPath_GetPnt(const dPath* path, int pnt_index) {
JUT_ASSERT(27, path != NULL);
JUT_ASSERT(28, 0 <= pnt_index && pnt_index < path->m_num);
if (path == NULL || path->m_points == NULL || pnt_index < 0 || pnt_index >= path->m_num) {
return NULL;
}
@@ -17,116 +48,212 @@ dPnt* dPath_GetPnt(dPath const* path, int pnt_index) {
}
dPath* dPath_GetRoomPath(int path_index, int room_no) {
dStage_dPath_c* path;
dStage_dPath_c* pd;
if (room_no == -1) {
path = dComIfGp_getStage()->getPath2Inf();
dStage_dt_c* stage = dComIfGp_getStage();
pd = stage->getPath2Inf();
} else {
JUT_ASSERT(58, 0 <= room_no && room_no < 64);
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(room_no);
if (roomDt == NULL) {
return NULL;
}
path = roomDt->getPath2Inf();
pd = roomDt->getPath2Inf();
}
if (path == NULL || path_index < 0 || path_index >= path->m_num) {
if (pd == NULL || path_index < 0 || path_index >= pd->num) {
return NULL;
}
return &path->m_path[path_index];
return &pd->m_path[path_index];
}
dPath* dPath_GetNextRoomPath(dPath const* p_path, int room_no) {
dStage_dPath_c* path;
dPath* dPath_GetNextRoomPath(const dPath* path, int room_no) {
dStage_dPath_c* pd;
if (room_no == -1) {
path = dComIfGp_getStage()->getPath2Inf();
dStage_dt_c* stage = dComIfGp_getStage();
pd = stage->getPath2Inf();
} else {
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(room_no);
if (roomDt == NULL) {
return NULL;
}
path = roomDt->getPath2Inf();
pd = roomDt->getPath2Inf();
}
int next_id = p_path->m_nextID;
if (path == NULL || next_id == 0xFFFF) {
int next_id = path->m_nextID;
if (pd == NULL || next_id == 0xFFFF) {
return NULL;
}
if (next_id < 0 || next_id >= path->m_num) {
JUT_ASSERT(111, 0 <= next_id && next_id < pd->num);
if (next_id < 0 || next_id >= pd->num) {
return NULL;
}
return &path->m_path[next_id];
return &pd->m_path[next_id];
}
#if !PLATFORM_GCN // Fakematch due to differing return type on non-GCN platforms
int dPath_GetPolyRoomPathVec(cBgS_PolyInfo const& poly, cXyz* p_pathVec, int* param_2) {
int dPath_GetPolyRoomPathVec(const cBgS_PolyInfo& polyinfo, cXyz* vec, int* param_2)
#else
u8 dPath_GetPolyRoomPathVec(cBgS_PolyInfo const& poly, cXyz* p_pathVec, int* param_2) {
u8 dPath_GetPolyRoomPathVec(const cBgS_PolyInfo& polyinfo, cXyz* vec, int* param_2)
#endif
int roomId = dComIfG_Bgsp().GetRoomId(poly);
int roomPathId = dComIfG_Bgsp().GetRoomPathId(poly);
{
int room_no = dComIfG_Bgsp().GetRoomId(polyinfo);
int path_idx = dComIfG_Bgsp().GetRoomPathId(polyinfo);
p_pathVec->x = 0.0f;
p_pathVec->y = 0.0f;
p_pathVec->z = 0.0f;
vec->x = 0.0f;
vec->y = 0.0f;
vec->z = 0.0f;
*param_2 = 0;
if (roomId == -1) {
if (room_no == -1) {
return 0;
}
dPath* path = dPath_GetRoomPath(roomPathId, roomId);
dPath* path = dPath_GetRoomPath(path_idx, room_no);
if (path == NULL) {
return 0;
}
if (path->field_0x6 != 0xFF && dComIfGs_isSwitch(path->field_0x6, roomId)) {
if (path->swbit != 0xFF && dComIfGs_isSwitch(path->swbit, room_no)) {
return 0;
}
int pnt_no = dComIfG_Bgsp().GetRoomPathPntNo(poly);
int pnt_no = dComIfG_Bgsp().GetRoomPathPntNo(polyinfo);
if (pnt_no == 0xFF || pnt_no < 0 || pnt_no >= path->m_num) {
return 0;
}
dPnt* pnt_start = path->m_points;
dPnt* pnt_end = &pnt_start[pnt_no];
dPnt* pnt_end = &path->m_points[pnt_no];
dPnt* pnt_begin;
if (pnt_no == path->m_num - 1) {
pnt_begin = pnt_start;
pnt_begin = path->m_points;
} else {
pnt_begin = &pnt_start[pnt_no + 1];
pnt_begin = &path->m_points[pnt_no + 1];
}
p_pathVec->x = pnt_begin->m_position.x - pnt_end->m_position.x;
p_pathVec->y = pnt_begin->m_position.y - pnt_end->m_position.y;
p_pathVec->z = pnt_begin->m_position.z - pnt_end->m_position.z;
vec->x = pnt_begin->m_position.x - pnt_end->m_position.x;
vec->y = pnt_begin->m_position.y - pnt_end->m_position.y;
vec->z = pnt_begin->m_position.z - pnt_end->m_position.z;
*param_2 = path->field_0x4;
return 1;
}
#if DEBUG
dPath_HIO::~dPath_HIO() {}
static dPath_HIO s_hio;
#endif
#if VERSION == VERSION_SHIELD_DEBUG
void dPath_Ct() {
#if DEBUG
s_hio.Ct();
s_hio.id = mDoHIO_CREATE_CHILD("レール", &s_hio);
#endif
}
void dPath_Dt() {
#if DEBUG
#endif
mDoHIO_DELETE_CHILD(s_hio.id);
}
void dPath_Move() {}
void dPath_Draw() {
#if DEBUG
if (s_hio.ChkDispLine()) {
static int start_counter;
int counter = start_counter / 20;
dStage_dPath_c* pd;
int hio_roomNo = s_hio.GetRoomNo();
if (hio_roomNo == -3) {
int roomNo = dComIfGp_roomControl_getStayNo();
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(roomNo);
if (roomDt == NULL) {
return;
}
pd = roomDt->getPath2Inf();
} else if (hio_roomNo == -2) {
pd = dComIfGp_getStage()->getPathInf();
} else if (hio_roomNo == -1) {
pd = dComIfGp_getStage()->getPath2Inf();
} else {
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(hio_roomNo);
if (roomDt == NULL) {
return;
}
pd = roomDt->getPath2Inf();
}
if (pd != NULL) {
dPath* path = pd->m_path;
for (int i = 0; i < pd->num; i++) {
if (path->m_num >= 1) {
dPnt* pnt = path->m_points;
cXyz start_pos;
cXyz end_pos;
for (int j = 0; j < path->m_num - 1; j++) {
start_pos.set(pnt[0].m_position);
end_pos.set(pnt[1].m_position);
if (counter == 0) {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0xFF, 0xFF, 0xFF}, TRUE, 12);
} else {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0, 0, 0xFF}, TRUE, 12);
}
counter++;
if (counter >= 8) {
counter = 0;
}
pnt++;
}
if (dPath_ChkClose(path)) {
start_pos.set(pnt[0].m_position);
end_pos.set(path[1].m_points->m_position);
if (counter == 0) {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0xFF, 0xFF, 0xFF}, TRUE, 12);
} else {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0, 0, 0xFF}, TRUE, 12);
}
counter++;
if (counter >= 8) {
counter = 0;
}
}
}
path++;
}
}
start_counter--;
if (start_counter < 0) {
start_counter = 160;
}
}
#endif
}
static void dummy() {
cXyz pos;
GXColor color;
dDbVw_drawSphereOpa(pos, 0.0f, color, 0);
}
#endif
+2 -2
View File
@@ -2137,7 +2137,7 @@ static int dStage_pathInfoInit(dStage_dt_c* i_stage, void* i_data, int entryNum,
i_stage->setPathInfo(path_c);
for (int i = 0; i < path_c->m_num; i++) {
for (int i = 0; i < path_c->num; i++) {
#if TARGET_PC
path->m_points.setBase(i_stage->getPntInf()->m_pnt_offset);
#else
@@ -2166,7 +2166,7 @@ static int dStage_rpatInfoInit(dStage_dt_c* i_stage, void* i_data, int i_num, vo
dPath* pPath = pStagePath->m_path;
i_stage->setPath2Info(pStagePath);
for (s32 i = 0; i < pStagePath->m_num; pPath++, i++, (void)0) {
for (s32 i = 0; i < pStagePath->num; pPath++, i++, (void)0) {
#if TARGET_PC
pPath->m_points.setBase(i_stage->getPnt2Inf()->m_pnt_offset);
#else
+27
View File
@@ -59,3 +59,30 @@ const vib_pattern dVibration_c::CQ_patt[VIBMODE_Q_MAX] = {
/* VIBMODE_Q_POWER8 */ {4, 32, 0x6B6D6B6D},
/* VIBMODE_Q_HORSE */ {0, 27, 0x20201000},
};
const char* shock_names[VIBMODE_S_MAX] = {
"VIBMODE_S_CUSTOM",
"VIBMODE_S_POWER1",
"VIBMODE_S_POWER2",
"VIBMODE_S_POWER3",
"VIBMODE_S_POWER4",
"VIBMODE_S_POWER5",
"VIBMODE_S_POWER6",
"VIBMODE_S_POWER7",
"VIBMODE_S_POWER8",
"VIBMODE_S_DOKUTT",
"VIBMODE_S_FOR2D",
};
const char* quake_names[VIBMODE_Q_MAX] = {
"VIBMODE_Q_CUSTOM",
"VIBMODE_Q_POWER1",
"VIBMODE_Q_POWER2",
"VIBMODE_Q_POWER3",
"VIBMODE_Q_POWER4",
"VIBMODE_Q_POWER5",
"VIBMODE_Q_POWER6",
"VIBMODE_Q_POWER7",
"VIBMODE_Q_POWER8",
"VIBMODE_Q_HORSE",
};
+367 -52
View File
@@ -5,6 +5,7 @@
#include "f_op/f_op_camera_mng.h"
#include "m_Do/m_Do_controller_pad.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_s_play.h"
#include <climits>
#define RESET_FRAME -99
@@ -31,27 +32,30 @@ s32 rollshift(u32 pattern, s32 length, s32 index) {
#else
index %= length;
#endif
return (pattern >> index) | (pattern << (length - index));
u32 var_r31 = pattern;
return (var_r31 >> index) | (var_r31 << (length - index));
}
u32 makebits(u32 bits, s32 length, s32 numbits) {
bits &= (-1 << (32 - length));
u32 mask = bits;
s32 i;
u32 mask = bits & (-1 << (32 - length));
bits = mask;
for (i = length; i < numbits; i += length) {
bits = mask | (bits >> length);
mask = bits | (mask >> length);
}
return bits;
return mask;
}
u32 randombit(s32 rounds, s32 length) {
u32 value = 0;
int i;
for (int i = 0; i < rounds; i++) {
for (i = 0; i < rounds; i++) {
value |= 0x40000000 >> (u32)(length * cM_rnd());
}
return value;
}
};
@@ -70,10 +74,13 @@ int dVibration_c::Run() {
mMotor.mQuake.field_0x0 |= 1;
}
mMotor.mQuake.mFrame = RESET_FRAME;
mMotor.mShock.mFrame = RESET_FRAME;
mMotor.mShock.mFrame = mMotor.mQuake.mFrame = RESET_FRAME;
}
#if DEBUG
testShake();
#endif
if ((mCamera.mShock.field_0x0 & 1) && mCamera.mShock.mFrame != RESET_FRAME) {
mCamera.mShock.mFrame = 0;
mCamera.mShock.mVibMode = VIBMODE_S_NONE;
@@ -85,6 +92,8 @@ int dVibration_c::Run() {
}
if (mCamera.mShock.mFrame == 0 || mCamera.mQuake.mFrame == 0) {
s32 pattern;
u32 sp1C = 0;
u32 rumble = 0;
if (mCamera.mShock.mVibMode == VIBMODE_S_NONE || (mCamera.mShock.field_0x0 & 1)) {
mCamera.mShock.mFrame = RESET_FRAME;
@@ -104,7 +113,7 @@ int dVibration_c::Run() {
rumble |= RUMBLE_QUAKE;
}
s32 length, pattern, bits, flags;
s32 length, bits, flags;
switch (rumble) {
case RUMBLE_SHOCK:
length = mCamera.mShock.mLength;
@@ -119,6 +128,12 @@ int dVibration_c::Run() {
if (dComIfGp_getCamera(0) != NULL && dComIfGp_getCamera(0)->field_0x22f == 0x47) {
dCam_getBody()->StartShake(length, (u8*)&pattern, flags, mCamera.mShock.mPos.norm());
}
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: start camera(%d) %x %d\n", mFrame, rumble, pattern, length);
}
#endif
break;
case RUMBLE_QUAKE:
length = mCamera.mQuake.mLength;
@@ -133,11 +148,18 @@ int dVibration_c::Run() {
if (dComIfGp_getCamera(0) != NULL && dComIfGp_getCamera(0)->field_0x22f == 0x47) {
dCam_getBody()->StartShake(length, (u8*)&pattern, flags, mCamera.mQuake.mPos.norm());
}
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: start camera(%d) %x %d\n", mFrame, rumble, pattern, length);
}
#endif
break;
case RUMBLE_SHOCK | RUMBLE_QUAKE:
pattern = mCamera.mShock.mPattern << mCamera.mShock.mFrame;
length = mCamera.mShock.mLength - mCamera.mShock.mFrame;
pattern |= rollshift(makebits(mCamera.mQuake.mPattern, mCamera.mQuake.mLength, length), length, mFrame);
sp1C = makebits(mCamera.mQuake.mPattern, mCamera.mQuake.mLength, length);
pattern |= rollshift(sp1C, length, mFrame);
pattern |= randombit(mCamera.mShock.mRounds > mCamera.mQuake.mRounds ? mCamera.mShock.mRounds : mCamera.mQuake.mRounds, length);
flags = mCamera.mShock.mFlags | mCamera.mQuake.mFlags;
@@ -149,13 +171,24 @@ int dVibration_c::Run() {
dCam_getBody()->StartShake(length, (u8*)&pattern, flags, cXyz(mCamera.mShock.mPos + mCamera.mQuake.mPos).norm());
}
mCamera.mQuake.mFrame = 0;
mCamera.mShock.mFrame = 0;
mCamera.mShock.mFrame = mCamera.mQuake.mFrame = 0;
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: start camera(%d) %x %d\n", mFrame, rumble, pattern, length);
}
#endif
break;
default:
if (dComIfGp_getCamera(0) != NULL && dComIfGp_getCamera(0)->field_0x22f == 0x47) {
dCam_getBody()->StopShake();
}
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: stop camera\n", mFrame);
}
#endif
break;
}
}
@@ -171,6 +204,7 @@ int dVibration_c::Run() {
}
if (mMotor.mShock.mFrame == 0 || mMotor.mQuake.mFrame == 0) {
s32 sp14 = 0;
u32 rumble = 0;
if (mMotor.mShock.mVibMode == VIBMODE_S_NONE || (mMotor.mShock.field_0x0 & 1)) {
mMotor.mShock.mFrame = RESET_FRAME;
@@ -199,39 +233,64 @@ int dVibration_c::Run() {
pattern = mMotor.mShock.mPattern;
pattern |= randombit(mMotor.mShock.mRounds, length);
mMotor.mShock.mStopFrame = length;
mDoCPd_c::startMotorWave(PAD_1, makedata(data, pattern, length), JUTGamePad::CRumble::VAL_0, 60);
mDoCPd_c::startMotorWave(PAD_1, (u8*)makedata(data, pattern, length), JUTGamePad::CRumble::VAL_0, 60);
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: start motor (%d) %x %d\n", mFrame, rumble, pattern, length);
}
#endif
break;
case RUMBLE_QUAKE:
length = mMotor.mQuake.mLength;
pattern = rollshift(mMotor.mQuake.mPattern, length, mFrame);
pattern |= randombit(mMotor.mQuake.mRounds, length);
mMotor.mQuake.mStopFrame = INT_MAX;
mDoCPd_c::startMotorWave(PAD_1, makedata(data, pattern, length), JUTGamePad::CRumble::VAL_1, 60);
OS_REPORT("d_vibration mDoCPd_c::startMotorWave\n");
mDoCPd_c::startMotorWave(PAD_1, (u8*)makedata(data, pattern, length), JUTGamePad::CRumble::VAL_1, 60);
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: start motor (%d) %x %d\n", mFrame, rumble, pattern, length);
}
#endif
break;
case RUMBLE_SHOCK | RUMBLE_QUAKE:
pattern = mMotor.mShock.mPattern << mMotor.mShock.mFrame;
length = mMotor.mShock.mLength - mMotor.mShock.mFrame;
pattern |= rollshift(makebits(mMotor.mQuake.mPattern, mMotor.mQuake.mLength, length), length, mFrame);
sp14 = makebits(mMotor.mQuake.mPattern, mMotor.mQuake.mLength, length);
pattern |= rollshift(sp14, length, mFrame);
pattern |= randombit(mMotor.mShock.mRounds > mMotor.mQuake.mRounds ? mMotor.mShock.mRounds : mMotor.mQuake.mRounds, length);
mMotor.mQuake.mStopFrame = length;
mMotor.mShock.mStopFrame = length;
mMotor.mQuake.mFrame = 0;
mMotor.mShock.mFrame = 0;
mDoCPd_c::startMotorWave(PAD_1, makedata(data, pattern, length), JUTGamePad::CRumble::VAL_0, 60);
mMotor.mShock.mFrame = mMotor.mQuake.mFrame = 0;
mDoCPd_c::startMotorWave(PAD_1, (u8*)makedata(data, pattern, length), JUTGamePad::CRumble::VAL_0, 60);
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: start motor (%d) %x %d\n", mFrame, rumble, pattern, length);
}
#endif
break;
default:
mDoCPd_c::stopMotorWave(PAD_1);
mDoCPd_c::stopMotor(PAD_1);
mMotor.mQuake.mStopFrame = RESET_FRAME;
mMotor.mShock.mStopFrame = RESET_FRAME;
mMotor.mShock.mStopFrame = mMotor.mQuake.mStopFrame = RESET_FRAME;
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: stop motor\n", mFrame);
}
#endif
break;
}
}
mCamera.mQuake.field_0x0 = 0;
mCamera.mShock.field_0x0 = 0;
mMotor.mQuake.field_0x0 = 0;
mMotor.mShock.field_0x0 = 0;
mCamera.mShock.field_0x0 = mCamera.mQuake.field_0x0 = 0;
mMotor.mShock.field_0x0 = mMotor.mQuake.field_0x0 = 0;
if (mCamera.mShock.mFrame >= 0) {
mCamera.mShock.mFrame++;
@@ -259,9 +318,22 @@ int dVibration_c::Run() {
if (mMotor.mQuake.mFrame >= 930) {
mMotor.mQuake.mFrame = 0;
#if DEBUG
if (mVibTest.m_displayDbg & 0x8000) {
OS_REPORT("vibration: %06d: stop motor @ limit restart\n", mFrame);
}
#endif
} else if (mMotor.mQuake.mFrame >= 900) {
mDoCPd_c::stopMotorWave(PAD_1);
mDoCPd_c::stopMotor(PAD_1);
#if DEBUG
if ((mVibTest.m_displayDbg & 0x8000) && mMotor.mQuake.mFrame == 900) {
OS_REPORT("vibration: %06d: stop motor @ limit\n", mFrame);
}
#endif
mMotor.mQuake.mFrame++;
} else if (mMotor.mQuake.mFrame >= 0) {
mMotor.mQuake.mFrame++;
@@ -297,6 +369,12 @@ bool dVibration_c::StartShock(int i_vibmode, int i_flags, cXyz i_pos) {
ret = true;
}
#if DEBUG
if ((mVibTest.m_displayDbg & 0x8000) && ret) {
OS_REPORT("vibration: %06d: start shock %d %d\n", mFrame, i_vibmode, i_flags);
}
#endif
return ret;
}
@@ -322,6 +400,12 @@ bool dVibration_c::StartQuake(int i_vibmode, int i_flags, cXyz i_pos) {
ret = true;
}
#if DEBUG
if ((mVibTest.m_displayDbg & 0x8000) && ret) {
OS_REPORT("vibration: %06d: start quake %d %d\n", mFrame, i_vibmode, i_flags);
}
#endif
return ret;
}
@@ -354,6 +438,12 @@ bool dVibration_c::StartQuake(const u8* i_pattern, int i_rounds, int i_flags, cX
ret = true;
}
#if DEBUG
if ((mVibTest.m_displayDbg & 0x8000) && ret) {
OS_REPORT("vibration: %06d: start quake %x %d %d\n", mFrame, bits, i_rounds, i_flags);
}
#endif
return ret;
}
@@ -374,9 +464,114 @@ int dVibration_c::StopQuake(int i_flags) {
ret = TRUE;
}
#if DEBUG
if ((mVibTest.m_displayDbg & 0x8000) && ret) {
OS_REPORT("vibration: %06d: stop quake %d\n", mFrame, i_flags);
}
#endif
return ret;
}
#if DEBUG
int dVibration_c::testShake() {
int var_r29, var_r28;
int ret = FALSE;
s32 cam_bits, cam_len, cam_rounds;
s32 motor_bits, motor_len, motor_rounds;
switch (mVibTest.field_0x10) {
case 10:
if (mVibTest.m_vibswitch >= 1 && mVibTest.m_vibswitch < 100) {
var_r29 = mVibTest.m_vibswitch;
cam_bits = CS_patt[var_r29].bits;
cam_len = CS_patt[var_r29].length;
cam_rounds = CS_patt[var_r29].rounds;
motor_bits = MS_patt[var_r29].bits;
motor_len = MS_patt[var_r29].length;
motor_rounds = MS_patt[var_r29].rounds;
OS_REPORT("vibration: TEST C b %x l %d r %d\n", cam_bits, cam_len, cam_rounds);
OS_REPORT("(SHOCK) m %2d M b %x l %d r %d\n", motor_bits, motor_len, motor_rounds);
} else {
motor_bits = cam_bits = (mVibTest.m_pattern << 0x10) | mVibTest.m_pattern2;
motor_len = cam_len = mVibTest.m_length;
motor_rounds = cam_rounds = mVibTest.m_randombit;
}
if (mVibTest.field_0xa & 0x7E) {
mCamera.mShock.mVibMode = 0;
mCamera.mShock.mFrame = 0;
mCamera.mShock.mFlags = mVibTest.field_0xa;
mCamera.mShock.mPos = cXyz(0.0f, 1.0f, 0.0f);
mCamera.mShock.mPattern = cam_bits;
mCamera.mShock.mLength = cam_len;
mCamera.mShock.mRounds = cam_rounds;
}
if (mVibTest.field_0xa & 1) {
mMotor.mShock.mVibMode = 0;
mMotor.mShock.mFrame = 0;
mMotor.mShock.mPattern = motor_bits;
mMotor.mShock.mLength = motor_len;
mMotor.mShock.mRounds = motor_rounds;
}
mVibTest.field_0x10 = 0;
ret = TRUE;
break;
case 20:
if (mVibTest.m_vibswitch >= 100 && mVibTest.m_vibswitch < 200) {
var_r28 = mVibTest.m_vibswitch - 100;
cam_bits = CQ_patt[var_r28].bits;
cam_len = CQ_patt[var_r28].length;
cam_rounds = CQ_patt[var_r28].rounds;
motor_bits = MQ_patt[var_r28].bits;
motor_len = MQ_patt[var_r28].length;
motor_rounds = MQ_patt[var_r28].rounds;
OS_REPORT("vibration: TEST C b %x l %d r %d\n", cam_bits, cam_len, cam_rounds);
OS_REPORT("(QUAKE) m %2d M b %x l %d r %d\n", motor_bits, motor_len, motor_rounds);
} else {
motor_bits = cam_bits = (mVibTest.m_pattern << 0x10) | mVibTest.m_pattern2;
motor_len = cam_len = mVibTest.m_length;
motor_rounds = cam_rounds = mVibTest.m_randombit;
}
if (mVibTest.field_0xa & 0x7E) {
mCamera.mQuake.mVibMode = 0;
mCamera.mQuake.mFrame = 0;
mCamera.mQuake.mFlags = mVibTest.field_0xa;
mCamera.mQuake.mPos = cXyz(0.0f, 1.0f, 0.0f);
mCamera.mQuake.mPattern = cam_bits;
mCamera.mQuake.mLength = cam_len;
mCamera.mQuake.mRounds = cam_rounds;
}
if (mVibTest.field_0xa & 1) {
mMotor.mQuake.mVibMode = 0;
mMotor.mQuake.mFrame = 0;
mMotor.mQuake.mPattern = motor_bits;
mMotor.mQuake.mLength = motor_len;
mMotor.mQuake.mRounds = motor_rounds;
}
mVibTest.field_0x10 = 0;
ret = TRUE;
break;
case 21:
OS_REPORT("vibration: TEST STOP\n");
StopQuake(0x1F);
mVibTest.field_0x10 = 0;
break;
}
return ret;
}
#endif
void dVibration_c::Kill() {
mDoCPd_c::stopMotorWaveHard(PAD_1);
mDoCPd_c::stopMotorHard(PAD_1);
@@ -388,30 +583,18 @@ bool dVibration_c::CheckQuake() {
}
void dVibration_c::setDefault() {
mMotor.mShock.mVibMode = VIBMODE_S_NONE;
mCamera.mShock.mVibMode = VIBMODE_S_NONE;
mMotor.mQuake.mVibMode = VIBMODE_Q_NONE;
mCamera.mQuake.mVibMode = VIBMODE_Q_NONE;
mMotor.mShock.field_0x0 = 0;
mCamera.mShock.field_0x0 = 0;
mMotor.mQuake.field_0x0 = 0;
mCamera.mQuake.field_0x0 = 0;
mMotor.mShock.mPattern = 0;
mCamera.mShock.mPattern = 0;
mMotor.mQuake.mPattern = 0;
mCamera.mQuake.mPattern = 0;
mMotor.mShock.mLength = 0;
mCamera.mShock.mLength = 0;
mMotor.mQuake.mLength = 0;
mCamera.mQuake.mLength = 0;
mMotor.mShock.mRounds = 0;
mCamera.mShock.mRounds = 0;
mMotor.mQuake.mRounds = 0;
mCamera.mQuake.mRounds = 0;
mMotor.mShock.mFrame = RESET_FRAME;
mCamera.mShock.mFrame = RESET_FRAME;
mMotor.mQuake.mFrame = RESET_FRAME;
mCamera.mQuake.mFrame = RESET_FRAME;
mCamera.mShock.mVibMode = mMotor.mShock.mVibMode = VIBMODE_S_NONE;
mCamera.mQuake.mVibMode = mMotor.mQuake.mVibMode = VIBMODE_Q_NONE;
mCamera.mShock.field_0x0 = mMotor.mShock.field_0x0 = 0;
mCamera.mQuake.field_0x0 = mMotor.mQuake.field_0x0 = 0;
mCamera.mShock.mPattern = mMotor.mShock.mPattern = 0;
mCamera.mQuake.mPattern = mMotor.mQuake.mPattern = 0;
mCamera.mShock.mLength = mMotor.mShock.mLength = 0;
mCamera.mQuake.mLength = mMotor.mQuake.mLength = 0;
mCamera.mShock.mRounds = mMotor.mShock.mRounds = 0;
mCamera.mQuake.mRounds = mMotor.mQuake.mRounds = 0;
mCamera.mShock.mFrame = mMotor.mShock.mFrame = RESET_FRAME;
mCamera.mQuake.mFrame = mMotor.mQuake.mFrame = RESET_FRAME;
mMotor.mShock.mStopFrame = RESET_FRAME;
mMotor.mQuake.mStopFrame = RESET_FRAME;
mMode = MODE_WAIT;
@@ -421,6 +604,10 @@ void dVibration_c::setDefault() {
void dVibration_c::Init() {
Kill();
setDefault();
#if DEBUG
mVibTest.Init();
#endif
}
void dVibration_c::Pause() {
@@ -430,10 +617,8 @@ void dVibration_c::Pause() {
mDoCPd_c::stopMotorHard(PAD_1);
}
mMotor.mShock.mVibMode = VIBMODE_S_NONE;
mCamera.mShock.mVibMode = VIBMODE_S_NONE;
mMotor.mShock.mFrame = RESET_FRAME;
mCamera.mShock.mFrame = RESET_FRAME;
mCamera.mShock.mVibMode = mMotor.mShock.mVibMode = VIBMODE_S_NONE;
mCamera.mShock.mFrame = mMotor.mShock.mFrame = RESET_FRAME;
if (mCamera.mQuake.mVibMode != VIBMODE_Q_NONE) {
mCamera.mQuake.mFrame = 0;
@@ -449,3 +634,133 @@ void dVibration_c::Pause() {
void dVibration_c::Remove() {
Kill();
}
#if DEBUG
void dVibTest_c::setDefault() {
m_pattern = m_pattern2 = 0;
field_0xa = 0;
field_0x10 = 0;
m_randombit = 0;
m_vibswitch = 0;
m_displayDbg = 0;
m_length = 32;
}
dVibTest_c::dVibTest_c() {
setDefault();
id = mDoHIO_CREATE_CHILD("振動処理", this);
}
dVibTest_c::~dVibTest_c() {
mDoHIO_DELETE_CHILD(id);
}
void dVibTest_c::Init() {
setDefault();
}
void dVibTest_c::genMessage(JORMContext* mctx) {
int i;
mctx->genLabel("- パターン", 0, 0);
mctx->genCheckBox(" ", &m_pattern, 0x8000, 0, NULL, 10, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x4000, 0, NULL, 0x1e, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x2000, 0, NULL, 0x32, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x1000, 0, NULL, 0x46, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x800, 0, NULL, 0x5a, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x400, 0, NULL, 0x6e, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x200, 0, NULL, 0x82, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x100, 0, NULL, 0x96, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x80, 0, NULL, 0xaa, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x40, 0, NULL, 0xbe, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x20, 0, NULL, 0xd2, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 0x10, 0, NULL, 0xe6, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 8, 0, NULL, 0xfa, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 4, 0, NULL, 0x10e, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 2, 0, NULL, 0x122, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern, 1, 0, NULL, 0x136, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x8000, 0, NULL, 0x14a, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x4000, 0, NULL, 0x15e, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x2000, 0, NULL, 0x172, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x1000, 0, NULL, 0x186, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x800, 0, NULL, 0x19a, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x400, 0, NULL, 0x1ae, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x200, 0, NULL, 0x1c2, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x100, 0, NULL, 0x1d6, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x80, 0, NULL, 0x1ea, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x40, 0, NULL, 0x1fe, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x20, 0, NULL, 0x212, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 0x10, 0, NULL, 0x226, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 8, 0, NULL, 0x23a, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 4, 0, NULL, 0x24e, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 2, 0, NULL, 0x262, 0x14, 0x14, 0x14);
mctx->genCheckBox(" ", &m_pattern2, 1, 0, NULL, 0x276, 0x14, 0x14, 0x14);
mctx->genLabel("-", 0, 0);
mctx->startComboBox("振動切替", &m_vibswitch, 0x130);
for (i = 0; i < 11; i++) {
mctx->genComboBoxItem(shock_names[i], i);
}
for (i = 0; i < 10; i++) {
mctx->genComboBoxItem(quake_names[i], i + 100);
}
mctx->endComboBox();
mctx->genLabel("- VIBMODE_S_* は衝撃型用、VIBMODE_Q_* は地震型用です", 0);
mctx->genLabel("-", 0);
mctx->genLabel("- タイプ", 0);
mctx->genCheckBox("振動パック", &field_0xa, 1, 0);
mctx->genCheckBox("座標揺れ", &field_0xa, 2, 0);
mctx->genCheckBox("座標揺れ(強)", &field_0xa, 0x40, 0);
mctx->genCheckBox("画角揺れ", &field_0xa, 4, 0);
mctx->genCheckBox("Z揺れ", &field_0xa, 8, 0);
mctx->genCheckBox("ブラー", &field_0xa, 0x10, 0);
mctx->genLabel("-", 0);
mctx->genSlider("長さ", &m_length, 0, 0x20);
mctx->genSlider("ランダムビット", &m_randombit, 0, 0x20);
mctx->genLabel("-", 0);
mctx->genButton("衝撃型揺れ開始", 0x12d, 0);
mctx->genButton("地震型揺れ開始", 0x12e, 0);
mctx->genButton("地震型揺れ停止", 0x12f, 0);
mctx->genLabel("-", 0, 0);
mctx->genCheckBox(" デバッグ表示", &m_displayDbg, 0x8000);
mctx->genLabel("-", 0, 0);
mctx->genLabel("-", 0, 0);
mctx->genButton("揺れ実験(強)", 0x131, 0);
mctx->genButton("揺れ実験(中)", 0x132, 0);
mctx->genButton("揺れ実験(弱)", 0x133, 0);
mctx->genLabel("-", 0, 0);
mctx->genLabel("-", 0, 0);
}
void dVibTest_c::listenPropertyEvent(const JORPropertyEvent* event) {
JORReflexible::listenPropertyEvent(event);
switch ((int)event->id) {
case 0x12D:
field_0x10 = 10;
break;
case 0x12E:
field_0x10 = 20;
break;
case 0x12F:
field_0x10 = 21;
break;
case 0x131:
dComIfGp_getVibration().StartShock(XREG_S(1) + 8, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
break;
case 0x132:
dComIfGp_getVibration().StartShock(XREG_S(2) + 4, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
break;
case 0x133:
dComIfGp_getVibration().StartShock(XREG_S(3) + 2, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
break;
}
}
#endif