Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dosbox-staging/dosbox-staging.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkcgen <kcgen@users.noreply.github.com>2022-11-09 11:05:16 +0300
committerkcgen <1557255+kcgen@users.noreply.github.com>2022-11-10 06:10:21 +0300
commit083dfb93c5d76a7bddfeb7580069447325030f01 (patch)
tree7a831e03c38aa67da571dc697ef91d37b2db39ce
parent4ecaef10c5c3b0a1b6f6b40d9bbeb0bb0dced950 (diff)
Add SDL2_image dependency to packages and build systems
-rw-r--r--.github/workflows/analysis.yml1
-rw-r--r--.github/workflows/config.yml1
-rw-r--r--.github/workflows/coverity.yml1
-rw-r--r--.github/workflows/linux.yml1
-rw-r--r--.github/workflows/macos.yml4
-rw-r--r--.github/workflows/platforms.yml1
-rw-r--r--.github/workflows/windows-msys2.yml2
-rw-r--r--.lgtm.yml1
-rw-r--r--README.md19
-rw-r--r--contrib/fedora/dosbox-staging.spec1
-rwxr-xr-xcontrib/macos/create-app-bundle.sh1
-rw-r--r--include/hardware.h5
-rw-r--r--meson.build13
-rw-r--r--meson_options.txt9
-rw-r--r--packages/fedora-latest.txt2
-rw-r--r--packages/macos-12-brew.txt1
-rw-r--r--packages/macos-latest-brew.txt1
-rw-r--r--packages/ubuntu-16.04-apt.txt1
-rw-r--r--packages/ubuntu-18.04-apt.txt1
-rw-r--r--packages/ubuntu-20.04-apt.txt1
-rw-r--r--packages/ubuntu-22.04-apt.txt1
-rw-r--r--packages/windows-latest-msys2.txt1
-rw-r--r--packages/windows-msys2-clang-i686.txt1
-rw-r--r--packages/windows-msys2-clang-x86_64.txt1
-rw-r--r--packages/windows-msys2-gcc-i686.txt1
-rw-r--r--packages/windows-msys2-gcc-x86_64.txt1
-rw-r--r--src/config.h.in5
-rw-r--r--src/platform/visualc/config.h5
-rw-r--r--src/platform/visualc/sdl_image.h4
-rw-r--r--vcpkg.json1
-rw-r--r--vs/dosbox.vcxproj12
31 files changed, 79 insertions, 21 deletions
diff --git a/.github/workflows/analysis.yml b/.github/workflows/analysis.yml
index 577a55275..98caf1953 100644
--- a/.github/workflows/analysis.yml
+++ b/.github/workflows/analysis.yml
@@ -95,6 +95,7 @@ jobs:
-Duse_mt32emu=false \
-Duse_opengl=false \
-Duse_png=false \
+ -Duse_sdl2_image=false \
-Duse_sdl2_net=false \
-Duse_slirp=false \
-Dunit_tests=disabled \
diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml
index cd9d7d41a..656cfb39d 100644
--- a/.github/workflows/config.yml
+++ b/.github/workflows/config.yml
@@ -40,6 +40,7 @@ jobs:
os: ubuntu-20.04
conf:
- configure_flags: -Duse_slirp=false
+ - configure_flags: -Duse_sdl2_image=false
- configure_flags: -Duse_sdl2_net=false
- configure_flags: -Duse_opengl=false # TODO opengl is always disabled on msys2
- configure_flags: -Duse_fluidsynth=false
diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
index 10c6c77b1..6d4932304 100644
--- a/.github/workflows/coverity.yml
+++ b/.github/workflows/coverity.yml
@@ -71,6 +71,7 @@ jobs:
-Duse_mt32emu=false \
-Duse_opengl=false \
-Duse_png=false \
+ -Duse_sdl2_image=false \
-Duse_sdl2_net=false \
-Duse_slirp=false \
build
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index d1ecf67ae..79bc6e33b 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -73,6 +73,7 @@ jobs:
-Duse_mt32emu=false
-Duse_opengl=false
-Duse_png=false
+ -Duse_sdl2_image=false
-Duse_sdl2_net=false
-Duse_slirp=false
min_dependencies: true
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index 36f98490f..7085eec3c 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -191,7 +191,7 @@ jobs:
if: matrix.runner.needs_deps
run: >-
arch -arch=${{ matrix.runner.arch }} brew install librsvg tree
- ccache libpng meson opusfile sdl2 sdl2_net speexdsp
+ ccache libpng meson opusfile sdl2 sdl2_image sdl2_net speexdsp
# Workaround frequent HTTPS-based connectivity issues
# https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/407
@@ -225,7 +225,7 @@ jobs:
run: |
set -x
eval "$(${{ matrix.runner.brew_path }}/bin/brew shellenv)"
- meson setup ${{ matrix.runner.build_flags }} -Ddefault_library=static -Dwrap_mode=forcefallback -Dtry_static_libs=sdl2,sdl2_net build
+ meson setup ${{ matrix.runner.build_flags }} -Ddefault_library=static -Dwrap_mode=forcefallback -Dtry_static_libs=sdl2,sdl2_image,sdl2_net build
meson compile -C build
- name: Upload binary
diff --git a/.github/workflows/platforms.yml b/.github/workflows/platforms.yml
index c8693d32a..e8d859345 100644
--- a/.github/workflows/platforms.yml
+++ b/.github/workflows/platforms.yml
@@ -115,6 +115,7 @@ jobs:
# - use a minimal build because python fetching wraps segfaults under Docker
meson setup \
-Duse_fluidsynth=false \
+ -Duse_sdl2_image=false \
-Duse_sdl2_net=false \
-Duse_opengl=false \
-Duse_mt32emu=false \
diff --git a/.github/workflows/windows-msys2.yml b/.github/workflows/windows-msys2.yml
index e6ce27e70..1fcf33d38 100644
--- a/.github/workflows/windows-msys2.yml
+++ b/.github/workflows/windows-msys2.yml
@@ -89,6 +89,7 @@ jobs:
mingw-w64-${{matrix.conf.toolchain}}${{matrix.conf.arch}}-opusfile
mingw-w64-${{matrix.conf.toolchain}}${{matrix.conf.arch}}-libslirp
mingw-w64-${{matrix.conf.toolchain}}${{matrix.conf.arch}}-SDL2
+ mingw-w64-${{matrix.conf.toolchain}}${{matrix.conf.arch}}-SDL2_image
mingw-w64-${{matrix.conf.toolchain}}${{matrix.conf.arch}}-SDL2_net
mingw-w64-${{matrix.conf.toolchain}}${{matrix.conf.arch}}-zlib
mingw-w64-${{matrix.conf.toolchain}}${{matrix.conf.arch}}-speexdsp
@@ -188,6 +189,7 @@ jobs:
mingw-w64-clang-${{matrix.conf.arch}}-opusfile
mingw-w64-clang-${{matrix.conf.arch}}-libslirp
mingw-w64-clang-${{matrix.conf.arch}}-SDL2
+ mingw-w64-clang-${{matrix.conf.arch}}-SDL2_image
mingw-w64-clang-${{matrix.conf.arch}}-SDL2_net
mingw-w64-clang-${{matrix.conf.arch}}-zlib
mingw-w64-clang-${{matrix.conf.arch}}-speexdsp
diff --git a/.lgtm.yml b/.lgtm.yml
index 1b7fda55e..c6556161d 100644
--- a/.lgtm.yml
+++ b/.lgtm.yml
@@ -10,6 +10,7 @@ extraction:
- libopusfile-dev
- libpng-dev
- libsdl2-dev
+ - libsdl2-image-dev
- libsdl2-net-dev
- libspeexdsp-dev
- python3-pip
diff --git a/README.md b/README.md
index 73a5af10d..6cd5fede2 100644
--- a/README.md
+++ b/README.md
@@ -126,6 +126,7 @@ DOSBox Staging has the following library dependencies:
| [libpng](http://www.libpng.org/pub/png/libpng.html) (libpng) | n/a | PNG-encoding of screen captures | Optional | yes | yes | very common |
| [Opus File](https://opus-codec.org/) (opusfile) | n/a | CDDA playback for Opus-encoded track files | Mandatory | yes | yes | common |
| [SDL 2.0](https://github.com/libsdl-org/SDL) (sdl2) | 2.0.5 | OS-agnostic API for video, audio, and eventing | Mandatory | yes | yes | common |
+| [SDL_image 2.0](https://github.com/libsdl-org/SDL_image) (sdl2-image) | 2.0.x | Screenshot of rendered output to file | Optional | yes | yes | common |
| [SDL_net 2.0](https://github.com/libsdl-org/SDL_net) (sdl2-net) | 2.0.0 | Network API for emulated serial and IPX | Optional | yes | yes | common |
| [slirp](https://gitlab.freedesktop.org/slirp) (libslirp) | 4.6.1 | Unprivileged virtual TCP/IP stack for Ethernet | Optional | yes | yes | less-common |
| [SpeexDSP](https://github.com/xiph/speexdsp) (speexdsp) | n/a | Audio resampling | Mandatory | yes | yes | common |
@@ -139,14 +140,14 @@ Install build dependencies appropriate for your OS:
``` shell
# Fedora
sudo dnf install ccache gcc-c++ meson alsa-lib-devel libatomic libpng-devel \
- SDL2-devel SDL2_net-devel opusfile-devel fluidsynth-devel \
- mt32emu-devel libslirp-devel speexdsp-devel
+ SDL2-devel SDL2_image-devel SDL2_net-devel opusfile-devel \
+ fluidsynth-devel mt32emu-devel libslirp-devel speexdsp-devel
```
``` shell
# Debian, Ubuntu
sudo apt install ccache build-essential libasound2-dev libatomic1 libpng-dev \
- libsdl2-dev libsdl2-net-dev libopusfile-dev \
+ libsdl2-dev libsdl2-image-dev libsdl2-net-dev libopusfile-dev \
libfluidsynth-dev libslirp-dev libspeexdsp-dev
# Install Meson on Debian-10 "Buster" or Ubuntu-20.04 and older
@@ -159,21 +160,21 @@ sudo apt install meson
``` shell
# Arch, Manjaro
-sudo pacman -S ccache gcc meson alsa-lib libpng sdl2 sdl2_net opusfile \
- fluidsynth libslirp speexdsp
+sudo pacman -S ccache gcc meson alsa-lib libpng sdl2 sdl2_image sdl2_net \
+ opusfile fluidsynth libslirp speexdsp
```
``` shell
# openSUSE
sudo zypper install ccache gcc gcc-c++ meson alsa-devel libatomic1 libpng-devel \
- libSDL2-devel libSDL2_net-devel opusfile-devel \
- fluidsynth-devel libmt32emu-devel libslirp-devel \
+ libSDL2-devel libSDL2_image-devel libSDL2_net-devel \
+ opusfile-devel fluidsynth-devel libmt32emu-devel libslirp-devel \
speexdsp
```
``` shell
# Void Linux
-sudo xbps-install -S SDL2-devel SDL2_net-devel alsa-lib-devel \
+sudo xbps-install -S SDL2-devel SDL2_image-devel SDL2_net-devel alsa-lib-devel \
fluidsynth-devel libiir1-devel libmt32emu-devel \
libpng-devel libslirp-devel opusfile-devel \
speexdsp-devel libatomic-devel
@@ -182,7 +183,7 @@ sudo xbps-install -S SDL2-devel SDL2_net-devel alsa-lib-devel \
``` shell
# macOS
xcode-select --install
-brew install ccache meson libpng sdl2 sdl2_net opusfile fluid-synth libslirp speexdsp
+brew install ccache meson libpng sdl2 sdl2_image sdl2_net opusfile fluid-synth libslirp speexdsp
```
### Build and stay up-to-date with the latest sources
diff --git a/contrib/fedora/dosbox-staging.spec b/contrib/fedora/dosbox-staging.spec
index afd436b5d..37273cf69 100644
--- a/contrib/fedora/dosbox-staging.spec
+++ b/contrib/fedora/dosbox-staging.spec
@@ -34,6 +34,7 @@ BuildRequires: make
BuildRequires: meson >= 0.54.2
BuildRequires: opusfile-devel
BuildRequires: SDL2-devel >= 2.0.5
+BuildRequires: SDL2_image-devel
BuildRequires: SDL2_net-devel
BuildRequires: speexdsp-devel > 1.1.9
# mt32emu dependencies:
diff --git a/contrib/macos/create-app-bundle.sh b/contrib/macos/create-app-bundle.sh
index 176b42461..d30f48dcf 100755
--- a/contrib/macos/create-app-bundle.sh
+++ b/contrib/macos/create-app-bundle.sh
@@ -24,6 +24,7 @@ install "src/dosbox" "$dst/MacOS/"
# install "$opt/libpng/lib/libpng16.16.dylib" "$dst/MacOS/"
# install "$opt/opusfile/lib/libopusfile.0.dylib" "$dst/MacOS/"
# install "$opt/sdl2/lib/libSDL2-2.0.0.dylib" "$dst/MacOS/"
+# install "$opt/sdl2_image/lib/libSDL2_image-2.0.0.dylib" "$dst/MacOS/"
# install "$opt/sdl2_net/lib/libSDL2_net-2.0.0.dylib" "$dst/MacOS/"
install -m 644 "contrib/macos/Info.plist.template" "$dst/Info.plist"
install -m 644 "contrib/macos/PkgInfo" "$dst/PkgInfo"
diff --git a/include/hardware.h b/include/hardware.h
index ed842edf0..383ba4fc9 100644
--- a/include/hardware.h
+++ b/include/hardware.h
@@ -22,6 +22,7 @@
#include "dosbox.h"
#include <stdio.h>
+#include <string>
class Section;
@@ -45,7 +46,9 @@ bool SB_Get_Address(uint16_t &sbaddr, uint8_t &sbirq, uint8_t &sbdma);
bool TS_Get_Address(Bitu& tsaddr, Bitu& tsirq, Bitu& tsdma);
extern uint8_t adlib_commandreg;
-FILE * OpenCaptureFile(const char * type,const char * ext);
+
+std::string GetScreenshotFilename(const char *type, const char *ext);
+FILE *OpenCaptureFile(const char *type, const char *ext);
void CAPTURE_AddWave(uint32_t freq, uint32_t len, int16_t * data);
diff --git a/meson.build b/meson.build
index 23440a1ff..d39879ba2 100644
--- a/meson.build
+++ b/meson.build
@@ -166,6 +166,7 @@ conf_data.set10('C_NE2000', get_option('use_slirp'))
conf_data.set10('C_FLUIDSYNTH', get_option('use_fluidsynth'))
conf_data.set10('C_MT32EMU', get_option('use_mt32emu'))
conf_data.set10('C_SSHOT', get_option('use_png'))
+conf_data.set10('C_SDL_IMAGE', get_option('use_sdl2_image'))
conf_data.set10('C_TRACY', get_option('tracy'))
conf_data.set10('C_FPU', true)
conf_data.set10('C_FPU_X86', host_machine.cpu_family() in ['x86', 'x86_64'])
@@ -425,6 +426,17 @@ if get_option('use_sdl2_net')
)
endif
+# SDL Image
+sdl2_image_dep = optional_dep
+if get_option('use_sdl2_image')
+ sdl2_image_dep = dependency(
+ 'SDL2_image',
+ version: '>= 2.0.0',
+ static: ('sdl2_image' in static_libs_list),
+ not_found_message: msg.format('use_sdl2_image'),
+ )
+endif
+
# OpenGL
opengl_dep = optional_dep
opengl_summary_msg = 'Disabled'
@@ -713,6 +725,7 @@ third_party_deps = [
atomic_dep,
stdcppfs_dep,
sdl2_dep,
+ sdl2_image_dep,
threads_dep,
ghc_dep,
libiir_dep,
diff --git a/meson_options.txt b/meson_options.txt
index fcb96b8df..5472df8bf 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -6,6 +6,13 @@ option(
)
option(
+ 'use_sdl2_image',
+ type: 'boolean',
+ value: true,
+ description: 'Enable screenshots of rendered output',
+)
+
+option(
'use_opengl',
type: 'combo',
choices: ['auto', 'true', 'false'],
@@ -97,6 +104,7 @@ option(
'opusfile',
'png',
'sdl2',
+ 'sdl2_image',
'sdl2_net',
'slirp',
'speexdsp',
@@ -118,6 +126,7 @@ option(
'opusfile',
'png',
'sdl2',
+ 'sdl2_image',
'sdl2_net',
'slirp',
'speexdsp',
diff --git a/packages/fedora-latest.txt b/packages/fedora-latest.txt
index 10441c568..3b7ef0a61 100644
--- a/packages/fedora-latest.txt
+++ b/packages/fedora-latest.txt
@@ -1 +1 @@
-alsa-lib-devel cmake desktop-file-utils fluidsynth-devel gcc gcc-c++ git gmock-devel gtest-devel libappstream-glib libatomic libpng-devel libslirp make meson ninja opusfile-devel SDL2-devel SDL2_net-devel speexdsp-devel
+alsa-lib-devel cmake desktop-file-utils fluidsynth-devel gcc gcc-c++ git gmock-devel gtest-devel libappstream-glib libatomic libpng-devel libslirp make meson ninja opusfile-devel SDL2-devel SDL2_net-devel SDL2_image-devel speexdsp-devel
diff --git a/packages/macos-12-brew.txt b/packages/macos-12-brew.txt
index 175e4caf4..c94670ec4 100644
--- a/packages/macos-12-brew.txt
+++ b/packages/macos-12-brew.txt
@@ -13,6 +13,7 @@ pcre
pkg-config
readline
sdl2
+sdl2_image
sdl2_net
speexdsp
wget
diff --git a/packages/macos-latest-brew.txt b/packages/macos-latest-brew.txt
index 175e4caf4..c94670ec4 100644
--- a/packages/macos-latest-brew.txt
+++ b/packages/macos-latest-brew.txt
@@ -13,6 +13,7 @@ pcre
pkg-config
readline
sdl2
+sdl2_image
sdl2_net
speexdsp
wget
diff --git a/packages/ubuntu-16.04-apt.txt b/packages/ubuntu-16.04-apt.txt
index c43113e19..68cab2025 100644
--- a/packages/ubuntu-16.04-apt.txt
+++ b/packages/ubuntu-16.04-apt.txt
@@ -5,6 +5,7 @@ libatomic1
libopusfile-dev
libpng-dev
libsdl2-dev
+libsdl2-image-dev
libsdl2-net-dev
libspeexdsp-dev
python3-setuptools
diff --git a/packages/ubuntu-18.04-apt.txt b/packages/ubuntu-18.04-apt.txt
index e2181025e..90466312a 100644
--- a/packages/ubuntu-18.04-apt.txt
+++ b/packages/ubuntu-18.04-apt.txt
@@ -6,6 +6,7 @@ libatomic1
libopusfile-dev
libpng-dev
libsdl2-dev
+libsdl2-image-dev
libsdl2-net-dev
libspeexdsp-dev
python3-setuptools
diff --git a/packages/ubuntu-20.04-apt.txt b/packages/ubuntu-20.04-apt.txt
index b11e9e1b1..34d0daa17 100644
--- a/packages/ubuntu-20.04-apt.txt
+++ b/packages/ubuntu-20.04-apt.txt
@@ -9,6 +9,7 @@ libgtest-dev
libopusfile-dev
libpng-dev
libsdl2-dev
+libsdl2-image-dev
libsdl2-net-dev
libslirp-dev
libspeexdsp-dev
diff --git a/packages/ubuntu-22.04-apt.txt b/packages/ubuntu-22.04-apt.txt
index b11e9e1b1..34d0daa17 100644
--- a/packages/ubuntu-22.04-apt.txt
+++ b/packages/ubuntu-22.04-apt.txt
@@ -9,6 +9,7 @@ libgtest-dev
libopusfile-dev
libpng-dev
libsdl2-dev
+libsdl2-image-dev
libsdl2-net-dev
libslirp-dev
libspeexdsp-dev
diff --git a/packages/windows-latest-msys2.txt b/packages/windows-latest-msys2.txt
index be5bbdd48..13fe68dc2 100644
--- a/packages/windows-latest-msys2.txt
+++ b/packages/windows-latest-msys2.txt
@@ -8,6 +8,7 @@ mingw-w64-x86_64-ncurses
mingw-w64-x86_64-opusfile
mingw-w64-x86_64-pkg-config
mingw-w64-x86_64-SDL2
+mingw-w64-x86_64-SDL2_image
mingw-w64-x86_64-SDL2_net
mingw-w64-x86_64-zlib
mingw-w64-x86_64-speexdsp
diff --git a/packages/windows-msys2-clang-i686.txt b/packages/windows-msys2-clang-i686.txt
index b5088e508..9d94b043c 100644
--- a/packages/windows-msys2-clang-i686.txt
+++ b/packages/windows-msys2-clang-i686.txt
@@ -11,6 +11,7 @@ mingw-w64-clang-i686-libpng
mingw-w64-clang-i686-libslirp
mingw-w64-clang-i686-opusfile
mingw-w64-clang-i686-SDL2
+mingw-w64-clang-i686-SDL2_image
mingw-w64-clang-i686-SDL2_net
mingw-w64-clang-i686-zlib
mingw-w64-clang-i686-speexdsp
diff --git a/packages/windows-msys2-clang-x86_64.txt b/packages/windows-msys2-clang-x86_64.txt
index 035f6c43a..c67e8ebcb 100644
--- a/packages/windows-msys2-clang-x86_64.txt
+++ b/packages/windows-msys2-clang-x86_64.txt
@@ -11,6 +11,7 @@ mingw-w64-clang-x86_64-libpng
mingw-w64-clang-x86_64-libslirp
mingw-w64-clang-x86_64-opusfile
mingw-w64-clang-x86_64-SDL2
+mingw-w64-clang-x86_64-SDL2_image
mingw-w64-clang-x86_64-SDL2_net
mingw-w64-clang-x86_64-zlib
mingw-w64-clang-x86_64-speexdsp
diff --git a/packages/windows-msys2-gcc-i686.txt b/packages/windows-msys2-gcc-i686.txt
index ca3b6e57b..5d2d367dd 100644
--- a/packages/windows-msys2-gcc-i686.txt
+++ b/packages/windows-msys2-gcc-i686.txt
@@ -11,6 +11,7 @@ mingw-w64-i686-libpng
mingw-w64-i686-libslirp
mingw-w64-i686-opusfile
mingw-w64-i686-SDL2
+mingw-w64-i686-SDL2_image
mingw-w64-i686-SDL2_net
mingw-w64-i686-zlib
mingw-w64-i686-speexdsp
diff --git a/packages/windows-msys2-gcc-x86_64.txt b/packages/windows-msys2-gcc-x86_64.txt
index f1049c225..ee6b25197 100644
--- a/packages/windows-msys2-gcc-x86_64.txt
+++ b/packages/windows-msys2-gcc-x86_64.txt
@@ -11,6 +11,7 @@ mingw-w64-x86_64-libpng
mingw-w64-x86_64-libslirp
mingw-w64-x86_64-opusfile
mingw-w64-x86_64-SDL2
+mingw-w64-x86_64-SDL2_image
mingw-w64-x86_64-SDL2_net
mingw-w64-x86_64-zlib
mingw-w64-x86_64-speexdsp
diff --git a/src/config.h.in b/src/config.h.in
index df120abc4..56abf5842 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -109,7 +109,10 @@
// Define to 1 to enable Novell NE 2000 NIC emulation
#mesondefine C_NE2000
-// Define to 1 to enable screenshots in .png format
+// Define to 1 to enable rendered screenshots in .png format (using SDL2_image)
+#mesondefine C_SDL_IMAGE
+
+// Define to 1 to enable surface screenshots in .png format
#mesondefine C_SSHOT
// Define to 1 to enable the Tracy profiling server
diff --git a/src/platform/visualc/config.h b/src/platform/visualc/config.h
index 44c15209a..5ae48fd5f 100644
--- a/src/platform/visualc/config.h
+++ b/src/platform/visualc/config.h
@@ -16,7 +16,10 @@
/* Define to 1 to enable internal debugger, requires libcurses */
#define C_DEBUG 0
-/* Define to 1 to enable screenshots, requires libpng */
+/* Define to 1 to enable rendered screenshots, requires SDL_image */
+#define C_SDL_IMAGE 1
+
+/* Define to 1 to enable surface screenshots, requires libpng */
#define C_SSHOT 1
/* Define to 1 to use opengl display output support */
diff --git a/src/platform/visualc/sdl_image.h b/src/platform/visualc/sdl_image.h
new file mode 100644
index 000000000..9adaa0556
--- /dev/null
+++ b/src/platform/visualc/sdl_image.h
@@ -0,0 +1,4 @@
+// This file exists only for MSVC builds.
+// It's needed because vcpkg does not set SDL subdirectory in includes list
+// for projects that do not use cmake.
+#include <SDL2/SDL_image.h>
diff --git a/vcpkg.json b/vcpkg.json
index 6f0d846a9..a1884c29d 100644
--- a/vcpkg.json
+++ b/vcpkg.json
@@ -11,6 +11,7 @@
"libpng",
"opusfile",
"sdl2",
+ "sdl2-image",
"sdl2-net",
"speexdsp",
"tracy",
diff --git a/vs/dosbox.vcxproj b/vs/dosbox.vcxproj
index b26320370..6e353d183 100644
--- a/vs/dosbox.vcxproj
+++ b/vs/dosbox.vcxproj
@@ -169,7 +169,7 @@
<ObjectFileName>$(IntDir)\$(ProjectName)\$(ConfigurationName)\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalDependencies>opengl32.lib;SDL2_net.lib;winmm.lib;libpng16.lib;SDL2main.lib;SDL2.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;fluidsynth.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>opengl32.lib;SDL2_image.lib;SDL2_net.lib;winmm.lib;libpng16.lib;SDL2main.lib;SDL2.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;fluidsynth.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)\dosbox.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
@@ -213,7 +213,7 @@ IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0</Command>
<ObjectFileName>$(IntDir)\$(ProjectName)\$(ConfigurationName)\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalDependencies>opengl32.lib;SDL2_net.lib;winmm.lib;libpng16.lib;SDL2main.lib;SDL2.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>opengl32.lib;SDL2_image.lib;SDL2_net.lib;winmm.lib;libpng16.lib;SDL2main.lib;SDL2.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)\dosbox.exe</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
@@ -260,7 +260,7 @@ IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0</Command>
<ObjectFileName>$(IntDir)\$(ProjectName)\$(ConfigurationName)\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;fluidsynth.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_image.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;fluidsynth.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)\dosbox.exe</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ProgramDatabaseFile />
@@ -315,7 +315,7 @@ IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0</Command>
<ObjectFileName>$(IntDir)\$(ProjectName)\$(ConfigurationName)\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;fluidsynth.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_image.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;fluidsynth.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)\dosbox.exe</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ProgramDatabaseFile>
@@ -372,7 +372,7 @@ IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0</Command>
<ObjectFileName>$(IntDir)\$(ProjectName)\$(ConfigurationName)\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_image.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)\dosbox.exe</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ProgramDatabaseFile>
@@ -428,7 +428,7 @@ IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0</Command>
<ObjectFileName>$(IntDir)\$(ProjectName)\$(ConfigurationName)\%(RelativeDir)</ObjectFileName>
</ClCompile>
<Link>
- <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>opengl32.lib;winmm.lib;libpng16.lib;SDL2_image.lib;SDL2_net.lib;SDL2.lib;SDL2main.lib;odbc32.lib;odbccp32.lib;ws2_32.lib;mt32emu.lib;opusfile.lib;opus.lib;ogg.lib;speexdsp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)\dosbox.exe</OutputFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ProgramDatabaseFile>