2026年1月13日 星期二

Sol-R1 + Viper Grip tmc for (Falcon 3.0 & 4.0)

這應該是一個國中以及高中的遺憾 當年英文程度不夠 有了Falcon 3.0確不會飛
也知道有個高檔的虛擬飛行搖桿叫做Thrustmaster FCS.

遊戲沒了!Steam又再買了一套...原來的磁片版已經借給侯東甫 高中畢業後都連絡不上了!!
可惜了當年中文翻譯說明書了.絕版品.

現在年近50..玩心來了 先上網研究如果買了這個牌子的搖桿要做那些前置作業
就是搖桿上的虛擬鍵盤設定!! 驚人原來時代的演進這30年來的遊戲可以這樣搞
Sol-R1 + Viper Grip 會變出啥樣的火花呢?

先來上Falcon 3.0的TATGET設定 Falcon3.tmc

include "target.tmh"


// --- 狀態記憶變數 ---

int Gear_Pos = 0;   // 0=收, 1=放

int Brake_Pos = 0;  // 0=收, 1=放

int Flap_Pos = 0;   // 0=收, 1=放


int main()

{

    // 初始化硬體 (Joystick = Sol-R1 底座 + Viper Grip)

    if(Init(&Joystick, &LMFD, &RMFD)) return 1;


    // 初始環境燈:綠色 (系統正常)

    GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 0)); 


    // --- 軸向設定 ---

    MapAxis(&Joystick, JOYX, DX_X_AXIS);

    MapAxis(&Joystick, JOYY, DX_Y_AXIS);

    MapAxis(&Joystick, SLIDER, DX_THROTTLE_AXIS); // Sol-R1 底座撥桿設為油門


    // --- Viper Grip 戰鬥按鍵 ---

    MapKey(&Joystick, TG1, ' ');              // 扳機:機砲

    MapKey(&Joystick, S2, USB_ENTER);         // 紅鈕:發射飛彈

    

    // TMS 映射雷達與目標

    MapKey(&Joystick, TMSU, 'f');             // 雷達模式

    MapKey(&Joystick, TMSD, 'r');             // 雷達範圍

    MapKey(&Joystick, TMSL, 't');             // 目標鎖定

    

    // CMS 映射防禦系統 (按下時 LED 會閃爍紅光)

    MapKey(&Joystick, CMSU, CHAIN(

        PULSE+'c', 

        LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_FLASH)

    ));

    MapKeyR(&Joystick, CMSU, LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_STATIC));


    // --- Sol-R1 底座功能與燈光邏輯 ---

    

    // B1: 起落架 Gear

    MapKey(&Joystick, B1, EXEC("Check_Gear_F3();"));

    

    // B2: 襟翼 Flaps

    MapKey(&Joystick, B2, EXEC("Check_Flaps_F3();"));

    

    // B3: 減速板 Brakes

    MapKey(&Joystick, B3, EXEC("Check_Brakes_F3();"));


    // 視角控制 (POV Hat)

    MapKey(&Joystick, H1U, USB_F1);

    MapKey(&Joystick, H1D, USB_F4);

    MapKey(&Joystick, H1L, USB_F2);

    MapKey(&Joystick, H1R, USB_F3);

    // --- Falcon 3.0 專屬:綠色系統喚醒儀式 ---

    int i;

    for(i=0; i<256; i=i+15) { 

        // 綠色通道 (G) 漸亮,R 和 B 保持為 0

        GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, i, 0)); 

        Sleep(20);

    }

    // 最終固定在 Falcon 3.0 的經典螢光綠

    GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 0)); 

    printf("FALCON 3.0 SYSTEM ONLINE. CRT INITIALIZED.");

}


// --- 邏輯函數定義 ---

int Check_Gear_F3() {

    ActKey(PULSE+KEYON+'g');

    if (Gear_Pos == 0) { GameOutput(&Joystick, OUT_ID_LED_1, ON); Gear_Pos = 1; }

    else { GameOutput(&Joystick, OUT_ID_LED_1, OFF); Gear_Pos = 0; }

}


