| Приставки > 1-3 поколения |
| Как на новоделах поиграть в Battletoads 1? |
| (1/2) > >> |
| 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 герц, скорость процессора чуть чуть пониже, вероятно в требовательных к таймингам играм влияет. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |