HDL Dump server v0.8.7 is a modified version of HDL Dump server v0.8.6 with the server, protocol stack and PS2HDD driver from OPL.
I'm providing it as a proof-of-concept that full DMA support does exist for the SMAP.
It uses my own optimized version of PS2SMAP that has full (For transmission and receival) 128-byte block DMA transfers. Redundant code was stripped out, and less important checks were removed.
Right now, it can attain speeds of roughly 1.60MB/s with my SCPH-39006 Playstation 2 console and my PC (About 60% faster than the SMAP driver shipped with OPL).
I can see more ways for improvement though:
1. Port the DMA-support code to EEUG's SMAP driver (Found in OPL or SMS). His driver contains optimizations in MIPS assembly.
However, OPL's SMAP driver totally lacks DMA support and the SMAP driver of SMS only supports DMA transfers during data receival (Only one way).
2. Replace the PS2IP (LWIP) protocol stack with another stack that has less overhead or port the protocol stack to run on the EE instead.
3. Stick the DMA-support code into another SMAP driver; The system used by pktdrv seems good - on my systems, it can push data around at over 2MB/s - without DMA!
I could have ported my driver for use within OPL, but OPL cannot be compiled on my computers at the moment as my PS2SDK is a little too outdated (I have to stick with r1689 or I'll break some of my other homebrew).
Plus I'll like to spend some time on my other interests, my family and my school work (I need to maintain my grades) before I graduate and get comscripted into Singapore's army as part of my compulsary National Service (NS). D:
1. I have tested the SMAP driver on my SCPH-39006, but not on my SCPH-10000 console. Compatibility cannot be guaranteed with the older console then, especially since I remember that an older version of my DMA-enabled SMAP driver didn't work well on that console.
2. I didn't do any tests on my SCPH-77006 console this time, but I'm sure that it'll work great with it.
3. The loader of this HDL dump server won't be compiled automatically at compile time as I had disabled that in it's makefile.
4. I didn't test the other functionality of the HDL dump server other than installing games. D:
5. I've re-added some of those checks and the intermediary buffer into the SMAP drivers. (See below for more details)
Modified SMAP driver source code: http://www.mediafire.com/?l1arl1d6bdjqhj5
(Unofficial) HDL Dump server v0.8.7 source code: http://www.mediafire.com/?xky0xc74d4f9dkx
(Unofficial) HDL Dump server v0.8.7 binary + README file: http://www.mediafire.com/?htonb3byy94bkvt
EDIT: Replaced all uploaded files with more stable versions.
The source code of a modified version of OPL's SMAP driver with DMA support in included in the archive containing the source code of HDL Dump server v0.8.7, under the "SMSMAP" folder.
I had re-added some of those checks and the intermediary buffer into the SMAP drivers in a bid to make them more stable (HDL Dump kept giving me error 10054 lol).
I don't know whether that error kept occurring because the OPL HDL dump server (And/or HDL dump) isn't stable at higher speeds, or the tweaks I've done to the SMAP driver had introduced bugs.
So, with those tweaks undone:
I think that by removing some checks, better performance can be achieved (E.g. modifying the LWIP stack to allocate memory of sizes rounded up to the nearest 128 bytes and modifying CopyToFIFO() to only perform 128-byte block DMA transfers to the SMAP).
The intermediary buffer might probably be removable too....
If you make all of these modifications, you will end up with the driver that I had originally uploaded.
Good luck and have fun!