| 赞 | 86  | 
 
| VIP | 0 | 
 
| 好人卡 | 1 | 
 
| 积分 | 136 | 
 
| 经验 | 14048 | 
 
| 最后登录 | 2021-1-24 | 
 
| 在线时间 | 2753 小时 | 
 
 
 
 
 
Lv4.逐梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 13559 
 
        - 在线时间
 - 2753 小时
 
        - 注册时间
 - 2014-10-4
 
        - 帖子
 - 756
 
 
  
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
简单说 就是把 ruby 代码翻译成 c 然后编译...乍看很诡异对吧 
这个思路其实很早很早就有了,不过比较懒,一直拖着没什么实际行动 当然现在也不算有什么实质的行动.. 
操作起来还是蛮简单的 
ruby 是拿 c 写的,ruby 原生的类/模块以及 RGSS 都是拿 c 写的然后编译的。游戏的本体代码也完全可以这样。(取关键部分翻译) 
只需要反汇编取得关键函数的地址就能在此基础上进行翻译 
翻译好再一番编译变 dll 然后进脚本去调用初始化一下就成了 
搞笑就在于 直接写 c 作为拓展库也就算了 从 ruby 写回 c ?你在搞笑吗 
高效在于省去了解释的过程 直接运行编译好的机器码 速度飞快 
测试了一下效率起码是几倍 乃至十几倍 真的..  
我就测试了一些 一个用 c 写 一个用 ruby 写 然后重复调用比较 
方法越是复杂效率提升就越多 
其余的没测试 因为 翻译还是 比较烦 
 
高效一是在于编译好了 
二是在于可以省略一些 ruby 的操作方式反之用 c 的方式取代 
三是在于真·多线程 
 
毕竟翻译不可能是一模一样来的 
 
缺点一是烦  
二是这种做法没啥必要 本来也够快了 
 
单纯为了好玩吧 
 
一直在用XP,XP的 ruby 版本是 1.8.1 
下面一份是 RGSS103J 的大部分翻译所需的函数地址 
一份是我翻译的这版本 ruby 源码的 README.EXT  
翻译了绝大部分,其余对翻译没啥帮助 假如觉得我翻译的很怪请参考原文本 
里面有基础知识啊操作全局实例变量常量啊定义函数类模块啊 c 和 ruby 之间的数据交流转换啊等等翻译所需要的东西 
另外随时可以翻翻源码 
 
函数地址 README.EXT.zh  
 
假如有人成功把整个游戏的代码全翻译成 c 然后编译成 dll 了 
脚本主体就只有两句 
Win32API.new('s','Init','v','v').call 
main 
不知所以的人看到肯定是崩溃的 
知道的人肯定更崩溃 什么人这么无聊... 
 |   
 
 
 
 |