static bool HardwareInit(DEV_ID DevId) { switch(DevId) { case DEV_ID_SD: if(!IsCardLink()) { return FALSE; } FSDeInit(DEV_ID_SD); if(SdCardInit()) { return FALSE; } if(!FSInit(DEV_ID_SD)) { return FALSE; } return TRUE; case DEV_ID_USB: Usb2SetDetectMode(1, 0); UsbSetCurrentPort(UDISK_PORT_NUM); if(!IsUDiskLink()) { return FALSE; } FSDeInit(DEV_ID_SD); FSDeInit(DEV_ID_USB); if(!HostStorInit()) { return FALSE; } if(!FSInit(DEV_ID_USB)) { return FALSE; } return TRUE; default: break; } return FALSE; }
int main(){ if (Initialize()) while (1); //7.X Keys stuff File KeyFile; const char *keyfile = "/slot0x25KeyX.bin"; if(FileOpen(&KeyFile, keyfile, 0)){ uint8_t keyX[16]; FileRead(&KeyFile, keyX, 16, 0); FileClose(&KeyFile); setup_aeskeyX(0x25, keyX); }else{ if (sysver < 7) { ConsoleInit(); ConsoleSetTitle(strings[STR_WARNING]); print(strings[STR_ERROR_OPENING], keyfile); print(strings[STR_WARNING_KEYFILE]); print(strings[STR_PRESS_BUTTON_ACTION], strings[STR_BUTTON_A], strings[STR_CONTINUE]); ConsoleShow(); WaitForButton(BUTTON_A); } } //That's the Main Menu initialization, easy and cool OpenAnimation(); MenuInit(&MainMenu); MenuShow(); while (true) { uint32_t pad_state = InputWait(); if (pad_state & (BUTTON_DOWN | BUTTON_RIGHT | BUTTON_R1)) MenuNextSelection(); //I try to support every theme style if (pad_state & (BUTTON_UP | BUTTON_LEFT | BUTTON_L1)) MenuPrevSelection(); if (pad_state & BUTTON_A) { OpenAnimation(); MenuSelect(); } if (pad_state & BUTTON_SELECT) { fadeOut(); ShutDown(); } if (pad_state & BUTTON_START) { fadeOut(); returnHomeMenu(); } TryScreenShot(); MenuShow(); } FSDeInit(); return 0; }
int main(){ Initialize(); DrawString(TOP_SCREEN, "SUPPORT THE ORIGINAL, NOT THE IMITATION!", 75, 240-10, GREY, BLACK); //7.X Keys stuff File KeyFile; if(FileOpen(&KeyFile, "/slot0x25KeyX.bin", 0)){ u8 keyX[16]; FileRead(&KeyFile, keyX, 16, 0); FileClose(&KeyFile); setup_aeskeyX(0x25, keyX); DrawString(TOP_SCREEN, " NewKeyX ", 0, 240-8, GREEN, BLACK); }else{ if(GetSystemVersion() < 3){ ConsoleInit(); print("WARNING:\n\nCannot find slot0x25KeyX.bin.\nSome titles decryption will fail,\nand some some EmuNANDs will not boot.\n\nPress A to continue...\n"); ConsoleShow(); WaitForButton(BUTTON_A); } DrawString(TOP_SCREEN, " NewKeyX ", 0, 240-8, RED, BLACK); } DrawString(TOP_SCREEN, " EmuNAND ", 0, 240-16, checkEmuNAND() ? GREEN : RED, BLACK); //That's the Main Menu initialization, easy and cool MenuInit(&MainMenu); MenuShow(); while (true) { DrawString(TOP_SCREEN, "[SELECT] Reboot", 349-18*8, 181-24-8, RED, BLACK); DrawString(TOP_SCREEN, "[START] Shutdown", 349-18*8, 181-24, RED, BLACK); u32 pad_state = InputWait(); if(pad_state & BUTTON_DOWN) MenuNextSelection(); if(pad_state & BUTTON_UP) MenuPrevSelection(); if(pad_state & BUTTON_A) MenuSelect(); if(pad_state & BUTTON_SELECT) returnHomeMenu(); if(pad_state & BUTTON_START) ShutDown(); TryScreenShot(); MenuShow(); } FSDeInit(); return 0; }
int main(){ Initialize(); //7.X Keys stuff File KeyFile; if(FileOpen(&KeyFile, "/slot0x25KeyX.bin", 0)){ u8 keyX[16]; FileRead(&KeyFile, keyX, 16, 0); FileClose(&KeyFile); setup_aeskeyX(0x25, keyX); }else{ if(GetSystemVersion() < 3){ ConsoleInit(); ConsoleSetTitle(" WARNING"); print("WARNING:\n\nCannot find slot0x25KeyX.bin. If\nyour firmware version is less than\n7.X, some titles decryption will\nfail, and some EmuNANDs will not\nboot.\n\nPress A to continue...\n"); ConsoleShow(); WaitForButton(BUTTON_A); } } //That's the Main Menu initialization, easy and cool MenuInit(&MainMenu); MenuShow(); while (true) { u32 pad_state = InputWait(); if (pad_state & (BUTTON_DOWN | BUTTON_RIGHT | BUTTON_R1)) MenuNextSelection(); //I try to support every theme style if (pad_state & (BUTTON_UP | BUTTON_LEFT | BUTTON_L1)) MenuPrevSelection(); if(pad_state & BUTTON_A) MenuSelect(); if(pad_state & BUTTON_SELECT) ShutDown(); if(pad_state & BUTTON_START) returnHomeMenu(); TryScreenShot(); MenuShow(); } FSDeInit(); return 0; }
//设备状态消息(Plugin、PlugOut)处理,成功处理 返回TRUE,否则返回FALSE bool SysDeviceMsgCtrl(uint16_t Msg) { // uint32_t CurMode; uint32_t DevModuleId; switch(Msg) { case MSG_SD_PLUGIN: if((gSys.CurModuleID == MODULE_ID_USB_READER) || (gSys.CurModuleID == MODULE_ID_USB_AUDIO_READER)) { return TRUE; } case MSG_USB_PLUGIN: case MSG_PC_PLUGIN: case MSG_LINEIN_PLUGIN: case MSG_RTC_START_ALARM_REMIND: if((gSys.CurModuleID == MODULE_ID_RECORDER) && (gSys.RecordState == RECORD_STATE_REC)) { return TRUE; } gSys.NextModuleID = GetModeId(Msg); return GotoNextMode(); case MSG_SD_PLUGOUT: case MSG_USB_PLUGOUT: case MSG_PC_PLUGOUT: case MSG_LINEIN_PLUGOUT: case MSG_RTC_STOP_ALARM_REMIND: if(Msg == MSG_SD_PLUGOUT) { FSDeInit(DEV_ID_SD); } else if(Msg == MSG_USB_PLUGOUT) { FSDeInit(DEV_ID_USB); } DevModuleId = GetModeId(Msg); if(DevModuleId != gSys.CurModuleID) { //拔出的不是当前模式对应的设备,则忽略该事件 return FALSE; } //拔出的当前模式对应的设备,则按照优先顺序切到下一个模式 gSys.NextModuleID = GetNextModeIdByProi(MODULE_ID_UNKNOWN); return GotoNextMode(); case MSG_BT_HF_INTO_MODE: if(gSys.NextModuleID == MODULE_ID_BT_HF || gSys.CurModuleID == MODULE_ID_BT_HF) return FALSE; gSys.NextModuleID = MODULE_ID_BT_HF; return GotoNextMode(); case MSG_BT_HF_OUT_MODE: APP_DBG("MSG_BT_HF_OUT_MODE SetNextMode:%d\n", gSys.NextModuleID); return GotoNextMode(); // 蓝牙提示音 case MSG_BT_CONNECTED: SoundRemind(SOUND_BT_CONNECT); return FALSE; case MSG_BT_DISCONNECTED: SoundRemind(SOUND_BT_DISCONNECT); return FALSE; case MSG_BT_PHONE_CALL_INCOMING: return FALSE; case MSG_MIC_PLUGIN: if(gSys.CurModuleID != MODULE_ID_RECORDER) { SoundRemind(SOUND_MIC_INSERT); } if(gSys.CurModuleID == MODULE_ID_LINEIN) { AudioAnaSetChannel(AUDIO_CH_MIC_LINEIN); } else if(gSys.CurModuleID == MODULE_ID_RADIO) { AudioAnaSetChannel(AUDIO_CH_MIC_FM); } else if(gSys.CurModuleID == MODULE_ID_RECORDER) { if(gSys.RecordSource == RECORD_SOURCE_LINEIN) { AudioAnaSetChannel(AUDIO_CH_MIC_LINEIN); } else if(gSys.RecordSource == RECORD_SOURCE_FM) { AudioAnaSetChannel(AUDIO_CH_MIC_FM); } } else { AudioAnaSetChannel(AUDIO_CH_MIC); } return FALSE; case MSG_MIC_PLUGOUT: if(gSys.CurModuleID != MODULE_ID_RECORDER) { SoundRemind(SOUND_MIC_PULLOUT); } if(gSys.CurModuleID == MODULE_ID_LINEIN) { AudioAnaSetChannel(AUDIO_CH_LINEIN); } else if(gSys.CurModuleID == MODULE_ID_RADIO) { AudioAnaSetChannel(AUDIO_CH_FM); } else if(gSys.CurModuleID == MODULE_ID_RECORDER) { if(gSys.RecordSource == RECORD_SOURCE_LINEIN) { AudioAnaSetChannel(AUDIO_CH_LINEIN); } else if(gSys.RecordSource == RECORD_SOURCE_FM) { AudioAnaSetChannel(AUDIO_CH_FM); } } else { AudioAnaSetChannel(AUDIO_CH_NONE); } return FALSE; default: break; } return FALSE; }