Fett263 Battle Mode for ProffieOS5.7 or later

Fett263

"Battle Mode" for Proffieboard allows you take your lightsaber controls to the next level. In Battle Mode, the saber responds to the movements and events for more "realism" and doesn't need buttons to initiate and use Lockup, Clash, Drag or Melt. Instead of using buttons the control for these effects are based on gestures and movement, giving you more immersion into using your saber. I've also added features like Multi-Blast Mode and Force Push, to give even more control and interaction. Battle Mode requires ProffieOS5.7 or later and a prop (button) file that supports it. This page describes my prop file, saber_fett263_buttons.h which only supports 2 button sabers. If you have a 1 button saber you can find support for them with sa22c and shtok button files on the Facebook groups or TRA forum. Those files are not in the ProffieOS5.7 download, they have to be added separately.

If you like what you see be sure to visit and subscribe to my YouTube channel to keep up to date with the latest styles and tutorials and upcoming LIVE events.

 

If you'd like to contribute I have a Donate button as a voluntary option as some have suggested. This is purely an option for those that would like to or who are able to give a little, you can use these resources whether you donate or not. There is no obligation either way, if you are able to donate I greatly appreciate it and "Thank you" in advance.

 

ProffieOS: Control software for lightsabers and other props.
http://fredrik.hubbe.net/lightsaber/teensy_saber.html
Copyright (c) 2016-2019 Fredrik Hubinette

"Battle Mode" and "Prop" file designed for ProffieOS:
Copyright (c) 2018-2021 Fernando da Rosa

License information for ProffieOS and related styles: https://github.com/profezzorn/ProffieOS/blob/master/LICENCE.txt


ProffieOS5.6 "Battle Mode" with "Smart Lockup, Drag, Melt" / "Multi-Phase" Introduction

I've expanded the "Battle Mode" concept to now include Drag and Melt effects using only gestures in addition to the "Smart Lockup". For Alpha testing I'm leaving these as part of "Battle Mode" so you can enable or disable for testing or use.

Visit here for more information: https://therebelarmory.com/thread/12475/proffieos5-battle-gesture-control-testing

Refer to the manual pg 25 for using custom prop files. (example config at bottom)

-----------------------------------
#ifdef CONFIG_PROP
#include "../props/saber_fett263_buttons.h"
#endif

--------------------------------------

New features: 

- "Battle Mode" - gesture controlled Lockup, Melt, Drag 

- "Force Push" - a new gesture during Battle Mode, pushing your hilt towards you opponent quickly will trigger a force push sound (push.wav or force.wav) (this is optional with a define)

- Gesture Ignitions and Retractions - Swing On, Stab On, Thrust On and Twist On with Twist Off

- "Fast On" for Gesture Ignitions - ignored preon.wav and Preon effects and just ignites the blade on a gesture movement. By default all Gesture Ignitions will use Fast On and ignore Preon sounds and effects (this is customizable with defines if you want to enable Preons with Gestures)

- On Demand "Power Save" and "Battery Level" effects - enable a dimming effect on your presets (via styles) to dim the blade brightness and save power on demand and view your current Battery Level with a custom style with a button press.

- Multi-Phase - change presets while the blade is ignited

- Multi-Blast Mode (from OS4.8 but can be used with Battle Mode) - activate to enable a blast effect for every blade swing/deflection

- New Mode, Menu and Feature sound effects (add these new sounds to your font/preset for additional customization)

   On Demand Power Save - dim.wav

   On Demand Battery Level - battery.wav

   Battle Mode On (on toggle) - bmbegin.wav

   Battle Mode Off (on toggle) - bmend.wav

   Enter Volume Menu - vmbegin.wav

   Exit Volume Menu - vmend.wav

   Fast On (optional) - faston.wav

   Multi-Blast Mode On - blstbgn.wav

   Multi-Blast Mode Off - blstend.wav

and much more...

While in Battle Mode - Lockup, Drag and Melt are all controlled by gestures only, no buttons are needed:


- Lockup is initiated with a clash, if you hold your saber against your opponent's (or keep relatively still) Lockup will be active, to disengage Lockup you will pull your saber away from the opponents. During Lockup you can move your saber against your opponents and the Responsive effects will still respond to blade angle as you "struggle" the "pull away" motion is a deliberate change in angle (this can take a little practice). 

