User Tag List

Показано с 81 по 90 из 94

Тема: Вывод спрайта любой ширины с точностью до пикселя.

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #30

    Регистрация
    20.01.2021
    Адрес
    г. Санкт-Петербург
    Сообщений
    804
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    298
    Поблагодарили
    92 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Написал свою обвязку. И вижу определённые траблы в предложенной Санчезом процедуре спрайтовалки по таблице. Результат:



    Первый косяк - видимо, где то ошибается на один бит в сдвигах в его процедуре, потому что самый левым выводит тот, который должен быть самым правым (в пределах 8 бит). Видно на образе мышки, как две вертикальные полоски в начале знакомест. Возможно также не правильно генерится сама таблица. Таблицу положил по красивому адресу #c000. А в своём коде я уверен на 100%. Кто разберётся, в чём проблема?

    Второй косяк ещё более неожиданный. Заявлено, что спрайтоваться будет в любое место в пределах координат 0..255,0..191. И фигушки. По горизонтали не может вывести в диапазоне 247...255, т.е. в последнем правом знакоместе экрана нет попиксельного позиционирования. На любой Х в последнем знакоместе выводит всегда в координату 247 без сдвига.

    Третий косяк, - нифига не пойму в каком виде нужно пихать спрайт на вход, с этими новомодными выпендрёжами. Скормил стандартные маску и спрайт - не правильно выводит. Проинвертировал маску и спрайт, - снова не правильно выводит (как на картинке). Так как надо то?

    Что, никто не тестил сие произведение?

    Вот код без клипинга. Всё чётко и понятно:

    Код:
    ;вывод спрайтов любой ширины, со сдвигом от 1 до 7
    ;104 такта на один байт с маской, 71680/104 = 689 байт за кадр 
    ;Вывод одного байта с маской:
    ;HL' = адрес спрайта
    ;D' = старший байт адреса таблицы смещений offset_tab
    ;BC' = данные предыдущего байта (в начале каждой линии нужно обнулять)
    ;HL = адрес на экране 
            ;6656 тактов вывод 2х2 стрелки с маской + небольшой обвес
            ld hl,mouse_Spr
            ld d,#c0           ;offset_tab
            ld bc,0
            exx
            ld hl,(XYMOUSE) ;кладём в hl X и Y мышки
            call SCRADR     ;получаем на выходе в hl адрес в экранной области
            ld b,16
    loopspr call sprite
            inc hl
            call sprite
            exx
            ld bc,0             ;на это, кстати, никак не реагирует, хотя написано, что должно
            exx
            call SCRAD3     ;down_hl
            dec hl              ;по сути перевели на следующую строчку в экране
            djnz loopspr
    Помогайте разобраться, а то Санчеза ждать можно годами, и так и не дождаться.

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

    Ща обратил внимание,что мы не передаём в коде точного позиционирования по Х. Посему "второй косяк" это не косяк. Надо научиться передавать подпрограмме спрайтовалки СДВИГ. Как? Через регистр D' может? И я не правильно понял по описанию для чего он нужен. И не правильно закодировал. Тогда, что в него надо правильно передавать и в каком формате?
    Последний раз редактировалось DragonsLord; 12.04.2021 в 09:24.

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

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

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

Похожие темы

  1. Вывод спрайта по X,Y
    от drbars в разделе Программирование
    Ответов: 7
    Последнее: 20.03.2022, 10:43
  2. Спрайтовывыводилка с пиксельной точностью без таблиц
    от shadwork в разделе Программирование
    Ответов: 11
    Последнее: 20.08.2015, 20:23
  3. Поворот спрайта
    от Soplik в разделе Программирование
    Ответов: 22
    Последнее: 03.10.2011, 21:53
  4. куплю любой спекипум(минск)
    от fergus в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 30.04.2009, 00:49
  5. Поворот спрайта
    от acidrain в разделе Графика
    Ответов: 9
    Последнее: 06.12.2008, 14:27

Ваши права

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