Автор Тема: Как на новоделах поиграть в Battletoads 1?  (Прочитано 1983 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн v007

  • Пользователь
  • Сообщений: 205
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1 без перепрыгивания на 3-ий уровень?
На Retro Genesis замкнул 2 провода, не помогло.
Но, иногда игра не виснет. Хотелось бы узнать причину.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #1 : 04 Март 2024, 06:17:24 »
Проблема с зависанием связана с таймингами PPU и CPU. Как я понял, после отрисовки статусбара и срабатывания sprite 0 hit (это приём определения места окончания отрисовки статусбара), ppu меняет состояние раньше чем нужно и происходит зависание, это связанно с таймингами NMI. Не на всех приставках игра виснет. Этот вопрос не первый раз задаётся на форуме, в прошлый раз советовали использовать хак с квадратными тенями. Встречается в ромсетах с пометкой [p].
« Последнее редактирование: 04 Март 2024, 06:39:30 от supremacy »

Оффлайн v007

  • Пользователь
  • Сообщений: 205
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #2 : 05 Март 2024, 10:52:51 »
В общем, решил вопрос.
На приставке Танки 8 бит, PAL, плата DW-VT02S-512M Rev2.01 2017.09.16 не виснет второй уровень, если прохожу его без потери здоровья или что то близкое к этому. Версия с New Game 475 игр.

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #3 : 05 Март 2024, 19:17:43 »
Проверил - американка виснет только на 60 Гц режиме, японка не виснет нигде. Остается открытым вопрос висла ли БТ1 на оригинальных американских NES.

Оффлайн Nhisti

  • Пользователь
  • Сообщений: 980
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #4 : 05 Март 2024, 21:05:11 »
Остается открытым вопрос
Как бы разумеется, что оригинальные образы не висли на приставках своих регионов  :neznayu:

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #5 : 05 Март 2024, 23:44:41 »
На эмуле вроде не виснет, но интересно в чем разница между оригинальной NTSC NES и клонами на 60 Гц? Или таки виснет на оригинале, пусть и реже чем на клонах, а иначе почему в японке пофиксили зависания? Причем на этих же приставках на 50 Гц не виснет, хотя казалось бы, должно быть как минимум наоборот. С другой стороны, зависания вроде как рандомные, может и повезти пройти весь уровень. На эмуле к сожалению не проверить, т.к. там нету 60 Гц "денди" режима.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #6 : 06 Март 2024, 06:06:43 »
Можно посмотреть какие значения таймингов показывает 240p test на проблемной приставке.

Оффлайн Nhisti

  • Пользователь
  • Сообщений: 980
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #7 : 06 Март 2024, 09:12:52 »
Или таки виснет на оригинале, пусть и реже чем на клонах
Если бы в то время, да ещё и в амерском регионе вышла бы игра, которая бы "висла", тамошнее игровое сообщество до сих пор бурлило бы говнами. Принципиально по-другому к выпуску игр тогда подходили, не как сейчас "выпустим то, что кое-как слепили, а потом за полгода патчами как-нибудь исправим (но это не точно)).

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #8 : 06 Март 2024, 19:30:21 »
Можно посмотреть какие значения таймингов показывает 240p test на проблемной приставке.

Как-то так. Неужели эти 0.2 клока решают? В середине - эмуль, а справа - 50Гц с теми же таймингами, и там батлтодсы не виснут.
Если бы в то время, да ещё и в амерском регионе вышла бы игра, которая бы "висла", тамошнее игровое сообщество до сих пор бурлило бы говнами.
То, что те же батлтодсы непроходимы на 2 игрока (баг на клингер вингере) почему-то никого особо не смущает.
« Последнее редактирование: 06 Март 2024, 19:41:47 от mutabor »

Оффлайн v007

  • Пользователь
  • Сообщений: 205
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #9 : 06 Март 2024, 19:40:17 »
Можно посмотреть какие значения таймингов показывает 240p test на проблемной приставке.
Приставка RG 8 bit в корпусе фамикома.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #10 : 06 Март 2024, 21:49:42 »
Как-то так. Неужели эти 0.2 клока решают? В середине - эмуль, а справа - 50Гц с теми же таймингами, и там батлтодсы не виснут.
Нужно собрать больше статистики, пока утверждать ничего нельзя.

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #11 : 07 Март 2024, 20:58:48 »
Нужно собрать больше статистики, пока утверждать ничего нельзя.
Какой именно статистики?

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #12 : 07 Март 2024, 22:01:10 »
Какие тайминги у приставок на которых игра зависает, и на каких никогда не зависает. Вообще, у писателей эмуляторов есть набор тестов, которые выявляют насколько правильно работает эмуляция. Среди них есть
7.nmi_timing который выдаёт следующие коды ошибок:
------------
Tests timing of NMI and immediate occurrence when enabled with VBL flag
already set.

2) NMI occurred 3 or more PPU clocks too early
3) NMI occurred 2 PPU clocks too early
4) NMI occurred 1 PPU clock too early
5) NMI occurred 3 or more PPU clocks too late
6) NMI occurred 2 PPU clocks too late
7) NMI occurred 1 PPU clock too late
8) NMI should occur if enabled when VBL already set
9) NMI enabled when VBL already set should delay 1 instruction
10)NMI should be possible multiple times in VBL

