#60 PART 2: the RE-EXPORT -- dark code 90KB -> 41KB, coverage 87.3% -> 93.5%
Installed JDK 21 + Ghidra 12.1.2 (no admin, %LOCALAPPDATA%\bt411-tools beside DXSDK/cmake; runner uses 8.3 SHORT paths because Ghidra's .bat expands %JAVA_HOME% unquoted and the profile has a space). New tooling: reference/ghidra_scripts/ExportGaps.java -- ExportAll's exact output contract PLUS a gap-fill pass (force disassembly + createFunction at E8 call targets outside functions, data->code pointers at a plausible prologue, and the census's discovered starts; iterated to a fixpoint, logged to gapfill_report.tsv). tools/ghidra_reexport.sh (headless runner, 'reprocess' mode) and tools/gapdiff.py (score two censused exports); gapcensus.py now censuses any export dir. Results: 6267 -> 6472 functions (+205 created in 2 rounds: 195 census starts, 6 call targets, 4 data pointers; 56.1KB newly covered), ZERO decompile failures. Dark real code 90.4 -> 40.8 KB (54.8% recovered); game-side dark 53.1 -> 21.1 KB; regions 428 -> 321. EVERY historically dark function now has pseudocode -- including @0x4c05c4 VehicleDead, the absence that opened this issue. VALIDATION: the new pseudocode confirms this week's hand reconstruction of the crouch field-for-field (mapPosture/duckState/squatCapable/myomerEff/ novice gate/SetLegAnimation/ForceUpdate/stability alarm) -- and exposed one branch the raw pass missed: AIRBORNE AUTO-RISE (mode 3|4 && legState 1 -> forced squ), now implemented in mech4.cpp and re-benched un-regressed. PROMOTION: the re-export is canonical reference/decomp/; the previous export is preserved at reference/decomp/archive_2025export/ so old `part_0NN.c:LINE` citations still resolve (addresses are stable across both; line/shard membership is NOT -- cite @ADDR). New lead recorded: @0x4c0904 is the MASTER BTPlayer Performance (team resolution, EndMission console post, score heartbeat) -- our @0x4c083c PlayerSimulation attribution needs a re-check. KB: source-completeness, gotcha #20 (the rule is cheap now -- look it up), CLAUDE.md router/layout. Log: phases/phase-04-gap-census.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
e69c0d7aa8
commit
f44be87ab2
@@ -49,6 +49,24 @@ void __cdecl __GetExceptDLLinfo(undefined4 *param_1)
|
||||
|
||||
|
||||
|
||||
/* @00401074 file=? name=FUN_00401074 */
|
||||
|
||||
int FUN_00401074(void)
|
||||
|
||||
{
|
||||
char *pcVar1;
|
||||
int iVar2;
|
||||
|
||||
pcVar1 = (char *)FUN_004dee74(s_HEAPSIZE_004e0373);
|
||||
if (pcVar1 == (char *)0x0) {
|
||||
return 0x600000;
|
||||
}
|
||||
iVar2 = FUN_004dd1e0(pcVar1);
|
||||
return iVar2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* @0040109c file=? name=FUN_0040109c */
|
||||
|
||||
undefined4 __cdecl FUN_0040109c(int param_1,undefined4 param_2)
|
||||
@@ -9601,6 +9619,43 @@ float * __cdecl FUN_0040a4d8(float *param_1,float *param_2,float *param_3,float
|
||||
|
||||
|
||||
|
||||
/* @0040a67c file=? name=FUN_0040a67c */
|
||||
|
||||
void __cdecl FUN_0040a67c(int *param_1,float *param_2)
|
||||
|
||||
{
|
||||
float fVar1;
|
||||
float fVar2;
|
||||
float fVar3;
|
||||
float fVar4;
|
||||
int *piVar5;
|
||||
byte bVar6;
|
||||
byte bVar7;
|
||||
byte bVar8;
|
||||
byte bVar9;
|
||||
|
||||
bVar9 = 0x3e;
|
||||
fVar1 = param_2[3];
|
||||
bVar8 = 0x2c;
|
||||
fVar2 = param_2[2];
|
||||
bVar7 = 0x2c;
|
||||
fVar3 = param_2[1];
|
||||
bVar6 = 0x2c;
|
||||
fVar4 = *param_2;
|
||||
piVar5 = FUN_004db92c(param_1,0x3c);
|
||||
piVar5 = FUN_004db634(piVar5,(float10)fVar4);
|
||||
piVar5 = FUN_004db92c(piVar5,bVar6);
|
||||
piVar5 = FUN_004db634(piVar5,(float10)fVar3);
|
||||
piVar5 = FUN_004db92c(piVar5,bVar7);
|
||||
piVar5 = FUN_004db634(piVar5,(float10)fVar2);
|
||||
piVar5 = FUN_004db92c(piVar5,bVar8);
|
||||
piVar5 = FUN_004db634(piVar5,(float10)fVar1);
|
||||
FUN_004db92c(piVar5,bVar9);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* @0040a738 file=? name=FUN_0040a738 */
|
||||
|
||||
undefined4 FUN_0040a738(void)
|
||||
@@ -9897,86 +9952,3 @@ float * __cdecl FUN_0040ac6c(float *param_1,float *param_2)
|
||||
|
||||
|
||||
|
||||
/* @0040ad2c file=? name=FUN_0040ad2c */
|
||||
|
||||
float * __cdecl FUN_0040ad2c(float *param_1,float *param_2)
|
||||
|
||||
{
|
||||
float local_1c;
|
||||
float local_18;
|
||||
float local_14;
|
||||
float local_10;
|
||||
float local_c;
|
||||
float local_8;
|
||||
|
||||
FUN_00408328(&local_c,param_2 + 1);
|
||||
FUN_00408328(&local_14,param_2);
|
||||
FUN_00408328(&local_1c,param_2 + 2);
|
||||
*param_1 = local_c * local_14 * local_1c + local_10 * local_18;
|
||||
param_1[4] = local_8 * local_1c;
|
||||
param_1[8] = local_c * local_10 * local_1c - local_14 * local_18;
|
||||
param_1[1] = local_c * local_14 * local_18 - local_10 * local_1c;
|
||||
param_1[5] = local_8 * local_18;
|
||||
param_1[9] = local_c * local_10 * local_18 + local_14 * local_1c;
|
||||
param_1[2] = local_8 * local_14;
|
||||
param_1[6] = -local_c;
|
||||
param_1[10] = local_8 * local_10;
|
||||
return param_1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* @0040adec file=? name=FUN_0040adec */
|
||||
|
||||
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
||||
|
||||
float * __cdecl FUN_0040adec(float *param_1,float *param_2)
|
||||
|
||||
{
|
||||
float fVar1;
|
||||
float fVar2;
|
||||
float fVar3;
|
||||
float fVar4;
|
||||
float fVar5;
|
||||
float fVar6;
|
||||
float fVar7;
|
||||
float fVar8;
|
||||
float fVar9;
|
||||
float fVar10;
|
||||
float fVar11;
|
||||
float fVar12;
|
||||
float fVar13;
|
||||
float fVar14;
|
||||
float fVar15;
|
||||
float fVar16;
|
||||
|
||||
fVar1 = *param_2;
|
||||
fVar2 = param_2[1];
|
||||
fVar3 = param_2[1];
|
||||
fVar4 = param_2[2];
|
||||
fVar5 = param_2[2];
|
||||
fVar6 = *param_2;
|
||||
fVar7 = param_2[3];
|
||||
fVar8 = *param_2;
|
||||
fVar9 = param_2[3];
|
||||
fVar10 = param_2[1];
|
||||
fVar11 = param_2[3];
|
||||
fVar12 = param_2[2];
|
||||
fVar13 = param_2[3] * param_2[3];
|
||||
fVar14 = *param_2 * *param_2;
|
||||
fVar15 = param_2[1] * param_2[1];
|
||||
fVar16 = param_2[2] * param_2[2];
|
||||
*param_1 = ((fVar13 + fVar14) - fVar15) - fVar16;
|
||||
param_1[1] = (fVar1 * fVar2 - fVar11 * fVar12) * _DAT_0040aedc;
|
||||
param_1[2] = (fVar5 * fVar6 + fVar9 * fVar10) * _DAT_0040aedc;
|
||||
param_1[4] = (fVar11 * fVar12 + fVar1 * fVar2) * _DAT_0040aedc;
|
||||
param_1[5] = ((fVar13 - fVar14) + fVar15) - fVar16;
|
||||
param_1[6] = (fVar3 * fVar4 - fVar7 * fVar8) * _DAT_0040aedc;
|
||||
param_1[8] = (fVar5 * fVar6 - fVar9 * fVar10) * _DAT_0040aedc;
|
||||
param_1[9] = (fVar3 * fVar4 + fVar7 * fVar8) * _DAT_0040aedc;
|
||||
param_1[10] = ((fVar13 - fVar14) - fVar15) + fVar16;
|
||||
return param_1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+1717
-631
File diff suppressed because it is too large
Load Diff
+641
-1405
File diff suppressed because it is too large
Load Diff
+1600
-1058
File diff suppressed because it is too large
Load Diff
+1446
-1272
File diff suppressed because it is too large
Load Diff
+1385
-1204
File diff suppressed because it is too large
Load Diff
+1270
-1443
File diff suppressed because it is too large
Load Diff
+1585
-1870
File diff suppressed because it is too large
Load Diff
+2342
-4161
File diff suppressed because it is too large
Load Diff
+4239
-2305
File diff suppressed because it is too large
Load Diff
+3006
-1927
File diff suppressed because it is too large
Load Diff
+1927
-4586
File diff suppressed because it is too large
Load Diff
+5553
-5835
File diff suppressed because it is too large
Load Diff
+8703
-3999
File diff suppressed because it is too large
Load Diff
+4880
-6204
File diff suppressed because it is too large
Load Diff
+7241
-1515
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user