Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
468 commits
Select commit Hold shift + click to select a range
c9b94f5
disallow sub agents
JohnDeved Mar 20, 2026
9eef732
dwarf TU scan tool
JohnDeved Mar 21, 2026
eae4770
mac safe
JohnDeved Mar 21, 2026
9e552bf
Merge branch 'main' into zPhysics
JohnDeved Mar 21, 2026
67fe6f8
86.13%: recover zPhysics utility template emissions
JohnDeved Mar 21, 2026
56d47fb
87.72%: emit more zPhysics vector methods
JohnDeved Mar 21, 2026
4a4fb2d
89.97%: recover zPhysics owners and hot paths
JohnDeved Mar 21, 2026
b7d835c
57.11%: recover SuspensionTraffic setup
JohnDeved Mar 21, 2026
4678f90
58.52%: recover SuspensionSpline control setup
JohnDeved Mar 21, 2026
64cb336
58.68%: refine Traffic ctor and add spline accessors
JohnDeved Mar 21, 2026
577c311
58.99%: recover SuspensionSpline OnTaskSimulate
JohnDeved Mar 21, 2026
67290a5
59.20%: recover SuspensionSpline NISCarTweaks
JohnDeved Mar 21, 2026
a698da0
59.77%: recover SuspensionSimple tire update
JohnDeved Mar 21, 2026
8976e9a
60.58%: recover SuspensionSimple wheel forces
JohnDeved Mar 21, 2026
a508902
61.34%: recover SuspensionTrailer constructor
JohnDeved Mar 21, 2026
ce2cfed
62.32%: recover SuspensionSimple constructor
JohnDeved Mar 21, 2026
851b893
62.55%: recover SuspensionTrailer tire update
JohnDeved Mar 21, 2026
b575529
63.07%: recover SuspensionTrailer wheel forces
JohnDeved Mar 21, 2026
55307cf
63.30%: recover SuspensionTraffic tire update
JohnDeved Mar 21, 2026
47ea19f
63.87%: recover SuspensionTraffic wheel forces
JohnDeved Mar 21, 2026
04b96fd
64.51%: recover SuspensionSpline wheel forces
JohnDeved Mar 21, 2026
fabb0ec
64.92%: recover DamageVehicle impact handling
JohnDeved Mar 21, 2026
058c742
65.09%: recover SimpleRigidBody update
JohnDeved Mar 21, 2026
fce43b2
65.15%: recover SimpleRigidBody trigger flags
JohnDeved Mar 21, 2026
9feca8f
65.26%: recover RigidBody barrier collision
JohnDeved Mar 21, 2026
91eaf06
65.32%: recover Effects constructor
JohnDeved Mar 21, 2026
6d3ea97
65.47%: recover Effects collision dispatch
JohnDeved Mar 21, 2026
d6f8fb2
65.67%: recover DamageVehicle collision handling
JohnDeved Mar 21, 2026
16fe31e
66.21%: recover DamageVehicle ctor and dtor
JohnDeved Mar 21, 2026
a29bea4
66.44%: recover DamageRacer constructor
JohnDeved Mar 21, 2026
f51d4a9
66.53%: recover small damage helpers
JohnDeved Mar 21, 2026
4111ed1
66.65%: emit damage interface symbols
JohnDeved Mar 21, 2026
75e1167
66.73%: recover DamageDragster destructor
JohnDeved Mar 21, 2026
d6d292c
67.41%: emit physics behavior dtor symbols
JohnDeved Mar 21, 2026
8ac55d3
67.68%: recover RBVehicle destructor
JohnDeved Mar 21, 2026
f8b4da5
67.90%: recover suspension destructors
JohnDeved Mar 21, 2026
671f87f
68.21%: emit model and vehicle spec symbols
JohnDeved Mar 21, 2026
618fdef
68.50%: recover suspension tire helpers
JohnDeved Mar 21, 2026
866b166
68.53%: recover SoundHeli destructor
JohnDeved Mar 21, 2026
f2b5e3b
68.89%: recover RBTractor constructor
JohnDeved Mar 21, 2026
c359956
68.90%: refine RBTractor trailer spawn
JohnDeved Mar 21, 2026
12f7963
69.16%: recover RBTractor destructor
JohnDeved Mar 21, 2026
1bb5fe2
69.58%: recover SuspensionSimple simulate
JohnDeved Mar 21, 2026
8496c67
69.64%: emit input control accessors
JohnDeved Mar 21, 2026
809ef14
69.80%: emit behavior factories and class keys
JohnDeved Mar 21, 2026
36cbb95
70.30%: emit suspension accessors
JohnDeved Mar 21, 2026
472f683
70.32%: emit spline suspension helpers
JohnDeved Mar 21, 2026
39c7280
70.39%: emit SimpleChopper accessors
JohnDeved Mar 21, 2026
8a60dd9
70.41%: match trailer slip-angle accessor
JohnDeved Mar 21, 2026
f650f1e
70.48%: match SimpleChopper behavior refresh
JohnDeved Mar 21, 2026
9654f72
70.57%: match SimpleChopper destructor
JohnDeved Mar 21, 2026
666f5e2
70.81%: scaffold draw behavior accessors
JohnDeved Mar 21, 2026
c2f78d1
70.87%: match more draw accessor helpers
JohnDeved Mar 21, 2026
9740145
70.87%: fix DrawHeli effect layout
JohnDeved Mar 21, 2026
cfd5c2e
70.93%: match drawvehicle hide state helpers
JohnDeved Mar 21, 2026
33f58fd
70.93%: match drawvehicle causality setter
JohnDeved Mar 21, 2026
c1321d2
71.01%: match SimpleChopper construct
JohnDeved Mar 21, 2026
52eed72
71.40%: recover SimpleChopper constructor
JohnDeved Mar 21, 2026
9b20559
71.42%: refine SimpleChopper constructor zeroing
JohnDeved Mar 21, 2026
6820755
71.44%: nearly match SimpleChopper constructor
JohnDeved Mar 21, 2026
c147a3d
71.61%: add draw heli and traffic constructors
JohnDeved Mar 21, 2026
342eb8a
71.89%: add nis and cop draw constructors
JohnDeved Mar 21, 2026
38b02a0
72.09%: add performance and race draw constructors
JohnDeved Mar 21, 2026
8821562
72.09%: improve draw race car construct
JohnDeved Mar 21, 2026
0feaf48
72.32%: add draw performance and race hooks
JohnDeved Mar 21, 2026
868ffe0
72.50%: add drawcar model helpers
JohnDeved Mar 21, 2026
5ad39f3
72.64%: add draw heli cleanup hooks
JohnDeved Mar 21, 2026
d014b75
72.72%: add draw heli service handlers
JohnDeved Mar 21, 2026
74a7478
72.72%: refine draw heli service path
JohnDeved Mar 21, 2026
8380129
72.72%: match draw heli service update
JohnDeved Mar 21, 2026
a88c2bd
72.73%: improve draw heli service bridge
JohnDeved Mar 21, 2026
35e5149
73.64%: add drawcar part visibility logic
JohnDeved Mar 21, 2026
fc5282d
73.89%: add drawvehicle child cleanup
JohnDeved Mar 21, 2026
aa31381
73.94%: refine drawvehicle effect cleanup
JohnDeved Mar 21, 2026
24941ac
74.16%: start draw performance service
JohnDeved Mar 21, 2026
56bcc69
74.16%: match draw race service wrapper
JohnDeved Mar 21, 2026
4bba6ad
74.23%: refine draw performance service math
JohnDeved Mar 21, 2026
fe4f93d
74.28%: match drawcar service bridge
JohnDeved Mar 21, 2026
2c1a148
74.31%: start drawvehicle name lookup
JohnDeved Mar 21, 2026
072b38a
74.32%: match drawvehicle name lookup
JohnDeved Mar 21, 2026
3e26a28
74.37%: match drawvehicle effect destructor
JohnDeved Mar 21, 2026
3bffa7f
74.40%: add drawvehicle part helpers
JohnDeved Mar 21, 2026
ebac423
74.53%: add drawvehicle part trigger path
JohnDeved Mar 21, 2026
7d81617
74.55%: match drawvehicle part transform
JohnDeved Mar 21, 2026
4db85fe
74.64%: start drawvehicle part offscreen handling
JohnDeved Mar 21, 2026
0bbae0a
74.64%: use correct part offscreen attr
JohnDeved Mar 21, 2026
80f9392
74.65%: refine drawvehicle part offscreen timer
JohnDeved Mar 21, 2026
69645b9
74.65%: match drawvehicle part offscreen timer
JohnDeved Mar 21, 2026
58799ec
74.78%: start drawvehicle part trigger creation
JohnDeved Mar 21, 2026
8331221
74.90%: start drawvehicle part begin simulation
JohnDeved Mar 21, 2026
86408a8
74.94%: refine drawvehicle part begin simulation
JohnDeved Mar 21, 2026
1f6b17b
75.15%: add drawvehicle part lifecycle
JohnDeved Mar 21, 2026
ea97e24
75.16%: refine drawvehicle part constructor
JohnDeved Mar 21, 2026
b79e1a8
76.52%: recover RigidBody and SimpleRigidBody collisions
JohnDeved Mar 21, 2026
2f725f9
76.94%: recover SuspensionSpline NIS positioning
JohnDeved Mar 21, 2026
6f1c1c3
77.94%: recover SimpleChopper control update
JohnDeved Mar 21, 2026
72d3dce
78.96%: recover DrawVehicle helpers and RBGrid add
JohnDeved Mar 21, 2026
7457ecf
79.98%: recover DrawCar service flow
JohnDeved Mar 22, 2026
bacb7ed
81.13%: recover SoundCar service skeleton
JohnDeved Mar 22, 2026
2275b6a
82.29%: recover RigidBody ctor first pass
JohnDeved Mar 22, 2026
dc5db41
82.77%: recover RigidBody update
JohnDeved Mar 22, 2026
3390eff
83.31%: recover SimpleRigidBody RB collisions
JohnDeved Mar 22, 2026
2d26055
83.37%: recover SimpleRigidBody SRB collisions
JohnDeved Mar 22, 2026
9c1b404
83.47%: tighten RBGrid add
JohnDeved Mar 22, 2026
d1a7245
83.60%: recover SAP grid destructor
JohnDeved Mar 22, 2026
2f1850b
83.98%: recover DrawHeli first pass
JohnDeved Mar 22, 2026
c8838e0
84.09%: tighten DrawHeli OnTask
JohnDeved Mar 22, 2026
da60e74
84.10%: tighten DrawHeli ctor flow
JohnDeved Mar 22, 2026
1fa9f12
84.29%: recover DrawCar service flow
JohnDeved Mar 22, 2026
37ed25a
84.37%: tighten DrawCar service helpers
JohnDeved Mar 22, 2026
0e60337
84.75%: recover ResetCar road lookup
JohnDeved Mar 22, 2026
57a8722
85.00%: recover ResetCar ctor cluster
JohnDeved Mar 22, 2026
0d0f062
85.18%: recover ResetCar behavior hooks
JohnDeved Mar 22, 2026
d9423e7
85.40%: recover ResetCar reset path
JohnDeved Mar 22, 2026
baf2e7e
85.68%: recover ResetCar state checks
JohnDeved Mar 22, 2026
e3b807f
86.26%: recover ResetCar check flow
JohnDeved Mar 22, 2026
4aad425
86.33%: exact ResetCar reset states
JohnDeved Mar 22, 2026
abb48e2
86.91%: recover SpikeStrip shell
JohnDeved Mar 22, 2026
5abfdcb
87.07%: tighten SpikeStrip behavior logic
JohnDeved Mar 22, 2026
d41dabb
88.03%: recover sound vehicle variants
JohnDeved Mar 22, 2026
a282444
90.00%: recover sound variants and local tails
JohnDeved Mar 22, 2026
4cf6f39
90.41%: tighten NIS and simple body paths
JohnDeved Mar 22, 2026
6e0e2d9
90.49%: tighten damage and obb checks
JohnDeved Mar 22, 2026
ae779b1
90.57%: tighten rigid body constructor setup
JohnDeved Mar 22, 2026
cd7ac24
90.58%: tighten RBGrid setup order
JohnDeved Mar 22, 2026
6a0392e
90.63%: tighten loaded tire brake flow
JohnDeved Mar 22, 2026
931e2aa
90.68%: tighten loaded tire slip flow
JohnDeved Mar 22, 2026
674be51
90.70%: exact handbrake getter and wheel steer
JohnDeved Mar 22, 2026
65af0bf
90.74%: recover Wheel destructor
JohnDeved Mar 22, 2026
0d2c419
90.76%: fix rigidbody init wrapper order
JohnDeved Mar 22, 2026
c4256f4
improve matching guidance
JohnDeved Mar 22, 2026
f046d07
90.79%: tighten simulate and vehicle tails
JohnDeved Mar 22, 2026
231f857
90.95%: tighten SoundCar service flow
JohnDeved Mar 22, 2026
7170d57
91.03%: tighten SoundCar wheel surface flow
JohnDeved Mar 22, 2026
fe3e454
91.06%: exact SoundCar constructor
JohnDeved Mar 22, 2026
d41e923
91.06%: tighten SoundCar slip compare
JohnDeved Mar 22, 2026
45fd8e6
91.06%: exact spline animation setters
JohnDeved Mar 22, 2026
6d0c286
91.07%: exact SuspensionSimple tire constructor
JohnDeved Mar 22, 2026
9215c35
91.08%: exact EngineDragster constructor
JohnDeved Mar 22, 2026
9579be5
91.08%: tighten SimpleChopper constructor zeroing
JohnDeved Mar 22, 2026
38637f2
91.10%: exact Chassis drag lookups
JohnDeved Mar 22, 2026
48c3035
91.10%: tighten SuspensionTraffic constructor zeroing
JohnDeved Mar 22, 2026
2a823d7
Merge remote-tracking branch 'origin/main'
JohnDeved Mar 23, 2026
07af42d
review adjustments
JohnDeved Mar 23, 2026
9adb88b
Merge branch 'main' into zPhysicsBehaviors
JohnDeved Mar 23, 2026
d864711
91.11%: match render packet connection hashes
JohnDeved Mar 25, 2026
fa6b843
91.15%: match light damage helpers
JohnDeved Mar 25, 2026
c27549d
91.17%: match DrawCar destructor
JohnDeved Mar 25, 2026
e6d4329
91.20%: improve ResetCar nearest-road
JohnDeved Mar 25, 2026
9290e72
91.21%: improve ResetCar route checks
JohnDeved Mar 25, 2026
fcbaa87
91.21%: improve DamageRacer visuals gate
JohnDeved Mar 25, 2026
4e258cc
91.21467%: match DamageRacer constructor
JohnDeved Mar 25, 2026
06a9cba
91.22016%: improve DamageVehicle constructor
JohnDeved Mar 25, 2026
a9fb553
91.22129%: match DamageRacer visuals gate
JohnDeved Mar 25, 2026
6c80c4c
91.23645%: improve DamageVehicle constructor
JohnDeved Mar 25, 2026
7a56974
91.23813%: improve SuspensionTraffic constructor
JohnDeved Mar 25, 2026
0929ab6
91.23899%: improve RigidBody Mesh constructor
JohnDeved Mar 25, 2026
3194da8
91.240715%: improve SuspensionTrailer constructor
JohnDeved Mar 25, 2026
aa4df8c
91.24239%: improve SuspensionTrailer zero init order
JohnDeved Mar 25, 2026
1883e36
91.24243%: improve SuspensionTrailer init stores
JohnDeved Mar 25, 2026
1086fa0
91.244225%: improve DrawHeli constructor
JohnDeved Mar 25, 2026
90acc7a
91.26714%: improve DrawHeli constructor layout
JohnDeved Mar 25, 2026
1bda602
91.27005%: improve DrawHeli pointer stores
JohnDeved Mar 25, 2026
7206362
91.270134%: match SuspensionTraffic constructor
JohnDeved Mar 25, 2026
deffd37
91.282166%: match Part CreateTrigger
JohnDeved Mar 25, 2026
5447781
91.28894%: match RBTractor invulnerability
JohnDeved Mar 25, 2026
0f4ce28
91.29351%: improve DrawVehicle destructor cleanup
JohnDeved Mar 25, 2026
ae44041
91.31026%: match DrawVehicle StopEffects
JohnDeved Mar 25, 2026
624bbba
91.31736%: match DrawVehicle PlayEffect
JohnDeved Mar 25, 2026
7623e1a
91.32093%: match DrawVehicle StopEffect
JohnDeved Mar 25, 2026
08f1143
91.32349%: improve DrawVehicle SpawnModel
JohnDeved Mar 25, 2026
436222e
91.32858%: improve DrawVehicle SpawnModel return
JohnDeved Mar 25, 2026
05ec67b
91.33062%: improve DrawVehicle SpawnModel guards
JohnDeved Mar 25, 2026
6a97078
91.34078%: match DrawVehicle Part constructor
JohnDeved Mar 25, 2026
d364341
91.34105%: improve BehaviorSpecsPtr destructors
JohnDeved Mar 25, 2026
f54f951
91.34106%: recover pure virtual slots and fix DrawCar IsHidden
JohnDeved Mar 25, 2026
20bf313
91.34449%: match ResetCar::ShouldReset
JohnDeved Mar 25, 2026
ea3335d
91.34452%: match DrawVehicle::Part::OnEndDraw
JohnDeved Mar 25, 2026
ba288f9
91.34843%: match SoundCar destructor
JohnDeved Mar 25, 2026
e2ca182
91.37869%: match engine destructors
JohnDeved Mar 25, 2026
3d465f7
91.39310%: improve engine destructor cluster
JohnDeved Mar 25, 2026
6ce002b
91.40541%: improve DrawCar::HidePart
JohnDeved Mar 25, 2026
5529fb5
91.41456%: match DamageVehicle::GetHealth
JohnDeved Mar 25, 2026
e80a457
91.41459%: match SoundCop::OnService
JohnDeved Mar 25, 2026
a54de84
91.41467%: match SpikeStrip::OnCollide
JohnDeved Mar 25, 2026
291634c
91.41480%: match SpikeStrip::OnTaskSimulate
JohnDeved Mar 25, 2026
a21313f
90.05% zPhysics: restore _IHandle ownership
JohnDeved Mar 25, 2026
18eae84
90.17% zPhysics: use pointer-style _IHandle ctors
JohnDeved Mar 25, 2026
d11817f
91.45% zPhysicsBehaviors: use pointer-style IModel handle ctor
JohnDeved Mar 25, 2026
35d46ea
90.173% zPhysics/zPhysicsBehaviors: polish physics source shape
JohnDeved Mar 25, 2026
7ed94c5
90.178% zPhysics: improve DoStaging IRaceEngine lookup
JohnDeved Mar 25, 2026
411f95d
90.189% zPhysics: match DoStaging objdiff
JohnDeved Mar 25, 2026
d20ef79
90.196% zPhysics: match Attach objdiff
JohnDeved Mar 25, 2026
91f3455
90.264% zPhysics/FE: improve PVehicle::Construct setup
JohnDeved Mar 25, 2026
0239512
90.277% zPhysics: improve PVehicle::Construct performance flow
JohnDeved Mar 25, 2026
e4244e1
90.286% zPhysics: improve PVehicle::Construct cache path
JohnDeved Mar 25, 2026
7769685
90.311% zPhysics: improve PVehicle::Construct tail
JohnDeved Mar 25, 2026
0c9b55a
90.320% zPhysics: improve PVehicle constructor performance copy
JohnDeved Mar 25, 2026
75ab1c5
90.386% zPhysics: use initializer-list setup in PVehicle ctor
JohnDeved Mar 25, 2026
25a6de9
90.417% zPhysics: branch-localize PVehicle FX task setup
JohnDeved Mar 25, 2026
82cdacd
90.418% zPhysics: trim PVehicle class hash temp
JohnDeved Mar 25, 2026
6633a9d
90.418% zPhysics: sync PVehicle header names and ctor guidance
JohnDeved Mar 25, 2026
eede7cd
90.421% zPhysics: improve PVehicle::Construct performance path
JohnDeved Mar 25, 2026
25c552a
90.424% zPhysics: reserve Construct perf slot earlier
JohnDeved Mar 25, 2026
25119a7
90.535% zPhysics: improve PVehicle::Construct spawn tail
JohnDeved Mar 25, 2026
bbeffbc
90.539% zPhysics: improve PVehicle::Construct cleanup order
JohnDeved Mar 25, 2026
5146778
90.540% zPhysics: improve PVehicle::Construct tail ownership
JohnDeved Mar 25, 2026
5aaeb18
90.540% zPhysics: improve PVehicle::Construct trailer shape
JohnDeved Mar 25, 2026
7e15389
91.538% zPhysicsBehaviors: improve DamageVehicle::OnImpact
JohnDeved Mar 25, 2026
94e17fd
91.538% zPhysicsBehaviors: improve OnImpact DWARF scoping
JohnDeved Mar 25, 2026
727a301
91.538% zPhysicsBehaviors: record OnImpact matching rules
JohnDeved Mar 25, 2026
bab493c
91.545% zPhysicsBehaviors: improve OnImpact damage tail
JohnDeved Mar 25, 2026
52cf342
91.545% zPhysicsBehaviors: improve OnImpact Min ownership
JohnDeved Mar 26, 2026
75ebc00
91.545% zPhysicsBehaviors: record helper ownership rule
JohnDeved Mar 26, 2026
a763109
90.547% zPhysics: match Explosion::OnBehaviorChange
JohnDeved Mar 26, 2026
bde2100
90.547% zPhysics: record QueryInterface handle rule
JohnDeved Mar 26, 2026
c7b637a
90.584% zPhysics: recover FixedVector helpers
JohnDeved Mar 26, 2026
4bf7a99
90.584% zPhysics: record FixedVector stub rule
JohnDeved Mar 26, 2026
677592c
90.670% zPhysics: recover Vector growth helpers
JohnDeved Mar 26, 2026
02602c5
90.727% zPhysics: refine Vector GetGrowSize
JohnDeved Mar 26, 2026
15b1899
90.731% zPhysics: match PhysicsObject::LoadBehavior
JohnDeved Mar 26, 2026
c4bb02d
90.731% zPhysics: record inline temporary rule
JohnDeved Mar 26, 2026
e963da4
91.545% zPhysicsBehaviors: recover DrawHeli heliwash effects
JohnDeved Mar 26, 2026
67dc08a
91.545% zPhysicsBehaviors: record attrib wrapper rule
JohnDeved Mar 26, 2026
f8a2937
90.816% zPhysics: refine PVehicle behavior lookup
JohnDeved Mar 26, 2026
0f1b584
90.816% zPhysics: record Attrib lookup fallback rule
JohnDeved Mar 26, 2026
d125049
90.821% zPhysics: tighten PVehicle AI signature lookup
JohnDeved Mar 26, 2026
f1f79f3
90.822% zPhysics: tune PVehicle signature branches
JohnDeved Mar 26, 2026
8adaa6f
90.823% zPhysics: keep PVehicle lookup null fallback explicit
JohnDeved Mar 26, 2026
05c9e26
90.836% zPhysics: gate PVehicle lookup on Attribute validity
JohnDeved Mar 26, 2026
2d9d193
90.842% zPhysics: inline PVehicle attribute validity check
JohnDeved Mar 26, 2026
a1d3d54
90.842% zPhysics,zPhysicsBehaviors: record empty IUnknown dtor trap
JohnDeved Mar 26, 2026
e463946
90.842% zPhysics,zPhysicsBehaviors: note owner-header cycle exception
JohnDeved Mar 26, 2026
19539cd
90.842% zPhysicsBehaviors: group SimpleChopper facing zeroing
JohnDeved Mar 26, 2026
857497a
90.842% zPhysicsBehaviors: stage SimpleChopper z zeroing
JohnDeved Mar 26, 2026
ef40353
90.842% zPhysics,zPhysicsBehaviors: note owner-header namespace false…
JohnDeved Mar 26, 2026
a901a82
90.849% zPhysics: recover bool StringKey attribute get
JohnDeved Mar 26, 2026
bd942ca
90.849% zPhysics: record bool StringKey get rule
JohnDeved Mar 26, 2026
4aaa8ff
90.857% zPhysics: define StringKey assignment order
JohnDeved Mar 26, 2026
a472852
90.870% zPhysics: invert PVehicle attribute fallback
JohnDeved Mar 26, 2026
6054317
90.870% zPhysics: name PVehicle suspension thresholds
JohnDeved Mar 26, 2026
d20f03d
90.885% zPhysics: split PVehicle AI signature match
JohnDeved Mar 26, 2026
de556cc
90.885% zPhysics: record PVehicle StringKey and AI rules
JohnDeved Mar 26, 2026
bc94982
90.88492%: match SmackableAvoidable constructor
JohnDeved Apr 3, 2026
d2e1b26
91.54937%: match DrawVehicle::ReleaseModel
JohnDeved Apr 3, 2026
c0a5a4d
90.88560%: match PVehicle::LookupBehaviorSignature
JohnDeved Apr 3, 2026
6552b5f
91.56217%: improve DrawVehicle child lookup shapes
JohnDeved Apr 3, 2026
44c5ae9
91.56946%: match DrawVehicle::SpawnModel
JohnDeved Apr 3, 2026
c37600d
91.0%: inline packet connection class hashes
JohnDeved Apr 3, 2026
5157551
91.00348%: improve AvgInductedTorque locals
JohnDeved Apr 3, 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
1 change: 1 addition & 0 deletions .agents/skills/code_style
1 change: 1 addition & 0 deletions .agents/skills/execute
1 change: 1 addition & 0 deletions .agents/skills/ghidra
1 change: 1 addition & 0 deletions .agents/skills/implement
1 change: 1 addition & 0 deletions .agents/skills/line_lookup
1 change: 1 addition & 0 deletions .agents/skills/lookup
1 change: 1 addition & 0 deletions .agents/skills/refiner
1 change: 1 addition & 0 deletions .agents/skills/scaffold
1 change: 1 addition & 0 deletions .claude
55 changes: 54 additions & 1 deletion .github/skills/code_style/SKILL.md

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions .github/skills/execute/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ the produced C++ compiles to byte-identical object code against the original ret

For each function, "done" means both objdiff and normalized DWARF are exact.

Human review is not a substitute for running `dwarf compare`. Each function should hit
its own `verify` gate before you treat it as ready to hand off, commit, or move past.

## Overview

This workflow combines several smaller workflows:
Expand Down Expand Up @@ -88,6 +91,10 @@ definition does not yet exist in the project, follow the scaffold workflow in
`.github/skills/scaffold/SKILL.md` to create the needed header/source definitions
before moving on.

Treat recovered types here as copied reference data, not as hand-designed headers. Copy
the GC DWARF type body into the canonical owner header first and preserve its declaration
order unless PS2 or existing repo-header evidence proves a specific correction.

## Phase 3: Implement Functions

### 3a. Get the updated function list
Expand All @@ -113,6 +120,9 @@ For each missing or nonmatching function, follow the implementation workflow in
- **One at a time.** Keep the tree in a coherent state as you work through the list.
- **Balance new vs fixing.** Don't get stuck on one stubborn function — sometimes
implementing the next function reveals patterns that make the previous one click.
- **Recovered types are not freeform.** If a function forces you to add or fix a type,
copy the DWARF layout into the owner header first. Do not sketch structs/classes from
use sites or reorder declarations just to make the header look nicer.
- **Mismatch triage:**
- `@stringBase0` offset mismatches often resolve as more string literals are added
- If you need to inspect the original string or rodata at a virtual address, use `python tools/elf_lookup.py 0xADDR`
Expand Down Expand Up @@ -152,6 +162,10 @@ python tools/decomp-workflow.py verify -u main/Path/To/TU -f FunctionName
If it fails, follow up with `decomp-workflow.py diff` and `decomp-workflow.py dwarf`
until both checks pass.

Do not queue up several "probably done" functions and leave the DWARF check for later.
Close the `verify` gate per function before moving on whenever feasible; otherwise the
reviewer ends up doing avoidable DWARF triage.

### 3g. Periodic reassessment

After every few functions, re-run the full status check:
Expand Down Expand Up @@ -189,6 +203,8 @@ For any remaining nonmatching functions, make one final pass using the implement
or refiner workflow with all context accumulated during the session.

Do not report a function as complete unless its per-function `verify` check also passes.
Do not hand a function to review as "done except maybe DWARF" — either resolve the DWARF
failure yourself or explicitly call out the blocker and why it remains.

## Phase 5: Report

Expand Down
33 changes: 33 additions & 0 deletions .github/skills/implement/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ Your goal is to decompile a specific function: writing C++ source that compiles

A function is not done until it is exact in both objdiff and normalized DWARF.

Reviewers should not be spending their time rediscovering DWARF mismatches. Before you
report progress, ask for review, hand the function off, or switch to another target, you
must run the per-function verification gate yourself and treat any DWARF failure as your
next task, not as review debt.

## Phase 1: Gather Context

Collect data from **all** of these sources in parallel where possible.
Expand Down Expand Up @@ -85,6 +90,8 @@ Reference the skill for the usage. It gives info based on the virtual address of
- If a repo header already exists for the type, include that header instead of introducing a local forward declaration.
- Preserve the original `class` vs `struct` kind. If the existing header is missing or incomplete, verify the type kind from GC Dwarf and PS2 info before writing a local declaration.
- Preserve real member names and field types too. Do not introduce `pad`, `unk`, or `field_XXXX` members as placeholders for guessed layout; verify the member list from GC Dwarf / PS2 data and leave a TODO when something is still uncertain.
- When a type is missing or incomplete, dump the full class/struct body from GC DWARF and paste that as the starting point. Do not reconstruct the layout from one function's field accesses or from guessed semantics.
- Preserve the dumped declaration order as well as the member order. Do not re-sort methods, group fields by guessed meaning, or otherwise "clean up" the layout unless an existing repo header or PS2 evidence proves a specific correction.

