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