Apply nemo's world resize patch
authorunc0rr
Sun, 25 Jan 2009 18:10:23 +0000
changeset 1753 2ccba26f1aa4
parent 1752 769986d39202
child 1754 a37392548124
Apply nemo's world resize patch
hedgewars/GSHandlers.inc
hedgewars/uAIAmmoTests.pas
hedgewars/uAIMisc.pas
hedgewars/uCollisions.pas
hedgewars/uConsts.pas
hedgewars/uFloat.pas
hedgewars/uGears.pas
hedgewars/uLand.pas
hedgewars/uLandGraphics.pas
hedgewars/uLandObjects.pas
hedgewars/uLandTemplates.pas
hedgewars/uMisc.pas
hedgewars/uVisualGears.pas
hedgewars/uWorld.pas
--- a/hedgewars/GSHandlers.inc	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/GSHandlers.inc	Sun Jan 25 18:10:23 2009 +0000
@@ -390,7 +390,7 @@
 	end;
 dec(i)
 until i = 0;
-if (Gear^.X < _0) or (Gear^.Y < _0) or (Gear^.X > _2048) or (Gear^.Y > _1024) then
+if (Gear^.X < _0) or (Gear^.Y < _0) or (Gear^.X > _4096) or (Gear^.Y > _2048) then // LAND_WIDTH / LAND_HEIGHT 
 	Gear^.doStep:= @doStepShotIdle
 end;
 
@@ -409,7 +409,7 @@
   Gear^.Y:= Gear^.Y + Gear^.dY;
   x:= hwRound(Gear^.X);
   y:= hwRound(Gear^.Y);
-  if ((y and $FFFFFC00) = 0) and ((x and $FFFFF800) = 0)
+  if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0)
      and (Land[y, x] <> 0) then inc(Gear^.Damage);
   if Gear^.Damage > 5 then AmmoShove(Gear, 7, 20);
   dec(i)
@@ -420,7 +420,7 @@
    dec(Gear^.Health, Gear^.Damage);
    Gear^.Damage:= 0
    end;
-if (Gear^.Health <= 0) or (Gear^.X < _0) or (Gear^.Y < _0) or (Gear^.X > _2048) or (Gear^.Y > _1024) then
+if (Gear^.Health <= 0) or (Gear^.X < _0) or (Gear^.Y < _0) or (Gear^.X > _4096) or (Gear^.Y > _2048) then // LAND_WIDTH / LAND_HEIGHT
 	Gear^.doStep:= @doStepShotIdle
 end;
 
@@ -712,7 +712,7 @@
 			begin
 			lx:= hwRound(Gear^.X + mdX * len);
 			ly:= hwRound(Gear^.Y + mdY * len);
-			if ((ly and $FFFFFC00) = 0) and ((lx and $FFFFF800) = 0) and (Land[ly, lx] <> 0) then
+			if ((ly and LAND_HEIGHT_MASK) = 0) and ((lx and LAND_WIDTH_MASK) = 0) and (Land[ly, lx] <> 0) then
 				begin
 				with RopePoints.ar[RopePoints.Count] do
 					begin
@@ -1301,7 +1301,7 @@
 if (GameTicks and $3F) = 0 then
 	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
 
-if (hwRound(Gear^.X) > 3072) or (hwRound(Gear^.X) < -1024) then DeleteGear(Gear)
+if (hwRound(Gear^.X) > (LAND_WIDTH+1024)) or (hwRound(Gear^.X) < -1024) then DeleteGear(Gear)
 end;
 
 procedure doStepAirAttack(Gear: PGear);
@@ -1777,7 +1777,7 @@
 x:= hwRound(Gear^.X);
 y:= hwRound(Gear^.Y);
 
-if ((y and $FFFFFC00) = 0) and ((x and $FFFFF800) = 0) then
+if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) then
 	if (Land[y, x] <> 0) then
 		begin
 		Gear^.dX.isNegative:= not Gear^.dX.isNegative;
--- a/hedgewars/uAIAmmoTests.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uAIAmmoTests.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -334,7 +334,7 @@
 repeat
   x:= x + vX;
   y:= y + vY;
-  if ((hwRound(x) and $FFFFF800) = 0)and((hwRound(y) and $FFFFFC00) = 0)
+  if ((hwRound(x) and LAND_WIDTH_MASK) = 0)and((hwRound(y) and LAND_HEIGHT_MASK) = 0)
      and (Land[hwRound(y), hwRound(x)] <> 0) then inc(d);
 until (Abs(Targ.X - hwRound(x)) + Abs(Targ.Y - hwRound(y)) < 4) or (x < _0) or (y < _0) or (x > _2048) or (y > _1024) or (d > 200);
 if Abs(Targ.X - hwRound(x)) + Abs(Targ.Y - hwRound(y)) < 3 then Result:= max(0, (4 - d div 50) * 7 * 1024)
--- a/hedgewars/uAIMisc.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uAIMisc.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -176,13 +176,13 @@
 function TestColl(x, y, r: LongInt): boolean;
 var b: boolean;
 begin
-b:= (((x-r) and $FFFFF800) = 0)and(((y-r) and $FFFFFC00) = 0) and (Land[y-r, x-r] <> 0);
+b:= (((x-r) and LAND_WIDTH_MASK) = 0)and(((y-r) and LAND_HEIGHT_MASK) = 0) and (Land[y-r, x-r] <> 0);
 if b then exit(true);
-b:=(((x-r) and $FFFFF800) = 0)and(((y+r) and $FFFFFC00) = 0) and (Land[y+r, x-r] <> 0);
+b:=(((x-r) and LAND_WIDTH_MASK) = 0)and(((y+r) and LAND_HEIGHT_MASK) = 0) and (Land[y+r, x-r] <> 0);
 if b then exit(true);
-b:=(((x+r) and $FFFFF800) = 0)and(((y-r) and $FFFFFC00) = 0) and (Land[y-r, x+r] <> 0);
+b:=(((x+r) and LAND_WIDTH_MASK) = 0)and(((y-r) and LAND_HEIGHT_MASK) = 0) and (Land[y-r, x+r] <> 0);
 if b then exit(true);
-TestColl:=(((x+r) and $FFFFF800) = 0)and(((y+r) and $FFFFFC00) = 0) and (Land[y+r, x+r] <> 0)
+TestColl:=(((x+r) and LAND_WIDTH_MASK) = 0)and(((y+r) and LAND_HEIGHT_MASK) = 0) and (Land[y+r, x+r] <> 0)
 end;
 
 function RateExplosion(Me: PGear; x, y, r: LongInt): LongInt;
--- a/hedgewars/uCollisions.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uCollisions.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -124,12 +124,12 @@
 x:= hwRound(Gear^.X);
 if Dir < 0 then x:= x - Gear^.Radius
            else x:= x + Gear^.Radius;
-if (x and $FFFFF800) = 0 then
+if (x and LAND_WIDTH_MASK) = 0 then
    begin
    y:= hwRound(Gear^.Y) - Gear^.Radius + 1;
    i:= y + Gear^.Radius * 2 - 2;
    repeat
-     if (y and $FFFFFC00) = 0 then
+     if (y and LAND_HEIGHT_MASK) = 0 then
         if Land[y, x] > TestWord then exit(true);
      inc(y)
    until (y > i);
@@ -155,12 +155,12 @@
 y:= hwRound(Gear^.Y);
 if Dir < 0 then y:= y - Gear^.Radius
            else y:= y + Gear^.Radius;
-if (y and $FFFFFC00) = 0 then
+if (y and LAND_HEIGHT_MASK) = 0 then
    begin
    x:= hwRound(Gear^.X) - Gear^.Radius + 1;
    i:= x + Gear^.Radius * 2 - 2;
    repeat
-     if (x and $FFFFF800) = 0 then
+     if (x and LAND_WIDTH_MASK) = 0 then
         if Land[y, x] > TestWord then exit(true);
      inc(x)
    until (x > i);
@@ -176,12 +176,12 @@
 x:= hwRound(Gear^.X);
 if Dir < 0 then x:= x - Gear^.Radius
            else x:= x + Gear^.Radius;
-if (x and $FFFFF800) = 0 then
+if (x and LAND_WIDTH_MASK) = 0 then
    begin
    y:= hwRound(Gear^.Y) - Gear^.Radius + 1;
    i:= y + Gear^.Radius * 2 - 2;
    repeat
-     if (y and $FFFFFC00) = 0 then
+     if (y and LAND_HEIGHT_MASK) = 0 then
            if Land[y, x] = COLOR_LAND then exit(true)
            else if Land[y, x] <> 0 then flag:= true;
      inc(y)
@@ -226,12 +226,12 @@
 y:= hwRound(Gear^.Y);
 if Dir < 0 then y:= y - Gear^.Radius
            else y:= y + Gear^.Radius;
-if (y and $FFFFFC00) = 0 then
+if (y and LAND_HEIGHT_MASK) = 0 then
    begin
    x:= hwRound(Gear^.X) - Gear^.Radius + 1;
    i:= x + Gear^.Radius * 2 - 2;
    repeat
-     if (x and $FFFFF800) = 0 then
+     if (x and LAND_WIDTH_MASK) = 0 then
         if Land[y, x] > 0 then
            if Land[y, x] = COLOR_LAND then exit(true)
            else if Land[y, x] <> 0 then flag:= true;
@@ -285,12 +285,12 @@
 y:= hwRound(Gear^.Y);
 if Dir < 0 then y:= y - Gear^.Radius
            else y:= y + Gear^.Radius;
-if (y and $FFFFFC00) = 0 then
+if (y and LAND_HEIGHT_MASK) = 0 then
    begin
    x:= hwRound(Gear^.X) - Gear^.Radius + 1;
    i:= x + Gear^.Radius * 2 - 2;
    repeat
-     if (x and $FFFFF800) = 0 then
+     if (x and LAND_WIDTH_MASK) = 0 then
         if Land[y, x] = COLOR_LAND then exit(true);
      inc(x)
    until (x > i);
--- a/hedgewars/uConsts.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uConsts.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -138,7 +138,12 @@
 
 	MAXNAMELEN = 192;
 
+    LAND_HEIGHT = 2047;  // could these be variable instead of const?
+    LAND_HEIGHT_MASK = $FFFFF800; // derive from LAND_HEIGHT?
+    LAND_WIDTH = 4095;
+    LAND_WIDTH_MASK = $FFFFF000;
 	COLOR_LAND = $00FFFFFF;
+	COLOR_INDESTRUCTIBLE = $0000F00D;
 
 	cifRandomize = $00000001;
 	cifTheme     = $00000002;
--- a/hedgewars/uFloat.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uFloat.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -125,6 +125,7 @@
             _450: hwFloat = (isNegative: false; QWordValue:  4294967296 * 450);
            _1024: hwFloat = (isNegative: false; QWordValue:  4294967296 * 1024);
            _2048: hwFloat = (isNegative: false; QWordValue:  4294967296 * 2048);
+           _4096: hwFloat = (isNegative: false; QWordValue:  4294967296 * 4096);
           _10000: hwFloat = (isNegative: false; QWordValue:  4294967296 * 10000);
 
          cLittle: hwFloat = (isNegative: false; QWordValue:           1);
--- a/hedgewars/uGears.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uGears.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -1180,7 +1180,7 @@
 	for i:= 0 to Pred(cLandAdditions) do
 		begin
 		Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0);
-		FindPlace(Gear, false, 0, 2048)
+		FindPlace(Gear, false, 0, LAND_WIDTH+1)
 		end
 end;
 
@@ -1371,10 +1371,10 @@
 	while (Count > 0) do
 		begin
 		i:= GetRandom(Count);
-		FindPlace(ar[i]^.Gear, false, 0, 2048);
+		FindPlace(ar[i]^.Gear, false, 0, LAND_WIDTH+1);
 		if ar[i]^.Gear <> nil then
 			begin
-			ar[i]^.Gear^.dX.isNegative:= ar[i]^.Gear^.X > _1024;
+			ar[i]^.Gear^.dX.isNegative:= ar[i]^.Gear^.X > _4096; // LAND_WIDTH
 			ar[i]^.Gear^.Pos:= GetRandom(19);
 			ar[i]:= ar[Count - 1]
 			end;
@@ -1482,7 +1482,7 @@
         FollowGear^.State:= Longword(i)
         end;
      end;
-FindPlace(FollowGear, true, 0, 2048)
+FindPlace(FollowGear, true, 0, 4096)
 end;
 
 procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt);
@@ -1492,8 +1492,8 @@
 		Result: LongInt;
 	begin
 	Result:= 0;
-	if (y and $FFFFFC00) = 0 then
-		for i:= max(x - r, 0) to min(x + r, 2043) do
+	if (y and LAND_HEIGHT_MASK) = 0 then
+		for i:= max(x - r, 0) to min(x + r, LAND_WIDTH-4) do
 			if Land[y, i] <> 0 then inc(Result);
 	CountNonZeroz:= Result
 	end;
@@ -1513,20 +1513,20 @@
 		inc(x, Delta);
 		cnt:= 0;
 		y:= -Gear^.Radius * 2;
-		while y < 1023 do
+		while y < LAND_HEIGHT do
 			begin
 			repeat
 				inc(y, 2);
-			until (y > 1023) or (CountNonZeroz(x, y, Gear^.Radius - 1) = 0);
+			until (y > LAND_HEIGHT) or (CountNonZeroz(x, y, Gear^.Radius - 1) = 0);
 			
 			sy:= y;
 
 			repeat
 				inc(y);
-			until (y > 1023) or (CountNonZeroz(x, y, Gear^.Radius - 1) <> 0);
+			until (y > LAND_HEIGHT) or (CountNonZeroz(x, y, Gear^.Radius - 1) <> 0);
 			
 			if (y - sy > Gear^.Radius * 2)
-				and (y < 1023)
+				and (y < LAND_HEIGHT)
 				and (CheckGearsNear(x, y - Gear^.Radius, [gtHedgehog, gtMine, gtCase], 110, 110) = nil) then
 				begin
 				ar[cnt].X:= x;
--- a/hedgewars/uLand.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uLand.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -20,9 +20,9 @@
 interface
 uses SDLh, uLandTemplates, uFloat, GL, uConsts;
 {$include options.inc}
-type TLandArray = packed array[0..1023, 0..2047] of LongWord;
+type TLandArray = packed array[0..LAND_HEIGHT, 0..LAND_WIDTH] of LongWord;
      TPreview = packed array[0..127, 0..31] of byte;
-     TDirtyTag = packed array[0..31, 0..63] of byte;
+     TDirtyTag = packed array[0..63, 0..127] of byte;
 
 var  Land: TLandArray;
      LandPixels: TLandArray;
@@ -118,7 +118,7 @@
        inc(y, sY);
        end;
 
-    if ((x and $FFFFF800) = 0) and ((y and $FFFFFC00) = 0) then
+    if ((x and LAND_WIDTH_MASK) = 0) and ((y and LAND_HEIGHT_MASK) = 0) then
        Land[y, x]:= Color;
     end
 end;
@@ -245,7 +245,7 @@
     begin
     TryDo(Stack.Count <= 8192, 'FillLand: stack overflow', true);
     _y:= _y + _dir;
-    if (_y < 0) or (_y > 1023) then exit;
+    if (_y < 0) or (_y > LAND_HEIGHT) then exit;
     with Stack.points[Stack.Count] do
          begin
          xl:= _xl;
@@ -279,7 +279,7 @@
       begin
       Pop(xl, xr, y, dir);
       while (xl > 0) and (Land[y, xl] <> 0) do dec(xl);
-      while (xr < 2047) and (Land[y, xr] <> 0) do inc(xr);
+      while (xr < LAND_WIDTH) and (Land[y, xr] <> 0) do inc(xr);
       while (xl < xr) do
             begin
             while (xl <= xr) and (Land[y, xl] = 0) do inc(xl);
@@ -305,10 +305,10 @@
 begin
 tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/LandTex', false, true, false);
 r.y:= 0;
-while r.y < 1024 do
+while r.y < 2048 do
 	begin
 	r.x:= 0;
-	while r.x < 2048 do
+	while r.x <= LAND_WIDTH do
 		begin
 		SDL_UpperBlit(tmpsurf, nil, Surface, @r);
 		inc(r.x, tmpsurf^.w)
@@ -318,22 +318,22 @@
 SDL_FreeSurface(tmpsurf);
 
 tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/Border', false, true, true);
-for x:= 0 to 2047 do
+for x:= 0 to 4095 do
 	begin
-	yd:= 1023;
+	yd:= LAND_HEIGHT;
 	repeat
 		while (yd > 0   ) and (Land[yd, x] =  0) do dec(yd);
 		
 		if (yd < 0) then yd:= 0;
 
-		while (yd < 1024) and (Land[yd, x] <> 0) do inc(yd);
+		while (yd <= LAND_HEIGHT) and (Land[yd, x] <> 0) do inc(yd);
 		dec(yd);
 		yu:= yd;
 		
 		while (yu > 0  ) and (Land[yu, x] <> 0) do dec(yu);
 		while (yu < yd ) and (Land[yu, x] =  0) do inc(yu);
 		
-		if (yd < 1023) and ((yd - yu) >= 16) then
+		if (yd < LAND_HEIGHT) and ((yd - yu) >= 16) then
 			begin
 			rr.x:= x;
 			rr.y:= yd - 15;
@@ -375,18 +375,18 @@
            begin
            for i:= 0 to pred(BasePointsCount) do
              if pa.ar[i].x <> NTPX then
-               pa.ar[i].x:= 2047 - pa.ar[i].x;
+               pa.ar[i].x:= LAND_WIDTH - pa.ar[i].x;
            for i:= 0 to pred(FillPointsCount) do
-               FillPoints^[i].x:= 2047 - FillPoints^[i].x;
+               FillPoints^[i].x:= LAND_WIDTH - FillPoints^[i].x;
            end;
 
      if canFlip then
         if getrandom(2) = 0 then
            begin
            for i:= 0 to pred(BasePointsCount) do
-               pa.ar[i].y:= 1023 - pa.ar[i].y;
+               pa.ar[i].y:= LAND_HEIGHT - pa.ar[i].y;
            for i:= 0 to pred(FillPointsCount) do
-               FillPoints^[i].y:= 1023 - FillPoints^[i].y;
+               FillPoints^[i].y:= LAND_HEIGHT - FillPoints^[i].y;
            end;
      end
 end;
@@ -440,8 +440,8 @@
   with pa.ar[i] do
     if x <> NTPX then
       begin
-      radz[i]:= Min(Max(x - cEdge, 0), Max(2048 - cEdge - x, 0));
-      radz[i]:= Min(radz[i], Min(Max(y - cEdge, 0), Max(1024 - cEdge - y, 0)));
+      radz[i]:= Min(Max(x - cEdge, 0), Max(LAND_WIDTH + 1 - cEdge - x, 0));
+      radz[i]:= Min(radz[i], Min(Max(y - cEdge, 0), Max(LAND_HEIGHT + 1 - cEdge - y, 0)));
       if radz[i] > 0 then
         for k:= 0 to Pred(i) do
           begin
@@ -453,7 +453,7 @@
 
 for i:= 0 to Pred(pa.Count) do
   with pa.ar[i] do
-    if ((x and $FFFFF800) = 0) and ((y and $FFFFFC00) = 0) then
+    if ((x and LAND_WIDTH_MASK) = 0) and ((y and LAND_HEIGHT_MASK) = 0) then
       begin
       px:= x;
       py:= y;
@@ -473,8 +473,8 @@
     i: Longword;
     y, x: Longword;
 begin
-for y:= 0 to 1023 do
-    for x:= 0 to 2047 do
+for y:= 0 to LAND_HEIGHT do
+    for x:= 0 to LAND_WIDTH do
         Land[y, x]:= COLOR_LAND;
 
 SetPoints(Template, pa);
@@ -504,6 +504,7 @@
 
 procedure LandSurface2LandPixels(Surface: PSDL_Surface);
 var x, y: LongInt;
+    c: LongWord;
 	p: PLongwordArray;
 begin
 TryDo(Surface <> nil, 'Assert (LandSurface <> nil) failed', true);
@@ -512,15 +513,50 @@
 	SDLTry(SDL_LockSurface(Surface) >= 0, true);
 
 p:= Surface^.pixels;
-for y:= 0 to 1023 do
+for y:= 0 to LAND_HEIGHT do
 	begin
-	for x:= 0 to 2047 do
+	for x:= 0 to LAND_WIDTH do
 		if Land[y, x] <> 0 then LandPixels[y, x]:= p^[x] or $FF000000;
 	p:= @(p^[Surface^.pitch div 4]);
 	end;
 
 if SDL_MustLock(Surface) then
-	SDL_UnlockSurface(Surface)
+	SDL_UnlockSurface(Surface);
+
+for y:= 0 to 63 do
+	for x:= 0 to 127 do
+	    LandDirty[y, x]:= 0;  // TODO - ask unC0Rr why he took this out of merge - doesn't it need initialising? seems random values could result in some unintended smoothing of initial map edges. also be slower.
+
+// experiment hardcoding cave
+for y:= 0 to LAND_HEIGHT do
+    begin
+    Land[y, 0]:= COLOR_INDESTRUCTIBLE;
+    Land[y, 1]:= COLOR_INDESTRUCTIBLE;
+    Land[y, 2]:= COLOR_INDESTRUCTIBLE;
+    Land[y, LAND_WIDTH-2]:= COLOR_INDESTRUCTIBLE;
+    Land[y, LAND_WIDTH-1]:= COLOR_INDESTRUCTIBLE;
+    Land[y, LAND_WIDTH]:= COLOR_INDESTRUCTIBLE;
+    if y mod 32 < 16 then c:= $FF000000
+    else c:= $FF00FFFF;   
+    LandPixels[y, 0]:= c;           
+    LandPixels[y, 1]:= c;           
+    LandPixels[y, 2]:= c;           
+    LandPixels[y, LAND_WIDTH-2]:= c;           
+    LandPixels[y, LAND_WIDTH-1]:= c;           
+    LandPixels[y, LAND_WIDTH]:= c;           
+    end;
+
+for x:= 0 to LAND_WIDTH do
+    begin
+    Land[0, x]:= COLOR_INDESTRUCTIBLE;
+    Land[1, x]:= COLOR_INDESTRUCTIBLE;
+    Land[2, x]:= COLOR_INDESTRUCTIBLE;
+    if x mod 32 < 16 then c:= $FF000000
+    else c:= $FF00FFFF;   
+    LandPixels[0, x]:= c;           
+    LandPixels[1, x]:= c;           
+    LandPixels[2, x]:= c;           
+    end;
 end;
 
 procedure GenLandSurface;
@@ -532,7 +568,7 @@
 
 AddProgress;
 
-tmpsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, 2048, 1024, 32, RMask, GMask, BMask, 0);
+tmpsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, LAND_WIDTH+1, LAND_HEIGHT+1, 32, RMask, GMask, BMask, 0);
 
 TryDo(tmpsurf <> nil, 'Error creating pre-land surface', true);
 ColorizeLand(tmpsurf);
@@ -545,7 +581,7 @@
 
 AddObjects;
 
-UpdateLandTexture(0, 1023);
+UpdateLandTexture(0, LAND_WIDTH);
 AddProgress
 end;
 
@@ -555,14 +591,14 @@
 WriteLnToConsole('Generating forts land...');
 
 tmpsurf:= LoadImage(Pathz[ptForts] + '/' + ClansArray[0]^.Teams[0]^.FortName + 'L', true, true, true);
