溢出关卡吧 关注:253贴子:3,576
  • 25回复贴,共1

关于修改金手指074E进入溢出关卡的原理解析

只看楼主收藏回复

这个帖子的起因→http://tieba.baidu.com/p/2840601688
在此先感谢原帖LZ @他天一 提供相关研究资料。
楼下正文。


IP属地:上海1楼2014-02-21 20:09回复
    但是,我们也知道,修改金手指074E的值时,并不一定会使地形发生改变:VirtuaNES不会改变地形,FCEUX会改变地形,而FCEU可能会也可能不会。这中间的差别在哪里呢?就在于FCEU中提供的“读取替补”功能。
    事实上,“读取替补”这个功能反映了金手指的两种不同的工作方式:一种是改写内存,使读取到的内存值发生变化;另一种就是“读取替补”,也就是在需要这个内存值时直接读取金手指提供的数值作为内存值的替补。
    那么,这两种方式又有什么区别呢?这个074E对地形的影响情况就是一个很好的例子,让我们来分析一下。先看“改写内存”的方式,使用这种方式时,实际上是在频繁向内存中写入修改后的数值,有多频繁呢?反正达不到“指令级”,即不可能每执行一条指令就改写一次内存值。这样,内存值就可能被其他指令重新改写。在本例中,我们开启了金手指074E 03之后,虽然内存074E的值变成03了,但是再执行一句STA $074E,就又把074E的值改回去了,于是后面的LDY $074E就会仍然读取到未经金手指修改的内存值,地形自然就不会发生变化了。
    而如果改用“读取替补”的方式呢?不管前面的STA $074E如何改写074E的值,后面的LDY $074E总是会读取金手指的值03,这样,读取到的地形指针就会变化,地形就改变了。


    IP属地:上海3楼2014-02-21 20:55
    收起回复
      2025-08-21 09:01:46
      广告
      不感兴趣
      开通SVIP免广告
      最后再分析一下074E对地形改变的具体影响。
      举个例子:1-1,空间编号25,即074E=01,074F=05。开启金手指074E 03后,可以相应计算回去,相当于空间编号变成了65,于是地形变成了8-4。
      再举个例子:还是1-1开启金手指074E 03,只改变地形,敌人没有改变,钻水管仍然会进入地下奖励地带(空间42);但是同样地,074E 03的作用使得空间编号相当于变成了62,于是出现了2-4的地形。


      IP属地:上海4楼2014-02-21 21:06
      回复
        好了,分析结束。


        IP属地:上海5楼2014-02-21 21:07
        回复
          关于开启金手指074E 03(对照01)之后从地下出来黑屏的原因……
          正常的1-1地下部分有这样一个“空间传送”敌人:1E A5 0A,作用是在第1世界时转换空间到A5的页面0A。其中,空间编号的最高位是无效的,因此A5就相当于25。
          而开启金手指074E 03之后,原本的空间25(1-1)的地形会变成空间65(8-4)的地形。那么,空间65的页面0A是什么情况呢?
          以下是空间65的页面09~0B的地形:2E 82 67 02 84 7A 87 31 0D 0B ...
          这些地形具体是什么我就不说了,只需要注意其中的0D 0B。这是一个“跳至页面”单位,会使地形加载指针从页面09跳到0B,于是出现了一个空页面,就是0A。而SMB的地形加载机制是这样的:如果地形加载指针指向了空页面(没有任何地形单位的页面),就会黑屏卡机……


          IP属地:上海9楼2014-02-22 10:26
          回复
            所谓的“水管传输设置”就是敌人单位“空间传送”,这种敌人的纵坐标=E,在屏幕中没有贴图,但具有跟一般敌人一样的性质,如第一页不加载等。因此,地下奖励地带是有这种敌人的(而且还不少)。
            这个敌人十分特殊,它是3字节的(此外在FC的都是2字节的)。
            第1字节:横纵坐标 xE
            第2字节:传送至空间,前3后5,最高位(转换成二进制后)为1时是打上页标识
            第3字节:生效世界即传送至页面,依循前3后5的规则(转换成二进制后,有不少都是这样分的,比如空间编号等),前3位是生效世界,000=1世界生效,001=2世界生效,010=3世界生效,依此类推。后5位是传送至的页面。00000=传送至第1页,依此类推,
            当然,这个传送过程也很有说道。
            当世界号不匹配时,如果是横向钻的水管,从本空间第1页以出水管方式出现,就是”传送失败“。如果匹配,但是传送至的页没有地形单位,就会“A级崩溃”(我感觉此处崩溃不能与正规意义上的单页地形巡官划等号,因此我搭上了引号)
            此外,真正的没有敌人的空间不多, 自行走关卡 、 跳关区 也就这两个是没有一个敌人的。


            IP属地:黑龙江10楼2014-02-22 11:09
            收起回复
              另外,1-1密室、2-1地下密室、3-1地下密室等都在一个空间里,只是用了”停止滚屏“这个地形把他们“隔开”了。再加上通往不同空间的空间传送,所以……
              因此,这个空间被叫做地下奖励地带。类似的,5-2水下密室叫做水下奖励地带
              但云上天奖励地带却不同,2-1(5-2)的是同一个空间(起始页面相同),3-1(6-2)的是同一个空间(起始页面相同),就是说,这两种云上天奖励地带是两个空间
              PS:要是我弄的话,我就把他们弄成一个空间,这样就多出一个空间了~ - -)


              IP属地:黑龙江11楼2014-02-22 11:17
              收起回复
                现在突然想起来(wa)一个问题(fen),就是1L给出的那个帖子的第10L……为什么会引发GFX崩溃?


                IP属地:湖北来自Android客户端13楼2016-07-11 16:57
                收起回复
                  2025-08-21 08:55:46
                  广告
                  不感兴趣
                  开通SVIP免广告
                  修改水下,地下,城堡场景会导致4-2的天上跳关区的信息变成36 5 36 这个可以解释下原理么


                  IP属地:河南来自Android客户端14楼2025-02-19 20:10
                  收起回复