### 1e. Assembly reference

Expand Down Expand Up @@ -125,6 +132,8 @@ and assembly:

Utilize the dwarf information that you get from the lookup skill heavily.

For any recovered type you touch while implementing the function, treat the DWARF body as source material to copy, not prose to paraphrase. Start from the dumped layout in the canonical owner header, then make only the minimal verified fixes.

Don't add explanatory comments during implementation unless you need to document a remaining DWARF mismatch.

Don't use any temporary local variables that don't exist in the dwarf.
Expand Down Expand Up @@ -156,6 +165,16 @@ python tools/decomp-workflow.py verify -u main/Path/To/TU -f FunctionName

If the build fails, fix compilation errors first.

As soon as you have a compiling draft, run the combined verification gate immediately:

```sh
python tools/decomp-workflow.py verify -u main/Path/To/TU -f FunctionName
```

Do this before you spend a long time polishing late instruction mismatches. If `verify`
already shows a DWARF failure, fix that first so you are not polishing code the reviewer
will bounce anyway.

### Check the diff

```sh
Expand Down Expand Up @@ -203,6 +222,17 @@ debug-line owner files for each DWARF `// Range:` block, which makes it much eas
spot inlines that are coming from the wrong header or owner file. Exact line-number
agreement is a useful secondary hint, but file ownership is the first thing to check.

