From 93d46970199db3e1eb309bbc0cee8452c01a0a0d Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Wed, 30 Jul 2025 17:50:01 +0200 Subject: [PATCH] fixed ram access for non-standard dtcm location --- src/frontend/qt_sdl/MemViewDialog.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/frontend/qt_sdl/MemViewDialog.cpp b/src/frontend/qt_sdl/MemViewDialog.cpp index a06cbd53..e38ce35d 100644 --- a/src/frontend/qt_sdl/MemViewDialog.cpp +++ b/src/frontend/qt_sdl/MemViewDialog.cpp @@ -466,22 +466,19 @@ void* MemViewDialog::GetRAM(uint32_t address) { melonDS::NDS* nds = this->GetNDS(); - //! TODO: use Armv5::ReadMem instead - if (nds != nullptr) + if (nds != nullptr && nds->ARM9.DTCM != nullptr && nds->MainRAM != nullptr) { - if (address < 0x027E0000) + if (address < nds->ARM9.ITCMSize) { - if (nds->MainRAM) - { - return &nds->MainRAM[address & nds->MainRAMMask]; - } + return &nds->ARM9.ITCM[address & (ITCMPhysicalSize - 1)]; + } + else if ((address & nds->ARM9.DTCMMask) == nds->ARM9.DTCMBase) + { + return &nds->ARM9.DTCM[address & (DTCMPhysicalSize - 1)]; } else { - if (nds->ARM9.DTCM) - { - return &nds->ARM9.DTCM[address & 0xFFFF]; - } + return &nds->MainRAM[address & nds->MainRAMMask]; } } @@ -673,12 +670,10 @@ void MemViewDialog::onApplyEditToRAM(uint8_t value, QGraphicsItem *focus) } uint8_t* pRAM = (uint8_t*)this->GetRAM(addr); - if (pRAM == nullptr) + if (pRAM != nullptr) { - return; + *pRAM = value; } - - *pRAM = value; } void MemViewDialog::onSwitchFocus(FocusDirection eDirection)