Remove SDL fixups and use an SDL3 port with fixes.

Fixes crash bug and world issues!
This commit is contained in:
SnepOMatic (Rhew) 2025-11-15 19:42:30 +00:00
parent a5027afcc2
commit 6b0c5b51e6
5 changed files with 4 additions and 59 deletions

View File

@ -21,6 +21,7 @@ endif()
if (NINTENDO_SWITCH)
set(CMAKE_TOOLCHAIN_FILE "${DEVKITPRO}/cmake/Switch.cmake" CACHE PATH "toolchain file")
add_compile_definitions(__SWITCH__)
add_compile_definitions(SDL_PLATFORM_SWITCH)
add_compile_definitions(SDL_VIDEO_DRIVER_SWITCH)
add_compile_definitions(IMGUI_DISABLE_DEFAULT_SHELL_FUNCTIONS)
endif()
@ -98,7 +99,8 @@ if (DOWNLOAD_DEPENDENCIES)
# Official repo missing Threads support?
#GIT_REPOSITORY "https://github.com/devkitPro/SDL.git"
#GIT_TAG "switch-sdl-3.2"
GIT_REPOSITORY "https://github.com/vs49688/SDL.git"
#GIT_REPOSITORY "https://github.com/vs49688/SDL.git"
GIT_REPOSITORY "https://github.com/SnepOMatic/SDL3-Switch.git"
GIT_TAG "switch-sdl-3.2.14"
EXCLUDE_FROM_ALL
)
@ -606,7 +608,6 @@ if (ISLE_BUILD_APP)
endif()
if(NINTENDO_SWITCH)
target_sources(isle PRIVATE
ISLE/switch/filesys.cpp
ISLE/switch/config.cpp
)
endif()

View File

@ -67,8 +67,6 @@
#ifdef __SWITCH__
#include "switch/config.h"
#include "switch/filesys.h"
#include <switch.h>
#endif

View File

@ -8,4 +8,5 @@ void NX_SetupDefaultConfigOverrides(dictionary* p_dictionary)
iniparser_set(p_dictionary, "isle:diskpath", "sdmc:/switch/isle/LEGO/");
iniparser_set(p_dictionary, "isle:cdpath", "sdmc:/switch/isle/");
iniparser_set(p_dictionary, "isle:savepath", "sdmc:/switch/isle/");
iniparser_set(p_dictionary, "isle:Cursor Sensitivity", "16.000000");
}

View File

@ -1,46 +0,0 @@
#include "filesys.h"
#include <SDL3/SDL.h>
#include <cerrno>
#include <cstdio>
#include <dirent.h>
#include <sys/stat.h>
// Missing from Switch SDL3 implementation
#ifndef S_ISREG
#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
#endif
// Uses core of SDL's SDL_GetPathInfo but handles null 'info'.
bool NX_GetPathInfo(const char* path, SDL_PathInfo* info)
{
SDL_PathInfo tmp_info;
struct stat statbuf;
const int rc = stat(path, &statbuf);
if (rc < 0) {
return SDL_SetError("Can't stat: %s", strerror(errno));
}
else if (S_ISREG(statbuf.st_mode)) {
tmp_info.type = SDL_PATHTYPE_FILE;
tmp_info.size = (Uint64) statbuf.st_size;
}
else if (S_ISDIR(statbuf.st_mode)) {
tmp_info.type = SDL_PATHTYPE_DIRECTORY;
tmp_info.size = 0;
}
else {
tmp_info.type = SDL_PATHTYPE_OTHER;
tmp_info.size = (Uint64) statbuf.st_size;
}
tmp_info.create_time = (SDL_Time) SDL_SECONDS_TO_NS(statbuf.st_ctime);
tmp_info.modify_time = (SDL_Time) SDL_SECONDS_TO_NS(statbuf.st_mtime);
tmp_info.access_time = (SDL_Time) SDL_SECONDS_TO_NS(statbuf.st_atime);
if (info) {
*info = tmp_info;
}
return true;
}

View File

@ -1,9 +0,0 @@
#ifndef NX_FILESYS_H
#define NX_FILESYS_H
#include <SDL3/SDL_filesystem.h>
#define SDL_GetPathInfo NX_GetPathInfo // Override broken SDL_GetPathInfo
bool NX_GetPathInfo(const char* path, SDL_PathInfo* info);
#endif // NX_FILESYS_H