私からの以前の関連する質問はこちらです古いペイントプログラムのリバースエンジニアリング
私はここに私の活動拠点を設置しました: http://animatorpro.org wiki は近日公開予定です。
さて、これで 300,000 行のレガシー MSDOS コードベースができました。それは一種の「あなたが望むものに注意してください」という状況です。私は経験豊富な C プログラマーではありません。私も完全に経験が浅いわけではありませんが、すべての意図と目的のために、私は言語、特にそのライブラリの複雑さに慣れていません。私は特に、MSDOS 用に特別に作成された C プログラムとクロスプラットフォームのプログラムとの間の気まぐれな違いについては知りません。しかし、私はこのコード ベースを 1 年以上研究しており、Animator Pro について知っていることは次のとおりです。
使用したコンパイラとツール:
- ワトコム C コンパイラ
- tcmake (Turbo C からプログラムを作成)
- 386asm、Phar Lap dos エクステンダー専用のアセンブラー
- そしてもちろん、Phar Lap dos エクステンダー自体。
- あいまいな DOS ユーティリティの選択
コンパイルの多くは、バッチ ファイルによって行われるようです。これらすべてのツールのコピーを入手しましたが、まだコンパイルに成功していません。(ただし、その兄である autodesk animator のオリジナルをコンパイルしました。
REX に基づいて、DLL が利用可能になる前に DLL をレプリケートするプラグイン システムがあります。プラグイン システムは以下を処理します。
- ビデオ ドライバー (多数の VESA ドライバーが含まれています)
- 入力ドライバー (wacom タブレット、キーボードを含む)
- 描画ツール
- インク (Photoshop のフィルターや描画モードなど)
- Scripting Addons (本質的にコンパイルされたスクリプト)
- ファイル形式
C 言語に基づいた、POCO という名前の独自のスクリプト インタープリターがあります。スクリプト言語には、プラグイン システムが実行できるほぼすべてのことを実行するのに十分なパワーがあります。ただ遅いだけです。
この情報を踏まえた上で、これが私の開発計画です。これを批判してください。ソース コードは上記のリンクから入手できるので、必要に応じて状況を自分で簡単に評価できます。
- オリジナルのツールでコンパイルします。
- DJGPP を使用するように切り替え、元のアセンブラに加えて DJGPP でコンパイルできるように必要な変更を加えます。
- Allegro.cc の「ゲーム」ライブラリを含め、できるだけ多くの機能をそのライブラリに切り替えます。おそらく、Allegro API を使用する新しいビデオおよび入力ドライバを作成するだけです。私が SDL ではなく allegro を考えている理由: Allegro には DOS バージョンがあり、魅力的なことに、そのコア機能の 1 つは Animator Pro のネイティブ形式の FLIC を再生する機能です。
- うまくいけば、3 の後、プロジェクト内のほとんどまたはすべてのアセンブラーを排除できます。うまくいけば、それはあいまいな方言であり、大幅な変更なしでは最新の無料のアセンブラーではアセンブルできないためです。私はそれらすべてを試しました。残っているものはすべて、NASM でアセンブルするために変換されるか、アセンブラーの実際の機能を定義できる場合は C コードに変換されます。
- dos エクステンダーを Phar Lap から HX Dos http://www.japheth.de/HX.htmlに切り替えます。これにより、WIN32 API を可能な限り複製することが約束されます。次に、それが機能するために必要なすべてのコード変更を行います。
- Win32 バージョンが HXDos 上で実行できると仮定して、Allegro.cc の win32 バージョンに切り替えます。さらに必要な変更を加える
- プラグイン システムを変更して、ある種の標準的なクロス プラットフォーム プラグイン ライブラリを使用します。これがどうなるか、私にはわかりません。多分あなたはいくつかの提案を提供できますか?プラグイン システムを最初に作成した開発者と話をしたところ、セグメンテーションの制限により、最新の OS では実行できないことがいくつかあると彼は言いました。これが何を意味するのかはわかりませんが、すべてのプラグインをほぼゼロから書き直す必要があることを意味していると思います。
- 魔法のように、私は上記のすべてを完了し、Windows、OSX、および Linux で実行できるようにし、長いファイル名などの他のクロスプラットフォームの問題や、私が考えもしなかったことを処理することができます。
誰でもこれで問題が発生しましたか?アレグロは良い選択ですか?そうでない場合、なぜですか?このプラグイン システムについてどうしますか? あなたは何をしますか?これはすべてばかげているのでしょうか。オリジナルをインスピレーションとして使用して、最初から書き直す必要がありますか? (それを行うには、元の開発者が「約1か月」かかるようです)
上記で触れていないことの 1 つは、テキスト/フォント システムです。どうすればよいかわかりませんが、Animator Pro には独自のカスタム フォント形式があり、Postscript Type 1 フォントやその他の形式も使用できます。