static int Load(const char *name, MDFNFILE *fp) { LoadFunction_t LoadFunction = NULL; LoadFunction = GetLoadFunctionByMagic(name, fp); // If the file type isn't recognized, return -1! if(!LoadFunction) return(-1); InitCommon(name); if(!LoadFunction(name, fp, GameInterface)) { free(GameInterface); GameInterface = NULL; return(0); } { int w; if(MDFNGameInfo->VideoSystem == VIDSYS_NTSC) w = 0; else if(MDFNGameInfo->VideoSystem == VIDSYS_PAL) w = 1; else { w = MDFN_GetSettingB("nes.pal"); MDFNGameInfo->VideoSystem = w ? VIDSYS_PAL : VIDSYS_NTSC; } PAL=w?1:0; MDFNGameInfo->fps = PAL? 838977920 : 1008307711; MDFNGameInfo->MasterClock = MDFN_MASTERCLOCK_FIXED(PAL ? PAL_CPU : NTSC_CPU); } X6502_Init(); MDFNPPU_Init(); MDFNSND_Init(PAL); NESINPUT_Init(); if(NESIsVSUni) MDFN_VSUniInstallRWHooks(); if(MDFNGameInfo->GameType != GMT_PLAYER) if(MDFN_GetSettingB("nes.gg")) Genie_Init(); PowerNES(); MDFN_InitPalette(NESIsVSUni ? MDFN_VSUniGetPaletteNum() : 0); return(1); }
static MDFN_COLD void Load(GameFile* gf) { try { LoadFunction_t LoadFunction = NULL; LoadFunction = GetLoadFunctionByMagic(gf); // If the file type isn't recognized, return -1! if(!LoadFunction) throw MDFN_Error(0, _("File format is unknown to module \"%s\"."), MDFNGameInfo->shortname); InitCommon(gf->fbase); LoadFunction(gf->stream, &GameInterface); { int w; if(MDFNGameInfo->VideoSystem == VIDSYS_NTSC) w = 0; else if(MDFNGameInfo->VideoSystem == VIDSYS_PAL) w = 1; else { w = MDFN_GetSettingB("nes.pal"); MDFNGameInfo->VideoSystem = w ? VIDSYS_PAL : VIDSYS_NTSC; } PAL=w?1:0; MDFNGameInfo->fps = PAL? 838977920 : 1008307711; MDFNGameInfo->MasterClock = MDFN_MASTERCLOCK_FIXED(PAL ? PAL_CPU : NTSC_CPU); } X6502_Init(); MDFNPPU_Init(); MDFNSND_Init(PAL); NESINPUT_Init(); if(NESIsVSUni) MDFN_VSUniInstallRWHooks(); if(MDFNGameInfo->GameType != GMT_PLAYER) if(MDFN_GetSettingB("nes.gg")) Genie_Init(); PowerNES(); MDFN_InitPalette(NESIsVSUni ? MDFN_VSUniGetPaletteNum() : (bool)PAL, NULL, 0); if(MDFNGameInfo->GameType != GMT_PLAYER) MDFNGameInfo->CPInfoActiveBF = 1 << (NESIsVSUni ? MDFN_VSUniGetPaletteNum() : (bool)PAL); else MDFNGameInfo->CPInfoActiveBF = 0; } catch(...) { Cleanup(); throw; } }