# The career's unique-part stars (the "other" events STAGE_n_PERF_k / STAGE_n_VISUAL_k, opened by the stage's outrun
# wins) on the map, in a stage-3 career save: careerlist logs the stage's outrun wins, the other events
# open and the map's markers.  Then the career is put to stage 5 by hand with 11 outrun wins, so STAGE_5_PERF_3 (6)
# and STAGE_5_VISUAL_5 (11, the wide body kit) open; then the save's first won race counts as S5_URL_9 instead, and
# both go: the game's open list (0x527D30) holds only Caleb's race (S5_CIRCUIT_36) in stage 5 once S5_URL_9 is won,
# and adds no other events then (as the PC game: its SMS still comes on the 11th win, from 0x533A90).  Last the
# stage-3 star is engaged: during it the map's only marker is its shop.  The map is opened with plain taps (tapuntil
# matches a screen seen before); the play page in WSL draws a few frames a second, so the dumps wait long.
#   node web/tools/roam-pair.mjs --solo --page play --size 1280x720 --seed <a stage-3 career save tree>
#        --a Uni:career_unique_star.txt[:NFSU2_ROAM=0]
0     bot on
+0    waitroam 6000
+0    bot off
+600  careerlist
+0    dump s3_radar
+60   dump s3_radar
+60   poke 0x862400 6                 # stage 3's outrun wins (Career +0x72D8 + 3 x 0x104 + 0xDC) = 6
+0    call 0x533310 ecx=0x85ad40      # the open lists and the map's markers again, as an outrun's end (0x541320) does
+0    call 0x4f92a0                   # the minimap's icons again (same)
+30   careerlist
+600  dump s3_6wins_radar
+60   dump s3_6wins_radar
+60   tap M
+90   tap M                           # (the first M after a while is sometimes not taken; a second does not close it)
+900  dump s3_6wins_map
+60   dump s3_6wins_map
+60   dump s3_6wins_map
+60   tap ESCAPE
+300  poke 0x862838 5                 # the stage (Career +0x7AF8): 5
+0    poke 0x862608 11                # stage 5's outrun wins = 11
+0    call 0x533310 ecx=0x85ad40
+0    call 0x4f92a0
+30   careerlist
+0    peekx 0x862840 2                # the first event record: hash, then +6 = 1 (won)
+60   tap M
+90   tap M
+900  dump s5_11wins_map
+60   dump s5_11wins_map
+60   dump s5_11wins_map
+60   tap ESCAPE
+300  poke 0x862840 0xf874a551        # that won race now S5_URL_9 (bStringHash)
+0    call 0x533310 ecx=0x85ad40
+0    call 0x4f92a0
+30   careerlist
+60   tap M
+90   tap M
+900  dump s5_url9_map
+60   dump s5_url9_map
+60   dump s5_url9_map
+60   tap ESCAPE
+300  poke 0x862838 3                 # back to stage 3 (the first record stays S5_URL_9: no race of stage 3)
+0    call 0x533310 ecx=0x85ad40
+0    call 0x4f92a0
+30   careerlist
+0    showgo STAGE_3_PERF_1
+120  tapfe RETURN UI_EngageEventDialog.fng 60 900
+30   tap LEFT
+20   tap RETURN
+300  careerlist
+300  dump s3_run_radar
+60   dump s3_run_radar
+60   tap M
+90   tap M
+900  dump s3_run_map
+60   dump s3_run_map
+60   dump s3_run_map
+60   log UNIQUE DONE
+10   quit
