Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add SDL3 support #3339

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 111 additions & 58 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -555,14 +555,17 @@ elseif(NINTENDO_SWITCH)
elseif(VITA)
set(PLAYER_TARGET_PLATFORM "psvita" CACHE STRING "Platform to compile for.")
elseif(NINTENDO_WII)
set(PLAYER_TARGET_PLATFORM "wii" CACHE STRING "Platform to compile for.")
set(PLAYER_TARGET_PLATFORM "SDL2" CACHE STRING "Platform to compile for. Options: SDL2 SDL1")
set(PLAYER_AUDIO_BACKEND "AESND" CACHE STRING "Audio system to use. Options: SDL2 SDL1 AESND OFF")
set_property(CACHE PLAYER_TARGET_PLATFORM PROPERTY STRINGS SDL2 SDL1)
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 SDL1 AESND)
elseif(NINTENDO_WIIU)
set(PLAYER_TARGET_PLATFORM "SDL2" CACHE STRING "Platform to compile for.")
elseif(AMIGA)
set(PLAYER_TARGET_PLATFORM "SDL1" CACHE STRING "Platform to compile for.")
else()
set(PLAYER_TARGET_PLATFORM "SDL2" CACHE STRING "Platform to compile for. Options: SDL2 SDL1 libretro")
set_property(CACHE PLAYER_TARGET_PLATFORM PROPERTY STRINGS SDL2 SDL1 libretro)
set(PLAYER_TARGET_PLATFORM "Unset" CACHE STRING "Platform to compile for. Options: SDL3 SDL2 SDL1 libretro")
set_property(CACHE PLAYER_TARGET_PLATFORM PROPERTY STRINGS SDL3 SDL2 SDL1 libretro)
endif()
set(PLAYER_BUILD_EXECUTABLE ON)
set(PLAYER_TEST_LIBRARIES ${PROJECT_NAME})
Expand All @@ -576,10 +579,24 @@ if(ANDROID AND PLAYER_GRADLE_BUILD)
endforeach(f)
endif()

if(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
if(${PLAYER_TARGET_PLATFORM} STREQUAL "Unset")
get_property(PLAT_PROP CACHE PLAYER_TARGET_PLATFORM PROPERTY STRINGS)
message(FATAL_ERROR "Please specify the target platform with -DPLAYER_TARGET_PLATFORM.\nOptions: ${PLAT_PROP}")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs documentation updates.

elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL3")
target_sources(${PROJECT_NAME} PRIVATE
src/platform/sdl/sdl3_ui.cpp
src/platform/sdl/sdl3_ui.h)
target_compile_definitions(${PROJECT_NAME} PUBLIC USE_SDL=3)

player_find_package(NAME SDL3
TARGET SDL3::SDL3
REQUIRED)

if(ANDROID)
set(PLAYER_BUILD_EXECUTABLE OFF)
endif()
elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
target_sources(${PROJECT_NAME} PRIVATE
src/platform/sdl/sdl_audio.cpp
src/platform/sdl/sdl_audio.h
src/platform/sdl/sdl2_ui.cpp
src/platform/sdl/sdl2_ui.h)
target_compile_definitions(${PROJECT_NAME} PUBLIC USE_SDL=2)
Expand All @@ -597,9 +614,12 @@ if(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")

if(ANDROID)
set(PLAYER_BUILD_EXECUTABLE OFF)
endif()

if(NINTENDO_WIIU)
elseif(NINTENDO_WII)
target_compile_definitions(${PROJECT_NAME} PUBLIC PLAYER_NINTENDO)
target_sources(${PROJECT_NAME} PRIVATE
src/platform/wii/clock.h
src/platform/wii/input_buttons.cpp)
elseif(NINTENDO_WIIU)
target_compile_definitions(${PROJECT_NAME} PUBLIC PLAYER_NINTENDO)
target_sources(${PROJECT_NAME} PRIVATE
src/platform/wiiu/main.h
Expand All @@ -610,15 +630,25 @@ if(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
target_link_libraries(${PROJECT_NAME} "Dwmapi")
endif()
elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL1")
if(NINTENDO_WII)
find_package(SDL REQUIRED)
target_compile_definitions(${PROJECT_NAME} PUBLIC PLAYER_NINTENDO)
target_include_directories(${PROJECT_NAME} PUBLIC ${SDL_INCLUDE_DIR})
target_sources(${PROJECT_NAME} PRIVATE
src/platform/wii/clock.h
src/platform/wii/input_buttons.cpp)
else()
player_find_package(NAME SDL1 TARGET SDL::SDLmain REQUIRED)
endif()

target_sources(${PROJECT_NAME} PRIVATE
src/platform/sdl/sdl_audio.cpp
src/platform/sdl/sdl_audio.h
src/platform/sdl/axis.h
src/platform/sdl/sdl_ui.cpp
src/platform/sdl/sdl_ui.h)
target_compile_definitions(${PROJECT_NAME} PUBLIC USE_SDL=1)

player_find_package(NAME SDL1 TARGET SDL::SDLmain REQUIRED)
target_compile_definitions(${PROJECT_NAME} PUBLIC
USE_SDL=1
EASYRPG_CONFIG_NAME="config_sdl1.ini"
)
elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "libretro")
target_compile_definitions(${PROJECT_NAME} PUBLIC PLAYER_UI=LibretroUi USE_LIBRETRO=1)
set(PLAYER_BUILD_EXECUTABLE OFF)
Expand Down Expand Up @@ -682,31 +712,73 @@ elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "switch")
src/platform/switch/ui.cpp
src/platform/switch/ui.h)
target_link_libraries(${PROJECT_NAME} switch-assets)
elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "wii")
find_package(SDL REQUIRED)
target_compile_definitions(${PROJECT_NAME} PUBLIC USE_SDL=1 PLAYER_NINTENDO)
target_include_directories(${PROJECT_NAME} PUBLIC ${SDL_INCLUDE_DIR})
else()
message(FATAL_ERROR "Invalid target platform")
endif()

