Difference between revisions of "TAS Guide"
Jump to navigation
Jump to search
Brooklyn9d5 (talk | contribs) (→The Basics) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
# '''An emulator!''' | # '''An emulator!''' | ||
− | #:snes9x 1.43rr (rr stands for rerecording, aka | + | #:snes9x 1.43rr (rr stands for rerecording, aka save-states) 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 (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''' | #:: '''Bizhawk (prerequisites):''' http://sourceforge.net/projects/bizhawk/files/Prerequisites/bizhawk_prereqs_v1.1.zip/download '''← run this file first''' | ||
# '''A Yoshi’s Island ROM!''' | # '''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. | #: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. | ||
− | # '''A | + | # '''A RAM-watch file!''' |
− | #:You can use this inside the emulator to watch various memory values in the game, such as | + | #: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 | + | #:'''Carl’s RAM-watch File:''' http://www.mediafire.com/view/mc16lnp51l1apcc/yi(2).wch |
==The Basics== | ==The Basics== | ||
+ | ===[[Frame_Data | '''Frame Data]]=== | ||
+ | ===Making A Movie and Using Save-states=== | ||
− | + | #'''Open the ROM, bind your controls''' and just get used to '''making and reloading save-states''' and just playing on emu if you aren’t already familiar. You will make and reload save-states more than anything else while making a TAS, so you want to be really familiar with the hotkeys. You can rebind the save-state buttons in config → hotkeys. | |
− | + | #:*Get used to using all 10 save-state 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 save-states, and some of the analog directions. The rest are F4-F10 on keyboard. | |
− | #'''Open the ROM, bind your controls''' and just get used to '''making and reloading | + | #'''Bind “frame advance”''' to your favorite possible button to press (config → hotkeys → speed). I use X on my game-pad 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. |
− | #:*Get used to using all 10 | ||
− | #'''Bind “frame advance”''' to your favorite possible button to press (config → hotkeys → speed). I use X on my | ||
#:*For example: to jump to the right, you hold down jump and right, then hit frame advance with both pressed down. | #:*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 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 | + | #:*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 game-pad, I guess since it’s really accessible while playing. |
− | #'''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 | + | #'''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, 100% 5-4 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 | + | #:*Before doing anything, make two save-states: 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 | + | #:*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 save-state to retry. Try using slowdown. Bind the slowdown keys and try playing at 50% speed. |
− | #:*'''Open | + | #:*'''Open RAM-watch''' by going to tools → RAM-watch 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. |
− | #'''When you get something you like,''' immediately | + | #'''When you get something you like,''' immediately save-state 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 | + | #:*Pause after you did something cool that you liked and switch to read-only mode (hotkey default is shift+8). Now use that backup save-state you made to jump back to the beginning of your movie. Without the backup save-state 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 | + | #:*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 save-state 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. | #:*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 | + | #:*'''Make a new save-state here and reload it before doing anything!''' Until you reload the save-state, it’ll still be in replay mode and won’t let you edit (just a quirk of snes9x). If you don’t make a save-state, you’ll have to go back to read-only mode, re-watch, and re-pause. '''Always make 50000 save-states everywhere so you never accidentally overwrite something important or lose something.''' |
− | #'''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 | + | #'''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 save-states, 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). | #:*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. | #:*It better have lots of swag in it TriHard. | ||
Line 42: | Line 42: | ||
===Movement Mechanics=== | ===Movement Mechanics=== | ||
− | #'''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 | + | #'''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 EGG-SHOTS*''' |
#'''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. | #'''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. | ||
− | #'''Make at least 3 | + | #'''Make at least 3 save-states:''' two to play with, and one you will never overwrite so you can go back to the beginning. Open RAM-watch and focus on the x-speed ram values. The numbers are in sub-pixels Yoshi moves per frame of time, i.e. 760 = Yoshi moves 760 sub-pixels in one frame. |
#'''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. | #'''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. | #:*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 | + | #:*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). | #:*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, | + | #:*Rather than counting exactly how many <>>>’s you need, save-state 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 save-state, add another <>>>, make a new save-state, and check again. It’s a waste of time to restart back at 0 speed every time -- use save-states 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. | #:*<>>> 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. | ||
− | #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 | + | #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 save-state 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. | #:*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. | #:*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). | #:*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 | + | #:*'''Not mixing up save-states is hard.''' You’ll get better at it with time. Every time you get something good, make one of your save-states dedicated to that spot before continuing so you don’t lose progress. So again, that’s 1 save-state 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 save-state there. |
#'''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. | #'''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 | + | #:*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. | #:*Holding the tongue button down for more frames increases the tongue size. | ||
− | #:*Try to jump, then release forward so that | + | #:*Try to jump, then release forward so that Yoshi’s speed freezes on 760. Then add in a forward or up-tongue so that the animation finishes before Yoshi hits the ground. |
− | #:*You need to resume holding forward as | + | #:*You need to resume holding forward as Yoshi’s feet are about to touch the ground. |
− | #'''Try making eggs without losing speed.''' Find an enemy, and try to tongue it without losing speed. Once it is in | + | #'''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 | + | #:*Like tonguing, you cannot hold forward until Yoshi has finished swallowing the enemy. |
− | #:*To make it easier, you could grab an enemy, land, | + | #:*To make it easier, you could grab an enemy, land, re-jump, then swallow. Try this first if needed, but also try tonguing and swallowing in the same jump. |
− | #'''Shoot some eggs''' by pressing A and | + | #'''Shoot some eggs''' by pressing A and save-stating 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 | + | #:*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 save-state on the frame Yoshi faces forward, then push A whenever to fire. |
#:*Try shooting a cloud or an enemy. | #:*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. | #:*If you want to try something harder, try ricocheting an egg off of a wall and catching it when it comes back. | ||
Line 76: | Line 76: | ||
===Slope Speed, Fluttering and other tricks=== | ===Slope Speed, Fluttering and other tricks=== | ||
− | #'''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 | + | #'''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 save-states at the beginning. |
#'''Accelerate''' to 760 and run into the first slope you see. | #'''Accelerate''' to 760 and run into the first slope you see. | ||
− | #'''Jump off of a slope''' and hold forward, watching | + | #'''Jump off of a slope''' and hold forward, watching RAM-watch. 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. | #:*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. | #:*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. | ||
− | #It is possible to '''face backwards without losing speed.''' Even if you jump and push left for only one frame, | + | #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 <>><____ | #:*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 now tongue backwards for swag, to grab enemies, or to catch flying eggs. | ||
− | #:*You can also start an | + | #:*You can also start an egg-shot facing backwards with this technique. You can also start backwards egg-shots during the acceleration inputs, or any time you push backwards for even one frame. |
#'''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. | #'''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 | + | #:*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 sub-pixel loss from jumping on slopes. |
#:*If that doesn’t work, try <>> before landing, then <+B on the frame you land on the slope. | #:*If that doesn’t work, try <>> before landing, then <+B on the frame you land on the slope. | ||
− | #'''Fluttering is tricky.''' Practice doing some optimal flutters by getting familiar with the y-position | + | #'''Fluttering is tricky.''' Practice doing some optimal flutters by getting familiar with the y-position RAM-watch 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 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 | + | #:*To check how good your flutter is, look at how high Yoshi goes in the y-position ram value. Save-state 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 | + | #:*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 advance), then I’ll un-pause 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 | + | #:*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 save-state 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. | #:*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. | #:*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. |
Latest revision as of 21:26, 23 December 2022
Contents
TAS Guide by CarlSagan42 copied from: https://docs.google.com/document/d/1eAu2uGRv2lzPgwdiaNjN1D7T5OzDFxZuRFj94uCBfeQ (Thanks!)
Things You Will Need
- An emulator!
- snes9x 1.43rr (rr stands for rerecording, aka save-states) 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
- snes9x 1.43rr (rr stands for rerecording, aka save-states) 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.
- 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.
- A RAM-watch 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 RAM-watch File: http://www.mediafire.com/view/mc16lnp51l1apcc/yi(2).wch
The Basics
Frame Data
Making A Movie and Using Save-states
- Open the ROM, bind your controls and just get used to making and reloading save-states and just playing on emu if you aren’t already familiar. You will make and reload save-states more than anything else while making a TAS, so you want to be really familiar with the hotkeys. You can rebind the save-state buttons in config → hotkeys.
- Get used to using all 10 save-state 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 save-states, and some of the analog directions. The rest are F4-F10 on keyboard.
- Bind “frame advance” to your favorite possible button to press (config → hotkeys → speed). I use X on my game-pad 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 game-pad, I guess since it’s really accessible while playing.
- 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, 100% 5-4 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 save-states: 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 save-state to retry. Try using slowdown. Bind the slowdown keys and try playing at 50% speed.
- Open RAM-watch by going to tools → RAM-watch 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.
- When you get something you like, immediately save-state 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 save-state you made to jump back to the beginning of your movie. Without the backup save-state 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 save-state 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 save-state here and reload it before doing anything! Until you reload the save-state, it’ll still be in replay mode and won’t let you edit (just a quirk of snes9x). If you don’t make a save-state, you’ll have to go back to read-only mode, re-watch, and re-pause. Always make 50000 save-states everywhere so you never accidentally overwrite something important or lose something.
- 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 save-states, 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
- 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 EGG-SHOTS*
- 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.
- Make at least 3 save-states: two to play with, and one you will never overwrite so you can go back to the beginning. Open RAM-watch and focus on the x-speed ram values. The numbers are in sub-pixels Yoshi moves per frame of time, i.e. 760 = Yoshi moves 760 sub-pixels in one frame.
- 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, save-state 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 save-state, add another <>>>, make a new save-state, and check again. It’s a waste of time to restart back at 0 speed every time -- use save-states 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.
- 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 save-state 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 save-states is hard. You’ll get better at it with time. Every time you get something good, make one of your save-states dedicated to that spot before continuing so you don’t lose progress. So again, that’s 1 save-state 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 save-state there.
- 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 up-tongue 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.
- 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, re-jump, then swallow. Try this first if needed, but also try tonguing and swallowing in the same jump.
- Shoot some eggs by pressing A and save-stating 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 save-state 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~
- 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
- 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 save-states at the beginning.
- Accelerate to 760 and run into the first slope you see.
- Jump off of a slope and hold forward, watching RAM-watch. 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.
- 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 egg-shot facing backwards with this technique. You can also start backwards egg-shots during the acceleration inputs, or any time you push backwards for even one frame.
- 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 sub-pixel loss from jumping on slopes.
- If that doesn’t work, try <>> before landing, then <+B on the frame you land on the slope.
- Fluttering is tricky. Practice doing some optimal flutters by getting familiar with the y-position RAM-watch 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. Save-state 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 advance), then I’ll un-pause 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 save-state 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.