Exemplo n.º 1
0
int CdRead(u32 lsn, u32 sectors, void *buf, CdRMode *mode){
	u32	i;
	u8*	buff;
	int rmode;

	switch (mode->datapattern) {
		case CdSecS2048:
			rmode = CDVD_MODE_2048; break;
		case CdSecS2328:
			rmode = CDVD_MODE_2328; break;
		case CdSecS2340:
			rmode = CDVD_MODE_2340; break;
		default:
			return 0;
	}

	for (i=0; i<sectors; i++){
		if (CDVDreadTrack(lsn+i, rmode)==-1)
			return 0;
		buff = CDVDgetBuffer();
		if (buff==NULL) return 0;

		switch (mode->datapattern){
			case CdSecS2048:
				memcpy((void*)((uptr)buf+2048*i), buff, 2048);break;//only data
			case CdSecS2328:
				memcpy((void*)((uptr)buf+2328*i), buff, 2328);break;//without sync & head & sub
			case CdSecS2340:
				memcpy((void*)((uptr)buf+2340*i), buff, 2340);break;//without sync
		}
	}
	return 1;
}
Exemplo n.º 2
0
void ReadTrack() {
	cdr.Prev[0] = itob(cdr.SetSector[0]);
	cdr.Prev[1] = itob(cdr.SetSector[1]);
	cdr.Prev[2] = itob(cdr.SetSector[2]);

	CDR_LOG("KEY *** %x:%x:%x\n", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]);
	cdr.RErr = CDVDreadTrack(MSFtoLSN(cdr.SetSector), CDVD_MODE_2352);
}
Exemplo n.º 3
0
int DvdRead(u32 lsn, u32 sectors, void *buf, CdRMode *mode){
	u32	i;
	u8*	buff;

	for (i=lsn; i<(lsn+sectors); i++){
		if (CDVDreadTrack(i, CDVD_MODE_2048)==-1)
			return 0;
		buff = CDVDgetBuffer();
		if (buff==NULL) return 0;

//		switch (mode->datapattern){
//			case CdSecS2064:
				((u32*)buf)[0] = i + 0x30000;
				memcpy((u8*)buf+12, buff, 2048);
				(u8*)buf+= 2064; break;
//			default:
//				return 0;
//		}
	}

	return 1;
}