TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #6040: lapogne36's PSX Wild Arms in 1:07:32.68

Console: Sony PlayStation
Game name: Wild Arms
Game version: USA
ROM filename: Wild Arms (USA).bin
Branch:
Emulator: Bizhawk 1.12.2
Movie length: 1:07:32.68
FrameCount: 240295
Re-record count: 32503
Author's real name:
Author's nickname: lapogne36
Submitter: lapogne36
Submitted at: 2018-07-14 20:56:58
Text last edited at: 2018-07-22 15:24:17
Text last edited by: feos
Download: Download (79087 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:

(Link to video)


(Link to video)

Game objectives

  • Emulator used: BizHawk-1.12.2
  • BIOS : SCPH5501.BIN
  • Heavy luck manipulation
  • Heavy glitch abuse
  • Forgoes arbitrary code execution

About the game

The first game of the Wild Arms franchise, featuring Rudy, Jack and Cecilia as they try together each on their own to save the world. The game usually runs at 60 FPS outside of battles and at 30 FPS in battles.

Comments

RNG

The first RNG value is 0, and then every random number is a function of the previous one. I have seen the exact same RNG formula for the game Tenchu: Stealth Assassins despite these games having nothing in common, so I am assuming this is just the RNG formula "by default" for the PSX.

The fact that the first value isn't random is an issue as it means that I may have troubles to get some of the early game rare events.

The RNG is moving only when some randomness is involved. In particular, it will NOT move between each turn of a battle (except if there is a status animation burning RNs like confusion or amnesia, but there is only 1 fight where it could have been useful), which means that once in battle, my luck manipulation options are pretty much limited to choosing another attack to burn a different number of RNs with the animation.

Outside of battle, the most effective ways of burning RNs are to move when the Danger value is higher than the level threshold (i.e. checking if the step is triggering a random battle), to dash (1 RN per frame at max speed, 2 RNs per frame in every other case), and to cross some screen transitions (can burn a fixed amount between 0 and 20+ RNs at each cross). As you can see, it's still relatively slow.

Speed and movement

Surprisingly, there is no speed value in the RAM, only a "dash counter" related to the dash mechanic. Walking speed is 2 and dashing speed is 4 at max dash counter. When you are Out of Bounds and "in" or close to a solid object, you horizontal and vertical speeds will always be 8, whether you are dashing or not (and usually you can't go Up or Left in these situations). Due to the dashing mechanic, optimal movement in this game is far from trivial, especially when you must also avoid random encounters.

Dashing works as follows : While you are keeping the dash button pushed, you can't move and the dash counter increases by 16 every frame (starting at 512) until it reaches the maximum (1024), then you are dashing to the given direction at max speed. If you release the dash button before this, then the dash counter will decrease by 32 every frame until it reaches 0, and in the meantime you are able to move a little bit in any direction (note that if you only hold the button for exactly 1 frame, the direction you are moving to is "random" and you can't modify it). Once it reaches 0 and if you are holding the dash button, then you will start to dash and the dash counter, starting at 512, will increase by 16 every frame until it reaches 1024.

So with that being said, it's faster to go for the second approach as you will start to dash ~14 frames sooner.

If you release the dash button while you are dashing, it will work the same way than the second approach except that you will slide in the direction of your previous dash. It also means that after a slide, you can immediatly dash again.

In the world map, everything about movement works the same but you must divide everything by 2, except the "+16" and "-32" from the dash counter.

Glitches and tricks

  • Item Duplication (Battle) : A well known glitch of this game. Due to the way the game handle the items in the inventory, it's possible to 1) use the "Arrange" command to set an item slot to any item you own and with a quantity of 0 and 2) swap item slots in battle to consume the "wrong" item (it requires at least 2 members in the party). Since 0 minus 1 equals 255, you can get 255 number of any item you got at least once in your inventory. It is used to duplicate the 4 types of apples (+1 in one of the 4 main stats) and thus allowing to finish the game without any level grinding.

  • Item Duplication (Shop) : By doing the previous glitch, you can have 2 or more item slots with the same item and a quantity greater than 0, which isn't normally possible. When selling this item in a shop, the game will always decrease the quantity of the one with the highest item slot number. So if you sell more than that quantity (because you have a higher quantity in the other item slot), you will once again do an underflow.

  • Character Switch OOB : A loadzone is usually 5 pixels in height to ensure that it will always trigger even when dashing (4 pixels per frame at best), however if you switch with another character in your party at the right frame, you can bypass the check for 1 frame, and if you are beyond the loadzone on the next frame then the game will not load the next room, effectively putting you Out of Bounds. Note that for some reason it doesn't work for all loadzone.

  • Gella Coin OOB : Exactly the same glitch except that you use the Gella Coin instead of switching characters, and this one works everywhere.

  • Body Blocking OOB : If for some reason the character you are controlling is at the same position than another character, the game will eject you at the closest available spot, even if said spot isn't crossable (like a wall or a mountain), putting you in an OOB situation.

  • Party Switch Anywhere : Upon returning to Adlehyde after Lolithia's Tomb events, Cecilia leaves the party and the game set the characters switching settings as follow : Rudy and Jack available, Cecilia unavailable. Though even if Jack isn't in the party due to previous glitches, you will be able to switch with him anywhere, even in the world map.

  • Camera Switch : Even if you go OOB in a dungeon, the other rooms aren't loaded so you can't enter them. However if you switch parties while OOB, when reloading the dungeon the game will figure out what room to load based on your party's coordinates, so you can basically go while OOB near a room at the end of the dungeon and then camera switch to load said room.

  • Boat OOB : If you switch to another party while in the boat, the boat will come back to the place where it last landed, and the party in the boat will stay in the middle of the ocean. The ocean is treated the same way as a wall, i.e. while you are in it you can only go Right or Down and you can move like that until you reach land.

  • Hollow Man : The most complex glitch, I will just describe what it does for this TAS. When triggering certain animations with 3 characters (picking up tools, earn Force Powers for example) with a party of less than 3, you will recruit Hollow Man (basically a very glitchy character). If you take the Mega Berry from his Rune slot then Cecilia will be warped to Elw World (her coordinates will stay the same than before so you have to be careful about her position before going to the Elw World), and it will happen every time he is recruited again.

Miscellaneous

  • Stats

STR : 1 extra point of STR = 1 extra point of ATP

VIT : 2 extra point of VIT = 1 extra point of DFP

SOR : 2 extra point of SOR = 1 extra point of MGR. The higher the SOR the stronger the spells. Ceclia's weapons only give STR so they are pretty muck useless

RES : 10 extra point of RES = 1 extra point of PRY. The RES is also used to determine turn order in battle.

LUCK : Can be WORSE/BAD/NORMAL/GOOD/BEST. It is randomly determine when starting a new game (can't be WORSE/BEST in this case), winning a battle or staying in an inn (including the one to trigger the Adlehyde's festival). The higher the LUCK, the higher the chance of doing a counterattack or a critical hit. Also affects the Randomizer spell.

  • Randomizer

Here is the list of the "useful" spells you can get with Randomizer and their approximate odds (assuming BEST LUCK) :

Spell Odds
Gaia Crash 1/16
Inferno 1/16
Keen Silf 1/16
Ice Needle 1/16
Plasma 1/16
Glow Blast 1/16
Dark Ray 1/16
Hi Saint 1/60
Hi Dark 1/60
Hi Rainbow 1/60
Mega Break 1/60
Blizzard 1/60
Mega Flame 1/60
Twister 1/60
Best Shot^ 1/60
Hi-Blast^ 1/70
Hi-Spark^ 1/70

Total odds : ~60,0%

^The three last spells are far weaker than the rest and thus not desirable against some bosses. Total odds without these spells : ~55,4%

  • Force

During battle, your characters accumulate Force (start at level 0 and can go up to level 4) that they can consume to use special attacks. With a higher Force level, you can also inflict more damage (up to ~30% bonus) and take slightly less damage. The Force is a value going from 0 to 100 and that increases the Force level by 1 every 25 Force points. You gain Force points at the beginning of the turn (+10), when taking damage (+5), when attacking (+5 and +5 if it hits and +10 if it's a critical hit) or using a special ability (+6), and when counterattacking (+5). These values are doubled under some conditions when you are defending.

  • Typical RNG Burning in a Battle

Start of the turn : Burn RNs to determine the turn order (doesn't burn any RN if the RES is too high or too low)

When your character is attacking (except for spells) : Burn a fix ammount of RNs (specific to each attack) + 2 Rns for damage (+1 RN if Force level is greater than 0) + Extra RNs if it was a critical hit When your character is casting a spell : Burn 2 RNs to determine the spell (Randomizer only) + 3 RNs to determine a "special value" in the RAM + a fix ammount of RNs (specific to each spell) + 1 Extra RN if "special value" is different from 0 + 2 RNs for damage (+1 RN if Force level is greater than 0)

When enemy must choose an attack : Burn RNs When enemy is attacking (except for spells) : Same than with your character (without the Force level extra RN) When enemy is casting a spell : Same than with your character (without the Force level extra RN) except that the "special value" isn't updated but it is still used to determine if there is an Extra RN to burn or not

Route planning

Here is a quick summary of the route :

  • Finish the three prologues to be able to form a party with Cecilia+Rudy
  • Trigger the Party Switch Anywhere Glitch and pick up Cecilia again
  • Recruit the Hollow Man to go to the Elw World and then get the Gella Coin
  • Start the events to get the boat
  • Get the ocarina to Body Block OOB into Artica Castle
  • Beat Lady Harken to unlock Ka Dingel
  • Go from Ka Dingel to Malduke and end the game

Route comments

Jack's Prologue

I waited a little bit before choosing his prologue to manipulate the LUCK of my three characters (I needed GOOD LUCK for Rudy and Cecilia and at least NORMAL LUCK for Jack). No boss to beat here, so it's only rush to the exit while avoiding encounters.

Rudy's Prologue

In the middle of the cave there is a very long straight line that I can't cross with a single dash no matter what, so I used this interruption to set my game options (MVS : Quarter View to save time in battles and Cursor : Memory). I also stopped a second time later but it was mandatory this time to avoid the bat curse (highly increase the encounter rate).

Boss : Zombie (800 HP)

His Rotten Breath always deals 15 damage (20% max HP) while his normal attack deals 15 damage at Force level 0 but can go down to 10 at Force level 4. The optimal battle would be a 7 turns without healing, but the odds of surviving up to the turn 7 are already extremely low (out of 18000 different combinaisons my script made it alive to turn 7 only 9 times), and in addition Rudy must attack first and deal enough damage to kill the boss, which is also very unlikely(Hand Cannon only has 85% accuracy).

With that being said, I tried but I just couldn't do it so I went for the second best option, which is to heal at some point in the battle and deal the finishing blow on turn 8. This strategy was far more likely to happen so I looked for a battle with as little time waste as possible (Rotten Breath and counterattacks) while still killing the boss, and I ended up with this fight with only 2 Rotten Breath and 2 counterattacks (total damage dealt : 801).

Cecilia's Prologue

The Tear Drop animation has a "random" duration so I often waited several frames before using it to save a lot of frames. I binded the Freeze, Valkyrie and Escape spells and renamed them to 1 letter. Each of these spells will appear exactly 3 times in dialog boxes (the ones that cost 1 frame per letter),and deleting a letter costs 2 frames, so it's a net gain of 1 frame per spell.

In the library I got a Magic Carrot (recovers 50 MP but cannot be purchased, and I will need 2 of them) and a Capuche (+1 DEF, which is mandatory for the next boss fight). After burning the third book I was in a really bad spot because there was no more randomness (so the RNG won't move if I don't move or dash) in the room and a lot of RNs led to random encounters.

Boss : Nelgaul (300 HP)

Valkyrie will always deal 40 damage (40 or 50 at Force level 4) and Freeze will deal at least 33 damage and at best 37 (Force level 0) or 50 damage (Force level 4). I have enough MP only for 1 Valkyrie, so my aim was to get a RNG to 7 turn this boss with only Freeze and (eventually) 1 Valkyrie somewhere.

On the survivability side it's not really better than Rudy's previous fight, the boss' normal attack deals 9-10 damage while his brutal attack deals 15 damage, and I need to take 6 of them with my 55 HP. However unlike Rudy, Cecilia has a 1% parry chance, and it's pretty much mandatory to proc it at least once in order to reach the turn 7.

Cecilia's counterattacks deal a very little 6-7 damage, but anything is good to take because without them I would need an average of 43 damage per spell. In the end I finally found a working RN after restarting the game several times to change the prologues order, and it was one without even having to use Valkyrie (which has a longer animation than Freeze).

Lolithia's Tomb + Festival

Finding a good fight for the item duplication glitch was hard. In particular, I wanted to avoid time consuming animations like spells and counterattacks.

Boss : Magtortous (2000 HP)

Poor turtle. The hardest thing in this battle was to manipulate BEST LUCK for Cecilia (and while Rudy also got it, I still had to manipulate his LUCK when going to the inn). Cecilia got 253 apples because she will need the 2 last one on her shopping section and Rudy was given just enough apples to kill the 2 lizardmen (120 HP each) of the next fight in a 1 attack + 2 counters setting. I also got my second Magic Carrot here since it's the fastest one available after the one in the library.

Gella Coin and Shopping

Cecilia did some item duplication in the shop, and sold just enough apples to purchase what will be the final equipments of both her and Jack (getting them is a good time save as else a lot of apples would be needed to compensate the lack of stats). For both Cecilia and Jack, I delayed the last apples consumption as late as possible to be able to precisely use the good number of apples needed to finish the game.

Pleasing Garden and Ghost Ship

The Pleasing Garden can be at 9 different places, and I manipulated it to be at the closest possible one. You can't Camera Switch in the Ghost Ship (or else the game will softlock), so the Grapple is mandatory. After the Pleasing Garden, Jack learnt Sonic Vision, which is a very strong level 3 Force Power. It's effect are to multiply for this turn his ATP by 3 (and breaking the 999 cap), his RES by 3 and his DEF by 50% (same effect than if he was defending), as well as granting him 100% crit and PARRY chances.

Boss : Captain Geist (8000 HP)

The optimal fight is to defend 3 turns in a row while countering on the third one so that Jack can use SonicVision on turn 4, and that's what I got.

After the fight, I went to the beach to get an important Goat Doll. (RTA runners purchased them by making a detour to the black market, but in a TAS it's possible to finish the game with only one)

Boat and Artica Castle

Now that we have the boat, we can get what we need for the late game (Randomizer, Saint, Teleport and the Ocarina) and go directly to Artica Castle.

Boss : Lady Harken (18000HP)

Among her attack, Magnum Fang is the strongest and most time consuming one, so she should either never use it, or at worse use it when Jack is defending or using Sonic Vision. The strategy here is to attack her 3 times, including 1 critical hit, so that Jack has enough Force to cast a second Sonic Vision on turn 6.

A slightly faster fight would be to only attack 2 times and to crit both times, but in addition to the low odds of this happening, it's unlikely to kill Lady Harken with only these 4 attacks. Critical hit damage range at Force level 4 and 999 ATP is 1807-3056 and Sonic Vision damage range is 5448-7236.

Ka Dingel + Malduke

Before starting the boss rush it's important to speak of the 2 runes available for Cecilia, the Water Rune and the Courage Rune. The first one increases SOR by 10%, while the second one increases both DEF and RES. The ability to manipulate the RES during a fight is very strong as you can manipulate the turn order, and so the number of RNs burned during a turn (as well as opponent's actions), and in addition to the option to use either Randomizer or Saint (only for Zeikfried and Motherfried though), I can go to up to 4 similar actions in 1 turn leading to 4 different RNG.

Boss : Boomerang (26000 HP) + Luceid (15000 HP)

This fight is the reason I got the Goat Doll. Even with 999 VIT, Boomerang weakest attack (Crescent Fang) will still deal more than 100 damage, and so it's impossible to survive 2 turns.

Luceid's Black Fang (50% chance of using it, 100% chance of dealing less than 180 damage) and Boomerang's Crescent Fang (35% chance of using it, 23% chance of dealing less than 180 damage with the Courage Rune and 776 VIT) are the only attacks which may not kill Cecilia.

The strategy is simple : On the first turn, the first attack must be either Black Fang or Crescent Fang (with less than 180 damage), so that the Goat Doll procs on the next attack and brings Cecilia back at full HP. On second turn, Cecilia attacks before Luceid, and somehow Boomerang uses Crescent Fang and doesn't manage to kill Cecilia. On turn 3 I just have to attack before Boomerang.

The odds of this simple strategy are still pretty low since Cecilia is using Randomizer (Saint can't deal 6000+ damage on Boomerang) and Boomerang is faster than Luceid most of the time. Assuming that Luceid has 50% chance of acting before Boomerang and that Cecilia has 100% chance of acting before both of them, the odds are still only of ~0.4%. For your information, the strategy I used here only works with a RES between 113 and 119.

Boss : Zeikfried (40000 HP) then Motherfried (43000 HP)

Putting them together because you can't manipulate the RNG between the two fights (the only thing you can do is wait a little bit before the Motherfried fight for her battle animation to burn 30 less RNs, which is something common for most boses and I have no idea why).

Zeikfried is relatively easy since he has 40000 HP (meaning a 3 turns clear isn't possible but a t=4 turn clear easy to achieve, though it can't be with more than 1 Saint), the only thing is that he is far faster than the 2 next bosses and acting first on turn 4 requires a mix of apples and "luck". We don't want to see his Negative Rainbow (33% chance of using it) but 1 or 2 Zeik Impulse is ok, though Hi-Shield is of course welcome as it's a free turn.

Motherfried doesn't have Holy resistance so both Saint and Randomizer are fine against her. However we don't really want to see anything else than Phatima's Miracle and Als Magna (the later one has a 40% chance of inflicting a very bad status), and it's not like Cecilia can take Phatima's Miracle forever, especially if she took some Zeik Impulse.

Boss : Zeik Tuvai (49200 HP)

First on a little side note, the Mega Berry from the Hollow Man is really handy to get back at full HP.

Now about this boss... first thing first, his HP means that Cecilia must kill him in 5 turns, and she must do 9999 damage or close to every time. Second, he is slow. So slow that even without the Courage Rune, the game isn't burning any RN to check who should go first. These two points means that 1) I can only use Randomizer and 2) I can't manipulate the RNG by switching between the Water and Courage Runes.

So my strategy is straight forward and I can only hope to find a starting RN that goes well from turn 1 to turn 5. There are only a few things the boss is allowed to do : a normal attack (15%), Sleep/Silence/Fatal Blow (10% each, with only 25% chance of missing) and Confusion (10%, 50% chance of missing).

If my calculations are not wrong, the odds of this strategy working are of ~0.03%, or once every 3350 RNs. Fortunately there was a working RN close (and I needed to burn at least 4000+ RNs for the next one) that only required to not dash in a small section of the way to the boss.

Possible improvements or ideas

  • Better luck manipulation (most likely to happen against the first boss and for the item duplication fight)

  • Better movement

  • This run is basically "send Jack to Artica Castle ASAP and get the Ocarina on the way", so any new glitch leading to this faster is likely to lead to an improvement

Special Thanks

  • The Wild Arms discord for their advice and suggestions while I was making this TAS, especially cha0s
  • Ruadath for his Jack's and Rudy's prologue old WIP
  • 三ツ矢氏 for his TAS on Nicovideo which served as a basis

Suggest screenshot :

frame 188653


ThunderAxe31: Judging.

ThunderAxe31: The amount of efforts and care that has been put in the making of this run is impressive. Also, a lot of knowledge specific of the game has been put in use in order to optimize the route and the luck manipulation.

For what concerns entertainment, there wasn't a lot of response from the audience, but I'm confident that even people not familiar with the game can appreciate this movie. The fights are short, the glitches are funny, and on the other hand the movie is not too much hard to follow in general, despite the sequence breaks.

Additionally, I also have to note that this run is not applicable for the Vault tier, since it follows the restriction of not making usage of Arbitrary Code Execution, which would allow to beat the game faster. However, since I consider this movie to be very entertaining, and at the same time is providing much more contents compared to a hypothetical run with no restrictions, I'll allow this movie as an extra branch.

Accepting for Moons.

feos: Pub after cadash.


Similar submissions (by title and categories where applicable):