From 9d9bfd46286d795440a8d51adb5d3f6616f92417 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Fri, 11 May 2012 19:36:13 +0300 Subject: [PATCH 01/12] Revamp the build system This is bit WIP, but seems to work, at least for Linux... --- Makefile | 40 +--- include/video/avi/codec.hpp | 1 + manual.lyx | 338 +---------------------------- manual.txt | 163 +------------- options.build | 105 +++++++++ src/Makefile | 2 + src/video/Makefile | 2 - src/video/avi/Makefile | 2 +- src/video/avi/codec/Makefile | 2 +- src/video/avi/codec/audio/Makefile | 4 +- src/video/avi/codec/video/Makefile | 4 +- 11 files changed, 143 insertions(+), 520 deletions(-) create mode 100644 options.build diff --git a/Makefile b/Makefile index e01ee2e0..7b83b196 100644 --- a/Makefile +++ b/Makefile @@ -1,58 +1,38 @@ -CROSS_PREFIX= -DOT_EXECUTABLE_SUFFIX= -OBJECT_SUFFIX = o -ARCHIVE_SUFFIX = a -FONT_SRC := unifontfull-5.1.20080820.hex +OPTIONS=options.build +include $(OPTIONS) -USER_CFLAGS= -USER_LDFLAGS= #Compilers. -CC := g++ -LD := ld REALCC = $(CROSS_PREFIX)$(CC) REALLD = $(CROSS_PREFIX)$(LD) -HOSTCC = $(CC) #Flags. HOSTCCFLAGS = -std=gnu++0x CFLAGS = -I$(BSNES_PATH) -std=gnu++0x $(USER_CFLAGS) -LDFLAGS = -lboost_iostreams-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt -lz $(USER_LDFLAGS) - -#Platform -GRAPHICS=SDL -SOUND=SDL -JOYSTICK=SDL -THREADS=BOOST - -#bsnes -ifdef BSNES_VERSION -CFLAGS += -DBSNES_V$(BSNES_VERSION) +ifdef BOOST_NEEDS_MT +BOOST_LIB_POSTFIX= +else +BOOST_LIB_POSTFIX=-mt endif -#Threads -ifdef THREADS +LDFLAGS = -lboost_iostreams$(BOOST_LIB_POSTFIX) -lboost_filesystem$(BOOST_LIB_POSTFIX) -lboost_system$(BOOST_LIB_POSTFIX) -lboost_regex$(BOOST_LIB_POSTFIX) -lz $(USER_LDFLAGS) + ifeq ($(THREADS), NATIVE) CFLAGS += -DNATIVE_THREADS else ifeq ($(THREADS), BOOST) CFLAGS += -DBOOST_THREADS -ifdef BOOST_THREAD_LIB -LDFLAGS += -l$(BOOST_THREAD_LIB) -else -LDFLAGS += -lboost_thread-mt -endif +LDFLAGS += -lboost_thread$(BOOST_LIB_POSTFIX) else $(error "Bad value for THREADS (expected NATIVE or BOOST)") endif endif -endif ifdef BSNES_IS_COMPAT CFLAGS += -DBSNES_IS_COMPAT endif -export DOT_EXECUTABLE_SUFFIX OBJECT_SUFFIX ARCHIVE_SUFFIX FONT_SRC REALCC HOSTCC REALLD HOSTCCFLAGS CFLAGS LDFLAGS GRAPHICS SOUND JOYSTICK THREADS +export all: src/__all_files__ diff --git a/include/video/avi/codec.hpp b/include/video/avi/codec.hpp index c8046e08..f1cf22b2 100644 --- a/include/video/avi/codec.hpp +++ b/include/video/avi/codec.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "video/avi/structure.hpp" #include "video/avi/samplequeue.hpp" #include "video/avi/timer.hpp" diff --git a/manual.lyx b/manual.lyx index cba6fe38..9bff3756 100644 --- a/manual.lyx +++ b/manual.lyx @@ -77,11 +77,11 @@ bsnes libsnes \begin_deeper \begin_layout Enumerate -v084 or 085 +v084, v085, v086 or v087 \end_layout \begin_layout Enumerate -accuracy or compatiblity core. +accuracy or compatiblity core with debugger enabled. \end_layout \begin_layout Enumerate @@ -102,7 +102,7 @@ boost_filesystem \end_layout \begin_layout Enumerate -boost_thread +boost_thread (if native std::thread is not available) \end_layout \begin_layout Enumerate @@ -125,347 +125,33 @@ libswscale (wxwidgets graphics only) Portaudio (portaudio sound only) \end_layout -\begin_layout Enumerate -std::thread and co (for threaded dumper only, not needed if std::thread - is available) -\end_layout - \begin_layout Enumerate Lua (if Lua support is needed). \end_layout +\begin_deeper \begin_layout Itemize Version 5.1.X or 5.2X. \end_layout +\end_deeper +\begin_layout Enumerate +G++ 4.6 (bsnes doesn't seem to like 4.7). +\end_layout + \begin_layout Section Building \end_layout -\begin_layout Standard -Building is via makefile, the following options are available: -\end_layout - -\begin_layout Itemize -CROSS_PREFIX= -\end_layout - -\begin_deeper -\begin_layout Itemize -Prefix to apply to commands when building executables / object files for - the target architecture. - -\end_layout - -\begin_layout Itemize -Default is blank. -\end_layout - -\end_deeper -\begin_layout Itemize -CC= -\end_layout - -\begin_deeper -\begin_layout Itemize -Name of C++ compiler. -\end_layout - -\begin_layout Itemize -CROSS_PREFIX is prepended if compiling for target architecture. -\end_layout - -\begin_layout Itemize -This needs to be at least GCC 4.6. -\end_layout - -\begin_layout Itemize -Set to 'g++-mp-4.6' if compiling on Mac OS X using GCC 4.6 from Macports. -\end_layout - -\begin_layout Itemize -Default is 'g++'. -\end_layout - -\end_deeper -\begin_layout Itemize -HOSTCC= -\end_layout - -\begin_deeper -\begin_layout Itemize -Name of host C++ compiler. -\end_layout - -\begin_layout Itemize -Default is value of 'CC' option. -\end_layout - -\end_deeper -\begin_layout Itemize -USER_HOSTCCFLAGS=: -\end_layout - -\begin_deeper -\begin_layout Itemize -Compiler flags to pass when compiling/linking for host architecture. -\end_layout - -\begin_layout Itemize -Default is blank. -\end_layout - -\end_deeper -\begin_layout Itemize -USER_CFLAGS= -\end_layout - -\begin_deeper -\begin_layout Itemize -Extra flags to pass when compiling for target architecture -\end_layout - -\begin_layout Itemize -Default is blank. -\end_layout - -\end_deeper -\begin_layout Itemize -USER_LDFLAGS=: -\end_layout - -\begin_deeper -\begin_layout Itemize -Extra flags to pass when linking for target architecture. -\end_layout - -\begin_layout Itemize -Default is blank. -\end_layout - -\end_deeper -\begin_layout Itemize -USER_PLATFORM_CFLAGS= -\end_layout - -\begin_deeper -\begin_layout Itemize -Extra flags to pass when compiling files using platform-dependent code for - target architecture. -\end_layout - -\begin_layout Itemize -Default is blank. -\end_layout - -\end_deeper -\begin_layout Itemize -USER_PLATFORM_LDFLAGS= -\end_layout - -\begin_deeper -\begin_layout Itemize -Extra flags to pass when linking files using platform-dependent code for - target architecture. -\end_layout - -\begin_layout Itemize -Default is blank. -\end_layout - -\end_deeper -\begin_layout Itemize -FONT_SRC= -\end_layout - -\begin_deeper -\begin_layout Itemize -Set the font file to use. -\end_layout - -\begin_layout Itemize -Currently the valid values are: -\end_layout - -\begin_deeper -\begin_layout Itemize -cp437.hex: Standard VGA font (256 characters). -\end_layout - -\begin_layout Itemize -unifontfull-5.1.20080820.hex: GNU unifont (covers most of Unicode BMP) -\end_layout - -\end_deeper -\begin_layout Itemize -Default is 'unifontfull-5.1.20080820.hex' -\end_layout - -\end_deeper -\begin_layout Itemize -LUA= -\end_layout - -\begin_deeper -\begin_layout Itemize -Package to use for Lua support. -\end_layout - -\begin_layout Itemize -Usually valid value is 'lua' or 'lua5.1'. -\end_layout - -\begin_layout Itemize -Default is not to build Lua support. -\end_layout - -\end_deeper -\begin_layout Itemize -THREADS= -\end_layout - -\begin_deeper -\begin_layout Itemize -Override platform default for dumper threading support. -\end_layout - -\begin_layout Itemize -Threading is default on Linux. -\end_layout - -\begin_layout Itemize -'YES' tries to use threading (std::thread). -\end_layout - -\begin_layout Itemize -'BOOST' tries to use threading (boost::thread). -\end_layout - -\begin_layout Itemize -'NO' disables threading. -\end_layout - -\begin_layout Itemize -Note: This has absolutely nothing to do with platform threading. -\end_layout - -\end_deeper -\begin_layout Itemize -BSNES_IS_COMPAT= -\end_layout - -\begin_deeper -\begin_layout Itemize -Signals that BSNES core used is compatiblity core, not accuracy core. -\end_layout - -\begin_layout Itemize -Default is to assume accuracy core. -\end_layout - -\end_deeper -\begin_layout Itemize -SECRET_RABBIT_CODE= -\end_layout - -\begin_deeper -\begin_layout Itemize -Signals that SRC (a.k.a. - libsamplerate) should be used for high-quality samplerate conversions. -\end_layout - -\end_deeper -\begin_layout Itemize -JOYSTICK= -\end_layout - -\begin_deeper -\begin_layout Itemize -Set joystick implementation. - Valid values are: -\end_layout - -\begin_deeper -\begin_layout Itemize -SDL: Use SDL for joystick (requires SDL graphics) -\end_layout - -\begin_layout Itemize -EVDEV: Use EVDEV for joystick (Linux only). -\end_layout - -\begin_layout Itemize -WIN32MM: Use Win32mm for joystick (Windows only). -\end_layout - -\begin_layout Itemize -WXWIDGETS: Use Wxwidgets for joystick (requires WXWIDGETS graphics) -\end_layout - -\begin_layout Itemize -DUMMY: Disable joystick support. -\end_layout - -\end_deeper -\begin_layout Itemize -Default is SDL. -\end_layout - -\end_deeper -\begin_layout Itemize -SOUND= -\end_layout - -\begin_deeper -\begin_layout Itemize -Set sound implementation. - Valid values are: -\end_layout - -\begin_deeper -\begin_layout Itemize -SDL: Use SDL for sound (requires SDL graphics) -\end_layout - -\begin_layout Itemize -PORTAUDIO: Use Portaudio for sound. -\end_layout - -\begin_layout Itemize -DUMMY: Disable sound support -\end_layout - -\end_deeper -\begin_layout Itemize -Default is SDL. -\end_layout - -\end_deeper -\begin_layout Itemize -GRAPHICS= -\end_layout - -\begin_deeper -\begin_layout Itemize -Set windowing library to use. - Valid values are: -\end_layout - -\begin_deeper -\begin_layout Itemize -SDL: Use SDL for graphics -\end_layout - \begin_layout Itemize -WXWIDGETS: Use wxWidgets for graphics. +Edit options.build (or copy of that file) \end_layout -\end_deeper \begin_layout Itemize -Default is SDL. +Run make (passing 'OPTIONS=' if using something else than options.build +). \end_layout -\end_deeper \begin_layout Section Command line options \end_layout diff --git a/manual.txt b/manual.txt index 47a4488f..61f9d6df 100644 --- a/manual.txt +++ b/manual.txt @@ -6,9 +6,9 @@ lsnes is SNES rerecording emulator based on bsnes core. 1. bsnes libsnes - (a) v084 or 085 + (a) v084, v085, v086 or v087 - (b) accuracy or compatiblity core. + (b) accuracy or compatiblity core with debugger enabled. (c) Patched version (using included 6 patches) @@ -18,7 +18,7 @@ lsnes is SNES rerecording emulator based on bsnes core. 4. boost_filesystem -5. boost_thread +5. boost_thread (if native std::thread is not available) 6. libsdl (SDL only) @@ -30,163 +30,18 @@ lsnes is SNES rerecording emulator based on bsnes core. 10. Portaudio (portaudio sound only) -11. std::thread and co (for threaded dumper only, not needed if - std::thread is available) +11. Lua (if Lua support is needed). -12. Lua (if Lua support is needed). + • Version 5.1.X or 5.2X. -• Version 5.1.X or 5.2X. +12. G++ 4.6 (bsnes doesn't seem to like 4.7). 3 Building -Building is via makefile, the following options are available: +• Edit options.build (or copy of that file) -• CROSS_PREFIX= - - – Prefix to apply to commands when building executables / - object files for the target architecture. - - – Default is blank. - -• CC= - - – Name of C++ compiler. - - – CROSS_PREFIX is prepended if compiling for target - architecture. - - – This needs to be at least GCC 4.6. - - – Set to 'g++-mp-4.6' if compiling on Mac OS X using GCC 4.6 - from Macports. - - – Default is 'g++'. - -• HOSTCC= - - – Name of host C++ compiler. - - – Default is value of 'CC' option. - -• USER_HOSTCCFLAGS=: - - – Compiler flags to pass when compiling/linking for host - architecture. - - – Default is blank. - -• USER_CFLAGS= - - – Extra flags to pass when compiling for target architecture - - – Default is blank. - -• USER_LDFLAGS=: - - – Extra flags to pass when linking for target architecture. - - – Default is blank. - -• USER_PLATFORM_CFLAGS= - - – Extra flags to pass when compiling files using - platform-dependent code for target architecture. - - – Default is blank. - -• USER_PLATFORM_LDFLAGS= - - – Extra flags to pass when linking files using - platform-dependent code for target architecture. - - – Default is blank. - -• FONT_SRC= - - – Set the font file to use. - - – Currently the valid values are: - - ∗ cp437.hex: Standard VGA font (256 characters). - - ∗ unifontfull-5.1.20080820.hex: GNU unifont (covers most of - Unicode BMP) - - – Default is 'unifontfull-5.1.20080820.hex' - -• LUA= - - – Package to use for Lua support. - - – Usually valid value is 'lua' or 'lua5.1'. - - – Default is not to build Lua support. - -• THREADS= - - – Override platform default for dumper threading support. - - – Threading is default on Linux. - - – 'YES' tries to use threading (std::thread). - - – 'BOOST' tries to use threading (boost::thread). - - – 'NO' disables threading. - - – Note: This has absolutely nothing to do with platform - threading. - -• BSNES_IS_COMPAT= - - – Signals that BSNES core used is compatiblity core, not - accuracy core. - - – Default is to assume accuracy core. - -• SECRET_RABBIT_CODE= - - – Signals that SRC (a.k.a. libsamplerate) should be used for - high-quality samplerate conversions. - -• JOYSTICK= - - – Set joystick implementation. Valid values are: - - ∗ SDL: Use SDL for joystick (requires SDL graphics) - - ∗ EVDEV: Use EVDEV for joystick (Linux only). - - ∗ WIN32MM: Use Win32mm for joystick (Windows only). - - ∗ WXWIDGETS: Use Wxwidgets for joystick (requires WXWIDGETS - graphics) - - ∗ DUMMY: Disable joystick support. - - – Default is SDL. - -• SOUND= - - – Set sound implementation. Valid values are: - - ∗ SDL: Use SDL for sound (requires SDL graphics) - - ∗ PORTAUDIO: Use Portaudio for sound. - - ∗ DUMMY: Disable sound support - - – Default is SDL. - -• GRAPHICS= - - – Set windowing library to use. Valid values are: - - ∗ SDL: Use SDL for graphics - - ∗ WXWIDGETS: Use wxWidgets for graphics. - - – Default is SDL. +• Run make (passing 'OPTIONS=' if using something else + than options.build). 4 Command line options diff --git a/options.build b/options.build new file mode 100644 index 00000000..9845dcda --- /dev/null +++ b/options.build @@ -0,0 +1,105 @@ +# Prefix to apply to commands for building stuff for target architecture. +CROSS_PREFIX= + +# Postfix for object files +OBJECT_SUFFIX=o + +# Postfix for archive files +OBJECT_SUFFIX=a + +# Postfix (including possible '.') for executable files. +DOT_EXECUTABLE_SUFFIX= + +# C++ compiler (GCC 4.6) +# CROSS_PREFIX is prepended. +CC=g++-4.6 + +# Linker +# CROSS_PREFIX is prepended. +LD=ld + +# Host C++ compiler +HOSTCC=CC + +# Host C++ compiler/linker flags. +USER_HOSTCCFLAGS= + +# C++ complier extra flags. +USER_CFLAGS=-g + +# Linker extra flags. +USER_LDFLAGS= + +# C++ compiler extra flags for platform code. +USER_PLATFORM_CFLAGS= + +# Linker extra flags for platform code. +USER_PLATFORM_LDFLAGS= + +# The name of font file to use. +# Currently supported: +# - cp437.hex: Standard VGA font (256 characters). +# - unifontfull-5.1.20080820.hex: GNU unifont (covers most of Unicode BMP) +FONT_SRC=unifontfull-5.1.20080820.hex + +# Lua package to use. +# - Usually either 'lua' or 'lua5.1'. +# - Empty value disables Lua support. +LUA=lua + +# Threading package to use. +# Currently supported: +# - NATIVE: std::thread +# - BOOST: boost_thread +THREADS=BOOST + +# Graphics library to use. +# Currently supported: +# - SDL: Simple Directmedia Layer. +# - WXWIDGETS: wxWidgets +GRAPHICS=WXWIDGETS + +# Sound library to use. +# Currently supported: +# - DUMMY: No sound. +# - SDL: Simple Directmedia Layer (GRAPHICS=SDL only). +# - PORTAUDIO: Portaudio. +SOUND=PORTAUDIO + +# Joystick library to use. +# Currently supported: +# - DUMMY: No joystick. +# - EVDEV: EVDEV (Linux only) +# - WIN32MM: Windows Multimedia (Win32 only). +# - SDL: Simple Directmedia Layer (GRAPHICS=SDL only). +# - WXWIDGETS: wxWidgets (GRAPHICS=WXWIDGETS only) +JOYSTICK=DUMMY + +# Enable use of Secret Rabbit Code (a.k.a. libsamperate). +# Set to non-blank (e.g. 'yes') to enable. +SECRET_RABBIT_CODE= + +# Path to bsnes for includes/library. +# Edit this to whatever is appropriate (it needs to point to the bsnes directory that was alongside other top-level +# bsnes directories, but those directories themselves are not needed). +BSNES_PATH=bsnes/bsnes + +# Bsnes version used. +# 087 has different layout from the rest. +BSNES_VERSION=085 + +# Bsnes build uses compatiblity core, not accuracy core. +# Set to non-empty value (e.g. 'yes') if so. +BSNES_IS_COMPAT= + +# Do boost libraries need the '-mt' prefix? +# Set to non-empty value (e.g. 'yes') if so. +BOOST_NEEDS_MT= + +# Does the linker not need -rdynamic to export the symbols? +# Set to non-empty value (e.g. 'yes') if so. +NO_RDYNAMIC= + +# Disable use of DLFCN. +# Set to non-empty value (e.g. 'yes') if so. +NO_DLFCN= diff --git a/src/Makefile b/src/Makefile index 0dac097e..84d7ef06 100644 --- a/src/Makefile +++ b/src/Makefile @@ -7,6 +7,8 @@ LDFLAGS += -rdynamic endif ifdef NO_DLFCN CFLAGS += -DNO_DLFCN +else +LDFLAGS += -ldl endif DUMMY_LIBRARY=core lua fonts library video dummy diff --git a/src/video/Makefile b/src/video/Makefile index 4af4b14a..b1d13c2a 100644 --- a/src/video/Makefile +++ b/src/video/Makefile @@ -7,8 +7,6 @@ endif .PRECIOUS: %.$(OBJECT_SUFFIX) -export VIDEO_CFLAGS - __all__.$(OBJECT_SUFFIX): $(OBJECTS) $(REALLD) -r -o $@ $^ echo $(AVI_LDFLAGS) >__all__.ldflags diff --git a/src/video/avi/Makefile b/src/video/avi/Makefile index d84c9fae..5cb6b457 100644 --- a/src/video/avi/Makefile +++ b/src/video/avi/Makefile @@ -9,7 +9,7 @@ codec/__all__.o: forcelook $(MAKE) -C codec %.$(OBJECT_SUFFIX): %.cpp - $(REALCC) $(CFLAGS) -c -o $@ $< -I../../../include $(VIDEO_CLFAGS) + $(REALCC) $(CFLAGS) -c -o $@ $< -I../../../include forcelook: @true diff --git a/src/video/avi/codec/Makefile b/src/video/avi/codec/Makefile index a9847b71..b8255f61 100644 --- a/src/video/avi/codec/Makefile +++ b/src/video/avi/codec/Makefile @@ -12,7 +12,7 @@ video/__all__.$(OBJECT_SUFFIX): forcelook $(MAKE) -C video %.$(OBJECT_SUFFIX): %.cpp - $(REALCC) $(CFLAGS) -c -o $@ $< -I../../include $(VIDEO_CLFAGS) + $(REALCC) $(CFLAGS) -c -o $@ $< -I../../include forcelook: @true diff --git a/src/video/avi/codec/audio/Makefile b/src/video/avi/codec/audio/Makefile index 3ecebf30..3a34de28 100644 --- a/src/video/avi/codec/audio/Makefile +++ b/src/video/avi/codec/audio/Makefile @@ -2,13 +2,11 @@ OBJECTS=$(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard *.cpp)) .PRECIOUS: %.$(OBJECT_SUFFIX) -export VIDEO_CFLAGS - __all__.o: $(OBJECTS) $(REALLD) -r -o $@ $^ %.$(OBJECT_SUFFIX): %.cpp - $(REALCC) $(CFLAGS) -c -o $@ $< -I../../../../../include $(VIDEO_CLFAGS) + $(REALCC) $(CFLAGS) -c -o $@ $< -I../../../../../include precheck: @true diff --git a/src/video/avi/codec/video/Makefile b/src/video/avi/codec/video/Makefile index 3ecebf30..3a34de28 100644 --- a/src/video/avi/codec/video/Makefile +++ b/src/video/avi/codec/video/Makefile @@ -2,13 +2,11 @@ OBJECTS=$(patsubst %.cpp,%.$(OBJECT_SUFFIX),$(wildcard *.cpp)) .PRECIOUS: %.$(OBJECT_SUFFIX) -export VIDEO_CFLAGS - __all__.o: $(OBJECTS) $(REALLD) -r -o $@ $^ %.$(OBJECT_SUFFIX): %.cpp - $(REALCC) $(CFLAGS) -c -o $@ $< -I../../../../../include $(VIDEO_CLFAGS) + $(REALCC) $(CFLAGS) -c -o $@ $< -I../../../../../include precheck: @true From 823cc94fb1a8d874bee350e63e8ef70f0950a075 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Fri, 11 May 2012 19:37:06 +0300 Subject: [PATCH 02/12] Add autohold for 1 frame (framehold) commands --- include/core/controllerframe.hpp | 21 +++++++++++++++++++++ manual.lyx | 9 +++++++++ manual.txt | 9 +++++++-- src/core/controller.cpp | 29 +++++++++++++++++++++++++---- src/core/controllerframe.cpp | 21 +++++++++++++++++++-- src/core/mainloop.cpp | 1 + 6 files changed, 82 insertions(+), 8 deletions(-) diff --git a/include/core/controllerframe.hpp b/include/core/controllerframe.hpp index 5d60f197..51ac8e3b 100644 --- a/include/core/controllerframe.hpp +++ b/include/core/controllerframe.hpp @@ -1131,6 +1131,26 @@ public: * Returns: The state of autohold. */ bool autohold(unsigned pcid, unsigned pbid) throw(); +/** + * Reset all frame holds. + */ + void reset_framehold() throw(); +/** + * Manipulate hold for frame. + * + * Parameter pcid: The physical controller ID to manipulate. + * Parameter pbid: The physical button ID to manipulate. + * Parameter newstate: The new state for framehold. + */ + void framehold(unsigned pcid, unsigned pbid, bool newstate) throw(); +/** + * Query hold for frame. + * + * Parameter pcid: The physical controller ID to query. + * Parameter pbid: The physical button ID to query. + * Returns: The state of framehold. + */ + bool framehold(unsigned pcid, unsigned pbid) throw(); /** * Manipulate button. * @@ -1177,6 +1197,7 @@ private: bool analog_mouse[MAX_ANALOG]; controller_frame _input; controller_frame _autohold; + controller_frame _framehold; controller_frame _committed; std::vector _autofire; }; diff --git a/manual.lyx b/manual.lyx index 9bff3756..6908ae37 100644 --- a/manual.lyx +++ b/manual.lyx @@ -1328,6 +1328,15 @@ Hold/unhold button