diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj
index 5bfb3b93dd..a6c8086386 100644
--- a/Core/Core.vcxproj
+++ b/Core/Core.vcxproj
@@ -175,6 +175,7 @@
+
@@ -413,6 +414,7 @@
+
diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters
index 26a7ff1a15..185e9c9299 100644
--- a/Core/Core.vcxproj.filters
+++ b/Core/Core.vcxproj.filters
@@ -496,6 +496,9 @@
Dialog
+
+ Dialog
+
@@ -912,6 +915,9 @@
Dialog
+
+ Dialog
+
diff --git a/Core/Dialog/PSPNetconfDialog.cpp b/Core/Dialog/PSPNetconfDialog.cpp
new file mode 100644
index 0000000000..0c66100352
--- /dev/null
+++ b/Core/Dialog/PSPNetconfDialog.cpp
@@ -0,0 +1,60 @@
+// 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 "PSPNetconfDialog.h"
+#include "ChunkFile.h"
+#include "../Core/MemMap.h"
+
+PSPNetconfDialog::PSPNetconfDialog() {
+}
+
+PSPNetconfDialog::~PSPNetconfDialog() {
+}
+
+int PSPNetconfDialog::Init(u32 paramAddr) {
+ // Already running
+ if (status != SCE_UTILITY_STATUS_NONE && status != SCE_UTILITY_STATUS_SHUTDOWN)
+ return SCE_ERROR_UTILITY_INVALID_STATUS;
+
+ int size = Memory::Read_U32(paramAddr);
+ memset(&request, 0, sizeof(request));
+ // Only copy the right size to support different request format
+ Memory::Memcpy(&request, paramAddr, size);
+
+ status = SCE_UTILITY_STATUS_INITIALIZE;
+ return 0;
+}
+
+int PSPNetconfDialog::Update() {
+ return 0;
+}
+
+int PSPNetconfDialog::Shutdown(bool force) {
+ if (status != SCE_UTILITY_STATUS_FINISHED && !force)
+ return SCE_ERROR_UTILITY_INVALID_STATUS;
+
+ return PSPDialog::Shutdown();
+}
+
+void PSPNetconfDialog::DoState(PointerWrap &p) {
+ auto s = p.Section("PSPNetconfigDialog", 0, 1);
+ if (!s)
+ return;
+
+ PSPDialog::DoState(p);
+ p.Do(request);
+}
\ No newline at end of file
diff --git a/Core/Dialog/PSPNetconfDialog.h b/Core/Dialog/PSPNetconfDialog.h
new file mode 100644
index 0000000000..4f62bfb689
--- /dev/null
+++ b/Core/Dialog/PSPNetconfDialog.h
@@ -0,0 +1,49 @@
+// 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 "Core/Dialog/PSPDialog.h"
+#include "Core/System.h"
+
+struct SceUtilityNetconfData {
+ char groupName[8];
+ int timeout;
+};
+
+struct SceUtilityNetconfParam {
+ pspUtilityDialogCommon common;
+ int netAction;
+ PSPPointer NetconfData;
+ int netHotspot;
+ int netHotspotConnected;
+ int netWifiSpot;
+};
+
+class PSPNetconfDialog: public PSPDialog {
+public:
+ PSPNetconfDialog();
+ virtual ~PSPNetconfDialog();
+
+ virtual int Init(u32 paramAddr);
+ virtual int Update();
+ virtual int Shutdown(bool force = false);
+ virtual void DoState(PointerWrap &p);
+
+private:
+ SceUtilityNetconfParam request;
+};
\ No newline at end of file