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

User Tag List

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

Тема: Портирование игр с PC на БК

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    blackmirror, пытаюсь осмыслить как применить эту хитрую таблицу на практике.

    Возьмём какой-нибудь байт из исходного спрайта, например такие 4 точки:
    ◼︎◼︎◼︎◼︎

    В таблице ему должно соответствовать несколько слов:
    ◼︎◼︎◼︎◼︎◻︎◻︎◻︎◻︎
    ◻︎◼︎◼︎◼︎◼︎◻︎◻︎◻︎
    ◻︎◻︎◼︎◼︎◼︎◼︎◻︎◻︎
    ◻︎◻︎◻︎◼︎◼︎◼︎◼︎◻︎

    Значком ◻︎ я обозначил точки произвольного цвета, конкретные значения нас не интересуют.
    В исходном спрайте рассматриваемые 4 точки должны храниться не в виде цветов (11001001), а в виде порядкового номера в таблице.

    Чтобы нарисовать наши 4 точки, мы достаём число из данных спрайта, умножаем его на 2 (потому что таблица состоит из слов, а не из байтов), берём значение из этой таблицы, сделав отступ в таблице, если надо. И ещё применяем маску.
    Код:
    MOVB (R1)+,R2    ; взяли данные из спрайта
    BIC #177400,R2   ; сбросили старшие биты, можно маску сброса хранить в каком-нибудь регистре
    ASL R2           ; умножили на два, получили индекс в таблице
    Дальше если надо вывести точки без сдвига, делаем так:
    Код:
    MOV TABL(R2),R2   ; забрали 8 точек из таблицы
    BIC #377,R2       ; сбросили ненужные 4 точки, маску опять же можно хранить в регистре
    BIS R2,(R3)       ; вывели оставшиеся 4 точки на экран
    Если надо вывести точки со сдвигом на одну, делаем так:
    Код:
    MOV TABL+2(R2),R2   ; забрали 8 точек из таблицы
    BIC #140077,R2      ; сбросили ненужные 4 точки по маске
    BIS R2,(R3)         ; вывели оставшиеся 4 точки на экран
    Сдвиг на две точки:
    Код:
    MOV TABL+4(R2),R2   ; забрали 8 точек из таблицы
    BIC #170017,R2      ; сбросили ненужные 4 точки по маске
    BIS R2,(R3)         ; вывели оставшиеся 4 точки на экран
    Сдвиг на три точки:
    Код:
    MOV TABL+6(R2),R2   ; забрали 8 точек из таблицы
    BIC #176003,R2      ; сбросили ненужные 4 точки по маске
    BIS R2,(R3)         ; вывели оставшиеся 4 точки на экран
    Довольно изящно. Да ещё и организация таблицы умная: точки ◻︎ - не абы что, а цвета для других входных данных.
    Но изящно оно пока мы выводим изображение в чётные адреса экрана.
    Как только надо вывести 4 точки по нечётному адресу, появляются костыли:
    Код:
    MOVB (R1)+,R2       ; взяли данные из спрайта
    BIC #177400,R2      ; сбросили старшие биты
    ASL R2              ; умножили на два, получили индекс в таблице
    MOV TABL+6(R2),R2   ; забрали 8 точек из таблицы
    BIC #176003,R2      ; сбросили ненужные 4 точки по маске
    BISB R2,(R3)+       ; вывели часть точек на экран
    SWAB R2             ; переключились на оставшиеся точки
    BISB R2,(R3)        ; вывели оставшуюся часть точек на экран
    А это уже довольно долго.


    P.S. На самом деле порядок точек на экране слева направо соответствует порядку битов справа налево, но это детали. Просто изображённые мной цветные квадратике будут выводиться на экран БК в обратном порядке.
    Последний раз редактировалось Manwe; 13.10.2018 в 11:13.
    manwe.pdp-11.ru

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

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

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

Похожие темы

  1. Портирование Lode Runner БК->УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 103
    Последнее: 12.12.2020, 04:04
  2. Ответов: 21
    Последнее: 04.10.2019, 18:03
  3. Портирование Stop the Express
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 90
    Последнее: 21.11.2018, 09:46
  4. Ответов: 38
    Последнее: 23.11.2014, 16:00

Ваши права

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