mirror of https://github.com/PCSX2/pcsx2.git
GameDB: Follow the same pattern for Speedhacks as for GameFixes
In preparation for #3998 GameDB: Update with current master's GameDB file
This commit is contained in:
parent
34fe57d84b
commit
4d79754f78
|
@ -30,22 +30,6 @@ SERIAL-12345: # !required! Serial number for the game, this is how games are loo
|
||||||
# If a GameFix is included in the list, it will be enabled.
|
# If a GameFix is included in the list, it will be enabled.
|
||||||
# If you'd like to temporarily disable it, either comment out the line, or remove it!
|
# If you'd like to temporarily disable it, either comment out the line, or remove it!
|
||||||
gameFixes:
|
gameFixes:
|
||||||
- VuAddSubHack
|
|
||||||
- FpuCompareHack
|
|
||||||
- FpuMulHack
|
|
||||||
- FpuNegDivHack
|
|
||||||
- XGKickHack
|
|
||||||
- IPUWaitHack
|
|
||||||
- EETimingHack
|
|
||||||
- SkipMPEGHack
|
|
||||||
- OPHFlagHack
|
|
||||||
- DMABusyHack
|
|
||||||
- VIFFIFOHack
|
|
||||||
- VIF1StallHack
|
|
||||||
- GIFFIFOHack
|
|
||||||
- ScarfaceIbitHack
|
|
||||||
- CrashTagTeamRaci
|
|
||||||
- VU0KickstartHack
|
|
||||||
- VuAddSubHack
|
- VuAddSubHack
|
||||||
- FpuCompareHack
|
- FpuCompareHack
|
||||||
- FpuMulHack
|
- FpuMulHack
|
||||||
|
@ -63,9 +47,10 @@ SERIAL-12345: # !required! Serial number for the game, this is how games are loo
|
||||||
- CrashTagTeamRacingIbitHack
|
- CrashTagTeamRacingIbitHack
|
||||||
- VU0KickstartHack
|
- VU0KickstartHack
|
||||||
# The value of the speedhacks is assumed to be an integer,
|
# The value of the speedhacks is assumed to be an integer,
|
||||||
# but at the time of writing there is only one speedhack option and its effectively a boolean (0/1)
|
# but at the time of writing speedhacks are effectively booleans (0/1)
|
||||||
speedHacks:
|
speedHacks:
|
||||||
mvuFlagSpeedHack: 0
|
mvuFlagSpeedHack: 0
|
||||||
|
InstantVU1SpeedHack: 0
|
||||||
memcardFilters:
|
memcardFilters:
|
||||||
- "SERIAL-123"
|
- "SERIAL-123"
|
||||||
- "SERIAL-456"
|
- "SERIAL-456"
|
||||||
|
@ -174,6 +159,9 @@ These values are in a key-value format, where the value is assumed to be an inte
|
||||||
- `mvuFlagSpeedHack`
|
- `mvuFlagSpeedHack`
|
||||||
- Accepted Values - `0` / `1`
|
- Accepted Values - `0` / `1`
|
||||||
- Katamari Damacy have weird speed bug when this speed hack is enabled (and it is by default)
|
- Katamari Damacy have weird speed bug when this speed hack is enabled (and it is by default)
|
||||||
|
- `InstantVU1SpeedHack`
|
||||||
|
- Accepted Values - `0` / `1`
|
||||||
|
- Games such as Parappa the Rapper 2 need VU1 to sync, so you can force disable the speedhack here
|
||||||
|
|
||||||
## Memory Card Filter Override
|
## Memory Card Filter Override
|
||||||
|
|
||||||
|
|
|
@ -1238,6 +1238,8 @@ SCES-50408:
|
||||||
name: "PaRappa the Rapper 2"
|
name: "PaRappa the Rapper 2"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes noodles.
|
||||||
SCES-50409:
|
SCES-50409:
|
||||||
name: "MotoGP 2"
|
name: "MotoGP 2"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
|
@ -3108,6 +3110,8 @@ SCPS-15016:
|
||||||
SCPS-15017:
|
SCPS-15017:
|
||||||
name: "PaRappa the Rapper 2"
|
name: "PaRappa the Rapper 2"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes noodles.
|
||||||
SCPS-15018:
|
SCPS-15018:
|
||||||
name: "Train Simulator Real, The - Yamanote Sen"
|
name: "Train Simulator Real, The - Yamanote Sen"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -3605,6 +3609,8 @@ SCPS-19153:
|
||||||
SCPS-19201:
|
SCPS-19201:
|
||||||
name: "PaRappa the Rapper 2 [PlayStation 2 The Best]"
|
name: "PaRappa the Rapper 2 [PlayStation 2 The Best]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes noodles.
|
||||||
SCPS-19202:
|
SCPS-19202:
|
||||||
name: "Extermination [PlayStation 2 The Best]"
|
name: "Extermination [PlayStation 2 The Best]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -4390,6 +4396,8 @@ SCUS-97167:
|
||||||
name: "PaRappa the Rapper 2"
|
name: "PaRappa the Rapper 2"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes noodles.
|
||||||
SCUS-97169:
|
SCUS-97169:
|
||||||
name: "Drakan - The Ancients' Gates [Demo]"
|
name: "Drakan - The Ancients' Gates [Demo]"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -4519,6 +4527,8 @@ SCUS-97206:
|
||||||
SCUS-97208:
|
SCUS-97208:
|
||||||
name: "Hot Shots Golf 3 & PaRappa the Rapper 2 [Demo]"
|
name: "Hot Shots Golf 3 & PaRappa the Rapper 2 [Demo]"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes noodles on Parappa 2.
|
||||||
SCUS-97209:
|
SCUS-97209:
|
||||||
name: "Ratchet & Clank [E3 Demo]"
|
name: "Ratchet & Clank [E3 Demo]"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -5958,6 +5968,8 @@ SLED-52476:
|
||||||
SLED-52488:
|
SLED-52488:
|
||||||
name: "Suffering, The [Demo]"
|
name: "Suffering, The [Demo]"
|
||||||
region: "PAL-E"
|
region: "PAL-E"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
SLED-52597:
|
SLED-52597:
|
||||||
name: "Burnout 3 - Takedown [Demo]"
|
name: "Burnout 3 - Takedown [Demo]"
|
||||||
region: "PAL-E"
|
region: "PAL-E"
|
||||||
|
@ -6795,6 +6807,8 @@ SLES-50382:
|
||||||
name: "Silent Hill 2"
|
name: "Silent Hill 2"
|
||||||
region: "PAL-M6"
|
region: "PAL-M6"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLES-50383:
|
SLES-50383:
|
||||||
name: "Metal Gear Solid 2 - Sons of Liberty"
|
name: "Metal Gear Solid 2 - Sons of Liberty"
|
||||||
region: "PAL-M3"
|
region: "PAL-M3"
|
||||||
|
@ -6928,6 +6942,8 @@ SLES-50446:
|
||||||
name: "Shadow Man - 2econd Coming"
|
name: "Shadow Man - 2econd Coming"
|
||||||
region: "PAL-M4"
|
region: "PAL-M4"
|
||||||
compat: 4
|
compat: 4
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes SPS.
|
||||||
SLES-50447:
|
SLES-50447:
|
||||||
name: "All-Star Baseball 2003"
|
name: "All-Star Baseball 2003"
|
||||||
region: "PAL-E"
|
region: "PAL-E"
|
||||||
|
@ -7187,6 +7203,8 @@ SLES-50606:
|
||||||
SLES-50608:
|
SLES-50608:
|
||||||
name: "Shadow Man - 2econd Coming"
|
name: "Shadow Man - 2econd Coming"
|
||||||
region: "PAL-G"
|
region: "PAL-G"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes SPS.
|
||||||
SLES-50613:
|
SLES-50613:
|
||||||
name: "Woody Woodpecker"
|
name: "Woody Woodpecker"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
|
@ -8270,6 +8288,8 @@ SLES-51144:
|
||||||
name: "Shox - Rally Reinvented"
|
name: "Shox - Rally Reinvented"
|
||||||
region: "PAL-M7"
|
region: "PAL-M7"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes SPS.
|
||||||
SLES-51145:
|
SLES-51145:
|
||||||
name: "Monopoly Party"
|
name: "Monopoly Party"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
|
@ -8295,6 +8315,8 @@ SLES-51156:
|
||||||
name: "Silent Hill 2 - Director's Cut"
|
name: "Silent Hill 2 - Director's Cut"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLES-51157:
|
SLES-51157:
|
||||||
name: "Silent Scope 3"
|
name: "Silent Scope 3"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
|
@ -8477,9 +8499,13 @@ SLES-51250:
|
||||||
name: "Shox - Rally Reinvented"
|
name: "Shox - Rally Reinvented"
|
||||||
region: "PAL-E"
|
region: "PAL-E"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes SPS.
|
||||||
SLES-51251:
|
SLES-51251:
|
||||||
name: "Shox - Rally Reinvented"
|
name: "Shox - Rally Reinvented"
|
||||||
region: "PAL-E"
|
region: "PAL-E"
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes SPS.
|
||||||
SLES-51252:
|
SLES-51252:
|
||||||
name: "Lord of the Rings, The - The Two Towers"
|
name: "Lord of the Rings, The - The Two Towers"
|
||||||
region: "PAL-M3"
|
region: "PAL-M3"
|
||||||
|
@ -9243,6 +9269,8 @@ SLES-51690:
|
||||||
SLES-51693:
|
SLES-51693:
|
||||||
name: "Suffering, The"
|
name: "Suffering, The"
|
||||||
region: "PAL-E-F-G"
|
region: "PAL-E-F-G"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
SLES-51696:
|
SLES-51696:
|
||||||
name: "Dragon's Lair 3D - Special Edition"
|
name: "Dragon's Lair 3D - Special Edition"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
|
@ -9885,6 +9913,8 @@ SLES-52001:
|
||||||
name: "Mission Impossible - Operation Surma"
|
name: "Mission Impossible - Operation Surma"
|
||||||
region: "PAL-M5"
|
region: "PAL-M5"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes crashes and broken graphics.
|
||||||
SLES-52002:
|
SLES-52002:
|
||||||
name: "Rogue Ops"
|
name: "Rogue Ops"
|
||||||
region: "PAL-M6"
|
region: "PAL-M6"
|
||||||
|
@ -10598,6 +10628,8 @@ SLES-52439:
|
||||||
name: "Suffering, The"
|
name: "Suffering, The"
|
||||||
region: "PAL-E-I-S"
|
region: "PAL-E-I-S"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
SLES-52440:
|
SLES-52440:
|
||||||
name: "Harry Potter and the Prisoner of Azkaban"
|
name: "Harry Potter and the Prisoner of Azkaban"
|
||||||
region: "PAL-M7"
|
region: "PAL-M7"
|
||||||
|
@ -10791,6 +10823,8 @@ SLES-52527:
|
||||||
SLES-52531:
|
SLES-52531:
|
||||||
name: "Suffering, The"
|
name: "Suffering, The"
|
||||||
region: "PAL-G"
|
region: "PAL-G"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
SLES-52532:
|
SLES-52532:
|
||||||
name: "Aces of War"
|
name: "Aces of War"
|
||||||
region: "PAL-E"
|
region: "PAL-E"
|
||||||
|
@ -12822,6 +12856,8 @@ SLES-53525:
|
||||||
SLES-53526:
|
SLES-53526:
|
||||||
name: "Suffering, The - Ties that Bind"
|
name: "Suffering, The - Ties that Bind"
|
||||||
region: "PAL-E-F"
|
region: "PAL-E-F"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
memcardFilters:
|
memcardFilters:
|
||||||
- "SLES-53526"
|
- "SLES-53526"
|
||||||
- "SLES-53527"
|
- "SLES-53527"
|
||||||
|
@ -12833,6 +12869,8 @@ SLES-53526:
|
||||||
SLES-53527:
|
SLES-53527:
|
||||||
name: "Suffering, The - Ties that Bind"
|
name: "Suffering, The - Ties that Bind"
|
||||||
region: "PAL-E-I-S"
|
region: "PAL-E-I-S"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
memcardFilters:
|
memcardFilters:
|
||||||
- "SLES-53526"
|
- "SLES-53526"
|
||||||
- "SLES-53527"
|
- "SLES-53527"
|
||||||
|
@ -12844,6 +12882,8 @@ SLES-53527:
|
||||||
SLES-53528:
|
SLES-53528:
|
||||||
name: "Suffering, The - Ties that Bind"
|
name: "Suffering, The - Ties that Bind"
|
||||||
region: "PAL-G"
|
region: "PAL-G"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
memcardFilters:
|
memcardFilters:
|
||||||
- "SLES-53526"
|
- "SLES-53526"
|
||||||
- "SLES-53527"
|
- "SLES-53527"
|
||||||
|
@ -13119,6 +13159,8 @@ SLES-53624:
|
||||||
SLES-53626:
|
SLES-53626:
|
||||||
name: "Suffering, The - Ties that Bind"
|
name: "Suffering, The - Ties that Bind"
|
||||||
region: "PAL-E-G"
|
region: "PAL-E-G"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
memcardFilters:
|
memcardFilters:
|
||||||
- "SLES-53526"
|
- "SLES-53526"
|
||||||
- "SLES-53527"
|
- "SLES-53527"
|
||||||
|
@ -18205,12 +18247,16 @@ SLPM-60273:
|
||||||
SLPM-61009:
|
SLPM-61009:
|
||||||
name: "Silent Hill 2 (Red Ribbon) [Trial]"
|
name: "Silent Hill 2 (Red Ribbon) [Trial]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLPM-61010:
|
SLPM-61010:
|
||||||
name: "Devil May Cry [Trial Version]"
|
name: "Devil May Cry [Trial Version]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
SLPM-61011:
|
SLPM-61011:
|
||||||
name: "Silent Hill 2 (Black Ribbon) [Video Trial]"
|
name: "Silent Hill 2 (Black Ribbon) [Video Trial]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLPM-61051:
|
SLPM-61051:
|
||||||
name: "Dengeki PS2 D61"
|
name: "Dengeki PS2 D61"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -20032,6 +20078,8 @@ SLPM-62736:
|
||||||
SLPM-62737:
|
SLPM-62737:
|
||||||
name: "Rally Shox & Freestyle Motorcross [EA Best Hits]"
|
name: "Rally Shox & Freestyle Motorcross [EA Best Hits]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes SPS.
|
||||||
SLPM-62739:
|
SLPM-62739:
|
||||||
name: "Suro Genjin"
|
name: "Suro Genjin"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -20339,6 +20387,8 @@ SLPM-65051:
|
||||||
name: "Silent Hill 2"
|
name: "Silent Hill 2"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLPM-65052:
|
SLPM-65052:
|
||||||
name: "Guitar Freaks 4th Mix & Drummania 3rd Mix"
|
name: "Guitar Freaks 4th Mix & Drummania 3rd Mix"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -20499,6 +20549,8 @@ SLPM-65098:
|
||||||
name: "Silent Hill 2 - Saigo no Uta"
|
name: "Silent Hill 2 - Saigo no Uta"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLPM-65100:
|
SLPM-65100:
|
||||||
name: "Onimusha 2"
|
name: "Onimusha 2"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -21158,6 +21210,8 @@ SLPM-65340:
|
||||||
SLPM-65341:
|
SLPM-65341:
|
||||||
name: "Silent Hill 2 - Saigo No Uta [Konami The Best]"
|
name: "Silent Hill 2 - Saigo No Uta [Konami The Best]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLPM-65342:
|
SLPM-65342:
|
||||||
name: "Kyoufu Shinbun (Heisei) Kaiki! Shinrei File"
|
name: "Kyoufu Shinbun (Heisei) Kaiki! Shinrei File"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -21694,6 +21748,8 @@ SLPM-65527:
|
||||||
SLPM-65529:
|
SLPM-65529:
|
||||||
name: "Mission Impossible - Operation Surma"
|
name: "Mission Impossible - Operation Surma"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes crashes and broken graphics.
|
||||||
SLPM-65530:
|
SLPM-65530:
|
||||||
name: "J-League Pro Soccer Club - Tsukuku 2004"
|
name: "J-League Pro Soccer Club - Tsukuku 2004"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -22009,6 +22065,8 @@ SLPM-65630:
|
||||||
SLPM-65631:
|
SLPM-65631:
|
||||||
name: "Silent Hill 2 [Konami The Best]"
|
name: "Silent Hill 2 [Konami The Best]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLPM-65632:
|
SLPM-65632:
|
||||||
name: "Virtua Fighter Cyber Generation - Ambition of the Judgement Six"
|
name: "Virtua Fighter Cyber Generation - Ambition of the Judgement Six"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -23540,6 +23598,13 @@ SLPM-66142:
|
||||||
SLPM-66143:
|
SLPM-66143:
|
||||||
name: "Rebirth Moon"
|
name: "Rebirth Moon"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
patches:
|
||||||
|
1B139735:
|
||||||
|
content: |-
|
||||||
|
author=PSI, Jelta
|
||||||
|
// Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled.
|
||||||
|
// This patch skips over the stack code, allowing the game to boot.
|
||||||
|
patch=1,EE,0023B0C8,word,10000003
|
||||||
SLPM-66144:
|
SLPM-66144:
|
||||||
name: "D1 Grand Prix 2005"
|
name: "D1 Grand Prix 2005"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -24028,6 +24093,13 @@ SLPM-66295:
|
||||||
SLPM-66296:
|
SLPM-66296:
|
||||||
name: "Yamiyo ni Sasayaku - Tantei Sagara Kyouichirou"
|
name: "Yamiyo ni Sasayaku - Tantei Sagara Kyouichirou"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
patches:
|
||||||
|
23A9A026:
|
||||||
|
content: |-
|
||||||
|
author=PSI, Jelta
|
||||||
|
// Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled.
|
||||||
|
// This patch skips over the stack code, allowing the game to boot.
|
||||||
|
patch=1,EE,00156888,word,10000003
|
||||||
SLPM-66297:
|
SLPM-66297:
|
||||||
name: "Separate Hearts [Limited Edition]"
|
name: "Separate Hearts [Limited Edition]"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -24324,6 +24396,13 @@ SLPM-66399:
|
||||||
SLPM-66400:
|
SLPM-66400:
|
||||||
name: "Samurai 7"
|
name: "Samurai 7"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
patches:
|
||||||
|
836F4606:
|
||||||
|
content: |-
|
||||||
|
author=PSI, Jelta
|
||||||
|
// Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled.
|
||||||
|
// This patch skips over the stack code, allowing the game to boot.
|
||||||
|
patch=1,EE,00157F78,word,10000003
|
||||||
SLPM-66401:
|
SLPM-66401:
|
||||||
name: "Wrestle Kingdom"
|
name: "Wrestle Kingdom"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -24496,6 +24575,13 @@ SLPM-66456:
|
||||||
SLPM-66457:
|
SLPM-66457:
|
||||||
name: "Asobi ni Iku Yo! Chikyuu Pinchi no Konyaku Sengen"
|
name: "Asobi ni Iku Yo! Chikyuu Pinchi no Konyaku Sengen"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
patches:
|
||||||
|
87FFC318:
|
||||||
|
content: |-
|
||||||
|
author=PSI, Jelta
|
||||||
|
// Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled.
|
||||||
|
// This patch skips over the stack code, allowing the game to boot.
|
||||||
|
patch=1,EE,001579D8,word,10000003
|
||||||
SLPM-66458:
|
SLPM-66458:
|
||||||
name: "Acheter Fuuraiki"
|
name: "Acheter Fuuraiki"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -24618,6 +24704,13 @@ SLPM-66494:
|
||||||
SLPM-66495:
|
SLPM-66495:
|
||||||
name: "Joshikousei Game's High!"
|
name: "Joshikousei Game's High!"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
patches:
|
||||||
|
9FEA4A95:
|
||||||
|
content: |-
|
||||||
|
author=PSI, Jelta
|
||||||
|
// Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled.
|
||||||
|
// This patch skips over the stack code, allowing the game to boot.
|
||||||
|
patch=1,EE,00149F18,word,10000003
|
||||||
SLPM-66496:
|
SLPM-66496:
|
||||||
name: "Tom Clancy's Splinter Cell - Chaos Theory"
|
name: "Tom Clancy's Splinter Cell - Chaos Theory"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -24826,6 +24919,13 @@ SLPM-66564:
|
||||||
SLPM-66565:
|
SLPM-66565:
|
||||||
name: "REC - DokiDoki Seiyuu Paradise"
|
name: "REC - DokiDoki Seiyuu Paradise"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
patches:
|
||||||
|
17E04DE7:
|
||||||
|
content: |-
|
||||||
|
author=PSI, Jelta
|
||||||
|
// Game does weird stack manipulation, causing data sent to the IOP to be corrupted unless EE data cache is enabled.
|
||||||
|
// This patch skips over the stack code, allowing the game to boot.
|
||||||
|
patch=1,EE,001BAA28,word,10000003
|
||||||
SLPM-66566:
|
SLPM-66566:
|
||||||
name: "Tenshou Gakuen Gekkou Hasumi"
|
name: "Tenshou Gakuen Gekkou Hasumi"
|
||||||
region: "NTSC-J"
|
region: "NTSC-J"
|
||||||
|
@ -31656,8 +31756,6 @@ SLUS-20217:
|
||||||
name: "Arctic Thunder"
|
name: "Arctic Thunder"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 5
|
compat: 5
|
||||||
gameFixes:
|
|
||||||
- SkipMPEGHack
|
|
||||||
SLUS-20218:
|
SLUS-20218:
|
||||||
name: "Stunt GP"
|
name: "Stunt GP"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -31716,6 +31814,8 @@ SLUS-20228:
|
||||||
name: "Silent Hill 2"
|
name: "Silent Hill 2"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes hang on FMV's when CDVD timing is accurate.
|
||||||
SLUS-20229:
|
SLUS-20229:
|
||||||
name: "Jonny Moseley - Mad Trix"
|
name: "Jonny Moseley - Mad Trix"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -32440,6 +32540,8 @@ SLUS-20400:
|
||||||
name: "Mission Impossible - Operation Surma"
|
name: "Mission Impossible - Operation Surma"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes crashes and broken graphics.
|
||||||
SLUS-20402:
|
SLUS-20402:
|
||||||
name: "Britney's Dance Beat"
|
name: "Britney's Dance Beat"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -32479,6 +32581,8 @@ SLUS-20413:
|
||||||
name: "Shadow Man - 2econd Coming"
|
name: "Shadow Man - 2econd Coming"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 4
|
compat: 4
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 0 # Fixes SPS.
|
||||||
SLUS-20414:
|
SLUS-20414:
|
||||||
name: "Legaia 2 - Duel Saga"
|
name: "Legaia 2 - Duel Saga"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -32977,6 +33081,8 @@ SLUS-20533:
|
||||||
name: "Shox"
|
name: "Shox"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
gameFixes:
|
||||||
|
- VU0KickstartHack # Fixes SPS.
|
||||||
SLUS-20534:
|
SLUS-20534:
|
||||||
name: "Cabela's Big Game Hunter"
|
name: "Cabela's Big Game Hunter"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -33403,6 +33509,8 @@ SLUS-20636:
|
||||||
name: "Suffering, The"
|
name: "Suffering, The"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
SLUS-20637:
|
SLUS-20637:
|
||||||
name: "Chessmaster (Online)"
|
name: "Chessmaster (Online)"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
|
@ -35706,6 +35814,8 @@ SLUS-21189:
|
||||||
name: "Suffering, The - Ties That Bind"
|
name: "Suffering, The - Ties That Bind"
|
||||||
region: "NTSC-U"
|
region: "NTSC-U"
|
||||||
compat: 5
|
compat: 5
|
||||||
|
speedHacks:
|
||||||
|
InstantVU1SpeedHack: 1 # Fixes SPS.
|
||||||
memcardFilters:
|
memcardFilters:
|
||||||
- "SLUS-21189"
|
- "SLUS-21189"
|
||||||
- "SLUS-20636"
|
- "SLUS-20636"
|
||||||
|
|
|
@ -62,6 +62,19 @@ enum GamefixId
|
||||||
GamefixId_COUNT
|
GamefixId_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO - config - not a fan of the excessive use of enums and macros to make them work
|
||||||
|
// a proper object would likely make more sense (if possible).
|
||||||
|
|
||||||
|
enum SpeedhackId
|
||||||
|
{
|
||||||
|
SpeedhackId_FIRST = 0,
|
||||||
|
|
||||||
|
Speedhack_mvuFlag = SpeedhackId_FIRST,
|
||||||
|
Speedhack_InstantVU1,
|
||||||
|
|
||||||
|
SpeedhackId_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
enum class VsyncMode
|
enum class VsyncMode
|
||||||
{
|
{
|
||||||
Off,
|
Off,
|
||||||
|
@ -77,6 +90,7 @@ typename std::underlying_type<Enumeration>::type enum_cast(Enumeration E)
|
||||||
}
|
}
|
||||||
|
|
||||||
ImplementEnumOperators( GamefixId );
|
ImplementEnumOperators( GamefixId );
|
||||||
|
ImplementEnumOperators( SpeedhackId );
|
||||||
|
|
||||||
//------------ DEFAULT sseMXCSR VALUES ---------------
|
//------------ DEFAULT sseMXCSR VALUES ---------------
|
||||||
#define DEFAULT_sseMXCSR 0xffc0 //FPU rounding > DaZ, FtZ, "chop"
|
#define DEFAULT_sseMXCSR 0xffc0 //FPU rounding > DaZ, FtZ, "chop"
|
||||||
|
@ -402,9 +416,11 @@ struct Pcsx2Config
|
||||||
u8 EECycleSkip; // EE Cycle skip factor (0, 1, 2, or 3)
|
u8 EECycleSkip; // EE Cycle skip factor (0, 1, 2, or 3)
|
||||||
|
|
||||||
SpeedhackOptions();
|
SpeedhackOptions();
|
||||||
void LoadSave( IniInterface& conf );
|
void LoadSave(IniInterface& conf);
|
||||||
SpeedhackOptions& DisableAll();
|
SpeedhackOptions& DisableAll();
|
||||||
|
|
||||||
|
void Set(SpeedhackId id, bool enabled = true);
|
||||||
|
|
||||||
bool operator ==( const SpeedhackOptions& right ) const
|
bool operator ==( const SpeedhackOptions& right ) const
|
||||||
{
|
{
|
||||||
return OpEqu( bitset ) && OpEqu( EECycleRate ) && OpEqu( EECycleSkip );
|
return OpEqu( bitset ) && OpEqu( EECycleRate ) && OpEqu( EECycleSkip );
|
||||||
|
|
|
@ -104,9 +104,9 @@ GameDatabaseSchema::GameEntry YamlGameDatabaseImpl::entryFromYaml(const std::str
|
||||||
for (std::string& fix : node["gameFixes"].as<std::vector<std::string>>(std::vector<std::string>()))
|
for (std::string& fix : node["gameFixes"].as<std::vector<std::string>>(std::vector<std::string>()))
|
||||||
{
|
{
|
||||||
bool fixValidated = false;
|
bool fixValidated = false;
|
||||||
for (GamefixId id = GamefixId_FIRST; id < pxEnumEnd; ++id)
|
for (GamefixId id = GamefixId_FIRST; id < pxEnumEnd; id++)
|
||||||
{
|
{
|
||||||
std::string validFix = wxString(EnumToString(id)).Append(L"Hack").ToStdString();
|
std::string validFix = fmt::format("{}Hack", wxString(EnumToString(id)));
|
||||||
if (validFix == fix)
|
if (validFix == fix)
|
||||||
{
|
{
|
||||||
fixValidated = true;
|
fixValidated = true;
|
||||||
|
@ -123,21 +123,30 @@ GameDatabaseSchema::GameEntry YamlGameDatabaseImpl::entryFromYaml(const std::str
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate speed hacks, invalid ones will be dropped!
|
||||||
if (YAML::Node speedHacksNode = node["speedHacks"])
|
if (YAML::Node speedHacksNode = node["speedHacks"])
|
||||||
{
|
{
|
||||||
for (const auto& entry : speedHacksNode)
|
for (const auto& entry : speedHacksNode)
|
||||||
{
|
{
|
||||||
// Validate speedhacks, invalid ones will be skipped!
|
|
||||||
std::string speedHack = entry.first.as<std::string>();
|
std::string speedHack = entry.first.as<std::string>();
|
||||||
|
bool speedHackValidated = false;
|
||||||
// NOTE - currently only 1 speedhack!
|
for (SpeedhackId id = SpeedhackId_FIRST; id < pxEnumEnd; id++)
|
||||||
if (speedHack != "mvuFlagSpeedHack")
|
{
|
||||||
|
std::string validSpeedHack = fmt::format("{}SpeedHack", wxString(EnumToString(id)));
|
||||||
|
if (validSpeedHack == speedHack)
|
||||||
|
{
|
||||||
|
speedHackValidated = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (speedHackValidated)
|
||||||
|
{
|
||||||
|
gameEntry.speedHacks[speedHack] = entry.second.as<int>();
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
Console.Error(fmt::format("[GameDB] Invalid speedhack: '{}', specified for serial: '{}'. Dropping!", speedHack, serial));
|
Console.Error(fmt::format("[GameDB] Invalid speedhack: '{}', specified for serial: '{}'. Dropping!", speedHack, serial));
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gameEntry.speedHacks[speedHack] = entry.second.as<int>();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,33 +41,35 @@ wxString strgametitle;
|
||||||
|
|
||||||
struct PatchTextTable
|
struct PatchTextTable
|
||||||
{
|
{
|
||||||
int code;
|
int code;
|
||||||
const wxChar* text;
|
const wxChar* text;
|
||||||
PATCHTABLEFUNC* func;
|
PATCHTABLEFUNC* func;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const PatchTextTable commands_patch[] =
|
static const PatchTextTable commands_patch[] =
|
||||||
{
|
{
|
||||||
{1, L"author", PatchFunc::author},
|
{ 1, L"author", PatchFunc::author},
|
||||||
{2, L"comment", PatchFunc::comment},
|
{ 2, L"comment", PatchFunc::comment },
|
||||||
{3, L"patch", PatchFunc::patch},
|
{ 3, L"patch", PatchFunc::patch },
|
||||||
{0, wxEmptyString, NULL} // Array Terminator
|
{ 0, wxEmptyString, NULL } // Array Terminator
|
||||||
};
|
};
|
||||||
|
|
||||||
static const PatchTextTable dataType[] =
|
static const PatchTextTable dataType[] =
|
||||||
{
|
{
|
||||||
{1, L"byte", NULL},
|
{ 1, L"byte", NULL },
|
||||||
{2, L"short", NULL},
|
{ 2, L"short", NULL },
|
||||||
{3, L"word", NULL},
|
{ 3, L"word", NULL },
|
||||||
{4, L"double", NULL},
|
{ 4, L"double", NULL },
|
||||||
{5, L"extended", NULL},
|
{ 5, L"extended", NULL },
|
||||||
{0, wxEmptyString, NULL}};
|
{ 0, wxEmptyString, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
static const PatchTextTable cpuCore[] =
|
static const PatchTextTable cpuCore[] =
|
||||||
{
|
{
|
||||||
{1, L"EE", NULL},
|
{ 1, L"EE", NULL },
|
||||||
{2, L"IOP", NULL},
|
{ 2, L"IOP", NULL },
|
||||||
{0, wxEmptyString, NULL}};
|
{ 0, wxEmptyString, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
// IniFile Functions.
|
// IniFile Functions.
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,31 @@ void TraceLogFilters::LoadSave( IniInterface& ini )
|
||||||
IniEntry( IOP.bitset );
|
IniEntry( IOP.bitset );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wxChar* const tbl_SpeedhackNames[] =
|
||||||
|
{
|
||||||
|
L"mvuFlag",
|
||||||
|
L"InstantVU1"};
|
||||||
|
|
||||||
|
const __fi wxChar* EnumToString(SpeedhackId id)
|
||||||
|
{
|
||||||
|
return tbl_SpeedhackNames[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pcsx2Config::SpeedhackOptions::Set(SpeedhackId id, bool enabled)
|
||||||
|
{
|
||||||
|
EnumAssert(id);
|
||||||
|
switch (id)
|
||||||
|
{
|
||||||
|
case Speedhack_mvuFlag:
|
||||||
|
vuFlagHack = enabled;
|
||||||
|
break;
|
||||||
|
case Speedhack_InstantVU1:
|
||||||
|
vu1Instant = enabled;
|
||||||
|
break;
|
||||||
|
jNO_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Pcsx2Config::SpeedhackOptions::SpeedhackOptions()
|
Pcsx2Config::SpeedhackOptions::SpeedhackOptions()
|
||||||
{
|
{
|
||||||
DisableAll();
|
DisableAll();
|
||||||
|
@ -48,25 +73,25 @@ Pcsx2Config::SpeedhackOptions::SpeedhackOptions()
|
||||||
|
|
||||||
Pcsx2Config::SpeedhackOptions& Pcsx2Config::SpeedhackOptions::DisableAll()
|
Pcsx2Config::SpeedhackOptions& Pcsx2Config::SpeedhackOptions::DisableAll()
|
||||||
{
|
{
|
||||||
bitset = 0;
|
bitset = 0;
|
||||||
EECycleRate = 0;
|
EECycleRate = 0;
|
||||||
EECycleSkip = 0;
|
EECycleSkip = 0;
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pcsx2Config::SpeedhackOptions::LoadSave( IniInterface& ini )
|
void Pcsx2Config::SpeedhackOptions::LoadSave(IniInterface& ini)
|
||||||
{
|
{
|
||||||
ScopedIniGroup path( ini, L"Speedhacks" );
|
ScopedIniGroup path(ini, L"Speedhacks");
|
||||||
|
|
||||||
IniBitfield( EECycleRate );
|
IniBitfield(EECycleRate);
|
||||||
IniBitfield( EECycleSkip );
|
IniBitfield(EECycleSkip);
|
||||||
IniBitBool( fastCDVD );
|
IniBitBool(fastCDVD);
|
||||||
IniBitBool( IntcStat );
|
IniBitBool(IntcStat);
|
||||||
IniBitBool( WaitLoop );
|
IniBitBool(WaitLoop);
|
||||||
IniBitBool( vuFlagHack );
|
IniBitBool(vuFlagHack);
|
||||||
IniBitBool( vuThread );
|
IniBitBool(vuThread);
|
||||||
IniBitBool( vu1Instant );
|
IniBitBool(vu1Instant);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pcsx2Config::ProfilerOptions::LoadSave( IniInterface& ini )
|
void Pcsx2Config::ProfilerOptions::LoadSave( IniInterface& ini )
|
||||||
|
|
|
@ -135,13 +135,13 @@ extern s32 iopCycleEE; // tracks IOP's current sych status with the EE
|
||||||
/**** R3000A Instruction Macros ****/
|
/**** R3000A Instruction Macros ****/
|
||||||
#define _PC_ psxRegs.pc // The next PC to be executed
|
#define _PC_ psxRegs.pc // The next PC to be executed
|
||||||
|
|
||||||
#define _Funct_ ((psxRegs.code ) & 0x3F) // The funct part of the instruction register
|
#define _Funct_ ((psxRegs.code ) & 0x3F) // The funct part of the instruction register
|
||||||
#define _Rd_ ((psxRegs.code >> 11) & 0x1F) // The rd part of the instruction register
|
#define _Rd_ ((psxRegs.code >> 11) & 0x1F) // The rd part of the instruction register
|
||||||
#define _Rt_ ((psxRegs.code >> 16) & 0x1F) // The rt part of the instruction register
|
#define _Rt_ ((psxRegs.code >> 16) & 0x1F) // The rt part of the instruction register
|
||||||
#define _Rs_ ((psxRegs.code >> 21) & 0x1F) // The rs part of the instruction register
|
#define _Rs_ ((psxRegs.code >> 21) & 0x1F) // The rs part of the instruction register
|
||||||
#define _Sa_ ((psxRegs.code >> 6) & 0x1F) // The sa part of the instruction register
|
#define _Sa_ ((psxRegs.code >> 6) & 0x1F) // The sa part of the instruction register
|
||||||
#define _Im_ ((u16)psxRegs.code) // The immediate part of the instruction register
|
#define _Im_ ((u16)psxRegs.code) // The immediate part of the instruction register
|
||||||
#define _InstrucTarget_ (psxRegs.code & 0x03ffffff) // The target part of the instruction register
|
#define _InstrucTarget_ (psxRegs.code & 0x03ffffff) // The target part of the instruction register
|
||||||
|
|
||||||
#define _Imm_ ((short)psxRegs.code) // sign-extended immediate
|
#define _Imm_ ((short)psxRegs.code) // sign-extended immediate
|
||||||
#define _ImmU_ (psxRegs.code&0xffff) // zero-extended immediate
|
#define _ImmU_ (psxRegs.code&0xffff) // zero-extended immediate
|
||||||
|
|
|
@ -231,13 +231,13 @@ struct tlbs
|
||||||
|
|
||||||
#define _PC_ cpuRegs.pc // The next PC to be executed - only used in this header and R3000A.h
|
#define _PC_ cpuRegs.pc // The next PC to be executed - only used in this header and R3000A.h
|
||||||
|
|
||||||
#define _Funct_ ((cpuRegs.code ) & 0x3F) // The funct part of the instruction register
|
#define _Funct_ ((cpuRegs.code ) & 0x3F) // The funct part of the instruction register
|
||||||
#define _Rd_ ((cpuRegs.code >> 11) & 0x1F) // The rd part of the instruction register
|
#define _Rd_ ((cpuRegs.code >> 11) & 0x1F) // The rd part of the instruction register
|
||||||
#define _Rt_ ((cpuRegs.code >> 16) & 0x1F) // The rt part of the instruction register
|
#define _Rt_ ((cpuRegs.code >> 16) & 0x1F) // The rt part of the instruction register
|
||||||
#define _Rs_ ((cpuRegs.code >> 21) & 0x1F) // The rs part of the instruction register
|
#define _Rs_ ((cpuRegs.code >> 21) & 0x1F) // The rs part of the instruction register
|
||||||
#define _Sa_ ((cpuRegs.code >> 6) & 0x1F) // The sa part of the instruction register
|
#define _Sa_ ((cpuRegs.code >> 6) & 0x1F) // The sa part of the instruction register
|
||||||
#define _Im_ ((u16)cpuRegs.code) // The immediate part of the instruction register
|
#define _Im_ ((u16)cpuRegs.code) // The immediate part of the instruction register
|
||||||
#define _InstrucTarget_ (cpuRegs.code & 0x03ffffff) // The target part of the instruction register
|
#define _InstrucTarget_ (cpuRegs.code & 0x03ffffff) // The target part of the instruction register
|
||||||
|
|
||||||
#define _Imm_ ((s16)cpuRegs.code) // sign-extended immediate
|
#define _Imm_ ((s16)cpuRegs.code) // sign-extended immediate
|
||||||
#define _ImmU_ (cpuRegs.code&0xffff) // zero-extended immediate
|
#define _ImmU_ (cpuRegs.code&0xffff) // zero-extended immediate
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "AppGameDatabase.h"
|
#include "AppGameDatabase.h"
|
||||||
|
|
||||||
#include <wx/stdpaths.h>
|
#include <wx/stdpaths.h>
|
||||||
|
#include "fmt/core.h"
|
||||||
|
|
||||||
#include "Debugger/DisassemblyDialog.h"
|
#include "Debugger/DisassemblyDialog.h"
|
||||||
|
|
||||||
|
@ -255,7 +256,7 @@ static int loadGameSettings(Pcsx2Config& dest, const GameDatabaseSchema::GameEnt
|
||||||
SSE_RoundMode eeRM = (SSE_RoundMode)enum_cast(game.eeRoundMode);
|
SSE_RoundMode eeRM = (SSE_RoundMode)enum_cast(game.eeRoundMode);
|
||||||
if (EnumIsValid(eeRM))
|
if (EnumIsValid(eeRM))
|
||||||
{
|
{
|
||||||
PatchesCon->WriteLn("(GameDB) Changing EE/FPU roundmode to %d [%s]", eeRM, EnumToString(eeRM));
|
PatchesCon->WriteLn(L"(GameDB) Changing EE/FPU roundmode to %d [%s]", eeRM, EnumToString(eeRM));
|
||||||
dest.Cpu.sseMXCSR.SetRoundMode(eeRM);
|
dest.Cpu.sseMXCSR.SetRoundMode(eeRM);
|
||||||
gf++;
|
gf++;
|
||||||
}
|
}
|
||||||
|
@ -266,7 +267,7 @@ static int loadGameSettings(Pcsx2Config& dest, const GameDatabaseSchema::GameEnt
|
||||||
SSE_RoundMode vuRM = (SSE_RoundMode)enum_cast(game.vuRoundMode);
|
SSE_RoundMode vuRM = (SSE_RoundMode)enum_cast(game.vuRoundMode);
|
||||||
if (EnumIsValid(vuRM))
|
if (EnumIsValid(vuRM))
|
||||||
{
|
{
|
||||||
PatchesCon->WriteLn("(GameDB) Changing VU0/VU1 roundmode to %d [%s]", vuRM, EnumToString(vuRM));
|
PatchesCon->WriteLn(L"(GameDB) Changing VU0/VU1 roundmode to %d [%s]", vuRM, EnumToString(vuRM));
|
||||||
dest.Cpu.sseVUMXCSR.SetRoundMode(vuRM);
|
dest.Cpu.sseVUMXCSR.SetRoundMode(vuRM);
|
||||||
gf++;
|
gf++;
|
||||||
}
|
}
|
||||||
|
@ -275,7 +276,7 @@ static int loadGameSettings(Pcsx2Config& dest, const GameDatabaseSchema::GameEnt
|
||||||
if (game.eeClampMode != GameDatabaseSchema::ClampMode::Undefined)
|
if (game.eeClampMode != GameDatabaseSchema::ClampMode::Undefined)
|
||||||
{
|
{
|
||||||
int clampMode = enum_cast(game.eeClampMode);
|
int clampMode = enum_cast(game.eeClampMode);
|
||||||
PatchesCon->WriteLn("(GameDB) Changing EE/FPU clamp mode [mode=%d]", clampMode);
|
PatchesCon->WriteLn(L"(GameDB) Changing EE/FPU clamp mode [mode=%d]", clampMode);
|
||||||
dest.Cpu.Recompiler.fpuOverflow = (clampMode >= 1);
|
dest.Cpu.Recompiler.fpuOverflow = (clampMode >= 1);
|
||||||
dest.Cpu.Recompiler.fpuExtraOverflow = (clampMode >= 2);
|
dest.Cpu.Recompiler.fpuExtraOverflow = (clampMode >= 2);
|
||||||
dest.Cpu.Recompiler.fpuFullMode = (clampMode >= 3);
|
dest.Cpu.Recompiler.fpuFullMode = (clampMode >= 3);
|
||||||
|
@ -292,26 +293,27 @@ static int loadGameSettings(Pcsx2Config& dest, const GameDatabaseSchema::GameEnt
|
||||||
gf++;
|
gf++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (game.speedHacks.count("mvuFlagSpeedHack") == 1)
|
// TODO - config - this could be simplified with maps instead of bitfields and enums
|
||||||
|
for (SpeedhackId id = SpeedhackId_FIRST; id < pxEnumEnd; id++)
|
||||||
{
|
{
|
||||||
bool vuFlagHack = game.speedHacks.at("mvuFlagSpeedHack") ? 1 : 0;
|
std::string key = fmt::format("{}SpeedHack", wxString(EnumToString(id)));
|
||||||
PatchesCon->WriteLn("(GameDB) Changing mVU flag speed hack [mode=%d]", vuFlagHack);
|
|
||||||
dest.Speedhacks.vuFlagHack = vuFlagHack;
|
|
||||||
gf++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (game.keyExists("InstantVU1SpeedHack"))
|
// Gamefixes are already guaranteed to be valid, any invalid ones are dropped
|
||||||
{
|
if (game.speedHacks.count(key) == 1)
|
||||||
bool vu1InstantHack = game.getInt("InstantVU1SpeedHack") ? 1 : 0;
|
{
|
||||||
PatchesCon->WriteLn("(GameDB) Changing Instant VU1 speedhack [mode=%d]", vu1InstantHack);
|
// Legacy note - speedhacks are setup in the GameDB as integer values, but
|
||||||
dest.Speedhacks.vu1Instant = vu1InstantHack;
|
// are effectively booleans like the gamefixes
|
||||||
gf++;
|
bool mode = game.speedHacks.at(key) ? 1: 0;
|
||||||
|
dest.Speedhacks.Set(id, mode);
|
||||||
|
PatchesCon->WriteLn(L"(GameDB) Setting Speedhack '" + key + "' to [mode=%d]", mode);
|
||||||
|
gf++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO - config - this could be simplified with maps instead of bitfields and enums
|
// TODO - config - this could be simplified with maps instead of bitfields and enums
|
||||||
for (GamefixId id = GamefixId_FIRST; id < pxEnumEnd; ++id)
|
for (GamefixId id = GamefixId_FIRST; id < pxEnumEnd; id++)
|
||||||
{
|
{
|
||||||
std::string key = wxString(EnumToString(id)).Append(L"Hack").ToStdString();
|
std::string key = fmt::format("{}Hack", wxString(EnumToString(id)));
|
||||||
|
|
||||||
// Gamefixes are already guaranteed to be valid, any invalid ones are dropped
|
// Gamefixes are already guaranteed to be valid, any invalid ones are dropped
|
||||||
if (std::find(game.gameFixes.begin(), game.gameFixes.end(), key) != game.gameFixes.end())
|
if (std::find(game.gameFixes.begin(), game.gameFixes.end(), key) != game.gameFixes.end())
|
||||||
|
|
Loading…
Reference in New Issue