Так вот, боевые жабы виснут если тест выдаёт ошибку #2, т.е. NMI срабатывает раньше чем нужно. Но не факт, что это единственная причина зависания.

Или немного другой тест 05-nmi_timing, эталонные значения которого указаны ниже
-------------
Tests NMI timing.

Prints which instruction NMI occurred
after. Test is run one PPU clock later
each line.

00 4
01 4
02 4
03 3
04 3
05 3
06 3
07 3
08 3
09 2
« Последнее редактирование: 07 Март 2024, 22:26:12 от supremacy »

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #13 : 07 Март 2024, 22:44:13 »
Проверил - в режиме 50Гц тест выдает ошибку 2 (жабы при этом не виснут), а в 60 - ошибку 4. Правда не факт что этот тест вообще адекватно работает в 50Гц режиме.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #14 : 08 Март 2024, 09:09:51 »
Так и должно быть, в эмуляторах в dendy-mode тоже иногда виснет. В хаке battletoads bugfix исправлено. По адресу 38EB0 сменить с $6B на $6C или больше.

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #15 : 08 Март 2024, 10:22:19 »
Прогнал тест на 2 приставках и эмуляторах. Приставки - стародел из 90х на PA3088 и дешевый новодел с закосом под денди джуниор на неизвестном проце с безмапперными встроенными играми. Результаты такие:
PA3088 4 4 3 3 3 3 3 3 2 2
Новодел 4 3 3 3 3 3 3 2 2 2
fceux 3 3 3 2 2 2 2 1 1 1
nestopia 4 4 4 3 3 3 3 3 3 2

При этом test passed только на нестопии, остальное - фейл. Все в 60 Гц, на 50 Гц тест выдает хрень.
Игра не виснет на эмуляторах (или шанс не очень велик), и виснет на приставках - на PA3088 шанс пройти уровень на вскидку 50/50, новодел виснет чаще.
Так и должно быть, в эмуляторах в dendy-mode тоже иногда виснет.
Так прикол в том что на реальном железе в 50Гц все норм, а виснет как раз на 60. А причина зависаний известна - что там в коде игры идет не так?
По адресу 38EB0 сменить с $6B на $6C или больше.
Проверил, патч рабочий.
« Последнее редактирование: 08 Март 2024, 11:59:50 от mutabor »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #16 : 08 Март 2024, 12:09:24 »
В коде всё так, просто он требует точных таймингов. На оригинальных приставках famicom и nes не виснет.

Оффлайн ПАУК

  • Пользователь
  • Сообщений: 1543
  • Пол: Мужской
  • Ну-ка, от винта!
    • Steam
    • Youtube
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #17 : 08 Март 2024, 12:54:44 »
О каком зависании идёт речь?

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #18 : 08 Март 2024, 16:57:26 »
Поковырялся в эмуляторе, выяснил следующее:
На 9 строке маппер переключается на screen 1 для отрисовки верхнего статусбара, после чего проц крутится 6B=107 циклов для задержки, которая кончается на 14 строке;
Затем выполняется прочая логика, которая заканчивается на 21-22 строке;
Затем проц ждет Sprite 0 Hit в цикле для определения времени окончания отрисовки статусбара, и в норме выходит из него на 30 строке. В случае же зависания Sprite 0 Hit не случается и выход из цикла не произойдет никогда.
В японке задержка также раван 6B, однако Sprite 0 Hit происходит на 31 строке, по этому есть фора на 1 строку, что видимо дает хороший запас по времени, американка же зависает даже если счетчик уменьшить на 1, т.е. укладывается впритык.
И на первый взгляд вроде бы все должно работать нормально - ожидание Sprite 0 Hit длиться 9 строк, и непонятно из-за чего происходит сбой. Есть какие-то идеи?

