popn: boot with 3 monitors (#636)

## Link to GitHub Issue or related Pull Request, if one exists
#618 

## Description of change
Take the monitor hooks added for IIDX/SDVX #612 and apply it to popn as
well now that popn has a subscreen.

There is a debug option in game that actually uses three monitors, which
can be activated via hex edits. This will prevent that from working.

## Testing
Tested with 3 monitors, fs and windowed.
This commit is contained in:
bicarus
2026-04-13 23:02:56 -07:00
committed by GitHub
parent 2042b629e9
commit e59a50b64c
5 changed files with 26 additions and 2 deletions
+8 -2
View File
@@ -576,7 +576,13 @@ namespace sysutils {
}
void hook_EnumDisplayDevicesA() {
EnumDisplayDevicesA_orig = detour::iat_try(
"EnumDisplayDevicesA", EnumDisplayDevicesA_hook, avs::game::DLL_INSTANCE);
// the goal is to trick DX9 into thinking that some monitors are not attached
// so we need to trampoline hook at user32 instead of IAT at game level
log_misc("sysutils", "hooking EnumDisplayDevicesA to hide if there are more than 3 monitors...");
detour::trampoline_try(
"user32.dll",
"EnumDisplayDevicesA",
(void*)EnumDisplayDevicesA_hook,
(void**)&EnumDisplayDevicesA_orig);
}
}