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

User Tag List

Страница 12 из 32 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 312

Тема: Программирование на ассемблере

  1. #111
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, нам такие фигуры не нужны, нам нужны другие фигуры.
    Ускорил и сократил оба варианта, особенно circle3. В circle3 важное изменение - координаты центра в DE, не в HL и значение DE не меняется процедурой, что удобно при рисовании нескольких окружностей со сдвигом относительно предыдущего положения.
    Вложения Вложения

  2. #112
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Идей по улучшению не появилось, поэтому закругляю circle. Все как было, только добавил коррекцию соотношения сторон, чтобы на реале были окружности, а не эллипсы. Приложил конфиг для emu, тот же самый, который выкладывал вместе с 3D крутилкой.
    Вложения Вложения

  3. #113
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,099
    Спасибо Благодарностей отдано 
    758
    Спасибо Благодарностей получено 
    641
    Поблагодарили
    396 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, обычно когда ты говоришь, что все пропало, это сигнал ждать, что через три дня появится версия в 2 раза быстрее, а если пожертвовать тремя байтами, то в 2.7. Делаем рыбу?
    Больше игр нет

  4. #114
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так бывало, но не каждый раз, думаю тут достаточно плотно получилось, по крайней мере сами вычисления, особенно в circle3. Отрисовка не самая быстрая, можно весь вывод точек заинлайнить, но в данном случае соревнования нет и пусть будет без спорта. Окружность созрела для рыбы, только может лучше вариант без коррекции AR, а то из-за сравнительно скоростной коррекции сокращается область рисования. Можно корректировать и иначе, но будет медленнее.

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

    Кстати, у этого быстрого способа коррекции есть еще одно достоинство - им легко корректировать координаты концов отрезков, что я и делал в 3D крутилке. Т.е. линии и окружности (и точки, конечно) можно рисовать в одной системе координат.

  5. #115
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сравнил с бейсиком 2.5, там используется тот же алгоритм. Заглушил рисование точек, оставил только базовый алгоритм - в бейсике в два с копейками раза медленнее чем в circle V2. Но львиную долю времени занимает рисование, в бейсике к нему еще вычисления пристегнуты (овал - 100%, дуга - скорее всего, дугу не проверял).
    Последний раз редактировалось ivagor; 01.12.2018 в 18:10.

  6. #116
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Альтернативный вариант коррекции соотношения сторон, позволяет рисовать по всему экрану без ограничений и он еще и быстрее (чем V2AR, просто V2 конечно все равно быстрее). Кроме того таблица коррекции теперь генерируется самой программой (можно, например, сгенерировать несколько таблиц для рисования разных эллипсов).
    Вложения Вложения
    Последний раз редактировалось ivagor; 01.12.2018 в 21:51.

  7. #117
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,099
    Спасибо Благодарностей отдано 
    758
    Спасибо Благодарностей получено 
    641
    Поблагодарили
    396 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor, а клиппинга по границам экрана нет?
    Больше игр нет

  8. #118
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В предыдущих вариантах я стремился к максимальной скорости и клиппинг там отсутствовал.
    Если главное - возможности, а не скорость, то можно использовать предлагаемую V3. Здесь есть:
    1) Клиппинг по границам экрана.
    2) Возможность рисовать эллипсы. 16 коэффициентов сжатия (от 1/16 до 16/16) по каждой оси. Числитель коэффициента по X задается в D, по Y - в E. Перед первым вызовом circle надо вызвать IniCircle.
    3) Возможность рисовать дуги с дискретностью 2pi/8. Маска дуг в регистре С, по часовой стрелке. Дополнительно можно посмотреть пример.
    Обращаю внимание, что в V3 радиус в регистре B.
    Пример клиппинга и рисования эллипсов - circleClipAndEllip
    Пример рисования дуг - circleArc
    Примеры разделил для наглядности, конечно же можно комбинировать возможности и, например, рисовать дуги эллипсов с клиппингом.
    Сами процедуры рисования в обоих примерах одинаковые.
    Вложения Вложения

  9. #119
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В детстве завидовал быстрому корветовскому paintу. Корветовский бейсик медленно рисует круги, зато очень быстро закрашивает. Проблема paint в векторовском бейсике связана с тем, что процедура там чисто пиксельная и никак не использует байтовую структуру экрана для ускорения. Зато процедура очень компактная и простая. Взял ее за основу и перевел в двухцветный вариант. А потом оптимизировал за счет комбинированного использования байтов/пикселов. Процедура ускорилась на (десятичный) порядок (сравниваю двухцветные варианты, цветной еще намного медленнее)! Жалко не сохранил первый вариант, было бы видно, как стало заливать в 10 раз быстрее. Теперь корветовская процедура всего в два с копейками раза быстрее Возможно стоило ее взять за основу.
    Нужно конечно отметить, что корветовский paint работает с 8 цветным экраном, а мой вариант с 2х цветным, но корветовский "ускоритель" волшебным образом в вектор не пересадишь. Прикидываю, что при переходе к цветному варианту замедление было бы в худшем случае раза в 4, что все равно намного быстрее бейсиковской процедуры. Но такой вариант был бы довольно большим. А вот с z80 замедление было бы не таким существенным, думаю раза в 2.
    Пока выкладываю "тизер" без исходника, может еще пооптимизирую.
    Вложения Вложения

  10. #120
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,781
    Спасибо Благодарностей отдано 
    635
    Спасибо Благодарностей получено 
    1,749
    Поблагодарили
    1,012 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Реализовал еще один мечт детства, касающийся paint - заливку с маской/шаблоном. С ходу не вспомнил, где можно подсмотреть и изобрел свой велосипед. Тоже пока без исходника, надо еще пооптимизировать и потестировать.
    Мельком глянул корветовский paint и понял, что вряд ли буду его подробно разбирать, очень уж там все оптимизировано. А некоторые решения и вовсе неприменимы для вектора, например заливка строки стеком.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	paintV4mask.png 
Просмотров:	97 
Размер:	2.7 Кб 
ID:	67223  
    Вложения Вложения
    Последний раз редактировалось ivagor; 08.12.2018 в 12:19.

Страница 12 из 32 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Вычисление числа Пи на ассемблере
    от perestoronin в разделе Разное
    Ответов: 311
    Последнее: 12.02.2024, 17:12
  2. Ответов: 275
    Последнее: 16.12.2018, 23:01
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Продам книгу- AMIGA: программирование на ассемблере
    от Doctor Max в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 01.03.2012, 00:35
  5. Подпрограмма на ассемблере в памяти?
    от jimled в разделе Программирование
    Ответов: 1
    Последнее: 29.11.2009, 06:46

Ваши права

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