diff --git a/dist/popnhax/popnhax.xml b/dist/popnhax/popnhax.xml index e245678..55d49df 100644 --- a/dist/popnhax/popnhax.xml +++ b/dist/popnhax/popnhax.xml @@ -121,6 +121,9 @@ 0 + + 0 + diff --git a/popnhax/config.h b/popnhax/config.h index ac462f8..687c790 100644 --- a/popnhax/config.h +++ b/popnhax/config.h @@ -5,6 +5,7 @@ struct popnhax_config { uint8_t game_version; + bool quick_boot; bool practice_mode; bool hidden_is_offset; bool iidx_hard_gauge; diff --git a/popnhax/dllmain.cc b/popnhax/dllmain.cc index be2b08e..1449157 100644 --- a/popnhax/dllmain.cc +++ b/popnhax/dllmain.cc @@ -100,6 +100,8 @@ uint8_t *add_string(uint8_t *input); struct popnhax_config config = {}; PSMAP_BEGIN(config_psmap, static) +PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, quick_boot, + "/popnhax/quick_boot") PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, hidden_is_offset, "/popnhax/hidden_is_offset") PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, iidx_hard_gauge, @@ -8136,6 +8138,18 @@ static bool patch_afp_framerate(uint16_t fps) return true; } +static bool patch_quick_boot() +{ + if ( !find_and_patch_hex(g_game_dll_fn, "\x8B\xF0\x8B\x16\x8B\x42\x04\x6A\x00", 9, -10, "\x90\x90\x90\x90\x90", 5) ) + { + LOG("popnhax: quick_boot: cannot patch song checks\n"); + return false; + } + + LOG("popnhax: quick boot enabled\n"); + return true; +} + BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: { @@ -8659,11 +8673,17 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv { patch_ex_attract( config.hispeed_auto ? config.hispeed_default_bpm : 0 ); } + if (config.attract_full) { patch_full_attract(); } + if (config.quick_boot) + { + patch_quick_boot(); + } + if (config.time_rate) patch_get_time(config.time_rate/100.);