CI / ${{ matrix.name }} (false, -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0, false, false, Visual Studio 18 2026, true, Xbox One, windows-latest, amd64, false, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake, false, devkitpro/devkitarm:latest, false, Ninja, true, Nintendo 3DS, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake, false, devkitpro/devkita64:latest, false, Ninja, Nintendo Switch, true, ubuntu-latest, true) (push) Waiting to run
* Rescale save-loaded textures to runtime texture dimensions
`LegoTextureInfo::LoadBits` sized its memcpy from the destination
DirectDraw surface and assumed the source bits matched. They don't
when the save was made under a different renderer than the current
one: HW mode squares non-square assets in `LegoImage::Read` (e.g.
128x32 -> 128x128 via row duplication), SW mode keeps the original
dimensions, and `ReadNamedTexture` always loads with `p_square=0`,
so saved bits keep whatever size they had at save time. SW save
loaded under HW caused an OOB read in `LoadBits`; HW save loaded
under SW silently truncated the source and rendered a distorted
texture.
Add `LegoImage::Resize(width, height)` (nearest-neighbor, handles
both up- and down-scale) and call it in `LoadFromNamedTexture` to
match the runtime `LegoTextureInfo` surface dimensions before
binding. Save format unchanged; `LoadBits` signature unchanged.
Square textures and matching-mode loads short-circuit on the
fast-path.
* ci: bump Android SDL3 download + Xbox One generator for VS 18
- Android: SDL3's `build-release.py` started requiring `download`
before `android` so it can fetch the new gameinput dependency.
(build-release.py is technically internal SDL tooling; longer-term
we may want to invoke a different SDL3 build entry point.)
- Xbox One: windows-latest now ships VS 18, so the
`Visual Studio 17 2022` generator can no longer find a VS install.
Bump to `Visual Studio 18 2026`.
* Texture pixel data is passed through as const data
* Use SDL_Surface/SDL_Palette in LegoImage
* Use SDL_Process to run subprocess
* Pass SDL_Window handle to SDL_ShowSimpleMessageBox
this makes sure the message dialog is shown as modal dialog and is on top
* Log errors during initialization
* Show SDL error during initialization
* Include <climits> for INT_MAX
* Replace _access with SDL_GetPathInfo
* Use SDL_RemovePath instead of DeleteFile
* Use SDL_RenamePath instead of MoveFile
* Use MxS32 in legoutils.cpp
* Update LEGO1/lego/legoomni/src/common/legoutils.cpp
* Naming
---------
Co-authored-by: Christian Semmler <mail@csemmler.com>