yksoft1 / dosbox-x-vanilla-sdl

A test fork of joncampbell123's DosBox-X that should be able to build with vanilla SDL1 and SDL2.
GNU General Public License v2.0
31 stars 4 forks source link

Various compile issues and SDL errors with SDL1/SDL2 #3

Closed gr33k closed 5 years ago

gr33k commented 5 years ago

Hi @yksoft1 - I posted some info here on this https://github.com/joncampbell123/dosbox-x/issues/882 - but wanted to post on your fork as I'm testing both with no success. My goal is to have an emscripten dosbox build with mt32 support.

FWIW - I'm able to build em-dosbox just fine. However - it does not have the MT-32 support that I'm looking for ;) I'd love to be able to use my Boxer installs 1:1 with either MT-32, GUS, or Adlib setup. Right now em-dosbox only provides GUS and Adlib (also some sounds are kinda strange .... shall we say "off-sounding". Not huge deal, but it would be cool if dosbox-x didn't experience that issue.

➜  dosbox-x-vanilla-sdl git:(emscripten) ✗ cat build-emscripten-sdl2
#!/bin/bash

# make sure you use ". ./emsdk_set_env.sh"

# I'm sick and tired of all the churn the three versions of autoconf
# are causing in this repo. Stop committing the configure scripts
# and just autoregen.
./autogen.sh || exit 1

echo Compiling DOSBox-X
chmod +x configure

# for sdl2-config and sdl-config
export PATH=/root/emsdk/emscripten/1.38.27/system/bin:$PATH

# build command borrowed from Yksoft1 vanilla DOSBox-X port with modifications
CC="emcc" CXX="em++" LD="emcc" LD_CXX="em++" CFLAGS="-DEMTERPRETER_SYNC" CXXFLAGS="-DEMSCRIPTEN=1 -DEMTERPRETER_SYNC" ./configure --host=x86_64-linux --disable-dynamic-x86 --enable-sdl2 --with-sdl-prefix=/root/emsdk/emscripten/1.38.27/system --disable-opengl --enable-force-menu-sdldraw "$@"
make -j3 || exit 1
#emcc -O1 -s USE_SDL=2 -s TOTAL_MEMORY=104857600 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=@d3.txt dosbox-x.bc --memory-init-file 0 -o th5e.html --preload-file d:/tmpp/th5x@/

^^ I've tried with --disable-mt32 and without (ideally this is mandatory for me else I'm wasting my time..)

I have tried with the default sdl2-config file, and I've also had success (I think it was the scummvm-emscripten github that suggested copying your system sdl2-config and modifying the path):

➜  dosbox-x-vanilla-sdl git:(emscripten) ✗ cat /root/emsdk/emscripten/1.38.27/system/bin/sdl2-config
#!/bin/sh

prefix=/root/emsdk/emscripten/1.38.27/system
exec_prefix=${prefix}
exec_prefix_set=no
libdir=${prefix}/lib/x86_64-linux-gnu

#usage="\
#Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
usage="\
Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]"

if test $# -eq 0; then
      echo "${usage}" 1>&2
      exit 1
fi

while test $# -gt 0; do
  case "$1" in
  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
  *) optarg= ;;
  esac

  case $1 in
    --prefix=*)
      prefix=$optarg
      if test $exec_prefix_set = no ; then
        exec_prefix=$optarg
      fi
      ;;
    --prefix)
      echo $prefix
      ;;
    --exec-prefix=*)
      exec_prefix=$optarg
      exec_prefix_set=yes
      ;;
    --exec-prefix)
      echo $exec_prefix
      ;;
    --version)
      echo 2.0.4
      ;;
    --cflags)
      echo -I${prefix}/include/SDL2   -D_REENTRANT
      ;;
    --libs)
      echo -L${prefix}/lib/x86_64-linux-gnu  -lSDL2
      ;;
    --static-libs)
#    --libs|--static-libs)
      echo -L${prefix}/lib/x86_64-linux-gnu  -lSDL2   -Wl,--no-undefined -lm -ldl  -lasound -lm -ldl -lpthread -lpulse-simple -lpulse -lsndio  -lX11 -lXext -lXcursor -lXinerama -lXi -lXrandr -lXss -lXxf86vm -lwayland-egl -lwayland-client -lwayland-cursor -lxkbcommon -lpthread -lrt
      ;;
    *)
      echo "${usage}" 1>&2
      exit 1
      ;;
  esac
  shift
done

Paths that I can find that have SDL stuff...

/root/.emscripten_ports/sdl2/SDL2-version_17/include/SDL.h
/root/SDL-emscripten/include/SDL.h
/root/emscripten/system/include/SDL/SDL.h
/root/emsdk/emscripten/1.38.27/system/include/SDL/SDL.h
/usr/share/emscripten/system/include/SDL/SDL.h

emsdk environment variables:

➜  emsdk git:(master) ✗ cat emsdk_set_env.sh
export PATH="/root/emsdk:/root/emsdk/clang/e1.38.27_64bit:/root/emsdk/node/8.9.1_64bit/bin:/root/emsdk/emscripten/1.38.27:/usr/include/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/src/linux-headers-4.15.0-45/"
export EMSDK="/root/emsdk"
export LLVM_ROOT="/root/emsdk/clang/e1.38.27_64bit"
export EMSCRIPTEN_NATIVE_OPTIMIZER="/root/emsdk/clang/e1.38.27_64bit/optimizer"
export BINARYEN_ROOT="/root/emsdk/clang/e1.38.27_64bit/binaryen"
export EMSDK_NODE="/root/emsdk/node/8.9.1_64bit/bin/node"
export EMSCRIPTEN="/root/emsdk/emscripten/1.38.27"

OS: Linux 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

I've installed using emsdk following the instructions on the emscripten website.

./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh

I've been trying for weeks at this point...any help is super-duper appreciated 😅

gr33k commented 5 years ago

So here is one attempt which looks like it may have worked...but I don't see a dosbox.js or dosbox.html - I am possibly missing something here? Lots of compile output so I pasted it here: https://paste.thec0de.com/?b66b6b6ec814ad4e#Umh9yPwNnvpEZLSN5ADWRUDpr4hp/5YNF3qnNGQ/GpY=

seems to generate a dosbox-x in /src - that's not right is it?

gr33k commented 5 years ago

Also tried the Makefile in make_em folder:

