diff --git a/bin/Resources/libgme64.dll b/bin/Resources/libgme64.dll
new file mode 100644
index 0000000000000000000000000000000000000000..2ba99450f5c7a9372a5eaa67ccdb1ee20dd5c81c
Binary files /dev/null and b/bin/Resources/libgme64.dll differ
diff --git a/libs/gme/win64/libgme.dll.a b/libs/gme/win64/libgme.dll.a
new file mode 100644
index 0000000000000000000000000000000000000000..38079dc2a2c01b010c94e78d5285ba3781c7eb9e
Binary files /dev/null and b/libs/gme/win64/libgme.dll.a differ
diff --git a/src/Makefile b/src/Makefile
index b159de3b8255c67b77e0891ef9d138289b3c33a2..b6d7c7fc5bd26d7419ce85c0053f5b70bdbcec9f 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -176,6 +176,11 @@ ifdef MINGW
 include win32/Makefile.cfg
 endif #ifdef MINGW
 
+ifdef MINGW64
+MINGW=1
+include win32/Makefile.cfg
+endif #ifdef MINGW64
+
 ifdef UNIX
 UNIXCOMMON=1
 endif
@@ -710,7 +715,6 @@ $(BIN)/s_openal.so: $(OBJDIR)/s_openal.o
 	-$(MKDIR) $(BIN)
 	@echo Linking S_OpenAL.so...
 	$(CC) --shared $^ -o $@ -g --nostartfiles -lm -lopenal
-
 endif
 
 else
diff --git a/src/Makefile.cfg b/src/Makefile.cfg
index 68cced815d53c7508bb08000845d402953545db9..b6928f1f914d9fdb586da629bcf8e52c09722e2e 100644
--- a/src/Makefile.cfg
+++ b/src/Makefile.cfg
@@ -235,6 +235,7 @@ ifndef LINUX
 ifndef FREEBSD
 ifndef CYGWIN32
 ifndef MINGW
+ifndef MINGW64
 ifndef SDL
 ifndef NDS
 ifndef DUMMY
@@ -252,6 +253,7 @@ endif
 endif
 endif
 endif
+endif
 
 #determine the interface directory (where you put all i_*.c)
 i_cdmus_o=$(OBJDIR)/i_cdmus.o
diff --git a/src/win32/Makefile.cfg b/src/win32/Makefile.cfg
index 749734a727512fe87d3856d74e94a2902b31cb3a..a73858bd46c41a1abac7da190aee236423f1fbe8 100644
--- a/src/win32/Makefile.cfg
+++ b/src/win32/Makefile.cfg
@@ -9,6 +9,9 @@
 ifdef MINGW64
 	NOASM=1
 	NONX86=1
+	HAVE_LIBGME=1
+	LIBGME_CFLAGS=-I../libs/gme/include
+	LIBGME_LDFLAGS=-L../libs/gme/win64 -lgme
 	SDL_CFLAGS?=-I../libs/SDL2/x86_64-w64-mingw32/include/SDL2 -I../libs/SDL2_mixer/x86_64-w64-mingw32/include/SDL2 -Dmain=SDL_main
 	SDL_LDFLAGS?=-L../libs/SDL2/x86_64-w64-mingw32/lib -L../libs/SDL2_mixer/x86_64-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
 else
@@ -23,7 +26,9 @@ ifndef NOASM
 	USEASM=1
 endif
 
+ifndef MINGW64 #miniupnc is broken with MINGW64
 	HAVE_MINIUPNPC=1
+endif
 
 	OPTS=-DSTDC_HEADERS