amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Search [ - Search - New posts - Register - Login - ]

First << 16 17 18 19 20 -21- 22 23 24 25 26 >> Last Search results: 2779 hits (30 per page)
Ralf27   User

2008-01-27, 23:03 h

[ - Direct link - ]
topic: Rekrusives durchsuchen von Verzeichnissen
Board: Programmierung

Zitat:
Original von Kaesebroetchen:
P.s. Warum steigst du eigentlich nicht auf C um ? Dann könntest du dein Programm für alle Amiga-artigen System kompilieren.

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:
Original von whose:
Bedeutet ja auch, daß Du MaxonBasic-Programme relativ problemlos unter OS4 laufen lassen kannst, was ich mir schon irgendwie dachte. OS4 ist, wie schon gesagt, enorm pingelig, was definitive Fehler angeht, Schludern ist da nicht mehr ;)

Die Dateisuche kannst Du ja mal im Programmieren-Forum posten, dann kommen wir dem Problem sicher schnell auf die Spur

Also: weitermachen :D

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. :D
--
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:
Original von whose:
@Ralf27:

Also, MaxonBasic ist ausnahmsweise mal unschuldig :D Es läuft unter OS4, hat allerdings noch kleinere Probleme mit den Koordinaten der Grafik, vermutlich wegen der geänderten Fenster-Parameter wie Randbreite u.Ä.

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:
Man kanns aber spielen und soweit funktioniert alles prima und ohne weitere Reaper :)
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:
Original von RetroMan:
Habs gerade mal unter AmigaSys auf meinem A4000D ausprobiert, hab nix zu meckern :bounce:
--
-> http://www.german-amiga-community.de <-


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:
Original von whose:
Ich bin zwar selbst noch nicht zum Testen gekommen, aber ich würde anhand des Crashlogs nicht unbedingt MaxonBasic die Schuld zuschieben. Der letzte Eintrag beim 68k-StackTrace zeigt an, daß der Hit irgendwo aus einer der Funktionen der dos.library resultiert. Das dürfte auch einen Grund haben, den es meiner Meinung nach zu erforschen gilt.

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:
Um nicht doch wegen eines durchaus möglichen Fehlers von MaxonBasic unendlich lang danach zu suchen könntest Du ja ein kurzes Testprogramm bauen, welches einfach nur einen kurzen Text z.B. mittels Printf() ausgibt (ein dos.library-Makro normalerweise, keine Ahnung, ob MaxonBasic das auch zur Verfügung stellt).
PRINT, ja, gibt es auch bei MaxonBasic.
Zitat:
Wenn das unter OS4 tut, dann kommt der Fehler bei WBSudoku mit hoher Wahrscheinlichkeit doch aus dem Programm selbst.

OS4 fängt die "sonst üblichen" Programmierfehler wesentlich genauer, als OS3 mit den üblichen Debug-Tools oder MOS es tun. Ein Lesezugriff über den eigenenen Speicher hinaus beispielsweise fällt unter OS3/MOS gar nicht auf, unter OS4 zieht das einen fortsetzbaren DSI nach sich, und wenns nur ein Byte ist, das man zu viel liest. Natürlich "knallt" es auch sofort, wenn man irgendwo unerlaubte Parameter wie Null-Zeiger u.Ä. übergibt, oder Zeiger auf Speicher, in dem man eigentlich nichts zu suchen hat ;)


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:
Original von DaxB:
@Ralf27:
Wenn du dich noch an meinen Bugreport erinnerst, war hier unter OS3.1 es so, das beim starten MuForce Hits (ich glaub endloss wars) ausgegeben wurden. Das fing aber erst ab einer bestimmten Version an.


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... I-)

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:
Original von thomas:
@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/


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:
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&)
 ...

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ß?

Ein Aufruf mit GetDTAttrsA() vor DoDTMethodA() um die ClassBitmap zu ermitteln bringt mir auch nix (NULL). Bzw. bringe ich bestimmt wieder einiges durcheinander. :glow:
--
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:
Original von thomas:
@Ralf27:

Schau dir mal cybergraphics.library/ExtractColor an.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/


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... :glow:

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:
Original von thomas:
Zitat:
Zitat:
Warum schreibst du es einmal so und einmal so ?
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/


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:
Original von thomas:
Zitat:
dann geht einfach alles schief

Hast du mal einen Screenshot ?

Das Problem hat sich mit der geänderten Bitmapflags behoben.
Zitat:
Zitat:
scr&+ScreenBitMap% ist auch nicht das feine vom Ei. Hab ich eben gesehn, werd ich auch umändern.

Unbedingt. Ganz besonders, wenn du mit Grafikkarten-Bitmaps arbeitest.

