static void frontend_ctr_deinit(void *data) { extern PrintConsole* currentConsole; Handle lcd_handle; u8 not_2DS; (void)data; #ifndef IS_SALAMANDER global_t *global = global_get_ptr(); global->verbosity = true; #ifdef HAVE_FILE_LOGGER if (global->log_file) fclose(global->log_file); global->log_file = NULL; #endif if(gfxBottomFramebuffers[0] == (u8*)currentConsole->frameBuffer) wait_for_input(); CFGU_GetModelNintendo2DS(¬_2DS); if(not_2DS && srvGetServiceHandle(&lcd_handle, "gsp::Lcd") >= 0) { u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = 0x00110040; cmdbuf[1] = 2; svcSendSyncRequest(lcd_handle); svcCloseHandle(lcd_handle); } exitCfgu(); csndExit(); gfxExit(); #if 0 sdmcExit(); fsExit(); hidExit(); aptExit(); srvExit(); #endif #endif }
int main(int argc, char** argv) { // Initialize services gfxInitDefault(); initCfgu(); u8 language = 0; Result res; // Init console for text output consoleInit(GFX_BOTTOM, NULL); // Read the language field from the config savegame. res = CFGU_GetSystemLanguage(&language); // Print return value and language code printf(" Result: 0x%x\n", (int)res); printf("Language code: %d", (int)language); // Main loop while (aptMainLoop()) { hidScanInput(); u32 kDown = hidKeysDown(); if (kDown & KEY_START) break; // break in order to return to hbmenu // Flush and swap framebuffers gfxFlushBuffers(); gfxSwapBuffers(); gspWaitForVBlank(); } // Exit services exitCfgu(); gfxExit(); return 0; }
int main(int argc, char **argv) { srvInit(); aptInit(); gfxInit(); acInit(); initCfgu(); ptmInit(); hidInit(NULL); irrstInit(NULL); fsInit(); hbInit(); Handle fileHandle; u64 size; u32 bytesRead; int restore; // Set main script char path[256]; if (argc > 0){ int latest_slash = 0; int i=5; while (argv[0][i] != '\0'){ if (argv[0][i] == '/'){ latest_slash = i; } i++; } strcpy(path,&argv[0][5]); path[latest_slash-5] = 0; strcpy(start_dir,path); strcpy(cur_dir,path); // Set current dir }else{ strcpy(start_dir,"/"); strcpy(cur_dir,"/"); // Set current dir for GW Mode } while(aptMainLoop()) { restore=0; char error[256]; errMsg = runScript((const char*)index_lua, true); if (errMsg != NULL); { // Fake error to force interpreter shutdown if (strstr(errMsg, "lpp_exit_04")){ break; } strcpy(error,"Error: "); strcat(error,errMsg); strcat(error,"\n\nPress A to restart\nPress B to exit"); } while (restore==0){ gspWaitForVBlank(); RefreshScreen(); ClearScreen(0); ClearScreen(1); DebugOutput(error); hidScanInput(); if(hidKeysDown() & KEY_A){ strcpy(cur_dir,start_dir); restore=1; }else if(hidKeysDown() & KEY_B){ restore=2; } gfxFlushBuffers(); gfxSwapBuffers(); } if (restore==2){ break; } } fsExit(); irrstExit(); hidExit(); ptmExit(); hbExit(); acExit(); exitCfgu(); gfxExit(); aptExit(); srvExit(); return 0; }
Result backupAllExtdata(u8 *filebuffer, size_t bufsize) { Result ret=0; u8 region=0; memset(filebuffer, 0, bufsize); ret = initCfgu(); if(ret!=0) { printf("initCfgu() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } ret = CFGU_SecureInfoGetRegion(®ion); if(ret!=0) { printf("CFGU_SecureInfoGetRegion() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } exitCfgu(); u32* extdataList = (u32*)malloc(0x10000); if (extdataList==NULL) { printf("malloc failed\n"); gfxFlushBuffers(); gfxSwapBuffers(); return -1; } int i; u32 extdataCount = 0; ret = EnumerateExtSaveData((u8*) extdataList, 0x10000, &extdataCount, false); if(ret!=0) { printf("EnumerateExtSaveData() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } for (i=0; i<extdataCount; ++i) { dumpArchive(mediatype_SDMC, extdataList[i], ARCH_EXTDATA, user_extdata_dumpfolder, filebuffer, bufsize); } extdataCount = 0; ret = EnumerateExtSaveData((u8*) extdataList, 0x10000, &extdataCount, true); if(ret!=0) { printf("EnumerateExtSaveData() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } for (i=0; i<extdataCount; ++i) { dumpArchive(mediatype_NAND, extdataList[i], ARCH_SHARED_EXTDATA, shared_extdata_dumpfolder, filebuffer, bufsize); } free(extdataList); printf("Success!\n"); gfxFlushBuffers(); gfxSwapBuffers(); //svcSleepThread(5000000000LL); return 0; }
Result backupAllExtdata(u8 *filebuffer, size_t bufsize) { Result ret=0; u8 region=0; memset(filebuffer, 0, bufsize); ret = initCfgu(); if(ret!=0) { printf("initCfgu() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } ret = CFGU_SecureInfoGetRegion(®ion); if(ret!=0) { printf("CFGU_SecureInfoGetRegion() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } exitCfgu(); amInit(); u32 titleCount = 0; ret = AM_GetTitleCount(mediatype_SDMC, &titleCount); if(ret!=0) { printf("AM_GetTitleCount() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } u64* titleList = (u64*)malloc(sizeof(u64) * titleCount); ret = AM_GetTitleIdList(mediatype_SDMC, titleCount, titleList); if(ret!=0) { printf("AM_GetTitleIdList() failed: 0x%08x\n", (unsigned int)ret); gfxFlushBuffers(); gfxSwapBuffers(); return ret; } int i; for (i=0; i<titleCount; ++i) { unsigned int title = (titleList[i]>>8) & 0xFFFFFF; dumpArchive(mediatype_SDMC, title, ARCH_EXTDATA, user_extdata_dumpfolder, filebuffer, bufsize); if (title == 0x725) { svcSleepThread(5000000000LL); } } free(titleList); amExit(); for (i=0xE0000000; i<0xE0000100; ++i) { dumpArchive(mediatype_NAND, i, ARCH_SHARED_EXTDATA, shared_extdata_dumpfolder, filebuffer, bufsize); } for (i=0xF0000000; i<0xF0000100; ++i) { dumpArchive(mediatype_NAND, i, ARCH_SHARED_EXTDATA, shared_extdata_dumpfolder, filebuffer, bufsize); } printf("Success!\n"); gfxFlushBuffers(); gfxSwapBuffers(); //svcSleepThread(5000000000LL); return 0; }