變速齒輪是一個神奇的改變遊戲速度的程序。他是世界上第一個,也是目前最好的改變Windows遊戲速度的程序。他幾乎能改變任何Windows遊戲的速度。我還沒有發現任何其他程序能改變,而變速齒輪不能改變的遊戲。並且在效果上,例如變速後畫面的平滑性(這同時會影響遊戲的操作性)、能使遊戲達到的最快或最慢速度、使用的方便性、運行的穩定性等都是最好的。
除了遊戲,變速齒輪事實上也能改變任何時間相關的程序的速度,例如視頻播放、Flash、網頁等。總之他是一個用途廣泛而且相當有趣的程序。
新增功能與改進
1、因為不小心丟了源代碼,只好又重寫了變速齒輪。雖然界面看起來和原來一樣,但實際是完全重寫的。
2、9x版的變速齒輪中使用了和NT版中相同的技術,因此幾乎能和NT版一樣穩定。
3、用Ctrl+加速或減速鍵可以在每次0.1或0.5次方倍之間切換。
4、自動判斷操作系統,只安裝9x或NT版。
5、最小化時縮小到系統托盤。
6、NT版可以從「速度改變的進程」列表中刪除進程。
7、減小了安裝程序。
8、支持更多的熱鍵。
支持的操作系統
這一版本的變速齒輪可以在Windows 98、Windows 98SE、Windows ME、Windows 2000、Windows XP、Windows Server 2003下運行。在Windows 98、Windows 98SE、Windows ME下使用9x版的變速齒輪,在Windows 2000、Windows XP、Windows Server 2003下使用NT版的變速齒輪。由於變速齒輪的9x和NT版在使用上有很大不同(實際上他們是兩個不同的程序),所以我將分別地介紹他們。目前變速齒輪不能在Windows NT 3.x和Windows NT 4.x下運行。其實要讓變速齒輪能在這兩個操作系統下運行是很容易的,方法也很多,不過連M$自己都不支持他們了,所以我也偷個懶吧。我也沒有在Windows 95下做過測試,同樣也是因為M$不再支持他們了。
變速齒輪的使用
9x版變速齒輪的使用很簡單,你要做的唯一事情是移動滑桿設定你想要的速度。設定的速度對系統中所有進程(也就是正在運行的程序)都有效。注意,有些遊戲不能在運行中改變速度,這時只要先設定好想要的速度再運行遊戲就可以了。
NT版的變速齒輪使用比9x版略微複雜。他只對那些你指定的進程變速,對其他進程則沒有影響,這樣就大大提高了變速齒輪的穩定性。有幾種方法可以指定需要變速的進程:
1。在「速度未改變的進程」列表框中是變速齒輪沒有對他變速的進程。在這個列表框中選擇一個進程,點加入按鈕,可以把他加入到「速度改變的進程」列表中。
2。點瀏覽按鈕(標題是三個點的那個按鈕),將打開文件對話框。用他選擇一個可執行文件(*.exe)。所選擇的文件名將自動填入下拉列表框,並且自動運行。
3。在下拉列表框中填入帶完全路徑的可執行文件名,按運行按鈕運行他。下拉列表框中保存著以前運行過的可執行文件名。你也可以方便地從中選擇一個。
4。被變速齒輪變速的進程啟動的進程也將自動被變速。由於幾乎所有的進程都是由NT的外殼進程(就是在變速齒輪中顯示為「Program Manager」的那個進程。桌面和資源管理器也都屬於這個進程)啟動的,所以如果把「Program Manager」加入到「速度改變的進程」列表中,將是一個方便的使用變速齒輪的方法。
如果進程列表沒有正確反映當前的進程狀態,可以點刷新按鈕刷新列表。對於一些不能在運行中改變速度,或者在運行中改變速度會發生異常的遊戲,請先設定好想要的速度,然後用除了第一種方法之外的方法啟動遊戲。
滾翻(roll)
點熱鍵按鈕可以彈出設置熱鍵對話框。固定速度熱鍵用於把變速齒輪設定到一個固定的速度,加快減慢熱鍵用於加快或者減慢速度。如果核選「加快減慢熱鍵使用精細調節」核選框,每次加快減慢2的0.1次方倍,否則每次加快減慢2的0.5次方倍。另外,使用Ctrl+加快減慢熱鍵也可以在每次2的0.1次方倍和2的0.5次方倍之間切換。「啟用熱鍵」核選框用於設置所有熱鍵是否有效。
注意如果用鼠標拖動滑桿將只停在整數倍位置,但是使用左右鍵可以進行更精細的調節。也可以使用Page Up、Page Down、Home、End鍵移動滑桿。
變速齒輪的工作原理
用戶可以編寫自己的INT B中斷處理程序定時處理自己的操作,然後把它替換Dos原來的空INT B中斷程序。比如我有一個程序需要在12:00運行,一種方法是寫如下代碼:
for(;;){
if(時間是12:00) break;
sleep(5);/*休息5秒鐘,這句在Dos中沒有,意為讓程序不做任何事,只是等待一段時間*/
}
{具體的處理程序}
然後在提示符狀態下運行。因為Dos沒有多用戶的概念,在程序12:00退出以前,無法在使用這台機器。另一種方法是,把要運行的程序寫成TSR(長駐內存程序),運行後執行代碼長駐在內存中,程序本身返回提示符,供用戶使用。那麼該執行碼如何保證在12:00被執行呢,就要靠INT B,在長駐該程序時,也要編寫新的INT B中斷處理程序,內容大概是:
{屏蔽INT B中斷}/*這一步是因為Dos的大部分中斷是不可重入的,
即在中斷還未處理完時,再次*/
/*被中斷,這一般會讓Dos死掉*/
{執行舊的INT B中斷處理程序}/*這一步的目的是防止自己的TSR影響其他TSR程序*/
if(時間是12:00){
把處理轉向TSR程序的入口;
} else {
{恢復被屏蔽的中斷}
退出;
}
綜合上面講到的,Dos下的時間處理大概是:
機器時間------->INT A(操作系統用)-------->INT B(用戶用)-------->TSR程序
當然,由於Dos對運行級別幾乎沒有控制,用戶也可以繞過INT A,INT B直接訪問硬件。這時我們即使改變操作系統的時間,用戶程序也能得到正確的時間。
在windows中,情況也很類似。但程序不會直接訪問硬件,而是通過叫VxD的虛擬設備驅動程序來工作。由VxD來和硬件打交道,而應用程序只和VxD交流信息。對時鐘中斷的處理也是一樣,windows有專門的時鐘虛擬設備驅動來捕獲來自晶振的硬件中斷,並為windows提供時間和定時的功能。這與Dos下的INT A功能基本是一致的,但更強大,功能更廣。
變速齒輪的工作原理,就是修改用戶申請的windows定時器中的等待時間。他沒有修改VxD因為windows系統的時間並沒有因為啟動「變速齒輪」而跑快或跑慢,某些應用,如雙擊桌面圖標時的間隔時間上的設定(即兩次擊鼠標的間隔時間多長以內才算是「雙擊」)也沒有變。通俗的描述是:在啟動「變速齒輪」後,當應用程序(特別是遊戲)向windows申請定時器時,「變速齒輪」修改了申請的等待時間參數,因次改變了程序正常的定時,才使程序有了不正長的
速度(這個結論只是猜的)。只所以這樣猜,是因為對已經啟動的程序,他並不能改變速度,而只能先啟動「變速齒輪」,再運行程序。另外,某些系統接口,也是無法修改的。
所以,一旦啟動「變速齒輪」,所有應用程序(申請了定時器,並要依靠定時器來做一些操作的程序)都會受到他的影響。在Word中,等待輸入的光標會因為調成了加速而更快的閃動,各種提示信息的出現時間會變快(或變慢)很多,最誇張的是,當把速度調成最慢時,在同一位置,間隔十秒鐘擊一次鼠標會被系統認為是雙擊(發生在應用程序內,而不是桌面上)