XaiJu
The Electric Underground
The Electric Underground

patreon


Article - Is Low Latency Emulation Cheating?

So  a little background about  this article and why I have decided to write  it. For those who have been  following my humble website and Discord  this may be somewhat redundant,  but I think it is best to try and give  the full backstory. Previous to  this article, I wrote an article called  “What is ShmupArch? Why Does it  Matter?” The purpose of this writing  was just to provide some  clarification of what exactly ShmupArch is,  how it works, and hopefully  answer some common questions I had received  about it up to that point.  At the time, I was focused pretty much  exclusively on the technical  aspects of the emulator, as all the  feedback I had received on my  ShmupArch project up to that point had  been this is awesome! … But how do you get it to work?

That  was my frame of mind when I  wrote the ShmupArch article and then  posted it to the Shmup System 11  forum (I recommend reading it if you  haven’t already, as it gives  context to this article). I was  anticipating a lukewarm response of  people expressing mild interest in  the project and asking some technical  questions about it. However, to  my surprise, the response I received  was anything but mild. Really, I  don’t want to dwell on some of the more  heated aspects of the response,  the last thing I want to do is further  antagonize people, so I’ll just  say that the crux of the disagreement  about ShmupArch had nothing to  do with how to get it to run. Instead,  the primary criticism was that  the way ShmupArch achieves its lowered  input latency is unfaithful to  the original hardware and that playing an  emulated shmup at a lower  level of input lag is a form of cheating.  That was my impression of  what some of the people posting were getting  at at least. Even though I  don’t agree necessarily, I can see where  people are coming from. I’m  sure I’m probably over summarizing some of  the posters’ viewpoints a  little bit, but I think the topic of emulation  finally out performing  arcade hardware with input latency reduction is a  fascinating and  complicated subject.

Up front, let  me just say that I  don’t expect this article to completely win people  over or change their  minds. This really is a debate about an underlying  philosophy of how a  person views shmups and video games in general, so  I am sure this  discussion could go on endlessly. Instead, all I am  striving to do with  this post is to explain my philosophy and outlook  on the situation  clearly. If you don’t agree with me, I understand and  I’m not going to  be offended (as long as your response is somewhat  respectful ha). Also,  this is just my general outlook on the situation,  so I am sure there  will be some exceptions to what I think here and  there.

Going back to the  beginning, it’s  hard for me to pinpoint when exactly I started to  really get into  emulation and digging into different emulators.  Certainly it was before I  ever started playing shmups. I’d say probably  around ten years ago when  my friend helped me put together a junker of  a computer out of salvaged  parts (the Frankenputer we called it) and  the poor thing couldn’t run  anything except Starcraft Broodwar and  Zsnes. In those years I was just  starting to pick up Super Metroid  speedrunning before it was the popular  beast that it is today.

Anyway,  I bring this example up  because I was playing Super Metroid on the  SNES as well as on Zsnes and I  remember, even then, feeling like  something was wrong with the inputs  on the emulated version. The  extended wall jump up the room with all the  platforms and space pirates  was especially troublesome on Zsnes. I was  using a pretty crappy 3rd  party usb controller at the time, so that is  where I initially placed  the blame for the input problems on Zsnes.

(screenshot from famous Super Metroid AGDQ 4-Way Race, done on original hardware)

Soon  enough I figured out that it  just wasn’t the controller causing the  input problems, it was emulation  input lag. I could just stick to the  SNES version, of course, but I  wanted access to practice tools like  save states and replay recording  (this was before flashcarts supported  save states). And so began my  journey of minimizing latency. Ironically  enough, it was when I was  using Retroarch’s new run ahead feature for  Super Metroid that I  realized it could be used for shmups as well.

I  bring up Super Metroid because I  think it is an important example to  contrast with shmups and explain my  viewpoint. As a player, I  prioritize gameplay feel, gameplay accuracy,  and my ability to interact  with a game over other factors such as  aesthetic or hardware accuracy.  I also favor pragmatic simple solutions,  which will come into play  later. What I ended up doing with Super  Metroid is save state practice  on emulator, but then using the original  hardware for my actual runs;  makes sense, I think. Especially since,  until this year, Super Metroid  on the SNES was the most responsive way  to play the game anyway.

But  in the world of shmups, original  hardware is not a $60 console, $50  game, and a free crt. Maybe in some  cases (U.N. Squadron!), but for  many, like Dodonpachi, this is far from  the reality of the situation.  It also doesn’t help that many shmup  console ports are stupid expensive  to begin with. I know there are some  high rollers out there who have  the money and space for original arcade  hardware, but making that a  requirement to play and post scores is  simply unrealistic for the  majority of people. So unlike speedrunning,  only playing on the  original hardware really isn’t a viable solution.

So  we now must turn to emulation in a  way that speedrunning and fighting  games don’t have to. Yes, there are  console ports, but, overall, I  think it’s safe to say there are many  examples of great shmups that  have sub par console ports (like  Dodonpachi) or no port at all (like  Batrider). Now the question becomes,  how do we approach emulation? I’m  sure this is  going to be the  sticking point in the article that divides readers, but  I’ll try my  best to fairly represent both perspectives.

The  first perspective, that ShmupArch  undermines in some ways, is using  emulation to try and replicate the  original hardware as closely as  possible. The goal of this approach  would be to be able to set two  cabinets side by side; one pcb one  emulator, and have them be  completely indistinguishable from one  another. In many ways I respect  this perspective, especially for those  who originally did play their  favorite shmups in an arcade setting. I  remember in my interview with  EX Mosquito for the podcast, he mentioned  that he experienced this  exact phenomenon when using GroovyMAME next to  an original PCB.  Visually, he could not tell them apart.

This,  of course, is extremely  impressive. However, one concern that I have  about GroovyMAME is its  input lag. NOW HOLD ON! Before everyone gets  fired up, let me repeat  that this is a CONCERN, in that I do not have  all the answers and I am  open to evidence on this matter. So, if you  don’t agree with my concern  and think it is incorrect, please try and  present some evidence and  testing so we can all get on the same page.

Anyway,  the reason I have concern  about GroovyMAME’s input lag is that, in the  testing I have performed  with GroovyMAME, it’s input latency was a  frame slower than ShmupMAME’s input  lag, when both had v-sync turned  off. The test was performed on a VGA  CRT monitor using a 60 fps camera  and a light wired to the move left  input. For some reason ShmupArch was  not delivering 1 frame of input  lag, even though it was setup to do so  in frame-advance. It is likely  that this can be improved with some  setting tweaking on my part, but  still, two frames of lag is a  remarkable improvement.

As I  understand, GroovyMAME’s edge  over ShmupMAME, when it comes to input  lag, is that it is able to run  v-sync without any input lag penalty,  which is awesome, there is no  denying that. Also, it is completely  possible that I may have had  GroovyMAME setup in a manner where I was  unable to take full advantage  of GroovyMAME’s potential. I wouldn’t  think so, but it is possible. I  was using the Windows build of  GroovyMAME and ShmupMAME on a CRT  computer monitor, rather than on a  15hz CRT. Obviously this setup  probably is not the correct way to  achieve 240p output, but, like I  said, I was focusing on input lag not  video resolution.

So let’s step  back for a second. Now,  I recognize that GroovyMAME and MAME in general  are complicated pieces  of software and I don’t fully understand how  they work. I can already  envision the replies saying as much and I am  completely OPEN to some  more hard information about MAME and GroovyMAME, rather than opinions or impressions.

So  here is the problem that we run  into, and this is really the crux of  my concern. From the players I have  spoken with, Eaglet, Jaimers,  Aquas, Bananamatic, Prometheus, and more,  MAME-based emulation feels  laggier than original hardware in cases like  Garegga, DDP, and  Batrider; whereas  ShmupArch has the potential to  feel closer to the  input lag you would experience on PCB. ShmupArch, of  course, also has  the potential to feel even more responsive, but we’ll  get back to that  later. Now I say “feels” because, to the best of my  knowledge, there is  not much documentation of what exactly the original  PCB lag is on a  lot of these shmups. What is Garegga’s exact latency?  What is  Dodonpachi’s? DaiOuJou’s? Batrider’s? Who knows? This is a HUGE   problem, and here is why.

If we,  as a community, decide that  “fair” play consists of playing in an  emulated environment that matches  the exact latency of the original  hardware then, logically, we are going  to need a comprehensive database  of what levels of latency are we  trying to match. Not only is this  information going to be extremely  difficult to gather because of the  technical requirements of creating  accurate reliable input lag tests,  it also has the added problem of the  original hardware being expensive  and difficult to come by in the first  place. I would be shocked, though  impressed, if such a database came  into existence.

Before  proceeding to my solution and  outlook on the situation, let’s review  the first perspective again and  my concerns with it. Theoretically, it  does make some sense that the  standard of play, when it comes to input  lag, will need to match the  original hardware. There is a certain  feeling of fair play in this idea  when you think about the arcade roots  of the genre. However, even if we  all end up agreeing to do this,  there are a number of logistical  problems that are going to be  barriers. The first is that emulators like  MAME and GroovyMAME may not accurately match the PCB input lag on many shmups in the first place (again, I am open to hard data  that contradicts this point). The second is that we don’t have a   detailed publicly available database of the original hardware latency  to  refer to and the possibility of this ever being created is unlikely.  A  third concern, which I have been saving until now, is the additional   regulation and hassle this requirement is going to place on the   community (are we going to require input lag checks?). This expectation   of hardware purity also undermines how many in the community prefer to   play shmups these days. Let me explain.

