Cheb's Home Page
 
 
 
Orphus system

Cheb's Home Page

Главная
Cheb's Game Engine Косметическая подтяжка Quake II
Штошник на ушах
 

 

Chentrah

English version

07.12.2014

Дальнейшие новости и обсуждение - на форуме freepascal.ru

11.01.2014

Публичный тест №16 (скачать, 2.3Мб). Рендер в текстуру, автонастройка качества графики, адаптивный суперсэмплинг с множественной выборкой через пиксельный шейдер.

10.11.2013

Столкнулся с двумя, мягко говоря, странностями при тестировании в 32-битном вайне под 64-битной дебиан 7.2 wheezy. Первая приводила к EFileCreateError при попытке записи в ini файл. Сколько сил потратил пока докопался, что это взбрык sshfs/fuse и при копировании на локальный диск всё пучком. Вторая - куда более серьёзная, повисание при выходе. Висла критическая секция, вайн выводил в бесконечном цикле

err:ntdll:RtlpWaitForCriticalSection section 0x1d4148 "?" wait timed out in thread 0009, blocked by 3d3d3d3d, retrying (60 sec)

Переделал с голой TRTLCriticalSection на класс-обёртку TCriticalSection из модуля syncobjs - всё заработало.

Двадцать FPS - это, конечно, жесть. Но что вы хотите, фрёвая OpenGL хоть и 2.0

06.01.2010

Наконец-то добил не ловящиеся исключениями в DLL! Немного возни с исходниками модуля System - и готов очень простой хак, полностью решающий проблему. Надо было всего лишь установить собственный хандлер системных исключений, который проверяет, принадлежит ли адрес исключения моей dll, и если да - подменяет адрес возврата на процедуру, поднимающую в Dll языковое исключение. Которое уже отлично ловится всеми блоками try

26.12.2008

Я совершил ужасное надругательство над своим резервным компьютером... Но зато теперь я точно знаю, что Чентра работает под свежеустановленной, безо всяких апдейтов и дополнений, Windows 98 SE (эх, ностальгия...). Единственное, что я доставил - это драйвер видеокарты с сайта nVidia (Вот кто бы подумал, что для старушки 98 есть-таки поддержка OpenGL 2.0!)

18.08.2008

Снёс под Линуксом Free Pascal 2.2.0, установил 2.2.2. Размер dll игрового модуля ухнул вниз с 1800 до 700 килобайт, что не могло не порадовать. А вот модуль-матка перестал линковаться. Оказалось - виновата библиотека Vampyre Imaging, точнее её расширение для работы с jpeg2000 - прилинкованная библиотека OpenJpeg в виде внешних объектных файлов, скомпилированных в c++. Естественно, те зависят от сишной ртл, и в соотв. юните вампыра стояло {$linklib stdc++}. В фпц 2.2.0 всё прокатывало на ура. В фпц 2.2.2 полезли вопли линкера о не найденных символах. Поиск в гугле дал, что не хватает сишных математических библиотек. Я так понимаю, что от этого размер екзешников так и уменьшился: раньше фпц использовал сишные библиотеки, теперь - больше не использует.

Я плюнул, переделал тот юнит вампыра под динамическую загрузку, нашёл libopenjpeg.so, и стал грузить её. А она не грузится! dlopen() не срабатывает, и всё. Полез за объяснениями в dlerror(). Та сообщила, что не найден символ Floor. Полез в гугль. Получил: моя программа слинкована без сишных библиотек. Первый раз встречаю такую хрень, чтобы длл что-то ожидала найти в екзешнике %(

Стал рыть Инет дальше, и узнал о дополнительном параметре для dlopen()

Если упрощённо, то
dll2:= dlopen(PChar(libstdc++.so.5), RTLD_NOW or RTLD_GLOBAL);
dll := dlopen(PChar(libopenjpeg.so), RTLD_NOW or RTLD_GLOBAL);

И вот это RTLD_GLOBAL заставляет дллы искать у друг дружки недостающие зависимости.

28.07.2008

Испытал под пользователем с именем из иероглифов: «山田» (Ямада). Движок правильно заругался на недопустимое имя пользователя, не представимое в 8-битной кодировке, и не пошёл: путь к папке этого пользователя в «Documents And Settings» оказался содержащм знаки вопроса. Но что самое странное - имя пользователя тоже оказалось «??», хотя я вроде бы использую GetUserNameW(). Чудеса WinAPI?

27.07.2008

Очередное супер-извращение: виндовая версия не только умеет обнаруживать, что запущена из под линукса, но и пытается хитрожопым методом добраться до домашней папки пользователя, и хранить все данные там.

Архив новостей >>