Editing PS2 Emulation
Jump to navigation
Jump to search
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 174: | Line 174: | ||
| --ee-context-switch-cycles || Accelerate cycles (360 => 0) <br>Decelerate cycles (361 => ∞ ) || 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-context-switch-cycles || Accelerate cycles (360 => 0) <br>Decelerate cycles (361 => ∞ ) || 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|--ee-hook]] || AdvanceClock<br>FastForwardClock<br>Mfifodrain || Runs the specified | | [[--ee-hook|--ee-hook]] || AdvanceClock<br>FastForwardClock<br>Mfifodrain || Runs the specified feature every time a selected EE offset is reached. FastForwardClock and AdvanceClock help fix core sync issues, but can be used as a speedhack. Mfifodrain is still unknown. [[--ee-hook|For more examples]] ||--ee-hook=0x0025A9F2,AdvanceClock,,500 <br>--ee-hook=0x0019F0AD,FastForwardClock | ||
|- | |- | ||
|-style="background-color:#D7EF54" | |-style="background-color:#D7EF54" | ||
Line 287: | Line 287: | ||
| --fpu-rsqrt-fast-estimate || 0, 1 || Decreases RSQRT's accuracy. Enabled by default, disabling it helps with achieving full FPU accuracy. || --fpu-rsqrt-fast-estimate=1 | | --fpu-rsqrt-fast-estimate || 0, 1 || Decreases RSQRT's accuracy. Enabled by default, disabling it helps with achieving full FPU accuracy. || --fpu-rsqrt-fast-estimate=1 | ||
|- | |- | ||
| --fpu-accurate-mul-fast || 0, 1 || Speedhack for | | --fpu-accurate-mul-fast || 0, 1 || Speedhack for FPU muldiv commands. || --fpu-accurate-mul-fast=1 | ||
|-style="background-color:#FFAA00" | |-style="background-color:#FFAA00" | ||
| || Other || || | | || Other || || | ||
Line 335: | Line 335: | ||
| || Other || || | | || Other || || | ||
|- | |- | ||
| --cop2-regalloc || 0, 1 ? || | | --cop2-regalloc || 0, 1 ? || PCSX2 seems to have this enabled by default. Uknown function, might be a speechack. || | ||
|- | |- | ||
| --cop2-inst-q || 0, 1 || instant Q, no stalling on VWAITQ, or instances of Q. Crashes some games when enabled. || | | --cop2-inst-q || 0, 1 || instant Q, no stalling on VWAITQ, or instances of Q. Crashes some games when enabled. || | ||
Line 389: | Line 389: | ||
| --vu-t-bit || 0, 1 || Debug halt. Acts similarly to D-bit || --vu-t-bit=0 | | --vu-t-bit || 0, 1 || Debug halt. Acts similarly to D-bit || --vu-t-bit=0 | ||
|- | |- | ||
| --vu-inst-mflag || 0, 1 || Instant macflag? | | --vu-inst-mflag || 0, 1 || Instant macflag? || --vu-inst-mflag=1 | ||
|- | |- | ||
| --vu-inst-cflag || 0, 1 || Instant cflag? || --vu-inst-cflag=1 | | --vu-inst-cflag || 0, 1 || Instant cflag? || --vu-inst-cflag=1 | ||
Line 412: | Line 412: | ||
| --vu1-di-bits || 0, 1 || 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-di-bits || 0, 1 || 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 || 0, 1|| Enabled by default. 0 will disable it and cause performance issues | | --vu1-const-prop || 0, 1|| Enabled by default. 0 will disable it and cause performance issues.[https://github.com/PCSX2/pcsx2/blob/58f5a5b915915293b90e7e8f34c33f9c0424d1e8/pcsx2/x86/microVU_Misc.h#L312 More info] || --vu1-const-prop=1 | ||
|- | |- | ||
| --vu1-opt-flags || 0, 1, 2 || 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-flags || 0, 1, 2 || 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 | ||
Line 465: | Line 465: | ||
| || Speedhacks || || | | || Speedhacks || || | ||
|- | |- | ||
| --vu0-mpg-cycles || 0 - 400000 || Set initial cycle speed for VU0 Micro-programs. 100 is the default value | | --vu0-mpg-cycles || 0 - 400000 || Set initial cycle speed for VU0 Micro-programs. 100 is the default value. || --vu0-mpg-cycles=1000 | ||
|- | |- | ||
| --vu0-di-bits || 0, 1 || 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 || 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 | ||
Line 565: | Line 565: | ||
| || GS features || || | | || GS features || || | ||
|- | |- | ||
| --gs-use-mipmap || 0, 1 || Enables mipmapping support. Can be used to fix graphics | | --gs-use-mipmap || 0, 1 || Enables mipmapping support. Can be used to fix graphics. || --gs-use-mipmap=1 | ||
|- | |- | ||
| --gs-use-deferred-l2h || 0, 1 || Delay option for L2H (local to host, GS to EE). || --gs-use-deferred-l2h=1 | | --gs-use-deferred-l2h || 0, 1 || Delay option for L2H (local to host, GS to EE). || --gs-use-deferred-l2h=1 | ||
|- | |- | ||
| --gs-use-clut-merge || 0, 1 || | | --gs-use-clut-merge || 0, 1 ||Color lookup table(?). It sometimes restores missing graphical elements, and fix texture flickering. || --gs-use-clut-merge=1 | ||
|- | |- | ||
| --gs-flush-ad-xyz || always, safe, safeZwrite, off, 0 || 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 || 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 | ||
Line 584: | Line 584: | ||
| --gs-kernel-cl-up || "DarkCloud2" "fantavision" "h2lpool2x2", "OptRightTri", "clutmerge2x2", "mipmap2x2", "up2x2simple", "up2x2skipinterp", "up2x2tc", "up2x2", default || 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 || 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 || 0, 1 || | | --gs-override-small-tri-area || 0, 1 || Small triangle rejection. Could potentially restore missing text in some games. || --gs-override-small-tri-area=1 | ||
|- | |- | ||
| --gs-dirty-page-policy || 0, 1 || | | --gs-dirty-page-policy || 0, 1 || || --gs-dirty-page-policy=1 | ||
|- | |- | ||
| --gs-ignore-dirty-page-border || 0, 1 || | | --gs-ignore-dirty-page-border || 0, 1 || ? ||--gs-ignore-dirty-page-border=1 | ||
|- | |- | ||
| --gs-ignore-rect-correction || 0, 1 || 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 || 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 || 0, 1 || | | --gs-opt-frbuff-switch || 0, 1 || || --gs-opt-frbuff-switch=0 | ||
|- | |- | ||
| --gs-kernel-cl || h2lpool, clutmerge, mipmap, DarkCloud2, fantavision, Mipmap and clutmerge and h2l need to be enabled before their options become usable ||Kernel Variant Color lookup(?). Options included here can be upscaling if --gs-kernel-cl-up were to be used along with it || --gs-kernel-cl="clutmerge" | | --gs-kernel-cl || h2lpool, clutmerge, mipmap, DarkCloud2, fantavision, Mipmap and clutmerge and h2l need to be enabled before their options become usable ||Kernel Variant Color lookup(?). Options included here can be upscaling if --gs-kernel-cl-up were to be used along with it || --gs-kernel-cl="clutmerge" | ||
Line 602: | Line 602: | ||
| --gs-progressive || 0, 1 || Enables progressive scan. Can fix graphical glitches/double screen issues. || | | --gs-progressive || 0, 1 || Enables progressive scan. Can fix graphical glitches/double screen issues. || | ||
|- | |- | ||
| --gs-vert-precision || 8, 16 || | | --gs-vert-precision || 8, 16 || 3D rendering vertex precision. The emu expects the values of 8 or 16, any other values are not permitted. || --gs-vert-precision=8 | ||
|- | |- | ||
| --gs-skip-dirty-flush-on-mipmap || 0, 1 || 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 || 0, 1 || 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 || 0, 1 || | | --gs-packed15-fmv-opt || 0, 1 || || --gs-packed15-fmv-opt=1 | ||
|- | |- | ||
| --gs-fieldswap-delay || 0, 254 || Wait longer than usual to change field. | | --gs-fieldswap-delay || 0, 254 || Wait longer than usual to change field. Blurs/sharpens image. (Trilinear filtering??) || | ||
|- | |- | ||
| --gs-uv-shift-pointsampling || 0, 1 || 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-uv-shift-pointsampling || 0, 1 || 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 || 0, 3000000 || | | --gs-render-tile-threshold || 0, 3000000 |||| --gs-render-tile-threshold=300000 | ||
|- | |- | ||
| --threaded-gs || 0, 1 || Multi-threaded-gs ? || --threaded-gs=1 | | --threaded-gs || 0, 1 || Multi-threaded-gs ? || --threaded-gs=1 | ||
Line 618: | Line 618: | ||
| --gs-aspect-ratio || aspect/float (default=0.81) || || --gs-aspect-ratio=0.65 | | --gs-aspect-ratio || aspect/float (default=0.81) || || --gs-aspect-ratio=0.65 | ||
|- | |- | ||
| --gs-frontend-opt-mode || 0, 1, 2 || | | --gs-frontend-opt-mode || 0, 1, 2 || ? || --gs-frontend-opt-mode=1 | ||
|- | |- | ||
| --gs-motion-factor || 25, 50 || | | --gs-motion-factor || 25, 50 || || --gs-motion-factor=25 | ||
|- | |- | ||
| --gs-scanout-delay || 0, 200 || || --gs-scanout-delay=200 | | --gs-scanout-delay || 0, 200 || || --gs-scanout-delay=200 | ||
|- | |- | ||
| --gs-check-trans-rejection || 0, 1 || Check transfer rejection? | | --gs-check-trans-rejection || 0, 1 || Check transfer rejection ? || --gs-check-trans-rejection=1 | ||
|- | |- | ||
| --gs-check-trans-rejection68 || 0, 1 || | | --gs-check-trans-rejection68 || 0, 1 || || --gs-check-trans-rejection68=1 | ||
|- | |- | ||
| --l2h-2d-params || TRXREG,BITBLTBUF,height || || --l2h-2d-params=0x0000000800000001,0x000000003a0a2300,512,2 | | --l2h-2d-params || TRXREG,BITBLTBUF,height || || --l2h-2d-params=0x0000000800000001,0x000000003a0a2300,512,2 | ||
Line 772: | Line 772: | ||
| {{cellcolors|#0b9fb3|#000000}}cpuSpriteRenderBW: 4 || {{cellcolors|#b52fde|#000000}}--gs-opt-frbuff-switch=1 || Note: works similarly but not the equivalent | | {{cellcolors|#0b9fb3|#000000}}cpuSpriteRenderBW: 4 || {{cellcolors|#b52fde|#000000}}--gs-opt-frbuff-switch=1 || Note: works similarly but not the equivalent | ||
|- | |- | ||
| {{cellcolors|#0b9fb3|#000000}}mipmap || {{cellcolors|#b52fde|#000000}}--gs-use-mipmap=1 | | {{cellcolors|#0b9fb3|#000000}}mipmap || {{cellcolors|#b52fde|#000000}}--gs-use-mipmap=1 || | ||
|- | |- | ||
| {{cellcolors|#0b9fb3|#000000}}autoFlush || {{cellcolors|#b52fde|#000000}}--gs-flush-ad-xyz=safe || Possible values include always, safe, off, 0 | | {{cellcolors|#0b9fb3|#000000}}autoFlush || {{cellcolors|#b52fde|#000000}}--gs-flush-ad-xyz=safe || Possible values include always, safe, off, 0 | ||
Line 801: | Line 801: | ||
| 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.''' | | 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 || | | Fatal Fury Battle Archives: Volume 2 || The emulator with the closest VU0-EE sync on the PS4; setting eecyclescalar to 5 on this emulator will render some VU0 sync demanding games such as Rayman 3 partially playable on the PS4. || || | ||
|-style="background-color:#D7EF54" | |-style="background-color:#D7EF54" | ||
| || 2016 || || | | || 2016 || || | ||
|- | |- | ||
| Redfaction || It is prominently used to fix VU1 sensitive | | Redfaction || It is prominently used to fix games that are VU1 sensitive. It was used to fix '''Tony Hawk games''' suddenly crashing, and to fix MTVU sensitive games such as '''Star Wars Battlefront II'''.|| 1.6 || '''Max payne''' | ||
|- | |- | ||
| Forbidden Siren || The only emulator | | Forbidden Siren || The only emulator that was able fix '''Ice age 2''' being stuck at splash screen by using it in conjunction with patches. It also fixed '''Gran turismo 4''' running EXTREMELY slow. || 0.1 || | ||
|- | |- | ||
| King of Fighters 2000 || Seemingly one of the | | King of Fighters 2000 || Seemingly one of the closest VU0-EE sync emus on the PS4. Fixes graphical issues and sps in games such as '''Crash Twinsanity''', '''Rayman 3''', '''Crazy Frog Racer''', and '''prevents Koei tecmo games from suddenly freezing when battle starts. 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 | | Destroy All Humans! || Fixed '''Tenchu: Fatal Shadows''' crashing. || 0.1 || | ||
|- | |- | ||
| Destroy All Humans! 2 || || 0.7 || | | Destroy All Humans! 2 || || 0.7 || | ||
|- | |- | ||
| Rise of the Kasai || | | Rise of the Kasai || Fixed most of the '''Harry potter''' games. Often referred to as "rotk"|| 0.2 || | ||
|- | |- | ||
|-style="background-color:#D7EF54" | |-style="background-color:#D7EF54" | ||
| || 2015 || || | | || 2015 || || | ||
|- | |- | ||
|War of the monsters v1 || | |War of the monsters v1 || The emulator that's used in PS2CLASSICSGUI, and the best one around for GS/GIF accuracy. || 0.1 || '''Rogue v1 and v2, Arc the Lad, Star Wars Jedi Starfighter''' | ||
|- | |- | ||
| GTA 3 || Fixed the pal version of '''Genji: Dawn of the Samurai''' | | GTA 3 || Fixed the pal version of '''Genji: Dawn of the Samurai''' || 0.6 || | ||
|- | |- | ||
| Parappa 2 || The only emulator to boot '''Spyro: A Hero's Tail''' | | Parappa 2 || The only emulator that was able to boot '''Spyro: A Hero's Tail''' || 0.1 || | ||
|- | |- | ||
| Star Wars Racer Revenge || | | Star Wars Racer Revenge || Seems to be the most similar emulator to the ps3. Useful for debugging games as it also shows useful information such as pagefault || 0.4 || | ||
|- | |- | ||
|} | |} | ||
Line 1,172: | Line 1,172: | ||
|- | |- | ||
|FastForwardClock || eeObj.FastForwardClock() || Skip Emotion Engine cycles? | |FastForwardClock || eeObj.FastForwardClock() || Skip Emotion Engine cycles? | ||
|- | |- | ||
|AdvanceClock || eeObj.AdvanceClock() || | |AdvanceClock || eeObj.AdvanceClock() || it is still unknown how to use this command. Check Psychonauts lua for more details. | ||
|- | |- | ||
| GetClock || eeObj.GetClock() || Returns the value of how many cycles the EE is ahead of normal clock (?) | | GetClock || eeObj.GetClock() || Returns the value of how many cycles the EE is ahead of normal clock (?) | ||
Line 1,540: | Line 1,531: | ||
|- | |- | ||
| FastForwardClock || iopObj.FastForwardClock() || | | FastForwardClock || iopObj.FastForwardClock() || | ||
|- | |- | ||
| AdvanceClock || iopObj.AdvanceClock() || | | AdvanceClock || iopObj.AdvanceClock() || | ||
|- | |- | ||
| GetClock || iopObj.GetClock() || Returns the value of cycles the iop is ahead of (?) | | GetClock || iopObj.GetClock() || Returns the value of cycles the iop is ahead of (?) | ||
Line 2,400: | Line 2,382: | ||
*Log from loading that kind of config: https://pastebin.com/ZpUyU8DE | *Log from loading that kind of config: https://pastebin.com/ZpUyU8DE | ||
= | = Confirmed known issues = | ||
{| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | {| cellspacing="0" cellpadding="2" border="1" class="wikitable" style="text-align: center;" | ||
! Issue !! Games affected !! Solution !! Description | ! Issue !! Games affected !! Solution !! Description | ||
Line 2,415: | Line 2,397: | ||
| M-Bit support is broken || '''Every game that uses M-Bit'''. Totally Spies! Totally Party, Mike Tyson Heavyweight Boxing, My Street, Crash Twinsanity, Marvel Nemesis, Panzer Elite Action - Fields of Glory, Super Monkey Ball Adventure, most Eko Software games, and many more. [https://github.com/PCSX2/pcsx2/pull/3593] || Lua patches to the EE memory || While emulator respect m-bit, way that VU0 work on it make it broken most of times (check "VU0 is not running in sync with EE core" issue). | | M-Bit support is broken || '''Every game that uses M-Bit'''. Totally Spies! Totally Party, Mike Tyson Heavyweight Boxing, My Street, Crash Twinsanity, Marvel Nemesis, Panzer Elite Action - Fields of Glory, Super Monkey Ball Adventure, most Eko Software games, and many more. [https://github.com/PCSX2/pcsx2/pull/3593] || Lua patches to the EE memory || While emulator respect m-bit, way that VU0 work on it make it broken most of times (check "VU0 is not running in sync with EE core" issue). | ||
|- | |- | ||
| Multitap doesn't support all games || Urban reign | | Multitap doesn't support all games || Urban reign, others || Lua patches || Emulator expect PS4 to be able to use 8 controllers (well, who doesn't? Even PS1 can do it...). That cause all kind of mess with controller detection when game expect multitap in second port. | ||
|- | |- | ||
| 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 |