d_a_obj_coming OK, d_a_coming2 OK

The barrel2 make_prm params were swapped around, making it seem impossible to match.
This commit is contained in:
LagoLunatic
2026-04-17 12:55:19 -04:00
parent 98dc2807e6
commit 51bb7d8130
6 changed files with 83 additions and 38 deletions
+2 -2
View File
@@ -1391,7 +1391,7 @@ config.libs = [
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_bita"),
ActorRel(Matching, "d_a_branch"),
ActorRel(NonMatching, "d_a_bridge"),
ActorRel(NonMatching, "d_a_coming2"),
ActorRel(Matching, "d_a_coming2"),
ActorRel(Matching, "d_a_coming3"),
ActorRel(Matching, "d_a_demo_dk"),
ActorRel(Matching, "d_a_demo_kmm"),
@@ -1433,7 +1433,7 @@ config.libs = [
ActorRel(Matching, "d_a_obj_barrel2"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_bscurtain"),
ActorRel(Matching, "d_a_obj_cafelmp"),
ActorRel(NonMatching, "d_a_obj_coming"),
ActorRel(Matching, "d_a_obj_coming"),
ActorRel(Matching, "d_a_obj_demo_barrel"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_doguu"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_doguu_demo"),
+17 -11
View File
@@ -63,7 +63,7 @@ namespace daObjBarrel2 {
PRM_TYPE_S = 0x18,
PRM_TEXTURE_W = 1,
PRM_TEXTURE_S = 10,
PRM_TEXTURE_S = 0xA,
PRM_COMING_W = 1,
PRM_COMING_S = 0x1C,
@@ -72,17 +72,23 @@ namespace daObjBarrel2 {
const Attr_c* attr() const { return &M_attr[m410]; }
u8 chk_item_give() const { return m476; }
void delete_req() {}
void exit_req() {}
void get_item_id() {}
static fpc_ProcID make_coming(cXyz* pos, int roomNo, Type_e type, int droppedItem, bool hasFlag, short angleY, daObjBuoyflag::Texture_e arg6) {
void exit_req() { m474 = 1; }
fpc_ProcID get_item_id() { return mItemId; }
static fpc_ProcID make_coming(cXyz* pos, int roomNo, Type_e type, int droppedItem, bool hasFlag, s16 angleY, daObjBuoyflag::Texture_e tex) {
csXyz angle(0, angleY, 0);
return fopAcM_create(PROC_Obj_Barrel2, make_prm(type, droppedItem, hasFlag, false, arg6), pos, roomNo, &angle);
return fopAcM_create(PROC_Obj_Barrel2, make_prm(type, droppedItem, !hasFlag, true, tex), pos, roomNo, &angle);
}
static u32 make_prm(Type_e arg0, int droppedItem, bool hasFlag, bool flagType, daObjBuoyflag::Texture_e arg4) {
s32 item = (droppedItem & 0x3F);
s32 tmp = hasFlag ? 1 : 0;
s32 a6 = arg4;
return (item | (0x7F << 16)) | (arg0 << 24) | (tmp << 8) | ((flagType ? 1 : 0) << 10) | (a6 << 28);
static u32 make_prm(Type_e type, int droppedItem, bool hasFlag, bool _unused, daObjBuoyflag::Texture_e tex) {
int itemNo = (droppedItem & 0x3F);
int buoy = hasFlag ? 1 : 0;
bool coming = true;
return
(itemNo << PRM_ITEM_NO_S) |
(0x7F << PRM_ITEM_SAVE_S) |
(type << PRM_TYPE_S) |
(buoy << PRM_BUOY_S) |
((tex == daObjBuoyflag::Texture_00_e ? 0 : 1) << PRM_TEXTURE_S) |
(coming << PRM_COMING_S);
}
s32 prm_get_buoy() const {
return daObj::PrmAbstract(this, PRM_BUOY_W, PRM_BUOY_S);
@@ -181,7 +187,7 @@ namespace daObjBarrel2 {
/* 0x44C */ f32 m44C;
/* 0x450 */ f32 m450;
/* 0x458 */ f32 m454;
/* 0x458 */ fpc_ProcID m458;
/* 0x458 */ fpc_ProcID mItemId;
/* 0x45C */ f32 m45C;
/* 0x460 */ fpc_ProcID m460;
/* 0x464 */ s32 m464;
+35 -11
View File
@@ -16,9 +16,21 @@
#include "d/actor/d_a_obj_barrel2.h"
s32 daComing2::coming_make_item_no_table[] = {
dItem_GREEN_RUPEE_e, dItem_GREEN_RUPEE_e, dItem_GREEN_RUPEE_e, dItem_GREEN_RUPEE_e, dItem_GREEN_RUPEE_e,
dItem_BLUE_RUPEE_e, dItem_BLUE_RUPEE_e, dItem_BLUE_RUPEE_e, dItem_BLUE_RUPEE_e, dItem_BLUE_RUPEE_e,
dItem_YELLOW_RUPEE_e, dItem_YELLOW_RUPEE_e, dItem_YELLOW_RUPEE_e, dItem_YELLOW_RUPEE_e, dItem_YELLOW_RUPEE_e
dItem_GREEN_RUPEE_e,
dItem_GREEN_RUPEE_e,
dItem_GREEN_RUPEE_e,
dItem_GREEN_RUPEE_e,
dItem_GREEN_RUPEE_e,
dItem_BLUE_RUPEE_e,
dItem_BLUE_RUPEE_e,
dItem_BLUE_RUPEE_e,
dItem_BLUE_RUPEE_e,
dItem_BLUE_RUPEE_e,
dItem_YELLOW_RUPEE_e,
dItem_YELLOW_RUPEE_e,
dItem_YELLOW_RUPEE_e,
dItem_YELLOW_RUPEE_e,
dItem_YELLOW_RUPEE_e,
};
static void dummy() {
@@ -232,7 +244,7 @@ BOOL daComing2::Act_c::request_barrel_exitN(int idx) {
if (barrelProc != fpcM_ERROR_PROCESS_ID_e) {
if (fopAcM_SearchByID(barrelProc, (fopAc_ac_c**)&barrel) != NULL && barrel != NULL) {
barrel->m474 = 1;
barrel->exit_req();
return TRUE;
} else {
return FALSE;
@@ -281,7 +293,7 @@ BOOL daComing2::Act_c::request_all_flag_exit() {
daObjBarrel2::Act_c* buoy;
if (buoyProc != fpcM_ERROR_PROCESS_ID_e && fopAcM_SearchByID(buoyProc, (fopAc_ac_c**)&buoy) != NULL && buoy != NULL) {
buoy->m474 = 1;
buoy->exit_req();
mStartBuoy[i].unk_00 = fpcM_ERROR_PROCESS_ID_e;
}
}
@@ -434,12 +446,16 @@ void daComing2::Act_c::coming_setF_main() {
cMtx_multVec(sp4C, &sp34[i], &sp28);
if (get_water_height(&sp28.y, &sp28) && check_in_large_sea(&sp28) &&
position_is_none_obj(&sp28) && no_ship_obstacle(&sp28)) {
#if VERSION == VERSION_DEMO
fpc_ProcID barrel = daObjBarrel2::Act_c::make_coming(&sp28, -1, daObjBarrel2::Type_01_e, 0x3F, false, mStartStat.unk_00, daObjBuoyflag::Texture_01_e);
#else
daObjBarrel2::Type_e type(daObjBarrel2::Type_01_e);
fpc_ProcID barrel = daObjBarrel2::Act_c::make_coming(&sp28, -1, type, 0x3F, false, mStartStat.unk_00, daObjBuoyflag::Texture_01_e);
#endif
fpc_ProcID barrel = daObjBarrel2::Act_c::make_coming(
&sp28,
-1,
DEMO_SELECT(daObjBarrel2::Type_01_e, type),
0x3F,
true,
mStartStat.unk_00,
daObjBuoyflag::Texture_01_e
);
mStartBuoy[i].unk_00 = barrel;
if (barrel != fpcM_ERROR_PROCESS_ID_e) {
mStartBuoy[i].unk_04 = sp28;
@@ -503,7 +519,15 @@ void daComing2::Act_c::coming_game_main() {
if ((mBarrelInfo[unk_2A4].unk_00 == fpcM_ERROR_PROCESS_ID_e && make_coming_param(&sp1C, &type, &droppedItem, &hasFlag))) {
if (check_in_large_sea(&sp1C) != 0) {
if (position_is_none_obj(&sp1C) && no_ship_obstacle(&sp1C)) {
fpc_ProcID barrel = daObjBarrel2::Act_c::make_coming(&sp1C, -1, type, droppedItem, hasFlag, mStartStat.unk_00, daObjBuoyflag::Texture_01_e);
fpc_ProcID barrel = daObjBarrel2::Act_c::make_coming(
&sp1C,
-1,
type,
droppedItem,
hasFlag,
mStartStat.unk_00,
daObjBuoyflag::Texture_00_e
);
mBarrelInfo[unk_2A4].unk_00 = barrel;
if (barrel != fpcM_ERROR_PROCESS_ID_e) {
unk_29A = 0;
+12 -4
View File
@@ -198,7 +198,15 @@ void daComing3::Act_c::coming_start_main() {
static s32 make_item_table[] = {
dItem_BLUE_RUPEE_e, dItem_YELLOW_RUPEE_e,
};
unk_400 = daObjBarrel2::Act_c::make_coming(&sp18, fopAcM_GetRoomNo(this), daObjBarrel2::Type_01_e, make_item_table[get_challenge_id()], true, shape_angle.y, daObjBuoyflag::Texture_01_e);
unk_400 = daObjBarrel2::Act_c::make_coming(
&sp18,
fopAcM_GetRoomNo(this),
daObjBarrel2::Type_01_e,
make_item_table[get_challenge_id()],
false,
shape_angle.y,
daObjBuoyflag::Texture_00_e
);
}
if (unk_400 != fpcM_ERROR_PROCESS_ID_e) {
@@ -253,7 +261,7 @@ void daComing3::Act_c::coming_game_main() {
unk_404 = 3;
eff_break_tsubo();
} else if ((unk_478 <= get_limit_dist()) && (barrel != NULL)) {
barrel->m474 = 1;
barrel->exit_req();
unk_404 = 2;
}
break;
@@ -284,8 +292,8 @@ void daComing3::Act_c::coming_wait_main() {
fopAcM_SearchByID(unk_400, &ac1);
daObjBarrel2::Act_c* barrel = (daObjBarrel2::Act_c*)ac1;
if (barrel != NULL && !fopAcM_SearchByID(barrel->m458, &ac2)) {
barrel->m474 = 1;
if (barrel != NULL && !fopAcM_SearchByID(barrel->get_item_id(), &ac2)) {
barrel->exit_req();
fopAcM_delete(this);
}
}
+14 -7
View File
@@ -272,8 +272,15 @@ cPhs_State daObjBarrel2::Act_c::_create() {
csXyz sp10(0, home.angle.y, 0);
sp24.setall(attr()->m28 * attr()->m2C);
m458 =
fopAcM_createRaceItemFromTable(&sp30, prm_get_itemNo(), prm_get_itemSave(), fopAcM_GetHomeRoomNo(this), &sp10, &sp24, prm_get_coming() ? 1 : 0);
mItemId = fopAcM_createRaceItemFromTable(
&sp30,
prm_get_itemNo(),
prm_get_itemSave(),
fopAcM_GetHomeRoomNo(this),
&sp10,
&sp24,
prm_get_coming() ? 1 : 0
);
m45C = 3.4028235e+38f;
m468 = 0;
m470 = 0;
@@ -796,7 +803,7 @@ void daObjBarrel2::Act_c::item_delete() {
void daObjBarrel2::Act_c::item_give() {
if (M_tmp_item_actor != NULL) {
M_tmp_item_actor->raceItemForceGet();
m458 = fpcM_ERROR_PROCESS_ID_e;
mItemId = fpcM_ERROR_PROCESS_ID_e;
m476 = 1;
M_tmp_item_actor = NULL;
}
@@ -805,19 +812,19 @@ void daObjBarrel2::Act_c::item_give() {
/* 000022A4-0000233C .text item_connect_check__Q212daObjBarrel25Act_cFv */
void daObjBarrel2::Act_c::item_connect_check() {
M_tmp_item_actor = NULL;
if (m458 != fpcM_ERROR_PROCESS_ID_e) {
if (mItemId != fpcM_ERROR_PROCESS_ID_e) {
fopAc_ac_c* pRaceitem;
if (fopAcM_SearchByID(m458, &pRaceitem)) {
if (fopAcM_SearchByID(mItemId, &pRaceitem)) {
daRaceItem_c* raceitem = (daRaceItem_c*)pRaceitem;
if (raceitem != NULL) {
if (raceitem->checkOffsetPos()) {
M_tmp_item_actor = raceitem;
} else {
m458 = fpcM_ERROR_PROCESS_ID_e;
mItemId = fpcM_ERROR_PROCESS_ID_e;
}
}
} else {
m458 = fpcM_ERROR_PROCESS_ID_e;
mItemId = fpcM_ERROR_PROCESS_ID_e;
}
}
}
+3 -3
View File
@@ -441,7 +441,7 @@ void daObjComing::Act_c::mode_barrel2_wait(daObjComing::Ctrl_c* ctrl) {
barrel2.mItem,
barrel2.m14,
barrel2.mAngleY,
daObjBuoyflag::Texture_01_e
daObjBuoyflag::Texture_00_e
);
ctrl->set_appear_timer(this);
ctrl->m00 = 1;
@@ -463,7 +463,7 @@ void daObjComing::Act_c::mode_barrel2_appear(daObjComing::Ctrl_c* ctrl) {
if (ac != NULL) {
daObjBarrel2::Act_c* barrel2_act = (daObjBarrel2::Act_c*)ac;
JUT_ASSERT(1119, fopAcM_GetName(barrel2_act) == tk_Obj_Barrel2_e);
barrel2_act->m474 = 1;
barrel2_act->exit_req();
}
} else {
ctrl->m08 = fpcM_ERROR_PROCESS_ID_e;
@@ -487,7 +487,7 @@ void daObjComing::Act_c::mode_barrel2_leave(daObjComing::Ctrl_c* ctrl) {
if (ac != NULL) {
daObjBarrel2::Act_c* barrel2_act = (daObjBarrel2::Act_c*)ac;
JUT_ASSERT(1145, fopAcM_GetName(barrel2_act) == tk_Obj_Barrel2_e);
barrel2_act->m474 = 1;
barrel2_act->exit_req();
}
} else {
ctrl->m08 = fpcM_ERROR_PROCESS_ID_e;