PS2 Julian's various PS2 projects (Worklog)

uyjulian

Developer
Here are various PS2-related projects which I am doing, which probably aren't big enough to warrant their own thread. If they get big enough or reach a certain state, I might open specific threads for them.

These are not arranged in any particular order. However, each item is worked off and on, and I am also doing non-PS2 related projects which are not on the list below. (If you are interested in such projects, visit my website)

If you want to assist with anything listed below, feel free to contact me so I can help you get started.

Current work:
* PS2 IOP software other modules RE/reimplementation
eromdrv - done
libspu2/libsnd2 - done
romflash - done
rmman2 - done
subfile - done
speed uart - done
xatapi - done
xesdrv - done
rmreset - done
---
deci2 modules - interfaces labeled and typed
thmon - done
csl modules - common functions labeled and typed
sdrdrv - done
dbcman - labeled
sio2d - labeled
ds2u_d
mc2_d
mcxman - labeled
mcxserv - labeled
udfio 110u - mostly labeled
ilink
ilsock
inet
inetctl
libnet - labeled
msifrpc - done
netcnf - done
netcnfif - done
ntgui2
ppp
pppoe
scrtchpd - done
usbkb - labeled and typed
usbmload - done
usbpspcm
an986 - mostly finished (network stack support withstanding)
ent_devm - labeled and typed
ent_ppp - mostly labeled and typed
ent_smap - labeled and typed
---
an986.uepcb - mostly finished (network stack support withstanding)
romwrite - done
s147ctrl - done
s147http
s147mdev - done
s147nand - done
s147netb - done
s147usbm/s256usbm
s147link - done

Backburner:
* Portable shared object loader implementation
* SMS assembly to C code
* libosd and its dependencies RE/reimplementation
* PS2 IOP software other modules feature updates
sio2man - done
padman - labeled and mostly typed
mcman - labeled and mostly typed
mcserv - labeled and typed
mtapman - labeled and typed
smap - done
dev9 - labeled (from xosd)
atad - labeled (from xosd)
pfs - labeled (from xosd)
apa - labeled (from xosd)
libsd - done
usbd - done

Some work has been done, but nothing big:
* Auto SIF RPC IOP<->EE binding generator

Planning stage (no code has been written):
* Manage MC and HDD from web browser
* ELF loader using libcurl without dropping files
* Display audio/video (??? encoding) from a remote (??? protocol) server
* USB over IP support for various peripherals, translating as necessary (e.g. MSD, HID, UASP, ps3mca)
* Figuring out how various USB Ethernet adapters work
* BDM RPC between IOP and EE (to support iomanX on EE)
* BDM portability
* iomanX on EE
* Port filesystem drivers to EE
* SIF portability
* Version-agnostic RPC handling (including fileio, mtapman)
* ioman, iomanX, fileio compatibility improvements
* old EE ABI (eabi64 with 32-bit pointers and 128-bit GPRs) on new toolchain
* ffmpeg port
* NBD separation
* PPC-IOP toolchain (Speed up processes on SCPH-75XXX and newer models)
* Multi thread and allocation improvements to file/sockets RPC IOP
* xfromserv (mcserv for xfromman)
 
Last edited:
Nice post, always good to share your idea's, never know someone else may be planning some of the same stuff or may be intrested and be the fuel to some great things.. :) What the scene is all about. !!!! Honestly wish we seen more post like this.
 
Running the gsKit hires sample on PS2 Tool
xkQJfEV.jpg

Now, I just need to find a way to switch video mode to component so that I can capture it with my capture card...

I might recompile most of the open-source components in Red Hat Linux 5.2 or Red Hat Linux 6.2 with GCC 8, depending on if I can get the build system up and running, and if I receive a copy of the disk image based on Red Hat Linux 6.2.
 
I wont pretend i understand what most of your original post is describing, because i don't, but it all sounds like more great tools for PS2 owners.

I love my PS2, i was literally only playing it over the weekend and cleaned it out and up again.
 
TOOL as a service (Remote access to a PS2 TOOL using ssh including video streaming, dsnet access, and 512MB of fast flash storage)

But, you are supposed to use the TOOL from across the network. Not with SSH though, but with the dsnet tools. There's generally no need to log into the TOOL itself.
 
But, you are supposed to use the TOOL from across the network. Not with SSH though, but with the dsnet tools. There's generally no need to log into the TOOL itself.
I was thinking about hooking a computer running dsnet-compatible tools with capture card and ethernet adapter to the TOOL for purposes like remote development and continuous integration. It's nice to relax on my couch while programming and testing PS2 homebrew software.
 
I did some work on reversing dsnet tools. Everything compiles, but crashes (probably because I need to fix the pointer size)
Progress is currently stopped because I'm having intermittent issues with my laptop. Sometimes, it hangs when I move it around. It works again when I apply pressure to it.

I'll have to get that fixed.
 
Progress is currently stopped because I'm having intermittent issues with my laptop. Sometimes, it hangs when I move it around. It works again when I apply pressure to it.

I'll have to get that fixed.

I had a similar issue which in my case was caused by an old SSD (We call it Schrödinger's SSD now... It solely works if you do not look at it.). It couldn't hold power or so... It could be something else of course, but I thought it is worth mentioning (it).
 
Last edited:
I'm back!

Figured out why my laptop was having problems
It would randomly hang on disk access, and randomly fail to find the internal disk on startup
showing the "insert disk" screen
and it would randomly start working again if I pushed the bottom where the disk cable was
xdJgPWh.jpg


I replaced the disk/sleep LED/IR sensor cable, and everything is good again!
 
Oh great! So it wasn't directly related to the internal HDD, but to something close to it and 'powering down' or 'loosing connection'... My reply wasn't too far off, lol! :D
 
I just finished implementing stubs in ps2iop.

I won't bother to reimplement the following since they are already in ps2sdk:
  • SIO2MAN
  • PADMAN
  • MCMAN
  • MCSERV
The following may be implemented in other sources:
  • SECRMAN
  • UDNL
  • CDVDFSV
  • CDVDMAN
Also, I noticed some errors in mcman and padman headers, so I'll roll fixes for those into my cleanup7 branch of ps2sdk.
 
A SECRMAN-Module possibly can be found in the FMCB-Installer's source. ;)

Not sure about UDNL, but I think there was something.

CDVDFSV and CDVDMAN had been worked on by romz a decade ago. There should be some open source counterparts (with proper DVD-DL-Handling).
 
UDNL can be obtained from FMCBInstaller. The source code allows for 2 types to be built: one similar to the one from ROM, as well as the type for DVD player updates (with only support for the embedded image). Tthe bugs from the Sony UDNL module were fixed.

EELOAD can be obtained from the code I released on assemblergames. The EELOAD programs from the system driver update (for FMCB etc) were based on the one from the boot ROM and works similar. The one from the MBR is also similar, except that it uses a different boot address (0x00084000).

EESYNC can be obtained from OPL. The only difference between it and the official module, is that it would not allocate space based on the SECRMAN module installed. Until today, I do not know why the official module does that because that space is seemingly never referenced elsewhere.
The EESYNC module from DNAS images also have a secret memory wipe.

Is it not possible to absorb the existing code from FPS2BIOS? Even if the licensing is not clear, it was created for PCSX2, wasn't it?

I do not know if you know this, but you must be clear about your goal. There were many SDK releases over the years, but the newer modules might not be compatible with the earlier releases. All PS2 boot ROMs contain the same basic modules, for forward and backward compatibility. Those board-specific modules can be ignored.
Sony also kept the bugged syscalls unpatched through their runtime patches, to ensure that older games that used the bugged syscalls will not be affected. So it might be good to ensure that old bugs still exist if the affected function was used by games.

CDVDFSV and CDVDMAN had been worked on by romz a decade ago. There should be some open source counterparts (with proper DVD-DL-Handling).

It is psuedo code, not compilable.
 
Last edited:
Looks like Shuji from assemblergames got hands on a performance analyzer. Take a look here: https://assemblergames.com/threads/shujis-collection.66555/#post-982050

Looks like it has an ethernet card attached, but I can't really read the model number to determine if it is a 1Gbit card.
Also, looks like the AIF board is gone, and the IDE port is integrated into the PS2 mainboard.

It would be nice to hook up an ethernet card with modern speed and features to my PS2 TOOL.

Progress on dsnet and IOP 3.1.0 software reimplementation is going slowly.
Also, I've decided to split the Makefile changes and other changes for ps2sdk. The makefile changes are formatted like how automake is formatted.

I've been wanting to work on my APA/PFS FUSE implementation, but I haven't touched it in the last three weeks.
 
I did some work on reversing dsnet tools. Everything compiles, but crashes (probably because I need to fix the pointer size)
Progress is currently stopped because I'm having intermittent issues with my laptop. Sometimes, it hangs when I move it around. It works again when I apply pressure to it.

I'll have to get that fixed.

Not sure what you used but to do so but I got dsnetm compiled after using retdec to decompile it in roughly 10 minutes. Not that it actually runs but it's a start. I got fed up with being unable to run an i386 binary in wlinux wsl. (I can but I have to deal with errors everytime dpkg tries to configure qemu-user-static)

edit: compiling qemu myself fixed that right up. Only annoying thing is I can only have build-essentials:i386 OR build-essentials:amd64 installed at one time.
 
Last edited:
Not sure what you used but to do so but I got dsnetm compiled after using retdec to decompile it in roughly 10 minutes. Not that it actually runs but it's a start. I got fed up with being unable to run an i386 binary in wlinux wsl. (I can but I have to deal with errors everytime dpkg tries to configure qemu-user-static)
I was thinking of extracting the function signatures (which I've done) then using IDA to decompile.
Retdec doesn't provide an easy way to insert function signatures.
 

Similar threads

Back
Top