Last updated: 21:40 4/11/2012

Notes on rom0:MCSERV:
---------------------
Calls to McReadPage(), McWritePage() and McEraseBlock() from the EE have the port numbers automatically increased by 2.
Calling McEraseBlock() from the EE will also involve the McCalculateChecksum() function, which means that McEraseBlock() does not calculate the ECC values on it's own.

Notes on rom0:MCMAN:
--------------------
It was previously discovered and reported that functions like McReadPage() don't work and only return an error code.
I've gotten that function working by specifying 2 as the port number.

I think that it's one of those SCE Memory Card-related functions that suffers from that port 2 irregularity.
During my research on the XSECRMAN (secrman_special) module, I noticed that some of it's functions expected a value of 2 to referrence the first MC slot. Odd huh?

Since rom0:MCMAN is old, it's quite possible that port 2 is indeed the PS2's memory card slot 1 and the old MCMAN module doesn't software remap the port numbers (In other words, it follows an older design for SCE MC-related modules).
Well, it's all a speculation anyway. I didn't do a real disassembly of the rom0:MCMAN module so I don't have proof that that is the case.

Not to mention that the status and information of the cards have to be retrieved first (Probably required to initialize some internal values within MCMAN), or calls to McReadPage() will fail again.

UPDATE 2011/09/14: I've confirmed that port 2 has to be specified because of the design of my XSECRMAN module and in some older versions of functions in rom0:MCMAN.
	Port 0 and 1 seem to be used with Playstation and the PDA memory cards, while ports 2 and 3 are used with Playstation 2 cards.
	With the normal MCMAN functions, the port number is automatically incremented by 2 when the SIO2 packet is generated.
	Special thanks goes to Jimmikaelkael again, as his MCMAN module was really helpful for research.

Notes on the handling of the memory card's filesystem:
------------------------------------------------------
Since rom0:MCMAN lacks any functions that return information on the filesystem of the inserted memory card, I've written a replacement function that returns data of the memory card's filesystem from the filesystem itself.

I think that rom0:MCMAN does this too, as a corrupted card will a damaged page 0 usually cannot be formatted by the browser anymore.

Anyway, care should be taken when dealing with corrupted cards. Dumping or writting to a corrupted card might cause the PS2 to freeze.

Notes on the generation and removal of cross-linked files:
----------------------------------------------------------
DO NOT CREATE ANY FILES AFTER USING ANY OF THE FILESYSTEM MANIPULATION FUNCTIONS FROM MCTOOLS OR YOU WILL DAMAGE YOUR MEMORY CARD'S FILESYSTEM!!!

MCMAN caches the filesystem (Or rather, part of it). When you use functions from MCTOOLS, you are changing the contents of the memory card and not the cache within MCMAN.

This will probably result in a catastrophic loss of data as the filesystem will probably end up being mutated when MCMAN decides to update the FAT based on outdated information in it's cache. :(

Notes on determining the OSDSYS update path:
--------------------------------------------
From my own research, it seems like consoles sporting a BIOS older than v1.60 will look for OSDSYS updates named osdXXX.elf, where XXX represents the version number of BIOS rounded up to the nearest 10 (E.g. a console with BIOS v1.01 will look for osd110.elf).
