int main(void) { gfxInitDefault(); if(R_FAILED(ndspInit())) return 0; #ifdef DEBUG LightLock_Init(&debug_lock); consoleInit(GFX_BOTTOM, &bottomScreen); consoleDebugInit(debugDevice_CONSOLE); #endif consoleInit(GFX_TOP, &topScreen); //aptHook(&hookCookie, AptEventHook, NULL); svcCreateEvent(&bufferReadyConsumeRequest, RESET_STICKY); svcCreateEvent(&bufferReadyProduceRequest, RESET_STICKY); getFiles(); bool exit = false; while (!exit) { std::string filename = select_file(); exit = stream_file(filename); } ndspExit(); gfxExit(); return 0; }
Result ndspInit(void) { Result rc = 0; if (AtomicPostIncrement(&ndspRefCount)) return 0; if (!componentBin && !ndspFindAndLoadComponent()) { rc = MAKERESULT(RL_PERMANENT, RS_NOTFOUND, 41, RD_NOT_FOUND); goto _fail0; } LightLock_Init(&ndspMutex); ndspInitMaster(); ndspiInitChn(); rc = cfguInit(); if (R_SUCCEEDED(rc)) { u8 outMode; rc = CFGU_GetConfigInfoBlk2(sizeof(outMode), 0x70001, &outMode); if (R_SUCCEEDED(rc)) ndspMaster.outputMode = outMode; cfguExit(); } rc = dspInit(); if (R_FAILED(rc)) return rc; rc = ndspInitialize(false); if (R_FAILED(rc)) goto _fail1; rc = svcCreateEvent(&sleepEvent, 0); if (R_FAILED(rc)) goto _fail2; ndspThread = threadCreate(ndspThreadMain, 0x0, NDSP_THREAD_STACK_SIZE, 0x18, -2, true); if (!ndspThread) goto _fail3; aptHook(&aptCookie, ndspAptHook, NULL); return 0; _fail3: svcCloseHandle(sleepEvent); _fail2: ndspFinalize(false); _fail1: dspExit(); if (componentFree) { free((void*)componentBin); componentBin = NULL; } _fail0: AtomicDecrement(&ndspRefCount); return rc; }
static void ndspInitMaster(void) { memset(&ndspMaster, 0, sizeof(ndspMaster)); LightLock_Init(&ndspMaster.lock); ndspMaster.masterVol = 1.0f; ndspMaster.outputMode = NDSP_OUTPUT_STEREO; ndspMaster.clippingMode = NDSP_CLIP_SOFT; ndspMaster.outputCount = 2; ndspMaster.surround.depth = 0x7FFF; ndspMaster.surround.rearRatio = 0x8000; }
Result aptInit(void) { Result ret=0; if (AtomicPostIncrement(&aptRefCount)) return 0; // Initialize APT stuff, escape load screen. ret = __apt_initservicehandle(); if(R_FAILED(ret)) goto _fail; if(R_FAILED(ret=APT_GetLockHandle(0x0, &aptLockHandle))) goto _fail; svcCloseHandle(aptuHandle); currentAppId = envGetAptAppId(); svcCreateEvent(&aptStatusEvent, 0); svcCreateEvent(&aptSleepSync, 0); LightLock_Init(&aptStatusMutex); aptStatus=0; if(!aptIsCrippled()) { aptOpenSession(); if(R_FAILED(ret=APT_Initialize(currentAppId, &aptEvents[0], &aptEvents[1])))return ret; aptCloseSession(); aptOpenSession(); if(R_FAILED(ret=APT_Enable(0x0))) goto _fail; aptCloseSession(); // create APT close event svcCreateEvent(&aptEvents[2], 0); // After a cycle of APT_Finalize+APT_Initialize APT thinks the // application is suspended, so we need to tell it to unsuspend us. if (aptIsReinit()) { aptOpenSession(); APT_PrepareToJumpToApplication(0x0); aptCloseSession(); aptOpenSession(); APT_JumpToApplication(0x0, 0x0, 0x0); aptCloseSession(); } aptOpenSession(); if(R_FAILED(ret=APT_NotifyToWait(currentAppId)))goto _fail; aptCloseSession(); // create APT event handler thread aptEventHandlerThread = threadCreate(aptEventHandler, 0x0, APT_HANDLER_STACKSIZE, 0x31, -2, true); // Wait for the state to become APT_RUNNING aptWaitStatusEvent(); } else aptAppStarted(); return 0; _fail: AtomicDecrement(&aptRefCount); return ret; }
void RecursiveLock_Init(RecursiveLock* lock) { LightLock_Init(&lock->lock); lock->thread_tag = 0; lock->counter = 0; }
void LightEvent_Init(LightEvent* event, ResetType reset_type) { LightLock_Init(&event->lock); LightEvent_SetState(event, reset_type == RESET_STICKY ? -2 : -1); }
void Handler::init() { LightLock_Init(&lck); svcCreateEvent(&eventHandle, 0); }