REM #######################################################################<80 REM # *COMMENTED GUIDE* TEXT file for Ulf "Don ULFonso" Muckel's # REM # <> # REM # (PROGRAM files "Combat_Flight_Simulator.f22" and "C_F_Sim.f22" # REM # for MACRO files "Combat_Flight_Simulator.m22" and "C_F_Sim.m22" # REM # and SWF22 (Thrustmaster F16 FLCS/F22 with Stickworks' digital chipset) # REM # or Thrustmaster F22 (with original chipset) # REM # with TQS and RCS) # REM # for "Combat Flight Simulator" by "Microsoft", # REM # written, tested and commented by Ulf "Don ULFonso" Muckel (01/03/30) # REM # Modifications: alternate *TG1 /I TOGGLE* file (*SWF22*) 01/07/19 # REM # *PULSE*-function 4 hat-cycling (*SWF22*) 01/08/04 # REM # *GENERAL TIPS & WARNING* added 01/08/24 # REM # 'PULSE'-function + *REVERSE* (*SWF22*) 01/09/10 # REM # *DELAY*-function 4 'Land.gear' (*SWF22*) 01/09/10 # REM # CORRECTed '/U /H' 2 'RAW /P/R' (*F22*) 02/01/16 # REM # e-Mail: Don.ULFonso@Thrustmaster-X-Files.de # REM # Domain: http://www.Thrustmaster-X-Files.de # REM # Sub-Domains: http://Set-Ups.Thrustmaster-X-Files.de # REM # http://Forum.Thrustmaster-X-Files.de # REM ########################################################################## REM Due to MANY circumstances I happened to come across an REM INTERESTING "SOMETHING CONCERNING FLAGS" STUFF that REM *NEVER BEFORE* has been MENTIONED NOR EVEN THOUGHT OF in *ANY* ARTICLE REM NOR DISCUSSION: REM ###################################################################### REM # ENHANCED *AUTOMATIC* SELECTION OF SHIFTED FUNCTIONS ;) # REM ###################################################################### REM WITHOUT having to use the DOGFIGHT SWITCH OR SHIFT BUTTON REM to SELECT the CORRECT function *MANUALLY* :( - REM but let THIS PROGRAM FILE chose *AUTOMATICALLY* ;)! // My files (for both Thrustmaster's F22 and Stickworks' SWF22) // INCLUDED in this <> // FUNCTION IN A WAY *NEVER(!)* SEEN *BEFORE*: // using "ADVANCED PROGRAMMING techniques" (a TM's statement, not mine!) // "to the (yet unknown) limit" (unknown even to Thrustmaster!), // featuring FULLY *AUTOMATIC*(!) PROCESSES // to SOLVE EVEN THE *MOST COMPLEX TASKS* // (I bet my ass – please excuse this, but it's true! – // that there is *NO OTHER* TM SET-UP AVAILABLE // to TRUELY AND *CORRECTLY* handle MS' weird "view / trim system"... ): // - these files DO NOT ONLY SUPPORT THE *FULL TOTAL* OF // *ALL* 17 internal "SNAP" views // - PLUS *8-way external "PAN" control* – // mapped INTUITIVELY to *ONE* single "coolie", // - PLUS *EXACT* VIEW "TYPE" SELECTION with *AUTOMATIC* HUD, BUT ALSO // - feature *AUTOMATIC* (this is the KEYWORD of all) SHIFTING // to the *CORRECT* (i.e. desired) FUNCTION, // - including *AUTOMATIC* (...this word again...) TEMPORARY "OVERRIDE" // of ACTIVE "PADLOCK" or "TRIM" STATE (NUML "off" / "on"), // - *AUTOMATIC* "TRIM" *ENABLE / OVERRIDE / DISABLE* FUNCTIONS // to solve the "NUML problem": set NUML "off" // *BEFORE* applying any "trim" and RESET it "on" *AFTER* completion // or some period no "trim" is used, again FULLY *AUTOMATIC*, // - and ANY "THROTTLE" OR "MIXTURE" FUNCTION // mapped to the corresponding TQS' detents // ("idle cut off" for *INTO* MT and "full rich mix" for *OUT OF* MT, // and "WEP" for AB), // - PLUS MANUAL "MIXTURE" AND "PROP PITCH" CONTROLS // mapped to ANT and RNG, // - with - as some sort of a "goodie" - the CORRESPONDING PANEL (no. 2) // (you MIGHT have guessed by now) *AUTOMATICALLY* popping up // the very FIRST TIME *ANY* OF THESE CONTROLS IS *USED*, // - and SO ON... // which BY *NO(!)* MEANS OF "STANDARD" TM SYNTAX ALONE COULD BE ACHIEVED, // for this fantastic "good old" game with that weird // (not to say "rotten") // ...well, "KEYMAPPING" would NOT be the CORRECT description – // "OS-like SHORTCUT"-system might fit BETTER – // MS' "Combat Flight Simulator" (of course…)! // The PROGRAM & MACRO FILES for each TM's *F22* or *SWF22* are BASED // on THIS "COMMENTED GUIDE" FILE, but *CUT* 2 MATCH THE *SPECIFIC LIMITS*: // both *SWF22* and *HOTAS Cougar* SUPPORT // *GREATER FILE SIZE & LONG FILE NAMES*, // *LONGER LINES AND MACRO DEFINITIONS* (< 255 CHARS. / see "Block50"), // *LONGER MACRO NAMES* (> 16 CHARACTERS), // and *MORE FLAGS* (96 USED), respectively *LESS FLAGS* (32 USED), // PLUS "/H" and "/N" CODES WITHIN "/I/O" or "/U/M/D" STATEMENTS, // than the "original" *F22*, and uses *DIFFERENT "RAW" CODES* - // for *F22 COMPATIBILITY* I "STUCK" TO *THESE "THRUSTMASTER" LIMITS* // *WHEREEVER POSSIBLE*, and *AVOIDED TO USE INCOMPATIBLE FUNCTIONS* // (e.g. "CMPLT" or "CMPGT" for *F22 ONLY*, // or "USE MTX48" similar to "BTN MT", or "USE H#_4WAY" (both *SWF22*), // thus I *ALWAYS* USE "S3" AS "/I/O" SHIFT BUTTON // and do NOT redefine using "IOBTTN IS") - // BUT SINCE I ACTUALLY DO NOT *HAVE* ANY "F22" GEAR // (and never had - I upgraded my old F16 FLCS to a "grown up" *SWF22*), // I CAN *ONLY* "VERIFY" THE FILES FOR *F22* BY OPENING AND SAVING THEM // IN THE (downloaded) "F22 C&CC" // (amd THUS *ONLY* GUARANTEE CORRECT FILE/LINE SIZE // AND STATEMENT "GRAMMAR", BUT NOT RESULTING *OUTPUT*), // AND *NOT* "IN ACTION" (I CAN THUS *ONLY* GUARANTEE(!) FOR *SWF22*) - // SO *PLEASE* MAIL IF YOU ENCOUNTER ANY PROBLEMS! // (e.g. I do not really know yet whether my "THR" STATEMENT - // digital THROTTLE TYPE 2 with *ZERO STEPS* to work *FULLY ANALOG* - // will work with TQS' ORIGINAL CHIP... HOPE so, at least it *SHOULD*...) REM IMPORTANT NOTES: *BEFORE* DOWNLOAD to stick and each FLIGHT: REM ---------------------------------------------------------------------- REM - THE *TQS HANDLE* MUST *NOT* BE IN ANY (MT/AB) DETENT POSITION, REM BUT *BETWEEN BOTH DETENTS*, and REM - BOTH *ANTENNA* AND *RANGE* KNOB *MUST* BE ~CENTERED! REM - YOU MUST *NOT* ACTIVATE "PADLOCK" IF THERE IS *NO* TGT TO PADLOCK REM (the game will NOTIFY you!): BE SURE TO *DIRECTLY* SWITCH IT *OFF*! REM - YOU *MUST* START WITH "NUML = ON"! REM - YOU MUST *NOT* OPEN *ADDITIONAL WINDOWS*! REM - YOU *SHOULD* TAKE A LOOK AT THE "M22" MACRO FILE! REM - YOU *SHOULD* READ THIS "TXT" "UNCUT" *COMMENTED* FILE! REM FOLLOW THESE DIRECTIONS - and your sticks SHOULD *NOT* melt... REM (This is NO BUG OR PROGRAM FILE ERROR - REM to understand WHY AND *HOW* this file works see REMs at flag defs!) // ANNOTATION: *HOW TO READ* THIS FILE: // ---------------------------------------------------------------------- // THIS FILE IS THE *SOURCE* FILE FOR ALL JOYSTICK PROGRAM FILES: // it contains the *COMPLETE* PROGRAMMING INCLUDING ANY *ALTERNATIVES* // to match the *SPECIFIC* STICKS' SYNTAX / RULES / LIMITATIONS; // ALL STEPS OF 'LOGICAL PROGRAMMING' HAVE BEEN *COMMENTED* // to GUIDE you through the *SET-UP PROCESS* and // HELP TO *UNDERSTAND* how EACH SINGLE PIECE SUPPLEMENTS THE OTHERS; // this is ESSENTIAL because *LOGICAL EQUATIONS* DEFINING *FLAGS* // MUST BE SET-UP *ACCORDING* TO THE *SPECIFIC* TASK to be solved! // Those NOTES STARTING WITH THE *SWF22* "COMMENT"-INDICATOR "//" // are the 'WHYs' and 'HOWs' AT LENGTH, // and in most cases REMOVED FROM THE SET-UP FILES; // those NOTES STARTING WITH 'REM' ARE USED AS 'HEAD-LINE' *REMINDERS* // and REMAIN IN THE SET-UP FILES. // THE *JOYSTICK SPECIFIC ALTERNATIVES* ARE MARKED as follows: // '+++' *F22 Pro* ONLY, // '///' *SWF22* ONLY, and // '>>>' *HOTAS Cougar* ONLY (removed since CONFIDENTIAL)! // '!!!' *THOUGHTS* for e.g. COMING UPDATES (=MODIFICATIONS)... ;) // '//' *AND* '// REM' *ALTERNATIVES* OFFERED but not used: // IF you WOULD like to TRY ANY of them, simply *ENABLE* them // BY *REMOVING* ALL '//' of the *CORRESPONDING PARAGRAPH* // IN THE *CORRESPONDING SET-UP FILE* - *NOT* IN THIS COMMENTED *GUIDE*! // (I'd recommend *OVERWRITING* THEM WITH 'SPACES' to keep layout) // TIP: IF YOU'D LIKE TO TRY TO *MODIFY*: // ---------------------------------------------------------------------- // IN *MOST* CASES you CANNOT AND *MUST NOT* // use the techniques for THIS game's set-up as a TEMPLATE for others - // but IF you UNDERSTAND GENERAL FLAGS' *FUNCTION* // you might want to TRY *MODIFICATIONS* (maybe even with some success): // if you do so, always KEEP IN MIND THAT *MOST* FLAGS here are // *LINKED*, *COMBINED* AND *NESTED* TO *MULTIPLE SCOPES*, // with *CROSS-OVER* REFERENCES ALL THROUGH THESE SET-UPS - // if you CHANGE the 'WRONG' PART: 'Good luck an' enjoy yourself!'... // YOU WON'T GET ANY 'COMPILING ERROR'-*MESSAGE* // to EXPLAIN the 'STRANGE' *RESULTS*, // ranging from 'just' ERRATIC *OUTPUT* (if you're LUCKY!) // to a COMPLETELY 'LOCKED' *MACHINE* // (*SWF22* USERS ONLY should simply *REBOOT* the PC, // and the STICK WILL BE IN "WINDOWS"-MODE AGAIN: // WITHOUT FLAG'S *OUTPUT* - and then: 'HAPPY BUG-HUNTING!'... // *F22 Pro* USERS... eh... DO *NOT* HAVE THIS CHANCE: // BE *SURE* TO SPARE ONE BUTTON FOR THE 'F22RST'-STATEMENT, // and PRAY it MIGHT save you in the case-of-all-cases...) // The PROGRAM & MACRO FILES for each TM's *F22* or *SWF22* // (and for the *HOTAS Cougar*, at least to some extent) are BASED // on THIS 'COMMENTED GUIDE' FILE, but *CUT* 2 MATCH *SPECIFIC LIMITS*: // both *SWF22* and *HOTAS Cougar* SUPPORT // *GREATER FILE SIZE & LONG FILE NAMES*, // *LONGER LINES AND MACRO DEFINITIONS* (< 255 CHARS. / see 'Block50'), // *LONGER MACRO NAMES* (> 16 CHARACTERS), // and *MORE FLAGS* (96 USED), respectively *LESS FLAGS* (32 USED), // PLUS '/H' and '/N' CODES WITHIN '/I/O' or '/U/M/D' STATEMENTS, // than the 'original' *F22*; // the *SWF22* uses *DIFFERENT 'RAW' CODES* than the *F22*, // the *HOTAS Cougar* NO 'RAW'-codes at all, // but an ENHANCED AND SIMPLYFIED 'HARDWARE CHARACTER GENERATION'-SYSTEM; // for *F22 COMPATIBILITY* I 'STUCK' TO *THESE 'OLD' TM LIMITS* // *WHEREEVER POSSIBLE*, and *AVOIDED TO USE INCOMPATIBLE FUNCTIONS* // (e.g. 'CMPLT' or 'CMPGT' for *F22 ONLY*, // or 'USE MTX48' similar to 'BTN MT', or 'USE H#_4WAY' (both *SWF22*), // thus I *ALWAYS* USE 'S3' AS '/I/O' SHIFT BUTTON // and do NOT redefine using 'IOBTTN IS') - // if for any reason I HAVE to use such *SPECIFIC* FUNCTIONS // (e.g. for the *HOTAS Cougar* it would be shameful waste NOT to do so), // you'll find the *ALTERNATIVES* EXPLAINED AS WELL! // Nevertheless I limited myself to USE CORRECT '*SLASH* MODIFIERS' // ACCORDING TO THE *SWF22*-RULES within THIS *COMMENTED* TEXT-FILE: // some of the COMBINATIONS you'll find here will NOT work with the *F22* // due to some *DIFFERENCES* (AS MENTIONED ABOVE), // and the *HOTAS Cougar* is another chapter... // ... OF COURSE you'll find the CORRECT *SPECIFIC* USAGE // in the CORRESPONDING *SPECIFIC* SET-UPs! ;) // (SINCE I ACTUALLY DO NOT *HAVE* ANY "F22" GEAR - // and never had - I upgraded my old F16 FLCS to a 'grown up' *SWF22* - // I CAN *ONLY* 'VERIFY' THE FILES FOR *F22* BY OPENING AND SAVING THEM // IN THE (downloaded) 'F22 C&CC' // (and THUS *ONLY* GUARANTEE CORRECT FILE/LINE SIZE // AND STATEMENT 'GRAMMAR', BUT NOT RESULTING *OUTPUT*), // AND *NOT* 'IN ACTION' (I CAN THUS *ONLY* GUARANTEE(!) FOR *SWF22*) - // SO *PLEASE* MAIL IF YOU ENCOUNTER ANY PROBLEMS! // (e.g. I do not really know yet whether my 'THR' STATEMENT - // digital THROTTLE TYPE 2 with *ZERO STEPS* to work *FULLY ANALOG* - // will work with TQS' ORIGINAL CHIP... HOPE so, at least it *SHOULD*...) // FOR FURTHER INFORMATION / INSTRUCTIONS / GUIDES / TUTORIALS // feel free to VISIT MY SITE (not only) ABOUT 'LOGICAL PROGRAMMING', // the <>, at // Domain: http://www.Thrustmaster-X-Files.de // Sub-Domains: http://Set-Ups.Thrustmaster-X-Files.de // http://Forum.Thrustmaster-X-Files.de // http://Block50.Thrustmaster-X-Files.de (to come) // or (if your question should NOT be answered THERE) CONTACT ME // e-Mail: Don.ULFonso@Thrustmaster-X-Files.de // If you like to PRINT this file, be sure to have some paper handy... ;) REM ########################################################################## REM # General settings: # REM ########################################################################## MDEF c_f_sim REM MACRO file for *F22* MDEF combat_flight_simulator REM MACRO file for *SWF22* RATE 20 REM Typematic rate [1/1000s]: REM try to set RATE near 0, or REM higher (if any problems). REM -> *PULSE* AS LONG AS *HELD* 2 *COMBINE* WITH HATS (*SWF22*) REM (THX 2 Bob 'Sticky' Church 4 the basic idea 2 set-up 1 up-front): REM ------------------------------------------------------------------ DEF X60 PULSE(60 440) (NOT S3 OR S3) REM ("X60"="Pulse" 2 USE) REM ########################################################################## REM # Flag settings: # REM ########################################################################## REM LOGIC FLAGS will be DEFINED REM (and EXPLAINED generally) REM in the BUTTONS' SECTION(S) REM they are needed for... // ################################################################ // LOGIC # 1 | 2 | 3 | 4 | 5 # 6 7 | 8 9 # // FLAGS #H1D |H1U |T6 |T9+10 |T2-5 #ANT ANT |RNG RNG # // TABLE #(Ext.)|(CP/V)|(CP) |(Plck)|(Plck)#(Up <-> Down)|(Lft <-> Rgt)# // ####################################################################### // #10 #11 12 13 14 15 16 17 18 19 # // #TG1/O #T3 T3+4 T4 T4+2 T2 T2+5 T5 T5+3 T2-5/I# // #(B1) #(CP/V) (CP/V) (CP/V) (CP/V) (CP/V) (CP/V) (CP/V) (CP/V) (CP/V)# // #------# + + + + + + + + # // #20 #21 22 23 24 25 26 27 28 29 # // #TG1/I #T3 T3+Ext.T4 T4+Ext.T2 T2+Ext.T5 T5+Ext.T2-5/I# // #(B2) #(Loop) (Loop) (Loop) (Loop) (Loop) (Loop) (Loop) (Loop) (Loop)# // ########------+------+======+======+======+======+======+======+======# // #30 #31 32 !33 34 |35 36 37 38 |39 # // #H4M* #T3/I T4/I !T2/I T5/I |T3/O T4/O T2/O T5/O |-T2-5 # // #(NUML)#(Ext.) (Ext.)!(Ext.) (Ext.)|(Ext.) (Ext.) (Ext.) (Ext.)|(V) # // ########======+Cougar+------+------#################################### // #40 #41 |42 43 | 44 #45 |46 #47 |48 # "FULL // #Panel2#-S3-S4|T4/5 T2/3 |-X1* #S4-T3 |S4+T3 #S3+H4 |S3+H4*# HOUSE" // #(AUTO)#(F22) |(F22) (F22) |(F22) #(Ext.)|(CP/V)#(Trim)|(Trim)# *NONE* // #########################################################F22Pro# LEFT! // #50 #51 52 |53 54 |55 #56 |57 |58 |59 | // #TG1 /I#T1 T1 |H1L/M H1R/M |H1LR # | | | | // #(alt.)#(Puls) (Puls)|(Puls) (Puls)|(/U/D)# | | | | // ########------+------+------+------########------+------+------+------+ // #60 |61 62 63 64 #65 |66 |67 |68 |69 | // #PULSE |H2U H2D H2L H2R # | | | | | // #(+-S3)|(Puls) (Puls) (Puls) (Puls)# | | | | | // ########------+------+------+------######################------+------+ // |70 #71 72 73 74 |75 76 77 #78 |79 | // | #H3U H3D H3L H3R |H3U/I H3D/I H3LR/I# | | // | #(Puls) (Puls) (Puls) (Puls)| # | | // +------##################################################------+------+ // |80 |81 |82 |83 |84 |85 |86 |87 |88 |89 | // | | | | | | | | | | | // | | | | | | | | | | | // +------+------+------+------+------+------+------+======+======+======+ // |90 |91 |92 |93 |94 |95 |96 ! // | | | | | | | ! // | | | | | | | ! // +======+======+======+======+======+======+SWF22-+ // *LOGICAL FUNCTIONS* DO NOT TAKE MUCH TIME TO *EXECUTE*, // - typically *~120 MICRO(!)SECONDS PER ELEMENT*, where an element is // - any of the "DEF" STATEMENT itself, // - the KEYWORDS "AND", "OR", and "NOT", // - the *REFERENCES* to the FLAGS and/or BUTTONS, // - *PARENTHESIS* do NOT take ANY execution time. // - The "DELAY", "PULSE", "CMPLT", and "CMPGT" functions // (for F22<->SWF22 *COMPATIBILITY* "CMPLT" and "CMPGT" are *NOT* USED) // do take SLIGHTLY longer, but are relatively INFREQUENTLY USED // and do NOT impact MUCH on the *OVERALL* SCAN SPEED! // Thus there is ABSOLUTELY *NO* NEED TO "SPARE" LOGIC FLAGS // with regard to *OVERALL* SCAN SPEED (you will not notice any diff.) - // the *ONLY* REASON remaining would be *F22 COMPATIBILITY*: // - *SWF22* FLAGS' LIMIT = 96 (enough for almost ANY purpose...), // - TM*F22* FLAGS' LIMIT = 48 ("just" HALF of *SWF22*... // (and THIS file DOES USE *ALL* of them - and WOULD require even MORE, // see TQS' "coolie" T2-5 section below, flags X22, 24, 26, 28!) REM ########################################################################## REM # Stickworks F16 FLCS / F22 settings: # REM ########################################################################## REM -------------------------------------------------------------------------- REM Trigger(s): (2-STAGE TRIGGER) REM -------------------------------------------------------------------------- // The TRIGGER is used - surprise, surprise - to fire guns: // since "CFS" uses two fire buttons for two different types of guns // (not two keys to select the gun type plus trigger to fire selected), // I first wanted to set up the TRIGGER with // - TG1 */O* USED as the MAIN TRIGGER to FIRE the selected gun type, // - TG1 */I* USED as a "gun type toggle": // "DEF X10 TG1 AND S3 REM (-> TG1 /I = /T [B1 / B2])", // "DEF X20 (TG1 AND NOT S3) AND NOT X10*", // "DEF X30 (TG1 AND NOT S3) AND X10*", // "PortB1 is X20 REM (TG1 /O [= B1] = MGs)", // "PortB2 is X30 REM (TG1 /O [= B2] = Cannons)" - // but at the end I NEEDED *JUST 1 MORE FLAG* (X30) and skipped this // (if you'd prefer this way, *SWF22*-users might use the lines above // and REPLACE "X30" by e.g. "X50", // i.e. USE "combat_flight_simulator_TOGGLED-TRIGGER.f22" INSTEAD - // for *F22 Pro*-users: sorry, no way, stay away of 'em flags!), // so now the TRIGGER is set up with // - TG1 */O* USED as *ANALOG B1* to FIRE "MGs", // - TG1 */I* USED as *ANALOG B2* to FIRE "CANNONs", while // - TG2 in my "prop sim" files is *ALWAYS* USED TO "FIRE *ALL* GUNS": BTN TG1 REM (MIXED ANALOG/DIGITAL) REM -> *MIXED* ANALOG/DIGITAL: REM ------------------------------------------------------------------ DEF X10 TG1 AND NOT S3 REM (-> TG1 /O) DEF X20 TG1 AND S3 REM (-> TG1 /I) PortB1 is X10 REM (TG1 */O* -> B1 = MGs) PortB2 is X20 REM (TG1 */I* -> B2 = Cannons) BTN TG2 /H WPN:MGs+Cannons REM -------------------------------------------------------------------------- REM Buttons S1-4: (RED BUTTONS) REM -------------------------------------------------------------------------- // The BUTTONS S1+2 are SECONDARY FIRE BUTTONS, USED for ROCKETS/BOMBS: BTN S1 /O /N WPN:Rocket /I /N WPN:Rocket_Timed REM (-> *BEHIND* foe ~1500ft) REM (-> *TOWARDS* foe ~4500ft) REM (-> *STATIC* tgt ~3000ft) BTN S2 /N WPN:Bomb // BUTTON S3 *ALWAYS* IS USED AS "/I/O SHIFT BUTTON": // LEAVE THIS LINE *AS IS* TO ENSURE CORRECT PROCESSING! BTN S3 REM ([I/O shift button]) // BUTTON S4 is USED FOR SEVERAL VIEW *MODIFICATIONS*: // - normally, it will show "WEAPON VIEW" as long as held, but // - COMBINED WITH T3 (TQS' "coolie" UP) it will ADD "90° UP" // *ONLY* to the *INTERNAL* VIEW MODES (if *NOT "PADLOCK"ed*), // i.e. "COCKPIT VIEW" / "FULLSCREEN + HUD" / "VIRTUAL COCKPIT VIEW" // (see TQS' "coolie" T2-5 section below), // - WITH S3 /I USED to "BAIL OUT" (...TRY to hit this "by accident"!). BTN S4 REM (-> see DEF X45 / X46) DEF X45 S4 AND NOT (T3 AND NOT X1*) BTN X45 /O /P /N CAM:I/O /R CAM:I/O /I <<>> REM (tribute 2 "Cowboy" Wilson) REM -------------------------------------------------------------------------- REM "Coolie" H1: (LARGE GREY "POV" HAT ON *TOP*) REM -------------------------------------------------------------------------- // H1 is *NOT* USED AS "POV coolie" (though *SWF22* DOES SUPPORT THIS): // - it is NOT *EASY* TO HANDLE during dogfight, and // - MANY TM STICKS HAVE *PROBLEMS* READING *ALL* CORNERS CORRECTLY // (since electrically they are *ONLY* 4-way switches) - // I *ALWAYS* use the TQS' "coolie" T2-5 instead: // - it is *EASY TO HANDLE* (just "park" your index finger there), // - there are *NO* PROBLEMS WITH *ANY* CORNER POSITION // (maybe due to its LONGER WAYS TO TRAVEL?), and // - it can be USED AT THE *SAME TIME* WITH THE STICK'S HATS, and // - last but not least I try to PROGRAM *F22 COMPATIBLE*, // and since the *F22* DOES NOT SUPPORT WINDOWS "POV" FUNCTIONALITY, // - I prefer to DIGITALLY SET UP my own "VIEW SYSTEM" // *SUPERIOR TO ANY "SIMPLE" "POV" FUNCTION* (see T2-5 section below), // - *NOT* "ONLY" SUPPORTING "STANDARD" 8-WAY FUNCTION, BUT // - *ALL* "SNAP VIEWS" FOR ANY *INTERNAL* VIEW (8+8+1-WAY), and // - *ALL* "SNAP VIEWS" (for QUICK ORIENTATION) PLUS *ALL* "PAN VIEWS" // (for FINE ADJUSTMENT) FOR *EXTERNAL* VIEW (8+8-WAY), and BEST OF ALL // - YOU DO *NOT* HAVE TO SELECT THE NEEDED VIEW MODIFICATION *MANUALLY* // (e.g. by using rocker "/U/M/D" STATEMENTS and/or "/I/O" CODES, // and/or "breaking" "PADLOCK" before being allowed to "SNAP" VIEWS): // THESE program files for the VERY 1ST TIME // feature a TRUE (i.e. *CORRECT*) VIEW SELECTION // and VIEW MANAGEMENT SYSTEM (see TQS' "coolie" T2-5 section) // for Microsoft's "Combat Flight Simulator" and its *WEIRD* VIEW SYSTEM: // it DOES deliver *EXACTLY* the view *SELECTED* // WITHOUT HAVING TO *CYCLE* through ALL available VIEW AND HUD *MODES*: // THE STICK AND ITS SOFTWARE *AUTOMATICALLY* "KNOW" // - WHICH VIEW TYPE IS *CURRENTLY ACTIVE*, AND THUS // - WHICH *MODIFICATION* IS *NEEDED*, AND // - WHICH *FUNCTIONS* HAVE TO BE *EXECUTED BEFORE / AFTERWARDS*! // If you use any sort of "common" toggle (DIRECTLY ASSIGNED TO A *BTN*) // RATHER THAN *FLAGS* and *THEIR* "TOGGLE STATES", your views // soon WILL get totally MESSED UP, "thx" to MS's "view system": // - as long as you STAY in "COCKPIT VIEW" *ONLY* - // WITHOUT switching to "EXTERNAL VIEW" or using "PADLOCK" - // this toggle e.g. switches between "COCKPIT" and "FULLSCREEN + HUD" // by executing e.g. "s w" and "s s w w" // (*CYCLING* ALL AVAILABLE views, but LEAVING OUT "EXTERNAL VIEW"), // - but as soon as you e.g. enable "PADLOCK" and then use this toggle // your have managed to TOTALLY MESS UP your views: // since "PADLOCK" is treated as one form of "VIRTUAL COCKPIT VIEW", // this toggle will cycle at least ONE STEP *TOO MUCH* // (since it is set up to work for "COCKPIT VIEW" as *START POS.*) - // - if you used "EXTERNAL VIEW" in the meantime, // AGAIN your views are TOTALLY *OUT OF SYNCHRONIZATION*! // This is WHY I USE "LOGIC FLAGS" AND THEIR "TOGGLE STATES" *INSTEAD*: // - THESE *FLAGS' TOGGLE STATES* (*NOT* ANY *BUTTON's*) HANDLE // *WHETHER* any function/macro IS *ALLOWED* TO BE EXECUTED OR NOT, and // - THUS *ENSURING* that the "SYSTEM" as such still IS SYNCHRONIZED, // by SIMPLY *IGNORING* "out of synch" toggle requests // (the BUTTONS /T STATE would change every time this *BTN* is pressed, // EVEN IF the funct./macro assigned would NOT be allowed to execute - // thus causing the "system" to run out of synchronization - // BUT IF THE CORRESPONDING *BTN* IS *REFERENCED* BY A *FLAG* // WHICH IS *LINKED* TO *VARIABLE "ENVIRONMENTAL" CONDITIONS*, // THE "TOGGLE STATE" WILL *ONLY* CHANGE IF *ALL* CONDITIONS // DEFINED IN A STATEMENT ARE "TRUE") // BY *NO* MEANS of "STANDARD" THRUSTMASTER SYNTAX *ALONE* // something like THIS COULD BE ACHIEVED! // ...and since THIS is where things are REALLY getting complex - // (those DEFs AGAIN MIGHT BE NECESSARY TO BE COMBINED // like in THIS file), // this is where for most TM users CONFUSION starts // and might be the main reason why "normally" even those users // who are NOT "afraid" of "LOGIC FLAGS" do *NOT* use them for // ANYTHING MORE than "just" setting up "keypad views" or // "mixed digital/analog trigger" functions // (though I MUST ADMIT that I learned most of what I understand // concerning "logical flags" YET by ANALYZING such examples) // as documented in TM's "APPLICATION NOTES" - // and these notes "suffer" the same that (unfortunately) is true // for Thrustmaster's "support" and "documentation" as such: // they *ONLY* DOCUMENT THAT "LOGIC FLAGS" DO *EXIST*, // and that they *MIGHT* BE USED FOR "ADVANCED PROGRAMMING" - // but DO *NOT* "GUARANTEE" (due to CHIP/MICROCODE's REVISION) - // and therefore do only give some "GOOD FOR ALL" // (and thus "NOTHING IN SPECIAL") EXAMPLES, // in most cases WITHOUT ANY *CONTEXT* TO *PRACTICAL* (SENSEFUL) USAGE, // and DO NOT DRAW ANY *FURTHER CONCLUSIONS* // (though the *POTENTIAL* is already there, but simply NOT NOTICED...)! // Well, luckily I HAVE DRAWN AT LEAST *SOME* OF MY OWN CONCLUSIONS // TO SET UP "MY OWN" "ADVANCED PROGRAMMING TECHNIQUES" - // and *THESE FILES* are NEITHER THE FIRST, NOR WILL THEY BE LAST ONES // I will write to PROVE THAT THESE TECHNIQUES DO NOT ONLY *WORK*, // BUT ARE ANOTHER ARGUMENT FOR TM STICKS BEING *SUPERIOR* TO *ANY* GEAR! // (Simplified, they use some kind of MS Word's "AUTO CORRECT" FUNCTION // implemented in joystick program files...) // The point is: MACROS MUST *NOT* BE ASSIGNED TO BTTNS/HATS *DIRECTLY* // (as "usual"), BUT TO *FLAGS INSTEAD*: // - the MAIN "VIEW *TYPES*" ("COCKPIT"/"VIRTUAL"/"EXTERNAL") // MUST BE ASSIGNED 2 *FLAGS* (4 "view sys." using "key xy = view xy") // OR FLAGS' *TOGGLE STATES* (4 "view systems" cycling view/HUD modes), // - the "VIEW *MODS*" ("SNAP"/"PAN") MUST BE ASSIGNED TO OTHER *FLAGS*, // WHICH *LINK* "HAT *POSITIONS*" WITH THESE "VIEW *TYPE*" *FLAGS*, // - WITH ADDITIONAL *FLAGS*/FLAGS *TOGGLE STATES* 2 ENABLE/DISABLE // SPECIAL *FUNCTIONS* NECESSARY *BEFORE/AFTER* EXECUTION // (see TQS' "coolie" T2-5 section below)! // Now, H1 is USED FOR THE "MAIN VIEW MODE" SELECTION/MODIFICATION: // - H1D is USED as "INTERNAL / EXTERNAL" VIEW MODE SELECTOR, and // - H1U is USED as "INTERNAL VIEW MODE" SELECTOR // to toggle "COCKPIT VIEW" / "VIRTUAL COCKPIT VIEW + HUD", // but *ONLY* if you CURRENTLY are in ANY *INTERNAL* VIEW. // - While in "COCKPIT VIEW" MODE *ONLY* the RANGE KNOB T6 is USED // to TOGGLE "FULLSCREEN + HUD" / back to "COCKPIT VIEW". // - BOTH "MAIN VIEW MODE" SEL. DO *NOT* DO ANYTHING *WHILE "PADLOCK"ed*, // but in this case will simply be IGNORED (see below WHY). // - H1L/R */O* are USED to "ZOOM IN/OUT" the *CURR. ACTIVE* VIEW MODE // (different ZOOM SETTINGS are possible for // "COCKPIT" / "VIRTUAL COCKPIT" / "EXTERNAL CAM" / "PADLOCK VIEW": // I usually fly using "COCKPIT VIEW" and DEFAULT ZOOM, and // maneuvre into kill position using "PADLOCK VIEW" ZOOMED IN, then // swith back to "COCKPIT" and hit T6 for "FULLSCREEN"...and "let go"!) // - H1L/R */I* are USED to "RESET ZOOM" 4 the *CURR. ACTIVE* VIEW MODE // (though it IS POSSIBLE to ADD an UNDOCUMENTED "SLOW/FINE ZOOM" FCTN. // - same keys as "normal" "STEP BY STEP ZOOM" PLUS "SHF" HELD - // I considered the "RESET ZOOM" FCTN. to be more useful...) // - "H1D": hat position (of course) as BASE, // - "AND (NOT T9 AND NOT T10)": *ONLY* ALLOW EXEC. IF *NO* "PADLOCK" // (see T9+10 section below) ACTIVATED, // - "AND NOT X1*": DO *NOT* ALLOW EXEC. IF "EXTERNAL VIEW" IS ACTIVE, // i.e. *ONLY* IF ANY "INTERNAL VIEW" IS CURRENTLY ACTIVE, // - "AND NOT X3*": DO *NOT* ALLOW IF "FULLSCREEN + HUD" IS ACTIVE // (see T6 section below): REM -> "INTERNAL / EXTERNAL" VIEW SELECTION (+"PARITY"): REM ------------------------------------------------------------------ DEF X1 H1D AND (NOT T9 AND NOT T10) DEF X2 H1U AND (NOT T9 AND NOT T10) AND NOT X1* AND NOT X3* BTN X2 /T /N VIEW:_+ VIEW:Mode_+ /T /N VIEW:_2+ VIEW:Mode_2+ BTN X1 /N CAM:I/O REM -> *PULSE* AS LONG AS HELD (your thumb will thank you): REM ------------------------------------------------------------------ DEF X53 (((H1L AND NOT S3) OR (H1R AND S3)) AND (NOT (T7 OR T8))) AND X60 DEF X54 (((H1R AND NOT S3) OR (H1L AND S3)) AND (NOT (T7 OR T8))) AND X60 DEF X55 ((H1L OR H1R) AND (T7 OR T8)) AND X60 BTN X53 /N CAM/VIEW:Zoom_- BTN X54 /N CAM/VIEW:Zoom_+ BTN X55 /N CAM/VIEW:Zoom_RESET REM -------------------------------------------------------------------------- REM "Coolie" H2: (SMALL BLACK HAT *LEFT*) REM -------------------------------------------------------------------------- // H2 in my "prop sim" files is *ALWAYS* USED FOR "TARGETING", // since this is the hat MOST *EASY TO HANDLE*: REM -> *PULSE* AS LONG AS HELD (*SWF22* ONLY due 2 TOTAL FLAGS LIMIT): REM ------------------------------------------------------------------ DEF X61 H2U AND X60 REM ("X60"="Pulse"->*SWF22*) DEF X62 H2D AND X60 REM ("X60"="Pulse"->*SWF22*) DEF X63 ((H2L AND NOT S3) OR (H2R AND S3)) AND X60 DEF X64 ((H2R AND NOT S3) OR (H2L AND S3)) AND X60 BTN X61 /N TGT:Reflector/Gyroscope BTN X62 /N TGT:BREAK BTN X63 /N TGT:_- BTN X64 /N TGT:_+ REM -------------------------------------------------------------------------- REM "Coolie" H3: (SMALL BLACK HAT *RIGHT*) REM -------------------------------------------------------------------------- // H3 in my "prop sim" files is *ALWAYS* USED FOR "FLIGHT CONTROLS", // most important of course "FLAPS" for dogfight maneuvres: BTN H3U /U /N CTL:Parking_I/O /M ^ REM (-> *FLAGS* @ */M*) /D /N CTL:Parking_I/O BTN H3D /U /O /N CTL:I/O /I /N CTL:I/O_Manual /M ^ REM (-> *FLAGS* @ */M*) /D /H CTL:P/R REM *F22*: RAW /P/R BTN H3L /U /H CTL:Lft /M ^ REM (-> *FLAGS* @ */M*) /D /H CTL:Lft BTN H3R /U /H CTL:Rgt /M ^ REM (-> *FLAGS* @ */M*) /D /H CTL:Rgt REM -> *PULSE* AS LONG AS HELD (*SWF22* ONLY due 2 TOTAL FLAGS LIMIT): REM ------------------------------------------------------------------ DEF X71 ((H3U AND NOT S3) AND NOT (T7 OR T8)) AND X60 DEF X72 ((H3D AND NOT S3) AND NOT (T7 OR T8)) AND X60 DEF X73 ((H3L AND NOT S3) AND NOT (T7 OR T8)) AND X60 DEF X74 ((H3R AND NOT S3) AND NOT (T7 OR T8)) AND X60 DEF X75 ((H3U AND S3) AND NOT (T7 OR T8)) AND X60 DEF X76 ((H3D AND S3) AND NOT (T7 OR T8)) AND X60 DEF X77 (((H3L OR H3R) AND S3) AND NOT (T7 OR T8)) AND X60 BTN X71 /N CTL:_- REM (-> *DOGFICHT/ROCKER* /M) BTN X75 /N CTL:_-_FULL BTN X72 /N CTL:_+ BTN X76 /N CTL:_+_FULL BTN X73 /N CAM/VIEW:Zoom_- REM (same as H1L, easy 2 reach) BTN X74 /N CAM/VIEW:Zoom_+ REM (same as H1L, easy 2 reach) BTN X77 /N CAM/VIEW:Zoom_RESET REM -------------------------------------------------------------------------- REM "Coolie" H4: (HAT ON *LEFT SIDE* OF STICK) REM -------------------------------------------------------------------------- // Since the "TRIM" FUNCTIONS do *ONLY* work if "NUML = OFF", // but the "SNAP VIEWS" *REQUIRE* "NUML = ON" // (and THEY definitly are MORE IMPORTANT and USED during flight/combat), // - you *HAVE* TO *ENABLE* "TRIM" FUNCTIONS BY SETTING "NUML = OFF" // *BEFORE* SELECTING THE DESIRED "TRIM" FUNCTION(S) // *AUTOMATICALLY* BY JUST *MOVING* H4 *ONE* TIME, // - then "TRIM" the aircraft USING H4, // - and *RESET* "NUML = ON" *AFTERWARDS* // *AUTOMATICALLY* BY JUST USING *ANY "PAN/SNAP" VIEW* (e.g. "FWD"), // OR SIMPLY *NOT USING H4* "TRIM" FUNCTIONS FOR SOME TIME // ("SOME" TIME, since the NUMBER *SHOULD* MEAN [ms], // thus "DELAY(2500)" *SHOULD* BE EXECUTED AS "2.5 SECONDS", // BUT IN FACT THIS IS *NOT* PROCESSED PROPERLY - // maybe the SUPPOSED PERIOD MIGHT BE *AFFLICTED BY CPU SPEED*? // So I have chosen "DELAY(10000)", which on my PC is around 2.5s, // and anyway ANY USER MIGHT *MODIFY* this to his OWN TASTE...): // I *HAVE* TRIED EVERYTHING TO SKIP THIS *INITIAL* H4 USE - // NEITHER *RAW CODES* NOR */H STATEMENTS* WILL WORK, // please do not ask me WHY - I have tried ANY of these methods... // (I guess this happens "thx" to MS' heavy use of CTL/ALT/SHF combos - // Microsoft DID NOT really MAP FUNCTIONS TO THE KEYBOARD, // BUT CREATE "SHORTCUTS" TO THE GAME FUNCTIONS INSTEAD // (maybe nobody told them this is *NO* OS?) - // HOW TWISTED must (well, or CAN) a MIND be to set up some // "2 person/ no split screen" game like this: // it is nice to play it with a friend, who is needed to hold down // the various 3-11 keys combos needed... I'm OK, doc!... // ...what I wanted to say is: we WOULD need a function to execute e.g. // /P /N NUML /H "TRIM (RAW"MAKE"=/H)" /R "TRIM (RAW"BREAK") /N NUML)... // IMPORTANT NOTE: *BEFORE* you start a flight: // ---------------------------------------------------------------------- // - YOU *MUST* START flying with "NUML = ON"! // Now THIS *AUTOMATIC* TOGGLE ("NUML = ON / OFF") will be defined: // - "NOT H4M": *ONLY* IF H4 *IN USE* (*NOT* IN "MIDDLE" POSITION), // - "AND (NOT T7 AND NOT T8)": *ONLY* IF "ROCKER = /M" // (not NECESSARY, but USEFUL if you wish to use /U/D pos. as well, // since USUALLY I USE H4 FOR "RADIO" COMMANDS (e.g. "WING"/"FLIGHT"), // thus I WILL do so for "Combat Flight Simulator 2"...), // - "AND NOT X47*": *ONLY* IF *NOT TOGGLED BEFORE*, // - "OR X48 = (T2 OR T3 OR T4 OR T5) AND X47*": *OR* TQS' "COOLIE" USED // *WHILE* "X47 = ON" (*TOGGLED* BEFORE = "NUML = OFF"), // - "OR X30 = DELAY(10000) (H4M AND X47*)": *OR* IF TOGGLED BEFOR, // THUS "NUML = OFF", BUT H4 *NOT* USED FOR SOME TIME // (this "DELAY" *MUST* be DEF'd in a *SEPARATE* LINE by its own!): REM -> (Set "NUML=OFF" 2 enable "TRIM" - AND RESET "ON" 4 "VIEW MODS") REM ------------------------------------------------------------------ DEF X30 DELAY(10000) (H4M AND X47*) DEF X47 (NOT H4M AND (NOT T7 AND NOT T8) AND NOT X47*) OR X48 OR X30 BTN X47 /N NUML BTN H4U /U ^ /M TRIM:_+ /D ^ BTN H4D /U ^ /M TRIM:_- /D ^ BTN H4L /U ^ /M TRIM:Lft /D TRIM:Lft BTN H4R /U ^ /M TRIM:Rgt /D TRIM:Rgt REM ########################################################################## REM # TQS settings: # REM ########################################################################## // The THROTTLE is *PURELY ANALOG BETWEEN BOTH DETENTS*, // - with *MT DETENT* (DIGITALLY) USED to "CUT OFF" MIXTURE/FUEL // and - of course - SET it to "FULL RICH MIXTURE" if left again, // - and *AB DETENT* to ENABLE "WAR EMERGENCY POWER" as long as held. // "FUEL MIXTURE" and "PROP PITCH" are set up further below: // - ANT controls "MIXTURE" SETTINGS (UP = richer / DOWN = leaner), and // - RNG controls "PROP PITCH" (CW/LFT = backward / CCW/RGT = forward): // - twist ANT or RNG in the desired position to execute the function, // then RECENTER it (to AVOID STUCK KEYS / FROZEN GAME // due to FLAGS' SPECIAL BEHAVIOUR = *CONTINUOUS* OUTPUT). // (*USUALLY* I set up ANT and RNG for VIEW SELECTION / MODIFICATION - // just take a look at my files for "European Air War" or // "World War II Fighters" to find out the advantage - // since this requires any *true* view system with keys mapped to views, // but we only have Microsoft's "view system" (see H1 section above), // I had them both left for other use: // some "cbfs2.f22" file by Myron "Gun-a-Hurl" Lokken "inspired" me // to assign "MIXTURE" and "PROP PITCH" instead (thx for this idea), // and I have re-written those lines to work properly // (his attempt was some THR 1 statement with a GUESSED no. of steps, // but you HAVE to use a THR 2 statement using FLAGS INSTEAD).) // IMPORTANT NOTE: *BEFORE* you start a flight: // ---------------------------------------------------------------------- // - THE *TQS HANDLE* MUST *NOT* BE IN ANY (MT/AB) DETENT POSITION, // BUT *BETWEEN BOTH DETENTS*, and // - BOTH *ANTENNA* AND *RANGE* KNOB *MUST* BE ~CENTERED! THR 1 0 2 ^ ^ THR:I/O THR:I/O THR:MAX ^ BTN MT /P /N THR:CutOFF /R THR:MAX // As some sort of "goodie" the "THROTTLE/MIXTURE/PITCH" PANEL (#2) // will *AUTOMATICALLY* pop up the *1ST TIME* "MIXTURE/PITCH" is CHANGED: // - "(X6 OR X7 OR X8 OR X9)": *ANY* "MIXTURE"/"PITCH" FUNCTION, // - "AND NOT X40*": *ONLY* IF *NOT* EXECUTED *BEFORE* // (TOGGLE STATE OF X40 WILL *ONLY* CHANGE AT THE *VERY 1ST TIME*): REM -> ("THR/MIX/PITCH"-panel *ONLY* 4 *1ST TIME* MIX/PITCH changed:) REM ------------------------------------------------------------------ DEF X40 (X6 OR X7 OR X8 OR X9) AND NOT X40* BTN X40 /N WINDOW:#2_I/O REM (-> *AUTOMATIC*)) REM -------------------------------------------------------------------------- REM "Coolie" on TQS: (RADIO SWITCH) REM -------------------------------------------------------------------------- REM *INTERNAL* (/I/O) / *EXTERNAL* (/O):| *EXTERNAL* (/I) VIEW: REM "SNAP VIEW" | "PAN VIEW" REM ------------------------------------+-------------------------------- REM O Fwd | REM I FwdUp45° | O SNAP Fwd REM S4 Up90° | I PAN Up REM (T3) | (T3) REM O LftFwd | O RgtFwd | O LftFwd | O RgtFwd REM I LftFwdUp | /I RgtFwdUp | I LftUp \ | /I RgtUp REM \ | / | \ | / REM O Lft \|/ O Rgt | O SNAP Lft \|/ O Rgt REM (T5) --------(ctr)-------- (T4) | (T5)--------(ctr)--------(T4) REM I LftUp Fwd I RgtUp | I PAN Lft /|\ I Rgt REM / | \ | / | \ REM O LftBwd/ | \O RgtBwd | O LftBwd/ | \O RgtBwd REM I LftBwdUp | I RgtBwdUp | I LftDn | I RgtDn REM (T2) | (T2) REM O Bwd | O SNAP Bwd REM I BwdUp | I PAN Down // Even though the *SWF22* FULLY SUPPORTS WINDOWS' "POV" FUNCTIONALITY, // I do NOT use this feature (see H1 section above) - // I *ALWAYS* use the TQS' "coolie" T2-5 instead: // - it is *EASY TO HANDLE* (just "park" your index finger there), // - there are *NO* PROBLEMS WITH *ANY* CORNER POSITION // (maybe due to its LONGER WAYS TO TRAVEL?), and // - it can be *USED AT THE SAME TIME* WITH THE STICK'S HATS, and // - last but not least I try to PROGRAM *F22 COMPATIBLE*, // and since the *F22* DOES *NOT* SUPPORT WINDOWS "POV" FUNCTIONALITY, // - I prefer to *DIGITALLY* SET UP my own "VIEW SYSTEM" // *SUPERIOR TO ANY "SIMPLE" "POV" FUNCTION* (see T2-5 section below), // - *NOT* "ONLY" SUPPORTING "STANDARD" 8-WAY FUNCTION, BUT // - *ALL* "SNAP VIEWS" FOR ANY *INTERNAL* VIEW (16+1-WAY), and // - *ALL* "SNAP VIEWS" (for QUICK ORIENTATION) PLUS *ALL* "PAN VIEWS" // (for FINE ADJUSTMENT) FOR *EXTERNAL* VIEW (8+8-WAY), and BEST OF ALL // - YOU DO *NOT* HAVE TO SELECT THE NEEDED VIEW MODIFICATION *MANUALLY* // (e.g. by using rocker /U/M/D STATEMENTS and/or /I/O CODES, // and/or "breaking" "PADLOCK" before being allowed to "SNAP" VIEWS): // THE STICK AND ITS SOFTWARE *AUTOMATICALLY* "KNOW" // - WHICH VIEW *TYPE* IS *CURRENTLY ACTIVE*, AND THUS // - WHICH VIEW *MODIFICATION* IS *NEEDED*, AND // - WHICH *FUNCTIONS/MACROS* HAVE TO BE *EXECUTED BEFORE / AFTERWARDS*! // The point is: MACROS MUST *NOT* BE ASSIGNED TO BTTNS/HATS *DIRECTLY* // (as "usual"), BUT TO *FLAGS INSTEAD*: // - the MAIN "VIEW *TYPES*" ("COCKPIT"/"VIRTUAL"/"EXTERNAL") // MUST BE ASSIGNED 2 *FLAGS* (4 "view sys." using "key xy = view xy") // OR FLAGS' *TOGGLE STATES* (4 "view systems" cycling view/HUD modes), // - the "VIEW *MODS*" ("SNAP"/"PAN") MUST BE ASSIGNED TO OTHER *FLAGS*, // WHICH *LINK* "HAT *POSITIONS*" WITH THESE "VIEW *TYPE*" *FLAGS*, // - WITH ADDITIONAL *FLAGS*/FLAGS *TOGGLE STATES* TO ENABLE/DISABLE // *SPECIAL FUNCTIONS* NECESSARY *BEFORE/AFTER* EXECUTION! // In this case, "break" "PADLOCK" *ONLY* IF CURRENTLY *ACTIVE*: // - "(T2 OR T3 OR T4 OR T5)": TQS' "coolie" IN USE (like e.g. "NOT H1M") // - "AND (T9 OR T10)": *ONLY* IF "PADLOCK" IS ACTIVE. REM -> *ONLY* 4 "PADLOCK" (SNAP/PAN "OVERRIDE"): REM ------------------------------------------------------------------ DEF X5 (T2 OR T3 OR T4 OR T5) AND (T9 OR T10) BTN X5 /P /N VIEW:I/O /R VIEW:I/O // In this case, turn "ON" "NUML" *ONLY* IF CURRENTLY "OFF" // - "(T2 OR T3 OR T4 OR T5)": TQS' "coolie" IN USE (same as above), // - "AND X47*": *ONLY* IF "NUML" IS "OFF" (see H4 section above) // (you will NOT find ANY "BTN" STATEMANT here // since THIS FLAG is "just" USED AS ANOTHER "TOGGLE" FOR FLAG *X47*): REM -> *ONLY* 4 "TRIM" (SNAP/PAN "OVERRIDE"): REM ------------------------------------------------------------------ DEF X48 (T2 OR T3 OR T4 OR T5) AND X47* // In order to stay "F22 COMPATIBLE" I had to SHORTEN SOME LINES // TO MATCH THE *F22* LINE LIMIT < 80 CHARACTERS (*SWF22*: < 255 CHARS.) // by REPLACING PARTS of the necessary COMPLEX "mathematical" STATEMENTS // contolling the following different "view sets" // by OTHER FLAGS USED AS "mathematical" VARIABLES or "placeholders" // (with NO macros/functions assigned): REM -> (*F22*: line limit < 80 characters) REM ------------------------------------------------------------------ DEF X41 NOT S3 AND NOT S4 DEF X42 (T4 OR T5) DEF X43 (T2 OR T3) DEF X44 NOT X1* // Let's get "into business": // WHAT we WOULD like to set up would be some 16-way "coolie", // providing *ALL* "SNAP" VIEWS supported: // - ALL *LEVEL* VIEWS (but REPLACING "Fwd" at "hat"U /O by "Fwd Up 45°), // - PLUS ALL *UP* VIEWS (INCLUDING "90°" at "hat"U /I position) // (just take a look at my files for e.g. "EAW" or "WWII Fighters") - // UNFORTUNATELY, "thx" to Microsoft's ROTTEN "VIEW SYSTEM" // (...did I mention this point before?), THIS IS *NOT* THAT EASY: // in some stage of a "mental recovery", they at least decided to use // the "STANDARD KEYPAD VIEWS" LAYOUT any "simmer" knows (and loves) // (rather than some MORE "CTL+ALT+SHF+..." COMBINATIONS): // - there are the 4 *MAIN* VIEWS (Fwd, Bwd, Lft, Rgt), // - PLUS the 4 *CORNER* VIEWS (Fwd/Bwd Lft/Rgt), // which CAN AS WELL BE ACCESSED *COMBINING* 2 *MAIN* VIEWS HELD, // - PLUS 1 *UP* "MODIFIER", to be HELD *ADDITIONALLY* 2 the view dir. - // UNFORTUNATELY (...I wonder WHEN MS will "copyright" this phrase...) // HOW these FUNCTIONS were IMPLEMENTED causes some *STRANGE* RESULTS: // - to take a "LOOK AROUND *LEVEL*" (i.e. without "UP" *MODIFIER*), // you *SHOULD* ONLY USE THE 4 *MAIN* VIEWS' KEYS AND THEIR COMBOS // (KP8, 8+6, 6, 6+2, 2, 2+4, 4, 4+8,...) - // - IF you USE THE *CORNER* VIEWS' KEYS *AS WELL* (as *INTENDED*...), // these views will BOUNCE TO "SNAP FWD" *BEFORE* "STABILIZING"! // (... Microsoft might simply have TRIED TO EMULATE the well known // ERRATIC "CORNER READING" EFFECT OF THRUSTMASTER'S 4-WAY HATS?), // - the "UP" *MODIFIER* (KP5) on the other hand DOES *NOT* WORK // WITH THESE "COMBINED" *CORNER* VIEWS (...just TRY "KP4+8+5!) - // THUS WE *NEED* TO SET UP THE "COOLIE" TO // - *ONLY* USE THE 4 *MAIN* VIEWS AND THEIR COMBOS FOR *LEVEL* VIEWS, // - *ONLY* USE THE 4 *MAIN* VIEWS PLUS *UP* FOR THE *MAIN* 4 *UP* VIEWS, // - USE THE *CORNER* VIEWS PLUS *UP* FOR THE 4 *CORNER UP* VIEWS *ONLY*, // - USE *THESE DEFS ONLY* IF ANY *INTERNAL* VIEW IS *CURRENTLY ACTIVE*: // - "S3 AND (T3 AND NOT (T4 OR T5)": *ONLY* T3 /I (*NOT* CORNER = +T4/5) // - "OR (NOT S3 [AND NOT S4] AND T3)": *OR* T3 /O, // - "AND NOT X1*": *NOT* IF *EXTERNAL* VIEW *CURRENTLY ACTIVE*, // - "AND X21": *LOOP* TO *ENSURE CORRECT "MAKE/BREAK CHAR" EXECUTION* // (see "LOOP" section below): REM -> *ONLY* 4 "COCKPIT / VIRTUAL COCKPIT" (8+8+1-way): REM ------------------------------------------------------------------ DEF X11 ((S3 AND (T3 AND NOT X42)) OR (X41 AND T3)) AND NOT X1* AND X21 DEF X12 (S3 AND (T3 AND T4)) AND NOT X1* AND X22 DEF X13 ((S3 AND (T4 AND NOT X43)) OR (NOT S3 AND T4)) AND NOT X1* AND X23 DEF X14 (S3 AND (T4 AND T2)) AND NOT X1* AND X24 DEF X15 ((S3 AND (T2 AND NOT X42)) OR (NOT S3 AND T2)) AND NOT X1* AND X25 DEF X16 (S3 AND (T2 AND T5)) AND NOT X1* AND X26 DEF X17 ((S3 AND (T5 AND NOT X43)) OR (NOT S3 AND T5)) AND NOT X1* AND X27 DEF X18 (S3 AND (T5 AND T3)) AND NOT X1* AND X28 DEF X19 ((S3 AND (T2 OR T3 OR T4 OR T5)) OR (S4 AND T3)) AND NOT X1* AND X29 // Well, HERE are the *ORIGINAL*, "UNCUT" *DEF STATEMENTS* // ("UNCUT" as far as NO "PLACEHOLDERS" are used - // in fact, they ALREADY ARE "ZIPPED" THROUGH PARENTHESIS' USAGE!): // REM -> (*SWF22* V.2.20 ONLY: line limit < 255 characters) // REM ------------------------------------------------------------------ // DEF X11 ((S3 AND (T3 AND NOT (T4 OR T5))) OR ... // ... (NOT S3 AND NOT S4 AND (T3 OR (T3 AND (T4 OR T5))))) // ... AND NOT X1* AND X21 // DEF X12 (S3 AND (T3 AND T4)) AND NOT X1* AND X22 // DEF X13 ((S3 AND (T4 AND NOT (T2 OR T3))) OR ... // ... (NOT S3 AND (T4 OR (T4 AND (T2 OR T3))))) ... // ... AND NOT X1* AND X23 // DEF X14 (S3 AND (T4 AND T2)) AND NOT X1* AND X24 // DEF X15 ((S3 AND (T2 AND NOT (T4 OR T5))) OR ... // ... (NOT S3 AND (T2 OR (T2 AND (T4 OR T5))))) ... // ... AND NOT X1* AND X25 // DEF X16 (S3 AND (T2 AND T5)) AND NOT X1* AND X26 // DEF X17 ((S3 AND (T5 AND NOT (T2 OR T3))) OR ... // ... (NOT S3 AND (T5 OR (T5 AND (T2 OR T3))))) ... // ... AND NOT X1* AND X27 // DEF X18 (S3 AND (T5 AND T3)) AND NOT X1* AND X28 // // DEF X19 ((S3 AND (T2 OR T3 OR T4 OR T5)) OR ... // ... (S4 AND T3)) AND NOT X1* AND X29 // The FOLLOWING *LOOPS* ARE *REQUIRED* // TO ENSURE *CORRECT* "MAKE / BREAK" EXECUTION // OF FUNCTIONS/MACROS THAT *OUTPUT > 1 CHARACTER /H*: // LOGIC FLAGS ARE *PROCESSED* AND THEIR *OUTPUT* IS *EXECUTED* // IN THE *ORDER IN WHICH THEY OCCUR* IN THE FILE - // "STEP BY STEP" AND "LINE BY LINE"... // ... if you have 2 following FLAGS *SHARING* 1 OR MORE CHARACTERS // (ALL "SNAP xy *UP*" FUNCTIONS SHARE "KP5", // "normal" *CORNER* VIEWS SHARE 1 CHAR. WITH *EACH* "MAIN" VIEW,...), // the stick COULD process // - *BOTH* X14 and X15's "*MAKE* CHAR" CODES *BEFORE* // - X14's "*BREAK* CHAR" CODE, THUS "KILLING" THE *SHARED* CHARACTER(S)! // To PREVENT this (*MORE* THAN 1 FLAG = "ON"), // *EACH* FLAGS' DEF *MUST* REFER TO A "LOOP" // (containing *EXACTLY* the SAME *DEF STATEMENT*) // TO *VERIFY* THE FLAG'S *STATE* ("TRUE = ON" / "FALSE = OFF"): // NOW DURING *EACH SCAN PROCESS* ONLY *1* FLAG'S DEF *CAN* BE "TRUE", // and ITS *OUTPUT* WILL BE *EXECUTED* DURING THE *FOLLOWING* SCAN... // ... thus ALL "make/break" codes are send in the correct order! // SINCE I RAN "OUT OF FLAGS" DUE TO THE *F22* LIMIT OF 48 (*SWF22*: 96), // I HAD TO "MIS"USE *SOME* OF THE FOLLOWING *LOOPS* (X22, 24, 26, 28) // TO VERIFY 2 *DIFFERENT SETS* OF FLAGS' DEFS *OPPOSITE* TO EACH OTHER: // - the *1ST PART* VERIFIES THE *INTERNAL* VIEW "SNAP" SET's FLAG DEFS // (see X11-19 section above), // - the *2ND PART* VERIFIES THE *EXTERNAL* VIEW "PAN" SET's FLAG DEFS // (see X31, 32, 33, 34 section below) - // - BOTH *PARTS* ARE *GROUPED* (AND THUS *SEPARATED*) BY *PARENTHESIS*, // - since BOTH PARTS ARE *OPPOSITE* TO EACH OTHER, // the *CORRECT* LOOP'S PART WILL *AUTOMATICALLY* BE CHOSEN // (and the "FALSE" PART SIMPLY *IGNORED*): REM -> (LOOP to ensure correct MAKE / BREAK execution) REM -> (*F22*: flag limit = 48 used) REM ------------------------------------------------------------------ DEF X21 ((S3 AND (T3 AND NOT X42)) OR (X41 AND T3)) AND NOT X1* DEF X22 ((S3 AND T3 AND T4) AND X44) OR (S3 AND (T3 OR (T3 AND X42)) AND X1*) DEF X23 ((S3 AND (T4 AND NOT X43)) OR (NOT S3 AND T4)) AND NOT X1* DEF X24 ((S3 AND T4 AND T2) AND X44) OR (S3 AND (T4 OR (T4 AND X43)) AND X1*) DEF X25 ((S3 AND (T2 AND NOT X42)) OR (NOT S3 AND T2)) AND NOT X1* DEF X26 ((S3 AND T2 AND T5) AND X44) OR (S3 AND (T2 OR (T2 AND X42)) AND X1*) DEF X27 ((S3 AND (T5 AND NOT X43)) OR (NOT S3 AND T5)) AND NOT X1* DEF X28 ((S3 AND T5 AND T3) AND X44) OR (S3 AND (T5 OR (T5 AND X43)) AND X1*) DEF X29 ((S3 AND (T2 OR T3 OR T4 OR T5)) OR (S4 AND T3)) AND NOT X1* // Again, HERE are the *ORIGINAL*, "UNCUT" LOOPS' *DEF STATEMENTS* // ("UNCUT", JUST "ZIPPED" THROUGH PARENTHESIS' USAGE!): // REM -> (*SWF22* V.2.20 ONLY: line limit < 255 characters) // REM ------------------------------------------------------------------ // DEF X21 ((S3 AND (T3 AND NOT (T4 OR T5))) OR ... // ... (NOT S3 AND NOT S4 AND (T3 OR (T3 AND (T4 OR T5))))) // ... AND NOT X1* // DEF X22 ((S3 AND (T3 AND T4)) AND NOT X1*) OR ... (-> X12) // ... (S3 AND (T3 OR (T3 AND (T4 OR T5))) AND X1*) (-> X31) // DEF X23 ((S3 AND (T4 AND NOT (T2 OR T3))) OR ... // ... (NOT S3 AND (T4 OR (T4 AND (T2 OR T3))))) ... // ... AND NOT X1* // DEF X24 ((S3 AND (T4 AND T2)) AND NOT X1*) OR ... (-> X14) // ... (S3 AND (T4 OR (T4 AND (T2 OR T3))) AND X1*) (-> X32) // DEF X25 ((S3 AND (T2 AND NOT (T4 OR T5))) OR ... // ... (NOT S3 AND (T2 OR (T2 AND (T4 OR T5))))) ... // ... AND NOT X1* // DEF X26 ((S3 AND (T2 AND T5)) AND NOT X1*) OR ... (-> X16) // ... (S3 AND (T2 OR (T2 AND (T4 OR T5))) AND X1*) (-> X33) // DEF X27 ((S3 AND (T5 AND NOT (T2 OR T3))) OR ... // ... (NOT S3 AND (T5 OR (T5 AND (T2 OR T3))))) ... // ... AND NOT X1* // DEF X28 ((S3 AND (T5 AND T3)) AND NOT X1*) OR ... (-> X18) // ... (S3 AND (T5 OR (T5 AND (T2 OR T3))) AND X1*) (-> X34) // // DEF X29 ((S3 AND (T2 OR T3 OR T4 OR T5)) OR ... // ... (S4 AND T3)) AND NOT X1* BTN X11 /H VIEW:Fwd BTN X12 /H VIEW:Rgt_Fwd BTN X13 /H VIEW:Rgt BTN X14 /H VIEW:Rgt_Bwd BTN X15 /H VIEW:Bwd BTN X16 /H VIEW:Lft_Bwd BTN X17 /H VIEW:Lft BTN X18 /H VIEW:Lft_Fwd BTN X19 /H VIEW:Up // Finally (at least concerning *INTERNAL* VIEWS), let's ADD "90° UP" // for BOTH *INTERNAL* AND *EXTERNAL* VIEWS (i.e. "SATELLITE VIEW") - // since we ALREADY had to use S3 for "FWD UP 45°" (see above), // we USE S4 for that purpose - AND *ONLY* FOR THAT SPECIAL ONE: // - "S4 AND T3": S4 *ONLY* IF T3 (= TQS' "hat"U), // - "AND NOT X1*": *ONLY* IF NOT *EXTERNAL* VIEW *CURRENTLY ACTIVE*: REM -> ADD "90° UP": REM ------------------------------------------------------------------ DEF X46 S4 AND (T3 AND NOT X1*) AND H4M BTN X46 /H VIEW:Up // "Thx" to Microsoft's "view system" (...keep repeating myself...), // "SNAP VIEW" FUNCTIONS do *ONLY* work CORRECTLY (/H) in "COCKPIT VIEW", // but in "VIRTUAL COCKPIT VIEW" they are EXECUTED as "FIXED VIEWS" (/N) // and remain in the last position selected - // thus we HAVE to set up a "MIDDLE" = NEUTRAL POSITION // to SWITCH BACK to "FORWARD" VIEW: // - "NOT (T2 OR T3 OR T4 OR T5)": some sort of "H1(2/3/4)M", // - "AND X2*": "VIRTUAL VIEW" *MUST* be "ON" = ACTIVE, // - "AND NOT X1*": "EXTERNAL VIEW" MUST *NOT* be ACTIVE. // (X2* might be "ON" WHILE X1* is "ON" as well, // i.e. you switched to "EXTERNAL VIEW" from "VIRTUAL COCKPIT"): REM -> *ONLY* 4 "VIRTUAL COCKPIT" (neutral="middle" position): REM ------------------------------------------------------------------ DEF X39 (NOT (T2 OR T3 OR T4 OR T5)) AND X2* AND NOT X1* BTN X39 /N VIEW:Fwd // The worst has been done, now the MODIFICATIONS for the *EXTERNAL* VIEW // can be set up very easy USING "QUADRANTS" RATHER THAN *EACH* POSITION: // - TQS' "COOLIE" T2-5 */O* POSITIONS are USED to control // "SNAP" VIEWS FOR A *QUICK OVERVIEW* ("CHECK 6!"), // - TQS' "COOLIE" T2-5 */I* POSITIONS are USED to // "PAN" VIEWS FOR "FINE CONTROL / ADJUSTMENT" - // (ONLY THING to keep in mind is that *ONLY* FOR *EXTERNAL* VIEW // e.g. "SNAP LEFT" DOES *NOT* MEAN "SNAP VIEW TO THE LEFT SIDE", // *BUT* "MOVE CAMERA TO THE LEFT SIDE (OF THE AIRCRAFT)", // THUS you will LOOK FROM A LEFT WING'S POSITION TO THE *RIGHT SIDE* // and HAVE TO REVERSE VIEW *DIRECTIONS* ASSIGNMENTS) - // - "NOT S3 AND T3": *ONLY* T3 ("hat"U) */O*, // - "OR (T3 AND (T4 OR T5))": ADDITIONAL "FIX" for *OLDER CHIPSETS*, // (*SWF22* USERS COULD USE "USE H#_4WAY" FOR ANY OF THE STICKS' HATS, // (i.e. H1-4), but although the TQS' "coolie" WORKS LIKE A "HAT", // IT IS NOT PROGRAMMED AS "1 HAT", BUT AS "4 BUTTONS" :( ...) // - "AND X1*": *ONLY* IF *EXTERNAL* VIEW *CURRENTLY ACTIVE*: REM -> *ONLY* 4 "EXTERNAL CAMERA" /O (8-way): REM ------------------------------------------------------------------ DEF X35 NOT S3 AND (T3 OR (T3 AND (T4 OR T5))) AND X1* DEF X36 NOT S3 AND (T4 OR (T4 AND (T2 OR T3))) AND X1* DEF X37 NOT S3 AND (T2 OR (T2 AND (T4 OR T5))) AND X1* DEF X38 NOT S3 AND (T5 OR (T5 AND (T2 OR T3))) AND X1* BTN X35 /H VIEW:Bwd BTN X36 /H VIEW:Lft BTN X37 /H VIEW:Fwd BTN X38 /H VIEW:Rgt // As you might have expected, "same procedure" for */I* POSITIONS - // but this time ADDITIONAL *LOOPS* ARE REQUIRED // SINCE *MULTIPLE KEYS* HAVE TO BE HELD AND/OR BROKEN *CORRECTLY* // (... and I will NOT guess if there is ANYONE out there who REALLY // MANAGES TO CONTROL "PAN" VIEWS VIA *KEYBOARD* *WHILE* FLYING...): REM -> *ONLY* 4 "EXTERNAL CAMERA" /I (+8-way): REM ------------------------------------------------------------------ DEF X31 S3 AND (T3 OR (T3 AND (T4 OR T5))) AND X1* AND X22 DEF X32 S3 AND (T4 OR (T4 AND (T2 OR T3))) AND X1* AND X24 DEF X33 S3 AND (T2 OR (T2 AND (T4 OR T5))) AND X1* AND X26 DEF X34 S3 AND (T5 OR (T5 AND (T2 OR T3))) AND X1* AND X28 BTN X31 CAM/VIEW:Up BTN X32 CAM/VIEW:Rgt BTN X33 CAM/VIEW:Dn BTN X34 CAM/VIEW:Lft // IMPORTANT NOTE: // ---------------------------------------------------------------------- // - YOU MUST *NOT* OPEN *ADDITIONAL WINDOWS*, // since this *WILL* MESS UP YOUR VIEW FUNCTIONS // (...you guessed it: "thx" to Microsoft's "view system"...) // by SWITCHING VIEWS IN *THESE* WINDOWS INSTEAD OF THE *MAIN* SCREEN! REM -------------------------------------------------------------------------- REM ANTENNA RING (center detent) REM -------------------------------------------------------------------------- REM *F22* ANT SENSE/DIRECTION: | *SWF22* /*HOTAS Cougar*: REM ------------------------------------+--------------------------------- REM UP <- CTR.DETENT -> DOWN | DOWN <- CTR.DETENT -> UP REM 1 [#] [cw] [ccw] [ctr] | 1 [#] [ccw] [cw] [ctr] REM 2 [#] [fullcw]..[ctr]..[fullccw] | 2 [#] [fullccw]..[ctr]..[fullcw] // The *READING SENSE* of *ORIGINAL F22* IS *OPPOSITE(!)* TO *SWF22* - // since the *SWF22* ALONE(!) (without TQS or RCS) // works as "18(!) BTN, 2 AXIS" (TQS: ANOTHER 14(!) BTN PLUS 3(!) AXES, // and RCS 1 AXIS, TOTAL 32(!)BTN 6(!) AXES), // BOTH ANT AND RNG work FULLY ANALOG - // with *ANALOG CALIBRATION* RESULTING IN "DIGITAL REVERSION" TO *F22*... // (See beginning of TQS' section above...) // *FLAGS* RATHER THAN MACROS DIRECTLY are assigned to the ANT positions, // with NO MODIFIERS used // (for a "normal" keymapping you could, but they MIGHT NOT WORK PROPERLY // WITH "SHIFT" KEYS COMBINATIONS LIKE ADDITIONAL "ALT" AND/OR "CTL" - // luckily in these cases MODIFIERS ARE NOT NEEDED: // since FLAGS ARE EITHER "ON" OR "OFF", they OUTPUT CONTINUOUSLY). // BOTH *ANTENNA* AND *RANGE KNOB* might use FLAGS WITHIN // *ANALOG TYPE 2 THROTTLE STATEMENTS* - // ...due to flags' VERY SPECIAL CAPABILITIES SUCH A "TYPE 2" STATEMENT // CAN BE USED TO SET UP *ANY* "THROTTLE DEVICE TYPE", be it // - an "ANALOG TYPE 1" THROTTLE (*USING* a "TYPE 2" STATEMENT!), // - an "ANALOG TYPE 2" THROTTLE (...not surprisingly), // - an "ANALOG TYPE 3" THROTTLE (*USING* a "TYPE 2" STATEMENT!), // - or EVEN *ANY COMBINATION* OF *ANY* OF THOSE "ANALOG THROTTLE TYPES": // THE *FLAGS* ASSIGNED TO THE DIFFERENT POSITIONS OF ANT/RNG // CAN BE USED TO *DEFINE "ANALOG THROTTLE TYPE" ZONES*, // with *EACH* ZONE (= FLAG) EXECUTING *EXACTLY* THE "THR TYPE" *NEEDED*: // since *FLAGS* CAN BE *COMBINED* WITH *ANY* "STANDARD" // - *SHIFT* FUNCTIONS ("/I, /O" OR "/U, /M, /D"), // - *OUTPUT* MODIFIERS ("/N, /H"), OR // - *RAW* CODES (BASIC "MAKE / BREAK CHAR" COMMANDS), // BY *USING FLAGS IN "ANALOG TYPE 2 THROTTLE" STATEMENTS // YOU *INDIRECTLY* ARE ABLE TO // - *USE ALL FUNCTIONS* within this statement, AND // - *EXECUTE ANY KEY/-COMBINATION/-SEQUENCE(!)* NEEDED! // (...AND you can use them as BASE for *LINKED* modifications - // USUALLY, I *ALWAYS* USE THE ANTENNA for *TWISTING* VIEW SELECTION, // and SET UP my PROGRAM FILE to USE ITS *POSITION = FLAG* // to *AUTOMATICALLY* SELECT THE CORRECT VIEW MODS ("SNAP/PAN") - // see my files for "EAW" or "WWII Fighters"): ANT 2 3 X6 ^ X7 REM *F22* ANT 2 3 X7 ^ X6 REM *SWF22* BTN X6 THR:_+ REM cw. = full UP REM ^ (DEADZONE) REM ctr.(33%) | BTN X7 THR:_- REM ccw. = full DOWN REM -------------------------------------------------------------------------- REM RANGE KNOB (NO center detent) REM -------------------------------------------------------------------------- REM *F22* RNG SENSE/DIRECTION: | *SWF22* RNG SENSE/DIRECTION: REM ------------------------------------+--------------------------------- REM LFT <\________/> RGT | RGT <\________/> LFT REM 1 [#] [cw] [ccw] | 1 [#] [ccw] [cw] REM 2 [#] [fullcw]...[fullccw] | 2 [#] [fullccw]...[fullcw] // (See beginning of TQS' section and ANT section above...) // ADDITIONAL "NULLCHRs" are USED to define some sort of "DEADZONE", // since it is NOT EASY to *(RE)CENTER* the RNG KNOB WITHOUT ANY DETENT. // IMPORTANT NOTE: *BEFORE* you start a flight: // ---------------------------------------------------------------------- // - BOTH *ANTENNA* AND *RANGE* KNOB *MUST* BE ~CENTERED! RNG 2 5 X8 ^ ^ ^ X9 REM *F22* RNG 2 5 X9 ^ ^ ^ X8 REM *SWF22* BTN X8 THR:Pitch_- REM cw. = full LFT REM (DEADZONE) REM ctr.(60%) | BTN X9 THR:Pitch_+ REM ccw. = full RGT // (If you DO NOT USE FLAGS and their FLAGS' TOGGLE STATES RATHER THAN // any sort of "common" toggle (ASSIGNED 2 A BTTN DIRECTLY), your views // soon will get totally MESSED UP, "thx" to MS's "view system": // - as long as you stay in "COCKPIT VIEW" *ONLY* - // without switching to "EXTERNAL VIEW" or using "PADLOCK" - // this toggle e.g. switches between "COCKPIT" and "FULLSCREEN + HUD" // by executing e.g. "s w" and "s s w w" // (CYCLING ALL AVAILABLE views, but LEAVING OUT "EXTERNAL VIEW"), // - but as soon as you e.g. enable "PADLOCK" and then use this toggle // your have managed to TOTALLY MESS UP your views: // since "PADLOCK" is treated as one form of "VIRTUAL COCKPIT VIEW", // this toggle will cycle at least ONE STEP TOO MUCH // (since it is set up to work for "COCKPIT VIEW" as start pos.) - // - if you used "EXTERNAL VIEW" in the meantime, AGAIN your views are // TOTALLY OUT OF SYNCHRONIZATION! // This is WHY I USE "LOGIC FLAGS" INSTEAD: // - THE *FLAGS' TOGGLE STATES* (*NOT* ANY *BUTTON*) HANDLE // WHETHER any function/macro IS ALLOWED TO BE EXECUTED OR NOT, and // - WHETHER the "SYSTEM" as such still IS SYNCHRONIZED, // by SIMPLY IGNORING "out of synch" toggle requests // (this is WHY I use FLAGS' TOGGLE STATES rather than those of bttns: // the BUTTONS /T STATE would change every time this bttn is pressed, // even if the funct./macro assigned would not be allowed to execute, // thus causing the "system" to run out of synchronization)... // The "RANGE KNOB" T6 is USED to TOGGLE "FULLSCREEN + HUD" / "COCKPIT" // (see H1 section above...): // - "T6 AND NOT T9 AND NOT T10": *ONLY* IF NO "PADLOCK" *ACTIVE*, // - "AND NOT X1*": *ONLY* IF NOT *EXTERNAL* VIEW *CURRENTLY ACTIVE*, // - "AND NOT X2*": *ONLY* IF NOT "VIRTUAL COCKPIT" *ACTIVE*: REM -> "FULLSCREEN + HUD" *ONLY* 4 COCKPIT VIEW (->"PARITY"): REM ------------------------------------------------------------------ DEF X3 T6 AND (NOT T9 AND NOT T10) AND NOT X1* AND NOT X2* BTN X3 /T /N VIEW:Mode_+ /T /N VIEW:Mode_2+ REM -------------------------------------------------------------------------- REM DOGFIGHT SWITCH: (ROCKER) REM -------------------------------------------------------------------------- REM T7 <- ctr. -> T8 REM (/U) (/M) (/D) BTN T7 REM ([/U shift button]) BTN T8 REM ([/D shift button]) REM -------------------------------------------------------------------------- REM SPEED BRAKE: REM -------------------------------------------------------------------------- REM T9(lft) <- ctr. -> (rgt) T10 REM (temp.) (Un/Lock) // The "SPEEDBRAKE" T9+10 in this file is USED to control "PADLOCK": // - T9 will *TEMPORARILY* ACTIVATE "PADLOCK" // (HOLD it to QUICKLY CHECK TGT's POSITION relative to your aircraft), // - T10 will *LOCK* "PADLOCK" (to MANEUVRE into kill position): // - WHILE "PADLOCK"ED you *CAN* USE TQS' "COOLIE" T2-5 (see sect. above) // to TEMPORARILY *OVERRIDE* "PADLOCK" and take a QUICK "SNAP VIEW" // (e.g. "Fwd" to CHECK LEVEL (wings 2 horizon), or "Bwd" to CHECK 6!): // IMPORTANT NOTE: // ---------------------------------------------------------------------- // - YOU MUST *NOT* ACTIVATE "PADLOCK" IF THERE IS *NO* TGT TO PADLOCK // (the game will NOTIFY you!): BE SURE TO *DIRECTLY* SWITCH IT *OFF* - // - IF YOU LEAVE *BTN T10* IN "PADLOCK" MODE WITH *NOTHING* "PADLOCK"ED, // YOU WILL *RUN OUT OF SYNCHRONIZATION* AS SOON AS YOU RELEASE BTN T10 // AGAIN IF *THEN* THERE *IS* ANY "PADLOCK"ABLE TARGET AVAILABLE! // (besides, this is the ONLY way you could run out of synchronization) // - IF nevertheless this SHOULD HAPPEN: // simply HIT THE "PADLOCK" *KEY* (*KEYBOARD*!) to leave "PADLOCK", // then you will be *OUT* OF "PADLOCK", but *IN* SYNCHRONIZATION again: // now you can REENTER "PADLOCK" USING T9 (TEMP) OR T10 (LOCKED)... REM -> "PADLOCK" (-> "PARITY"): REM ------------------------------------------------------------------ DEF X4 (T9 OR T10) BTN X4 /P /N VIEW:I/O /R VIEW:I/O REM -------------------------------------------------------------------------- REM TRACKBALL: REM -------------------------------------------------------------------------- // ANYBODY able to USE the TRACKBALL AS A "POINT AND DRAG" DEVICE // might feel free to do so by modifying the following lines // (though I RECOMMEND *NOT* TO OPEN ADDITIONAL WINDOWS!): USE NOMOUSE REM NOT *NEEDED* for *SWF22* REM USE MTYPE A3 REM MTYPE | LFT Btn | RGT Btn REM ------+---------+----------- REM A1 | T1 | T6 REM A2 | T6 | T1 REM A3 | T1 | / REM A4 | T6 | / REM A5* | / | / REM * (only movement) REM USE MSENS 75 REM Trackball SPEED (*SWF22*) REM (mouse NOT afflicted) REM (DEFAULT speed: MSENS ~25) REM T14(up) REM | REM (lft)T12 -- ctr. -- T11(rgt) REM (bwd) | (fwd) REM T13(dn) // Since it IS really hard to HIT THE CORRECT DIRECTION AT *1ST ATTEMPT*, // I *USUALLY* USE *ALL* TRACKBALL POSITIONS for MULTIPLAYER/ONLINE RADIO // ("Roger Wilco" is FREE, and by the way - // since you ALREADY *HAVE* spent quite some money for your TM gear, // you should NOT be complaining about the price for a headset...): BTN T14 RADIO:P/R REM (-> 2 be SET UP, see "m22") BTN T13 RADIO:P/R BTN T12 RADIO:P/R BTN T11 RADIO:P/R // If you nevertheless should prefer to TYPE IN your messages, // you might as well do so (T1 */I*) - // since I considered "HUD COLOR" to be MORE IMPORTANT (and USED), // I assigned THIS function to the T1 */O* POSITION: BTN T1 /O /N VIEW:Color /I /N RADIO: REM (if you prefer TYPING...) REM CHECK#6#!##############################################################EoF // I AM NOT IN ANY WAY RELATED TO THE COMPANIES OF "THRUSTMASTER" // OR "GUILLEMOT" (OR "STICKWORKS", by the way, // NOR "MICROSOFT" - did you guess? - who made a FANTASTIC GAME // with an unbelievable "no keymapping but shortcuts" system (?)), // BUT JUST A CONTENT USER OF THRUSTMASTER STICKS SINCE MANY YEARS // (started with a "stand alone" F16 FLCS in 1994/95) // ...and just (Jan. 2001) "grown up" by converting my old F16 FLCS // (with NO FLAG SUPPORT at all, thus "castrated") // to a "full" SWF22 (by STICKWORKS' digital upgrade chipset, // info at "www.stickworks.com" ...believe me, IT IS WORTH every single // dollar, pound, peso, DM, or coconut you have to spend for it!) // and thus eager to REALLY *USE* the NEW POSSIBILITIES given // through "LOGIC FLAGS" SUPPORT // by *ENHANCING* those "good for all" (thus "nothing in special") // examples given in Thrustmaster's "Application Note 0002a" // rather than just COPYING and modifying other users' files // (who in most cases DO *NOT* use these possibilities for anything // MORE than setting up 8/16-way "keypad views" - // though I MUST ADMIT that I learned most of what I understand // concerning logical flags YET by ANALYZING such examples)... ;) // ...I DEFINITIVLY *WILL* POST more program files like this one, // showing MORE EXAMPLES of what ELSE is potentially possible, // in the future - currently I am working on // - *PROP SIMS* (both WWI and WWII), such as // "European Air War" or "WWII Fighters" (both finished), // "Red Baron 2", "Flying Corps", or "War Birds", and "CFS 2", // - *'COPTER SIMS*, such as // "Gunship!", or the "Enemy Engaged"-series, // - *SCI-FI SIMS*, such as // "Independence War", or the "Mech Warrior"- and "Descent"-series, // - *NON-FLIGHT SIMS*, such as // the "Rainbow Six"-series, "SWAT 3", or "Project I.G.I." (finished) // (WHY NOT use both TQS and RCS programmed digitally and SHIFTED, // COMBINED with the mouse?!) - // if you should LIKE this kind of program file // (...and you *WILL* if you REALLY take some time to FIND OUT...), // I would be glad for ANY *FEEDBACK* :) // - be it POSITIVE (maybe YOU have ANY DIFFERENT/FURTHER/better ideas // of WHAT TASKS COULD/SHOULD be solved/desired ELSE/instead), // - or NEGATIVE (but NO FLAMING, please - I AM JUST STARTING... // understand THIS program file as "EXPERIMENTAL" or a "PROTOTYPE" - // MAYBE some parts COULD/should be solved DIFFERENT - // then TELL ME!)... // The point IS: THIS FILE *WORKS* - // AND IT *WORKS* IN A WAY *NEVER* SEEN BEFORE: // - USING "ADVANCED PROGRAMMING" "TO THE (YET UNKNOWN) LIMIT" // ("unknown" even 2 "Thrustmaster" and thus not documented ANYWHERE!), // - FEATURING FULLY *AUTOMATIC(!) PROCESSES* // - to SOLVE EVEN *MOST COMPLEX TASKS* (like MS' "view/trim system"...), // - which BY *NO MEANS* OF "STANDARD" THRUSTMASTER SYNTAX ALONE // COULD BE ACHIEVED! // I *DO BELIEVE* that I HAVE opened some yet "unknown door(s)" // of Thrustmaster programming, // and now I would LIKE TO *SHARE* this knowledge WITH THE TM COMMUNITY - // *MY WAY* OF PROGRAMMING almost surely might be TOO COMPLEX/COMPLICATED // for most TM users (who "just" wish to DOWNLOAD AND START *PLAYING*, // or create "standard" "ASSIGN KEY#xy 2 BTN#xy" set-ups using // TM's or 3rd party editors - ANYONE *WITHOUT* "FOX TWO" YET?), // but MAYBE THERE *IS* SOMEONE OUT THERE WHO WILL "RETURN THE BALL" // (unfortunately BILL "COWBOY" WILSON is no longer among us - // I really wonder what THIS GUY might have done with this knowledge!)... // So, FINALLY AND AGAIN: *PLEASE* MAIL *ANY* FEEDBACK to // "Don.ULFonso@Thrustmaster-X-Files.de" // Thx and ENJOY...