- I. Introduction
- 1. What is a screen made of, how is it drawn?
- 2. Should I ever adjust the FRAME SIZE? Why?
- 3. What effect does the SYNC SIZE have?
- 4. What is the SYNC POLARITY?
- 5. Interlace/Doublescan, when do I need this?
- 6. Video/Memory Bandwidth and Pixel Clock explained!
- 6A. What to do with the VIDEO BANDWIDTH?
- 6B. Any use for the MEMORY BANDWIDTH?
- 6C. Why is the maximum refresh lower when I use more colors?
- 6D. I can do modeX in CGX but not in P96, why?
- 7. Useful FORMULAS for TNG.
- 8. Useful FORMULAS for Picasso96mode.
- 9. Why are some modes brighter than others?
- A. What would you recommend I do first after installing Picasso96?
- B. I installed Picasso96, read your FAQ, but nothing works!?
- G. Small Glossary
This is my small helpfile for new users of Picasso96, frankly, the more polished and promissing of the graphics card driver packages out there.
Specificaly though, this file tries to answer common questions about the use of Picasso96 screen mode definition software - Currently, that means Tobias's Picasso96Mode, and Olaf Bartel's PicassoModeTNG, hereafter refered to as P96M and TNG. I suggest you read this FAQ to the end at least once, and then read and re-read the parts that you have trouble with. Play with what you learned in P96M or TNG, and then come back and read this FAQ some more!
If you find any errors in it, don't hesitate to point them out to me. The information within was gathered by interpolation and is by no means to be considered valid ;-) It is a rough FAQ, not a full-blown RCS'ed textfile, but as it is small, there should not be a need for much more. The FAQ is sorta cross referenced; I could do better but you should read the entire FAQ anyway; maybe I'll fix this later.
You can always find the latest version of this, and much much more, on the Picasso96 homepage, at:
http://wwwcip.rus.uni-stuttgart.de/~etk10317/Picasso96/The text version of this FAQ is available on the Picasso96 FTP site.
Return to Table of Contents.
At the very low level, the displayed screen is made up of a certain number of PIXELS, drawn at a certain SPEED - you may have seen hints about this in various places, like in Commodore's documentation of the new AGA graphics, 70NS pixel sprites for instance.
With Picasso96, you will find the EXACT number of pixels for the entire screen, which is more than what you see, in P96M, under the H/V Frame Size heading - this is the exact value that the graphics chip uses. Not all of these pixels are usable, the entire screen is just measured in the pixel unit. A screen line is composed of three parts and the frame must be wide enough to accomodate all 3 of them. These 3 parts are the sync pulse, the usable pixels, and the blanking period.
The sync pulse tells the monitor that display data is forthcoming, and at what speed. Besides the pulse and the displayable pixels themselves, the monitor requires a certain amount of time to move the beam onto the next line; this blank time is whatever is left of the frame once the sync pulse and the display data are taken into account. This is what it looks like, very simply, for a single line:
[BLANK/FRONT] [Sync_Pulse] [BLANK/BACK] [----------DisplayData----------]
If you flip this "diagram" to its side, you get one that represents the entire screen - meaning there is a pulse for every line, and one for every screen. You will find much more information about this on the CyberGFX homepage, but you should not need any more than what is presented here to for a mental picture of the "Raw" screen (and the Cgxmode page is very hard to follow).
Return to Table of Contents.
As I said earlier, the frame is the screen's TRUE width/height, including the sync pulses, the blanking periods, the displayed pixels and some safety room. For TNG users, most of what follows is of no consequence since TNG calculates the frame sizes itself.
What do you do with this value in P96M?
First of all, read this FAQ to the end before attempting to play with the frame sizes; you may never need to adjust these values. P96M gives you average frame sizes when you create a new display mode, because the wider the frame, when the number of usable pixels is constant, the more power is needed to display the image, and P96M tries to let you define as wide a mode as possible for your monitor. The result is that you won't really be able to reduce the frames P96M gives you by much before the frame becomes too small and the monitor looses sync.
If you ever do need to adjust this setting, you'll need to have a good mental picture of the 3 parts of a line, as explained above, and you should understand the following:
THE FRAME AND WHAT YOU SEE:
Reducing the framesize will have the effect of enlarging the image you see on your monitor, most other values staying constant. Enlarging the frame also has the opposite effect, that is, the "rendered" image will be smaller on the monitor.
Why? When you, for example, reduce only the frame but still intend to display the same number of usable pixels, you are just reducing the BLANKING PERIOD. Since the blanking period is a portion of the final, resulting image, you are, in a sense, reducing the size of the SOURCE DATA that the monitor uses. The monitor then fits this "smaller" source image onto the tube, and thus enlarges the picture.
THE FOLLOWING "RULES" APPLY WHEN YOU CHANGE THE FRAME SIZES:
The smaller the frame, the higher the speed at which the card can send it, when everything else stays constant. If you HALVE the VERTICAL frame, but still display the same number of usable pixels (say 480), you double the refresh rate. When you HALVE the HORIZONTAL frame, you double BOTH the LINE FREQUENCY and the refresh rate, for the same resolution.
VFrameSize / 2 = RefreshRate * 2 HFrameSize / 2 = RefreshRate * 2 & HLineFREQ * 2As you can see, when it is possible to reduce the framesize of a mode, you can achieve much higher refresh rates, giving you a steadier picture. You can also, inversely, lower the required HLineFREQ (you'll loose on the refresh though), and achieve a higher resolution than you could using a very wide and safe frame.
However the frame has to be big enough for the resulting display to sync; you'll need long enough blanking periods, around 2 uS minimum per line, maybe as low as 0.5 uS per frame, for the monitor or it won't sync at all, and you need some room at the right side of the screens for the sprite hardware to have some time to fetch data. Also, on most monitors, when you reduce the frame to the very limit before it can't be used anymore (not enough blanking time), the picture will start to distort rather badly, so don't be surprised if this happens.
REMEMBER! YOUR MONITOR NEEDS TO HAVE A BIG ENOUGH BLANKING PERIODS OR IT WILL REFUSE TO SYNC! Don't go asking why a frame of 840 seems too small for a 800x600 screen mode, it just is.
Return to Table of Contents.
Not much ;) IF YOUR MONITOR SYNCS, IT IS LONG ENOUGH! Modern monitors need a sync pulse of about 1.2 uS per line, which can be adjusted in TNG as time, or in pixels within P96M (easily converted back to time, see the formulas below), and of about 0.05 uS every frame. You can probably get by with smaller pulses, these are average values.
The HORIZONTAL SyncSize adjusts the width/lenght of the sync pulse that happens every line, the VERTICAL SyncSize is for the one pulse at the bottom or top of the screen. Now, depending on which software you are using, P96Mode or TNG, different things will happen when you adjust the sync sizes.
TNG re-calculates the framesize every time you play with the sync lenght (v1.28) and this will affect ever so slightly the Linefreq/Pixclock used to display the mode. This is expected to change as Olaf works on TNG.
In P96M, the sync values will adjust the SyncSize WITHIN the frame, and only gives you more or less room to move the screen around - of course it also lenghthens or shorthens the lenght of the SyncPulse, but as I said, if the monitor syncs, it's long enough already. Reducing a SyncSize will give you more room to move the screen's center around; increasing will give you less, until you take so much time as to push the "visible" screen off it's current center.
Return to Table of Contents.
The SyncPulses can be ACTIVE HIGH or ACTIVE LOW, so to speak. You are given the choice of which because some monitors can only differentiate from two similar resolutions (but with a different refresh) when one syncs positive and the other negative. If you create a display mode that matches the Hfreq and refresh of a PRESET on your monitor, but the mode fails to register has a preset, try the sync polarity.
In P96M, when the POLARITY gadget is CHECKED, this means a NEGATIVE sync, this is the default, and again, you only need this when your monitor requires it. How can you know? Again, if you make a mode that is very very close to frequencies published in your monitor's manual as a PRESET mode, and the monitor doesn't seem to pick up the mode for a preset, try the polarity.
Return to Table of Contents.
Interlace HALVES the REFRESH RATE, ScanDoubling DOUBLES it, simple ;)
Say you want a mode of 1024x768x24, but your card's maximum badnwidth is limited and can only produce this resolution at 30Hz (this is a refresh value, that's the number of times the screen is re-drawn by the monitor, per second), which is too low for your monitor (let us assume). By interlacing this mode, you get a 60Hz refresh rate that the monitor may very well be able to sync to. Doublescan is usually for very low resolutions, and interlace is for very high ones.
Return to Table of Contents.
I probably don't have to tell you that for every jump in color depth for the same screen, say from a 256 color workbench (8 bits) to a 16bits one, which is an extra byte to read, you double the amount of work the gfx card has to do. Well, the MEMORY BANDWIDTH is closely related to this, and is itself closely related to the PIXEL CLOCK, which just happens to be equivalent to the VIDEO BANDWIDTH.
Bandwidth?
The term bandwidth only represents an amount of data one can push around in a certain amount of time, through a certain pathway. Un-qualified, it can mean pretty much any kind of data movement. Think of the bandwidth in terms of how much water you can push through a pipe before the pipe bursts open from too much pressure.
Definitions:
Whereas the PIXEL CLOCK represents the speed needed to draw a specific number of pixels in one second - it is the width of each pixel, in time units - the MEMORY BANDWIDTH represents the throughput required to read all these pixels from the RAM on the graphics card. Both values are measured in MHz, but the memory bandwidth can also be measured in MBytes/s.
VIDEO BANDWIDTH (MHz) == PIXEL CLOCK MEMORY BANDWIDTH (MHz) == PIXEL CLOCK * BytesPerPixel
The number of bytes per pixel for a certain depth can be found by dividing the number of BITS for a mode by 8 and rounding to the next interger. So a 24 bits screen needs 3 bytes of memory for every pixel. Apart from the special 4 bit-plane modes that certain cards support, a screen always uses at least 1 byte.
Your monitor can only handle data sent to it up to a speed, the maximum VIDEO bandwidth of a monitor is is usually given in its spec-sheet. You must make sure the PIXEL CLOCK value of a screemode does not go over this maximum video bandwidth for your monitor.
Also, your graphics card is limited in the speed it can read the screen data from its RAM . The RAM itself limits it, and the general conception of the graphics card also limits this. Both P96M and TNG *KNOW* already the maximum memory bandwidth of your card, and YOU can know also by creating any 8bit screen, and seeing just how far the pixel clock slider goes. Incidently, this is also the maximum video bandwidth ;)
Well for one, you can tell your friends just how many megabytes of data your card can move around, just like you can do for a hard drive! Your hard drive delivers a steady 3MBytes/s of data? Well your graphics card does so much more, when reading its own RAM , depending on the screen size:
Bandwidth (MB/s) = Scanrate * dWIDTH * dHEIGHT * BytesPerPixel, 640x480x24@72Hz -> 640*480*3*72 = 66.35 MBytes/s Hehehe, damn that hard drive is slow! ;-)
Also, if you overclock the card, and exceed the rated memory bandwidth, you might start to see some pixels (usually always the same) with the wrong color - The graphics chip is reading from its RAM faster than the RAM chips are made for, and reads garbage for the few bytes that can't keep up!
But there is yet more use for this value! Say you know your card is only capable of a maximum bandwidth of 90MHz, for an 8bit screen, and you want to know just how many frames per second you can draw for a 800 x 600 screen in 24 bits. Let's try it with 60, this is the normal TV speed, disregarding that TV is interlaced, and see if our card can do it:
MBW = FramesPerSec * dWIDTH * dHEIGHT * BytesPerPixel. MBW = 60Hz * 800 * 600 * 3 = 86,400,000 Hz, or 86.4MHz,
You're in luck, you can do it ;-) Well, NOT QUITE. Remember all this talk about the frame beeing bigger than the actual number of displayable pixels? Even though the graphics chip doesn't read its RAM in the period when no pixels are displayed, we must nonetheless use the REAL size of the screen to know if it can display this mode. Why? Simply because the number of frames per second, the REFRESH RATE, is a function of the real screen size, the frame size, NOT of the usable pixels alone!
When we asked if we could display 800*600*3 at 60 frames per second, we introduced the REFRESH RATE value into the question (#Frames/Sec). That value is directly related to the FRAME SIZE you see in P96M, as you will see below when I give out all the formulas. To know if your card can indeed display that 800*600*3 mode at a REAL 60Hz, we must use the FRAME SIZE instead of the visible screen size.
To get the FRAME SIZE from the DISPLAY SIZE, we must factor (multiply) the desired DISPLAY SIZE:
H-framesize ~= Display Width * 1.25 V-framesize ~= Display Height * 1.10
SO, can your card, with its maximum memory bandwidth of 90MHz, display a cool 800 by 600 screen of 24 bits, at 60Hz?
MBW = FramesPerSec * (dWIDTH * 1.25) * (dHEIGHT * 1.10) * BPP MBW = 60Hz * (800 * 1.25) * (600 * 1.10) * 3 = 118.8MHz
Guess not :-( The maximum number of 800*600*3 frames that a 90Mhz card can display can be found by moving the terms of the equation around:
Max#Frames = MaxMBW / ((dWIDTH * 1.25) * (dHEIGHT * 1.10) * BBP)) Max#Frames = 90,000,000 / ((800*1.25) * (600*1.10) * 3)) ~= 45
A frame rate of 45 is too low for most multisyncs, and would be unbearable anyway. You could probably reduce the frame size and push this mode up to about 5x Hz, and overclock the card to get a tiny bit more, but getting 800x600x24 on a 90MHz (rated) card is not going to be easy...
The card has a maximum video bandwidth that you cannot exceed, as you just saw, and when you add depth to a high resolution/refresh mode, P96M and TNG will reduce the HLineFreq and the Refresh Rate instead, up to a point that will be too low for the monitor to sync to.
A quick way to find the bandwidth for another depth is to remember that for any jump in color depth (an extra byte), you double the bandwidth, while the pixel clock stays the same. So an 8bits screen mode with a pixel clock of 36MHz requires 36MHz of bandwidth, the same screen in 16bits will require 36 * 2 = 72MHz of bandwidth - once you go past the maximum your card can do, P96M and TNG will adjust the parameters to compensate.
For several reasons. For one, the CyberGFX screen mode editor lets you clock your card way past its rated maximum - not advisable. CgxMode also lets you adjust more parts of each line (it divides the blanking periods and lets you adjust each portion), making it harder to see how a CGX mode can be ported to P96.
You can indeed do everything you do under CGX with P96, but you don't need to adjust the blanking period, this is done for you. The key here is in the frame size. In P96M you can adjust every part of a frame BUT the blanking period since whatever is left of the frame after you take care of the sync pulses and the displayed pixels *IS* the blanking period. If you know that your card could do a resolution that you can't readily create with Picasso96, you will have to manually adjust the frame sizes. See Section2 of this FAQ for this.
Also, remember that you will not be allowed, under normal circumstances, to overclock your card, this may limit you more than under CGX. There is a way to remove this limit under P96, but if you don't already know how, you should not play with it in the first place.
Return to Table of Contents.
I think it's time for the formulas; the following all have factoring so that you can use the actual displayed resolution to calculate everything. Remember that, for example, the Refresh Rate must use the FRAME size, so do most of the equations I present here. The factors I use are, as stated earlier:
H-framesize ~= Display Width * 1.25 V-framesize ~= Display Height * 1.10
Also, these 4 terms are interchangeble:
SCAN RATE == REFRESH RATE == VLineFREQ == #Frames/s
So here are the equations:
SCANRATE (Hz) = HLineFREQ / (dHEIGHT * 1.1) 640x480x24 HLineFREQ=38KHz -> 38K/(480*1.1) = 72Hz HLineFREQ (KHz) = SCANRATE * (dHEIGHT * 1.1) 640x480x24 @72Hz -> 72*480*1.1 = 38000/38KHz Or HLineFREQ (KHz) = PixelClock / (dWIDTH * 1.25) 640x480x24 @72Hz, PixelClock of 30.5Mhz -> 30.5M / (640 * 1.25) = 38KHz MEMORY Bandwidth (MHz) = SCANRATE * (dWIDTH*1.25) * (dHEIGHT*1.10) * BPP 640x480x24 @72Hz -> 72 * (640 * 1.25) * ( 480 * 1.1) * 3 = 91MHz Or MEMORY Bandwidth (MHz) = HLineFREQ * (dWIDTH * 1.25) * BPP 640x480x24 @38KHz -> 38000 * (640 * 1.25) * 3 = 91,000,000 = 91MHz PixClock (MHz) = Memory Bandwidth / BytesPerPixel
After you've used these for some time, if so inclined, since they are not all necessary, you will start to see some more ways/relations between them. I've given you two, the "Or" equations for the KHz and MHz value, since you may find either one in a manual.
Return to Table of Contents.
These are the same as above, but there is no factoring done, you use the FRAME SIZES instead - only those that have a framesize equivalent are presented here. However, here you will find the equations needed to transform a PIXEL into a TIME unit, useful to convert sync sizes back and forth betweem P96M and TNG.
SCANRATE (Hz) = HLineFREQ / VFramesize HLineFREQ (KHz) = VFramesize * SCANRATE HLineFREQ (KHz) = PixelClock / HFramesize MEMORY Bandwidth (MHz) = SCANRATE * HFramesize VFramesize * BPP MEMORY Bandwidth (MHz) = HLineFREQ * HFramesize * BytesPerPixel PixClock (MHz) = MemoryBandwidth / BytesPerPixel
The SyncPulses in pixels:
HSyncTime (uS) = #Pixels / Pixel Clock VSyncTime (uS) = #Lines / HLineFREQ
So, for a clock of 100Mhz, 32 pixels of HSync = 0.320 uS, and hence a pixel is 1 / PIXCLOCK in time units.
Return to Table of Contents.
The higher the refresh rate, the brighter the display, simple eh?!.
Trust me, once you get used to 85Hz, you'll soon find out that 60Hz Double NTSC is really crap and dark, and that HiRes laced, which is half a frame 30 times a second (half a frame @ 30Hz), is unbearable! I'm having trouble with 70Hz already, I can really see a difference between that and 85Hz.
Also, if you reduce/increase the sync sizes too much, or if you play with the framesizes w/o first calculating the resulting frequencies, and you hit a setting that is close to un-syncable, your monitor is going to produce a strange, dark picture, with most of the color missing - like only black and orange left - time to UNDO and start again ;)
Return to Table of Contents.
If you installed P96 properly, it asked you the maximum horizontal freq that your monitor supports and installed an appropriate default screen mode prefs file. Play with it in TNG, until you get familiar with the way all the values relate to the screen and to each other. When you are confident with TNG, you can start to create your own modes.
Depending on your needs, TNG might be enough. If your aim is to hit a precise set of frequencies so you can hit a PRESET on your monitor, you can fiddle in TNG alot (you'll eventually hit the right frame), but your best bet is to use P96Mode with the formulas above, so you can adjust the framesize yourself.
Finally, some options, like the border and the framesize, can only be adjusted in P96M.
Return to Table of Contents.
Picasso96 is a work in progress. It is extremely stable, but every new release, something is added and that particular release might have some bugs in it, maybe you got unlucky and hit a bug?
Also note that hardware problems are, unfortunately, VERY common. Some of these A1200 Towers or A4000's are a real pain to get up and running. I can't really help you there, since I only have an A2000, but one problem that often comes up is the autoconfig problem. Some graphics cards, when configured first, will overlap onto another board's memory space and this will cause problems when you fillup the RAM on the graphics card. A2000 owners should make sure their graphics card is the last one in the machine, if this is not too much trouble. The last slot is the one furthest from the power supply.
There is a mailing list for Picasso96 users, Send "help" in message body to majordomo@ninemoons.com for information.
Mailing List support on WWW at: http://www.ninemoons.com/picasso/Picasso.html
I must thank Tobias for his help in assembling this FAQ, and the whole Picasso96 team for this superb product, thanks guys!
Return to Table of Contents.
A frame is a screen's TRUE width/height, measured in the PIXEL unit (PIXEL/TIME would be more precise, but not necessary) including the sync pulses, the blanking periods, the displayed pixels and some safety room. To get the FRAME SIZE from the DISPLAY SIZE, we must factor (multiply) the desired DISPLAY SIZE:
H-framesize ~= Display Width * 1.25 V-framesize ~= Display Height * 1.10See:
1. What is a screen made of, how is it drawn?
2. Should I ever adjust the Frame Size? Why?
A FREQUENCY means a number of times an event occurs during a determined period of time, for a second this unit is called Hertz or Hz for short. A single Hz is 1 event in 1 second, so a refresh rate of 60 Hz means 60 refreshes per second. KHz is the same but multiplied by a thousand, so 1 KHz is 1000 events in 1 second, and 1000 KHz is 1 Mhz.
Since your graphics card works in the PIXEL unit, any and all frequency measurements you see represent a number of pixels! A bandwidth of 36Mhz for example, on a 640x480 screen (frame size is 800x520), means that every second 36,000,000 pixels are written or sent out. This total number of pixels is thus the number of times the square that is the screen (width * height) is drawn per second:
36Mhz = (800 x 520) x Refresh Refresh = 36,000,000/(800x520) ~= 86Hz
Again, anything you see in "Hz" is just a number of pixels per second. And thank the Gods you don't have to worry about the width of each pixel ;-)
The horizontal line frequency is the speed at wich each line must be read/sent by the graphics card in order to reproduce a full screen's worth every 1/FrameRate second. Say you have a 800x600 screen that is refreshed every 1/60th second (60Hz), that means the card has to read/send 600 lines (more when you count the entire frame) of data every 1/60th second, and thus the frequency at which each line is read is:
HLineFREQ (KHz) = VFramesize * SCANRATEThis value is calculated for you if you use P96M, you use the frame and the pixel clock to adjust it instead. You will use it in TNG however, since you do not have access to the frame size. This value can also be used in bandwidth calculations, basically anywhere you need one of the terms of the equation when you have the other two.
The SCAN RATE is the number of frames drawn per second, for a particular screen mode. The higher this value (which is in Hz), the steadier the display. Just how many frames you can get your card to draw depends on the maximum bandwidth your card can deliver, and on the size of the display mode. When talking SCANRATE, remember the following:
SCAN RATE == REFRESH RATE == VLineFREQ == #Frames/s SCANRATE (Hz) = HLineFREQ / VFramesize VFrameSize / 2 = RefreshRate * 2 HFrameSize / 2 = RefreshRate * 2 & HLineFREQ * 2 MEMORY BANDWIDTH (MHz) == PIXEL CLOCK * BytesPerPixel Max#Frames = MaxMBW / ((dWIDTH * 1.25) * (dHEIGHT * 1.10) * BBP))See:
2. Should I ever adjust the FRAME SIZE? Why?
6. Video/Memory Bandwidth and Pixel Clock explained!
7. Useful FORMULAS for TNG. and 8. Useful FORMULAS for Picasso96mode.
The SYNC PULSE is a square PULSE (a peak if you wish) in the video signal, telling the monitor that yet another line or screen has been completely sent by the graphics card. The monitor times the interval between these pulses and determines the frequency at which the data is sent. It's size is measured in pixels, which are a TIME unit, since a pixel is 1/PixelClock amount of seconds.
This PULSE is preceeded and followed by a period of "BLANK" signal to help identify the pulse from the rest of the data. This blank signal is what is called the BLANKING PERIOD, and it is very much needed. Too little blank time and the monitor will not enter in "sync pulse search mode," and will be unable to gather timing information.
A synchronization sequence looks similar to this on an oscilloscope:
1v PULSE ******* * * BLANK * * BLANK 0v ********** ********** ---> timeSee:
1. What is a screen made of, how is it drawn?
3. What effect does the SYNC SIZE have?
4. What is the SYNC POLARITY?
-- /\ / Sylvain Bourcier - Booze@Videotron.CA - BeID7789 \ mEMBER:-World-Wildlife-Fund-+-DSF-+-Planetary-Society-+-Team-Amiga- \C:\DOS\SYSTEM\OS2\UTILITIES\DOCS\HELP\WHERE\THE\F$#%\AM\I???
Return to Table of Contents.