diff --git a/libs/discord-rpc/win32-dynamic/bin/discord-rpc.dll b/libs/discord-rpc/win32-dynamic/bin/discord-rpc.dll
index 4254cfa278673e877a605f31c5b462c8e355d3cb..88c7d0cefe4c4007a97e4469e07f64f619147000 100644
Binary files a/libs/discord-rpc/win32-dynamic/bin/discord-rpc.dll and b/libs/discord-rpc/win32-dynamic/bin/discord-rpc.dll differ
diff --git a/libs/discord-rpc/win32-dynamic/include/discord_register.h b/libs/discord-rpc/win32-dynamic/include/discord_register.h
index 4c16b68a7fdc6f57458089a634245bdb431fad51..16fb42f32897a363ab3aea0d532ebbe68e660bc9 100644
--- a/libs/discord-rpc/win32-dynamic/include/discord_register.h
+++ b/libs/discord-rpc/win32-dynamic/include/discord_register.h
@@ -1,17 +1,17 @@
 #pragma once
 
 #if defined(DISCORD_DYNAMIC_LIB)
-#  if defined(_WIN32)
-#    if defined(DISCORD_BUILDING_SDK)
-#      define DISCORD_EXPORT __declspec(dllexport)
-#    else
-#      define DISCORD_EXPORT __declspec(dllimport)
-#    endif
-#  else
-#    define DISCORD_EXPORT __attribute__((visibility("default")))
-#  endif
+#if defined(_WIN32)
+#if defined(DISCORD_BUILDING_SDK)
+#define DISCORD_EXPORT __declspec(dllexport)
 #else
-#  define DISCORD_EXPORT
+#define DISCORD_EXPORT __declspec(dllimport)
+#endif
+#else
+#define DISCORD_EXPORT __attribute__((visibility("default")))
+#endif
+#else
+#define DISCORD_EXPORT
 #endif
 
 #ifdef __cplusplus
