предыдущий соответствующий вопрос от меня здесь Обратное проектирование старых программ рисования
Я настроил свою базу операций здесь: http://animatorpro.org вики скоро появится.
Итак, теперь у меня есть унаследованная кодовая база MSDOS на 300 000 строк. Это своего рода ситуация «будь осторожен со своими желаниями». Я не опытный программист на С. Я тоже не совсем неопытен, но во всех смыслах и целях я новичок в языке и, в частности, в тонкостях его библиотек. Я особенно не осведомлен о капризах различий между программами на C, написанными специально для MSDOS, и программами, которые являются кросс-платформенными. Однако я изучаю эту кодовую базу уже более года, и вот что я знаю об Animator Pro:
Используемые компиляторы и инструменты:
- Компилятор Watcom C
- tcmake (сделать программу из Turbo C)
- 386asm, специализированный ассемблер для расширителя доса Phar Lap
- и, конечно же, сам расширитель дозатора Phar Lap.
- подборка малоизвестных dos утилит
Кажется, что большая часть компиляции управляется пакетными файлами. Хотя я получил копии всех этих инструментов, мне еще не удалось их скомпилировать. (хотя я скомпилировал его старшего брата, оригинал Autodesk Animator.
У него есть система плагинов, которая реплицирует DLL до того, как DLL стали доступны, на основе REX. Система плагинов обрабатывает:
- Видеодрайверы (с множеством включенных драйверов VESA)
- Драйверы ввода (включая планшеты wacom и клавиатуры)
- Инструменты рисования
- Чернила (например, фильтры фотошопа или режимы наложения)
- Scripting Addons (по сути, скомпилированные скрипты)
- Форматы файлов
У него есть собственный интерпретатор сценариев под названием POCO, основанный на языке C. Язык сценариев обладает достаточной мощностью, чтобы делать практически все, что может делать система плагинов. Только медленнее.
Учитывая эту информацию, это мой план развития. Пожалуйста, раскритикуйте это. Исходный код доступен по ссылке выше, так что вы можете легко, если хотите, самостоятельно оценить ситуацию.
- Скомпилируйте его оригинальными инструментами.
- Переключитесь на использование DJGPP и внесите необходимые изменения, чтобы он скомпилировался с ним, а также с исходным ассемблером.
- Включите библиотеку Allegro.cc «Game» и переключите как можно больше функций на эту библиотеку — возможно, просто написав новые драйверы видео и ввода, которые используют Allegro API. Я думаю об аллегро, а не о 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 и некоторые другие форматы.