Expose SA1 IRAM in old BSNES
This commit is contained in:
parent
444d8d5d10
commit
f9d4737104
Binary file not shown.
|
@ -185,6 +185,7 @@
|
|||
SGB_RTC = 7,
|
||||
SGB_WRAM = 8,
|
||||
SGB_HRAM = 9,
|
||||
SA1_IRAM = 10,
|
||||
|
||||
WRAM = 100,
|
||||
APURAM = 101,
|
||||
|
|
|
@ -37,6 +37,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
|||
MakeMemoryDomain("WRAM", LibsnesApi.SNES_MEMORY.WRAM, MemoryDomain.Endian.Little);
|
||||
MakeMemoryDomain("CARTROM", LibsnesApi.SNES_MEMORY.CARTRIDGE_ROM, MemoryDomain.Endian.Little, byteSize: 2); //there are signs this doesnt work on SGB?
|
||||
MakeMemoryDomain("CARTRAM", LibsnesApi.SNES_MEMORY.CARTRIDGE_RAM, MemoryDomain.Endian.Little, byteSize: 2);
|
||||
MakeMemoryDomain("SA1 IRAM", LibsnesApi.SNES_MEMORY.SA1_IRAM, MemoryDomain.Endian.Little, byteSize: 2);
|
||||
MakeMemoryDomain("VRAM", LibsnesApi.SNES_MEMORY.VRAM, MemoryDomain.Endian.Little, byteSize: 2);
|
||||
MakeMemoryDomain("OAM", LibsnesApi.SNES_MEMORY.OAM, MemoryDomain.Endian.Little, byteSize: 2);
|
||||
MakeMemoryDomain("CGRAM", LibsnesApi.SNES_MEMORY.CGRAM, MemoryDomain.Endian.Little, byteSize: 2);
|
||||
|
|
|
@ -323,7 +323,7 @@ void SA1::reset() {
|
|||
mmio.overflow = false;
|
||||
}
|
||||
|
||||
SA1::SA1() : iram(2048) {
|
||||
SA1::SA1() : iram(2048, "SA1_IRAM") {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,8 +12,11 @@ void StaticRAM::write(unsigned addr, uint8 n) { data_[addr] = n; }
|
|||
uint8& StaticRAM::operator[](unsigned addr) { return data_[addr]; }
|
||||
const uint8& StaticRAM::operator[](unsigned addr) const { return data_[addr]; }
|
||||
|
||||
StaticRAM::StaticRAM(unsigned n) : size_(n) { data_ = new uint8[size_]; }
|
||||
StaticRAM::~StaticRAM() { delete[] data_; }
|
||||
StaticRAM::StaticRAM(unsigned n, const char* name) : size_(n) {
|
||||
if(name) data_ = (uint8*)interface()->allocSharedMemory(name, size_);
|
||||
else data_ = new uint8[size_]();
|
||||
}
|
||||
StaticRAM::~StaticRAM() { abort(); }
|
||||
|
||||
//MappedRAM
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ struct StaticRAM : Memory {
|
|||
inline uint8& operator[](unsigned addr);
|
||||
inline const uint8& operator[](unsigned addr) const;
|
||||
|
||||
inline StaticRAM(unsigned size);
|
||||
inline StaticRAM(unsigned size, const char* name = NULL);
|
||||
inline ~StaticRAM();
|
||||
|
||||
private:
|
||||
|
|
|
@ -511,6 +511,9 @@ uint8_t* snes_get_memory_data(unsigned id) {
|
|||
case SNES_MEMORY_GAME_BOY_HRAM:
|
||||
if(SNES::cartridge.mode() != SNES::Cartridge::Mode::SuperGameBoy) break;
|
||||
return GameBoy::cpu.hram;
|
||||
case SNES_MEMORY_SA1_IRAM:
|
||||
if(!SNES::cartridge.has_sa1()) break;
|
||||
return SNES::sa1.iram.data();
|
||||
|
||||
case SNES_MEMORY_WRAM:
|
||||
return SNES::cpu.wram;
|
||||
|
@ -566,6 +569,9 @@ const char* snes_get_memory_id_name(unsigned id) {
|
|||
case SNES_MEMORY_GAME_BOY_HRAM:
|
||||
if(SNES::cartridge.mode() != SNES::Cartridge::Mode::SuperGameBoy) break;
|
||||
return "SGB_HRAM";
|
||||
case SNES_MEMORY_SA1_IRAM:
|
||||
if(!SNES::cartridge.has_sa1()) break;
|
||||
return "SA1_IRAM";
|
||||
|
||||
case SNES_MEMORY_WRAM:
|
||||
//return SNES::cpu.wram;
|
||||
|
@ -630,7 +636,11 @@ unsigned snes_get_memory_size(unsigned id) {
|
|||
case SNES_MEMORY_GAME_BOY_HRAM:
|
||||
if(SNES::cartridge.mode() != SNES::Cartridge::Mode::SuperGameBoy) break;
|
||||
size = 128;
|
||||
break;
|
||||
break;
|
||||
case SNES_MEMORY_SA1_IRAM:
|
||||
if(!SNES::cartridge.has_sa1()) break;
|
||||
size = SNES::sa1.iram.size();
|
||||
break;
|
||||
|
||||
case SNES_MEMORY_WRAM:
|
||||
size = 128 * 1024;
|
||||
|
|
|
@ -71,6 +71,7 @@ extern "C" {
|
|||
#define SNES_MEMORY_GAME_BOY_RTC 7
|
||||
#define SNES_MEMORY_GAME_BOY_WRAM 8
|
||||
#define SNES_MEMORY_GAME_BOY_HRAM 9
|
||||
#define SNES_MEMORY_SA1_IRAM 10
|
||||
|
||||
#define SNES_MEMORY_WRAM 100
|
||||
#define SNES_MEMORY_APURAM 101
|
||||
|
|
Loading…
Reference in New Issue