PRO ONLINE will be what you guys have been dreaming of. Online Gaming with nothing but a PSP, Router and any Adhoc-Enabled Title you want.
This post will serve as my way of keeping everyone of you up 2 date on the latest developments.
PRO CFW on the other hand is undergoing some critical revamps aswell to be "mentally prepared" for the upcoming online module.
If I do Beta-Tests, then they will most likely be limited in a timely fashion and provided as plugin modules.
The final revision will be included into PRO CFW and be opensource / gpl like all our other developments.
[04.12.2011] ~ Sony Internet Library UNVEILED ~
[spoiler]Previously most of the work in the Adhoc Emulator for Infrastructure went into coding complex workarounds, background worker threads, etc. to properly link the Adhoc and Infrastructure API together...
Yesterday I thought there has to be a better way to do it and there really was... Interested in finding a way that saves me coding my own worker threads I had the brilliant idea of just handing the work down to the Sony Infrastructure Library Internal Thread, hoping it would take care of timing issues, etc. for me.
Sadly, the PSPSDK we got is heavily outdated, only about 10% of the PSP's features are documented and comparing the Internet Library PRX exports with the PSPSDK made it quite obvious that the PSPSDK is missing about 70% of the Internet Functions... so... I got my shovel (disassembler) and started digging.
Basically, I've discovered a bunch of useful functions & flags that allow me to pass most of the Adhoc Data 1:1 to the Infrastructure Library with nothing but a minimal wrapper... (for example translating the Microsecond Timeouts from Adhoc into Millisecond Timeouts for Infrastructure) greatly reducing the ATPRO module size and improving it's effectiveness. Timeouts no longer have to be dealt with manually, it's now all done within the Infrastructure Library Sony provides with it's firmware.
I also decided that I would drop GameMode Support from my ToDo List, as it's the only thing in the Adhoc Library that isn't 1:1 translateable into Infrastructure without a heavy wrapper.
That means... no <= 4.X game support until >= 4.X games are properly supported.
Starting with 4.0 Sony decided to drop something from the Adhoc Library called GameMode (which is nothing but a Token-Ring network architecture really...) in favor of making Adhoc more similiar to Infrastructure (which doesn't support Token-Ring), that means all 4.0+ Games run on a Adhoc Mode that effectively mimics a local Infrastructure system...
That's quite perfect for us, isn't it? Less work to translate stuff.
Either way, I hope to share my findings on the Networking Libraries (both Adhoc and Infrastructure) once I finished this big project of mine, to help people that might wish to dig deeper into the PSPs Networking Layer.[/spoiler]
Result: Implemented sceNetAdhocPdpCreate, sceNetAdhocPdpSend, sceNetAdhocPdpRecv, sceNetAdhocPdpDelete, sceNetAdhocPollSocket, Dummied sceNetAdhocSetSocketAlert, sceNetAdhocGetSocketAlert.
[15.01.2012] ~ New Networking Structure ~
[spoiler]It has been a while since I posted an update here but things have been moving, so don't worry.
Since last time I posted here I've finished up some more library exports, even though they are currently stubbed out until I get to properly implement them.
This resulted in something brilliant, bringing us a big step forward: Mixed Modules.
No longer do I have to replace the full Adhoc Library, it's enough for me to replace only pspnet_adhoc.prx, pspnet_adhocctl.prx and pspnet_adhoc_discover.prx now.
The biggest troublemaker, pspnet_adhoc_matching.prx no longer is a troublemaker at all, since I can just skip it! That's right.
What this module does is organize the network logic for "dumb programmers" aka. Game-Developers, but inside it's code all it does is use pspnet_adhoc.prx functions...
As I already have those emulated, Sonys own module now works against them by emulating Adhoc for us.
On the other side, I'm currently restructuring the network layout of ATPRO to work on a true peer 2 peer basis without a core server.
So what does this mean? I save myself money, thus reducing hosting costs tremendously, requiring less donations to keep this alive and you guys still get the full experience.
This will be achieved via a IP-Table that every PSP has saved, this table in turn will be used for the peerfinding and data transmission.
In the previous revision of ATPRO it was required to connect to a central server that managed the active peers to find its way around... this time around the peer management will be done by the enduser himself.
The only downside produced by this will be that you cant "randomly find people online" any longer... which means players will have to use forums to organize gamerooms.
I plan to release a phpBB3 plugin eventually that allows users to create IP-Tables for ATPRO gaming with a single click by choosing people from their forum friendlist.
I am hoping that wololo might volunteer to make /talk the first ATPRO forum in existence.[/spoiler]
Result: Added OFW pspnet_adhoc_matching.prx Compatiblity, Started True Peer 2 Peer Network Structure Code.
[19.01.2012] ~ PTP Timeout Problem solved ~
[spoiler]One of the problems with emulating PTP (Sonys TCP Clone for Adhoc PSP) was that it supported Timeouts while the official Berkeley Sockets didn't... in fact whole TCP doesn't support timeouts on connect / accept calls...
The solution was stunningly easy however it required some PSP testing to figure out the proper return values for this one.
A long story short... Timeouts on Adhoc PTP Accept and Connect calls are now properly emulated aswell.
Other than that, I've emulated some more minor functions for the PTP API too, leaving only 2 more to be emulated to cover all of them.
Oh and I've finished the last mission PDP function, completing this emulator library.[/spoiler]
Result: Implemented sceNetAdhocPtpAccept, sceNetAdhocPtpConnect, sceNetAdhocPtpOpen, sceNetAdhocPtpListen, sceNetAdhocPtpClose, sceNetAdhocGetPtpStat, sceNetAdhocGetPdpStat, Dummied sceNetAdhocPtpFlush.
Advertising