Use this as the default loop when the function compiles but `verify` is still failing:

1. Run `verify`.
2. If DWARF fails, run `dwarf`.
3. Fix the structural issue the DWARF diff is pointing at first: missing/extra locals,
wrong qualifiers or parameter types, wrong inline ownership, wrong helper/header owner,
or a source shape that outlined something that should be inlined.
4. Rebuild and rerun `verify`.
5. Only return to instruction-by-instruction cleanup once the remaining failures are no
longer obvious DWARF-compare issues.

Manual fallback:

After writing your code, you can also run the dwarf dump on the compiled output and then query your output dump with lookup.py to compare your decompiled functions against the originals. Since the address of the function you're working on can keep changing
Expand Down Expand Up @@ -233,6 +263,9 @@ Every mismatched instruction is a signal — don't settle for "close enough".
Reaching 100% instruction matching status is not enough. Stay in the loop until `verify`
passes, which means the DWARF of the function also matches after normalization.

Do not leave a function in a "review-ready" or "good enough for now" state with a known
DWARF failure unless you are explicitly blocked and you document that blocker clearly.

## Phase 5: Report

Summarize:
Expand Down
19 changes: 19 additions & 0 deletions .github/skills/refiner/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,25 @@ approaches that were tried before — instead, apply systematic lateral analysis
- A diff is available (`decomp-diff.py -u <TU> -d <func>`).
- The "obvious" translation from Ghidra has been attempted.
- You have been given the current source code and the diff.
- You have already run the per-function `verify` gate and know whether the remaining work
is still structural DWARF cleanup or true late-stage instruction cleanup.

