Support for "wide pixel" mode (Each pixel is 2x1). Run the program with "/wide" argument to test.
Now you can draw graphics for Amstrad CPC's "mode 0" :) git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@385 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									d81a4a26f0
								
							
						
					
					
						commit
						d4dcf44f7c
					
				
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							@ -133,7 +133,7 @@ endif
 | 
			
		||||
 | 
			
		||||
.PHONY : all debug release clean depend zip version force install uninstall
 | 
			
		||||
 | 
			
		||||
OBJ = $(OBJDIR)/main.o $(OBJDIR)/init.o $(OBJDIR)/graph.o $(OBJDIR)/sdlscreen.o  $(OBJDIR)/divers.o $(OBJDIR)/special.o $(OBJDIR)/boutons.o $(OBJDIR)/palette.o $(OBJDIR)/aide.o $(OBJDIR)/operatio.o $(OBJDIR)/pages.o $(OBJDIR)/loadsave.o $(OBJDIR)/readline.o $(OBJDIR)/moteur.o $(OBJDIR)/files.o $(OBJDIR)/op_c.o $(OBJDIR)/readini.o $(OBJDIR)/saveini.o $(OBJDIR)/shade.o $(OBJDIR)/clavier.o $(OBJDIR)/io.o $(OBJDIR)/version.o $(OBJDIR)/texte.o $(OBJDIR)/SFont.o $(OBJDIR)/setup.o $(OBJDIR)/pxsimple.o $(OBJDIR)/pxtall.o
 | 
			
		||||
OBJ = $(OBJDIR)/main.o $(OBJDIR)/init.o $(OBJDIR)/graph.o $(OBJDIR)/sdlscreen.o  $(OBJDIR)/divers.o $(OBJDIR)/special.o $(OBJDIR)/boutons.o $(OBJDIR)/palette.o $(OBJDIR)/aide.o $(OBJDIR)/operatio.o $(OBJDIR)/pages.o $(OBJDIR)/loadsave.o $(OBJDIR)/readline.o $(OBJDIR)/moteur.o $(OBJDIR)/files.o $(OBJDIR)/op_c.o $(OBJDIR)/readini.o $(OBJDIR)/saveini.o $(OBJDIR)/shade.o $(OBJDIR)/clavier.o $(OBJDIR)/io.o $(OBJDIR)/version.o $(OBJDIR)/texte.o $(OBJDIR)/SFont.o $(OBJDIR)/setup.o $(OBJDIR)/pxsimple.o $(OBJDIR)/pxtall.o $(OBJDIR)/pxwide.o
 | 
			
		||||
CFGOBJ = $(OBJDIR)/gfxcfg.o $(OBJDIR)/SFont.o $(OBJDIR)/clavier.o $(OBJDIR)/io.o $(OBJDIR)/setup.o
 | 
			
		||||
 | 
			
		||||
all : $(BIN) $(CFGBIN)
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,8 @@ $(OBJDIR)/files.o: files.c const.h struct.h global.h loadsave.h graph.h divers.h
 | 
			
		||||
$(OBJDIR)/gfxcfg.o: gfxcfg.c SFont.h struct.h const.h clavier.h io.h hotkeys.h \
 | 
			
		||||
  setup.h
 | 
			
		||||
$(OBJDIR)/graph.o: graph.c global.h struct.h const.h loadsave.h moteur.h boutons.h \
 | 
			
		||||
  pages.h erreurs.h sdlscreen.h graph.h divers.h pxsimple.h pxtall.h
 | 
			
		||||
  pages.h erreurs.h sdlscreen.h graph.h divers.h pxsimple.h pxtall.h \
 | 
			
		||||
  pxwide.h
 | 
			
		||||
$(OBJDIR)/init.o: init.c const.h struct.h global.h loadsave.h graph.h boutons.h \
 | 
			
		||||
  palette.h aide.h operatio.h divers.h erreurs.h clavier.h io.h hotkeys.h \
 | 
			
		||||
  files.h setup.h
 | 
			
		||||
@ -36,6 +37,8 @@ $(OBJDIR)/pxsimple.o: pxsimple.c global.h struct.h const.h loadsave.h sdlscreen.
 | 
			
		||||
  divers.h
 | 
			
		||||
