diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6f2037a799..6d1384bfb1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -762,6 +762,8 @@ add_library(${CoreLibName} ${CoreLinkType}
Core/HLE/sceImpose.h
Core/HLE/sceIo.cpp
Core/HLE/sceIo.h
+ Core/HLE/sceJpeg.cpp
+ Core/HLE/sceJpeg.h
Core/HLE/sceKernel.cpp
Core/HLE/sceKernel.h
Core/HLE/sceKernelAlarm.cpp
@@ -796,6 +798,8 @@ add_library(${CoreLibName} ${CoreLinkType}
Core/HLE/sceOpenPSID.h
Core/HLE/sceP3da.cpp
Core/HLE/sceP3da.h
+ Core/HLE/sceMd5.cpp
+ Core/HLE/sceMd5.h
Core/HLE/sceMp4.cpp
Core/HLE/sceMp4.h
Core/HLE/sceMp3.cpp
diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt
index 2e92313dec..95e838aa7d 100644
--- a/Core/CMakeLists.txt
+++ b/Core/CMakeLists.txt
@@ -38,6 +38,7 @@ set(SRCS
HLE/sceHttp.cpp
HLE/sceImpose.cpp
HLE/sceIo.cpp
+ HLE/sceJpeg.cpp
HLE/sceKernel.cpp
HLE/sceKernelAlarm.cpp
HLE/sceKernelEventFlag.cpp
@@ -55,6 +56,7 @@ set(SRCS
HLE/sceNet.cpp
HLE/sceNp.cpp
HLE/sceP3da.cpp
+ HLE/sceMd5.cpp
HLE/sceMp4.cpp
HLE/sceMp3.cpp
HLE/scePauth.cpp
diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj
index c4d8dd55b8..75fd9ac8cd 100644
--- a/Core/Core.vcxproj
+++ b/Core/Core.vcxproj
@@ -190,6 +190,7 @@
+
@@ -214,6 +215,7 @@
+
@@ -364,6 +366,7 @@
+
@@ -387,6 +390,7 @@
+
diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters
index e740f2043d..1d7eafeb18 100644
--- a/Core/Core.vcxproj.filters
+++ b/Core/Core.vcxproj.filters
@@ -186,9 +186,15 @@
HLE\Libraries
+
+ HLE\Libraries
+
HLE\Libraries
+
+ HLE\Libraries
+
HLE\Libraries
@@ -539,9 +545,15 @@
HLE\Libraries
+
+ HLE\Libraries
+
HLE\Libraries
+
+ HLE\Libraries
+
HLE\Libraries
diff --git a/Core/HLE/HLETables.cpp b/Core/HLE/HLETables.cpp
index 932a8f936b..dd8fe77c69 100644
--- a/Core/HLE/HLETables.cpp
+++ b/Core/HLE/HLETables.cpp
@@ -62,6 +62,8 @@
#include "sceMp3.h"
#include "scePauth.h"
#include "sceNp.h"
+#include "sceMd5.h"
+#include "sceJpeg.h"
#define N(s) s
@@ -263,7 +265,9 @@ void RegisterAllModules() {
Register_sceNp();
Register_sceNpCommerce2();
Register_sceNpService();
- Regester_sceNpAuth();
+ Register_sceNpAuth();
+ Register_sceMd5();
+ Register_sceJpeg();
for (int i = 0; i < numModules; i++)
{
diff --git a/Core/HLE/sceJpeg.cpp b/Core/HLE/sceJpeg.cpp
new file mode 100644
index 0000000000..679d2eb5e3
--- /dev/null
+++ b/Core/HLE/sceJpeg.cpp
@@ -0,0 +1,120 @@
+// Copyright (c) 2012- PPSSPP Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0 or later versions.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official git repository and contact information can be found at
+// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
+
+#include "HLE.h"
+
+
+int sceJpegDecompressAllImage()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegDecompressAllImage");
+ return 0;
+}
+
+int sceJpegMJpegCsc()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegMJpegCsc");
+ return 0;
+}
+
+int sceJpegDecodeMJpeg()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegDecodeMJpeg");
+ return 0;
+}
+
+int sceJpegDecodeMJpegYCbCrSuccessively()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegDecodeMJpegYCbCrSuccessively");
+ return 0;
+}
+
+int sceJpegDeleteMJpeg()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegDeleteMJpeg");
+ return 0;
+}
+
+int sceJpegDecodeMJpegSuccessively()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegDecodeMJpegSuccessively");
+ return 0;
+}
+
+int sceJpegCsc()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegCsc");
+ return 0;
+}
+
+int sceJpegFinishMJpeg()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegFinishMJpeg");
+ return 0;
+}
+
+int sceJpegGetOutputInfo()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegGetOutputInfo");
+ return 0;
+}
+
+int sceJpegDecodeMJpegYCbCr()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegDecodeMJpegYCbCr");
+ return 0;
+}
+
+int sceJpeg_9B36444C()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpeg_9B36444C");
+ return 0;
+}
+
+int sceJpegCreateMJpeg()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegCreateMJpeg");
+ return 0;
+}
+
+int sceJpegInitMJpeg()
+{
+ ERROR_LOG(HLE, "UNIMPL sceJpegInitMJpeg");
+ return 0;
+}
+
+
+const HLEFunction sceJpeg[] =
+{
+ {0x0425B986, WrapI_V, "sceJpegDecompressAllImage"},
+ {0x04B5AE02, WrapI_V, "sceJpegMJpegCsc"},
+ {0x04B93CEF, WrapI_V, "sceJpegDecodeMJpeg"},
+ {0x227662D7, WrapI_V, "sceJpegDecodeMJpegYCbCrSuccessively"},
+ {0x48B602B7, WrapI_V, "sceJpegDeleteMJpeg"},
+ {0x64B6F978, WrapI_V, "sceJpegDecodeMJpegSuccessively"},
+ {0x67F0ED84, WrapI_V, "sceJpegCsc"},
+ {0x7D2F3D7F, WrapI_V, "sceJpegFinishMJpeg"},
+ {0x8F2BB012, WrapI_V, "sceJpegGetOutputInfo"},
+ {0x91EED83C, WrapI_V, "sceJpegDecodeMJpegYCbCr"},
+ {0x9B36444C, WrapI_V, "sceJpeg_9B36444C"},
+ {0x9D47469C, WrapI_V, "sceJpegCreateMJpeg"},
+ {0xAC9E70E6, WrapI_V, "sceJpegInitMJpeg"},
+};
+
+void Register_sceJpeg()
+{
+ RegisterModule("sceJpeg", ARRAY_SIZE(sceJpeg), sceJpeg);
+}
diff --git a/Core/HLE/sceJpeg.h b/Core/HLE/sceJpeg.h
new file mode 100644
index 0000000000..94ce746c12
--- /dev/null
+++ b/Core/HLE/sceJpeg.h
@@ -0,0 +1,22 @@
+// Copyright (c) 2012- PPSSPP Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0 or later versions.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official git repository and contact information can be found at
+// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
+
+#pragma once
+
+#include "HLE.h"
+
+void Register_sceJpeg();
diff --git a/Core/HLE/sceMd5.cpp b/Core/HLE/sceMd5.cpp
new file mode 100644
index 0000000000..2cad9214e3
--- /dev/null
+++ b/Core/HLE/sceMd5.cpp
@@ -0,0 +1,56 @@
+// Copyright (c) 2012- PPSSPP Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0 or later versions.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official git repository and contact information can be found at
+// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
+
+#include "HLE.h"
+
+
+int sceMd5BlockInit(u32 ctxAddr)
+{
+ ERROR_LOG(HLE, "UNIMPL sceMd5BlockInit(%08x)", ctxAddr);
+ return 0;
+}
+
+int sceMd5BlockUpdate(u32 ctxAddr, u32 dataPtr, u32 len)
+{
+ ERROR_LOG(HLE, "UNIMPL sceMd5BlockUpdate(%08x, %08x, %d)", ctxAddr, dataPtr, len);
+ return 0;
+}
+
+int sceMd5BlockResult(u32 ctxAddr, u32 digestAddr)
+{
+ ERROR_LOG(HLE, "UNIMPL sceMd5BlockResult(%08x, %08x)", ctxAddr, digestAddr);
+ return 0;
+}
+
+int sceMd5Digest(u32 dataPtr, u32 len, u32 digestAddr)
+{
+ ERROR_LOG(HLE, "UNIMPL sceMd5Digest(%08x, %d, %08x)", dataPtr, len, digestAddr);
+ return 0;
+}
+
+const HLEFunction sceMd5[] =
+{
+ {0x19884A15, WrapI_U, "sceMd5BlockInit"},
+ {0xA30206C2, WrapI_UUU, "sceMd5BlockUpdate"},
+ {0x4876AFFF, WrapI_UU, "sceMd5BlockResult"},
+ {0x98E31A9E, WrapI_UUU, "sceMd5Digest"},
+};
+
+void Register_sceMd5()
+{
+ RegisterModule("sceMd5", ARRAY_SIZE(sceMd5), sceMd5);
+}
diff --git a/Core/HLE/sceMd5.h b/Core/HLE/sceMd5.h
new file mode 100644
index 0000000000..0f299bc92c
--- /dev/null
+++ b/Core/HLE/sceMd5.h
@@ -0,0 +1,22 @@
+// Copyright (c) 2012- PPSSPP Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0 or later versions.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official git repository and contact information can be found at
+// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
+
+#pragma once
+
+#include "HLE.h"
+
+void Register_sceMd5();
diff --git a/Core/HLE/sceNp.cpp b/Core/HLE/sceNp.cpp
index edcdf4ef65..7a3dcc0bcc 100644
--- a/Core/HLE/sceNp.cpp
+++ b/Core/HLE/sceNp.cpp
@@ -51,7 +51,7 @@ const HLEFunction sceNpAuth[] = {
{0xA1DE86F8, 0, "sceNpAuth_A1DE86F8"},
};
-void Regester_sceNpAuth()
+void Register_sceNpAuth()
{
RegisterModule("sceNpAuth", ARRAY_SIZE(sceNpAuth), sceNpAuth);
}
diff --git a/Core/HLE/sceNp.h b/Core/HLE/sceNp.h
index f2cc458e87..7985a4d739 100644
--- a/Core/HLE/sceNp.h
+++ b/Core/HLE/sceNp.h
@@ -20,4 +20,4 @@
void Register_sceNp();
void Register_sceNpCommerce2();
void Register_sceNpService();
-void Regester_sceNpAuth();
\ No newline at end of file
+void Register_sceNpAuth();
\ No newline at end of file
diff --git a/android/jni/Android.mk b/android/jni/Android.mk
index e73e908af2..a0efdcb99c 100644
--- a/android/jni/Android.mk
+++ b/android/jni/Android.mk
@@ -216,6 +216,7 @@ LOCAL_SRC_FILES := \
$(SRC)/Core/HLE/sceHttp.cpp \
$(SRC)/Core/HLE/sceImpose.cpp \
$(SRC)/Core/HLE/sceIo.cpp \
+ $(SRC)/Core/HLE/sceJpeg.cpp \
$(SRC)/Core/HLE/sceKernel.cpp \
$(SRC)/Core/HLE/sceKernelAlarm.cpp \
$(SRC)/Core/HLE/sceKernelEventFlag.cpp \
@@ -230,6 +231,7 @@ LOCAL_SRC_FILES := \
$(SRC)/Core/HLE/sceKernelTime.cpp \
$(SRC)/Core/HLE/sceKernelVTimer.cpp \
$(SRC)/Core/HLE/sceMpeg.cpp \
+ $(SRC)/Core/HLE/sceMd5.cpp \
$(SRC)/Core/HLE/sceMp4.cpp \
$(SRC)/Core/HLE/sceMp3.cpp \
$(SRC)/Core/HLE/sceNet.cpp \