int pchexinit(struct s_pchex *pch) { int fs; //General Init srand(time(NULL)); gfxInitDefault(); consoleInit(GFX_BOTTOM, &pch->bot); consoleInit(GFX_TOP, &pch->top); //Filesystem Init printf("Init Filesystem...\n"); fs = filesysInit(&pch->sd.handle, &pch->sav.handle, &pch->sd.arch, &pch->sav.arch); if (fs) printf("Init FS Failed\n"); else printf("Init FS OK\n"); //Load Pokemon Data if (loadData(&pch->sd.handle, &pch->sd.arch)) return -1; //save loading, save is loaded into the array 'save' pch->save = malloc(0x1D6000); pch->game = loadSave(pch->save, &pch->sav.handle, &pch->sav.arch); if (pch->game < 0) pch->game = loadSave(pch->save, &pch->sd.handle, &pch->sd.arch); if (pch->game < 0) return -1; if (backupSave(pch->save, pch->game, &pch->sd.handle, &pch->sd.arch)) { printf("Backup Failed, Exiting\n"); return -1; } return 0; }
/// Given gButtonPressed, update state accordingly. void handleButtonPress() { switch (gButtonPressed) { case BTN_NONE: break; case BTN_MAPLE: trace_puts("Maple button!"); gGpsAvailable = !gGpsAvailable; break; case BTN_SET: if (gGpsAvailable) { gSettingUtcOffset = !gSettingUtcOffset; trace_printf("Set button; setting utc offset=%d\n", gSettingUtcOffset); gSecondFlag |= !gSettingUtcOffset; } else { gBlinkPos += 1; if (gBlinkPos > 5) { gBlinkPos = 0; gSecondFlag = 1; // Force logic loop to display digits. } trace_printf("Set button; new pos %d\n", gBlinkPos); } break; case BTN_DIM: gGridOc.TIM_Pulse += 10; gGridOc.TIM_Pulse %= 80; TIM_OC1Init(TIM2, &gGridOc); trace_printf("Dim button; pulse now %d of 80.\n", gGridOc.TIM_Pulse); backupSave(); break; case BTN_UP: trace_puts("Up button!"); if (gSettingUtcOffset) { gUtcOffset += UTC_OFFSET_ADJUST; if (gUtcOffset > (14 * 3600)) gUtcOffset = -12 * 3600; trace_printf("utc offset now=%d\n", gUtcOffset); backupSave(); } else { gSeconds = RTC_GetCounter() + gSettingChange[gBlinkPos]; setRtcTime(gSeconds); } gSecondFlag = 1; break; case BTN_DOWN: trace_puts("Down button!"); if (gSettingUtcOffset) { gUtcOffset -= UTC_OFFSET_ADJUST; if (gUtcOffset < (-12 * 3600)) gUtcOffset = 14 * 3600; trace_printf("utc offset now=%d\n", gUtcOffset); backupSave(); } else { gSeconds = RTC_GetCounter() - gSettingChange[gBlinkPos]; setRtcTime(gSeconds); } gSecondFlag = 1; break; default: // No button pressed, ignore. break; } gButtonPressed = BTN_NONE; }