$(OBJDIR)/pxtall.o: pxtall.c global.h struct.h const.h loadsave.h sdlscreen.h \
 | 
			
		||||
  divers.h pxsimple.h
 | 
			
		||||
$(OBJDIR)/pxwide.o: pxwide.c global.h struct.h const.h loadsave.h sdlscreen.h \
 | 
			
		||||
  divers.h
 | 
			
		||||
$(OBJDIR)/readini.o: readini.c const.h global.h struct.h loadsave.h graph.h
 | 
			
		||||
$(OBJDIR)/readline.o: readline.c const.h struct.h global.h loadsave.h graph.h \
 | 
			
		||||
  divers.h erreurs.h sdlscreen.h readline.h
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								aide.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								aide.c
									
									
									
									
									
								
							@ -177,13 +177,13 @@ void Afficher_aide(void)
 | 
			
		||||
                Couleur=CM_Fonce;
 | 
			
		||||
            }
 | 
			
		||||
            Buffer_de_ligne_horizontale[Position_X++]=Couleur;
 | 
			
		||||
            if (Pixel_width>1)
 | 
			
		||||
            if (Pixel_width==2)
 | 
			
		||||
              Buffer_de_ligne_horizontale[Position_X++]=Couleur;
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
      // On la splotche
 | 
			
		||||
      for (Repeat_Menu_Facteur_Y=0;Repeat_Menu_Facteur_Y<Menu_Facteur_Y;Repeat_Menu_Facteur_Y++)
 | 
			
		||||
        Afficher_ligne(Pos_Reel_X,Pos_Reel_Y++,Largeur*Menu_Facteur_X*6,Buffer_de_ligne_horizontale);
 | 
			
		||||
        Afficher_ligne_fast(Pos_Reel_X,Pos_Reel_Y++,Largeur*Menu_Facteur_X*6,Buffer_de_ligne_horizontale);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // On efface la fin de la ligne:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								global.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								global.h
									
									
									
									
									
								
							@ -191,6 +191,7 @@ GLOBAL fonction_display_brush_Mono  Display_brush_Mono;  // Affiche une partie d
 | 
			
		||||
GLOBAL fonction_display_brush_Color Clear_brush;         // Efface la partie de la brosse affichée à l'écran
 | 
			
		||||
GLOBAL fonction_remap     Remap_screen;   // Remappe une partie de l'écran avec les nouvelles couleurs du menu
 | 
			
		||||
GLOBAL fonction_procsline Afficher_ligne;  // Afficher une ligne
 | 
			
		||||
GLOBAL fonction_procsline Afficher_ligne_fast;  // Afficher une ligne talle quelle (sans la doubler en mode wide)
 | 
			
		||||
GLOBAL fonction_procsline Lire_ligne;      // Afficher ou lire une ligne
 | 
			
		||||
GLOBAL fonction_display_zoom Display_zoomed_screen; // Affiche rapidement toute la partie zoomée à l'écran (en faisant attention de ne pas effacer le menu)
 | 
			
		||||
GLOBAL fonction_display_brush_Color_zoom Display_brush_Color_zoom;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								graph.c
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								graph.c
									
									
									
									
									
								
							@ -45,6 +45,7 @@
 | 
			
		||||
#include "divers.h"
 | 
			
		||||
#include "pxsimple.h"
 | 
			
		||||
#include "pxtall.h"
 | 
			
		||||
#include "pxwide.h"
 | 
			
		||||
 | 
			
		||||
// Fonction qui met à jour la zone de l'image donnée en paramètre sur l'écran.
 | 
			
		||||
// Tient compte du décalage X et Y et du zoom, et fait tous les controles nécessaires
 | 
			
		||||
@ -1079,6 +1080,7 @@ void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen)
 | 
			
		||||
            Clear_brush = Clear_brush_Simple ;
 | 
			
		||||
            Remap_screen = Remap_screen_Simple ;
 | 
			
		||||
            Afficher_ligne = Afficher_une_ligne_ecran_Simple ;
 | 
			
		||||
            Afficher_ligne_fast = Afficher_une_ligne_ecran_Simple ;
 | 
			
		||||
            Lire_ligne = Lire_une_ligne_ecran_Simple ;
 | 
			
		||||
            Display_zoomed_screen = Afficher_partie_de_l_ecran_zoomee_Simple ;
 | 
			
		||||
            Display_brush_Color_zoom = Display_brush_Color_zoom_Simple ;
 | 
			
		||||
