Retroarch... Arcade Perfect, even on LCD, at last?


#1

Ok, quick edit for those who won’t scroll all the way :

I did some tests, here is a montage, showing you can replicate CPS3’s speed with specific settings in Retroarch, alos, you can compare speed with OE and Shmupmame :

Street Fighter III : 3rd Strike - speed comparison CPS3 VS almost everything else

End results is we can now play 3S almost as on Arcade !

I’ll have to check again the input lag on both FBA and Mame cores, but if I recall what I typed below, the FBA core doesn’t suffer input lag…


Original first message :

Came across this by accident…

  1. Input Lag Compensation to compensate for game’s internal lag?

and later, noticed this :

  1. Custom Refresh Rates on Windows

I had been using shmupmame for the past years as I have a LCD, so Groovymame was out of question and don’t even understand how to install that.
I had just read a bit about groovymame code being implemented in retroarch, which led me to point number 1.

First off, it seems that Groovymame’s Vsynch improved greatly latency or maybe it’s the “Hard GPU Synch” feature, but it is more responsive than Shmupmame ever was.

Then, I did some tests, using a 60fps camera and Chun’s HK and noticed the first frame would come out in 4 frames on my setup… Shaders on or off didn’t change the performance.
On Shmupmame it took 6 frames, maybe 7 with the HLSL filters.
Using the Runahed feature (point number 1 above) effectively removes one frame of lag.

Then I came across point number 2, custom refresh rates, and tried baking one at 59.583393Hz. I tried both with my Nvidia control panel and with the CRU utility cited in point number 2.
Both with no success : the FPS counter in retroarch kept showing 60.2 FPS.

Then I digged into the “retroarch.cfg” and it turns out that simply changing the “video_refresh_rate” manually works !

I fisrt set it to 59.583393, and got 59.8 FPS.
I thought that 59.583393 Hz = 59.58 FPS, please, correct me if I’m wrong.
So I fine tuned it to 59.350000, which retroarch rounded to 59.349998 and it gave me a solid 59.5 FPS (actually, there’s always a bit of leeway and it’s mostly 59.54 occasionally changing to 59.68 FPS, which I found good enough for now)

So, am I mistaken somewhere or, am I getting extremely close to arcade perfect ?
The runahead feature can possibly alleviate one’s setup lag… stick, screen… One frame seems to be enough for me (I’ll run more tests with the camera now that I got the game to run closer to the correct speed but this thing took me off work for a few days now :blush: )

Can someone clarify if the correct speed to get close to CP3 would be 59.6 FPS or 59.8 ?

Now if you want to try, a few things to know :

- First, correct the speed by editing the “video_refresh_rate” in the “retroarch.cfg” file, and test in game, FPs should get stable once you’ve chosen a character. Setting>Onscreen Display> Onscreen Notifications>Display Framerate & Display Statistics

- Runahead feature doesn’t work with the mame core (as it doesn’t support save states)

- Runahead works with FBA core, but is a bit broken specifically with FBA in the latest version of retroarch : it can’t use the “use second core” feature that lightens the hit on performance (works fine on my CPU, but it should be even better with this setting on). If you want to use it, don’t turn the “second core feature” on. And problem number two, after 20mins of playing the game gets choppy and slow, turning off runahead fixes the issue, but if you need to play with it, you’ll have to reload the content. I played Megaman X on snes9x for half an hour with no choppyness, so the issue is FBA specific, in this version of retroarch. Means it should be temporary.

- You should choose to use Runahead only after doing some tests with a 60FPS camera to know how much your setup lags… check the first post of Isotopez’s thread : 3rd Strike Lag/Speed Tests

Retroarch is a great effort, but I found it particularly non intuitive, and some things really had me scratching my head, so here are a few pointers :

  • Retroarch is designed to navigate with your stick/pad. On keyboard, you can use the arrows, enter and backspace, mouse seemed confusing and a good way to mess everything up
  • you can reset a value to it’s default pushing start button
  • Retroarch is the frontend, the emulator is libretro, and to run games it uses cores. Cores are emulators stripped and modded to work in retroarch.
  • First thing to do once installed, is downloading the cores you need (here, FBA) using the update feature
  • to launch a game, either load a core and then a content (aka rom), either load a content and specify which core to load when prompted… easy
  • since retroarch is designed for a snes gamepad navigation, it has two types of mapping, the retroarch mapping settings>Inputs>User 1 where you tell the program what are A,B,X,Y,L,R,Select,Start. Think of a SNES pad where L will be High Punch and R High Kick. the second mapping is reachable while a game is launched
  • I spent too much time having two keys mapped to a same button (LP and MK), the problem was the faulty driver I had chosen for the inputs, so if you have trouble, try changing that (Settings>Driver>Joypad Driver - NOT INPUT DRIVER)
  • a game’s emulation options can be accessed through the “Quick Menu”
  • you set a shader while a game is launched and settings can be saved for a core, or a rom folder, or for a single game.
  • for a while shaders wouldn’t work for me… because I had chosen the wrong video driver (same path for all drivers)
  • I haven’t found the perfect shader yet, but some light and decent ones with some tuning were crt-geom.glsl, or crt-pi.glsl
  • going in and out of full screen will wipe whatever unsaved graphic settings you had going
  • to access the test menu (to turn off regulation, set to freeplay, event, etc…) you need to set a hotkey in the game’s quickmenu>option>Diagnostic input
  • not sure runahead works on retropie

Well, that’s about it, the forums are dead, but whoever reads this, have fun.
I haven’t played on a cab in a while now, the arcade next to my place close a couple years ago, so I’m interested to know what more experienced players think, to me it feels extremely close, even on my LCD.


3rd Strike Lag/Speed Tests
#2

Ok, I finally made some more tests.
Also, to sum it up for those who don’t want to read the long post above :

  • if I remember correctly the things I read, it seems retroarch implemented some of groovymame’s code, which allow a better treatment of inputs along with a better synch speed between sound and video. Now Vsynch is a good thing.

  • recently a new feature has been implemented that allows to remove one or more frames of internal lag from the emulator, it’s called “Runahead”. This could allow a user to compensate for his laggy setup (laggy TV or laggy stick…). Currently that feature doesn’t work on FBA, it’s very recent and still in beta test. I tried it on SNES games, and it works !

  • Retroarch also allows to change the speed at which the game plays, in a finer manner than MAME (MAME could just change speed from 1 to 0.99, while Retroarch uses framerate with 6 numbers after the comma - at least 3 seem to count)

I rencently did @isotopez 's test (Chun’s HK repeatedly) on Shmupmame and Retroarch.
Please bear in mind I did these tests just for myself and the numbers here shouldn’t be taken as an exact truth that applies to everyone’s setup.
The figures apply to my own setup (my laggy screen…), and I didn’t take time to make a precise count.
Still, things are clear enough to get a few points straight.

  • Shmupmame with no filters but running at 0.99 speed resulted in 5frames counting one as the frame where my keyboard’s light would turn on. Result was quite steady, it rarely varied up to 6 frames.
  • Shmupmame wih HLSL filters running at 0.99 (%) speed resulted in mostly 6 frames and often 5 frames.
  • OE on Xbox360 resulted on 5 to 6 frames, but it’s harder to tell as I can’t tell for sure at which frame the button on my stick is pushed.
  • Retroarch with filters and the game paced at 59.299999 (Hz) gives a steady 4 frames and occasionally 5 frames. Framerate is oscillating between 59.54 and 59.63 if I recall.
    So far, the Runahead feature doesn’t work, bu I tested it on Super Mario World with my camera and it works ! So there’s no reason it wouldn’t work on s if needed at all.

settings and config :
Retroarch 1.7.3 - video driver gl - “retroarch.cfg” video_refresh_rate = “59.299999” - shaders glsl / crt_pi.glsl with some tunning - Hard GPU synch on, 3frames (no clue wether it does anything) - Vsynch on
Windows 7 64 bits - aero off

tldr ?
Is it worth changing emulators ?
I think so, as by doing so allows to play the game at a closer speed than MAME… and has even less lag, with fitlers activated. For now, I’ll change for 3S and keep Shmupmame for other games where I don’t care that much about latency.

One thing that could be great, would be to compare the game speed from CPS3 to retroarch. Maybe by keeping up pushed for a whole round and compare videos lengths and synch. This would allow to check if the jumps remain synched and to fine tune the refresh rate to a speed closest possible to CPS3.
I don’t have access to a cab anymore so I can’t film that. Is someone up to it ?..
If I’m sure I’m running the game a the most correct speed possible, I would do sharper tests.


