home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
No Fragments Archive 4: The Falcon Archive
/
nf_archive_four_v1.0.iso
/
ARCHIVE
/
WORK
/
UTILITY
/
XGRAB024.ZIP
/
XGRABBER.DOC
< prev
next >
Wrap
Text File
|
1994-10-18
|
14KB
|
276 lines
##############################################################################
XGrabber Version 0.24 (The Silicon Version)
~ Dokumentation ~
##############################################################################
(c) 1994 Inter development / The Independent
Geschrieben von Christian Pick (Lucky of ST)
Rheinbrückenstraße 5
76187 Karlsruhe
0721 / 562776
Dokumentation für Rainer Lissowski. (Thanx!)
GFX-Konverter für Kay Tennemann (Agent T / Cream)
Silicon Version für alle Franzosen, die glaubten ihre Demos seien sicher :-)
(Ja - ich weiß! "Agony" ist immer noch 'ne verdammte Nuß...)
Vorab: Der XGrabber ist kein fertiges Produkt und wird nur bei Bedarf und auf
Anfragen hin weiterentwickelt. Er ist keineswegs fehlerfrei, erfüllt aber
seinen Zweck bei richtiger Anwendung.
Die Dateien
~~~~~~~~~~~~~
F_REGS.S Falcon-Registerbeschreibung von bITmASTER (BSW)
GFX->###.* Konvertierroutine von GFX nach RAW oder TPI (Automatische
Erkennung)
GFX->PI#.* Konvertierroutine von GFX nach PI? (Degas); ST-Kompatibel
GFX->RAW.* Konvertierroutine von GFX nach RAW
GFX->TPI.* Konvertierroutine von GFX nach TPI
GRABSHOW.SRC Sourcecode von XGS_ST.TTP und XGS_F030.TTP
XGRABBER.* Das Hauptprogramm mit Sourcen und Dokumentation
XGRAB_J.* Programm & Source für Jaguar-Pad:
Alle neuen Versionen sind für das Jaguar-Pad! Alle
neueren Features sind nur hier vorhanden!
Anwendung
~~~~~~~~~~~~
Der Xgrabber funktioniert (hoffentlich) auf jedem Falcon 030-System. Er ist
auf den 68030er und 68040er-Prozessoren zugeschnitten und kann auch nur auf
diesen Typen (eventuell auch höher...) betrieben werden. Auf anderen Systemen
wird es zu Abstürzen kommen, da keine Sicherheitsabfragen vorgenommen werden!
Zur Bedienung des XGrabbers wird ein Joystick oder ein Jaguar-Pad für den
STE-Joystickport A benötigt. Die Belegung für ein Adapterkabel (für
Joysticks...) steht weiter unten. Da der XGrabber mit Sourcecode (Turbo-
Assembler und GFA-Basic) vorliegt kann man ihn auch nach Belieben selber
erweitern und ändern. So ist auch eine Steuerung über andere Ports
möglich. Ich habe mich für den STE-Port entschieden, da hier die
Joystickdaten keinen Interrupt auslösen und so ein unproblematisches
Auslesen dieser Daten möglich ist.
Um den XGrabber benutzen zu können, muß man ihn nur einmal nach jedem Reset
oder Warmstart laden. Er ist nun resident im Speicher (und überlebt auch
einen Wechsel der Auflösung). Aktiviert wird er über einen Druck auf den
Feuerknopf des Joysticks 0 im STE-Joystickport A. Nach Loslassen des
Knopfes wird das aktuelle Bild mit Auflösungs- und Farbinformationen
gespeichert. Es handelt sich um ein eigenes Format, Erklärung weiter unten.
Über den Vergleich der aktuellen Registerwerte mit den Werten für
ST-Kompatibilitätsauflösungen versucht der XGrabber auch herauszufinden, ob
man sich in einem ST-Modus befindet. Bisher hat dies funktionert, aber
theoretisch kann dies auch zu Fehlern führen. Mir ist leider keine bessere
(und einfachere) Möglichkeit bekannt. Sollte man in einer ST-Auflösung sein,
so wird das Bild nicht im Grabber-Format (GFX), sondern im PI?-Format
gespeichert. PI1-Bilder können von Neochrome, PI2- und PI3-Bilder von Degas
Elite geladen werden.
Die neuen XGrabber-Versionen werden über ein Jaguar-Pad gesteuert. Durch
Druck auf einen Feuerknopf kann man das aktuelle Bild speichern. Da
einige Demos inzwischen versuchen sich gegen den XGrabber zu schützen
gibt es ab sofort eine neue Version: Durch Druck auf den Pause-Knopf kann
man den Tracer aktivieren. Solange man Pause drückt, wird jeder Befehl
des aktiven Programmes während der Laufzeit untersucht und - falls er das
VBR-Register manipuliert oder abfragt - entsprechend behandelt. So kann man
z.B. auch in das Demo "Agony" eindringen. Beim Starten und beim wechseln
zwischen den Effekten muß man nur Pause drücken und schon bleibt der
XGrabber aktiv... Etwas umständlich ist das zwar schon, aber wenigstens
kann man in die Programme eindringen. Das Tracen ist natürlich extrem
langsam. Man sollte daher nur an benötigten Stellen Pause drücken. Durch
einen neuen Handler konnte auch die Transparenz des XGrabber zu den DSP-
Playroutinen erhöht werden. Knackser und Musik-Abstürze (teilweise daraus
folgende Programmabstürze...) konnten so verringert werden.
Die Dateinamen und der Pfad
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Da sich der XGrabber in laufenden Programmen aktiert fragt er nicht jedesmal
nach einen Dateinamen. Stattdessen vergibt er automatisch die Kennung
"GRAB???.GFX" (bzw. "GRAB???.PI?"). Die drei Fragezeichen sind dabei die
jeweilige Nummer des Bildes. Die Zählung beginnt bei "000" und nach jedem
Start des XGrabbers neu! Der XGrabber überprüft, ob ein Bild
gleichen Namens bereits vorhanden ist. Er benutzt dann immer den
ersten freien Eintrag, dessen Nummer höher als die zuletzt
vergebene ist.
Der Zielpfad kann nur direkt im Listing eingestellt werden. Voreingestellt
ist das Rootdirectory von Laufwerk C, also "C:\".
WICHTIG: Auf dem entsprechenden Laufwerk muß genügend Platz sein! Dies wird
der Einfachheit halber nicht überprüft. Bei neueren AHDI-Treibern führt
Platzmangel zu keinen Fehlern, bei alten (wie die ersten für den Falcon...)
wird gnadenlos die folgende Festplattenpartition beschrieben. Leider steht zu
Beginn der Partition die FAT und so gehen ALLE Daten der Partition kaputt!!!
Also unbedingt für genügend freien Platz sorgen!
Anzeigen von Bildern
~~~~~~~~~~~~~~~~~~~~~~
Zum Anzeigen der gespeicherten Bilder sind die beiden Programme "XGS_ST.TTP"
und "XGS_F030.TTP" vorhanden. Die einfachste Möglichkeit ist einfach das
gewünschte *.GFX-Bild auf das TTP-Programm zu ziehen. ACHTUNG: Bilder in der
jeweils falschen Auflösung führen zu einem Absturz!
Beide Anzeige-Programme sind mit dem Source "GRABSHOW.SRC" erzeugt worden.
Hier kann man auch die Verwendung eines XGrabber-Bildes sehen.
Fehler (Unbedingt lesen!!!)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hierbei handelt es sich nicht unbedingt um Fehler, aber auf einige Sachen muß
man beim Arbeiten mit dem XGrabber unbedingt achten.
Leider verträgt sich der XGrabber nicht mit allen Programmen. Da er sehr
tiefe Eingriffe in deren Ablauf vornimmt, ist dies auch kaum zu erwarten.
Nach oder während dem Speichern eines Bildes kann es so zum Absturz kommen.
Grund hierfür sind meistens Interrupts oder das TOS, wenn es gerade aktiv
war. Hiergegen kann man leider nichts machen, da einige Programme wegen den
Interrupts abstürzen und andere, wenn die Interrupts fehlen. Die momentane
Lösung ist meiner Meinung nach die beste. Vielleicht finde ich ja irgendwann
noch eine bessere.
Aufbau des Adapterkabels
~~~~~~~~~~~~~~~~~~~~~~~~~~
Material: 1 SUB-D Stiftleiste, 15-Polig (3-Reihig) [Anschluß STE-Port]
1 SUB-D Stiftleiste, 9-Polig (2-Reihig) [Jostickanschluß]
6 Drähte (jeweils etwa 3-4 cm)
Das Adapterkabel ist ein ganz normaler Anschluß für einen Joystick an den
STE-Port. Im Grunde genügt der Anschluß des Feuerknopf-Kabels (wozu dann auch
nicht unbedingt die 15-polige Stiftleiste nötig ist, da man einen einzelnen
Draht auch gut einfach in die Buchste stecken kann...), aber so kann man
besser mehr Funktionen in den XGrabber einbauen.
Die Verdrahtung ist simpel. Es müssen nur jeweils die Pins 1, 2, 3, 4 und 6
der beiden Stiftleisten miteinander verbunden werden. Der sechste draht
geht von Pin 8 (9-Polige Stiftleiste) auf Pin 9 (15-Polige Stiftleiste) Das
war's dann auch schon.
Dateiformat vom XGrabber
~~~~~~~~~~~~~~~~~~~~~~~~~~
Die Kürzel .b, .w und .l entsprechen der Assembler-Syntax und stehen für 1, 2
und 4 Bytes Datenlänge.
Grober Aufbau:
38 Bytes Auflösungsinformationen
1024 Bytes Farbinformationen 256-Farben Falcon-Palette
32 Bytes Farbinformationen 16-Farben STE-Palette
? Bytes Bildinformationen
Die Auflösungsinformationen:
Länge | Hardwareadresse | Beschreibung
------|-----------------|-------------------------------
.w | $FFFF8260.w | ST-Shift-Mode
.w | $FFFF8266.w | Falcon-Shift-Mode
.w | $FFFF8282.w | Horizontal Hold-Timer
.w | $FFFF8284.w | Horizontal Border-Begin
.w | $FFFF8286.w | Horizontal Border-End
.w | $FFFF8288.w | Horizontal Display-Begin
.w | $FFFF828A.w | Horizontal Display-End
.w | $FFFF828C.w | Horizontal Sync-Start
.w | $FFFF82A2.w | Vertical Frequenz-Timer
.w | $FFFF82A4.w | Vertical Border-Begin
.w | $FFFF82A6.w | Vertical Border-End
.w | $FFFF82A8.w | Vertical Display-Begin (VDB)
.w | $FFFF82AA.w | Vertical Display-End (VDE)
.w | $FFFF82AC.w | Vertical Sync-Start
.w | $FFFF82C0.w | Video Control
.w | $FFFF82C2.w | Video Mode
.w | $FFFF820E.w | Line Offset
.w | $FFFF8210.w | Line-Wide
.w | $FFFF8264.w | H-Scroll
Aus diesen Daten kann man alle benötigten Daten über das Bild berechnen.
Internes
~~~~~~~~~~
Der XGrabber wird nur durch das "Vector Base Register" (VBR) ermöglicht.
Dieses Register gibt an, wo im Speicher die Basis zu den Exception-Vektoren
liegt. Bei den Atari-Rechnern ist dies Standardmäßig bei Null und alle
bekannten Programme behandeln dies als eine unbedingte Tatsache. Dies ist es
aber nicht und so kann sich der XGrabber, für andere Programm vollkommen
transparent, in andere Programme einklinken. Die normalen Exception-Vektoren
werden überhaupt nicht berührt! Statt dessen verbiegt der XGrabber alle
Vektoren mittels VBR auf seine eigene Tabelle, in der nur Routinen stehen,
die sofort zu den normalen Exception-Routine springen. Mit einer Ausnahme:
Der VSync-Interrupt. Bei diesem wird noch abgefragt, ob der Joystickknopf
betätigt wird. Wenn nicht, arbeitet das Programm normal weiter, wenn ja wird
der XGrabber aktiviert.
Eine recht einfache Arbeitsweise, die sich dank seiner Transparenz auch mit
fast allen Programmen verträgt. Leider läßt sich der XGrabber genauso leicht
auch aus seinen eigenen Programm heraus entfernen. Man muß hierzu einfach zu
Programmstart (im Supervisor-Modus!) das VBR-Register auf Null oder auf eine
eigene Tabelle setzen. Sofort hat der XGrabber nichts mehr zu melden und ist
eine erstklassige Speicherleiche...
Nachtrag: In den neuen XGrabber-Versionen kann mittels des Trace-Modus
auch alle VBR-Manipulationen und -Abfragen abgefangen werden. Der
XGrabber ist dann vollkommen transparent! Störend kann jetzt nur noch der
Trace-Modus sein. (Durch die Zeitverzögerung kann es erhebliche Probleme
geben...) Wie man den XGrabber dennoch sauber (!) ausschaltet, wird hier
nicht verraten...
Formatkonvertierung GFX -> TPI
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Leider liegen mir keine Informationen zu verschiedenen Grafikformaten vor.
Deshalb konnte ich auch keine komplexen Konvertierer schreiben. Ein einfaches
Format ist TPI (TruePaint Image). In dieses TrueColor-Grafikformat lassen
sich nur TrueColor-Bilder konvertieren. Diese können dann mit Hilfe von
TruePaint in andere gängige Formate konvertiert werden.
Formatkonvertierung GFX -> RAW
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dieser Konverter konvertiert 256-Farben-GFX-Bilder in das 24-Bit-RAW-Format.
Das RAW-Format kann ebenfalls mit TruePaint in andere Formate konvertiert
werden.
Da der Sourcecode aller Konvertierer beiliegt, kann man ihn relativ leicht
auch an andere Plane-Modies anpassen.
Formatkonvertierung GFX -> PI?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Eigentlich sollte der XGrabber ST-Kompatibilitätsauflösungen anhand seiner
Vergleiche erkennen. Trotzdem kommt es oft vor, daß er dies nicht schafft. In
diesem Fall speichert er das Bild ebenfalls als GFX-Bild ab, daß man sich mit
"XGS_ST.TTP" ansehen kann. Um es trotzdem in das PI?-Format zu bringen kann
man diesen Konvertierer benutzen.
Formatkonvertierung GFX -> ###
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nein! "###" ist kein neues Format. Dies ist nur die Zusammenfassung aus dem
RAW- und TPI-Konverter. Im Allgemeinen sollte man dieses Konvertierprogramm
verwenden. Es erkennt automatisch, ob es sich um ein TrueColor- oder
256-Farben-Bild handelt und konvertiert es in das entsprechende Format.
Anschließend hat man noch die Möglichkeit, das GFX-Bild vom Programm löschen
zu lassen.
Wer noch Anregungen, neue Konvertierroutinen, Informationen über verschiedene
Grafikformate oder sonstige Probleme hat, soll mir alles in einen Brief
packen und schicken. Rückporto wäre auch nicht schlecht.
Lucky of ST