Retroarch(以下简称为RA),将各种模拟器编译集合在一起,实现all in one的操作,被国内模拟器玩家称为“全能模拟器”。除了提供纯手柄操作的功能外,还支持金手指、存读档、回溯、AI翻译等功能。其最大的优势,就是提供了方便的遮罩和滤镜功能。
本文提供RA的进阶玩法,面向RA新手详细介绍遮罩的玩法。
首先,为什么要用遮罩?
因为遮罩可以在16:9屏幕上,不拉伸老游戏画面比例的情况下,遮挡两边露出的黑边(遮丑),又能让玩家在重温老游戏时增加一定的趣味性和观感。
遮罩也不全为了增加视觉效果,它的虚拟按钮是有按键操作功能的。玩麻将游戏时,在没有键盘的掌机上,半透明的遮罩按钮还可以和触摸屏完美契合,让玩家直接点击相应的牌进行操作。
RetroArch\overlays目录下,可以看到各机种遮罩的png文件,这些png文件并不能被RA识别,必须搭配cfg文件,才能在选择遮罩时看到它们。以GB为例,GB.cfg的内容是调用遮罩时的参数,本遮罩有一层,它读取GB.png这个图片,以全屏拉伸的方式显示,遮罩上显示的按钮数为0。
overlays = 1
overlay0_overlay = GB.png
overlay0_full_screen = true
overlay0_descs = 0
但是,GB.cfg这个配置文件仅仅是让你在RA菜单中可以手动选择遮罩,并不能保证打开某个机种的模拟器或游戏时,自动载入相应的遮罩,所以在RA对应机种模拟器的目录下,还存在另外一套影响到自动载入遮罩的配置文件(其他显示相关的配置也在里面)。还是以GB为例,它的文件就在RetroArch\config\Gambatte目录下。当我们打开这里的GB.cfg,可以手动调配如下的显示参数:
aspect_ratio_index = "23" 载入GB游戏时默认显示的视频比例类型
custom_viewport_height = "1068" 载入GB游戏时默认显示的自定义高度
custom_viewport_width = "1170" 载入GB游戏时默认显示的自定义宽度
custom_viewport_x = "376" 默认画面最左侧从屏幕左起第多少个像素点开始显示
custom_viewport_y = "4" 默认画面最上端从屏幕顶起第多少个像素点开始显示
input_overlay = "/storage/emulated/0/RetroArch/overlays/GB.cfg" 需要读取哪一个遮罩配置文件
input_overlay_auto_scale = "false" 遮罩是否需要自动拉伸至全屏
input_overlay_opacity = "1.000000" 遮罩的透明度,1为完全遮挡,越接近0就越透明
这里的比例参数“23”,其实是宽高比菜单下,“自定义”这个选项在所有选项中的序号,4:3的序号为0,依次顺下来,“核心提供”的参数就为22,“自定义”也就为23。其实这里也可以不填写序号,而直接填写参数名称。注意,一旦选择自定义,也就意味着画面尺寸全部按照写死的来,即按照你自定义高度和宽度的像素来显示,换任何设备都不会变。
在运行游戏时,呼出RA菜单,设置-视频-缩放-宽高比,这里我们能看到不同的比例参数,如4:3,16:9,8:7,配置,1:1PAR(4:3DAR),核心提供,自定义(custom),全屏等等。
当你打开一个游戏,如果没有设置参数,一般来说默认的比例是“核心提供”,就是该机种模拟器默认这类游戏的原始比例。1:1PAR就是点对点显示,在液晶屏上不拉伸游戏的原始像素。CRT的像素并非标准的正方形,当年原始分辨率在CRT上基本也默认拉伸至4:3了,在CRT条件下,并不追求点对点,而是对画面尺寸的宽容度很高,所以当年拉伸过的画面看起来并不违和。至于为什么会这样,这涉及到很多显示设备的专业知识,本文不深入讨论,我们只要知道,横版老游戏在大多数情况下,按照4:3比例输出画面,是大致能被接受的。而核心提供和1:1PAR很多情况下是一致的。
当我们不需要遮罩时,其实这里常用的参数就用默认的核心提供,或根据个人习惯选用1:1、全屏就可以。但当我们想自动载入遮罩时,面临的情况将会比较复杂。
不同机种的分辨率是不同的,如FC大部分情况下的分辨率是256*224(8:7),PS1是320*240(4:3),GBA是240*160(3:2)。街机的情况则更为复杂,就横版街机而言,CAPCOM CPS基板384*224,SNK MVS基板的是304*224,还有其他各种不同厂家、不同游戏的分辨率不尽相同。横版游戏最极端的是忍者战士、大流士2作是864*224(3块288*224屏拼接,27:7)、王者之剑3 640*240(3块320*240屏拼接,8:3),赛博坦克512*224(2块256*224屏拼接,16:7)。还有大量纵版射击游戏的比例,需要不同遮罩调整。即使是多数纵版飞机游戏采用类似彩京打击者1945的的320*224(10:7),也还是有1943改256*224(8:7)这样的特殊分辨率的游戏。
为了应对上述分辨率差异化的情况,如果针对每个rom一一调配遮罩并设置参数,那工作量实在太大。而我们追求大部分老游戏基本可以拉伸至4:3,少数比例的游戏则个体化处理一下,纵版游戏拉伸至10:7也是大差不差,也就不影响观感了。毕竟,那个年代,我们基本都是在4:3的CRT显示屏上玩游戏的。
如果想让遮罩严丝合缝地卡住游戏画面,我们解决问题的思路有三种。
1.修改遮罩的图片文件,让它在画面中只遮挡横向两侧的黑边,而上下部分不进行遮挡,或者把遮罩按照屏幕需求,上下部分留点边框,类似于掌机这种。这种方法需要在ps中处理png图。
2.在运行游戏并载入遮罩后,修改快捷菜单-遮罩中修改其参数,包括位移和缩放,使其和游戏画面严丝合缝,然后保存配置。
3.在运行游戏并载入遮罩后,在设置-视频-缩放-宽高比中,选择自定义,并修改视频分辨率和位移值,使其与遮罩严丝合缝,再保存配置。
当然,我们也可以凑合一下,例如街机这种只遮挡两边的遮罩,我们在视频缩放只使用默认的“核心提供”,在大部分情况下,视频和遮罩也卡得正正好,偶尔有两边遮挡或露出点黑边,只要你不介意,也能将就玩。
但在GB、GBA这类掌机的情况就不一样了,因为这类掌机的遮罩,为了有当年玩实机时的感觉,遮罩是上下左右都有遮挡的。这意味着我们不能一味地把游戏画面按高度最大撑满屏幕,也不能使用核心提供的默认分辨率,因为那样的话,画面上下部分势必会被遮挡。所以,我们需要手动修改视频显示参数来让画面显示在遮罩框中的合适部位。这种情况下,往往要放弃点对点显示,而是适当地把画面按照遮罩的需求进行拉伸或压缩。当然,我们也可以把掌机画面显示改成点对点方式,然后在去修改遮罩,让遮罩适配这种很小的原始画面。不过我感觉手头显示设备屏幕都比较大,如果完全按原始尺寸制作遮罩,那就白白浪费了现在大屏幕。其实有个折中的办法,就是让视频和遮罩相互妥协。在能撑满掌机屏幕的条件下,尽可能保留遮罩的边框,使上下左右都有那么点掌机的皮肤,又能让中间的留白部分尽可能大,且保持画面比例,这样可以保证更多的视觉信息进入人眼。最后再按照这个遮罩修改显示的具体参数。这种方法有一个缺点,只能针对你手头某一种分辨率的显示设备,例如我手头拥有1080显示屏的安卓掌机,按这种屏幕尺寸把画面输出长宽和位移写死,但换到另一台4K分辨率的显示屏,画面就会不匹配遮罩,需要重新修改参数。当然,换不同的设备,只要还是1080的屏幕,都是适用的。
针对上述情况,我在针对街机横版、纵版、PS等家用机用ps修改遮罩,都是保证4:3或8:7的比例,把这种留白部分的上下像素撑满,左右有遮罩皮肤来遮挡黑边就行。而忍者战士这种长屏游戏,针对性的制作长条遮罩也可以适配。针对GBA、GBC、WSC这类掌机,在ps中单独裁剪好遮罩,再在ps中计算好遮罩留白部分的尺寸和位移,输入给cfg文件就可以,当然你也可以在运行游戏时,打开RA菜单进行实时调整,直到将画面调整到满意的位置,再保存配置,配置文件里的参数就是正确的。我个人觉得在ps里放大图片后进行像素级的调整比那种肉眼的调整更精确。
国外高手制作收集了大量街机和其它框体的皮肤和遮罩,把它们分享出来,这减少了很多遮罩爱好者的工作量。不过,目前收集的遮罩还是不尽如人意的,针对单一街机的遮罩皮肤不是很全,比如恐龙新世纪、惩罚者、名将、合金弹头这样的,都有独立遮罩,可忍者棒球、变身忍者、吞食天地2、铁钩船长等这类国人耳熟能详的游戏,老外分享的遮罩包里就没有,这只能靠自己动手diy,所以我制作了相应的游戏的遮罩。同时,修改了一套比较好看的街机框体横版和纵版的通用遮罩,让那些没有独立遮罩的街机游戏统一调用街机框体皮肤。
说了那么多,其实我想说明的是,因为游戏分辨率、遮罩需求、显示设备的差异性,没有一套完美的显示方案,要么玩家妥协,使用通用遮罩和核心提供的分辨率,可能会有小瑕疵;要么按照手头设备的分辨率,把显示参数写死成自定义,使游戏画面和遮罩严丝合缝的契合,但换了不同分辨率的屏幕,就只能改写显示参数或直接关闭遮罩功能。
对于普通玩家,完全不需要学习制作和调配参数,只需要下载天马整合包已经被整理好的遮罩和配置就可以体验到遮罩的乐趣,不喜欢遮罩的人,只需要单独运行RA,在设置-界面-屏显-遮罩里,将其关闭,再到菜单里退出RA,就可以关闭遮罩,需要用的时候,再来打开。不过这种开关有失效的bug,当你把所有的遮罩按游戏保存了,那么即使你到RA的设置里把遮罩关掉后再进入游戏,只要这个游戏cfg文件里写了读取遮罩参数的,那还是会自动载入。游戏.cfg里写的参数优先级最高,所以它会无视全局开关。这种情况下如果想关闭遮罩,又不想把遮罩文件删了,就把RA下的overlays文件夹改个名就行,想用时就恢复原名。
跳坑者联盟收集整理,重新美化了大量遮罩,目前街机部分几乎做到了每个游戏都有独立遮罩,代价就是RA的配置文件会多出1GB多的占用空间来。
有关遮罩的使用部分就这么多。想diy遮罩的玩家,可以参考本文定制自己喜欢的遮罩。下一篇是RA进阶玩家常使用的另一个功能:滤镜。
遮罩搭配滤镜
下载链接:
https://pan.baidu.com/s/1ewFBBTEWwDhPTeDAKUPD2Q?pwd=zf8k
-----------------------------------------
参考资料
https://docs.libretro.com/guides/libretro-overlays/
https://www.youtube.com/watch?v=9R_XPpvhoH8