Mercurial > repos > blastem
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 |