Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

6527P/6538, T1818P, 6561 for testing #476

Open
eugene-s-nesdev opened this issue Nov 8, 2023 · 0 comments
Open

6527P/6538, T1818P, 6561 for testing #476

eugene-s-nesdev opened this issue Nov 8, 2023 · 0 comments

Comments

@eugene-s-nesdev
Copy link

eugene-s-nesdev commented Nov 8, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant