diff --git a/Tests/PS/BmpTest.simba b/Tests/PS/BmpTest.simba
new file mode 100644
index 0000000..e68871f
--- /dev/null
+++ b/Tests/PS/BmpTest.simba
@@ -0,0 +1,77 @@
+program new;
+//http://www.hawaiisunshine.org/wp-content/uploads/2008/12/sunshine1.jpg
+var
+  Bmp : integer;
+  x,y : integer;
+  w,h : integer;
+begin
+  Bmp := BitmapFromString(37, 32, 'beNqFl3lwVuUVxp93veu3f1' +
+       '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');
+  GetClientDimensions(w,h);
+  if FindBitmapToleranceIn(bmp,x,y,0,0,w-1,h-1,25) then
+    MoveMouse(x,y);
+end.
diff --git a/Tests/PS/ColourTest2.simba b/Tests/PS/ColourTest2.simba
new file mode 100644
index 0000000..eb396f6
--- /dev/null
+++ b/Tests/PS/ColourTest2.simba
@@ -0,0 +1,31 @@
+program new;
+var
+   p1, p2: TPointArray;
+   w, h: integer;
+   i, col: integer;
+   bmp: integer;
+
+begin
+  SetColorToleranceSpeed(2);
+  bmp := LoadBitmap('/home/merlijn/Pictures/Mooi/Carina_1_by_Eeitam.png');
+  SetTargetBitmap(bmp);
+  GetClientDimensions(W, H);
+  writeln(inttostr(w) + ' : ' + inttostr(h));
+
+  for i := 0 to 100 do
+  begin
+    col := Random(clWhite);
+    writeln(inttostr(col));
+    FindColorsTolerance(p1, col, 0, 0, W - 1, H - 1, 40);
+    FindColorsToleranceOptimised(p2, col, 0, 0, W - 1, H - 1, 40);
+    writeln(inttostr(length(p1)) + ' : ' + inttostr(length(p2)));
+    if(length(p1) <> length(p2)) then
+      writeln('wat!');
+
+    setlength(p1,0);
+    setlength(p2,0);
+
+  end;
+
+  FreeBitmap(bmp);
+end.
diff --git a/Tests/PS/DeformedTest.simba b/Tests/PS/DeformedTest.simba
new file mode 100644
index 0000000..0d3ff6d
--- /dev/null
+++ b/Tests/PS/DeformedTest.simba
@@ -0,0 +1,21 @@
+program New;
+//Scar manual -> you have to pick x1,y1,x2,y2 yourself. (It's at the first bitmapa
+var
+  Deformed ,x,y: integer;
+  ThaTime : integer;
+  i : integer;
+  acc : extended;
+begin
+  Deformed := BitmapFromString(25, 24, 'beNrN1UEKwCAMBMDtb/oO' +
+       'r/0//U1pISCiYUnCIpU9eRgihgTg525HD6pnRKZIkKAWEYJmjXI1F' +
+       'VV2IhQavpzX02M3XHOdEZmSoohj5bmUW3CWMi3rkDf+k1q1AiX/QS' +
+       '21aqRFuRNssP2TQTv6suDmNVFcXi/8Qvf1');
+  //Doing this same code in scar will result in invalid results, since
+  //fast replacedolor didn't work alright, atleast for me.
+  FastReplaceColor(Deformed,clblack,clwhite);
+  FastReplaceColor(deformed,82647,clblack);
+  ThaTime := GetSystemTime;
+  FindDeformedBitmapToleranceIn(Deformed, x, y, 119, 538, 213, 613, 70, 10, True, acc);
+  Writeln(inttostr(GetSystemTime - ThaTime));
+  Writeln(floattostr(acc));
+end.
diff --git a/Tests/PS/FileTests.simba b/Tests/PS/FileTests.simba
new file mode 100644
index 0000000..5135302
--- /dev/null
+++ b/Tests/PS/FileTests.simba
@@ -0,0 +1,90 @@
+program Hoi;
+
+{
+  Description: Test file to test the consistency of
+               the following Functions:
+
+               AppPath, DirectoryExists, FileExists, ExeExt,
+               DirectorySeperator, OpenFile, CreateFile, RewriteFile,
+               WriteFileString, ReadFileString, SetFileCharPointer,
+               FileSize, EndOfFile, FileContents.
+
+  Notes:
+               Needs: GetFiles.
+
+	       Bugs:
+			Using ./test as TestPath crashes on Linux.
+  Usage:
+               Run it. Set the TestPath to a different directory if you are on Windows. :)
+}
+
+Const
+    TestPath = './test';
+
+    fsFromBeginning = 0; // offset must be pos or 0
+    fsFromCurrent = 1; // offset pos or neg
+    fsFromEnd = 2; // offset only neg or 0
+
+var
+  s, s2: string;
+  myFile, myFile2: Integer;
+
+begin
+  s := apppath;
+  Writeln('Our current path is: ' + s);
+ { If DirectoryExists(s) Then
+    writeln('Directory ' + s + ' exists.');    }
+
+ { If FileExists(s + DirectorySeperator + 'Cogat' + ExeExt) Then
+    writeln('We exist!');       }
+
+  myFile := CreateFile(TestPath);
+  WriteFileString(myFile, 'wat');
+  WriteFileString(myFile, 'watnumber2');
+  CloseFile(myFile);
+
+  myFile := OpenFile(TestPath, False);
+  ReadFileString(myFile, s2, 2);
+  writeln('s2: ' + s2);
+  CloseFile(myFile);
+
+  myFile := CreateFile(TestPath + '2');
+  WriteFileString(myFile, 'wat222');
+
+  CloseFile(myFile);
+
+  // TestPath now contains; 'watwatnumber2'. We will make it write 'number',
+  // and then 2.
+  myFile := OpenFile(TestPath, False);
+  SetFileCharPointer(myFile, 6, fsFromBeginning);
+  ReadFileString(myFile, s2, 6);
+  writeln('s2: ' + s2);
+  s2 := '';
+
+  SetFileCharPointer(myFile, -1, fsFromEnd);
+  ReadFileString(myFile, s2, 1);
+  writeln('s2: ' + s2);
+  CloseFile(myFile);
+
+  // myFile2 should be -1.
+  myFile := RewriteFile(TestPath, False);
+  myFile2 := RewriteFile(TestPath, False);
+  writeln(inttostr(myFile) + ' : ' + inttostr(myFile2));
+
+  // myFile2 should be -1.
+  myFile2 := OpenFile(TestPath, False);
+  writeln(inttostr(myFile) + ' : ' + inttostr(myFile2));
+
+  // Now, we will test EndOfFile, and FileSize.
+
+  While Not EndOfFile(myFile) Do
+  Begin
+    ReadFileString(myFile, s2, 1);
+    Writeln(s2);
+  End;
+
+  CloseFile(myFile);
+
+  //Writeln(FileContents(TestPath));
+  writeln('wat');
+end.
diff --git a/Tests/PS/FormTest.simba b/Tests/PS/FormTest.simba
new file mode 100644
index 0000000..f5031a4
--- /dev/null
+++ b/Tests/PS/FormTest.simba
@@ -0,0 +1,35 @@
+program new;
+var
+  TempVar : Boolean;
+procedure OnClick(Sender : TObject);
+begin;
+  TempVar := True;
+  Writeln('YOU HAS CLICKED THE BUTTON');
+end;
+function x : Boolean;
+var
+  MyForm : TForm;
+  AButton : TButton;
+begin;
+  TempVar := False;
+  Result := false;
+  MyForm := TForm.Create(nil);
+  MyForm.Width := 250;
+  MyForm.Height := 250;
+  AButton := TButton.Create(MyForm);
+  AButton.Parent := MyForm;
+  Abutton.SetBounds(100,100,100,50);
+  AButton.OnClick := @OnClick;
+  AButton.Caption := 'Test';
+  MyForm.ShowModal;
+  MyForm.Free;
+  Result := TempVar;
+end;
+var
+  v : TVariantArray;
+begin
+  if ThreadSafeCall('x',v) then
+    Writeln('You clicked the button! WinnOr')
+  else
+    Writeln('You did not click the button, fail all the way');
+end.
diff --git a/Tests/PS/IncludeTest.simba b/Tests/PS/IncludeTest.simba
new file mode 100644
index 0000000..8e9c926
--- /dev/null
+++ b/Tests/PS/IncludeTest.simba
@@ -0,0 +1,6 @@
+program new;
+{.include test.mufa}
+begin
+  Writeln(TestStr);
+  Writeln(inttostr(MultiPly(500,-20)));
+end.
diff --git a/Tests/PS/MaskTest.simba b/Tests/PS/MaskTest.simba
new file mode 100644
index 0000000..79db52e
--- /dev/null
+++ b/Tests/PS/MaskTest.simba
@@ -0,0 +1,22 @@
+program new;
+//http://nl.wikipedia.org/wiki/Lily_Allen
+
+var
+  Bmp : integer;
+  Mask : TMask;
+  x,y : integer;
+  i, ii : integer;
+  w,h : integer;
+begin
+  Bmp :=  BitmapFromString(107, 19, 'beNrtVkEOgCAM8/+fxoOJUYG' +
+       'uWwZKbE9KtmYrHbBtgiAIgpCOckFiopdtZr/j2HhynBjYjmntJxaW' +
+       '6BwJWC8eH6QU15gz0Zx9vFgX0Iwhs0CASRUW8CFmioB1JFisA5qRI' +
+       'KvJQNKa5mEcyAhoauI6N8ymAlkxWpdtwgL2bhPXCJc7+E7JLNJsgG' +
+       'qQgL1jhHwX4VJdBsNZMbN5D//m/ob5XzwDp40wfg/jW9g024hbuPd' +
+       'ritabVqaAj7zYVyxg9fol4M8FFG7YAfIG00k=');
+  Mask := CreateBitmapMask(Bmp);
+  GetClientDimensions(w,h);
+//  if FindBitmapMaskTolerance(Bmp,x,y,0, 0,w-1, h-1,1,5) then
+  if FindMaskTolerance(Mask,x,y,0, 0,w-1, h-1,1,5) then
+    MoveMouse(x,y);
+end.
diff --git a/Tests/PS/Neopets_old.simba b/Tests/PS/Neopets_old.simba
new file mode 100644
index 0000000..4891a82
--- /dev/null
+++ b/Tests/PS/Neopets_old.simba
@@ -0,0 +1,148 @@
+program BankProblems;
+
+//  http://www.neopets.com/games/play.phtml?game_id=371
+
+Const
+   KeyDownUpSpeed = 1;  // The Higher the "KeyDownUpSpeed", the slower the script is.
+
+Type
+  Door = record
+    X: Integer;
+    Y: Integer;
+    DoorChar: Byte;
+    IsOpen: Boolean;
+    IsMonster: Boolean;
+    WhatMonster: String;
+  End;
+
+Var
+   Doors: Array [0..5] Of Door;
+
+Procedure DeclareStuff;
+
+Var
+   I: Integer;
+Begin
+  For I := 0 To 5 Do
+  Begin
+    Doors[I].X := 45 + I * 96;
+    Doors[I].Y := 210;
+  End;
+
+  Doors[0].DoorChar := 83;
+  Doors[1].DoorChar := 68;
+  Doors[2].DoorChar := 70;
+  Doors[3].DoorChar := 74;
+  Doors[4].DoorChar := 75;
+  Doors[5].DoorChar := 76;
+End;
+
+Function IsBadGuy(DN: Integer): Boolean;
+
+Var
+   TempColor: Array [0..11] Of Integer;
+   I, x, y: Integer;
+   H, S, L: Extended;
+Begin
+  TempColor[0] := GetColor(Doors[DN].X, Doors[DN].Y);
+  TempColor[1] := GetColor(Doors[DN].X, Doors[DN].Y-1);
+  TempColor[2] := GetColor(Doors[DN].X-1, Doors[DN].Y);
+  TempColor[3] := GetColor(Doors[DN].X, Doors[DN].Y+1);
+  TempColor[4] := GetColor(Doors[DN].X+1, Doors[DN].Y);
+  TempColor[5] := GetColor(Doors[DN].X, Doors[DN].Y-2);
+  TempColor[5] := GetColor(Doors[DN].X-2, Doors[DN].Y);
+  TempColor[6] := GetColor(Doors[DN].X+1, Doors[DN].Y+2);
+  TempColor[7] := GetColor(Doors[DN].X+2, Doors[DN].Y);
+  TempColor[8] := GetColor(Doors[DN].X, Doors[DN].Y-3);
+  TempColor[9] := GetColor(Doors[DN].X-3, Doors[DN].Y);
+  TempColor[10] := GetColor(Doors[DN].X+1, Doors[DN].Y+3);
+  TempColor[11] := GetColor(Doors[DN].X+3, Doors[DN].Y);
+
+  For I := 0 To 11 Do
+  Begin
+    If SimilarColors(TempColor[I], 3055, 30) Then           // Red Devil
+    Begin
+      Result := True;
+      Doors[DN].WhatMonster := 'Devil';
+      Exit;
+    End;
+  End;
+
+  For I := 0 To 11 Do
+  Begin
+    If SimilarColors(TempColor[I], 12841714, 40) Then           // Squirrle
+    Begin
+      ColorToHSL(TempColor[I], H, S, L);
+      If (L > 60) And (L < 95) Then
+         If (H > 5 ) And (H < 30) Then
+          If FindColorTolerance(x, y, 4092580, Doors[DN].X, Doors[DN].Y-1,
+                                Doors[DN].X + 20, Doors[DN].Y + 1, 40)
+          Then
+          Begin
+            Result := True;
+            Doors[DN].WhatMonster := 'Squirrle';
+            Exit;
+          End;
+    End;
+  End;
+
+  For I := 0 To 11 Do
+  Begin
+    If SimilarColors(TempColor[I], 28756, 30) Then           // Green Monster
+    Begin
+      Result := True;
+      Doors[DN].WhatMonster := 'Green Monster';
+      Exit;
+    End;
+  End;
+
+  For I := 0 To 11 Do
+  Begin
+    If SimilarColors(TempColor[I], 794793, 30) Then           // Mysterious Man
+    Begin
+      Result := True;
+      Doors[DN].WhatMonster := 'Mysterious Man';
+      Exit;
+    End;
+  End;
+
+End;
+
+Procedure HandleMonsters;
+
+Var
+   I, iX, iY, Time: Integer;
+
+Begin
+  For I := 0 To 5 Do
+  Begin
+    If IsBadGuy(I) Then
+    Begin
+      KeyDown(Doors[I].DoorChar);
+      Wait(10 * KeyDownUpSpeed);
+      KeyUp(Doors[I].DoorChar);
+    End;
+  End;
+End;
+
+Procedure AddToGold;
+
+Begin
+  If GetColor(388, 25) = 0 Then
+  Begin
+    Wait(100);
+    KeyDown(32);
+    Wait(10 * KeyDownUpSpeed);
+    KeyUp(32);
+  End;
+End;
+
+begin
+  //ClearDebug;
+  DeclareStuff;
+  Repeat
+    AddToGold;
+    HandleMonsters;
+    Wait(10);
+  Until False;
+end.
diff --git a/Tests/PS/PathTest.simba b/Tests/PS/PathTest.simba
new file mode 100644
index 0000000..415b1b3
--- /dev/null
+++ b/Tests/PS/PathTest.simba
@@ -0,0 +1,5 @@
+program new;
+begin
+  Writeln(AppPath);
+  Writeln(ScriptPath);
+end.
diff --git a/Tests/PS/Several bitmap operations.simba b/Tests/PS/Several bitmap operations.simba
new file mode 100644
index 0000000..5384114
--- /dev/null
+++ b/Tests/PS/Several bitmap operations.simba	
@@ -0,0 +1,159 @@
+program new;
+const
+  SaveDir = 'C:\';
+var
+  Bmpz : integer;
+  Bmp2 : integer;
+  w,h : integer;
+begin
+  Bmpz := BitmapFromString(166, 73, 'beNq9Xf2PVeURtv+Jv' +
+       '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' +
+       'lBjhJTpfLvR2ly2sNByiC00aQQsaGK4bSdWAhbwKA3ViodBP6O3Yh' +
+       'XXQLjSaP4wN9ofrA9NO8hy6G0kjpBvoHgg6RTAxjukm/86vHcXZzq' +
+       'xdc/Z2oA8MURpVTw8KHeNumsOzA2tHc4wy7Xdy51VpGboPTDBS8rA' +
+       'NDT38OZpNFCQ36No1IuM/uum9YzuPPgcDPVw3EordY5tcrHQbFDrl' +
+       'wpEjaAegN/Jmh4PuvIX81T6H8PAsvRuJpuph50AKvC4XejtHCDmMH' +
+       'cAdgJ6i25n8ENAb9XeI8WV1IyF/KeUeaHGrq6xL7MQSaa601eFZ1Y' +
+       'O23D4wtOGVzbL0ne+Z7BeqxVK6kWhRDKGbCiswGriULjSNw4Up7lo' +
+       '5viB0xDJ+Jsc+7bkT4RLX3o1miBMt2I2ky7I605qItBB1QeiNMiKK' +
+       'yqVVUYtAx0hoO72qiowv3oWm6rmU1sLQwhfvA6MZsFVlBCV0zd0Lh' +
+       'bIKVYVo1J7E8Z+vC02Fa1xa9YKYyHdyTWa+HjhVonvF7jRiNV8nlr' +
+       'RYhmIZ8T7T9P0vc3RiqXKoFG5Dc0N6mxV6zx4FE+9mgoowN5QC4zN' +
+       'BD7iaAtEI2aTJCTP1QtHsxKpUaqIbxlbxo6ag9O+FUlUjpmmQyNJV' +
+       'l4vY9ExdaG43KNgY6bkeQ1JEo04ZWUR/6A0JUq0O31yjpN7uRlLle' +
+       'NP7NOnh6TvsNP11KvR2Sc7UKjNtKzHr2isjSys+MAhLMfGwi2+nr2' +
+       '/pk1Ohk/tOMz/7hGW12r3RiSUqpjVhjN615P/VupUgRX29whhex1l' +
+       'B71n/m7YG1d4jlftxahcafCYx9mpXKfulwlobOuXL+WfNuW0jXfM0' +
+       'MPtd22/qi+bbZeZpvZKmK5BKk0qQIBgV2VXWgdKb/kvvTbmobqkTv' +
+       '/6L3ihtw9SzFOOb7tYt5Q2Dp7rzrubFc+yzj3imf527htpMSNWOcL' +
+       'ejGx51C0lFuRbU42O1pCs6sYQzp9FGoErtbltqVfEIdqEhaev8AbO' +
+       'R22+lRJUS0U32hStvSAPbmuGDo+rwOnIDxRW625Xm2lWyLSMmurRJ' +
+       'U4LIc4voSVrUGRjfPBRb1VjY7gwba2hrDnrlaFqzlpYcTrTNaa4un' +
+       'rOdgbznbsxWavQ/ieNJF2DxC0pn/7xJYw+OpoqhqTWnU7Pi1UEUOl' +
+       'gIHX+Nr7duoP7h1DRsgsNPqrLaZU5zk+IlZZqSN5YCh9QUjWhpN6l' +
+       'm9FFyQuWIWhU84FUOdspksM4okml9bq4J+EmnE61lUI0J69vEdNUq' +
+       'Q4lZpZG+tLhS++s2ClLUXE21Aqzg7ia7J6X1renO0Bmvuv8lGs5W3' +
+       'xXcE6wyaNQKRduHgE6sW/fWSSLdbfWcTFXPsNJ5LO9wTAveUxcxvf' +
+       'WV6psUv423Syd8dbLrO/HqwPu2RiQSilKMegawti01UJtJ3w4iIe2' +
+       'ry1KUA7kh/QmPgetGv8Ew37Q1Qa9uRUUfsEZibUP/SZ1saRd9dbv1' +
+       'gZVSTtuVpMt0PkzqE5VETZWA9ORAYtxORWo4HJuqd6EyhpGdBsanM' +
+       'pM+fH7qXVRxSZ6WbsS9QJMebtBVLH1PqzZk07pdJOxutBsNn0huof' +
+       '6H6avb2+2V0KYgqUdS1VFABNOoOkm3FI98BHDT0ADJgrLZi5G3j3a' +
+       'Po+8BCV1cWQ==');
+   SaveBitmap(bmpz,SaveDir + 'original.bmp');
+   GetBitmapSize(bmpz,w,h);
+   SetBitmapName(bmpz,'Invetory Bitmap');
+   Writeln('Bitmap size: ('+inttostr(w) + ',' + inttostr(h) + ')');
+   Bmp2 := CopyBitmap(bmpz);
+   SetBitmapSize(Bmp2,w div 2, h div 2);
+   SaveBitmap(bmp2,SaveDir + 'cut.bmp');
+   StretchBitmapResize(Bmpz,w*2,h*2);
+   SaveBitmap(bmpz,savedir + 'stretched.bmp');
+   FreeBitmap(bmp2);
+   Bmp2 := CopyBitmap(bmpz);
+   StretchBitmapResize(bmp2,w div 2, h div 2);
+   SaveBitmap(bmp2,savedir + 'stretchedSmall.bmp');
+   SaveBitmap(ContrastBitmap(bmpz,50),savedir + 'Contrast.bmp');
+   SaveBitmap(BrightnessBitmap(bmpz,150),savedir + 'Brightness.bmp');
+   SaveBitmap(GreyScaleBitmap(bmpz),savedir + 'GreyScale.bmp');
+   InvertBitmap(bmpz);
+   SaveBitmap(bmpz,savedir + 'inverted.bmp');
+   Invertbitmap(bmpz);//Invert back
+   SaveBitmap(DesaturateBitmap(Bmpz),savedir + 'desaturate.bmp');
+   SaveBitmap(RotateBitmap(Bmpz,0.30*pi),savedir + 'rotated.bmp');
+   SaveBitmap(PosterizeBitmap(Bmpz,75),savedir + 'posterized.bmp');
+end.
diff --git a/Tests/PS/SimpleBMPLoader.simba b/Tests/PS/SimpleBMPLoader.simba
new file mode 100644
index 0000000..0b3ed62
--- /dev/null
+++ b/Tests/PS/SimpleBMPLoader.simba
@@ -0,0 +1,142 @@
+program new;
+var
+  Bmpz : integer;
+  w,h : integer;
+begin
+  Bmpz := BitmapFromString(166, 73, 'beNq9Xf2PVeURtv+Jv' +
+       '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' +
+       'lBjhJTpfLvR2ly2sNByiC00aQQsaGK4bSdWAhbwKA3ViodBP6O3Yh' +
+       'XXQLjSaP4wN9ofrA9NO8hy6G0kjpBvoHgg6RTAxjukm/86vHcXZzq' +
+       'xdc/Z2oA8MURpVTw8KHeNumsOzA2tHc4wy7Xdy51VpGboPTDBS8rA' +
+       'NDT38OZpNFCQ36No1IuM/uum9YzuPPgcDPVw3EordY5tcrHQbFDrl' +
+       'wpEjaAegN/Jmh4PuvIX81T6H8PAsvRuJpuph50AKvC4XejtHCDmMH' +
+       'cAdgJ6i25n8ENAb9XeI8WV1IyF/KeUeaHGrq6xL7MQSaa601eFZ1Y' +
+       'O23D4wtOGVzbL0ne+Z7BeqxVK6kWhRDKGbCiswGriULjSNw4Up7lo' +
+       '5viB0xDJ+Jsc+7bkT4RLX3o1miBMt2I2ky7I605qItBB1QeiNMiKK' +
+       'yqVVUYtAx0hoO72qiowv3oWm6rmU1sLQwhfvA6MZsFVlBCV0zd0Lh' +
+       'bIKVYVo1J7E8Z+vC02Fa1xa9YKYyHdyTWa+HjhVonvF7jRiNV8nlr' +
+       'RYhmIZ8T7T9P0vc3RiqXKoFG5Dc0N6mxV6zx4FE+9mgoowN5QC4zN' +
+       'BD7iaAtEI2aTJCTP1QtHsxKpUaqIbxlbxo6ag9O+FUlUjpmmQyNJV' +
+       'l4vY9ExdaG43KNgY6bkeQ1JEo04ZWUR/6A0JUq0O31yjpN7uRlLle' +
+       'NP7NOnh6TvsNP11KvR2Sc7UKjNtKzHr2isjSys+MAhLMfGwi2+nr2' +
+       '/pk1Ohk/tOMz/7hGW12r3RiSUqpjVhjN615P/VupUgRX29whhex1l' +
+       'B71n/m7YG1d4jlftxahcafCYx9mpXKfulwlobOuXL+WfNuW0jXfM0' +
+       'MPtd22/qi+bbZeZpvZKmK5BKk0qQIBgV2VXWgdKb/kvvTbmobqkTv' +
+       '/6L3ihtw9SzFOOb7tYt5Q2Dp7rzrubFc+yzj3imf527htpMSNWOcL' +
+       'ejGx51C0lFuRbU42O1pCs6sYQzp9FGoErtbltqVfEIdqEhaev8AbO' +
+       'R22+lRJUS0U32hStvSAPbmuGDo+rwOnIDxRW625Xm2lWyLSMmurRJ' +
+       'U4LIc4voSVrUGRjfPBRb1VjY7gwba2hrDnrlaFqzlpYcTrTNaa4un' +
+       'rOdgbznbsxWavQ/ieNJF2DxC0pn/7xJYw+OpoqhqTWnU7Pi1UEUOl' +
+       'gIHX+Nr7duoP7h1DRsgsNPqrLaZU5zk+IlZZqSN5YCh9QUjWhpN6l' +
+       'm9FFyQuWIWhU84FUOdspksM4okml9bq4J+EmnE61lUI0J69vEdNUq' +
+       'Q4lZpZG+tLhS++s2ClLUXE21Aqzg7ia7J6X1renO0Bmvuv8lGs5W3' +
+       'xXcE6wyaNQKRduHgE6sW/fWSSLdbfWcTFXPsNJ5LO9wTAveUxcxvf' +
+       'WV6psUv423Syd8dbLrO/HqwPu2RiQSilKMegawti01UJtJ3w4iIe2' +
+       'ry1KUA7kh/QmPgetGv8Ew37Q1Qa9uRUUfsEZibUP/SZ1saRd9dbv1' +
+       'gZVSTtuVpMt0PkzqE5VETZWA9ORAYtxORWo4HJuqd6EyhpGdBsanM' +
+       'pM+fH7qXVRxSZ6WbsS9QJMebtBVLH1PqzZk07pdJOxutBsNn0huof' +
+       '6H6avb2+2V0KYgqUdS1VFABNOoOkm3FI98BHDT0ADJgrLZi5G3j3a' +
+       'Po+8BCV1cWQ==');
+   GetBitmapSize(bmpz,w,h);
+   Writeln(inttostr(w) + '-' + inttostr(h));
+   SetBitmapSize(Bmpz,w div 2, h div 2);
+   SaveBitmap(Bmpz,'/tmp/test.bmp');
+   //FreeBitmap(Bmpz);
+   Bmpz := LoadBitmap('/tmp/test.bmp');
+   SetBitmapSize(bmpz,w,h);
+   SaveBitmap(Bmpz,'/tmp/test2.bmp');
+end.
diff --git a/Tests/PS/Uptext.simba b/Tests/PS/Uptext.simba
new file mode 100644
index 0000000..e612331
--- /dev/null
+++ b/Tests/PS/Uptext.simba
@@ -0,0 +1,10 @@
+program new;
+var
+   i,t:integer;
+begin
+  t:=getsystemtime;
+  for i := 0 to 100 do
+    rs_getuptext;
+  writeln(inttostr(round(getsystemtime - t) / 100));
+  writeln(rs_getuptext);
+end.
diff --git a/Tests/PS/blackchat.simba b/Tests/PS/blackchat.simba
new file mode 100644
index 0000000..24297e6
--- /dev/null
+++ b/Tests/PS/blackchat.simba
@@ -0,0 +1,44 @@
+program new;
+
+const
+  MCX1 = 4;
+  MCY1 = 342;
+  MCX2 = 514;
+  MCY2 = 475;
+
+Function TextCoords(textn: Integer): TPoint;
+Begin
+  Result.X := 10;
+  Result.Y := 347 + (14 * (textn - 1));
+End;
+
+function GetChatBoxText(Line, TextCol: Integer): string;
+var
+  P: TPoint;
+  cArr: TPointArray;
+  B: TBox;
+begin
+  P := TextCoords(Line);
+  if (FindColorsTolerance(cArr, TextCol, MCX1, P.y, MCX2, P.y + 13, 0)) then
+  begin
+    B := GetTPABounds(cArr);
+   // Result := GetTextAt(B.x1 - 1, B.y1 - 1, 1, 3, 0, 0, 0, 100, 'SmallChars');
+
+    {Result := Trim(GetTextAtEx(B.x1 - 1, B.y1 - 2, 0, SmallChars, False, False,
+      0, 1, TextCol, 80, False, tr_AllChars)); }
+  end;
+end;
+
+var
+  bmp: integer;
+begin
+  bmp := LoadBitmap('/home/merlijn/Programs/trunk/pics/17.bmp');
+  SetTargetBitmap(bmp);
+ // freebitmap(bmp);
+{  GetChatBoxText(8, 0);    }
+
+  {SetDesktopAsClient;         }
+
+  // uncomment this for exception
+  freebitmap(bmp);
+end.
diff --git a/Tests/PS/colour conversions.simba b/Tests/PS/colour conversions.simba
new file mode 100644
index 0000000..3b23a11
--- /dev/null
+++ b/Tests/PS/colour conversions.simba	
@@ -0,0 +1,9 @@
+program new;
+var
+  R,G,B : byte;
+begin
+  ColorToRGB(clwhite,r,g,b);
+  Writeln([r,g,b]);
+  Writeln(RGBToColor(50,150,250));//16422450
+  writeln(XYZToColor(0.5,0.7,0.9));//1513219
+end.
diff --git a/Tests/PS/colourtest.simba b/Tests/PS/colourtest.simba
new file mode 100644
index 0000000..4ab67e0
--- /dev/null
+++ b/Tests/PS/colourtest.simba
@@ -0,0 +1,43 @@
+program new;
+var
+   x,y,w,h,i,j,t,t2:integer;
+begin
+  getclientdimensions(w,h);
+  writeln(inttostr(w) + ', ' + inttostr(h));
+
+  freeze();
+  for i := 0 to 2 do
+  begin
+    setcolortolerancespeed(i);
+    t := getsystemtime;
+	for j := 0 to 100 do
+    findcolortolerance(x, y, 2532562, 0, 0, w -1 , h -1, 1);
+    t2 := getsystemtime;
+    writeln('Time for 101 tries: ' + inttostr(t2 - t) + ' ms.');
+    writeln('That is ' + FloatToStr((t2 - t) / 101) + ' ms each.');
+
+    if findcolortolerance(x, y, 2532562, 0, 0, w-1, h-1, 1) then
+    begin
+      writeln('CTS: ' + inttostr(I) + '; Found the colour at (' + inttostr(x) + ', ' +
+      inttostr(y) + ')');
+      movemouse(x, y);
+      wait(1000);
+    end else
+      writeln('not found');
+  end;
+  unfreeze();
+end.
+
+Compiled succesfully in 7 ms.
+826, 597
+Time for 101 tries: 1143 ms.
+That is 11.316831683168 ms each.
+not found
+Time for 101 tries: 2565 ms.
+That is 25.396039603960 ms each.
+not found
+Time for 101 tries: 3799 ms.
+That is 37.613861386139 ms each.
+not found
+Succesfully executed
+
diff --git a/Tests/PS/debugimageform.simba b/Tests/PS/debugimageform.simba
new file mode 100644
index 0000000..470f807
--- /dev/null
+++ b/Tests/PS/debugimageform.simba
@@ -0,0 +1,21 @@
+program new;
+var
+  Bmp,x,y : integer;
+  DebugBmp : integer;
+begin
+  Bmp := createbItmap(100,100);
+  CopyClientToBitmap(Bmp,0,0,99,99);
+  for x := 0 to 49 do
+  begin;
+    for y := 0 to 49 do
+    begin;
+      fastsetpixel(bmp,x,y,random(clwhite));
+      fastsetpixel(bmp,y,x,random(clwhite));
+    end;
+    x := x + 5;
+  end;
+  DisplayDebugImgWindow(100,100);
+  DrawBitmapDebugImg(bmp);
+  DebugBMP := GetDebugBitmap;
+  SaveBitmap(DebugBmp,ScriptPath + 'debugimage.bmp');
+end.
diff --git a/Tests/PS/dtmtest.simba b/Tests/PS/dtmtest.simba
new file mode 100644
index 0000000..ccc764d
--- /dev/null
+++ b/Tests/PS/dtmtest.simba
@@ -0,0 +1,24 @@
+program new;
+var
+  dtm,x,y, w, h:integer;
+  ppdtm:pdtm;
+begin
+  getclientdimensions(w,h);
+  writeln(inttostr(w) + ',' + inttostr(h));
+  dtm := DTMFromString('78DA63F4606460F0634001E181810C46401A2' +
+          '8C3F01F0818AD31D54064612490B601B28209A87105B2A209A8F1' +
+          '23424D38901540841A2FFC6A00C8100982');
+
+  if finddtm(dtm, x,y, 0, 0, w-1,h-1) then
+  begin
+    writeln('found');
+    movemouse(x,y);
+  end else
+    writeln('not found');
+  if getdtm(dtm, ppdtm) then
+    writeln('yay');
+  printpdtm(tdtmtopdtm(pdtmtotdtm(ppdtm)));
+  dtm := addpdtm(ppdtm);
+  freedtm(dtm);
+  // old dtm is not freed, since it is overridden by addpdtm.
+end.
diff --git a/Tests/PS/dtmtest2.simba b/Tests/PS/dtmtest2.simba
new file mode 100644
index 0000000..48fbddb
--- /dev/null
+++ b/Tests/PS/dtmtest2.simba
@@ -0,0 +1,61 @@
+program new;
+
+const
+    dtm_Rectangle = 0;
+    dtm_Cross = 1;
+    dtm_DiagonalCross = 2;
+    dtm_Circle = 3;
+    dtm_Triangle = 4;
+
+var
+   ppdtm: pdtm;
+   w,h,x,y,dtm,i: integer;
+
+   a: extended;
+
+   p,pp: TPointArray;
+   c,t,asz,ash: TIntegerArray;
+   bp:array of boolean;
+
+begin
+  p := [Point(0,0), Point(1,1), Point(-4, -4)];
+  c := [clWhite, clWhite, clWhite];
+  t := [0, 0, 0];
+  asz := [0, 4, 4];
+  ash := [dtm_Rectangle, dtm_Rectangle, dtm_Rectangle];
+  setlength(ppdtm.p,2);
+  bp:=[false,false,false];
+
+  ppdtm.l := 3;//We have 3 points..
+  ppdtm.p := p;
+  ppdtm.c := c;
+  ppdtm.t := t;
+  ppdtm.asz := asz;
+  ppdtm.ash := ash;
+  ppdtm.bp := bp;
+  ppdtm.n := 'TestDTM';//Our name!
+
+  dtm := AddpDTM(ppdtm);
+
+  getclientdimensions(w,h);
+  writeln(inttostr(w) + ', ' + inttostr(h));
+
+  if FindDTM(dtm, x, y, 0, 0, w-1, h-1) then
+  begin
+    writeln('Found DTM at ' + inttostr(x) + ', ' + inttostr(y));
+    movemouse(x,y);
+  end;
+
+  if FindDTMs(dtm, p, 0, 0, w-1, h-1) then
+  begin
+    writeln('Found ' + inttostr(length(p)) + ' DTM(s). First one at ' +
+             inttostr(p[0].x) + ', ' + inttostr(p[0].y));
+    movemouse(p[0].x,p[0].y);
+  end;
+
+  if FindDTMRotated(dtm, x, y, 0, 0, w-1, h-1, -3.14, 3.14, 0.05, a) then
+  begin
+    writeln('Found DTM at ' + inttostr(x) + ', ' + inttostr(y) + ' Angle: ' + FloatToStr(a));
+    movemouse(x,y);
+  end;  
+end.
diff --git a/Tests/PS/loadsystemfont.simba b/Tests/PS/loadsystemfont.simba
new file mode 100644
index 0000000..828bfdd
--- /dev/null
+++ b/Tests/PS/loadsystemfont.simba
@@ -0,0 +1,14 @@
+program new;
+var
+  Font : TFont;
+begin
+  Font := TFont.Create;
+  Font.Name := 'Courier New';
+  Font.Size := 10;
+  Font.Style := [];
+  LoadSystemFont(Font,'test');
+  DisplayDebugImgWindow(0,0);
+  DisplayDebugImgWindow(150,50);
+  DrawBitmapDebugImg(BitmapFromText('BMP[0] has not been freed','test'));
+  Font.free;
+end.
diff --git a/Tests/PS/mouse.simba b/Tests/PS/mouse.simba
new file mode 100644
index 0000000..8a77a07
--- /dev/null
+++ b/Tests/PS/mouse.simba
@@ -0,0 +1,32 @@
+program Mouse;
+
+{
+This program illustrates the Mufasa Mouse Functions
+}
+
+var
+   w, h, x, y: integer;
+begin
+  getclientdimensions(w,h);
+  writeln(inttostr(w) + ', ' + inttostr(h));
+  MoveMouse(0, 0);
+  getmousepos(x, y);
+  writeln(inttostr(x) + ', ' + inttostr(y));
+  wait(1000);
+  MoveMouse(w, 0);
+  getmousepos(x, y);
+  writeln(inttostr(x) + ', ' + inttostr(y));
+  wait(1000);
+  MoveMouse(0, h);
+  getmousepos(x, y);
+  writeln(inttostr(x) + ', ' + inttostr(y));
+  wait(1000);
+  MoveMouse(w, h);
+  getmousepos(x, y);
+  writeln(inttostr(x) + ', ' + inttostr(y));
+  wait(1000);
+  ClickMouse(0, 0, mouse_Right);
+
+  for x := 0 to 400 do
+    MoveMouse(x, x);
+end.
diff --git a/Tests/PS/plugintest.simba b/Tests/PS/plugintest.simba
new file mode 100644
index 0000000..7e39942
--- /dev/null
+++ b/Tests/PS/plugintest.simba
@@ -0,0 +1,64 @@
+program new;
+{.LoadDLL libsmart}
+function IsKeyDown(C:Char): Boolean;
+begin
+  Result := SmartIsKeyDown(ord(c));
+end;
+
+procedure MoveMouse(x, y: Integer);
+begin
+  SmartMoveMouse(x, y);
+end;
+
+procedure HoldMouse(x, y: Integer; left: Boolean);
+begin
+  SmartHoldMouse(x, y, left);
+end;
+
+procedure ReleaseMouse(x, y: Integer; left: Boolean);
+begin
+  SmartReleaseMouse(x, y, left);
+end;
+
+procedure KeyUp(key: Byte);
+begin
+  If Key = 13 Then
+    Key := 10;
+  SmartReleaseKey(key);
+end;
+
+procedure KeyDown(key: Byte);
+begin
+  If Key = 13 Then
+    Key := 10;
+  SmartHoldKey(key);
+end;
+
+procedure SendKeys(S: String);
+begin
+  SmartSendKeys(S);
+end;
+
+procedure GetMousePos(var x, y: Integer);
+begin
+  SmartGetMousePos(x, y);
+end;
+
+function GetColor(x, y: Integer): Integer;
+begin
+  result:= SmartGetColor(x, y);
+end;
+
+
+var
+  w,h:integer;
+begin
+  SmartSetup('http://world19.runescape.com/', 'plugin.js?param=o0,a1,m0', 765, 503);
+  SetTargetArray(SmartImageArray, 765,503);
+  getclientdimensions(w,h);
+  writeln(inttostr(w) + ' , ' + inttostr(h));
+  if findcolortolerance(w,h,clwhite,0,0,764,502,300) then
+    smartmovemouse(w,h);
+  savescreenshot('/tmp/smart.bmp');
+  //Wait(5000);
+end.
diff --git a/Tests/PS/settings_test.simba b/Tests/PS/settings_test.simba
new file mode 100644
index 0000000..1f257ab
--- /dev/null
+++ b/Tests/PS/settings_test.simba
@@ -0,0 +1,17 @@
+program new;
+begin
+SettingsGetSetDefaultKeyValue('Kanker/wat', 'YO WAT');
+SettingsGetSetDefaultKeyValue('Kanker/wat2', 'YO WAT2');
+writeln(SettingsGetKeyValue('Kanker/wat'));
+
+if SettingsIsDirectory('Kanker') then
+  writeln('Kanker has at least one child!');
+if SettingsIsKey('Kanker/wat') then
+  writeln('wat exists!');
+SettingsDeleteKey('Kanker/wat');
+writeln(SettingsGetKeyValue('Kanker/wat2'));
+writeln(SettingsGetKeyValue('Kanker/wat'));
+SettingsDeleteSubKeys('Kanker');
+if SettingsIsKey('Kanker') then
+  writeln('kanker is a key now!');
+end.
diff --git a/Tests/PS/stringtest.simba b/Tests/PS/stringtest.simba
new file mode 100644
index 0000000..c3e911a
--- /dev/null
+++ b/Tests/PS/stringtest.simba
@@ -0,0 +1,39 @@
+program new;
+type
+  LetsDoThis = record
+    str : string;
+    x,y : integer;
+  end;
+  LetsDoThis2 = record
+    str : string;
+    pt : TPoint;
+  end;
+  Yeah = array of LetsDoThis2;
+  ArrThis = array of yeah;
+
+
+var
+  x : LetsDoThis;
+  y : arrthis;
+  j : TForm;
+  i,ii : integer;
+begin
+  x.str := 'Testmebitch';
+  x.x := 500;
+  x.y := -900;
+  Writeln(x);
+  SetLength(y,2);
+  for i := 0 to high(y) do
+  begin;
+    setlength(y[i],2);
+    for ii := 0 to high(y[i]) do
+    begin;
+      y[i][ii].pt := Point(i*5,-random(9000));
+      y[i][ii].str := format('[%d][%d]=%s',[i,ii,tostr(y[i][ii].pt)]);
+    end;
+  end;
+  Writeln(y);
+  Writeln(TPointArray([Point(5,5),Point(20,1337),point(1,2)]));
+  J := TForm.Create(nil);
+  Writeln(j.canvas);
+end.