diff --git a/src/core/bus.cpp b/src/core/bus.cpp index ee4c4ed70..c1bd37eb1 100644 --- a/src/core/bus.cpp +++ b/src/core/bus.cpp @@ -55,7 +55,7 @@ void Bus::Initialize(CPU::Core* cpu, CPU::CodeCache* cpu_code_cache, DMA* dma, void Bus::Reset() { - m_ram.fill(static_cast(0)); + std::memset(m_ram, 0, sizeof(m_ram)); m_MEMCTRL.exp1_base = 0x1F000000; m_MEMCTRL.exp2_base = 0x1F802000; m_MEMCTRL.exp1_delay_size.bits = 0x0013243F; @@ -76,8 +76,8 @@ bool Bus::DoState(StateWrapper& sw) sw.Do(&m_bios_access_time); sw.Do(&m_cdrom_access_time); sw.Do(&m_spu_access_time); - sw.DoBytes(m_ram.data(), m_ram.size()); - sw.DoBytes(m_bios.data(), m_bios.size()); + sw.DoBytes(m_ram, sizeof(m_ram)); + sw.DoBytes(m_bios, sizeof(m_bios)); sw.DoArray(m_MEMCTRL.regs, countof(m_MEMCTRL.regs)); sw.Do(&m_ram_size_reg); sw.Do(&m_tty_line_buffer); @@ -183,7 +183,7 @@ void Bus::SetBIOS(const std::vector& image) return; } - std::copy(image.cbegin(), image.cend(), m_bios.begin()); + std::memcpy(m_bios, image.data(), BIOS_SIZE); } std::tuple Bus::CalculateMemoryTiming(MEMDELAY mem_delay, COMDELAY common_delay) diff --git a/src/core/bus.h b/src/core/bus.h index 609dec2c4..de50b8287 100644 --- a/src/core/bus.h +++ b/src/core/bus.h @@ -239,7 +239,7 @@ private: void DoInvalidateCodeCache(u32 page_index); /// Direct access to RAM - used by DMA. - ALWAYS_INLINE u8* GetRAM() { return m_ram.data(); } + ALWAYS_INLINE u8* GetRAM() { return m_ram; } /// Returns the number of cycles stolen by DMA RAM access. ALWAYS_INLINE static TickCount GetDMARAMTickCount(u32 word_count) @@ -282,8 +282,8 @@ private: std::array m_spu_access_time = {}; std::bitset m_ram_code_bits{}; - std::array m_ram{}; // 2MB RAM - std::array m_bios{}; // 512K BIOS ROM + u8 m_ram[RAM_SIZE]{}; // 2MB RAM + u8 m_bios[BIOS_SIZE]{}; // 512K BIOS ROM std::vector m_exp1_rom; MEMCTRL m_MEMCTRL = {}; diff --git a/src/core/dma.cpp b/src/core/dma.cpp index 423d27f84..d307c576d 100644 --- a/src/core/dma.cpp +++ b/src/core/dma.cpp @@ -518,7 +518,7 @@ TickCount DMA::TransferDeviceToMemory(Channel channel, u32 address, u32 incremen if (dest_pointer == m_transfer_buffer.data()) { - u8* ram_pointer = m_bus->m_ram.data(); + u8* ram_pointer = m_bus->m_ram; for (u32 i = 0; i < word_count; i++) { std::memcpy(&ram_pointer[address], &m_transfer_buffer[i], sizeof(u32));