➜  dosbox-x-vanilla-sdl git:(emscripten) ✗ cd make_em
➜  make_em git:(emscripten) ✗ ll
total 28K
-rw-r--r-- 1 root root 4.4K Feb 17 22:08 Makefile
-rw-r--r-- 1 root root 4.2K Feb 17 22:08 Makefile_nonemt
-rw-r--r-- 1 root root 9.0K Feb 17 11:42 config.h
➜  make_em git:(emscripten) ✗ make -f Makefile
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/opl.o ../src/hardware/opl.cpp
WARNING  root: Assigning a non-existent settings attribute "USE_SDL"
WARNING  root:  - did you mean one of USE_BSS?
WARNING  root:  - perhaps a typo in emcc's  -s X=Y  notation?
WARNING  root:  - (see src/settings.js for valid values)
emcc  -g -o dosbox-x.bc ../src/dosbox.o ../src/aviwriter/riff.o ../src/aviwriter/ksdataformat.o ../src/aviwriter/avi_writer.o ../src/aviwriter/avi_rw_iobuf.o ../src/aviwriter/guid.o ../src/aviwriter/riff_wav_writer.o ../src/builtin/debug_exe.o ../src/builtin/find_exe.o ../src/builtin/dsxmenu_exe_pc98.o ../src/builtin/append_exe.o ../src/builtin/25_com.o ../src/builtin/hexmem32_exe.o ../src/builtin/50_com.o ../src/builtin/cwsdpmi_exe.o ../src/builtin/dos32a_exe.o ../src/builtin/hexmem16_exe.o ../src/builtin/mem_com.o ../src/builtin/tree_exe.o ../src/builtin/xcopy_exe.o ../src/builtin/buffers_com.o ../src/builtin/dsxmenu_exe_pc.o ../src/builtin/dos4gw_exe.o ../src/builtin/device_com.o ../src/builtin/28_com.o ../src/builtin/dosidle_exe.o ../src/builtin/lastdriv_com.o ../src/builtin/move_exe.o ../src/builtin/fcbs_com.o ../src/builtin/edit_com.o ../src/builtin/copy_exe.o ../src/cpu/core_prefetch.o ../src/cpu/callback.o ../src/cpu/mmx.o ../src/cpu/core_normal.o ../src/cpu/flags.o ../src/cpu/core_normal_286.o ../src/cpu/core_dynrec.o ../src/cpu/modrm.o ../src/cpu/core_full.o ../src/cpu/core_dyn_x86.o ../src/cpu/core_normal_8086.o ../src/cpu/cpu.o ../src/cpu/core_simple.o ../src/cpu/paging.o ../src/debug/debug_gui.o ../src/debug/debug_win32.o ../src/debug/debug_disasm.o ../src/debug/debug.o ../src/dos/dos_mscdex.o ../src/dos/drives.o ../src/dos/drive_iso.o ../src/dos/dos_ioctl.o ../src/dos/cdrom.o ../src/dos/cdrom_aspi_win32.o ../src/dos/dos_keyboard_layout.o ../src/dos/dos_execute.o ../src/dos/cdrom_ioctl_linux.o ../src/dos/cdrom_ioctl_win32.o ../src/dos/dos_files.o ../src/dos/dos_tables.o ../src/dos/dos_programs.o ../src/dos/drive_virtual.o ../src/dos/cdrom_image.o ../src/dos/dos_devices.o ../src/dos/dos_classes.o ../src/dos/drive_fat.o ../src/dos/cdrom_ioctl_os2.o ../src/dos/dos.o ../src/dos/dos_misc.o ../src/dos/drive_cache.o ../src/dos/dos_memory.o ../src/dos/drive_local.o ../src/fpu/fpu.o ../src/gui/sdlmain_linux.o ../src/gui/ptrop.o ../src/gui/sdl_gui.o ../src/gui/render_scalers.o ../src/gui/ScalingEffect.o ../src/gui/midi.o ../src/gui/direct3d.o ../src/gui/sdlmain.o ../src/gui/bitop.o ../src/gui/sdl_mapper.o ../src/gui/zipfile.o ../src/gui/menu.o ../src/gui/render.o ../src/gui/hq2x_d3d.o ../src/gui/zipcrc.o ../src/hardware/pic.o ../src/hardware/vga_pc98_egc.o ../src/hardware/pc98_fm.o ../src/hardware/voodoo_vogl.o ../src/hardware/vga_memory.o ../src/hardware/vga_paradise.o ../src/hardware/hardware.o ../src/hardware/vga_pc98_cg.o ../src/hardware/ps1_sound.o ../src/hardware/nukedopl.o ../src/hardware/vga_crtc.o ../src/hardware/ide.o ../src/hardware/vga_gfx.o ../src/hardware/dongle.o ../src/hardware/vga_attr.o ../src/hardware/disney.o ../src/hardware/dbopl.o ../src/hardware/ipxserver.o ../src/hardware/sblaster.o ../src/hardware/ne2000.o ../src/hardware/pci_bus.o ../src/hardware/hardopl.o ../src/hardware/floppy.o ../src/hardware/joystick.o ../src/hardware/pcspeaker.o ../src/hardware/keyboard.o ../src/hardware/iohandler.o ../src/hardware/8255.o ../src/hardware/gameblaster.o ../src/hardware/vga_tseng.o ../src/hardware/vga_pc98_gdc.o ../src/hardware/vga_seq.o ../src/hardware/pc98.o ../src/hardware/vga_draw.o ../src/hardware/adlib.o ../src/hardware/vga_misc.o ../src/hardware/innova.o ../src/hardware/timer.o ../src/hardware/vga_xga.o ../src/hardware/vga_pc98_crtc.o ../src/hardware/voodoo_interface.o ../src/hardware/mixer.o ../src/hardware/vga.o ../src/hardware/vga_dac.o ../src/hardware/gus.o ../src/hardware/tandy_sound.o ../src/hardware/cmos.o ../src/hardware/dma.o ../src/hardware/voodoo_emu.o ../src/hardware/opl.o ../src/hardware/vga_pc98_dac.o ../src/hardware/ipx.o ../src/hardware/voodoo_opengl.o ../src/hardware/vga_s3.o ../src/hardware/memory.o ../src/hardware/voodoo.o ../src/hardware/vga_other.o ../src/hardware/mpu401.o ../src/hardware/parport/printer_charmaps.o ../src/hardware/parport/filelpt.o ../src/hardware/parport/printer.o ../src/hardware/parport/parport.o ../src/hardware/parport/directlpt_linux.o ../src/hardware/parport/directlpt_win32.o ../src/hardware/serialport/seriallog.o ../src/hardware/serialport/nullmodem.o ../src/hardware/serialport/serialmouse.o ../src/hardware/serialport/misc_util.o ../src/hardware/serialport/directserial.o ../src/hardware/serialport/softmodem.o ../src/hardware/serialport/serialport.o ../src/hardware/serialport/serialdummy.o ../src/hardware/serialport/libserial.o ../src/hardware/snd_pc98/cbus/board86.o ../src/hardware/snd_pc98/cbus/board26k.o ../src/hardware/snd_pc98/common/parts.o ../src/hardware/snd_pc98/generic/keydisp.o ../src/hardware/snd_pc98/sound/opngeng.o ../src/hardware/snd_pc98/sound/opngenc.o ../src/hardware/snd_pc98/sound/pcm86g.o ../src/hardware/snd_pc98/sound/pcm86c.o ../src/hardware/snd_pc98/sound/tms3631g.o ../src/hardware/snd_pc98/sound/tms3631c.o ../src/hardware/snd_pc98/sound/psggeng.o ../src/hardware/snd_pc98/sound/psggenc.o ../src/hardware/snd_pc98/sound/adpcmg.o ../src/hardware/snd_pc98/sound/adpcmc.o ../src/hardware/snd_pc98/sound/rhythmc.o ../src/hardware/snd_pc98/sound/fmboard.o ../src/hardware/snd_pc98/sound/fmtimer.o ../src/hardware/snd_pc98/sound/sound.o ../src/hardware/snd_pc98/sound/soundrom.o ../src/hardware/snd_pc98/sound/getsnd/getwave.o ../src/hardware/snd_pc98/sound/getsnd/getsmix.o ../src/hardware/snd_pc98/sound/getsnd/getsnd.o ../src/hardware/snd_pc98/x11/dosio.o ../src/ints/int10_char.o ../src/ints/mouse.o ../src/ints/bios_keyboard.o ../src/ints/int10_pal.o ../src/ints/bios_disk.o ../src/ints/xms.o ../src/ints/qcow2_disk.o ../src/ints/int10_vptable.o ../src/ints/int10_put_pixel.o ../src/ints/int10_vesa.o ../src/ints/int10_modes.o ../src/ints/int10.o ../src/ints/bios.o ../src/ints/bios_memdisk.o ../src/ints/int10_video_state.o ../src/ints/ems.o ../src/ints/bios_vhd.o ../src/ints/int10_misc.o ../src/ints/int10_memory.o ../src/libs/gui_tk/gui_tk.o ../src/misc/programs.o ../src/misc/setup.o ../src/misc/support.o ../src/misc/cross.o ../src/misc/regionalloctracking.o ../src/misc/shiftjis.o ../src/misc/messages.o ../src/shell/shell.o ../src/shell/shell_batch.o ../src/shell/shell_cmds.o ../src/shell/shell_misc.o -lm  -s USE_SDL=2
WARNING  root: emcc: cannot find library "m"
WARNING  root: Assigning a non-existent settings attribute "USE_SDL"
WARNING  root:  - did you mean one of USE_BSS?
WARNING  root:  - perhaps a typo in emcc's  -s X=Y  notation?
WARNING  root:  - (see src/settings.js for valid values)
➜  make_em git:(emscripten) ✗ ll
total 30M
-rw-r--r-- 1 root root 4.4K Feb 17 22:08 Makefile
-rw-r--r-- 1 root root 4.2K Feb 17 22:08 Makefile_nonemt
-rw-r--r-- 1 root root 9.0K Feb 17 11:42 config.h
-rw-r--r-- 1 root root  30M Feb 18 03:06 dosbox-x.bc

Seems to generate the dosbox-x.bc ... so confused as I'm not sure what to expect here - any additional info is greatly appreciated my friend please 😄

yksoft1 commented 5 years ago

Didn't you try "html" target with my make_em Makefiles? However seeing this

WARNING root: Assigning a non-existent settings attribute "USE_SDL"

I think you should check your Emscripten environment again as my emcc always recognized this option.

FYI I already had a DOSBox fork with Emscripten and MT-32 support borrowed from DOSBox-X (but still SDL1 only) at https://github.com/yksoft1/dosbox-0.74-2-em/tree/mt32emu-2.3.0

BTW my Emscripten environment is very unorthodox (I'm using Emscripten on native Windows and and old MSYS1 environment I had used for years) so expect errors if you try to build it on any other platforms.

yksoft1 commented 5 years ago

So here is one attempt which looks like it may have worked...but I don't see a dosbox.js or dosbox.html - I am possibly missing something here? Lots of compile output so I pasted it here: https://paste.thec0de.com/?b66b6b6ec814ad4e#Umh9yPwNnvpEZLSN5ADWRUDpr4hp/5YNF3qnNGQ/GpY=

seems to generate a dosbox-x in /src - that's not right is it?

the "dosbox-x" file should actually be the dosbox-x.bc file. I didn't modify GNU autoconf files to include real support of Emscripten at all. So, you could try to rename the "dosbox-x" file to dosbox-x.bc and try generating html files manually: /usr/share/emscripten/emcc -O3 -s USE_SDL=2 -s TOTAL_MEMORY=104857600 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=@d3.txt dosbox-x.bc --memory-init-file 0 -o dosbox-x.html

To see whether it was able to generate html, js and wasm files.

BTW, my approach of porting DOSBox-X to Emscripten is different from joncampbell123's main branch. Don't use his build scripts on my fork, just take reference from build_em.txt in my source tree.

gr33k commented 5 years ago

Thanks @yksoft1 ! I didn't realize you had a fork with MT32 (This is exactly what I want) - however looking at it...yes it's just a TAD hacky ;) Would it be easy to fork em-dosbox as it is today, and add MT32 to it (all while still allowing the use of packager.py?)? I am running in to some issues compiling that but I've only just began! I ask because whatever em-dosbox uses in it's configure/build scripts work fine on Ubuntu 16/18 for me.

UPDATE: Disregard - My fault for not cleaning up my ENV variables before attempting this

Trying the compile command with emcc produces:

> ➜  dosbox-x-vanilla-sdl git:(emscripten) ✗ emcc -O3 -s USE_SDL=2 -s TOTAL_MEMORY=104857600 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=@d3.txt dosbox-x.bc --memory-init-file 0 -o dosbox-x.html
> WARNING  root: (Emscripten: system change: 1.22.1|le32-unknown-nacl|/root/emsdk/clang/e1.38.27_64bit| vs 1.38.27|/root/emsdk/clang/e1.38.27_64bit|6.0, clearing cache)
> WARNING  root: LLVM version appears incorrect (seeing "", expected "3.4")
> INFO     root: (Emscripten: Running sanity checks)
> WARNING  root: Assigning a non-existent settings attribute "USE_SDL"
> WARNING  root:  - did you mean one of USE_BSS?
> WARNING  root:  - perhaps a typo in emcc's  -s X=Y  notation?
> WARNING  root:  - (see src/settings.js for valid values)
> WARNING  root: Assigning a non-existent settings attribute "EMTERPRETIFY"
> WARNING  root:  - perhaps a typo in emcc's  -s X=Y  notation?
> WARNING  root:  - (see src/settings.js for valid values)
> WARNING  root: Assigning a non-existent settings attribute "EMTERPRETIFY_ASYNC"
> WARNING  root:  - did you mean one of EMTERPRETIFY?
> WARNING  root:  - perhaps a typo in emcc's  -s X=Y  notation?
> WARNING  root:  - (see src/settings.js for valid values)
> WARNING  root: Assigning a non-existent settings attribute "EMTERPRETIFY_WHITELIST"
> WARNING  root:  - did you mean one of EMTERPRETIFY, EMTERPRETIFY_ASYNC, ASYNCIFY_WHITELIST?
> WARNING  root:  - perhaps a typo in emcc's  -s X=Y  notation?
> WARNING  root:  - (see src/settings.js for valid values)
> Traceback (most recent call last):
>   File "/usr/bin/emcc", line 1547, in <module>
>     extra_files_to_link = system_libs.calculate([f for _, f in sorted(temp_files)], in_temp, stdout, stderr, forced=forced_stdlibs)
>   File "/usr/share/emscripten/tools/system_libs.py", line 545, in calculate
>     libfile = shared.Cache.get(name, create)
>   File "/usr/share/emscripten/tools/cache.py", line 36, in get
>     shutil.copyfile(creator(), cachename)
>   File "/usr/share/emscripten/tools/system_libs.py", line 379, in create_libcextra
>     return build_libc('libcextra.bc', libcextra_files, ['-O2'])
>   File "/usr/share/emscripten/tools/system_libs.py", line 60, in build_libc
>     run_commands(commands)
>   File "/usr/share/emscripten/tools/system_libs.py", line 45, in run_commands
>     call_process(command)
>   File "/usr/share/emscripten/tools/system_libs.py", line 14, in call_process
>     raise CalledProcessError(proc.returncode, cmd)
> subprocess.CalledProcessError: Command '['/usr/bin/python', '/usr/share/emscripten/emcc', '/usr/share/emscripten/system/lib/libc/musl/src/stdio/vfscanf.c', '-o', '/tmp/tmpbFGTlq/vfscanf.c.o', '-I', '/usr/share/emscripten/system/lib/libc/musl/src/internal', '-I', '/usr/share/emscripten/system/lib/libc/musl/arch/js', '-O2']' returned non-zero exit status 1

UPDATE: Early morning still ^^ Could be due to my paths here - investigating and will update thread.

