11#include "irx_imports.h"
17 int m_cdvdman_intr_efid;
18 void (*m_cdvdman_poff_cb)(
void *arg);
19 void *m_cdvdman_poffarg;
25static unsigned int _sceCdPoffEmu(
void *userdata)
30 Kprintf(
"PowerOff Simulation Start\n");
31 iSetEventFlag(arg->m_cdvdman_intr_efid, 4);
32 iSetEventFlag(arg->m_cdvdman_intr_efid, 0x10);
33 if ( arg->m_cdvdman_poff_cb )
34 arg->m_cdvdman_poff_cb(arg->m_cdvdman_poffarg);
35 iSignalSema(arg->m_sema_id);
39int _start(
int ac,
char **av)
50 semaparam.initial = 0;
53 sCdPtbl.m_sema_id = CreateSema(&semaparam);
54 sCdPtbl.m_cdvdman_intr_efid = sceCdSC(0xFFFFFFF5, &unusedval);
55 sCdPtbl.m_cdvdman_poff_cb = 0;
56 if ( (
unsigned int)sceCdSC(0xFFFFFFF7, &unusedval) < 0x222 )
58 Kprintf(
"This cdvdman.irx doesn't support the simulation of PowerOff_Callback of IOP\n");
62 sCdPtbl.m_cdvdman_poffarg = (
void *)(uiptr)sceCdSC(0xFFFFFFE6, (
int *)&sCdPtbl.m_cdvdman_poff_cb);
65 sCdPoff_time.lo = 0x90000;
66 SetAlarm(&sCdPoff_time, _sceCdPoffEmu, &sCdPtbl);
67 WaitSema(sCdPtbl.m_sema_id);
68 DeleteSema(sCdPtbl.m_sema_id);