DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Amiga, AmigaOS 4 > AmigaBASIC-Objekte in anderes Format konvertieren | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2016-08-04, 14:56 h cgutjahr Posts: 2783 [Administrator] |
Ich habe hier eine Reihe von Grafiken im AmigaBASIC-Format. Sie werden mitBASIC code:geladen, was wohl bedeutet dass sie mit dem Object Editor von AmigaBASIC erstellt wurden. Kennt jemand eine Möglichkeit, diese Grafiken in ein "normales" Format zu konvertieren? Ich finde nichts dergleichen.OPEN "<filename>" FOR INPUT AS 1 OBJECT.SHAPE 1,INPUT$(LOF(1),1) CLOSE 1 Alles was ich auftreiben konnte ist die Format-Beschreibung aus dem AmigaBASIC-Handbuch, so kompliziert ist das offensichtlich nicht, dafür muss doch jemand einen Konverter geschrieben haben? code:Words# 0-4 (32 Bit): unused, unused, depth, width, height Words# 5-n (16 bit): A, B, C, data1, data2, data3, D A - bit 0: 1 if vSprite, 0 if bob bit 1: flag—is collision plane included in file? (unused in ObjEdit) bit 2: flag—is image shadow included in file? (unused in ObjEdit) bit 3: saveback (as described in the Amiga ROM Kernel Manual) bit 4: overlay (as described in the Amiga ROM Kernel Manual) bit 5: savebob (if set, use image as a "paintbrush"; see the Amiga ROM Kernel Manual) B - Plane pick (as described in the Amiga ROM Kernel Manual) C - Plane on/off (as described in the Amiga ROM Kernel Manual) data1 - Sequential byte values of image: upper-left to lower-right of plane 1, upper-left to lower-right of plane 2, ...upper-left to lower-right of plane n in depth of n data2 - Image-shadow bit plane (unused unless bit 2 of word A is set) data3 - Collision bit-plane (unused unless bit 1 of word A is set) D - Six bytes for sprite colors if bit 0 of word A is set. (Only first four bytes are used) [ - Answer - Quote - Direct link - ] |
2016-08-05, 08:39 h thomas Posts: 7718 User |
@cgutjahr: Hab noch nie davon gehört. Aber die Beschreibung ist wirklich simpel. Wenn du mir ein paar (oder alle) Testobjekte zur Verfügung stellst, kann ich dir einen Konverter schreiben. -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2016-08-05, 21:37 h cgutjahr Posts: 2783 [Administrator] |
Zitat:Wow, vielen Dank! Ich habe hier mal eine ganze Handvoll Objekte in dem Format hochgeladen: http://gutjahr.hallenradsport-forum.de/files/amigabasic_objekte.zip [ - Answer - Quote - Direct link - ] |
2016-08-06, 09:46 h thomas Posts: 7718 User |
@cgutjahr: Die Dateien enthalten keine Farbinformationen. Hast du noch ein AmigaBasic-Programm dazu, dem man die Palette entnehmen kann? -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2016-08-06, 15:31 h jolo Posts: 110 User |
Ich kann nur spekulieren, aber da Shapes (der C16/Plus 4 lässt grüßen) auf dem Bob-Record aufbauen, denke ich, dass man keine Farben definieren muss - also die Farben nicht mit dem Objekt selber abgespeichert werden, es sei denn, man speichert das Objekt als Sprite, wobei dann allerdings nur vier Bytes auch nur drei Farben aufnehmen können (R4B4G4 - 12 Bit!) - ich denke, dass die transparente Farbe ausgespart wird. Ist aber nur eine Vermutung. Hier die vordefinierten Farben des Kickstart v33/v34. code:Bitplane Nummer Farbe Klartext 0 0 $05A Blau 1 1 1 $FFF Weiß 1 2 2 $002 Schwarz 1 3 $F80 Orange 3 4 $00F Blau 2 5 $F0F Pink 6 $0FF Türkis 7 $FFF Weiß 2 4 8 $620 Dunkelbraun 9 $E50 Orange 10 $9F1 Hellgrün 11 $EB0 Ocker 12 $55F Hellblau 13 $92F Violett 14 $0F8 Neongrün 15 $CCC Hellgrau 2 5 16 $000 Schwarz 2 17 $E32 Rot 18 $000 Schwarz 3 19 $F96 Fleischfarben 20 $444 Dunkelgrau 1 21 $555 Dunkelgrau 2 22 $666 Mittelgrau 1 23 $777 Mittelgrau 2 24 $888 Mittelgrau 3 25 $999 Mittelgrau 4 26 $AAA Mittelgrau 5 27 $BBB Hellgrau 1 28 $CCC Hellgrau 2 29 $DDD Hellgrau 3 30 $EEE Hellgrau 4 31 $FFF Weiß 3 Das erste Hardware-Sprite (OCS-Sprites: maximal 16 Bits breit und 4 Farben, alle in Bitplane 5 angesiedelt) übernimmt immer die Farben der Bitplane 5, also standardmäßig transparent (Schwarz 2 wird nicht dargestellt), Rot, Schwarz 3 und Fleischfarben. Öffnet man einen eigenen Bildschirm unter OS 1.2, 1.3, muss man auch zwingend die Farben (z.B. mit LoadRGB4()) verändern, ansonsten erhält man wieder diese vordefinierten Farben. In wie weit das Werkzeug zum Erstellen der Shapes das beim Abspeichern der Daten berücksichtig, kann ich nicht sagen. Um AmigaBasic und Basic im Generellen, habe ich immer einen großen Bogen gemacht. Ich denke aber, dass man bei einer veränderten Farbpalette ohne den zugehörigen Basic-Quellcode nicht wirklich ein eins-zu-eins Abbild schaffen kann, da nur im Quelltext selber die Farben definiert sind - wozu soll man bei einem Bob (AmigaBasic nennt diese Shapes) denn eine Farbpalette mitgeben? Bobs sind nur binäre Datenwörter ohne Farbinformationen - das Remappen muss man heutzutage (True/Hicolour/256 Farbpalette) schon selber vornehmen. Aber wie gesagt, ohne den AmigaBasic-Quelltext, der die Farben definiert, wird es schwer. Thomas, vielleicht helfen Dir die oben vordefinierten Farben ein bisschen weiter. [ - Answer - Quote - Direct link - ] |
2016-08-06, 15:58 h cgutjahr Posts: 2783 [Administrator] |
Zitat:Aua, gar nicht gesehen - das erklärt, warum es keinen Konverter gibt. Dämliche Idee, die Palette nicht mit zu speichern... Die Beispiele stammen aus einem simplen Textadventure namens "Ghost", der Sourcecode ist hier (mit B2A aus dem Aminet de-Tokenized): http://gutjahr.hallenradsport-forum.de/files/game.bas Der Autor war offensichtlich Anfänger, ob das eleganter geht als er das gelöst hat, weiß ich nicht. Wenn nicht, wäre das ein ziemlicher Fail Die Palette wird mit dem Statement PALETTE definiert - pro Pen ein PALETTE Statement! Bei 32 Farben also 32 PALETTEs... Die Syntax ist laut Handbuch PALETTE color-id, Red, Green, Blue wobei für R,G,B gilt: Zitat: Im Sourcecode werden drei Paletten definiert (s.u.), wobei colors2 wohl nur für "alien" und "gun" verwendet wird, die anderen beiden sich aber den Rest ziemlich aufteilen. Ich habe hier eine Reihe von AmigaBasic-Sourcen, die ich mir fürs Aminet überprüfen wollte - Ich glaube nicht, dass das den Aufwand lohnt, extra einen Konverter zu schreiben der auch noch BASIC-Code parst... so sind die Paletten notiert: code:colors1: PALETTE 0,0,0,0 PALETTE 1,0,0,0 PALETTE 2,0,1,1 PALETTE 3,1,7.500000E-01,6.000000E-01 PALETTE 4,0,0,4.000000E-01 PALETTE 5,0,0,6.000000E-01 PALETTE 6,0,0,8.000000E-01 PALETTE 7,0,0,1 PALETTE 8,0,1.500000E-01,0 PALETTE 9,0,2.000000E-01,0 PALETTE 10,0,2.500000E-01,0 PALETTE 11,0,3.000000E-01,0 PALETTE 12,0,3.500000E-01,0 PALETTE 13,8.000000E-01,0,0 PALETTE 14,0,1.000000E-01,0 PALETTE 15,2.500000E-01,5.000000E-02,0 PALETTE 16,3.000000E-01,1.000000E-01,0 PALETTE 17,3.500000E-01,1.500000E-01,5.000000E-02 PALETTE 18,4.000000E-01,2.000000E-01,1.000000E-01 PALETTE 19,4.500000E-01,2.500000E-01,1.500000E-01 PALETTE 20,5.000000E-01,3.000000E-01,2.000000E-01 PALETTE 21,0,0,0 PALETTE 22,5.000000E-02,5.000000E-02,5.000000E-02 PALETTE 23,1.000000E-01,1.000000E-01,1.000000E-01 PALETTE 24,1.800000E-01,1.800000E-01,1.800000E-01 PALETTE 25,2.300000E-01,2.300000E-01,2.300000E-01 PALETTE 26,3.000000E-01,3.000000E-01,3.000000E-01 PALETTE 27,3.800000E-01,3.800000E-01,3.800000E-01 PALETTE 28,4.400000E-01,4.400000E-01,4.400000E-01 PALETTE 29,5.200000E-01,5.200000E-01,5.200000E-01 PALETTE 30,5.800000E-01,5.800000E-01,5.800000E-01 PALETTE 31,1,1,1 RETURN colors2: PALETTE 8,9.000000E-01,6.500000E-01,5.000000E-01 PALETTE 9,8.000000E-01,5.500000E-01,4.000000E-01 PALETTE 10,7.000000E-01,4.500000E-01,3.000000E-01 PALETTE 11,6.000000E-01,4.000000E-01,2.000000E-01 RETURN colors3: PALETTE 3,0,0,4.000000E-01 PALETTE 4,0,0,5.000000E-01 PALETTE 5,0,0,7.000000E-01 PALETTE 6,1.000000E-01,0,0 PALETTE 7,1.500000E-01,5.000000E-02,0 PALETTE 8,2.000000E-01,5.000000E-02,0 PALETTE 9,2.500000E-01,5.000000E-02,0 PALETTE 10,3.000000E-01,1.000000E-01,0 PALETTE 11,4.000000E-01,2.000000E-01,1.500000E-01 PALETTE 12,4.500000E-01,2.500000E-01,2.000000E-01 PALETTE 13,5.000000E-01,2.500000E-01,2.000000E-01 PALETTE 14,5.500000E-01,3.500000E-01,3.000000E-01 PALETTE 15,6.500000E-01,4.500000E-01,4.000000E-01 PALETTE 16,7.000000E-01,5.000000E-01,4.500000E-01 PALETTE 17,0,0,0 PALETTE 18,5.000000E-02,5.000000E-02,5.000000E-02 PALETTE 19,1.000000E-01,1.000000E-01,1.000000E-01 PALETTE 20,1.800000E-01,1.800000E-01,1.800000E-01 PALETTE 21,2.300000E-01,2.300000E-01,2.300000E-01 PALETTE 22,3.000000E-01,3.000000E-01,3.000000E-01 PALETTE 23,3.800000E-01,3.800000E-01,3.800000E-01 PALETTE 24,4.400000E-01,4.400000E-01,4.400000E-01 PALETTE 25,5.200000E-01,5.200000E-01,5.200000E-01 PALETTE 26,5.800000E-01,5.800000E-01,5.800000E-01 PALETTE 27,6.200000E-01,6.200000E-01,6.200000E-01 PALETTE 28,7.000000E-01,7.000000E-01,7.000000E-01 PALETTE 29,7.500000E-01,7.500000E-01,7.500000E-01 PALETTE 30,8.000000E-01,8.000000E-01,8.000000E-01 PALETTE 31,1,1,1 RETURN [ Dieser Beitrag wurde von cgutjahr am 06.08.2016 um 18:53 Uhr geändert. ] [ - Answer - Quote - Direct link - ] |
2016-08-06, 18:41 h thomas Posts: 7718 User |
@cgutjahr: Der Link funktioniert nicht, springt immer zur Hauptseite. Den Code zu parsen ist nicht das Problem, wenn die Einträge immer so schön untereinander stehen. Die Herausforderung ist, den Dateien die richtige Palette zuzuweisen, wenn im Programm mehrere Paletten vorkommen. -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2016-08-06, 18:53 h cgutjahr Posts: 2783 [Administrator] |
Zitat:Ups, Tippfehler: http://gutjahr.hallenradsport-forum.de/files/game.bas [ - Answer - Quote - Direct link - ] |
2016-08-06, 19:07 h cgutjahr Posts: 2783 [Administrator] |
Zitat:Klar. Wenn du das wirklich machen willst, mach die Palette konfigurierbar oder konvertier einfach alle Bilder mit allen Paletten ;-) Zitat:Hier nochmal komplett mit jeweils 32 Einträgen: code:colors1: 0,0,0,0 1,0,0,0 2,0,1,1 3,1,7.500000E-01,6.000000E-01 4,0,0,4.000000E-01 5,0,0,6.000000E-01 6,0,0,8.000000E-01 7,0,0,1 8,0,1.500000E-01,0 9,0,2.000000E-01,0 10,0,2.500000E-01,0 11,0,3.000000E-01,0 12,0,3.500000E-01,0 13,8.000000E-01,0,0 14,0,1.000000E-01,0 15,2.500000E-01,5.000000E-02,0 16,3.000000E-01,1.000000E-01,0 17,3.500000E-01,1.500000E-01,5.000000E-02 18,4.000000E-01,2.000000E-01,1.000000E-01 19,4.500000E-01,2.500000E-01,1.500000E-01 20,5.000000E-01,3.000000E-01,2.000000E-01 21,0,0,0 22,5.000000E-02,5.000000E-02,5.000000E-02 23,1.000000E-01,1.000000E-01,1.000000E-01 24,1.800000E-01,1.800000E-01,1.800000E-01 25,2.300000E-01,2.300000E-01,2.300000E-01 26,3.000000E-01,3.000000E-01,3.000000E-01 27,3.800000E-01,3.800000E-01,3.800000E-01 28,4.400000E-01,4.400000E-01,4.400000E-01 29,5.200000E-01,5.200000E-01,5.200000E-01 30,5.800000E-01,5.800000E-01,5.800000E-01 31,1,1,1 RETURN colors2: 0,0,0,0 1,0,0,0 2,0,1,1 3,1,7.500000E-01,6.000000E-01 4,0,0,4.000000E-01 5,0,0,6.000000E-01 6,0,0,8.000000E-01 7,0,0,1 8,9.000000E-01,6.500000E-01,5.000000E-01 9,8.000000E-01,5.500000E-01,4.000000E-01 10,7.000000E-01,4.500000E-01,3.000000E-01 11,6.000000E-01,4.000000E-01,2.000000E-01 12,0,3.500000E-01,0 13,8.000000E-01,0,0 14,0,1.000000E-01,0 15,2.500000E-01,5.000000E-02,0 16,3.000000E-01,1.000000E-01,0 17,3.500000E-01,1.500000E-01,5.000000E-02 18,4.000000E-01,2.000000E-01,1.000000E-01 19,4.500000E-01,2.500000E-01,1.500000E-01 20,5.000000E-01,3.000000E-01,2.000000E-01 21,0,0,0 22,5.000000E-02,5.000000E-02,5.000000E-02 23,1.000000E-01,1.000000E-01,1.000000E-01 24,1.800000E-01,1.800000E-01,1.800000E-01 25,2.300000E-01,2.300000E-01,2.300000E-01 26,3.000000E-01,3.000000E-01,3.000000E-01 27,3.800000E-01,3.800000E-01,3.800000E-01 28,4.400000E-01,4.400000E-01,4.400000E-01 29,5.200000E-01,5.200000E-01,5.200000E-01 30,5.800000E-01,5.800000E-01,5.800000E-01 31,1,1,1 RETURN colors3: 0,0,0,0 1,0,0,0 2,0,1,1 3,0,0,4.000000E-01 4,0,0,5.000000E-01 5,0,0,7.000000E-01 6,1.000000E-01,0,0 7,1.500000E-01,5.000000E-02,0 8,2.000000E-01,5.000000E-02,0 9,2.500000E-01,5.000000E-02,0 10,3.000000E-01,1.000000E-01,0 11,4.000000E-01,2.000000E-01,1.500000E-01 12,4.500000E-01,2.500000E-01,2.000000E-01 13,5.000000E-01,2.500000E-01,2.000000E-01 14,5.500000E-01,3.500000E-01,3.000000E-01 15,6.500000E-01,4.500000E-01,4.000000E-01 16,7.000000E-01,5.000000E-01,4.500000E-01 17,0,0,0 18,5.000000E-02,5.000000E-02,5.000000E-02 19,1.000000E-01,1.000000E-01,1.000000E-01 20,1.800000E-01,1.800000E-01,1.800000E-01 21,2.300000E-01,2.300000E-01,2.300000E-01 22,3.000000E-01,3.000000E-01,3.000000E-01 23,3.800000E-01,3.800000E-01,3.800000E-01 24,4.400000E-01,4.400000E-01,4.400000E-01 25,5.200000E-01,5.200000E-01,5.200000E-01 26,5.800000E-01,5.800000E-01,5.800000E-01 27,6.200000E-01,6.200000E-01,6.200000E-01 28,7.000000E-01,7.000000E-01,7.000000E-01 29,7.500000E-01,7.500000E-01,7.500000E-01 30,8.000000E-01,8.000000E-01,8.000000E-01 31,1,1,1 RETURN [ - Answer - Quote - Direct link - ] |
2016-08-06, 20:07 h thomas Posts: 7718 User |
Zitat: Das werde ich machen. Ich speichere alle Bilder dreimal mit unterschiedlichen Paletten und du suchst dir die richtigen heraus. Zitat: Das Programm zeigt sehr schön, wie man nicht programmieren sollte... -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2016-08-07, 10:45 h thomas Posts: 7718 User |
Hier ist der Konverter nebst den konvertierten Bildern: http://thomas-rapp.homepage.t-online.de/download/abobj.lha -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2016-08-07, 17:32 h cgutjahr Posts: 2783 [Administrator] |
Zitat:Sehr geil, vielen Dank! Echt super. mogrify (aus dem imagemagick-Paket) beschwert sich zwar, aber die Konvertierung nach PNG hat trotzdem problemlos geklappt: code:Ich habe sicher noch mehr Beispiele von solchen Objekten herumliegen, wühle mich wie gesagt gerade durch einen Haufen BASIC-Sources durch. Ich werde mal versuchen, das selbst zu compilieren, wo landet denn der Output von palette.rexx?ilbmtoppm: input is a 5-plane ILBM ilbmtoppm: warning - file length/FORM size field mismatch (12472 != 12468+8) Vielen Dank nochmal. [ - Answer - Quote - Direct link - ] |
2016-08-07, 18:55 h Bjoern Posts: 1730 User |
@thomas: Avast blockiert deine Internetseite - Es wird eine Bedrohung erkannt, leider ohne weitere Aussage um was es geht. Vielleicht nur ein Fehlalarm, aber vielleicht lohnt es sich mal danach zu schauen. Viele Grüße, Björn [ - Answer - Quote - Direct link - ] |
2016-08-07, 20:09 h thomas Posts: 7718 User |
@cgutjahr: palette.rexx brauchst du nicht, das war nur ein Experiment. Du musst auch nichts kompilieren. Einfach zwei Verzeichnisse, z.B. in und out. Nach in kopierst du alle Dateien, die du konvertieren möchtest, out bleib leer, da kommen die konvertieren Dateien rein. Dann machst du noch ein palette.txt. Das muss so aussehen, wie die aktuelle palette.txt. Wichtig sind name: und PALETTE. "name" wird in den Dateinamen der konvertierten Dateien übernommen. Dann einfach aufrufen: convert in out palette.txt @Bjoern: Avast interessiert mich nicht. Der macht immer nur Fehlalarme. -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2016-08-07, 20:51 h Bjoern Posts: 1730 User |
@thomas: War ja auch nur ein Erfahrungsbericht Grüße, Björn [ - Answer - Quote - Direct link - ] |
2016-08-16, 15:48 h cgutjahr Posts: 2783 [Administrator] |
@thomas: Wollte eigentlich erst noch weitere Bilder finden und konvertieren um dann ein Fazit zu posten, komme aber im Moment zu gar nichts. Deswegen nachträglich nochmal vielen Dank für die super Aktion! [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Amiga, AmigaOS 4 > AmigaBASIC-Objekte in anderes Format konvertieren | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |