All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- 3DS circle pad mapped to player movement (D-pad directions)
IBackend::updateCirclePad()virtual method (no-op on desktop)
- Game
romfs/directory for 3DS asset bundling - Replaced
throw std::runtime_errorwithonErrorinUveFileManagerfor-fno-exceptionscompatibility - Replaced
dynamic_castwithstatic_castinUveListOwnerfor RTTI-light builds - Guarded
SDL3_imageinclude andIMG_Load_IOon 3DS (BMP fallback viaSDL_LoadBMP_IO) - Skipped
tinyfiledialogson 3DS (no desktop file dialogs) - Fetch
devkitPro/SDLfork via FetchContent when SDL3 not installed
- SDL3 backend via
UVEDX_BACKENDCMake option (SFMLorSDL3) IBackendabstraction layer for rendering, audio, input and timerUveDX::Keyenum to replace SFML scancodes at API boundariesUveDX::Vec2portable vector typeSurface::drawRoundedRecthelper to encapsulate shape rendering- CMake presets for SDL3 builds (
linux-sdl3-debug,linux-sdl3-release, etc.)
- Refactored UveDX internals to use
IBackendinstead of SFML types directly UveDX::UveDX::windowreplaced bystd::unique_ptr<IBackend> backendSurfaceuses opaqueBackendTexture*instead ofsf::Texture*/sf::Sprite*SoundusesBackendAudioBuffer*/BackendAudioSource*instead of SFML typesUveTimeruses backend tick/sleep instead ofsf::Clock/sf::sleepUveInput::isKeyPressedtakesUveDX::Keyinstead ofsf::Keyboard::Scancode- Game layer no longer includes any SFML headers
- SDL3 texture loading: use
IMG_Load_IOto support PNG/JPEG, not just BMP - SDL3
drawSprite: pass source rectangle toSDL_RenderTexture - SDL3 audio: decode WAV via
SDL_LoadWAV_IOinstead of feeding raw bytes to stream - SDL3 audio: move
SDL_AudioStreamfrom buffer to source to prevent shared-buffer conflicts - SDL3
drawRoundedRect: implement proper arc rendering instead of plain rectangle - SDL3 API compatibility with SDL3 3.4 (
SDL_SeekIO,SDL_SetSurfaceColorKey,SDL_IOStream) Soundmethods: add null guards forsourcewhen audio device is not readyUveTimer: fixlastTick_initialization order with lazy init viaensureInitialized
- tinyfiledialogs build
- Discord Rich Presence build on Windows
- tinyfiledialogs build
UveDX::UveFileManager::createWADFilefunction to create.datassets file
- Some clang-tidy hints
- Bouncing DVD logo example
- UveDX custom window title
- Namespace
ColorandSurfaceAnchorType - Default parameters for
Surface::blit
- Fix a bug in
UveFileManager::openFilewhen not using packed assets file
- Abstract SFML Color and IntRect in headers
- Refactor UveDX into a separate compilation unit
- Rename some variables for clarity
- CMake SFML
- Missing
TileLayerentity in UveDX (used in Island Wars 1) - Missing
UveDX::boundsmember (used by TileLayer) - Missing
UveDX::setBackSurfaceClipRegionmethod
- Rename
Game::sub_40AAD8toGame::renderPauseOverlay
- Debug timings
- SFML FPS limit
- More "magic numbers" as constants
- Switch
ExplosionandSmokeparticles from dynamic C-style arrays tostd::arrayofParticle
UveDX::showErrorstring
random_rangefunction to replacerandom % max + minAsteroidTypeenum
- Reverse engineer more members and variables
- Missiles angle computation
- Reverse engineer the missing members from
Font,SurfaceandSprite - Use
std::clampinstead of manual clamping - Various code simplification
- Make MSVC compile
- clang format
- All compilation warnings
- Rename
bounding_boxtoBoundaryBouncer - Switch
GameControllerC-style arrays tostd::array - Remove
externin favor ofinline
- Fix pseudo writing in
GameController::saveScoresFile - Close button now terminates the application
- First working version of the game