static bool TestMagic(const char *name, MDFNFILE *fp) { if(strcasecmp(GET_FEXTS_PTR(fp), "ngp") && strcasecmp(GET_FEXTS_PTR(fp), "ngpc") && strcasecmp(GET_FEXTS_PTR(fp), "ngc") && strcasecmp(GET_FEXTS_PTR(fp), "npc")) return(FALSE); return(TRUE); }
static bool TestMagic(const char *name, MDFNFILE *fp) { if(memcmp(GET_FDATA_PTR(fp), "HESM", 4) && strcasecmp(GET_FEXTS_PTR(fp), "pce") && strcasecmp(GET_FEXTS_PTR(fp), "sgx")) return(FALSE); return(TRUE); }
static int Load(const char *name, MDFNFILE *fp) { uint32 headerlen = 0; uint32 r_size; IsHES = 0; IsSGX = 0; if(!memcmp(GET_FDATA_PTR(fp), "HESM", 4)) IsHES = 1; LoadCommonPre(); if(!IsHES) { if(GET_FSIZE_PTR(fp) & 0x200) // 512 byte header! headerlen = 512; } r_size = GET_FSIZE_PTR(fp) - headerlen; if(r_size > 4096 * 1024) r_size = 4096 * 1024; for(int x = 0; x < 0x100; x++) { PCERead[x] = PCEBusRead; PCEWrite[x] = PCENullWrite; } uint32 crc = crc32(0, GET_FDATA_PTR(fp) + headerlen, GET_FSIZE_PTR(fp) - headerlen); #ifdef HAVE_HES if(IsHES) { if(!PCE_HESLoad(GET_FDATA_PTR(fp), GET_FSIZE_PTR(fp))) return(0); } else #endif HuCLoad(GET_FDATA_PTR(fp) + headerlen, GET_FSIZE_PTR(fp) - headerlen, crc); if(!strcasecmp(GET_FEXTS_PTR(fp), "sgx")) IsSGX = TRUE; if(GET_FSIZE_PTR(fp) >= 8192 && !memcmp(GET_FDATA_PTR(fp) + headerlen, "DARIUS Version 1.11b", strlen("DARIUS VERSION 1.11b"))) { MDFN_printf("SuperGfx: Darius Plus\n"); IsSGX = 1; } if(crc == 0x4c2126b0) { MDFN_printf("SuperGfx: Aldynes\n"); IsSGX = 1; } if(crc == 0x8c4588e2) { MDFN_printf("SuperGfx: 1941 - Counter Attack\n"); IsSGX = 1; } if(crc == 0x1f041166) { MDFN_printf("SuperGfx: Madouou Granzort\n"); IsSGX = 1; } if(crc == 0xb486a8ed) { MDFN_printf("SuperGfx: Daimakaimura\n"); IsSGX = 1; } if(crc == 0x3b13af61) { MDFN_printf("SuperGfx: Battle Ace\n"); IsSGX = 1; } return(LoadCommon()); }