# Sound system to use
if(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL3")
set(PLAYER_AUDIO_BACKEND "SDL3" CACHE STRING "Audio system to use. Options: SDL3 OFF")
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL3 OFF)
elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
set(PLAYER_AUDIO_BACKEND "SDL2" CACHE STRING "Audio system to use. Options: SDL2 OFF")
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OFF)

if(${PLAYER_AUDIO_BACKEND} STREQUAL "SDL2_mixer")
message(FATAL_ERROR "SDL2_mixer is not supported anymore. Use SDL2 instead.")
endif()
elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL1")
set(PLAYER_AUDIO_BACKEND "SDL1" CACHE STRING "Audio system to use. Options: SDL1 OFF")
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL1 OFF)
else()
# Assuming that all platforms not targeting SDL have only one audio backend
set(PLAYER_AUDIO_BACKEND ${PLAYER_TARGET_PLATFORM} CACHE STRING "Audio system to use. Options: ${PLAYER_TARGET_PLATFORM} OFF")
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS ${PLAYER_TARGET_PLATFORM} OFF)
endif()

get_property(AUDIO_PROP CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS)
set(PLAYER_HAS_AUDIO ON)
if(${PLAYER_AUDIO_BACKEND} STREQUAL "SDL3")
target_sources(${PROJECT_NAME} PRIVATE
src/platform/sdl/sdl3_audio.cpp
src/platform/sdl/sdl3_audio.h)
elseif(${PLAYER_AUDIO_BACKEND} STREQUAL "SDL2")
target_sources(${PROJECT_NAME} PRIVATE
src/platform/sdl/sdl2_audio.cpp
src/platform/sdl/sdl2_audio.h)
elseif(${PLAYER_AUDIO_BACKEND} STREQUAL "SDL1")
target_sources(${PROJECT_NAME} PRIVATE
src/platform/sdl/sdl1_audio.cpp
src/platform/sdl/sdl1_audio.h)
elseif(${PLAYER_AUDIO_BACKEND} STREQUAL "AESND")
target_sources(${PROJECT_NAME} PRIVATE
src/platform/wii/audio.cpp
src/platform/wii/audio.h
src/platform/wii/clock.h
src/platform/wii/input_buttons.cpp
src/platform/sdl/axis.h
src/platform/sdl/sdl_ui.cpp
src/platform/sdl/sdl_ui.h)
src/platform/wii/audio.h)
target_compile_definitions(${PROJECT_NAME} PUBLIC AUDIO_AESND=1)
elseif(${PLAYER_AUDIO_BACKEND} STREQUAL ${PLAYER_TARGET_PLATFORM})

elseif(${PLAYER_AUDIO_BACKEND} STREQUAL "OFF")
set(PLAYER_HAS_AUDIO OFF)
else()
message(FATAL_ERROR "Invalid target platform")
message(FATAL_ERROR "Invalid Audio Backend ${PLAYER_AUDIO_BACKEND}\nOptions: ${AUDIO_PROP}")
endif()

