tools: let the submenu sweep target NEW GAME, for the DIFFICULTY reset question

DIFFICULTY opens on NORMAL, the second of four, so it is the screen that separates
'resets to the named item' from 'resets to the top item' -- the question
sylpheed-port has had open for several iterations.

The probe is safe on this path without modification: it presses A to enter, one
DOWN, then B to leave, and never presses A inside a submenu, so it cannot reach
SELECT DATA and the guest throw at PC 0x82307128. Noted in the source so nobody
adds one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
sylph-decoder
2026-08-31 01:38:26 +00:00
parent 40ae9adb09
commit 20d4694378

View File

@@ -39,7 +39,14 @@ from ring_row import ring_row, main_menu_item, NAMES
LOG, OUT = sys.argv[1], sys.argv[2]
W, H = 1280, 720
PAD = os.path.join(os.path.dirname(os.path.abspath(__file__)), "pad.py")
TARGETS = [1, 2, 3] # LOAD GAME, TUTORIAL, OPTIONS. NEW GAME excluded.
# LOAD GAME, TUTORIAL, OPTIONS by default. Overridable so NEW GAME (0) can be
# driven for the DIFFICULTY question.
#
# ⚠️ NEW GAME IS SAFE FOR *THIS* PROBE AND ONLY THIS ONE. Its forward path --
# Ⓐ on a difficulty -> SELECT DATA -> guest throw at PC 0x82307128 -- crashes the
# game. This probe presses Ⓐ to ENTER, one DOWN, then Ⓑ to leave, and never
# presses Ⓐ inside a submenu, so it cannot reach SELECT DATA. Do not add an Ⓐ.
TARGETS = [int(x) for x in os.environ.get("SWEEP_TARGETS", "1,2,3").split(",")]
T0 = time.time()