Ну вот, кстати, насчет портирования под Linux (хоть эта тема и двух летней давности...)
Никаких привязо в коде под MSVC, DirectX или что-то еще там НЕТ.
Т.е. основной код за редкими исключениями и особенностями платформо независим. А все зависимые части влет заменяются тем же SDL. Причем если этот Unreal под SDL переделать, так вообще не только на Linux будет работать. Даже на Pocket PC только с большими тормозами. А вот на обычном desktop PC будет нормально все.
Одна действительно большая проблема - это GUI. Все эти окошечки с настройками и т.д. Вот это дело, конечно, все на Windows API заточено. Поэтому frontend под Linux придется по большей части переписывать. Но если это переписать под какие-нидубь xWidget, то опять же, будет работать везде.
надо полагать, за этими словами стоит большой практический опыт переноса программ на не-windows платформы?
во-первых почти никто (и SMT не исключение) не пишет по стандартам ANSI, так что в качестве 1го шага к платформонезависимости код к этим стандартам надо привести. во-вторых заменить вызовы какого-нить DirectX на вызовы SDL не фунт изюму (кстати, реализация аудио в SDL вообще крайне плохо подходит для эмуляторных целей). в третьих, есть еще заточка под порядок байтов, размерности типов и тп.
рядом со всем этим GUI -- не особо большая проблема.
может http://www.wxwidgets.org/ имеется в виду?
лучше всего написать с нуля, чтоб работало везде (попользовав отлаженные алгоритмы, но не передирая реализацию вчистую). а перелопачивать платформозависимый код -- *опа редкостная, сколько раз это делал, столько раз это подтверждалось
Последний раз редактировалось boo_boo; 11.05.2007 в 17:46.
1. Ну скажу так. Что тот код Unreal который я для Pocket PC правил ОТЛИЧНО компайлится GCC компайлером 3й версии (4й не пробовал). А gcc очень капризный к ANSI. Самой страшной вещью на которую он ругался было sizeof type который просто заменяется на нормальный sizeof( type ). Плюс пара очень небольших переопределений __inline ов и __fastcall ов.
2. Там ровно 2 или 3 платформо независимых вызова. Все остальное лекго "выкидывается" (как я это сделал для PocketPC версии) и побменяется чем угодно. Т.е. это работы там реально на час.... может два.
Плюс на звук там тоже 2-3 вызова а SDL это просто оборачивает платформо зависимыми вызовами которые везде одни и те же (по функциональности) и к эмуляции не имеют ВООБЩЕ никакого отношения.
3. Если мы говорим о портировании под Linux то я там полагаю имеется ввиду Intel архитектура x86. Соответственно никакие нам "битов", выравниваний и изменения little/big-endian не нужно. Типы все АБСОЛЮТНО те же. Т.е. с этим даже не загоняться.
4. И только ОДНА реальная проблема - это GUI (реализация настроек через GUI). Который срезать www.wxwidgets.org можно. Т.к. достаточно просто (по типу MFC) и crossplatform. Соответственно нужно переписать ТОЛЬКО функциональность gui.cpp
Соответственно, LINUX версия без GUI делается просто влет !!!
При работе со звуком в СДЛ непонравилась ее архитектура- вызов callback на заполнение буфера. Мне требовалась другая система- ожидание воспроизведения буфера и его заполнение.
Далеко не факт. SMT когда эмуль писал, небось про линукс вообще и не думал...
Плюс- многие фильтры и процедуры написаны на асме с использованием ММХ и прочих радостей- с ними что делать? Это тоже платформо-зависимое место.
Как вариант- для разделить две ветки работы с гуем и обернуть их в условную компиляцию (чтоб не доводить одновременно под обе версии), потом нативную виндовую ветку можно аккуратно вырезать.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
На... фильтры там всякие на интринсикай SSE и MMX ный. Но это же backend. Это уже можно и не портировать. Главное что код который выдает спековский буффер на винду не завясан. А там уже просто его сконвертить и подсунуть SDLю или чему угодно. А всякие фильнтры - это уже есть есть желание ковырять их. Хотя там по-моему и C-шные версии есть (если не ошибаюсь).
Главное - работать будет.
Добавлено через 3 минуты
Ну да. Просто если линуксовая версия будет то она и на Mac'е новом работать будет, который на Inteloвском проце.
Последний раз редактировалось AND; 12.05.2007 в 17:45. Причина: Добавлено сообщение
Но они не умеют грузить убыстренно tzx с помощью numlock. Кроме того, анрил поддерживает fdi/td0/udi, всякие General Sound.
Haiku OS - духовный последователь AmigaOS! Welcome на борт MK4 с зоопарком операционных систем, в наш космо-десант, Special Forces, в крайний отсек корабля, уходящего в гиперпрыжок, на поиски Раккслы и эры Встретившихся рук, в Час Быка, Звездное Наследие за нами!!!
https://t.me/haiku_ru
мы про разные эмули думаем.Но они не умеют грузить убыстренно tzx с помощью numlock.
те что я имею в виду, вообще не знают что такое tzx
(ибо нафиг это не нужно)
fdi, td0, udi - есть
GS - нет, ибо по крайней мере мне не нужно. моды я и отдельно послушать могу, а в игрушки не особо играюсь, что с GS, что без GS.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)