amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > ChangeScreenBuffer() & WinUAE [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2005-07-11, 01:19 h

whose
Posts: 2156
User
Ich habe hier ein kleines Problem. Ich programmiere derzeit an einem Spielchen herum, welches bisher auf allen meinen Amigas (inkl. µA1) unter RTG mittels ChangeScreenBuffer()-Methode mit Doublebuffering läuft.

Nun habe ich es mal auf meinem Laptop unter WinUAE getestet und zu meinem Ärger bemerkt, daß es unter WinUAE + P96 nicht ordentlich läuft. Der Bildschirmmodus ist völlig daneben (gewünschte Auflösung 640 * 480, tatsächliche Auflösung anscheinend 1024 * 768, also Fullscreen) und der eigentlich unsichtbare Puffer ist sichtbar.

Ist das ein (möglicherweise bekannter) Bug von WinUAE oder gibts für dieses Problem eine Abhilfe?

Wäre für jeden hilfreichen Tip dankbar, dann könnte ich auch unterwegs ein wenig an dem Spiel weiterarbeiten :D

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233


[ Dieser Beitrag wurde von whose am 11.07.2005 um 01:20 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-07-11, 07:43 h

thomas
Posts: 7717
User
Zitat:
Auflösung 640 * 480, tatsächliche Auflösung anscheinend 1024 * 768, also Fullscreen

Wie hast du den Bildschirmmodus denn ausgewählt ?

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-07-11, 09:47 h

whose
Posts: 2156
User
Zitat:
Original von thomas:
Zitat:
Auflösung 640 * 480, tatsächliche Auflösung anscheinend 1024 * 768, also Fullscreen

Wie hast du den Bildschirmmodus denn ausgewählt ?


Per BestModeID(). Für ECS/AGA klappt das (wäre auch verwunderlich, wenn nicht I-) ), allerdings bei den P96-Modi nicht. Dabei kommt immer dieser merkwürdige Screenmodus, der wie Fullscreen erscheint (man kann den Mauszeiger im ganzen Bild bewegen).

DimensionInfo ergibt ne maximale Auflösung von 640 in X-Richtung, das ist auch nicht so ganz korrekt, wenn man einen 800 * 600 Modus anfordert, oder?

Seltsamerweise tuts auf Amithlon problemlos :D

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Answer - Quote - Direct link - ]

2005-07-11, 10:17 h

thomas
Posts: 7717
User
@whose:

Welchen Screenmode bekommst du denn (z.B. uaegfx:800x600 8bit) ?

Funktioniert's, wenn du eine Mode-ID als Parameter mitgibst (oder einen Screenmoderequester benutzt) ?

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-07-11, 10:48 h

whose
Posts: 2156
User
Zitat:
Original von thomas:
@whose:

Welchen Screenmode bekommst du denn (z.B. uaegfx:800x600 8bit) ?


Gute Frage. Da sagt mir das OS, daß ich den gewünschten 800 * 600 8 Bit bekommen habe. Allerdings stimmt das definitiv nicht, da das gesamte Bild mit dem Mauszeiger erreichbar ist und die Heimatauflösung des Displays 1024 * 768 ist.

Zitat:
Funktioniert's, wenn du eine Mode-ID als Parameter mitgibst (oder einen Screenmoderequester benutzt) ?

Gruß Thomas


Das habe ich bisher noch nicht ausprobiert, weil die BestModeID()-Methode auf allen anderen Systemen problemlos funktioniert. Ich wollte eigentlich so arbeiten, daß der Benutzer wenig Last mit der Auswahl eines Screenmodes hat und die Engine sich komplett selbst um alles kümmert, was die Darstellung betrifft.

Wenn mein Problem mit einem Bug von WinUAE zusammenhängt, habe ich allerdings ein Problem. Eigentlich wollte ich Extrawürste ja vermeiden :(

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Answer - Quote - Direct link - ]

2005-07-11, 13:07 h

whose
Posts: 2156
User
Hm, also mit CModeRequestTags() funktionierts, zumindest habe ich ein anderes Programm, welches ChangeScreenBuffer() einsetzt, einwandfrei am Laufen.

Scheint also ein Problem mit BestModeID() zu sein. Mal sehen, welche Möglichkeiten es gibt, dem Benutzer die Wahl der Qual ;) zu vereinfachen, wenn man nen ScreenMode Requester benutzt. Trotzdem: Danke! :)

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Answer - Quote - Direct link - ]

2005-07-11, 13:32 h

Reth
Posts: 1858
User
@whose:

Hi, machs doch mit ner Hookfunktion für den ScreenModeRequester. Dann kannst Du die Modi bestimmen, die überhaupt zur Auswahl stehen (z.B. alle mit genau 8Bit Farbtiefe und und und).

[ - Answer - Quote - Direct link - ]

2005-07-11, 15:01 h

whose
Posts: 2156
User
Zitat:
Original von Reth:
@whose:

Hi, machs doch mit ner Hookfunktion für den ScreenModeRequester. Dann kannst Du die Modi bestimmen, die überhaupt zur Auswahl stehen (z.B. alle mit genau 8Bit Farbtiefe und und und).


Jep, das habe ich nun gemacht. Leider ohne Ergebnis :( Der Screenmode stimmt, allerdings sieht die Grafik weiterhin alles andere als gut aus. Vorerst habe ich zu Testzwecken einen Punkt über den Screen wandern lassen (der jeweils nicht mehr benötigte Punkt im Hintergrundbuffer wird gelöscht), was auf den anderen Maschinen bestens funktioniert.

Auf WinUAE zieht der Punkt eine flackernde Linie hinter sich her, die offensichtlich vom zweiten Buffer herkommt, dort also aus irgendeinem Grund nicht gelöscht wird.

Zur Erläuterung: Ich arbeite ohne Fenster (input.device-Handler ;) ), zeichne also direkt in die Screen-Bitmap (was laut Autodocs ja kein Vergehen ist I-) ). Es sieht ein wenig so aus, als würde WinUAE (bzw. uaegfx.card) die Paletten für die Buffer durcheinanderschmeißen :(

Lustigerweise funktioniert das andere Programm (das auf CGFX umgestrickte DoubleBuffering-Demo von der DevCD) bis auf den flackernden Mauszeiger bestens. Allerdings wird da nur mit dem Blitter gearbeitet, nicht mit SetAPen() & Co. sowie nicht mit Move()/Draw()-Kombination (bzw. diese Funktionen werden auf eine nicht sichtbare Bitmap angewandt).

Weiß einer, worans liegt? Ich weiß so langsam nicht mehr weiter :( Wenns mit reinem Blittereinsatz tut, solls mir auch Recht sein. Wäre halt nur schön, wenn man für andere Dinge alle Optionen der graphics.library offen hätte. Aber ich hab echt keine Ahnung mehr, warums unter WinUAE nicht will, auf allen anderen Maschinen schon :(

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Answer - Quote - Direct link - ]

2005-07-12, 23:05 h

whose
Posts: 2156
User
@Alle:

Nochmal Danke an alle, inzwischen kenne ich des Übels Wurzel. Es sieht so aus, als würde uaegfx den DrawMode INVERSVID nicht korrekt unterstützen. Setze ich die Hintergrundfarbe von Hand als Zeichenfarbe, läuft das Testprogramm korrekt (löscht den zuletzt gezeichneten Punkt, bevor ein neuer Punkt an neuer Position gesetzt wird).

Werds ans UAE-Team melden...

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > ChangeScreenBuffer() & WinUAE [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.