[fpc-pascal]VESA modes in fpc for win32

Jonas Maebe jonas at zeus.rug.ac.be
Mon Jan 28 16:30:32 CET 2002


On zondag, januari 27, 2002, at 06:13 , Victor V. Shuvalov wrote:

> How do I initialize VESA graphics modes (like 101h) with fpc for win32? 
> The
> documentation says
>
>  If you need another mode, then set GraphDriver to a value different 
> from
>  zero and graphmode to the mode you wish (VESA modes where 640x480x256 
> is
>  101h etc.).

Is this in the current documentation? This information is completely 
outdated, please check the new documentation.

> but the program like
>
>  .........
>  GraphDriver:=1;
>  GraphMode:=$103;
>  InitGraph(GraphDriver,GraphMode,'');
>  .........
>
> which was working well with old version 0.99.12b (go32v2) is not working
> with version 1.0.4 (neither win32 nor go32v2). Please help if you can.

There are several reasons

a) the win32 graph unit only supports 640x480x16 colors. There is no way 
to directly set video modes from a win32 program based on the VESA 
specifications, you have to got through the win32 api or direct-x and 
this is not implemented yet in the graph unit
b) the graph mode setting has been completely reworked in the current 
versions of FPC. You would now use something like

graphdriver := d8bit;
graphmode := m640x480;
initgraph(graphdriver,graphmode,'');
if graphresult <> grOK then
   begin
     error handling here
   end;

See the docs for more info. You can use the go32v2 version of the 
compiler to create (Dos) programs that switch into VESA modes (using the 
graph unit and the method described above), but keep in mind that 
WinNT/2000/XP do *NOT* support VESA modes for Dos programs (well, the OS 
may support it, but most video card drivers do not). It will work fine 
under Win9x and WinME though.


Jonas





More information about the fpc-pascal mailing list