Submission #7900: tom_mai78101's GBA River City Ransom EX in 08:48.03

(Link to video)
System Game Boy Advance Emulator Bizhawk 2.8
Game Version USA v1.0 Frame Count 31538
ROM Filename River City Ransom EX (USA).gba Frame Rate 59.7275005696058
Branch Rerecord Count 1813
PowerOn Authors tom_mai78101
Game River City Ransom EX
Submitted by tom_mai78101 on 12/23/2022 3:19:00 AM

Submission Comments

Emulator:

Bizhawk 2.8.0 + TAStudio, using mGBA v0.9.1.

Emulator Setting:

  • Skip BIOS: FALSE
  • RTC Use Real Time: TRUE
  • RTC Initial Time: 1/1/2010 12:00:00 AM
  • Save Type: AUTO-DETECT
  • RTC: AUTO-DETECT
  • All other settings: DEFAULT

ROM CRC32:

8686436E

BIOS:

  • GBA

BIOS SHA1:

  • 300C20DF

BIOS Region:

  • Worldwide

BIOS Revision:

  • N/A

Discussion Thread

Please do visit the discussion thread, as the thread now contains enough information regarding RNG manipulation, and things you have to keep an eye on for optimizations.

Brief Game Introduction:

The game revolves around Kunio and Ryan (the 2 main protagonists) who, after knowing about Ryan's girlfriend being kidnapped, goes to River City High School to rescue her. Along the way, Kunio and Ryan encounters many gangs in their turfs, and fights them to seek out the bosses behind the nefarious plot.

Aims for:

  • No Damages
  • RNG Manipulation
  • Game Property Changes
  • Fastest Time
  • Abuses glitches

No Damages:

Kunio-kun (protagonist) does not take any damages, especially in this Crazy difficulty run. One single hit will take off nearly 1/3 of HP (stamina + willpower) if not careful, and can waste extra unnecessary frames. There is, however, a death involving a pitfall. Not sure if that counts as taking damage, but it is necessary for Kunio to warp back to the shopping area for faster travel time.

RNG Manipulation:

Unlike the previous run, RNG manipulation is achieved by intentionally allowing the game to decrement a random number generation counter, that counts from 0x270 to 0x1. After 0x1, it goes back to 0x270. This is called the "RNG counter". The lottery ticket prize generation is determined by another value associated with the RNG counter, called the "determinant". It helps to guarantee the lottery ticket prize generation to be unique, after every cycle, rather than being predetermined by the RNG counter that loops between 0x270 and 0x1.
In this run, RNG manipulation is used to obtain consecutive prizes using Lotto Tix (in-game lottery tickets) in order to have enough money to buy stats-boosting items, as well as manipulating the store stock refresh item listings. For this run, RNG manipulation is used to buy a higher Lotto Tix prize (3rd prize), and to manipulate the store item stocks to get a special item, Skaterz.
For every couple of frames, the game calculates what random action the enemies will take, such as jumping, running, moving up/down/left/right, attacking, or running away, subtracting from the RNG counter. There is much to learn from the mechanics of the RNG counter and how it affects the CPU enemies' responses to player actions, and enemy types throughout the areas. You may see me do weird behaviors that priorizes RNG manipulation over speed, for this reason.
  • Manipulating a lottery ticket faster. The current run takes about 15 seconds to manipulate a 3rd prize win, while ideally it'd be possible to win 2nd prize with as little delay as possible.
  • Manipulating weak enemies to run away more often, or have the cowardly Entrees gang appear more often.
  • Manipulating our AI allies to attack more often. There is an option to change their strategy on the pause menu, but they still don’t attack nearly as much as player character.
  • Learning more about Reputation, where it's stored in memory, and how much we need to recruit Ivan. Fighting dishonorably can be faster than fighting while to maintaining a good reputation.
  • Experiment with kicking weapons against grounded bosses
  • Finding a more efficient death warp after leaving Merlin’s. If found, look into recruiting Conan instead of Ivan.
What this run covers: 1) Manipulating lottery tickets faster, 2) Kicking weapons against grounded bosses, 3) Finding more efficient warps.
The first one is about manipulating lottery tickets faster. This can be done, but you would never have any idea of what potential improvements you will get, unless you can efficiently defeat the gang types in MOOSE and ROCKO areas, and get to Merlin's Secret as close to 0x1 or 0x270 as much as possible. In this run, I tried to get the maximum value possible, 0x1E3. There are cases where, even if you get the same RNG counter values, the determinant values can increment more than one time within a single frame. Therefore, it's not guaranteed you will get the fastest 3rd Prize winnings, but it's more probable to start from the extreme ends of the RNG counter.
The second one, I had the chance of trying this out on IVAN. Unfortunately, when bosses recover by jumping into the air, they have a ton of invincibility frames until they land on the ground. These invincibility frames can also trigger when they are hit by a large weapon 1 time, including being kicked towards them. This does not have any potentials for improvement.
The third one is the best item in the game for speedrunning. In Merlin's Secrets, there is an item called "Skaterz", which allows you to warp to your enemies' back when you initiate an attack action. Attack action is when you do any of the combinations of buttons that will trigger a special technique, including techniques belonging to someone else when you obtained the Custom Char scroll item. However, you require to turn this technique off for the final boss fight, as you cannot guarantee to force the bosses out-of-bounds without being able to toss them behind your back, and warping away from the ideal position to pull this off.

