42 lines
1.8 KiB
Python
42 lines
1.8 KiB
Python
"""DIMENSION 4 q3: do the draft/tournament MODE-STATE literals have native gating
|
|
callers, or are they inert descriptor names driven from the script layer?
|
|
|
|
Hypothesis: like the Seasons CompetitionManager setters (FUN_180101680/1801016c0,
|
|
zero callers), the draft/tournament mode nodes are named descriptors with no native
|
|
entry-gate; entry is decided in the packed front-end. Test by reading the xref
|
|
callers of each mode-state literal and decompiling the first native caller of each.
|
|
|
|
Control: 'NOSEASONS' xref is known (FUN_180057330). Re-confirm the Seasons setters
|
|
have zero callers as the reference negative.
|
|
"""
|
|
import traceback
|
|
try:
|
|
def xr(a, label):
|
|
print("\n--- %s @ %#x ---" % (label, a))
|
|
xs = xrefs_to(a)
|
|
for frm, typ, fn, ent in xs:
|
|
print(" from %#x %s in %s (%#x)" % (frm, typ, fn, ent))
|
|
return xs
|
|
|
|
xr(0x1801fbb50, "fefifa::FUTDraftOfflineMode")
|
|
xr(0x1801fbbc8, "fefifa::FUTOnlineDraftMode")
|
|
xr(0x180209a70, "CentralDraftModeOffline")
|
|
xr(0x180209ae0, "CentralDraftModeOnline")
|
|
xr(0x1801ebca0, "draftentry")
|
|
xr(0x1801fbbe8, "fefifa::FUTOfflineTournament")
|
|
xr(0x1801fbc08, "fefifa::FUTOnlineTournament")
|
|
xr(0x180218f18, "FUT::TournamentInfo")
|
|
xr(0x18021f870, "DraftMode(0x18021f870)")
|
|
xr(0x1801fbbd9, "DraftMode(0x1801fbbd9)")
|
|
|
|
# Seasons CompetitionManager control: setters + singleton
|
|
print("\n=== CONTROL: Seasons CompetitionManager setters callers ===")
|
|
for a in (0x180101680, 0x1801016c0):
|
|
print("callers(%#x) = %s" % (a, callers(a)))
|
|
print("xrefs_to DAT_1802e6328 (CompetitionManager singleton):")
|
|
for frm, typ, fn, ent in xrefs_to(0x1802e6328):
|
|
print(" from %#x %s in %s (%#x)" % (frm, typ, fn, ent))
|
|
except Exception:
|
|
traceback.print_exc()
|
|
print("QUERY_DONE")
|