Editing PS2 Emulation

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 3: Line 3:
== PS2 games available on PS4 PS Store ==
== PS2 games available on PS4 PS Store ==


* Ace Combat 5: The Unsung War UP0700-CUSA13419_00-ACECOMBAT7EARLY5 or JP0700-CUSA13271_00-ACECOMBAT7EARLY5 or HP0700-CUSA14109_00-ACECOMBAT7EARLY5 Available as a "PS2 Classics" as part of the "Pre-Order-Bonus" for "Ace Combat 7: Skies Unknown" (PS4) only (not available separately).
* Ace Combat 5: The Unsung War. Available as a "PS2 Classics" as part of the "Pre-Order-Bonus" for "Ace Combat 7: Skies Unknown" (PS4) only (not available separately).
* Ace Combat: Squadron Leader EP0700-CUSA13351_00-ACECOMBAT7EARLY5 Same as Ace Combat 5: The Unsung War but for Europe
* ADK DAMASHII™ UP0576-CUSA03783_00-SLPS259060000001 "2017-02-24"
* ADK DAMASHII™ UP0576-CUSA03783_00-SLPS259060000001 "2017-02-24"
* Arc the Lad: Twilight of the Spirits UP9000-CUSA02205_00-SCUS972310000001 "2016-01-12"
* Arc the Lad: Twilight of the Spirits UP9000-CUSA02205_00-SCUS972310000001 "2016-01-12"
Line 17: Line 16:
* Destroy All Humans! 2 (2006) UP4389-CUSA05233_00-SLUS214390000001 2016-11-29
* Destroy All Humans! 2 (2006) UP4389-CUSA05233_00-SLUS214390000001 2016-11-29
* Eternal Ring UP1022-CUSA04654_00-SLUS200150000001
* Eternal Ring UP1022-CUSA04654_00-SLUS200150000001
* FantaVision JP9000-CUSA02407_00-SCPS150300000001 or UP9000-CUSA01724_00-SCUS971050000001 or EP9000-CUSA01949_00-SCES500020000001 "2015-12-22"
* FantaVision "2015-12-22"
* Fatal Fury Battle Archives Vol. 2 UP0576-CUSA03750_00-SLUS217230000001 "2017-03-27"
* Fatal Fury Battle Archives Vol. 2 UP0576-CUSA03750_00-SLUS217230000001 "2017-03-27"
* Forbidden Siren EP9000-CUSA02274_00-SCES519200000001 patch 1.01 requires PS4 3.10
* Forbidden Siren EP9000-CUSA02274_00-SCES519200000001 patch 1.01 requires PS4 3.10
Line 25: Line 24:
* Grand Theft Auto: Vice City UP1004-CUSA03509_00-SLUS205520000001 "2015-12-05"
* Grand Theft Auto: Vice City UP1004-CUSA03509_00-SLUS205520000001 "2015-12-05"
* Grand Theft Auto: San Andreas UP1004-CUSA03506_00-SLUS209460000001 or EP1004-CUSA03541_00-SLES525410000001 PS4 3.11 "2015-12-05"
* Grand Theft Auto: San Andreas UP1004-CUSA03506_00-SLUS209460000001 or EP1004-CUSA03541_00-SLES525410000001 PS4 3.11 "2015-12-05"
* Harvest Moon: Save the Homeland UP1014-CUSA06585_00-SLUS202510000001 or EP1014-CUSA06610_00-SLUS202510000001
* Harvest Moon: Save the Homeland UP1014-CUSA06585_00-SLUS202510000001
* Harvest Moon: A Wonderful Life Special Edition UP1014-CUSA06584_00-SLUS211710000001 or EP1014-CUSA06609_00-SLUS211710000001 "2017-03-28"
* Harvest Moon: A Wonderful Life Special Edition UP1014-CUSA06584_00-SLUS211710000001 "2017-03-28"
* Hot Shots® Tennis (Everybody's Tennis) UP9000-CUSA02193_00-SCUS976100000001 "2016-09-13"
* Hot Shots® Tennis (Everybody's Tennis) UP9000-CUSA02193_00-SCUS976100000001 "2016-09-13"
* Indigo Prophecy (aka Fahrenheit 2005) UP1642-CUSA04798_00-SLUS211960000001 or EP1628-CUSA05760_00-SLES535390000001 "2016-08-09"
* Indigo Prophecy (aka Fahrenheit 2005) UP1642-CUSA04798_00-SLUS211960000001 or EP1628-CUSA05760_00-SLES535390000001 "2016-08-09"
Line 159: Line 158:
| Forbidden Siren || The only emulator to fix '''Ice age 2''' being stuck at splash screen. It also fixed '''Gran turismo 4''' running abysmally slow. || 0.1 ||
| Forbidden Siren || The only emulator to fix '''Ice age 2''' being stuck at splash screen. It also fixed '''Gran turismo 4''' running abysmally slow. || 0.1 ||
|-
|-
| The King of Fighters 2000 || Seemingly one of the most GIF-accurate emus, it '''prevents Koei Tecmo games (Dynasty Warriors 5: Empires and Samurai Warriors 2) from suddenly freezing when battle starts. Moreover, it is likely the only emulator where '''Batman Begins''' does not crash.''' Often referred to as "KOF2000"|| 1.2 || '''Roguev1''', '''KOF98''', '''Okage'''
| The King of Fighters 2000 || Seemingly one of the most VU-accurate emus, fixing sps in games such as '''Crash Twinsanity''', '''Crazy Frog Racer'''. It also '''prevents Koei tecmo games from suddenly freezing when battle starts. Moreover, it is likely the only emulator where '''Batman Begins''' does not crash.''' Often referred to as "KOF2000"|| 1.2 || '''Roguev1''', '''KOF98''', '''Okage'''
|-
|-
| Destroy All Humans! || Fixed '''Tenchu: Fatal Shadows'''' crashing. || 0.1 ||  
| Destroy All Humans! || Fixed '''Tenchu: Fatal Shadows'''' crashing. || 0.1 ||  
Line 170: Line 169:
|  || 2015 || ||
|  || 2015 || ||
|-
|-
| War of the Monsters v1 || Subjectively the best emulator to use. Used as PS2CLASSICSGUI's default emulator, it is the best one around for accurate GS emulation, as some graphical issues on the Ratchet series and Tekken 5 can only be fixed by it. Another interesting case is GTA SA's lack of need for auto flush on it, and being natively performant. Additionally, its VU0 timing as well as performance is much better than Jakv2's, as can be seen in the case of Spyro Enter the Dragonfly running comparatively better on it, and the Ratchet series requiring a lower EE delay amount in patches to work, making it one of the best emulators on the PS4. || 0.1 || '''Rogue v1 and v2, Arc the Lad, Star Wars Jedi Starfighter'''
| War of the Monsters v1 || Subjectively the best emulator to use. Used as PS2CLASSICSGUI's default emulator, it is the best one around for accurate GS emulation, as some graphical issues on the Ratchet series and Tekken 5 can only be fixed by it. Another interesting case is GTA SA's lack of need for auto flush on it, and being natively performant. Additionally, its VU0 timing is much better than Jakv2's, making it one of the best emulators on the PS4. || 0.1 || '''Rogue v1 and v2, Arc the Lad, Star Wars Jedi Starfighter'''
|-
|-
| GTA III || Fixed the PAL version of '''Genji: Dawn of the Samurai'''. || 0.6 ||
| GTA III || Fixed the PAL version of '''Genji: Dawn of the Samurai'''. || 0.6 ||
Line 341: Line 340:
|  || || || Speedhacks / Desync Fixes|| ||
|  || || || Speedhacks / Desync Fixes|| ||
|-
|-
| --ee-cycle-scalar  || {{Universal}} ||Slowest cycles speed: 5.00<br>Normal cycles speed: 1.000<br>Fastest cycles speed: 0.100 || {{Float}} || Changes the cycle speed of the EE. It can benefit core sync or performance (lowering the cycle rate may affect FMVS). The default value for most emulators is ~1.0. It is highly sensitive, as any slight change may break or fix the game. (Dividing 100 with the entered value is how to find what EE clock speed percentage % the value is setting. For example, 100/5.00 = 20%) || --ee-cycle-scalar=1.0  
| --ee-cycle-scalar  || {{Universal}} ||Slowest cycles speed: 5.00<br>Normal cycles speed: 1.000<br>Fastest cycles speed: 0.100 || {{Float}} || Can benefit core sync or performance (lowering the cycle rate may affect FMVS). The default value for most emulators is ~1.0. It is highly sensitive, as any slight change may break or fix the game. (Dividing 100 with the entered value is how to find what EE clock speed percentage % the value is setting. For example, 100/5.00 = 20%) || --ee-cycle-scalar=1.0  
|-
|-
| --ee-context-switch-cycles  || {{Exclusive}} || Accelerate cycles (360 => 0) <br>Decelerate cycles (361 => ∞ ) || {{4 Bytes}}||Its effects are mysterious. Possibly configures how many CPU cycles the emulator should run before switching between different tasks or threads. Does not work on Jak emulators. Default value is 360. Seems to be useful for Bee Movie, Metal Gear Solid 3, as well as others with IPU issues. It bears no effect on VU timing. || --ee-context-switch-cycles=2700?
| --ee-context-switch-cycles  || {{Exclusive}} || Accelerate cycles (360 => 0) <br>Decelerate cycles (361 => ∞ ) || {{4 Bytes}}||Its effects are mysterious. Possibly configures how many CPU cycles the emulator should run before switching between different tasks or threads. Does not work on Jak emulators. Default value is 360. Seems to be useful for Bee Movie, Metal Gear Solid 3, as well as others with IPU issues.|| --ee-context-switch-cycles=2700?
|-
|-
| --ee-hook  || {{Variable}} || AdvanceClock<br>FastForwardClock<br>Mfifodrain || style="background:#212d9c; color:#ffffff;|4 Byte hex (offset),string,4 Byte hex (opcode),4 Byte Decimals (advanceclock value)|| Runs the specified functionality each time a selected EE offset is reached. FastForwardClock and AdvanceClock help fix core sync issues, but can be used as a speedhack. It is believed that AdvanceClock stalls the EE for a specified amount of cycles, while FastForwardClock behaves similarly. They are commonly used on the offset directly succeeding an affected CTC2 instruction. For a mysterious reason, some offsets are ignored by AdvanceClock - it could be that this function only works on instructions 2 cycles ahead of a branch, likely specifically designed to work at both the start or end of a branch. However, this is only the case for old emulators like King Of Fighters 2000 and War Of The Monsters. Newer ones such as Jak operate differently, where AdvanceClock only works 2 cycles ahead at the end of a branch instruction.<pre>
| --ee-hook  || {{Variable}} || AdvanceClock<br>FastForwardClock<br>Mfifodrain || 4 Byte hex (offset),string,4 Byte hex (opcode),4 Byte Decimals (advanceclock value)|| Runs the specified functionality each time a selected EE offset is reached. FastForwardClock and AdvanceClock help fix core sync issues, but can be used as a speedhack. It is believed that AdvanceClock stalls the EE for a specified amount of cycles, while FastForwardClock behaves similarly. They are commonly used on the offset directly succeeding an affected CTC2 instruction. For a mysterious reason, some offsets are ignored by AdvanceClock - it could be that this function only works on instructions 2 cycles ahead of a branch, likely specifically designed to work at both the start or end of a branch. However, this is only the case for old emulators like King Of Fighters 2000 and War Of The Monsters. Newer ones such as Jak operate differently, where AdvanceClock only works 2 cycles ahead at the end of a branch instruction.<pre>
Advanceclock usage example:
Advanceclock usage example:


Line 447: Line 446:
| --fpu-custom-min-max || {{Universal}} || 0, 1 || {{Binary}} || Custom Max/Mini logic for denormals. Enabled by default. Disabling it might break some games || --fpu-custom-min-max=0
| --fpu-custom-min-max || {{Universal}} || 0, 1 || {{Binary}} || Custom Max/Mini logic for denormals. Enabled by default. Disabling it might break some games || --fpu-custom-min-max=0
|-  
|-  
| --fpu-accurate-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Accurate Mul/Div/Add/Sub Math instructions for the FPU by using software floats rather than hardware floats. Can be used for full EE/FPU Mathematical accuracy in the specified range. || --fpu-accurate-range=0x1acce0,0x2acce0
| --fpu-accurate-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || || Accurate Mul/Div/Add/Sub Math instructions for the FPU by using software floats rather than hardware floats. Can be used for full EE/FPU Mathematical accuracy in the specified range. || --fpu-accurate-range=0x1acce0,0x2acce0
|-  
|-  
| --fpu-no-clamp-range || {{Exclusive}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Per-range clamping for the FPU in the selected memory range. || --fpu-no-clamp-range=0x1acce0,0x2acce0
| --fpu-no-clamp-range || {{Exclusive}} || start,end offset (0x0 - 0x1FFFFFF) || || Per-range clamping for the FPU in the selected memory range. || --fpu-no-clamp-range=0x1acce0,0x2acce0
|-  
|-  
| --fpu-accurate-muldiv  || {{Universal}} || 0 = Disabled<br>1 = Enabled  || {{Binary}} || Allows the FPU to accurately Divide/Multiply for all offsets by using software floats rather than hardware floats. (Extremely slow) || --fpu-accurate-muldiv=1
| --fpu-accurate-muldiv  || {{Universal}} || 0 = Disabled<br>1 = Enabled  || {{Binary}} || Allows the FPU to accurately Divide/Multiply for all offsets by using software floats rather than hardware floats. (Extremely slow) || --fpu-accurate-muldiv=1
Line 455: Line 454:
| --fpu-accurate-addsub || {{Universal}} || 0 = Disabled<br>1 = Enabled || {{Binary}} || Allows the FPU to accurately Add/Subtract for all offsets by using software floats rather than hardware floats. Though slow on PS4, many games that work fine on PCSX2 (Pac-Man World 3, Jackie Chan Adventures) experience issues on PS4 because ADD/SUB is disabled by default. || --fpu-accurate-addsub=1
| --fpu-accurate-addsub || {{Universal}} || 0 = Disabled<br>1 = Enabled || {{Binary}} || Allows the FPU to accurately Add/Subtract for all offsets by using software floats rather than hardware floats. Though slow on PS4, many games that work fine on PCSX2 (Pac-Man World 3, Jackie Chan Adventures) experience issues on PS4 because ADD/SUB is disabled by default. || --fpu-accurate-addsub=1
|-  
|-  
| --fpu-accurate-muldiv-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Allows the FPU to accurately Divide/Multiply in the specified ee memory range by using software floats rather than hardware floats. || --fpu-accurate-muldiv-range=0x1acce0,0x2acce0
| --fpu-accurate-muldiv-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || || Allows the FPU to accurately Divide/Multiply in the specified ee memory range by using software floats rather than hardware floats. || --fpu-accurate-muldiv-range=0x1acce0,0x2acce0
|-  
|-  
| --fpu-accurate-addsub-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Allows the FPU to accurately Add/Subtract in the specified ee memory range by using software floats rather than hardware floats. || --fpu-accurate-addsub-range=0x1acce0,0x2acce0
| --fpu-accurate-addsub-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || || Allows the FPU to accurately Add/Subtract in the specified ee memory range by using software floats rather than hardware floats. || --fpu-accurate-addsub-range=0x1acce0,0x2acce0
|-
|-
|-style="background-color:#7698FF"
|-style="background-color:#7698FF"
Line 499: Line 498:
| --cop2-no-clamping || {{Universal}} ||  0, 1 || {{Binary}} || Changes the clamping behavior of the COP2. The default value is set to 1.  || --cop2-no-clamping=0
| --cop2-no-clamping || {{Universal}} ||  0, 1 || {{Binary}} || Changes the clamping behavior of the COP2. The default value is set to 1.  || --cop2-no-clamping=0
|-
|-
| --cop2-accurate-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination|| Accurate Mul/Div/Add/Sub math instructions for the COP2 by using software floats rather than hardware floats. Can be used for full COP2 mathematical accuracy in the specified range. || --cop2-accurate-range=0x123456,0x134567
| --cop2-accurate-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || || Accurate Mul/Div/Add/Sub math instructions for the COP2 by using software floats rather than hardware floats. Can be used for full COP2 mathematical accuracy in the specified range. || --cop2-accurate-range=0x123456,0x134567
|-  
|-  
| --cop2-no-clamp-range || {{Exclusive}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Per-range clamping for COP2. || --cop2-no-clamp-range=0x123456,0x134567
| --cop2-no-clamp-range || {{Exclusive}} || start,end offset (0x0 - 0x1FFFFFF) || || Per-range clamping for COP2. || --cop2-no-clamp-range=0x123456,0x134567
|-  
|-  
| --cop2-accurate-mul-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Accurate multiplication instructions for the COP2 in the specified range by using software floats rather than hardware floats (Offset range seems not to directly match EE's) || --cop2-accurate-mul-range=0x123456,0x134567
| --cop2-accurate-mul-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || || Accurate multiplication instructions for the COP2 in the specified range by using software floats rather than hardware floats (Offset range seems not to directly match EE's) || --cop2-accurate-mul-range=0x123456,0x134567
|-  
|-  
| --cop2-accurate-mul || {{Universal}} || 1 = Enabled<br>0 = Disabled || {{Binary}} || Allows the COP2 to accurately multiply for all offsets by using software floats rather than hardware floats. (Extremely slow) || --cop2-accurate-mul=1
| --cop2-accurate-mul || {{Universal}} || 1 = Enabled<br>0 = Disabled || {{Binary}} || Allows the COP2 to accurately multiply for all offsets by using software floats rather than hardware floats. (Extremely slow) || --cop2-accurate-mul=1
|-  
|-  
| --cop2-accurate-addsub|| {{Universal}} ||  1 = Enabled<br>0 = Disabled || {{Binary}} || Allows the COP2 to accurately Add/Subtract for all offsets by using software floats rather than hardware floats. (Extremely slow) || --cop2-accurate-addsub=1
| --cop2-accurate-mul|| {{Universal}} ||  1 = Enabled<br>0 = Disabled || {{Binary}} || Allows the COP2 to accurately Add/Subtract for all offsets by using software floats rather than hardware floats. (Extremely slow) || --cop2-accurate-addsub=1
|-
|-
| --cop2-accurate-addsub-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Allows the COP2 to accurately Add/Sub in the specified ee memory range by using software floats rather than hardware floats. (Offset range seems not to directly match EE's. It is possibly 0x95400~ behind(?) || --cop2-accurate-addsub-range=0x123456,0x134567
| --cop2-accurate-addsub-range || {{Universal}} || start,end offset (0x0 - 0x1FFFFFF) || || Allows the COP2 to accurately Add/Sub in the specified ee memory range by using software floats rather than hardware floats. (Offset range seems not to directly match EE's. It is possibly 0x95400~ behind(?) || --cop2-accurate-addsub-range=0x123456,0x134567
|-
|-
|-style="background-color:#FFAA00"
|-style="background-color:#FFAA00"
|  || || || Other || ||
|  || || || Other || ||
|-
|-
| --cop2-regalloc || {{Universal}} || 0, 1 || {{Binary}} || Optimized Register Allocation(?). PCSX2 seems to have this enabled by default. Seems to slow down COP2 when disabled. ||
| --cop2-regalloc || {{Universal}} || 0, 1 ? || {{Binary}} || Optimized Register Allocation(?). PCSX2 seems to have this enabled by default. Seems to slow down COP2 when disabled. ||
|-  
|-  
| --cop2-inst-q || {{Universal}} || 0, 1 || {{Binary}} || instant Q, no stalling on VWAITQ, or instances of Q. Crashes some games when enabled. ||
| --cop2-inst-q || {{Universal}} || 0, 1 || {{Binary}} || instant Q, no stalling on VWAITQ, or instances of Q. Crashes some games when enabled. ||
Line 543: Line 542:
| --vu-xgkick-delay  || {{Universal}} || Limit is between (0 => 31)  || {{1 Byte}}|| Delay xgkick instruction execution. PCSX2 uses 6 cycles, PS3 uses 2-8 cycles depending on the game. A game with missing graphics will require a low value such as 0, while one that crashes might require a high value such as 7.|| --vu-xgkick-delay=8
| --vu-xgkick-delay  || {{Universal}} || Limit is between (0 => 31)  || {{1 Byte}}|| Delay xgkick instruction execution. PCSX2 uses 6 cycles, PS3 uses 2-8 cycles depending on the game. A game with missing graphics will require a low value such as 0, while one that crashes might require a high value such as 7.|| --vu-xgkick-delay=8
|-
|-
| --vu-custom-min-max  || {{Universal}} || 0, 1 || {{binary}} || Custom Max/Mini logic for denormals. Disabled on pcsx2 by default but enabled by default on a couple of emus such as jakv2. Disabling it could potentially restore missing graphics, as it tends to adjust VU timing.|| --vu-custom-min-max=0
| --vu-custom-min-max  || {{Universal}} || 0, 1 || {{binary}} || Custom Max/Mini logic for denormals. Disabled on pcsx2 by default but enabled by default on a couple of emus such as jakv2. Disabling it could potentially restore missing graphics.|| --vu-custom-min-max=0
|-
|-
|-style="background-color:#D7EF54"
|-style="background-color:#D7EF54"
Line 552: Line 551:
| --vu-branch-hazard  || {{Universal}} || 0, 1 || {{binary}} || This command relates to how the emulator handles branch hazards in the Vector Units (VU). Setting it to 0 might fix freezes at the expense of causing SPS in some games, while 1 might improve performance. Seems to be enabled by default. Disabling it prevented "'''Batman - Rise of Sin Tzu'''" from crashing|| --vu-branch-hazard=0
| --vu-branch-hazard  || {{Universal}} || 0, 1 || {{binary}} || This command relates to how the emulator handles branch hazards in the Vector Units (VU). Setting it to 0 might fix freezes at the expense of causing SPS in some games, while 1 might improve performance. Seems to be enabled by default. Disabling it prevented "'''Batman - Rise of Sin Tzu'''" from crashing|| --vu-branch-hazard=0
|-  
|-  
| --vu-evil-branches  || {{Universal}} || 0, 1 || {{binary}} || Take in count branch in delay slot, or not. Set to 1 for the correct behavior. [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L306 More Info]|| --vu-evil-branches=1
| --vu-evil-branches  || {{Universal}} || 0, 1 || {{binary}} || Take in count branch in delay slot, or not. [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L306 More Info]||
|-  
|-  
| --vu-to-double  || {{Universal}} || 0, 1 || {{binary}} || Converts floats to double. Enabling it is the accurate option.  || --vu-to-double=1
| --vu-to-double  || {{Universal}} || 0, 1 || {{binary}} || Converts floats to double. Enabling it is the accurate option.  || --vu-to-double=1
Line 579: Line 578:
| --vu-jit-disasm  || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || ? || --vu-jit-disasm=1
| --vu-jit-disasm  || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || ? || --vu-jit-disasm=1
|-  
|-  
| --vu-range-merge  || {{Exclusive}} || Default = 0<br>Max = 255 || {{1 Byte}} ||  vu_inst_cnt || --vu-range-merge=255
| --vu-range-merge  || {{Exclusive}} || vu_inst_cnt || ||  ? ||  
|-  
|-  
|}
|}
Line 592: Line 591:
|  || || Speedhacks || ||  ||
|  || || Speedhacks || ||  ||
|-
|-
| --vu1-mpg-cycles  || {{Universal}} || 1 - 65535 || {{2 Bytes}}||  Set initial speed for VU1 Micro-programs. 100 is the default value. If VU1 requirements were a bottleneck, increasing it will result in better performance while decreasing it will result in the opposite. As a side note, increasing it can benefit MTVU-sensitive games. || --vu1-mpg-cycles=1000<br><pre> Symbols (They change values close to VU1-mpg-cycles' offset):
| --vu1-mpg-cycles  || {{Universal}} || Decimals<br>0 - 65535 || {{2 Bytes}}||  Set initial speed for VU1 Micro-programs. 100 is the default value. If VU1 requirements were a bottleneck, increasing it will result in better performance while decreasing it will result in the opposite. Increasing it can be beneficial for MTVU sensitive games.|| --vu1-mpg-cycles=1000<br><pre> Symbols (They change values close to VU1-mpg-cycles' offset):


$ goes to the specified succeeding offsets. $0 will go 2 bytes forward and change them. $1 will go 4 bytes forward and change the 2 bytes specified. For example, $0,$1 will change the 4 bytes ahead as the specified 2 bytes' value.
$ goes to the specified succeeding offsets. $0 will go 2 bytes forward and change them. $1 will go 4 bytes forward and change the 2 bytes specified. For example, $0,$1 will change the 4 bytes ahead as the specified 2 bytes' value.
Line 600: Line 599:
'-' or '+' Changes the specified preceding or succeeding 2 bytes of VU1 mpg cycles' offset according to the added number. Adding -1, for example will change the 2 bytes before it. Likewise, adding -2 will go 4 bytes away and change the specified 2 bytes accordingly. It even can change EE cycle scalar itself if you go far enough. These numbers are in HEX. Infinite amounts of '-' and '+' symbols seem to be supported.</pre>
'-' or '+' Changes the specified preceding or succeeding 2 bytes of VU1 mpg cycles' offset according to the added number. Adding -1, for example will change the 2 bytes before it. Likewise, adding -2 will go 4 bytes away and change the specified 2 bytes accordingly. It even can change EE cycle scalar itself if you go far enough. These numbers are in HEX. Infinite amounts of '-' and '+' symbols seem to be supported.</pre>
|-
|-
| --vu1-di-bits || {{Universal}} || 0, 1 || {{binary}} ||  0 Skips setting invalid, and Divides by zero flags in status register. A speedhack that vastly improves performance; it can skip costly calculations. But at the same time, it can cause issues such as broken geometry. || --vu1-di-bits=0
| --vu1-di-bits || {{Universal}} || 0, 1 || {{binary}} ||  0 Skips setting invalid, and Divides by zero flags in status register. Can be used as a speedhack as it can skip costly calculations. But at the same time, it can cause issues such as broken geometry. || --vu1-di-bits=0
|-
|-
| --vu1-const-prop || {{Universal}} || 0, 1|| {{binary}} || Enabled by default. 0 will disable it and cause performance issues but with higher compatability.[https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L312 More info] || --vu1-const-prop=1
| --vu1-const-prop || {{Universal}} || 0, 1|| {{binary}} || Enabled by default. 0 will disable it and cause performance issues but with higher compatability.[https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L312 More info] || --vu1-const-prop=1
Line 617: Line 616:
| --vu1 || {{Universal}} || jit-sync || {{string}}  || Selector between IR/JIT and it modes. Jit-sync works similarly to disabling MTVU. jit, trans, and jit-async are unimplemented functions that do not change anything. || --vu1=jit-sync
| --vu1 || {{Universal}} || jit-sync || {{string}}  || Selector between IR/JIT and it modes. Jit-sync works similarly to disabling MTVU. jit, trans, and jit-async are unimplemented functions that do not change anything. || --vu1=jit-sync
|-
|-
| --vu1-no-clamping || {{Universal}} ||  0,1 || {{binary}} || Changes the clamping behavior of the VU1. Setting specific to PS4 emulators, (unimplemented in PCSX2) with 0 resembling PCSX2's extra, and 1 extra + preserve sign. The default emulator's value is 1. || --vu1-no-clamping=0
| --vu1-no-clamping || {{Universal}} ||  0,1 || {{binary}} || Changes the clamping behavior of the VU1. Setting specific to ps4 emulators, unimplemented in pcsx2, with 0 being closest to extra, and 1 to extra + preserve sign. The default emulator's value is 1. || --vu1-no-clamping=0
|-  
|-  
| --vu1-clamp-range || {{Exclusive}} || vu1 memory offset start,end (0x0 - 0x800) ||  style="background:#5c32a8; color:#ffffff;"|Hex combination || Values must not exceed 0x800 ||
| --vu1-clamp-range || {{Exclusive}} || vu1 memory offset start,end (0x0 - 0x800) ||  || Values must not exceed 0x800 ||
|-
|-
| --vu1-accurate-addsub-range ||  {{Exclusive}} || vu1 memory offset start,end (0x0 - 0x800) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Allows the VU1 to accurately add/subtract in the specified memory range by using software floats rather than hardware floats.|| --vu1-accurate-addsub-range=0x0000,0x0600
| --vu1-accurate-addsub-range ||  {{Exclusive}} || vu1 memory offset start,end (0x0 - 0x800) ||   || Allows the VU1 to accurately add/subtract in the specified memory range by using software floats rather than hardware floats.|| --vu1-accurate-addsub-range=0x0000,0x0600
|-  
|-  
| --vu1-mul0fix-range || {{Exclusive}} || vu1 memory offset start,end (0x0 - 0x800) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Allows the VU1 to accurately multiply by 0 in the specified memory range by using software floats rather than hardware floats. || --vu1-mul0fix-range=0x123,0x123
| --vu1-mul0fix-range || {{Exclusive}} || vu1 memory offset start,end (0x0 - 0x800) || || Allows the VU1 to accurately multiply by 0 in the specified memory range by using software floats rather than hardware floats. || --vu1-mul0fix-range=0x123,0x123
|-  
|-  
| --vu1-injection || {{Universal}} || 0, 1 || {{binary}} || unknown || --vu1-injection=1
| --vu1-injection || {{Universal}} || 0, 1 || {{binary}} || unknown || --vu1-injection=1
Line 657: Line 656:
|  || || Speedhacks || || ||
|  || || Speedhacks || || ||
|-
|-
| --vu0-mpg-cycles||  {{Exclusive}} || 1 - 65535  || {{2 Bytes}} || Set initial cycle speed for VU0 Micro-programs. 100 is the default value. It is not available in older emulators such as War of the Monsters. Raising the value helps COP2 timing, while lowering does the opposite.|| --vu0-mpg-cycles=1000<br><pre> Symbols (They change values close to VU0-mpg-cycles' offset):
| --vu0-mpg-cycles||  {{Exclusive}} || Decimals<br>0 - 65535  || {{2 Bytes}} || Set initial cycle speed for VU0 Micro-programs. 100 is the default value. It is not available in older emulators such as War of the Monsters. Raising the value helps COP2 timing, while lowering does the opposite.|| --vu0-mpg-cycles=1000<br><pre> Symbols (They change values close to VU0-mpg-cycles' offset):


$ goes to the specified succeeding offsets. $0 will go 2 bytes forward and changes them. $1 will go 4 bytes forward and changes the 2 bytes specified. For example, $0,$1 will change the 4 bytes ahead as the specified 2 bytes value.
$ goes to the specified succeeding offsets. $0 will go 2 bytes forward and changes them. $1 will go 4 bytes forward and changes the 2 bytes specified. For example, $0,$1 will change the 4 bytes ahead as the specified 2 bytes value.
Line 679: Line 678:
|  || || Game fixes || || ||
|  || || Game fixes || || ||
|-
|-
| --vu0-clamp-range ||  {{Exclusive}} || start, end offset (0x0 - 0x200) ||  style="background:#5c32a8; color:#ffffff;"|Hex combination || per range clamping for VU0. Strangely, it rejects offsets higher than 0x200. || --vu0-clamp-range=0x100,0x120
| --vu0-clamp-range ||  {{Exclusive}} || start, end offset (0x0 - 0x200) ||  || per range clamping for VU0. Strangely, it rejects offsets higher than 0x200. || --vu0-clamp-range=0x100,0x120
|-  
|-  
| --vu0-no-clamping || {{Universal}} || 0,1 || {{binary}} || Changes the clamping behavior of the VU0. Setting specific to ps4 emulators, unimplemented in pcsx2. The default emulator's value is 1. || --vu0-no-clamping=0
| --vu0-no-clamping || {{Universal}} || 0,1 || {{binary}} || Changes the clamping behavior of the VU0. Setting specific to ps4 emulators, unimplemented in pcsx2. The default emulator's value is 1. || --vu0-no-clamping=0
|-  
|-  
| --vu0-accurate-addsub-range || {{Exclusive}} || offset (0x0 - 0x200) || style="background:#5c32a8; color:#ffffff;"|Hex combination || Allows the VU0 to accurately Add/Subtract in the specified memory range by using software floats rather than hardware floats. Strangely, it rejects offsets higher than 0x200. ||  
| --vu0-accurate-addsub-range || {{Exclusive}} || offset (0x0 - 0x200) || || Allows the VU0 to accurately Add/Subtract in the specified memory range by using software floats rather than hardware floats. Strangely, it rejects offsets higher than 0x200. ||  
|-
|-
| --vu0-mul0fix-range || {{Exclusive}} || vu0 memory offset start,end (0x0 - 0x200) ||  style="background:#5c32a8; color:#ffffff;"|Hex combination || Allows the VU0 to accurately Multiply by 0 in the specified memory range by using software floats rather than hardware floats. Strangely, it rejects offsets higher than 0x200. ||
| --vu0-mul0fix-range || {{Exclusive}} || vu0 memory offset start,end (0x0 - 0x200) ||  || Allows the VU0 to accurately Multiply by 0 in the specified memory range by using software floats rather than hardware floats. Strangely, it rejects offsets higher than 0x200. ||
|-
|-
|-style="background-color:#FEA15C"
|-style="background-color:#FEA15C"
Line 748: Line 747:
|-
|-
| --ee-sif0-cycle-scalar || {{Exclusive}} || Accelerate SIF cycles: (0.99 => 0.1)<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the EE receives from the IOP || --ee-sif0-cycle-scalar=0.1
| --ee-sif0-cycle-scalar || {{Exclusive}} || Accelerate SIF cycles: (0.99 => 0.1)<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the EE receives from the IOP || --ee-sif0-cycle-scalar=0.1
|-
|}
=====IPU=====
<pre>The IPU is a hardware-accelerated MPEG1/MPEG2 decoder. It is primarily responsible for video playback, though it can also be used to decompress texture data in some cases.</pre>
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center; font-size:small;"
! Command !! Emulator Support !! Values !! Value Type !! Notes !! Usage
|-
| --idec-cycles-per-qwc || {{exclusive}} ||Default = 0 || {{4 Bytes}} || Multiply how many cycles IDEC command take per whole currently worked on QWC. || --idec-cycles-per-qwc=768
|-
|-
|}
|}
Line 780: Line 768:
|  || || GS features || || ||
|  || || GS features || || ||
|-
|-
| --gs-use-mipmap || {{Universal}} || Default = 0<br>Values = 0, 1 || {{binary}} || Enables mipmapping support. Can be used to fix graphics. Needs --gs-kernel-cl="mipmap" for full mipmapping support. If upscaling, however, --gs-kernel-cl-up="mipmap2x2" is also needed. It works best on War of the Monsters emulator, as can be seen in the Ratchet series' mipmapping issues responding only to this emu's mipmapping functionality.|| --gs-use-mipmap=1
| --gs-use-mipmap || {{Universal}} || 0, 1 || {{binary}} || Enables mipmapping support. Can be used to fix graphics. Needs --gs-kernel-cl="mipmap" for full mipmapping support. If upscaling, however, --gs-kernel-cl-up="mipmap2x2" is also needed. It works best on War of the Monsters emulator, as can be seen in the Ratchet series' mipmapping issues responding only to this emu's mipmapping functionality.|| --gs-use-mipmap=1
|-  
|-  
| --gs-use-deferred-l2h || {{Universal}} || 0, 1 || {{binary}} || Delay option for L2H (local to host, GS to EE). || --gs-use-deferred-l2h=1  
| --gs-use-deferred-l2h || {{Universal}} || 0, 1 || {{binary}} || Delay option for L2H (local to host, GS to EE). || --gs-use-deferred-l2h=1  
Line 845: Line 833:
| --l2h-2d-params || {{Universal}} || TRXREG,BITBLTBUF,height || {{string}} ||  || --l2h-2d-params=0x0000000800000001,0x000000003a0a2300,512,2
| --l2h-2d-params || {{Universal}} || TRXREG,BITBLTBUF,height || {{string}} ||  || --l2h-2d-params=0x0000000800000001,0x000000003a0a2300,512,2
|-
|-
| --gs-h2l-accurate-hash || {{Exclusive}} || 0, 1 || {{binary}} || Unknown. Used by Samurai Shodown Anthology. ||--gs-h2l-accurate-hash=1
| --gs-h2l-accurate-hash || {{Exclusive}} || 0, 1 || {{binary}} || ||--gs-h2l-accurate-hash=1
|-
|-
|-style="background-color:#9042f5"
|-style="background-color:#9042f5"
|  || || Aspect ratio || || ||
|  || || Aspect ratio || || ||
|-
|-
| --gs-scanout-offsetx || {{Universal}} || relative offset/ignored ||  {{4 Bytes}} || A zoom in setting in the x direction || --gs-scanout-offsetx=27
| --gs-scanout-offsetx || {{Universal}} || relative offset/ignored ||  || A zoom in setting in the x direction || --gs-scanout-offsetx=27
|-  
|-  
| --gs-scanout-offsety || {{Universal}} || relative offset/ignored || {{4 Bytes}} || A zoom in setting in the y direction || --gs-scanout-offsety=27
| --gs-scanout-offsety || {{Universal}} || relative offset/ignored || || A zoom in setting in the y direction || --gs-scanout-offsety=27
|-
|-
| --safe-area-min || {{Exclusive}} ||  area/float || {{float}} || An overscan setting, (range 0.9 to 1.0) any other values outside of that range will be rejected by the emulator || --safe-area-min=0.9
| --safe-area-min || {{Exclusive}} ||  area/float || {{float}} || An overscan setting, (range 0.9 to 1.0) any other values outside of that range will be rejected by the emulator || --safe-area-min=0.9
Line 859: Line 847:
|  || || Other || || ||
|  || || Other || || ||
|-
|-
| --framelimit-mode || {{Universal}} ||  slowest,slower,slow,<br>normal<br>fast,fastest,turbo || {{string}} || Standalone Framelimiter|| --framelimit-mode=fast
| --framelimit-mode || {{Universal}} ||  slowest,slower,slow,normal,fast,fastest,turbo || {{string}} || Standalone Framelimiter|| --framelimit-mode=fast
|-
|-
| --framelimiter || {{Universal}} ||  0, 1 || {{binary}} || Enable or disable Frame limiting || --framelimiter=1
| --framelimiter || {{Universal}} ||  0, 1 || {{binary}} || Enable or disable Frame limiting || --framelimiter=1
Line 934: Line 922:
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center; font-size:small;"
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center; font-size:small;"
! Command !! Values !! Notes !! Usage
! Command !! Values !! Notes !! Usage
|-
| --idec-cycles-per-qwc || Default = 0 || Multiply how many cycles IDEC command take per whole currently worked on QWC. || --idec-cycles-per-qwc=768
|-
|-
| --mfifo-manual-drain || 0.1/5.0 ||  ||--mfifo-manual-drain=0.30  
| --mfifo-manual-drain || 0.1/5.0 ||  ||--mfifo-manual-drain=0.30  
Line 969: Line 959:
| {{cellcolors|#0b9fb3|#000000}}VuAddSubHack ||{{cellcolors|#03fcb1|#000000}}--vu-hack-triace=1 || Required for every single game developed by TriAce
| {{cellcolors|#0b9fb3|#000000}}VuAddSubHack ||{{cellcolors|#03fcb1|#000000}}--vu-hack-triace=1 || Required for every single game developed by TriAce
|-
|-
| {{cellcolors|#0b9fb3|#000000}}vuClampMode: 2 ||{{cellcolors|#03fcb1|#000000}}<br>--vu1-no-clamping=0<br>--vu0-no-clamping=0<br>--cop2-no-clamping=0  || Works similar.
| {{cellcolors|#0b9fb3|#000000}}vuClampMode: 2 ||{{cellcolors|#03fcb1|#000000}}<br>--vu1-no-clamping=0<br>--vu0-no-clamping=0<br>--cop2-no-clamping=0  ||
|-
|-
| {{cellcolors|#0b9fb3|#000000}}vuClampMode: 3  || {{cellcolors|#03fcb1|#000000}}<br>--vu1-no-clamping=1<br>--vu0-no-clamping=1<br>--cop2-no-clamping=1<br>--vu-to-double=1 || Works similar.
| {{cellcolors|#0b9fb3|#000000}}vuClampMode: 3  || {{cellcolors|#03fcb1|#000000}}<br>--vu1-no-clamping=1<br>--vu0-no-clamping=1<br>--cop2-no-clamping=1<br>--vu-to-double=1 ||
|-
|-
| {{cellcolors|#0b9fb3|#000000}}eeClampMode: 2 || {{cellcolors|#03fcb1|#000000}}--fpu-to-double=0<br>--fpu-no-clamping=0<br> || Works similar.
| {{cellcolors|#0b9fb3|#000000}}eeClampMode: 2 || {{cellcolors|#03fcb1|#000000}}--fpu-to-double=0<br>--fpu-no-clamping=0<br> ||
|-
|-
| {{cellcolors|#0b9fb3|#000000}}eeClampMode: 3  || {{cellcolors|#03fcb1|#000000}}--fpu-to-double=1<br>--fpu-no-clamping=1<br> || Works similar.
| {{cellcolors|#0b9fb3|#000000}}eeClampMode: 3  || {{cellcolors|#03fcb1|#000000}}--fpu-to-double=1<br>--fpu-no-clamping=1<br> ||
|-
|-
| {{cellcolors|#0b9fb3|#000000}}eeRoundMode: || {{cellcolors|#03fcb1|#000000}}--fpu-accurate-muldiv=1<br>--fpu-accurate-addsub=1 ||
| {{cellcolors|#0b9fb3|#000000}}eeRoundMode: || {{cellcolors|#03fcb1|#000000}}--fpu-accurate-muldiv=1<br>--fpu-accurate-addsub=1 ||
Line 2,160: Line 2,150:
|  ra || 0x10000001F0  || f31  || 0x10000002AC ||  Rsvd31 ||    0x100000034C ||    ra || 0x102000007C  
|  ra || 0x10000001F0  || f31  || 0x10000002AC ||  Rsvd31 ||    0x100000034C ||    ra || 0x102000007C  
|-
|-
|  hi/hi1 (2x 64bit) || 0x1000000200  ||  fACC ||  0x10000002B0 || {{cellcolors|#7698FF|#000000}}COP0 additional registers  || ||    {{cellcolors|#8b9dc3|#000000}}pc || 0x102000008C     
|  hi/hi1 (2x 64bit) || 0x1000000200  ||  fACC ||  0x10000002B0 || {{cellcolors|#7698FF|#000000}}COP0 additional registers  || ||    pc || 0x102000008C     
|-style="background-color:#EEEFF2"
|-style="background-color:#EEEFF2"
|  lo/lo1 (2x 64bit) || 0x1000000210  || {{cellcolors|#7698FF|#000000}}FPU CTRL (FCR) ||  || real Pcr0 ||  0x1000000350 ||  hi ||0x1020000090 ??
|  lo/lo1 (2x 64bit) || 0x1000000210  || {{cellcolors|#7698FF|#000000}}FPU CTRL (FCR) ||  || real Pcr0 ||  0x1000000350 ||  hi ||0x1020000090 ??
Please note that all contributions to PS4 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS4 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)