- Clash in "Battle Mode" is actually Begin Lockup/End Lockup in quick succession based on clashing your saber and pulling away immediately. As a result, your style needs to include LOCKUP_BEGIN and LOCKUP_END transitions, the combination of these transitions will create your "clash" effect. I have updated my library to now allow you to choose several options for both the begin and end Lockup in the Enhancement screen. You can mix and match as you like although some combinations work better together than others so test and decide for yourself. NOTE: bgnlock.wav and endlock.wav will be used, in testing you can rename your clsh.wav sounds to bgnlock.wav to your preference, some work better than others so it's ultimately up to the user. While in Battle Mode your actual Clash effects and Sounds are not used. I have timed out the Begin and End transitions on the library but you can customize to shorten or lengthen the visual effect, there is also a control factor in that if you don't pull away immediately the actual Lockup effect will appear so learning to control the saber is a part of the effect.

- Note: OS5.7 introduced a "glancing" clash effect. In Battle Mode we've added the normal clash to instances where you glance against an opponents blade or object or you swing through the clash. The idea was if you just glance an opponents blade but swing through you wouldn't want a Lockup to occur, so the new update will use traditional clash effects if you swing through the clash or continue your swing after the clash. The blade will still go into Begin Lockup if your blade is stopped or slows with the clash. So in instances where you just glance against the opponent you'll get a clash effect even in Battle Mode, but if you make a full impact and the blade stops from your opponent blocking your blade it will use the Begin Lockup/End Lockup as clash if you hit and pull away or continue with the Lockup if you hold against the opponents blade after they block.

- There is a new threshold for use with the Battle Mode features, it mostly affects "Lockup/Clash" as when you normally clash two sabers together there is a "bounce" that happens, the threshold wil let you ignore the "bounce" so Lockup can properly engage but if you have it too high then "clash" is harder to perform. I have defaulted to the "Goldilocks" zone I found in testing. If you wish to change you will use:

#define FETT263_LOCKUP_DELAY 200 

(200 is the default, increasing will allow for more time to determine Lockup, decreasing will shorten)


This works in conjunction with the CLASH_THRESHOLD_G define, CLASH_THRESHOLD is the level to recognize the clash/stab event occured if the effects trigger too easily you will increase this value, if they are not triggering easily you will lower this value. After the Clash occurs the LOCKUP_THRESHOLD is used as noted above. The combination of these two thresholds is then used with your control of the saber for "pulling away" and the styles in your preset to create Clash/Lockup.


- Drag in "Battle Mode" is activated by Stabbing down, this is to allow you to clash and lockup with your blades below horizontal like in the films. The Stab motion is a linear thrust down with contact (or an abrupt end). While Drag is active you can "drag" it along the floor to intimidate your opponent. To disengage Drag you only need to lift the blade from the floor at an angle. Drag (and Melt) have a lower threshold than Lockup so you won't need as deliberate a movement to "pull away".


- Melt in "Battle Mode" is activated by stabbing horizontal or up, you can use the Responsive Melt to heat up the surface by turning your hilt and you can drag your saber along the wall/object, to disengage Melt you will pull away from the wall or object at an angle.


NOTE: Stab is not active during Battle Mode, if you do a quick Melt/Drag and pull away you can get a quasi-Stab effect. To use Stab (particularly for the new Summon and Release effects) you will exit "Battle Mode" by holding Aux and Swinging.


DEFAULT 2 BUTTON CONTROLS (PWR and AUX):


"Battle Mode" - hold AUX and Swing while blade is ON to toggle mode ON/OFF

Ignite (ON) - click PWR while OFF (Swing On, Twist On and Stab On available with defines)

Muted Ignition (ON) - double click PWR while OFF

Retract (OFF) - click PWR while ON (disabled during swinging, Twist Off available with define)

Play Music Track - hold and release PWR while OFF, hold and release PWR with blade pointing straight up while ON

Blast - click AUX while ON

Multi-Blast Mode - hold and release AUX while ON to enter mode, Swing to initiate Blasts, click Aux to exit mode

lockup, clash, stab, melt, drag or any button presses automatically exits mode

Clash - clash blade while ON

in Battle Mode clash and pull away quickly for "Clash" (requires BEGIN_LOCKUP and END_LOCKUP styles)

