Scripting Shortcuts and Time-Saving Tricks
The first step to programming emulator combos is setting a convenient starting point. Lately i’ve been creating all my save states on the exact frame when the “Fight!” logo disappears. I’ve noticed this makes it easier to transplant combos from one save state to another, in case i ever need to change stages or costume colors. But i don’t quite recommend my approach.
If you don’t anticipate stage/color selection being a concern, it will save a lot of time to create your save state after you’ve maxed out both characters’ super bars, walked them into the corner, gotten rid of the “First Attack” message, and done every other little thing that you need to do before the combo begins.
Otherwise you’ll have to incorporate it all into your script and watch it play out every time you want to test the slightest alteration of your combo. Of course, the Fast Forward (aka Throttle) feature dramatically cuts down waiting periods, but they still add up.
By the way, it’s not a bad idea to copy all your save states into a backup folder in case you accidentally overwrite them. If your combo contains luck manipulation of any sort, losing your save state will often render your script obsolete.
If you’re truly passionate about saving time, then learn to use the emulator’s Turbo Speed capability and MacroLua’s pause after playback setting. Combining these two features will help you become far more efficient.
Depending on the newness of your computer and the oldness of the emulated game you’re playing, Fast Forward / Turbo Speed / Throttle usually makes the game run several times faster. Scripts still work perfectly at top speed, so this is a great way of accelerating through the first ten hits of your combo every time you need to observe changes to the twelfth.
! is MacroLua’s script command for marking the end of a sequence, which also automatically pauses emulation on that particular frame. It’s awesome for accurately approximating recovery time on super moves and other slow attacks. Insert it into your script at any point to take a good look at exactly what’s going on at that point in the sequence.
This command is also useful for playing out your script up to a certain point and then manually trying out whatever you want. You can always unpause and try whatever you want. It’s great for stopping combo playback at any point to measure damage or manually test how close the opponent is to getting dizzy or whatever.
Let’s examine an example. Say you’ve got XSF Ryu hitting the opponent with a Hurricane Kick super in the corner, and you want to follow it up with c.HP to continue the combo. You’ll need to figure out how many frames Ryu needs to wait before performing the launcher. Instead of blindly guessing random numbers, try this:
# XSF Ryu Shinku Tatsumaki Senpukyaku, failed c.HP attempt
If the game pauses halfway through the super, then increase that wait period before D3 and try again. Repeat until you see the attack come out relatively soon after the super, then continue optimizing until you find the first possible input frame after recovery.
You can remove the W2! from your script at any point after you feel it has served its purpose. Regarding the wait period before the ! command, every game is different but there’s usually at least two-frame lag between pressing a button and having it animate on-screen.
Since MacroLua will ignore everything written after the ! symbol, you can store as many script variations as you want in one file, which is convenient for keeping a development history of your combo in case you need to reference or revert to an earlier version.