From 080be199140a9c3e23ba4ce6c1d2659a448013d8 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 19 Aug 2024 23:48:25 +0200 Subject: [PATCH] Match m_player_main_dma.c_inc --- src/m_player_main_dma.c_inc | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc index e69de29b..54dc8783 100644 --- a/src/m_player_main_dma.c_inc +++ b/src/m_player_main_dma.c_inc @@ -0,0 +1,61 @@ + +int Player_actor_request_main_dma(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DMA, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_DMA, flag); + return TRUE; + } + return FALSE; +} + +void Player_actor_setup_main_Dma(void) { + Player_actor_setup_main_Base(); +} + +void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* exchange = &play->object_exchange; + int bank_idx = mSc_bank_regist_check(exchange, 14); + PLAYER_ACTOR* actor = (PLAYER_ACTOR*)actorx; + int i; + cKF_SkeletonInfo_R_c* keyf; + u16 type; + + if (exchange->banks[bank_idx].bank_id > 0) { + if (exchange->banks[bank_idx + 1].bank_id > 0 && exchange->banks[bank_idx + 2].bank_id > 0 && + exchange->banks[bank_idx + 3].bank_id > 0 && exchange->banks[bank_idx + 4].bank_id > 0 && + exchange->banks[bank_idx + 5].bank_id > 0 && exchange->banks[bank_idx + 6].bank_id > 0) { + Player_actor_ItemBank_ct(actor, play); + if (actor->requested_main_index_priority == mPlayer_INDEX_SLIP_NET) { + Player_actor_SettleRequestMainIndexPriority(actor); + } + keyf = &actor->keyframe0; + type = actor->actor_class.actor_specific; + cKF_SkeletonInfo_R_ct(keyf, mPlib_get_player_mdl_p(), NULL, actor->joint_data, actor->morph_data); + + actor->keyframe1 = *keyf; + + if ((type & 7) == 1) { + mPlib_request_main_outdoor_type1(game, 1, 0); + } else if ((type & 7) == 2) { + mPlib_request_main_outdoor_type1(game, 0, 0); + } else if ((type & 7) == 3) { + mPlib_request_main_outdoor_type1(game, 0, 1); + } else if ((type & 7) == 4) { + mPlib_request_main_hide_type1(game); + } else if ((type & 7) == 5) { + mPlib_request_main_groundhog_type1(game); + } else { + if (Common_Get(_02883D) == 1) { + Player_actor_request_main_fail_emu(play, mPlayer_INDEX_READY_WALK_NET); + } else { + Player_actor_request_main_intro_all(play, mPlayer_INDEX_READY_WALK_NET); + } + } + Camera2_request_main_normal(play, 1, 1); + } + } +} +void Player_actor_main_Dma(ACTOR* actor, GAME* game) { + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_request_proc_index_fromDma(actor, game); +}