Suggested Description
In this run of River City Ransom , Ryan decides to fight the gangs of students and evil bosses alone because his teammate Alex only slows him down. Several bosses need to be found and beaten before he can enter River City High and beat up the final bad guys (including an obvious imitation of the Double Dragon heroes).
This run obsoletes the previous run by 37 seconds by playing in single-player mode, which greatly reduces lag and makes it easier to exploit the AI. The instant-death glitch frequently used to reduce lag in older runs is only needed once, to deathwarp away from the first boss fight.
Suggested Screenshot
Note
The rerecord count of 775 is inaccurate, and I'm not sure why it's so low. I estimate that the real rerecord count would be 10 times higher.
This run:
• Aims for fastest time
• Abuses programming errors
• Takes damage and uses death to save time
Improvements Made
Every improvement in this run is partly due to the greatly reduced lag. 480 frames are from lag reduction running through uninteresting areas. 1104 frames are from improved fights and lag reduction. 662 frames come from the route change and lag reduction, notably Roxy's dialogue which is 7 seconds faster when she talks to Ryan alone instead of Alex or both. I saved 13 frames by removing blank input between the last button press and the moment the last attack hits the final boss.
Tricks Used
Mashing left+right to run causes that character to glitch out, rapidly going back and forth and falling out of the game world. This glitch is much less useful in single-player mode, but it's a quick way to backtrack away from Rocko and reach Blade faster.
Thrown or kicked trash cans deal damage when they collide with a character, and at the frame they stop moving.
Beginning a flying (run+jump) kick just before landing lets the player bounce and use repeated flying kicks, a high-damage attack also used in unassisted speedruns.
Moose is supposed to be the first boss, but if you avoid fighting him it's still possible to beat the game normally.
Optimizing Fights
In this run, I treat each boss fight as a problem in constrained optimization. Enemy health is stored in 04C1 and 04C2. More time-consuming attacks tend to deal more damage, with flying attacks the most damaging and slowest. Fighting a boss is a matter of knocking his initial health down to 0 as quickly as possible, and repeating the process each time he gets back up with another small amount of health. It is typically faster to not knock down an enemy unless it would bring their health to 0 or it is unavoidable.
An important trick with the trash can is useful against later enemies. When any character throws a movable weapon, that weapon will continue to calculate damage based on that throw as long as it is kicked along the ground. Since Ivan, the Dragon Twins, and Simon have more than triple Ryan's throwing power, these fights each involve letting the boss throw a trash can and repeatedly kicking it along the ground.
Manipulating Luck and AI
Luck in River City Ransom is largely but not entirely based on timing. The easiest and slowest way to manipulate enemy position is to delay entering the next area or picking up the coin that spawns an enemy. Different fights and routes in earlier areas can sometimes influence enemies in the next area. Manipulating enemy spawn positions is important for setting up 2 AIs tobe hit with a single attack.
Napoleon once said "Never interrupt your enemy when he is making a mistake." The AI in this game will assess its priorities and possibly choose a new goal several times per second. The AI may choose to attack in place, run and attack, defend in place, pick up a weapon, or pick up and immediately throw a weapon. Fighting the AI in later stages is a matter of manipulating it into a mistake, such as throwing a trash can at itself, and finding the earliest frame to start a new action without interrupting the AI.
Possible Improvements
I can't think of any obvious improvements to this run, if buying items weren't so slow there would be far more routes to test. This run was recorded in FCEUX 2.2.2 because I'm not familiar with Bizhawk, but I'll use Bizhawk next time for its broader suite of tools. A better understanding of lag and luck in this game could lead to a variety of minor improvements.
Detailed Breakdown
Power on - Roxy Start
75 frames saved in this segment from lag reduction. I chose single player mode for this run, which has the primary advantage of reducing lag significantly in all areas. Ryan is faster than Alex because Roxy has a shorter monologue when she speaks to him, and because he tends to start each area closer to the exit.
Roxy
438 frames saved from the route change (shorter cutscene) and lag reduction.
Roxy end - Rocko Start
111 frames saved from lag reduction and better luck manipulation.
Rocko
48 frames saved from a "faster" fight. Like most fights in this run, this fight would be slower than the last run without lag, but W.S.L. Warehouse is one of the laggiest areas in the game. I managed to manipulate the first set of enemies to a position where they could be fought through the wall, and their coins disappear just in time to spawn some new enemies directly in front of Ryan.
Rocko end - Blade start
31 frames saved in this short area from lag reduction.
Blade
28 frames saved from this fight.
Blade end - Turk start
163 frames saved in this long segment from lag reduction. I was concerned that the Warehouse would be slower because of the inability to glitch through the wall in single-player mode, but it turned out to be faster without all the extra lag from a second player.
Turk
79 frames saved in this fight. I stay on the ground to attack Turk since his health, 78, is a multiple of the 13 damage dealt by a running chain attack.
Mojo
87 frames saved in this fight.
Mojo end - Thor start
100 frames saved from lag reduction here. This mall is the only place to buy shoes, which provide a one-off increases to running speed but take several seconds to acquire.
Thor
40 frames lost in this fight. Reaching Thor in single-player mode simply can't be as fast as the "Yoshi suicide" that launches one character across the pit to Thor.
Thor end - Ivan start
140 frames saved from lag reduction and the route change of only needing to pick up one trash can.
Ivan
135 frames saved from the fight. Ivan and Simon are tied for highest throwing power in the game. Since this game is technically an RPG though speedrunners never bother to level up, it's much faster to let Ivan attack himself repeatedly with that garbage can. After he throws the garbage can once, it will always deal 33 damage and knock him down.
Otis
48 frames saved from this fight. Otis is an unusual fight since it takes so longer to run to the next area after defeating him. It's hypothetically possible to lead him closer to the exit before fighting without losing time, but trapping bosses against the wall is so effective that I use that strategy here.
Otis end - Dragon Twins start
84 frames saved from the route change. Alex starts out lower on the screen and takes a longer time to climb the staircase.
Dragon Twins
456 frames saved in this fight. The Dragon Twins are by far the laggiest fight in this game, and at this point the player character deals so little damage that it's better to attack the Dragon Twins with their own stats. After Andy throws the trash can at Randy, it deals 23 damage per hit, and I repeatedly kick the trash can into one twin and manipulate the other twin's AI to running into more damage. When the trash can stops moving, it deals just as much damage as if it has just been kicked.
Simon
263 frames saved from this fight. The last input is at 19182, but the final boss is defeated at frame 19195. I throw the trash can at Simon once, since otherwise he'll stand around to deliver a speech, and then let him bounce my weapon off the wall into his own head. Now that the trash can is set to deal 22 damage per hit, I repeatedly kick it into Simon or make him walk into it until he dies.
The fastest route to kick the can for the final blow puts Ryan in a position where he will take damage after the input ends. Strangely enough, the first damage taken in this run happens 1 second after input is over and the final boss is defeated.
feos: Accepting as an any% branch. The other run should be relabeled to "2 players" then.
Spikestuff: Heck Yea! 1 player runs are in town. Publishing.