meine P96screen.include läuft nicht mit debugger... - hackball - 03.02.2014
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?
Re: meine P96screen.include läuft nicht mit debugger... - hackball - 03.02.2014
Hier ein Beispielbild (Crash)
und eines ohne Probleme:
Re: meine P96screen.include läuft nicht mit debugger... - idrougge - 15.12.2014
Das Bildschirmaussehen ist nicht das gewöhnliche. Läuft da vielleicht VisualPrefs? Das hat mit Blitz viele Abstürze verursacht.
Re: meine P96screen.include läuft nicht mit debugger... - hackball - 15.12.2014
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.
Re: meine P96screen.include läuft nicht mit debugger... - hackball - 06.04.2015
Bin mir mittlerweile recht sicher, daß die ASL.lib der Auslöser ist. Ich werde daher den ASL-Code "selbst" machen, mal sehen.
Re: meine P96screen.include läuft nicht mit debugger... - Der Wanderer - 07.04.2015
asl.include?
Re: meine P96screen.include läuft nicht mit debugger... - hackball - 11.04.2015
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.
|