OAM: Sprite RAM is now initialized based on the ram power on settings
This commit is contained in:
parent
8a450f6902
commit
40034199ee
5 changed files with 12 additions and 11 deletions
|
@ -404,7 +404,7 @@ void BaseMapper::InitializeChrRam(int32_t chrRamSize)
|
|||
_chrRamSize = chrRamSize >= 0 ? chrRamSize : defaultRamSize;
|
||||
if(_chrRamSize > 0) {
|
||||
_chrRam = new uint8_t[_chrRamSize];
|
||||
InitializeRam(_chrRam, _chrRamSize);
|
||||
BaseMapper::InitializeRam(_chrRam, _chrRamSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -531,8 +531,8 @@ void BaseMapper::Initialize(RomData &romData)
|
|||
_saveRam = new uint8_t[_saveRamSize];
|
||||
_workRam = new uint8_t[_workRamSize];
|
||||
|
||||
InitializeRam(_saveRam, _saveRamSize);
|
||||
InitializeRam(_workRam, _workRamSize);
|
||||
BaseMapper::InitializeRam(_saveRam, _saveRamSize);
|
||||
BaseMapper::InitializeRam(_workRam, _workRamSize);
|
||||
if(romData.HasTrainer && _workRamSize >= 0x2000) {
|
||||
memcpy(_workRam + 0x1000, romData.TrainerData.data(), 512);
|
||||
}
|
||||
|
@ -660,11 +660,11 @@ void BaseMapper::SetNametable(uint8_t index, uint8_t nametableIndex)
|
|||
{
|
||||
if(nametableIndex == 2 && _cartNametableRam[0] == nullptr) {
|
||||
_cartNametableRam[0] = new uint8_t[0x400];
|
||||
InitializeRam(_cartNametableRam[0], 0x400);
|
||||
BaseMapper::InitializeRam(_cartNametableRam[0], 0x400);
|
||||
}
|
||||
if(nametableIndex == 3 && _cartNametableRam[1] == nullptr) {
|
||||
_cartNametableRam[1] = new uint8_t[0x400];
|
||||
InitializeRam(_cartNametableRam[1], 0x400);
|
||||
BaseMapper::InitializeRam(_cartNametableRam[1], 0x400);
|
||||
}
|
||||
|
||||
_nametableIndexes[index] = nametableIndex;
|
||||
|
|
|
@ -219,7 +219,7 @@ public:
|
|||
virtual uint8_t ReadVRAM(uint16_t addr, MemoryOperationType type = MemoryOperationType::Read);
|
||||
void WriteVRAM(uint16_t addr, uint8_t value);
|
||||
|
||||
void InitializeRam(void* data, uint32_t length);
|
||||
static void InitializeRam(void* data, uint32_t length);
|
||||
|
||||
//Debugger Helper Functions
|
||||
CartridgeState GetState();
|
||||
|
|
|
@ -15,7 +15,7 @@ MemoryManager::MemoryManager(shared_ptr<BaseMapper> mapper)
|
|||
_internalRAM = new uint8_t[InternalRAMSize];
|
||||
for(int i = 0; i < 2; i++) {
|
||||
_nametableRAM[i] = new uint8_t[NameTableScreenSize];
|
||||
_mapper->InitializeRam(_nametableRAM[i], NameTableScreenSize);
|
||||
BaseMapper::InitializeRam(_nametableRAM[i], NameTableScreenSize);
|
||||
}
|
||||
|
||||
_mapper->SetDefaultNametables(_nametableRAM[0], _nametableRAM[1]);
|
||||
|
@ -41,7 +41,7 @@ MemoryManager::~MemoryManager()
|
|||
void MemoryManager::Reset(bool softReset)
|
||||
{
|
||||
if(!softReset) {
|
||||
_mapper->InitializeRam(_internalRAM, InternalRAMSize);
|
||||
BaseMapper::InitializeRam(_internalRAM, InternalRAMSize);
|
||||
}
|
||||
|
||||
_mapper->Reset(softReset);
|
||||
|
|
|
@ -58,6 +58,5 @@ class MemoryManager: public Snapshotable
|
|||
uint32_t ToAbsoluteChrAddress(uint16_t vramAddr);
|
||||
|
||||
static uint8_t GetOpenBus(uint8_t mask = 0xFF);
|
||||
static void InitializeRam(uint8_t* data, uint32_t length);
|
||||
};
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "EmulationSettings.h"
|
||||
#include "VideoDecoder.h"
|
||||
#include "Debugger.h"
|
||||
#include "BaseMapper.h"
|
||||
|
||||
PPU* PPU::Instance = nullptr;
|
||||
|
||||
|
@ -22,8 +23,9 @@ PPU::PPU(MemoryManager *memoryManager)
|
|||
uint8_t paletteRamBootValues[0x20] { 0x09, 0x01, 0x00, 0x01, 0x00, 0x02, 0x02, 0x0D, 0x08, 0x10, 0x08, 0x24, 0x00, 0x00, 0x04, 0x2C,
|
||||
0x09, 0x01, 0x34, 0x03, 0x00, 0x04, 0x00, 0x14, 0x08, 0x3A, 0x00, 0x02, 0x00, 0x20, 0x2C, 0x08 };
|
||||
memcpy(_paletteRAM, paletteRamBootValues, sizeof(_paletteRAM));
|
||||
memset(_spriteRAM, 0xFF, 0x100);
|
||||
memset(_secondarySpriteRAM, 0xFF, 0x20);
|
||||
|
||||
BaseMapper::InitializeRam(_spriteRAM, 0x100);
|
||||
BaseMapper::InitializeRam(_secondarySpriteRAM, 0x20);
|
||||
|
||||
_simpleMode = false;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue