30#include <sys/_tz_structs.h>
36#define CD_SERVER_SCMD 0x80000593
39 CD_SCMD_READCLOCK = 0x01,
44 CD_SCMD_READ_ILINK_ID,
45 CD_SCMD_WRITE_ILINK_ID,
56 CD_SCMD_READ_CONSOLE_ID,
57 CD_SCMD_WRITE_CONSOLE_ID,
58 CD_SCMD_READ_MECHACON_VERSION,
63 CD_SCMD_AUTO_ADJUST_CTRL,
64 CD_SCMD_READ_MODEL_NAME,
65 CD_SCMD_WRITE_MODEL_NAME,
69 CD_SCMD_CANCELPOWEROFF,
99int CdConfigRdWrNumBlocks;
101extern int initVersionCdvdman;
102extern SifRpcClientData_t clientSCmd;
103extern int sCmdSemaId;
104extern u8 sCmdRecvBuff[];
108extern int CdConfigRdWrNumBlocks;
112int _CdCheckSCmd(
int cmd);
118 if (_CdCheckSCmd(CD_SCMD_READCLOCK) == 0)
122 printf(
"Libcdvd call Clock read 1\n");
124 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READCLOCK, 0, NULL, 0, sCmdRecvBuff, 16, NULL, NULL) < 0) {
125 SignalSema(sCmdSemaId);
129 memcpy(clock, UNCACHED_SEG(sCmdRecvBuff + 4), 8);
132 printf(
"Libcdvd call Clock read 2\n");
134 SignalSema(sCmdSemaId);
135 return *(
int *)UNCACHED_SEG(sCmdRecvBuff);
144time_t ps2time(time_t *t)
155 convertfrombcd(&ps2tim);
157 printf(
"ps2time: %d-%d-%d %d:%d:%d\n",
165 tim.tm_sec = ps2tim.
second;
166 tim.tm_min = ps2tim.
minute;
167 tim.tm_hour = ps2tim.
hour;
168 tim.tm_mday = ps2tim.
day;
169 tim.tm_mon = ps2tim.
month - 1;
170 tim.tm_year = ps2tim.
year + 100;
175 offset_save = tz->__tzrule[0].offset;
176 tz->__tzrule[0].offset = -9 * 60 * 60;
180 tz->__tzrule[0].offset = offset_save;
192 if (_CdCheckSCmd(CD_SCMD_WRITECLOCK) == 0)
195 memcpy(&sCmdSendBuff.clock, clock, 8);
197 if (sceSifCallRpc(&clientSCmd, CD_SCMD_WRITECLOCK, 0, &sCmdSendBuff, 8, sCmdRecvBuff, 16, NULL, NULL) < 0) {
198 SignalSema(sCmdSemaId);
202 memcpy(clock, UNCACHED_SEG(sCmdRecvBuff + 4), 8);
203 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
205 SignalSema(sCmdSemaId);
213 if (_CdCheckSCmd(CD_SCMD_GETDISKTYPE) == 0)
216 if (sceSifCallRpc(&clientSCmd, CD_SCMD_GETDISKTYPE, 0, NULL, 0, sCmdRecvBuff, 4, NULL, NULL) < 0) {
217 SignalSema(sCmdSemaId);
221 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
223 SignalSema(sCmdSemaId);
231 if (_CdCheckSCmd(CD_SCMD_GETERROR) == 0)
234 if (sceSifCallRpc(&clientSCmd, CD_SCMD_GETERROR, 0, NULL, 0, sCmdRecvBuff, 4, NULL, NULL) < 0) {
235 SignalSema(sCmdSemaId);
239 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
241 SignalSema(sCmdSemaId);
249 if (_CdCheckSCmd(CD_SCMD_TRAYREQ) == 0)
252 sCmdSendBuff.s32arg = param;
254 if (sceSifCallRpc(&clientSCmd, CD_SCMD_TRAYREQ, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 8, NULL, NULL) < 0) {
255 SignalSema(sCmdSemaId);
260 *traychk = *(u32 *)UNCACHED_SEG(sCmdRecvBuff + 4);
261 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
263 SignalSema(sCmdSemaId);
269 if (_CdCheckSCmd(CD_SCMD_SCMD) == 0)
272 sCmdSendBuff.scmd.cmdNum = cmdNum;
273 sCmdSendBuff.scmd.inBuffSize = inBuffSize;
274 memset(sCmdSendBuff.scmd.inBuff, 0, 16);
276 memcpy(sCmdSendBuff.scmd.inBuff, inBuff, inBuffSize);
278 if (sceSifCallRpc(&clientSCmd, CD_SCMD_SCMD, 0, &sCmdSendBuff, 20, sCmdRecvBuff, 16, NULL, NULL) < 0) {
279 SignalSema(sCmdSemaId);
284 memcpy(outBuff, UNCACHED_SEG(sCmdRecvBuff), 16);
285 SignalSema(sCmdSemaId);
293 if (_CdCheckSCmd(CD_SCMD_STATUS) == 0)
296 if (sceSifCallRpc(&clientSCmd, CD_SCMD_STATUS, 0, NULL, 0, sCmdRecvBuff, 4, NULL, NULL) < 0) {
297 SignalSema(sCmdSemaId);
302 printf(
"status called\n");
303 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
305 SignalSema(sCmdSemaId);
313 if (_CdCheckSCmd(CD_SCMD_BREAK) == 0)
316 if (sceSifCallRpc(&clientSCmd, CD_SCMD_BREAK, 0, NULL, 0, sCmdRecvBuff, 4, NULL, NULL) < 0) {
317 SignalSema(sCmdSemaId);
320 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
322 SignalSema(sCmdSemaId);
330 if (_CdCheckSCmd(CD_SCMD_CANCELPOWEROFF) == 0)
333 if (sceSifCallRpc(&clientSCmd, CD_SCMD_CANCELPOWEROFF, 0, NULL, 0, sCmdRecvBuff, 8, NULL, NULL) < 0) {
334 SignalSema(sCmdSemaId);
338 *result = *(u32 *)UNCACHED_SEG(sCmdRecvBuff + 4);
339 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
341 SignalSema(sCmdSemaId);
345int sceCdBlueLedCtrl(u8 control, u32 *result)
349 if (_CdCheckSCmd(CD_SCMD_BLUELEDCTRL) == 0)
352 sCmdSendBuff.u32arg = control;
353 if (sceSifCallRpc(&clientSCmd, CD_SCMD_BLUELEDCTRL, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 8, NULL, NULL) < 0) {
354 SignalSema(sCmdSemaId);
358 *result = *(u32 *)UNCACHED_SEG(sCmdRecvBuff + 4);
359 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
361 SignalSema(sCmdSemaId);
369 if (_CdCheckSCmd(CD_SCMD_POWEROFF) == 0)
372 if (sceSifCallRpc(&clientSCmd, CD_SCMD_POWEROFF, 0, NULL, 0, sCmdRecvBuff, 8, NULL, NULL) < 0) {
373 SignalSema(sCmdSemaId);
377 *result = *(u32 *)UNCACHED_SEG(sCmdRecvBuff + 4);
378 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
380 SignalSema(sCmdSemaId);
388 if (_CdCheckSCmd(CD_SCMD_MMODE) == 0)
391 sCmdSendBuff.s32arg = media;
392 if (sceSifCallRpc(&clientSCmd, CD_SCMD_MMODE, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 4, NULL, NULL) < 0) {
393 SignalSema(sCmdSemaId);
397 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
399 SignalSema(sCmdSemaId);
403int sceCdChangeThreadPriority(
int priority)
407 if (_CdCheckSCmd(CD_SCMD_SETTHREADPRI) == 0)
410 sCmdSendBuff.s32arg = priority;
411 if (sceSifCallRpc(&clientSCmd, CD_SCMD_SETTHREADPRI, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 4, NULL, NULL) < 0) {
412 SignalSema(sCmdSemaId);
416 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
418 SignalSema(sCmdSemaId);
422int _CdCheckSCmd(
int cur_cmd)
425 if (PollSema(sCmdSemaId) != sCmdSemaId) {
427 printf(
"Scmd fail sema cur_cmd:%d keep_cmd:%d\n", cur_cmd, sCmdNum);
432 SignalSema(sCmdSemaId);
437 if (HasIopRebootedSinceLastCall())
438 memset(&clientSCmd, 0,
sizeof(clientSCmd));
439 if (clientSCmd.server)
444 printf(
"Libcdvd bind err S cmd\n");
446 if (clientSCmd.server != 0)
458 if (_CdCheckSCmd(CD_SCMD_FORBID_READ) == 0)
460 if (sceSifCallRpc(&clientSCmd, CD_SCMD_FORBID_READ, 0, NULL, 0, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
461 *status = ((u32 *)UNCACHED_SEG(sCmdRecvBuff))[1];
462 result = ((
int *)UNCACHED_SEG(sCmdRecvBuff))[0];
466 SignalSema(sCmdSemaId);
474 if (_CdCheckSCmd(CD_SCMD_SPIN_CTRL) == 0)
476 sCmdSendBuff.u32arg = speed;
477 if (sceSifCallRpc(&clientSCmd, CD_SCMD_SPIN_CTRL, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
478 result = ((
int *)UNCACHED_SEG(sCmdRecvBuff))[0];
482 SignalSema(sCmdSemaId);
490 if (_CdCheckSCmd(CD_SCMD_BOOT_CERTIFY) == 0)
493 memcpy(sCmdSendBuff.bcertify, romname, 4);
494 if (sceSifCallRpc(&clientSCmd, CD_SCMD_BOOT_CERTIFY, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 4, NULL, NULL) >= 0) {
495 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
500 SignalSema(sCmdSemaId);
508 if (_CdCheckSCmd(CD_SCMD_READ_SUBQ) == 0)
511 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READ_SUBQ, 0, NULL, 0, sCmdRecvBuff, 0x12, NULL, NULL) >= 0) {
512 memcpy(buffer, UNCACHED_SEG(&sCmdRecvBuff[8]), 0x12);
513 *status = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
514 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
519 SignalSema(sCmdSemaId);
527 if (_CdCheckSCmd(CD_SCMD_FORBID_DVDP) == 0)
530 if (sceSifCallRpc(&clientSCmd, CD_SCMD_FORBID_DVDP, 0, NULL, 0, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
531 *result = ((u32 *)UNCACHED_SEG(sCmdRecvBuff))[1];
532 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
537 SignalSema(sCmdSemaId);
545 if (_CdCheckSCmd(CD_SCMD_AUTO_ADJUST_CTRL) == 0)
548 sCmdSendBuff.s32arg = mode;
549 if (sceSifCallRpc(&clientSCmd, CD_SCMD_AUTO_ADJUST_CTRL, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
550 *result = ((u32 *)UNCACHED_SEG(sCmdRecvBuff))[1];
551 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
556 SignalSema(sCmdSemaId);
560int sceCdDecSet(
unsigned char arg1,
unsigned char arg2,
unsigned char shift)
564 if (_CdCheckSCmd(CD_SCMD_DEC_SET) == 0)
567 sCmdSendBuff.decSet.arg1 = arg1;
568 sCmdSendBuff.decSet.arg2 = arg2;
569 sCmdSendBuff.decSet.shift = shift;
571 if (sceSifCallRpc(&clientSCmd, CD_SCMD_DEC_SET, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 16, NULL, NULL) >= 0) {
572 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
577 SignalSema(sCmdSemaId);
585 if (_CdCheckSCmd(CD_SCMD_SET_HD_MODE) == 0)
587 sCmdSendBuff.u32arg = mode;
588 if (sceSifCallRpc(&clientSCmd, CD_SCMD_SET_HD_MODE, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 4, NULL, NULL) >= 0) {
589 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
593 SignalSema(sCmdSemaId);
601 if (NumBlocks < 0x45) {
602 if (_CdCheckSCmd(CD_SCMD_OPEN_CONFIG) == 0)
605 sCmdSendBuff.u32arg = ((NumBlocks & 0xFF) << 16) | (mode & 0xFF) | ((block & 0xFF) << 8);
606 CdConfigRdWrNumBlocks = NumBlocks;
607 if (sceSifCallRpc(&clientSCmd, CD_SCMD_OPEN_CONFIG, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
608 *status = ((u32 *)UNCACHED_SEG(sCmdRecvBuff))[1];
609 result = ((
int *)UNCACHED_SEG(sCmdRecvBuff))[0];
613 SignalSema(sCmdSemaId);
624 if (_CdCheckSCmd(CD_SCMD_CLOSE_CONFIG) == 0)
627 if (sceSifCallRpc(&clientSCmd, CD_SCMD_CLOSE_CONFIG, 0, NULL, 0, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
628 *result = ((u32 *)UNCACHED_SEG(sCmdRecvBuff))[1];
629 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
634 SignalSema(sCmdSemaId);
642 if (_CdCheckSCmd(CD_SCMD_READ_CONFIG) == 0)
645 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READ_CONFIG, 0, NULL, 0, sCmdRecvBuff, 0x408, NULL, NULL) >= 0) {
646 *result = ((
int *)UNCACHED_SEG(sCmdRecvBuff))[1];
647 memcpy(buffer, &((u32 *)UNCACHED_SEG(sCmdRecvBuff))[2], (CdConfigRdWrNumBlocks << 4) - CdConfigRdWrNumBlocks);
648 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
653 SignalSema(sCmdSemaId);
661 if (_CdCheckSCmd(CD_SCMD_WRITE_CONFIG) == 0)
664 memcpy(sCmdSendBuff.data, buffer, (CdConfigRdWrNumBlocks << 4) - CdConfigRdWrNumBlocks);
665 if (sceSifCallRpc(&clientSCmd, CD_SCMD_WRITE_CONFIG, 0, &sCmdSendBuff, 0x400, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
666 *result = ((
int *)UNCACHED_SEG(sCmdRecvBuff))[1];
667 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
672 SignalSema(sCmdSemaId);
681 if (_CdCheckSCmd(CD_SCMD_READ_NVM) == 0)
684 sCmdSendBuff.nvm.address = address;
685 sCmdSendBuff.nvm.value = 0;
686 sCmdSendBuff.nvm.pad = 0;
688 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READ_NVM, 0, &sCmdSendBuff, 8, sCmdRecvBuff, 0x10, NULL, NULL) >= 0) {
689 *data = *(
unsigned short int *)UNCACHED_SEG(&sCmdRecvBuff[8]);
690 *result = *(u8 *)UNCACHED_SEG(&sCmdRecvBuff[10]);
691 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
696 SignalSema(sCmdSemaId);
704 if (_CdCheckSCmd(CD_SCMD_WRITE_NVM) == 0)
707 sCmdSendBuff.nvm.address = address;
708 sCmdSendBuff.nvm.value = data;
709 sCmdSendBuff.nvm.pad = 0;
711 if (sceSifCallRpc(&clientSCmd, CD_SCMD_WRITE_NVM, 0, &sCmdSendBuff, 8, sCmdRecvBuff, 0x10, NULL, NULL) >= 0) {
712 *result = *(u8 *)UNCACHED_SEG(&sCmdRecvBuff[10]);
713 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
718 SignalSema(sCmdSemaId);
722int sceCdRI(
unsigned char *buffer, u32 *result)
726 if (_CdCheckSCmd(CD_SCMD_READ_ILINK_ID) == 0)
729 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READ_ILINK_ID, 0, NULL, 0, sCmdRecvBuff, 16, NULL, NULL) >= 0) {
730 memcpy(buffer, UNCACHED_SEG(&sCmdRecvBuff[8]), 8);
731 *result = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
732 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
737 SignalSema(sCmdSemaId);
741int sceCdWI(
const unsigned char *buffer, u32 *status)
745 if (_CdCheckSCmd(CD_SCMD_WRITE_ILINK_ID) == 0)
748 memcpy(sCmdSendBuff.id, buffer, 8);
749 if (sceSifCallRpc(&clientSCmd, CD_SCMD_WRITE_ILINK_ID, 0, &sCmdSendBuff, 8, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
750 *status = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
751 result = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
756 SignalSema(sCmdSemaId);
764 if (_CdCheckSCmd(CD_SCMD_READ_CONSOLE_ID) == 0)
767 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READ_CONSOLE_ID, 0, NULL, 0, sCmdRecvBuff, 16, NULL, NULL) >= 0) {
768 memcpy(buffer, UNCACHED_SEG(&sCmdRecvBuff[8]), 8);
769 *result = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
770 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
775 SignalSema(sCmdSemaId);
783 if (_CdCheckSCmd(CD_SCMD_WRITE_CONSOLE_ID) == 0)
786 memcpy(sCmdSendBuff.id, buffer, 8);
787 if (sceSifCallRpc(&clientSCmd, CD_SCMD_WRITE_CONSOLE_ID, 0, &sCmdSendBuff, 8, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
788 *result = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
789 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
794 SignalSema(sCmdSemaId);
798int sceCdMV(
unsigned char *buffer, u32 *result)
802 if (_CdCheckSCmd(CD_SCMD_READ_MECHACON_VERSION) == 0)
805 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READ_MECHACON_VERSION, 0, NULL, 0, sCmdRecvBuff, 16, NULL, NULL) >= 0) {
807 memcpy(buffer, UNCACHED_SEG(&sCmdRecvBuff[8]), (initVersionCdvdman >= 0x200) ? 4 : 3);
808 *result = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
809 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
814 SignalSema(sCmdSemaId);
822 if (_CdCheckSCmd(CD_SCMD_CTRL_AD_OUT) == 0)
825 sCmdSendBuff.s32arg = arg1;
826 if (sceSifCallRpc(&clientSCmd, CD_SCMD_CTRL_AD_OUT, 0, &sCmdSendBuff, 4, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
827 *result = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
828 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
833 SignalSema(sCmdSemaId);
841 if (_CdCheckSCmd(CD_SCMD_READ_MODEL_NAME) == 0)
844 if (sceSifCallRpc(&clientSCmd, CD_SCMD_READ_MODEL_NAME, 0, NULL, 0, sCmdRecvBuff, 0x18, NULL, NULL) >= 0) {
845 memcpy(buffer, UNCACHED_SEG(&sCmdRecvBuff[8]), 16);
846 *result = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
847 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
852 SignalSema(sCmdSemaId);
860 if (_CdCheckSCmd(CD_SCMD_WRITE_MODEL_NAME) == 0)
863 memcpy(sCmdSendBuff.mname, buffer, 16);
864 if (sceSifCallRpc(&clientSCmd, CD_SCMD_WRITE_MODEL_NAME, 0, &sCmdSendBuff, 0x10, sCmdRecvBuff, 8, NULL, NULL) >= 0) {
865 *result = *(u32 *)UNCACHED_SEG(&sCmdRecvBuff[4]);
866 status = *(
int *)UNCACHED_SEG(sCmdRecvBuff);
871 SignalSema(sCmdSemaId);
888 *result = (u8)out[0];
894int _CdSyncS(
int mode)
898 printf(
"S cmd wait\n");
899 while (sceSifCheckStatRpc(&clientSCmd))
904 return sceSifCheckStatRpc(&clientSCmd);
int sceCdSpinCtrlEE(u32 speed)
int sceCdCancelPOffRdy(u32 *result)
int sceCdPowerOff(u32 *result)
int sceCdForbidRead(u32 *status)
int sceCdReadSUBQ(void *buffer, u32 *status)
int sceCdSetHDMode(u32 mode)
int sceCdWI(const unsigned char *buffer, u32 *status)
int sceCdRI(unsigned char *buffer, u32 *result)
int sceCdReadNVM(u32 address, u16 *data, u8 *result)
int sceCdCloseConfig(u32 *result)
int sceCdReadClock(sceCdCLOCK *clock)
int sceCdWriteConfig(const void *buffer, u32 *result)
int sceCdRM(char *buffer, u32 *result)
int sceCdGetDiskType(void)
int sceCdCtrlADout(int arg1, u32 *result)
int sceCdMmode(int media)
int sceCdAutoAdjustCtrl(int mode, u32 *result)
int sceCdApplySCmd(u8 cmdNum, const void *inBuff, u16 inBuffSize, void *outBuff)
int sceCdWriteConsoleID(const unsigned char *buffer, u32 *result)
int sceCdReadConsoleID(unsigned char *buffer, u32 *result)
int sceCdBootCertify(const u8 *romname)
int sceCdReadConfig(void *buffer, u32 *result)
int sceCdWM(const char *buffer, u32 *result)
int sceCdWriteNVM(u32 address, u16 data, u8 *result)
int sceCdMV(unsigned char *buffer, u32 *result)
int sceCdNoticeGameStart(u8 arg1, u32 *result)
int sceCdForbidDVDP(u32 *result)
int sceCdOpenConfig(int block, int mode, int NumBlocks, u32 *status)
int sceCdTrayReq(int param, u32 *traychk)
int sceCdWriteClock(sceCdCLOCK *clock)
int sceCdDecSet(unsigned char arg1, unsigned char arg2, unsigned char shift)