We are proud to announce the launch of the "Free Stuff" section of our website. There, we will post things produced during development that we believe will be of use to people in the retro gaming community. The first item we're releasing is a ROM of our custom test software for the Sega Genesis. We hope to continue adding items to the Free Stuff section as much as we can. You can head over there right now to download the ROM, or continue reading below for a detailed explanation of why this piece of software exists in the first place.
If you're making something with the intent of having people buy it with their hard-earned money, it has to be done right. We've mentioned a couple times that not all RGB outputs are created equal. Different game consoles have different characteristics in their video signals. Even the same consoles have been revised internally over their production lives, which can change these characteristics. Hence, we need a way to measure and characterize these signals to produce a standard output conforming to CEA-770.2-D (similar to EBU N10-1998), which TVs are designed to accept. Our solution was writing test cartridge software: our own "ROM" containing specific test patterns with the intent of running it on physical game consoles. While the ROM is running, we can measure the signals with an oscilloscope and gather the information required in designing the proper circuit for that specific console.
Our first piece of test software was for the Sega Genesis. A high quality and easy to use SDK, called the SGDK, made development for the Genesis/Megadrive much easier than how it was done back in the day by real game developers. We initially made the software for measuring signals only, but it has since expanded to be used for other design aspects and also for use in the factory for testing and quality assurance of our cables. I'd like to showcase the different test patterns and functions of our Genesis software:
Title Screen:
After powering on the console, you'll get our title screen sporting a Genesis-ized version of our logo along with other information. It shows the screen size and scan mode that the Genesis uses at bootup. There is a countdown timer of 5 seconds until the first test pattern gets displayed. The purpose of the timer is that I need the software to be able to start without any input required from a controller. However, if you do have a controller plugged into port 1, you can skip the 5 second countdown by simply pressing START.
100/0/100/0 Colorbar Pattern:
This is the main pattern used for testing and is the first test pattern in the cycle (launches after 5 seconds). It allows us to do most of the required measuring of the RGB signals coming from the console. The pattern consists of 8 vertical bars spaced evenly throughout the screen. Each bar is one of the fully saturated colors found at the extremes of the RGB cube. They are ordered from left to right in decreasing order of Luma (or "lightness" content). Knowing what voltages the console spits out for these colors, enables us to properly scale the signals for a standardized output.
Help Screen:
Pressing START on Controller 1 once the software has launched, brings you a screen full of instructions. Only controller 1 is used. A & B cycle through the different test patterns. C toggles between non-interlace and interlace scanning for the Genesis video output (see below). Pressing LEFT or RIGHT on the D-Pad performs the audio test (see below). Current screen size and scan mode are displayed on this page, followed by version information. The scan mode can be toggled by pressing C on this page. The only other button that works in the help screen is START, which returns you to the test patterns.
Grayscale Bar Pattern:
This is similar to the colorbar pattern, except using the grayscale representation of the colorbar colors. I found that color sub-carrier noise was easier to see on this type of pattern. Some consoles exhibit this noise, and this pattern helps me with designing the correct filters to reduce the effect of the noise.
Solid White Screen:
This is simply a screen that is completely filled with white. This pattern helps me measure the active video width of the console video signals. With that information, I can determine the proper square-pixel representation to use when capturing video and screenshots. This is probably an overlooked fact, but all of our videos and screenshots on our website have the correct aspect ratio. What you see on your TV should match our uploaded content, in terms of the horizontal and vertical ratios. A discussion of the concept of non-square pixels is a confusing property of analog video and is beyond the scope of this blog post.
Solid Magenta Screen:
This pattern is used for measuring the maximum power dissipated by our circuit. When magenta is displayed, the amplifiers in our circuit draw the most current. Since our circuit is powered from the console itself, we want to minimize the current sucked out of it. Minimizing this current prevents stressing of the voltage regulator within the console. Fortunately, our circuit is very power efficient, by design, and measures very minimal current draw out of the console.
Solid Blue Screen:
There is a synchronization pulse that needs to be extracted from the composite video signal and injected into the Y' signal of the Y'PbPr component video structure. This is accomplished by "slicing" the composite video signal at a threshold where everything above it is discarded and everything else below is retained. Blue is represented by a signal that gets very close to this threshold value, and can interfere with this slicing operation. This pattern helps us verify the robustness of our slicing circuit.
Solid Black Screen:
The North American version of the NTSC standard has a weird quirk that doesn't exists in PAL standards and in the Japanese version of NTSC. "Blanking Level" is the voltage at which the video is not active. "Black Level" is the voltage of the color black when the video is active. In PAL and NTSC-J, these levels are equivalent. But in NTSC-M (North America), black level is slightly higher than the blanking level, by about 54mV. This test pattern let's me see where the console decides to put black in relation to the blanking level. So far, every North American gaming console I have tested keeps the two levels equivalent, which means they all follow the Japanese NTSC-J standard.
Scanning Mode:
Pressing C toggles between non-interlace and interlace scanning for the Genesis video output. A notification displays on the screen telling you which mode you just changed to. You can go to the help screen to see the current mode. Normally, these older game consoles and computers output a non-interlaced (progressive) signal. The Genesis's capability of interlaced scanning is a little known fact hidden at the depths of the internet. The most prominent example of the use of interlaced scanning on the Genesis is the Versus mode in Sonic 2. Anyway, the main purpose of having control of switching the scan mode is to test a future product we will be working on. We also wanted to verify that the console didn't change anything in terms of video output level while it was scanning in a different mode.
Audio Test:
Pressing LEFT or RIGHT on the D-Pad produces a sound effect in the respective audio channel. A notification displays on the screen informing you which channel should be playing. The main purpose of this test is to make sure the audio is wired up properly within the cable after it is assembled. This is exclusively a test to be done in the factory during production, or when engineering units are assembled.
That's pretty much it. We might add more tests in the future, if needed. We have a SNES version of this software, but it's not currently ready for public release. When it is ready, we will post it on our "Free Stuff" page. If you have any questions or suggestions, please feel free to contact us via the contact page. As always, we appreciate your support. Thank you.
-Ste