#3

thanks for posting this. it works really well for me. i’m on windows 10 and schmupmame is a bit jittery. retroarch “feels” the same for me as OE and 30th Anniversary. i can do Oro juggles on shotos with the same timing as any of those. i didn’t test it with a camera or anything, but so far it works great with the settings you posted.


#4

Hey Poot, thanks for the reply, good for you if you like it better.

Just came back from Japan, I filmed Chun jumping for a whole round, other char almost (my gf had problem understanding the “do not touch anything” part) not moving.
Sadly, I only had a camera with 30fps capability, so it won’t be the best to compare, but good enough to see if I’m totally out of synch.
I don’t have much time now but I’ll post again when it’s done.

Tbh, it had been so long I didn’t play 3S, and so long I didn’t touch a cab, I can’t say if I just lost my timings or if I got used to bad ones but I missed a lot of easy parries playing on a cab.

I haven’t tried anniversary collection, but it would be nice to do some testings as well (someone told me it was pretty laggy, but it’s just hearsay and you seem to have a different opinion, sorry, didn’t fully read your thread so far)


#5

Ok, did some tests with the 30 fps camera I had at hand during holidays and now with Retroarch at the current settings I posted above.
Comparison is not absolute proof of anything since we’re shooting a 60 fps game at half speed, but it’s god enough to make some points.

Feel free to correct me, checking the videos by yourselves.

Link to the CPS3 video, shot at 30fps

Link to the Retroarch video with the above settings, shot at 30fps

It seems that the speed settings I proposed for Retroarch are pretty accurate.
The videos remain in perfect synch most of the time,there’s a few times Retroarch gets ahead and others CPS3 does.
Two possible explainations :

  1. the 30fps camera doesn’t capture the same exact frames and videos were’nt perfectly synched
  2. since sometimes RA is in advance, sometimes it’s the CPS3, I think RA is pretty steady but from what I saw checking the framerate, it slightly varies once in a while and thus is not perfectly stable

Conclusion, we’re pretty near arcade !

If anyone can provide a 60 fps vid of the CPS3 having chun jump straight up a full round, that would allow better comparison.

[I’ll provide the videos for anyone interested to make further comparisons as soon as I figure how to easily upload vids. Is youtube ok, or would it re-encode stuff and possibly mess up the vids ? I’ll edit once I figured that.]

EDIT : done.
If it’s needed I can provide dl links for the vids, but I’m sure everyone knows how to do that on youtube

Nota : to synchronise vids I cut the vids just after the “FIGHT” banner disapeared.
To play both vids synchronously, I used VLC 2.0 (strangely newer versions can’t do that) as follows :
media> open multiple files > show more options> play another media synchronously (make sure you allowed more than one instance by unchecking the 2 boxes that have to do with it in Tools>preferences>Interface)


#6

Ok, shot a few more vids (same setup, 30fps…) and very interesting results :
Smupmame running at 0.99
Retroarch running at 60Hz or so (59.89 something, didn’t have time to set it back to 60Hz)
OE (I had doubt on where to cut right after the Fight banner disappeared as it took a lot more idle frames. every other version starts jumping on next frame)

Shmupmame (speed set at 0.99) too slow, gets desynched very fast, ends 1 sec after CPS3

Retroarch at 60Hz, waaaay too fast, desynched very fast, ends 2 secs before CPS3

OE, even with the lack of precision on where to cut the vid, it gets desynched after 15 or so secs (don’t remember the exact count), and… timer is veeeery slow, ends 11 secs later than CPS3

Bottom line, Retroarch setup as above sounds a lot better rythm wise and input lag is non existent or next to (Runahead feature sounds useless for 3S if I recall my counts), even with scanlines filters.
Even if I’m a bit sloppy, it stays the best option we’ve ever had.
Maybe it could even be improved a bit and we defenetly are very close to CPS3.

I’ll upload the vids in a few days and edit this fast message at the same time.


#7

Ok, I did better than posting the vids, I made a montage, you can check it there :

Street Fighter III : 3rd Strike - speed comparison CPS3 VS almost everything else

End results is we can now play 3S almost as on Arcade !

I’ll have to check again the input lag on both FBA and Mame cores, but if I recall what I typed above, the FBA core doesn’t suffer input lag…