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

User Tag List

Показано с 1 по 9 из 9

Тема: River Raid на УКНЦ

  1. #1
    Member
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    58
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию River Raid на УКНЦ

    Начал "портировать" игру River Raid для УКНЦ.

    Изначально была небольшая тестовая демка со скроллингом 50fps для проверки нормального конвертирования/отображения видеосигнала компьютера на современном видеомониторе/ТВ. Просто фигурки скроллились вниз и проверял плавность отображения.
    Через какое-то время стало занятно сделать рандомные берега "речки" как в игре River Raid. А потом добавил кораблики и т.д...


    Ради истории:
    Оригинал вышел в далеком 1982 году на "приставке" Atari 2600. От игры есть разобранный с комментариями код под вариант процессора MOS 6502 и TIA чип этого Atari. (https://github.com/johnidm/asm-atari.../RiverRaid.asm). Вся игра в оригинале занимает 4 килобайта и довольствуется кажется 128-ю байтами ОЗУ.
    Теоретически ее алгоритм формирования "берега речки" и прочего (кроме отображения/звука/хардварный check collision) можно портировать. Правда это будет некоторый гимор (команды типа SBC байтовые и прочая байтовая арифметика и работа с флагами).
    Я не стал заморачиваться с портом, взял общую концепцию (и своровал некоторые спрайты). Поэтому у меня игра занимает вовсе не 4 килобайта, а целый вагон килобайт (прешифтованные спрайты, тупой код и т.д.)

    Управление:
    В принципе в самое игре описано.
    Из того что не описано - К2 сделает рестарт с показом дебаговых циферок. Левая binary - скан коды кнопок нажатия и отжатия. Две циферки посредине - некоторое значение в у.е. процессорного времени по CPU и PPU которое осталось "лишним" до очередного прерывания вертикальной развертки экрана. Также по К2 самолет перестает "умирать". Можно использовать как тест 50Гц скроллинга пока настраивается телевизор. (еще раз К2 - возврат к "нормальной" игре)

    Игрушка понемногу доделывается и осталось:
    - багов еще добавить (один из багов - остаются иной раз остатки от взрыва вертолета.. тяжело повторить.. на геймплей не влияет, просто некрасиво)
    - ускорение (стрелка вверх)
    - мосты (не знаю важны-ли.. похоже не добавлю)
    - ЗВУКИ ... ээээ - тут опять будет небольшой кошмар, хотя опыт со звуками на УКНЦ уже имел

    Вопросы на которые сразу можно ответить:
    - Почему игра не полноцветная? Даже 8-ми цветов нет! Не то что 128...
    + (для предыдущей игры Krakout то-же самое) Мне лень заморачиваться с фреймбуферами, палитрами на каждую строку и рисовать лишнее в PPU. Бит в плане-0 который рисует только PPU всегда белого цвета чтобы не влиять на планы 1/2. Поэтому кроме белого остается 4 цвета. Я выбрал цвета те .. которые выбрал. 5 цветов (включая белый и черный, увы).
    - Самолет "тормозит" на поворотах, но если держать кнопки и не отпускать - скорость на максимуме
    + "Ориджинал код" уж насколько смог его портировать с переносом байтовых операций. На оригинале атари самолет будет гонзать вправо влево примерно так-же (чуть иначе, но я постарался скопировать поведение). Единственно что не скопировано - даже при самом мелком нажатии вправо/влево на атари - самолет будет двигаться хотя-бы на один пиксель - у меня это нереализовано, поэтому "инерция"
    - Ракеты в ориджинал могли быть "самонаводящиеся" (X-ракеты соответствует X-самолета)
    + Усложнил геймплей на УКНЦ, сделать можно, не вижу смысла, это скорее демо чем игра

    Технически:
    RIV.SAV банальный лоадер который считывает файл RIVBIN.DAT в котором код для двух процессоров. Сначала записывает его в планы ВОЗУ скрыв отображение. Потом раскидывает по двум процессорам и запускает вычистив все что было там до этого. Процессоры общаются между собой через команды CPU -> PPU без использования байтовых каналов обмена и прерываний. Тупо по ячейкам памяти CPU и по ожиданиям в циклах. Видеопамять скидывается на адреса >=100000 CPU (два плана) и >=40000 PPU план 0. Туда они и рисуют немного пожертвовав (сильно пожертвовав) доступным ОЗУ для исполнения кода. (спасибо соседнему треду, не знал что так можно). Но поскольку разрешение 320х288 - то вроде как не сильно критична потеря ОЗУ для исполняемого кода. Тем-более что оригинальное ВОЗУ можно использовать и дальше под прешифт спрайтов on-demand и видеобуфера в этой игре ненужные (игра очень маленькая) и т.д.

    Поведение в эмуляторах:
    UKNCBTL - не слишком парится с vsync и выдает 25 кадров/с (примерно). У вертолета не будет "вращаться винт".
    EmuStudio - в этом плане получше, хотя странным образом скушало/размножило нижние стро.. UPD: Titus прояснил ситуацию, надо нажать LShift+Del
    (на реальной УКНЦ вроде нормально)

    Сама игра и ее исходники:
    (для компиляции исходников нужно будет доложить php и rt11.exe которые по понятным причинам я не добавляю. Компиляется последовательно 0_.. 1_.. 2_.. 3_... bat. Думаю программист быстро разберется. За код не ругать плз.)

    uknc_river_src.zip
    Для игры взять riv.dsk из всех файлов, в нем старт игры прописан в автозагрузке, сама игра это два файла RIV.SAV, RIVBIN.DAT которые внутри riv.dsk находятся.
    Последний раз редактировалось BlaireCas; 26.11.2020 в 18:26.

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

    hobot (20.11.2020), nzeemin (22.11.2020), Oleg N. Cher (22.11.2020), svofski (20.11.2020), Titus (20.11.2020), tnt23 (22.11.2020)

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

  4. #2
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    12,246
    Спасибо Благодарностей отдано 
    501
    Спасибо Благодарностей получено 
    721
    Поблагодарили
    386 сообщений
    Mentioned
    47 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    EmuStudio - в этом плане получше, хотя странным образом "допоказывает" излишние строки в таблице строк ниже основного экрана (у меня таблица строк закольцована)
    (на реальной УКНЦ вроде нормально)
    Это потому что ты растягиваешь на весь экран.
    В окне их не видно.
    Это я сделал, потому что встретилась одна версия игры LAND, которая имела внизу экрана неотображаемые строки, и я решил сделать так, чтобы они тоже показывались. На реальной УКНЦ она бы их не показывала, разумеется.

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

    Игра шикарно плавно работает на EmuStudio и на реальной УКНЦ! )

  5. #3
    Member
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    58
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Это потому что ты растягиваешь на весь экран.
    Просто если в окошке - тогда происходит "недопоказ". Например перед стартом (после того как проскроллится заставочный кусок реки) - мост должен быть показан весь и под ним еще несколько строк.
    Либо эмулятор староват у меня. (v0.15g).
    Либо Windows-10 довольно странно себя ведет для твоего эмулятора. Вообщем я не особо считаю это за беду ибо Хобот уже мне выдал полезный совет про который я и сам позабыл - верхние и нижние строки не нужно учитывать ибо надо делать игры в расчете на overscan телевизоров. (Ну как синклер с бордюром).


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

    hobot (20.11.2020)

  7. #4
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    12,246
    Спасибо Благодарностей отдано 
    501
    Спасибо Благодарностей получено 
    721
    Поблагодарили
    386 сообщений
    Mentioned
    47 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Либо эмулятор староват у меня. (v0.15g).
    Либо Windows-10 довольно странно себя ведет для твоего эмулятора. Вообщем я не особо считаю это за беду ибо Хобот уже мне выдал полезный совет про который я и сам позабыл - верхние и нижние строки не нужно учитывать ибо надо делать игры в расчете на overscan телевизоров. (Ну как синклер с бордюром).
    LShift+Del переключит тебе режим нижних строк в окне.

    Я думаю, что надо все строчки учитывать. На нормальных мониторах и нормальных конверторах все показывается верно.

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

    BlaireCas (20.11.2020)

  9. #5
    Member
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    58
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    LShift+Del переключит
    О! Да, оно самое. Теперь все ОК.

  10. #6
    Оператор ДВК Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    6,437
    Спасибо Благодарностей отдано 
    2,061
    Спасибо Благодарностей получено 
    216
    Поблагодарили
    183 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    верхние и нижние строки
    у меня на реале всё видать, вот так выглядит стартовый экран (надпись про fire на самом краю видимой области,
    но вполне читаема)



    Прогрел свою УК-НЦшку, повзрывал лодочки, заправки, вертолётики. При попадании в белый самолётик он останавливается, но стирается как то странно (такое впечатление, что в два прохода). Огромная благодарность, что не бросаете замечательный УК-НЦ без свежих релизов !!!
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

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

    nzeemin (22.11.2020), Oleg N. Cher (22.11.2020)

  12. #7
    Activist
    Регистрация
    10.04.2019
    Адрес
    г. Фокино, Брянская обл.
    Сообщений
    331
    Спасибо Благодарностей отдано 
    36
    Спасибо Благодарностей получено 
    86
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Еще на одном эмуляторе:

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

    [свернуть]

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

    hobot (23.11.2020), nzeemin (22.11.2020)

  14. #8
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,482
    Спасибо Благодарностей отдано 
    484
    Спасибо Благодарностей получено 
    398
    Поблагодарили
    192 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    BlaireCas, там же в оригинале процедурная генерация рельефа для всех уровней, а у вас это всё развёрнуто хранится?
    Пишут что в оригинале вся графика и код лежали в 4КБ.

    https://github.com/johnidm/asm-atari.../RiverRaid.asm
    Последний раз редактировалось nzeemin; 24.11.2020 в 18:55.

  15. #9
    Member
    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    58
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    BlaireCas, там же в оригинале процедурная генерация рельефа для всех уровней, а у вас это всё развёрнуто хранится?
    Пишут что в оригинале вся графика и код лежали в 4КБ.
    Я знаю, я разбирал код. Но портировать генерацию не стал. В оригинале хранятся "куски" (шаблоны) готовые берегов и половины острова. Рандомно выбирается очередной "кусок" и потом fine tune происходит иногда чтобы берега и остров подогнать друг к другу (чтобы не было больших выступов).
    У меня происходит более "тупо" - выбирается очередной рандом куда пойдет берег, типа туда он и едет по две строки. Если позволяет место - выбирается рандомно делать-ли остров и тоже рандомная ширина. Без предварительных шаблонов. Поэтому у меня "тесновато" генерится рельеф реки если появляется остров.

    (почему не стал банально портировать код атари... да ну его, для меня развлечение самому придумать, пусть я придумаю и хуже)

    ---

    Кстати обновил игрушку. Все сложил в один архив (вместе с исходниками).
    Сейчас относительно играбельно.
    Нехватает - ускорения самолета, звуков.. вообщем пока еще доделывать буду.

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

    hobot (26.11.2020), nzeemin (26.11.2020), Oleg N. Cher (26.11.2020), Titus (26.11.2020)

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

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

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

Похожие темы

  1. River raid
    от Ванек в разделе Игры
    Ответов: 6
    Последнее: 29.08.2011, 14:38
  2. river raid on flash
    от daniel в разделе PC Remakes
    Ответов: 4
    Последнее: 01.03.2011, 21:01
  3. Ищу игру River raid и Mounsters под TR-DOS
    от luzanov в разделе Игры
    Ответов: 3
    Последнее: 21.01.2008, 12:32
  4. River Raid
    от Egal в разделе Игры
    Ответов: 9
    Последнее: 30.09.2007, 21:33

Ваши права

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