"Cannot load save game for %s. Playing %s",
N_("Cannot load save game for %s. Playing %s"),
static bool gbReadSaveState(gzFile gzFile){  int version = utilReadInt(gzFile);  if(version > GBSAVE_GAME_VERSION || version < 0) {    systemMessage(MSG_UNSUPPORTED_VB_SGM,                  "Unsupported VisualBoy save game version %d", version);    return false;  }    u8 romname[20];    utilGzRead(gzFile, romname, 15);  if(memcmp(&gbRom[0x134], romname, 15) != 0) {    systemMessage(MSG_CANNOT_LOAD_SGM_FOR,                  "Cannot load save game for %s. Playing %s",                  romname, &gbRom[0x134]);    return false;  }    utilReadData(gzFile, gbSaveGameStruct);  if(version >= GBSAVE_GAME_VERSION_7) {    utilGzRead(gzFile, &IFF, 2);  }    if(gbSgbMode) {    gbSgbReadGame(gzFile, version);  } else {    gbSgbMask = 0; // loading a game at the wrong time causes no display  }    utilGzRead(gzFile, &gbDataMBC1, sizeof(gbDataMBC1));  utilGzRead(gzFile, &gbDataMBC2, sizeof(gbDataMBC2));  if(version < GBSAVE_GAME_VERSION_4)    // prior to version 4, there was no adjustment for the time the game    // was last played, so we have less to read. This needs update if the    // structure changes again.    utilGzRead(gzFile, &gbDataMBC3, sizeof(gbDataMBC3)-sizeof(time_t));  else    utilGzRead(gzFile, &gbDataMBC3, sizeof(gbDataMBC3));  utilGzRead(gzFile, &gbDataMBC5, sizeof(gbDataMBC5));  utilGzRead(gzFile, &gbDataHuC1, sizeof(gbDataHuC1));  utilGzRead(gzFile, &gbDataHuC3, sizeof(gbDataHuC3));  if(version < GBSAVE_GAME_VERSION_5) {    utilGzRead(gzFile, pix, 256*224*sizeof(u16));  }  memset(pix, 0, 257*226*sizeof(u32));  if(version < GBSAVE_GAME_VERSION_6) {    utilGzRead(gzFile, gbPalette, 64 * sizeof(u16));  } else    utilGzRead(gzFile, gbPalette, 128 * sizeof(u16));  // todo: remove  utilGzRead(gzFile, gbPalette, 128 * sizeof(u16));    if(version < GBSAVE_GAME_VERSION_10) {    if(!gbCgbMode && !gbSgbMode) {      for(int i = 0; i < 8; i++)        gbPalette[i] = systemGbPalette[gbPaletteOption*8+i];    }  }    utilGzRead(gzFile, &gbMemory[0x8000], 0x8000);  if(gbRamSize && gbRam) {    utilGzRead(gzFile, gbRam, gbRamSize);  }    gbMemoryMap[0x00] = &gbRom[0x0000];  gbMemoryMap[0x01] = &gbRom[0x1000];  gbMemoryMap[0x02] = &gbRom[0x2000];  gbMemoryMap[0x03] = &gbRom[0x3000];  gbMemoryMap[0x04] = &gbRom[0x4000];  gbMemoryMap[0x05] = &gbRom[0x5000];  gbMemoryMap[0x06] = &gbRom[0x6000];  gbMemoryMap[0x07] = &gbRom[0x7000];  gbMemoryMap[0x08] = &gbMemory[0x8000];  gbMemoryMap[0x09] = &gbMemory[0x9000];  gbMemoryMap[0x0a] = &gbMemory[0xa000];  gbMemoryMap[0x0b] = &gbMemory[0xb000];  gbMemoryMap[0x0c] = &gbMemory[0xc000];  gbMemoryMap[0x0d] = &gbMemory[0xd000];  gbMemoryMap[0x0e] = &gbMemory[0xe000];  gbMemoryMap[0x0f] = &gbMemory[0xf000];      int type = gbRom[0x147];    switch(type) {  case 0x00:  case 0x01:  case 0x02:  case 0x03:    // MBC 1    memoryUpdateMapMBC1();    break;  case 0x05:  case 0x06:    // MBC2    memoryUpdateMapMBC2();    break;  case 0x0f:  case 0x10:  case 0x11:  case 0x12:  case 0x13:    // MBC 3    memoryUpdateMapMBC3();    break;  case 0x19:  case 0x1a:  case 0x1b:    // MBC5    memoryUpdateMapMBC5();    break;  case 0x1c:  case 0x1d:  case 0x1e:    // MBC 5 Rumble    memoryUpdateMapMBC5();    break;  case 0x22:    // MBC 7    memoryUpdateMapMBC7();    break;  case 0xfe:    // HuC3    memoryUpdateMapHuC3();    break;  case 0xff:    // HuC1    memoryUpdateMapHuC1();    break;  }  if(gbCgbMode) {    utilGzRead(gzFile, gbVram, 0x4000);    utilGzRead(gzFile, gbWram, 0x8000);    int value = register_SVBK;    if(value == 0)      value = 1;        gbMemoryMap[0x08] = &gbVram[register_VBK * 0x2000];    gbMemoryMap[0x09] = &gbVram[register_VBK * 0x2000 + 0x1000];    gbMemoryMap[0x0d] = &gbWram[value * 0x1000];  }  gbSoundReadGame(version, gzFile);  if(gbBorderOn) {    gbSgbRenderBorder();  }    systemDrawScreen();  if(version > GBSAVE_GAME_VERSION_1)    gbCheatsReadGame(gzFile, version);  systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED;  return true;}