Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Core Port Req.] PCSX2 - PlayStation 2 #3318

Open
Spikestuff opened this issue Jul 17, 2022 · 16 comments
Open

[Core Port Req.] PCSX2 - PlayStation 2 #3318

Spikestuff opened this issue Jul 17, 2022 · 16 comments
Labels
Core: Future core Core doesn't exist yet or is an early WIP Enhancement For feature requests or possible improvements

Comments

@Spikestuff
Copy link

Spikestuff commented Jul 17, 2022

Upstream info

Merits

PlayStation 2 is probably the one with the largest backlog, and the most potential for people to make runs and submit them.
It's insanely vary and I know that RTA runners of certain titles want to get in TASing a PS2 title, due to recent advancements upstream has improved, but it's not quite there yet (unable to TAS with a Memory Card in or from Full Boot. Some titles fail in TASing), the TAS fork is stable enough by comparison (however the amount of games that are playable does reduce as it's a much older build).

Technical details

Now for the updated annoying part (Updated 22nd Sept. '23).
With the major improvements to the emulator it has also recieved an overhaul for rerecording-- it still desyncs^, so multiple files are still required to make a movie from start to end unfortunately.

^2024 Update: You are able to circumvent desyncs as long as you save before/after a load screen, similar logic to that of Dolphin. There's has been reports where it will desync under dumping, but that's also only when a turbo is applied.

In terms of Graphics emulation. Software mode is still the best option in terms of practically everything being functional graphically. However the options of Vulkan and OpenGL are still a nice-to-have in preferences due to their goodizers and they will still thankfully as of the latest update still sync movies between renderers.

Within the PCSX2 Settings.
Under "Emulation" and "System Settings", "Enable Multi-Threaded VU1 (MTVU)" and "Enable Instant VU1" are still reported as the best two options to have disabled.

Having Overscan and Screen Offsets would be an extreme nice to have for consistency with the NymaShock core as having the Overscan elements makes it more efficient and correct to render out to the 4:3 ratio as PlayStation 2 loves to be a multiresolution system like the previous system.

Anti-Blur and Disable Interlace Offset (NTSC only from what I can tell) might be helpful in the TASing process, and this cosmetic change still doesn't result in desyncs.

As for the Deinterlacing. The options provided which are; None (for Progressive titles), Weave (bff) and Bob (bff) would be preferable. Their newer mode Adaptive would be something neat for TASing.

The Emulator can be forced into a single-thread configuration tweaking some settings across like the two mentioned above.


Previous discussion re: PCSX2 port: #1601
This would supercede the WIP DobieStation core: #2250

@Spikestuff Spikestuff added Core: Future core Core doesn't exist yet or is an early WIP Enhancement For feature requests or possible improvements labels Jul 17, 2022
@CasualPokePlayer
Copy link
Member

CasualPokePlayer commented Jul 18, 2022

If this is to be waterboxed, Vulkan/DirectX/GL will not be options (native GPU stuff is not possible in the box), it will have to be software rendering. Single threading would also need to be forced probably (this is configurable so I assume there isn't much work there).

Recompilers might also be issues too if it is to be waterboxed. In theory it should work, in practice it can be messy depending on the implementation. A quick look seems to say at least they don't use fastmem, which probably means it's possible. If it turns out to not be possible (or just not stable), and interpreters have to be used, then waterbox is probably not viable.

Which even then, if this is a native port, how much more stable would BizHawk actually be compared to upstream? We'd be relying on their states, which seem to not be reliable in the first place. At most you can get BizHawk's tools, but you'd still be in desync hell.

@nattthebear
Copy link
Contributor

I don't think waterbox is viable here. Most JITs are too strenuous for it, and (real) multithreading is a no-go as well.

@InfamousKnight
Copy link

What is so unstable about upstream I'm curios? Wouldn't it have less desyncs than that aforementioned tas fork? Because while I was following the development of pcsx2, they updated save state code to "hopefully fix desync problems". And sometimes desyncs are frontend related. Plus they are moving away from hacky emulation fixes and have removed several hacks in the past if you followed their progress.

Whats really great is they have compressed save states now which can make rewind more reasonable. They dont want to implement the feature though because of performance problems.

@CasualPokePlayer
Copy link
Member

Likely just bad states somewhere, just forgetting a few variables can propagate to disastrous results. Having a JIT around probably is not doing any favors here. Threading in various places also likely doesn't help.

I really doubt much stablity (if any) would be gained by hawk as is. Waterbox is maybe out of the question, and if so we can't easily fix states without a severe amount of work.

@InfamousKnight
Copy link

Yeah, well that's game specific. I've heard games like ratchet and clank are pretty stable(desyncs happen between transition to another planet) so it's good for individual levels. I've also heard that for kingdom hearts ii, certain actions had to be avoided to prevent desyncs.

Its very complex.

@CasualPokePlayer
Copy link
Member

That further supports it's state related.

@InfamousKnight
Copy link

One more thing to add, those reports listed above are rather old. The kingdom hearts tas I was talking about where certain actions were avoided was made in 2020. Back in October 2021, a massive save state improvement was addressed targeting desync issues with missing variables.

Unfortunately for upstream, because of their move to qt, I don't think I can test anything on their end for any up to date info until qt is done on the recording tools side.

@ghost

This comment was marked as off-topic.

@CasualPokePlayer

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@CasualPokePlayer

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@CasualPokePlayer

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@CasualPokePlayer

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Core: Future core Core doesn't exist yet or is an early WIP Enhancement For feature requests or possible improvements
Projects
None yet
Development

No branches or pull requests

4 participants