SAF Bench is a portable 3D benchmark program targeting old computers.

It was written in c++ and uses glut or freeglut as its main dependency.

It was created by Patrik.A also know as Nitton Attiofyra on Youtube.
You can find my YouTube channel here, https://www.youtube.com/@NittonAttiofyra


SAF BENCH is easy to use and consist of a main menu and a settings menu.

In the main menu you will find four buttons.
Benchmark, Demo, Settings and Quit.
You will also find a score counter and a resolution indicator represented
by analog dial with two rotating needles.
The analog dial was a bit of an afterthought, its mainly there to give
some context to the score.
See the "Standard resolutions the Analog dial can indicate" section at
the end of the manual for resolutions the dial will indicate.


The "Settings" button will take you to a second menu that will
allow you to set the resolutions you want the demo or benchmark
to run at.
You can click any of the check boxes for any resolution to select it
including the fullscreen option check box.
It is however important to note that "Fullscreen" option is you desktops
native resolution.
That is because glut is a window based OpenGL implementation that
SAF BENCH is built on so fullscreen is basically fullscreen boarderless 
window similar to many modern games.
Also there is no color depth option, SAF BENCH will run at the
color depth of your desktop and it wont factor color depth in to the score.
32bit color (16.7M) is recommended for it to look its best.
In the settings menu you can select from the most common resolutions
used by old computers, but fullscreen will run any desktop resolution
you have set on most operating systems.


Benchmark will start the benchmark, it runs for 1 min and 47.5 seconds.
The benchmark has a FPS counter in the top middle section of the screen.
Once the benchmark is completed you will get a Score in the main menu
plus the analog dial will give indications to the resolution used.
The exact resolution, time and date, average FPS and the score is recorded
after every completed benchmark run to a file called score.txt in the
SAF BENCH program folder.


The "Demo" button will run the benchmark in a infinite loop until the
user aborts the demo run.
No score is recorded in demo mode.
In demo mode you are free to resize the window as you see fit.


The analog dial will indication all resolution you can select in the 
settings menu plus some other less common resolutions you could run using
the fullscreen option.
The narrow needled indicates width and the fat needled indicates height.
The digit the needles point at should be multiplied by x100 to get the
height and width resolution respectively.
If a dial points at the digit 6 it means 600 pixels.
Resolutions beyond width grater then 1280 or height greater then 1024 will
move one or both needles to the red position.
Resolutions that are not "standard" and less then 1280x1024 will move the needle
or both needles to just past the 6'o clock position indicating a none standard
resolution.


The Quit button, well it quits the program.


The Program supports the following keys.

'ESC', 'f', '-' and '+'.

'ESC' will take you out of the settings menu but also out of fullscreen
in demo mode.
In benchmark mode it will abort the benchmark and go back to the main menu.
It will also quit the program from the main menu.

'f' key will toggle fullscreen on and off in demo mode only.

'-' and '+' will decrees or increase the window resolution in demo mode only.


Know Issues.

On MacOS Classic I sometime get a black window when starting SAF BENCH.
It seems the window system wont redraw the window content.
Moving the window redraws the content once for every time I move it.
I dont know the cause of this issue and if its only related to my system.
A reboot usually solves it.

On MacOS Classic it will run the height resolution minus the apple menus height at
the top so that is 20 pixels less in height if fullscreen is selected.
For example running fullscreen on MacOS 9 with 800x600 as your desktop
resolution will result in a actual resolution of 800x580.
This also effects the analog resolution dial because it expects
the actual 800x600 being reported so only the narrow needle for width
will move to digit 8.
The fat needle will  not go to position 6 but instead stay just past the 6.o clock
position.
So to record proper scores and resolutions, window mode is recommended on
MacOS Classic and fullscreen is best suited for Demo mode.

On IRIX and MacOS Classic I have noticed that the mouse cursor is a bit
temperamental and jumps around a bit due to lag at times.
It seems to be related to Vsync being off.
Windows 98 SE and NT 4.0 was no effected in my testing.
But its a benchmark after all so we need Vsync off.

In Demo mode you can rescale the window to any aspect ratio, same goes for
fullscreen.
This means that past 21:9 aspect ratio the "world" might not be big enough
to fill the window.
I could have put a limit on the aspect ratio but I figure most people using the 
software is using it on 4:3, 5:4 and maybe 16:10 and 16:9 ratio monitors.
And if you want to go past ultra wide, well thats up to you.
SAF BENCH was developed on a 21:9 monitor so up to that it should look fine.

I was unable to disable Vsync on IRIX from the program.
A common way to do it is to use "setenv DECOUPLE_SWAPBUF y"
from the terminal before launching a OpenGL program.
So I included the script "RUN_SAF_BENCH.csh" that will set Vsync to off and run
SAF_BENCH executable.
You can still just run SAF_BENCH without it but your maximum frame rate will be 
limited to your monitors refresh rate.


Standard resolutions the Analog dial can indicate.

Valid width resolution
320
400
512
640
800
1024
1152
1280

Valid height resolution
240
300
384
576
600
720
768
800
864
960
1024
