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" \