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

User Tag List

Страница 20 из 54 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя
Показано с 191 по 200 из 531

Тема: ZX Like Pascal

  1. #191
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AzAtom, получается, что алгоритмы почти совпадают, а меньшая эффективность только из-за использования паскаля и 16 разрядных переменных. Вообще отсутствие указателей и оператора goto сильно мешает написать эффективный алгоритм рисования линии на чистом паскале. В такой ситуации проще весь алгоритм делать на асме, а не только рисование точки.

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

    По умолчанию

    blackmirror, интересный вариант. Есть замечания.

    Цитата Сообщение от blackmirror Посмотреть сообщение
    PT = 1 SHL (X1&7) //вычисляем маску точки
    ER = 0 //устанавливаем ошибку в ноль
    Старший бит на экране находится слева, поэтому надо PT = 80h SHR (X1&7),
    и ошибку надо в половину смещения: ER = MIN(DX, DY) DIV 2, иначе, линия будет ниже настоящей и последовательные линии будут с длинными ступеньками на стыках.

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

    По умолчанию

    Наконец, дописал некоторые функции и немного намарафетил свой модуль. Написан по описанию компилятора ZX Like Pascal версии 0.908. zxpas-v0.908.rar
    Модуль сделан на Delphi 4.
    Имеющиеся несоответствия описаны в самом начале модуля.
    - Не реализованы функции write, writeln, read, readln. При их использовании происходит ввод-вывод через консоль и необходима директива компилятора {$APPTYPE CONSOLE}.
    - Плохо реализована функция очистки массива. Скорее всего, будет нормально очищать одномерный массив и первую строку двумерного массива.
    - Функция SoundEffect выдаёт немного более быстрый звук, чем получается на эмуляторе. Возможно, это связано с тем, что я не учитываю остановки процессора (wait). Так же, продолжительность одного эффекта ограничивается 10 секундами. По алгоритму максимальная длительность звукового эффекта может превышать 10 минут.


    Реализованы дополнительные функции, отсутствующие в ZX Like Pascal:
    -function ZXInitialized:boolean; // Возвращает true, если графическое окно создано и можно выводить графику.
    -procedure TextOut(x,y:word;text:string); // Вывод текста по указанным координатам знакоместа.
    -procedure PutPixel(x,y,e:word); // Установка точки по координатам X,Y. E=0 бит сбрасывается, E=1 бит устанавливается.
    -procedure Line(x1,y1,x2,y2:word); // Рисование линии от X1,Y1 до X2,Y2. Биты всегда устанавливаются.
    -procedure ReadMouse(var x,y,b:word); // Возвращает координаты мыши 0<=X<=255, 0<=Y<=191 и нажатые кнопки в виде 00000MRL.

    Так же, в архиве программа, использующая данный модуль и скомпилированный исполняемый файл для windows.

    Коротко принцип работы.
    Для работы используются 2 массива по 6912 байт, соответствующие экрану настоящего Spectrum. Один является аналогом реального экрана, второй аналог виртуального экрана и все графические функции работают в соответствии с принципами Spectrum.
    При инициализации модуля запоминаются режимы работы, которые должны соответствовать установленным галкам компилятора ZX Like Pascal. Так же, запускается вспомогательный поток, в котором создаётся окно и таймер, срабатывающий каждые 32 мс.
    По сообщению от таймера происходит преобразование массива с реальным экраном spectrum в windows bitmap, который, затем, отображается на экране.

  4. Этот пользователь поблагодарил AzAtom за это полезное сообщение:

    shapipovo (21.07.2019)

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

    По умолчанию

    Обновил версию до 0.909, в первом посте.
    Теперь можно:
    - инициализировать значения переменных и массивов при объявлении;
    - выводить карты не только по 2х2 знакоместа на клетку, но и по 1х1 знакоместо на клетку;
    - заменены непривычные ArrayType[N] на стандартные паскалевские Array[1..N] of Type.

    Также добавлен Генератор спрайтов ZxSprGen V.2.0.1 от AzAtom, спасибо еще раз огромное тебе!

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

    Цитата Сообщение от AzAtom Посмотреть сообщение
    Нарушен порядок вычисления выражений. Написал if (ggx+5)>29 then ggx:=29-5; и тоже правильно сгенерировал код, загрузил переменную, добавил к ней 5 и сравнил с 29. Надо чтобы сначала вычислялись выражения, затем проводилось сравнение.
    Да, со скобками нужно писать. В логических выражениях сейчас всё читается слева направо, если не стоят скобки.
    Последний раз редактировалось Andrew771; 16.08.2017 в 23:53.

  6. #195
    Master
    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    834
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    96
    Поблагодарили
    65 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Когда будет поддержка типов записей?
    ¡Un momento, señor fiscal!


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

    По умолчанию

    Когда-нибудь Опять времени стало мало на разработку.
    А вообще, в ближайших изменившихся планах - поддержка 8-битных вычислений без типа Word (опционально) вместо нынешних 16-битных и для Byte, и для Word.
    16-битные вычисления расходуют больше памяти и меньше по быстродействию, но в большинстве динамичных игр Word не нужен или мало используется. Кстати, записи тоже будут тормозить расчет адресов, поэтому отложены на светлое будущее.

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

  9. #197
    Master
    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Когда будет поддержка типов записей?
    У меня уже есть Работает, правда, всё это очень медленно, но мы и над этим когда-нибудь поработаем
    Код:
    type
    	tPoint=record x,y:byte; end;
    
    procedure putpixel(const point:tPoint);
    var
    	x,y,a:word;
    begin
    	x:=point.x;
    	y:=point.y;
    	a:=((y and 7) shl 8) + ((y and $38) shl 2) + ((y and $c0) shl 5);
    	a:=a+$4000+(x shr 3);
    	mem[a]:=mem[a] or (128 shr (x and 7));
    end;
    
    procedure test_rec;
    var
    	i:byte;
    	pnt:tPoint;
    begin
    	for i:=1 to 100 do
    	begin
    		pnt.x:=i*2;
    		pnt.y:=i;
    		putpixel(pnt);
    	end;
    end;
    
    begin
    	// ...
    	test_rec;
    	// ...
    end.
    Нажмите на изображение для увеличения. 

Название:	Снимок экрана от 2018-03-15 18-19-47.png 
Просмотров:	224 
Размер:	7.9 Кб 
ID:	64631

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

    По умолчанию

    Класс! Будем ждать твой компиль тоже, хотца свои наработки на Спек перекомпилировать, где типов записей полно.

  11. #199
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Забыл, какую тулзу юзал от Эндрю771, которая перегоняла BMP-шки в подпрограмму отрисовки спрайтов и шестнадцатиричных данных.
    Напомните, плиз.

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

    Хотя вон смотрю есть некий ZxSprGen, пощупаю его.

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

    По умолчанию

    Рекомендую ZxSprGen от AzAtom, он полностью подходит.

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

    А моя тулза тут

Страница 20 из 54 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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