diff --git a/CMakeLists.txt b/CMakeLists.txt
index 410e10f77f92..3d88f037b23f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1187,6 +1187,8 @@ add_library(${CoreLibName} ${CoreLinkType}
Core/HLE/sceDisplay.h
Core/HLE/sceDmac.cpp
Core/HLE/sceDmac.h
+ Core/HLE/sceG729.cpp
+ Core/HLE/sceG729.h
Core/HLE/sceGameUpdate.cpp
Core/HLE/sceGameUpdate.h
Core/HLE/sceGe.cpp
diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj
index c426cf335be3..72d2e69dc509 100644
--- a/Core/Core.vcxproj
+++ b/Core/Core.vcxproj
@@ -226,6 +226,7 @@
+
@@ -478,6 +479,7 @@
+
diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters
index 22b3971cff45..2aeb893964cf 100644
--- a/Core/Core.vcxproj.filters
+++ b/Core/Core.vcxproj.filters
@@ -195,6 +195,9 @@
HLE\Libraries
+
+ HLE\Libraries
+
HLE\Libraries
@@ -715,6 +718,9 @@
HLE\Libraries
+
+ HLE\Libraries
+
HLE\Libraries
diff --git a/Core/HLE/sceG729.cpp b/Core/HLE/sceG729.cpp
new file mode 100644
index 000000000000..264bcc6efbf4
--- /dev/null
+++ b/Core/HLE/sceG729.cpp
@@ -0,0 +1,40 @@
+// 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 "Core/HLE/HLE.h"
+#include "Core/HLE/FunctionWrappers.h"
+
+const HLEFunction sceG729[] =
+{
+ { 0x13F1028A, 0, "sceG729DecodeExit" },
+ { 0x17C11696, 0, "sceG729DecodeInitResource" },
+ { 0x3489D1F3, 0, "sceG729DecodeCore" },
+ { 0x55E14F75, 0, "sceG729DecodeInit" },
+ { 0x5A409D1B, 0, "sceG729EncodeExit" },
+ { 0x74804D93, 0, "sceG729DecodeReset" },
+ { 0x890B86AE, 0, "sceG729DecodeTermResource" },
+ { 0x8C87A2CA, 0, "sceG729EncodeReset" },
+ { 0x94714D50, 0, "sceG729EncodeTermResource" },
+ { 0xAA1E5462, 0, "sceG729EncodeInitResource" },
+ { 0xCFCD367C, 0, "sceG729EncodeInit" },
+ { 0xDB7259D5, 0, "sceG729EncodeCore" },
+};
+
+void Register_sceG729()
+{
+ RegisterModule("sceG729", ARRAY_SIZE(sceG729), sceG729);
+}
diff --git a/Core/HLE/sceG729.h b/Core/HLE/sceG729.h
new file mode 100644
index 000000000000..057c19c6dbd4
--- /dev/null
+++ b/Core/HLE/sceG729.h
@@ -0,0 +1,20 @@
+// 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
+
+void Register_sceG729();
diff --git a/Core/HLE/sceUsb.cpp b/Core/HLE/sceUsb.cpp
index eecb451fb518..c6758449524c 100644
--- a/Core/HLE/sceUsb.cpp
+++ b/Core/HLE/sceUsb.cpp
@@ -176,21 +176,12 @@ const HLEFunction sceUsbCam[] =
{ 0xF8847F60, 0, "sceUsbCamPollReadMicEnd" },
};
-const HLEFunction sceG729[] =
-{
- { 0x13f1028a, 0, "sceUsbstorBootSetCapacity" },
- { 0x17c11696, 0, "sceUsbstorBootSetLoadAddr" },
- { 0x3489d1f3, 0, "sceUsbstorBootGetDataSize" },
- { 0x5a409d1b, 0, "sceUsbstorBootSetStatus" },
- { 0x594BBF95, 0, "sceUsbstorBootRegisterNotify" },
- { 0x594BBF95, 0, "sceUsbstorBootUnregisterNotify" },
-};
-
void Register_sceUsb()
{
RegisterModule("sceUsbstor", ARRAY_SIZE(sceUsbstor), sceUsbstor);
RegisterModule("sceUsbstorBoot", ARRAY_SIZE(sceUsbstorBoot), sceUsbstorBoot);
RegisterModule("sceUsb", ARRAY_SIZE(sceUsb), sceUsb);
+ RegisterModule("sceG729", ARRAY_SIZE(sceG729), sceG729);
}
void Register_sceUsbCam()
diff --git a/android/jni/Android.mk b/android/jni/Android.mk
index ce10e5d81e7f..0e8d69c4d741 100644
--- a/android/jni/Android.mk
+++ b/android/jni/Android.mk
@@ -233,6 +233,7 @@ EXEC_AND_LIB_FILES := \
$(SRC)/Core/HLE/sceDeflt.cpp \
$(SRC)/Core/HLE/sceDisplay.cpp \
$(SRC)/Core/HLE/sceDmac.cpp \
+ $(SRC)/Core/HLE/sceG729 \
$(SRC)/Core/HLE/sceGe.cpp \
$(SRC)/Core/HLE/sceFont.cpp \
$(SRC)/Core/HLE/sceHeap.cpp \