#ifdef CONFIG_TOP #include "proffieboard_v2_config.h" #define NUM_BLADES 2 #define NUM_BUTTONS 1 #define VOLUME 500 const unsigned int maxLedsPerStrip = 144; #define CLASH_THRESHOLD_G 3.0 #define ENABLE_AUDIO #define ENABLE_MOTION #define ENABLE_WS2811 #define ENABLE_SD #define ENABLE_SERIAL #define COLOR_CHANGE_DIRECT #define DISABLE_DIAGNOSTIC_COMMANDS #define IDLE_OFF_TIME 60*5*1000 #define SAVE_STATE #define SPEAK_BLADE_ID #define FETT263_SPECIAL_ABILITIES #define FETT263_SAY_BATTERY_PERCENT #endif #ifdef CONFIG_PROP #include "../props/saber_fett263_buttons.h" #endif #ifdef CONFIG_PRESETS Preset presets[] = { { "Torchbearer;common", "tracks/venus.wav", StylePtr,Int<0>>,TrInstant,TrWipeX>>,Mix,Scale,Int<50>,Int<500>>,Scale,Int<20000>,Int<10000>>>,RandomFlicker,Scale,Scale,Int<50>,Int<300>>,Scale,Int<24000>,Int<16000>>>,Int<-3200>,Int<-200>>,RgbArg>,RgbArg>,Mix,Black,RgbArg>>,RgbArg>,Mix,Black,RgbArg>>>,RgbArg>>,RgbArg>>,Mix,Scale,Int<50>,Int<500>>,Scale,Int<20000>,Int<10000>>>,RandomFlicker,Scale,Scale,Int<50>,Int<300>>,Scale,Int<24000>,Int<16000>>>,Int<-3200>,Int<-200>>,RgbArg>,RgbArg>,Mix,Black,RgbArg>>,RgbArg>,Mix,Black,RgbArg>>>,RgbArg>>,RgbArg>>>,TransitionEffectL>,Scale,Int<100>,Int<400>>,Int<100>,Scale,Int<100>,Int<400>>,Scale,Int<28000>,Int<8000>>>,EFFECT_BLAST>,TransitionEffectL,TrInstant>,Rgb<255,174,0>,TrFade<0>>,EFFECT_CLASH>,LockupTrL,Scale,Sum,Int<-12000>>,Sum,Int<10000>>>,Sum,Int<-10000>>>,Scale,Int<14000>,Int<22000>>>,AudioFlicker>,Mix,Black,RgbArg>>>,BrownNoiseFlicker>,Mix,Black,RgbArg>>,300>>,Bump,Scale,Sum,Int<-12000>>,Sum,Int<10000>>>,Sum,Int<-10000>>>,Scale,Int<14000>,Int<22000>>>>,AlphaL>,Mix,Black,RgbArg>>>,Bump,Scale,Sum,Int<-12000>>,Sum,Int<10000>>>,Sum,Int<-10000>>>,Scale,Int<14000>,Int<18000>>>>,TrExtend<5000,TrInstant>,TrFade<5000>,EFFECT_LOCKUP_BEGIN>,TrConcat,TrInstant>,Mix,Int<26000>>,RgbArg>,AlphaL>,Bump,Scale,Sum,Int<-12000>>,Sum,Int<10000>>>,Sum,Int<-10000>>>,Scale,Int<20000>,Int<60000>>>>>,TrFade<300>>,TrConcat>,TrFade<400>>,SaberBase::LOCKUP_NORMAL,Int<1>>,ResponsiveLightningBlockL>,AudioFlicker>,Blue>,50,1>,TrConcat,AlphaL>,Bump,Int<10000>,Int<21000>>,Int<10000>>>,TrFade<200>>,TrConcat>,TrFade<400>>,Int<1>>,LockupTrL>>,BrownNoiseFlickerL>,Int<300>>,TrExtend<4000,TrInstant>,TrFade<4000>,EFFECT_DRAG_BEGIN>,SmoothStep,IntArg,Int<30000>>,Int<3000>>>,TrWipeIn<200>,TrWipe<200>,SaberBase::LOCKUP_DRAG,Int<1>>,LockupTrL,RgbArg>,RotateColorsX,RgbArg>>>,Mix>,Black,Mix,RgbArg>,RotateColorsX,RgbArg>>>>,Mix,Black,Mix,RgbArg>,RotateColorsX,RgbArg>>>>>,SmoothStep,IntArg,Int<30000>>,Int<3000>>>,TrConcat>,AlphaL,RgbArg>,RotateColorsX,RgbArg>>>,RotateColorsX,Mix,RgbArg>,RotateColorsX,RgbArg>>>>,100>,SmoothStep,IntArg,Int<30000>>,Int<3000>>>,TrFade<4000>>,TrWipe<200>,SaberBase::LOCKUP_MELT,Int<1>>,InOutTrL,Mult,Int<98304>>>>,TrWipeInX,Mult,Int<98304>>>>,Black>>>(), StylePtr(), "white"}, { "ANHGraflex;common", "tracks/BinarySunset.wav", StylePtr>,RotateColorsX>>,TransitionEffectL,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrDelay<1500>,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrFade<800>>,EFFECT_FORCE>,TransitionEffectL>,Int<50>>,TrSmoothFade<600>>,EFFECT_LOCKUP_END>,ResponsiveLockupL,50,1>,TrConcat>,TrFade<100>,Scale,Int<4000>,Int<26000>>,Int<6000>,Scale,Int<10000>,Int<14000>>>,ResponsiveLightningBlockL,50,1>,TrConcat,Int<18000>>>,TrFade<200>>,TrConcat>,30>,TrSmoothFade<600>>>,ResponsiveStabL,TrWipe<600>>,ResponsiveBlastL,Scale,Int<100>,Int<400>>,Int<400>>,SimpleClashL,LockupTrL>,SmoothStep,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL,Rgb<255,200,0>,DarkOrange>,SmoothStep,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>,InOutTrL,TrWipeIn<400>,Black>>>(), StylePtr(), "white"}, { "Survivor;common", "tracks/CalTheme.wav", StylePtr,RotateColorsX>>,TransitionEffectL,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrDelay<1500>,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrFade<800>>,EFFECT_FORCE>,TransitionEffectL>,Int<50>>,TrSmoothFade<600>>,EFFECT_LOCKUP_END>,ResponsiveLockupL,50,1>,TrConcat>,TrFade<100>,Scale,Int<4000>,Int<26000>>,Int<6000>,Scale,Int<10000>,Int<14000>>>,ResponsiveLightningBlockL,50,1>,TrConcat,Int<18000>>>,TrFade<200>>,TrConcat>,30>,TrSmoothFade<600>>>,ResponsiveStabL,TrWipe<600>>,ResponsiveBlastL,Scale,Int<100>,Int<400>>,Int<400>>,SimpleClashL,LockupTrL>,SmoothStep,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL,Rgb<255,200,0>,DarkOrange>,SmoothStep,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>,InOutTrL,TrWipeIn<400>,Black>>>(), StylePtr(), "white"}, { "Scavenger;common", "tracks/ReyTheme.wav", StylePtr,AudioFlicker>,RotateColorsX>>,Mix,RotateColorsX>,RotateColorsX>>,TransitionEffectL,Bump,Int<9000>>>,TrFade<600>>,EFFECT_IGNITION>,ResponsiveBlastL,SimpleClashL,LockupTrL>,SmoothStep,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,ResponsiveLockupL,50,1>,TrConcat>,TrFade<400>>,ResponsiveDragL>,TrWipeIn<400>,TrFade<400>>,ResponsiveLightningBlockL,50,1>,TrConcat,Int<18000>>>,TrFade<200>>,TrConcat>,30>,TrSmoothFade<600>>>,ResponsiveMeltL,OrangeRed,Orange>,TrWipeIn<600>,TrSmoothFade<600>>>,TrWipe<150>,TrWipeIn<300>,Black>>(), StylePtr(), "white"}, { "Merchant;common", "tracks/CantoBight.wav", StylePtr,RotateColorsX>>,TransitionEffectL,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrDelay<1500>,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrFade<800>>,EFFECT_FORCE>,TransitionEffectL>,Int<50>>,TrSmoothFade<600>>,EFFECT_LOCKUP_END>,ResponsiveLockupL,50,1>,TrConcat>,TrFade<100>,Scale,Int<4000>,Int<26000>>,Int<6000>,Scale,Int<10000>,Int<14000>>>,ResponsiveLightningBlockL,50,1>,TrConcat,Int<18000>>>,TrFade<200>>,TrConcat>,30>,TrSmoothFade<600>>>,ResponsiveStabL,TrWipe<600>>,ResponsiveBlastL,Scale,Int<100>,Int<400>>,Int<400>>,SimpleClashL,LockupTrL>,SmoothStep,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL,Rgb<255,200,0>,DarkOrange>,SmoothStep,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>,InOutTrL,TrWipeIn<400>,Black>>>(), StylePtr(), "white"}, { "ArmsDealer;common", "tracks/SnokeTheme.wav", StylePtr,RotateColorsX>>,TransitionEffectL,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrDelay<1500>,StyleFire,Rgb<10,0,0>,BrownNoiseFlicker,70>,Rgb<128,0,0>>,Rgb<80,0,0>,0,5,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>,FireConfig<2,3000,0>>,TrFade<800>>,EFFECT_FORCE>,TransitionEffectL>,Int<50>>,TrSmoothFade<600>>,EFFECT_LOCKUP_END>,ResponsiveLockupL,50,1>,TrConcat>,TrFade<100>,Scale,Int<4000>,Int<26000>>,Int<6000>,Scale,Int<10000>,Int<14000>>>,ResponsiveLightningBlockL,50,1>,TrConcat,Int<18000>>>,TrFade<200>>,TrConcat>,30>,TrSmoothFade<600>>>,ResponsiveStabL,TrWipe<600>>,ResponsiveBlastL,Scale,Int<100>,Int<400>>,Int<400>>,SimpleClashL,LockupTrL>,SmoothStep,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL,Rgb<255,200,0>,DarkOrange>,SmoothStep,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>,InOutTrL,TrWipeIn<400>,Black>>>(), StylePtr(), "white"}, { "CRISPITY;common", "tracks/mercury.wav", StylePtr,RandomPerLEDFlicker>,RotateColorsX>>,300>,RotateColorsX>,0,6,FireConfig<10,1000,2>,FireConfig<10,1000,2>,FireConfig<10,1000,2>,FireConfig<10,1000,2>>, //Unstable red/pink TransitionEffectL,AlphaL,SwingSpeed<400>>,TrDelay<30000>,AlphaL,SwingSpeed<400>>,TrFade<800>>,EFFECT_FORCE>, //Force effect, temporarily allows color change based on swing speed AlphaL>,SwingSpeed<400>>, //Swing effect, audioflicker, Deep Pink connects the tip and emitter when swinging LockupTrL>,Bump,Scale,Int<4000>,Int<26000>>,Int<6000>>,Scale,Int<14000>,Int<18000>>>>, AlphaL,Scale,Int<4000>,Int<26000>>,Int<6000>>,Int<10000>>>>,TrConcat>,TrConcat>,TrWaveX,TrInstant,TrFade<200>,EFFECT_LOCKUP_BEGIN>,Int<300>,Int<100>,Int<400>,Scale,Scale,Int<4000>,Int<26000>>,Int<6000>>>>,SaberBase::LOCKUP_NORMAL>, //Responsive lockup ResponsiveLightningBlockL,50,1>,TrConcat,Int<18000>>>,TrFade<200>>,TrConcat>,30>,TrSmoothFade<600>>>, //Responsive lightning block AlphaL,SmoothStep>,Int<1500>,Int<4500>>,Int<-6000>>>, //Sparking emitter flare ResponsiveStabL, //Responsive stab EffectSequence>,TrFade<300>>,EFFECT_BLAST>,ResponsiveBlastL,Scale,Int<100>,Int<400>>,Int<400>>,ResponsiveBlastWaveL,Int<500>,Int<200>>,Scale,Int<100>,Int<400>>>,ResponsiveBlastFadeL,Int<6000>,Int<12000>>,Scale,Int<400>,Int<100>>>,ResponsiveBlastL,Int<400>,Int<100>>,Scale,Int<200>,Int<100>>,Scale,Int<400>,Int<200>>>>, //Multi-blast, blaster reflect cycles through different responsive effects ResponsiveClashL,LemonChiffon,TrInstant,TrFade<100>,EFFECT_CLASH>,TrInstant,TrFade<400>,Scale,Int<4000>,Int<26000>>,Int<6000>,Int<20000>>, //Responsive clash TransitionEffectL>,RandomPerLEDFlicker>,Black>,BrownNoiseFlicker,RotateColorsX>,200>,RandomPerLEDFlicker>,RotateColorsX>>>,TrFade<1200>>,EFFECT_IGNITION>, //Unstable ignition effect AlphaL,SmoothStep>,Int<28000>,Int<33000>>,Int<10000>>>, //Sparking tip flare LockupTrL>,SmoothStep,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>, //Drag LockupTrL,Rgb<255,200,0>,DarkOrange>,SmoothStep,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>, //Responsive melt EffectSequence>,AlphaL>,AlphaL>,AlphaL>>, //Power save, if using fett263's prop file hold Aux and click PWR while ON (pointing up) to dim blade in 25% increments. InOutTrL,TrColorCycle<1065>>, //Spark tip ignition, cycle down retraction //TransitionEffectL,Black,TrFade<1000>,AlphaL,Bump,Int<6000>>>,TrFade<3000>>,EFFECT_BOOT>, //TransitionEffectL,Bump,Int<6000>>>,TrFade<3000>>,EFFECT_NEWFONT>, //Optional/alternate passive battery monitor, on boot (1st line) or font change (2nd line) you will get a visual indicator at the emitter of your current battery level. This also works without a blade if you have a lit emitter or blade plug. Green is Full, Red is Low (the color will blend from Green to Red as the battery is depleted), the indicator will fade out after 3000 ms and not display again until powered down and back up or fonts change. TransitionEffectL,Bump>>,TrDelay<2000>,AlphaL,Bump>>,TrFade<1000>>,EFFECT_BATTERY_LEVEL>, //On demand battery level, if using fett263's prop file Hold AUX and click PWR while OFF, the battery level is represented by the location on the blade; tip = full, hilt = low and color; green = full, yellow = half, red = low TransitionEffectL,Int<1000>,Int<500>>,Int<70>,Int<550>>>,RotateColorsX,RotateColorsX>>,Bump,Int<1000>,Int<500>>,Int<41000>,Int<32768>>>>,TrDelay<3000>>,EFFECT_PREON>, TransitionEffectL,Bump,Int<4000>>>,TrFade<520>>,TrWaveX,Int<520>,Int<550>,Int<520>,Int<0>>>,AlphaL>,TrJoin>,Bump,Int<4000>>>,TrFade<420>>,TrWaveX>,Int<420>,Int<450>,Int<420>,Int<0>>>,AlphaL>,TrJoin,Bump,Int<4000>>>,TrFade<340>>,TrWaveX,Int<340>,Int<430>,Int<340>,Int<0>>>,AlphaL>,TrJoin>,Bump,Int<4000>>>,TrFade<300>>,TrWaveX>,Int<300>,Int<400>,Int<300>,Int<0>>>,AlphaL>,TrJoin,Bump,Int<4000>>>,TrFade<240>>,TrWaveX,Int<240>,Int<380>,Int<240>,Int<0>>>,AlphaL>,TrJoin>,Bump,Int<4000>>>,TrFade<210>>,TrWaveX>,Int<210>,Int<360>,Int<210>,Int<0>>>,AlphaL>,TrJoin,Bump,Int<4000>>>,TrFade<190>>,TrWaveX,Int<190>,Int<340>,Int<190>,Int<0>>>,AlphaL>,TrJoin>,Bump,Int<4000>>>,TrFade<170>>,TrWaveX>,Int<170>,Int<320>,Int<170>,Int<0>>>,AlphaL>,TrJoin,Bump,Int<4000>>>,TrFade<160>>,TrWaveX,Int<160>,Int<300>,Int<160>,Int<0>>>,AlphaL>,TrJoin>,Bump,Int<4000>>>,TrFade<150>>,TrWaveX>,Int<150>,Int<250>,Int<150>,Int<0>>>,AlphaL>,TrJoin,Bump,Int<4000>>>,TrFade<130>>,TrWaveX,Int<130>,Int<150>,Int<130>,Int<0>>>,AlphaL>,TrJoin>,Bump,Int<4000>>>,TrFade<100>>,TrWaveX>,Int<100>,Int<100>,Int<100>,Int<0>>>,AlphaL>,TrJoin,Bump,Int<4000>>>,TrFade<70>>,TrWaveX,Int<70>,Int<500>,Int<70>,Int<0>>>,Black,TrInstant>,EFFECT_PREON> //Preon effect, HUGE thanks to /u/NoSloppy for this! >>(), StylePtr(), "white"}, { "Newtype;common", "tracks/GallantChar.wav", StylePtr>,RotateColorsX>>,TransitionLoopL>,40>,Int<250>,Int<100>,Int<200>,Int<0>>>,TransitionLoopL>,40>,Int<350>,Int<100>,Int<300>,Int<0>>>>,TransitionEffectL>,Int<50>>,TrSmoothFade<600>>,EFFECT_LOCKUP_END>,ResponsiveLockupL,50,1>,TrConcat>,TrFade<400>,Scale,Int<10000>,Int<30000>>,Int<10000>,Scale,Int<10000>,Int<14000>>>,ResponsiveLightningBlockL,50,1>,TrConcat,Int<18000>>>,TrFade<200>>,TrConcat>,30>,TrSmoothFade<600>>>,AlphaL>,Bump,Int<8000>>>,ResponsiveBlastWaveL,Scale,Int<100>,Int<400>>,Int<400>>,ResponsiveClashL,Scale,Int<10000>,Int<30000>>,Int<10000>>,TransitionEffectL,TrFade<800>>,EFFECT_IGNITION>,TransitionEffectL>>,TrFade<1200>>,EFFECT_RETRACTION>,ResponsiveStabL,TrWipe<600>>,ResponsiveDragL>,TrWipeIn<400>,TrFade<400>>,ResponsiveMeltL,Red,Orange>,TrWipeIn<600>,TrSmoothFade<600>>,InOutTrL,TrWipeIn<500>,Black>>>(), StylePtr(), "white"}, { "Proton;common", "tracks/GBTheme.wav", StylePtr,HumpFlicker,HumpFlicker>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker,Blue>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker,Blue>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker>>,Blinking,800,500>,60,800>,HumpFlicker,0,8,FireConfig<0,2000,5>,FireConfig<0,0,0>,FireConfig<0,2000,10>,FireConfig<0,0,500>>,HumpFlicker>,RandomPerLEDFlicker,80>,StyleFire,HumpFlicker,HumpFlicker>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker,Blue>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker,Blue>,Stripes<40,-500,HumpFlicker,HumpFlicker,HumpFlicker>,RandomPerLEDFlicker,AudioFlicker>>,Blinking,60,800>,HumpFlicker,0,8,FireConfig<0,2000,5>,FireConfig<3000,0,0>,FireConfig<0,2000,10>>,HumpFlicker>>(), StylePtr(), "white"}, }; BladeConfig blades[] = { { 0, WS281XBladePtr<132, bladePin, Color8::GRB, PowerPINS >(), SimpleBladePtr, NoLED, NoLED, NoLED, bladePowerPin6, -1, -1, -1>(), CONFIGARRAY(presets) }, }; #endif #ifdef CONFIG_BUTTONS Button PowerButton(BUTTON_POWER, powerButtonPin, "pow"); #endif