00001 /* 00002 Copyright (C) 2005 Michael K. McCarty & Fritz Bronner 00003 00004 This program is free software; you can redistribute it and/or modify 00005 it under the terms of the GNU General Public License as published by 00006 the Free Software Foundation; either version 2 of the License, or 00007 (at your option) any later version. 00008 00009 This program is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU General Public License for more details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with this program; if not, write to the Free Software 00016 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 */ 00018 #include "race.h" // autoconf header 00019 #include "int_types.h" 00020 #include "pace.h" 00021 //#include "valgrind.h" 00022 00023 #ifndef ui8 00024 typedef uint8_t ui8; 00025 #endif 00026 00027 #ifndef i8 00028 typedef int8_t i8; 00029 #endif 00030 00031 #ifndef ui16 00032 typedef uint16_t ui16; 00033 #endif 00034 00035 #ifndef i16 00036 typedef int16_t i16; 00037 #endif 00038 00039 #ifndef ui32 00040 typedef uint32_t ui32; 00041 #endif 00042 00043 #ifndef i32 00044 typedef int32_t i32; 00045 #endif 00046 00047 #ifdef _WIN32 00048 #include <winsock2.h> 00049 #endif 00050 00051 #include <stdio.h> 00052 #include <string.h> 00053 #include <ctype.h> 00054 #include <stdlib.h> 00055 #include <stdarg.h> 00056 #include <fcntl.h> 00057 #include <time.h> 00058 #include <math.h> 00059 #include <sys/stat.h> 00060 00061 // EMS Includes 00062 // #include "sv_lib.h" 00063 00064 /* FIXME: non-portable. Used to get struct layout like in DOS days */ 00065 #pragma pack(1) 00066 00067 #include "data.h" // main data structures 00068 00069 /* get the alignment back to defaults */ 00070 /* #pragma pack() */ 00071 00072 /* BIG FIXME: Unfortunately structures defined in some functions rely on tight 00073 * packing. This setting mainly breaks things in gamedata.h, so we make sure 00074 * we notice bad order of #includes. That's another good reason to make all 00075 * code use the gamedata.c interfaces. */ 00076 #define ALTERED_STRUCTURE_PACKING 00077 00078 #include "proto.h" // prototypes and general defines 00079 #include "music.h" // defines for music names 00080 00081 #include "endianness.h" 00082 00083 #include "macros.h" // Collected Macros 00084 00085 #include "fs.h" 00086 00087 #define random brandom