d_a_shop_item, d_a_b_go, d_a_b_gos OK (#2085)

* d_a_shop_item OK

* d_a_b_go OK

* d_a_b_gos OK

* remove asm

* some work on d_a_b_oh / d_a_b_zant_sima

* d_a_startAndGoal done
This commit is contained in:
TakaRikka
2024-03-07 19:23:18 -08:00
committed by GitHub
parent 22e941fd8c
commit ba4847e9cc
116 changed files with 2764 additions and 5897 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+119 -117
View File
@@ -921,192 +921,193 @@ static void non(b_oh_class* i_this) {
}
/* 8061C2C4-8061CB4C 000C84 0888+00 2/1 0/0 0/0 .text action__FP10b_oh_class */
// close-ish
// matches with literals
#ifdef NONMATCHING
static void action(b_oh_class* i_this) {
BOOL bvar;
int uvar;
b_oh_class* a_this = (b_oh_class*)i_this;
int var_r28;
BOOL var_r27;
cXyz sp90;
cXyz sp9C;
cXyz local_90;
cXyz cstack_9c;
a_this->mAngleToPlayer = fopAcM_searchPlayerAngleY(a_this);
a_this->mDistToPlayer = fopAcM_searchPlayerDistance(a_this);
i_this->mAngleToPlayer = fopAcM_searchPlayerAngleY(i_this);
i_this->mDistToPlayer = fopAcM_searchPlayerDistance(i_this);
fopAcM_OffStatus(a_this, 0);
a_this->attention_info.flags = 0;
fopAcM_OffStatus(i_this, 0);
i_this->attention_info.flags = 0;
var_r28 = 0;
var_r27 = true;
uvar = 0;
bvar = true;
cLib_addCalcAngleS2(&a_this->field_0xc98, 0x800, 1, 0x10);
cLib_addCalcAngleS2(&i_this->field_0xc98, 0x800, 1, 0x10);
switch (i_this->mAction) {
switch (a_this->mAction) {
case ACTION_START:
start(i_this);
uvar = 1;
start(a_this);
var_r28 = 1;
break;
case ACTION_WAIT:
wait(i_this);
uvar = 1;
wait(a_this);
var_r28 = 1;
break;
case ACTION_ATTACK:
attack(i_this);
uvar = 2;
attack(a_this);
var_r28 = 2;
boss->field_0x4794 = 180;
break;
case ACTION_CAUGHT:
caught(i_this);
bvar = false;
uvar = 3;
caught(a_this);
var_r27 = false;
var_r28 = 3;
boss->field_0x4794 = 180;
break;
case ACTION_END:
end(i_this);
uvar = 1;
end(a_this);
var_r28 = 1;
break;
case ACTION_NON:
non(i_this);
non(a_this);
return;
}
if (boss->field_0x4752 == 2) {
cLib_addCalc2(&i_this->field_0x60c, 500.0f, 1.0f, 80.0f);
cLib_addCalc2(&a_this->field_0x60c, 500.0f, 1.0f, 80.0f);
}
if (uvar == 1) {
f32 fvar15 = i_this->field_0x608 * 500.0f;
f32 fvar14 = i_this->field_0x608 * 1500.0f;
s16 tmp = 2000;
if (var_r28 == 1) {
f32 var_f29 = a_this->field_0x608 * 500.0f;
f32 var_f28 = a_this->field_0x608 * 1500.0f;
s16 var_r5 = 2000;
for (int i = i_this->field_0xca8; i < 30; i++) {
f32 fvar = 1.0f;
f32 var_f31 = 1.0f;
if (i < 5) {
fvar = i * 0.2f;
var_f31 = i * 0.2f;
} else if (i >= 20) {
fvar = (i - 20) * 0.3f + 1.0f;
var_f31 = (i - 20) * 0.3f + 1.0f;
}
i_this->field_0x6d0[i].x = fvar * (fvar15 * cM_ssin(i_this->field_0x5f8 + (i * 1800)));
i_this->field_0x6d0[i].y = fvar * (fvar14 * cM_ssin(i_this->field_0x5fa + (i * 1800)));
a_this->field_0x6d0[i].x = var_f31 * (var_f29 * cM_ssin( i_this->field_0x5f8 + (i * 1800) ));
a_this->field_0x6d0[i].y = var_f31 * (var_f28 * cM_ssin( i_this->field_0x5fa + (i * 1800) ));
i_this->field_0x838[i].x =
tmp + fvar * (fvar15 * cM_ssin(i_this->field_0x5fa + (i * 7000)) * 0.5f);
i_this->field_0x838[i].y =
fvar * (fvar14 * cM_ssin(i_this->field_0x5f8 + (i * 7000)) * 0.5f);
a_this->field_0x838[i].x =
var_r5 + var_f31 * (var_f29 * cM_ssin(a_this->field_0x5fa + (i * 7000)) * 0.5f);
a_this->field_0x838[i].y =
var_f31 * (var_f28 * cM_ssin(a_this->field_0x5f8 + (i * 7000)) * 0.5f);
tmp -= 200;
if (tmp < 0) {
tmp = 0;
var_r5 -= 200;
if (var_r5 < 0) {
var_r5 = 0;
}
i_this->field_0x964[i] =
i_this->field_0x610 + 1.0f +
i_this->field_0x610 * cM_ssin(i_this->field_0x5f6 + i * -10000);
a_this->field_0x964[i] =
a_this->field_0x610 + 1.0f +
a_this->field_0x610 * cM_ssin(a_this->field_0x5f6 + i * -10000);
}
cLib_addCalcAngleS2(&i_this->current.angle.x, -0xF2C, 4, 100);
cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->home.angle.y, 4, 0x100);
} else if (uvar == 2) {
f32 fvar = i_this->field_0xc8c;
for (int i = i_this->field_0xca8; i < 30; i++) {
if (i >= 30 - i_this->field_0xca2) {
i_this->field_0x6d0[i].y = i_this->field_0xca4;
cLib_addCalcAngleS2(&a_this->current.angle.x, -0xF2C, 4, 100);
cLib_addCalcAngleS2(&a_this->current.angle.y, a_this->home.angle.y, 4, 0x100);
} else if (var_r28 == 2) {
f32 var_f4 = a_this->field_0xc8c;
for (int i = a_this->field_0xca8; i < 30; i++) {
if (i >= 30 - a_this->field_0xca2) {
a_this->field_0x6d0[i].y = a_this->field_0xca4;
} else {
i_this->field_0x6d0[i].y = 0;
a_this->field_0x6d0[i].y = 0;
}
if (i >= 13) {
fvar *= i_this->field_0xc90 + 1.0f;
var_f4 *= a_this->field_0xc90 + 1.0f;
}
i_this->field_0x6d0[i].x =
fvar * cM_ssin(i_this->field_0xc94 + i * i_this->field_0xc96);
a_this->field_0x6d0[i].x =
var_f4 * cM_ssin(a_this->field_0xc94 + i * a_this->field_0xc96);
if (i >= 18) {
i_this->field_0x838[i].x =
i_this->field_0xc9c * cM_ssin(i_this->field_0x5cc * 1000 + i * -4000);
a_this->field_0x838[i].x =
a_this->field_0xc9c * cM_ssin(a_this->field_0x5cc * 1000 + i * -4000);
} else {
i_this->field_0x838[i].x = 0;
a_this->field_0x838[i].x = 0;
}
i_this->field_0x838[i].y = 0;
i_this->field_0x964[i] =
i_this->field_0x610 + 1.0f +
i_this->field_0x610 * cM_ssin(i_this->field_0x5f6 + i * -10000);
a_this->field_0x838[i].y = 0;
a_this->field_0x964[i] =
a_this->field_0x610 + 1.0f +
a_this->field_0x610 * cM_ssin(a_this->field_0x5f6 + i * -10000);
}
} else if (uvar == 3) {
for (int i = i_this->field_0xca8; i < 30; i++) {
i_this->field_0x838[i].y = 0;
i_this->field_0x838[i].x = 0;
} else if (var_r28 == 3) {
for (int i = a_this->field_0xca8; i < 30; i++) {
a_this->field_0x838[i].y = 0;
a_this->field_0x838[i].x = 0;
if (i >= 30 - i_this->field_0xca2) {
i_this->field_0x6d0[i].y = i_this->field_0xca4;
i_this->field_0x6d0[i].x = 0;
i_this->field_0x964[i] = 1.0f;
if (i >= 30 - a_this->field_0xca2) {
a_this->field_0x6d0[i].y = a_this->field_0xca4;
a_this->field_0x6d0[i].x = 0;
a_this->field_0x964[i] = 1.0f;
} else {
i_this->field_0x6d0[i].y = 0;
i_this->field_0x6d0[i].x = 2250;
i_this->field_0x964[i] =
i_this->field_0x610 + 1.0f +
i_this->field_0x610 * cM_ssin(i_this->field_0x5f6 + i * -10000);
a_this->field_0x6d0[i].y = 0;
a_this->field_0x6d0[i].x = 2250;
a_this->field_0x964[i] =
a_this->field_0x610 + 1.0f +
a_this->field_0x610 * cM_ssin(a_this->field_0x5f6 + i * -10000);
}
}
cLib_addCalcAngleS2(&i_this->current.angle.x, 0xA92, 4, 0x200);
cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->home.angle.y, 4, 0x800);
cLib_addCalcAngleS2(&a_this->current.angle.x, 0xA92, 4, 0x200);
cLib_addCalcAngleS2(&a_this->current.angle.y, a_this->home.angle.y, 4, 0x800);
}
i_this->field_0x600 =
(-i_this->field_0x614 - i_this->field_0x60c) + cM_ssin(i_this->field_0x5cc * 200) * 100.0f;
i_this->field_0x604 = ((100.0f - i_this->field_0x614) - i_this->field_0x60c) +
cM_ssin(i_this->field_0x5cc * 200) * 100.0f;
i_this->field_0x5f8 += (s16)i_this->field_0x600;
i_this->field_0x5fa += (s16)i_this->field_0x604;
i_this->field_0x5fc = i_this->field_0x60c + 2000.0f;
i_this->field_0x5f6 += (s16)i_this->field_0x5fc;
a_this->field_0x600 =
(-a_this->field_0x614 - a_this->field_0x60c) + cM_ssin(a_this->field_0x5cc * 200) * 100.0f;
a_this->field_0x604 = ((100.0f - a_this->field_0x614) - a_this->field_0x60c) +
cM_ssin(a_this->field_0x5cc * 200) * 100.0f;
a_this->field_0x5f8 += (s16)a_this->field_0x600;
a_this->field_0x5fa += (s16)a_this->field_0x604;
a_this->field_0x5fc = a_this->field_0x60c + 2000.0f;
a_this->field_0x5f6 += (s16)a_this->field_0x5fc;
cLib_addCalc0(&i_this->field_0x60c, 0.1f, 50.0f);
cLib_addCalc2(&i_this->field_0x610, 0.2f, 0.1f, 0.01f);
if (uvar <= 3) {
cLib_addCalc2(&i_this->mTentacleLength, l_HIO.mLength, 0.1f, 0.5f);
cLib_addCalc0(&a_this->field_0x60c, 0.1f, 50.0f);
cLib_addCalc2(&a_this->field_0x610, 0.2f, 0.1f, 0.01f);
if (var_r28 <= 3) {
cLib_addCalc2(&a_this->mTentacleLength, l_HIO.mLength, 0.1f, 0.5f);
}
MTXCopy(i_this->mpMorf->getModel()->i_getAnmMtx(i_this->field_0x5c8 + 8),
MTXCopy(boss->mParts[0].field_0x0->getModel()->i_getAnmMtx(a_this->field_0x5c8 + 8),
mDoMtx_stack_c::get());
mDoMtx_stack_c::multVecZero(&i_this->current.pos);
mDoMtx_stack_c::multVecZero(&a_this->current.pos);
local_90.x = i_this->current.pos.x - boss->home.pos.x;
local_90.z = i_this->current.pos.z - boss->home.pos.z;
i_this->home.angle.y = cM_atan2s(local_90.x, local_90.z);
cLib_addCalcAngleS2(&i_this->shape_angle.y, i_this->current.angle.y, 2, 0x2000);
cLib_addCalcAngleS2(&i_this->shape_angle.x, i_this->current.angle.x, 2, 0x2000);
sp90.x = a_this->current.pos.x - boss->home.pos.x;
sp90.z = a_this->current.pos.z - boss->home.pos.z;
a_this->home.angle.y = cM_atan2s(sp90.x, sp90.z);
cLib_addCalcAngleS2(&a_this->shape_angle.y, a_this->current.angle.y, 2, 0x2000);
cLib_addCalcAngleS2(&a_this->shape_angle.x, a_this->current.angle.x, 2, 0x2000);
for (int i = i_this->field_0xca8; i < 30; i++) {
for (int i = a_this->field_0xca8; i < 30; i++) {
if (Cinit) {
i_this->field_0x61c[i] = i_this->field_0x6d0[i];
i_this->field_0x784[i] = i_this->field_0x838[i];
i_this->field_0x8ec[i] = i_this->field_0x964[i];
a_this->field_0x61c[i] = a_this->field_0x6d0[i];
a_this->field_0x784[i] = a_this->field_0x838[i];
a_this->field_0x8ec[i] = a_this->field_0x964[i];
} else {
cLib_addCalcAngleS2(&i_this->field_0x61c[i].x, i_this->field_0x6d0[i].x, 2,
i_this->field_0xc98);
cLib_addCalcAngleS2(&i_this->field_0x61c[i].y, i_this->field_0x6d0[i].y, 2,
i_this->field_0xc98);
cLib_addCalcAngleS2(&i_this->field_0x784[i].x, i_this->field_0x838[i].x, 2,
i_this->field_0xc98);
cLib_addCalcAngleS2(&i_this->field_0x784[i].y, i_this->field_0x838[i].y, 2,
i_this->field_0xc98);
cLib_addCalc2(&i_this->field_0x8ec[i], i_this->field_0x964[i], 0.5f, 0.2f);
cLib_addCalc0(&i_this->field_0x9dc[i], 0.1f, 0.2f);
cLib_addCalcAngleS2(&a_this->field_0x61c[i].x, a_this->field_0x6d0[i].x, 2,
a_this->field_0xc98);
cLib_addCalcAngleS2(&a_this->field_0x61c[i].y, a_this->field_0x6d0[i].y, 2,
a_this->field_0xc98);
cLib_addCalcAngleS2(&a_this->field_0x784[i].x, a_this->field_0x838[i].x, 2,
a_this->field_0xc98);
cLib_addCalcAngleS2(&a_this->field_0x784[i].y, a_this->field_0x838[i].y, 2,
a_this->field_0xc98);
cLib_addCalc2(&a_this->field_0x8ec[i], a_this->field_0x964[i], 0.5f, 0.2f);
cLib_addCalc0(&a_this->field_0x9dc[i], 0.1f, 0.2f);
}
}
for (int i = 0; i < 15; i++) {
if (bvar && boss->mDemoAction == 0) {
i_this->mColliders[i].OnCoSetBit();
if (var_r27 && boss->mDemoAction == 0) {
a_this->mColliders[i].OnCoSetBit();
} else {
i_this->mColliders[i].OffCoSetBit();
a_this->mColliders[i].OffCoSetBit();
}
}
@@ -1592,7 +1593,8 @@ extern "C" void __ct__5csXyzFv() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daB_OH_HIO_c::~daB_OH_HIO_c() {
// asm daB_OH_HIO_c::~daB_OH_HIO_c() {
extern "C" asm void __dt__12daB_OH_HIO_cFv() {
nofralloc
#include "asm/rel/d/a/b/d_a_b_oh/d_a_b_oh/__dt__12daB_OH_HIO_cFv.s"
}
File diff suppressed because it is too large Load Diff
+147 -130
View File
@@ -1,33 +1,21 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_b_zant_sima
//
/**
* d_a_b_zant_sima.cpp
* Boss Zant Lava Island
*/
#include "rel/d/a/b/d_a_b_zant_sima/d_a_b_zant_sima.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "SSystem/SComponent/c_math.h"
#include "d/a/d_a_player.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_procname.h"
//
// Forward References:
//
static int daB_ZANTS_Draw(daB_ZANTS_c*);
static int daB_ZANTS_Execute(daB_ZANTS_c*);
static int daB_ZANTS_IsDelete(daB_ZANTS_c*);
static int daB_ZANTS_Delete(daB_ZANTS_c*);
static int daB_ZANTS_Create(daB_ZANTS_c*);
//
// Declarations:
//
#define TIMER_PLAYER 0
#define TIMER_ZANT 1
/* 806529D8-80652AAC 000078 00D4+00 1/1 0/0 0/0 .text draw__11daB_ZANTS_cFv */
int daB_ZANTS_c::draw() {
g_env_light.settingTevStruct(16, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
dComIfGd_setListBG();
mpBtkAnm->entry(mpModel->getModelData());
mpBrkAnm->entry(mpModel->getModelData());
@@ -43,13 +31,13 @@ static int daB_ZANTS_Draw(daB_ZANTS_c* i_this) {
/* 80652ACC-80652B28 00016C 005C+00 1/1 0/0 0/0 .text
* zants_ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
static void zants_ride_call_back(dBgW* param_0, fopAc_ac_c* i_this, fopAc_ac_c* i_target) {
static void zants_ride_call_back(dBgW* i_bgw, fopAc_ac_c* i_this, fopAc_ac_c* i_target) {
if (fopAcM_GetName(i_target) == PROC_ALINK) {
((daB_ZANTS_c*)i_this)->mPlayerID = fopAcM_GetID(i_target);
((daB_ZANTS_c*)i_this)->field_0x584[0] = 3;
((daB_ZANTS_c*)i_this)->mSinkTimers[TIMER_PLAYER] = 3;
} else if (fopAcM_GetName(i_target) == PROC_B_ZANT) {
((daB_ZANTS_c*)i_this)->mBossID = fopAcM_GetID(i_target);
((daB_ZANTS_c*)i_this)->field_0x584[1] = 3;
((daB_ZANTS_c*)i_this)->mSinkTimers[TIMER_ZANT] = 3;
}
}
@@ -57,50 +45,61 @@ static void zants_ride_call_back(dBgW* param_0, fopAc_ac_c* i_this, fopAc_ac_c*
void daB_ZANTS_c::action() {
daPy_py_c* player = daPy_getPlayerActorClass();
if (player->i_checkMagneBootsOn()) {
field_0x584[0] = 3;
mSinkTimers[TIMER_PLAYER] = 3;
mPlayerID = fopAcM_GetID(player);
}
cXyz pos = current.pos;
fopAc_ac_c* target;
if (field_0x584[1] != 0) {
if (fopAcM_SearchByID(mBossID, &target), target != NULL) {
pos = target->current.pos;
cXyz target_pos = current.pos;
if (mSinkTimers[TIMER_ZANT] != 0) {
fopAc_ac_c* target;
fopAcM_SearchByID(mBossID, &target);
if (target != NULL) {
target_pos = target->current.pos;
}
}
u8 temp = field_0x584[3];
field_0x584[3] = 0;
field_0x584[2] = 0;
if (field_0x584[1]) {
field_0x584[3] = 1;
bool prev_sink_zant = mSinkZant;
mSinkZant = false;
mSinkPlayer = false;
if (mSinkTimers[TIMER_ZANT] != 0) {
mSinkZant = true;
}
if (field_0x584[0]) {
field_0x584[2] = 1;
if (mSinkTimers[TIMER_PLAYER] != 0) {
mSinkPlayer = true;
}
f32 x = pos.x - current.pos.x;
f32 z = pos.z - current.pos.z;
pos.absXZ(current.pos);
cLib_addCalcAngleS2(&field_0x58c.y, cM_atan2s(x, z), 8, 1024);
if (temp == 0 && field_0x584[3] != 0) {
if (field_0x58c.x == 0) {
field_0x58c.y = cM_atan2s(x, z);
f32 x = target_pos.x - current.pos.x;
f32 z = target_pos.z - current.pos.z;
target_pos.absXZ(current.pos);
cLib_addCalcAngleS2(&mRotation.y, cM_atan2s(x, z), 8, 0x400);
if (!prev_sink_zant && mSinkZant) {
if (mRotation.x == 0) {
mRotation.y = cM_atan2s(x, z);
}
field_0x58c.z = 0x400;
mRotation.z = 0x400;
}
cLib_addCalcAngleS2(&field_0x58c.x, 0, 8, 64);
field_0x58c.x += field_0x58c.z;
if (0x1400 < field_0x58c.x) {
field_0x58c.x = 0x1400;
field_0x58c.z = 0;
cLib_addCalcAngleS2(&mRotation.x, 0, 8, 0x40);
mRotation.x += mRotation.z;
if (0x1400 < mRotation.x) {
mRotation.x = 0x1400;
mRotation.z = 0;
}
cLib_chaseAngleS(&field_0x58c.z, 0, 128);
f32 temp2 = 150.0f;
if (field_0x584[0] || field_0x584[1]) {
temp2 = 130.0f;
cLib_chaseAngleS(&mRotation.z, 0, 0x80);
f32 target_height = 150.0f;
if (mSinkTimers[TIMER_PLAYER] != 0 || mSinkTimers[TIMER_ZANT] != 0) {
target_height = 130.0f;
}
cLib_addCalc2(&field_0x588, temp2, 0.2f, 20.0f);
cLib_addCalc2(&mHeight, target_height, 0.2f, 20.0f);
for (int i = 0; i < 2; i++) {
if (field_0x584[i] != 0) {
field_0x584[i] -= 1;
if (mSinkTimers[i] != 0) {
mSinkTimers[i]--;
}
}
}
@@ -109,17 +108,20 @@ void daB_ZANTS_c::action() {
int daB_ZANTS_c::execute() {
mpBrkAnm->play();
mpBtkAnm->play();
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0x588, current.pos.z);
mDoMtx_stack_c::YrotM(field_0x58c.y);
mDoMtx_stack_c::XrotM(field_0x58c.x);
mDoMtx_stack_c::YrotM(-field_0x58c.y);
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + mHeight, current.pos.z);
mDoMtx_stack_c::YrotM(mRotation.y);
mDoMtx_stack_c::XrotM(mRotation.x);
mDoMtx_stack_c::YrotM(-mRotation.y);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::transM(0.0f, -30.0f, 0.0f);
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), field_0x594);
if (mpBgW) {
cMtx_copy(mDoMtx_stack_c::get(), mMtx);
if (mpBgW != NULL) {
mpBgW->Move();
}
action();
return 1;
}
@@ -137,7 +139,7 @@ static int daB_ZANTS_IsDelete(daB_ZANTS_c* i_this) {
/* 80652EC0-80652F18 000560 0058+00 1/1 0/0 0/0 .text _delete__11daB_ZANTS_cFv */
int daB_ZANTS_c::_delete() {
dComIfG_resDelete(&mPhase, "MAGNESIMA");
if (mpBgW) {
if (mpBgW != NULL) {
dComIfG_Bgsp().Release(mpBgW);
}
return 1;
@@ -148,6 +150,88 @@ static int daB_ZANTS_Delete(daB_ZANTS_c* i_this) {
return i_this->_delete();
}
/* 80652F38-80653180 0005D8 0248+00 1/1 0/0 0/0 .text CreateHeap__11daB_ZANTS_cFv */
int daB_ZANTS_c::CreateHeap() {
J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes("MAGNESIMA", 7);
mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084);
if (mpModel == NULL) {
return FALSE;
}
mpBtkAnm = new mDoExt_btkAnm();
if (mpBtkAnm == NULL) {
return FALSE;
}
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("MAGNESIMA", 13);
if (!mpBtkAnm->init(mpModel->getModelData(), pbtk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0,
-1))
{
return FALSE;
}
mpBrkAnm = new mDoExt_brkAnm();
if (mpBrkAnm == NULL) {
return FALSE;
}
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("MAGNESIMA", 10);
if (!mpBrkAnm->init(mpModel->getModelData(), pbrk, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0,
-1))
{
return FALSE;
}
mpBgW = new dBgW();
if (mpBgW == NULL) {
return FALSE;
}
cBgD_t* pdzb = (cBgD_t*)dComIfG_getObjectRes("MAGNESIMA", 16);
if (mpBgW->Set(pdzb, cBgW::MOVE_BG_e, &mMtx)) {
return FALSE;
}
mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
mpBgW->SetRideCallback(zants_ride_call_back);
return TRUE;
}
/* 806531C8-806531E8 000868 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
static int useHeapInit(fopAc_ac_c* i_this) {
return static_cast<daB_ZANTS_c*>(i_this)->CreateHeap();
}
/* 806531E8-80653304 000888 011C+00 1/1 0/0 0/0 .text create__11daB_ZANTS_cFv */
int daB_ZANTS_c::create() {
fopAcM_SetupActor(this, daB_ZANTS_c);
int phase_state = dComIfG_resLoad(&mPhase, "MAGNESIMA");
if (phase_state == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x3AA0)) {
return cPhs_ERROR_e;
}
if (mpBgW && dComIfG_Bgsp().Regist(mpBgW, this)) {
return cPhs_ERROR_e;
}
attention_info.flags = 0;
mHeight = 150.0f;
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -500.0f, -500.0f);
fopAcM_SetMax(this, 200.0f, 500.0f, 500.0f);
daB_ZANTS_Execute(this);
}
return phase_state;
}
/* 80653304-80653324 0009A4 0020+00 1/0 0/0 0/0 .text daB_ZANTS_Create__FP11daB_ZANTS_c */
static int daB_ZANTS_Create(daB_ZANTS_c* i_this) {
return i_this->create();
}
/* 80653370-80653390 -00001 0020+00 1/0 0/0 0/0 .data l_daB_ZANTS_Method */
static actor_method_class l_daB_ZANTS_Method = {
(process_method_func)daB_ZANTS_Create, (process_method_func)daB_ZANTS_Delete,
@@ -171,71 +255,4 @@ extern actor_process_profile_definition g_profile_B_ZANTS = {
0x40000,
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};
/* 80652F38-80653180 0005D8 0248+00 1/1 0/0 0/0 .text CreateHeap__11daB_ZANTS_cFv */
int daB_ZANTS_c::CreateHeap() {
J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes("MAGNESIMA", 7);
mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
mpBtkAnm = new mDoExt_btkAnm();
if (mpBtkAnm == NULL) {
return 0;
}
J3DAnmTextureSRTKey* srtkey = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("MAGNESIMA", 13);
if (!mpBtkAnm->init(mpModel->getModelData(), srtkey, 1, 2, 1.0f, 0, -1)) {
return 0;
}
mpBrkAnm = new mDoExt_brkAnm();
if (mpBrkAnm == NULL) {
return 0;
}
J3DAnmTevRegKey* tevkey = (J3DAnmTevRegKey*)dComIfG_getObjectRes("MAGNESIMA", 10);
if (!mpBrkAnm->init(mpModel->getModelData(), tevkey, 1, 2, 1.0f, 0, -1)) {
return 0;
}
mpBgW = new dBgW();
if (mpBgW == NULL) {
return 0;
}
cBgD_t* bgt = (cBgD_t*)dComIfG_getObjectRes("MAGNESIMA", 16);
if (mpBgW->Set(bgt, 1, &field_0x594)) {
return 0;
}
mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
mpBgW->SetRideCallback(zants_ride_call_back);
return 1;
}
/* 806531C8-806531E8 000868 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
static int useHeapInit(fopAc_ac_c* i_this) {
return static_cast<daB_ZANTS_c*>(i_this)->CreateHeap();
}
/* 806531E8-80653304 000888 011C+00 1/1 0/0 0/0 .text create__11daB_ZANTS_cFv */
int daB_ZANTS_c::create() {
fopAcM_SetupActor(this, daB_ZANTS_c);
int result = dComIfG_resLoad(&mPhase, "MAGNESIMA");
if (result == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x3AA0)) {
return cPhs_ERROR_e;
}
if (mpBgW && dComIfG_Bgsp().Regist(mpBgW, this)) {
return cPhs_ERROR_e;
}
attention_info.flags = 0;
field_0x588 = 150.0f;
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -500.0f, -500.0f);
fopAcM_SetMax(this, 200.0f, 500.0f, 500.0f);
daB_ZANTS_Execute(this);
}
return result;
}
/* 80653304-80653324 0009A4 0020+00 1/0 0/0 0/0 .text daB_ZANTS_Create__FP11daB_ZANTS_c */
static int daB_ZANTS_Create(daB_ZANTS_c* i_this) {
return i_this->create();
}
};
-11
View File
@@ -10,17 +10,6 @@
// Types:
//
struct fopAcM_lc_c {
/* 8001DC68 */ void lineCheck(cXyz const*, cXyz const*, fopAc_ac_c const*);
};
struct fopAcM_gc_c {
/* 8001DCBC */ void gndCheck(cXyz const*);
static u8 mGndCheck[84];
static f32 mGroundY;
};
struct J3DMaterial {};
struct daMidna_matAnm_c {
+287 -605
View File
@@ -1,629 +1,311 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_shop_item
//
/**
* d_a_shop_item.cpp
* Shop Item Actor
*/
#include "rel/d/a/d_a_shop_item/d_a_shop_item.h"
#include "dol2asm.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct mDoMtx_stack_c {
static u8 now[48];
};
struct mDoLib_clipper {
static f32 mSystemFar;
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
};
struct daShopItem_c {
/* 8059E9B8 */ void getShopArcname();
/* 8059EC04 */ void getHeapSize();
/* 8059EC1C */ void CreateInit();
/* 8059ED58 */ void set_mtx();
/* 8059EEF4 */ void _execute();
/* 8059EF48 */ void _draw();
/* 8059EF9C */ void setListStart();
/* 8059EFA0 */ void setShadow();
/* 8059F024 */ void chkFlag(int);
/* 8059F044 */ void getTevFrm();
/* 8059F064 */ void getBtpFrm();
/* 8059F084 */ void getShadowSize();
/* 8059F0A0 */ void getCollisionH();
/* 8059F0BC */ void getCollisionR();
static void* const mData[276];
static f32 const m_cullfar_max;
};
struct daItemBase_c {
/* 80037A74 */ void show();
/* 80037ACC */ void chkDraw();
/* 80144724 */ void DeleteBase(char const*);
/* 8014474C */ bool clothCreate();
/* 80144754 */ bool __CreateHeap();
/* 80144B94 */ void DrawBase();
/* 80144C30 */ void RotateYBase();
/* 80144CC4 */ void settingBeforeDraw();
/* 80144D18 */ void setTevStr();
/* 80144D70 */ void setShadow();
/* 80144EDC */ void animEntry();
/* 8014503C */ void animPlay(f32, f32, f32, f32, f32, f32);
};
struct dKy_tevstr_c {};
struct dDlst_shadowControl_c {
static u8 mSimpleTexObj[32];
};
struct dCcD_GStts {
/* 80083760 */ dCcD_GStts();
};
struct dCcD_GObjInf {
/* 80083A28 */ dCcD_GObjInf();
};
struct dBgS_PolyPassChk {
/* 80078E68 */ void SetObj();
};
struct dBgS_ObjAcch {
/* 8059F324 */ ~dBgS_ObjAcch();
};
struct dBgS_AcchCir {
/* 80075EAC */ dBgS_AcchCir();
};
struct dBgS_Acch {
/* 80075F94 */ ~dBgS_Acch();
/* 800760A0 */ dBgS_Acch();
};
struct cXyz {};
struct cM3dGCyl {
/* 8059F294 */ ~cM3dGCyl();
};
struct cM3dGAab {
/* 8059F2DC */ ~cM3dGAab();
};
struct cBgS_PolyInfo {};
struct _GXTexObj {};
struct J3DModel {};
//
// Forward References:
//
extern "C" void getShopArcname__12daShopItem_cFv();
extern "C" void getHeapSize__12daShopItem_cFv();
extern "C" void CreateInit__12daShopItem_cFv();
extern "C" void set_mtx__12daShopItem_cFv();
extern "C" void _execute__12daShopItem_cFv();
extern "C" void _draw__12daShopItem_cFv();
extern "C" void setListStart__12daShopItem_cFv();
extern "C" void setShadow__12daShopItem_cFv();
extern "C" void chkFlag__12daShopItem_cFi();
extern "C" void getTevFrm__12daShopItem_cFv();
extern "C" void getBtpFrm__12daShopItem_cFv();
extern "C" void getShadowSize__12daShopItem_cFv();
extern "C" void getCollisionH__12daShopItem_cFv();
extern "C" void getCollisionR__12daShopItem_cFv();
extern "C" static void daShopItem_Create__FPv();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void __dt__12dBgS_ObjAcchFv();
extern "C" static void daShopItem_Delete__FPv();
extern "C" static void daShopItem_Draw__FPv();
extern "C" static void daShopItem_Execute__FPv();
extern "C" static bool daShopItem_IsDelete__FPv();
extern "C" static void func_8059F420();
extern "C" static void func_8059F428();
extern "C" f32 const m_cullfar_max__12daShopItem_c;
extern "C" extern char const* const d_a_shop_item__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
extern "C" void mDoMtx_XrotM__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void
dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
extern "C" void show__12daItemBase_cFv();
extern "C" void chkDraw__12daItemBase_cFv();
extern "C" void CheckShopItemCreateHeap__FP10fopAc_ac_c();
extern "C" void __ct__12dBgS_AcchCirFv();
extern "C" void __dt__9dBgS_AcchFv();
extern "C" void __ct__9dBgS_AcchFv();
extern "C" void SetObj__16dBgS_PolyPassChkFv();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void __ct__12dCcD_GObjInfFv();
extern "C" void DeleteBase__12daItemBase_cFPCc();
extern "C" bool clothCreate__12daItemBase_cFv();
extern "C" bool __CreateHeap__12daItemBase_cFv();
extern "C" void DrawBase__12daItemBase_cFv();
extern "C" void RotateYBase__12daItemBase_cFv();
extern "C" void settingBeforeDraw__12daItemBase_cFv();
extern "C" void setTevStr__12daItemBase_cFv();
extern "C" void setShadow__12daItemBase_cFv();
extern "C" void animEntry__12daItemBase_cFv();
extern "C" void animPlay__12daItemBase_cFffffff();
extern "C" void __dl__FPv();
extern "C" void PSMTXCopy();
extern "C" void PSMTXTrans();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" void strcmp();
extern "C" void* const mData__12daShopItem_c[276];
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__12daItemBase_c[17 + 1 /* padding */];
extern "C" extern void* __vt__12cCcD_CylAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
extern "C" f32 mSystemFar__14mDoLib_clipper;
//
// Declarations:
//
/* ############################################################################################## */
/* 8059F48C-8059F48C 000054 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8059F48C = "R_SP160";
#pragma pop
#include "d/com/d_com_inf_game.h"
#include "m_Do/m_Do_lib.h"
/* 8059E9B8-8059EC04 000078 024C+00 2/2 0/0 0/0 .text getShopArcname__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::getShopArcname() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/getShopArcname__12daShopItem_cFv.s"
const char* daShopItem_c::getShopArcname() {
switch (m_itemNo) {
case NO_ITEM:
if (strcmp("R_SP160", dComIfGp_getStartStageName()) == 0) {
mShopItemID = SHOP_ITEMNO_ARMOR_SOLD;
} else {
mShopItemID = SHOP_ITEMNO_SOLD;
}
break;
case OIL_BOTTLE:
mShopItemID = SHOP_ITEMNO_OIL;
break;
case MILK_BOTTLE:
mShopItemID = SHOP_ITEMNO_MILK;
break;
case HALF_MILK_BOTTLE:
mShopItemID = SHOP_ITEMNO_HALF_MILK;
break;
case RED_BOTTLE:
mShopItemID = SHOP_ITEMNO_RED;
break;
case GREEN_BOTTLE:
mShopItemID = SHOP_ITEMNO_GREEN;
break;
case BLUE_BOTTLE:
mShopItemID = SHOP_ITEMNO_BLUE;
break;
case DROP_BOTTLE:
mShopItemID = SHOP_ITEMNO_DROP;
break;
case ARROW_10:
case ARROW_20:
case ARROW_30:
mShopItemID = SHOP_ITEMNO_ARROW;
break;
case SHIELD:
mShopItemID = SHOP_ITEMNO_SHIELD_B;
break;
case HYLIA_SHIELD:
mShopItemID = SHOP_ITEMNO_SHIELD_A;
break;
case NORMAL_BOMB:
case BOMB_5:
case BOMB_10:
case BOMB_20:
case BOMB_30:
mShopItemID = SHOP_ITEMNO_BOMB;
break;
case WATER_BOMB:
mShopItemID = SHOP_ITEMNO_WATER_BOMB;
break;
case POKE_BOMB:
mShopItemID = SHOP_ITEMNO_POKE_BOMB;
break;
case BOMB_BAG_LV1:
case BOMB_IN_BAG:
mShopItemID = SHOP_ITEMNO_BOMB_BAG;
break;
case BOMB_BAG_LV2:
mShopItemID = SHOP_ITEMNO_BOMB_BAG_LV2;
break;
case BEE_CHILD:
mShopItemID = SHOP_ITEMNO_BEE_CHILD;
break;
case PACHINKO:
mShopItemID = SHOP_ITEMNO_PACHINKO;
break;
case HAWK_EYE:
mShopItemID = SHOP_ITEMNO_HAWKEYE;
break;
case ARMOR:
mShopItemID = SHOP_ITEMNO_ARMOR;
break;
default:
return NULL;
}
return mData[mShopItemID].get_arcName();
}
#pragma pop
/* ############################################################################################## */
/* 8059F438-8059F43C 000000 0004+00 2/2 0/0 0/0 .rodata m_cullfar_max__12daShopItem_c */
SECTION_RODATA f32 const daShopItem_c::m_cullfar_max = 5000.0f;
COMPILER_STRIP_GATE(0x8059F438, &daShopItem_c::m_cullfar_max);
/* 8059F43C-8059F46C 000004 002E+02 1/1 0/0 0/0 .rodata HeapSizeTbl$3665 */
SECTION_RODATA static u8 const HeapSizeTbl[46 + 2 /* padding */] = {
0x08,
0x10,
0x08,
0x10,
0x08,
0x10,
0x08,
0x10,
0x08,
0x10,
0x08,
0x10,
0x08,
0x10,
0x08,
0x10,
0x0E,
0xB0,
0x08,
0x10,
0x0E,
0xB0,
0x39,
0x90,
0x39,
0x90,
0x80,
0x00,
0x08,
0x10,
0x15,
0x40,
0x08,
0x10,
0x08,
0x10,
0x08,
0x10,
0x43,
0xA0,
0x22,
0x80,
0x08,
0x10,
0x08,
0x10,
/* padding */
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x8059F43C, &HeapSizeTbl);
const f32 daShopItem_c::m_cullfar_max = 5000.0f;
/* 8059EC04-8059EC1C 0002C4 0018+00 1/1 0/0 0/0 .text getHeapSize__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::getHeapSize() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/getHeapSize__12daShopItem_cFv.s"
u16 daShopItem_c::getHeapSize() {
static const u16 HeapSizeTbl[] = {
0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810,
0x0EB0, 0x0810, 0x0EB0, 0x3990, 0x3990, 0x8000, 0x0810, 0x1540,
0x0810, 0x0810, 0x0810, 0x43A0, 0x2280, 0x0810, 0x0810,
};
u8 a_ShopItemID = getShopItemID();
OS_REPORT("ShopItemID [%u]\n", a_ShopItemID);
ASSERT(a_ShopItemID < SHOP_ITEMNO_MAX);
return HeapSizeTbl[a_ShopItemID];
}
#pragma pop
/* ############################################################################################## */
/* 8059F46C-8059F470 000034 0004+00 0/1 0/0 0/0 .rodata @3718 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3718 = -100.0f;
COMPILER_STRIP_GATE(0x8059F46C, &lit_3718);
#pragma pop
/* 8059F470-8059F474 000038 0004+00 0/2 0/0 0/0 .rodata @3719 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3719[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x8059F470, &lit_3719);
#pragma pop
/* 8059F474-8059F478 00003C 0004+00 0/1 0/0 0/0 .rodata @3720 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3720 = 100.0f;
COMPILER_STRIP_GATE(0x8059F474, &lit_3720);
#pragma pop
/* 8059F478-8059F47C 000040 0004+00 0/1 0/0 0/0 .rodata @3721 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3721 = 200.0f;
COMPILER_STRIP_GATE(0x8059F478, &lit_3721);
#pragma pop
/* 8059F47C-8059F480 000044 0004+00 1/3 0/0 0/0 .rodata @3722 */
SECTION_RODATA static f32 const lit_3722 = 1.0f;
COMPILER_STRIP_GATE(0x8059F47C, &lit_3722);
/* 8059F480-8059F484 000048 0004+00 0/1 0/0 0/0 .rodata @3723 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3723 = 5000.0f;
COMPILER_STRIP_GATE(0x8059F480, &lit_3723);
#pragma pop
/* 8059F484-8059F488 00004C 0004+00 0/1 0/0 0/0 .rodata @3724 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3724 = 4.0f / 5.0f;
COMPILER_STRIP_GATE(0x8059F484, &lit_3724);
#pragma pop
/* 8059F48C-8059F48C 000054 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8059F494 = "R_SP109";
#pragma pop
/* 8059EC1C-8059ED58 0002DC 013C+00 1/1 0/0 0/0 .text CreateInit__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::CreateInit() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/CreateInit__12daShopItem_cFv.s"
void daShopItem_c::CreateInit() {
fopAcM_SetMtx(this, mMtx);
fopAcM_setCullSizeBox(this, -100.0f, 0.0f, -100.0f, 100.0f, 200.0f, 100.0f);
if (mDoLib_clipper::getFar() > 1.0f) {
fopAcM_setCullSizeFar(this, 5000.0f / mDoLib_clipper::getFar());
}
show();
if (strcmp("R_SP109", dComIfGp_getStartStageName()) == 0 && dComIfGp_getStartStageRoomNo() == 1)
{
scale.set(mData[mShopItemID].get_scale() * 0.8f, mData[mShopItemID].get_scale() * 0.8f,
mData[mShopItemID].get_scale() * 0.8f);
} else {
scale.set(mData[mShopItemID].get_scale(), mData[mShopItemID].get_scale(),
mData[mShopItemID].get_scale());
}
home.pos = current.pos;
set_mtx();
mpModel->setUserArea(NULL);
}
#pragma pop
/* 8059ED58-8059EEF4 000418 019C+00 2/2 0/0 0/0 .text set_mtx__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::set_mtx() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/set_mtx__12daShopItem_cFv.s"
void daShopItem_c::set_mtx() {
mpModel->setBaseScale(scale);
if (daShopItem_prm::getGroup(this) == 15) {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
} else {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + mData[mShopItemID].get_offsetY(),
current.pos.z);
}
MTXCopy(mDoMtx_stack_c::get(), mMtx);
mDoMtx_stack_c::YrotM(mAngleY);
if (daShopItem_prm::getGroup(this) == 15) {
mDoMtx_stack_c::ZXYrotM(-11300, 32700, 7300);
} else {
mDoMtx_stack_c::ZXYrotM(mAngleX + mData[mShopItemID].get_angleX(),
mData[mShopItemID].get_angleY(), mData[mShopItemID].get_angleZ());
}
mDoMtx_stack_c::ZXYrotM(current.angle.x, current.angle.y, current.angle.z);
if (daShopItem_prm::getGroup(this) == 15) {
mDoMtx_stack_c::XrotM(0);
} else {
mDoMtx_stack_c::XrotM(mData[mShopItemID].get_angleOffsetX());
}
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
}
#pragma pop
/* 8059EEF4-8059EF48 0005B4 0054+00 1/1 0/0 0/0 .text _execute__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::_execute() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/_execute__12daShopItem_cFv.s"
}
#pragma pop
/* 8059EF48-8059EF9C 000608 0054+00 1/1 0/0 0/0 .text _draw__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::_draw() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/_draw__12daShopItem_cFv.s"
}
#pragma pop
/* 8059EF9C-8059EFA0 00065C 0004+00 1/0 0/0 0/0 .text setListStart__12daShopItem_cFv */
void daShopItem_c::setListStart() {
/* empty function */
}
/* ############################################################################################## */
/* 8059F488-8059F48C 000050 0004+00 0/1 0/0 0/0 .rodata @3823 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3823 = 80.0f;
COMPILER_STRIP_GATE(0x8059F488, &lit_3823);
#pragma pop
/* 8059EFA0-8059F024 000660 0084+00 1/0 0/0 0/0 .text setShadow__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::setShadow() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/setShadow__12daShopItem_cFv.s"
}
#pragma pop
/* 8059F024-8059F044 0006E4 0020+00 1/0 0/0 0/0 .text chkFlag__12daShopItem_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::chkFlag(int param_0) {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/chkFlag__12daShopItem_cFi.s"
}
#pragma pop
/* 8059F044-8059F064 000704 0020+00 1/0 0/0 0/0 .text getTevFrm__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::getTevFrm() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/getTevFrm__12daShopItem_cFv.s"
}
#pragma pop
/* 8059F064-8059F084 000724 0020+00 1/0 0/0 0/0 .text getBtpFrm__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::getBtpFrm() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/getBtpFrm__12daShopItem_cFv.s"
}
#pragma pop
/* 8059F084-8059F0A0 000744 001C+00 1/0 0/0 0/0 .text getShadowSize__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::getShadowSize() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/getShadowSize__12daShopItem_cFv.s"
}
#pragma pop
/* 8059F0A0-8059F0BC 000760 001C+00 1/0 0/0 0/0 .text getCollisionH__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::getCollisionH() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/getCollisionH__12daShopItem_cFv.s"
}
#pragma pop
/* 8059F0BC-8059F0D8 00077C 001C+00 1/0 0/0 0/0 .text getCollisionR__12daShopItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daShopItem_c::getCollisionR() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/getCollisionR__12daShopItem_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 8059F49C-8059F4BC -00001 0020+00 1/0 0/0 0/0 .data daShopItemMethodTable */
SECTION_DATA static void* daShopItemMethodTable[8] = {
(void*)daShopItem_Create__FPv,
(void*)daShopItem_Delete__FPv,
(void*)daShopItem_Execute__FPv,
(void*)daShopItem_IsDelete__FPv,
(void*)daShopItem_Draw__FPv,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 8059F4BC-8059F4EC -00001 0030+00 0/0 0/0 1/0 .data g_profile_ShopItem */
SECTION_DATA extern void* g_profile_ShopItem[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x021E0000, (void*)&g_fpcLf_Method,
(void*)0x00000968, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x00F20000, (void*)&daShopItemMethodTable,
(void*)0x00060100, (void*)0x000E0000,
};
/* 8059F4EC-8059F4F8 000050 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGCylFv,
};
/* 8059F4F8-8059F504 00005C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGAabFv,
};
/* 8059F504-8059F528 000068 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */
SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12dBgS_ObjAcchFv,
(void*)NULL,
(void*)NULL,
(void*)func_8059F428,
(void*)NULL,
(void*)NULL,
(void*)func_8059F420,
};
/* 8059F528-8059F56C 00008C 0044+00 1/1 0/0 0/0 .data __vt__12daShopItem_c */
SECTION_DATA extern void* __vt__12daShopItem_c[17] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)DrawBase__12daItemBase_cFv,
(void*)setListStart__12daShopItem_cFv,
(void*)settingBeforeDraw__12daItemBase_cFv,
(void*)setTevStr__12daItemBase_cFv,
(void*)setShadow__12daShopItem_cFv,
(void*)animEntry__12daItemBase_cFv,
(void*)RotateYBase__12daItemBase_cFv,
(void*)clothCreate__12daItemBase_cFv,
(void*)__CreateHeap__12daItemBase_cFv,
(void*)chkFlag__12daShopItem_cFi,
(void*)getTevFrm__12daShopItem_cFv,
(void*)getBtpFrm__12daShopItem_cFv,
(void*)getShadowSize__12daShopItem_cFv,
(void*)getCollisionH__12daShopItem_cFv,
(void*)getCollisionR__12daShopItem_cFv,
};
/* 8059F0D8-8059F294 000798 01BC+00 1/0 0/0 0/0 .text daShopItem_Create__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daShopItem_Create(void* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/daShopItem_Create__FPv.s"
}
#pragma pop
/* 8059F294-8059F2DC 000954 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGCyl::~cM3dGCyl() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/__dt__8cM3dGCylFv.s"
}
#pragma pop
/* 8059F2DC-8059F324 00099C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGAab::~cM3dGAab() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/__dt__8cM3dGAabFv.s"
}
#pragma pop
/* 8059F324-8059F394 0009E4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dBgS_ObjAcch::~dBgS_ObjAcch() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/__dt__12dBgS_ObjAcchFv.s"
}
#pragma pop
/* 8059F394-8059F3D0 000A54 003C+00 1/0 0/0 0/0 .text daShopItem_Delete__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daShopItem_Delete(void* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/daShopItem_Delete__FPv.s"
}
#pragma pop
/* 8059F3D0-8059F3F4 000A90 0024+00 1/0 0/0 0/0 .text daShopItem_Draw__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daShopItem_Draw(void* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/daShopItem_Draw__FPv.s"
}
#pragma pop
/* 8059F3F4-8059F418 000AB4 0024+00 1/0 0/0 0/0 .text daShopItem_Execute__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daShopItem_Execute(void* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/daShopItem_Execute__FPv.s"
}
#pragma pop
/* 8059F418-8059F420 000AD8 0008+00 1/0 0/0 0/0 .text daShopItem_IsDelete__FPv */
static bool daShopItem_IsDelete(void* param_0) {
bool daShopItem_c::_execute() {
animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
set_mtx();
return true;
}
/* 8059F420-8059F428 000AE0 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_8059F420() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/func_8059F420.s"
}
#pragma pop
/* 8059EF48-8059EF9C 000608 0054+00 1/1 0/0 0/0 .text _draw__12daShopItem_cFv */
bool daShopItem_c::_draw() {
if (!chkDraw()) {
return true;
}
/* 8059F428-8059F430 000AE8 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_8059F428() {
nofralloc
#include "asm/rel/d/a/d_a_shop_item/d_a_shop_item/func_8059F428.s"
DrawBase();
return true;
}
#pragma pop
/* 8059F48C-8059F48C 000054 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 8059EF9C-8059EFA0 00065C 0004+00 1/0 0/0 0/0 .text setListStart__12daShopItem_cFv */
void daShopItem_c::setListStart() {}
/* 8059EFA0-8059F024 000660 0084+00 1/0 0/0 0/0 .text setShadow__12daShopItem_cFv */
void daShopItem_c::setShadow() {
if (m_itemNo != NO_ITEM) {
daItemBase_c::setShadow();
} else {
mShadowKey = dComIfGd_setShadow(mShadowKey, 1, mpModel, &current.pos, 80.0f, 0.0f,
current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0,
1.0f, dDlst_shadowControl_c::getSimpleTex());
}
}
/* 8059F024-8059F044 0006E4 0020+00 1/0 0/0 0/0 .text chkFlag__12daShopItem_cFi */
BOOL daShopItem_c::chkFlag(int i_flag) {
return mData[mShopItemID].get_flag() & i_flag;
}
/* 8059F044-8059F064 000704 0020+00 1/0 0/0 0/0 .text getTevFrm__12daShopItem_cFv */
s8 daShopItem_c::getTevFrm() {
return mData[mShopItemID].get_tevfrm();
}
/* 8059F064-8059F084 000724 0020+00 1/0 0/0 0/0 .text getBtpFrm__12daShopItem_cFv */
s8 daShopItem_c::getBtpFrm() {
return mData[mShopItemID].get_btpfrm();
}
/* 8059F084-8059F0A0 000744 001C+00 1/0 0/0 0/0 .text getShadowSize__12daShopItem_cFv */
u8 daShopItem_c::getShadowSize() {
return mData[mShopItemID].get_shadowSize();
}
/* 8059F0A0-8059F0BC 000760 001C+00 1/0 0/0 0/0 .text getCollisionH__12daShopItem_cFv */
u8 daShopItem_c::getCollisionH() {
return mData[mShopItemID].get_collisionH();
}
/* 8059F0BC-8059F0D8 00077C 001C+00 1/0 0/0 0/0 .text getCollisionR__12daShopItem_cFv */
u8 daShopItem_c::getCollisionR() {
return mData[mShopItemID].get_collisionR();
}
int daShopItem_c::_create() {
fopAcM_SetupActor(this, daShopItem_c);
mAngleX = 0;
mAngleY = 0;
m_itemNo = daShopItem_prm::getItemNo(this);
if (getShopArcname() == NULL) {
// "Display model archive name doesn't exist![%d]\n"
OS_REPORT("陳列用モデルのアーカイブ名がありません![%d]\n", m_itemNo);
m_itemNo = NO_ITEM;
}
int phase_state = dComIfG_resLoad(&mPhase, getShopArcname());
switch (phase_state) {
case cPhs_COMPLEATE_e:
if (phase_state == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, CheckShopItemCreateHeap, getHeapSize())) {
return cPhs_ERROR_e;
}
// "Shop Item[%d]Memory:%d used\n"
OS_REPORT("ショップアイテム[%d]メモリ:%x 使用\n", m_itemNo, heap->getHeapSize());
CreateInit();
}
break;
}
return phase_state;
}
/* 8059F0D8-8059F294 000798 01BC+00 1/0 0/0 0/0 .text daShopItem_Create__FPv */
static int daShopItem_Create(void* i_this) {
return static_cast<daShopItem_c*>(i_this)->_create();
}
int daShopItem_c::_delete() {
DeleteBase(getShopArcname());
return 1;
}
/* 8059F394-8059F3D0 000A54 003C+00 1/0 0/0 0/0 .text daShopItem_Delete__FPv */
static int daShopItem_Delete(void* i_this) {
return static_cast<daShopItem_c*>(i_this)->_delete();
}
/* 8059F3D0-8059F3F4 000A90 0024+00 1/0 0/0 0/0 .text daShopItem_Draw__FPv */
static int daShopItem_Draw(void* i_this) {
return static_cast<daShopItem_c*>(i_this)->_draw();
}
/* 8059F3F4-8059F418 000AB4 0024+00 1/0 0/0 0/0 .text daShopItem_Execute__FPv */
static int daShopItem_Execute(void* i_this) {
return static_cast<daShopItem_c*>(i_this)->_execute();
}
/* 8059F418-8059F420 000AD8 0008+00 1/0 0/0 0/0 .text daShopItem_IsDelete__FPv */
static int daShopItem_IsDelete(void* i_this) {
return 1;
}
/* 8059F49C-8059F4BC -00001 0020+00 1/0 0/0 0/0 .data daShopItemMethodTable */
static actor_method_class daShopItemMethodTable = {
(process_method_func)daShopItem_Create, (process_method_func)daShopItem_Delete,
(process_method_func)daShopItem_Execute, (process_method_func)daShopItem_IsDelete,
(process_method_func)daShopItem_Draw,
};
/* 8059F4BC-8059F4EC -00001 0030+00 0/0 0/0 1/0 .data g_profile_ShopItem */
extern actor_process_profile_definition g_profile_ShopItem = {
fpcLy_CURRENT_e,
7,
fpcPi_CURRENT_e,
PROC_ShopItem,
&g_fpcLf_Method.mBase,
sizeof(daShopItem_c),
0,
0,
&g_fopAc_Method.base,
242,
&daShopItemMethodTable,
0x60100,
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};
+1 -1
View File
@@ -884,7 +884,7 @@ int daSpinner_c::setNextPathNum() {
}
/* 804D3694-804D36F4 001DF4 0060+00 1/1 0/0 0/0 .text getPathNextPos__11daSpinner_cFv */
cXyz* daSpinner_c::getPathNextPos() {
Vec* daSpinner_c::getPathNextPos() {
s32 add = field_0xa72 + field_0xa73;
if (add < 0) {
return &(mpPathMove->m_points + mpPathMove->m_num - 1)->m_position;
+1
View File
@@ -19,6 +19,7 @@ M706_LIBS := \
M706_CFLAGS := \
-sdata 0 \
-sdata2 0 \
-sym on \
M706_LDFLAGS := \
-nodefaults \
+186 -326
View File
@@ -1,398 +1,258 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_startAndGoal
//
/**
* d_a_startAndGoal.cpp
*
*/
#include "rel/d/a/d_a_startAndGoal/d_a_startAndGoal.h"
#include "dol2asm.h"
#include "d/a/d_a_npc.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_timer.h"
#include "d/meter/d_meter2_info.h"
#include "f_op/f_op_actor_mng.h"
//
// Types:
//
class daStartAndGoal_Path_c : public daNpcF_Path_c {
public:
/* 80D4D7B8 */ BOOL chkPassed2(cXyz);
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80D4D928 */ virtual ~daStartAndGoal_Path_c() {}
};
struct daStartAndGoal_c {
/* 80D4D84C */ void getType();
/* 80D4D884 */ void Create();
class daStartAndGoal_c : public fopAc_ac_c {
public:
/* 80D4D84C */ int getType();
/* 80D4D884 */ int Create();
/* 80D4D998 */ void init();
/* 80D4DA68 */ void actorPosCheck();
/* 80D4DB30 */ void readyStartTimer();
/* 80D4DBAC */ void isStartCheck();
/* 80D4DBD0 */ void isReadyCheck();
/* 80D4DC50 */ void Execute();
/* 80D4DCF4 */ bool Draw();
/* 80D4DCFC */ void Delete();
/* 80D4DB30 */ int readyStartTimer();
/* 80D4DBAC */ BOOL isStartCheck();
/* 80D4DBD0 */ BOOL isReadyCheck();
/* 80D4DC50 */ int Execute();
/* 80D4DCF4 */ int Draw();
/* 80D4DCFC */ int Delete();
/* 0x568 */ daStartAndGoal_Path_c mPath;
/* 0xB98 */ u8 field_0xb98;
/* 0xB99 */ u8 mType;
/* 0xB9C */ int mAction;
/* 0xBA0 */ bool mStarted;
};
struct cXyz {};
struct daStartAndGoal_Path_c {
/* 80D4D7B8 */ void chkPassed2(cXyz);
/* 80D4D928 */ ~daStartAndGoal_Path_c();
};
struct dPath {};
struct daNpcF_SPCurve_c {
/* 80150870 */ void initialize(dPath*, int);
/* 80D4DE68 */ ~daNpcF_SPCurve_c();
};
struct daNpcF_Path_c {
/* 80150900 */ void initialize();
/* 8015095C */ void setPathInfo(u8, s8, u8);
/* 80150A24 */ void chkPassed(cXyz);
/* 80150BE0 */ void setNextIdx();
/* 80150C18 */ void getNextIdx();
/* 80D4DE08 */ ~daNpcF_Path_c();
};
struct dComIfG_play_c {
/* 8002CB9C */ void getTimerNowTimeMs();
/* 8002CBDC */ void getTimerPtr();
};
struct Z2SeqMgr {
/* 802AF49C */ void subBgmStart(u32);
/* 802AF884 */ void subBgmStop();
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
//
// Forward References:
//
extern "C" void chkPassed2__21daStartAndGoal_Path_cF4cXyz();
extern "C" void getType__16daStartAndGoal_cFv();
extern "C" void Create__16daStartAndGoal_cFv();
extern "C" void __dt__21daStartAndGoal_Path_cFv();
extern "C" void init__16daStartAndGoal_cFv();
extern "C" void actorPosCheck__16daStartAndGoal_cFv();
extern "C" void readyStartTimer__16daStartAndGoal_cFv();
extern "C" void isStartCheck__16daStartAndGoal_cFv();
extern "C" void isReadyCheck__16daStartAndGoal_cFv();
extern "C" void Execute__16daStartAndGoal_cFv();
extern "C" bool Draw__16daStartAndGoal_cFv();
extern "C" void Delete__16daStartAndGoal_cFv();
extern "C" static void daStartAndGoal_Execute__FP16daStartAndGoal_c();
extern "C" static void daStartAndGoal_Draw__FP16daStartAndGoal_c();
extern "C" static bool daStartAndGoal_IsDelete__FP16daStartAndGoal_c();
extern "C" static void daStartAndGoal_Delete__FP16daStartAndGoal_c();
extern "C" static void daStartAndGoal_create__FP10fopAc_ac_c();
extern "C" void __dt__13daNpcF_Path_cFv();
extern "C" void __dt__16daNpcF_SPCurve_cFv();
//
// External References:
//
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void getTimerNowTimeMs__14dComIfG_play_cFv();
extern "C" void getTimerPtr__14dComIfG_play_cFv();
extern "C" void dComIfG_TimerStart__Fis();
extern "C" void dComIfG_TimerEnd__Fii();
extern "C" void dComIfG_TimerDeleteRequest__Fi();
extern "C" void initialize__16daNpcF_SPCurve_cFP5dPathi();
extern "C" void initialize__13daNpcF_Path_cFv();
extern "C" void setPathInfo__13daNpcF_Path_cFUcScUc();
extern "C" void chkPassed__13daNpcF_Path_cF4cXyz();
extern "C" void setNextIdx__13daNpcF_Path_cFv();
extern "C" void getNextIdx__13daNpcF_Path_cFv();
extern "C" void dTimer_createTimer__FlUlUcUcffff();
extern "C" void dTimer_isStart__Fv();
extern "C" void dTimer_isReadyFlag__Fv();
extern "C" void subBgmStart__8Z2SeqMgrFUl();
extern "C" void subBgmStop__8Z2SeqMgrFv();
extern "C" void __dl__FPv();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_meter2_info[248];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
// Declarations:
//
/* 80D4D7B8-80D4D84C 000078 0094+00 1/1 0/0 0/0 .text chkPassed2__21daStartAndGoal_Path_cF4cXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_Path_c::chkPassed2(cXyz param_0) {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/chkPassed2__21daStartAndGoal_Path_cF4cXyz.s"
BOOL daStartAndGoal_Path_c::chkPassed2(cXyz i_checkPos) {
int var_r31 = 0;
while (var_r31 < 1) {
if (!chkPassed(i_checkPos)) {
break;
}
var_r31 = 1;
if (setNextIdx()) {
var_r31 = 2;
}
}
return var_r31 > 0;
}
#pragma pop
/* 80D4D84C-80D4D884 00010C 0038+00 1/1 0/0 0/0 .text getType__16daStartAndGoal_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::getType() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/getType__16daStartAndGoal_cFv.s"
int daStartAndGoal_c::getType() {
switch (fopAcM_GetParam(this) & 0xFF) {
case 0:
return 0;
case 1:
return 1;
default:
return 2;
}
}
#pragma pop
/* ############################################################################################## */
struct timer_info {
/* 0x0 */ s32 mode;
/* 0x4 */ u8 type;
/* 0x5 */ u8 field_0x5;
};
/* 80D4DECC-80D4DEE4 000000 0018+00 4/4 0/0 0/0 .data l_timerType */
SECTION_DATA static u8 l_timerType[24] = {
0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00,
};
/* 80D4DEE4-80D4DF04 -00001 0020+00 1/0 0/0 0/0 .data l_daStartAndGoal_Method */
SECTION_DATA static void* l_daStartAndGoal_Method[8] = {
(void*)daStartAndGoal_create__FP10fopAc_ac_c,
(void*)daStartAndGoal_Delete__FP16daStartAndGoal_c,
(void*)daStartAndGoal_Execute__FP16daStartAndGoal_c,
(void*)daStartAndGoal_IsDelete__FP16daStartAndGoal_c,
(void*)daStartAndGoal_Draw__FP16daStartAndGoal_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 80D4DF04-80D4DF34 -00001 0030+00 0/0 0/0 1/0 .data g_profile_START_AND_GOAL */
SECTION_DATA extern void* g_profile_START_AND_GOAL[12] = {
(void*)0xFFFFFFFD, (void*)0x0009FFFD,
(void*)0x03060000, (void*)&g_fpcLf_Method,
(void*)0x00000BA4, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x01870000, (void*)&l_daStartAndGoal_Method,
(void*)0x00044000, (void*)0x000E0000,
};
/* 80D4DF34-80D4DF40 000068 000C+00 2/2 0/0 0/0 .data __vt__21daStartAndGoal_Path_c */
SECTION_DATA extern void* __vt__21daStartAndGoal_Path_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__21daStartAndGoal_Path_cFv,
};
/* 80D4DF40-80D4DF4C 000074 000C+00 4/4 0/0 0/0 .data __vt__16daNpcF_SPCurve_c */
SECTION_DATA extern void* __vt__16daNpcF_SPCurve_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__16daNpcF_SPCurve_cFv,
};
/* 80D4DF4C-80D4DF58 000080 000C+00 3/3 0/0 0/0 .data __vt__13daNpcF_Path_c */
SECTION_DATA extern void* __vt__13daNpcF_Path_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__13daNpcF_Path_cFv,
static timer_info l_timerType[] = {
{3, 0, 1},
{4, 2, 0},
{3, 1, 1},
};
/* 80D4D884-80D4D928 000144 00A4+00 1/1 0/0 0/0 .text Create__16daStartAndGoal_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::Create() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/Create__16daStartAndGoal_cFv.s"
}
#pragma pop
int daStartAndGoal_c::Create() {
fopAcM_SetupActor(this, daStartAndGoal_c);
/* 80D4D928-80D4D998 0001E8 0070+00 1/0 0/0 0/0 .text __dt__21daStartAndGoal_Path_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daStartAndGoal_Path_c::~daStartAndGoal_Path_c() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/__dt__21daStartAndGoal_Path_cFv.s"
init();
return cPhs_COMPLEATE_e;
}
#pragma pop
/* ############################################################################################## */
/* 80D4DEB8-80D4DEBC 000000 0001+03 1/1 0/0 0/0 .rodata l_DATA */
SECTION_RODATA static u8 const l_DATA[1 + 3 /* padding */] = {
0x00,
/* padding */
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80D4DEB8, &l_DATA);
/* 80D4DEBC-80D4DEC0 000004 0004+00 0/1 0/0 0/0 .rodata @3913 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3913 = 210.0f;
COMPILER_STRIP_GATE(0x80D4DEBC, &lit_3913);
#pragma pop
/* 80D4DEC0-80D4DEC4 000008 0004+00 0/1 0/0 0/0 .rodata @3914 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3914 = 410.0f;
COMPILER_STRIP_GATE(0x80D4DEC0, &lit_3914);
#pragma pop
/* 80D4DEC4-80D4DEC8 00000C 0004+00 0/1 0/0 0/0 .rodata @3915 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3915 = 32.0f;
COMPILER_STRIP_GATE(0x80D4DEC4, &lit_3915);
#pragma pop
/* 80D4DEC8-80D4DECC 000010 0004+00 0/1 0/0 0/0 .rodata @3916 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3916 = 419.0f;
COMPILER_STRIP_GATE(0x80D4DEC8, &lit_3916);
#pragma pop
static const u8 l_DATA[1] = {0}; // unused
/* 80D4D998-80D4DA68 000258 00D0+00 1/1 0/0 0/0 .text init__16daStartAndGoal_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::init() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/init__16daStartAndGoal_cFv.s"
void daStartAndGoal_c::init() {
field_0xb98 = 1;
mStarted = false;
mType = getType();
mPath.initialize();
mPath.setPathInfo(fopAcM_GetParam(this) >> 8, fopAcM_GetRoomNo(this), 0);
JUT_ASSERT(0 != mPath.getPathInfo());
if (dComIfG_getTimerPtr() == NULL) {
dTimer_createTimer(l_timerType[mType].mode, 9999000, l_timerType[mType].type, 0, 210.0f,
410.0f, 32.0f, 419.0f);
}
mAction = 0;
}
#pragma pop
/* 80D4DA68-80D4DB30 000328 00C8+00 1/1 0/0 0/0 .text actorPosCheck__16daStartAndGoal_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::actorPosCheck() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/actorPosCheck__16daStartAndGoal_cFv.s"
void daStartAndGoal_c::actorPosCheck() {
cXyz pos(daPy_getPlayerActorClass()->current.pos);
if (mPath.chkPassed2(pos)) {
int idx = mPath.getIdx();
int next_idx = mPath.getNextIdx();
if (idx == next_idx) {
mAction = 3;
dComIfG_TimerEnd(l_timerType[mType].mode, -1);
dMeter2Info_setMsgTimeMs(dComIfG_getTimerNowTimeMs());
}
}
}
#pragma pop
/* 80D4DB30-80D4DBAC 0003F0 007C+00 0/0 0/0 2/2 .text readyStartTimer__16daStartAndGoal_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::readyStartTimer() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/readyStartTimer__16daStartAndGoal_cFv.s"
int daStartAndGoal_c::readyStartTimer() {
if (dComIfG_TimerStart(l_timerType[mType].mode, 0)) {
mAction = 1;
field_0xb98 = l_timerType[mType].field_0x5;
return 1;
}
return 0;
}
#pragma pop
/* 80D4DBAC-80D4DBD0 00046C 0024+00 1/1 0/0 2/2 .text isStartCheck__16daStartAndGoal_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::isStartCheck() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/isStartCheck__16daStartAndGoal_cFv.s"
BOOL daStartAndGoal_c::isStartCheck() {
return dTimer_isStart();
}
#pragma pop
/* 80D4DBD0-80D4DC50 000490 0080+00 1/1 0/0 0/0 .text isReadyCheck__16daStartAndGoal_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::isReadyCheck() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/isReadyCheck__16daStartAndGoal_cFv.s"
BOOL daStartAndGoal_c::isReadyCheck() {
if (mStarted) {
return TRUE;
}
if (dTimer_isReadyFlag()) {
mStarted = true;
if (mType == 1) {
Z2GetAudioMgr()->subBgmStart(Z2BGM_RIVER_GAME);
}
}
return dTimer_isStart();
}
#pragma pop
/* 80D4DC50-80D4DCF4 000510 00A4+00 1/1 0/0 0/0 .text Execute__16daStartAndGoal_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::Execute() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/Execute__16daStartAndGoal_cFv.s"
int daStartAndGoal_c::Execute() {
switch (mAction) {
case 0:
break;
case 1:
if (isStartCheck()) {
mAction = 2;
if (mType == 0) {
Z2GetAudioMgr()->subBgmStart(Z2BGM_RIVER_GAME_00);
}
} else {
isReadyCheck();
break;
}
case 2:
actorPosCheck();
break;
case 3:
break;
}
return 1;
}
#pragma pop
/* 80D4DCF4-80D4DCFC 0005B4 0008+00 1/1 0/0 0/0 .text Draw__16daStartAndGoal_cFv */
bool daStartAndGoal_c::Draw() {
return true;
int daStartAndGoal_c::Draw() {
return 1;
}
/* 80D4DCFC-80D4DD80 0005BC 0084+00 1/1 0/0 0/0 .text Delete__16daStartAndGoal_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daStartAndGoal_c::Delete() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/Delete__16daStartAndGoal_cFv.s"
int daStartAndGoal_c::Delete() {
if (field_0xb98 == 1) {
dComIfG_TimerDeleteRequest(l_timerType[mType].mode);
}
if (mStarted == true && (mType == 0 || mType == 1)) {
Z2GetAudioMgr()->subBgmStop();
}
return 1;
}
#pragma pop
/* 80D4DD80-80D4DDA0 000640 0020+00 1/0 0/0 0/0 .text daStartAndGoal_Execute__FP16daStartAndGoal_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daStartAndGoal_Execute(daStartAndGoal_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/daStartAndGoal_Execute__FP16daStartAndGoal_c.s"
static int daStartAndGoal_Execute(daStartAndGoal_c* i_this) {
return i_this->Execute();
}
#pragma pop
/* 80D4DDA0-80D4DDC0 000660 0020+00 1/0 0/0 0/0 .text daStartAndGoal_Draw__FP16daStartAndGoal_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daStartAndGoal_Draw(daStartAndGoal_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/daStartAndGoal_Draw__FP16daStartAndGoal_c.s"
static int daStartAndGoal_Draw(daStartAndGoal_c* i_this) {
return i_this->Draw();
}
#pragma pop
/* 80D4DDC0-80D4DDC8 000680 0008+00 1/0 0/0 0/0 .text
* daStartAndGoal_IsDelete__FP16daStartAndGoal_c */
static bool daStartAndGoal_IsDelete(daStartAndGoal_c* param_0) {
return true;
static int daStartAndGoal_IsDelete(daStartAndGoal_c* i_this) {
return 1;
}
/* 80D4DDC8-80D4DDE8 000688 0020+00 1/0 0/0 0/0 .text daStartAndGoal_Delete__FP16daStartAndGoal_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daStartAndGoal_Delete(daStartAndGoal_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/daStartAndGoal_Delete__FP16daStartAndGoal_c.s"
static int daStartAndGoal_Delete(daStartAndGoal_c* i_this) {
return i_this->Delete();
}
#pragma pop
/* 80D4DDE8-80D4DE08 0006A8 0020+00 1/0 0/0 0/0 .text daStartAndGoal_create__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daStartAndGoal_create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/daStartAndGoal_create__FP10fopAc_ac_c.s"
static int daStartAndGoal_create(fopAc_ac_c* i_this) {
return static_cast<daStartAndGoal_c*>(i_this)->Create();
}
#pragma pop
/* 80D4DE08-80D4DE68 0006C8 0060+00 1/0 0/0 0/0 .text __dt__13daNpcF_Path_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daNpcF_Path_c::~daNpcF_Path_c() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/__dt__13daNpcF_Path_cFv.s"
}
#pragma pop
/* 80D4DEE4-80D4DF04 -00001 0020+00 1/0 0/0 0/0 .data l_daStartAndGoal_Method */
static actor_method_class l_daStartAndGoal_Method = {
(process_method_func)daStartAndGoal_create, (process_method_func)daStartAndGoal_Delete,
(process_method_func)daStartAndGoal_Execute, (process_method_func)daStartAndGoal_IsDelete,
(process_method_func)daStartAndGoal_Draw,
};
/* 80D4DE68-80D4DEB0 000728 0048+00 1/0 0/0 0/0 .text __dt__16daNpcF_SPCurve_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daNpcF_SPCurve_c::~daNpcF_SPCurve_c() {
nofralloc
#include "asm/rel/d/a/d_a_startAndGoal/d_a_startAndGoal/__dt__16daNpcF_SPCurve_cFv.s"
}
#pragma pop
/* 80D4DF04-80D4DF34 -00001 0030+00 0/0 0/0 1/0 .data g_profile_START_AND_GOAL */
extern actor_process_profile_definition g_profile_START_AND_GOAL = {
fpcLy_CURRENT_e,
9,
fpcPi_CURRENT_e,
PROC_START_AND_GOAL,
&g_fpcLf_Method.mBase,
sizeof(daStartAndGoal_c),
0,
0,
&g_fopAc_Method.base,
391,
&l_daStartAndGoal_Method,
0x44000,
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};