diff options
Diffstat (limited to 'gba_memory.c')
-rw-r--r-- | gba_memory.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/gba_memory.c b/gba_memory.c index 4376cf8..f397797 100644 --- a/gba_memory.c +++ b/gba_memory.c @@ -18,6 +18,7 @@ */ #include "common.h" +#include "zip.h" /* Sound */ #define gbc_sound_tone_control_low(channel, address) \ @@ -309,7 +310,8 @@ u16 io_registers[1024 * 16]; u8 ewram[1024 * 256 * 2]; u8 iwram[1024 * 32 * 2]; u8 vram[1024 * 96]; -u8 bios_rom[1024 * 16]; + +u8 bios_rom[1024 * 16 * 2]; u32 bios_read_protect; // Up to 128kb, store SRAM, flash ROM, or EEPROM here. @@ -2374,11 +2376,16 @@ char gamepak_code[5]; char gamepak_maker[3]; char gamepak_filename[512]; -u32 load_gamepak(const struct retro_game_info* info, const char *name) +u32 load_gamepak(const char *name) { + char *dot_position = strrchr(name, '.'); + s32 file_size; char *p; - s32 file_size = load_gamepak_raw(name); + if(!strcmp(dot_position, ".zip")) + file_size = load_file_zip(name); + else + file_size = load_gamepak_raw(name); if(file_size == -1) return -1; @@ -3259,6 +3266,17 @@ void memory_term(void) } } +void bios_region_read_allow(void) +{ + memory_map_read[0] = bios_rom; +} + +void bios_region_read_protect(void) +{ + memory_map_read[0] = NULL; +} + + #define savestate_block(type) \ cpu_##type##_savestate(); \ input_##type##_savestate(); \ |