240p test suite

From Classic Console Upscaler wiki
Revision as of 19:22, 24 May 2014 by Artemio (talk | contribs) (100 IRE)
Jump to navigation Jump to search
Genesis version

A homebrew software suite for video game consoles developed to help in the evaluation of upscalers, upscan converters, line doublers and of course TV processing of 240p video. The Wii and Dreamcast versions have modes for 480i and 480p evaluation as well.

It has tests designed with the processing of 240p signals in mind, although when possible it includes other video modes and specific tests for them. These have been tested with video processors on real hardware and a variety of displays, including CRTs and Arcade monitors via RGB.

As a secondary target, the suite aims to provide tools for calibrating colors, black and white levels for specific console outputs and setups.

Current platforms are: Sega Genesis (Mega Drive), Sega CD (Mega CD), Sega Dreamcast, Nintendo Wii and GameCube.

Test Patterns and Interactive Tests

Since the software is running on a gaming platform, there is some degree of interactivity not possible on regular video tests, we have tried to use this as best as possible when applicable. For the rest of the cases regular test patterns, with inspiration in other sources, have been used.

Here's a description of each one of the options, as well as any specific commands within them.

Test Patterns

Genesis version

These are found under the main menu's 'Test Patterns' sub menu:

PLUGE

Dreamcast version Genesis Version

The picture line-up generation equipment (PLUGE) is a test pattern used to adjust the black level and contrast of a video signal.

The pattern in this suite is mainly designed to adjust the black level. The control for setting this on your TV is usualy named "Brightness".

Reduce the Brightness until the bars on the sides of the PLUGE are no longer visible, and then slowly raise it until they are *just* visible.

This adjustment ensures that anything intended to be black is actually black, and allows all detail to be seen on dark scenes.

Color Bars

Dreamcast version Genesis Version

This is a typical pattern for adjusting black, white, and color levels in general. Based on the CPS-2 color adjust pattern. Each bar has been set at a regular interval in hexadecimal, corresponding to colors 0x00 to 0xFF (0 to 255). Displaying all the "pure" colors possible on each system, from lowest to highest intensity.

This is adjusted in the same way black levels are set with the PLUGE. If you adjusted the black level correctly with the PLUGE, the rectangles under the "1" column should be barely visible.

Adjust the white level first, this is done using the "Contrast" control on your TV set. Raise it until you cannot distinguish between the two blocks under the "F", and lower it slowly until you can clearly tell them apart.

The same procedure should be used with each color, raise the control that adjusts the individual color level (not the color/tint one) until you can't tell the two boxes under the "F" from each other, and then lower it until you can distinguish them clearly.

Repeat for each color and you are set.

Genesis/Mega Drive/Sega CD Version

In the case of the Genesis, there is a limitation when trying to display primary colors. While it can display 61 colors simultaneously (4 palettes of 15 colors + alpha each), the palette only has 8 pure tones of Red, Green and Blue. Because of this, the scale can only display 8 tones per color, including the white scale. Nevertheless, using the Shadow/Highlights mode on the VDP it displays 12 shades of each color in this pattern, down to 6% on each pure tone.

SMPTE Color Bars

Dreamcast version

In an SMPTE color bar pattern, the top two-thirds of it contain seven vertical bars of 75% intensity. In order from left to right, the colors are gray, yellow, cyan, green, magenta, red, and blue. This sequence runs through all seven possible combinations that use at least one of the three basic color components of green, red, and blue, with blue cycling on and off between every bar, red cycling on and off every two bars, and green on for the leftmost four bars and off for the rightmost three.

Below the main set of seven bars is a strip of blue, magenta, cyan, and white castellations. When a television receiver is set to filter out all colors except for blue, these castellations, combined with the main set of color bars, are used to properly adjust the color controls; they appear as four solid blue bars, with no visible distinction between the bars and the castellations, if the color controls are properly adjusted.

Color Bars with Gray Scale

Dreamcast Version

This pattern idea and layout borrows form the Digital Video Essentials color adjust pattern. It has a gray background as reference, and can be used with color filters in order to adjust color accuracy.

Color Bleed Check

Genesis version Checker board

This pattern helps diagnose unneeded color up-sampling. It consists of one pixel width color bars alternating with one pixel width black bars.

You can change the vertical bars to a checker board with the A button. The idea for this pattern was provided by Konsolkongen, for use with the DVDO EDGE.

