diff --git a/Makefile.emscripten b/Makefile.emscripten
index e3bc40f6eb..ec432a3310 100644
--- a/Makefile.emscripten
+++ b/Makefile.emscripten
@@ -1,12 +1,12 @@
TARGET := retroarch.js
-EOPT = USE_ZLIB=1 USE_SDL=2 FULL_ES2=1 # Emscripten specific options
+EOPT = USE_ZLIB=1 USE_SDL=2 # Emscripten specific options
EOPTS = $(addprefix -s $(EMPTY), $(EOPT)) # Add '-s ' to each option
OS = Emscripten
OBJ :=
DEFINES := -DRARCH_INTERNAL -DHAVE_OVERLAY -DHAVE_MAIN
-DEFINES += -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_EGL -DHAVE_OVERLAY -DHAVE_GLSL -DHAVE_FILTERS_BUILTIN
+DEFINES += -DHAVE_OPENGL -DHAVE_OPENGLES -DHAVE_OPENGLES2 -DHAVE_EGL -DHAVE_OVERLAY -DHAVE_GLSL -DHAVE_FILTERS_BUILTIN
HAVE_EGL = 1
HAVE_OPENGLES = 1
@@ -21,6 +21,7 @@ HAVE_FBO = 1
WANT_ZLIB = 1
MEMORY = 268435456
LTO = 0
+ASYNC = 0
# XXX: setting this to 1/2 currently crashes Firefox nightly
PRECISE_F32 = 2
@@ -35,7 +36,7 @@ endif
#if you compile with SDL2 flag add this Emscripten flag "-s USE_SDL=2" to LDFLAGS:
LIBS := -s USE_SDL=2 -s USE_ZLIB=1
-LDFLAGS := -L. --no-heap-copy -s USE_ZLIB=1 -s TOTAL_MEMORY=$(MEMORY) -s OUTLINING_LIMIT=50000 \
+LDFLAGS := -L. --no-heap-copy -s USE_ZLIB=1 -s TOTAL_MEMORY=$(MEMORY) -s ASYNCIFY=$(ASYNC) \
-s EXPORTED_FUNCTIONS="['_main', '_malloc', '_cmd_savefiles', '_cmd_save_state', '_cmd_load_state', '_cmd_take_screenshot']" \
--js-library emscripten/library_rwebaudio.js \
--js-library emscripten/library_rwebinput.js \
diff --git a/dist-scripts/dist-cores.sh b/dist-scripts/dist-cores.sh
index d245532f4b..6afc3c6089 100755
--- a/dist-scripts/dist-cores.sh
+++ b/dist-scripts/dist-cores.sh
@@ -137,6 +137,7 @@ for f in `ls -v *_${platform}.${EXT}`; do
lto=0
whole_archive=
big_stack=
+ async=0
if [ $name = "nxengine" ] ; then
echo "Applying whole archive linking..."
whole_archive="WHOLE_ARCHIVE_LINK=1"
@@ -144,6 +145,10 @@ for f in `ls -v *_${platform}.${EXT}`; do
echo "Applying big stack..."
lto=0
big_stack="BIG_STACK=1"
+ elif [ $name = "mupen64plus" ] ; then
+ async=1
+ elif [ $name = "glupen64" ] ; then
+ async=1
fi
echo "-- Building core: $name --"
if [ $PLATFORM = "unix" ]; then
@@ -157,7 +162,7 @@ for f in `ls -v *_${platform}.${EXT}`; do
if [ $MAKEFILE_GRIFFIN = "yes" ]; then
make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1
elif [ $PLATFORM = "emscripten" ]; then
- make -C ../ -f Makefile.emscripten LTO=$lto -j7 clean || exit 1
+ make -C ../ -f Makefile.emscripten ASYNC=$async LTO=$lto -j7 clean || exit 1
elif [ $PLATFORM = "unix" ]; then
make -C ../ -f Makefile LINK=g++ LTO=$lto -j7 clean || exit 1
else
@@ -169,7 +174,7 @@ for f in `ls -v *_${platform}.${EXT}`; do
if [ $MAKEFILE_GRIFFIN = "yes" ]; then
make -C ../ -f Makefile.griffin platform=${platform} $whole_archive $big_stack -j3 || exit 1
elif [ $PLATFORM = "emscripten" ]; then
- make -C ../ -f Makefile.emscripten LTO=$lto -j7 TARGET=${name}_libretro.js || exit 1
+ make -C ../ -f Makefile.emscripten ASYNC=$async LTO=$lto -j7 TARGET=${name}_libretro.js || exit 1
elif [ $PLATFORM = "unix" ]; then
make -C ../ -f Makefile LINK=g++ $whole_archive $big_stack -j3 || exit 1
elif [ $PLATFORM = "ctr" ]; then
@@ -274,7 +279,7 @@ for f in `ls -v *_${platform}.${EXT}`; do
if [ $MAKEFILE_GRIFFIN = "yes" ]; then
make -C ../ -f Makefile.griffin platform=${platform} clean || exit 1
elif [ $PLATFORM = "emscripten" ]; then
- make -C ../ -f Makefile.emscripten LTO=$lto -j7 clean || exit 1
+ make -C ../ -f Makefile.emscripten ASYNC=$async LTO=$lto -j7 clean || exit 1
elif [ $PLATFORM = "unix" ]; then
make -C ../ -f Makefile LTO=$lto -j7 clean || exit 1
else
diff --git a/pkg/emscripten/embed/index.html b/pkg/emscripten/embed/index.html
index 6cc4198c7a..833f17312e 100644
--- a/pkg/emscripten/embed/index.html
+++ b/pkg/emscripten/embed/index.html
@@ -40,6 +40,7 @@
FCEUmm
FFmpeg
Gambatte
+ GLupeN64
Genesis Plus GX
Game Music Emu
gPSP