diff --git a/bigzipdist.sh b/bigzipdist.sh index 8e92a8f..3b3b421 100755 --- a/bigzipdist.sh +++ b/bigzipdist.sh @@ -1,6 +1,6 @@ #!/bin/sh -export ZIPNAME=nubdist/iceball-0.1.1.zip +export ZIPNAME=nubdist/iceball-0.1.2.zip #zip -r $ZIPNAME *.dll *.exe *.txt *.bat docs/ \ # pkg/base/*.lua \ @@ -13,7 +13,7 @@ export ZIPNAME=nubdist/iceball-0.1.1.zip # dlcache/info.txt clsave/info.txt svsave/info.txt \ # clsave/config.json clsave/pub/user.json -zip -r $ZIPNAME *.dll *.exe *.txt opencmd.bat connect-*.bat docs/ \ +zip -r $ZIPNAME *.dll *.exe *.txt opencmd.bat docs/ \ pmfedit.bat mapedit.bat \ dlcache/info.txt clsave/info.txt \ clsave/config.json clsave/pub/user.json \ @@ -21,8 +21,10 @@ zip -r $ZIPNAME *.dll *.exe *.txt opencmd.bat connect-*.bat docs/ \ clsave/vol/dummy clsave/base/vol/dummy \ pkg/iceball/halp/ \ pkg/base/ pkg/maps/mesa.vxl pkg/maps/mesa.vxl.tga \ + pkg/maps/gen_classic.lua.tga \ pkg/iceball/snowtest/ pkg/iceball/hack_console/ \ pkg/iceball/pmfedit/ pkg/iceball/mapedit/ \ + pkg/iceball/sprinting/ pkg/iceball/deucenamegen/ \ svsave/info.txt \ svsave/pub/server.json svsave/pub/mods.json svsave/base/vol/dummy svsave/vol/dummy \ src/ include/ Makefile* CMakeLists.txt main.make \ diff --git a/clsave/config.json b/clsave/config.json index b2711df..4b0a890 100644 --- a/clsave/config.json +++ b/clsave/config.json @@ -1,52 +1,52 @@ -{ - "__COMMENT_000": " - - This file contains configuration for the engine itself. - It cannot be read by any mods. - - If you have a graphics card that's reasonably fast - and has at least 128MB of VRAM (64MB *might* cut it), - set gl_vbo to true. - (Yes, this DOES help on an Intel 3000 HD.) - If your game crashes when the map starts appearing, set it to false. - - If you have an OpenGL-2.0-capable card (or one with non-power-of-two support), - and you wish to conserve a little bit of VRAM, - set gl_expand_textures to false. - If you get white boxes, it obviously wasn't capable - set it to true. - - ", - - "video" : { - "width": 800, - "height": 600, - "fullscreen": false, - - "cubeshift": 0, - - "antialiasinglevel": 0, - "smoothlighting": true, - "gl_expand_textures": true, - "gl_chunk_size": 32, - "gl_chunks_tesselated_per_frame": 4, - "gl_shaders": true, - "gl_frustum_cull": true, - "gl_flip_quads": true, - "gl_vbo": true - }, - - "audio" : { - "freq": 44100, - "bufsize": 2048, - - "volume": 1.0 - } - - "security" : { - "bin_storage_allowed": true, - "raw_whitelist" : [ - ["voxelauth.com", 80] - ] - } -} - +{ + "__COMMENT_000": " + + This file contains configuration for the engine itself. + It cannot be read by any mods. + + If you have a graphics card that's reasonably fast + and has at least 128MB of VRAM (64MB *might* cut it), + set gl_vbo to true. + (Yes, this DOES help on an Intel 3000 HD.) + If your game crashes when the map starts appearing, set it to false. + + If you have an OpenGL-2.0-capable card (or one with non-power-of-two support), + and you wish to conserve a little bit of VRAM, + set gl_expand_textures to false. + If you get white boxes, it obviously wasn't capable - set it to true. + + ", + + "video" : { + "width": 800, + "height": 600, + "fullscreen": false, + + "cubeshift": 0, + + "antialiasinglevel": 0, + "smoothlighting": true, + "gl_expand_textures": true, + "gl_chunk_size": 32, + "gl_chunks_tesselated_per_frame": 4, + "gl_shaders": true, + "gl_frustum_cull": true, + "gl_flip_quads": true, + "gl_vbo": true + }, + + "audio" : { + "freq": 44100, + "bufsize": 2048, + + "volume": 1.0 + } + + "security" : { + "bin_storage_allowed": true, + "raw_whitelist" : [ + ["voxelauth.com", 80] + ] + } +} + diff --git a/clsave/pub/controls.json b/clsave/pub/controls.json index 196b10f..82a503e 100644 --- a/clsave/pub/controls.json +++ b/clsave/pub/controls.json @@ -1,37 +1,37 @@ -{ - "__COMMENT_000": " - - This is the sort of place you set up your controls. - It can be read by all mods, but not writeable by any. - - By the way, don't store anything important in this comment. - It is possible that a hacked server might be able to read it. - - READ THIS FILE: docs/setup_json.txt - READ THIS URL: http://wiki.libsdl.org/moin.cgi/SDLKeycodeLookup - - For more info on the syntax itself, see http://json.org/ - ", - - "forward": 119, - "back": 115, - "left": 97, - "right": 100, - "jump": 32, - "crouch": 306, - "sneak": 118, - "reload": 114, - "tools": [49, 50, 51, 52, 53, 54, 55, 56, 57, 48], - "colorleft": 276, - "colorright": 275, - "colorup": 273, - "colordown": 274, - "chat": 116, - "teamchat": 121, - "squadchat": 117, - "scores": 9, - "quit": 27, - "map": 109, - "team": 44, - "wpn": 46 -} +{ + "__COMMENT_000": " + + This is the sort of place you set up your controls. + It can be read by all mods, but not writeable by any. + + By the way, don't store anything important in this comment. + It is possible that a hacked server might be able to read it. + + READ THIS FILE: docs/setup_json.txt + READ THIS URL: http://wiki.libsdl.org/moin.cgi/SDLKeycodeLookup + + For more info on the syntax itself, see http://json.org/ + ", + + "forward": 119, + "back": 115, + "left": 97, + "right": 100, + "jump": 32, + "crouch": 306, + "sneak": 118, + "reload": 114, + "tools": [49, 50, 51, 52, 53, 54, 55, 56, 57, 48], + "colorleft": 276, + "colorright": 275, + "colorup": 273, + "colordown": 274, + "chat": 116, + "teamchat": 121, + "squadchat": 117, + "scores": 9, + "quit": 27, + "map": 109, + "team": 44, + "wpn": 46 +} diff --git a/clsave/pub/user.json b/clsave/pub/user.json index f794e85..ced1449 100644 --- a/clsave/pub/user.json +++ b/clsave/pub/user.json @@ -1,39 +1,39 @@ -{ - "__COMMENT_000": " - - This is the sort of place you set up your 'profile' and whatnot. - It can be read by all mods, but not writeable by any. - - By the way, don't store anything important in this comment. - It is possible that a hacked server might be able to read it. - - READ THIS FILE: docs/setup_json.txt - - For name, and many other things, you need quotes: - ''name'': ''your name goes here'', - NOT: - ''name'': this is wrong, - - (replace '' with the double-quotes used to contain this comment) - - You will need to also set ''kick_on_join'' to false, - or else you will not be able to join any servers! - - For more info on the syntax itself, see http://json.org/ - ", - - "name": null, - "kick_on_join": true, - "sensitivity": 1.0, - "hold_to_zoom": false, - "fog": 127.5, - - "skins" : { - - }, - - "bio": { - "description": "I'm too lazy to learn how to edit my config. Laugh at me.", - "languages": ["pt", "pl"] - } -} +{ + "__COMMENT_000": " + + This is the sort of place you set up your 'profile' and whatnot. + It can be read by all mods, but not writeable by any. + + By the way, don't store anything important in this comment. + It is possible that a hacked server might be able to read it. + + READ THIS FILE: docs/setup_json.txt + + For name, and many other things, you need quotes: + ''name'': ''your name goes here'', + NOT: + ''name'': this is wrong, + + (replace '' with the double-quotes used to contain this comment) + + You will need to also set ''kick_on_join'' to false, + or else you will not be able to join any servers that actually check this flag! + + For more info on the syntax itself, see http://json.org/ + ", + + "name": "", + "kick_on_join": true, + "sensitivity": 1.0, + "hold_to_zoom": false, + "fog": 127.5, + + "skins" : { + + }, + + "bio": { + "description": "I'm too lazy to learn how to edit my config. Laugh at me.", + "languages": ["pt", "pl"] + } +} diff --git a/connect-rakiru.bat b/connect-rakiru.bat deleted file mode 100644 index 323b886..0000000 --- a/connect-rakiru.bat +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -iceball-gl -c play.iceballga.me 20737 - diff --git a/heart/heartbeat.py b/heart/heartbeat.py index b43d971..9936251 100644 --- a/heart/heartbeat.py +++ b/heart/heartbeat.py @@ -45,7 +45,7 @@ def calc_ib_version(w,x,y,a,z): HB_LIFETIME = 120 HB_VERSION = 2 -IB_VERSION_CMP = (0,1,1,0,0) +IB_VERSION_CMP = (0,1,2,0,0) IB_VERSION = calc_ib_version(*IB_VERSION_CMP) # ignore "Z" version diff --git a/include/common.h b/include/common.h index f9c72f2..318c034 100644 --- a/include/common.h +++ b/include/common.h @@ -17,9 +17,9 @@ #define VERSION_W 0 #define VERSION_X 1 -#define VERSION_Y 1 +#define VERSION_Y 2 #define VERSION_A 0 -#define VERSION_Z 9 +#define VERSION_Z 0 // Remember to bump "Z" basically every time you change the engine! // Remember to bump the version in Lua too! // Remember to document API changes in a new version! diff --git a/multiclient.bat b/multiclient.bat deleted file mode 100644 index 036cfbb..0000000 --- a/multiclient.bat +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -iceball-gl -c localhost 20737 -pause - diff --git a/multiclient_server.bat b/multiclient_server.bat deleted file mode 100644 index 181dc4b..0000000 --- a/multiclient_server.bat +++ /dev/null @@ -1,4 +0,0 @@ -@echo off -iceball-gl.exe -d 20737 pkg/base -pause - diff --git a/pkg/base/it/music.it b/pkg/base/it/music.it index 5a9327b..c9d6d04 100644 Binary files a/pkg/base/it/music.it and b/pkg/base/it/music.it differ diff --git a/pkg/base/main_client.lua b/pkg/base/main_client.lua index 44d6090..dfcefd1 100644 --- a/pkg/base/main_client.lua +++ b/pkg/base/main_client.lua @@ -15,8 +15,8 @@ along with Ice Lua Components. If not, see . ]] -if common.version.num < 4194304 then - error("You need Iceball version 0.1 or later to connect to this server.") +if common.version.num < 4259840 then + error("You need Iceball version 0.1.2 or later to connect to this server.") end function client.hook_kick(reason) diff --git a/pkg/base/main_server.lua b/pkg/base/main_server.lua index 2f21b55..5ad12d1 100644 --- a/pkg/base/main_server.lua +++ b/pkg/base/main_server.lua @@ -15,10 +15,8 @@ along with Ice Lua Components. If not, see . ]] -if common.version.num < 4227072 then - error("You need Iceball version 0.1.1 or later to run this code.") - -- I know 0.1 can run it at the time of 0.1.1's release, - -- but I *do* want the server to stay up to date. +if common.version.num < 4259840 then + error("You need Iceball version 0.1.2 or later to run this code.") end -- UDP port test. diff --git a/pkg/base/version.lua b/pkg/base/version.lua index 40f792f..7e2f7d3 100644 --- a/pkg/base/version.lua +++ b/pkg/base/version.lua @@ -16,13 +16,14 @@ ]] VERSION_ENGINE = { - cmp={0,1,1,0,9}, - num=4227072+9, - str="0.1.1-9", + cmp={0,1,2,0,0}, + num=4259840, + str="0.1.2", } -- 0.1: 4194304 -- 0.1.1: 4227072 +-- 0.1.2: 4259840 VERSION_BUGS = { {intro=nil, fix=1, msg="PMF models have the wrong Z value when close to the screen edges, and can be seen through walls"}, @@ -110,5 +111,6 @@ VERSION_BUGS = { {intro=4227072+5, fix=4227072+7, msg="Incompatible semantics for image scaling"}, {intro=nil, fix=4227072+8, msg="iceball:// URL scheme not supported"}, {intro=4227072+8, fix=4227072+9, msg="[Windows] iceball:// handler doesn't set current directory correctly"}, +{intro=nil, fix=4259840, msg="Sound broken wrt stereo (only the last sound played is in stereo; the rest uses the left for both channels)"}, } diff --git a/run-gl.bat b/run-gl.bat deleted file mode 100644 index d58a238..0000000 --- a/run-gl.bat +++ /dev/null @@ -1,74 +0,0 @@ -@ECHO OFF - -:Menu -ECHO ============== Iceball ============== -ECHO ------------------------------------- -ECHO 1. Single-player -ECHO 2. Dev server -ECHO 3. Lighting test -ECHO 4. Snow weather test -ECHO 5. Map editor -ECHO 6. PMF editor -ECHO ------------------------------------- -ECHO 0. Exit -ECHO ------------------------------------- -ECHO. - -SET INPUT= -SET /P INPUT=Please select a number: - -cls -IF /I '%INPUT%'=='1' GOTO SinglePlayer -IF /I '%INPUT%'=='2' GOTO DevServer -IF /I '%INPUT%'=='3' GOTO LightingTest -IF /I '%INPUT%'=='4' GOTO SnowTest -IF /I '%INPUT%'=='5' GOTO MapEditor -IF /I '%INPUT%'=='6' GOTO PMFEditor -IF /I '%INPUT%'=='0' EXIT - -ECHO Invalid option -pause -cls -GOTO Menu - -:SinglePlayer -ECHO Starting local server... -iceball-gl.exe -s 0 pkg/base pkg/maps/mesa.vxl -ECHO. -cls -GOTO Menu - -:DevServer -ECHO Connecting to dev server... -iceball-gl.exe -c iceballga.me 20737 -ECHO. -cls -GOTO Menu - -:LightingTest -ECHO Starting lighting test... -iceball-gl.exe -s 0 pkg/iceball/radtest -ECHO. -cls -GOTO Menu - -:SnowTest -ECHO Starting snow weather test... -iceball-gl.exe -s 0 pkg/iceball/snowtest -ECHO. -cls -GOTO Menu - -:MapEditor -ECHO Starting map editor... -iceball-gl.exe -s 0 pkg/iceball/mapedit -ECHO. -cls -GOTO Menu - -:PMFEditor -ECHO Starting PMF editor... -iceball-gl.exe -s 0 pkg/iceball/pmfedit -ECHO. -cls -GOTO Menu diff --git a/run.bat b/run.bat deleted file mode 100644 index 6191373..0000000 --- a/run.bat +++ /dev/null @@ -1,74 +0,0 @@ -@ECHO OFF - -:Menu -ECHO ============== Iceball ============== -ECHO ------------------------------------- -ECHO 1. Single-player -ECHO 2. Dev server -ECHO 3. Lighting test -ECHO 4. Snow weather test -ECHO 5. Map editor -ECHO 6. PMF editor -ECHO ------------------------------------- -ECHO 0. Exit -ECHO ------------------------------------- -ECHO. - -SET INPUT= -SET /P INPUT=Please select a number: - -cls -IF /I '%INPUT%'=='1' GOTO SinglePlayer -IF /I '%INPUT%'=='2' GOTO DevServer -IF /I '%INPUT%'=='3' GOTO LightingTest -IF /I '%INPUT%'=='4' GOTO SnowTest -IF /I '%INPUT%'=='5' GOTO MapEditor -IF /I '%INPUT%'=='6' GOTO PMFEditor -IF /I '%INPUT%'=='0' EXIT - -ECHO Invalid option -pause -cls -GOTO Menu - -:SinglePlayer -ECHO Starting local server... -iceball.exe -s 0 pkg/base pkg/maps/mesa.vxl -ECHO. -cls -GOTO Menu - -:DevServer -ECHO Connecting to dev server... -iceball.exe -c play.iceballga.me 20737 -ECHO. -cls -GOTO Menu - -:LightingTest -ECHO Starting lighting test... -iceball.exe -s 0 pkg/iceball/radtest -ECHO. -cls -GOTO Menu - -:SnowTest -ECHO Starting snow weather test... -iceball.exe -s 0 pkg/iceball/snowtest -ECHO. -cls -GOTO Menu - -:MapEditor -ECHO Starting map editor... -iceball.exe -s 0 pkg/iceball/mapedit -ECHO. -cls -GOTO Menu - -:PMFEditor -ECHO Starting PMF editor... -iceball.exe -s 0 pkg/iceball/pmfedit -ECHO. -cls -GOTO Menu diff --git a/src/gl/render_img.c b/src/gl/render_img.c index 686394d..a26fece 100644 --- a/src/gl/render_img.c +++ b/src/gl/render_img.c @@ -218,7 +218,7 @@ void render_blit_img_toimg(uint32_t *pixels, int width, int height, int pitch, // Assembly/Compiler Coding Rule 76. (M impact, H generality) Align data to // 32-byte boundary when possible. Prefer store alignment over load alignment. - if(bw >= 16) + if(bw >= 16 && scalex == 1.0f) { const __m128i xmmconst_0 = _mm_setzero_si128(); const __m128i xmmconst_256 = _mm_set1_epi16(256); @@ -236,15 +236,13 @@ void render_blit_img_toimg(uint32_t *pixels, int width, int height, int pitch, for(x = 0; x < bw; x += 8) _mm_prefetch(pd+x, _MM_HINT_T0); - xctr = 0; - // do the left part first // TODO: look for a mask instruction + uint32_t *fs = ps; for(x = 0; x < bw; x++) { - uint32_t s = ps[xctr>>16]; + uint32_t s = *(fs++); uint32_t d = *pd; - xctr += iscalex; // apply base color // DANGER! BRACKETITIS! @@ -283,19 +281,8 @@ void render_blit_img_toimg(uint32_t *pixels, int width, int height, int pitch, // NOTE: i don't have AVX2 so don't expect an AVX2 version. for(; x < bw-4; x+=4) { - int nxctr = xctr + iscalex*3; - __m128i xmm_src; - if((nxctr>>16)-(xctr>>16) == 3) - { - xmm_src = _mm_loadu_si128((__m128i *)&ps[xctr>>16]); - } else { - xmm_src = _mm_set_epi32( - ps[xctr>>16], - ps[(xctr+iscalex)>>16], - ps[(xctr+2*iscalex)>>16], - ps[(xctr+3*iscalex)>>16]); - } - xctr += iscalex<<2; + __m128i xmm_src = _mm_loadu_si128((__m128i *)fs); + fs += 4; __m128i xmm_dst = _mm_load_si128((__m128i *)pd); // unpack @@ -387,9 +374,8 @@ void render_blit_img_toimg(uint32_t *pixels, int width, int height, int pitch, // finish off with the right part for(; x < bw; x++) { - uint32_t s = ps[xctr>>16]; + uint32_t s = *(fs++); uint32_t d = *pd; - xctr += iscalex; // apply base color // DANGER! BRACKETITIS! diff --git a/src/softgm/render_img.c b/src/softgm/render_img.c index 8b1e0f9..398386f 100644 --- a/src/softgm/render_img.c +++ b/src/softgm/render_img.c @@ -103,7 +103,7 @@ void render_blit_img(uint32_t *pixels, int width, int height, int pitch, // Assembly/Compiler Coding Rule 76. (M impact, H generality) Align data to // 32-byte boundary when possible. Prefer store alignment over load alignment. - if(bw >= 16) + if(bw >= 16 && scalex == 1.0f) { const __m128i xmmconst_0 = _mm_setzero_si128(); const __m128i xmmconst_256 = _mm_set1_epi16(256); @@ -121,15 +121,13 @@ void render_blit_img(uint32_t *pixels, int width, int height, int pitch, for(x = 0; x < bw; x += 8) _mm_prefetch(pd+x, _MM_HINT_T0); - xctr = 0x8000; - // do the left part first // TODO: look for a mask instruction + uint32_t *fs = ps; for(x = 0; x < bw; x++) { - uint32_t s = ps[xctr>>16]; + uint32_t s = *(fs++); uint32_t d = *pd; - xctr += iscalex; // apply base color // DANGER! BRACKETITIS! @@ -168,19 +166,8 @@ void render_blit_img(uint32_t *pixels, int width, int height, int pitch, // NOTE: i don't have AVX2 so don't expect an AVX2 version. for(; x < bw-4; x+=4) { - int nxctr = xctr + iscalex*3; - __m128i xmm_src; - if((nxctr>>16)-(xctr>>16) == 3) - { - xmm_src = _mm_loadu_si128((__m128i *)&ps[xctr>>16]); - } else { - xmm_src = _mm_set_epi32( - ps[xctr>>16], - ps[(xctr+iscalex)>>16], - ps[(xctr+2*iscalex)>>16], - ps[(xctr+3*iscalex)>>16]); - } - xctr += iscalex<<2; + __m128i xmm_src = _mm_loadu_si128((__m128i *)fs); + fs += 4; __m128i xmm_dst = _mm_load_si128((__m128i *)pd); // unpack @@ -272,9 +259,8 @@ void render_blit_img(uint32_t *pixels, int width, int height, int pitch, // finish off with the right part for(; x < bw; x++) { - uint32_t s = ps[xctr>>16]; + uint32_t s = *(fs++); uint32_t d = *pd; - xctr += iscalex; // apply base color // DANGER! BRACKETITIS! diff --git a/src/wav.c b/src/wav.c index 0162bdc..26402f2 100644 --- a/src/wav.c +++ b/src/wav.c @@ -178,7 +178,7 @@ void wav_fn_mixer_s16he_stereo(void *buf, int len) int16_t d = data[offs]; int32_t v0 = (int32_t)(*v) + (int32_t)(vol[0]*d+0.5f); - int32_t v1 = (int32_t)(*v) + (int32_t)(vol[1]*d+0.5f); + int32_t v1 = (int32_t)(*(v+1)) + (int32_t)(vol[1]*d+0.5f); if(v0 > 0x7FFF) v0 = 0x7FFF; if(v0 < -0x7FFF) v0 = -0x7FFF; if(v1 > 0x7FFF) v1 = 0x7FFF; diff --git a/zipdist.sh b/zipdist.sh index 9afa32e..28fb819 100755 --- a/zipdist.sh +++ b/zipdist.sh @@ -2,7 +2,7 @@ export ZIPNAME=nubdist/iceball-indev-0.1.1-9.zip -zip -r $ZIPNAME *.dll *.exe *.txt opencmd.bat connect-*.bat docs/ \ +zip -r $ZIPNAME *.dll *.exe *.txt opencmd.bat docs/ \ dlcache/info.txt clsave/info.txt \ clsave/config.json clsave/pub/user.json clsave/pub/controls.json \ "DOUBLE CLICK ON THIS FILE TO GET THE MASTER SERVER LIST WORKING PROPERLY ON WINDOWS I MEAN IT.exe" \