I am on Ubuntu 18.04 with the latest emscripten built from emsdk (install and activate latest). System variables in use are the ones auto-generated by emsdk (I source and/or run it). Do I need to use an older emscripten version perhaps? I have used embuilder.py to build SDL2 and all available packages. I'm not sure why it can't find SDL1/2 on it's own (This is why i used the build script example to help me - plus scummvm's emscripten port suggested using sdl-config from your OS, and modifying the path to be emscriptens, and putting that in the emscripten system/bin folder).

I have windows 10 with the latest msys but I'm NOT very skilled (I've compiled a bitcoin wallet with it before but that's it..) at Windows compiling.

Lastly - If this is just a compiling hurdle - is it possible for you to release the compiled files, and I can just package those ? I'm less worried about compiling it than actually running the project :) I'd take either of them (especially if you have em-dosbox w/ mt32 ready to use and I can use your js/html with packager.py on the original em-dosbox code ;))

Thank you very much for your time and suggestions! Please continue to code these awesome ideas of yours into reality!

gr33k commented 5 years ago

I ran make clean in make_em folder as well as the root project folder...started over again but this time skipped configure and did emmake make -f Makefile first in the make_em folder. It seems to successfully compile a dosbox-x.bc in the make_em folder. Posting output here in case this helps other folks with Ubuntu 18.04 and Emscripten 1.38.27 (currently latest):

NOTE - this is the emscripten branch

➜  make_em git:(emscripten) ✗ source ~/emsdk/emsdk_env.sh
Adding directories to PATH:
PATH += /root/emsdk
PATH += /root/emsdk/clang/e1.38.27_64bit
PATH += /root/emsdk/node/8.9.1_64bit/bin
PATH += /root/emsdk/emscripten/1.38.27

Setting environment variables:
EMSDK = /root/emsdk
EM_CONFIG = /root/.emscripten
LLVM_ROOT = /root/emsdk/clang/e1.38.27_64bit
EMSCRIPTEN_NATIVE_OPTIMIZER = /root/emsdk/clang/e1.38.27_64bit/optimizer
BINARYEN_ROOT = /root/emsdk/clang/e1.38.27_64bit/binaryen
EMSDK_NODE = /root/emsdk/node/8.9.1_64bit/bin/node
EMSCRIPTEN = /root/emsdk/emscripten/1.38.27