Lockup - hold AUX and clash while ON

in Battle Mode clash and hold steady to activate, pull away to disengage

Drag - hold AUX and stab down while ON

in Battle Mode stab down, pull away to disengage

Melt - hold PWR (or AUX) and thrust forward and clash while ON in Battle Mode thrust and clash to engage, pull away to disengage

Lightning Block - hold PWR and click AUX while ON

Force - hold and release PWR while ON

Stab - thrust forward and clash blade while ON - deactivated in 

Battle Mode

Power Save - hold Aux and click PWR while ON (pointing up) to use Power Save (requires style)

Color Change - hold AUX and click PWR while ON (parallel or down) to enter CCWheel, turn hilt to rotate through colors, click PWR to select/exit if using COLOR_CHANGE_DIRECT each button press advances one Color at a time

Next Preset - click AUX while OFF (parallel or up)

Previous Preset - click Aux while OFF (pointing down)

MULTI_PHASE Next Preset - hold AUX and TWIST while ON (use define to enable)

MULTI_PHASE Previous Preset - hold PWR and TWIST while ON (use define to enable)

Battery Level - hold AUX and click PWR while OFF (requires style)

Enter SA22C Volume Menu - hold and release AUX while OFF

Volume Up (10% increment, 100% max) - click PWR while in Volume Menu while OFF

Volume Down (10% increment) - click AUX while in Volume Menu while OFF

Exit Volume Menu - hold and release AUX while in Volume Menu while OFF



OPTIONAL DEFINES (added to CONFIG_TOP in config.h file)



#define FETT263_BATTLE_MODE_ALWAYS_ON

Battle Mode is always on, toggle controls deactivated

This will disable traditional Clash and Stab effects

