Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
meine P96screen.include läuft nicht mit debugger...
#1
hallo, hier nochmal meine bisherige, unzuverlässige Vorgehensweise, wenn ich einen RTG-Screen öffnen will. Unzuverlässig deshalb, weil das Programm offenbar bei Closescreen einfriert; allerdings nur manchmal und nur mit Debugger On.

Code:
; picasso 96 8 bit display, prepared for truecolor
; by Frank Brandis
; CHG: 25.05.2010
; CHG: 06.06.2010   ;alsreq -> fallback. new dispload/save from env:

; Function.l p96_openscreen   {num.w,w.l,h.l,d.l,m.l,t$} ;returns *scr.Screen (.l)
; Function.l p96_askforscreen {num.w,stit$,w.l,h.l,d.l}  ;ask for and opens screen, ret *scr.Screen

; Statement  dispsave {destdir$,w.l,h.l,d.l,m.l}         ;saves DisplayModeID to e.g. Env:
; Function.l dispload {srcdir$ ,w.l,h.l,d.l}             ;loads and returns DisplayID, if exists

INCDIR "blitzinc:src/"
XINCLUDE"screeninfo.ntype.bb"
XINCLUDE"screen_tags.bb"

bb2_p96display$="ENVARC:BlitzP96Modes/" ;directory for storing used GFXCard Modes to use
#p96_loadsave=1     ;set to 0 later

CNIF #p96_loadsave=1
;save given parameters of displaymode to a file usually in ENVARC:
Statement dispsave {dest$,w.l,h.l,d.l,m.l}
  Format""
  newn$=dest$+Str$(w)+"x"+Str$(h)+"x"+Str$(d)   ;"ENV:800x600x8"

  o$="$"+Hex$(m.l)                              ;$50041000

  If NOT(Exists(newn$))
    If WriteFile(1,newn$)
      FileOutput1
        NPrint o$
      CloseFile1:DefaultOutput
    EndIf
  EndIf
End Statement

Function.l dispload {src$,w.l,h.l,d.l}
  Format""
  newn$=src$+Str$(w)+"x"+Str$(h)+"x"+Str$(d)   ;"ENV:800x600x8"

  o$=""                              ;$50041000

  If ReadFile(1,newn$)
    FileInput1
      o$=Inkey$(20)
    CloseFile1:DefaultInput
  EndIf
  Function Return Val(o$)

End Function
CEND

Function.l p96_openscreen {num.w,w.l,h.l,d.l,m.l,t$}
ScreenTags num.w,t$,#Width,w,#Height,h,#Dpth,d,#AutoScroll,1,#DPen,1,#BPen,2,#DisplayID,m,#LikeWorkbench,1
; ScreenTags num.w,t$,#Width,w,#Height,h,#Dpth,d,#AutoScroll,1,#DisplayID,m
;Screen num,0,0,w,h,d,m,t$,1,2

Function Return Peek.l(Addr Screen(num))
End Function


Function.l p96_askforscreen {num.w,stit$,w.l,h.l,d.l}
SHARED bb2_p96display$

FindScreen0    ;get a screen to open asl req on

scrimem.l=AllocVec_ (SizeOf.screeninfo,#MEMF_PUBLIC|#MEMF_CLEAR)

If scrimem>0
   *scri.screeninfo=scrimem

;  *scri\width  =800 :  *scri\height =600
;  *scri\dpth   =8   :  *scri\id     =$50041000
;   dispsave {bb2_p96display$,800,600,8,$50041000}

;  *scri\width  =640 :  *scri\height =480
;  *scri\dpth   =8   :  *scri\id     =$50031000
;   dispsave {bb2_p96display$,640,480,8,$50031000}

   *scri\width  =w.l
   *scri\height =h.l
   *scri\dpth   =d.l


   CNIF#p96_loadsave=1
   res.l = dispload {bb2_p96display$,*scri\width,*scri\height,*scri\dpth}

   *scri\id     =res
   CEND

   If *scri\id=0

     *scri=ASLScreenRequest(1|2|4)   ;uncomment this to chg new mode (snoop id with scout)

   EndIf
Else
   End  ;cancel
EndIf

res.l=p96_openscreen {num.w,*scri\width,*scri\height,*scri\dpth,*scri\id,stit$}
If res
   CNIF#p96_loadsave=1
    dispsave {bb2_p96display$,*scri\width,*scri\height,*scri\dpth,*scri\id}
   CEND

   ;*sc.Screen=res
   ;Gosub main
   Use Screen num
EndIf
*scri=0
FreeVec_ scrimem.l
Function Return res
End Function


;
;test.l= p96_askforscreen{1,"testscreen",800,600,8}

;If test
;  Delay_150

;  CloseScreen 1
;EndIf

;NPrint Hex$(test)
;MouseWait
;End


das folgende wird bei Verwendung der load/save Option in Envarc: gespeichert:
Code:
envarc:blitzp96modes
   800x600x4
   720x576x24
   800x600x5
   896x600x8
   896x600x24
   800x600x24
   640x480x24
   1152x768x8
   1152x768x24
   1280x854x8
   1280x854x24
   1024x768x8
   1024x768x24
   800x600x8
   720x480x8
   720x480x24
   640x480x8

wer sieht was Illegales/falsches? Wie gesagt, es funktioniert eigentlich. Ich wüßte nur gerne, warum es manchmal eben nicht funktioniert. Ich glaube ja, mein ASL-Screenrequest wird manchmal getrasht, weil ich zum Teil Einträge wie dieses hier finde:

22230303x4202020x2048 oder so. Da ging dann irgendwas schief?
Amiga. Just to let ya know....
Zitieren
#2
Hier ein Beispielbild (Crash)

[Bild: evtt.png]

und eines ohne Probleme:

[Bild: 71mq.png]
Amiga. Just to let ya know....
Zitieren
#3
Das Bildschirmaussehen ist nicht das gewöhnliche. Läuft da vielleicht VisualPrefs? Das hat mit Blitz viele Abstürze verursacht.
Zitieren
#4
Bin nicht sicher. Ich habe aber noch wo anders ein Problem, auch mit ASl(Filerequest), da wird der String von Buttons getrasht. Ich nehme daher an, daß die von mir verwendete ASllib zu alt und buggy ist.
Amiga. Just to let ya know....
Zitieren
#5
Bin mir mittlerweile recht sicher, daß die ASL.lib der Auslöser ist. Ich werde daher den ASL-Code "selbst" machen, mal sehen.
Amiga. Just to let ya know....
Zitieren
#6
asl.include?
Zitieren
#7
Der Wanderer schrieb:asl.include?
Hm, müßte ich mal nachsehen. Wahrscheinlich alles nach BB2 rückkonvertieren? Referenzen auf andere Includes entfernen usw...
Schaue ich mir auf jeden Fall mal an. Wink
Amiga. Just to let ya know....
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste