Seite 2 von 2
Re: Bildschirmmodi
Verfasst: 15.08.2011 08:12
von Hoessi666
GPI hat geschrieben:Ich frag mal blöd nach den Sinn von 320x200. Die meisten Monitore sind mittlerweile LCDs etc. Die haben meist eine feste Auflösung und wenn man eine niedrigere nimmt wird das oft mehr schlecht als Recht unterstützt.
Genauso ein 256-Farb modus. Er ist eigentlich heute völlig veraltet und wird nur noch aus kompatiblitätsgründen zur Verfügung gestellt. Ich kann nur jeden Abraten, sowas zu Nutzen (Bei einigen Macs wurde meines Wissens nach schon der Modus ersatzlos gestrichen. Sprich die Hardware macht es nicht mehr und eine Softwareemulation gibt es nicht).
Für RetroGamer sind LowRes-Auflösungen und palettenbasierte Farbtiefen eine feine Sache, deshalb find ich´s schade, dass solche Sachen sterben...aber ist wohl der Lauf der Dinge...
Sprites etc kann man zoomen um die LowRes quasi auf einer höheren, modernen Auflösung nachzustellen, aber Palette-Cycling ist z.B. nur sehr schwer umzusetzen (finde ich), da die Bildpunkte ja einzeln entsprechend der gespeicherten Farbwerte aus der Palette gezeichnet werden müssen. Bei hohen Auflösungen ´ne ganze Menge Arbeit, selbst wenn man direkt über den Screenbuffer() geht. Zusätzlich müssen bei Pixelkollisionen die Farbwerte der überlappenden Sprites pro Pixel einzeln auf die transparente Farbe geprüft werden usw.
Man könnte das alles vielleicht auch auf ein Sprite in der Größe der ursprünglich angestrebten Auflösung (z.B. 320x240) malen, ein 3DSprite draus machen und dieses vergrößert auf den Screen packen, aber ob auch das schnell genug ist?
Re: Bildschirmmodi
Verfasst: 15.08.2011 09:21
von GPI
Hoessi666 hat geschrieben:Man könnte das alles vielleicht auch auf ein Sprite in der Größe der ursprünglich angestrebten Auflösung (z.B. 320x240) malen, ein 3DSprite draus machen und dieses vergrößert auf den Screen packen, aber ob auch das schnell genug ist?
Mach ein Fenster auf und nutz einen WindowedScreen mit Strech aktiv - funktioniert allerdings nur mit DirectX.
Re: Bildschirmmodi
Verfasst: 15.08.2011 11:48
von Hoessi666
GPI hat geschrieben:Hoessi666 hat geschrieben:Man könnte das alles vielleicht auch auf ein Sprite in der Größe der ursprünglich angestrebten Auflösung (z.B. 320x240) malen, ein 3DSprite draus machen und dieses vergrößert auf den Screen packen, aber ob auch das schnell genug ist?
Mach ein Fenster auf und nutz einen WindowedScreen mit Strech aktiv - funktioniert allerdings nur mit DirectX.
Da hast Du aber auch nur die Grafikmodi über 8Bit heutzutage. Ums "Handzeichnen" kommst Du da glaub ich nicht drumrum...
(Bei meinem zitierten Sprite-Beispiel müßte man natürlich auch über den DrawingBuffer direkt manipulieren wegen "Speed".)
Re: Bildschirmmodi
Verfasst: 15.08.2011 12:09
von GPI
Jup, aber eventuell macht man es gleich anders. So Farbrotationen hat man ja bspw. für Wasser genutzt. Heute kann man dafür einfach neue Sprites für zeichnen und rotieren. Man hat das ja früher gemacht, weil man nicht so viel Speicher hatte.
Re: Bildschirmmodi
Verfasst: 18.08.2011 18:22
von Zaphod
Der Grund für meinen Wunsch nach einer kleinen Auflösung und Indexed Modi war, dass ich mich mal wieder Hobby mäßig mit software rendering (besonders Mode7, Raycasting und anderen Trigonometrie basierten tricks) beschäftigen wollte. Das kann man natürlich auch in Truecolor Modi machen, muss sich dann aber mit so nervigen Sachen wie Pixelformaten beschäftigen und in sehr hohen Auflösungen wird das ganze auch schnell langsam, weil der Zeitaufwand quadratisch mit der Auflösung wächst.
Für den Fall dass jetzt jemand das Bedürfnis verspürt mich darauf aufmerksam zu machen, dass das nicht mehr zeitgemäß ist, sage ich schon einmal im voraus das ich mir dessen bewusst bin. Ich spiele aber auch noch gerne zwanzig Jahre alte spiele und wenn ich mir den derzeitigen Retro-Trend ansehe, scheine ich damit nicht alleine zu sein.
Re: Bildschirmmodi
Verfasst: 18.08.2011 18:47
von NicTheQuick
Theoretisch kann man doch eine Palette ganz einfach mit 'DisplaySolidSprite()' emulieren. Man legt 256 8-Bit-Alpha-Sprites an und ein ebenso großes Array mit RGB-Farbwerten. Dieses Array definiert die Farbe für den entsprechenden Index. Angezeigt werden dann einfach in jedem Durchlauf alle 256 Sprites übereinander mit der entsprechenden Farbe aus dem Array als 4. Parameter von 'DisplaySolidSprite()'. Möchte man nun an Pixel (x, y) die Farbe an Index i schreiben, malt man an Stelle (x, y) in Sprite Nummer i einen weißen Pixel und löscht diesen aus allen anderen Sprites.
Um dann nicht immer bei allen anderen Sprites diesen Pixel zu löschen, kann man sich ja merken, welcher Index an dieser Stelle vorher benutzt wurde und diesen dann nur in diesem entsprechenden Sprite löschen.
Re: Bildschirmmodi
Verfasst: 18.08.2011 18:57
von Zaphod
Naja, man kann sich ja auch einfach ein Array von 24bit Farbwerten machen und das benutzen... gibt noch eine ganze menge Wege um Indexed modi zu emulieren.
Ich wollte mich auch nicht beklagen, ich war nur sehr verwundert, dass es diese Modi nicht mehr gibt und irgendwie finde ich es halt schade.
Liegt bestimmt daran das ich alt geworden bin

Re: Bildschirmmodi
Verfasst: 18.08.2011 19:07
von NicTheQuick
Nein, mit einem einfachen Array mit 24-Bit-Farbwerten ist es nicht getan. Wenn du dann die Farbe für einen Index änderst, ändert die sich nicht auch automatisch an jeder Stelle auf dem Bildschirm. Und die Palette rotieren kann man dann auch nicht wirklich.