User Tag List

Страница 10 из 23 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 228

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

  1. #91

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,411
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    180
    Поблагодарили
    139 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    /* Но текущую комнату придётся хранить в памяти в распакованном виде чтобы сверяться с расположением препятствий. */
    Да, я так и хочу сделать.

    /*Спрайты лабиринта (тайлы) все одинакового размера, их удобно хранить как у меня сделано. */
    С этим согласен.

    А насчет спрайтов, в принципе без разницы (время компиляции не критично), мне просто так привычней и можно подправить что-нибудь и сам спрайт оформить в виде структуры объекта..

    /* Универсальная процедура всегда медленней. */
    Я думал не совсем об универсальной процедуре, а о выделении той части которая будет общая для всех.

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

  3. #92

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

    По умолчанию

    У меня возникла идея как выводить тайлы лабиринта ещё быстрее. Там будет очень мало общего кода с процедурой вывода единичного спрайта.

    В архиве, что я выкладывал, пережатые и подправленные вручную спрайты пушки и платформы - пользуйся на здоровье!
    Последний раз редактировалось Manwe; 30.09.2018 в 10:55.
    manwe.pdp-11.ru

  4. #93

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,898
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    321
    Поблагодарили
    245 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Довольно очевидное решение, но неэффективное: требует промежуточной памяти, имеет сложности с наложением на фон и пересечением с другими объектами и т.п.
    Моя процедура оптимизирована: рисует столбец точек и если в нём остались только чёрные точки, то не рисует их и переходит сразу к следующему столбцу.
    хмм насчет наложения - нифига подобного
    в оригинале так и сделано - ни масок ни гладкого наложения
    грубо бросаем на экран
    если один спрайт цепляет другой значит есть пересечение.

    Да все всё поняли, мы обсуждали это ещё в начале темы (но за неравнодушие спасибо!)
    Во-первых, выводить байты долго. Быстрее слова. А это значит, что изображение кратно уже 8-ми точкам. То есть иногда придётся скроллить аж по 7 точек (14 команд ROR для одного регистра и столько же для второго, в который перетекают данные через бит C). Это медленно.
    Во-вторых, спрайт платформы у нас 25 точек в ширину, потому что мы пережимаем спрайты с PC под пропорции экрана БК. Ради хранения такого спрайта из 25-ти точек придётся тратить не 50, а 64 бита в памяти. Которой мало.
    Ну и в третьих, описываемый тобой метод, действительно, можно применить, но сразу на экране, чтобы сдвигать спрайты (если они не анимированы) на 1 точку влево или вправо. Попробуем совместить эти два метода. У нас же цель - минимальный расход памяти + максимальная производительность + максимальная плавность.
    насчет конверсии

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

    поэтому ИМХО вам уровни поменять надо а платформу с ГГ и лифтом трогать не нужно.
    С уважением,
    Jerri / Red Triangle.

  5. #94

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

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    хмм насчет наложения - нифига подобного
    в оригинале так и сделано - ни масок ни гладкого наложения
    грубо бросаем на экран
    если один спрайт цепляет другой значит есть пересечение.
    Мы сделаем лучше, чем в оригинале
    Когда пересечение спрайтов определяется с точностью до слова, оно может сработать, но при этом визуально спрайты будут всё ещё далеко друг от друга. У нас как раз такая ситуация: спрайт занимает 25 точек, а при операциях со словами его ширина будет оцениваться в 32 точки. 7 точек пустого места будут вести себя так, будто они не пустые и с чем-то пересеклись. Даже если рисовать не словами, а байтами (что замедляет отрисовку в два раза), пустые 3 точки будут всё время выдавать ложное пересечение.
    manwe.pdp-11.ru

  6. #95

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,411
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    180
    Поблагодарили
    139 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    /* У меня возникла идея как выводить тайлы лабиринта ещё быстрее. */
    Поскольку пока я себя чувствую как доктор Ватсон или капитан очевидность.. (хотя для себя много нового узнаю ) я пока переделаю все спрайты.
    В заголовке спрайта вставлять его размерность? (старший байт X мл. Y или двумя словами?)
    Из 8 точек оставлять 6?

  7. #96

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

    По умолчанию

    S_V_B, погоди, а много спрайтов-то там? Два для игрока я уже сделал. Врагов сколько? Они вообще бывают размером больше 8 точек в высоту? И что на счёт анимации спрайтов - враги статичные или несколько картинок крутится в цикле?
    Последний раз редактировалось Manwe; 30.09.2018 в 12:34.
    manwe.pdp-11.ru

  8. #97

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если тайлы хранятся повёрнутыми на 90 градусов, то может на экран записывать их побайтно следующим образом:
    в R0 будет буфер на 4 точки выводимые на экран
    в R1-R4 загружаются 4 столбца одного тайла, либо хвост одного и начало соседнего

    далее выводится 8 строк по 4 точки следующим кодом:
    add r1,r1 rol r0,r0 add r1,r1 rol r0,r0
    add r2,r2 rol r0,r0 add r2,r2 rol r0,r0
    add r3,r3 rol r0,r0 add r3,r3 rol r0,r0
    add r4,r4 rol r0,r0 add r4,r4 rol r0,r0
    movb (r5),r0 add r5,256/4
    либо movb меняется на манипуляции с маской, если нужно вывести не 4 столбца, а менее.

    то есть вывод строки тайлов 5x8 будет выглядеть так:
    читаем и выводим 4 столбца первого тайла
    потом 1 столбец первого и 3 столбца второго
    далее 2 столбца 2го и 2 столбца третьего
    далее 3 столбца третьего и 1 четвёртого
    далее 4 столбца четвёртого
    и далее такой шаблон повторяется.

    В общем так можно выводить и тайлы разной ширины, нужно только помнить оставшуюся длину хвоста и несколько вариантов кода для загрузки R1-R4 (хвоста и начала следующего тайла).
    Последний раз редактировалось blackmirror; 30.09.2018 в 13:06.

  9. #98

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

    По умолчанию

    blackmirror, идея хорошая. Видимо, придётся держать 4 похожих процедуры, каждая из них выводит соответственно 4, 3, 2 и 1 столбец (не всегда ведь нужны все 4).
    Если переписать на ассемблере БК, то получится примерно следующее:

    Код:
    ; R0 указывает на адрес спрайта, забираем первые 4 столбца
    MOV (R0)+,R1
    MOV (R0)+,R2
    MOV (R0)+,R3
    MOV (R0)+,R4
    MOV #8.,R6 ; будем выводить 8 точек в высоту
    
    LOOP:
    ROR R1 ; берём пиксель из первого столбца
    ROR R0
    ROR R1
    ROR R0
    
    ROR R2 ; берём пиксель из второго столбца
    ROR R0
    ROR R2
    ROR R0
    
    ROR R3 ; берём пиксель из третьего столбца
    ROR R0
    ROR R3
    ROR R0
    
    ROR R4 ; берём пиксель из четвёртого столбца
    ROR R0
    ROR R4
    ROR R0
    
    ; выводим полученный набор пикселей на экран
    MOVB R0,(R5)
    ADD #100,R5 ; адрес экрана смещаем на 1 пиксель вниз
    SOB R6,LOOP
    После смотрим сколько столбцов осталось нарисовать.
    Если 4 - повторяем ту же процедуру.
    Если меньше - переходим к аналогичной процедуре для 3, 2 или 1 столбца.

    Но надо обсчитать производительность.
    И остаётся вопрос как начинать выводить спрайт если его начальная горизонтальная координата не кратна 4.

    Для спрайтов лабиринта 6x8 можно написать что-то подобное. Объединить отрисовку двух соседних спрайтов (12 точек, 3 байта).
    Последний раз редактировалось Manwe; 30.09.2018 в 13:35.
    manwe.pdp-11.ru

  10. #99

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,411
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    180
    Поблагодарили
    139 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    /* а много спрайтов-то там? */
    Спрайтов 46 (у каждого фрэймы)
    У башни 7 фрэймов, у танка 2 и.т.д
    всего 139
    в высоту 12-16 точек..
    есть 18х12, много 4х16 есть 6х7
    (может их и не уменьшать?)
    Последний раз редактировалось S_V_B; 30.09.2018 в 14:58.

  11. #100

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

    По умолчанию

    Цитата Сообщение от S_V_B Посмотреть сообщение
    может их и не уменьшать?
    Надо посмотреть. Можешь в каком-нибудь удобоваримом виде выложить, чтобы посмотреть на Win/Mac?
    manwe.pdp-11.ru

Страница 10 из 23 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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