d_a_kaji OK (#35)

* d_a_kaji OK

* Fix return types

* Whoops, wrong bool for one
This commit is contained in:
LagoLunatic 2023-09-15 00:23:23 -04:00 committed by GitHub
parent 8fc9eab753
commit 5fb89c15d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 180 additions and 21 deletions

View File

@ -417,7 +417,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_hot_floor"),
ActorRel(NonMatching, "d_a_ikari"),
ActorRel(NonMatching, "d_a_jbo"),
ActorRel(NonMatching, "d_a_kaji"),
ActorRel(Matching, "d_a_kaji"),
ActorRel(NonMatching, "d_a_kanban"),
ActorRel(NonMatching, "d_a_ki"),
ActorRel(NonMatching, "d_a_knob00"),
@ -499,7 +499,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_tag_evsw"),
ActorRel(NonMatching, "d_a_tag_ghostship"),
ActorRel(NonMatching, "d_a_tag_hint"),
ActorRel(Matching, "d_a_tag_kb_item"),
ActorRel(Matching, "d_a_tag_kb_item"),
ActorRel(NonMatching, "d_a_tag_kk1"),
ActorRel(NonMatching, "d_a_tag_light"),
ActorRel(NonMatching, "d_a_tag_msg"),

View File

@ -0,0 +1,15 @@
#ifndef D_A_OBJ_PIRATESHIP_H
#define D_A_OBJ_PIRATESHIP_H
#include "f_op/f_op_actor_mng.h"
namespace daObjPirateship {
class Act_c : public fopAc_ac_c {
public:
/* 0x290 */ u8 temp[0x2CC - 0x290];
/* 0x2CC */ u8 unk2CC;
/* 0x2D0 */ J3DModel* mpModel;
};
}
#endif /* D_A_OBJ_PIRATESHIP_H */

View File

@ -233,7 +233,19 @@ public:
class JAIAnimeSound;
class mDoExt_McaMorf /* : public J3DMtxCalcMaya */ {
class J3DMtxCalcBasic { // Placeholder to fix mDoExt_McaMorf inheritance
public:
virtual ~J3DMtxCalcBasic();
};
class J3DMtxCalcMaya : virtual J3DMtxCalcBasic { // Placeholder to fix mDoExt_McaMorf inheritance
public:
virtual ~J3DMtxCalcMaya();
u8 pad[0x48];
};
class mDoExt_McaMorf : public J3DMtxCalcMaya {
public:
mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, float, int, int, int, void*, unsigned long, unsigned long);
virtual ~mDoExt_McaMorf();
@ -241,11 +253,11 @@ public:
void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32, void*);
J3DModel* getModel() { return mpModel; }
void setFrame(f32 frame) { mFrameCtrl.setFrame(frame); }
void update();
void updateDL();
void play(Vec *, u32, u8);
void play(Vec *, u32, s8);
void stopZelAnime();
u8 pad[0x4C]; // J3DMtxCalcMaya
/* 0x50 */ J3DModel* mpModel;
/* 0x54 */ J3DAnmTransform* mpAnm;
/* 0x58 */ J3DFrameCtrl mFrameCtrl;
@ -257,6 +269,8 @@ public:
/* 0x80 */ JAIAnimeSound * mpSound;
/* 0x84 */ mDoExt_McaMorfCallBack1_c * mpCallBack1;
/* 0x88 */ mDoExt_McaMorfCallBack2_c * mpCallBack2;
/* 0x8C */ /* virtual inheritance */
/* 0x94 */ u8 pad2[0xB4 - 0x94];
};
class mDoExt_3DlineMat_c {

View File

@ -3,41 +3,171 @@
// Translation Unit: d_a_kaji.cpp
//
#include "d_a_kaji.h"
#include "f_op/f_op_actor_mng.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "m_Do/m_Do_mtx.h"
#include "d/d_com_inf_game.h"
#include "d/d_s_play.h"
#include "d/actor/d_a_obj_pirateship.h"
#include "d/d_procname.h"
#include "dolphin/types.h"
extern dScnPly_reg_HIO_c g_regHIO;
struct daKaji_c : fopAc_ac_c {
public:
BOOL CreateHeap();
inline s32 _create();
inline BOOL _delete();
inline BOOL _execute();
inline bool _draw();
public:
/* 0x290 */ request_of_phase_process_class mPhs;
/* 0x298 */ u8 pad[0x29C - 0x298];
/* 0x29C */ mDoExt_McaMorf* mpMorf;
/* 0x2A0 */ Mtx mMtx;
static const char M_arcname[];
};
static daObjPirateship::Act_c* l_p_ship;
const char daKaji_c::M_arcname[] = "Kaji";
/* 00000078-00000098 .text CheckCreateHeap__FP10fopAc_ac_c */
void CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
static BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
return ((daKaji_c*)i_this)->CreateHeap();
}
/* 00000098-000001F4 .text CreateHeap__8daKaji_cFv */
void daKaji_c::CreateHeap() {
/* Nonmatching */
BOOL daKaji_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(M_arcname, 0x11); // asoda.bdl
JUT_ASSERT(0x55, modelData != 0);
mpMorf = new mDoExt_McaMorf(
modelData,
NULL, NULL,
(J3DAnmTransformKey*)dComIfG_getObjectRes("Kaji", 0xE), // kj_wait.bck
2, 0.0f, 0, -1, 1,
dComIfG_getObjectRes("Kaji", 0x8), // kj_wait.bas
0x00080000,
0x11000002
);
return mpMorf && mpMorf->getModel();
}
s32 daKaji_c::_create() {
fopAcM_SetupActor(this, daKaji_c);
s32 phase_state = dComIfG_resLoad(&mPhs, M_arcname);
if (phase_state == cPhs_COMPLEATE_e) {
if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)&CheckCreateHeap, 0x660)) {
mDoMtx_stack_c::transS(getPosition());
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z);
MTXCopy(mDoMtx_stack_c::get(), mMtx);
l_p_ship = (daObjPirateship::Act_c*)fopAcM_SearchByID(mParentPcId);
} else {
return cPhs_ERROR_e;
}
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -80.0f, -80.0f, -20.0f, 80.0f, 80.0f, 20.0f);
MTXCopy(mpMorf->getModel()->getBaseTRMtx(), mMtx);
}
return phase_state;
}
BOOL daKaji_c::_delete() {
dComIfG_resDelete(&mPhs, M_arcname);
return TRUE;
}
BOOL daKaji_c::_execute() {
// Copy the ship's transform (plus an offset) to the helm.
cXyz* offset = &cXyz(0.0f, 740.0f, -858.0f);
offset->y += g_regHIO.mChild[10].mFloatRegs[10];
offset->z += g_regHIO.mChild[10].mFloatRegs[11];
cMtx_multVec( l_p_ship->mpModel->getBaseTRMtx(), offset, &current.pos);
daObjPirateship::Act_c* ship = l_p_ship;
shape_angle = ship->shape_angle;
current.angle = shape_angle;
mpMorf->play(NULL, 0, 0);
mpMorf->getModel()->setBaseScale(mScale);
PSMTXTrans(mDoMtx_stack_c::get(), current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
mpMorf->getModel()->i_setBaseTRMtx(mDoMtx_stack_c::get());
MTXCopy(mDoMtx_stack_c::get(), mMtx);
return FALSE;
}
bool daKaji_c::_draw() {
if (!l_p_ship->unk2CC) {
return true;
}
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &mTevStr);
g_env_light.setLightTevColorType(mpMorf->getModel(), &mTevStr);
mpMorf->update();
return true;
}
/* 000001F4-00000344 .text daKajiCreate__FPv */
void daKajiCreate(void*) {
/* Nonmatching */
static s32 daKajiCreate(void* i_this) {
return ((daKaji_c*)i_this)->_create();
}
/* 00000344-00000374 .text daKajiDelete__FPv */
void daKajiDelete(void*) {
/* Nonmatching */
static BOOL daKajiDelete(void* i_this) {
return ((daKaji_c*)i_this)->_delete();
}
/* 00000374-000004D4 .text daKajiExecute__FPv */
void daKajiExecute(void*) {
/* Nonmatching */
static BOOL daKajiExecute(void* i_this) {
return ((daKaji_c*)i_this)->_execute();
}
/* 000004D4-00000568 .text daKajiDraw__FPv */
void daKajiDraw(void*) {
/* Nonmatching */
static BOOL daKajiDraw(void* i_this) {
return ((daKaji_c*)i_this)->_draw();
}
/* 00000568-00000570 .text daKajiIsDelete__FPv */
void daKajiIsDelete(void*) {
/* Nonmatching */
static BOOL daKajiIsDelete(void* actor) {
return TRUE;
}
static actor_method_class daKajiMethodTable = {
(process_method_func)daKajiCreate,
(process_method_func)daKajiDelete,
(process_method_func)daKajiExecute,
(process_method_func)daKajiIsDelete,
(process_method_func)daKajiDraw,
};
extern actor_process_profile_definition g_profile_Kaji = {
fpcLy_CURRENT_e,
3,
fpcLy_CURRENT_e,
PROC_Kaji,
&g_fpcLf_Method.mBase,
sizeof(daKaji_c),
0,
0,
&g_fopAc_Method.base,
0x01AC,
&daKajiMethodTable,
0x00040100,
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};

View File

@ -3,7 +3,7 @@
// Translation Unit: d_a_obj_pirateship.cpp
//
#include "d_a_obj_pirateship.h"
#include "d/actor/d_a_obj_pirateship.h"
#include "dolphin/types.h"
/* 000000EC-000000FC .text ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */