# 240p suite for Colecovision. ### Original program by Artemio Urbina. Colecovision/MSX/SG1000 version by Oscar Toledo G. ### Last revision: Jan/03/2024. Choose items from the menu by moving the stick up and down using any controller. Select item by pressing any side-buttons on any controller. Use also the keys # and *. ### Notes for Colecovision: Tested in real hardware. ### Notes for MSX: Not yet tested in real hardware. Left-side button is space or button 1. Right-side button is M or button 2. Keypad * is mapped to keyboard Z. Keypad # is mapped to keyboard X. ### Notes for SG1000: Not yet tested in real hardware. The keypad # is mapped to the pause button. The early models with a single joystick cannot map to the keypad *. On more recent models you can use the two buttons of the second controller as keypad * and # respectively. ## 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 > Color Bleed Check. 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 left-side button. The idea for this pattern was provided by Konsolkongen, for use with the DVDO EDGE. ### Test Patterns > Monoscope Displays a pattern arrangement for monitor alignment. The aspect ratio has been measured with calibrated NTSC monitors to make sure the red lines make a square. Move the stick to the left and right to change the white lines to gray and black. Designed by Keith Raney. ### Test Patterns > Grid 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. Consumer CRTs usually don't allow compensating for overscan, and many games don't draw outside the white square borders. You can measure how many pixels your display is cropping with the overscan test. ### Test Patterns > White & Black Screens. As the name implies, the screen is filled with solid white. Pressing the left side button will toggle between white, black, and the "ultrablack" border color. 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. TODO: Measure the "ultrablack" color. ### Test Patterns > Sharpness. You should set the sharpness of your display to a value that shows clean black and gray transitions, with no white ghosting in between. On most modern displays, the sharpness control is an edge-enhancement control, and most probably should be set to zero, or in the middle. In some PVM/BVM displays this is also referred to as aperture. ### Test Patterns > VDP Color Bars. Display all the VDP colors in a column arrangement. Press the left-side button to switch to a row arrangement. TODO: Measure voltage levels again with third arrangement. ### Video tests > Drop Shadow Test. 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). Move shadow using the stick of any controller. Press left button to alternate frame where shadow is drawn. Press right button to toggle sprite. Press key # to exit test. ### Video tests > Striped Sprite Test. 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. Move shadow using the stick of any controller. Press any side button or key # to exit test. ### Video tests > Lag Test. 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. Press any side button or the key # to exit test. ### Video tests > Timing & Reflex Test. 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 can help you notice how you react to any lag (if present) when processing the signal. It must be stated that this is not a lag test. As an added feature, the user can press the left-side 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 right-side button can be used to change the direction of the sprite from vertical to horizontal, or display both at the same time. 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. Press the right side button to change the moving sprite to vertical/horizontal movement or to show both. Press key * to remove random variation. Press key # to exit test. ### Video tests > Grid scroll. 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. Move stick up and down to accelerate or reduce speed. Move stick left and right to switch square to diagonal pattern. Press left button to pause movement. Press right button to switch scroll direction in X or Y. Press key * to reverse direction. Press key # to exit test. ### Video tests > Horizontal stripes. 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 left-side 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 keypad asterisk. The user can also change the frames with the right-side button, which alternates the even and odd frame cadence for the automatic switching of patterns. Press key # to exit test. ### Video tests > Checkerboard. Press left button to alternate pixels on each frame. Press right button to switch pixels on each press. Press key * to show frame count. Press key # to exit test. ### Video tests > 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 the right-side button, and the sprite size can be changed with the left-side button. ### Audio test > Sound test It emits an approximate audio frequency of 1000 hz. Press key # to exit test. ### Hardware > Controller test. Show hardware values of controller ports (Colecovision) Currently not implemented on MSX or SG1000. Press both side buttons on any controller to exit test. ### Hardware > BIOS data. Shows BIOS checksum (CRC32 for Colecovision, SHA1 for MSX BIOS on first 32K) It can take a few seconds to show the hash. In MSX emulation the test isn't useful as the emulators tend to patch the MSX BIOS. Not implemented in SG1000 as it doesn't has a BIOS. Press any side button on any controller to exit test. ### Hardware > Memory viewer. Shows memory contents. Displace address window by moving stick up or down on any controller. Press any side button on any controller to exit test. ### Credits Shows the credits for the 240p suite. Original software: Artemio Urbina @artemio Colecovision/MSX/SG1000 developer: Oscar Toledo G. @nanochess Donna art: @pepe_salot Menu art: @aftasher