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