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

User Tag List

Страница 1 из 8 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 73

Тема: Портирование Asteroids

  1. #1
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Портирование Asteroids

    В начале июня начал попытки портирования Asteroids - игра на аркадном автомате от Atari - на Вектор-06Ц.
    Этот аркадный автомат полностью векторный, на процессоре 6502.

    Разобранные исходники оригинала:
    https://www.computerarcheology.com/Arcade/Asteroids/
    https://github.com/nmikstas/asteroid...steroidsSource

    Моя задумка: обойтись полностью без рисования линий, всё только на спрайтах через XOR.
    Память не экономим - держим все спрайты во всех фазах движения по горизонтали, всего порядка 22К на все спрайты.
    Из объектов крутится только кораблик - делаю 8 фаз на сектор, в оригинале было 17 фаз на сектор.
    0/1 планы под геймплей, переключать по завершению рисования через палитру.
    2-й план под индикаторы.

    Репозиторий с кодом:
    https://github.com/nzeemin/vector06c-asteroids

    Как обычно, буду рад вашим советам как сделать лучше.

    UPDATE: скриншоты



    Скрытый текст



    [свернуть]


    Текущее состояние: играбельная демо-версия: кораблик поворачивается и стреляет, но не летает.
    Последний раз редактировалось nzeemin; 02.12.2021 в 22:25.

  2. Эти 8 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:

    artyr_n (20.06.2021), Improver (17.06.2021), ivagor (17.06.2021), KTSerg (17.06.2021), lafromm31 (17.06.2021), PPC (18.06.2021), svofski (17.06.2021), yur (07.07.2021)

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

  4. #2
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,869
    Спасибо Благодарностей отдано 
    660
    Спасибо Благодарностей получено 
    1,862
    Поблагодарили
    1,062 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Asteroids или клонов на стандартном векторе нет (есть для z80), поэтому несомненно плюсую.

  5. Этот пользователь поблагодарил ivagor за это полезное сообщение:

    nzeemin (17.06.2021)

  6. #3
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,123
    Спасибо Благодарностей отдано 
    805
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    407 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Отличный выбор, присоединяюсь к ivagor-у.

    Заранее просчитанные спрайты можно хранить сразу в виде кода, если влезают в память.
    Больше игр нет

  7. Этот пользователь поблагодарил svofski за это полезное сообщение:

    nzeemin (17.06.2021)

  8. #4
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Отличный выбор, присоединяюсь к ivagor-у.

    Заранее просчитанные спрайты можно хранить сразу в виде кода, если влезают в память.
    Идея неплохая. А можно пример как это сделать наиболее эффективно?
    То есть это через серию "загрузить в A байт, сохранить в (HL)" или "загрузить в HL слово, push его в стек" ?
    Здесь же ещё и XOR с экраном нужно делать.

  9. #5
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,869
    Спасибо Благодарностей отдано 
    660
    Спасибо Благодарностей получено 
    1,862
    Поблагодарили
    1,062 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Здесь же ещё и XOR с экраном нужно делать.
    Надо еще подумать, для начала что-то вроде
    Код:
    ;HL=адрес в экране
    ;32 такта/байт спрайта, 5 байт программы/байт спрайта
    mov a,m
    xri байт спрайта
    mov m,a
    inr l (или dcr l или inr h или dcr h)

  10. Этот пользователь поблагодарил ivagor за это полезное сообщение:

    nzeemin (17.06.2021)

  11. #6
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,123
    Спасибо Благодарностей отдано 
    805
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    407 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я могу похвастаться только своими спрайтами в Рива рейде, вот их генератор
    https://github.com/svofski/incursion...makesprites.py
    И пример того, что он делает
    https://github.com/svofski/incursion...aster/ship.inc
    Он идет зигзагом, загружает данные lxi и записывает в экран через push. Там нету перекрытий, поэтому получилось здорово сэкономить.

    Для XOR разве только
    mov a, m \\ xri xyz \\ mov m, a \\ inr l ; 8 + 8 + 8 + 8 = 32, или 64 на два байта
    Или попробовать парами?
    lxi b, xyz \\ mov a, m \\ xra c \\ mov m, a \\ inr l \\ mov a, m \\ xra b \\ mov m, a \\ inr l ;; 12 + 8 + 4 + 8 + 8 + 8 + 4 + 8 + 8 = 68
    получается хуже, но если вместо lxi будет pop, получается, что не надо инлайнить данные и код. В общем с xor-ом похоже много не выгадаешь за счет такого разворачивания.

    Еще идея - у нас 4 плоскости. Если три плоскости сделать одним цветом, можно три спрайта перекрывать "аппаратно". Вопрос к логике игры, сможет ли она группировать перекрывающиеся спрайты так, чтобы они были в разных плоскостях? Если да, то круто и можно упростить отрисовку спрайтов до простого затирания. Эффект не обязательно должен быть всегда идеально выполнен. Если что-то частично перетрется, но это исчезнет с глаз долой за 20мс, ну и ладно.

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

    P.S. ivagor меня опередил. То, что у нас получились одинаковые примеры говорит о том, что может быть точно один из нас прав.
    Больше игр нет

  12. Этот пользователь поблагодарил svofski за это полезное сообщение:

    nzeemin (17.06.2021)

  13. #7
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,869
    Спасибо Благодарностей отдано 
    660
    Спасибо Благодарностей получено 
    1,862
    Поблагодарили
    1,062 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если сравнить вариант с инлайнами данных спрайта с вариантом без инлайнов (с pop), то казалось бы разница всего в 2 такта/байт спрайта (32 vs 34), но надо учесть и возможность локальной оптимизации варианта с инлайнами в местах, где байты спрайта=0, и тогда разрыв увеличится. Насколько помню в river raid svofski так делал (без xor). При наличии места можно все спрайты заинлайнить, а если не хватает, то только самые критичные. Пишу капитанские вещи, но сужу по себе, иногда что-то давно знакомое вылетает из головы и напоминание помогает.

  14. #8
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,123
    Спасибо Благодарностей отдано 
    805
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    407 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Насколько помню в river raid svofski так делал (без xor).
    Да, разрывы и повторы. Повторов в астероидах много не случится, а вот разрывы могут быть. Прикольно, кольцевой спрайт с дыркой посередине. Если будет вообще получаться, можно будет внимательно посмотреть -- если вдруг где-то дырка портится из-за пары пикселей, попрощаться с парой пикселей и получить хорошую дырку.

    Можно пойти еще дальше и сделать дырки через строку. Когда все быстро мельтешит можно много деталей простить.

    Хорошо, что ivagor накапитанил, потому что я сам про это забыл.
    Больше игр нет

  15. #9
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,852
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Надо еще подумать, для начала что-то вроде
    Т.е. хранить все 8 сдвинутых спрайтов? Это-ж сколько из будет?
    Допустим 8 разных размеров (включая сам корабль) * 8(или 16) поворотов * 8(или 4) сдвигов = 512 спрайтов. Памяти-то хватит?

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

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Из объектов крутится только кораблик
    Так неинтересно...

  16. #10
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Т.е. хранить все 8 сдвинутых спрайтов? Это-ж сколько из будет?
    Да, я тоже прикидываю что процедурами хранить очень накладно получается.

    Так неинтересно...
    В смысле? в оригинале тоже только кораблик крутится - посмотрите внимательно.

    Ещё можно посмотреть на векторный ROM - только для кораблика там заданы фазы поворота:
    https://www.computerarcheology.com/A...VectorROM.html
    Последний раз редактировалось nzeemin; 17.06.2021 в 15:48.

Страница 1 из 8 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. ASTEROIDS на УКНЦ
    от S_V_B в разделе ДВК, УКНЦ
    Ответов: 112
    Последнее: 31.05.2021, 06:44
  2. Портирование Desolate с TI-83 Plus на УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 45
    Последнее: 11.02.2021, 11:32
  3. Портирование Lode Runner БК->УКНЦ
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 103
    Последнее: 12.12.2020, 04:04
  4. Портирование игр с PC на БК
    от S_V_B в разделе БК-0010/0011
    Ответов: 227
    Последнее: 01.04.2019, 02:36
  5. Портирование Stop the Express
    от nzeemin в разделе ДВК, УКНЦ
    Ответов: 90
    Последнее: 21.11.2018, 09:46

Ваши права

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