@ -1102,6 +1104,7 @@ void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen)
 | 
			
		||||
            Clear_brush = Clear_brush_Tall;
 | 
			
		||||
            Remap_screen = Remap_screen_Tall;
 | 
			
		||||
            Afficher_ligne = Afficher_une_ligne_ecran_Tall;
 | 
			
		||||
            Afficher_ligne_fast = Afficher_une_ligne_ecran_Tall;
 | 
			
		||||
            Lire_ligne = Lire_une_ligne_ecran_Tall;
 | 
			
		||||
            Display_zoomed_screen = Afficher_partie_de_l_ecran_zoomee_Tall;
 | 
			
		||||
            Display_brush_Color_zoom = Display_brush_Color_zoom_Tall;
 | 
			
		||||
@ -1109,6 +1112,30 @@ void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen)
 | 
			
		||||
            Clear_brush_zoom = Clear_brush_zoom_Tall;
 | 
			
		||||
            Affiche_brosse = Affiche_brosse_Tall;
 | 
			
		||||
        break;
 | 
			
		||||
        case PIXEL_WIDE:
 | 
			
		||||
            Pixel_width=2;
 | 
			
		||||
            Pixel_height=1;
 | 
			
		||||
            Pixel = Pixel_Wide ;
 | 
			
		||||
            Lit_pixel= Lit_Pixel_Wide ;
 | 
			
		||||
            Display_screen = Afficher_partie_de_l_ecran_Wide ;
 | 
			
		||||
            Block = Block_Wide ;
 | 
			
		||||
            Pixel_Preview_Normal = Pixel_Preview_Normal_Wide ;
 | 
			
		||||
            Pixel_Preview_Loupe = Pixel_Preview_Loupe_Wide ;
 | 
			
		||||
            Ligne_horizontale_XOR = Ligne_horizontale_XOR_Wide ;
 | 
			
		||||
            Ligne_verticale_XOR = Ligne_verticale_XOR_Wide ;
 | 
			
		||||
            Display_brush_Color = Display_brush_Color_Wide ;
 | 
			
		||||
            Display_brush_Mono = Display_brush_Mono_Wide ;
 | 
			
		||||
            Clear_brush = Clear_brush_Wide ;
 | 
			
		||||
            Remap_screen = Remap_screen_Wide ;
 | 
			
		||||
            Afficher_ligne = Afficher_une_ligne_ecran_Wide ;
 | 
			
		||||
            Afficher_ligne_fast = Afficher_une_ligne_ecran_fast_Wide ;
 | 
			
		||||
            Lire_ligne = Lire_une_ligne_ecran_Wide ;
 | 
			
		||||
            Display_zoomed_screen = Afficher_partie_de_l_ecran_zoomee_Wide ;
 | 
			
		||||
            Display_brush_Color_zoom = Display_brush_Color_zoom_Wide ;
 | 
			
		||||
            Display_brush_Mono_zoom = Display_brush_Mono_zoom_Wide ;
 | 
			
		||||
            Clear_brush_zoom = Clear_brush_zoom_Wide ;
 | 
			
		||||
            Affiche_brosse = Affiche_brosse_Wide ;
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    // Valeurs raisonnables: minimum 320x200
 | 
			
		||||
    if (Pixel_width==1 && Pixel_height==1)
 | 
			
		||||
