forked from Popn_Tools/popnhax
split hd resolution and hd timing patches
This commit is contained in:
parent
9302893549
commit
6a10f43aac
9
dist/popnhax/popnhax.xml
vendored
9
dist/popnhax/popnhax.xml
vendored
@ -6,8 +6,10 @@
|
|||||||
<pfree __type="bool">0</pfree>
|
<pfree __type="bool">0</pfree>
|
||||||
<!-- Press numpad 9 to exit song, or on result screen to exit session (great for pfree!) -->
|
<!-- Press numpad 9 to exit song, or on result screen to exit session (great for pfree!) -->
|
||||||
<quick_retire __type="bool">0</quick_retire>
|
<quick_retire __type="bool">0</quick_retire>
|
||||||
<!-- HD timing for pcb_type=0 (0: no, 1: force HD timing offset (for SD cab with CRT), 2: also set resolution to 768p but center text (for SD cab with LCD mod)) -->
|
<!-- HD timing for pcb_type=0 -->
|
||||||
<hd_on_sd __type="u8">0</hd_on_sd>
|
<force_hd_timing __type="bool">0</force_hd_timing>
|
||||||
|
<!-- HD resolution for pcb_type=0 (0: no, 1: keep texts as on HD cab (smaller LCD mod), 2: center texts (32" LCD mod) ) -->
|
||||||
|
<force_hd_resolution __type="u8">0</force_hd_resolution>
|
||||||
<!-- Force unlock music, charts, and characters -->
|
<!-- Force unlock music, charts, and characters -->
|
||||||
<force_unlocks __type="bool">0</force_unlocks>
|
<force_unlocks __type="bool">0</force_unlocks>
|
||||||
<!-- Force unlock deco parts (avoid using this on later games without deco) -->
|
<!-- Force unlock deco parts (avoid using this on later games without deco) -->
|
||||||
@ -29,8 +31,9 @@
|
|||||||
<patch_xml_auto __type="bool">1</patch_xml_auto>
|
<patch_xml_auto __type="bool">1</patch_xml_auto>
|
||||||
<!-- Manually set XML file containing patches (requires patch_xml_auto to be disabled) -->
|
<!-- Manually set XML file containing patches (requires patch_xml_auto to be disabled) -->
|
||||||
<patch_xml_filename __type="str"></patch_xml_filename>
|
<patch_xml_filename __type="str"></patch_xml_filename>
|
||||||
|
<!-- END OF USER SETTINGS -->
|
||||||
|
|
||||||
<!-- DEBUG OPTIONS, GENERALLY SHOULD NOT BE CHANGED -->
|
<!-- DEBUG OPTIONS FOLLOW (GENERALLY SHOULD NOT BE CHANGED) -->
|
||||||
|
|
||||||
<!-- Offset the keysounds by x ms (negative is earlier) -->
|
<!-- Offset the keysounds by x ms (negative is earlier) -->
|
||||||
<keysound_offset __type="s8">0</keysound_offset>
|
<keysound_offset __type="s8">0</keysound_offset>
|
||||||
|
@ -7,7 +7,8 @@ struct popnhax_config {
|
|||||||
bool hidden_is_offset;
|
bool hidden_is_offset;
|
||||||
bool pfree;
|
bool pfree;
|
||||||
bool quick_retire;
|
bool quick_retire;
|
||||||
uint8_t hd_on_sd;
|
bool force_hd_timing;
|
||||||
|
uint8_t force_hd_resolution;
|
||||||
bool force_unlocks;
|
bool force_unlocks;
|
||||||
bool force_unlock_deco;
|
bool force_unlock_deco;
|
||||||
bool unset_volume;
|
bool unset_volume;
|
||||||
|
@ -82,8 +82,10 @@ PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, pfree,
|
|||||||
"/popnhax/pfree")
|
"/popnhax/pfree")
|
||||||
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, quick_retire,
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, quick_retire,
|
||||||
"/popnhax/quick_retire")
|
"/popnhax/quick_retire")
|
||||||
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_U8, struct popnhax_config, hd_on_sd,
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, force_hd_timing,
|
||||||
"/popnhax/hd_on_sd")
|
"/popnhax/force_hd_timing")
|
||||||
|
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_U8, struct popnhax_config, force_hd_resolution,
|
||||||
|
"/popnhax/force_hd_resolution")
|
||||||
PSMAP_MEMBER_REQ(PSMAP_PROPERTY_TYPE_BOOL, struct popnhax_config, force_unlocks,
|
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,
|
||||||
@ -1773,39 +1775,50 @@ static bool patch_base_offset(int32_t value) {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool patch_hd_timing() {
|
||||||
|
if (!patch_base_offset(-76))
|
||||||
static bool patch_hd_on_sd(uint8_t mode) {
|
|
||||||
if (mode > 2)
|
|
||||||
{
|
{
|
||||||
printf("ponhax: HD on SD mode invalid value %d\n",mode);
|
printf("popnhax: HD timing: cannot set HD offset\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!patch_base_offset(-76))
|
printf("popnhax: HD timing forced\n");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool patch_hd_resolution(uint8_t mode) {
|
||||||
|
if (mode > 2)
|
||||||
{
|
{
|
||||||
printf("popnhax: HD on SD: cannot set HD offset\n");
|
printf("ponhax: HD resolution invalid value %d\n",mode);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set window to 1360*768 */
|
/* set window to 1360*768 */
|
||||||
if ( mode == 2 )
|
|
||||||
{
|
|
||||||
if (!patch_hex("\x0F\xB6\xC0\xF7\xD8\x1B\xC0\x25\xD0\x02", 10, -5, "\xB8\x50\x05\x00\x00\xC3\xCC\xCC\xCC", 9)
|
if (!patch_hex("\x0F\xB6\xC0\xF7\xD8\x1B\xC0\x25\xD0\x02", 10, -5, "\xB8\x50\x05\x00\x00\xC3\xCC\xCC\xCC", 9)
|
||||||
&& !patch_hex("\x84\xc0\x74\x14\x0f\xb6\x05", 7, -5, "\xB8\x50\x05\x00\x00\xC3\xCC\xCC\xCC", 9))
|
&& !patch_hex("\x84\xc0\x74\x14\x0f\xb6\x05", 7, -5, "\xB8\x50\x05\x00\x00\xC3\xCC\xCC\xCC", 9))
|
||||||
{
|
{
|
||||||
printf("popnhax: HD on SD: cannot find screen width function\n");
|
printf("popnhax: HD resolution: cannot find screen width function\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!patch_hex("\x0f\xb6\xc0\xf7\xd8\x1b\xc0\x25\x20\x01", 10, -5, "\xB8\x00\x03\x00\x00\xC3\xCC\xCC\xCC", 9))
|
if (!patch_hex("\x0f\xb6\xc0\xf7\xd8\x1b\xc0\x25\x20\x01", 10, -5, "\xB8\x00\x03\x00\x00\xC3\xCC\xCC\xCC", 9))
|
||||||
printf("popnhax: HD on SD: cannot find screen height function\n");
|
printf("popnhax: HD resolution: cannot find screen height function\n");
|
||||||
|
|
||||||
if (!patch_hex("\x8B\x54\x24\x20\x53\x51\x52\xEB\x0C", 9, -6, "\x90\x90", 2))
|
if (!patch_hex("\x8B\x54\x24\x20\x53\x51\x52\xEB\x0C", 9, -6, "\x90\x90", 2))
|
||||||
printf("popnhax: HD on SD: cannot find screen aspect ratio function\n");
|
printf("popnhax: HD resolution: cannot find screen aspect ratio function\n");
|
||||||
|
|
||||||
|
|
||||||
|
if ( mode == 1 )
|
||||||
|
{
|
||||||
|
/* move texts (by forcing HD behavior) */
|
||||||
|
if (!patch_hex("\x1B\xC9\x83\xE1\x95\x81\xC1\x86", 8, -5, "\xB9\xFF\xFF\xFF\xFF\x90\x90", 7))
|
||||||
|
printf("popnhax: HD resolution: cannot move gamecode position\n");
|
||||||
|
|
||||||
|
if (!patch_hex("\x6a\x01\x6a\x00\x50\x8b\x06\x33\xff", 9, -7, "\xEB", 1))
|
||||||
|
printf("popnhax: HD resolution: cannot move credit/network position\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("popnhax: HD on SD mode %d\n",mode);
|
printf("popnhax: HD resolution forced%s\n",(mode==2)?" (centered texts)":"");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1833,8 +1846,12 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv
|
|||||||
patch_quick_retire(config.pfree);
|
patch_quick_retire(config.pfree);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.hd_on_sd) {
|
if (config.force_hd_timing) {
|
||||||
patch_hd_on_sd(config.hd_on_sd);
|
patch_hd_timing();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.force_hd_resolution) {
|
||||||
|
patch_hd_resolution(config.force_hd_resolution);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.hidden_is_offset){
|
if (config.hidden_is_offset){
|
||||||
@ -1842,7 +1859,7 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserv
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (config.keysound_offset){
|
if (config.keysound_offset){
|
||||||
/* must be called after hd_on_sd */
|
/* must be called _after_ force_hd_timing */
|
||||||
patch_keysound_offset(config.keysound_offset);
|
patch_keysound_offset(config.keysound_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user