Grid

Dreamcast Version

A grid which borrows its basic pattern from the CPS-2 grid. It is used to determine linearity on CRTs, but is presented here in order to align the screen and find out overscan on the display. It uses the full resolution of the target console, with a margin of red squares for the corners. The pattern should be shown fully.

Dreamcast Version

When using Composite, SCART/RGB-21 or S-Video on the Dreamcast the last line is not visible. This is not a problem with your display. To help you set it up, use the D-PAD to move the pattern. When doing this, an offset will be displayed on the top right corner of the screen.

The next release adjusts the pattern to 239 pixels.

Linearity

Genesis Version

Five circles are displayed on top of a grid, one in each corner and a big one in the middle. Used on CRTs to check linearity of the display or scaler, in this case you can show or hide the grid with the "A" button, and toggle between grids with the "b" button. The pattern is designed to work as an NTSC signal, with the 10:11 pixel aspect ratio. Circles should be perfectly round in the display.

It is interesting to see how the intensity of the light changes when turning off the grid on some flat panel displays.

Gray Ramp

Genesis version

A gray ramp adjusted to each console color capabilities is displayed. Useful for calibrating white levels and adjusting color temperature.

White Screen

As the name implies, the screen is filled with solid white. The user can change the fill color with the A button, cycling between white, black, red, green and blue.

A full white screen usually makes evident audio interference in some RGB cables.

The fully black screen might cause some displays or upscan converters to stop recognizing the signal, which is a common (and undesirable) condition during gameplay.

100 IRE

100IRE.png

Displays a 100 IRE pattern, which can be changed in 10 IRE intervals between 0 and 100, or from 100 to 140. The Genesis version has 7 IRE values, which correspond to its palette.

Interactive Tests

Drop Shadow Test

Genesis version

This is a crucial test for 240p upscan converters. It displays a simple sprite shadow (32 by 32 pixels) against a background, but the shadow is shown only on each other frame. On a CRT this achieves a transparency effect, since you are watching a 30hz shadow on a 60hz signal. No background detail should be lost and the shadow should be visible.

