Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
inactive123 committed Jul 7, 2018
1 parent e9cb9f9 commit d8a0197
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 38 deletions.
6 changes: 6 additions & 0 deletions core/hw/sh4/dyna/decoder.cpp
Expand Up @@ -699,6 +699,9 @@ static u32 MatchDiv32(u32 pc , Sh4RegType &reg1,Sh4RegType &reg2 , Sh4RegType &r

static bool MatchDiv32u(u32 op,u32 pc)
{
if (settings.dynarec.DisableDivMatching)
return false;

div_som_reg1=NoReg;
div_som_reg2=NoReg;
div_som_reg3=NoReg;
Expand All @@ -714,6 +717,9 @@ static bool MatchDiv32u(u32 op,u32 pc)

static bool MatchDiv32s(u32 op,u32 pc)
{
if (settings.dynarec.DisableDivMatching)
return false;

u32 n = GetN(op);
u32 m = GetM(op);

Expand Down
7 changes: 7 additions & 0 deletions core/nullDC.cpp
Expand Up @@ -194,6 +194,12 @@ static void LoadSpecialSettings(void)
settings.aica.EGHack = lut_games[i].eg_hack;
}

if (lut_games[i].disable_div != -1)
{
log_cb(RETRO_LOG_INFO, "[Hack]: Applying Disable DIV hack.\n");
settings.dynarec.DisableDivMatching = lut_games[i].disable_div;
}

break;
}
}
Expand Down Expand Up @@ -406,6 +412,7 @@ void LoadSettings(void)
settings.dynarec.Enable = 1;
settings.dynarec.idleskip = 1;
settings.dynarec.unstable_opt = 0;
settings.dynarec.DisableDivMatching = 0;
//disable_nvmem can't be loaded, because nvmem init is before cfg load
settings.UpdateModeForced = 0;
settings.dreamcast.RTC = GetRTC_now();
Expand Down
81 changes: 43 additions & 38 deletions core/rom_luts.h
Expand Up @@ -20,6 +20,7 @@ struct game_type
int translucentPolygonDepthMask; /* -1, make no decision */
int rendertotexturebuffer; /* -1, make no decision */
int eg_hack; /* -1, make no decision */
int disable_div; /* -1, make no decision */
};

struct game_type_naomi
Expand All @@ -32,65 +33,69 @@ struct game_type_naomi
int translucentPolygonDepthMask; /* -1, make no decision */
int rendertotexturebuffer; /* -1, make no decision */
int eg_hack; /* -1, make no decision */
int disable_div; /* -1, make no decision */
};

