Repository navigation
Conversation
|
See 2d8606c |
eadf1c4 to
b86fb18
Compare
|
I am implementing an opt-in AIC behavior extension (recruitment/sorties, one next-wave reserve, opponent/retaliation policy, bounded split raids) under the UCP owner, with the native path retained for non-opted-in personalities. I found this existing reconstruction PR and will preserve its ownership rather than open a competing AICState reconstruction. Reference inspected: your 970160c and SHC 1.41 SHA256 3bb0a8c1e72331b3a30a5aa93ed94beca0081b476b04c1960e26d5b45387ac5a. Read-only disassembly confirms the attack-role gate at 0x4D3C15–0x4D3C20 returns when the per-player state at playerStride+0x115E99C is nonzero. Please let me know the preferred way to contribute any bounded, assembly-verified prerequisites to your existing work. I am keeping policy changes out of OpenSHC and have not enabled or advertised the unverified reconstruction as a runtime replacement. Shared loader prerequisites are tracked in UnofficialCrusaderPatch/extension-aicloader#17; there is no claim of native, MP, save/replay, or performance acceptance yet. |
|
A bounded discrepancy from the same SHC 1.41 audit: For the acquisition prerequisite, the existing UnitsState |
970160c to
84f90bf
Compare
|
Currently remaining: Full progress: |
|
@TheRedDaemon I have requested your review. I assume it will take a while because there are so many functions to review. In my PR view on GitHub they do look very neatly organized, so perhaps you can browse through it. There is one function that has functional differences, this is: generateSiegeCreationInformation Many non-100% are due to frequent MACRO usage, offset calculations that are cached in the original and added in our version or vice versa. The rest is register scheduling/allocation issues. Also let's squash and merge this PR. |
32189f9 to
8a55196
Compare
Cpp-Linter Report
|
Copying the original's loop and block structure back into the source made four AI::AICState functions worse; the literals, where a value is computed, and arms with identical bodies are the parts that transfer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ccmp The same change (one physical copy of a block the original shares) was worth +1.3 points on aiCreateSiegeUnits and -10 on renderDebugDataAiInfo, and quick_diff's ratio called the first one wrong. Also record the call count from push_pattern.py as the signal that found it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Currently did only a first pass using Claude. Not all methods yet, I ran out of tokens. I used TRD's skill documents, ghidra-mcp, and the tools/mcp/decomphelper.py script succesfully.
I guess it is better if I use
git restore --source otherbranch path/to/myfile.txtto pick the 100% files and push them separately, deleting those files from this PR