金牌马里奥吧 关注:208贴子:306
  • 6回复贴,共1

【溢出关卡】各种搬运

只看楼主收藏回复

以下正文。


IP属地:黑龙江来自Android客户端1楼2013-12-13 19:56回复
    SMB2J,虽然说它是一代的一个官方Hack(说它是Hack的证据在于,SMB2J和SMB1 FDS版的ROM文件大小是一致的,都是64KB),但它明显比一代多了很多元素:毒蘑菇、绿弹簧、风、通往所有世界(除9外)的跳关区(包括正向和逆向)、附加的9世界和A~D世界,等等。
    鉴于此,就有人提出:既然2J比1代多了这么多东西,而文件大小却没有变,那是不是说1代当中有未利用的剩余空间,这些空间存储了1代的溢出关卡;而2J把这些空间都利用完了,就没有溢出关卡了?
    表面看来,似乎确实是这样,而且如上文所说,2J把9世界之后的“溢出世界”全部封杀了,哪里还会有溢出关呢?
    但是,这种说法有一个根本性的错误,它认为溢出关卡是存储在ROM文件中的独立存在的关卡。事实上,溢出关卡只是由于内存地址075F和0760在给定了指定范围以外的数值时产生了错误的关卡映射,从而指向了关卡数据区以外的位置,然后把指向的位置的数据当成了关卡数据进行处理,就出现了各种奇特的溢出关卡。
    因此,溢出关卡的有无,与ROM中是否有未利用的空间并没有关系。至于SMB2J当中无法通过金手指进入1~8世界以外的世界,那只是因为2J在设计时就加入了“溢出世界屏蔽”处理。
    ——by miku_con


    IP属地:黑龙江来自Android客户端2楼2013-12-13 19:57
    回复
      2J中拉旗后的死亡判定与1代不同,1代拉旗后坠崖并不会真正死亡,而是不等死亡音乐播放结束就会再次播放过关音乐(只是听起来有点诡异),同时会发生所谓的“死机滚屏”,如果等待时间足够长,这种反复卡顿的现象最终会停止,流畅地放完一遍过关音乐,之后如果达成了过关条件(时间算分了)还会过关;
      而在2J中,拉旗之后如果会死,那么死了就是死了,放完死亡音乐也不会再放过关音乐,虽然“死机滚屏”现象仍然存在,但不会阻止死亡事件的发生。
      初次发现关卡:1-34
      ——by miku_con


      IP属地:黑龙江来自Android客户端3楼2013-12-13 19:59
      回复
        现在走了100来关了,先说一下小发现
        1.ABCD世界进入时重写了Y值和空间编号这一区域的数据(感谢miku_con)
        2.绿弹簧就是进入相应世界加载了一段命令使红弹簧变为绿弹簧
        3.跳关区的基本通往为36.5.36
        4.城堡版7-1钻管会到7-2的某页面,而且居然也是城堡场景。。
        5.原正常空间中的较长一段路如8-4第一次boss站前钻水管之前和之后那一段路,在非正常空间中会变得极其的长。。。。
        6.非正常空间的跳关区在数十页面之后,而且没有跳关机制和停止屏幕滚动,之后就又回到关卡一开始了
        7.城堡中的风效果只有图像没有实际效果。。
        8.2j中是水下有对应地下关卡,地下有地上,地上有城堡
        9.2j空间一览表
        00 3-2
        01 6-2
        02 1-4world 水下奖励地带
        03 8-4水下部分
        04 5-8world水下奖励地带
        05 9-1水下部分
        06 9-2
        07 9-4
        20 1-1
        21 1-3
        22 2-1
        23 2-2
        24 2-3
        25 3-1
        26 3-3
        27 4-1
        28 4-2
        29 自行走关卡
        2A 4-3
        2B 5-1
        2C 5-3
        2D 6-1
        2E 6-3
        2F 7-1
        30 7-2
        31 7-3
        32 8-1
        33 1-4world云上天奖励地带
        34 地上跳关区
        35 8-2
        36 8-3
        38 9-1
        3B 地下,水下钻管后部分
        3C 5-8world云上天奖励地带
        40 1-2
        41 地下跳关区
        42 1-4world地下奖励地带
        43 5-2
        44 5-8world地下奖励地带
        60 1-4
        61 2-4
        62 3-4
        63 4-4
        64 5-4
        65 6-4
        66 7-4
        67 8-4
        68 9-3
        69 9world云上天奖励地带


        IP属地:黑龙江来自Android客户端4楼2013-12-13 20:01
        回复
          SMB2J使用金手指进入A世界的方法:输入金手指07FB-01-01,然后开始游戏即可


          IP属地:黑龙江来自Android客户端5楼2013-12-13 20:03
          回复
            先上两个图:http://g.hiphotos.baidu.com/forum/wh%3D200%2C200%3Bq%3D80%3Bg%3D0/sign=b89479e9b11c8701d6e3bae4174fb21d/bbd09339b6003af3ac601b6d372ac65c1138b6ed.jpghttp://h.hiphotos.baidu.com/forum/wh%3D200%2C200%3Bq%3D80%3Bg%3D0/sign=1c3341218501a18bf0be1a4dae1f2b3a/583af0003af33a877eb7c717c45c10385243b5ed.jpg其中,第一个图是1~9世界该内存区域的数值,第二个图则是A~D世界的数值。请注意第二个图中的一大片FF……事实上,这些数值区域在1~9世界和A~D世界存储了不同的数值;也就是说,在SMB2J中,这些数据不再是“静态数据”了。
            关于数据区域的命名更改:原来的“地形代码”“敌人代码”等名称不够确切,因此改为“地形数据指针”“敌人数据指针”。
            各数值区域的起始地址:
            1~9世界:y值C357,空间编号C360,敌人偏移值C394,敌人数据指针C398,地形偏移值C400,地形数据指针C404;
            A~D世界:y值C357,空间编号C360,敌人偏移值C372,敌人数据指针C376,地形偏移值C3A0,地形数据指针C3A4。
            最后再作一点分析。为什么SMB2J的“敌人数据指针”和“地形数据指针”都只有一个区域?因为SMB2J的数据指针读取规则发生了变化,不再是从两个区域分别读取数据指针的两部分,而是直接读取连续的两个数值。


            IP属地:黑龙江来自Android客户端6楼2013-12-13 20:07
            回复
              IP属地:黑龙江来自Android客户端7楼2013-12-13 20:09
              回复