User Tag List

Страница 142 из 171 ПерваяПервая ... 138139140141142143144145146 ... ПоследняяПоследняя
Показано с 1,411 по 1,420 из 1705

Тема: Электроника БК 0010-01 vs ZX.

  1. #1411

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Код построения таблицы развёрнутых байтов можно посмотреть в моей игре Fist SPC с адреса 35770. Исходников, конечно, нет - всё писалось в отладчике.
    я знаю как строить таблицы.
    как ты разворачиваешь?
    С уважением,
    Jerri / Red Triangle.

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

  3. #1412

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посмотри код, там индекс таблицы R0 подаётся на вход подпрограмме разворота.



    В данном случае спрайты хранятся в 1-битном виде, а при развороте заодно и раскрашиваются в цвет (байт превращается в слово).
    Последний раз редактировалось Manwe; 04.04.2020 в 22:59.
    manwe.pdp-11.ru

  4. #1413

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Посмотри код, там индекс таблицы R0 подаётся на вход подпрограмме разворота.



    В данном случае спрайты хранятся в 1-битном виде, а при развороте заодно и раскрашиваются в цвет (байт превращается в слово).
    это не совсем то и это медленно.
    С уважением,
    Jerri / Red Triangle.

  5. #1414

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Ты говорил про разворот спрайтов
    Дай пример кода для бк
    Цитата Сообщение от jerri Посмотреть сообщение
    это не совсем то и это медленно.
    Про разворот спрайтов я и говорил, что в реальном времени медленно, поэтому надо по таблице. После того как построена таблица (по фигу, что медленно), разворот спрайтов на БК делается так:

    Код:
    MOVB (R1)+,R0 ; get sprite pixels
    MOVB Mirror(R0),(R2)+ ; draw mirrored pixel
    R1 - адрес исходного спрайта
    R2 - адрес куда рисовать развёрнутый спрайт
    Mirror - адрес таблицы в памяти

    Если исходный спрайт хранится в 1-битном виде, а надо рисовать в 2-битном, то между двумя MOV'ами появляется ещё команда ASL R0.
    manwe.pdp-11.ru

  6. #1415

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Про разворот спрайтов я и говорил, что в реальном времени медленно, поэтому надо по таблице.
    на самом деле я ожидал разворот для нормальных 4х цветных спрайтов

    но по больному счету по барабану.

    После того как построена таблица (по фигу, что медленно), разворот спрайтов на БК делается так:

    Код:
    MOVB (R1)+,R0 ; get sprite pixels
    MOVB Mirror(R0),(R2)+ ; draw mirrored pixel
    R1 - адрес исходного спрайта
    R2 - адрес куда рисовать развёрнутый спрайт
    Mirror - адрес таблицы в памяти

    Если исходный спрайт хранится в 1-битном виде, а надо рисовать в 2-битном, то между двумя MOV'ами появляется ещё команда ASL R0.
    таблица в R0?
    С уважением,
    Jerri / Red Triangle.

  7. #1416

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,965
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    314
    Поблагодарили
    237 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    на самом деле я ожидал разворот для нормальных 4х цветных спрайтов

    но по больному счету по барабану.
    зря ты так, очень даже не по барабану
    Прихожу без разрешения, сею смерть и разрушение...

  8. #1417

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    таблица в R0?
    Сначала в R0 загружаются пиксели оригинального спрайта (один байт, 4 точки). В следующей команде это число R0 используется как индекс в массиве Mirror. В массиве Mirror лежат перевёрнутые пиксели (по 4 штуки в байте).

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

    Цитата Сообщение от jerri Посмотреть сообщение
    на самом деле я ожидал разворот для нормальных 4х цветных спрайтов но по больному счету по барабану
    Чуть-чуть программу надо изменить: после MFPS (Move from processor state – сохранение бита C в стек) добавить ROR R1. Ну и цикл будет уже не 10(8), а 4.


    P.S. на БК в ассемблерных командах аргументы записываются слева направо: source, destination
    Последний раз редактировалось Manwe; 05.04.2020 в 14:53.
    manwe.pdp-11.ru

  9. #1418

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Сначала в R0 загружаются пиксели оригинального спрайта (один байт, 4 точки). В следующей команде это число R0 используется как индекс в массиве Mirror. В массиве Mirror лежат перевёрнутые пиксели (по 4 штуки в байте).
    ага т.е вот этот разворот
    Код:
    MOVB (R1)+,R0 ; get sprite pixels
    MOVB Mirror(R0),(R2)+ ; draw mirrored pixel
    отжирает 6 байт

    слишком много

    можно было выровнять таблицу и сократить до 4х байт.


    Чуть-чуть программу надо изменить: после MFPS (Move from processor state – сохранение бита C в стек) добавить ROR R1. Ну и цикл будет уже не 10(8), а 4.
    P.S. на БК в ассемблерных командах аргументы записываются слева направо: source, destination
    я знаю

    а зачем 8 если 4х вполне достаточно.
    С уважением,
    Jerri / Red Triangle.

  10. #1419

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    можно было выровнять таблицу
    Как? С нулевого адреса что ли её положить поверх векторов прерываний?

    Цитата Сообщение от jerri Посмотреть сообщение
    а зачем 8 если 4х вполне достаточно.
    Изначально в той программе 8 монохромных точек (байт) переводятся в 8 цветных точек (слово). "10" - это 8 в восьмеричной системе.
    Последний раз редактировалось Manwe; 06.04.2020 в 00:10.
    manwe.pdp-11.ru

  11. #1420

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Как? С нулевого адреса что ли её положить поверх векторов прерываний?
    а разве при загрузке байта старшая часть регистра обнуляется?

    MOVB (R1),R0
    Источником в этой команде является младший байт ячейки, адрес которой хранится в R1 (т.е. ячейки MEM). (Не забывайте, что адрес слова совпадает с адресом его младшего байта.) Приемником же служит младший байт регистра R0. Байтовая команда, в которой используется регистровый способ адресации, всегда обращается к младшему байту указанного регистра. Старший байт регистра не имеет адреса, и поэтому ассемблер интерпретирует запись R0+1 как ссылку на регистр R1.

    значит делаем так
    выравниваем таблицу разворотов до параграфа
    в R0 заносим адрес таблицы разворотов

    Код:
    mov r0,Mirror
    
    MOVB (R1)+,R0 ; get sprite pixels
    MOVB (R0),(R2)+ ; draw mirrored pixel
    Последний раз редактировалось jerri; 05.04.2020 в 20:23.
    С уважением,
    Jerri / Red Triangle.

Страница 142 из 171 ПерваяПервая ... 138139140141142143144145146 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 78
    Последнее: 28.02.2025, 21:19
  2. БК-0010.01 и я
    от Hunta в разделе БК-0010/0011
    Ответов: 59
    Последнее: 07.10.2018, 19:55
  3. БК-0010.01 и я
    от Hunta в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 07.05.2018, 23:43
  4. Различия БК 0010 БК 0010Ш БК 0010-01
    от Mad Killer/PG в разделе БК-0010/0011
    Ответов: 12
    Последнее: 16.10.2011, 13:37
  5. [Питер] Продам Электроника Б3-18А, Электроника МК 52
    от russoturisto в разделе Барахолка (архив)
    Ответов: 6
    Последнее: 05.02.2010, 11:15

Ваши права

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