Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

RGB-Werte für SCREEN 7 setzen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.10.2004, 10:50    Titel: RGB-Werte für SCREEN 7 setzen Antworten mit Zitat

Hallo

Ich habe versucht, die RGB-Werte der 16 Farben von Screen 7 mit

OUT 968, adresse
OUT 969, r
OUT 969, g
OUT 969, b

zu ändern und mir so eine eigene Farbpalette zu basteln. Bei Screen 9 klappt das wunderbar, die Farbnummer entspricht immer der Adresse der RGB-Einträge.

In meiner Naivität dachte ich nun, dass die 16 Farben von Screen 7 genauso funktionieren, zumal es dieselben sind, wie die ersten 16 von Screen 9. Nun scheint es aber so, dass die Einträge für die Farben 1-7 zwar auch unter dieser Adresse zu finden sind. Die RGB-Werte für die Farben 8-15 liegen aber unter den Adressen 16-23, also um 8 verschoben.

Die Hintergrundfarbe lässt sich garnicht ändern. Sie bleibt immer Schwarz. Andert man die Einträge unter der Adresse 0, ändern sich ALLE Farben - ausser der Farbe 0 ???

Weiss jemand von euch, warum das so ist ?

Gruss
Skilltronic
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 05.10.2004, 18:57    Titel: Antworten mit Zitat

Siehe dazu den Quelltext in meiner .BMP-Bibliothek

http://www.dreael.ch/Deutsch/Download/WindowsBitmapBibliothek.html

speziell die Prozedur LiesPalette(), denn dort habe ich das Kunststück vollbracht, dass man in jedem SCREEN-Modus sowie jeder nur erdenklichen VGA-Registereinstellungen die Farben auslesen kann.

IBM hatte seinerzeit den Palettenregister-Design recht kompliziert angesetzt, aber dies hängt wahrscheinlich damit zusammen, dass ein Mechanismus gefunden werden musste, um die Rückwärtskompatibilität zu EGA und CGA möglichst gut nachahmen zu können.

Zuerst einmal muss man den Farbmodus auslesen (INT 10h, AX=101Ah), anschliessend noch die sog. PEL-Maske (INT 10h, AX=1019h) ermitteln. Schlussendlich muss man den eigentlichen Palettenindex mit INT 10h, AX=1007h auslesen, erst dann bekommst Du das entsprechende DAC-Register, welches Du lesen oder beschreiben kannst.

Seinerzeit hatte ich mit diesen VGA-BIOS-Routinen recht intensiv experimentiert. Bestimmt gibt es auch I/O-Register für Dich als OUT/INP()-Fan zu all diesen Dingen. Weiss jedoch nicht, ob diese 100% überall identisch sind...
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 05.10.2004, 21:05    Titel: Experimentierprogramm Antworten mit Zitat

Habe noch aus der Vorphase das zugehörige VGA-Farben-Herumspielprogramm hervorgegraben:

http://beilagen.dreael.ch/QB/VGA_TEST.BAS

am besten starten und mit den Werten kräftig einmal herumspielen, bis man den Aufbau gut verstanden hat! Bedienung mit Pfeiltasten und <Tab>. Übrigens sieht man auch dort die entsprechenden VGA-BIOS-Routinen, um Werte setzen zu können. Bestimmt gibt es zu jedem verwendeten Register auch ein OUT/INP()-Pendant. :-)

In diesem Programm kann man den Farbgruppenmodus einmal testen, ebenso die PEL-Maske verändern und mit dem Farbindex spielen. Aufgrund einer längeren Spielphase mit diesem Programm entstand dann LiesPalette() in meiner Windows Bitmap Bibliothek.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.10.2004, 21:51    Titel: Antworten mit Zitat

Hallo !

Danke für den Versuch, aber wenn ich mir das so ansehe werde ich die Tatsache, dass es so ist wohl einfach hinnehmen zwinkern

OUT und INP() sind cool !

Ach ja - ist dir zum Timer noch was eingefallen ?

Gruss
Skilltronic
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 06.10.2004, 20:32    Titel: Antworten mit Zitat

Aus dem selben Buch, wo ich einst für Sebastian die Details zum PSET in Assembler für SCREEN 12 einen Artikel einscannte, befindet sich folgende Zeichnung dazu:

http://beilagen.dreael.ch/QB/VGA_PAL.JPG

Wichtig ist, dass Du den Aufbau des Color Select- und Palettenregisters gut versteht - mit genau diesen Dingen kann man mit meinem letzten Programm herumspielen.

Selbstverständlich kannst Du Deine Farben wie ursprünglich beabsichtigt in den DAC-Registern setzen. Nur sind sie bei SCREEN 7 nicht schön der Reihe nach abgelegt! So sehe ich gleich in meinem Testprogramm, dass beim SCREEN 7-Modus 4 Gruppen à 64 Farben aktiviert werden. Standardmässig ist Farbgruppe 0 (=DAC-Register 0-63) selektiert. Dabei befinden sich im Palettenindex die Werte 0-7 und 16-23 in diesen 16 Registern => Folglich musst Du bei Deinem OUT-Befehl also SCREEN 13-mässig gesprochen die Farben 0-7 und 16-23 setzen!

Ob allerdings diese Palettenindex-Voreinstellung auf jedem PC vorhanden ist, kann ich nicht einmal sagen => am besten einmal mein Programm auf möglichst vielen verschiedenen Maschinen laufen lassen und die abgefragten Werte notieren.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 07.10.2004, 11:31    Titel: Antworten mit Zitat

Hallo, dreael

Erst mal Danke für deine Hilfe. Das mit ColorSelect- und Palettenregister habe ich (hoffe ich zumindest) einigermassen verstanden. Ich habe mir auch schon einen eigenen .bmp-Lader für verschiedene Bildschirmmodi geschrieben und auch mit Palettenrundung usw. habe ich schon herumexperimentiert. Aber jetzt eben zum ersten mal unter SCREEN 7. Das dort die Farben unter 1-7 bzw. 16-23 liegen hatte ich ja schon durch ausprobieren herausgefunden. Am meisten wundert mich, dass der Eintrag 0 die gesamte Palette bis auf seinen eigenen Eintrag ändert.

Am ehesten hat mich deine Antwort mit der Kompatibilität zu EGA/CGA überzeugt. Könnte es sein, dass da irgendwie ein Bit weniger benutzt wird ? Denn die Zahlen von 0-7 und 16-23 erhält man ja auch, wenn man binär zählt, und dabei das 4. Bit "überspringt".

Ich komme mehr aus der Elektronikbastelecke, deshalb benutze ich gern Bitmanipulationen etc. Die Vorstellung mit Registern zu arbeiten erschliesst sich meinem Vertändnis vielleicht aus diesem Grund auch besser, als andere Methoden.

Gruss
Skilltronic
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz