changeset 8373:a6209668c216 draft

(svn r11939) -Codechange: some type fixes and very initial steps into supporting NDS by default. Based on work by Dominik.
author rubidium <rubidium@openttd.org>
date Mon, 21 Jan 2008 23:55:57 +0000
parents 2628bf7d5b77
children 510b88dbb390
files src/gui.h src/order_cmd.cpp src/spritecache.cpp src/stdafx.h src/tile_cmd.h src/viewport_func.h
diffstat 6 files changed, 32 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui.h
+++ b/src/gui.h
@@ -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
+++ b/src/order_cmd.cpp
@@ -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
+++ b/src/spritecache.cpp
@@ -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
+++ 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 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
+++ b/src/tile_cmd.h
@@ -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
+++ b/src/viewport_func.h
@@ -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);