Приставки > Картриджи / диски
Чтение SRAM-пямяти картриджа (Резервное копирование сохранений)
(1/2) > >>
gegmaster:
Приветствую всех! Сделал флеш-картридж по схеме Рюмика c FRAM-памятью для сохранений. Для программирования картриджа переделал DVD-плеер на MediaTek MT1389. Картридж работает, программатор читает и пишет. Теперь остро стала необходимость в резервном копировании сохранений. Причины под спойлером.
Решил поиграть в Shining Force 2, естественно на русском языке. В сети нашел две версии перевода от NewGame и Шедевр. Сравнив два перевода, появилось отвращение от NewGame, поэтому однозначно решено было играть в перевод от Шедевра. От Шедевра существует две версии: на 3 мб где сохранения не работают совсем и версия на 2 мб в которой сохранения работают. Беда заключалась в том, что на приставке (в эмуляторе все хорошо) этот ром запускается с проблемами (не отображаются спрайты героев, глюки с текстом), но если понажимать несколько раз Reset или выключать/включать приставку, то игра запускалась нормально. И вот здесь у меня несколько раз возникала ситуация с потерей сохранений.
Да и хотелось бы на будущее при смене игры на картридже не терять сохранения.
Вопрос, каким образом можно осуществить резервное копирование сохранений? Может есть какой-то способ вытащить эти сохранения с помощью программатора, в наличие есть TL866 и старенький willem? Знаю есть готовые решения на микроконтроллерах в виде дамперов, но я пока не готов к таким приобретениям.
Sharpnull:
Наверно не поможет, но для FlashKit MD (китайцы продают за 2400р, недавно было 2000) есть исходный код: https://krikzz.com/pub/support/flashkit-md/, можно узнать последовательность записи в регистры.
Rumata:
"Схема Рюмика" - это уже пугает, ибо неизвестно, что там наворочено. Я FRAM ставлю без всяких рюмиков :)

ОЗУ в картридже читается точно так же, как ПЗУ. Только действующим является младший байт, старший не имеет значения.

Если у тебя ПЗУ 2 Мб, то проблем вообще никаких. Адресация линейная. В самом начале 3 Мб висит ОЗУ, подробности в заголовке. Для записи используется /LWR. Если ПЗУ больше 2 Мбайт, то используется дополнительный триггер, управляемый через /TIME. Есть правда вариант размещения ОЗУ выше, в 4-й Мбайт.

При использование FRAM есть некоторые сложности. Ей требуется СТРОБ АДРЕСА (где-то я об этом писал и диаграммы приводил). В приставке он формируется автоматически. В программаторе нет.

Если программатор умеет работать с FRAM, то надо делать адаптер, который будет обращаться к ОЗУ  с учётом дешифрации адреса.

Вообще странно, что там что-то слетает :-\
Rumata:

--- Цитата: Sharpnull от 26 Июль 2022, 11:40:54 ---для FlashKit MD
--- Конец цитаты ---
FlashKit MD на SRAM. Там всё тупо и без затей, как я писал выше.
gegmaster:
Sharpnull, FlashKit MD покупать мне нет необходимости, да и не известно будет ли он работать с моим флеш-картриджем.


--- Цитата: Rumata от 26 Июль 2022, 11:41:37 ---ибо неизвестно, что там наворочено
--- Конец цитаты ---
Схема старая давно известная. Можно переключать режим сохранений с 2мб ПЗУ и с 3мб ПЗУ, дешифрация на 74HC138 и два диода.



--- Цитата: Sharpnull от 26 Июль 2022, 11:40:54 ---При использование FRAM есть некоторые сложности. Ей требуется СТРОБ АДРЕСА
--- Конец цитаты ---
В общем простым чтением через обычный программатор, я так понял, не получится.
Rumata:
Да, похоже в TL этой микросхемы нет
Sharpnull:
Юмористическое решение: встроить в игру вывод SRAM на экран, можно с RLE/LZ, его быстро фотографируешь на телефон (даже что-то типа QR-кодов сделать можно). Когда приспичит, ввести назад 8-32КБ, можно модифицировать контроллер для быстрого ввода(?). UPD: 256*1024 бит / 3 бита за нажатие одной из 8 кнопок / 30 нажатий в секунду / 60 = 48.5 минуты. Если считать 8 кнопок по 1 биту и ввод каждый кадр, то всего 9-11 минут. UPD2: Подключаем 2 или 4 контроллера и время восстановления бэкапа не больше 6 минут :ohmy:
Rumata:
Может проще перевод довести до ума?
gegmaster:

--- Цитата: Rumata от 26 Июль 2022, 14:27:34 ---Может проще перевод довести до ума?

