365 VARDEF CargoConst _cargoc; |
365 VARDEF CargoConst _cargoc; |
366 |
366 |
367 typedef byte TownNameGenerator(byte *buf, uint32 seed); |
367 typedef byte TownNameGenerator(byte *buf, uint32 seed); |
368 extern TownNameGenerator * const _town_name_generators[]; |
368 extern TownNameGenerator * const _town_name_generators[]; |
369 |
369 |
370 #define SET_DPARAM32(n, v) (_decode_parameters[n] = (v)) |
370 |
371 #define SET_DPARAMX32(s, n, v) ((s)[n] = (v)) |
371 static inline void SetDParamX(uint32 *s, uint n, uint32 v) |
372 #define GET_DPARAM32(n) (_decode_parameters[n]) |
|
373 |
|
374 #define SET_DPARAM(n, v) (_decode_parameters[n] = (v)) |
|
375 #define SET_DPARAMX(s, n, v) ((s)[n] = (v)) |
|
376 #define GET_DPARAM(n) (_decode_parameters[n]) |
|
377 |
|
378 static void FORCEINLINE SET_DPARAM64(int n, int64 v) |
|
379 { |
372 { |
380 _decode_parameters[n] = (uint32)v; |
373 s[n] = v; |
381 _decode_parameters[n+1] = (uint32)((uint64)v >> 32); |
|
382 } |
374 } |
383 |
375 |
384 #if defined(TTD_LITTLE_ENDIAN) |
376 static inline uint32 GetDParamX(const uint32 *s, uint n) |
385 #define SET_DPARAMX16(s, n, v) ( ((uint16*)(s+n))[0] = (v)) |
377 { |
386 #define SET_DPARAMX8(s, n, v) ( ((uint8*)(s+n))[0] = (v)) |
378 return s[n]; |
387 #define GET_DPARAMX16(s, n) ( ((uint16*)(s+n))[0]) |
379 } |
388 #define GET_DPARAMX8(s, n) ( ((uint8*)(s+n))[0]) |
380 |
389 #elif defined(TTD_BIG_ENDIAN) |
381 static inline void SetDParam(uint n, uint32 v) |
390 #define SET_DPARAMX16(s, n, v) ( ((uint16*)(s+n))[1] = (v)) |
382 { |
391 #define SET_DPARAMX8(s, n, v) ( ((uint8*)(s+n))[3] = (v)) |
383 assert(n < lengthof(_decode_parameters)); |
392 #define GET_DPARAMX16(s, n) ( ((uint16*)(s+n))[1]) |
384 _decode_parameters[n] = v; |
393 #define GET_DPARAMX8(s, n) ( ((uint8*)(s+n))[3]) |
385 } |
394 #endif |
386 |
395 |
387 static inline void SetDParam64(uint n, uint64 v) |
396 #define SET_DPARAM16(n, v) SET_DPARAMX16(_decode_parameters, n, v) |
388 { |
397 #define SET_DPARAM8(n, v) SET_DPARAMX8(_decode_parameters, n, v) |
389 assert(n + 1 < lengthof(_decode_parameters)); |
398 #define GET_DPARAM16(n) GET_DPARAMX16(_decode_parameters, n) |
390 _decode_parameters[n + 0] = v & 0xffffffff; |
399 #define GET_DPARAM8(n) GET_DPARAMX8(_decode_parameters, n) |
391 _decode_parameters[n + 1] = v >> 32; |
|
392 } |
|
393 |
|
394 static inline uint32 GetDParam(uint n) |
|
395 { |
|
396 assert(n < lengthof(_decode_parameters)); |
|
397 return _decode_parameters[n]; |
|
398 } |
|
399 |
400 |
400 |
401 #define COPY_IN_DPARAM(offs,src,num) memcpy(_decode_parameters + offs, src, sizeof(uint32) * (num)) |
401 #define COPY_IN_DPARAM(offs,src,num) memcpy(_decode_parameters + offs, src, sizeof(uint32) * (num)) |
402 #define COPY_OUT_DPARAM(dst,offs,num) memcpy(dst,_decode_parameters + offs, sizeof(uint32) * (num)) |
402 #define COPY_OUT_DPARAM(dst,offs,num) memcpy(dst,_decode_parameters + offs, sizeof(uint32) * (num)) |
403 |
403 |
404 #define INJECT_DPARAM(n) InjectDparam(n); |
404 #define INJECT_DPARAM(n) InjectDparam(n); |