1
0
Fork 0

(svn r2585) - Fix [Makefile]: some small cleanups, remove warnings, and add mersenne to makefile (Luca)

release/0.4.5
Darkvater 2005-07-15 21:28:26 +00:00
parent c496d92c3e
commit 95463428c8
6 changed files with 82 additions and 77 deletions

View File

@ -639,6 +639,7 @@ C_SOURCES += landscape.c
C_SOURCES += main_gui.c C_SOURCES += main_gui.c
C_SOURCES += map.c C_SOURCES += map.c
C_SOURCES += md5.c C_SOURCES += md5.c
C_SOURCES += mersenne.c
C_SOURCES += minilzo.c C_SOURCES += minilzo.c
C_SOURCES += misc.c C_SOURCES += misc.c
C_SOURCES += misc_cmd.c C_SOURCES += misc_cmd.c

View File

@ -79,7 +79,7 @@ void ShowInfo(const char *str);
void CDECL ShowInfoF(const char *str, ...); void CDECL ShowInfoF(const char *str, ...);
void NORETURN CDECL error(const char *str, ...); void NORETURN CDECL error(const char *str, ...);
/* ttd.c */ /* openttd.c */
// ************** // **************
// * Warning: DO NOT enable this unless you understand what it does // * Warning: DO NOT enable this unless you understand what it does

View File

@ -1,72 +1,73 @@
#include "stdafx.h" #include "stdafx.h"
#include "openttd.h" #include "openttd.h"
#ifdef MERSENNE_TWISTER #ifdef MERSENNE_TWISTER
// Source code for Mersenne Twister. // Source code for Mersenne Twister.
// A Random number generator with much higher quality random numbers. // A Random number generator with much higher quality random numbers.
#define N (624) // length of _mt_state vector #define N (624) // length of _mt_state vector
#define M (397) // a period parameter #define M (397) // a period parameter
#define K (0x9908B0DFU) // a magic constant #define K (0x9908B0DFU) // a magic constant
#define hiBit(u) ((u) & 0x80000000U) // mask all but highest bit of u #define hiBit(u) ((u) & 0x80000000U) // mask all but highest bit of u
#define loBit(u) ((u) & 0x00000001U) // mask all but lowest bit of u #define loBit(u) ((u) & 0x00000001U) // mask all but lowest bit of u
#define loBits(u) ((u) & 0x7FFFFFFFU) // mask the highest bit of u #define loBits(u) ((u) & 0x7FFFFFFFU) // mask the highest bit of u
#define mixBits(u, v) (hiBit(u)|loBits(v)) // move hi bit of u to hi bit of v #define mixBits(u, v) (hiBit(u)|loBits(v)) // move hi bit of u to hi bit of v
static uint32 _mt_state[N+1]; // _mt_state vector + 1 extra to not violate ANSI C static uint32 _mt_state[N+1]; // _mt_state vector + 1 extra to not violate ANSI C
static uint32 *_mt_next; // _mt_next random value is computed from here static uint32 *_mt_next; // _mt_next random value is computed from here
static int _mt_left = -1; // can *_mt_next++ this many times before reloading static int _mt_left = -1; // can *_mt_next++ this many times before reloading
void SeedMT(uint32 seed) void SeedMT(uint32 seed)
{ {
register uint32 x = (seed | 1U) & 0xFFFFFFFFU, *s = _mt_state; register uint32 x = (seed | 1U) & 0xFFFFFFFFU, *s = _mt_state;
register int j; register int j;
for(_mt_left=0, *s++=x, j=N; --j; for(_mt_left=0, *s++=x, j=N; --j;
*s++ = (x*=69069U) & 0xFFFFFFFFU); *s++ = (x*=69069U) & 0xFFFFFFFFU);
} }
static uint32 ReloadMT(void) static uint32 ReloadMT(void)
{ {
register uint32 *p0=_mt_state, *p2=_mt_state+2, *pM=_mt_state+M, s0, s1; register uint32 *p0=_mt_state, *p2=_mt_state+2, *pM=_mt_state+M, s0, s1;
register int j; register int j;
if(_mt_left < -1) if(_mt_left < -1)
SeedMT(4357U); SeedMT(4357U);
_mt_left=N-1, _mt_next=_mt_state+1; _mt_left=N-1, _mt_next=_mt_state+1;
for(s0=_mt_state[0], s1=_mt_state[1], j=N-M+1; --j; s0=s1, s1=*p2++) for(s0=_mt_state[0], s1=_mt_state[1], j=N-M+1; --j; s0=s1, s1=*p2++)
*p0++ = *pM++ ^ (mixBits(s0, s1) >> 1) ^ (loBit(s1) ? K : 0U); *p0++ = *pM++ ^ (mixBits(s0, s1) >> 1) ^ (loBit(s1) ? K : 0U);
for(pM=_mt_state, j=M; --j; s0=s1, s1=*p2++) for(pM=_mt_state, j=M; --j; s0=s1, s1=*p2++)
*p0++ = *pM++ ^ (mixBits(s0, s1) >> 1) ^ (loBit(s1) ? K : 0U); *p0++ = *pM++ ^ (mixBits(s0, s1) >> 1) ^ (loBit(s1) ? K : 0U);
s1=_mt_state[0], *p0 = *pM ^ (mixBits(s0, s1) >> 1) ^ (loBit(s1) ? K : 0U); s1=_mt_state[0], *p0 = *pM ^ (mixBits(s0, s1) >> 1) ^ (loBit(s1) ? K : 0U);
s1 ^= (s1 >> 11); s1 ^= (s1 >> 11);
s1 ^= (s1 << 7) & 0x9D2C5680U; s1 ^= (s1 << 7) & 0x9D2C5680U;
s1 ^= (s1 << 15) & 0xEFC60000U; s1 ^= (s1 << 15) & 0xEFC60000U;
return(s1 ^ (s1 >> 18)); return(s1 ^ (s1 >> 18));
} }
uint32 RandomMT(void) uint32 RandomMT(void)
{ {
uint32 y; uint32 y;
if(--_mt_left < 0) if(--_mt_left < 0)
return ReloadMT(); return ReloadMT();
y = *_mt_next++; y = *_mt_next++;
y ^= (y >> 11); y ^= (y >> 11);
y ^= (y << 7) & 0x9D2C5680U; y ^= (y << 7) & 0x9D2C5680U;
y ^= (y << 15) & 0xEFC60000U; y ^= (y << 15) & 0xEFC60000U;
return y ^ (y >> 18); return y ^ (y >> 18);
} }
#else #else
void SeedMT(uint32 seed) {} void SeedMT(uint32 seed) {}
#endif #endif /* MERSENNE_TWISTER */

2
npf.c
View File

@ -71,11 +71,13 @@ bool IsEndOfLine(TileIndex tile, Trackdir trackdir, RailType enginetype)
} }
}; };
#if 0
static uint NTPHash(uint key1, uint key2) static uint NTPHash(uint key1, uint key2)
{ {
/* This function uses the old hash, which is fixed on 10 bits (1024 buckets) */ /* This function uses the old hash, which is fixed on 10 bits (1024 buckets) */
return PATHFIND_HASH_TILE(key1); return PATHFIND_HASH_TILE(key1);
} }
#endif
/** /**
* Calculates a hash value for use in the NPF. * Calculates a hash value for use in the NPF.

View File

@ -1,5 +1,5 @@
#ifndef TTD_H #ifndef OPENTTD_H
#define TTD_H #define OPENTTD_H
#ifndef VARDEF #ifndef VARDEF
#define VARDEF extern #define VARDEF extern
@ -548,4 +548,4 @@ VARDEF byte _no_scroll;
#include "functions.h" #include "functions.h"
#include "variables.h" #include "variables.h"
#endif /* TTD_H */ #endif /* OPENTTD_H */

View File

@ -983,4 +983,5 @@ void InitializeLanguagePacks(void)
if (!ReadLanguagePack(def)) if (!ReadLanguagePack(def))
error("can't read language pack '%s'", dl->ent[def].file); error("can't read language pack '%s'", dl->ent[def].file);
} }