Refiner is not the place to dump unresolved DWARF debt on a reviewer. If `verify` or
`dwarf` is still showing obvious structural mismatches (missing locals, wrong types,
wrong inline ownership, wrong helper/header owner), fix those first or drop back to the
implementer workflow before doing late instruction polish.

## Phase 1: Read the full diff without collapsing

Before you start a refiner pass, confirm the gate status:

```sh
python tools/decomp-workflow.py verify -u main/Path/To/TU -f FunctionName
```

If the combined gate is failing for reasons that are still clearly visible in the DWARF
diff, address those first instead of treating them as reviewer follow-up.

Preferred shortcut:

```sh
Expand Down Expand Up @@ -151,6 +167,9 @@ DWARF mismatches to watch for:
- Wrong return type
- Missing inlined function records (means an inline call was outlined)

If these mismatches are still present, you are not in pure refiner territory yet. Resolve
them before you ask a reviewer to spend time on the function.

## Phase 4: Report

Summarize:
Expand Down
34 changes: 32 additions & 2 deletions .github/skills/scaffold/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,14 @@ Collect data from **all** of these sources in parallel where possible:

## Phase 2: Setup class

Copy and cleanup the header that you got from running the `lookup` skill using the `symbols/Dwarf` folder. Fix visibility, function order and vtable related things based on using `lookup` on the PS2 types.
Copy the header/type body that you got from running the `lookup` skill using the
`symbols/Dwarf` folder into the canonical owner header first. Do not retype or
reconstruct the layout from memory, from scattered callsites, or from guessed
semantics.

Then do the minimum cleanup backed by evidence: fix visibility, function order and
vtable related things based on using `lookup` on the PS2 types, and clean up duplicated
inline copies when the DWARF emitted both versions.

For formatting and local cleanup while writing the header, consult
`.github/skills/code_style/SKILL.md`. Use it for member-comment alignment, declaration
Expand All @@ -39,6 +46,9 @@ Preserve the real `class` / `struct` kind while scaffolding. Check existing head
then use Dwarf plus PS2 visibility / vtable info to decide the type kind. Even temporary
forward declarations should match the known original kind.

Keep the header prologue in repo order: header guard, `EA_PRAGMA_ONCE_SUPPORTED` block,
then includes. Do not drop project includes ahead of `#pragma once`.

