core:
- add mapping ROM data to 0x08000000 (GBA ROM) and SRAM to 0x0A000000 (GBA RAM) when GBA slot is empty (fix homebrew);
This commit is contained in:
parent
5e3b0bb527
commit
f13b137867
|
@ -1,5 +1,4 @@
|
||||||
/* Copyright (C) 2009 CrazyMax
|
/* Copyright (C) 2009-2010 DeSmuME team
|
||||||
Copyright (C) 2009 DeSmuME team
|
|
||||||
|
|
||||||
This file is part of DeSmuME
|
This file is part of DeSmuME
|
||||||
|
|
||||||
|
@ -18,8 +17,9 @@
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../addons.h"
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include "../addons.h"
|
||||||
|
#include "../NDSSystem.h"
|
||||||
|
|
||||||
static BOOL None_init(void) { return (TRUE); }
|
static BOOL None_init(void) { return (TRUE); }
|
||||||
static void None_reset(void) {}
|
static void None_reset(void) {}
|
||||||
|
@ -28,9 +28,40 @@ static void None_config(void) {}
|
||||||
static void None_write08(u32 adr, u8 val) {}
|
static void None_write08(u32 adr, u8 val) {}
|
||||||
static void None_write16(u32 adr, u16 val) {}
|
static void None_write16(u32 adr, u16 val) {}
|
||||||
static void None_write32(u32 adr, u32 val) {}
|
static void None_write32(u32 adr, u32 val) {}
|
||||||
static u8 None_read08(u32 adr){ return (0xFF); }
|
static u8 None_read08(u32 adr)
|
||||||
static u16 None_read16(u32 adr){ return (0xFFFF); }
|
{
|
||||||
static u32 None_read32(u32 adr){ return (0xFFFFFFFF); }
|
if (adr > 0x09FFFFFF)
|
||||||
|
{
|
||||||
|
if ((adr & 0x0000FFFF) > MMU_new.backupDevice.data.size()) return 0xFF;
|
||||||
|
return MMU_new.backupDevice.data[adr & 0x0000FFFF];
|
||||||
|
}
|
||||||
|
if ((adr - 0x08000000) > gameInfo.romsize) return 0xFF;
|
||||||
|
|
||||||
|
return T1ReadByte((u8*)gameInfo.romdata, adr - 0x08000000);
|
||||||
|
}
|
||||||
|
static u16 None_read16(u32 adr)
|
||||||
|
{
|
||||||
|
if (adr > 0x09FFFFFF)
|
||||||
|
{
|
||||||
|
if ((adr & 0x0000FFFF) > MMU_new.backupDevice.data.size()) return 0xFFFF;
|
||||||
|
return (u16)MMU_new.backupDevice.data[adr & 0x0000FFFF];
|
||||||
|
}
|
||||||
|
if ((adr - 0x08000000) > gameInfo.romsize) return 0xFFFF;
|
||||||
|
|
||||||
|
return T1ReadWord((u8*)gameInfo.romdata, adr - 0x08000000);
|
||||||
|
}
|
||||||
|
static u32 None_read32(u32 adr)
|
||||||
|
{
|
||||||
|
if (adr > 0x09FFFFFF)
|
||||||
|
{
|
||||||
|
if ((adr & 0x0000FFFF) > MMU_new.backupDevice.data.size()) return 0xFFFFFFFF;
|
||||||
|
return (u32)MMU_new.backupDevice.data[adr & 0x0000FFFF];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((adr - 0x08000000) > gameInfo.romsize) return 0xFFFFFFFF;
|
||||||
|
|
||||||
|
return T1ReadLong((u8*)gameInfo.romdata, adr - 0x08000000);
|
||||||
|
}
|
||||||
static void None_info(char *info) { strcpy(info, "Nothing in GBA slot"); }
|
static void None_info(char *info) { strcpy(info, "Nothing in GBA slot"); }
|
||||||
|
|
||||||
ADDONINTERFACE addonNone = {
|
ADDONINTERFACE addonNone = {
|
||||||
|
|
|
@ -90,6 +90,7 @@ public:
|
||||||
//commands from mmu
|
//commands from mmu
|
||||||
void reset_command();
|
void reset_command();
|
||||||
u8 data_command(u8,int);
|
u8 data_command(u8,int);
|
||||||
|
std::vector<u8> data;
|
||||||
|
|
||||||
//this info was saved before the last reset (used for savestate compatibility)
|
//this info was saved before the last reset (used for savestate compatibility)
|
||||||
struct SavedInfo
|
struct SavedInfo
|
||||||
|
@ -129,7 +130,7 @@ private:
|
||||||
u32 addr_size, addr_counter;
|
u32 addr_size, addr_counter;
|
||||||
u32 addr;
|
u32 addr;
|
||||||
|
|
||||||
std::vector<u8> data;
|
|
||||||
std::vector<u8> data_autodetect;
|
std::vector<u8> data_autodetect;
|
||||||
enum STATE {
|
enum STATE {
|
||||||
DETECTING = 0, RUNNING = 1
|
DETECTING = 0, RUNNING = 1
|
||||||
|
|
Loading…
Reference in New Issue