Gameplay Modifiers:

The game allows the player to customize some gameplay properties, or called "game modifiers", "stats modifiers" or "gameplay properties", such as gravity, extra damage dealt to enemies, stat boosts, and store item stock refresh rates.

Abuses Glitches:

There are some areas in the game where it's possible to finish off the bosses pretty quickly by aligning their positions beyond the wall boundaries. This will cause them to overflow their X positions, making them out of bounds, and will fail to land on the ground, falling to their deaths. I had to use this in the boss fights, the Warehouse Battle, and the Secret Event Boss Fight.

Speedrun Information:

  • This run aims for the fastest possible time.
  • Uses the hardest difficulty.
  • Does not unlock secret events.
  • Does not recruit any additional allies.
  • Has performed RNG manipulation. However, enemy actions determined by RNG is still poorly understood.
  • Has performed warping/teleportation.
  • Has performed max speed boost.

Other Information:

  • I do not use any passwords in this run.
  • There are 2 places where the game has glitched physics I use in the game, to speed up the boss battles.
  • I did not save and restart the movie in the middle. The game doesn't have a save data system. Instead, the game saves player profiles, which is useless in this TAS run.
  • I had the help from Seirea from Speedrun.com for giving inspiration to do this TAS run.
  • I had the help from Chamale for providing a breakthrough in routing optimizations from earlier attempts.
  • I had the help from Samsara after revealing new information about the game, reputation points, and new ideas.

Commentary:

The main goal of this run is to defeat bosses with the fastest time possible under CRAZY difficulty:
Story Boss Fight order: MOOSE -> ROCKO -> BLADE -> TURK -> MOJO -> THOR -> IVAN -> DRAGON TWIN -> SLICK
Most of the run's commentary are already explained from this playground submission here.
Notable changes include tweaking the gameplay properties to:
  • Allow more damages applied to enemies (and thus can deal more damage than usual).
  • Have stronger gravity (to pull the boss enemies down towards the ground faster as they recover, to prevent invincible frames being applied.)
  • This run forgoes any accumulated reputation points, which are necessary for recruiting new allies. Don't expect any new allies here.
Obtaining a lot of Excaliburs have 2 effects in this run:
  • Increases the attack damages dealt to the enemies.
  • Increases stun duration when the damage is dealt to the enemies.
The latter effect is more pronounced when hitting IVAN and DRAGON TWIN. "Standing stunlocks" is a finite state machine game mechanic in River City Ransom EX where if the enemy lands on the ground just before it transitions to an "On Ground" state, it first checks if there are any hitbox collisions first before it begins the transition. Otherwise, it will transition to the "Stun / Knockback" state, where the enemy would slide backwards as they get hit.
I take full use of this game mechanic by pitting the enemy against the wall while performing a standing stunlock, so that when they are stunned, they do not slide outside of my attack range from my chain attacks. With strong attack stats + standing stunlock, the next attack will cause them to get knocked up into the air. If they hit a wall, they will perform a rolling animation, which will "reset" their finite state to "Mid-air" state, which will then allow the game to perform the "On Ground" state conditional checks. Rinse and repeat. This "standing stunlocking" attack effectively allows the player to attack the NPC enemies while skipping any invincibility frames (i-frames for short) on the enemies.
I have also tested and verified that the special technique, Acro Circus, in the game is much weaker than Grand Slam. This is because of the stat-boosting item, Excalibur, only applies the largest boost to WEAPON, PUNCH, KICK, STRENGTH, and WILLPOWER stats. Grand Slam utilizes the WEAPON stat, while the default Dragon Kick technique utilizes the KICK stat. Acro Circus uses the THROW stat, so there are no changes to this.
Using Grand Slam with Chains have a special property in the game: Allows tall, diagonal hitboxes to deal damage to enemies high in the sky and low on the ground simultaneously. This is thus far, the fastest and strongest way to deal enemies when fighting against bosses. The second, best weapon is the Metal Pipe and Wooden Stick, but I didn't use it since the weapon doesn't have an extended hitbox frame on the initial attack frame unlike the Chains.
There is a point in the game where I begin manipulating gravity, when fighting against IVAN and DRAGON TWIN. Both bosses have high recovery stats (High WILLPOWER), so they will recover mid-air. By increasing the gravity, the bosses will fall to the ground faster than when the gravity is set to Default. Doing so will allow me to deal hits without encountering their invincibility frames, which can happen when they recover while in mid-air. Using Grand Slam with Chains on boss enemies have the tendency for the boss enemies to recover mid-air, preventing me from dealing damage. This is most likely a game-balancing preventive measure, to prevent the player from spamming techniques and dealing cheap shots.
You may be wondering, "Why couldn't you manipulate the gravity right at the beginning, when you were changing the gameplay properties near the start?". The gravity property will affect how I defeat TURK and MOJO bosses. Both bosses have the right recovery stats, that's enough to knock them off their feet while allowing me to pound them with chains as they land at the right times.

ThunderAxe31: Claiming for judging.
ThunderAxe31: 74 blank frames removed at the end of the movie file.
ThunderAxe31: All right, this movie seems well optimized. The goal chosen is very straight-forward: beat the game on the hardest difficulty, using a clean save and without in-game cheats. Accepting.

EZGames69: Processing...

Last Edited by EZGames69 8 days ago
Page History Latest diff