Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1309 commits
Select commit Hold shift + click to select a range
b5667da
fix(vrhost): keep gameplay theater fallback mono-safe
thp32tt Sep 18, 2026
dafe282
fix(vr): tighten viewport scissor cache resync
thp32tt Sep 18, 2026
b69e4c4
feat(vrhost): log final OpenXR submission state
thp32tt Sep 18, 2026
53ed058
docs(vrhost): describe stereo-safe fallback order
thp32tt Sep 18, 2026
872d409
ci(vr): validate R30.4 HUD and final-submit markers
thp32tt Sep 18, 2026
13889ef
fix(vr): fully reproject XYZRHW world effects
thp32tt Sep 18, 2026
89d73b8
ci(vrhost): align fallback TTL invariants
thp32tt Sep 18, 2026
afe8b50
ci(vrhost): align fallback TTL invariants
thp32tt Sep 18, 2026
bf5627c
ci(vr): validate full effect reprojection and mono-safe fallback
thp32tt Sep 18, 2026
13224f6
feat(vrhost): trace capture to final layer submission
thp32tt Sep 18, 2026
05837df
ci(vrhost): match stereo-safe cached fallback marker
thp32tt Sep 18, 2026
c01e07a
ci(vr): add current C2 test artifact
thp32tt Sep 18, 2026
d5a28b1
vr: add HUD scale mirror fit and host autolaunch settings
thp32tt Sep 18, 2026
4194f22
vr: make R30 HUD scale user adjustable
thp32tt Sep 18, 2026
d06c200
vr: fit PC mirror window to desktop
thp32tt Sep 18, 2026
c0665fe
vrhost: persist pipeline cadence telemetry
thp32tt Sep 18, 2026
9a33534
vr: mark host and mirror startup settings
thp32tt Sep 18, 2026
e6f688d
vr: add desktop vsync bypass option
thp32tt Sep 18, 2026
b83625f
vr: decouple game present from desktop vsync
thp32tt Sep 18, 2026
f8058ff
ci(vr): verify current usability fixes in C2 artifact
thp32tt Sep 18, 2026
59e5736
vrhost: keep mono menus full-frame
thp32tt Sep 18, 2026
69f4589
vrhost: bind to active shared game client
thp32tt Sep 18, 2026
f4cf0bb
vrhost: restart binding when active game PID changes
thp32tt Sep 18, 2026
218df1e
fix(vrhost): make active PID liveness helper local
thp32tt Sep 18, 2026
f5b7a28
config(vr): expose HUD and desktop mirror controls
thp32tt Sep 18, 2026
5da2988
vr: report effective HUD scale in R30 startup log
thp32tt Sep 18, 2026
eb98601
vr: preserve original desktop mirror sizing by default
thp32tt Sep 18, 2026
ea069f1
config(vr): keep desktop mirror fitting opt-in
thp32tt Sep 18, 2026
9c9eee7
ci(vr): rebuild C2 when VR game sources change
thp32tt Sep 18, 2026
0c86a66
fix(vr): make XYZRHW effect reprojection draw-atomic
thp32tt Sep 18, 2026
64dafe5
fix(vr): add R30.5 atomic fallback diagnostics
thp32tt Sep 18, 2026
b88f204
vr: shadow VB and IB writes outside draw path
thp32tt Sep 18, 2026
79e3402
vr: share world eye transform with XYZRHW effects
thp32tt Sep 18, 2026
5d9aedb
fix(vr): make XYZRHW reprojection bilateral and depth-correct
thp32tt Sep 18, 2026
fbeb131
perf(vr): consume CPU buffer shadows in XYZRHW draws
thp32tt Sep 18, 2026
41f0785
vr: arm CPU buffer shadow creation hooks
thp32tt Sep 18, 2026
7ac6b73
vrhost: require visible SBS client and track game dirty region
thp32tt Sep 18, 2026
6c71715
vrhost: expose stable frame-ring history lookup
thp32tt Sep 18, 2026
296d428
vrhost: correlate classic captures with stable frame history
thp32tt Sep 18, 2026
6160379
fix(vrhost): allow pending source to render before authority publish
thp32tt Sep 18, 2026
3cac882
vrhost: log actual R24 submissions and interval timing stats
thp32tt Sep 18, 2026
dd192f1
feat(vr): add independent stereo sky glow post-process
thp32tt Sep 18, 2026
594e26a
vr: keep stock mono sky glow resources out of stereo mode
thp32tt Sep 18, 2026
11c76a2
build(vr): link D3D compiler for stereo sky glow
thp32tt Sep 18, 2026
bbbd89c
build(vr): declare D3D compiler dependency
thp32tt Sep 18, 2026
97c9aa7
build(vr): embed game DLL git identity
thp32tt Sep 18, 2026
0621c82
build(vrhost): embed host git identity
thp32tt Sep 18, 2026
4429c91
vripc: reserve frame words for game build identity
thp32tt Sep 18, 2026
fcaf6b6
vripc: publish game DLL build tag in Frame.v2
thp32tt Sep 18, 2026
b2ae6f6
vrhost: log cross-process build and run identity
thp32tt Sep 18, 2026
47bbbdd
fix(vr): never clear game RT during stereo sky glow
thp32tt Sep 18, 2026
1602e33
vr: log shared run identity from game process
thp32tt Sep 18, 2026
9c86de7
review(vr): harden shadow capture sky glow restore and telemetry
thp32tt Sep 18, 2026
045e0c5
review(vrhost): keep interval reject stats signal-only
thp32tt Sep 18, 2026
c49dd14
fix(vrhost): apply game-region capture validation in R23 path
thp32tt Sep 18, 2026
088d960
review(vrhost): include R32 fast path in actual-submit stats
thp32tt Sep 18, 2026
5c5e4e4
review(vr): roll back buffer shadow hooks on R30 failure
thp32tt Sep 18, 2026
3614c95
review(vr): snapshot eye scene before HUD for stereo sky glow
thp32tt Sep 18, 2026
d436759
vr: enable DirectGPU cadence test profile
thp32tt Sep 18, 2026
e6fe95f
config(vr): default cadence test to D3D9Ex direct 120Hz
thp32tt Sep 18, 2026
d659a2a
vrhost: add direct-only and refresh-rate runtime controls
thp32tt Sep 18, 2026
0654aad
vrhost: force DirectGPU gameplay and request cadence-friendly refresh
thp32tt Sep 18, 2026
81d4ec3
ci(vr): validate DirectGPU cadence test defaults
thp32tt Sep 18, 2026
08248fa
ci(vr): align C2 markers with R30.6 direct cadence build
thp32tt Sep 18, 2026
580e304
ci(vr): align C2 markers with R30.6 direct cadence build
thp32tt Sep 18, 2026
381d862
feat(vr): add R35 XR cadence phase lock and HMD timing probe
thp32tt Sep 18, 2026
8321769
fix(vr): respect runtime refresh and log actual XR cadence
thp32tt Sep 18, 2026
c5ee060
ci(vr): validate runtime-owned refresh cadence defaults
thp32tt Sep 18, 2026
faa1069
fix(vr): bound 32-bit texture memory and harden cache allocation
thp32tt Sep 18, 2026
28eecf7
fix(vr): restore managed shadows and preserve HUD aspect
thp32tt Sep 19, 2026
52af96b
ci(vr): preserve C2 HUD binary marker
thp32tt Sep 19, 2026
1b9667d
fix(vr): keep classic stereo projection alive and correct HUD aspect
thp32tt Sep 19, 2026
629542b
fix(vr): refine HUD pixel aspect and effect reprojection
thp32tt Sep 19, 2026
ff4ff78
ci(vr): preserve R30 HUD compatibility marker
thp32tt Sep 19, 2026
1593ae0
feat(vr): follow native XR cadence and harden world effects
thp32tt Sep 19, 2026
dde02a2
test(vr): verify XR-native cadence defaults
thp32tt Sep 19, 2026
e423d32
test(vr): default host to DirectGPU-only transport
thp32tt Sep 19, 2026
c827116
fix(vr): recover DirectGPU bootstrap frames from ring history
thp32tt Sep 19, 2026
5a15b54
fix(vr): suppress SBS fallback in DirectGPU-only tests
thp32tt Sep 19, 2026
b492d91
fix(vr): keep depth-disabled rank and flare overlays zero-disparity
thp32tt Sep 19, 2026
5f24016
fix(vr): contain HUD and correct pretransformed effects
thp32tt Sep 19, 2026
0de5ff1
test(vr): preserve C2 HUD verification markers
thp32tt Sep 19, 2026
c0a7b5e
ci(vr): replace stale C2 marker with DirectGPU-only marker
thp32tt Sep 19, 2026
42c93b2
fix(vr): accept A8R8G8B8 direct transport as BGRA8
thp32tt Sep 19, 2026
7769fdb
fix(vr): validate BGRA8 direct safe-eye frames
thp32tt Sep 19, 2026
d09abd7
fix(vr): disable Desktop Duplication in direct-only mode
thp32tt Sep 19, 2026
b854501
fix(vr): align DirectOnly environment parsing
thp32tt Sep 19, 2026
5641521
fix(vr): bootstrap every DirectGPU ring slot once
thp32tt Sep 19, 2026
ad234f3
fix(vr): veto screen overlays before world rebind
thp32tt Sep 19, 2026
19defa5
fix(vr): require RHW depth evidence for world effects
thp32tt Sep 19, 2026
5e1aaaf
test(vr): guard R37 direct and overlay regressions
thp32tt Sep 19, 2026
0917ff4
test(vr): match multiline R37 RHW evidence gate
thp32tt Sep 19, 2026
e7aef8b
fix(vr): ignore stale direct generations during bootstrap
thp32tt Sep 19, 2026
1e8fc4e
fix(vr): fail safe on uncertain depth-tested XYZRHW draws
thp32tt Sep 19, 2026
94e6d73
fix(vr): block R23 Desktop Duplication in direct-only mode
thp32tt Sep 19, 2026
dedec56
test(vr): require R23 direct-only capture guard
thp32tt Sep 19, 2026
c42c03f
fix(vr): harden R26 effect pacing and direct-only policy
thp32tt Sep 19, 2026
0fa6663
fix(vr): bound direct generations and add R26 HUD test owner
thp32tt Sep 19, 2026
b11ed0b
ci(vr): validate active owners and build R26 HUD safe test
thp32tt Sep 19, 2026
5b9dec0
fix(vr): latch cadence timeouts and release retired shadow budget
thp32tt Sep 19, 2026
e4b6a43
fix(vr): preserve R29 comparison effect-policy compatibility
thp32tt Sep 19, 2026
3e61a98
fix(vr): follow VDXR target and stabilize menu/direct transport
thp32tt Sep 19, 2026
0b68946
fix(vr): stabilize HMD transport and effect convergence
thp32tt Sep 19, 2026
c7dfe9b
fix(vr): harden transport, menu and stereo effects
thp32tt Sep 19, 2026
a6fa097
fix(vr): align overlays, effects and 6dof menu
thp32tt Sep 19, 2026
61ab5ae
ci(vr): make R26-safe HUD the canonical test build
thp32tt Sep 19, 2026
4b6ccca
fix(vr): eliminate overlay split and direct frame corruption
thp32tt Sep 19, 2026
0c53f3d
fix(vr): anchor world effects and harden direct ring reuse
thp32tt Sep 19, 2026
507fca8
ci(vr): preserve R26 fail-closed invariant marker
thp32tt Sep 19, 2026
a82965b
fix(vr): world-lock fixed passes and remove cadence stalls
thp32tt Sep 19, 2026
0e2f53b
ci(vr): verify fixed-function head-space world lock
thp32tt Sep 19, 2026
18b4136
fix(vr): restore projection output and world-rank billboards
thp32tt Sep 19, 2026
06a0517
fix(vr): pace VDXR frames and world-lock HUD/menu markers
thp32tt Sep 19, 2026
6c74b5b
fix(vr): present latest VDXR frame and world-lock UI effects
thp32tt Sep 19, 2026
40ed5d2
test(vr): verify latest-frame DirectGPU policy
thp32tt Sep 19, 2026
f134587
fix(vr): prevent stale DirectGPU frame rewind
thp32tt Sep 19, 2026
6bc4d58
fix(vr): preserve 2D menu aspect in projection
thp32tt Sep 19, 2026
68e2510
fix(vr): harden HUD/effect ownership and cache draw hot paths
thp32tt Sep 19, 2026
102f75e
perf(vr): keep DirectGPU fast path and reuse unchanged projections
thp32tt Sep 19, 2026
05460ef
test(vr): retain disabled-first architecture marker
thp32tt Sep 19, 2026
ca011fb
test(vr): retain R41 HUD binary marker for R42 build
thp32tt Sep 19, 2026
c09b03b
fix(vr): preserve HUD aspect and world-lock menu
thp32tt Sep 19, 2026
efda9d7
test(vr): track LOCAL-fixed menu projection marker
thp32tt Sep 19, 2026
91b9c63
fix(vr): converge multi-draw rank and result overlays
thp32tt Sep 19, 2026
110b5c6
fix(vr): repair overlay ownership recenter and menu state
thp32tt Sep 20, 2026
e23d024
feat(vr): add GPL shader bytecode fingerprint helper
thp32tt Sep 20, 2026
a61c7ca
fix(vr): bound GPL shader fingerprint cache
thp32tt Sep 20, 2026
a4e0211
feat(vr): trace stable D3D9 shader fingerprints
thp32tt Sep 20, 2026
8157b74
docs: add GPLv3 license text for reused VR code
thp32tt Sep 20, 2026
eab1d61
docs: declare GPLv3 scope for VR reuse branch
thp32tt Sep 20, 2026
1cbb8e1
docs: record 3Dmigoto GPL source reuse
thp32tt Sep 20, 2026
d07541c
docs(vr): permit tracked GPL reuse on dedicated branch
thp32tt Sep 20, 2026
bda8bf1
fix(vr): make shader fingerprints stable across COM recreation
thp32tt Sep 20, 2026
c3ff7bb
ci: package GPL source notices with VR artifacts
thp32tt Sep 20, 2026
a68cf17
ci(vr): verify GPL diagnostics and distribution notices
thp32tt Sep 20, 2026
f10fd52
docs(vr): add 5000-check source review report
thp32tt Sep 20, 2026
b741ffd
docs(vr): add 50000-cell cross-review report
thp32tt Sep 20, 2026
f6df045
docs(vr): add 500000-cell source cross-review report
thp32tt Sep 20, 2026
24ab17d
docs(vr): record first 2M-cell hourly baseline review
thp32tt Sep 20, 2026
80bdbd8
feat(vr): add unified backend selector
thp32tt Sep 20, 2026
3efa4b7
feat(vr): add backend selector command wrapper
thp32tt Sep 20, 2026
6e48af9
docs(vr): add unified backend test scenario
thp32tt Sep 20, 2026
35aef3e
ci(vr): build unified D3D9 DXVK DX12 test package
thp32tt Sep 20, 2026
e6629fc
docs(vr): add persistent build matrix log
thp32tt Sep 20, 2026
88f3d2d
fix(vr): harden selector and add classic 2D mode
thp32tt Sep 20, 2026
b472b55
fix(vr): expose 2D selector mode
thp32tt Sep 20, 2026
e862006
feat(vr): add four-mode GUI renderer selector
thp32tt Sep 20, 2026
ed8f318
feat(vr): add GUI selector launcher
thp32tt Sep 20, 2026
28dd9b4
feat(vr): split DXVK safe and multiview modes
thp32tt Sep 20, 2026
e2127f0
docs(vr): add DXVK safe selector token
thp32tt Sep 20, 2026
b9a167b
feat(vr): expose DXVK safe compatibility mode in GUI
thp32tt Sep 20, 2026
addc976
fix(vr): package GUI selector without corrupting VR INI section
thp32tt Sep 20, 2026
ec1f051
fix(ci): restore unified package workflow and GUI selector
thp32tt Sep 20, 2026
5e12ffa
feat(vr): add variant-aware diagnostic collector
thp32tt Sep 20, 2026
9ec2831
feat(vr): add one-click diagnostic collector launcher
thp32tt Sep 20, 2026
15536ef
chore(vr): surface diagnostic collector after backend selection
thp32tt Sep 20, 2026
f413338
docs(vr): record matrix run 0002 diagnostic collector progress
thp32tt Sep 20, 2026
6ba697c
fix(vr): package diagnostic collector in unified test build
thp32tt Sep 20, 2026
0171a84
fix(vr): freeze traceable evening package sessions
thp32tt Sep 20, 2026
5185347
fix(vr): isolate logs by prepared session
thp32tt Sep 20, 2026
cbec700
test(vr): accept CRLF backend identity
thp32tt Sep 20, 2026
cbd8b56
docs(vr): freeze verified evening matrix cbec700
thp32tt Sep 20, 2026
df05c17
fix(vr): retain immutable LOCAL origin for real recenter
thp32tt Sep 20, 2026
ad60953
fix(vr): implement application-space recenter generation
thp32tt Sep 20, 2026
3ff4721
fix(vr): apply recenter before host pose location
thp32tt Sep 20, 2026
1f1f06b
Fix VR log session rollover and truncate safety
thp32tt Sep 20, 2026
dcf1c93
fix(vr): scope released images to swapchain generation
thp32tt Sep 20, 2026
ed7c83c
fix(vr): reject stale cached images after swapchain recreation
thp32tt Sep 20, 2026
3eace1d
Archive pending VR logs before each test session
thp32tt Sep 20, 2026
e3e4247
Add one-click VR test launcher with automatic log collection
thp32tt Sep 20, 2026
da1776c
Add VR test launcher command wrapper
thp32tt Sep 20, 2026
0a0641c
fix(vr): fail depth-off effects closed and classify sky rotation
thp32tt Sep 20, 2026
e3feabb
fix(vr): make fixed-function sky rotation-only
thp32tt Sep 20, 2026
4509261
perf(vr): use tracked state for effect classification
thp32tt Sep 20, 2026
182f1e7
fix(vr): stop cross-shader verified-world impersonation
thp32tt Sep 20, 2026
2625da1
Package and validate automatic VR test log launcher
thp32tt Sep 20, 2026
b5656b0
Add automatic test and log collection button to selector
thp32tt Sep 20, 2026
c846350
Document truncate-safe automatic VR log workflow
thp32tt Sep 20, 2026
79751c4
perf(vr): invalidate raster caches on StateBlock apply
thp32tt Sep 20, 2026
fc8259f
perf(vr): trust raster shadow after proven StateBlock tracking
thp32tt Sep 20, 2026
8488ed9
perf(vr): remove live occlusion render-state reads
thp32tt Sep 20, 2026
7c90b3a
perf(vr): remove synchronous telemetry flush from XR loop
thp32tt Sep 20, 2026
4b5d556
ci(vr): rebuild unified package for renderer and host fixes
thp32tt Sep 20, 2026
ccd1fd9
fix(vr): keep sky eye offset independent of OpenXR types
thp32tt Sep 20, 2026
4391fc6
docs(vr): document 3Dmigoto GPL shader helper
thp32tt Sep 20, 2026
e654004
docs(vr): include upstream 3Dmigoto GPLv3 license
thp32tt Sep 20, 2026
965e64e
diag(vr): collect DXVK and vkd3d backend logs per session
thp32tt Sep 20, 2026
9e6f536
package(vr): ship GPL notice source and improved collector
thp32tt Sep 20, 2026
5d19400
test(vr): verify GPL payload and backend log collection
thp32tt Sep 20, 2026
d78ca7d
build(vr): list GPL shader helper in source manifest
thp32tt Sep 20, 2026
522f148
diag(vr): preserve backend logs before test relaunch
thp32tt Sep 20, 2026
9b4d4e4
diag(vr): seal DXVK logs before backend switch
thp32tt Sep 20, 2026
5d41607
fix(vrhost): qualify swapchain generation state in R24 fallback
thp32tt Sep 20, 2026
e4c82ed
fix(vr): hold 60 Hz until XR cadence is active
thp32tt Sep 20, 2026
8b3509e
fix(vr): keep D3D9 SAFE on fallback-capable transport
thp32tt Sep 20, 2026
ffc458a
fix(dxvk): isolate test launch from implicit Vulkan layers
thp32tt Sep 20, 2026
d0d61e2
fix(dxvk): disable unsupported transparency supersampling
thp32tt Sep 20, 2026
1c58f95
diag(vr): collect crash bundles with session logs
thp32tt Sep 20, 2026
536c539
diag(vr): collect crash bundles with session logs
thp32tt Sep 20, 2026
32510f0
diag(vr): collect crash bundles with session logs
thp32tt Sep 20, 2026
090c36f
build(vr): declare cadence settings for limiter fallback
thp32tt Sep 20, 2026
e1245f7
ci(vr): rebuild unified package for cadence and graphics hooks
thp32tt Sep 20, 2026
0ae5e78
fix(vr): make packaged default D3D9 SAFE actually safe
thp32tt Sep 20, 2026
0a08468
ci(vr): rebuild unified package when VR defaults change
thp32tt Sep 20, 2026
3b25c81
docs: add resumable checkpoint workflow for VR development
thp32tt Sep 20, 2026
840f52a
ci(vr): slim tester package and separate compliance files
thp32tt Sep 20, 2026
a14e1b7
docs(vr): checkpoint lean tester packaging change
thp32tt Sep 20, 2026
1ac93a8
docs(vr): record current checkpoint and package resume state
thp32tt Sep 20, 2026
1b4f1ce
docs(vr): record packaging review findings
thp32tt Sep 20, 2026
939fd43
fix(vr): expose enabled state for hook gating
thp32tt Sep 20, 2026
5231e87
fix(vr): do not install VR hooks in 2D control
thp32tt Sep 20, 2026
5f9028d
diag(vr): force deterministic recovery boot settings
thp32tt Sep 20, 2026
e4a936c
fix(vr): honor DirectGpuOnly setting in game transport
thp32tt Sep 20, 2026
99b41c2
fix(vr): avoid half-screen crop before SBS is active
thp32tt Sep 20, 2026
8031440
docs(vr): gate retest on synced backend transport fixes
thp32tt Sep 20, 2026
3905e5b
docs(vr): freeze stereo transport and dx12 retest candidate
thp32tt Sep 20, 2026
96d1795
docs(vr): record frozen 803144 retest checkpoint
thp32tt Sep 20, 2026
c34e974
docs(vr): freeze 803144 recovery candidate [skip ci]
thp32tt Sep 20, 2026
81c308f
docs(vr): record completed recovery checkpoint [skip ci]
thp32tt Sep 20, 2026
fc71a50
docs(vr): capture transport and DX12 recovery findings [skip ci]
thp32tt Sep 20, 2026
ad14ed6
fix(vrhost): port T0 loading and stall projection guards
thp32tt Sep 20, 2026
f7d080c
docs(vr): adopt T0-derived working base and record hourly run [skip ci]
thp32tt Sep 20, 2026
f591d75
docs(vr): record completed T0-base hourly-equivalent run [skip ci]
thp32tt Sep 20, 2026
6e0196e
docs(vr): persist T0-base review findings and next diagnostics [skip ci]
thp32tt Sep 20, 2026
edee6b9
fix(vr): define Frame.v2 run-generation identity
thp32tt Sep 20, 2026
6ff1435
fix(vr): invalidate stale Frame.v2 slots on game restart
thp32tt Sep 20, 2026
db73029
fix(vrhost): reject stale Frame.v2 run identities
thp32tt Sep 20, 2026
c65403e
fix(vrhost): bind DirectGPU frame lookup to current game run
thp32tt Sep 20, 2026
f3d5f3f
fix(vr): keep v3 shadow bridge on current Frame.v2 run
thp32tt Sep 20, 2026
94be96f
fix(vrhost): require validated stereo frame before gameplay handoff
thp32tt Sep 20, 2026
256fd8c
fix(vrhost): reject stale runs in fallback frame reader
thp32tt Sep 20, 2026
6585f9c
fix(vr): bind DirectGPU generation to game run identity
thp32tt Sep 20, 2026
d0f8a6a
test(vr): verify current direct-only setting authority
thp32tt Sep 20, 2026
383ee4d
test(vr): verify current depth-off effect policy
thp32tt Sep 20, 2026
73c58c4
autodev: add four-worker coordination protocol
thp32tt Sep 20, 2026
24822d2
autodev: add durable work queue
thp32tt Sep 20, 2026
5f0a3dc
autodev: add normalized runtime feedback inbox
thp32tt Sep 20, 2026
27380e8
autodev: add review worker handoff
thp32tt Sep 20, 2026
c8daa9a
autodev: add fix worker handoff
thp32tt Sep 20, 2026
ce6bb0d
autodev: add validation worker handoff
thp32tt Sep 20, 2026
64066c1
autodev: connect durable four-worker coordination state
thp32tt Sep 20, 2026
bcb84c1
docs: record four-worker autodev environment
thp32tt Sep 20, 2026
a89da3d
autodev: add durable Work run history
thp32tt Sep 20, 2026
54965a7
autodev: validate durable coordination state
thp32tt Sep 20, 2026
e18c83c
ci: add lightweight autodev state validation
thp32tt Sep 20, 2026
845cdfa
autodev: register coordination state validator
thp32tt Sep 20, 2026
705b7ae
docs: record autodev environment hardening
thp32tt Sep 20, 2026
9c6f31d
vr: automate EXE and HUD reverse-engineering
thp32tt Sep 21, 2026
b177ed4
vr: establish semantic HUD baseline
thp32tt Sep 21, 2026
1c804c4
ci: trigger HUD semantic baseline validation
thp32tt Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 23 additions & 9 deletions .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,40 @@
name: Bug report
description: Let us know about bugs found with the game/tweaks (for feature requests, please use Discussions tab)
name: Bug report / 버그 신고
description: Report bugs found with the game/tweaks / 게임 또는 Tweaks에서 발견한 버그를 알려주세요
title: "[Bug]: "
labels: bug
body:
- id: disclaimer
type: markdown
attributes:
value: |
If you've ran into an issue/bug with the game or tweaks let us know about it here.

