From ba834beeb1550e122ecac62609f34cf7c9717139 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 20 Dec 2014 08:35:53 +0100 Subject: Change load_gamepak signature --- gba_memory.c | 54 +++++++++++++++++++++++++----------------------------- gba_memory.h | 4 +++- libretro.c | 2 +- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/gba_memory.c b/gba_memory.c index 9ee5562..53e2d15 100644 --- a/gba_memory.c +++ b/gba_memory.c @@ -2388,49 +2388,45 @@ char gamepak_code[5]; char gamepak_maker[3]; char gamepak_filename[512]; -u32 load_gamepak(const char *name) +u32 load_gamepak(const struct retro_game_info* info, const char *name) { - char cheats_filename[256]; - char *p; + char cheats_filename[256]; + char *p; - s32 file_size = load_gamepak_raw(name); + s32 file_size = load_gamepak_raw(name); - // A dumb April fool's joke was here once :o + if(file_size == -1) + return -1; - if(file_size != -1) - { - gamepak_size = (file_size + 0x7FFF) & ~0x7FFF; + gamepak_size = (file_size + 0x7FFF) & ~0x7FFF; - strncpy(gamepak_filename, name, sizeof(gamepak_filename)); - gamepak_filename[sizeof(gamepak_filename) - 1] = 0; + strncpy(gamepak_filename, name, sizeof(gamepak_filename)); + gamepak_filename[sizeof(gamepak_filename) - 1] = 0; - p = strrchr(gamepak_filename, PATH_SEPARATOR_CHAR); - if (!p) + p = strrchr(gamepak_filename, PATH_SEPARATOR_CHAR); + if (!p) p = gamepak_filename; - snprintf(backup_filename, sizeof(backup_filename), "%s/%s", save_path, p); - p = strrchr(backup_filename, '.'); - if (p) + snprintf(backup_filename, sizeof(backup_filename), "%s/%s", save_path, p); + p = strrchr(backup_filename, '.'); + if (p) strcpy(p, ".sav"); - load_backup(backup_filename); + load_backup(backup_filename); - memcpy(gamepak_title, gamepak_rom + 0xA0, 12); - memcpy(gamepak_code, gamepak_rom + 0xAC, 4); - memcpy(gamepak_maker, gamepak_rom + 0xB0, 2); - gamepak_title[12] = 0; - gamepak_code[4] = 0; - gamepak_maker[2] = 0; + memcpy(gamepak_title, gamepak_rom + 0xA0, 12); + memcpy(gamepak_code, gamepak_rom + 0xAC, 4); + memcpy(gamepak_maker, gamepak_rom + 0xB0, 2); + gamepak_title[12] = 0; + gamepak_code[4] = 0; + gamepak_maker[2] = 0; - load_game_config(gamepak_title, gamepak_code, gamepak_maker); + load_game_config(gamepak_title, gamepak_code, gamepak_maker); - change_ext(gamepak_filename, cheats_filename, ".cht"); - add_cheats(cheats_filename); + change_ext(gamepak_filename, cheats_filename, ".cht"); + add_cheats(cheats_filename); - return 0; - } - - return -1; + return 0; } s32 load_bios(char *name) diff --git a/gba_memory.h b/gba_memory.h index cdbf16b..be9dc48 100644 --- a/gba_memory.h +++ b/gba_memory.h @@ -20,6 +20,8 @@ #ifndef MEMORY_H #define MEMORY_H +#include "libretro.h" + typedef enum { DMA_START_IMMEDIATELY, @@ -175,7 +177,7 @@ extern char gamepak_filename[512]; cpu_alert_type dma_transfer(dma_transfer_type *dma); u8 *memory_region(u32 address, u32 *memory_limit); -u32 load_gamepak(const char *name); +u32 load_gamepak(const struct retro_game_info* info, const char *name); u32 load_backup(char *name); s32 load_bios(char *name); void update_backup(void); diff --git a/libretro.c b/libretro.c index 1ee6dd7..c7f2cd7 100644 --- a/libretro.c +++ b/libretro.c @@ -320,7 +320,7 @@ bool retro_load_game(const struct retro_game_info* info) gamepak_filename[0] = 0; - if (load_gamepak(info->path) != 0) + if (load_gamepak(info, info->path) != 0) { error_msg("Could not load the game file."); return false; -- cgit v1.2.3