Автор Тема: sonic3&knuckles приделать SRAM для сохранений  (Прочитано 570 раз)

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

Оффлайн as32888

  • Пользователь
  • Сообщений: 969
  • Пол: Мужской
  • ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็
    • Просмотр профиля
Есть какой-то китайский картридж, где микросхема-капля и разводка под DIP42 ПЗУ, куда я впаял кроватку и в нее поставил зашитую соником3 с наклзом m27c322. Все работает, кроме сохранений, понятное дело, потому что SRAM нету. Нашел UM62256E-70LLT в закромах, значит.

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

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

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

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

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

Такой вопрос - какой объем SRAM вообще используется, вероятно, 62256 слишком большая микросхема, мб можно не все адресные линии паять тогда?

Оффлайн Rumata

  • Модератор
  • Сообщений: 24485
    • Просмотр профиля
sonic3&knuckles приделать SRAM для сохранений
« Ответ #1 : 09 Октябрь 2023, 00:55:59 »
Объём ОЗУ указан в заголовке: 512. В оригинале там стоит FM1208S 4Kbit (512 x 8)

Оффлайн 8street

  • Пользователь
  • Сообщений: 18
    • Просмотр профиля
sonic3&knuckles приделать SRAM для сохранений
« Ответ #2 : 09 Октябрь 2023, 18:46:05 »
Я бы не стал включать через логическую И сигнал А21 и триггер. Что-нибудь одно, либо то либо это. Обычно, если активен А21, то это уже по умолчанию означает запись в RAM для игр, которые меньше 2МБайта.
Дело в том, что D0 по адресу A130F1 выставляет игра, точнее программисты игры так должны были написать перед каждой записью в RAM. Иногда игры D0 вообще не выставляют.

Себе пока делаю такую схемку. Не для Соника, а вообще. Взял открытые исходники, переделал на свой вкус. Но пока я еще не тестил реальный картридж на этой схеме! Так, что использовать на свой страх и риск.

Оффлайн Rumata

  • Модератор
  • Сообщений: 24485
    • Просмотр профиля
sonic3&knuckles приделать SRAM для сохранений
« Ответ #3 : 09 Октябрь 2023, 21:57:55 »
Вполне можно ориентироваться на оригинальную 171-6658: https://www.emu-land.net/forum/index.php/topic,60291.msg1076166.html#msg1076166

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

Оффлайн as32888

  • Пользователь
  • Сообщений: 969
  • Пол: Мужской
  • ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็
    • Просмотр профиля
sonic3&knuckles приделать SRAM для сохранений
« Ответ #4 : 10 Октябрь 2023, 00:29:44 »
Дело в том, что D0 по адресу A130F1 выставляет игра, точнее программисты игры так должны были написать перед каждой записью в RAM. Иногда игры D0 вообще не выставляют.
наверное, не проблема, если игра 2 мегабайта и не знает, что надо этот D0 выставить, - выставить значение железно перемычкой

а в данном случае игра 4 мегабайта, и вторая половина ROM подменяется на RAM как раз таким способом

Оффлайн Rumata

  • Модератор
  • Сообщений: 24485
    • Просмотр профиля
sonic3&knuckles приделать SRAM для сохранений
« Ответ #5 : 10 Октябрь 2023, 00:46:35 »
D0 как раз и определяет ROM / RAM.
А для игр 2 Мб и меньшее вообще ничего не надо, там линейная адресация. Для дешифрации старшего адреса достаточно 7400.
Собственно смотрим схемы.

Оффлайн as32888

  • Пользователь
  • Сообщений: 969
  • Пол: Мужской
  • ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็
    • Просмотр профиля
sonic3&knuckles приделать SRAM для сохранений
« Ответ #6 : 10 Октябрь 2023, 19:41:41 »
Также надо помнить, что /CE по совместительству является стробом адреса.
я допустил в своей схеме опечатку, конечно, там должно быть не /CAS0, а /CE_0, вроде так оно подписано в распиновках

Оффлайн as32888

  • Пользователь
  • Сообщений: 969
  • Пол: Мужской
  • ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็็็็็็็็็็ ส็็็็
    • Просмотр профиля
sonic3&knuckles приделать SRAM для сохранений
« Ответ #7 : 31 Май 2024, 18:52:17 »
Спустя какое-то время я сел и спаял всё это вместе. Прошил ром, запустился не тот соник и наклз, а как будто соник3 не вставили. Выяснилось, что схема включила вместо вторых 2МБ перманентно ОЗУ, и что сигнал /TIME инвертировать не надо. Еще /VRES прокинул на /RESET вход триггера. Заработало, но пока что я не напаял керамику по питанию, не считая 0,1 мкф на плате параллельно ПЗУ.

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

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

еще можно оптимизировать схему, убрав лишние пайки и задействовав только один 2И-НЕ элемент (см. sonic3&ksram1.png)
« Последнее редактирование: 31 Май 2024, 19:30:24 от as32888 »