**For feature requests/suggestions**, please write on the [Suggestions discussion board](https://github.com/emoose/OutRun2006Tweaks/discussions/categories/suggestions).
If you've run into an issue or bug with the game or tweaks, let us know about it here.
게임 또는 Tweaks 사용 중 문제나 버그를 발견했다면 이 양식으로 알려주세요.

**For feature requests/suggestions**, please use the Suggestions discussion board.
**기능 요청/제안**은 Suggestions 토론 게시판을 이용해 주세요.

https://github.com/emoose/OutRun2006Tweaks/discussions/categories/suggestions

- id: version
type: input
attributes:
label: Tweaks version
description: Which version of OutRun2006Tweaks were you using? (you can usually find this by looking at the filename of ZIP you downloaded)
placeholder: outrun2006tweaks-abcdefghijklmnopqrstuvwxyz
label: Tweaks version / Tweaks 버전
description: Which version of OutRun2006Tweaks were you using? Include the release/ZIP version if possible. / 사용한 OutRun2006Tweaks 버전을 적어주세요. 가능하면 릴리즈 또는 ZIP 버전도 함께 적어주세요.
placeholder: OutRun2006Tweaks Wheel FFB v0.1
validations:
required: true

- id: hardware
type: input
attributes:
label: Wheel hardware / 휠 하드웨어
description: Wheel base, pedals, driver and firmware version if relevant. / 관련된 경우 휠베이스, 페달, 드라이버 및 펌웨어 버전을 적어주세요.
placeholder: MOZA R3, driver/firmware version

- id: problem
type: textarea
attributes:
label: Describe your issue here (please attach the OutRun2006Tweaks.log file with your report, you can drag+drop it into the text area)
label: Describe the issue / 문제 설명
description: Describe what happened, how to reproduce it, and what you expected. Please attach OutRun2006Tweaks.log for input/FFB issues. / 발생한 현상, 재현 방법, 기대한 동작을 적어주세요. 입력/FFB 문제는 가능하면 OutRun2006Tweaks.log를 첨부해 주세요.
validations:
required: true
188 changes: 176 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
name: Build

on:
push:
pull_request:
Expand All @@ -16,42 +18,204 @@ jobs:
with:
submodules: recursive

- name: Verify consolidated wheel FFB source
shell: pwsh
run: python tools/verify_wheel_ffb_current.py

- name: Test production wheel FFB math
shell: cmd
run: |
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat" || exit /b 1
python tools/verify_wheel_ffb_math.py

- name: Configure
shell: pwsh
run: |
# cmkr intentionally skips regeneration when CI is set. vr-openxr uses
# cmake.toml as the canonical source graph, so remove CI here just as
# the dedicated VR workflow does before configuring.
Remove-Item Env:CI -ErrorAction SilentlyContinue
mkdir build
cd build
cmake -G "Visual Studio 17 2022" -A ${{matrix.arch}} ..

- name: Add older VC2022 redist workaround to safetyhook
shell: pwsh
run: |
(Get-Content build/_deps/safetyhook-build/src/safetyhook.vcxproj) -replace 'ZYCORE_STATIC_BUILD', '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR;ZYCORE_STATIC_BUILD' | Set-Content build/_deps/safetyhook-build/safetyhook.vcxproj
(Get-Content build/_deps/safetyhook-build/src/safetyhook.vcxproj) -replace 'ZYCORE_STATIC_BUILD', '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR;ZYCORE_STATIC_BUILD' | Set-Content build/_deps/safetyhook-build/src/safetyhook.vcxproj
(Get-Content build/_deps/zydis-build/Zydis.vcxproj) -replace 'ZYCORE_STATIC_BUILD', '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR;ZYCORE_STATIC_BUILD' | Set-Content build/_deps/zydis-build/Zydis.vcxproj
(Get-Content build/_deps/zydis-build/zycore/Zycore.vcxproj) -replace 'ZYCORE_STATIC_BUILD', '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR;ZYCORE_STATIC_BUILD' | Set-Content build/_deps/zydis-build/zycore/Zycore.vcxproj

- name: Zero out SDL_gameinputjoystick.c (https://github.com/libsdl-org/SDL/issues/11487 / https://github.com/actions/runner-images/issues/10980)
- name: Zero out SDL_gameinputjoystick.c
shell: pwsh
run: |
Set-Content -Path build/_deps/sdl-src/src/joystick/gdk/SDL_gameinputjoystick.c -Value ""
(Get-Content build/_deps/sdl-build/include-config-release/build_config/SDL_build_config.h) -replace '#define SDL_JOYSTICK_GAMEINPUT 1', '/* #undef SDL_JOYSTICK_GAMEINPUT */' | Set-Content build/_deps/sdl-build/include-config-release/build_config/SDL_build_config.h

- name: Build
run: |
cmake --build build --config ${{matrix.build_type}}

run: cmake --build build --config ${{matrix.build_type}}

- name: Copy settings
shell: pwsh
run: |
cp OutRun2006Tweaks.ini build/bin/OutRun2006Tweaks.ini
cp OutRun2006Tweaks.lods.ini build/bin/OutRun2006Tweaks.lods.ini

- name: Download EXE

- name: Verify built wheel and VR payload
shell: pwsh
run: |
$dllPath = "build/bin/dinput8.dll"
if (-not (Test-Path $dllPath)) { throw "dinput8.dll was not produced" }
$bytes = [System.IO.File]::ReadAllBytes($dllPath)
if ($bytes.Length -lt 1000000) { throw "dinput8.dll is unexpectedly small" }
if ($bytes[0] -ne 0x4D -or $bytes[1] -ne 0x5A) { throw "dinput8.dll has no MZ header" }
$peOffset = [BitConverter]::ToInt32($bytes, 0x3C)
if ($peOffset -lt 0 -or ($peOffset + 6) -ge $bytes.Length) { throw "invalid PE offset" }
$signature = [Text.Encoding]::ASCII.GetString($bytes, $peOffset, 4)
if ($signature -ne "PE`0`0") { throw "invalid PE signature" }
$machine = [BitConverter]::ToUInt16($bytes, $peOffset + 4)
if ($machine -ne 0x014C) { throw ("expected Win32 x86 DLL, machine=0x{0:X4}" -f $machine) }

$ascii = [Text.Encoding]::ASCII.GetString($bytes)
$markers = @(
"WheelFFB: GUID_Damper created",
"WheelFFB: scheduling DirectInput device reinitialization",
"WheelFFB: selected DirectInput identity",
"Reverse SAT / ConstantForce",
"Reverse Spring",
"multi-device SDL raw input enabled",
"Multi-device input architecture adapted from hyp36rmax (MIT)",
"zero-force live SetParameters",
"temporarily excluding it from automatic selection",
"ConstantForce is using detected actuator offset",
"next compatible interface will be probed on the next update tick",
"transient ConstantForce update failure",
"preferred FFB driver/vendor",
"MOZA R3 Physics SAT",
"MOZA R3 Natural SAT",
"Single-owner wheel FFB: DirectInput COM only",
"Physics SAT (body slip + yaw)",
"Mechanical / Caster Trail",
"Pneumatic Trail Response Lead",
"FFB Headroom / Clipping",
"Enable wheel response correction",
"WheelFFB SATMODEL",
"trailResponseSlip={} trailResponseLead={}",
"load={:.2f} slide={:.2f} scrub={:.2f}",
"basis=M70r{}",
"steerSrc={}",
"Test Left (20%)",
"VR stereo: D3D9 full-eye renderer installed",
"VR R13: stereo hardening ACTIVE",
"VR R13: auxiliary/offscreen c64 WVP kept stock",
"VR v3 shadow: live dual-protocol diagnostics active",
"VR GPL SHADER: pair="
)
foreach ($marker in $markers) {
if (-not $ascii.Contains($marker)) { throw "missing compiled marker: $marker" }
}

$ini = Get-Content "build/bin/OutRun2006Tweaks.ini" -Raw
if ($ini -notmatch '(?m)^SteeringDeadZone\s*=\s*0\.0\s*$') { throw "shipped deadzone is not 0.0" }
if ($ini -notmatch '(?m)^WheelAccelerationInvert\s*=\s*false\s*$') { throw "shipped accelerator invert is not false" }
if ($ini -notmatch '(?m)^WheelBrakeInvert\s*=\s*false\s*$') { throw "shipped brake invert is not false" }
if ($ini -notmatch '(?m)^UseNewInput\s*=\s*true\s*$') { throw "multi-device input is not the shipped default" }
if ($ini -notmatch '(?m)^TrailResponseLead\s*=\s*0\.25\s*$') { throw "shipped pneumatic trail response lead is not 0.25" }

Write-Host ("Verified dinput8.dll: {0} bytes, PE32 x86, current wheel FFB + OpenXR VR markers present" -f $bytes.Length)
Get-FileHash $dllPath -Algorithm SHA256

- name: Download upstream replacement EXE
shell: pwsh
run: Invoke-WebRequest -Uri https://github.com/emoose/OutRun2006Tweaks/releases/download/v0.1/OR2006C2C.EXE -OutFile build/bin/OR2006C2C.exe

- name: Collect binary distribution licenses
shell: pwsh
run: |
Invoke-WebRequest -Uri https://github.com/emoose/OutRun2006Tweaks/releases/download/v0.1/OR2006C2C.EXE -OutFile build/bin/OR2006C2C.exe

- name: Upload
$candidates = New-Object System.Collections.Generic.List[System.IO.FileInfo]
$candidates.Add((Get-Item LICENSE.md))
if (Test-Path COPYING.GPL3) { $candidates.Add((Get-Item COPYING.GPL3)) }
if (Test-Path THIRD_PARTY_NOTICES.md) { $candidates.Add((Get-Item THIRD_PARTY_NOTICES.md)) }
foreach ($root in @('external', 'build/_deps')) {
if (Test-Path $root) {
Get-ChildItem $root -Recurse -File | Where-Object {
$_.Name -match '^(LICENSE|LICENCE|COPYING|COPYRIGHT)(\..*)?$'
} | ForEach-Object { $candidates.Add($_) }
}
}

$seen = @{}
$builder = New-Object System.Text.StringBuilder
[void]$builder.AppendLine('OutRun2006Tweaks Wheel FFB v0.1 - bundled open-source notices')
[void]$builder.AppendLine('Generated by CI from the exact source/dependency trees used for this build.')
[void]$builder.AppendLine('')

foreach ($file in ($candidates | Sort-Object FullName)) {
try { $text = Get-Content $file.FullName -Raw -ErrorAction Stop } catch { continue }
if ([string]::IsNullOrWhiteSpace($text)) { continue }
$bytes = [Text.Encoding]::UTF8.GetBytes($text)
$hash = [Convert]::ToHexString([Security.Cryptography.SHA256]::HashData($bytes))
if ($seen.ContainsKey($hash)) { continue }
$seen[$hash] = $true
$relative = [IO.Path]::GetRelativePath((Get-Location).Path, $file.FullName)
[void]$builder.AppendLine(('=' * 78))
[void]$builder.AppendLine($relative)
[void]$builder.AppendLine(('=' * 78))
[void]$builder.AppendLine($text.TrimEnd())
[void]$builder.AppendLine('')
}

$builder.ToString() | Set-Content build/bin/LICENSES.txt -Encoding utf8
if (-not (Test-Path build/bin/LICENSES.txt)) { throw 'LICENSES.txt was not generated' }
if (Test-Path COPYING.GPL3) { Copy-Item COPYING.GPL3 build/bin/COPYING.GPL3 }
if (Test-Path THIRD_PARTY_NOTICES.md) { Copy-Item THIRD_PARTY_NOTICES.md build/bin/THIRD_PARTY_NOTICES.md }
if (-not (Test-Path build/bin/COPYING.GPL3)) { throw 'GPLv3 text is missing from binary distribution' }
if (-not (Test-Path build/bin/THIRD_PARTY_NOTICES.md)) { throw 'third-party notices are missing from binary distribution' }
Write-Host ("Collected {0} unique license/notice texts" -f $seen.Count)

- name: Upload binary
uses: actions/upload-artifact@v7.0.1
with:
name: outrun2006tweaks-${{ github.sha }}
path: build/bin/

- name: Upload wheel source snapshot
uses: actions/upload-artifact@v7.0.1
with:
name: wheel-source-${{ github.sha }}
path: |
src/hooks_wheel_ffb.cpp
src/hooks_wheel_ffb_build.cpp
src/hooks_wheel_vehicle_dynamics.hpp
src/wheel_ffb_math.hpp
src/wheel_ffb_runtime.hpp
tools/test_wheel_ffb_current.cpp
tools/verify_wheel_ffb_math.py
src/hooks_forcefeedback.cpp
src/hooks_framerate.cpp
src/hooks_wheel_input_compat_v2.hpp
src/hooks_wheel_r3_menu_dpad.hpp
src/hooks_wheel_r3_menu_ab.hpp
src/hooks_wheel_r3_device_autoselect.hpp
src/input_manager.hpp
src/input_manager.cpp
src/overlay/input_bindings_ui.cpp
src/overlay/wheel_setup_ui.cpp
src/wheel_profile_store.hpp
src/hooks_input.cpp
src/overlay/settings_ui.cpp
src/overlay/overlay.cpp
src/dllmain.cpp
OutRun2006Tweaks.ini
CMakeLists.txt
cmake.toml
README.md
WHEEL_FFB.md
RELEASE_NOTES_v0.1.md
LICENSE.md
COPYING.GPL3
THIRD_PARTY_NOTICES.md
src/vr/d3d9/shader_fingerprint_gpl.hpp
tools/verify_wheel_ffb_current.py
.github/workflows/build.yml
include-hidden-files: true
106 changes: 106 additions & 0 deletions .github/workflows/outrun-exe-hud-inspector.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: OutRun EXE HUD Inspector CI

on:
workflow_dispatch:
push:
paths:
- 'src/vr/debug/hud_inspector.cpp'
- 'src/hooks_textures.cpp'
- 'tools/analyze_outrun_exe.py'
- 'tools/Collect-OutRunVRLogs.ps1'
- 'tools/Run-OutRunVRTest.ps1'
- 'docs/VR_EXE_HUD_INSPECTOR.md'
- '.github/workflows/outrun-exe-hud-inspector.yml'

permissions:
contents: read

jobs:
static-exe-analysis:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4

- name: Validate PowerShell helper syntax
shell: pwsh
run: |
$failed=$false
foreach($script in @('tools/Collect-OutRunVRLogs.ps1','tools/Run-OutRunVRTest.ps1')){
$tokens=$null
$errors=$null
[void][System.Management.Automation.Language.Parser]::ParseFile(
(Resolve-Path $script), [ref]$tokens, [ref]$errors)
if($errors.Count -gt 0){
$failed=$true
$errors | ForEach-Object { Write-Error "${script}: $($_.Message)" }
}
}
if($failed){ throw 'PowerShell syntax validation failed' }

- name: Download upstream replacement EXE
shell: pwsh
run: |
New-Item -ItemType Directory -Force analysis-input | Out-Null
Invoke-WebRequest `
-Uri 'https://github.com/emoose/OutRun2006Tweaks/releases/download/v0.1/OR2006C2C.EXE' `
-OutFile analysis-input/OR2006C2C.EXE

- name: Analyze EXE HUD/render anchors
run: >
python tools/analyze_outrun_exe.py
--exe analysis-input/OR2006C2C.EXE
--out-dir analysis-output

- name: Show analysis summary
shell: pwsh
run: Get-Content analysis-output/OR2006C2C_EXE_ANALYSIS.md -TotalCount 120

- uses: actions/upload-artifact@v4
with:
name: OR2006C2C-EXE-HUD-analysis-${{ github.sha }}
path: analysis-output/
if-no-files-found: error

build-hud-inspector:
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Configure Win32 game DLL
shell: pwsh
run: |
Remove-Item Env:CI -ErrorAction SilentlyContinue
cmake -S . -B build-game -G "Visual Studio 17 2022" -A Win32 -DOUTRUN_VR_SAFE_DRAW_COMPARE=ON

- name: Apply VC2022 dependency workarounds
shell: pwsh
run: |
(Get-Content build-game/_deps/safetyhook-build/src/safetyhook.vcxproj) -replace 'ZYCORE_STATIC_BUILD', '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR;ZYCORE_STATIC_BUILD' | Set-Content build-game/_deps/safetyhook-build/src/safetyhook.vcxproj
(Get-Content build-game/_deps/zydis-build/Zydis.vcxproj) -replace 'ZYCORE_STATIC_BUILD', '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR;ZYCORE_STATIC_BUILD' | Set-Content build-game/_deps/zydis-build/Zydis.vcxproj
(Get-Content build-game/_deps/zydis-build/zycore/Zycore.vcxproj) -replace 'ZYCORE_STATIC_BUILD', '_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR;ZYCORE_STATIC_BUILD' | Set-Content build-game/_deps/zydis-build/zycore/Zycore.vcxproj
Set-Content -Path build-game/_deps/sdl-src/src/joystick/gdk/SDL_gameinputjoystick.c -Value ""
(Get-Content build-game/_deps/sdl-build/include-config-release/build_config/SDL_build_config.h) -replace '#define SDL_JOYSTICK_GAMEINPUT 1', '/* #undef SDL_JOYSTICK_GAMEINPUT */' | Set-Content build-game/_deps/sdl-build/include-config-release/build_config/SDL_build_config.h

- name: Build
run: cmake --build build-game --config Release --target outrun2006tweaks

- name: Stage inspector payload
shell: pwsh
run: |
New-Item -ItemType Directory -Force stage | Out-Null
$dll = Get-ChildItem build-game -Recurse -Filter dinput8.dll |
Where-Object { $_.FullName -match '\\bin\\' } |
Select-Object -First 1
if (-not $dll) { throw 'dinput8.dll missing' }
Copy-Item $dll.FullName stage/dinput8.dll
Copy-Item tools/Collect-OutRunVRLogs.ps1 stage/
Copy-Item tools/Run-OutRunVRTest.ps1 stage/
git rev-parse HEAD | Set-Content stage/SOURCE_SHA.txt

- uses: actions/upload-artifact@v4
with:
name: HUD-inspector-game-${{ github.sha }}
path: stage/
if-no-files-found: error
Loading