Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 50
» Neuestes Mitglied: Robertfex
» Foren-Themen: 203
» Foren-Beiträge: 2.167

Komplettstatistiken

Benutzer Online
Momentan sind 46 Benutzer online
» 0 Mitglieder
» 46 Gäste

Aktive Themen
Blitz Profiler v1.0
Forum: Showcase
Letzter Beitrag: hackball
Gestern, 19:06
» Antworten: 2
» Ansichten: 10
AmiBlitz3 Release: FPU-fr...
Forum: News
Letzter Beitrag: hackball
Gestern, 18:56
» Antworten: 3
» Ansichten: 45
Updated ShapesMaker
Forum: Showcase
Letzter Beitrag: hackball
19.11.2019, 20:25
» Antworten: 9
» Ansichten: 13.698
MUI: ImageButton (irgendw...
Forum: Showcase
Letzter Beitrag: hackball
10.11.2019, 20:52
» Antworten: 2
» Ansichten: 666
Amos2Blitz?
Forum: Showcase
Letzter Beitrag: hackball
10.11.2019, 20:35
» Antworten: 9
» Ansichten: 2.015
Argument in String Parsin...
Forum: Snippets & Libraries
Letzter Beitrag: hackball
10.11.2019, 20:20
» Antworten: 0
» Ansichten: 120
Lemmings-like multi-obj
Forum: Snippets & Libraries
Letzter Beitrag: hackball
19.10.2019, 01:45
» Antworten: 0
» Ansichten: 275
just some pixel art
Forum: Showcase
Letzter Beitrag: bruZard
19.09.2019, 20:11
» Antworten: 6
» Ansichten: 1.536
MUI TextEditor. THE Ted.
Forum: Showcase
Letzter Beitrag: hackball
08.09.2019, 01:24
» Antworten: 0
» Ansichten: 474
I²C Sensor-Logger
Forum: Showcase
Letzter Beitrag: hackball
25.08.2019, 21:25
» Antworten: 1
» Ansichten: 784

 
Big Grin Blitz Profiler v1.0
Geschrieben von: hackball - 08.12.2019, 20:07 - Forum: Showcase - Antworten (2)

Ohje, ich hab endlich wieder ein Projekt fertig! Cool 

Und zwar hatte ich mal letztes Jahr in einem Forum einen PROFILER für Blitzbasic2 angedeutet. Der war im Prinzip damals schon fertig, ich mußte nur noch die Zeitmessung dazubauen. Da half mir dann noname/haujobb aus.

Wieauchimmer, ich habe es jetzt (mit den gegenwärtigen Spezifikationen) fertig.

Über die Distribution muß ich noch nachdenken, ist ja kein OpenSource aber kosten soll es natürlich auch nix.
Vielleicht ein Precompile-Include oder so.

Was tut es?

Es stellt einfache Methoden zur Verfügung, benutzte Prozeduren zu zählen und die darin verbrachte Zeit zu messen.
(man muß natürlich die für das Profiling selbst benutzte Zeit im Auge behalten).

Dafür fügt man in jede zu überwachende Prozedur einen "Entry" und am Ende einen "Exit" Aufruf ein.

Am Ende kann man (bisher) ein paar Statistiken ausgeben:

   

Schaut mal unten auf das Beispiel, das ist kurz und verständlich.

Da ist natürlich eine GUI geplant, und statistische Auswertungen und und und.

Ist vielleicht ganz sinnvoll?


Code:
;
;test of stat/debug/ profiler possibilities
;
;by frank brandis, germany
;
;the symbols have obscure names to not interfere
;  with others, as this is supposed to be "invisible",
;  like an include or something
;
;todo: add timer stuff to really measure somethin
;      add memdump/save instead of array()
;      add gui
;history
;      done timing support
;      seems like we are shipping this version!
;      08.DEC.2019

INCDIR  "BlitzINC:src/"
XINCLUDE"profiler_v06.bb"

;#############################################################

;CONTENS


;#bb__profilerON  =1    ;0=OFF

;#bb__PRO_maxfuncs=100

;Macro bbPRO_EntryFunc  ; {uniqueidname, display name of func}
;Macro bbPRO_ExitFunc

;Macro ProfilerStatsCLI

;including timer
;Macro bbPRO_EntryFuncT ; {uniqueidname, display name of func}
;Macro bbPRO_ExitFuncT
;

;#############################################################

.setup


#bb__profilerON = 1
.
.Test_Case


._testfunc
Statement testfunc1 {}

!bbPRO_EntryFuncT{tfunc1,"STAT: testfunc1"}

;---this is the original funcs routine--------------
NOP
Delay_5
;---------------------------------------------------

!bbPRO_ExitFuncT
End Statement

Statement testfunc2 {}

!bbPRO_EntryFuncT{tfunc2,"STAT: testfunc2"}

;---this is the original funcs routine--------------
NOP
Delay_5
;---------------------------------------------------

!bbPRO_ExitFuncT
End Statement


.main
CNIF #bb__profilerON
  bb_pro_starttimer{}
CEND

For a=1 To 5         ;runs our testfunction 5 times
  testfunc1{}
Next a

testfunc2{}          ;runs only one time

CNIF #bb__profilerON

!ProfilerStatsCLI    ;put out statistics

; For a=1To 10

;  NPrint "Time out:", bb_pro_gettime{}
;  Delay_5

; Next

CEND

NPrint "click mouse"

MouseWait

Drucke diesen Beitrag

  AmiBlitz3 Release: FPU-frei!
Geschrieben von: hackball - 04.12.2019, 21:30 - Forum: News - Antworten (3)

Offenbar hat jemand (Sven Dröge) die FPU-Abhängigkeiten rausgebaut!

Sehr fein, vielen Dank!

https://github.com/AmiBlitz/AmiBlitz3

SourceCode des 3.7 Release ist hier:

https://github.com/AmiBlitz/AmiBlitz3/re...tag/v3.7.0

Drucke diesen Beitrag

Star Argument in String Parsing, rekursiv
Geschrieben von: hackball - 10.11.2019, 20:20 - Forum: Snippets & Libraries - Keine Antworten

Ich habe mal ein simples Beispiel vorbereitet, das einzelne Teile aus einem String herauslöst. Man kann das z.B. benutzen als Argumentparser, Wortzähler usw..

Es nutzt hier nur Leerzeichen als Trenner, man kann das aber natürlich anpassen auf ganze Strings von Worttrennern, wenn man will.

Code:
;CMD parse test by f.brandis
;

DEFTYPE.w

;parsetest cmds

cmd$="dump from %s to           %d    a b cde 4 6 jj m , . ."

NPrint ">",cmd$,"<"


Function.w stripnparse{inp$}         ;recursive!

 SHARED nums

 inp$=StripLead$(inp$,32)           ;strip leading SPC

 If inp$="" Then Function Return0   ;nothing left!

 spc1.w=Instr(inp$," ")             ;another separator?

 If spc1>1                          ;any SPC at the end of this inp$?

   arg1$=Mid$(inp$,spc1)

   out$ =Left$(inp$,spc1-1)

   Gosub _strpnprsprt

   ok=stripnparse{arg1$}            ;down the rabbit hole...

 Else                               ;rest is an arg.

   out$=inp$

   Gosub _strpnprsprt

 EndIf


 Function Return nums               ;global count

_strpnprsprt:

 nums+1

 NPrint "Arg"+Str$(nums)+": >",out$,"<"

Return

End Function

NPrint "#args: ",stripnparse{cmd$}

MouseWait

End

CloseEd
   

Drucke diesen Beitrag

Wink Lemmings-like multi-obj
Geschrieben von: hackball - 19.10.2019, 01:45 - Forum: Snippets & Libraries - Keine Antworten

Hier mal ein Beispiel für eine Multi-Objekt (lemmings-like) Verwaltung(sehr simpel!).


WTF Wo ist mein Anhang?? Warum kann ich kein LHA anhängen??

   
Code:
;My Own Lemmings!!!!!

;-By F.Brandis
WBStartup:NoCli:CloseEd
BitMap1,320,256,4:BitMap0,320,256,4

dr$="blitzinc:_dat/"

LoadShapes0,dr$+"Lemms.shp"

dr$="blitzinc:_dat/iff/"

LoadBitMap0,dr$+"LemLev_b.iff",0

dr$="blitzinc:_dat/sfx/"

LoadSound0,dr$+"Lemm-Letsgo.sfx"

LoadSound1,dr$+"Lemm-Aehh!.sfx"
CopyBitMap0,1
VWait50
BLITZ
Slice0,44,4
Show0:Use Palette0

NEWTYPE.lemming
lemx.w
lemy.w
lemm.b       ;frame
dir.b
fall.b

bcount.b  ;new: bouncecount
End NEWTYPE

DEFTYPE.w

lan.b=40


Dim List l.lemming(lan)
USEPATH l()
While AddItem(l())
 Gosub randomlem
Wend

Buffer0,(lan+1)*50*5
Buffer1,(lan+1)*50*5
Sound0,15

Repeat

Show db.b:db=1-db:Use BitMap db
VWait:UnBuffer db
;o.b+1:If o>100Then Sound1,15:o=0
ResetList l()

While NextItem(l())
If Point(\lemx,\lemy+5)<4
  \lemy+2
  If \fall=3
    \lemm+1
    If \lemm<18
      \lemm=18
    Else
      If \lemm>21Then \lemm=18
    EndIf
  Else
    \fall+1
  EndIf

Else
  \fall=0

  Select \dir
    Case1
      \lemm+1:If \lemm>8Then \lemm=0
      If Point(\lemx+2,\lemy)>3           ;boing! hit wall
        If Point(\lemx+2,\lemy-1)=0
         \lemy-2
         If Point(\lemx+2,\lemy)>0
           \lemy-2
         EndIf
        Else
         \dir=2:\lemx-2
         \bcount+1
        EndIf
      Else
       \lemx+1
      EndIf
   Case2
      \lemm-1
      If \lemm<9
         \lemm=17
       Else
         If \lemm>17 Then \lemm=17
       EndIf
      If Point(\lemx-2,\lemy)>3           ;boing! hit wall
        If Point(\lemx-2,\lemy-1)=0
         \lemy-2
         If Point(\lemx+2,\lemy)>0
           \lemy-2
         EndIf
        Else
          \dir=1:\lemx+2
          \bcount+1
        EndIf       ;boing-handle
      Else
        \lemx-1
      EndIf
   Default
      Gosub randomlem
  End Select
EndIf

BBlit db,\lemm,\lemx,\lemy
If \bcount>4 Then Gosub bc_handle

If \lemy>200OR \lemx>310OR \lemx<10Then Gosub randomlem; KillItem l()
Wend
Until Joyb(0)>0
End

bc_handle:
\bcount=0
Gosub randomlem
Return

randomlem:
\lemm=0
\lemx=Rnd(300)+10
\lemy=5
rd.b=1-rd

\dir=rd+1
Return

.zip   OldLemmsTest.lha.zip (Größe: 27,81 KB / Downloads: 36)

Drucke diesen Beitrag

  MUI: ImageButton (irgendwie)
Geschrieben von: hackball - 14.09.2019, 18:11 - Forum: Showcase - Antworten (2)

Ich hab' endlich den Imagebutton für das 5-Sterne-System in OBST runderneuert; jetzt funktioniert es. Big Grin 

Wird demnächst eingebaut. Es erfordert zur Zeit noch einen dirty HW-Zugriff auf den MouseButton, aber das fixe ich noch; da gibt es Timingprobleme oder so mit der Echtzeitabfrage via MUI.

Wird dann alsbald eingebaut.

Zur Info:
Es ist ein 5-Sterne-Voting-Button, der auch dragging erlaubt; er gibt 0-5 oder Fail=-1 zurück, als Resultat.
Er ist angedacht, um bei OBST jedes Game zu bewerten (wird im PAKs Ordner des Spiels gespeichert). Da ist bisher ein doofer CycleButton.

Hier ein exe als Beispiel zum Testen, bitte vom CLI starten wegen der Ausgabe!!

   


MultiColor bekomme ich nicht vernünftig hin; die Farben sind immer falsch, auch wenn es funktioniert. Ich habe hier aber noch MUI3.8, ob das mit 3.9 besser ist oder ggfls. mit NBitmap.mui, das probiere ich noch.



Angehängte Dateien
.zip   5starsmuitest.lha.zip (Größe: 15,72 KB / Downloads: 54)
Drucke diesen Beitrag

  just some pixel art
Geschrieben von: bruZard - 10.09.2019, 20:24 - Forum: Showcase - Antworten (6)

[Bild: retro.jpg]

Drucke diesen Beitrag

  MUI TextEditor. THE Ted.
Geschrieben von: hackball - 08.09.2019, 01:24 - Forum: Showcase - Keine Antworten

Wir wollen mal sehen, wohin das führt.



Angehängte Dateien Thumbnail(s)
           
Drucke diesen Beitrag

Wink Workbench (Install) Assistant
Geschrieben von: hackball - 25.08.2019, 21:24 - Forum: Showcase - Keine Antworten

Hi.
Ich hatte das mal auf a1k.org vorgeschlagen, als Tool, was in das WBStartup-Verzeichnis installiert wird bei einer Neuinstallation des Systems (namentlich 3.1.4).
   
Es ist nicht fertig und leider sehr groß (84kB), aber das Prinzip ist doch recht interessant, finde ich!?

(FUCK: kein .LHA möglich)



Angehängte Dateien
.zip   WBAss.lha.zip (Größe: 37,89 KB / Downloads: 70)
Drucke diesen Beitrag

Wink I²C Sensor-Logger
Geschrieben von: hackball - 10.08.2019, 23:01 - Forum: Showcase - Antworten (1)

Hier noch ein anderes Projekt. Leider habe ich (noch) keine funktionierende Hardware.

Die Werte sind demnach von einem RandomNumberGenerator....  Blush



Angehängte Dateien Thumbnail(s)
           
Drucke diesen Beitrag

  Displayscroll (EAB)
Geschrieben von: hackball - 06.08.2019, 12:37 - Forum: Snippets & Libraries - Keine Antworten

Ich hatte mal (damals) ein modifiziertes Beispiel für Displayscroll auf EAB gepostet:
http://eab.abime.net/showpost.php?p=1086590&postcount=7

Das läuft auch super, zumindest mit 50MHz 030er. Big Grin 

Kürzlich jedoch scheint es wieder Diskussionen zu geben, man findet es zu langsam.

Da im o.g. Thread niemand auf das offensichtliche Optimierungspotenzial kommt, schreib ich es hier mal rein (ich bin dort rausgeekelt worden):

Die Leute wollen halt nicht mehr selbst denken.....

Org. Src:

;display scroll adapted by cylon

DEFTYPE.w
BitMap1,320,256,3

LoadBitMap1,"face8.iff",1  ;3planes 8 cols

VWait50
BLITZ

BitMapOutput1    ;print onto bmap

Locate 2,28: Print "THIS IS AGA DISPLAYSCROLL"
Locate 2,30: Print "<<<<< Move Mouse >>>>>"
Use BitMap1

;For a=7To1 Step -1
;  b=1-b
;  Circlef160,128,10*a,10*a,b
;Next

InitCopList1,44,256,$10003,8,8,-$10

CreateDisplay1

DisplayBitMap1,1

DisplayPalette1,1

For y=0 To7                           ;debug colour boxes

 Boxf 0,y*16,7,y*16+15,y

 Locate2,y*2+0.5:Colour1: Print y

Next y

Dim xpo.q(256),xpe.q(256)

a=0
VWait150
Mouse On

tpi.q=2*Pi  ;precalc

xpe(0)=-13  ;offset for even planes start at ypos=0
;not quite accurate! sub-pixel fetch or what the hell....

While Joyb(0)=0

For a=1 To 253
  d.q+Pi/18:If d>tpi Then d=0.0

  c.q=Sin(d)+(MouseX-160)/160

  xpo(a)=c

  xpe(a)=c  ;same as odd, but with offset

Next
VWait

DisplayScroll1,&xpo(0),&xpe(0);,-13 offset does not work here?

VWait
Wend

VWait25
QAMIGA
End

NoCli:CloseEd

In Fett habe ich mal die dicksten Brummer markiert:
wenn man dort ansetzt (precalc, Tabelle), dann läuft es auch auf dem Standard A1200 mit etwas FastRAM schnell! Tongue


Und hier noch die letzte Version.

Da ist der SIN() noch nicht rausoptimiert als Tabelle/Array, aber es reicht auch so....
(getestet auf der realen Maschine, nicht UAE)

Das Pic ist mit drin, ein Exe, und auch der orig. Src vom BUM. Shy

Verdammt, ich kann kein LHA anhängen!



Angehängte Dateien
.zip   Displayscr_bb.lha.zip (Größe: 24,5 KB / Downloads: 106)
Drucke diesen Beitrag