Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
Functions | Variables
cdlgetlocp.c File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

 CESTER_TEST (cdlGetLocP, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_GETLOCP;uint32_t ackTime=waitCDRomIRQ();uint8_t cause1=ackCDRomCause();uint8_t ctrl1=CDROM_REG0 &~3;struct LocPResult response;uint8_t responseSize=readResponse((uint8_t *)&response);uint8_t ctrl2=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause1b=CDROM_REG3_UC;cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(0x38, ctrl1);cester_assert_uint_eq(0x18, ctrl2);int inPregap=response.index==0;uint32_t relative=MSF2LBA(btoi(response.m), btoi(response.s), btoi(response.f));uint32_t absolute=MSF2LBA(btoi(response.am), btoi(response.as), btoi(response.af));uint32_t onefifty=absolute;if(inPregap) { onefifty=absolute+relative;} else { onefifty=absolute - relative;} cester_assert_uint_eq(1, response.track);cester_assert_uint_ge(onefifty, 150);cester_assert_uint_ge(response.index, 0);cester_assert_uint_le(response.index, 1);cester_assert_uint_ge(absolute, 145);cester_assert_uint_lt(absolute, 155);cester_assert_uint_lt(relative, 5);cester_assert_uint_eq(8, responseSize);cester_assert_uint_ge(ackTime, 500);cester_assert_uint_lt(ackTime, 7000);ramsyscall_printf("Basic getlocP, ack in %ius\n", ackTime);ramsyscall_printf("Full response: track: %02x, index: %02x, relative: %02x:%02x:%02x(%2i), absolute: %02x:%02x:%02x(%2i)\n", response.track, response.index, response.m, response.s, response.f, relative, response.am, response.as, response.af, absolute);) CESTER_TEST(cdlGetLocPafterSeekP
 
 if (!resetDone)
 
 initializeTime ()
 
 cester_assert_uint_eq (3, cause1)
 
 cester_assert_uint_eq (0xe0, cause1b)
 
 cester_assert_uint_eq (0x38, ctrl1)
 
 cester_assert_uint_eq (0x18, ctrl2)
 
 if (inPregap)
 
 cester_assert_uint_eq (1, response.track)
 
 cester_assert_uint_ge (onefifty, 150)
 
 cester_assert_uint_eq (0, inPregap)
 
 cester_assert_uint_ge (absolute, 224950)
 
 cester_assert_uint_lt (absolute, 225000)
 
 cester_assert_uint_ge (relative, 224800)
 
 cester_assert_uint_lt (relative, 224850)
 
 cester_assert_uint_eq (8, responseSize)
 
 cester_assert_uint_ge (ackTime, 500)
 
 cester_assert_uint_lt (ackTime, 7000)
 
 ramsyscall_printf ("Basic getlocP after seekP, ack in %ius\n", ackTime)
 
 ramsyscall_printf ("Full response: track: %02x, index: %02x, relative: %02x:%02x:%02x(%2i), absolute: %02x:%02x:%02x(%2i)\n", response.track, response.index, response.m, response.s, response.f, relative, response.am, response.as, response.af, absolute)
 
 CESTER_TEST (cdlGetLocPafterSeekL, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int seekDone=seekLTo(0x50, 0, 0);if(!seekDone) { cester_assert_true(seekDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_GETLOCP;uint32_t ackTime=waitCDRomIRQ();uint8_t cause1=ackCDRomCause();uint8_t ctrl1=CDROM_REG0 &~3;struct LocPResult response;uint8_t responseSize=readResponse((uint8_t *)&response);uint8_t ctrl2=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause1b=CDROM_REG3_UC;cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(0x38, ctrl1);cester_assert_uint_eq(0x18, ctrl2);int inPregap=response.index==0;uint32_t relative=MSF2LBA(btoi(response.m), btoi(response.s), btoi(response.f));uint32_t absolute=MSF2LBA(btoi(response.am), btoi(response.as), btoi(response.af));uint32_t onefifty=absolute;if(inPregap) { onefifty=absolute+relative;} else { onefifty=absolute - relative;} cester_assert_uint_eq(1, response.track);cester_assert_uint_ge(onefifty, 150);cester_assert_uint_eq(0, inPregap);cester_assert_uint_eq(1, response.index);cester_assert_uint_ge(absolute, 224990);cester_assert_uint_le(absolute, 225005);cester_assert_uint_ge(relative, 224840);cester_assert_uint_le(relative, 224855);cester_assert_uint_eq(8, responseSize);cester_assert_uint_ge(ackTime, 500);cester_assert_uint_lt(ackTime, 7000);ramsyscall_printf("Basic getlocP after seekL, ack in %ius\n", ackTime);ramsyscall_printf("Full response: track: %02x, index: %02x, relative: %02x:%02x:%02x(%2i), absolute: %02x:%02x:%02x(%2i)\n", response.track, response.index, response.m, response.s, response.f, relative, response.am, response.as, response.af, absolute);) CESTER_TEST(cdlGetLocPinT5
 
 cester_assert_uint_eq (5, response.track)
 
 cester_assert_uint_eq (316500, start)
 
 cester_assert_uint_ge (absolute, 316535)
 
 cester_assert_uint_lt (absolute, 316575)
 
 cester_assert_uint_ge (relative, 35)
 
 cester_assert_uint_lt (relative, 75)
 
 ramsyscall_printf ("Basic getlocP after seekP in track5's, ack in %ius\n", ackTime)
 

Variables

 test_instances
 
int resetDone = resetCDRom()
 
int seekDone = seekPTo(0x50, 0, 0)
 
 CDROM_REG0 = 0
 
 CDROM_REG1 = CDL_GETLOCP
 
uint32_t ackTime = waitCDRomIRQ()
 
uint8_t cause1 = ackCDRomCause()
 
uint8_t ctrl1 = CDROM_REG0 & ~3
 
struct LocPResult response
 
uint8_t responseSize = readResponse((uint8_t*)&response)
 
uint8_t ctrl2 = CDROM_REG0 & ~3
 
uint8_t cause1b = CDROM_REG3_UC
 
int inPregap = response.index == 0
 
uint32_t relative = MSF2LBA(btoi(response.m), btoi(response.s), btoi(response.f))
 
uint32_t absolute = MSF2LBA(btoi(response.am), btoi(response.as), btoi(response.af))
 
uint32_t onefifty = absolute
 
 else
 
uint32_t start = absolute
 

Function Documentation

◆ cester_assert_uint_eq() [1/9]

cester_assert_uint_eq ( 0  ,
inPregap   
)

◆ cester_assert_uint_eq() [2/9]

cester_assert_uint_eq ( 0x18  ,
ctrl2   
)

◆ cester_assert_uint_eq() [3/9]

cester_assert_uint_eq ( 0x38  ,
ctrl1   
)

◆ cester_assert_uint_eq() [4/9]

cester_assert_uint_eq ( 0xe0  ,
cause1b   
)

◆ cester_assert_uint_eq() [5/9]

cester_assert_uint_eq ( 1  ,
response.  track 
)

◆ cester_assert_uint_eq() [6/9]

cester_assert_uint_eq ( 3  ,
cause1   
)

◆ cester_assert_uint_eq() [7/9]

cester_assert_uint_eq ( 316500  ,
start   
)

◆ cester_assert_uint_eq() [8/9]

cester_assert_uint_eq ( 5  ,
response.  track 
)

◆ cester_assert_uint_eq() [9/9]

cester_assert_uint_eq ( 8  ,
responseSize   
)

◆ cester_assert_uint_ge() [1/6]

cester_assert_uint_ge ( absolute  ,
224950   
)

◆ cester_assert_uint_ge() [2/6]

cester_assert_uint_ge ( absolute  ,
316535   
)

◆ cester_assert_uint_ge() [3/6]

cester_assert_uint_ge ( ackTime  ,
500   
)

◆ cester_assert_uint_ge() [4/6]

cester_assert_uint_ge ( onefifty  ,
150   
)

◆ cester_assert_uint_ge() [5/6]

cester_assert_uint_ge ( relative  ,
224800   
)

◆ cester_assert_uint_ge() [6/6]

cester_assert_uint_ge ( relative  ,
35   
)

◆ cester_assert_uint_lt() [1/5]

cester_assert_uint_lt ( absolute  ,
225000   
)

◆ cester_assert_uint_lt() [2/5]

cester_assert_uint_lt ( absolute  ,
316575   
)

◆ cester_assert_uint_lt() [3/5]

cester_assert_uint_lt ( ackTime  ,
7000   
)

◆ cester_assert_uint_lt() [4/5]

cester_assert_uint_lt ( relative  ,
224850   
)

◆ cester_assert_uint_lt() [5/5]

cester_assert_uint_lt ( relative  ,
75   
)

◆ CESTER_TEST() [1/2]

CESTER_TEST ( cdlGetLocP  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } initializeTime(); CDROM_REG0 = 0; CDROM_REG1 = CDL_GETLOCP; uint32_t ackTime = waitCDRomIRQ(); uint8_t cause1 = ackCDRomCause(); uint8_t ctrl1 = CDROM_REG0 & ~3; struct LocPResult response; uint8_t responseSize = readResponse((uint8_t*)&response); uint8_t ctrl2 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause1b = CDROM_REG3_UC; cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(0x38, ctrl1); cester_assert_uint_eq(0x18, ctrl2);           int inPregap = response.index == 0; uint32_t relative = MSF2LBA(btoi(response.m), btoi(response.s), btoi(response.f)); uint32_t absolute = MSF2LBA(btoi(response.am), btoi(response.as), btoi(response.af)); uint32_t onefifty = absolute; if (inPregap) { onefifty = absolute + relative; } else { onefifty = absolute - relative; } cester_assert_uint_eq(1, response.track); cester_assert_uint_ge(onefifty, 150); cester_assert_uint_ge(response.index, 0); cester_assert_uint_le(response.index, 1); cester_assert_uint_ge(absolute, 145); cester_assert_uint_lt(absolute, 155); cester_assert_uint_lt(relative, 5); cester_assert_uint_eq(8, responseSize);   cester_assert_uint_ge(ackTime, 500); cester_assert_uint_lt(ackTime, 7000); ramsyscall_printf("Basic getlocP, ack in %ius\n", ackTime); ramsyscall_printf("Full response: track: %02x, index: %02x, relative: %02x:%02x:%02x(%2i), absolute: %02x:%02x:%02x(%2i)\n",        response.track, response.index,        response.m, response.s, response.f, relative,        response.am, response.as, response.af, absolute    ); 
)

◆ CESTER_TEST() [2/2]

CESTER_TEST ( cdlGetLocPafterSeekL  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int seekDone = seekLTo(0x50, 0, 0); if (!seekDone) { cester_assert_true(seekDone); return; } initializeTime(); CDROM_REG0 = 0; CDROM_REG1 = CDL_GETLOCP; uint32_t ackTime = waitCDRomIRQ(); uint8_t cause1 = ackCDRomCause(); uint8_t ctrl1 = CDROM_REG0 & ~3; struct LocPResult response; uint8_t responseSize = readResponse((uint8_t*)&response); uint8_t ctrl2 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause1b = CDROM_REG3_UC; cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(0x38, ctrl1); cester_assert_uint_eq(0x18, ctrl2);       int inPregap = response.index == 0; uint32_t relative = MSF2LBA(btoi(response.m), btoi(response.s), btoi(response.f)); uint32_t absolute = MSF2LBA(btoi(response.am), btoi(response.as), btoi(response.af)); uint32_t onefifty = absolute; if (inPregap) { onefifty = absolute + relative; } else { onefifty = absolute - relative; } cester_assert_uint_eq(1, response.track); cester_assert_uint_ge(onefifty, 150); cester_assert_uint_eq(0, inPregap); cester_assert_uint_eq(1, response.index); cester_assert_uint_ge(absolute, 224990); cester_assert_uint_le(absolute, 225005); cester_assert_uint_ge(relative, 224840); cester_assert_uint_le(relative, 224855); cester_assert_uint_eq(8, responseSize);   cester_assert_uint_ge(ackTime, 500); cester_assert_uint_lt(ackTime, 7000); ramsyscall_printf("Basic getlocP after seekL, ack in %ius\n", ackTime); ramsyscall_printf("Full response: track: %02x, index: %02x, relative: %02x:%02x:%02x(%2i), absolute: %02x:%02x:%02x(%2i)\n",        response.track, response.index,        response.m, response.s, response.f, relative,        response.am, response.as, response.af, absolute    ); 
)

◆ if() [1/2]

if ( !  resetDone)

◆ if() [2/2]

if ( inPregap  )

◆ initializeTime()

initializeTime ( )

◆ ramsyscall_printf() [1/3]

ramsyscall_printf ( "Basic getlocP after seekP in track5'  s,
ack in %ius\n"  ,
ackTime   
)

◆ ramsyscall_printf() [2/3]

ramsyscall_printf ( "Basic getlocP after  seekP,
ack in %ius\n"  ,
ackTime   
)

◆ ramsyscall_printf() [3/3]

ramsyscall_printf ( "Full response: track: %  02x,
index:%  02x,
relative:%02x:%02x:%  02x%2i,
absolute:%02x:%02x:%02x(%2i)\n"  ,
response.  track,
response.  index,
response.  m,
response.  s,
response.  f,
relative  ,
response.  am,
response.  as,
response.  af,
absolute   
)

Variable Documentation

◆ absolute

uint32_t absolute = MSF2LBA(btoi(response.am), btoi(response.as), btoi(response.af))

◆ ackTime

uint32_t ackTime = waitCDRomIRQ()

◆ cause1

uint8_t cause1 = ackCDRomCause()

◆ cause1b

uint8_t cause1b = CDROM_REG3_UC

◆ CDROM_REG0

CDROM_REG0 = 0

◆ CDROM_REG1

CDROM_REG1 = CDL_GETLOCP

◆ ctrl1

uint8_t ctrl1 = CDROM_REG0 & ~3

◆ ctrl2

uint8_t ctrl2 = CDROM_REG0 & ~3

◆ else

else
Initial value:
{
uint32_t absolute
Definition cdlgetlocp.c:125
uint32_t onefifty
Definition cdlgetlocp.c:126
uint32_t relative
Definition cdlgetlocp.c:124

◆ inPregap

int inPregap = response.index == 0

◆ onefifty

uint32_t onefifty = absolute

◆ relative

uint32_t relative = MSF2LBA(btoi(response.m), btoi(response.s), btoi(response.f))

◆ resetDone

int resetDone = resetCDRom()

◆ response

struct LocPResult response

◆ responseSize

uint8_t responseSize = readResponse((uint8_t*)&response)

◆ seekDone

int seekDone = seekPTo(0x50, 0, 0)

◆ start

uint32_t start = absolute

◆ test_instances

test_instances