int Check_Flaps_F3() {

    ActKey(PULSE+KEYON+'f');

    if (Flap_Pos == 0) { GameOutput(&Joystick, OUT_ID_LED_2, ON); Flap_Pos = 1; }

    else { GameOutput(&Joystick, OUT_ID_LED_2, OFF); Flap_Pos = 0; }

}


int Check_Brakes_F3() {

    ActKey(PULSE+KEYON+'b');

    if (Brake_Pos == 0) { GameOutput(&Joystick, OUT_ID_LED_3, ON); Brake_Pos = 1; }

    else { GameOutput(&Joystick, OUT_ID_LED_3, OFF); Brake_Pos = 0; }

}


int EventHandle(int type, int alias, int x) { DefaultMapping(&events, alias, x); }


再來上Falcon 4.0的TATGET設定 Falcon4AF.tmc

include "target.tmh"


// --- 狀態記憶變數 ---

int Gear_Pos = 0;

int Brake_Pos = 0;


int main()

{

    if(Init(&Joystick, &LMFD, &RMFD)) return 1;


    // 初始環境燈:橘色 (F-16 電子儀表感)

    GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0)); 


    // --- 軸向設定 ---

    MapAxis(&Joystick, JOYX, DX_X_AXIS);

    MapAxis(&Joystick, JOYY, DX_Y_AXIS);

    MapAxis(&Joystick, SLIDER, DX_THROTTLE_AXIS);


    // --- Viper Grip HOTAS ---

    MapKey(&Joystick, TG1, ' ');              // Trigger: Gun

    

    // S2 發射飛彈:按下時底座燈光變紅,放開回橘

    MapKey(&Joystick, S2, CHAIN(

        DOWN+USB_ENTER,

        EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 0, 0));")

    ));

    MapKeyR(&Joystick, S2, CHAIN(

        UP+USB_ENTER,

        EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0));")

    ));


    // TMS/DMS 映射 (Ctrl/Alt 組合鍵)

    MapKey(&Joystick, TMSU, L_CTL+USB_UP);

    MapKey(&Joystick, TMSD, L_CTL+USB_DOWN);

    MapKey(&Joystick, DMSU, L_CTL+L_ALT+USB_UP);

    MapKey(&Joystick, DMSD, L_CTL+L_ALT+USB_DOWN);


    // CMS 防禦:按下時啟動閃爍警報

    MapKey(&Joystick, CMSU, CHAIN(

        PULSE+'z', 

        LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_FLASH)

    ));

    MapKeyR(&Joystick, CMSU, LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_STATIC));


    // --- Sol-R1 底座功能與燈光邏輯 ---


    // B1: 起落架 (放下時 RGB 轉紅,確保視覺警示)

    MapKey(&Joystick, B1, EXEC("Check_Gear_AF();"));


    // B2: 減速板 (開啟時 LED 5 恆亮,提醒你現在速度受阻)

    MapKey(&Joystick, B2, EXEC("Check_Brakes_AF();"));

    

    // B4: Master Caution Reset (模擬警報解除)

    MapKey(&Joystick, B4, CHAIN(

        PULSE+L_CTL+'c',

        EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0));"),

        LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_STATIC)

    ));


    // 視角控制 (POV Hat)

    MapKey(&Joystick, H1U, USB_KP8);

    MapKey(&Joystick, H1D, USB_KP2);

    MapKey(&Joystick, H1L, USB_KP4);

    MapKey(&Joystick, H1R, USB_KP6);


    // 放在 main() 函式的結尾,啟動後的「系統喚醒」儀式

    int i;

    for(i=0; i<256; i=i+10) { // 燈光從無到有慢慢變亮

    GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(i/2, i/4, 0)); // 琥珀色漸亮

    Sleep(20);

    }

    // 最終固定在你的 Falcon 4.0 橘色

    GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0)); 

    printf("SYSTEM READY. WELCOME BACK, PILOT."); // 這行字會出現在 T.A.R.G.E.T. 的視窗裡

}


// --- 邏輯函數定義 ---

int Check_Gear_AF() {

    ActKey(PULSE+KEYON+'g');

    if (Gear_Pos == 0) { GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 0, 0)); Gear_Pos = 1; }

    else { GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0)); Gear_Pos = 0; }

}


int Check_Brakes_AF() {

    ActKey(PULSE+KEYON+'b');

    if (Brake_Pos == 0) { GameOutput(&Joystick, OUT_ID_LED_5, ON); Brake_Pos = 1; }

    else { GameOutput(&Joystick, OUT_ID_LED_5, OFF); Brake_Pos = 0; }

}


int EventHandle(int type, int alias, int x) { DefaultMapping(&events, alias, x); }

以上的設定是假設買了Sol-R1並更換Viper Grip的作法...Gemini也很可愛的提醒

使用說明:

  1. 奢華追加:機型燈光切換功能

    我們可以利用 S4(小指鈕) 當作「功能切換鍵 (Shift Key)」。

    • 操作邏輯: 按住 S4 不放,再撥動苦力帽(H1):

      • 左 (H1L): 切換為 F-16 經典綠

      • 右 (H1R): 切換為 MiG-29 蘇聯青綠

      • 上 (H1U): 切換為 F-18 大黃蜂螢光綠

    請將這段代碼加入到你的 main() 函式中:

    // --- 奢華享受:按住小指鈕 (S4) + 苦力帽 (H1) 切換機型燈光 ---


    // H1L: 切換至 F-16 經典綠

    MapKey(&Joystick, H1L, IFUSB(S4, 

        EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 0));   printf(\"MODE: F-16 CLASSIC GREEN\n\");"), 

        USB_F2 // 如果沒按 S4,維持原本的 F2 視角功能

    ));


    // H1R: 切換至 MiG-29 蘇聯青綠 (Turquoise)

    MapKey(&Joystick, H1R, IFUSB(S4, 

        EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 150)); printf(\"MODE: MiG-29 SOVIET BLUE-GREEN\n\");"), 

        USB_F3 // 如果沒按 S4,維持原本的 F3 視角功能

    ));


    // H1U: 切換至 F/A-18 螢光綠 (偏白的高亮綠)

    MapKey(&Joystick, H1U, IFUSB(S4, 

        EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(100, 255, 100)); printf(\"MODE: F/A-18 NAVY BRIGHT GREEN\n\");"), 

        USB_F1 // 如果沒按 S4,維持原本的 F1 視角功能

    ));


  2. 儲存與運行: 打開 T.A.R.G.E.T. Script Editor,貼上對應代碼,點擊 Compile 確認無誤後點擊 Run

  3. 單機作業技巧:

    • 在《Falcon 4.0》中,如果發現油門撥桿方向反了,可以將 MapAxis 的最後一個參數加上 AXIS_REVERSED

    • Sol-R1 的按鍵編號(B1~B23)請依據 T.A.R.G.E.T. GUI 內的編號對應,以上預設 B1~B5 為最常用的系統鍵。

  4. DOSBox 提醒: T.A.R.G.E.T. Script Editor 程式運行 Falcon3.tmc 後,DOSBox 的 joysticktype 設為 fcs 即可完美捕捉這些字母輸入。

  5. DOSBox 按鍵映射 (MapKey): 走的是「虛擬鍵盤通道」。這些訊號會讓電腦以為你真的按了鍵盤。關鍵設定提醒:dosbox.conf 中,請確保以下搭配:

    [joystick]

    joysticktype=fcs

    timed=false

    # 重要:不要在 DOSBox 內部的 Mapper (Ctrl+F1) 重複設定搖桿按鈕,讓它保持空白,只讓 T.A.R.G.E.T. 處理按鍵。


沒有留言:

張貼留言

Sol-R1 + Viper Grip tmc for (Falcon 3.0 & 4.0)

這應該是一個國中以及高中的遺憾 當年英文程度不夠 有了Falcon 3.0確不會飛 也知道有個高檔的虛擬飛行搖桿叫做Thrustmaster FCS. 遊戲沒了!Steam又再買了一套...原來的磁片版已經借給侯東甫 高中畢業後都連絡不上了!! 可惜了當年中文翻譯說明書了.絕版品...