|
本帖最后由 william 于 2025-7-10 00:55 编辑
ClrMameUI软件有着极简的页面设计,需要用户输入的参数极少,这为使用者提供了极大的便利,本帖对这些参数进行详细解释
图中红字对add path 这个参数解释的并不全面(上图也是我做的,只是发现写不全想写的东西了),实际上,他通常放置每一次版本升级的ROM差异文件,这就是add path,增加的本意。 程序对原rom 和这个增加的rom差异文件进行扫描,拆分,重组
我们要理解ClrMameUI的工作机理,他先从MAME程序获得想当前版本的信息文件,这些信息的组织,我以电子基盘的Machine为例,拷贝到这里进行分析。然后程序根据这些信息从所有你给出的ROM路径里的文件进行拆分,生成他信息文件里想要的所有东东,如果发现缺失,他会报miss错误。
那么为什么这里用 add path 专门给了一个rom的输入路径呢?而不是上面的rom路径,因为那个参数也是支持多路径的。这是因为新添加的ROM文件,程序允许对这些新来的东西进行过滤(如果你勾选 remove matches ,那么会对选出来的(选出来的就是匹配的)东西进行删除,你别怕,程序怕你误删除,强制要求你配置backup path 目录的,误删了,就去这里找回来)。
Filter 参数(文末有对filter对象的数据截取,可以直观看到要过滤的对象),支持正则表达式 和Xpath 语法两种 ,缺省输入程序判断为正则表达式,如果输入Xpath 语句 ,用XP:开头,程序就知道了使用者输入的是Xpath 语句
这个参数的设置是 当使用者想对ROM 文件进行某种程度的过滤,提供的一种支持手段,因为支持Xpath语句,就提供了相当强大的过滤能力 ,关于Xpath常见句型和案例,请参照本圈专门讲解Xpath的帖子。
这个参数的过滤对象就是上面从MAME生成的信息文件里摘抄出来的代码,只是信息文件里有很多这样的代码,一个游戏就是一个machine ,一个machine就会有本文后面这样一段代码来描述这个游戏。(这个作为代码案例尚不充分,因为很多machine还有input描述部分,参见XPath案例那个帖子里摘取的麻将游戏代码的input部分)
因为支持Xpath筛选,因此也可以去掉前作的逻辑取反窗口按钮,因为筛选语句本身已经支持逻辑取反了。
Pattern参数
这个参数的设置是为了生成的ROM可以有效的进行管理,而不是一个路径下平铺。比如你选择 #TYPE#参数 ,生成的ROM会自动创建三个子目录,一个是Device,一个是BIOS ,一个我记得是default ,就是游戏ROM本身。 选择 #YEAR# 生成的ROM就会按照年份创建文件夹,进行分组。
Mode参数
ROM的文件组织形式,FUll是合并模式(即主档和辅档整合在一个文件中),Split分离方式(主档和辅档分别是不同的文件),Standalong(独立模式,文件中有主档,辅档和运行需要的BIOS)
Filter Mode
Soft:程序只是模拟过滤这个动作,实际并不去做
Hard:程序会实际操作过滤,就是去作了
Threads:运行线程选择,这个版本支持多线程处理,通常你选择Auto就行,让程序自行选择运行多少个线程,我运行的时候,程序通常自己选择运行12个线程,达到最高效运行。
LogLevel :可显示不同级别的Log,开始不了解时候就都看,熟悉这个软件之后,就看告警或者错误级别的,常规的信息就可以不看了,因为你看过好多遍了,信息对你无价值,你可能只关心错误,最多关心告警。
FixIssus:如果你勾选,扫猫同时修复问题,这是个强大的功能和选择,如果你不勾选,你会在log窗口看到,一些问题是可修复的,然后你勾选这个选项,程序就会在扫描的时候修复这些问题。非常强大!
Check SHA1:SHA1(安全散列算法的数字签名)这在初期处理的时候,不需要勾选,因为你不关心SHA1(SHA1验证是数据的完整性等,当然你如果非常谨慎,可以现对输入文件验证SHA1,SHA1通过才能证明数据的完整性),你关心的是你要做的事,你可以在做完你的事的时候,核对一下他的SHA1是否有问题,当然,你也可以不去核对。我从来没去核对过这个事。
New Scan:当你第一次配好这些参数,对文件进行扫描,点 New Scan ,实际发生的就是扫描算法运行的更深层次一点,试图发现更多潜在问题。 当你不是第一次运行扫猫(指本次你用这个软件做事),你只需要点击Scan,因为可以在扫猫时候做更少的事,节省时间。
其实呢,因为多线程的采用,即便扫描78.22G这样大的几万个文件,所用时间也不多,你们试试就知道这个版本的ClrMame 运行速度是多么惊人了。
filter过滤对象的片段截取(为了更直观的看到要过滤的东西):
{下面是从当前版本MAME提取的信息文件的摘抄,去掉了这个machine中间和本讲解无关部分,当程序开始处理电子基盘这个rom,程序会从所有rom路径里去寻找他要的下面的这些东西 ,找到后,如果参数是split,就单独生成文件,如果是full,就合成一个文件,如果是standalong,就把下面文件里写的需要的bios,device也放进文件里.对于程序而言,文件只是数据组织的一种形式,程序需要的是输入数据(比如,每次rom升级就是原ROM和升级的ROM差异文件),他把输入数据按照你的要求整理,按照你要求的方式生成文件,按照你要求的方式对文件进行不同的路径组织}
<machine name="mjelct3" sourcefile="dynax/dynax.cpp" cloneof="mjelctrn" romof="mjelctrn"> <!--标明相关ROM之间的关系-->
<description>Mahjong Electron Base (parts 2 & 3, Japan set 1)</description> <!--ROM名字的文字描述->
<year>1990</year> <!--ROM的年代->
<manufacturer>Dynax</manufacturer> <!--游戏的制作厂商-->
<!--程序文件列表,如果缺程序文件,就报缺失,然后不执行-->
<rom name="se-3010" size="131072" crc="370347e7" sha1="2dc9f1fde4efaaff887722aae6507d7e9fac8eb6" region="maincpu" offset="0"/> <!--ROM的数字签名 ,文件字节数,CRC校验码-->
<rom name="eb-01.rom" merge="eb-01.rom" size="1048576" crc="e5c41448" sha1="b8322e32b0cb3d771316c9c4f7be91de6e422a24" region="blitter" offset="0"/><!--ROM的数字签名 ,文件字节数,CRC校验码-->
<rom name="eb-02.rom" merge="eb-02.rom" size="524288" crc="e1f1b431" sha1="04a612aff4c30cb8ea741f228bfa7e4289acfee8" region="blitter" offset="100000"/><!--ROM的数字签名 ,文件字节数,CRC校验码-->
ROM文件的内部组织如下附件图片)
<!--需要的设备/BIOS列表,游戏运行时候就按这个表格先检查所需文件完整性,如果缺失设备/bios的名字,就报缺失,然后不执行-->
<device_ref name="tmpz84c015"/>
<device_ref name="z80sio"/>
<device_ref name="z80sio_channel"/>
<device_ref name="z80sio_channel"/>
<device_ref name="z80ctc"/>
<device_ref name="z80ctc_channel"/>
<device_ref name="z80ctc_channel"/>
<device_ref name="z80ctc_channel"/>
<device_ref name="z80ctc_channel"/>
<device_ref name="z80pio"/>
<device_ref name="address_map_bank"/>
<device_ref name="nvram"/>
<device_ref name="ls259"/>
<device_ref name="ls259"/>
<device_ref name="screen"/>
<device_ref name="tc17g032ap"/>
<device_ref name="palette"/>
<device_ref name="speaker"/>
<device_ref name="ay8912"/>
<device_ref name="ym2413"/>
<device_ref name="msm5205"/>
<device_ref name="coin_hopper"/>
<chip type="cpu" tag="maincpu" name="Toshiba TMPZ84C015" clock="5500000"/> <!--此Machine(机台)使用的CPU信息-->
<chip type="audio" tag="mono" name="Speaker"/> <!--此机台使用的音频信息-->
<chip type="audio" tag="aysnd" name="AY-3-8912A PSG" clock="1375000"/>
<chip type="audio" tag="ym2413" name="YM2413 OPLL" clock="3579545"/>
<chip type="audio" tag="msm" name="OKI MSM5205 ADPCM" clock="384000"/>
<display tag="screen" type="raster" rotate="180" width="508" height="240" refresh="60.000000" /> <!--此机台缺省的屏幕方向参数和刷新率-->
<sound channels="1"/>
<driver status="good" emulation="good" savestate="supported"/> <!--此机台的驱动状态和仿真状态-->
</machine>
ps:本文全部是原创,码字不易,喜欢的点点赞吧,呵呵
|
|