From 8f0979a2c4db824e91ead3290d8088d97b20e189 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Thu, 2 Jul 2015 19:19:06 -0700 Subject: Initial work on ROM database --- romdb.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 romdb.h (limited to 'romdb.h') diff --git a/romdb.h b/romdb.h new file mode 100644 index 0000000..e204f7d --- /dev/null +++ b/romdb.h @@ -0,0 +1,20 @@ +#ifndef ROMDB_H_ +#define ROMDB_H_ + +#define REGION_J 1 +#define REGION_U 2 +#define REGION_E 4 + +#include "tern.h" +#include "backend.h" + +typedef struct { + char *name; + memmap_chunk *map; + uint8_t regions; +} rom_info; + +tern_node *load_rom_db(); +rom_info configure_rom(tern_node *rom_db, void *vrom); + +#endif //ROMDB_H_ -- cgit v1.2.3 From 249115277c7f488052e07ccbd91f0df9f24f26b7 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Thu, 2 Jul 2015 20:43:01 -0700 Subject: Allow regions to be set in ROM DB. Prefer default region if it is one of the valid regions for the ROM. --- romdb.h | 1 + 1 file changed, 1 insertion(+) (limited to 'romdb.h') diff --git a/romdb.h b/romdb.h index e204f7d..5a1b4bc 100644 --- a/romdb.h +++ b/romdb.h @@ -16,5 +16,6 @@ typedef struct { tern_node *load_rom_db(); rom_info configure_rom(tern_node *rom_db, void *vrom); +uint8_t translate_region_char(uint8_t c); #endif //ROMDB_H_ -- cgit v1.2.3 From 0be7e726ad839d36d50db630b24ea0f1dc141c08 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sun, 5 Jul 2015 14:21:34 -0700 Subject: WIP changes to support reading cart memory map from ROM DB --- romdb.h | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'romdb.h') diff --git a/romdb.h b/romdb.h index 5a1b4bc..776c2f5 100644 --- a/romdb.h +++ b/romdb.h @@ -5,17 +5,29 @@ #define REGION_U 2 #define REGION_E 4 +#define RAM_FLAG_ODD 0x18 +#define RAM_FLAG_EVEN 0x10 +#define RAM_FLAG_BOTH 0x00 +#define RAM_FLAG_MASK RAM_FLAG_ODD +#define SAVE_I2C 0x01 +#define SAVE_NONE 0xFF + #include "tern.h" #include "backend.h" typedef struct { - char *name; - memmap_chunk *map; - uint8_t regions; + char *name; + memmap_chunk *map; + uint8_t *save_buffer; + uint32_t map_chunks; + uint32_t save_size; + uint8_t save_type; + uint8_t regions; } rom_info; tern_node *load_rom_db(); -rom_info configure_rom(tern_node *rom_db, void *vrom); +rom_info configure_rom(tern_node *rom_db, void *vrom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks); +rom_info configure_rom_heuristics(uint8_t *rom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks); uint8_t translate_region_char(uint8_t c); #endif //ROMDB_H_ -- cgit v1.2.3 From 358991e7fef42ae206231aabfeee045e5214dbe4 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Mon, 6 Jul 2015 19:46:46 -0700 Subject: SRAM detection from ROM header is no working correctly again --- romdb.h | 1 + 1 file changed, 1 insertion(+) (limited to 'romdb.h') diff --git a/romdb.h b/romdb.h index 776c2f5..5b21840 100644 --- a/romdb.h +++ b/romdb.h @@ -21,6 +21,7 @@ typedef struct { uint8_t *save_buffer; uint32_t map_chunks; uint32_t save_size; + uint32_t save_mask; uint8_t save_type; uint8_t regions; } rom_info; -- cgit v1.2.3 From da7c1f27d44cb1bb77c057ce9cca7041931619ae Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Fri, 10 Jul 2015 18:46:18 -0700 Subject: Initial work on I2C EEPROM implementation --- romdb.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'romdb.h') diff --git a/romdb.h b/romdb.h index 5b21840..e126640 100644 --- a/romdb.h +++ b/romdb.h @@ -15,10 +15,26 @@ #include "tern.h" #include "backend.h" +typedef struct { + uint32_t start; + uint32_t end; + uint16_t sda_write_mask; + uint16_t scl_mask; + uint8_t sda_read_bit; +} eeprom_map; + +typedef struct { + uint8_t host_sda; + uint8_t slave_sda; + uint8_t scl; +} eeprom_state; + typedef struct { char *name; memmap_chunk *map; uint8_t *save_buffer; + eeprom_map *eeprom_map; + uint32_t num_eeprom; uint32_t map_chunks; uint32_t save_size; uint32_t save_mask; @@ -30,5 +46,6 @@ tern_node *load_rom_db(); rom_info configure_rom(tern_node *rom_db, void *vrom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks); rom_info configure_rom_heuristics(uint8_t *rom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks); uint8_t translate_region_char(uint8_t c); +void eeprom_init(eeprom_state *state); #endif //ROMDB_H_ -- cgit v1.2.3 From ec937eb637770838c92864d1d51393297a226d82 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Tue, 14 Jul 2015 18:28:05 -0700 Subject: Broken EEPROM support --- romdb.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'romdb.h') diff --git a/romdb.h b/romdb.h index e126640..3bf9fa6 100644 --- a/romdb.h +++ b/romdb.h @@ -24,9 +24,15 @@ typedef struct { } eeprom_map; typedef struct { + char *buffer; + uint32_t size; + uint16_t address; uint8_t host_sda; uint8_t slave_sda; uint8_t scl; + uint8_t state; + uint8_t counter; + uint8_t latch; } eeprom_state; typedef struct { @@ -46,6 +52,6 @@ tern_node *load_rom_db(); rom_info configure_rom(tern_node *rom_db, void *vrom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks); rom_info configure_rom_heuristics(uint8_t *rom, uint32_t rom_size, memmap_chunk const *base_map, uint32_t base_chunks); uint8_t translate_region_char(uint8_t c); -void eeprom_init(eeprom_state *state); +void eeprom_init(eeprom_state *state, uint8_t *buffer, uint32_t size); #endif //ROMDB_H_ -- cgit v1.2.3 From 9d475a3ccb5b2e1e206cf4c219ec5984cec3574f Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Mon, 20 Jul 2015 21:15:34 -0700 Subject: Full support for Sega mapper when it comes to data. Code in remapped sections may not work reliably. SSF2 now works. --- romdb.h | 1 + 1 file changed, 1 insertion(+) (limited to 'romdb.h') diff --git a/romdb.h b/romdb.h index 3bf9fa6..e2af1de 100644 --- a/romdb.h +++ b/romdb.h @@ -44,6 +44,7 @@ typedef struct { uint32_t map_chunks; uint32_t save_size; uint32_t save_mask; + uint16_t mapper_start_index; uint8_t save_type; uint8_t regions; } rom_info; -- cgit v1.2.3