Важная информация

User Tag List

Страница 4 из 10 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 95

Тема: что то вроде лазер бейсик

  1. #31
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,183
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как уже говорилось здесь на форуме, если бы адаптировать библиотеки с z88dk под SDCC, появилась бы возможность писать на них не только на Си, но и на Обероне, и даже с более качественной кодогенерацией — она у SDCC на порядок лучше.

    Продолжение нашего разговора с Русланом

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,183
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Найден способ в ZXDev/SDCC смартлинковать сущности из библиотек (собрал TinyHello.bin размером 45 байт). Подробнее об этом читайте на форуме поддержки ZXDev в теме "Умная" линковка (smart linking) в ZXDev/SDCC.

    Интересно, что теперь нам скажет Alex Rider?

  4. #33
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,183
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию «Бега мышей»

    Переписал с Laser Basic на Оберон игру «Бега мышей» из книги «Как написать игру для ZX Spectrum». Этим я снова хочу привлечь внимание ценителей ZX-Бейсика к технологии ZXDev. Оберон может рассматриваться как структурный Laser Basic с возможностью удобно использовать любые новые операторы, написанные в машинном коде. Чтобы было яснее соотвествие Бейсик-операторов коду на Обероне — я не стал убирать Бейсик-код.

    У ZXDev много достоинств для Спектрум-программиста, но самое важное, пожалуй, — это простой старт в "большое" и кроссплатформенное программирование на простом языке, при первом знакомстве похожем на ZX-Basic. Между программированием на ZX-Basic для Спектрума и, например, созданием игр для Android-смартфонов и планшетов на языке Java — огромный разрыв. Наша цель — смягчить переход, научившись более прогрессивным подходам структурного и модульного программирования на примере простого языка Оберон.

    Скомпилированная игра «Бега мышей» занимает сейчас 13 кб, и это очень много. Оптимизировать её по размеру кода можно в десятке направлений. Мой прогноз: в рамках технологии ZXDev её размер после оптимизации будет не больше 3,5 кб. И такая оптимизация желательна не только для уменьшения размера этой игры. Сама возможность оптимизации должна показать скептикам на практике переход от макета, подготовленного очень быстро, до эффективного компактного релиза.

    Я приступал несколько раз к оптимизации процедур самого Laser Basic. А там столько лапши, что я испугался. Но если есть желание заняться оптимизацией (притом не только самой игры, но и библиотечных процедур, в ней использованных), я конечно помогу.

    Чтобы вы поняли насколько просто будет перейти к порту этой игры со Спектрума на Linux, DOS или Windows, Java или .NET — я могу подготовить консольную версию игры без графики. Можно конечно и с графикой, но вряд ли имеет смысл эмулировать Laser Basic на более других платформах с иным устроением экрана. Так что тогда придётся перевести игру в более платформенно-нейтральные абстракции. Что ж, и это возможно, только здесь ещё много работы. И тоже десятки направлений.
    Вложения Вложения

  5. #34
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,183
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию «Бега мышей»

    Руслану нужно что-то вроде лазер бейсика, только с меньшим расходом памяти и желательно с поддержкой 128 кб. Чтобы показать юзабельность ZXDev в этом случае на примере игры «Бега мышей» хотелось бы подробнее осветить вопросы оптимизации программ, разработанных с помощью этой среды.

    Итак, пункт 1 — наиболее очевидный. К игре подключен весь набор спрайтов LaserSprite2B, а мы можем ограничиться одной мышкой. Что я иллюстрирую приложенным архивом. Размер игры сократился до 6,8 кб. Это безусловно не предел, ведь мы почти не коснулись кода.

    Дальнейшая оптимизация по размеру может быть достигнута путём разбиения кода Laser Basic на отдельные подпрограммы, из которых к нашей игре будут подключены только использованные фрагменты. Это сложная и квалифицированная работа, к которой я питаю устойчивое отвращение. И, видимо, не только я.

    Но такая оптимизация дала бы нам несколько килобайт выигрыша. Ладно, не будем огорчаться. Я предлагаю другое. Чтобы и оптимизировать игру, и заодно чуть-чуть вывести её из абстракций Laser Basic'а, слишком ориентированных на Спектрум-экран с атрибутами, приходит такая идея: обозначить спрайт мышки, выводимый без атрибутов (что нужно для игры), как двухцветный спрайт с задаваемыми отдельно цветами фона и чернил. Это не бог весть какая удобная абстракция для современных высокотехнологичных игр, но для «мышек» вполне сгодится. По крайней мере, тут уже нету упоминания об атрибутах. Да и двухцветный спрайт на других платформах может быть, например, оранжево-фиолетовым, что недостижимо на Спеке.

    Сейчас на данный момент я реализовал аппарат прозрачных и непрозрачных двухцветных (моно) тайлов размером 8x8 точек для платформ Windows и Linux (используется библиотека SDL), а также Java ME. Для Спекки разбирать мышку на тайлы мне не хочется, это чуть-чуть неправильно — потому что вычисление смещений и вывод мышки по кусочкам придётся поднять на высокий уровень, теряя необходимую эффективность. Поэтому дальнейшая оптимизация будет выглядеть как вариативная:

    1. Просто оторвать процедуру Laser.PTBL от остального кода библиотеки. Побочным эффектом будет отрывание PTOR, PTXR и PTND, которые построены на этой же базе.

    2. Разработать процедуру вывода двухцветного спрайта (с задаваемыми цветами фона и чернил) произвольного размера. В Спектрум-варианте пусть не будут забыты: формат (важно для скорости вывода!) спрайта (в каком порядке лучше хранить массив пикселей), способ вывода (XOR, OR, AND, PUT, на первое время можно ограничиться выводом PUT), специфическая координатная система (пусть будет только вывод по координатам, кратным 8, т.е. знакоместам) и конечно корректная работа при выходе спрайта за пределы экрана. Отдельно хотелось бы не забыть возможность выхода за пределы экрана не только справа/снизу, но и слева/сверху.

    Подобную же процедуру разработать и для других платформ (перечисленных выше с SDL и Java ME). Это позволит чуть-чуть сместить акценты от Спектрума в пользу других платформ.

    Считаю полезными оба эти направления. В качестве чернового варианта можно было бы конечно побить «мышку» на моно-тайлы и выводить не с помощью Laser.PTBL, а по GrTiles.DrawMonoTile8x8, но это направление мне кажется не очень удачным. Для Спектрум-варианта игры — пока мы не откажемся от Laser'а полностью, заменив его другими процедурами, или пока Laser не будет разбит на фрагменты для смартлинковки — это не даст никакого выигрыша в размере кода, т.к. код Laser Basic'а всё равно пристёгнут к игре полностью.

    Судя по тишине — никому не интересно? Я ведь совсем не ставлю цели оптимизировать «Бега мышей» по самое небалуйся, просто размышляю на тему оптимизации в ZXDev и миграции кода на другие платформы возможными средствами XDev с точки зрения абстракций, которыми выражена эта игра. Можно взять и другую игру конечно. Только сперва несложную. В ZXDev и XDev ещё очень мало библиотек.
    Вложения Вложения
    Последний раз редактировалось Oleg N. Cher; 12.05.2014 в 15:19.

  6. #35
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    какие-то сложные ухищрения, вместо того, чтобы дать просто кросс-компилятор Basic-Z80 напрямую. Я сейчас пишу потихоньку кросс-компилятор Паскаля с подключаемыми асмовскими библиотеками.

  7. #36
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,183
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По-моему, это впихивать вывод графики в язык/компилятор вместо выноса на уровень библиотеки — это как раз и есть сложное (и ненужное) ухищрение. ZXDev — гибридная открытая на всех уровнях среда, отсюда и многочисленные возможности оптимизации, которые вообще недостижимы если зажилить исходник.

    Положа руку на сердце — много у твоего Паскаля будет юзеров? Твой прогноз? Потому что ZXDev и твой Паскаль — примерно продукты одной ниши. Ну можешь сыграть на сложившемся отношении к Паскалю, но и это слабое утешение. Даже синтаксически Оберон имеет преимущества, хотя и не так раскручен.

    А кросс-компилятор Basic-Z80 уже есть. И даже Mira Modula-2 есть (нативная!). Но давайте признаем: Z80 мёртв, надо культивировать простоту и компактность программирования на других, более доступных архитектурах. Так что считаю своё направление более интересным.
    Последний раз редактировалось Oleg N. Cher; 12.05.2014 в 15:38.

  8. #37
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я планирую запилить на своем компиляторе "Цивилизацию" потом. На асме ее сложно писать. Так что, один уже есть

  9. #38
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Но давайте признаем: Z80 мёртв
    простите, что влезаю, но на чем основано такое мнение?

  10. #39
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,611
    Спасибо Благодарностей отдано 
    2,183
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На количестве выпускаемых железных экземпляров данного процессора. Ну или совместимых с ним.

    Остаётся культура кодерского искусства, которая должна жить.

    Не хотелось бы скатываться в священные войны по этому поводу, так что я буду такие попытки игнорировать. Высказал своё мнение, ну и ладно.

    Меня больше интересует помощь опытных асм-кодеров в создании качественных библиотек, с одной стороны, и начинающие Спектрум-программеры как потенциальные пользователи ZXDev, с другой. Как раз за этим я здесь.

    Не хочется никого задеть, но как раз слабый приток новых программистов (да и юзеров тоже) на Z80-платформы и скатывание ветеранов в бряцание регалиями ещё больше укрепляют меня в этом мнении.

    Andrew771, так и скажи, что для себя делаешь. А «Цивилизацию» можно делать на готовом ZXDev, если, разумеется, гордость позволит. А то ZXDev уже юзабелен, а твоего компилера не знаю, дождёмся ли, а то уже годы и годы делаешь. И никто не говорит, что это просто — делать парсер и кодогенерацию. Но невообразимо трудно делать качественную кодогенерацию. Озвучь нам, пожалуйста, в каком году планируешь переплюнуть качество кода, выдаваемого SDCC (и, соответственно, ZXDev). А почему не присоединяешься к библиотекострою для ZXDev? Ведь это даже не смежная тема, а практически та же.

    Вот и получается "сам пью, сам гуляю, никого не одобряю".
    Последний раз редактировалось Oleg N. Cher; 13.05.2014 в 02:11.

  11. #40
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А почему не присоединяешься к библиотекострою для ZXDev?
    Признаюсь, что я вообще не понимаю, как в нем работать. Загрузил весь твой архив, там куча папок с файлами, куда дальше и что нажимать?
    Я привык набирать прогу на Паскале в текстовом файле или в самой среде, а потом нажать одну кнопку, оно компилится само в один выходной файл. Оберон - это продолжение Паскаля, так что приемлемо.

Страница 4 из 10 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Лазер сквейд. Однообразие ходов
    от ondas в разделе Игры
    Ответов: 55
    Последнее: 29.12.2023, 08:58
  2. Supaplex вроде...
    от transman в разделе Игры
    Ответов: 29
    Последнее: 09.07.2010, 02:25
  3. Ответов: 8
    Последнее: 18.04.2010, 11:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •