Page 1 of 1
About UMCDR
Posted: Tue Mar 30, 2004 6:44 am
by hermes
Hi. I do not know if this forum is where I can speak about this question, but I was working yesterday on this type of CDROM format.
First I want to congratulate to Drakonite by this discovery ;). Yesterday, I modified CDGENPS2 , so that it could create compatible images with UMCDR directly, and I discovered that it is not necessary to include a first track of audio and that it is not necessary either that the firs track of audio be an true audio track. They can be only zeros :wink:
Well, also I programmed in PS2 a modification of the module of reading CDVD.IRX that we used in PS2REALITY MEDIAPLAYER, considering the new CdReadA function, and I obtained that our program works with this type of CDROM :D, but I was with a problem:
-The reading of audio, is a reading RAW of 2352 bytes, without correction of errors and without checksum of data .If a reading error is produced, we do not have form to know it
For that reason I have implemented a CRC: If the reading is incorrect, I repeat the reading :wink:. this is the reason of this post, we needed to unify criteria, so that there are not too many incompatible formats among them.
I use this simple routine in PS2:
buf-> is a unsigned char [2352]
unsigned CRC_32(unsigned *buf)
{
int n;
unsigned val=0,cicle=0;
buf+=24; // position of data
// crc is after the 2048 bytes of data (4 Bytes)
if(buf[512]==0) return 0; //OK 'old' version UMCDR (compatibility)
for(n=0;n<512;n++) {val+=buf[n]^cicle;cicle^=0x55555555;}
if(buf[n]==val) return 0; //OK
return 1; // ERROR!
}
Also I need to know why two tracks of audio are used, when the data can be recorded in an audio track of and gaining 8 seconds of data (verified that works).Ah! limitation of size... does not exist some :wink: I have a film in a CDROM of 80 minutes and it work fine 8)
Well, questions:
what format we must use? one or two tracks?
what type of CRC we must use?
please Drakonite, how you are the discoverer of this o system, I want to know you opinion!
thanks and sorry by my badly English :lol:
Re: About UMCDR
Posted: Tue Mar 30, 2004 8:33 am
by mharris
hermes wrote: -The reading of audio, is a reading RAW of 2352 bytes, without correction of errors and without checksum of data .If a reading error is produced, we do not have form to know it
AFAIK, this is by design - a glitch in reading audio data isn't a big deal, and the larger block size means more data can be read per block. Whereas with data, you're more concerned about reading the correct data, so they added ECC, etc. with a corresponding loss in capacity. The redbook (CD-DA) standard is online somewhere, Google for it...
Re: About UMCDR
Posted: Tue Mar 30, 2004 10:29 am
by Drakonite
The 2 track format was a design choice that allows a lot of neat features to be done, including a much better autodetection than could be done otherwise, but at this point I have neither outlined how to use any of the special features nor written utils that do them, but rest assure there is more than one reason for that first audio track.
ATM the first track is supposed to be a nice audio track which warns its not a true audio disc, but there is a bug that causes it to be unrecognized garbage. It wasn't a big enough problem to warrent delaying release any longer.
A proper ECC extension to UMCDR (which would be both forward and backward compatible with current UMCDR release) has been planned, but not for version 1.0 release. Proper ECC is a bit more complex than a simple CRC function like you are using ;), and will actually recover from errors instead of trying repeatedly assuming it was a one time read error (where as it's more likely a scratch which your scheme would not recover from)
As long as ps2reality mediaplayer is using hiryu's libcdvd everything that is needed to support umcdr's is available on the umcdr webpage. If it doesn't use hiryu's libcdvd, for a project as influential as ps2reality mediaplayer I would be more than willing to convert it for you if I had access to the source code.
Posted: Tue Mar 30, 2004 12:54 pm
by pixel
I would really be interested in seeing any ECC correcting code actually ;-) I mean, fast and workable code. I went through a lot of tries and stuff. The ECC/EDC generation is quite easy, and one can even find open source librairies/code doing that (fast). But for the correcting piece of code...
Posted: Thu Apr 01, 2004 7:59 am
by hermes
Drakonite, the module cdvd.irx that we used, is based on the first version released by Hiryu & Sjeep but it is not compatible with the new versions.
well, this does not represent any problem, because my system supports as much CDROM in format UMCDR, how format CDX ;)
About the ECC, I am not no expert in this question, but I believe that that is more useful from the point of view to correct a small error of recording,
that from the point of view to try to correct a read error. Surely, it consumes a precious time in the IOP that utilities how the PS2R Mediaplayer cannot be allowed :(.
The DVD only use a CRC of verification, for example and according to my tests until the moment, the CRC is being effective ;)
I have had a quite interesting idea: still we have left to us long time before being able to make another version public of the Mediaplayer and also something is needed that support to other applications, how PGEN (the version unofficial 1.12 does not work to me :O )
The idea consists of which I have created a new module that extends CDVDMAN .This module can be loaded from MCLOADER and seems that it goes very well with PS2R Mediaplayer 1,50, Oggplayer and PGEN
CDX.IRX is only 7KB but it qualifies to the PS2 to be able to read discs in format UMCDR and CDX, directly. For it, it takes the control from some functions of CDVDMAN:
CdGetDiskType() ->this function gives back 0x12 (PS2 CD ) , when the disc is of type 0xfd (AUDIO CD) with this, the applications that verify the type of disc, run.
CdRead(), CdSync(), CdBreak()->these functions complete the emulation. When the disc is a nonaudio format, it works of transparent form, but if cdrom is in audio fomat , then it detects if it is UMCDR or CDX
and it uses the CdReadA call instead of CdRead.
Of course, CdReadA reads 2352 bytes!. For that reason, CDX.IRX uses internally, a buffer of up to 16 sectors. If the reading uses a greater number of sectors (Mediaplayer 1.50 reads up to 128 sectors in a reading) the emulation divides the reading of transparent form for the user. it supports synchronous and asynchronous readings.
In order to avoid failures of readings when we changed a disc UMCDR by another CDX, the program also captures the interruption of the CDROM.
In next days, all this will be available ;)
Posted: Thu Apr 01, 2004 9:13 am
by Drakonite
hermes wrote:Drakonite, the module cdvd.irx that we used, is based on the first version released by Hiryu & Sjeep but it is not compatible with the new versions.
As I've said, I'd be more than happy to make whatever modifications are necessary to ps2reality media player to make it work with the current UMCDR.
PGEN (the version unofficial 1.12 does not work to me :O )
Any program which creates true .iso (ISO9660 Filesystem Image) files can be used for creating the iso to be converted, however the person who wrote the windows image creation tutorial for me used cdgenps2 and it had worked for them, but I have since come to find out that cdgenps2 does not work correctly and creates corrupt .iso files. I have not had time to create an updated tutorial using a working program, so for now I just have to warn people that cdgenps2 is broken and to use some other iso creation program.
As for the cdvdman stuff you are talking about, I do not have any intention of doing anything like that, nor do I condone it, as it can far too easily get into illegal activities.
Posted: Thu Apr 01, 2004 2:14 pm
by mrbrown
Hermes,
It's disconcerting to see you try and turn a useful development tool into something used for warez. I'm locking this thread, and if I see you in any more threads talking about CDVD emulation or circumvention, I'm banning you from these forums.