User Tag List

Показано с 1 по 10 из 531

Тема: ZX Like Pascal

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    - - - Добавлено - - -

    Правда, для такого придётся переработать подход.
    - Ассемблерные процедуры перенести из конца программы и сделать возможность ассемблерных вставок.
    - Коды спрайтов и карт можно заполнять при инициализации массивов в разделе var, например.

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

  3. #2

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Начал делать этот модуль, только для Delphi. Столкнулся с неопределённостью. В инструкции функция описана, например Delay(<x>); и непонятно какого типа переменную она может принимать. Лучше описывать в виде Delay(x:byte);, как пишут в помощи по тому же turbo pascal или delphi.
    Везде используется тип word, если не указан явно диапазон значений. Все арифметические выражения <arithmetic expression> 16-битные, т.е. тип word.

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Возникла такая идея по облегчению разработки, чтобы каждый раз не собирать образ для спектрума. Сделать язык синтаксически совместимым с турбопаскаль, тогда можно сделать модуль, реализующий твои специфические функции вроде работы со спрайтами, и подключив его спокойно делать игру на PC и отлаживать алгоритмы и т.д. Потом уже можно убрать этот модуль и скомпилировать для спектрума.
    Если интересно, могу помочь в написании такого модуля.
    Да, идея классная, я тоже над ней думал в начале разработки. Было бы очень удобно. Но требует большого количества человеко-часов, у меня столько нет сейчас. И вообще, сейчас занят написанием игры на этом Паскале, хочется попробовать в деле.

  4. #3

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Везде используется тип word, если не указан явно диапазон значений.
    Т.е., например функции работы с окнами, где указано "от 0 до 31" и т.д. имеют тип byte, а остальные word?

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Было бы очень удобно.
    Сегодня начал, набросал базовые функции очистки экрана, установки аттрибутов и прочих и вывод прямых спрайтов. Завтра буду делать отзеркаленные и окна может успею. С ассемблерными вставками я похоже погорячился. На PC их не получится писать как есть, и пока не вижу способа их реализовать кроссплатформенно.

    Пока получилось запустить ваш пример из "demo_sprites.PRG". Исходник выглядит вот так:
    Код:
    program TestZXPas;
    
    {$APPTYPE CONSOLE} // Эта директива для работы команд ввода/вывода.
    uses
      windows, ZXPas in 'ZXPas.pas';
    
    var
      x,y:byte;
      SPRITE01:array[0..60]of byte = (6,  0,0,  63, 96,204,152,145,163,130,139,
                                          0,1, 192, 96, 48, 24,200,200, 88, 80,
                                          1,0, 143,199, 97, 44, 43, 41, 45, 45,
                                          1,1, 208,208,176, 96,160,176,208,144,
                                          2,0,  45, 35, 47, 51, 20, 23, 16, 31,
                                          2,1,  48,160,160, 96, 96,160, 32,224);
    
      SPRITE02:array[0..60]of byte = (6,  0,0,   0, 63, 96,204,144,145,163,130,
                                          0,1,   0,192, 96, 48, 24,200,200, 88,
                                          1,0, 139,143,199, 97, 44, 47,109, 91,
                                          1,1,  80,208,208,176, 96,160,176,144,
                                          2,0,  83, 88,103, 87, 72, 99, 60,  3,
                                          2,1,  16, 48,176, 24,104,200, 56,192);
    
    begin
      // Инициализация модуля ZXPas
      ZXPas.init;
      while not ZXInitialized do
        sleep(10);
      // Далее можно писать программу для ZX Like Pascal
    
      border(0);
      textbackground(0);
      textcolor(6);
    //  clrscr;
      VirtScreenClear;
      textcolor(3);
      writeln('xxx');
      SpritePutClear(sprite01,7+2,25-14);
      SpritePutOr(sprite02,7+3,25-13);
      SpritePutXor(sprite02,7+4,25-12);
    
      SpritePutMirrorClear(sprite01,17+2,20-14);
      SpritePutMirrorOr(sprite02,17+3,20-13);
      SpritePutMirrorXor(sprite02,17+4,20-12);{}
    
      VirtScreenPut;
    
      // Ожидание закрытия графического окна и затем завершение программы
      repeat
        sleep(100);
      until not ZXInitialized;
      ZXPas.Deinit;
    end.

  5. #4

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Т.е., например функции работы с окнами, где указано "от 0 до 31" и т.д. имеют тип byte, а остальные word?
    они тоже имеют тип word, но если введешь или получится значение вне диапазона 0..31, то последствия с программой могут быть любыми - грязь на экране, зависание и т.д. Проверок выхода за диапазон нигде нет (ни в окнах, ни в массивах, ни в строках и т.д.), чтобы не ухудшать быстродействие. Теоретически, можно доделать и опционально прикрутить, но нужно время.

  6. #5

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    если введешь или получится значение вне диапазона 0..31, то последствия с программой могут быть любыми - грязь на экране, зависание и т.д. Проверок выхода за диапазон нигде нет (ни в окнах, ни в массивах, ни в строках и т.д.), чтобы не ухудшать быстродействие.
    Вот как, а я ввёл в каждой проверку. Значит, при отладке программа может правильно работать, а на спеке может глючить. Тогда я тоже уберу проверки.
    Кстати, проверку выхода спрайта за пределы экрана кто осуществляет? Функция или тоже сам программист?

  7. #6

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Кстати, проверку выхода спрайта за пределы экрана кто осуществляет? Функция или тоже сам программист?
    Это есть. Опционально можно включить флажок.

    - - - Добавлено - - -

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Да, богатые библиотеки это наше всё. Очень жаль, что я делаю их для ZXDev почти в одиночку.
    дык я тоже в одиночку делал. Кое-что содрал у других и вставил, большую часть сам написал.

  8. #7

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Предварительный результат http://zx-pk.ru/threads/24967-zx-lik...l=1#post882124


    Andrew771, какие алгоритмы растворения экрана и генерации звука? Хорошо бы их тоже реализовать в модуле.

  9. #8

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думаю насчёт реализации флагов вроде вывода на виртуальный экран, использования атрибутов... Нормально будет, если в модуль их можно будет передавать через параметры процедуры Init?

  10. #9

    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    294
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот скомпилированная программа с использованием этого модуля. Дополню другие функции и тогда можно выложить исходник.
    TestZXPas.rar

  11. #10

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Вот скомпилированная программа с использованием этого модуля. Дополню другие функции и тогда можно выложить исходник.
    TestZXPas.rar
    посмотрел, классно. То, о чем я мечтал, ты реализуешь.

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

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

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

Похожие темы

  1. PASCAL + MACRO11 (УКНЦ-ДВК).
    от hobot в разделе ДВК, УКНЦ
    Ответов: 341
    Последнее: 15.01.2022, 17:30
  2. Turbo Pascal для msx/msx2
    от Оззя в разделе MSX
    Ответов: 4
    Последнее: 23.02.2020, 23:59
  3. в розыске дисковая версия Pascal.
    от goblinish в разделе Программирование
    Ответов: 18
    Последнее: 16.08.2011, 16:30
  4. Pascal
    от Andrew771 в разделе Программирование
    Ответов: 22
    Последнее: 24.05.2011, 21:20
  5. Скопировать/вставить из/в HiSoft Pascal в эмуляторе
    от kit в разделе Программирование
    Ответов: 1
    Последнее: 05.02.2010, 15:35

Ваши права

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