-BlitImageAndGenerateCollisionInfo(0, 0, 1024, tmpsurf);
+BlitImageAndGenerateCollisionInfo(0, 0, LAND_WIDTH+1, tmpsurf);
 SDL_FreeSurface(tmpsurf);
 
 tmpsurf:= LoadImage(Pathz[ptForts] + '/' + ClansArray[1]^.Teams[0]^.FortName + 'R', true, true, true);
-BlitImageAndGenerateCollisionInfo(1024, 0, 1024, tmpsurf);
+BlitImageAndGenerateCollisionInfo(2048, 0, LAND_WIDTH+1, tmpsurf);
 SDL_FreeSurface(tmpsurf);
 
-UpdateLandTexture(0, 1023)
+UpdateLandTexture(0, LAND_HEIGHT)
 end;
 
 procedure LoadMap;
@@ -571,14 +607,14 @@
 WriteLnToConsole('Loading land from file...');
 AddProgress;
 tmpsurf:= LoadImage(Pathz[ptMapCurrent] + '/map', true, true, true);
-TryDo((tmpsurf^.w = 2048) and (tmpsurf^.h = 1024), 'Map dimensions should be 2048x1024!', true);
+TryDo((tmpsurf^.w = LAND_WIDTH+1) and (tmpsurf^.h = LAND_HEIGHT+1), 'Map dimensions should be 4096x2048!', true);
 
 TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Map should be 32bit', true);
 
-BlitImageAndGenerateCollisionInfo(0, 0, 2048, tmpsurf);
+BlitImageAndGenerateCollisionInfo(0, 0, LAND_WIDTH+1, tmpsurf);
 SDL_FreeSurface(tmpsurf);
 
-UpdateLandTexture(0, 1023)
+UpdateLandTexture(0, LAND_HEIGHT)
 end;
 
 procedure GenMap;
@@ -607,8 +643,8 @@
         for bit:= 0 to 7 do
             begin
             t:= 0;
-            for yy:= y * 8 to y * 8 + 7 do
-                for xx:= x * 64 + bit * 8 to x * 64 + bit * 8 + 7 do
+            for yy:= y * 16 to y * 16 + 7 do
+                for xx:= x * 128 + bit * 8 to x * 128 + bit * 8 + 7 do
                     if Land[yy, xx] <> 0 then inc(t);
             if t > 8 then Preview[y, x]:= Preview[y, x] or ($80 shr bit)
             end
@@ -619,15 +655,15 @@
 procedure UpdateLandTexture(Y, Height: LongInt);
 begin
 if (Height <= 0) then exit;
-TryDo((Y >= 0) and (Y < 1024), 'UpdateLandTexture: wrong Y parameter', true);
-TryDo(Y + Height < 1024, 'UpdateLandTexture: wrong Height parameter', true);
+TryDo((Y >= 0) and (Y <= LAND_HEIGHT), 'UpdateLandTexture: wrong Y parameter', true);
+TryDo(Y + Height <= LAND_WIDTH, 'UpdateLandTexture: wrong Height parameter', true);
 
 if LandTexture = nil then
-	LandTexture:= NewTexture(2048, 1024, @LandPixels)
+	LandTexture:= NewTexture(LAND_WIDTH+1, LAND_HEIGHT+1, @LandPixels)
 else
 	begin
 	glBindTexture(GL_TEXTURE_2D, LandTexture^.id);
-	glTexSubImage2D(GL_TEXTURE_2D, 0, 0, Y, 2048, Height, GL_RGBA, GL_UNSIGNED_BYTE, @LandPixels[Y, 0]);
+	glTexSubImage2D(GL_TEXTURE_2D, 0, 0, Y, LAND_WIDTH+1, Height, GL_RGBA, GL_UNSIGNED_BYTE, @LandPixels[Y, 0]);
 	end
 end;
 
--- a/hedgewars/uLandGraphics.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uLandGraphics.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -42,14 +42,22 @@
 procedure FillCircleLines(x, y, dx, dy: LongInt; Value: Longword);
 var i: LongInt;
 begin
-if ((y + dy) and $FFFFFC00) = 0 then
-   for i:= max(x - dx, 0) to min(x + dx, 2047) do Land[y + dy, i]:= Value;
-if ((y - dy) and $FFFFFC00) = 0 then
-   for i:= max(x - dx, 0) to min(x + dx, 2047) do Land[y - dy, i]:= Value;
-if ((y + dx) and $FFFFFC00) = 0 then
-   for i:= max(x - dy, 0) to min(x + dy, 2047) do Land[y + dx, i]:= Value;
-if ((y - dx) and $FFFFFC00) = 0 then
-   for i:= max(x - dy, 0) to min(x + dy, 2047) do Land[y - dx, i]:= Value;
+if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
+    for i:= max(x - dx, 0) to min(x + dx, 4095) do 
+        if Land[y + dy, i] <> COLOR_INDESTRUCTIBLE then
+            Land[y + dy, i]:= Value;
+if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
+   for i:= max(x - dx, 0) to min(x + dx, 4095) do 
+        if Land[y - dy, i] <> COLOR_INDESTRUCTIBLE then
+            Land[y - dy, i]:= Value;
+if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
+    for i:= max(x - dy, 0) to min(x + dy, 4095) do 
+        if Land[y + dx, i] <> COLOR_INDESTRUCTIBLE then
+            Land[y + dx, i]:= Value;
+if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
+    for i:= max(x - dy, 0) to min(x + dy, 4095) do 
+        if Land[y - dx, i] <> COLOR_INDESTRUCTIBLE then
+            Land[y - dx, i]:= Value;
 end;
 
 procedure ChangeCircleLines(x, y, dx, dy: LongInt; doSet: boolean);
@@ -57,28 +65,28 @@
 begin
 if not doSet then
    begin
-   if ((y + dy) and $FFFFFC00) = 0 then
-      for i:= max(x - dx, 0) to min(x + dx, 2047) do
+   if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dx, 0) to min(x + dx, 4095) do
           if (Land[y + dy, i] > 0) then dec(Land[y + dy, i]); // check > 0 because explosion can erase collision data
-   if ((y - dy) and $FFFFFC00) = 0 then
-      for i:= max(x - dx, 0) to min(x + dx, 2047) do
+   if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dx, 0) to min(x + dx, 4095) do
           if (Land[y - dy, i] > 0) then dec(Land[y - dy, i]);
-   if ((y + dx) and $FFFFFC00) = 0 then
-      for i:= max(x - dy, 0) to min(x + dy, 2047) do
+   if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dy, 0) to min(x + dy, 4095) do
           if (Land[y + dx, i] > 0) then dec(Land[y + dx, i]);
-   if ((y - dx) and $FFFFFC00) = 0 then
-      for i:= max(x - dy, 0) to min(x + dy, 2047) do
+   if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dy, 0) to min(x + dy, 4095) do
           if (Land[y - dx, i] > 0) then dec(Land[y - dx, i]);
    end else
    begin
-   if ((y + dy) and $FFFFFC00) = 0 then
-      for i:= max(x - dx, 0) to min(x + dx, 2047) do inc(Land[y + dy, i]);
-   if ((y - dy) and $FFFFFC00) = 0 then
-      for i:= max(x - dx, 0) to min(x + dx, 2047) do inc(Land[y - dy, i]);
-   if ((y + dx) and $FFFFFC00) = 0 then
-      for i:= max(x - dy, 0) to min(x + dy, 2047) do inc(Land[y + dx, i]);
-   if ((y - dx) and $FFFFFC00) = 0 then
-      for i:= max(x - dy, 0) to min(x + dy, 2047) do inc(Land[y - dx, i]);
+   if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dx, 0) to min(x + dx, 4095) do inc(Land[y + dy, i]);
+   if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dx, 0) to min(x + dx, 4095) do inc(Land[y - dy, i]);
+   if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dy, 0) to min(x + dy, 4095) do inc(Land[y + dx, i]);
+   if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
+      for i:= max(x - dy, 0) to min(x + dy, 4095) do inc(Land[y - dx, i]);
    end
 end;
 
@@ -125,45 +133,53 @@
 procedure FillLandCircleLines0(x, y, dx, dy: LongInt);
 var i: LongInt;
 begin
-if ((y + dy) and $FFFFFC00) = 0 then
-   for i:= max(x - dx, 0) to min(x + dx, 2047) do LandPixels[y + dy, i]:= 0;
-if ((y - dy) and $FFFFFC00) = 0 then
-   for i:= max(x - dx, 0) to min(x + dx, 2047) do LandPixels[y - dy, i]:= 0;
-if ((y + dx) and $FFFFFC00) = 0 then
-   for i:= max(x - dy, 0) to min(x + dy, 2047) do LandPixels[y + dx, i]:= 0;
-if ((y - dx) and $FFFFFC00) = 0 then
-   for i:= max(x - dy, 0) to min(x + dy, 2047) do LandPixels[y - dx, i]:= 0;
+if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
+    for i:= max(x - dx, 0) to min(x + dx, 4095) do 
+        if Land[y + dy, i] <> COLOR_INDESTRUCTIBLE then
+            LandPixels[y + dy, i]:= 0;
+if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
+    for i:= max(x - dx, 0) to min(x + dx, 4095) do 
+        if Land[y - dy, i] <> COLOR_INDESTRUCTIBLE then
+             LandPixels[y - dy, i]:= 0;
+if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
+    for i:= max(x - dy, 0) to min(x + dy, 4095) do 
+        if Land[y + dx, i] <> COLOR_INDESTRUCTIBLE then
+            LandPixels[y + dx, i]:= 0;
+if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
+    for i:= max(x - dy, 0) to min(x + dy, 4095) do 
+        if Land[y - dx, i] <> COLOR_INDESTRUCTIBLE then
+             LandPixels[y - dx, i]:= 0;
 end;
 
 procedure FillLandCircleLinesEBC(x, y, dx, dy: LongInt);
 var i: LongInt;
 begin
-if ((y + dy) and $FFFFFC00) = 0 then
-   for i:= max(x - dx, 0) to min(x + dx, 2047) do
+if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
+   for i:= max(x - dx, 0) to min(x + dx, 4095) do
        if Land[y + dy, i] = COLOR_LAND then 
           begin
           LandPixels[y + dy, i]:= cExplosionBorderColor;
 //          Despeckle(y + dy, i);
           LandDirty[(y + dy) div 32, i div 32]:= 1;
           end;
-if ((y - dy) and $FFFFFC00) = 0 then
-   for i:= max(x - dx, 0) to min(x + dx, 2047) do
+if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
+   for i:= max(x - dx, 0) to min(x + dx, 4095) do
        if Land[y - dy, i] = COLOR_LAND then
           begin
           LandPixels[y - dy, i]:= cExplosionBorderColor;
 //          Despeckle(y - dy, i);
           LandDirty[(y - dy) div 32, i div 32]:= 1;
           end;
-if ((y + dx) and $FFFFFC00) = 0 then
-   for i:= max(x - dy, 0) to min(x + dy, 2047) do
+if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
+   for i:= max(x - dy, 0) to min(x + dy, 4095) do
        if Land[y + dx, i] = COLOR_LAND then
            begin
            LandPixels[y + dx, i]:= cExplosionBorderColor;
 //           Despeckle(y + dx, i);
            LandDirty[(y + dx) div 32, i div 32]:= 1;
            end;
-if ((y - dx) and $FFFFFC00) = 0 then
-   for i:= max(x - dy, 0) to min(x + dy, 2047) do
+if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
+   for i:= max(x - dy, 0) to min(x + dy, 4095) do
        if Land[y - dx, i] = COLOR_LAND then
           begin
           LandPixels[y - dx, i]:= cExplosionBorderColor;
@@ -210,7 +226,7 @@
   if (dx = dy) then FillLandCircleLinesEBC(x, y, dx, dy);
 
 d:= max(Y - Radius - 1, 0);
-dy:= min(Y + Radius + 1, 1023) - d;
+dy:= min(Y + Radius + 1, 2047) - d;
 UpdateLandTexture(d, dy)
 end;
 
@@ -219,9 +235,10 @@
 begin
 for i:= 0 to Pred(Count) do
     begin
-    for ty:= max(y - Radius, 0) to min(y + Radius, 1023) do
-        for tx:= max(0, ar^[i].Left - Radius) to min(2047, ar^[i].Right + Radius) do
-            LandPixels[ty, tx]:= 0;
+    for ty:= max(y - Radius, 0) to min(y + Radius, LAND_HEIGHT) do
+        for tx:= max(0, ar^[i].Left - Radius) to min(LAND_WIDTH, ar^[i].Right + Radius) do
+            if Land[ty, tx] <> COLOR_INDESTRUCTIBLE then
+                LandPixels[ty, tx]:= 0;
     inc(y, dY)
     end;
 
@@ -230,9 +247,9 @@
 
 for i:= 0 to Pred(Count) do
     begin
-    for ty:= max(y - Radius, 0) to min(y + Radius, 1023) do
-        for tx:= max(0, ar^[i].Left - Radius) to min(2047, ar^[i].Right + Radius) do
-            if Land[ty, tx] = $FFFFFF then
+    for ty:= max(y - Radius, 0) to min(y + Radius, LAND_HEIGHT) do
+        for tx:= max(0, ar^[i].Left - Radius) to min(LAND_WIDTH, ar^[i].Right + Radius) do
+            if Land[ty, tx] = COLOR_LAND then
                 begin
                 LandPixels[ty, tx]:= cExplosionBorderColor;
                 LandDirty[trunc((y + dy)/32), trunc(i/32)]:= 1;
@@ -241,7 +258,7 @@
     end;
 
 
-UpdateLandTexture(0, 1023)
+UpdateLandTexture(0, LAND_HEIGHT)
 end;
 
 //
@@ -282,7 +299,7 @@
         Y:= Y + dY;
         tx:= hwRound(X);
         ty:= hwRound(Y);
-        if ((ty and $FFFFFC00) = 0) and ((tx and $FFFFF800) = 0) then
+        if ((ty and LAND_HEIGHT_MASK) = 0) and ((tx and LAND_WIDTH_MASK) = 0) then
          if Land[ty, tx] = COLOR_LAND then
            begin
            Land[ty, tx]:= 0;
@@ -306,7 +323,7 @@
     end;
 
 t:= max(stY - HalfWidth * 2 - 4 - abs(hwRound(dY * ticks)), 0);
-ty:= min(stY + HalfWidth * 2 + 4 + abs(hwRound(dY * ticks)), 1023) - t;
+ty:= min(stY + HalfWidth * 2 + 4 + abs(hwRound(dY * ticks)), 2047) - t;
 UpdateLandTexture(t, ty)
 end;
 
@@ -332,8 +349,8 @@
             begin
             for x:= 0 to Pred(w) do
                 if PLongword(@(p^[x * 4]))^ <> 0 then
-                   if (((cpY + y) and $FFFFFC00) <> 0) or
-                      (((cpX + x) and $FFFFF800) <> 0) or
+                   if (((cpY + y) and LAND_HEIGHT_MASK) <> 0) or
+                      (((cpX + x) and LAND_WIDTH_MASK) <> 0) or
                       (Land[cpY + y, cpX + x] <> 0) then
                       begin
                       if SDL_MustLock(Image) then
@@ -370,7 +387,7 @@
    SDL_UnlockSurface(Image);
 
 y:= max(cpY, 0);
-h:= min(cpY + Image^.h, 1023) - y;
+h:= min(cpY + Image^.h, LAND_HEIGHT) - y;
 UpdateLandTexture(y, h)
 end;
 
@@ -378,7 +395,7 @@
 function Despeckle(X, Y: LongInt): boolean;
 var nx, ny, i, j, c: LongInt;
 begin
-if Land[Y, X] <> 0 then // check neighbours
+if (Land[Y, X] <> 0) and (Land[Y, X] <> COLOR_INDESTRUCTIBLE) then // check neighbours
 	begin
 	c:= 0;
 	for i:= -1 to 1 do
@@ -387,7 +404,7 @@
 				begin
 				ny:= Y + i;
 				nx:= X + j;
-				if ((ny and $FFFFFC00) = 0) and ((nx and $FFFFF800) = 0) then
+				if ((ny and LAND_HEIGHT_MASK) = 0) and ((nx and LAND_WIDTH_MASK) = 0) then
 					if Land[ny, nx] <> 0 then
 						inc(c);
 				end;
@@ -406,11 +423,11 @@
 var x, y, xx, yy: LongInt;
     updatedRow, updatedCell: boolean;
 begin
-for y:= 0 to 31 do
+for y:= 0 to 63 do
 	begin
 	updatedRow:= false;
 	
-	for x:= 0 to 63 do
+	for x:= 0 to 127 do
 		begin
 			repeat
 			updatedCell:= false;
@@ -428,8 +445,8 @@
 		end;
 	
 	if updatedRow then
-		if y = 31 then
-			UpdateLandTexture(992, 31)
+		if y = 63 then
+			UpdateLandTexture(LAND_HEIGHT-31, 31)
 		else
 			UpdateLandTexture(y*32, 32);
 	end;
--- a/hedgewars/uLandObjects.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uLandObjects.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -168,17 +168,17 @@
 	inc(x1, 2);
 	if k = 16 then
 		begin
-		while (x2 < 1900) and (CountNonZeroz(x2, y) = 0) do inc(x2, 2);
+		while (x2 < (LAND_WIDTH-150)) and (CountNonZeroz(x2, y) = 0) do inc(x2, 2);
 		i:= x2 + 12;
 		repeat
 		inc(x2, 2);
 		k:= CountNonZeroz(x2, y)
-		until (x2 > 1900) or (k = 0) or (k = 16) or (x2 > i);
-		if (x2 < 1900) and (k = 16) and (x2 - x1 > 250)
+		until (x2 > (LAND_WIDTH-150)) or (k = 0) or (k = 16) or (x2 > i);
+		if (x2 < (LAND_WIDTH-150)) and (k = 16) and (x2 - x1 > 250)
 			and not CheckIntersect(x1 - 32, y - 64, x2 - x1 + 64, 144) then break;
 		end;
 x1:= 0;
-until y > 900;
+until y > (LAND_HEIGHT-125);
 
 if x1 > 0 then
 	begin
@@ -273,9 +273,9 @@
                    end
                 end;
              inc(y, 3);
-         until y > 1023 - Height;
+         until y > LAND_HEIGHT - Height;
          inc(x, getrandom(6) + 3)
-     until x > 2047 - Width;
+     until x > LAND_WIDTH - Width;
      Result:= cnt <> 0;
      if Result then
         begin
@@ -422,7 +422,7 @@
    Readln(f, vobFramesCount, vobFrameTicks, vobVelocity, vobFallSpeed);
 
 for i:= 0 to Pred(vobCount) do
-    AddVisualGear( -cScreenWidth + random(cScreenWidth * 2 + 2048), random(1200) - 100, vgtFlake);
+    AddVisualGear( -cScreenWidth + random(cScreenWidth * 2 + LAND_WIDTH), random(LAND_HEIGHT+200) - 100, vgtFlake);
 
 Close(f);
 {$I+}
--- a/hedgewars/uLandTemplates.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uLandTemplates.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -35,7 +35,947 @@
                      canMirror, canFlip: boolean;
                      end;
 
-const Template0Points: array[0..18] of TSDL_Rect =
+// Original positions.  Keeping them around in case I start
+// seriously distorting the other 18.  If we want smaller maps they might
+// still be needed
+// const Template0Points: array[0..18] of TSDL_Rect =
+//       (
+//        (x:  410; y: 1024; w:    1; h:    1),
+//        (x:  160; y:  760; w:  130; h:  170),
+//        (x:  342; y:  706; w:  316; h:  150),
+//        (x:  238; y:  386; w:  270; h:  180),
+//        (x:  246; y:  176; w:  242; h:  156),
+//        (x:  552; y:  128; w:  610; h:  300),
+//        (x:  750; y:  468; w:  352; h:  324),
+//        (x:  650; y: 1024; w:  500; h:    1),
+//        (x: 1250; y: 1100; w:    1; h:    1),
+//        (x: 1490; y: 1024; w:    1; h:    1),
+//        (x: 1452; y:  904; w:   74; h:   12),
+//        (x: 1248; y:  575; w:   68; h:  425),
+//        (x: 1426; y:  592; w:  140; h:  142),
+//        (x: 1310; y:  192; w:  150; h:  350),
+//        (x: 1588; y:  194; w:  148; h:  242),
+//        (x: 1618; y:  472; w:  276; h:  314),
+//        (x: 1710; y:  850; w:  130; h:   86),
+//        (x: 1734; y: 1024; w:    1; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template0FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template1Points: array[0..15] of TSDL_Rect =
+//       (
+//        (x:  400; y: 1024; w:   25; h:    1),
+//        (x:  284; y:  892; w:  254; h:   58),
+//        (x:  492; y:  634; w:  100; h:  200),
+//        (x:  254; y:  246; w:  276; h:  380),
+//        (x:  620; y:  254; w:  125; h:  270),
+//        (x:  680; y:  550; w:   96; h:  390),
+//        (x:  826; y:  614; w:  110; h:  350),
+//        (x:  800; y:  186; w:  150; h:  380),
+//        (x: 1000; y:  186; w:  170; h:  375),
+//        (x: 1012; y:  590; w:  188; h:  298),
+//        (x: 1240; y:  668; w:  136; h:  172),
+//        (x: 1270; y:  194; w:  120; h:  392),
+//        (x: 1514; y:  194; w:  364; h:  362),
+//        (x: 1450; y:  652; w:  315; h:  232),
+//        (x: 1460; y: 1024; w:   25; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template1FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template2Points: array[0..21] of TSDL_Rect =
+//       (
+//        (x:  354; y: 1024; w:    1; h:    1),
+//        (x:  232; y:  926; w:  226; h:   60),
+//        (x:  120; y:  846; w:  298; h:   62),
+//        (x:  280; y:  704; w:  210; h:  102),
+//        (x:  208; y:  422; w:  192; h:  248),
+//        (x:  292; y:  160; w:  206; h:  240),
+//        (x:  526; y:  172; w:   92; h:  334),
+//        (x:  462; y:  528; w:  226; h:  126),
+//        (x:  556; y:  678; w:  268; h:  156),
+//        (x:  722; y:  164; w:  138; h:  500),
+//        (x:  890; y:  156; w:   94; h:  352),
+//        (x:  898; y:  562; w:  170; h:  264),
+//        (x: 1092; y:  384; w:   84; h:  446),
+//        (x: 1206; y:  200; w:  158; h:  278),
+//        (x: 1300; y:  490; w:  104; h:  336),
+//        (x: 1416; y:  546; w:   90; h:  398),
+//        (x: 1546; y:  192; w:  134; h:  532),
+//        (x: 1702; y:  246; w:  156; h:  258),
+//        (x: 1700; y:  548; w:  132; h:  340),
+//        (x: 1534; y:  898; w:  252; h:   82),
+//        (x: 1604; y: 1024; w:    1; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template2FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template3Points: array[0..16] of TSDL_Rect =
+//       (
+//        (x:  348; y: 1024; w:    1; h:    1),
+//        (x:  236; y:  852; w:  208; h:   72),
+//        (x:  498; y:  710; w:  308; h:   60),
+//        (x:  728; y:  852; w:  434; h:   40),
+//        (x: 1174; y:  712; w:  332; h:   40),
+//        (x: 1402; y:  838; w:  226; h:   36),
+//        (x: 1530; y: 1024; w:    1; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x: 1660; y:  498; w:  111; h:  111),
+//        (x: 1270; y:  476; w:   34; h:  102),
+//        (x:  682; y:  414; w:  284; h:  132),
+//        (x:  230; y:  328; w:  126; h:  168),
+//        (x:  410; y:  174; w:  114; h:  100),
+//        (x:  790; y:  172; w:  352; h:  120),
+//        (x: 1274; y:  128; w:   60; h:  240),
+//        (x: 1434; y:  222; w:  254; h:  116),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template3FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template4Points: array[0..22] of TSDL_Rect =
+//       (
+//        (x:  418; y: 1024; w:    1; h:    1),
+//        (x:  248; y:  900; w:  186; h:   62),
+//        (x:  272; y:  692; w:  254; h:  138),
+//        (x:  610; y:  768; w:   90; h:  166),
+//        (x:  820; y:  616; w:  224; h:  258),
+//        (x: 1242; y:  758; w:   96; h:  146),
+//        (x: 1550; y:  698; w:  224; h:  134),
+//        (x: 1530; y:  902; w:  210; h:   54),
+//        (x: 1532; y: 1024; w:    1; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x:  202; y:  418; w:  110; h:   92),
+//        (x:  252; y:  312; w:  160; h:   32),
+//        (x:  150; y:  168; w:  134; h:   78),
+//        (x:  702; y:  160; w:  132; h:   84),
+//        (x:  702; y:  308; w:  230; h:   36),
+//        (x:  720; y:  408; w:  166; h:   96),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x: 1702; y:  434; w:  202; h:   42),
+//        (x: 1252; y:  388; w:  134; h:   98),
+//        (x: 1214; y:  152; w:  116; h:  154),
+//        (x: 1428; y:  252; w:  150; h:   70),
+//        (x: 1750; y:  152; w:   86; h:  220),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template4FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template5Points: array[0..15] of TSDL_Rect =
+//       (
+//        (x:  274; y: 1024; w:    1; h:    1),
+//        (x:  190; y:  918; w:  168; h:   26),
+//        (x:  382; y:  576; w:  122; h:  314),
+//        (x:  568; y:  744; w:   56; h:  180),
+//        (x:  678; y:  856; w:   64; h:   56),
+//        (x:  740; y:  650; w:  106; h:  220),
+//        (x:  644; y:  496; w:  162; h:  140),
+//        (x:  496; y:  210; w:  886; h:  174),
+//        (x:  934; y:  448; w:  296; h:  108),
+//        (x:  950; y:  752; w:  152; h:  146),
+//        (x: 1172; y:  774; w:   60; h:  152),
+//        (x: 1284; y:  722; w:  150; h:  138),
+//        (x: 1494; y:  364; w:   56; h:  582),
+//        (x: 1620; y:  774; w:   94; h:  232),
+//        (x: 1612; y: 1024; w:    1; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//        );
+//       Template5FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template6Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x:  368; y: 1022; w:    2; h:    2),
+//        (x:  266; y:  840; w:  302; h:  110),
+//        (x:  294; y:  512; w:  104; h:  290),
+//        (x:  570; y:  580; w:  364; h:  122),
+//        (x:  568; y:  440; w:  368; h:  100),
+//        (x:  232; y:  260; w:  482; h:  130),
+//        (x:  778; y:  242; w:   62; h:   64),
+//        (x:  990; y:  154; w:   58; h:  246),
+//        (x: 1200; y:  276; w:  590; h:   98),
+//        (x: 1088; y:  442; w:  214; h:  188),
+//        (x: 1050; y:  686; w:  406; h:   92),
+//        (x: 1584; y:  502; w:  190; h:  412),
+//        (x: 1646; y: 1020; w:    2; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//        );
+//       Template6FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template7Points: array[0..5] of TSDL_Rect =
+//       (
+//        (x:  162; y: 1024; w:  400; h:    1),
+//        (x:  226; y:  234; w:  142; h:  360),
+//        (x:  936; y:  740; w:  400; h:  200),
+//        (x: 1576; y:  176; w:  186; h:  550),
+//        (x: 1430; y: 1024; w:  454; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template7FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// 
+// const Template8Points: array[0..19] of TSDL_Rect =
+//       (
+//        (x:  364; y: 1024; w:   20; h:    1),
+//        (x:  290; y:  860; w:   64; h:   62),
+//        (x:  486; y:  750; w:   52; h:  146),
+//        (x:  256; y:  590; w:  116; h:  144),
+//        (x:  470; y:  468; w:  138; h:  168),
+//        (x:  242; y:  242; w:  158; h:  162),
+//        (x:  508; y:  310; w:  198; h:   72),
+//        (x:  770; y:  228; w:  118; h:  134),
+//        (x:  636; y:  718; w:  142; h:  132),
+//        (x:  968; y:  700; w:  172; h:   58),
+//        (x:  970; y:  804; w:  172; h:   62),
+//        (x: 1232; y:  704; w:   82; h:  226),
+//        (x: 1356; y:  594; w:   64; h:  152),
+//        (x: 1214; y:  334; w:  106; h:  152),
+//        (x: 1410; y:  260; w:  380; h:   82),
+//        (x: 1528; y:  422; w:   30; h:  118),
+//        (x: 1540; y:  588; w:  212; h:   50),
+//        (x: 1464; y:  746; w:  128; h:  146),
+//        (x: 1630; y: 1024; w:   20; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template8FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template9Points: array[0..31] of TSDL_Rect =
+//       (
+//        (x:  340; y: 1024; w:    1; h:    1),
+//        (x:  276; y:  902; w:   44; h:   54),
+//        (x:  434; y:  836; w:   58; h:   90),
+//        (x:  266; y:  734; w:   80; h:   80),
+//        (x:  246; y:  604; w:   96; h:  108),
+//        (x:  426; y:  646; w:  110; h:  112),
+//        (x:  234; y:  292; w:  118; h:  164),
+//        (x:  428; y:  396; w:  130; h:  110),
+//        (x:  516; y:  198; w:  344; h:   78),
+//        (x:  688; y:  426; w:   50; h:   40),
+//        (x:  626; y:  560; w:   32; h:  148),
+//        (x:  698; y:  650; w:  160; h:   34),
+//        (x:  674; y:  788; w:   36; h:  136),
+//        (x: 1014; y:  848; w:   48; h:   48),
+//        (x: 1086; y:  728; w:   64; h:   88),
+//        (x:  958; y:  660; w:   70; h:   74),
+//        (x: 1116; y:  596; w:   68; h:   70),
+//        (x: 1118; y:  484; w:   68; h:   82),
+//        (x:  958; y:  324; w:   44; h:  140),
+//        (x: 1272; y:  306; w:   52; h:   66),
+//        (x: 1254; y:  502; w:   58; h:   66),
+//        (x: 1234; y:  760; w:   76; h:  112),
+//        (x: 1380; y:  762; w:  124; h:   64),
+//        (x: 1472; y:  472; w:   54; h:  134),
+//        (x: 1410; y:  196; w:  246; h:   62),
+//        (x: 1706; y:  154; w:   38; h:  238),
+//        (x: 1812; y:  348; w:   28; h:   28),
+//        (x: 1692; y:  524; w:  144; h:   94),
+//        (x: 1632; y:  678; w:  248; h:   20),
+//        (x: 1632; y:  802; w:  238; h:   16),
+//        (x: 1680; y: 1024; w:    1; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template9FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template10Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x:  188; y: 1024; w:  190; h:    1),
+//        (x:  240; y:  682; w:  140; h:  150),
+//        (x:  314; y:  468; w:  352; h:   94),
+//        (x:  726; y:  246; w:  106; h:  282),
+//        (x:  902; y:  390; w:  368; h:  142),
+//        (x:  958; y:  588; w:  116; h:  244),
+//        (x:  876; y: 1024; w:   14; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x: 1064; y: 1024; w:   22; h:    1),
+//        (x: 1288; y:  795; w:  120; h:  120),
+//        (x: 1458; y:  274; w:  354; h:  448),
+//        (x: 1688; y:  795; w:  120; h:  120),
+//        (x: 1782; y: 1024; w:    2; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template10FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template11Points: array[0..9] of TSDL_Rect =
+//       (
+//        (x:  274; y: 1024; w:  166; h:    1),
+//        (x:  330; y:  862; w:   96; h:   92),
+//        (x:  492; y:  690; w:  152; h:  250),
+//        (x:  746; y:  646; w:   36; h:  270),
+//        (x:  938; y:  626; w:   54; h:  224),
+//        (x: 1134; y:  646; w:   44; h:  216),
+//        (x: 1292; y:  630; w:   46; h:  300),
+//        (x: 1448; y:  664; w:  158; h:  272),
+//        (x: 1584; y: 1024; w:  136; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template11FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template12Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x:  360; y: 1024; w:    2; h:    2),
+//        (x:  242; y:  630; w:   46; h:  286),
+//        (x:  454; y:  672; w:  194; h:   56),
+//        (x:  254; y:  334; w:  534; h:  200),
+//        (x:  870; y:  276; w:   58; h:  468),
+//        (x: 1076; y:  272; w:  198; h:  112),
+//        (x: 1000; y: 1024; w:   64; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x: 1244; y: 1024; w:   64; h:    2),
+//        (x: 1356; y:  494; w:  184; h:   94),
+//        (x: 1600; y:  414; w:   76; h:  358),
+//        (x: 1748; y:  584; w:  108; h:  304),
+//        (x: 1688; y: 1024; w:  176; h:    1),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template12FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template13Points: array[0..15] of TSDL_Rect =
+//       (
+//        (x:  446; y: 1024; w:  140; h:    2),
+//        (x:  280; y:  872; w:  196; h:   32),
+//        (x:  254; y:  680; w:  262; h:  134),
+//        (x:  654; y:  672; w:  220; h:  136),
+//        (x:  608; y:  490; w:  268; h:  110),
+//        (x:  300; y:  362; w:  104; h:  200),
+//        (x:  446; y:  224; w:  306; h:   58),
+//        (x:  916; y:  188; w:   84; h:  206),
+//        (x: 1148; y:  174; w:  104; h:  220),
+//        (x: 1426; y:  176; w:  120; h:  202),
+//        (x: 1556; y:  418; w:  192; h:   68),
+//        (x: 1226; y:  548; w:  246; h:   88),
+//        (x: 1256; y:  706; w:  194; h:  150),
+//        (x: 1568; y:  706; w:  198; h:  152),
+//        (x: 1444; y: 1024; w:    2; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template13FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template14Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x:  286; y: 1024; w:    2; h:    2),
+//        (x:  244; y:  886; w:   84; h:   54),
+//        (x:  212; y:  686; w:  150; h:  166),
+//        (x:  678; y:  840; w:  186; h:   98),
+//        (x:  744; y:  604; w:  124; h:   58),
+//        (x:  620; y:  182; w:  112; h:  194),
+//        (x:  988; y:  260; w:   92; h:  132),
+//        (x: 1310; y:  174; w:  154; h:  196),
+//        (x: 1160; y:  574; w:  118; h:   64),
+//        (x: 1052; y:  822; w:  328; h:   92),
+//        (x: 1596; y:  630; w:  242; h:  222),
+//        (x: 1598; y:  916; w:  254; h:   50),
+//        (x: 1608; y: 1024; w:    2; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template14FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template15Points: array[0..23] of TSDL_Rect =
+//       (
+//        (x:  302; y: 1024; w:    2; h:    2),
+//        (x:  240; y:  890; w:   44; h:   94),
+//        (x:  350; y:  862; w:   44; h:   94),
+//        (x:  460; y:  906; w:   78; h:   70),
+//        (x:  466; y: 1024; w:    2; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x:  804; y: 1024; w:    2; h:    2),
+//        (x:  720; y:  782; w:  108; h:  174),
+//        (x:  484; y:  624; w:  314; h:   98),
+//        (x:  310; y:  482; w:   76; h:  230),
+//        (x:  434; y:  286; w:  220; h:  154),
+//        (x:  840; y:  274; w:   56; h:  266),
+//        (x: 1024; y:  244; w:   78; h:  304),
+//        (x: 1248; y:  246; w:  116; h:  162),
+//        (x: 1580; y:  326; w:  190; h:  228),
+//        (x: 1360; y:  604; w:  140; h:   84),
+//        (x: 1196; y:  740; w:  242; h:  118),
+//        (x: 1216; y: 1024; w:    2; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x: 1494; y: 1024; w:    2; h:    2),
+//        (x: 1450; y:  928; w:   88; h:   34),
+//        (x: 1598; y:  838; w:   96; h:  112),
+//        (x: 1656; y: 1024; w:    2; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template15FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template16Points: array[0..28] of TSDL_Rect =
+//       (
+//        (x:  300; y: 1024; w:    2; h:    2),
+//        (x:  394; y:  902; w:   58; h:   62),
+//        (x:  380; y:  770; w:   94; h:   90),
+//        (x:  186; y:  626; w:   80; h:  220),
+//        (x:  376; y:  600; w:   82; h:  118),
+//        (x:  182; y:  328; w:  134; h:  226),
+//        (x:  368; y:  328; w:   52; h:   52),
+//        (x:  472; y:  174; w:   56; h:  212),
+//        (x:  588; y:  322; w:   60; h:   62),
+//        (x:  718; y:  324; w:  108; h:  218),
+//        (x:  612; y:  516; w:   36; h:  168),
+//        (x:  728; y:  656; w:  140; h:  134),
+//        (x:  588; y:  850; w:   74; h:   82),
+//        (x:  750; y: 1024; w:  102; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1),
+//        (x: 1304; y: 1024; w:   72; h:    2),
+//        (x: 1226; y:  908; w:  266; h:   34),
+//        (x: 1224; y:  748; w:  252; h:   80),
+//        (x: 1212; y:  576; w:  256; h:   94),
+//        (x: 1140; y:  434; w:  174; h:   86),
+//        (x: 1396; y:  318; w:  156; h:   96),
+//        (x: 1086; y:  214; w:  206; h:   66),
+//        (x: 1446; y:  156; w:  152; h:   40),
+//        (x: 1708; y:  272; w:   60; h:  162),
+//        (x: 1542; y:  488; w:  146; h:   80),
+//        (x: 1686; y:  634; w:  178; h:  122),
+//        (x: 1572; y:  820; w:   34; h:  124),
+//        (x: 1698; y: 1024; w:   52; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template16FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+// 
+// const Template17Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x:  230; y: 1024; w:    2; h:    2),
+//        (x:  166; y:  856; w:  128; h:  118),
+//        (x:  352; y:  856; w:   98; h:  114),
+//        (x:  348; y:  674; w:  140; h:  138),
+//        (x:  556; y:  672; w:  136; h:  142),
+//        (x:  746; y:  670; w:  114; h:  252),
+//        (x:  924; y:  378; w:  120; h:  390),
+//        (x: 1122; y:  462; w:  114; h:  210),
+//        (x: 1324; y:  306; w:  130; h:  252),
+//        (x: 1536; y:  206; w:  278; h:  234),
+//        (x: 1524; y:  644; w:  272; h:   52),
+//        (x: 1572; y:  852; w:  180; h:   56),
+//        (x: 1598; y: 1024; w:   42; h:    2),
+//        (x: NTPX; y:    0; w:    1; h:    1)
+//       );
+//       Template17FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 1023; y:    0)
+//       );
+
+// This is the original set, repositioned
+// const Template0Points: array[0..18] of TSDL_Rect =
+//       (
+//        (x: 1434;y: 2048; w:    1; h:    1),
+//        (x: 1184;y: 1784; w:  130; h:  170),
+//        (x: 1366;y: 1730; w:  316; h:  150),
+//        (x: 1262;y: 1410; w:  270; h:  180),
+//        (x: 1270;y: 1200; w:  242; h:  156),
+//        (x: 1576;y: 1152; w:  610; h:  300),
+//        (x: 1774;y: 1492; w:  352; h:  324),
+//        (x: 1674;y: 2048; w:  500; h:    1),
+//        (x: 2274;y: 2124; w:    1; h:    1),
+//        (x: 2514;y: 2048; w:    1; h:    1),
+//        (x: 2476;y: 1928; w:   74; h:   12),
+//        (x: 2272;y: 1599; w:   68; h:  425),
+//        (x: 2450;y: 1616; w:  140; h:  142),
+//        (x: 2334;y: 1216; w:  150; h:  350),
+//        (x: 2612;y: 1218; w:  148; h:  242),
+//        (x: 2642;y: 1496; w:  276; h:  314),
+//        (x: 2734;y: 1874; w:  130; h:   86),
+//        (x: 2758;y: 2048; w:    1; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template0FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template1Points: array[0..15] of TSDL_Rect =
+//       (
+//        (x: 1424;y: 2048; w:   25; h:    1),
+//        (x: 1308;y: 1916; w:  254; h:   58),
+//        (x: 1516;y: 1658; w:  100; h:  200),
+//        (x: 1278;y: 1270; w:  276; h:  380),
+//        (x: 1644;y: 1278; w:  125; h:  270),
+//        (x: 1704;y: 1574; w:   96; h:  390),
+//        (x: 1850;y: 1638; w:  110; h:  350),
+//        (x: 1824;y: 1210; w:  150; h:  380),
+//        (x: 2024;y: 1210; w:  170; h:  375),
+//        (x: 2036;y: 1614; w:  188; h:  298),
+//        (x: 2264;y: 1692; w:  136; h:  172),
+//        (x: 2294;y: 1218; w:  120; h:  392),
+//        (x: 2538;y: 1218; w:  364; h:  362),
+//        (x: 2474;y: 1676; w:  315; h:  232),
+//        (x: 2484;y: 2048; w:   25; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template1FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template2Points: array[0..21] of TSDL_Rect =
+//       (
+//        (x: 1378;y: 2048; w:    1; h:    1),
+//        (x: 1256;y: 1950; w:  226; h:   60),
+//        (x: 1144;y: 1870; w:  298; h:   62),
+//        (x: 1304;y: 1728; w:  210; h:  102),
+//        (x: 1232;y: 1446; w:  192; h:  248),
+//        (x: 1316;y: 1184; w:  206; h:  240),
+//        (x: 1550;y: 1196; w:   92; h:  334),
+//        (x: 1486;y: 1552; w:  226; h:  126),
+//        (x: 1580;y: 1702; w:  268; h:  156),
+//        (x: 1746;y: 1188; w:  138; h:  500),
+//        (x: 1914;y: 1180; w:   94; h:  352),
+//        (x: 1922;y: 1586; w:  170; h:  264),
+//        (x: 2116;y: 1408; w:   84; h:  446),
+//        (x: 2230;y: 1224; w:  158; h:  278),
+//        (x: 2324;y: 1514; w:  104; h:  336),
+//        (x: 2440;y: 1570; w:   90; h:  398),
+//        (x: 2570;y: 1216; w:  134; h:  532),
+//        (x: 2726;y: 1270; w:  156; h:  258),
+//        (x: 2724;y: 1572; w:  132; h:  340),
+//        (x: 2558;y: 1922; w:  252; h:   82),
+//        (x: 2628;y: 2048; w:    1; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template2FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template3Points: array[0..16] of TSDL_Rect =
+//       (
+//        (x: 1372;y: 2048; w:    1; h:    1),
+//        (x: 1260;y: 1876; w:  208; h:   72),
+//        (x: 1522;y: 1734; w:  308; h:   60),
+//        (x: 1752;y: 1876; w:  434; h:   40),
+//        (x: 2198;y: 1736; w:  332; h:   40),
+//        (x: 2426;y: 1862; w:  226; h:   36),
+//        (x: 2554;y: 2048; w:    1; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 2684;y: 1522; w:  111; h:  111),
+//        (x: 2294;y: 1500; w:   34; h:  102),
+//        (x: 1706;y: 1438; w:  284; h:  132),
+//        (x: 1254;y: 1352; w:  126; h:  168),
+//        (x: 1434;y: 1198; w:  114; h:  100),
+//        (x: 1814;y: 1196; w:  352; h:  120),
+//        (x: 2298;y: 1152; w:   60; h:  240),
+//        (x: 2458;y: 1246; w:  254; h:  116),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template3FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template4Points: array[0..22] of TSDL_Rect =
+//       (
+//        (x: 1442;y: 2048; w:    1; h:    1),
+//        (x: 1272;y: 1924; w:  186; h:   62),
+//        (x: 1296;y: 1716; w:  254; h:  138),
+//        (x: 1634;y: 1792; w:   90; h:  166),
+//        (x: 1844;y: 1640; w:  224; h:  258),
+//        (x: 2266;y: 1782; w:   96; h:  146),
+//        (x: 2574;y: 1722; w:  224; h:  134),
+//        (x: 2554;y: 1926; w:  210; h:   54),
+//        (x: 2556;y: 2048; w:    1; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 1226;y: 1442; w:  110; h:   92),
+//        (x: 1276;y: 1336; w:  160; h:   32),
+//        (x: 1174;y: 1192; w:  134; h:   78),
+//        (x: 1726;y: 1184; w:  132; h:   84),
+//        (x: 1726;y: 1332; w:  230; h:   36),
+//        (x: 1744;y: 1432; w:  166; h:   96),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 2726;y: 1458; w:  202; h:   42),
+//        (x: 2276;y: 1412; w:  134; h:   98),
+//        (x: 2238;y: 1176; w:  116; h:  154),
+//        (x: 2452;y: 1276; w:  150; h:   70),
+//        (x: 2774;y: 1176; w:   86; h:  220),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template4FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template5Points: array[0..15] of TSDL_Rect =
+//       (
+//        (x: 1298;y: 2048; w:    1; h:    1),
+//        (x: 1214;y: 1942; w:  168; h:   26),
+//        (x: 1406;y: 1600; w:  122; h:  314),
+//        (x: 1592;y: 1768; w:   56; h:  180),
+//        (x: 1702;y: 1880; w:   64; h:   56),
+//        (x: 1764;y: 1674; w:  106; h:  220),
+//        (x: 1668;y: 1520; w:  162; h:  140),
+//        (x: 1520;y: 1234; w:  886; h:  174),
+//        (x: 1958;y: 1472; w:  296; h:  108),
+//        (x: 1974;y: 1776; w:  152; h:  146),
+//        (x: 2196;y: 1798; w:   60; h:  152),
+//        (x: 2308;y: 1746; w:  150; h:  138),
+//        (x: 2518;y: 1388; w:   56; h:  582),
+//        (x: 2644;y: 1798; w:   94; h:  232),
+//        (x: 2636;y: 2048; w:    1; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//        );
+//       Template5FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template6Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x: 1392;y: 2046; w:    2; h:    2),
+//        (x: 1290;y: 1864; w:  302; h:  110),
+//        (x: 1318;y: 1536; w:  104; h:  290),
+//        (x: 1594;y: 1604; w:  364; h:  122),
+//        (x: 1592;y: 1464; w:  368; h:  100),
+//        (x: 1256;y: 1284; w:  482; h:  130),
+//        (x: 1802;y: 1266; w:   62; h:   64),
+//        (x: 2014;y: 1178; w:   58; h:  246),
+//        (x: 2224;y: 1300; w:  590; h:   98),
+//        (x: 2112;y: 1466; w:  214; h:  188),
+//        (x: 2074;y: 1710; w:  406; h:   92),
+//        (x: 2608;y: 1526; w:  190; h:  412),
+//        (x: 2670;y: 2044; w:    2; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//        );
+//       Template6FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template7Points: array[0..5] of TSDL_Rect =
+//       (
+//        (x: 1186;y: 2048; w:  400; h:    1),
+//        (x: 1250;y: 1258; w:  142; h:  360),
+//        (x: 1960;y: 1764; w:  400; h:  200),
+//        (x: 2600;y: 1200; w:  186; h:  550),
+//        (x: 2454;y: 2048; w:  454; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template7FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// 
+// const Template8Points: array[0..19] of TSDL_Rect =
+//       (
+//        (x: 1388;y: 2048; w:   20; h:    1),
+//        (x: 1314;y: 1884; w:   64; h:   62),
+//        (x: 1510;y: 1774; w:   52; h:  146),
+//        (x: 1280;y: 1614; w:  116; h:  144),
+//        (x: 1494;y: 1492; w:  138; h:  168),
+//        (x: 1266;y: 1266; w:  158; h:  162),
+//        (x: 1532;y: 1334; w:  198; h:   72),
+//        (x: 1794;y: 1252; w:  118; h:  134),
+//        (x: 1660;y: 1742; w:  142; h:  132),
+//        (x: 1992;y: 1724; w:  172; h:   58),
+//        (x: 1994;y: 1828; w:  172; h:   62),
+//        (x: 2256;y: 1728; w:   82; h:  226),
+//        (x: 2380;y: 1618; w:   64; h:  152),
+//        (x: 2238;y: 1358; w:  106; h:  152),
+//        (x: 2434;y: 1284; w:  380; h:   82),
+//        (x: 2552;y: 1446; w:   30; h:  118),
+//        (x: 2564;y: 1612; w:  212; h:   50),
+//        (x: 2488;y: 1770; w:  128; h:  146),
+//        (x: 2654;y: 2048; w:   20; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template8FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template9Points: array[0..31] of TSDL_Rect =
+//       (
+//        (x: 1364;y: 2048; w:    1; h:    1),
+//        (x: 1300;y: 1926; w:   44; h:   54),
+//        (x: 1458;y: 1860; w:   58; h:   90),
+//        (x: 1290;y: 1758; w:   80; h:   80),
+//        (x: 1270;y: 1628; w:   96; h:  108),
+//        (x: 1450;y: 1670; w:  110; h:  112),
+//        (x: 1258;y: 1316; w:  118; h:  164),
+//        (x: 1452;y: 1420; w:  130; h:  110),
+//        (x: 1540;y: 1222; w:  344; h:   78),
+//        (x: 1712;y: 1450; w:   50; h:   40),
+//        (x: 1650;y: 1584; w:   32; h:  148),
+//        (x: 1722;y: 1674; w:  160; h:   34),
+//        (x: 1698;y: 1812; w:   36; h:  136),
+//        (x: 2038;y: 1872; w:   48; h:   48),
+//        (x: 2110;y: 1752; w:   64; h:   88),
+//        (x: 1982;y: 1684; w:   70; h:   74),
+//        (x: 2140;y: 1620; w:   68; h:   70),
+//        (x: 2142;y: 1508; w:   68; h:   82),
+//        (x: 1982;y: 1348; w:   44; h:  140),
+//        (x: 2296;y: 1330; w:   52; h:   66),
+//        (x: 2278;y: 1526; w:   58; h:   66),
+//        (x: 2258;y: 1784; w:   76; h:  112),
+//        (x: 2404;y: 1786; w:  124; h:   64),
+//        (x: 2496;y: 1496; w:   54; h:  134),
+//        (x: 2434;y: 1220; w:  246; h:   62),
+//        (x: 2730;y: 1178; w:   38; h:  238),
+//        (x: 2836;y: 1372; w:   28; h:   28),
+//        (x: 2716;y: 1548; w:  144; h:   94),
+//        (x: 2656;y: 1702; w:  248; h:   20),
+//        (x: 2656;y: 1826; w:  238; h:   16),
+//        (x: 2704;y: 2048; w:    1; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template9FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template10Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x: 1212;y: 2048; w:  190; h:    1),
+//        (x: 1264;y: 1706; w:  140; h:  150),
+//        (x: 1338;y: 1492; w:  352; h:   94),
+//        (x: 1750;y: 1270; w:  106; h:  282),
+//        (x: 1926;y: 1414; w:  368; h:  142),
+//        (x: 1982;y: 1612; w:  116; h:  244),
+//        (x: 1900;y: 2048; w:   14; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 2088;y: 2048; w:   22; h:    1),
+//        (x: 2312;y: 1819; w:  120; h:  120),
+//        (x: 2482;y: 1298; w:  354; h:  448),
+//        (x: 2712;y: 1819; w:  120; h:  120),
+//        (x: 2806;y: 2048; w:    2; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template10FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template11Points: array[0..9] of TSDL_Rect =
+//       (
+//        (x: 1298;y: 2048; w:  166; h:    1),
+//        (x: 1354;y: 1886; w:   96; h:   92),
+//        (x: 1516;y: 1714; w:  152; h:  250),
+//        (x: 1770;y: 1670; w:   36; h:  270),
+//        (x: 1962;y: 1650; w:   54; h:  224),
+//        (x: 2158;y: 1670; w:   44; h:  216),
+//        (x: 2316;y: 1654; w:   46; h:  300),
+//        (x: 2472;y: 1688; w:  158; h:  272),
+//        (x: 2608;y: 2048; w:  136; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template11FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template12Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x: 1384;y: 2048; w:    2; h:    2),
+//        (x: 1266;y: 1654; w:   46; h:  286),
+//        (x: 1478;y: 1696; w:  194; h:   56),
+//        (x: 1278;y: 1358; w:  534; h:  200),
+//        (x: 1894;y: 1300; w:   58; h:  468),
+//        (x: 2100;y: 1296; w:  198; h:  112),
+//        (x: 2024;y: 2048; w:   64; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 2268;y: 2048; w:   64; h:    2),
+//        (x: 2380;y: 1518; w:  184; h:   94),
+//        (x: 2624;y: 1438; w:   76; h:  358),
+//        (x: 2772;y: 1608; w:  108; h:  304),
+//        (x: 2712;y: 2048; w:  176; h:    1),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template12FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template13Points: array[0..15] of TSDL_Rect =
+//       (
+//        (x: 1470;y: 2048; w:  140; h:    2),
+//        (x: 1304;y: 1896; w:  196; h:   32),
+//        (x: 1278;y: 1704; w:  262; h:  134),
+//        (x: 1678;y: 1696; w:  220; h:  136),
+//        (x: 1632;y: 1514; w:  268; h:  110),
+//        (x: 1324;y: 1386; w:  104; h:  200),
+//        (x: 1470;y: 1248; w:  306; h:   58),
+//        (x: 1940;y: 1212; w:   84; h:  206),
+//        (x: 2172;y: 1198; w:  104; h:  220),
+//        (x: 2450;y: 1200; w:  120; h:  202),
+//        (x: 2580;y: 1442; w:  192; h:   68),
+//        (x: 2250;y: 1572; w:  246; h:   88),
+//        (x: 2280;y: 1730; w:  194; h:  150),
+//        (x: 2592;y: 1730; w:  198; h:  152),
+//        (x: 2468;y: 2048; w:    2; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template13FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template14Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x: 1310;y: 2048; w:    2; h:    2),
+//        (x: 1268;y: 1910; w:   84; h:   54),
+//        (x: 1236;y: 1710; w:  150; h:  166),
+//        (x: 1702;y: 1864; w:  186; h:   98),
+//        (x: 1768;y: 1628; w:  124; h:   58),
+//        (x: 1644;y: 1206; w:  112; h:  194),
+//        (x: 2012;y: 1284; w:   92; h:  132),
+//        (x: 2334;y: 1198; w:  154; h:  196),
+//        (x: 2184;y: 1598; w:  118; h:   64),
+//        (x: 2076;y: 1846; w:  328; h:   92),
+//        (x: 2620;y: 1654; w:  242; h:  222),
+//        (x: 2622;y: 1940; w:  254; h:   50),
+//        (x: 2632;y: 2048; w:    2; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template14FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template15Points: array[0..23] of TSDL_Rect =
+//       (
+//        (x: 1326;y: 2048; w:    2; h:    2),
+//        (x: 1264;y: 1914; w:   44; h:   94),
+//        (x: 1374;y: 1886; w:   44; h:   94),
+//        (x: 1484;y: 1930; w:   78; h:   70),
+//        (x: 1490;y: 2048; w:    2; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 1828;y: 2048; w:    2; h:    2),
+//        (x: 1744;y: 1806; w:  108; h:  174),
+//        (x: 1508;y: 1648; w:  314; h:   98),
+//        (x: 1334;y: 1506; w:   76; h:  230),
+//        (x: 1458;y: 1310; w:  220; h:  154),
+//        (x: 1864;y: 1298; w:   56; h:  266),
+//        (x: 2048;y: 1268; w:   78; h:  304),
+//        (x: 2272;y: 1270; w:  116; h:  162),
+//        (x: 2604;y: 1350; w:  190; h:  228),
+//        (x: 2384;y: 1628; w:  140; h:   84),
+//        (x: 2220;y: 1764; w:  242; h:  118),
+//        (x: 2240;y: 2048; w:    2; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 2518;y: 2048; w:    2; h:    2),
+//        (x: 2474;y: 1952; w:   88; h:   34),
+//        (x: 2622;y: 1862; w:   96; h:  112),
+//        (x: 2680;y: 2048; w:    2; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template15FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template16Points: array[0..28] of TSDL_Rect =
+//       (
+//        (x: 1324;y: 2048; w:    2; h:    2),
+//        (x: 1418;y: 1926; w:   58; h:   62),
+//        (x: 1404;y: 1794; w:   94; h:   90),
+//        (x: 1210;y: 1650; w:   80; h:  220),
+//        (x: 1400;y: 1624; w:   82; h:  118),
+//        (x: 1206;y: 1352; w:  134; h:  226),
+//        (x: 1392;y: 1352; w:   52; h:   52),
+//        (x: 1496;y: 1198; w:   56; h:  212),
+//        (x: 1612;y: 1346; w:   60; h:   62),
+//        (x: 1742;y: 1348; w:  108; h:  218),
+//        (x: 1636;y: 1540; w:   36; h:  168),
+//        (x: 1752;y: 1680; w:  140; h:  134),
+//        (x: 1612;y: 1874; w:   74; h:   82),
+//        (x: 1774;y: 2048; w:  102; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1),
+//        (x: 2328;y: 2048; w:   72; h:    2),
+//        (x: 2250;y: 1932; w:  266; h:   34),
+//        (x: 2248;y: 1772; w:  252; h:   80),
+//        (x: 2236;y: 1600; w:  256; h:   94),
+//        (x: 2164;y: 1458; w:  174; h:   86),
+//        (x: 2420;y: 1342; w:  156; h:   96),
+//        (x: 2110;y: 1238; w:  206; h:   66),
+//        (x: 2470;y: 1180; w:  152; h:   40),
+//        (x: 2732;y: 1296; w:   60; h:  162),
+//        (x: 2566;y: 1512; w:  146; h:   80),
+//        (x: 2710;y: 1658; w:  178; h:  122),
+//        (x: 2596;y: 1844; w:   34; h:  124),
+//        (x: 2722;y: 2048; w:   52; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template16FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047;y: 1024)
+//       );
+// 
+// const Template17Points: array[0..13] of TSDL_Rect =
+//       (
+//        (x: 1254;y: 2048; w:    2; h:    2),
+//        (x: 1190;y: 1880; w:  128; h:  118),
+//        (x: 1376;y: 1880; w:   98; h:  114),
+//        (x: 1372;y: 1698; w:  140; h:  138),
+//        (x: 1580;y: 1696; w:  136; h:  142),
+//        (x: 1770;y: 1694; w:  114; h:  252),
+//        (x: 1948;y: 1402; w:  120; h:  390),
+//        (x: 2146;y: 1486; w:  114; h:  210),
+//        (x: 2348;y: 1330; w:  130; h:  252),
+//        (x: 2560;y: 1230; w:  278; h:  234),
+//        (x: 2548;y: 1668; w:  272; h:   52),
+//        (x: 2596;y: 1876; w:  180; h:   56),
+//        (x: 2622;y: 2048; w:   42; h:    2),
+//        (x: NTPX;y: 2048; w:    1; h:    1)
+//       );
+//       Template17FPoints: array[0..0] of TPoint =
+//       (
+//        (x: 2047; y:    0)
+//       );
+
+//////////////////////////////////////////////////////////////////////////////
+/////////////////// MIRRORED FOUR TIMES //////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+// Hi unC0Rr.  Yeah, I know this is kind of lame.  Real templates should probably
+// be made from scratch for taller/wider area.  But hey, for testing.
+// The first 18 are in all 4 quadrants, the last 18 are in only the bottom 2
+const Template0Points: array[0..75] of TSDL_Rect =
       (
        (x:  410; y: 1024; w:    1; h:    1),
        (x:  160; y:  760; w:  130; h:  170),
@@ -55,14 +995,71 @@
        (x: 1618; y:  472; w:  276; h:  314),
        (x: 1710; y:  850; w:  130; h:   86),
        (x: 1734; y: 1024; w:    1; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x: 410;y: 2048; w:    1; h:    1), // Y + 1024
+       (x: 160;y: 1784; w:  130; h:  170),
+       (x: 342;y: 1730; w:  316; h:  150),
+       (x: 238;y: 1410; w:  270; h:  180),
+       (x: 246;y: 1200; w:  242; h:  156),
+       (x: 552;y: 1152; w:  610; h:  300),
+       (x: 750;y: 1492; w:  352; h:  324),
+       (x: 650;y: 2048; w:  500; h:    1),
+       (x: 1250;y: 2124; w:    1; h:    1),
+       (x: 1490;y: 2048; w:    1; h:    1),
+       (x: 1452;y: 1928; w:   74; h:   12),
+       (x: 1248;y: 1599; w:   68; h:  425),
+       (x: 1426;y: 1616; w:  140; h:  142),
+       (x: 1310;y: 1216; w:  150; h:  350),
+       (x: 1588;y: 1218; w:  148; h:  242),
+       (x: 1618;y: 1496; w:  276; h:  314),
+       (x: 1710;y: 1874; w:  130; h:   86),
+       (x: 1734;y: 2048; w:    1; h:    1),
+       (x: NTPX;y: 1024; w:    1; h:    1),
+       (x:  2458; y: 1024; w:    1; h:    1), // X + 2048
+       (x:  2208; y:  760; w:  130; h:  170),
+       (x:  2390; y:  706; w:  316; h:  150),
+       (x:  2286; y:  386; w:  270; h:  180),
+       (x:  2294; y:  176; w:  242; h:  156),
+       (x:  2600; y:  128; w:  610; h:  300),
+       (x:  2798; y:  468; w:  352; h:  324),
+       (x:  2698; y: 1024; w:  500; h:    1),
+       (x: 3298; y: 1100; w:    1; h:    1),
+       (x: 3538; y: 1024; w:    1; h:    1),
+       (x: 3500; y:  904; w:   74; h:   12),
+       (x: 3296; y:  575; w:   68; h:  425),
+       (x: 3474; y:  592; w:  140; h:  142),
+       (x: 3358; y:  192; w:  150; h:  350),
+       (x: 3636; y:  194; w:  148; h:  242),
+       (x: 3666; y:  472; w:  276; h:  314),
+       (x: 3758; y:  850; w:  130; h:   86),
+       (x: 3782; y: 1024; w:    1; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2458; y: 2048; w:    1; h:    1), // X + 2048, Y+1024
+       (x:  2208; y:  1784; w:  130; h:  170),
+       (x:  2390; y:  1730; w:  316; h:  150),
+       (x:  2286; y:  1410; w:  270; h:  180),
+       (x:  2294; y:  1200; w:  242; h:  156),
+       (x:  2600; y:  1152; w:  610; h:  300),
+       (x:  2798; y:  1492; w:  352; h:  324),
+       (x:  2698; y: 2048; w:  500; h:    1),
+       (x: 3298; y: 2124; w:    1; h:    1),
+       (x: 3538; y: 2048; w:    1; h:    1),
+       (x: 3500; y:  1928; w:   74; h:   12),
+       (x: 3296; y:  1599; w:   68; h:  425),
+       (x: 3474; y:  1616; w:  140; h:  142),
+       (x: 3358; y:  1216; w:  150; h:  350),
+       (x: 3636; y:  1218; w:  148; h:  242),
+       (x: 3666; y:  1496; w:  276; h:  314),
+       (x: 3758; y:  1874; w:  130; h:   86),
+       (x: 3782; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template0FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0) // TODO - determine (or ask unC0Rr) what these initial values mean
       );
 
