wip: checkpoint FIFA 17 SBC research for Windows migration
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""DIMENSION 3 SEASONS q1.
|
||||
HYPOTHESIS: the Seasons refusal is decided in the front-end SCRIPT layer, not in
|
||||
CardsDLL. If so, the CardsDLL season loaders make no network call, only read a
|
||||
u16 count, and the CompetitionManager mode setters have ZERO in-DLL callers
|
||||
(driven from outside). Prove or refute by enumerating callers of the mode setters,
|
||||
decompiling the loader chain, and tracing the NOSEASONS event.
|
||||
CONTROL: for the "zero callers" claim, a control with KNOWN callers must be in the
|
||||
same batch -- I use FUN_180057560 (LoadOfflineSeasons) itself, which per prior work
|
||||
is reached from the RPC dispatch, so callers() must be NON-empty for it if the
|
||||
mechanism is sound; if callers() returns [] for a function I know is called, the
|
||||
query form is broken and no absence claim is valid.
|
||||
"""
|
||||
import traceback
|
||||
try:
|
||||
targets = {
|
||||
"FUN_180101680 (CompMgr mode set A)": 0x180101680,
|
||||
"FUN_1801016c0 (CompMgr mode set B)": 0x1801016c0,
|
||||
"FUN_180057560 LoadOfflineSeasons": 0x180057560,
|
||||
"FUN_1800576b0 LoadSeasons": 0x1800576b0,
|
||||
"FUN_180057230 LoadCurrentOfflineSeason": 0x180057230,
|
||||
"FUN_180057330 (NOSEASONS fire?)": 0x180057330,
|
||||
}
|
||||
for name, a in targets.items():
|
||||
print("=" * 70)
|
||||
print(name, hex(a))
|
||||
try:
|
||||
cs = callers(a)
|
||||
except Exception as e:
|
||||
cs = "ERR %r" % e
|
||||
print(" callers:", cs)
|
||||
|
||||
# NOSEASONS literal
|
||||
print("=" * 70)
|
||||
print("NOSEASONS literal search")
|
||||
for lit in (b"NOSEASONS\x00", b"NOSEASONS"):
|
||||
hits = find_all(lit)
|
||||
print(" ", lit, "->", [hex(h) for h in hits])
|
||||
# xrefs to the reported literal addr
|
||||
print(" xrefs to 0x1801f92c0:")
|
||||
for x in xrefs_to(0x1801f92c0):
|
||||
print(" ", hex(x[0]), x[1], x[2], hex(x[3]))
|
||||
|
||||
# CompetitionManager singleton
|
||||
print("=" * 70)
|
||||
print("DAT_1802e6328 (CompetitionManager singleton) xrefs:")
|
||||
for x in xrefs_to(0x1802e6328):
|
||||
print(" ", hex(x[0]), x[1], x[2], hex(x[3]))
|
||||
|
||||
sys.stdout.flush()
|
||||
os._exit(0)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
sys.stdout.flush()
|
||||
os._exit(0)
|
||||
Reference in New Issue
Block a user