forked from Popn_Tools/popnhax
audio source fix
This commit is contained in:
parent
3018d9ac2d
commit
f59de4f8fa
2
dist/popnhax/popnhax.xml
vendored
2
dist/popnhax/popnhax.xml
vendored
@ -20,6 +20,8 @@
|
|||||||
<!-- Force unlock deco parts (avoid using this on later games without deco) -->
|
<!-- Force unlock deco parts (avoid using this on later games without deco) -->
|
||||||
<force_unlock_deco __type="bool">0</force_unlock_deco>
|
<force_unlock_deco __type="bool">0</force_unlock_deco>
|
||||||
|
|
||||||
|
<!-- Prevent crash on boot when using a different default audio source (aka HDMI audio patch) -->
|
||||||
|
<audio_source_fix __type="bool">0</audio_source_fix>
|
||||||
<!-- Prevent Windows volume from being reset on boot -->
|
<!-- Prevent Windows volume from being reset on boot -->
|
||||||
<unset_volume __type="bool">0</unset_volume>
|
<unset_volume __type="bool">0</unset_volume>
|
||||||
<!-- Force booting directly into event mode -->
|
<!-- Force booting directly into event mode -->
|
||||||
|
@ -12,6 +12,7 @@ struct popnhax_config {
|
|||||||
uint8_t force_hd_resolution;
|
uint8_t force_hd_resolution;
|
||||||
bool force_unlocks;
|
bool force_unlocks;
|
||||||
bool force_unlock_deco;
|
bool force_unlock_deco;
|
||||||
|
bool audio_source_fix;
|
||||||
bool unset_volume;
|
bool unset_volume;
|
||||||
bool event_mode;
|
bool event_mode;
|
||||||
bool remove_timer;
|
bool remove_timer;
|
||||||
|
@ -96,6 +96,8 @@ PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, force_unlocks,
|
|||||||
"/popnhax/force_unlocks")
|
"/popnhax/force_unlocks")
|
||||||
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, force_unlock_deco,
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, force_unlock_deco,
|
||||||
"/popnhax/force_unlock_deco")
|
"/popnhax/force_unlock_deco")
|
||||||
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, audio_source_fix,
|
||||||
|
"/popnhax/audio_source_fix")
|
||||||
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, unset_volume,
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, unset_volume,
|
||||||
"/popnhax/unset_volume")
|
"/popnhax/unset_volume")
|
||||||
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, event_mode, "/popnhax/event_mode")
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, event_mode, "/popnhax/event_mode")
|
||||||
@ -1055,6 +1057,30 @@ static bool patch_database(uint8_t force_unlocks) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool patch_audio_source_fix() {
|
||||||
|
DWORD dllSize = 0;
|
||||||
|
char *data = getDllData(g_game_dll_fn, &dllSize);
|
||||||
|
|
||||||
|
{
|
||||||
|
fuzzy_search_task task;
|
||||||
|
|
||||||
|
FUZZY_START(task, 1)
|
||||||
|
FUZZY_CODE(task, 0, "\x85\xC0\x75\x96\x8D\x70\x7F\xE8\xF8\x2B\x00\x00", 12)
|
||||||
|
|
||||||
|
int64_t pattern_offset = find_block(data, dllSize, &task, 0);
|
||||||
|
if (pattern_offset == -1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t patch_addr = (int64_t)data + pattern_offset;
|
||||||
|
patch_memory(patch_addr, (char *)"\x90\x90\x90\x90", 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("popnhax: audio source fixed\n");
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool patch_unset_volume() {
|
static bool patch_unset_volume() {
|
||||||
DWORD dllSize = 0;
|
DWORD dllSize = 0;
|
||||||
char *data = getDllData(g_game_dll_fn, &dllSize);
|
char *data = getDllData(g_game_dll_fn, &dllSize);
|
||||||
@ -3020,6 +3046,10 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv
|
|||||||
patch_practice_mode();
|
patch_practice_mode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.audio_source_fix) {
|
||||||
|
patch_audio_source_fix();
|
||||||
|
}
|
||||||
|
|
||||||
if (config.unset_volume) {
|
if (config.unset_volume) {
|
||||||
patch_unset_volume();
|
patch_unset_volume();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user