mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-10 12:54:50 -04:00
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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, ¤t.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, ¤t.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, ¤t.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(¤t.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 = {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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] = {
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user