(cannot be used with #define FETT263_BATTLE_MODE_START_ON)



or



#define FETT263_BATTLE_MODE_START_ON

Battle Mode is active with each ignition by default but can be toggled using Aux + Swing control 

(cannot be used with #define FETT263_BATTLE_MODE_ALWAYS_ON)



#define FETT263_LOCKUP_DELAY 200

This is the "delay" in millis to determine Clash vs Lockup



#define FETT263_BM_DISABLE_OFF_BUTTON

During Battle Mode Power Button Retraction is disabled



#define FETT263_SWING_ON

To enable Swing On Ignition control (automatically enters Battle Mode, uses Fast On)



or



#define FETT263_SWING_ON_PREON

Disables Fast On ignition for Swing On so Preon is used (cannot be used with #define FETT263_SWING_ON)



#define FETT263_SWING_ON_NO_BM

To enable Swing On Ignition control but not activate Battle Mode

(Combine with #define FETT263_SWING_ON or FETT263_SWING_ON_PREON, cannot be used with #define FETT263_BATTLE_MODE_ALWAYS_ON or #define FETT263_BATTLE_MODE_START_ON)



#define FETT263_SWING_ON_SPEED 250

Adjust Swing Speed required for Ignition 250 ~ 500 recommended



#define FETT263_TWIST_OFF

To enable Twist Off Retraction control



#define FETT263_TWIST_ON

To enable Twist On Ignition control (automatically enters Battle Mode, uses Fast On)



or



#define FETT263_TWIST_ON_PREON

Disables Fast On ignition for Twist On so Preon is used (cannot be used with #define FETT263_TWIST_ON)



#define FETT263_TWIST_ON_NO_BM

To enable Twist On Ignition control but not activate Battle Mode

(Combine with #define FETT263_TWIST_ON or FETT263_TWIST_ON_PREON, cannot be used with #define FETT263_BATTLE_MODE_ALWAYS_ON or #define FETT263_BATTLE_MODE_START_ON)



#define FETT263_STAB_ON

To enable Stab On Ignition control (automatically enters Battle Mode, uses Fast On)



or



#define FETT263_STAB_ON_PREON

Disables Fast On ignition for Stab On so Preon is used (cannot be used with #define FETT263_STAB_ON)



#define FETT263_STAB_ON_NO_BM

To enable Stab On Ignition control but not activate Battle Mode

(Combine with #define FETT263_STAB_ON or FETT263_STAB_ON_PREON, cannot be used with #define FETT263_BATTLE_MODE_ALWAYS_ON or #define FETT263_BATTLE_MODE_START_ON)



#define FETT263_THRUST_ON

To enable Thrust On Ignition control (automatically enters Battle Mode, uses Fast On)



or



#define FETT263_THRUST_ON_PREON

Disables Fast On ignition for Thrust On so Preon is used (cannot be used with #define FETT263_THRUST_ON)



#define FETT263_THRUST_ON_NO_BM

(Combine with #define FETT263_THRUST_ON or FETT263_THRUST_ON_PREON, cannot be used with #define FETT263_BATTLE_MODE_ALWAYS_ON or #define FETT263_BATTLE_MODE_START_ON)



#define FETT263_FORCE_PUSH

To enable gesture controlled Force Push during Battle Mode

(will use push.wav or force.wav if not present)

#define FETT263_FORCE_PUSH_ALWAYS_ON

To enable gesture controlled Force Push full time

(will use push.wav or force.wav if not present)

 

#define FETT263_FORCE_PUSH_LENGTH 5

Allows for adjustment to Push gesture length in millis needed to trigger Force Push Recommended range 1 ~ 10, 1 = shortest, easiest to trigger, 10 = longest



#define FETT263_MULTI_PHASE

This will enable a preset change while ON to create a "Multi-Phase" saber effect



#define MOTION_TIMEOUT 60 * 15 * 1000

This extends the motion timeout to 15 minutes to allow gesture ignition to remain active 

Increase/decrease the "15" value as needed


EXAMPLE LAYERS for EFFECT_POWERSAVE (required in preset to enable)

These are completely customizable or you can build your own, these are just a few examples, these layers can be added to your styles over any layers you want dimmed:

10% incremental dimming

EffectSequence<EFFECT_POWERSAVE,AlphaL<Black,Int<3277>>,AlphaL<Black,Int<6554>>,AlphaL<Black,Int<9831>>,AlphaL<Black,Int<13108>>,AlphaL<Black,Int<16385>>,AlphaL<Black,Int<19662>>,AlphaL<Black,Int<22939>>,AlphaL<Black,Int<26216>>,AlphaL<Black,Int<29493>>,AlphaL<Black,Int<0>>>,
25% incremental dimming layer


EffectSequence<EFFECT_POWERSAVE,AlphaL<Black,Int<8192>>,AlphaL<Black,Int<16384>>,AlphaL<Black,Int<24576>>,AlphaL<Black,Int<0>>>,

50% dimming layer (on/off)


EffectSequence<EFFECT_POWERSAVE,AlphaL<Black,Int<16384>>,AlphaL<Black,Int<0>>>,

 

"Multi-Phase"

In addition, the "Multi-Phase" live preset change is also available in this prop file.

With "Multi-Phase" enabled you can perform live preset changes without retracting your blade. To go to the next preset you will hold Aux and Twist, this will advance to the next preset and your font.wav will play. You can also go to the previous preset using PWR + Twist. This can be used to cycle through your presets with the blade lit similar to Corran Horn's Dual Phase saber or the Jedi Fallen Order saber in the demo video.

To enable you will add this define to the top of your config (example below):

#define FETT263_MULTI_PHASE

"Multi-Phase" is separate from color change as you're actually changing presets. Within each preset you can still use the normal Color Change functionality.

Example Config (some defines and settings may differ in your config) - highlighted defines, etc. are required, others are optional:


#ifdef CONFIG_TOP
#include "proffieboard_v1_config.h"
#define NUM_BLADES 1
#define NUM_BUTTONS 2
#define VOLUME 1200
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 2.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define COLOR_CHANGE_DIRECT
#define DISABLE_DIAGNOSTIC_COMMANDS
#define FETT263_SWING_ON
#define FETT263_TWIST_OFF
#define FETT263_FORCE_PUSH
#define FETT263_LOCKUP_DELAY 200
#define FETT263_THRUST_ON
#define FETT263_TWIST_ON
#define MOTION_TIMEOUT 60 * 15 * 1000
#define FETT263_MULTI_PHASE
#endif

#ifdef CONFIG_PROP
#include "../props/saber_fett263_buttons.h"
#endif

#ifdef CONFIG_PRESETS...
--------------------------------------------------------------

Gesture Controls for ProffieOS5

Gesture Controls