- Remove deprecated code
- Hopefully increased performance of operations with hwFloat
--- a/hedgewars/options.inc Fri May 18 16:40:43 2007 +0000
+++ b/hedgewars/options.inc Fri May 18 17:35:12 2007 +0000
@@ -19,7 +19,6 @@
{$J+}
{$DEFINE DEBUGFILE}
-{ $DEFINE COUNTTICKS}
{ $DEFINE DUMP}
{ $DEFINE TRACEAIACTIONS}
--- a/hedgewars/uFloat.pas Fri May 18 16:40:43 2007 +0000
+++ b/hedgewars/uFloat.pas Fri May 18 17:35:12 2007 +0000
@@ -36,30 +36,30 @@
end;
{$endif FPC_LITTLE_ENDIAN}
-function int2hwFloat (i: LongInt) : hwFloat;
+function int2hwFloat (const i: LongInt) : hwFloat;
-operator + (z1, z2: hwFloat) z : hwFloat;
-operator - (z1, z2: hwFloat) z : hwFloat;
-operator - (z1: hwFloat) z : hwFloat;
+operator + (const z1, z2: hwFloat) z : hwFloat;
+operator - (const z1, z2: hwFloat) z : hwFloat;
+operator - (const z1: hwFloat) z : hwFloat;
-operator * (z1, z2: hwFloat) z : hwFloat;
-operator * (z1: hwFloat; z2: LongInt) z : hwFloat;
-operator / (z1, z2: hwFloat) z : hwFloat;
-operator / (z1: hwFloat; z2: LongInt) z : hwFloat;
+operator * (const z1, z2: hwFloat) z : hwFloat;
+operator * (const z1: hwFloat; const z2: LongInt) z : hwFloat;
+operator / (const z1: hwFloat; z2: hwFloat) z : hwFloat;
+operator / (const z1: hwFloat; const z2: LongInt) z : hwFloat;
-operator < (z1, z2: hwFloat) b : boolean;
-operator > (z1, z2: hwFloat) b : boolean;
+operator < (const z1, z2: hwFloat) b : boolean;
+operator > (const z1, z2: hwFloat) b : boolean;
-function cstr(z: hwFloat): string;
-function hwRound(t: hwFloat): LongInt;
-function hwAbs(t: hwFloat): hwFloat;
-function hwSqr(t: hwFloat): hwFloat;
-function hwSqrt(t: hwFloat): hwFloat;
-function Distance(dx, dy: hwFloat): hwFloat;
-function DistanceI(dx, dy: LongInt): hwFloat;
-function AngleSin(Angle: Longword): hwFloat;
-function AngleCos(Angle: Longword): hwFloat;
-function SignAs(num, signum: hwFloat): hwFloat;
+function cstr(const z: hwFloat): string;
+function hwRound(const t: hwFloat): LongInt;
+function hwAbs(const t: hwFloat): hwFloat;
+function hwSqr(const t: hwFloat): hwFloat;
+function hwSqrt(const t: hwFloat): hwFloat;
+function Distance(const dx, dy: hwFloat): hwFloat;
+function DistanceI(const dx, dy: LongInt): hwFloat;
+function AngleSin(const Angle: Longword): hwFloat;
+function AngleCos(const Angle: Longword): hwFloat;
+function SignAs(const num, signum: hwFloat): hwFloat;
const _1div1024: hwFloat = (isNegative: false; QWordValue: 4194304);
_1div10000: hwFloat = (isNegative: false; QWordValue: 429496);
@@ -131,14 +131,14 @@
{$IFDEF FPC}
-function int2hwFloat (i: LongInt) : hwFloat;
+function int2hwFloat (const i: LongInt) : hwFloat;
begin
int2hwFloat.isNegative:= i < 0;
int2hwFloat.Round:= abs(i);
int2hwFloat.Frac:= 0
end;
-operator + (z1, z2: hwFloat) z : hwFloat;
+operator + (const z1, z2: hwFloat) z : hwFloat;
begin
if z1.isNegative = z2.isNegative then
begin
@@ -157,7 +157,7 @@
end
end;
-operator - (z1, z2: hwFloat) z : hwFloat;
+operator - (const z1, z2: hwFloat) z : hwFloat;
begin
if z1.isNegative = z2.isNegative then
if z1.QWordValue > z2.QWordValue then
@@ -175,14 +175,14 @@
end
end;
-operator - (z1: hwFloat) z : hwFloat;
+operator - (const z1: hwFloat) z : hwFloat;
begin
z:= z1;
z.isNegative:= not z.isNegative
end;
-operator * (z1, z2: hwFloat) z : hwFloat;
+operator * (const z1, z2: hwFloat) z : hwFloat;
begin
z.isNegative:= z1.isNegative xor z2.isNegative;
z.QWordValue:= QWord(z1.Round) * z2.Frac +
@@ -191,14 +191,13 @@
z.Round:= z.Round + QWord(z1.Round) * z2.Round;
end;
-operator * (z1: hwFloat; z2: LongInt) z : hwFloat;
+operator * (const z1: hwFloat; const z2: LongInt) z : hwFloat;
begin
z.isNegative:= z1.isNegative xor (z2 < 0);
-z2:= abs(z2);
-z.QWordValue:= z1.QWordValue * z2
+z.QWordValue:= z1.QWordValue * abs(z2)
end;
-operator / (z1, z2: hwFloat) z : hwFloat;
+operator / (const z1: hwFloat; z2: hwFloat) z : hwFloat;
var t: hwFloat;
begin
z.isNegative:= z1.isNegative xor z2.isNegative;
@@ -218,14 +217,13 @@
end
end;
-operator / (z1: hwFloat; z2: LongInt) z : hwFloat;
+operator / (const z1: hwFloat; const z2: LongInt) z : hwFloat;
begin
z.isNegative:= z1.isNegative xor (z2 < 0);
-z2:= abs(z2);
-z.QWordValue:= z1.QWordValue div z2
+z.QWordValue:= z1.QWordValue div abs(z2)
end;
-operator < (z1, z2: hwFloat) b : boolean;
+operator < (const z1, z2: hwFloat) b : boolean;
begin
if z1.isNegative <> z2.isNegative then
b:= z1.isNegative
@@ -236,7 +234,7 @@
b:= (z1.QWordValue < z2.QWordValue) xor z1.isNegative
end;
-operator > (z1, z2: hwFloat) b : boolean;
+operator > (const z1, z2: hwFloat) b : boolean;
begin
if z1.isNegative <> z2.isNegative then
b:= z2.isNegative
@@ -247,7 +245,7 @@
b:= (z1.QWordValue > z2.QWordValue) xor z2.isNegative
end;
-function cstr(z: hwFloat): string;
+function cstr(const z: hwFloat): string;
var tmpstr: string;
begin
str(z.Round, cstr);
@@ -260,30 +258,30 @@
if z.isNegative then cstr:= '-' + cstr
end;
-function hwRound(t: hwFloat): LongInt;
+function hwRound(const t: hwFloat): LongInt;
begin
if t.isNegative then hwRound:= -t.Round
else hwRound:= t.Round
end;
-function hwAbs(t: hwFloat): hwFloat;
+function hwAbs(const t: hwFloat): hwFloat;
begin
hwAbs:= t;
hwAbs.isNegative:= false
end;
-function hwSqr(t: hwFloat): hwFloat;
+function hwSqr(const t: hwFloat): hwFloat;
begin
hwSqr:= t * t
end;
-function hwSqrt(t: hwFloat): hwFloat;
+function hwSqrt(const t: hwFloat): hwFloat;
begin
hwSqrt.isNegative:= false;
hwSqrt.QWordValue:= Round(sqrt(1.0 / $100000000 * (t.QWordValue)) * $100000000)
end;
-function Distance(dx, dy: hwFloat): hwFloat;
+function Distance(const dx, dy: hwFloat): hwFloat;
var x, y: hwFloat;
Result: hwFloat;
begin
@@ -294,12 +292,12 @@
Distance:= Result
end;
-function DistanceI(dx, dy: LongInt): hwFloat;
+function DistanceI(const dx, dy: LongInt): hwFloat;
begin
DistanceI:= Distance(int2hwFloat(dx), int2hwFloat(dy))
end;
-function SignAs(num, signum: hwFloat): hwFloat;
+function SignAs(const num, signum: hwFloat): hwFloat;
begin
SignAs:= num;
SignAs.isNegative:= signum.isNegative
@@ -307,14 +305,14 @@
{$INCLUDE SinTable.inc}
-function AngleSin(Angle: Longword): hwFloat;
+function AngleSin(const Angle: Longword): hwFloat;
begin
AngleSin.isNegative:= false;
if Angle < 1024 then AngleSin.QWordValue:= SinTable[Angle]
else AngleSin.QWordValue:= SinTable[2048 - Angle]
end;
-function AngleCos(Angle: Longword): hwFloat;
+function AngleCos(const Angle: Longword): hwFloat;
begin
AngleCos.isNegative:= Angle > 1024;
if Angle < 1024 then AngleCos.QWordValue:= SinTable[1024 - Angle]
--- a/hedgewars/uGears.pas Fri May 18 16:40:43 2007 +0000
+++ b/hedgewars/uGears.pas Fri May 18 17:35:12 2007 +0000
@@ -348,22 +348,7 @@
const delay: LongInt = cInactDelay;
step: (stDelay, stChDmg, stChWin, stSpawn, stNTurn) = stDelay;
var Gear, t: PGear;
-{$IFDEF COUNTTICKS}
- tickcntA, tickcntB: LongWord;
-const cntSecTicks: LongWord = 0;
-{$ENDIF}
begin
-{$IFDEF COUNTTICKS}
-asm
- push eax
- push edx
- rdtsc
- mov tickcntA, eax
- mov tickcntB, edx
- pop edx
- pop eax
-end;
-{$ENDIF}
AllInactive:= true;
t:= GearsList;
while t<>nil do
@@ -408,27 +393,7 @@
if ((CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^.State and gstAttacking) = 0)
and not isInMultiShoot then dec(TurnTimeLeft);
-inc(GameTicks);
-{$IFDEF COUNTTICKS}
-asm
- push eax
- push edx
- rdtsc
- sub eax, [tickcntA]
- sbb edx, [tickcntB]
- add [cntSecTicks], eax
- pop edx
- pop eax
-end;
-if (GameTicks and 1023) = 0 then
- begin
- cntTicks:= cntSecTicks shr 10;
- {$IFDEF DEBUGFILE}
- AddFileLog('<' + inttostr(cntTicks) + '>x1024 ticks');
- {$ENDIF}
- cntSecTicks:= 0
- end;
-{$ENDIF}
+inc(GameTicks)
end;
procedure SetAllToActive;