Miscellaneous retail+debug fixes, link several new TUs (#2836)

This commit is contained in:
Max Roncace
2025-11-21 02:09:21 -05:00
committed by GitHub
parent f171287913
commit 81017cf22c
24 changed files with 1354 additions and 1082 deletions
@@ -469,6 +469,7 @@ l_centerOfst = .bss:0x00000054; // type:object size:0xC scope:global
@4027 = .bss:0x00000060; // type:object size:0xC scope:local
l_HIO = .bss:0x0000006C; // type:object size:0x4 scope:global
@5037 = .bss:0x00000070; // type:object size:0xC scope:local
init$5038 = .bss:0x0000007C; // type:object size:0x1 scope:local
@5040 = .bss:0x00000080; // type:object size:0xC scope:local
@5041 = .bss:0x0000008C; // type:object size:0xC scope:local
@5042 = .bss:0x00000098; // type:object size:0xC scope:local
@@ -485,8 +486,10 @@ l_HIO = .bss:0x0000006C; // type:object size:0x4 scope:global
@5053 = .bss:0x0000011C; // type:object size:0xC scope:local
aTrembleTrans$5036 = .bss:0x00000128; // type:object size:0xB4 scope:local
@5298 = .bss:0x000001DC; // type:object size:0xC scope:local
init$5299 = .bss:0x000001E8; // type:object size:0x1 scope:local
aOfst$5297 = .bss:0x000001EC; // type:object size:0xC scope:local
@5404 = .bss:0x000001F8; // type:object size:0xC scope:local
init$5405 = .bss:0x00000204; // type:object size:0x1 scope:local
aEyeOfst$5403 = .bss:0x00000208; // type:object size:0xC scope:local
@5648 = .bss:0x00000214; // type:object size:0xC scope:local
@5651 = .bss:0x00000224; // type:object size:0xC scope:local
@@ -76,4 +76,4 @@ __vt__8cM3dGCyl = .data:0x0000011C; // type:object size:0xC scope:global
__vt__12dBgS_ObjAcch = .data:0x00000128; // type:object size:0x24 scope:global
__vt__12J3DFrameCtrl = .data:0x0000014C; // type:object size:0xC scope:global
__vt__13daObjLv7Brg_c = .data:0x00000158; // type:object size:0x28 scope:global
lbl_559_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
init$3943 = .bss:0x00000000; // type:object size:0x1 data:byte
@@ -13,3 +13,4 @@ d/actor/d_a_obj_lv7bridge.cpp:
.text start:0x00000078 end:0x00001698
.rodata start:0x00000000 end:0x00000094
.data start:0x00000000 end:0x00000180
.bss start:0x00000000 end:0x00000004
@@ -75,4 +75,4 @@ __vt__8cM3dGCyl = .data:0x0000011C; // type:object size:0xC scope:global
__vt__12dBgS_ObjAcch = .data:0x00000128; // type:object size:0x24 scope:global
__vt__12J3DFrameCtrl = .data:0x0000014C; // type:object size:0xC scope:global
__vt__13daObjLv7Brg_c = .data:0x00000158; // type:object size:0x28 scope:global
lbl_559_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
init$3943 = .bss:0x00000000; // type:object size:0x1 data:byte
@@ -75,4 +75,4 @@ __vt__8cM3dGCyl = .data:0x0000011C; // type:object size:0xC scope:global
__vt__12dBgS_ObjAcch = .data:0x00000128; // type:object size:0x24 scope:global
__vt__12J3DFrameCtrl = .data:0x0000014C; // type:object size:0xC scope:global
__vt__13daObjLv7Brg_c = .data:0x00000158; // type:object size:0x28 scope:global
lbl_559_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
init$3943 = .bss:0x00000000; // type:object size:0x1 data:byte
+8 -8
View File
@@ -1612,7 +1612,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_demo00"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_disappear"),
ActorRel(NonMatching, "d_a_mg_rod"),
ActorRel(MatchingFor("GZ2E01"), "d_a_midna"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_midna"),
ActorRel(Equivalent, "d_a_nbomb"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_life_container"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_yousei"),
@@ -1806,7 +1806,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_vt"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_warpappear"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_wb"),
ActorRel(NonMatching, "d_a_e_ws"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ws"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ww"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yc"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yd"),
@@ -1838,8 +1838,8 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_kytag13"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_kytag15"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_kytag16"),
ActorRel(NonMatching, "d_a_mant"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_mg_fshop"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_mant"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_mg_fshop"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_mirror"),
ActorRel(NonMatching, "d_a_movie_player", extra_cflags=["-O3,p"]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_myna"),
@@ -1851,7 +1851,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_blue_ns"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_bou"),
ActorRel(Equivalent, "d_a_npc_bouS"), # weak func order
ActorRel(NonMatching, "d_a_npc_cdn3"),
ActorRel(Equivalent, "d_a_npc_cdn3"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_chat"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_chin"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_clerka"),
@@ -1922,7 +1922,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seirei"),
ActorRel(Equivalent, "d_a_npc_shad"), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shaman"),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_shoe"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shoe"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop0"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_shop_maro"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_sola"),
@@ -2119,8 +2119,8 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6elevta"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6swturn"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv7BsGate"),
ActorRel(NonMatching, "d_a_obj_lv7PropellerY"),
ActorRel(Equivalent, "d_a_obj_lv7bridge"), # small regalloc
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv7PropellerY"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv7bridge"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8KekkaiTrap"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8Lift"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8OptiLift"),
-18
View File
@@ -77,23 +77,5 @@ public:
STATIC_ASSERT(sizeof(daE_WS_c) == 0xb80);
class daE_WS_HIO_c : public JORReflexible {
public:
/* 807E3A0C */ daE_WS_HIO_c();
/* 807E6E44 */ virtual ~daE_WS_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s8 id;
/* 0x08 */ f32 base_size;
/* 0x0C */ f32 move_range;
/* 0x10 */ f32 search_range;
/* 0x14 */ f32 search_y_range;
/* 0x18 */ f32 dist_to_ground;
/* 0x1C */ f32 search_angle;
/* 0x20 */ f32 attack_speed;
/* 0x24 */ u8 debug_ON;
};
#endif /* D_A_E_WS_H */
+60 -108
View File
@@ -35,18 +35,18 @@ struct daNpcCd2_HIO_MChild_c {
/* 8015A808 */ daNpcCd2_HIO_MChild_c() {}
/* 0x004 */ daNpcCd2_HIO_Jnt_c field_0x004[19];
/* 0x1CE */ s16 mMaxLmtY_BACKBONE;
/* 0x1CA */ s16 mMaxLmtX_BACKBONE;
/* 0x1CC */ s16 mMinLmtY_BACKBONE;
/* 0x1CE */ s16 mMinLmtX_BACKBONE;
/* 0x1D0 */ s16 mMaxLmtY_NECK;
/* 0x1D2 */ s16 mMaxLmtX_NECK;
/* 0x1D4 */ s16 mMinLmtY_NECK;
/* 0x1D6 */ s16 mMinLmtX_NECK;
/* 0x1D0 */ s16 mMaxLmtY_HEAD;
/* 0x1D2 */ s16 mMaxLmtX_HEAD;
/* 0x1D4 */ s16 mMinLmtY_HEAD;
/* 0x1D6 */ s16 mMinLmtX_HEAD;
/* 0x1CE */ s16 mMaxLmtX_BACKBONE;
/* 0x1CA */ s16 mMaxLmtY_BACKBONE;
/* 0x1CC */ s16 mMinLmtX_BACKBONE;
/* 0x1CE */ s16 mMinLmtY_BACKBONE;
/* 0x1D0 */ s16 mMaxLmtX_NECK;
/* 0x1D2 */ s16 mMaxLmtY_NECK;
/* 0x1D4 */ s16 mMinLmtX_NECK;
/* 0x1D6 */ s16 mMinLmtY_NECK;
/* 0x1D0 */ s16 mMaxLmtX_HEAD;
/* 0x1D2 */ s16 mMaxLmtY_HEAD;
/* 0x1D4 */ s16 mMinLmtX_HEAD;
/* 0x1D6 */ s16 mMinLmtY_HEAD;
/* 0x1E0 */ f32 mScale;
/* 0x1E4 */ s16 mAttn;
/* 0x1E8 */ f32 mAnmPlaySpeed;
@@ -64,18 +64,18 @@ struct daNpcCd2_HIO_WChild_c {
/* 8015A730 */ daNpcCd2_HIO_WChild_c() {}
/* 0x004 */ daNpcCd2_HIO_Jnt_c field_0x004[21];
/* 0x1FE */ s16 mMaxLmtY_BACKBONE;
/* 0x1FA */ s16 mMaxLmtX_BACKBONE;
/* 0x1FC */ s16 mMinLmtY_BACKBONE;
/* 0x1FE */ s16 mMinLmtX_BACKBONE;
/* 0x200 */ s16 mMaxLmtY_NECK;
/* 0x202 */ s16 mMaxLmtX_NECK;
/* 0x204 */ s16 mMinLmtY_NECK;
/* 0x206 */ s16 mMinLmtX_NECK;
/* 0x200 */ s16 mMaxLmtY_HEAD;
/* 0x202 */ s16 mMaxLmtX_HEAD;
/* 0x204 */ s16 mMinLmtY_HEAD;
/* 0x206 */ s16 mMinLmtX_HEAD;
/* 0x1FE */ s16 mMaxLmtX_BACKBONE;
/* 0x1FA */ s16 mMaxLmtY_BACKBONE;
/* 0x1FC */ s16 mMinLmtX_BACKBONE;
/* 0x1FE */ s16 mMinLmtY_BACKBONE;
/* 0x200 */ s16 mMaxLmtX_NECK;
/* 0x202 */ s16 mMaxLmtY_NECK;
/* 0x204 */ s16 mMinLmtX_NECK;
/* 0x206 */ s16 mMinLmtY_NECK;
/* 0x200 */ s16 mMaxLmtX_HEAD;
/* 0x202 */ s16 mMaxLmtY_HEAD;
/* 0x204 */ s16 mMinLmtX_HEAD;
/* 0x206 */ s16 mMinLmtY_HEAD;
/* 0x218 */ f32 mScale;
/* 0x21C */ s16 mAttn;
/* 0x220 */ f32 mAnmPlaySpeed;
@@ -148,123 +148,75 @@ inline f32 Cd2_HIO_cylH(int param_1) {
}
inline s16 Cd2_HIO_maxLmtX_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_BACKBONE);
}
inline s16 Cd2_HIO_maxLmtY_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_BACKBONE);
}
inline s16 Cd2_HIO_maxLmtX_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_NECK);
}
inline s16 Cd2_HIO_maxLmtY_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_NECK);
}
inline s16 Cd2_HIO_maxLmtX_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_HEAD);
}
inline s16 Cd2_HIO_maxLmtY_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_HEAD);
}
inline s16 Cd2_HIO_minLmtX_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_BACKBONE);
}
inline s16 Cd2_HIO_minLmtY_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_BACKBONE);
}
inline s16 Cd2_HIO_minLmtX_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_NECK);
}
inline s16 Cd2_HIO_minLmtY_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_NECK);
}
inline s16 Cd2_HIO_minLmtX_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_HEAD);
}
inline s16 Cd2_HIO_minLmtY_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_HEAD);
}
class PathTrace_c {
+75 -52
View File
@@ -93,6 +93,7 @@ public:
/* 8097C844 */ int sing(void*);
/* 8097C910 */ int create();
/* 8097CC58 */ void create_init();
inline int createHeap();
/* 8097D078 */ void setMtx();
/* 8097D120 */ void lookat();
/* 8097D684 */ virtual ~daNpcCdn3_c();
@@ -102,17 +103,23 @@ public:
inline int draw();
int getTimeHour() {
int hour;
if (mIsDarkWorld) {
return dKy_getDarktime_hour();
}
return dKy_getdaytime_hour();
hour = dKy_getDarktime_hour();
} else {
hour = dKy_getdaytime_hour();
}
return hour;
}
int getTimeMinute() {
int minute;
if (mIsDarkWorld) {
return dKy_getDarktime_minute();
}
return dKy_getdaytime_minute();
minute = dKy_getDarktime_minute();
} else {
minute = dKy_getdaytime_minute();
}
return minute;
}
int getTime() {
@@ -120,20 +127,23 @@ public:
}
int getDayOfWeek() {
int day;
if (mIsDarkWorld) {
return dKy_getDarktime_week();
day = dKy_getDarktime_week();
} else {
return dKy_get_dayofweek();
day = dKy_get_dayofweek();
}
return day;
}
void setSpeed(f32* param_1, f32 param_2, f32 param_3, int param_4) {
f32 target = field_0xb5c * (param_3 * field_0xb5c);
f32 step = field_0xb5c * (param_2 * field_0xb5c);
if (param_3 < target) {
target = param_3;
void setSpeed(f32 param_0, f32 param_1, f32* param_2, int param_3) {
(void)param_3;
f32 target = field_0xb5c * (param_1 * field_0xb5c);
f32 step = field_0xb5c * (param_0 * field_0xb5c);
if (param_1 < target) {
target = param_1;
}
cLib_chaseF(param_1, target, step);
cLib_chaseF(param_2, target, step);
}
int getGroupID() { return fopAcM_GetParam(this) & 0xff; }
@@ -142,15 +152,17 @@ public:
int getType() { return argument & 0x7f; }
int getSeqNum() { return shape_angle.x & 0x3f; }
int getFlowNodeNum() { return shape_angle.z; }
u16 getStartTime() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
u16 getEndTime() { return (fopAcM_GetParam(this) >> 16) & 0xff; }
u8 getStartTime() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
u8 getEndTime() { return (fopAcM_GetParam(this) >> 16) & 0xff; }
void initParamTime() {
u16 startTime = getStartTime();
u16 endTime = getEndTime();
u16 x;
u16 y;
u8 startTime = getStartTime();
u8 endTime = getEndTime();
if (startTime != 0xff && endTime != 0xff) {
u16 x = startTime / 10;
u16 y = (startTime % 10) * 10;
x = startTime / 10;
y = (startTime % 10) * 10;
field_0xb8c = y + x * 60;
x = endTime / 10;
y = (endTime % 10) * 10;
@@ -179,78 +191,77 @@ public:
}
int getObjNum() {
u8 uVar3 = (shape_angle.x >> 6) & 0xf;
int rv;
int uVar3 = (shape_angle.x >> 6) & 0xf;
if (isM_()) {
switch (uVar3) {
case 0:
rv = 0;
uVar3 = 0;
break;
case 1:
rv = 1;
uVar3 = 1;
break;
case 2:
rv = 2;
uVar3 = 2;
break;
case 3:
rv = 4;
uVar3 = 4;
break;
case 4:
rv = 6;
uVar3 = 6;
break;
case 5:
rv = 0;
uVar3 = 0;
break;
case 6:
rv = 0;
uVar3 = 0;
break;
case 7:
rv = 9;
uVar3 = 9;
break;
default:
rv = 0;
uVar3 = 0;
break;
}
/* dSv_event_flag_c::F_0281 - Shop - Malo Mart opens in Castle Town */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[281]) && rv == 9) {
rv = 0xb;
if (dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[281]) && uVar3 == 9) {
uVar3 = 0xb;
}
} else {
switch (uVar3) {
case 0:
rv = 0;
uVar3 = 0;
break;
case 1:
rv = 8;
uVar3 = 8;
break;
case 2:
rv = 3;
uVar3 = 3;
break;
case 3:
rv = 5;
uVar3 = 5;
break;
case 4:
rv = 7;
uVar3 = 7;
break;
case 5:
rv = 0;
uVar3 = 0;
break;
case 6:
rv = 0;
uVar3 = 0;
break;
case 7:
rv = 10;
uVar3 = 10;
break;
default:
rv = 0;
uVar3 = 0;
break;
}
/* dSv_event_flag_c::F_0281 - Shop - Malo Mart opens in Castle Town */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[281]) && rv == 10) {
rv = 12;
if (dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[281]) && uVar3 == 10) {
uVar3 = 12;
}
}
return rv;
return uVar3;
}
void initCollision() {
@@ -277,11 +288,11 @@ public:
if (strcmp(dComIfGp_getStartStageName(), "F_SP116") != 0) {
return 0;
} else {
if (mSeqNum == 17 &&
if (m_seqNum == 17 &&
(getType() == 4 || getType() == 5 || getType() == 6 || getType() == 16))
{
return 1;
} else if (mSeqNum == 37 && getType() == 7) {
} else if (m_seqNum == 37 && getType() == 7) {
return 1;
} else {
return 0;
@@ -314,7 +325,14 @@ public:
}
int orderEvent() {
if ((!mIsDarkWorld || daPy_py_c::checkNowWolfEyeUp()) && mFlowNodeNum > 0 && ((attention_info.flags & fopAc_AttnFlag_SPEAK_e) || (attention_info.flags & fopAc_AttnFlag_TALK_e))) {
#if PLATFORM_SHIELD
if (mFlowNodeNum > 0) {
#else
if ((!mIsDarkWorld || daPy_py_c::checkNowWolfEyeUp()) &&
mFlowNodeNum > 0 &&
((attention_info.flags & fopAc_AttnFlag_SPEAK_e) ||
(attention_info.flags & fopAc_AttnFlag_TALK_e))) {
#endif
eventInfo.onCondition(dEvtCnd_CANTALK_e);
}
return 1;
@@ -323,7 +341,12 @@ public:
inline bool searchFirstScheduleTag();
inline bool searchNextScheduleTag();
static actionFunc ActionTable[8][2];
struct ActionPair {
actionFunc mInitFn;
actionFunc mExecFn;
};
static const ActionPair ActionTable[8];
static seqFunc* m_funcTbl[44];
static seqFunc m_seq00_funcTbl[2];
static seqFunc m_seq01_funcTbl[2];
@@ -375,7 +398,7 @@ public:
/* 0xAD0 */ PathTrace_c m_path;
/* 0xAE8 */ daNpcT_ActorMngr_c m_targetAct;
/* 0xB00 */ dMsgFlow_c mMsgFlow;
/* 0xB4C */ daNpcCdn3_c::actionFunc* mAction;
/* 0xB4C */ const actionFunc* mAction;
/* 0xB50 */ Mode_e mMode;
/* 0xB54 */ Mode_e mPrevMode;
/* 0xB58 */ int mObjNum;
@@ -386,7 +409,7 @@ public:
/* 0xB6C */ int mMsgIndex;
/* 0xB70 */ int mFlowNodeNum;
/* 0xB74 */ int field_0xb74;
/* 0xB78 */ int mSeqNum;
/* 0xB78 */ int m_seqNum;
/* 0xB7C */ int field_0xb7c;
/* 0xB80 */ J3DAnmTransform* field_0xb80;
/* 0xB84 */ daTagSchedule_c* mTagSched;
@@ -398,7 +421,7 @@ public:
/* 0xB94 */ u8 field_0xb94;
/* 0xB95 */ u8 field_0xb95;
/* 0xB96 */ u8 field_0xb96;
/* 0xB97 */ u8 field_0xb97;
/* 0xB97 */ u8 m_seqStep;
/* 0xB98 */ u8 field_0xb98;
/* 0xB99 */ u8 field_0xb99;
};
+5
View File
@@ -34,6 +34,7 @@ public:
/* 80BC5CF8 */ int CreateHeap();
/* 80BC5E98 */ int create();
/* 80BC6260 */ int Execute(Mtx**);
void block_mode_proc_call();
/* 80BC6270 */ void initWait();
/* 80BC627C */ void modeWait();
/* 80BC6414 */ void initWalk();
@@ -70,6 +71,10 @@ private:
/* 0xCA3 */ u8 field_0xca3;
/* 0xCA4 */ s16 walkTimer;
/* 0xCA6 */ s16 field_0xca6;
#if DEBUG
/* 0xCB0 */ cXyz field_0xcb0_debug[2];
/* 0xCC8 */ cXyz field_0xcc8_debug[2];
#endif
};
STATIC_ASSERT(sizeof(daObjCBlk_c) == 0xca8);
+2
View File
@@ -43,6 +43,8 @@ public:
/* 80CE7CC4 */ void setMtx();
/* 80CE7D28 */ void setAttnPos();
/* 80CE7D5C */ int wait(void* param_0);
int buy(void* param_0);
int cancel(void* param_0);
static dCcD_SrcGObjInf const mCcDObjInfo;
static dCcD_SrcCyl mCcDCyl;
+7 -3
View File
@@ -11,13 +11,17 @@ public:
}
int getSeqNum() { return (fopAcM_GetParam(this) >> 6) & 0x3f; }
u16 getStartTime() { return (fopAcM_GetParam(this) >> 12) & 0xff; }
u8 getStartTime() { return (fopAcM_GetParam(this) >> 12) & 0xff; }
u8 getStartEnd() { return (fopAcM_GetParam(this) >> 20) & 0xff; }
int getGroupID() { return fopAcM_GetParam(this) & 0x3f; }
int getWeekNum() { return mWeekNum; }
void setWeekNum(int weekNum) { mWeekNum = weekNum; }
#if PLATFORM_SHIELD
void setWeekNum(u32 weekNum) { mWeekNum = weekNum % 7; }
#else
void setWeekNum(int weekNum) { mWeekNum = weekNum % (u32)7; }
#endif
u8 getPathID() { return shape_angle.x & 0xff; }
s16 getFlowNodeNum() { return shape_angle.z; }
int getFlowNodeNum() { return shape_angle.z; }
/* 0x568 */ int mWeekNum;
};
+31 -12
View File
@@ -293,19 +293,38 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) {
int uVar13;
for (;
(int)pDListPos - (int)pDList < pModelData->getShapeNodePointer(i)->getShapeDraw(j)->getDisplayListSize();
pDListPos += r23 * uVar13)
pDListPos += r23 * uVar13
//TODO: This loop's logic has drastically different codegen between GCN and Shield
// in a way that so far can't be pinned down as just compiler differences. This
// may have been refactored in the J3D version used for Shield, but note that
// it's very possible that this is a fakematch and there's some other way of
// expressing it that matches for both versions.
#if PLATFORM_GCN
, pDListPos += 3
#endif
)
{
u8 command = *pDListPos;
#if !PLATFORM_GCN
pDListPos++;
#endif
if (command != GX_TRIANGLEFAN && command != GX_TRIANGLESTRIP) {
break;
}
#if PLATFORM_GCN
uVar13 = *(u16*)(pDListPos + 1);
#else
uVar13 = *(u16*)pDListPos;
pDListPos += 2;
#endif
for (int local_60 = 0; local_60 < uVar13; local_60++) {
u8* iVar5 = pDListPos + r23 * local_60;
u8 bVar3 = *(iVar5 + pnmtx_num) / 3U;
#if PLATFORM_GCN
u8* iVar5 = ((u8*)(pDListPos + 3) + r23 * local_60);
#else
u8* iVar5 = ((u8*)pDListPos + r23 * local_60);
#endif
u8 bVar3 = *(u8*)(iVar5 + pnmtx_num) / 3U;
u16 vtx_idx = *(u16*)(iVar5 + vtx_num);
u16 nrm_idx = *(u16*)(iVar5 + nrm_num);
u16 uVar3 = *(u16*)(iVar5 + tex_num);
@@ -563,8 +582,8 @@ void J3DSkinDeform::deformVtxPos_F32(J3DVertexBuffer* pVtxBuffer, J3DMtxBuffer*
J3DJointTree* jointTree = pMtxBuffer->getJointTree();
int vtxNum = pVtxBuffer->getVertexData()->getVtxNum();
int sp8 = jointTree->getDrawMtxNum();
void* currentVtxPos = pVtxBuffer->getCurrentVtxPos();
void* transformedVtxPos = pVtxBuffer->getTransformedVtxPos(0);
void* currentVtxPos = (void*)pVtxBuffer->getCurrentVtxPos();
void* transformedVtxPos = (void*)pVtxBuffer->getTransformedVtxPos(0);
for (int i = 0; i < vtxNum; i++) {
anmMtx = anmMtxs[jointTree->getDrawMtxFlag(mPosData[i])];
@@ -590,8 +609,8 @@ void J3DSkinDeform::deformVtxPos_S16(J3DVertexBuffer* pVtxBuffer, J3DMtxBuffer*
J3DJointTree* jointTree = pMtxBuffer->getJointTree();
int vtxNum = pVtxBuffer->getVertexData()->getVtxNum();
int sp8 = jointTree->getDrawMtxNum();
void* currentVtxPos = pVtxBuffer->getCurrentVtxPos();
void* transformedVtxPos = pVtxBuffer->getTransformedVtxPos(0);
void* currentVtxPos = (void*)pVtxBuffer->getCurrentVtxPos();
void* transformedVtxPos = (void*)pVtxBuffer->getTransformedVtxPos(0);
for (int i = 0; i < vtxNum; i++) {
anmMtx = anmMtxs[jointTree->getDrawMtxFlag(mPosData[i])];
@@ -608,8 +627,8 @@ void J3DSkinDeform::deformVtxPos_S16(J3DVertexBuffer* pVtxBuffer, J3DMtxBuffer*
void J3DSkinDeform::deformVtxNrm_F32(J3DVertexBuffer* pVtxBuffer) const {
pVtxBuffer->swapTransformedVtxNrm();
int nrmNum = pVtxBuffer->getVertexData()->getNrmNum();
void* currentVtxNrm = pVtxBuffer->getCurrentVtxNrm();
void* transformedVtxNrm = pVtxBuffer->getTransformedVtxNrm(0);
void* currentVtxNrm = (void*)pVtxBuffer->getCurrentVtxNrm();
void* transformedVtxNrm = (void*)pVtxBuffer->getTransformedVtxNrm(0);
for (int i = 0; i < nrmNum; i++) {
J3DPSMulMtxVec(mNrmMtx[mNrmData[i]], (Vec*)((u8*)currentVtxNrm + i * 3 * 4), (Vec*)((u8*)transformedVtxNrm + i * 3 * 4));
@@ -628,8 +647,8 @@ void J3DSkinDeform::deformVtxNrm_S16(J3DVertexBuffer* pVtxBuffer) const {
pVtxBuffer->swapTransformedVtxNrm();
int nrmNum = pVtxBuffer->getVertexData()->getNrmNum();
void* currentVtxNrm = pVtxBuffer->getCurrentVtxNrm();
void* transformedVtxNrm = pVtxBuffer->getTransformedVtxNrm(0);
void* currentVtxNrm = (void*)pVtxBuffer->getCurrentVtxNrm();
void* transformedVtxNrm = (void*)pVtxBuffer->getTransformedVtxNrm(0);
for (int i = 0; i < nrmNum; i++) {
J3DPSMulMtxVec(mNrmMtx[mNrmData[i]], (S16Vec*)(((s16*)currentVtxNrm) + (i * 3)), (S16Vec*)(((s16*)transformedVtxNrm) + (i * 3)));
+5 -5
View File
@@ -1327,15 +1327,15 @@ void daB_MGN_c::executeCircle() {
}
/* 80608EF8-80609D70 0038B8 0E78+00 2/1 0/0 0/0 .text executeDash__9daB_MGN_cFv */
// NONMATCHING - small regalloc, equivalent
// NONMATCHING - regalloc + extra mr, equivalent
void daB_MGN_c::executeDash() {
daPy_py_c* player = daPy_getPlayerActorClass();
daPy_py_c* player_sp14 = daPy_getPlayerActorClass();
switch (mMoveMode) {
case 10:
case 11: {
cXyz gate_offset(0.0f, 0.0f, -800.0f);
cXyz player_pos(player->current.pos);
cXyz player_pos(player_sp14->current.pos);
s16 angle = cLib_targetAngleY(&player_pos, &gate_offset);
if (field_0xaff >= 5) {
@@ -1449,7 +1449,7 @@ void daB_MGN_c::executeDash() {
mJewelColorMode = 2;
case 1:
attention_info.flags = 0;
if (player->checkNowWolf()) {
if (player_sp14->checkNowWolf()) {
attention_info.flags = fopAc_AttnFlag_BATTLE_e;
}
@@ -1499,7 +1499,7 @@ void daB_MGN_c::executeDash() {
field_0xb09 = 1;
attention_info.flags = 0;
if (player->checkNowWolf()) {
if (player_sp14->checkNowWolf()) {
attention_info.flags |= fopAc_AttnFlag_BATTLE_e;
cXyz sp48;
+18
View File
@@ -10,6 +10,24 @@
#include <cmath.h>
#include "f_op/f_op_actor_enemy.h"
class daE_WS_HIO_c : public JORReflexible {
public:
/* 807E3A0C */ daE_WS_HIO_c();
/* 807E6E44 */ virtual ~daE_WS_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s8 id;
/* 0x08 */ f32 base_size;
/* 0x0C */ f32 move_range;
/* 0x10 */ f32 search_range;
/* 0x14 */ f32 search_y_range;
/* 0x18 */ f32 dist_to_ground;
/* 0x1C */ f32 search_angle;
/* 0x20 */ f32 attack_speed;
/* 0x24 */ u8 debug_ON;
};
namespace {
/* 807E7448-807E7488 000038 0040+00 1/1 0/0 0/0 .data cc_ws_src__22@unnamed@d_a_e_ws_cpp@
*/
+148 -106
View File
@@ -19,6 +19,7 @@
/* 8086AD40-8086ADA0 008020 0060+00 1/0 0/0 0/0 .data l_Egnd_mantPAL */
#include "assets/l_Egnd_mantPAL.h"
#include "d/d_s_play.h"
/* 8086ADA0-8086B58C 008080 07EC+00 0/0 0/0 0/0 .data l_pos */
static u32 l_pos[507] = {
@@ -263,7 +264,6 @@ static void* tex_d[2] = {
static char lbl_277_bss_0;
/* 80861298-808616B8 000078 0420+00 1/0 0/0 0/0 .text draw__15daMant_packet_cFv */
// NONMATCHING - missing some weird stack duplication
void daMant_packet_c::draw() {
void* image = tex_d[0];
void* lut = pal_d;
@@ -298,10 +298,8 @@ void daMant_packet_c::draw() {
dKy_Global_amb_set(this->mTevStr);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXColor local_84 = {1, 0, 0, 0};
GXSetTevColor(GX_TEVREG0, local_84);
GXColor local_8c = {1, 0, 0, 0};
GXSetTevKColor(GX_KCOLOR0, local_8c);
GXSetTevColor(GX_TEVREG0, (GXColor){1, 0, 0, 0});
GXSetTevKColor(GX_KCOLOR0, (GXColor){1, 0, 0, 0});
GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_KONST, GX_CC_TEXC, GX_CC_RASC, GX_CC_C0);
@@ -334,10 +332,8 @@ void daMant_packet_c::draw() {
GXInitTexObjLOD(&GStack_74, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
GXLoadTexObj(&GStack_74, GX_TEXMAP0);
GXColor local_94 = {0, 0, 0, 0};
GXSetTevColor(GX_TEVREG0, local_94);
GXColor local_9c = {0, 0, 0, 0};
GXSetTevKColor(GX_KCOLOR0, local_9c);
GXSetTevColor(GX_TEVREG0, (GXColor){0, 0, 0, 0});
GXSetTevKColor(GX_KCOLOR0, (GXColor){0, 0, 0, 0});
GXSetCullMode(GX_CULL_FRONT);
GXLoadPosMtxImm(this->mMtx2, GX_PNMTX0);
@@ -368,154 +364,192 @@ static int daMant_Draw(mant_class* i_this) {
}
/* 8086176C-80861F60 00054C 07F4+00 1/1 0/0 0/0 .text joint_control__FP10mant_classP8mant_j_siff */
// NONMATCHING - regalloc
static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f32 param_4, f32 param_5) {
static f32 d_p[12] = {
1.4000001f, 0.6f, 0.35f, 0.3f, 0.3f, 0.3f, 0.25f, 0.2f, 0.2f, 0.2f, 0.15f, 0.1f
};
cXyz local_134, local_140, local_14c, local_158, local_164;
BOOL bVar2 = FALSE;
f32 dVar14, dVar16, dVar17, dVar18, dVar19, dVar20;
f32 fVar1;
b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(i_this->parentActorID);
mant_class* mant_sp38 = i_this;
cXyz spFC;
cXyz spF0;
cXyz spE4;
int sp34;
f32 sp30;
f32 sp2C;
f32 sp28;
cXyz* var_r30;
cXyz* sp24;
BOOL sp20 = FALSE;
cXyz spD8;
Vec spCC;
b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(mant_sp38->parentActorID);
f32 var_f31;
f32 var_f30;
f32 var_f29;
f32 var_f28;
f32 var_f27;
f32 var_f26;
f32 sp18;
f32 sp14;
if (gndActor->mDrawHorse != 0) {
bVar2 = TRUE;
local_158 = gndActor->field_0x1fb8;
sp20 = TRUE;
spD8 = gndActor->field_0x1fb8;
} else if (i_this->field_0x3966 != 0) {
local_158 = i_this->field_0x3928[0] + ((i_this->field_0x3928[1] - i_this->field_0x3928[0]) * 0.5f);
local_158.y += -60.0f;
spD8 = i_this->field_0x3928[0] + ((i_this->field_0x3928[1] - i_this->field_0x3928[0]) * 0.5f);
spD8.y += -60.0f + KREG_F(11);
}
cXyz* vec_p = param_2->field_0x0;
cXyz* pcVar9 = param_2->field_0x9c;
dBgS_GndChk(dStack_f8);
local_164 = param_2->field_0x0[0];
local_164.y += 50.0f;
var_r30 = param_2->field_0x0;
sp24 = param_2->field_0x9c;
dBgS_GndChk(sp108);
spCC = param_2->field_0x0[0];
spCC.y += 50.0f;
dStack_f8.SetPos((Vec*)&local_164);
dVar17 = dComIfG_Bgsp().GroundCross(&dStack_f8) + 3.0f;
sp108.SetPos(&spCC);
var_f27 = dComIfG_Bgsp().GroundCross(&sp108) + 3.0f;
if (dVar17 - param_2->field_0x0[0].y > 50.0f) {
dVar17 = param_2->field_0x0[0].y;
if (var_f27 - var_r30[0].y > 50.0f) {
var_f27 = var_r30[0].y;
}
cXyz cStack_170, local_17c;
cXyz local_188(0.0f, 0.0f, 0.0f);
cXyz local_194(0.0f, 0.0f, 0.0f);
cXyz local_1a0(0.0f, 0.0f, 0.0f);
cXyz spC0;
cXyz spB4;
cXyz spA8(0.0f, 0.0f, 0.0f);
cXyz sp9C(0.0f, 0.0f, 0.0f);
cXyz sp90(0.0f, 0.0f, 0.0f);
cMtx_YrotS(*calc_mtx, param_2->field_0x013a);
local_134.x = 0.0f;
local_134.y = 0.0f;
local_134.z = i_this->field_0x3954 * (cM_ssin(param_3 * 23000) * 0.05f + 1.0f);
MtxPosition(&local_134, &cStack_170);
spFC.x = 0.0f;
spFC.y = 0.0f;
spFC.z = i_this->field_0x3954 * (cM_ssin(param_3 * 23000) * 0.05f + 1.0f);
MtxPosition(&spFC, &spC0);
cXyz local_1ac;
cXyz sp84;
s16 sVar3 = param_3 + -6;
if (sVar3 < 0) {
sVar3 *= -1;
s16 sp0C;
s16 sp0A;
s16 sp08 = param_3 + -6;
if (sp08 < 0) {
sp08 *= -1;
}
sVar3 *= -4000;
local_134.x = 0.0f;
local_134.y = 0.0f;
local_134.z = i_this->field_0x394c;
local_134.z *= i_this->scale.y;
sp08 *= (s16)(-4000 + VREG_S(5));
spFC.x = 0.0f;
spFC.y = 0.0f;
spFC.z = i_this->field_0x394c;
spFC.z *= i_this->scale.y;
for (int i = 0; i < 13; i++, vec_p++, pcVar9++) {
if (0 < i) {
dVar16 = i_this->field_0x3950;
for (sp34 = 0; sp34 < 13; sp34++, var_r30++, sp24++) {
if (0 < sp34) {
sp14 = i_this->field_0x3950;
local_17c = cStack_170 * d_p[i - 1];
spB4 = spC0 * (d_p[sp34 - 1] + NREG_F(sp34));
dVar18 = i_this->field_0x3958;
dVar18 *= 1.0f - i * 0.07f;
local_1ac.zero();
sp18 = i_this->field_0x3958;
sp18 *= 1.0f + VREG_F(0) - sp34 * (0.07f + VREG_F(1));
sp84.zero();
// (1.0f / 100.0f)
if (param_4 > 0.01f) {
dVar16 = 0.0f;
f32 dVar14 = param_4 * (i * 0.2f + 1.0f);
sp14 = 0.0f + VREG_F(15);
var_f26 = param_4 * (sp34 * (0.2f + VREG_F(16)) + 1.0f);
cMtx_YrotS(*calc_mtx, param_2->field_0x013a);
cMtx_XrotM(*calc_mtx, param_2->field_0x0138);
local_140.x = (dVar14 * 2.0f) * cM_ssin(i_this->field_0x25a0 * 0x1000 + (i * -7500) + sVar3);
local_140.y = (dVar14 * 5.0f) * cM_ssin(i_this->field_0x25a0 * 0x1800 + (i * -7000) + sVar3);
local_140.z = -15.0f;
MtxPosition(&local_140, &local_1ac);
spF0.x = ((2.0f + VREG_F(17)) * var_f26) *
cM_ssin(i_this->field_0x25a0 * (0x1000 + JREG_S(0)) +
(sp34 * (-7500 + JREG_S(1))) + sp08);
spF0.y = ((5.0f + VREG_F(18)) * var_f26) *
cM_ssin(i_this->field_0x25a0 * (0x1800 + JREG_S(2)) +
(sp34 * (-7000 + JREG_S(3))) + sp08);
spF0.z = -15.0f + VREG_F(19);
MtxPosition(&spF0, &sp84);
}
if (param_5 > 0.01f) {
dVar14 = param_5 * (i * 0.2f + 1.0f);
var_f26 = param_5 * (sp34 * (0.2f + VREG_F(16)) + 1.0f);
cMtx_YrotS(*calc_mtx, param_2->field_0x013a + -6000);
cMtx_XrotM(*calc_mtx, -5000);
local_140.x = (dVar14 * 2.0f) * cM_ssin(i_this->field_0x25a0 * 0x448 + (i * -7000) + sVar3);
local_140.y = (dVar14 * 6.0f) * cM_ssin(i_this->field_0x25a0 * 0xc48 + (i * -7500) + sVar3);
local_140.z = param_5 * -15.0f;
MtxPosition(&local_140, &local_14c);
local_1ac += local_14c;
spF0.x = ((2.0f + VREG_F(17)) * var_f26) *
cM_ssin(i_this->field_0x25a0 * (0x448 + JREG_S(0)) +
(sp34 * (-7000 + JREG_S(1))) + sp08);
spF0.y = ((6.0f + VREG_F(18)) * var_f26) *
cM_ssin(i_this->field_0x25a0 * (0xc48 + JREG_S(2)) +
(sp34 * (-7500 + JREG_S(3))) + sp08);
spF0.z = (-15.0f + VREG_F(19)) * param_5;
MtxPosition(&spF0, &spE4);
sp84 += spE4;
}
if (i_this->field_0x3960 > 0.1f) {
local_1ac.y = i_this->field_0x3960 * cM_ssin(i_this->field_0x25a0 * 0x1100 + (i * -7000) + sVar3);
sp84.y = i_this->field_0x3960 *
cM_ssin(i_this->field_0x25a0 * (0x1100 + JREG_S(2)) +
(sp34 * (-7000 + JREG_S(3))) + sp08);
}
dVar20 = (vec_p->x - vec_p[-1].x) + pcVar9->x + local_17c.x + local_1ac.x;
dVar19 = (vec_p->z - vec_p[-1].z) + pcVar9->z + local_17c.z + local_1ac.z;
dVar14 = local_1ac.y + (vec_p->y + pcVar9->y + dVar18);
sp30 = (var_r30->x - var_r30[-1].x) + sp24->x + spB4.x + sp84.x;
sp28 = (var_r30->z - var_r30[-1].z) + sp24->z + spB4.z + sp84.z;
var_f31 = var_r30->y + sp24->y + sp18 + sp84.y;
if (bVar2) {
dVar18 = dVar17;
local_14c = local_158 - *vec_p;
fVar1 = JMAFastSqrt(local_14c.x * local_14c.x + local_14c.z * local_14c.z);
if (fVar1 < 85.0f) {
dVar18 = local_158.y + 1.0f * JMAFastSqrt(7225.0f - fVar1 * fVar1);
if (sp20) {
var_f30 = var_f27;
spE4 = spD8 - *var_r30;
var_f29 = JMAFastSqrt(spE4.x * spE4.x + spE4.z * spE4.z);
var_f28 = 85.0f + KREG_F(12);
if (var_f29 < var_f28) {
var_f30 = spD8.y + 1.0f * JMAFastSqrt(var_f28 * var_f28 - var_f29 * var_f29) *
(1.0f + KREG_F(13));
}
if (dVar14 < dVar18) {
dVar14 = dVar18;
if (var_f31 < var_f30) {
var_f31 = var_f30;
}
} else if (i_this->field_0x3966 != 0) {
dVar18 = dVar17;
local_14c = local_158 - *vec_p;
fVar1 = JMAFastSqrt(local_14c.x * local_14c.x + local_14c.z * local_14c.z);
if (fVar1 < 85.0f) {
dVar18 = local_158.y + JMAFastSqrt(7225.0f - fVar1 * fVar1);
var_f30 = var_f27;
spE4 = spD8 - *var_r30;
var_f29 = JMAFastSqrt(spE4.x * spE4.x + spE4.z * spE4.z);
var_f28 = 85.0f + KREG_F(12);
if (var_f29 < var_f28) {
var_f30 = spD8.y + JMAFastSqrt(var_f28 * var_f28 - var_f29 * var_f29) *
(1.0f + KREG_F(13));
}
if (dVar14 < dVar18) {
dVar14 = dVar18;
if (var_f31 < var_f30) {
var_f31 = var_f30;
}
} else {
if (dVar14 < dVar17) {
dVar14 = dVar17;
if (var_f31 < var_f27) {
var_f31 = var_f27;
}
}
dVar14 -= vec_p[-1].y;
s16 sVar4 = -cM_atan2s(dVar14, dVar19);
s16 sVar5 = (s16)cM_atan2s(dVar20, JMAFastSqrt(dVar14 * dVar14 + dVar19 * dVar19));
sp2C = var_f31 - var_r30[-1].y;
sp0C = -cM_atan2s(sp2C, sp28);
sp0A = (s16)cM_atan2s(sp30, JMAFastSqrt(sp2C * sp2C + sp28 * sp28));
cMtx_XrotS(*calc_mtx, sVar4);
cMtx_YrotM(*calc_mtx, sVar5);
MtxPosition(&local_134, &local_14c);
cMtx_XrotS(*calc_mtx, sp0C);
cMtx_YrotM(*calc_mtx, sp0A);
MtxPosition(&spFC, &spE4);
*pcVar9 = *vec_p;
*sp24 = *var_r30;
vec_p->x = vec_p[-1].x + local_14c.x;
vec_p->y = vec_p[-1].y + local_14c.y;
vec_p->z = vec_p[-1].z + local_14c.z;
var_r30->x = var_r30[-1].x + spE4.x;
var_r30->y = var_r30[-1].y + spE4.y;
var_r30->z = var_r30[-1].z + spE4.z;
pcVar9->x = dVar16 * (vec_p->x - pcVar9->x);
pcVar9->y = dVar16 * (vec_p->y - pcVar9->y);
pcVar9->z = dVar16 * (vec_p->z - pcVar9->z);
sp24->x = sp14 * (var_r30->x - sp24->x);
sp24->y = sp14 * (var_r30->y - sp24->y);
sp24->z = sp14 * (var_r30->z - sp24->z);
}
}
}
@@ -612,7 +646,14 @@ static int mant_cut_type;
/* 808624E8-80862908 0012C8 0420+00 2/1 0/0 0/0 .text daMant_Execute__FP10mant_class */
static int daMant_Execute(mant_class* i_this) {
f32 var_f31, var_f30;
int iVar8, unaff_r29, iVar2, uVar1, uVar4;
int iVar8;
s16 unaff_r29;
int iVar2, uVar1, uVar4;
fopAc_ac_c* mant_actor = (fopAc_ac_c*)i_this;
fopAc_ac_c* unusedPlayerActor = dComIfGp_getPlayer(0);
daPy_py_c* unusedPlayer = (daPy_py_c*)unusedPlayerActor;
i_this->field_0x25a0++;
lbl_277_bss_0++;
@@ -621,7 +662,7 @@ static int daMant_Execute(mant_class* i_this) {
i_this->field_0x399e--;
}
b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(i_this->parentActorID);
b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(mant_actor->parentActorID);
if (gndActor && gndActor->mDrawHorse != 0) {
i_this->field_0x394c = 21.0f;
@@ -647,7 +688,7 @@ static int daMant_Execute(mant_class* i_this) {
i_this->field_0x3965 = 0;
i_this->field_0x3966 = 0;
i_this->field_0x3940 = i_this->current.pos;
i_this->field_0x3940 = mant_actor->current.pos;
iVar8 = 0;
@@ -674,7 +715,7 @@ static int daMant_Execute(mant_class* i_this) {
for (int i = 0; i < iVar8; i++) {
var_f31 += cM_ssin(unaff_r29);
var_f30 -= cM_scos(unaff_r29);
var_f30 += -cM_scos(unaff_r29);
uVar4 = (int)(var_f31 + 64.0f) | (int)(var_f30 + 64.0f) << 7;
@@ -725,8 +766,7 @@ static int daMant_Execute(mant_class* i_this) {
if (0 <= uVar1 && uVar1 < 0x4000) {
int iVar5 = (uVar1 & 7) + (uVar1 & 0x78) * 4 + (uVar1 >> 4 & 0x18) + (uVar1 & 0x3e00);
l_Egnd_mantTEX_U[iVar5] = 0;
l_Egnd_mantTEX[iVar5] = 0;
l_Egnd_mantTEX[iVar5] = l_Egnd_mantTEX_U[iVar5] = 0;
}
}
}
@@ -748,6 +788,8 @@ static int daMant_Delete(mant_class* i_this) {
static int daMant_Create(fopAc_ac_c* i_this) {
mant_class* m_this = (mant_class*)i_this;
fpc_ProcID unusedId = fopAcM_GetID(m_this);
fopAcM_ct(m_this, mant_class);
//m_this->field_0x0570.field_0x74 = 0;
m_this->field_0x259c = fopAcM_GetParam(i_this);
+4
View File
@@ -1686,7 +1686,11 @@ static int daFshop_Create(fopAc_ac_c* actor) {
int sp24;
if (sp10 == 1) {
#if VERSION == VERSION_GCN_JPN
sp24 = dComIfGs_getEventReg(check_kind[i]);
#else
sp24 = 2.54f * dComIfGs_getEventReg(check_kind[i]);
#endif
} else {
sp24 = dComIfGs_getEventReg(check_kind[i]);
}
+2 -2
View File
@@ -2136,12 +2136,12 @@ daNpcCd2_HIO_c::daNpcCd2_HIO_c() {
for (int j = 0; j < 19; j++) {
memcpy(&field_0x0004[i].field_0x004[j].field_0x04, a_jntTbl_M[i][j], 20);
}
memcpy(&field_0x0004[i].mMaxLmtY_BACKBONE, a_prmTbl_M + i * 0x40, 0x40);
memcpy(&field_0x0004[i].mMaxLmtX_BACKBONE, a_prmTbl_M + i * 0x40, 0x40);
}
for (int i = 0; i < 14; i++) {
for (int j = 0; j < 21; j++) {
memcpy(&field_0x20c4[i].field_0x004[j].field_0x04, a_jntTbl_W[i][j], 20);
}
memcpy(&field_0x20c4[i].mMaxLmtY_BACKBONE, a_prmTbl_W + i * 0x40, 0x40);
memcpy(&field_0x20c4[i].mMaxLmtX_BACKBONE, a_prmTbl_W + i * 0x40, 0x40);
}
}
File diff suppressed because it is too large Load Diff
+158 -49
View File
@@ -5,25 +5,50 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "Z2AudioLib/Z2Instances.h"
#include "d/actor/d_a_obj_cblock.h"
#include "d/actor/d_a_player.h"
#include "d/d_cc_d.h"
#include "d/d_path.h"
#include "d/actor/d_a_player.h"
#include "Z2AudioLib/Z2Instances.h"
#include "d/d_s_play.h"
/* 80BC5A0C-80BC5A48 0000EC 003C+00 1/1 0/0 0/0 .text initBaseMtx__11daObjCBlk_cFv */
void daObjCBlk_c::initBaseMtx() {
model1->setBaseScale(scale);
setBaseMtx();
}
#if DEBUG
#define TRAVEL_TIME (l_HIO.mTravelTime)
#define TRAVEL_DIST (l_HIO.mTravelDist)
#else
#define TRAVEL_TIME (13)
#define TRAVEL_DIST (50.0f)
#endif
/* 80BC5A48-80BC5ABC 000128 0074+00 1/1 0/0 0/0 .text setBaseMtx__11daObjCBlk_cFv */
void daObjCBlk_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y,current.pos.z);
mDoMtx_stack_c::YrotM(shape_angle.y);
model1->setBaseTRMtx(mDoMtx_stack_c::get());
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
class daObjCBlk_HIO_c : public mDoHIO_entry_c {
public:
daObjCBlk_HIO_c();
virtual ~daObjCBlk_HIO_c() {}
#if DEBUG
void genMessage(JORMContext*);
#endif
/* 0x06 */ u8 field_0x06;
/* 0x07 */ u8 field_0x07;
/* 0x08 */ u8 mWaitTime;
/* 0x09 */ u8 mTravelTime;
/* 0x0C */ f32 mGravity;
/* 0x10 */ f32 mTravelDist;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
};
/* 80BC6C9C-80BC6CA8 000054 000C+00 1/2 0/0 0/0 .bss l_chainOffset */
static cXyz l_chainOffset(0.0f, 105.0f, 30.0f);
/* 80BC6CB4-80BC6CC4 00006C 000C+04 0/1 0/0 0/0 .bss l_smokeSetOffset */
static cXyz l_smokeSetOffset(0.0f, 0.0f, -200.0f);
#if !DEBUG
static s32 unused_bss_70 = 0;
#endif
/* ############################################################################################## */
/* 80BC6A38-80BC6A50 000000 0018+00 5/5 0/0 0/0 .rodata l_cull_box */
@@ -51,12 +76,55 @@ static dCcD_SrcCyl l_cyl_src = {
{0x0}, // mGObjCo
}, // mObjInf
{
{0.0f, 0.0f, 0.0f}, // mCenter
60.0f, // mRadius
300.0f // mHeight
} // mCyl
{0.0f, 0.0f, 0.0f}, // mCenter
60.0f, // mRadius
300.0f // mHeight
} // mCyl
};
#if DEBUG
daObjCBlk_HIO_c::daObjCBlk_HIO_c() {
field_0x06 = 0;
field_0x07 = 0;
mGravity = -6.0f;
mTravelDist = 50.0f;
mTravelTime = 13;
mWaitTime = 8;
field_0x14 = 35.0f;
field_0x18 = 35.0f;
field_0x1c = 15.0f;
}
static f32 dummy1() {
return 15.0f;
}
void daObjCBlk_HIO_c::genMessage(JORMContext* ctx) {
// "Chained block"
ctx->genLabel("チェーン付きブロック", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("重力", &mGravity, -10.0f, -0.1f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("移動時間", &mTravelTime, 0.0f, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("タメ時間", &mWaitTime, 0.0f, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("移動距離", &mTravelDist, 0.0f, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
}
static daObjCBlk_HIO_c l_HIO;
#endif
/* 80BC5A0C-80BC5A48 0000EC 003C+00 1/1 0/0 0/0 .text initBaseMtx__11daObjCBlk_cFv */
void daObjCBlk_c::initBaseMtx() {
model1->setBaseScale(scale);
setBaseMtx();
}
/* 80BC5A48-80BC5ABC 000128 0074+00 1/1 0/0 0/0 .text setBaseMtx__11daObjCBlk_cFv */
void daObjCBlk_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y,current.pos.z);
mDoMtx_stack_c::YrotM(shape_angle.y);
model1->setBaseTRMtx(mDoMtx_stack_c::get());
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
/* 80BC5ABC-80BC5CBC 00019C 0200+00 1/0 0/0 0/0 .text Create__11daObjCBlk_cFv */
int daObjCBlk_c::Create() {
u8 pathId = getPathID();
@@ -138,13 +206,6 @@ daObjCBlk_c::chain_s::~chain_s() {
daObjCBlk_c::chain_s::chain_s() {
}
static inline void dummylfunc() {
static daObjCBlk_c::modeFunc l_func[2] = {
&daObjCBlk_c::modeWait,
&daObjCBlk_c::modeWalk,
};
}
/* 80BC5E98-80BC6020 000578 0188+00 1/1 0/0 0/0 .text create__11daObjCBlk_cFv */
int daObjCBlk_c::create() {
fopAcM_ct(this, daObjCBlk_c);
@@ -155,6 +216,10 @@ int daObjCBlk_c::create() {
return rv;
}
OS_REPORT("CHAIN BLOCK:%x\n", fopAcM_GetParam(this));
#if DEBUG
l_HIO.entryHIO("チェーン付きブロック");
#endif
}
return rv;
}
@@ -165,6 +230,21 @@ int daObjCBlk_c::Execute(f32 (**mtx)[3][4]) {
return 1;
}
void daObjCBlk_c::block_mode_proc_call() {
static modeFunc l_func[2] = {
&daObjCBlk_c::modeWait,
&daObjCBlk_c::modeWalk,
};
(this->*(l_func[field_0xc1e]))();
}
#if DEBUG
static void dummy5() {
OS_REPORT("Delete -> ChainBlock(id=%d)\n");
OS_REPORT("Create -> ChainBlock(id=%d)\n");
}
#endif
/* 80BC6270-80BC627C 000950 000C+00 2/2 0/0 0/0 .text initWait__11daObjCBlk_cFv */
void daObjCBlk_c::initWait() {
field_0xc1f = 0;
@@ -183,18 +263,23 @@ void daObjCBlk_c::modeWait() {
mDoMtx_stack_c::multVec(&cStack_44, &cStack_44);
cStack_38.normalizeZP();
cStack_44.normalizeZP();
f32 dVar7 = fabs(cStack_38.inprod(cStack_44));
if (dVar7 > 0.95000005f) {
f32 inprod = cStack_38.inprod(cStack_44);
if (std::fabs(inprod) > 0.95000005f + KREG_F(4)) {
bVar1 = true;
}
if (field_0xc1c != 0 && field_0xc1e != 0) {
setPower(power);
if (bVar1) {
field_0xca3++;
if (!checkWall() && player->getBaseAnimeFrame() > 6.0f && player->getBaseAnimeFrame() < 8.0f &&
field_0xca3 > 8)
if (!checkWall() && player->getBaseAnimeFrame() > 6.0f && player->getBaseAnimeFrame() < 8.0f)
{
initWalk();
#if DEBUG
if (field_0xca3 > l_HIO.mWaitTime) {
#else
if (field_0xca3 > 8) {
#endif
initWalk();
}
}
}
} else {
@@ -204,21 +289,24 @@ void daObjCBlk_c::modeWait() {
/* 80BC6414-80BC6430 000AF4 001C+00 1/1 0/0 0/0 .text initWalk__11daObjCBlk_cFv */
void daObjCBlk_c::initWalk() {
walkTimer = 13;
field_0xca6 = 2520;
u8 travelTime = TRAVEL_TIME;
walkTimer = travelTime;
field_0xca6 = 0x7fff / travelTime;
field_0xc1f = 1;
}
/* 80BC6430-80BC65CC 000B10 019C+00 1/0 0/0 0/0 .text modeWalk__11daObjCBlk_cFv */
void daObjCBlk_c::modeWalk() {
u8 travelTime = TRAVEL_TIME;
f32 travelDist = TRAVEL_DIST;
cLib_calcTimer(&walkTimer);
f32 dVar5 = cM_scos(field_0xca6 * (13 - walkTimer));
dVar5 = (1.0f - dVar5) * 0.5f;
f32 dVar5 = (1.0f - cM_scos(field_0xca6 * (travelTime - walkTimer))) * 0.5f;
cXyz local_58(0.0f, 0.0f, 1.0f);
mDoMtx_stack_c::YrotS(home.angle.y);
mDoMtx_stack_c::multVec(&local_58, &local_58);
current.pos.x = home.pos.x + local_58.x * (50.0f * (field_0xca2 + dVar5));
current.pos.z = home.pos.z + local_58.z * (50.0f * (field_0xca2 + dVar5));
current.pos.x = home.pos.x + local_58.x * (travelDist * (field_0xca2 + dVar5));
current.pos.z = home.pos.z + local_58.z * (travelDist * (field_0xca2 + dVar5));
setPower(power);
fopAcM_seStartLevel(this, Z2SE_OBJ_CBLOCK_SLIDEMOVE, 0);
if (walkTimer == 0) {
@@ -227,9 +315,6 @@ void daObjCBlk_c::modeWalk() {
}
}
/* 80BC6C9C-80BC6CA8 000054 000C+00 1/2 0/0 0/0 .bss l_chainOffset */
static cXyz l_chainOffset(0.0f, 105.0f, 30.0f);
/* 80BC65CC-80BC6648 000CAC 007C+00 2/2 0/0 0/0 .text getChainBasePos__11daObjCBlk_cFP4cXyz */
void daObjCBlk_c::getChainBasePos(cXyz* pPos) {
*pPos = l_chainOffset;
@@ -241,24 +326,36 @@ void daObjCBlk_c::getChainBasePos(cXyz* pPos) {
/* 80BC6648-80BC66DC 000D28 0094+00 2/2 0/0 0/0 .text setPower__11daObjCBlk_cFf */
void daObjCBlk_c::setPower(f32 power) {
daPy_py_c* player = daPy_getPlayerActorClass();
chain_s* pChain = chains;
chain_s* pChain = chains + 5;
cXyz local_28;
local_28 = pChain[4].position - pChain[5].position;
local_28 = pChain[-1].position - pChain[0].position;
s16 angle = cM_atan2s(local_28.x, local_28.z);
player->setOutPower(power, angle, 0);
}
static f32 dummy() {
static f32 dummy2() {
f32 f0 = -6.0f;
#if DEBUG
f32 f1 = 3.0f / 20.0f;
#else
f32 f1 = 3.0f / 40.0f;
#endif
f32 f2 = 100.0f;
f32 f3 = 15.0f;
f32 f4 = 35.0f;
#if DEBUG
f32 f5 = 5.0f;
f32 f6 = 0.0f;
f32 f7 = 0.0f;
f32 f8 = 0.0f;
f32 f9 = 0.0f;
#else
f64 f5 = 0.5;
f64 f6 = 3.0;
f64 f7 = 0.0;
f32 f8 = 195.0f;
f32 f9 = 210.0f;
#endif
return f0 + f1 * (f2 - f3 * (f4 - f5 * (f6 - f7 * f8 - (f7 - f9))));
}
@@ -266,7 +363,7 @@ static f32 dummy() {
BOOL daObjCBlk_c::checkWall() {
cXyz acStack_30[2] = {cXyz(-95.0f, 5.0f, 1.0f), cXyz(95.0f, 5.0f, 1.0f)};
cXyz cStack_40(0.0f, 0.0f, 1.0f);
cStack_40.z = 50.0f;
cStack_40.z = TRAVEL_DIST;
BOOL rv = FALSE;
for (int i = 0; i < 2; i++) {
cXyz cStack_4c(acStack_30[i]);
@@ -276,6 +373,10 @@ BOOL daObjCBlk_c::checkWall() {
cStack_4c += current.pos;
mDoMtx_stack_c::multVec(&cStack_58, &cStack_58);
cStack_58 += cStack_4c;
#if DEBUG
field_0xcb0_debug[i] = cStack_4c;
field_0xcc8_debug[i] = cStack_58;
#endif
if (fopAcM_lc_c::lineCheck(&cStack_4c, &cStack_58, this)) {
rv = TRUE;
}
@@ -291,6 +392,9 @@ int daObjCBlk_c::Draw() {
/* 80BC6870-80BC68A4 000F50 0034+00 1/0 0/0 0/0 .text Delete__11daObjCBlk_cFv */
int daObjCBlk_c::Delete() {
dComIfG_resDelete(&phase, l_arcName);
#if DEBUG
l_HIO.removeHIO();
#endif
return 1;
}
@@ -308,19 +412,24 @@ static int daObjCBlk_Execute(daObjCBlk_c* i_this) {
/* 80BC68F0-80BC6910 000FD0 0020+00 1/0 0/0 0/0 .text daObjCBlk_Delete__FP11daObjCBlk_c
*/
static int daObjCBlk_Delete(daObjCBlk_c* i_this) {
fpc_ProcID unusedId = fopAcM_GetID(i_this);
return i_this->MoveBGDelete();
}
/* 80BC6910-80BC6930 000FF0 0020+00 1/0 0/0 0/0 .text daObjCBlk_Create__FP10fopAc_ac_c */
static int daObjCBlk_Create(fopAc_ac_c* i_this) {
fopAcM_GetID(i_this);
return static_cast<daObjCBlk_c*>(i_this)->create();
daObjCBlk_c* cblock = static_cast<daObjCBlk_c*>(i_this);
fpc_ProcID unusedId = fopAcM_GetID(i_this);
return cblock->create();
}
/* 80BC6CB4-80BC6CC4 00006C 000C+04 0/1 0/0 0/0 .bss l_smokeSetOffset */
static cXyz l_smokeSetOffset(0.0f, 0.0f, -200.0f);
static s32 unused_bss_70 = 0;
#if DEBUG
static const u32 dummy3[3] = {
0xff0000ff,
0x0000ffff,
0x00ff00ff,
};
#endif
AUDIO_INSTANCES;
+5 -1
View File
@@ -255,7 +255,6 @@ void daPropY_c::init_modeStop() {
}
/* 80C85DD0-80C85F14 000A50 0144+00 1/0 0/0 0/0 .text modeStop__9daPropY_cFv */
// NONMATCHING - fsubs instead of fsub
void daPropY_c::modeStop() {
s16 var_r30;
if (mTurnType == 0) {
@@ -264,7 +263,12 @@ void daPropY_c::modeStop() {
var_r30 = cLib_addCalcAngleS(&shape_angle.y, field_0x5b6, 1, (182.04445f * fopAcM_GetSpeedF(this)), 1);
}
// probably not a real version difference - GCN has fsub for some reason instead of fsubs
#if PLATFORM_GCN
field_0x5c4 = field_0x5c0 * ((f32)std::fabs((f64)var_r30) / field_0x5bc);
#else
field_0x5c4 = field_0x5c0 * (std::fabs((f32)var_r30) / field_0x5bc);
#endif
mDoAud_seStartLevel(Z2SE_OBJ_AMI_ROLL, &current.pos, field_0x5c4, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
if (var_r30 == 0) {
+37 -1
View File
@@ -9,6 +9,29 @@
#include "d/actor/d_a_obj_swspinner.h"
#include "d/d_s_play.h"
#if DEBUG
class daObjLv7Brg_HIO_c : public JORReflexible {
public:
daObjLv7Brg_HIO_c();
virtual ~daObjLv7Brg_HIO_c() {}
void genMessage(JORMContext*);
u8 field_0x04[0x08 - 0x04];
f32 field_0x08;
f32 field_0x0c;
};
daObjLv7Brg_HIO_c::daObjLv7Brg_HIO_c() {
}
void daObjLv7Brg_HIO_c::genMessage(JORMContext* ctx) {
// NONMATCHING
}
static daObjLv7Brg_HIO_c l_HIO;
#endif
/* 80C86378-80C863EC 000078 0074+00 1/1 0/0 0/0 .text searchSwSpinner__FPvPv */
static void* searchSwSpinner(void* i_actor, void* i_data) {
fopAc_ac_c* swspinner = (fopAc_ac_c*)i_actor;
@@ -329,19 +352,32 @@ void daObjLv7Brg_c::mode_action() {
if (5100.0f == field_0xa78) {
var_f31 = 0.0f;
} else {
#if DEBUG
var_f31 = l_HIO.field_0x08;
#else
var_f31 = 30.0f;
#endif
}
} else if (0.0f == field_0xa78) {
var_f31 = 0.0f;
} else {
#if DEBUG
var_f31 = -l_HIO.field_0x0c;
#else
var_f31 = -45.0f;
#endif
}
cLib_addCalc(&speedF, var_f31, 0.02f, 1.0f, 0.1f);
field_0xa78 += speedF;
if (0.0f != speedF) {
fopAcM_seStartLevel(this, 0x8025F, (127.0f * speedF) / 30.0f);
#if DEBUG
u32 var_r28 = 127.0f * speedF / l_HIO.field_0x08;
#else
u32 var_r28 = 127.0f * speedF / 30.0f;
#endif
fopAcM_seStartLevel(this, 0x8025F, var_r28);
}
if (0.0f != speedF && 0.0f == temp_f29) {
+41
View File
@@ -336,6 +336,47 @@ int daObj_SSItem_c::wait(void* param_0) {
}
}
int daObj_SSItem_c::buy(void* param_0) {
switch (mEventType) {
case 0:
break;
case 1:
dComIfGp_event_reset();
if (getParentPtr() != NULL) {
((daMyna_c *)getParentPtr())->deleteItem(fopAcM_GetID(this));
}
fopAcM_delete(this);
break;
case 2:
break;
}
return 1;
}
int daObj_SSItem_c::cancel(void* param_0) {
switch (mEventType) {
case 0:
break;
case 1:
if (field_0xAFC == 0) {
dComIfGp_event_reset();
current.pos.set(field_0xAF0);
setProcess(&daObj_SSItem_c::wait);
}
break;
case 2:
break;
}
return 1;
}
/* 80CE7D8C-80CE7DAC 0011EC 0020+00 1/0 0/0 0/0 .text daObj_SSItem_Create__FPv */
static int daObj_SSItem_Create(void* i_this) {
return static_cast<daObj_SSItem_c*>(i_this)->create();
+14 -11
View File
@@ -410,37 +410,40 @@ static void dummy2() {
J3DTevOrder tevOrder;
J3DTevSwapModeTable tevSwapModeTable;
J3DIndTexOrder indTexOrder;
J3DIndTexMtx indTexMtx;
J3DIndTexCoordScale indTexCoordScale;
J3DTevStage* tevStage_p;
J3DTevStageInfo tevStageInfo;
tevStage_p->setTevStageInfo(tevStageInfo);
J3DTevStage tevStage;
J3DColorBlock* colorBlock = NULL;
colorBlock->setColorChanNum((const u8*)NULL);
colorBlock->setColorChanNum((u8)NULL);
colorBlock->setMatColor(0, gxColor);
colorBlock->setColorChan(0, colorChan);
colorBlock->setAmbColor(0, gxColor);
J3DTexGenBlock* texGenBlock = NULL;
texGenBlock->setTexGenNum((const u32*)NULL);
texGenBlock->setTexGenNum((u32)NULL);
texGenBlock->setTexCoord(0, NULL);
J3DTevBlock* tevBlock = NULL;
tevBlock->setTevStageNum((const u8*)NULL);
tevBlock->setTevStageNum((u8)0);
tevBlock->setTevColor(0, J3DGXColorS10());
tevBlock->setTevKColor(0, gxColor);
tevBlock->setTevOrder(0, tevOrder);
tevBlock->setTevKColorSel(0, (const u8*)NULL);
tevBlock->setTevKAlphaSel(0, (const u8*)NULL);
tevBlock->setTevKColorSel(0, (u8)0);
tevBlock->setTevKAlphaSel(0, (u8)0);
tevBlock->setTevSwapModeTable(0, tevSwapModeTable);
tevBlock->setTexNo(0, (const u16*)NULL);
J3DTevStage tevStage;
tevBlock->setTexNo(0, (u16)0);
tevBlock->setTevStage(0, tevStage);
tevBlock->setIndTevStage(0, indTevStage);
J3DIndBlock* indBlock = NULL;
indBlock->setIndTexStageNum(0);
J3DIndTexMtx indTexMtx;
indBlock->setIndTexMtx(0, indTexMtx);
J3DIndTexCoordScale indTexCoordScale;
indBlock->setIndTexCoordScale(0, indTexCoordScale);
indTexCoordScale.~J3DIndTexCoordScale();
J3DPEBlock* peBlock = NULL;
J3DAlphaComp alphaComp;
@@ -450,7 +453,7 @@ static void dummy2() {
J3DZMode zMode;
peBlock->setZMode(zMode);
u8 compLoc;
peBlock->setZCompLoc(&compLoc);
peBlock->setZCompLoc(compLoc);
colorBlock->getColorChanNum();
colorBlock->getMatColor(0);