breaknes
breaknes copied to clipboard
6527P/6538, T1818P, 6561 for testing
https://forums.nesdev.org/viewtopic.php?p=274887#p274887 https://forums.nesdev.org/viewtopic.php?p=286245#p286245
Выяснено, что:
-
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." Эмуляторы, в которых имеется функция рандомизации выравнивания - в точности повторяют данный баг.
-
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) НЕ имеет подобных проблем в эмуляторах.
- 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