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
    Сообщения:
    529
    Современных компиляторов с поддержкой старых систем, почти нет. К примеру Open Watcom умеет собирать современный стандарт С++ под Dos. В начале я им и хотел воспользоваться. Но он слишком ограничит маневры, всего лишь одним компилятором. Тогда то ко мне и пришла идея, что если ядро фреймворка написать на том подмножестве языка С++, который будет поддерживать десятки компиляторов для разных систем. После некоторых экспериментов, убедился, что это возможно.

    Тотальная совместимость с любыми компиляторами, в том числе 30+ летней давности. Это не только dos и windows 3.1, sun системы, старые макинтоши, консоли (требуется уточнение)
     
    Последнее редактирование: 5 сен 2023
  2. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Портировать на консоли? Я считаю, что Денди, Сега и Плейстэйшн не самая лучшая платформа для твоего фреймворка. Но, чисто ради прикола и интереса, конечно можно. Вот Мак и Sun ещё ближе к нормальной идее. Там мало средств разработки. Но проблема - мне под руки не разу не попадался эмулятор Sun. Если нужен будет эмулятор Мака - пиши. Есть у меня хорошая сборочка. Там все MacOS от 1.0 до 6 и к ним ещё MacPaint и MacDraw.
     
  3. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Я о 32 битных консолях, ps1, xbox и выше. денди и сега на мой взгляд нереально портировать из одних исходников. Придётся перелопачивать весь код и специфичный и общий. Только ПК лайк консоли. Я смотрю Дмитрия Бачило и он много рассказывает о Sun и Mac системах.
     
  4. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Вот туда ещё реально портировать. (Представил как-бы выглядел сайт игры на LDL. Версии для Windows, MacOS, Linux, DOS, Mac, Sun, PS1, PS2, PS3, XBOX Original, Xbox 360...)
    Знаю его. Смотрел его перевод Revolution OS.
     
  5. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.534
    На мой взгляд была бы интересна также поддержка у фреймворка и некоторых других приставок (Jaguar, 3DO, Saturn, Dreamcast, N64, GameCube, Wii).
     
  6. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Я только за. Конечно это титанический объём работ. Но я надеюсь на то, что когда я смогу сделать релиз первой версии.
    Для этого не так уж много и осталось.

    Работа со звуком. Остальные базовые примитивы уже реализованы. Так как цель сделать ядро фреймворка, то из него я уберу поддержку шрифтов, форматов графики и звука. Это всё уйдет в библиотеки расширений. Как в SDL это ядро. SDL_Image загрузка разных форматов графики и далее по аналогии.

    Думаю, энтузиасты подтянутся и привнесут порты для других, новых и старых операционных систем и консолей.
     
  7. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Не думаю, что на такую экзотику стоит. Вот ещё на PSP можно подумать. Потому что, под неё будет полегче. В интернете попадался к ней компилятор C++. Как называется забыл. Плюс, у неё есть довольно хороший эмулятор - PPSSPP.
    Да. На кой хрен нагружать основной фреймворк?
    Надеюсь.
     
  8. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.534
    Мне лично интересно, особенно под N64.
     
  9. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Выложил наработки по новой концепции фреймворка. Пока проект сырой. Допиливаю рендеры.

    GitHub - JordanCpp/LDL_Lib

    Пока гит не причёсан. Позже добавлю описание.
     
    longhorn_gnu и Tigoro нравится это.
  10. longhorn_gnu

    longhorn_gnu

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

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Для большей портабельности на разнообразные платформы фреймворк пишется на старом диалекте С++, без использования шаблонов, пространства имён. Это даёт возможность сборки нативно на старых платформах к примеру ms-dos. Отличие только в этом.

    Фреймворк собирается в ms-dos компилятором Borland C++ 2.0 которому больше 30 лет.

    Сейчас я переношу текущий функционал с сохранением работы под windows, Linux и добавляю поддержку ms-dos и windows 3.1

    Важный момент, под конкретную операционную систему, я реализую минимальный функционал, остальное это общий код.

    То есть. Я не переписываю весь фреймворк под ms-dos, только абстрагирую минимальный функционал. Весь другой код не меняется он компилируется древними и новыми компиляторами и работает на всех заявленных платформах.

    Этот момент очень важен. И показывает, что общий код переносим между большим количеством компиляторов.
     
    longhorn_gnu и Tigoro нравится это.
  12. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Ой на тебя сейчас с вилами напрыгнут шизики-Electronщики.
    Не хочу опять устраивать спор про то, является ли Windows 3.1 ОСью или оболочкой, но мне кажется, что под него даже полезнее.
    Подход довольно сложный, но самый правильный. И так г*внокод уже везде.
    :blink:
     
  13. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Я сам fullstack разработчик. Пилю бэк и фронт:) Я про них знаю:)

    Я бы сказал, аскетичный.

    Ага. Примерно такую реакцию я ловлю на ресурсах где упоминаю о своём проекте. Удивление, но многим идея нравится. По крайней мере, могу констатировать, что я не безумен программируя под ms-dos в 2023:)
     
    longhorn_gnu нравится это.
  14. longhorn_gnu

    longhorn_gnu

    Регистрация:
    26 июл 2023
    Сообщения:
    76
    Одно дело пилить сайты, а другое пытаться запихнуть этот сайт в EXE-шник ещё и склеивая с Chromium. Если бы я похожее пилил, то использовал бы куски Firefox.
    Мне тоже.
    Ну да. Я ведь не под ДОС код пишу, просто совпало что его можно запустить и там.
     
  15. Чёрный Думер и все виды материала

    Чёрный Думер

    Регистрация:
    17 мар 2010
    Сообщения:
    2.423
    Чтобы сохранить известную ссылку на репозиторий и "звёздочки" в нём, как мне кажется, стоило просто залить новую версию отдельной веткой, а не создавать новый.
     
    Jordan 63 нравится это.
  16. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Пока веду разработку в отдельном репозитории.

    GitHub - JordanCpp/LDL_Lib

    Сейчас фреймворк собирается из одной кодовой базы и работает в Windows, Linux, Dos. Функционал ещё в стадии переноса. Сейчас экспериментирую с поддержкой палитры и единым API. То есть все примеры должны одинаково выглядеть и работать на всех платформах.

    Решил проблемы. Теперь фреймворк собирается на debian 3.
     
    Gamerun, Tigoro и AndyFox нравится это.
  17. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Каркас фреймворка обрастает кодом.

    Добавил возможность статической и динамической сборки для linux и windows.
    Под linux фреймворк собирается с версии gcc 3 и выше, аналогично и для windows c (mingw)
    Под Windows нужен компилятор Visual C++ 5.0 и выше.

    Добавил OpenGL рендер и библиотеку GLU.

    Скоро оформлю гитхаб и выложу инструкцию по сборке.

    В будущем протестирую сборку на компиляторах Borland, Watcom, Symantec и т.д
    --- добавлено 26 сен 2023, предыдущее сообщение размещено: 26 сен 2023 ---
    В процессе портирования на windows 3.1 собираю в эмуляторе dosbox с установленной windows 3.1 и компилятором borland C++ 4.52
     
    longhorn_gnu и AndyFox нравится это.
  18. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Как собрать под linux. После сборки, доступно 4 примера.

    Статический вариант сборки
    git GitHub - JordanCpp/LDL_Lib
    cd LDL_Lib/cmake/linux/static
    cmake -Bout
    cd out
    make

    Динамический вариант сборки
    git GitHub - JordanCpp/LDL_Lib
    cd LDL_Lib/cmake/linux/shared
    cmake -Bout
    cd out
    make

    Позже добавлю инструкцию по сборке в новых и старых Windows и MS-DOS.
     
    Tigoro и AndyFox нравится это.
  19. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Взвесив за и против. Решил остановиться на старой версии фреймворка С++ 98.

    Данный проект будет переформатирован в набор библиотек. Идея остается прежней, фреймворк с поддержкой старых систем. Я решил не гнаться за совместимостью со всеми компиляторами С++ и нативной сборки на MS-dos.
    Фреймворк так же будет разрабатываться на С++ 98.

    Под ms-dos и windows 3.1 фреймворк будет собираться OpenWatcom. Для этого нужно добавить работу с палитрой. И не нужно лопатить весь фреймворк на си с классами. Решение окончательное. Но я рад, что потратил время, приобрёл опыт и он пригодится для порта под Dos.

    Проект так же доступен GitHub - JordanCpp/Lib-LDL

    Но в ближайшее время сделаю обновление, разделю проект на библиотеки.
    LDL_Core - база для всего фреймворка, управление, файлами, временем, загрузкой динамических библиотек, матнматические функции
    LDL_GLU - Поддержка библиотеки GLU для OpenGL
    LDL_Graphics - API для вывода графики, рендер, окна управление событиями, рисование палитровых изображений
    LDL_Image - Загрузка и чтение изображений
    LDL_OpenGL - Поддержка всех версий OpenGL, GLES
    LDL_Text - Работа с выводом текста и работой со шрифтами ttf, под капотом freetype
    LDL_Audio - загрузка и воспроизведение звука с поддержкой mp3, ogg, wav и flac

    Проект так же будет находиться в одном репозитории, но будет разбит на под проекты.

    Наработки по новой концеции будут перенесены.
     
    Последнее редактирование: 28 сен 2023
    Gamerun и Tigoro нравится это.
  20. Jordan 63

    Jordan 63

    Регистрация:
    26 янв 2010
    Сообщения:
    529
    Скорректировал cmake, обновил readme на гитхабе.

    Прошу протестировать сборку на linux.

    Как ставить
    1. sudo apt-get install libx11-dev (для старых дистрибьютивов linux)
    2. sudo apt-get install libgl1-mesa-dev (для старых дистрибьютивов linux)
    3. git clone GitHub - JordanCpp/Lib-LDL
    4. cd Lib-LDL
    5. Run ./linux_static.sh
    6. cmake .
    7. make
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление