Back in the day, arcade and console hardware ran at weird native resolutions like 384×224. When they were hooked up to a standard arcade monitor, the picture was automatically resized to standard 4:3 resolution.
We assume that the game designers intended their sprites to be viewed at 4:3 resolution. There’s no real debate here because Capcom and other companies used to manufacture complete arcade cabinets, so they knew the end result would be displayed at 4:3.
As a result, when you go from standard resolution to native resolution on an emulator, all the characters look short and wide. The whole screen looks stretched because 384×224 is actually 12:7 resolution. That’s a messed up ratio that doesn’t make sense at all.
However, the main advantage to native resolution is that it represents every pixel. So for archival purposes, sometimes it’s better to store screenshots at native resolution because it’s easy to stretch that image to 4:3 later. On the other hand, there’s no way to go back from 4:3 to native resolution because you can’t tell what the original pixels were when you look at a resampled 4:3 image. Resizing aspect ratios is inherely lossy.
But then again, compressed video is lossy too. If you’re going to show a video to a general audience, it’s usually better to go with the intended 4:3 ratio. That’s how everyone played it so that’s what looks natural and familiar to everyone.
That’s right, MacroLua isn’t just for making combo videos. You can also utilize scripts to set up and refine elaborate screenshot scenarios. The latest build (1.10) features several settings to facilitate the process. Here’s a brief overview to get you started.
Simply follow the directions provided in the documentation to get MacroLua installed. Once you have it running, the first thing you should do is turn off input display if it’s enabled by default. You probably wouldn’t want those command symbols showing up in your screenshots.
Next, turn on pause after playback. This setting automatically pauses the emulator at the end of the script. Once it’s paused, if you like what you see, you can simply press F12 to save a lossless native resolution screenshot to your screenshots folder. It’s that easy.
Now all you have to do is come up with a good idea and write the script to make it work. Include a W command at the end (like W10!) and use it to control when the emulator pauses. If it’s too soon, then increase that number. If it pauses too late, then decrease the number.
Combining alchemy and modern technology, Dammit has somehow miraculously succeeded in unlocking the hidden hitboxes of several classic fighting games. He was kind enough to provide his custom display script with brief instructions on how to use it, in addition to a whole slew of fascinating example screenshots alongside detailed background explanations.
Here is a sample of Street Fighter II hitboxes, made with the MAME-rr emulator and Lua script that I developed based on work by mz and felineki.
A brief guide to seeing the hitboxes in action:
- Download and set up either MAME-rr or FBA-rr. We recommend MAME because the boxes can cause slowdown in FBA, but it works fine in either.
- Get the SF2 hitbox script and save it as a text file with the emulator.
- Launch the emulator and start any one of the SF2 games: World Warrior, Champion Edition, Hyper Fighting, Super, Super Turbo or Hyper Street Fighter II. Both “parent” and “clone” sets work.
- Open a Lua window. In MAME-rr this is done with Ctrl-L by default. In FBA, click Game, Lua Scripting, and New Lua Script Window. Click the Browse button in the window, select the Lua file, and click Run.
Now as you play the game, hitboxes are superimposed on the sprites. Blue is the area that can be hit by the opponent, and red is the area that can hit the opponent. The green boxes are the areas that can never overlap and will cause characters to push each other.
Two weeks ago, i recommended MacroLua as an emulator utility for scripting tool-assisted combos. I’m hoping that some of you were intrigued enough by its potential to give it a try. The following guidelines are intended to help you guys get started on the right foot.
Rule #1: Always leave a few empty frames of wait time at the beginning of your scripts.
Personally, 99% of my scripts begin with W10 as a rule. Weird input errors tend to happen if you start scripts with commands on the very first frame.
Generally you’ll want to leave at least 60 frames of idle wait time before each combo for video editing purposes. It’s a good idea to incorporate that into your script from the get-go. The last thing you want to do is spend an hour developing a combo around some random occurance only to discover that the whole thing falls apart when you move it back by 60 frames.
By the way, if a combo doesn’t work, try adjusting the wait number before the script. Sometimes random factors such as turbo speed, projectile slowdown, and superfreeze startup can disrupt a working script. If you’re starting from a fixed save state, the script will always produce the same result. After all, that’s the main advantage of using emulators.
Before you give up on a script, try increasing the wait number at the beginning to see if it changes anything. Some combos work on every frame, some work on every other frame, some on every four frames, some every twelve frames, and so on up to thousands.
After the premieres of Super Fireball Battle and style exhibition v.one at Evo2k10, quite a few people asked me about the tool-assistance methods used to capture oldschool game clips. With a new version (1.08) of MacroLua released yesterday, i thought now would be a good opportunity to introduce the program.
Here’s the basic concept. You create a save state using any supported emulator, then you write down a sequence of inputs frame by frame in a text file. MacroLua loads that state and tells the emulator to begin running your commands from that fixed point. If you tell it to execute R.D.L.U1. then Zangief will perform an LP Spinning Piledriver in 4 frames.
There are many advantages to this method, but the most obvious one is consistency. Let’s look at a game like SF2HF where damage and dizzies are randomized. If you script a fireball on the 10th frame followed by another fireball on the 80th frame and it dizzies the opponent, then it’ll always dizzy every time you run that state/script. On the other hand, if you try the same thing using a programmable controller with two fireballs set 70 frames apart, the outcome will be random because your starting point would be random.
To begin, simply download the latest version of MacroLua and follow the installation directions. I don’t want to get into details because those steps might change in the future, but if you run into any problems that you can’t solve in ten minutes, please feel free to ask here.