怒首领蜂吧 关注:5,515贴子:321,614
  • 11回复贴,共1

【技巧】关于MAME的录像文件回放出错的原理+正确录制办法

只看楼主收藏回复

1楼
2楼 基本的介绍
3楼 元凶--NVRAM文件,以及其导致录像出错的原理(可以跳过直接看4楼)
4楼 合理的设置和小技巧,避免录像出错,以及一些补救措施


IP属地:福建1楼2016-05-02 19:05回复
    基本的介绍
    MAME这个模拟器提供类似东方 REPLAY录像的功能。
    不过因为MAME这个模拟器过于庞大,录像功能的兼容性不是特别的完善。
    所以经常出现录制出来的REPLAY(因为格式是*.INP。所以下面都用INP 替代)各种爆炸
    无法正常回放,尤其是高分或者初通录像,打完后回看录像结果录像回放错误,相当于REP损坏
    那心情没法形容,也怪可惜的
    通过一些正确的设置可以极大的减少录像爆炸的情况,也就是这个帖子的主要内容
    PS:在看这个帖子之前,请注意几个东西
    1.MAME的录制和回放,必须在同一个模拟器内进行,大版本相同基本没什么意义
    比如MAMEUIFX,MAMEPLUS 和MAME官方版本
    前2个是增强型的MAME,后者是官方版本,这3个的录像即使都是同一个大版本(比如都是0.168的内核),之间的录像也不一定通用,这个是个经常误区。
    2.MAME录制的录像,最好放在MAME根目录下的INP文件夹中播放
    虽然MAME录制的时候可以选择INP保存的位置,但是放的时候,有些版本的MAME却要放回INP文件夹中。
    否则会出现"XXXXX 不是有效的输入文件‘的提示框
    文件名可以随便,路径最好不要乱放
    3.MAME 0.145-MAME0.155的这10个大版本(包括使用MAME内核的增强型MAME)
    这10个大版本有个BUG,录制INP的时候,如果暂停了(无论是用暂停键,还是按F7读档的时候那种暂停),INP就会从暂停点结束录制。也就是直接报销了
    影响比较大的有SHUMPMAME 4.0,因为他的内核是MAME 0.150
    还有怒吧置顶的MAMEPLUS 0.152 CAVE SH3合集
    所以如果是这10个版本,录像的时候请不要暂停
    (不过我也不提倡录街机游戏暂停,你玩实体街机能暂停吗


    IP属地:福建2楼2016-05-02 19:09
    回复
      关于录像爆炸的罪魁祸首-NVRAM文件
      MAME的根目录下,有一个叫NVRAM的文件夹,打开会发现一些和ROM名字相同的*.NV文件
      或者是“rom名字”的文件夹(0.160版本以后的MAME),打开后里面有很多文件
      这些个文件的具体作用是,记录游戏的一些机台设置和高分
      (比如怒首领蜂系列的C键高速子弹连发,彩京系列的隐藏机的调出和高分榜单)
      而这个文件就是INP爆炸的元凶,原理我这里做个猜测,仅供参考
      游戏的一些随机要素需要随机数发生器,发生器的机理是需要初始值作为发生的种子
      大部分游戏会把机台的设置,基板的运行总时间,高分的某几位数
      以及玩家的走位(像素值)等作为种子来进行发生,然后生成随机,比如尸弹的角度,敌人的运动方向之类
      再看NV文件的作用,你会发现,几乎可以把它当做随机数的其中一个种子
      (其实INP里面也包括随机种子,但是他记录的操作是固定,也就是因为玩家走位确定的随机种子已固定)
      由于NV文件会记录高分和基板运行时间,所以每一次进入游戏,退出,这个文件等于被重新写过一遍,也就是种子每一次退出游戏都在改变。
      而INP文件录制的是玩家的操作,并没有把NV文件里面的随机种子也记录进去
      当你打完一局游戏录好了INP后退出,NV文件被重新写入,
      你再回放录像的时候就会发现,因为其中的某个随机种子变化,导致游戏的随机数和你玩的那一局完全不一样。
      你会发现你的动作还是那样,但是随机的子弹轨迹,敌人的动作,尸弹的方向和数目都和你玩的那一局不同了,于是你就BIU掉了
      这就是录像回放出错,俗称INP爆炸


      IP属地:福建3楼2016-05-02 19:10
      回复
        根据原理的小策略
        NVRAM文件(下面简称NV文件)的作用和INP爆炸的原理大约是楼上所说。所以实际上想解决这个问题很简单
        只要你录制INP的时候,固定好NV文件上面随机数的种子,再按照你的操作去回放INP,那就一定没有错
        也就是保证,你录制,和回放的时候,NV文件是一样的就行了
        一.最简单,最通用的办法--删除法
        每一次录制INP之前,删除“NVRAM”文件夹下面“ROM名字.nv”的文件(MAME0.160以前的版本)
        比如这里我要录19XX的,我就删除19XX.NV文件

        0.160之后的版本,MAME把NV文件拆成了几个小文件,放在“NVRAM”文件夹\“ROM名“的文件夹下面
        直接把那个文件夹删除就行了
        比如我这里要录大复活的,我就把大复活的“ddpdfk”文件夹删掉,再进入游戏录制

        你要录制哪个游戏,就把哪个游戏的文件夹删除就行了
        这个办法是最通用的,播放INP的时候,你把NV文件删除,再播放就行了
        但是缺点是
        1.像大复活这样需要调整机台设置才会出现隐藏机,隐藏模式的
        你每一次录制的时候,进游戏都要调一次,调出来才能玩
        2.每一次都要删除,偶尔忘记删除了,INP可能就坏了,操作上很麻烦
        虽然可以通过写BAT批处理的方法,但是总归不好用
        二.把NV设置成只读 + 占位文件夹法
        对于方法一里面遇到的需要机台设置的比如大复活,可以在调出隐藏机 隐藏模式后,退出游戏
        把每一个NV文件,都设置成只读,这样保证每一次录制都是同样的起点
        把上面的方法引申一下,一些不需要机台设置的,可以使用占位文件法
        这个方法还是利用WINDOWS那个特性,比如我要玩大往生,我在NVRAM文件夹下面建立一个
        DDP3.NV 文件夹,这个时候系统会把这个文件夹 视作“DDP3.NV”文件,
        然后现在就简单了
        直接把文件夹设置成只读就可以了
        运行游戏的时候MAME读取不到NV里面的内容(因为实际上文件不存在),等于是删除NV的效果
        而关闭游戏的时候因为文件存在,他会试图写入,而不是重新建一个DDP3.NV文件,
        然后因为只读,写入失败。。。。这样,你每一次开游戏,都是0状态开始,而不用重复删除

        这是用的最多的办法
        三.特殊版本的MAME下的备份---还原法
        方法二的只读法,对于MAME 0.140以前的MAME,有一定的问题
        老版本MAME退出游戏后无法写入NV文件,会直接报错退出,而这样录制的INP算录制不完成无法观看
        这样的老版本MAME,如果不需要隐藏机之类,只能每一次录制前删除NV
        而像打击者1999这样需要隐藏飞机X36 的,又想在老版本MAME下录制,只能打之前预先备份NV
        打完之后,将备份的NV还原回去,再播放。。。
        -----------------------------------------
        以上3个方法灵活运用可以避免绝大部分录像爆炸的问题
        在交流录像的时候,如果有NV文件,必须得把NV文件附上
        不然没法在其他人的机子上面正常播放
        最后说个抢救措施
        很多人的INP录完后才发现NV没删,看不了,这种时候,你可以试着反复看几遍
        每一次看,每一次玩都会改变NV文件,运气好搞不好把随机种子给弄对了也说不好
        如果运气好,遇到一次能正常播放,播完后,先不要退出游戏(MAME退出游戏后才会写入NV文件)
        先把当前的NV文件拷出来,设置成只读,OK这录像就救下来了
        然后用以上的3个办法正确播放,破费
        -END-


        IP属地:福建4楼2016-05-02 19:11
        回复
          好技巧,学习了


          IP属地:广西5楼2016-05-02 19:14
          回复
            点个赞,防止日后爆炸


            IP属地:广东7楼2016-05-03 01:16
            回复
              一直觉得shmupmame4.2录制inp时,按了和游戏操作无关的模拟器功能键,就报废inp是一个很正常的功能,本该如此。


              IP属地:安徽8楼2016-05-03 05:16
              收起回复
                马克,慢慢看


                IP属地:江苏来自Android客户端9楼2016-05-03 09:06
                回复
                  良心贴


                  IP属地:广东来自iPhone客户端10楼2016-05-04 12:28
                  回复
                    学习


                    IP属地:广东11楼2016-05-04 16:51
                    回复