BOXEDWINE_ZLIB   Will allow the file system to be in a zip file (-zip command line argument).  This requires that you link against zlib.
BOXEDWINE_MSVC   Should use this on Windows platform
BOXEDWINE_MAC_JIT Should use this on the Mac platform, it will correctly setup x64 and Armv8
BOXEDWINE_OPENGL_SDL OpenGL will be enabled via SDL
BOXEDWINE_OPENGL_OSMESA Will enable selecting software OpenGL via Mesa.  Option will be visible in UI and command line option -mesa will be available
GLH the header that will be used for OpenGL, currently set to <sdl_opengl.h> in build files
BOXEDWINE_HIGHDPI On windows this will allow games that doesn't support high dpi settings to be scaled up
BOXEDWINE_MIDI turns on support for Midi
BOXEDWINE_64 needs to be enabled on 64-bit platform
BOXEDWINE_JIT will enabled JIT, needs to be combined with BOXEDWINE_JIT_ARMV8, BOXEDWINE_JIT_X86 or BOXEDWINE_JIT_X64

To compile, you need one and only one of the follow 2 flags

BOXEDWINE_ES     SDL OpenGL ES code will be used.  OpenGL calls will be translated to ES.
BOXEDWINE_SDL    SDL OpenGL context will be used

To compile for Windows it is recommended to use Visual Studio 2026 Community Edition
https://visualstudio.microsoft.com/vs/community/

Emscripten

see boxedwine-shell.js
By default files are stored to IndexedDB. To NOT save changes set:
Config.storageMode = STORAGE_MEMORY;

settings:
 - specify an alternate root zip file system.
 	i.e. root=win32.zip. If not set it is assumed the root fs is boxedwine.zip.
 - specify a zip file to appear uncompressed mounted as c:/files
 	i.e. app=chomp.zip would appear as /home/username/.wine/dosdevices/c:/files/. Use: zip -r9qdgds 10m chomp.zip ./chomp/*
 - change the program to execute via ?p=/home/username/chomp/CHOMP.EXE. surround in quotes if path includes spaces. Can call a .BAT file.
 - set the working directory via ?work=chomp. This simplifies p as it can then be relative to the working directory.
 - set an overlay via ?overlay=more.zip;files.zip. Where each zip file contains additional files to add to the root file system.
 - set the initial emulated screen size via ?resolution=WxH. Ie resolution=640x480.
 - use c:/ as shorthand for /home/username/.wine/dosdevices/c:/ (also works for d:/)
Some simplifications are possible:
boxedwine.html?p=notepad - run notepad in the root fs
boxedwine.html?root=win32&app=chomp&work=chomp&p=CHOMP.EXE - no need to add .zip for root and app zip file name

Dynamically sending files
The *-payload parameters can be used to pass in a base64 encoded zip file. 
They mirror the existing &app and &overlay parameters but allow the client to supply the app/program/files.
Beware that browsers and web server likely have request size limits.
example:
&app-payload=[base64 string] 
&overlay-payload=[base64 string]&p=c:/demo/run.bat


Other configuration options:
AUTO_RUN - indicates if start button is shown or page auto-runs. default true
ALLOW_PARAM_OVERRIDE_FROM_URL - indicates if url can be appended with params as above for dir, app, m & p.

see var Module and configure as appropriate
As an example to set linux ENV variables use the following format:
?env="LIBGL_NPOT:2;LIBGL_DEFAULT_WRAP:0;LIBGL_MIPMAP:3;"

You can avoid using url params and hardcode the values.  Search for MANUAL:

Drag and drop is supported. Set AUTO_RUN to false. Simply drag a directory into the page. A dialog will appear and list entries for all executable files found. This is very useful.
Getting files into/out of the emulator is provided behind the SHOW_UPLOAD_DOWNLOAD flag.
By default uploading/downloading occurs inside the directory mapped to d:

