forked from Popn_Tools/popnhax
high framerate fps
This commit is contained in:
parent
f1a78c8469
commit
87de9ed78a
8
dist/popnhax/popnhax.xml
vendored
8
dist/popnhax/popnhax.xml
vendored
@ -124,8 +124,6 @@
|
|||||||
<keysound_offset __type="s8">0</keysound_offset>
|
<keysound_offset __type="s8">0</keysound_offset>
|
||||||
<!-- Adjust pop-kun and beam brightness (won't affect long popkuns) -->
|
<!-- Adjust pop-kun and beam brightness (won't affect long popkuns) -->
|
||||||
<beam_brightness __type="s8">0</beam_brightness>
|
<beam_brightness __type="s8">0</beam_brightness>
|
||||||
<!-- Disable the builtin frame limiter (faster/smoother animations at 120fps+) -->
|
|
||||||
<fps_uncap __type="bool">0</fps_uncap>
|
|
||||||
<!-- 1000Hz polling thread priority (for enhanced_polling only, might cause crashes on some systems if set too high)
|
<!-- 1000Hz polling thread priority (for enhanced_polling only, might cause crashes on some systems if set too high)
|
||||||
values THREAD_PRIORITY_LOWEST -2
|
values THREAD_PRIORITY_LOWEST -2
|
||||||
THREAD_PRIORITY_BELOW_NORMAL -1
|
THREAD_PRIORITY_BELOW_NORMAL -1
|
||||||
@ -135,6 +133,12 @@
|
|||||||
THREAD_PRIORITY_TIME_CRITICAL 15 -->
|
THREAD_PRIORITY_TIME_CRITICAL 15 -->
|
||||||
<enhanced_polling_priority __type="s8">1</enhanced_polling_priority>
|
<enhanced_polling_priority __type="s8">1</enhanced_polling_priority>
|
||||||
|
|
||||||
|
<!-- Framerate -->
|
||||||
|
<!-- Disable the builtin frame limiter (faster/smoother animations at 120fps+) -->
|
||||||
|
<fps_uncap __type="bool">0</fps_uncap>
|
||||||
|
<!-- Reference fps value for high_framerate animation speed (0: auto) -->
|
||||||
|
<high_framerate_fps __type="u16">0</high_framerate_fps>
|
||||||
|
|
||||||
<!-- Song db patches (requires patch_db) -->
|
<!-- Song db patches (requires patch_db) -->
|
||||||
<!-- Auto select patch file from data_mods folder based on music limit, or datecode otherwise (will detect datecode from ea3-config or force_datecode option) -->
|
<!-- Auto select patch file from data_mods folder based on music limit, or datecode otherwise (will detect datecode from ea3-config or force_datecode option) -->
|
||||||
<patch_xml_auto __type="bool">1</patch_xml_auto>
|
<patch_xml_auto __type="bool">1</patch_xml_auto>
|
||||||
|
@ -66,6 +66,7 @@ struct popnhax_config {
|
|||||||
bool exclude_omni;
|
bool exclude_omni;
|
||||||
bool partial_entries;
|
bool partial_entries;
|
||||||
bool high_framerate;
|
bool high_framerate;
|
||||||
|
uint16_t high_framerate_fps;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -212,6 +212,8 @@ PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, ignore_music_l
|
|||||||
"/popnhax/ignore_music_limit")
|
"/popnhax/ignore_music_limit")
|
||||||
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, high_framerate,
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, high_framerate,
|
||||||
"/popnhax/high_framerate")
|
"/popnhax/high_framerate")
|
||||||
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_U16, struct popnhax_config, high_framerate_fps,
|
||||||
|
"/popnhax/high_framerate_fps")
|
||||||
PSMAP_END
|
PSMAP_END
|
||||||
|
|
||||||
enum BufferIndexes {
|
enum BufferIndexes {
|
||||||
@ -7439,32 +7441,39 @@ static bool get_music_limit_from_file(const char *filepath, uint32_t *limit){
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool patch_afp_framerate()
|
static bool patch_afp_framerate(uint16_t fps)
|
||||||
{
|
{
|
||||||
DEVMODE lpDevMode;
|
DWORD framerate = fps;
|
||||||
memset(&lpDevMode, 0, sizeof(DEVMODE));
|
|
||||||
lpDevMode.dmSize = sizeof(DEVMODE);
|
|
||||||
lpDevMode.dmDriverExtra = 0;
|
|
||||||
|
|
||||||
if ( EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &lpDevMode) != 0 )
|
if ( framerate == 0 )
|
||||||
{
|
{
|
||||||
DWORD framerate = lpDevMode.dmDisplayFrequency;
|
DEVMODE lpDevMode;
|
||||||
float new_value = 1./framerate;
|
memset(&lpDevMode, 0, sizeof(DEVMODE));
|
||||||
|
lpDevMode.dmSize = sizeof(DEVMODE);
|
||||||
|
lpDevMode.dmDriverExtra = 0;
|
||||||
|
|
||||||
char *as_hex = (char*)&new_value;
|
if ( EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &lpDevMode) == 0 )
|
||||||
|
|
||||||
if ( !find_and_patch_hex(g_game_dll_fn, "\x82\x9D\x88\x3C", 4, 0, as_hex, 4) )
|
|
||||||
{
|
{
|
||||||
LOG("popnhax: high_framerate: cannot patch animation speed\n");
|
LOG("popnhax: high_framerate: could not retrieve display mode\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG("popnhax: high_framerate: patched animation speed for %ldHz\n", framerate);
|
framerate = lpDevMode.dmDisplayFrequency;
|
||||||
return true;
|
} else {
|
||||||
|
LOG("popnhax: high_framerate: force %ldHz\n", framerate);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG("popnhax: high_framerate: could not retrieve display mode\n");
|
float new_value = 1./framerate;
|
||||||
return false;
|
char *as_hex = (char*)&new_value;
|
||||||
|
|
||||||
|
if ( !find_and_patch_hex(g_game_dll_fn, "\x82\x9D\x88\x3C", 4, 0, as_hex, 4) )
|
||||||
|
{
|
||||||
|
LOG("popnhax: high_framerate: cannot patch animation speed for %ldHz\n", framerate);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG("popnhax: high_framerate: patched animation speed for %ldHz\n", framerate);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
|
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
|
||||||
@ -7848,7 +7857,7 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv
|
|||||||
|
|
||||||
if (config.high_framerate)
|
if (config.high_framerate)
|
||||||
{
|
{
|
||||||
patch_afp_framerate();
|
patch_afp_framerate(config.high_framerate_fps);
|
||||||
config.fps_uncap = true;
|
config.fps_uncap = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user