summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-09-25 08:20:46 -0700
committerGitHub <noreply@github.com>2025-09-25 18:20:46 +0300
commit9a2df2162b7ec4a23ad32915c61d46cf20b5003d (patch)
treeeaeff68a0e755a6014c559abff39685b3b3e9c14 /src/d
parent4635fcb666d7c5f256016d733584712a55f1c130 (diff)
d_debug_camera mostly done (#2695)
* d_debug_camera mostly done * update some alink demo stuff * some misc debug stuff
Diffstat (limited to 'src/d')
-rw-r--r--src/d/actor/d_a_alink.cpp34
-rw-r--r--src/d/actor/d_a_alink_bottle.inc6
-rw-r--r--src/d/actor/d_a_alink_copyrod.inc2
-rw-r--r--src/d/actor/d_a_alink_cut.inc20
-rw-r--r--src/d/actor/d_a_alink_damage.inc4
-rw-r--r--src/d/actor/d_a_alink_demo.inc130
-rw-r--r--src/d/actor/d_a_alink_grab.inc6
-rw-r--r--src/d/actor/d_a_alink_guard.inc2
-rw-r--r--src/d/actor/d_a_alink_horse.inc4
-rw-r--r--src/d/actor/d_a_alink_kandelaar.inc2
-rw-r--r--src/d/actor/d_a_alink_sumou.inc2
-rw-r--r--src/d/actor/d_a_alink_whistle.inc4
-rw-r--r--src/d/actor/d_a_alink_wolf.inc26
-rw-r--r--src/d/actor/d_a_e_pm.cpp2
-rw-r--r--src/d/d_debug_camera.cpp1777
15 files changed, 1899 insertions, 122 deletions
diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp
index 2c7364fb3c..f9ea4a3a79 100644
--- a/src/d/actor/d_a_alink.cpp
+++ b/src/d/actor/d_a_alink.cpp
@@ -4375,7 +4375,7 @@ void daAlink_c::playerInit() {
mEquipItem = fpcNm_ITEM_NONE;
offSwordModel();
- field_0x3184 = -1;
+ mAlinkStaffId = -1;
mExitID = 0x3F;
onNoResetFlg0(FLG0_SWIM_UP);
offOxygenTimer();
@@ -5941,7 +5941,7 @@ void daAlink_c::setSwordAtCollision(int param_0) {
/* 800AA5E8-800AA6B4 0A4F28 00CC+00 4/4 0/0 0/0 .text checkNoCollisionCorret__9daAlink_cFv */
BOOL daAlink_c::checkNoCollisionCorret() {
- if (checkModeFlg(0x12800) || mDemo.getDemoType() == 1 || mProcID == PROC_DOOR_OPEN ||
+ if (checkModeFlg(0x12800) || mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_TOOL_e || mProcID == PROC_DOOR_OPEN ||
(checkEventRun() &&
(!strcmp(dComIfGp_getEventManager().getRunEventName(), "SCENE_EXIT") ||
(fopAcM_getTalkEventPartner(this) &&
@@ -10356,7 +10356,7 @@ void daAlink_c::decideDoStatus() {
BOOL daAlink_c::checkWaitAction() {
if (checkWolf()) {
if (checkModeFlg(0x01000000)) {
- if (mDemo.getDemoType() == 4) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_START_e) {
return 0;
}
return procWolfWaitInit();
@@ -10412,7 +10412,7 @@ BOOL daAlink_c::checkWaitAction() {
return procGrabWaitInit();
}
- if (checkModeFlg(0x01000000) && mDemo.getDemoType() == 4) {
+ if (checkModeFlg(0x01000000) && mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_START_e) {
return 0;
}
@@ -10555,7 +10555,7 @@ BOOL daAlink_c::checkAutoJumpAction() {
return 0;
}
- if (!checkModeFlg(0x70C12) && mProcID != PROC_DOOR_OPEN && mProcID != PROC_WARP && !getSumouMode() && mDemo.getDemoType() != 5 && !checkMagneBootsOn() && !mLinkAcch.ChkGroundHit()) {
+ if (!checkModeFlg(0x70C12) && mProcID != PROC_DOOR_OPEN && mProcID != PROC_WARP && !getSumouMode() && mDemo.getDemoType() != daPy_demo_c::DEMO_TYPE_SPECIAL_e && !checkMagneBootsOn() && !mLinkAcch.ChkGroundHit()) {
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
speed.y = 0.0f;
return procSwimWaitInit(0);
@@ -12820,7 +12820,7 @@ void daAlink_c::posMove() {
if (checkNoResetFlg0(FLG0_SWIM_UP) && mProcID != PROC_SWIM_DIVE) {
current.pos.y = mWaterY;
- } else if (mDemo.getDemoType() == 4 || mProcID == PROC_ELEC_DAMAGE ||
+ } else if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_START_e || mProcID == PROC_ELEC_DAMAGE ||
dComIfGp_checkPlayerStatus0(0, 0x10))
{
speed.y = 0.0f;
@@ -15548,7 +15548,7 @@ int daAlink_c::procWaitTurn() {
} else if (angle == 0) {
if (checkEventRun()) {
if (mDemo.getDemoMode() == 5) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (!checkNextAction(0)) {
checkWaitAction();
}
@@ -15742,7 +15742,7 @@ int daAlink_c::procSideStepLand() {
if (frameCtrl_p->checkAnmEnd()) {
if (mDemo.getDemoMode() == 16) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
@@ -15985,7 +15985,7 @@ int daAlink_c::procFrontRoll() {
if (frameCtrl_p->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x28) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
if (!checkInputOnR()) {
mNormalSpeed -= daAlinkHIO_frontRoll_c0::m.mMinSpeed;
@@ -16235,7 +16235,7 @@ int daAlink_c::procSideRoll() {
if (frameCtrl_p->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x49) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
if (!checkAttentionLock()) {
offNoResetFlg2(FLG2_UNK_8000000);
@@ -16391,7 +16391,7 @@ int daAlink_c::procBackJumpLand() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x10) {
- dComIfGp_getPEvtManager()->cutEnd(field_0x3184);
+ dComIfGp_getPEvtManager()->cutEnd(mAlinkStaffId);
} else {
if (!checkAttentionLock()) {
offNoResetFlg2(FLG2_UNK_8000000);
@@ -17284,7 +17284,7 @@ int daAlink_c::procCoMetamorphose() {
if (!checkEventRun()) {
checkWaitAction();
} else {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
}
@@ -17304,7 +17304,7 @@ int daAlink_c::procCoMetamorphose() {
mProcVar5.field_0x3012 = 1;
if (mDemo.getParam0() == 1 && (mDemo.getDemoMode() == 0x39 || mDemo.getDemoMode() == 0x3A)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
if (checkWolf()) {
setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.field_0x14, -1.0f);
@@ -17336,7 +17336,7 @@ int daAlink_c::procCoMetamorphose() {
mDoMtx_stack_c::multVec(&sp8, &current.pos);
field_0x2f99 = 0xC;
- if (mDemo.getDemoType() == 3) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_ORIGINAL_e) {
mFallVoiceInit = 1;
}
@@ -17350,7 +17350,7 @@ int daAlink_c::procCoMetamorphose() {
return checkWaitAction();
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
if (checkWolf()) {
setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.field_0x14, -1.0f);
@@ -17477,7 +17477,7 @@ int daAlink_c::procCoMetamorphoseOnly() {
}
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
@@ -17588,7 +17588,7 @@ int daAlink_c::execute() {
setSelectEquipItem(0);
if (dComIfGp_event_runCheck()) {
- field_0x3184 = dComIfGp_evmng_getMyStaffId("Alink", this, 0);
+ mAlinkStaffId = dComIfGp_evmng_getMyStaffId("Alink", this, 0);
if (eventInfo.checkCommandDoor() && !dComIfGp_event_chkEventFlag(4) &&
mEquipItem == 0x102)
diff --git a/src/d/actor/d_a_alink_bottle.inc b/src/d/actor/d_a_alink_bottle.inc
index 9f0acf5de5..227794fee8 100644
--- a/src/d/actor/d_a_alink_bottle.inc
+++ b/src/d/actor/d_a_alink_bottle.inc
@@ -218,7 +218,7 @@ int daAlink_c::commonBottleDrink(int param_0) {
}
field_0x072c->setFrame(1.0f);
- if (mDemo.getDemoType() == 5) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SPECIAL_e) {
dComIfGs_setEquipBottleItemIn(mSelectItemId, fpcNm_ITEM_HALF_MILK_BOTTLE);
}
} else if (mProcVar2.field_0x300c == 0) {
@@ -276,7 +276,7 @@ int daAlink_c::commonBottleDrink(int param_0) {
}
field_0x072c->setFrame(2.0f);
- if (mDemo.getDemoType() == 5) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SPECIAL_e) {
dComIfGs_setEquipBottleItemEmpty(mSelectItemId);
}
@@ -404,7 +404,7 @@ int daAlink_c::procBottleDrinkInit(u16 i_itemNo) {
/* 8010F698-8010F6F4 109FD8 005C+00 1/0 0/0 0/0 .text procBottleDrink__9daAlink_cFv */
int daAlink_c::procBottleDrink() {
if (mProcVar3.field_0x300e != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
mProcVar3.field_0x300e = commonBottleDrink(0);
}
diff --git a/src/d/actor/d_a_alink_copyrod.inc b/src/d/actor/d_a_alink_copyrod.inc
index 920685ea6c..2340ab0d4e 100644
--- a/src/d/actor/d_a_alink_copyrod.inc
+++ b/src/d/actor/d_a_alink_copyrod.inc
@@ -467,7 +467,7 @@ int daAlink_c::procCopyRodRevive() {
simpleAnmPlay(field_0x0724);
if (mUnderFrameCtrl[0].checkAnmEnd()) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
diff --git a/src/d/actor/d_a_alink_cut.inc b/src/d/actor/d_a_alink_cut.inc
index cbdad7779a..446bbd825c 100644
--- a/src/d/actor/d_a_alink_cut.inc
+++ b/src/d/actor/d_a_alink_cut.inc
@@ -981,7 +981,7 @@ int daAlink_c::procCutNormal() {
resetCombo(1);
if (mDemo.getDemoMode() == 0x24 || mDemo.getDemoMode() == 0x54) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
@@ -1241,7 +1241,7 @@ int daAlink_c::procCutFinish() {
mProcVar0.field_0x3008--;
}
} else if (mDemo.getDemoMode() == 0x24 || mDemo.getDemoMode() == 0x54) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
mNormalSpeed = 0.0f;
field_0x2f98 = 2;
@@ -1408,7 +1408,7 @@ int daAlink_c::procCutFinishJumpUpLand() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x52) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (mProcVar0.field_0x3008 > 0) {
if (!(frameCtrl->getFrame() > field_0x3484) || !checkCutCancelNextMode(3)) {
mProcVar0.field_0x3008--;
@@ -1766,7 +1766,7 @@ int daAlink_c::procCutTurn() {
mProcVar0.field_0x3008--;
}
} else if (mDemo.getDemoMode() == 0x24) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
field_0x2f98 = 3;
checkNextAction(0);
@@ -1903,7 +1903,7 @@ int daAlink_c::procCutTurnMove() {
if (mDemo.getDemoMode() == 0x5B || mDemo.getDemoMode() == 0x5C) {
if (var_r4) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
} else if ((mProcVar2.field_0x300c == 0 && swordButton()) || (mProcVar2.field_0x300c != 0 && doButton())) {
f32 var_f30 = 0.0f;
@@ -2156,7 +2156,7 @@ int daAlink_c::procCutDownLand() {
mProcVar0.field_0x3008--;
} else if (mProcVar3.field_0x300e != 0) {
if (mDemo.getDemoMode() == 0x51) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
procBackJumpInit(1);
}
@@ -2296,7 +2296,7 @@ int daAlink_c::procCutHeadLand() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x53) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
@@ -2472,7 +2472,7 @@ int daAlink_c::procCutLargeJumpLand() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x56) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
@@ -2547,7 +2547,7 @@ int daAlink_c::procSwordUnequipSp() {
if (frameCtrl->checkAnmEnd()) {
if (field_0x3198 != 0) {
if (mDemo.getDemoMode() == 0x1E) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
@@ -2571,7 +2571,7 @@ int daAlink_c::procSwordUnequipSp() {
if (mDemo.getParam0() == 1) {
frameCtrl->setFrame(13.0f);
frameCtrl->setRate(0.0f);
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (frameCtrl->getRate() < 0.0099999998f) {
setWaterInAnmRate(frameCtrl, daAlinkHIO_cut_c0::m.mFlourishEndAnmSpeed);
}
diff --git a/src/d/actor/d_a_alink_damage.inc b/src/d/actor/d_a_alink_damage.inc
index cb6a98e623..ebf9897742 100644
--- a/src/d/actor/d_a_alink_damage.inc
+++ b/src/d/actor/d_a_alink_damage.inc
@@ -1308,7 +1308,7 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16
if (param_0 == -5 && mDemo.getParam1() > 0) {
mProcVar0.field_0x3008 = mDemo.getParam1();
var_f31 = 0.0f;
- } else if (param_0 == -2 && mDemo.getDemoType() == 1) {
+ } else if (param_0 == -2 && mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_TOOL_e) {
mProcVar0.field_0x3008 = 0x1E;
var_f31 = 0.0f;
} else {
@@ -1406,7 +1406,7 @@ int daAlink_c::procLargeDamageUp() {
offModeFlg(0x04000000);
if ((checkEventRun() && mProcVar0.field_0x3008 < 0) || mDemo.getDemoMode() == 0x1B || mDemo.getDemoMode() == 9) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc
index 64dd563e34..77abd0c7cd 100644
--- a/src/d/actor/d_a_alink_demo.inc
+++ b/src/d/actor/d_a_alink_demo.inc
@@ -261,7 +261,7 @@ int daAlink_c::checkDemoAction() {
}
if (checkModeFlg(0x40000)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 0;
}
@@ -315,7 +315,7 @@ int daAlink_c::checkDemoAction() {
} else if (demoMode == daPy_demo_c::DEMO_UNK_27_e) {
onNoResetFlg0(FLG0_UNK_100000);
- if (mDemo.getDemoType() == 1) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_TOOL_e) {
return commonLargeDamageUpInit(-2, 1, 0, 0);
} else if (mDemo.getParam0() == 1) {
return commonLargeDamageUpInit(-5, 1, 0, 0);
@@ -412,7 +412,7 @@ int daAlink_c::checkDemoAction() {
return procCoLookWaitInit();
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
} else if (demoMode == daPy_demo_c::DEMO_UNK_7_e) {
offNoResetFlg0(FLG0_UNK_100000);
@@ -517,7 +517,7 @@ void daAlink_c::setDemoMoveData(u32* o_mode, cXyz const* i_goal) {
} else if ((*o_mode == daPy_demo_c::DEMO_UNK_2_e && dist_to_pos < temp_f29) || dist_to_pos < temp_f28) {
*o_mode = daPy_demo_c::DEMO_UNK_2_e;
mDemo.setStick(0.35000002f);
- } else if (mDemo.getDemoType() == 3) {
+ } else if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_ORIGINAL_e) {
mDemo.setStick(1.0f);
}
@@ -611,15 +611,15 @@ void daAlink_c::setDemoData() {
}
}
- if (mDemo.getDemoType() == 4 && !dComIfGp_evmng_checkStartDemo()) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_START_e && !dComIfGp_evmng_checkStartDemo()) {
mDemo.setSystemDemoType();
}
if (demo_actor_p != NULL) {
demo_actor_p->setModel(mpLinkModel);
- field_0x3184 = -1;
+ mAlinkStaffId = -1;
- if (mDemo.getDemoType() != 1) {
+ if (mDemo.getDemoType() != daPy_demo_c::DEMO_TYPE_TOOL_e) {
mDemo.setToolDemoType();
mDemo.setDemoMode(daPy_demo_c::DEMO_UNK_1_e);
freeGrabItem();
@@ -681,18 +681,18 @@ void daAlink_c::setDemoData() {
}
}
- if (field_0x3184 != -1) {
+ if (mAlinkStaffId != -1) {
if (mProcID == PROC_DUNGEON_WARP_READY) {
mDemo.setSystemDemoType();
}
- char* cut_name = dComIfGp_getPEvtManager()->getMyNowCutName(field_0x3184);
+ char* cut_name = dComIfGp_getPEvtManager()->getMyNowCutName(mAlinkStaffId);
if (cut_name != NULL) {
// Take the first 3 chars in cut_name, convert them to integers, and calculate
// demo_mode
demo_mode = ((cut_name[0] - '0') * 100) + ((cut_name[1] - '0') * 10) +
(cut_name[2] - '0');
- if (mDemo.getDemoType() != 4 && (demo_mode == daPy_demo_c::DEMO_UNK_1_e || demo_mode == daPy_demo_c::DEMO_UNK_23_e) &&
+ if (mDemo.getDemoType() != daPy_demo_c::DEMO_TYPE_START_e && (demo_mode == daPy_demo_c::DEMO_UNK_1_e || demo_mode == daPy_demo_c::DEMO_UNK_23_e) &&
mLinkAcch.ChkGroundHit() && !checkModeFlg(0x70C52))
{
mNormalSpeed = 0.0f;
@@ -703,12 +703,12 @@ void daAlink_c::setDemoData() {
demo_mode = daPy_demo_c::DEMO_UNK_1_e;
}
- pos_p = dComIfGp_evmng_getMyXyzP(field_0x3184, "pos");
+ pos_p = dComIfGp_evmng_getMyXyzP(mAlinkStaffId, "pos");
if (pos_p == NULL) {
pos_p = dComIfGp_evmng_getGoal();
}
- int* angle_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "angle");
+ int* angle_p = dComIfGp_evmng_getMyIntegerP(mAlinkStaffId, "angle");
if (angle_p != NULL) {
angle = *angle_p;
} else if (demo_mode == daPy_demo_c::DEMO_WAIT_TURN_e) {
@@ -717,11 +717,11 @@ void daAlink_c::setDemoData() {
angle = shape_angle.y;
}
- prm0_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "prm0");
- prm1_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "prm1");
+ prm0_p = dComIfGp_evmng_getMyIntegerP(mAlinkStaffId, "prm0");
+ prm1_p = dComIfGp_evmng_getMyIntegerP(mAlinkStaffId, "prm1");
- if (mDemo.getDemoType() == 2) {
- f32* stick_p = dComIfGp_evmng_getMyFloatP(field_0x3184, "stick");
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SYSTEM_e) {
+ f32* stick_p = dComIfGp_evmng_getMyFloatP(mAlinkStaffId, "stick");
if (stick_p != NULL) {
mDemo.setStick(*stick_p);
@@ -736,13 +736,13 @@ void daAlink_c::setDemoData() {
mDoMtx_stack_c::YrotM(shape_angle.y);
mDoMtx_stack_c::multVec(pos_p, &goal_pos);
dComIfGp_evmng_setGoal(&goal_pos);
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
}
}
if ((mEquipItem == fpcNm_ITEM_IRONBALL || checkFishingRodItem(mEquipItem)) && demo_mode != daPy_demo_c::DEMO_UNK_1_e &&
- demo_mode != daPy_demo_c::DEMO_UNK_31_e && (field_0x3184 != -1 || mDemo.getDemoType() == 3) &&
+ demo_mode != daPy_demo_c::DEMO_UNK_31_e && (mAlinkStaffId != -1 || mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_ORIGINAL_e) &&
(demo_mode != daPy_demo_c::DEMO_UNK_6_e || (var_r28 == 0 && !checkEquipAnime())))
{
deleteEquipItem(FALSE, TRUE);
@@ -752,7 +752,7 @@ void daAlink_c::setDemoData() {
}
}
- if (mDemo.getDemoType() == 4) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_START_e) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_14_e) {
if (mDemo.getTimer() != 0) {
mDemo.decTimer();
@@ -760,14 +760,14 @@ void daAlink_c::setDemoData() {
cXyz tmp_sp = current.pos - home.pos;
if (tmp_sp.abs2XZ() > 90000.0f) {
mDemo.setTimer(0);
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
} else {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
}
} else {
- if (mDemo.getDemoType() == daPy_demo_c::DEMO_UNK_1_e || (mDemo.getDemoType() == daPy_demo_c::DEMO_UNK_2_e && field_0x3184 != -1)) {
+ if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_TOOL_e || (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SYSTEM_e && mAlinkStaffId != -1)) {
if (prm0_p != NULL) {
mDemo.setParam0(*prm0_p);
} else {
@@ -793,7 +793,7 @@ void daAlink_c::setDemoData() {
}
mDemo.setDemoMode(demo_mode);
- } else if (mDemo.getDemoType() == 3) {
+ } else if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_ORIGINAL_e) {
demo_mode = mDemo.getDemoMode();
if (checkDemoMoveMode(demo_mode)) {
@@ -813,13 +813,13 @@ void daAlink_c::setDemoData() {
dComIfGp_clearPlayerStatus0(0, 0x10);
}
- if (field_0x3184 != -1 &&
+ if (mAlinkStaffId != -1 &&
(demo_mode == daPy_demo_c::DEMO_UNK_1_e || demo_mode == daPy_demo_c::DEMO_UNK_4_e || demo_mode == daPy_demo_c::DEMO_UNK_23_e || demo_mode == daPy_demo_c::DEMO_UNK_14_e ||
demo_mode == daPy_demo_c::DEMO_UNK_17_e || demo_mode == daPy_demo_c::DEMO_UNK_24_e || demo_mode == daPy_demo_c::DEMO_UNK_7_e || demo_mode == daPy_demo_c::DEMO_UNK_15_e ||
demo_mode == daPy_demo_c::DEMO_UNK_21_e || demo_mode == daPy_demo_c::DEMO_UNK_22_e || demo_mode == daPy_demo_c::DEMO_UNK_6_e || demo_mode == daPy_demo_c::DEMO_UNK_8_e ||
demo_mode == daPy_demo_c::DEMO_CROUCH_e || demo_mode == daPy_demo_c::DEMO_UNK_18_e))
{
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
s16 prm2 = mDemo.getParam2();
@@ -911,7 +911,7 @@ void daAlink_c::endDemoMode() {
offNoResetFlg0(FLG0_UNK_100000);
dComIfGp_clearPlayerStatus0(0, 0x10);
- BOOL temp_r29 = mDemo.getDemoType() == 4;
+ BOOL temp_r29 = mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_START_e;
BOOL var_r0 = mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_14_e || mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_26_e;
mDemo.resetDemoType();
@@ -926,7 +926,7 @@ void daAlink_c::endDemoMode() {
mDemo.setParam2(0);
mDemo.setStick(1.0f);
- field_0x3184 = -1;
+ mAlinkStaffId = -1;
if (checkReinRide()) {
field_0x2fab &= ~0x8;
@@ -1470,7 +1470,7 @@ static int daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* pa
/* 801195C0-801195F8 113F00 0038+00 7/0 0/0 0/0 .text procDemoCommon__9daAlink_cFv */
int daAlink_c::procDemoCommon() {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
}
@@ -1906,7 +1906,7 @@ int daAlink_c::procCoOpenTreasure() {
}
if (checkAnmEnd(mUnderFrameCtrl)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
mLinkAcch.ClrWallNone();
mLinkAcch.OnLineCheck();
}
@@ -1967,7 +1967,7 @@ int daAlink_c::procCoUnequip() {
}
if (checkNoUpperAnime()) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
}
@@ -2179,7 +2179,7 @@ int daAlink_c::procCoGetItem() {
setSyncRidePos();
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
}
@@ -2266,11 +2266,11 @@ int daAlink_c::procCoGetItem() {
field_0x2f99 = 12;
if (mDemo.getParam1() == 1) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
} else if (mProcVar1.field_0x300a != 0) {
if (mDemo.getParam1() == 1 && checkModeFlg(0x400)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
if (mProcVar1.field_0x300a < 0) {
@@ -2281,7 +2281,7 @@ int daAlink_c::procCoGetItem() {
shape_angle.y = current.angle.y - mProcVar3.field_0x300e;
if (mDemo.getParam1() == 1) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
} else {
shape_angle.y =
@@ -2335,7 +2335,7 @@ int daAlink_c::procCoGetItem() {
}
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
item_partner_p->dead();
field_0x3198 = 1;
field_0x2f99 = 12;
@@ -2401,9 +2401,9 @@ int daAlink_c::procCoTurnBack() {
mProcVar2.field_0x300c = 1;
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (!checkWolf() && frameCtrl_p->getFrame() >= 29.0f) {
field_0x2f92 = 1;
field_0x2f93 = 6;
@@ -2512,7 +2512,7 @@ int daAlink_c::procDoorOpen() {
} else {
mLinkAcch.ClrWallNone();
mLinkAcch.OffLineCheckNone();
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
onModeFlg(1);
offModeFlg(0x4000);
@@ -2530,7 +2530,7 @@ int daAlink_c::procDoorOpen() {
}
}
} else {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
@@ -2586,7 +2586,7 @@ int daAlink_c::procCoLookWait() {
cLib_addCalcAngleS(&shape_angle.y, target_angle, 2, 0x800, 0x100);
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
}
@@ -2675,7 +2675,7 @@ int daAlink_c::procMonkeyMoveInit() {
/* 8011BD18-8011BD6C 116658 0054+00 1/0 0/0 0/0 .text procMonkeyMove__9daAlink_cFv */
int daAlink_c::procMonkeyMove() {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
if (!checkWolf()) {
setMonkeyMoveAnime();
@@ -2699,7 +2699,7 @@ int daAlink_c::procDemoBoomerangCatchInit() {
/* 8011BDF0-8011BE54 116730 0064+00 1/0 0/0 0/0 .text procDemoBoomerangCatch__9daAlink_cFv */
int daAlink_c::procDemoBoomerangCatch() {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
if (checkAnmEnd(mUnderFrameCtrl)) {
setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor);
@@ -2945,7 +2945,7 @@ int daAlink_c::procCoLookAround() {
}
if (checkAnmEnd(frame_ctrl)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (mProcVar3.field_0x300e != 0 && frame_ctrl->checkPass(5.0f)) {
voiceStart(Z2SE_AL_V_ENTRANCE);
}
@@ -3026,7 +3026,7 @@ int daAlink_c::procLookUp() {
field_0x2f99 = 4;
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
}
@@ -3057,7 +3057,7 @@ int daAlink_c::procLookUpToGetItem() {
setFaceBasicBck(0x133);
field_0x2f99 = 12;
} else if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
@@ -3090,7 +3090,7 @@ int daAlink_c::procHandPat() {
if (mProcVar2.field_0x300c != 0) {
if (checkAnmEnd(frameCtrl_p)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
if (mProcVar3.field_0x300e == 0) {
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f);
@@ -3238,7 +3238,7 @@ int daAlink_c::procCoNod() {
}
if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
@@ -3299,7 +3299,7 @@ int daAlink_c::procCoGlare() {
}
if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
if (!checkWolf() && frame_ctrl->getFrame() >= 24.0f) {
@@ -3331,7 +3331,7 @@ int daAlink_c::procGoatStopReady() {
}
if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
@@ -3376,7 +3376,7 @@ int daAlink_c::procCoGetReadySit() {
}
if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
@@ -3409,7 +3409,7 @@ int daAlink_c::procCoTwGateInit() {
/* 8011D7D4-8011D82C 118114 0058+00 1/0 0/0 0/0 .text procCoTwGate__9daAlink_cFv */
int daAlink_c::procCoTwGate() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
field_0x2f99 = 7;
@@ -3439,7 +3439,7 @@ int daAlink_c::procWolfSnowEscape() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (mProcVar3.field_0x300e != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
}
@@ -3501,7 +3501,7 @@ int daAlink_c::procZoraMoveInit() {
/* 8011DB9C-8011DDD4 1184DC 0238+00 1/0 0/0 0/0 .text procZoraMove__9daAlink_cFv */
int daAlink_c::procZoraMove() {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
fopAc_ac_c* temp_r29 = dComIfGp_event_getPt1();
field_0x2f99 = 0x60;
@@ -3556,7 +3556,7 @@ int daAlink_c::procLookAroundTurn() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (checkAnmEnd(frame_ctrl)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (frame_ctrl->checkPass(95.0f)) {
voiceStart(Z2SE_AL_V_D_MHOP);
}
@@ -3640,7 +3640,7 @@ int daAlink_c::procTradeItemOut() {
if (mProcVar3.field_0x300e != 0) {
if (mDemo.getParam0() == 1) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this);
if (item_partner_p != NULL) {
@@ -3661,7 +3661,7 @@ int daAlink_c::procTradeItemOut() {
}
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
}
}
@@ -3789,9 +3789,9 @@ int daAlink_c::procSwordReady() {
}
mProcVar2.field_0x300c = 1;
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (frame_ctrl->checkPass(10.0f)) {
voiceStart(Z2SE_AL_V_OUGI_KAMAE);
}
@@ -3895,7 +3895,7 @@ int daAlink_c::procCutFastReadyInit() {
/* 8011EB8C-8011EBDC 1194CC 0050+00 1/0 0/0 0/0 .text procCutFastReady__9daAlink_cFv */
int daAlink_c::procCutFastReady() {
if (checkAnmEnd(&mUpperFrameCtrl[2])) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
@@ -3922,11 +3922,11 @@ int daAlink_c::procMasterSwordStick() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (mProcVar2.field_0x300c != 0) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (checkAnmEnd(frame_ctrl)) {
mProcVar2.field_0x300c = 1;
setSingleAnimeBaseMorf(ANM_DEMO_MASTER_SWORD_WAIT, -1.0f);
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (frame_ctrl->getFrame() >= 32.0f) {
field_0x2f93 = 5;
}
@@ -3953,7 +3953,7 @@ int daAlink_c::procMasterSwordPull() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (checkAnmEnd(frame_ctrl)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (frame_ctrl->getFrame() >= 36.0f) {
field_0x2f93 = 10;
} else if (frame_ctrl->getFrame() >= 9.0f) {
@@ -4514,14 +4514,14 @@ int daAlink_c::procCoWarp() {
return commonFallInit(1);
}
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
return checkWaitAction();
}
} else if (mProcVar3.field_0x300e != 0) {
skipPortalObjWarp();
} else {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
} else if (mProcVar2.field_0x300c == 0 && !checkNoResetFlg0(FLG0_PLAYER_NO_DRAW)) {
cXyz sp10(current.pos.x, current.pos.y + (field_0x347c - -0.5f) * 30.0f, current.pos.z);
@@ -4548,7 +4548,7 @@ int daAlink_c::commonGrabPutInit() {
if (mProcID != PROC_GRAB_STAND &&
(mProcID != PROC_WOLF_GRAB_PUT || !(mUnderFrameCtrl[0].getFrame() < field_0x3478)))
{
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
}
}
diff --git a/src/d/actor/d_a_alink_grab.inc b/src/d/actor/d_a_alink_grab.inc
index 853aa79762..040129eb74 100644
--- a/src/d/actor/d_a_alink_grab.inc
+++ b/src/d/actor/d_a_alink_grab.inc
@@ -406,7 +406,7 @@ void daAlink_c::freeGrabItem() {
fopAc_ac_c* temp_r3 = mGrabItemAcKeep.getActor();
if (temp_r3 != NULL) {
- if (dComIfGp_event_runCheck() || mDemo.getDemoType() == 5) {
+ if (dComIfGp_event_runCheck() || mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SPECIAL_e) {
fopAcM_OnStatus(temp_r3, 0x800);
}
@@ -1176,7 +1176,7 @@ int daAlink_c::procGrabStand() {
if (checkAnmEnd(temp_r30)) {
if (mDemo.getDemoMode() == 0xD) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
@@ -1558,7 +1558,7 @@ int daAlink_c::procFmChainStrongPull() {
if (checkAnmEnd(&mUnderFrameCtrl[0])) {
if (mDemo.getDemoMode() == 0x43) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
mNowAnmPackUpper[2].setRatio(1.0f);
checkNextAction(0);
diff --git a/src/d/actor/d_a_alink_guard.inc b/src/d/actor/d_a_alink_guard.inc
index 6270523409..908b6f038c 100644
--- a/src/d/actor/d_a_alink_guard.inc
+++ b/src/d/actor/d_a_alink_guard.inc
@@ -478,7 +478,7 @@ int daAlink_c::procGuardAttack() {
if (checkAnmEnd(temp_r30)) {
if (mDemo.getDemoMode() == 0x4B) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
diff --git a/src/d/actor/d_a_alink_horse.inc b/src/d/actor/d_a_alink_horse.inc
index 6e61d67764..6b42f8d068 100644
--- a/src/d/actor/d_a_alink_horse.inc
+++ b/src/d/actor/d_a_alink_horse.inc
@@ -2977,7 +2977,7 @@ int daAlink_c::procHorseGetKey() {
setSyncRidePos();
if (checkAnmEnd(frameCtrl_p)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (frameCtrl_p->getFrame() >= 34.0f) {
field_0x2f92 = 254;
field_0x2f93 = 254;
@@ -3013,7 +3013,7 @@ int daAlink_c::procHorseLookDown() {
setSyncRidePos();
if (checkAnmEnd(mUnderFrameCtrl)) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
}
diff --git a/src/d/actor/d_a_alink_kandelaar.inc b/src/d/actor/d_a_alink_kandelaar.inc
index 93ec1be407..afea666b31 100644
--- a/src/d/actor/d_a_alink_kandelaar.inc
+++ b/src/d/actor/d_a_alink_kandelaar.inc
@@ -419,7 +419,7 @@ int daAlink_c::procKandelaarSwing() {
if (frameCtrl_p->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x27) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
diff --git a/src/d/actor/d_a_alink_sumou.inc b/src/d/actor/d_a_alink_sumou.inc
index e7d5259204..49f3f884fd 100644
--- a/src/d/actor/d_a_alink_sumou.inc
+++ b/src/d/actor/d_a_alink_sumou.inc
@@ -926,7 +926,7 @@ int daAlink_c::procSumouShiko() {
field_0x2f93 = 0xFE;
}
} else {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
return 1;
diff --git a/src/d/actor/d_a_alink_whistle.inc b/src/d/actor/d_a_alink_whistle.inc
index 92685a89a8..c7351f1bda 100644
--- a/src/d/actor/d_a_alink_whistle.inc
+++ b/src/d/actor/d_a_alink_whistle.inc
@@ -344,7 +344,7 @@ int daAlink_c::procHawkCatchInit() {
/* 80112220-80112278 10CB60 0058+00 1/0 0/0 0/0 .text procHawkCatch__9daAlink_cFv */
int daAlink_c::procHawkCatch() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
procHawkSubjectInit();
}
@@ -381,7 +381,7 @@ int daAlink_c::procHawkSubject() {
}
}
} else if (checkEventRun()) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
fopAc_ac_c* temp_r29 = field_0x280c.getActor();
setGrassCancelStatus(0x12);
diff --git a/src/d/actor/d_a_alink_wolf.inc b/src/d/actor/d_a_alink_wolf.inc
index e0cb749e10..9047ae3662 100644
--- a/src/d/actor/d_a_alink_wolf.inc
+++ b/src/d/actor/d_a_alink_wolf.inc
@@ -2471,7 +2471,7 @@ int daAlink_c::procWolfTiredWait() {
/* 8012D050-8012D104 127990 00B4+00 3/2 0/0 0/0 .text procWolfMidnaRideShockInit__9daAlink_cFv */
int daAlink_c::procWolfMidnaRideShockInit() {
if (!checkWolf()) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return procWaitInit();
}
@@ -2495,7 +2495,7 @@ int daAlink_c::procWolfMidnaRideShock() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x32) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextActionWolf(0);
}
@@ -2858,7 +2858,7 @@ int daAlink_c::procWolfWaitTurn() {
if (var_r31 == 0) {
if (checkEventRun()) {
if (mDemo.getDemoMode() == 5) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextActionWolf(0);
}
@@ -2996,7 +2996,7 @@ int daAlink_c::procWolfSideStepLand() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x10) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextActionWolf(0);
}
@@ -3107,7 +3107,7 @@ int daAlink_c::procWolfBackJumpLand() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x10) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextActionWolf(0);
}
@@ -5871,7 +5871,7 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2,
if (getMidnaActor() != NULL) {
getMidnaActor()->onForceMorfCancel();
}
- if (mDemo.getDemoType() != 1) {
+ if (mDemo.getDemoType() != daPy_demo_c::DEMO_TYPE_TOOL_e) {
mProcVar5.field_0x3012 = 1;
}
} else {
@@ -5891,7 +5891,7 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2,
} else if (param_0 == -5 && mDemo.getParam1() > 0) {
mProcVar0.field_0x3008 = mDemo.getParam1();
var_f31 = 0.0f;
- } else if (param_0 == -2 && mDemo.getDemoType() == 1) {
+ } else if (param_0 == -2 && mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_TOOL_e) {
mProcVar0.field_0x3008 = 0x1E;
var_f31 = 0.0f;
} else {
@@ -6008,7 +6008,7 @@ int daAlink_c::procWolfLargeDamageUp() {
}
if (mDemo.getDemoMode() == 0x1B || mDemo.getDemoMode() == 9) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextActionWolf(0);
}
@@ -6376,7 +6376,7 @@ int daAlink_c::procWolfLieMove() {
}
if (mDemo.getDemoMode() == 0x2C) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
cM3dGPla sp70;
@@ -7872,7 +7872,7 @@ int daAlink_c::procWolfWaitAttack() {
resetCombo(1);
if (mDemo.getDemoMode() == 0x2B) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else if (mProcVar0.field_0x3008 > 0) {
if (!(frameCtrl_p->getFrame() > field_0x3478) || !checkNextActionWolf(1)) {
mProcVar0.field_0x3008--;
@@ -8684,7 +8684,7 @@ int daAlink_c::procWolfGrabPut() {
if (checkAnmEnd(frameCtrl_p)) {
if (mDemo.getDemoMode() == 13) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextActionWolf(0);
}
@@ -8694,7 +8694,7 @@ int daAlink_c::procWolfGrabPut() {
} else {
if (actor_p == NULL) {
if (mDemo.getDemoMode() == 13) {
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
return 1;
} else {
return checkNextActionWolf(0);
@@ -9595,7 +9595,7 @@ int daAlink_c::procWolfGetSmell() {
mDemo.setSystemDemoType();
} else if (mDemo.getParam0() == 0) {
dComIfGs_onEventBit(field_0x319c);
- dComIfGp_evmng_cutEnd(field_0x3184);
+ dComIfGp_evmng_cutEnd(mAlinkStaffId);
if (kytag3_p != NULL) {
kytag3_p->field_0x588 = 0;
diff --git a/src/d/actor/d_a_e_pm.cpp b/src/d/actor/d_a_e_pm.cpp
index dc4910a931..c97c161adb 100644
--- a/src/d/actor/d_a_e_pm.cpp
+++ b/src/d/actor/d_a_e_pm.cpp
@@ -1341,7 +1341,7 @@ void daE_PM_c::DemoBossStart2() {
actor_status &= ~0x100;
}
if (mSecondEncounter) {
- player->mDemo.setDemoType(3);
+ player->mDemo.setDemoType(daPy_demo_c::DEMO_TYPE_ORIGINAL_e);
player->mDemo.setParam0(0);
player->mDemo.setDemoMode(4);
player->mDemo.setParam0(0);
diff --git a/src/d/d_debug_camera.cpp b/src/d/d_debug_camera.cpp
new file mode 100644
index 0000000000..bb09f93724
--- /dev/null
+++ b/src/d/d_debug_camera.cpp
@@ -0,0 +1,1777 @@
+#if DEBUG
+
+#include "d/d_debug_camera.h"
+#include "d/d_event_data.h"
+#include "d/d_debug_viewer.h"
+#include "d/d_com_inf_game.h"
+#include "f_ap/f_ap_game.h"
+#include "JSystem/JUtility/JUTDbPrint.h"
+#include "JSystem/JUtility/JUTReport.h"
+
+namespace zevwork {
+ const int CutMaxNum = 32;
+ const int DataMaxNum = 0x100;
+ const int FDataMaxNum = 0x200;
+ const int IDataMaxNum = 0x100;
+ const int SDataMaxNum = 0x100;
+
+ const int WorkSize = (sizeof(event_binary_data_header) - 8) +
+ sizeof(dEvDtEvent_DBG_c) +
+ sizeof(dEvDtStaff_DBG_c) +
+ sizeof(dEvDtStaff_DBG_c) +
+ (sizeof(dEvDtCut_c) * CutMaxNum) +
+ (sizeof(dEvDtData_DBG_c) * DataMaxNum) +
+ (sizeof(f32) * FDataMaxNum) +
+ (sizeof(int) * IDataMaxNum) +
+ (sizeof(char) * SDataMaxNum);
+ u8* WorkBuffer;
+};
+
+dDbgCamera_c dDbgCamera;
+
+dDbgCamKey_c::~dDbgCamKey_c() {}
+
+namespace {
+cXyz rel2wld(cXyz* param_0, fopAc_ac_c* actor) {
+ if (actor == NULL) {
+ OS_REPORT("debug camera: error: actor NULL in rel2wld() \n");
+ return cXyz::Zero;
+ }
+
+ cSGlobe sp18(*param_0);
+ sp18.U(cSAngle(actor->shape_angle.y) + sp18.U());
+
+ return actor->attention_info.position + sp18.Xyz();
+}
+
+cXyz wld2rel(cXyz* param_0, fopAc_ac_c* actor) {
+ if (actor == NULL) {
+ OS_REPORT("debug camera: error: actor NULL in wld2rel() \n");
+ return cXyz::Zero;
+ }
+
+ cSGlobe sp18(*param_0 - actor->attention_info.position);
+ sp18.U(sp18.U() - cSAngle(actor->shape_angle.y));
+
+ return sp18.Xyz();
+}
+
+inline fpc_ProcID ActorID(fopAc_ac_c* actor) {
+ return fopAcM_GetID(actor);
+}
+
+inline fopAc_ac_c* Actor(fpc_ProcID id) {
+ return fopAcM_SearchByID(id);
+}
+}
+
+dDbgCamSetup_c::dDbgCamSetup_c() {
+ mpDbgCam = NULL;
+
+ mMoveSpeed = 20.0f;
+ mMoveTurbo = 400.0f;
+ mFovyTick = 2.5;
+ mMoveParallelShift = 10.0f;
+ mRotateSpeed = 20.0f;
+ mTransAccel = 0.1f;
+ mRotAccel = 0.01;
+ mMoveMax = 100.0f;
+ mUnkMax = 2000.0f;
+ mRotateMax = 30.0f;
+
+ mCenterCross = 400.0f;
+ mCenterBall = 20.0f;
+ mCenterMarker = 1;
+
+ mActorSrchType = 0;
+ mActorID = fpcM_ERROR_PROCESS_ID_e;
+
+ mFlag = 0;
+ mFlag |= (u16)0x8000;
+
+ mPosX = 40;
+ mPosY = 320;
+
+ mGazePoint.x = 0.0f;
+ mGazePoint.y = 0.0f;
+ mGazePoint.z = 0.0f;
+
+ mPerspective.x = 0.0f;
+ mPerspective.y = 0.0f;
+ mPerspective.z = 0.0f;
+
+ mAngle = 0.0f;
+
+ field_0x68.set(0.0f, 1.0f, 0.0f);
+}
+
+void dDbgCamSetup_c::Init(dDbgCamera_c* i_dbgCamera) {
+ // "Debug Camera"
+ m_childNo = mDoHIO_CREATE_CHILD("デバッグカメラ", this);
+ mpDbgCam = i_dbgCamera;
+}
+
+void dDbgCamSetup_c::Finish() {
+ mDoHIO_DELETE_CHILD(m_childNo);
+}
+
+f32 dDbgCamSetup_c::Translate(f32 param_0) {
+ f32 var_f31 = mMoveSpeed * param_0;
+
+ f32 var_f30;
+ if (var_f31 > mMoveMax) {
+ var_f30 = mMoveMax;
+ } else {
+ var_f30 = var_f31;
+ }
+
+ return var_f30;
+}
+
+s16 dDbgCamSetup_c::Rotate(f32 param_0) {
+ f32 var_f31 = mRotateSpeed * param_0;
+
+ f32 var_f30;
+ if (var_f31 > mRotateMax) {
+ var_f30 = mRotateMax;
+ } else {
+ var_f30 = var_f31;
+ }
+
+ return cAngle::d2s(var_f30);
+}
+
+f32 dDbgCamSetup_c::FlatMove(f32 param_0) {
+ f32 var_f31 = mMoveParallelShift * param_0;
+
+ f32 var_f30;
+ if (var_f31 > mMoveMax) {
+ var_f30 = mMoveMax;
+ } else {
+ var_f30 = var_f31;
+ }
+
+ return var_f30;
+}
+
+f32 dDbgCamSetup_c::Turbo(f32 param_0) {
+ f32 var_f31 = mMoveTurbo * param_0;
+
+ f32 var_f30;
+ if (var_f31 > mUnkMax) {
+ var_f30 = mUnkMax;
+ } else {
+ var_f30 = var_f31;
+ }
+
+ return var_f30;
+}
+
+static int search_actor(fopAc_ac_c* actor, void* data) {
+ dDbgCamSetup_c* camsetup = (dDbgCamSetup_c*)data;
+
+ cXyz sp18 = dDbgCamera.Center() - actor->attention_info.position;
+ if (sp18.abs() < camsetup->mActorSrchRange) {
+ camsetup->mActorSrchRange = sp18.abs();
+ camsetup->mActorID = ActorID(actor);
+ }
+
+ return 0;
+}
+
+void dDbgCamSetup_c::genMessage(JORMContext* mctx) {
+ mctx->genLabel("- カメラ位置表示", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genCheckBox(" 現在位置", &mFlag, 4, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genCheckBox(" (補正前)", &mFlag, 8, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("- ヒットポリゴン表示", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genCheckBox(" 壁あたり", &mFlag, 0x10, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genLabel("- 移動", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" スピード", &mMoveSpeed, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 最大", &mMoveMax, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" ターボ", &mMoveTurbo, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 最大", &mUnkMax, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 平行移動", &mMoveParallelShift, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 加速度", &mTransAccel, 0.0f, 1.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genLabel("- 回転", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" スピード", &mRotateSpeed, 0.0f, 90.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 最大", &mRotateMax, 0.0f, 90.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 加速度", &mRotAccel, 0.0f, 1.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genLabel("- 画角", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" スピード", &mFovyTick, 0.0f, 90.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genLabel("- センターマーカ", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 線の長さ", &mCenterCross, 0.0f, 4000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 球の大きさ", &mCenterBall, 0.0f, 4000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->startRadioButton("表示", &mCenterMarker, 0, NULL, 0xFFFF, 0xFFFF, 0x100, 0xFFFF);
+ mctx->genRadioButtonItem("常に表示", 3, 0, 0xFFFF, 0xFFFF, 0x80, 0x10);
+ mctx->genRadioButtonItem("動くと表示", 1, 0, 0xFFFF, 0xFFFF, 0x80, 0x10);
+ mctx->genRadioButtonItem("常に非表示", 0, 0, 0xFFFF, 0xFFFF, 0x80, 0x10);
+ mctx->endRadioButton();
+
+ mctx->genLabel("- 情報表示", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genCheckBox(" 有効", &mFlag, 0x8000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 表示位置 X", &mPosX, 0, 640, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" Y", &mPosY, 0, 480, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genLabel("- 座標系", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->startRadioButton("基準", &mActorSrchType, 0, NULL, 0xFFFF, 0xFFFF, 0x100, 0xFFFF);
+ mctx->genRadioButtonItem("絶対座標", 0, 0, 0xFFFF, 0xFFFF, 0x80, 0x10);
+ mctx->genRadioButtonItem("プレイヤー相対座標", 1, 0, 0xFFFF, 0xFFFF, 0x80, 0x10);
+ mctx->genRadioButtonItem("指定アクター相対座標", 2, 0, 0xFFFF, 0xFFFF, 0x80, 0x10);
+ mctx->endRadioButton();
+ mctx->genButton(" 更新 ", 0x66, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("- イベント", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genButton(" 保存 ", 0x68, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+
+ mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genLabel("- 座標指定", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 注視点 X", &mGazePoint.x, -100000.0f, 100000.0f, 0, NULL, 0xFFFF, 0xFFFF,
+ 0x200, 0x18);
+ mctx->genSlider("     Y", &mGazePoint.y, -100000.0f, 100000.0f, 0, NULL, 0xFFFF,
+ 0xFFFF, 0x200, 0x18);
+ mctx->genSlider("     Z", &mGazePoint.z, -100000.0f, 100000.0f, 0, NULL, 0xFFFF,
+ 0xFFFF, 0x200, 0x18);
+ mctx->genButton(" 更新 ", 0x69, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 視点   X", &mPerspective.x, -100000.0f, 100000.0f, 0, NULL, 0xFFFF,
+ 0xFFFF, 0x200, 0x18);
+ mctx->genSlider("     Y", &mPerspective.y, -100000.0f, 100000.0f, 0, NULL,
+ 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider("     Z", &mPerspective.z, -100000.0f, 100000.0f, 0, NULL,
+ 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genButton(" 更新 ", 0x6A, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 画角   ", &mAngle, 0.0f, 180.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genButton(" 更新 ", 0x6B, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+}
+
+void dDbgCamera_c::InitlChk() {
+ mLchkNum = 0;
+}
+
+int dDbgCamera_c::SetlChk(dBgS_LinChk lchk) {
+ if (mLchkNum <= 1) {
+ mLchk[mLchkNum] = lchk;
+ return ++mLchkNum;
+ }
+
+ return -1;
+}
+
+void dDbgCamSetup_c::listenPropertyEvent(const JORPropertyEvent* property) {
+ int var_r27 = 0;
+ JORReflexible::listenPropertyEvent(property);
+ JORMContext* mctx = attachJORMContext(8);
+
+ switch ((u32)property->id) {
+ case 0x66:
+ mActorSrchRange = 10000000.0f;
+ mActorID = fpcM_ERROR_PROCESS_ID_e;
+
+ switch (mActorSrchType) {
+ case 1: {
+ fopAc_ac_c* player = dComIfGp_getPlayer(dComIfGp_getCameraPlayer1ID(0));
+ mActorID = ActorID(player);
+ break;
+ }
+ case 2:
+ fopAcIt_Executor((fopAcIt_ExecutorFunc)search_actor, this);
+ break;
+ }
+ break;
+ case 0x68:
+ mpDbgCam->WriteZevData();
+ break;
+ case 0x69:
+ if (mActorID == fpcM_ERROR_PROCESS_ID_e) {
+ mpDbgCam->Center(mGazePoint);
+ } else {
+ mpDbgCam->Center(wld2rel(&mGazePoint, Actor(mActorID)));
+ }
+ break;
+ case 0x6A:
+ if (mActorID == fpcM_ERROR_PROCESS_ID_e) {
+ mpDbgCam->Eye(mPerspective);
+ } else {
+ mpDbgCam->Eye(wld2rel(&mPerspective, Actor(mActorID)));
+ }
+ break;
+ case 0x6B:
+ mpDbgCam->Fovy(mAngle);
+ break;
+ }
+}
+
+int dDbgCamera_c::moveTool() {
+ f32 substick_x = mDoCPd_c::getSubStickX3D(mPadNo);
+ f32 substick_y = mDoCPd_c::getSubStickY(mPadNo);
+ int sp4C = field_0xc00;
+
+ if (mDoCPd_c::getHoldA(mPadNo)) {
+ if (field_0xc0c != 0) {
+ field_0xc00 = 6;
+ } else {
+ field_0xc00 = 0;
+ }
+ } else if (mDoCPd_c::getHoldB(mPadNo)) {
+ if (field_0xc0c != 0) {
+ field_0xc00 = 7;
+ } else {
+ field_0xc00 = 1;
+ }
+ } else if (mDoCPd_c::getSubStickValue(mPadNo) > 0.001f) {
+ field_0xc00 = 3;
+ } else {
+ field_0xc00 = 18;
+ }
+
+ if (field_0xc00 != 18) {
+ if (field_0xc00 != sp4C) {
+ field_0xc10 = 0.1f;
+ } else {
+ field_0xc10 += field_0xc10 * mCamSetup.TransAccel();
+ }
+ } else {
+ field_0xc10 = 0.0f;
+ }
+
+ int sp48 = field_0xc04;
+ f32 stick_x = mDoCPd_c::getStickX3D(mPadNo);
+ f32 stick_y = mDoCPd_c::getStickY(mPadNo);
+
+ if (mDoCPd_c::getTrigY(mPadNo)) {
+ field_0xc04 = 16;
+ } else if (mDoCPd_c::getTrigX(mPadNo)) {
+ field_0xc04 = 17;
+ } else if (mDoCPd_c::getTrigLeft(mPadNo)) {
+ if (field_0x54 == 0) {
+ field_0xc04 = 4;
+ } else if (field_0x54 == 1) {
+ field_0xc04 = 10;
+ } else if (field_0x54 == 2) {
+ field_0xc04 = 14;
+ }
+ field_0xc1c = 0;
+ } else if (mDoCPd_c::getHoldLeft(mPadNo)) {
+ if (field_0xc1c++ > 20) {
+ if (field_0x54 == 0) {
+ field_0xc04 = 4;
+ } else if (field_0x54 == 1) {
+ field_0xc04 = 10;
+ } else if (field_0x54 == 2) {
+ field_0xc04 = 14;
+ }
+ } else {
+ field_0xc04 = 18;
+ }
+ } else if (mDoCPd_c::getTrigRight(mPadNo)) {
+ if (field_0x54 == 0) {
+ field_0xc04 = 5;
+ } else if (field_0x54 == 1) {
+ field_0xc04 = 11;
+ } else if (field_0x54 == 2) {
+ field_0xc04 = 15;
+ }
+ field_0xc1c = 0;
+ } else if (mDoCPd_c::getHoldRight(mPadNo)) {
+ if (field_0xc1c++ > 20) {
+ if (field_0x54 == 0) {
+ field_0xc04 = 5;
+ } else if (field_0x54 == 1) {
+ field_0xc04 = 11;
+ } else if (field_0x54 == 2) {
+ field_0xc04 = 15;
+ }
+ } else {
+ field_0xc04 = 18;
+ }
+ } else if (mDoCPd_c::getStickValue(mPadNo) > 0.001f) {
+ field_0xc04 = 8;
+ } else {
+ field_0xc04 = 18;
+ }
+
+ if (field_0xc04 != 18) {
+ if (field_0xc04 != sp48) {
+ field_0xc14 = 0.1f;
+ } else {
+ field_0xc14 += field_0xc14 * mCamSetup.RotAccel();
+ }
+ } else {
+ field_0xc14 = 0.0f;
+ }
+
+ switch (field_0xc04) {
+ case 12:
+ if (mRunKey.mAction == dDbgCam_KeyAction_FIXEDFRM) {
+ mRunKey.mAction = dDbgCam_KeyAction_NOACTION;
+ } else {
+ mRunKey.mAction--;
+ }
+ break;
+ case 13:
+ if (mRunKey.mAction == dDbgCam_KeyAction_NOACTION) {
+ mRunKey.mAction = dDbgCam_KeyAction_FIXEDFRM;
+ } else {
+ mRunKey.mAction++;
+ }
+ break;
+ case 14:
+ if (field_0x58 > 0) {
+ field_0x58--;
+ if (mActionKey[field_0x58] != '-') {
+ mRunKey = mKeys[field_0x58];
+ if (mKeys[field_0x58].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ fopAc_ac_c* sp3C = Actor(mRunKey.mActorInfo.id);
+ if (sp3C != NULL) {
+ mRunKey.mCenter = rel2wld(&mKeys[field_0x58].mCenter, sp3C);
+ mRunKey.mEye = rel2wld(&mKeys[field_0x58].mEye, sp3C);
+ }
+ }
+ }
+ }
+ break;
+ case 15:
+ if (field_0x58 < 31) {
+ field_0x58++;
+ if (mActionKey[field_0x58] != '-') {
+ mRunKey = mKeys[field_0x58];
+ if (mKeys[field_0x58].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ fopAc_ac_c* sp38 = Actor(mRunKey.mActorInfo.id);
+ if (sp38 != NULL) {
+ mRunKey.mCenter = rel2wld(&mKeys[field_0x58].mCenter, sp38);
+ mRunKey.mEye = rel2wld(&mKeys[field_0x58].mEye, sp38);
+ }
+ }
+ }
+ }
+ break;
+ case 16:
+ if (mRunKey.mAction == dDbgCam_KeyAction_NOACTION) {
+ OSReport(" <data name=\"Center\" type=\"xyz\">");
+ OSReport("%.3f %.3f %.3f</data>\n", mRunKey.mCenter.x, mRunKey.mCenter.y, mRunKey.mCenter.z);
+ OSReport(" <data name=\"Eye\" type=\"xyz\">");
+ OSReport("%.3f %.3f %.3f</data>\n", mRunKey.mEye.x, mRunKey.mEye.y, mRunKey.mEye.z);
+ OSReport(" <data name=\"Fovy\" type=\"float\">");
+ OSReport("%.3f</data>\n", mRunKey.mFovy);
+ OSReport(" <data name=\"Bank\" type=\"float\">");
+ OSReport("%.3f</data>\n", mRunKey.mBank);
+ }
+
+ if (mActionKey[field_0x58] != '-' || mRunKey.mAction == dDbgCam_KeyAction_NOACTION) {
+ int var_r27 = field_0x58;
+ for (; var_r27 < 31; var_r27++) {
+ if (mActionKey[var_r27] == '-') {
+ break;
+ }
+ }
+
+ while (var_r27 > field_0x58) {
+ mActionKey[var_r27] = mActionKey[var_r27 - 1];
+ mKeys[var_r27] = mKeys[var_r27 - 1];
+ var_r27--;
+ }
+ }
+
+ mActionKey[field_0x58] = ActionSymbol(mRunKey.mAction);
+ mKeys[field_0x58] = mRunKey;
+
+ if (mKeys[field_0x58].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ fopAc_ac_c* actor = Actor(mRunKey.mActorInfo.id);
+ if (actor != NULL) {
+ mKeys[field_0x58].mCenter = wld2rel(&mRunKey.mCenter, actor);
+ mKeys[field_0x58].mEye = wld2rel(&mRunKey.mEye, actor);
+ }
+ }
+
+ if (mActionKey[field_0x58 + 1] == '-') {
+ field_0x58++;
+ }
+ break;
+ case 17:
+ if (mActionKey[field_0x58] != '-' && (mActionKey[field_0x58 + 1] != '-' || mRunKey.mAction == dDbgCam_KeyAction_NOACTION)) {
+ int var_r29 = field_0x58 + 1;
+ for (; var_r29 < 33; var_r29++) {
+ if (var_r29 == 0x20) {
+ mActionKey[var_r29 - 1] = '-';
+ mKeys[var_r29 - 1] = PlaneKey();
+ } else {
+ mActionKey[var_r29 - 1] = mActionKey[var_r29];
+ mKeys[var_r29 - 1] = mKeys[var_r29];
+ }
+
+ if (mActionKey[var_r29] == '-') {
+ break;
+ }
+ }
+ } else {
+ mActionKey[field_0x58] = '-';
+ mKeys[field_0x58] = PlaneKey();
+ }
+
+ mRunKey.mCenter = mKeys[field_0x58].mCenter;
+ break;
+ }
+
+ if (mCmdMode == 3) {
+ fopAc_ac_c* sp2C = dComIfGp_getPlayer(0);
+ /* if (this->unk730 != 0x3E7) {
+ &field_0x704 = &sp2C->unk558
+ this->unk730 = 0x3E7;
+ } else {
+ (sp15C, (Vec* ) &sp2C->unk558);
+ &mRunKey.mCenter += sp15C
+ &field_0x704 = &sp2C->unk558
+ } */
+ } else {
+ // this->unk730 = 3;
+ }
+
+ cXyz* var_r28;
+ cXyz* sp30;
+ f32 temp_f31;
+ f32 var_f30;
+ f32 var_f29;
+ if (field_0xc08 != 0) {
+ var_r28 = &mRunKey.mCenter;
+ sp30 = &mRunKey.mEye;
+ var_f30 = -1.0f;
+ var_f29 = 1.0f;
+ } else {
+ var_r28 = &mRunKey.mEye;
+ sp30 = &mRunKey.mCenter;
+ var_f30 = 1.0f;
+ var_f29 = -1.0f;
+ }
+
+ field_0x44.Val(*sp30 - *var_r28);
+
+ switch (field_0xc00) {
+ case 2:
+ *var_r28 = *var_r28 + (field_0x44.Norm() * mCamSetup.Turbo(field_0xc10 * var_f30));
+
+ if (field_0xc0c != 0) {
+ *var_r28 = *var_r28 + (field_0x44.Norm() * mCamSetup.Turbo(field_0xc10 * var_f30));
+ }
+ break;
+ case 0:
+ *var_r28 = *var_r28 + (field_0x44.Norm() * mCamSetup.Translate(field_0xc10 * var_f30));
+ break;
+ case 1:
+ *var_r28 = *var_r28 - (field_0x44.Norm() * mCamSetup.Translate(field_0xc10 * var_f30));
+ break;
+ case 3: {
+ f32 temp_f26 = fabsf(substick_x);
+ f32 temp_f1_2 = fabsf(substick_y);
+
+ if (field_0xc0c == 0 || temp_f26 < temp_f1_2) {
+ cXyz sp1B0(0.0f, 1.0f, 0.0f);
+ *var_r28 = *var_r28 + (sp1B0 * mCamSetup.FlatMove(field_0xc10 * substick_y));
+ }
+
+ if (field_0xc0c == 0 || temp_f26 > temp_f1_2) {
+ cSGlobe sp58(1.0f, cSAngle::_0, field_0x44.U() + cSAngle::_90);
+ temp_f31 = var_f30 * (field_0xc10 * substick_x);
+ *var_r28 = *var_r28 - (sp58.Xyz() * mCamSetup.FlatMove(temp_f31));
+ }
+ break;
+ }
+ case 6: {
+ temp_f31 = field_0x44.R();
+ field_0x44.R(temp_f31 - (0.1f * (temp_f31 * field_0xc10)));
+
+ if (field_0x44.R() < 10.0f) {
+ field_0x44.R(10.0f);
+ }
+ break;
+ }
+ case 7:
+ temp_f31 = field_0x44.R();
+ field_0x44.R(temp_f31 + (0.1f * (temp_f31 * field_0xc10)));
+ break;
+ }
+
+ if (mRunKey.mActorInfo.id != mCamSetup.mActorID) {
+ fopAc_ac_c* actor = Actor(mCamSetup.mActorID);
+ if (actor != NULL) {
+ mRunKey.mActorInfo.id = mCamSetup.mActorID;
+ fopAcM_getNameString(actor, mRunKey.mActorInfo.name);
+ } else {
+ mRunKey.mActorInfo.id = mCamSetup.mActorID = fpcM_ERROR_PROCESS_ID_e;
+ }
+ }
+
+ u8 sp8 = 1;
+ switch (field_0xc04) {
+ case 4:
+ mRunKey.mFovy -= 0.1f * mCamSetup.FovyTick();
+ if (mRunKey.mFovy < 1.0f) {
+ mRunKey.mFovy = 1.0f;
+ }
+ break;
+ case 5:
+ mRunKey.mFovy += 0.1f * mCamSetup.FovyTick();
+ if (mRunKey.mFovy > 179.0f) {
+ mRunKey.mFovy = 179.0f;
+ }
+ break;
+ case 10:
+ mRunKey.mBank += cDegree(mCamSetup.FovyTick()) * 0.1f;
+ break;
+ case 11:
+ mRunKey.mBank -= cDegree(mCamSetup.FovyTick()) * 0.1f;
+ break;
+ case 8:
+ s16 temp_r26 = mCamSetup.Rotate(var_f29 * (stick_x * field_0xc14));
+ field_0x44.U(field_0x44.U() + temp_r26);
+
+ temp_r26 = mCamSetup.Rotate(var_f29 * (stick_y * field_0xc14));
+ field_0x44.V(field_0x44.V() + temp_r26);
+ }
+
+ if (sp8 != 0) {
+ *sp30 = *var_r28 + field_0x44.Xyz();
+ }
+
+ cSGlobe sp50(mRunKey.mEye - mRunKey.mCenter);
+ mUp.set(0.0f, 1.0f, 0.0f);
+ return 1;
+}
+
+int dDbgCamera_c::cmdTool() {
+ if (mDoCPd_c::getTrigRight(mPadNo)) {
+ if (mCmdMode >= 3) {
+ mCmdMode = 0;
+ } else {
+ mCmdMode++;
+ }
+ } else if (mDoCPd_c::getTrigLeft(mPadNo)) {
+ if (mCmdMode <= 0) {
+ mCmdMode = 3;
+ } else {
+ mCmdMode--;
+ }
+ }
+
+ if (!mIsPlaying) {
+ switch (mCmdMode) {
+ case 1:
+ if (mDoCPd_c::getTrigA(mPadNo)) {
+ mIsPlaying = true;
+ field_0x704.field_0x0 = 0;
+ field_0x704.field_0x4 = 0;
+ makeZevData();
+ }
+ break;
+ case 2:
+ if (mDoCPd_c::getTrigA(mPadNo)) {
+ printZevData();
+ }
+ break;
+ case 0:
+ if (mDoCPd_c::getTrigA(mPadNo)) {
+ mCamSetup.mActorSrchRange = 10000000.0f;
+ mCamSetup.mActorID = fpcM_ERROR_PROCESS_ID_e;
+ fopAcIt_Executor((fopAcIt_ExecutorFunc)search_actor, &mCamSetup);
+
+ fopAc_ac_c* actor = Actor(mCamSetup.mActorID);
+ if (actor != NULL) {
+ mRunKey.mActorInfo.id = mCamSetup.mActorID;
+ fopAcM_getNameString(actor, mRunKey.mActorInfo.name);
+ } else {
+ mRunKey.mActorInfo.id = fpcM_ERROR_PROCESS_ID_e;
+ mCamSetup.mActorID = fpcM_ERROR_PROCESS_ID_e;
+ }
+ } else if (mDoCPd_c::getTrigB(mPadNo)) {
+ mRunKey.mActorInfo.id = fpcM_ERROR_PROCESS_ID_e;
+ mCamSetup.mActorID = fpcM_ERROR_PROCESS_ID_e;
+ }
+ break;
+ case 3:
+ if (mDoCPd_c::getTrigY(mPadNo)) {
+ mRunKey.mCenter = dComIfGp_getPlayer(0)->attention_info.position;
+ // field_0x704 = mRunKey.mCenter = dComIfGp_getPlayer(0)->attention_info.position;
+ // this->unk730 = 3;
+ }
+ /* fallthrough */
+ default:
+ return 1;
+ }
+ } else if (dComIfGp_event_runCheck() == 0) {
+ mIsPlaying = false;
+ }
+
+ if (mIsPlaying) {
+ field_0x704.field_0x4++;
+ }
+
+ return 1;
+}
+
+int dDbgCamera_c::makeZevData() {
+ int keyNo;
+ int spline_keyNo;
+ int sp48;
+ int spline_keyNum;
+
+ int size = 0;
+ int spline_timer;
+ int sp38 = 0;
+
+ field_0xb14 = 0;
+
+ if (zevwork::WorkBuffer == NULL) {
+ zevwork::WorkBuffer = new u8[zevwork::WorkSize];
+ if (zevwork::WorkBuffer == NULL) {
+ OSReport("debug camera: memory allocate error!! %d byte\n", zevwork::WorkSize);
+ return 0;
+ }
+ }
+
+ OSReport("debug camera: making demo data...\n");
+
+ event_binary_data_header* header = (event_binary_data_header*)(zevwork::WorkBuffer + size);
+ size += sizeof(event_binary_data_header) - 8;
+
+ header->cutNum = 0;
+ dEvDtEvent_DBG_c* event = (dEvDtEvent_DBG_c*)(zevwork::WorkBuffer + size);
+ header->eventTop = size;
+ header->eventNum = 1;
+ size += sizeof(dEvDtEvent_DBG_c);
+ event->Init();
+ strcpy(event->mName, "_DebugCamera");
+ event->mStaff[0] = 0;
+ event->mStaff[1] = 1;
+ event->mNStaff = 2;
+
+ dEvDtStaff_DBG_c* camera_staff = (dEvDtStaff_DBG_c*)(zevwork::WorkBuffer + size);
+ header->staffTop = size;
+ header->staffNum = 2;
+ size += sizeof(dEvDtStaff_DBG_c);
+ camera_staff->Init();
+ strcpy(camera_staff->mName, "CAMERA");
+ camera_staff->mType = dEvDtStaff_c::TYPE_CAMERA;
+ camera_staff->mIndex = 0;
+ camera_staff->mStartCut = 1;
+ camera_staff->mFlagID = sp38++;
+
+ dEvDtStaff_DBG_c* all_staff = (dEvDtStaff_DBG_c*)(zevwork::WorkBuffer + size);
+ size += sizeof(dEvDtStaff_DBG_c);
+ all_staff->Init();
+ strcpy(all_staff->mName, "ALL");
+ all_staff->mType = dEvDtStaff_c::TYPE_ALL;
+ all_staff->mIndex = 1;
+ all_staff->mStartCut = 0;
+ all_staff->mFlagID = sp38++;
+
+ dEvDtCut_DBG_c* cut = (dEvDtCut_DBG_c*)(zevwork::WorkBuffer + size);
+ header->cutTop = size;
+ header->cutNum = 0;
+ size += sizeof(dEvDtCut_c) * zevwork::CutMaxNum;
+ dEvDtCut_DBG_c* prev_cut = NULL;
+ cut->Init();
+ strcpy(cut->mName, "DUMMY");
+ cut->mIndex = header->cutNum++;
+ cut->mFlagId = sp38++;
+ event->mFlags[0] = cut->mFlagId;
+ cut++;
+
+ dEvDtData_DBG_c* pdata = (dEvDtData_DBG_c*)(zevwork::WorkBuffer + size);
+ header->dataTop = size;
+ header->dataNum = 0;
+ size += sizeof(dEvDtData_DBG_c) * zevwork::DataMaxNum;
+
+ f32* fdata = (f32*)(zevwork::WorkBuffer + size);
+ header->fDataTop = size;
+ header->fDataNum = 0;
+ size += sizeof(f32) * zevwork::FDataMaxNum;
+
+ int* idata = (int*)(zevwork::WorkBuffer + size);
+ header->iDataTop = size;
+ header->iDataNum = 0;
+ size += sizeof(int) * zevwork::IDataMaxNum;
+
+ char* sdata = (char*)(zevwork::WorkBuffer + size);
+ header->sDataTop = size;
+ header->sDataNum = 0;
+ size += sizeof(char) * zevwork::SDataMaxNum;
+
+ if (size > zevwork::WorkSize) {
+ OSReport("debug camera: too big data!! %d > %d byte\n", size, zevwork::WorkSize);
+ return 0;
+ }
+
+ int sp14 = 0;
+ int sp10;
+
+ for (keyNo = 0; keyNo < ARRAY_SIZE(mKeys); keyNo++) {
+ cut->Init();
+ strcpy(cut->mName, ActionName(mKeys[keyNo].mAction));
+ cut->mDataTop = header->dataNum;
+
+ switch (mKeys[keyNo].mAction) {
+ case dDbgCam_KeyAction_FIXEDFRM:
+ case dDbgCam_KeyAction_UNITRANS:
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ pdata->Init();
+ strcpy(pdata->mName, "RelActor");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_STRING;
+ pdata->mDataIndex = sp14;
+ pdata->mNumber = 1;
+ pdata->mNext = header->dataNum;
+ pdata++;
+ strcpy(sdata, mKeys[keyNo].mActorInfo.name);
+ sp48 = strlen(mKeys[keyNo].mActorInfo.name) + 1;
+ header->sDataNum++;
+ sdata += sp48;
+ sp14 += sp48;
+ }
+
+ pdata->Init();
+ strcpy(pdata->mName, "Center");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_VEC;
+ pdata->mDataIndex = header->fDataNum;
+ pdata->mNumber = 3;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+ *fdata++ = mKeys[keyNo].mCenter.x;
+ *fdata++ = mKeys[keyNo].mCenter.y;
+ *fdata++ = mKeys[keyNo].mCenter.z;
+ header->fDataNum += 3;
+
+ pdata->Init();
+ strcpy(pdata->mName, "Eye");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_VEC;
+ pdata->mDataIndex = header->fDataNum;
+ pdata->mNumber = 3;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+ *fdata++ = mKeys[keyNo].mEye.x;
+ *fdata++ = mKeys[keyNo].mEye.y;
+ *fdata++ = mKeys[keyNo].mEye.z;
+ header->fDataNum += 3;
+
+ pdata->Init();
+ strcpy(pdata->mName, "Fovy");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_FLOAT;
+ pdata->mDataIndex = header->fDataNum;
+ pdata->mNumber = 1;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+ *fdata++ = mKeys[keyNo].mFovy;
+ header->fDataNum += 1;
+
+ pdata->Init();
+ strcpy(pdata->mName, "Bank");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_FLOAT;
+ pdata->mDataIndex = header->fDataNum;
+ pdata->mNumber = 1;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+ *fdata++ = mKeys[keyNo].mBank;
+ header->fDataNum += 1;
+
+ pdata->Init();
+ strcpy(pdata->mName, "Timer");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_INT;
+ pdata->mDataIndex = header->iDataNum;
+ pdata->mNumber = 1;
+ pdata++;
+
+ *idata++ = mKeys[keyNo].mTimer;
+ header->iDataNum += 1;
+
+ field_0xb14 += mKeys[keyNo].mTimer;
+ break;
+ case dDbgCam_KeyAction_BSPLINE:
+ spline_timer = 0;
+ sp48 = 0;
+
+ int sp8;
+ sp8 = spline_keyNum = keyNo;
+ for (; spline_keyNum < ARRAY_SIZE(mActionKey); spline_keyNum++) {
+ if (mActionKey[spline_keyNum] != ActionSymbol(dDbgCam_KeyAction_BSPLINE)) {
+ break;
+ }
+
+ sp48++;
+ spline_timer += mKeys[spline_keyNum].mTimer;
+ }
+
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ pdata->Init();
+ strcpy(pdata->mName, "RelActor");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_STRING;
+ pdata->mDataIndex = sp14;
+ pdata->mNumber = 1;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+ strcpy(sdata, mKeys[keyNo].mActorInfo.name);
+ sp10 = strlen(mKeys[keyNo].mActorInfo.name) + 1;
+ header->sDataNum += 1;
+
+ sdata += sp10;
+ sp14 += sp10;
+ }
+
+ pdata->Init();
+ strcpy(pdata->mName, "Centers");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_VEC;
+ pdata->mDataIndex = header->fDataNum;
+ pdata->mNumber = sp48 * 3;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ *fdata++ = mKeys[spline_keyNo].mCenter.x;
+ *fdata++ = mKeys[spline_keyNo].mCenter.y;
+ *fdata++ = mKeys[spline_keyNo].mCenter.z;
+ }
+
+ header->fDataNum += sp48 * 3;
+
+ pdata->Init();
+ strcpy(pdata->mName, "Eyes");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_VEC;
+ pdata->mDataIndex = header->fDataNum;
+ pdata->mNumber = sp48 * 3;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ *fdata++ = mKeys[spline_keyNo].mEye.x;
+ *fdata++ = mKeys[spline_keyNo].mEye.y;
+ *fdata++ = mKeys[spline_keyNo].mEye.z;
+ }
+
+ header->fDataNum += sp48 * 3;
+
+ pdata->Init();
+ strcpy(pdata->mName, "Fovys");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_FLOAT;
+ pdata->mDataIndex = header->fDataNum;
+ pdata->mNumber = sp48;
+ pdata->mNext = header->dataNum;
+ pdata++;
+
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ *fdata++ = mKeys[spline_keyNo].mFovy;
+ }
+
+ header->fDataNum += sp48;
+
+ pdata->Init();
+ strcpy(pdata->mName, "Timer");
+ pdata->mIndex = header->dataNum++;
+ pdata->mType = dEvDtData_c::TYPE_INT;
+ pdata->mDataIndex = header->iDataNum;
+ pdata->mNumber = 1;
+ pdata++;
+
+ *idata++ = spline_timer;
+ header->iDataNum += 1;
+
+ field_0xb14 += spline_timer;
+
+ keyNo += sp48;
+ }
+
+ cut->mIndex = header->cutNum++;
+ cut->mFlagId = sp38++;
+
+ if (prev_cut != NULL) {
+ cut->mFlags[0] = prev_cut->mFlagId;
+ prev_cut->mNext = cut->mIndex;
+ }
+
+ prev_cut = cut;
+ event->mFlags[0] = cut->mFlagId;
+ cut++;
+ }
+
+ if (header->cutNum > zevwork::CutMaxNum) {
+ OSReport("debug camera: too many cuts: %d > %d: broken event data\n", header->cutNum, zevwork::CutMaxNum);
+ return 0;
+ }
+
+ if (header->dataNum > zevwork::DataMaxNum) {
+ OSReport("debug camera: too many data: %d > %d: broken event data\n", header->dataNum, zevwork::DataMaxNum);
+ return 0;
+ }
+
+ if (header->fDataNum > zevwork::FDataMaxNum) {
+ OSReport("debug camera: too many fdata: %d > %d: broken event data\n", header->fDataNum, zevwork::FDataMaxNum);
+ return 0;
+ }
+
+ if (header->fDataNum > zevwork::IDataMaxNum) {
+ OSReport("debug camera: too many idata: %d > %d: broken event data\n", header->iDataNum, zevwork::IDataMaxNum);
+ return 0;
+ }
+
+ if (header->sDataNum > zevwork::SDataMaxNum) {
+ OSReport("debug camera: too many idata: %d > %d: broken event data\n", header->sDataNum, zevwork::SDataMaxNum);
+ return 0;
+ }
+
+ if (header->cutNum != 0) {
+ OSReport(" cut %d \n", header->cutNum);
+ OSReport(" data %d \n", header->dataNum);
+ OSReport(" float %d \n", header->fDataNum);
+ OSReport(" integer %d \n", header->iDataNum);
+ OSReport(" string %d \n", header->sDataNum);
+
+ dEvM_HIO_c& hio = dComIfGp_getPEvtManager()->getEventHIO();
+ hio.setDebugCameraData(zevwork::WorkBuffer);
+ }
+
+ return 1;
+}
+
+void dDbgCamera_c::printZevData() {
+ OSReport("\n");
+ OSReport("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n\n");
+ OSReport("<!--\n △ \n △△ Game Cube Zelda - ");
+ OSReport("Camera Tool Event Data \n ▼▼ \n ▼ \n-->\n");
+ OSReport("<event version=\"2.0\">\n");
+ OSReport(" <sequence name=\"???\" finish=\"CAMERA\">\n");
+ OSReport(" <staff name=\"CAMERA\" type=\"CAMERA\">\n");
+
+ int keyNo;
+ int spline_keyNo, spline_keyNum, spline_timer;
+ for (keyNo = 0; keyNo < ARRAY_SIZE(mKeys); keyNo++) {
+ switch (mKeys[keyNo].mAction) {
+ case dDbgCam_KeyAction_FIXEDFRM:
+ OSReport(" <cut name=\"Key%02d\" type=\"FIXEDFRM\">\n", keyNo);
+
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ OSReport(" <data name=\"RelActor\" type=\"STRING\">");
+ OSReport("%s</data>\n", mKeys[keyNo].mActorInfo.name);
+ }
+
+ OSReport(" <data name=\"Center\" type=\"XYZ\">");
+ OSReport("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mCenter.x, mKeys[keyNo].mCenter.y, mKeys[keyNo].mCenter.z);
+
+ OSReport(" <data name=\"Eye\" type=\"XYZ\">");
+ OSReport("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mEye.x, mKeys[keyNo].mEye.y, mKeys[keyNo].mEye.z);
+
+ OSReport(" <data name=\"Fovy\" type=\"FLOAT\">");
+ OSReport("%.3f</data>\n", mKeys[keyNo].mFovy);
+
+ OSReport(" <data name=\"Bank\" type=\"FLOAT\">");
+ OSReport("%.3f</data>\n", mKeys[keyNo].mBank);
+
+ OSReport(" <data name=\"Timer\" type=\"INTEGER\">");
+ OSReport("%d</data>\n", mKeys[keyNo].mTimer);
+
+ OSReport(" </cut>\n");
+ break;
+ case dDbgCam_KeyAction_UNITRANS:
+ OSReport(" <cut name=\"Key%02d\" type=\"UNITRANS\">\n", keyNo);
+
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ OSReport(" <data name=\"RelActor\" type=\"STRING\">");
+ OSReport("%s</data>\n", mKeys[keyNo].mActorInfo.name);
+ }
+
+ OSReport(" <data name=\"Center\" type=\"XYZ\">");
+ OSReport("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mCenter.x, mKeys[keyNo].mCenter.y, mKeys[keyNo].mCenter.z);
+
+ OSReport(" <data name=\"Eye\" type=\"XYZ\">");
+ OSReport("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mEye.x, mKeys[keyNo].mEye.y, mKeys[keyNo].mEye.z);
+
+ OSReport(" <data name=\"Fovy\" type=\"FLOAT\">");
+ OSReport("%.3f</data>\n", mKeys[keyNo].mFovy);
+
+ OSReport(" <data name=\"Bank\" type=\"FLOAT\">");
+ OSReport("%.3f</data>\n", mKeys[keyNo].mBank);
+
+ OSReport(" <data name=\"Timer\" type=\"INTEGER\">");
+ OSReport("%d</data>\n", mKeys[keyNo].mTimer);
+
+ OSReport(" </cut>\n");
+ break;
+ case dDbgCam_KeyAction_BSPLINE:
+ spline_keyNum = keyNo;
+ for (; spline_keyNum < ARRAY_SIZE(mActionKey); spline_keyNum++) {
+ if (mActionKey[spline_keyNum] != ActionSymbol(dDbgCam_KeyAction_BSPLINE)) {
+ break;
+ }
+ }
+
+ OSReport(" <cut name=\"Key%02d\" type=\"BSPLINE\">\n", keyNo);
+
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ OSReport(" <data name=\"RelActor\" type=\"STRING\">");
+ OSReport("%s</data>\n", mKeys[keyNo].mActorInfo.name);
+ }
+
+ OSReport(" <data name=\"Centers\" type=\"XYZ\">\n");
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ OSReport(" %.3f %.3f %.3f\n", mKeys[spline_keyNo].mCenter.x, mKeys[spline_keyNo].mCenter.y, mKeys[spline_keyNo].mCenter.z);
+ }
+ OSReport(" </data>\n");
+
+ OSReport(" <data name=\"Eyes\" type=\"XYZ\">\n");
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ OSReport(" %.3f %.3f %.3f\n", mKeys[spline_keyNo].mEye.x, mKeys[spline_keyNo].mEye.y, mKeys[spline_keyNo].mEye.z);
+ }
+ OSReport(" </data>\n");
+
+ OSReport(" <data name=\"Fovys\" type=\"FLOAT\">\n");
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ OSReport(" %.3f\n", mKeys[spline_keyNo].mFovy);
+ }
+ OSReport(" </data>\n");
+
+ spline_timer = 0;
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ spline_timer += mKeys[spline_keyNo].mTimer;
+ }
+ OSReport(" <data name=\"Timer\" type=\"INTEGER\">%d</data>\n", spline_timer);
+
+ OSReport(" </cut>\n");
+ keyNo = spline_keyNum - 1;
+ break;
+ }
+ }
+
+ OSReport(" </staff>\n");
+ OSReport(" <staff name=\"ALL\" type=\"EXTRA\">\n");
+ OSReport(" <cut name=\"dummy\" type=\"DUMMY\"/>\n");
+ OSReport(" </staff>\n");
+ OSReport(" </sequence>\n");
+ OSReport("</event>\n");
+ OSReport("\n");
+}
+
+void dDbgCamera_c::WriteZevData() {
+ OpenFile();
+
+ PrintFile("\n");
+ PrintFile("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n\n");
+ PrintFile("<!--\n △ \n △△ Game Cube Zelda - ");
+ PrintFile("Camera Tool Event Data \n ▼▼ \n ▼ \n-->\n");
+ PrintFile("<event version=\"2.0\">\n");
+ PrintFile(" <sequence name=\"???\" finish=\"CAMERA\">\n");
+ PrintFile(" <staff name=\"CAMERA\" type=\"CAMERA\">\n");
+
+ int keyNo;
+ int spline_keyNo, spline_keyNum, spline_timer;
+ for (keyNo = 0; keyNo < ARRAY_SIZE(mKeys); keyNo++) {
+ switch (mKeys[keyNo].mAction) {
+ case dDbgCam_KeyAction_FIXEDFRM:
+ PrintFile(" <cut name=\"Key%02d\" type=\"FIXEDFRM\">\n", keyNo);
+
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ PrintFile(" <data name=\"RelActor\" type=\"STRING\">");
+ PrintFile("%s</data>\n", mKeys[keyNo].mActorInfo.name);
+ }
+
+ PrintFile(" <data name=\"Center\" type=\"XYZ\">");
+ PrintFile("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mCenter.x, mKeys[keyNo].mCenter.y, mKeys[keyNo].mCenter.z);
+
+ PrintFile(" <data name=\"Eye\" type=\"XYZ\">");
+ PrintFile("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mEye.x, mKeys[keyNo].mEye.y, mKeys[keyNo].mEye.z);
+
+ PrintFile(" <data name=\"Fovy\" type=\"FLOAT\">");
+ PrintFile("%.3f</data>\n", mKeys[keyNo].mFovy);
+
+ PrintFile(" <data name=\"Bank\" type=\"FLOAT\">");
+ PrintFile("%.3f</data>\n", mKeys[keyNo].mBank);
+
+ PrintFile(" <data name=\"Timer\" type=\"INTEGER\">");
+ PrintFile("%d</data>\n", mKeys[keyNo].mTimer);
+
+ PrintFile(" </cut>\n");
+ break;
+ case dDbgCam_KeyAction_UNITRANS:
+ PrintFile(" <cut name=\"Key%02d\" type=\"UNITRANS\">\n", keyNo);
+
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ PrintFile(" <data name=\"RelActor\" type=\"STRING\">");
+ PrintFile("%s</data>\n", mKeys[keyNo].mActorInfo.name);
+ }
+
+ PrintFile(" <data name=\"Center\" type=\"XYZ\">");
+ PrintFile("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mCenter.x, mKeys[keyNo].mCenter.y, mKeys[keyNo].mCenter.z);
+
+ PrintFile(" <data name=\"Eye\" type=\"XYZ\">");
+ PrintFile("%.3f %.3f %.3f</data>\n", mKeys[keyNo].mEye.x, mKeys[keyNo].mEye.y, mKeys[keyNo].mEye.z);
+
+ PrintFile(" <data name=\"Fovy\" type=\"FLOAT\">");
+ PrintFile("%.3f</data>\n", mKeys[keyNo].mFovy);
+
+ PrintFile(" <data name=\"Bank\" type=\"FLOAT\">");
+ PrintFile("%.3f</data>\n", mKeys[keyNo].mBank);
+
+ PrintFile(" <data name=\"Timer\" type=\"INTEGER\">");
+ PrintFile("%d</data>\n", mKeys[keyNo].mTimer);
+
+ PrintFile(" </cut>\n");
+ break;
+ case dDbgCam_KeyAction_BSPLINE:
+ spline_keyNum = keyNo;
+ for (; spline_keyNum < ARRAY_SIZE(mActionKey); spline_keyNum++) {
+ if (mActionKey[spline_keyNum] != ActionSymbol(dDbgCam_KeyAction_BSPLINE)) {
+ break;
+ }
+ }
+
+ PrintFile(" <cut name=\"Key%02d\" type=\"BSPLINE\">\n", keyNo);
+
+ if (mKeys[keyNo].mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ PrintFile(" <data name=\"RelActor\" type=\"STRING\">");
+ PrintFile("%s</data>\n", mKeys[keyNo].mActorInfo.name);
+ }
+
+ PrintFile(" <data name=\"Centers\" type=\"XYZ\">\n");
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ PrintFile(" %.3f %.3f %.3f\n", mKeys[spline_keyNo].mCenter.x, mKeys[spline_keyNo].mCenter.y, mKeys[spline_keyNo].mCenter.z);
+ }
+ PrintFile(" </data>\n");
+
+ PrintFile(" <data name=\"Eyes\" type=\"XYZ\">\n");
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ PrintFile(" %.3f %.3f %.3f\n", mKeys[spline_keyNo].mEye.x, mKeys[spline_keyNo].mEye.y, mKeys[spline_keyNo].mEye.z);
+ }
+ PrintFile(" </data>\n");
+
+ PrintFile(" <data name=\"Fovys\" type=\"FLOAT\">\n");
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ PrintFile(" %.3f\n", mKeys[spline_keyNo].mFovy);
+ }
+ PrintFile(" </data>\n");
+
+ spline_timer = 0;
+ for (spline_keyNo = keyNo; spline_keyNo < spline_keyNum; spline_keyNo++) {
+ spline_timer += mKeys[spline_keyNo].mTimer;
+ }
+ PrintFile(" <data name=\"Timer\" type=\"INTEGER\">%d</data>\n", spline_timer);
+
+ PrintFile(" </cut>\n");
+ keyNo = spline_keyNum - 1;
+ break;
+ }
+ }
+
+ PrintFile(" </staff>\n");
+ PrintFile(" <staff name=\"ALL\" type=\"EXTRA\">\n");
+ PrintFile(" <cut name=\"dummy\" type=\"DUMMY\"/>\n");
+ PrintFile(" </staff>\n");
+ PrintFile(" </sequence>\n");
+ PrintFile("</event>\n");
+ PrintFile("\n");
+
+ CloseFile();
+}
+
+void dDbgCamera_c::monitor() {
+ s32 pos_x = mCamSetup.mPosX;
+ s32 pos_y = mCamSetup.mPosY;
+ s32 y_offset = 15;
+
+ if (!mIsPlaying) {
+ cXyz center(mRunKey.mCenter);
+ cXyz eye(mRunKey.mEye);
+ fopAc_ac_c* actor = NULL;
+ f32 u = field_0x44.U().Degree();
+
+ if (mRunKey.mActorInfo.id != fpcM_ERROR_PROCESS_ID_e) {
+ actor = Actor(mRunKey.mActorInfo.id);
+ if (actor != NULL) {
+ cSGlobe sp70(mRunKey.mCenter - actor->attention_info.position);
+ sp70.U(sp70.U() - cSAngle(actor->shape_angle.y));
+ center = sp70.Xyz();
+
+ cSGlobe sp68(mRunKey.mEye - actor->attention_info.position);
+ sp68.U(sp68.U() - cSAngle(actor->shape_angle.y));
+ eye = sp68.Xyz();
+
+ u = cSAngle(field_0x44.U() - actor->shape_angle.y).Degree();
+ }
+ }
+
+ Report(pos_x, pos_y, 1, "CTR%11.3f%11.3f%11.3f", center.x, center.y, center.z);
+ Report(pos_x, pos_y += y_offset, 1, "EYE%11.3f%11.3f%11.3f", eye.x, eye.y, eye.z);
+ Report(pos_x, pos_y += y_offset, 1, "RVU %10.3f %10.3f %10.3f", field_0x44.R(), field_0x44.V().Degree(), u);
+ Report(pos_x, pos_y += y_offset, 1, "FVY %10.3f %s %s %s", mRunKey.mFovy, field_0xc08 ? "[L]" : "[ ]", field_0xc0c ? "[R]" : "[ ]", field_0xc08 ? "CTR->EYE" : "EYE->CTR");
+ Report(pos_x - 13, pos_y + (y_offset * field_0x54), 7, "*");
+
+ if (actor != NULL) {
+ Report(pos_x, pos_y += y_offset, 1, "BNK %10.3f @%7.7s", mRunKey.mBank, &mRunKey.mActorInfo.name);
+ } else {
+ Report(pos_x, pos_y += y_offset, 1, "BNK %10.3f @ WORLD", mRunKey.mBank);
+ }
+
+ Report(pos_x, pos_y += y_offset, 1, "KEY %s", mActionKey);
+
+ char spC0[32];
+
+ int var_r27;
+ for (var_r27 = 0; var_r27 < ARRAY_SIZE(spC0); var_r27++) {
+ if (var_r27 == field_0x58) {
+ spC0[var_r27] = '_';
+ var_r27++;
+ break;
+ }
+
+ spC0[var_r27] = ' ';
+ }
+
+ spC0[var_r27] = 0;
+ Report(pos_x, pos_y, 7, " %s", spC0);
+ Report(pos_x, pos_y += y_offset, 1, "CMD BASE PLAY TERM FIXP");
+
+ *spC0 = 0;
+
+ for (var_r27 = 0; var_r27 < 4; var_r27++) {
+ if (var_r27 == mCmdMode) {
+ strcat(spC0, "____ ");
+ break;
+ }
+
+ strcat(spC0, " ");
+ }
+
+ Report(pos_x, pos_y, 7, " %s", spC0);
+ Report(pos_x, pos_y += y_offset, 1, "ACT %c %8.8s", ActionSymbol(mRunKey.mAction), ActionName(mRunKey.mAction));
+ Report(pos_x, pos_y += y_offset, 1, "TIM %3d", mRunKey.mTimer);
+ } else {
+ Report(pos_x, pos_y, 1, "CNT %4d/%4d", field_0x704.field_0x4 - 1, field_0xb14);
+ }
+}
+
+bool dDbgCamera_c::showCenterMarker() {
+ switch (mCamSetup.CenterMarker()) {
+ case 1:
+ if (field_0xc00 != 18 || field_0xc04 != 18 || field_0xc08 != 0 || field_0xc0c != 0) {
+ field_0xc18 = 60;
+ }
+
+ if (field_0xc18 != 0) {
+ field_0xc18--;
+ }
+
+ return field_0xc18 != 0;
+ case 3:
+ return true;
+ case 2:
+ case 0:
+ default:
+ return false;
+ }
+}
+
+bool dDbgCamera_c::showCameraPos() {
+ return mCamSetup.CheckFlag(4);
+}
+
+bool dDbgCamera_c::showIdlCameraPos() {
+ return mCamSetup.CheckFlag(8);
+}
+
+void dDbgCamera_c::Init(dCamera_c* i_dbgCamera) {
+ mpCamera = i_dbgCamera;
+ mRunKey = PlaneKey();
+ mRunKey.mAction = dDbgCam_KeyAction_FIXEDFRM;
+ field_0x58 = 0;
+
+ int i;
+ for (i = 0; i < ARRAY_SIZE(mKeys); i++) {
+ mKeys[i] = PlaneKey();
+ }
+
+ memset(mActionKey, '-', sizeof(mActionKey));
+ field_0x80 = 0;
+ field_0x54 = 0;
+ mCmdMode = 0;
+ mCamSetup.Init(this);
+}
+
+void dDbgCamera_c::Finish() {
+ mCamSetup.Finish();
+}
+
+void dDbgCamera_c::Reset(dCamera_c* i_dbgCamera) {
+ mpCamera = i_dbgCamera;
+ mPadNo = PAD_3;
+ field_0x50 = 0;
+ mUp = i_dbgCamera->Up();
+
+ if (mActionKey[field_0x58] == '-') {
+ mRunKey = PlaneKey();
+ }
+
+ field_0xc04 = field_0xc00 = 18;
+ field_0xc10 = field_0xc14 = 0.0f;
+ field_0xc08 = field_0xc0c = 0;
+ field_0xc18 = 0;
+ mCmdMode = 0;
+ mIsPlaying = false;
+}
+
+int dDbgCamera_c::Run() {
+ int rt;
+
+ if (mDoCPd_c::getHoldLockL(mPadNo)) {
+ field_0xc08 = 1;
+ } else {
+ field_0xc08 = 0;
+ }
+
+ if (mDoCPd_c::getHoldLockR(mPadNo)) {
+ field_0xc0c = 1;
+ } else {
+ field_0xc0c = 0;
+ }
+
+ if (mDoCPd_c::getTrigUp(mPadNo)) {
+ if (field_0x54 == 0) {
+ field_0x54 = 5;
+ } else {
+ field_0x54--;
+ }
+ } else if (mDoCPd_c::getTrigDown(mPadNo)) {
+ if (field_0x54 >= 5) {
+ field_0x54 = 0;
+ } else {
+ field_0x54++;
+ }
+ }
+
+ if (field_0x54 == 4) {
+ if (mDoCPd_c::getTrigLeft(mPadNo)) {
+ if (mRunKey.mAction == dDbgCam_KeyAction_FIXEDFRM) {
+ mRunKey.mAction = dDbgCam_KeyAction_NOACTION;
+ } else {
+ mRunKey.mAction--;
+ }
+ } else if (mDoCPd_c::getTrigRight(mPadNo)) {
+ if (mRunKey.mAction == dDbgCam_KeyAction_NOACTION) {
+ mRunKey.mAction = dDbgCam_KeyAction_FIXEDFRM;
+ } else {
+ mRunKey.mAction++;
+ }
+ }
+ } else if (field_0x54 == 5) {
+ if (mDoCPd_c::getTrigRight(mPadNo)) {
+ mRunKey.mTimer++;
+ field_0xc1c = 0;
+ } else if (mDoCPd_c::getHoldRight(mPadNo)) {
+ if (field_0xc1c++ > 20) {
+ mRunKey.mTimer++;
+ }
+ } else if (mDoCPd_c::getTrigLeft(mPadNo)) {
+ mRunKey.mTimer--;
+ field_0xc1c = 0;
+ } else if (mDoCPd_c::getHoldLeft(mPadNo)) {
+ if (field_0xc1c++ > 20) {
+ mRunKey.mTimer--;
+ }
+ }
+ } else if (field_0x54 == 3) {
+ rt = cmdTool();
+ } else {
+ rt = moveTool();
+ }
+
+ if (mCamSetup.CheckFlag(0x8000)) {
+ monitor();
+ }
+
+ return rt;
+}
+
+int dDbgCamera_c::DrawShape() {
+ int rt = 0;
+
+ if (showCameraPos()) {
+ cXyz sp2F0[] = {
+ cXyz(5.0f, 6.5f, 10.0f),
+ cXyz(-5.0f, 6.5f, 10.0f),
+ cXyz(5.0f, -7.5f, 10.0f),
+ cXyz(-5.0f, -7.5f, 10.0f),
+ cXyz(5.0f, 6.5f, -10.0f),
+ cXyz(-5.0f, 6.5f, -10.0f),
+ cXyz(5.0f, -5.0f, -10.0f),
+ cXyz(-5.0f, -5.0f, -10.0f),
+ };
+
+ cXyz sp290[] = {
+ cXyz(3.0f, 3.0f, 10.0f),
+ cXyz(-3.0f, 3.0f, 10.0f),
+ cXyz(3.0f, -3.0f, 10.0f),
+ cXyz(-3.0f, -3.0f, 10.0f),
+ cXyz(3.0f, 3.0f, 16.0f),
+ cXyz(-3.0f, 3.0f, 16.0f),
+ cXyz(3.0f, -3.0f, 16.0f),
+ cXyz(-3.0f, -3.0f, 16.0f),
+ };
+
+ cXyz sp1A0[] = {
+ cXyz(80.0f, 0.0f, 0.0f),
+ cXyz(-80.0f, 0.0f, 0.0f),
+ cXyz(0.0f, 80.0f, 0.0f),
+ cXyz(0.0f, -80.0f, 0.0f),
+ };
+
+ dCamera_c* camera = dCam_getBody();
+
+ GXColor sp6C = {0xFF, 0xDC, 0x80, 0x96};
+ GXColor sp68 = {0xDC, 0xFF, 0x80, 0x96};
+ GXColor sp64 = {0xFF, 0xFF, 0xFF, 0x32};
+
+ cXyz cam_center = camera->Center();
+ cXyz cam_eye = camera->Eye();
+ cSAngle cam_u(camera->U());
+ cSAngle cam_v(camera->V());
+
+ int i;
+ for (i = 0; i < 8; i++) {
+ sp2F0[i] = dCamMath::xyzRotateX(sp2F0[i], cam_v);
+ sp2F0[i] = dCamMath::xyzRotateY(sp2F0[i], cam_u);
+ sp2F0[i] += cam_eye;
+
+ sp290[i] = dCamMath::xyzRotateX(sp290[i], cam_v);
+ sp290[i] = dCamMath::xyzRotateY(sp290[i], cam_u);
+ sp290[i] += cam_eye;
+ }
+
+ dDbVw_drawCube8pOpa(sp2F0, sp6C);
+ dDbVw_drawCube8pOpa(sp290, sp6C);
+ dDbVw_drawSphereXlu(cam_eye, 3.0f, sp68, 1);
+ dDbVw_drawSphereXlu(cam_center, 5.0f, sp68, 1);
+
+ for (i = 0; i < 4; i++) {
+ sp1A0[i] = dCamMath::xyzRotateX(sp1A0[i], cam_v);
+ sp1A0[i] = dCamMath::xyzRotateY(sp1A0[i], cam_u);
+ sp1A0[i] += cam_center;
+ }
+
+ cSGlobe sp78(80.0f + camera->R(), -cam_v, cam_u);
+ dDbVw_drawLineXlu(cam_eye, cam_center, sp64, 1, 0xC);
+ dDbVw_drawLineXlu(sp1A0[0], sp1A0[1], sp64, 1, 0xC);
+ dDbVw_drawLineXlu(sp1A0[2], sp1A0[3], sp64, 1, 0xC);
+ rt = 1;
+ }
+
+ if (showIdlCameraPos()) {
+ cXyz sp230[] = {
+ cXyz(5.0f, 6.5f, 10.0f),
+ cXyz(-5.0f, 6.5f, 10.0f),
+ cXyz(5.0f, -7.5f, 10.0f),
+ cXyz(-5.0f, -7.5f, 10.0f),
+ cXyz(5.0f, 6.5f, -10.0f),
+ cXyz(-5.0f, 6.5f, -10.0f),
+ cXyz(5.0f, -5.0f, -10.0f),
+ cXyz(-5.0f, -5.0f, -10.0f),
+ };
+
+ cXyz sp1D0[] = {
+ cXyz(3.0f, 3.0f, 10.0f),
+ cXyz(-3.0f, 3.0f, 10.0f),
+ cXyz(3.0f, -3.0f, 10.0f),
+ cXyz(-3.0f, -3.0f, 10.0f),
+ cXyz(3.0f, 3.0f, 16.0f),
+ cXyz(-3.0f, 3.0f, 16.0f),
+ cXyz(3.0f, -3.0f, 16.0f),
+ cXyz(-3.0f, -3.0f, 16.0f),
+ };
+
+ cXyz sp170[] = {
+ cXyz(80.0f, 0.0f, 0.0f),
+ cXyz(-80.0f, 0.0f, 0.0f),
+ cXyz(0.0f, 80.0f, 0.0f),
+ cXyz(0.0f, -80.0f, 0.0f),
+ };
+
+ dCamera_c* camera = dCam_getBody();
+
+ GXColor sp60 = {0x80, 0xFF, 0xDC, 0x5A};
+ GXColor sp5C = {0x80, 0xDC, 0xFF, 0x5A};
+ GXColor sp58 = {0xFF, 0xFF, 0xFF, 0x1E};
+
+ cXyz cam_icenter = camera->iCenter();
+ cXyz cam_ieye = camera->iEye();
+ cSAngle cam_iu(camera->iU());
+ cSAngle cam_iv(camera->iV());
+
+ int i;
+ for (i = 0; i < 8; i++) {
+ sp230[i] = dCamMath::xyzRotateX(sp230[i], cam_iv);
+ sp230[i] = dCamMath::xyzRotateY(sp230[i], cam_iu);
+ sp230[i] += cam_ieye;
+
+ sp1D0[i] = dCamMath::xyzRotateX(sp1D0[i], cam_iv);
+ sp1D0[i] = dCamMath::xyzRotateY(sp1D0[i], cam_iu);
+ sp1D0[i] += cam_ieye;
+ }
+
+ dDbVw_drawCube8pOpa(sp230, sp60);
+ dDbVw_drawCube8pOpa(sp1D0, sp60);
+ dDbVw_drawSphereXlu(cam_ieye, 3.0f, sp5C, 1);
+ dDbVw_drawSphereXlu(cam_icenter, 5.0f, sp5C, 1);
+
+ for (i = 0; i < 4; i++) {
+ sp170[i] = dCamMath::xyzRotateX(sp170[i], cam_iv);
+ sp170[i] = dCamMath::xyzRotateY(sp170[i], cam_iu);
+ sp170[i] += cam_icenter;
+ }
+
+ cSGlobe sp70(80.0f + camera->iR(), -cam_iv, cam_iu);
+ cam_icenter = cam_ieye + sp70.Xyz();
+
+ dDbVw_drawLineXlu(cam_ieye, cam_icenter, sp58, 1, 0xC);
+ dDbVw_drawLineXlu(sp170[0], sp170[01], sp58, 1, 0xC);
+ dDbVw_drawLineXlu(sp170[2], sp170[3], sp58, 1, 0xC);
+ rt = 1;
+ }
+
+ if (showCenterMarker()) {
+ f32 cam_cross = mCamSetup.CenterCloss();
+ GXColor color = {0x80, 0x80, 0xFF, 0x80};
+ cXyz sp134;
+ cXyz sp128;
+
+ sp134 = mRunKey.mCenter;
+ sp128 = mRunKey.mCenter;
+ sp134.x += cam_cross;
+ sp128.x -= cam_cross;
+ dDbVw_drawLineXlu(sp134, sp128, color, 1, 0xC);
+
+ sp134.x -= cam_cross;
+ sp128.x += cam_cross;
+ sp134.y += cam_cross;
+ sp128.y -= cam_cross;
+ dDbVw_drawLineXlu(sp134, sp128, color, 1, 0xC);
+
+ sp134.y -= cam_cross;
+ sp128.y += cam_cross;
+ sp134.z += cam_cross;
+ sp128.z -= cam_cross;
+ dDbVw_drawLineXlu(sp134, sp128, color, 1, 0xC);
+
+ cam_cross = mCamSetup.CenterBall();
+
+ GXColor sp50 = {0xFF, 0x80, 0x80, 0x80};
+ if (field_0xc08 != 0) {
+ sp50.g = 0xFF;
+ }
+
+ if (field_0xc0c != 0) {
+ sp50.b = 0xFF;
+ }
+
+ dDbVw_drawSphereXlu(mRunKey.mCenter, cam_cross, sp50, 1);
+ rt = 1;
+ }
+
+ if (mCamSetup.CheckFlag(0x10)) {
+ switch (mLchkNum) {
+ case 2:
+ // dComIfG_Bgsp().DrawPoly(mLchk[1], l_color2);
+ /* fallthrough */
+ case 1:
+ // dComIfG_Bgsp().DrawPoly(mLchk[0], l_color1);
+ break;
+ }
+ }
+
+ return rt;
+}
+
+JUtility::TColor get_color(JUtility::TColor color) {
+ static JUtility::TColor colors[] = {
+ JUtility::TColor(0xFF, 0xFF, 0xFF, 0xFF),
+ JUtility::TColor(0xFF, 0xFF, 0xC0, 0xFF),
+ JUtility::TColor(0xFF, 0xC0, 0xC0, 0xFF),
+ JUtility::TColor(0xC0, 0xFF, 0xC0, 0xFF),
+ JUtility::TColor(0xC0, 0xC0, 0xFF, 0xFF),
+ JUtility::TColor(0xFF, 0xFF, 0x80, 0xFF),
+ JUtility::TColor(0xFF, 0x80, 0x80, 0xFF),
+ JUtility::TColor(0xC0, 0xFF, 0x80, 0xFF),
+ JUtility::TColor(0x80, 0x80, 0xFF, 0xFF),
+ };
+
+ (void)(u32)color;
+ int var_r30 = 1;
+
+ if (var_r30 && (u32)color < 9) {
+ return colors[(u32)color & ~0x80000000];
+ }
+
+ return color;
+}
+
+int dDbgCamera_c::Report(int x, int y, JUtility::TColor color, const char* mesg, ...) {
+ char buffer[0x100];
+
+ static JUtility::TColor ShadowDarkColor(0, 0, 0, 0x80);
+
+ va_list list;
+ va_start(list, mesg);
+ vsnprintf(buffer, sizeof(buffer), mesg, list);
+ va_end(list);
+
+ JUTDbPrint::getManager()->flush();
+
+ JUTDbPrint::getManager()->setCharColor(ShadowDarkColor);
+ JUTReport(x + 2, y + 2, buffer);
+
+ JUTDbPrint::getManager()->flush();
+
+ JUTDbPrint::getManager()->setCharColor(get_color(color));
+ JUTReport(x, y, buffer);
+
+ JUTDbPrint::getManager()->flush();
+ JUTDbPrint::getManager()->setCharColor(g_HIO.mColor);
+ return 1;
+}
+
+void dDbgCamera_c::OpenFile() {
+ const char ext[] = "イベントファイル(*.zev)\0*.zev\0その他のファイル(*.*)\0*.*\0";
+ mFile.open("dbgcam.zev", 2, ext, NULL, NULL, NULL);
+}
+
+void dDbgCamera_c::PrintFile(char* string, ...) {
+ char buffer[0x100];
+
+ va_list args;
+ va_start(args, string);
+ vsnprintf(buffer, sizeof(buffer), string, args);
+ va_end(args);
+
+ mFile.writeData(buffer, strlen(buffer));
+}
+
+void dDbgCamera_c::CloseFile() {
+ mFile.close();
+}
+
+#endif