TAS-关于洛克人延迟滚动的原理以及基础讲解
大家好~我是小莺莺哈哈哈,最近半年变成打RTA的去了,完全忘了我的初心是做个taser,好几个月没更新tas视频了,这几天考虑找个改版做来着(其实我的exile他喵的现在还才重做了一半),反正就先找个时间更新下~
就着这一次机会我就顺便讲解一下关于tas的一个小知识,毕竟国内做元祖洛克人tas的人很少,作品也不多,很多技术国内taser还是不了解(包括我会的也不多),而且因为tas官网都是英文,很多人看见就不想去研究了。目前我是没有接触过国内有对延迟滚动有研究的大佬,也没见过(除了一崔),所以我就身先士卒分享一下自己知道的那么一丢丢原理,嘻嘻(我讲解的相关资料全部来源于tasvideos)
关于延迟滚动(delay scroll)也许很多喜欢洛克人的粉丝都不太了解,毕竟这个BUG有一个自己的专有名词,你也可以叫他延迟卷轴,这个BUG仅限于FC洛克人2,可以说是2代的一项特色了,并且最常见的操作莫过于空气人关的滚动,如图

类似于上图的操作,通过延迟滚动使洛克人从原本应该往下走才能过版变为传送至下一个版面。像这个图所示例的就是通过向右滚动将洛克人的位置调整到下一版面的左下角,节省了原本落下还要走到左边的时间。
那么,延迟滚动的原理是什么呢,它是通过游戏造成延迟使游戏数据发生错乱导致滚动版面发生改变,详细我肯定说不清楚,反正看得懂是换了不同的版面,看起来很叼就完了。(最通俗的一个说法就是1代和2代都有一个相同的东西,就是版面的上下以及左右是相通的,所以在代码发生错乱的时候它是有很大的可能性使版面向上、下、右出现滚动)
在开始之前我先放几张这三种滚动实现的图





以上就是举例,通常的延迟滚动的操作就是像这样。
好的,接下来我们回到正题,为了在制作tas的过程中让延迟滚动变得相对更加容易,节省精力,shinryuu和finalfighter两位大佬编写了一个延迟滚动的跟踪脚本,这个脚本能在调试的过程中更快的找到发生滚动的范围。我将这个脚本放到下面的链接,如果你想制作洛克人2的tas并且想让通关看起来魔幻一点,延迟滚动就是你最佳的选择,一定得搞!
https://share.weiyun.com/HXQsCf6V
当你打开这个脚本的时候,它有显示以下内容:
XY:坐标,X是洛克人前进的速度,Y则是下落的速度,这个很好理解哈
PRENMI:这个我解释不清楚哈哈哈你只需记住它所需要的范围,因为我还在学习,只能提供最基本的使用方法,关于量是多少我后面会讲到
MAIN:主程序处理量
TOTAL:为PRENMI+MAIN的总值。当延迟滚动能够成功的时候,total的值略小于9000
PRESCRL:当total值越大,prescrl的值越小。当它的值为4-13的时候,在滚动之前搞出延迟延迟滚动就能成啦(当然,个别改版会因为音乐的问题改变滚动的范围,但这个几率不太大,头铁一点多调几次就完了),如果这一项显示“-”的话就不能滚动
NEXTSCRL:total的值越大,这项的值就越小,这个next就比较明显了,你完全可以理解为滚动到下一个版面,因为满足这项的值的话,它会显示一个true。它与prescrl原理一样,值的范围在4-13
$14SET:total的值越大,这项的值就越小。如果值为4-13的话可以通过声音来调整延迟,同理显示为“-”的话就无法改变
madSE:这一项满足延迟滚动的条件值必须是1,它是调出延迟滚动的必要条件
RetSE:同上,为必要条件。这个值在<60的情况下是调试的一个标准
SE:音频的输出值(这个嘛我觉得如果不是原版的特定条件就不太需要注意,但也有可能是我没仔细研究这一项,它有概率会因为你在制作过程丢失几帧或者方法错误的情况导致滚动总是不成功,目前我是没有这个问题)
真折磨啊,这玩意实际没多少但是描述起来真折磨嘤嘤嘤
延迟滚动发生的条件
关于这个呢,我也在学习中,因为英语还是不太好,依靠机翻还是很多东西看不懂,我只能提供自己的看法,希望能帮助到想学习的taser。
当要实现延迟滚动的时候。X,Y两轴还是有点讲究的,你需要根据这两项来调整上面我说的那些数值的范围,如果不是向右的话,它的坐标值不是固定的。
最简单的方法:scrl的值需要调试至4-13,前提SE的值这个必要条件一定要满足。只要记住是1就完事了。而延迟死亡、改变延迟滚动的目标(例如向下滚动)所需要的就是将NMI的scrl值调试到25-34,这一点我至今也有疑问,我在制作exile的向下滚动的时候,这个值甚至已经超过了34它还是成功了,不过超出的值并不高。
不同延迟滚动retSE所需要的值

那么,如何调整这些数值以及处理量呢,很简单,就是改变洛克人的动作。如你所见,几乎所有延迟滚动发生的时候洛克人都是在屏幕里放满道具的。根据道具的数量能够实现对处理量的增加,从而产生延迟,同时,你也可以通过在平台边缘进行左右走动产生声音数值来增加处理量,以及在产生延迟的那一帧按菜单键。在调试延迟过程中按菜单键能够增加40处理量;还有可以通过打掉小怪刷出道具来增加处理量,最好的例子就是泡泡关BOSS门口那个向下滚动,在产生延迟滚动的过程shinryuu利用三发齿轮加上打掉2两个小怪从而使处理量满足滚动的条件。
延迟滚动技术说明表
这个表我真是在刚学的时候是什么结宝都看不懂,个别两个我现在也不太明白,我先这里给大家一个解释,如果有兴趣你们可以自己下去再了解一下,学会了别忘了教教我~

当滚动后的版面与你想要的不一样时,你需要增加大概40的处理量就能将滚动目标改变为滚动至下一个版面,当然了。成功的scrl值是肯定在60-10或是1-3的。
ε=(´ο`*)))唉我所知道的的也就这么一小部分了,关于提前计算延迟滚动的范围与提前计算会在多少帧成功我还在进一步的学习中。我很笨嗷,其实这个专栏更多也只是讲了怎么看这个脚本,希望我讲的这些能够给想学习延迟滚动的taser们一点帮助!如果有讲的不好的地方别喷我呜呜呜,不明白的可以问问我,我会在自己能力范围给你解释滴~
(我所讲解的内容都来自tasvideos,只不过我用了比较好懂点的方式讲出来,不知道是不是真的好懂~是原创没毛病吧?嘻嘻嘻)
如果觉得我讲得不够好想自己去了解一下的话,我把链接放到下面,要是你们哪位大佬学会了请别忘了教教我!(梅开二度提示)
https://gitlab.com/nekopc/tasbox/-/blob/master/screenshots/delayscrollchart.png
http://www.yuko2ch.net/rockman/howtodelayscroll.htm
http://www.yuko2ch.net/rockman/howtodelayscroll_eng.htm