diff --git a/.gitignore b/.gitignore index 4e0c364..2f0bb66 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ # windows build crap winlibs/ +dist/ *.dll # windows crap i mean why the hell does it do this crap diff --git a/CMakeLists.txt b/CMakeLists.txt index d3ae584..ec3eba7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,62 +2,83 @@ cmake_minimum_required (VERSION 2.8.4) project (iceball) -#set(CMAKE_BINARY_DIR build) set(CMAKE_SOURCE_DIR src) -set(OUTDIR ../build) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -g -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - -IF(CMAKE_BUILD_TOOL MATCHES "(msdev|devenv|nmake)") - add_definitions(/W4) # warning level - add_definitions(/TP) # compile as c++ -ELSEIF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - add_definitions(-Wall -g) # keep debugging symbols even in Release builds -ENDIF() +if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-fno-strict-aliasing -Wall -Wextra -g) # keep debugging symbols even in Release builds +endif () include_directories(include) if (WIN32) if (MSVC) set_source_files_properties(filename.c PROPERTIES LANGUAGE CXX ) endif (MSVC) - - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs") - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/glew") - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/lua") - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/SDL") - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs/zlib") - - link_directories("${CMAKE_CURRENT_SOURCE_DIR}/winlibs") - endif (WIN32) -# here be sackit -link_directories("${CMAKE_CURRENT_SOURCE_DIR}/xlibinc") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/xlibinc") +if (MINGW) + set(CMAKE_PREFIX_PATH "dist/mingw/enet;dist/mingw/sdl2;dist/mingw/lua51;dist/mingw/sackit;dist/mingw/zlib;dist/mingw/glew" CACHE PATH "" FORCE) +elseif (MSVC) + set(CMAKE_PREFIX_PATH "dist/msvc/enet;dist/msvc/sdl2;dist/msvc/lua51;dist/msvc/sackit;dist/msvc/zlib;dist/msvc/glew" CACHE PATH "" FORCE) +endif () -# find the hidden treasures find_package(ENet REQUIRED) -find_package(PNG REQUIRED) find_package(SDL2 REQUIRED) find_package(zlib REQUIRED) find_package(Lua REQUIRED) +find_package(sackit REQUIRED) find_package(GLEW REQUIRED) find_package(OpenGL REQUIRED) -# include the outcasts include_directories( - ${PNG_INCLUDE_DIRS} - ${ENet_INCLUDE_DIRS} - ${SACKIT_INCLUDE_DIR} - ${ZLIB_INCLUDE_DIRS} - ${GLEW_INCLUDE_DIRS} - ${SDL2_INCLUDE_DIR} - ${LUA_INCLUDE_DIR} + ${ENet_INCLUDE_DIRS} + ${sackit_INCLUDE_DIRS} + ${ZLIB_INCLUDE_DIRS} + ${GLEW_INCLUDE_DIRS} + ${SDL2_INCLUDE_DIR} + ${LUA_INCLUDE_DIR} ) -add_subdirectory(src) +file(GLOB LUA_FILES src/lua*) +set(MAIN_FILES + src/dsp.c + src/img.c + src/json.c + src/logtxt.c + src/main.c + src/map.c + src/model.c + src/network.c + src/path.c + src/vecmath.c + src/wav.c + src/png.c +) + +set(GL_FILES + src/gl/render.c + src/gl/render_img.c +) + +source_group(gl FILES ${GL_FILES}) + +source_group(lua FILES ${LUA_FILES}) + +add_custom_command(TARGET iceball POST_BUILD # Adds a post-build event to MyTest + COMMAND ${CMAKE_COMMAND} -E copy_if_different # which executes "cmake - E copy_if_different..." + "${LUA_LIBRARY}" # <--this is in-file + $) # <--this is out-file path + +# iceball target +add_executable(iceball ${MAIN_FILES} ${LUA_FILES} ${GL_FILES}) +message("${ENet_LIBRARIES}\n${sackit_LIBRARY}\n${LUA_LIBRARIES}\n${OPENGL_LIBRARIES}\n${GLEW_LIBRARIES}\n${SDL2_LIBRARIES}") +target_link_libraries(iceball ${ENet_LIBRARIES} ${ZLIB_LIBRARIES} ${sackit_LIBRARY} ${LUA_LIBRARIES} ${SDL2_LIBRARIES} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES}) + +set_target_properties(iceball PROPERTIES COMPILE_DEFINITIONS "USE_OPENGL") + +# iceball-dedi target +add_executable(iceball-dedi EXCLUDE_FROM_ALL ${MAIN_FILES} ${LUA_FILES}) +target_link_libraries(iceball-dedi ${ENet_LIBRARIES} ${ZLIB_LIBRARIES} ${LUA_LIBRARIES} ${SDL_LIBRARY}) +set_target_properties(iceball-dedi PROPERTIES COMPILE_DEFINITIONS "DEDI") + diff --git a/cmake/FindENet.cmake b/cmake/FindENet.cmake index 134711d..91c2527 100644 --- a/cmake/FindENet.cmake +++ b/cmake/FindENet.cmake @@ -19,7 +19,6 @@ FIND_PATH(ENet_INCLUDE_DIRS enet/enet.h $ENV{ENETDIR} /usr/local /usr - "${CMAKE_CURRENT_SOURCE_DIR}/winlibs" PATH_SUFFIXES include ) @@ -29,7 +28,6 @@ FIND_LIBRARY(ENet_LIBRARY $ENV{ENETDIR} /usr/local /usr - "${CMAKE_CURRENT_SOURCE_DIR}/winlibs" PATH_SUFFIXES lib ) diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake index 58ef191..225ea45 100644 --- a/cmake/FindSDL2.cmake +++ b/cmake/FindSDL2.cmake @@ -249,6 +249,15 @@ IF(SDL2_LIBRARY_TEMP) SET(SDL2_FOUND "YES") ENDIF(SDL2_LIBRARY_TEMP) +IF(SDL2_FOUND) + IF(WIN32) + SET(WINDOWS_SDL2_DEPENDENCIES "user32;gdi32;winmm;imm32;ole32;oleaut32;version;uuid") + SET(SDL2_LIBRARIES ${SDL2_LIBRARY} ${WINDOWS_SDL2_DEPENDENCIES}) + ELSE(WIN32) + SET(SDL2_LIBRARIES ${SDL2_LIBRARY}) + ENDIF(WIN32) +ENDIF (SDL2_FOUND) + INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR) diff --git a/cmake/Findsackit.cmake b/cmake/Findsackit.cmake new file mode 100644 index 0000000..f41c579 --- /dev/null +++ b/cmake/Findsackit.cmake @@ -0,0 +1,35 @@ +# - Try to find sackit +# Once done this will define +# +# SACKIT_FOUND - system has sackit +# sackit_INCLUDE_DIRS - the sackit include directory +# sackit_LIBRARIES - the libraries needed to use sackit +# +# $SACKITDIR is an environment variable used for finding sackit. +# + +FIND_PATH(sackit_INCLUDE_DIRS sackit.h + PATHS + $ENV{SACKITDIR} + /usr/local + /usr + PATH_SUFFIXES include + ) + +FIND_LIBRARY(sackit_LIBRARY + NAMES sackit + PATHS + $ENV{SACKITDIR} + /usr/local + /usr + PATH_SUFFIXES lib + ) + +# handle the QUIETLY and REQUIRED arguments and set SACKIT_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(sackit DEFAULT_MSG sackit_LIBRARY sackit_INCLUDE_DIRS) + +SET(sackit_LIBRARIES ${sackit_LIBRARY}) + +MARK_AS_ADVANCED(sackit_LIBRARY sackit_LIBRARIES sackit_INCLUDE_DIRS) diff --git a/include/common.h b/include/common.h index 5e4779b..c4a2647 100644 --- a/include/common.h +++ b/include/common.h @@ -44,6 +44,23 @@ //define RENDER_FACE_COUNT 2 +#ifdef WIN32 +//#define close(x) closesocket(x) + +// TODO: remove? +#if _MSC_VER_ +int bind(SOCKET s, void* name, int namelen) +{ + return bind(s, (const sockaddr*)name, namelen); +} +int setsockopt(SOCKET s, int level, int optname, void* optval, int optlen) +{ + return setsockopt(s, level, optname, (const char*)optval, optlen); +} + +#endif +#endif + #ifndef _MSC_VER #define PACK_START #define PACK_END @@ -58,7 +75,6 @@ #endif #include #else -#define __attribute__(x) #define PACK_START __pragma( pack(push, 1) ) #define PACK_END __pragma( pack(pop) ) typedef signed __int8 int8_t; @@ -69,11 +85,23 @@ typedef signed __int32 int32_t; typedef unsigned __int32 uint32_t; typedef signed __int64 int64_t; typedef unsigned __int64 uint64_t; +#if (_MSC_VER != 1900) #define snprintf sprintf_s +#endif #define _USE_MATH_DEFINES //M_PI and whatnot from math.h #pragma warning( disable: 4200 4244 4996) #endif +#if defined(_MSC_VER) +#define ALIGNED_(x) __declspec(align(x)) +#else +#if defined(__GNUC__) +#define ALIGNED_(x) __attribute__ ((aligned(x))) +#endif +#endif + +#define ALIGNED_TYPE_(t,x) typedef t ALIGNED_(x) + #ifdef _OPENMP #include #endif @@ -183,28 +211,24 @@ enum #define SCREEN_BSWAP_32_ENDIAN #endif -#ifdef __SSE__ -__attribute__((aligned(16))) -#endif -PACK_START -typedef union vec4f +#pragma pack(push, 1) +ALIGNED_TYPE_(union, 16) vec4f { - struct { float x,y,z,w; } __attribute__((__packed__)) p; + struct { float x,y,z,w; } p; float a[4]; -#ifdef __SSE__ +#if defined(__SSE__) && !defined(_MSC_VER) float __attribute__ ((vector_size (16))) m; #endif -} __attribute__((__packed__)) vec4f_t; +} vec4f_t; +#pragma pack(pop) -#ifdef __SSE__ -__attribute__((aligned(16))) -#endif -typedef struct matrix +#pragma pack(push, 1) +ALIGNED_TYPE_(struct, 16) matrix { //column-major! vec4f_t c[4]; -} __attribute__((__packed__)) matrix_t; -PACK_END +} matrix_t; +#pragma pack(pop) typedef struct camera { @@ -215,14 +239,14 @@ typedef struct camera float mpx,mpy,mpz,mppad; } camera_t; -PACK_START +#pragma pack(push, 1) typedef struct model_point { uint16_t radius; int16_t x,y,z; uint8_t b,g,r,resv1; -} __attribute__((__packed__)) model_point_t; -PACK_END +} model_point_t; +#pragma pack(pop) typedef struct model model_t; typedef struct model_bone @@ -293,8 +317,8 @@ typedef struct fbo } fbo_t; -PACK_START // source: http://paulbourke.net/dataformats/tga/ +#pragma pack(push, 1) typedef struct img_tgahead { uint8_t idlen; @@ -309,8 +333,8 @@ typedef struct img_tgahead uint16_t height; uint8_t bpp; uint8_t flags; -} __attribute__((__packed__)) img_tgahead_t; -PACK_END +} img_tgahead_t; +#pragma pack(pop) typedef struct img { @@ -509,7 +533,7 @@ enum // dsp.c float interp_linear(float y0, float y1, float x); float interp_cubic(float y0, float y1, float y2, float y3, float x); -float interp_hermite6p(float y0, float y1, float y2, float y3, +float interp_hermite6p(float y0, float y1, float y2, float y3, float y4, float y5, float x); float frequency2wavelength(int rate, float frequency); float wavelength2frequency(int rate, float wavelength); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 3a2524c..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -#/src/CMakeLists.txt - -file(GLOB LUA_FILES lua*) -set(MAIN_FILES dsp.c img.c json.c logtxt.c main.c map.c model.c network.c path.c vecmath.c wav.c png.c) - -set(GL_FILES gl/render.c gl/render_img.c) -source_group(gl FILES ${GL_FILES}) - -set(SOFT_FILES softgm/render.c softgm/render_img.c) -source_group(softgm FILES ${SOFT_FILES}) -source_group(lua FILES ${LUA_FILES}) - -# iceball target -add_executable(iceball ${MAIN_FILES} ${LUA_FILES} ${GL_FILES}) -target_link_libraries(iceball ${PNG_LIBRARIES} ${ENet_LIBRARIES} sackit ${LUA_LIBRARIES} ${SDL2_LIBRARY} ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES}) -set_target_properties(iceball PROPERTIES COMPILE_DEFINITIONS "USE_OPENGL") - -# iceball-dedi target -add_executable(iceball-dedi EXCLUDE_FROM_ALL ${MAIN_FILES} ${LUA_FILES}) -target_link_libraries(iceball-dedi ${PNG_LIBRARIES} ${ENet_LIBRARIES} ${LUA_LIBRARIES} ${SDL_LIBRARY}) -set_target_properties(iceball-dedi PROPERTIES COMPILE_DEFINITIONS "DEDI") diff --git a/src/gl/render.c b/src/gl/render.c index 18b74ce..73dadb4 100644 --- a/src/gl/render.c +++ b/src/gl/render.c @@ -1730,7 +1730,7 @@ void render_vertex_array(uint32_t *pixels, int width, int height, int pitch, cam { glClientActiveTexture(GL_TEXTURE0 + i); glActiveTexture(GL_TEXTURE0 + i); - glTexCoordPointer(va->texcoord_size[i%va->texcoord_count], GL_FLOAT, sizeof(float)*va->stride, ((void *)0+sizeof(float)*va->texcoord_offs[i%va->texcoord_count])); + glTexCoordPointer(va->texcoord_size[i%va->texcoord_count], GL_FLOAT, sizeof(float)*va->stride, (void *)(sizeof(float)*va->texcoord_offs[i%va->texcoord_count])); } if(gl_shaders) diff --git a/src/gl/render_img.c b/src/gl/render_img.c index 53249da..082b6da 100644 --- a/src/gl/render_img.c +++ b/src/gl/render_img.c @@ -432,9 +432,13 @@ void render_blit_img_toimg(uint32_t *pixels, int width, int height, int pitch, __m128i xmm_src1_alpha0 = _mm_unpackhi_epi16(xmm_src1_alpha,xmm_src1_alpha); __m128i xmm_src1_alpha1 = _mm_unpacklo_epi16(xmm_src1_alpha,xmm_src1_alpha); +#ifdef _MSC_VER + xmm_src0_alpha = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(xmm_src0_alpha1),_mm_castsi128_ps(xmm_src0_alpha0),0xFF)); + xmm_src1_alpha = _mm_castps_si128(_mm_shuffle_ps(_mm_castsi128_ps(xmm_src1_alpha1),_mm_castsi128_ps(xmm_src1_alpha0),0xFF)); +#else xmm_src0_alpha = (__m128i)_mm_shuffle_ps((__m128)xmm_src0_alpha1,(__m128)xmm_src0_alpha0,0xFF); xmm_src1_alpha = (__m128i)_mm_shuffle_ps((__m128)xmm_src1_alpha1,(__m128)xmm_src1_alpha0,0xFF); - +#endif // Found some instructions which should speed this up. // NOTE: actually runs at the same damn speed... maybe even worse. diff --git a/src/lua.c b/src/lua.c index 11a06af..afa5992 100644 --- a/src/lua.c +++ b/src/lua.c @@ -148,16 +148,13 @@ int icelua_fn_client_mk_sys_execv(lua_State *L) #else char *v = strdup("iceball.exe"); arglist[0] = v; - main_argv0 = v; #endif #endif printf("argv0: [%s]\n", main_argv0); fflush(stdout); -#ifdef WIN32 - execv(v, arglist); -#else + execv(main_argv0, arglist); -#endif + printf("WORK YOU FUCKASS: %s\n", strerror(errno)); fflush(stdout); diff --git a/src/lua_glsl.h b/src/lua_glsl.h index 24c4ec9..a7768d6 100644 --- a/src/lua_glsl.h +++ b/src/lua_glsl.h @@ -87,7 +87,7 @@ int icelua_fn_client_glsl_create(lua_State *L) glGetShaderiv(sh_v, GL_INFO_LOG_LENGTH, &len); if (len > 0) { - char info[len]; + char *info = alloca(len); glGetShaderInfoLog(sh_v, len, NULL, info); luaL_addstring(&b, "Vertex shader compile error:\n"); luaL_addstring(&b, info); @@ -97,7 +97,7 @@ int icelua_fn_client_glsl_create(lua_State *L) glGetShaderiv(sh_f, GL_INFO_LOG_LENGTH, &len); if (len > 0) { - char info[len]; + char *info = alloca(len); glGetShaderInfoLog(sh_f, len, NULL, info); luaL_addstring(&b, "Fragment shader compile error:\n"); luaL_addstring(&b, info); @@ -126,7 +126,7 @@ int icelua_fn_client_glsl_create(lua_State *L) glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &len); if (len > 0) { - char info[len]; + char *info = alloca(len); glGetProgramInfoLog(prog, len, NULL, info); luaL_addstring(&b, "Link error:\n"); luaL_addstring(&b, info); diff --git a/src/lua_tcp.h b/src/lua_tcp.h index 72f9890..d72e857 100644 --- a/src/lua_tcp.h +++ b/src/lua_tcp.h @@ -15,7 +15,9 @@ along with Iceball. If not, see . */ +#ifndef _MSC_VER #include //fixes some warning, some POSIX shit ~Dany0 +#endif int whitelist_validate(const char *name, int port); diff --git a/src/main.c b/src/main.c index 0d74519..3d938ad 100644 --- a/src/main.c +++ b/src/main.c @@ -112,15 +112,62 @@ int platform_init(void) return 0; } +static const char* get_gl_debug_type_name(GLenum type) +{ + switch (type) { + case GL_DEBUG_TYPE_ERROR: + return "ERROR"; + case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: + return "DEPRECATED_BEHAVIOR"; + case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: + return "UNDEFINED_BEHAVIOR"; + case GL_DEBUG_TYPE_PORTABILITY: + return "PORTABILITY"; + case GL_DEBUG_TYPE_PERFORMANCE: + return "PERFORMANCE"; + case GL_DEBUG_TYPE_OTHER: + return "OTHER"; + default: + return ""; + } +} + +static const char* get_gl_debug_severity_name(GLenum severity) +{ + switch (severity) { + case GL_DEBUG_SEVERITY_LOW: + return "LOW"; + case GL_DEBUG_SEVERITY_MEDIUM: + return "MEDIUM"; + case GL_DEBUG_SEVERITY_HIGH: + return "HIGH"; + default: + return ""; + } +} + +void APIENTRY opengl_cb_fun(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, void* userParam) +{ + printf("---------------------opengl-callback-start------------\n"); + printf("message: %s\n", message); + printf("type: %s\n", get_gl_debug_type_name(type)); + printf("id: %d\n", id); + printf("severity: %s\n", get_gl_debug_severity_name(severity)); + printf("---------------------opengl-callback-end--------------\n"); +} + int video_init(void) { SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); - SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); +#ifndef NDEBUG + SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG); +#endif + if (screen_antialiasing_level > 0) { SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); @@ -128,10 +175,10 @@ int video_init(void) } window = SDL_CreateWindow("iceball", - SDL_WINDOWPOS_UNDEFINED, - SDL_WINDOWPOS_UNDEFINED, - screen_width, - screen_height, SDL_WINDOW_OPENGL | (screen_fullscreen ? SDL_WINDOW_FULLSCREEN : 0)); + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + screen_width, + screen_height, SDL_WINDOW_OPENGL | (screen_fullscreen ? SDL_WINDOW_FULLSCREEN : 0)); if(window == NULL) return error_sdl("SDL_CreateWindow"); @@ -154,6 +201,7 @@ int video_init(void) //if(screen == NULL) // return error_sdl("SDL_GetWindowSurface"); + glewExperimental = 1; GLenum err_glew = glewInit(); if(err_glew != GLEW_OK) { @@ -169,6 +217,25 @@ int video_init(void) glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gl_max_texunits); +#ifndef NDEBUG + if (glDebugMessageCallbackARB != NULL) { + glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); + glDebugMessageCallback(opengl_cb_fun, NULL); + GLuint unusedIds = 0; + glDebugMessageControl(GL_DONT_CARE, + GL_DONT_CARE, + GL_DONT_CARE, + 0, + &unusedIds, + 1); + + fprintf(stdout, "Registered ARB_debug_output callback\n"); + } + else { + fprintf(stderr, "WARNING: Could not register ARB_debug_output callback\n"); + } +#endif + return 0; } @@ -862,6 +929,7 @@ int main_dbghelper(int argc, char *argv[]) main_argv0 = argv[0]; main_oldcwd = NULL; +/* #ifdef WIN32 // necessary for the server list to work, apparently { @@ -888,6 +956,7 @@ int main_dbghelper(int argc, char *argv[]) } } #endif +*/ #ifdef DEDI if(argc <= 1) diff --git a/src/map.c b/src/map.c index 187cca9..98792f9 100644 --- a/src/map.c +++ b/src/map.c @@ -16,6 +16,9 @@ */ #include "common.h" + +#define PILLAR_SIZE 1028 // (256 + 1) * 4 + int map_parse_root(map_t *map, const char *dend, const char *data, int xlen, int ylen, int zlen, int wipe_lighting) { // TODO: refactor a bit @@ -41,7 +44,6 @@ int map_parse_root(map_t *map, const char *dend, const char *data, int xlen, int return 0; } - const int PILLAR_SIZE = (256+1)*4; uint8_t pillar_temp[PILLAR_SIZE]; int i,x,z,pi; diff --git a/src/network.c b/src/network.c index d2c4e6e..fb545bd 100644 --- a/src/network.c +++ b/src/network.c @@ -19,18 +19,6 @@ #ifdef WIN32 WSADATA wsaStartup; -#define close(x) closesocket(x) -#if _MSC_VER -int bind( SOCKET s, void* name, int namelen ) -{ - return bind( s, (const sockaddr*)name, namelen ); -} -int setsockopt( SOCKET s, int level, int optname, void* optval, int optlen ) -{ - return setsockopt( s, level, optname, (const char*)optval, optlen ); -} - -#endif #endif int server_sockfd_ipv4 = SOCKFD_NONE; diff --git a/src/png.c b/src/png.c index 790b7c6..084f3b7 100644 --- a/src/png.c +++ b/src/png.c @@ -17,10 +17,12 @@ #include "common.h" +#pragma pack(push, 1) typedef struct pngheader { uint32_t width, height; uint8_t bpc, ctyp, cmpr, filt, inter; -} __attribute__((__packed__)) pngheader_t; +} pngheader_t; +#pragma pack(pop) #ifndef DEDI void expandtex_gl(int *iw, int *ih); @@ -524,8 +526,14 @@ void img_write_png(const char *fname, img_t *img) size_t img_size = row_size * img->head.height; size_t img_uncomp_len = (row_size - (gap-1)) * img->head.height; uint8_t *img_uncomp = malloc(img_uncomp_len); +#ifdef _MSC_VER + // TODO: broken? + uint8_t **rowP = alloca(row_size * 1); + uint8_t **rowC = alloca(row_size * 5); +#else uint8_t rowP[1][row_size]; uint8_t rowC[5][row_size]; +#endif uint8_t *src_pixels = (uint8_t *)(img->pixels); int rowsel = 0; diff --git a/src/vecmath.c b/src/vecmath.c index f1917f3..1ccb95c 100644 --- a/src/vecmath.c +++ b/src/vecmath.c @@ -21,7 +21,7 @@ vec4f_t mtx_apply_vec(matrix_t *mtx, vec4f_t *vec) { int i,j; -#ifndef __SSE__ +#if !defined(__SSE__) || defined(_MSC_VER) vec4f_t ret; diff --git a/src/wav.c b/src/wav.c index 4ee38fe..5d383b5 100644 --- a/src/wav.c +++ b/src/wav.c @@ -25,12 +25,14 @@ sackit_playback_t *icesackit_pb = NULL; float icesackit_vol = 1.0f; float icesackit_mvol = 1.0f; +#pragma pack(push, 1) typedef struct wavfmt { uint16_t codec, chns; uint32_t freq; uint32_t bytes_sec; uint16_t blkalign, bps; -} __attribute__((__packed__)) wavfmt_t; +} wavfmt_t; +#pragma pack(pop) // These 2 tables are from here: http://wiki.multimedia.cx/index.php?title=IMA_ADPCM int ima_index_table[16] = {