Page 1 of 1

Introducing "PSLINK"!

Posted: Wed Nov 04, 2009 5:15 am
by Herben
Well, after being idle for a couple years I've become semi-active again, as the recent breaks in PS2SDK can prove. ;) In addition to committing various changes to the SDK, I've been working on a new project called "PSLINK"(pronounced "slink"). I've been toying with the idea of a cross-PlayStation(currently PS1/PS2) dev/comms system that uses an abstract "comms device" for communication for years, ever since my Napalm brothers and I wrote Naplink back in the day. About a year ago I got interested in PS1 dev again and needed a more modern method of communicating with my PS1 since I no longer have a PC that can handle an ISA comms link card. There are a couple methods that still work like "FreeWing" and the LPT Xploder/Xplorer carts but I don't have those so I used "ar3exec" that Hanimar wrote years ago, at first. Unfortunately that software is quite unstable and lacks TTY or host file systems so I first made a simple PSX EXE loader which uses the PS1 SIO port then used that to write a basic SIO TTY/HOST FS.

SIO is slow though, and the AR3/LPT are pretty easy to interface. So I decided it was time to make an abstract system for sending/receiving packets of data between PS and the host PC.

The intent is to make one system for remote dev on all PS consoles(PS1/PS2/PSP and maybe PS3?). PSLINK currently supports only network on PS2 with plans to add the pl230x USB("naplink") cable and possibly EE SIO. On PS1 it currently supports the rear SIO port and ActionReplay/GameShark 3(aka "Pro") using LPT with possible future support for AR/GS 1/2(comms link), Xploder/Xplorer(LPT) and "FreeWing"(AR1 to LPT).

Full TTY and "host" FS support are already written and tested for both PS1 and PS2.

On PS2, "COMMS.IRX" provides the library for managing "comms" devices and communication. New devices register themselves and can be referenced using either an ID(returned when registering the device) or by name(such as "net"), similar to how file systems are referenced. New devices can be added to any software which uses the comms system simply by writing and loading a new IRX.

On PS1, everything is statically compiled at the moment due to the PS1 OS' lack of support for relocatable modules and shitty "syscall" system. Once pslink is complete enough I plan on doing more PS1 dev so maybe I'll work something out...

Aaanyway, the purpose of this post is to let everyone know what's coming and to see if anyone else(with the required skills) is interested in helping out. Mostly what I need are people who have experience with Win32 USB driver writing(for the pl230x support) and maybe some PS1/PS2 system experts to help with some of the console-side stuff. I've got the PS1/PS2 stuff handled for the most part though. PSP hax0rs are also welcome so we can get it up and running on on PSP since I'm really not interested in that system and don't intend to do a port myself. I intend to commit the code to SVN at some point but since this is a cross-PS project, I feel that it belongs in a root of its own rather than sticking it under PS2 or whatever. But I'll be creating another post on that topic...

Posted: Thu Nov 05, 2009 3:09 am
by Lukasz
Sounds like an interesting project, looking forward to the first release :-)

Posted: Thu Nov 05, 2009 5:34 am
by yoshi314
I need are people who have experience with Win32 USB driver writing(for the pl230x support)
is it a similar device to prolific PL-2303 ( http://www.prolific.com.tw/eng/Products.asp?ID=59 ) ?

name sounds similar, plus the device is well supported under linux.

Posted: Fri Nov 06, 2009 8:03 am
by Herben
yoshi: No, this is for the pl-2301/pl-2302 USB 1.1 "host to host" bridge cables like those supported by Naplink. I actually wrote a very elaborate IOP driver for those cables a couple years ago but never used it in any project due to the fact that I was running Windows XP at the time and had a lot of difficulties getting the PC side to work. I intend to cannibalise that project for the IOP-side and I'll be using libusb for PC-side on Linux(I run Ubuntu 9.04 these days). The "usbnet" Linux module supports these cables, btw. But that's irrelevant since the "comms" system uses its own protocol. The cables are pretty easy to work with though. I just need to find mine...

Nice to see ya, Lukasz! I'm hoping to have an initial beta release within the next few weeks. I'm currently in the process of making the code more "multi-platform friendly" by borrowing some techniques used in LWIP.