Remove some old useless files, and add a png format icon for linux (wich does not like ico too much).

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@514 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2009-01-21 15:03:19 +00:00
parent 3ff77f068b
commit 73cd2e4e5d
13 changed files with 1 additions and 817 deletions

View File

@ -1,145 +0,0 @@
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³!!!!!!! PLEASE READ THIS FILE !!!!!!!³!!!!!! VEUILLEZ LIRE CE FICHIER !!!!!!³
³!! ENTIRELY BEFORE RUNNING GRAFX2 !!!³! ENTIEREMENT AVANT DE LANCER GRAFX2 !³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
³
³
If you are reading this file right ³ Si vous lisez ce fichier maintenant,
now, I'm sure that it is for one out ³ Je suis sr que c'est pour l'une de
of these four reasons: ³ ces quatre raisons:
³
1) You are THE ONE who first reads ³ 1) Vous ˆtes CELUI qui lit les
README.1ST files before running ³ fichiers README.1ST avant de lancer
new programs. ³ de nouveaux programmes.
³
2) Today is a rainy day and you've ³ 2) Il pleut aujourd'hui et vous avez
already finished all the games ³ dj… termin tous les jeux que vous
you've... "purchased". So you ³ avez... "achets". Donc vous n'avez
have nothing else to do that ³ rien d'autre … faire que de lire ce
reading this damn file. ³ fichu fichier.
³
3) You had the quite good reflex ³ 3) Vous avez eu l'assez bon rflŠxe
(for someone who did not read ³ (pour quelqu'un qui n'a pas lu ce
this file) to switch off your PC ³ fichier) d'teindre votre PC avant
before your monitor burns, and ³ que votre moniteur grille, et
now you wonder why. ³ maintenant vous cherchez pourquoi.
³
4) You have burnt your monitor ³ 4) Vous avez bouzill votre moniteur
because you didn't read this ³ parce que vous n'avez pas lu ce
file first. And you now have all ³ fichier en premier. Et maintenant
the time to read it on your ³ vous avez tout le temps de le lire
neighbour's computer before you ³ sur l'ordinateur de votre voisin en
can buy another monitor. ³ attendant de pouvoir vous acheter
³ un nouvel cran.
³
³
úÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄú
³
³
So here is what you must know about ³ Donc voici ce que vous devez savoir
GrafX2 before running it: ³ … propos de GrafX2 avant de le lancer:
³
³
Video problems: ³ ProblŠmes vido:
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ³ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
³
- This program provides a huge ³ - Ce programme propose un trŠs grand
range of video resolutions. All ³ nombre de modes vido. Toutes ces
these resolutions may not work with ³ rsolutions peuvent ne pas marcher
your monitor or video card. This ³ avec votre moniteur ou carte vido.
should result by your monitor to ³ Ceci peut rsulter par un sifflement
whistle and stay black or display ³ de votre moniteur ou bien plus gn-
shit. ³ ralement qu'il affiche n'importe
So we added a keyboard shortcut ³ quoi ou qu'il reste tout noir.
for you to come back to a normal ³ Par consquent, nous avons ajout
resolution (MCGA 320x200). The ³ un raccourci clavier pour que vous
default keys for this shortcut are ³ puissiez revenir … un rsolution
[Shift]+[Return]. But, since you ³ normale (MCGA 320x200). La combinai-
can configure all the keys with ³ son de touches par dfaut est
GFXCFG, you should check its actual ³ [Shift]+[Return]. Mais, puisque vous
value by running this setup program.³ pouvez configurer toutes les touches
³ avec GFXCFG, vous devriez vrifier
Note that we take no responsa- ³ la combinaison exacte en lan‡ant ce
bility for any problems you could ³ programme.
encounter with GrafX2. ³
³ Notez que ne sommes aucunement
Important: ³ responsables d'ventuels problŠmes
If the standard VESA modes (i.e. ³ que vous pourriez rencontrer avec
640x400,640x480,800x600 & 1024x768) ³ GrafX2.
don't work, please type this line ³
from the DOS command line: ³ Important:
TESTVESA > VESA.TXT ³ Si les modes VESA standards (i.e.
and send us the file thus created ³ 640x400,640x480,800x600 & 1024x768)
telling us the name of your video ³ ne fonctionnent pas, veuillez taper
card. It would be even better if you³ ceci sur la ligne de commande DOS:
sent a version of this file with no ³ TESTVESA > VESA.TXT
VESA driver in memory and another ³ et nous envoyer le fichier ainsi
one with a resident driver (such as ³ cr en nous donnant le nom de votre
UNIVBE (c)Scitech Software). ³ carte vido. Ce serait encore mieux
³ si vous nous envoyiez une version de
³ ce fichier avec aucun gestionnaire
³ VESA en mmoire et une autre avec un
³ driver rsident (tel que UNIVBE
³ (c)Scitech Software).
³
³
Problems with the keys? ³ ProblŠmes avec les touches?
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ³ ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
³
- The button in the bottom-left ³ - Le bouton dans le coin bas-gauche
corner of the tool-bar (the one ³ de la barre d'outils (celui avec une
with a cross) was designed to hide ³ croix) a t con‡u pour cacher la
the tool-bar. But, the danger with ³ barre d'outils. Mais le danger avec
this button is that, if you don't ³ ce bouton est que si vous ne con-
know the key to have it back, you ³ naissez pas la touche qui permet de
will be in trouble :). ³ la rafficher, vous serez embˆt :).
The default key is [F10] but ³ La touche par dfaut est [F10]
check it in the setup program. ³ mais vrifiez-la avec GFXCFG.
³
- The default key for exiting the ³ - La touche par dfaut pour quitter
program is [Q] (for QWERTY ³ le programme est [Q] (pour claviers
keyboards). This can be useful if ³ QWERTY). Cela peut ˆtre utile si
you don't remember how to show the ³ vous ne vous rappelez pas comment
tool-bar. ³ remontrer la barre d'outils.
³
- The key-configuration program ³ - Le programme de configuration des
displays the values for QWERTY ³ touches affiche ces derniŠres pour
keyboards. So if you have an AZERTY ³ les claviers QWERTY. Donc, si vous
keyboard for example, and want to ³ avez un clavier AZERTY par exemple
use your true Q key for quitting, ³ et que vous voulez utiliser votre
don't worry if the program displays ³ vraie touche Q pour quitter, ne vous
'A'. ³ tonnez pas si le programme affiche
³ 'A'.
- Though keys are designed for ³
QWERTY keyboards, "typing areas" ³ - Bien que les touches soient gres
will read the key-codes of your ³ pour claviers QWERTY, les zones de
country. For example, when you'll ³ saisie lisent les touches de votre
have to enter a file name, you'll ³ pays. Par exemple, lorsque vous
get what you type (cool! :)). ³ entrerez un nom de fichier, vous
³ obtiendrez ce que vous tapez (cool!)
- For people who would like to get ³ :).
directly the AZERTY equivalent of ³
the default configuration file, we ³ - Pour ceux qui voudraient avoir
have added the GFX2_FRA.CFG file. ³ directement l'quivalent AZERTY du
Then you'll just have to rename it ³ fichier de configuration par dfaut,
to GFX2.CFG (great!) ;). ³ nous avons inclus le fichier
³ GFX2_FRA.CFG. Vous n'aurez qu'… le
³ renommer en GFX2.CFG (gnial!) ;).
³
³
úÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄú
³
³
OK! Now you can use and abuse of ³ OK! Maintenant vous pouvez user et
this program! ³ abuser de ce programme!
³
³
PS: Pleeeease! If you think something ³ PS: Par piti! Si vous pensez que
is going wrong, read all the docs ³ quelque chose ne tourne pas rond,
before complaining! Maybe that's ³ lisez toutes les docs avant de
merely because you don't know how ³ vous plaindre! Peut-ˆtre que c'est
to use it that it doesn't act as ³ simplement parce que vous ne savez
you expect. ;) ³ pas comment l'utiliser qu'une
³ option n'agit pas comme vous
| esprez.
ú

View File

@ -1,60 +0,0 @@
GrafX2 - The Ultimate 256-color bitmap paint program
Copyright (C)1996-2001 Sunset Design (G.Dorme & K.Maritaud)
-------------------------------------
Here you can find the source code of GrafX2.
You can use and modify it as you want (in the
limits fixed the GNU GPL).
But you are strongly encouraged to submit new
versions to the authors (see addresses below)
if you plan to release them.
The GFX2_SRC directory contains the current state
of our own directory when we were programming GrafX2.
The source code is mainly in French but you'll find
more explanations (in both English and French) on
our web site (see address below).
The subdirectory "DAT" contains the source code
of the program used to generate the GFX2.DAT file.
The subdirectory "CFG" contains the source code
of the GFXCFG program used for redefining keys
and recreating corrupt configuration files.
The current version of GrafX2 must be compiled
with Watcom C (we used version 10.6).
The auxiliary programs (GFXCFG, MAKEDAT, etc...)
must be compiled with Borland Turbo Pascal 7.
Both Watcom C and Borland Turbo Pascal 7 are now
FREE to use.
------- GNU G.P.L. disclaimer -------
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-------------------------------------
You can contact the authors here:
Guillaume DORME
address: 15, rue de l'Observatoire, 87000 LIMOGES (FRANCE)
e-mail: dorme@msi.unilim.fr
Karl Maritaud
address: 10, rue de la Brasserie, 87000 LIMOGES (FRANCE)
e-mail: maritaud@ensil.unilim.fr
http://w3.ensil.unilim.fr/~maritaud/sunset

