macOS: ignore -psn arg on first launch. LoadSpecialSettings() clean up
This commit is contained in:
parent
467e7954a5
commit
bbedcaa37b
106
core/nullDC.cpp
106
core/nullDC.cpp
|
@ -100,10 +100,10 @@ static void LoadSpecialSettings()
|
||||||
{
|
{
|
||||||
if (settings.platform.system == DC_PLATFORM_DREAMCAST)
|
if (settings.platform.system == DC_PLATFORM_DREAMCAST)
|
||||||
{
|
{
|
||||||
char prod_id[sizeof(ip_meta.product_number) + 1] = {0};
|
std::string prod_id(ip_meta.product_number, sizeof(ip_meta.product_number));
|
||||||
memcpy(prod_id, ip_meta.product_number, sizeof(ip_meta.product_number));
|
prod_id = trim_trailing_ws(prod_id);
|
||||||
|
|
||||||
NOTICE_LOG(BOOT, "Game ID is [%s]", prod_id);
|
NOTICE_LOG(BOOT, "Game ID is [%s]", prod_id.c_str());
|
||||||
rtt_to_buffer_game = false;
|
rtt_to_buffer_game = false;
|
||||||
safemode_game = false;
|
safemode_game = false;
|
||||||
tr_poly_depth_mask_game = false;
|
tr_poly_depth_mask_game = false;
|
||||||
|
@ -113,7 +113,7 @@ static void LoadSpecialSettings()
|
||||||
forced_game_cable = -1;
|
forced_game_cable = -1;
|
||||||
|
|
||||||
if (ip_meta.isWindowsCE() || settings.dreamcast.ForceWindowsCE
|
if (ip_meta.isWindowsCE() || settings.dreamcast.ForceWindowsCE
|
||||||
|| !strncmp("T26702N", prod_id, 7)) // PBA Tour Bowling 2001
|
|| prod_id == "T26702N") // PBA Tour Bowling 2001
|
||||||
{
|
{
|
||||||
INFO_LOG(BOOT, "Enabling Full MMU and Extra depth scaling for Windows CE game");
|
INFO_LOG(BOOT, "Enabling Full MMU and Extra depth scaling for Windows CE game");
|
||||||
settings.rend.ExtraDepthScale = 0.1; // taxi 2 needs 0.01 for FMV (amd, per-tri)
|
settings.rend.ExtraDepthScale = 0.1; // taxi 2 needs 0.01 for FMV (amd, per-tri)
|
||||||
|
@ -123,94 +123,94 @@ static void LoadSpecialSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tony Hawk's Pro Skater 2
|
// Tony Hawk's Pro Skater 2
|
||||||
if (!strncmp("T13008D", prod_id, 7) || !strncmp("T13006N", prod_id, 7)
|
if (prod_id == "T13008D" || prod_id == "T13006N"
|
||||||
// Tony Hawk's Pro Skater 1
|
// Tony Hawk's Pro Skater 1
|
||||||
|| !strncmp("T40205N", prod_id, 7)
|
|| prod_id == "T40205N"
|
||||||
// Tony Hawk's Skateboarding
|
// Tony Hawk's Skateboarding
|
||||||
|| !strncmp("T40204D", prod_id, 7)
|
|| prod_id == "T40204D"
|
||||||
// Skies of Arcadia
|
// Skies of Arcadia
|
||||||
|| !strncmp("MK-51052", prod_id, 8)
|
|| prod_id == "MK-51052"
|
||||||
// Eternal Arcadia (JP)
|
// Eternal Arcadia (JP)
|
||||||
|| !strncmp("HDR-0076", prod_id, 8)
|
|| prod_id == "HDR-0076"
|
||||||
// Flag to Flag (US)
|
// Flag to Flag (US)
|
||||||
|| !strncmp("MK-51007", prod_id, 8)
|
|| prod_id == "MK-51007"
|
||||||
// Super Speed Racing (JP)
|
// Super Speed Racing (JP)
|
||||||
|| !strncmp("HDR-0013", prod_id, 8)
|
|| prod_id == "HDR-0013"
|
||||||
// Yu Suzuki Game Works Vol. 1
|
// Yu Suzuki Game Works Vol. 1
|
||||||
|| !strncmp("6108099", prod_id, 7)
|
|| prod_id == "6108099"
|
||||||
// L.O.L
|
// L.O.L
|
||||||
|| !strncmp("T2106M", prod_id, 6)
|
|| prod_id == "T2106M"
|
||||||
// Miss Moonlight
|
// Miss Moonlight
|
||||||
|| !strncmp("T18702M", prod_id, 7)
|
|| prod_id == "T18702M"
|
||||||
// Tom Clancy's Rainbow Six (US)
|
// Tom Clancy's Rainbow Six (US)
|
||||||
|| !strncmp("T40401N", prod_id, 7)
|
|| prod_id == "T40401N"
|
||||||
// Tom Clancy's Rainbow Six incl. Eagle Watch Missions (EU)
|
// Tom Clancy's Rainbow Six incl. Eagle Watch Missions (EU)
|
||||||
|| !strncmp("T-45001D05", prod_id, 10))
|
|| prod_id == "T-45001D05")
|
||||||
{
|
{
|
||||||
INFO_LOG(BOOT, "Enabling render to texture buffer for game %s", prod_id);
|
INFO_LOG(BOOT, "Enabling render to texture buffer for game %s", prod_id.c_str());
|
||||||
settings.rend.RenderToTextureBuffer = 1;
|
settings.rend.RenderToTextureBuffer = 1;
|
||||||
rtt_to_buffer_game = true;
|
rtt_to_buffer_game = true;
|
||||||
}
|
}
|
||||||
if (!strncmp("HDR-0176", prod_id, 8) || !strncmp("RDC-0057", prod_id, 8))
|
if (prod_id == "HDR-0176" || prod_id == "RDC-0057")
|
||||||
{
|
{
|
||||||
INFO_LOG(BOOT, "Enabling translucent depth multipass for game %s", prod_id);
|
INFO_LOG(BOOT, "Enabling translucent depth multipass for game %s", prod_id.c_str());
|
||||||
// Cosmic Smash
|
// Cosmic Smash
|
||||||
settings.rend.TranslucentPolygonDepthMask = 1;
|
settings.rend.TranslucentPolygonDepthMask = 1;
|
||||||
tr_poly_depth_mask_game = true;
|
tr_poly_depth_mask_game = true;
|
||||||
}
|
}
|
||||||
// NHL 2K2
|
// NHL 2K2
|
||||||
if (!strncmp("MK-51182", prod_id, 8))
|
if (prod_id == "MK-51182")
|
||||||
{
|
{
|
||||||
INFO_LOG(BOOT, "Enabling Extra depth scaling for game %s", prod_id);
|
INFO_LOG(BOOT, "Enabling Extra depth scaling for game %s", prod_id.c_str());
|
||||||
settings.rend.ExtraDepthScale = 1000000; // Mali needs 1M, 10K is enough for others
|
settings.rend.ExtraDepthScale = 1000000; // Mali needs 1M, 10K is enough for others
|
||||||
extra_depth_game = true;
|
extra_depth_game = true;
|
||||||
}
|
}
|
||||||
// Re-Volt (US, EU)
|
// Re-Volt (US, EU)
|
||||||
else if (!strncmp("T-8109N", prod_id, 7) || !strncmp("T8107D 50", prod_id, 10))
|
else if (prod_id == "T-8109N" || prod_id == "T8107D 50")
|
||||||
{
|
{
|
||||||
INFO_LOG(BOOT, "Enabling Extra depth scaling for game %s", prod_id);
|
INFO_LOG(BOOT, "Enabling Extra depth scaling for game %s", prod_id.c_str());
|
||||||
settings.rend.ExtraDepthScale = 100;
|
settings.rend.ExtraDepthScale = 100;
|
||||||
extra_depth_game = true;
|
extra_depth_game = true;
|
||||||
}
|
}
|
||||||
// Samurai Shodown 6 dc port
|
// Samurai Shodown 6 dc port
|
||||||
else if (!strncmp("T0002M", prod_id, 6))
|
else if (prod_id == "T0002M")
|
||||||
{
|
{
|
||||||
INFO_LOG(BOOT, "Enabling Extra depth scaling for game %s", prod_id);
|
INFO_LOG(BOOT, "Enabling Extra depth scaling for game %s", prod_id.c_str());
|
||||||
settings.rend.ExtraDepthScale = 1e26;
|
settings.rend.ExtraDepthScale = 1e26;
|
||||||
extra_depth_game = true;
|
extra_depth_game = true;
|
||||||
}
|
}
|
||||||
// Super Producers
|
// Super Producers
|
||||||
if (!strncmp("T14303M", prod_id, 7)
|
if (prod_id == "T14303M"
|
||||||
// Giant Killers
|
// Giant Killers
|
||||||
|| !strncmp("T45401D 50", prod_id, 10)
|
|| prod_id == "T45401D 50"
|
||||||
// Wild Metal (US)
|
// Wild Metal (US)
|
||||||
|| !strncmp("T42101N 00", prod_id, 10)
|
|| prod_id == "T42101N 00"
|
||||||
// Wild Metal (EU)
|
// Wild Metal (EU)
|
||||||
|| !strncmp("T40501D-50", prod_id, 10)
|
|| prod_id == "T40501D-50"
|
||||||
// Resident Evil 2 (US)
|
// Resident Evil 2 (US)
|
||||||
|| !strncmp("T1205N", prod_id, 6)
|
|| prod_id == "T1205N"
|
||||||
// Resident Evil 2 (EU)
|
// Resident Evil 2 (EU)
|
||||||
|| !strncmp("T7004D 50", prod_id, 10)
|
|| prod_id == "T7004D 50"
|
||||||
// Rune Jade
|
// Rune Jade
|
||||||
|| !strncmp("T14304M", prod_id, 7)
|
|| prod_id == "T14304M"
|
||||||
// Marionette Company
|
// Marionette Company
|
||||||
|| !strncmp("T5202M", prod_id, 6)
|
|| prod_id == "T5202M"
|
||||||
// Marionette Company 2
|
// Marionette Company 2
|
||||||
|| !strncmp("T5203M", prod_id, 6)
|
|| prod_id == "T5203M"
|
||||||
// Maximum Pool (for online support)
|
// Maximum Pool (for online support)
|
||||||
|| !strncmp("T11010N", prod_id, 7)
|
|| prod_id == "T11010N"
|
||||||
// StarLancer (US) (for online support)
|
// StarLancer (US) (for online support)
|
||||||
|| !strncmp("T40209N", prod_id, 7)
|
|| prod_id == "T40209N"
|
||||||
// StarLancer (EU) (for online support)
|
// StarLancer (EU) (for online support)
|
||||||
|| !strncmp("T17723D 05", prod_id, 10)
|
|| prod_id == "T17723D 05"
|
||||||
// Heroes of might and magic III
|
// Heroes of might and magic III
|
||||||
|| !strncmp("T0000M", prod_id, 6)
|
|| prod_id == "T0000M"
|
||||||
// WebTV
|
// WebTV
|
||||||
|| !strncmp("6107117", prod_id, 7)
|
|| prod_id == "6107117"
|
||||||
// PBA
|
// PBA
|
||||||
|| !strncmp("T26702N", prod_id, 7))
|
|| prod_id == "T26702N")
|
||||||
{
|
{
|
||||||
INFO_LOG(BOOT, "Disabling 32-bit virtual memory for game %s", prod_id);
|
INFO_LOG(BOOT, "Disabling 32-bit virtual memory for game %s", prod_id.c_str());
|
||||||
settings.dynarec.disable_vmem32 = true;
|
settings.dynarec.disable_vmem32 = true;
|
||||||
disable_vmem32_game = true;
|
disable_vmem32_game = true;
|
||||||
}
|
}
|
||||||
|
@ -266,17 +266,17 @@ static void LoadSpecialSettings()
|
||||||
forced_game_cable = settings.dreamcast.cable;
|
forced_game_cable = settings.dreamcast.cable;
|
||||||
}
|
}
|
||||||
if (settings.dreamcast.cable == 2 &&
|
if (settings.dreamcast.cable == 2 &&
|
||||||
(!strncmp("T40602N", prod_id, 7) // Centipede
|
(prod_id == "T40602N" // Centipede
|
||||||
|| !strncmp("T9710N", prod_id, 6) // Gauntlet Legends (US)
|
|| prod_id == "T9710N" // Gauntlet Legends (US)
|
||||||
|| !strncmp("MK-51152", prod_id, 8) // World Series Baseball 2K2
|
|| prod_id == "MK-51152" // World Series Baseball 2K2
|
||||||
|| !strncmp("T-9701N", prod_id, 7) // Mortal Kombat Gold (US)
|
|| prod_id == "T-9701N" // Mortal Kombat Gold (US)
|
||||||
|| !strncmp("T1203N", prod_id, 6) // Street Fighter Alpha 3 (US)
|
|| prod_id == "T1203N" // Street Fighter Alpha 3 (US)
|
||||||
|| !strncmp("T1203M", prod_id, 6) // Street Fighter Zero 3 (JP)
|
|| prod_id == "T1203M" // Street Fighter Zero 3 (JP)
|
||||||
|| !strncmp("T13002N", prod_id, 7) // Vigilante 8 (US)
|
|| prod_id == "T13002N" // Vigilante 8 (US)
|
||||||
|| !strncmp("T13003N", prod_id, 7) // Toy Story 2 (US)
|
|| prod_id == "T13003N" // Toy Story 2 (US)
|
||||||
|| !strncmp("T1209N", prod_id, 6) // Gigawing (US)
|
|| prod_id == "T1209N" // Gigawing (US)
|
||||||
|| !strncmp("T1208M", prod_id, 6) // Gigawing (JP)
|
|| prod_id == "T1208M" // Gigawing (JP)
|
||||||
|| !strncmp("T1235M", prod_id, 6))) // Vampire Chronicle for Matching Service
|
|| prod_id == "T1235M")) // Vampire Chronicle for Matching Service
|
||||||
{
|
{
|
||||||
NOTICE_LOG(BOOT, "Game doesn't support RGB. Using TV Composite instead");
|
NOTICE_LOG(BOOT, "Game doesn't support RGB. Using TV Composite instead");
|
||||||
settings.dreamcast.cable = 3;
|
settings.dreamcast.cable = 3;
|
||||||
|
@ -435,8 +435,6 @@ int reicast_init(int argc, char* argv[])
|
||||||
LogManager::Init();
|
LogManager::Init();
|
||||||
LoadSettings(false);
|
LoadSettings(false);
|
||||||
}
|
}
|
||||||
for (int i = 1; i < argc; i++)
|
|
||||||
NOTICE_LOG(BOOT, "Arg %d: %s", i, argv[i]);
|
|
||||||
settings.pvr.rend = (RenderType)cfgLoadInt("config", "pvr.rend", (int)settings.pvr.rend);
|
settings.pvr.rend = (RenderType)cfgLoadInt("config", "pvr.rend", (int)settings.pvr.rend);
|
||||||
|
|
||||||
os_CreateWindow();
|
os_CreateWindow();
|
||||||
|
|
|
@ -201,12 +201,19 @@ extern "C" int emu_reicast_init()
|
||||||
NSArray *arguments = [[NSProcessInfo processInfo] arguments];
|
NSArray *arguments = [[NSProcessInfo processInfo] arguments];
|
||||||
unsigned long argc = [arguments count];
|
unsigned long argc = [arguments count];
|
||||||
char **argv = (char **)malloc(argc * sizeof(char*));
|
char **argv = (char **)malloc(argc * sizeof(char*));
|
||||||
|
int paramCount = 0;
|
||||||
for (unsigned long i = 0; i < argc; i++)
|
for (unsigned long i = 0; i < argc; i++)
|
||||||
argv[i] = strdup([[arguments objectAtIndex:i] UTF8String]);
|
{
|
||||||
|
const char *arg = [[arguments objectAtIndex:i] UTF8String];
|
||||||
|
if (!strncmp(arg, "-psn_", 5))
|
||||||
|
// ignore Process Serial Number argument on first launch
|
||||||
|
continue;
|
||||||
|
argv[paramCount++] = strdup(arg);
|
||||||
|
}
|
||||||
|
|
||||||
int rc = reicast_init((int)argc, argv);
|
int rc = reicast_init(paramCount, argv);
|
||||||
|
|
||||||
for (unsigned long i = 0; i < argc; i++)
|
for (unsigned long i = 0; i < paramCount; i++)
|
||||||
free(argv[i]);
|
free(argv[i]);
|
||||||
free(argv);
|
free(argv);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue