User Tag List

Страница 6 из 24 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 234

Тема: Спрайты

  1. #51

    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,777
    Спасибо Благодарностей отдано 
    554
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    138 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а как щас происходит детекция касания мячиком чего либо?
    В коде же все написано пока только столкновения с кирпичами.

  2. #52

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    В коде же все написано
    не знаю де код
    там отсылка к тетрису

    да и 8080 мнемоники не читаемые
    изза чего по моему все так плохо и получается

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

    Отключаем ПЗУ для доступа к экранному ОЗУ
    Включаем ПЗУ обратно
    из этого вопрос по океану
    что происходит при подключении экранного озу
    что нужно выключать его потом обратно
    (во львове, например, это обусловлено отпаданием 16К памяти)
    Последний раз редактировалось NEO SPECTRUMAN; 14.04.2019 в 19:06.

  3. #53

    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,777
    Спасибо Благодарностей отдано 
    554
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    138 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    что вы хотите сталкивать на пиксельном уровне
    и главное зачем?.
    Например: мячик круглый, кирпичи угловатые. Есть траектории, в которых мячик проходит опасно близко к острому кирпичному углу, но это не коллизия.

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

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    из этого вопрос по океану
    что происходит при подключении экранного озу
    что нужно выключать его потом обратно
    (во львове, например, это обусловлено отпаданием 16К памяти)
    Сорцы тут - https://github.com/timtashpulatov/ok...master/ark.asm

    ПЗУ обратно включается, чтобы пользоваться штатной процедурой опроса клавиатуры.

  4. #54

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    Например: мячик круглый, кирпичи угловатые. Есть траектории, в которых мячик проходит опасно близко к острому кирпичному углу, но это не коллизия.
    и этим вы неимоверно усложняете движок и замедляете его
    мячик можно описать 4-мя 6-ю точками
    проще сделать кирпич строго прямоугольным
    закруглением в один пиксель принебречь

    кирпичи не распологаются попиксельно
    а обычно по сетки 8х8
    из чего можно неимоверно все упростить и оптимизировать
    и проверять столкновение с кирпичами простым
    cp (hl)
    jp nz,collision
    на каждый шаг шарика

    и сразу при этом читать номер кирпича
    (250 кирпичей(больше низя) на экране с головой хватит)

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

    ПЗУ обратно включается, чтобы пользоваться штатной процедурой опроса клавиатуры.
    забудтье про ПЗУ навсегда
    пишите свою процедуру опроса

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

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    из чего можно неимоверно все упростить и оптимизировать
    и проверять столкновение с кирпичами простым
    я говорю про попиксельное перемещение мячика
    и полет его под любыми углами не кратными 45 градусам
    Последний раз редактировалось NEO SPECTRUMAN; 14.04.2019 в 19:26.

  5. #55

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    Есть траектории, в которых мячик проходит опасно близко к острому кирпичному углу, но это не коллизия.
    Можно держать вспомогательный битмап небитых кирпичей (по биту или два на кирпич) и битмап мячика, по биту на мячик. Первичный тест будет очень быстрый.
    Больше игр нет

  6. #56

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Можно держать вспомогательный битмап небитых кирпичей
    какой нафик битмап
    нужно 32х32 байта памяти
    и подсказка
    нормальные люди для большей скорости разместят их так
    (адреса условно с А000 чисто для прммера)

    A000 A001 A002... ...A01Е A01F
    A100 A101 A102... ...A11Е A11F
    ................................................
    BE00 BE01 BE02... ...BE1Е BE1F
    BF00 BF01 BF02... ...BF1Е BF1F

    и все будет летать

    можно конечно с экономить памяти
    и разместить все линейно
    но потерять в скорости...

    можно ложить рядом с этим буфером (A020...A0FF A120...A1FF итд)
    другие данные
    например графику
    или карты уровней


    каждому кирпичу присваиваем свой номер
    потом пиксельные координаты мячика делим на 8 и проверяем что в этом буфере
    с кем мы столкнулись или не столкнулись
    по остатку от деления
    можем определить с какой стороны мы столкнулись
    и в правильную сторону отразить мячь
    (мы не можем зацепить верхний пиксель залетев снизу)
    для стен так же нужно присвоить свои номера
    столкновение с ракеткой обрабатывать отдельным кодом
    так же как и столкновение со всякими посторонними летучками


    так же подсказка
    для пуляния мячика под любым углом
    нужны таблички синуса и косинуса
    которых в сорце не видно

    попиксельная точность детекции столкновений не нужна
    ее часто нет в фирменных играх
    и ты получаешь даже если тебе попали по пустому месту...

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

    условный пример содержания буфера

    Код:
    11111111111111111111111111111
    20000000000000000000000000003
    20000000000000000000000000003
    20044556677889900000000000003
    2000AABBCCDDEEFF0000000000003
    20000000000000000000000000003
    20000000000000000000000000003
    20000000000000000000000000003
    (так же можно упростить детекцию потери шарика
    нарисовав в буфере дно как стену со своим номером
    (в качестве бонуса
    ставящего отбивалку можно быстро пририсовать вместо дна вызывающего проигрыш
    дно вызывающее отбивание))

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

    напомню что 250 блоков это
    16х15 широких кирпичей
    256х120 пикселей сплошных рядов кирпичей

    в принципе не сложно расширить набор почти до 64К
    но зачем?

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

    кстате таким образом можно легко проверить столкновение всех наружных пикселей шарика
    после деления координаты каждого такого пикселя
    в конечном итоге останется 1 2 координаты для проверки по буферу
    ...но смысл проверять все?

    на всякий случай напомню что деление на 8 делается 3-мя rra
    а то мало чего еще нагородят...

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

    В принципе не обязательно присваивать каждому блоку свой номер
    это не сильно рационально
    нужно только отделить соседние друг от друга
    Код:
    11111111111111111111111111111
    20000000000000000000000000003
    20000000000000000000000000003
    20044554455445544554455440003
    20006677667766776677667700003
    20088998899889988998899880003
    2000AABBAABBAABBAABBAABB00003
    200CCDDCCDDCCDDCCDDCCDDCC0003
    20000000000000000000000000003
    20000000000000000000000000003
    20000000000000000000000000003
    2FFFFFFFFFFFFFFFFFFFFFFFFFFF3
    а определять что стирать в видео памяти
    на основе адреса в буфере
    Последний раз редактировалось NEO SPECTRUMAN; 14.04.2019 в 20:53.

  7. #57

    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,777
    Спасибо Благодарностей отдано 
    554
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    138 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    NEO SPECTRUMAN, ну вы сорцы-то гляньте, вдруг там кое-какие жемчужины кодинга уже реализованы.

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

    Цитата Сообщение от svofski Посмотреть сообщение
    Получается, что мяч отъедает процентов 60 всего времени?

    Нажмите на изображение для увеличения. 

