PCSX2 Online Plus
#1
PCSX2 Online Plus

Not sure if this is the right forum, as builds seem to be against the rules in general discussion, so...

A couple of friends and I got the PCSX2 Online codebase working with recent PCSX2.

Just getting it working wasn't enough though.

Additions:
  • 3 player, theoretically 8 player but untested
  • chat lobby
  • client-server
  • no input delay on server
  • analog stick support
  • synchronized system clock (important for games that use this as a RNG seed)
Removals:
  • automatic input delay detection
  • memory card downloads
Known bugs/issues:
  • clients can only see server chat
  • no limit on number of clients, player 9 will be able to control player 1
  • sync clock is a huge hack that sets the system clock on boot to Nov 5, 2017, 11:35:32 AM.
  • player assignments will always be in the order listed in the lobby
  • delay cannot be changed once game has started
  • memory cards must be identical or desynchs will occur
  • all players must set their multitap and pad type settings the same (except bindings)
  • emulation settings should be identical as well
Unknown bugs:
  • besides the sync clock, nothing has been done to make the emulator deterministic.
  • probably lots and lots of things.
Where is it?

Windows build here.
Source code here.

You'll need a preexisting copy of pcsx2 1.5.0's folder structure and its plugins, this is an executable only.
Reply

Sponsored links

#2
Great work !
CPU : AMD Ryzen 7 3800X
Mobo : Asus PRIME B450-PLUS
GPU : NVIDIA GeForce RTX 3070
RAM : 16 Go
Reply
#3
(11-30-2017, 12:18 PM)SmileTheory Wrote: Not sure if this is the right forum, as builds seem to be against the rules in general discussion, so...