static struct game_type lut_games[] =
{
/* Update mode fullspeed */
{ "T1210N ", 1, -1, -1, -1, -1, -1, -1 }, /* Street Fighter III Double Impact */
{ "T1210N ", 1, -1, -1, -1, -1, -1, -1, -1 }, /* Street Fighter III Double Impact */

/* Fallback to generic recompiler */

/* EG Hack */
{ "T46703M ", -1, -1, -1, -1, -1, -1, 1 }, /* Border Down (Japan) */
{ "MK-51065 ", -1, -1, -1, -1, -1, -1, 1 }, /* Bomberman Online (USA) */
{ "T47801M ", -1, -1, -1, -1, -1, -1, 1 }, /* Chaos Field (Japan) */
{ "T23202M ", -1, -1, -1, -1, -1, -1, 1 }, /* Death Crimson OX (Japan) */
{ "T2401N ", -1, -1, -1, -1, -1, -1, 1 }, /* Death Crimson OX (USA) */
{ "T44306N ", -1, -1, -1, -1, -1, -1, 1 }, /* Fatal Fury: Mark of the Wolves (USA) */
{ "T3108M ", -1, -1, -1, -1, -1, -1, 1 }, /* Garou: Mark of the Wolves (Japan) */
{ "HDR-0078 ", -1, -1, -1, -1, -1, -1, 1 }, /* Jet Set Radio (Japan) */
{ "MK-51058 ", -1, -1, -1, -1, -1, -1, 1 }, /* Jet Grind Radio (USA) */
{ "MK-5105850", -1, -1, -1, -1, -1, -1, 1 }, /* Jet Set Radio (Europe) */
{ "HDR-0079 ", -1, -1, -1, -1, -1, -1, 1 }, /* Napple Tale (Japan) */
{ "MK-5110050", -1, -1, -1, -1, -1, -1, 1 }, /* Phantasy Star Online (Europe) */
{ "HDR-0129 ", -1, -1, -1, -1, -1, -1, 1 }, /* Phantasy Star Online (Japan) */
{ "MK-51100 ", -1, -1, -1, -1, -1, -1, 1 }, /* Phantasy Star Online (USA) */
{ "MK-5119350", -1, -1, -1, -1, -1, -1, 1 }, /* Phantasy Star Online Ver. 2 (Europe) */
{ "HDR-0163 ", -1, -1, -1, -1, -1, -1, 1 }, /* Phantasy Star Online Ver. 2 (Japan) */
{ "MK-51193 ", -1, -1, -1, -1, -1, -1, 1 }, /* Phantasy Star Online Ver. 2 (USA) */
{ "T9907M ", -1, -1, -1, -1, -1, -1, 1 }, /* Psyvariar 2 (Japan) */
{ "HDR-0216 ", -1, -1, -1, -1, -1, -1, 1 }, /* Puyo Puyo Fever (Japan) */
{ "T47802M ", -1, -1, -1, -1, -1, -1, 1 }, /* Radirgy (Japan) */
{ "HDR-0151 ", -1, -1, -1, -1, -1, -1, 1 }, /* Segagaga (Japan) */
{ "HDR-0125 ", -1, -1, -1, -1, -1, -1, 1 }, /* Sonic Shuffle (Japan) */
{ "MK-5106050", -1, -1, -1, -1, -1, -1, 1 }, /* Sonic Shuffle (Europe) */
{ "MK-51060 ", -1, -1, -1, -1, -1, -1, 1 }, /* Sonic Shuffle (USA) */
{ "T29102M ", -1, -1, -1, -1, -1, -1, 1 }, /* Trigger Heart Exelica (Japan) */
{ "T45101M ", -1, -1, -1, -1, -1, -1, 1 }, /* WWF Royal Rumble (Japan) */
{ "T10003D 50", -1, -1, -1, -1, -1, -1, 1 }, /* WWF Royal Rumble (Europe) */
{ "T10005N ", -1, -1, -1, -1, -1, -1, 1 }, /* WWF Royal Rumble (USA) */
{ "T46703M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Border Down (Japan) */
{ "MK-51065 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Bomberman Online (USA) */
{ "T47801M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Chaos Field (Japan) */
{ "T23202M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Death Crimson OX (Japan) */
{ "T2401N ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Death Crimson OX (USA) */
{ "T44306N ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Fatal Fury: Mark of the Wolves (USA) */
{ "T3108M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Garou: Mark of the Wolves (Japan) */
{ "HDR-0078 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Jet Set Radio (Japan) */
{ "MK-51058 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Jet Grind Radio (USA) */
{ "MK-5105850", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Jet Set Radio (Europe) */
{ "HDR-0079 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Napple Tale (Japan) */
{ "MK-5110050", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Phantasy Star Online (Europe) */
{ "HDR-0129 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Phantasy Star Online (Japan) */
{ "MK-51100 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Phantasy Star Online (USA) */
{ "MK-5119350", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Phantasy Star Online Ver. 2 (Europe) */
{ "HDR-0163 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Phantasy Star Online Ver. 2 (Japan) */
{ "MK-51193 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Phantasy Star Online Ver. 2 (USA) */
{ "T9907M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Psyvariar 2 (Japan) */
{ "HDR-0216 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Puyo Puyo Fever (Japan) */
{ "T47802M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Radirgy (Japan) */
{ "HDR-0151 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Segagaga (Japan) */
{ "HDR-0125 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Sonic Shuffle (Japan) */
{ "MK-5106050", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Sonic Shuffle (Europe) */
{ "MK-51060 ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Sonic Shuffle (USA) */
{ "T29102M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* Trigger Heart Exelica (Japan) */
{ "T45101M ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* WWF Royal Rumble (Japan) */
{ "T10003D 50", -1, -1, -1, -1, -1, -1, 1, -1 }, /* WWF Royal Rumble (Europe) */
{ "T10005N ", -1, -1, -1, -1, -1, -1, 1, -1 }, /* WWF Royal Rumble (USA) */

/* AICA Interrupt Hack */
{ "T1203N ", -1, -1, 1, -1, -1, -1, -1 }, /* Street Fighter Alpha 3 */
{ "T1203N ", -1, -1, 1, -1, -1, -1, -1, -1 }, /* Street Fighter Alpha 3 */

/* Alpha sort mode */
{ "MK-5100050", -1, -1, -1, 1, -1, -1, -1 }, /* Sonic Adventure */
{ "MK-5100050", -1, -1, -1, 1, -1, -1, -1, -1 }, /* Sonic Adventure */

/* Translucent Polygon Depth Mask */
{ "RDC-0057", -1, -1, -1, -1, 1, -1, -1 }, /* Cosmic Smash */
{ "HDR-0176 ", -1, -1, -1, -1, 1, -1, -1 }, /* Cosmic Smash */
{ "RDC-0057", -1, -1, -1, -1, 1, -1, -1, -1 }, /* Cosmic Smash */
{ "HDR-0176 ", -1, -1, -1, -1, 1, -1, -1, -1 }, /* Cosmic Smash */

/* Render to texture buffer */
{ "T40205N ", -1, -1, -1, -1, -1, 1, -1 }, /* Tony Hawk's Pro Skater 1 (USA) */
{ "T13006N ", -1, -1, -1, -1, -1, 1, -1 }, /* Tony Hawk's Pro Skater 2 (USA) */
{ "T13008D", -1, -1, -1, -1, -1, 1, -1 }, /* Tony Hawk's Pro Skater 2 (USA) */
{ "T23002N ", -1, -1, -1, -1, -1, 1, -1 }, /* Star Wars Episode I: Jedi Power Battle (USA) */
{ "T40205N ", -1, -1, -1, -1, -1, 1, -1, -1 }, /* Tony Hawk's Pro Skater 1 (USA) */
{ "T13006N ", -1, -1, -1, -1, -1, 1, -1, -1 }, /* Tony Hawk's Pro Skater 2 (USA) */
{ "T13008D", -1, -1, -1, -1, -1, 1, -1, -1 }, /* Tony Hawk's Pro Skater 2 (USA) */
{ "T23002N ", -1, -1, -1, -1, -1, 1, -1, -1 }, /* Star Wars Episode I: Jedi Power Battle (USA) */

/* Disable DIV matching */
{ "T30701D ", -1, -1, -1, -1, -1, -1, -1, 1 }, /* Pro Pinball Trilogy */
};

static struct game_type_naomi lut_games_naomi[] =
{
/* Update mode fullspeed */
/* AICA Interrupt Hack */
{ "Street Fighter Zero 3 Upper", -1, -1, 1, -1, -1, -1, -1 }, /* Street Fighter Alpha 3 */
{ "Street Fighter Zero 3 Upper", -1, -1, 1, -1, -1, -1, -1, -1 }, /* Street Fighter Alpha 3 */
};
1 change: 1 addition & 0 deletions core/types.h
Expand Up @@ -525,6 +525,7 @@ struct settings_t
bool idleskip;
bool unstable_opt;
bool disable_nvmem;
bool DisableDivMatching;
} dynarec;

struct
Expand Down

0 comments on commit d8a0197

Please sign in to comment.