➜  make_em git:(emscripten) ✗ emmake make -f Makefile
emscripten:INFO: generating system asset: is_vanilla.txt... (this will be cached in "/root/.emscripten_cache/is_vanilla.txt" for subsequent builds)
emscripten:INFO:  - ok
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dosbox.o ../src/dosbox.cpp
shared:WARNING: (Emscripten: system change: 1.38.27|/root/emsdk/clang/e1.38.27_64bit|6.0 vs 1.22.1|le32-unknown-nacl|/root/emsdk/clang/e1.38.27_64bit|, clearing cache)
shared:INFO: (Emscripten: Running sanity checks)
emscripten:INFO: generating port: sdl2.bc... (this will be cached in "/root/.emscripten_cache/asmjs/sdl2.bc" for subsequent builds)
emscripten:INFO: generating system asset: is_vanilla.txt... (this will be cached in "/root/.emscripten_cache/is_vanilla.txt" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO:  - ok
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/aviwriter/riff.o ../src/aviwriter/riff.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/aviwriter/ksdataformat.o ../src/aviwriter/ksdataformat.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/aviwriter/avi_writer.o ../src/aviwriter/avi_writer.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/aviwriter/avi_rw_iobuf.o ../src/aviwriter/avi_rw_iobuf.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/aviwriter/guid.o ../src/aviwriter/guid.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/aviwriter/riff_wav_writer.o ../src/aviwriter/riff_wav_writer.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/fcbs_com.o ../src/builtin/fcbs_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/debug_exe.o ../src/builtin/debug_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/find_exe.o ../src/builtin/find_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/dsxmenu_exe_pc98.o ../src/builtin/dsxmenu_exe_pc98.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/25_com.o ../src/builtin/25_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/hexmem32_exe.o ../src/builtin/hexmem32_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/50_com.o ../src/builtin/50_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/cwsdpmi_exe.o ../src/builtin/cwsdpmi_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/dos32a_exe.o ../src/builtin/dos32a_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/hexmem16_exe.o ../src/builtin/hexmem16_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/mem_com.o ../src/builtin/mem_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/append_exe.o ../src/builtin/append_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/tree_exe.o ../src/builtin/tree_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/xcopy_exe.o ../src/builtin/xcopy_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/dsxmenu_exe_pc.o ../src/builtin/dsxmenu_exe_pc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/dos4gw_exe.o ../src/builtin/dos4gw_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/device_com.o ../src/builtin/device_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/28_com.o ../src/builtin/28_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/dosidle_exe.o ../src/builtin/dosidle_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/lastdriv_com.o ../src/builtin/lastdriv_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/move_exe.o ../src/builtin/move_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/buffers_com.o ../src/builtin/buffers_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/edit_com.o ../src/builtin/edit_com.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/builtin/copy_exe.o ../src/builtin/copy_exe.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_prefetch.o ../src/cpu/core_prefetch.cpp
In file included from ../src/cpu/core_prefetch.cpp:333:
../src/cpu/core_normal/prefix_0f.h:19:15: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
bool CPU_RDMSR();
              ^~
../src/cpu/core_normal/prefix_0f.h:19:15: note: replace parentheses with an initializer to declare a variable
bool CPU_RDMSR();
              ^~
               = false
../src/cpu/core_normal/prefix_0f.h:20:15: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
bool CPU_WRMSR();
              ^~
../src/cpu/core_normal/prefix_0f.h:20:15: note: replace parentheses with an initializer to declare a variable
bool CPU_WRMSR();
              ^~
               = false
2 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_normal_8086.o ../src/cpu/core_normal_8086.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/callback.o ../src/cpu/callback.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/mmx.o ../src/cpu/mmx.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_normal.o ../src/cpu/core_normal.cpp
In file included from ../src/cpu/core_normal.cpp:173:
../src/cpu/core_normal/prefix_0f.h:19:15: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
bool CPU_RDMSR();
              ^~
../src/cpu/core_normal/prefix_0f.h:19:15: note: replace parentheses with an initializer to declare a variable
bool CPU_RDMSR();
              ^~
               = false
../src/cpu/core_normal/prefix_0f.h:20:15: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
bool CPU_WRMSR();
              ^~
../src/cpu/core_normal/prefix_0f.h:20:15: note: replace parentheses with an initializer to declare a variable
bool CPU_WRMSR();
              ^~
               = false
2 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/flags.o ../src/cpu/flags.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_normal_286.o ../src/cpu/core_normal_286.cpp
In file included from ../src/cpu/core_normal_286.cpp:172:
../src/cpu/core_normal/prefix_0f.h:19:15: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
bool CPU_RDMSR();
              ^~
../src/cpu/core_normal/prefix_0f.h:19:15: note: replace parentheses with an initializer to declare a variable
bool CPU_RDMSR();
              ^~
               = false
../src/cpu/core_normal/prefix_0f.h:20:15: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
bool CPU_WRMSR();
              ^~
../src/cpu/core_normal/prefix_0f.h:20:15: note: replace parentheses with an initializer to declare a variable
bool CPU_WRMSR();
              ^~
               = false
2 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_dynrec.o ../src/cpu/core_dynrec.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/modrm.o ../src/cpu/modrm.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_full.o ../src/cpu/core_full.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_dyn_x86.o ../src/cpu/core_dyn_x86.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/cpu.o ../src/cpu/cpu.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/core_simple.o ../src/cpu/core_simple.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/cpu/paging.o ../src/cpu/paging.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/debug/debug_gui.o ../src/debug/debug_gui.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/debug/debug_win32.o ../src/debug/debug_win32.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/debug/debug_disasm.o ../src/debug/debug_disasm.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/debug/debug.o ../src/debug/debug.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_mscdex.o ../src/dos/dos_mscdex.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_keyboard_layout.o ../src/dos/dos_keyboard_layout.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/drive_iso.o ../src/dos/drive_iso.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/cdrom.o ../src/dos/cdrom.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/drives.o ../src/dos/drives.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/cdrom_aspi_win32.o ../src/dos/cdrom_aspi_win32.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_execute.o ../src/dos/dos_execute.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/drive_fat.o ../src/dos/drive_fat.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/cdrom_ioctl_linux.o ../src/dos/cdrom_ioctl_linux.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/cdrom_ioctl_win32.o ../src/dos/cdrom_ioctl_win32.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_files.o ../src/dos/dos_files.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_programs.o ../src/dos/dos_programs.cpp
../src/dos/dos_programs.cpp:106:2: warning: switch condition has boolean value [-Wswitch-bool]
        switch (Mouse_Drv) {
        ^       ~~~~~~~~~
../src/dos/dos_programs.cpp:2552:17: warning: result of comparison of constant 255 with expression of type 'char' is always false [-Wtautological-constant-out-of-range-compare]
                if (buffer[0] == 0xFF) break;
                    ~~~~~~~~~ ^  ~~~~
../src/dos/dos_programs.cpp:3360:16: warning: enumeration values 'INVALID_MATCH', 'INVALID_DATE', and 'PARENT_ERROR' not handled in switch [-Wswitch]
                                                        switch (ret) {
                                                                ^
../src/dos/dos_programs.cpp:3852:14: warning: 4 enumeration values not handled in switch: 'OPEN_SUCCESS', 'INVALID_MATCH', 'INVALID_DATE'... [-Wswitch]
                                        switch (ret) {
                                                ^
../src/dos/dos_programs.cpp:4173:22: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
                bool Mouse_IsLocked();
                                   ^~
../src/dos/dos_programs.cpp:4173:22: note: replace parentheses with an initializer to declare a variable
                bool Mouse_IsLocked();
                                   ^~
                                    = false
5 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/drive_virtual.o ../src/dos/drive_virtual.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_tables.o ../src/dos/dos_tables.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/cdrom_image.o ../src/dos/cdrom_image.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_devices.o ../src/dos/dos_devices.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_ioctl.o ../src/dos/dos_ioctl.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_classes.o ../src/dos/dos_classes.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/cdrom_ioctl_os2.o ../src/dos/cdrom_ioctl_os2.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos.o ../src/dos/dos.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_misc.o ../src/dos/dos_misc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/drive_cache.o ../src/dos/drive_cache.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/dos_memory.o ../src/dos/dos_memory.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/dos/drive_local.o ../src/dos/drive_local.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/fpu/fpu.o ../src/fpu/fpu.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/sdlmain_linux.o ../src/gui/sdlmain_linux.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/ptrop.o ../src/gui/ptrop.cpp
In file included from ../src/gui/ptrop.cpp:5:
../include/ptrop.h:7:9: warning: 'static_assert' macro redefined [-Wmacro-redefined]
#define static_assert(a,...) assert(a)
        ^
/root/emsdk/emscripten/1.38.27/system/include/libcxx/__config:805:12: note: previous definition is here
#   define static_assert(__b, __m) _Static_assert(__b, __m)
           ^
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/sdl_gui.o ../src/gui/sdl_gui.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/render_scalers.o ../src/gui/render_scalers.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/ScalingEffect.o ../src/gui/ScalingEffect.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/midi.o ../src/gui/midi.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/direct3d.o ../src/gui/direct3d.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/sdlmain.o ../src/gui/sdlmain.cpp
../src/gui/sdlmain.cpp:4568:22: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
                bool MOUSE_IsHidden();
                                   ^~
../src/gui/sdlmain.cpp:4568:22: note: replace parentheses with an initializer to declare a variable
                bool MOUSE_IsHidden();
                                   ^~
                                    = false
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/bitop.o ../src/gui/bitop.cpp
In file included from ../src/gui/bitop.cpp:4:
../include/bitop.h:10:9: warning: 'static_assert' macro redefined [-Wmacro-redefined]
#define static_assert(a,...) assert(a)
        ^
/root/emsdk/emscripten/1.38.27/system/include/libcxx/__config:805:12: note: previous definition is here
#   define static_assert(__b, __m) _Static_assert(__b, __m)
           ^
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/sdl_mapper.o ../src/gui/sdl_mapper.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/zipfile.o ../src/gui/zipfile.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/menu.o ../src/gui/menu.cpp
../src/gui/menu.cpp:189:13: warning: enumeration value 'MAX_id' not handled in switch [-Wswitch]
    switch (type) {
            ^
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/render.o ../src/gui/render.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/hq2x_d3d.o ../src/gui/hq2x_d3d.cpp
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/gui/zipcrc.o ../src/gui/zipcrc.c
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/pcspeaker.o ../src/hardware/pcspeaker.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/pic.o ../src/hardware/pic.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/keyboard.o ../src/hardware/keyboard.cpp
../src/hardware/keyboard.cpp:958:56: warning: format specifies type 'unsigned long' but the argument has type 'char' [-Wformat]
                LOG(LOG_MISC, LOG_WARN)("Unsupported key press %lu", (char)keytype);
                                                               ~~~   ^~~~~~~~~~~~~
                                                               %hhd
../src/hardware/keyboard.cpp:1163:56: warning: format specifies type 'unsigned long' but the argument has type 'char' [-Wformat]
                LOG(LOG_MISC, LOG_WARN)("Unsupported key press %lu", (char)keytype);
                                                               ~~~   ^~~~~~~~~~~~~
                                                               %hhd
../src/hardware/keyboard.cpp:1567:56: warning: format specifies type 'unsigned long' but the argument has type 'char' [-Wformat]
                LOG(LOG_MISC, LOG_WARN)("Unsupported key press %lu", (char)keytype);
                                                               ~~~   ^~~~~~~~~~~~~
                                                               %hhd
3 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_pc98_egc.o ../src/hardware/vga_pc98_egc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/iohandler.o ../src/hardware/iohandler.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/joystick.o ../src/hardware/joystick.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/gameblaster.o ../src/hardware/gameblaster.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_tseng.o ../src/hardware/vga_tseng.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_pc98_gdc.o ../src/hardware/vga_pc98_gdc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/dongle.o ../src/hardware/dongle.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_gfx.o ../src/hardware/vga_gfx.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/pc98_fm.o ../src/hardware/pc98_fm.cpp
../src/hardware/pc98_fm.cpp:444:4: warning: add explicit braces to avoid dangling else [-Wdangling-else]
                        else
                        ^
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_draw.o ../src/hardware/vga_draw.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/voodoo_vogl.o ../src/hardware/voodoo_vogl.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/adlib.o ../src/hardware/adlib.cpp
../src/hardware/adlib.cpp:297:16: warning: taking address of packed member 'commands' of class or structure 'Adlib::RawHeader' may result in an unaligned pointer value [-Waddress-of-packed-member]
                        var_write( &header.commands, header.commands );
                                    ^~~~~~~~~~~~~~~
../src/hardware/adlib.cpp:298:16: warning: taking address of packed member 'milliseconds' of class or structure 'Adlib::RawHeader' may result in an unaligned pointer value [-Waddress-of-packed-member]
                        var_write( &header.milliseconds, header.milliseconds );
                                    ^~~~~~~~~~~~~~~~~~~
2 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_misc.o ../src/hardware/vga_misc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_paradise.o ../src/hardware/vga_paradise.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/innova.o ../src/hardware/innova.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_memory.o ../src/hardware/vga_memory.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/hardware.o ../src/hardware/hardware.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_pc98_cg.o ../src/hardware/vga_pc98_cg.cpp
../src/hardware/vga_pc98_cg.cpp:109:54: warning: format specifies type 'unsigned long' but the argument has type 'Bitu' (aka 'unsigned int') [-Wformat]
            LOG_MSG("A1 port %lx val %lx unexpected",port,val);
                             ~~~                     ^~~~
                             %x
../src/hardware/vga_pc98_cg.cpp:109:59: warning: format specifies type 'unsigned long' but the argument has type 'Bitu' (aka 'unsigned int') [-Wformat]
            LOG_MSG("A1 port %lx val %lx unexpected",port,val);
                                     ~~~                  ^~~
                                     %x
2 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/timer.o ../src/hardware/timer.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/ps1_sound.o ../src/hardware/ps1_sound.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_xga.o ../src/hardware/vga_xga.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/nukedopl.o ../src/hardware/nukedopl.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/pc98.o ../src/hardware/pc98.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/voodoo_interface.o ../src/hardware/voodoo_interface.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/mixer.o ../src/hardware/mixer.cpp
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned char, false, false, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:593:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned char, false, false, true>' requested here
        AddSamples<Bit8u,false,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned char, false, false, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:593:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned char, false, false, true>' requested here
        AddSamples<Bit8u,false,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned char, true, false, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:596:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned char, true, false, true>' requested here
        AddSamples<Bit8u,true,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned char, true, false, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:596:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned char, true, false, true>' requested here
        AddSamples<Bit8u,true,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<signed char, false, true, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:599:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<signed char, false, true, true>' requested here
        AddSamples<Bit8s,false,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<signed char, false, true, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:599:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<signed char, false, true, true>' requested here
        AddSamples<Bit8s,false,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<signed char, true, true, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:602:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<signed char, true, true, true>' requested here
        AddSamples<Bit8s,true,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<signed char, true, true, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:602:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<signed char, true, true, true>' requested here
        AddSamples<Bit8s,true,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, false, true, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:605:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, false, true, true>' requested here
        AddSamples<Bit16s,false,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, false, true, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:605:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, false, true, true>' requested here
        AddSamples<Bit16s,false,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, true, true, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:608:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, true, true, true>' requested here
        AddSamples<Bit16s,true,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, true, true, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:608:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, true, true, true>' requested here
        AddSamples<Bit16s,true,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, false, false, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:611:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, false, false, true>' requested here
        AddSamples<Bit16u,false,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, false, false, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:611:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, false, false, true>' requested here
        AddSamples<Bit16u,false,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, true, false, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:614:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, true, false, true>' requested here
        AddSamples<Bit16u,true,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, true, false, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:614:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, true, false, true>' requested here
        AddSamples<Bit16u,true,false,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, false, true, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:617:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, false, true, true>' requested here
        AddSamples<Bit32s,false,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, false, true, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:617:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, false, true, true>' requested here
        AddSamples<Bit32s,false,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, true, true, true, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:620:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, true, true, true>' requested here
        AddSamples<Bit32s,true,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, true, true, true, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:620:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, true, true, true>' requested here
        AddSamples<Bit32s,true,true,true>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, false, true, false, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:623:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, false, true, false>' requested here
        AddSamples<Bit16s,false,true,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, false, true, false, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:623:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, false, true, false>' requested here
        AddSamples<Bit16s,false,true,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, true, true, false, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:626:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, true, true, false>' requested here
        AddSamples<Bit16s,true,true,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<short, true, true, false, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:626:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<short, true, true, false>' requested here
        AddSamples<Bit16s,true,true,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, false, false, false, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:629:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, false, false, false>' requested here
        AddSamples<Bit16u,false,false,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, false, false, false, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:629:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, false, false, false>' requested here
        AddSamples<Bit16u,false,false,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, true, false, false, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:632:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, true, false, false>' requested here
        AddSamples<Bit16u,true,false,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<unsigned short, true, false, false, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:632:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<unsigned short, true, false, false>' requested here
        AddSamples<Bit16u,true,false,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, false, true, false, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:635:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, false, true, false>' requested here
        AddSamples<Bit32s,false,true,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, false, true, false, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:635:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, false, true, false>' requested here
        AddSamples<Bit32s,false,true,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:556:3: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, true, true, false, false>' requested here
                loadCurrentSample<Type,stereo,signeddata,nativeorder,false>(len,data);
                ^
../src/hardware/mixer.cpp:638:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, true, true, false>' requested here
        AddSamples<Bit32s,true,true,false>(len,data);
        ^
../src/hardware/mixer.cpp:462:6: warning: address of array 'this->lowpass' will always evaluate to 'true' [-Wpointer-bool-conversion]
        if (lowpass && lowpass_on_load)
            ^~~~~~~ ~~
../src/hardware/mixer.cpp:570:5: note: in instantiation of function template specialization 'MixerChannel::loadCurrentSample<int, true, true, false, true>' requested here
                                loadCurrentSample<Type,stereo,signeddata,nativeorder,true>(len,data);
                                ^
../src/hardware/mixer.cpp:638:2: note: in instantiation of function template specialization 'MixerChannel::AddSamples<int, true, true, false>' requested here
        AddSamples<Bit32s,true,true,false>(len,data);
        ^
33 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_crtc.o ../src/hardware/vga_crtc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/ide.o ../src/hardware/ide.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_dac.o ../src/hardware/vga_dac.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_attr.o ../src/hardware/vga_attr.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/disney.o ../src/hardware/disney.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/gus.o ../src/hardware/gus.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/tandy_sound.o ../src/hardware/tandy_sound.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/dbopl.o ../src/hardware/dbopl.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_seq.o ../src/hardware/vga_seq.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/cmos.o ../src/hardware/cmos.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/sblaster.o ../src/hardware/sblaster.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/floppy.o ../src/hardware/floppy.cpp
../src/hardware/floppy.cpp:205:12: warning: comparison of array 'fdc->current_cylinder' equal to a null pointer is always false [-Wtautological-pointer-compare]
                if (fdc->current_cylinder == 0) fdc->ST[0] |= 0x20;
                    ~~~~~^~~~~~~~~~~~~~~~    ~
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/ipxserver.o ../src/hardware/ipxserver.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/voodoo_emu.o ../src/hardware/voodoo_emu.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/opl.o ../src/hardware/opl.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_pc98_dac.o ../src/hardware/vga_pc98_dac.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/ipx.o ../src/hardware/ipx.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/ne2000.o ../src/hardware/ne2000.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/pci_bus.o ../src/hardware/pci_bus.cpp
../src/hardware/pci_bus.cpp:68:14: warning: result of comparison of constant 256 with expression of type 'Bit8u' (aka 'unsigned char') is always false [-Wtautological-constant-out-of-range-compare]
                if (busnum >= PCI_MAX_PCIBUSSES) return;
                    ~~~~~~ ^  ~~~~~~~~~~~~~~~~~
../src/hardware/pci_bus.cpp:93:14: warning: result of comparison of constant 256 with expression of type 'Bit8u' (aka 'unsigned char') is always false [-Wtautological-constant-out-of-range-compare]
                if (busnum >= PCI_MAX_PCIBUSSES) return ~0;
                    ~~~~~~ ^  ~~~~~~~~~~~~~~~~~
2 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/hardopl.o ../src/hardware/hardopl.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/voodoo_opengl.o ../src/hardware/voodoo_opengl.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_s3.o ../src/hardware/vga_s3.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/memory.o ../src/hardware/memory.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/dma.o ../src/hardware/dma.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/8255.o ../src/hardware/8255.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_pc98_crtc.o ../src/hardware/vga_pc98_crtc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/voodoo.o ../src/hardware/voodoo.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga_other.o ../src/hardware/vga_other.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/mpu401.o ../src/hardware/mpu401.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/vga.o ../src/hardware/vga.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/parport/printer_charmaps.o ../src/hardware/parport/printer_charmaps.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/parport/filelpt.o ../src/hardware/parport/filelpt.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/parport/printer.o ../src/hardware/parport/printer.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/parport/parport.o ../src/hardware/parport/parport.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/parport/directlpt_linux.o ../src/hardware/parport/directlpt_linux.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/parport/directlpt_win32.o ../src/hardware/parport/directlpt_win32.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/seriallog.o ../src/hardware/serialport/seriallog.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/nullmodem.o ../src/hardware/serialport/nullmodem.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/serialmouse.o ../src/hardware/serialport/serialmouse.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/misc_util.o ../src/hardware/serialport/misc_util.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/directserial.o ../src/hardware/serialport/directserial.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/softmodem.o ../src/hardware/serialport/softmodem.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/serialport.o ../src/hardware/serialport/serialport.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/serialdummy.o ../src/hardware/serialport/serialdummy.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/serialport/libserial.o ../src/hardware/serialport/libserial.cpp
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/cbus/board86.o ../src/hardware/snd_pc98/cbus/board86.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/cbus/board26k.o ../src/hardware/snd_pc98/cbus/board26k.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/common/parts.o ../src/hardware/snd_pc98/common/parts.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/generic/keydisp.o ../src/hardware/snd_pc98/generic/keydisp.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/opngeng.o ../src/hardware/snd_pc98/sound/opngeng.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/opngenc.o ../src/hardware/snd_pc98/sound/opngenc.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/pcm86g.o ../src/hardware/snd_pc98/sound/pcm86g.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/pcm86c.o ../src/hardware/snd_pc98/sound/pcm86c.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/tms3631g.o ../src/hardware/snd_pc98/sound/tms3631g.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/tms3631c.o ../src/hardware/snd_pc98/sound/tms3631c.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/psggeng.o ../src/hardware/snd_pc98/sound/psggeng.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/psggenc.o ../src/hardware/snd_pc98/sound/psggenc.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/adpcmg.o ../src/hardware/snd_pc98/sound/adpcmg.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/adpcmc.o ../src/hardware/snd_pc98/sound/adpcmc.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/rhythmc.o ../src/hardware/snd_pc98/sound/rhythmc.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/fmboard.o ../src/hardware/snd_pc98/sound/fmboard.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/fmtimer.o ../src/hardware/snd_pc98/sound/fmtimer.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/sound.o ../src/hardware/snd_pc98/sound/sound.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/soundrom.o ../src/hardware/snd_pc98/sound/soundrom.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/getsnd/getwave.o ../src/hardware/snd_pc98/sound/getsnd/getwave.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/getsnd/getsmix.o ../src/hardware/snd_pc98/sound/getsnd/getsmix.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/sound/getsnd/getsnd.o ../src/hardware/snd_pc98/sound/getsnd/getsnd.c
emcc -O3 -DNDEBUG -DEMTERPRETER_SYNC -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/hardware/snd_pc98/x11/dosio.o ../src/hardware/snd_pc98/x11/dosio.c
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_char.o ../src/ints/int10_char.cpp
../src/ints/int10_char.cpp:658:21: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
        if ((CurMode->mode == 0x6)/* || (CurMode->mode==0x11)*/) attr = (attr&0x80)|1;
             ~~~~~~~~~~~~~~^~~~~~
../src/ints/int10_char.cpp:658:21: note: remove extraneous parentheses around the comparison to silence this warning
        if ((CurMode->mode == 0x6)/* || (CurMode->mode==0x11)*/) attr = (attr&0x80)|1;
            ~              ^     ~
../src/ints/int10_char.cpp:658:21: note: use '=' to turn this equality comparison into an assignment
        if ((CurMode->mode == 0x6)/* || (CurMode->mode==0x11)*/) attr = (attr&0x80)|1;
                           ^~
                           =
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/mouse.o ../src/ints/mouse.cpp
../src/ints/mouse.cpp:1064:22: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
                bool MOUSE_IsLocked();
                                   ^~
../src/ints/mouse.cpp:1064:22: note: replace parentheses with an initializer to declare a variable
                bool MOUSE_IsLocked();
                                   ^~
                                    = false
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/bios_keyboard.o ../src/ints/bios_keyboard.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_pal.o ../src/ints/int10_pal.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/bios_disk.o ../src/ints/bios_disk.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/xms.o ../src/ints/xms.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/qcow2_disk.o ../src/ints/qcow2_disk.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_vptable.o ../src/ints/int10_vptable.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_put_pixel.o ../src/ints/int10_put_pixel.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_modes.o ../src/ints/int10_modes.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_vesa.o ../src/ints/int10_vesa.cpp
../src/ints/int10_vesa.cpp:246:14: warning: taking address of packed member 'BytesPerScanLine' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.BytesPerScanLine,((mblock->swidth+15U)/8U)&(~1U)); /* NTS: 4bpp requires even value due to VGA registers, round up */
                           ^~~~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:255:14: warning: taking address of packed member 'BytesPerScanLine' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.BytesPerScanLine,mblock->swidth);
                           ^~~~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:265:14: warning: taking address of packed member 'BytesPerScanLine' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.BytesPerScanLine,mblock->swidth*2);
                           ^~~~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:283:14: warning: taking address of packed member 'BytesPerScanLine' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.BytesPerScanLine,mblock->swidth*2);
                           ^~~~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:299:14: warning: taking address of packed member 'BytesPerScanLine' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.BytesPerScanLine,mblock->swidth*3);
                           ^~~~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:315:14: warning: taking address of packed member 'BytesPerScanLine' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.BytesPerScanLine,mblock->swidth*4);
                           ^~~~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:333:14: warning: taking address of packed member 'BytesPerScanLine' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.BytesPerScanLine, mblock->twidth * 2);
                           ^~~~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:356:13: warning: taking address of packed member 'ModeAttributes' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
        var_write(&minfo.ModeAttributes, modeAttributes);
                   ^~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:360:14: warning: taking address of packed member 'WinGranularity' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.WinGranularity,32);
                           ^~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:361:14: warning: taking address of packed member 'WinSize' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.WinSize,32);
                           ^~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:362:14: warning: taking address of packed member 'WinASegment' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.WinASegment,0xb800);
                           ^~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:363:14: warning: taking address of packed member 'XResolution' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.XResolution,mblock->twidth);
                           ^~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:364:14: warning: taking address of packed member 'YResolution' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.YResolution,mblock->theight);
                           ^~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:366:14: warning: taking address of packed member 'WinGranularity' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.WinGranularity,64);
                           ^~~~~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:367:14: warning: taking address of packed member 'WinSize' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.WinSize,64);
                           ^~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:368:14: warning: taking address of packed member 'WinASegment' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.WinASegment,0xa000);
                           ^~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:369:14: warning: taking address of packed member 'XResolution' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.XResolution,mblock->swidth);
                           ^~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:370:14: warning: taking address of packed member 'YResolution' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
                var_write(&minfo.YResolution,mblock->sheight);
                           ^~~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:372:13: warning: taking address of packed member 'WinFuncPtr' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
        var_write(&minfo.WinFuncPtr,CALLBACK_RealPointer(callback.setwindow));
                   ^~~~~~~~~~~~~~~~
