comparison genesis.c @ 1395:efa7225e0f07

Initial work to support parallel NOR flash and the Magistr 16
author Michael Pavone <pavone@retrodev.com>
date Wed, 07 Jun 2017 23:06:14 -0700
parents e587f16e7d3d
children b56c8c51ca5d
comparison
equal deleted inserted replaced
1394:ae3b1721b226 1395:efa7225e0f07
965 if (gen->save_type == SAVE_NONE) { 965 if (gen->save_type == SAVE_NONE) {
966 return; 966 return;
967 } 967 }
968 FILE * f = fopen(save_filename, "wb"); 968 FILE * f = fopen(save_filename, "wb");
969 if (!f) { 969 if (!f) {
970 fprintf(stderr, "Failed to open %s file %s for writing\n", gen->save_type == SAVE_I2C ? "EEPROM" : "SRAM", save_filename); 970 fprintf(stderr, "Failed to open %s file %s for writing\n", save_type_name(gen->save_type), save_filename);
971 return; 971 return;
972 } 972 }
973 fwrite(gen->save_storage, 1, gen->save_size, f); 973 fwrite(gen->save_storage, 1, gen->save_size, f);
974 fclose(f); 974 fclose(f);
975 printf("Saved %s to %s\n", gen->save_type == SAVE_I2C ? "EEPROM" : "SRAM", save_filename); 975 printf("Saved %s to %s\n", save_type_name(gen->save_type), save_filename);
976 } 976 }
977 977
978 static void load_save(system_header *system) 978 static void load_save(system_header *system)
979 { 979 {
980 genesis_context *gen = (genesis_context *)system; 980 genesis_context *gen = (genesis_context *)system;
981 FILE * f = fopen(save_filename, "rb"); 981 FILE * f = fopen(save_filename, "rb");
982 if (f) { 982 if (f) {
983 uint32_t read = fread(gen->save_storage, 1, gen->save_size, f); 983 uint32_t read = fread(gen->save_storage, 1, gen->save_size, f);
984 fclose(f); 984 fclose(f);
985 if (read > 0) { 985 if (read > 0) {
986 printf("Loaded %s from %s\n", gen->save_type == SAVE_I2C ? "EEPROM" : "SRAM", save_filename); 986 printf("Loaded %s from %s\n", save_type_name(gen->save_type), save_filename);
987 } 987 }
988 } 988 }
989 } 989 }
990 990
991 static void soft_reset(system_header *system) 991 static void soft_reset(system_header *system)
1113 gen->save_storage = rom->save_buffer; 1113 gen->save_storage = rom->save_buffer;
1114 gen->eeprom_map = rom->eeprom_map; 1114 gen->eeprom_map = rom->eeprom_map;
1115 gen->num_eeprom = rom->num_eeprom; 1115 gen->num_eeprom = rom->num_eeprom;
1116 if (gen->save_type == SAVE_I2C) { 1116 if (gen->save_type == SAVE_I2C) {
1117 eeprom_init(&gen->eeprom, gen->save_storage, gen->save_size); 1117 eeprom_init(&gen->eeprom, gen->save_storage, gen->save_size);
1118 } else if (gen->save_type == SAVE_NOR) {
1119 nor_flash_init(&gen->nor, gen->save_storage, gen->save_size, rom->save_page_size, rom->save_product_id, rom->save_bus);
1118 } 1120 }
1119 } else { 1121 } else {
1120 gen->save_storage = NULL; 1122 gen->save_storage = NULL;
1121 } 1123 }
1122 1124