Приставки > 1-3 поколения
Как на новоделах поиграть в Battletoads 1?
v007:
Как на новоделах поиграть в Battletoads 1 без перепрыгивания на 3-ий уровень?
На Retro Genesis замкнул 2 провода, не помогло.
Но, иногда игра не виснет. Хотелось бы узнать причину.
supremacy:
Проблема с зависанием связана с таймингами PPU и CPU. Как я понял, после отрисовки статусбара и срабатывания sprite 0 hit (это приём определения места окончания отрисовки статусбара), ppu меняет состояние раньше чем нужно и происходит зависание, это связанно с таймингами NMI. Не на всех приставках игра виснет. Этот вопрос не первый раз задаётся на форуме, в прошлый раз советовали использовать хак с квадратными тенями. Встречается в ромсетах с пометкой [p].
v007:
В общем, решил вопрос.
На приставке Танки 8 бит, PAL, плата DW-VT02S-512M Rev2.01 2017.09.16 не виснет второй уровень, если прохожу его без потери здоровья или что то близкое к этому. Версия с New Game 475 игр.
mutabor:
Проверил - американка виснет только на 60 Гц режиме, японка не виснет нигде. Остается открытым вопрос висла ли БТ1 на оригинальных американских NES.
Nhisti:
--- Цитата: mutabor от 05 Март 2024, 19:17:43 ---Остается открытым вопрос
--- Конец цитаты ---
Как бы разумеется, что оригинальные образы не висли на приставках своих регионов :neznayu:
mutabor:
На эмуле вроде не виснет, но интересно в чем разница между оригинальной NTSC NES и клонами на 60 Гц? Или таки виснет на оригинале, пусть и реже чем на клонах, а иначе почему в японке пофиксили зависания? Причем на этих же приставках на 50 Гц не виснет, хотя казалось бы, должно быть как минимум наоборот. С другой стороны, зависания вроде как рандомные, может и повезти пройти весь уровень. На эмуле к сожалению не проверить, т.к. там нету 60 Гц "денди" режима.
supremacy:
Можно посмотреть какие значения таймингов показывает 240p test на проблемной приставке.
Nhisti:
--- Цитата: mutabor от 05 Март 2024, 23:44:41 ---Или таки виснет на оригинале, пусть и реже чем на клонах
--- Конец цитаты ---
Если бы в то время, да ещё и в амерском регионе вышла бы игра, которая бы "висла", тамошнее игровое сообщество до сих пор бурлило бы говнами. Принципиально по-другому к выпуску игр тогда подходили, не как сейчас "выпустим то, что кое-как слепили, а потом за полгода патчами как-нибудь исправим (но это не точно)).
mutabor:
--- Цитата: supremacy от 06 Март 2024, 06:06:43 ---Можно посмотреть какие значения таймингов показывает 240p test на проблемной приставке.
--- Конец цитаты ---
Как-то так. Неужели эти 0.2 клока решают? В середине - эмуль, а справа - 50Гц с теми же таймингами, и там батлтодсы не виснут.
--- Цитата: Nhisti от 06 Март 2024, 09:12:52 ---Если бы в то время, да ещё и в амерском регионе вышла бы игра, которая бы "висла", тамошнее игровое сообщество до сих пор бурлило бы говнами.
--- Конец цитаты ---
То, что те же батлтодсы непроходимы на 2 игрока (баг на клингер вингере) почему-то никого особо не смущает.
v007:
--- Цитата: supremacy от 06 Март 2024, 06:06:43 ---Можно посмотреть какие значения таймингов показывает 240p test на проблемной приставке.
--- Конец цитаты ---
Приставка RG 8 bit в корпусе фамикома.
supremacy:
--- Цитата: mutabor от 06 Март 2024, 19:30:21 ---Как-то так. Неужели эти 0.2 клока решают? В середине - эмуль, а справа - 50Гц с теми же таймингами, и там батлтодсы не виснут.
--- Конец цитаты ---
Нужно собрать больше статистики, пока утверждать ничего нельзя.
mutabor:
--- Цитата: supremacy от 06 Март 2024, 21:49:42 ---Нужно собрать больше статистики, пока утверждать ничего нельзя.
--- Конец цитаты ---
Какой именно статистики?
supremacy:
Какие тайминги у приставок на которых игра зависает, и на каких никогда не зависает. Вообще, у писателей эмуляторов есть набор тестов, которые выявляют насколько правильно работает эмуляция. Среди них есть
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
mutabor:
Проверил - в режиме 50Гц тест выдает ошибку 2 (жабы при этом не виснут), а в 60 - ошибку 4. Правда не факт что этот тест вообще адекватно работает в 50Гц режиме.
Ti_:
Так и должно быть, в эмуляторах в dendy-mode тоже иногда виснет. В хаке battletoads bugfix исправлено. По адресу 38EB0 сменить с $6B на $6C или больше.
mutabor:
Прогнал тест на 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, новодел виснет чаще.
--- Цитата: Ti_ от 08 Март 2024, 09:09:51 ---Так и должно быть, в эмуляторах в dendy-mode тоже иногда виснет.
--- Конец цитаты ---
Так прикол в том что на реальном железе в 50Гц все норм, а виснет как раз на 60. А причина зависаний известна - что там в коде игры идет не так?
--- Цитата: Ti_ от 08 Март 2024, 09:09:51 ---По адресу 38EB0 сменить с $6B на $6C или больше.
--- Конец цитаты ---
Проверил, патч рабочий.
Ti_:
В коде всё так, просто он требует точных таймингов. На оригинальных приставках famicom и nes не виснет.
ПАУК:
О каком зависании идёт речь?
mutabor:
Поковырялся в эмуляторе, выяснил следующее:
На 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:
Ну у нас же не ntsc приставка, а аналог, гибрид с pal cpu и ntsc cpu, в 60 герц, скорость процессора чуть чуть пониже, вероятно в требовательных к таймингам играм влияет.
Навигация
Перейти к полной версии