Sure,  there is a number of people,  like myself, who enjoy using CRT monitors  to play shmups. However, from  what I have gathered from talking to  people on the forum and in my  Discord, there is also a large group  of players who prefer to play on modern digital displays. Most  of these  people I have spoken with do use low latency monitors, but no  digital  display is lagless. So what does this mean? This means that  only  allowing people to play on MAME or GroovyMAME is going to subject a   large group of players, if not the majority of players, to additional   input lag, since these emulators do not offer lag reduction features   like ShmupArch does. Is that really what we want? Are we so committed to   hardware purity that subjecting a large group of players to a laggy   gameplay experience is just a necessary evil? For some maybe the answer   is yes, but for me the answer is no. So here are my thoughts on the situation and my solution.

The  first thing I think we need to  remember is that arcade hardware is  over. CAVE is not going to build  anymore Dodonpachi PCBs. Original  hardware for these games we love is  aftermarket, and it’s not exactly  plentiful. I’m a huge DDP fan, I’ve  played and studied the game for  years now, and yet I don’t have a  Dodonpachi PCB. I, of course, would  be happy to have one, but unless I  unexpectedly roll deep with $$$ one  day, I don’t see it happening. So if  arcade hardware is not available  to many of the current players, and  will certainly become even less  available to future players, we really  have to ask ourselves … why  bother? Why does it matter, for our  community, that we play in a manner  faithful to the arcade, in terms of  input lag? Sure in places with  more accessible arcade hardware and a  more active arcade community,  like Japan, this conversation is a little  different. But we are not  Japan, we will never be Japan, so, personally,  I think it is time to  move forward.

Also, I think it’s  worthwhile to ask  ourselves if input lag is something worth preserving?  Arcade hardware is  not perfect, just because it’s arcade hardware. Is  input lag a gameplay  feature? Or just an unfortunate byproduct of the  technology used to  create these games. I think Garegga is a good  example to look to. The  game is known for having significant lag. Maybe  this lag was  intentional, maybe it was just caused by some kind of  coding problem.  It’s unclear. What is clear though, is that when M2  created the  extremely faithful port of the game, they added in an input  lag  reduction option. Even more interesting is that you are still able  to  save your replays with this option turned on. Apparently M2 does  not  consider input lag reduction cheating.

(Screenshot of Revision 2016 Score Screen)

And  so we arrive at another  crossroad. In my previous post I talked about  being able to reduce  Battle Garegga’s input lag down to one frame using  ShmupArch. For an  experienced Garegga player, even one not married to  the idea of hardware  purity, this does sound pretty shocking,  considering Garegga is known  for its input lag being part of its  gameplay (for better or for worse).  Then you compare this to something  like Dodonpachi being at 1 frame of  input lag, and this does seem like  more of a natural fit. In fact, when  comparing the latency of  Dodonpachi in ShmupArch, compared to other  emulators, Jaimers reported  that ShmupArch actually felt the closest to  the original PCB.

I  guess a compromise that could be  proposed is using ShmupArch’s  adjustable input lag reduction to match  the PCB input lag on your  setup. Not a bad idea on paper, but when you  think about the logistics  of requiring players to do accurate input lag  tests on their setups and  adjusting the input lag on a per-game basis,  this seems like an insane  hassle. Then there is the question of fairness  and trust. Pandora’s  box is open, the future is now, run-ahead isn’t  going anywhere. What is  stopping a player from setting the run ahead a  little faster than  everyone else? Why shouldn’t he? If one frame of lag  is the most  desirable, if one frame of lag is what the players want, why  not make  it the standard? Then we are all on the same playing field. If  a player  wants to add additional lag by turning on v-sync or using a  slower  monitor, then it is his choice. All options are open.

When  you sit down and put all the  pieces together: the end of original  hardware, the barriers to  accurately emulating original hardware  latency for the community, the  possibility of an improved gameplay  experience, the impossibility of  regulating a player’s level of input  lag, the lack of quality console  ports, the need for ease of use and  accessibility; the answer to the  question of is low latency emulation cheating? becomes clear. No. Low input latency is not cheating, it is the natural evolution to how we have been playing shmups outside of the arcade.


More Creators