If the repo already has a header for a type you need, include that header instead of
adding a new local forward declaration. Only forward-declare when no canonical repo header
exists yet and you have verified that the ownership is still unresolved.
Expand All @@ -47,11 +57,31 @@ Preserve real member names, types, order, and offset comments while scaffolding.
fill gaps with invented `pad`, `unk`, or `field_XXXX` members for game types; verify the
layout from Dwarf / PS2 data and leave a TODO over the type if a field is still uncertain.

Preserve the declaration order from the dumped type body as well, not just the member
order. Do not regroup methods, fields, enums, or helper declarations for readability
unless an existing repo header or PS2 evidence proves the original owner header used a
different order.

Keep the `// total size: 0x...` comment above the recovered type declaration. When the
recovered type is a `class`, keep explicit access sections and prefer putting methods /
accessors before the member layout block unless existing repo evidence says otherwise.

When a recovered field width is known, prefer explicit-width aliases such as `uint8` /
`uint16` over raw `unsigned char` / `unsigned short`. Use plain `char` for string or byte
buffers and `signed char` when the field is a signed 8-bit counter.

If a recovered type repeatedly walks neighbors, boundaries, or in-object offsets, prefer
small named helpers such as `GetTop`, `GetBot`, `GetNext`, `GetPrev`, or boundary getters
instead of repeating raw pointer arithmetic at each call site.

When those helpers operate on addresses or byte offsets, prefer `intptr_t` / `uintptr_t`
or explicit byte-pointer arithmetic instead of plain `int` address parameters.

Only create headers if it's really necessary (the struct doesn't have inlines so you can't determine in which header file it goes and it's thematically very different from the other structs that use it), otherwise put it into the one you determined to be correct.

The dwarf often has duplicated inlines, clean those up according to the order in the PS2 info.

Write a TODO comment over the struct/class if you aren't 100% sure that it belongs to the correct header.
Write a TODO comment over the struct/class if you aren't 100% sure that it belongs to the correct header, and say why (ownership uncertainty, circular dependency, dwarf caveat, etc.) instead of leaving a bare marker.

## Phase 3: Add needed files to jumbo file and compile

Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
.idea/
.vs/

# macOS
.DS_Store
.AppleDouble
.LSOverride
._*

# Caches
__pycache__
.mypy_cache
Expand Down
Loading