Приставки > Картриджи / диски
sonic3&knuckles приделать SRAM для сохранений
(1/1)
as32888:
Есть какой-то китайский картридж, где микросхема-капля и разводка под DIP42 ПЗУ, куда я впаял кроватку и в нее поставил зашитую соником3 с наклзом m27c322. Все работает, кроме сохранений, понятное дело, потому что SRAM нету. Нашел UM62256E-70LLT в закромах, значит.

Далее полез в гугл, выяснил, что вторые 2 мегабайта переключаются на SRAM на время записи сохраненок, а переключение управляется записью в регистр по адресу $A130F1 единички или нуля (нужен D триггер, который по сигналу /TIME запоминает значение VD0 на слоте картриджа)

Также из часто встречаемого в интернете то, что ром игры с подобным переключением банков побит на 2 и живет в двух ПЗУ половинных объемов. Но искать игру из списка, покупать картридж, чтобы туда потом вместо родных ПЗУ впаять свои, как-то не хотелось, и слишком не интересно.

Поразмыслив, родил такую схему переключения, где можно обойтись одним ПЗУ на 4 мегабайта. Надеюсь, ничего не забыл и не напутал.

Схема примитивная, потому что сделано допущение, что обращение идет только на один адрес в диапазоне $A13000-$A130FF, и что не надо различать адреса поэтому, и достаточно использовать сигнал /TIME и по нему считывать состояние нулевой линии данных на слоте.

Заказал микросхемы, как придут, буду паяться. О результатах отпишусь.

Такой вопрос - какой объем SRAM вообще используется, вероятно, 62256 слишком большая микросхема, мб можно не все адресные линии паять тогда?
Rumata:
Объём ОЗУ указан в заголовке: 512. В оригинале там стоит FM1208S 4Kbit (512 x 8)
8street:
Я бы не стал включать через логическую И сигнал А21 и триггер. Что-нибудь одно, либо то либо это. Обычно, если активен А21, то это уже по умолчанию означает запись в RAM для игр, которые меньше 2МБайта.
Дело в том, что D0 по адресу A130F1 выставляет игра, точнее программисты игры так должны были написать перед каждой записью в RAM. Иногда игры D0 вообще не выставляют.

Себе пока делаю такую схемку. Не для Соника, а вообще. Взял открытые исходники, переделал на свой вкус. Но пока я еще не тестил реальный картридж на этой схеме! Так, что использовать на свой страх и риск.
Rumata:
Вполне можно ориентироваться на оригинальную 171-6658: https://www.emu-land.net/forum/index.php/topic,60291.msg1076166.html#msg1076166

Также надо помнить, что /CE по совместительству является стробом адреса.
as32888:

--- Цитата: 8street от 09 Октябрь 2023, 18:46:05 ---Дело в том, что D0 по адресу A130F1 выставляет игра, точнее программисты игры так должны были написать перед каждой записью в RAM. Иногда игры D0 вообще не выставляют.
--- Конец цитаты ---
наверное, не проблема, если игра 2 мегабайта и не знает, что надо этот D0 выставить, - выставить значение железно перемычкой

а в данном случае игра 4 мегабайта, и вторая половина ROM подменяется на RAM как раз таким способом
Rumata:
D0 как раз и определяет ROM / RAM.
А для игр 2 Мб и меньшее вообще ничего не надо, там линейная адресация. Для дешифрации старшего адреса достаточно 7400.
Собственно смотрим схемы.
as32888:

--- Цитата: Rumata от 09 Октябрь 2023, 21:57:55 ---Также надо помнить, что /CE по совместительству является стробом адреса.

--- Конец цитаты ---
я допустил в своей схеме опечатку, конечно, там должно быть не /CAS0, а /CE_0, вроде так оно подписано в распиновках
as32888:
Спустя какое-то время я сел и спаял всё это вместе. Прошил ром, запустился не тот соник и наклз, а как будто соник3 не вставили. Выяснилось, что схема включила вместо вторых 2МБ перманентно ОЗУ, и что сигнал /TIME инвертировать не надо. Еще /VRES прокинул на /RESET вход триггера. Заработало, но пока что я не напаял керамику по питанию, не считая 0,1 мкф на плате параллельно ПЗУ.

Коммутация ОЗУ стандартная, монтаж на суперклей и проводочки от IDE 80pin шлейфа.

Добавлено позже:
жрет ОЗУ (и 74HC139 с ней) мало, 0,1..0,2 мкА по мультиметру от батарейки в  режиме хранения данных

еще можно оптимизировать схему, убрав лишние пайки и задействовав только один 2И-НЕ элемент (см. sonic3&ksram1.png)
Навигация
Главная страница сообщений

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