@ -1590,7 +1617,7 @@ void Print_general(short X,short Y,char * Chaine,byte Couleur_texte,byte Couleur
 | 
			
		||||
          Buffer_de_ligne_horizontale[Reel_X++]=Fonte[Caractere+Pos_X+Pos_Y]?Couleur_texte:Couleur_fond;
 | 
			
		||||
    }
 | 
			
		||||
    for (Repeat_Menu_Facteur_Y=0;Repeat_Menu_Facteur_Y<Menu_Facteur_Y;Repeat_Menu_Facteur_Y++)
 | 
			
		||||
      Afficher_ligne(X,Reel_Y++,Indice*Menu_Facteur_X*8,Buffer_de_ligne_horizontale);
 | 
			
		||||
      Afficher_ligne_fast(X,Reel_Y++,Indice*Menu_Facteur_X*8,Buffer_de_ligne_horizontale);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								main.c
									
									
									
									
									
								
							@ -206,6 +206,10 @@ void Analyse_de_la_ligne_de_commande(int argc,char * argv[])
 | 
			
		||||
    {
 | 
			
		||||
      Pixel_ratio = PIXEL_TALL;
 | 
			
		||||
    }
 | 
			
		||||
    else if ( !strcmp(argv[Indice],"/wide") )
 | 
			
		||||
    {
 | 
			
		||||
      Pixel_ratio = PIXEL_WIDE;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      // Si ce n'est pas un paramètre, c'est le nom du fichier à ouvrir
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								moteur.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								moteur.c
									
									
									
									
									
								
							@ -139,16 +139,16 @@ char * TITRE_BOUTON[NB_BOUTONS]=
 | 
			
		||||
void Sauve_fond(byte **Buffer, int Pos_X, int Pos_Y, int Largeur, int Hauteur)
 | 
			
		||||
{
 | 
			
		||||
  int Indice;
 | 
			
		||||
  *Buffer=(byte *) malloc(Largeur*Menu_Facteur_X*Hauteur*Menu_Facteur_Y);
 | 
			
		||||
  *Buffer=(byte *) malloc(Largeur*Menu_Facteur_X*Hauteur*Menu_Facteur_Y*Pixel_width);
 | 
			
		||||
  for (Indice=0; Indice<(Hauteur*Menu_Facteur_Y); Indice++)
 | 
			
		||||
    Lire_ligne(Pos_X,Pos_Y+Indice,Largeur*Menu_Facteur_X,(*Buffer)+((int)Indice*Largeur*Menu_Facteur_X));
 | 
			
		||||
    Lire_ligne(Pos_X,Pos_Y+Indice,Largeur*Menu_Facteur_X,(*Buffer)+((int)Indice*Largeur*Menu_Facteur_X*Pixel_width));
 | 
			
		||||
}
 | 
			
		||||
// Restaure de ce que la fenêtre cachait
 | 
			
		||||
void Restaure_fond(byte *Buffer, int Pos_X, int Pos_Y, int Largeur, int Hauteur)
 | 
			
		||||
{
 | 
			
		||||
  int Indice;
 | 
			
		||||
  for (Indice=0; Indice<Hauteur*Menu_Facteur_Y; Indice++)
 | 
			
		||||
    Afficher_ligne(Pos_X,Pos_Y+Indice,Largeur*Menu_Facteur_X,Buffer+((int)Indice*Largeur*Menu_Facteur_X));
 | 
			
		||||
    Afficher_ligne_fast(Pos_X,Pos_Y+Indice,Largeur*Menu_Facteur_X,Buffer+((int)Indice*Largeur*Menu_Facteur_X*Pixel_width));
 | 
			
		||||
  free(Buffer);
 | 
			
		||||
}
 | 
			
		||||
// Ecrit un pixel dans un fond de fenêtre
 | 
			
		||||
@ -1539,7 +1539,7 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click)
 | 
			
		||||
    Cacher_curseur=0;
 | 
			
		||||
 | 
			
		||||
    for (Indice=0; Indice<Hauteur; Indice++)
 | 
			
		||||
      Lire_ligne(Fenetre_Pos_X,Fenetre_Pos_Y+Indice,Largeur,Buffer+((int)Indice*Largeur));
 | 
			
		||||
      Lire_ligne(Fenetre_Pos_X,Fenetre_Pos_Y+Indice,Largeur,Buffer+((int)Indice*Largeur*Pixel_width));
 | 
			
		||||
    A=Menu_Ordonnee;
 | 
			
		||||
    Menu_Ordonnee=Menu_Ordonnee_avant_fenetre;
 | 
			
		||||
    B=Menu_visible;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user