[genesisplusgx] "VDP mode" option (for eliminate region lockups / megakey behavior) #3917
This commit is contained in:
feos 2024-05-27 19:55:45 +03:00
parent 0f20bff766
commit c65a11eb2b
4 changed files with 17 additions and 2 deletions

Binary file not shown.

View File

@ -263,6 +263,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
[DefaultValue(LibGPGX.Region.Autodetect)]
public LibGPGX.Region Region { get; set; }
[DisplayName("Force VDP Mode")]
[Description("Overrides the VDP mode to force it to run at either 60Hz (NTSC) or 50Hz (PAL), regardless of system region.")]
[DefaultValue(LibGPGX.ForceVDP.Disabled)]
public LibGPGX.ForceVDP ForceVDP { get; set; }
[DisplayName("Load BIOS")]
[Description("Indicates whether to load the system BIOS rom.")]
[DefaultValue(false)]
@ -349,6 +354,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
InputSystemA = SystemForSystem(ControlTypeLeft),
InputSystemB = SystemForSystem(ControlTypeRight),
Region = Region,
ForceVDP = ForceVDP,
LoadBIOS = LoadBIOS,
ForceSram = game["sram"],
SMSFMSoundChip = SMSFMSoundChip,

View File

@ -30,11 +30,19 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
Japan_PAL = 4
}
public enum ForceVDP : int
{
Disabled = 0,
NTSC = 1,
PAL = 2
}
[StructLayout(LayoutKind.Sequential)]
public struct InitSettings
{
public uint BackdropColor;
public Region Region;
public ForceVDP ForceVDP;
public ushort LowPassRange;
public short LowFreq;
public short HighFreq;

View File

@ -715,6 +715,7 @@ struct InitSettings
{
uint32_t BackdropColor;
int32_t Region;
int32_t ForceVDP;
uint16_t LowPassRange;
int16_t LowFreq;
int16_t HighFreq;
@ -917,8 +918,8 @@ GPGX_EX int gpgx_init(const char* feromextension,
/* system options */
config.system = 0; /* = AUTO (or SYSTEM_SG, SYSTEM_SGII, SYSTEM_SGII_RAM_EXT, SYSTEM_MARKIII, SYSTEM_SMS, SYSTEM_SMS2, SYSTEM_GG, SYSTEM_MD) */
config.region_detect = settings->Region; /* = AUTO (1 = USA, 2 = EUROPE, 3 = JAPAN/NTSC, 4 = JAPAN/PAL) */
config.vdp_mode = 0; /* = AUTO (1 = NTSC, 2 = PAL) */
config.region_detect = settings->Region; /* 0 = AUTO, 1 = USA, 2 = EUROPE, 3 = JAPAN/NTSC, 4 = JAPAN/PAL */
config.vdp_mode = settings->ForceVDP; /* 0 = AUTO, 1 = NTSC, 2 = PAL */
config.master_clock = 0; /* = AUTO (1 = NTSC, 2 = PAL) */
config.force_dtack = 0;
config.addr_error = 1;