comparison genesis.c @ 1848:ef3d368d59b0

16-bit wide save RAM is stored in memory byteswapped for performance reasons, but saving it to disc that way isn't great. Swap before save/after load to fix
author Michael Pavone <pavone@retrodev.com>
date Tue, 23 Apr 2019 18:37:08 -0700
parents 5278b6e44fc1
children 6b5147f08846
comparison
equal deleted inserted replaced
1847:882746581f17 1848:ef3d368d59b0
1228 FILE * f = fopen(save_filename, "wb"); 1228 FILE * f = fopen(save_filename, "wb");
1229 if (!f) { 1229 if (!f) {
1230 fprintf(stderr, "Failed to open %s file %s for writing\n", save_type_name(gen->save_type), save_filename); 1230 fprintf(stderr, "Failed to open %s file %s for writing\n", save_type_name(gen->save_type), save_filename);
1231 return; 1231 return;
1232 } 1232 }
1233 if (gen->save_type == RAM_FLAG_BOTH) {
1234 byteswap_rom(gen->save_size, (uint16_t *)gen->save_storage);
1235 }
1233 fwrite(gen->save_storage, 1, gen->save_size, f); 1236 fwrite(gen->save_storage, 1, gen->save_size, f);
1237 if (gen->save_type == RAM_FLAG_BOTH) {
1238 byteswap_rom(gen->save_size, (uint16_t *)gen->save_storage);
1239 }
1234 fclose(f); 1240 fclose(f);
1235 printf("Saved %s to %s\n", save_type_name(gen->save_type), save_filename); 1241 printf("Saved %s to %s\n", save_type_name(gen->save_type), save_filename);
1236 } 1242 }
1237 1243
1238 static void load_save(system_header *system) 1244 static void load_save(system_header *system)
1241 FILE * f = fopen(save_filename, "rb"); 1247 FILE * f = fopen(save_filename, "rb");
1242 if (f) { 1248 if (f) {
1243 uint32_t read = fread(gen->save_storage, 1, gen->save_size, f); 1249 uint32_t read = fread(gen->save_storage, 1, gen->save_size, f);
1244 fclose(f); 1250 fclose(f);
1245 if (read > 0) { 1251 if (read > 0) {
1252 if (gen->save_type == RAM_FLAG_BOTH) {
1253 byteswap_rom(gen->save_size, (uint16_t *)gen->save_storage);
1254 }
1246 printf("Loaded %s from %s\n", save_type_name(gen->save_type), save_filename); 1255 printf("Loaded %s from %s\n", save_type_name(gen->save_type), save_filename);
1247 } 1256 }
1248 } 1257 }
1249 } 1258 }
1250 1259