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 DeSmuME team
|
||||
/* Copyright (C) 2009-2010 DeSmuME team
|
||||
|
||||
This file is part of DeSmuME
|
||||
|
||||
|
@ -18,8 +17,9 @@
|
|||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "../addons.h"
|
||||
#include <string.h>
|
||||
#include "../addons.h"
|
||||
#include "../NDSSystem.h"
|
||||
|
||||
static BOOL None_init(void) { return (TRUE); }
|
||||
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_write16(u32 adr, u16 val) {}
|
||||
static void None_write32(u32 adr, u32 val) {}
|
||||
static u8 None_read08(u32 adr){ return (0xFF); }
|
||||
static u16 None_read16(u32 adr){ return (0xFFFF); }
|
||||
static u32 None_read32(u32 adr){ return (0xFFFFFFFF); }
|
||||
static u8 None_read08(u32 adr)
|
||||
{
|
||||
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"); }
|
||||
|
||||
ADDONINTERFACE addonNone = {
|
||||
|
|
|
@ -90,6 +90,7 @@ public:
|
|||
//commands from mmu
|
||||
void reset_command();
|
||||
u8 data_command(u8,int);
|
||||
std::vector<u8> data;
|
||||
|
||||
//this info was saved before the last reset (used for savestate compatibility)
|
||||
struct SavedInfo
|
||||
|
@ -129,7 +130,7 @@ private:
|
|||
u32 addr_size, addr_counter;
|
||||
u32 addr;
|
||||
|
||||
std::vector<u8> data;
|
||||
|
||||
std::vector<u8> data_autodetect;
|
||||
enum STATE {
|
||||
DETECTING = 0, RUNNING = 1
|
||||
|
|
Loading…
Reference in New Issue