View File

@ -151,6 +151,7 @@ else
RMDIR = rmdir
CP = cp
ZIP = zip
PLATFORMFILES = gfx2.png
ifdef WIN32CROSS
#cross compile a Win32 executable

BIN
gfx2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 B

View File

@ -1,26 +0,0 @@
@ Grafx2 - The Ultimate 256-color bitmap paint program
@
@ Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
@
@ Grafx2 is free software; you can redistribute it and/or
@ modify it under the terms of the GNU General Public License
@ as published by the Free Software Foundation; version 2
@ of the License.
@
@ Grafx2 is distributed in the hope that it will be useful,
@ but WITHOUT ANY WARRANTY; without even the implied warranty of
@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@ GNU General Public License for more details.
@
@ You should have received a copy of the GNU General Public License
@ along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
@ write to the Free Software Foundation, Inc.,
@ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@
@echo off
50
wmake
if errorlevel 1 goto END
if not exist testvesa.exe goto END
if %0==COMP testvesa %1
:END

View File

@ -1,4 +0,0 @@
system dos4g
op stub=weoslite.exe
file vesa,testvesa
name testvesa

View File

@ -1,8 +0,0 @@
testvesa.exe : testvesa.obj vesa.obj
wlink @make.inc
testvesa.obj : testvesa.c vesa.h
wcc386 /we /4s /fp3 testvesa
vesa.obj : vesa.asm vesa.h
tasm /mx /zn /os vesa

View File

