summaryrefslogtreecommitdiff
path: root/gba_memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'gba_memory.c')
-rw-r--r--gba_memory.c24
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(); \