回覆列表
  • 1 # 二次元OW

    原文發表自《遊戲機實用技術》和我們想象的不同,光線槍不會射出光線,只能接收光線。在接收到光線後,光線槍會把槍口對準點的訊號傳回給遊戲機,對應的軟體就會告訴主機槍口所瞄準的位置在哪裡。那麼軟體又是怎麼測量位置的呢?如果你仔細觀察的話,當按下扳機後,無論槍口是否對著螢幕,螢幕上總會有一道閃光,而這道由軟體控制發出的白色幀就是光槍測位的關鍵。在此之前我們還有必要先來看一下隔行掃描電視機的成像方式:在PALNTSC的CRT電視中,掃描線是影像生成的方式。以NTSC為例,每次影像掃描時,在六十分之一秒內並非從頭到尾連續掃描525條掃描線,而是隻掃描一半,也就是262.5線,剩下一半在另外一個六十分之一秒時掃描。第一次掃描時只由上而下水平掃描奇數線,第二次掃描時掃描偶數線。二次掃描所生成的圖場(Field)就結合成一幅完整的影象幀(Frame)。由於掃描時是以奇數、偶數掃描線做交替隔行掃描,所以叫隔行掃描。按下扳機後,遊戲軟體控制主機發送一個全白色的幀,正如前面提到的,電視機顯示這個白色幀是需要從上到下,從左往右掃描的,所以從這一幀掃描第一個點開始,到槍口收到白色光(注:儘管槍口看上去較大,但真正能接受光的感光機構可接受範圍很小,所以它只會對準螢幕上很小的一塊範圍,這個範圍略大於兩行掃描線距離,可以認為其對準的是一個“點”)這個時間差T(pos),就可以算出座標位置,這裡假定從螢幕到光線槍的光線傳播時間為0。NTSC情況下一個隔行幀顯示的時間是:0.0167秒 (60Hz),這裡 為了方便大家理解計算過程,暫定理想狀況:掃描線無消隱時間,幀無消隱時間,掃描線回掃時間為0,掃描線共480線(掃描線實際上是525條,但真正有成像能力的只有480線左右),水平點數為640。所以每一行掃描線需要的掃描時間為 T(scanline)=0.0167/480,我們就可以計算出垂直位置:Y=Trunc(T(pos)/T(scanline))水平位置:X=(T(pos)-Y×T(scanline))/T(scanline)×640如果把所有情況(掃描線消隱、回掃,有效掃描線等等)考慮到,計算過程要複雜很多,但是原理仍然基於上面de“理想狀況”。實際上,傳送全白色幀之前,遊戲機還會發射一幀全黑幀,這樣可以去除遊戲畫面上高亮顏色的干擾。簡單的來說,光槍的工作原理就是:摳下扳機――――線纜將訊號傳給主機――――軟體命令電視機發出一個白色幀――――槍口將接受到的光訊號傳回給主機――――軟體計算時間差從而算出位置――――命令電視機發出一個擊中點――――如果剛好在目標上,那麼恭喜,你擊中了!

  • 中秋節和大豐收的關聯?
  • 2月28日,英超比賽曼城對戰西漢姆聯,曼城的勝算有多少?