Автор Тема: Глюк в 'Choujin Sentai - Jetman' на денди.  (Прочитано 3705 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн evgs

  • Пользователь
  • Сообщений: 1042
  • Пол: Мужской
    • Просмотр профиля
Глюк в 'Choujin Sentai - Jetman' на денди.
« : 23 Сентябрь 2012, 01:30:15 »
Я сумел достать оригинальный японский картридж и проверить его на классической "рассыпухе" 6527P + 6538 (от разных производителей). Неправильно отрисовывается экран во вступительном ролике:


Этот глюк проявляется и во всех эмуляторах (Nestopia, nintendulator, retrocopy, NESICIDE2, puNES) исключительно в денди-режиме.

Интересна его причина, а также тот факт, что у некоторых людей этого глюка не было.
Или маппер был другой на многоигровке, или "капельное" железо как-то отличается от первых клонов (которые более точны).
Если эту игру запустить на PAL NES, глюка на вступительном ролике не будет. Зато будет испорчен титульный экран.

А у вас проявлялся этот глюк?
« Последнее редактирование: 23 Сентябрь 2012, 01:40:20 от evg.s »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5097
    • Просмотр профиля
Глюк в 'Choujin Sentai - Jetman' на денди.
« Ответ #1 : 28 Сентябрь 2024, 07:07:24 »
Интересна его причина
В Dendy режиме начало заставки (после ожидания) как на скриншоте:

Это из-за NMI, которое прерывает установку PPU адреса для записи индексов тайлов фона. В NTSC из-за других таймингов нет попадания в это место. Код такой:
CADC:
  LDA $30
  AND #$FB ; NMI включается, выше был отключен. AND #$7B для исправления
  STA PpuControl_2000
  LDA $CD
  STA PpuAddr_2006
; Прерывание NMI
  LDA $CC
  STA PpuAddr_2006
Между двумя записями в $2006 происходит прерывание. Выше NMI отключалось, но почти сразу включается, возможно по ошибке, замена AND #$FB на AND #$7F отключает NMI и это решает проблему.
Заметные артефакты в PAL режиме во время ожидания Sprit 0 Hit. В оригинале в нескольких местах:
  LDA PpuStatus_2002
-:
  LDA PpuStatus_2002
  AND #$40
  BEQ -
Такой код при вызове в VBlank не будет ждать, что и происходит у PAL с долгим VBlank. Замена на типичный код исправляет:
-:
  BIT PpuStatus_2002
  BVS -
-:
  BIT PpuStatus_2002
  BVC -
Прикладываю исправленный ром, теперь на Dendy должно быть нормально, на PAL есть артефакты, но не такие заметные, также скрыл нулевой спрайт в Battle Mode. Всё не проверял.

Есть MMC3 конверсия от Evgenykz: http://bootleg.games/BGC_Forum/index.php?topic=3206.msg22787#msg22787, там на Dendy нет проблемы, но похоже просто из-за тайминга.

Оффлайн evgs

  • Пользователь
  • Сообщений: 1042
  • Пол: Мужской
    • Просмотр профиля
Глюк в 'Choujin Sentai - Jetman' на денди.
« Ответ #2 : 28 Сентябрь 2024, 09:31:40 »
Sharpnull, спасибо тебе огромное!
случайное поднятие темы 12-летней давности оказалось полезным.

Денди-режим уже достаточно хорошо везде эмулируется, даже чипы уже сдекапили.
Кусок с глюком из джетмана на железяке есть в моем ролике: https://youtu.be/bA8HJ0rBAsU
Из непонятных моментов осталось ещё вот что: https://github.com/emu-russia/breaknes/issues/476