TAS Guide

From Yoshi's Island Speedrunning Wiki
Jump to: navigation, search

TAS Guide by CarlSagan42 copied from: https://docs.google.com/document/d/1eAu2uGRv2lzPgwdiaNjN1D7T5OzDFxZuRFj94uCBfeQ (Thanks!)

Things You Will Need

  1. An emulator!
    snes9x 1.43rr (rr stands for rerecording, aka savestates) has a bit less lag than console, but snes9x 1.51 has way more lag, so we always use snes9x 1.43 for the swag. The alternative is bizhawk, available on tasvideos.org, which is better in terms of accuracy but is a resource hog piece of shit that eats your computer and crashes and is slow to use. For beginning I recommend snes9x 1.43rr -- it is indistinguishable from console for everything other than load times/lag.
    snes9x 1.43rr: https://snes9x-rr.googlecode.com/files/snes9x-1.43-rerecording-v18-win32.zip
    Bizhawk (if you want to try it): http://sourceforge.net/projects/bizhawk/
    Bizhawk (prerequisites): http://sourceforge.net/projects/bizhawk/files/Prerequisites/bizhawk_prereqs_v1.1.zip/download ← run this file first
  2. A Yoshi’s Island ROM!
    Most are done on the US version 1.0 because TASes are made for entertainment, so reading the levels and text is valuable. Just google it.
  3. A ramwatch file!
    You can use this inside the emulator to watch various memory values in the game, such as yoshi’s speed and position, boss health, etc.
    Carl’s Ramwatch File: http://www.mediafire.com/view/mc16lnp51l1apcc/yi(2).wch

The Basics

Making a movie and using savestates

  1. Open the ROM, bind your controls and just get used to making and reloading savestates and just playing on emu if you aren’t already familiar. You will make and reload savestates more than anything else while making a TAS, so you want to be really familiar with the hotkeys. You can rebind the savestate buttons in config → hotkeys.
    • Get used to using all 10 savestate slots and bind them however you want. The defaults are fine for TASing. I actually TAS using a controller (think xbox/playstation controller). I bind the shoulder buttons to savestates, and some of the analog directions. The rest are F4-F10 on keyboard.
  2. Bind “frame advance” to your favorite possible button to press (config → hotkeys → speed). I use X on my gamepad since it isn’t used in YI. Get a feel for what the button does. It immediately pauses, and you push it to go forward one frame. For any button presses, you hold down the buttons while paused, then hit frame advance and it will input those buttons on the next frame. This is weird to get used to so I recommend messing with it for a while.
    • For example: to jump to the right, you hold down jump and right, then hit frame advance with both pressed down.
    • To look left and right every other frame, you would hold left, push frame advance once, hold right, push frame advance once, hold left, push frame advance once, etc etc.
    • To get out of frame advance, simply unpause. I recommend binding a “pause” hotkey -- you’ll also use it often. Mine, strangely, is pushing in the analog stick on my gamepad, I guess since it’s really accessible while playing.
  3. Pause somewhere and make a movie by going to file → movie → record new movie. Make sure to select “record from now.” I recommend starting somewhere to do a trick, or to play a room. Fun ideas: godly 4-4 milde fight, 5-4 hundo skip, egg juggle in any cave or place with walls, etc. The emulator is now recording everything you do. Make sure the frame counter is on (push the period key by default to toggle it).
    • Before doing anything, make two savestates: one to continually reload to play with, and one as a backup (make it but forget it for now). I use my controller for the one I plan to use a lot and like F10 for the backup
    • Unpause and play at full speed. Don’t worry about frame advance yet unless you want to try it. Try to do whichever room you’re in, and get used to reloading the savestate to retry. Try using slowdown. Bind the slowdown keys and try playing at 50% speed.
    • Open ramwatch by going to tools → ramwatch and loading the file listed above. Feel free to rename and customize it as you desire. Try watching how yoshi’s speed changes and hits a max as you move.
  4. When you get something you like, immediately savestate even if you don’t like all of it. This is the beauty of TASing: you can go back and pick up ANYWHERE. This revolves around switching the emu between read-only mode (to watch your movie) and read-write mode (to edit it).
    • Pause after you did something cool that you liked and switch to read-only mode (hotkey default is shift+8). Now use that backup savestate you made to jump back to the beginning of your movie. Without the backup savestate you would have to reopen the movie.
    • Because it is in read-only mode, you are no longer playing. Unpause, it will play back your movie. No inputs you enter will register in read-only mode. Reload the savestate to replay it as many times as you want.
    • Pause it on a part you think could be improved. This can be anywhere you want to suddenly gain control and start playing again. Once paused on the spot, switch back to read+write mode with shift+8.
    • Make a new savestate here and reload it before doing anything! Until you reload the savestate, it’ll still be in replay mode and won’t let you edit (just a quirk of snes9x). If you don’t make a savestate, you’ll have to go back to read-only mode, rewatch, and repause. Always make 50000 savestates everywhere so you never accidentally overwrite something important or lose something.
  5. Continue editing your movie by taking the parts you like, and going back and changing the parts you don’t like. Do this until you are comfortable using savestates, slowdown, and switching between read+only and read+write mode.
    • This is the basis of making a TAS movie! This is how I made the real time TASes (without slowdown).
    • It better have lots of swag in it TriHard.
    • Don’t use this to make fake speedruns plz.

