misc dAcOFlag_c

This commit is contained in:
elijah-thomas774
2026-04-18 08:53:27 -04:00
parent 457a7d3d5d
commit 53eea0cc9f
4 changed files with 105 additions and 18 deletions
+15 -15
View File
@@ -3,7 +3,7 @@ _epilog = .text:0x00000030; // type:function size:0x2C scope:global
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
__register_global_object = .text:0x00000070; // type:function size:0x1C scope:global
__destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global
fn_552_F0 = .text:0x000000F0; // type:function size:0x40
__dt__7mVec3_cFv = .text:0x000000F0; // type:function size:0x40
dAcOFlag_c_classInit__Fv = .text:0x00000130; // type:function size:0x110
__dt__23sFState_c<10dAcOFlag_c>Fv = .text:0x00000240; // type:function size:0x58
__dt__26sFStateFct_c<10dAcOFlag_c>Fv = .text:0x000002A0; // type:function size:0x6C
@@ -11,15 +11,15 @@ __dt__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateI
__dt__49sFStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003B0; // type:function size:0xA4
fn_552_460 = .text:0x00000460; // type:function size:0x40
fn_552_4A0 = .text:0x000004A0; // type:function size:0x40
fn_552_4E0 = .text:0x000004E0; // type:function size:0x4
fn_552_4F0 = .text:0x000004F0; // type:function size:0x3AC
fn_552_8A0 = .text:0x000008A0; // type:function size:0x290
__ct__7mVec3_cFv = .text:0x000004E0; // type:function size:0x4
createHeap__10dAcOFlag_cFv = .text:0x000004F0; // type:function size:0x3AC
actorCreate__10dAcOFlag_cFv = .text:0x000008A0; // type:function size:0x290
changeState__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000B30; // type:function size:0x10
fn_552_B40 = .text:0x00000B40; // type:function size:0x1A4
fn_552_CF0 = .text:0x00000CF0; // type:function size:0x8
fn_552_D00 = .text:0x00000D00; // type:function size:0x178
actorPostCreate__10dAcOFlag_cFv = .text:0x00000B40; // type:function size:0x1A4
doDelete__10dAcOFlag_cFv = .text:0x00000CF0; // type:function size:0x8
actorExecute__10dAcOFlag_cFv = .text:0x00000D00; // type:function size:0x178
executeState__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000E80; // type:function size:0x10
fn_552_E90 = .text:0x00000E90; // type:function size:0x28
draw__10dAcOFlag_cFv = .text:0x00000E90; // type:function size:0x28
initializeState_Wait__10dAcOFlag_cFv = .text:0x00000EC0; // type:function size:0x4
executeState_Wait__10dAcOFlag_cFv = .text:0x00000ED0; // type:function size:0x2C
finalizeState_Wait__10dAcOFlag_cFv = .text:0x00000F00; // type:function size:0x4
@@ -34,13 +34,13 @@ fn_552_2EA0 = .text:0x00002EA0; // type:function size:0xB0
fn_552_2F50 = .text:0x00002F50; // type:function size:0x48
fn_552_2FA0 = .text:0x00002FA0; // type:function size:0x414
fn_552_33C0 = .text:0x000033C0; // type:function size:0x414
fn_552_37E0 = .text:0x000037E0; // type:function size:0x184
fn_552_3970 = .text:0x00003970; // type:function size:0x53C
fn_552_3EB0 = .text:0x00003EB0; // type:function size:0x4C
fn_552_3F00 = .text:0x00003F00; // type:function size:0x4C
fn_552_3F50 = .text:0x00003F50; // type:function size:0x44
fn_552_3FA0 = .text:0x00003FA0; // type:function size:0x24
fn_552_3FD0 = .text:0x00003FD0; // type:function size:0x24
setCollider__10dAcOFlag_cFv = .text:0x000037E0; // type:function size:0x184
createPlacement__10dAcOFlag_cFv = .text:0x00003970; // type:function size:0x53C
getArcName__10dAcOFlag_cFv = .text:0x00003EB0; // type:function size:0x4C
getMdlName__10dAcOFlag_cFv = .text:0x00003F00; // type:function size:0x4C
getAnmTexSrtName__10dAcOFlag_cFv = .text:0x00003F50; // type:function size:0x44
isSail__10dAcOFlag_cFv = .text:0x00003FA0; // type:function size:0x24
isPurpleFlag__10dAcOFlag_cFv = .text:0x00003FD0; // type:function size:0x24
fn_552_4000 = .text:0x00004000; // type:function size:0x90
__dt__10dAcOFlag_cFv = .text:0x00004090; // type:function size:0xF4
getStateID__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00004190; // type:function size:0x10
+1
View File
@@ -70,6 +70,7 @@ class dAcBase_c : public dBase_c {
public:
enum AcProperties_e {
AC_PROP_0x1 = (1 << 0),
AC_PROP_0x2 = (1 << 1),
AC_PROP_0x4 = (1 << 2),
AC_PROP_0x100 = (1 << 8),
AC_PROP_0x400 = (1 << 10),
+13 -3
View File
@@ -2,6 +2,7 @@
#define D_A_OBJ_FLAG_H
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/cc/d_cc_d.h"
#include "m/m3d/m_anmtexsrt.h"
@@ -10,8 +11,8 @@
#include "nw4r/g3d/g3d_scnobj.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "toBeSorted/stage_render_stuff.h"
class dAcODesertAgo_c;
class dAcOFlag_c : public dAcObjBase_c {
public:
class callback_c : public nw4r::g3d::IScnObjCallback {
@@ -31,6 +32,9 @@ public:
STATE_FUNC_DECLARE(dAcOFlag_c, Wait);
void setCollider();
void createPlacement();
bool isSail();
bool isPurpleFlag();
const char *getArcName();
@@ -47,9 +51,15 @@ private:
/* 0x530 */ s32 field_0x530;
/* 0x534 */ s32 mNumJoints;
/* 0x538 */ mVec3_c *mpJoints;
/* 0x53C */ u8 _0x538[0x548 - 0x53C];
/* 0x53C */ mVec3_c field_0x53C;
/* 0x548 */ s32 field_0x548;
/* 0x54C */ u8 _0x54C[0x56C - 0x54C];
/* 0x54C */ dAcRef_c<dAcODesertAgo_c> mDesertAgoRef;
/* 0x558 */ s32 field_0x558;
/* 0x55C */ s32 field_0x55C;
/* 0x560 */ u8 field_0x560;
/* 0x561 */ u8 field_0x561;
/* 0x564 */ s32 field_0x564;
/* 0x568 */ f32 field_0x568;
/* 0x56C */ mVec3_c *mpJoints1; // Size 15
/* 0x570 */ mVec3_c *mpJoints2; // Size 15
/* 0x574 */ mVec3_c *mpJoints3; // Size 15
+76
View File
@@ -2,9 +2,16 @@
#include "c/c_math.h"
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/a/obj/d_a_obj_desert_ago.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_sc_game.h"
#include "d/snd/d_snd_wzsound.h"
#include "f/f_base.h"
#include "f/f_manager.h"
#include "f/f_profile_name.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resanmtexsrt.h"
#include "nw4r/g3d/res/g3d_resfile.h"
@@ -138,6 +145,75 @@ int dAcOFlag_c::actorCreate() {
return SUCCEEDED;
}
int dAcOFlag_c::actorPostCreate() {
if (isSail()) {
if (dScGame_c::isCurrentStage("F301_6")) {
if ((s32)getFromParams(0, 0xF) == 4) {
dAcODesertAgo_c *pDesertAgo =
static_cast<dAcODesertAgo_c *>(fManager_c::searchBaseByProfName(fProfile::OBJ_DESERT_AGO));
if (!pDesertAgo) {
return FAILED;
}
mDesertAgoRef.link(pDesertAgo);
unsetActorProperty(AC_PROP_0x1 | AC_PROP_0x2);
field_0x530 = 8995;
field_0x564 = 249;
field_0x561 = 0;
} else {
f32 s = 1.f / mScale.x;
mBoundingBox.Set(
mVec3_c(s * -4000.f, s * -2000.f, s * -6000.f), mVec3_c(s * 4000.f, s * 1500.f, s * 4000.f)
);
}
setActorProperty(AC_PROP_0x4);
} else {
f32 s = 1.f / mScale.x;
mBoundingBox.Set(
mVec3_c(s * -3000.f, s * -4000.f, s * -3000.f), mVec3_c(s * 3000.f, s * 2000.f, s * 3000.f)
);
}
field_0x558 = 0;
field_0x55C = 91;
}
createPlacement();
return SUCCEEDED;
}
int dAcOFlag_c::doDelete() {
return SUCCEEDED;
}
int dAcOFlag_c::actorExecute() {
field_0x530++;
mStateMgr.executeState();
if (isSail()) {
setCollider();
}
if ((s32)getFromParams(0, 0xF) == 4) {
mVec3_c v = mVec3_c::Zero;
if (mDesertAgoRef.isLinked()) {
// TODO: Fix for field at 0x86C. Probably translation from matrix
mMtx_c m = mDesertAgoRef.get()->mWorldMtx;
m.getTranslation(v);
} else {
v = mPosition;
}
mWorldMtx.transS(v);
} else {
mWorldMtx.transS(mPosition);
}
mMdl.setLocalMtx(mWorldMtx);
holdSound(SE_Flag_FLUTTER_LV);
return SUCCEEDED;
}
int dAcOFlag_c::draw() {
drawModelType1(&mMdl);
return SUCCEEDED;
}
void dAcOFlag_c::initializeState_Wait() {}
void dAcOFlag_c::executeState_Wait() {}
void dAcOFlag_c::finalizeState_Wait() {}