предыдущий вопрос от меня здесь Обратный инжиниринг старых программ рисования
Я настроил свою базу операций здесь: http://animatorpro.org
Вики скоро появится.
Хорошо, теперь у меня есть устаревшая кодовая база MSDOS на 300 000 строк. Это своего рода ситуация «будь осторожен с тем, что ты желаешь». Я не опытный программист на Си. Я тоже не совсем неопытен, но во всех смыслах и целях я новичок в языке и, в частности, в тонкостях его библиотек. Я особенно не осведомлен о капризах различий между программами на C, написанными специально для MSDOS, и программами, которые являются кроссплатформенными. Однако я изучаю эту кодовую базу уже больше года, и вот что я знаю об Animator Pro:
Используемые компиляторы и инструменты:
- Компилятор Watcom C
- tcmake (создать программу из Turbo C)
- 386asm, специализированный ассемблер для дозатора Phar Lap
- и, конечно, сам дозатор Phar Lap.
- подборка непонятных утилит
Большая часть компиляции, похоже, основана на пакетных файлах. Хотя я получил копии всех этих инструментов, мне пока не удалось его скомпилировать. (хотя я собрал его старшего брата, autodesk animator original.
У него есть система плагинов, которая реплицирует DLL до того, как библиотеки DLL стали доступны, на основе REX. Система плагинов обрабатывает:
- Видеодрайверы (с множеством включенных драйверов VESA)
- Драйверы ввода (включая планшеты Wacom и клавиатуры)
- Инструменты рисования
- Чернила (например, фильтры фотошопа или режимы наложения)
- Скриптовые аддоны (по сути скомпилированные скрипты)
- Форматы файлов
У него есть собственный интерпретатор сценариев с именем POCO, основанный на языке Си. Язык сценариев обладает достаточной мощностью, чтобы делать практически все, что может делать система плагинов - просто медленнее.
Учитывая эту информацию, это мой план развития. Пожалуйста, критикуйте это. Исходный код доступен по ссылке выше, так что вы можете легко, если хотите, самостоятельно оценить ситуацию.
- Компиляция с использованием оригинальных инструментов.
- Переключитесь на использование DJGPP и внесите необходимые изменения для его компиляции вместе с оригинальным ассемблером.
- Включите библиотеку Allegro.cc «Игра» и переключите в нее как можно больше функциональных возможностей - возможно, просто написав новые видео и драйверы ввода, которые используют Allegro API. Я имею в виду allegro, а не SDL, потому что: существует версия Allegro для DOS, и, что интересно, одной из его основных функций является возможность воспроизведения родного формата Animator Pro FLIC.
- Надеюсь, после 3-го года я устраню большую часть или весь Ассемблер в проекте. Надеюсь, я говорю, потому что это на неясном диалекте, который не собирается ни в каком современном свободном ассемблере без существенных изменений. Я перепробовал их все. Все, что осталось, преобразуется для сборки в NASM или в код на C, если я могу определить действительную функцию ассемблера.
- Переключите удлинитель dos с Phar Lap на HX Dos http://www.japheth.de/HX.html,, который обещает воспроизвести как можно большую часть API WIN32. Затем внесите все необходимые изменения кода, чтобы это работало.
- Переключитесь на версию allegro.cc для win32, предполагая, что версия win32 может работать поверх HXDos. Внесите любые дальнейшие необходимые изменения
- Модифицируйте систему плагинов, чтобы использовать какую-то стандартную кроссплатформенную библиотеку плагинов. Что это будет, я понятия не имею. Может быть, вы можете предложить несколько предложений? Я поговорил с разработчиком, который изначально написал систему плагинов, и он сказал, что некоторые вещи, которые он делает, невозможны в современных ОС из-за ограничений сегментации. Я не уверен, что это значит, но я предполагаю, что это означает, что все плагины нужно будет переписать практически с нуля.
- Магическим образом, я выполнил все вышеперечисленное, и мы можем попробовать запустить его в windows, osx и linux, в то же время имея дело с другими кроссплатформенными проблемами, такими как длинные имена файлов, и вещами, о которых я даже не думал.
У кого-нибудь есть проблемы с этим? Аллегро хороший выбор? если нет, то почему? что бы вы сделали с этой системой плагинов? Что бы вы сделали по-другому? Разве все это глупо, и я должен просто переписать его с нуля, используя оригинал как вдохновение? (очевидно, потребуется оригинальный разработчик "Около месяца", чтобы сделать это)
Одна вещь, которую я не рассмотрел выше, это система текста / шрифта. Не уверен, что с этим делать, но Animator Pro имеет свой собственный формат шрифтов, но также может использовать шрифты Postscript Type 1 и некоторые другие форматы.