diff --git a/libs/discord-rpc/win32-dynamic/lib/discord-rpc.lib b/libs/discord-rpc/win32-dynamic/lib/discord-rpc.lib
index 367920b36768f4de42c5b1bb697133d6f1e495d8..d8b6689f3ca2cdf5fb142b0b7b9752cdb46fc903 100644
Binary files a/libs/discord-rpc/win32-dynamic/lib/discord-rpc.lib and b/libs/discord-rpc/win32-dynamic/lib/discord-rpc.lib differ
diff --git a/libs/discord-rpc/win64-dynamic/bin/discord-rpc.dll b/libs/discord-rpc/win64-dynamic/bin/discord-rpc.dll
new file mode 100644
index 0000000000000000000000000000000000000000..8493c5490041059c525b28f351bb0a0658ed8e74
Binary files /dev/null and b/libs/discord-rpc/win64-dynamic/bin/discord-rpc.dll differ
diff --git a/libs/discord-rpc/win64-dynamic/include/discord_register.h b/libs/discord-rpc/win64-dynamic/include/discord_register.h
new file mode 100644
index 0000000000000000000000000000000000000000..16fb42f32897a363ab3aea0d532ebbe68e660bc9
--- /dev/null
+++ b/libs/discord-rpc/win64-dynamic/include/discord_register.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#if defined(DISCORD_DYNAMIC_LIB)
+#if defined(_WIN32)
+#if defined(DISCORD_BUILDING_SDK)
+#define DISCORD_EXPORT __declspec(dllexport)
+#else
+#define DISCORD_EXPORT __declspec(dllimport)
+#endif
+#else
+#define DISCORD_EXPORT __attribute__((visibility("default")))
+#endif
+#else
+#define DISCORD_EXPORT
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DISCORD_EXPORT void Discord_Register(const char* applicationId, const char* command);
+DISCORD_EXPORT void Discord_RegisterSteamGame(const char* applicationId, const char* steamId);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/libs/discord-rpc/win64-dynamic/include/discord_rpc.h b/libs/discord-rpc/win64-dynamic/include/discord_rpc.h
new file mode 100644
index 0000000000000000000000000000000000000000..3e1441e05874f1adff620e341d529c0e776509e7
--- /dev/null
+++ b/libs/discord-rpc/win64-dynamic/include/discord_rpc.h
@@ -0,0 +1,87 @@
+#pragma once
+#include <stdint.h>
+
+// clang-format off
+
+#if defined(DISCORD_DYNAMIC_LIB)
+#  if defined(_WIN32)
+#    if defined(DISCORD_BUILDING_SDK)
+#      define DISCORD_EXPORT __declspec(dllexport)
+#    else
+#      define DISCORD_EXPORT __declspec(dllimport)
+#    endif
+#  else
+#    define DISCORD_EXPORT __attribute__((visibility("default")))
+#  endif
+#else
+#  define DISCORD_EXPORT
+#endif
+
+// clang-format on
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct DiscordRichPresence {
+    const char* state;   /* max 128 bytes */
+    const char* details; /* max 128 bytes */
+    int64_t startTimestamp;
+    int64_t endTimestamp;
+    const char* largeImageKey;  /* max 32 bytes */
+    const char* largeImageText; /* max 128 bytes */
+    const char* smallImageKey;  /* max 32 bytes */
+    const char* smallImageText; /* max 128 bytes */
+    const char* partyId;        /* max 128 bytes */
+    int partySize;
+    int partyMax;
+    const char* matchSecret;    /* max 128 bytes */
+    const char* joinSecret;     /* max 128 bytes */
+    const char* spectateSecret; /* max 128 bytes */
+    int8_t instance;
+} DiscordRichPresence;
+
+typedef struct DiscordUser {
+    const char* userId;
+    const char* username;
+    const char* discriminator;
+    const char* avatar;
+} DiscordUser;
+
+typedef struct DiscordEventHandlers {
+    void (*ready)(const DiscordUser* request);
+    void (*disconnected)(int errorCode, const char* message);
+    void (*errored)(int errorCode, const char* message);
+    void (*joinGame)(const char* joinSecret);
+    void (*spectateGame)(const char* spectateSecret);
+    void (*joinRequest)(const DiscordUser* request);
+} DiscordEventHandlers;
+
+#define DISCORD_REPLY_NO 0
+#define DISCORD_REPLY_YES 1
+#define DISCORD_REPLY_IGNORE 2
+
+DISCORD_EXPORT void Discord_Initialize(const char* applicationId,
+                                       DiscordEventHandlers* handlers,
+                                       int autoRegister,
+                                       const char* optionalSteamId);
+DISCORD_EXPORT void Discord_Shutdown(void);
+
+/* checks for incoming messages, dispatches callbacks */
+DISCORD_EXPORT void Discord_RunCallbacks(void);
+
+/* If you disable the lib starting its own io thread, you'll need to call this from your own */
+#ifdef DISCORD_DISABLE_IO_THREAD
+DISCORD_EXPORT void Discord_UpdateConnection(void);
+#endif
+
+DISCORD_EXPORT void Discord_UpdatePresence(const DiscordRichPresence* presence);
+DISCORD_EXPORT void Discord_ClearPresence(void);
+
+DISCORD_EXPORT void Discord_Respond(const char* userid, /* DISCORD_REPLY_ */ int reply);
+
+DISCORD_EXPORT void Discord_UpdateHandlers(DiscordEventHandlers* handlers);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
diff --git a/libs/discord-rpc/win64-dynamic/lib/discord-rpc.lib b/libs/discord-rpc/win64-dynamic/lib/discord-rpc.lib
new file mode 100644
index 0000000000000000000000000000000000000000..fcd009d82f6353ab287f3b5fa1b8d0f8416e82bf
Binary files /dev/null and b/libs/discord-rpc/win64-dynamic/lib/discord-rpc.lib differ
diff --git a/src/win32/Makefile.cfg b/src/win32/Makefile.cfg
index a01be4bd5228e445e334692eccdfa8f70912c615..1b9e742b5df5b7b223aa02003b14e4cdaa6acc52 100644
--- a/src/win32/Makefile.cfg
+++ b/src/win32/Makefile.cfg
@@ -147,7 +147,12 @@ endif #MINGW64
 endif
 
 ifdef HAVE_DISCORDRPC
+ifdef MINGW64
+	CPPFLAGS+=-I../libs/discord-rpc/win64-dynamic/include
+	LDFLAGS+=-L../libs/discord-rpc/win64-dynamic/lib
+else
 	CPPFLAGS+=-I../libs/discord-rpc/win32-dynamic/include
 	LDFLAGS+=-L../libs/discord-rpc/win32-dynamic/lib
+endif
 	LIBS+=-ldiscord-rpc
 endif