Автор Тема: Альтернативный детектор резета  (Прочитано 1588 раз)

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

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Альтернативный детектор резета
« : 13 Декабрь 2019, 00:16:20 »
На платке, которую я сейчас ковыряю, нет возможности задать внешнюю базу времени для обнаружения пропадания м2 (без пайки), но китайцы как-то же справились с этой задачей. Интересуют возможные альтернативные варианты, без внешних RC-цепей.

Первое что пришло в голову - поскольку PPU работает независимо от CPU, ловить пропадание м2 во время чтения chr ram, то есть считать такты за время активного сигнала ppu_rd. Что скажете на этот счет? Может сделать как-то иначе?

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7548
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #1 : 13 Декабрь 2019, 07:04:16 »
Сработает на системах, где PPU не сбрасывается вместе с CPU и при этом активировано изображение в нём.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2279
  • Пол: Мужской
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #2 : 13 Декабрь 2019, 10:16:37 »
можно попробовать вычислить по обращению к адресу указателя reset

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #3 : 13 Декабрь 2019, 11:02:52 »
можно попробовать вычислить по обращению к адресу указателя reset
Это приходило в голову, но нет всех нужных адресов.

Добавлено позже:
Сработает на системах, где PPU не сбрасывается вместе с CPU и при этом активировано изображение в нём.
Что интересно, китайский вариант прошивки как-то ловил резет на ремейке.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7548
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #4 : 13 Декабрь 2019, 14:18:59 »
Что интересно, китайский вариант прошивки как-то ловил резет на ремейке.
Если взять мапперы без сброса, например AxROM, то как бы понимаешь почему оно срабатывает всегда, если страниц может быть 8? А оказалось всё просто, у них в каждой странице одинаковый код инициализации маппера и только в одной процедура продолжается. Т.е., если старт был в другой странице, то после записи числа в маппер он возвращается в нужную. Из любой. Разве это не очевидно? Посмотрите в, например, BT&DD.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #5 : 13 Декабрь 2019, 14:21:55 »
Если взять мапперы без сброса, например AxROM, то как бы понимаешь почему оно срабатывает всегда, если страниц может быть 8? А оказалось всё просто, у них в каждой странице одинаковый код инициализации маппера и только в одной процедура продолжается. Т.е., если старт был в другой странице, то после записи числа в маппер он возвращается в нужную. Из любой. Разве это не очевидно? Посмотрите в, например, BT&DD.
Там мультиигровка с поддержкой десятка мапперов, после резета надо уйти в меню, а не запускать игру заново.

Оффлайн supremacy

  • Пользователь
  • Сообщений: 2279
  • Пол: Мужской
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #6 : 13 Декабрь 2019, 14:49:16 »
тут наиболее полная информация по reset
http://wiki.nesdev.com/w/index.php/PPU_power_up_state

На обычной тушке NES PPU тоже сбрасывается.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #7 : 13 Декабрь 2019, 15:15:19 »
В общем, пока дело ясное что дело темное. Судя по экспериментам при активном резете PPU останавливается и перестает отображать картинку (и ходить в память за данными).

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7548
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #8 : 13 Декабрь 2019, 16:35:01 »
Там мультиигровка с поддержкой десятка мапперов, после резета надо уйти в меню, а не запускать игру заново.
Что мешает использовать сей трюк? Просто тебе придётся найти место в игре для расположения кода переключения на меню + сохранить вектор входа в игру, по которому перейти из ОЗУ.

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #9 : 13 Декабрь 2019, 18:05:25 »
И так повторить для каждой игры. Хочется более-менее универсального решения, да и по сбросу много всего надо сделать.

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #10 : 13 Декабрь 2019, 18:19:32 »
dssoft, как то всё мутно, что за плата? не на ПЛИС часом?

на ПЛИС всё решается через watch dog, заводится таймер, M2 обнуляет его, если произошло переполнение, значит reset

Оффлайн dssoft

  • Пользователь
  • Сообщений: 1165
    • Просмотр профиля
Альтернативный детектор резета
« Ответ #11 : 13 Декабрь 2019, 18:26:29 »
megavolt85, вот эта плата: https://www.emu-land.net/forum/index.php/topic,82545.0.html
Был бы на epm240 watchdog и вопросов бы не было. А так нужна внешняя база времени для таймера.