 |
GP2X Community Новостной форум посвященный консолям GP2X
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Hahahoj
Site Admin

Пол:  Возраст: 51 Зарегистрирован: 08.10.2008 Сообщения: 1848
Группы:
|
|
Всё ж таки еще раз отреквесчу собранный и готовый к простой инсталяции путем разархивации в папку тулчейн под Винду. _________________ Просто Вовк |
|
Вернуться к началу |
|
 |
BiSe Trojanov
Постоялец
Пол:  Возраст: 36 Зарегистрирован: 21.04.2011 Сообщения: 18 Откуда: Казань Группы: Нет
|
|
Hahahoj писал(а): | Всё ж таки еще раз отреквесчу собранный и готовый к простой инсталяции путем разархивации в папку тулчейн под Винду. | Боюсь, у меня никаких нервов не хватит собирать компилятор для Винды. Как варианты:
1. Поставить виртуальную машину для Убунты. Например, VirtualBox или Virtual PC, на последней надо будет грузить Убунту в режиме консоли из-за некоторых несовместимостей видеокарты.
2. Воспользоваться тем пакетом, который собрал KidPaddle. Я возился с ним всего полчаса и вполне мог недоглядеть какую-нибудь маленькую загвоздку.
3. Имея MinGW, собрать bin-utils самому. Варианты с компиляцией на Винде я сразу отбросил до самого крайнего случая. Всё же в первую очередь весь этот софт пишется под gcc.
4. Извращения с cygwin'ом как это делает Ainu. Кстати, самый оптимальный вариант.
Хоть у меня главная система это Windows, но то, что писать программы под Caanoo я буду, сидя под Убунтой, я принял решение ещё до того, как ко мне прилетела покупка. Начнём хотя бы с отладки, без доступа к SSH консоли я бы помер. Я не приемлю каких-то левых драйверов под Виндой, за сим установить Caanoo так же как в Убунте у меня бы не получилось. |
|
Вернуться к началу |
|
 |
BiSe Trojanov
Постоялец
Пол:  Возраст: 36 Зарегистрирован: 21.04.2011 Сообщения: 18 Откуда: Казань Группы: Нет
|
|
К сожалению подчинить sdl_ttf не удалось ни в какую. По невыясненной причине модуль работает сверх глючно. При рендеринге шрифтов в Surface постоянные плавающие "EAccessViolation : Access violation". Бороться с этим невозможно. Иногда всё рендерится, иногда просто падает. Причём упадёт или нет зависит от другого присутствующего кода.
Код: | SDL_Init(SDL_INIT_VIDEO or SDL_INIT_JOYSTICK);
Surf:=SDL_SetVideoMode(320, 240, 16, SDL_FULLSCREEN or SDL_SWSURFACE);
Joy :=SDL_JoyStickopen(0);
SDL_ShowCursor(0);//}
TTF_Init();
SystemFont :=TTF_OpenFont('./fonts/DejaVuSans.ttf', 12);
writeln('d1 ',IntToHex(random(1),1),' ',IntToHex(uint32(SystemFont),8));
color.r:=255;color.g:=0;color.b:=0;color.unused:=255;
surf:=TTF_RenderUTF8_Blended(SystemFont,Pchar('Menu'),color);
exit; | Может вполне заработать. А тот же самый код, где после "exit" написаны ещё пару строк, например,
Код: | fontColor:=StrToInt('$'+copy(s,5,2)+copy(s,3,2)+copy(s,1,2)); | (то есть НЕДОСТЕЖИМЫй не исполняемый в любом случае код), то на строке с рендерингом падение. Ещё падение иногда бывает, если SDL_Init не вывести через writeln. Иногда падает, если не использовать IntToHex. Если бы сам не увидел, не поверил бы. В общем стабильности с этим модулем мне добиться не удалось. Узнать чем вызвано такое поведение не представляется возможным по крайней мере без дебаггера.
Все функции грузятся через динлиб, все функции выдают правильные значения, шрифты грузятся. От чего такие вещи понять не могу. |
|
Вернуться к началу |
|
 |
