comparison romdb.h @ 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 2e6dcb5c11a2
children 780fbe0b97be
comparison
equal deleted inserted replaced
1394:ae3b1721b226 1395:efa7225e0f07
8 #define RAM_FLAG_ODD 0x18 8 #define RAM_FLAG_ODD 0x18
9 #define RAM_FLAG_EVEN 0x10 9 #define RAM_FLAG_EVEN 0x10
10 #define RAM_FLAG_BOTH 0x00 10 #define RAM_FLAG_BOTH 0x00
11 #define RAM_FLAG_MASK RAM_FLAG_ODD 11 #define RAM_FLAG_MASK RAM_FLAG_ODD
12 #define SAVE_I2C 0x01 12 #define SAVE_I2C 0x01
13 #define SAVE_NOR 0x02
13 #define SAVE_NONE 0xFF 14 #define SAVE_NONE 0xFF
14 15
15 #include "tern.h" 16 #include "tern.h"
16 17
17 typedef struct { 18 typedef struct {
32 uint8_t state; 33 uint8_t state;
33 uint8_t counter; 34 uint8_t counter;
34 uint8_t latch; 35 uint8_t latch;
35 } eeprom_state; 36 } eeprom_state;
36 37
38 typedef struct {
39 uint8_t *buffer;
40 uint8_t *page_buffer;
41 uint32_t size;
42 uint32_t page_size;
43 uint32_t current_page;
44 uint32_t last_write_cycle;
45 uint16_t product_id;
46 uint8_t mode;
47 uint8_t cmd_state;
48 uint8_t alt_cmd;
49 uint8_t bus_flags;
50 } nor_state;
51
37 52
38 typedef struct rom_info rom_info; 53 typedef struct rom_info rom_info;
39 54
40 #include "backend.h" 55 #include "backend.h"
41 56
50 char *mouse_mode; 65 char *mouse_mode;
51 uint32_t num_eeprom; 66 uint32_t num_eeprom;
52 uint32_t map_chunks; 67 uint32_t map_chunks;
53 uint32_t save_size; 68 uint32_t save_size;
54 uint32_t save_mask; 69 uint32_t save_mask;
70 uint32_t save_page_size;
71 uint16_t save_product_id;
55 uint16_t mapper_start_index; 72 uint16_t mapper_start_index;
56 uint8_t save_type; 73 uint8_t save_type;
74 uint8_t save_bus; //only used for NOR currently
57 uint8_t regions; 75 uint8_t regions;
58 }; 76 };
59 77
60 #define GAME_ID_OFF 0x183 78 #define GAME_ID_OFF 0x183
61 #define GAME_ID_LEN 8 79 #define GAME_ID_LEN 8
63 tern_node *load_rom_db(); 81 tern_node *load_rom_db();
64 rom_info configure_rom(tern_node *rom_db, void *vrom, uint32_t rom_size, void *lock_on, uint32_t lock_on_size, memmap_chunk const *base_map, uint32_t base_chunks); 82 rom_info configure_rom(tern_node *rom_db, void *vrom, uint32_t rom_size, void *lock_on, uint32_t lock_on_size, memmap_chunk const *base_map, uint32_t base_chunks);
65 rom_info configure_rom_heuristics(uint8_t *rom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks); 83 rom_info configure_rom_heuristics(uint8_t *rom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks);
66 uint8_t translate_region_char(uint8_t c); 84 uint8_t translate_region_char(uint8_t c);
67 void eeprom_init(eeprom_state *state, uint8_t *buffer, uint32_t size); 85 void eeprom_init(eeprom_state *state, uint8_t *buffer, uint32_t size);
86 void nor_flash_init(nor_state *state, uint8_t *buffer, uint32_t size, uint32_t page_size, uint16_t product_id, uint8_t bus_flags);
87 char const *save_type_name(uint8_t save_type);
68 88
69 #endif //ROMDB_H_ 89 #endif //ROMDB_H_