初音✨七奈
miku_con
人如ID,本人乃Mikucon一枚~
关注数: 129
粉丝数: 652
发帖数: 17,723
关注贴吧数: 8
关于0-1(水下4-4)没有敌人的原因解释 为了回答问题特地新开一帖 从某个帖子里复制一段话,基本上就是答案了: 因为敌人指针为6B9E,是SRAM的区域,其中的数据可能有三种处理方式:(1)有效内存,数值为FF,则由于FF为敌人结束标志,而确确实实地没有敌人;(2)有效内存,数值为00,则敌人单位为重复的00 00,即集中在第一页,因而不会被加载;(3)无效内存,以指针的高字节作为读取的数值(这里为6B),敌人同样集中在第一页,不会被加载。 这里的6B9E是空间0A的指针,而水下4-4是空间1D,其指针为7EA0,同样是SRAM的区域,因此同样适用上述解释,无非当使用第三种处理方式时,读取到的高字节数值为7E,对应的敌人单位是三个字节的空间传送(7E 7E 7E),其他的就没什么差别了。
贴吧有多少【冷酷无情的签到机器】?我算其中一个。在上海市,本人吧龄排名4.8% 如果觉得生活不容易,想想曾经追梦的自己 #贴吧时光机# https://tieba.baidu.com/mo/q/hybrid-usergrow-bigevent2022/memoir?customfullscreen=1&nonavigationbar=1&trackFrom=fatie
关于某人提问的“去除文件汉字的程序” 我只想发个图:然后,简单回答一下吧,问题应该是出在 Split(旧名称, "_")(1) 这里,即程序假定了文件名当中存在下划线,这样如果遇到“不符合格式要求”(即没有下划线)的文件名,自然就会出错了
节日快乐 如题 来自一位上个月被封在家里半个月的无聊的上海人士
【测试】好像出了点状况 先随便发点什么看看
【水】被强制改名了(手动滑稽) 本来贴吧用的好好的,今天中午突然发现……自己的名字被强行“初始化”了,变成那种常见的“初始随机名字”了 (不过好在用户名【也就是ID】还在就是了) 这不是强迫用户改名么…… 不过我正好也想改了已经改好了 以后你们见到这个新名字的时候,不要产生“这人谁啊”的疑问就好 顺便,头像没换(懒得找图),只要度娘不给换回默认头像就一直用下去好了(怎么有种立flag的感觉),看头像识人还是没问题的
【转帖】智慧桥(摩艾君)的溢出关卡 【图片】今天想起以前玩的一个游戏智慧桥(摩艾君) 这游戏有个隐藏关61关好像没人打通 百度都查不到 哪个大佬打一下看看【fc吧】_百度贴吧来自:http://tieba.baidu.com/p/6948278602?sharefrom=tieba
6502程序员笔记:个人制作的补丁代码解析 大家好,2020元旦快乐 半个月前,我在发布了某个bug修复帖的同时,也上传了一批19年新制作的补丁,当时就说过要发帖一并分析一下。现在,我来兑现诺言了 先来看看本人网盘里已有的补丁文件:嗯,我没打算一天就把这些补丁全部分析完,所以算是先开个坑吧
【bug研究】“踩鱼变乌龟”的原理解析及修复 大家好,我又来了 上次分析了一个bug,就是“敌人被顶成龟壳”,顺便提到了还有个bug就是“踩鱼变乌龟”正常来说,原版SMB是不会出现这个bug的,因为鱼是没有能力在空气中水平飞行的,如果游鱼出现在非水下场景,这本身就是bug;(但是同样是水下生物的章鱼,为什么到了2代日版就可以飞空了……而且,在1代的时候,章鱼就已经有专门的踩踏得分设定了——1000分,当初制作人员到底想把这种敌人搞成什么样子……)不过,还是会有改版让鱼变成具有空中平飞能力的“异种”,这时如果我们踩到了这种鱼,就会发现,它们一踩就会变成乌龟……这是什么伪装技巧么 上次的帖子里已经说过了,这个bug也是由一段变身程序引发的,不过不是那段“各种方法搞死敌人”用的程序,而是踩踏敌人时专用的一段程序,由于两段程序对敌人ID的判定范围不同,因此被打死时不会变身的游鱼,被踩之后反而会变身 本帖将会深入分析这个bug的相关代码,并由此得出修复方案。
【bug研究】“敌人被顶成龟壳”的原理及修复过程 好久没来了今年在这里只发了两个新帖子:嗯,包括这个帖子在内,正好4个月一帖 好了说正事吧。 在SMB中,有一个很有趣的bug:如果一个“行走类敌人”(板栗仔、乌龟、刺猬)位于屏幕左侧的特定位置,那么它被从下面顶起时,会变身成龟壳,可能变成绿色,也可能变成红色,但它们起身之后都跟绿乌龟的表现一样(遇到悬崖会掉下去)。 其实在很早的时候,就已经有人分析过这个bug的原理了,就是当敌人被顶时,会执行一个变身程序,如果敌人ID在特定范围,就会被变成00或01(分别是绿乌龟和“会跳崖”的红乌龟的ID;说到这里顺便吐槽一句,为什么SMB要搞两种红乌龟……);本来“行走类敌人”的ID都不在这个范围,应该不会变身,但是执行到变身程序时,却误将“敌人在屏幕中的相对横坐标”当作敌人ID使用了,于是特定位置的敌人被顶之后,就会变成龟壳。 后来有一天,我忽然想尝试修复这个bug,于是在数日的代码分析和研究之后,终于成功修复了这个bug,而且还是连同另外一个bug一起修复了 然后,你们就看到了这个记录当时过程的帖子。
对某“负一关”揭秘帖的“吐槽”(手动滑稽) 一楼惯例百度 (惯例个毛线知道我发帖风格的人都清楚,我从来不把一楼留给百度,不过现在的度娘越来越难以捉摸了,我也是有点认怂
【今年本吧第一帖】测试一下 Option Base 1
【温馨提示】提问时请注意自己是否希望得到回答 嗯,其实就是贴吧的某个智障功能:“评论权限” 如果你在吧里发帖提问却没人回答,不是因为别人不想搭理你,而是你自己设置了不准别人回复 希望某个楼主能看到这帖子 顺便在这里回答了那个问题吧:你要解压出来才能正常使用啊,在压缩包里的文件VB怎么找得到呢
【真心提问】VB乘方运算的实现方法 最近在一个帖子里发表了“正整数次幂的乘方运算与多次乘法没有区别”这样的言论,立刻被大佬教育了,并且给出了有力的证据,让我认识到了自己的肤浅 现在我知道了,VB编译后的程序进行乘方运算时,首先要将运算数进行类型转换,然后再调用VB库中的“乘方函数”进行运算 但是,这位大佬并没有解释VB的乘方函数的算法原理,我想进一步追问,但是似乎问的方法不当,被大佬误解了,还对我进行了一番批评讽刺……泪目 所以我决定开一个提问帖,真心求解,希望这次不会有人误解我是倚仗等级大放厥词吧(其实大家应该也都明白,贴吧等级并不代表学问水平) 首先,根据我自己的理解,我知道乘方运算有两种算法:循环乘法和指数-对数运算,大致可以这样表示: '计算x^n的算法 '循环乘法 y = 1 For i = 1 To n y = y * x Next i '指数-对数运算 y = Exp(Log(x) * n) 现在,我的问题就是,VB乘方运算是否使用的是这两种算法? 希望大家回答,最好给出证据
【破事水】度娘乙烷 昨天度娘胃口大开,一连吃了我5个回复然后我申请恢复了3个,其中两个已经失败了,如上图 一个是因为主楼被炸(这就没办法了),回复内容如下:可见其中包含了两个非常和谐的字母(我在申请恢复的理由中也多次使用这两个字母),度娘选择了不做屏蔽而直接吞楼的处理方法 而另一条申请失败的回复……明明是申请理由违规啊,回复内容又没违规,只是包含了一个滑稽表情(这5条回复中共有2个滑稽),喵的难道度娘要用官方手段禁用滑稽么?那也不应该抽帖子啊,直接把滑稽从表情中移除不行么 以上
发个帖子测试一下 感觉我好像进了度娘的黑名单了……回个帖子就被删,图片防抽也不好使了
超玛一代吧签到2018天纪念 然而并没有什么卵用 扔图走人:
【转帖】某圣斗士游戏的溢出关卡 惯例扔链接完事 https://tieba.baidu.com/p/5515706909
【贴吧bug】教你怎么在楼中楼发空回复 最近,贴吧出现了很多空的楼中楼回复 嗯,对方并不想跟你说话,但是还是给你发了个回复,然而一个字都没有 开始我以为贴吧又出了什么新的黑科技,直到后来…… 自己也连续几次成功发出了没有任何内容的空回复,然而我是码了一堆字上去的啊,f***(手动屏蔽) 然后,从这些回复内容当中发现了一个共同点:都包含#这个符号 于是,问题就显而易见了:这是贴吧的话题功能的锅 说到这里,那么方法也就出来了,我表示不用再说一遍吧 嘛,不过只有楼中楼才有这个bug,主楼层是不会有问题的,比如这个帖子的内容你就能完好地看到 另外还有个例外:楼中楼当中还是可以发表情的,然而表情也是包含#的转义字符Interesting
【研究员属性回归】空间3C/46在不同模拟器中的表现及解释 好久没研究跟这里相关的玩意了,一是忙,二是没研究课题…… 这次要说的这个其实也算是“历史遗留”了,不过当初这个问题并没有作为一个单独的问题被提出来,所以我自然也没有考虑过。 这个问题是最近刚刚由元老 @愿卿勿忧 在我转发的那个“火星帖”当中提出来的,描述如下: 为什么K-1和B-1(分别是地上/地下版3-4)在某些模拟器中会崩溃,而在另一些模拟器中不会崩溃? 这两关的空间编号分别为3C和46,如题。 那么,下面开始正文。
转发一个火星帖(手动滑稽) https://tieba.baidu.com/p/5315135870 @愿卿勿忧
【水水更健康】锟斤拷重出江湖 不废话直接上图:顺便附送一张bonus,看我发现谁了
嘛,隔壁一代吧已经陷入无人管理状态了 原吧主w7n终于被撤了……(其实早在去年,w7n就置顶了一个帖子,建议弃用贴吧并转移阵地,不过一直坚持到今年才正式放弃贴吧) 不过那个置顶都发了快10天了我居然今天才注意到 果然有了妹子之后这边的事情都不太注意了呢 顺便贴一下我在那边的签到天数:这也是贴吧上线签到功能的天数(最多比这个多一天),没错,全程签到无断签(然而并没有什么卵用) 至于这边么,虽说冷清,倒也清静,虽然没有时间干正事了,偶尔来水一发还是不错的,比如这个帖子
今天被一个比度娘还SB的人删了帖子 帖子链接:http://tieba.baidu.com/p/5165919562 被删除的内容:个人猜测的删帖原因:这帖子里一群同一个学校(甚至可能是同一个班)的人在讨论,被我一个外人搅了兴致,于是回复被怒删 以上。其实我就是来水个帖子的
转个10年前的帖子…… https://tieba.baidu.com/p/184509681 标题:第83关——属于《雪人兄弟》的“水下八关” 感觉这帖子发帖之后差不多每年都会被挖出来一次…… 帖子内容是雪人兄弟(Snow Bros.)的溢出关卡,重点说的是第83关 实际上,51~83关应该就是这个游戏的“计时模式”关卡,3个计时模式应该有总计33个关卡(大概) 也就是说,这两者不是“看起来像”,其实就是一回事,至于游戏内的状态不同那是打开方式不对
我只是单纯地转个帖子(手动滑稽) https://tieba.baidu.com/p/5136592332 顺便说句,节日快乐
【水】我似乎明白为什么要禁止挖坟了 根据我的观察,专门挖起一个坟帖说事的人往往发表的是一些脑残言论
【测试】如果这个帖子存活那么度娘就是SB VB.net
于是又一年过去了 然而这一年基本什么都没做 大坑(SMBViewer)仍然坑着,决定改写内核之后写完一个基本模块就搁置了 群里基本上没什么研究和讨论的氛围,水得比较多 至于这里……嘛,不说了,今年有过回复的帖子才半页 总之大概就是这样吧,元旦快乐
【水】贴吧〖一楼献给国家〗bug 一楼测试
听说初音吧被封了 吓得我赶紧滚到这里水了一帖
【元旦快乐】SMB关卡查看程序预览版 嘛,那么这个说好的元旦节目,也是一份跨年的小礼物,现在送上 效果图镇楼:
【水】庆六一&等级达到12级 如题
关于各种盗版ROM Select键失效的问题 最近刚刚自己制作了一个SMB的0-1修复补丁,然后顺便挖起了我自己那个盗版ROM分析帖,并指出盗版ROM实际上还存在一个问题,就是很难选择双人模式(但不是不可能),只是我把这个研究课题一直留到现在…… 结果今天又看到一个坟帖:http://tieba.baidu.com/p/669253969 (链接仅供考古,请勿 跟坟【←如果不是别人挖出来我也看不到这个帖子……】) 内容是说坦克大战的某盗版ROM也存在类似的问题,具体没有进一步描述ROM相关信息,因此不知道是烟山版还是其他版本的盗版……另外这个帖子里也提到了盗版SMB的这个问题。 嘛……总之这个研究课题是定了,立帖为证,至于什么时候研究……待定。
原来SMB3的快速通关bug竟然是…… 最近又仔细看了一遍SMB3的在7-1利用水管bug快速通关的录像说明,然后发现…… “通过碰到一个bug物块——隐形音符块,……会使程序指针异常跳转,然后陷入循环,最终堆栈溢出,程序指针跳转至$0081……” (注:这并不是对原文的直接翻译,而是在保留原意的基础上有所修改,另外有兴趣的可以直接到http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftasvideos.org%2F4288S.html&urlrefer=6814ad36665676a107b153234429e831 ,也就是这个通关录像的说明页面查看原文) 这竟然是一个“堆栈溢出RTS崩溃”!而且不需要修改内存,而是利用游戏bug就可以触发这个崩溃! 所以……至少这可以说明“堆栈溢出RTS崩溃”并不是SMB2J的专利……
【SMB1】128空间内容概览 嘛……其实我本来不想发这个帖子的,因为自从溢出关卡的真相被揭示出来了以后,所谓的“真·溢出关卡”(实际上就是128个空间)已经可以通过金手指0750轻松进入了,要自己去看这些空间也并不是什么难事吧…… 虽然是这样,但是出于同样的理由,当年溢出关卡研究的“先驱者” @愿卿勿忧 最初发的那些帖子,也就同样没有什么意义了…… 所以,从某种程度来说,出于对这位先驱者的尊敬,也是体现我们现在的研究是站在巨人的肩上这一层意思,我在这里郑重地发布这个帖子;另一方面,也是考虑到目前刚接触溢出关卡的研究者(甚至从那个时候就开始进行研究工作的“先驱者”们),知识基础还普遍没有达到这个高度(我之前发的研究帖子过于深入,没有相当的基础也是无法理解……),因此这个帖子也作为一个科普向的东西来进行展现。 以上。下面正文。
【新理论】敌人错位-随机起点循环理论 自从提出“地形二次循环”理论之后,我就给自己留了个问题:敌人是不是也有“二次循环”?当时,我的回答就是:没那么简单。 现在,经过对溢出敌人数据的分析,我已经可以得出更加明确的结论:敌人的循环方式为“错位-随机起点”循环。 所谓错位循环,就是由于关卡敌人数据中存在3字节的“空间传送”单位,而造成的第一次循环与后续循环时敌人偏移指针指向不一致,从而出现不同敌人的现象。 所谓随机起点循环,是由于关卡敌人数据中存在“跳至页面”单位,使得后续循环从某个随机的敌人单位开始加载敌人的现象。
【新理论】地形二次循环理论 这是本人近阶段分析溢出地形数据得出的另一项结论。 所谓二次循环,就是由于关卡地形数据中存在“跳至页面”单位,而造成的第一次循环与后续循环加载的地形单位不一致的现象。(注:128个地形单位全部加载一次即称为一次循环,所以“第一次循环”就是指地形单位第一次出现。)
【纠结向】“页跳过”到底是个什么玩意? 这是近阶段本人帮忙制作128空间全图的时候,分析溢出地形数据得出的一些结论。 那么先从头说起吧。 “页跳过”,准确的名称应该叫做“跳至页面”,是地形、敌人都有的一种数据单位,纵坐标分别为D和F。敌人的“跳至页面”暂时还没分析,这里只说地形的。“跳至页面”的ID范围是00~3F,其作用就是使地形加载页面指针(内存072A)指向“跳至页面”单位的ID后5位;但是如果“跳至页面”带有页标识(ID=80~BF),那么它的作用就会变成“清除该单位所在页面的所有地形单位”。 以上这些其实是早在开始地形数据分析之前就已经得出的研究结论,在本帖中,这些是基础知识。 好了,正文即将开始~
【Bug?】受伤时判定为悬空?会导致迷宫判定失败! 无图无真相…… 玩某hack的时候发现的,该hack特征为:在1代原版的基础上,敌人全部改成随机种类(除了各种梯子、Boss等特殊敌人以外),过关之后下一关为随机关卡(即1-1过关之后可能进入4-3,2-4过关之后可能还是2-4,等等)。 在某一次玩到4-4的时候……第二段迷宫的下路突然出现一条火焰,于是不幸中招,由于是在向前冲,因此受伤时发生拉屏,正好拉过了迷宫判定点,然后……这个“肇事者”火焰突然消失了! 难道……?我不甘心地往前走了几步,果然……循环了…… 所以,结论:如题(前一句是猜想,后一句是事实)
【水】现在的度娘越来越扯淡了…… 今天一进来就看见好几个纯粹无关的问题帖,连“玛丽”这个关键词都不带…… 是刷帖机还是度娘知道自己爆吧……总之RT
【代码分析】盗版SMB1的0-1问题成因分析 在前一段时间的研究中,曾经对所谓的“盗版ROM”进行过少量的分析,对其中与正版ROM不同的现象进行了部分解释,比如正版ROM中的部分卡机崩溃在盗版中会重置,以及盗版ROM重置时会花屏等。但是,还有一个不同的现象,却一直没有解释,就是盗版ROM在除了VirtuaNES以外的模拟器中都会出现0-1的问题。 现在,是时候来分析一下这个问题了。
关于盗版ROM 0-1火棍出现条件的问题 最近经常看到有人说玩到了只能进0-1的SMB1,而且这个0-1还过不去,在第二段迷宫的下路会出现一条静止的竖直长火棍挡路。 开始,我还以为是又出现了不同版本的盗版ROM,因为我用VirtuaNES、FCEU、FCEUX模拟器测试了正版和盗版ROM的0-1,都是没有任何敌人的。原因也很简单,因为0-1的敌人指针是7EA0,是SRAM的区域,无论从中读取到的数值是00(调试版VirtuaNES)、FF(非调试版VirtuaNES)还是7E(FCEU/FCEUX),都是“一页敌人”(00或7E,而且7E还更特殊,即使能加载,也是一个“空间传送”)或“结束标志”(FF)的情况,自然不会出现敌人。FDS版ROM的水下4-4倒是会出现敌人,而且也是第二段迷宫的下路出现静止的长火棍;但是FDS的0-1却不是水下4-4,而是一个E-1类关卡(空间编号7D)…… 难道真的有一个不同版本的盗版ROM,它的0-1的敌人指针被修改了,于是出现了敌人?但是,0-1的敌人指针实际上是由7-1地形指针的低字节和3-1云上天奖励地带敌人指针的高字节组成的,所以如果0-1的敌人指针被修改了意味着什么,你懂的…… 但是,我又看到了另一种说法,说0-1的火棍在手机模拟器上才会出现…… 难道说,还有第三种处理SRAM的方式?既不是填充全0,也不是填充全1,而是有0有1的其他数值? 这还真是件令人纠结的事情……
忽然有个想法……关于SMB1 1-1和自行走过场的空间编号 首先,我们已经知道,1-1的空间编号是25,自行走过场的则是29。 然后,这两个关卡的空间编号与8个世界的“y值”是连在一起的,于是我们就看到了这样的一串数值: 00 05 0A 0E 13 17 1B 20 25 29 这两个空间编号如此自然地延续了y值的变化规律,这说明了什么? 我认为,这有两种可能: 1.SMB1本来想做成10个世界,并且第8世界也有自行走过场(20和25的差值为5),即8-2原本也会是一个地下或水下关卡。但是后来由于某种原因,改成了只有8个世界,然后原本第9和第10世界的y值就变成了1-1和自行走过场的空间编号。 2.SMB1一开始就是按照8个世界设计的,25和29这两个空间编号纯属巧合- -
再论崩溃的定义与等级 在早期的研究中,崩溃是依附于溢出关卡的一种存在,我们一直都在说“某某关卡在某个位置会发生某种等级的崩溃”;而且我一度受这种观念的影响,在研究崩溃时对于修改075F、0760和0750以外的内存造成的崩溃持一种排斥态度,认为这是所谓的“人为崩溃”。 但是,崩溃难道只有溢出关卡中才存在吗?正常关卡就不会崩溃吗?答案并非如此。既然崩溃本身就不是溢出关卡特有的现象,那么研究崩溃的范围就不应当局限于溢出关卡当中;何况,进入溢出关卡和那些制造“人为崩溃”的行为有什么区别么?不都是修改内存么?有本事你不开金手指就让游戏崩溃啊~事实上,不开金手指的确可以使游戏崩溃,只不过在SMB1中只能达成分数栏晃动、GFX崩溃这些对游戏性影响不大(游戏仍然可以继续运行)的崩溃。但是,在其他一些游戏中,仅仅通过操作是可以使游戏发生重置,甚至死机这样的崩溃的,不过要达成这种目的的操作一般需要达到TAS级精度。 以上算是引言。下面开始正文。
【吐槽向】节省还是浪费?——关于SMB1代码分析的一些结论 我们知道,SMB1的ROM数据量只有40KB,其中程序以及与程序相关的数据占32KB(PRG ROM),另外8KB则是用于图像显示的数据(CHR ROM)。 目前,我已经对PRG ROM的代码进行了少量的研究。这个“少量”研究相信各位都清楚是关于哪些代码的。不多说了,下面正文开始~ 注意,以下内容涉及汇编知识,我会简要解释,如果还是看不懂就算了……
关于修改金手指074E进入溢出关卡的原理解析 这个帖子的起因→http://tieba.baidu.com/p/2840601688 在此先感谢原帖LZ @他天一 提供相关研究资料。 楼下正文。
【代码分析】SMB1溢出背景成因分析 话说这是个遗留很久的问题了…… 在溢出关卡研究的早期,我们就已经发现,有背景的关卡在向右前进超过一定页数以后,背景贴图就会错乱,出现贴图碎片和蘑菇平台碎片等状况。那么这是什么原因呢?本帖将大致介绍背景加载的过程,然后从中找出造成溢出背景的原因。
溢出关卡重新定义 虽然我们一直在研究溢出关卡,但是究竟什么是溢出关卡?这个如此简单却又重要的问题,我们却没有认真思考过。比如,现在百度百科里对“溢出关卡”是怎样定义的?先来看一下: 溢出关卡指……通过修改内存或运用bug技而进入的数据指针错误的非正常关卡。 这个定义不能说不正确,但是也不够明确;当然,要想给出明确的定义,需要针对具体的游戏进行分析,然后由特殊到一般,得出普遍结论。 那么,现在我们就以SMB1为例,来对溢出关卡下一个明确的定义。
假期研究计划安排 终于开完年终报告会放假了…… 回来看看,发现这边开坑开了一大堆……SMB2J溢出关卡,SMB关卡加载过程分析,SMB崩溃代码级原因分析…… 然后,由于崩溃分析调试的需要,以及分析过程中得到了一些地形代码(摧毁页、城堡对象),等等,各种原因;总之,又开了几个新坑:FDS SMB1关卡及空间数据整理,SMB地形、敌人相关代码表……(未发帖,整理完再考虑……) 另外,还在考虑关于SMB2J进入第9世界的限制条件的问题…… 这就是目前研究工作的情况。要说计划什么的……其实也没有,想起哪个是哪个吧。 以上。
【无聊修改】SMB2J可调溢出世界版 由于之前的研究发现SMB2J无法进入1~9和A~D以外的世界,因此我通过调试确定了修改金手指075F时发生的情况,发现是执行了一个3字节的指令之后陷入了死循环,而正常情况下这3个字节会被跳过。因此,我尝试直接将这3个字节全部改成EA(汇编指令NOP,无操作指令),结果再将075F改成09及以上的数值时,游戏能够正常运行,并且进入了溢出世界! 然后……我用WinHex打开ROM,找到这3个字节的位置,做了同样修改,运行测试,完全有效! 说明: ——该hack解除了修改075F的数值时的限制,从而能够进入溢出世界。由于某种数据读取规则的存在,进入的世界各关卡都是5~8世界的关卡。9世界仍然无法进入,会导致游戏崩溃(原版即如此),这个可能会考虑以后研究解除限制的方法。 ——如果同时使用金手指07FB-01-01,则可以进入A~D世界范围的溢出世界,但所有的世界都会显示为A~D……075F-01-08同样无法进入(但即使进入了也没什么意义,因为理论表明这个世界与A世界是相同的……)。 楼下放下载地址。
【Bug】SMB2J踩下降梯瞬移至顶端 这个bug最早是在这个帖子中汇报的:http://tieba.baidu.com/p/2242870942 后来,我在研究2J溢出关卡的时候,也重现了这个bug,并且发现,只要是踩在会重新出现在屏幕顶端的梯子上(无论是长梯还是短梯),都会使Mario瞬移到屏幕顶端;也就是说,与1代不同,2J中只要你站在下降梯上,就不会掉下去死亡(这应该算是个良性bug)。 为什么会这样呢?这是因为1代和2J的梯子判定不同。不知道有没有人注意过,在2J中,你会从屏幕顶端的上升梯穿过,掉到下面去;事实上,2J的TAS(走天花板路线的)中,1-2上升梯那里还在梯子左边的时候就起跳了,开始我还不明白为什么,现在明白了,因为如果起跳时间再晚一点,就从梯子上“穿”下来了。这是梯子在屏幕上方的情况,如果是在屏幕下方,情况也有不同,就是像这个bug的情况,下降梯能够把Mario带到屏幕顶端去。或者可以这样说,1代和2J的梯子“没有判定”的纵坐标不同。
SMB崩溃原因重新整理——代码级深度 其实自从用上了带调试功能的模拟器之后,我就一直有个想法,就是把各种崩溃的过程都调试一下,从代码层面来分析崩溃的原因。最近,这一想法终于开始付诸实施了——先拿黑屏关卡开刀,深入分析了一把。 于是,现在黑屏关卡的代码级崩溃原因已经明确了,概括地说,就是“单值地形死循环”。 那么,其他类型的崩溃又会是怎样的原因呢?我打算先做个无责任猜测,然后再进行验证。 哦,对了,有一种崩溃的原因我已经调试过了,就是“摧毁页”造成的崩溃,这个原因也是明确的了。无论如何,楼下开始~
【崩溃】SMB“一页地形”黑屏关原因揭秘 在本人的某个大坑仍然坑着的情况下,还是需要经常换换思路的……于是,就有了这个帖子的分析。 首先分析一下“一页地形”黑屏关的地形指针。比如空间4C(1-184),地形指针为4CA4;空间51(1-55)为56A6;空间7A(56-1)为49AA;空间7F(1-132)为5DAC。这些地形指针有一个共同点,就是它们指向的内存区域都是SMB1未使用的内存空间,如果在内存查看器中查看,会发现这一片数值全是00。 既然地形数据全是一片00,那么这些关卡的地形是不是都一样呢?不是的!我们已经知道,这些黑屏关的地形各有特色,并不相同。为什么会这样呢?于是我调试了一下,发现这些关卡运行时始终都在加载同一个地形数据,但是不是00,经过观察,发现这个数值正是内存00E8的值。也就是说,如果通过指针读取了“未使用的内存”中的数值,那么程序就会转而读取指针本身的数值来使用。
关于SMB空间编号最高位无效的原因 (看了某个帖子后突然想到的……) 其实很简单,跟“空间传送”这个敌人有关。所有的敌人都有这样2个字节的数据:横纵坐标,敌人类型。空间传送还多一个字节,后面会给出解释。 对于所有的敌人,“敌人类型”这个字节的最高位都是表示敌人是在奇数页还是偶数页的,其余7位才是真正表示敌人类型的;同样,对于“空间传送”来说,这个最高位也是起这个作用的。那么“空间传送”的“敌人类型”数据是什么意思呢?就是传送到的目的空间的编号!所以空间编号的最高位是无效的。 再说一下“空间传送”的第3个字节的含义。这一字节包含两段数据,前3位表示空间传送生效的世界,后5位则表示目的空间的页面位置(即传送到目的空间的哪一页)。 最后顺便推测一下SMB1的关卡空间编号数据区的1-2为何会是C0。可能当初游戏开发者在设计1-2的地上过场的时候,曾经使用的不是现在自行走的方案,而是要让玩家自己操作钻入水管,进入地下场景,这样就需要在过场空间设置“空间传送”,自然就会使用C0这一代码(因为如果用40,那么敌人会出现在第一页,而SMB1第一页是不加载敌人的)。后来改成了自行走的方案,也就不需要空间传送了,但是C0这一代码仍然保留在了关卡空间编号的数据区。这也可以算是“开发遗迹”吧……
【溢出关卡】关于SMB2J的关卡组成的一些问题与解答 看了 @砖块1314 的SMB2J溢出关卡研究帖,总感觉这位吧友有点“吃力不讨好”,有些研究结果似乎还存在一些不太准确的地方。为了让以后的研究不再走弯路,我决定将我的一些研究结论以问答的形式分享出来,供大家参考。
溢出关卡真相大揭秘 今天早上一起来就看到这边有人发了个SMB2J溢出关卡的研究帖,于是我立刻就坐不住了…… 其实我在溢出关卡吧那边也开着两个坑呢,其中一个就是SMB2J的溢出关卡。 本来我打算多出点成果再来这边汇报的,现在一看有一个项目已经被抢先了(而且同样是坑……);而且我的另一个坑还不一定什么时候才能填完……不过已经出来的成果感觉还是拿得出手的,就发出来好了。
y值大揭秘——溢出关卡的真相 由于 @愿卿勿忧 提出了一个关于y值变化规律的问题,本人提供了一个推测,即y值是实际存储在ROM中的静态数据。然后该吧友又补充了一个问题,即能否通过金手指使得每个世界的第一关都变为1-1,于是我决定尝试一下。 楼下正文。
【开坑】真·SMB2J溢出关卡研究 以前有人在超玛一代吧发过一个NES复刻版的SMB2J的溢出关卡研究,当时很多人的一致观点是:这不能算是真正的SMB2J溢出关卡,因为用的不是原版。对此本人表示赞同,并且认为这个复刻版最多可以算是一个SMB1的非官方Hack,其溢出关卡固然可以研究,但SMB1有那么多Hack,不可能逐一全部去研究清楚;何况,真正的SMB2J——SMB1的官方Hack,它的溢出关卡还没有研究,反而先去研究非官方的Hack,这不是本末倒置么。 好了,废话结束,真·SMB2J的溢出关卡研究,即将开始~
FDS又现新崩溃 最近在整理SMB1各关卡的崩溃情况 当进行到某地下E-1关卡时,走了一大段路之后,突然—— 屏幕变成了一片灰色,上面还有不断上下闪动的黑色横条 (时间很短,没来得及截图) 之后,屏幕就静止在一片灰色之中,就连卷轴查看器里也是一片灰色…… 本来以为只是遭遇了一种特殊的灰屏B+级崩溃,没想到……
1
下一页