d_a_kytag06 fully done / d_msg_class/object work (#300)

* d_a_kytag06 OK and d_msg_class/object wip

* add some GXDraw functions

* cleanup kytag6

* remove asm
This commit is contained in:
TakaRikka
2023-02-25 18:23:13 -08:00
committed by GitHub
parent 4df6e8edea
commit bf663a0e3d
112 changed files with 5132 additions and 7404 deletions
+2 -2
View File
@@ -1857,7 +1857,7 @@ JKRExpHeap* dComIfGp_getSubHeap2D(int flag) {
return NULL;
}
int dComIfGs_checkGetInsectNum() {
u8 dComIfGs_checkGetInsectNum() {
static u8 l_itemno[24] = {
M_BEETLE, F_BEETLE, M_BUTTERFLY, F_BUTTERFLY, M_STAG_BEETLE, F_STAG_BEETLE,
M_GRASSHOPPER, F_GRASSHOPPER, M_NANAFUSHI, F_NANAFUSHI, M_DANGOMUSHI, F_DANGOMUSHI,
@@ -1865,7 +1865,7 @@ int dComIfGs_checkGetInsectNum() {
M_DRAGONFLY, F_DRAGONFLY, M_ANT, F_ANT, M_MAYFLY, F_MAYFLY,
};
int insectCount = 0;
u8 insectCount = 0;
u8* insectList = l_itemno;
for (int i = 0; i < ARRAY_SIZE(l_itemno); i++) {
-1
View File
@@ -116,7 +116,6 @@ extern "C" void _savegpr_29();
extern "C" void _restgpr_24();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopMsg_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern void* __vt__14mDoHIO_entry_c[3];
-4
View File
@@ -11,10 +11,6 @@
// Types:
//
struct mDoMtx_stack_c {
static u8 now[48];
};
struct kankyo_class {};
-4
View File
@@ -14,10 +14,6 @@
// Types:
//
struct mDoMtx_stack_c {
static u8 now[48];
};
struct dEvt_control_c {
/* 800434D8 */ void searchMapEventData(u8);
};
-1
View File
@@ -141,7 +141,6 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void __div2i();
extern "C" extern void* g_fopMsg_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern u8 g_drawHIO[3880];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-4
View File
@@ -11,10 +11,6 @@
// Types:
//
struct mDoMtx_stack_c {
static u8 now[48];
};
struct mDoGph_gInf_c {
static u8 mFader[4];
};
-1
View File
@@ -257,7 +257,6 @@ extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopMsg_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern void* __vt__10CSTControl[4];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
+2799 -1958
View File
File diff suppressed because it is too large Load Diff
+24 -25
View File
@@ -350,7 +350,6 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */];
extern "C" extern void* g_fopMsg_Method[5 + 1 /* padding */];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" u8 m_control__7dDemo_c[4];
@@ -678,7 +677,7 @@ asm void dMsgObject_c::setMessageIndexDemo(u32 param_0, bool param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getMessageIndex(u32 param_0) {
asm int dMsgObject_c::getMessageIndex(u32 param_0) {
nofralloc
#include "asm/d/msg/d_msg_object/getMessageIndex__12dMsgObject_cFUl.s"
}
@@ -992,13 +991,13 @@ asm void dMsgObject_c::getStringLocal(u32 param_0, J2DTextBox* param_1, J2DTextB
/* 802370A8-802370BC 2319E8 0014+00 0/0 1/1 0/0 .text isGetItemMessage__12dMsgObject_cFv
*/
BOOL dMsgObject_c::isGetItemMessage() {
u8 dMsgObject_c::isGetItemMessage() {
return mFukiKind == 9;
}
/* 802370BC-802370E8 2319FC 002C+00 4/4 2/2 0/0 .text isKanbanMessage__12dMsgObject_cFv
*/
BOOL dMsgObject_c::isKanbanMessage() {
bool dMsgObject_c::isKanbanMessage() {
if (mFukiKind == 2 || mFukiKind == 6 || mFukiKind == 15) {
return true;
}
@@ -1006,7 +1005,7 @@ BOOL dMsgObject_c::isKanbanMessage() {
}
/* 802370E8-802370FC 231A28 0014+00 6/6 3/3 0/0 .text isHowlMessage__12dMsgObject_cFv */
BOOL dMsgObject_c::isHowlMessage() {
u8 dMsgObject_c::isHowlMessage() {
return mFukiKind == 17;
}
@@ -1025,7 +1024,7 @@ asm bool dMsgObject_c::isMidonaMessage() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isMidonaNormalTalkWait() {
asm bool dMsgObject_c::isMidonaNormalTalkWait() {
nofralloc
#include "asm/d/msg/d_msg_object/isMidonaNormalTalkWait__12dMsgObject_cFv.s"
}
@@ -1036,7 +1035,7 @@ asm void dMsgObject_c::isMidonaNormalTalkWait() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isMidonaTalkWait() {
asm bool dMsgObject_c::isMidonaTalkWait() {
nofralloc
#include "asm/d/msg/d_msg_object/isMidonaTalkWait__12dMsgObject_cFv.s"
}
@@ -1046,7 +1045,7 @@ asm void dMsgObject_c::isMidonaTalkWait() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isPlaceMessage() {
asm bool dMsgObject_c::isPlaceMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isPlaceMessage__12dMsgObject_cFv.s"
}
@@ -1056,7 +1055,7 @@ asm void dMsgObject_c::isPlaceMessage() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isBossMessage() {
asm bool dMsgObject_c::isBossMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isBossMessage__12dMsgObject_cFv.s"
}
@@ -1071,7 +1070,7 @@ bool dMsgObject_c::isBookMessage() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isStaffMessage() {
asm bool dMsgObject_c::isStaffMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isStaffMessage__12dMsgObject_cFv.s"
}
@@ -1081,7 +1080,7 @@ asm void dMsgObject_c::isStaffMessage() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isSaveMessage() {
asm bool dMsgObject_c::isSaveMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isSaveMessage__12dMsgObject_cFv.s"
}
@@ -1091,7 +1090,7 @@ asm void dMsgObject_c::isSaveMessage() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isTalkMessage() {
asm bool dMsgObject_c::isTalkMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isTalkMessage__12dMsgObject_cFv.s"
}
@@ -1101,27 +1100,27 @@ asm void dMsgObject_c::isTalkMessage() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getSmellName() {
asm const char* dMsgObject_c::getSmellName() {
nofralloc
#include "asm/d/msg/d_msg_object/getSmellName__12dMsgObject_cFv.s"
}
#pragma pop
/* 80237334-8023738C 231C74 0058+00 0/0 5/5 0/0 .text getPortalName__12dMsgObject_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getPortalName() {
nofralloc
#include "asm/d/msg/d_msg_object/getPortalName__12dMsgObject_cFv.s"
const char* dMsgObject_c::getPortalName() {
JMSMesgHeader_c* info_header_p = (JMSMesgHeader_c*)((char*)mpMsgRes + 0x20);
char* data_ptr = (char*)info_header_p + info_header_p->sectionSize;
JMSMesgEntry_c* info_entries = (JMSMesgEntry_c*)((char*)info_header_p + 0x10);
JMSMesgEntry_c* msg_entry = &info_entries[getMessageIndex(getPortalMessageID())];
return data_ptr + msg_entry->mStringOffset + 8;
}
#pragma pop
/* 8023738C-8023741C 231CCC 0090+00 0/0 5/5 0/0 .text getBombName__12dMsgObject_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getBombName() {
asm const char* dMsgObject_c::getBombName() {
nofralloc
#include "asm/d/msg/d_msg_object/getBombName__12dMsgObject_cFv.s"
}
@@ -1131,7 +1130,7 @@ asm void dMsgObject_c::getBombName() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getInsectName() {
asm const char* dMsgObject_c::getInsectName() {
nofralloc
#include "asm/d/msg/d_msg_object/getInsectName__12dMsgObject_cFv.s"
}
@@ -1141,7 +1140,7 @@ asm void dMsgObject_c::getInsectName() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getLetterName() {
asm const char* dMsgObject_c::getLetterName() {
nofralloc
#include "asm/d/msg/d_msg_object/getLetterName__12dMsgObject_cFv.s"
}
@@ -1152,7 +1151,7 @@ asm void dMsgObject_c::getLetterName() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getSelectBombNum() {
asm u8 dMsgObject_c::getSelectBombNum() {
nofralloc
#include "asm/d/msg/d_msg_object/getSelectBombNum__12dMsgObject_cFv.s"
}
@@ -1959,7 +1958,7 @@ asm void dMsgObject_c::getMsgOutputType() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getWord() {
asm const char* dMsgObject_c::getWord() {
nofralloc
#include "asm/d/msg/d_msg_object/getWord__12dMsgObject_cFv.s"
}
-25
View File
@@ -8,31 +8,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct jmessage_string_tControl {
/* 8022FB5C */ jmessage_string_tControl();
};
struct COutFont_c {};
struct jmessage_string_tReference {
/* 8022F8C0 */ jmessage_string_tReference();
/* 8022F9AC */ void init(J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
/* 8022FA38 */ void getLineLength(int);
};
struct jmessage_string_tSequenceProcessor {
/* 80230A08 */ jmessage_string_tSequenceProcessor(jmessage_string_tReference const*,
jmessage_string_tControl*);
};
struct jmessage_string_tRenderingProcessor {
/* 80230BC8 */ jmessage_string_tRenderingProcessor(jmessage_string_tReference const*);
};
//
// Forward References:
//
+6 -68
View File
@@ -5,21 +5,8 @@
#include "d/msg/d_msg_unit.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct dScnKy_env_light_c {
/* 8019FA08 */ void getDaytime();
};
struct dMsgUnit_c {
/* 80238C94 */ dMsgUnit_c();
/* 80238CA4 */ ~dMsgUnit_c();
/* 80238CEC */ void setTag(int, int, char*, bool);
};
#include "d/kankyo/d_kankyo.h"
#include "d/meter/d_meter2_info.h"
//
// Forward References:
@@ -41,45 +28,16 @@ extern "C" void __dl__FPv();
extern "C" void __register_global_object();
extern "C" void _savegpr_26();
extern "C" void _restgpr_26();
extern "C" void sprintf();
extern "C" void strcmp();
extern "C" void strcat();
extern "C" extern u8 g_env_light[4880];
extern "C" extern u8 g_meter2_info[248];
//
// Declarations:
//
/* ############################################################################################## */
/* 803C0BF0-803C0C00 01DD10 000C+04 2/2 0/0 0/0 .data __vt__10dMsgUnit_c */
SECTION_DATA extern void* __vt__10dMsgUnit_c[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__10dMsgUnit_cFv,
/* padding */
NULL,
};
/* 80238C94-80238CA4 2335D4 0010+00 1/1 0/0 0/0 .text __ct__10dMsgUnit_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgUnit_c::dMsgUnit_c() {
nofralloc
#include "asm/d/msg/d_msg_unit/__ct__10dMsgUnit_cFv.s"
}
#pragma pop
dMsgUnit_c::dMsgUnit_c() {}
/* 80238CA4-80238CEC 2335E4 0048+00 2/1 0/0 0/0 .text __dt__10dMsgUnit_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgUnit_c::~dMsgUnit_c() {
nofralloc
#include "asm/d/msg/d_msg_unit/__dt__10dMsgUnit_cFv.s"
}
#pragma pop
dMsgUnit_c::~dMsgUnit_c() {}
/* ############################################################################################## */
/* 803996E8-803996E8 025D48 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -121,32 +79,12 @@ asm void dMsgUnit_c::setTag(int param_0, int param_1, char* param_2, bool param_
}
#pragma pop
/* ############################################################################################## */
/* 804306B8-804306C8 05D3D8 000C+04 1/1 0/0 0/0 .bss @3640 */
static u8 lit_3640[12 + 4 /* padding */];
/* 804510D0-804510D8 0005D0 0004+04 1/1 5/5 0/0 .sbss g_msg_unit */
extern u8 g_msg_unit[4 + 4 /* padding */];
u8 g_msg_unit[4 + 4 /* padding */];
/* 8023907C-802390B4 2339BC 0038+00 0/0 1/0 0/0 .text __sinit_d_msg_unit_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_msg_unit_cpp() {
nofralloc
#include "asm/d/msg/d_msg_unit/__sinit_d_msg_unit_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x8023907C, __sinit_d_msg_unit_cpp);
#pragma pop
dMsgUnit_c g_msg_unit;
/* ############################################################################################## */
/* 804510D8-804510E0 0005D8 0008+00 0/0 2/2 0/0 .sbss None */
extern u8 data_804510D8[8];
u8 data_804510D8[8];
u8 data_804510D8[8] ALIGN_DECL(8);
/* 803996E8-803996E8 025D48 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-1
View File
@@ -4,7 +4,6 @@
*/
#include "f_op/f_op_msg.h"
#include "d/msg/d_msg_class.h"
#include "d/s/d_s_play.h"
#include "f_op/f_op_msg_mng.h"
+97
View File
@@ -16,6 +16,7 @@
#include "dol2asm.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
#include "dolphin/gx/GXDraw.h"
#include "d/kankyo/d_kankyo.h"
#include "m_Do/m_Do_mtx.h"
@@ -3278,6 +3279,102 @@ extern "C" asm void draw__26mDoExt_3DlineMatSortPacketFv() {
}
#pragma pop
void drawCube(MtxP mtx, cXyz* pos, const GXColor& color) {
GXSetArray(GX_VA_POS, pos, sizeof(cXyz));
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE);
GXSetNumTexGens(0);
GXSetNumTevStages(1);
GXSetTevColor(GX_TEVREG0, color);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetCullMode(GX_CULL_BACK);
GXSetClipMode(GX_CLIP_ENABLE);
GXLoadPosMtxImm(mtx, 0);
GXSetCurrentMtx(0);
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 14);
GXPosition1x8(4);
GXPosition1x8(6);
GXPosition1x8(5);
GXPosition1x8(7);
GXPosition1x8(3);
GXPosition1x8(6);
GXPosition1x8(2);
GXPosition1x8(4);
GXPosition1x8(0);
GXPosition1x8(5);
GXPosition1x8(1);
GXPosition1x8(3);
GXPosition1x8(0);
GXPosition1x8(2);
i_GXEnd();
}
void mDoExt_cubePacket::draw() {
static cXyz l_pos[8] = {
cXyz(-1.0f, 1.0f, -1.0f),
cXyz(1.0f, 1.0f, -1.0f),
cXyz(-1.0f, 1.0f, 1.0f),
cXyz(1.0f, 1.0f, 1.0f),
cXyz(-1.0f, -1.0f, -1.0f),
cXyz(1.0f, -1.0f, -1.0f),
cXyz(-1.0f, -1.0f, 1.0f),
cXyz(1.0f, -1.0f, 1.0f),
};
mDoMtx_stack_c::transS(mPosition.x, mPosition.y, mPosition.z);
mDoMtx_stack_c::XYZrotM(mAngle.x, mAngle.y, mAngle.z);
mDoMtx_stack_c::scaleM(mSize.x, mSize.y, mSize.z);
mDoMtx_stack_c::revConcat(j3dSys.getViewMtx());
drawCube(mDoMtx_stack_c::get(), l_pos, mColor);
}
void mDoExt_cylinderPacket::draw() {
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0, GX_ENABLE, GX_SRC_REG, GX_SRC_REG, 1, GX_DF_CLAMP, GX_AF_NONE);
GXSetNumTexGens(0);
GXSetNumTevStages(1);
GXSetTevColor(GX_TEVREG0, mColor);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_RASC, GX_CC_C0, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
if (field_0x28) {
GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE);
} else {
GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE);
}
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetCullMode(GX_CULL_BACK);
GXSetClipMode(GX_CLIP_ENABLE);
mDoMtx_stack_c::copy(j3dSys.getViewMtx());
mDoMtx_stack_c::transM(mPosition.x, mPosition.y + mHeight * 0.5f, mPosition.z);
mDoMtx_stack_c::scaleM(mRadius, mRadius * 0.5f, mRadius);
mDoMtx_stack_c::XrotM(0x4000);
GXLoadPosMtxImm(mDoMtx_stack_c::get(), 0);
mDoMtx_stack_c::inverseTranspose();
GXLoadNrmMtxImm(mDoMtx_stack_c::get(), 0);
GXSetCurrentMtx(0);
GXDrawCylinder(8);
}
/* ############################################################################################## */
/* 803740FC-803740FC 00075C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push