Hallo,
tut mir leid das ich wieder mal nerve, aber 's eben so. Folgendes Problem, da mir der 0x13er Mode zu pixelig war (320x200x256) habe ich nun in den 0x12er Modus geschalten (640x480x16). Soweit ich alles kapiert habe, ist hier nun so das nicht mehr jedes Pixel ein Byte ist (wie im 0x13er Mode) sondern nur noch je ein Bit und ein Byte also Acht Pixel darstellt, irgendwo habe ich auch gelesen das man dann die Plane wechseln muss um andere Farben zu bekommen. Aber das ist momentan egal, da ich erstmal die Pixel nur an der richtigen Stelle haben will (Farbe kommt später) Ich hatte (mit etwas Hilfe bei der Logik, da es schon zu spät zum denken war) folgendes gecodet:
Nun würde mich interessieren, ob vielleicht jemand einen Tipp hätte, was ich hier falsch gemacht habe.
Danke im vorraus
tut mir leid das ich wieder mal nerve, aber 's eben so. Folgendes Problem, da mir der 0x13er Mode zu pixelig war (320x200x256) habe ich nun in den 0x12er Modus geschalten (640x480x16). Soweit ich alles kapiert habe, ist hier nun so das nicht mehr jedes Pixel ein Byte ist (wie im 0x13er Mode) sondern nur noch je ein Bit und ein Byte also Acht Pixel darstellt, irgendwo habe ich auch gelesen das man dann die Plane wechseln muss um andere Farben zu bekommen. Aber das ist momentan egal, da ich erstmal die Pixel nur an der richtigen Stelle haben will (Farbe kommt später) Ich hatte (mit etwas Hilfe bei der Logik, da es schon zu spät zum denken war) folgendes gecodet:
Code: [Auswählen]
unsigned char *VGA;
void PutPixel(unsigned int X, unsigned int Y)
{
unsigned int BitPosition = (Y * 640 + X) % 8; // Stelle des Bits im Byte.
unsigned int BytePosition = (Y * 640 + X) / 8; // Stelle des Bytes im Speicher.
unsigned char TheByte;
if(BitPosition == 0)
TheByte = 1; // 00 00 00 01b
else if(BitPosition == 1)
TheByte = 2; // 00 00 00 10b
else if(BitPosition == 2)
TheByte = 4; // 00 00 01 00b
else if(BitPosition == 3)
TheByte = 8; // 00 00 10 00b
else if(BitPosition == 4)
TheByte = 16; // 00 01 00 00b
else if(BitPosition == 5)
TheByte = 32; // 00 10 00 00b
else if(BitPosition == 6)
TheByte = 64; // 01 00 00 00b
else if(BitPosition == 7)
TheByte = 128; // 10 00 00 00b
VGA[BytePosition] = VGA[BytePosition] | TheByte;
};
int main()
{
VGA = (unsigned char *)0xA0000;
PutPixel(0, 0);
PutPixel(1, 1);
PutPixel(2, 2);
PutPixel(5, 10);
return(0);
}
Nun würde mich interessieren, ob vielleicht jemand einen Tipp hätte, was ich hier falsch gemacht habe.
Danke im vorraus


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
