Example #1
0
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;
}
Example #2
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;
}