Movement Mechanics

  1. Frame advance is the key to making a real-looking TAS. Playing the game one input at a time is very different even from just using slowdown. To try out using some frame advance techniques, I recommend starting in level 1-2 because 1-1 is a little more complicated. Any level is fine though. *PLAY ON PATIENT IF YOU WANT TO TRY EGGSHOTS*
  2. Load 1-2 and make a new movie starting on the first frame that the “10” appears in the upper corner -- this is the first frame of input for any level.
  3. Make at least 3 savestates: two to play with, and one you will never overwrite so you can go back to the beginning. Open ramwatch and focus on the x-speed ram values. The numbers are in subpixels yoshi moves per frame of time, i.e. 760 = yoshi moves 760 subpixels in one frame.
  4. Acceleration: to gain maximum speed from a stop, use the inputs <>>>> (left followed by 4 rights), and then <>>> (left followed by three rights) over and over (so <>>>><>>><>>><>>><>>> etc etc) until you reach max speed.
    • Use frame advance to input the movements by holding the desired direction, and then tapping frame advance once.
    • Left followed by 4 rights (<>>>>) only works for the very first set of acceleration inputs when yoshi is starting from 0 speed.
    • Looking at the speed ram value: at max speed you’ll notice it oscillates between 3 values if you’re just holding forward. We typically use the middle value when talking about a given speed because it is the average of the three. So the speed you’re aiming for is 760 (average).
    • Rather than counting exactly how many <>>>’s you need, savestate when your speed is getting close to 760, then hold right and tap frame advance a few times and watch the ram value. If it stops on 760 you’re good to go. If not, reload your savestate, add another <>>>, make a new savestate, and check again. It’s a waste of time to restart back at 0 speed every time -- use savestates to prevent doing extra work.
    • <>>> provides no speed benefit once you reach max speed: it is only to accelerate to max faster. This acceleration method gets to 760 speed in 29 frames, while regular acceleration (just holding >) gets to 752 speed in 49 frames.
  5. Once you are at 760 speed, try jumping over platforms and enemies using frame advance. See if you can play a little bit of the level without losing 760 average speed. Be careful to only load your most recent savestate unless you are in read-only mode, or else you will overwrite it.
    • If your speed starts dropping in a jump, you probably held jump too long and started a flutter.
    • Remember to avoid slopes -- they mess with your speed. This can be advantageous, but don’t worry about it for now unless you want to.
    • There is no need to press forward while in the air. Yoshi’s speed freezes when you release forward while jumping. Notice, however, that it cannot ever stop on the highest speed oscillation. Ideally you want it to stop on the middle value (760) not the lower value (744).
    • Not mixing up savestates is hard. You’ll get better at it with time. Every time you get something good, make one of your savestates dedicated to that spot before continuing so you don’t lose progress. So again, that’s 1 savestate at the very start of the level, 1 at the start of your current section with the “good stuff” you’ve already done behind it, and at least 1 to continually reload trying to get a new good section. Use the same hotkeys every time and it’ll get ingrained into memory. Remember you can switch between read-only and read+write mode as described earlier to pick up editing from anywhere in the movie regardless of whether or not there was already a savestate there.
  6. Try tonguing without losing speed. To do this, you either need to be in the air, or tongue an enemy just before running into them.
    • You cannot press left or right while the tongue animation is playing or yoshi will slow down. This means you need to jump first, and then tongue.
    • Holding the tongue button down for more frames increases the tongue size.
    • Try to jump, then release forward so that yoshi’s speed freezes on 760. Then add in a forward or uptongue so that the animation finishes before yoshi hits the ground.
    • You need to resume holding forward as yoshi’s feet are about to touch the ground.
  7. Try making eggs without losing speed. Find an enemy, and try to tongue it without losing speed. Once it is in yoshi’s mouth, press down for 1 frame to begin the swallow animation.
    • Like tonguing, you cannot hold forward until yoshi has finished swallowing the enemy.
    • To make it easier, you could grab an enemy, land, rejump, then swallow. Try this first if needed, but also try tonguing and swallowing in the same jump.
  8. Shoot some eggs by pressing A and savestating when yoshi faces forward. You cannot fire an egg for ~8 frames after pressing A, which corresponds to the frame yoshi faces forward holding the egg.
    • The TAS plays on patient egg aiming because it’s faster not to switch to hasty at all. However, it’s also easier: you don’t have to hold A the entire time you’re aiming the egg -- just press it once to start, make a savestate on the frame yoshi faces forward, then push A whenever to fire.
    • Try shooting a cloud or an enemy.
    • If you want to try something harder, try ricocheting an egg off of a wall and catching it when it comes back.
    • Eggs are simple to use for direct shots, but extremely hard to master.
    ~The Eggs Can Do Anything~
  9. Put it all together if you want by completing a section of 1-2 (or any level): accelerate with frame advance, then tongue a bunch (let’s see those swag tongues TriHard), make some eggs, spit some enemies, and maybe even try firing some eggs. The movie will probably look pretty cool to play back if you managed to do all of this without letting your speed drop below ~700. Throw in a 1-2 flower spit skip if you want.
    • You don’t really process what the movie is going to look like when you’re doing one section at a time using frame advance.
    • The best part about making TASes is seeing your movie when you’re done!