Hahahoj
Site Admin

Пол:  Возраст: 51 Зарегистрирован: 08.10.2008 Сообщения: 1848
Группы:
|
|
Не раз испытывал тоже самое и на обычной брудшеловской сишной sdk-шке при использоании той же sdl_ttf для старых гп-х. Мне к примеру никогда не удавалось менять несколько раз подряд размер шрифта.
При этом была закономерность -на компе всё тоже нормально бегало.
Так что грабли действительно скорее всего в самой либе и лучше временно переключится на что-нибудь другое дав мозгам отдохнуть. _________________ Просто Вовк |
|
Вернуться к началу |
|
 |
BiSe Trojanov
Постоялец
Пол:  Возраст: 36 Зарегистрирован: 21.04.2011 Сообщения: 18 Откуда: Казань Группы: Нет
|
|
Как такое вообще возможно? Каким образом на него действует код, который вообще недостежим. Судя по тому как меняется размер исполняемых файлов, Паскаль линкует разные библиотеки, ведь просто объявление в uses не заставляет компилятор добавлять весь код внутрь. То есть при использовании IntToHex, компилятор линкует SysUtils, но как влияет наличие дополнительного исходного кода на код, находящийся вообще за тридевять страниц от него? Если бы не я сам писал глючный код, то я бы посоветовал копать в сторону облегчения кода насколько это возможно, но это я уже сделал, легче просто некуда. Уже и разные режимы перепробовал (хотя с самого-самого начала программирования для Caanoo я на всякий случай отключил оптимизацию на корню), и стэк увеливал, ничего не помогает. Как код может зависеть от наличия/отсутствия другого кода, вот чего я не пойму. Я допущу, что это ошибка в sdl_ttf, но как она может быть настолько плавающей? Гейзенбаг как он есть.
Вижу несколько выходов:
1. Попробовать линковать ttf-функции статически. Сомневаюсь, что поможет
2. Напрямую разбираться с libfreetype.so, рендерить из неё в память хоть bmp-изображения текста (с альфа-каналом, разумеется), и это засовывать в Surface. Если дело не в libfreetype, а в sdl_ttf, то поможет
3. Пробовать качать исходники SDL и компилировать самому. Может быть в новой версии (а такая вообще есть?) ошибки исправлены
4. Писать свою реализацию TTF. Поможет в любом случае.
Hahahoj писал(а): | временно переключится на что-нибудь другое дав мозгам отдохнуть. | Задача не "заставить sdl_ttf работать", эта либа пусть хоть в аду горит, задача "найти легчайший (требующий минимум ресурсов) способ рендерить текст" |
|
Вернуться к началу |
|
 |
Hahahoj
Site Admin

Пол:  Возраст: 51 Зарегистрирован: 08.10.2008 Сообщения: 1848
Группы:
|
|
Народ еще с прошлого поколения консолей пошел по пути написания своих либ рендерящих текст.
Причем Квазист, например, использует Bitmap Font Builder для построения битмапов шрифтов под пару нужных размеров, с которых потом печатает.
На gp32x.com мелькал еще один способ обхода глюков в работе либы от кого-то из гуру - на старте под нужный размер шрифта и сам фонт шрифт рендерится на поверхность в памяти, а потом печатается уже встроенными самопальными утилитами с этой поверхности не затрагивая глючную либу. _________________ Просто Вовк |
|
Вернуться к началу |
|
 |
BiSe Trojanov
Постоялец
Пол:  Возраст: 36 Зарегистрирован: 21.04.2011 Сообщения: 18 Откуда: Казань Группы: Нет
|
|
Не, ну хранить в памяти плоскость на 2-5 МБ ОЗУ это конечно круто, благо оборудование позволяет, но это же костыль! Я так понимаю, у многих возникают эти проблемы? Если проблемы ещё с прошлых консолей, почему глюки переместились в это поколение для пущей совместимости? |
|
Вернуться к началу |
|
 |
Hahahoj
Site Admin

