ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Blitprobleme... | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
20.01.2008, 23:46 Uhr Ralf27 Posts: 2779 Nutzer |
Ich weiß einfach nicht mehr weiter. Ich hab da ein größeres Problem mit Screens >8Bit. Die Bilder lade ich mit den Datatypes. Alle Bilder sind <=8Bit. Wenn ich das Programm auf der WB laufen lassen die mit CGX <=8Bit hat oder auf einem CGX-Screen (8Bit) oder mit AGA, dann läuft alles wunderbar. Aber... Wenn ich das Programm (Sudoku) auf der WB mit mehr als 8Bit laufen lassen, dann geht einfach alles schief: Die Grafik wird falsch geladen oder das Blitten geht in die Hose und was noch schlimmer ist: Das System wird irgendwie in Mitleidenschaft gezogen(z.b. ist auf einem MagicMenu nicht mehr aktiv, etc.) Das ganze aber nur, wenn ich auf einem Screen mit über 8Bit arbeite... Es läuft alles über die Betriebssystemroutinen, also keine extra CGX-Befehle. Ich hab mal MuForce mitlaufen lassen, es findet aber auch nichts. Wo könnte ich denn noch denn Fehler suchen? Ich hab hier gerade noch etwas denn Quellcode überarbeitet, aber ich finde einfach denn Fehler nicht. Da der Quellcode recht lang ist (inzwischen insgesamt ca. 100kb), hier einige hoffentlich markante Punkte: Hier das laden des Bildes: code:IF GetBitMapAttr&(scr&+ScreenBitMap%,BMA_FLAGS&) AND BMF_STANDARD& THEN a&=FALSE& ELSE a&=TRUE& rem scr&+ScreenBitMap% ist auch nicht das feine vom Ei. Hab ich eben gesehn, werd ich auch umändern. TAGLIST tagsl&, _ DTA_GroupID&, GID_PICTURE&, _ PDTA_DestMode&, PMODE42&, _ PDTA_FreeSourceBitMap&, TRUE&, _ PDTA_UseFriendBitMap&, a&, _ PDTA_Remap&, TRUE&, _ PDTA_Screen&, scr&, _ TAG_END& obild&=NewDTObjectA&(SADD(DatenSatzPfad$+DatenSatz$+".pic"+CHR$(0)),tagsl&) IF obild& THEN TAGLIST tagsl&, _ DTM_PROCLAYOUT&, 0, TRUE&, _ TAG_END& IF DoDTMethodA&(obild&,0,0,tagsl&) THEN bitmapBild&=0 oBreite&=0 oHoehe&=0 TAGLIST tagsl&, _ PDTA_DestBitMap&, VARPTR(bitmapBild&), _ DTA_NominalHoriz&, VARPTR(oBreite&), _ DTA_NominalVert&, VARPTR(oHoehe&), _ TAG_END& junk=GetDTAttrsA(oBild&,tagsl&) Farbtiefe=GetBitMapAttr&(bitmapBild&,BMA_DEPTH&) IF Farbtiefe=0 THEN Fehler=FehlerInit_Masketiefe2 ELSE Fehler=FehlerInit_runterrechnen END IF ELSE Fehler=FehlerInit_SkinBildladen END IF PDTA_DestMode&, PMODE42&, _ PDTA_FreeSourceBitMap&, TRUE&, _ PDTA_UseFriendBitMap&, a&, _ Hab ich auch mal weg gelassen, bringt auch nichts. Hier das laden der Maske: code:bitmapMask&=AllocBitMap&(oBreite&,oHoehe&,1,0,0) IF bitmapMask&=0 THEN Fehler=FehlerInit_Maske GOTO FehlerAufbau END IF Mask&=PEEKL(bitmapMask&+8):REM <- hier bin ich mir nicht so ganz sicher, ob es "legal" ist REM öffne Maske TAGLIST tagsl&, _ DTA_GroupID&, GID_PICTURE&, _ PDTA_DestMode&, PMODE42&, _ PDTA_FreeSourceBitMap&, TRUE&, _ PDTA_Remap&, FALSE&, _ TAG_END& omask&=NewDTObjectA&(SADD(DatenSatzPfad$+DatenSatz$+".mask.pic"+CHR$(0)),tagsl&) IF omask& THEN TAGLIST tagsl&, _ DTM_PROCLAYOUT&, 0, TRUE&, _ TAG_END& IF DoDTMethodA&(omask&,0,0,tagsl&) THEN obitmapMask&=0 x&=0 y&=0 TAGLIST tagsl&, _ PDTA_DestBitMap&, VARPTR(obitmapMask&), _ DTA_NominalHoriz&, VARPTR(x&), _ DTA_NominalVert&, VARPTR(y&), _ TAG_END& junk=GetDTAttrsA(omask&,tagsl&) t=GetBitMapAttr(obitmapMask&,BMA_DEPTH&) IF x&=oBreite& AND y&=oHoehe& AND t=1 THEN REM Interleave-Bitmap erst mal konverieren junk=BltBitMap(obitmapMask&,0,0,bitmapMask&,0,0,x&,y&,&Hc0,&Hff,0) ELSE Fehler=FehlerInit_Masketiefe1 IF t=0 THEN Fehler=FehlerInit_Masketiefe2 IF t>1 THEN Fehler=FehlerInit_Masketiefe3 END IF ELSE Fehler=FehlerInit_Maskebild END IF DisposeDTObject omask&:omask&=0 ELSE Fehler=FehlerInit_Maskeoeffnen END IF Hier folgt der kleine Puffer für denn Grafikaufbau: code:BitmapBuffer&=AllocBitMap&(b,h,Farbtiefe,BMF_INTERLEAVED&,scr&+ScreenBitMap%) IF BitmapBuffer& THEN Bufferrp&=AllocVec&(RastPort_sizeof%,MEMF_PUBLIC&) IF Bufferrp& THEN InitRastPort Bufferrp& POKEL Bufferrp&+RastPortBitMap%,BitmapBuffer& ELSE Fehler=FehlerInit_BufferRP END IF ELSE Fehler=FehlerInit_Buffer END IF Ein kleins Blitbeispiel aus dem Programm: code:BltMaskBitMapRastport BitMapBild&,0,a*h,rp&,xStart+aax,yStart+aay+a*h,b,h,&He0,Mask& Bzw. mal die gesamte Blitunterroutine für ein Feld in Sudoku: code:SUB ZeigeFeld(BYVAL x,BYVAL y) SHARED asx,asy,fx1,fy1,b,h,rp& SHARED BitmapBild&,Mask& SHARED BitMapBuffer&,Bufferrp& SHARED xStart,yStart SHARED TCPCursorX,TCPCursorY STATIC y1,x2,y2,x3,y3,z,junk x2=asx+(x-1)*b y2=asy+(y-1)*h y1=feld(x,y)*h junk=BltBitMapRastport(BitMapBild&,Fx1+x2,Fy1+y2,Bufferrp&,0,0,b,h,&HC0) IF y1 THEN IF feldAkt(x,y,2) AND opt(1)=1 THEN REM Symbol Fest BltMaskBitMapRastport BitMapBild&,b+b,y1,Bufferrp&,0,0,b,h,&He0,Mask& ELSE REM Symbol Frei BltMaskBitMapRastport BitMapBild&,0,y1,Bufferrp&,0,0,b,h,&He0,Mask& END IF END IF IF feldAkt(x,y,3) THEN REM Eindeutig z=feldAkt(x,y,3) IF SkinOpt(13)THEN z=1 x3=3*b y3=z*h-h IF opt(15) THEN IF z>0 AND AnimStripFeld(z,0)=1 THEN x3=AnimStripFeld(z,7) y3=AnimStripFeld(z,8) END IF END IF BltMaskBitMapRastport BitMapBild&,x3,y3,Bufferrp&,0,0,b,h,&He0,Mask& END IF IF feldAkt(x,y,1)THEN REM Auswahl x3=b y3=0:IF SkinOpt(12) THEN y3=y1 IF AnimStripFeld(5,0)=1 AND opt(15)=1 THEN x3=AnimStripFeld(5,7) y3=AnimStripFeld(5,8) END IF BltMaskBitMapRastport BitMapBild&,x3,y3,Bufferrp&,0,0,b,h,&He0,Mask& END IF IF TCPCursorX=x AND TCPCursorY=y AND SkinOpt(21)>0 THEN x3=SkinOpt(21) y3=SkinOpt(22) IF AnimStripFeld(6,0)=1 AND opt(15)=1 THEN x3=AnimStripFeld(6,7) y3=AnimStripFeld(6,8) END IF BltMaskBitMapRastport BitMapBild&,x3,y3,Bufferrp&,0,0,b,h,&He0,Mask& END IF junk=BltBitMapRastport(BitmapBuffer&,0,0,rp&,xStart+x2,yStart+y2,b,h,&HC0) REM Testweise IF TCPCursorX=x AND TCPCursorY=y AND SkinOpt(21)=0 THEN xBox xStart+x2+2,yStart+y2+2,xStart+x2+b-2,yStart+y2+h-2 END IF END SUB Ich hoffe, der Code ist nicht zu furchtbar. Ich lerne aber gerne dazu und hoffe das ich besser werde. -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 21.01.2008 um 00:04 Uhr geändert. ] [ Dieser Beitrag wurde von Ralf27 am 21.01.2008 um 00:40 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
21.01.2008, 10:40 Uhr thomas Posts: 7716 Nutzer |
Zitat: Hast du mal einen Screenshot ? Zitat: Unbedingt. Ganz besonders, wenn du mit Grafikkarten-Bitmaps arbeitest. Zitat: Da solltest du PMODE_V43 nehmen. Denn mit V42 bekommst du nur AGA-Kompatible Bitmaps, aber du möchtest ja auf dem Screen mit mehr als 8 Bits arbeiten. Zitat: Das kannst du dir sparen. Wenn du einen Screen angibst, wird ohnehin das Pixelformat des Screens genommen (bei V43). Zitat: Klar. V42 ist Default. Weglassen bringt keine Änderung. Zitat: Anders geht's ja nicht. Zitat: BMF_INTERLEAVED ist Blödsinn an der Stelle IMHO. Du solltest BMF_MINPLANES setzen, um CGX mitzuteilen, daß du es ernst meinst und eine Truecolor-Bitmap möchtest. P96 ist das egal, aber CGX besteht darauf. Und natürlich auch hier wie überall scr->RastPort.BitMap benutzen. Zitat: Warum schreibst du es einmal so und einmal so ? Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
21.01.2008, 11:53 Uhr akl Posts: 265 Nutzer |
Gerade für sowas hatte ich eigentlich die dtimage.library in's Aminet gestellt, und würde in dem Zsh. WritePixelLine8() bzw. WriteChunkyPixels() empfehlen. Aber anscheinend passt das nicht ganz in das Konzept der Anwendung hier. Schade. Allgemeine Anmerkung: Irgendwo in den OS-Changes habe ich gelesen, dass in irgendeiner OS-Version irgendwer meinte, es sei sinnvoll, auf einmal PMODE_V43 zum Default zu machen. Also besser nicht darauf verlassen, dass PMODE42 default ist. [ - Antworten - Zitieren - Direktlink - ] |
21.01.2008, 20:23 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat:Das Problem hat sich mit der geänderten Bitmapflags behoben. Zitat:Hab ich eben gemacht.Zitat: Zitat:Leider nicht immer. Das war wohl damals das Problem.Zitat: Zitat:Ok, das freut mich zu lesen.Zitat: Zitat:Genau das ist auch die Stelle die die ganze Zeit das Problem verursacht hat. Mit dieser kleinen Änderung läuft nun das ganze! Hab es eben mit AGA, AGA-Screen, CGX-WB 8Bit, CGX-WB >8Bit und CGX-8BitScreen getestet. Perfekt.Zitat: Zitat:Ich blitte in dieser Unterroutine alles in einen nicht sichtbaren Puffer und erst am schluss blitte ich das Feld auf den Bildschirm. Das verhindert das störende Flackern, wenn ich mehrere Bilder mit einer Maske übereinanderblitte.Zitat:Warum schreibst du es einmal so und einmal so ? Ich bin mit dem ganzen soweit sehr zufrieden, allerdings hab ich da noch eine kleine Unterroutine die immer noch nicht so ganz will. Diese generiert die Maske selbst aus dem Bild und... nunja, es läuft überall außer auf einem Customchip-WB-Screen. Ich muß mir das nochmal genauer ansehn. Ich hoffe, das ich auch mal selbst drauf komme. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
21.01.2008, 22:10 Uhr thomas Posts: 7716 Nutzer |
Zitat:Zitat:Ich blitte in dieser Unterroutine alles in einen nicht sichtbaren Puffer und erst am schluss blitte ich das Feld auf den Bildschirm. Das verhindert das störende Flackern, wenn ich mehrere Bilder mit einer Maske übereinanderblitte. Nein, ich meinte, warum rufst du die eine Routine als Unterprogramm und die andere als Funktion (junk = ...) ? Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
21.01.2008, 22:14 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Es sind zwei verschiedene Funktionen. Einmal eine die einen Rückgabewert übergibt, die andere nicht. EDIT: Um es mal etwas genauer zu schreiben: In den Includes ist festgelegt welche Funktion einen Rückgabewert zurückk gibt und welche nicht. Und genau so muß ich diese Aufrufe auch tätigen, sonst gibt der Compiler eine Fehlermeldung aus. -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 21.01.2008 um 22:16 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
21.01.2008, 22:55 Uhr Ralf27 Posts: 2779 Nutzer |
So, jetzt bringt mir nur noch die fehlerhafte Grafik in der folgenden Routine kopfschmerzen. Erst mal ein Ausschnitt aus der Routine:code:... TAGLIST tagsl&, _ DTA_GroupID&, GID_PICTURE&, _ PDTA_FreeSourceBitMap&, TRUE&, _ PDTA_DestMode&, PMODE42&, _ PDTA_UseFriendBitMap&, TRUE&, _ PDTA_Remap&, TRUE&, _ PDTA_Screen&, scr&, _ TAG_END& bild&=NewDTObjectA&(SADD(GFX$(n,1)+CHR$(0)),tagsl&) IF bild& THEN TAGLIST tagsl&, _ DTM_PROCLAYOUT&, 0, TRUE&, _ TAG_END& IF DoDTMethodA&(bild&,0,0,tagsl&) THEN TAGLIST tagsl&, _ PDTA_DestBitMap&, VARPTR(obitmapBild&), _ DTA_NominalHoriz&, VARPTR(oBreite&), _ DTA_NominalVert&, VARPTR(oHoehe&), _ TAG_END& junk=GetDTAttrsA(bild&,tagsl&) bitmapMask&=AllocBitMap&(oBreite&,oHoehe&,1,0,0) IF bitmapMask&=0 THEN Fehler=FehlerInit_Maske ELSE Farbtiefe=GetBitMapAttr&(obitmapBild&,BMA_DEPTH&) IF Farbtiefe=0 THEN Fehler=FehlerInit_Masketiefe2 ELSE REM Maske selbst generieren bb&=16*((oBreite&+15)\16) buf&=AllocVec&(200+bb&*oHoehe&,MEMF_PUBLIC&) IF buf& THEN bitmaptmp&=AllocBitMap&(oBreite&,1,Farbtiefe,0,0) IF bitmaptmp& THEN rp1&=buf& rp2&=buf&+100 InitRastPort rp1& POKEL rp1&+RastPortBitMap%,obitmapBild& InitRastPort rp2& POKEL rp2&+RastPortBitMap%,bitmaptmp& junk=ReadPixelArray8(rp1&,0,0,oBreite&-1,oHoehe&-1,buf&+200,rp2&) f=PEEK(buf&+200):REM Die Farbnummer vom ersten Pixel oben links (0,0) FOR y=0 TO oHoehe&-1 t&=buf&+200+y*bb& FOR x=0 TO oBreite&-1 POKE t&,-(PEEK(t&)<>f) INCR t& NEXT NEXT POKEL rp1&+RastPortBitMap%,bitmapMask& junk=WritePixelArray8(rp1&,0,0,oBreite&-1,oHoehe&-1,buf&+200,rp2&) FreeBitMap bitmaptmp& b=oBreite&:IF b>fx2-fx1 THEN b=fx2-fx1 h=oHoehe&:IF h>fy2-fy1 THEN h=fy2-fy1 BltMaskBitMapRastPort obitmapBild&,(oBreite&-b)\2,(oHoehe&-h)\2,rp&,xStart+(fx2-fx1-b)\2,yStart+(fy2-fy1-h)\2,b,h,&He0,PEEKL(bitmapMask&+8) ... Diese will nicht so wie es soll. Wenn es nicht klappt, dann sieht die Grafik komplett zerissen aus. In Streifen, als wenn die BytesPerRow total falsch wären. Ich überarbeite zur Zeit noch denn Sudoku-Code (das hier ist ja ein kleiner Ausriss aus dem ganzen, wie auch ganz am Anfang vom Thread), bzw. versuche meine "erlerntes" auf meine Projekte zu verteilen und alles zu verbessern/optimieren. -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 21.01.2008 um 23:46 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
22.01.2008, 00:30 Uhr Ralf27 Posts: 2779 Nutzer |
Ohoh, ich glaub jetzt ist mir klar wo hier der Pferdefuß liegt... hm, wenn ich mit den Datatypes auf einen Screen mit mehr als 8Bit remape, dann kann ich wohl kaum noch mit ReadPixelArray8() etc. mit der Bitmap arbeiten... das geht wohl nicht. Außerdem gibt es ja noch Dither und dann ist es doppelt schlecht. Also muß ich wohl erst an die Originalgrafik und aus dieser dann die map generieren und nicht aus der umgerechneten Grafik. Zsss. Auf sowas komme ich erst zu so später Stunde... Ok, das schau ich mir dann morgen an wie ich an die Originaldaten komme. Dürfte nicht so schwer sein. Jetzt aber erst mal ab in die Falle. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
22.01.2008, 11:30 Uhr thomas Posts: 7716 Nutzer |
@Ralf27: Schau dir mal cybergraphics.library/ExtractColor an. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
22.01.2008, 12:19 Uhr Ralf27 Posts: 2779 Nutzer |
Das weiter oben beschriebene Problem ist nun doch noch nicht ganz aus der Welt: Wenn ich ein und das gleiche Bild(Skin) auf der WB (AGA) mit 3Bit Farbtiefe öffne, dann sieht es richtig aus, aber wenn die WB (AGA) 8Bit hat (selbe Auflösung, andere Farbtiefe), dann sieht es wieder fehlerhaft aus: So sollte es aussehn (ca., andere Zahlen): Bild: http://home.pages.at/a1260/richtig.png Und das passiert: Bild: http://home.pages.at/a1260/fehlerhaft.png Wie kann denn das sein? Es geht um das obrige Problem, dort wird die Maske als Bild geladen. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
22.01.2008, 12:21 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Wow, sieht recht gut aus. Allerdings, was mach ich wenn ich nicht mit CybergraphX arbeite? Z.b. mit AGA? Ok, ich könnte auch eine Fallunterscheidung einbauen. -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 22.01.2008 um 12:23 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
22.01.2008, 13:06 Uhr Ralf27 Posts: 2779 Nutzer |
Ok, ich muß wohl eine Fallunterscheidung machen ob BMF_STANDARD oder nicht und jenachdem PDTA_FreeSourceBitMap FALSE oder TRUE. Seltsam, aber dann geht es. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
23.01.2008, 16:33 Uhr Ralf27 Posts: 2779 Nutzer |
Hm, das nächste Problem, diesmal mit Datatypes: Wenn ich ein Datatype geöffnet habe und das Bild wird auf einen angegeben Screen remapt, dann kann ich ja dieses Bild nicht mehr für eine Maskengenerieren benutzen. Ich brauche also das Originalbild. Jetzt fängt es aber an, wie komme ich an das Originalbild? Mit PDTA_ClassBitMap oder PDTA_BitMap komme ich auf die gleiche Bitmap wie mit PDTA_DestBitMap. Alle drei sind gleich(?!?). Wie kann das sein? Kurzer Code: code:Ich dachte mit PDTA_FreeSoureBitmap FALSE wird die Originalbitmap nicht freigegeben (was auf default ist). Aber wie komme ich denn an die Originalbitmap, ohne das ich das Bild zweimal(einmal mit Remap und einem ohne) aufrufen muß?IF GetBitMapAttr&(scrbitmap&,BMA_FLAGS&) AND BMF_STANDARD& THEN a&=FALSE& ELSE a&=TRUE& TAGLIST tagsl&, _ DTA_GroupID&, GID_PICTURE&, _ PDTA_FreeSourceBitMap&, FALSE&, _ PDTA_DestMode&, PMODE42&, _ PDTA_UseFriendBitMap&, a&, _ PDTA_Remap&, TRUE&, _ PDTA_Screen&, scr&, _ TAG_END& bild&=NewDTObjectA&(SADD(GFX$(n,1)+CHR$(0)),tagsl&) IF bild& THEN TAGLIST tagsl&, _ DTM_PROCLAYOUT&, 0, TRUE&, _ TAG_END& IF DoDTMethodA&(bild&,0,0,tagsl&) THEN TAGLIST tagsl&, _ PDTA_ClassBitMap&, VARPTR(obitmapMask&), _ PDTA_DestBitMap&, VARPTR(obitmapBild&), _ DTA_NominalHoriz&, VARPTR(oBreite&), _ DTA_NominalVert&, VARPTR(oHoehe&), _ TAG_END& junk=GetDTAttrsA(bild&,tagsl&) ... Ein Aufruf mit GetDTAttrsA() vor DoDTMethodA() um die ClassBitmap zu ermitteln bringt mir auch nix (NULL). Bzw. bringe ich bestimmt wieder einiges durcheinander. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
23.01.2008, 18:06 Uhr thomas Posts: 7716 Nutzer |
@Ralf27: Die ganzen Sachen wie PDTA_ClassBitMap, PDTA_DestBitMap, PDTA_UseFriendBitMap und PDTA_FreeSourceBitMap solltest du gleich wieder vergessen. Unter AFA OS z.B. funktioniert das z.B. gar nicht. An die benutzbare Bitmap kommst du mit PDTA_BitMap. Und um die Originalgrafik zu bekommen, mußt du die Datei nochmal öffnen, diesmal ohne PDTA_Screen und mit PDTA_Remap,FALSE. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
23.01.2008, 18:21 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Dies hatte ich schon befürchtet und auch schon gemacht. Es funktioniert. Diesmal denke sogar ich, das das nicht gerade besonderst elegant ist. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Blitprobleme... | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |