Arcade game resolutions

I did a bit of experimenting with setting different resolutions on the raspberry Pi for arcade emulation. This was in preparation for getting my standalone MAME image for the PJ adapter.

So the idea here is that the video output would be set to the exact resolution of the game, before emulation is started. Now, there are emulators that already do this, but I wanted to be able to possibly use emulators that don’t, and have full control of the process.

I started looking at the most commonly used resolution in arcade games. This came from MAME’s game info xml dump. Here’s the list:

Popular Horizontal Arcade Video Modes

Number of GamesResolution

Popular Vertical Arcade Video Modes

Number of GamesResolution

So, there are some things that are worth noting. Most games will run in a resolution of 320×240 without scaling. It just means that the screen size may be reduced. We have popular horizontal resolutions of 256 and 288 and 320. We also have a large quantity of games at 336 and 384 which will not display correctly at 320×240 unless rescaled, which we are trying to avoid.

For vertical resolution or line count, we have most games displaying either 224 or 240 lines. This is expected, due to the limitations of an arcade monitor. More on this later.

What we need to do is come up with a scheme to display most of these games at native resolution. Here’s my solution:

The raspberry Pi has 3 low frequency pixel clocks 4.8MHz, 6.8Mhz and 9.6Mhz.

  • For horizontal resolutions <=288 pixels, we use 4.8Mhz
  • For horizontal resolutions >288 and <=384 pixels, we use 6.8Mhz
  • For horizontal resolutions >384 pixels, we use 9.6Mhz

This works out quite well with most games displaying properly and fitting nicely to the available horizontal screen real estate.

Vertical line count is less of a problem. It can almost be ignored except for a few games that display at 248 and 256 lines like Irem’s R-Type and Midway’s Mortal Kombat and other games. Games that go over 240 lines break the rules somewhat (see my video generation tutorial here) and will likely have problems being displayed on anything but adjustable arcade monitors.

What we do in these cases is to reduce the front and back porch portion of the video signal and use that to get the addition line count. In my testing this worked fairly well.

This is the basis of my video mode switching algorithm for emulation going forward. It will be implemented in my standalone minimalist MAME image that can be found here.

One issue with this, console games that switch resolutions on the fly (Seiken Densentsu 3 / the unreleased Secret of Mana 3?) can not take advantage of this.

Retropie 4.7.1 images for PJ Adapter

I spent the last week getting the new RetroPie images working on the PJ adapter. This is the first RetroPie release with Raspberry Pi4 support.

Unfortunately it wasn’t easy and it didn’t turn out well. The new release messes up the classification of my joystick driver, configuring it as a mouse. It somehow breaks scaling in vertical mode that I was not able to resolve. It removes useful emulators like mame2003 (from Pi1/Zero image at least), adds emulators that don’t run well on a Pi1/2/Zero. Raspberry Pi 4 has emulation sprite / background tearing and jitter issues when scrolling, with all emulation cores it seems. Then there are minor annoyances like the new video driver stack and changes to the PCM audio on the GPIO.

I did what I could at this time, adding emus and configuring everything to work, but some deal breaker issues remain, mainly scaling in vertical mode and Pi4 graphics jitter.

For this reason, vertical images will not be available for now. If using Pi3 or lower, stick with the 4.5.1 images at the moment. If buying a Pi for this, go with a Pi3. Honestly there is little reason to go with RetroPie 4.7.1 right now that I can see. If you already have a Pi4, try the 4.7.1 and let me know how it goes.

While Retropie is great for consoles, many of you want a good arcade emulation experience, and Retropie is not that. I will therefore spend the next while working on a stand alone minimalist MAME image as some have requested. It will be small and will boot straight to a game, with proper video mode setup to avoid any scaling issues. Much work has already been completed. More on this in the next post.

Network migration completed…

Unfortunately though, it wasn’t a complete success. The storage on the new server is only about 8GB while it should have about 120GB. This is something I only noticed after the work was all done, while putting up the large PJ images. It was once again a screw up on the part of my hosting provider….

The proper and easiest way to address this is to create a whole new VM from scratch and restore this site there from backup, which I’m not going to do after what I just went through with this migration.

For the time being I put all the large files on a mirror server, and linked to those instead.

Server Migration

Starting November 25th until the end of the week, the server hosting this website will be migrated to a new network. There may be outages, and large files that may not be available during this period. Sorry for the inconvenience.

Many updates!

I made a couple of videos recently. One video is a demo of the PJ adapter:

I also added and fixed some of the missing or incomplete pages from the old site before the VM crash. Probably 90% of the broken links should now have been dealt with.

Monitor Testers / Video Signal Generators

Now that the beta test is finished, I’ve added a bunch of information on the video testers. These will be available for sale very, very soon. I want to have all the documentation in place before these go out.

I spent the last couple of days adding to the site in preparation for this. Please check out this page for more information on this project.

I also put together a guide on how to do basic testing and adjustment procedure using these testers and created a video on the project:

Thank you to those that have expressed interest in this project and those who helped beta test these over the last few months!

New JAMMA Adapters added

Some information added on new JAMMA Adapters that have been in development over the last few months. This info is long overdue. The new adapters include:

  • Bagman
  • Taito Space Invaders
  • Playchoice 10 Single (updates)

I also made some changes to the existing DIY adapters and JAMMA fingerboards. You can find all of these, along with my other JAMMA adapters on this page.

At this point I’m starting to run of JAMMA adapters to make. At this point I’m open to suggestions on what to make next. Feel free to send me a request.

Cabinet Adapters

I added a new section to the site to list the new cabinet adapters. This includes the following dedicated adapters, as well as the three DIY cabinet adapter kits.

  • Capcom
  • Sega System 8
  • Sega System 16
  • Konami
  • Data East
  • Tehkan
  • Taito
  • Irem
  • Universal Mr. Do
  • Namco Galaga / Digdug
  • Nintendo

The information on these is right here. I’ll be adding these to my ebay items very soon, but at this point I’m afraid I will not have the cycles to take any more additional orders with so many projects about to wrap up.

For now, the plan is to create all the documentation first and then to get these items listed for sale right after that.

Lots of updates coming soon!

I started updating the site again. First I’m going through some of the older pages and doing updated to complete some of the stuff that was left unfinished.

Next, I’m going to add a number of sections for stuff that is going to be released to the public. This includes the new cabinet adapters, video testers, the Rapberry Pi to JAMMA adapter, JAMMA Mate and JAMMA Test Card, and more.

As this is happening, I’ll also start listing my projects on eBay as well. I know a lot of folks have been asking for more info on these projects and where to get this stuff, and as I’m about to do this something always gets in the way.

Please stay tuned, and thank you for your interest my projects.

Hackers at it again!

So it seems like somewhere along the way the hackers managed to modify some files in HTML root once again. This wasn’t just me. A similar hack was used to take over thousands of WordPress sites.

I had to restore from backup again then set up some scripts to watch and report for unexpected changes.

Turns out they had access to the WordPress database as well, and that backdoor was saved in the backup I restored from.

After a simple manual cleanup and some plugin updates and removal, I believe the site is backdoor free and pretty well protected. I’m now looking forward to further hack attempts.

I will probably do a small write up on the methods they used and things that can be done to prevent it. Maybe it ends up helping someone with a similar problem.