Меню сайта |
![](/.s/t/211/6.gif) |
|
![](/.s/t/211/8.gif) |
Категории раздела |
![](/.s/t/211/6.gif) |
|
![](/.s/t/211/8.gif) |
Поиск |
![](/.s/t/211/6.gif) |
|
![](/.s/t/211/8.gif) |
Статистика |
![](/.s/t/211/6.gif) |
![](/stat/1739072752)
Онлайн всего: 1 Гостей: 1 Пользователей: 0
|
![](/.s/t/211/8.gif) |
|
Приветствую Вас, Гость · RSS |
09.02.2025, 09:45 |
Мануал по портированию игр и программ (с) EXL
В соседних ветках много тем по портированию софта/игр. Я не знаток в этом деле, но кое-что могу рассказать) Для портирования приложений на нашу платформу нужны: 1. AndLinux или Cygwin (Запускаются под виндой). Или любой Linux 2. SDK 3. Прямые руки Я расcмотрю наиболее приемлемый способ с использованием Винды и AndLinux'a Под Cygwin говорят плохо собираются программы, ну а настоящий Linux я пока не освоил. Итак: 1. Скачиваем сам AndLinux Я использовал версию (beta2 final KDE version, 537 MB), качал себе в городской сетке, пошарьтесь в своих тоже, может найдёте. 2. Устанавливаем его. Мануал по установке AndLinux'a в картинках для начинающих) Подписи к скринам внизу Запускаем установку Кликаем next Соглашаемся, кликаем next Выбираем путь установки, next Выбираем версию. Лучше верхнюю, next Выбираем память. Я оставил 256 mb, next Настройки. Оставьте всё как есть, next Звук в AndLinux ставте да, next Настройки запуска AndLinux ставьте первое, next Введите имя, пароль, next Выберите третье, пользователи Windows XP лучше выбирайте COFS, next Создаем папку AndLinux в корне вашего жесткого диска, даём ей общий доступ! Нажимаем Refresh, выбираем расшаренную нами папку, вводим имя пользователя и пароль, next Дальше - установка ярлыков, групп меню, ассоциации к файлам, ставим что нужно, ждём пока установиться и перезагружаем компьютер! 3. Скачиваем SDK, Зеркало. Копируем данный архив в расшаренную папку AndLinux. 4. Установка окружения для портирования: Стартуем AndLinux, запускаем под ним Konsole Выполняем команды: (Новая строка - ENTER, вместо user естественно пишем своё имя, после первой команды потребуется ввести пароль) Code sudo mkdir /mmc sudo chown user -R /opt sudo chown user -R /home sudo chown user -R /mmc mkdir /opt/toolchains mkdir /home/z6 mkdir /home/z6/build mkdir /mmc/mmca1 tar -C /opt/toolchains -xzvf /mnt/win/motomagx-toolchains.tar.gz cp /opt/toolchains/motomagx/setenv-z6.sh /home/z6 cp /opt/toolchains/motomagx/setenv-z6-2.sh /home/z6 5. Теперь запускаем окружение
Code cd /home/z6 . setenv-z6.sh 6. Качаем исходники и кидаем их в папку AndLinux, распаковываем и пробуем собрать
Code cd /home/z6 tar -xzvf /mnt/win/Ваши_исходники.tar.gz cd Ваши_исходники ./configure --host=arm-linux-gnueabi make (или make install) Если не конфигурируется, пробуем
Code ./configure --host=arm-linux-gnueabi --enable-sdlui --without-x Если приложению нужны data файлы - нужен параметр --prefix=./ - например
Code ./configure --host=arm-linux-gnueabi --enable-sdlui --without-x --prefix=/mmc/mmca1/..Ваш путь Или так
Code ./configure --host=arm-linux-gnueabi --enable-sdlui --with-sdlsound --without-x --prefix=./ Не забываем выполнять команду make distclean - она удаляет существующие неправильные бинарники
7. Если в исходниках отсутствует файл configure вручную редактируем Makefile ищем и заменяем строчки
Code CC:=gcc ---> CC:=arm-linux-gnueabi-gcc cc=gcc ---> CC=arm-linux-gnueabi-gcc cxx=g++ ---> CXX=arm-linux-gnueabi-g++ ld=ld ---> LD=arm-linux-gnueabi-ld ar=ar ---> AR=arm-linux-gnueabi-ar as=as---> AS=arm-linux-gnueabi-as oc=oc ---> OC=arm-linux-gnueabi-objcopy ranlib=ranlib ---> RANLIB=arm-linux-gnueabi-ranlib strip=strip ---> STRIP=arm-linux-gnueabi-strip 8. Если конфигурирование и компиляция прошла без ошибок, вытаскиваем полученный файл из AndLinux'a с помощью Dolphin, Не забываем кстати стрипать полученный экзешник, по такому коду (Где екзешник "x64" лежит в папке src, выполнять после make):
Code arm-linux-gnueabi-strip src/x64
Он лежит по пути (Вкладка Root) \home\Z6\Ваши_Исходники\Исполняемый файл, для этого его нужно вырезать, перейти на вкладку home и кинуть в папку windows, после этого он появиться в C:\\AndLinux
9. Копируем данный файл в корень карты памяти и выполняем в телнете
Code cd /mmc/mmca1 export LD_LIBRARY_PATH=/mmc/mmca1/games/lib:$LD_LIBRARY_PATH chmod +x Имя исполняемого файла ./Имя исполняемого файла Если запустилось - отлично! Делайте пакет и выкладывайте! ------------------------------------------------------------------------------------ 1. Правка управления (Ищите в исходниках по SDLK или клавишам):
Code layer[0].keys[0]=SDLK_LEFT; player[0].keys[1]=SDLK_RIGHT; player[0].keys[2]=SDLK_UP; player[0].keys[3]=SDLK_DOWN; #ifndef ALT_FIRE player[0].keys[4]=SDLK_RCTRL 2. Правка разрешения (Ищите в исходниках по VIDEO или само разрешение) 3. Решение для добавления сворачивания приложения при входящем вызове (sms, флипе, других телефонных событиях) с остановкой звука делаем через замену процедуры SDL_PollEvent на собственную mySDL_PollEvent Code -------------example.h----------------------- int mySDL_PollEvent(SDL_Event *event);
// audio use sdl-lib SDL_AudioSpec obtained; boolean _audioSuspended; void suspendAudio(); int resumeAudio();
// audio use sdl-mixer lib void suspendAudio(); int resumeAudio(); void closeAudio(void); --------------example.cpp-------------------- int mySDL_PollEvent(SDL_Event *event) { int _r= SDL_PollEvent(event); if (!_r) return 0; if (event->type == SDL_ACTIVEEVENT) { if (event->active.state == SDL_APPINPUTFOCUS && !event->active.gain) { suspendAudio(); for (;;) { _r = SDL_WaitEvent(event); if (!_r) continue; if (event->type == SDL_QUIT) return 1; if (event->type != SDL_ACTIVEEVENT) continue; if (event->active.state == SDL_APPINPUTFOCUS && event->active.gain) { resumeAudio(); return 1; } } } } return _r; }
// if audio use sdl-lib void suspendAudio() { SDL_CloseAudio(); _audioSuspended = true; }
int resumeAudio() { if (SDL_OpenAudio(&obtained, NULL) < 0){ return -1; } SDL_PauseAudio(0); _audioSuspended = false; return 0; } // if audio use sdl-mixer-lib void suspendAudio() { Mix_SuspendAudio(); }
int resumeAudio() { int r = Mix_ResumeAudio(); if(r == -1){ closeAudio(); return -1; } }
void closeAudio(void) { Mix_CloseAudio(); } 4. Мониторинг проблем "Segmentation fault" Качаем gdb и распаковываем в телефон /mmc/mmca1/games приложения должны быть собраны с префиксом '-g' и не должны быть пострипаные
Code ulimit -c unlimited ./<app> Segmentation fault (core dumped) файл <core> будет создан ../bin/gdb ./<app> <core> 5. утилита strace 6. Скачивание исходников и их обновление
Code svn co http://сайт - скачивание svn up - обновление 7. Скрипт запуска утверждённый минздравом:
Code #!/bin/sh
mypath=${0%/*} LIBDIR1=/ezxlocal/download/mystuff/games/lib LIBDIR2=/mmc/mmca1/games/lib LIBDIR3=$mypath/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3 export HOME=$mypath cd $mypath exec $mypath/Ваш екзешник > $mypath/Ваш экзешник.log 8. Для портирования игр, в которых разрешение экрана 640х480 или 800х600, требуется правка координат в исходниках. Для первого случая нужно делить координаты на 2, для второго на 2.5, графику можно обработать программой VSO Image Resizer ----------------------------------------------------------------------------------- Мануал будет дополняться и разрабатываться, все что вы прочитали в мануале - это попытка систематизировать информацию. Источники с которых бралась информация: Motofan и Motorola Gaming Site Огромное спасибо таким людям как: Lubomyr, Neomoto, Abram, AstaRoth, Здесь можно скачать исходники: Сайт Сайт Сайт Ну и на многих других Полезные ссылки, обязательные к прочтению начинающим разработчикам: Porting Guide by Lubomyr Пробуем портировать игры и проги сами Разработка софта под MOTOMAGX, начну небольшой HOWTO Компиляция нативных приложений под E6/A1200, Создание окружения для компиляции SDL библиотека --------------------------------------------------------------------
|
Категория: Cтатьи | Добавил: EXL (12.07.2010)
|
Просмотров: 1002 | Комментарии: 1
| Рейтинг: 0.0/0 |
|