HOW TO USE POWERSTRIP AS BY WPCMAME
Here is a start
1. Windows XP on arcade monitor.
The aim om 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.
2. Software used.
In theory, no special software is required to run windows on an arcade monitor. The normal graphic card driver is fully capable 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 got 2 functions that we will use here:
1. It allows you to create custom resolutions and tweak existing resolutions via a graphical user interface.
2. 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).
3. Step-by-step guide
3.1 Install PowerStrip
Just download the trial version from www.entechtaiwan.com
and run. The trial
version is fully functional but got a time limit (365 days) and a nag screen.
3.2 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 graphics 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 task bar 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 labeled "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:
1. 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.
2. 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.
3. The desktop is visible but it looks like a jigsaw puzzle (the
mouse pointer should look fine). Unfortunately your graphic card
driver got a bug with "tiled" memory at low interlaced resolutions.
PowerStrip can't fix the bug but it includes a workaround.
Unfortunately 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
- 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". nVidia had a
similar problem on some of their cards but I'm told it is corrected
in their latest driver)
4. 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
7. If the desktop works, powerstrip will now ensure that the resolution
640x480 always displays interlaced regardless of application.
try mame pacman -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.
3.3 Plan the resolutions
Once you confirmed that your graphic card/driver works with the arcade monitor you need to look into what resolutions you need. Here are some things
to think about:
1. What applications 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
2. 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 horizontal pixels. The reason is:
1. Works with all graphic cards. Some cards have problems with low pixels clocks.
2. You don't need 2 different resolutions for mame games using 512x240 and 256x240 etc.
3. A mame game displayed at 672x240 instead of 336x240 makes no difference in the picture. The images will look exactly the same (yes, exactly).
3. Scaling artifacts/black borders
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
3.4 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 refresh rate)
- 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.
(Here I will add my powerstrip.ini entries)
- 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 approximately 6MHz which is below what most graphic cards can handle. Therefore 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. Fortunately, 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 doesn'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)
Here are the values for the AVGA resolutions (with doubled horizontal resolution)
How to use them:
1. Close powerstrip
2. Open the file powerstrip.ini
3. Add the following lines under the [Custom Resolutions] heading.
(If the heading doesn't exist, just create it at the end of the file)
4. Save the file and start powerstrip
5. Go to to the "Custom resolutions" window.
6. Select "user defined" resolutions.
7. Mark all resolutions in the window
8. Click "add resolution" and restart windows if necessary.
All resolutions should now be available. To test them:
mame gauntlet -resolution 672x240
To change the windows desktop to one of these resolutions use the right slider in powerstrip. (The resolution will not be available in Windows' display properties)
This procedure worked for me with both a Radeon9200SE and a GeForce2.