Я уже довольно давно начал работу над проектом, позволяющим собирать и тестировать эльфы под Windows. Первое настоящее боевое крещение разработка прошла на тестовых сборках Aegis, и вообще говоря, была доступна всё это время на SVN, просто у меня небыло настроения рассказать об этой штуке.
Вкратце, что это такое и как работает:
Что входит в текущую версию EmuElf:
Отдельно стоит отметить некоторые вещи, которые НЕ поддерживаются:
Для тех, кто так ничего и не понял или лень читать: EmuElf - это инструмент для разработчиков, который позволяет многократно ускорить и значительно упростить разработку эльфов под видеодрайвер ;)
Забирать отсюда: svn://svn.vilko.ru/emuelf
В репозитории уже есть Debug-build последней версии emuelf.lib, а также два эльфа-примера, собирающихся с ним: helloworld-snd и какая-то старая версия Matrix.
Вкратце, что это такое и как работает:
- Берём исходник эльфа, работающего с драйвером (UIS не поддерживается)
- Иногда придётся подправить функции чтения из бинарных файлов - на системах от Intel и Motorola разный порядок байт (endianness) - см. примеры.
- Собираем исходник в VisualStudio (разрабатывается на 6 версии), подключив к проекту EmuElf.lib
- Если в EmuElf есть все необходимые функции, то на выходе получаем *.exe файл, повторяющий функциональность эльфа!
Что входит в текущую версию EmuElf:
- Окно 176x220 - экран
- Консоль - показывает debug-сообщения, выводимые через PFprintf и cprint
- Цифровая клавиатура замаплена на нумпад (789 = 123; 0 = *; Del = 0; Enter = #)
- AFW в зачаточном состоянии
- DL - таймеры, DL_KeyKjavaGetKeyState
- DL_Fs - корень эмулируемой файловой системы находится в папке FS, рядом с exe-файлом. Поддерживаются только основные файловые операции. Впрочем, практически тоже самое можно сказать и про всё остальное.
- API Elfpack2
- AHI (видеодрайвер) - наиболее развитая часть проекта, много функций, но всё равно не все. Весь проект изначально затачивался на код, использующий только драйвер для вывода графики.
- GDA - альтернативный видеодрайвер, API реализован более-менее полностью, насколько я помню (моя разработка, тоже выложу как будет время)
- Таски (аналог threads в vrtx) - для использования этих функций на реальном телефоне нужен специальный патч (тоже моя разработка, тоже как-нибудь зрелизю)
- Строковые функции с u_*, suAlloc/FreeMem и прочее по мелочи
Отдельно стоит отметить некоторые вещи, которые НЕ поддерживаются:
- UIS НЕ поддерживается (только UIS_CreateNullDialog), и в мои планы не входит его реализация
- Одновременно может быть запущено только одно приложение (Application)
- Ещё раз отмечу, что результат интерпретации, скажем, в UINT32 данных, прочитанных из файла отличается в EmuElf и в эльфе - необходимо использовать функции для преобразования endianness
Для тех, кто так ничего и не понял или лень читать: EmuElf - это инструмент для разработчиков, который позволяет многократно ускорить и значительно упростить разработку эльфов под видеодрайвер ;)
Забирать отсюда: svn://svn.vilko.ru/emuelf
В репозитории уже есть Debug-build последней версии emuelf.lib, а также два эльфа-примера, собирающихся с ним: helloworld-snd и какая-то старая версия Matrix.