Autor Thema: Falcon / XBIOS Routine VsetScreen  (Gelesen 5632 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

guest2229

  • Gast
Falcon / XBIOS Routine VsetScreen
« am: Do 06.11.2008, 19:28:45 »
Liebe Leute,

Unabängig vom GEM möchte ich ein paar bunte Bilder auf den Bildschrim "zaubern". Anscheinend habe in paar Verständnisprobleme mit der XBIOS Bildschirm Routine VsetScreen für den Falcon.

Verhalten 1:
Clear_Screen(BLACK)
VsetScreen(MY_SCREEN_MEM_PTR, MY_SCREEN_MEM_PTR, SCREEN_MODECODE, MY_MODE)
=> Screen wird weiss, ich würde hier aber einen Schwarzes Bild erwarten.

Verhalten 2:
Clear_Screen(BLACK)
VsetScreen(NULL, MY_SCREEN_MEM_PTR, SCREEN_MODECODE, MY_MODE)
=> Screen wird korrekterweise schwarz.

Verhalten 3:
Clear_Screen(BLACK)
VsetScreen(NULL, MY_SCREEN_MEM_PTR, SCREEN_MODECODE, MY_MODE)
=> Wenn ich aus dem 2 Farbmode starte, färbt sich das Bild zunächst Schwarz,
anschliessend verfärbt es sich in ein buntes pixel rauschen. Danach hängt der
Rechner.

- MY_MODE ist mein gewünschter Video Mode: 320x240xTCxVGA (VGA_FALCON, COL40, BPS16, VERTFLAG)
- SCREEN_MODECODE ist 3.
- MY_SCREEN_MEM_PTR zeigt auf allozierten Speicher für den Bildschirm.
- Die Procedure Clear_Screen(BLACK) beschreibt den Speicher MY_SCREEN_MEM mit der Farbe Schwarz (0x0000).

Kann mir wer diese unterschiedlichen Verhalten erklären? Ich will doch nur, das
mein Falcon sauber in den richtigen Videomode wechselt.

- F030 (ohne Erweiterung, kein NVDI)
- Pure-C 1.1b
- Pure-C Bindings PCTOS 0.60Beta von Martin Elsässer.

Danke für eure Hilfe,
Volkert

gstoll

  • Gast
Re: Falcon / XBIOS Routine VsetScreen
« Antwort #1 am: Fr 07.11.2008, 18:15:06 »
Leer
« Letzte Änderung: Fr 24.09.2010, 11:36:32 von gstoll »

guest2229

  • Gast
Re: Falcon / XBIOS Routine VsetScreen
« Antwort #2 am: Fr 07.11.2008, 21:42:34 »
Danke für die Antwort.

Ja, habe VgetSize verwendet. Entspricht bei 320x240x16Bit den 153600 Bytes.

NULL ist laut Atari Compendium als Wert erlaubt. Es wird dann ein neuer Speicherbereich alloziert.  Vielleicht ist -1 sinnvoller. Zumindest ist bei der Prozedure SetScreen auf dem ST das Verhalten so wie du schreibst. Ob es für VgetSize auch so ist, prüfe ich mal.

Verhalten 3 verwundert mich. Wieso hängt der Rechner?

Kann mir wer diese unterschiedlichen Verhalten erklären?

Wahrscheinlich nicht wirklich, da ich mich mit diesem Thema nie bechäftigt habe. Deshalb nur ein paar Fragen und allgemeine Gedanken.

Wie hast Du die Größe des benutzten Speicher berechnet? Dazu gibt es die Funktion VgetSize.

Gibt es einen Grund warum Du eigenen Speicher nutzt? Normalerweise sollte ja Vsetmode zum setzen der Auflösung reichen.

Bei einer Adresse NULL einzugeben halte ich für gewagt. Wenn Du die aktuell genutzte Adresse nicht ändern willst ist -1 richtig.

Gerhard



guest2229

  • Gast
Re: Falcon / XBIOS Routine VsetScreen
« Antwort #3 am: So 09.11.2008, 13:53:16 »
Ok, jetzt futzt es.  :)  Habe initial VsetScreen(NULL, NULL, SCREEN_MODECODE, MY_MODE) und erst im zweiten Schritt VsetScreen mit meinen allozierten Speicherbereichen verwendet. Jetzt geht es wunderbar, auch aus allen Auflösungen heraus.

Gruesse,
Volkert

Danke für die Antwort.

Ja, habe VgetSize verwendet. Entspricht bei 320x240x16Bit den 153600 Bytes.

NULL ist laut Atari Compendium als Wert erlaubt. Es wird dann ein neuer Speicherbereich alloziert.  Vielleicht ist -1 sinnvoller. Zumindest ist bei der Prozedure SetScreen auf dem ST das Verhalten so wie du schreibst. Ob es für VgetSize auch so ist, prüfe ich mal.

Verhalten 3 verwundert mich. Wieso hängt der Rechner?

Kann mir wer diese unterschiedlichen Verhalten erklären?

Wahrscheinlich nicht wirklich, da ich mich mit diesem Thema nie bechäftigt habe. Deshalb nur ein paar Fragen und allgemeine Gedanken.

Wie hast Du die Größe des benutzten Speicher berechnet? Dazu gibt es die Funktion VgetSize.

Gibt es einen Grund warum Du eigenen Speicher nutzt? Normalerweise sollte ja Vsetmode zum setzen der Auflösung reichen.

Bei einer Adresse NULL einzugeben halte ich für gewagt. Wenn Du die aktuell genutzte Adresse nicht ändern willst ist -1 richtig.

Gerhard