SF4 Show-off - PC Combo Scripting Tool

SF4SO should work with KOF XIII Steam Edition now. Special thanks to ilitirit who pointed out a bug in the inputsimulator. You will need to overwrite the old “InputSimulator.dll” with the new one in the zip archive. Just extract everything into your SF4SO folder and when asked, overwrite the old dll. KOF should be selectable the next time you run SF4SO after you have done this.

The config files can be downloaded from my site as usual.

I just started using it. I want to confirm some set up.
my problem is that if I want to do throw then dash, I need to know the exact amount of frame the throw animation take.

are they any way to know how long a throw tech? how many frame before an opponent stand up for a meaty?
it will help as for now I got tired of trying frame by frame to see when I can start moving…

Edit I really love this tool. having the possibility to confirm exactly how to do some POS OS and set up is really useful.

thanks

Throw, wait x frames, and cr.lp.

For example, start with 50 frames, if cr.lp comes out, try 40, then 30, 35, 33, 32, 31.

yes, I just wanted to avoid doing that…
thanks

So do i use AHK or CHEAT ENGINE to find memory addresses for other games?

Cheat Engine.

how can we use it with a short cut. closing and reopening game is time-consuming

What do you mean? Just start SF4SO before you start the game.

There’s also a few hotkeys you can use to control SF4SO without leaving the game. These are described in the readme (I don’t remember them at the moment, but I think the keys are F1-F4).

this tool is pretty great, i’ve already used it a decent amount while developing remix

Hey, I just got this and I’m starting to get the beginner stuff out of the way. One question: How do I do the Focus Attack Dash Cancel after a special move like a fireball or a dp from Ryu for example?

Thanks, glad you like it.

The timing depends on what you are FADCing from and into. Other than that it’s just the same as doing it on a real stick. Just script it like you would do it manually. Here are some examples (Ryu vs Ryu, unlimited meter, Ultra 1):

light DP -> FADC -> Ultra

dist0.50
.30
dplp.
(+mpmk)
.6
(f)
.
(f)
(-mpmk)
.30
qcf
qcf
(lpmphp)

cr.mk -> ex fireball -> FADC -> Ultra

dist0.50
.30
(dmk)
qcf
(mphp).16
(mpmkf)
.
(f)
.15
qcf
qcf
(lpmphp)

mp -> FADC -> mp -> FADC -> mp -> tatsu

dist0.50
.30
mp.
(mpmkf)
.2
(f)
.26
mp.
(mpmkf)
.2
(f)
.26
mp
qcb
hk

Hope this helps you understand a little. As you can see, in the first example, I used (+) and (-) to hold the mp and mk buttons. That isn’t always necessary. The FADCs in the other examples works just as well. You just have to fiddle around with the timing until you find one that works. When you have a timing that works, try decreasing the amount of waitframes until it no longer works. That way you’ll get the fastest possible FADC (the ones above are probably not as fast as they can get, I didn’t really test them that much).

Actually, you answered my question pretty well. I’ll post my findings later. Thanks!

OK, I think I got the DP->FADC->Ultra 1 down to a science:
(hp)
(f)(d)(dflp).15
(+mpmk).6
(f)
(f)(-mpmk).25
(d)(df)(f)(d)(df)(f)(lpmphp)

Let me know how it works! :slight_smile:

That does not work for me. I think you forgot to add a “.” after the (f). I think it should be like this:

hp
(f)(d)(dflp).15
(+mpmk).6
(f). //Note the “.”!
(f)(-mpmk).25
(d)(df)(f)(d)(df)(f)(lpmphp)

Also, there’s no need to write that complicated last line. You can use “qcf”. It’s the same as writing (d)(df)(f).
You can also use “dp” for the dp-motion. The only advantage of writing it all out instead of using qcf/qcb/dp is that you can add the punch/kick-button to the last direction, and get the move to come out 1 frame earlier. Example:

LP Fireball
This is how you would write it using the qcf-command
qcflp
This is equal to
(d)(df)(f)(lp)
(If I remember correctly that is…)

If you were to write it manually, you could do this:
(d)(df)(flp)
When done this way, there’s no frame between the last direction and the lp button, which makes this version come out 1 frame earlier.

As you can probably guess, there’s pretty much no reason to write it all out unless there’s a specific situation/combo that requires it. You can still use the qcf/qcb/dp commands in combos with 1-frame-links because you can time them so that the last button is pushed at the correct frame by simply scripting the command 1 frame earlier.

Single buttons does not need to be in “(” and “)”. Writing “hp” and “(hp)” gives the same result. Single directions must be though! Writing “f” does nothing, but writing (f) works. If you want to push more than 1 button simultaneously you will need to put them inside parentheses . You have done this correctly, I’m just writing this so that other people will know too. “(lpmphp)” Will press all the punch buttons simultaneously. “lpmphp” Will press them after each other, one button each frame.

As of SF4SO v0.6 you can use “goto” and “dist” for positioning. Here’s a script using both:
http://pastebin.com/7wsxMNdZ
Use the P1 script for P1 and the P2 script for P2. Start them both at the same time (F3-key).
This script requires that P1 is on the left side when you start it.

I noticed that when you do a cross-up mid-combo, inputs get really screwy. For example, even when you’ve clearly been on the other side for quite some time, the game might still input your command as if they were still on the side they were on originally, causing annoying errors (For example, try doing a Guy Bushin chain into throw, then tatsu. You’ll get run instead.). Do you have any explanation for this, any way to possible fix it? It makes combos where you have to keep charging a move while changing sides almost impossible to do.

I’m on unstable mobile internet, but I hope this gets posted anyway…

Without actually trying this myself, I think maybe the answer is on page 1 of this thread.

If you think the problem you are having is something different, think about this: When are you actually scripting the (f)/(b)? Are you sure you are actually on the other side when SF4SO executes the command? Also, there are some situations where SF4SO (and SF4 actually) don’t know which side you are on. In the middle of the throw animation comes to mind. If this is the source of your problem, try delaying the next (f)/(b) until the throw animation is done, or try scripting it the opposite way of what it really should be (I don’t know if scripting the opposite way will work or not). I’m not currently able to test any scripts, but if you are willing to give me a pastebin-link with the script (at least the non-working part) I’ll check it out as soon as possible. I’m not saying it’s not a bug, but either way it’ll be easier to understand the situation for me if I can test it myself.

Yes, inputting QCF instead of QCB works, but that’s not really optimal. I don’t think it’s the game that’s confused, because when it comes to stuff like this, the training mode recording feature always handles mid-combo cross-ups perfectly. So if I take a script that gets the directions wrong, I can rerecord it in training mode form fullscreen and it will work as intended when you play it back point blank.

Take this script for example, with Guy on standing Rufus. Midscreen it works as intended, but if your back is even close to the corner when you start it the last input is reversed, resulting in tatsu instead of run. If you rerecord it in training mode (remembering to switch the buttons for right and left with each other) you get run every time.

“(lp).5(mp).15(hp).20(dhk).48(d)(df)(db).6(fmkhk)”

Now I don’t know a whole lot about programming, but is it possible you’re using data for what direction the character is facing or something instead of which side they’re on to determine in which direction the inputs should be inserted?

did the games for windows live update stop this from working? i can’t seem to get show off to work anymore. it says “running script” but nothing happens

First of all, thanks a lot for this and all the effort put into it.

I’ve been trying to use the the tool to record Yang’s perfect palm blockstring, but I’m having a issue where the same script has different results in game. Sometimes a s.lk won’t come out, other times the palm won’t cancel. Do it again and the s.lk comes out in one rep and misses from another, etc. One rep is a true blockstring in one run of the script and on the next it isn’t.

So my guess is somehow it’s skipping/dropping frames, but afaik that is irrelevant since the tool uses memory writing or something fancy like that? Is it something related to my config?

Here’s the script I’m using:

[details=Spoiler]//starter
(f).(f).18
qcbmp
.20
qcbqcbhp
.66

//loop1
lk.qcbhp.44
(f).(f).20

//loop2
lk.qcbhp.44
(f).(f).20

//loop3
lk.qcbhp.44
(f).(f).20

//loop4
lk.qcbhp.44
(f).(f).20

//loop5
lk.qcbhp.44
(f).(f).20

//ender
qcfhp.12qcfhp.20qcfhp
[/details]

I finally got to check out this bug today, sorry for making you wait so long. As I suspected, the reason for the tatsu in the corner is the throw before it. Throws are handled a little weird in SF4, if you load up Peeker and have a look at the x-positions of both players during/slightly after a throw you’ll see what I mean. Anyway, I made a workaround for you to use. The workaround has not been tested much, but at least it works fine on the script you posted. I would not recommend using this for other stuff that works fine without it, as I think maybe it’s not as stable as the regular version. Here it is:
http://www.slitherware.com/download/304
Just unzip it into your SF4SO directory and you will get two new games the next time you start it, use the one which corresponds to your version of SF4 and see if it works. Let me know how it goes!

Not that I know of, it works just the same as always for me, both steam and non-steam versions. Have you modified the game in any way perhaps? A modified exe will not work (without new configs). Be sure to check that you have your buttons all set up too. SF4SO does not currently work while the stage quality is set to low.

SF4 Camera Man may not work after the update though, I’ve not tested it.

Thanks!
The problem I got with that script is that you don’t have enough waitframes after the forward dash. Change all those ".20"s to ".21"s and it should work fine. I’m not familiar enough with Yang to help you much with this, but that blockstring only works in the corner, right? I couldn’t get your ender to be part of the same blockstring as the rest I’m afraid, but it’s probably doable somehow.

About how SF4SO works… It can and will drop frames if you have a slow computer. That’s just the way it is, it can’t force SF4 to wait for a scripted input. The thing SF4SO does that a normal AHK script (or any other normal macro-tool) can’t do is, among other things, count frames. This makes it much more reliable, as waiting 16.6ms between frames can be very unreliable especially in longer scripts with 1-frame-links. When simply waiting 16.6ms between frames, the macro and SF4 tends to desynchronize after a while. SF4SO does not have this problem as it get’s the frame count directly from the game. If SF4 slows down for some reason, SF4SO will still wait the correct amount of frames, but if SF4SO slows down for some reason SF4 still goes ahead, and you get a dropped frame. If you get a lot of dropped frames, try turning down the resolution of SF4. It can also make a difference if you disable the “Display Frame Count” in SF4SO.