我以前的一个相关问题是在这里逆向工程旧油漆程序
我在这里建立了我的运营基地:http: //animatorpro.org wiki 即将推出。
好的,现在我有一个 300,000 行的遗留 MSDOS 代码库。这是一种“小心你想要的”的情况。我不是一个经验丰富的 C 程序员。我也不是完全没有经验,但出于所有意图和目的,我对这门语言,尤其是它的库的复杂性是个菜鸟。我特别不知道专门为 MSDOS 编写的 C 程序和跨平台程序之间的差异的变幻莫测。然而,我已经研究这个代码库一年多了,这就是我对 Animator Pro 的了解:
使用的编译器和工具:
- Watcom C 编译器
- tcmake(从 Turbo C 制作程序)
- 386asm,Phar Lap dos 扩展器的专用汇编器
- 当然,还有 Phar Lap dos 扩展器本身。
- 一些不起眼的 dos 实用程序
大部分编译似乎是由批处理文件驱动的。虽然我已经获得了所有这些工具的副本,但我还没有成功编译它。(虽然我已经编译了它的哥哥,autodesk animator original。
它有一个基于 REX 的插件系统,可以在 DLL 可用之前复制 DLL。插件系统处理:
- 视频驱动程序(包含大量 VESA 驱动程序)
- 输入驱动程序(包括 wacom 数位板和键盘)
- 绘图工具
- 墨水(如 Photoshop 的滤镜或混合模式)
- 脚本插件(基本上是编译脚本)
- 文件格式
它有自己的脚本解释器,名为 POCO,基于 C 语言——脚本语言有足够的能力完成插件系统几乎可以做的所有事情——只是速度较慢。
鉴于这些信息,这是我的发展计划。请批评这一点。上面的链接中提供了源代码,因此如果您愿意,您可以轻松地自行评估情况。
- 使用其原始工具进行编译。
- 切换到使用 DJGPP,并进行必要的更改以使其与原始汇编器一起编译。
- 包括 Allegro.cc“游戏”库,并尽可能多地将功能切换到该库 - 也许只需编写使用 Allegro API 的新视频和输入驱动程序。我正在考虑 allegro 而不是 SDL,因为:有一个 DOS 版本的 Allegro,令人着迷的是,它的核心功能之一是能够播放 Animator Pro 的原生格式 FLIC。
- 希望在 3 之后,我将消除项目中的大部分或全部汇编程序。我满怀希望地说,因为它是一种晦涩难懂的方言,在没有重大修改的情况下无法在任何现代自由汇编器中组装。我都试过了。如果我可以定义汇编程序的实际功能,则剩下的任何内容都将转换为在 NASM 中进行汇编,或者转换为 C 代码。
- 将 dos 扩展器从 Phar Lap 切换到 HX Dos http://www.japheth.de/HX.html,它承诺尽可能多地复制 WIN32 api。然后进行所有必要的代码更改以使其正常工作。
- 切换到 Allegro.cc 的 win32 版本,假设 win32 版本可以在 HXDos 之上运行。进行任何进一步的必要更改
- 修改插件系统以使用某种标准的跨平台插件库。这会是什么,我不知道。也许你可以提供一些建议?我与最初编写插件系统的开发人员进行了交谈,他说由于分段限制,它所做的一些事情在现代操作系统上是不可能的。我不确定这意味着什么,但我猜这意味着所有插件几乎都需要从头开始重写。
- 神奇的是,我完成了以上所有工作,我们可以尝试让它在 windows、osx 和 linux 中运行,同时处理其他跨平台的小问题,比如长文件名,以及我没有想到的东西。
有人对此有任何疑问吗?快板是一个不错的选择吗?如果不是,为什么?你会怎么处理这个插件系统?你会做什么不同的事情?这整件事是不是很愚蠢,我应该从头开始重写它,以原作为灵感吗?(显然需要原始开发人员“大约一个月”才能做到这一点)
我上面没有提到的一件事是文本/字体系统。不知道该怎么做,但 Animator Pro 有自己的自定义字体格式,而且还能够使用 Postscript Type 1 字体和其他一些格式。