Skip to content

Commit

Permalink
FF7: Fix 60FPS for Submarine minigame
Browse files Browse the repository at this point in the history
Fixes #621
  • Loading branch information
julianxhokaxhiu committed Dec 9, 2023
1 parent e2ea3b7 commit 0cbc635
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 0 deletions.
1 change: 1 addition & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
## FF7

- 60FPS: Refactor 60FPS battle menu fix and fix ESUI compatibility ( https://github.com/julianxhokaxhiu/FFNx/pull/597 )
- 60FPS: Fix Submarine minigame ( https://github.com/julianxhokaxhiu/FFNx/issues/621 )
- Ambient: Allow ambient effects to playback in fields that use movies as background
- Core: Add additional main models eye-to-model mapping
- DevTools: Add Game Moment in Field Debug
Expand Down
1 change: 1 addition & 0 deletions src/ff7.h
Original file line number Diff line number Diff line change
Expand Up @@ -3030,6 +3030,7 @@ struct ff7_externals
uint32_t sub_779E14;
uint32_t battle_fps_menu_multiplier;
DWORD *submarine_minigame_status;
time_t *submarine_last_gametime;
DWORD *field_limit_fps;
DWORD *swirl_limit_fps;
int16_t (*get_bank_value)(int16_t, int16_t);
Expand Down
4 changes: 4 additions & 0 deletions src/ff7/misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,9 @@ void ff7_limit_fps()
// Gameover screen has nothing to limit
qpc_get_time(&last_gametime);
return;
case MODE_SUBMARINE:
last_gametime = *ff7_externals.submarine_last_gametime;
break;
}

if (ff7_fps_limiter < FF7_LIMITER_60FPS)
Expand All @@ -589,6 +592,7 @@ void ff7_limit_fps()
case MODE_BATTLE:
case MODE_SWIRL:
case MODE_SNOWBOARD:
case MODE_SUBMARINE:
case MODE_COASTER:
case MODE_CONDOR:
case MODE_CREDITS:
Expand Down
1 change: 1 addition & 0 deletions src/ff7_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,7 @@ void ff7_find_externals(struct ff7_game_obj* game_object)

ff7_externals.battle_fps_menu_multiplier = battle_main_loop + 0x335;
ff7_externals.submarine_minigame_status = (DWORD *)get_absolute_value(ff7_externals.fps_limiter_submarine, 0x48);
ff7_externals.submarine_last_gametime = (time_t *)get_absolute_value(ff7_externals.fps_limiter_submarine, 0x26);
ff7_externals.field_limit_fps = (DWORD *)get_absolute_value(ff7_externals.fps_limiter_field, 0x1F);
ff7_externals.swirl_limit_fps = (DWORD *)get_absolute_value(ff7_externals.fps_limiter_swirl, 0x48);

Expand Down

0 comments on commit 0cbc635

Please sign in to comment.