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 187: | Line 187: | ||
| --ee-context-switch-cycles || Accelerate cycles (360 => 0) <br>Decelerate cycles (361 => ∞ ) || Its effects are mysterious, but likely affect COP0. Does not work on Jak emulators. Default value is 360, and its type is 4 bytes. Seems to be useful for Bee Movie and Metal Gear Solid 3.|| --ee-context-switch-cycles=2700? | | --ee-context-switch-cycles || Accelerate cycles (360 => 0) <br>Decelerate cycles (361 => ∞ ) || Its effects are mysterious, but likely affect COP0. Does not work on Jak emulators. Default value is 360, and its type is 4 bytes. Seems to be useful for Bee Movie and Metal Gear Solid 3.|| --ee-context-switch-cycles=2700? | ||
|- | |- | ||
| [[--ee-hook|--ee-hook]] || AdvanceClock<br>FastForwardClock<br>Mfifodrain || Set a function to be applied every time the PC register reaches the selected offset in the EE memory. FastForwardClock stalls the EE for | | [[--ee-hook|--ee-hook]] || AdvanceClock<br>FastForwardClock<br>Mfifodrain || Set a function to be applied every time the PC register reaches the selected offset in the EE memory. FastForwardClock stalls the EE for a non-changeable number of cycles, while AdvanceClock stalls the EE for an allocated number of cycles to either improve sync or performance if ee was bottlenecking it. 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 298: | Line 298: | ||
| || Speedhacks || || | | || Speedhacks || || | ||
|- | |- | ||
| --fpu-rsqrt-fast-estimate || 0, 1 || Decreases RSQRT's accuracy. | | --fpu-rsqrt-fast-estimate || 0, 1 || Decreases RSQRT's accuracy. Enabled by default. Disabling it is required for full FPU accuracy || --fpu-rsqrt-fast-estimate=1 | ||
|- | |- | ||
| --fpu-accurate-mul-fast || 0, 1 || A command that prevents muldiv commands from | | --fpu-accurate-mul-fast || 0, 1 || A command that prevents muldiv commands from causing slowdowns. || --fpu-accurate-mul-fast=1 | ||
|-style="background-color:#FFAA00" | |-style="background-color:#FFAA00" | ||
| || Other || || | | || Other || || | ||
Line 421: | Line 421: | ||
| || Speedhacks || || | | || Speedhacks || || | ||
|- | |- | ||
| --vu1-mpg-cycles || 0 - 400000 || 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 | | --vu1-mpg-cycles || 0 - 400000 || 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 games that are MTVU sensitive.|| --vu1-mpg-cycles=1000 | ||
|- | |- | ||
| --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 | ||
Line 540: | Line 540: | ||
| --vif1-ignore-cmd-ints || 0, 1 || 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 || 0, 1 || 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 || 1 = Instant VIF1<br>0 = Delayed VIF1 || Changes VIF1 timing. 0 | | --vif1-instant-xfer || 1 = Instant VIF1<br>0 = Delayed VIF1 || Changes VIF1 timing. 0 is the accurate option. It can be used to fix graphical glitches or to potentially prevent games from freezing. || --vif1-instant-xfer=0 | ||
|} | |} | ||
Line 573: | Line 573: | ||
| --gs-adaptive-frameskip || 0, 1 || 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 || 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 | ||
|- | |- | ||
|-style="background-color:#D7EF54" | |||
| || Gs settings / Behaviour || || | |||
|-style="background-color:# | |||
| || | |||
|- | |- | ||
| --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-uprender || none,2x2 || Internal resolution upscaler. || --gs-uprender=2x2 | | --gs-uprender || none,2x2 || Internal resolution upscaler. || --gs-uprender=2x2 | ||
Line 593: | Line 582: | ||
| --gs-upscale || none, gpu, edgesmooth, smooth, motion, motionvec, motionvector, point || Upscaling type Selector || --gs-upscale=EdgeSmooth | | --gs-upscale || none, gpu, edgesmooth, smooth, motion, motionvec, motionvector, point || Upscaling type Selector || --gs-upscale=EdgeSmooth | ||
|- | |- | ||
| --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 | | --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 will have to be enabled first before using their options|| --gs-kernel-cl-up="clutmerge2x2" | ||
|- | |- | ||
| --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-override-small-tri-area || 0, 1 || Small triangle rejection. Could potentially restore missing text in some games. || --gs-override-small-tri-area=1 | ||
Line 601: | Line 590: | ||
| --gs-ignore-dirty-page-border || 0, 1 || ? ||--gs-ignore-dirty-page-border=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 graphical glitches | | --gs-ignore-rect-correction || 0, 1 || Setting it to 1 is known to fix graphical glitches in distant locations. || --gs-ignore-rect-correction=1 | ||
|- | |- | ||
| --gs-opt-frbuff-switch || 0, 1 || || --gs-opt-frbuff-switch=0 | | --gs-opt-frbuff-switch || 0, 1 || || --gs-opt-frbuff-switch=0 | ||
|- | |- | ||
| --gs-kernel-cl || h2lpool, clutmerge, mipmap, DarkCloud2, fantavision, Mipmap and clutmerge and h2l | | --gs-kernel-cl || h2lpool, clutmerge, mipmap, DarkCloud2, fantavision, Mipmap and clutmerge and h2l will have to be enabled first before using their options ||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" | ||
|- | |- | ||
| --force-frame-blend || 0, 1 || Enables blend (Deinterlacing?). Should be used to fix games with shaking screens. || --force-frame-blend=1 | | --force-frame-blend || 0, 1 || Enables blend (Deinterlacing?). Should be used to fix games with shaking screens. || --force-frame-blend=1 | ||
Line 611: | Line 600: | ||
| --force-pal-60hz || 0, 1 || Enables 60hz PAL mode. || --force-pal-60hz=1 | | --force-pal-60hz || 0, 1 || Enables 60hz PAL mode. || --force-pal-60hz=1 | ||
|- | |- | ||
| --gs-use-clut-merge || 0, 1 ||Color lookup table(?). It could possibly solve graphical issues or improve the quality of the colors. || --gs-use-clut-merge=1 | |||
|- | |||
| --gs-use-mipmap || 0, 1 || Enables mipmapping support. Can be used to fix graphics. || --gs-use-mipmap=1 | |||
|- | |||
| --gs-progressive || 0, 1 || Enables progressive scan. It's used to fix graphical glitches/double screen issues. || | | --gs-progressive || 0, 1 || Enables progressive scan. It's used to fix graphical glitches/double screen issues. || | ||
|- | |- | ||
Line 636: | Line 629: | ||
|- | |- | ||
| --gs-scanout-delay || 0, 200 || || --gs-scanout-delay=200 | | --gs-scanout-delay || 0, 200 || || --gs-scanout-delay=200 | ||
|- | |||
| --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-check-trans-rejection || 0, 1 || Check transfer rejection ? || --gs-check-trans-rejection=1 | | --gs-check-trans-rejection || 0, 1 || Check transfer rejection ? || --gs-check-trans-rejection=1 | ||
Line 644: | Line 639: | ||
|- | |- | ||
| --gs-h2l-accurate-hash || 0, 1 || ||--gs-h2l-accurate-hash=1 | | --gs-h2l-accurate-hash || 0, 1 || ||--gs-h2l-accurate-hash=1 | ||
|- | |||
| --gs-h2l-list-opt || 0, 1 || ||--gs-h2l-list-opt=1 | |||
|- | |- | ||
|-style="background-color:#9042f5" | |-style="background-color:#9042f5" | ||
Line 2,393: | Line 2,390: | ||
| Wrong disc read speed for some games || Shadowman(Textures), God of war (Music), Ratchet and clank size matters (Music), every game that's listed to require CDVD_READ_DELAY. [https://github.com/PCSX2/pcsx2/pull/3877 and many other affected games] || Try your luck with IOP and CDVD CLI commands. || Also known in sony's bios as CDVD_READ_DELAY | | Wrong disc read speed for some games || Shadowman(Textures), God of war (Music), Ratchet and clank size matters (Music), every game that's listed to require CDVD_READ_DELAY. [https://github.com/PCSX2/pcsx2/pull/3877 and many other affected games] || Try your luck with IOP and CDVD CLI commands. || Also known in sony's bios as CDVD_READ_DELAY | ||
|- | |- | ||
| | | In-accurate VU0/VU1/COP2 emulation || Sly cooper games, Crash twinsanity, Crazy frog racer, Rayman 3, Klonoa 2, others. || Choosing a VU accurate emulator such as Roguev1 or Kof2000 with the right clamping commands || The issue leads to SPS and graphical issues and sometimes freezing. | ||
|- | |- | ||
| 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. | | 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. | ||
Line 2,405: | Line 2,402: | ||
|VIF command interrupts handled before VIFn_CODE is updated. || Onimusha Blade Warriors || Fixed by patch in intr handler. || This is very specific case because Onimusha check VIFn_CODE register in interrupt handler and do nothing if code is not 0x80 (NOP with I). But VIFn_CODE seems to be updated after interrupt is handled. This practically makes everything out of sync later as interrupts are happening, but handler does nothing about them. | |VIF command interrupts handled before VIFn_CODE is updated. || Onimusha Blade Warriors || Fixed by patch in intr handler. || This is very specific case because Onimusha check VIFn_CODE register in interrupt handler and do nothing if code is not 0x80 (NOP with I). But VIFn_CODE seems to be updated after interrupt is handled. This practically makes everything out of sync later as interrupts are happening, but handler does nothing about them. | ||
|- | |- | ||
| IPU emulation inaccuracy || Burnout 3 | | IPU emulation inaccuracy || Burnout 3 || None yet || | ||
|- | |- | ||
| CDVD register 0x1F402038 (KeysValid) return wrong result. || Every "SCCS" game || Patches in lua. || Likely specific to NTSC-C releases, because that region uses special SDK. This issue makes cdvdman become stuck on any request because it thinks that the cdvd key is invalid. | | CDVD register 0x1F402038 (KeysValid) return wrong result. || Every "SCCS" game || Patches in lua. || Likely specific to NTSC-C releases, because that region uses special SDK. This issue makes cdvdman become stuck on any request because it thinks that the cdvd key is invalid. | ||
|- | |- | ||
| Lack of CDVD error handling || Demon Chaos, Spyro A new Beginning, Silent Hill 2 Black Ribbon, games from pcsx2 #5174 PR. || Patches in lua if needed. || One correctly supported error is SCECdErABRT, rest is just not handled or what's worst trigger emu panic on purpose like SCECdErILI (but not for 0 sector request - Spyro). Some affected games can still work if error is just accidental and not checked by game code. | | Lack of CDVD error handling || Demon Chaos, Spyro A new Beginning, Silent Hill 2 Black Ribbon, games from pcsx2 #5174 PR. || Patches in lua if needed. || One correctly supported error is SCECdErABRT, rest is just not handled or what's worst trigger emu panic on purpose like SCECdErILI (but not for 0 sector request - Spyro). Some affected games can still work if error is just accidental and not checked by game code. | ||
|} | |} | ||