-const Template1Points: array[0..15] of TSDL_Rect =
+const Template1Points: array[0..63] of TSDL_Rect =
       (
        (x:  400; y: 1024; w:   25; h:    1),
        (x:  284; y:  892; w:  254; h:   58),
@@ -79,14 +1076,62 @@
        (x: 1514; y:  194; w:  364; h:  362),
        (x: 1450; y:  652; w:  315; h:  232),
        (x: 1460; y: 1024; w:   25; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  400; y: 2048; w:   25; h:    1), // Y + 1024
+       (x:  284; y:  1916; w:  254; h:   58),
+       (x:  492; y:  1658; w:  100; h:  200),
+       (x:  254; y:  1270; w:  276; h:  380),
+       (x:  620; y:  1278; w:  125; h:  270),
+       (x:  680; y:  1574; w:   96; h:  390),
+       (x:  826; y:  1638; w:  110; h:  350),
+       (x:  800; y:  1210; w:  150; h:  380),
+       (x: 1000; y:  1210; w:  170; h:  375),
+       (x: 1012; y:  1614; w:  188; h:  298),
+       (x: 1240; y:  1692; w:  136; h:  172),
+       (x: 1270; y:  1218; w:  120; h:  392),
+       (x: 1514; y:  1218; w:  364; h:  362),
+       (x: 1450; y:  1676; w:  315; h:  232),
+       (x: 1460; y: 2048; w:   25; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2448; y: 1024; w:   25; h:    1), // X + 2048
+       (x:  2332; y:  892; w:  254; h:   58),
+       (x:  2540; y:  634; w:  100; h:  200),
+       (x:  2302; y:  246; w:  276; h:  380),
+       (x:  2668; y:  254; w:  125; h:  270),
+       (x:  2728; y:  550; w:   96; h:  390),
+       (x:  2874; y:  614; w:  110; h:  350),
+       (x:  2848; y:  186; w:  150; h:  380),
+       (x: 3048; y:  186; w:  170; h:  375),
+       (x: 3060; y:  590; w:  188; h:  298),
+       (x: 3288; y:  668; w:  136; h:  172),
+       (x: 3318; y:  194; w:  120; h:  392),
+       (x: 3562; y:  194; w:  364; h:  362),
+       (x: 3498; y:  652; w:  315; h:  232),
+       (x: 3508; y: 1024; w:   25; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2448; y: 2048; w:   25; h:    1), // X + 2048, Y + 1024
+       (x:  2332; y:  1916; w:  254; h:   58),
+       (x:  2540; y:  1658; w:  100; h:  200),
+       (x:  2302; y:  1270; w:  276; h:  380),
+       (x:  2668; y:  1278; w:  125; h:  270),
+       (x:  2728; y:  1574; w:   96; h:  390),
+       (x:  2874; y:  1638; w:  110; h:  350),
+       (x:  2848; y:  1210; w:  150; h:  380),
+       (x: 3048; y:  1210; w:  170; h:  375),
+       (x: 3060; y:  1614; w:  188; h:  298),
+       (x: 3288; y:  1692; w:  136; h:  172),
+       (x: 3318; y:  1218; w:  120; h:  392),
+       (x: 3562; y:  1218; w:  364; h:  362),
+       (x: 3498; y:  1676; w:  315; h:  232),
+       (x: 3508; y: 2048; w:   25; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template1FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template2Points: array[0..21] of TSDL_Rect =
+const Template2Points: array[0..87] of TSDL_Rect =
       (
        (x:  354; y: 1024; w:    1; h:    1),
        (x:  232; y:  926; w:  226; h:   60),
@@ -109,14 +1154,80 @@
        (x: 1700; y:  548; w:  132; h:  340),
        (x: 1534; y:  898; w:  252; h:   82),
        (x: 1604; y: 1024; w:    1; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  354; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  232; y:  1950; w:  226; h:   60),
+       (x:  120; y:  1870; w:  298; h:   62),
+       (x:  280; y:  1728; w:  210; h:  102),
+       (x:  208; y:  1446; w:  192; h:  248),
+       (x:  292; y:  1184; w:  206; h:  240),
+       (x:  526; y:  1196; w:   92; h:  334),
+       (x:  462; y:  1552; w:  226; h:  126),
+       (x:  556; y:  1702; w:  268; h:  156),
+       (x:  722; y:  1188; w:  138; h:  500),
+       (x:  890; y:  1180; w:   94; h:  352),
+       (x:  898; y:  1586; w:  170; h:  264),
+       (x: 1092; y:  1408; w:   84; h:  446),
+       (x: 1206; y:  1224; w:  158; h:  278),
+       (x: 1300; y:  1514; w:  104; h:  336),
+       (x: 1416; y:  1570; w:   90; h:  398),
+       (x: 1546; y:  1216; w:  134; h:  532),
+       (x: 1702; y:  1270; w:  156; h:  258),
+       (x: 1700; y:  1572; w:  132; h:  340),
+       (x: 1534; y:  1922; w:  252; h:   82),
+       (x: 1604; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2402; y: 1024; w:    1; h:    1), // X + 2048
+       (x:  2280; y:  926; w:  226; h:   60),
+       (x:  2168; y:  846; w:  298; h:   62),
+       (x:  2328; y:  704; w:  210; h:  102),
+       (x:  2256; y:  422; w:  192; h:  248),
+       (x:  2340; y:  160; w:  206; h:  240),
+       (x:  2574; y:  172; w:   92; h:  334),
+       (x:  2510; y:  528; w:  226; h:  126),
+       (x:  2604; y:  678; w:  268; h:  156),
+       (x:  2770; y:  164; w:  138; h:  500),
+       (x:  2938; y:  156; w:   94; h:  352),
+       (x:  2946; y:  562; w:  170; h:  264),
+       (x: 3140; y:  384; w:   84; h:  446),
+       (x: 3254; y:  200; w:  158; h:  278),
+       (x: 3348; y:  490; w:  104; h:  336),
+       (x: 3464; y:  546; w:   90; h:  398),
+       (x: 3594; y:  192; w:  134; h:  532),
+       (x: 3750; y:  246; w:  156; h:  258),
+       (x: 3748; y:  548; w:  132; h:  340),
+       (x: 3582; y:  898; w:  252; h:   82),
+       (x: 3652; y: 1024; w:    1; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2402; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2280; y:  1950; w:  226; h:   60),
+       (x:  2168; y:  1870; w:  298; h:   62),
+       (x:  2328; y:  1728; w:  210; h:  102),
+       (x:  2256; y:  1446; w:  192; h:  248),
+       (x:  2340; y:  1184; w:  206; h:  240),
+       (x:  2574; y:  1196; w:   92; h:  334),
+       (x:  2510; y:  1552; w:  226; h:  126),
+       (x:  2604; y:  1702; w:  268; h:  156),
+       (x:  2770; y:  1188; w:  138; h:  500),
+       (x:  2938; y:  1180; w:   94; h:  352),
+       (x:  2946; y:  1586; w:  170; h:  264),
+       (x: 3140; y:  1408; w:   84; h:  446),
+       (x: 3254; y:  1224; w:  158; h:  278),
+       (x: 3348; y:  1514; w:  104; h:  336),
+       (x: 3464; y:  1570; w:   90; h:  398),
+       (x: 3594; y:  1216; w:  134; h:  532),
+       (x: 3750; y:  1270; w:  156; h:  258),
+       (x: 3748; y:  1572; w:  132; h:  340),
+       (x: 3582; y:  1922; w:  252; h:   82),
+       (x: 3652; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template2FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template3Points: array[0..16] of TSDL_Rect =
+const Template3Points: array[0..67] of TSDL_Rect =
       (
        (x:  348; y: 1024; w:    1; h:    1),
        (x:  236; y:  852; w:  208; h:   72),
@@ -134,14 +1245,65 @@
        (x:  790; y:  172; w:  352; h:  120),
        (x: 1274; y:  128; w:   60; h:  240),
        (x: 1434; y:  222; w:  254; h:  116),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  348; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  236; y:  1876; w:  208; h:   72),
+       (x:  498; y:  1734; w:  308; h:   60),
+       (x:  728; y:  1876; w:  434; h:   40),
+       (x: 1174; y:  1736; w:  332; h:   40),
+       (x: 1402; y:  1862; w:  226; h:   36),
+       (x: 1530; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1660; y:  1522; w:  111; h:  111),
+       (x: 1270; y:  1500; w:   34; h:  102),
+       (x:  682; y:  1438; w:  284; h:  132),
+       (x:  230; y:  1352; w:  126; h:  168),
+       (x:  410; y:  1198; w:  114; h:  100),
+       (x:  790; y:  1196; w:  352; h:  120),
+       (x: 1274; y:  1152; w:   60; h:  240),
+       (x: 1434; y:  1246; w:  254; h:  116),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2396; y: 1024; w:    1; h:    1), // X + 2048
+       (x:  2284; y:  852; w:  208; h:   72),
+       (x:  2546; y:  710; w:  308; h:   60),
+       (x:  2776; y:  852; w:  434; h:   40),
+       (x: 3222; y:  712; w:  332; h:   40),
+       (x: 3450; y:  838; w:  226; h:   36),
+       (x: 3578; y: 1024; w:    1; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x: 3708; y:  498; w:  111; h:  111),
+       (x: 3318; y:  476; w:   34; h:  102),
+       (x:  2730; y:  414; w:  284; h:  132),
+       (x:  2278; y:  328; w:  126; h:  168),
+       (x:  2458; y:  174; w:  114; h:  100),
+       (x:  2838; y:  172; w:  352; h:  120),
+       (x: 3322; y:  128; w:   60; h:  240),
+       (x: 3482; y:  222; w:  254; h:  116),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2396; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2284; y:  1876; w:  208; h:   72),
+       (x:  2546; y:  1734; w:  308; h:   60),
+       (x:  2776; y:  1876; w:  434; h:   40),
+       (x: 3222; y:  1736; w:  332; h:   40),
+       (x: 3450; y:  1862; w:  226; h:   36),
+       (x: 3578; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3708; y:  1522; w:  111; h:  111),
+       (x: 3318; y:  1500; w:   34; h:  102),
+       (x:  2730; y:  1438; w:  284; h:  132),
+       (x:  2278; y:  1352; w:  126; h:  168),
+       (x:  2458; y:  1198; w:  114; h:  100),
+       (x:  2838; y:  1196; w:  352; h:  120),
+       (x: 3322; y:  1152; w:   60; h:  240),
+       (x: 3482; y:  1246; w:  254; h:  116),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template3FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template4Points: array[0..22] of TSDL_Rect =
+const Template4Points: array[0..91] of TSDL_Rect =
       (
        (x:  418; y: 1024; w:    1; h:    1),
        (x:  248; y:  900; w:  186; h:   62),
@@ -165,14 +1327,83 @@
        (x: 1214; y:  152; w:  116; h:  154),
        (x: 1428; y:  252; w:  150; h:   70),
        (x: 1750; y:  152; w:   86; h:  220),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  418; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  248; y:  1924; w:  186; h:   62),
+       (x:  272; y:  1716; w:  254; h:  138),
+       (x:  610; y:  1792; w:   90; h:  166),
+       (x:  820; y:  1640; w:  224; h:  258),
+       (x: 1242; y:  1782; w:   96; h:  146),
+       (x: 1550; y:  1722; w:  224; h:  134),
+       (x: 1530; y:  1926; w:  210; h:   54),
+       (x: 1532; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  202; y:  1442; w:  110; h:   92),
+       (x:  252; y:  1336; w:  160; h:   32),
+       (x:  150; y:  1192; w:  134; h:   78),
+       (x:  702; y:  1184; w:  132; h:   84),
+       (x:  702; y:  1332; w:  230; h:   36),
+       (x:  720; y:  1432; w:  166; h:   96),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1702; y:  1458; w:  202; h:   42),
+       (x: 1252; y:  1412; w:  134; h:   98),
+       (x: 1214; y:  1176; w:  116; h:  154),
+       (x: 1428; y:  1276; w:  150; h:   70),
+       (x: 1750; y:  1176; w:   86; h:  220),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2466; y: 1024; w:    1; h:    1),  // X + 2048
+       (x:  2296; y:  900; w:  186; h:   62),
+       (x:  2320; y:  692; w:  254; h:  138),
+       (x:  2658; y:  768; w:   90; h:  166),
+       (x:  2868; y:  616; w:  224; h:  258),
+       (x: 3290; y:  758; w:   96; h:  146),
+       (x: 3598; y:  698; w:  224; h:  134),
+       (x: 3578; y:  902; w:  210; h:   54),
+       (x: 3580; y: 1024; w:    1; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2250; y:  418; w:  110; h:   92),
+       (x:  2300; y:  312; w:  160; h:   32),
+       (x:  2198; y:  168; w:  134; h:   78),
+       (x:  2750; y:  160; w:  132; h:   84),
+       (x:  2750; y:  308; w:  230; h:   36),
+       (x:  2768; y:  408; w:  166; h:   96),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x: 3750; y:  434; w:  202; h:   42),
+       (x: 3300; y:  388; w:  134; h:   98),
+       (x: 3262; y:  152; w:  116; h:  154),
+       (x: 3476; y:  252; w:  150; h:   70),
+       (x: 3798; y:  152; w:   86; h:  220),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2466; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2296; y:  1924; w:  186; h:   62),
+       (x:  2320; y:  1716; w:  254; h:  138),
+       (x:  2658; y:  1792; w:   90; h:  166),
+       (x:  2868; y:  1640; w:  224; h:  258),
+       (x: 3290; y:  1782; w:   96; h:  146),
+       (x: 3598; y:  1722; w:  224; h:  134),
+       (x: 3578; y:  1926; w:  210; h:   54),
+       (x: 3580; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2250; y:  1442; w:  110; h:   92),
+       (x:  2300; y:  1336; w:  160; h:   32),
+       (x:  2198; y:  1192; w:  134; h:   78),
+       (x:  2750; y:  1184; w:  132; h:   84),
+       (x:  2750; y:  1332; w:  230; h:   36),
+       (x:  2768; y:  1432; w:  166; h:   96),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3750; y:  1458; w:  202; h:   42),
+       (x: 3300; y:  1412; w:  134; h:   98),
+       (x: 3262; y:  1176; w:  116; h:  154),
+       (x: 3476; y:  1276; w:  150; h:   70),
+       (x: 3798; y:  1176; w:   86; h:  220),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template4FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template5Points: array[0..15] of TSDL_Rect =
+const Template5Points: array[0..63] of TSDL_Rect =
       (
        (x:  274; y: 1024; w:    1; h:    1),
        (x:  190; y:  918; w:  168; h:   26),
@@ -189,14 +1420,62 @@
        (x: 1494; y:  364; w:   56; h:  582),
        (x: 1620; y:  774; w:   94; h:  232),
        (x: 1612; y: 1024; w:    1; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  274; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  190; y:  1942; w:  168; h:   26),
+       (x:  382; y:  1600; w:  122; h:  314),
+       (x:  568; y:  1768; w:   56; h:  180),
+       (x:  678; y:  1880; w:   64; h:   56),
+       (x:  740; y:  1674; w:  106; h:  220),
+       (x:  644; y:  1520; w:  162; h:  140),
+       (x:  496; y:  1234; w:  886; h:  174),
+       (x:  934; y:  1472; w:  296; h:  108),
+       (x:  950; y:  1776; w:  152; h:  146),
+       (x: 1172; y:  1798; w:   60; h:  152),
+       (x: 1284; y:  1746; w:  150; h:  138),
+       (x: 1494; y:  1388; w:   56; h:  582),
+       (x: 1620; y:  1798; w:   94; h:  232),
+       (x: 1612; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2322; y: 1024; w:    1; h:    1), // X + 2048
+       (x:  2238; y:  918; w:  168; h:   26),
+       (x:  2430; y:  576; w:  122; h:  314),
+       (x:  2616; y:  744; w:   56; h:  180),
+       (x:  2726; y:  856; w:   64; h:   56),
+       (x:  2788; y:  650; w:  106; h:  220),
+       (x:  2692; y:  496; w:  162; h:  140),
+       (x:  2544; y:  210; w:  886; h:  174),
+       (x:  2982; y:  448; w:  296; h:  108),
+       (x:  2998; y:  752; w:  152; h:  146),
+       (x: 3220; y:  774; w:   60; h:  152),
+       (x: 3332; y:  722; w:  150; h:  138),
+       (x: 3542; y:  364; w:   56; h:  582),
+       (x: 3668; y:  774; w:   94; h:  232),
+       (x: 3660; y: 1024; w:    1; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2322; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2238; y:  1942; w:  168; h:   26),
+       (x:  2430; y:  1600; w:  122; h:  314),
+       (x:  2616; y:  1768; w:   56; h:  180),
+       (x:  2726; y:  1880; w:   64; h:   56),
+       (x:  2788; y:  1674; w:  106; h:  220),
+       (x:  2692; y:  1520; w:  162; h:  140),
+       (x:  2544; y:  1234; w:  886; h:  174),
+       (x:  2982; y:  1472; w:  296; h:  108),
+       (x:  2998; y:  1776; w:  152; h:  146),
+       (x: 3220; y:  1798; w:   60; h:  152),
+       (x: 3332; y:  1746; w:  150; h:  138),
+       (x: 3542; y:  1388; w:   56; h:  582),
+       (x: 3668; y:  1798; w:   94; h:  232),
+       (x: 3660; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
        );
       Template5FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template6Points: array[0..13] of TSDL_Rect =
+const Template6Points: array[0..55] of TSDL_Rect =
       (
        (x:  368; y: 1022; w:    2; h:    2),
        (x:  266; y:  840; w:  302; h:  110),
@@ -211,29 +1490,89 @@
        (x: 1050; y:  686; w:  406; h:   92),
        (x: 1584; y:  502; w:  190; h:  412),
        (x: 1646; y: 1020; w:    2; h:    2),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  368; y: 2046; w:    2; h:    2), // Y + 1024
+       (x:  266; y:  1864; w:  302; h:  110),
+       (x:  294; y:  1536; w:  104; h:  290),
+       (x:  570; y:  1604; w:  364; h:  122),
+       (x:  568; y:  1464; w:  368; h:  100),
+       (x:  232; y:  1284; w:  482; h:  130),
+       (x:  778; y:  1266; w:   62; h:   64),
+       (x:  990; y:  1178; w:   58; h:  246),
+       (x: 1200; y:  1300; w:  590; h:   98),
+       (x: 1088; y:  1466; w:  214; h:  188),
+       (x: 1050; y:  1710; w:  406; h:   92),
+       (x: 1584; y:  1526; w:  190; h:  412),
+       (x: 1646; y: 2044; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2416; y: 1022; w:    2; h:    2), // X + 2048
+       (x:  2314; y:  840; w:  302; h:  110),
+       (x:  2342; y:  512; w:  104; h:  290),
+       (x:  2618; y:  580; w:  364; h:  122),
+       (x:  2616; y:  440; w:  368; h:  100),
+       (x:  2280; y:  260; w:  482; h:  130),
+       (x:  2826; y:  242; w:   62; h:   64),
+       (x:  3038; y:  154; w:   58; h:  246),
+       (x: 3248; y:  276; w:  590; h:   98),
+       (x: 3136; y:  442; w:  214; h:  188),
+       (x: 3098; y:  686; w:  406; h:   92),
+       (x: 3632; y:  502; w:  190; h:  412),
+       (x: 3694; y: 1020; w:    2; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2416; y: 2046; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2314; y:  1864; w:  302; h:  110),
+       (x:  2342; y:  1536; w:  104; h:  290),
+       (x:  2618; y:  1604; w:  364; h:  122),
+       (x:  2616; y:  1464; w:  368; h:  100),
+       (x:  2280; y:  1284; w:  482; h:  130),
+       (x:  2826; y:  1266; w:   62; h:   64),
+       (x:  3038; y:  1178; w:   58; h:  246),
+       (x: 3248; y:  1300; w:  590; h:   98),
+       (x: 3136; y:  1466; w:  214; h:  188),
+       (x: 3098; y:  1710; w:  406; h:   92),
+       (x: 3632; y:  1526; w:  190; h:  412),
+       (x: 3694; y: 2044; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
        );
       Template6FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template7Points: array[0..5] of TSDL_Rect =
+const Template7Points: array[0..23] of TSDL_Rect =
       (
        (x:  162; y: 1024; w:  400; h:    1),
        (x:  226; y:  234; w:  142; h:  360),
        (x:  936; y:  740; w:  400; h:  200),
        (x: 1576; y:  176; w:  186; h:  550),
        (x: 1430; y: 1024; w:  454; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  162; y: 2048; w:  400; h:    1), // Y + 1024
+       (x:  226; y:  1258; w:  142; h:  360),
+       (x:  936; y:  1764; w:  400; h:  200),
+       (x: 1576; y:  1200; w:  186; h:  550),
+       (x: 1430; y: 2048; w:  454; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  162; y: 1024; w:  400; h:    1), // X + 2048
+       (x:  226; y:  234; w:  142; h:  360),
+       (x:  936; y:  740; w:  400; h:  200),
+       (x: 1576; y:  176; w:  186; h:  550),
+       (x: 1430; y: 1024; w:  454; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  162; y: 2048; w:  400; h:    1), // X + 2048, Y + 1024
+       (x:  226; y:  1258; w:  142; h:  360),
+       (x:  936; y:  1764; w:  400; h:  200),
+       (x: 1576; y:  1200; w:  186; h:  550),
+       (x: 1430; y: 2048; w:  454; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template7FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
 
-const Template8Points: array[0..19] of TSDL_Rect =
+const Template8Points: array[0..79] of TSDL_Rect =
       (
        (x:  364; y: 1024; w:   20; h:    1),
        (x:  290; y:  860; w:   64; h:   62),
@@ -254,14 +1593,74 @@
        (x: 1540; y:  588; w:  212; h:   50),
        (x: 1464; y:  746; w:  128; h:  146),
        (x: 1630; y: 1024; w:   20; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  364; y: 2048; w:   20; h:    1), // Y + 1024
+       (x:  290; y:  1884; w:   64; h:   62),
+       (x:  486; y:  1774; w:   52; h:  146),
+       (x:  256; y:  1614; w:  116; h:  144),
+       (x:  470; y:  1492; w:  138; h:  168),
+       (x:  242; y:  1266; w:  158; h:  162),
+       (x:  508; y:  1334; w:  198; h:   72),
+       (x:  770; y:  1252; w:  118; h:  134),
+       (x:  636; y:  1742; w:  142; h:  132),
+       (x:  968; y:  1724; w:  172; h:   58),
+       (x:  970; y:  1828; w:  172; h:   62),
+       (x: 1232; y:  1728; w:   82; h:  226),
+       (x: 1356; y:  1618; w:   64; h:  152),
+       (x: 1214; y:  1358; w:  106; h:  152),
+       (x: 1410; y:  1284; w:  380; h:   82),
+       (x: 1528; y:  1446; w:   30; h:  118),
+       (x: 1540; y:  1612; w:  212; h:   50),
+       (x: 1464; y:  1770; w:  128; h:  146),
+       (x: 1630; y: 2048; w:   20; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2412; y: 1024; w:   20; h:    1), // X + 2048
+       (x:  2338; y:  860; w:   64; h:   62),
+       (x:  2534; y:  750; w:   52; h:  146),
+       (x:  2304; y:  590; w:  116; h:  144),
+       (x:  2518; y:  468; w:  138; h:  168),
+       (x:  2290; y:  242; w:  158; h:  162),
+       (x:  2556; y:  310; w:  198; h:   72),
+       (x:  2818; y:  228; w:  118; h:  134),
+       (x:  2684; y:  718; w:  142; h:  132),
+       (x:  3016; y:  700; w:  172; h:   58),
+       (x:  3018; y:  804; w:  172; h:   62),
+       (x: 3280; y:  704; w:   82; h:  226),
+       (x: 3404; y:  594; w:   64; h:  152),
+       (x: 3262; y:  334; w:  106; h:  152),
+       (x: 3458; y:  260; w:  380; h:   82),
+       (x: 3576; y:  422; w:   30; h:  118),
+       (x: 3588; y:  588; w:  212; h:   50),
+       (x: 3512; y:  746; w:  128; h:  146),
+       (x: 3678; y: 1024; w:   20; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2412; y: 2048; w:   20; h:    1), // X + 2048, Y + 1024
+       (x:  2338; y:  1884; w:   64; h:   62),
+       (x:  2534; y:  1774; w:   52; h:  146),
+       (x:  2304; y:  1614; w:  116; h:  144),
+       (x:  2518; y:  1492; w:  138; h:  168),
+       (x:  2290; y:  1266; w:  158; h:  162),
+       (x:  2556; y:  1334; w:  198; h:   72),
+       (x:  2818; y:  1252; w:  118; h:  134),
+       (x:  2684; y:  1742; w:  142; h:  132),
+       (x:  3016; y:  1724; w:  172; h:   58),
+       (x:  3018; y:  1828; w:  172; h:   62),
+       (x: 3280; y:  1728; w:   82; h:  226),
+       (x: 3404; y:  1618; w:   64; h:  152),
+       (x: 3262; y:  1358; w:  106; h:  152),
+       (x: 3458; y:  1284; w:  380; h:   82),
+       (x: 3576; y:  1446; w:   30; h:  118),
+       (x: 3588; y:  1612; w:  212; h:   50),
+       (x: 3512; y:  1770; w:  128; h:  146),
+       (x: 3678; y: 2048; w:   20; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template8FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template9Points: array[0..31] of TSDL_Rect =
+const Template9Points: array[0..127] of TSDL_Rect =
       (
        (x:  340; y: 1024; w:    1; h:    1),
        (x:  276; y:  902; w:   44; h:   54),
@@ -294,14 +1693,110 @@
        (x: 1632; y:  678; w:  248; h:   20),
        (x: 1632; y:  802; w:  238; h:   16),
        (x: 1680; y: 1024; w:    1; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  340; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  276; y:  1926; w:   44; h:   54),
+       (x:  434; y:  1860; w:   58; h:   90),
+       (x:  266; y:  1758; w:   80; h:   80),
+       (x:  246; y:  1628; w:   96; h:  108),
+       (x:  426; y:  1670; w:  110; h:  112),
+       (x:  234; y:  1316; w:  118; h:  164),
+       (x:  428; y:  1420; w:  130; h:  110),
+       (x:  516; y:  1222; w:  344; h:   78),
+       (x:  688; y:  1450; w:   50; h:   40),
+       (x:  626; y:  1584; w:   32; h:  148),
+       (x:  698; y:  1674; w:  160; h:   34),
+       (x:  674; y:  1812; w:   36; h:  136),
+       (x: 1014; y:  1872; w:   48; h:   48),
+       (x: 1086; y:  1752; w:   64; h:   88),
+       (x:  958; y:  1684; w:   70; h:   74),
+       (x: 1116; y:  1620; w:   68; h:   70),
+       (x: 1118; y:  1508; w:   68; h:   82),
+       (x:  958; y:  1348; w:   44; h:  140),
+       (x: 1272; y:  1330; w:   52; h:   66),
+       (x: 1254; y:  1526; w:   58; h:   66),
+       (x: 1234; y:  1784; w:   76; h:  112),
+       (x: 1380; y:  1786; w:  124; h:   64),
+       (x: 1472; y:  1496; w:   54; h:  134),
+       (x: 1410; y:  1220; w:  246; h:   62),
+       (x: 1706; y:  1178; w:   38; h:  238),
+       (x: 1812; y:  1372; w:   28; h:   28),
+       (x: 1692; y:  1548; w:  144; h:   94),
+       (x: 1632; y:  1702; w:  248; h:   20),
+       (x: 1632; y:  1826; w:  238; h:   16),
+       (x: 1680; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2388; y: 1024; w:    1; h:    1), // X + 2048
+       (x:  2324; y:  902; w:   44; h:   54),
+       (x:  2482; y:  836; w:   58; h:   90),
+       (x:  2314; y:  734; w:   80; h:   80),
+       (x:  2294; y:  604; w:   96; h:  108),
+       (x:  2474; y:  646; w:  110; h:  112),
+       (x:  2282; y:  292; w:  118; h:  164),
+       (x:  2476; y:  396; w:  130; h:  110),
+       (x:  2564; y:  198; w:  344; h:   78),
+       (x:  2736; y:  426; w:   50; h:   40),
+       (x:  2674; y:  560; w:   32; h:  148),
+       (x:  2746; y:  650; w:  160; h:   34),
+       (x:  2722; y:  788; w:   36; h:  136),
+       (x: 3062; y:  848; w:   48; h:   48),
+       (x: 3134; y:  728; w:   64; h:   88),
+       (x:  3006; y:  660; w:   70; h:   74),
+       (x: 3164; y:  596; w:   68; h:   70),
+       (x: 3166; y:  484; w:   68; h:   82),
+       (x:  3006; y:  324; w:   44; h:  140),
+       (x: 3320; y:  306; w:   52; h:   66),
+       (x: 3302; y:  502; w:   58; h:   66),
+       (x: 3282; y:  760; w:   76; h:  112),
+       (x: 3428; y:  762; w:  124; h:   64),
+       (x: 3520; y:  472; w:   54; h:  134),
+       (x: 3458; y:  196; w:  246; h:   62),
+       (x: 3754; y:  154; w:   38; h:  238),
+       (x: 3860; y:  348; w:   28; h:   28),
+       (x: 3740; y:  524; w:  144; h:   94),
+       (x: 3680; y:  678; w:  248; h:   20),
+       (x: 3680; y:  802; w:  238; h:   16),
+       (x: 3728; y: 1024; w:    1; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2388; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2324; y:  1926; w:   44; h:   54),
+       (x:  2482; y:  1860; w:   58; h:   90),
+       (x:  2314; y:  1758; w:   80; h:   80),
+       (x:  2294; y:  1628; w:   96; h:  108),
+       (x:  2474; y:  1670; w:  110; h:  112),
+       (x:  2282; y:  1316; w:  118; h:  164),
+       (x:  2476; y:  1420; w:  130; h:  110),
+       (x:  2564; y:  1222; w:  344; h:   78),
+       (x:  2736; y:  1450; w:   50; h:   40),
+       (x:  2674; y:  1584; w:   32; h:  148),
+       (x:  2746; y:  1674; w:  160; h:   34),
+       (x:  2722; y:  1812; w:   36; h:  136),
+       (x: 3062; y:  1872; w:   48; h:   48),
+       (x: 3134; y:  1752; w:   64; h:   88),
+       (x:  3006; y:  1684; w:   70; h:   74),
+       (x: 3164; y:  1620; w:   68; h:   70),
+       (x: 3166; y:  1508; w:   68; h:   82),
+       (x:  3006; y:  1348; w:   44; h:  140),
+       (x: 3320; y:  1330; w:   52; h:   66),
+       (x: 3302; y:  1526; w:   58; h:   66),
+       (x: 3282; y:  1784; w:   76; h:  112),
+       (x: 3428; y:  1786; w:  124; h:   64),
+       (x: 3520; y:  1496; w:   54; h:  134),
+       (x: 3458; y:  1220; w:  246; h:   62),
+       (x: 3754; y:  1178; w:   38; h:  238),
+       (x: 3860; y:  1372; w:   28; h:   28),
+       (x: 3740; y:  1548; w:  144; h:   94),
+       (x: 3680; y:  1702; w:  248; h:   20),
+       (x: 3680; y:  1826; w:  238; h:   16),
+       (x: 3728; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template9FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template10Points: array[0..13] of TSDL_Rect =
+const Template10Points: array[0..55] of TSDL_Rect =
       (
        (x:  188; y: 1024; w:  190; h:    1),
        (x:  240; y:  682; w:  140; h:  150),
@@ -316,14 +1811,56 @@
        (x: 1458; y:  274; w:  354; h:  448),
        (x: 1688; y:  795; w:  120; h:  120),
        (x: 1782; y: 1024; w:    2; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  188; y: 2048; w:  190; h:    1), // Y + 1024
+       (x:  240; y:  1706; w:  140; h:  150),
+       (x:  314; y:  1492; w:  352; h:   94),
+       (x:  726; y:  1270; w:  106; h:  282),
+       (x:  902; y:  1414; w:  368; h:  142),
+       (x:  958; y:  1612; w:  116; h:  244),
+       (x:  876; y: 2048; w:   14; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1064; y: 2048; w:   22; h:    1),
+       (x: 1288; y:  1819; w:  120; h:  120),
+       (x: 1458; y:  1298; w:  354; h:  448),
+       (x: 1688; y:  1819; w:  120; h:  120),
+       (x: 1782; y: 2048; w:    2; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2236; y: 1024; w:  190; h:    1), // X + 2048
+       (x:  2288; y:  682; w:  140; h:  150),
+       (x:  2362; y:  468; w:  352; h:   94),
+       (x:  2774; y:  246; w:  106; h:  282),
+       (x:  2950; y:  390; w:  368; h:  142),
+       (x:  3006; y:  588; w:  116; h:  244),
+       (x:  2924; y: 1024; w:   14; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x: 3112; y: 1024; w:   22; h:    1),
+       (x: 3336; y:  795; w:  120; h:  120),
+       (x: 3506; y:  274; w:  354; h:  448),
+       (x: 3736; y:  795; w:  120; h:  120),
+       (x: 3830; y: 1024; w:    2; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2236; y: 2048; w:  190; h:    1), // X + 2048, Y + 1024
+       (x:  2288; y:  1706; w:  140; h:  150),
+       (x:  2362; y:  1492; w:  352; h:   94),
+       (x:  2774; y:  1270; w:  106; h:  282),
+       (x:  2950; y:  1414; w:  368; h:  142),
+       (x:  3006; y:  1612; w:  116; h:  244),
+       (x:  2924; y: 2048; w:   14; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3112; y: 2048; w:   22; h:    1),
+       (x: 3336; y:  1819; w:  120; h:  120),
+       (x: 3506; y:  1298; w:  354; h:  448),
+       (x: 3736; y:  1819; w:  120; h:  120),
+       (x: 3830; y: 2048; w:    2; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template10FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template11Points: array[0..9] of TSDL_Rect =
+const Template11Points: array[0..39] of TSDL_Rect =
       (
        (x:  274; y: 1024; w:  166; h:    1),
        (x:  330; y:  862; w:   96; h:   92),
@@ -334,14 +1871,44 @@
        (x: 1292; y:  630; w:   46; h:  300),
        (x: 1448; y:  664; w:  158; h:  272),
        (x: 1584; y: 1024; w:  136; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  274; y: 2048; w:  166; h:    1), // Y + 1024
+       (x:  330; y:  1886; w:   96; h:   92),
+       (x:  492; y:  1714; w:  152; h:  250),
+       (x:  746; y:  1670; w:   36; h:  270),
+       (x:  938; y:  1650; w:   54; h:  224),
+       (x: 1134; y:  1670; w:   44; h:  216),
+       (x: 1292; y:  1654; w:   46; h:  300),
+       (x: 1448; y:  1688; w:  158; h:  272),
+       (x: 1584; y: 2048; w:  136; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2322; y: 1024; w:  166; h:    1), // X + 2048
+       (x:  2378; y:  862; w:   96; h:   92),
+       (x:  2540; y:  690; w:  152; h:  250),
+       (x:  2794; y:  646; w:   36; h:  270),
+       (x:  2986; y:  626; w:   54; h:  224),
+       (x: 3182; y:  646; w:   44; h:  216),
+       (x: 3340; y:  630; w:   46; h:  300),
+       (x: 3496; y:  664; w:  158; h:  272),
+       (x: 3632; y: 1024; w:  136; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2322; y: 1024; w:  166; h:    1), // X + 2048, Y + 1024
+       (x:  2378; y:  862; w:   96; h:   92),
+       (x:  2540; y:  690; w:  152; h:  250),
+       (x:  2794; y:  646; w:   36; h:  270),
+       (x:  2986; y:  626; w:   54; h:  224),
+       (x: 3182; y:  646; w:   44; h:  216),
+       (x: 3340; y:  630; w:   46; h:  300),
+       (x: 3496; y:  664; w:  158; h:  272),
+       (x: 3632; y: 1024; w:  136; h:    1),
        (x: NTPX; y:    0; w:    1; h:    1)
       );
       Template11FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template12Points: array[0..13] of TSDL_Rect =
+const Template12Points: array[0..55] of TSDL_Rect =
       (
        (x:  360; y: 1024; w:    2; h:    2),
        (x:  242; y:  630; w:   46; h:  286),
@@ -356,14 +1923,56 @@
        (x: 1600; y:  414; w:   76; h:  358),
        (x: 1748; y:  584; w:  108; h:  304),
        (x: 1688; y: 1024; w:  176; h:    1),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  360; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  242; y:  1654; w:   46; h:  286),
+       (x:  454; y:  1696; w:  194; h:   56),
+       (x:  254; y:  1358; w:  534; h:  200),
+       (x:  870; y:  1300; w:   58; h:  468),
+       (x: 1076; y:  1296; w:  198; h:  112),
+       (x: 1000; y: 2048; w:   64; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1244; y: 2048; w:   64; h:    2),
+       (x: 1356; y:  1518; w:  184; h:   94),
+       (x: 1600; y:  1438; w:   76; h:  358),
+       (x: 1748; y:  1608; w:  108; h:  304),
+       (x: 1688; y: 2048; w:  176; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2408; y: 1024; w:    2; h:    2), // X + 2048
+       (x:  2290; y:  630; w:   46; h:  286),
+       (x:  2502; y:  672; w:  194; h:   56),
+       (x:  2302; y:  334; w:  534; h:  200),
+       (x:  2918; y:  276; w:   58; h:  468),
+       (x: 3124; y:  272; w:  198; h:  112),
+       (x: 3048; y: 1024; w:   64; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x: 3292; y: 1024; w:   64; h:    2),
+       (x: 3404; y:  494; w:  184; h:   94),
+       (x: 3648; y:  414; w:   76; h:  358),
+       (x: 3796; y:  584; w:  108; h:  304),
+       (x: 3736; y: 1024; w:  176; h:    1),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2408; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2290; y:  1654; w:   46; h:  286),
+       (x:  2502; y:  1696; w:  194; h:   56),
+       (x:  2302; y:  1358; w:  534; h:  200),
+       (x:  2918; y:  1300; w:   58; h:  468),
+       (x: 3124; y:  1296; w:  198; h:  112),
+       (x: 3048; y: 2048; w:   64; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3292; y: 2048; w:   64; h:    2),
+       (x: 3404; y:  1518; w:  184; h:   94),
+       (x: 3648; y:  1438; w:   76; h:  358),
+       (x: 3796; y:  1608; w:  108; h:  304),
+       (x: 3736; y: 2048; w:  176; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template12FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template13Points: array[0..15] of TSDL_Rect =
+const Template13Points: array[0..63] of TSDL_Rect =
       (
        (x:  446; y: 1024; w:  140; h:    2),
        (x:  280; y:  872; w:  196; h:   32),
@@ -380,14 +1989,62 @@
        (x: 1256; y:  706; w:  194; h:  150),
        (x: 1568; y:  706; w:  198; h:  152),
        (x: 1444; y: 1024; w:    2; h:    2),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  446; y: 2048; w:  140; h:    2), // Y + 1024
+       (x:  280; y:  1896; w:  196; h:   32),
+       (x:  254; y:  1704; w:  262; h:  134),
+       (x:  654; y:  1696; w:  220; h:  136),
+       (x:  608; y:  1514; w:  268; h:  110),
+       (x:  300; y:  1386; w:  104; h:  200),
+       (x:  446; y:  1248; w:  306; h:   58),
+       (x:  916; y:  1212; w:   84; h:  206),
+       (x: 1148; y:  1198; w:  104; h:  220),
+       (x: 1426; y:  1200; w:  120; h:  202),
+       (x: 1556; y:  1442; w:  192; h:   68),
+       (x: 1226; y:  1572; w:  246; h:   88),
+       (x: 1256; y:  1730; w:  194; h:  150),
+       (x: 1568; y:  1730; w:  198; h:  152),
+       (x: 1444; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2494; y: 1024; w:  140; h:    2), // X + 2048
+       (x:  2328; y:  872; w:  196; h:   32),
+       (x:  2302; y:  680; w:  262; h:  134),
+       (x:  2702; y:  672; w:  220; h:  136),
+       (x:  2656; y:  490; w:  268; h:  110),
+       (x:  2348; y:  362; w:  104; h:  200),
+       (x:  2494; y:  224; w:  306; h:   58),
+       (x:  2964; y:  188; w:   84; h:  206),
+       (x: 3196; y:  174; w:  104; h:  220),
+       (x: 3474; y:  176; w:  120; h:  202),
+       (x: 3604; y:  418; w:  192; h:   68),
+       (x: 3274; y:  548; w:  246; h:   88),
+       (x: 3304; y:  706; w:  194; h:  150),
+       (x: 3616; y:  706; w:  198; h:  152),
+       (x: 3492; y: 1024; w:    2; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2494; y: 2048; w:  140; h:    2), // X + 2048, Y + 1024
+       (x:  2328; y:  1896; w:  196; h:   32),
+       (x:  2302; y:  1704; w:  262; h:  134),
+       (x:  2702; y:  1696; w:  220; h:  136),
+       (x:  2656; y:  1514; w:  268; h:  110),
+       (x:  2348; y:  1386; w:  104; h:  200),
+       (x:  2494; y:  1248; w:  306; h:   58),
+       (x:  2964; y:  1212; w:   84; h:  206),
+       (x: 3196; y:  1198; w:  104; h:  220),
+       (x: 3474; y:  1200; w:  120; h:  202),
+       (x: 3604; y:  1442; w:  192; h:   68),
+       (x: 3274; y:  1572; w:  246; h:   88),
+       (x: 3304; y:  1730; w:  194; h:  150),
+       (x: 3616; y:  1730; w:  198; h:  152),
+       (x: 3492; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template13FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template14Points: array[0..13] of TSDL_Rect =
+const Template14Points: array[0..55] of TSDL_Rect =
       (
        (x:  286; y: 1024; w:    2; h:    2),
        (x:  244; y:  886; w:   84; h:   54),
@@ -402,14 +2059,56 @@
        (x: 1596; y:  630; w:  242; h:  222),
        (x: 1598; y:  916; w:  254; h:   50),
        (x: 1608; y: 1024; w:    2; h:    2),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  286; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  244; y:  1910; w:   84; h:   54),
+       (x:  212; y:  1710; w:  150; h:  166),
+       (x:  678; y:  1864; w:  186; h:   98),
+       (x:  744; y:  1628; w:  124; h:   58),
+       (x:  620; y:  1206; w:  112; h:  194),
+       (x:  988; y:  1284; w:   92; h:  132),
+       (x: 1310; y:  1198; w:  154; h:  196),
+       (x: 1160; y:  1598; w:  118; h:   64),
+       (x: 1052; y:  1846; w:  328; h:   92),
+       (x: 1596; y:  1654; w:  242; h:  222),
+       (x: 1598; y:  1940; w:  254; h:   50),
+       (x: 1608; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2334; y: 1024; w:    2; h:    2), // X + 2048
+       (x:  2292; y:  886; w:   84; h:   54),
+       (x:  2260; y:  686; w:  150; h:  166),
+       (x:  2726; y:  840; w:  186; h:   98),
+       (x:  2792; y:  604; w:  124; h:   58),
+       (x:  2668; y:  182; w:  112; h:  194),
+       (x:  3036; y:  260; w:   92; h:  132),
+       (x: 3358; y:  174; w:  154; h:  196),
+       (x: 3208; y:  574; w:  118; h:   64),
+       (x: 3100; y:  822; w:  328; h:   92),
+       (x: 3644; y:  630; w:  242; h:  222),
+       (x: 3646; y:  916; w:  254; h:   50),
+       (x: 3656; y: 1024; w:    2; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2334; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2292; y:  1910; w:   84; h:   54),
+       (x:  2260; y:  1710; w:  150; h:  166),
+       (x:  2726; y:  1864; w:  186; h:   98),
+       (x:  2792; y:  1628; w:  124; h:   58),
+       (x:  2668; y:  1206; w:  112; h:  194),
+       (x:  3036; y:  1284; w:   92; h:  132),
+       (x: 3358; y:  1198; w:  154; h:  196),
+       (x: 3208; y:  1598; w:  118; h:   64),
+       (x: 3100; y:  1846; w:  328; h:   92),
+       (x: 3644; y:  1654; w:  242; h:  222),
+       (x: 3646; y:  1940; w:  254; h:   50),
+       (x: 3656; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template14FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template15Points: array[0..23] of TSDL_Rect =
+const Template15Points: array[0..95] of TSDL_Rect =
       (
        (x:  302; y: 1024; w:    2; h:    2),
        (x:  240; y:  890; w:   44; h:   94),
@@ -434,14 +2133,86 @@
        (x: 1450; y:  928; w:   88; h:   34),
        (x: 1598; y:  838; w:   96; h:  112),
        (x: 1656; y: 1024; w:    2; h:    2),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  302; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  240; y:  1914; w:   44; h:   94),
+       (x:  350; y:  1886; w:   44; h:   94),
+       (x:  460; y:  1930; w:   78; h:   70),
+       (x:  466; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  804; y: 2048; w:    2; h:    2),
+       (x:  720; y:  1806; w:  108; h:  174),
+       (x:  484; y:  1648; w:  314; h:   98),
+       (x:  310; y:  1506; w:   76; h:  230),
+       (x:  434; y:  1310; w:  220; h:  154),
+       (x:  840; y:  1298; w:   56; h:  266),
+       (x: 1024; y:  1268; w:   78; h:  304),
+       (x: 1248; y:  1270; w:  116; h:  162),
+       (x: 1580; y:  1350; w:  190; h:  228),
+       (x: 1360; y:  1628; w:  140; h:   84),
+       (x: 1196; y:  1764; w:  242; h:  118),
+       (x: 1216; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1494; y: 2048; w:    2; h:    2),
+       (x: 1450; y:  1952; w:   88; h:   34),
+       (x: 1598; y:  1862; w:   96; h:  112),
+       (x: 1656; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2350; y: 1024; w:    2; h:    2), // X + 2048
+       (x:  2288; y:  890; w:   44; h:   94),
+       (x:  2398; y:  862; w:   44; h:   94),
+       (x:  2508; y:  906; w:   78; h:   70),
+       (x:  2514; y: 1024; w:    2; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2852; y: 1024; w:    2; h:    2),
+       (x:  2768; y:  782; w:  108; h:  174),
+       (x:  2532; y:  624; w:  314; h:   98),
+       (x:  2358; y:  482; w:   76; h:  230),
+       (x:  2482; y:  286; w:  220; h:  154),
+       (x:  2888; y:  274; w:   56; h:  266),
+       (x: 3072; y:  244; w:   78; h:  304),
+       (x: 3296; y:  246; w:  116; h:  162),
+       (x: 3628; y:  326; w:  190; h:  228),
+       (x: 3408; y:  604; w:  140; h:   84),
+       (x: 3244; y:  740; w:  242; h:  118),
+       (x: 3264; y: 1024; w:    2; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x: 3542; y: 1024; w:    2; h:    2),
+       (x: 3498; y:  928; w:   88; h:   34),
+       (x: 3646; y:  838; w:   96; h:  112),
+       (x: 3704; y: 1024; w:    2; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2350; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2288; y:  1914; w:   44; h:   94),
+       (x:  2398; y:  1886; w:   44; h:   94),
+       (x:  2508; y:  1930; w:   78; h:   70),
+       (x:  2514; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2852; y: 2048; w:    2; h:    2),
+       (x:  2768; y:  1806; w:  108; h:  174),
+       (x:  2532; y:  1648; w:  314; h:   98),
+       (x:  2358; y:  1506; w:   76; h:  230),
+       (x:  2482; y:  1310; w:  220; h:  154),
+       (x:  2888; y:  1298; w:   56; h:  266),
+       (x: 3072; y:  1268; w:   78; h:  304),
+       (x: 3296; y:  1270; w:  116; h:  162),
+       (x: 3628; y:  1350; w:  190; h:  228),
+       (x: 3408; y:  1628; w:  140; h:   84),
+       (x: 3244; y:  1764; w:  242; h:  118),
+       (x: 3264; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3542; y: 2048; w:    2; h:    2),
+       (x: 3498; y:  1952; w:   88; h:   34),
+       (x: 3646; y:  1862; w:   96; h:  112),
+       (x: 3704; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template15FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template16Points: array[0..28] of TSDL_Rect =
+const Template16Points: array[0..115] of TSDL_Rect =
       (
        (x:  300; y: 1024; w:    2; h:    2),
        (x:  394; y:  902; w:   58; h:   62),
@@ -471,14 +2242,101 @@
        (x: 1686; y:  634; w:  178; h:  122),
        (x: 1572; y:  820; w:   34; h:  124),
        (x: 1698; y: 1024; w:   52; h:    2),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  300; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  394; y:  1926; w:   58; h:   62),
+       (x:  380; y:  1794; w:   94; h:   90),
+       (x:  186; y:  1650; w:   80; h:  220),
+       (x:  376; y:  1624; w:   82; h:  118),
+       (x:  182; y:  1352; w:  134; h:  226),
+       (x:  368; y:  1352; w:   52; h:   52),
+       (x:  472; y:  1198; w:   56; h:  212),
+       (x:  588; y:  1346; w:   60; h:   62),
+       (x:  718; y:  1348; w:  108; h:  218),
+       (x:  612; y:  1540; w:   36; h:  168),
+       (x:  728; y:  1680; w:  140; h:  134),
+       (x:  588; y:  1874; w:   74; h:   82),
+       (x:  750; y: 2048; w:  102; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1304; y: 2048; w:   72; h:    2),
+       (x: 1226; y:  1932; w:  266; h:   34),
+       (x: 1224; y:  1772; w:  252; h:   80),
+       (x: 1212; y:  1600; w:  256; h:   94),
+       (x: 1140; y:  1458; w:  174; h:   86),
+       (x: 1396; y:  1342; w:  156; h:   96),
+       (x: 1086; y:  1238; w:  206; h:   66),
+       (x: 1446; y:  1180; w:  152; h:   40),
+       (x: 1708; y:  1296; w:   60; h:  162),
+       (x: 1542; y:  1512; w:  146; h:   80),
+       (x: 1686; y:  1658; w:  178; h:  122),
+       (x: 1572; y:  1844; w:   34; h:  124),
+       (x: 1698; y: 2048; w:   52; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2348; y: 1024; w:    2; h:    2), // X + 2048
+       (x:  2442; y:  902; w:   58; h:   62),
+       (x:  2428; y:  770; w:   94; h:   90),
+       (x:  2234; y:  626; w:   80; h:  220),
+       (x:  2424; y:  600; w:   82; h:  118),
+       (x:  2230; y:  328; w:  134; h:  226),
+       (x:  2416; y:  328; w:   52; h:   52),
+       (x:  2520; y:  174; w:   56; h:  212),
+       (x:  2636; y:  322; w:   60; h:   62),
+       (x:  2766; y:  324; w:  108; h:  218),
+       (x:  2660; y:  516; w:   36; h:  168),
+       (x:  2776; y:  656; w:  140; h:  134),
+       (x:  2636; y:  850; w:   74; h:   82),
+       (x:  2798; y: 1024; w:  102; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x: 3352; y: 1024; w:   72; h:    2),
+       (x: 3274; y:  908; w:  266; h:   34),
+       (x: 3272; y:  748; w:  252; h:   80),
+       (x: 3260; y:  576; w:  256; h:   94),
+       (x: 3188; y:  434; w:  174; h:   86),
+       (x: 3444; y:  318; w:  156; h:   96),
+       (x: 3134; y:  214; w:  206; h:   66),
+       (x: 3494; y:  156; w:  152; h:   40),
+       (x: 3756; y:  272; w:   60; h:  162),
+       (x: 3590; y:  488; w:  146; h:   80),
+       (x: 3734; y:  634; w:  178; h:  122),
+       (x: 3620; y:  820; w:   34; h:  124),
+       (x: 3746; y: 1024; w:   52; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2348; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2442; y:  1926; w:   58; h:   62),
+       (x:  2428; y:  1794; w:   94; h:   90),
+       (x:  2234; y:  1650; w:   80; h:  220),
+       (x:  2424; y:  1624; w:   82; h:  118),
+       (x:  2230; y:  1352; w:  134; h:  226),
+       (x:  2416; y:  1352; w:   52; h:   52),
+       (x:  2520; y:  1198; w:   56; h:  212),
+       (x:  2636; y:  1346; w:   60; h:   62),
+       (x:  2766; y:  1348; w:  108; h:  218),
+       (x:  2660; y:  1540; w:   36; h:  168),
+       (x:  2776; y:  1680; w:  140; h:  134),
+       (x:  2636; y:  1874; w:   74; h:   82),
+       (x:  2798; y: 2048; w:  102; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3352; y: 2048; w:   72; h:    2),
+       (x: 3274; y:  1932; w:  266; h:   34),
+       (x: 3272; y:  1772; w:  252; h:   80),
+       (x: 3260; y:  1600; w:  256; h:   94),
+       (x: 3188; y:  1458; w:  174; h:   86),
+       (x: 3444; y:  1342; w:  156; h:   96),
+       (x: 3134; y:  1238; w:  206; h:   66),
+       (x: 3494; y:  1180; w:  152; h:   40),
+       (x: 3756; y:  1296; w:   60; h:  162),
+       (x: 3590; y:  1512; w:  146; h:   80),
+       (x: 3734; y:  1658; w:  178; h:  122),
+       (x: 3620; y:  1844; w:   34; h:  124),
+       (x: 3746; y: 2048; w:   52; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template16FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
       );
 
-const Template17Points: array[0..13] of TSDL_Rect =
+const Template17Points: array[0..55] of TSDL_Rect =
       (
        (x:  230; y: 1024; w:    2; h:    2),
        (x:  166; y:  856; w:  128; h:  118),
@@ -493,15 +2351,853 @@
        (x: 1524; y:  644; w:  272; h:   52),
        (x: 1572; y:  852; w:  180; h:   56),
        (x: 1598; y: 1024; w:   42; h:    2),
-       (x: NTPX; y:    0; w:    1; h:    1)
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  230; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  166; y:  1880; w:  128; h:  118),
+       (x:  352; y:  1880; w:   98; h:  114),
+       (x:  348; y:  1698; w:  140; h:  138),
+       (x:  556; y:  1696; w:  136; h:  142),
+       (x:  746; y:  1694; w:  114; h:  252),
+       (x:  924; y:  1402; w:  120; h:  390),
+       (x: 1122; y:  1486; w:  114; h:  210),
+       (x: 1324; y:  1330; w:  130; h:  252),
+       (x: 1536; y:  1230; w:  278; h:  234),
+       (x: 1524; y:  1668; w:  272; h:   52),
+       (x: 1572; y:  1876; w:  180; h:   56),
+       (x: 1598; y: 2048; w:   42; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2278; y: 1024; w:    2; h:    2), // X + 2048
+       (x:  2214; y:  856; w:  128; h:  118),
+       (x:  2400; y:  856; w:   98; h:  114),
+       (x:  2396; y:  674; w:  140; h:  138),
+       (x:  2604; y:  672; w:  136; h:  142),
+       (x:  2794; y:  670; w:  114; h:  252),
+       (x:  2972; y:  378; w:  120; h:  390),
+       (x: 3170; y:  462; w:  114; h:  210),
+       (x: 3372; y:  306; w:  130; h:  252),
+       (x: 3584; y:  206; w:  278; h:  234),
+       (x: 3572; y:  644; w:  272; h:   52),
+       (x: 3620; y:  852; w:  180; h:   56),
+       (x: 3646; y: 1024; w:   42; h:    2),
+       (x: NTPX; y:    0; w:    1; h:    1),
+       (x:  2278; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2214; y:  1880; w:  128; h:  118),
+       (x:  2400; y:  1880; w:   98; h:  114),
+       (x:  2396; y:  1698; w:  140; h:  138),
+       (x:  2604; y:  1696; w:  136; h:  142),
+       (x:  2794; y:  1694; w:  114; h:  252),
+       (x:  2972; y:  1402; w:  120; h:  390),
+       (x: 3170; y:  1486; w:  114; h:  210),
+       (x: 3372; y:  1330; w:  130; h:  252),
+       (x: 3584; y:  1230; w:  278; h:  234),
+       (x: 3572; y:  1668; w:  272; h:   52),
+       (x: 3620; y:  1876; w:  180; h:   56),
+       (x: 3646; y: 2048; w:   42; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
       );
       Template17FPoints: array[0..0] of TPoint =
       (
-       (x: 1023; y:    0)
+       (x: 2047; y:    0)
+      );
+//////////////////////////////////////////////////////////////////////////////
+/////////////////// END MIRRORED FOUR TIMES //////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+/////////////////// MIRRORED TWO TIMES ///////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+
+const Template18Points: array[0..37] of TSDL_Rect =
+      (
+       (x: 410;y: 2048; w:    1; h:    1), // Y + 1024
+       (x: 160;y: 1784; w:  130; h:  170),
+       (x: 342;y: 1730; w:  316; h:  150),
+       (x: 238;y: 1410; w:  270; h:  180),
+       (x: 246;y: 1200; w:  242; h:  156),
+       (x: 552;y: 1152; w:  610; h:  300),
+       (x: 750;y: 1492; w:  352; h:  324),
+       (x: 650;y: 2048; w:  500; h:    1),
+       (x: 1250;y: 2124; w:    1; h:    1),
+       (x: 1490;y: 2048; w:    1; h:    1),
+       (x: 1452;y: 1928; w:   74; h:   12),
+       (x: 1248;y: 1599; w:   68; h:  425),
+       (x: 1426;y: 1616; w:  140; h:  142),
+       (x: 1310;y: 1216; w:  150; h:  350),
+       (x: 1588;y: 1218; w:  148; h:  242),
+       (x: 1618;y: 1496; w:  276; h:  314),
+       (x: 1710;y: 1874; w:  130; h:   86),
+       (x: 1734;y: 2048; w:    1; h:    1),
+       (x: NTPX;y: 1024; w:    1; h:    1),
+       (x:  2458; y: 2048; w:    1; h:    1), // X + 2048, Y+1024
+       (x:  2208; y:  1784; w:  130; h:  170),
+       (x:  2390; y:  1730; w:  316; h:  150),
+       (x:  2286; y:  1410; w:  270; h:  180),
+       (x:  2294; y:  1200; w:  242; h:  156),
+       (x:  2600; y:  1152; w:  610; h:  300),
+       (x:  2798; y:  1492; w:  352; h:  324),
+       (x:  2698; y: 2048; w:  500; h:    1),
+       (x: 3298; y: 2124; w:    1; h:    1),
+       (x: 3538; y: 2048; w:    1; h:    1),
+       (x: 3500; y:  1928; w:   74; h:   12),
+       (x: 3296; y:  1599; w:   68; h:  425),
+       (x: 3474; y:  1616; w:  140; h:  142),
+       (x: 3358; y:  1216; w:  150; h:  350),
+       (x: 3636; y:  1218; w:  148; h:  242),
+       (x: 3666; y:  1496; w:  276; h:  314),
+       (x: 3758; y:  1874; w:  130; h:   86),
+       (x: 3782; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template18FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template19Points: array[0..31] of TSDL_Rect =
+      (
+       (x:  400; y: 2048; w:   25; h:    1), // Y + 1024
+       (x:  284; y:  1916; w:  254; h:   58),
+       (x:  492; y:  1658; w:  100; h:  200),
+       (x:  254; y:  1270; w:  276; h:  380),
+       (x:  620; y:  1278; w:  125; h:  270),
+       (x:  680; y:  1574; w:   96; h:  390),
+       (x:  826; y:  1638; w:  110; h:  350),
+       (x:  800; y:  1210; w:  150; h:  380),
+       (x: 1000; y:  1210; w:  170; h:  375),
+       (x: 1012; y:  1614; w:  188; h:  298),
+       (x: 1240; y:  1692; w:  136; h:  172),
+       (x: 1270; y:  1218; w:  120; h:  392),
+       (x: 1514; y:  1218; w:  364; h:  362),
+       (x: 1450; y:  1676; w:  315; h:  232),
+       (x: 1460; y: 2048; w:   25; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2448; y: 2048; w:   25; h:    1), // X + 2048, Y + 1024
+       (x:  2332; y:  1916; w:  254; h:   58),
+       (x:  2540; y:  1658; w:  100; h:  200),
+       (x:  2302; y:  1270; w:  276; h:  380),
+       (x:  2668; y:  1278; w:  125; h:  270),
+       (x:  2728; y:  1574; w:   96; h:  390),
+       (x:  2874; y:  1638; w:  110; h:  350),
+       (x:  2848; y:  1210; w:  150; h:  380),
+       (x: 3048; y:  1210; w:  170; h:  375),
+       (x: 3060; y:  1614; w:  188; h:  298),
+       (x: 3288; y:  1692; w:  136; h:  172),
+       (x: 3318; y:  1218; w:  120; h:  392),
+       (x: 3562; y:  1218; w:  364; h:  362),
+       (x: 3498; y:  1676; w:  315; h:  232),
+       (x: 3508; y: 2048; w:   25; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template19FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template20Points: array[0..43] of TSDL_Rect =
+      (
+       (x:  354; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  232; y:  1950; w:  226; h:   60),
+       (x:  120; y:  1870; w:  298; h:   62),
+       (x:  280; y:  1728; w:  210; h:  102),
+       (x:  208; y:  1446; w:  192; h:  248),
+       (x:  292; y:  1184; w:  206; h:  240),
+       (x:  526; y:  1196; w:   92; h:  334),
+       (x:  462; y:  1552; w:  226; h:  126),
+       (x:  556; y:  1702; w:  268; h:  156),
+       (x:  722; y:  1188; w:  138; h:  500),
+       (x:  890; y:  1180; w:   94; h:  352),
+       (x:  898; y:  1586; w:  170; h:  264),
+       (x: 1092; y:  1408; w:   84; h:  446),
+       (x: 1206; y:  1224; w:  158; h:  278),
+       (x: 1300; y:  1514; w:  104; h:  336),
+       (x: 1416; y:  1570; w:   90; h:  398),
+       (x: 1546; y:  1216; w:  134; h:  532),
+       (x: 1702; y:  1270; w:  156; h:  258),
+       (x: 1700; y:  1572; w:  132; h:  340),
+       (x: 1534; y:  1922; w:  252; h:   82),
+       (x: 1604; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2402; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2280; y:  1950; w:  226; h:   60),
+       (x:  2168; y:  1870; w:  298; h:   62),
+       (x:  2328; y:  1728; w:  210; h:  102),
+       (x:  2256; y:  1446; w:  192; h:  248),
+       (x:  2340; y:  1184; w:  206; h:  240),
+       (x:  2574; y:  1196; w:   92; h:  334),
+       (x:  2510; y:  1552; w:  226; h:  126),
+       (x:  2604; y:  1702; w:  268; h:  156),
+       (x:  2770; y:  1188; w:  138; h:  500),
+       (x:  2938; y:  1180; w:   94; h:  352),
+       (x:  2946; y:  1586; w:  170; h:  264),
+       (x: 3140; y:  1408; w:   84; h:  446),
+       (x: 3254; y:  1224; w:  158; h:  278),
+       (x: 3348; y:  1514; w:  104; h:  336),
+       (x: 3464; y:  1570; w:   90; h:  398),
+       (x: 3594; y:  1216; w:  134; h:  532),
+       (x: 3750; y:  1270; w:  156; h:  258),
+       (x: 3748; y:  1572; w:  132; h:  340),
+       (x: 3582; y:  1922; w:  252; h:   82),
+       (x: 3652; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template20FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template21Points: array[0..33] of TSDL_Rect =
+      (
+       (x:  348; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  236; y:  1876; w:  208; h:   72),
+       (x:  498; y:  1734; w:  308; h:   60),
+       (x:  728; y:  1876; w:  434; h:   40),
+       (x: 1174; y:  1736; w:  332; h:   40),
+       (x: 1402; y:  1862; w:  226; h:   36),
+       (x: 1530; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1660; y:  1522; w:  111; h:  111),
+       (x: 1270; y:  1500; w:   34; h:  102),
+       (x:  682; y:  1438; w:  284; h:  132),
+       (x:  230; y:  1352; w:  126; h:  168),
+       (x:  410; y:  1198; w:  114; h:  100),
+       (x:  790; y:  1196; w:  352; h:  120),
+       (x: 1274; y:  1152; w:   60; h:  240),
+       (x: 1434; y:  1246; w:  254; h:  116),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2396; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2284; y:  1876; w:  208; h:   72),
+       (x:  2546; y:  1734; w:  308; h:   60),
+       (x:  2776; y:  1876; w:  434; h:   40),
+       (x: 3222; y:  1736; w:  332; h:   40),
+       (x: 3450; y:  1862; w:  226; h:   36),
+       (x: 3578; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3708; y:  1522; w:  111; h:  111),
+       (x: 3318; y:  1500; w:   34; h:  102),
+       (x:  2730; y:  1438; w:  284; h:  132),
+       (x:  2278; y:  1352; w:  126; h:  168),
+       (x:  2458; y:  1198; w:  114; h:  100),
+       (x:  2838; y:  1196; w:  352; h:  120),
+       (x: 3322; y:  1152; w:   60; h:  240),
+       (x: 3482; y:  1246; w:  254; h:  116),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template21FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template22Points: array[0..45] of TSDL_Rect =
+      (
+       (x:  418; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  248; y:  1924; w:  186; h:   62),
+       (x:  272; y:  1716; w:  254; h:  138),
+       (x:  610; y:  1792; w:   90; h:  166),
+       (x:  820; y:  1640; w:  224; h:  258),
+       (x: 1242; y:  1782; w:   96; h:  146),
+       (x: 1550; y:  1722; w:  224; h:  134),
+       (x: 1530; y:  1926; w:  210; h:   54),
+       (x: 1532; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  202; y:  1442; w:  110; h:   92),
+       (x:  252; y:  1336; w:  160; h:   32),
+       (x:  150; y:  1192; w:  134; h:   78),
+       (x:  702; y:  1184; w:  132; h:   84),
+       (x:  702; y:  1332; w:  230; h:   36),
+       (x:  720; y:  1432; w:  166; h:   96),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1702; y:  1458; w:  202; h:   42),
+       (x: 1252; y:  1412; w:  134; h:   98),
+       (x: 1214; y:  1176; w:  116; h:  154),
+       (x: 1428; y:  1276; w:  150; h:   70),
+       (x: 1750; y:  1176; w:   86; h:  220),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2466; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2296; y:  1924; w:  186; h:   62),
+       (x:  2320; y:  1716; w:  254; h:  138),
+       (x:  2658; y:  1792; w:   90; h:  166),
+       (x:  2868; y:  1640; w:  224; h:  258),
+       (x: 3290; y:  1782; w:   96; h:  146),
+       (x: 3598; y:  1722; w:  224; h:  134),
+       (x: 3578; y:  1926; w:  210; h:   54),
+       (x: 3580; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2250; y:  1442; w:  110; h:   92),
+       (x:  2300; y:  1336; w:  160; h:   32),
+       (x:  2198; y:  1192; w:  134; h:   78),
+       (x:  2750; y:  1184; w:  132; h:   84),
+       (x:  2750; y:  1332; w:  230; h:   36),
+       (x:  2768; y:  1432; w:  166; h:   96),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3750; y:  1458; w:  202; h:   42),
+       (x: 3300; y:  1412; w:  134; h:   98),
+       (x: 3262; y:  1176; w:  116; h:  154),
+       (x: 3476; y:  1276; w:  150; h:   70),
+       (x: 3798; y:  1176; w:   86; h:  220),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template22FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template23Points: array[0..31] of TSDL_Rect =
+      (
+       (x:  274; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  190; y:  1942; w:  168; h:   26),
+       (x:  382; y:  1600; w:  122; h:  314),
+       (x:  568; y:  1768; w:   56; h:  180),
+       (x:  678; y:  1880; w:   64; h:   56),
+       (x:  740; y:  1674; w:  106; h:  220),
+       (x:  644; y:  1520; w:  162; h:  140),
+       (x:  496; y:  1234; w:  886; h:  174),
+       (x:  934; y:  1472; w:  296; h:  108),
+       (x:  950; y:  1776; w:  152; h:  146),
+       (x: 1172; y:  1798; w:   60; h:  152),
+       (x: 1284; y:  1746; w:  150; h:  138),
+       (x: 1494; y:  1388; w:   56; h:  582),
+       (x: 1620; y:  1798; w:   94; h:  232),
+       (x: 1612; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2322; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2238; y:  1942; w:  168; h:   26),
+       (x:  2430; y:  1600; w:  122; h:  314),
+       (x:  2616; y:  1768; w:   56; h:  180),
+       (x:  2726; y:  1880; w:   64; h:   56),
+       (x:  2788; y:  1674; w:  106; h:  220),
+       (x:  2692; y:  1520; w:  162; h:  140),
+       (x:  2544; y:  1234; w:  886; h:  174),
+       (x:  2982; y:  1472; w:  296; h:  108),
+       (x:  2998; y:  1776; w:  152; h:  146),
+       (x: 3220; y:  1798; w:   60; h:  152),
+       (x: 3332; y:  1746; w:  150; h:  138),
+       (x: 3542; y:  1388; w:   56; h:  582),
+       (x: 3668; y:  1798; w:   94; h:  232),
+       (x: 3660; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+       );
+      Template23FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template24Points: array[0..27] of TSDL_Rect =
+      (
+       (x:  368; y: 2046; w:    2; h:    2), // Y + 1024
+       (x:  266; y:  1864; w:  302; h:  110),
+       (x:  294; y:  1536; w:  104; h:  290),
+       (x:  570; y:  1604; w:  364; h:  122),
+       (x:  568; y:  1464; w:  368; h:  100),
+       (x:  232; y:  1284; w:  482; h:  130),
+       (x:  778; y:  1266; w:   62; h:   64),
+       (x:  990; y:  1178; w:   58; h:  246),
+       (x: 1200; y:  1300; w:  590; h:   98),
+       (x: 1088; y:  1466; w:  214; h:  188),
+       (x: 1050; y:  1710; w:  406; h:   92),
+       (x: 1584; y:  1526; w:  190; h:  412),
+       (x: 1646; y: 2044; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2416; y: 2046; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2314; y:  1864; w:  302; h:  110),
+       (x:  2342; y:  1536; w:  104; h:  290),
+       (x:  2618; y:  1604; w:  364; h:  122),
+       (x:  2616; y:  1464; w:  368; h:  100),
+       (x:  2280; y:  1284; w:  482; h:  130),
+       (x:  2826; y:  1266; w:   62; h:   64),
+       (x:  3038; y:  1178; w:   58; h:  246),
+       (x: 3248; y:  1300; w:  590; h:   98),
+       (x: 3136; y:  1466; w:  214; h:  188),
+       (x: 3098; y:  1710; w:  406; h:   92),
+       (x: 3632; y:  1526; w:  190; h:  412),
+       (x: 3694; y: 2044; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+       );
+      Template24FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template25Points: array[0..11] of TSDL_Rect =
+      (
+       (x:  162; y: 2048; w:  400; h:    1), // Y + 1024
+       (x:  226; y:  1258; w:  142; h:  360),
+       (x:  936; y:  1764; w:  400; h:  200),
+       (x: 1576; y:  1200; w:  186; h:  550),
+       (x: 1430; y: 2048; w:  454; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  162; y: 2048; w:  400; h:    1), // X + 2048, Y + 1024
+       (x:  226; y:  1258; w:  142; h:  360),
+       (x:  936; y:  1764; w:  400; h:  200),
+       (x: 1576; y:  1200; w:  186; h:  550),
+       (x: 1430; y: 2048; w:  454; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template25FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
       );
 
 
-const EdgeTemplates: array[0..17] of TEdgeTemplate =
+const Template26Points: array[0..39] of TSDL_Rect =
+      (
+       (x:  364; y: 2048; w:   20; h:    1), // Y + 1024
+       (x:  290; y:  1884; w:   64; h:   62),
+       (x:  486; y:  1774; w:   52; h:  146),
+       (x:  256; y:  1614; w:  116; h:  144),
+       (x:  470; y:  1492; w:  138; h:  168),
+       (x:  242; y:  1266; w:  158; h:  162),
+       (x:  508; y:  1334; w:  198; h:   72),
+       (x:  770; y:  1252; w:  118; h:  134),
+       (x:  636; y:  1742; w:  142; h:  132),
+       (x:  968; y:  1724; w:  172; h:   58),
+       (x:  970; y:  1828; w:  172; h:   62),
+       (x: 1232; y:  1728; w:   82; h:  226),
+       (x: 1356; y:  1618; w:   64; h:  152),
+       (x: 1214; y:  1358; w:  106; h:  152),
+       (x: 1410; y:  1284; w:  380; h:   82),
+       (x: 1528; y:  1446; w:   30; h:  118),
+       (x: 1540; y:  1612; w:  212; h:   50),
+       (x: 1464; y:  1770; w:  128; h:  146),
+       (x: 1630; y: 2048; w:   20; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2412; y: 2048; w:   20; h:    1), // X + 2048, Y + 1024
+       (x:  2338; y:  1884; w:   64; h:   62),
+       (x:  2534; y:  1774; w:   52; h:  146),
+       (x:  2304; y:  1614; w:  116; h:  144),
+       (x:  2518; y:  1492; w:  138; h:  168),
+       (x:  2290; y:  1266; w:  158; h:  162),
+       (x:  2556; y:  1334; w:  198; h:   72),
+       (x:  2818; y:  1252; w:  118; h:  134),
+       (x:  2684; y:  1742; w:  142; h:  132),
+       (x:  3016; y:  1724; w:  172; h:   58),
+       (x:  3018; y:  1828; w:  172; h:   62),
+       (x: 3280; y:  1728; w:   82; h:  226),
+       (x: 3404; y:  1618; w:   64; h:  152),
+       (x: 3262; y:  1358; w:  106; h:  152),
+       (x: 3458; y:  1284; w:  380; h:   82),
+       (x: 3576; y:  1446; w:   30; h:  118),
+       (x: 3588; y:  1612; w:  212; h:   50),
+       (x: 3512; y:  1770; w:  128; h:  146),
+       (x: 3678; y: 2048; w:   20; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template26FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template27Points: array[0..63] of TSDL_Rect =
+      (
+       (x:  340; y: 2048; w:    1; h:    1), // Y + 1024
+       (x:  276; y:  1926; w:   44; h:   54),
+       (x:  434; y:  1860; w:   58; h:   90),
+       (x:  266; y:  1758; w:   80; h:   80),
+       (x:  246; y:  1628; w:   96; h:  108),
+       (x:  426; y:  1670; w:  110; h:  112),
+       (x:  234; y:  1316; w:  118; h:  164),
+       (x:  428; y:  1420; w:  130; h:  110),
+       (x:  516; y:  1222; w:  344; h:   78),
+       (x:  688; y:  1450; w:   50; h:   40),
+       (x:  626; y:  1584; w:   32; h:  148),
+       (x:  698; y:  1674; w:  160; h:   34),
+       (x:  674; y:  1812; w:   36; h:  136),
+       (x: 1014; y:  1872; w:   48; h:   48),
+       (x: 1086; y:  1752; w:   64; h:   88),
+       (x:  958; y:  1684; w:   70; h:   74),
+       (x: 1116; y:  1620; w:   68; h:   70),
+       (x: 1118; y:  1508; w:   68; h:   82),
+       (x:  958; y:  1348; w:   44; h:  140),
+       (x: 1272; y:  1330; w:   52; h:   66),
+       (x: 1254; y:  1526; w:   58; h:   66),
+       (x: 1234; y:  1784; w:   76; h:  112),
+       (x: 1380; y:  1786; w:  124; h:   64),
+       (x: 1472; y:  1496; w:   54; h:  134),
+       (x: 1410; y:  1220; w:  246; h:   62),
+       (x: 1706; y:  1178; w:   38; h:  238),
+       (x: 1812; y:  1372; w:   28; h:   28),
+       (x: 1692; y:  1548; w:  144; h:   94),
+       (x: 1632; y:  1702; w:  248; h:   20),
+       (x: 1632; y:  1826; w:  238; h:   16),
+       (x: 1680; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2388; y: 2048; w:    1; h:    1), // X + 2048, Y + 1024
+       (x:  2324; y:  1926; w:   44; h:   54),
+       (x:  2482; y:  1860; w:   58; h:   90),
+       (x:  2314; y:  1758; w:   80; h:   80),
+       (x:  2294; y:  1628; w:   96; h:  108),
+       (x:  2474; y:  1670; w:  110; h:  112),
+       (x:  2282; y:  1316; w:  118; h:  164),
+       (x:  2476; y:  1420; w:  130; h:  110),
+       (x:  2564; y:  1222; w:  344; h:   78),
+       (x:  2736; y:  1450; w:   50; h:   40),
+       (x:  2674; y:  1584; w:   32; h:  148),
+       (x:  2746; y:  1674; w:  160; h:   34),
+       (x:  2722; y:  1812; w:   36; h:  136),
+       (x: 3062; y:  1872; w:   48; h:   48),
+       (x: 3134; y:  1752; w:   64; h:   88),
+       (x:  3006; y:  1684; w:   70; h:   74),
+       (x: 3164; y:  1620; w:   68; h:   70),
+       (x: 3166; y:  1508; w:   68; h:   82),
+       (x:  3006; y:  1348; w:   44; h:  140),
+       (x: 3320; y:  1330; w:   52; h:   66),
+       (x: 3302; y:  1526; w:   58; h:   66),
+       (x: 3282; y:  1784; w:   76; h:  112),
+       (x: 3428; y:  1786; w:  124; h:   64),
+       (x: 3520; y:  1496; w:   54; h:  134),
+       (x: 3458; y:  1220; w:  246; h:   62),
+       (x: 3754; y:  1178; w:   38; h:  238),
+       (x: 3860; y:  1372; w:   28; h:   28),
+       (x: 3740; y:  1548; w:  144; h:   94),
+       (x: 3680; y:  1702; w:  248; h:   20),
+       (x: 3680; y:  1826; w:  238; h:   16),
+       (x: 3728; y: 2048; w:    1; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template27FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template28Points: array[0..27] of TSDL_Rect =
+      (
+       (x:  188; y: 2048; w:  190; h:    1), // Y + 1024
+       (x:  240; y:  1706; w:  140; h:  150),
+       (x:  314; y:  1492; w:  352; h:   94),
+       (x:  726; y:  1270; w:  106; h:  282),
+       (x:  902; y:  1414; w:  368; h:  142),
+       (x:  958; y:  1612; w:  116; h:  244),
+       (x:  876; y: 2048; w:   14; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1064; y: 2048; w:   22; h:    1),
+       (x: 1288; y:  1819; w:  120; h:  120),
+       (x: 1458; y:  1298; w:  354; h:  448),
+       (x: 1688; y:  1819; w:  120; h:  120),
+       (x: 1782; y: 2048; w:    2; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2236; y: 2048; w:  190; h:    1), // X + 2048, Y + 1024
+       (x:  2288; y:  1706; w:  140; h:  150),
+       (x:  2362; y:  1492; w:  352; h:   94),
+       (x:  2774; y:  1270; w:  106; h:  282),
+       (x:  2950; y:  1414; w:  368; h:  142),
+       (x:  3006; y:  1612; w:  116; h:  244),
+       (x:  2924; y: 2048; w:   14; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3112; y: 2048; w:   22; h:    1),
+       (x: 3336; y:  1819; w:  120; h:  120),
+       (x: 3506; y:  1298; w:  354; h:  448),
+       (x: 3736; y:  1819; w:  120; h:  120),
+       (x: 3830; y: 2048; w:    2; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template28FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template29Points: array[0..19] of TSDL_Rect =
+      (
+       (x:  274; y: 2048; w:  166; h:    1), // Y + 1024
+       (x:  330; y:  1886; w:   96; h:   92),
+       (x:  492; y:  1714; w:  152; h:  250),
+       (x:  746; y:  1670; w:   36; h:  270),
+       (x:  938; y:  1650; w:   54; h:  224),
+       (x: 1134; y:  1670; w:   44; h:  216),
+       (x: 1292; y:  1654; w:   46; h:  300),
+       (x: 1448; y:  1688; w:  158; h:  272),
+       (x: 1584; y: 2048; w:  136; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2322; y: 2048; w:  166; h:    1), // X + 2048, Y + 1024
+       (x:  2378; y:  1886; w:   96; h:   92),
+       (x:  2540; y:  1714; w:  152; h:  250),
+       (x:  2794; y:  1670; w:   36; h:  270),
+       (x:  2986; y:  1650; w:   54; h:  224),
+       (x: 3182; y:  1670; w:   44; h:  216),
+       (x: 3340; y:  1654; w:   46; h:  300),
+       (x: 3496; y:  1688; w:  158; h:  272),
+       (x: 3632; y: 2048; w:  136; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template29FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template30Points: array[0..27] of TSDL_Rect =
+      (
+       (x:  360; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  242; y:  1654; w:   46; h:  286),
+       (x:  454; y:  1696; w:  194; h:   56),
+       (x:  254; y:  1358; w:  534; h:  200),
+       (x:  870; y:  1300; w:   58; h:  468),
+       (x: 1076; y:  1296; w:  198; h:  112),
+       (x: 1000; y: 2048; w:   64; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1244; y: 2048; w:   64; h:    2),
+       (x: 1356; y:  1518; w:  184; h:   94),
+       (x: 1600; y:  1438; w:   76; h:  358),
+       (x: 1748; y:  1608; w:  108; h:  304),
+       (x: 1688; y: 2048; w:  176; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2408; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2290; y:  1654; w:   46; h:  286),
+       (x:  2502; y:  1696; w:  194; h:   56),
+       (x:  2302; y:  1358; w:  534; h:  200),
+       (x:  2918; y:  1300; w:   58; h:  468),
+       (x: 3124; y:  1296; w:  198; h:  112),
+       (x: 3048; y: 2048; w:   64; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3292; y: 2048; w:   64; h:    2),
+       (x: 3404; y:  1518; w:  184; h:   94),
+       (x: 3648; y:  1438; w:   76; h:  358),
+       (x: 3796; y:  1608; w:  108; h:  304),
+       (x: 3736; y: 2048; w:  176; h:    1),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template30FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template31Points: array[0..31] of TSDL_Rect =
+      (
+       (x:  446; y: 2048; w:  140; h:    2), // Y + 1024
+       (x:  280; y:  1896; w:  196; h:   32),
+       (x:  254; y:  1704; w:  262; h:  134),
+       (x:  654; y:  1696; w:  220; h:  136),
+       (x:  608; y:  1514; w:  268; h:  110),
+       (x:  300; y:  1386; w:  104; h:  200),
+       (x:  446; y:  1248; w:  306; h:   58),
+       (x:  916; y:  1212; w:   84; h:  206),
+       (x: 1148; y:  1198; w:  104; h:  220),
+       (x: 1426; y:  1200; w:  120; h:  202),
+       (x: 1556; y:  1442; w:  192; h:   68),
+       (x: 1226; y:  1572; w:  246; h:   88),
+       (x: 1256; y:  1730; w:  194; h:  150),
+       (x: 1568; y:  1730; w:  198; h:  152),
+       (x: 1444; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2494; y: 2048; w:  140; h:    2), // X + 2048, Y + 1024
+       (x:  2328; y:  1896; w:  196; h:   32),
+       (x:  2302; y:  1704; w:  262; h:  134),
+       (x:  2702; y:  1696; w:  220; h:  136),
+       (x:  2656; y:  1514; w:  268; h:  110),
+       (x:  2348; y:  1386; w:  104; h:  200),
+       (x:  2494; y:  1248; w:  306; h:   58),
+       (x:  2964; y:  1212; w:   84; h:  206),
+       (x: 3196; y:  1198; w:  104; h:  220),
+       (x: 3474; y:  1200; w:  120; h:  202),
+       (x: 3604; y:  1442; w:  192; h:   68),
+       (x: 3274; y:  1572; w:  246; h:   88),
+       (x: 3304; y:  1730; w:  194; h:  150),
+       (x: 3616; y:  1730; w:  198; h:  152),
+       (x: 3492; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template31FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template32Points: array[0..27] of TSDL_Rect =
+      (
+       (x:  286; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  244; y:  1910; w:   84; h:   54),
+       (x:  212; y:  1710; w:  150; h:  166),
+       (x:  678; y:  1864; w:  186; h:   98),
+       (x:  744; y:  1628; w:  124; h:   58),
+       (x:  620; y:  1206; w:  112; h:  194),
+       (x:  988; y:  1284; w:   92; h:  132),
+       (x: 1310; y:  1198; w:  154; h:  196),
+       (x: 1160; y:  1598; w:  118; h:   64),
+       (x: 1052; y:  1846; w:  328; h:   92),
+       (x: 1596; y:  1654; w:  242; h:  222),
+       (x: 1598; y:  1940; w:  254; h:   50),
+       (x: 1608; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2334; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2292; y:  1910; w:   84; h:   54),
+       (x:  2260; y:  1710; w:  150; h:  166),
+       (x:  2726; y:  1864; w:  186; h:   98),
+       (x:  2792; y:  1628; w:  124; h:   58),
+       (x:  2668; y:  1206; w:  112; h:  194),
+       (x:  3036; y:  1284; w:   92; h:  132),
+       (x: 3358; y:  1198; w:  154; h:  196),
+       (x: 3208; y:  1598; w:  118; h:   64),
+       (x: 3100; y:  1846; w:  328; h:   92),
+       (x: 3644; y:  1654; w:  242; h:  222),
+       (x: 3646; y:  1940; w:  254; h:   50),
+       (x: 3656; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template32FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template33Points: array[0..47] of TSDL_Rect =
+      (
+       (x:  302; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  240; y:  1914; w:   44; h:   94),
+       (x:  350; y:  1886; w:   44; h:   94),
+       (x:  460; y:  1930; w:   78; h:   70),
+       (x:  466; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  804; y: 2048; w:    2; h:    2),
+       (x:  720; y:  1806; w:  108; h:  174),
+       (x:  484; y:  1648; w:  314; h:   98),
+       (x:  310; y:  1506; w:   76; h:  230),
+       (x:  434; y:  1310; w:  220; h:  154),
+       (x:  840; y:  1298; w:   56; h:  266),
+       (x: 1024; y:  1268; w:   78; h:  304),
+       (x: 1248; y:  1270; w:  116; h:  162),
+       (x: 1580; y:  1350; w:  190; h:  228),
+       (x: 1360; y:  1628; w:  140; h:   84),
+       (x: 1196; y:  1764; w:  242; h:  118),
+       (x: 1216; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1494; y: 2048; w:    2; h:    2),
+       (x: 1450; y:  1952; w:   88; h:   34),
+       (x: 1598; y:  1862; w:   96; h:  112),
+       (x: 1656; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2350; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2288; y:  1914; w:   44; h:   94),
+       (x:  2398; y:  1886; w:   44; h:   94),
+       (x:  2508; y:  1930; w:   78; h:   70),
+       (x:  2514; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2852; y: 2048; w:    2; h:    2),
+       (x:  2768; y:  1806; w:  108; h:  174),
+       (x:  2532; y:  1648; w:  314; h:   98),
+       (x:  2358; y:  1506; w:   76; h:  230),
+       (x:  2482; y:  1310; w:  220; h:  154),
+       (x:  2888; y:  1298; w:   56; h:  266),
+       (x: 3072; y:  1268; w:   78; h:  304),
+       (x: 3296; y:  1270; w:  116; h:  162),
+       (x: 3628; y:  1350; w:  190; h:  228),
+       (x: 3408; y:  1628; w:  140; h:   84),
+       (x: 3244; y:  1764; w:  242; h:  118),
+       (x: 3264; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3542; y: 2048; w:    2; h:    2),
+       (x: 3498; y:  1952; w:   88; h:   34),
+       (x: 3646; y:  1862; w:   96; h:  112),
+       (x: 3704; y: 2048; w:    2; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template33FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template34Points: array[0..57] of TSDL_Rect =
+      (
+       (x:  300; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  394; y:  1926; w:   58; h:   62),
+       (x:  380; y:  1794; w:   94; h:   90),
+       (x:  186; y:  1650; w:   80; h:  220),
+       (x:  376; y:  1624; w:   82; h:  118),
+       (x:  182; y:  1352; w:  134; h:  226),
+       (x:  368; y:  1352; w:   52; h:   52),
+       (x:  472; y:  1198; w:   56; h:  212),
+       (x:  588; y:  1346; w:   60; h:   62),
+       (x:  718; y:  1348; w:  108; h:  218),
+       (x:  612; y:  1540; w:   36; h:  168),
+       (x:  728; y:  1680; w:  140; h:  134),
+       (x:  588; y:  1874; w:   74; h:   82),
+       (x:  750; y: 2048; w:  102; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 1304; y: 2048; w:   72; h:    2),
+       (x: 1226; y:  1932; w:  266; h:   34),
+       (x: 1224; y:  1772; w:  252; h:   80),
+       (x: 1212; y:  1600; w:  256; h:   94),
+       (x: 1140; y:  1458; w:  174; h:   86),
+       (x: 1396; y:  1342; w:  156; h:   96),
+       (x: 1086; y:  1238; w:  206; h:   66),
+       (x: 1446; y:  1180; w:  152; h:   40),
+       (x: 1708; y:  1296; w:   60; h:  162),
+       (x: 1542; y:  1512; w:  146; h:   80),
+       (x: 1686; y:  1658; w:  178; h:  122),
+       (x: 1572; y:  1844; w:   34; h:  124),
+       (x: 1698; y: 2048; w:   52; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2348; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2442; y:  1926; w:   58; h:   62),
+       (x:  2428; y:  1794; w:   94; h:   90),
+       (x:  2234; y:  1650; w:   80; h:  220),
+       (x:  2424; y:  1624; w:   82; h:  118),
+       (x:  2230; y:  1352; w:  134; h:  226),
+       (x:  2416; y:  1352; w:   52; h:   52),
+       (x:  2520; y:  1198; w:   56; h:  212),
+       (x:  2636; y:  1346; w:   60; h:   62),
+       (x:  2766; y:  1348; w:  108; h:  218),
+       (x:  2660; y:  1540; w:   36; h:  168),
+       (x:  2776; y:  1680; w:  140; h:  134),
+       (x:  2636; y:  1874; w:   74; h:   82),
+       (x:  2798; y: 2048; w:  102; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x: 3352; y: 2048; w:   72; h:    2),
+       (x: 3274; y:  1932; w:  266; h:   34),
+       (x: 3272; y:  1772; w:  252; h:   80),
+       (x: 3260; y:  1600; w:  256; h:   94),
+       (x: 3188; y:  1458; w:  174; h:   86),
+       (x: 3444; y:  1342; w:  156; h:   96),
+       (x: 3134; y:  1238; w:  206; h:   66),
+       (x: 3494; y:  1180; w:  152; h:   40),
+       (x: 3756; y:  1296; w:   60; h:  162),
+       (x: 3590; y:  1512; w:  146; h:   80),
+       (x: 3734; y:  1658; w:  178; h:  122),
+       (x: 3620; y:  1844; w:   34; h:  124),
+       (x: 3746; y: 2048; w:   52; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template34FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+const Template35Points: array[0..27] of TSDL_Rect =
+      (
+       (x:  230; y: 2048; w:    2; h:    2), // Y + 1024
+       (x:  166; y:  1880; w:  128; h:  118),
+       (x:  352; y:  1880; w:   98; h:  114),
+       (x:  348; y:  1698; w:  140; h:  138),
+       (x:  556; y:  1696; w:  136; h:  142),
+       (x:  746; y:  1694; w:  114; h:  252),
+       (x:  924; y:  1402; w:  120; h:  390),
+       (x: 1122; y:  1486; w:  114; h:  210),
+       (x: 1324; y:  1330; w:  130; h:  252),
+       (x: 1536; y:  1230; w:  278; h:  234),
+       (x: 1524; y:  1668; w:  272; h:   52),
+       (x: 1572; y:  1876; w:  180; h:   56),
+       (x: 1598; y: 2048; w:   42; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1),
+       (x:  2278; y: 2048; w:    2; h:    2), // X + 2048, Y + 1024
+       (x:  2214; y:  1880; w:  128; h:  118),
+       (x:  2400; y:  1880; w:   98; h:  114),
+       (x:  2396; y:  1698; w:  140; h:  138),
+       (x:  2604; y:  1696; w:  136; h:  142),
+       (x:  2794; y:  1694; w:  114; h:  252),
+       (x:  2972; y:  1402; w:  120; h:  390),
+       (x: 3170; y:  1486; w:  114; h:  210),
+       (x: 3372; y:  1330; w:  130; h:  252),
+       (x: 3584; y:  1230; w:  278; h:  234),
+       (x: 3572; y:  1668; w:  272; h:   52),
+       (x: 3620; y:  1876; w:  180; h:   56),
+       (x: 3646; y: 2048; w:   42; h:    2),
+       (x: NTPX; y:    1024; w:    1; h:    1)
+      );
+      Template35FPoints: array[0..0] of TPoint =
+      (
+       (x: 2047; y:    0)
+      );
+
+
+//////////////////////////////////////////////////////////////////////////////
+/////////////////// END MIRRORED TWO TIMES ///////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+const EdgeTemplates: array[0..35] of TEdgeTemplate =
       (
        (BasePoints: @Template0Points;
         BasePointsCount: Succ(High(Template0Points));
@@ -646,6 +3342,150 @@
         BezierizeCount: 3;
         RandPassesCount: 7;
         canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template18Points;
+        BasePointsCount: Succ(High(Template18Points));
+        FillPoints: @Template18FPoints;
+        FillPointsCount: Succ(High(Template18FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 8;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template19Points;
+        BasePointsCount: Succ(High(Template19Points));
+        FillPoints: @Template19FPoints;
+        FillPointsCount: Succ(High(Template19FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 7;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template20Points;
+        BasePointsCount: Succ(High(Template20Points));
+        FillPoints: @Template20FPoints;
+        FillPointsCount: Succ(High(Template20FPoints));
+        BezierizeCount: 2;
+        RandPassesCount: 6;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template21Points;
+        BasePointsCount: Succ(High(Template21Points));
+        FillPoints: @Template21FPoints;
+        FillPointsCount: Succ(High(Template21FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 4;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template22Points;
+        BasePointsCount: Succ(High(Template22Points));
+        FillPoints: @Template22FPoints;
+        FillPointsCount: Succ(High(Template22FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 4;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template23Points;
+        BasePointsCount: Succ(High(Template23Points));
+        FillPoints: @Template23FPoints;
+        FillPointsCount: Succ(High(Template23FPoints));
+        BezierizeCount: 2;
+        RandPassesCount: 8;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template24Points;
+        BasePointsCount: Succ(High(Template24Points));
+        FillPoints: @Template24FPoints;
+        FillPointsCount: Succ(High(Template24FPoints));
+        BezierizeCount: 2;
+        RandPassesCount: 5;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template25Points;
+        BasePointsCount: Succ(High(Template25Points));
+        FillPoints: @Template25FPoints;
+        FillPointsCount: Succ(High(Template25FPoints));
+        BezierizeCount: 4;
+        RandPassesCount: 4;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template26Points;
+        BasePointsCount: Succ(High(Template26Points));
+        FillPoints: @Template26FPoints;
+        FillPointsCount: Succ(High(Template26FPoints));
+        BezierizeCount: 2;
+        RandPassesCount: 7;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template27Points;
+        BasePointsCount: Succ(High(Template27Points));
+        FillPoints: @Template27FPoints;
+        FillPointsCount: Succ(High(Template27FPoints));
+        BezierizeCount: 1;
+        RandPassesCount: 5;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template28Points;
+        BasePointsCount: Succ(High(Template28Points));
+        FillPoints: @Template28FPoints;
+        FillPointsCount: Succ(High(Template28FPoints));
+        BezierizeCount: 2;
+        RandPassesCount: 6;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template29Points;
+        BasePointsCount: Succ(High(Template29Points));
+        FillPoints: @Template29FPoints;
+        FillPointsCount: Succ(High(Template29FPoints));
+        BezierizeCount: 1;
+        RandPassesCount: 8;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template30Points;
+        BasePointsCount: Succ(High(Template30Points));
+        FillPoints: @Template30FPoints;
+        FillPointsCount: Succ(High(Template30FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 8;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template31Points;
+        BasePointsCount: Succ(High(Template31Points));
+        FillPoints: @Template31FPoints;
+        FillPointsCount: Succ(High(Template31FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 5;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template32Points;
+        BasePointsCount: Succ(High(Template32Points));
+        FillPoints: @Template32FPoints;
+        FillPointsCount: Succ(High(Template32FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 7;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template33Points;
+        BasePointsCount: Succ(High(Template33Points));
+        FillPoints: @Template33FPoints;
+        FillPointsCount: Succ(High(Template33FPoints));
+        BezierizeCount: 2;
+        RandPassesCount: 6;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template34Points;
+        BasePointsCount: Succ(High(Template34Points));
+        FillPoints: @Template34FPoints;
+        FillPointsCount: Succ(High(Template34FPoints));
+        BezierizeCount: 2;
+        RandPassesCount: 6;
+        canMirror: true; canFlip: false;
+       ),
+       (BasePoints: @Template35Points;
+        BasePointsCount: Succ(High(Template35Points));
+        FillPoints: @Template35FPoints;
+        FillPointsCount: Succ(High(Template35FPoints));
+        BezierizeCount: 3;
+        RandPassesCount: 7;
+        canMirror: true; canFlip: false;
        )
       );
 
--- a/hedgewars/uMisc.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uMisc.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -49,7 +49,7 @@
 	cBitsStr         : string[2] = '16';
 	cTagsMask        : byte = 7;
 
-	cWaterLine       : LongInt = 1024;
+	cWaterLine       : LongInt = LAND_HEIGHT+1;
 	cVisibleWater    : LongInt = 128;
 	cGearScrEdgesDist: LongInt = 240;
 	cCursorEdgesDist : LongInt = 100;
--- a/hedgewars/uVisualGears.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uVisualGears.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -89,9 +89,9 @@
 Gear^.Y:= Gear^.Y + (Gear^.dY + cGravity * vobFallSpeed) * Steps;
 Gear^.Angle:= Gear^.Angle + Gear^.dAngle * Steps;
 
-if hwRound(Gear^.X) < -cScreenWidth - 64 then Gear^.X:= int2hwFloat(cScreenWidth + 2048) else
-if hwRound(Gear^.X) > cScreenWidth + 2048 then Gear^.X:= int2hwFloat(-cScreenWidth - 64);
-if hwRound(Gear^.Y) > 1100 then Gear^.Y:= Gear^.Y - int2hwFloat(1228)
+if hwRound(Gear^.X) < -cScreenWidth - 64 then Gear^.X:= int2hwFloat(cScreenWidth + LAND_WIDTH + 1) else
+if hwRound(Gear^.X) > cScreenWidth + LAND_WIDTH + 1 then Gear^.X:= int2hwFloat(-cScreenWidth - 64);
+if hwRound(Gear^.Y) > (LAND_HEIGHT+75) then Gear^.Y:= Gear^.Y - int2hwFloat(LAND_HEIGHT+200)
 end;
 
 procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
--- a/hedgewars/uWorld.pas	Sun Jan 25 18:07:52 2009 +0000
+++ b/hedgewars/uWorld.pas	Sun Jan 25 18:10:23 2009 +0000
@@ -64,8 +64,8 @@
 SDL_WarpMouse(cScreenWidth div 2, cScreenHeight div 2);
 prevPoint.X:= cScreenWidth div 2;
 prevPoint.Y:= cScreenHeight div 2;
-WorldDx:=  - 1024 + cScreenWidth div 2;
-WorldDy:=  - 512 + cScreenHeight div 2;
+WorldDx:=  - (LAND_WIDTH shr 1) + cScreenWidth div 2;
+WorldDy:=  - (LAND_HEIGHT shr 1) + cScreenHeight div 2;
 AMxShift:= 210
 end;
 
@@ -177,7 +177,7 @@
     i:= Shift mod w;
     if i > 0 then dec(i, w);
     repeat
-      DrawSprite(spr, i, WorldDy + 1024 - SpritesData[spr].Height, 0);
+      DrawSprite(spr, i, WorldDy + LAND_HEIGHT + 1 - SpritesData[spr].Height, 0);
       inc(i, w)
     until i > cScreenWidth
     end;
@@ -491,8 +491,8 @@
 if cHasFocus then SDL_WarpMouse(CursorPoint.X, CursorPoint.Y);
 prevPoint:= CursorPoint;
 if WorldDy < cScreenHeight - cWaterLine - cVisibleWater then WorldDy:= cScreenHeight - cWaterLine - cVisibleWater;
-if WorldDy >  2048 then WorldDy:=  2048;
-if WorldDx < -2048 then WorldDx:= -2048;
+if WorldDy >  LAND_HEIGHT then WorldDy:=  LAND_HEIGHT;
+if WorldDx < -LAND_WIDTH then WorldDx:= -LAND_WIDTH;
 if WorldDx > cScreenWidth then WorldDx:=  cScreenWidth;
 end;