大家都知道,mrp的启动入口是start.mr文件。可是大家有想过吗,这个启动入口是用什么语言写的?
什么?start.mr不是一个简单的配置文件吗?怎么还有“语言”了?奇怪。
呃,如果你不相信的话,就把nes.mrp(38KB)给解压了,删除里面的*.ext再打包,运行。你看到了什么?
现在你相信了吧,*.mr并不是一些简单的配置文件,而是一段可执行程序。那么这些程序是用什么语言写的呢?相信你已经猜到了,答案就是lua。
…待续…
lua - 百度百科所谓mythroad VM(mrp的虚拟机),就是由lua5.0.3扩展而来的。我们知道:lua有两种执行方式:它不仅可以运行编译后的文件,也可以直接运行脚本(源代码)。我们也知道,nes.mrp里的start.mr在运行后会自动加载win.mr
于是,我做了如下实验:把nes.mrp解压,用一个lua脚本(内容只有一句话:_error("test ok"))替换掉里面的win.mr,打包,运行。得到错误提示如下:
parser not loaded!
脚本解析器未加载!
看来,它只能执行编译后的文件啊。那怎么办呢?于是我想到:我们完全可以自己把一个完整的lua5.0.3移植到手机上啊,这样我们不就可以直接在手机上编译和执行lua了吗?
我要做的很简单,修改lua5.0.3,把它整合到mrp里,制作出mrp版的lua编译器。这样,我们就可以使用lua编mrp程序了。最后一步:把编译结果改名start.mr,打包到mrp里即可。