Hab ich eben gemacht.
Zitat:
Zitat:
PDTA_DestMode&, PMODE42&,

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:
PDTA_UseFriendBitMap&, a&,

Das kannst du dir sparen. Wenn du einen Screen angibst, wird ohnehin das Pixelformat des Screens genommen (bei V43).


Zitat:
PDTA_DestMode&, PMODE42&, _
[...]

Hab ich auch mal weg gelassen, bringt auch nichts.


Klar. V42 ist Default. Weglassen bringt keine Änderung.

Leider nicht immer. Das war wohl damals das Problem.
Zitat:
Zitat:
Mask&=PEEKL(bitmapMask&+8):REM <- hier bin ich mir nicht so ganz sicher, ob es "legal" ist

Anders geht's ja nicht.

Ok, das freut mich zu lesen. :)
Zitat:
Zitat:
BitmapBuffer&=AllocBitMap&(b,h,Farbtiefe,BMF_INTERLEAVED&,scr&+ScreenBitMap%)

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.

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:
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)

Warum schreibst du es einmal so und einmal so ?
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.


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. :D 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:
Original von Holger:
Zitat:
Original von Ralf27:
Hab ich. In der Vollversion sind gerade mal die ganzen Includes dabei, ein paar Demos und fertig.

Sind die Demos in der Vollversion wenigstens im Basic-Sourcecode? Bei den "Demos" der Version aus dem Aminet wusste ich irgendwie nicht, was sie denn eigentlich demonstrieren sollten...

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:
Original von DaxB:
@Ralf: Am besten du lässt dir mal die verschiedenen Möglichkeiten ausrechnen (Preis).

Was den Schall betrifft ist wohl Kalksandstein am besten wegen der hohen Dichte. Allerdings sollte man dann auch den evtl. entstehenden Körperschall berücksichtigen. Den hat man bei einer Leichtbauwand so gut wie gar nicht.


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:
Original von Holger:
Schon mal den Liefer"umfang" der Demo-Version angesehen?

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:
Man könnte da bestimmt so einiges optimieren, vielleicht wird es ja auch. Man kann relativ leicht das beobachtete Verhalten nachbilden, ohne echte double-Berechnungen anstellen zu müssen. Allerdings bezweifle ich, angesichts der restlichen Qualität von MBasic, dass das passiert.
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 :lach: I-) ), 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:
Original von dandy:
Ähem - ist jetzt wahrscheinlich 'ne blöde Frage - aber was ist "AmigaNet Center"?

Hab' ich ja noch nie von gehört...


Da ist wohl die Amigawelt größer als man denkt. :D I-)
--
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:
Original von Holger:
Irgendwie kehrt alles immer wieder. Das immer wiederkehrende Thema der unzulässigen Annahmen, und dann hatten wir auch das Thema "welche Operation liefert welchen Datentyp zurück" auch erst vor relativ kurzer Zeit, damals mit der Division.

Die Annahme, dass es sich hier um ULONG handelt, beruht worauf?

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:
Naheliegender ist wohl, dass es sich um einen Floating-Point Typ handelt, wie es ihn in MBasic auch gibt. In dem führt Basic alle Berechnungen durch (hat mal irgendwer gesagt, MBasic wäre "fast so schnell wir C"?...)
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:
Deshalb kannst Du auch
PRINT 2&^32&*100&
schreiben und bekommst das richtige Ergebnis angezeigt. Was das wohl für ein Datentyp ist, SUPERLONG? ;)
(Probier mal PRINT 2&^32&*100000000&)

Es gibt aber auch noch LONG LONG, aber ich bezweifle irgendwie, das MBasic das kennt. :)
Zitat:
Und deshalb gibt es auch keine Warnung, wenn Du
a&=2&^32&
schreibst. Schließlich hast Du den Compiler explizit gesagt, dass das Rechenergebnis nach LONG konvertiert werden soll...

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:
Original von eliotmc:
Also mit Multiface&Co ist sicherlich mehr drin,
aber mit der OnBoard Seriell habe ich nie mehr als
19600 baud geschafft auf meinem A1200/030 mit 8n1.device.
Das originale Device hängt sich nach einer Zeit auf mit Term.

Sicher? Mehr als 330.000Baud?
Zitat:
Twin kannte ich noch garnicht, ich habe es im Aminet
gesucht, bin aber nicht fündig geworden?!


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. ]
 
 
First << 16 17 18 19 20 -21- 22 23 24 25 26 >> Last Search results: 2779 hits (30 per page)

Search terms
keywords      username
Search options
Only search these boards
   match whole words only
show only titles
show all results

.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.