Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
295 commits
Select commit Hold shift + click to select a range
461a651
Revert "fix: small stick fix (#441)"
May 21, 2026
8ffe1c8
fix: automatically apply installed driver from setup wizard (#446)
Xnick417x May 21, 2026
40b0f4e
fix: persist manual pause state and remove auto-pause on background (…
Xnick417x May 21, 2026
afcef3c
fix: Wine CFG reset and force native dinput8/xinput overrides (#444)
Xnick417x May 22, 2026
3e296fe
A contribution to pr 447 (#448)
Xnick417x May 22, 2026
b686575
Small bug fix (#450)
Xnick417x May 22, 2026
b0e0dfc
Update fps profile (#451)
Xnick417x May 22, 2026
922e4e8
Harden Steam downloads (#449)
May 22, 2026
0fde116
Improve PulseAudio playback stability (#453)
May 23, 2026
42fb71a
feat(HUD): Frametime as number (#452)
May 23, 2026
77d1b60
Remove config import export (#454)
May 23, 2026
c0f2a78
Remove Google backup features (#455)
May 23, 2026
a0eb76f
fix: Epic Game Downloads and Cloud Saves (#457)
May 23, 2026
835ea0c
fix: Epic container swap launch and cloud sync (#458)
May 23, 2026
1395b61
fix: resolve mouse freezing after app backgrounding (#459)
Xnick417x May 24, 2026
11eeb3b
Improve GOG downloads and cloud saves (#460)
May 24, 2026
9aea044
feat: Cache library artwork (#461)
May 24, 2026
fb1aa3c
fix: Library artwork selection UI (#463)
May 24, 2026
0cf153b
Feat: Move manual save method container wide (#456)
Xnick417x May 24, 2026
8fc80eb
feat: Add Russian translations (#465)
May 24, 2026
14347c7
feat: Add Hindi Translations (#466)
May 24, 2026
d192372
chore: Clean up Gradle dependencies (#467)
May 25, 2026
3edbc80
feat: Add library immersive mode (#469)
May 25, 2026
211f113
chore: Update system bar transparency and store subtitles (#470)
May 25, 2026
9dc65f1
feat: Add immersive background blur setting (#471)
May 25, 2026
30a8fda
UI: Smooth chasing border corners (#472)
May 25, 2026
1034ef7
UI: Use 8px immersive background blur (#473)
May 25, 2026
b61236f
UI: Unify settings popup dialogs (#474)
May 25, 2026
ba9015b
UI: Adjust carousel visuals (#476)
May 25, 2026
b0e132f
feat: Added Ajay Prefix Pro Downloader to Start Menu/Programs (#475)
ajay9634 May 25, 2026
1557676
UI: Refine Play and Download buttons (#477)
May 25, 2026
844c320
chore: Update dependencies and release fixes (#468)
May 25, 2026
c2bb5dc
chore: Remove unneeded dependency (#478)
May 25, 2026
acf825e
Add 'Templates' to excluded folders in save export (#479)
Xnick417x May 25, 2026
3977ee7
Allow Direct3D WinComponents on ARM64EC (#481)
May 26, 2026
4e299f5
chore: Cleanup files (#482)
May 26, 2026
17b3eea
feat: New Steam rust client + other changes/fixes
maxjivi05 May 29, 2026
8321a7b
fix: Steam client double launch bug (#484)
May 29, 2026
6969c4f
Always enable native rendering and improve artwork caching (#485)
May 29, 2026
2ebfe71
Official proton badge (#486)
maxjivi05 May 29, 2026
bf716e4
UI: Refresh game loading screen (#488)
May 30, 2026
999a6b6
Improve absolute framerate pacing (#487)
May 30, 2026
81739df
fix: register L2/R2 triggers on button-only gamepads (#490)
May 30, 2026
83292fe
Improve FPS limiter refresh-rate handling (#494)
May 30, 2026
6464176
chore: Add DXVK timeline semaphore toggle (#495)
May 30, 2026
b42fb72
fix: Fake input controller recovery (#492)
May 30, 2026
b0f4336
fix: Wine controller variables (#489)
May 30, 2026
4f9f629
Fix: Steam Save Download/Conflict (#493)
maxjivi05 May 30, 2026
55d1658
fix: Reduce Vulkan/render churn and harden input state handling (#496)
Jun 1, 2026
ec2dc76
Updated Ajay Prefix Pro Downloader to v1.1 (#497)
ajay9634 Jun 1, 2026
f96357e
i18n + comment cleanup for Steam Save Download/Conflict (#493) (#498)
maxjivi05 Jun 1, 2026
2671b5c
UI: Update in-game HUD (#499)
Jun 1, 2026
d2d2682
UI: Update Per-Game Cloud Saves (#500)
Jun 2, 2026
808aad4
chore: Tune Box64 dynarec preset (#501)
Jun 2, 2026
87981cd
chore: Update debug logging (#502)
Jun 2, 2026
ff6f8fe
UI: Update game settings layout (#503)
Jun 3, 2026
88ef060
fix: Vibrations (#506)
maxjivi05 Jun 3, 2026
e3c4e26
fix: vibrations thread fix (#508)
maxjivi05 Jun 3, 2026
3108610
fix(steam): launch user-overridden exe directly, skip Steam LaunchApp…
maxjivi05 Jun 3, 2026
df71861
Trackpad: fix Trackpad when bound to Gamepad bindings. (#510)
Xnick417x Jun 4, 2026
6b58e19
Clean up some redundant code. (#513)
Xnick417x Jun 4, 2026
cd23bf8
Default DXVK to newest installed version on manual container create (…
Xnick417x Jun 4, 2026
57ff388
X server menu resize (#512)
Xnick417x Jun 4, 2026
9786796
Feature/vibration driver review (#361)
s1mptom Jun 4, 2026
618e063
Add Refactor Size drawer toggle (#515)
Xnick417x Jun 4, 2026
55b531d
Stage refactorsize helper in existing C:\WinNative folder (#517)
Xnick417x Jun 5, 2026
770e7a9
C/m fix (#505)
Xnick417x Jun 6, 2026
cc65491
Background audio fix (#516)
Xnick417x Jun 6, 2026
034c320
fix: gyro (#511)
maxjivi05 Jun 6, 2026
d1c7ff9
Fix Steam launch on non-standard flavors: use app filesDir for wine d…
maxjivi05 Jun 6, 2026
ea3b3d1
fix: stop input control profile overlay flashing on boot slide-in (#521)
Xnick417x Jun 6, 2026
be4cb39
XServer drawer Controls: descale pane (#522)
Xnick417x Jun 6, 2026
d61596f
Fix trackpad spinning and input drops during trackpad+button use (#519)
Xnick417x Jun 6, 2026
eb60f64
Color hud (#524)
Xnick417x Jun 6, 2026
a2226e6
Use WinNative logo as notification small icon (store + keep-alive) (#…
Xnick417x Jun 6, 2026
6797821
HUD: enable backdrop by default on first launch (#526)
Xnick417x Jun 6, 2026
97a6a41
Refactor the refactorsize.exe (#527)
Xnick417x Jun 7, 2026
3460ed0
Refine setup wizard (#528)
Xnick417x Jun 7, 2026
84def43
HUD: backdrop alpha control. (#529)
Xnick417x Jun 8, 2026
293747b
fix: exclude symlinks from container storage size (#531)
Xnick417x Jun 8, 2026
f7c74de
fix: move Logs drawer card to end of menu after Tasks (#532)
Xnick417x Jun 8, 2026
3d342ea
Stop forcing xinput variables per container launch (#539)
Xnick417x Jun 10, 2026
309dcc7
Stop forcing VKD3D_SHADER_MODEL (#535)
Xnick417x Jun 10, 2026
0af9711
fix: Swizzle AHB GPUImages red and blue channels when BGRA8 is expect…
gabrielformiga Jun 10, 2026
830008b
Reword import-saves confirmation dialog (#541)
Xnick417x Jun 10, 2026
916db9b
fix: skip C: drive symlink for custom games (#544)
Xnick417x Jun 11, 2026
7f2fc5a
Resize xserver menu drawer; fill menu cards to height (#543)
Xnick417x Jun 11, 2026
ca43662
Settings: rename 2 strings in other settings (#546)
Xnick417x Jun 13, 2026
a9d3dd6
Add D7VK as an importable ddraw wrapper content type (#548)
Xnick417x Jun 14, 2026
2875f6a
Preserve d3d10/d3d10_1/d3d8/d3dimm builtins from DXVK pre-extract wip…
Xnick417x Jun 16, 2026
1b10f55
update wrapper (#552)
Xnick417x Jun 16, 2026
9360f6e
Auto-hide touchscreen controls when a controller is connected (#550)
Xnick417x Jun 16, 2026
f71d025
feat: Extend Fx tab with more effects (#547)
Xnick417x Jun 16, 2026
7bf2624
Feat: frontend support (#551)
Xnick417x Jun 17, 2026
9934653
Update README.md (#555)
Xnick417x Jun 17, 2026
cd4a4d6
update Box64 environment variables (#556)
Xnick417x Jun 17, 2026
75ff41d
Expand hero buttons: Boot to Desktop / Graphics test now avaliable. (…
Xnick417x Jun 17, 2026
636e8f1
feat: Touch controls refinement (#534)
Xnick417x Jun 18, 2026
f51d373
fix: Z drive boot and shortcut creation (#557)
Xnick417x Jun 18, 2026
cf0390f
fix: stop forcing drive creation every boot (#562)
Xnick417x Jun 18, 2026
0a3c4b9
Fix: adjust glass control opacity slider (#559)
Xnick417x Jun 18, 2026
5b845e1
feat: Fx effects per shortcut (#563)
Xnick417x Jun 18, 2026
179e54a
Default BCn emulation to auto (#558)
Xnick417x Jun 19, 2026
f794288
Added Ajay Prefix Pro v1.8 Downloader (#565)
ajay9634 Jun 19, 2026
55b5ff8
Feat: Install Components per container via a list (#566)
Xnick417x Jun 19, 2026
3df86b3
Add Wrapper-Leegao graphics driver option (#567)
Xnick417x Jun 19, 2026
95c8070
Bug fixes (#561)
maxjivi05 Jun 19, 2026
381b54f
Add: add missing translation to some strings (#568)
Xnick417x Jun 19, 2026
35f19e0
Fix setup wizard ui / add queued downloads. (#569)
Xnick417x Jun 20, 2026
533db0b
Log UI: add a download button in logs (#570)
Xnick417x Jun 20, 2026
4a316a3
Library ui overhaul + custom file manager. (#572)
Xnick417x Jun 21, 2026
8ef1d9f
Background UI in settings (#571)
Xnick417x Jun 21, 2026
c377050
fix: steam downloads (#542)
maxjivi05 Jun 22, 2026
d9a674f
Updated Ajay Prefix Pro v1.8 Downloader (#575)
ajay9634 Jun 22, 2026
50afc87
Fix off-center shadow artifact on library top-bar icon buttons (#576)
Xnick417x Jun 22, 2026
6cfd5ed
Audio: fix crackling via larger output buffers (#574)
Xnick417x Jun 23, 2026
eaa4640
Fix Native extraction IO (#577)
Xnick417x Jun 23, 2026
a30da22
Harden Cloud Saves (#560)
maxjivi05 Jun 27, 2026
8824791
feat: viture-glasses/external monitor (#536)
maxjivi05 Jun 27, 2026
c1fb4f3
feat: Direct Composition zero-copy path via ASurfaceControl + HWC ove…
Jun 27, 2026
d721771
fix: shortcut persistence + HUD indicator + diagnostic logging for Di…
Jun 27, 2026
d781226
fix: remove isDirectScanout gate + add throttled diagnostic logging f…
Jun 27, 2026
9ec2ec7
feat: vsync pacing via ASurfaceTransaction_setOnComplete (CPU/battery…
Jun 27, 2026
1341429
Merge pull request #1 from Vower2993/direct-composition-port
Vower2993 Jun 27, 2026
4187f12
feat: ADPF + hardware fence sync for DC — CPU boost + zero-poll frame…
Jun 28, 2026
0076fa5
chore: trigger CI
Jun 28, 2026
243c4da
chore: trigger CI for dc-adpf-fence branch
Jun 28, 2026
d06bd23
fix: remove junk line
Jun 28, 2026
3144f0a
merge: resolve conflicts, keep DC + ADPF + fence version
Jun 28, 2026
fa40ea7
fix: remove invalid SUSTAINED_PERFORMANCE_MODE wakelock constant
Jun 28, 2026
2c5032c
fix: FD leak — drain unconsumed fence FDs on DC fallback paths
Jun 28, 2026
48a46ad
fix: volatile dcLayerActive + hide on detach — dynamic DC indicator
Jun 28, 2026
6e8c0c3
feat: new steam features (WIP) (#520)
maxjivi05 Jun 29, 2026
1a3b4ee
feat: steps 3-5 — graphics preset reset, hardware pacing, Xiaomi zero…
Jun 29, 2026
a28acc7
perf: smoothed ADPF — rolling average + headroom bias + throttled rep…
Jun 29, 2026
57ff44f
feat: atomic submission gate — structural hardware pacing handshake
Jun 29, 2026
96abcd9
fix: skip nativeRenderFrame when no new content — eliminates 100% CPU…
Jun 29, 2026
81de88e
feat: event-driven render loop — decouple from Choreographer, strict …
Jun 29, 2026
c34dc9e
feat: frame floor pacing + input-driven cursor wake
Jun 29, 2026
9c5f8b8
chore: trigger CI
Jun 29, 2026
148e36a
fix: condvar wait + coalescing fix + input throttle — eliminate 100% CPU
Jun 29, 2026
c443ef0
feat: pure hardware fence sync + lockless input — final render loop r…
Jun 29, 2026
d065254
merge: sync upstream main, keep DC version of XServerDisplayActivity
Jun 29, 2026
08def53
fix: take upstream XServerDisplayActivity, re-apply DC lifecycle methods
Jun 29, 2026
3924e41
External display: gate auto-output behind a toggle (default off; Vitu…
maxjivi05 Jun 29, 2026
536dba6
Merge branch 'main' into dc-adpf-fence
maxjivi05 Jun 29, 2026
f94d672
DC: fix NPE races, soft-boot release wait, device gating, and render …
maxjivi05 Jun 29, 2026
57ee468
DC: fix container/shortcut settings persistence
maxjivi05 Jun 29, 2026
4f062a8
DC: single-path fullscreen gating with hysteresis; keep recording whi…
maxjivi05 Jun 29, 2026
e3fd994
DC: decide before scene loop and skip Vulkan import of the game buffe…
maxjivi05 Jun 30, 2026
440bbd5
DC: revert release path to immediate ASurfaceControl_release (RedMagi…
maxjivi05 Jun 30, 2026
d136e9e
Move filter button to bottom-left and swap Files for Glasses when Vit…
maxjivi05 Jun 30, 2026
e489fbf
Merge branch 'main' into dc-adpf-fence
maxjivi05 Jun 30, 2026
5db597c
Feat: Handheld support/in app gamepad control (#579)
Xnick417x Jul 1, 2026
1d58bad
Fix: Logging - application log now works correctly (#578)
Xnick417x Jul 1, 2026
4346131
Merge remote-tracking branch 'upstream/main' into pr584-update
maxjivi05 Jul 1, 2026
44e0207
DC: remove device soft-boot blocklist; gate on per-container toggle
maxjivi05 Jul 1, 2026
e954fba
DC: translate Direct Composition label to all locales; drop unused st…
maxjivi05 Jul 1, 2026
8c4e437
Touch controls: remember selected profile per shortcut instead of glo…
Xnick417x Jul 2, 2026
ad820b1
HUD: add C.TMP - CPU-temperature element and rename battery temp to B…
Xnick417x Jul 2, 2026
bbbbadc
Remove redundant wine channels (log) Gate chat head to background tog…
Xnick417x Jul 2, 2026
9ee4df9
Fix: FPS cap by aligning frame pacing to the vsync grid (#587)
Xnick417x Jul 2, 2026
7c01a2b
Fix black-box flash on newly mapped windows (#589)
maxjivi05 Jul 2, 2026
b76b30a
Fix: container boot crash on API <33 (#594)
Xnick417x Jul 2, 2026
f046027
Exe picker: accept .bat and .cmd files (#595)
Xnick417x Jul 3, 2026
3ff6189
Pulseaudio fixes (#588)
maxjivi05 Jul 3, 2026
f096163
Fix: file picker tap highlights file instead of auto-confirming (#599)
Xnick417x Jul 6, 2026
47e4e8d
Add dinput8 Native/Builtin component toggle (#596)
Xnick417x Jul 6, 2026
48fe6b9
feat: added support for UnixLibs ( FEX-Emu ) (#597)
maxjivi05 Jul 7, 2026
cb82f2b
Fix HTTP 403 on GOG chunk downloads (#604)
muazkadan Jul 9, 2026
8c03518
Fix Steam library not refreshing after game exit (#605)
maxjivi05 Jul 9, 2026
5f5a534
Add ffmpeg libs for winedmo (#606)
Xnick417x Jul 9, 2026
1af08f0
Add Wrapper-Gamenative graphics driver option (#602)
Xnick417x Jul 9, 2026
d6ee592
Input ring: fix overflows and random drops along with xservermenu rea…
Xnick417x Jul 9, 2026
45ce01d
Fix: restore mouse and controls after background-session reattach (#593)
Xnick417x Jul 9, 2026
38d5a0a
Fix Steam cloud save container targeting and exit-sync conflict handl…
maxjivi05 Jul 10, 2026
b2e9fae
Fixing pr 575, updating Ajay Prefix Pro Downloader (#607)
ajay9634 Jul 11, 2026
f75741f
Fix component install sessions and store mono/gecko auto-install (#610)
Xnick417x Jul 11, 2026
9307999
Fix CPU spike from library immersive mode blur (#613)
Xnick417x Jul 11, 2026
8c2cf3c
Fix slow, choppy mouse at 60Hz refresh rate (#611)
Xnick417x Jul 11, 2026
315ac71
Fix library showing every Steam game as installed (#612)
Xnick417x Jul 12, 2026
4d3ea2f
Resize xservermenu (#615)
Xnick417x Jul 12, 2026
00a96fe
feat: steam dlc manifest gen , game language gui for steam game , Dow…
TWCM Jul 12, 2026
01ca37c
Fix HUD CPU usage: measure /proc/stat load instead of clock-frequency…
Xnick417x Jul 12, 2026
b144e49
Add UI translations for 8 more languages (#616)
Xnick417x Jul 12, 2026
b722376
Fix import save zips. (#617)
Xnick417x Jul 12, 2026
fc5023c
Add WINE_FAST_YIELD as a selectable env var, defaulting to 1 on selec…
Xnick417x Jul 12, 2026
3071a4a
Components page: run scans off the UI thread, batch size refreshes, a…
Xnick417x Jul 12, 2026
7e41da1
Skip FPS HUD per-frame recording when the HUD is hidden (#620)
Xnick417x Jul 13, 2026
be353f4
Fix Steam download failures and dead Retry/Resume (#623)
maxjivi05 Jul 13, 2026
999296f
Timestamp saved application logs so copies don't overwritten (#621)
Xnick417x Jul 13, 2026
d6f9a14
Update Wrapper-Gamenative driver binary (#625)
Xnick417x Jul 14, 2026
c1b9ca4
Merge remote-tracking branch 'upstream/main' into dc-adpf-fence
maxjivi05 Jul 14, 2026
891c9ae
DC: reject buffers without COMPOSER_OVERLAY usage before SurfaceFling…
maxjivi05 Jul 14, 2026
6583bec
Remove leftover choreographer callback fields after merge
maxjivi05 Jul 14, 2026
e711d88
Add optional Steam chat service toggle to chat settings (#628)
Xnick417x Jul 14, 2026
c8bb7b4
Update wrapper driver: allocate swapchain buffers with COMPOSER_OVERL…
maxjivi05 Jul 14, 2026
d36c120
Merge branch 'main' into dc-adpf-fence
maxjivi05 Jul 14, 2026
41ecb9c
Update touch controls draw (#626)
Xnick417x Jul 15, 2026
e79fa4a
Fix FPS limiter: stop treating the refresh rate as a frame cap (#633)
Xnick417x Jul 15, 2026
0682f90
Steam: record a durable install path so games stay recognized (#632)
Xnick417x Jul 15, 2026
2c873da
Add: searching game name in steamgriddb (#634)
SadMoment Jul 16, 2026
bcbdee7
Reorganize app files (#630)
Xnick417x Jul 16, 2026
b86161a
CI: align build with shared cache; add antunu flavor (#635)
Xnick417x Jul 16, 2026
238718f
Fix FPS HUD showing the panel rate instead of true game FPS (#643)
Xnick417x Jul 17, 2026
9146dc7
Adopt Brunos new xaudio stack (#640)
Xnick417x Jul 17, 2026
bb8caf8
Fix aggressive services (#638)
Xnick417x Jul 17, 2026
bc1b367
Yet another app log fix (#637)
Xnick417x Jul 17, 2026
16ab27b
Fix antutu flavor (#645)
Xnick417x Jul 17, 2026
a5d7b13
Dispatch all control binding slots, add reverse-order toggle (#641)
Xnick417x Jul 18, 2026
ad5b0a8
Add container-level display refresh rate setting (#642)
Xnick417x Jul 18, 2026
ca1d089
Fix surface effect setting lost on container creation and ignored (#…
Xnick417x Jul 18, 2026
b21777f
New fps limiter. (#646)
Xnick417x Jul 19, 2026
45b1d8a
Feature: Add artwork scraper for custom games (#639)
SadMoment Jul 20, 2026
87227ba
Potatloupe (#648)
Xnick417x Jul 20, 2026
7292186
Pin services to small cores + pr647 (32bit fix) (#649)
Xnick417x Jul 20, 2026
616efec
Remove the hairline left by the closed drawer sheet (#651)
Xnick417x Jul 21, 2026
051a4b3
Make potatoe a little narrower (#652)
Xnick417x Jul 21, 2026
65a6907
Update Wrapper-Gamenative driver binary (#653)
Xnick417x Jul 21, 2026
71e0594
Fix duplicated containers failing to boot (#654)
Xnick417x Jul 21, 2026
c12fa5f
Open gl on Arm64 fix (#655)
Xnick417x Jul 21, 2026
6785c8a
Draw Lumina range button as a pill instead of a giant circle (#658)
Xnick417x Jul 22, 2026
e16ec81
ReShade: drop-in effects, in-app catalog, multi-effect loadouts + liv…
The412Banner Jul 24, 2026
953a9e9
HUD: fix Zink Naming (#657)
Xnick417x Jul 24, 2026
926911b
Fix tapping the Add Custom Game name field not opening the keyboard (…
Xnick417x Jul 24, 2026
a4428f5
Add Unix/Windows Zink mode toggle for arm64ec (container + shortcut) …
Xnick417x Jul 24, 2026
15dddca
Combo button swipes. (#659)
Xnick417x Jul 25, 2026
a538e09
Add the missing virtual channel to the wine debug channel list (#663)
Xnick417x Jul 25, 2026
9d63076
File manager: multi-select for batch copy/cut/delete (#664)
Xnick417x Jul 25, 2026
8bf38b4
Update graphics wrapper: to pipetto-cypto's latest (#662)
Xnick417x Jul 26, 2026
ab3251d
Fix graphics driver selection on Polish and Hindi locales (#668)
Xnick417x Jul 26, 2026
ee94798
Add Vulkan 1.4 to the graphics driver version list and default to it …
Xnick417x Jul 27, 2026
602bc87
Add more fex presets fix pan_nave in advance tab (#670)
Xnick417x Jul 27, 2026
f125f19
Run .msi, .bat and .cmd from the exe pickers and file manager (#671)
Xnick417x Jul 28, 2026
9ce067a
Gyro mouse: allow mouse and keyboard bindings as the hold/toggle acti…
Xnick417x Jul 28, 2026
3495004
Fix Lumina D-pad chevrons pointing inward (#673)
Xnick417x Jul 28, 2026
b5d7f0a
Fix tap to click not suppressing all finger clicks (#675)
Xnick417x Jul 30, 2026
5861390
Fix custom mapping drive container (#674)
Xnick417x Jul 31, 2026
9755b45
Remove snapping grid from control editor. Free drag motion. (#677)
Xnick417x Aug 1, 2026
b488c9c
Add 32/64-bit input test to the hero boot popup and Start Menu (#676)
Xnick417x Aug 1, 2026
e52c228
Retro console emulation: libretro, PS2, GameCube and a 3D Gen 1 engin…
maxjivi05 Aug 1, 2026
22161a0
Retro Consoles - Consolidate (#679)
maxjivi05 Aug 2, 2026
ba5898d
Merge upstream/main into test-branch (248 commits)
maxjivi05 Aug 3, 2026
37ee628
Merge upstream PR #584: Direct Composition ported to VulkanRenderer
maxjivi05 Aug 3, 2026
0cdc3d4
fix: drop duplicate directComposition state left by the PR #584 merge
maxjivi05 Aug 3, 2026
e472ed8
fix(dc): cross-device correctness and crash-safety fixes
maxjivi05 Aug 3, 2026
e6dde58
feat(dc): move the Direct Composition toggle into Graphics as a "DC" …
maxjivi05 Aug 3, 2026
892f80b
feat(dc): darker green "+ DC" badge on the Performance HUD
maxjivi05 Aug 3, 2026
e83e6b7
refactor(dc): trim verbose comments across the Direct Composition code
maxjivi05 Aug 3, 2026
5865154
a11y(dc): give the DC chip an accessible name
maxjivi05 Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
*.txz filter=lfs diff=lfs merge=lfs -text
app/src/main/assets/imagefs.tzst filter=lfs diff=lfs merge=lfs -text
app/src/main/assets/imagefs.part*.tzst filter=lfs diff=lfs merge=lfs -text
reference/tooling/jadx.zip filter=lfs diff=lfs merge=lfs -text
reference/tooling/jadx/lib/jadx-1.5.3-all.jar filter=lfs diff=lfs merge=lfs -text
28 changes: 25 additions & 3 deletions .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ jobs:
artifactName: apk-pubg
gradleTask: assemblePubgDebug
apkPath: app/build/outputs/apk/pubg/debug/pubg.apk
- name: Antutu
artifactName: apk-antutu
gradleTask: assembleAntutuDebug
apkPath: app/build/outputs/apk/antutu/debug/antutu.apk

steps:
- name: Clone repository
Expand All @@ -63,22 +67,37 @@ jobs:
path: |
app/.cxx
app/build/intermediates/cxx
key: ndk-${{ matrix.flavor.name }}-${{ hashFiles('app/src/main/cpp/**', 'app/build.gradle', 'app/src/main/cpp/CMakeLists.txt') }}
key: ndk-${{ hashFiles('app/src/main/cpp/**', 'app/build.gradle', 'app/src/main/cpp/CMakeLists.txt') }}
restore-keys: |
ndk-${{ matrix.flavor.name }}-
ndk-

# Cargo target dir + registry sit outside the NDK cache paths; a cold Rust build dominates job time.
- name: Cache Rust Steam client
uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
app/src/main/cpp/wn-steam-client/rust/target
key: cargo-${{ hashFiles('app/src/main/cpp/wn-steam-client/rust/Cargo.lock') }}
restore-keys: cargo-

- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'

- name: Install Rust Android target
run: rustup target add aarch64-linux-android

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v6
with:
validate-wrappers: true
cache-cleanup: 'on-success'
# PRs restore the Gradle cache read-only; only main pushes write it.
cache-read-only: ${{ github.event_name == 'pull_request' }}

- name: Decode keystore and build
timeout-minutes: 15
Expand Down Expand Up @@ -141,6 +160,8 @@ jobs:
path: artifacts/${{ matrix.flavor.artifactName }}/*.apk
retention-days: 7
if-no-files-found: error
# APK contents are already compressed; deflating ~560MB again wastes CPU.
compression-level: 0

cleanup-caches:
needs: build
Expand All @@ -155,7 +176,8 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh cache list --repo "$GITHUB_REPOSITORY" --json id,key,createdAt --limit 100 |
# Dedupe only main-scope caches so a newer PR-scoped twin can't get main's copy deleted.
gh cache list --repo "$GITHUB_REPOSITORY" --ref refs/heads/main --json id,key,createdAt --limit 100 |
jq -r '
group_by(.key | sub("-[a-f0-9]{20,}$"; ""))
| .[]
Expand Down
51 changes: 43 additions & 8 deletions .github/workflows/pr-release-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ on:
- completed

concurrency:
group: pr-release-${{ github.event.workflow_run.id }}
# Serialize publishes of the same PR branch; per-run-id groups let them race each other.
group: pr-release-${{ github.event.workflow_run.head_repository.full_name }}-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: false

jobs:
Expand Down Expand Up @@ -84,9 +85,11 @@ jobs:
echo "standard=WinNative-Debug-Standard-${label}.apk"
echo "ludashi=WinNative-Debug-Ludashi-${label}.apk"
echo "pubg=WinNative-Debug-Pubg-${label}.apk"
echo "antutu=WinNative-Debug-Antutu-${label}.apk"
echo "release_standard=WinNative-Debug-Standard-${release_label}.apk"
echo "release_ludashi=WinNative-Debug-Ludashi-${release_label}.apk"
echo "release_pubg=WinNative-Debug-Pubg-${release_label}.apk"
echo "release_antutu=WinNative-Debug-Antutu-${release_label}.apk"
} >> "$GITHUB_OUTPUT"

- name: Download PR build artifacts
Expand All @@ -95,9 +98,15 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir -p artifacts
gh run download "$RUN_ID" --repo "$SOURCE_REPO" --name apk-standard --dir artifacts/standard
gh run download "$RUN_ID" --repo "$SOURCE_REPO" --name apk-ludashi --dir artifacts/ludashi
gh run download "$RUN_ID" --repo "$SOURCE_REPO" --name apk-pubg --dir artifacts/pubg
# Download all flavors in parallel; the sequential form left the runner's network idle per transfer.
pids=()
for flavor in standard ludashi pubg antutu; do
gh run download "$RUN_ID" --repo "$SOURCE_REPO" --name "apk-$flavor" --dir "artifacts/$flavor" &
pids+=($!)
done
for pid in "${pids[@]}"; do
wait "$pid"
done

- name: Build release notes from PR metadata
if: ${{ steps.scope.outputs.allowed == 'true' }}
Expand Down Expand Up @@ -127,6 +136,7 @@ jobs:
{
printf '# PR #%s\n\n' "$PR_NUMBER"
printf 'Title: %s\n\n' "$safe_title"
printf 'Author: @%s\n\n' "$pr_author"
printf 'Source PR: %s\n' "$pr_url"
printf 'Source branch: %s\n' "$head_ref"
printf 'Source commit: `%s`\n' "$HEAD_SHA"
Expand All @@ -141,6 +151,7 @@ jobs:
printf -- '%s\n' "- ${{ steps.apk.outputs.release_standard }}"
printf -- '%s\n' "- ${{ steps.apk.outputs.release_ludashi }}"
printf -- '%s\n' "- ${{ steps.apk.outputs.release_pubg }}"
printf -- '%s\n' "- ${{ steps.apk.outputs.release_antutu }}"
printf '\nBuilt from source commit `%s`.\n' "$short_sha"
} > release-notes.md

Expand All @@ -158,9 +169,20 @@ jobs:
discord_marker='<!-- discord-posted -->'
discord_posted=false

if gh release view "$tag" --repo "$TARGET_REPO" >/dev/null 2>&1; then
# A transient API error must not be read as "release doesn't exist" — that ends in
# a create over an existing tag (HTTP 422).
if view_out=$(gh api "repos/$TARGET_REPO/releases/tags/$tag" 2>&1); then
release_exists=true
elif printf '%s' "$view_out" | grep -qi 'Not Found'; then
release_exists=false
else
printf '%s\n' "$view_out"
exit 1
fi

if [ "$release_exists" = true ]; then
created=false
existing_body=$(gh release view "$tag" --repo "$TARGET_REPO" --json body --jq '.body // ""')
existing_body=$(printf '%s' "$view_out" | jq -r '.body // ""')
if printf '%s' "$existing_body" | grep -Fq "$discord_marker"; then
discord_posted=true
if ! grep -Fq "$discord_marker" release-notes.md; then
Expand All @@ -174,26 +196,38 @@ jobs:
--prerelease
else
created=true
gh release create "$tag" \
if ! gh release create "$tag" \
--repo "$TARGET_REPO" \
--title "$title" \
--notes-file release-notes.md \
--prerelease
--prerelease; then
# Another publish run created it between our check and the create — update instead.
created=false
gh release edit "$tag" \
--repo "$TARGET_REPO" \
--title "$title" \
--notes-file release-notes.md \
--prerelease
fi
fi

standard_path="artifacts/standard/${{ steps.apk.outputs.standard }}"
ludashi_path="artifacts/ludashi/${{ steps.apk.outputs.ludashi }}"
pubg_path="artifacts/pubg/${{ steps.apk.outputs.pubg }}"
antutu_path="artifacts/antutu/${{ steps.apk.outputs.antutu }}"
release_standard_path="release-assets/${{ steps.apk.outputs.release_standard }}"
release_ludashi_path="release-assets/${{ steps.apk.outputs.release_ludashi }}"
release_pubg_path="release-assets/${{ steps.apk.outputs.release_pubg }}"
release_antutu_path="release-assets/${{ steps.apk.outputs.release_antutu }}"
test -f "$standard_path"
test -f "$ludashi_path"
test -f "$pubg_path"
test -f "$antutu_path"
mkdir -p release-assets
cp "$standard_path" "$release_standard_path"
cp "$ludashi_path" "$release_ludashi_path"
cp "$pubg_path" "$release_pubg_path"
cp "$antutu_path" "$release_antutu_path"

release_json=$(gh api "repos/$TARGET_REPO/releases/tags/$tag")
existing_apk_assets=$(
Expand Down Expand Up @@ -231,6 +265,7 @@ jobs:
upload_asset "$release_standard_path"
upload_asset "$release_ludashi_path"
upload_asset "$release_pubg_path"
upload_asset "$release_antutu_path"

release_url=$(gh release view "$tag" --repo "$TARGET_REPO" --json url --jq '.url')
{
Expand Down
21 changes: 19 additions & 2 deletions .github/workflows/tag-apk-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ jobs:
variant: Pubg
gradleTask: assemblePubgDebug
apkPath: app/build/outputs/apk/pubg/debug/pubg.apk
- name: Antutu
variant: Antutu
gradleTask: assembleAntutuDebug
apkPath: app/build/outputs/apk/antutu/debug/antutu.apk

steps:
- name: Clone repository
Expand All @@ -56,18 +60,30 @@ jobs:
path: |
app/.cxx
app/build/intermediates/cxx
key: tag-ndk-${{ matrix.flavor.name }}-${{ hashFiles('app/src/main/cpp/**', 'app/build.gradle', 'app/src/main/cpp/CMakeLists.txt') }}
key: tag-ndk-${{ hashFiles('app/src/main/cpp/**', 'app/build.gradle', 'app/src/main/cpp/CMakeLists.txt') }}
restore-keys: |
tag-ndk-${{ matrix.flavor.name }}-
tag-ndk-
ndk-

- name: Cache Rust Steam client
uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
app/src/main/cpp/wn-steam-client/rust/target
key: cargo-${{ hashFiles('app/src/main/cpp/wn-steam-client/rust/Cargo.lock') }}
restore-keys: cargo-

- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'

- name: Install Rust Android target
run: rustup target add aarch64-linux-android

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v6
with:
Expand Down Expand Up @@ -121,3 +137,4 @@ jobs:
path: artifacts/apk/*.apk
retention-days: 30
if-no-files-found: error
compression-level: 0
35 changes: 25 additions & 10 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@ app/src/main/assets/proton-9.0-x86_64.txz
*.log
**/*.log

# Kotlin/Gradle artifacts
.kotlin/
.tmp/
.gradle/
.gradle-user/
.gradle-user-fresh/
build/
app/build/
app/.cxx/
app/release/
# Kotlin/Gradle artifacts
.kotlin/
.tmp/
.gradle/
.gradle-user/
.gradle-user-fresh/
build/
app/build/
app/.cxx/
app/release/

# Python artifacts
__pycache__/
Expand All @@ -47,3 +47,18 @@ app/schemas/
*.jks
*.keystore
signing.properties

# Local-only dev artifacts (never check in)
.claude/
References/
*.hprof
android_sysvshm/build64/

# local build artifacts (FEX/Proton wcp)
dist/

/cores/*/
!/cores/patches/

/armsx2/emucore-src/
/armsx2/emucore-out/
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[submodule "app/src/main/cpp/adrenotools"]
path = app/src/main/cpp/adrenotools
url = https://github.com/Pipetto-crypto/libadrenotools.git
[submodule "app/src/main/cpp/vkbasalt"]
path = app/src/main/cpp/vkbasalt
url = https://github.com/WinNative-Emu/vkBasalt.git
branch = Test
74 changes: 74 additions & 0 deletions EMULATOR_CREDITS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Emulator & Library Credits

WinNative's retro-console features are built on open-source emulators and libraries.
This project is distributed under the **GNU General Public License v3.0** (see [LICENSE](LICENSE)).
In compliance with the GPL and the other licenses below, the corresponding source code
for every GPL/copyleft component is available from the upstream projects linked here,
and their copyright and license notices are preserved.

## PlayStation 2

PS2 games are recognized and imported into the library. PS2 emulation is built on
**ARMSX2** (a GPL-3.0 fork of PCSX2) and is in active development.

| Component | Role | License | Source |
| --- | --- | --- | --- |
| ARMSX2 | PS2 emulation + RetroAchievements | GPL-3.0 | https://github.com/ARMSX2/ARMSX2 |
| PCSX2 | Upstream project ARMSX2 is derived from | GPL-3.0 | https://github.com/pcsx2/pcsx2 |

## GameCube / Wii

GameCube and Wii games are recognized and imported into the library. GC/Wii emulation is
built on an embedded build of **Dolphin**, rendered on Vulkan and driven entirely by
WinNative (Dolphin's own UI is stripped). Local and online multiplayer use Dolphin's own
native NetPlay engine.

| Component | Role | License | Source |
| --- | --- | --- | --- |
| Dolphin | GameCube/Wii emulation + NetPlay | GPL-2.0-or-later | https://github.com/dolphin-emu/dolphin |

## Bundled libretro cores

Each core is shipped as an unmodified `arm64-v8a` build and loaded through LibretroDroid.

| System | Core | License | Source |
| --- | --- | --- | --- |
| Game Boy / Color | Gambatte | GPL-2.0 | https://github.com/libretro/gambatte-libretro |
| Game Boy Advance | mGBA | MPL-2.0 | https://github.com/libretro/mgba |
| Genesis / Master System / Game Gear | Genesis Plus GX | Genesis Plus GX License (non-commercial) | https://github.com/libretro/Genesis-Plus-GX |
| NES | FCEUmm | GPL-2.0 | https://github.com/libretro/libretro-fceumm |
| Nintendo 64 | ParaLLEl N64 | GPL-2.0 | https://github.com/libretro/parallel-n64 |
| Nintendo 64 | Mupen64Plus-Next | GPL-2.0 | https://github.com/libretro/mupen64plus-libretro-nx |
| PlayStation | Beetle PSX (mednafen_psx) | GPL-2.0 | https://github.com/libretro/beetle-psx-libretro |
| SNES | Snes9x | Snes9x License (non-commercial) | https://github.com/libretro/snes9x |

### Also evaluated for PlayStation

| Component | License | Source |
| --- | --- | --- |
| SwanStation | GPL-3.0 | https://github.com/libretro/swanstation |

## Frontend, achievements, and supporting libraries

| Component | Role | License | Source |
| --- | --- | --- | --- |
| LibretroDroid | libretro frontend the retro backend is built on | GPL-3.0 | https://github.com/Swordfish90/LibretroDroid |
| LibretroDroid (WinNative fork) | the build WinNative ships, carrying the RetroAchievements, netplay and SGSR changes | GPL-3.0 | https://github.com/WinNative-Emu/LibretroDroid/tree/winnative |
| Oboe | Audio output | Apache-2.0 | https://github.com/google/oboe |
| rcheevos | RetroAchievements client library | MIT | https://github.com/RetroAchievements/rcheevos |
| Snapdragon Game Super Resolution (SGSR) | Upscaling shader | BSD-3-Clause | https://github.com/quic/snapdragon-gsr |
| Winlator | Windows-on-Android base this project forks | GPL-3.0 | https://github.com/brunodev85/winlator |

## Source availability

WinNative is released under the GPL-3.0. As required by that license and by the GPL-2.0
cores above, the complete corresponding source for every copyleft component is obtainable
from the repositories linked in this document, and the bundled license texts are retained
in the source tree of the repository that builds each component.

The libretro frontend is no longer built from source in this repository. WinNative links
against `libretrodroid.aar`, published from the `winnative` branch of
https://github.com/WinNative-Emu/LibretroDroid, which is where its GPL-3.0 source, the
rcheevos `LICENSE` and `SGSR_LICENSE` texts now live. The exact build WinNative ships is
pinned by release tag and SHA-256 in `tools/libretrodroid.version`, so the corresponding
source for any given APK is the commit that tag was built from.
Loading