Problem z ustawieniem palety kolorów w trybie 12h

0

Mam problem z ustawieniem palety kolorów w trybie 12h (640x480x16). Próbuję wyświetlić plik bmp w rozdzielczości 640x480x16 który wygląda dokładnie tak:

user image

a zamiast tego wyświetla mi się czarno-białe nie wiadomo co, chciałem przechwicić ten obraz ale niestety się nie da, lub wcale się nic nie wyświetla i wyłańcza się za chwile program.

kod źródłowy:

#include <stdio.h>
#include <dos.h>

void initgfxmode(int);		// Inicjacja podanego trybu graficznego.
void loadBMP(char *);		// Wyswietlanie obrazu z pliku BMP.

FILE *filein; 			// Pliki BMP wejsciowy i wyjsciowy.
char patchin[] = "daim.bmp";	// Sciezki dostepu do w/w plikow.

main(void) {


	initgfxmode(0X12);	
	loadBMP(patchin);	// Wyswietlenie obrazu wejsciowego BMP.
	getch();


}

void initgfxmode(int mode) {	// Inicjacja trybu graficznego 'mode'.
	_AX = mode;
	geninterrupt(0X10);
}

void loadBMP(char *patch) {	// Wyswietla na ekranie obraz z pliku BMP.
	int i, j;
	unsigned char red, green, blue;

	filein = fopen(patch, "rb");	// Otwarcie pliku "binarnego do czytania".
	fseek(filein, 54, SEEK_SET);	// Przeskok naglowka pliku BMP.

	for (i=0; i<=15; i++) {		// Odczytanie z pliku i ustawienie palety
		blue  = fgetc(filein);		// kolorow wykorzystywanej przez obraz.
		green = fgetc(filein);		// Dokladny opis sposobu zapisu palety
		red   = fgetc(filein);		// kolorow w pliku BMP znajduje sie w
		fgetc(filein);			// sprawozdaniu zalaczonym do programu.
		outp(0X3C8, i);
		outp(0X3C9, red 	/ 4);
		outp(0X3C9, green / 4);
		outp(0X3C9, blue 	/ 4);
	}

	for (j=479; j>=0; j--)        // Wyswietlenie obrazu na ekranie
		for (i=0; i<=639; i++)
			poke(0XA000, j*320+i, fgetc(filein));  // Zapalenie punktu (i, j)
																// kolorem pobranym z pliku.

}

</url>
0

hmm skoro to 12 to ustaw tylko pierwsze 16 kolorow VGA, co do pixeli to tu nie ma ze jeden bajt to jeden pixel wiec dlatego pewnie masz siano

1 użytkowników online, w tym zalogowanych: 0, gości: 1