amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Gibts AGA-Screens auch ohne Overscan-Dimension? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

02.12.2003, 23:33 Uhr

CeaBear
Posts: 5
Nutzer
Hallo erstmal,

hoffentlich kann mir jemand von Euch folgenden Effekt erklären:

Es wird ein Screen der größe 704x508x8 geöffnet (via OpenScreenTags), allerdings mit der Display-ID (0x2100)eines normalen PAL-Modes, sodaß der sichtbarer Bildausschnitt eine Größe von 320x256 Pixel haben sollten.
Selbstverständlich ist das ganze scroll-fähig, wird aber nicht mittels Autoscroll durchgeführt.

Bei genauerem Hinsehen zeigte sich aber, dass der sichtbare Ausschnitt aber Overscan-Dimensionen einnimmt, also die Breite ist größer als 320 Pixel und die Höhe beträgt dann 283 Pixel.

Mittels dem Tag SA_DClip und dem zugehörigen Rectangle={0,0,319,255} als Parameter für OpenScreenTags() läßt sich die Breite der Darstellung korrigieren, aber die Höhenangabe wird offensichtlich ignoriert und bleibt 283 Pixel.
Eine explizites spezifizieren von SA_Overscan löst das o.g. Problem leider auch nicht.

Ja, die Developer-CD habe ich mehrfach durchsucht, brachte aber weder eine Lösung noch eine Erklärung für den Effekt.

Der Effekt tritt sowohl unter OS 3.1 und OS 3.5 unter WinUAE R9 als auch einem original A4K mit jeweils dem 3.1 ROM auf.
Es läuft auch kein Screen-Promoter oder andere Patches, die hier Einfluß nehmen könnten.

Wie kommt der oben genannte Effekte zustande? (z.B. Limitation der Hardware?)
Wie erreiche ich die Darstellung von exakt 320x256 Pixeln, alles andere sieht eher bescheiden aus?

Hoffe auf viel Input von Euch.

MfG

CeaBear

[ - Antworten - Zitieren - Direktlink - ]

03.12.2003, 11:38 Uhr

thomas
Posts: 7718
Nutzer

Ich habe gerade mal ein bißchen herumexperimentiert und es auch nicht geschafft, die untere Grenze festzulegen.

Die einzige Möglichkeit, die ich sehe, ist, da unten einen anderen Screen zu öffnen, der den Rest verdeckt.

Hier ist ein Beispiel, das funktioniert:

code:
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/graphics.h>
#include <proto/intuition.h>
#include <intuition/screens.h>

int main (void)

{
struct Screen *scr;
struct Window *win;
struct RastPort *rp;
struct MsgPort *port;
struct Rectangle rect;
struct Screen *scr2;

if (scr = OpenScreenTags (NULL,
		SA_DisplayID,0,
		SA_Depth,2,
		SA_Width,800,SA_Height,600,
		SA_Overscan,OSCAN_TEXT,
		SA_AutoScroll,TRUE,
		TAG_END))
	{
	if (QueryOverscan (GetVPModeID(&(scr->ViewPort)),&rect,OSCAN_TEXT))
		{
		Printf ("Overscan: %ld x %ld - %ld x %ldn",
			rect.MinX,rect.MinY,
			rect.MaxX,rect.MaxY);
		}

	scr2 = OpenScreenTags (NULL,
		SA_DisplayID,0,
		SA_Depth,1,
		SA_Width,320,SA_Height,2,
		SA_Top,259,
		SA_Quiet,TRUE,
		SA_Parent,scr,
		TAG_END);

	if (win = OpenWindowTags (NULL,
			WA_CustomScreen,scr,
			WA_Flags,WFLG_BORDERLESS|WFLG_ACTIVATE,
			WA_IDCMP,IDCMP_MOUSEBUTTONS,
			TAG_END))
		{
		rp = win->RPort;
		SetBPen (rp,2);
		Move (rp,0,0);
		ClearScreen (rp);
		SetAPen (rp,3);
		Move (rp,0,0);
		Draw (rp,319,0);
		Draw (rp,319,255);
		Draw (rp,0,255);
		Draw (rp,0,0);
		SetAPen (rp,1);
		Move (rp,320,0);
		Draw (rp,639,0);
		Draw (rp,639,511);
		Draw (rp,0,511);
		Draw (rp,0,256);

		port = win->UserPort;
		WaitPort (port);
		ReplyMsg (GetMsg (port));

		CloseWindow (win);
		}

	if (scr2)
		CloseScreen (scr2);

	CloseScreen (scr);
	}

return (0);
}


Gruß Thomas
--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Gibts AGA-Screens auch ohne Overscan-Dimension? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.