Skip to content

Commit 211e5f1

Browse files
authored
canoe done (#2417)
* d_a_canoe done * fix debug
1 parent 5302ec4 commit 211e5f1

File tree

10 files changed

+929
-1128
lines changed

10 files changed

+929
-1128
lines changed

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1524,7 +1524,7 @@ def MatchingFor(*versions) -> bool:
15241524
ActorRel(MatchingFor("GZ2E01"), "d_a_alldie"),
15251525
ActorRel(MatchingFor("GZ2E01"), "d_a_andsw2"),
15261526
ActorRel(NonMatching, "d_a_bd"),
1527-
ActorRel(NonMatching, "d_a_canoe"),
1527+
ActorRel(MatchingFor("GZ2E01"), "d_a_canoe"),
15281528
ActorRel(NonMatching, "d_a_cstaF"),
15291529
ActorRel(NonMatching, "d_a_demo_item"),
15301530
ActorRel(MatchingFor("GZ2E01"), "d_a_door_bossL1"),

include/d/actor/d_a_alink.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3281,6 +3281,14 @@ class daAlink_c : public daPy_py_c {
32813281
virtual bool checkCopyRodEquip() const { return mEquipItem == fpcNm_ITEM_COPY_ROD; }
32823282
virtual BOOL checkCutJumpMode() const { return mProcID == PROC_CUT_JUMP; }
32833283

3284+
static BOOL checkDebugMoveInput() {
3285+
if (mDoCPd_c::isConnect(PAD_3)) {
3286+
return mDoCPd_c::getHoldB(PAD_1) && mDoCPd_c::getAnalogR(PAD_1) > 0.8f && mDoCPd_c::getTrigA(PAD_1);
3287+
}
3288+
3289+
return FALSE;
3290+
}
3291+
32843292
u32 checkModeFlg(u32 pFlag) const { return mModeFlg & pFlag; }
32853293
BOOL checkSmallUpperGuardAnime() const { return checkUpperAnime(0x16); }
32863294
BOOL checkFmChainGrabAnime() const { return checkUpperAnime(0x62) || checkUpperAnime(0x2A0); }
@@ -3538,6 +3546,8 @@ class daAlink_c : public daPy_py_c {
35383546
return mProcID == PROC_SPINNER_WAIT && mProcVar2.field_0x300c == 0;
35393547
}
35403548
bool checkRoofSwitchHang() const { return mProcID == PROC_ROOF_SWITCH_HANG; }
3549+
bool checkCanoeWait() const { return mProcID == PROC_CANOE_WAIT; }
3550+
bool checkCanoeSubjectivity() const { return mProcID == PROC_CANOE_SUBJECTIVITY; }
35413551

35423552
fopAc_ac_c* getCopyRodActor() { return mCopyRodAcKeep.getActor(); }
35433553
fopAc_ac_c* getHookshotRoofWaitActor() { return mCargoCarryAcKeep.getActor(); }
@@ -3555,6 +3565,7 @@ class daAlink_c : public daPy_py_c {
35553565

35563566
void seStartSystem(u32 i_seID) { mDoAud_seStart(i_seID, NULL, 0, 0); }
35573567
bool checkIronBallEquip() const { return mEquipItem == fpcNm_ITEM_IRONBALL; }
3568+
BOOL checkFishingRodEquip() const { return checkFishingRodItem(mEquipItem); }
35583569

35593570
f32 getAnmSpeedStickRate(f32 param_0, f32 param_1) const {
35603571
return param_0 + (field_0x33a8 * (param_1 - param_0));

include/d/actor/d_a_canoe.h

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
*/
1717
class daCanoe_c : public fopAc_ac_c {
1818
public:
19-
/* 804DA5F4 */ void createHeap();
20-
/* 804DA740 */ void create();
19+
/* 804DA5F4 */ int createHeap();
20+
/* 804DA740 */ int create();
2121
/* 804DAEA8 */ ~daCanoe_c();
2222
/* 804DB008 */ void setRoomInfo();
2323
/* 804DB0B0 */ void setMatrix();
@@ -28,8 +28,8 @@ class daCanoe_c : public fopAc_ac_c {
2828
/* 804DB828 */ void frontBackBgCheck();
2929
/* 804DC330 */ void setPaddleEffect();
3030
/* 804DC554 */ void setCanoeSliderEffect();
31-
/* 804DC7B4 */ void execute();
32-
/* 804DD35C */ void draw();
31+
/* 804DC7B4 */ int execute();
32+
/* 804DD35C */ int draw();
3333

3434
J3DModel* getModel() { return mpModel; }
3535
MtxP getModelMtx() { return mpModel->getBaseTRMtx(); }
@@ -38,54 +38,55 @@ class daCanoe_c : public fopAc_ac_c {
3838
void incShapeOffsetY(f32 offset) { mShapeOffsetY += offset; }
3939
void incShapeAngleZ(s16 incZ) { shape_angle.z += incZ; }
4040
void onRodID(fpc_ProcID i_rodID) { mRodID = i_rodID; }
41-
void setWaterFallDownSe() { field_0x141c.startSound(Z2SE_AL_CANOE_FALL_DW, 0, -1); }
41+
void setWaterFallDownSe() { mSound.startSound(Z2SE_AL_CANOE_FALL_DW, 0, -1); }
4242
bool checkPaddleChangeWater() { return mPaddleWaterType == 3; }
4343
void startInitPaddleWater() { mPaddleWaterType = 4; }
4444
fpc_ProcID getRodID() { return mRodID; }
4545

4646
void setAimSpeed(f32 i_speed) { mAimSpeed = i_speed; }
4747
void setAimAngle(s16 i_angle) {
4848
mAimAngle = i_angle;
49-
field_0x1442 = 1;
49+
mIsForceAimAngle = TRUE;
5050
}
5151

5252
void setPosAndAngle(cXyz const* i_pos, s16 i_angle) {
53-
field_0x14d0 = *i_pos;
54-
field_0x144a = i_angle;
55-
field_0x1446 = 1;
53+
mForcePos = *i_pos;
54+
mForceAngle = i_angle;
55+
mIsForcePosAngle = TRUE;
5656
}
5757

5858
void setPaddleOffsetRight() {
59-
field_0x1454 = 0x40;
60-
field_0x1456 = 0xF;
59+
field_0x1454 = 64;
60+
field_0x1456 = 15;
6161
}
6262

6363
void setPaddleOffsetLeft() {
64-
field_0x1454 = -0x40;
65-
field_0x1456 = 0xF;
64+
field_0x1454 = -64;
65+
field_0x1456 = 15;
6666
}
6767

6868
private:
6969
/* 0x0568 */ request_of_phase_process_class mPhaseReq;
7070
/* 0x0570 */ J3DModel* mpModel;
7171
/* 0x0574 */ J3DModel* mpPaddleModel;
7272
/* 0x0578 */ J3DModel* mpMaskModel;
73-
/* 0x057C */ dCcD_Stts field_0x57c;
74-
/* 0x05B8 */ dBgS_AcchCir field_0x5b8[9];
75-
/* 0x07F8 */ dBgS_LinkAcch field_0x7f8[3];
76-
/* 0x0D80 */ dCcD_Cyl field_0xd80[5];
77-
/* 0x13AC */ dBgS_LinkLinChk field_0x13ac;
78-
/* 0x141C */ Z2SoundObjSimple field_0x141c;
79-
/* 0x143C */ char* mResName;
73+
/* 0x057C */ dCcD_Stts mCcStts;
74+
/* 0x05B8 */ dBgS_AcchCir mAcchCir[3][3];
75+
/* 0x07F8 */ dBgS_LinkAcch mAcch[3];
76+
/* 0x0D80 */ dCcD_Cyl mCcCyl[5];
77+
/* 0x13AC */ dBgS_LinkLinChk mLineChk;
78+
/* 0x141C */ Z2SoundObjSimple mSound;
79+
/* 0x143C */ const char* mArcName;
8080
/* 0x1440 */ u8 mPaddleWaterType;
8181
/* 0x1441 */ u8 field_0x1441;
82-
/* 0x1442 */ u8 field_0x1442;
82+
/* 0x1442 */ u8 mIsForceAimAngle;
8383
/* 0x1443 */ u8 mJumpRideFlg;
8484
/* 0x1444 */ u8 field_0x1444;
85-
/* 0x1445 */ u8 mReverb;
86-
/* 0x1446 */ u8 field_0x1446;
85+
/* 0x1445 */ s8 mReverb;
86+
/* 0x1446 */ u8 mIsForcePosAngle;
87+
/* 0x1447 */ u8 mIsSliderHit;
8788
/* 0x1448 */ s16 field_0x1448;
88-
/* 0x144A */ s16 field_0x144a;
89+
/* 0x144A */ s16 mForceAngle;
8990
/* 0x144C */ s16 mAimAngle;
9091
/* 0x144E */ s16 field_0x144e;
9192
/* 0x1450 */ s16 field_0x1450;
@@ -94,24 +95,26 @@ class daCanoe_c : public fopAc_ac_c {
9495
/* 0x1456 */ s16 field_0x1456;
9596
/* 0x1458 */ s16 field_0x1458;
9697
/* 0x145A */ s16 field_0x145a;
97-
/* 0x145C */ s16 field_0x145c;
98-
/* 0x145E */ s16 field_0x145e;
98+
/* 0x145C */ s16 mHitInvulnerabilityTimer;
99+
/* 0x145E */ u16 mHitCount;
99100
/* 0x1460 */ s16 field_0x1460;
100101
/* 0x1464 */ fpc_ProcID mRodID;
101102
/* 0x1468 */ f32 mAimSpeed;
102103
/* 0x146C */ f32 mShapeOffsetY;
103104
/* 0x1470 */ f32 field_0x1470;
104-
/* 0x1474 */ u32 field_0x1474;
105-
/* 0x1478 */ u8 field_0x1478[0x1480 - 0x1478];
105+
/* 0x1474 */ u32 mShadowId;
106+
/* 0x1478 */ u32 field_0x1478;
107+
/* 0x147C */ u8 field_0x147c[0x1480 - 0x147C];
106108
/* 0x1480 */ u32 field_0x1480;
107-
/* 0x1484 */ u8 field_0x1484[0x1490 - 0x1484];
109+
/* 0x1484 */ u8 field_0x1484[0x1488 - 0x1484];
110+
/* 0x1488 */ u32 field_0x1488[2];
108111
/* 0x1490 */ u32 field_0x1490;
109-
/* 0x1494 */ cXyz field_0x1494;
110-
/* 0x14A0 */ cXyz field_0x14a0;
111-
/* 0x14AC */ cXyz field_0x14ac;
112-
/* 0x14B8 */ cXyz field_0x14b8;
113-
/* 0x14C4 */ cXyz field_0x14c4;
114-
/* 0x14D0 */ cXyz field_0x14d0;
112+
/* 0x1494 */ cXyz mFrontPos;
113+
/* 0x14A0 */ cXyz mBackPos;
114+
/* 0x14AC */ cXyz mOldFrontPos;
115+
/* 0x14B8 */ cXyz mOldBackPos;
116+
/* 0x14C4 */ cXyz mWaterSpeed;
117+
/* 0x14D0 */ cXyz mForcePos;
115118
};
116119

117120
STATIC_ASSERT(sizeof(daCanoe_c) == 0x14dc);

include/d/actor/d_a_player.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,8 @@ class daPy_py_c : public fopAc_ac_c {
10461046
void onForceSubjectCancel() { onEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL); }
10471047
void onEnemyDead() { onEndResetFlg0(ERFLG0_ENEMY_DEAD); }
10481048
void offDkCaught2() { offNoResetFlg0(FLG0_UNK_20000); }
1049+
void onWaterFallFrontHit() { onEndResetFlg1(ERFLG1_UNK_800); }
1050+
void onCanoeItemCancel() { onEndResetFlg1(ERFLG1_UNK_20000000); }
10491051

10501052
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
10511053
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }

include/d/d_meter2_info.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ class dMeter2Info_c {
156156
void setMsgTimeMs(u32 msgTime) { mMsgTimeMs = msgTime; }
157157
void setTimeMs(s32 i_time) { mTimeMs = i_time; }
158158
u32 getTimeMs() { return mTimeMs; }
159-
int getNowCount() { return mNowCount; }
159+
u8 getNowCount() { return mNowCount; }
160160
int getMaxCount() { return mMaxCount; }
161161
void setScopeZoomPointer(u8 param_0) { mScopeZoomPointer = param_0; }
162162
u8 getItemExplainWindowStatus() { return mItemExplainWindowStatus; }
@@ -635,7 +635,7 @@ inline void dMeter2Info_setTimeMs(s32 i_time) {
635635
g_meter2_info.setTimeMs(i_time);
636636
}
637637

638-
inline int dMeter2Info_getNowCount() {
638+
inline u8 dMeter2Info_getNowCount() {
639639
return g_meter2_info.getNowCount();
640640
}
641641

@@ -816,6 +816,10 @@ inline void dMeter2Info_setFloatingMessage(u16 pMessageID, s16 pMessageTimer, bo
816816
g_meter2_info.setFloatingMessage(pMessageID, pMessageTimer, pWakuVisible);
817817
}
818818

819+
inline void dMeter2Info_setMiniGameCount(s8 i_count) {
820+
g_meter2_info.setMiniGameCount(i_count);
821+
}
822+
819823
const char* dMeter2Info_getPlusTextureName();
820824
const char* dMeter2Info_getNumberTextureName(int pIndex);
821825
int dMeter2Info_recieveLetter();

src/d/actor/d_a_L7demo_dr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ int daDr_c::create() {
364364
if (dComIfG_play_c::getLayerNo(0) == 3) {
365365
phase_state = dComIfG_resLoad(&mPhase, "B_dr");
366366
if (phase_state == cPhs_COMPLEATE_e) {
367-
OS_REPORT("dr PARAM %x\n", fopAcM_GetParam());
367+
OS_REPORT("dr PARAM %x\n", fopAcM_GetParam(this));
368368
OS_REPORT("dr//////////////DR SET 1 !!\n");
369369

370370
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x68C0)) {

0 commit comments

Comments
 (0)