1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Пишу фреймворк LDL, аналог SDL но на С++ и с поддержкой старых систем

Тема в разделе "Мастерская", создана пользователем Jordan 63, 26 окт 2022.

  1. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Практического смысла нет. Только личный интерес. Вообще я хотел сначала собрать под debian 3. Но час разбирался с установщиком, сразу говорю к такому я был не готов:) Ставил несколько раз в 86box, но всё время отваливались иксы при запуске дистра. Но желание превозмочь есть:)

    Хочется узнать, на каком самом древнем дистре или компиляторе, возможно собрать рабочую версию фреймворка.

    Какое то время назад, фреймворк собирался под Dos, для API сделал заглушки. Проверял совместимость с open Watcom под Dos.

    Кто то играет в старые игры, а я играю в старое программирование:)

    Да согласен, у меня были планы перенести старые и очень старые игры и программы под фреймворк.
    --- добавлено 17 авг 2023, предыдущее сообщение размещено: 17 авг 2023 ---
    Ещё плюс, это нативная сборка на старых дистрах. И возможность использовать фреймворк, как будто на дворе бородатое ИТ 90-ых.
    --- добавлено 17 авг 2023 ---
    Проверь плиз, собирается ли у тебя фреймворк под Linux. Я добавил ещё больше примеров на OpenGL.
     
    Чёрный Думер нравится это.
  2. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.151
    @Jordan 63, что-то не хочет (debian 11), рекомендуемые библиотеки стоят (компиляторы во второй части установки cb++ доустанавливаются при желании пользователя), единственное из инструкции не могу выполнить "Run dependencies_download.sh (download freetype source code)", но код freetype вроде бы присутствует в папке dependencies.

    лог
     

    Вложения:

    • CMakeOutput.7z
      Размер файла:
      3,6 КБ
      Просмотров:
      5
  3. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    --- добавлено 19 авг 2023, предыдущее сообщение размещено: 19 авг 2023 ---
    Позже добавлю вариант сборки sh скриптом. Это нужно для того, что бы можно было собрать фреймворк и примеры без cmake, make и других утилит для сборки. Единственное требется компилятор g++ и xlib-dev
    --- добавлено 19 авг 2023 ---
    Получилось собрать freetype не используя его cmake файл. В свой cmake фреймворка добавил ссылки на конкретные файлы freetype. Позже протестирую и сделаю коммит. И можно будет собрать так: cmake .
    --- добавлено 19 авг 2023 ---
    Продолжаю собирать фреймворк на старых и новых дистрах. Все делаю в VM.
     
    Tigoro нравится это.
  4. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.151
    Спасибо за подсказку, не додумался. Итак, debian 11 на живом железе.


    BeginEnd
    все примеры успешно, выход по Esc работает.

    Graphics
    почти все примеры успешно (есть нюанс если вызов внешних файлов), выход только по A-F4, счетчик в заголовке у некоторых 62-63 показывает (ожидалось у всех 74-77, ну ладно)
    все примеры требующие внешние файлов в /Data/ переместил в Win9x, иначе ошибка сегментирования без объяснения что не смог найти файл
    ./15_AudioPlay
    X connection to :0 broken (explicit kill or server shutdown). (звука нет, но это пока ожидаемое, если принудительно через padsp запустить - то комментарий ошибки не выводит, звука тоже нет)

    LDLC - ok, выход A-F4

    Lessons
    10-ый падает с ошибкой, windows вариант из той же папки работает

    OpenGL1 - все примеры успешно

    VictorGordan - я не понял чего не хватает, все примеры не работают - ошибка сегментации и всё.
    поскольку аналогов для win9x не было скомпилированных, то сравнивать не с чем
     
  5. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Спасибо за тест.

    В каталоге Examples/VictorGordan есть каталог Data, там лежат текстуры и шейдеры. Его нужно скопировать в каталог VictorGordan где лежат бинарники.
     
  6. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.151
    "В каталоге Examples/VictorGordan есть каталог Data, там лежат текстуры и шейдеры. Его нужно скопировать в каталог VictorGordan где лежат бинарники."
    Да, я с ними и пробовал как раз. Просто ошибка сегментации. Один пример пытается что-то сделать (остальные сразу падают), но не судьба.
     
  7. Tigoro AI General

    Tigoro

    Регистрация:
    4 фев 2010
    Сообщения:
    3.151
    Под debian 12 результаты примерно такие же. lessons10 не хочет работать и VictorGordan полностью не работают примеры.
     
  8. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Евгений Зощук (aka Jordan 63)
    >Убежден, что сейчас IT-сфера развивается в сторону сверхсложных и тормозящих монстров. Уверен, что решаемые задачи можно сделать компактными и простыми и не требующими наличия Core i9.
    Полностью согласен.
     
  9. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Ага. Пока видео недоступно другим пользователям по правилам конференции. Некоторые вещи изменились во фреймворке, когда его выложат на ютуб оно сильно не устареет.
     
  10. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    А как потом узнать, выложили ли видео?
     
  11. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Публикация будет на канале https://m.youtube.com/@CUserGroupRussia

    Это канал для видео с докладов по С++ и стримы раньше часто выходили. Последний стрим был на тему моддинга fallout 2. История, какими инструментами пользовались, как создавали моды и т. д И о С++ поговорили, на стриме был автор движка fonline Cvet, ещё моддер Phobos2077 и старожил Anchorite, ну и я скромненько участвовал.
     
  12. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Надо будет послушать. Любитель самоделок.
     
  13. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Пришла идея нативно портировать фреймворк под всевозможные старые компиляторы С++. Начиная с Borland C++ 2.0

    Тесты показали, что это возможно.

    Общая концепция.

    Я пишу на С с классами ядро фреймворка. Не используя шаблоны, namespace и другие фишечки. Данное ядро будет компилироваться на любых компиляторах.

    Так же в проект будут входить заголовочные файлы классов которые оборачивают низкоуровневые классы с шаблонами и namespace. Получается пользователь может выбирать как ему разрабатывать.

    Высокоуровневое API останется. Но у пользователя будет возможность писать под Dos используя низкоуровневое API и собирать не только нативно под Dos, но под все другие платформы.

    И сейчас у меня в голове устоялась идея, что не следует всё пихать в библиотеку. Будет поддержка базовых вещей по примеру SDL, форматы аудио, работа со шрифтами вынесу в отдельные библиотеки. Но весь код будет в одном репозитории.

    Так же ядро легче портировать под очень старые операционные системы. Dos, windows 3.1, дистры Linux древних версий начала 90-ых типа debian 1 и под всякие малоизвестные операционки.

    На данный момент портировал часть фреймворка, что бы на практике проверить свою безумную идею:)

    Тестирую в Dos box и компилирую Borland C++ 2.0 компилятором.
    --- добавлено 30 авг 2023, предыдущее сообщение размещено: 30 авг 2023 ---
    Ядро будет поддерживать 16 битные x86 процессоры. Про другие не знаю, к которым есть компилятор С++. Открывается возможности для портирования под микроконтроллеры.
     
    Чёрный Думер, longhorn_gnu и Gamerun нравится это.
  14. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    При портировании, что бы не менять исходник, приходится определять следующие дефайны:

    Код:
    #ifndef LDL_Types_hpp
    #define LDL_Types_hpp
    
    #include <stdlib.h>
    
    #if (_MSC_VER <= 1600 && !__MINGW32__) || (__BORLANDC__)
    typedef signed char   int8_t;
    typedef unsigned char uint8_t;
    
    typedef signed short   int16_t;
    typedef unsigned short uint16_t;
    
    typedef signed int   int32_t;
    typedef unsigned int uint32_t;
    
    typedef int32_t  intmax_t;
    typedef uint32_t size_t;
    
    #define bool  int
    #define true  1
    #define false 0
    #else
    #include <stdint.h>
    #include <stddef.h>
    #include <limits.h>
    #endif
    
    #endif
    --- добавлено 31 авг 2023, предыдущее сообщение размещено: 31 авг 2023 ---
    Выбрал следующий вариант, без юзания pimpl. Наружу торчат интерфейсные классы.

    В недрах фреймворка я реализую интерфейс LDL_IRender требующий динамического создания. Что бы не утомлять разработчика, делается дополнительный файл Render.hpp

    Код:
    #ifndef LDL_Cpp_Render_hpp
    #define LDL_Cpp_Render_hpp
    
    #include <LDL/Creators.hpp>
    
    class LDL_Render
    {
    public:
      LDL_Render()
      {
        _Render = RenderCreate();
      }
    
      ~LDL_Render()
      {
         Destroy(_Render);
      }
    
      void Draw()
      {
        _Render->Draw();
      }
    private:
      LDL_IRender* _Render;
    };
    
    #endif
    Для поддержки namespace и шаблонов, делаю еще один заголовочный файл

    Код:
    #ifndef LDL_Cpp98_Render_hpp
    #define LDL_Cpp98_Render_hpp
    
    #include <LDL/Creators.hpp>
    
    namespace LDL
    {
      namespace Graphics
      {
        class Render
        {
        public:
          Render()
          {
            _Render = RenderCreate();
          }
    
          ~Render()
          {
            Destroy(_Render);
          }
    
          void Draw()
          {
            _Render->Draw();
          }
        private:
          LDL_IRender* _Render;
        };
      }
    }
    
    #endif
    Высокоуровневое API сохраняется.
    --- добавлено 31 авг 2023 ---
    Главное сохраняется единое API для всех платформ Dos, Windows 3.1, 9x, Nt, Linux.
     
    Gamerun нравится это.
  15. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Вау! Досодрочеры будут в восторге!
    --- добавлено 31 авг 2023, предыдущее сообщение размещено: 31 авг 2023 ---
    Желательно под KolibriOS, MenuetOS и FreeDOS.
    --- добавлено 31 авг 2023 ---
    Идея своеобразная, но не безумная. По идее, если приложить усилия, может и взлететь.
    --- добавлено 31 авг 2023 ---
    М-х... Придётся сильно обрезать возможности, но можно попробовать портировать на "это чудо". https://dzen.ru/a/YA6qfu3nNTwKXsOJ
     
  16. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Нет. Для других ос которые не поддерживают функционал, будут заглушки. Ограничивать функционал для современных ос точно не буду. Как решение просто заглушки.
     
  17. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Я про это и говорил.
     
  18. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Пример. В досе потоков нет. Но если их не юзать при разработке используя фреймворк. То велика вероятность, что программа будет работать под Dos. Как то так.
     
  19. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Ну, впринципе так и есть. Желательно будет ещё этот фреймворк портировать под KolibriOS. А то там сейчас из языков АСМ и самый чистый C и C++.
     
  20. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    535
    Я за. Сейчас нужно фреймворк переделать. Главное это наличие С++ компилятора, хоть какого нибудь.
    --- добавлено 31 авг 2023, предыдущее сообщение размещено: 31 авг 2023 ---
    Посмотрим. За всё время пиления фореймворка, из вне не пришло ни одного коммита. Возможно после релиза, найду единомышленников. Пока пилю один.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление