I implemented support for splitting decompiled output by filename in my STABS parser, and diffed most of the EE/IOP differences of the other tools. I think the last big thing to diff is the debugger.
For now, I'll leave the network daemon and the MRP driver for later.
---
I'd think it would be nice to make a mock framework for libraries in ps2sdk, so they can be compiled and run in a Linux based environment and use code quality tools like american fuzzy lop, Valgrind, clang-tidy etc. to find more issues. It would be basically be doing what is done in pfsshell, but implementing more abstracted APIs like cdvd, rom/ioprp, spu2, memory card, usb, etc.
---
lwext4 seems like a nice library to embed ext4 support.
https://github.com/gkostka/lwext4
If getting fragments offset and size is implemented, it could be useful for OPL.
---
I've been taking a look at more filesystem solutions for UDPBD.
It seems like nbdkit is a pretty good library.
There exists the linuxdisk plugin for nbdkit, which can expose a filesystem as ext2/ext3/ext4.
https://libguestfs.org/nbdkit-linuxdisk-plugin.1.html
There also exists the floppy plugin for nbdkit, which can expose a filesystem as FAT32. Unlike QEMU VVFAT, it is not marked as experimental and can support file above 2GB up to 4GB.
https://libguestfs.org/nbdkit-floppy-plugin.1.html
Both plugins mentioned above expose a read-only filesystem. However, there exists a copy-on-write filter in nbdkit which can make it possible to make those filesystems read-write:
https://libguestfs.org/nbdkit-cow-filter.1.html
The copy-on-write filter implementation in nbdkit is cleaner than the write support in QEMU VVFAT.
So, basically, the lifecycle would go like this:
1. Start nbdkit server with linuxdisk or floppy plugin
2. Attach NBD block device exposed with nbdkit
3. Start UDPBD server with attached NBD block device
4. Use UDPBD client however you want
5. Stop UDPBD server
6. Mount NBD block device exposed with nbdkit
7. Synchronize changes to local directory using e.g. rsync
8. Unmount NBD block device
9. Detach NBD block device
10. Stop nbdkit server (destroying the COW data, which should be synced in step 7)