MCPcopy Create free account
hub / github.com/TASEmulators/fceux / FDSLoad

Function FDSLoad

src/fds.cpp:762–909  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

760}
761
762int FDSLoad(const char *name, FCEUFILE *fp) {
763 FILE *zp;
764 int x;
765
766 // try to load FDS image first
767 FreeFDSMemory();
768 int load_result = SubLoad(fp);
769 switch (load_result)
770 {
771 case 1:
772 FreeFDSMemory();
773 return LOADER_INVALID_FORMAT;
774 case 2:
775 FreeFDSMemory();
776 FCEU_PrintError("Unable to allocate memory.");
777 return LOADER_HANDLED_ERROR;
778 }
779
780 // load FDS BIOS next
781 char *fn = strdup(FCEU_MakeFName(FCEUMKF_FDSROM, 0, 0).c_str());
782
783 if (!(zp = FCEUD_UTF8fopen(fn, "rb"))) {
784 FCEU_PrintError("FDS BIOS ROM image missing: %s", FCEU_MakeFName(FCEUMKF_FDSROM, 0, 0).c_str());
785 free(fn);
786 FreeFDSMemory();
787 return LOADER_HANDLED_ERROR;
788 }
789 free(fn);
790
791 fseek(zp, 0L, SEEK_END);
792 if (ftell(zp) != 8192) {
793 fclose(zp);
794 FreeFDSMemory();
795 FCEU_PrintError("FDS BIOS ROM image incompatible: %s", FCEU_MakeFName(FCEUMKF_FDSROM, 0, 0).c_str());
796 return LOADER_HANDLED_ERROR;
797 }
798 fseek(zp, 0L, SEEK_SET);
799
800 ResetCartMapping();
801
802 if(FDSBIOS)
803 free(FDSBIOS);
804 FDSBIOS = NULL;
805 if(FDSRAM)
806 free(FDSRAM);
807 FDSRAM = NULL;
808 if(CHRRAM)
809 free(CHRRAM);
810 CHRRAM = NULL;
811
812 FDSBIOSsize = 8192;
813 FDSBIOS = (uint8*)FCEU_gmalloc(FDSBIOSsize);
814 SetupCartPRGMapping(0, FDSBIOS, FDSBIOSsize, 0);
815
816 if (fread(FDSBIOS, 1, FDSBIOSsize, zp) != FDSBIOSsize) {
817 if(FDSBIOS)
818 free(FDSBIOS);
819 FDSBIOS = NULL;

Callers 1

FCEUI_LoadGameVirtualFunction · 0.85

Calls 15

FreeFDSMemoryFunction · 0.85
SubLoadFunction · 0.85
FCEU_PrintErrorFunction · 0.85
FCEU_MakeFNameFunction · 0.85
ResetCartMappingFunction · 0.85
FCEU_gmallocFunction · 0.85
SetupCartPRGMappingFunction · 0.85
FCEU_mallocFunction · 0.85
FCEU_fopenFunction · 0.85
FCEU_printfFunction · 0.85
FCEU_fcloseFunction · 0.85
ResetExStateFunction · 0.85

Tested by

no test coverage detected