自1983年7月15日任天堂紅白機(Family Computer)在日本發售至今已40年有餘,隨著遊戲主機從“第三世代”逐步進化至“第九時代”,相關視頻、音頻、控制技術也持續迭代。由於設備停產導致被淘汰的技術實質退出歷史舞臺,不同時代的“遊戲美學”也終於成為了相應時代玩家們的“回憶濾鏡”。收聽了《遊戲的人與社會》系列節目後,對劉夢霏老師團隊建立“遊戲的人”檔案館的工作深表敬意。而無論對於遊戲研究的學術群體、老玩家群體的“追憶”,亦或新玩家群體的“考古”而言,儘可能還原“遊戲美學”都是一種必要的努力。
個體對於任何事物的體驗或可理解為「體驗=信息載量÷接收強度」,同時「接收強度=接收時長×接收次數」,則「體驗=信息載量÷接收時長÷接收次數」,即接收相同內容的時間越長或/及次數越多,體驗越差。“遊戲美學”是一個主要由視頻、音頻、控制構成的綜合體驗,而在這三者中,視頻是一個由於技術迭代導致在保持信息載量和接收時長不變的情況下,顯著增加了接收次數的要素。一幀320×240分辨率的畫面在不進行任何差值的情況下(軟件通常採用雙線性插值,插值縮放增加了信息載量,從而改善了最終視覺體驗)同比縮放至2880×2160後,畫面的信息載量是不變的,但人眼在一幀的時間內實質看到了81次重複的像素,即觀感下降了80/81≈99%。相比之下,音頻及控制技術的迭代對設備的物理改動較小或兼容性較好,體驗的保留程度相對完整和統一。
因此不難理解,電影和遊戲都通過不斷推出主要強化視頻的復刻(remaster)甚至全面強化的重製(remake)版本,提升信息載量,改善用戶體驗。對於那些沒有機會得到復刻或重製的遊戲,用戶的可選方案按照硬核程度從高到低排名,主要包括:
1、FPGA硬件仿真+原始顯示設備(如MiSTer FPGA/Analogue主機+索尼特麗瓏/PVM)
2、原始主機+原始顯示設備
3、FPGA硬件仿真+倍線器+現代顯示設備
4、原始主機+倍線器+現代顯示設備(如紅白機+Retrotink/OSSC+OLED電視)
5、第三方軟件模擬+原始顯示設備
6、第三方軟件模擬+現代顯示設備
7、官方硬件兼容/軟件模擬/mini主機+現代顯示設備
由於“第三方軟件模擬+現代顯示設備”方案優秀的易用性及持續迭代潛力,本文僅針對該方案詳細說明,並對涉及到大部分專有名詞提供英文,供社群進一步研究。
一、原始顯示設備:模擬信號與顯像管電視
既然要用現代顯示設備還原原始顯示設備,就需要對模擬信號與顯像管電視進行一定解釋。在第七世代遊戲主機(Playstation 3、Xbox 360及Wii)採用高清多媒體接口(High Definition Multimedia Interface)前,遊戲主機以模擬信號方式傳輸,模擬信號電視即顯像管電視(Cathode-Ray Tube)。模擬信號與數字信號的本質區別在於,模擬信號基於掃描線(line)而不是像素點(pixel)成像。由於屏幕不以像素點成像,因此就屏幕而言也沒有分辨率概念。電子槍發射電子,通過顯像管(CRT)發射到屏幕的熒光粉上成像,電視也故此被稱為“Tube”,“YouTube”即意為“你(們)的電視”。
1、長方形的像素?
在數字信號環境中,當我們表達一張分辨率為320×240的圖片顯示在4:3顯示設備上時,默認這張圖片由320×240=76800個正方形像素點構成。被顯示圖片320×240的長寬比(Storage Aspect Ratio)為4:3,正方形像素的長寬比(Pixel Aspect Ratio)為1:1,顯示設備的長寬比(Display Aspect Ratio)為4:3,顯示設備被顯示圖片等比例完整填充,DAR(4:3)=SAR(4:3)×PAR(1:1)。
320×240,DAR=4:3,PAR=1:1
在模擬信號環境中,當我們表達一張“有效分辨率”為256×224的圖片顯示在4:3顯示設備上時,由於正方形像素點256×224的長寬比(SAR)為8:7,因此顯示在長寬比(DAR)為4:3的顯示設備上時,“像素”本身的長寬比(PAR)就必須為7:6,顯示設備將顯示圖片拉伸後完整填充,DAR(4:3)=SAR(8:7)×PAR(7:6)。雖然模擬信號環境中沒有像素實體,但為了在數字信號環境中便於理解,就有了長方形像素的概念。
256×224,DAR=8:7,PAR=1:1
從另一個角度看,對於基於SAR為256×224,PAR為7:6的開發者,在製作遊戲畫面時,其實需要在7:6的長方形像素格上繪製被遊戲主機及顯像管電視拉伸後的畫面,而本不應該被發現的PAR為1:1的畫面,是在模擬器問世後才得以被玩家們瞭解,引發了新的討論甚至爭論。
2、更高的髮色數?
顯像管成像原理為熒光粉受到不同強度電子的撞擊,而熒光粉並不同像素點的成像那樣精確,更高強度的電子不僅會呈現出更亮的畫面,同樣會使色彩向周圍外溢,因此可以用較低髮色數的點陣圖呈現出更高發色數的圖像,彼時的開發者們在繪製點陣圖時會充分考慮這一顯示設備的物理特性,從而實現層次豐富的煙霧和光影效果(dithering)。就這一點而言,現代遊戲的“像素風”只能說是對傳統點陣圖效果似是而非的模仿或致敬。
3、隔行(interlaced)、逐行(progressive)、掃描線(scanline)、反交錯(deinterlace)及過掃描(overscan)
(1)隔行 vs. 逐行
以日區及美區遊戲的NTSC制式為例,共有525條掃描線,其中可見光柵為480條掃描線,電子從左至右自上而下,以每秒29.97Hz的頻率進行全屏逐幀(frame)掃描,每一幀由兩個240條掃描線的場(field)組成,分別為0、2、4至480的偶數場(even)及1、3、5至479的奇數場(odd),場以每秒59.94H的頻率顯示。因此也被定義為每秒30幀的240p和每秒60場的480i,p和i即progressive及interlaced的縮寫,而事實上無論是逐行還是隔行信號,都是每秒顯示兩個場,逐行是每秒顯示兩個完全相同的場。數字信號環境中,240p分辨率通常為320×240,480i分辨率通常為640×240,縱向分辨率為單個場即1/2幀。
(2)掃描線
由於逐行掃描永遠只掃描奇數場,對偶數場的掃描線完全跳過,因此會在視覺上呈現出恆定的橫向“黑線”即所謂的掃描線,而事實上“黑”其實是“無”。而隔行掃描交替掃描奇偶場,因此在較人眼更敏感的高速攝像器下會呈現出明顯的閃爍(flicker)以及交替的掃描線(alternative scanline),但由於閃爍及掃描線只存在1/29.97秒,因此人眼不易察覺。
(3)反交錯
由於數字信號的成像方式不再是掃描線,也不存在場的概念,因此將模擬信號轉換成數字信號後,奇偶場就只能合併在一幀中顯示。在越是高速運動畫面中,兩個相鄰場捕捉的畫面差異就越大,且每個場只有1/2幀的縱向分辨率,從而導致明顯的“毛刺”(combing),所以對於隔行掃描信號(例如Playstation 2的視頻捕捉)就必須進行反交錯。麻煩的是,由於每個場只有1/2幀的縱向信號,必須對實質不存在的另1/2縱向信號進行差值“腦補”,而差值與真實之間永遠不可能相同,因此反交錯是一個必然失真的過程。在有交替掃描線濾鏡的前提下,將縱向分辨率拉伸至兩倍的bob是最快速也相對“還原”的反交錯方式。由於奇偶場的掃描線是交替顯示的,畫面自然出現上下抖動(bobing),因此得名。通過神經網絡算法進行動態補償的反交錯方式一直在進步,民用層面易用性較好的是Avisynth的QTGMC(Quadratic Motion-Compensated Temporal Gaussian Smoothing)反交錯濾鏡,本文不作展開。
(4)過掃描
由於顯像管技術本身及民用電視的品控難度較大,普遍存在陰極電流增加導致陽極電壓下降的情況,觀感上呈現出比預期更小且更亮的畫面,被稱為“過掃描”。在無法控制電視質量的情況下,開發者可以劃定一個圖像的“安全區域”,在該區域外不顯示畫面,即畫面有效顯示區域小於畫面最大顯示區域。
畫面最大顯示區域為256×240,上下各有8個像素留為黑邊(標紅區域)。
畫面有效顯示區域為256×224,去除上下各8個像素。
由於過掃描區域是不成像的,相當於被丟棄的信號,因此是否刪除這部分畫面不改變有效顯示區域的SAR、遊戲主機的PAR及顯示設備的DAR。Retroarch前端及大部分後端核心都支持切除過掃描區域,並默認開啟。
4、多分辨率
由於CRT電視屏幕沒有分辨率概念,因此開發者可以在4:3的SAR目標下,自由安排同一遊戲在不同場景下的DAR及PAR。例如在原版《最終幻想VIII》中,片頭demo的SAR為640×480,遊戲CG/場景畫面的SAR為320×224,遊戲菜單的SAR為366×216。類似案例在Playstation遊戲中較為普遍。
5、整數縮放(integer)、非整數縮放(non-integer)及過採樣(oversample)
對於圖片的縮放而言,整數倍的縮放(resize)永遠比非整數倍的重採樣(resample)精確。例如將紅橙黃綠各一個像素的2×2圖片整數縮放至4×4,只需要簡單複製每個顏色的像素三次即可,縮放後每個顏色的佔比仍為25%,圖像保真;但如果將這個圖片非整數縮放至3×3,每個顏色平均為2.25個像素,即一定有三個顏色為2個像素,一個顏色為3個像素,每個顏色的佔比為22%或33%,圖像失真。在遊戲中,常見於橫板遊戲非整數縮放後,背景移動時的閃爍或抖動(shimmering)。
但通過數字信號的正方形像素還原模擬信號的長方形像素成像,通過對DAR採用整數倍縮放就自然使用了錯誤的PAR,此外對於同一遊戲涉及多DAR的場景,這一努力就顯得更不切實際,且違背開發者初衷。所以對於模擬信號轉數字信號,需要對原始畫面進行過採樣(oversample),即將原始畫面先放大至更高的分辨率,再縮小至目標分辨率,從而縮小構成畫面的正方形像素點的相對大小,以降低採樣的誤差比例,提升畫面還原度。
二、原始顯示設備:遊戲掌機屏幕
1、遊戲掌機自誕生之初就採用LCD屏幕技術,傳輸數字信號基於像素點成像,因此無需考慮上述CRT屏幕的特殊性。
2、在第七世代遊戲掌機(DS、PSP)屏幕採用背光燈/自發光前,遊戲掌機屏幕都依賴外部光源提供亮度。(雖然GBA SP AGS-001為前光燈,GBA SP AGS-101為背光燈,但只有極少數開發者在遊戲內提供屏幕類型選項,GBA SP AGS-001護航作品《最終幻想戰略版Advance》為少數案例)掌機開發者會特意將遊戲畫面調整得較為豔麗以彌補屏幕亮度不夠的問題,因此在背光燈/自發光顯示設備上,需要基於外部光源的視覺效果對畫面進行修正。
三、原始顯示設備:最佳視距
1、遊戲主機
除了前述原始顯示設備本身的諸多特性外,回到最初80/81的例子,高分辨率、更大的尺寸及改變的觀看距離也會充分影響最終的觀感。根據索尼的建議(與SMPTE及THX的建議基本一致):4K(2160p)電視的推薦視距為窄邊的1.5倍,HD(1080p)電視的推薦視距為窄邊的3.0倍,SD(480p)電視的推薦視距為窄邊的6.0倍。
結論:電視推薦視距=3240÷顯示內容縱向分辨率×顯示內容窄邊長度。基於480p的泛用性(240p為帶掃描線的480p,480i),推薦視距=6.75米。
2、遊戲掌機
遊戲掌機除了上述最佳視距算法外,也需要考慮視力壓力及手臂長度等要素,iPhone建議:推薦視距為12英尺或30釐米,這個距離遠於基於上述算法給出的20釐米建議。
結論:掌機推薦視距=30釐米。
四、第三方模擬器的選擇
基於前述對原始顯示設備的介紹,不難發現由於開發者已經將顯示設備的諸多“技術限制”納入了遊戲製作的考量中,這些限制就反而成了一種特性(features, not bugs)提供了信息載量,因此若要還原體驗就必須還原這些特性,高還原度的濾鏡(shader)就成為了一個必要條件。
基於此,模擬器提供的濾鏡及畫面縮放功能為首要條件,兼顧模擬的準確性及其他功能。開源的跨平臺前端Retroarch除了提供很多獨一份的濾鏡外,大部分遊戲主機最優秀的第三方模擬器均已開發後端核心,保證了模擬的準確性(不少好過官方軟件模擬)。而在統一的前端下,跨平臺遊玩,統一化熱鍵等QoL的優勢也同樣明顯。
(關於Retroarch的詳細介紹請見官方網站「retroarch」、「libretro」)
五、Retroarch的下載安裝及通用設置(以Windows用戶為例)
0、下載並安裝「DirectX End-User Runtime」。
1、Retroarch的下載安裝
推薦於「buildbot」下載系統生成的最新穩定版。於「版本號/windows/x86_64/」目錄下載「RetroArch.7z」(前端)及「RetroArch_cores.7z」(後端),解壓至同一目錄(默認一級目錄為「RetroArch-Win64」)下後啟動「retroarch.exe」。
2、Retroarch的通用及QoL設置
(1)進入「設置」---「驅動」,將「視頻」選項設置為「d3d11」,並退出。(在Windows環境下推薦使用「d3d11」,尤其在系統已開啟HDR時不會發生畫面重置,「vulkan」及「glcore」同樣為可選視頻選項,其餘視頻選項暫不推薦。)
(2)重新啟動「retroarch.exe」,按「F」切換至全屏模式。進入「設置」---「視頻」---「輸出」,選擇「設置顯示器報告的刷新率」,對「垂直刷新率」的默認值「60Hz」進行校準。
(3)僅限系統已開啟G-Sync或 FreeSync的場合,進入「設置」---「視頻」---「同步」,將「精確同步遊戲幀率(G-Sync, FreeSync)」設置為「開」。
(4)進入「設置」---「輸入」---「快捷鍵」,將「啟用快捷鍵」設置為「手柄特定按鍵」(推薦「Select」,即「Select」+「」為具體快捷鍵功能),並對其他快捷鍵進行設置。
以Xbox手柄佈局為例,推薦:
菜單開關「X」
退出「Start」
重置內容「B」
快進(保持)「R2」
慢放(保持)「L2」
回溯「A」
暫停「Y」
增大音量「上」
減小音量「下」
加載狀態「R1」
保存狀態「L1」
下一個保存狀態欄位「右」
上一個保存狀態欄位「左」
(5)進入「設置」---「限幀」---「回溯」,將「啟用回溯」設置為「開」,將「回溯緩衝區大小(MB)」設置為「目標值」。(推薦「1024」以獲得最長的回溯時間)
(6)返回「設置」---「限幀」,將「快進倍率」設置為「目標值」。(推薦「3.0x」以避免遊戲快進失控)
(7)推薦多設備同步雲存檔/設置的場合,進入「設置」---「文件夾」,將具體選項逐一設置為「網盤目錄」。(以Onedrive為例,路徑為「C:\Users\用戶名\OneDrive\具體文件夾」)
六、Retroarch的遊戲導入及核心選擇
0、獲取主機BIOS文件及遊戲ROM/ISO文件
由於知識產權的問題,本文不提供任何主機BIOS文件及遊戲ROM/ISO文件的獲取方式,僅就文件列表及校驗方式進行介紹。校驗軟件不限,可以使用MD5 & SHA Checksum Utility。
(1)BIOS列表及校驗
各個核心所需的BIOS文件列表及校驗值(如Playstation的「Beetle PSX」核心,需要的BIOS分別為日區的「scph5500.bin」、美區的「scph5501.bin」及歐區的「scph5502.bin」)及其路徑(BIOS文件通常放置在「system」目錄下),請參考「libretro」的文檔。
(2)ROM/ISO校驗
ROM類文件可於DAT-o-MATIC選擇「遊戲主機」---「prepare」---「download」獲得「遊戲主機.dat」文件,用記事本類軟件打開即可搜索遊戲ROM的明細,包括crc、md5及sha1三種校驗值。
ISO類文件可於redump.org的「Discs」欄目下選擇具體遊戲主機查看校驗值。
1、模擬核心選擇
在Emulation Wiki主頁進入遊戲主機的對應頁面,在「Emulators」---「PC / x86」欄目下,找到「Recommended」欄目為綠色的模擬器,在「Version」欄目中查看指向「libretro」的鏈接,該鏈接名稱即核心名稱。(如Playstation的推薦核心為「SwanStation」及「Beetle」)
在「libretro」的「Core Library: Emulation」欄目下,找到核心的對應頁面查看使用說明。(推薦使用有說明的核心)
2、導入遊戲列表
(1)進入「導入」---「手動掃描」,選擇「遊戲文件夾」為「ROM/ISO路徑」,選擇「系統名稱」為「主機平臺」,選擇「默認核心」為「選定核心」,選擇「開始掃描」。
(2)進入左下角遊戲列表,選擇具體遊戲,進行「下載縮略圖」等操作。
七、第七世代(Playstation 3、Xbox 360及Wii)前遊戲主機的畫面設置
基於前述CRT屏幕的特徵,需要對畫面及濾鏡做以下安排:
1、不對遊戲畫面進行整數倍縮放
2、濾鏡能夠仿真熒光粉虛化效果
3、濾鏡能夠仿真掃描線的效果
4、濾鏡能夠對原始畫面過採樣
5、針對實際視距調整畫幅尺寸
(1)運行任意主機遊戲,按「F1」進入「快捷菜單」,按「Backspace」退回主界面,進入「設置」---「視頻」---「縮放」
將「寬高比」設置為「自定義」
將「自定義寬高比高度」設置為「屏幕縱向分辨率×屏幕視距÷屏幕高度÷6.75」,並取最接近為三的倍數的偶數。(以2米視距觀看65寸4K電視為例,自定義寬高比高度=2160×2÷0.81÷6.75=790.12,取792為最接近為三的倍數的偶數)
將「自定義寬高比寬度」設置為「自定義寬高比高度÷3×4」(繼續上述案例,自定義寬高比寬度=792÷3×4=1056)
將「自定義寬高比X位置」設置為「(屏幕橫向分辨率-自定義寬高比寬度)÷2」(繼續上述案例,自定義寬高比X位置=(3840-1056)÷2=1392)
將「自定義寬高比Y位置」設置為「(屏幕縱向分辨率-自定義寬高比告度)÷2」(繼續上述案例,自定義寬高比Y位置=(2160-792)÷2=684)
(2)退回主界面,進入「菜單」---「快捷菜單」,選擇「獨立配置」---「保存核心獨立配置」(該核心的縮放選項不影響其他核心)
(3)退回「快捷菜單」,選擇「著色器」
將「視頻著色器」設置為「開」
選擇「加載」---「shaders_slang」---「presets」---「crt-geom-deluxe-ntsc-adaptive.slangp」
選擇「著色器參數」,將「NTSC Resolution Scaling」設置為「自定義寬高比高度÷480」(繼續上述案例,NTSC Resolution Scaling=792÷480=1.65)
注1:雖然「crt-royale」濾鏡在CRT效果上比「crt-geom」更豐富,但由於Retroarch目前支持過採樣的CRT濾鏡為「crt-aperture」、「crt-easymode」及「crt-geom」,同時為了實現熒光粉的髮色數效果,需要前置增加「ntsc-adaptive」濾鏡進行模糊處理,滿足這個條件的最佳預設選擇為「crt-geom-deluxe-ntsc-adaptive」。
注2:「NTSC Resolution Scaling」的設置為用於補償「ntsc-adaptive」濾鏡的模糊處理對過採樣的影響。
(4)返回「快捷菜單」---「著色器」,選擇「保存」---「保存核心預設」(該核心的所有遊戲都將適用這一濾鏡配置)
(5)對其他採用CRT顯示設備的核心重複上述步驟,或直接複製config文件。
(*)特別的,對於縱向顯示的遊戲(TATE),將「自定義寬高比高度」及「自定義寬高比寬度」的數值對調,並重新計算「自定義寬高比X位置」及「自定義寬高比Y位置」即可。
八、遊戲掌機的畫面設置
基於前述掌機屏幕的特徵,需要對畫面及濾鏡做以下安排:
1、對遊戲畫面進行整數倍縮放
2、濾鏡能夠對仿真低屏幕亮度
3、針對實際視距調整畫幅尺寸
(1)運行任意掌機遊戲,按「F1」進入「快捷菜單」,按「Backspace」退回主界面,進入「設置」---「視頻」---「縮放」
*縮放倍數=屏幕視距÷掌機視距×屏幕PPI÷掌機屏幕PPI,就近取整。(以2米視距觀看65寸4K電視,遊戲掌機為GBA為例,縮放倍數=2÷0.30×67.78÷99.61=4.54,就近取整5)
*PPI= (屏幕單向分辨率÷屏幕單向長度) ,長度單位為inch
將「寬高比」設置為「自定義」
將「自定義寬高比高度」設置為「掌機縱向分辨率×縮放倍數」(續上述案例,自定義寬高比高度=160×5=800)
將「自定義寬高比寬度」設置為「掌機橫向分辨率×縮放倍數」(繼續上述案例,自定義寬高比寬度=240×5=1200)
將「自定義寬高比X位置」設置為「(屏幕橫向分辨率-自定義寬高比寬度)÷2」(繼續上述案例,自定義寬高比X位置=(3840-1200)÷2=1320)
將「自定義寬高比Y位置」設置為「(屏幕縱向分辨率-自定義寬高比告度)÷2」(繼續上述案例,自定義寬高比Y位置=(2160-800)÷2=680)
(2)退回主界面,進入「菜單」---「快捷菜單」,
選擇「獨立配置」---「保存核心獨立配置」(該核心的縮放選項不影響其他核心)
(3)退回「快捷菜單」,選擇「著色器」
將「視頻著色器」設置為「開」
選擇「加載」---「shaders_slang」---「presets」---「retro-v2+gba-color.slangp」 ,濾鏡參數無需調整。(此處以GBA為例,基於GBA、GBC、NDS、PSP等不同掌機平臺具體選擇)
(4)返回「快捷菜單」---「著色器」,選擇「保存」---「保存核心預設」(該核心的所有遊戲都將適用這一濾鏡配置)
(5)對其他掌機核心重複上述步驟。
九、結語
無論是“研究”、“追憶”或是“考古”,只有以越接近彼時的信息載量去體驗和感受,才能在此時給出越中肯客觀的評價。“美學”是一個內涵豐富的概念,對於個體而言,構成某刻獨一無二遊戲體驗的信息載量,也許是田野的蟲鳴,亦或是街巷的燈火。今日之神作,明日之經典。願忠於開發者意圖的遊戲文化保留努力,能夠使遊戲社區的回憶相冊歷久彌新。