diff options
author | rubidium <rubidium@openttd.org> | 2008-01-21 23:55:57 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-01-21 23:55:57 +0000 |
commit | a83b91dbc52f237a120e805672a7d676fa592e7d (patch) | |
tree | f2a45cf20dfcc7b58fae03b2429086124f62fa39 | |
parent | 9d754a7f7684295e18661aa7ed361f3c4c5b1ca8 (diff) | |
download | openttd-a83b91dbc52f237a120e805672a7d676fa592e7d.tar.xz |
(svn r11939) -Codechange: some type fixes and very initial steps into supporting NDS by default. Based on work by Dominik.
-rw-r--r-- | src/gui.h | 2 | ||||
-rw-r--r-- | src/order_cmd.cpp | 14 | ||||
-rw-r--r-- | src/spritecache.cpp | 10 | ||||
-rw-r--r-- | src/stdafx.h | 24 | ||||
-rw-r--r-- | src/tile_cmd.h | 1 | ||||
-rw-r--r-- | src/viewport_func.h | 2 |
6 files changed, 32 insertions, 21 deletions
@@ -106,7 +106,7 @@ void SetFiosType(const byte fiostype); extern const TextColour _fios_colors[]; /* bridge_gui.cpp */ -void ShowBuildBridgeWindow(uint start, uint end, byte type); +void ShowBuildBridgeWindow(TileIndex start, TileIndex end, byte type); void ShowBuildIndustryWindow(); void ShowMusicWindow(); diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index a8d992aa4..0c0259705 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1330,10 +1330,8 @@ static void Load_ORDR() if (CheckSavegameVersion(5)) { /* Pre-version 5 had an other layout for orders (uint16 instead of uint32) */ - uint16 orders[5000]; - len /= sizeof(uint16); - assert (len <= lengthof(orders)); + uint16 *orders = MallocT<uint16>(len + 1); SlArray(orders, len, SLE_UINT16); @@ -1341,11 +1339,11 @@ static void Load_ORDR() Order *order = new (i) Order(); AssignOrder(order, UnpackVersion4Order(orders[i])); } - } else if (CheckSavegameVersionOldStyle(5, 2)) { - uint32 orders[5000]; - len /= sizeof(uint32); - assert (len <= lengthof(orders)); + free(orders); + } else if (CheckSavegameVersionOldStyle(5, 2)) { + len /= sizeof(uint16); + uint16 *orders = MallocT<uint16>(len + 1); SlArray(orders, len, SLE_UINT32); @@ -1353,6 +1351,8 @@ static void Load_ORDR() Order *order = new (i) Order(); AssignOrder(order, UnpackOrder(orders[i])); } + + free(orders); } /* Update all the next pointer */ diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 861b34097..48c4d67e2 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -23,12 +23,12 @@ uint _sprite_cache_size = 4; struct SpriteCache { - void *ptr; - uint8 file_slot; - uint32 file_pos; - int16 lru; - uint32 id; + void *ptr; const char *grf_name; + uint32 id; + uint32 file_pos; + uint16 file_slot; + int16 lru; }; diff --git a/src/stdafx.h b/src/stdafx.h index 40e58cb8c..6ce5a0066 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -5,6 +5,16 @@ #ifndef STDAFX_H #define STDAFX_H +#if defined(__NDS__) + #include <nds/jtypes.h> + /* NDS' types for uint32/int32 are based on longs, which causes + * trouble all over the place in OpenTTD. */ + #define uint32 uint32_ugly_hack + #define int32 int32_ugly_hack + typedef unsigned int uint32_ugly_hack; + typedef signed int int32_ugly_hack; +#endif /* __NDS__ */ + /* It seems that we need to include stdint.h before anything else * We need INT64_MAX, which for most systems comes from stdint.h. However, MSVC * does not have stdint.h and apparently neither does MorphOS, so define @@ -249,7 +259,7 @@ typedef unsigned char byte; typedef unsigned int uint; #endif -#if !defined(__BEOS__) /* Already defined on BEOS */ +#if !defined(__BEOS__) && !defined(__NDS__) /* Already defined on BEOS and NDS */ typedef unsigned char uint8; typedef signed char int8; typedef unsigned short uint16; @@ -258,7 +268,7 @@ typedef unsigned char byte; typedef signed int int32; typedef unsigned __int64 uint64; typedef signed __int64 int64; -#endif +#endif /* !__BEOS__ && !__NDS__ */ #if !defined(WITH_PERSONAL_DIR) #define PERSONAL_DIR "" @@ -301,18 +311,18 @@ assert_compile(sizeof(uint8) == 1); #define NOT_REACHED() error("NOT_REACHED triggered at line %i of %s", __LINE__, __FILE__) -#if defined(MORPHOS) - /* MorphOS doesn't have C++ conformant _stricmp... */ +#if defined(MORPHOS) || defined(__NDS__) + /* MorphOS and NDS don't have C++ conformant _stricmp... */ #define _stricmp stricmp #elif defined(OPENBSD) /* OpenBSD uses strcasecmp(3) */ #define _stricmp strcasecmp #endif -#if !defined(MORPHOS) && !defined(OPENBSD) - /* MorphOS & OpenBSD don't know wchars, the rest does :( */ +#if !defined(MORPHOS) && !defined(OPENBSD) && !defined(__NDS__) + /* NDS, MorphOS & OpenBSD don't know wchars, the rest does :( */ #define HAS_WCHAR -#endif /* !defined(MORPHOS) && !defined(OPENBSD) */ +#endif /* !defined(MORPHOS) && !defined(OPENBSD) && !defined(__NDS__) */ #if !defined(MAX_PATH) #define MAX_PATH 260 diff --git a/src/tile_cmd.h b/src/tile_cmd.h index cecb65e3b..50b5dad7a 100644 --- a/src/tile_cmd.h +++ b/src/tile_cmd.h @@ -26,6 +26,7 @@ enum VehicleEnterTileStatus { * VETS_ENTERED_STATION is set */ VETS_STATION_ID_OFFSET = 8, + VETS_STATION_MASK = 0xFFFF << VETS_STATION_ID_OFFSET, /** Bit sets of the above specified bits */ VETSB_CONTINUE = 0, ///< The vehicle can continue normally diff --git a/src/viewport_func.h b/src/viewport_func.h index 399dae45d..32ffedf9b 100644 --- a/src/viewport_func.h +++ b/src/viewport_func.h @@ -51,7 +51,7 @@ Vehicle *CheckMouseOverVehicle(); void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method); void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, byte process); -void VpSetPresizeRange(uint from, uint to); +void VpSetPresizeRange(TileIndex from, TileIndex to); void VpSetPlaceSizingLimit(int limit); typedef void PlaceProc(TileIndex tile); |