(svn r11939) -Codechange: some type fixes and very initial steps into supporting NDS by default. Based on work by Dominik.
--- a/src/gui.h Mon Jan 21 20:41:04 2008 +0000
+++ b/src/gui.h Mon Jan 21 23:55:57 2008 +0000
@@ -106,7 +106,7 @@
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();
--- a/src/order_cmd.cpp Mon Jan 21 20:41:04 2008 +0000
+++ b/src/order_cmd.cpp Mon Jan 21 23:55:57 2008 +0000
@@ -1330,10 +1330,8 @@
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 @@
Order *order = new (i) Order();
AssignOrder(order, UnpackVersion4Order(orders[i]));
}
+
+ free(orders);
} else if (CheckSavegameVersionOldStyle(5, 2)) {
- uint32 orders[5000];
-
- len /= sizeof(uint32);
- assert (len <= lengthof(orders));
+ len /= sizeof(uint16);
+ uint16 *orders = MallocT<uint16>(len + 1);
SlArray(orders, len, SLE_UINT32);
@@ -1353,6 +1351,8 @@
Order *order = new (i) Order();
AssignOrder(order, UnpackOrder(orders[i]));
}
+
+ free(orders);
}
/* Update all the next pointer */
--- a/src/spritecache.cpp Mon Jan 21 20:41:04 2008 +0000
+++ b/src/spritecache.cpp Mon Jan 21 23:55:57 2008 +0000
@@ -23,12 +23,12 @@
struct SpriteCache {
- void *ptr;
- uint8 file_slot;
- uint32 file_pos;
- int16 lru;
+ void *ptr;
+ const char *grf_name;
uint32 id;
- const char *grf_name;
+ uint32 file_pos;
+ uint16 file_slot;
+ int16 lru;
};
--- a/src/stdafx.h Mon Jan 21 20:41:04 2008 +0000
+++ b/src/stdafx.h Mon Jan 21 23:55:57 2008 +0000
@@ -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 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 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 @@
#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
--- a/src/tile_cmd.h Mon Jan 21 20:41:04 2008 +0000
+++ b/src/tile_cmd.h Mon Jan 21 23:55:57 2008 +0000
@@ -26,6 +26,7 @@
* 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
--- a/src/viewport_func.h Mon Jan 21 20:41:04 2008 +0000
+++ b/src/viewport_func.h Mon Jan 21 23:55:57 2008 +0000
@@ -51,7 +51,7 @@
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);