@ -1,214 +0,0 @@
/* Grafx2 - The Ultimate 256-color bitmap paint program
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
Grafx2 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2
of the License.
Grafx2 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
typedef unsigned char byte;
typedef unsigned short word;
typedef unsigned long dword;
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "vesa.h"
char * Version_to_string(word Version)
{
static char Chaine[20];
sprintf(Chaine,"%d",(Version>>8));
strcat(Chaine,".");
sprintf(Chaine+strlen(Chaine),"%d",(Version & 0xFF));
return Chaine;
}
void Lire_infos_VESA(void)
{
struct S_Buffer_VESA Buffer_VESA;
struct S_Buffer_mode_VESA Buffer_mode_VESA;
word Retour;
int Nombre_de_modes;
word * Liste_des_modes;
int Offset1;
int Offset2;
char Libelle_du_nombre_de_couleurs[16];
int Nombre_de_bits;
Retour=Get_VESA_info(&Buffer_VESA);
if (Retour==0x004F)
{
if (memcmp(Buffer_VESA.Signature,"VESA",4)==0)
{
printf("VESA version : %s\n",Version_to_string(Buffer_VESA.Version));
printf("Builder : %s\n",Buffer_VESA.Fabricant);
printf("Capabilities : %d\n",Buffer_VESA.Capacite);
printf("Video memory : %dK\n",Buffer_VESA.Memoire*64);
if (Buffer_VESA.Version>=0x0200)
{
printf("OEM version : %s\n",Version_to_string(Buffer_VESA.Version_bios));
printf("Vendor : %s\n",Buffer_VESA.Vendeur);
printf("Product : %s\n",Buffer_VESA.Produit);
printf("Revision : %s\n",Buffer_VESA.Revision);
}
// Comptage du nombre de modes:
Nombre_de_modes=0;
for (Offset1=0;Buffer_VESA.Liste_des_modes[Offset1]!=0xFFFF;Offset1++)
Nombre_de_modes++;
// Allocation d'une liste duplique des modes:
Liste_des_modes=(word *)malloc(sizeof(word)*Nombre_de_modes);
// Copie de la liste des modes originale vers la duplique:
memcpy(Liste_des_modes,Buffer_VESA.Liste_des_modes,sizeof(word)*Nombre_de_modes);
// Affichage de la liste des modes:
for (Offset1=0;Offset1<Nombre_de_modes;Offset1++)
{
// Lecture des infos du mode:
Retour=Get_VESA_mode_info(Liste_des_modes[Offset1],&Buffer_mode_VESA);
// Affichage des infos de ce mode:
if (Retour==0x004F)
{
if (Buffer_mode_VESA.Nb_bits_par_pixel<=8)
{
Nombre_de_bits=0;
sprintf(Libelle_du_nombre_de_couleurs,"%d col.",1<<Buffer_mode_VESA.Nb_bits_par_pixel);
}
else
{
Nombre_de_bits=Buffer_mode_VESA.Taille_masque_rouge+
Buffer_mode_VESA.Taille_masque_vert+
Buffer_mode_VESA.Taille_masque_bleu;
switch (Nombre_de_bits)
{
case 15:
strcpy(Libelle_du_nombre_de_couleurs,"32K");
break;
case 16:
strcpy(Libelle_du_nombre_de_couleurs,"64K");
break;
case 24:
if (Buffer_mode_VESA.Nb_bits_par_pixel==24)
strcpy(Libelle_du_nombre_de_couleurs,"16M");
else
strcpy(Libelle_du_nombre_de_couleurs,"16M 32-bits");
break;
default:
sprintf(Libelle_du_nombre_de_couleurs,"%d col.",1<<Nombre_de_bits);
}
}
printf("\nMode : %Xh\t(",Liste_des_modes[Offset1]);
if (Buffer_mode_VESA.Attributs&16)
printf("Graphmode: ");
else
printf("Textmode : ");
printf("%dx%d - %s - ",Buffer_mode_VESA.Largeur,
Buffer_mode_VESA.Hauteur,Libelle_du_nombre_de_couleurs);
switch (Buffer_mode_VESA.Attributs&192)
{
case 0 : printf("Banked)\n"); break;
case 128 : printf("Banked/LFB)\n"); break;
case 192 : printf("LFB)\n"); break;
default : printf("BUGGED!)\n");
}
printf(" Attributes : %Xh\n",Buffer_mode_VESA.Attributs);
printf(" Window A attributes : %Xh\n",Buffer_mode_VESA.Attributs_fenetre_A);
printf(" Window B attributes : %Xh\n",Buffer_mode_VESA.Attributs_fenetre_B);
printf(" Granularity : %dK\n",Buffer_mode_VESA.Granularite);
printf(" Window size : %dK\n",Buffer_mode_VESA.Taille_fenetres);
printf(" Window A segment : %Xh\n",Buffer_mode_VESA.Segment_fenetre_A);
printf(" Window B segment : %Xh\n",Buffer_mode_VESA.Segment_fenetre_B);
printf(" WinFunction pointer : %p\n",Buffer_mode_VESA.WinFuncPtr);
printf(" Bytes per line : %d\n",Buffer_mode_VESA.Octets_par_ligne);
printf(" Width : %d\n",Buffer_mode_VESA.Largeur);
printf(" Height : %d\n",Buffer_mode_VESA.Hauteur);
printf(" Character width : %d\n",Buffer_mode_VESA.Largeur_de_char);
printf(" Character height : %d\n",Buffer_mode_VESA.Hauteur_de_char);
printf(" Number of planes : %d\n",Buffer_mode_VESA.Nb_plans);
printf(" Bits per pixel : %d\n",Buffer_mode_VESA.Nb_bits_par_pixel);
printf(" Number of banks : %d\n",Buffer_mode_VESA.Nb_banques);
printf(" Memory model : %d\n",Buffer_mode_VESA.Modele_de_memoire);
printf(" Bank size : %d\n",Buffer_mode_VESA.Taille_des_banques);
printf(" Number of pages : %d\n",Buffer_mode_VESA.Nombre_de_pages);
if (Nombre_de_bits)
{
printf(" Red mask size : %d\n",Buffer_mode_VESA.Taille_masque_rouge);
printf(" Red mask position : %d\n",Buffer_mode_VESA.Pos_masque_rouge);
printf(" Green mask size : %d\n",Buffer_mode_VESA.Taille_masque_vert);
printf(" Green mask position : %d\n",Buffer_mode_VESA.Pos_masque_vert);
printf(" Blue mask size : %d\n",Buffer_mode_VESA.Taille_masque_bleu);
printf(" Blue mask position : %d\n",Buffer_mode_VESA.Pos_masque_bleu);
printf(" Reserved mask size : %d\n",Buffer_mode_VESA.Taille_masque_res);
printf(" Reserved mask pos. : %d\n",Buffer_mode_VESA.Pos_masque_res);
}
printf(" Direct screen mode : %d\n",Buffer_mode_VESA.Direct_screen_mode);
printf(" LFB address : %p\n",Buffer_mode_VESA.Adresse_LFB);
printf(" Offscreen address : %p\n",Buffer_mode_VESA.Adresse_offscreen);
printf(" Offscreen size : %dK\n",Buffer_mode_VESA.Taille_offscreen);
}
else
{
printf("\nMode : %Xh",Liste_des_modes[Offset1]);
printf(" Mode not supported (not enough memory or bad monitor)\n");
}
}
// Libration de la liste duplique:
free(Liste_des_modes);
}
else
printf("VESA bugged.\n");
}
else
{
if (Retour==0xFF00)
printf("Memory allocation impossible.\n");
else
printf("No VESA supported: %d\n",Retour);
}
}
int main(void)
{
printf("\nÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»");
printf("\nºÛ²±° VESA tester - Copyright (c)1997 Sunset Design °±²Ûº");
printf("\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n\n");
Lire_infos_VESA();
return 0;
}

Binary file not shown.

View File

@ -1,256 +0,0 @@
; Grafx2 - The Ultimate 256-color bitmap paint program
;
; Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
;
; Grafx2 is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License
; as published by the Free Software Foundation; version 2
; of the License.
;
; Grafx2 is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
; write to the Free Software Foundation, Inc.,
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
.386P
.MODEL FLAT
_TEXT Segment dword public 'code'
Assume cs:_TEXT, ds:_DATA
; -- Fonctions VESA --
public Get_VESA_info
public Get_VESA_mode_info
; - -- --- ----\/\ Lecture des informations VESA : /\/---- --- -- -
Convertir_adresse_MR_MP proc near
; EDI = Adresse d'une adresse … corriger
push eax
push ecx
mov eax,[edi] ; EAX = adresse … corriger
mov ecx,eax
shr eax,16
shl eax,4
and ecx,0FFFFh
add eax,ecx
mov [edi],eax
pop ecx
pop eax
ret
Convertir_adresse_MR_MP endp
Get_VESA_info proc near
push ebp
mov ebp,esp
arg Buffer:dword
push ebx
push esi
push edi
; On commence par allouer un buffer en mode rel de 1024+64 octets
mov ax,0100h ; "DPMI : Allocate Dos memory blocks"
mov bx,68d ; BX = (1024+64)/16 = 68 paragraphes
int 31h
jc GVI_Erreur
; On sauve l'handle du buffer dans la pile
push dx
; On place dans EDX l'adresse du buffer
xor edx,edx
mov dx,ax
shl edx,4
; On nettoie ce(s) buffer(s)
mov edi,edx ; On place en EDX
xor eax,eax ; ... la valeur 0
mov ecx,0110h ; ... sur 1024+64 positions
rep stosd ; !!! Maintenant !!!
; On demande les infos VESA: (AX=4F00, ES:DI=Adresse du buffer)
mov edi,edx ; Adresse des valeurs des registres … passer … l'interruption
add edx,40h ; EDX=segment du buffer d'infos VESA
shr edx,4
mov dword ptr[edi+1Ch],00004F00h ; EAX pass … l'interruption
mov dword ptr[edi+00h],00000000h ; EDI pass … l'interruption
mov word ptr[edi+22h],dx ; ES pass … l'interruption
shl edx,4
mov dword ptr[edx],32454256h ; valeur hexa de "VBE2"
mov ax,0300h ; Service DPMI simuler une interruption en mode rel
mov bl,10h ; Interruption … appeler (int vido)
xor bh,bh ; Flags de mode d'appel d'interruption
xor cx,cx ; Nb d'elements de la pile … passer
int 31h ; Appel de l'interruption du DPMI
; On place dans EBX la valeur EAX de retour de l'interruption
mov ebx,dword ptr[edi+1Ch]
; On recopie le buffer du mode rel vers le mode protg
mov ecx,256 ; (256 dword = 1024 octets)
mov esi,edx
mov edi,Buffer
rep movsd
; Puis on corrige chacune des adresses:
mov edi,Buffer
add edi,06h
call Convertir_adresse_MR_MP ; Fabricant
add edi,08h
call Convertir_adresse_MR_MP ; Liste des modes
add edi,08h
call Convertir_adresse_MR_MP ; Vendeur
add edi,04h
call Convertir_adresse_MR_MP ; Produit
add edi,04h
call Convertir_adresse_MR_MP ; Rvision
; On libŠre le buffer en mode rel de 1024+64 octets
mov ax,0101h ; "DPMI : Free Dos memory blocks"
pop dx ; DX = handle du buffer
int 31h
jnc GVI_Pas_d_erreur
GVI_Erreur:
mov bx,0FF00h
GVI_Pas_d_erreur:
mov ax,bx
pop edi
pop esi
pop ebx
mov esp,ebp
pop ebp
ret
Get_VESA_info endp
Get_VESA_mode_info proc near
push ebp
mov ebp,esp
arg Mode:word,Buffer:dword
push ebx
push esi
push edi
; On commence par allouer un buffer en mode rel de 256+64 octets
mov ax,0100h ; "DPMI : Allocate Dos memory blocks"
mov bx,20d ; BX = (256+64)/16 = 20 paragraphes
int 31h
jc GVMI_Erreur
; On sauve l'handle du buffer dans la pile
push dx
; On place dans EDX l'adresse du buffer
xor edx,edx
mov dx,ax
shl edx,4
; On nettoie ce(s) buffer(s)
mov edi,edx ; On place en EDX
xor eax,eax ; ... la valeur 0
mov ecx,0080d ; ... sur 256+64 positions
rep stosd ; !!! Maintenant !!!
; On demande les infos VESA: (AX=4F01, CX=Mode, ES:DI=Adresse du buffer)
mov edi,edx ; Adresse des valeurs des registres … passer … l'interruption
add edx,40h ; EDX=segment du buffer d'infos VESA
shr edx,4
mov ax,Mode ; ECX=Mode vido dont ont recherche les informations
mov dword ptr[edi+1Ch],00004F01h ; EAX pass … l'interruption
mov word ptr[edi+18h],ax ; ECX pass … l'interruption
mov dword ptr[edi+00h],00000000h ; EDI pass … l'interruption
mov word ptr[edi+22h],dx ; ES pass … l'interruption
shl edx,4
mov ax,0300h ; Service DPMI simuler une interruption en mode rel
mov bl,10h ; Interruption … appeler (int vido)
xor bh,bh ; Flags de mode d'appel d'interruption
xor cx,cx ; Nb d'elements de la pile … passer
int 31h ; Appel de l'interruption du DPMI
; On place dans EBX la valeur EAX de retour de l'interruption
mov ebx,dword ptr[edi+1Ch]
; On recopie le buffer du mode rel vers le mode protg
mov ecx,64 ; (64 dword = 256 octets)
mov esi,edx
mov edi,Buffer
rep movsd
; Puis on corrige chacune des adresses:
mov edi,Buffer
add edi,0Ch
call Convertir_adresse_MR_MP ; Adresse WinFuncPtr (Mode rel)
; On libŠre le buffer en mode rel de 256+64 octets
mov ax,0101h ; "DPMI : Free Dos memory blocks"
pop dx ; DX = handle du buffer
int 31h
jnc GVMI_Pas_d_erreur
GVMI_Erreur:
mov bx,0FF00h
GVMI_Pas_d_erreur:
mov ax,bx
pop edi
pop esi
pop ebx
mov esp,ebp
pop ebp
ret
Get_VESA_mode_info endp
_TEXT ENDS
END

View File

@ -1,100 +0,0 @@
/* Grafx2 - The Ultimate 256-color bitmap paint program
Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
Grafx2 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2
of the License.
Grafx2 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Grafx2; if not, see <http://www.gnu.org/licenses/> or
write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _VESA_H_
#define _VESA_H_
struct S_Buffer_VESA
{
// VESA 1.0
char Signature[4]; // = 'VESA'
word Version; // Nø de version
char * Fabricant; // Nom du fabricant
dword Capacite; // Bits de capacit du DAC
word * Liste_des_modes; // Liste des modes vidos supports par le VESA
word Memoire; // Taille de la mmoire en blocs de 64K
// VESA 2.0
word Version_bios; // Version du BIOS du fabricant
char * Vendeur; // Nom du vendeur
char * Produit; // Nom du produit
char * Revision; // Nom de la rvision
// Filler
byte Filler[990]; // Reserv
};
struct S_Buffer_mode_VESA
{
// VESA 1.0
word Attributs; // Attributs du mode (00h)
byte Attributs_fenetre_A; // Attributs de la fenˆtre A (02h)
byte Attributs_fenetre_B; // Attributs de la fenˆtre B (03h)
word Granularite; // Granularit des fenˆtres en Ko (04h)
word Taille_fenetres; // Taille des fenˆtres en Ko (06h)
word Segment_fenetre_A; // Segment de la fenˆtre A (08h)
word Segment_fenetre_B; // Segment de la fenˆtre B (0Ah)
byte * WinFuncPtr; // Fonction d'AX=4F05 en mode rel(0Ch)
word Octets_par_ligne; // Nombre d'octets par ligne (10h)
// Optionnels ou OEM
word Largeur; // Largeur en pixels (12h)
word Hauteur; // Hauteur en pixels (14h)
byte Largeur_de_char; // Largeur des caractŠres en pxls (16h)
byte Hauteur_de_char; // Hauteur des caractŠres en pxls (17h)
byte Nb_plans; // Nombre de plans de mmoire (18h)
byte Nb_bits_par_pixel; // Nombre de bits par pixel (19h)
byte Nb_banques; // Nombre de banques (1Ah)
byte Modele_de_memoire; // ModŠle de mmoire (1Bh)
byte Taille_des_banques; // Taille des banques en Ko (1Ch)
byte Nombre_de_pages; // Nombre de pages d'image (1Dh)
byte Reserve; // Reserv (=1) (1Eh)
// VESA 1.2
byte Taille_masque_rouge; // Taille du masque des rouges (1Fh)
byte Pos_masque_rouge; // Position du masque des rouges (20h)
byte Taille_masque_vert; // Taille du masque des verts (21h)
byte Pos_masque_vert; // Position du masque des verts (22h)
byte Taille_masque_bleu; // Taille du masque des bleus (23h)
byte Pos_masque_bleu; // Position du masque des bleus (24h)
byte Taille_masque_res; // Taille d'un masque reserv (25h)
byte Pos_masque_res; // Position d'un masque reserv (26h)
byte Direct_screen_mode; // Direct screen mode info (27h)
// VESA 2.0
byte * Adresse_LFB; // Adresse du LFB (28h)
byte * Adresse_offscreen; // Pointeur vers le dbut de la mmoire offscreen (2Ch)
word Taille_offscreen; // Taille de la mmoire offscreen en Ko (30h)
// Filler
byte Filler[206];
};
word Get_VESA_info ( struct S_Buffer_VESA * Buffer_VESA);
word Get_VESA_mode_info(word Mode, struct S_Buffer_mode_VESA * Buffer_mode_VESA);
#endif

Binary file not shown.

View File

@ -1,4 +0,0 @@
#!/bin/sh
rm grafx2-beta-svn*.zip
wine ide grafx2.wpj
zip -j grafx2-beta-svn`svnversion`.zip grafx2.exe ../gfx2.dat ../gfx2.cfg ../gfx2.ini ~/.wine/drive_c/WATCOM/binnt/mt7r17.dll ~/.wine/drive_c/WATCOM/binnt/clbr17.dll ~/.wine/drive_c/windows/system32/SDL.dll