diff options
author | B. Watson <urchlay@slackware.uk> | 2023-01-18 03:54:24 -0500 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2023-01-21 10:22:10 +0700 |
commit | 918d4273926158832cadfdacf9f6ec41bc3ea319 (patch) | |
tree | 4d82279605ff22e9c2b00dfbfbd3efd723d485e7 /games/wolf4sdl/patches | |
parent | 1ff6dedb3ab22ad3105fc6ff373fb2971cc9629c (diff) |
games/wolf4sdl: Updated for version 2.0+20210408_f31f41a.
Signed-off-by: B. Watson <urchlay@slackware.uk>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'games/wolf4sdl/patches')
-rw-r--r-- | games/wolf4sdl/patches/datadir.diff | 311 | ||||
-rw-r--r-- | games/wolf4sdl/patches/exename.diff | 32 | ||||
-rw-r--r-- | games/wolf4sdl/patches/gameplay.diff | 270 |
3 files changed, 613 insertions, 0 deletions
diff --git a/games/wolf4sdl/patches/datadir.diff b/games/wolf4sdl/patches/datadir.diff new file mode 100644 index 0000000000..1c8e7524b7 --- /dev/null +++ b/games/wolf4sdl/patches/datadir.diff @@ -0,0 +1,311 @@ +diff -Naur wolf4sdl-2.0+20210408_f31f41a/Makefile wolf4sdl-2.0+20210408_f31f41a.patched/Makefile +--- wolf4sdl-2.0+20210408_f31f41a/Makefile 2023-01-17 21:39:16.429986286 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/Makefile 2023-01-17 22:30:58.234400318 -0500 +@@ -20,7 +20,7 @@ + LDFLAGS_SDL ?= $(shell $(SDL_CONFIG) --libs) + + +-CFLAGS += $(CFLAGS_SDL) ++CFLAGS += -DPREFIX='"$(PREFIX)"' $(CFLAGS_SDL) + + #CFLAGS += -Wall + #CFLAGS += -W +@@ -87,6 +87,7 @@ + SRCS += wl_state.c + SRCS += wl_text.c + SRCS += wl_utils.c ++SRCS += datafile.c + + DEPS = $(filter %.d, $(SRCS:.c=.d) $(SRCS:.cpp=.d)) + OBJS = $(filter %.o, $(SRCS:.c=.o) $(SRCS:.cpp=.o)) +diff -Naur wolf4sdl-2.0+20210408_f31f41a/datafile.c wolf4sdl-2.0+20210408_f31f41a.patched/datafile.c +--- wolf4sdl-2.0+20210408_f31f41a/datafile.c 1969-12-31 19:00:00.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/datafile.c 2023-01-17 22:28:44.888190048 -0500 +@@ -0,0 +1,60 @@ ++ ++#include <stdlib.h> ++#include <unistd.h> ++#include <limits.h> ++#include <stdio.h> ++#include <sys/types.h> ++#include <sys/stat.h> ++#include <fcntl.h> ++ ++#include "datafile.h" ++ ++static char *datapath = NULL; ++ ++static void set_data_path(void) { ++ if(datapath) return; ++ datapath = getenv("WOLF4PATH"); ++ if(datapath) return; ++ ++ // 20120113 bkw: should this be "C:\\WOLF3D" on Windows? ++ datapath = (char *)PREFIX "/share/games/wolf3d"; ++} ++ ++int datafile_exists(const char *file) { ++ char datafile[PATH_MAX]; ++ struct stat statbuf; ++ ++ set_data_path(); ++ ++ if(stat(file, &statbuf)) ++ return 1; ++ ++ sprintf(datafile, "%s/%s", datapath, file); ++ return stat(datafile, &statbuf); ++} ++ ++int datafile_open(const char *file, int flags) { ++ char datafile[PATH_MAX]; ++ int handle; ++ ++ set_data_path(); ++ ++ if( (handle = open(file, flags)) > 0 ) ++ return handle; ++ ++ sprintf(datafile, "%s/%s", datapath, file); ++ return open(datafile, flags); ++} ++ ++FILE *datafile_fopen(const char *file, const char *mode) { ++ char datafile[PATH_MAX]; ++ FILE *f; ++ ++ set_data_path(); ++ ++ if( (f = fopen(file, mode)) ) ++ return f; ++ ++ sprintf(datafile, "%s/%s", datapath, file); ++ return fopen(datafile, mode); ++} +diff -Naur wolf4sdl-2.0+20210408_f31f41a/datafile.h wolf4sdl-2.0+20210408_f31f41a.patched/datafile.h +--- wolf4sdl-2.0+20210408_f31f41a/datafile.h 1969-12-31 19:00:00.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/datafile.h 2023-01-17 22:28:44.888190048 -0500 +@@ -0,0 +1,22 @@ ++ ++#include <stdio.h> ++/* ++20120113 bkw: ++Functions for loading game data files. ++ ++All these functions search for files in: ++ ++- The current directory ++- The directory specified by $WOLF4PATH if set ++- If WOLF4PATH not set, fall back to PREFIX/share/games/wolf3d ++ ++*/ ++ ++/* returns true if file exists in the data path, otherwise false */ ++int datafile_exists(const char *file); ++ ++/* returns a filehandle to the file if found, or -1 if not */ ++int datafile_open(const char *file, int flags); ++ ++/* returns a FILE* if found, or NULL if not */ ++FILE *datafile_fopen(const char *file, const char *mode); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/id_ca.c wolf4sdl-2.0+20210408_f31f41a.patched/id_ca.c +--- wolf4sdl-2.0+20210408_f31f41a/id_ca.c 2023-01-17 21:39:16.432986336 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/id_ca.c 2023-01-17 22:34:06.381518949 -0500 +@@ -24,6 +24,7 @@ + #include <unistd.h> + #endif + ++#include "datafile.h" + #include "wl_def.h" + #pragma hdrstop + +@@ -181,7 +182,7 @@ + { + int32_t size; + +- const int handle = open(filename, O_RDONLY | O_BINARY); ++ const int handle = datafile_open(filename, O_RDONLY | O_BINARY); + if (handle == -1) + return false; + +@@ -454,7 +455,7 @@ + strcpy(fname,gdictname); + strcat(fname,graphext); + +- handle = open(fname, O_RDONLY | O_BINARY); ++ handle = datafile_open(fname, O_RDONLY | O_BINARY); + if (handle == -1) + CA_CannotOpen(fname); + +@@ -465,7 +466,7 @@ + strcpy(fname,gheadname); + strcat(fname,graphext); + +- handle = open(fname, O_RDONLY | O_BINARY); ++ handle = datafile_open(fname, O_RDONLY | O_BINARY); + if (handle == -1) + CA_CannotOpen(fname); + +@@ -500,7 +501,7 @@ + strcpy(fname,gfilename); + strcat(fname,graphext); + +- grhandle = open(fname, O_RDONLY | O_BINARY); ++ grhandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (grhandle == -1) + CA_CannotOpen(fname); + +@@ -544,7 +545,7 @@ + strcpy(fname,mheadname); + strcat(fname,extension); + +- handle = open(fname, O_RDONLY | O_BINARY); ++ handle = datafile_open(fname, O_RDONLY | O_BINARY); + if (handle == -1) + CA_CannotOpen(fname); + +@@ -560,14 +561,14 @@ + strcpy(fname, "gamemaps."); + strcat(fname, extension); + +- maphandle = open(fname, O_RDONLY | O_BINARY); ++ maphandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (maphandle == -1) + CA_CannotOpen(fname); + #else + strcpy(fname,mfilename); + strcat(fname,extension); + +- maphandle = open(fname, O_RDONLY | O_BINARY); ++ maphandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (maphandle == -1) + CA_CannotOpen(fname); + #endif +@@ -627,7 +628,7 @@ + strcpy(fname,afilename); + strcat(fname,audioext); + +- audiohandle = open(fname, O_RDONLY | O_BINARY); ++ audiohandle = datafile_open(fname, O_RDONLY | O_BINARY); + if (audiohandle == -1) + CA_CannotOpen(fname); + } +diff -Naur wolf4sdl-2.0+20210408_f31f41a/id_pm.c wolf4sdl-2.0+20210408_f31f41a.patched/id_pm.c +--- wolf4sdl-2.0+20210408_f31f41a/id_pm.c 2023-01-17 21:39:16.432986336 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/id_pm.c 2023-01-17 22:34:44.942158111 -0500 +@@ -1,5 +1,6 @@ + // ID_PM.C + ++#include "datafile.h" + #include "wl_def.h" + + word ChunksInFile; +@@ -35,7 +36,7 @@ + + strcat (fname,extension); + +- file = fopen(fname,"rb"); ++ file = datafile_fopen(fname,"rb"); + + if (!file) + CA_CannotOpen(fname); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_menu.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_menu.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_menu.c 2023-01-17 21:39:16.439986452 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_menu.c 2023-01-17 22:39:05.618478948 -0500 +@@ -14,6 +14,7 @@ + #include <unistd.h> + #endif + ++#include "datafile.h" + #include "wl_def.h" + #pragma hdrstop + +@@ -4052,11 +4053,11 @@ + // + #ifdef JAPAN + #ifdef JAPDEMO +- if(!stat("vswap.wj1", &statbuf)) ++ if(datafile_exists("vswap.wj1")) + { + strcpy (extension, "wj1"); + #else +- if(!stat("vswap.wj6", &statbuf)) ++ if(datafile_exists("vswap.wj6")) + { + strcpy (extension, "wj6"); + #endif +@@ -4076,13 +4077,13 @@ + // ENGLISH + // + #ifdef UPLOAD +- if(!stat("vswap.wl1", &statbuf)) ++ if(datafile_exists("vswap.wl1")) + strcpy (extension, "wl1"); + else + Quit ("NO WOLFENSTEIN 3-D DATA FILES to be found!"); + #else + #ifndef SPEAR +- if(!stat("vswap.wl6", &statbuf)) ++ if(datafile_exists("vswap.wl6")) + { + strcpy (extension, "wl6"); + NewEmenu[2].active = +@@ -4095,14 +4096,14 @@ + } + else + { +- if(!stat("vswap.wl3", &statbuf)) ++ if(datafile_exists("vswap.wl3")) + { + strcpy (extension, "wl3"); + NewEmenu[2].active = NewEmenu[4].active = EpisodeSelect[1] = EpisodeSelect[2] = 1; + } + else + { +- if(!stat("vswap.wl1", &statbuf)) ++ if(datafile_exists("vswap.wl1")) + strcpy (extension, "wl1"); + else + Quit ("NO WOLFENSTEIN 3-D DATA FILES to be found!"); +@@ -4116,28 +4117,28 @@ + #ifndef SPEARDEMO + if(param_mission == 0) + { +- if(!stat("vswap.sod", &statbuf)) ++ if(datafile_exists("vswap.sod")) + strcpy (extension, "sod"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); + } + else if(param_mission == 1) + { +- if(!stat("vswap.sd1", &statbuf)) ++ if(datafile_exists("vswap.sd1")) + strcpy (extension, "sd1"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); + } + else if(param_mission == 2) + { +- if(!stat("vswap.sd2", &statbuf)) ++ if(datafile_exists("vswap.sd2")) + strcpy (extension, "sd2"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); + } + else if(param_mission == 3) + { +- if(!stat("vswap.sd3", &statbuf)) ++ if(datafile_exists("vswap.sd3")) + strcpy (extension, "sd3"); + else + Quit ("NO SPEAR OF DESTINY DATA FILES TO BE FOUND!"); +@@ -4147,7 +4148,7 @@ + strcpy (graphext, "sod"); + strcpy (audioext, "sod"); + #else +- if(!stat("vswap.sdm", &statbuf)) ++ if(datafile_exists("vswap.sdm")) + { + strcpy (extension, "sdm"); + } diff --git a/games/wolf4sdl/patches/exename.diff b/games/wolf4sdl/patches/exename.diff new file mode 100644 index 0000000000..5ccaea752c --- /dev/null +++ b/games/wolf4sdl/patches/exename.diff @@ -0,0 +1,32 @@ +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_main.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_main.c 2023-01-17 21:39:16.439986452 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c 2023-01-17 22:45:03.503411046 -0500 +@@ -1608,6 +1608,10 @@ + bool hasError = false, showHelp = false; + bool sampleRateGiven = false, audioBufferGiven = false; + int i,defaultSampleRate = param_samplerate; ++ char *exename = argv[0], *p; ++ ++ for (p = argv[0]; *p; p++) ++ if (*p == '/') exename = p + 1; + + for(i = 1; i < argc; i++) + { +@@ -1814,7 +1818,7 @@ + "Wolf4SDL v2.0\n" + "Ported by Chaos-Software, additions by the community\n" + "Original Wolfenstein 3D by id Software\n\n" +- "Usage: Wolf4SDL [options]\n" ++ "Usage: %s [options]\n" + "Options:\n" + " --help This help page\n" + " --tedlevel <level> Starts the game in the given level\n" +@@ -1853,7 +1857,7 @@ + " (default: 0 -> .sod, 1-3 -> .sd*)\n" + " --goodtimes Disable copy protection quiz\n" + #endif +- , defaultSampleRate ++ , exename, defaultSampleRate + ); + exit(1); + } diff --git a/games/wolf4sdl/patches/gameplay.diff b/games/wolf4sdl/patches/gameplay.diff new file mode 100644 index 0000000000..0ce1851292 --- /dev/null +++ b/games/wolf4sdl/patches/gameplay.diff @@ -0,0 +1,270 @@ +diff -Naur wolf4sdl-2.0+20210408_f31f41a/id_in.c wolf4sdl-2.0+20210408_f31f41a.patched/id_in.c +--- wolf4sdl-2.0+20210408_f31f41a/id_in.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/id_in.c 2023-01-18 03:22:12.892051206 -0500 +@@ -393,6 +393,12 @@ + return Joystick != NULL; + } + ++boolean autorun = false; ++boolean autostrafe = false; ++/* This doesn't work yet. ++boolean mw_dn = false, mw_up = false; ++*/ ++ + static void processEvent(SDL_Event *event) + { + switch (event->type) +@@ -417,6 +423,34 @@ + + LastScan = event->key.keysym.sym; + SDL_Keymod mod = SDL_GetModState(); ++ ++ if ((mod & KMOD_LSHIFT) && (mod & KMOD_RSHIFT)) ++ { ++ autorun = !autorun; ++ ++ if (autorun) ++ Message ("Always Run: On"); ++ else ++ Message ("Always Run: Off"); ++ ++ IN_ClearKeysDown (); ++ IN_Ack (); ++ } ++ if (((mod & KMOD_LALT) && (mod & KMOD_RALT)) || ++ ((mod & KMOD_LALT) && (mod & KMOD_MODE)) || ++ ((mod & KMOD_LALT) && (mod & KMOD_RSHIFT))) ++ { ++ autostrafe = !autostrafe; ++ ++ if (autostrafe) ++ Message ("Always Strafe: On"); ++ else ++ Message ("Always Strafe: Off"); ++ ++ IN_ClearKeysDown (); ++ IN_Ack (); ++ } ++ + if(Keyboard(sc_Alt)) + { + if(LastScan==SDLK_F4) +@@ -426,6 +460,7 @@ + if(LastScan == SDLK_KP_ENTER) LastScan = SDLK_RETURN; + else if(LastScan == SDLK_RSHIFT) LastScan = SDLK_LSHIFT; + else if(LastScan == SDLK_RALT) LastScan = SDLK_LALT; ++ else if(LastScan == SDLK_MODE) LastScan = SDLK_LALT; /* AltGr */ + else if(LastScan == SDLK_RCTRL) LastScan = SDLK_LCTRL; + else + { +@@ -470,6 +505,7 @@ + if(key == SDLK_KP_ENTER) key = SDLK_RETURN; + else if(key == SDLK_RSHIFT) key = SDLK_LSHIFT; + else if(key == SDLK_RALT) key = SDLK_LALT; ++ else if(key == SDLK_MODE) key = SDLK_LALT; /* AltGr */ + else if(key == SDLK_RCTRL) key = SDLK_LCTRL; + else + { +@@ -497,6 +533,18 @@ + GP2X_ButtonUp(event->jbutton.button); + break; + #endif ++ ++ /* ++ case SDL_MOUSEWHEEL: ++ { ++ mw_dn = mw_up = false; ++ if (event->wheel.y < 0) ++ mw_dn = true; ++ else if(event->wheel.y > 0) ++ mw_up = true; ++ break; ++ } ++ */ + } + } + +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_def.h wolf4sdl-2.0+20210408_f31f41a.patched/wl_def.h +--- wolf4sdl-2.0+20210408_f31f41a/wl_def.h 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_def.h 2023-01-18 03:22:12.893051223 -0500 +@@ -949,6 +949,8 @@ + extern int param_mission; + extern boolean param_goodtimes; + extern boolean param_ignorenumchunks; ++extern boolean param_novert; ++extern boolean param_crosshair; + + + void NewGame (int difficulty, int episode); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_draw.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_draw.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_draw.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_draw.c 2023-01-18 03:22:12.893051223 -0500 +@@ -956,6 +956,17 @@ + SimpleScaleShape(viewwidth/2,SPR_DEMO,viewheight+1); + } + ++void DrawCrosshair (void) ++{ ++ if (gamestate.victoryflag || gamestate.weapon < wp_pistol) ++ return; ++ ++ const int c = (gamestate.health >= 50) ? 2 : (gamestate.health >= 25) ? 6 : 4; ++ const int h = (viewsize == 21 && ingame) ? screenHeight : screenHeight - scaleFactor * STATUSLINES; ++ ++ VL_Hlin (screenWidth / 2 - scaleFactor, h / 2, 2 * scaleFactor + 1, c); ++ VL_Vlin (screenWidth / 2, h / 2 - scaleFactor, 2 * scaleFactor + 1, c); ++} + + //========================================================================== + +@@ -1666,6 +1677,8 @@ + #endif + + DrawPlayerWeapon (); // draw player's hands ++ if (param_crosshair) ++ DrawCrosshair (); + + if(Keyboard(sc_Tab) && viewsize == 21 && gamestate.weapon != -1) + ShowActStatus(); +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_main.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_main.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_main.c 2023-01-18 03:40:19.681065262 -0500 +@@ -102,6 +102,10 @@ + int param_mission = 0; + boolean param_goodtimes = false; + boolean param_ignorenumchunks = false; ++boolean param_novert = false; ++boolean param_crosshair = false; ++extern boolean autorun; ++extern boolean autostrafe; + + /* + ============================================================================= +@@ -1644,6 +1648,28 @@ + fullscreen = false; + forcegrabmouse = true; + } ++ else IFARG("--novert") ++ { ++ param_novert = true; ++ } ++ else IFARG("--crosshair") ++ { ++ param_crosshair = true; ++ } ++ else IFARG("--strafe") ++ { ++ autostrafe = true; ++ } ++ else IFARG("--run") ++ { ++ autorun = true; ++ } ++ else IFARG("--modern") ++ { ++ autostrafe = true; ++ param_crosshair = true; ++ param_novert = true; ++ } + else IFARG("--res") + { + if(i + 2 >= argc) +@@ -1824,6 +1850,11 @@ + " --hard Sets the difficulty to hard for tedlevel\n" + " --nowait Skips intro screens\n" + " --windowed[-mouse] Starts the game in a window [and grabs mouse]\n" ++ " --novert Suppresses vertical mouse movement\n" ++ " --crosshair Shows a crosshair\n" ++ " --run Always run\n" ++ " --strafe Always strafe\n" ++ " --modern Same as --novert --crosshair --strafe\n" + " --res <width> <height> Sets the screen resolution\n" + " (must be multiple of 320x200 or 320x240)\n" + " --resf <w> <h> Sets any screen resolution >= 320x200\n" +diff -Naur wolf4sdl-2.0+20210408_f31f41a/wl_play.c wolf4sdl-2.0+20210408_f31f41a.patched/wl_play.c +--- wolf4sdl-2.0+20210408_f31f41a/wl_play.c 2023-01-17 21:39:16.000000000 -0500 ++++ wolf4sdl-2.0+20210408_f31f41a.patched/wl_play.c 2023-01-18 03:22:12.894051239 -0500 +@@ -260,10 +260,19 @@ + void PollKeyboardButtons (void) + { + int i; ++ extern boolean autorun; + + for (i = 0; i < NUMBUTTONS; i++) + if (Keyboard(buttonscan[i])) + buttonstate[i] = true; ++ ++ if (autorun) ++ { ++ if (Keyboard(buttonscan[bt_run])) ++ buttonstate[bt_run] = false; ++ else ++ buttonstate[bt_run] = true; ++ } + } + + +@@ -278,6 +287,9 @@ + void PollMouseButtons (void) + { + int buttons = IN_MouseButtons (); ++ /* ++ extern boolean mw_dn, mw_up; ++ */ + + if (buttons & 1) + buttonstate[buttonmouse[0]] = true; +@@ -285,6 +297,14 @@ + buttonstate[buttonmouse[1]] = true; + if (buttons & 4) + buttonstate[buttonmouse[2]] = true; ++ ++ /* This doesn't work, sadly. ++ if (mw_dn) ++ buttonstate[bt_prevweapon] = true; ++ if (mw_up) ++ buttonstate[bt_nextweapon] = true; ++ mw_dn = mw_up = false; ++ */ + } + + +@@ -320,15 +340,26 @@ + void PollKeyboardMove (void) + { + int delta = buttonstate[bt_run] ? RUNMOVE * tics : BASEMOVE * tics; ++ extern boolean autostrafe; + + if (Keyboard(dirscan[di_north])) + controly -= delta; + if (Keyboard(dirscan[di_south])) + controly += delta; + if (Keyboard(dirscan[di_west])) +- controlx -= delta; ++ { ++ if (autostrafe) ++ buttonstate[bt_strafeleft] = true; ++ else ++ controlx -= delta; ++ } + if (Keyboard(dirscan[di_east])) +- controlx += delta; ++ { ++ if (autostrafe) ++ buttonstate[bt_straferight] = true; ++ else ++ controlx += delta; ++ } + } + + +@@ -356,7 +387,8 @@ + #endif + + controlx += mousexmove * 10 / (13 - mouseadjustment); +- controly += mouseymove * 20 / (13 - mouseadjustment); ++ if (!param_novert) ++ controly += mouseymove * 20 / (13 - mouseadjustment); + } + + |