diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3d88f037b2..2300d41896 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1339,6 +1339,7 @@ add_library(${CoreLibName} ${CoreLinkType}
Core/MemMap.cpp
Core/MemMap.h
Core/MemMapFunctions.cpp
+ Core/MemMapHelpers.h
Core/PSPLoaders.cpp
Core/PSPLoaders.h
Core/Reporting.cpp
diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj
index d62edfb800..dfe8680722 100644
--- a/Core/Core.vcxproj
+++ b/Core/Core.vcxproj
@@ -539,6 +539,7 @@
+
true
true
@@ -631,4 +632,4 @@
-
+
\ No newline at end of file
diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters
index 2aeb893964..4bbb788e14 100644
--- a/Core/Core.vcxproj.filters
+++ b/Core/Core.vcxproj.filters
@@ -1061,6 +1061,9 @@
HLE\Libraries
+
+ Core
+
diff --git a/Core/CwCheat.cpp b/Core/CwCheat.cpp
index 991e857c4e..165231c0fe 100644
--- a/Core/CwCheat.cpp
+++ b/Core/CwCheat.cpp
@@ -413,7 +413,7 @@ void CWCheatEngine::Run() {
int len = arg;
InvalidateICache(destAddr, len);
if (Memory::IsValidAddress(addr) && Memory::IsValidAddress(destAddr)) {
- Memory::Memcpy(destAddr, Memory::GetPointer(addr), len);
+ Memory::MemcpyUnchecked(destAddr, addr, len);
}
}
break;
@@ -442,7 +442,9 @@ void CWCheatEngine::Run() {
{
int srcAddr = Memory::Read_U32(addr) + offset;
int dstAddr = Memory::Read_U16(addr + baseOffset) + (arg3 & 0x0FFFFFFF);
- Memory::Memcpy(dstAddr, Memory::GetPointer(srcAddr), arg);
+ if (Memory::IsValidAddress(dstAddr) && Memory::IsValidAddress(srcAddr)) {
+ Memory::MemcpyUnchecked(dstAddr, srcAddr, arg);
+ }
type = -1; //Done
break; }
case 0x2:
diff --git a/Core/Dialog/PSPGamedataInstallDialog.cpp b/Core/Dialog/PSPGamedataInstallDialog.cpp
index 1f716fe85d..af297ba9be 100644
--- a/Core/Dialog/PSPGamedataInstallDialog.cpp
+++ b/Core/Dialog/PSPGamedataInstallDialog.cpp
@@ -16,7 +16,7 @@
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#include "Common/ChunkFile.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/System.h"
#include "Core/FileSystems/MetaFileSystem.h"
#include "Core/Dialog/PSPGamedataInstallDialog.h"
diff --git a/Core/Dialog/PSPMsgDialog.cpp b/Core/Dialog/PSPMsgDialog.cpp
index c2322b9e84..54cb4865f6 100755
--- a/Core/Dialog/PSPMsgDialog.cpp
+++ b/Core/Dialog/PSPMsgDialog.cpp
@@ -15,12 +15,12 @@
// Official git repository and contact information can be found at
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
-#include "PSPMsgDialog.h"
-#include "../Util/PPGeDraw.h"
-#include "../HLE/sceCtrl.h"
-#include "../Core/MemMap.h"
+#include "Core/Dialog/PSPMsgDialog.h"
+#include "Core/Util/PPGeDraw.h"
+#include "Core/HLE/sceCtrl.h"
+#include "Core/MemMapHelpers.h"
#include "Core/Reporting.h"
-#include "ChunkFile.h"
+#include "Common/ChunkFile.h"
#include "i18n/i18n.h"
#include "util/text/utf8.h"
diff --git a/Core/Dialog/PSPNetconfDialog.cpp b/Core/Dialog/PSPNetconfDialog.cpp
index 7bf4b42011..ded27c8cfd 100644
--- a/Core/Dialog/PSPNetconfDialog.cpp
+++ b/Core/Dialog/PSPNetconfDialog.cpp
@@ -18,7 +18,7 @@
#include "PSPNetconfDialog.h"
#include "ChunkFile.h"
#include "Core/Config.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/HLE/sceNetAdhoc.h"
#include "Core/Util/PPGeDraw.h"
#include "Core/HLE/sceCtrl.h"
diff --git a/Core/Dialog/PSPSaveDialog.cpp b/Core/Dialog/PSPSaveDialog.cpp
index 9feb1b1412..8410b96003 100755
--- a/Core/Dialog/PSPSaveDialog.cpp
+++ b/Core/Dialog/PSPSaveDialog.cpp
@@ -24,7 +24,7 @@
#include "Core/FileSystems/MetaFileSystem.h"
#include "Core/Util/PPGeDraw.h"
#include "Core/HLE/sceCtrl.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/Config.h"
#include "Core/Reporting.h"
#include "Core/HW/MemoryStick.h"
diff --git a/Core/HLE/HLE.cpp b/Core/HLE/HLE.cpp
index 0f6588d10a..d305311ee1 100644
--- a/Core/HLE/HLE.cpp
+++ b/Core/HLE/HLE.cpp
@@ -24,7 +24,7 @@
#include "Core/Config.h"
#include "Core/CoreTiming.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/Reporting.h"
#include "Core/Core.h"
diff --git a/Core/HLE/HLEHelperThread.cpp b/Core/HLE/HLEHelperThread.cpp
index 193a1514c7..97b947ceab 100644
--- a/Core/HLE/HLEHelperThread.cpp
+++ b/Core/HLE/HLEHelperThread.cpp
@@ -16,7 +16,7 @@
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#include "Common/ChunkFile.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/HLE/HLE.h"
#include "Core/HLE/HLEHelperThread.h"
#include "Core/HLE/sceKernelThread.h"
diff --git a/Core/HLE/__sceAudio.cpp b/Core/HLE/__sceAudio.cpp
index 6fb5b42d6c..ca0df3d418 100644
--- a/Core/HLE/__sceAudio.cpp
+++ b/Core/HLE/__sceAudio.cpp
@@ -30,7 +30,7 @@
#include "Core/Config.h"
#include "Core/CoreTiming.h"
#include "Core/Host.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/Reporting.h"
#include "Core/HLE/__sceAudio.h"
#include "Core/HLE/sceAudio.h"
diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp
index 534db9e8bb..18c65c8ca3 100644
--- a/Core/HLE/sceAtrac.cpp
+++ b/Core/HLE/sceAtrac.cpp
@@ -21,7 +21,7 @@
#include "Core/HLE/FunctionWrappers.h"
#include "Core/MIPS/MIPS.h"
#include "Core/CoreTiming.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/Reporting.h"
#include "Core/Config.h"
#include "Core/Debugger/Breakpoints.h"
@@ -803,7 +803,6 @@ u32 _AtracAddStreamData(int atracID, u32 bufPtr, u32 bytesToAdd) {
return 0;
int addbytes = std::min(bytesToAdd, atrac->first.filesize - atrac->first.fileoffset);
Memory::Memcpy(atrac->data_buf + atrac->first.fileoffset, bufPtr, addbytes);
- CBreakPoints::ExecMemCheck(bufPtr, false, addbytes, currentMIPS->pc);
atrac->first.size += bytesToAdd;
if (atrac->first.size > atrac->first.filesize)
atrac->first.size = atrac->first.filesize;
@@ -839,7 +838,6 @@ static u32 sceAtracAddStreamData(int atracID, u32 bytesToAdd) {
if (bytesToAdd > 0) {
int addbytes = std::min(bytesToAdd, atrac->first.filesize - atrac->first.fileoffset);
Memory::Memcpy(atrac->data_buf + atrac->first.fileoffset, atrac->first.addr + atrac->first.offset, addbytes);
- CBreakPoints::ExecMemCheck(atrac->first.addr + atrac->first.offset, false, addbytes, currentMIPS->pc);
}
atrac->first.size += bytesToAdd;
if (atrac->first.size > atrac->first.filesize)
@@ -1533,7 +1531,6 @@ static int _AtracSetData(Atrac *atrac, u32 buffer, u32 bufferSize) {
atrac->data_buf = new u8[atrac->first.filesize];
u32 copybytes = std::min(bufferSize, atrac->first.filesize);
Memory::Memcpy(atrac->data_buf, buffer, copybytes);
- CBreakPoints::ExecMemCheck(buffer, false, copybytes, currentMIPS->pc);
return __AtracSetContext(atrac);
#endif // USE_FFMPEG
@@ -1546,7 +1543,6 @@ static int _AtracSetData(Atrac *atrac, u32 buffer, u32 bufferSize) {
atrac->data_buf = new u8[atrac->first.filesize];
u32 copybytes = std::min(bufferSize, atrac->first.filesize);
Memory::Memcpy(atrac->data_buf, buffer, copybytes);
- CBreakPoints::ExecMemCheck(buffer, false, copybytes, currentMIPS->pc);
return __AtracSetContext(atrac);
}
@@ -2184,7 +2180,6 @@ static int sceAtracLowLevelDecode(int atracID, u32 sourceAddr, u32 sourceBytesCo
u32 sourcebytes = atrac->first.writableBytes;
if (sourcebytes > 0) {
Memory::Memcpy(atrac->data_buf + atrac->first.size, sourceAddr, sourcebytes);
- CBreakPoints::ExecMemCheck(sourceAddr, false, sourcebytes, currentMIPS->pc);
if (atrac->bufferPos >= atrac->first.size) {
atrac->bufferPos = atrac->first.size;
}
diff --git a/Core/HLE/sceDmac.cpp b/Core/HLE/sceDmac.cpp
index d3170a8ba4..e2615e156f 100644
--- a/Core/HLE/sceDmac.cpp
+++ b/Core/HLE/sceDmac.cpp
@@ -17,7 +17,7 @@
#include "Common/ChunkFile.h"
#include "Core/CoreTiming.h"
-#include "Core/MemMap.h"
+#include "Core/MemMapHelpers.h"
#include "Core/Reporting.h"
#include "Core/HLE/HLE.h"
#include "Core/HLE/sceDmac.h"
@@ -44,11 +44,6 @@ void __DmacDoState(PointerWrap &p) {
}
static int __DmacMemcpy(u32 dst, u32 src, u32 size) {
-#ifndef MOBILE_DEVICE
- CBreakPoints::ExecMemCheck(src, false, size, currentMIPS->pc);
- CBreakPoints::ExecMemCheck(dst, true, size, currentMIPS->pc);
-#endif
-
bool skip = false;
if (Memory::IsVRAMAddress(src) || Memory::IsVRAMAddress(dst)) {
skip = gpu->PerformMemoryCopy(dst, src, size);
diff --git a/Core/HLE/sceKernelInterrupt.cpp b/Core/HLE/sceKernelInterrupt.cpp
index 5d533aba19..943ef656e4 100644
--- a/Core/HLE/sceKernelInterrupt.cpp
+++ b/Core/HLE/sceKernelInterrupt.cpp
@@ -19,6 +19,7 @@
#include
#include