home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.uni-stuttgart.de/pub/systems/acorn/
/
Acorn.tar
/
Acorn
/
acornet
/
fun
/
mags
/
hl-05-93.arc
/
!HL-05_93_Text_Tips
< prev
next >
Wrap
Text File
|
1993-11-25
|
4KB
|
67 lines
ÿÿÿÿÿÿÿÿÿÿ Assemblertips ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
In dieser Folge der Assemblertips wollen wir uns erneut einen Effekt vornehmen,
der eigentlich vom Amiga (bzw. in diesem Fall auch vom Atari ST) kommt. Es
handelt sich hierbei um die "Bitplanes", die durch spektakulΣre Effekte in
Demos und Spielen fⁿr Aufsehen gesorgt haben.
Was sind nun eigentlich Bitplanes ? Um das zu klΣren, schauen wir uns zuerst
einmal den Aufbau des Bildschirms beim Archimedes an. In 256-Farb-Modi
entspricht hier ein Pixel genau einem Byte, wobei die einzelnen Bytes im
Speicher aufeinander folgen. In 16-Farb-Modi ist es Σhnlich; hier werden aber
aufgrund der geringeren Farbzahl nur die sogenannten "Nibbles" (vier Bit)
ben÷tigt.
Beim Amiga ist der Bildschirm anders aufgebaut. Die Farbinformationen liegen
hier in den Bitplanes. Angenommen, wir befinden uns in einem Modus mit
320x200 Bildpunkten bei 16 Farben. Der Bildschirm besteht dann aus insgesamt
vier Bitplanes, die aufeinander folgen und aus jeweils 320x200 Bits bestehen.
M÷chte ich nun den ersten Punkt im Bildschirm mit der Farbe 15 (binΣr: %1111)
belegen, mu▀ ich in allen Bitplanes das jeweils erste Bit setzen. Beim
Archimedes wΣre das einfacher, da ich hier einfach nur das erste Nibble auf
den Wert 15 setzen mⁿ▀te - eine Ersparnis von mindestens drei Befehlen !
Trotzdem ist es auch auf dem Archimedes m÷glich, eine Art Bitplane-Emulation
auf die Beine zu stellen. Ganz so einfach wie auf dem Amiga lΣuft die Sache
allerdings nicht, denn die Hardware kann hier ⁿberhaupt nicht weiterhelfen -
im Gegensatz zum PC wurde nΣmlich GAR kein Bitplane-Modus eingebaut (was
viele Leute als Geschenk des Himmels betrachten...). Man mu▀ die Bitplanes
also rein softwaremΣ▀ig emulieren, was aber mit 32-Bit-RISC-Power unter der
Haube (um mal den ⁿblichen Jargon zu benutzen) kein Problem darstellen
sollte.
Der Trick bei der Sache ist, da▀ wir die Grafiken, die wir verwenden wollen,
auf eine ganz bestimmte Art und Weise malen. Angenommen, wir wollen einen
Nebeleffekt programmieren, bei dem eine Grafik im Hintergrund von anderen
Grafiken (z.B. Scrolltexten) ⁿberlagert und auf den SchnittflΣchen erhellt
wird. Wir erstellen dann die Hintergrundgrafik in den Farben 0-7, nutzen also
in einem 16-Farb-Modus nur die unteren drei Bits (%0111). Den Scrolltext
zeichnen wir in Farbe Nr. 8, benutzen also das oberste Bit (%1000). Nun
bringen wir ⁿber ⁿbliche STM-/LDM-Befehle die Hintergrundgrafik auf den
Screen. Und jetzt kommt die eigentliche Bitplane-Emulation. Den Scroller
plotten wir nΣmlich nicht "wie ⁿblich", sondern folgenderma▀en: Wir lesen
den Hintergrund und die Scrollergrafik, verbinden beides ⁿber ORR und plotten
erst dann das Resultat. An den Stellen, die der Scroller bedeckt, wird
dadurch das oberste Bit gesetzt. Haben wir also in der Grafik an einer
bestimmten Stelle die Farbe Nr. 4, wird daraus die Farbe 4 ORR 8=12. So
geschieht das auch mit den anderen Farben. Aus 0 wird 8, aus 1 wird 9, usw.
Wenn wir nun bei den mit %1000 geORRten Farben eine gegenⁿber den Ursprungs-
farben etwas aufgehellte Palette verwenden, ergibt sich hinter dem Scroller
ein helleres Bild.
Und das ist auch schon das ganze Geheimnis der Bitplane-Emulation ! Wichtig
ist nur, da▀ man beim Malen der Grafiken, die in verschiedenen emulierten
Bitplanes liegen sollen, auch wirklich verschiedene (Farb-)Bits benutzt.
Natⁿrlich mu▀ man auch vorher eine geeignete Palette wΣhlen, damit das Ganze
auch ein wenig Σsthetisch aussieht... Das ist auch der Grund, warum man fⁿr
eine Bitplane-Emulation einen 16-Farb-Modus wΣhlen sollte. Bei 256 Farben
sind solche Routinen zwar auch m÷glich, allerdings k÷nnen die Schnittfarben
stellenweise sehr merkwⁿrdig aussehen, da man die Palette bei 8 Bit Farbtiefe
nicht frei wΣhlen kann.
- Tim Juretzky -