This is an update to an earlier post.
I've determined the frameskip patterns of the Capcom NAOMI games, gotten better figures for HF and ST, and added a few console versions for comparison. These things were made easier by an improvement to my old frameskip-analyzing Lua script. Now it requires less info about the game than before, it's less subject to game-specific quirks, and has auto game detection for arcade emus: http://pastey.net/149881
It's the same basic technique as before: watch how the timer value goes down frame by frame under each speed setting, then extrapolate the skip patterns. The experiment itself is easy, but setting it up was painful for NAOMI games because they run at 5-10% on my computer and savestates don't work. Just getting into the operator menu, rebooting the machine and starting a match takes a lot of in-game loading time.
The memory addresses for the NAOMI game timers aren't in any cheat databases so I had find them myself. The search isn't hard, but the memory used by MAME shoots up several gigabytes when you cheatinit
, and I had to borrow another computer with more RAM to avoid an Out of memory!
crash. Even without doing that I only have enough memory to start capsnk and mvsc2 in MAME-rr. Vanilla MAME can do the job since all you need is frame advance (shift + pause hotkey) and the mem viewer of the debugger, but it's even more tedious without Lua.
Was frameskip in any other games? It seems to have only been a Capcomism.
The tables below give the patterns in the usual form of numbers of consecutive unskipped frames separated by commas. The speed relative to no frameskip is also given. This is the total rendered frames divided by the displayed frames.
* Some games have more stable frameskip patterns than others. Whereas the Marvel games are always on time with their skips, sf2hf, ssf2t, dstlk, nwarr, and the PSX ports of Darkstalkers 3 and SFA2 are much more chaotic. The timing depends on the stage, how much action is going on, and possibly random factors. The data here was collected with characters idling on stages where not much is going on in the background, but it can still be hard to pick the patterns out.
Street Fighter II series
sf2hf*
2,2,2,... | 150% |
ssf2t*
Turbo 1 (Japan) Free Select: Speed 1 (Japan) Turbo 0 (other regions) | 3,3,3,... | 133% |
Turbo 2 (Japan) Free Select: Speed 2 (Japan) Turbo 1 (other regions) Free Select: Speed 1 (other regions) | 2,3,3,2,3,3,... | 138% |
Turbo 3 (Japan) Free Select: Speed 3 (Japan) Turbo 2 (other regions) Free Select: Speed 2 (other regions) | 2,2,3,2,2,3,... | 143% |
Turbo 4 (Japan) Turbo 3 (other regions) Free Select: Speed 3 (other regions) | 2,2,2,... | 150% |
hsf2
Turbo 1 (Japan) Free Select: Speed 1 (Japan) Turbo 0 (other regions) | none | 100% |
Turbo 2 (Japan) Free Select: Speed 2 (Japan) Turbo 1 (other regions) Free Select: Speed 1 (other regions) | 5,5,6,5,5,6,... | 119% |
Turbo 3 (Japan) Free Select: Speed 3 (Japan) Turbo 2 (other regions) Free Select: Speed 2 (other regions) | 3,3,3,3,4,3,3,3,3,4,... | 131% |
Turbo 4 (Japan) Turbo 3 (other regions) Free Select: Speed 3 (other regions) | 2,2,3,2,2,2,3,2,2,3,2,2,2,3,... | 144% |
There's no frameskip in sf2, sf2ce or ssf2.
Rufus has found the patterns for HDR by looking for dropped frames in footage of Chun-Li's lightning legs.
HD Remix
Turbo 0 | none | 100% |
Turbo 1 | 5,5,6,5,5,6,... | 119% |
Turbo 2 | 5,5,4,5,4,5,4,... | 122% |
Turbo 3 | 4,4,4,4,4,4,4,4,... | 125% |
Turbo 4 | 4,3,4,3,4,3,4,3,4,... | 128% |
Street Fighter Alpha series
sfa
Normal | 15,15,15,... | 107% |
Turbo 1 | 4,4,5,4,4,5,... | 123% |
Turbo 2 | 3,3,3,... | 133% |
Free Select: Normal | none | 100% |
Free Select: Turbo | 7,7,7,... | 114% |
sfa2, sfz2al
Normal Free Select 1: Normal | none | 100% |
Turbo 1 Free Select 1: Turbo On Free Select 2: Normal | 4,4,5,4,4,5,... | 123% |
Turbo 2 Free Select 2: Turbo On | 3,3,3,... | 133% |
sfa3
Normal Free Select 1: Normal | none | 100% |
Turbo 1 Free Select 1: Turbo Free Select 2: Turbo 1 | 4,4,5,4,4,5,... | 123% |
Turbo 2 Free Select 2: Turbo 2 | 3,3,3,... | 133% |
Darkstalkers series
dstlk*
Turbo 1 Free Select: Speed 1 | none | 100% |
Turbo 2 Free Select: Speed 2 | 4,4,4,... | 125% |
Turbo 3 Free Select: Speed 3 | 2,3,2,3,... | 140% |
nwarr*
Turbo Off Free Select: Normal | none | 100% |
Turbo On Free Select: Turbo | 5,5,5,... | 120% |
vsav
Normal Free Select 1: Normal | none | 100% |
Turbo 1 Free Select 1: Turbo Free Select 2: Normal | 4,4,5,4,4,5,... | 123% |
Turbo 2 Free Select 2: Turbo Free Select 3: Normal | 3,4,3,4,3,4,4,3,4,3,4,3,4,4,... | 128% |
Turbo 3 Free Select 3: Turbo | 3,3,3,... | 133% |
vhunt2, vsav2
ノーマル フリーセレクト1: Normal | none | 100% |
ターボ 1 フリーセレクト1: Turbo フリーセレクト2: Normal | 7,7,7,... | 114% |
ターボ 2 フリーセレクト2: Turbo フリーセレクト3: Normal | 4,4,5,4,4,5,... | 123% |
ターボ 3 フリーセレクト3: Turbo | 3,3,3,... | 133% |
Pocket Fighter
sgemf
Turbo 1 Free Select: Speed 1 | none | 100% |
Turbo 2 Free Select: Speed 2 | 15,15,15,... | 107% |
Turbo 3 Free Select: Speed 3 | 7,7,7,... | 114% |
Turbo 4 | 4,4,5,4,4,5,... | 123% |
Marvel series
msh
Normal Mode Select: Normal | none | 100% |
Turbo Mode Select: Turbo | 10,10,10,... | 110% |
xmvsf
Normal Free Select: Normal | none | 100% |
Turbo 1 Free Select: Turbo Free Select 2: Normal | 10,10,10,... | 110% |
Turbo 2 Free Select 2: Turbo | 6,6,6,... | 117% |
mshvsf, mvsc
Normal Free Select: Normal | none | 100% |
Turbo 1 Free Select: Turbo Free Select 2: Normal | 6,6,6,... | 117% |
Turbo 2 Free Select 2: Turbo | 4,4,4,... | 125% |
There's no frameskip in xmcota.
NAOMI games
sfz3ugd (SFZ3 Upper)
Normal Free Select 1: Normal | none | 100% |
Turbo 1 Free Select 1: Turbo Free Select 2: Turbo 1 | 4,4,5,4,4,5,... | 123% |
Turbo 2 Free Select 2: Turbo 2 | 3,3,3,... | 133% |
Turbo 3 | 2,3,2,3,2,3,2,3,3,... | 139% |
Turbo 4 | 2,2,2,2,3,2,2,2,2,3,... | 145% |
Turbo 5 | 1,2,2,2,2,2,2,2,2,2,2,... | 152% |
Turbo 6 | 1,2,2,1,2,2,... | 160% |
Turbo 7 | 1,1,2,1,2,1,2,1,2,1,2,1,2,... | 168% |
capsnk (CvS 1), cvsgd (CvS Pro), mvsc2 (MvC 2)
Normal Free Select: Normal | 6,6,6,... | 117% |
Turbo Free Select: Turbo | 4,4,4,... | 125% |
cvs2gd (CvS 2)
Game Speed 1 | none | 100% |
Game Speed 2 | 6,6,6,... | 117% |
Game Speed 3 | 4,4,4,... | 125% |
Game Speed 4 | 3,3,3,... | 133% |
Game Speed 5 | 2,2,2,... | 150% |
Selected console versions
Street Fighter II Turbo (SNES)
Normal Turbo 0 | none | 100% |
Turbo 1 | 11,11,11,... | 109% |
Turbo 2 | 5,6,5,6,5,6,... | 118% |
Turbo 3 | 3,4,4,3,4,4,... | 127% |
Turbo 4 | 2,3,2,4,2,3,2,4,... | 136% |
Turbo 5 | 1,3,2,3,2,1,3,2,3,2,... | 145% |
Turbo 6 | 1,2,2,2,2,2,... | 155% |
Turbo 7 | 1,1,2,1,1,3,2,... | 163% |
Turbo 8 | 1,1,1,2,1,1,1,3,... | 173% |
Turbo 9 | 1,1,1,1,2,1,1,1,2,... | 182% |
Turbo 10 | 1,1,1,1,1,1,1,1,1,2,... | 191% |
Turbo speeds above 4 require a code to unlock.
Street Fighter Alpha 2 (PSX)*
Normal Turbo 1 | none | 100% |
Turbo 2 | 15,15,15,... | 107% |
Turbo 3 | 7,7,7,... | 114% |
Turbo 4 | 4,4,5,4,4,5,... | 123% |
Turbo 5 | 3,3,3,... | 133% |
Turbo 6 | 2,2,2,... | 150% |
Turbo 7 | 1,2,1,2,2,2,1,2,1,2,2,2,... | 160% |
Turbo 8 | 1,2,2,1,2,2,... | 160% |
Darkstalkers 3 (PSX)*
Normal | 31,31,31,... | 103% |
Turbo Speed 1 | 4,4,5,4,4,5,... | 123% |
Turbo Speed 2 | 3,4,3,4,3,4,4,3,4,3,4,3,4,4,... | 128% |
Turbo Speed 3 | 3,3,3,... | 133% |
Turbo Speed 4 | 2,3,2,3,... | 140% |
Turbo Speed 5 | 2,2,2,2,3,2,2,2,2,3,... | 145% |
Turbo Speed 6 | 2,2,2,... | 150% |
Turbo Speed 7 | 1,2,2,1,2,2,... | 160% |
Turbo Speed 8 | 1,2,1,2,... | 167% |
Marvel Super Heroes (PSX)
Normal | none | 100% |
Turbo Speed 1 | 10,10,10,... | 110% |
Turbo Speed 2 | 8,8,8,... | 113% |
Capcom vs. SNK Pro (PSX)
Normal Free: Normal | 6,6,6,... | 117% |
Turbo Speed 1 Free: Turbo | 4,4,4,... | 125% |
Turbo Speed 2 | 3,3,3,... | 133% |
Turbo Speed 3 | 2,2,2,... | 150% |
Turbo Speed 4 | 1,1,1,... | 200% |
Maj found the patterns for CFE using the beta version's frame advance feature.
Capcom Fighting Evolution (PS2)
Game Speed 1 | none | 100% |
Game Speed 2 | 6,6,6,... | 117% |
Game Speed 3 | 4,4,4,... | 125% |
Game Speed 4 | 3,3,3,... | 133% |
Game Speed 5 | 2,2,2,... | 150% |
"Was frameskip in any other games? It seems to have only been a Capcomism. I think all we need now is the info on CFE."
Frame skip means that true 1-frame stuff will only work some of the time, even if executed correctly. As a consequence, the technical challenge aspect of those games is a bit limited. (There's still crazy stuff, but it's not nearly as absurd as some of the things that people do in newer games.)
A lot of modern games - like basically every FPS - have the game engine separated from the display, and skip frames left and right depending on render load, but it's not the same. Frame skip - the way that it happens in Capcom games - is really an old technique. IIRC even Capcom tried to move away from it with Super Street Fighter after Hyper Fighting.
Posted by: Rufus | 05/10/2011 at 05:54 AM
I don't think the slow state of SSF2 was intentional. They knew since the CE hacks that players liked the higher speed, but Super was a long time coming and HF came out first. The puzzling thing is why didn't they make later games fast to begin with instead of relying on frameskip?
I suspect the reason is they didn't want to go to the cost of re-animating all the sprites and attacks at a higher base speed. That might explain why SF3, with its all-new sprites doesn't use frameskip, but CvS and MvC2 with their old old sprites do, even though the games came out later.
Or maybe there was just one exec insisting on it until he retired.
Posted by: dammit | 05/10/2011 at 02:16 PM
it's interesting, I've been playing some snes sf2hf and it has turbo settings that go all the way up to 10, where playing it feels about 1000x speed but frame advancing it doesn't feel any faster.
Posted by: error1 | 05/11/2011 at 02:36 AM
That reminds me, I wanted to check that version. I added info for it above.
The patterns are rock solid, no asterisk necessary. And the speed of each level is exactly 1/11 (~9%) higher than the last. I guess they did their homework on this one.
Posted by: dammit | 05/11/2011 at 05:27 PM
neat, I wouldn't have guessed turbo 10 is only 200% faster, and that they did it by a straight fraction like that. Surprised it doesn't even beat cvs pro
Posted by: error1 | 05/12/2011 at 02:45 AM
Relative to Normal speeds, SNES HF is still the fastest.
CvSPro Turbo 4 is (2/1) / (7/6) = ~171% of its own Normal.
Posted by: dammit | 05/12/2011 at 03:29 PM
ah good point, I didn't catch that
Posted by: error1 | 05/12/2011 at 06:45 PM
Dammit, do you still have the frameskip analysing lua script lying around somewhere? Would be great to have your various pastey scripts available. I have a couple of experiments to perform :). I just keep coming back to this site over and over during my investigations of various SF2 things, I can't thank you enough.
Cheers (and hope things are going a bit better for you!)
Posted by: fluxcore | 11/09/2012 at 12:04 PM