d_path / d_vibration debug work (#3138)

* dpath debug

* dvibration debug

* d_meter2_info debug

* gcyl/gpsh debug
This commit is contained in:
TakaRikka
2026-03-29 16:43:00 -07:00
committed by GitHub
parent c98b96f94e
commit cb6ee4b21e
16 changed files with 869 additions and 124 deletions
+1 -4
View File
@@ -321,6 +321,7 @@ int dMeter2Info_setNewLetterSender();
bool dMeter2Info_isItemOpenCheck();
bool dMeter2Info_isMapOpenCheck();
s16 dMeter2Info_getNowLifeGauge();
bool dMeter2Info_isNextStage(const char*, s16, s16, s16);
#if WIDESCREEN_SUPPORT
void dMeter2Info_onWide2D();
@@ -844,10 +845,6 @@ inline void dMeter2Info_onTempBit(int i_bit) {
g_meter2_info.onTempBit(i_bit);
}
inline bool dMeter2Info_isNextStage(const char*, s16, s16, s16) {
return false;
}
inline void dMeter2Info_setFloatingMessage(u16 i_msgID, s16 i_msgTimer, bool i_wakuVisible) {
g_meter2_info.setFloatingMessage(i_msgID, i_msgTimer, i_wakuVisible);
}
+4
View File
@@ -562,6 +562,10 @@ inline void dMsgObject_setOffering(u16 i_num) {
dComIfGs_setEventReg(0xF8FF, i_num & 0xFF);
}
inline void dMsgObject_setLetterNameID(u16 id) {
dMsgObject_getMsgObjectClass()->setLetterNameID(id);
}
class dMsgObject_HowlHIO_c {
public:
dMsgObject_HowlHIO_c();
+1 -1
View File
@@ -20,7 +20,7 @@ struct dPath {
/* 0x2 */ u16 m_nextID;
/* 0x4 */ u8 field_0x4;
/* 0x5 */ bool m_closed;
/* 0x6 */ u8 field_0x6;
/* 0x6 */ u8 swbit;
/* 0x7 */ u8 field_0x7;
/* 0x8 */ dPnt* m_points;
};
+1 -1
View File
@@ -263,7 +263,7 @@ struct dStage_MemoryConfig_c {
// PATH / RPAT
struct dPath;
struct dStage_dPath_c {
/* 0x0 */ int m_num;
/* 0x0 */ int num;
/* 0x4 */ dPath* m_path;
};
+13 -3
View File
@@ -47,18 +47,21 @@ class dVibTest_c : public JORReflexible {
public:
dVibTest_c();
void Init();
void setDefault();
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
virtual ~dVibTest_c() {}
virtual ~dVibTest_c();
/* 0x04 */ s8 field_0x4;
/* 0x04 */ s8 id;
/* 0x06 */ u16 m_pattern;
/* 0x08 */ u16 m_pattern2;
/* 0x0A */ u16 field_0xa;
/* 0x0C */ s16 m_randombit;
/* 0x0E */ s16 m_length;
/* 0x10 */ int field_0x10;
/* 0x14 */ int m_vibswitch;
/* 0x14 */ s32 m_vibswitch;
/* 0x18 */ u16 m_displayDbg;
};
@@ -82,6 +85,10 @@ public:
void Pause();
void Remove();
#if DEBUG
int testShake();
#endif
static const vib_pattern MS_patt[VIBMODE_S_MAX];
static const vib_pattern CS_patt[VIBMODE_S_MAX];
static const vib_pattern MQ_patt[VIBMODE_Q_MAX];
@@ -123,4 +130,7 @@ private:
/* 0x8C */ s32 mMode;
}; // Size: 0x90
extern const char* shock_names[VIBMODE_S_MAX];
extern const char* quake_names[VIBMODE_Q_MAX];
#endif /* D_D_VIBRATION_H */
+1 -1
View File
@@ -60,7 +60,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(); }
@@ -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);
}
+19 -8
View File
@@ -6,6 +6,8 @@
#include "SSystem/SComponent/c_m3d_g_cyl.h"
#include "SSystem/SComponent/c_m3d.h"
#include "JSystem/JUtility/JUTAssert.h"
cM3dGCyl::cM3dGCyl(const cXyz* center, f32 radius, f32 height) {
SetC(*center);
SetR(radius);
@@ -24,21 +26,30 @@ void cM3dGCyl::Set(const cXyz& center, f32 radius, f32 height) {
SetH(height);
}
void cM3dGCyl::SetC(const cXyz& center) {
mCenter = center;
void cM3dGCyl::SetC(const cXyz& pos) {
JUT_ASSERT(67, !isnan(pos.x));
JUT_ASSERT(68, !isnan(pos.y));
JUT_ASSERT(69, !isnan(pos.z));
JUT_ASSERT(72, -1.0e32f < pos.x && pos.x < 1.0e32f && -1.0e32f < pos.y && pos.y < 1.0e32f && -1.0e32f < pos.z && pos.z < 1.0e32f);
mCenter = pos;
}
void cM3dGCyl::SetH(f32 height) {
mHeight = height;
void cM3dGCyl::SetH(f32 h) {
JUT_ASSERT(82, !isnan(h));
JUT_ASSERT(83, -1.0e32f < h && h < 1.0e32f);
mHeight = h;
}
void cM3dGCyl::SetR(f32 radius) {
mRadius = radius;
void cM3dGCyl::SetR(f32 r) {
JUT_ASSERT(106, !isnan(r));
JUT_ASSERT(107, -1.0e32f < r && r < 1.0e32f);
mRadius = r;
}
bool cM3dGCyl::cross(const cM3dGSph* other, cXyz* out) const {
f32 f;
return cM3d_Cross_CylSph(this, other, out, &f);
return cM3d_Cross_CylSph(this, other, out);
}
bool cM3dGCyl::cross(const cM3dGCyl* other, cXyz* out) const {
+14 -4
View File
@@ -6,8 +6,16 @@
#include "SSystem/SComponent/c_m3d_g_sph.h"
#include "SSystem/SComponent/c_m3d.h"
void cM3dGSph::SetC(const cXyz& center) {
mCenter = center;
#include "JSystem/JUtility/JUTAssert.h"
void cM3dGSph::SetC(const cXyz& p) {
JUT_ASSERT(19, !isnan(p.x));
JUT_ASSERT(20, !isnan(p.y));
JUT_ASSERT(21, !isnan(p.z));
JUT_ASSERT(24, -1.0e32f < p.x && p.x < 1.0e32f && -1.0e32f < p.y && p.y < 1.0e32f && -1.0e32f < p.z && p.z < 1.0e32f);
mCenter = p;
}
void cM3dGSph::Set(const cXyz& center, f32 radius) {
@@ -20,8 +28,10 @@ void cM3dGSph::Set(const cM3dGSphS& other) {
SetR(other.mRadius);
}
void cM3dGSph::SetR(f32 radius) {
mRadius = radius;
void cM3dGSph::SetR(f32 r) {
JUT_ASSERT(54, !isnan(r));
JUT_ASSERT(55, -1.0e32f < r && r < 1.0e32f);
mRadius = r;
}
bool cM3dGSph::cross(const cM3dGSph* other, cXyz* out) const {
+1 -1
View File
@@ -2014,7 +2014,7 @@ void daNPC_TK_c::executeWolfPerch() {
mWolfPathData = dPath_GetRoomPath(mpPath1->m_nextID, fopAcM_GetRoomNo(this));
JUT_ASSERT(2498, mWolfPathData != NULL);
field_0x6ea = mWolfPathData->field_0x6;
field_0x6ea = mWolfPathData->swbit;
field_0x6e8 = mWolfPathData->field_0x4;
field_0x6e9 = mWolfPathData->field_0x7;
field_0x6d0.Init(mWolfPathData);
+1 -1
View File
@@ -189,7 +189,7 @@ int daTagSppath_c::execute() {
}
if (mpBestPath->field_0x4 == 0) {
if (mpBestPath->field_0x6 == 0xff || fopAcM_isSwitch(this, mpBestPath->field_0x6) == 0) {
if (mpBestPath->swbit == 0xff || fopAcM_isSwitch(this, mpBestPath->swbit) == 0) {
field_0x6e8 = 1;
} else {
field_0x6e8 = 2;
+254 -10
View File
@@ -11,6 +11,8 @@
#include "d/d_meter_map.h"
#include "d/d_msg_class.h"
#include "d/d_msg_object.h"
#include "d/d_meter_HIO.h"
#include <cstring>
enum ITEMICON_RES_FILE_ID {
@@ -362,19 +364,18 @@ void dMeter2Info_c::getString(u32 i_stringID, char* o_string, JMSMesgEntry_c* i_
}
JMSMesgInfo_c* bmg_inf = (JMSMesgInfo_c*)(msgRes + sizeof(bmg_header_t));
u8* bmg_data = (u8*)bmg_inf + bmg_inf->header.size + sizeof(bmg_section_t); // pointer to start of message data
u8* bmg_data = (u8*)bmg_inf + bmg_inf->header.size;
u8* string_data = bmg_data + sizeof(bmg_section_t); // pointer to start of message data
char* string_ptr = NULL;
for (u16 i = 0; i < bmg_inf->entry_num; i++) {
u8* entry = ((u8*)bmg_inf + (i * sizeof(JMSMesgEntry_c)));
// check if i_stringID equals the message entry "Message ID"
if (i_stringID == *(u16*)(entry + 0x14)) {
string_ptr = (char*)(bmg_data + *(u32*)(entry + 0x10)); // use entry "String Offset" to get string pointer
if (i_stringID == bmg_inf->entries[i].message_id) {
string_ptr = (char*)(string_data + bmg_inf->entries[i].string_offset); // use entry "String Offset" to get string pointer
strcpy(o_string, string_ptr);
if (i_msgEntry != NULL) {
memcpy(i_msgEntry, entry + 0x10, sizeof(JMSMesgEntry_c));
memcpy(i_msgEntry, &bmg_inf->entries[i], sizeof(JMSMesgEntry_c));
}
return;
@@ -508,6 +509,10 @@ void dMeter2Info_c::getStringKanji(u32 i_stringID, char* o_string, JMSMesgEntry_
}
}
static void dummyString() {
OS_REPORT("レボ用ID=====>%d, %d\n");
}
f32 dMeter2Info_c::getStringLength(J2DTextBox* i_textbox, char* i_string) {
f32 str_width = 0.0f;
f32 str_len = 0.0f;
@@ -1003,6 +1008,104 @@ s16 dMeter2Info_c::get4thTexture(u8 i_itemType) {
}
void dMeter2Info_c::set1stColor(u8 i_itemType, J2DPicture* i_pic) {
// TODO: probably some way to rectify this for both versions
#if VERSION == VERSION_SHIELD_DEBUG
static JUtility::TColor const black_color[37] = {
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x60, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0xC0, 0x00),
JUtility::TColor(0xA0, 0x60, 0x00, 0x00), JUtility::TColor(0xA0, 0x00, 0x00, 0x00), JUtility::TColor(0x40, 0x00, 0x60, 0x00),
JUtility::TColor(0xE0, 0x00, 0x00, 0x00), JUtility::TColor(0x40, 0x40, 0x40, 0x00), JUtility::TColor(0x6E, 0x6E, 0x64, 0x00),
JUtility::TColor(0x32, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x7F, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x7F, 0x00),
JUtility::TColor(0xAF, 0x9B, 0x6E, 0x00), JUtility::TColor(0xAA, 0x9B, 0x6E, 0x00), JUtility::TColor(0x55, 0x37, 0x14, 0x00),
JUtility::TColor(0x6E, 0x6E, 0x6E, 0x00), JUtility::TColor(0x6E, 0x6E, 0x6E, 0x00), JUtility::TColor(0xFF, 0x58, 0x00, 0x00),
JUtility::TColor(0x6C, 0x3E, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x32, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x7F, 0x00), JUtility::TColor(0x00, 0x7F, 0x00, 0x00), JUtility::TColor(0x55, 0x37, 0x14, 0x00),
JUtility::TColor(0x00, 0x00, 0x22, 0x00), JUtility::TColor(0x2B, 0x18, 0x22, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x46, 0x46, 0x41, 0x00), JUtility::TColor(0x46, 0x46, 0x41, 0x00), JUtility::TColor(0x46, 0x46, 0x41, 0x00),
JUtility::TColor(0x46, 0x46, 0x41, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00),
};
static JUtility::TColor const white_color[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x60, 0xFF, 0x00, 0xFF), JUtility::TColor(0x00, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF), JUtility::TColor(0xFF, 0x80, 0x80, 0xFF), JUtility::TColor(0xBE, 0x40, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xC0, 0x00, 0xFF), JUtility::TColor(0xC0, 0xC0, 0xC0, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xD2, 0xAA, 0xFF), JUtility::TColor(0xEF, 0xF5, 0xC9, 0xFF), JUtility::TColor(0xB0, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xF0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xF0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xD7, 0xFF),
JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xC2, 0xFF),
JUtility::TColor(0xFF, 0x9D, 0x00, 0xFF), JUtility::TColor(0xC8, 0xC8, 0xC8, 0xFF), JUtility::TColor(0xFF, 0xD2, 0xAA, 0xFF),
JUtility::TColor(0xB0, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xEF, 0xF5, 0xC9, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xD7, 0xFF),
JUtility::TColor(0xD7, 0xCF, 0xF5, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x33, 0xFF), JUtility::TColor(0xC8, 0xC8, 0xC8, 0xFF),
JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF),
JUtility::TColor(0xF5, 0xF5, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_lu[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0x78, 0xAF, 0xFF), JUtility::TColor(0x5C, 0xB4, 0x16, 0xFF), JUtility::TColor(0xA4, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0x78, 0xAF, 0xFF),
JUtility::TColor(0xA4, 0xFF, 0x00, 0xFF), JUtility::TColor(0x5C, 0xB4, 0x16, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xC9, 0xB4, 0xFF, 0xFF), JUtility::TColor(0x3C, 0x0A, 0x00, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xA0, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ru[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0xFF, 0x73, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x2A, 0xFF), JUtility::TColor(0x98, 0xFF, 0x00, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x73, 0xFF),
JUtility::TColor(0x98, 0xFF, 0x00, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x2A, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0x39, 0xFF), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x00), JUtility::TColor(0xFF, 0xA0, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ld[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x78, 0x6E, 0x3C, 0xFF),
JUtility::TColor(0xFF, 0x00, 0x00, 0xFF), JUtility::TColor(0x3C, 0x32, 0x50, 0xFF), JUtility::TColor(0x00, 0x00, 0x74, 0xFF),
JUtility::TColor(0xFA, 0xC8, 0x9B, 0xFF), JUtility::TColor(0xFA, 0xC8, 0x9B, 0xFF), JUtility::TColor(0x46, 0x87, 0x00, 0xFF),
JUtility::TColor(0x5A, 0xB4, 0xB4, 0xFF), JUtility::TColor(0x5A, 0xB4, 0xB4, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xFF, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x74, 0xFF), JUtility::TColor(0x3C, 0x32, 0x50, 0xFF), JUtility::TColor(0x46, 0x87, 0x00, 0xFF),
JUtility::TColor(0x3C, 0x32, 0x50, 0x49), JUtility::TColor(0xFF, 0xFF, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xE0, 0x00, 0xE0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_rd[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x78, 0x6E, 0x3C, 0xFF),
JUtility::TColor(0xFF, 0x96, 0x00, 0xFF), JUtility::TColor(0x55, 0x42, 0x00, 0xFF), JUtility::TColor(0x61, 0x48, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xAA, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xAA, 0xFF), JUtility::TColor(0xAF, 0x91, 0x23, 0xFF),
JUtility::TColor(0xE6, 0xFA, 0xFF, 0xFF), JUtility::TColor(0xE6, 0xFA, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xFF, 0x96, 0x00, 0xFF),
JUtility::TColor(0x61, 0x48, 0xFF, 0xFF), JUtility::TColor(0x55, 0x42, 0x00, 0xFF), JUtility::TColor(0xAF, 0x91, 0x23, 0xFF),
JUtility::TColor(0x3C, 0x09, 0x4E, 0xFF), JUtility::TColor(0xBA, 0x98, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0x00, 0x00, 0x00, 0xFF),
JUtility::TColor(0x00, 0x00, 0x00, 0xFF), JUtility::TColor(0xE0, 0x00, 0xE0, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
#else
static GXColor const black_color[37] = {
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x60, 0x00, 0x00}, {0x00, 0x00, 0xC0, 0x00},
{0xA0, 0x60, 0x00, 0x00}, {0xA0, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x60, 0x00},
@@ -1098,6 +1201,7 @@ void dMeter2Info_c::set1stColor(u8 i_itemType, J2DPicture* i_pic) {
{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF},
};
#endif
i_pic->setBlackWhite(*(JUtility::TColor*)&black_color[i_itemType],
*(JUtility::TColor*)&white_color[i_itemType]);
@@ -1108,6 +1212,104 @@ void dMeter2Info_c::set1stColor(u8 i_itemType, J2DPicture* i_pic) {
}
void dMeter2Info_c::set2ndColor(u8 i_itemType, J2DPicture* i_pic) {
// TODO: probably some way to rectify this for both versions
#if VERSION == VERSION_SHIELD_DEBUG
static JUtility::TColor const black_color[37] = {
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x86, 0xD4, 0x00), JUtility::TColor(0xE6, 0x1E, 0xFF, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00), JUtility::TColor(0x00, 0x00, 0x00, 0x00),
JUtility::TColor(0x00, 0x00, 0x00, 0x00),
};
static JUtility::TColor const white_color[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xF5, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xC8, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_lu[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0x00, 0x00, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ru[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0x00, 0xFF, 0xFF, 0x58), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x58), JUtility::TColor(0xFF, 0xFF, 0xFF, 0x58),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0x58), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_ld[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
static JUtility::TColor const vertex_color_rd[37] = {
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xCD, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xCD, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF), JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
};
#else
static GXColor const black_color[37] = {
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00},
@@ -1203,6 +1405,7 @@ void dMeter2Info_c::set2ndColor(u8 i_itemType, J2DPicture* i_pic) {
{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF},
};
#endif
i_pic->setBlackWhite(*(JUtility::TColor*)&black_color[i_itemType],
*(JUtility::TColor*)&white_color[i_itemType]);
@@ -1235,6 +1438,8 @@ void dMeter2Info_c::set3rdColor(u8 i_itemType, J2DPicture* i_pic) {
}
void dMeter2Info_c::set4thColor(u8 i_itemType, J2DPicture* i_pic) {
UNUSED(i_itemType);
i_pic->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0xff, 0xff, 0xff, 0xff));
i_pic->setCornerColor(
JUtility::TColor(0xff, 0xff, 0xff, 0xff), JUtility::TColor(0xff, 0xff, 0xff, 0xff),
@@ -1443,6 +1648,18 @@ u8 dMeter2Info_getPixel(f32 i_posX, f32 i_posY, f32 param_2, f32 param_3, f32 i_
return (var_r24 & 0x7000) != 0;
}
bool dMeter2Info_isNextStage(const char* i_name, s16 i_roomNo, s16 i_point, s16 i_layer) {
if (strcmp(dComIfGp_getNextStageName(), i_name) == 0
&& dComIfGp_getNextStageRoomNo() == i_roomNo
&& dComIfGp_getNextStagePoint() == i_point
&& dComIfGp_getNextStageLayer() == i_layer
) {
return true;
}
return false;
}
void dMeter2Info_setCloth(u8 i_clothId, bool i_offItemBit) {
switch (i_clothId) {
case dItemNo_WEAR_CASUAL_e:
@@ -1586,6 +1803,7 @@ u8 dMeter2Info_getNewLetterNum() {
}
int dMeter2Info_setNewLetterSender() {
int ret = 0;
u8 check = 0;
for (int i = 0; i < 0x40; i++) {
@@ -1593,10 +1811,9 @@ int dMeter2Info_setNewLetterSender() {
u16 letterEvent = dMenu_Letter::getLetterEventFlag(i);
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[letterEvent])) {
if (check == 0) {
u16 letterName = dMenu_Letter::getLetterName(i);
dMsgObject_c::setLetterNameID(letterName);
dMsgObject_setLetterNameID(dMenu_Letter::getLetterName(i));
} else {
dMsgObject_c::setLetterNameID(0);
dMsgObject_setLetterNameID(0);
return 0;
}
check++;
@@ -1604,7 +1821,7 @@ int dMeter2Info_setNewLetterSender() {
}
}
return 0;
return ret;
}
int dMeter2Info_recieveLetter() {
@@ -1636,6 +1853,33 @@ int dMeter2Info_recieveLetter() {
return rv;
}
#if WIDESCREEN_SUPPORT
f32 dMeter2Info_getWide2DPosX(f32* param_0) {
J2DOrthoGraph graf(0.0f, 0.0f, 640.0f, 456.0f, -1.0f, 1.0f);
graf.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(), -1.0f, 1.0f);
JGeometry::TBox2<f32>* bounds = graf.getBounds();
const JGeometry::TBox2<f32>* ortho = graf.getOrtho();
f32 var_f31 = 304.0f;
f32 var_f30 = 608.0f / (ortho->f.x - ortho->i.x);
f32 var_f29 = *param_0 - var_f31;
*param_0 = var_f29 * var_f30 + var_f31;
return *param_0;
}
void dMeter2Info_onWide2D() {
g_ringHIO.updateOnWide();
g_drawHIO.updateOnWide();
}
void dMeter2Info_offWide2D() {
g_ringHIO.updateOffWide();
g_drawHIO.updateOffWide();
}
#endif
void dMeter2Info_set2DVibrationT() {}
void dMeter2Info_set2DVibration() {}
void dMeter2Info_set2DVibrationM() {}
+161 -34
View File
@@ -8,7 +8,38 @@
#include "d/d_path.h"
#include "d/d_com_inf_game.h"
dPnt* dPath_GetPnt(dPath const* path, int pnt_index) {
#if DEBUG
#include "d/d_debug_viewer.h"
#endif
class dPath_HIO : public JORReflexible {
public:
dPath_HIO() {}
~dPath_HIO();
void genMessage(JORMContext* mctx) {
mctx->genCheckBox("デバッグ表示", &flags, 2);
mctx->genSlider("部屋番号", &roomNo, -2, 64);
mctx->genLabel("-3=現在プレイヤーのいる部屋, -2=旧常駐、-1=常駐", 0);
}
void Ct() {
flags = 0;
roomNo = -3;
}
int GetRoomNo() { return roomNo; }
bool ChkDispLine() { return flags & 2; }
/* 0x4 */ s8 id;
/* 0x6 */ u16 flags;
/* 0x8 */ s16 roomNo;
};
dPnt* dPath_GetPnt(const dPath* path, int pnt_index) {
JUT_ASSERT(27, path != NULL);
JUT_ASSERT(28, 0 <= pnt_index && pnt_index < path->m_num);
if (path == NULL || path->m_points == NULL || pnt_index < 0 || pnt_index >= path->m_num) {
return NULL;
}
@@ -17,116 +48,212 @@ dPnt* dPath_GetPnt(dPath const* path, int pnt_index) {
}
dPath* dPath_GetRoomPath(int path_index, int room_no) {
dStage_dPath_c* path;
dStage_dPath_c* pd;
if (room_no == -1) {
path = dComIfGp_getStage()->getPath2Inf();
dStage_dt_c* stage = dComIfGp_getStage();
pd = stage->getPath2Inf();
} else {
JUT_ASSERT(58, 0 <= room_no && room_no < 64);
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(room_no);
if (roomDt == NULL) {
return NULL;
}
path = roomDt->getPath2Inf();
pd = roomDt->getPath2Inf();
}
if (path == NULL || path_index < 0 || path_index >= path->m_num) {
if (pd == NULL || path_index < 0 || path_index >= pd->num) {
return NULL;
}
return &path->m_path[path_index];
return &pd->m_path[path_index];
}
dPath* dPath_GetNextRoomPath(dPath const* p_path, int room_no) {
dStage_dPath_c* path;
dPath* dPath_GetNextRoomPath(const dPath* path, int room_no) {
dStage_dPath_c* pd;
if (room_no == -1) {
path = dComIfGp_getStage()->getPath2Inf();
dStage_dt_c* stage = dComIfGp_getStage();
pd = stage->getPath2Inf();
} else {
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(room_no);
if (roomDt == NULL) {
return NULL;
}
path = roomDt->getPath2Inf();
pd = roomDt->getPath2Inf();
}
int next_id = p_path->m_nextID;
if (path == NULL || next_id == 0xFFFF) {
int next_id = path->m_nextID;
if (pd == NULL || next_id == 0xFFFF) {
return NULL;
}
if (next_id < 0 || next_id >= path->m_num) {
JUT_ASSERT(111, 0 <= next_id && next_id < pd->num);
if (next_id < 0 || next_id >= pd->num) {
return NULL;
}
return &path->m_path[next_id];
return &pd->m_path[next_id];
}
#if !PLATFORM_GCN // Fakematch due to differing return type on non-GCN platforms
int dPath_GetPolyRoomPathVec(cBgS_PolyInfo const& poly, cXyz* p_pathVec, int* param_2) {
int dPath_GetPolyRoomPathVec(const cBgS_PolyInfo& polyinfo, cXyz* vec, int* param_2)
#else
u8 dPath_GetPolyRoomPathVec(cBgS_PolyInfo const& poly, cXyz* p_pathVec, int* param_2) {
u8 dPath_GetPolyRoomPathVec(const cBgS_PolyInfo& polyinfo, cXyz* vec, int* param_2)
#endif
int roomId = dComIfG_Bgsp().GetRoomId(poly);
int roomPathId = dComIfG_Bgsp().GetRoomPathId(poly);
{
int room_no = dComIfG_Bgsp().GetRoomId(polyinfo);
int path_idx = dComIfG_Bgsp().GetRoomPathId(polyinfo);
p_pathVec->x = 0.0f;
p_pathVec->y = 0.0f;
p_pathVec->z = 0.0f;
vec->x = 0.0f;
vec->y = 0.0f;
vec->z = 0.0f;
*param_2 = 0;
if (roomId == -1) {
if (room_no == -1) {
return 0;
}
dPath* path = dPath_GetRoomPath(roomPathId, roomId);
dPath* path = dPath_GetRoomPath(path_idx, room_no);
if (path == NULL) {
return 0;
}
if (path->field_0x6 != 0xFF && dComIfGs_isSwitch(path->field_0x6, roomId)) {
if (path->swbit != 0xFF && dComIfGs_isSwitch(path->swbit, room_no)) {
return 0;
}
int pnt_no = dComIfG_Bgsp().GetRoomPathPntNo(poly);
int pnt_no = dComIfG_Bgsp().GetRoomPathPntNo(polyinfo);
if (pnt_no == 0xFF || pnt_no < 0 || pnt_no >= path->m_num) {
return 0;
}
dPnt* pnt_start = path->m_points;
dPnt* pnt_end = &pnt_start[pnt_no];
dPnt* pnt_end = &path->m_points[pnt_no];
dPnt* pnt_begin;
if (pnt_no == path->m_num - 1) {
pnt_begin = pnt_start;
pnt_begin = path->m_points;
} else {
pnt_begin = &pnt_start[pnt_no + 1];
pnt_begin = &path->m_points[pnt_no + 1];
}
p_pathVec->x = pnt_begin->m_position.x - pnt_end->m_position.x;
p_pathVec->y = pnt_begin->m_position.y - pnt_end->m_position.y;
p_pathVec->z = pnt_begin->m_position.z - pnt_end->m_position.z;
vec->x = pnt_begin->m_position.x - pnt_end->m_position.x;
vec->y = pnt_begin->m_position.y - pnt_end->m_position.y;
vec->z = pnt_begin->m_position.z - pnt_end->m_position.z;
*param_2 = path->field_0x4;
return 1;
}
#if DEBUG
dPath_HIO::~dPath_HIO() {}
static dPath_HIO s_hio;
#endif
#if VERSION == VERSION_SHIELD_DEBUG
void dPath_Ct() {
#if DEBUG
s_hio.Ct();
s_hio.id = mDoHIO_CREATE_CHILD("レール", &s_hio);
#endif
}
void dPath_Dt() {
#if DEBUG
#endif
mDoHIO_DELETE_CHILD(s_hio.id);
}
void dPath_Move() {}
void dPath_Draw() {
#if DEBUG
if (s_hio.ChkDispLine()) {
static int start_counter;
int counter = start_counter / 20;
dStage_dPath_c* pd;
int hio_roomNo = s_hio.GetRoomNo();
if (hio_roomNo == -3) {
int roomNo = dComIfGp_roomControl_getStayNo();
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(roomNo);
if (roomDt == NULL) {
return;
}
pd = roomDt->getPath2Inf();
} else if (hio_roomNo == -2) {
pd = dComIfGp_getStage()->getPathInf();
} else if (hio_roomNo == -1) {
pd = dComIfGp_getStage()->getPath2Inf();
} else {
dStage_roomDt_c* roomDt = dComIfGp_roomControl_getStatusRoomDt(hio_roomNo);
if (roomDt == NULL) {
return;
}
pd = roomDt->getPath2Inf();
}
if (pd != NULL) {
dPath* path = pd->m_path;
for (int i = 0; i < pd->num; i++) {
if (path->m_num >= 1) {
dPnt* pnt = path->m_points;
cXyz start_pos;
cXyz end_pos;
for (int j = 0; j < path->m_num - 1; j++) {
start_pos.set(pnt[0].m_position);
end_pos.set(pnt[1].m_position);
if (counter == 0) {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0xFF, 0xFF, 0xFF}, TRUE, 12);
} else {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0, 0, 0xFF}, TRUE, 12);
}
counter++;
if (counter >= 8) {
counter = 0;
}
pnt++;
}
if (dPath_ChkClose(path)) {
start_pos.set(pnt[0].m_position);
end_pos.set(path[1].m_points->m_position);
if (counter == 0) {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0xFF, 0xFF, 0xFF}, TRUE, 12);
} else {
dDbVw_drawLineOpa(start_pos, end_pos, (GXColor){0xFF, 0, 0, 0xFF}, TRUE, 12);
}
counter++;
if (counter >= 8) {
counter = 0;
}
}
}
path++;
}
}
start_counter--;
if (start_counter < 0) {
start_counter = 160;
}
}
#endif
}
static void dummy() {
cXyz pos;
GXColor color;
dDbVw_drawSphereOpa(pos, 0.0f, color, 0);
}
#endif
+2 -2
View File
@@ -2104,7 +2104,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 ((uintptr_t)path->m_points < 0x80000000) {
path->m_points = (dPnt*)((uintptr_t)path->m_points + i_stage->getPntInf()->m_pnt_offset);
}
@@ -2129,7 +2129,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 ((uintptr_t)pPath->m_points >= 0x80000000) {
continue;
}
+27
View File
@@ -59,3 +59,30 @@ const vib_pattern dVibration_c::CQ_patt[VIBMODE_Q_MAX] = {
/* VIBMODE_Q_POWER8 */ {4, 32, 0x6B6D6B6D},
/* VIBMODE_Q_HORSE */ {0, 27, 0x20201000},
};
const char* shock_names[VIBMODE_S_MAX] = {
"VIBMODE_S_CUSTOM",
"VIBMODE_S_POWER1",
"VIBMODE_S_POWER2",
"VIBMODE_S_POWER3",
"VIBMODE_S_POWER4",
"VIBMODE_S_POWER5",
"VIBMODE_S_POWER6",
"VIBMODE_S_POWER7",
"VIBMODE_S_POWER8",
"VIBMODE_S_DOKUTT",
"VIBMODE_S_FOR2D",
};
const char* quake_names[VIBMODE_Q_MAX] = {
"VIBMODE_Q_CUSTOM",
"VIBMODE_Q_POWER1",
"VIBMODE_Q_POWER2",
"VIBMODE_Q_POWER3",
"VIBMODE_Q_POWER4",
"VIBMODE_Q_POWER5",
"VIBMODE_Q_POWER6",
"VIBMODE_Q_POWER7",
"VIBMODE_Q_POWER8",
"VIBMODE_Q_HORSE",
};
+367 -52
View File
@@ -5,6 +5,7 @@
#include "f_op/f_op_camera_mng.h"
#include "m_Do/m_Do_controller_pad.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_s_play.h"
#include <climits>
#define RESET_FRAME -99
@@ -26,27 +27,30 @@ u16* makedata(u16* data, u32 pattern, s32 length) {
s32 rollshift(u32 pattern, s32 length, s32 index) {
index %= length;
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;
}
};
@@ -65,10 +69,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;
@@ -80,6 +87,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;
@@ -99,7 +108,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;
@@ -114,6 +123,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;
@@ -128,11 +143,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;
@@ -144,13 +166,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;
}
}
@@ -166,6 +199,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;
@@ -194,39 +228,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++;
@@ -254,9 +313,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++;
@@ -292,6 +364,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;
}
@@ -317,6 +395,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;
}
@@ -349,6 +433,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;
}
@@ -369,9 +459,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);
@@ -383,30 +578,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;
@@ -416,6 +599,10 @@ void dVibration_c::setDefault() {
void dVibration_c::Init() {
Kill();
setDefault();
#if DEBUG
mVibTest.Init();
#endif
}
void dVibration_c::Pause() {
@@ -425,10 +612,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;
@@ -444,3 +629,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