This is a very revealing test since it exposes how the device is processing the signal. On devices that can't handle 240p signals, you can usually see that the signal is being interlaced with an odd and an even frame, as if it were regular 480i. This shows a shadow that doesn't flicker, with feathering (a line is drawn and the next one isn't).

The user can toggle the frame used to draw the shadow with the A button on the Genesis or the X button on the Dreamcast. Backgrounds can be switched with the A button and the B button toggles sprites.

Striped Sprite Test

Genesis Version

There are actually deinterlacers out there which can display the drop shadows correctly and still interpreted 240p as 480i. With a striped sprite it should be easy to tell if a processor tries to deinterlace (plus interpolate) or not.

The user can change background with the A and B buttons.

Lag Test

Dreamcast version

This test is designed to be used with two displays connected at the same time. One being a CRT, or a display with a known lag as reference, and the other the display to test.

Using a camera, a picture should be taken of both screens at the same time. The picture will show the frame discrepancy between them.

The circles in the bottom help determine the frame even when the numbers are blurry.

The Sega Genesis version of the test can be used with a Nomad as the reference display.

Manual Lag Test

Genesis version

The main intention is to show a changing pattern on the screen, and given a visual and repetitive cue, play a beep alternating speakers. This should show to some degree the lag (if present) when processing the signal.

As an added feature, the user can click the A button when the sprite is aligned with the one on the background, and the offset in frames form the actual intersection will be shown on screen. This can be repeated ten times and the software will calculate the average. Whenever the button was pressed before the actual intersection frame, the result will be ignored (but still shown onscreen).

The B button can be used to change the direction of the sprite from vertical to horizontal, or display both at the same time.

The C button on the Genesis and the X button on the Dreamcast can be used to turn off the audio cue. In the case of the Dreamcast, if a Purupuru (Jump pack) is found, it will be used as well.

Of course the evaluation is dependent on reflexes and/or rhythm more than anything. The visual and audio cues are the more revealing aspects which the user should consider, of course the interactive factor can give an experienced player the hang of the system when testing it via different connections. Since a frame is around 16 ms (1000/60), that value must be considered the general error when using the test results.

SIP Michrophone and Fast Fourier Transform Lag Test (Dreamcast only)

Dreamcast version

This test can be used to measure display lag if both video and audio follow the same chain.

It uses Fast Fourier Transform (FFT) to detect the audio delay by playing a 1Khz tone and precisely calculating the frame delay.

The L and R triggers allow you to change the frame accuracy of the FFT used to estimate the audio delay. This ranges from 1 frame to 1/4th of a frame (16.67ms to 4.16ms). The smaller the frame accuracy, the higher the probability of small errors; since the Dreamcast's microphone samples rate is 11Khz. All settings are within the hardware capabilities.

Scroll Test

Genesis version

This test shows a two layer background from Sonic the Hedgehog. The speed can be varied with the d-pad, and change direction with the B button. The A button stops the scroll.

Grid Scroll Test

Genesis version

A grid is scrolled vertically or horizontally, which can be used to test linearity of the signal and how well the display copes with scrolling. The C or X buttons can be used to toggle between horizontal and vertical, while the d-pad regulates speed, the A button stops and the B button changes direction.

Horizontal Stripes

Dreamcast Version

A pattern consisting of a full screen of horizontal black and white stripes, one pixel tall each. This is a taxing pattern, specially when pressing the A button which enables alternating each frame the color of the lines. A good 240p video processor should show all frames. On several displays we've observed that the screen stays static on the first pattern displayed on screen and no change is shown. For this a Frame counter is present, which can be enabled with the C button on Genesis or the X button on Dreamcast.

The user can also change the frames with the B button, which alternates the even and odd frame cadence for the automatic switching of patterns.

When using the 480i resolution on the Dreamcast version, this pattern makes evident the way the upscaler is processing the signal as well.

Checkerboard

Dreamcast Version

An even more taxing pattern, a one pixel black and one pixel white alternating pattern. Exactly the same commands apply as with the Horizontal Stripes.

This pattern also makes obvious if all lines are being scaled equally, if some appear thicker than other the scaler or display is not displaying them equally.

Backlit Zone Test

This test is designed to evaluate how a display deals with dark scenes. A single sprite of variable size can be controlled by the user on top of a completely black background. The dimming zones can be easily spotted while doing this and the rest of the screen should - in theory - remain off. The sprite can be hidden with "Y" (Dreamcast) or "C" (Genesis), and the sprite size can be changed with "A" and "B".

Sound Test

Genesis Version

This test allows to play a tone on the left or right audio channels, it also can change the panning of the tone for a central channel (both at the same time). It is meant to test if the stereo cables are connected correctly.

The Genesis version uses a TFM track by Shiru, using the YM synth.

Versions

There are currently three platforms that run the suite, both have been developed and tested on real hardware, The software should run in NTSC mode by default when possible, or if your console is modified.

Sega Genesis/ Mega Drive

The Sega Genesis version was developed using the SGDK, it was the first version of the 240p Test Suite and is fully coded in C. In order to run it you need a flash cart, we have tested the following:

The Genesis resolution is 320x224 and is being used fully.

Sega/Mega CD

This is identical to the Genesis version, but loaded from the Sega/Mega CD. In order to run it, you only need a blank CD-R and the appropriate version for the region of your hardware. It is recommended you burn it at 1-4x speed.

In technical terms it uses a slightly different memory map, a Sega CD loader created by Luke Usher and custom boot code to run the SGDK binary.

Sega Dreamcast

The Sega Dreamcast version includes more options, but the core functionality for 240p is the same. No special hardware or modifications are needed, it will run on any MIL-CD compatible Dreamcast after burning the CDI image (discjuggler format). It uses the KallistiOS as framework and SDK.

This version has a menu option for changing the current resolution, with the following values:

  • 240p: Standard 320x240 at 60hz is used, with all graphic data in that resolution.
  • 480i scaled 240p assets (NTSC): This is 640x480i at 60hz, but using all the resources at 320x240 using internal line doubling. Useful for testing for this case which is present in many Dreamcast and PS2 games. Also known as "Fake hi-res"
  • 480i mixed 480p/240p assets (1:1/NTSC): It is 640x480i at 60hz as well, however some graphics are unscaled and shown only on the upper left corner of the screen (the first 320x240 pixels). Since there is a 1 to 1 pixel ratio as in 240p, tests can be performed for 480i de-interlacers and scalers. Some test are shown in full 480i, such as the grid and scroll.
  • 480p mixed 480p/240p assets (1:1)with scanlines: Only available when using a VGA Box.Scanline intensity can be modified from options.
  • 480p scaled 240p assets & scanlines: Only available when using a VGA Box. This is internally line-doubled and displayed. In the case of previous resolutions, they are also internally line doubled to 480p, but respecting each mode variations.

The software is compatible with composite, s-video, RGB-21/SCART and VGA cables.

The Dreamcast resolution is full 320x240 when in that mode and using the PowerVR (PVR) version (however the lowest pixel is not visible in most modes), there is a previous SDL version that runs on 320x234 mode, but the small framework was rewritten to use the PVR chip on the Dreamcast directly with a great advantage in speed for frame alternating patterns. However the SDL version is kept - but no longer maintained - for documentation purposes along with its source code.

Nintendo Wii

The Wii version - just as the Dreamcast one - includes more options, but the core functionality for 240p is the same. No special hardware is needed, but your Wii system must be able to run homebrew. It uses the devKitPPC as framework and SDK, via pure GX calls.

It supports the Wiimote, nunchuck, Wii classic and Gamecube controllers,

In order to install it, copy the 240pSuite folder to the app folder in your SD card, and launch it from the Homebrew channel. You can also use Wiiload via wifi.

This version has a menu option for changing the current resolution, with the following values:

  • 240p: Standard 320x240 at 60hz is used, with all graphic data in that resolution.
  • 480i scaled 240p assets (NTSC): This is 640x480i at 60hz, but using all the resources at 320x240 using internal line doubling. Useful for testing for this case which is present in many Dreamcast and PS2 games. Also known as "Fake hi-res"
  • 480i mixed 480p/240p assets (1:1/NTSC): It is 640x480i at 60hz as well, however some graphics are unscaled and shown only on the upper left corner of the screen (the first 320x240 pixels). Since there is a 1 to 1 pixel ratio as in 240p, tests can be performed for 480i de-interlacers and scalers. Some test are shown in full 480i, such as the grid and scroll.
  • 480p mixed 480p/240p assets (1:1)with scanlines: Only available when using a component cable. It must be enabled via the options menu as a precaution for not displaying 480p in a non compatible CRT.
  • 480p scaled 240p assets & scanlines: Only available when using a component cable. This is internally line-doubled and displayed. It must be enabled via the options menu as a precaution for not displaying 480p in a non compatible CRT.

The software is compatible with composite, s-video, and component cables.

Includes libcheckregion

Nintendo GameCube

This is identical to the Wii version in terms of features.

Other versions

There is interest in creating versions for other platforms, so far these have been the choices due to having homebrew SDKs. Of course since it is an open source project, contributions are welcome and encouraged.

SNES and Sega Saturn version are being considered.

Source code

The source code is released under the GPL. Homebrew and open source SDKs have been used on the platforms so far. The test pattern images used to generate the graphical data for the console versions are included along with the source code.

The Sega CD loader (c) by Luke Usher/SoullessSentinel and is not under the GPL, used with permission for this project.

Source Code at sourceforge.

Downloads

Binaries are available for the Genesis/MegaDrive, Sega/Mega CD and Sega Dreamcast versions (PowerVR).

In the case of the CD systems all you need is a CD-R and the console, for the cart version you need a flash cart,

Current release is 1.11 on the Genesis/Sega CD, 1.18 on Dreamcast and 1.3 on Wii/GC (version numbers are platform specific and have the same relative features) available at the 240p Test Suite code page.

The Dreamcast SDL 1.0 version is also available under the deprecated section of that page.

WARNING: Programmer graphics inside

Bug Reports, new features and suggestions

All are welcome at the project page, the discussion page of this wiki or at the Shmups forum.

If you rather use mail, use aurbina -> junkerhq.net

New designs and graphics are welcome as well.

Contributors

  • Code: Artemio Urbina
  • Main menu graphics: Asher
  • SGDK assistance: Stephane
  • Sega CD Loader by: Luke Usher/SoullessSentinel (used with permission)
  • Sega CD assistance: Chilly Willy & TascoDLX
  • KallistiOS SDK assistance: BlueCrab
  • Advisor: Fudoh
  • Color Bleed: Konsolkongen

Information on 240p video and scanlines

Recommended Scalers, Upscan converters and Video Processors