赞 | 86 |
VIP | 0 |
好人卡 | 1 |
积分 | 136 |
经验 | 14048 |
最后登录 | 2021-1-24 |
在线时间 | 2753 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 13562
- 在线时间
- 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
不知所以的人看到肯定是崩溃的
知道的人肯定更崩溃 什么人这么无聊...
|
|