這應該是一個國中以及高中的遺憾 當年英文程度不夠 有了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;
int Brake_Pos = 0;
int Flap_Pos = 0;
int main()
{
if(Init(&Joystick, &LMFD, &RMFD)) return 1;
// --- 1. 軸向設定 ---
MapAxis(&Joystick, JOYX, DX_X_AXIS);
MapAxis(&Joystick, JOYY, DX_Y_AXIS);
MapAxis(&Joystick, SLIDER, DX_THROTTLE_AXIS);
// --- 2. Viper Grip 核心鍵 (USB 化以避開輸入法) ---
MapKey(&Joystick, TG1, USB_SPACE); // 扳機:機砲
// 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(0, 255, 0));")
));
// CMS 防禦:按下閃爍
MapKey(&Joystick, CMSU, CHAIN(
PULSE+USB_C,
LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_FLASH)
));
MapKeyR(&Joystick, CMSU, LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_STATIC));
// --- 3. 奢華享受:S4 + H1 切換燈光 (維持 USB_Fx 視角) ---
MapKey(&Joystick, H1L, IFUSB(S4,
EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 0)); printf(\"MODE: F-16 GREEN\n\");"),
USB_F2
));
MapKey(&Joystick, H1R, IFUSB(S4,
EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 150)); printf(\"MODE: MiG-29 TURQUOISE\n\");"),
USB_F3
));
MapKey(&Joystick, H1U, IFUSB(S4,
EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(100, 255, 100)); printf(\"MODE: F/A-18 BRIGHT\n\");"),
USB_F1
));
MapKey(&Joystick, H1D, USB_F4);
// --- 4. Sol-R1 底座撥桿 ---
MapKey(&Joystick, B1, EXEC("Check_Gear_F3_USB();"));
MapKey(&Joystick, B3, EXEC("Check_Flaps_F3_USB();"));
MapKey(&Joystick, B14, EXEC("Check_Brakes_F3_USB();"));
// --- 5. 系統喚醒儀式 ---
int i;
for(i=0; i<256; i=i+15) {
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, i, 0));
Sleep(20);
}
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 0));
printf("FALCON 3.0 USB-STABLE SYSTEM READY.");
}
// --- 邏輯函數 (USB Scancode 化) ---
int Check_Gear_F3_USB() {
ActKey(PULSE+KEYON+USB_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_USB() {
ActKey(PULSE+KEYON+USB_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_USB() {
ActKey(PULSE+KEYON+USB_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;
// --- 1. 軸向設定 ---
MapAxis(&Joystick, JOYX, DX_X_AXIS);
MapAxis(&Joystick, JOYY, DX_Y_AXIS);
MapAxis(&Joystick, SLIDER, DX_THROTTLE_AXIS);
// --- 2. Viper Grip HOTAS ---
MapKey(&Joystick, TG1, USB_SPACE); // Trigger: Gun
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 映射
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 防禦:掃描碼 USB_Z
MapKey(&Joystick, CMSU, CHAIN(
PULSE+USB_Z,
LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_FLASH)
));
MapKeyR(&Joystick, CMSU, LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_STATIC));
// --- 3. Sol-R1 底座功能 ---
MapKey(&Joystick, B1, EXEC("Check_Gear_AF_USB();"));
MapKey(&Joystick, B2, EXEC("Check_Gear_AF_USB();"));
MapKey(&Joystick, B3, PULSE+L_SHIFT+USB_G); // 空中加油口
MapKey(&Joystick, B14, PULSE+USB_J); // ECM
MapKey(&Joystick, B12, PULSE+L_SHIFT+USB_L); // 燈光
MapKey(&Joystick, B16, CHAIN(
PULSE+L_CTL+USB_C,
EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0));"),
LED(&Joystick, LED_ONOFF, LED_CURRENT+LED_STATIC)
));
MapKey(&Joystick, B17, EXEC("Check_Brakes_AF_USB();"));
// --- 4. 旋鈕模式 (使用 USB_N, USB_1, USB_2) ---
MapKey(&Joystick, B9, CHAIN(PULSE+USB_N, EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0,0,255));")));
MapKey(&Joystick, B10, CHAIN(PULSE+USB_1, EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0,255,0));")));
MapKey(&Joystick, B11, CHAIN(PULSE+USB_2, EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255,0,0));")));
// --- 5. 右旋鈕:Master Arm ---
MapKey(&Joystick, B20, PULSE+L_CTL+L_ALT+USB_S);
MapKey(&Joystick, B21, PULSE+L_CTL+L_ALT+USB_A);
MapKey(&Joystick, B22, PULSE+L_CTL+L_ALT+USB_D);
MapKey(&Joystick, B23, PULSE+USB_L);
// 視角控制 (POV Hat)
MapKey(&Joystick, H1U, USB_KP8);
MapKey(&Joystick, H1D, USB_KP2);
MapKey(&Joystick, H1L, USB_KP4);
MapKey(&Joystick, H1R, USB_KP6);
// --- 6. 系統喚醒儀式 ---
int i;
for(i=0; i<256; i=i+10) {
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(i/2, i/4, 0));
Sleep(20);
}
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0));
printf("FALCON 4.0 USB-STABLE SYSTEM READY.");
}
// --- 邏輯函數定義 ---
int Check_Gear_AF_USB() {
ActKey(PULSE+KEYON+USB_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_USB() {
ActKey(PULSE+KEYON+USB_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也很可愛的提醒
使用說明:
奢華追加:機型燈光切換功能艙氛圍 (S4 + H1 組合鍵)
我們可以利用 S4(小指鈕) 當作「功能切換鍵 (Shift Key)」。
透過 T.A.R.G.E.T. 腳本,賦予了底座 RGB 燈環「靈魂切換」的能力:
按住 S4 + 苦力帽向上 (H1U):F/A-18 螢光白綠
RGB(100, 255, 100)感受: 現代海軍戰機的高亮度 HUD 質感,適合夜間航艦降落。
按住 S4 + 苦力帽向左 (H1L):F-16 經典螢光綠
RGB(0, 255, 0)感受: 最純粹的 Falcon 靈魂,還原 90 年代 CRT 顯示器的光譜。
按住 S4 + 苦力帽向右 (H1R):MiG-29 蘇聯青綠 (Turquoise)
RGB(0, 255, 150)感受: 經典的俄系戰機冷色調座艙,帶你瞬間回到冷戰對峙的前線。
預設/喚醒儀式:F-16 經典螢光綠
RGB(0, 255, 0)感受: Falcon 3.0 時代最穩重的電系色彩。
操作邏輯: 按住 S4 不放,再撥動苦力帽(H1):
左 (H1L): 切換為 F-16 經典綠。
右 (H1R): 切換為 MiG-29 蘇聯青綠。
上 (H1U): 切換為 F-18 大黃蜂螢光綠。
儲存與運行: 打開 T.A.R.G.E.T. Script Editor,貼上對應代碼,點擊 Compile 確認無誤後點擊 Run。
單機作業技巧:
在《Falcon 4.0》中,如果發現油門撥桿方向反了,可以將
MapAxis的最後一個參數加上AXIS_REVERSED。Sol-R1 的按鍵編號(B1~B23)請依據 T.A.R.G.E.T. GUI 內的編號對應,以上預設 B1~B5 為最常用的系統鍵。
目前的按鍵設定
硬體部位 實體編號 Falcon 3.0 (DOS) Falcon 4.0 AF (WINDOWS XP) 燈光/LED 特色 左旋鈕 9 / 10 / 11 視角切換 (F1/F2/F3) 主模式 (NAV/AA/AG) 轉動變換藍/綠/紅燈 右旋鈕 20 ~ 23 雷達範圍 (F5-F8) 武器保險 (Master Arm) 固定琥珀色/機型燈色 搖頭開關 (左外) 1 / 2 起落架 (Gear) 起落架 (Gear) 放下時底座 LED 1 亮 搖頭開關 (左內) 3 / 4 襟翼 (Flaps) 加油口 (Refuel Door) 啟動時底座 LED 2 亮 搖頭開關 (右內) 14 / 15 減速板 (Brakes) 電子干擾 (ECM) 啟動時底座 LED 3 亮 搖頭開關 (右外) 12 / 13 地圖 (Map) 外部燈光 (Lights) - 藍色方鈕 16 通訊選單 警報解除 (Caution Reset) 按下恢復靜態燈光 Viper 扳機 TG1 機砲 (Gun) 機砲 (First Detent) - Viper 紅鈕 S2 飛彈發射 (Missile) 武器釋放 (Pickle) 按下時底座噴紅光 Viper 小指鈕 S4 氛圍切換 (組合鍵) FOV 切換 (組合鍵) 按住組合鍵變換燈色 CMS 帽 (上) CMSU 防禦投放 (Chaff) CMS 程序啟動 啟動時 LED 閃爍警報 同樣都是F16但時代差異補充可說明為何 按鍵功能不同
特性 Falcon 3.0 (F-16A) Falcon 4.0 (F-16C Block 50/52) 航電系統 類比儀表為主,螢光綠單色 CRT 顯示器。 全數位化多功能顯示器 (MFD)。 自動化程度 較低,襟翼與引擎管理需要較多人工干預。 極高,具備先進的數位飛控系統 (FLCS)。 武器系統 主要是 AIM-9 響尾蛇與早期麻雀飛彈。 具備 AIM-120 (AMRAAM) 視距外打擊能力。 座艙色彩 代碼中設定的「經典螢光綠」。 代碼中設定的「電子琥珀橘」。 為什麼 Falcon 3.0 沒有「主模式」?
在玩這兩款跨越 10 餘年的作品時,會發現底座旋鈕(9/10/11)的定義完全不同,這背後代表了 F-16 航電系統的真實進化史:
Falcon 3.0 (F-16A 時代): 當時的戰機自動化程度較低,資訊散落在不同的顯示畫面中(HUD、儀表、全螢幕地圖)。因此,我們將旋鈕定義為 「視角切換」(F1/F2/F3),模擬飛行員在座艙內不斷轉頭檢查儀表與地圖的操作,這在 DOS 時代是最高效的配置。
Falcon 4.0 (F-16C 時代): 進入全數位化多功能顯示器(MFD)時代,所有的戰鬥資訊都被整合進了 NAV(導航)、AA(空對空)、AG(空對地) 三大主模式中。只需旋轉一下 Sol-R1 的旋鈕,整架戰機的雷達、武器與顯示畫面就會同步切換。這就是為什麼 4.0 的旋鈕必須回歸到 Master Mode 的原因。
DOSBox 提醒: T.A.R.G.E.T. Script Editor 程式運行
Falcon3.tmc後,DOSBox 的joysticktype設為fcs即可完美取代這些字母輸入。DOSBox 按鍵映射 (MapKey): 走的是「虛擬鍵盤通道」。這些訊號會讓電腦以為你真的按了鍵盤。關鍵設定提醒: 在
dosbox.conf中,請確保以下搭配:[joystick]
joysticktype=fcs
timed=false
# 重要:不要在 DOSBox 內部的 Mapper (Ctrl+F1) 重複設定搖桿按鈕,讓它保持空白,只讓 T.A.R.G.E.T. 處理按鍵。
補充:如果沒買到Viper Grip呢?
| 硬體部位 | 實體編號 | Falcon 3.0 (DOS) | Falcon 4.0 AF (XP) | 燈光/LED 特色 |
| 手把扳機 | TG1 | 機砲 (Gun) | 機砲 (Gun) | - |
| 手把頂部紅鈕 | S2 | 飛彈發射 (Missile) | 武器釋放 (Pickle) | 按下時底座噴紅光 |
| 手把側鍵 (上) | S3 | 目標鎖定 (Target Lock) | TMS Up (追蹤鎖定) | - |
| 手把側鍵 (下) | S4 | 雷達範圍 (Radar Range) | TMS Down (解除鎖定) | - |
| 手把苦力帽 | H1 | 視角切換 (F1-F4) | 視角移動 (POV) | - |
| 左旋鈕 | 9 / 10 / 11 | 視角切換 (F1/F2/F3) | 主模式 (NAV/AA/AG) | 轉動變換藍/綠/紅燈 |
| 右旋鈕 | 20 ~ 23 | 預留功能 | 武器保險 (Master Arm) | 固定機型燈色 |
| 搖頭開關 (左外) | 1 / 2 | 起落架 (Gear) | 起落架 (Gear) | 下放時底座 LED 1 亮 |
| 搖頭開關 (左內) | 3 / 4 | 襟翼 (Flaps) | 加油口 (Refuel Door) | 開啟時底座 LED 2 亮 |
| 搖頭開關 (右內) | 14 / 15 | 減速板 (Brakes) | 電子干擾 (ECM) | 啟動時底座 LED 3 亮 |
| 藍色方鈕 | 16 / 17 | 通訊 / 備用 | 警報解除 / 減速板 | 按下恢復靜態燈光 |
Falcon 3.0的設定為
include "target.tmh"
// --- 狀態記憶變數 ---
int Gear_Pos = 0;
int Brake_Pos = 0;
int Flap_Pos = 0;
int main()
{
if(Init(&Joystick, &LMFD, &RMFD)) return 1;
// --- 1. 軸向設定 ---
MapAxis(&Joystick, JOYX, DX_X_AXIS);
MapAxis(&Joystick, JOYY, DX_Y_AXIS);
MapAxis(&Joystick, SLIDER, DX_THROTTLE_AXIS);
// --- 2. Sol-R1 原始握把鍵位分配 ---
MapKey(&Joystick, TG1, USB_SPACE); // 扳機:機砲
MapKey(&Joystick, S2, USB_ENTER); // 頂端紅鈕:發射飛彈 (噴紅光)
// 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(0, 255, 0));")
));
// 原始握把的其他按鍵 (S3, S4) 可設為雷達切換
MapKey(&Joystick, S3, PULSE+USB_T); // Target Lock (目標鎖定)
MapKey(&Joystick, S4, PULSE+USB_R); // Radar Range (雷達範圍)
// --- 3. 視角控制 (POV Hat) ---
MapKey(&Joystick, H1U, USB_F1); // HUD 視角
MapKey(&Joystick, H1D, USB_F4); // 追蹤視角
MapKey(&Joystick, H1L, USB_F2); // 駕駛艙視角
MapKey(&Joystick, H1R, USB_F3); // 外部視角
// --- 4. Sol-R1 底座撥桿 (維持機械浪漫) ---
MapKey(&Joystick, B1, EXEC("Check_Gear_F3_USB();"));
MapKey(&Joystick, B3, EXEC("Check_Flaps_F3_USB();"));
MapKey(&Joystick, B14, EXEC("Check_Brakes_F3_USB();"));
// --- 5. 系統喚醒儀式 ---
int i;
for(i=0; i<256; i=i+15) {
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, i, 0));
Sleep(20);
}
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0, 255, 0));
printf("FALCON 3.0 (ORIGINAL GRIP) READY.");
}
// 邏輯函數同前 (略) ...
Falcon 4.0的設定為
include "target.tmh"
int Gear_Pos = 0;
int Brake_Pos = 0;
int main()
{
if(Init(&Joystick, &LMFD, &RMFD)) return 1;
// --- 1. 軸向設定 ---
MapAxis(&Joystick, JOYX, DX_X_AXIS);
MapAxis(&Joystick, JOYY, DX_Y_AXIS);
MapAxis(&Joystick, SLIDER, DX_THROTTLE_AXIS);
// --- 2. Sol-R1 原始握把戰鬥配置 ---
MapKey(&Joystick, TG1, USB_SPACE); // 扳機:機砲
MapKey(&Joystick, S2, USB_ENTER); // 頂部鈕:武器釋放 (噴紅光)
// 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));")
));
// S3, S4 設為最常用的 TMS/DMS 功能
MapKey(&Joystick, S3, L_CTL+USB_UP); // TMS Up (目標追蹤)
MapKey(&Joystick, S4, L_CTL+USB_DOWN); // TMS Down (目標解除)
// --- 3. 底座模式切換 (旋鈕與撥桿) ---
MapKey(&Joystick, B9, CHAIN(PULSE+USB_N, EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0,0,255));"))); // NAV
MapKey(&Joystick, B10, CHAIN(PULSE+USB_1, EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(0,255,0));"))); // AA
MapKey(&Joystick, B11, CHAIN(PULSE+USB_2, EXEC("GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255,0,0));"))); // AG
MapKey(&Joystick, B1, EXEC("Check_Gear_AF_USB();"));
MapKey(&Joystick, B14, PULSE+USB_J); // ECM 電子干擾
// --- 4. 視角控制 (POV Hat) ---
MapKey(&Joystick, H1U, USB_KP8);
MapKey(&Joystick, H1D, USB_KP2);
MapKey(&Joystick, H1L, USB_KP4);
MapKey(&Joystick, H1R, USB_KP6);
// --- 5. 系統喚醒儀式 (琥珀色) ---
int i;
for(i=0; i<256; i=i+10) {
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(i/2, i/4, 0));
Sleep(20);
}
GameOutput(&Joystick, OUT_ID_LED_RGB, RGB(255, 120, 0));
printf("FALCON 4.0 (ORIGINAL GRIP) READY.");
}
// 邏輯函數同前 (略) ...
沒有留言:
張貼留言