emu-russia/breaknes

6527P/6538, T1818P, 6561 for testing

Opened this issue · 0 comments

https://forums.nesdev.org/viewtopic.php?p=274887#p274887
https://forums.nesdev.org/viewtopic.php?p=286245#p286245

Выяснено, что:

  1. Eliminator Boat Duel (USA) и Star Wars JVC (USA) зависают в зависимости от состояния выравнивания CPU/PPU на реальном железе.
    "Reading $2002 at the exact start of vblank clears the flag to 0 without reading back a 1. On most consoles and with most wait loops, an alignment is eventually reached such that the flag is read other than on at the exact start of vblank. However, Dendy-style PAL famiclones have a frame of exactly 113.667 by 312 = 35464 cycles, and 35464 is a multiple of 8. A bit/bpl loop that crosses a page boundary, such as that found in the game Eliminator Boat Duel, lasts 8 cycles. On some alignments, it hits the start of vblank every time and thus always fails to advance.
    So for the $2002 wait loop, do not make a wait loop whose length in cycles evenly divides the frame length."
    Эмуляторы, в которых имеется функция рандомизации выравнивания - в точности повторяют данный баг.

  2. Ninja Ryukenden 1 (Japan) работает на железе с определенными артефактами и зависаниями в катсценах:
    https://www.youtube.com/watch?v=OdGUmJ4xr1M&t=86s - экран затемняется во время показа картинки меча в интро
    https://www.youtube.com/watch?v=OdGUmJ4xr1M&t=282s - зависон во время катсцены после окончания 1 уровня.
    При этом ни один эмулятор не может в точности повторить это поведение, зато вылезают такие баги:

  • игра зависает при нажатии "start" в главном меню [Mesen 0.9.8, nintendulator, bizhawk, nestopiaue, fceux]
  • эмулятор выдает illegal opcode после нажатия start, затем перезапускает титульник и уже работает нормально после второго нажатия start [Mesen 0.9.9, nintendulatorNRS, myNES]
  • игра зависает сразу на старте выдавая illegal opcode [puNES, Mesen 0.9.9 (at some specific alignments)]
  • Американская версия Ninja Gaiden (USA) НЕ имеет подобных проблем в эмуляторах.
  1. Kyouryuu Sentai Zyuranger и Vice Project Doom/Gun Dec работают БЕЗ ГЛЮКОВ НА ЖЕЛЕЗЕ.
    При этом некоторые эмуляторы (NestopiaUE, My NES и Mesen (лишь при определенных значениях выравнивания))
    имеют проблемы с этими играми:
  • Kyouryuu Sentai Zyuranger зависает совершенно рандомно между катсценами и переходами между дверьми в игре
  • Vice Project Doom/Gun Dec зависает в конце 3-го уровня (в комнате с боссом)

Выяснить, что происходит в пунктах 2 и 3.
На основе этой информации будет возможно улучшить современные эмуляторы, которые имеют проблемы с этими играми. Разработчик Mesen писал:
"emulators are still pretty far from simulating stuff that occurs at a precise point within a cpu/ppu cycle, the alignment options in mesen don't do this either, even though it's definitely something that has impact on hardware"

ТАБЛИЦА:
excel-alignment.zip

alignment