[hatari-devel] Issue with switching - fullscreen/windowed mode

npomarede at corp.free.fr npomarede at corp.free.fr
Tue Feb 9 22:45:09 CET 2010


On Tue, 9 Feb 2010, Eero Tamminen wrote:

> Btw. One more thing I forgot to mention in defence of CRTs :-)...
> Most LCDs I've seen, have a fixed, inferior refresh rate, usually 60Hz
> I think.  At least in earlier LCDs I've seen and used, this gives too
> flickery display for my tastes, and it cannot be used to emulate Atari 71Hz
> high-res display properly (for example Mgif had an image display mode which
> relied on that to work properly and which I've had used to view all my
> povray rendereing results)...
>

Well, it's a well known thing that most emulators (the most famous one 
being mame) are recommanding to use a CRT as this is often the only 
solution to get the same refresh rate as the original arcade/computer 
machine.

But the fact is that no one will dump his lcd to replace it with a crt, 
whatever we think of lcd and similar monitors, we have to live with our 
time, and CRT are clearly dead (industrially and marketingly I mean).

The underlying question could be : should we change the resolution of the 
screen when we wish to go fullscreen, to take the closest hardware 
resolution offered by the monitor/video card combination ?

Personnaly, I never encountered any problem when pressing F11 and my 
lcd monitor goes to 800x600 instead of 1280x1024 for example, so this way 
of working is fine with me.

But on the other hand, perhaps we could also have a way of displaying 
Hatari's screen by keeping the host current resolution and stretching the 
content of Atari's screen ? Of course, some combinations will not look 
nice if old/new sizes are not integer multiples of each other. Some 
aliasing algorithms (such as those in some mame version) could help 
soften those artefacts.

So, perhaps we could implement a new .c file that would take an SDL 
surface (320x200 for example) and transform this to a new SDL surface of 
any size (in that case 640x400 or 1280x800 would of course be the best 
choice for trivial resizing method).

I think such an interface could be easy to add (this extra processing step 
should be of course optionnal), just need a function like :

  void ResizeSurface ( SDL_Surface *surface_in , SDL_Surface *surface_out , int resize_method );

with resize_method like LINEAR, INTERPOLATE, BILINEAR, BICUBIC, HQ4X, ...


This way, we could offer both scaling modes (hardware or software) and 
please everyone :)


Nicolas




More information about the hatari-devel mailing list