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

Function LoadHeader

src/drivers/win/header_editor.cpp:142–211  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

140HWND hHeadEditor = NULL;
141
142bool LoadHeader(HWND parent, iNES_HEADER* header)
143{
144 int error = 0;
145 enum errors {
146 OK,
147 OPEN_FAILED,
148 INVALID_HEADER,
149 FDS_HEADER,
150 UNIF_HEADER,
151 NSF_HEADER//,
152// NSFE_HEADER,
153// NSF2_HEADER
154 };
155
156 FCEUFILE* fp = FCEU_fopen(LoadedRomFName, NULL, "rb", NULL);
157 if (!GameInfo)
158 strcpy(LoadedRomFName, fp->fullFilename.c_str());
159
160 if (fp)
161 {
162 if (FCEU_fread(header, 1, sizeof(iNES_HEADER), fp) == sizeof(iNES_HEADER) && !memcmp(header, "NES\x1A", 4))
163 header->cleanup();
164 else if (!memcmp(header, "FDS\x1A", 4))
165 error = errors::FDS_HEADER;
166 else if (!memcmp(header, "UNIF", 4))
167 error = errors::UNIF_HEADER;
168 else if (!memcmp(header, "NESM", 4))
169 error = errors::NSF_HEADER;
170 /* else if (!memcmp(header, "NSFE", 4))
171 error = errors::NSFE_HEADER;
172 else if (!memcmp(header, "NESM\2", 4))
173 error = errors::NSF2_HEADER;
174 */ else
175 error = errors::INVALID_HEADER;
176 FCEU_fclose(fp);
177 }
178 else
179 error = errors::OPEN_FAILED;
180
181 if (error)
182 {
183 switch (error)
184 {
185 case errors::OPEN_FAILED:
186 {
187 char buf[1024];
188 sprintf(buf, "Error opening %s!", LoadedRomFName);
189 MessageBox(parent, buf, "NES Header Editor", MB_OK | MB_ICONERROR);
190 break;
191 }
192 case errors::INVALID_HEADER:
193 MessageBox(parent, "Invalid NES header.", "NES Header Editor", MB_OK | MB_ICONERROR);
194 break;
195 case errors::FDS_HEADER:
196 MessageBox(parent, "Editing header of an FDS file is not supported.", "NES Header Editor", MB_OK | MB_ICONERROR);
197 break;
198 case errors::UNIF_HEADER:
199 MessageBox(parent, "Editing header of a UNIF file is not supported.", "NES Header Editor", MB_OK | MB_ICONERROR);

Callers 1

DoHeadEditFunction · 0.70

Calls 4

FCEU_fopenFunction · 0.85
FCEU_freadFunction · 0.85
FCEU_fcloseFunction · 0.85
cleanupMethod · 0.45

Tested by

no test coverage detected