if(NOT PLAYER_AUDIO_BACKEND IN_LIST AUDIO_PROP)
message(FATAL_ERROR "Incompatible audio backend configuration ${PLAYER_AUDIO_BACKEND}.\nPlease clear the CMake cache.\nOptions: ${AUDIO_PROP}")
endif()

# Shared by homebrew platforms
if(${PLAYER_TARGET_PLATFORM} MATCHES "^(3ds|psvita|switch|wii)$" OR NINTENDO_WIIU)
if(NINTENDO_3DS OR NINTENDO_WII OR NINTENDO_WIIU OR NINTENDO_WIIU OR NINTENDO_SWITCH OR VITA)
target_compile_options(${PROJECT_NAME} PUBLIC -fno-exceptions -fno-rtti)
set(CMAKE_DL_LIBS "") # hack4icu!
set(PLAYER_ENABLE_TESTS OFF)
option(PLAYER_VERSIONED_PACKAGES "Create zip packages with versioned name (for internal use)" ON)
set(PLAYER_CONSOLE_PORT ON)
else()
set(PLAYER_CONSOLE_PORT OFF)
endif()
# Make content available (romfs/wuhb bundle)
if(${PLAYER_TARGET_PLATFORM} MATCHES "^(3ds|switch)$" OR NINTENDO_WIIU)
if(NINTENDO_3DS OR NINTENDO_WIIU OR NINTENDO_SWITCH)
option(PLAYER_BUNDLE "Embed a directory in the executable" OFF)
set(PLAYER_BUNDLE_PATH "content" CACHE PATH "Directory to include in executable")
set(BUNDLE_ARG "_IGNORE_ME")
Expand Down Expand Up @@ -851,8 +923,7 @@ target_link_libraries(${PROJECT_NAME} PIXMAN::PIXMAN)

# Always enable Wine registry support on non-Windows, but not for console ports
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows"
AND NOT ${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$"
AND NOT NINTENDO_WIIU)
AND NOT PLAYER_CONSOLE)
target_compile_definitions(${PROJECT_NAME} PUBLIC HAVE_WINE=1)
endif()

Expand Down Expand Up @@ -903,26 +974,8 @@ else()
)
endif()

# Sound system to use
if(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
set(PLAYER_AUDIO_BACKEND "SDL2" CACHE STRING "Audio system to use. Options: SDL2 OFF")
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OFF)

if(${PLAYER_AUDIO_BACKEND} STREQUAL "SDL2_mixer")
message(FATAL_ERROR "SDL2_mixer is not supported anymore. Use SDL2 instead.")
endif()
elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL1")
set(PLAYER_AUDIO_BACKEND "SDL1" CACHE STRING "Audio system to use. Options: SDL1 OFF")
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL1 OFF)
else()
# Assuming that all platforms not targeting SDL have only one audio backend
set(PLAYER_AUDIO_BACKEND "Default" CACHE STRING "Audio system to use. Options: Default OFF")
set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS Default OFF)
endif()

# Configure Audio backends
if(${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$")
set(PLAYER_HAS_AUDIO ON)
if(PLAYER_HAS_AUDIO)
target_compile_definitions(${PROJECT_NAME} PUBLIC SUPPORT_AUDIO=1)

if(${PLAYER_TARGET_PLATFORM} STREQUAL "libretro")
Expand Down Expand Up @@ -964,10 +1017,6 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$")
if(PLAYER_ENABLE_FMMIDI)
target_compile_definitions(${PROJECT_NAME} PUBLIC WANT_FMMIDI=1)
endif()
elseif(NOT PLAYER_AUDIO_BACKEND)
set(PLAYER_HAS_AUDIO OFF)
else()
message(FATAL_ERROR "Invalid Audio Backend ${PLAYER_AUDIO_BACKEND}")
endif()

CMAKE_DEPENDENT_OPTION(PLAYER_WITH_MPG123 "Play MP3 audio with libmpg123" ON "PLAYER_HAS_AUDIO" OFF)
Expand All @@ -980,7 +1029,7 @@ CMAKE_DEPENDENT_OPTION(PLAYER_WITH_FLUIDLITE "Play MIDI audio with fluidlite" ON
CMAKE_DEPENDENT_OPTION(PLAYER_WITH_XMP "Play MOD audio with libxmp" ON "PLAYER_HAS_AUDIO" OFF)
CMAKE_DEPENDENT_OPTION(PLAYER_ENABLE_DRWAV "Play WAV audio with dr_wav (built-in). Unsupported files are played by libsndfile." ON "PLAYER_HAS_AUDIO" OFF)

if(${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$")
if(PLAYER_HAS_AUDIO)
set(PLAYER_AUDIO_RESAMPLER "Auto" CACHE STRING "Audio resampler to use. Options: Auto speexdsp samplerate OFF")
set_property(CACHE PLAYER_AUDIO_RESAMPLER PROPERTY STRINGS Auto speexdsp samplerate OFF)

Expand Down Expand Up @@ -1096,7 +1145,7 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$")
endif()

# Executable
if(${PLAYER_BUILD_EXECUTABLE} AND ${PLAYER_TARGET_PLATFORM} MATCHES "^SDL[12]$" AND NOT NINTENDO_WIIU)
if(${PLAYER_BUILD_EXECUTABLE} AND ${PLAYER_TARGET_PLATFORM} MATCHES "^SDL.*$" AND NOT PLAYER_CONSOLE_PORT)
if(APPLE)
set(EXE_NAME "EasyRPG-Player.app")
set_source_files_properties(${${PROJECT_NAME}_BUNDLE_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
Expand Down Expand Up @@ -1198,7 +1247,7 @@ if(${PLAYER_BUILD_EXECUTABLE} AND ${PLAYER_TARGET_PLATFORM} MATCHES "^SDL[12]$"
endif()
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLAYER_JS_OUTPUT_NAME}.wasm DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
elseif(${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$" OR NINTENDO_WIIU)
elseif(PLAYER_CONSOLE_PORT)
set(CPACK_PLATFORM "${PLAYER_TARGET_PLATFORM}")
if(NINTENDO_3DS)
add_executable(easyrpg-player src/platform/3ds/main.cpp)
Expand Down Expand Up @@ -1240,6 +1289,10 @@ elseif(${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$" OR NINTENDO
-laesnd
-lfat
-lwiikeyboard)
if(TARGET SDL2::SDL2main)
# Missing dependency?
target_link_libraries(SDL2::SDL2main INTERFACE -lfat)
endif()
ogc_create_dol(easyrpg-player)
string(TIMESTAMP WII_DATE "%Y%m%d000000")
configure_file(resources/wii/meta.xml.in resources/wii/meta.xml @ONLY)
Expand Down Expand Up @@ -1299,7 +1352,7 @@ elseif(${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$" OR NINTENDO
endif()
install(TARGETS easyrpg-player RUNTIME DESTINATION . COMPONENT debug)
# debug information
if(${PLAYER_TARGET_PLATFORM} MATCHES "^(3ds|switch|wii)$" OR NINTENDO_WIIU)
if(NINTENDO_3DS OR NINTENDO_WII OR NINTENDO_WIIU OR NINTENDO_SWITCH)
dkp_target_generate_symbol_list(easyrpg-player)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/easyrpg-player.map
${CMAKE_CURRENT_BINARY_DIR}/easyrpg-player.lst
Expand Down Expand Up @@ -1339,7 +1392,7 @@ else() # library
if(WIN32)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT easyrpg_libretro)
endif()
elseif(ANDROID AND ${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
elseif(ANDROID AND ${PLAYER_TARGET_PLATFORM} MATCHES "^SDL.*$")
add_library(easyrpg_android
src/platform/android/android.cpp
src/platform/android/android.h
Expand Down Expand Up @@ -1506,7 +1559,7 @@ if(PLAYER_BUILD_LIBLCF)
endif()

message(STATUS "Audio backend: ${PLAYER_AUDIO_BACKEND}")
if(${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$")
if(PLAYER_HAS_AUDIO)
message(STATUS "")

set(WAV_LIBS)
Expand Down
15 changes: 13 additions & 2 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -452,11 +452,22 @@ libeasyrpg_player_a_SOURCES = \
src/window_varlist.cpp \
src/window_varlist.h

SOURCEFILES_SDL3 += \
src/platform/sdl/sdl3_ui.cpp \
src/platform/sdl/sdl3_ui.h \
src/platform/sdl/sdl3_audio.cpp \
src/platform/sdl/sdl3_audio.h
if HAVE_SDL3
libeasyrpg_player_a_SOURCES += $(SOURCEFILES_SDL3)
else
EXTRA_DIST += $(SOURCEFILES_SDL3)
endif

SOURCEFILES_SDL2 = \
src/platform/sdl/sdl2_ui.cpp \
src/platform/sdl/sdl2_ui.h \
src/platform/sdl/sdl_audio.cpp \
src/platform/sdl/sdl_audio.h
src/platform/sdl/sdl2_audio.cpp \
src/platform/sdl/sdl2_audio.h
if HAVE_SDL2
libeasyrpg_player_a_SOURCES += $(SOURCEFILES_SDL2)
else
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Documentation is available at the documentation wiki: https://wiki.easyrpg.org
### minimal / required

- [liblcf] for RPG Maker data reading.
- SDL2 >= 2.0.5 for screen backend support.
- SDL3 or SDL2 >= 2.0.5 for screen backend support.
- Pixman for low level pixel manipulation.
- libpng for PNG image support.
- zlib for XYZ image and ZIP archive support.
Expand Down
13 changes: 9 additions & 4 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,15 @@ PKG_CHECK_MODULES([FMT],[fmt],,[
AC_MSG_ERROR([Could not find libfmt! Consider installing version 5.3 or newer.])
],[AC_MSG_RESULT([yes])])
])
PKG_CHECK_MODULES([SDL],[sdl2 >= 2.0.5],[sdl_version=2],[
PKG_CHECK_MODULES([SDL],[sdl],[sdl_version=1],[
AC_MSG_ERROR([Could not find SDL! Consider installing version 2.0.5 or newer.])
PKG_CHECK_MODULES([SDL],[sdl3],[sdl_version=3],[
PKG_CHECK_MODULES([SDL],[sdl2 >= 2.0.5],[sdl_version=2],[
PKG_CHECK_MODULES([SDL],[sdl],[sdl_version=1],[
AC_MSG_ERROR([Could not find SDL! Consider installing version 2.0.5 or newer.])
])
])
])
AC_DEFINE_UNQUOTED([USE_SDL],[$sdl_version],[Enable SDL, version 2 or 1.2])
AC_DEFINE_UNQUOTED([USE_SDL],[$sdl_version],[Enable SDL, version 3, 2 or 1.2])
AM_CONDITIONAL([HAVE_SDL3], [test "x$sdl_version" = "x3"])
AM_CONDITIONAL([HAVE_SDL2], [test "x$sdl_version" = "x2"])
AM_CONDITIONAL([HAVE_SDL1], [test "x$sdl_version" = "x1"])
EP_PKG_CHECK([FREETYPE],[freetype2],[Custom Font rendering.])
Expand Down Expand Up @@ -219,6 +222,8 @@ if test "yes" != "$silent"; then
echo " prefix: $prefix"
echo " bash completion: $BASHCOMPLETION_DIR"

test "$sdl_version" = "3" && \
echo "Backend: SDL3"
test "$sdl_version" = "2" && \
echo "Backend: SDL2"
test "$sdl_version" = "1" && \
Expand Down
8 changes: 6 additions & 2 deletions src/baseui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
#include "bitmap.h"
#include "player.h"

#if USE_SDL==2
#if USE_SDL==3
# include "platform/sdl/sdl3_ui.h"
#elif USE_SDL==2
# include "platform/sdl/sdl2_ui.h"
#elif USE_SDL==1
# include "platform/sdl/sdl_ui.h"
Expand All @@ -37,7 +39,9 @@
std::shared_ptr<BaseUi> DisplayUi;

std::shared_ptr<BaseUi> BaseUi::CreateUi(long width, long height, const Game_Config& cfg) {
#if USE_SDL==2
#if USE_SDL==3
return std::make_shared<Sdl3Ui>(width, height, cfg);
#elif USE_SDL==2
return std::make_shared<Sdl2Ui>(width, height, cfg);
#elif USE_SDL==1
return std::make_shared<SdlUi>(width, height, cfg);
Expand Down
9 changes: 8 additions & 1 deletion src/decoder_oggvorbis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,14 @@ int OggVorbisDecoder::FillBuffer(uint8_t* buffer, int length) {
#ifdef HAVE_TREMOR
read = ov_read(ovf, reinterpret_cast<char*>(buffer + length - to_read), to_read, &section);
#else
read = ov_read(ovf, reinterpret_cast<char*>(buffer + length - to_read), to_read, 0/*LE*/, 2/*16bit*/, 1/*signed*/, &section);
# if defined(__WIIU__)
// FIXME: This is the endianess of the audio and not of the host but the byteswapping in ov_read does
// not sound like it works
int byte_order = 1; // BE
# else
int byte_order = 0; // LE
#endif
read = ov_read(ovf, reinterpret_cast<char*>(buffer + length - to_read), to_read, byte_order, 2/*16bit*/, 1/*signed*/, &section);
#endif
// stop decoding when error or end of file
if (read <= 0)
Expand Down
Loading
Loading