我之前的相关问题在这里 Reverse Engineering old paint programs
我在这里建立了我的运营基地:http://animatorpro.org
维基即将推出。
好的,现在我有一个 300,000 行的旧版 MSDOS 代码库。这是一种“小心你想要的”情况。我不是一个有经验的 C 程序员。我也不是完全没有经验,但就所有意图和目的而言,我是该语言的菜鸟,尤其是其库的复杂性。我特别不了解专为 MSDOS 编写的 C 程序和跨平台程序之间的变化莫测的差异。然而,我已经研究这个代码库一年多了,这就是我对 Animator Pro 的了解:
使用的编译器和工具:
大部分编译似乎是由批处理文件驱动的。虽然我已经获得了所有这些工具的副本,但我还没有成功地编译它。 (虽然我已经编译了它的哥哥,autodesk 动画师原创。
它有一个插件系统,可以在 DLL 可用之前复制 DLL,基于 REX。插件系统处理:
它有自己的名为 POCO 的脚本解释器,基于 C 语言——脚本语言有足够的能力来完成插件系统可以做的几乎所有事情——只是速度更慢。
有了这些信息,这就是我的发展计划。请批评这一点。源代码可在上面的链接中找到,因此如果您愿意,您可以轻松地自己评估情况。
任何人有任何问题吗?快板是一个不错的选择吗?如果不是,为什么?你会怎么处理这个插件系统?你会怎么做?这整个事情是愚蠢的,我应该从头开始重写它,使用原作作为灵感吗? (显然需要原始开发人员“大约一个月”才能做到这一点)
我上面没有提到的一件事是文本/字体系统。不确定该怎么做,但 Animator Pro 有自己的自定义字体格式,但也可以使用 Postscript Type 1 字体和其他一些格式。
最佳答案
简而言之,我对你的计划最大的担忧是:你的方法似乎是试图让整个庞大的东西始终工作,调整环境,远离 DOS。在对环境的每次调整期间,这意味着您将有大约 10 亿个可能同时被打破的微妙假设,而您不一定了解其中的任何一个。一次将它们全部解开将非常痛苦。
如果我在做移植,我的方法是禁用尽可能多的代码以使某些东西在现代环境中运行,然后将部件重新联机,一次一个。编写一个简单的测试工具程序,加载一个显示驱动程序并绘制一些东西,并为 DOS 编译它以确保您理解界面。然后编写一些实现相同接口(interface)的 C 代码,但使用 Allegro(或 SDL 或 SFML),并使该程序在 Windows 或 Linux 下运行。当输出不同时,您可以使用一个简单的测试用例。
您在此端口上的全部工作是用全新的接口(interface)和功能替换各种接口(interface)和功能的实现。这是单元测试擅长的工作。不要在没有在 DOS 下运行在旧代码上的某种测试的情况下编写任何新代码!使您的潜在问题尽可能小而简单。移植汇编代码而不是重写它,除非你有理由相信它实际上会让你的工作更容易(即,在 NASM 下只需很少的调整就可以很好地编译的算法内容)。不要一次咬掉一块比您可以舒适地放入大脑的更大的块。
我,一方面,期待看到你的进步!我认为你正在尝试做的很棒。谢谢你这样做。
关于c - 移植 Autodesk Animator Pro 以实现跨平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911160/