Added get_pause

This commit is contained in:
korenkonder
2024-05-01 22:07:46 +03:00
parent 6c057bfb98
commit 3f5220bdec
10 changed files with 98 additions and 67 deletions
+1 -1
View File
@@ -2744,7 +2744,7 @@ bool TaskEffectLitproj::init() {
}
bool TaskEffectLitproj::ctrl() {
if (!stage_param_data_litproj_current)
if (!stage_param_data_litproj_current || get_pause())
return false;
light_data& light = rctx_ptr->light_set[LIGHT_SET_MAIN].lights[LIGHT_PROJECTION];
+16 -10
View File
@@ -616,17 +616,22 @@ render_context::~render_context() {
}
void render_context::ctrl() {
delta_frame_history += get_delta_frame();
float_t v1;
delta_frame_history = modff(delta_frame_history, &v1);
delta_frame_history_int = (int32_t)v1;
if (delta_frame_history < 0.001f)
delta_frame_history = 0.0f;
else if (1.0f - delta_frame_history < 0.001f)
delta_frame_history_int++;
if (!get_pause()) {
delta_frame_history += get_delta_frame();
float_t mod;
delta_frame_history = modff(delta_frame_history, &mod);
delta_frame_history_int = (int32_t)mod;
if (delta_frame_history < 0.001f)
delta_frame_history = 0.0f;
else if (1.0f - delta_frame_history < 0.001f)
delta_frame_history_int++;
}
rctx_ptr = this;
app::TaskWork::ctrl();
extern bool game_state_get_pause();
if (!get_pause() || !game_state_get_pause())
app::TaskWork::ctrl();
sound_ctrl();
file_handler_storage_ctrl();
}
@@ -650,7 +655,8 @@ void render_context::disp() {
render.lens_flare_texture = 0;
render.aet_back = 0;
render_manager->field_31C = false;
app::TaskWork::basic();
if (!get_pause())
app::TaskWork::basic();
}
void render_context::free() {
+5 -5
View File
@@ -3048,7 +3048,7 @@ static void sub_140218560(RobCloth* rob_cls, float_t step, bool a3) {
}
}
if (step > 0.0f) {
if (step > 0.0f && !get_pause()) {
sub_1402187D0(rob_cls, a3);
sub_140219D10(rob_cls);
sub_14021AA60(rob_cls, step, false);
@@ -3442,7 +3442,7 @@ static void sub_14047C800(RobOsage* rob_osg, const mat4* root_matrix,
mat4_transform_vector(&v130, &v113, &v128);
float_t v25 = parent_scale->x;
if (!rob_osg->osage_reset && step <= 0.0f)
if (!rob_osg->osage_reset && (get_pause() || step <= 0.0f))
return;
bool stiffness = rob_osg->skin_param_ptr->stiffness > 0.0f;
@@ -3724,7 +3724,7 @@ static void sub_140482F30(vec3* pos1, vec3* pos2, float_t length) {
static void sub_14047D8C0(RobOsage* rob_osg, const mat4* root_matrix,
const vec3* parent_scale, float_t step, bool a5) {
if (!rob_osg->osage_reset && step <= 0.0f)
if (!rob_osg->osage_reset && (get_pause() || step <= 0.0f))
return;
OsageCollision::Work* coli = rob_osg->coli;
@@ -3865,7 +3865,7 @@ static void sub_14047C770(RobOsage* rob_osg, const mat4* root_matrix,
}
static void sub_14047D620(RobOsage* rob_osg, float_t step) {
if (step < 0.0f && rob_osg->disable_collision)
if (get_pause() || step <= 0.0f || rob_osg->disable_collision)
return;
std::vector<RobOsageNode>& nodes = rob_osg->nodes;
@@ -3898,7 +3898,7 @@ static void sub_14047D620(RobOsage* rob_osg, float_t step) {
}
static void sub_14047ECA0(RobOsage* rob_osg, float_t step) {
if (step <= 0.0f)
if (get_pause() || step <= 0.0f)
return;
OsageCollision::Work* coli_ring = rob_osg->coli_ring;
+6
View File
@@ -16,6 +16,8 @@ bool sv_anisotropy_changed = false;
int32_t sv_old_anisotropy = 1;
int32_t sv_anisotropy = 1;
bool pause = false;
size_t frame_counter = 0;
bool select_frame_speed = false;
@@ -65,6 +67,10 @@ uint32_t get_frame_counter() {
return (uint32_t)frame_counter;
}
bool get_pause() {
return pause;
}
float_t get_target_anim_fps() {
return target_anim_fps;
}
+1
View File
@@ -121,5 +121,6 @@ extern void sv_anisotropy_set(int32_t value);
extern float_t get_anim_frame_speed();
extern float_t get_delta_frame();
extern uint32_t get_frame_counter();
extern bool get_pause();
extern float_t get_target_anim_fps();
extern void uniform_value_reset();
+4
View File
@@ -878,6 +878,8 @@ void DataTestMotA3d::Sync1pFrame() {
return;
float_t frame = dtm_mot_array->GetFrame();
if (get_pause())
frame -= dtm_mot_array->GetStep();
for (auth_3d_id& i : auth_3d_ids)
i.set_req_frame(frame);
@@ -1171,6 +1173,8 @@ bool DtmMot::ctrl() {
state = 7;
break;
}
else if (get_pause())
break;
rob_chara* rob_chr = rob_chara_array_get(chara_id);
+3
View File
@@ -3406,6 +3406,9 @@ void struc_751::sub_140300A10() {
if (key_input[1])
key_input[1] |= 0x40000000;
if (get_pause())
key_input[1] |= 0x10000000;
}
void struc_751::sub_1403011A0() {
+57 -49
View File
@@ -380,7 +380,7 @@ struct GameStateData {
struct SubGameStateData {
SubGameStateEnum sub_game_state;
int32_t field_4;
bool pause;
bool(*Init)();
bool(*Ctrl)();
bool(*Dest)();
@@ -529,287 +529,287 @@ GameStateData game_state_data_array[] = {
SubGameStateData sub_game_state_data_array[] = {
{
SUB_GAME_STATE_DATA_INITIALIZE,
1,
true,
SubGameState::DataInitialize::Init,
SubGameState::DataInitialize::Ctrl,
SubGameState::DataInitialize::Dest,
},
{
SUB_GAME_STATE_SYSTEM_STARTUP,
1,
true,
SubGameState::SystemStartup::Init,
SubGameState::SystemStartup::Ctrl,
SubGameState::SystemStartup::Dest,
},
{
SUB_GAME_STATE_SYSTEM_STARTUP_ERROR,
1,
true,
SubGameState::SystemStartupError::Init,
SubGameState::SystemStartupError::Ctrl,
SubGameState::SystemStartupError::Dest,
},
{
SUB_GAME_STATE_WARNING,
1,
true,
SubGameState::Warning::Init,
SubGameState::Warning::Ctrl,
SubGameState::Warning::Dest,
},
{
SUB_GAME_STATE_LOGO,
1,
true,
SubGameState::Logo::Init,
SubGameState::Logo::Ctrl,
SubGameState::Logo::Dest,
},
{
SUB_GAME_STATE_RATING,
1,
true,
SubGameState::Rating::Init,
SubGameState::Rating::Ctrl,
SubGameState::Rating::Dest,
},
{
SUB_GAME_STATE_DEMO,
1,
true,
SubGameState::Demo::Init,
SubGameState::Demo::Ctrl,
SubGameState::Demo::Dest,
},
{
SUB_GAME_STATE_TITLE,
1,
true,
SubGameState::Title::Init,
SubGameState::Title::Ctrl,
SubGameState::Title::Dest,
},
{
SUB_GAME_STATE_RANKING,
1,
true,
SubGameState::Ranking::Init,
SubGameState::Ranking::Ctrl,
SubGameState::Ranking::Dest,
},
{
SUB_GAME_STATE_SCORE_RANKING,
1,
true,
SubGameState::ScoreRanking::Init,
SubGameState::ScoreRanking::Ctrl,
SubGameState::ScoreRanking::Dest,
},
{
SUB_GAME_STATE_CM,
1,
true,
SubGameState::CM::Init,
SubGameState::CM::Ctrl,
SubGameState::CM::Dest,
},
{
SUB_GAME_STATE_PHOTO_MODE_DEMO,
1,
true,
SubGameState::PhotoModeDemo::Init,
SubGameState::PhotoModeDemo::Ctrl,
SubGameState::PhotoModeDemo::Dest,
},
{
SUB_GAME_STATE_SELECTOR,
1,
true,
SubGameState::Selector::Init,
SubGameState::Selector::Ctrl,
SubGameState::Selector::Dest,
},
{
SUB_GAME_STATE_GAME_MAIN,
1,
true,
SubGameState::GameMain::Init,
SubGameState::GameMain::Ctrl,
SubGameState::GameMain::Dest,
},
{
SUB_GAME_STATE_GAME_SEL,
1,
true,
SubGameState::GameSel::Init,
SubGameState::GameSel::Ctrl,
SubGameState::GameSel::Dest,
},
{
SUB_GAME_STATE_STAGE_RESULT,
1,
true,
SubGameState::StageResult::Init,
SubGameState::StageResult::Ctrl,
SubGameState::StageResult::Dest,
},
{
SUB_GAME_STATE_SCREEN_SHOT_SEL,
1,
true,
SubGameState::ScreenShotSel::Init,
SubGameState::ScreenShotSel::Ctrl,
SubGameState::ScreenShotSel::Dest,
},
{
SUB_GAME_STATE_SCREEN_SHOT_RESULT,
1,
true,
SubGameState::ScreenShotResult::Init,
SubGameState::ScreenShotResult::Ctrl,
SubGameState::ScreenShotResult::Dest,
},
{
SUB_GAME_STATE_GAME_OVER,
1,
true,
SubGameState::GameOver::Init,
SubGameState::GameOver::Ctrl,
SubGameState::GameOver::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_MAIN,
1,
true,
SubGameState::DataTestMain::Init,
SubGameState::DataTestMain::Ctrl,
SubGameState::DataTestMain::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_MISC,
1,
true,
SubGameState::DataTestMisc::Init,
SubGameState::DataTestMisc::Ctrl,
SubGameState::DataTestMisc::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_OBJ,
0,
false,
SubGameState::DataTestObj::Init,
SubGameState::DataTestObj::Ctrl,
SubGameState::DataTestObj::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_STG,
0,
false,
SubGameState::DataTestStg::Init,
SubGameState::DataTestStg::Ctrl,
SubGameState::DataTestStg::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_MOT,
0,
false,
SubGameState::DataTestMot::Init,
SubGameState::DataTestMot::Ctrl,
SubGameState::DataTestMot::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_COLLISION,
1,
true,
SubGameState::DataTestCollision::Init,
SubGameState::DataTestCollision::Ctrl,
SubGameState::DataTestCollision::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_SPR,
1,
true,
SubGameState::DataTestSpr::Init,
SubGameState::DataTestSpr::Ctrl,
SubGameState::DataTestSpr::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_AET,
1,
true,
SubGameState::DataTestAet::Init,
SubGameState::DataTestAet::Ctrl,
SubGameState::DataTestAet::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_AUTH_3D,
1,
true,
SubGameState::DataTestAuth3d::Init,
SubGameState::DataTestAuth3d::Ctrl,
SubGameState::DataTestAuth3d::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_CHR,
1,
true,
SubGameState::DataTestChr::Init,
SubGameState::DataTestChr::Ctrl,
SubGameState::DataTestChr::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_ITEM,
1,
true,
SubGameState::DataTestItem::Init,
SubGameState::DataTestItem::Ctrl,
SubGameState::DataTestItem::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_PERF,
1,
true,
SubGameState::DataTestPerf::Init,
SubGameState::DataTestPerf::Ctrl,
SubGameState::DataTestPerf::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_PVSCRIPT,
1,
true,
SubGameState::DataTestPvScript::Init,
SubGameState::DataTestPvScript::Ctrl,
SubGameState::DataTestPvScript::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_PRINT,
1,
true,
SubGameState::DataTestPrint::Init,
SubGameState::DataTestPrint::Ctrl,
SubGameState::DataTestPrint::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_CARD,
1,
true,
SubGameState::DataTestCard::Init,
SubGameState::DataTestCard::Ctrl,
SubGameState::DataTestCard::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_OPD,
1,
true,
SubGameState::DataTestOpd::Init,
SubGameState::DataTestOpd::Ctrl,
SubGameState::DataTestOpd::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_SLIDER,
1,
true,
SubGameState::DataTestSlider::Init,
SubGameState::DataTestSlider::Ctrl,
SubGameState::DataTestSlider::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_GLITTER,
1,
true,
SubGameState::DataTestGlitter::Init,
SubGameState::DataTestGlitter::Ctrl,
SubGameState::DataTestGlitter::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_GRAPHICS,
1,
true,
SubGameState::DataTestGraphics::Init,
SubGameState::DataTestGraphics::Ctrl,
SubGameState::DataTestGraphics::Dest,
},
{
SUB_GAME_STATE_DATA_TEST_COLLECTION_CARD,
1,
true,
SubGameState::DataTestCollectionCard::Init,
SubGameState::DataTestCollectionCard::Ctrl,
SubGameState::DataTestCollectionCard::Dest,
},
{
SUB_GAME_STATE_TEST_MODE_MAIN,
0,
false,
SubGameState::DataTestModeMain::Init,
SubGameState::DataTestModeMain::Ctrl,
SubGameState::DataTestModeMain::Dest,
},
{
SUB_GAME_STATE_APP_ERROR,
0,
false,
SubGameState::DataTestAppError::Init,
SubGameState::DataTestAppError::Ctrl,
SubGameState::DataTestAppError::Dest,
@@ -818,7 +818,7 @@ SubGameStateData sub_game_state_data_array[] = {
#if defined(ReDIVA_DEV)
{ // Added
SUB_GAME_STATE_GLITTER_EDITOR,
0,
false,
SubGameState::GlitterEditor::Init,
SubGameState::GlitterEditor::Ctrl,
SubGameState::GlitterEditor::Dest,
@@ -827,7 +827,7 @@ SubGameStateData sub_game_state_data_array[] = {
#if DATA_EDIT
{ // Added
SUB_GAME_STATE_DATA_EDIT,
0,
false,
SubGameState::DataEdit::Init,
SubGameState::DataEdit::Ctrl,
SubGameState::DataEdit::Dest,
@@ -1948,6 +1948,14 @@ GameStateEnum game_state_get_game_state() {
return game_state_get()->game_state;
}
bool game_state_get_pause() {
GameState* game_state = game_state_get();
SubGameStateData* sub_game_state_data = sub_game_state_data_array_get(game_state->sub_game_state);
if (sub_game_state_data)
return sub_game_state_data->pause;
return true;
}
size_t game_state_print(char* buf, size_t buf_size) {
GameState* game_state = game_state_get();
const char* game_state_name = game_state_names[game_state->game_state];
@@ -1981,8 +1989,8 @@ void test_mode_set(bool value) {
}
static bool game_state_call_sub(GameState* game_state) {
SubGameStateData* v2 = sub_game_state_data_array_get(game_state->sub_game_state);
if (!v2) {
SubGameStateData* sub_game_state_data = sub_game_state_data_array_get(game_state->sub_game_state);
if (!sub_game_state_data) {
game_state->sub_call_count++;
return false;
}
@@ -1990,13 +1998,13 @@ static bool game_state_call_sub(GameState* game_state) {
bool(*func)() = 0;
switch (game_state->sub_mode) {
case 0:
func = v2->Init;
func = sub_game_state_data->Init;
break;
case 1:
func = v2->Ctrl;
func = sub_game_state_data->Ctrl;
break;
case 2:
func = v2->Dest;
func = sub_game_state_data->Dest;
break;
}
+1
View File
@@ -78,6 +78,7 @@ enum SubGameStateEnum {
extern void game_state_init();
extern void game_state_ctrl();
extern GameStateEnum game_state_get_game_state();
extern bool game_state_get_pause();
extern size_t game_state_print(char* buf, size_t buf_size);
extern void game_state_set_game_state_next(GameStateEnum state);
extern void game_state_set_sub_game_state_next(SubGameStateEnum state);
+4 -2
View File
@@ -1145,14 +1145,16 @@ static void render_context_ctrl(render_context* rctx) {
rctx_ptr = rctx;
input_state_ctrl();
game_state_ctrl();
if (!get_pause() || !game_state_get_pause())
game_state_ctrl();
rctx->ctrl();
if (fast_loader_speed > 1 && game_state_get_game_state() == GAME_STATE_STARTUP)
for (int32_t i = 1; i < fast_loader_speed; i++) {
rctx_ptr = rctx;
input_state_ctrl();
game_state_ctrl();
if (!get_pause() || !game_state_get_pause())
game_state_ctrl();
rctx->ctrl();
}