Slope Speed, Fluttering and other tricks

  1. Make a movie in 1-1 or 1-2, or maybe 2-3, 3-1, 4-5, or 6-1 if you’re feeling adventurous, and make some savestates at the beginning.
  2. Accelerate to 760 and run into the first slope you see.
  3. Jump off of a slope and hold forward, watching ramwatch. When jumping off of a slope, you can achieve higher (and lower) maximum speeds than 760. Try to get 765, 766, or 767 (the best).
    • It is usually the optimum strat to get 767 max speed as soon as possible after starting each level or room.
    • Try jumping on the first possible frame where you get a speed change. If that doesn’t work, try the next few frames. If none work, try random movement inputs or no input for a frame before or during hitting the slope. It is usually possible to get 767 in the first frame or two with enough tinkering.
  4. It is possible to face backwards without losing speed. Even if you jump and push left for only one frame, yoshi will slow down. So how can you tongue backwards without losing speed? It requires a very specific set of inputs: <>>< (back, forward, forward, back -- would be opposites if you were running the other way).
    • Try jumping and doing <>>< to face backwards. If you start on 767 speed, you should end up on 767. You cannot hold forward for a few frames after doing <>>< or it will mess up your speed. So typically do <>><____
    • You can now tongue backwards for swag, to grab enemies, or to catch flying eggs.
    • You can also start an eggshot facing backwards with this technique. You can also start backwards eggshots during the acceleration inputs, or any time you push backwards for even one frame.
  5. First frame jumps can prevent slowdown from landing on slopes. In general you will slow down to 728 or so if you jump off of a slope on the first frame possible, but this is much better than falling to 300-600 which is typical for a slope.
    • However, you can do it with no speed loss at all sometimes. To do this, do jump and start <>>< (so B + < on the same frame, then >><) off the slope. This prevents any subpixel loss from jumping on slopes.
    • If that doesn’t work, try <>> before landing, then <+B on the frame you land on the slope.
  6. Fluttering is tricky. Practice doing some optimal flutters by getting familiar with the y-position ramwatch values. Below is a method for finding the optimum height gain from a flutter.
    • To start, stand in place and try to gain height chaining flutters. To do this, you want to release B for 1, 2, or 3 frames between around -100 and 200 y-velocity. In general, a one-frame release and repress at y-velocity ~170 is the optimal flutter, but this is not always the case. Stick with one frame release and repress for now for simplicity.
    • To check how good your flutter is, look at how high yoshi goes in the y-position ram value. Savestate at around 0 y-velocity in your jump, then play around from there.
    • Typically I will set speed to around 25%, try a jump combo (let’s say one frame release at 130 y-velocity, done using frame advnace), then I’ll unpause and watch the ram value when yoshi dips down in the flutter. At 25% you can see the ram value briefly pause at the lowest part of the flutter. I use this “lowest point” as a benchmark for how good the flutter is because it’s faster than waiting to see how high he goes. If he’s higher at the bottom of the flutter, he’ll also be higher at the top.
    • So let’s say I see 1569 pixels on the y-position ram value at the bottom of the flutter (when it’s easy to see at 25% speed letting it scroll). To try to beat this flutter, you might reload your savestate and try a one frame release at Y-velocity 170 instead, and this time the lowest point of the flutter is 1568. 1568 is higher than 1569 (top of the screen is 0 and counts down) so this flutter is better.
    • You can use this trial and error process to home in on the best flutter for a given situation. Usually for chaining flutters a one-frame release is best, whereas when bouncing off of an enemy a 2 or 3 frame release is often best.
    • Also, fluttering by doing a 2, 3, or even 4 or 5 frame B release starts the flutter sooner, which is advantageous when you need to start gaining height ASAP. Sometimes this is more important than getting the highest possible flutter.