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

User Tag List

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 33

Тема: Спрайты и машинные коды

  1. #11
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ares Посмотреть сообщение
    Добрый день уважаемые спектрумисты,у меня к вам очередной вопрос .
    Я в ART STUDIO нарисовал спрайт как мне сделать что бы он появился на экран и двигался в том направлении в котором я задам ?
    Спрайт у меня под адресом #5F00
    Я бы рекомендовал вначале освоить скроллирование спрайта размером в 1 знакоместо.
    Для скроллинга по горизонтали может быть использована команда побитового смещения влево/вправо

    ; HL - адрес ячейки экрана
    LD C,8
    LOOP:LD A,(HL)
    RL A
    LD B,A
    AND %11111110
    LD (HL),A
    DEC HL
    LD A,B
    AND %00000001
    LD (HL),A
    INC H
    DEC C
    JR NZ,LOOP

    Для ситуации сдвига вправо модифицируйте код самостоятельно.

    Для смещения спрайта вверх или вниз достаточно просто скопировать значение ячеек памяти в строку ниже/выше:

    ; HL - адрес ячейки экрана
    LD C,8
    LD A,7
    ADD A,H ; смещаем на 7 пикселей вниз
    LD H,A
    LD D,H ; скопировали из HL в DE
    LD E,L
    CALL DOWN_DE
    LOOP:LD A,(HL)
    LD (DE),A
    LD D,H ; переместили HL в DE
    LD E,L
    CALL UP_HL ; переместили указатель на предыдущую пиксельную линию
    DEC C
    JR NZ,LOOP

    DOWN_DE - это процедура смещения вниз на пиксельную линию адреса в DE
    UP_HL - меняет адрес в HL на пиксельную линию выше.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  2. #12
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV Посмотреть сообщение
    LD A,(HL)
    RL A
    LD B,A
    AND %11111110
    LD (HL),A
    DEC HL
    LD A,B
    AND %00000001
    LD (HL),A
    XOR A
    RL (HL)
    DEC HL
    RLA
    LD (HL),A

  3. #13
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    XOR A
    RL (HL)
    DEC HL
    RLA
    LD (HL),A
    Дима
    Ты новичка решил экстремальным кодом сломать? Пусть сам до этого дойдёт
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  4. #14
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как лучше выводить спрайты?
    Полностью очищать вирт. экран, затем отрисовывать в нём и выводить на экранную область или же выводить спрайт непосредствнно на экран, а при перемещении стирать за ним след ?
    Последний раз редактировалось GriV; 20.05.2012 в 12:01.

  5. #15
    Guru
    Регистрация
    15.01.2005
    Адрес
    USSR
    Сообщений
    2,038
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Могу признаться, что в "Приключении в метро" спрайты отображаются без привязки к координатам (если нужно - выполняется сдвиг), но там всё укладывается в прерывание. Процедура излишне универсальна (в качестве пародии на самого себя я тогда (в 1989) сделал летающий по экрану фак, и эта фигня потом дописывалась распространителями на диски на радиорынках). Технология XOR-наложения построена на совсем ином принципе. Я делал, но практического применения не было (не было готового программного продукта; была идея сделать игру про Руцкого, громящего со штурмовика Белый Дом Ельцина, даже дошло до готового движущегося фона и летящего над ним по XOR самолёта, но так и осталось).

  6. #16
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    263
    Спасибо Благодарностей получено 
    274
    Поблагодарили
    206 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ALKO, если объектов на экране мало и ты уверен что отрисуешь их быстро, то

    1 сортируешь координаты объектов по высоте
    2 сохраняешь список с размерами для удаления в следующей фазе
    3 ждешь начало обновления экрана
    4 удаляешь старые объекты (критичная по времени часть)
    5 рисуешь новые от верхних к нижним (очень критичная по времени часть)

    если не хватает скорости то

    рисуешь в буферном экране

    если объектов мало

    1 рисуешь объекты сохраняя фон в суббуфере
    2 выводишь экран
    3 восстанавливаешь фон из суббуфера

    если обьектов много, или нет памяти под суббуфер то

    определяешь таблицу восстановлений

    1 рисуешь объекты отмечая в таблице где они портят фон
    2 выводишь буферный экран
    3 восстанавливаешь на экране фон в соответствии с таблицей
    С уважением,
    Jerri / Red Triangle.

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

  8. #17
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    А как лучше выводить спрайты?
    Полностью очищачь вирт. экран, затем отрисовывать в нём и выводить на экранную область или же выводить спрайт непосредствнно на экран, а при перемещении стирать за ним след ?
    Как удобнее, так и делается. Феншуйного рецепта тут нет.
    Я полностью стираю экран и заново вывожу объекты, из-за чередования основного и 128 экрана нет проблем с наложениеи старых/новых спрайтов при обновлении экрана, и получается быстро - 50fps.
    Последний раз редактировалось GriV; 20.05.2012 в 12:02.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  9. #18
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Интересен процесс переноса спрайтов (без маски) познакоместно.
    есть png картинки с размерами кратными 8-ми пикселям по X и Y.
    При помощи Bmp2Scr вывожу на screen$, там последовательно каждое знакоместо заношу в память, даже те , где все восемь байтов по нулям.....
    А как сделать по знакоместам, которые нужны, исключая пустые знакоместа? и что б ещё координаты этих знакомест сохранялись?

  10. #19
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оригинальная идея описана тут
    Мной сделано на ассемблере тут - можно поковырять сырцы. Оригинал тоже на ассемблере, но мой вариант выдирания и вдирания на экран обратно должен быть быстрее в теории.

  11. #20
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Оригинальная идея описана тут
    В той идее врукопашную нужно массив DEFB прописывать.

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Спрайты из игр
    от newart в разделе Графика
    Ответов: 16
    Последнее: 11.08.2022, 07:52
  2. Спрайты в бейсике
    от AER в разделе Для начинающих
    Ответов: 13
    Последнее: 28.03.2010, 11:50
  3. Коды в демах.
    от DINAMIX в разделе Демо
    Ответов: 2
    Последнее: 19.04.2008, 02:23
  4. Коды бессмертия к играм - нужны?
    от new в разделе Игры
    Ответов: 5
    Последнее: 07.04.2008, 02:40
  5. Коды к игре RIPTOFF.
    от new в разделе Игры
    Ответов: 4
    Последнее: 15.03.2007, 10:24

Ваши права

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