Custom display modes (Windows) - Powerstrip
The article needs more consistency in the use of numbered list, bulleted lists, lists with "step" texts
Here is a guide to setting up Powerstrip in Windows written by wpcmame in this thread in BYOAC, adapted for the wiki:
- 1 Windows XP on arcade monitor
- 2 Software used
- 3 Step-by-step guide
- 4 Plan the resolutions
- 5 Create custom resolutions
- 6 See Also
Windows XP on arcade monitor
The aim of this guide is to setup an environment where applications running under Windows XP (including the desktop) works together with a low-res arcade monitor. It should be noted that even if applications such as word processing, internet surfing etc can be run on a low-res monitor, the picture quality (i.e. interlace flicker) is not suitable for longer periods of time. Games and movies does not suffer from this and works fine.
The guide only deals with the software involved. I use Ultimarc's J-PAC to connect my monitor to the graphics card but that is not necessary.
In theory, no special software is required to run windows on an arcade monitor. The normal graphic card driver is fully cabable of outputting the correct signals for the monitor. However, the graphic card driver doesn't normally include a user interface for setting up resolutions outside the standard 640x480, 800x600 etc. To avoid messing with windows registry settings this guide uses a tool "powerstrip" from EntechTaiwan.com. There are other tools available but I have not tested them.
PowerStrip has got 2 functions that we will use here:
- It allows you to create custom resolutions and tweak existing resolutions via a graphical user interface.
- It can automatically change the timing of the display whenever it changes. E.g. when a game asks for a VGA resolution (640x480), powerstrip will automatically convert it into a resolution that works with the arcade monitor (640x480 interlaced).
Just download the trial version from www.entechtaiwan.com and run. The trial version is fully functional but has got a time limit (365 days) and a nag screen.
Verify that your graphic card driver works with an arcade monitor
Obviously you need a VGA monitor to perform these actions. (If any of the items mentioned below isn't available, your graphcs card/driver doesn't support custom resolutions. Not much to do but get another graphic card)
1. Right-click on the powerstrip icon in the taskbar and select Display Properties/Change.
2. Click on advanced settings.
3. Click on "Custom Resolutions".
4. Go all the way down in the list of resolutions to the one that is labelled "640x480i (arcade)".
5. Select it and click on "add new resolution".
6. Powerstrip will now ask for confirmation and then switch to the new resolution. Connect the arcade monitor and one of four things can happen:
A. It works. The windows desktop look stable but there is a lot of flicker on window borders and text etc. This is normal interlace flicker. We'll see later what we can do about it.
B. The desktop is displayed but it is not centered, jumps up/down, is skewed etc. The signal from the graphic card is correct but you need to use the monitor controls to adjust the image.
C. The desktop is visible but it looks like a jigsaw puzzle (the mouse pointer should look fine). Unfortunatly your graphic card driver got a bug with "tiled" memory at low interlaced resolutions. Powerstrip can't fix the bug but it includes a workound. Unfortunatly the workaround will degrade 3D performance on the card with ~30%. Here is what to do:
- Restore the display by pressing CTRL-SHIFT-S
- Go to the custom resolution screen again
- Double-click on the heading "Resolution" in the upper right corner.
- A dialog box will appear asking if you want to turn off "tiling".
- Select yes and then try to add the arcade resolution again. (You can also contact the driver manufacturer and hope that they fix the bug but don't hold you breath. ATI support answered me "We don't have the resources to deal with your problem".)
D. Everything else. This includes half-sized desktop, no picture at all, colored lines across the monitor etc. Your graphic card/driver doesn't work with an arcade monitor. Try the monitor controls and see if you can get a picture but otherwise there is nothing to do. Press CTRL-SHIFT-S to go back to the VGA resolution.
7. If the desktop works, powerstrip will now ensure that the resolution 640x480 always displays interlaced regardless of application. Try: (sample uses Gridlee ROM image)
mame gridlee -resolution 640x480
Of course, powerstrip must be running for it to work so when starting up the computer, the desktop will not be interlaced until powerstrip starts.
Plan the resolutions
Once you confirmed that your graphic card/driver works with the aracde monitor you need to look into what resolutions you need. Here are some things to think about:
What applictions will I run on the monitor?
- Only modern windows/directX games: 640x480i is actually all you need. If you wan't higher resolution you can use 768x576i or even 800x600i. (Only use resolutions with 4:3 aspect ratio or the game will look stretched). The drawback is that if you adjust the monitor to display more than 480 lines, lower resolutions will have black borders around the game area.
- Watching movies: Movies look best if the monitor uses the same resolution as the source. For DVD movies it means 720x480i (NTSC) or 720x576i (PAL). Other sources are probably made for displaying on a PC monitor so they assume 1:1 pixel aspect ratio. Use 640x480i for NTSC material and 768x576i for PAL.
- Emulated arcade games etc: MAME games use over 300 different resolutions. It is not practical to add all these resolutions and it is not necessary. I can write a long essay on how to choose resolutions but I leave that for some other time. If you are lazy just choose the same resolutions as the ArcadeVGA card got. (http://ultimarc.com/avgainst.html)
Interlaced or progressive scan
Most arcade games use progressive scan displays. This means that they used a resolution with less than 300 lines (mostly in the range 224-256). While it is possible to create these resolutions there is also another possibility, interlaced display. The benefit of interlaced display is that it doubles the number of lines. These lines can be used to improve the game display via different filters, to display a higher resolution artwork backdrop etc. It also reduces the number of resolutions needed since you don't need both progressive scan and interlaced resolutions. The drawback is that the game doesn't look exactly like in arcades which is important to many people. (I have tried both interlaced and progressive scan on my monitor and the difference is hardly visible. Now when I know what to look for I can see it on a static image but not during gameplay)
What you should always do is to select resolutions with more than 400 horizonal pixels. The reason is:
- A. Works with all graphic cards. Some cards have problems with low pixels clocks.
- B. You don't need 2 different resolutions for mame games using 512x240 and 256x240 etc.
- C. A MAME game displayed at 672x240 instead of 336x240 makes no difference in the picture. The images will look exactly the same (yes, exactly).
NB. Running interlaced on some monitors is more noticable than others it appears. Also remember that interlaced windows desktop will look horrible, but things get better in game...
Scaling artifacts/black border
A fundamental property of arcade monitors is that they will always display the same amount of lines on the screen independent of the resolutions used. This means that if the monitor is adjusted to display 576 lines (PAL movie), a 480 line resolution (NTSC movie) will not use the full height of the screen (of course the same applies for games). There are two ways to partly solve this.
- Use black borders. Resolution with less lines than the monitor is adjusted for will have black borders at top and bottom. This gives the best picture but depending on monitor size and viewing distance it might not be the best solution for everybody. Note that black borders should also be added at left/right or the picture will look squeezed vertically.
- Use scaling. Resolution with less lines than the monitor is adjusted for are scaled up and resolution with more lines are scaled down. Since the scaling rarly is a whole number of pixels (e.g. scaling 576 pixels to 480 means removing every 6th line) it will add various artifacts. Also here it depends on monitor size and viewing distance if the artifacts are acceptable or not.
Create custom resolutions
First: Enabling low res resolutions
By default it is only possible to select resolutions with more than 400 lines in powerstrip. To change this we need to manually edit the powerstrip configuration.
- Close powerstrip by right clicking on the icon and select close. (powerstrip updates the configuration file on close. If we edit the file without closing powerstrip our changes will be overwritten). Notice that the desktop stays interlaced when powerstrip is closed.
- Open powerstrip's configuration file "pstrip.ini" in the application directory (normally "Program Files/powerstrip").
- Under the section header "General Options" add the line
- Save the file - Start powerstrip - Open powerstrip's display settings. - You should now be able to select resolutions like 320x200 and 320x240. (Don't enable these resolutions yet. By default these are VGA resolutions with a high refreshrate)
Custom resolutions: Quick and easy way
The easiest way to add resolutions is to copy them from a working powerstrip.ini file.
- Exit powerstrip
- Copy all entries under the [custom resolutions] heading in a working powerstrip.ini file.
- Start powerstrip and go to the "custom resolution" window.
- Select all custom resolution in the listbox and press "add resolution".
- Restart windows.
See a sample custom powerstrip info made by wpcmame here. Note that this includes Doubled Horizontal resolutions as described above - ie 640x240 in place of 320x240, and are designed to be run interlaced.
For info on non-horizontal doubled resolutions (that are designed to be run progressive, not interlaced) See "Native Non-Double-Scanned" item below.
Custom resolutions: Long and difficult way
- Step 1: Add resolution to driver Go to powerstrip's "custom resolution" window. As an example we will add a resolution to use for the game Gauntlet. Gauntlet uses 336x240x60Hz but this means a pixelclock of approximatly 6MHz which is below what most graphic cards can handle. Therfore we double the horizontal resolution to 672. Enter 672 and 240 into the size boxes and just ignore the other boxes and press "add resolution". Powerstrip will restart the computer. If everything worked, the resolution will no be selectable in the powerstrip window.
(Many graphic drivers (at least ATI) are very picky on what resolutions you can add. Fortuntaly, once the resolutions is added you can modify it as you like. If the resolution isn't added you need to fool the driver by adding a normal VGA monitor resolution. This means that the horizontal refresh should of 31KHz and a vertical refresh of at least 50Hz. In this case it means that we add a resolution of 672x240x120Hz. If this doesn't work try to add interlace.)
- Step 2: Adjust resolution
Once the driver has accepted the resolution, it is available for selection in the powerstrip window. Now we need to adjust the resolution to the monitor. Problem here is that if the resolution doens't work you will not be able to adjust it since you can't see it on the screen.
I recommend to do it the following way
- 1. Download the "Low Resolution Modeline Calculator" (lrmc) from http://sourceforge.net/projects/lrmc
- 2. Let the tool generate the modeline
>lrmc 672 240 60 -cga Modeline "672x240x60.11" 12.726000 672 688 752 808 240 244 247 262 -HSync -VSync
- 3. Close powerstrip
- 4. Open powerstrip.ini and search for the line "672x240="
- 5. Replace the digits with the ones generated by lrmc (note that powerstrip uses a difference modeline i.e. instead of "672 688 752 808 240 244 247 262" it should be 672 16 64 56 240 4 3 15", each value is subtracted from the one before.)
- 6. Start powerstrip and select the resolution.
- Step 3: Fine tune resolution (center on monitor etc)
Native (No horizontal doubling) screen generation:
This section has info on attempting to creating non-interlaced, non-horizontal-doubled resolutions - e.g. 320x240@60Hz progressive instead of 640x240@60Hz interlaced. This is less likely to work as it requires the gfx card to create resolutions using pixel clocks far below what they are designed to support.
Powerstrip used to have a hardcoded 10Mhz pixel clock floor (ie it ASSUMED your gfx card was out of spec if you tried to generate a resolution which has a pixel clock lower than 10Mhz). Experimentation has shown that at least some gfx cards did not have a problem going below this floor. Since around 04/2006, powerstrip should go down to a 5Mhz pixel clock floor. Since around 05/2006, I believe the pclock was lowered slightly further still. This means if you gfx card supports it, it will attempt to generate the very lo-res progressive screens like 256x240.
Note that some resolutions - such as 320x240, 320x200, 400x300... - are special modes in windows called Double-scanned modes that are fixed to run at 120Hz (so they have a 31Khz horizontal sync, displayable on a VGA monitor). These can not be re-programmed by Powerstrip.
However, you can tell Powerstrip to generate a 321x200@60Hz or 321x240@60Hz to get around this.I (Silver) have had some success with a Radeon 9700 generating 321x240 at 60Hz (15.7Khz) progressive. Also someone posted pics of success with a Radeon 8500 at BYOAC here
I have been informed that 321 lines is not physically possible with the 9700 card as pixels are generated in blocks of 8, so in reality it is probably generating either a 320x240 non-double-scanned or a 328x240 screen. My Multisync monitor reports its 15.7Khz at 59.9Hz, so I suspect it is simply generating a 320x240 non-double-scanned image.