* Initial work on copy bypass optimization.
* Force depth stencil textures to be transient.
* Get rid of texture copying for shadow maps.
* Move barrier populate function.
* Set viewport/scissor rect explicitly for MSAA depth resolve.
* Implemented D-Pad support for World Map, Super Sonic (WIP) and Bobsleigh
* Implemented D-Pad support for Gaia Colossus and Super Sonic
* Improved touchpad sensitivity
* Map CSD structures by full path.
* Initial work for unstretching & aligning to edges.
* Add extend flag, fix cast lookups.
* Add right extend flag.
* Fill the flags map with a bunch of casts.
* Implement unstretching.
* Set more title casts to unscretch.
* Add some more flags.
* Move CSD patches to its own file.
* Replace CSD vertex shaders to get rid of pixel snapping.
* Snap to pixel on the CPU.
* Current work trying to get 3D screen position casts working correctly.
* Fix and properly align font, handle most 3D screen positions.
* Add stretch flags for background casts.
* Use 4:3 as the base aspect ratio instead of 16:9.
* Replicate the game's 4:3 downscaling behavior.
* World map now identical to original 4:3.
* Replace camera aspect ratio/field of view logic.
* Make original 4:3 scaling a separate option, use custom behavior for auto.
* Keep UI scale same only above Steam Deck aspect ratio.
* Release paths when the YNCP file gets freed.
* Add more path flags.
* Interpolate to original 4:3 scale.
* Scaling animation offset to prevent offscreen casts from showing up in ultrawide.
* Queue draw calls without actually executing anything to extract the corner.
* Clean unnecessary hooks.
* Add result screen modifiers.
* Stretch loading primitive 2D.
* Scale DoF correctly at different aspect ratios.
* Remove stretch option.
* Make aspect ratio a global variable.
* Ultrawide patch for HUD 3D items.
* Fix world map 3D to 2D projection.
* Right align world map info box.
* Set medal positions.
* Respect center option in more places.
* Implement the aspect ratio option.
* Use viewport dimensions for snapping CSD pixels.
* Fix DoF fix not using viewport height.
* Implement aspect ratio patches for 2D drop ring emitter.
* Implement inspire letterbox.
* Add cutscene aspect ratio option.
* Shift subtitles by aspect ratio.
* Fix crash in earth restoration cutscenes.
* Offset scale patches for Tornado Defense.
* Scale new record arrow casts.
* Expose aspect ratio variables globally.
* Properly center the achievements menu.
* 4:3 scaling for options menu.
* Fix procedural filtering logic in ImGui pixel shader.
* Fix button guide offset.
* UI scaling for installer.
* Remove grid snaps in the installer.
* Handle center UI scale option for rings going to HUD.
* Remove unnecessary diff.
* Revert temporary changes.
* Fix typo.
* Experimenting with syncing the render thread.
* Separate wait functions for swap chains.
* Sync render thread present to the main thread.
* Move present to main thread and frame limit after presenting.
* g_next -> s_next
* Fix Vulkan validation errors.
* Make max frame latency configurable.
* Fix loading thread breaking waitable swap chain order.
* Initial Linux attempt.
* Add clang toolchain & make tools compile.
* vcpkg as submodule.
* First implementation of IO rewrite. (#31)
* Fix directory iteration resolving symlinks.
* Refactor kernel objects to be lock-free.
* Implement guest critical sections using std::atomic.
* Make D3D12 support optional. (#33)
* Make D3D12 support optional.
* Update ShaderRecomp, fix macros.
* Replace QueryPerformanceCounter. (#35)
* Add Linux home path for GetUserPath(). (#36)
* Cross-platform Sleep. (#37)
* Add mmap implementations for virtual allocation. (#38)
* Cross-platform TLS. (#34)
* Cross-platform TLS.
* Fix front() to back(), use Mutex.
* Fix global variable namings.
---------
Co-authored-by: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com>
* Unicode support. (#39)
* Replace CreateDirectoryA with Unicode version.
* Cross platform thread implementation. (#41)
* Cross-platform thread implementation.
* Put set thread name calls behind a Win32 macro.
* Cross-platform semaphore implementation. (#43)
* xam: use SDL for keyboard input
* Cross-platform atomic operations. (#44)
* Cross-platform spin lock implementation.
* Cross-platform reference counting.
* Cross-platform event implementation. (#47)
* Compiling and running on Linux. (#49)
* Current work trying to get it to compile.
* Update vcpkg.json baseline.
* vcpkg, memory mapped file.
* Bitscan forward.
* Fix localtime_s.
* FPS patches high res clock.
* Rename Window to GameWindow. Fix guest pointers.
* GetCurrentThreadID gone.
* Code cache pointers, RenderWindow type.
* Add Linux stubs.
* Refactor Config.
* Fix paths.
* Add linux-release config.
* FS fixes.
* Fix Windows compilation errors & unicode converter crash.
* Rename physical memory allocation functions to not clash with X11.
* Fix NULL character being added on RtlMultiByteToUnicodeN.
* Use std::exit.
* Add protection to memory on Linux.
* Convert majority of dependencies to submodules. (#48)
* Convert majority of dependencies to submodules.
* Don't compile header-only libraries.
* Fix a few incorrect data types.
* Fix config directory.
* Unicode fixes & sizeof asserts.
* Change the exit function to not call static destructors.
* Fix files picker.
* Add RelWithDebInfo preset for Linux.
* Implement OS Restart on Linux. (#50)
---------
Co-authored-by: Dario <dariosamo@gmail.com>
* Update PowerRecomp.
* Add Env Var detection for VCPKG_ROOT, add DLC detection.
* Use error code version on DLC directory iterator.
* Set D3D12MA::ALLOCATOR_FLAG_DONT_PREFER_SMALL_BUFFERS_COMMITTED flag.
* Linux flatpak. (#51)
* Add flatpak support.
* Add game install directory override for flatpak.
* Flatpak'ing.
* Flatpak it some more.
* We flat it, we pak it.
* Flatpak'd.
* The Marvelous Misadventures of Flatpak.
* Attempt to change logic of NFD and show error.
* Flattenpakken.
* Use game install directory instead of current path.
* Attempt to fix line endings.
* Update io.github.hedge_dev.unleashedrecomp.json
* Fix system time query implementation.
* Add Present Wait to Vulkan to improve frame pacing and reduce latency. (#53)
* Add present wait support to Vulkan.
* Default to triple buffering if presentWait is supported.
* Bracey fellas.
* Update paths.h
* SDL2 audio (again). (#52)
* Implement SDL2 audio (again).
* Call timeBeginPeriod/timeEndPeriod.
* Replace miniaudio with SDL mixer.
* Queue audio samples in a separate thread.
* Enable CMake option override policy & fix compilation error.
* Fix compilation error on Linux.
* Fix but also trim shared strings.
* Wayland support. (#55)
* Make channel index a global variable in embedded player.
* Fix SDL Audio selection for OGG on Flatpak.
* Minor installer wizard fixes.
* Fix compilation error.
* Yield in model consumer and pipeline compiler threads.
* Special case Sleep(0) to yield on Linux.
* Add App Id hint.
* Correct implementation for auto reset events. (#57)
---------
Co-authored-by: Dario <dariosamo@gmail.com>
Co-authored-by: Hyper <34012267+hyperbx@users.noreply.github.com>
* Implemented guest-to-host function pointers (WIP)
Co-Authored-By: Skyth (Asilkan) <19259897+blueskythlikesclouds@users.noreply.github.com>
* function: support more types for function pointers
* Initial options menu implementation.
* Improve options menu visuals.
* Draw fade on borders, center tabs better.
* Adjust line sizes, fix tab text centering.
* Adjust padding & text sizes.
* Fix bar dark gradient effect.
* api: ported BlueBlur headers and misc. research
* Fix config name padding not getting scaled at different resolutions.
* config: use string_view, added method to get value pointer
* config: use std::map for reverse enum template
* Draw config options manually instead of looping through them.
* config: implemented name and enum localisation
* config_detail: move implementation to cpp, relocate sources
* Implemented accessing options menu via pause and title screen
* config: replace MSAA with AntiAliasing enum
* options_menu: implemented info panel and text marquee (see TODOs)
* Draw selection triangles.
* Supersample fonts to 2K.
* Implement options menu navigation.
* Fix duplicate triangles when selecting options.
* Draw scroll bar.
* Adjust scroll bar padding.
* Further scroll bar padding adjustments.
* Draw outer container as an outline.
* Improve marquee text scrolling.
* CTitleMenu: fix options menu re-entering on A press whilst visible
* Make procedural grid pattern more accurate.
* Add enum & bool editing.
* Update English localisation
* Fix input state mapping.
* options_menu: hide menu on Y hold
* CHudPause: fix crash when opening options menu from village/lab
* Implement float slider.
* options_menu: round res scale description resolution
* options_menu: use config callbacks after setting items
* api: fix GameObject layout
* camera_patches: implemented camera X/Y invert
* options_menu: fix buffered A press selecting first option upon entry
* config_locale: update description for Battle Music
* config: added Allow Background Input option
* options_menu: move ATOC option below Anti-Aliasing
* options_menu: only draw header/footer fade in stages
* Handle real-time modifications of some video config values.
* Converge increments only when holding the left/right button.
* Add sound effects to options menu.
* Change some sounds used in options menu.
* Give the final decide sound to bool toggling.
* Add option select animation.
* options_menu: only play slider sound between min/max range
* Apply category select animation.
* config: rename Controls category to Input
* Implement intro transition animation for options menu.
* audio_patches: implemented music volume
* Implement FPS slider.
* Prevent ImGui from displaying OS cursor.
* Fade container brackets during intro transition.
* player_patches: added penalty to Unleash Cancel
* config_locale: update English localisation
* player_patches: ensure Unleash gauge penalty doesn't dip into negatives
* options_menu: fix being unable to press A at least once after opening the menu
* CTitleMenu: added open/close sounds to the options menu
* audio_patches: implemented Music and SE volume
* api: update research
* Implemented music volume attenuation for Windows 10+
* api: fix score offset
* Add an interval between consecutive playbacks of the slider sound effect in fastIncrement mode
* config: implemented enum descriptions
* options_menu: fit thumbnail rect to grid, remove menu hide input
* options_menu: fix description wrap width
* camera_patches: fix FOV at narrow aspect ratios
mobile gaming is back on the menu
* options_menu: implemented greyed out options and localisation
* options_menu: allow providing reasons for greyed out options
* audio_patches: check if Windows version is supported
* Update PowerRecomp submodule
* api: more research
* options_menu: forget selected item upon opening
* options_menu: restrict XButtonHoming to title and world map
* window: always hide mouse cursor
The options menu doesn't accept mouse input, so there's not really any point to showing the cursor at all.
* Animate category tab background from the center.
* Fix clip rect in info panel not getting popped at all times.
* Expose texture loader in "video.h".
* config: use final names and descriptions, label options to be moved to exports
* options_menu: implemented Voice Language (and some misc. clean-up)
* Move Voice Language patch to resident_patches
* config: added Aspect Ratio option (to be implemented)
* options_menu: implemented Subtitles
* Remove triple buffering from options menu, turn it to an enum.
* window: hide mouse cursor on controller input for windowed mode
* window: show window dimensions on title bar when resizing window
* api: update research
* Accept functions directly in GuestToHostFunction & add memory range asserts.
* Add guest_stack_var, improve shared_ptr implementation.
* Handle float/double arguments properly in GuestToHostFunction.
* CHudPause_patches: allocate options strings on stack
* api: update research
* guest_stack_var: allow creation without constructing underlying type
* memory: make assertions lenient towards nullptr
* api: include guest_stack_var in SWA.inl
* audio_patches: don't worry about it
* Implemented achievement overlay (WIP)
* Implemented achievements menu (WIP)
* Clean-up, improved animation and layouts
* options_menu: fix naming convention
* achievements_overlay: implemented queue and hermite interpolation
* achievements_menu: implemented animations and improved navigation
* achievements_menu: improve animation accuracy
* achievements_menu: added timestamps
* achievement_data: added checksum and format verification
* achievement_menu: improved outro animation
* achievement_menu: added total unlocked achievements
* achievement_menu: update sprite animation
* Update resources submodule
* Add installer wizard.
* Skip drawing scanlines when height is 0.
* Tweak install screen to better match the original
* Added arrow circle to installer's header
* Move icon header generation to resources submodule
* Added missing animations and tweaked other ones for installer
* Improve detection for DLC only mode. Add template for message prompts.
* Add language picker.
* window: update icon resources
* Added file_to_c
* Fixes to conversion.
* Implemented message window
* achievement_menu: use selection cursor texture
* Update embedded resources
* Implemented message window
* Merge branch 'bin2c' into options-menu
* Update embedded resources
* Framework for max width for buttons.
* Update embedded resources
* Use textures for pause menu containers
* audio_patches: check if Windows major version is >=10
Just in case.
* installer_wizard: use integer outline for button text
* Added arrow circle spinning animation during installation screen
* achievement_menu: fix timestamp and scroll bar padding
* achievement_overlay: fix achievement name padding
* installer_wizard: fix arrow circle spinning animation misaligning
* Add Scale and Origin to ImGui shaders. Change text to be squashed.
* message_window: implemented mouse input
* installer_wizard: implemented message windows
* achievement_menu: start marquee before timestamp margin
* Fix message box flow.
* message_window: use pause container texture
* Add extra condition for starting the installer.
* message_window: only accept mouse click if option is selected
* Implemented safer way to check if the game is loaded
* Add queued update when using files pickers.
* installer_wizard: implement localisation
* installer_wizard: use enum for localisation
* message_window: fix visibility persisting after window closes
* Fix arrow circle animation and added pulse animation
* Come back check space.
* Implement ZSTD compression in file_to_c.
* Add fade-in/out to installation icons and sleep after hitting 100%
* Implement ImGui font atlas caching.
* Controller navigation.
* Implemented button guide
* CTitleStateMenu: fix start button opening old options menu
* Update resources submodule
* imgui_snapshot: check if game is loaded before accessing XDBF
* message_window: added button guide
* options_menu: increase button guide side margins
* video: disable imgui.ini creation
* Use IM_DELETE for deleting the existing font atlas.
* Remove redundant FlushViewport call.
* Fix ImGui callbacks leaking memory.
* Replace unique_ptr reference arguments with raw pointers.
* Specialize description for resolution scale by reference.
---------
Co-authored-by: Hyper <34012267+hyperbx@users.noreply.github.com>
Co-authored-by: PTKay <jp_moura99@outlook.com>
Co-authored-by: Dario <dariosamo@gmail.com>
* Specialization constant implementation for Vulkan.
* Implement DXIL library linking.
* Implement proper reverse Z & fix motion blur flicker.
* Mirage API mapping.
* Initial work for async PSO.
* Further async PSO work.
* Set pipeline names.
* Handle special layers writing depth.
* Handle bones in shadow pipeline.
* Fix additive mode setting wrong pipeline field.
* Pass models to compilation threads through shared pointers.
* Safety improvements.
* Allow DXIL linking to happen in parallel.
* Display more debug information.
* Queue unique models for compilation immediately.
* Put async PSO debug printing behind a macro.
* Kick off terrain models to pipeline compilation thread the moment they are made.
* Hook a different function to do waiting in.
* Fix pipelines getting dropped.
* Account for ConstTexCoord.
* Fix async PSO accounting for alpha to coverage even when MSAA is off.
* Remove "has bone" specialization constant.
* Sky shader compilation & more debugging helpers.
* Assign names to shaders during loading.
* Fix string symbol definitions.
* Print description of recently compiled render thread pipelines.
* Switch to an enum library that doesn't murder IntelliSense.
* Precompile pipelines for object icons.
* Skip fur pipelines.
* Skip printing info for pipelines compiled during loading.
* Precompile pipelines for Sonic's mouth, motion blur, and forced transparent objects.
* Precompile planar reflection shaders.
* Precompile sparkle shaders in loading screens.
* Precompile fur shader.
* Refactor model traversing to enqueue every single compilation to worker threads.
* Dynamically create pipeline threads depending on hardware concurrency.
* Fix MSAA depth resolve not accounting for reverse Z.
* Integrate smol-v.
* Implement PSO caching.
* Update ShaderRecomp & remove unused function.