User Tag List

Страница 32 из 35 ПерваяПервая ... 2829303132333435 ПоследняяПоследняя
Показано с 311 по 320 из 342

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

  1. #311

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я тут подумал, что к моменту, когда кто-нибудь созреет (а может это никогда не случится), я все забуду и вновь погружаться в тему будет проблематично. Поэтому вместо потенциального своего движка выкладываю исходник модифицированного движка CityAceE. Все желающие могут сами доработать под свои требования. Это уже вариант без аппаратной двойной буферизации, чтобы легко масштабировать до 8 или 16 цветов. Ну и оптимизировал по скорости. Очень внимательный зритель в некоторые моменты может заметить тиринг, но на мой взгляд терпимо, жить можно. Зато тут заметно шустрее, 30+ FPS вместо 12.5 FPS в urok7rom06c. Свое участие в данном проекте завершаю, разве что готов многоцветный вариант сделать, если кто-нибудь выцепит графику из аркады/амиги/атари ст.
    Тут нет пиксельной точности по горизонтали и разворотов спрайтов, но CityAceE планирует рассмотреть эти вопросы. Поэтому оставил некоторые рудименты специалистовского оригинала, хотя на векторе можно (и по-хорошему нужно) без них. Во многих случаях можно обойтись и без пиксельной точности.
    Еще тут привязка к одному спрайту, но доделать до нескольких несложно. Временные тайлы (куда впечатывается спрайт) будут не жестко 60-63, а какие назначите.
    Вложения Вложения

    Эти 4 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    aGGreSSor(13.08.2025), CityAceE(16.02.2024), Improver(16.02.2024), svofski(16.02.2024)

  2. #312

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Потихоньку копаю арифметику, с умножением кое-что получилось. Цитата из вики про алгоритм Карацубы "На практике алгоритм становится эффективнее обычного умножения при умножении чисел длиной порядка сотен двоичных (десятков десятичных) разрядов, на числах меньшей длины алгоритм не даёт существенного преимущества из-за большего, чем в наивном алгоритме, числа требуемых сложений, вычитаний и сдвигов." Но это про современные процы, а у 8080 нет аппаратного умножения даже малой разрядности, поэтому граница применимости сдвигается. Если коротко, то по моим экспериментам начиная с 32*32=64 (через 3 умножения 16*16=32 вместо 4х) Карацуба безоговорочно быстрее, хотя и не намного, т.к. только одна ступень. Понятно, что с увеличением числа ступеней выигрыш будет расти. Многоразрядные умножения не особо востребованы для 8080, но сферы применения найти можно, например в библиотеках плавучки с двойной точностью для ЯВУ.

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

    Oleg N. Cher(25.02.2024)

  3. #313

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процедура рисования эллипсов с примером и исходником. По сравнению с другим вариантом есть как преимущества так и недостатки.
    Недостатки:
    1. Медленнее
    2. Максимальные радиусы в 2 раза меньше
    3. Нет дуг
    Преимущества:
    1. Не нужно держать в памяти здоровенные таблицы
    2. Можно гораздо более точно задавать соотношение радиусов

    Процедура с колес, при желании можно оптимизировать и по скорости и по размеру. Алгоритм отсюда, если кому интересно.

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

    Забыл сразу написать - в комплекте идут тормозные, но компактные процедуры умножения, возможно кому-нибудь пригодятся.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	ellipse.gif 
Просмотров:	71 
Размер:	4.4 Кб 
ID:	80911  
    Вложения Вложения

    Эти 5 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver(18.06.2024), metamorpho(18.06.2024), Oleg N. Cher(07.04.2025), svofski(17.06.2024), Titus(17.06.2024)

  4. #314

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Портанул SINCOS CORDIC (автор Andre Adrian) на 8080 (мнемоники остались z80).
    Хотел ускорить "фонтан", но встроенная в бейсик реализация через ряды в модерновых версиях оказалась быстрее (в 2.5 медленнее). При замене части тригонометрии на LUT средствами бейсика фонтан ускоряется на четверть.
    Тем не менее целочисленные SINCOS для 8080 могут кому-нибудь пригодиться. Отличие от оригинала z80 - т.к. регистров у 8080 меньше, то на выходе результат остается в памяти, не в регистрах.
    Проблема в отсутствии у 8080 команд арифметического сдвига вправо. Если ограничить точность 2 или 3 байтами, то можно сделать весьма эффективную реализацию для 8085, там есть заветная команда ARHL.
    Вложения Вложения
    Последний раз редактировалось ivagor; 05.04.2025 в 07:49. Причина: добавил tasm.inc

    Эти 4 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver(04.04.2025), metamorpho(04.04.2025), Oleg N. Cher(07.04.2025), svofski(04.04.2025)

  5. #315

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    454
    Спасибо Благодарностей отдано 
    789
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    100 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Портанул SINCOS CORDIC (автор Andre Adrian) на 8080 (мнемоники остались z80).....
    А ROM есть ? Или в чём его компилировать ?

  6. #316

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Хотел ускорить "фонтан", но встроенная в бейсик реализация через ряды в модерновых версиях оказалась быстрее (в 2.5 медленнее). При замене части тригонометрии на LUT средствами бейсика фонтан ускоряется на четверть.
    а что вы хотите получить? Генерацию синусоиды заданной частоты можно реализовать без таблиц - на одном умножении и трех сложениях на каждый сэмпл.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

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

  8. #317

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    А ROM есть ? Или в чём его компилировать ?
    Это не законченная программа, только функция и пример вызова, без визуализации, поэтому в ROM смысла нет. Касательно компиляции - я забыл приложить tasm.inc, исправился

    Что касается грубых, но простых и быстрых аппроксимаций, можно глянуть например тут (оценка точности первого варианта здесь). В комментариях есть более точный (и сложный) вариант cos(pi x) = 4x^3-6x^2+1, x от 0 до 1.
    Компактные и быстрые генераторы таблиц для z80.
    Последний раз редактировалось ivagor; 05.04.2025 в 08:01.

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

    metamorpho(05.04.2025)

  9. #318

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,386
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,365
    Поблагодарили
    1,315 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пример (исходник и ROM) использования CORDIC для рисования полупериода SIN (сверху) и COS (снизу).
    На практике использовать для подобных целей CORDIC нецелесообразно (считает со сравнительно высокой точностью, поэтому долго), лучше взять например вышеупомянутые процедуры генерации таблиц.

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

    С другой стороны, те простые процедуры могут оказаться слишком грубыми для некоторых рисовальных применений. Есть компромисс - CORDIC, но уменьшить число байт до 1-2 и соответственно уменьшить число итераций (это резко ускорит расчет).
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	sincosdr.gif 
Просмотров:	32 
Размер:	952 байт 
ID:	82159  
    Вложения Вложения

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

    metamorpho(05.04.2025)

  10. #319

    Регистрация
    09.09.2024
    Адрес
    г. Рига, Латвия
    Сообщений
    51
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    а что вы хотите получить? Генерацию синусоиды заданной частоты можно реализовать без таблиц - на одном умножении и трех сложениях на каждый сэмпл.
    3 сложения то - на кой??? Всегда делал на одном умножении + одном сложении. Правда - на ARM.

  11. #320

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну да, можно умножение и сложение, но тогда нужно вначале косинус угла с шагом посчитать.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

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

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

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

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

Похожие темы

  1. Вычисление числа Пи на ассемблере
    от perestoronin в разделе Разное
    Ответов: 330
    Последнее: 06.08.2025, 15:04
  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

Ваши права

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