SDL Graphics mode detection and checking if valid, CFG saves only configuration for valid modes where the user set <3 | Imperfect | Unsupported.
Modes are not sorted yet (cosmetic) git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@199 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
0705aae104
commit
40fe3ccf09
30
boutons.c
30
boutons.c
@ -1184,9 +1184,7 @@ void Cocher_bouton_mode(short Pos_X, short Pos_Y, byte Etat)
|
|||||||
{
|
{
|
||||||
byte Couleur;
|
byte Couleur;
|
||||||
|
|
||||||
if (Etat>=128)
|
switch (Etat & 0x7F)
|
||||||
Etat-=128;
|
|
||||||
switch (Etat)
|
|
||||||
{
|
{
|
||||||
case 0 : Couleur=CM_Blanc; break;
|
case 0 : Couleur=CM_Blanc; break;
|
||||||
case 1 : Couleur=CM_Clair; break;
|
case 1 : Couleur=CM_Clair; break;
|
||||||
@ -1276,7 +1274,6 @@ void Bouton_Resol(void)
|
|||||||
short Debut_liste;
|
short Debut_liste;
|
||||||
short Position_curseur;
|
short Position_curseur;
|
||||||
short Temp;
|
short Temp;
|
||||||
byte Temp2;
|
|
||||||
char Chaine[5];
|
char Chaine[5];
|
||||||
struct Fenetre_Bouton_special * Bouton_saisie_Width, * Bouton_saisie_Height;
|
struct Fenetre_Bouton_special * Bouton_saisie_Width, * Bouton_saisie_Height;
|
||||||
|
|
||||||
@ -1314,14 +1311,14 @@ void Bouton_Resol(void)
|
|||||||
|
|
||||||
if (Mode_choisi>=6)
|
if (Mode_choisi>=6)
|
||||||
{
|
{
|
||||||
if (Mode_choisi<NB_MODES_VIDEO-6)
|
if (Mode_choisi<Nb_modes_video-6)
|
||||||
{
|
{
|
||||||
Debut_liste=Mode_choisi-5;
|
Debut_liste=Mode_choisi-5;
|
||||||
Position_curseur=5;
|
Position_curseur=5;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debut_liste=NB_MODES_VIDEO-12;
|
Debut_liste=Nb_modes_video-12;
|
||||||
Position_curseur=Mode_choisi-Debut_liste;
|
Position_curseur=Mode_choisi-Debut_liste;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1331,7 +1328,7 @@ void Bouton_Resol(void)
|
|||||||
Position_curseur=Mode_choisi;
|
Position_curseur=Mode_choisi;
|
||||||
}
|
}
|
||||||
|
|
||||||
Fenetre_Definir_bouton_scroller(271,69,97,NB_MODES_VIDEO,12,Debut_liste); // 6
|
Fenetre_Definir_bouton_scroller(271,69,97,Nb_modes_video,12,Debut_liste); // 6
|
||||||
|
|
||||||
// Les 12 petits boutons indiquant l'état des modes
|
// Les 12 petits boutons indiquant l'état des modes
|
||||||
for (Temp=0; Temp<12; Temp++)
|
for (Temp=0; Temp<12; Temp++)
|
||||||
@ -1434,14 +1431,13 @@ void Bouton_Resol(void)
|
|||||||
|
|
||||||
default: // Boutons de tag des états des modes
|
default: // Boutons de tag des états des modes
|
||||||
Temp=Debut_liste+Bouton_clicke-7;
|
Temp=Debut_liste+Bouton_clicke-7;
|
||||||
if (Temp) // On n'a pas le droit de cocher le mode fenêtré
|
if (Temp && // On n'a pas le droit de cocher le mode fenêtré
|
||||||
|
!(Mode_video[Temp].Etat & 128)) // Ni ceux non détectés par SDL
|
||||||
{
|
{
|
||||||
Temp2=(Mode_video[Temp].Etat & 0x80)?128:0;
|
|
||||||
|
|
||||||
if (Fenetre_Attribut1==A_GAUCHE)
|
if (Fenetre_Attribut1==A_GAUCHE)
|
||||||
Mode_video[Temp].Etat=Temp2+(((Mode_video[Temp].Etat&0x7F)+1)&3);
|
Mode_video[Temp].Etat=((Mode_video[Temp].Etat&0x7F)+1)&3;
|
||||||
else
|
else
|
||||||
Mode_video[Temp].Etat=Temp2+(((Mode_video[Temp].Etat&0x7F)+3)&3);
|
Mode_video[Temp].Etat=((Mode_video[Temp].Etat&0x7F)+3)&3;
|
||||||
|
|
||||||
Effacer_curseur();
|
Effacer_curseur();
|
||||||
Cocher_bouton_mode(19,16+(Bouton_clicke<<3),Mode_video[Temp].Etat);
|
Cocher_bouton_mode(19,16+(Bouton_clicke<<3),Mode_video[Temp].Etat);
|
||||||
@ -1464,7 +1460,7 @@ void Bouton_Resol(void)
|
|||||||
if (Position_curseur<11)
|
if (Position_curseur<11)
|
||||||
Position_curseur++;
|
Position_curseur++;
|
||||||
else
|
else
|
||||||
if (Debut_liste<NB_MODES_VIDEO-12)
|
if (Debut_liste<Nb_modes_video-12)
|
||||||
Debut_liste++;
|
Debut_liste++;
|
||||||
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
||||||
break;
|
break;
|
||||||
@ -1485,10 +1481,10 @@ void Bouton_Resol(void)
|
|||||||
Position_curseur=11;
|
Position_curseur=11;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Debut_liste<NB_MODES_VIDEO-23)
|
if (Debut_liste<Nb_modes_video-23)
|
||||||
Debut_liste+=11;
|
Debut_liste+=11;
|
||||||
else
|
else
|
||||||
Debut_liste=NB_MODES_VIDEO-12;
|
Debut_liste=Nb_modes_video-12;
|
||||||
}
|
}
|
||||||
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
||||||
break;
|
break;
|
||||||
@ -1498,7 +1494,7 @@ void Bouton_Resol(void)
|
|||||||
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
||||||
break;
|
break;
|
||||||
case SDLK_END : // End
|
case SDLK_END : // End
|
||||||
Debut_liste=NB_MODES_VIDEO-12;
|
Debut_liste=Nb_modes_video-12;
|
||||||
Position_curseur=11;
|
Position_curseur=11;
|
||||||
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi);
|
||||||
break;
|
break;
|
||||||
@ -2873,7 +2869,7 @@ int Meilleur_mode_video(void)
|
|||||||
Meilleure_hauteur=0;
|
Meilleure_hauteur=0;
|
||||||
|
|
||||||
|
|
||||||
for (Mode=0; Mode<=NB_MODES_VIDEO; Mode++)
|
for (Mode=0; Mode<Nb_modes_video; Mode++)
|
||||||
{
|
{
|
||||||
if (Mode_video[Mode].Fullscreen && Mode_video[Mode].Etat<2)
|
if (Mode_video[Mode].Fullscreen && Mode_video[Mode].Etat<2)
|
||||||
{
|
{
|
||||||
|
|||||||
3
const.h
3
const.h
@ -15,7 +15,7 @@
|
|||||||
#define BETA2 0 // |
|
#define BETA2 0 // |
|
||||||
#define ALPHA_BETA "ß" // Type de la version "Þ" ou "ß"
|
#define ALPHA_BETA "ß" // Type de la version "Þ" ou "ß"
|
||||||
#define DAT_DEBUT_INI_PAR_DEFAUT 0xF385 // Dans gfx2.dat, début du fichier gfx2.ini standard
|
#define DAT_DEBUT_INI_PAR_DEFAUT 0xF385 // Dans gfx2.dat, début du fichier gfx2.ini standard
|
||||||
#define NB_MODES_VIDEO 61 // Nombre de modes vidéo
|
#define MAX_MODES_VIDEO 100 // Nombre de modes vidéo maxi
|
||||||
#define NB_BOUTONS 38 // Nombre de boutons à gérer
|
#define NB_BOUTONS 38 // Nombre de boutons à gérer
|
||||||
#define NB_TOUCHES 134 // Nombre de combinaisons de touches
|
#define NB_TOUCHES 134 // Nombre de combinaisons de touches
|
||||||
#define NB_TOUCHES_SPECIALES 72 // Nombre de touches spéciales
|
#define NB_TOUCHES_SPECIALES 72 // Nombre de touches spéciales
|
||||||
@ -99,7 +99,6 @@ enum CODES_D_ERREURS
|
|||||||
ERREUR_MEMOIRE, // Plus de mémoire
|
ERREUR_MEMOIRE, // Plus de mémoire
|
||||||
ERREUR_LIGNE_COMMANDE, // Erreur sur la ligne de commande
|
ERREUR_LIGNE_COMMANDE, // Erreur sur la ligne de commande
|
||||||
ERREUR_DRIVER_SOURIS, // Pas de driver souris installé
|
ERREUR_DRIVER_SOURIS, // Pas de driver souris installé
|
||||||
ERREUR_MODE_VESA_INVALIDE, // Mode VESA demandé sur la ligne de commande invalide
|
|
||||||
ERREUR_MODE_INTERDIT, // Mode demandé sur la ligne de commande interdit (coché en noir)
|
ERREUR_MODE_INTERDIT, // Mode demandé sur la ligne de commande interdit (coché en noir)
|
||||||
ERREUR_NUMERO_MODE, // Erreur de choix de mode sur la ligne de commande
|
ERREUR_NUMERO_MODE, // Erreur de choix de mode sur la ligne de commande
|
||||||
ERREUR_SAUVEGARDE_CFG, // Erreur en écriture pour GFX2.CFG
|
ERREUR_SAUVEGARDE_CFG, // Erreur en écriture pour GFX2.CFG
|
||||||
|
|||||||
3
global.h
3
global.h
@ -71,8 +71,9 @@ struct S_Mode_video
|
|||||||
word Fullscreen;
|
word Fullscreen;
|
||||||
byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
|
byte Etat; // 0:Cool 1:OK ; 2:Bof ; 3:Naze ; si on rajoute +128 => incompatible
|
||||||
};
|
};
|
||||||
GLOBAL struct S_Mode_video Mode_video[NB_MODES_VIDEO];
|
GLOBAL struct S_Mode_video Mode_video[MAX_MODES_VIDEO];
|
||||||
|
|
||||||
|
GLOBAL int Nb_modes_video; // Nombre de modes réellement recensés dans Mode_video[]
|
||||||
|
|
||||||
GLOBAL struct
|
GLOBAL struct
|
||||||
{
|
{
|
||||||
|
|||||||
2
graph.c
2
graph.c
@ -991,7 +991,7 @@ void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen)
|
|||||||
if (!Fullscreen)
|
if (!Fullscreen)
|
||||||
Resolution_actuelle=0;
|
Resolution_actuelle=0;
|
||||||
else
|
else
|
||||||
for (Indice=1; Indice<NB_MODES_VIDEO; Indice++)
|
for (Indice=1; Indice<Nb_modes_video; Indice++)
|
||||||
{
|
{
|
||||||
if (Mode_video[Indice].Largeur==Largeur_ecran &&
|
if (Mode_video[Indice].Largeur==Largeur_ecran &&
|
||||||
Mode_video[Indice].Hauteur==Hauteur_ecran)
|
Mode_video[Indice].Hauteur==Hauteur_ecran)
|
||||||
|
|||||||
186
init.c
186
init.c
@ -1302,14 +1302,30 @@ void Initialisation_des_operations(void)
|
|||||||
// Définition d'un mode:
|
// Définition d'un mode:
|
||||||
|
|
||||||
void Definir_mode_video(int Numero,
|
void Definir_mode_video(int Numero,
|
||||||
short Largeur, short Hauteur,
|
short Largeur,
|
||||||
|
short Hauteur,
|
||||||
byte Mode,
|
byte Mode,
|
||||||
word Plein_Ecran)
|
word Fullscreen)
|
||||||
{
|
{
|
||||||
|
byte Supporte = 0;
|
||||||
|
|
||||||
|
if (Numero >= MAX_MODES_VIDEO)
|
||||||
|
{
|
||||||
|
DEBUG("Erreur! Tentative de créer un mode de trop:", Numero);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!Fullscreen)
|
||||||
|
Supporte = 128; // Prefere, non modifiable
|
||||||
|
else if (SDL_VideoModeOK(Largeur, Hauteur, 8, SDL_FULLSCREEN))
|
||||||
|
Supporte = 1; // Supporte
|
||||||
|
else
|
||||||
|
Supporte = 128+3; // Non supporte, non modifiable
|
||||||
|
|
||||||
Mode_video[Numero].Largeur = Largeur;
|
Mode_video[Numero].Largeur = Largeur;
|
||||||
Mode_video[Numero].Hauteur = Hauteur;
|
Mode_video[Numero].Hauteur = Hauteur;
|
||||||
Mode_video[Numero].Mode = Mode;
|
Mode_video[Numero].Mode = Mode;
|
||||||
Mode_video[Numero].Fullscreen = Plein_Ecran;
|
Mode_video[Numero].Fullscreen = Fullscreen;
|
||||||
|
Mode_video[Numero].Etat = Supporte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1318,88 +1334,91 @@ void Definir_mode_video(int Numero,
|
|||||||
void Definition_des_modes_video(void)
|
void Definition_des_modes_video(void)
|
||||||
{ // Numero LargHaut Mode FXFY Ratio Ref WinOnly Pointeur
|
{ // Numero LargHaut Mode FXFY Ratio Ref WinOnly Pointeur
|
||||||
SDL_Rect** Modes;
|
SDL_Rect** Modes;
|
||||||
int Indice=0;
|
Nb_modes_video=0;
|
||||||
Definir_mode_video( Indice++, 640,480,MODE_SDL, 0);
|
Definir_mode_video( Nb_modes_video++, 640,480,MODE_SDL, 0);
|
||||||
Definir_mode_video( Indice++, 320,200,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,200,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,224,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,224,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,240,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,240,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,256,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,256,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,270,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,270,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,282,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,282,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,300,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,300,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,360,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,360,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,400,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,400,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,448,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,448,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,480,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,480,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,512,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,512,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,540,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,540,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,564,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,564,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 320,600,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 320,600,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,200,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,200,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,224,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,224,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,240,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,240,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,256,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,256,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,270,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,270,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,282,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,282,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,300,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,300,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,360,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,360,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,400,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,400,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,448,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,448,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,480,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,480,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,512,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,512,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,540,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,540,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,564,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,564,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 360,600,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 360,600,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,200,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,200,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,224,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,224,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,240,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,240,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,256,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,256,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,270,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,270,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,282,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,282,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,300,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,300,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,360,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,360,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,400,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,400,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,448,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,448,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,480,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,480,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,512,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,512,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,540,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,540,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,564,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,564,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 400,600,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 400,600,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,224,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,224,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,240,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,240,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,256,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,256,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,270,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,270,MODE_SDL, 1);
|
||||||
//Definir_mode_video( Indice++, 640,282,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,300,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,300,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,350,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,350,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,400,MODE_SDL, 1);
|
||||||
//Definir_mode_video( Indice++, 640,360,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,448,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,400,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,480,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,448,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,512,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,480,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,540,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,512,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,564,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,540,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 640,600,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,564,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++, 800,600,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 640,600,MODE_SDL, 1);
|
Definir_mode_video( Nb_modes_video++,1024,768,MODE_SDL, 1);
|
||||||
Definir_mode_video( Indice++, 800,600,MODE_SDL, 1);
|
|
||||||
Definir_mode_video(Indice++,1024,768,MODE_SDL, 1);
|
|
||||||
|
|
||||||
Modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
|
Modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
|
||||||
if ((Modes != (SDL_Rect**)0) && (Modes!=(SDL_Rect**)-1))
|
if ((Modes != (SDL_Rect**)0) && (Modes!=(SDL_Rect**)-1))
|
||||||
{
|
{
|
||||||
|
int Indice;
|
||||||
for (Indice=0; Modes[Indice]; Indice++)
|
for (Indice=0; Modes[Indice]; Indice++)
|
||||||
{
|
{
|
||||||
int Indice2;
|
int Indice2;
|
||||||
for (Indice2=0; Indice2 < NB_MODES_VIDEO; Indice2++)
|
for (Indice2=1; Indice2 < Nb_modes_video; Indice2++)
|
||||||
if (Modes[Indice]->w == Mode_video[Indice2].Largeur &&
|
if (Modes[Indice]->w == Mode_video[Indice2].Largeur &&
|
||||||
Modes[Indice]->h == Mode_video[Indice2].Hauteur)
|
Modes[Indice]->h == Mode_video[Indice2].Hauteur)
|
||||||
{
|
{
|
||||||
Mode_video[Indice2].Etat = 1;
|
// Mode déja prévu: ok
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (Indice2 >= Nb_modes_video)
|
||||||
|
{
|
||||||
|
// Nouveau mode à ajouter à la liste
|
||||||
|
Definir_mode_video( Nb_modes_video++,Modes[Indice]->w,Modes[Indice]->h,MODE_SDL, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
@ -1788,13 +1807,17 @@ int Charger_CFG(int Tout_charger)
|
|||||||
!read_word_le(Handle, &CFG_Mode_video.Hauteur) )
|
!read_word_le(Handle, &CFG_Mode_video.Hauteur) )
|
||||||
goto Erreur_lecture_config;
|
goto Erreur_lecture_config;
|
||||||
|
|
||||||
for (Indice2=0; Indice2<NB_MODES_VIDEO; Indice2++)
|
for (Indice2=1; Indice2<Nb_modes_video; Indice2++)
|
||||||
{
|
{
|
||||||
if (Mode_video[Indice2].Largeur==CFG_Mode_video.Largeur &&
|
if (Mode_video[Indice2].Largeur==CFG_Mode_video.Largeur &&
|
||||||
Mode_video[Indice2].Hauteur==CFG_Mode_video.Hauteur &&
|
Mode_video[Indice2].Hauteur==CFG_Mode_video.Hauteur)
|
||||||
Mode_video[Indice2].Mode==(CFG_Mode_video.Etat>>6))
|
|
||||||
{
|
{
|
||||||
Mode_video[Indice2].Etat=(Mode_video[Indice2].Etat&0xFC) | (CFG_Mode_video.Etat&3);
|
// On ne prend le paramètre utilisateur que si la résolution
|
||||||
|
// est effectivement supportée par SDL
|
||||||
|
// Seules les deux petits bits sont récupérés, car les anciens fichiers
|
||||||
|
// de configuration (DOS 96.5%) utilisaient d'autres bits.
|
||||||
|
if (! (Mode_video[Indice2].Etat & 128))
|
||||||
|
Mode_video[Indice2].Etat=CFG_Mode_video.Etat&3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1957,6 +1980,7 @@ int Sauver_CFG(void)
|
|||||||
FILE* Handle;
|
FILE* Handle;
|
||||||
int Indice;
|
int Indice;
|
||||||
int Indice2;
|
int Indice2;
|
||||||
|
int Modes_a_sauver;
|
||||||
//byte Octet;
|
//byte Octet;
|
||||||
char Nom_du_fichier[TAILLE_CHEMIN_FICHIER];
|
char Nom_du_fichier[TAILLE_CHEMIN_FICHIER];
|
||||||
struct Config_Header CFG_Header;
|
struct Config_Header CFG_Header;
|
||||||
@ -2007,15 +2031,23 @@ int Sauver_CFG(void)
|
|||||||
goto Erreur_sauvegarde_config;
|
goto Erreur_sauvegarde_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// D'abord compter les modes pour lesquels l'utilisateur a mis une préférence
|
||||||
|
Modes_a_sauver=0;
|
||||||
|
for (Indice=1; Indice<Nb_modes_video; Indice++)
|
||||||
|
if (Mode_video[Indice].Etat==0 || Mode_video[Indice].Etat==2 || Mode_video[Indice].Etat==3)
|
||||||
|
Modes_a_sauver++;
|
||||||
|
|
||||||
// Sauvegarde de l'état de chaque mode vidéo
|
// Sauvegarde de l'état de chaque mode vidéo
|
||||||
Chunk.Numero=CHUNK_MODES_VIDEO;
|
Chunk.Numero=CHUNK_MODES_VIDEO;
|
||||||
Chunk.Taille=NB_MODES_VIDEO * sizeof(CFG_Mode_video);
|
Chunk.Taille=Modes_a_sauver * sizeof(CFG_Mode_video);
|
||||||
|
|
||||||
if (!write_byte(Handle, Chunk.Numero) ||
|
if (!write_byte(Handle, Chunk.Numero) ||
|
||||||
!write_word_le(Handle, Chunk.Taille) )
|
!write_word_le(Handle, Chunk.Taille) )
|
||||||
goto Erreur_sauvegarde_config;
|
goto Erreur_sauvegarde_config;
|
||||||
for (Indice=0; Indice<NB_MODES_VIDEO; Indice++)
|
for (Indice=1; Indice<Nb_modes_video; Indice++)
|
||||||
|
if (Mode_video[Indice].Etat==0 || Mode_video[Indice].Etat==2 || Mode_video[Indice].Etat==3)
|
||||||
{
|
{
|
||||||
CFG_Mode_video.Etat =(Mode_video[Indice].Mode<<6) | (Mode_video[Indice].Etat&3);
|
CFG_Mode_video.Etat =Mode_video[Indice].Etat;
|
||||||
CFG_Mode_video.Largeur=Mode_video[Indice].Largeur;
|
CFG_Mode_video.Largeur=Mode_video[Indice].Largeur;
|
||||||
CFG_Mode_video.Hauteur=Mode_video[Indice].Hauteur;
|
CFG_Mode_video.Hauteur=Mode_video[Indice].Hauteur;
|
||||||
|
|
||||||
|
|||||||
8
main.c
8
main.c
@ -158,9 +158,6 @@ void Erreur_fonction(int Code, const char *Nom_fichier, int Numero_ligne, const
|
|||||||
case ERREUR_DRIVER_SOURIS : printf("Error: No mouse detected!\n");
|
case ERREUR_DRIVER_SOURIS : printf("Error: No mouse detected!\n");
|
||||||
printf("Check if a mouse driver is installed and if your mouse is correctly connected.\n");
|
printf("Check if a mouse driver is installed and if your mouse is correctly connected.\n");
|
||||||
break;
|
break;
|
||||||
case ERREUR_MODE_VESA_INVALIDE : printf("Error: Requested VESA mode not supported by your video card!\n");
|
|
||||||
printf("You should try to run a VESA driver such as UNIVESA or UNIVBE.\n");
|
|
||||||
break;
|
|
||||||
case ERREUR_MODE_INTERDIT : printf("Error: The requested video mode has been disabled from the resolution menu!\n");
|
case ERREUR_MODE_INTERDIT : printf("Error: The requested video mode has been disabled from the resolution menu!\n");
|
||||||
printf("If you want to run the program in this mode, you'll have to start it with an\n");
|
printf("If you want to run the program in this mode, you'll have to start it with an\n");
|
||||||
printf("enabled mode, then enter the resolution menu and enable the mode you want.\n");
|
printf("enabled mode, then enter the resolution menu and enable the mode you want.\n");
|
||||||
@ -259,10 +256,7 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
|
|||||||
Erreur(ERREUR_LIGNE_COMMANDE);
|
Erreur(ERREUR_LIGNE_COMMANDE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Mode_video[Resolution_actuelle].Etat>=128)
|
if ((Mode_video[Resolution_actuelle].Etat & 0x7F) == 3)
|
||||||
Erreur(ERREUR_MODE_VESA_INVALIDE);
|
|
||||||
else
|
|
||||||
if (Mode_video[Resolution_actuelle].Etat==3)
|
|
||||||
Erreur(ERREUR_MODE_INTERDIT);
|
Erreur(ERREUR_MODE_INTERDIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -606,7 +606,7 @@ int Charger_INI(struct S_Config * Conf)
|
|||||||
|
|
||||||
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Default_video_mode",1,Valeurs)))
|
if ((Retour=Charger_INI_Get_values (Fichier,Buffer,"Default_video_mode",1,Valeurs)))
|
||||||
goto Erreur_Retour;
|
goto Erreur_Retour;
|
||||||
if ((Valeurs[0]<0) || (Valeurs[0]>NB_MODES_VIDEO))
|
if ((Valeurs[0]<0) || (Valeurs[0]>=Nb_modes_video))
|
||||||
goto Erreur_ERREUR_INI_CORROMPU;
|
goto Erreur_ERREUR_INI_CORROMPU;
|
||||||
Conf->Resolution_par_defaut=Valeurs[0];
|
Conf->Resolution_par_defaut=Valeurs[0];
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user