100% text

This commit is contained in:
WilliamArnett
2025-05-25 20:27:32 -05:00
parent e68c7e7424
commit b8807b2f50
3 changed files with 575 additions and 139 deletions
+1 -1
View File
@@ -1605,7 +1605,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_kg1"),
ActorRel(NonMatching, "d_a_npc_kg2"),
ActorRel(NonMatching, "d_a_npc_kk1"),
ActorRel(NonMatching, "d_a_npc_km1"),
ActorRel(Equivalent, "d_a_npc_km1",extra_cflags=['-pragma "nosyminline on"']), # weak func order
ActorRel(NonMatching, "d_a_npc_ko1"),
ActorRel(NonMatching, "d_a_npc_kp1"),
ActorRel(NonMatching, "d_a_npc_ls1"),
+72 -38
View File
@@ -5,22 +5,41 @@
#include "f_op/f_op_actor.h"
#include "m_Do/m_Do_hostIO.h"
class daNpc_Km1_c : public fopNpc_npc_c {
public:
typedef int (daNpc_Km1_c::*ActionFunc)(void*);
struct anm_prm_c {
s8 field_0x0;
s8 field_0x1;
u16 field_0x2;
float field_0x4;
float field_0x8;
int field_0xC;
};
struct prm_tbl {
u32 field_0x00;
u32 field_0x04;
u32 field_0x08;
u32 field_0x0C;
u32 field_0x10;
f32 field_0x14;
u32 field_0x18;
};
void getAttPos() {}
void getBackboneJntNum() {}
Vec* getAttPos() {return &field_0x780;}
s8 getBackboneJntNum() {return m_backbone_jnt_num;}
void getBackbone_x() {}
void getBackbone_y() {}
void getEyePos() {}
void getHeadJntNum() {}
Vec* getEyePos() {return &field_0x78C;}
s8 getHeadJntNum() {return m_head_jnt_num;}
void getHead_x() {}
void getHead_y() {}
void createInit();
bool createInit();
void setMtx();
bool anmResID(int, int*, int*);
void BtpNum2ResID(int, int*);
@@ -28,7 +47,7 @@ public:
u8 init_btp(bool, int);
bool initTexPatternAnm(bool);
void playTexPatternAnm();
void setAnm_anm(anm_prm_c*);
s32 setAnm_anm(anm_prm_c*);
void setAnm();
void chngAnmTag();
void ctrlAnmTag();
@@ -50,26 +69,31 @@ public:
void privateCut();
void endEvent();
void event_proc();
void set_action(int (daNpc_Km1_c::*)(void*), void*);
void wait01();
void talk01();
void wait_action1(void*);
void demo();
bool set_action(ActionFunc, void*);
BOOL wait01();
BOOL talk01();
int wait_action1(void*);
u8 demo();
bool _draw();
bool _execute();
bool _delete();
cPhs_State _create();
void CreateHeap();
BOOL CreateHeap();
public:
/* 0x6C4 */ u8 m6C4[0x6CC - 0x6C4];
/* 0x6CC */ u8 mHeadJntIdx;
/* 0x6CD */ u8 mBackBoneJntIdx;
/* 0x6CE */ u8 field_0x6CE[0x6F4 - 0x6CE];
/* 0x6F4 */ int (daNpc_Km1_c::*field_0x6F4)();
/* 0x700 */ u8 field_0x700[0x738 - 0x700];
/* 0x700 */ cXyz field_0x738;
/* 0x700 */ u8 field_0x744[0x76C - 0x744];
/* 0x6C4 */ request_of_phase_process_class field_0x6C4;
/* 0x6CC */ s8 m_head_jnt_num;
/* 0x6CD */ s8 m_backbone_jnt_num;
/* 0x6CE */ u8 field_0x6CE[0x6D0 - 0x6CE];
/* 0x6D0 */ u32 mShadowId;
/* 0x6D4 */ J3DModel* field_0x6D4;
/* 0x6D8 */ J3DAnmTexPattern* m_head_tex_pattern;
/* 0x6DC */ mDoExt_btpAnm mBtpAnm;
/* 0x6F0 */ u8 mBtpFrame;
/* 0x6F1 */ u8 field_0x6F1;
/* 0x6F2 */ s16 field_0x6F2;
/* 0x6F4 */ ActionFunc field_0x6F4;
/* 0x700 */ dNpc_EventCut_c mEventCut;
/* 0x76C */ csXyz field_0x76C;
/* 0x772 */ u8 field_0x772[0x774 - 0x772];
/* 0x774 */ cXyz field_0x774;
@@ -79,39 +103,49 @@ public:
/* 0x7A4 */ f32 field_0x7A4;
/* 0x7A8 */ u8 field_0x7A8[0x7AC - 0x7A8];
/* 0x7AC */ f32 field_0x7AC;
/* 0x7B0 */ s16 field_0x7B0;
/* 0x7B2 */ s16 field_0x7B2;
/* 0x7B4 */ s8 field_0x7B4;
/* 0x7B5 */ s8 field_0x7B5;
/* 0x7B6 */ u8 field_0x7B6[0x7B8 - 0x7B6];
/* 0x7B6 */ u8 field_0x7B6;
/* 0x7B7 */ u8 field_0x7B7;
/* 0x7B8 */ u8 field_0x7B8;
/* 0x7B9 */ u8 field_0x7B9[0x7BC - 0x7B9];
/* 0x7BC */ s32 field_0x7BC;
/* 0x7C0 */ s32 field_0x7C0;
/* 0x7C4 */ u16 field_0x7C5;
/* 0x7C4 */ u8 field_0x7C4;
/* 0x7C5 */ u8 field_0x7C5;
/* 0x7C6 */ bool mHeadOnlyFollow;
/* 0x7C7 */ u8 field_0x7C7;
/* 0x7C8 */ u8 field_0x7C8[0x7CA - 0x7C8];
/* 0x7C8 */ u8 field_0x7C8;
/* 0x7C8 */ s8 field_0x7C9;
/* 0x7CA */ s8 field_0x7CA;
/* 0x7CB */ s8 field_0x7CB;
/* 0x7CC */ s8 field_0x7CC;
/* 0x7CB */ u8 field_0x7CB;
/* 0x7CC */ u8 field_0x7CC;
/* 0x7CD */ s8 field_0x7CD;
/* 0x7CE */ s8 field_0x7CE;
/* 0x7CF */ u8 field_0x7CF;
/* 0x7CF */ s8 field_0x7CF;
/* 0x7D0 */ s8 field_0x7D0;
/* 0x7D0 */ s8 field_0x7D1;
/* 0x7D0 */ s8 field_0x7D2;
/* 0x7D0 */ s8 field_0x7D3;
/* 0x7D0 */ s8 field_0x7D4;
/* 0x7D0 */ s8 field_0x7D5;
/* 0x7D0 */ s8 field_0x7D6;
/* 0x7D0 */ s8 field_0x7D7;
/* 0x7D1 */ s8 field_0x7D1;
/* 0x7D2 */ s8 field_0x7D2;
/* 0x7D3 */ s8 field_0x7D3;
/* 0x7D4 */ s8 field_0x7D4;
/* 0x7D5 */ s8 field_0x7D5;
/* 0x7D6 */ s8 field_0x7D6;
/* 0x7D7 */ s8 field_0x7D7;
}; // Size: 0x7D8
class daNpc_Km1_HIO_c : mDoHIO_entry_c {
class daNpc_Km1_HIO_c : public JORReflexible{
struct daNpc_Km1_HIO__PrmTbl{
s16 field_0[0x9];
s16 field_0;
s16 field_2;
s16 field_4;
s16 field_6;
s16 field_8;
s16 field_A;
s16 field_C;
s16 field_E;
s16 field_10;
s16 field_12;
f32 mAttentionArrowYOffset;
f32 field_18;
@@ -121,7 +155,7 @@ public:
virtual ~daNpc_Km1_HIO_c(){};
public:
/* Place member variables here */
/* 0x4 */ s8 field_0x4;
/* 0x4 */ s8 mNo;
/* 0x5 */ s8 field_0x5;
/* 0x6 */ s8 field_0x6;
/* 0x7 */ s8 field_0x7;
+502 -100
View File
@@ -5,30 +5,82 @@
#include "d/actor/d_a_npc_km1.h"
#include "d/d_com_inf_game.h"
#include "d/d_s_play.h"
#include "d/d_snap.h"
#include "m_Do/m_Do_ext.h"
#include "d/d_procname.h"
#include "d/d_priority.h"
#include "weak_bss_936_to_1036.h"
static daNpc_Km1_HIO_c l_HIO;
/* 000000EC-00000144 .text __ct__15daNpc_Km1_HIO_cFv */
daNpc_Km1_HIO_c::daNpc_Km1_HIO_c() {
/* Nonmatching */
static daNpc_Km1_c::prm_tbl a_prm_tbl[] = {0x1FFE38E0, 0xE002C720, 0x00000000, 0x00000000,
0x08000800, 150.0, 0x00000000};
memcpy(&mPrmTbl,a_prm_tbl,0x1C);
mNo = -1;
field_0x8 = -1;
return;
}
/* 00000144-000002F0 .text nodeCallBack_Km__FP7J3DNodei */
static BOOL nodeCallBack_Km(J3DNode*, int) {
/* Nonmatching */
}
static BOOL nodeCallBack_Km(J3DNode* i_node, int i_calcTiming) {
if (i_calcTiming == 0) {
J3DModel* model = j3dSys.getModel();
daNpc_Km1_c* km1Actor = (daNpc_Km1_c *)(model->getUserArea());
u16 jointIdx;
if (km1Actor) {
static cXyz a_att_pos_offst(0.0,0.0,0.0);
static cXyz a_eye_pos_offst(20.0,20.0,0.0);
jointIdx = ((J3DJoint*)(i_node))->getJntNo();
mDoMtx_stack_c::copy(model->getAnmMtx(jointIdx));
if(jointIdx == km1Actor->getHeadJntNum()){
MTXMultVec(mDoMtx_stack_c::get(),&a_att_pos_offst,km1Actor->getAttPos());
mDoMtx_stack_c::XrotM(km1Actor->m_jnt.getHead_y());
mDoMtx_stack_c::ZrotM(km1Actor->m_jnt.getHead_x());
MTXMultVec(mDoMtx_stack_c::get(),&a_eye_pos_offst,km1Actor->getEyePos());
}else if(jointIdx == km1Actor->getBackboneJntNum()){
mDoMtx_stack_c::XrotM(km1Actor->m_jnt.getBackbone_y());
mDoMtx_stack_c::ZrotM(km1Actor->m_jnt.getBackbone_x());
}
MtxP stack = mDoMtx_stack_c::get();
cMtx_copy(stack,J3DSys::mCurrentMtx);
MTXCopy(stack,model->getAnmMtx(jointIdx));
}
}
return 1;
}
extern dCcD_SrcCyl dNpc_cyl_src;
/* 0000032C-0000043C .text createInit__11daNpc_Km1_cFv */
void daNpc_Km1_c::createInit() {
/* Nonmatching */
bool daNpc_Km1_c::createInit() {
mEventCut.setActorInfo2("Km1", this);
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
attention_info.distances[1] = 0xAB;
attention_info.distances[3] = 0xA9;
gravity = -4.0;
field_0x798 = current.pos;
set_action(&daNpc_Km1_c::wait_action1,NULL);
shape_angle = current.angle;
mStts.Init(0xFF,0xFF,this);
mCyl.SetStts(&mStts);
mCyl.Set(dNpc_cyl_src);
mpMorf->setMorf(0.0);
field_0x7BC = 1;
setMtx();
return 1;
}
/* 0000043C-0000054C .text setMtx__11daNpc_Km1_cFv */
void daNpc_Km1_c::setMtx() {
/* Nonmatching */
u32 uVar1;
char cVar2;
u8 bVar3;
@@ -55,45 +107,27 @@ void daNpc_Km1_c::setMtx() {
setAttention();
}
#define ANM_END 1
static int a_anm_idx_tbl[1][2];
/* 0000054C-00000654 .text anmResID__11daNpc_Km1_cFiPiPi */
bool daNpc_Km1_c::anmResID(int i_num, int* o_bck_num, int* o_bas_num) {
/* Nonmatching */
bool check_safe = false;
if(0 <= i_num && i_num < ANM_END){
check_safe = true;
}
if(!check_safe){
JUTAssertion::showAssert(JUTAssertion::getSDevice(),"d_a_npc_km1.cpp",0x11A,"0 <= i_num && i_num < ANM_END"); //ANM_END = 1
OSPanic("d_a_npc_km1.cpp", 0x11A, "Halt");
}
check_safe = false;
if(o_bck_num != NULL && o_bas_num != NULL){
check_safe = true;
}
if(!check_safe){
JUTAssertion::showAssert(JUTAssertion::getSDevice(),"d_a_npc_km1.cpp",0x11A,"o_bck_num && o_bas_num");
OSPanic("d_a_npc_km1.cpp", 0x11B, "Halt");
}
const int ANM_END = 1;
static const int a_anm_idx_tbl[1][2] = {1,0};
JUT_ASSERT(0x11A,0 <= i_num && i_num < ANM_END);
JUT_ASSERT(0x11B,o_bck_num && o_bas_num);
*o_bck_num = a_anm_idx_tbl[i_num][0];
*o_bas_num = a_anm_idx_tbl[i_num][1];
return 1;
}
static int a_btp_arc_ix_tbl[2] = {0,3};
/* 00000654-000006F0 .text BtpNum2ResID__11daNpc_Km1_cFiPi */
void daNpc_Km1_c::BtpNum2ResID(int i_num, int* o_btp_num)
{
bool check_safe = false;
if (0 <= i_num && i_num < ANM_END) { //TODO: Possibly not this define, 1 instead.
check_safe = true;
}
if (!check_safe) {
JUTAssertion::showAssert(JUTAssertion::getSDevice(),"d_a_npc_km1.cpp",0x130,"0 <= i_num && i_num < TEXPATTERN_END");
OSPanic("d_a_npc_km1.cpp",0x130,"Halt");
}
*o_btp_num = a_btp_arc_ix_tbl[i_num];
const int TEXPATTERN_END = 1;
static const int a_btp_arc_ix_tbl[1] = {3};
JUT_ASSERT(0x130,0 <= i_num && i_num < TEXPATTERN_END);
*o_btp_num = a_btp_arc_ix_tbl[i_num];
return;
}
@@ -107,8 +141,27 @@ void daNpc_Km1_c::setAnm_tex(signed char i_param_1) {
}
/* 00000734-00000850 .text init_btp__11daNpc_Km1_cFbi */
u8 daNpc_Km1_c::init_btp(bool, int) {
/* Nonmatching */
u8 daNpc_Km1_c::init_btp(bool param_1, int param_2) {
int btp_num;
int iVar3;
J3DModelData *pJVar4;
pJVar4 = mpMorf->getModel()->getModelData();
if (param_2 >= 0) {
BtpNum2ResID(param_2,&btp_num);
J3DAnmTexPattern* pVVar1 = (J3DAnmTexPattern*)dComIfG_getObjectIDRes("Km",btp_num);
m_head_tex_pattern = pVVar1;
JUT_ASSERT(0x151,m_head_tex_pattern != 0);
iVar3 = mBtpAnm.init(pJVar4,m_head_tex_pattern,1,2,1.0,0,-1,param_1,0);
if (iVar3 == 0) {
return 0;
}
mBtpFrame = 0;
field_0x6F2 = 0;
}
return 1;
}
/* 00000850-00000894 .text initTexPatternAnm__11daNpc_Km1_cFb */
@@ -125,63 +178,164 @@ bool daNpc_Km1_c::initTexPatternAnm(bool param_1) {
/* 00000894-00000958 .text playTexPatternAnm__11daNpc_Km1_cFv */
void daNpc_Km1_c::playTexPatternAnm() {
/* Nonmatching */
//TODO: Rewrite this conditional logic
bool var_r4 = 1;
if(field_0x7CD == 0){
var_r4 = !cLib_calcTimer(&field_0x6F2);
}
if(!var_r4){
return;
}
if((mBtpFrame += 1) < m_head_tex_pattern->getFrameMax()){
return;
}
if(field_0x7CD){
mBtpFrame = m_head_tex_pattern->getFrameMax();
return;
}else{
mBtpFrame = 0;
field_0x6F2 = cM_rndF(60.0) + 30.0f;
}
return;
}
/* 00000958-00000A24 .text setAnm_anm__11daNpc_Km1_cFPQ211daNpc_Km1_c9anm_prm_c */
void daNpc_Km1_c::setAnm_anm(daNpc_Km1_c::anm_prm_c*) {
/* Nonmatching */
s32 daNpc_Km1_c::setAnm_anm(daNpc_Km1_c::anm_prm_c* i_anm_ptr) {
u32 uVar2 = 0;
int local_18;
int local_14;
if (i_anm_ptr->field_0x0 >= 0 && field_0x7CE != i_anm_ptr->field_0x0) {
field_0x7CE = i_anm_ptr->field_0x0;
if (mpMorf != NULL) {
anmResID(field_0x7CE,&local_18,&local_14);
if (local_18 >= 0) {
dNpc_setAnmIDRes(mpMorf,i_anm_ptr->field_0xC,i_anm_ptr->field_0x4,i_anm_ptr->field_0x8,local_18,local_14,"Km");
}
uVar2 = 1;
}
field_0x7A4 = 0;
field_0x7B5 = 0;
field_0x7B4 = 0;
}
return uVar2;
}
/* 00000A24-00000A8C .text setAnm__11daNpc_Km1_cFv */
void daNpc_Km1_c::setAnm() {
/* Nonmatching */
static daNpc_Km1_c::anm_prm_c a_anm_prm_tbl2[3] = {
{-1,-1,0,0,0,-1},
{0,0,0x00,8,1,2},
{-1,-1,0,0,0,-1}
};
setAnm_tex(a_anm_prm_tbl2[field_0x7D0].field_0x1);
setAnm_anm(&a_anm_prm_tbl2[field_0x7D0]);
}
/* 00000A8C-00000A98 .text chngAnmTag__11daNpc_Km1_cFv */
void daNpc_Km1_c::chngAnmTag() {
/* Nonmatching */
switch(field_0x7CC){
case 0:
break;
}
return;
}
/* 00000A98-00000AA4 .text ctrlAnmTag__11daNpc_Km1_cFv */
void daNpc_Km1_c::ctrlAnmTag() {
/* Nonmatching */
switch(field_0x7CB){
case 0:
break;
}
}
/* 00000AA4-00000AE4 .text chngAnmAtr__11daNpc_Km1_cFUc */
void daNpc_Km1_c::chngAnmAtr(unsigned char) {
/* Nonmatching */
void daNpc_Km1_c::chngAnmAtr(unsigned char param_1) {
if(param_1 < 1 && param_1 != field_0x7CB){
field_0x7CB = param_1;
setAnm_ATR(1);
}
return;
}
/* 00000AE4-00000AE8 .text ctrlAnmAtr__11daNpc_Km1_cFv */
void daNpc_Km1_c::ctrlAnmAtr() {
/* Nonmatching */
}
}
/* 00000AE8-00000B50 .text setAnm_ATR__11daNpc_Km1_cFi */
void daNpc_Km1_c::setAnm_ATR(int) {
/* Nonmatching */
void daNpc_Km1_c::setAnm_ATR(int param_1) {
static daNpc_Km1_c::anm_prm_c a_anm_prm_tbl3[1] = {
{0x00,0x00,0x00,8,1,2}
};
if(param_1 != 0){
setAnm_tex(a_anm_prm_tbl3[field_0x7CB].field_0x1);
}
setAnm_anm((&a_anm_prm_tbl3[field_0x7CB]));
return;
}
/* 00000B50-00000C0C .text anmAtr__11daNpc_Km1_cFUs */
void daNpc_Km1_c::anmAtr(unsigned short) {
/* Nonmatching */
void daNpc_Km1_c::anmAtr(unsigned short param_1) {
if(param_1 == 6){
if(field_0x7D6 == 0){
field_0x7CC = 0xFF;
chngAnmAtr(dComIfGp_getMesgAnimeAttrInfo());
field_0x7D6 += 1;
}
u8 uVar1 = dComIfGp_getMesgAnimeTagInfo();
if(uVar1 != 0xFF && uVar1 != field_0x7CC){
dComIfGp_clearMesgAnimeTagInfo();
field_0x7CC = uVar1;
chngAnmTag();
}
}else if(param_1 == 0xE){
field_0x7D6 = 0;
}
ctrlAnmAtr();
ctrlAnmTag();
return;
}
/* 00000C0C-00000C64 .text setStt__11daNpc_Km1_cFSc */
void daNpc_Km1_c::setStt(signed char) {
/* Nonmatching */
}
void daNpc_Km1_c::setStt(signed char param_1) {
s8 uVar1 = field_0x7D0;
field_0x7D0 = param_1;
switch((s8)field_0x7D0) {
case 2:
field_0x7D2 = 1;
field_0x7CB = 0xFF;
field_0x7D1 = uVar1;
break;
default:
case 1:
setAnm();
break;
}
return;
}
/* 00000C64-00000C6C .text next_msgStatus__11daNpc_Km1_cFPUl */
u16 daNpc_Km1_c::next_msgStatus(unsigned long*) {
/* Nonmatching */
return 0x10;
}
/* 00000C6C-00000C74 .text getMsg__11daNpc_Km1_cFv */
u32 daNpc_Km1_c::getMsg() {
/* Nonmatching */
return 0;
}
@@ -199,7 +353,7 @@ void daNpc_Km1_c::eventOrder() {
/* 00000CC4-00000D04 .text checkOrder__11daNpc_Km1_cFv */
void daNpc_Km1_c::checkOrder() {
/* Nonmatching */
if(eventInfo.checkCommandDemoAccrpt()){
return;
}
@@ -216,18 +370,13 @@ void daNpc_Km1_c::checkOrder() {
/* 00000D04-00000E94 .text lookBack__11daNpc_Km1_cFv */
void daNpc_Km1_c::lookBack() {
/* Nonmatching */
// mLookBackHeadY = m_jnt.getHead_y();
// mLookBackBackboneY = m_jnt.getBackbone_y();
// mLookBackAngleY = current.angle.y;
cXyz vec1;
cXyz vec2 = current.pos;
vec2.y = eyePos.y;
vec1.setall(0.0);
int Int1;
fopAc_ac_c *pActor;
cXyz* dstPos = NULL;
s16 targetY = current.angle.y;
bool headOnlyFollow = mHeadOnlyFollow;
@@ -271,6 +420,7 @@ bool daNpc_Km1_c::chkAttention() {
}
}
const u32 fillerbytes[] = {0xFF000080,0x0000FF80};
/* 00000F14-00000F78 .text setAttention__11daNpc_Km1_cFv */
void daNpc_Km1_c::setAttention() {
@@ -316,102 +466,354 @@ bool daNpc_Km1_c::event_action() {
}
return 1;
}
static char* cut_name_tbl[] = {"ACTION"};
/* 0000103C-00001144 .text privateCut__11daNpc_Km1_cFv */
void daNpc_Km1_c::privateCut() {
/* Nonmatching */
// dComIfGp_evmng_getMyStringP()
// int staffIdx = dComIfGp_evmng_getMyStaffId()
int staffIdx = dComIfGp_evmng_getMyStaffId("Km1",NULL,0);
if(staffIdx != -1){
int uVar1 = dComIfGp_evmng_getMyActIdx(staffIdx,cut_name_tbl,1,1,0);
field_0x7C9 = uVar1;
if(field_0x7C9 == -1){
dComIfGp_evmng_cutEnd(staffIdx);
return;
}
if(dComIfGp_evmng_getIsAddvance(staffIdx)){
switch(field_0x7C9){
case 0:
event_actionInit(staffIdx);
}
}
bool bVar1;
switch(field_0x7C9){
case 0:
bVar1 = event_action();
break;
default:
bVar1 = 1;
break;
}
if(bVar1){
dComIfGp_evmng_cutEnd(staffIdx);
}
}
}
/* 00001144-00001164 .text endEvent__11daNpc_Km1_cFv */
void daNpc_Km1_c::endEvent() {
/* Nonmatching */
dComIfGp_event_onEventFlag(8);
field_0x7CB = 0xFF;
return;
}
/* 00001164-000011C4 .text event_proc__11daNpc_Km1_cFv */
void daNpc_Km1_c::event_proc() {
/* Nonmatching */
if(!mEventCut.cutProc()){
privateCut();
}
lookBack();
shape_angle = current.angle;
}
/* 000011C4-00001270 .text set_action__11daNpc_Km1_cFM11daNpc_Km1_cFPCvPvPv_iPv */
void daNpc_Km1_c::set_action(int (daNpc_Km1_c::*)(void*), void*) {
/* Nonmatching */
bool daNpc_Km1_c::set_action(ActionFunc i_action, void* param_2) {
if(field_0x6F4 != i_action){
if(field_0x6F4 != 0){
field_0x7D5 = 0xFF;
(this->*field_0x6F4)(param_2);
}
field_0x6F4 = i_action;
field_0x7D5 = 0;
(this->*field_0x6F4)(param_2);
}
return 1;
}
/* 00001270-00001368 .text wait01__11daNpc_Km1_cFv */
void daNpc_Km1_c::wait01() {
/* Nonmatching */
BOOL daNpc_Km1_c::wait01() {
if(field_0x7C5 != 0){
bool set_stt = true;
field_0x7B7 = 0xFF;
if(dComIfGp_event_chkTalkXY()){
if(dComIfGp_evmng_ChkPresentEnd() != 0){
field_0x7B7 = dComIfGp_event_getPreItemNo();
}else{
set_stt = false;
}
}
if(set_stt){
setStt(2);
}
}else{
field_0x7CF = 2;
if(field_0x7C4){
field_0x7D2 = 1;
}else{
field_0x7D2 = 3;
field_0x7B2 = field_0x76C.y;
m_jnt.setTrn();
}
}
return 1;
}
/* 00001368-000013F8 .text talk01__11daNpc_Km1_cFv */
void daNpc_Km1_c::talk01() {
/* Nonmatching */
BOOL daNpc_Km1_c::talk01() {
talk(1);
if(mpCurrMsg != NULL){
switch(mpCurrMsg->mStatus){
case 6:
case 2:
break;
case 19:
field_0x7B7 = 0xFF;
setStt((field_0x7D1));
field_0x7C8 = 0;
field_0x7C5 = 0;
endEvent();
break;
}
}
return 1;
}
/* 000013F8-000014AC .text wait_action1__11daNpc_Km1_cFPv */
void daNpc_Km1_c::wait_action1(void*) {
/* Nonmatching */
int daNpc_Km1_c::wait_action1(void*) {
if(field_0x7D5 == 0){
setStt(1);
field_0x7D5 += 1;
}else if( field_0x7D5 != -1){
field_0x7C4 = chkAttention();
switch(field_0x7D0){
case 2:
field_0x7C0 = talk01();
break;
case 1:
field_0x7C0 = wait01();
break;
default:
field_0x7C0 = 0;
break;
}
lookBack();
}
return 1;
}
/* 000014AC-00001548 .text demo__11daNpc_Km1_cFv */
void daNpc_Km1_c::demo() {
/* Nonmatching */
u8 daNpc_Km1_c::demo() {
if(demoActorID == 0){
if(field_0x7C7 != 0){
field_0x7C7 = 0;
}
}else{
field_0x7C7 = 1;
dComIfGp_demo_getActor(demoActorID);
dDemo_setDemoData(this,0x6A,mpMorf,"Km",0,0,0,0);
}
return field_0x7C7;
}
/* 00001548-000016AC .text _draw__11daNpc_Km1_cFv */
bool daNpc_Km1_c::_draw() {
/* Nonmatching */
J3DModelData *model_data;
J3DModel *model;
model = mpMorf->getModel();
model_data = model->getModelData();
g_env_light.settingTevStruct(TEV_TYPE_ACTOR,&current.pos,&tevStr);
g_env_light.setLightTevColorType(model,&tevStr);
mBtpAnm.entry(model_data,mBtpFrame);
mpMorf->entryDL();
mBtpAnm.remove(model_data);
dNpc_setShadowModel(field_0x6D4,model_data,model);
cXyz pos(current.pos.x,current.pos.y+150.0f,current.pos.z);
mShadowId = dComIfGd_setRealShadow(mShadowId,1,field_0x6D4,&pos,800.0,current.pos.y-mObjAcch.GetGroundH(),NULL);
if(mShadowId == 0){
cXyz* pFloorNrm = (cXyz*)dComIfG_Bgsp()->GetTriPla(mObjAcch.m_gnd.GetBgIndex(),mObjAcch.m_gnd.GetPolyIndex());
dComIfGd_setSimpleShadow(&current.pos,mObjAcch.GetGroundH(),40.0,pFloorNrm);
}
dSnap_RegistFig(0x58,this,1.0,1.0,1.0);
return 1;
}
/* 000016AC-00001808 .text _execute__11daNpc_Km1_cFv */
bool daNpc_Km1_c::_execute() {
/* Nonmatching */
if(field_0x7B8 == 0){
field_0x774 = current.pos;
field_0x76C = current.angle;
field_0x7B8 = 1;
}
m_jnt.setParam(l_HIO.mPrmTbl.field_8,
l_HIO.mPrmTbl.field_A,l_HIO.mPrmTbl.field_C,
l_HIO.mPrmTbl.field_E,l_HIO.mPrmTbl.field_0,
l_HIO.mPrmTbl.field_2,l_HIO.mPrmTbl.field_4,
l_HIO.mPrmTbl.field_6,l_HIO.mPrmTbl.field_10);
checkOrder();
if(demo() == 0){
if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk()){
event_proc();
}else{
(this->*field_0x6F4)(NULL);
shape_angle = current.angle;
}
}
eventOrder();
if(field_0x7C7 == 0){
fopAcM_posMoveF(this,(cXyz*)&mStts);
}
setMtx();
setCollision(60.0,150.0);
return 1;
}
/* 00001808-0000188C .text _delete__11daNpc_Km1_cFv */
bool daNpc_Km1_c::_delete() {
/* Nonmatching */
fopAcM_GetID(this);
dComIfG_resDelete(&field_0x6C4,"Km");
if(mpMorf != NULL){
mpMorf->stopZelAnime();
}
if(l_HIO.field_0x8 >= 0){
l_HIO.field_0x8 += -1;
if(l_HIO.field_0x8 < 0){
mDoHIO_deleteChild(l_HIO.mNo);
}
}
return 1;
}
/* 0000188C-000018AC .text CheckCreateHeap__FP10fopAc_ac_c */
static BOOL CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
static BOOL CheckCreateHeap(fopAc_ac_c* actor) {
return ((daNpc_Km1_c*)actor)->CreateHeap();
}
/* 000018AC-00001A1C .text _create__11daNpc_Km1_cFv */
cPhs_State daNpc_Km1_c::_create() {
/* Nonmatching */
static int a_heap_size_tbl[1] = {0x000272E0};
fopAcM_SetupActor(this,daNpc_Km1_c);
if (!decideType(base.mParameters & 0xff)) {
return cPhs_ERROR_e;
}
s32 resLoadResult = dComIfG_resLoad(&field_0x6C4,"Km");
if(resLoadResult != cPhs_COMPLEATE_e){
return resLoadResult;
}
if(l_HIO.field_0x8 < 0){
l_HIO.mNo = mDoHIO_createChild("金持ちム−ル",&l_HIO);
}
l_HIO.field_0x8 += 1;
if(fopAcM_entrySolidHeap(this,CheckCreateHeap,a_heap_size_tbl[field_0x7D3])){
cullMtx = (MtxP)mpMorf->mpModel->getBaseTRMtx();
fopAcM_SetMtx(this,cullMtx);
fopAcM_setCullSizeBox(this,-60.0,-20.0,-80.0,60.0,160.0,60.0);
}else{
return cPhs_ERROR_e;
}
if (createInit() == 0) {
resLoadResult = cPhs_ERROR_e;
}
return resLoadResult;
}
/* 00001E4C-00002158 .text CreateHeap__11daNpc_Km1_cFv */
void daNpc_Km1_c::CreateHeap() {
/* Nonmatching */
}
BOOL daNpc_Km1_c::CreateHeap() {
static u8 a_tex_pattern_num_tbl[1] = {0};
J3DModelData *a_mdl_data;
a_mdl_data = (J3DModelData*)dComIfG_getObjectIDRes("Km",0x2);
JUT_ASSERT(0x52D,a_mdl_data != 0);
mpMorf = new mDoExt_McaMorf(
a_mdl_data,
NULL, NULL,
(J3DAnmTransform*)dComIfG_getObjectIDRes("Km", 0x1),
J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, 1, NULL,
0x80000, 0x11020002
);
if (mpMorf){
if(mpMorf->getModel()) {
m_head_jnt_num = a_mdl_data->getJointName()->getIndex("head");
JUT_ASSERT(0x540,m_head_jnt_num >= 0);
m_backbone_jnt_num = a_mdl_data->getJointName()->getIndex("backbone");
JUT_ASSERT(0x542,m_backbone_jnt_num >= 0);
field_0x7CD = a_tex_pattern_num_tbl[field_0x7D3];
if (initTexPatternAnm(false) != 0) {
field_0x6D4 = mDoExt_J3DModel__create(a_mdl_data,0x20000,0x11020203);
if (field_0x6D4 != 0) {
for (u16 i = 0; i < a_mdl_data->getJointNum(); i += 1) {
if ((i == m_head_jnt_num) || (i == m_backbone_jnt_num)) {
mpMorf->mpModel->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack_Km);
}
}
mpMorf->getModel()->setUserArea((u32)this);
mAcchCir.SetWall(30.0,60.0);
mObjAcch.Set(&current.pos,&old.pos,(fopAc_ac_c *)this,1,
&mAcchCir,&speed,NULL,NULL);
return 1;
}
}
}
mpMorf = NULL;
}
return 0;
}
/* 00002158-00002178 .text daNpc_Km1_Create__FP10fopAc_ac_c */
static cPhs_State daNpc_Km1_Create(fopAc_ac_c*) {
/* Nonmatching */
static cPhs_State daNpc_Km1_Create(fopAc_ac_c* obj) {
(static_cast<daNpc_Km1_c*>(obj))->_create();
}
/* 00002178-00002198 .text daNpc_Km1_Delete__FP11daNpc_Km1_c */
static BOOL daNpc_Km1_Delete(daNpc_Km1_c*) {
/* Nonmatching */
static BOOL daNpc_Km1_Delete(daNpc_Km1_c* obj) {
(static_cast<daNpc_Km1_c*>(obj))->_delete();
}
/* 00002198-000021B8 .text daNpc_Km1_Execute__FP11daNpc_Km1_c */
static BOOL daNpc_Km1_Execute(daNpc_Km1_c*) {
/* Nonmatching */
static BOOL daNpc_Km1_Execute(daNpc_Km1_c* obj) {
(static_cast<daNpc_Km1_c*>(obj))->_execute();
}
/* 000021B8-000021D8 .text daNpc_Km1_Draw__FP11daNpc_Km1_c */
static BOOL daNpc_Km1_Draw(daNpc_Km1_c*) {
/* Nonmatching */
static BOOL daNpc_Km1_Draw(daNpc_Km1_c* obj) {
(static_cast<daNpc_Km1_c*>(obj))->_draw();
}
/* 000021D8-000021E0 .text daNpc_Km1_IsDelete__FP11daNpc_Km1_c */
static BOOL daNpc_Km1_IsDelete(daNpc_Km1_c*) {
/* Nonmatching */
return TRUE;
}
static actor_method_class l_daNpc_Km1_Method = {