Emulator: Fix Emu memory writing
This commit is contained in:
+5
-3
@@ -7,6 +7,8 @@
|
||||
|
||||
#include <cstdint> // uint32_t
|
||||
#include <string_view>
|
||||
#include <utility> // std::move
|
||||
#include <vector>
|
||||
|
||||
#include "cpu.h"
|
||||
#include "emu.h"
|
||||
@@ -50,13 +52,13 @@ void Emu::addMemorySpace(std::string_view name, uint32_t start_address, uint32_t
|
||||
.end_address = end_adress,
|
||||
};
|
||||
|
||||
m_memory_spaces.emplace(name, memory_space);
|
||||
m_memory_spaces.emplace(name, std::move(memory_space));
|
||||
}
|
||||
|
||||
void Emu::writeMemory(uint32_t address, uint32_t value)
|
||||
{
|
||||
for (auto& memory_space : m_memory_spaces) {
|
||||
auto memory = memory_space.second;
|
||||
auto& memory = memory_space.second;
|
||||
if (address >= memory.start_address && address <= memory.end_address) {
|
||||
// Note: ECHO RAM hack
|
||||
if (address >= 0xc000 && address <= 0xddff) {
|
||||
@@ -74,7 +76,7 @@ void Emu::writeMemory(uint32_t address, uint32_t value)
|
||||
uint32_t Emu::readMemory(uint32_t address) const
|
||||
{
|
||||
for (const auto& memory_space : m_memory_spaces) {
|
||||
auto memory = memory_space.second;
|
||||
const auto& memory = memory_space.second;
|
||||
if (address >= memory.start_address && address <= memory.end_address) {
|
||||
return memory.memory[memory.active_bank][address];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user