XMCSERV

Discuss the development of software, tools, libraries and anything else that helps make ps2dev happen.

Moderators: cheriff, Herben

Post Reply
superfrog12
Posts: 14
Joined: Sun Jun 22, 2008 11:20 pm

XMCSERV

Post by superfrog12 »

hello my friends,

today i have continue my study of PS2 bios and i have some new question...what is difference of MCMAN/MCSERV and XMCMAN/XMCSERV modules? I have already searched forum and found nice description by Lukasz. so from what I understand, XMCMAN/XMCSERV are improved version of MCMAN/MCSERV but they are not available in older PS2 BIOS. is this correct? So if one game wants to use XMCMAN/XMCSERV, it has to put modules on disc also so old PS2 can run the game, right? what is purpose of putting XMCMAN/XMCSERV in BIOS at all then, when one game needs to load them from the dvd disc anyway? this same question goes for all the X modules like XLOADFILE and so on...

what are the actual improvements of XMCMAN/XMCSERV? from looking at ps2sdk sources, XMCSERV does not add any new RPC functions, no? so is it only internal module changes? to make confusion perfect I also found module mc2_s1.irx on some game disc, which is also memory card module according to the export library and .iopmod names. but it is not in my BIOS, which is the V10 BIOS...so is it yet a more improved version of XMCSERV and is it included in newer PS2 BIOS such as PS2Slim?

ok one other question and this is all my question for today then :-)
I have found a code in this forum

Code: Select all

SifLoadModule("rom1:SIO2MAN", 0, NULL); 
in this thread: http://forums.ps2dev.org/viewtopic.php?t=6003

what is difference in this from using rom0:SIO2MAN? what is difference between rom0 and rom1 when loading file from bios?

thank you,
superfrog12
User avatar
Lukasz
Posts: 248
Joined: Mon Jan 19, 2004 8:37 pm
Location: Denmark
Contact:

Post by Lukasz »

I believe all commercial games have a IOP replacement image named ioprpXXX.img, where XXX is a number, I think the lowest number I've seen is 150 (1.50) and the highest 300 (3.00). These image contain replacement modules for the BIOS, as new features are added and bugs are fixed. There is a tool in the ps2dev.org subversion repository for inspection of these images, called ps2img.

Check out with

Code: Select all

svn co svn://svn.ps2dev.org/ps2/trunk/ps2img
From the README

Code: Select all

This program enables the inspection of PS2 ROM image files, the
so-called *.IMG files. An IMG file is a simple archive containing a
set of IOP IRX modules that are intended to be updated version of 
some of the drivers located in your PS2 BIOS. When the IOP is reset,
the IRXs present in this image will be used instead of the original
ones present in the BIOS.

With ps2img you can create your own IMG files, or modifying existing
IMG files (ie deleting or adding IRXs from/to the archive).
As for the memory card X modules you refer to, you have to remember that there are version dependencies between modules. For instance the memory card modules (MCMAN) and joypad modules (PADMAN) both depend on the SIO2 module (SIO2MAN). So if the SIO2 module gets updated from version 1.0 to 1.1, due to changes in the joypad module, then both the joypad and memory card module must now change their SIO2 module imports to version 1.1, to be compatible.

In the case of the X memory card modules, I think that the OSD got updated to support multitaps, so you could view your memory cards in the memory card browser, when inserted into a multitap. This meant changes to SIO2 module, which then lead to changes in both the joypad and memory card modules, hence the X modules. It also meant the addition of the new multitap module (XMTAPMAN). The old modules were kept to provide compatability, which is nice for us using PS2SDK, as this means that PS2SDK works with all PS2 models :-)

In order to find out what lead to the addition of other X modules, you would need to reverse both versions and find the difference. Usually people look into the X modules because the regular modules are missing some functionality, like multitap support in the case of the joypad modules.

As for rom1, I have never really used or looked into it, but I seem to remember that you can only access rom1 after you load rom0:ADDDRV, as also done in the thread you link to. Also as indicated in the thread, I think rom01 holds the PS2 DVD player and related functionality. Maybe they just ran out of space for rom0 and decided it was cheaper to add a seperate and smaller ROM chip :-)
superfrog12
Posts: 14
Joined: Sun Jun 22, 2008 11:20 pm

Post by superfrog12 »

hello Lukasz,

thank you for valuable reply, i appreciate it much. i wanted to figure out more about rom workings so took a look at ADDDRV which makes few calls to SSBUSC which i have not figured out yet, then makes call to romdrv library func4 to map memory 0xbe000000 to rom1 device. so rom1 directory is located at 0xbe000000.

romdrv export func 4 will add new rom device to system:
int add_rom_dev( int devno, void *mem )

romdrv library also export func 5 which will remove one added device:
int rem_rom_dev( int devno )

you can call it rem_rom_dev(0) to remove rom0 device and so on...

this is my findings so far...

good bye,
superfrog12
Post Reply