Оффлайн quq_CCCP

  • Пользователь
  • Сообщений: 2228
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #19 : 08 Март 2024, 18:30:04 »
Ну у нас же не ntsc приставка, а аналог, гибрид с pal cpu и ntsc cpu, в 60 герц, скорость процессора чуть чуть пониже, вероятно в требовательных к таймингам играм влияет.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2276
  • Пол: Мужской
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #20 : 08 Март 2024, 19:10:57 »
Я не настолько хорошо разбираюсь в теме, но судя по компетентному мнению в этой теме https://forums.nesdev.org/viewtopic.php?t=1224
Из-за отличий в таймингах позиция статусбара может сместится вниз или вверх, и из-за того что маленькая область у спрайта по которому происходит определение sprite 0 hit (там должно совпасть перекрытие прозрачных пикселей спрайта и фона) не попадает в нужное место, флаг никогда не установится, что приведёт к бесконечному циклу и зависанию.
« Последнее редактирование: 08 Март 2024, 19:17:22 от supremacy »

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #21 : 08 Март 2024, 20:54:23 »
Более-менее разобрался, в целом это так. Кстати этот пиксель, используемый для детекта, можно увидеть на уровне турбо тоннель. Прикол в том, что позиция скролла там задается через хак - запись в PPUADDR вместо PPUSCROLL (PPUSCROLL тоже записывается, но в данном случае это ни на что не влияет). Если эта запись происходит слишком рано - фон смещается вверх на пиксель и не совпадает со спрайтом.
Альтернативный вариант фикса - подвинуть спрайт вверх на пиксель, что даст запас в строку - должно хватить для любого сколь-нибудь адекватного железа или эмуля. Патч: 38C9F 1C -> 1B. В другую сторону там запас хороший.

Оффлайн v007

  • Пользователь
  • Сообщений: 205
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #22 : 10 Март 2024, 17:42:02 »
Могу сказать следующее.
На RG8bit PAL не виснет, когда я прохожу без повреждений и стараюсь держаться нижней части экрана т.е. выносить всех, как только кто то появляется.
Похожая ситуация и на Танки 8 бит, но она сейчас в NTSC. На ней тоже иногда не виснет в NTSC.

Оффлайн v007

  • Пользователь
  • Сообщений: 205
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #23 : 14 Март 2024, 18:03:45 »
Проверил - американка виснет только на 60 Гц режиме, японка не виснет нигде. Остается открытым вопрос висла ли БТ1 на оригинальных американских NES.
А на каких приставках ты тестил?

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля

Оффлайн v007

  • Пользователь
  • Сообщений: 205
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #25 : 16 Март 2024, 10:30:53 »
На эмуле вроде не виснет, но интересно в чем разница между оригинальной NTSC NES и клонами на 60 Гц? Или таки виснет на оригинале, пусть и реже чем на клонах, а иначе почему в японке пофиксили зависания? Причем на этих же приставках на 50 Гц не виснет, хотя казалось бы, должно быть как минимум наоборот. С другой стороны, зависания вроде как рандомные, может и повезти пройти весь уровень. На эмуле к сожалению не проверить, т.к. там нету 60 Гц "денди" режима.
Не рандомные, попробуй пройти 2 уровень без повреждений и выноси всех как можно быстрее. Если получится, то и 1 уровень без потери жизней.
На RG 8 bit PAL у меня редко подвисает, на NTSC симбасе статистику не могу сказать, но 2 уровень проходил.

Оффлайн Ivan_Ages

  • Пользователь
  • Сообщений: 751
  • Пол: Мужской
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #26 : 21 Март 2024, 07:51:37 »
Не в тему, но. Решил протестить патчи [38EB0с 6B -> 6C и 38C9F 1C -> 1B] на Hamy4SD (эмулятор PAL). Да. Игра стала запускаться и можно пройти первые два уровня. На третьем после убийства первой крысы всё норм. Делаешь ровно два шага вправо и зависает. (Музыка играет). Сочетание обоих патчей ничего не даёт. Предел 38C9F при котором игра работает до 3го уровня = 1B, 1A, 19, 18, 17, 16, ниже как без патча. Тут я понимаю дело в скроллинге экрана? Но почему тогда третий уровень?
До аппаратки пока руки не дошли. ;)

Оффлайн mutabor

  • Пользователь
  • Сообщений: 306
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #27 : 21 Март 2024, 19:18:29 »
эмулятор PAL
Под этим подразумевается PAL NES? Так для нее есть европейская версия жаб, впихивать туда американку - это какой-то изврат.

Оффлайн Ivan_Ages

  • Пользователь
  • Сообщений: 751
  • Пол: Мужской
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #28 : 21 Март 2024, 20:27:27 »
Под этим подразумевается PAL NES? Так для нее есть европейская версия жаб, впихивать туда американку - это какой-то изврат.
да не. До пал нес этому ... далеко. :D Эмулятор в пал работает. Там дело даже не в пал наверно, а в ядре эмулятора кривого. А BT1 никакие не работают. Запустился только нормально BTDD (U).

Оффлайн vergizay

  • Пользователь
  • Сообщений: 17
    • Просмотр профиля
Как на новоделах поиграть в Battletoads 1?
« Ответ #29 : 22 Март 2024, 09:27:36 »
У меня имеются 3 приставки dendy junior на разных чипах, на них обе части Battletoads не виснут,есть retro genius 8 bit там обе части зависают.Катридж 365в1 с OZON////