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 (Ace Combat: Squadron Leader) UP0700-CUSA13419_00-ACECOMBAT7EARLY5 or JP0700-CUSA13271_00-ACECOMBAT7EARLY5 or HP0700-CUSA14109_00-ACECOMBAT7EARLY5 or EP0700-CUSA13351_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).
* ADK DAMASHII™ UP0576-CUSA03783_00-SLPS259060000001 or EP0576-CUSA04151_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 or EP9000-CUSA02279_00-SCES519100000001 "2016-01-12"
* Arc the Lad: Twilight of the Spirits UP9000-CUSA02205_00-SCUS972310000001 "2016-01-12"
* Art of Fighting Anthology UP0576-CUSA03754_00-SLUS214870000001 or EP0576-CUSA04152_00-SLES547900000001
* Art of Fighting Anthology UP0576-CUSA03754_00-SLUS214870000001
* Ape Escape 2 UP9000-CUSA02194_00-SCES508850000001 or EP9000-CUSA02269_00-SCES508850000001 2016-08-02
* Ape Escape 2 UP9000-CUSA02194_00-SCES508850000001 or EP9000-CUSA02269_00-SCES508850000001 2016-08-02
* Blood Omen: Legacy of Kain UP8489-CUSA49771_00-SLUS000270000000 (PS5: UP8489-PPSA24270_00-0499283180274839) 2024-11-19 PS4 12.00
* Blood Omen: Legacy of Kain UP8489-CUSA49771_00-SLUS000270000000 (PS5: UP8489-PPSA24270_00-0499283180274839) 2024-11-19 PS4 12.00
* Blood Omen 2: Legacy of Kain UP8489-CUSA49769_00-SLUS200240000000 (PS5: UP8489-PPSA24268_00-0200966777747783) 2024-11-19 PS4 12.00
* Blood Omen 2: Legacy of Kain UP8489-CUSA49769_00-SLUS200240000000 (PS5: UP8489-PPSA24268_00-0200966777747783) 2024-11-19 PS4 12.00
* Bully (Canis Canem Edit) UP1004-CUSA03507_00-SLUS212690000001 or EP1004-CUSA03551_00-SLES535610000001 "2016-03-22"
* Bully (Canis Canem Edit) UP1004-CUSA03507_00-SLUS212690000001 "2016-03-22"
* Dark Chronicle (Dark Cloud 2) UP9000-CUSA02037_00-SCUS972130000001 or EP9000-CUSA02075_00-SCES511900000001 "2016-01-19"
* Dark Chronicle (Dark Cloud 2) UP9000-CUSA02037_00-SCUS972130000001 "2016-01-19"
* Dark Cloud UP9000-CUSA01728_00-SCUS971110000001 or EP9000-CUSA01944_00-SCES502950000001 "2015-12-05"
* Dark Cloud UP9000-CUSA01728_00-SCUS971110000001 "2015-12-05"
* Destroy All Humans! (2005) (not to be confused with the remake EP4389-CUSA14910_00-DAH1REMAKEEU0000) UP4389-CUSA05232_00-SLUS209450000001 or EP4389-CUSA06353_00-SLES531960000001 2016-10-18
* Destroy All Humans! (2005) (not to be confused with the remake EP4389-CUSA14910_00-DAH1REMAKEEU0000) UP4389-CUSA05232_00-SLUS209450000001 2016-10-18
* Destroy All Humans! 2 (2006) UP4389-CUSA05233_00-SLUS214390000001 or EP4389-CUSA06355_00-SLES543840000001 2016-11-29
* Destroy All Humans! 2 (2006) UP4389-CUSA05233_00-SLUS214390000001 2016-11-29
* Eternal Ring UP1022-CUSA04654_00-SLUS200150000001 requires PS4 4.70
* 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 or EP0576-CUSA04153_00-SLUS217230000001 "2017-03-27"
* Fatal Fury Battle Archives Vol. 2 UP0576-CUSA03750_00-SLUS217230000001 "2017-03-27"
* Fu'un Super Combo UP0576-CUSA03784_00-SLPS257810000001 or EP0576-CUSA04154_00-SLPS257810000001 "2016-12-20"
* Forbidden Siren EP9000-CUSA02274_00-SCES519200000001 patch 1.01 requires PS4 3.10
* Fu'un Super Combo UP0576-CUSA03784_00-SLPS257810000001 "2016-12-20"
* Ghosthunter (English, Japanese) UP9000-CUSA47996_00-SLUS209930000000 (PS5: UP9000-PPSA21974_00-SLUS209930000000) 2024-06-18
* Ghosthunter (English, Japanese) UP9000-CUSA47996_00-SLUS209930000000 (PS5: UP9000-PPSA21974_00-SLUS209930000000) 2024-06-18
* Grand Theft Auto® 3 UP1004-CUSA03508_00-SLUS200620000001 or EP1004-CUSA03550_00-SLES503300000001 "2015-12-05"
* Grand Theft Auto III UP1004-CUSA03508_00-SLUS200620000001 "2015-12-05"
* Grand Theft Auto: Vice City UP1004-CUSA03509_00-SLUS205520000001 or EP1004-CUSA03546_00-SLES510610000001 "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 or EP9000-CUSA02270_00-SCES545350000001 "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"
* Jak and Daxter: The Precursor Legacy HP9000-CUSA08427_00-SCPS560030000001 patch 1.01 requires PS4 4.73
* Jak and Daxter: The Precursor Legacy HP9000-CUSA08427_00-SCPS560030000001 patch 1.01 requires PS4 4.73
Line 42: Line 43:
* Jak™ X EP9000-CUSA07992_00-SCUS974290000001 patch 1.02 requires PS4 5.01
* Jak™ X EP9000-CUSA07992_00-SCUS974290000001 patch 1.02 requires PS4 5.01
* Jak X: Combat Racing UP9000-CUSA07842_00-JPPS400000000001 2018-03-15
* Jak X: Combat Racing UP9000-CUSA07842_00-JPPS400000000001 2018-03-15
* Kinetica UP9000-CUSA01725_00-SCUS971320000001 or EP9000-CUSA01947_00-SCUS971320000001 "2016-05-17"
* Kinetica UP9000-CUSA01725_00-SCUS971320000001 "2016-05-17"
* Manhunt UP1004-CUSA03512_00-SLUS208270000001 or EP1004-CUSA03545_00-SLES520230000001 "2016-03-22"
* Manhunt UP1004-CUSA03512_00-SLUS208270000001 "2016-03-22"
* Max Payne UP1004-CUSA03513_00-SLUS202300000001 or EP1004-CUSA04488_00-SLES503260000001 "2016-04-22"
* Max Payne UP1004-CUSA03513_00-SLUS202300000001 "2016-04-22"
* Metal Slug Anthology UP0576-CUSA03749_00-SLUS215500000001 or EP0576-CUSA04156_00-SLES546770000001 "2016-07-05"
* Metal Slug Anthology UP0576-CUSA03749_00-SLUS215500000001 "2016-07-05"
* Mister Mosquito UP9000-CUSA48755_00-SLUS203750000000 (PS5: UP9000-PPSA22948_00-SLUS203750000000) 2024-09-17 patch 1.02 requires PS4 11.52 or PS5 9.60
* Mister Mosquito UP9000-CUSA48755_00-SLUS203750000000 (PS5: UP9000-PPSA22948_00-SLUS203750000000) 2024-09-17 patch 1.02 requires PS4 11.52 or PS5 9.60
* Okage: Shadow King UP9000-CUSA02199_00-SCUS971290000001 or EP9000-CUSA02282_00-SCUS971290000001, requires PS4 FW version 3.15, although it was compiled with PS4 SDK version 3.008.000, latest patch requires PS4 FW 4.05 "2016-03-22"
* Okage: Shadow King UP9000-CUSA02199_00-SCUS971290000001, requires PS4 FW version 3.15, although it was compiled with PS4 SDK version 3.008.000, latest patch requires PS4 FW 4.05 "2016-03-22"
* PaRappa The Rapper 2™ UP9000-CUSA01555_00-SCUS971670000001 or EP9000-CUSA01946_00-SCES504080000001 2015-12-15
* PaRappa The Rapper 2™ UP9000-CUSA01555_00-SCUS971670000001 2015-12-15
* Primal UP9000-CUSA02035_00-SCUS971420000001 or EP9000-CUSA02077_00-SCES511350000001 "2016-05-31"
* Primal UP9000-CUSA02035_00-SCUS971420000001 "2016-05-31"
* Psychonauts UP2154-CUSA03881_00-SLUS211200000001 or EP2154-CUSA04150_00-SLES538300000001 "2016-06-07"
* Psychonauts UP2154-CUSA03881_00-SLUS211200000001 or EP2154-CUSA04150_00-SLES538300000001 "2016-06-07"
* Puzzle Quest: Challenge of the Warlords UP0367-CUSA03571_00-SLUS216920000001 "2016-02-24"
* Puzzle Quest: Challenge of the Warlords UP0367-CUSA03571_00-SLUS216920000001 "2016-02-24"
* Red Dead Revolver UP1004-CUSA03517_00-SLUS205000000001 or EP1004-CUSA03542_00-SLES524780000001 "2016-10-11"
* Red Dead Revolver UP1004-CUSA03517_00-SLUS205000000001 "2016-10-11"
* Red Faction UP4389-CUSA06402_00-SLUS200730000001 or EP4389-CUSA06354_00-SLES502770000001 "2016-12-06"
* Red Faction UP4389-CUSA06402_00-SLUS200730000001 "2016-12-06"
* Red Faction II UP4389-CUSA06405_00-SLUS204420000001 or EP4389-CUSA06356_00-SLES511330000001
* Red Faction II UP4389-CUSA06405_00-SLUS204420000001
* Resident Evil Code: Veronica X UP0102-CUSA07104_00-SLUS201840000001 or EP0102-CUSA07343_00-SLES503060000001
* Resident Evil Code: Veronica X UP0102-CUSA07104_00-SLUS201840000001
* Rise of the Kasai UP9000-CUSA01730_00-SCUS974160000001 or EP9000-CUSA01948_00-SCUS974160000001 "2016-03-08"
* Rise of the Kasai UP9000-CUSA01730_00-SCUS974160000001 "2016-03-08"
* Rogue Galaxy UP9000-CUSA02195_00-SCUS974900000001 or EP9000-CUSA02271_00-SCES545520000001 "2015-12-05"
* Rogue Galaxy UP9000-CUSA02195_00-SCUS974900000001 "2015-12-05"
* Samurai Shodown VI UP0576-CUSA03787_00-SLUS216290000001 or EP0576-CUSA04158_00-SLES552920000001 "2016-11-22"
* Samurai Shodown VI UP0576-CUSA03787_00-SLUS216290000001 "2016-11-22"
* Siren (Forbidden Siren) UP9000-CUSA02198_00-SCUS973550000001 or EP9000-CUSA02274_00-SCES519200000001 (PS5: UP9000-PPSA22947_00-SCUS973550000000) PS4 patch 1.02 requires PS4 3.00 and 2024-10-15 PS5 patch 1.00 requires PS5 9.40 "2016-06-14"
* Siren UP9000-CUSA02198_00-SCUS973550000001 (PS5: UP9000-PPSA22947_00-SCUS973550000000) PS4 patch 1.02 requires PS4 3.00 and 2024-10-15 PS5 patch 1.00 requires PS5 9.40 "2016-06-14"
* SkyGunner UP9000-CUSA49210_00-SLUS203840000000 (PS5: UP9000-PPSA23535_00-SLUS203840000000) 2024-09-17 patch 1.03 requires PS4 11.52 or PS5 9.60
* SkyGunner UP9000-CUSA49210_00-SLUS203840000000 (PS5: UP9000-PPSA23535_00-SLUS203840000000) 2024-09-17 patch 1.03 requires PS4 11.52 or PS5 9.60
* Sly Raccoon (2002), Sly Cooper and the Thievius Raccoonus UP9000-CUSA47431_00-SCUS971980000000 (PS5: UP9000-PPSA21300_00-SCUS971980000000) 2024-06-11 PS4 11.50
* Sly Raccoon (2002), Sly Cooper and the Thievius Raccoonus UP9000-CUSA47431_00-SCUS971980000000 (PS5: UP9000-PPSA21300_00-SCUS971980000000) 2024-06-11 PS4 11.50
* Star Ocean Till The End Of Time UP0082-CUSA04778_00-SLUS204880000001 or JP0082-CUSA04842_00-SLPM654380000001 or EP0082-CUSA06379_00-SLES820280000001
* Star Ocean Till The End Of Time UP0082-CUSA04778_00-SLUS204880000001
* Star Wars Bounty Hunter UP1082-CUSA03472_00-SLUS204200000001 or EP1006-CUSA03493_00-SLES508310000001 2016-01-15
* Star Wars Bounty Hunter UP1082-CUSA03472_00-SLUS204200000001 or EP1006-CUSA03493_00-SLES508310000001 2016-01-15
* Star Wars Racer Revenge UP1082-CUSA03474_00-SLUS202680000001 or EP1006-CUSA03492_00-SLES503660000001 2016-01-15
* Star Wars Racer Revenge UP1082-CUSA03474_00-SLUS202680000001 2016-01-15
* STAR WARS: Jedi Starfighter UP1082-CUSA03473_00-SLUS202930000001 or EP1006-CUSA03494_00-SLES503710000001 2016-01-15
* STAR WARS: Jedi Starfighter UP1082-CUSA03473_00-SLUS202930000001 or EP1006-CUSA03494_00-SLES503710000001 2016-01-15
* STAR WARS The Clone Wars UP1082-CUSA48010_00-SLUS205100000000 (PS5: UP1082-PPSA21985_00-SLUS205100000000 or UP1082-PPSA21985_00-0384550355606536) 2024-06-11 PS4 11.50
* STAR WARS The Clone Wars UP1082-CUSA48010_00-SLUS205100000000 (PS5: UP1082-PPSA21985_00-SLUS205100000000 or UP1082-PPSA21985_00-0384550355606536) 2024-06-11 PS4 11.50
* Summoner PS2 Emulation (2000) UP4389-CUSA48889_00-SLUS200740000000 (PS5: UP4389-PPSA23124_00-SLUS200740000000 or UP4389-PPSA23124_00-EMUPS2SUMMONER00) 2024-07-16 PS4 patch 1.01 requires PS4 11.50, PS5 patch 1.02 requires PS5 9.40
* Summoner PS2 Emulation (2000) UP4389-CUSA48889_00-SLUS200740000000 (PS5: UP4389-PPSA23124_00-SLUS200740000000 or UP4389-PPSA23124_00-EMUPS2SUMMONER00) 2024-07-16 PS4 patch 1.01 requires PS4 11.50, PS5 patch 1.02 requires PS5 9.40
* The King of Fighters Collection: The Orochi Saga UP0576-CUSA03753_00-SLUS215540000001 or EP0576-CUSA04164_00-SLUS215540000001 2018-06-26
* The King of Fighters Collection: The Orochi Saga UP0576-CUSA03753_00-SLUS215540000001 2018-06-26
* The King of Fighters '98 Ultimate Match UP0576-CUSA03751_00-SLUS218160000001 or EP0576-CUSA04159_00-SLES552800000001
* The King of Fighters '98 Ultimate Match UP0576-CUSA03751_00-SLUS218160000001
* The King of Fighters 2000 UP0576-CUSA03748_00-SLUS208340000001 or UP4002-CUSA03748_00-SLUS208340000001 or EP0576-CUSA04160_00-SLUS208340000001 "2016-05-03"
* The King of Fighters 2000 UP0576-CUSA03748_00-SLUS208340000001 or UP4002-CUSA03748_00-SLUS208340000001 "2016-05-03"
* The Mark of Kri UP9000-CUSA01729_00-SCUS971400000001 or EP9000-CUSA01945_00-SCES511640000001 "2015-12-05"
* The Mark of Kri UP9000-CUSA01729_00-SCUS971400000001 "2015-12-05"
* The Warriors UP1004-CUSA03515_00-SLUS212150000001 or EP1004-CUSA03548_00-SLES534430000001 "2016-07-05"
* The Warriors UP1004-CUSA03515_00-SLUS212150000001 "2016-07-05"
* TimeSplitters EP4062-CUSA49387_00-SLUS200900000000 (for PS5: EP4062-PPSA23799_00-SLUS200900000000 or EP4062-PPSA23799_00-TIMESPLITTERSONE) 2024-08-20 PS4 patch 1.01 requires PS4 11.52, PS5 patch 1.00 requires PS5 9.40
* TimeSplitters EP4062-CUSA49387_00-SLUS200900000000 (for PS5: EP4062-PPSA23799_00-SLUS200900000000 or EP4062-PPSA23799_00-TIMESPLITTERSONE) 2024-08-20 PS4 patch 1.01 requires PS4 11.52, PS5 patch 1.00 requires PS5 9.40
* TimeSplitters 2 EP4062-CUSA49392_00-SLUS203140000000 (for PS5: EP4062-PPSA23801_00-SLUS203140000000 or EP4062-PPSA23801_00-TIMESPLITTERSTWO) 2024-08-20 PS4 patch 1.01 requires PS4 11.52, PS5 patch 1.00 requires PS5 9.40
* TimeSplitters 2 EP4062-CUSA49392_00-SLUS203140000000 (for PS5: EP4062-PPSA23801_00-SLUS203140000000 or EP4062-PPSA23801_00-TIMESPLITTERSTWO) 2024-08-20 PS4 patch 1.01 requires PS4 11.52, PS5 patch 1.00 requires PS5 9.40
* TimeSplitters: Future Perfect EP4062-CUSA49435_00-SLUS211480000000 (for PS5: EP4062-PPSA23847_00-SLUS211480000000 or EP4062-PPSA23847_00-TIMESPLITTERS3FP) 2024-08-20 PS4 patch 1.01 requires PS4 11.52, PS5 patch 1.00 requires PS5 9.40
* TimeSplitters: Future Perfect EP4062-CUSA49435_00-SLUS211480000000 (for PS5: EP4062-PPSA23847_00-SLUS211480000000 or EP4062-PPSA23847_00-TIMESPLITTERS3FP) 2024-08-20 PS4 patch 1.01 requires PS4 11.52, PS5 patch 1.00 requires PS5 9.40
* Tomb Raider: Legend UP8489-CUSA48389_00-SLUS212030000000 (PS5: UP8489-PPSA22453_00-SLUS212030000000 or UP8489-PPSA22453_00-0217126708396262) 2024-06-11 PS4 11.50
* Tomb Raider: Legend UP8489-CUSA48389_00-SLUS212030000000 (PS5: UP8489-PPSA22453_00-SLUS212030000000 or UP8489-PPSA22453_00-0217126708396262) 2024-06-11 PS4 11.50
* Twisted Metal: Black UP9000-CUSA02036_00-SCUS971010000001 or EP9000-CUSA02076_00-SCES503600000001 "2015-12-05"
* Twisted Metal: Black UP9000-CUSA02036_00-SCUS971010000001 "2015-12-05"
* War of the Monsters™ UP9000-CUSA01554_00-SCUS971970000001 or EP9000-CUSA01981_00-SCES512240000001 2015-12-05
* War of the Monsters™ UP9000-CUSA01554_00-SCUS971970000001 2015-12-05
* Wild Arms™ 3 UP9000-CUSA02197_00-SCUS972030000001 or EP9000-CUSA02273_00-SCUS972030000001 2016-05-17
* Wild Arms™ 3 UP9000-CUSA02197_00-SCUS972030000001 2016-05-17


== PS2 games available on PS4 Bluray Disc ==
== PS2 games available on PS4 Bluray Disc ==
Line 131: Line 132:
= Emulators =
= Emulators =


Every PS2 emulator is programmed differently. Sometimes choosing the right emulator is the only way to fix a game. Emulators are not provided pre-installed in the PS4 OS, but instead they have to be unpacked from an official PS2 CLASSICS PKG file signed by Sony. This list includes the typical usage of those emulators. Emus with apis below 1.5 are considered old, Emus with apis above 1.5 and below 2.0 are considered in-between, and 2.0 and above are modern.
Every PS2 emulator is programmed differently. Sometimes choosing the right emulator is the only way to fix a game. Emulators are not provided pre-installed in the PS4 OS, but instead they have to be unpacked from an official PS2 CLASSICS PKG file signed by Sony. This list includes the typical usage of those emulators.


{| 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;"
Line 147: Line 148:
| Art of Fighting Anthology || Similar to RECVX. It was successful in fixing "'''Coraline'''." Sometimes called "AOFA" || 2.0 ||
| Art of Fighting Anthology || Similar to RECVX. It was successful in fixing "'''Coraline'''." Sometimes called "AOFA" || 2.0 ||
|-
|-
| Resident Evil - Code: Veronica || Fixes games like '''Jackie chan Adventures, SpongeBob SquarePants: Creature From the Krust Krab, Pac-man World 3, Yu-Gi-Oh: Capsule monsters, SpongeBob's Atlantis SquarePantis''' freezing at a black/splash screen. Additionally, games requiring '''OPL's mode 2''' tend to have a higher chance of being playable under it. Often referred to as "RECVX" || 1.7 || '''Fatal Fury,''' '''Redfaction,''' '''AOFA.'''
| Resident Evil - Code: Veronica || Fixes games like '''Jackie chan Adventures, SpongeBob SquarePants: Creature From the Krust Krab, Pac-man World 3, Yu-Gi-Oh: Capsule monsters, SpongeBob's Atlantis SquarePantis''' freezing at a black/splash screen. Additionally, it fixes many games requiring '''OPL's mode 2'''. Often referred to as "RECVX" || 1.7 || '''Fatal Fury,''' '''Redfaction,''' '''AOFA.'''
|-
|-
| Fatal Fury Battle Archives: Volume 2 || Similarly to RECVX, it is often used to fix frozen games. ||  ||  
| Fatal Fury Battle Archives: Volume 2 || Similarly to RECVX, it is often used to fix frozen games. ||  ||  
Line 153: Line 154:
|  || 2016 || ||
|  || 2016 || ||
|-
|-
| Red Faction || It is prominently used to fix VU1/VIF1 sensitive games. It was used to fix '''Tony Hawk games''' suddenly crashing, as well as MTVU sensitive games such as '''Star Wars Battlefront II'''.|| 1.6 || '''Max payne'''  
| Red Faction || It is prominently used to fix VU1 sensitive games. It was used to fix '''Tony Hawk games''' suddenly crashing, as well as MTVU sensitive games such as '''Star Wars Battlefront II'''.|| 1.6 || '''Max payne'''  
|-
|-
| 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'''', and Veggietales crashing, as well as Bratz The Movie from freezing. || 0.1 ||  
| Destroy All Humans! || Fixed '''Tenchu: Fatal Shadows'''' crashing. || 0.1 ||  
|-
|-
| Destroy All Humans! 2 ||  || 0.7 ||  
| Destroy All Humans! 2 ||  || 0.7 ||  
Line 168: 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 301: Line 302:
| --mute-streaming-audio || all,none,main,bgm || || --mute-streaming-audio=all
| --mute-streaming-audio || all,none,main,bgm || || --mute-streaming-audio=all
|-
|-
|-style="background-color:#D7EF54"
|  || Controllers || ||
|-
| --ds4-deadzone-adjust ||  ||  ||
|-
| --ds4-diagonal-adjust ||  ||  ||
|-
| --host-pad-loses-focus ||  ||  ||  --host-pad-loses-focus=1
|-
| --host-gamepads || 0, 1 ||  || --host-gamepads=1
|-
| --pad-record ||  0, 1  ||  Enables logging pad info in emulog ||
|-
| --pad-analog-to-digital || 0, 1 || Eternel ring emu uses the value 0 || --pad-analog-to-digital=0
|-
| --mtap1 || Disabled, Always, ByHost || Multitap switch. The values are correct but the multitap only works in certain games. || --mtap1=always
|-
| --mtap2 || Disabled, Always, ByHost || Multitap switch. Some games require multitap to be selected only on second port (1, 2-a, 2-b, 2-c layout). To achieve that, we need to disable the first mtap. In some cases, the emulator can be flawed in how it handles multi-tap when it involves "--mtap2". All functions for 2A, 2B, 2C, 2D must be redirected to ports on multi-tap 1 by using memory patches. || --mtap2=always
|}
|}


Line 321: 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 331: Line 350:
0x4 beq zero,v1,0x0 <-- Advancelock cannot work here
0x4 beq zero,v1,0x0 <-- Advancelock cannot work here
0x8 nop <-- Advancelock cannot work here
0x8 nop <-- Advancelock cannot work here
0x10 nop <-- Advancelock can work here on both old and new emulators.</pre> Mfifodrain is still unknown, but only works on modern emus such as Jakv2. ||--ee-hook=0x0025A9F2,AdvanceClock,,500 <br>--ee-hook=0x0019F0AD,FastForwardClock
0x10 nop <-- Advancelock can work here on both old and new emulators.</pre> Mfifodrain is still unknown. ||--ee-hook=0x0025A9F2,AdvanceClock,,500 <br>--ee-hook=0x0019F0AD,FastForwardClock
|-
|-
|-style="background-color:#D7EF54"
|-style="background-color:#D7EF54"
|  ||  || || Game fixes || ||
|  ||  || || Game fixes || ||
|-
|-
| --ee-jit-pagefault-threshold  || {{Exclusive}} || 0-254 || {{1 Byte}} ||Ignore JIT pagefaults, usually caused by data placed right after code. JIT try to recompile it, and obviously hit some bad opcodes. This command reduces the occurrence of crashes the higher it is. || --ee-jit-pagefault-threshold=40
| --ee-jit-pagefault-threshold  || || 0-254 || {{1 Byte}} ||Ignore JIT pagefaults, usually caused by data placed right after code. JIT try to recompile it, and obviously hit some bad opcodes. This command reduces the occurrence of crashes the higher it is. || --ee-jit-pagefault-threshold=40
|-
|-
| --ee-regalloc-scalar  || {{Universal}} || 0,none,ReadOnly,WriteOnly,RW || {{string}}|| Register allocation setting. Setting it to 0 may prevent crashes. ||  
| --ee-regalloc-scalar  || || 0,none,ReadOnly,WriteOnly,RW || {{string}}|| Register allocation setting. Setting it to 0 may prevent crashes. ||  
|-
|-
| --ee-block-validation  || {{Universal}} || PageProt, PageProtection, Hash, Full, none || {{String}} || way of validating that block been modified, and require recompilation. [[https://github.com/PCSX2/pcsx2/blob/4db6b287cda817345f7ed4268a8a68f9fda76f26/pcsx2/Memory.cpp#L869| Some info about PageProt way]] || --ee-block-validation=None
| --ee-block-validation  || || PageProt, PageProtection, Hash, Full, none || {{String}} || way of validating that block been modified, and require recompilation. [[https://github.com/PCSX2/pcsx2/blob/4db6b287cda817345f7ed4268a8a68f9fda76f26/pcsx2/Memory.cpp#L869| Some info about PageProt way]] || --ee-block-validation=None
|-
|-
| --ee-shorthash-len  || {{Exclusive}} || inst_count/integer || || Length of shorthash in instruction/opcode count. Require --ee-block-validation=Hash ||  
| --ee-shorthash-len  || || inst_count/integer || || Length of shorthash in instruction/opcode count. Require --ee-block-validation=Hash ||  
|-
|-
| --ee-const-folding  || {{Universal}} || None,Gpr,Fpu,All || {{String}} || EE constant folding. "All" seems to be the default option. || --ee-const-folding=none  
| --ee-const-folding  || || None,Gpr,Fpu,All || {{String}} || EE constant folding. "All" seems to be the default option. || --ee-const-folding=none  
|-
|-
| --ee-ignore-segfault  || {{Exclusive}} || none, read, write, readwrite || {{String}} || Ignore segmentation fault. Ignore rw from/to unmapped memory, known in pcsx2 as TLB miss (load.store) || --ee-ignore-segfault=readwrite
| --ee-ignore-segfault  || || none, read, write, readwrite || {{String}} || Ignore segmentation fault. Ignore rw from/to unmapped memory, known in pcsx2 as TLB miss (load.store) || --ee-ignore-segfault=readwrite
|-
|-
| --ee-native-function  || {{Exclusive}} || memset, memcpy, strlen, strcmp, strcasecmp, litodp, dptoli, floatdidf, fptoui, fptodp, dptofp, fabs, fabsf, ieee754_atan2f, ieee754_asinf, ieee754_acosf, ieee754_sinf, ieee754_cosf, ieee754_sqrtf, asinf, acosf, sinf, cosf, sqrtf. || || Hook mips function with HLE x64 native version. Much faster, but tricky to keep correct timings on ps2 VM. || --ee-native-function=memcpy,0x11e328
| --ee-native-function  || || memset, memcpy, strlen, strcmp, strcasecmp, litodp, dptoli, floatdidf, fptoui, fptodp, dptofp, fabs, fabsf, ieee754_atan2f, ieee754_asinf, ieee754_acosf, ieee754_sinf, ieee754_cosf, ieee754_sqrtf, asinf, acosf, sinf, cosf, sqrtf. || || Hook mips function with HLE x64 native version. Much faster, but tricky to keep correct timings on ps2 VM. || --ee-native-function=memcpy,0x11e328
|-style="background-color:#FFAA00"
|-style="background-color:#FFAA00"
|  ||  || || Other || ||
|  ||  || || Other || ||
|-
|-
| --ee-jit-disasm  || {{Universal}} || 0 or 1 for mips and 2 for x86 || {{Semi-Binary}} || Emotion engine Just in Time disassembler mode (Likely a debug log option) || --ee-jit-disasm=1
| --ee-jit-disasm  || || 0 or 1 for mips and 2 for x86 || {{Semi-Binary}} || Emotion engine Just in Time disassembler mode (Likely a debug log option) || --ee-jit-disasm=1
|-
|-
| --ee-ignore-break  || {{Exclusive}} || 0, 1 || {{Binary}}|| Turns a BREAK instruction into a NOP Instruction. ||  
| --ee-ignore-break  || || 0, 1 || {{Binary}}|| Turns a BREAK instruction into a NOP Instruction. ||  
|-
|-
| --ee-break-as-nop  || {{Exclusive}} || 0, 1 ||{{Binary}} || Turns a BREAK instruction into a NOP Instruction. || --ee-break-as-nop=1
| --ee-break-as-nop  || || 0, 1 ||{{Binary}} || Turns a BREAK instruction into a NOP Instruction. || --ee-break-as-nop=1
|-
|-
| --ee-jit-opt-debug  || {{Exclusive}} || 0, 1 || {{Binary}}|| ||
| --ee-jit-opt-debug  || || 0, 1 || {{Binary}}|| ||
|-
|-
| --ee-pc-coherency  || {{Universal}} || 0, 1 || {{Binary}}|| Flush PC register to memory on every mips opcode. Result in more accurate EE PC reg reads. ||  
| --ee-pc-coherency  || || 0, 1 || {{Binary}}|| Flush PC register to memory on every mips opcode. Result in more accurate EE PC reg reads. ||  
|-
|-
| --ee-insn-flush-pc  || {{Exclusive}} || 0, 1 || {{Binary}}|| Flush PC register to memory on every mips opcode. Result in more accurate EE PC reg reads. ||
| --ee-insn-flush-pc  || || 0, 1 || {{Binary}}|| Flush PC register to memory on every mips opcode. Result in more accurate EE PC reg reads. ||
|-  
|-  
| --ee-inst-marking  || {{Universal}} || 0,1? || || ||
| --ee-inst-marking  || || 0,1? || || ||
|-
|-
| --ee-insn-marking  || {{Exclusive}} || 0,1? || || ||
| --ee-insn-marking  || || 0,1? || || ||
|-
|-
| --ee-kernel-hle  || {{Universal}} ||  0, 1 || {{Binary}}|| High-level emulation kernel. Apply HLE patches (used in mast1c0re part 2 Vulnerability 2). Apply EE kernel patches which run previously prepared x64 code instead of recompiling real code part. ||  
| --ee-kernel-hle  || ||  0, 1 || {{Binary}}|| High-level emulation kernel. Apply HLE patches (used in mast1c0re part 2 Vulnerability 2). Apply EE kernel patches which run previously prepared x64 code instead of recompiling real code part. ||  
|-
|-
| --ee-injection-kernel  || {{Exclusive}} || 0, 1 || {{Binary}}|| Just like --ee-kernel-hle, except using a different name. ||
| --ee-injection-kernel  || || 0, 1 || {{Binary}}|| Just like --ee-kernel-hle, except using a different name. ||
|-
|-
| --ee-injection-title  || {{Exclusive}} || 0, 1 || {{Binary}}|| Apply HLE patches (used in mast1c0re part 2 Vulnerability 2). Apply per title patches which run previously prepared x64 code instead of recompiling real code part. ||
| --ee-injection-title  || || 0, 1 || {{Binary}}|| Apply HLE patches (used in mast1c0re part 2 Vulnerability 2). Apply per title patches which run previously prepared x64 code instead of recompiling real code part. ||
|-
|-
| --ee-validate-kernel  || {{Universal}} || 0, 1 ||{{Binary}} || ||
| --ee-validate-kernel  || || 0, 1 ||{{Binary}} || ||
|-
|-
| --ee-regalloc-simd  || {{Universal}} || readwrite, writeonly, readonly || {{String}} || register allocation setting ||  
| --ee-regalloc-simd  || || readwrite, writeonly, readonly || {{String}} || register allocation setting ||  
|-
|-
| --ee-regalloc-preserve-scalar  || {{Universal}}||  LoadOnly, LO, StoreOnly, SO, LoadStore,  LS || {{String}} || EE JIT Scalar/Int Regalloc Mode || --ee-regalloc-preserve-scalar=LoadStore
| --ee-regalloc-preserve-scalar  || ||  LoadOnly, LO, StoreOnly, SO, LoadStore,  LS || {{String}} || EE JIT Scalar/Int Regalloc Mode || --ee-regalloc-preserve-scalar=LoadStore
|-
|-
| --ee-regalloc-preserve-simd  || {{Universal}} || ReadOnly, RO, WriteOnly WO, RW || {{String}} || EE JIT SIMD/XMM Regalloc Mode || --ee-regalloc-preserve-simd=RW
| --ee-regalloc-preserve-simd  || || ReadOnly, RO, WriteOnly WO, RW || {{String}} || EE JIT SIMD/XMM Regalloc Mode || --ee-regalloc-preserve-simd=RW
|-
|-
| --ee-static-block-links  || {{Universal}} || options Type,Type,... [Branch,Branches,JAL,COP2,All] || ||  || --ee-static-block-links=JAL,COP2
| --ee-static-block-links  || || options Type,Type,... [Branch,Branches,JAL,COP2,All] || ||  || --ee-static-block-links=JAL,COP2
|-
|-
| --vtune-ee  || {{Universal}} || Unknown || || Unknown. It likely requires command-specific string values because decimals crash the emulator. ||
| --vtune-ee  || || Unknown || || Unknown. It likely requires command-specific string values because decimals crash the emulator. ||
|-
|-
| --ee-live32  || {{Universal}} || 0,1? || || ||
| --ee-live32  || || 0,1? || || ||
|-
|-
| --ee-cache-breaks-block  || {{Universal}} || 0,1 ||{{Binary}} || End recompiler block on r5900 cache opcode. ||
| --ee-cache-breaks-block  || || 0,1 ||{{Binary}} || End recompiler block on r5900 cache opcode. ||
|-
|-
| --ee-evt-check-full  || {{Universal}} || 0, 1 ||{{Binary}} || Perform more accurate EE event check ||  
| --ee-evt-check-full  || || 0, 1 ||{{Binary}} || Perform more accurate EE event check ||  
|-
|-
| --ee-peephole  || {{Exclusive}} || 0, 1? || || ||
| --ee-peephole  || || 0, 1? || || ||
|-
|-
| --ee-load-rewrites  || {{Universal}} || 0,1? || || ||
| --ee-load-rewrites  || || 0,1? || || ||
|-
|-
| --ee-store-rewrites  || {{Universal}} || 0,1? || || ||
| --ee-store-rewrites  || || 0,1? || || ||
|-
|-
| --ee-precompile-trace  || {{Exclusive}} || || || ||
| --ee-precompile-trace  || || || || ||
|-
|-
| --ee-penalize-short-blocks  || {{Exclusive}} || 0, 1 ||{{Binary}} || Add cycles to short recompiled blocks? ||  
| --ee-penalize-short-blocks  || || 0, 1 ||{{Binary}} || Add cycles to short recompiled blocks? ||  
|-
|-
| --ee-mem-check-eob  || {{Universal}}  || || || EE memory check end of block ||  
| --ee-mem-check-eob  || || || || EE memory check end of block ||  
|-
|-
| --ee-insn-callmark  || {{Exclusive}} || || || ||
| --ee-insn-callmark  || || || || ||
|-  
|-  
| --ee-inline-limit-full  || {{Exclusive}} || Default = 48 || {{4 Bytes}}|| Unknown.||
| --ee-inline-limit-full  || || Default = 48 || {{4 Bytes}}|| Unknown.||
|-
|-
| --ee-inline-limit-partial  || {{Exclusive}} || Default = 14 || {{4 Bytes}}|| Unknown.||
| --ee-inline-limit-partial  || || Default = 14 || {{4 Bytes}}|| Unknown.||
|-
|-
| --ee-stlf-cycle-threshold  || {{Exclusive}} || Default = 0<br> ||{{4 Bytes}} ||Unknown.||  
| --ee-stlf-cycle-threshold  || || Default = 0<br> ||{{4 Bytes}} ||Unknown.||  
|-
|-
| --detect-idle-ee  || {{Universal}} || 0, 1 ||  {{Binary}} || || --detect-idle-ee=1
| --detect-idle-ee  || || 0, 1 ||  {{Binary}} || || --detect-idle-ee=1
|-
|-
|}
|}
Line 427: 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-mul-fast=1 should always be used with it unless when debugging) || --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
|-  
|-  
| --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 467: Line 486:
|  || || || Speedhacks || ||
|  || || || Speedhacks || ||
|-
|-
| --cop2-opt-flags || {{Universal}} || 0, 1 ,2 || {{Semi-Binary}} || Optimize flags upon recompilation (1 is safe, 2 update sticky, and mac flag on every status flag update) setting it to 0 or 2 can in some cases improve FPU accuracy. [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L280 More Info] || --cop2-opt-flags=1
| --cop2-opt-flags || || 0, 1 ,2 || {{Semi-Binary}} || Optimize flags upon recompilation (1 is safe, 2 update sticky, and mac flag on every status flag update) setting it to 0 can in some cases improve FPU accuracy. [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L280 More Info] || --cop2-opt-flags=1
|-  
|-  
| --cop2-opt-vf00 || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || Seems to be a hacky way of optimization through the vf00 register. || --cop2-opt-vf00=1
| --cop2-opt-vf00 || || 0, 1, 2 || {{Semi-Binary}} || Seems to be a hacky way of optimization through the vf00 register. || --cop2-opt-vf00=1
|-  
|-  
| --cop2-const-prop || {{Universal}} || 0, 1 || {{Binary}} || Disables or enables constant propagation. Can Be Used as speedhack for COP2 hungry games when set to 1 [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L312 More info] || --cop2-const-prop=1
| --cop2-const-prop || || 0, 1 || {{Binary}} || Disables or enables constant propagation. Can Be Used as speedhack for COP2 hungry games when set to 1 [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L312 More info] || --cop2-const-prop=1
|-  
|-  
| --cop2-di-bits || {{Universal}} || 0, 1 || {{Binary}} || 0 to skip setting invalid, and div by Zero flags in status register, and therefore improve performance. Can be used as a speedhack to skip costly calculations. || --cop2-di-bits=0
| --cop2-di-bits || || 0, 1 || {{Binary}} || 0 to skip setting invalid, and div by Zero flags in status register, and therefore improve performance. Can be used as a speedhack to skip costly calculations. || --cop2-di-bits=0
|-style="background-color:#D7EF54"
|-style="background-color:#D7EF54"
|  || || || Game fixes || ||
|  || || || Game fixes || ||
|-
|-
| --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 || ||  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 || || 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 || || 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|| || 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 || || 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-addsub|| ||  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|| || 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 || || 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 || || 0, 1 || {{Binary}} || instant Q, no stalling on VWAITQ, or instances of Q. Crashes some games when enabled. ||
|-  
|-  
| --cop2-inst-p || {{Universal}} || 0, 1 || {{Binary}} || instant P, no stalling on VWAITP, or instances of P. ||
| --cop2-inst-p || || 0, 1 || {{Binary}} || instant P, no stalling on VWAITP, or instances of P. ||
|-  
|-  
| --cop2-use-rcp || {{Universal}} || 0, 1 || {{Binary}} || Enables SSE RCP. Disabled by default ||
| --cop2-use-rcp || || 0, 1 || {{Binary}} || Enables SSE RCP. Disabled by default ||
|-  
|-  
| --cop2-use-rsqrt ||  {{Universal}} || 0, 1 || {{Binary}} || Enables SSE RSQRT || --cop2-use-rsqrt=0
| --cop2-use-rsqrt||  || 0, 1 || {{Binary}} || Enables SSE RSQRT || --cop2-use-rsqrt=0
|-  
|-  
| --cop2-clamp-operands ||  {{Universal}} || 0, 1 || {{Binary}} || Affects the COP2's clamping behavior|| --cop2-clamp-operands=1
| --cop2-clamp-operands||  || 0, 1 || {{Binary}} || Affects the COP2's clamping behavior|| --cop2-clamp-operands=1
|-  
|-  
| --cop2-clamp-results || {{Universal}} || 0, 1 || {{Binary}} || Affects the COP2's clamping behavior  || --cop2-clamp-results=1
| --cop2-clamp-results || || 0, 1 || {{Binary}} || Affects the COP2's clamping behavior  || --cop2-clamp-results=1
|-  
|-  
|}
|}
Line 521: Line 540:
| || || || Graphical fixes  || ||
| || || || Graphical fixes  || ||
|-
|-
| --vu-xgkick-delay  || {{Universal}} || Default = 1<br>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 532: 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 541: Line 560:
|  || ||  || Speedhacks || ||
|  || ||  || Speedhacks || ||
|-
|-
| --vu-opt-sf-check  || {{Exclusive}} || 0, 1 || {{binary}} || Updates status flags only on blocks which will read them. Known in pcsx2 as mVU flag hack. Won't work with most emulators, but will work on old emus such as War of the Monsters, GTA 3, and Arc Twilight of the Spirits™ || --vu-opt-sf-check=1
| --vu-opt-sf-check  || {{Exclusive}} || 0, 1 || {{binary}} || Updates status flags only on blocks which will read them. Known in pcsx2 as mVU flag hack. Won't work with most emulators, but will work on Arc Twilight of the Spirits™ || --vu-opt-sf-check=1
|-   
|-   
| --vu-opt-jr-caching  || {{Exclusive}} || 0, 1 || {{binary}} || Optimize Jump Register caching. (vi15). Won't work with most emulators but will work on old emus such as War of the Monsters, GTA 3, and Arc Twilight of the Spirits™ || --vu-opt-jr-caching=1
| --vu-opt-jr-caching  || {{Exclusive}} || 0, 1 || {{binary}} || Optimize Jump Register caching. (vi15). Won't work with most emulators but will work on Arc Twilight of the Spirits™ || --vu-opt-jr-caching=1
|-style="background-color:#FEA15C"
|-style="background-color:#FEA15C"
|  ||  || || Other || ||
|  ||  || || Other || ||
Line 557: Line 576:
| --vtune-vu  || {{Universal}} || ? || ? ||
| --vtune-vu  || {{Universal}} || ? || ? ||
|-  
|-  
| --vu-jit-disasm  || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || ? || --vu-jit-disasm=1
| --vu-jit-disasm  || {{Universal}} || 0, 1, 2 || ? || || --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 572: Line 591:
|  || || Speedhacks || ||  ||
|  || || Speedhacks || ||  ||
|-
|-
| --vu1-mpg-cycles  || {{Universal}} || 1 - 65535 || {{2 Bytes}}||  Set initial speed for VU1 Micro-programs. 100 is the default value. Generally, if VU1 requirements were a bottleneck, increasing it will result in better performance while possibly breaking graphics and lowering internal frame rates, and decreasing it might result in the opposite. There is no one-size-fits-all solution, as lowering or raising could yield differing results. || --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 580: 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}} || Default value = 1<br> 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
|-
|-
| --vu1-opt-flags || {{Universal}} || 0, 1, 2 ||  {{Semi-Binary}} || Optimize flags upon recompilation (1 is safe, 2 update sticky, and mac flag on every status flag update) Seems to be set to 1 at default. [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L280 More Info] || --vu1-opt-flags=0
| --vu1-opt-flags || {{Universal}} || 0, 1, 2 ||  {{Semi-Binary}} || Optimize flags upon recompilation (1 is safe, 2 update sticky, and mac flag on every status flag update) [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L280 More Info] || --vu1-opt-flags=0
|-  
|-  
| --vu1-opt-vf00 || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || Seems to be a hacky way of optimization through the vf00 register. || --vu1-opt-vf00=2
| --vu1-opt-vf00 || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || Seems to be a hacky way of optimization through the vf00 register. || --vu1-opt-vf00=2
|-  
|-  
| --vu1-jr-cache-policy || {{Exclusive}} || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting. Setting it into newprog has been proven to fix some crashes, and reduce stuttering. [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu1-jr-cache-policy=newprog
| --vu1-jr-cache-policy || {{Exclusive}} || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting. Setting it into newprog has been proven to fix some crashes [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu1-jr-cache-policy=newprog
|-
|-
| --vu1-jalr-cache-policy|| {{Exclusive}} || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting. Setting it into newprog has been proven to fix some crashes, and reduce stuttering. [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu1-jalr-cache-policy=newprog
| --vu1-jalr-cache-policy|| {{Exclusive}} || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting. Setting it into newprog has been proven to fix some crashes [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu1-jalr-cache-policy=newprog
|-  
|-  
|-style="background-color:#D7EF54"
|-style="background-color:#D7EF54"
Line 597: 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=0x000,0x800
| --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=0x0,0x800
| --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}} || Replace some VU1 instructions with pre-made optimized instructions? || --vu1-injection=1
| --vu1-injection || {{Universal}} || 0, 1 || {{binary}} || unknown || --vu1-injection=1
|-
|-
| --vu1-native-patch || {{Exclusive}} || 0, 1 || {{binary}} || Use native patches from recompiler, not compatible with Jak emus. Sony uses it for their official release of Primal || --vu1-native-patch=1
| --vu1-native-patch || {{Exclusive}} || 0, 1 || {{binary}} || Use native patches from recompiler, not compatible with Jak emus. Sony uses it for their official release of Primal || --vu1-native-patch=1
Line 637: 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 645: Line 664:
'-' or '+' Changes the specified preceding or succeeding 2 bytes of VU0 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 at -15 (Jakv2). Setting it to --vu0-mpg-cycles=1280,-15 would, for example, set ee-cycle-scalar to 5. These numbers are in HEX. Infinite amounts of '-' and '+' instances seem to be supported.</pre>
'-' or '+' Changes the specified preceding or succeeding 2 bytes of VU0 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 at -15 (Jakv2). Setting it to --vu0-mpg-cycles=1280,-15 would, for example, set ee-cycle-scalar to 5. These numbers are in HEX. Infinite amounts of '-' and '+' instances seem to be supported.</pre>
|-
|-
| --vu0-di-bits || {{Universal}} || 0, 1 || {{binary}} || 0 to skip setting invalid, and Div by zero flags in status register. Can be used as speedhack as it skips costly calculations, but at the same time can cause issues like broken geometry, and weird physics behavior. Depending per game.|| --vu0-di-bits=0
| --vu0-di-bits || || 0, 1 || {{binary}} || 0 to skip setting invalid, and Div by zero flags in status register. Can be used as speedhack as it skips costly calculations, but at the same time can cause issues like broken geometry, and weird physics behavior. Depending per game.|| --vu0-di-bits=0
|-
|-
| --vu0-const-prop || {{Universal}} || 0, 1 || {{binary}} || Constant propagation, can Be used as speedhack for VU0 hungry games when set to 1 [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L312 More info] || --vu0-const-prop=1
| --vu0-const-prop || || 0, 1 || {{binary}} || Constant propagation, can Be used as speedhack for VU0 hungry games when set to 1 [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L312 More info] || --vu0-const-prop=1
|-  
|-  
| --vu0-opt-vf00 || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || Seems to be a hacky way of optimization through the vf00 register. || --vu0-opt-vf00=1
| --vu0-opt-vf00 || || 0, 1, 2 || {{Semi-Binary}} || Seems to be a hacky way of optimization through the vf00 register. || --vu0-opt-vf00=1
|-  
|-  
| --vu0-opt-flags || {{Universal}} || 0, 1, 2 || {{Semi-Binary}} || Optimize flags upon recompilation (1 is safe, 2 update sticky, and mac flag on every status flag update) [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L280 More Info] || --vu0-opt-flags=1
| --vu0-opt-flags || || 0, 1, 2 || {{Semi-Binary}} || Optimize flags upon recompilation (1 is safe, 2 update sticky, and mac flag on every status flag update) [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L280 More Info] || --vu0-opt-flags=1
|-  
|-  
| --vu0-jr-cache-policy || {{Exclusive}} || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu0-jr-cache-policy=sameprog
| --vu0-jr-cache-policy|| || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu0-jr-cache-policy=sameprog
|-
|-
| --vu0-jalr-cache-policy || {{Exclusive}} || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu0-jalr-cache-policy=sameprog
| --vu0-jalr-cache-policy|| || newprog, sameprog, auto, new, same || {{string}} || PCSX2 uses newprog as the default setting [https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L319 Info] || --vu0-jalr-cache-policy=sameprog
|-style="background-color:#D7EF54"
|-style="background-color:#D7EF54"
|  || || 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||  || 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|| || 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=0x0,0x200
| --vu0-accurate-addsub-range|| || 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=0x0,0x200
| --vu0-mul0fix-range || || 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"
|  || || Other || || ||
|  || || Other || || ||
|-
|-
| --vu0-injection || {{Exclusive}} || 0, 1 || {{binary}} || Replace some VU0 instructions with pre-made optimized instructions? || --vu0-injection=1
| --vu0-injection || || 0, 1 || {{binary}} || Unknown usage. || --vu0-injection=1
|-
|-
| --vu0-inst-q || {{Universal}} || 0, 1  || {{binary}} || instant Q, no stalling on WAITQ, or instances of Q  || --vu0-inst-q=1
| --vu0-inst-q || || 0, 1  || {{binary}} || instant Q, no stalling on WAITQ, or instances of Q  || --vu0-inst-q=1
|-  
|-  
| --vu0-inst-p || {{Universal}} || 0, 1 || {{binary}} || instant P, no stalling on WAITP, or instances of P|| --vu0-inst-p=1
| --vu0-inst-p || || 0, 1 || {{binary}} || instant P, no stalling on WAITP, or instances of P|| --vu0-inst-p=1
|-  
|-  
| --vu0-use-rcp || {{Universal}} || 0, 1 || {{binary}} || Use SSE/AVX RCP. Speedhack. Not sure why it is even available for VU0. Disabled by default || --vu0-use-rcp=1
| --vu0-use-rcp || || 0, 1 || {{binary}} || Use SSE/AVX RCP. Speedhack. Not sure why it is even available for VU0. Disabled by default || --vu0-use-rcp=1
|-  
|-  
| --vu0-use-rsqrt || {{Universal}} || 0, 1 || {{binary}} || Use SSE/AVX rsqrt instead of doing sqrt and then div. Speedhack, rather unsafe to use on VU0. || --vu0-use-rsqrt=1
| --vu0-use-rsqrt || || 0, 1 || {{binary}} || Use SSE/AVX rsqrt instead of doing sqrt and then div. Speedhack, rather unsafe to use on VU0. || --vu0-use-rsqrt=1
|-  
|-  
| --vu0-clamp-operands || {{Universal}} || 0, 1 ||  {{binary}} || Clamp operands before mathematical operation. || --vu0-clamp-operands=1
| --vu0-clamp-operands|| || 0, 1 ||  {{binary}} || Clamp operands before mathematical operation. || --vu0-clamp-operands=1
|-  
|-  
| --vu0-clamp-results || {{Universal}} || 0, 1 || {{binary}} || Clamp result after mathematical operation. || --vu0-clamp-results=1
| --vu0-clamp-results || || 0, 1 || {{binary}} || Clamp result after mathematical operation. || --vu0-clamp-results=1
|-  
|-  
|}
|}
Line 707: Line 726:
| --vif1-ignore-cmd-ints || {{Exclusive}} || 0, 1 ||  {{Binary}} ||  Set to 1 to ignore command interrupt bit. ([https://psi-rockin.github.io/ps2tek/#vifcommands info] , explanation of int bit is right before command list). Can in some cases fix games that freeze while showing the same frame if set to 1. Games likes "Men in Black II - Alien Escape" and "Test Drive Unlimited" Will always need it. || --vif1-ignore-cmd-ints=1
| --vif1-ignore-cmd-ints || {{Exclusive}} || 0, 1 ||  {{Binary}} ||  Set to 1 to ignore command interrupt bit. ([https://psi-rockin.github.io/ps2tek/#vifcommands info] , explanation of int bit is right before command list). Can in some cases fix games that freeze while showing the same frame if set to 1. Games likes "Men in Black II - Alien Escape" and "Test Drive Unlimited" Will always need it. || --vif1-ignore-cmd-ints=1
|-
|-
| --vif1-instant-xfer || {{Universal}} ||  1 = Instant VIF1<br>0 = Delayed VIF1 || {{Binary}} || Changes VIF1 timing. 0 slows its timing and is the compatible option for most games, while 1 speeds up its timing, and being more compatible with a small fraction of games. It can be used to fix graphical glitches or potentially prevent games from freezing and crashing. || --vif1-instant-xfer=0
| --vif1-instant-xfer || {{Universal}} ||  1 = Instant VIF1<br>0 = Delayed VIF1 || {{Binary}} || Changes VIF1 timing. 0 slows its timing and is the compatible option for most games, while 1 speeds up its timing, and being more compatible with a small fraction of games. It can be used to fix graphical glitches or potentially prevent games from freezing. || --vif1-instant-xfer=0
|}
|}


Line 719: Line 738:
|  ||  || || || SIF1 (IOP) ||
|  ||  || || || SIF1 (IOP) ||
|-
|-
| --iop-sif1-cycle-scalar || {{Exclusive}} || Accelerate SIF cycles: (0.99 => 0.1)<br>Default = 1.0<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the IOP receives from the EE || --iop-sif1-cycle-scalar=0.1
| --iop-sif1-cycle-scalar || {{Exclusive}} || Accelerate SIF cycles: (0.99 => 0.1)<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the IOP receives from the EE || --iop-sif1-cycle-scalar=0.1
|-
|-
| --ee-sif1-cycle-scalar || {{Exclusive}} ||Accelerate SIF cycles: (0.99 => 0.1)<br>Default = 5.0<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the EE sends to the IOP || --ee-sif1-cycle-scalar=0.1
| --ee-sif1-cycle-scalar || {{Exclusive}} ||Accelerate SIF cycles: (0.99 => 0.1)<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the EE sends to the IOP || --ee-sif1-cycle-scalar=0.1
|-style="background-color:#99ddff"
|-style="background-color:#99ddff"
|  ||  || || || SIF0 (EE) ||
|  ||  || || || SIF0 (EE) ||
|-
|-
| --iop-sif0-cycle-scalar || {{Exclusive}} || Accelerate SIF cycles: (0.99 => 0.1)<br>Default = 1.0<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the IOP sends to the EE || --iop-sif0-cycle-scalar=0.1
| --iop-sif0-cycle-scalar || {{Exclusive}} || Accelerate SIF cycles: (0.99 => 0.1)<br>Decelerate SIF cycles: (1.1 => ∞ )|| {{Float}}|| Controls the speed at which the IOP sends to the EE || --iop-sif0-cycle-scalar=0.1
|-
| --ee-sif0-cycle-scalar || {{Exclusive}} || Accelerate SIF cycles: (0.99 => 0.1)<br>Default = 5.0<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
| --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
|-
|-
|}
|}
Line 751: Line 759:
|  || || Speedhacks || || ||
|  || || Speedhacks || || ||
|-
|-
| --gs-optimize-30fps || {{Universal}} || 0, 1 || {{binary}} || Speedhack for GS hungry games. || --gs-optimize-30fps=1
| --gs-optimize-30fps || || 0, 1 || {{binary}} || Speedhack for GS hungry games. || --gs-optimize-30fps=1
|-  
|-  
| --gs-adaptive-frameskip || {{Exclusive}} || 0, 1 || {{binary}} || Speedhack. Skips frames when the gs demands more resources than there are available. doesn't work on all emulators.  It does however, work on jak emulators || --gs-adaptive-frameskip=1
| --gs-adaptive-frameskip || || 0, 1 || {{binary}} || Speedhack. Skips frames when the gs demands more resources than there are available. doesn't work on all emulators.  It does however, work on jak emulators || --gs-adaptive-frameskip=1
|-
|-
| --gs-h2l-list-opt || {{Exclusive}} || 0, 1 || {{binary}}  || Setting it to 1 improves GS performance||--gs-h2l-list-opt=1
| --gs-h2l-list-opt || || 0, 1 || {{binary}}  || Setting it to 1 improves GS performance||--gs-h2l-list-opt=1
|-
|-
|-style="background-color:#cbddfb"
|-style="background-color:#cbddfb"
|  || || 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 || || 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 || || 0, 1 || {{binary}} || Delay option for L2H (local to host, GS to EE). || --gs-use-deferred-l2h=1  
|-
|-
| --gs-use-clut-merge || {{Universal}} || 0, 1 ||  {{binary}} || Enabling CLUT merging helps improve how the emulator processes textures that use indexed color palettes. It ensures more accurate emulation of the PS2’s color handling. It sometimes restores missing graphical elements, and fix texture flickering (prominently flickering shadows or UI elements).  It prevents Spyro's shadow from flickering in Enter the Dragonfly. Enabling it is the accurate, albeit slow option. || --gs-use-clut-merge=1
| --gs-use-clut-merge || {{Universal}} || 0, 1 ||  {{binary}} || Enabling CLUT merging helps improve how the emulator processes textures that use indexed color palettes. It ensures more accurate emulation of the PS2’s color handling. It sometimes restores missing graphical elements, and fix texture flickering (prominently flickering shadows or UI elements).  It prevents Spyro's shadow from flickering in Enter the Dragonfly. Enabling it is the accurate, albeit slow option. || --gs-use-clut-merge=1
|-  
|-  
| --gs-flush-ad-xyz || {{Exclusive}} ||  always, safe, safeZwrite, off, 0 || {{string}} || Force a primitive flush when a framebuffer is also an input texture. This fixes some processing effects, but it can sometimes be heavy on the GS in terms of performance. GTA: SA, and Jak 3 use this command. || --gs-flush-ad-xyz=safe
| --gs-flush-ad-xyz || ||  always, safe, safeZwrite, off, 0 || {{string}} || Force a primitive flush when a framebuffer is also an input texture. This fixes some processing effects, but it can sometimes be heavy on the GS in terms of performance. GTA: SA, and Jak 3 use this command. || --gs-flush-ad-xyz=safe
|-
|-
| --gs-force-bilinear || {{Universal}} || 0, 1 || {{binary}} || Forces bilinear filtering, can fix ghosting problems in some cases, and corrects positioning between pixels. Recommended for most games except the ones using 2D images, as it could possibly break games that rely on nearest filtering. || --gs-force-bilinear=1
| --gs-force-bilinear || || 0, 1 || {{binary}} || Forces bilinear filtering, can fix ghosting problems in some cases. Not recommended for games that use 2D images, as it could possibly break games that rely on nearest filtering.|| --gs-force-bilinear=1
|-
|-
|-style="background-color:#D7EF54"
|-style="background-color:#D7EF54"
|  || || Gs settings / Behaviour || || ||
|  || || Gs settings / Behaviour || || ||
|-
|-
| --gs-uprender || {{Universal}} || none,2x2 ||  {{string}} || Internal resolution upscaler. || --gs-uprender=2x2
| --gs-uprender || || none,2x2 ||  {{string}} || Internal resolution upscaler. || --gs-uprender=2x2
|-  
|-  
| --gs-upscale || {{Universal}} || none, gpu, edgesmooth, smooth, motion, motionvec, motionvector, point || {{string}} ||  Upscaling type Selector || --gs-upscale=EdgeSmooth
| --gs-upscale || || none, gpu, edgesmooth, smooth, motion, motionvec, motionvector, point || {{string}} ||  Upscaling type Selector || --gs-upscale=EdgeSmooth
|-  
|-  
| --gs-kernel-cl-up || {{Variable}} || "DarkCloud2" "fantavision" "h2lpool2x2", "OptRightTri", "clutmerge2x2", "mipmap2x2", "up2x2simple", "up2x2skipinterp", "up2x2tc", "up2x2", default ||  {{string}} ||  Kernel Variant Color lookup Upscaler (?), mipmap and clutmerge and h2l need to be enabled before their options become usable|| --gs-kernel-cl-up="clutmerge2x2"
| --gs-kernel-cl-up || || "DarkCloud2" "fantavision" "h2lpool2x2", "OptRightTri", "clutmerge2x2", "mipmap2x2", "up2x2simple", "up2x2skipinterp", "up2x2tc", "up2x2", default ||  {{string}} ||  Kernel Variant Color lookup Upscaler (?), mipmap and clutmerge and h2l need to be enabled before their options become usable|| --gs-kernel-cl-up="clutmerge2x2"
|-  
|-  
| --gs-override-small-tri-area || {{Exclusive}} || 0, 1 || {{binary}} || This option is designed to modify how the emulator handles or renders small triangles that fall below a certain area threshold. Enabling this option could resolve graphical problems such as missing, flickering, or incorrectly rendered small details, and could potentially restore missing text in some games. || --gs-override-small-tri-area=1
| --gs-override-small-tri-area || || 0, 1 || {{binary}} || This option is designed to modify how the emulator handles or renders small triangles that fall below a certain area threshold. Enabling this option could resolve graphical problems such as missing, flickering, or incorrectly rendered small details, and could potentially restore missing text in some games. || --gs-override-small-tri-area=1
|-  
|-  
| --gs-dirty-page-policy || {{Exclusive}} || 0, 1 || {{binary}} || Unknown. Used by Star Wars: Jedi Starfighter || --gs-dirty-page-policy=1
| --gs-dirty-page-policy || || 0, 1 || {{binary}} || Unknown. Used by Star Wars: Jedi Starfighter || --gs-dirty-page-policy=1
|-  
|-  
| --gs-ignore-dirty-page-border || {{Exclusive}} || 0, 1 || {{binary}} || Unknown. Used by Samurai Shodown Anthology ||--gs-ignore-dirty-page-border=1
| --gs-ignore-dirty-page-border || || 0, 1 || {{binary}} || Unknown. Used by Samurai Shodown Anthology ||--gs-ignore-dirty-page-border=1
|-  
|-  
| --gs-ignore-rect-correction || {{Exclusive}} || 0, 1 || {{binary}} || Setting it to 1 is known to fix flickering textures and graphical glitches in far distances. || --gs-ignore-rect-correction=1
| --gs-ignore-rect-correction || || 0, 1 || {{binary}} || Setting it to 1 is known to fix flickering textures and graphical glitches in far distances. || --gs-ignore-rect-correction=1
|-
|-
| --gs-opt-frbuff-switch || {{Exclusive}} || 0, 1 ||  {{binary}} ||  Unknown. Used by Everybody's Tennis/Hot Shots Tennis || --gs-opt-frbuff-switch=0
| --gs-opt-frbuff-switch || || 0, 1 ||  {{binary}} ||  Unknown. Used by Everybody's Tennis/Hot Shots Tennis || --gs-opt-frbuff-switch=0
|-
|-
| --gs-kernel-cl || {{Variable}} || h2lpool, clutmerge, mipmap, DarkCloud2, fantavision. || {{string}} || Kernel Variant Color lookup(?). Options included here can be upssed if --gs-kernel-cl-up were used along with it. Mipmap and clutmerge and h2l need to be enabled before their options become usable. || --gs-kernel-cl="clutmerge"
| --gs-kernel-cl || || h2lpool, clutmerge, mipmap, DarkCloud2, fantavision. || {{string}} || Kernel Variant Color lookup(?). Options included here can be upssed if --gs-kernel-cl-up were used along with it. Mipmap and clutmerge and h2l need to be enabled before their options become usable. || --gs-kernel-cl="clutmerge"
|-  
|-  
| --force-frame-blend || {{Exclusive}} || 0, 1 || {{binary}} || Enables blend (Deinterlacing?). Should be used to fix games with shaking screens. || --force-frame-blend=1
| --force-frame-blend || {{Exclusive}} || 0, 1 || {{binary}} || Enables blend (Deinterlacing?). Should be used to fix games with shaking screens. || --force-frame-blend=1
Line 801: Line 809:
| --gs-skip-dirty-flush-on-mipmap || {{Universal}} || 0, 1 || {{binary}} ||  Skip flushing textures marked as dirty from cache when enabled. It does, however, require mipmap to be enabled first. || --gs-skip-dirty-flush-on-mipmap=1
| --gs-skip-dirty-flush-on-mipmap || {{Universal}} || 0, 1 || {{binary}} ||  Skip flushing textures marked as dirty from cache when enabled. It does, however, require mipmap to be enabled first. || --gs-skip-dirty-flush-on-mipmap=1
|-  
|-  
| --gs-packed15-fmv-opt || {{Universal}} || 0, 1 || {{binary}} || Unknown. This option likely controls whether the emulator optimizes or processes FMVs that use the 15-bit packed color format. Used by Ape Escape 2|| --gs-packed15-fmv-opt=1
| --gs-packed15-fmv-opt || || 0, 1 || {{binary}} || Unknown. This option likely controls whether the emulator optimizes or processes FMVs that use the 15-bit packed color format. Used by Ape Escape 2|| --gs-packed15-fmv-opt=1
|-  
|-  
| --gs-fieldswap-delay || {{Universal}} || Default = 0<br>Highest = 254 || {{1 Byte}} || Wait longer than usual to change field. In essence, it blurs/sharpens image. ||
| --gs-fieldswap-delay || || Default = 0<br>Highest = 254 || {{1 Byte}} || Wait longer than usual to change field. In essence, it blurs/sharpens image. ||
|-   
|-   
| --gs-uv-shift-pointsampling || {{Exclusive}} || 0, 1 || {{binary}} || It is used on games like manhunt. || --gs-uv-shift-pointsampling=1
| --gs-uv-shift-pointsampling || {{Exclusive}} || 0, 1 || {{binary}} || Can be used on games like manhunt that have issues with [https://github.com/PCSX2/pcsx2/issues/257#issuecomment-1140338680 UV light rendering] || --gs-uv-shift-pointsampling=1
|-
|-
| --gs-render-tile-threshold || {{Exclusive}} || Lowest = 0<br>Default = 4294967295 || {{4 Bytes}}  || Unknown. Used by Psychonauts|| --gs-render-tile-threshold=300000
| --gs-render-tile-threshold || || Lowest = 0<br>Default = 4294967295 || {{4 Bytes}}  || Unknown. Used by Psychonauts|| --gs-render-tile-threshold=300000
|-
|-
| --threaded-gs || {{Universal}} || 0, 1 || {{binary}} || Multi-threaded-gs ? || --threaded-gs=1
| --threaded-gs || || 0, 1 || {{binary}} || Multi-threaded-gs ? || --threaded-gs=1
|-
|-
| --gs-aspect-ratio || {{Universal}} || aspect/float (default=0.81) ||  {{float}} || Can fix too-zoomed in games and vice versa. || --gs-aspect-ratio=0.65
| --gs-aspect-ratio || || aspect/float (default=0.81) ||  {{float}} || || --gs-aspect-ratio=0.65
|-
|-
| --gs-frontend-opt-mode || {{Exclusive}} || 0, 1, 2 || {{Semi-Binary}} || GS optimization mode? Unknown effect. Used on the Jak series. || --gs-frontend-opt-mode=1
| --gs-frontend-opt-mode || || 0, 1, 2 || {{Semi-Binary}} || GS optimization mode? Unknown effect. Used on JakX || --gs-frontend-opt-mode=1
|-  
|-  
| --gs-motion-factor || {{Universal}} || 25, 50 ||  {{1 Byte}} || Unknown. Used by Wild ARMS 3|| --gs-motion-factor=25
| --gs-motion-factor || || 25, 50 ||  {{1 Byte}} || Unknown. Used by Wild ARMS 3|| --gs-motion-factor=25
|-
|-
| --gs-scanout-delay || {{Universal}} || 0, 200 ||  {{binary}} || || --gs-scanout-delay=200
| --gs-scanout-delay || || 0, 200 ||  {{binary}} || || --gs-scanout-delay=200
|-
|-
| --gs-check-trans-rejection || {{Universal}} || 0, 1  ||  {{binary}} || Check transfer rejection? Unknown. Used by Grand Theft Auto: Vice City || --gs-check-trans-rejection=1
| --gs-check-trans-rejection || || 0, 1  ||  {{binary}} || Check transfer rejection? Unknown. Used by Grand Theft Auto: Vice City || --gs-check-trans-rejection=1
|-  
|-  
| --gs-check-trans-rejection68 || {{Exclusive}} || 0, 1 || {{binary}} || Unknown. Used by Star Wars: Jedi Starfighter || --gs-check-trans-rejection68=1
| --gs-check-trans-rejection68 || || 0, 1 || {{binary}} || Unknown. Used by Star Wars: Jedi Starfighter || --gs-check-trans-rejection68=1
|-
|-
| --l2h-2d-params || {{Universal}} || TRXREG,BITBLTBUF,height || {{string}} ||  || --l2h-2d-params=0x0000000800000001,0x000000003a0a2300,512,2
| --l2h-2d-params || || 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 || || 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 || || 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 || || 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 || ||  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
|-
|-
|-style="background-color:#FEA15C"
|-style="background-color:#FEA15C"
|  || || Other || || ||
|  || || Other || || ||
|-
|-
| --framelimit-mode || {{Universal}} ||  slowest,slower,slow,<br>normal<br>fast,fastest,turbo || {{string}} || Standalone Framelimiter|| --framelimit-mode=fast
| --framelimit-mode || ||  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 || ||  0, 1 || {{binary}} || Enable or disable Frame limiting || --framelimiter=1
|-
|-
| --framelimit-fps || {{Universal}} ||  FPS/float || {{float}} || framelimiter || --framelimit-fps=0.8
| --framelimit-fps || ||  FPS/float || || framelimiter || --framelimit-fps=0.8
|-
|-
| --gs-hdr-support || {{Exclusive}} || 0, 1? || {{binary}} ||  ? ||  
| --gs-hdr-support || || 0, 1? || {{binary}} ||  ? ||  
|}
|}


====Input/Output====
==== IOP ====
=====IOP=====


<pre>The emulated I/O Processor (IOP) settings. Commands here are rarely useful, as very few games will require them. The IOP controls the emulated DEV9, SPU2, USB, Memory cards, CDVD, Firewire, along with other input/output devices</pre>
<pre>The emulated I/O Processor (IOP) settings. Commands here are rarely useful, as very few games will require them. The IOP controls the emulated DEV9, SPU2, USB, Memory cards, CDVD, Firewire, along with other input/output devices</pre>
Line 864: Line 871:
| --iop-tight-slice-count || {{Exclusive}} || Fastest = 0<br>Default = 8<br>Slowest=65534 || {{4 Bytes}} || Seems to slow down the iop the higher the value. Can be used to fix CDVD timing issues. || --iop-tight-slice-count=12
| --iop-tight-slice-count || {{Exclusive}} || Fastest = 0<br>Default = 8<br>Slowest=65534 || {{4 Bytes}} || Seems to slow down the iop the higher the value. Can be used to fix CDVD timing issues. || --iop-tight-slice-count=12
|-
|-
| --iop-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) || IOP native hook, Sony uses it on their official release of Red Dead Revolver. It helps fix timing issues. It runs the specified functionality each time a selected IOP offset is reached. FastForwardClock and AdvanceClock help fix core sync issues. It is believed that AdvanceClock stalls the IOP for a specified amount of cycles, while FastForwardClock behaves similarly. 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 (on newer emus, only the end of a branch works). Mfifodrain is still unknown, but only works on modern emus such as Jakv2. || --iop-hook=0x0086ac,FastForwardClock
| --iop-hook || {{Variable}} || AdvanceClock<br>FastForwardClock<br>Mfifodrain || 4 Byte hex (offset),string,4 Byte hex (opcode),4 Byte Decimals (advanceclock value) || IOP native hook, Sony uses it on their official release of Red Dead Revolver. It helps fix timing issues. It runs the specified functionality each time a selected IOP offset is reached. FastForwardClock and AdvanceClock help fix core sync issues. It is believed that AdvanceClock stalls the IOP for a specified amount of cycles, while FastForwardClock behaves similarly. 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 (on newer emus, only the end of a branch works). Mfifodrain is still unknown. || --iop-hook=0x0086ac,FastForwardClock
|-
|-
| --iop-block-validation || {{Universal}} || IsC, ShortHash, Hash || {{string}} || Way of validating that block been modified, and require recompilation. Other Possible values include PageProt, None, PageProtection || --iop-block-validation=IsC
| --iop-block-validation || {{Universal}} || IsC, ShortHash, Hash || {{string}} || Way of validating that block been modified, and require recompilation. Other Possible values include PageProt, None, PageProtection || --iop-block-validation=IsC
Line 871: Line 878:
|  || || Other || || ||  
|  || || Other || || ||  
|-
|-
| --iop-validate-kernel || {{Universal}} || 0, 1 || {{binary}} ||  ||  
| --iop-validate-kernel || || 0, 1 || {{binary}} ||  ||  
|-
|-
| --iop-shorthash-len || {{Universal}} || Default = 8 ||  ||  Length of shorthash in instruction/opcode count. Require --iop-block-validation=ShortHash ||  
| --iop-shorthash-len || || Default = 8 ||  ||  Length of shorthash in instruction/opcode count. Require --iop-block-validation=ShortHash ||  
|-
|-
| --iop-pc-coherency || {{Universal}} || 0, 1||  {{binary}} ||  ||  
| --iop-pc-coherency || || 0, 1||  {{binary}} ||  ||  
|-
|-
| --iop-inst-marking || {{Universal}} || 0, 1? ||  || ||  
| --iop-inst-marking || || 0, 1? ||  || ||  
|-
|-
| --detect-idle-iop || {{Universal}} || 0, 1  || {{binary}}|| Enabled by default. || --detect-idle-iop=0
| --detect-idle-iop || || 0, 1  || {{binary}}|| Enabled by default. || --detect-idle-iop=0
|-
|-
| --iop-jit-disasm || {{Universal}} || 0, 1, 2?|| || ||   
| --iop-jit-disasm || || || || ||   
|-
|-
| --iop-evt-check-full || {{Universal}} || 0, 1 ?|| {{binary}} || ||  
| --iop-evt-check-full || || 0, 1 ?|| {{binary}} || ||  
|-
|-
|}
|}


=====CDVD=====
====CDVD====


<pre>The emulated CDVD settings. These commands help games with timing issues.</pre>
<pre>The emulated CDVD settings. These commands help games with timing issues.</pre>
Line 895: Line 902:
|  || || General commands || || ||
|  || || General commands || || ||
|-
|-
| --max-disc-num || {{Universal}} || 1-5  || {{1 Byte}} || numbers of discs in package (maximum=5)  || --max-disc-num=1
| --max-disc-num || || 1-5  || {{1 Byte}} || numbers of discs in package (maximum=5)  || --max-disc-num=1
|-
|-
| --boot-disc-id || {{Universal}} || 1-5  ||  {{1 Byte}} || sets boot disc for multi-disc pkg || --boot-disc-id=0
| --boot-disc-id || || 1-5  ||  {{1 Byte}} || sets boot disc for multi-disc pkg || --boot-disc-id=0
|-
|-
| --switch-disc-reset || {{Exclusive}}||  1 = Enables resetting the game upon disc swap,<br>0 = Disables resetting the game upon disc swap|| {{Binary}} || 0 Can be used to prevent resetting the game when switching multiple discs. Useful for games like Samurai Warriors 2 that include an import data feature. Sadly this command isn't supported by many emulators, but jakv2 is confirmed to support it || --switch-disc-reset=1
| --switch-disc-reset || {{Exclusive}}||  1 = Enables resetting the game upon disc swap, 0 = Disables resetting the game upon disc swap|| {{Binary}} || 0 Can be used to prevent resetting the game when switching multiple discs. Useful for games like Samurai Warriors 2 that include an import data feature. Sadly this command isn't supported by many emulators, but jakv2 is confirmed to support it || --switch-disc-reset=1
|-style="background-color:#46a4e8"
|-style="background-color:#46a4e8"
|  || || Timing || || ||
|  || || Timing || || ||
|-
|-
| --cdvd-sector-read-cycles || {{Universal}} || 0 = Fastest<br>32000 = Default<br>80000 = Slowest|| {{4 Bytes}} || Set DVD reading speed. Higher values are slower, lower values are faster. Kinetica uses 40000, Psychonauts 4000, Red Dead Revolver 5000, Rise of Kasai 31000. Some games require moderate speed, too slow or too fast could cause audio problems.|| --cdvd-sector-read-cycles=0.1
| --cdvd-sector-read-cycles || || 0 = Fastest<br>32000 = Default<br>80000 = Slowest|| {{4 Bytes}} || Set DVD reading speed. Higher values are slower, lower values are faster. Kinetica uses 40000, Psychonauts 4000, Red Dead Revolver 5000, Rise of Kasai 31000. Some games require moderate speed, too slow or too fast could cause audio problems.|| --cdvd-sector-read-cycles=0.1
|-
| --cdvd-sector-seek-cycles || {{Exclusive}} || 0 = Fastest and default<br>80000 = Slowest || {{4 Bytes}} || Set the speed at which the emulated CDVD spins. Higher values are slower, lower values are faster. Fixes boot-up sometimes. More info here [https://github.com/PCSX2/pcsx2/pull/3877]. || --cdvd-sector-seek-cycles=0
|-
| --verbose-cdvd-reads || {{Universal}} || 0, 1 || {{Binary}} || Significantly helps games with CDVD timing issues when set to 1. || --verbose-cdvd-reads=0
|-
|}
 
=====Pad=====
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center; font-size:small;"
! Command !! Emulator Support !! Values  !! Value Type !! Notes !! Usage
|-
| --ds4-deadzone-adjust || {{universal}} || ||  ||  ||
|-
| --ds4-diagonal-adjust ||  {{universal}} ||  || || ||
|-
| --host-pad-loses-focus ||  {{universal}} ||  ||  || || --host-pad-loses-focus=1
|-
| --host-gamepads || {{universal}} || 0, 1 || {{binary}} ||  || --host-gamepads=1
|-
| --pad-record || {{universal}} ||  0, 1  || {{binary}} || Enables logging pad info in emulog ||
|-
|-
| --pad-analog-to-digital || {{exclusive}} || 0, 1 || {{binary}} || Eternel ring emu uses the value 0 || --pad-analog-to-digital=0
| --cdvd-sector-seek-cycles || || 0 = Fastest and default<br>80000 = Slowest || {{4 Bytes}} || Set the speed at which the emulated CDVD spins. Higher values are slower, lower values are faster. Fixes boot-up sometimes. More info here [https://github.com/PCSX2/pcsx2/pull/3877]. || --cdvd-sector-seek-cycles=0  
|-
|-
| --mtap1 || {{universal}} || Disabled, Always, ByHost || {{string}} || Multitap switch. The values are correct but the multitap only works in certain games. || --mtap1=always
| --verbose-cdvd-reads || || 0, 1 || {{Binary}} || Significantly helps games with CDVD timing issues when set to 1. || --verbose-cdvd-reads=0
|-
| --mtap2 || {{universal}} || Disabled, Always, ByHost || {{string}} || Multitap switch. Some games require multitap to be selected only on second port (1, 2-a, 2-b, 2-c layout). To achieve that, we need to disable the first mtap. In some cases, the emulator can be flawed in how it handles multi-tap when it involves "--mtap2". All functions for 2A, 2B, 2C, 2D must be redirected to ports on multi-tap 1 by using memory patches. || --mtap2=always
|}
 
=====Memory Card=====
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center; font-size:small;"
! Command !! Emulator Support !! Values  !! Value Type !! Notes !! Usage
|-
| --mcd1 || {{universal}}  ||  || || ||
|-
| --mcd2 ||  {{universal}} ||  || || ||
|-
| --mcd1-initialize ||  {{universal}} ||  || || ||
|-
| --mcd2-initialize ||  {{universal}} ||  || || ||
|-
| --mcd1-write-type || {{universal}}  ||  || || ||
|-
| --mcd2-write-type || {{universal}}  ||  || || ||
|-
| --vmc-src || {{universal}}  || native, host, target, null || {{string}} || ||
|-
| --formatted-vmc || {{universal}}  ||  || || ||
|-
| --vmc1 || {{universal}}  ||  || || ||
|-
| --vmc2 || {{universal}}  ||  || || ||
|-
| --vmc1-src || {{universal}}  ||  || || ||
|-
| --vmc2-src || {{universal}}  ||  || || ||
|-
| --vmc1-dest || {{universal}}  ||  || || ||
|-
| --vmc2-dest || {{universal}}  ||  || || ||
|-
|-
|}
|}
Line 969: Line 921:


{| 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 !! Emulator Support !! Values !! Value Type !! Notes !! Usage
! Command !! Values !! Notes !! Usage
|-
|-
| --mfifo-manual-drain || {{Exclusive}} || 0.1/5.0  || {{float}} || || --mfifo-manual-drain=0.30
| --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-chunk-drain-cycles || {{Exclusive}} || 0<br>Default = 10000<br>800000 || {{4 Bytes}} || || --mfifo-chunk-drain-cycles=210000
| --mfifo-manual-drain || 0.1/5.0 || ||--mfifo-manual-drain=0.30
|-
|-
| --pcr0-delta-hack || {{Exclusive}} || 0<br>Default=1.0<br>400000.0 || {{float}} || A scalar that modifies delta of pcr0 when reading it from MFC0. Some games rely on good performance counters accuracy (Spyro ANB cutscenes), and since emulator don't implement most events, hack it is. || --pcr0-delta-hack=1.0
| --mfifo-chunk-drain-cycles || 0<br>Default = 10000<br>800000 || ||--mfifo-chunk-drain-cycles=210000
|-
|-
| --jitproc-use-aslr || || || ||Disables compiler process ASLR, useful for easier debugging, as the compiler process will be always on fixed address. Theoretically useful for mast1c0re, but to change it you need to be already in... || --jitproc-use-aslr=0
| --pcr0-delta-hack || 0<br>Default=1.0<br>400000.0 || A scalar that modifies delta of pcr0 when reading it from MFC0. Some games rely on good performance counters accuracy (Spyro ANB cutscenes), and since emulator don't implement most events, hack it is. || --pcr0-delta-hack=1.0
|-
|-
| --verbose-deci2 || {{Exclusive}} || 0, 1 || {{Binary}} || ||
| --jitproc-use-aslr || || Disables compiler process ASLR, useful for easier debugging, as the compiler process will be always on fixed address. Theoretically useful for mast1c0re, but to change it you need to be already in... || --jitproc-use-aslr=0
|-
|-
| --verbose-cpu-cycles || {{Exclusive}} || 0, 1 || {{Binary}} || ||
| --detect-idle-intc ||0, 1|| Enabled by default, 0 disables it || --detect-idle-intc=0
|-
|-
| --detect-idle-intc || {{universal}} ||0, 1 || {{Binary}}|| Enabled by default, 0 disables it  || --detect-idle-intc=0
| --detect-idle-chcr|| 0, 1|| Enabled by default, 0 disables it  || --detect-idle-chcr=0
|-
|-
| --detect-idle-chcr|| {{universal}} || 0, 1 || {{Binary}} || Enabled by default, 0 disables it  || --detect-idle-chcr=0
| --rom || location of the bios that's inside of the fpkg || Could allow to use custom bios, though still not working || --rom="PS20220WD20050620.crack" or --rom="/roms/PS20220WD20050620.crack"
|-
|-
| --rom || || || location of the bios that's inside of the fpkg || Could allow to use custom bios, though still not working || --rom="PS20220WD20050620.crack" or --rom="/roms/PS20220WD20050620.crack"
| --cop2 || jit, trans || ? ||  
|-
|-
| --cop1 || {{universal}} || jit, trans || {{string}} || ? ||
| --vu0 || jit, trans || ? ||  
|-
|-
| --cop2 || {{universal}} || jit, trans || {{string}} || ? ||
| --r30 || jit, trans || ? ||  
|-
| --vu0 || {{universal}} || jit, trans || {{string}} || ? ||
|-
| --r30 || {{universal}} || jit, trans ||  {{string}} || ||
|-
|-
|}
|}
Line 1,011: 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,202: 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 ??
Line 2,642: Line 2,590:
*A PS4 log from loading that kind of config: https://pastebin.com/ZpUyU8DE
*A PS4 log from loading that kind of config: https://pastebin.com/ZpUyU8DE


= Confirmed known issues =
= Known issues =


{| 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;"
Line 2,649: Line 2,597:
| No support for EE Cache || Ice Age 2, DOA2: Extreme, Nascar 2009, Barnyard, [https://github.com/PCSX2/pcsx2/issues/2248 Others]|| Lua patches to the EE memory and picking the right emulator ||  
| No support for EE Cache || Ice Age 2, DOA2: Extreme, Nascar 2009, Barnyard, [https://github.com/PCSX2/pcsx2/issues/2248 Others]|| Lua patches to the EE memory and picking the right emulator ||  
|-
|-
| No support for GIFFIFO || Fifa Street 2, FIFA 2005|| ? ||  
| Incorrect GIF speed || Taz Wanted, The Matrix, Batman Begins, Dynasty warriors 5 Empires, others. || For a fast GIF: eeObj.SchedulerDelayEvent("gif.dma", 0x10500) end). For a slow GIF, there is seemingly no solution. || Some games need a fast GIF timing, and others need a slow one.
|-
| Unknown IOP issues || Genji - Dawn of the Samurai, Wild Arms 4 || A number of issues can be at play here; IOP's cycle speed, for example, is 2x overclocked, CDVD's read speed and the SIF's speed are unknown.||  
|-
|-
| Missing COP2 pipeline emulation. ||  [https://github.com/PCSX2/pcsx2/issues/4439 other games affected by COP2 timing]  || Rearranging code through lua patches. || While COP2 is a part of EE, in terms of emulation it's a separate processor that can run on its own. Consequently, some operations take a long time while EE still minds own its business. Some games abuse this and do their own thing, knowing that COP2 calculation takes an expected number of cycles. On this emu, every COP2 opcode is instant, which break games that expect it to take some time.
| Missing COP2 pipeline emulation. ||  [https://github.com/PCSX2/pcsx2/issues/4439 other games affected by COP2 timing]  || Rearranging code through lua patches. || While COP2 is a part of EE, in terms of emulation it's a separate processor that can run on its own. Consequently, some operations take a long time while EE still minds own its business. Some games abuse this and do their own thing, knowing that COP2 calculation takes an expected number of cycles. On this emu, every COP2 opcode is instant, which break games that expect it to take some time.
Line 2,664: Line 2,614:
| DMA writes when busy signal is engaged || Ratchet and Clank games, Metal gear solid 2, others || None yet || AKA eetiminghack
| DMA writes when busy signal is engaged || Ratchet and Clank games, Metal gear solid 2, others || None yet || AKA eetiminghack
|-
|-
|VIF1 runs too fast || Urban reign, Avatar, PaRappa The Rapper 2, Eternal Poison, Soul Calibur 2, Soul Calibur 3, Others || Using LUA's SchedulerDelayEvent command or CLI'S vif1-instant-xfer command, combined with vu1 jit-sync and mpg cycles. The emu, Redfaction, has a higher chance of fixing this issue. || Sony wanted to improve the performance, which is the reason VIF1 is instant. The lua's command can be customizable to set the delay period, the cli can't, therefore lua's command is much more compatible
|VIF1 runs too fast || Urban reign, Avatar, PaRappa The Rapper 2, Eternal Poison, Soul Calibur 2, Soul Calibur 3, Others || Using LUA's SchedulerDelayEvent command or Using CLI'S vif1-instant-xfer command || Sony wanted to improve the performance, which is the reason VIF1 is instant. The lua's command can be customizable to set the delay period, the cli can't, therefore lua's command is much more compatible
|-
|-
|Reading VU TPC registers returns wrong values || Street Fighter 3 EX(VU0), R: Racing Revolution(VU0), Spiderman 3 (VU0, in T-Bit handler...), Edge of Reality games(VU1) || Patches in lua. || In this emu TPC stores full addresses, which is wrong. Real hardware keep there addr >> 3. Worth noting that EoR games read VU1 TPC in a nasty way, accessing 0x43A0(VU1 TPC) from COP2 code.
|Reading VU TPC registers returns wrong values || Street Fighter 3 EX(VU0), R: Racing Revolution(VU0), Spiderman 3 (VU0, in T-Bit handler...), Edge of Reality games(VU1) || Patches in lua. || In this emu TPC stores full addresses, which is wrong. Real hardware keep there addr >> 3. Worth noting that EoR games read VU1 TPC in a nasty way, accessing 0x43A0(VU1 TPC) from COP2 code.
Line 2,675: Line 2,625:
|-
|-
| Corrupted SIF0 transfer when not full QW is send by IOP || True Crime: LA, PDC DC 2008, Street Racing Syndicate(1.03) || Patches in lua. || IOP is able to send words by SIF0, EE DMAC can only transfer Quadwords. When IOP send not full QW real hardware use whatever was in buffer from previous transfer for missing words (only words that are requested by iop are overwritten in transfer buffer). Emu probably memset 0 that part.
| Corrupted SIF0 transfer when not full QW is send by IOP || True Crime: LA, PDC DC 2008, Street Racing Syndicate(1.03) || Patches in lua. || IOP is able to send words by SIF0, EE DMAC can only transfer Quadwords. When IOP send not full QW real hardware use whatever was in buffer from previous transfer for missing words (only words that are requested by iop are overwritten in transfer buffer). Emu probably memset 0 that part.
|-
|}
==Awaiting Wikify==
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center; font-size:small;"
! Issue !! Games affected !! Solution !! Description
|-
| Games crash or get stuck from an LW from (VIF_STAT) 0x10003C00 or (GIF_STAT) 0x10003020 || SSX 3, Monopoly, Tomb Raider - The Angel of Darkness, Dragon Ball Z - Budokai Tenkaichi 1, Tony Hawk's Underground 2, and some Nickelodeon games.  || LUA patches to nop loops (50% chance of working). If that doesn't work, then seemingly nothing will. Emus such as War of the Monsters, RECVX, KOF2000, Forbidden Siren and Red Faction have a higher chance of success. || Issue seems to be specific to the PS4 emu. Seemingly related to FIFO emulation.
|-
| Incorrect GIF speed || Taz Wanted, The Matrix, Batman Begins, Dynasty warriors 5 Empires, others. || For a fast GIF: eeObj.SchedulerDelayEvent("gif.dma", 0x10500) end). For a slow GIF, there is seemingly no solution. || Some games need a fast GIF timing, and others need a slow one.
|-
| Unknown IOP issues || Genji - Dawn of the Samurai, Wild Arms 4 ||  A number of issues can be at play here; IOP's cycle speed, for example, is 2x overclocked, CDVD's read speed and the SIF's speed are unknown.||
|-
|-
|}
|}
Line 4,057: Line 3,995:
* [https://github.com/florinsdistortedvision/ps2-classics-emus Most base emulators for PS2 Classics released on PS4 by florinsdistortedvision]
* [https://github.com/florinsdistortedvision/ps2-classics-emus Most base emulators for PS2 Classics released on PS4 by florinsdistortedvision]
* [https://github.com/Zcor3x/Playstation-2-Classics-PS4 Most base emulators for PS2 Classics released on PS4 by Zcor3x]
* [https://github.com/Zcor3x/Playstation-2-Classics-PS4 Most base emulators for PS2 Classics released on PS4 by Zcor3x]
* [https://blog.eu.playstation.com/2018/05/01/12-ps2-classics-hit-ps-now-this-month-heres-why-should-play-them/]


{{Reverse Engineering}}
{{Reverse Engineering}}
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)