No worries, this is a great place to post it. Thanks. (also, what forum rule you think it's against?)

Quote:A couple of friends and I got the PCSX2 Online codebase working with recent PCSX2.

That's pretty cool, to say the least. I'm not familiar with pcsx2-online though. Would you be able to say a sentence or two about pcsx2-online, and summarize the differences from pcsx2-online and from pcsx2 separately?

Quote:sync clock is a huge hack that sets the system clock on boot to Nov 5, 2017, 11:35:32 AM.

Sounds like a huge hack indeed. This is not something I'd want my system to be affected by. I'm guessing many or most would think the same. Nevertheless, it sounds like a working temporary solution, which is nice. But it probably can't be offered for public consumption.

In general, is this something you think you'd want to integrate with mainline pcsx2 at some stage?

I think that if it can be integrated relatively cleanly (as a plugin maybe? as a pcsx2 wrapper/launcher? or some combination of source code modifications and plugin/wrapper? not sure) and if you want to, then I'd think it'd be cool. Of course, if it's a wrapper/launcher then it doesn't really need integration.

Overall though, sounds pretty cool! keep up the good work Smile
Reply
#4
WOW~~ COOOOOL~~!!
Reply
#5
(11-30-2017, 01:20 PM)avih Wrote: No worries, this is a great place to post it. Thanks. (also, what forum rule you think it's against?)
This one:
  • There will be no support for modified or unofficial GIT versions of PCSX2, nor any link to unofficial builds.
Quote:That's pretty cool, to say the least. I'm not familiar with pcsx2-online though. Would you be able to say a sentence or two about pcsx2-online, and summarize the differences from pcsx2-online and from pcsx2 separately?
PCSX2 Online is a fork of pcsx2 last updated (besides readme changes) in 2012. From what I can tell, it wasn't properly forked from pcsx2, and thus we had to reintegrate it manually.

The netcode mainly consists of a shim between sio.cpp and three PAD* functions which intercepts pad inputs and vibration data, replacing them with the appropriate values from the network.  There are a few other changes to facilitate this, such as a new menu function to start the netplay component itself and a nifty lobby interface.

Quote:Sounds like a huge hack indeed. This is not something I'd want my system to be affected by. I'm guessing many or most would think the same. Nevertheless, it sounds like a working temporary solution, which is nice. But it probably can't be offered for public consumption.
This needs some clarification.  It isn't the PC system clock I'm altering, it's the emulated PS2 system clock.  The only real side effects you should see are memory card saves having the wrong date, and games that use the PS2 system clock showing the same date all the time.

Quote:In general, is this something you think you'd want to integrate with mainline pcsx2 at some stage?

I think that if it can be integrated relatively cleanly (as a plugin maybe? as a pcsx2 wrapper/launcher? or some combination of source code modifications and plugin/wrapper? not sure) and if you want to, then I'd think it'd be cool. Of course, if it's a wrapper/launcher then it doesn't really need integration.
I'd like it to be integrated, but as I'm still relatively new to the codebase I'm not sure of the best way to do it.  AFAICT it could be integrated as part of a pad plugin or between the pad plugin and the main engine, but it would still require some hooks into the main engine to start it up and such.

Quote:Overall though, sounds pretty cool! keep up the good work Smile
Thanks a lot, we try.
Reply
#6
(12-01-2017, 12:45 AM)SmileTheory Wrote: This one:
  • There will be no support for modified or unofficial GIT versions of PCSX2, nor any link to unofficial builds.

Oh, this is about unofficial forks/hacks/builds where people were using them and then reporting bugs here, expecting help from the PCSX2 team/community and sometimes even forgetting to mention it's not an official build, which means sometimes the official PCSX2 builds didn't even have these reported issues.

You're fine, discussing enhancement and related tools is very welcome.

If you want, we can move this thread to the "developers" sub forum. Not that it matters much though.

Quote:PCSX2 Online is a fork of pcsx2 last updated (besides readme changes) in 2012. From what I can tell, it wasn't properly forked from pcsx2, and thus we had to reintegrate it manually.

The netcode mainly consists of a shim between sio.cpp and three PAD* functions which intercepts pad inputs and vibration data, replacing them with the appropriate values from the network.  There are a few other changes to facilitate this, such as a new menu function to start the netplay component itself and a nifty lobby interface.

Hmm.. so the original pcsx2-online was forked from mainline pcsx2 around 2011, and stopped getting any updates around 2012. OK.

And I see that your fork is relatively new, it currently says "This branch is 59 commits ahead, 9 commits behind PCSX2:master.", so this is good. The code also looks clean, and for the most part it adds files under "/Netplay/" - which should not pose integration issues. Same goes for additional menu/GUI items - not an issue, as long as they're clearly related only to netplay.

But it does also change some existing PCSX2 files, and, after admittedly only very brief examination, these changes don't always look integration-ready (e.g. it modifies stuff to behave specifically for netplay, like at sio.cpp which calls NETPADstartPoll(..) instead of PADstartPoll(..) ). These will need some thoughts how to integrate when the time comes. But it doesn't look too bad either.

Overall, looks good to me (I haven't tried it though).

Once you feel it's reasonably useful (is it now already?), I'd suggest starting to think about integration. For instance, if you can arrange the new code in a way which completely disables/removes all netplay related stuff such that it becomes exactly "normal" PCSX2 (with some-but-not-many #ifdef for instance or some build option etc), then it would be easier to integrate.

Quote:This needs some clarification.  It isn't the PC system clock I'm altering, it's the emulated PS2 system clock.  The only real side effects you should see are memory card saves having the wrong date, and games that use the PS2 system clock showing the same date all the time.

Gotcha. Preferably this initialization at CDVD.cpp would come from the netcode (synced netplay peers?) and as close to current real-time as possible.

Quote:I'd like it to be integrated, but as I'm still relatively new to the codebase I'm not sure of the best way to do it.  AFAICT it could be integrated as part of a pad plugin or between the pad plugin and the main engine, but it would still require some hooks into the main engine to start it up and such.

It would be easiest to integrate when it's as clear as possible that netplay bugs/issues don't affect non-netplay pcsx2. Also, there are plans in place to release PCSX2 1.6 sometime "soon", so such integration is not likely to happen before that.

Quote:Thanks a lot, we try.

Not a bad attempt for less than two months Wink

It would be nice if you could keep this thread updated with occasional progress/news.
Reply
#7
WOW FINALLY analog stick support !!! GREAT JOB!!! <3 <3 <3 <3 *.*
But SIMS 2 EU doesn't work.... It freezes and crashes if i press Start at the Menu .. How to fix it ? Picture: https://i.imgur.com/YNNRlUi.png
Reply
#8
Looks pretty cool! Awesome job!
[Image: iq2O9Ya.jpg]
Reply
#9
This is great. So theoretically I'd be able to play TTT online against people at some point. This is pretty big.
Reply
#10
Um, it wont let me connect to my friend. Our router logs show the attempt but it wont go through
Reply




Users browsing this thread: 1 Guest(s)