--- Конец цитаты ---
Да, эта идея меня посетила одной из первых. Вот и сейчас сижу разбираюсь в ромхакинге. Думаю во всем виновата крутая заставка Шедевра, хотя могу ошибаться. Если хватит ума разобраться как ее вырезать, то возможно проблема отвалится.
Rumata:
Заставку-то отрезать проблемой быть не должно. Она засунута или в хвост или в пустое место дампа. Поменять значение PC в заголовке, скорее всего как в оригинале. Вот если текст или шрифт куда-то залезли, то это хуже.
gegmaster:

--- Цитата: Rumata от 26 Июль 2022, 14:56:30 ---Поменять значение PC в заголовке, скорее всего как в оригинале.
--- Конец цитаты ---
Спасибо за подсказку. Изменил в заголовке два адреса как в оригинале и ром запустился сразу с оригинальной заставки SEGA, без заставки Шедевра.



Ну далее только остается протестровать на железе.
Rumata:
Кстати.

TL866 II+


RT809H
Rumata:
Кстати, а что это перевод Шедевра на 2 Мб? Я вижу только на 3
gegmaster:

--- Цитата: Rumata от 26 Июль 2022, 17:38:52 ---TL866 II+ RT809H
--- Конец цитаты ---
А вот это уже интересно. Тогда вопрос, если вывести из слота шину адреса A0-A14 и младшую половину шины данных D0-D7, то как управлять данной микросхемой не выпаивая ее из картриджа? Сигнал /CS заведен на дешифратор HC138, а значит нужно подать какой-то двоичный код, чтобы активировать нужный выход.

--- Цитата: Rumata от 26 Июль 2022, 17:54:23 ---Кстати, а что это перевод Шедевра на 2 Мб? Я вижу только на 3
--- Конец цитаты ---
На сайте Шедевр автор перевода заменил патч и теперь пропатчив им оригинальный ром размер файла не меняется, а следовательно также сохранения работают.

Размеры в роме тоже разные
Rumata:

--- Цитата: gegmaster от 26 Июль 2022, 19:42:11 ---значит нужно подать какой-то двоичный код, чтобы активировать нужный выход.
--- Конец цитаты ---
В первом приближении подать на А21 (у Рюмика это вроде Н20) лог. 1. (люблю я советских инженеров :D )


--- Цитата: gegmaster от 26 Июль 2022, 19:42:11 ---На сайте Шедевр автор перевода заменил патч
--- Конец цитаты ---
Внезапно o_0 Пойду посмотрю.
gegmaster:
Ну в общем как и предполагал картридж без заставки Шедевр стартует как надо. Пошел тестировать до победного  :lol:
Rumata:
Ждём результатов
HardWareMan:
А я не понял: это что, получается, народу нравится перевод Шедевра но не нравится заставка Шедевра?
Rumata:

--- Цитата: gegmaster от 26 Июль 2022, 10:36:50 ---Беда заключалась в том, что на приставке (в эмуляторе все хорошо) этот ром запускается с проблемами (не отображаются спрайты героев, глюки с текстом), но если понажимать несколько раз Reset или выключать/включать приставку, то игра запускалась нормально.
--- Конец цитаты ---
Народ от этого просто в восторге и поёт осанну Шедевру. :lol:
gegmaster:

--- Цитата: HardWareMan от 27 Июль 2022, 07:05:15 ---А я не понял: это что, получается, народу нравится перевод Шедевра но не нравится заставка Шедевра?

--- Конец цитаты ---
И перевод и заставка очень нравятся, но дело тут в том, что с флеш-картриджа на 60 герцовых приставках игра стартует с глюками. Я проверял это на оригинальной приставке Genesis 1 VA6, на стародельном клоне с GO-ONE(60Hz) и на новодельном клоне SM801 (60HZ), что на флешь-картридже Рюмика, что на оригинальном флеш-картридже Krikzz'а результат одинаков. Понажимав несколько раз RESET можно добиться нормального старта на этих приставках. Единственное когда он правильно запускается это когда я приставку на SM801 перевел в 50Hz.
Ни я первый обнаружил эти баги:
https://www.emu-land.net/forum/index.php/topic,81385.msg1382713.html#msg1382713


Добавлено позже:
Выявил я ситуацию при которой пропадают сохранения. Если после включения приставки на заставке с синими буквами SEGA выключить питание и снова запустить, то сохранения гарантировано слетают. Причем что на оригинальном роме, что с переводом результат один.Теперь бы понять это только флеш-карик от Рюмика этим грешит или на FlashKit cart MD - KRIKzz тоже самое. Возможно это какая то особенность FRAM памяти.
Навигация
Главная страница сообщений
Следующая страница

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