diff --git a/deps/nostalgia/CMakeLists.txt b/deps/nostalgia/CMakeLists.txt index 7e54bdb..3c9c113 100644 --- a/deps/nostalgia/CMakeLists.txt +++ b/deps/nostalgia/CMakeLists.txt @@ -23,6 +23,8 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_CXX_STANDARD 23) + if(APPLE) set(CMAKE_MACOSX_RPATH OFF) else() diff --git a/deps/nostalgia/README.md b/deps/nostalgia/README.md index eccb484..44c0c8c 100644 --- a/deps/nostalgia/README.md +++ b/deps/nostalgia/README.md @@ -4,6 +4,7 @@ * Install GCC, Clang, or Visual Studio with C++20 support * Install [devkitPro](https://devkitpro.org/wiki/Getting_Started) to build for GBA + * Install the gba-dev package * Install Python 3 * Install Ninja, Make, and CMake * Consider also installing ccache for faster subsequent build times @@ -21,7 +22,7 @@ probably differ), install the following additional packages: Build options: release, debug, asan, gba, gba-debug - make purge configure-{gba,release,debug} install + make purge configure-{gba,release,debug} build ## Run diff --git a/deps/nostalgia/deps/buildcore/base.mk b/deps/nostalgia/deps/buildcore/base.mk index 128f34b..839510c 100644 --- a/deps/nostalgia/deps/buildcore/base.mk +++ b/deps/nostalgia/deps/buildcore/base.mk @@ -10,21 +10,22 @@ ifeq (${OS},Windows_NT) SHELL := powershell.exe .SHELLFLAGS := -NoProfile -Command BC_VAR_OS=windows + BC_CMD_HOST_PY3=python else BC_VAR_OS=$(shell uname | tr [:upper:] [:lower:]) -endif - -ifneq ($(shell which python3 2> /dev/null),) - BC_CMD_HOST_PY3=python3 -else - ifeq ($(shell python -c 'import sys; print(sys.version_info[0])'),3) - BC_CMD_HOST_PY3=python + ifneq ($(shell which python3 2> /dev/null),) + BC_CMD_HOST_PY3=python3 else - echo 'Please install Python3 on host' - exit 1 + ifeq ($(shell python -c 'import sys; print(sys.version_info[0])'),3) + BC_CMD_HOST_PY3=python + else + echo 'Please install Python3 on host' + exit 1 + endif endif endif + ifdef BC_VAR_USE_DOCKER_DEVENV ifneq ($(shell which docker 2> /dev/null),) BC_VAR_DEVENV=devenv$(shell pwd | sed 's/\//-/g') diff --git a/deps/nostalgia/deps/buildcore/scripts/setup-build.py b/deps/nostalgia/deps/buildcore/scripts/setup-build.py index 8a2c8aa..ec89aa6 100755 --- a/deps/nostalgia/deps/buildcore/scripts/setup-build.py +++ b/deps/nostalgia/deps/buildcore/scripts/setup-build.py @@ -96,7 +96,7 @@ def main() -> int: cmake_cmd.append(build_tool) if qt_path != '': cmake_cmd.append(qt_path) - if platform.system() == 'Windows': + if platform.system() == 'Windows' and platform.system() == 'AMD64': cmake_cmd.append('-A x64') cmake_err = subprocess.run(cmake_cmd).returncode diff --git a/deps/nostalgia/deps/buildcore/scripts/util.py b/deps/nostalgia/deps/buildcore/scripts/util.py index c37e633..383ee5f 100644 --- a/deps/nostalgia/deps/buildcore/scripts/util.py +++ b/deps/nostalgia/deps/buildcore/scripts/util.py @@ -32,7 +32,7 @@ def get_os() -> str: def get_arch() -> str: - arch = platform.machine() - if arch.lower() == 'amd64': + arch = platform.machine().lower() + if arch == 'amd64': arch = 'x86_64' return arch diff --git a/deps/nostalgia/deps/ox/src/ox/event/signal.hpp b/deps/nostalgia/deps/ox/src/ox/event/signal.hpp index dee2849..ab11834 100644 --- a/deps/nostalgia/deps/ox/src/ox/event/signal.hpp +++ b/deps/nostalgia/deps/ox/src/ox/event/signal.hpp @@ -83,10 +83,10 @@ class Signal { } void cleanup(Signal *signal) noexcept final { - auto err = m_receiver->destruction.disconnectSignal(signal); - if (err) { - oxErrorf("Signal could not notify receiver that it is being destroyed. Destruction of receiver will cause use-after-free. ({})", toStr(err)); - } + std::ignore = m_receiver->destruction.disconnectSignal(signal); + //if (err) { + // oxErrorf("Signal could not notify receiver that it is being destroyed. Destruction of receiver will cause use-after-free. ({})", toStr(err)); + //} } [[nodiscard]] diff --git a/deps/nostalgia/deps/ox/src/ox/std/hardware.hpp b/deps/nostalgia/deps/ox/src/ox/std/hardware.hpp index 0611a99..83eba78 100644 --- a/deps/nostalgia/deps/ox/src/ox/std/hardware.hpp +++ b/deps/nostalgia/deps/ox/src/ox/std/hardware.hpp @@ -12,9 +12,9 @@ #define OX_ARCH_x86_64 #elif defined(__i386__) || defined(_M_IX86) #define OX_ARCH_x86_32 -#elif defined(__arm64__) || defined(__aarch64__) +#elif defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) #define OX_ARCH_ARM64 -#elif defined(__arm__) +#elif defined(__arm__) || defined(_M_ARM) #define OX_ARCH_ARM #endif diff --git a/deps/nostalgia/src/nostalgia/modules/core/src/gba/gfx.cpp b/deps/nostalgia/src/nostalgia/modules/core/src/gba/gfx.cpp index 553cbab..7255f55 100644 --- a/deps/nostalgia/src/nostalgia/modules/core/src/gba/gfx.cpp +++ b/deps/nostalgia/src/nostalgia/modules/core/src/gba/gfx.cpp @@ -84,21 +84,23 @@ static ox::Error loadTileSheetSet( uint16_t *tileMapTargetMem, TileSheetSet const&set) noexcept { size_t tileWriteIdx = 0; + size_t const bppMod = set.bpp == 4; for (auto const&entry : set.entries) { oxRequire(ts, keel::readObj(keelCtx(ctx), entry.tilesheet)); if (set.bpp != ts->bpp && ts->bpp == 8) { return OxError(1, "cannot load an 8 BPP tilesheet into a 4 BPP CBB"); } for (auto const&s : entry.sections) { - auto const cnt = (static_cast(s.tiles) * PixelsPerTile) / (1 + (set.bpp == 4)); + auto const cnt = (static_cast(s.tiles) * PixelsPerTile) >> bppMod; for (size_t i = 0; i < cnt; ++i) { - auto const srcIdx = static_cast(s.begin) + i * 2; + auto const begin = static_cast(s.begin) * (PixelsPerTile >> bppMod); + auto const srcIdx = begin + i * 2; auto const v = static_cast( static_cast(ts->pixels[srcIdx]) | (static_cast(ts->pixels[srcIdx + 1]) << 8)); tileMapTargetMem[tileWriteIdx + i] = v; } - tileWriteIdx += cnt; + tileWriteIdx += cnt >> bppMod; } } return {};