Misc Matches using debug (#2388)

This commit is contained in:
hatal175 2025-04-12 00:54:08 +03:00 committed by GitHub
parent 0b50e106cc
commit cc3e0856bf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 248 additions and 367 deletions

View File

@ -628,14 +628,14 @@ config.libs = [
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_base.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_boss.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_explain.cpp"),
Object(NonMatching, "d/d_msg_scrn_item.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_item.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_howl.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_jimaku.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_kanban.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_light.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_place.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_staff.cpp"),
Object(NonMatching, "d/d_msg_scrn_talk.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_talk.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_scrn_tree.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_string_base.cpp"),
Object(MatchingFor("GZ2E01"), "d/d_msg_string.cpp"),
@ -919,7 +919,7 @@ config.libs = [
Object(NonMatching, "Z2AudioLib/Z2LinkMgr.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(NonMatching, "Z2AudioLib/Z2EnvSeMgr.cpp"),
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2WolfHowlMgr.cpp"),
Object(NonMatching, "Z2AudioLib/Z2SpeechMgr2.cpp"),
Object(MatchingFor("GZ2E01"), "Z2AudioLib/Z2SpeechMgr2.cpp", extra_cflags=['-pragma "nosyminline on"']),
Object(NonMatching, "Z2AudioLib/Z2AudioMgr.cpp"),
],
},

View File

@ -144,7 +144,7 @@ public:
MtxP getGlbMtx() { return mGlobalMtx; }
JGeometry::TBox2<f32>& getGlbBounds() { return mGlobalBounds; }
const JGeometry::TBox2<f32>& getGlbBounds() const { return mGlobalBounds; }
void setMtx(Mtx m) { MTXCopy(m, mPositionMtx); }

View File

@ -93,7 +93,7 @@ struct TValueIterator {
const void* get() const { return mBegin; }
typename Parser::ParseType operator*() const {
return *(typename Parser::ParseType*)get();
return Parser::parse(get());
}
TValueIterator& operator++() {
@ -127,7 +127,6 @@ struct TParseValue_misaligned : TParseValue_raw_<T> {
template<typename T>
struct TValueIterator_misaligned : public TValueIterator<TParseValue_misaligned<T>, sizeof(T)> {
TValueIterator_misaligned(const TValueIterator_misaligned<T>& other) : TValueIterator<TParseValue_misaligned<T>, sizeof(T)>(other) {}
TValueIterator_misaligned(const void* begin) : TValueIterator<TParseValue_misaligned<T>, sizeof(T)>(begin) {}
};

View File

@ -7,6 +7,7 @@ template<class T>
class TPointer {
public:
TPointer(T* ptr) : mPtr(ptr) {}
~TPointer() {}
void set(T* ptr) { mPtr = ptr; }
T* mPtr;
};
@ -22,4 +23,4 @@ public:
}
#endif
#endif

View File

@ -12,7 +12,7 @@ void JMAVECScaleAdd(register const Vec* vec1, register const Vec* vec2, register
register f32 scale);
inline int JMAAbs(int value) {
return value > 0 ? value : -value;
return __abs(value);
}
inline f32 JMAFastReciprocal(f32 value) {

View File

@ -20,10 +20,6 @@ struct TRandom_fast_ {
u32 get_bit32(void) { return this->get(); }
u8 get_uint8(u8 param_0) {
return get_ufloat_1() * param_0;
}
// due to the float constant, having this function inlined adds that float to data,
// making it not match
float get_ufloat_1(void) {
@ -39,6 +35,17 @@ struct TRandom_fast_ {
void setSeed(u32 seed) { value = seed; }
};
template <class RandomT>
class TRandom_ : public RandomT {
public:
TRandom_(u32 value) : RandomT(value) {}
u8 get_uint8(u8 param_0) {
return get_ufloat_1() * param_0;
}
};
} // namespace JMath
#endif /* RANDOM_H */

View File

@ -17,6 +17,9 @@
#define JUT_WARN(LINE, ...) \
JUTAssertion::setWarningMessage_f(JUTAssertion::getSDevice(), __FILE__, LINE, __VA_ARGS__); \
#define JUT_WARN_1(LINE, ...) \
JUTAssertion::setWarningMessage_f(1, __FILE__, LINE, __VA_ARGS__); \
#define JUT_LOG(LINE, ...) \
JUTAssertion::setLogMessage_f(JUTAssertion::getSDevice(), __FILE__, LINE, __VA_ARGS__)
@ -28,6 +31,7 @@
#define JUT_ASSERT_MSG(...) (void)0;
#define JUT_PANIC(...)
#define JUT_WARN(...)
#define JUT_WARN_1(...)
#define JUT_LOG(...)
#define JUT_CONFIRM(...)
#endif

View File

@ -30,13 +30,13 @@ public:
bool loadSeWave(u32);
bool loadBgmWave(u32);
bool isSceneExist() const { return sceneExist; }
bool isSceneExist() { return sceneExist; }
int getCurrentSceneNum() const { return sceneNum; }
s8 getCurrentRoomNum() { return roomNum; }
bool isInGame() const { return inGame; }
void setInGame(bool i_inGame) { inGame = i_inGame; }
bool isInDarkness() const { return inDarkness; }
s8 getRoomReverb() const { return dComIfGp_getReverb(roomNum); }
s8 getRoomReverb() { return dComIfGp_getReverb(roomNum); }
bool isMovieDemo() { return sceneNum == 2 || sceneNum == 8 || sceneNum == 9; }
s32 getSeLoadStatus(u32 wave) { return getWaveLoadStatus(wave, 0); }
s32 getBgmLoadStatus(u32 wave) { return getWaveLoadStatus(wave, 1); }

View File

@ -33,7 +33,7 @@ struct Z2SpeechMgr2 : public JASGlobalInstance<Z2SpeechMgr2> {
/* 0x000 */ JAISoundHandle field_0x0;
/* 0x004 */ JAISoundHandle field_0x4;
/* 0x008 */ JMath::TRandom_fast_ random;
/* 0x008 */ JMath::TRandom_<JMath::TRandom_fast_> random;
/* 0x00C */ Z2SpeechStarter mSpeech;
/* 0x010 */ u16 mText[500];
/* 0x3F8 */ s16 mTextNum;

View File

@ -121,7 +121,7 @@ public:
}
void setModel(J3DModel* p_model) { mModel = p_model; }
u8 checkEnable(u16 flag) { return mFlags & flag; }
BOOL checkEnable(u16 flag) { return mFlags & flag; }
void onEnable(u16 flag) { mFlags |= flag; }
cXyz& getTrans() { return mTrans; }
cXyz& getScale() { return mScale; }

View File

@ -132,6 +132,7 @@ public:
u8 getGtItm() { return mGtItm; }
void startCheckSkipEdge(void* param_0) { setSkipProc(param_0, dEv_noFinishSkipProc, 0); }
bool checkSkipEdge() { return chkFlag2(8) != false; }
void setDebugStb(u8 stb) { mDebugStb = stb; }
public:
/* 0x000 */ u8 field_0x0[4];

View File

@ -552,13 +552,21 @@ public:
/* 0xA8 */ u8 mAnimDebug;
}; // Size: 0xAC
class dMeter_drawHIO_c {
class dMeter_drawHIO_c : public JORReflexible {
public:
/* 801FF5B8 */ dMeter_drawHIO_c();
/* 80201128 */ virtual ~dMeter_drawHIO_c() {}
#ifdef DEBUG
virtual void listenPropertyEvent(const JORPropertyEvent*);
virtual void genMessage(JORMContext*);
#endif
/* 0x000 */ // vtable
/* 0x004 */ s8 field_0x4;
#ifdef DEBUG
int field_0x8_debug;
#endif
/* 0x008 */ f32 mLifeTopPosX;
/* 0x00C */ f32 mLifeTopPosY;
/* 0x010 */ f32 mNoMagicPosY;

View File

@ -106,6 +106,9 @@ public:
static void setWideZoomLightProjection(Mtx m) {}
static void setFrameRate(u16 i_rate) { JFWDisplay::getManager()->setFrameRate(i_rate); }
// NONMATCHING - Need to define all mDoGph_gInf_c shieldD members
static u8 isWide() { return false; }
static GXTexObj mFrameBufferTexObj;
static GXTexObj mZbufferTexObj;
static bloom_c m_bloom;

View File

@ -236,7 +236,6 @@ u32 const JAUStdSoundTableType::STRM_CH_SHIFT = 2;
/* 802BB8E0-802BBA10 2B6220 0130+00 1/0 0/0 0/0 .text
* getStreamInfo__11Z2SoundInfoCF10JAISoundIDP9JAIStream */
// NONMATCHING regalloc
void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const {
int numChild;
JAUSoundTableItem* data;

View File

@ -1,6 +1,5 @@
//
// Generated By: dol2asm
// Translation Unit: Z2SpeechMgr2
// Z2SpeechMgr2
//
#include "Z2AudioLib/Z2SpeechMgr2.h"
@ -364,7 +363,7 @@ Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance<Z2SpeechMgr2>(true), random(0)
/* 802CBD88-802CBF60 2C66C8 01D8+00 1/0 1/1 0/0 .text setString__12Z2SpeechMgr2FPCUssUcUs
*/
void Z2SpeechMgr2::setString(u16 const* i_text, s16 i_textNum, u8 i_speaker, u16 i_mood) {
void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mood) {
switch (i_speaker) {
case 0x13:
case 0x15:
@ -487,15 +486,21 @@ void Z2SpeechMgr2::setString(u16 const* i_text, s16 i_textNum, u8 i_speaker, u16
mText[i] = 0;
}
JUT_ASSERT(383, s != 0);
if (i_textNum > 500) {
mTextNum = 500;
JUT_WARN(387, "TOO MANY TEXT : now(%d) > max(%d)", i_textNum, 500);
JUT_WARN_1(387, "TOO MANY TEXT : now(%d) > max(%d)", i_textNum, 500);
} else {
mTextNum = i_textNum;
}
#ifdef DEBUG
for (int i = 0; i <= mTextNum; i++) {
#else
for (int i = 0; i < mTextNum; i++) {
mText[i] = i_text[i];
#endif
mText[i] = s[i];
}
mTextCount = 0;
@ -514,7 +519,11 @@ void Z2SpeechMgr2::setString(u16 const* i_text, s16 i_textNum, u8 i_speaker, u16
void Z2SpeechMgr2::setTextCount(s16 i_textCount) {
if (mVoice != 99) {
field_0x3ff = 0x0;
#ifndef DEBUG
i_textCount = (i_textCount == 0) ? 0 : i_textCount - 1;
#endif
bool all_text = false;
if (mTextCount == 0 && i_textCount >= mTextNum) {
all_text = true;
@ -587,8 +596,8 @@ void Z2SpeechMgr2::speakOneWord(bool param_0) {
}
u32 sound = mMood + Z2SE_HYL_MDN_RPLY;
f32 fVar1 = Z2GetSceneMgr()->getRoomReverb() / 127.0f;
mSpeech.startSound(sound, &field_0x0, NULL, 0,
fVar1, 1.0f, 1.0f, -1.0f, -1.0f, 0);
bool soundStarted =
mSpeech.startSound(sound, &field_0x0, NULL, 0, fVar1, 1.0f, 1.0f, -1.0f, -1.0f, 0);
mSpeech.setPortData(&field_0x0, 8, field_0x402[field_0x401 - 1] + 1, -1);
if (field_0x400 == 0) {
selectUnit(param_0);
@ -690,7 +699,6 @@ typedef struct {
} Z2ConnectCost;
/* 802CC4C0-802CC738 2C6E00 0278+00 2/2 0/0 0/0 .text selectUnit__12Z2SpeechMgr2Fb */
// NONMATCHING minor regalloc
void Z2SpeechMgr2::selectUnit(bool param_0) {
Z2ConnectCost cost[5];
@ -705,14 +713,14 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
if (field_0x401 != 0 && param_0) {
cVar5 = 0;
ZVar2 = field_0x402[field_0x401 - 1];
s8 ZVar4 = field_0x402[field_0x401 - 1];
while (true) {
bool bVar1 = false;
ZVar3 = random.get_uint8(Z2MdnPrm::sPrm[mMood].field_0x8);
ZVar2 = random.get_uint8(Z2MdnPrm::sPrm[mMood].field_0x8);
for (int i = 0; i < field_0x401; i++) {
if (field_0x402[i] == ZVar3) {
if (field_0x402[i] == ZVar2) {
bVar1 = true;
break;
}
@ -723,7 +731,7 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
}
for (int i = 0; i < cVar5; i++) {
if (ZVar3 == cost[i].field_0x0) {
if (ZVar2 == cost[i].field_0x0) {
bVar1 = true;
break;
}
@ -733,23 +741,25 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
continue;
}
u8 local_3f = JMAAbs(Z2MdnPrm::sPrm[mMood].field_0x0[ZVar3 * 2]
- Z2MdnPrm::sPrm[mMood].field_0x0[ZVar2 * 2 + 1]);
cost[cVar5] = (Z2ConnectCost){ZVar3, local_3f};
const u8 (*prm)[2] = (u8 (*)[2])Z2MdnPrm::sPrm[mMood].field_0x0;
u8 local_3f = JMAAbs(prm[ZVar2][0] - prm[ZVar4][1]);
Z2ConnectCost connectCost = {ZVar2, local_3f};
cost[cVar5] = connectCost;
cVar5++;
if (cVar5 == 5) {
u16 tmp = cost[0].field_0x1;
ZVar2 = cost[0].field_0x0;
for (int i = 0; i < 5; i++) {
if (cost[i].field_0x1 < tmp) {
tmp = cost[i].field_0x1;
ZVar2 = cost[i].field_0x0;
}
}
break;
}
}
u16 tmp = cost[0].field_0x1;
ZVar2 = cost[0].field_0x0;
for (int i = 0; i < 5; i++) {
if (cost[i].field_0x1 < tmp) {
tmp = cost[i].field_0x1;
ZVar2 = cost[i].field_0x0;
}
}
}
field_0x402[field_0x401] = ZVar2;
@ -757,7 +767,6 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
}
/* 802CC738-802CC9D0 2C7078 0298+00 1/1 0/0 0/0 .text selectTail__12Z2SpeechMgr2Fv */
// NONMATCHING minor regalloc
void Z2SpeechMgr2::selectTail() {
Z2ConnectCost cost[5];
s8 cVar9 = 0;
@ -791,7 +800,8 @@ void Z2SpeechMgr2::selectTail() {
if (!bVar5) {
u8 local_3f = JMAAbs(Z2MdnPrm::sPrm[mMood].field_0x4[ZVar6]
- Z2MdnPrm::sPrm[mMood].field_0x0[ZVar1 * 2 + 1]);
cost[cVar9] = (Z2ConnectCost){ZVar6, local_3f};
Z2ConnectCost connectCost = {ZVar6, local_3f};
cost[cVar9] = connectCost;
cVar9++;
if (cVar9 == bVar3 || cVar9 == 5) {

View File

@ -5,6 +5,9 @@
#include "JSystem/JGadget/pointer.h"
#include "JSystem/JGadget/define.h"
/* 80450620-80450628 0000A0 0002+06 3/3 1/1 0/0 .sdata m_branchId__7dDemo_c */
s16 dDemo_c::m_branchId = -1;
namespace {
/* 80037DE4-80037E44 032724 0060+00 1/0 0/0 0/0 .text
* __dt__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_messageFv */
@ -19,17 +22,14 @@ void jstudio_tAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData
case JStudio::data::UNK_0x19:
JUT_ASSERT(107, pContent!=0);
JUT_ASSERT(108, uSize==4);
dMsgObject_setDemoMessage(*(u32*)pContent);
u32 content = *(u32*)pContent;
dMsgObject_setDemoMessage(content);
break;
default:
#ifdef DEBUG
JGadget_outMessage msg(JGadget_outMessage::warning, __FILE__, 124);
const char* id_string = adaptor_getID_string();
msg << "unknown data-type : ";
msg << iType;
msg << "\n demo-object : ";
msg << id_string;
msg << "unknown data-type : " << iType << "\n demo-object : " << adaptor_getID_string();
int x = 0;
#else
break;
#endif
@ -48,24 +48,25 @@ jstudio_tCreateObject_message::create(JStudio::TObject** ppObject,
const JStudio::stb::data::TParse_TBlock_object& iBlock) {
JUT_ASSERT(168, ppObject!=0);
switch (iBlock.get_type()) {
case 'JMSG': {
jstudio_tAdaptor_message* adaptor = new jstudio_tAdaptor_message();
if (adaptor == NULL) {
return false;
u32 type = iBlock.get_type();
switch (type) {
case 'JMSG':
{
jstudio_tAdaptor_message* adaptor = new jstudio_tAdaptor_message();
if (adaptor == NULL) {
return false;
}
JGadget::TPointer_delete<JStudio::TAdaptor_message> sp8(adaptor);
JStudio::TObject_message* object = JStudio::TCreateObject::createFromAdaptor<jstudio_tAdaptor_message>(iBlock, adaptor);
if (object == NULL) {
return false;
}
sp8.set(NULL);
*ppObject = object;
}
JGadget::TPointer_delete<JStudio::TAdaptor_message> sp8(adaptor);
JStudio::TObject_message* object = JStudio::TCreateObject::createFromAdaptor<jstudio_tAdaptor_message>(iBlock, adaptor);
if (object == NULL) {
return false;
}
sp8.set(NULL);
*ppObject = object;
return true;
}
default:
return false;
}
@ -96,6 +97,12 @@ dDemo_actor_c::~dDemo_actor_c() {
mBtpId = -1;
mBtkId = -1;
mBrkId = -1;
#ifdef DEBUG
if(dComIfGp_event_getMode() == 0) {
g_dComIfG_gameInfo.play.getEvent().setDebugStb(0);
}
#endif
}
/* 80038128-8003815C 032A68 0034+00 1/1 0/0 0/0 .text getActor__13dDemo_actor_cFv */
@ -214,6 +221,7 @@ u16 dDemo_c::m_branchType;
/* 80450E44-80450E48 000344 0004+00 5/5 0/0 0/0 .sbss m_branchData__7dDemo_c */
const u8* dDemo_c::m_branchData;
/* 80038338-80038490 032C78 0158+00 0/0 1/1 5/5 .text getDemoIDData__13dDemo_actor_cFPiPiPiPUsPUc
*/
// NONMATCHING - some stack issues
@ -222,7 +230,7 @@ int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16*
JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > data(getPrm()->getData());
static JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > dummy;
static JGadget::binary::TValueIterator_misaligned<u32> it(dummy.begin());
static JGadget::binary::TValueIterator_misaligned<u32> it = dummy.begin();
if (it == data.end()) {
it = dummy.begin();
@ -247,16 +255,17 @@ int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16*
return 1;
}
s16 dDemo_c::m_branchNum = 0;
/* 80038490-80038518 032DD0 0088+00 1/1 0/0 0/0 .text dDemo_getJaiPointer__FPCcUliPUs */
// NONMATCHING - slight problem with loop
static void* dDemo_getJaiPointer(char const* arcName, u32 anmID, int param_2, u16* param_3) {
if (param_2 <= 0 || param_3 == NULL) {
return NULL;
}
int var_r31 = 0;
for (int i = 0; i < param_2; i++, var_r31 += 2) {
int i;
int var_r31;
for (i = var_r31 = 0; i < param_2; i++, var_r31 += 2) {
if ((u16)anmID == param_3[var_r31]) {
return dComIfG_getObjectIDRes(arcName, param_3[var_r31 + 1]);
}
@ -348,11 +357,6 @@ static void branchFile(char const* resName) {
dDemo_c::setBranchData(branchData);
}
/* 80450620-80450628 0000A0 0002+06 3/3 1/1 0/0 .sdata m_branchId__7dDemo_c */
s16 dDemo_c::m_branchId = -1;
s16 dDemo_c::m_branchNum = 0;
/* 800387EC-80038920 03312C 0134+00 1/0 0/0 0/0 .text JSGSetData__13dDemo_actor_cFUlPCvUl
*/
void dDemo_actor_c::JSGSetData(u32 id, void const* pdata, u32 param_2) {

View File

@ -647,6 +647,9 @@ dMeter_drawLightDropHIO_c::dMeter_drawLightDropHIO_c() {
/* 801FF5B8-802001AC 1F9EF8 0BF4+00 1/1 0/0 0/0 .text __ct__16dMeter_drawHIO_cFv */
dMeter_drawHIO_c::dMeter_drawHIO_c() {
#ifdef DEBUG
field_0x8_debug = 0;
#endif
mLifeTopPosX = 40.0f;
mLifeTopPosY = -5.6f;

View File

@ -4,6 +4,7 @@
#include "d/d_msg_object.h"
#include "d/d_msg_out_font.h"
#include "d/d_pane_class.h"
#include "cstring.h"
/* 8023C0DC-8023C124 236A1C 0048+00 0/0 9/9 0/0 .text __ct__14dMsgScrnBase_cFv */
dMsgScrnBase_c::dMsgScrnBase_c() {
@ -29,8 +30,7 @@ void dMsgScrnBase_c::init() {
field_0x4c = 0;
mCharInfoPtr = NULL;
mFontSize.mSizeY = 0.0f;
mFontSize.mSizeX = 0.0f;
mFontSize.mSizeX = mFontSize.mSizeY = 0.0f;
mRubySize = 0.0f;
mTextBoxPosX = 0.0f;
mTextBoxPosY = 0.0f;
@ -86,11 +86,12 @@ void dMsgScrnBase_c::drawOutFont(f32 param_0, f32 param_1, f32 param_2) {
}
/* 8023C360-8023C3EC 236CA0 008C+00 0/0 2/2 0/0 .text setString__14dMsgScrnBase_cFPcPc */
void dMsgScrnBase_c::setString(char* i_stringA, char* i_stringB) {
void dMsgScrnBase_c::setString(char* mpText, char* i_stringB) {
for (int i = 0; i < 7; i++) {
if (mpTm_c[i] != NULL) {
JUT_ASSERT(262, ((J2DTextBox*)(mpTm_c[i]->getPanePtr()))->getStringAllocByte() > std::strlen(mpText));
if (i == 0) {
strcpy(((J2DTextBox*)mpTm_c[i]->getPanePtr())->getStringPtr(), i_stringA);
strcpy(((J2DTextBox*)mpTm_c[i]->getPanePtr())->getStringPtr(), mpText);
} else {
strcpy(((J2DTextBox*)mpTm_c[i]->getPanePtr())->getStringPtr(), i_stringB);
}
@ -100,10 +101,11 @@ void dMsgScrnBase_c::setString(char* i_stringA, char* i_stringB) {
/* 8023C3EC-8023C458 236D2C 006C+00 0/0 2/2 0/0 .text setRubyString__14dMsgScrnBase_cFPc
*/
void dMsgScrnBase_c::setRubyString(char* i_string) {
void dMsgScrnBase_c::setRubyString(char* mpText) {
for (int i = 0; i < 3; i++) {
if (mpTmr_c[i] != NULL) {
strcpy(((J2DTextBox*)mpTmr_c[i]->getPanePtr())->getStringPtr(), i_string);
JUT_ASSERT(288, ((J2DTextBox*)(mpTmr_c[i]->getPanePtr()))->getStringAllocByte() > std::strlen(mpText));
strcpy(((J2DTextBox*)mpTmr_c[i]->getPanePtr())->getStringPtr(), mpText);
}
}
}
@ -139,7 +141,7 @@ void dMsgScrnBase_c::fontAlpha(f32 i_alpha) {
/* 8023C574-8023C5C8 236EB4 0054+00 1/0 8/8 0/0 .text isTalkNow__14dMsgScrnBase_cFv */
bool dMsgScrnBase_c::isTalkNow() {
switch (dMsgObject_c::getStatus()) {
switch (dMsgObject_getMsgObjectClass()->getStatus()) {
case 5:
case 6:
case 7:
@ -153,4 +155,4 @@ bool dMsgScrnBase_c::isTalkNow() {
default:
return false;
}
}
}

View File

@ -1,6 +1,5 @@
//
// Generated By: dol2asm
// Translation Unit: msg/scrn/d_msg_scrn_item
// Item Message Screen
//
#include "d/d_msg_scrn_item.h"
@ -13,7 +12,9 @@
#include "d/d_meter_HIO.h"
#include "d/d_item_data.h"
#include "d/d_pane_class.h"
#include "d/d_s_play.h"
#include "m_Do/m_Do_lib.h"
#include "m_Do/m_Do_graphic.h"
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/J2DGraph/J2DGrafContext.h"
@ -32,6 +33,13 @@ dMsgScrnItem_c::dMsgScrnItem_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) {
int iVar6 = dMsgObject_getMessageID();
bool bVar5 = false;
#ifdef DEBUG
if (dMsgObject_getMessageID() >= 0x10cc && dMsgObject_getMessageID() < 0x11cc) {
mItemIndex = dMsgObject_getMessageID() - 0x10cc;
bVar5 = true;
}
#endif
if (iVar6 >= 0x645 && iVar6 <= 0x648) {
mItemIndex = iVar6 - 0x641;
bVar5 = true;
@ -95,6 +103,7 @@ dMsgScrnItem_c::dMsgScrnItem_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) {
break;
}
}
if (isOugiID()) {
JKRReadIdxResource(mpItemTex[0], 0xc00, 0x3d, dComIfGp_getItemIconArchive());
field_0x0e0[0] = (ResTIMG*)mpItemTex[0];
@ -348,23 +357,29 @@ void dMsgScrnItem_c::exec() {
}
/* 8023FB24-8023FF30 23A464 040C+00 1/0 0/0 0/0 .text drawSelf__14dMsgScrnItem_cFv */
// NONMATCHING Issues with float regs order
void dMsgScrnItem_c::drawSelf() {
J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort();
grafContext->setup2D();
u8* iVar6 = (u8*)mCharInfoPtr;
if (*(s16*)(iVar6 + 0x1068) > 0) {
s16* pLen = (short*)((u8*)mCharInfoPtr + 0x1068);
if (*pLen > 0) {
f32 dVar12 = mpTm_c[0]->getAlphaRate();
for (int i = 0; i < *(short*)(iVar6 + 0x1068); i = i + 1) {
for (int i = 0; i < *pLen; i = i + 1) {
mpLight_c->draw(&mCharInfoPtr[i].field_0x14, mCharInfoPtr[i].field_0x00,
mCharInfoPtr[i].field_0x04, mCharInfoPtr[i].field_0x08,
mCharInfoPtr[i].field_0x0c,
dVar12 * g_MsgObject_HIO_c.mBoxItemHaloAlpha, mCharInfoPtr[i].mColorNo);
}
}
mpTm_c[0]->getGlobalPosX();
drawOutFont(g_MsgObject_HIO_c.mBoxItemTextPosX - 2.0f, g_MsgObject_HIO_c.mBoxItemTextPosY,
1.0f);
f32 globalPosX = mpTm_c[0]->getGlobalPosX();
if (mDoGph_gInf_c::isWide()) {
drawOutFont(g_MsgObject_HIO_c.mBoxItemTextPosX + 7.0f + YREG_F(2),
g_MsgObject_HIO_c.mBoxItemTextPosY, 1.0f);
} else {
drawOutFont(g_MsgObject_HIO_c.mBoxItemTextPosX - 2.0f + YREG_F(2),
g_MsgObject_HIO_c.mBoxItemTextPosY, 1.0f);
}
mpTxScreen->draw(0.0f, 0.0f, grafContext);
mpSelect_c->draw(0.0f, 0.0f);
mpArrow_c->draw();
@ -414,17 +429,19 @@ void dMsgScrnItem_c::drawSelf() {
if (g_drawHIO.mItemScaleAdjustON == true) {
texScale = (g_drawHIO.mItemScalePercent / 100.0f);
} else if (mItemIndex >= 0 && mItemIndex <= 0xff) {
texScale = dItem_data::item_resource[(u8)mItemIndex].getTexScale() / 100.0f;
texScale = dItem_data::getTexScale(mItemIndex) / 100.0f;
} else {
texScale = 1.0f;
};
// operation order is wrong here
mpItemPane[i]->draw(
mpScreen->search('set_it_n')->getGlbBounds().i.x + g_MsgObject_HIO_c.mBoxItemPosX +
(field_0x174 - (field_0x17c * texScale)) / 2,
mpScreen->search('set_it_n')->getGlbBounds().i.y + g_MsgObject_HIO_c.mBoxItemPosY +
(field_0x170 - (field_0x178 * texScale)) / 2,
field_0x19e, false, false);
mpItemPane[i]->draw(mpScreen->search('set_it_n')->getGlbBounds().i.x +
0.5f * (field_0x170 - (field_0x178 * texScale)) +
g_MsgObject_HIO_c.mBoxItemPosX,
mpScreen->search('set_it_n')->getGlbBounds().i.y +
0.5f * (field_0x174 - (field_0x17c * texScale)) +
g_MsgObject_HIO_c.mBoxItemPosY,
field_0x178 * texScale, field_0x17c * texScale, field_0x19e, false,
false);
}
}
}
@ -596,7 +613,6 @@ void dMsgScrnItem_c::fukiPosCalc(u8 param_1) {
}
}
/* 8024074C-802407E8 23B08C 009C+00 1/1 0/0 0/0 .text
* setBtk0Animation__14dMsgScrnItem_cFP19J2DAnmTextureSRTKey */
void dMsgScrnItem_c::setBtk0Animation(J2DAnmTextureSRTKey* param_1) {

View File

@ -1,5 +1,4 @@
//
// Generated By: dol2asm
// Translation Unit: msg/scrn/d_msg_scrn_talk
//
@ -17,161 +16,6 @@
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void __ct__14dMsgScrnTalk_cFUcUcP10JKRExpHeap();
extern "C" void __dt__14dMsgScrnTalk_cFv();
extern "C" void exec__14dMsgScrnTalk_cFv();
extern "C" void drawSelf__14dMsgScrnTalk_cFv();
extern "C" void arwAnimeInit__14dMsgScrnTalk_cFv();
extern "C" void arwAnimeMove__14dMsgScrnTalk_cFv();
extern "C" void dotAnimeInit__14dMsgScrnTalk_cFv();
extern "C" void dotAnimeMove__14dMsgScrnTalk_cFv();
extern "C" void setSelectString__14dMsgScrnTalk_cFPcPcPc();
extern "C" void setSelectRubyString__14dMsgScrnTalk_cFPcPcPc();
extern "C" void isSelect__14dMsgScrnTalk_cFv();
extern "C" void selectAnimeInit__14dMsgScrnTalk_cFUcUcfUc();
extern "C" void selectAnimeMove__14dMsgScrnTalk_cFUcUcb();
extern "C" void selectAnimeEnd__14dMsgScrnTalk_cFv();
extern "C" void fukiScale__14dMsgScrnTalk_cFf();
extern "C" void fukiTrans__14dMsgScrnTalk_cFff();
extern "C" void fukiAlpha__14dMsgScrnTalk_cFf();
extern "C" void fukiPosCalc__14dMsgScrnTalk_cFUc();
extern "C" extern char const* const msg_scrn_d_msg_scrn_talk__stringBase0;
//
// External References:
//
extern "C" void mDoExt_getMesgFont__Fv();
extern "C" void mDoLib_project__FP3VecP3Vec();
extern "C" void dComIfGp_getSubHeap2D__Fi();
extern "C" void
drawPikari__13dMeter2Draw_cFffPffQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorfUc();
extern "C" void getActor__12dMsgObject_cFv();
extern "C" void __ct__17dMsgScrn3Select_cFv();
extern "C" void isSelect__17dMsgScrn3Select_cFv();
extern "C" void setString__17dMsgScrn3Select_cFPcPcPc();
extern "C" void setRubyString__17dMsgScrn3Select_cFPcPcPc();
extern "C" void translate__17dMsgScrn3Select_cFff();
extern "C" void draw__17dMsgScrn3Select_cFff();
extern "C" void selAnimeInit__17dMsgScrn3Select_cFUcUcUcfUc();
extern "C" void selAnimeMove__17dMsgScrn3Select_cFUcUcb();
extern "C" void selAnimeEnd__17dMsgScrn3Select_cFv();
extern "C" void getTextBoxWidth__17dMsgScrn3Select_cFv();
extern "C" void getFontSize__17dMsgScrn3Select_cFv();
extern "C" void getRubyFontSize__17dMsgScrn3Select_cFv();
extern "C" void getCharSpace__17dMsgScrn3Select_cFv();
extern "C" void getRubyCharSpace__17dMsgScrn3Select_cFv();
extern "C" void getTextBoxGlobalPosX__17dMsgScrn3Select_cFi();
extern "C" void getTextBoxGlobalPosY__17dMsgScrn3Select_cFi();
extern "C" void __ct__15dMsgScrnArrow_cFv();
extern "C" void draw__15dMsgScrnArrow_cFv();
extern "C" void setPos__15dMsgScrnArrow_cFff();
extern "C" void arwAnimeInit__15dMsgScrnArrow_cFv();
extern "C" void arwAnimeMove__15dMsgScrnArrow_cFv();
extern "C" void dotAnimeInit__15dMsgScrnArrow_cFv();
extern "C" void dotAnimeMove__15dMsgScrnArrow_cFv();
extern "C" void __ct__14dMsgScrnBase_cFv();
extern "C" void __dt__14dMsgScrnBase_cFv();
extern "C" void init__14dMsgScrnBase_cFv();
extern "C" void multiDraw__14dMsgScrnBase_cFv();
extern "C" void draw__14dMsgScrnBase_cFv();
extern "C" void drawOutFont__14dMsgScrnBase_cFfff();
extern "C" void fontAlpha__14dMsgScrnBase_cFf();
extern "C" void isTalkNow__14dMsgScrnBase_cFv();
extern "C" void __ct__15dMsgScrnLight_cFUcUc();
extern "C" void draw__15dMsgScrnLight_cFPffffffUc();
extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
extern "C" void reinit__8CPaneMgrFv();
extern "C" void getGlobalPosX__8CPaneMgrFv();
extern "C" void getGlobalPosY__8CPaneMgrFv();
extern "C" void setBlackWhite__8CPaneMgrFQ28JUtility6TColorQ28JUtility6TColor();
extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs();
extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
extern "C" void getAlphaRate__13CPaneMgrAlphaFv();
extern "C" bool __eq__4cXyzCFRC3Vec();
extern "C" void alloc__7JKRHeapFUli();
extern "C" void free__7JKRHeapFPv();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void getBounds__7J2DPaneFv();
extern "C" void __ct__9J2DScreenFv();
extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
extern "C" void setString__10J2DTextBoxFsPCce();
extern "C" void _savegpr_21();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_21();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
//
// Declarations:
//
/* ############################################################################################## */
/* 80399BB0-80399BB0 026210 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80399BB0 = "zelda_message_window_new.blo";
SECTION_DEAD static char const* const stringBase_80399BCD = "zelda_message_window_text_seirei.blo";
SECTION_DEAD static char const* const stringBase_80399BF2 = "zelda_message_window_text.blo";
SECTION_DEAD static char const* const stringBase_80399C10 = "";
#pragma pop
/* 803C13C8-803C1420 01E4E8 0058+00 2/2 0/0 0/0 .data __vt__14dMsgScrnTalk_c */
SECTION_DATA extern void* __vt__14dMsgScrnTalk_c[22] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)draw__14dMsgScrnBase_cFv,
(void*)__dt__14dMsgScrnTalk_cFv,
(void*)exec__14dMsgScrnTalk_cFv,
(void*)multiDraw__14dMsgScrnBase_cFv,
(void*)drawSelf__14dMsgScrnTalk_cFv,
(void*)setSelectString__14dMsgScrnTalk_cFPcPcPc,
(void*)setSelectRubyString__14dMsgScrnTalk_cFPcPcPc,
(void*)arwAnimeInit__14dMsgScrnTalk_cFv,
(void*)arwAnimeMove__14dMsgScrnTalk_cFv,
(void*)dotAnimeInit__14dMsgScrnTalk_cFv,
(void*)dotAnimeMove__14dMsgScrnTalk_cFv,
(void*)isSelect__14dMsgScrnTalk_cFv,
(void*)selectAnimeInit__14dMsgScrnTalk_cFUcUcfUc,
(void*)selectAnimeMove__14dMsgScrnTalk_cFUcUcb,
(void*)selectAnimeEnd__14dMsgScrnTalk_cFv,
(void*)fukiScale__14dMsgScrnTalk_cFf,
(void*)fukiTrans__14dMsgScrnTalk_cFff,
(void*)fukiAlpha__14dMsgScrnTalk_cFf,
(void*)fontAlpha__14dMsgScrnBase_cFf,
(void*)fukiPosCalc__14dMsgScrnTalk_cFUc,
};
/* 80454D00-80454D04 003300 0004+00 2/2 0/0 0/0 .sdata2 @4086 */
SECTION_SDATA2 static f32 lit_4086 = 18.0f;
/* 80454D04-80454D08 003304 0004+00 3/3 0/0 0/0 .sdata2 @4087 */
SECTION_SDATA2 static u8 lit_4087[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 80454D08-80454D0C 003308 0004+00 1/1 0/0 0/0 .sdata2 @4088 */
SECTION_SDATA2 static f32 lit_4088 = -10.0f;
/* 80454D0C-80454D10 00330C 0004+00 1/1 0/0 0/0 .sdata2 @4089 */
SECTION_SDATA2 static f32 lit_4089 = 6.0f / 5.0f;
/* 80246FF0-80247A90 241930 0AA0+00 0/0 1/1 0/0 .text __ct__14dMsgScrnTalk_cFUcUcP10JKRExpHeap */
dMsgScrnTalk_c::dMsgScrnTalk_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) {
@ -341,7 +185,6 @@ dMsgScrnTalk_c::dMsgScrnTalk_c(u8 param_1, u8 param_2, JKRExpHeap* param_3) {
}
}
/* 80247A90-80247D34 2423D0 02A4+00 1/0 0/0 0/0 .text __dt__14dMsgScrnTalk_cFv */
dMsgScrnTalk_c::~dMsgScrnTalk_c() {
delete mpScreen;
@ -383,10 +226,6 @@ dMsgScrnTalk_c::~dMsgScrnTalk_c() {
dComIfGp_getMsgCommonArchive()->removeResourceAll();
}
/* ############################################################################################## */
/* 80454D10-80454D14 003310 0004+00 2/2 0/0 0/0 .sdata2 @4197 */
SECTION_SDATA2 static f32 lit_4197 = 1.0f;
/* 80247D34-80247E4C 242674 0118+00 1/0 0/0 0/0 .text exec__14dMsgScrnTalk_cFv */
void dMsgScrnTalk_c::exec() {
if (isTalkNow()) {
@ -406,24 +245,15 @@ void dMsgScrnTalk_c::exec() {
}
}
/* ############################################################################################## */
/* 80454D14-80454D18 003314 0004+00 1/1 0/0 0/0 .sdata2 @4278 */
SECTION_SDATA2 static f32 lit_4278 = 4.0f / 5.0f;
/* 80454D18-80454D1C 003318 0004+00 1/1 0/0 0/0 .sdata2 @4279 */
SECTION_SDATA2 static f32 lit_4279 = -1.0f;
/* 80247E4C-802480F0 24278C 02A4+00 1/0 0/0 0/0 .text drawSelf__14dMsgScrnTalk_cFv */
// NONMATCHING - regalloc
void dMsgScrnTalk_c::drawSelf() {
CharInfo_c* pCharInfo;
J2DGrafContext* grafContext = dComIfGp_getCurrentGrafPort();
grafContext->setup2D();
pCharInfo = mCharInfoPtr;
if (*(s16*)(pCharInfo + 150) > 0) {
J2DGrafContext* grafContext[1];
grafContext[0] = dComIfGp_getCurrentGrafPort();
grafContext[0]->setup2D();
s16* pLen = (s16*)(mCharInfoPtr + 150);
if (*pLen > 0) {
f32 dVar10 = mpTm_c[0]->getAlphaRate();
for (int i = 0; i < *(s16*)(pCharInfo + 150); i++) {
for (int i = 0; i < *pLen; i++) {
if (dMsgObject_getMsgObjectClass()->getFukiKind() == 8) {
if (field_0xf8[i] >= 0.0f) {
f32 fVar1;
@ -465,7 +295,7 @@ void dMsgScrnTalk_c::drawSelf() {
}
}
drawOutFont(0.0f, 0.0f, 1.0f);
mpTxScreen->draw(0.0f, 0.0f, grafContext);
mpTxScreen->draw(0.0f, 0.0f, grafContext[0]);
if (mpSelect_c != NULL) {
mpSelect_c->draw(0.0f, 0.0f);
}
@ -560,50 +390,6 @@ void dMsgScrnTalk_c::fukiAlpha(f32 param_1) {
}
}
/* ############################################################################################## */
/* 80454D1C-80454D20 00331C 0004+00 1/1 0/0 0/0 .sdata2 @4489 */
SECTION_SDATA2 static f32 lit_4489 = 608.0f;
/* 80454D20-80454D24 003320 0004+00 1/1 0/0 0/0 .sdata2 @4490 */
SECTION_SDATA2 static f32 lit_4490 = 448.0f;
/* 80454D24-80454D28 003324 0004+00 1/1 0/0 0/0 .sdata2 @4491 */
SECTION_SDATA2 static f32 lit_4491 = 0.5f;
/* 80454D28-80454D2C 003328 0004+00 1/1 0/0 0/0 .sdata2 @4492 */
SECTION_SDATA2 static f32 lit_4492 = 50.0f;
/* 80454D2C-80454D30 00332C 0004+00 1/1 0/0 0/0 .sdata2 @4493 */
SECTION_SDATA2 static f32 lit_4493 = 105.0f;
/* 80454D30-80454D34 003330 0004+00 1/1 0/0 0/0 .sdata2 @4494 */
SECTION_SDATA2 static f32 lit_4494 = 486.0f;
/* 80454D34-80454D38 003334 0004+00 1/1 0/0 0/0 .sdata2 @4495 */
SECTION_SDATA2 static f32 lit_4495 = 230.0f;
/* 80454D38-80454D3C 003338 0004+00 1/1 0/0 0/0 .sdata2 @4496 */
SECTION_SDATA2 static f32 lit_4496 = 235.0f;
/* 80454D3C-80454D40 00333C 0004+00 1/1 0/0 0/0 .sdata2 @4497 */
SECTION_SDATA2 static f32 lit_4497 = 355.0f;
/* 80454D40-80454D44 003340 0004+00 1/1 0/0 0/0 .sdata2 @4498 */
SECTION_SDATA2 static f32 lit_4498 = 209.0f;
/* 80454D44-80454D48 003344 0004+00 1/1 0/0 0/0 .sdata2 @4499 */
SECTION_SDATA2 static f32 lit_4499 = -190.0f;
/* 80454D48-80454D50 003348 0004+04 1/1 0/0 0/0 .sdata2 @4500 */
SECTION_SDATA2 static f32 lit_4500[1 + 1 /* padding */] = {
190.0f,
/* padding */
0.0f,
};
/* 80454D50-80454D58 003350 0008+00 1/1 0/0 0/0 .sdata2 @4502 */
SECTION_SDATA2 static f64 lit_4502 = 4503601774854144.0 /* cast s32 to float */;
/* 8024835C-80248954 242C9C 05F8+00 1/0 0/0 0/0 .text fukiPosCalc__14dMsgScrnTalk_cFUc */
void dMsgScrnTalk_c::fukiPosCalc(u8 param_1) {
msg_class* msgActor = dMsgObject_c::getActor();
@ -659,7 +445,7 @@ void dMsgScrnTalk_c::fukiPosCalc(u8 param_1) {
switch (field_0x488) {
case 1:
dVar15 = g_MsgObject_HIO_c.mBoxPos[2][0];
field_0xf0 = 235.0f - (mpScreen->search('n_all')->getBounds().i.y +
field_0xf0 = 105.0f - (mpScreen->search('n_all')->getBounds().i.y +
mpScreen->search('n_all')->getBounds().f.y) / 2;
if (mpSelect_c != NULL) {
mpSelect_c->translate(486.0f, 230.0f);
@ -667,7 +453,7 @@ void dMsgScrnTalk_c::fukiPosCalc(u8 param_1) {
break;
case 2:
dVar15 = g_MsgObject_HIO_c.mBoxPos[1][0];
field_0xf0 = 105.0f - (mpScreen->search('n_all')->getBounds().i.y +
field_0xf0 = 235.0f - (mpScreen->search('n_all')->getBounds().i.y +
mpScreen->search('n_all')->getBounds().f.y) / 2;
if (mpSelect_c != NULL) {
mpSelect_c->translate(486.0f, 355.0f);

View File

@ -4,6 +4,7 @@
//
#include "d/d_msg_unit.h"
#include "d/d_com_inf_game.h"
#include "stdio.h"
#include "d/d_kankyo.h"
#include "d/d_meter2_info.h"
@ -18,10 +19,15 @@ dMsgUnit_c::~dMsgUnit_c() {}
// NONMATCHING - regalloc
void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) {
*param_3 = 0;
bool stack9 = false;
bool stack8 = false;
int param_2b = param_2;
if (param_1 == 0x10000) {
sprintf(param_3, "%d", param_2);
} else if (param_1 == 0x10001) {
sprintf(param_3, "%d-%d", param_2 / 10, param_2 % 10);
int tens_digit = param_2 / 10;
int ones_digit = param_2 % 10;
sprintf(param_3, "%d-%d", tens_digit, ones_digit);
} else if (param_1 == 4 && param_4 == true) {
int r6 = param_2 / 1000;
int r5 = r6 / 60;
@ -34,51 +40,83 @@ void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) {
sprintf(param_3, "%d:%02d", r5, r6);
}
} else if (param_1 == 3 && param_4 == true) {
f32 iVar8b;
f32 dayTime = g_env_light.getDaytime();
f32 iVar8 = 1000000.0f * dayTime;
iVar8 = ((s32)iVar8 % 15000000) / 1000000.0f;
iVar8 = 60.0f * (iVar8 / 15.0f);
sprintf(param_3, "%d:%02d", (s32)(dayTime / 15.0f), (s32)iVar8);
f32 fVar1 = dayTime / 15.0f;
iVar8b = ((s32)(1000000.0f * dayTime) % 15000000) / 1000000.0f;
f32 iVar8c = 60.0f * (iVar8b / 15.0f);
iVar8b = ((s32)(1000000.0f * dayTime) % 250000) / 1000000.0f;
f32 iVar9 = 60.0f * (iVar8b / 0.25f);
sprintf(param_3, "%d:%02d", (s32)(fVar1), (s32)iVar8c);
} else {
if (param_1 == 9 && param_4 == true) {
sprintf(param_3, "%d", param_2);
int param_2c = param_2;
sprintf(param_3, "%d", param_2c);
stack8 = true;
}
bmg_header_t* iVar9 = (bmg_header_t*)dMeter2Info_getMsgUnitResource();
inf1_section_t* inf1 = NULL;
str1_section_t* str1 = NULL;
int local_114 = sizeof(bmg_header_t);
u32 size = iVar9->size;
bmg_section_t* piVar12 = iVar9->section;
for (; local_114 < size; local_114 += piVar12->size) {
switch(piVar12->msgType) {
case 'FLW1':
break;
case 'FLI1':
break;
case 'DAT1':
break;
case 'INF1':
inf1 = (inf1_section_t*)piVar12;
break;
case 'STR1':
str1 = (str1_section_t*)piVar12;
break;
if (!stack9) {
bmg_header_t* iVar9 = (bmg_header_t*)dMeter2Info_getMsgUnitResource();
inf1_section_t* inf1 = NULL;
const void* dat1 = NULL;
str1_section_t* str1 = NULL;
int local_114 = sizeof(bmg_header_t);
u32 size = iVar9->size;
bmg_section_t* piVar12 = (bmg_section_t*)(((u8*)iVar9) + local_114);
for (; local_114 < size; local_114 += piVar12->size) {
switch(piVar12->msgType) {
case 'FLW1':
break;
case 'FLI1':
break;
case 'INF1':
inf1 = (inf1_section_t*)piVar12;
break;
case 'DAT1':
dat1 = piVar12;
break;
case 'STR1':
str1 = (str1_section_t*)piVar12;
break;
}
piVar12 = (bmg_section_t*)((u8*)piVar12 + piVar12->size);
}
// This section is weird. The debug seems like entriesStr is outside the condition
// but the normal build doesn't really work with that. Same for inf1->entries.
#ifdef DEBUG
inf1_entry_t* entry = &inf1->entries[param_1];
u32 dat1EntryOffset = entry->dat1EntryOffset;
u16 startFrame = entry->startFrame;
u16 endFrame = entry->endFrame;
const char* entriesStr = str1->entries->str;
#else
u16 startFrame = inf1->entries[param_1].startFrame;
u16 endFrame = inf1->entries[param_1].endFrame;
const char* entriesStr;
#endif
const char* uVar5;
if (param_2 == 1
#ifdef DEBUG
|| (dComIfGs_getPalLanguage() == 3 && param_2 == 0)
#endif
) {
#ifdef DEBUG
uVar5 = entriesStr + endFrame;
} else {
uVar5 = entriesStr + startFrame;
#else
uVar5 = str1->entries->str + endFrame;
} else {
uVar5 = str1->entries->str + startFrame;
#endif
}
if (strcmp(uVar5, "") == 0) {
sprintf(param_3, "%d%s", param_2, uVar5);
} else {
sprintf(param_3, "%d %s", param_2, uVar5);
}
piVar12 = (bmg_section_t*)((u8*)piVar12 + piVar12->size);
}
u32 uVar1 = inf1->entries[param_1].startFrame;
u32 uVar2 = inf1->entries[param_1].endFrame;
const char* uVar5;
if (param_2 == 1) {
uVar5 = str1->entries->str + uVar1;
} else {
uVar5 = str1->entries->str + uVar2;
}
if (strcmp(uVar5, "") == 0) {
sprintf(param_3, "%d%s", param_2, uVar5);
} else {
sprintf(param_3, "%d %s", param_2, uVar5);
}
if (param_1 == 3 && param_4 == true) {
char acStack_d8[20];
@ -87,7 +125,7 @@ void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) {
}
if (param_1 == 4 && param_4 == true) {
char acStack_ec[20];
setTag(5, param_2, acStack_ec, false);
setTag(5, param_2b, acStack_ec, false);
strcat(param_3, acStack_ec);
}
}