Пол:  Возраст: 51 Зарегистрирован: 08.10.2008 Сообщения: 1848
Группы:
|
|
46 кб на 10 размера шрифтик. Вполне по карману. Плюс отрисовка много шустрее. _________________ Просто Вовк |
|
Вернуться к началу |
|
 |
Don Miguel
Профи

Возраст: 75 Зарегистрирован: 02.11.2008 Сообщения: 27
Группы:
|
|
Замечательно.
Очень жаль, что не было 10 лет назад того |
|
Вернуться к началу |
|
 |
quasist
Профи

Пол:  Возраст: 38 Зарегистрирован: 28.10.2008 Сообщения: 43
Группы:
|
|
GPH говорило(мне), что у них на консоли старая версия SDL и, например, затрагивающая меня проблема непахания SetPosition(или как там её) в SDL_mixer именно из-за версии (причем передали ссылку на офф. changelog где это указано). _________________
  |
|
Вернуться к началу |
|
 |
PredatorGLScene
Новичок
Возраст: 41 Зарегистрирован: 21.10.2011 Сообщения: 1
Группы: Нет
|
|
Вернуться к началу |
|
 |
SyDr
Постоялец
Пол:  Возраст: 34 Зарегистрирован: 18.08.2011 Сообщения: 29 Откуда: Беларусь Группы: Нет
|
|
Пытаюсь заставить работать FPC4ARM на винде. Вроде потихонечку идёт. Столкнулся, однако, с проблемой:
Код: | /cygdrive/c/FPC4ARM/ToolChains/GPH_Caanoo/bin/arm-gph-linux-gnueabi-ld: warning:
libfreetype.so.6, needed by C:\FPC4ARM\ToolChains\GPH_Caanoo\libs\/libSDL_ttf.s
o, not found (try using -rpath or -rpath-link)
C:\FPC4ARM\ToolChains\GPH_Caanoo\libs\/libSDL_ttf.so: undefined reference to `FT
_Set_Pixel_Sizes'
...
ur.lpr(29,1) Error: Error while linking
ur.lpr(29,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted |
Это при попытке работать с SDL_TTF. libfreetype.so.6 в тулчейне не было, своровал из официального SDK, ничего не изменилось вообще. |
|
Вернуться к началу |
|
 |
BiSe Trojanov
Постоялец
Пол:  Возраст: 36 Зарегистрирован: 21.04.2011 Сообщения: 18 Откуда: Казань Группы: Нет
|
|
SyDr писал(а): | своровал из официального SDK, ничего не изменилось вообще. | А с самой приставки? |
|
Вернуться к началу |
|
 |
SyDr
Постоялец
Пол:  Возраст: 34 Зарегистрирован: 18.08.2011 Сообщения: 29 Откуда: Беларусь Группы: Нет
|
|
BiSe Trojanov, пока искал, как её там найти и скопировать - пришла мысля. Проверил, так и есть: libfreetype.so.6 просто символическая ссылка. Заменил на саму библиотеку. Теперь всё компилится. Надо бы сменить обратно на вин-версию symlink. Странно только, что писало, что файл не найден, а не то, что он не подходит.
В целом, ситуация такая же, как и выше - краш при попытке отрендерить текст. Сменил на обычный текст (RenderText_Solid), прочитал замечания к функции, добавил для текста отдельную переменную и проверку:
if (systemfont<>nil) and (textc<>nil) then
В результате - ни краша, ни текста. Тоже самое в винде работает и выводит текст на экран.
Костыль найден. Тяну вместе с исполняемым файлом на консоль все библотеки (хотя, с учётом того, что я её переименовывл, должно хватить только sdl_ttf.so.6). Текст выводится. Игра Недоигра не крашится. Необходимо перейти к более серьёзным тестам. В связи с чём возникает вопрос: как нормально перекидывать файлы на консоль/с консоли? А то сейчас: подрубил дата-кабель, подождал, скопировал файл, отрубил дата-кабель, проверил и всё по новой. Нет ли более удобных способов? |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
Powered by phpBB © 2001, 2005 phpBB Group
|