New projects!

More new projects. Instread of polishing and releasing stuff that I’ve been sitting on for months if not years, I’ve decided to distract myself with more projects.

These include a couple of robot controllers and some helper boards for programming Atmel MCUs via the Arduino platform, with which I’ve been doing a lot more work with recently. I’ll post more details on that soon, and will eventually make these available to the community as opensource / open hardware project. For now this is just a teaser.

Many more new JAMMA adapters coming soon.

I started to work on a number of new projects, but I’m not abandoning the JAMMA adapter work just yet. After a lot of demand with the Atari Dig Dug adapter, I have started to work on many of the other Atari games like Missile Command, Xevious, Centipede, Millipede and Crystal Castles.

This is progressing well, but I’m afraid even it these do get completed, I may not have the cycles to keep a steady flow of them available for people. I am working on a number of home renovation projects and getting distracted by other interruptions, the result of which may or may not be posted here eventually.

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!