mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
feat(phase-23): lora_grind --min-nins (skip the saturated small band for a fresh-band pass)
This commit is contained in:
+9
-4
@@ -91,8 +91,10 @@ def nins(s_path):
|
||||
if re.match(r'\s*/\*\s*[0-9A-Fa-f]+\s+[0-9A-Fa-f]+\s+[0-9A-Fa-f]{8}\s*\*/', l))
|
||||
|
||||
|
||||
def open_stubs(b, max_nins, tried, min_reach=1):
|
||||
"""still-INCLUDE_ASM funcs for binary b (main + split .c) whose .s exists and is <= max_nins ins.
|
||||
def open_stubs(b, max_nins, tried, min_reach=1, min_nins=1):
|
||||
"""still-INCLUDE_ASM funcs for binary b (main + split .c) whose .s exists and is in
|
||||
[min_nins, max_nins] ins. min_nins>1 skips the (often saturated) smallest band so a later pass can
|
||||
target a fresh larger band without re-grinding the small failures.
|
||||
min_reach>1 keeps only fns byte-identical across >= min_reach overlays (the propagation multiplier)
|
||||
and ranks high-reach-first; min_reach=1 keeps all, smallest-first (no reach cost)."""
|
||||
stubbed = set()
|
||||
@@ -104,7 +106,7 @@ def open_stubs(b, max_nins, tried, min_reach=1):
|
||||
continue
|
||||
for sd in glob.glob(os.path.join(REPO, "asm/%s/nonmatchings/*/%s.s" % (b, fn))):
|
||||
n = nins(sd)
|
||||
if 0 < n <= max_nins:
|
||||
if min_nins <= n <= max_nins:
|
||||
rch = reach_of(b, fn) if min_reach > 1 else None
|
||||
if min_reach > 1 and (rch is None or rch < min_reach):
|
||||
break # below the reach threshold (or unsigned) -> skip
|
||||
@@ -170,6 +172,9 @@ def near_class_hist():
|
||||
def main():
|
||||
ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
ap.add_argument("--max-nins", type=int, default=15)
|
||||
ap.add_argument("--min-nins", type=int, default=1,
|
||||
help="skip stubs smaller than N ins — target a fresh larger band without re-grinding "
|
||||
"the (often saturated) small failures; default 1 = no floor")
|
||||
ap.add_argument("--min-reach", type=int, default=1,
|
||||
help="only draft fns byte-identical across >= N overlays — the x reach propagation "
|
||||
"multiplier (the fleet lever); default 1 = all open stubs, smallest-first")
|
||||
@@ -203,7 +208,7 @@ def main():
|
||||
continue
|
||||
if a.max_batches and batch_i >= a.max_batches:
|
||||
break
|
||||
stubs = open_stubs(b, a.max_nins, tried, a.min_reach)
|
||||
stubs = open_stubs(b, a.max_nins, tried, a.min_reach, a.min_nins)
|
||||
if not stubs:
|
||||
continue
|
||||
did_work = True
|
||||
|
||||
Reference in New Issue
Block a user