wip: checkpoint FIFA 17 SBC research for Windows migration
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""DIMENSION 5 -- query 6. The hub tile builder DOES compute enabled/disabled tile
|
||||
destinations (GOTO_DRAFT_DISABLED, GOTO_MANAGER_QUEST_DISABLED). Find the SBC and
|
||||
MANAGER-QUEST tile cases and the exact gate condition, and whether an ENABLED variant
|
||||
destination exists (GOTO_MANAGER_QUEST / GOTO_SBC / GOTO_SQUAD_BUILDING...).
|
||||
|
||||
Map the gate-byte accessor vtable slots read at the top of FUN_1800b2680 to model
|
||||
displacements (slot 0x2c8/0x2d0/0x320) by reading each stub's disp32.
|
||||
"""
|
||||
import traceback
|
||||
try:
|
||||
print("=== search enabled/disabled destination strings across binary ===")
|
||||
for n in (b"GOTO_MANAGER_QUEST", b"GOTO_SBC", b"GOTO_SQUAD_BUILDING",
|
||||
b"GOTO_SQUAD_BUILDING_SETS", b"MANAGER_QUEST", b"SQUAD_BUILDING_SETS",
|
||||
b"GOTO_DRAFT"):
|
||||
for h in find_all(n):
|
||||
print(" %#x %r" % (h, rd_str(h, 60)))
|
||||
|
||||
# map model vtable slots to disp: read accessor stub bytes 0f b6 81 <disp32> c3
|
||||
print("\n=== model gate-byte accessor slots (DAT_1802e6398 vtable static 0x18021c2a0) ===")
|
||||
vtbase = 0x18021c2a0
|
||||
for slot in (0x2c8, 0x2d0, 0x320, 0x2b0, 0x270, 0x2e0):
|
||||
tgt = qword(vtbase + slot)
|
||||
b = read_bytes(tgt, 8)
|
||||
disp = None
|
||||
if b[0:3] == bytes.fromhex("0fb681"):
|
||||
disp = int.from_bytes(b[3:7], "little")
|
||||
print(" slot +%#x -> %#x bytes=%s disp=%s"
|
||||
% (slot, tgt, b.hex(), hex(disp) if disp is not None else "?"))
|
||||
|
||||
# Now dump the hub builder and print the SBC + manager-quest tile blocks with context
|
||||
d = dec(0x1800b2680)
|
||||
lines = d.splitlines()
|
||||
print("\n=== hub builder around SBC tile image + 0x110 + 0x230 manager quest ===")
|
||||
for i, ln in enumerate(lines):
|
||||
if ("GameHub_SBS" in ln or "MANAGER_QUEST" in ln or "0x230" in ln
|
||||
or "0x110" in ln or "DREAMSQUAD" in ln):
|
||||
lo = max(0, i-14); hi = min(len(lines), i+4)
|
||||
print(" --- ctx @line %d ---" % i)
|
||||
for j in range(lo, hi):
|
||||
print(" " + lines[j].strip()[:150])
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
Reference in New Issue
Block a user