Приставки > 1-3 поколения
Альтернативный детектор резета
(1/1)
dssoft:
На платке, которую я сейчас ковыряю, нет возможности задать внешнюю базу времени для обнаружения пропадания м2 (без пайки), но китайцы как-то же справились с этой задачей. Интересуют возможные альтернативные варианты, без внешних RC-цепей.

Первое что пришло в голову - поскольку PPU работает независимо от CPU, ловить пропадание м2 во время чтения chr ram, то есть считать такты за время активного сигнала ppu_rd. Что скажете на этот счет? Может сделать как-то иначе?
HardWareMan:
Сработает на системах, где PPU не сбрасывается вместе с CPU и при этом активировано изображение в нём.
supremacy:
можно попробовать вычислить по обращению к адресу указателя reset
dssoft:

--- Цитата: supremacy от 13 Декабрь 2019, 10:16:37 ---можно попробовать вычислить по обращению к адресу указателя reset

--- Конец цитаты ---
Это приходило в голову, но нет всех нужных адресов.

Добавлено позже:

--- Цитата: HardWareMan от 13 Декабрь 2019, 07:04:16 ---Сработает на системах, где PPU не сбрасывается вместе с CPU и при этом активировано изображение в нём.

--- Конец цитаты ---
Что интересно, китайский вариант прошивки как-то ловил резет на ремейке.
HardWareMan:

--- Цитата: dssoft от 13 Декабрь 2019, 11:02:52 ---Что интересно, китайский вариант прошивки как-то ловил резет на ремейке.
--- Конец цитаты ---
Если взять мапперы без сброса, например AxROM, то как бы понимаешь почему оно срабатывает всегда, если страниц может быть 8? А оказалось всё просто, у них в каждой странице одинаковый код инициализации маппера и только в одной процедура продолжается. Т.е., если старт был в другой странице, то после записи числа в маппер он возвращается в нужную. Из любой. Разве это не очевидно? Посмотрите в, например, BT&DD.
dssoft:

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

--- Конец цитаты ---
Там мультиигровка с поддержкой десятка мапперов, после резета надо уйти в меню, а не запускать игру заново.
supremacy:
тут наиболее полная информация по reset
http://wiki.nesdev.com/w/index.php/PPU_power_up_state

На обычной тушке NES PPU тоже сбрасывается.
dssoft:
В общем, пока дело ясное что дело темное. Судя по экспериментам при активном резете PPU останавливается и перестает отображать картинку (и ходить в память за данными).
HardWareMan:

--- Цитата: dssoft от 13 Декабрь 2019, 14:21:55 ---Там мультиигровка с поддержкой десятка мапперов, после резета надо уйти в меню, а не запускать игру заново.

--- Конец цитаты ---
Что мешает использовать сей трюк? Просто тебе придётся найти место в игре для расположения кода переключения на меню + сохранить вектор входа в игру, по которому перейти из ОЗУ.
dssoft:
И так повторить для каждой игры. Хочется более-менее универсального решения, да и по сбросу много всего надо сделать.
megavolt85:
dssoft, как то всё мутно, что за плата? не на ПЛИС часом?

на ПЛИС всё решается через watch dog, заводится таймер, M2 обнуляет его, если произошло переполнение, значит reset
dssoft:
megavolt85, вот эта плата: https://www.emu-land.net/forum/index.php/topic,82545.0.html
Был бы на epm240 watchdog и вопросов бы не было. А так нужна внешняя база времени для таймера.
Навигация
Главная страница сообщений

Перейти к полной версии