../src/ints/int10_vesa.cpp:377:36: warning: taking address of packed member 'PhysBasePtr' of class or structure 'MODE_INFO' may result in an unaligned pointer value [-Waddress-of-packed-member]
        if (!int10.vesa_nolfb) var_write(&minfo.PhysBasePtr,S3_LFB_BASE + (hack_lfb_yadjust*host_readw((HostPt)(&minfo.BytesPerScanLine))));
                                          ^~~~~~~~~~~~~~~~~
20 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10.o ../src/ints/int10.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/bios.o ../src/ints/bios.cpp
../src/ints/bios.cpp:268:27: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
                        uint32_t Keyb_ig_status();
                                               ^~
../src/ints/bios.cpp:268:27: note: replace parentheses with an initializer to declare a variable
                        uint32_t Keyb_ig_status();
                                               ^~
                                                = 0
../src/ints/bios.cpp:583:8: warning: 'const' qualifier on function type 'IO_ReadHandler' (aka 'unsigned int (unsigned int, unsigned int)') has no effect [-Wignored-qualifiers]
static const IO_ReadHandler* dosbox_integration_cb_ports_r[4] = {
       ^~~~~~
../src/ints/bios.cpp:594:8: warning: 'const' qualifier on function type 'IO_WriteHandler' (aka 'void (unsigned int, unsigned int, unsigned int)') has no effect [-Wignored-qualifiers]
static const IO_WriteHandler* dosbox_integration_cb_ports_w[4] = {
       ^~~~~~
../src/ints/bios.cpp:6200:41: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
            Bitu bios_post_parport_count();
                                        ^~
../src/ints/bios.cpp:6200:41: note: replace parentheses with an initializer to declare a variable
            Bitu bios_post_parport_count();
                                        ^~
                                         = 0
../src/ints/bios.cpp:6203:41: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
            Bitu bios_post_comport_count();
                                        ^~
../src/ints/bios.cpp:6203:41: note: replace parentheses with an initializer to declare a variable
            Bitu bios_post_comport_count();
                                        ^~
                                         = 0
../src/ints/bios.cpp:6234:47: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
            bool KEYBOARD_Report_BIOS_PS2Mouse();
                                              ^~
../src/ints/bios.cpp:6234:47: note: replace parentheses with an initializer to declare a variable
            bool KEYBOARD_Report_BIOS_PS2Mouse();
                                              ^~
                                               = false
../src/ints/bios.cpp:7608:30: warning: empty parentheses interpreted as a function declaration [-Wvexing-parse]
                Bit32u MEM_get_address_bits();
                                           ^~
../src/ints/bios.cpp:7608:30: note: replace parentheses with an initializer to declare a variable
                Bit32u MEM_get_address_bits();
                                           ^~
                                            = 0
7 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/bios_memdisk.o ../src/ints/bios_memdisk.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_video_state.o ../src/ints/int10_video_state.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/ems.o ../src/ints/ems.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/bios_vhd.o ../src/ints/bios_vhd.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_misc.o ../src/ints/int10_misc.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/ints/int10_memory.o ../src/ints/int10_memory.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/libs/gui_tk/gui_tk.o ../src/libs/gui_tk/gui_tk.cpp
../src/libs/gui_tk/gui_tk.cpp:137:45: warning: result of comparison of constant 91 with expression of type 'GUI::Font::SpecialChar' is always true [-Wtautological-constant-out-of-range-compare]
                                                if (font->toSpecial(text[seqstart++]) != '[') break;
                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~
1 warning generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/misc/programs.o ../src/misc/programs.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/misc/setup.o ../src/misc/setup.cpp
../src/misc/setup.cpp:311:53: warning: invalid conversion specifier '\x0a' [-Wformat-invalid-specifier]
                        "%s lies outside the range %s-%s for variable: %.\nIt might now be reset to the default value: %s",
                                                                       ~~^
../src/misc/setup.cpp:316:4: warning: data argument not used by format string [-Wformat-extra-args]
                        default_value.ToString().c_str()
                        ^
2 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/misc/support.o ../src/misc/support.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/misc/cross.o ../src/misc/cross.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/misc/regionalloctracking.o ../src/misc/regionalloctracking.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/misc/shiftjis.o ../src/misc/shiftjis.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/misc/messages.o ../src/misc/messages.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/shell/shell.o ../src/shell/shell.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/shell/shell_batch.o ../src/shell/shell_batch.cpp
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/shell/shell_cmds.o ../src/shell/shell_cmds.cpp
../src/shell/shell_cmds.cpp:1843:14: warning: implicit conversion from 'int' to 'char' changes value from 141 to -115 [-Wconstant-conversion]
                        word[0] = 141;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1846:14: warning: implicit conversion from 'int' to 'char' changes value from 142 to -114 [-Wconstant-conversion]
                        word[0] = 142;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1849:14: warning: implicit conversion from 'int' to 'char' changes value from 143 to -113 [-Wconstant-conversion]
                        word[0] = 143;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1852:14: warning: implicit conversion from 'int' to 'char' changes value from 144 to -112 [-Wconstant-conversion]
                        word[0] = 144;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1855:14: warning: implicit conversion from 'int' to 'char' changes value from 145 to -111 [-Wconstant-conversion]
                        word[0] = 145;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1858:14: warning: implicit conversion from 'int' to 'char' changes value from 146 to -110 [-Wconstant-conversion]
                        word[0] = 146;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1861:14: warning: implicit conversion from 'int' to 'char' changes value from 147 to -109 [-Wconstant-conversion]
                        word[0] = 147;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1864:14: warning: implicit conversion from 'int' to 'char' changes value from 148 to -108 [-Wconstant-conversion]
                        word[0] = 148;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1867:14: warning: implicit conversion from 'int' to 'char' changes value from 149 to -107 [-Wconstant-conversion]
                        word[0] = 149;
                                ~ ^~~
../src/shell/shell_cmds.cpp:1870:14: warning: implicit conversion from 'int' to 'char' changes value from 150 to -106 [-Wconstant-conversion]
                        word[0] = 150;
                                ~ ^~~
10 warnings generated.
em++ -O3 -DNDEBUG -DEMTERPRETER_SYNC -std=gnu++98  -Wstrict-overflow=0 -Wstrict-aliasing=0 -I. -I.. -I../include -I../src -I../src/aviwriter -I../src/hardware/snd_pc98/sound -I../src/hardware/snd_pc98/common -I../src/hardware/snd_pc98/generic -I../src/hardware/snd_pc98/sound/getsnd -I../src/hardware/snd_pc98/x11 -I../src/hardware/snd_pc98/cbus  -s USE_SDL=2 -c -o ../src/shell/shell_misc.o ../src/shell/shell_misc.cpp
emcc  -g -o dosbox-x.bc ../src/dosbox.o ../src/aviwriter/riff.o ../src/aviwriter/ksdataformat.o ../src/aviwriter/avi_writer.o ../src/aviwriter/avi_rw_iobuf.o ../src/aviwriter/guid.o ../src/aviwriter/riff_wav_writer.o ../src/builtin/fcbs_com.o ../src/builtin/debug_exe.o ../src/builtin/find_exe.o ../src/builtin/dsxmenu_exe_pc98.o ../src/builtin/25_com.o ../src/builtin/hexmem32_exe.o ../src/builtin/50_com.o ../src/builtin/cwsdpmi_exe.o ../src/builtin/dos32a_exe.o ../src/builtin/hexmem16_exe.o ../src/builtin/mem_com.o ../src/builtin/append_exe.o ../src/builtin/tree_exe.o ../src/builtin/xcopy_exe.o ../src/builtin/dsxmenu_exe_pc.o ../src/builtin/dos4gw_exe.o ../src/builtin/device_com.o ../src/builtin/28_com.o ../src/builtin/dosidle_exe.o ../src/builtin/lastdriv_com.o ../src/builtin/move_exe.o ../src/builtin/buffers_com.o ../src/builtin/edit_com.o ../src/builtin/copy_exe.o ../src/cpu/core_prefetch.o ../src/cpu/core_normal_8086.o ../src/cpu/callback.o ../src/cpu/mmx.o ../src/cpu/core_normal.o ../src/cpu/flags.o ../src/cpu/core_normal_286.o ../src/cpu/core_dynrec.o ../src/cpu/modrm.o ../src/cpu/core_full.o ../src/cpu/core_dyn_x86.o ../src/cpu/cpu.o ../src/cpu/core_simple.o ../src/cpu/paging.o ../src/debug/debug_gui.o ../src/debug/debug_win32.o ../src/debug/debug_disasm.o ../src/debug/debug.o ../src/dos/dos_mscdex.o ../src/dos/dos_keyboard_layout.o ../src/dos/drive_iso.o ../src/dos/cdrom.o ../src/dos/drives.o ../src/dos/cdrom_aspi_win32.o ../src/dos/dos_execute.o ../src/dos/drive_fat.o ../src/dos/cdrom_ioctl_linux.o ../src/dos/cdrom_ioctl_win32.o ../src/dos/dos_files.o ../src/dos/dos_programs.o ../src/dos/drive_virtual.o ../src/dos/dos_tables.o ../src/dos/cdrom_image.o ../src/dos/dos_devices.o ../src/dos/dos_ioctl.o ../src/dos/dos_classes.o ../src/dos/cdrom_ioctl_os2.o ../src/dos/dos.o ../src/dos/dos_misc.o ../src/dos/drive_cache.o ../src/dos/dos_memory.o ../src/dos/drive_local.o ../src/fpu/fpu.o ../src/gui/sdlmain_linux.o ../src/gui/ptrop.o ../src/gui/sdl_gui.o ../src/gui/render_scalers.o ../src/gui/ScalingEffect.o ../src/gui/midi.o ../src/gui/direct3d.o ../src/gui/sdlmain.o ../src/gui/bitop.o ../src/gui/sdl_mapper.o ../src/gui/zipfile.o ../src/gui/menu.o ../src/gui/render.o ../src/gui/hq2x_d3d.o ../src/gui/zipcrc.o ../src/hardware/pcspeaker.o ../src/hardware/pic.o ../src/hardware/keyboard.o ../src/hardware/vga_pc98_egc.o ../src/hardware/iohandler.o ../src/hardware/joystick.o ../src/hardware/gameblaster.o ../src/hardware/vga_tseng.o ../src/hardware/vga_pc98_gdc.o ../src/hardware/dongle.o ../src/hardware/vga_gfx.o ../src/hardware/pc98_fm.o ../src/hardware/vga_draw.o ../src/hardware/voodoo_vogl.o ../src/hardware/adlib.o ../src/hardware/vga_misc.o ../src/hardware/vga_paradise.o ../src/hardware/innova.o ../src/hardware/vga_memory.o ../src/hardware/hardware.o ../src/hardware/vga_pc98_cg.o ../src/hardware/timer.o ../src/hardware/ps1_sound.o ../src/hardware/vga_xga.o ../src/hardware/nukedopl.o ../src/hardware/pc98.o ../src/hardware/voodoo_interface.o ../src/hardware/mixer.o ../src/hardware/vga_crtc.o ../src/hardware/ide.o ../src/hardware/vga_dac.o ../src/hardware/vga_attr.o ../src/hardware/disney.o ../src/hardware/gus.o ../src/hardware/tandy_sound.o ../src/hardware/dbopl.o ../src/hardware/vga_seq.o ../src/hardware/cmos.o ../src/hardware/sblaster.o ../src/hardware/floppy.o ../src/hardware/ipxserver.o ../src/hardware/voodoo_emu.o ../src/hardware/opl.o ../src/hardware/vga_pc98_dac.o ../src/hardware/ipx.o ../src/hardware/ne2000.o ../src/hardware/pci_bus.o ../src/hardware/hardopl.o ../src/hardware/voodoo_opengl.o ../src/hardware/vga_s3.o ../src/hardware/memory.o ../src/hardware/dma.o ../src/hardware/8255.o ../src/hardware/vga_pc98_crtc.o ../src/hardware/voodoo.o ../src/hardware/vga_other.o ../src/hardware/mpu401.o ../src/hardware/vga.o ../src/hardware/parport/printer_charmaps.o ../src/hardware/parport/filelpt.o ../src/hardware/parport/printer.o ../src/hardware/parport/parport.o ../src/hardware/parport/directlpt_linux.o ../src/hardware/parport/directlpt_win32.o ../src/hardware/serialport/seriallog.o ../src/hardware/serialport/nullmodem.o ../src/hardware/serialport/serialmouse.o ../src/hardware/serialport/misc_util.o ../src/hardware/serialport/directserial.o ../src/hardware/serialport/softmodem.o ../src/hardware/serialport/serialport.o ../src/hardware/serialport/serialdummy.o ../src/hardware/serialport/libserial.o ../src/hardware/snd_pc98/cbus/board86.o ../src/hardware/snd_pc98/cbus/board26k.o ../src/hardware/snd_pc98/common/parts.o ../src/hardware/snd_pc98/generic/keydisp.o ../src/hardware/snd_pc98/sound/opngeng.o ../src/hardware/snd_pc98/sound/opngenc.o ../src/hardware/snd_pc98/sound/pcm86g.o ../src/hardware/snd_pc98/sound/pcm86c.o ../src/hardware/snd_pc98/sound/tms3631g.o ../src/hardware/snd_pc98/sound/tms3631c.o ../src/hardware/snd_pc98/sound/psggeng.o ../src/hardware/snd_pc98/sound/psggenc.o ../src/hardware/snd_pc98/sound/adpcmg.o ../src/hardware/snd_pc98/sound/adpcmc.o ../src/hardware/snd_pc98/sound/rhythmc.o ../src/hardware/snd_pc98/sound/fmboard.o ../src/hardware/snd_pc98/sound/fmtimer.o ../src/hardware/snd_pc98/sound/sound.o ../src/hardware/snd_pc98/sound/soundrom.o ../src/hardware/snd_pc98/sound/getsnd/getwave.o ../src/hardware/snd_pc98/sound/getsnd/getsmix.o ../src/hardware/snd_pc98/sound/getsnd/getsnd.o ../src/hardware/snd_pc98/x11/dosio.o ../src/ints/int10_char.o ../src/ints/mouse.o ../src/ints/bios_keyboard.o ../src/ints/int10_pal.o ../src/ints/bios_disk.o ../src/ints/xms.o ../src/ints/qcow2_disk.o ../src/ints/int10_vptable.o ../src/ints/int10_put_pixel.o ../src/ints/int10_modes.o ../src/ints/int10_vesa.o ../src/ints/int10.o ../src/ints/bios.o ../src/ints/bios_memdisk.o ../src/ints/int10_video_state.o ../src/ints/ems.o ../src/ints/bios_vhd.o ../src/ints/int10_misc.o ../src/ints/int10_memory.o ../src/libs/gui_tk/gui_tk.o ../src/misc/programs.o ../src/misc/setup.o ../src/misc/support.o ../src/misc/cross.o ../src/misc/regionalloctracking.o ../src/misc/shiftjis.o ../src/misc/messages.o ../src/shell/shell.o ../src/shell/shell_batch.o ../src/shell/shell_cmds.o ../src/shell/shell_misc.o -lm  -s USE_SDL=2
➜  make_em git:(emscripten) ✗ ll
total 9.3M
-rw-r--r-- 1 root root 4.4K Feb 18 03:38 Makefile
-rw-r--r-- 1 root root 4.2K Feb 17 22:08 Makefile_nonemt
-rw-r--r-- 1 root root 9.0K Feb 17 11:42 config.h
-rw-r--r-- 1 root root 9.3M Feb 21 16:26 dosbox-x.bc

Ok so now I ran your compile string but it will complain about no d3.txt - so I copied it from the /src dir and re-ran same compile command. Here is the output experienced:

➜  make_em git:(emscripten) ✗ emcc -O3 -s USE_SDL=2 -s TOTAL_MEMORY=104857600 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=@d3.txt dosbox-x.bc --memory-init-file 0 -o dosbox-x.html
emscripten:INFO: generating system library: libc++_noexcept.a... (this will be cached in "/root/.emscripten_cache/asmjs/libc++_noexcept.a" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system library: libc++abi.bc... (this will be cached in "/root/.emscripten_cache/asmjs/libc++abi.bc" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system library: libc.bc... (this will be cached in "/root/.emscripten_cache/asmjs/libc.bc" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system library: libcompiler_rt.a... (this will be cached in "/root/.emscripten_cache/asmjs/libcompiler_rt.a" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system library: libc-wasm.bc... (this will be cached in "/root/.emscripten_cache/asmjs/libc-wasm.bc" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system library: libdlmalloc.bc... (this will be cached in "/root/.emscripten_cache/asmjs/libdlmalloc.bc" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system library: libgl.bc... (this will be cached in "/root/.emscripten_cache/asmjs/libgl.bc" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system library: libc-extras.bc... (this will be cached in "/root/.emscripten_cache/asmjs/libc-extras.bc" for subsequent builds)
emscripten:INFO:  - ok
emscripten:INFO: generating system asset: generated_struct_info.json... (this will be cached in "/root/.emscripten_cache/asmjs/generated_struct_info.json" for subsequent builds)
emscripten:INFO:  - ok
Traceback (most recent call last):
  File "/root/emsdk/emscripten/1.38.27/tools/emterpretify.py", line 735, in <module>
    temp = open(temp[2:-1]).read()
IOError: [Errno 2] No such file or directory: 'd3.txt'
Traceback (most recent call last):
  File "/root/emsdk/emscripten/1.38.27/emcc.py", line 3153, in <module>
    sys.exit(run())
  File "/root/emsdk/emscripten/1.38.27/emcc.py", line 2141, in run
    emterpretify(js_target, optimizer, options)
  File "/root/emsdk/emscripten/1.38.27/emcc.py", line 2489, in emterpretify
    run_process(args)
  File "/root/emsdk/emscripten/1.38.27/tools/shared.py", line 170, in run_process
    result.check_returncode()
  File "/root/emsdk/emscripten/1.38.27/tools/shared.py", line 150, in check_returncode
    raise Py2CalledProcessError(returncode=self.returncode, cmd=self.args, output=self.stdout, stderr=self.stderr)
tools.shared.Py2CalledProcessError: Command '['/usr/bin/python', '/root/emsdk/emscripten/1.38.27/tools/emterpretify.py', 'dosbox-x.js', '/tmp/emscripten_temp_MX6AIM/dosbox-x.bc.o.js.mem.js.jsopted.js.jsopted.js.jsopted.js.em.js', '[]', '"@d3.txt"', '[]', '1', 'ASYNC=1', 'FROUND=1']' returned non-zero exit status 1
➜  make_em git:(emscripten) ✗ cp ../src/d3.txt ./
➜  make_em git:(emscripten) ✗ ll
total 10M
-rw-r--r-- 1 root root 4.4K Feb 18 03:38 Makefile
-rw-r--r-- 1 root root 4.2K Feb 17 22:08 Makefile_nonemt
-rw-r--r-- 1 root root 9.0K Feb 17 11:42 config.h
-rw-r--r-- 1 root root 1.5K Feb 21 16:32 d3.txt
-rw-r--r-- 1 root root 9.3M Feb 21 16:26 dosbox-x.bc
-rw-r--r-- 1 root root 686K Feb 21 16:31 dosbox-x.html.mem
➜  make_em git:(emscripten) ✗ emcc -O3 -s USE_SDL=2 -s TOTAL_MEMORY=104857600 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=@d3.txt dosbox-x.bc --memory-init-file 0 -o dosbox-x.html
warning: Output contains some very large functions (20304 lines in __Z19CPU_Core_Normal_Runv), consider building source files with -Os or -Oz, and/or trying OUTLINING_LIMIT to break them up (see settings.js; note that the parameter there affects AST nodes, while we measure lines here, so the two may not match up)
warning: Output contains some very large functions (20303 lines in __Z19CPU_Core_Normal_Runv), consider building source files with -Os or -Oz, and/or trying OUTLINING_LIMIT to break them up (see settings.js; note that the parameter there affects AST nodes, while we measure lines here, so the two may not match up)
➜  make_em git:(emscripten) ✗ ll
total 27M
-rw-r--r-- 1 root root 4.4K Feb 18 03:38 Makefile
-rw-r--r-- 1 root root 4.2K Feb 17 22:08 Makefile_nonemt
-rw-r--r-- 1 root root 9.0K Feb 17 11:42 config.h
-rw-r--r-- 1 root root 1.5K Feb 21 16:32 d3.txt
-rw-r--r-- 1 root root 9.3M Feb 21 16:26 dosbox-x.bc
-rw-r--r-- 1 root root 101K Feb 21 16:35 dosbox-x.html
-rw-r--r-- 1 root root 748K Feb 21 16:35 dosbox-x.js
-rw-r--r-- 1 root root  14M Feb 21 16:34 dosbox-x.js.orig.js
-rw-r--r-- 1 root root 3.6M Feb 21 16:35 dosbox-x.wasm
➜  make_em git:(emscripten) ✗ HOLY SH...MOKES! IT WORKED?!?!?

And ZOMG - I think I have a dosbox-x.html and js file now (Without any noticed errors...thus I do believe this is a successful compile!).

So now what? Without packager.py I assume the preload command is how you get a dos game working with this? Could you please elaborate an example process of getting a game setup with what I have now?

/me happy dance /me thanks @yksoft1 !!

gr33k commented 5 years ago

Oh and does this compile with the mt-32 support? If not, how to enable --enable-mt32=1?

When enabled, don't I need to place the mt32 roms somewhere for munt to use them?

EDIT: Hey hey! Lookie Here it's working - but I don't think mt32 is enabled yet:

https://thec0de.com/dostest/

gr33k commented 5 years ago

Ok, so using --preload-file /root/em-dosbox/src/circuits/ (I have my games in em-dosbox src folder) I was able to get it to generate a dosbox-x.data file 👍 Loading it though I don't see how to mount it or see the data. The build is working but it seems a bit unstable. MIXER.COM will work some times...other times it will throw up "Assertion failed: undefined" - just as an example. INTRO will also cause this among other things...Not sure if games are unstable as I can't figure out how to load it yet lol.

UPDATE - I can't get it to load any files or mount the filesystem from the .data file. I've tried modding the file like an em-dosbox.html file (pointed to dosbox-x.js and set paths to the dosbox-x.data file) but no dice :(

yksoft1 commented 5 years ago

Ok, so using --preload-file /root/em-dosbox/src/circuits/ (I have my games in em-dosbox src folder) I was able to get it to generate a dosbox-x.data file 👍 Loading it though I don't see how to mount it or see the data. The build is working but it seems a bit unstable. MIXER.COM will work some times...other times it will throw up "Assertion failed: undefined" - just as an example. INTRO will also cause this among other things...Not sure if games are unstable as I can't figure out how to load it yet lol.

UPDATE - I can't get it to load any files or mount the filesystem from the .data file. I've tried modding the file like an em-dosbox.html file (pointed to dosbox-x.js and set paths to the dosbox-x.data file) but no dice :(

The emulated DOS had many reentry functions that tries to call Emterpretified main functions that should also be Emterpretified, I only found a few of them and marked those in d3.txt.

About loading games, I used the simplest way to just write commands in [autoexec] section of dosbox.conf. Or you could just use the Emularity scripts (I had a fork of that in the ref directory). I'm not a Web or Javascript developer, so I can't figure out more ways to do that.

I didn't merge MT-32 changes from the master branch into emscripten branch, as I found that its performance is not that good in Emscripten.

Ok, so using --preload-file /root/em-dosbox/src/circuits/ (I have my games in em-dosbox src folder) I was able to get it to generate a dosbox-x.data file 👍

I suggest that you use the way writtin in the section "Modifying file locations in the virtual file system" from https://emscripten.org/docs/porting/files/packaging_files.html for using --preload-file.

gr33k commented 5 years ago

Thank you @yksoft1 for all the help. I've compiled it and can run a prompt which is asking for where the location of the MT-32 rom files are at. It says "in the dosbox-x working directory"...but simply placing them in the same folder (linux host) is not cutting it. I assume that I will need to bundle those with the package filer and then somehow specify any options in the dosbox.conf.

Once I figure out how to bundle the games in there I should be able to bundle this along with it, and then setup the [autoexec] part to auto launch any desired .BAT or .EXE 👍

Right now I create the stuff with --preload but it either says Downloading forever and launches nothing, or throws up a javascript exception. Going to read up more as I'm sure this is user error on my part...hehe.

yksoft1 commented 5 years ago

Thank you @yksoft1 for all the help. I've compiled it and can run a prompt which is asking for where the location of the MT-32 rom files are at. It says "in the dosbox-x working directory"...but simply placing them in the same folder (linux host) is not cutting it. I assume that I will need to bundle those with the package filer and then somehow specify any options in the dosbox.conf.

Once I figure out how to bundle the games in there I should be able to bundle this along with it, and then setup the [autoexec] part to auto launch any desired .BAT or .EXE

Right now I create the stuff with --preload but it either says Downloading forever and launches nothing, or throws up a javascript exception. Going to read up more as I'm sure this is user error on my part...hehe.

The "working directory" of an Emscripten program is typically "/" in the current virtual file system used by Emscripten. If you put your dosbox.conf, MT32_CONTROL.ROM and MT32_PCM.ROM (case sensitive) in /home/test/dbox for example, --preload-file /home/test/dbox@/ should copy anything in /home/test/dbox to dosbox-x.data file system's /.

BTW I have demos that show DOSBox MT-32 emulation in Emscripten for both DOSBox-X and DOSBox: https://yksoft1.github.io/test/mt32/silpheed-mt32.html https://yksoft1.github.io/test/mt32/silpheed-mt32-742.html

gr33k commented 5 years ago

OK - sweet I have some progress here!

It seems that you should put your MT32 roms and dosbox.conf in the root folder, and then include your game as a SUBFOLDER. If I just put all the files in the root folder, it would not work:

DOSBox version 0.74-2
Copyright 2002-2018 DOSBox Team, published under GNU GPL.
---
CONFIG:Loading primary settings from config file dosbox.conf
Maximum memory size is 63 MB
Memory sizes above 31 MB are NOT recommended.
Stick with the default values unless you are absolutely certain.
MT32: Using default reverb
MIDI:Opened device:mt32

Unfortunately, I still get an Javascript error with an exception thrown (and I've added autoexec section in dosbox.conf). This is the dosbox.conf config and the command I used thus far is:

NOTE: This is in the make_em/mt32 folder NOT just make_em or the root folder

emmake make -f Makefile -s USE_SDL=1 -s FORCE_FILESYSTEM=1 -s ALLOW_MEMORY_GROWTH=1 

emcc -O3 -s USE_SDL=1 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=@em.txt -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s TOTAL_MEMORY=167772160 dosbox.bc -o dosbox.html --preload-file ./games@/

This is the contents of mt32 which contains the games folder. Also note (For others) you need to copy the em.txt file from the /src folder!:

-rw-r--r-- 1 root root 2.7K Feb 23 00:42 Makefile
-rw-r--r-- 1 root root 2.5K Feb 22 01:50 Makefile_nonemt
-rw-r--r-- 1 root root 8.1K Feb 22 01:50 config.h
-rw-r--r-- 1 root root 4.6M Feb 23 00:44 dosbox.bc
-rw-r--r-- 1 root root 2.8M Feb 23 23:53 dosbox.data
-rw-r--r-- 1 root root 101K Feb 23 23:54 dosbox.html
-rw-r--r-- 1 root root 461K Feb 23 23:54 dosbox.js
-rw-r--r-- 1 root root 6.7M Feb 23 23:53 dosbox.js.orig.js
-rw-r--r-- 1 root root 1.8M Feb 23 23:54 dosbox.wasm
-rw-r--r-- 1 root root 1.3K Feb 22 01:56 em.txt
drwxr-xr-x 3 root root 4.0K Feb 23 23:52 games
➜  mt32 git:(mt32emu-2.3.0) ✗ pwd
/root/test/dosboxmt32/make_em/mt32

Contents of dosbox.conf:

➜  mt32 git:(mt32emu-2.3.0) ✗ cat ./games/dosbox.conf
[sdl]
fullscreen=true
fulldouble=false
fullresolution=original
windowresolution=original
output=surface
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper.txt
usescancodes=true

[render]
frameskip=0
aspect=false
scaler=normal2x

[dosbox]
language=
memsize=64
machine=svga_s3
captures=..\screenshots

[cpu]
core=auto
cycles=max
cycleup=1000
cycledown=1000

[mixer]
nosound=false
rate=22050
blocksize=2048
prebuffer=10

[midi]
mpu401=intelligent
mididevice=mt32
midiconfig=
mt32.romdir=\

[sblaster]
sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
mixer=true
oplmode=auto
oplrate=22050

[gus]
gus=true
gusbase=240
irq1=5
irq2=5
dma1=3
dma2=3
gusrate=22050
ultradir=C:\ULTRASND

[speaker]
pcspeaker=true
pcrate=22050
tandy=auto
tandyrate=22050
disney=true

[joystick]
joysticktype=none
timed=true
autofire=false
swap34=false
buttonwrap=true

[serial]
serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled

[dos]
xms=true
ems=false
umb=true
keyboardlayout=none

[ipx]
ipx=true

[autoexec]
cd circuits
EDGE.EXE

Here is the folder structure of the DOS games:

➜  games git:(mt32emu-2.3.0) ✗ ll
total 1.7M
-rwxr-xr-x 1 root root  64K Feb 22 22:07 CM32L_CONTROL.ROM
-rwxr-xr-x 1 root root 1.0M Feb 22 22:07 CM32L_PCM.ROM
-rwxr-xr-x 1 root root  64K Feb 22 22:07 MT32_CONTROL.ROM
-rwxr-xr-x 1 root root 512K Feb 22 22:07 MT32_PCM.ROM
drwxr-xr-x 2 root root 4.0K Feb 23 09:44 circuits
-rw-r--r-- 1 root root 1.1K Feb 23 23:52 dosbox.conf
➜  games git:(mt32emu-2.3.0) ✗ pwd
/root/test/dosboxmt32/make_em/mt32/games
➜  games git:(mt32emu-2.3.0) ✗ cd circuits
➜  circuits git:(mt32emu-2.3.0) ✗ ll
total 1.2M
-rwxr-xr-x 1 root root 1.7K Feb 22 22:07 ACTIONS.DAT
-rwxr-xr-x 1 root root 183K Feb 22 22:07 ALLANM.ANM
-rwxr-xr-x 1 root root 3.3K Feb 22 22:07 ALLMAPS.MAP
-rwxr-xr-x 1 root root  26K Feb 22 22:07 CEDGE.WLK
-rwxr-xr-x 1 root root 2.0K Feb 22 22:07 CGAREMAP.DAT
-rwxr-xr-x 1 root root 6.7K Feb 22 22:07 COMBAT4.MUS
-rwxr-xr-x 1 root root 1.0K Feb 22 22:07 CYBER.FNT
-rwxr-xr-x 1 root root 125K Feb 22 22:07 DISK1CMP.CMP
-rwxr-xr-x 1 root root 9.2K Feb 22 22:07 DISK2CMP.CMP
-rwxr-xr-x 1 root root 350K Feb 22 22:07 DISK3CMP.CMP
-rwxr-xr-x 1 root root 120K Feb 22 22:07 DISKTEXT.TXT
-rwxr-xr-x 1 root root 4.6K Feb 22 22:07 EDGE.DOC
-rwxr-xr-x 1 root root 173K Feb 22 22:07 EDGE.EXE
-rwxr-xr-x 1 root root 8.0K Feb 22 22:07 GAMEORIG.DAT
-rwxr-xr-x 1 root root 8.0K Feb 22 22:07 GAMESAVE.DAT
-rwxr-xr-x 1 root root  960 Feb 22 22:07 GRAVMAP.DAT
-rwxr-xr-x 1 root root 8.4K Feb 22 22:07 INSTALL.EXE
-rwxr-xr-x 1 root root  18K Feb 22 22:07 NIGHT1.MUS
-rwxr-xr-x 1 root root 7.1K Feb 22 22:07 NPCDATA.DAT
-rwxr-xr-x 1 root root 5.1K Feb 22 22:07 PLOTDATA.DAT
-rw-r--r-- 1 root root    6 Feb 22 22:07 PREFS.DAT
-rwxr-xr-x 1 root root 2.0K Feb 22 22:07 RESPONSE.DAT
-rwxr-xr-x 1 root root  64K Feb 22 22:07 SCREEN00.LBM
-rwxr-xr-x 1 root root 1.3K Feb 22 22:07 SNDDATA.DAT
-rwxr-xr-x 1 root root 8.4K Feb 22 22:07 TITLE.MUS
-rwxr-xr-x 1 root root  600 Feb 22 22:07 TRASH.DAT
-rwxr-xr-x 1 root root 2.3K Feb 22 22:07 WANDER.MUS
-rwxr-xr-x 1 root root 5.1K Feb 22 22:07 WIN.MUS
➜  circuits git:(mt32emu-2.3.0) ✗ pwd
/root/test/dosboxmt32/make_em/mt32/games/circuits

I'm not giving up yet though! I will keep working on this and reply with the results :)

Also, ty for showing me those example links of it working @yksoft1 !!! It gave me a boost to see how it's working. So far - I like the em-dosbox fork so far more then the dosbox-x fork...I will still test both though!

gr33k commented 5 years ago

Is it expected to see these SDL warnings here? and the output size warning?

➜  mt32 git:(mt32emu-2.3.0) ✗ emcc -O3 -s USE_SDL=1 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=@em.txt -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s TOTAL_MEMORY=167772160 dosbox.bc -o dosbox.html --preload-file ./games@/
warning: undefined symbol: SDL_CreateSemaphore
warning: undefined symbol: SDL_DestroySemaphore
warning: undefined symbol: SDL_SemPost
warning: undefined symbol: SDL_SemWait
warning: undefined symbol: SDL_WaitEvent
warning: Output contains some very large functions (17004 lines in __Z19CPU_Core_Simple_Runv), consider building source files with -Os or -Oz, and/or trying OUTLINING_LIMIT to break them up (see settings.js; note that the parameter there affects AST nodes, while we measure lines here, so the two may not match up)
warning: Output contains some very large functions (17003 lines in __Z19CPU_Core_Simple_Runv), consider building source files with -Os or -Oz, and/or trying OUTLINING_LIMIT to break them up (see settings.js; note that the parameter there affects AST nodes, while we measure lines here, so the two may not match up)
gr33k commented 5 years ago

Annnnd it's working 👍

The remaining errors were problems with my dosbox.conf and mount commands. Here is the working dosbox.conf (shows commented out piece for reference):

➜  mt32 git:(mt32emu-2.3.0) ✗ cat ./games/dosbox.conf
;[sdl]
;fullscreen=false
;fulldouble=false
;fullresolution=original
;windowresolution=original
;output=surface
;autolock=true
;sensitivity=100
;waitonerror=true
;priority=higher,normal
;mapperfile=mapper.txt
;usescancodes=true

;[render]
;frameskip=0
;aspect=false
;scaler=normal2x

[dosbox]
;language=
;memsize=64
memsize=32
machine=svga_s3
;captures=..\screenshots

[cpu]
core=auto
cycles=max
cycleup=1000
cycledown=1000

[mixer]
nosound=false
rate=22050
blocksize=2048
prebuffer=10

[midi]
mpu401=intelligent
mididevice=mt32
;midiconfig=
;mt32.romdir=\

[sblaster]
sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
mixer=true
oplmode=auto
oplrate=22050

;[gus]
;gus=true
;gusbase=240
;irq1=5
;irq2=5
;dma1=3
;dma2=3
;gusrate=22050
;ultradir=C:\ULTRASND

[speaker]
pcspeaker=true
pcrate=22050
tandy=auto
tandyrate=22050
disney=true

[joystick]
joysticktype=none
timed=true
autofire=false
swap34=false
buttonwrap=true

;[serial]
;serial1=dummy
;serial2=dummy
;serial3=disabled
;serial4=disabled

;[dos]
;xms=true
;ems=false
;umb=true
;keyboardlayout=none

;[ipx]
;ipx=true

[autoexec]
mount c circuits
c:
cd circuits
EDGE.EXE

Thank you for all your help @yksoft1 !!!

yksoft1 commented 5 years ago

Did push MT-32 enabled code to emscripten branch.