Change load_gamepak signature

This commit is contained in:
twinaphex 2014-12-20 08:35:53 +01:00
parent 9fe97ba148
commit ba834beeb1
3 changed files with 29 additions and 31 deletions

View file

@ -2388,49 +2388,45 @@ char gamepak_code[5];
char gamepak_maker[3]; char gamepak_maker[3];
char gamepak_filename[512]; 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 cheats_filename[256];
char *p; 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)); strncpy(gamepak_filename, name, sizeof(gamepak_filename));
gamepak_filename[sizeof(gamepak_filename) - 1] = 0; gamepak_filename[sizeof(gamepak_filename) - 1] = 0;
p = strrchr(gamepak_filename, PATH_SEPARATOR_CHAR); p = strrchr(gamepak_filename, PATH_SEPARATOR_CHAR);
if (!p) if (!p)
p = gamepak_filename; p = gamepak_filename;
snprintf(backup_filename, sizeof(backup_filename), "%s/%s", save_path, p); snprintf(backup_filename, sizeof(backup_filename), "%s/%s", save_path, p);
p = strrchr(backup_filename, '.'); p = strrchr(backup_filename, '.');
if (p) if (p)
strcpy(p, ".sav"); strcpy(p, ".sav");
load_backup(backup_filename); load_backup(backup_filename);
memcpy(gamepak_title, gamepak_rom + 0xA0, 12); memcpy(gamepak_title, gamepak_rom + 0xA0, 12);
memcpy(gamepak_code, gamepak_rom + 0xAC, 4); memcpy(gamepak_code, gamepak_rom + 0xAC, 4);
memcpy(gamepak_maker, gamepak_rom + 0xB0, 2); memcpy(gamepak_maker, gamepak_rom + 0xB0, 2);
gamepak_title[12] = 0; gamepak_title[12] = 0;
gamepak_code[4] = 0; gamepak_code[4] = 0;
gamepak_maker[2] = 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"); change_ext(gamepak_filename, cheats_filename, ".cht");
add_cheats(cheats_filename); add_cheats(cheats_filename);
return 0; return 0;
}
return -1;
} }
s32 load_bios(char *name) s32 load_bios(char *name)

View file

@ -20,6 +20,8 @@
#ifndef MEMORY_H #ifndef MEMORY_H
#define MEMORY_H #define MEMORY_H
#include "libretro.h"
typedef enum typedef enum
{ {
DMA_START_IMMEDIATELY, DMA_START_IMMEDIATELY,
@ -175,7 +177,7 @@ extern char gamepak_filename[512];
cpu_alert_type dma_transfer(dma_transfer_type *dma); cpu_alert_type dma_transfer(dma_transfer_type *dma);
u8 *memory_region(u32 address, u32 *memory_limit); 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); u32 load_backup(char *name);
s32 load_bios(char *name); s32 load_bios(char *name);
void update_backup(void); void update_backup(void);

View file

@ -320,7 +320,7 @@ bool retro_load_game(const struct retro_game_info* info)
gamepak_filename[0] = 0; 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."); error_msg("Could not load the game file.");
return false; return false;