# Cover shoots in free roam while friends' cars load.  A shoot's start reads
# the player's car type's PARTS_ANIMATIONS.BIN through the car loader
# (0x4CE770 -> 0x633A00 -> 0x61C600) and its end lets it go (0x499FA0 ->
# 0x61C5B0).  Here both are called while a friend's car is loading (the
# loader's busy word 0x8A329C set), SHOOTS times, among two crowds: one
# stays, the other comes and goes nearer, so the server's hub swaps the
# player's 32 friends again and again and their cars load in bursts.  Before
# overrides.c's sub_0061c600 the part animations' read went out beside the
# friend's, and its callback stepped the loader with that one still under
# way; busy stayed set and the next car load with the rides pool full waited
# for it for good (2026-10-24 report: game stuck, sound looping).  Good: no
# trap, no [watchdog] report, quit at the end; each wait logged ("[loader]
# ...").  NFSU2_TEST_LOADER_OVERLAP=1 leaves the game's way, for the A/B
# (2026-10-24: hung in 0x63AE70 after 24 shoots; with the fix 30 passed,
# waits of 10 to 96 ms).
#   web (all in WSL): the server; roam-crowd --n 32 --cars all --spread 50
#   for good, and in a loop roam-crowd --n 32 --first 32 --cars all --spread 5
#   --seconds 30, then 20 s without; run-suite.mjs --script
#   roam_crowd_shoot.txt --marker shoot_end --net <name> --env NFSU2_ROAM=1
#   --env NFSU2_ROAM_WEBTEST=vlan --env NFSU2_ROAM_COLLIDE=0
#   --env ROAM_PROFILE=<name> --env SHOOTS=30 --timeout-scale 4
0     tapuntil RETURN MC_Background.fng 120 4000
+120  tap LEFT
+30   tap RETURN
+240  tap BACK
+8    tap BACK
+8    tap BACK
+8    tap BACK
+20   type ${ROAM_PROFILE}
+60   tap RETURN
+240  tap RETURN
+0    waitfng GarageMain.fng 3000
+300  tap LEFT
+60   tap RETURN                      # Career
+300  tap RETURN                      # Start New Career
+0    waitfng UI_EngageMessageDialog.fng 8000
+120  tap RETURN                      # SMS: Continue
+0    roam waitroam 3000
+0    roam smsauto on
+0    roam mp waitpeers 20 6000
+600  status crowd
+0    loop ${SHOOTS}
+0    roam wait *0x8a329c 1 6000
+0    roam call 0x633a00 ecx=0x8a3288
+90   roam call 0x61c5b0 ecx=0x8a3288
+120  status shoot
+0    endloop
+600  status shoot_end
+60   quit