Название:	ticks.jpg 
Просмотров:	133 
Размер:	13.0 Кб 
ID:	78774

    На реале совсем другой коленкор, синкаться по лучу легко и приятно. Верхний слой синих кирпичей - это мячик, пойманный в момент относительного бездействия.

    Ниже идет слой красных кирпичей, это перерисовка ракетки. Фиг знает, почему так жруче, там вообще никаких тяжелых проверок и рендера нет.

    Тощая зеленая прокладка - отрисовка двух бонусов.

    main_loop() выглядит примерно так:

    Код:
            call    SyncToRetrace
            call    ProcessBall ; белая полоса
            call    ProcessBatty ; красная полоса
            call    ProcessBonusList ; зеленая полоса
            jmp     Begin
    Последний раз редактировалось tnt23; 14.04.2023 в 11:51.

  8. #58

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    Ниже идет слой красных кирпичей, это перерисовка ракетки. Фиг знает, почему так жруче, там вообще никаких тяжелых проверок и рендера нет.
    Особо не вчитывался, но выглядит так, как будто PaintHorizontalBitmap и PaintBitmap слишком универсальные и могут быть специализированы для рисования ракетки побыстрее. Очень много push, pop, call, все это красиво и высокоуровнево, но отъедает много времени.
    Больше игр нет

  9. #59

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    для сравнения

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

    так понимаю на океане
    пиксели тоже прямоугольные?
    с каким примерно соотношением сторон?

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

    В океане всего 8 палитр?

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

    Цитата Сообщение от tnt23 Посмотреть сообщение
    ну вы сорцы-то гляньте, вдруг там кое-какие жемчужины кодинга уже реализованы.
    жумчужина...
    mvi a, 0





    SyncToRetrace
    ; подождем наступления ретрейса
    in 41h
    ani 2
    jz SyncToRetrace
    ret
    у вас там есть прерывания от таймера
    а таймер и проц и видео скорей всего тактируются от одного кварца
    поэтому возможно можно организовать прерывания по кадровому синхроимпульсу
    или вообще даже построчные прерывания (или с каким то шагом)

    ГС ГК - это гашение кадровое гашение строчное?
    по ходу у вашего океана неимоверные нериализованные возможности...
    то есть среди советских компов на 8080
    девайс можно было бы поставить за вектором
    при правильном подходе...
    и экран у вас рационально организованный
    (лишь слегка хуже чем на векторе, орионе, специалисте)

    тоесть синхронизируемcя с ГК
    потом с ГС
    запускаем таймер на нужной частоте
    и все
    по rst4 можем рисовать палитровые мультиколоры из коробки
    (тоесть больше чем 4 цвета на экране)
    без особых усилий...

    можно одновременно даже играть музыку звуки
    выполняя при этом код
    повесив пищалку на прерывания порядка 10Кц
    на узкоимпульсном биперном движке можно даже 5Кц
    чтоб меньше сьедать процесорного времени

    вангую что этот океан эмулируется на уровне "ниже плинтуса"

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

    Шото мне аж самому запонравился ваш компутер
    Но я не потяну ищо одно "тянение за уши" еще одной платформы...
    я не справляюсь со своими...
    ...опять же которая еще и не эмулируется...

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

    Цитата Сообщение от tnt23 Посмотреть сообщение
    Например: мячик круглый, кирпичи угловатые. Есть траектории, в которых мячик проходит опасно близко к острому кирпичному углу, но это не коллизия.
    к примеру
    всякие collision model-и из GTA
    сферы скорей всего просто описаются кодом а не полигонами
    и скорей всего служат до уточнения куда именно пришлось(фары двери капоты) столкновения с простой квадратной моделью
    которые под ними



    никто не просчитывает закругление в пол пикселя...
    на приставках со спрайтами
    детекция колизий же часто происходит аппаратно...

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

    Цитата Сообщение от tnt23 Посмотреть сообщение
    мячик проходит опасно близко к острому кирпичному углу, но это не коллизия.
    это я пропустил когда читал
    и решил что речь про закругления кирпичей
    шарик да лучше учитывать его закругление
    или можно сделать шарик совсем маленьким 5х5
    а закруглением в 1 пиксель пренебречь
    Последний раз редактировалось NEO SPECTRUMAN; 15.04.2019 в 08:20.

  10. #60

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    tnt23, ты был прав, надо было сразу на форуме обсуждать, чтобы несколько раз об одном и том же не говорить.

Страница 6 из 24 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Спрайты из игр
    от newart в разделе Графика
    Ответов: 16
    Последнее: 11.08.2022, 07:52
  2. Как вырезать спрайты
    от Bedazzle в разделе Графика
    Ответов: 20
    Последнее: 09.02.2019, 21:27
  3. dehrust и спрайты
    от drbars в разделе Программирование
    Ответов: 21
    Последнее: 15.01.2013, 16:51
  4. Спрайты из бейсика
    от Руслан в разделе Графика
    Ответов: 15
    Последнее: 26.07.2012, 20:54
  5. Спрайты в бейсике
    от AER в разделе Для начинающих
    Ответов: 13
    Последнее: 28.03.2010, 11:50

Ваши права

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