DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Search | [ - Search - New posts - Register - Login - ] |
|
||||||
Ralf27
User
2008-01-27, 23:03 h [ - Direct link - ] |
topic: Rekrusives durchsuchen von Verzeichnissen
Board: Programmierung Zitat:Zja, irgendwie sollte ich das schon machen. Aber ich schaff denn Absprung nicht. Ich schaff es einfach nicht... Ok, also mit AllocDosObject()... hm, ist schon echt seltsam. Kurz mal die bescheidene Frage: Es muß also eine Adresse sein, die nicht nur gerade ist, sondern auch durch 4 teilbar? Jedenfalls hab ich das so verstanden. Mal sehn, wie ich das mit AllocDosObject() mach. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 22:34 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Zitat:Ich hab denn entsprechenden Abschnitt gerade gepostet. Ich denke auch, das der Bug da sich nicht lange verstecken kann. Ich dachte wirklich bis jetzt immer, das für mich als MaxonBasic-Progger mir OS4 für immer verschlossen wäre. Aber dabei war das nur meine "Programmierweise". Na, da bin ich ja beruhigt. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 22:21 h [ - Direct link - ] |
topic: Rekrusives durchsuchen von Verzeichnissen
Board: Programmierung Ich hab folgenden Code, der leider wohl das System instabil macht: code:DEFINT a-z REM $INCLUDE Exec.bh REM $INCLUDE DOS.bh REM $INCLUDE Intuition.bh LIBRARY OPEN "dos.library" LIBRARY OPEN "intuition.library" LIBRARY OPEN "exec.library" CONST MaxSkins=200 CONST MaxEbenen=10:REM maximale Verzeichnisstiefe CONST MaxDirs=100 :REM maximale Anzahl Verzeichnisse pro Verzeichniss DIM Skin$(MaxSkins,1) DIM DIR$(MaxEbenen,MaxDIRs),DIRCount(MaxDIRs),DirNr(MaxDIRs) SCREEN 1,640,512,1,4 WINDOW 2,,,128,1 ASkins=0 FIBlock&=AllocVec&(FileInfoBlock_sizeof%,MEMF_PUBLIC&) DIR$(0,0)="Daten" DIRCount(0)=0 DIRNr(0)=0 Ebene=1 WHILE Ebene v$="" FOR x=0 TO Ebene-1 v$=v$+DIR$(DIRCount(x),x) IF x<Ebene-1 THEN v$=v$+"/" NEXT PRINT v$ FileLock&=Lock&(SADD(v$+CHR$(0)),ACCESS_READ&) IF FileLock&=0 THEN Var$=STR$(IOErr$) PRINT "Fehler_SkinlisteLaden" Ebene=0 ELSE Status=Examine(FileLock&,FIBlock&) WHILE Status Status=ExNext(FileLock&,FIBlock&) IF Status THEN FileName$=PEEK$(FIBlock&+fib_FileName%) IF PEEKL(FIBlock&+fib_DirEntryType%)>0 THEN PRINT "(verzeichniss)"FileName$ INCR DIRNr(Ebene) DIR$(DIRNr(Ebene),Ebene)=FileName$ ELSE PRINT"(file)"FileName$ IF RIGHT$(FileName$,4)=".dat" THEN INCR ASkins Skin$(ASkins,0)=MID$(FileName$,1,LEN(FileName$)-4) Skin$(ASKins,1)=v$+"/" END IF END IF END IF WEND UnLock FileLock& END IF WeitereDIRs: IF DIRCount(Ebene)<DIRNr(Ebene)THEN INCR DIRCount(Ebene) INCR Ebene ELSE WHILE Ebene DIRNr(Ebene)=0 DIRCount(Ebene)=0 DECR Ebene IF Ebene THEN IF DIRCount(Ebene)<DIRNr(Ebene)THEN WeitereDIRs WEND END IF WEND IF ASkins=0 THEN PRINT "Fehler_SkinlisteKeine" IF ASkins>1 THEN REM Sortiere Skinliste FOR x=1 TO ASkins-1 t$=Skin$(x,0):z=x FOR y=x+1 TO ASkins IF Skin$(y,0)<t$ THEN t$=Skin$(y,0):z=y NEXT SWAP Skin$(x,0),Skin$(z,0) SWAP Skin$(x,1),Skin$(z,1) NEXT END IF FreeVec FIBlock& Dies ist ein veränderter Code aus Sudoku, der das Daten-Verzeichniss durchsucht. Leider verursacht diese Routine ein instabiles System. Ich hab mir mal die AutoDocs durchgenommen und dort steht, das man FiBlock mit AllocDosObject() generieren soll?!? Info: Der Programm oben wurde verändert(mit Prints versehn, etc.). Die Masterfrage: Wo issen da der Fehler? -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 22:13 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Zitat:Ein bekannter Fehler, dessen Problem ich bis jetzt nicht richtig korrigieren konnte. Ich hab erst mal eine Korrekturmöglichkeit im ToolType des Programms eingebaut: YPOS=-10 Somit kann man es korrigieren. Ist nicht das Gelbe vom Ei, muß mal richtig gemacht werden. Es kann auch sein das ein anderer Wert gesetzt werden muß... Zitat:Das freut mich sehr zu lesen. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 22:11 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Zitat: Das liest man gerne. Auf einem Classic-System scheint es auch keine größeren Probleme zu geben, allerdings macht die Dirscan-Routine wohl etwas Probleme, gerade auf OS4. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 21:17 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Ich kann sie dir direkt per email senden -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 20:56 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Zitat:Hm, die dos.lib? Da kommt mir gerade das Krübeln, da mir noch ein Problem beim rekrusiven durchsuchen des Daten-Verzeichnisses gemeldet wurde. Ich hab da so ein Verdacht: Die Grundlagen hab ich aus einem Buch aus OS1.2-Ära, das ein Verzeichniss ausliest. Wenn ich das gerade richtig gesehn habe, soll man sich den Speicher für FIBlock mit AllocDosObjekt() statt mit AllocVec() reservieren?!? Ich muß mir das mal gennauer ansehn, bzw. ist das wieder ein Fall für die "Programmieren"-Rubrik. Zitat:PRINT, ja, gibt es auch bei MaxonBasic. Zitat: Also, wenn der Fehler aus der dos.lib kommt, dann dürfte wirklich die rekrusive Verzeichnissdurchsuchung schuld sein. Ok, zum testen könnte ich ja mal eine Version *ohne* diese routine anbieten, um es mit OS4 zu testen. Wer möchte ne Testversion? -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 18:38 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Zitat: Das dürfte Vergangenheit sein. Die aktuelle Version von der Homepage ist vom 23.01.08. Ich hoffe, das ich da diesen Fehler drausen habe. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 18:15 h [ - Direct link - ] |
topic: tcp -> richtige Programmierung
Board: Programmierung Leider bekomme ich das übertragen und empfangen der Packets *ohne* Warten via bsd nicht auf die Reihe. Die Doku ist wirklich übermächtig und als Laie wird man da irgendwie erschlagen. Ich könnte da echt Eure Hilfe gebrauchen. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 18:07 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Das Programm ist in MaxonBasic geschrieben worden. Es ist wohl immer noch so, das MaxonBasic-Programme generell nicht mit OS4 laufen. Das liegt wohl am Compiler. Jedenfalls ist das mein letzter Informationsstand. Hab hier leider kein OS4 zum testen. Ich hoffe aber, das es mit MorphOS, WinUAE, Classic (mit und ohne Grafikkarte) läuft. Also, bitte mal fleisig testen. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-27, 12:50 h [ - Direct link - ] |
topic: Programm testen
Board: Amiga, AmigaOS 4 Ich hab auf der folgenden Seite ein kleines Programm (WBSudoku), das noch einige Fehler hat, besonderst bei der Grafik. Ich hoffe aber, das ich diese Fehler endlich alle beseitigt habe (jedenfalls treten diese bei mir nicht mehr auf). Allerdings gibt es wohl noch einen Bug bei der rekrusiven Skinsuche und eben ist mir auch ein Fehler bei der Netzwerkauswahl aufgefallen. Aber vorallem würde mich interesieren ob jetzt die Grafik wirklich richtig funktioniert. Dafür gibt es auf der folgenden Seite einmal das Hauptprogramm(SudokuMain) und noch einige Skins, die man auch einzeln runterladen kann. Das im Hauptprogramm beigefügte Skin ist leider nicht gerade das Gelbe vom Ei und ratet mal wer diese Grafik gemacht hat... http://home.pages.at/a1260/EigenePage/Download/Sudoku/Index.htm Also, schreibt einfach mal eine Bugliste, die hoffentlich nicht zu lang ist und ich mach mich mal dran die kleinen Käfer zu entfernen. Falls auch jemand Lust hat Skins zu pixeln, viel Erfolg. EDIT: Läuft wohl nicht mit OS4 -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 27.01.2008 um 19:49 Uhr geändert. ] |
|||||
Ralf27
User
2008-01-23, 18:21 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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 |
|||||
Ralf27
User
2008-01-23, 16:33 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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 |
|||||
Ralf27
User
2008-01-22, 13:06 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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 |
|||||
Ralf27
User
2008-01-22, 12:21 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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. ] |
|||||
Ralf27
User
2008-01-22, 12:19 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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 |
|||||
Ralf27
User
2008-01-22, 00:30 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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 |
|||||
Ralf27
User
2008-01-21, 22:55 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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. ] |
|||||
Ralf27
User
2008-01-21, 22:14 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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. ] |
|||||
Ralf27
User
2008-01-21, 20:23 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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 |
|||||
Ralf27
User
2008-01-21, 00:07 h [ - Direct link - ] |
topic: A1200 serielle Schnittstelle Geschwindigkeit
Board: Amiga, AmigaOS 4 Es sind ca. 330.000Baud drin am original Ser-Port. Jedenfalls hab ich das damals dauerhaft zwischen meinen Amigas gehabt. ->Twin (siehe link weiter oben). -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-20, 23:46 h [ - Direct link - ] |
topic: Blitprobleme...
Board: Programmierung 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. ] |
|||||
Ralf27
User
2008-01-17, 20:46 h [ - Direct link - ] |
topic: Seek-Problem
Board: Programmierung Zitat: Ist wirklich recht lange her, das ich mal die Disketten im Laufwerk hatte, aber größe Demoquellcodes... hm, daran kann ich mich nicht erinnern. Wie schon geschrieben, es war und ist sehr spartanisch. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-17, 13:30 h [ - Direct link - ] |
topic: Erfahrungen mit "nichttragenden Wänden"
Board: Get a Life Zitat: Vom Preis her wäre Ytong schon recht teuer, KS wäre wohl am besen, vor allem im Keller, da dort das Eigengewicht quasi keine Rolle spielt. Wenn jetzt die übereinanderliegenden Wände mit 11,5er KS (am besten KSL wegen dem Gewicht, aber KSR schlucken besser denn Schall, da Vollmaterial, aber auch dadurch wieder schwerer). Aber dann ist es auch wieder fraglich ob man die Decke massiv untermauern darf, bzw. damit abstützen. Es gibt ja auch Decken, die Schwingen müssen. Ist alles gar nicht so einfach was passendes zu finden. Stellwände... nunja, sehen wirklich billig aus. Ich dachte auch daran später Rauputz rein zu machen. Irgendwie mag ich halt keine Tapeten. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-15, 22:45 h [ - Direct link - ] |
topic: Seek-Problem
Board: Programmierung Zitat:Hab ich. In der Vollversion sind gerade mal die ganzen Includes dabei, ein paar Demos und fertig. Und das Handbuch zu MB ist spartanischer als das von AmigaBasic. Nicht gerade berauschend. Zitat:Es ist halt sehr schade das man am MBasic-Compiler nix machen kann und auch nix machen darf. Nochmal wegen denn Variablen und der Berechnung: Wenn man mit Integer rechnet, dann sind die Berechnungen wesentlich schneller. Somit denke ichh (ja, is wieder eine Vermutung, böse ), das MB dann intern das ganze anderst berechnet. Ist zwar dann schneller, aber insgesamt noch recht langsam. Ich kann schon verstehn das MaikG sich jetzt mit C versucht. Vom Speed her liegen da Welten. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-15, 07:35 h [ - Direct link - ] |
topic: Samba/AmigaNet Center Umlaute anzeigen
Board: Amiga, AmigaOS 4 Zitat: Da ist wohl die Amigawelt größer als man denkt. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-14, 20:16 h [ - Direct link - ] |
topic: Seek-Problem
Board: Programmierung Ich hab ja nicht vor zu schreiben, sondern will nur lesen. Deswegen denke ich, das ich somit eigentlich höchstens falsche Daten lese, wenn Seek nicht richtig läuft. @Holger: Kurz nochmal zu MB: Mir ist jetzt schon klar was du meinst. Aber nochmal ein kleines Beispiel: a&=32^2-1 a&=32&^2&-1 Das erste erst eine Fehlermeldung, das zweite nicht. Eigentlich müßte dann ja beides eine Fehlermeldung bringen, denn das Ergebniss ist bei beiden falsch. Wenn ich jetzt mit # arbeite (doppelt genaue Zahlen), dann geht es richtig. Ich hoffe aber nur, das ich damit nicht neue Probleme aufwerfe... Und nochmal wegen intern mit doppelt genauer Zahl: MB -> ARG Wieso macht dann MB intern so ein Käse? Um das Programm zu bremsen?!? -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-13, 19:04 h [ - Direct link - ] |
topic: Seek-Problem
Board: Programmierung Zitat:Ich bin mir nicht sicher, das ist es ja. Es ist aber auch so, das ich eine Zahl angezeigt bekomme, die 4GB groß ist. Es ist mir aber auch egal, es ULONG oder LONG LONG ist. Aber ich bin mir nicht sicher, ob ich damit auch arbeiten "darf". Zitat:Ja, die Aussage kommt mir sehr bekannt vor, ist aber nicht von mir. Von mir kommt eher das Gegenteil. MBasic ist die zweitlangsamste Sprache die ich kenne. Langsamer ist nur AmigaBasic. Zitat:Es gibt aber auch noch LONG LONG, aber ich bezweifle irgendwie, das MBasic das kennt. Zitat:Das stimmt schon. Aber seltsamerweise geht das nur mit Zahlen, mit Variablen nicht so ganz. Ich Blick da nicht durch. Wegen dem Beispiel: Wenn ich dem Compiler mit & sag, das es ein LONG ist, dann bekomme ich ja damit eigentlich ein Überlauf. a& wäre dann negativ. Dummerweise finde ich im MBasic keine Beschreibung des gültigen Bereichs. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-13, 15:38 h [ - Direct link - ] |
topic: A1200 serielle Schnittstelle Geschwindigkeit
Board: Amiga, AmigaOS 4 Moment, im Aminet liegt es doch: http://aminet.net/misc/emu/TWINEXPRESS.lha Das ist es. Wegen 330.000 Baud: In der Beschreibung steht dies nicht drin, es geht aber. Einfach einstellen und es geht der Punk ab. -- http://www.alternativercomputerclub.de.vu |
|||||
Ralf27
User
2008-01-13, 15:36 h [ - Direct link - ] |
topic: A1200 serielle Schnittstelle Geschwindigkeit
Board: Amiga, AmigaOS 4 Zitat:Sicher? Mehr als 330.000Baud? Zitat: Keine Ahnung wo ich damals Twin herbekommen habe. Kann es dir ja mal senden. Das bringt aber die serielle mit 330kbaud richtig zum Kochen Sogar mit einem 030er, denn einen 030er hatte damals mein kleiner Amiga. -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 13.01.2008 um 15:39 Uhr geändert. ] |
|||||
|
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |