201 static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; } |
201 static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; } |
202 |
202 |
203 |
203 |
204 |
204 |
205 #if defined(TTD_LITTLE_ENDIAN) |
205 #if defined(TTD_LITTLE_ENDIAN) |
206 # define READ_LE_UINT16(b) (*(uint16*)(b)) |
206 # define READ_LE_UINT16(b) (*(const uint16*)(b)) |
207 # define ADD_WORD(x) (x)&0xFF, ((x) >> 8)&0xFF |
207 # define ADD_WORD(x) (x)&0xFF, ((x) >> 8)&0xFF |
208 # define ADD_DWORD(x) (x)&0xFF, ((x) >> 8)&0xFF, ((x) >> 16)&0xFF, ((x) >> 24)&0xFF |
208 # define ADD_DWORD(x) (x)&0xFF, ((x) >> 8)&0xFF, ((x) >> 16)&0xFF, ((x) >> 24)&0xFF |
209 #elif defined(TTD_BIG_ENDIAN) |
209 #elif defined(TTD_BIG_ENDIAN) |
210 static INLINE uint16 READ_LE_UINT16(const void *b) { |
210 static INLINE uint16 READ_LE_UINT16(const void *b) { |
211 return ((byte*)b)[0] + (((byte*)b)[1] << 8); |
211 return ((const byte*)b)[0] + (((const byte*)b)[1] << 8); |
212 } |
212 } |
213 # define ADD_WORD(x) ((x) >> 8)&0xFF, (x)&0xFF |
213 # define ADD_WORD(x) ((x) >> 8)&0xFF, (x)&0xFF |
214 # define ADD_DWORD(x) ((x) >> 24)&0xFF, ((x) >> 16)&0xFF, ((x) >> 8)&0xFF, (x)&0xFF |
214 # define ADD_DWORD(x) ((x) >> 24)&0xFF, ((x) >> 16)&0xFF, ((x) >> 8)&0xFF, (x)&0xFF |
215 #endif |
215 #endif |
216 |
216 |
217 static INLINE void WRITE_LE_UINT16(const void *b, uint16 x) { |
217 static INLINE void WRITE_LE_UINT16(void *b, uint16 x) { |
218 ((byte*)b)[0] = (byte)x; |
218 ((byte*)b)[0] = (byte)x; |
219 ((byte*)b)[1] = (byte)(x >> 8); |
219 ((byte*)b)[1] = (byte)(x >> 8); |
220 } |
220 } |
221 |
221 |
222 #define MAX_DETOUR 6 |
222 #define MAX_DETOUR 6 |